Built motion from commit 87515079.|2.5.35
authorAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 8 Sep 2021 14:47:16 +0000 (16:47 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 8 Sep 2021 14:47:16 +0000 (16:47 +0200)
1255 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/voice/i18n/ar.json
public/app/main/apps/voice/i18n/cs.json
public/app/main/apps/voice/i18n/da.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/en.json
public/app/main/apps/voice/i18n/es.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/voice/i18n/fa.json
public/app/main/apps/voice/i18n/fi.json
public/app/main/apps/voice/i18n/fr.json
public/app/main/apps/voice/i18n/he.json
public/app/main/apps/voice/i18n/hi.json
public/app/main/apps/voice/i18n/id.json
public/app/main/apps/voice/i18n/it.json
public/app/main/apps/voice/i18n/ja.json
public/app/main/apps/voice/i18n/ko.json
public/app/main/apps/voice/i18n/lt.json
public/app/main/apps/voice/i18n/lv.json
public/app/main/apps/voice/i18n/nl.json
public/app/main/apps/voice/i18n/no.json
public/app/main/apps/voice/i18n/pl.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/voice/i18n/pt-PT.json
public/app/main/apps/voice/i18n/ru.json
public/app/main/apps/voice/i18n/sv.json
public/app/main/apps/voice/i18n/tr.json
public/app/main/apps/voice/i18n/zh-CN.json
public/app/main/apps/voice/i18n/zh-TW.json
public/app/main/apps/whatsapp/i18n/ar.json
public/app/main/apps/whatsapp/i18n/cs.json
public/app/main/apps/whatsapp/i18n/da.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/en.json
public/app/main/apps/whatsapp/i18n/es.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/main/apps/whatsapp/i18n/fa.json
public/app/main/apps/whatsapp/i18n/fi.json
public/app/main/apps/whatsapp/i18n/fr.json
public/app/main/apps/whatsapp/i18n/he.json
public/app/main/apps/whatsapp/i18n/hi.json
public/app/main/apps/whatsapp/i18n/id.json
public/app/main/apps/whatsapp/i18n/ja.json
public/app/main/apps/whatsapp/i18n/ko.json
public/app/main/apps/whatsapp/i18n/lt.json
public/app/main/apps/whatsapp/i18n/lv.json
public/app/main/apps/whatsapp/i18n/nl.json
public/app/main/apps/whatsapp/i18n/no.json
public/app/main/apps/whatsapp/i18n/pl.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-PT.json
public/app/main/apps/whatsapp/i18n/ru.json
public/app/main/apps/whatsapp/i18n/sv.json
public/app/main/apps/whatsapp/i18n/tr.json
public/app/main/apps/whatsapp/i18n/zh-CN.json
public/app/main/apps/whatsapp/i18n/zh-TW.json
public/app/quick-panel/i18n/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/index.html
public/scripts/app.03d03cae.js [moved from public/scripts/app.8a22b3f9.js with 53% similarity]
public/styles/app.0b303223.css [deleted file]
public/styles/app.5c1c6c1e.css [new file with mode: 0644]
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/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.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/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.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/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/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/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.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 [new file with mode: 0644]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [new file with mode: 0644]
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/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 [new file with mode: 0644]
server/api/userVoicePrefix/userVoicePrefix.model.js [new file with mode: 0644]
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/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/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.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/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/index.js
server/migrations/2.5.35.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.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/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/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

index fb458d5..17583b9 100644 (file)
@@ -2441,24 +2441,6 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
@@ -2536,6 +2518,24 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
@@ -10900,15 +10900,15 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
@@ -10918,7 +10918,7 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/messages/{id}/status",
+    "url": "/api/sms/accounts/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
@@ -22864,41 +22864,41 @@ define({ "api": [
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26253,17 +26253,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26271,17 +26271,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26289,7 +26289,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,12 +26312,30 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26325,17 +26343,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26361,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,7 +26379,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31389,6 +31407,42 @@ define({ "api": [
   },
   {
     "type": "post",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Add teams to voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Gets voice prefix team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
@@ -33311,37 +33365,37 @@ define({ "api": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 726d908..5c8c36e 100644 (file)
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "post",
-    "url": "/api/sms/messages/{id}/status",
+    "url": "/api/sms/accounts/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "post",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Add teams to voice prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/teams",
+    "title": "Gets voice prefix team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Prefix",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefix"
+  },
+  {
+    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 3bea1a8..2eb9352 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "version": "2.5.35",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-08T14:11:41.336Z",
+    "time": "2021-09-08T14:40:10.546Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index f0fe5da..365b05c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "version": "2.5.35",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-08T14:11:41.336Z",
+    "time": "2021-09-08T14:40:10.546Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 225e85b..f27c89c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.34",
+  "version": "2.5.35",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index 53a27fb..5c4734e 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Ihr Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-mail Adresse",
+    "TITLE": "Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
+    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
+      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
+      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
     }
   }
 }
index c090dfa..bced170 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Melden Sie sich bei Ihrem Konto an",
+    "TITLE": "Bitte mit Ihrem Konto anmelden",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Erinnere Dich an Mich",
+    "REMEMBER_ME": "Anmeldedaten merken",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "LOG IN",
+    "LOG_IN": "ANMELDEN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Melden Sie sich mit Google",
-    "WITH_FACEBOOK": "Mit Facebook anmelden",
+    "WITH_GOOGLE": "Anmeldung mit Google",
+    "WITH_FACEBOOK": "Anmeldung mit Facebook",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
+    "CREATE_ACCOUNT": "Konto erstellen",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Stornieren",
-    "SELECT": "Wählen",
+    "CANCEL": "Abbrechen",
+    "SELECT": "Auswählen",
     "TELEPHONES": "Telefone"
   }
 }
index e60162b..e6b577a 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Bestellung von",
+    "ORDER_BY": "Sortieren nach",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 4bc9896..02f4f10 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl von Malen pro Interaktion",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
+    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Key",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
-    "NONE": "Keine",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "NONE": "Nichts",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Website-Script",
+    "WEBSITESCRIPT": "Webseiten-Skript",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
+    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht schließen",
-    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Echte Priorität",
+    "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
-      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontakt Manager Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
+    "CM_FIELD": "Kontaktmanager-Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Maus über",
+    "MOUSEOVER": "Mouse-Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Wählschalter",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Bis",
-    "DOWN": "Unten",
-    "COLLAPSE": "Zusammenklappen",
-    "PROACTIVEACTIONS": "Proaktive Aktionen",
-    "DISPOSITIONS": "Dispositionen",
+    "UP": "Nach Oben",
+    "DOWN": "Nach Unten",
+    "COLLAPSE": "Einklappen",
+    "PROACTIVEACTIONS": "Proaktive Anfragen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Aussehen",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Tastenfarbe",
+    "BUTTONCOLOR": "Buttonfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Eingabebezeichnung",
-    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
-    "EMAIL_TITLE": "E-Mail-Eingabe Label",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
-    "START_CHAT_BUTTON": "'Chat starten' Taste",
-    "AGENTS_BUSY": "Meldung für besetzte Agenten",
+    "NAME_TITLE": "Name Titel",
+    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
+    "EMAIL_TITLE": "E-Mail Titel",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
+    "START_CHAT_BUTTON": "'Chat starten' Button",
+    "AGENTS_BUSY": "Agenten besetzt",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
-    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Bewertung Senden Tasten-Text",
-    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktive",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbettung",
+    "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
-      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
+      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
+      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
-      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
-      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
-      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
-      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
-      "INTERVAL": "Wählen Sie eins aus der Liste aus",
+      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
+      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
+      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
+      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
+      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
+      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
+      "INTERVAL": "Bitte aus der Liste wählen",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
-      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
+      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Dispositionen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
-    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
-    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
+    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Abgerundet",
-    "SQUARED": "Quadratisch",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ROUNDED": "Rundes Design",
+    "SQUARED": "Eckiges Design",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alles",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Wählen Sie eine Website",
+    "SELECTED_WEBSITE": "Ausgewählte Webseite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Wählen Sie eine Website",
+    "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Wartetitel",
-    "WAITINGMESSAGE": "Wartende Nachricht",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Pausiert",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "WRITING": "Schreiben",
+    "WAITING": "Wartezustand",
+    "WRITING": "am Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Interne",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Sprache",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spion",
+    "AGENTAVATAR": "Agenten-Avatar",
+    "SPYINTERACTION": "Mitlesen",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage schließen",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
-    "OFFLINEMESSAGEBODY": "Nachrichtentext",
-    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
-    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
-    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
+    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
+    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
+    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
+    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
+    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Ton",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
+    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Bot-Name",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teams Verband",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ENABLESENDBUTTON": "Sendetaste aktivieren",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Key",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Gegenstand",
+    "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "NOTE": "Hinweis",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "NOTE": "Notiz",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index da8b00a..3c27f23 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "Sprachwarteschlange ID",
-    "CAMPAIGNID": "Kampagne ID",
-    "STATE": "Zustand",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "CAMPAIGNID": "Kampagnen-ID",
+    "STATE": "Status",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper Geschichte",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
+    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositionen",
-    "VOICEDISPOSITIONS": "Sprachdispositionen",
-    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alle Löschen",
+    "DELETE_ALL": "Alles Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Fertig",
-    "SUCCESS": "Erfolgreich",
+    "FINISH": "Beenden",
+    "SUCCESS": "Erfolg",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
-    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
-    "VAT": "Mwst.",
-    "COMPANYID": "Ihre Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
+    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
+    "VAT": "Ust-ID.",
+    "COMPANYID": "Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "NONE": "Keine",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "Duplikate prüfen",
+    "CHECK_DUPLICATES": "auf Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV",
+    "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Wählen Sie eine Liste aus",
-    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
-    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
+    "SELECT_LIST": "Liste auswählen",
+    "SELECT_COMPANY": "Unternehmen auswählen",
+    "SELECT_TAGS": "Tags auswählen",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler exportieren",
+    "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei aussuchen",
+    "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenreise",
-    "SELECT_TAG": "Wählen Sie Tags aus",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "SELECT_TAG": "Tag auswählen",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftage",
+    "EXPIREDAY": "Ablauftag",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Codice Fiscale / VAT",
-    "RECALLME": "Ruf mich zurück",
+    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
+    "RECALLME": "Rückruf anfordern",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Zur Aktion klicken"
+    "CLICKTOACTION": "Klicken für Aktion"
   }
 }
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer Anruf",
+    "DIALER_CALL": "Dialer-Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
-      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
-      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
-      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
-      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
-      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
-      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
-      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
-      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
-      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
-      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
-      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
-      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
-      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
+      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
+      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
+      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
+      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
+      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
+      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
+      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
+      "OPENED": "Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
+      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
+      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
+      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
+      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
-    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
-    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
-    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
-    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
-    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
-    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
+    "TALKING_TEXT": "Aktive Anrufe",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
+    "ABANDONED_TEXT": "Abgebrochene Anrufe",
+    "DROP_RATE_TEXT": "Abbruchrate",
+    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
+    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
+    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
+    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
+    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
-    "ABANDONED_RATE": "Verlassene Rate",
-    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
-    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
-    "MANAGED": "Verwaltet",
-    "MANAGED_RATE": "Verwaltete Rate",
-    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
-    "MANAGED_TEXT": "Verwaltete Interaktionen",
-    "OPENED_TEXT": "Geöffnete Interaktionen",
+    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
+    "ABANDONED_RATE": "Abbruchrate",
+    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
+    "MANAGED": "Bearbeitet",
+    "MANAGED_RATE": "Bearbeitungsrate",
+    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
+    "MANAGED_TEXT": "Interaktionen bearbeitet",
+    "OPENED_TEXT": "Interaktionen geöffnet",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Nicht verwaltete Rate",
-    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
-    "VOICE_ABANDONED": "Verlassen",
-    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
-    "VOICE_ABANDON_RATE": "Verlassene Rate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
+    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
+    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
+    "VOICE_ABANDONED": "Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "VOICE_ABANDON_RATE": "Abbruchrate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Insgesamt",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht verwaltet",
-    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht bearbeitet",
+    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
-    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
-    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
-    "SELECT_ALL": "Alle auswählen",
+    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
+    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
+    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
+    "SELECT_ALL": "Alles auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Stornieren",
-    "DRAFT": "Entwurf",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "Von",
+    "FROM": "von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "Und",
+    "AND": "und",
     "APPLY": "Anwenden",
-    "CONTAINS": "Enthält",
+    "CONTAINS": "enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "Endet mit",
-    "EQUALS": "Gleich",
-    "IS_AMONG": "Ist unter",
-    "IS_BETWEEN": "Ist zwischen",
-    "IS_GREATER_THAN": "Ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
-    "IS_LESS_THAN": "Ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
-    "IS_NOT_AMONG": "Ist nicht unter",
-    "IS_NOT_EQUAL": "Ist nicht gleich",
+    "ENDS_WITH": "endet mit",
+    "EQUALS": "gleich",
+    "IS_AMONG": "ist unter",
+    "IS_BETWEEN": "ist zwischen",
+    "IS_GREATER_THAN": "ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
+    "IS_LESS_THAN": "ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
+    "IS_NOT_AMONG": "ist nicht innerhalb",
+    "IS_NOT_EQUAL": "ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "Beginnt mit",
+    "STARTS_WITH": "beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 4b2f44e..fd1c6a8 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Der Port ist erforderlich",
+      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "AGENT_REQUIRED": "Der Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
-      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Die Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
-      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
-      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
+      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
+      "AGENT_REQUIRED": "Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
+      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
+      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
+      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
-    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
-    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
-    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
-    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
-    "MAILDISPOSITIONS": "E-Mail Verfügungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
+    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
+    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
+    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
+    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
-      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
-      "FONT_FAMILY": "Standardschriftfamilie",
+      "USERNAME": "Benutzername für die Authentifizierung",
+      "PASSWORD": "Passwort für die Authentifizierung",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
+      "FONT_FAMILY": "Standard-Schriften",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
+      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GoToIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "WAITING": "Wartezustand",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Mithören",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
-    "PENDING": "Ausstehend",
-    "SEND_AS_PENDING": "Senden als Ausstehend",
-    "SEND_AND_CLOSE": "Senden und Schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
-    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "PENDING": "Warten auf Rückmeldung",
+    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
+    "SEND_AND_CLOSE": "Senden und schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
+    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "MARK_AS_UNREAD": "Als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
+    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail SubStatus",
+    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
+    "SEND_AS": "Senden als",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTTRANSFER": "Agentenübertragung",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
-    "TRANSFER": "Transfer",
-    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
+    "TAG": "Tag",
+    "AGENTTRANSFER": "Weiterleitung Agent",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ADVANCED": "Fortgeschritten",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
+    "ADVANCED": "Erweitert",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
+    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index c4fbe7e..86fb87a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 0ef1225..d002733 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
-      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
+      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
+      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
+      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Format ungültig",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenteb bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
-    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
-    "PENALTY": "Strafe",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
-    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
-    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
-    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
-    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
-    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
+    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
+    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
+    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
-      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
+      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
+      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "VOICE": "Voice",
+    "WAITING": "Wartezustand",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Mithören",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
+    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
+    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "MAPKEY": "Karten Schlüssel",
+    "TAG": "Tag",
+    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "MAPKEY": "MAP-KEY",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Weiterleitung Agent",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "DIALOGFLOW": "Dialogablauf",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
+    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
+    "DIALOGFLOW": "DialogFlow",
+    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "BOTNAME": "Botname",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index b5e8a7a..ee88755 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse.",
+    "NO_RESULTS": "Keine Ergebnisse",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich).",
+    "NAME_REQUIRED": "Name (erforderlich)",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
-      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
-      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
-      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
-      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
-      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
-      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host ist erforderlich",
+      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
+      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
+      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
+      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
+      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
+      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
+    "INTERNAL": "Intern",
+    "TRANSPORT": "Transport",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 120",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 160",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
-      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
-      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
-      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
-      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
-      "CALLGROUP": "Legt der Agent callgroup",
-      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
+      "CHATCAPACITY": "0 für unbegrenzt",
+      "MAILCAPACITY": "0 für unbegrenzt",
+      "FAXCAPACITY": "0 für unbegrenzt",
+      "SMSCAPACITY": "0 für unbegrenzt",
+      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
+      "CALLGROUP": "Anrufgruppe",
+      "PICKUPGROUP": "Übernahmegruppe",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren / entsperren",
-      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren/entsperren",
+      "DISABLED": "Auswählen zum Aktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Agent",
+    "CHANGEPASSWORD_USER": "Nutzer",
+    "CHANGEPASSWORD_TELEPHONE": "Telefon",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
+    "CHANSPY": "Listen-In",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHATCAPACITY": "Kapazität Chats",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMSW",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
+    "AUTOANSWER": "Auto-Antwort",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Unbedingte",
-    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
-    "NOREPLY": "Keine Antwort",
-    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
-    "BUSY": "Besetzt",
-    "BUSYNUMBER": "Nummer besetzt",
-    "REMOTE_CONTROL": "Fernbedienung",
-    "REMOTECONTROL": "Fernbedienung",
-    "REMOTECONTROLPORT": "Fernbedienung",
+    "UNCONDITIONAL": "Generell",
+    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
+    "NOREPLY": "Bei keiner Antwort",
+    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
+    "BUSY": "Bei Besetzt",
+    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
+    "REMOTE_CONTROL": "Remote-Nebenstelle",
+    "REMOTECONTROL": "Remote-Nebenstelle",
+    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Ablaufdatum",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
+    "PENALTY": "Verzögerung",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Telefonnummern",
+    "CALLERID": "Anrufer-ID",
+    "ENABLERECORDING": "Aufzeichnung aktiv",
     "STAFF": "Personal",
-    "ID": "Id",
+    "ID": "ID",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "Melden Sie Warteschlange",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
+    "CALLGROUP": "Gruppenanruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
-    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
-    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
+    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
+    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
+    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
+    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
+    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "WebControl anzeigen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Nicht stören",
+    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
+    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
-    "READANDEDIT": "Lesen, Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
-    "GENERAL_PERMISSIONS": "Allgemeines",
-    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
-    "OUTBOUNDPROXY": "Oubound-Proxy",
+    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Berechtigungen verwalten",
+    "READANDEDIT": "Lesen und Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
+    "GENERAL_PERMISSIONS": "Allgemein",
+    "ENABLEMESSENGER": "Internen Messenger aktivieren",
+    "OUTBOUNDPROXY": "Outbound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Unterstützt Video",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen"
+    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
-      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
-      "URL_REQUIRED": "Die URL ist erforderlich",
-      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Der Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
-      "TYPE_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "ACCOUNT_REQUIRED": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "INTEGRATION_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "TEMPLATE_REQUIRED": "Pflichtfeld",
-      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
-      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
-      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_TO_REQUIRED": "Pflichtfeld",
+      "HOUR_REQUIRED": "Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
+      "URL_REQUIRED": "URL ist erforderlich",
+      "URL_MUST_VALID_URL": "URL ungültiges Format",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
+      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
+      "TYPE_REQUIRED": "Typ ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
+      "FIELD_REQUIRED": "Feld ist erforderlich",
+      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
+      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
+      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
+      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
+      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
+      "MONTH_TO_REQUIRED": "Monat erforderlich",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Pflichtfeld",
-      "CONFIGURATION_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "LOCATION_REQUIRED": "Pflichtfeld",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONTSIZE_REQUIRED": "Pflichtfeld",
-      "PATH_REQUIRED": "Pflichtfeld",
-      "FORMAT_REQUIRED": "Pflichtfeld",
-      "REPORT_REQUIRED": "Pflichtfeld",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "REFRESH_REQUIRED": "Pflichtfeld",
-      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "OUTPUT_REQUIRED": "Pflichtfeld",
-      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTTYPE_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "INFO_REQUIRED": "Pflichtfeld",
-      "SCRIPT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
+      "ACTION_REQUIRED": "Aktion erforderlich",
+      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "LOCATION_REQUIRED": "Standort erforderlich",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "PATH_REQUIRED": "Pfad erforderlich",
+      "FORMAT_REQUIRED": "Format erforderlich",
+      "REPORT_REQUIRED": "Report erforderlich",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
+      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
+      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
+      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
+      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
+      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
+      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "INFO_REQUIRED": "Information erforderlich",
+      "SCRIPT_REQUIRED": "Skript erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_REQUIRED": "Timeout erforderlich",
+      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
-      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
+      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
-      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
+      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
+      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
+      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
-      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
-      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
-      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
-      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
-      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
-      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
+      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
+      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
+      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
+      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
+      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
+      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
+      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "Aus der Domäne",
-    "FROMUSER": "Vom Benutzer",
-    "OUTBOUNDPROXY": "Ausgehender Proxy",
-    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
-    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From Nutzer",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "Neuer Zeitplan",
-    "ADD_SCHEDULE": "Zeitplan hinzufügen",
-    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
-    "DELETE_SCHEDULE": "Zeitplan löschen",
+    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
+    "SCHEDULER": "Berichtsplanung",
+    "NEW_SCHEDULE": "Neue Planung",
+    "ADD_SCHEDULE": "Planung hinzufügen",
+    "EDIT_SCHEDULE": "Planung bearbeiten",
+    "DELETE_SCHEDULE": "Planung löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Weiterleitung",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL-Weiterleitung",
+    "WEB_POPUP": "Web-Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "Von",
+    "OF": "von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "Bcc",
-    "EMAILCCADDRESS": "Cc",
-    "RUN_SCHEDULE": "Zeitplan ausführen",
-    "ADD_DISPOSITION": "Disposition hinzufügen",
-    "DELETE_DISPOSITION": "Disposition löschen",
-    "DISPOSITIONS": "Dispositionen",
-    "EDIT_DISPOSITION": "Disposition bearbeiten",
-    "NEW_DISPOSITION": "Neue Disposition",
-    "CLONE_TRUNK": "Klon-Trunk",
-    "BODY": "Karosserie",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "EMAILBCCADDRESS": "BCC",
+    "EMAILCCADDRESS": "CC",
+    "RUN_SCHEDULE": "Zeitplanung ausführen",
+    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
+    "DELETE_DISPOSITION": "Qualifizierung löschen",
+    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
+    "NEW_DISPOSITION": "Neue Qualifizierung",
+    "CLONE_TRUNK": "Trunk klonen",
+    "BODY": "Textinhalt",
+    "CANNEDANSWERS": "Textvorlagen",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Dispositionen",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "LEVEL": "Niveau",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "SELECT_LEVEL": "Wählen Sie eine Ebene",
-    "TITLEFONTSIZE": "Schrifttitelgröße"
+    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
+    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
+    "LEVEL": "Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "SELECT_LEVEL": "Ebene auswählen",
+    "TITLEFONTSIZE": "Schriftgröße Titel"
   }
 }
index 91d5165..254759d 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
+    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 5fe900e..3f3b98d 100644 (file)
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
+    "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
     "ALIAS": "Alias"
   }
 }
index 67570a2..ea7f1fe 100644 (file)
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
+    "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
     "ALIAS": "Alias"
   }
 }
index c698d09..bd7bae8 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "DELETE_VOICEDISPOSITION": "Disposition löschen",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
-    "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Die MOH-Sounds",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
+    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
+    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
+    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
+    "MOHSOUNDS": "MOH-Töne",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
-      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
-      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
-      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
-      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
-      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
-      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
-      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
-      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
-      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
-      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
-      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
-      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
-      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
-      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
-      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
-      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
-      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
-      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
-      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
-      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
-      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
-      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
-      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
-      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
-      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden",
+      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
+      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
+      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
+      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
+      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
+      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
+      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
+      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
+      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
+      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
+      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
+      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
+      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
+      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
+      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
+      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
+      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
+      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
+      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
+      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
+      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
+      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
+      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
+      "MINUTEANNOUNCE": "Ansage \"Minute\"",
+      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
+      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
+      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
+      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
+      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
+      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
+      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
-      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
-      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
+      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
     },
-    "MUSICONHOLD": "Musik auf Halten",
-    "ANNOUNCETOAGENT": "Geben Sie Agent",
-    "ANNOUNCEMENTS": "Ankündigungen",
-    "ADVANCED": "Erweiterte",
-    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
-    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
-    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
-    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
-    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
-    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
-    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
-    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
-    "PERIODICANNOUNCE": "Periodische verkünden",
-    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
-    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
-    "THEREAREANNOUNCE": "'Es gibt' verkünden",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
-    "MINUTESANNOUNCE": "Minuten ankündigen",
-    "MINUTEANNOUNCE": "Minute verkünden",
-    "SECONDSANNOUNCE": "Sekunden,",
+    "MUSICONHOLD": "Wartemusik",
+    "ANNOUNCETOAGENT": "Ansage an Agenten",
+    "ANNOUNCEMENTS": "Ansagen",
+    "ADVANCED": "Erweitert",
+    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
+    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
+    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
+    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
+    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
+    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
+    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
+    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
+    "PERIODICANNOUNCE": "Wiederholende Ansagen",
+    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
+    "YOUARENEXTANNOUNCE": "Erste Position",
+    "THEREAREANNOUNCE": "Es befinden sich",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
+    "MINUTESANNOUNCE": "Minuten",
+    "MINUTEANNOUNCE": "Minute",
+    "SECONDSANNOUNCE": "Sekunden",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
-    "MUSICONHOLDS": "Musik auf Halten",
-    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
-    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
-    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
-    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
-    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Routen",
-    "NEW_CONTEXT": "Neue Kontext",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
-    "NEW_CHANSPY": "Neue ChanSpy",
-    "PENALTY": "Strafe",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
-    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
+    "NEW_MUSICONHOLD": "Neue Haltemusik",
+    "NEW_CHANSPY": "Neuer Listen-In",
+    "PENALTY": "Verzögerung",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "EDIT_DIAL": "Wählen anpassen",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
-    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
-    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
-    "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten.",
-    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
-    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
+    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
+    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
+    "EDIT_QUEUE": "Warteschlange bearbeiten",
+    "EDIT_SET": "Set bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Keine",
-    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
-    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
-    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
+    "NO": "Nein",
+    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
+    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
+    "HANGUPCAUSE_17": "17 = Besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause",
-    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
-    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
-    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "WRONG_EXTENSION": "Ungültige Dateiendung",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
-    "SENTIMENT": "Gefühl",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias"
   }
 }
index 0e070f7..a06798a 100644 (file)
     "ADD_VOICEPREFIX": "Add Prefix",
     "EDIT_VOICEPREFIX": "Edit Prefix",
     "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
+    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
     "DELETE_VOICEPREFIX": "Delete Prefix",
     "OUTBOUNDROUTE": "Outbound Route",
     "CALLERIDALL": "Caller Id",
index 90b1016..b29a2d3 100644 (file)
     "SERVICELEVEL": "Nivel de servicio",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
+    "TEAMADD_VOICEPREFIX": "Agregar equipo al prefijo",
     "ALIAS": "Alias"
   }
 }
index bd75c5e..b52a7e9 100644 (file)
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
+    "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
     "ALIAS": "Teise nimega"
   }
 }
index 64fd7ba..4c8f69b 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
+    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index f1874d1..664bc29 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
+    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index ca6418d..51099a3 100644 (file)
     "SERVICELEVEL": "Niveau de service",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
+    "TEAMADD_VOICEPREFIX": "Ajouter une équipe au préfixe",
     "ALIAS": "Alias"
   }
 }
index 2da30a3..61c740b 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
+    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 2fbd46a..905e9aa 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
+    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index 1fecba7..eef7ebe 100644 (file)
     "SERVICELEVEL": "Tingkat layanan",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
+    "TEAMADD_VOICEPREFIX": "Tambahkan Tim ke Awalan",
     "ALIAS": "Alias"
   }
 }
index 3b739d4..527d7c5 100644 (file)
     "ADD_VOICEPREFIX": "Aggiungi Prefisso",
     "EDIT_VOICEPREFIX": "Modifica Prefisso",
     "AGENTADD_VOICEPREFIX": "Aggiungi Agente al Prefisso",
+    "TEAMADD_VOICEPREFIX": "Aggiungi Team al Prefisso",
     "DELETE_VOICEPREFIX": "Elimina Prefisso",
     "OUTBOUNDROUTE": "Rotta Outbound",
     "CALLERIDALL": "Numero Chiamante",
index c7d5d57..d2accf3 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
+    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index bc9ce6e..9e4a917 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
+    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 1a07f3d..65172e6 100644 (file)
     "SERVICELEVEL": "Aptarnavimo lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
+    "TEAMADD_VOICEPREFIX": "Pridėti komandą prie priešdėlio",
     "ALIAS": "Pseudonimas"
   }
 }
index 3e683d8..499925d 100644 (file)
     "SERVICELEVEL": "Pakalpojuma līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
+    "TEAMADD_VOICEPREFIX": "Pievienot komandu prefiksam",
     "ALIAS": "Pseidonīms"
   }
 }
index 103a753..a1ad47d 100644 (file)
     "SERVICELEVEL": "Service Level",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
+    "TEAMADD_VOICEPREFIX": "Team toevoegen aan voorvoegsel",
     "ALIAS": "Alias"
   }
 }
index 729522a..f979e88 100644 (file)
     "SERVICELEVEL": "Service nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
+    "TEAMADD_VOICEPREFIX": "Legg Team til prefiks",
     "ALIAS": "Alias"
   }
 }
index 3988cbe..9974a58 100644 (file)
     "SERVICELEVEL": "Poziom usług",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
+    "TEAMADD_VOICEPREFIX": "Dodaj drużynę do prefiksu",
     "ALIAS": "Alias"
   }
 }
index 5113530..95abd15 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index a46bf2f..3c55740 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index 672f53d..022d0b1 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
+    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 83c6c54..6a741b4 100644 (file)
     "SERVICELEVEL": "Servicenivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
+    "TEAMADD_VOICEPREFIX": "Lägg till Team i prefixet",
     "ALIAS": "Alias"
   }
 }
index 6dd9d26..51a4ca4 100644 (file)
     "SERVICELEVEL": "Servis seviyesi",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
+    "TEAMADD_VOICEPREFIX": "Önek'e Takım Ekle",
     "ALIAS": "takma ad"
   }
 }
index 2415dcc..3abaa1b 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
+    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index 294b15a..c78fea9 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
+    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 03bcbeb..6f42238 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
+    "LOGGED_IN": "تم تسجيل الدخول",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index 07beea8..e361766 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen (připojeno SIP)",
+    "LOGGED_IN": "Přihlášen",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 67fc111..00e305d 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
+    "LOGGED_IN": "Logget ind",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index 80b51fd..f01cf37 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
+    "ACCOUNTSID": "Konto-ID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer Agent",
+    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
+    "AGENT_TIMEOUT": "Timeout Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "Botname",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "DEFAULT_PAUSE": "Standard Pause",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Anordnung",
-    "DISPOSITIONS": "Dispositionen",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_GOTOP": "GoTop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität falsch",
+    "GENERAL": "Allgemein",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
+    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Eingeloggt",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
+    "SAVE": "Speichern",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Mitlesen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
+    "TYPE": "Typ",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 0920067..8ac07bf 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In (SIP Connected)",
+    "LOGGED_IN": "Logged In",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index 03aafb4..a7cb714 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index 5ff75f9..c40e5bd 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
+    "LOGGED_IN": "Sisse logitud",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 2bfad68..76a3444 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
+    "LOGGED_IN": "ورود به سیستم",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 647eabf..52f4f20 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
+    "LOGGED_IN": "Sisäänkirjautunut",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index b2e331a..919bb35 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté (SIP connecté)",
+    "LOGGED_IN": "Connecté",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index 00d0fa4..a6c765d 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר (SIP מחובר)",
+    "LOGGED_IN": "מחובר",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 819f531..0550a1a 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
+    "LOGGED_IN": "लॉग इन",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index b2e703c..246085c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk (SIP Terhubung)",
+    "LOGGED_IN": "Masuk",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index 0350e8d..d23db62 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み(SIP接続済み)",
+    "LOGGED_IN": "ログイン済み",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index d6c34e1..53a3344 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
+    "LOGGED_IN": "로그인 됨",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index 282dd81..a074057 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
+    "LOGGED_IN": "Prisijungęs",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index 2389947..fb7beca 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
+    "LOGGED_IN": "Pieteicies",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 85a42ac..5eed559 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd (SIP verbonden)",
+    "LOGGED_IN": "Ingelogd",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index b8c8675..efdafa2 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
+    "LOGGED_IN": "Logget inn",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index da5dad6..510b8e5 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano (połączenie SIP)",
+    "LOGGED_IN": "Zalogowano",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index ec3412a..29fd2ec 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index ec3412a..29fd2ec 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado (SIP conectado)",
+    "LOGGED_IN": "Conectado",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 87a083a..5131899 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован (SIP подключен)",
+    "LOGGED_IN": "Авторизован",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index f4f2b7e..ae13a80 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad (SIP ansluten)",
+    "LOGGED_IN": "Inloggad",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index e867462..da1b4f9 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
+    "LOGGED_IN": "Oturum Açıldı",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index b81f80a..4804111 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录(已连接SIP)",
+    "LOGGED_IN": "已登录",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index cb5a2ee..6d85da7 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄(已連接SIP)",
+    "LOGGED_IN": "已登錄",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index 3162f7a..fd8ccd9 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Anwendungsserver",
-    "USER_STATS": "Benutzer Stats",
-    "EVENTS": "Veranstaltungen",
-    "NOTES": "Hinweise",
-    "QUICK_SETTINGS": "Schnelle Einstellungen",
+    "APP_SERVERS": "Server Anwendung",
+    "USER_STATS": "Benutzer Statistiken",
+    "EVENTS": "Ereignisse",
+    "NOTES": "Notizen",
+    "QUICK_SETTINGS": "Schnelleinstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Triebwerke",
-    "RECENT": "Die jüngsten",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Neuste",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
+    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neue Token",
-    "OLD_TOKEN": "Alte Token",
+    "NEW_TOKEN": "Neuer Token",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
-    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
+    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
-    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
-    "SAVE": "sparen",
-    "INFO": "Info",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
+    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
+    "SAVE": "Speichern",
+    "INFO": "Information",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Änderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
-    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
+    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
     "WARNING": "Warnung"
   }
 }
index 1d7248b..6eb58fc 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Ihr Kennwort zurücksetzen",
-    "EMAIL_ADRESS": "E-mail Adresse",
-    "PASSWORD": "Kennwort",
-    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
-    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
+    "TITLE": "Passwort zurücksetzen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
+    "PASSWORD": "Passwort",
+    "PASSWORD_CONFIRM": "Passwort bestätigen",
+    "UPDATE_PASSWORD": "Passwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Kennwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "PASSWORD_RESET": "Passwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
+    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
-      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
+      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
+      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index a399ee6..b6abdf2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation wechseln",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
+    "TOGGLE_NAVIGATION": "Navigation umschalten",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Benutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
+    "USER_SETTINGS": "Nutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnische",
+    "FINNISH": "Finnisch",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Login Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
+    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Lebenslauf",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
-    "LATVIAN": "Lettische",
+    "RESUME": "Fortsetzen",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
+    "LATVIAN": "Lettisch",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
+      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Ungültige Lizenz",
+    "INVALID_LICENSE": "Lizenz ungültig",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Bedarf",
+    "REQUIREMENTS": "Anforderungen",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Eingetragen",
+    "REGISTERED": "Registriert",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Warmer Transfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Redner",
-    "RINGING": "Klingelton",
+    "SPEAKER": "Lautsprecher",
+    "RINGING": "Klingeln",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienstleistungen",
+    "SERVICES": "Dienste",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingelgerät",
-    "SPEAKERDEVICE": "Lautsprechergerät",
-    "MICROPHONEDEVICE": "Mikrofon Gerät",
+    "RINGINGDEVICE": "Klingeln auf Gerät",
+    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
+    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "die Einstellungen",
+    "SETTINGS": "Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "estnisch",
+    "ESTONIAN": "Estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianer",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
-    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
+    "BRAZILIAN": "Brasilianisch",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
+    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
     "CHANGE_LANGUAGE_TITLE": "Sprache ändern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "litauisch",
+    "LITHUANIAN": "Litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index 2506a28..b528911 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.0b303223.css">
+  <link rel="stylesheet" href="styles/app.5c1c6c1e.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'> -->
@@ -68,7 +68,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.8a22b3f9.js"></script>
+  <script src="scripts/app.03d03cae.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.8a22b3f9.js
rename to public/scripts/app.03d03cae.js
index b052fee..72e259f 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),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.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"])}(),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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 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 a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],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",function(e,n,t){return 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",{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:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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,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,key,email,ListId,active,cservice,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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",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,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",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",{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:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",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,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",id:n.id})}],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,t,a){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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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",id:n.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.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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";function e(e,n,t,a){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",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:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},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,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",id:n.id})}],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",role:"agent",sort:"-updatedAt",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",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",id:n.id})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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"}),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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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";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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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";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,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","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(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.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"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.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"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.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()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}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";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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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){console.log(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:g.instant("TOOLBAR.WARNING"),msg:g.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,R("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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("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)&&(console.log("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):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("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(){new Promise(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){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.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 T(e){console.debug("answer -> session",e),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 I(e,n){console.debug("terminate -> session",e),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 console.debug("getVoiceChannels -> session",t),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 O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(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&&y()}).catch(function(e){console.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&&y()}).catch(function(e){console.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&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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){console.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,S(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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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){console.debug("getNotification -> session",n);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(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,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){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,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=O.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){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),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()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),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){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.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,u.$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){console.log(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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),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){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),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){console.debug("referAttended -> session",e),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=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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){console.log(e)})})},E.patchConference=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(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=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(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()},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]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(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}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["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"}}).factory("dateRangeManager",n)}(),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(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),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 animate-rotate"></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(a,e,n,i,t){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(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(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){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},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:"="},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"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.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"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.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){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),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){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());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(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 Promise.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(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(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$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(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),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;if(n)return 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("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("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}},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()}}}}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){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],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"}}),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"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},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"},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"},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"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),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.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"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),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"}}}),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"},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"}}),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"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),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,_.pick(e.toJSON(),_.keys(n))),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,i,s,e,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=e,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){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.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++)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.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),s.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++)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.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(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.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,C,O,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(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"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(C,"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(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"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(O,"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(C,"id","name"),pause_id:U(O,"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:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, 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(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getChatWebsiteInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){C(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=C,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){C(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.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 C(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,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.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.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()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.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.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()})})},c.deleteContact=function(e){c.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(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.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(e,t,n,a,i,s,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 C(){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 O(){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.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=n.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")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.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}).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});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.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=i.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 i.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=C,S.getHistories=O,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=i.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");i.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){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$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())}),e.$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),C())}),e.$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),O())})}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)}(),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}],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(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.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=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.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 A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(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=A.user.privacyEnabled?b.mask(a):a):o.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)&&N(t)),n){var s=_.find(A.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 d.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];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(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 w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.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?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.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()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.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 t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({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":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.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},h.show(e.title,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.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({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")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],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,n,l){var g=this;function v(){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 h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){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,h("hoppers")).$promise)}function b(){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,h("finals")).$promise)}function A(){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,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(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})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),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=v,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(){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(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.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=f,g.getFinals=b,g.getHistories=A,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(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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){}f(),b(),A()}).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?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(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=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],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};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};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;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)},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,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.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 A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.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:c.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"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.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:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.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:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.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()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.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:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],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(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.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:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(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 h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.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 y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.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:u.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"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.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:u.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:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.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:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.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()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.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()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.add(n)}})},u.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:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(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(m.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.update(n)}})}),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"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.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:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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",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;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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.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:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.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:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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.replace(/\n$/,"")))},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?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+=" "+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[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+=" "+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("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+=" "+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("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").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).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,_.pick(e.toJSON(),_.keys(n))),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){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getFaxAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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()})})},g.deleteDynamics365Account=function(e){g.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(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","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){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account 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("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.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:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.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){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.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){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","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.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.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,_.pick(e.toJSON(),_.keys(n))),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){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.dynamics365Account=c||e.params.dynamics365Account||{},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.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(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)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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 o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.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.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.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.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.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","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],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){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){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,u).$promise}function g(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||p(),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 v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(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"]}}]},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(){g(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=u,m.getMailAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,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.mailAccount=c||t.params.mailAccount||{},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:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?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()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=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:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",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.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.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.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.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","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},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.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.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.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.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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=2,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){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.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}})},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,_.pick(e.toJSON(),_.keys(n))),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,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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.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}})},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)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.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,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})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),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})}),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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getOpenchannelAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.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("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" 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:DELETEcloudProvider"}];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:DELETEcloudProvider",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.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",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_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.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"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.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"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.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:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.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}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],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,_.pick(e.toJSON(),_.keys(n))),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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(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)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getSmsAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.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},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(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.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(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.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).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","agents","agent","api","Auth","license","setting","crudPermissions"],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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},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.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:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.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:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.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.agent&&(t=_.find(u.contexts,{name:u.agent.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(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.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(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.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).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,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],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,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.user=c||e.params.user||{},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.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:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.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()})})},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.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.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","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.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",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],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.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.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=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="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.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){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.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],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,_.pick(e.toJSON(),_.keys(n))),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){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,_.pick(e.toJSON(),_.keys(n))),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,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.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=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.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",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.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:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.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 s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.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){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","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",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,_.pick(e.toJSON(),_.keys(n))),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.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()})})}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 n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");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"};(a=n,i=t,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",n,t].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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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-sip"},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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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};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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,n,t,a,i,s,o,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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(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!"}),v(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=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.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){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getWhatsappAccountInteractions=p,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,p()}}).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=g,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){g(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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.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!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.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){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.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!o.hasPermission(101)}}),a.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!o.hasPermission(115)}}),a.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!r.cm||!o.hasPermission(102)}}),a.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!r.cm||!o.hasPermission(103)}}),a.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!r.dialer||!o.hasPermission(113)}}),a.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!r.voice||!o.hasPermission(110)}}),a.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!r.voice||!o.hasPermission(111)}}),a.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!r.voice||!o.hasPermission(104)}}),a.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!r.chat||!o.hasPermission(105)}}),a.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!r.mail||!o.hasPermission(106)}}),a.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!r.messaging||!o.hasPermission(107)}}),a.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!r.openchannel||!o.hasPermission(108)}}),a.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!r.fax||!o.hasPermission(109)}}),a.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!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],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.msScrollOptions={suppressScrollX:!0},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(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.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))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],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(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,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();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 a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();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 d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.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)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),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){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.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"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},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"},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"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(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:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),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){console.error(e)})}function P(e){var n=e;if(T.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})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.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"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.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"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.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},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=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(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.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&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.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()})})},T.unpause=function(){return f.user.unpause({id:T.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()})})},T.preview=function(n){return T.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"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).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){T.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(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.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()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(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 N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.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"),S&&(E.cancel(S),S=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"],angular.module("app.toolbar").controller("ToolbarController",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","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-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" ms-scroll>\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 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)" ng-disabled="!vm_pb.registered">\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" />\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" ms-scroll>\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = 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" ms-scroll>\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" ms-scroll 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" ms-scroll>\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">\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.\' + widget.attrs[0].value | 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="animate-slide-up 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="animate-slide-up 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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" ms-scroll>\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" 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    </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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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        <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 animate-slide-down 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" ms-scroll>\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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 ms-scroll>\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 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>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 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          </div>\n          <md-button class="md-icon-button">\n            <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 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="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 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="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/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="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"></ms-dual-multiselect>\n    </md-dialog-content>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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/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 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="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 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="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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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.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              </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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-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 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      <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-init="vm.getCustomFields(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\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 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\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\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\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 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      <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 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 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" 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\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" 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          </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 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>\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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\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/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  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll 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">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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 ms-scroll 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">\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 mr-0">\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-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\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"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="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="mr-8">\n                  </md-icon>\n                  <span class="h1" 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"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></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"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end 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\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                </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 ms-scroll>\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" 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" 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        <md-input-container ng-if="!vm.dialerCall" class="md-block">\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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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 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 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" ms-scroll>\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 ms-scroll>\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="md-primary-bg width-50" ms-scroll>\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 layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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" 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>\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">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\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" class="text-truncate font-size-12">{{ interaction.subject }}</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 ms-scroll 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 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 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 ms-scroll>\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 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 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 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 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 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 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 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 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 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="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 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        <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 ms-scroll>\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 ms-scroll 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 ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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      <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      <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" required>\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      <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\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 animate-slide-down 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" ms-scroll>\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="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.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="username ">{{dynamics365Account.username}}</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="remoteUri ">{{dynamics365Account.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(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 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="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 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 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              <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\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.dynamics365Account.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.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.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.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" 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="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.dynamics365Account.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.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.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.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      <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\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\n          </div>\n        </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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$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.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$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\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\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 MAILACCOUNT\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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.gotogoto(vm.mailAccount, $event)" 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.agentadddialog(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) || (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  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs 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.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                <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="generalForm[\'fontFamily\'].$error" ng-show="generalForm[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="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'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              <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\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          <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          <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        </md-tab-body>\n      </md-tab>\n      <md-tab>\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.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="vm.mailAccount.Imap.service == null" 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 == true || vm.mailAccount.Imap.service != null" 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\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 == true || vm.mailAccount.Imap.service != null">\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\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\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">connTimeout</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\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">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout 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">authTimeout</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\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">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-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.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.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 == true || vm.mailAccount.Smtp.service != null" 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 == true || vm.mailAccount.Smtp.service != null">\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\n\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 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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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  \x3c!-- / CONTENT --\x3e\n\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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedMailAccounts.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.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  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\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!-- MAILACCOUNT TABLE --\x3e\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 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="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">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" 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 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.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="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(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\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(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\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(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\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(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\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  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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 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="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 animate-slide-down 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" ms-scroll>\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 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 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/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 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="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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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" 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      <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) || (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        </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\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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 animate-slide-down 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" ms-scroll>\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 md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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.arrayservice[cloudProvider.service].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="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(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\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(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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-value="\'AmazonAWS\'">AmazonAWS</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      <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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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/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 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        <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" ms-scroll>\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 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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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" ms-scroll>\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\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\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\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        </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        </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" ms-scroll>\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="36" 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              </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 class="text-italic text-bold">{{vm.license.uuid}}</span></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 class="text-italic text-bold">{{vm.license.machineUuid}}</span></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 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="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="36"><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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\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="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\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="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_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="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.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="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum 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="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$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.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($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/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.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  \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" ms-scroll>\n\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          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\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.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.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[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum 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="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description 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/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 ms-scroll>\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" ms-scroll>\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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\n\n                <td 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(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\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(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 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="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\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\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 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 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" 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\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\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\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\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)" 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="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\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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n      <md-divider></md-divider>\n\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\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\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/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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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\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\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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 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" 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\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\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\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\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\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs 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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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.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 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\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/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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\n\n                <td 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(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </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(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 animate-slide-down 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" ms-scroll>\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 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.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/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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 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.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" 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 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" 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 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" ms-scroll>\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" ms-scroll>\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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 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      <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 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="" 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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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.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" ms-scroll>\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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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 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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 ms-scroll>\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 ms-scroll>\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 == \'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)" 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  <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 ms-scroll>\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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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.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 ms-scroll>\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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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 animate-slide-down 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" ms-scroll>\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 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.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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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" 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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="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 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>{{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            {{ \'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.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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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/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 animate-slide-down 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" ms-scroll>\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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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" 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" 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" 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" 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 animate-slide-down 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" ms-scroll>\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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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-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\'" 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\'" 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      <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\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-scroll="vm.msScrollOptions"></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-scroll="vm.msScrollOptions"></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" ms-scroll 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" ms-scroll 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" ms-scroll 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 animate-slide-left" ng-hide="vm_ct.user">\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" placeholder="Search by fullname.." 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">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></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"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\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.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" 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.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[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"></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.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></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      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" 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.toggleChat()" 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 layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="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\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" 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.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\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\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 ms-scroll>\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 animate-slide-left" 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 animate-slide-right" 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 ms-scroll 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 ms-scroll>\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()" ms-scroll>\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/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 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="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" 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.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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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 layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\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 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-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-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.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.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"])}(),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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"):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 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 a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],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",function(e,n,t){return 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",{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:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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,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,key,email,ListId,active,cservice,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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",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,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",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",{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:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",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,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",id:n.id})}],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,t,a){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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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",id:n.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.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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";function e(e,n,t,a){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",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:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},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,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",id:n.id})}],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",role:"agent",sort:"-updatedAt",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",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",id:n.id})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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"}),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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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";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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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";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,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","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(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.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"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.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"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.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()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}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";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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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){console.log(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:g.instant("TOOLBAR.WARNING"),msg:g.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,R("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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("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)&&(console.log("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):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("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(){new Promise(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){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.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 T(e){console.debug("answer -> session",e),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 I(e,n){console.debug("terminate -> session",e),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 console.debug("getVoiceChannels -> session",t),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 O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(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&&y()}).catch(function(e){console.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&&y()}).catch(function(e){console.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&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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){console.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,S(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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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){console.debug("getNotification -> session",n);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(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,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){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,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=O.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){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),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()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),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){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.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,u.$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){console.log(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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),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){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),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){console.debug("referAttended -> session",e),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=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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){console.log(e)})})},E.patchConference=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(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=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(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()},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]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(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}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["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"}}).factory("dateRangeManager",n)}(),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(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),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 animate-rotate"></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(a,e,n,i,t){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(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(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){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},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:"="},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"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.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"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.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){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),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){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());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(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 Promise.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(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(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$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(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),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;if(n)return 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("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}},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()}}}}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){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],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"}}),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"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},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"},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"},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"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),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.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"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),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"}}}),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"},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"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),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,_.pick(e.toJSON(),_.keys(n))),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,i,s,e,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=e,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){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.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++)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.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),s.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++)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.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(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.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,C,O,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(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"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(C,"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(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"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(O,"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(C,"id","name"),pause_id:U(O,"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:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, 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(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getChatWebsiteInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){C(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=C,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){C(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.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 C(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,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.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.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()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.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.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()})})},c.deleteContact=function(e){c.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(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.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(e,t,n,a,i,s,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 C(){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 O(){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.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=n.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")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.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}).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});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.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=i.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 i.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=C,S.getHistories=O,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=i.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");i.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){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$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())}),e.$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),C())}),e.$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),O())})}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)}(),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}],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(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.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=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.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 A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(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=A.user.privacyEnabled?b.mask(a):a):o.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)&&N(t)),n){var s=_.find(A.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 d.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];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(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 w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.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?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.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()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.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 t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({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":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.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},h.show(e.title,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.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({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")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],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,n,l){var g=this;function v(){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 h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){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,h("hoppers")).$promise)}function b(){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,h("finals")).$promise)}function A(){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,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(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})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),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=v,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(){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(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.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=f,g.getFinals=b,g.getHistories=A,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(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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){}f(),b(),A()}).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?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(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=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],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};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};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;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)},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,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.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 A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.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:c.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"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.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:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.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:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.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()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.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:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],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().$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(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(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 h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.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 y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.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:u.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"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.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:u.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:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.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:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.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()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.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()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.add(n)}})},u.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:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(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(m.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.update(n)}})}),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"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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().$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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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",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;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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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().$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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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.replace(/\n$/,"")))},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?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+=" "+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[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+=" "+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("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+=" "+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("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,_.pick(e.toJSON(),_.keys(n))),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){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getFaxAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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()})})},g.deleteDynamics365Account=function(e){g.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(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","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){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account 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("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.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:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.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){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.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){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","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.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.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,_.pick(e.toJSON(),_.keys(n))),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){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.dynamics365Account=c||e.params.dynamics365Account||{},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.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(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)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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 o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.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.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.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.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.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","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],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){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){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,u).$promise}function g(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||p(),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 v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getMailAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,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.mailAccount=c||t.params.mailAccount||{},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:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?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()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=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:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",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.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.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.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.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","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},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.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.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.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.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.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}})},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,_.pick(e.toJSON(),_.keys(n))),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,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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.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}})},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)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.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,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})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),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})}),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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getOpenchannelAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.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("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" 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:DELETEcloudProvider"}];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:DELETEcloudProvider",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.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",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_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.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"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.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"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.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:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.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}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],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,_.pick(e.toJSON(),_.keys(n))),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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(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)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getSmsAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.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},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(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.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(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.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).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","agents","agent","api","Auth","license","setting","crudPermissions"],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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},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.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:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.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:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.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.agent&&(t=_.find(u.contexts,{name:u.agent.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(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.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(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.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).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,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],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,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.user=c||e.params.user||{},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.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:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.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()})})},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.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.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","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.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",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],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.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.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=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="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.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){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.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],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,_.pick(e.toJSON(),_.keys(n))),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){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,_.pick(e.toJSON(),_.keys(n))),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,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.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=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.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",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.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:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.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 s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.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){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","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",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,_.pick(e.toJSON(),_.keys(n))),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.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()})})}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 n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");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"};(a=n,i=t,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",n,t].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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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:"-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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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-sip"},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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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};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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(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!"}),v(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=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.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){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getWhatsappAccountInteractions=p,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,p()}}).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=g,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){g(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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.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!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.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){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.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!o.hasPermission(101)}}),a.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!o.hasPermission(115)}}),a.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!r.cm||!o.hasPermission(102)}}),a.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!r.cm||!o.hasPermission(103)}}),a.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!r.dialer||!o.hasPermission(113)}}),a.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!r.voice||!o.hasPermission(110)}}),a.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!r.voice||!o.hasPermission(111)}}),a.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!r.voice||!o.hasPermission(104)}}),a.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!r.chat||!o.hasPermission(105)}}),a.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!r.mail||!o.hasPermission(106)}}),a.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!r.messaging||!o.hasPermission(107)}}),a.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!r.openchannel||!o.hasPermission(108)}}),a.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!r.fax||!o.hasPermission(109)}}),a.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!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],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.msScrollOptions={suppressScrollX:!0},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(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.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))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],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(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,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();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 a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();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 d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.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)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),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){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.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"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},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"},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"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(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:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),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){console.error(e)})}function P(e){var n=e;if(T.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})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.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"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.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"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.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},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=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(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.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&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.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()})})},T.unpause=function(){return f.user.unpause({id:T.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()})})},T.preview=function(n){return T.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"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).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){T.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(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.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()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(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 N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.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"),S&&(E.cancel(S),S=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"],angular.module("app.toolbar").controller("ToolbarController",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","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-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" ms-scroll>\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 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)" ng-disabled="!vm_pb.registered">\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" />\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" ms-scroll>\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = 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" ms-scroll>\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" ms-scroll 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" ms-scroll>\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">\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.\' + widget.attrs[0].value | 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="animate-slide-up 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="animate-slide-up 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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" ms-scroll>\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" 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    </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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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        <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 animate-slide-down 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" ms-scroll>\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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 ms-scroll>\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 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>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 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          </div>\n          <md-button class="md-icon-button">\n            <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 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="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 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="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/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="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"></ms-dual-multiselect>\n    </md-dialog-content>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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/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 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="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 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="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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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.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              </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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-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 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      <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-init="vm.getCustomFields(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\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 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\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\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\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 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      <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 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 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" 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\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" 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          </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 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>\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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\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/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  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll 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">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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 ms-scroll 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>\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\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                </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 ms-scroll>\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" 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" 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        <md-input-container ng-if="!vm.dialerCall" class="md-block">\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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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 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 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" ms-scroll>\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 ms-scroll>\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="md-primary-bg width-50" ms-scroll>\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 layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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" 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>\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">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\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" class="text-truncate font-size-12">{{ interaction.subject }}</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 ms-scroll 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 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 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 ms-scroll>\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 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 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 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 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 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 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 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 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 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="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 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        <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 ms-scroll>\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 ms-scroll 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 ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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      <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      <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" required>\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      <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\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 animate-slide-down 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" ms-scroll>\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="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.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="username ">{{dynamics365Account.username}}</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="remoteUri ">{{dynamics365Account.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(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 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="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 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 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              <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\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.dynamics365Account.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.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.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.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" 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="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.dynamics365Account.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.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.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.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      <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\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\n          </div>\n        </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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$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.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$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\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\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 MAILACCOUNT\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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.gotogoto(vm.mailAccount, $event)" 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.agentadddialog(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) || (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  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs 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.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                <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="generalForm[\'fontFamily\'].$error" ng-show="generalForm[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="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'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              <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\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          <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          <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        </md-tab-body>\n      </md-tab>\n      <md-tab>\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.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="vm.mailAccount.Imap.service == null" 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 == true || vm.mailAccount.Imap.service != null" 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\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 == true || vm.mailAccount.Imap.service != null">\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\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\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">connTimeout</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\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">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout 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">authTimeout</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\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">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-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.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.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 == true || vm.mailAccount.Smtp.service != null" 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 == true || vm.mailAccount.Smtp.service != null">\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\n\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 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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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  \x3c!-- / CONTENT --\x3e\n\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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedMailAccounts.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.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  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\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!-- MAILACCOUNT TABLE --\x3e\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 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="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">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" 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 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.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="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(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\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(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\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(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\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(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\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  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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 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="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 animate-slide-down 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" ms-scroll>\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 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 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/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 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="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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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" 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      <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) || (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        </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\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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 animate-slide-down 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" ms-scroll>\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 md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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.arrayservice[cloudProvider.service].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="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(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\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(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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-value="\'AmazonAWS\'">AmazonAWS</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      <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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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/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 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        <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" ms-scroll>\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 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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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" ms-scroll>\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\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\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\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        </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        </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" ms-scroll>\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="36" 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              </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 class="text-italic text-bold">{{vm.license.uuid}}</span></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 class="text-italic text-bold">{{vm.license.machineUuid}}</span></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 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="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="36"><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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\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="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\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="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_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="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.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="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum 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="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$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.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($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/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.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  \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" ms-scroll>\n\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          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\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.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.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[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum 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="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description 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/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 ms-scroll>\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" ms-scroll>\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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\n\n                <td 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(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\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(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 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="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\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\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 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 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" 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\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\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\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\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)" 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="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\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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n      <md-divider></md-divider>\n\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\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\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/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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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\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\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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 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" 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\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\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\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\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\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs 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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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.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 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\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/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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\n\n                <td 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(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </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(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 animate-slide-down 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" ms-scroll>\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 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.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/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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 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.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" 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 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" 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 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" ms-scroll>\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" ms-scroll>\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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 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      <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 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="" 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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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.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" ms-scroll>\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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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 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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 ms-scroll>\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 ms-scroll>\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 == \'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)" 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  <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 ms-scroll>\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-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\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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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.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 ms-scroll>\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-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 == \'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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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 animate-slide-down 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" ms-scroll>\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 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.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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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" 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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="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 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>{{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            {{ \'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.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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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" 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" 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" 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" 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 animate-slide-down 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" ms-scroll>\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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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-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\'" 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\'" 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      <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\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-scroll="vm.msScrollOptions"></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-scroll="vm.msScrollOptions"></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" ms-scroll 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" ms-scroll 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" ms-scroll 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 animate-slide-left" ng-hide="vm_ct.user">\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" placeholder="Search by fullname.." 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">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></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"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\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.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" 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.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[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"></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.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></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      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" 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.toggleChat()" 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 layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="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\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" 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.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\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\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 ms-scroll>\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 animate-slide-left" 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 animate-slide-right" 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 ms-scroll 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 ms-scroll>\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()" ms-scroll>\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/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 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="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" 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.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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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 layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\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 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-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-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
diff --git a/public/styles/app.0b303223.css b/public/styles/app.0b303223.css
deleted file mode 100644 (file)
index 9363192..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!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}@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}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}}*{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:absolute;top:0;right:0;bottom:0;left:0}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{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#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{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>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>md-tab-content{padding:24px}.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}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.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}.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}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.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-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-scroll{overflow:hidden!important}.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.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}#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}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#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}#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{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#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:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!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}#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>.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}#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>.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>.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}#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>.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}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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>.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}#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%}}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}#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}#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}#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>.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.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>.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}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}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-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{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
diff --git a/public/styles/app.5c1c6c1e.css b/public/styles/app.5c1c6c1e.css
new file mode 100644 (file)
index 0000000..da57bc3
--- /dev/null
@@ -0,0 +1 @@
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!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}@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}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}}*{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:absolute;top:0;right:0;bottom:0;left:0}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{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#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{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>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>md-tab-content{padding:24px}.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}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.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}.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}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.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-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-scroll{overflow:hidden!important}.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.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}#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}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#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}#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{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#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}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!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}#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>.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}#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>.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>.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}#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>.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}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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>.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}#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%}}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}#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}#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}#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>.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.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>.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}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}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-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{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 7285ff2..0048fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb1=['browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','getDataValue','contactManager','motionbar','jscripty','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)]','STRING','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xdbb1,0x105));var _0x1dbb=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0xdbb1[_0x2aa0e7];return _0x1472c0;};'use strict';var Sequelize=require(_0x1dbb('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4b55f7){return this[_0x1dbb('0x1')]('action');}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x1dbb('0x2'),'integration',_0x1dbb('0x3'),_0x1dbb('0x4'),'urlForward','browser',_0x1dbb('0x5'),_0x1dbb('0x6')]],'msg':_0x1dbb('0x7')}},'comment':_0x1dbb('0x7')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x1dbb('0x8')},'data2':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comment':_0x1dbb('0xa')},'data4':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comments':_0x1dbb('0xb')},'data5':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comments':_0x1dbb('0xc')},'data6':{'type':Sequelize[_0x1dbb('0x9')],'comments':_0x1dbb('0xd')},'data7':{'type':Sequelize[_0x1dbb('0xe')],'comments':_0x1dbb('0xf')}};
\ No newline at end of file
+var _0x2aa3=['VIRTUAL','STRING','contactManager','integration','motionbar','jscripty','urlForward','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]','TEXT','urlForward[body]','sequelize','exports'];(function(_0x57b054,_0xdcdc25){var _0x278838=function(_0x302990){while(--_0x302990){_0x57b054['push'](_0x57b054['shift']());}};_0x278838(++_0xdcdc25);}(_0x2aa3,0x83));var _0x32aa=function(_0x307e41,_0x1ece4c){_0x307e41=_0x307e41-0x0;var _0x11677b=_0x2aa3[_0x307e41];return _0x11677b;};'use strict';var Sequelize=require(_0x32aa('0x0'));module[_0x32aa('0x1')]={'name':{'type':Sequelize[_0x32aa('0x2')],'get':function(_0x2ef91b){return this['getDataValue']('action');}},'action':{'type':Sequelize[_0x32aa('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x32aa('0x4'),_0x32aa('0x5'),_0x32aa('0x6'),_0x32aa('0x7'),_0x32aa('0x8'),'browser',_0x32aa('0x9'),_0x32aa('0xa')]],'msg':_0x32aa('0xb')}},'comment':_0x32aa('0xb')},'data1':{'type':Sequelize[_0x32aa('0x3')](0x1000),'comment':_0x32aa('0xc')},'data2':{'type':Sequelize[_0x32aa('0x3')](0x1000),'comment':_0x32aa('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x32aa('0xe')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0x32aa('0xf')},'data5':{'type':Sequelize[_0x32aa('0x3')](0x1000),'comments':_0x32aa('0x10')},'data6':{'type':Sequelize[_0x32aa('0x3')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x32aa('0x11')],'comments':_0x32aa('0x12')}};
\ No newline at end of file
index db311cd..460efea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x934a=['count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','body','Action','find','params','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x934a,0xb8));var _0xa934=function(_0x237c45,_0x55cf99){_0x237c45=_0x237c45-0x0;var _0x2942f6=_0x934a[_0x237c45];return _0x2942f6;};'use strict';var emlformat=require(_0xa934('0x0'));var rimraf=require(_0xa934('0x1'));var zipdir=require(_0xa934('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa934('0x3'));var BPromise=require(_0xa934('0x4'));var Mustache=require(_0xa934('0x5'));var util=require(_0xa934('0x6'));var path=require(_0xa934('0x7'));var sox=require(_0xa934('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa934('0x9'));var squel=require('squel');var crypto=require(_0xa934('0xa'));var jsforce=require(_0xa934('0xb'));var deskjs=require(_0xa934('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa934('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa934('0xe'));var as=require(_0xa934('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa934('0x10'))(_0xa934('0x11'));var utils=require('../../config/utils');var config=require(_0xa934('0x12'));var licenseUtil=require(_0xa934('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x328042,_0x19ca58){_0x19ca58=_0x19ca58||0xcc;return function(_0x5e0930){if(_0x5e0930){return _0x328042['sendStatus'](_0x19ca58);}return _0x328042[_0xa934('0x14')](_0x19ca58)[_0xa934('0x15')]();};}function respondWithResult(_0x4b477d,_0x6e8476){_0x6e8476=_0x6e8476||0xc8;return function(_0x4f3ecd){if(_0x4f3ecd){return _0x4b477d[_0xa934('0x14')](_0x6e8476)[_0xa934('0x16')](_0x4f3ecd);}};}function respondWithFilteredResult(_0x1d7202,_0x397027){return function(_0x4eb72b){if(_0x4eb72b){var _0x14a6f6=typeof _0x397027[_0xa934('0x17')]==='undefined'&&typeof _0x397027[_0xa934('0x18')]===_0xa934('0x19');var _0x5e5e29=_0x4eb72b[_0xa934('0x1a')];var _0x5c126e=_0x14a6f6?0x0:_0x397027[_0xa934('0x17')];var _0x1709a2=_0x14a6f6?_0x4eb72b[_0xa934('0x1a')]:_0x397027[_0xa934('0x17')]+_0x397027[_0xa934('0x18')];var _0x42c5ec;if(_0x1709a2>=_0x5e5e29){_0x1709a2=_0x5e5e29;_0x42c5ec=0xc8;}else{_0x42c5ec=0xce;}_0x1d7202[_0xa934('0x14')](_0x42c5ec);return _0x1d7202[_0xa934('0x1b')](_0xa934('0x1c'),_0x5c126e+'-'+_0x1709a2+'/'+_0x5e5e29)[_0xa934('0x16')](_0x4eb72b);}return null;};}function patchUpdates(_0x550260){return function(_0x2962a8){try{jsonpatch[_0xa934('0x1d')](_0x2962a8,_0x550260,!![]);}catch(_0x458422){return BPromise[_0xa934('0x1e')](_0x458422);}return _0x2962a8[_0xa934('0x1f')]();};}function saveUpdates(_0x2bbe42,_0x3a6620){return function(_0x1f7e52){if(_0x1f7e52){return _0x1f7e52[_0xa934('0x20')](_0x2bbe42)['then'](function(_0x14aa1d){return _0x14aa1d;});}return null;};}function removeEntity(_0x53d5a4,_0x347859){return function(_0x4ee27){if(_0x4ee27){return _0x4ee27[_0xa934('0x21')]()[_0xa934('0x22')](function(){_0x53d5a4[_0xa934('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ff02a,_0x14927e){return function(_0x276429){if(!_0x276429){_0x1ff02a['sendStatus'](0x194);}return _0x276429;};}function handleError(_0x5098ee,_0x39ff23){_0x39ff23=_0x39ff23||0x1f4;return function(_0x550d08){logger[_0xa934('0x23')](_0x550d08['stack']);if(_0x550d08[_0xa934('0x24')]){delete _0x550d08[_0xa934('0x24')];}_0x5098ee[_0xa934('0x14')](_0x39ff23)['send'](_0x550d08);};}exports[_0xa934('0x20')]=function(_0x607455,_0x1bb89e){if(_0x607455[_0xa934('0x25')]['id']){delete _0x607455[_0xa934('0x25')]['id'];}return db[_0xa934('0x26')][_0xa934('0x27')]({'where':{'id':_0x607455[_0xa934('0x28')]['id']}})[_0xa934('0x22')](handleEntityNotFound(_0x1bb89e,null))[_0xa934('0x22')](saveUpdates(_0x607455[_0xa934('0x25')],null))[_0xa934('0x22')](respondWithResult(_0x1bb89e,null))[_0xa934('0x29')](handleError(_0x1bb89e,null));};exports[_0xa934('0x21')]=function(_0x228fa5,_0x1b0cf6){return db[_0xa934('0x26')][_0xa934('0x27')]({'where':{'id':_0x228fa5[_0xa934('0x28')]['id']}})['then'](handleEntityNotFound(_0x1b0cf6,null))[_0xa934('0x22')](removeEntity(_0x1b0cf6,null))['catch'](handleError(_0x1b0cf6,null));};
\ No newline at end of file
+var _0xbccd=['offset','set','Content-Range','reject','save','update','then','destroy','error','name','send','body','Action','find','params','catch','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count'];(function(_0x4e1a6e,_0x2162a0){var _0x5847c9=function(_0x112c9d){while(--_0x112c9d){_0x4e1a6e['push'](_0x4e1a6e['shift']());}};_0x5847c9(++_0x2162a0);}(_0xbccd,0x1a8));var _0xdbcc=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xbccd[_0x334841];return _0x5beb4b;};'use strict';var emlformat=require(_0xdbcc('0x0'));var rimraf=require(_0xdbcc('0x1'));var zipdir=require(_0xdbcc('0x2'));var jsonpatch=require(_0xdbcc('0x3'));var rp=require(_0xdbcc('0x4'));var moment=require(_0xdbcc('0x5'));var BPromise=require(_0xdbcc('0x6'));var Mustache=require(_0xdbcc('0x7'));var util=require(_0xdbcc('0x8'));var path=require(_0xdbcc('0x9'));var sox=require(_0xdbcc('0xa'));var csv=require(_0xdbcc('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdbcc('0xc'));var _=require(_0xdbcc('0xd'));var squel=require(_0xdbcc('0xe'));var crypto=require(_0xdbcc('0xf'));var jsforce=require(_0xdbcc('0x10'));var deskjs=require(_0xdbcc('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdbcc('0x12'));var Redis=require(_0xdbcc('0x13'));var authService=require(_0xdbcc('0x14'));var qs=require(_0xdbcc('0x15'));var as=require(_0xdbcc('0x16'));var hardwareService=require(_0xdbcc('0x17'));var logger=require('../../config/logger')(_0xdbcc('0x18'));var utils=require('../../config/utils');var config=require(_0xdbcc('0x19'));var licenseUtil=require(_0xdbcc('0x1a'));var db=require(_0xdbcc('0x1b'))['db'];function respondWithStatusCode(_0x46ee39,_0x4ec97a){_0x4ec97a=_0x4ec97a||0xcc;return function(_0x26a149){if(_0x26a149){return _0x46ee39[_0xdbcc('0x1c')](_0x4ec97a);}return _0x46ee39[_0xdbcc('0x1d')](_0x4ec97a)[_0xdbcc('0x1e')]();};}function respondWithResult(_0x9609f6,_0x465711){_0x465711=_0x465711||0xc8;return function(_0x9e07e0){if(_0x9e07e0){return _0x9609f6[_0xdbcc('0x1d')](_0x465711)[_0xdbcc('0x1f')](_0x9e07e0);}};}function respondWithFilteredResult(_0x49fa67,_0x1dbc01){return function(_0x11ec43){if(_0x11ec43){var _0x5d46eb=typeof _0x1dbc01['offset']===_0xdbcc('0x20')&&typeof _0x1dbc01[_0xdbcc('0x21')]===_0xdbcc('0x20');var _0x4a7926=_0x11ec43[_0xdbcc('0x22')];var _0x59d4fb=_0x5d46eb?0x0:_0x1dbc01['offset'];var _0x4b9176=_0x5d46eb?_0x11ec43[_0xdbcc('0x22')]:_0x1dbc01[_0xdbcc('0x23')]+_0x1dbc01[_0xdbcc('0x21')];var _0x23709f;if(_0x4b9176>=_0x4a7926){_0x4b9176=_0x4a7926;_0x23709f=0xc8;}else{_0x23709f=0xce;}_0x49fa67['status'](_0x23709f);return _0x49fa67[_0xdbcc('0x24')](_0xdbcc('0x25'),_0x59d4fb+'-'+_0x4b9176+'/'+_0x4a7926)[_0xdbcc('0x1f')](_0x11ec43);}return null;};}function patchUpdates(_0x3e1aa9){return function(_0x57c8c4){try{jsonpatch['apply'](_0x57c8c4,_0x3e1aa9,!![]);}catch(_0x142e97){return BPromise[_0xdbcc('0x26')](_0x142e97);}return _0x57c8c4[_0xdbcc('0x27')]();};}function saveUpdates(_0xde8726,_0x18126f){return function(_0x3ecfbb){if(_0x3ecfbb){return _0x3ecfbb[_0xdbcc('0x28')](_0xde8726)[_0xdbcc('0x29')](function(_0x280c4d){return _0x280c4d;});}return null;};}function removeEntity(_0xd41559,_0x1a7fa5){return function(_0x2ac5e2){if(_0x2ac5e2){return _0x2ac5e2[_0xdbcc('0x2a')]()['then'](function(){_0xd41559[_0xdbcc('0x1d')](0xcc)[_0xdbcc('0x1e')]();});}};}function handleEntityNotFound(_0xbe26d9,_0x50b3f9){return function(_0x186eb6){if(!_0x186eb6){_0xbe26d9[_0xdbcc('0x1c')](0x194);}return _0x186eb6;};}function handleError(_0x2fa0d5,_0x43e524){_0x43e524=_0x43e524||0x1f4;return function(_0x2c7fe3){logger[_0xdbcc('0x2b')](_0x2c7fe3['stack']);if(_0x2c7fe3[_0xdbcc('0x2c')]){delete _0x2c7fe3[_0xdbcc('0x2c')];}_0x2fa0d5[_0xdbcc('0x1d')](_0x43e524)[_0xdbcc('0x2d')](_0x2c7fe3);};}exports[_0xdbcc('0x28')]=function(_0x5cbf40,_0x20e0ba){if(_0x5cbf40[_0xdbcc('0x2e')]['id']){delete _0x5cbf40[_0xdbcc('0x2e')]['id'];}return db[_0xdbcc('0x2f')][_0xdbcc('0x30')]({'where':{'id':_0x5cbf40[_0xdbcc('0x31')]['id']}})[_0xdbcc('0x29')](handleEntityNotFound(_0x20e0ba,null))[_0xdbcc('0x29')](saveUpdates(_0x5cbf40[_0xdbcc('0x2e')],null))[_0xdbcc('0x29')](respondWithResult(_0x20e0ba,null))[_0xdbcc('0x32')](handleError(_0x20e0ba,null));};exports[_0xdbcc('0x2a')]=function(_0x5740a3,_0x1960cf){return db['Action'][_0xdbcc('0x30')]({'where':{'id':_0x5740a3['params']['id']}})[_0xdbcc('0x29')](handleEntityNotFound(_0x1960cf,null))[_0xdbcc('0x29')](removeEntity(_0x1960cf,null))[_0xdbcc('0x32')](handleError(_0x1960cf,null));};
\ No newline at end of file
index 8161d34..39e6158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x061a=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./action.attributes','define','Action','tools_actions','lodash','util'];(function(_0x2659fa,_0x2e3c1f){var _0x1b6031=function(_0x383ef0){while(--_0x383ef0){_0x2659fa['push'](_0x2659fa['shift']());}};_0x1b6031(++_0x2e3c1f);}(_0x061a,0x18a));var _0xa061=function(_0x489085,_0x3a6fc9){_0x489085=_0x489085-0x0;var _0x264899=_0x061a[_0x489085];return _0x264899;};'use strict';var _=require(_0xa061('0x0'));var util=require(_0xa061('0x1'));var logger=require(_0xa061('0x2'))(_0xa061('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa061('0x4'));var fs=require('fs');var path=require(_0xa061('0x5'));var rimraf=require(_0xa061('0x6'));var config=require(_0xa061('0x7'));var attributes=require(_0xa061('0x8'));module['exports']=function(_0x1bab14,_0x56aa61){return _0x1bab14[_0xa061('0x9')](_0xa061('0xa'),attributes,{'tableName':_0xa061('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe04a=['path','rimraf','../../config/environment','exports','define','Action','tools_actions','lodash','../../config/logger','api','moment','bluebird'];(function(_0x30012a,_0x2611b3){var _0x93a715=function(_0x7a91ff){while(--_0x7a91ff){_0x30012a['push'](_0x30012a['shift']());}};_0x93a715(++_0x2611b3);}(_0xe04a,0x10f));var _0xae04=function(_0x5bec69,_0x28ddf5){_0x5bec69=_0x5bec69-0x0;var _0x15d362=_0xe04a[_0x5bec69];return _0x15d362;};'use strict';var _=require(_0xae04('0x0'));var util=require('util');var logger=require(_0xae04('0x1'))(_0xae04('0x2'));var moment=require(_0xae04('0x3'));var BPromise=require(_0xae04('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xae04('0x5'));var rimraf=require(_0xae04('0x6'));var config=require(_0xae04('0x7'));var attributes=require('./action.attributes');module[_0xae04('0x8')]=function(_0x29ea68,_0x4231a6){return _0x29ea68[_0xae04('0x9')](_0xae04('0xa'),attributes,{'tableName':_0xae04('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de18216..34f1668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['request','then','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x455638,_0x2e725b){var _0x3a4c6c=function(_0x32fc4b){while(--_0x32fc4b){_0x455638['push'](_0x455638['shift']());}};_0x3a4c6c(++_0x2e725b);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x570b34,_0x537c5c){_0x570b34=_0x570b34-0x0;var _0x325f61=_0x7fbe[_0x570b34];return _0x325f61;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ 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(_0x91aa06,_0x2d2a2d){var _0x533ff6=function(_0x4cdd8d){while(--_0x4cdd8d){_0x91aa06['push'](_0x91aa06['shift']());}};_0x533ff6(++_0x2d2a2d);}(_0x1261,0x144));var _0x1126=function(_0x83d08e,_0x228942){_0x83d08e=_0x83d08e-0x0;var _0x404d4f=_0x1261[_0x83d08e];return _0x404d4f;};'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 c793749..3b6940e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f28=['put','isAuthenticated','update','delete','/:id','destroy','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./action.controller'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x3f28,0x12c));var _0x83f2=function(_0x78b565,_0x37aaf4){_0x78b565=_0x78b565-0x0;var _0x2244ac=_0x3f28[_0x78b565];return _0x2244ac;};'use strict';var multer=require(_0x83f2('0x0'));var util=require('util');var path=require(_0x83f2('0x1'));var timeout=require(_0x83f2('0x2'));var express=require(_0x83f2('0x3'));var router=express[_0x83f2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x83f2('0x5'));var config=require(_0x83f2('0x6'));var controller=require(_0x83f2('0x7'));router[_0x83f2('0x8')]('/:id',auth[_0x83f2('0x9')](),controller[_0x83f2('0xa')]);router[_0x83f2('0xb')](_0x83f2('0xc'),auth[_0x83f2('0x9')](),controller[_0x83f2('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x06bf=['../../components/auth/service','../../components/interaction/service','./action.controller','put','isAuthenticated','delete','/:id','destroy','exports','multer','path','connect-timeout','fs-extra'];(function(_0x20cbda,_0x279512){var _0xdcdea0=function(_0x504472){while(--_0x504472){_0x20cbda['push'](_0x20cbda['shift']());}};_0xdcdea0(++_0x279512);}(_0x06bf,0x98));var _0xf06b=function(_0x15ec5e,_0x14a486){_0x15ec5e=_0x15ec5e-0x0;var _0xfcac72=_0x06bf[_0x15ec5e];return _0xfcac72;};'use strict';var multer=require(_0xf06b('0x0'));var util=require('util');var path=require(_0xf06b('0x1'));var timeout=require(_0xf06b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf06b('0x3'));var auth=require(_0xf06b('0x4'));var interaction=require(_0xf06b('0x5'));var config=require('../../config/environment');var controller=require(_0xf06b('0x6'));router[_0xf06b('0x7')]('/:id',auth[_0xf06b('0x8')](),controller['update']);router[_0xf06b('0x9')](_0xf06b('0xa'),auth[_0xf06b('0x8')](),controller[_0xf06b('0xb')]);module[_0xf06b('0xc')]=router;
\ No newline at end of file
index e132574..160c27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x21065c,_0x23839c){var _0x3500c0=function(_0x59c477){while(--_0x59c477){_0x21065c['push'](_0x21065c['shift']());}};_0x3500c0(++_0x23839c);}(_0xf494,0x1c6));var _0x4f49=function(_0x32efb7,_0x460fee){_0x32efb7=_0x32efb7-0x0;var _0x310d09=_0xf494[_0x32efb7];return _0x310d09;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4f49('0x2')]},'table':{'type':Sequelize[_0x4f49('0x2')]},'conditions':{'type':Sequelize[_0x4f49('0x3')]},'joins':{'type':Sequelize[_0x4f49('0x3')]}};
\ No newline at end of file
+var _0x687b=['STRING','TEXT','sequelize','exports'];(function(_0x186222,_0x3bdfb0){var _0x226a38=function(_0x3b071f){while(--_0x3b071f){_0x186222['push'](_0x186222['shift']());}};_0x226a38(++_0x3bdfb0);}(_0x687b,0x14a));var _0xb687=function(_0x5ebcc4,_0x24356a){_0x5ebcc4=_0x5ebcc4-0x0;var _0xff2552=_0x687b[_0x5ebcc4];return _0xff2552;};'use strict';var Sequelize=require(_0xb687('0x0'));module[_0xb687('0x1')]={'name':{'type':Sequelize[_0xb687('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb687('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xb687('0x3')]},'joins':{'type':Sequelize[_0xb687('0x3')]}};
\ No newline at end of file
index dd3e41a..cf598af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf90=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','index','AnalyticCustomReport','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','findAll','rows','catch','params','includeAll','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','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','length','group','field','condition','getFields','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','from','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','joins','parse','includes','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','parentKey','conditions','clone','toString','sequelize','GROUP_CONCAT(%s)','DATE(%s)','ROUND(%s)','IS\x20NULL','IS\x20EMPTY','operator','value','Please\x20insert\x20at\x20least\x20one\x20field','select','alias','web','fullPath','%s-%s.%s','randomstring','generate','output','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','savename','countTable','COUNT(*)','SELECT','run','COUNT(DISTINCT\x20%s)','debug','QueryTypes','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','to-csv','fs-extra','lodash','squel','desk.js'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xaf90,0x93));var _0x0af9=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xaf90[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0x0af9('0x0'));var rimraf=require(_0x0af9('0x1'));var zipdir=require(_0x0af9('0x2'));var jsonpatch=require(_0x0af9('0x3'));var rp=require(_0x0af9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0af9('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x0af9('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0af9('0x7'));var _=require(_0x0af9('0x8'));var squel=require(_0x0af9('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0af9('0xa'));var toCsv=require(_0x0af9('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0af9('0xb'));var authService=require(_0x0af9('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x0af9('0xd'));var hardwareService=require(_0x0af9('0xe'));var logger=require(_0x0af9('0xf'))('api');var utils=require(_0x0af9('0x10'));var config=require(_0x0af9('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var dbH=require(_0x0af9('0x12'))['dbH'];function respondWithStatusCode(_0x8f63f9,_0x2398f4){_0x2398f4=_0x2398f4||0xcc;return function(_0x641137){if(_0x641137){return _0x8f63f9[_0x0af9('0x13')](_0x2398f4);}return _0x8f63f9[_0x0af9('0x14')](_0x2398f4)['end']();};}function respondWithResult(_0x539b21,_0x4df13f){_0x4df13f=_0x4df13f||0xc8;return function(_0x4108a4){if(_0x4108a4){return _0x539b21['status'](_0x4df13f)[_0x0af9('0x15')](_0x4108a4);}};}function respondWithFilteredResult(_0x165284,_0x5ae60e){return function(_0x428455){if(_0x428455){var _0x38cc7b=typeof _0x5ae60e[_0x0af9('0x16')]===_0x0af9('0x17')&&typeof _0x5ae60e[_0x0af9('0x18')]===_0x0af9('0x17');var _0x5710f1=_0x428455[_0x0af9('0x19')];var _0x33e858=_0x38cc7b?0x0:_0x5ae60e[_0x0af9('0x16')];var _0x5a1d43=_0x38cc7b?_0x428455[_0x0af9('0x19')]:_0x5ae60e['offset']+_0x5ae60e[_0x0af9('0x18')];var _0x583ffa;if(_0x5a1d43>=_0x5710f1){_0x5a1d43=_0x5710f1;_0x583ffa=0xc8;}else{_0x583ffa=0xce;}_0x165284['status'](_0x583ffa);return _0x165284['set'](_0x0af9('0x1a'),_0x33e858+'-'+_0x5a1d43+'/'+_0x5710f1)[_0x0af9('0x15')](_0x428455);}return null;};}function patchUpdates(_0x326e21){return function(_0x55f70d){try{jsonpatch[_0x0af9('0x1b')](_0x55f70d,_0x326e21,!![]);}catch(_0x1d1250){return BPromise[_0x0af9('0x1c')](_0x1d1250);}return _0x55f70d[_0x0af9('0x1d')]();};}function saveUpdates(_0x1e3de9,_0x459f52){return function(_0x2ea407){if(_0x2ea407){return _0x2ea407[_0x0af9('0x1e')](_0x1e3de9)[_0x0af9('0x1f')](function(_0x5d70f7){return _0x5d70f7;});}return null;};}function removeEntity(_0x348096,_0x8eaf81){return function(_0x1a7ed9){if(_0x1a7ed9){return _0x1a7ed9[_0x0af9('0x20')]()[_0x0af9('0x1f')](function(){var _0x1114a4=_0x1a7ed9[_0x0af9('0x21')]({'plain':!![]});var _0xbc5d7d=_0x0af9('0x22');return db[_0x0af9('0x23')][_0x0af9('0x20')]({'where':{'type':_0xbc5d7d,'resourceId':_0x1114a4['id']}})[_0x0af9('0x1f')](function(){return _0x1a7ed9;});})['then'](function(){_0x348096[_0x0af9('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ab5d3,_0x32ffcc){return function(_0x42af1c){if(!_0x42af1c){_0x4ab5d3[_0x0af9('0x13')](0x194);}return _0x42af1c;};}function handleError(_0x15a5ce,_0x5baa84){_0x5baa84=_0x5baa84||0x1f4;return function(_0x1a8d1f){logger[_0x0af9('0x24')](_0x1a8d1f[_0x0af9('0x25')]);if(_0x1a8d1f[_0x0af9('0x26')]){delete _0x1a8d1f[_0x0af9('0x26')];}_0x15a5ce['status'](_0x5baa84)[_0x0af9('0x27')](_0x1a8d1f);};}exports[_0x0af9('0x28')]=function(_0x4a7d86,_0x5a2bf0){var _0x40f5bf={},_0x26e8ea={},_0x2f4ea0={'count':0x0,'rows':[]};var _0x29e292=_['map'](db[_0x0af9('0x29')][_0x0af9('0x2a')],function(_0x48874b){return{'name':_0x48874b['fieldName'],'type':_0x48874b[_0x0af9('0x2b')]['key']};});_0x26e8ea[_0x0af9('0x2c')]=_[_0x0af9('0x2d')](_0x29e292,_0x0af9('0x26'));_0x26e8ea[_0x0af9('0x2e')]=_[_0x0af9('0x2f')](_0x4a7d86[_0x0af9('0x2e')]);_0x26e8ea[_0x0af9('0x30')]=_[_0x0af9('0x31')](_0x26e8ea['model'],_0x26e8ea[_0x0af9('0x2e')]);_0x40f5bf[_0x0af9('0x32')]=_[_0x0af9('0x31')](_0x26e8ea[_0x0af9('0x2c')],qs[_0x0af9('0x33')](_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x33')]));_0x40f5bf[_0x0af9('0x32')]=_0x40f5bf[_0x0af9('0x32')]['length']?_0x40f5bf['attributes']:_0x26e8ea[_0x0af9('0x2c')];if(!_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x34')]('nolimit')){_0x40f5bf['limit']=qs[_0x0af9('0x18')](_0x4a7d86['query'][_0x0af9('0x18')]);_0x40f5bf['offset']=qs[_0x0af9('0x16')](_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x16')]);}_0x40f5bf[_0x0af9('0x35')]=qs['sort'](_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x36')]);_0x40f5bf[_0x0af9('0x37')]=qs[_0x0af9('0x30')](_[_0x0af9('0x38')](_0x4a7d86['query'],_0x26e8ea[_0x0af9('0x30')]),_0x29e292);if(_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x39')]){_0x40f5bf['where']=_[_0x0af9('0x3a')](_0x40f5bf[_0x0af9('0x37')],{'$or':_['map'](_0x29e292,function(_0x3222e5){if(_0x3222e5[_0x0af9('0x2b')]!=='VIRTUAL'){var _0x11ddeb={};_0x11ddeb[_0x3222e5[_0x0af9('0x26')]]={'$like':'%'+_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x39')]+'%'};return _0x11ddeb;}})});}_0x40f5bf=_[_0x0af9('0x3a')]({},_0x40f5bf,_0x4a7d86[_0x0af9('0x3b')]);var _0x3548f9={'where':_0x40f5bf[_0x0af9('0x37')]};return db[_0x0af9('0x29')][_0x0af9('0x19')](_0x3548f9)[_0x0af9('0x1f')](function(_0x4c70e1){_0x2f4ea0[_0x0af9('0x19')]=_0x4c70e1;if(_0x4a7d86[_0x0af9('0x2e')]['includeAll']){_0x40f5bf['include']=[{'all':!![]}];}return db[_0x0af9('0x29')][_0x0af9('0x3c')](_0x40f5bf);})['then'](function(_0x56b7af){_0x2f4ea0[_0x0af9('0x3d')]=_0x56b7af;return _0x2f4ea0;})[_0x0af9('0x1f')](respondWithFilteredResult(_0x5a2bf0,_0x40f5bf))[_0x0af9('0x3e')](handleError(_0x5a2bf0,null));};exports['show']=function(_0x318e6a,_0x5b0239){var _0x2ddd0b={'raw':![],'where':{'id':_0x318e6a[_0x0af9('0x3f')]['id']}},_0x114118={};_0x114118['model']=_[_0x0af9('0x2f')](db['AnalyticCustomReport']['rawAttributes']);_0x114118['query']=_[_0x0af9('0x2f')](_0x318e6a[_0x0af9('0x2e')]);_0x114118['filters']=_[_0x0af9('0x31')](_0x114118[_0x0af9('0x2c')],_0x114118[_0x0af9('0x2e')]);_0x2ddd0b['attributes']=_[_0x0af9('0x31')](_0x114118[_0x0af9('0x2c')],qs[_0x0af9('0x33')](_0x318e6a[_0x0af9('0x2e')][_0x0af9('0x33')]));_0x2ddd0b[_0x0af9('0x32')]=_0x2ddd0b['attributes']['length']?_0x2ddd0b[_0x0af9('0x32')]:_0x114118[_0x0af9('0x2c')];if(_0x318e6a[_0x0af9('0x2e')][_0x0af9('0x40')]){_0x2ddd0b[_0x0af9('0x41')]=[{'all':!![]}];}_0x2ddd0b=_[_0x0af9('0x3a')]({},_0x2ddd0b,_0x318e6a[_0x0af9('0x3b')]);return db[_0x0af9('0x29')][_0x0af9('0x42')](_0x2ddd0b)['then'](handleEntityNotFound(_0x5b0239,null))[_0x0af9('0x1f')](respondWithResult(_0x5b0239,null))['catch'](handleError(_0x5b0239,null));};exports[_0x0af9('0x43')]=function(_0x4a245a,_0x2def50){return db[_0x0af9('0x29')][_0x0af9('0x43')](_0x4a245a[_0x0af9('0x44')],{})[_0x0af9('0x1f')](function(_0x178190){var _0x507268=_0x4a245a[_0x0af9('0x45')][_0x0af9('0x21')]({'plain':!![]});if(!_0x507268)throw new Error(_0x0af9('0x46'));if(_0x507268[_0x0af9('0x47')]===_0x0af9('0x45')){var _0x439a57=_0x178190[_0x0af9('0x21')]({'plain':!![]});var _0x1320e6='Reports';return db[_0x0af9('0x48')][_0x0af9('0x42')]({'where':{'name':_0x1320e6,'userProfileId':_0x507268[_0x0af9('0x49')]},'raw':!![]})[_0x0af9('0x1f')](function(_0x3bf46a){if(_0x3bf46a&&_0x3bf46a[_0x0af9('0x4a')]===0x0){return db[_0x0af9('0x23')]['create']({'name':_0x439a57[_0x0af9('0x26')],'resourceId':_0x439a57['id'],'type':_0x0af9('0x22'),'sectionId':_0x3bf46a['id']},{})[_0x0af9('0x1f')](function(){return _0x178190;});}else{return _0x178190;}})[_0x0af9('0x3e')](function(_0x46e2cc){logger[_0x0af9('0x24')](_0x0af9('0x4b'),_0x46e2cc);throw _0x46e2cc;});}return _0x178190;})[_0x0af9('0x1f')](respondWithResult(_0x2def50,0xc9))['catch'](handleError(_0x2def50,null));};exports[_0x0af9('0x1e')]=function(_0x3ec7e5,_0x2981bc){if(_0x3ec7e5['body']['id']){delete _0x3ec7e5[_0x0af9('0x44')]['id'];}return db[_0x0af9('0x29')][_0x0af9('0x42')]({'where':{'id':_0x3ec7e5[_0x0af9('0x3f')]['id']}})[_0x0af9('0x1f')](handleEntityNotFound(_0x2981bc,null))[_0x0af9('0x1f')](saveUpdates(_0x3ec7e5[_0x0af9('0x44')],null))[_0x0af9('0x1f')](respondWithResult(_0x2981bc,null))[_0x0af9('0x3e')](handleError(_0x2981bc,null));};exports[_0x0af9('0x20')]=function(_0x22e484,_0x4c1e22){return db[_0x0af9('0x29')][_0x0af9('0x42')]({'where':{'id':_0x22e484['params']['id']}})[_0x0af9('0x1f')](handleEntityNotFound(_0x4c1e22,null))[_0x0af9('0x1f')](removeEntity(_0x4c1e22,null))[_0x0af9('0x3e')](handleError(_0x4c1e22,null));};exports['preview']=function(_0x2afc93,_0x3db1cd){var _0x5aab5d=0xa;var _0x305e02=[_0x0af9('0x4c'),_0x0af9('0x4d'),_0x0af9('0x4e'),_0x0af9('0x4f')];var _0x160f6f={'SUM':_0x0af9('0x50'),'COUNT':_0x0af9('0x51'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x0af9('0x52'),'MIN':_0x0af9('0x53'),'AVG':_0x0af9('0x54'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x0af9('0x55'),'GROUP_CONCAT DESC':_0x0af9('0x56')};var _0x2b4d73={'SEC_TO_TIME':_0x0af9('0x57'),'DATE':'DATE(%s)','HOUR':_0x0af9('0x58'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0af9('0x59')};var _0x5a4bcc=function(_0x2e6929){return!_['includes'](['IS\x20NULL',_0x0af9('0x5a'),'IS\x20EMPTY',_0x0af9('0x5b')],_0x2e6929);};var _0x552e86=function(_0x2e4d3b){if(!_0x2e4d3b||!_0x2e4d3b[_0x0af9('0x5c')]['length']){return'';}for(var _0x19ef09='(',_0x2385fd=0x0;_0x2385fd<_0x2e4d3b[_0x0af9('0x5c')][_0x0af9('0x5d')];_0x2385fd+=0x1){_0x2385fd>0x0&&(_0x19ef09+='\x20'+_0x2e4d3b['operator']+'\x20');_0x19ef09+=_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x5e')]?_0x552e86(_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x5e')]):_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x5f')]+'\x20'+_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x60')]+(_0x5a4bcc(_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x60')])?'\x20'+_0x2e4d3b['rules'][_0x2385fd]['value']:'');}return _0x19ef09+')';};var _0x2b9bc6={'where':{'id':_0x2afc93[_0x0af9('0x3f')]['id']}},_0x1e264b,_0x4c433b,_0x42d841,_0x1d709a,_0x68077d;_0x2b9bc6=_[_0x0af9('0x3a')]({},_0x2b9bc6,_0x2afc93[_0x0af9('0x3b')]);return db['AnalyticCustomReport'][_0x0af9('0x42')](_0x2b9bc6)[_0x0af9('0x1f')](function(_0x3c6b44){if(_0x3c6b44){_0x1e264b=_0x3c6b44;return _0x3c6b44[_0x0af9('0x61')]();}return null;})[_0x0af9('0x1f')](function(_0x379271){if(_0x379271){if(!_0x379271[_0x0af9('0x5d')]){throw new db[(_0x0af9('0x62'))][(_0x0af9('0x63'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4c433b=_0x379271;return db[_0x0af9('0x64')]['findAll']({'raw':!![]});}return null;})[_0x0af9('0x1f')](function(_0x4d620d){if(_0x4d620d){_0x42d841=_[_0x0af9('0x65')](_0x4d620d,'id');var _0x1b3ceb;var _0x28d327=squel['select']();_0x28d327[_0x0af9('0x66')](_0x1e264b['table']);for(var _0x55b727=0x0;_0x55b727<_0x4c433b[_0x0af9('0x5d')];_0x55b727+=0x1){_0x1b3ceb=_0x4c433b[_0x55b727][_0x0af9('0x67')]?_0x42d841[_0x4c433b[_0x55b727][_0x0af9('0x67')]][_0x0af9('0x68')]:_0x4c433b[_0x55b727]['field'];_0x1b3ceb=_0x4c433b[_0x55b727][_0x0af9('0x69')]?_[_0x0af9('0x6a')](_0x160f6f[_0x4c433b[_0x55b727][_0x0af9('0x69')]],'%s',_0x1b3ceb):_0x1b3ceb;_0x1b3ceb=_0x4c433b[_0x55b727]['format']?_[_0x0af9('0x6a')](_0x2b4d73[_0x4c433b[_0x55b727][_0x0af9('0x6b')]],'%s',_0x1b3ceb):_0x1b3ceb;if(_0x4c433b[_0x55b727][_0x0af9('0x6c')]){_0x28d327['group'](_0x1b3ceb);}_0x4c433b[_0x55b727][_0x0af9('0x6d')]&&_0x28d327[_0x0af9('0x35')](_0x1b3ceb,_0x4c433b[_0x55b727][_0x0af9('0x6d')]===_0x0af9('0x6e')?![]:!![]);_0x28d327['field'](_0x1b3ceb,_0x4c433b[_0x55b727]['alias']||_0x1b3ceb);}if(_0x1e264b['joins']){_0x1e264b[_0x0af9('0x6f')]=JSON[_0x0af9('0x70')](_0x1e264b[_0x0af9('0x6f')]);for(var _0x4e9707=0x0;_0x4e9707<_0x1e264b[_0x0af9('0x6f')][_0x0af9('0x5d')];_0x4e9707+=0x1){if(_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x2b')]&&_[_0x0af9('0x71')](_0x305e02,_0x1e264b['joins'][_0x4e9707][_0x0af9('0x2b')])&&_0x1e264b['joins'][_0x4e9707]['parentKey']&&_0x1e264b['joins'][_0x4e9707][_0x0af9('0x72')]&&_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x73')]){_0x28d327[_0x1e264b[_0x0af9('0x6f')][_0x4e9707]['type']](_0x1e264b[_0x0af9('0x6f')][_0x4e9707]['foreignTable'],null,util[_0x0af9('0x6b')](_0x0af9('0x74'),_0x1e264b[_0x0af9('0x75')],_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x76')],_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x72')],_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x73')]));}}}if(_0x1e264b['conditions']){_0x1e264b[_0x0af9('0x77')]=JSON['parse'](_0x1e264b['conditions']);_0x28d327[_0x0af9('0x37')](_0x552e86(_0x1e264b[_0x0af9('0x77')]['group']));}_0x68077d=_0x28d327[_0x0af9('0x78')]();_0x28d327[_0x0af9('0x18')](_0x5aab5d);_0x28d327[_0x0af9('0x16')](0x0);logger['debug']('Limited\x20Query:',_0x28d327[_0x0af9('0x79')]());return dbH[_0x0af9('0x7a')]['query'](_0x28d327[_0x0af9('0x79')](),{'type':dbH[_0x0af9('0x7a')]['QueryTypes']['SELECT']});}})[_0x0af9('0x1f')](respondWithResult(_0x3db1cd,null))[_0x0af9('0x3e')](handleError(_0x3db1cd,null));};function runReport(_0x3aa6d2,_0x1344b7,_0x45f2cd){var _0x44de6a=_0x1344b7['name'];var _0x3ed1a2=0xa;var _0x51e6b2=[_0x0af9('0x4c'),_0x0af9('0x4d'),_0x0af9('0x4e'),_0x0af9('0x4f')];var _0x10e62a={'SUM':_0x0af9('0x50'),'COUNT':_0x0af9('0x51'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x0af9('0x52'),'MIN':_0x0af9('0x53'),'AVG':_0x0af9('0x54'),'GROUP_CONCAT':_0x0af9('0x7b'),'GROUP_CONCAT ASC':_0x0af9('0x55'),'GROUP_CONCAT DESC':_0x0af9('0x56')};var _0x51cca0={'SEC_TO_TIME':_0x0af9('0x57'),'DATE':_0x0af9('0x7c'),'HOUR':'HOUR(%s)','ROUND':_0x0af9('0x7d'),'UNIX_TIMESTAMP':_0x0af9('0x59')};var _0x4eaf16=function(_0xd0c45f){return!_['includes']([_0x0af9('0x7e'),_0x0af9('0x5a'),_0x0af9('0x7f'),_0x0af9('0x5b')],_0xd0c45f);};var _0x7ccd4f=function(_0x2d9509){if(!_0x2d9509||!_0x2d9509['rules'][_0x0af9('0x5d')]){return'';}for(var _0x48c10b='(',_0x4efffa=0x0;_0x4efffa<_0x2d9509[_0x0af9('0x5c')]['length'];_0x4efffa+=0x1){_0x4efffa>0x0&&(_0x48c10b+='\x20'+_0x2d9509[_0x0af9('0x80')]+'\x20');_0x48c10b+=_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x5e')]?_0x7ccd4f(_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x5e')]):_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x5f')]+'\x20'+_0x2d9509[_0x0af9('0x5c')][_0x4efffa]['condition']+(_0x4eaf16(_0x2d9509['rules'][_0x4efffa][_0x0af9('0x60')])?'\x20'+_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x81')]:'');}return _0x48c10b+')';};var _0x2b6db2={'where':{'id':_0x3aa6d2['id']}},_0x3fe561,_0x35f550,_0x2e80d3,_0x88c0a3,_0x362f22;_0x2b6db2=_['merge']({},_0x2b6db2,_0x45f2cd);return db[_0x0af9('0x29')]['find'](_0x2b6db2)[_0x0af9('0x1f')](function(_0x4f7f4e){if(_0x4f7f4e){_0x3fe561=_0x4f7f4e;return _0x4f7f4e[_0x0af9('0x61')]();}return null;})[_0x0af9('0x1f')](function(_0x33fa4b){if(_0x33fa4b){if(!_0x33fa4b[_0x0af9('0x5d')]){throw new db[(_0x0af9('0x62'))][(_0x0af9('0x63'))](_0x0af9('0x82'),0x193);}_0x35f550=_0x33fa4b;return db[_0x0af9('0x64')]['findAll']({'raw':!![]});}return null;})[_0x0af9('0x1f')](function(_0x1d6e59){if(_0x1d6e59){_0x2e80d3=_['keyBy'](_0x1d6e59,'id');var _0xb2587c;var _0x3ebe5e=squel[_0x0af9('0x83')]();_0x3ebe5e[_0x0af9('0x66')](_0x3fe561[_0x0af9('0x75')]);for(var _0x697ddf=0x0;_0x697ddf<_0x35f550['length'];_0x697ddf+=0x1){_0xb2587c=_0x35f550[_0x697ddf]['MetricId']?_0x2e80d3[_0x35f550[_0x697ddf][_0x0af9('0x67')]][_0x0af9('0x68')]:_0x35f550[_0x697ddf][_0x0af9('0x5f')];_0xb2587c=_0x35f550[_0x697ddf]['function']?_[_0x0af9('0x6a')](_0x10e62a[_0x35f550[_0x697ddf][_0x0af9('0x69')]],'%s',_0xb2587c):_0xb2587c;_0xb2587c=_0x35f550[_0x697ddf][_0x0af9('0x6b')]?_[_0x0af9('0x6a')](_0x51cca0[_0x35f550[_0x697ddf]['format']],'%s',_0xb2587c):_0xb2587c;if(_0x35f550[_0x697ddf][_0x0af9('0x6c')]){_0x3ebe5e['group'](_0xb2587c);}_0x35f550[_0x697ddf][_0x0af9('0x6d')]&&_0x3ebe5e[_0x0af9('0x35')](_0xb2587c,_0x35f550[_0x697ddf][_0x0af9('0x6d')]==='DESC'?![]:!![]);_0x3ebe5e[_0x0af9('0x5f')](_0xb2587c,_0x35f550[_0x697ddf][_0x0af9('0x84')]||_0xb2587c);}if(_0x3fe561[_0x0af9('0x6f')]){_0x3fe561[_0x0af9('0x6f')]=JSON[_0x0af9('0x70')](_0x3fe561['joins']);for(var _0x2859d8=0x0;_0x2859d8<_0x3fe561['joins'][_0x0af9('0x5d')];_0x2859d8+=0x1){if(_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x2b')]&&_[_0x0af9('0x71')](_0x51e6b2,_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x2b')])&&_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x76')]&&_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x72')]&&_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x73')]){_0x3ebe5e[_0x3fe561['joins'][_0x2859d8][_0x0af9('0x2b')]](_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x72')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3fe561[_0x0af9('0x75')],_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x76')],_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x72')],_0x3fe561['joins'][_0x2859d8][_0x0af9('0x73')]));}}}if(_0x3fe561['conditions']){_0x3fe561[_0x0af9('0x77')]=JSON[_0x0af9('0x70')](_0x3fe561[_0x0af9('0x77')]);_0x3ebe5e['where'](_0x7ccd4f(_0x3fe561['conditions'][_0x0af9('0x5e')]));}_0x362f22=_0x3ebe5e['clone']();_0x3ebe5e[_0x0af9('0x18')](_0x3ed1a2);_0x3ebe5e['offset'](0x0);return;}})[_0x0af9('0x1f')](function(){if(_0x1344b7['output']===_0x0af9('0x85')){return null;}var _0x23ac14=_['merge'](_0x1344b7,{'name':_0x1344b7[_0x0af9('0x86')]||_0x1344b7[_0x0af9('0x26')]||_0x3fe561['name'],'basename':_0x44de6a,'savename':util[_0x0af9('0x6b')](_0x0af9('0x87'),_0x1344b7[_0x0af9('0x26')]||_0x3fe561['name'],require(_0x0af9('0x88'))[_0x0af9('0x89')](0x4),_0x1344b7[_0x0af9('0x8a')]||'csv'),'reportId':_0x3fe561['id'],'reportType':_0x0af9('0x8b')});return db[_0x0af9('0x8c')]['create'](_0x23ac14,{'raw':!![]});})[_0x0af9('0x1f')](function(_0x114ba1){if(_0x3fe561[_0x0af9('0x75')]===_0x0af9('0x8d')){_0x362f22[_0x0af9('0x37')](_0x3fe561['table']+_0x0af9('0x8e'),_0x1344b7[_0x0af9('0x8f')],_0x1344b7[_0x0af9('0x90')]);}else{_0x362f22['where'](_0x3fe561[_0x0af9('0x75')]+_0x0af9('0x91'),_0x1344b7[_0x0af9('0x8f')],_0x1344b7[_0x0af9('0x90')]);}if(_0x114ba1){logger[_0x0af9('0x92')](_0x0af9('0x93'),_0x362f22[_0x0af9('0x79')]());require(_0x0af9('0x94'))['fork'](path['join'](__dirname,_0x0af9('0x95'),_0x114ba1[_0x0af9('0x8a')]),[_0x114ba1['id'],_0x362f22['toString'](),path['join'](__dirname,'../../files/reports',_0x114ba1[_0x0af9('0x96')]),_0x44de6a]);return _0x114ba1;}else{var _0x32710f=squel[_0x0af9('0x83')]();_0x32710f[_0x0af9('0x66')]('('+_0x362f22['toString']()+')',_0x0af9('0x97'));_0x32710f[_0x0af9('0x5f')](_0x0af9('0x98'),_0x0af9('0x19'));_0x362f22['limit'](_0x1344b7[_0x0af9('0x18')]||_0x3ed1a2);_0x362f22[_0x0af9('0x16')](_0x1344b7[_0x0af9('0x16')]||0x0);return dbH[_0x0af9('0x7a')][_0x0af9('0x2e')](_0x32710f[_0x0af9('0x79')](),{'type':dbH[_0x0af9('0x7a')]['QueryTypes'][_0x0af9('0x99')]})[_0x0af9('0x1f')](function(_0x506a10){if(!_0x506a10[_0x0af9('0x5d')]){_0x88c0a3=0x0;}else{_0x88c0a3=_0x506a10[0x0]['count']||0x0;}return dbH['sequelize'][_0x0af9('0x2e')](_0x362f22[_0x0af9('0x79')](),{'type':dbH['sequelize']['QueryTypes'][_0x0af9('0x99')]});})[_0x0af9('0x1f')](function(_0x96eccc){return{'rows':_0x96eccc||[],'count':_0x88c0a3};});}});}exports[_0x0af9('0x9a')]=function(_0x4b9135,_0x554b9d){return runReport(_0x4b9135[_0x0af9('0x3f')],_0x4b9135[_0x0af9('0x2e')],_0x4b9135[_0x0af9('0x3b')])[_0x0af9('0x1f')](respondWithResult(_0x554b9d,null))[_0x0af9('0x3e')](handleError(_0x554b9d,null));};exports['runReport']=runReport;exports[_0x0af9('0x2e')]=function(_0x5fbae8,_0x1f1948){var _0x169164=0xa;var _0xc0df80=[_0x0af9('0x4c'),'left_join',_0x0af9('0x4e'),_0x0af9('0x4f')];var _0x2ad23a={'SUM':_0x0af9('0x50'),'COUNT':_0x0af9('0x51'),'COUNT DISTINCT':_0x0af9('0x9b'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x0af9('0x7b'),'GROUP_CONCAT ASC':_0x0af9('0x55'),'GROUP_CONCAT DESC':_0x0af9('0x56')};var _0x4e3fba={'SEC_TO_TIME':_0x0af9('0x57'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x0af9('0x7d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5afe6d=function(_0x5e9eb3){return!_[_0x0af9('0x71')]([_0x0af9('0x7e'),_0x0af9('0x5a'),_0x0af9('0x7f'),_0x0af9('0x5b')],_0x5e9eb3);};var _0x4efad2=function(_0x1b6d20){if(!_0x1b6d20||!_0x1b6d20['rules']['length']){return'';}for(var _0x2a9679='(',_0x484766=0x0;_0x484766<_0x1b6d20['rules'][_0x0af9('0x5d')];_0x484766+=0x1){_0x484766>0x0&&(_0x2a9679+='\x20'+_0x1b6d20['operator']+'\x20');_0x2a9679+=_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x5e')]?_0x4efad2(_0x1b6d20[_0x0af9('0x5c')][_0x484766]['group']):_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x5f')]+'\x20'+_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x60')]+(_0x5afe6d(_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x60')])?'\x20'+_0x1b6d20['rules'][_0x484766][_0x0af9('0x81')]:'');}return _0x2a9679+')';};var _0x1221ca={'where':{'id':_0x5fbae8[_0x0af9('0x3f')]['id']}},_0x5c33cb,_0x518d88,_0x273dcd,_0x182934,_0x567adf;_0x1221ca=_['merge']({},_0x1221ca,_0x5fbae8[_0x0af9('0x3b')]);return db['AnalyticCustomReport']['find'](_0x1221ca)[_0x0af9('0x1f')](function(_0x1624e9){if(_0x1624e9){_0x5c33cb=_0x1624e9;return _0x1624e9[_0x0af9('0x61')]();}return null;})[_0x0af9('0x1f')](function(_0x2b39c0){if(_0x2b39c0){if(!_0x2b39c0['length']){throw new db[(_0x0af9('0x62'))][(_0x0af9('0x63'))](_0x0af9('0x82'),0x193);}_0x518d88=_0x2b39c0;return db[_0x0af9('0x64')]['findAll']({'raw':!![]});}return null;})[_0x0af9('0x1f')](function(_0x189487){if(_0x189487){_0x273dcd=_['keyBy'](_0x189487,'id');var _0x244a89;var _0x2a519e=squel[_0x0af9('0x83')]();_0x2a519e[_0x0af9('0x66')](_0x5c33cb[_0x0af9('0x75')]);for(var _0x176378=0x0;_0x176378<_0x518d88[_0x0af9('0x5d')];_0x176378+=0x1){_0x244a89=_0x518d88[_0x176378][_0x0af9('0x67')]?_0x273dcd[_0x518d88[_0x176378][_0x0af9('0x67')]]['metric']:_0x518d88[_0x176378][_0x0af9('0x5f')];_0x244a89=_0x518d88[_0x176378][_0x0af9('0x69')]?_[_0x0af9('0x6a')](_0x2ad23a[_0x518d88[_0x176378][_0x0af9('0x69')]],'%s',_0x244a89):_0x244a89;_0x244a89=_0x518d88[_0x176378][_0x0af9('0x6b')]?_['replace'](_0x4e3fba[_0x518d88[_0x176378]['format']],'%s',_0x244a89):_0x244a89;if(_0x518d88[_0x176378]['groupBy']){_0x2a519e[_0x0af9('0x5e')](_0x244a89);}_0x518d88[_0x176378][_0x0af9('0x6d')]&&_0x2a519e['order'](_0x244a89,_0x518d88[_0x176378][_0x0af9('0x6d')]===_0x0af9('0x6e')?![]:!![]);_0x2a519e['field'](_0x244a89,_0x518d88[_0x176378][_0x0af9('0x84')]||_0x244a89);}if(_0x5c33cb[_0x0af9('0x6f')]){_0x5c33cb[_0x0af9('0x6f')]=JSON[_0x0af9('0x70')](_0x5c33cb['joins']);for(var _0x2eb7c2=0x0;_0x2eb7c2<_0x5c33cb[_0x0af9('0x6f')]['length'];_0x2eb7c2+=0x1){if(_0x5c33cb['joins'][_0x2eb7c2][_0x0af9('0x2b')]&&_[_0x0af9('0x71')](_0xc0df80,_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x2b')])&&_0x5c33cb['joins'][_0x2eb7c2][_0x0af9('0x76')]&&_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x72')]&&_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x73')]){_0x2a519e[_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x2b')]](_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x72')],null,util['format'](_0x0af9('0x74'),_0x5c33cb[_0x0af9('0x75')],_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x76')],_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x72')],_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2]['foreignKey']));}}}if(_0x5c33cb[_0x0af9('0x77')]){_0x5c33cb[_0x0af9('0x77')]=JSON[_0x0af9('0x70')](_0x5c33cb['conditions']);_0x2a519e['where'](_0x4efad2(_0x5c33cb[_0x0af9('0x77')]['group']));}_0x567adf=_0x2a519e[_0x0af9('0x78')]();_0x2a519e[_0x0af9('0x18')](_0x169164);_0x2a519e[_0x0af9('0x16')](0x0);logger[_0x0af9('0x9c')]('Limited\x20Query:',_0x2a519e[_0x0af9('0x79')]());return dbH[_0x0af9('0x7a')][_0x0af9('0x2e')](_0x2a519e['toString'](),{'type':dbH['sequelize'][_0x0af9('0x9d')][_0x0af9('0x99')]});}})[_0x0af9('0x1f')](function(){return{'sql':_0x567adf[_0x0af9('0x79')]()};})[_0x0af9('0x1f')](respondWithResult(_0x1f1948,null))[_0x0af9('0x3e')](handleError(_0x1f1948,null));};
\ No newline at end of file
+var _0xd4f3=['name','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','role','user','Reports','UserProfileSection','autoAssociation','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','table','conditions','parse','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','includes','IS\x20NOT\x20EMPTY','value','order','%s.%s\x20=\x20%s.%s','clone','output','web','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../files/reports','savename','countTable','run','debug','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','CustomReports','error','stack'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd4f3,0x7a));var _0x3d4f=function(_0xbeeb04,_0xa1a3b9){_0xbeeb04=_0xbeeb04-0x0;var _0x23be55=_0xd4f3[_0xbeeb04];return _0x23be55;};'use strict';var emlformat=require(_0x3d4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3d4f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3d4f('0x2'));var moment=require('moment');var BPromise=require(_0x3d4f('0x3'));var Mustache=require(_0x3d4f('0x4'));var util=require(_0x3d4f('0x5'));var path=require(_0x3d4f('0x6'));var sox=require(_0x3d4f('0x7'));var csv=require(_0x3d4f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d4f('0x9'));var _=require(_0x3d4f('0xa'));var squel=require(_0x3d4f('0xb'));var crypto=require(_0x3d4f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3d4f('0xd'));var Redis=require(_0x3d4f('0xe'));var authService=require(_0x3d4f('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d4f('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x3d4f('0x11'));var config=require(_0x3d4f('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var dbH=require(_0x3d4f('0x13'))['dbH'];function respondWithStatusCode(_0x40e9d5,_0x2dc1b2){_0x2dc1b2=_0x2dc1b2||0xcc;return function(_0x4e1848){if(_0x4e1848){return _0x40e9d5[_0x3d4f('0x14')](_0x2dc1b2);}return _0x40e9d5[_0x3d4f('0x15')](_0x2dc1b2)[_0x3d4f('0x16')]();};}function respondWithResult(_0x19c0ef,_0x18b8f1){_0x18b8f1=_0x18b8f1||0xc8;return function(_0x2c38bc){if(_0x2c38bc){return _0x19c0ef[_0x3d4f('0x15')](_0x18b8f1)[_0x3d4f('0x17')](_0x2c38bc);}};}function respondWithFilteredResult(_0x4c5029,_0x5eab64){return function(_0x2a1f72){if(_0x2a1f72){var _0x284301=typeof _0x5eab64[_0x3d4f('0x18')]===_0x3d4f('0x19')&&typeof _0x5eab64[_0x3d4f('0x1a')]===_0x3d4f('0x19');var _0x4896c5=_0x2a1f72[_0x3d4f('0x1b')];var _0x3e4ff3=_0x284301?0x0:_0x5eab64['offset'];var _0x4f35f4=_0x284301?_0x2a1f72['count']:_0x5eab64[_0x3d4f('0x18')]+_0x5eab64[_0x3d4f('0x1a')];var _0x39bfbd;if(_0x4f35f4>=_0x4896c5){_0x4f35f4=_0x4896c5;_0x39bfbd=0xc8;}else{_0x39bfbd=0xce;}_0x4c5029[_0x3d4f('0x15')](_0x39bfbd);return _0x4c5029['set'](_0x3d4f('0x1c'),_0x3e4ff3+'-'+_0x4f35f4+'/'+_0x4896c5)[_0x3d4f('0x17')](_0x2a1f72);}return null;};}function patchUpdates(_0x1c5441){return function(_0x1088fc){try{jsonpatch['apply'](_0x1088fc,_0x1c5441,!![]);}catch(_0x244f36){return BPromise[_0x3d4f('0x1d')](_0x244f36);}return _0x1088fc[_0x3d4f('0x1e')]();};}function saveUpdates(_0x360bdd,_0x20cfb9){return function(_0x17dd79){if(_0x17dd79){return _0x17dd79[_0x3d4f('0x1f')](_0x360bdd)[_0x3d4f('0x20')](function(_0x137d27){return _0x137d27;});}return null;};}function removeEntity(_0x4ae241,_0x404a33){return function(_0x5ed5aa){if(_0x5ed5aa){return _0x5ed5aa[_0x3d4f('0x21')]()[_0x3d4f('0x20')](function(){var _0x1dd024=_0x5ed5aa[_0x3d4f('0x22')]({'plain':!![]});var _0x5f299f=_0x3d4f('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x5f299f,'resourceId':_0x1dd024['id']}})[_0x3d4f('0x20')](function(){return _0x5ed5aa;});})[_0x3d4f('0x20')](function(){_0x4ae241[_0x3d4f('0x15')](0xcc)[_0x3d4f('0x16')]();});}};}function handleEntityNotFound(_0x2c72c2,_0x44731a){return function(_0x172287){if(!_0x172287){_0x2c72c2['sendStatus'](0x194);}return _0x172287;};}function handleError(_0x5cf4da,_0x2ed4fc){_0x2ed4fc=_0x2ed4fc||0x1f4;return function(_0x7f437b){logger[_0x3d4f('0x24')](_0x7f437b[_0x3d4f('0x25')]);if(_0x7f437b[_0x3d4f('0x26')]){delete _0x7f437b[_0x3d4f('0x26')];}_0x5cf4da[_0x3d4f('0x15')](_0x2ed4fc)['send'](_0x7f437b);};}exports[_0x3d4f('0x27')]=function(_0x3644e2,_0x13d8e4){var _0x419d45={},_0x8ae21f={},_0x41af97={'count':0x0,'rows':[]};var _0x57dcae=_[_0x3d4f('0x28')](db[_0x3d4f('0x29')][_0x3d4f('0x2a')],function(_0x31d555){return{'name':_0x31d555[_0x3d4f('0x2b')],'type':_0x31d555[_0x3d4f('0x2c')]['key']};});_0x8ae21f['model']=_[_0x3d4f('0x28')](_0x57dcae,_0x3d4f('0x26'));_0x8ae21f[_0x3d4f('0x2d')]=_[_0x3d4f('0x2e')](_0x3644e2['query']);_0x8ae21f[_0x3d4f('0x2f')]=_[_0x3d4f('0x30')](_0x8ae21f[_0x3d4f('0x31')],_0x8ae21f[_0x3d4f('0x2d')]);_0x419d45['attributes']=_[_0x3d4f('0x30')](_0x8ae21f[_0x3d4f('0x31')],qs[_0x3d4f('0x32')](_0x3644e2['query'][_0x3d4f('0x32')]));_0x419d45[_0x3d4f('0x33')]=_0x419d45['attributes'][_0x3d4f('0x34')]?_0x419d45[_0x3d4f('0x33')]:_0x8ae21f['model'];if(!_0x3644e2[_0x3d4f('0x2d')][_0x3d4f('0x35')](_0x3d4f('0x36'))){_0x419d45[_0x3d4f('0x1a')]=qs['limit'](_0x3644e2['query'][_0x3d4f('0x1a')]);_0x419d45[_0x3d4f('0x18')]=qs[_0x3d4f('0x18')](_0x3644e2[_0x3d4f('0x2d')][_0x3d4f('0x18')]);}_0x419d45['order']=qs[_0x3d4f('0x37')](_0x3644e2['query'][_0x3d4f('0x37')]);_0x419d45[_0x3d4f('0x38')]=qs[_0x3d4f('0x2f')](_[_0x3d4f('0x39')](_0x3644e2[_0x3d4f('0x2d')],_0x8ae21f['filters']),_0x57dcae);if(_0x3644e2[_0x3d4f('0x2d')]['filter']){_0x419d45[_0x3d4f('0x38')]=_[_0x3d4f('0x3a')](_0x419d45[_0x3d4f('0x38')],{'$or':_[_0x3d4f('0x28')](_0x57dcae,function(_0x22961a){if(_0x22961a['type']!==_0x3d4f('0x3b')){var _0xae7381={};_0xae7381[_0x22961a[_0x3d4f('0x26')]]={'$like':'%'+_0x3644e2[_0x3d4f('0x2d')][_0x3d4f('0x3c')]+'%'};return _0xae7381;}})});}_0x419d45=_[_0x3d4f('0x3a')]({},_0x419d45,_0x3644e2[_0x3d4f('0x3d')]);var _0x5d152e={'where':_0x419d45['where']};return db[_0x3d4f('0x29')][_0x3d4f('0x1b')](_0x5d152e)[_0x3d4f('0x20')](function(_0x1527ff){_0x41af97[_0x3d4f('0x1b')]=_0x1527ff;if(_0x3644e2[_0x3d4f('0x2d')][_0x3d4f('0x3e')]){_0x419d45[_0x3d4f('0x3f')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0x3d4f('0x40')](_0x419d45);})[_0x3d4f('0x20')](function(_0x267f6c){_0x41af97[_0x3d4f('0x41')]=_0x267f6c;return _0x41af97;})[_0x3d4f('0x20')](respondWithFilteredResult(_0x13d8e4,_0x419d45))[_0x3d4f('0x42')](handleError(_0x13d8e4,null));};exports[_0x3d4f('0x43')]=function(_0x27827d,_0x380708){var _0x151445={'raw':![],'where':{'id':_0x27827d[_0x3d4f('0x44')]['id']}},_0x50e509={};_0x50e509[_0x3d4f('0x31')]=_[_0x3d4f('0x2e')](db['AnalyticCustomReport'][_0x3d4f('0x2a')]);_0x50e509[_0x3d4f('0x2d')]=_[_0x3d4f('0x2e')](_0x27827d[_0x3d4f('0x2d')]);_0x50e509[_0x3d4f('0x2f')]=_['intersection'](_0x50e509['model'],_0x50e509[_0x3d4f('0x2d')]);_0x151445[_0x3d4f('0x33')]=_[_0x3d4f('0x30')](_0x50e509[_0x3d4f('0x31')],qs[_0x3d4f('0x32')](_0x27827d[_0x3d4f('0x2d')][_0x3d4f('0x32')]));_0x151445[_0x3d4f('0x33')]=_0x151445['attributes'][_0x3d4f('0x34')]?_0x151445[_0x3d4f('0x33')]:_0x50e509[_0x3d4f('0x31')];if(_0x27827d[_0x3d4f('0x2d')][_0x3d4f('0x3e')]){_0x151445[_0x3d4f('0x3f')]=[{'all':!![]}];}_0x151445=_[_0x3d4f('0x3a')]({},_0x151445,_0x27827d[_0x3d4f('0x3d')]);return db[_0x3d4f('0x29')][_0x3d4f('0x45')](_0x151445)['then'](handleEntityNotFound(_0x380708,null))[_0x3d4f('0x20')](respondWithResult(_0x380708,null))[_0x3d4f('0x42')](handleError(_0x380708,null));};exports[_0x3d4f('0x46')]=function(_0x30e3f7,_0x450766){return db[_0x3d4f('0x29')]['create'](_0x30e3f7[_0x3d4f('0x47')],{})[_0x3d4f('0x20')](function(_0x34fd2d){var _0x24f967=_0x30e3f7['user'][_0x3d4f('0x22')]({'plain':!![]});if(!_0x24f967)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x24f967[_0x3d4f('0x48')]===_0x3d4f('0x49')){var _0x2fcf95=_0x34fd2d[_0x3d4f('0x22')]({'plain':!![]});var _0x238fa4=_0x3d4f('0x4a');return db[_0x3d4f('0x4b')]['find']({'where':{'name':_0x238fa4,'userProfileId':_0x24f967['userProfileId']},'raw':!![]})[_0x3d4f('0x20')](function(_0x5bcaca){if(_0x5bcaca&&_0x5bcaca[_0x3d4f('0x4c')]===0x0){return db['UserProfileResource'][_0x3d4f('0x46')]({'name':_0x2fcf95['name'],'resourceId':_0x2fcf95['id'],'type':'CustomReports','sectionId':_0x5bcaca['id']},{})['then'](function(){return _0x34fd2d;});}else{return _0x34fd2d;}})[_0x3d4f('0x42')](function(_0xcd5dc9){logger[_0x3d4f('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xcd5dc9);throw _0xcd5dc9;});}return _0x34fd2d;})['then'](respondWithResult(_0x450766,0xc9))[_0x3d4f('0x42')](handleError(_0x450766,null));};exports[_0x3d4f('0x1f')]=function(_0x1734f9,_0x41b6dd){if(_0x1734f9[_0x3d4f('0x47')]['id']){delete _0x1734f9[_0x3d4f('0x47')]['id'];}return db[_0x3d4f('0x29')][_0x3d4f('0x45')]({'where':{'id':_0x1734f9[_0x3d4f('0x44')]['id']}})['then'](handleEntityNotFound(_0x41b6dd,null))[_0x3d4f('0x20')](saveUpdates(_0x1734f9['body'],null))['then'](respondWithResult(_0x41b6dd,null))[_0x3d4f('0x42')](handleError(_0x41b6dd,null));};exports[_0x3d4f('0x21')]=function(_0x5240c2,_0x46ba81){return db['AnalyticCustomReport'][_0x3d4f('0x45')]({'where':{'id':_0x5240c2[_0x3d4f('0x44')]['id']}})[_0x3d4f('0x20')](handleEntityNotFound(_0x46ba81,null))['then'](removeEntity(_0x46ba81,null))[_0x3d4f('0x42')](handleError(_0x46ba81,null));};exports[_0x3d4f('0x4d')]=function(_0x2fe1c6,_0x1198e3){var _0x58fa27=0xa;var _0x5b6a64=[_0x3d4f('0x4e'),_0x3d4f('0x4f'),_0x3d4f('0x50'),_0x3d4f('0x51')];var _0x40c25b={'SUM':_0x3d4f('0x52'),'COUNT':_0x3d4f('0x53'),'COUNT DISTINCT':_0x3d4f('0x54'),'MAX':_0x3d4f('0x55'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x3d4f('0x56'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x3d4f('0x57')};var _0x389e3a={'SEC_TO_TIME':_0x3d4f('0x58'),'DATE':_0x3d4f('0x59'),'HOUR':_0x3d4f('0x5a'),'ROUND':_0x3d4f('0x5b'),'UNIX_TIMESTAMP':_0x3d4f('0x5c')};var _0x103da3=function(_0x52ceb2){return!_['includes']([_0x3d4f('0x5d'),_0x3d4f('0x5e'),_0x3d4f('0x5f'),'IS\x20NOT\x20EMPTY'],_0x52ceb2);};var _0x539259=function(_0x434eda){if(!_0x434eda||!_0x434eda[_0x3d4f('0x60')][_0x3d4f('0x34')]){return'';}for(var _0x5ac5eb='(',_0x52a059=0x0;_0x52a059<_0x434eda[_0x3d4f('0x60')][_0x3d4f('0x34')];_0x52a059+=0x1){_0x52a059>0x0&&(_0x5ac5eb+='\x20'+_0x434eda[_0x3d4f('0x61')]+'\x20');_0x5ac5eb+=_0x434eda['rules'][_0x52a059][_0x3d4f('0x62')]?_0x539259(_0x434eda['rules'][_0x52a059][_0x3d4f('0x62')]):_0x434eda[_0x3d4f('0x60')][_0x52a059][_0x3d4f('0x63')]+'\x20'+_0x434eda[_0x3d4f('0x60')][_0x52a059][_0x3d4f('0x64')]+(_0x103da3(_0x434eda[_0x3d4f('0x60')][_0x52a059][_0x3d4f('0x64')])?'\x20'+_0x434eda['rules'][_0x52a059]['value']:'');}return _0x5ac5eb+')';};var _0x2ac339={'where':{'id':_0x2fe1c6['params']['id']}},_0x5bedd3,_0x15c95f,_0x529205,_0x304050,_0x51f8d1;_0x2ac339=_[_0x3d4f('0x3a')]({},_0x2ac339,_0x2fe1c6[_0x3d4f('0x3d')]);return db[_0x3d4f('0x29')][_0x3d4f('0x45')](_0x2ac339)[_0x3d4f('0x20')](function(_0x2a80ae){if(_0x2a80ae){_0x5bedd3=_0x2a80ae;return _0x2a80ae[_0x3d4f('0x65')]();}return null;})[_0x3d4f('0x20')](function(_0x533917){if(_0x533917){if(!_0x533917['length']){throw new db[(_0x3d4f('0x66'))][(_0x3d4f('0x67'))](_0x3d4f('0x68'),0x193);}_0x15c95f=_0x533917;return db[_0x3d4f('0x69')]['findAll']({'raw':!![]});}return null;})[_0x3d4f('0x20')](function(_0x30f5f5){if(_0x30f5f5){_0x529205=_[_0x3d4f('0x6a')](_0x30f5f5,'id');var _0x9a38d;var _0x5dc415=squel[_0x3d4f('0x6b')]();_0x5dc415[_0x3d4f('0x6c')](_0x5bedd3['table']);for(var _0x971538=0x0;_0x971538<_0x15c95f[_0x3d4f('0x34')];_0x971538+=0x1){_0x9a38d=_0x15c95f[_0x971538][_0x3d4f('0x6d')]?_0x529205[_0x15c95f[_0x971538][_0x3d4f('0x6d')]][_0x3d4f('0x6e')]:_0x15c95f[_0x971538]['field'];_0x9a38d=_0x15c95f[_0x971538][_0x3d4f('0x6f')]?_[_0x3d4f('0x70')](_0x40c25b[_0x15c95f[_0x971538][_0x3d4f('0x6f')]],'%s',_0x9a38d):_0x9a38d;_0x9a38d=_0x15c95f[_0x971538][_0x3d4f('0x71')]?_[_0x3d4f('0x70')](_0x389e3a[_0x15c95f[_0x971538][_0x3d4f('0x71')]],'%s',_0x9a38d):_0x9a38d;if(_0x15c95f[_0x971538][_0x3d4f('0x72')]){_0x5dc415[_0x3d4f('0x62')](_0x9a38d);}_0x15c95f[_0x971538][_0x3d4f('0x73')]&&_0x5dc415['order'](_0x9a38d,_0x15c95f[_0x971538][_0x3d4f('0x73')]===_0x3d4f('0x74')?![]:!![]);_0x5dc415['field'](_0x9a38d,_0x15c95f[_0x971538][_0x3d4f('0x75')]||_0x9a38d);}if(_0x5bedd3[_0x3d4f('0x76')]){_0x5bedd3['joins']=JSON['parse'](_0x5bedd3[_0x3d4f('0x76')]);for(var _0x6e2a06=0x0;_0x6e2a06<_0x5bedd3[_0x3d4f('0x76')][_0x3d4f('0x34')];_0x6e2a06+=0x1){if(_0x5bedd3['joins'][_0x6e2a06]['type']&&_['includes'](_0x5b6a64,_0x5bedd3[_0x3d4f('0x76')][_0x6e2a06]['type'])&&_0x5bedd3['joins'][_0x6e2a06][_0x3d4f('0x77')]&&_0x5bedd3[_0x3d4f('0x76')][_0x6e2a06][_0x3d4f('0x78')]&&_0x5bedd3[_0x3d4f('0x76')][_0x6e2a06][_0x3d4f('0x79')]){_0x5dc415[_0x5bedd3['joins'][_0x6e2a06][_0x3d4f('0x2c')]](_0x5bedd3[_0x3d4f('0x76')][_0x6e2a06]['foreignTable'],null,util[_0x3d4f('0x71')]('%s.%s\x20=\x20%s.%s',_0x5bedd3[_0x3d4f('0x7a')],_0x5bedd3[_0x3d4f('0x76')][_0x6e2a06][_0x3d4f('0x77')],_0x5bedd3['joins'][_0x6e2a06]['foreignTable'],_0x5bedd3[_0x3d4f('0x76')][_0x6e2a06][_0x3d4f('0x79')]));}}}if(_0x5bedd3[_0x3d4f('0x7b')]){_0x5bedd3[_0x3d4f('0x7b')]=JSON[_0x3d4f('0x7c')](_0x5bedd3[_0x3d4f('0x7b')]);_0x5dc415[_0x3d4f('0x38')](_0x539259(_0x5bedd3['conditions']['group']));}_0x51f8d1=_0x5dc415['clone']();_0x5dc415[_0x3d4f('0x1a')](_0x58fa27);_0x5dc415[_0x3d4f('0x18')](0x0);logger['debug'](_0x3d4f('0x7d'),_0x5dc415[_0x3d4f('0x7e')]());return dbH[_0x3d4f('0x7f')][_0x3d4f('0x2d')](_0x5dc415[_0x3d4f('0x7e')](),{'type':dbH[_0x3d4f('0x7f')][_0x3d4f('0x80')][_0x3d4f('0x81')]});}})['then'](respondWithResult(_0x1198e3,null))[_0x3d4f('0x42')](handleError(_0x1198e3,null));};function runReport(_0x21a423,_0x5c5b54,_0xee402b){var _0x101d5a=_0x5c5b54[_0x3d4f('0x26')];var _0x416ff3=0xa;var _0x4db66e=['join',_0x3d4f('0x4f'),_0x3d4f('0x50'),_0x3d4f('0x51')];var _0x3116aa={'SUM':_0x3d4f('0x52'),'COUNT':_0x3d4f('0x53'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x3d4f('0x82'),'AVG':_0x3d4f('0x83'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x3d4f('0x84'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2bfe03={'SEC_TO_TIME':_0x3d4f('0x58'),'DATE':'DATE(%s)','HOUR':_0x3d4f('0x5a'),'ROUND':_0x3d4f('0x5b'),'UNIX_TIMESTAMP':_0x3d4f('0x5c')};var _0x209683=function(_0x5923cd){return!_[_0x3d4f('0x85')]([_0x3d4f('0x5d'),_0x3d4f('0x5e'),_0x3d4f('0x5f'),_0x3d4f('0x86')],_0x5923cd);};var _0x532bf0=function(_0x29c02b){if(!_0x29c02b||!_0x29c02b['rules']['length']){return'';}for(var _0x18f581='(',_0x1d2fda=0x0;_0x1d2fda<_0x29c02b[_0x3d4f('0x60')][_0x3d4f('0x34')];_0x1d2fda+=0x1){_0x1d2fda>0x0&&(_0x18f581+='\x20'+_0x29c02b[_0x3d4f('0x61')]+'\x20');_0x18f581+=_0x29c02b[_0x3d4f('0x60')][_0x1d2fda][_0x3d4f('0x62')]?_0x532bf0(_0x29c02b[_0x3d4f('0x60')][_0x1d2fda][_0x3d4f('0x62')]):_0x29c02b[_0x3d4f('0x60')][_0x1d2fda][_0x3d4f('0x63')]+'\x20'+_0x29c02b['rules'][_0x1d2fda][_0x3d4f('0x64')]+(_0x209683(_0x29c02b['rules'][_0x1d2fda][_0x3d4f('0x64')])?'\x20'+_0x29c02b[_0x3d4f('0x60')][_0x1d2fda][_0x3d4f('0x87')]:'');}return _0x18f581+')';};var _0x29f168={'where':{'id':_0x21a423['id']}},_0x574152,_0x2249c2,_0x4de6ce,_0x3ffb79,_0xe28da7;_0x29f168=_[_0x3d4f('0x3a')]({},_0x29f168,_0xee402b);return db[_0x3d4f('0x29')]['find'](_0x29f168)[_0x3d4f('0x20')](function(_0x790eaa){if(_0x790eaa){_0x574152=_0x790eaa;return _0x790eaa[_0x3d4f('0x65')]();}return null;})[_0x3d4f('0x20')](function(_0x45b825){if(_0x45b825){if(!_0x45b825[_0x3d4f('0x34')]){throw new db[(_0x3d4f('0x66'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2249c2=_0x45b825;return db[_0x3d4f('0x69')]['findAll']({'raw':!![]});}return null;})[_0x3d4f('0x20')](function(_0x487786){if(_0x487786){_0x4de6ce=_[_0x3d4f('0x6a')](_0x487786,'id');var _0x4590d2;var _0x7b7733=squel['select']();_0x7b7733[_0x3d4f('0x6c')](_0x574152[_0x3d4f('0x7a')]);for(var _0x1bf752=0x0;_0x1bf752<_0x2249c2[_0x3d4f('0x34')];_0x1bf752+=0x1){_0x4590d2=_0x2249c2[_0x1bf752]['MetricId']?_0x4de6ce[_0x2249c2[_0x1bf752][_0x3d4f('0x6d')]][_0x3d4f('0x6e')]:_0x2249c2[_0x1bf752]['field'];_0x4590d2=_0x2249c2[_0x1bf752][_0x3d4f('0x6f')]?_[_0x3d4f('0x70')](_0x3116aa[_0x2249c2[_0x1bf752][_0x3d4f('0x6f')]],'%s',_0x4590d2):_0x4590d2;_0x4590d2=_0x2249c2[_0x1bf752][_0x3d4f('0x71')]?_[_0x3d4f('0x70')](_0x2bfe03[_0x2249c2[_0x1bf752][_0x3d4f('0x71')]],'%s',_0x4590d2):_0x4590d2;if(_0x2249c2[_0x1bf752][_0x3d4f('0x72')]){_0x7b7733[_0x3d4f('0x62')](_0x4590d2);}_0x2249c2[_0x1bf752][_0x3d4f('0x73')]&&_0x7b7733[_0x3d4f('0x88')](_0x4590d2,_0x2249c2[_0x1bf752]['orderBy']===_0x3d4f('0x74')?![]:!![]);_0x7b7733[_0x3d4f('0x63')](_0x4590d2,_0x2249c2[_0x1bf752][_0x3d4f('0x75')]||_0x4590d2);}if(_0x574152[_0x3d4f('0x76')]){_0x574152[_0x3d4f('0x76')]=JSON[_0x3d4f('0x7c')](_0x574152[_0x3d4f('0x76')]);for(var _0x507e93=0x0;_0x507e93<_0x574152[_0x3d4f('0x76')][_0x3d4f('0x34')];_0x507e93+=0x1){if(_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x2c')]&&_['includes'](_0x4db66e,_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x2c')])&&_0x574152[_0x3d4f('0x76')][_0x507e93]['parentKey']&&_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x78')]&&_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x79')]){_0x7b7733[_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x2c')]](_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x78')],null,util['format'](_0x3d4f('0x89'),_0x574152[_0x3d4f('0x7a')],_0x574152[_0x3d4f('0x76')][_0x507e93]['parentKey'],_0x574152['joins'][_0x507e93][_0x3d4f('0x78')],_0x574152[_0x3d4f('0x76')][_0x507e93][_0x3d4f('0x79')]));}}}if(_0x574152[_0x3d4f('0x7b')]){_0x574152[_0x3d4f('0x7b')]=JSON['parse'](_0x574152[_0x3d4f('0x7b')]);_0x7b7733[_0x3d4f('0x38')](_0x532bf0(_0x574152['conditions'][_0x3d4f('0x62')]));}_0xe28da7=_0x7b7733[_0x3d4f('0x8a')]();_0x7b7733[_0x3d4f('0x1a')](_0x416ff3);_0x7b7733['offset'](0x0);return;}})['then'](function(){if(_0x5c5b54[_0x3d4f('0x8b')]===_0x3d4f('0x8c')){return null;}var _0x39884e=_[_0x3d4f('0x3a')](_0x5c5b54,{'name':_0x5c5b54['fullPath']||_0x5c5b54['name']||_0x574152[_0x3d4f('0x26')],'basename':_0x101d5a,'savename':util[_0x3d4f('0x71')](_0x3d4f('0x8d'),_0x5c5b54[_0x3d4f('0x26')]||_0x574152[_0x3d4f('0x26')],require(_0x3d4f('0x8e'))[_0x3d4f('0x8f')](0x4),_0x5c5b54[_0x3d4f('0x8b')]||_0x3d4f('0x90')),'reportId':_0x574152['id'],'reportType':_0x3d4f('0x91')});return db[_0x3d4f('0x92')][_0x3d4f('0x46')](_0x39884e,{'raw':!![]});})[_0x3d4f('0x20')](function(_0x39cea1){if(_0x574152[_0x3d4f('0x7a')]===_0x3d4f('0x93')){_0xe28da7[_0x3d4f('0x38')](_0x574152[_0x3d4f('0x7a')]+_0x3d4f('0x94'),_0x5c5b54[_0x3d4f('0x95')],_0x5c5b54[_0x3d4f('0x96')]);}else{_0xe28da7[_0x3d4f('0x38')](_0x574152[_0x3d4f('0x7a')]+_0x3d4f('0x97'),_0x5c5b54[_0x3d4f('0x95')],_0x5c5b54[_0x3d4f('0x96')]);}if(_0x39cea1){logger[_0x3d4f('0x98')](_0x3d4f('0x99'),_0xe28da7[_0x3d4f('0x7e')]());require(_0x3d4f('0x9a'))['fork'](path['join'](__dirname,'../../components/export/',_0x39cea1[_0x3d4f('0x8b')]),[_0x39cea1['id'],_0xe28da7[_0x3d4f('0x7e')](),path['join'](__dirname,_0x3d4f('0x9b'),_0x39cea1[_0x3d4f('0x9c')]),_0x101d5a]);return _0x39cea1;}else{var _0x7cac27=squel['select']();_0x7cac27[_0x3d4f('0x6c')]('('+_0xe28da7[_0x3d4f('0x7e')]()+')',_0x3d4f('0x9d'));_0x7cac27[_0x3d4f('0x63')]('COUNT(*)',_0x3d4f('0x1b'));_0xe28da7[_0x3d4f('0x1a')](_0x5c5b54[_0x3d4f('0x1a')]||_0x416ff3);_0xe28da7[_0x3d4f('0x18')](_0x5c5b54[_0x3d4f('0x18')]||0x0);return dbH[_0x3d4f('0x7f')][_0x3d4f('0x2d')](_0x7cac27[_0x3d4f('0x7e')](),{'type':dbH['sequelize'][_0x3d4f('0x80')][_0x3d4f('0x81')]})['then'](function(_0x35c43b){if(!_0x35c43b[_0x3d4f('0x34')]){_0x3ffb79=0x0;}else{_0x3ffb79=_0x35c43b[0x0][_0x3d4f('0x1b')]||0x0;}return dbH[_0x3d4f('0x7f')][_0x3d4f('0x2d')](_0xe28da7['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x3d4f('0x81')]});})[_0x3d4f('0x20')](function(_0x5bdcf4){return{'rows':_0x5bdcf4||[],'count':_0x3ffb79};});}});}exports[_0x3d4f('0x9e')]=function(_0x101a01,_0x3aa8cb){return runReport(_0x101a01[_0x3d4f('0x44')],_0x101a01[_0x3d4f('0x2d')],_0x101a01[_0x3d4f('0x3d')])[_0x3d4f('0x20')](respondWithResult(_0x3aa8cb,null))['catch'](handleError(_0x3aa8cb,null));};exports['runReport']=runReport;exports[_0x3d4f('0x2d')]=function(_0x2c9d86,_0x449d23){var _0x2e33ae=0xa;var _0x12bd6b=['join',_0x3d4f('0x4f'),'right_join',_0x3d4f('0x51')];var _0x199f80={'SUM':'SUM(%s)','COUNT':_0x3d4f('0x53'),'COUNT DISTINCT':_0x3d4f('0x54'),'MAX':_0x3d4f('0x55'),'MIN':_0x3d4f('0x82'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x3d4f('0x56'),'GROUP_CONCAT ASC':_0x3d4f('0x84'),'GROUP_CONCAT DESC':_0x3d4f('0x57')};var _0x45b97b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x3d4f('0x59'),'HOUR':_0x3d4f('0x5a'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x3d4f('0x5c')};var _0x5378c=function(_0x25a058){return!_[_0x3d4f('0x85')]([_0x3d4f('0x5d'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x3d4f('0x86')],_0x25a058);};var _0x276ffc=function(_0x50bc2f){if(!_0x50bc2f||!_0x50bc2f[_0x3d4f('0x60')][_0x3d4f('0x34')]){return'';}for(var _0x4ffcd5='(',_0x4213ca=0x0;_0x4213ca<_0x50bc2f[_0x3d4f('0x60')][_0x3d4f('0x34')];_0x4213ca+=0x1){_0x4213ca>0x0&&(_0x4ffcd5+='\x20'+_0x50bc2f[_0x3d4f('0x61')]+'\x20');_0x4ffcd5+=_0x50bc2f[_0x3d4f('0x60')][_0x4213ca][_0x3d4f('0x62')]?_0x276ffc(_0x50bc2f[_0x3d4f('0x60')][_0x4213ca][_0x3d4f('0x62')]):_0x50bc2f[_0x3d4f('0x60')][_0x4213ca][_0x3d4f('0x63')]+'\x20'+_0x50bc2f[_0x3d4f('0x60')][_0x4213ca][_0x3d4f('0x64')]+(_0x5378c(_0x50bc2f[_0x3d4f('0x60')][_0x4213ca][_0x3d4f('0x64')])?'\x20'+_0x50bc2f['rules'][_0x4213ca][_0x3d4f('0x87')]:'');}return _0x4ffcd5+')';};var _0x200452={'where':{'id':_0x2c9d86[_0x3d4f('0x44')]['id']}},_0x1c3ec5,_0x42c818,_0x1e32da,_0x34c1e7,_0x59ff82;_0x200452=_[_0x3d4f('0x3a')]({},_0x200452,_0x2c9d86[_0x3d4f('0x3d')]);return db[_0x3d4f('0x29')][_0x3d4f('0x45')](_0x200452)[_0x3d4f('0x20')](function(_0x3aabbc){if(_0x3aabbc){_0x1c3ec5=_0x3aabbc;return _0x3aabbc[_0x3d4f('0x65')]();}return null;})[_0x3d4f('0x20')](function(_0xea8636){if(_0xea8636){if(!_0xea8636['length']){throw new db[(_0x3d4f('0x66'))][(_0x3d4f('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x42c818=_0xea8636;return db[_0x3d4f('0x69')][_0x3d4f('0x40')]({'raw':!![]});}return null;})[_0x3d4f('0x20')](function(_0x1a6668){if(_0x1a6668){_0x1e32da=_[_0x3d4f('0x6a')](_0x1a6668,'id');var _0x8c09ff;var _0x21b28b=squel[_0x3d4f('0x6b')]();_0x21b28b[_0x3d4f('0x6c')](_0x1c3ec5[_0x3d4f('0x7a')]);for(var _0x56817f=0x0;_0x56817f<_0x42c818[_0x3d4f('0x34')];_0x56817f+=0x1){_0x8c09ff=_0x42c818[_0x56817f][_0x3d4f('0x6d')]?_0x1e32da[_0x42c818[_0x56817f][_0x3d4f('0x6d')]][_0x3d4f('0x6e')]:_0x42c818[_0x56817f][_0x3d4f('0x63')];_0x8c09ff=_0x42c818[_0x56817f][_0x3d4f('0x6f')]?_['replace'](_0x199f80[_0x42c818[_0x56817f][_0x3d4f('0x6f')]],'%s',_0x8c09ff):_0x8c09ff;_0x8c09ff=_0x42c818[_0x56817f][_0x3d4f('0x71')]?_[_0x3d4f('0x70')](_0x45b97b[_0x42c818[_0x56817f]['format']],'%s',_0x8c09ff):_0x8c09ff;if(_0x42c818[_0x56817f][_0x3d4f('0x72')]){_0x21b28b['group'](_0x8c09ff);}_0x42c818[_0x56817f][_0x3d4f('0x73')]&&_0x21b28b[_0x3d4f('0x88')](_0x8c09ff,_0x42c818[_0x56817f][_0x3d4f('0x73')]===_0x3d4f('0x74')?![]:!![]);_0x21b28b[_0x3d4f('0x63')](_0x8c09ff,_0x42c818[_0x56817f][_0x3d4f('0x75')]||_0x8c09ff);}if(_0x1c3ec5['joins']){_0x1c3ec5[_0x3d4f('0x76')]=JSON[_0x3d4f('0x7c')](_0x1c3ec5[_0x3d4f('0x76')]);for(var _0x5422b3=0x0;_0x5422b3<_0x1c3ec5['joins']['length'];_0x5422b3+=0x1){if(_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3]['type']&&_[_0x3d4f('0x85')](_0x12bd6b,_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3]['type'])&&_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3][_0x3d4f('0x77')]&&_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3][_0x3d4f('0x78')]&&_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3][_0x3d4f('0x79')]){_0x21b28b[_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3]['type']](_0x1c3ec5['joins'][_0x5422b3][_0x3d4f('0x78')],null,util[_0x3d4f('0x71')](_0x3d4f('0x89'),_0x1c3ec5[_0x3d4f('0x7a')],_0x1c3ec5['joins'][_0x5422b3][_0x3d4f('0x77')],_0x1c3ec5['joins'][_0x5422b3][_0x3d4f('0x78')],_0x1c3ec5[_0x3d4f('0x76')][_0x5422b3][_0x3d4f('0x79')]));}}}if(_0x1c3ec5[_0x3d4f('0x7b')]){_0x1c3ec5[_0x3d4f('0x7b')]=JSON[_0x3d4f('0x7c')](_0x1c3ec5[_0x3d4f('0x7b')]);_0x21b28b[_0x3d4f('0x38')](_0x276ffc(_0x1c3ec5[_0x3d4f('0x7b')][_0x3d4f('0x62')]));}_0x59ff82=_0x21b28b[_0x3d4f('0x8a')]();_0x21b28b[_0x3d4f('0x1a')](_0x2e33ae);_0x21b28b[_0x3d4f('0x18')](0x0);logger[_0x3d4f('0x9f')](_0x3d4f('0x7d'),_0x21b28b['toString']());return dbH[_0x3d4f('0x7f')]['query'](_0x21b28b[_0x3d4f('0x7e')](),{'type':dbH[_0x3d4f('0x7f')][_0x3d4f('0x80')][_0x3d4f('0x81')]});}})[_0x3d4f('0x20')](function(){return{'sql':_0x59ff82[_0x3d4f('0x7e')]()};})[_0x3d4f('0x20')](respondWithResult(_0x449d23,null))['catch'](handleError(_0x449d23,null));};
\ No newline at end of file
index f3a53f8..e1e0955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4b=['./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','lodash','../../config/logger','moment','request-promise','path','../../config/environment'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xdd4b,0xfe));var _0xbdd4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xdd4b[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xbdd4('0x0'));var util=require('util');var logger=require(_0xbdd4('0x1'))('api');var moment=require(_0xbdd4('0x2'));var BPromise=require('bluebird');var rp=require(_0xbdd4('0x3'));var fs=require('fs');var path=require(_0xbdd4('0x4'));var rimraf=require('rimraf');var config=require(_0xbdd4('0x5'));var attributes=require(_0xbdd4('0x6'));module[_0xbdd4('0x7')]=function(_0x42ce89,_0x40a7ce){return _0x42ce89['define'](_0xbdd4('0x8'),attributes,{'tableName':_0xbdd4('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc927=['AnalyticCustomReport','analytics_custom_reports','lodash','util','api','moment','bluebird','path','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x45ee03,_0x2f5319){var _0x13d535=function(_0x391904){while(--_0x391904){_0x45ee03['push'](_0x45ee03['shift']());}};_0x13d535(++_0x2f5319);}(_0xc927,0x162));var _0x7c92=function(_0x4eff5b,_0x561bda){_0x4eff5b=_0x4eff5b-0x0;var _0x389064=_0xc927[_0x4eff5b];return _0x389064;};'use strict';var _=require(_0x7c92('0x0'));var util=require(_0x7c92('0x1'));var logger=require('../../config/logger')(_0x7c92('0x2'));var moment=require(_0x7c92('0x3'));var BPromise=require(_0x7c92('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7c92('0x5'));var rimraf=require('rimraf');var config=require(_0x7c92('0x6'));var attributes=require(_0x7c92('0x7'));module[_0x7c92('0x8')]=function(_0x311177,_0x19b296){return _0x311177['define'](_0x7c92('0x9'),attributes,{'tableName':_0x7c92('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 888c272..1e66611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f3=['client','http','request','then','info','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x83f3,0xb6));var _0x383f=function(_0x50235d,_0x62e70d){_0x50235d=_0x50235d-0x0;var _0x1b4304=_0x83f3[_0x50235d];return _0x1b4304;};'use strict';var _=require(_0x383f('0x0'));var util=require(_0x383f('0x1'));var moment=require('moment');var BPromise=require(_0x383f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x383f('0x3'));var db=require(_0x383f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x383f('0x5'))('rpc');var config=require(_0x383f('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x383f('0x7')][_0x383f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x144123,_0x374eb9,_0x469d7){return new BPromise(function(_0x14eee2,_0x2062d2){return client[_0x383f('0x9')](_0x144123,_0x469d7)[_0x383f('0xa')](function(_0x5bd2c2){logger[_0x383f('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x374eb9,_0x383f('0xc'));logger[_0x383f('0xd')](_0x383f('0xe'),_0x374eb9,'request\x20sent',JSON[_0x383f('0xf')](_0x5bd2c2));if(_0x5bd2c2[_0x383f('0x10')]){if(_0x5bd2c2[_0x383f('0x10')][_0x383f('0x11')]===0x1f4){logger['error'](_0x383f('0x12'),_0x374eb9,_0x5bd2c2['error'][_0x383f('0x13')]);return _0x2062d2(_0x5bd2c2[_0x383f('0x10')][_0x383f('0x13')]);}logger['error'](_0x383f('0x12'),_0x374eb9,_0x5bd2c2['error']['message']);return _0x14eee2(_0x5bd2c2[_0x383f('0x10')][_0x383f('0x13')]);}else{logger[_0x383f('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x374eb9,_0x383f('0xc'));_0x14eee2(_0x5bd2c2[_0x383f('0x14')][_0x383f('0x13')]);}})['catch'](function(_0x495c62){logger[_0x383f('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x374eb9,_0x495c62);_0x2062d2(_0x495c62);});});}
\ No newline at end of file
+var _0xe688=['rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','error','AnalyticCustomReport,\x20%s,\x20%s','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xf6f9f3,_0xe3f052){var _0x3944f9=function(_0x4ded48){while(--_0x4ded48){_0xf6f9f3['push'](_0xf6f9f3['shift']());}};_0x3944f9(++_0xe3f052);}(_0xe688,0xb6));var _0x8e68=function(_0xbddcc5,_0x172e05){_0xbddcc5=_0xbddcc5-0x0;var _0x1792d0=_0xe688[_0xbddcc5];return _0x1792d0;};'use strict';var _=require(_0x8e68('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8e68('0x1'));var rs=require(_0x8e68('0x2'));var fs=require('fs');var Redis=require(_0x8e68('0x3'));var db=require(_0x8e68('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8e68('0x5'));var config=require(_0x8e68('0x6'));var jayson=require(_0x8e68('0x7'));var client=jayson['client'][_0x8e68('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33a160,_0x4ddd0a,_0x5a4339){return new BPromise(function(_0x5eb168,_0x3bba43){return client[_0x8e68('0x9')](_0x33a160,_0x5a4339)['then'](function(_0x594434){logger[_0x8e68('0xa')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4ddd0a,_0x8e68('0xb'));logger[_0x8e68('0xc')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x4ddd0a,_0x8e68('0xb'),JSON['stringify'](_0x594434));if(_0x594434[_0x8e68('0xd')]){if(_0x594434[_0x8e68('0xd')]['code']===0x1f4){logger[_0x8e68('0xd')](_0x8e68('0xe'),_0x4ddd0a,_0x594434['error'][_0x8e68('0xf')]);return _0x3bba43(_0x594434[_0x8e68('0xd')]['message']);}logger[_0x8e68('0xd')](_0x8e68('0xe'),_0x4ddd0a,_0x594434[_0x8e68('0xd')][_0x8e68('0xf')]);return _0x5eb168(_0x594434[_0x8e68('0xd')][_0x8e68('0xf')]);}else{logger[_0x8e68('0xa')](_0x8e68('0xe'),_0x4ddd0a,_0x8e68('0xb'));_0x5eb168(_0x594434[_0x8e68('0x10')][_0x8e68('0xf')]);}})['catch'](function(_0xe313e6){logger['error'](_0x8e68('0xe'),_0x4ddd0a,_0xe313e6);_0x3bba43(_0xe313e6);});});}
\ No newline at end of file
index 801292b..541d9e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a37=['run','/:id/query','query','post','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','/:id','/:id/preview','preview','/:id/run'];(function(_0x3c81b5,_0x3f5ed7){var _0x5888c4=function(_0x4e65b0){while(--_0x4e65b0){_0x3c81b5['push'](_0x3c81b5['shift']());}};_0x5888c4(++_0x3f5ed7);}(_0x9a37,0x1ea));var _0x79a3=function(_0x309a5e,_0x1ec246){_0x309a5e=_0x309a5e-0x0;var _0x1d21f1=_0x9a37[_0x309a5e];return _0x1d21f1;};'use strict';var multer=require(_0x79a3('0x0'));var util=require('util');var path=require(_0x79a3('0x1'));var timeout=require(_0x79a3('0x2'));var express=require(_0x79a3('0x3'));var router=express[_0x79a3('0x4')]();var fs_extra=require(_0x79a3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x79a3('0x6'));var config=require('../../config/environment');var controller=require(_0x79a3('0x7'));router[_0x79a3('0x8')]('/',auth[_0x79a3('0x9')](),controller['index']);router['get'](_0x79a3('0xa'),auth[_0x79a3('0x9')](),controller['show']);router[_0x79a3('0x8')](_0x79a3('0xb'),auth[_0x79a3('0x9')](),controller[_0x79a3('0xc')]);router['get'](_0x79a3('0xd'),auth['isAuthenticated'](),controller[_0x79a3('0xe')]);router[_0x79a3('0x8')](_0x79a3('0xf'),auth[_0x79a3('0x9')](),controller[_0x79a3('0x10')]);router[_0x79a3('0x11')]('/',auth[_0x79a3('0x9')](),controller['create']);router['put'](_0x79a3('0xa'),auth[_0x79a3('0x9')](),controller['update']);router[_0x79a3('0x12')]('/:id',auth[_0x79a3('0x9')](),controller[_0x79a3('0x13')]);module[_0x79a3('0x14')]=router;
\ No newline at end of file
+var _0xcdab=['../../config/environment','./analyticCustomReport.controller','get','index','/:id','isAuthenticated','show','/:id/preview','/:id/run','run','post','create','put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service'];(function(_0x293da,_0x5017d5){var _0x4f057e=function(_0x3d94d3){while(--_0x3d94d3){_0x293da['push'](_0x293da['shift']());}};_0x4f057e(++_0x5017d5);}(_0xcdab,0x94));var _0xbcda=function(_0x16438a,_0x3544be){_0x16438a=_0x16438a-0x0;var _0x9d2e74=_0xcdab[_0x16438a];return _0x9d2e74;};'use strict';var multer=require(_0xbcda('0x0'));var util=require(_0xbcda('0x1'));var path=require(_0xbcda('0x2'));var timeout=require('connect-timeout');var express=require(_0xbcda('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbcda('0x4'));var interaction=require(_0xbcda('0x5'));var config=require(_0xbcda('0x6'));var controller=require(_0xbcda('0x7'));router[_0xbcda('0x8')]('/',auth['isAuthenticated'](),controller[_0xbcda('0x9')]);router['get'](_0xbcda('0xa'),auth[_0xbcda('0xb')](),controller[_0xbcda('0xc')]);router[_0xbcda('0x8')](_0xbcda('0xd'),auth[_0xbcda('0xb')](),controller['preview']);router[_0xbcda('0x8')](_0xbcda('0xe'),auth[_0xbcda('0xb')](),controller[_0xbcda('0xf')]);router[_0xbcda('0x8')]('/:id/query',auth[_0xbcda('0xb')](),controller['query']);router[_0xbcda('0x10')]('/',auth[_0xbcda('0xb')](),controller[_0xbcda('0x11')]);router[_0xbcda('0x12')](_0xbcda('0xa'),auth[_0xbcda('0xb')](),controller[_0xbcda('0x13')]);router[_0xbcda('0x14')](_0xbcda('0xa'),auth[_0xbcda('0xb')](),controller[_0xbcda('0x15')]);module['exports']=router;
\ No newline at end of file
index 997cf95..4b6cf55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['STRING','TEXT','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8ef6,0xf2));var _0x68ef=function(_0x3bf336,_0x1803a3){_0x3bf336=_0x3bf336-0x0;var _0x512d07=_0x8ef6[_0x3bf336];return _0x512d07;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'name':{'type':Sequelize[_0x68ef('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x68ef('0x2')]},'parent':{'type':Sequelize[_0x68ef('0x2')]},'table':{'type':Sequelize[_0x68ef('0x2')]},'conditions':{'type':Sequelize[_0x68ef('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x7fbe=['STRING','TEXT'];(function(_0xb179b5,_0x3601bf){var _0x4088a7=function(_0x41a21f){while(--_0x41a21f){_0xb179b5['push'](_0xb179b5['shift']());}};_0x4088a7(++_0x3601bf);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x21aa5b,_0x2c808f){_0x21aa5b=_0x21aa5b-0x0;var _0x2ca4c8=_0x7fbe[_0x21aa5b];return _0x2ca4c8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe7fb('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0xe7fb('0x0')]},'parent':{'type':Sequelize[_0xe7fb('0x0')]},'table':{'type':Sequelize[_0xe7fb('0x0')]},'conditions':{'type':Sequelize[_0xe7fb('0x1')]},'joins':{'type':Sequelize[_0xe7fb('0x1')]}};
\ No newline at end of file
index 9bce996..46ab47c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['Sequelize','from','foreignKey','output','web','fullPath','generate','csv','cdr','startDate','endDate','info','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','runReport','IS\x20NULL','IS\x20NOT\x20EMPTY','metric','Limited\x20Query:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','get','DefaultReports','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticDefaultReport','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','autoAssociation','update','preview','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20EMPTY','operator','rules','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','MetricId','field','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','conditions','parse','clone','debug','toString','sequelize','QueryTypes','SELECT','join','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x2ef3,0xba));var _0x32ef=function(_0x55d115,_0x1da7db){_0x55d115=_0x55d115-0x0;var _0x580e92=_0x2ef3[_0x55d115];return _0x580e92;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];var dbH=require(_0x32ef('0x18'))['dbH'];function respondWithStatusCode(_0x3e98df,_0x1ef1ae){_0x1ef1ae=_0x1ef1ae||0xcc;return function(_0x5c3eb9){if(_0x5c3eb9){return _0x3e98df['sendStatus'](_0x1ef1ae);}return _0x3e98df[_0x32ef('0x19')](_0x1ef1ae)['end']();};}function respondWithResult(_0x326fce,_0x40a6e6){_0x40a6e6=_0x40a6e6||0xc8;return function(_0x93d492){if(_0x93d492){return _0x326fce[_0x32ef('0x19')](_0x40a6e6)['json'](_0x93d492);}};}function respondWithFilteredResult(_0x55bf0b,_0x531e30){return function(_0x13db1a){if(_0x13db1a){var _0x3950e6=typeof _0x531e30[_0x32ef('0x1a')]==='undefined'&&typeof _0x531e30['limit']===_0x32ef('0x1b');var _0x1a9476=_0x13db1a[_0x32ef('0x1c')];var _0x57863c=_0x3950e6?0x0:_0x531e30[_0x32ef('0x1a')];var _0x33e230=_0x3950e6?_0x13db1a['count']:_0x531e30[_0x32ef('0x1a')]+_0x531e30[_0x32ef('0x1d')];var _0x26aff3;if(_0x33e230>=_0x1a9476){_0x33e230=_0x1a9476;_0x26aff3=0xc8;}else{_0x26aff3=0xce;}_0x55bf0b[_0x32ef('0x19')](_0x26aff3);return _0x55bf0b[_0x32ef('0x1e')](_0x32ef('0x1f'),_0x57863c+'-'+_0x33e230+'/'+_0x1a9476)['json'](_0x13db1a);}return null;};}function patchUpdates(_0x3c5b78){return function(_0x5cc3ef){try{jsonpatch[_0x32ef('0x20')](_0x5cc3ef,_0x3c5b78,!![]);}catch(_0x3a20ca){return BPromise['reject'](_0x3a20ca);}return _0x5cc3ef[_0x32ef('0x21')]();};}function saveUpdates(_0x97780,_0x5e8898){return function(_0x55f7f2){if(_0x55f7f2){return _0x55f7f2['update'](_0x97780)[_0x32ef('0x22')](function(_0xb30fab){return _0xb30fab;});}return null;};}function removeEntity(_0x225feb,_0x478bef){return function(_0x59585f){if(_0x59585f){return _0x59585f[_0x32ef('0x23')]()['then'](function(){var _0x51a412=_0x59585f[_0x32ef('0x24')]({'plain':!![]});var _0x14d4b3=_0x32ef('0x25');return db[_0x32ef('0x26')][_0x32ef('0x23')]({'where':{'type':_0x14d4b3,'resourceId':_0x51a412['id']}})[_0x32ef('0x22')](function(){return _0x59585f;});})[_0x32ef('0x22')](function(){_0x225feb[_0x32ef('0x19')](0xcc)[_0x32ef('0x27')]();});}};}function handleEntityNotFound(_0x2f52d7,_0x1335e2){return function(_0xba4b3f){if(!_0xba4b3f){_0x2f52d7['sendStatus'](0x194);}return _0xba4b3f;};}function handleError(_0xd65fde,_0x2f5d06){_0x2f5d06=_0x2f5d06||0x1f4;return function(_0x5a04cd){logger[_0x32ef('0x28')](_0x5a04cd[_0x32ef('0x29')]);if(_0x5a04cd[_0x32ef('0x2a')]){delete _0x5a04cd[_0x32ef('0x2a')];}_0xd65fde['status'](_0x2f5d06)[_0x32ef('0x2b')](_0x5a04cd);};}exports[_0x32ef('0x2c')]=function(_0x31dbc3,_0x2ac686){var _0x1b668a={},_0x1a6ed2={},_0x1a122d={'count':0x0,'rows':[]};var _0x575f3e=_[_0x32ef('0x2d')](db['AnalyticDefaultReport'][_0x32ef('0x2e')],function(_0x2b6c6a){return{'name':_0x2b6c6a['fieldName'],'type':_0x2b6c6a[_0x32ef('0x2f')][_0x32ef('0x30')]};});_0x1a6ed2[_0x32ef('0x31')]=_[_0x32ef('0x2d')](_0x575f3e,_0x32ef('0x2a'));_0x1a6ed2['query']=_['keys'](_0x31dbc3[_0x32ef('0x32')]);_0x1a6ed2['filters']=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],_0x1a6ed2[_0x32ef('0x32')]);_0x1b668a[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],qs['fields'](_0x31dbc3['query']['fields']));_0x1b668a[_0x32ef('0x34')]=_0x1b668a[_0x32ef('0x34')][_0x32ef('0x35')]?_0x1b668a['attributes']:_0x1a6ed2['model'];if(!_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x36')](_0x32ef('0x37'))){_0x1b668a['limit']=qs['limit'](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1d')]);_0x1b668a[_0x32ef('0x1a')]=qs[_0x32ef('0x1a')](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1a')]);}_0x1b668a[_0x32ef('0x38')]=qs[_0x32ef('0x39')](_0x31dbc3[_0x32ef('0x32')]['sort']);_0x1b668a[_0x32ef('0x3a')]=qs[_0x32ef('0x3b')](_[_0x32ef('0x3c')](_0x31dbc3['query'],_0x1a6ed2[_0x32ef('0x3b')]),_0x575f3e);if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x3d')]){_0x1b668a[_0x32ef('0x3a')]=_[_0x32ef('0x3e')](_0x1b668a[_0x32ef('0x3a')],{'$or':_[_0x32ef('0x2d')](_0x575f3e,function(_0x1cebed){if(_0x1cebed[_0x32ef('0x2f')]!==_0x32ef('0x3f')){var _0xb4db74={};_0xb4db74[_0x1cebed[_0x32ef('0x2a')]]={'$like':'%'+_0x31dbc3['query'][_0x32ef('0x3d')]+'%'};return _0xb4db74;}})});}_0x1b668a=_[_0x32ef('0x3e')]({},_0x1b668a,_0x31dbc3[_0x32ef('0x40')]);var _0x1733e3={'where':_0x1b668a[_0x32ef('0x3a')]};return db[_0x32ef('0x41')][_0x32ef('0x1c')](_0x1733e3)['then'](function(_0x538758){_0x1a122d[_0x32ef('0x1c')]=_0x538758;if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x42')]){_0x1b668a[_0x32ef('0x43')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x32ef('0x44')](_0x1b668a);})[_0x32ef('0x22')](function(_0x5d2f06){_0x1a122d[_0x32ef('0x45')]=_0x5d2f06;return _0x1a122d;})['then'](respondWithFilteredResult(_0x2ac686,_0x1b668a))[_0x32ef('0x46')](handleError(_0x2ac686,null));};exports[_0x32ef('0x47')]=function(_0x37a497,_0x3be46d){var _0x2c2b62={'raw':!![],'where':{'id':_0x37a497[_0x32ef('0x48')]['id']}},_0x2310ae={};_0x2310ae[_0x32ef('0x31')]=_[_0x32ef('0x49')](db[_0x32ef('0x41')]['rawAttributes']);_0x2310ae[_0x32ef('0x32')]=_['keys'](_0x37a497[_0x32ef('0x32')]);_0x2310ae[_0x32ef('0x3b')]=_[_0x32ef('0x33')](_0x2310ae['model'],_0x2310ae[_0x32ef('0x32')]);_0x2c2b62[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x2310ae[_0x32ef('0x31')],qs[_0x32ef('0x4a')](_0x37a497[_0x32ef('0x32')][_0x32ef('0x4a')]));_0x2c2b62['attributes']=_0x2c2b62['attributes'][_0x32ef('0x35')]?_0x2c2b62[_0x32ef('0x34')]:_0x2310ae[_0x32ef('0x31')];if(_0x37a497[_0x32ef('0x32')][_0x32ef('0x42')]){_0x2c2b62[_0x32ef('0x43')]=[{'all':!![]}];}_0x2c2b62=_[_0x32ef('0x3e')]({},_0x2c2b62,_0x37a497[_0x32ef('0x40')]);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2c2b62)[_0x32ef('0x22')](handleEntityNotFound(_0x3be46d,null))[_0x32ef('0x22')](respondWithResult(_0x3be46d,null))[_0x32ef('0x46')](handleError(_0x3be46d,null));};exports['create']=function(_0x420f00,_0x12fbd7){return db[_0x32ef('0x41')][_0x32ef('0x4c')](_0x420f00[_0x32ef('0x4d')],{})[_0x32ef('0x22')](function(_0x278696){var _0x1acded=_0x420f00[_0x32ef('0x4e')][_0x32ef('0x24')]({'plain':!![]});if(!_0x1acded)throw new Error(_0x32ef('0x4f'));if(_0x1acded[_0x32ef('0x50')]===_0x32ef('0x4e')){var _0x326445=_0x278696[_0x32ef('0x24')]({'plain':!![]});var _0x3fb4d8=_0x32ef('0x51');return db[_0x32ef('0x52')]['find']({'where':{'name':_0x3fb4d8,'userProfileId':_0x1acded['userProfileId']},'raw':!![]})[_0x32ef('0x22')](function(_0x259c32){if(_0x259c32&&_0x259c32[_0x32ef('0x53')]===0x0){return db[_0x32ef('0x26')][_0x32ef('0x4c')]({'name':_0x326445[_0x32ef('0x2a')],'resourceId':_0x326445['id'],'type':_0x32ef('0x25'),'sectionId':_0x259c32['id']},{})[_0x32ef('0x22')](function(){return _0x278696;});}else{return _0x278696;}})[_0x32ef('0x46')](function(_0x368bf1){logger[_0x32ef('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x368bf1);throw _0x368bf1;});}return _0x278696;})[_0x32ef('0x22')](respondWithResult(_0x12fbd7,0xc9))[_0x32ef('0x46')](handleError(_0x12fbd7,null));};exports[_0x32ef('0x54')]=function(_0x3fe01f,_0x38314a){if(_0x3fe01f[_0x32ef('0x4d')]['id']){delete _0x3fe01f['body']['id'];}return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x3fe01f[_0x32ef('0x48')]['id']}})['then'](handleEntityNotFound(_0x38314a,null))[_0x32ef('0x22')](saveUpdates(_0x3fe01f['body'],null))[_0x32ef('0x22')](respondWithResult(_0x38314a,null))[_0x32ef('0x46')](handleError(_0x38314a,null));};exports['destroy']=function(_0x206ad5,_0x59e5f9){return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x206ad5[_0x32ef('0x48')]['id']}})[_0x32ef('0x22')](handleEntityNotFound(_0x59e5f9,null))[_0x32ef('0x22')](removeEntity(_0x59e5f9,null))[_0x32ef('0x46')](handleError(_0x59e5f9,null));};exports[_0x32ef('0x55')]=function(_0x56260f,_0x56cc75){var _0xdfa103=0xa;var _0x52232a=['join',_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0x6aae59={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0xbd059e={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2ac877=function(_0x3c31d0){return!_[_0x32ef('0x63')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x3c31d0);};var _0x17f447=function(_0x5bb114){if(!_0x5bb114||!_0x5bb114['rules'][_0x32ef('0x35')]){return'';}for(var _0x208989='(',_0x10cb37=0x0;_0x10cb37<_0x5bb114['rules'][_0x32ef('0x35')];_0x10cb37+=0x1){_0x10cb37>0x0&&(_0x208989+='\x20'+_0x5bb114[_0x32ef('0x65')]+'\x20');_0x208989+=_0x5bb114[_0x32ef('0x66')][_0x10cb37]['group']?_0x17f447(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x67')]):_0x5bb114['rules'][_0x10cb37]['field']+'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')]+(_0x2ac877(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')])?'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x69')]:'');}return _0x208989+')';};var _0x4c89e8={'where':{'id':_0x56260f[_0x32ef('0x48')]['id']}},_0x285330,_0x63b65,_0x25b6d6,_0x36ed97,_0x21e930;_0x4c89e8=_[_0x32ef('0x3e')]({},_0x4c89e8,_0x56260f[_0x32ef('0x40')]);return db[_0x32ef('0x41')]['find'](_0x4c89e8)[_0x32ef('0x22')](function(_0x29ff58){if(_0x29ff58){_0x285330=_0x29ff58;return _0x29ff58[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0x79ae28){if(_0x79ae28){if(!_0x79ae28['length']){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x63b65=_0x79ae28;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x526fb1){if(_0x526fb1){_0x25b6d6=_[_0x32ef('0x6e')](_0x526fb1,'id');var _0x544045;var _0x216e2f=squel[_0x32ef('0x6f')]();_0x216e2f['from'](_0x285330['table']);for(var _0x2c9f7a=0x0;_0x2c9f7a<_0x63b65[_0x32ef('0x35')];_0x2c9f7a+=0x1){_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x70')]?_0x25b6d6[_0x63b65[_0x2c9f7a]['MetricId']]['metric']:_0x63b65[_0x2c9f7a][_0x32ef('0x71')];_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x6aae59[_0x63b65[_0x2c9f7a][_0x32ef('0x72')]],'%s',_0x544045):_0x544045;_0x544045=_0x63b65[_0x2c9f7a]['format']?_[_0x32ef('0x73')](_0xbd059e[_0x63b65[_0x2c9f7a][_0x32ef('0x74')]],'%s',_0x544045):_0x544045;if(_0x63b65[_0x2c9f7a][_0x32ef('0x75')]){_0x216e2f[_0x32ef('0x67')](_0x544045);}_0x63b65[_0x2c9f7a][_0x32ef('0x76')]&&_0x216e2f[_0x32ef('0x38')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x216e2f[_0x32ef('0x71')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x78')]||_0x544045);}if(_0x285330[_0x32ef('0x79')]){_0x285330[_0x32ef('0x79')]=JSON['parse'](_0x285330['joins']);for(var _0x3a9c97=0x0;_0x3a9c97<_0x285330[_0x32ef('0x79')]['length'];_0x3a9c97+=0x1){if(_0x285330[_0x32ef('0x79')][_0x3a9c97]['type']&&_[_0x32ef('0x63')](_0x52232a,_0x285330[_0x32ef('0x79')][_0x3a9c97][_0x32ef('0x2f')])&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7a')]&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')]&&_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']){_0x216e2f[_0x285330['joins'][_0x3a9c97][_0x32ef('0x2f')]](_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')],null,util['format'](_0x32ef('0x7c'),_0x285330[_0x32ef('0x7d')],_0x285330[_0x32ef('0x79')][_0x3a9c97]['parentKey'],_0x285330['joins'][_0x3a9c97]['foreignTable'],_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']));}}}if(_0x285330[_0x32ef('0x7e')]){_0x285330[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x285330[_0x32ef('0x7e')]);_0x216e2f[_0x32ef('0x3a')](_0x17f447(_0x285330[_0x32ef('0x7e')]['group']));}_0x21e930=_0x216e2f[_0x32ef('0x80')]();_0x216e2f['limit'](_0xdfa103);_0x216e2f['offset'](0x0);logger[_0x32ef('0x81')]('Limited\x20Query:',_0x216e2f[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')]['query'](_0x216e2f[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')][_0x32ef('0x84')][_0x32ef('0x85')]});}})[_0x32ef('0x22')](respondWithResult(_0x56cc75,null))[_0x32ef('0x46')](handleError(_0x56cc75,null));};function runReport(_0x4b5506,_0x51736f,_0x35b10d){var _0x5e0b55=_0x51736f[_0x32ef('0x2a')];var _0x266688=0xa;var _0x114d8e=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),'cross_join'];var _0x3232ca={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':_0x32ef('0x88'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x211fb1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0xfb4845=function(_0x21067e){return!_[_0x32ef('0x63')](['IS\x20NULL',_0x32ef('0x8b'),_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x21067e);};var _0x35653b=function(_0x5ea727){if(!_0x5ea727||!_0x5ea727[_0x32ef('0x66')]['length']){return'';}for(var _0x43f36e='(',_0x39300f=0x0;_0x39300f<_0x5ea727[_0x32ef('0x66')][_0x32ef('0x35')];_0x39300f+=0x1){_0x39300f>0x0&&(_0x43f36e+='\x20'+_0x5ea727['operator']+'\x20');_0x43f36e+=_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x67')]?_0x35653b(_0x5ea727[_0x32ef('0x66')][_0x39300f]['group']):_0x5ea727['rules'][_0x39300f]['field']+'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')]+(_0xfb4845(_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')])?'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f]['value']:'');}return _0x43f36e+')';};var _0x2678e3={'where':{'id':_0x4b5506['id']}},_0x5b3deb,_0x471de6,_0x7b0ea5,_0xc43e1,_0x4baa7a;_0x2678e3=_[_0x32ef('0x3e')]({},_0x2678e3,_0x35b10d);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2678e3)[_0x32ef('0x22')](function(_0x28bebb){if(_0x28bebb){_0x5b3deb=_0x28bebb;return _0x28bebb['getFields']();}return null;})[_0x32ef('0x22')](function(_0x484df0){if(_0x484df0){if(!_0x484df0[_0x32ef('0x35')]){throw new db[(_0x32ef('0x8c'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x471de6=_0x484df0;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x3b9896){if(_0x3b9896){_0x7b0ea5=_['keyBy'](_0x3b9896,'id');var _0x356fd4;var _0x51ca6e=squel['select']();_0x51ca6e[_0x32ef('0x8d')](_0x5b3deb['table']);for(var _0x2237cf=0x0;_0x2237cf<_0x471de6[_0x32ef('0x35')];_0x2237cf+=0x1){_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x70')]?_0x7b0ea5[_0x471de6[_0x2237cf]['MetricId']]['metric']:_0x471de6[_0x2237cf][_0x32ef('0x71')];_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x3232ca[_0x471de6[_0x2237cf][_0x32ef('0x72')]],'%s',_0x356fd4):_0x356fd4;_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x211fb1[_0x471de6[_0x2237cf][_0x32ef('0x74')]],'%s',_0x356fd4):_0x356fd4;if(_0x471de6[_0x2237cf]['groupBy']){_0x51ca6e[_0x32ef('0x67')](_0x356fd4);}_0x471de6[_0x2237cf][_0x32ef('0x76')]&&_0x51ca6e[_0x32ef('0x38')](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x76')]==='DESC'?![]:!![]);_0x51ca6e['field'](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x78')]||_0x356fd4);}if(_0x5b3deb['joins']){_0x5b3deb[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x5b3deb['joins']);for(var _0x5c7594=0x0;_0x5c7594<_0x5b3deb['joins'][_0x32ef('0x35')];_0x5c7594+=0x1){if(_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x2f')]&&_[_0x32ef('0x63')](_0x114d8e,_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x2f')])&&_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x8e')]){_0x51ca6e[_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['type']](_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')],null,util[_0x32ef('0x74')](_0x32ef('0x7c'),_0x5b3deb[_0x32ef('0x7d')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7b')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['foreignKey']));}}}if(_0x5b3deb[_0x32ef('0x7e')]){_0x5b3deb['conditions']=JSON[_0x32ef('0x7f')](_0x5b3deb[_0x32ef('0x7e')]);_0x51ca6e[_0x32ef('0x3a')](_0x35653b(_0x5b3deb[_0x32ef('0x7e')][_0x32ef('0x67')]));}_0x4baa7a=_0x51ca6e['clone']();_0x51ca6e[_0x32ef('0x1d')](_0x266688);_0x51ca6e[_0x32ef('0x1a')](0x0);return;}})[_0x32ef('0x22')](function(){if(_0x51736f[_0x32ef('0x8f')]===_0x32ef('0x90')){return null;}var _0x1cfdd8=_[_0x32ef('0x3e')](_0x51736f,{'name':_0x51736f[_0x32ef('0x91')]||_0x51736f[_0x32ef('0x2a')]||_0x5b3deb['name'],'basename':_0x5e0b55,'savename':util['format']('%s-%s.%s',_0x51736f[_0x32ef('0x2a')]||_0x5b3deb[_0x32ef('0x2a')],require('randomstring')[_0x32ef('0x92')](0x4),_0x51736f['output']||_0x32ef('0x93')),'reportId':_0x5b3deb['id'],'reportType':'default'});return db['AnalyticExtractedReport'][_0x32ef('0x4c')](_0x1cfdd8,{'raw':!![]});})[_0x32ef('0x22')](function(_0x118d2e){if(_0x5b3deb[_0x32ef('0x7d')]===_0x32ef('0x94')){_0x4baa7a['where'](_0x5b3deb[_0x32ef('0x7d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x51736f[_0x32ef('0x95')],_0x51736f['endDate']);}else{_0x4baa7a['where'](_0x5b3deb['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x51736f['startDate'],_0x51736f[_0x32ef('0x96')]);}if(_0x118d2e){logger[_0x32ef('0x97')]('Run\x20Query:',_0x4baa7a[_0x32ef('0x82')]());require(_0x32ef('0x98'))[_0x32ef('0x99')](path[_0x32ef('0x86')](__dirname,_0x32ef('0x9a'),_0x118d2e[_0x32ef('0x8f')]),[_0x118d2e['id'],_0x4baa7a['toString'](),path[_0x32ef('0x86')](__dirname,'../../files/reports',_0x118d2e[_0x32ef('0x9b')]),_0x5e0b55]);return _0x118d2e;}else{var _0x1be713=squel['select']();_0x1be713[_0x32ef('0x8d')]('('+_0x4baa7a['toString']()+')',_0x32ef('0x9c'));_0x1be713[_0x32ef('0x71')](_0x32ef('0x9d'),_0x32ef('0x1c'));_0x4baa7a['limit'](_0x51736f[_0x32ef('0x1d')]||_0x266688);_0x4baa7a[_0x32ef('0x1a')](_0x51736f[_0x32ef('0x1a')]||0x0);return dbH[_0x32ef('0x83')]['query'](_0x1be713[_0x32ef('0x82')](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]})[_0x32ef('0x22')](function(_0x28ef17){if(!_0x28ef17[_0x32ef('0x35')]){_0xc43e1=0x0;}else{_0xc43e1=_0x28ef17[0x0][_0x32ef('0x1c')]||0x0;}return dbH['sequelize'][_0x32ef('0x32')](_0x4baa7a['toString'](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]});})[_0x32ef('0x22')](function(_0x3956e7){return{'rows':_0x3956e7||[],'count':_0xc43e1};});}});}exports['run']=function(_0x8d3b24,_0x642716){return runReport(_0x8d3b24[_0x32ef('0x48')],_0x8d3b24[_0x32ef('0x32')],_0x8d3b24['options'])['then'](respondWithResult(_0x642716,null))['catch'](handleError(_0x642716,null));};exports[_0x32ef('0x9e')]=runReport;exports[_0x32ef('0x32')]=function(_0x4454f3,_0xc92dcc){var _0x3d18b9=0xa;var _0x9233cb=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0xa76912={'SUM':'SUM(%s)','COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0x1526a1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0x2d4d2f=function(_0x292488){return!_[_0x32ef('0x63')]([_0x32ef('0x9f'),_0x32ef('0x8b'),_0x32ef('0x64'),_0x32ef('0xa0')],_0x292488);};var _0x50b674=function(_0x379d40){if(!_0x379d40||!_0x379d40[_0x32ef('0x66')][_0x32ef('0x35')]){return'';}for(var _0x4b7a4d='(',_0x16525b=0x0;_0x16525b<_0x379d40['rules'][_0x32ef('0x35')];_0x16525b+=0x1){_0x16525b>0x0&&(_0x4b7a4d+='\x20'+_0x379d40[_0x32ef('0x65')]+'\x20');_0x4b7a4d+=_0x379d40[_0x32ef('0x66')][_0x16525b]['group']?_0x50b674(_0x379d40[_0x32ef('0x66')][_0x16525b]['group']):_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x71')]+'\x20'+_0x379d40['rules'][_0x16525b][_0x32ef('0x68')]+(_0x2d4d2f(_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x68')])?'\x20'+_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x69')]:'');}return _0x4b7a4d+')';};var _0x264075={'where':{'id':_0x4454f3[_0x32ef('0x48')]['id']}},_0x3798d1,_0x4befa9,_0x493ae9,_0x143d39,_0x497948;_0x264075=_[_0x32ef('0x3e')]({},_0x264075,_0x4454f3['options']);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x264075)['then'](function(_0x1200c9){if(_0x1200c9){_0x3798d1=_0x1200c9;return _0x1200c9[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0xa5f787){if(_0xa5f787){if(!_0xa5f787[_0x32ef('0x35')]){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x4befa9=_0xa5f787;return db['AnalyticMetric'][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x55ad11){if(_0x55ad11){_0x493ae9=_[_0x32ef('0x6e')](_0x55ad11,'id');var _0x2971a8;var _0x522c22=squel[_0x32ef('0x6f')]();_0x522c22[_0x32ef('0x8d')](_0x3798d1['table']);for(var _0xb41a01=0x0;_0xb41a01<_0x4befa9[_0x32ef('0x35')];_0xb41a01+=0x1){_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x70')]?_0x493ae9[_0x4befa9[_0xb41a01][_0x32ef('0x70')]][_0x32ef('0xa1')]:_0x4befa9[_0xb41a01][_0x32ef('0x71')];_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x72')]?_['replace'](_0xa76912[_0x4befa9[_0xb41a01]['function']],'%s',_0x2971a8):_0x2971a8;_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x1526a1[_0x4befa9[_0xb41a01][_0x32ef('0x74')]],'%s',_0x2971a8):_0x2971a8;if(_0x4befa9[_0xb41a01]['groupBy']){_0x522c22[_0x32ef('0x67')](_0x2971a8);}_0x4befa9[_0xb41a01][_0x32ef('0x76')]&&_0x522c22['order'](_0x2971a8,_0x4befa9[_0xb41a01][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x522c22['field'](_0x2971a8,_0x4befa9[_0xb41a01]['alias']||_0x2971a8);}if(_0x3798d1[_0x32ef('0x79')]){_0x3798d1[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x3798d1['joins']);for(var _0x5f4eab=0x0;_0x5f4eab<_0x3798d1['joins'][_0x32ef('0x35')];_0x5f4eab+=0x1){if(_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')]&&_['includes'](_0x9233cb,_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')])&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['parentKey']&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')]&&_0x3798d1['joins'][_0x5f4eab]['foreignKey']){_0x522c22[_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['type']](_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3798d1[_0x32ef('0x7d')],_0x3798d1['joins'][_0x5f4eab][_0x32ef('0x7a')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x8e')]));}}}if(_0x3798d1[_0x32ef('0x7e')]){_0x3798d1[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x3798d1[_0x32ef('0x7e')]);_0x522c22[_0x32ef('0x3a')](_0x50b674(_0x3798d1['conditions']['group']));}_0x497948=_0x522c22[_0x32ef('0x80')]();_0x522c22[_0x32ef('0x1d')](_0x3d18b9);_0x522c22[_0x32ef('0x1a')](0x0);logger[_0x32ef('0x81')](_0x32ef('0xa2'),_0x522c22[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')][_0x32ef('0x32')](_0x522c22[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')]['QueryTypes'][_0x32ef('0x85')]});}})[_0x32ef('0x22')](function(){return{'sql':_0x497948[_0x32ef('0x82')]()};})[_0x32ef('0x22')](respondWithResult(_0xc92dcc,null))[_0x32ef('0x46')](handleError(_0xc92dcc,null));};
\ No newline at end of file
+var _0xc6ac=['keyBy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','dbH','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','DefaultReports','UserProfileResource','stack','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','name','query','keys','filters','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','intersection','length','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','left_join','right_join','cross_join','SUM(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','field','condition','value','Sequelize','AnalyticMetric','select','from','table','MetricId','replace','format','group','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','join','COUNT(%s)','COUNT(DISTINCT\x20%s)','IS\x20NOT\x20EMPTY','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','metric','function','groupBy','orderBy','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','getFields'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x2f628e,_0x3bbed2){_0x2f628e=_0x2f628e-0x0;var _0x3a4e00=_0xc6ac[_0x2f628e];return _0x3a4e00;};'use strict';var emlformat=require(_0xcc6a('0x0'));var rimraf=require(_0xcc6a('0x1'));var zipdir=require(_0xcc6a('0x2'));var jsonpatch=require(_0xcc6a('0x3'));var rp=require(_0xcc6a('0x4'));var moment=require(_0xcc6a('0x5'));var BPromise=require(_0xcc6a('0x6'));var Mustache=require(_0xcc6a('0x7'));var util=require(_0xcc6a('0x8'));var path=require(_0xcc6a('0x9'));var sox=require(_0xcc6a('0xa'));var csv=require(_0xcc6a('0xb'));var ejs=require(_0xcc6a('0xc'));var fs=require('fs');var fs_extra=require(_0xcc6a('0xd'));var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xb'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xcc6a('0x1b')];function respondWithStatusCode(_0x211444,_0x4300c0){_0x4300c0=_0x4300c0||0xcc;return function(_0x559a0a){if(_0x559a0a){return _0x211444['sendStatus'](_0x4300c0);}return _0x211444[_0xcc6a('0x1c')](_0x4300c0)[_0xcc6a('0x1d')]();};}function respondWithResult(_0x43710d,_0x348af7){_0x348af7=_0x348af7||0xc8;return function(_0x96f9de){if(_0x96f9de){return _0x43710d[_0xcc6a('0x1c')](_0x348af7)[_0xcc6a('0x1e')](_0x96f9de);}};}function respondWithFilteredResult(_0x403b18,_0x56ffb0){return function(_0x4e628f){if(_0x4e628f){var _0x4d021a=typeof _0x56ffb0[_0xcc6a('0x1f')]===_0xcc6a('0x20')&&typeof _0x56ffb0[_0xcc6a('0x21')]===_0xcc6a('0x20');var _0x33079c=_0x4e628f[_0xcc6a('0x22')];var _0x2d9585=_0x4d021a?0x0:_0x56ffb0[_0xcc6a('0x1f')];var _0x374e51=_0x4d021a?_0x4e628f[_0xcc6a('0x22')]:_0x56ffb0[_0xcc6a('0x1f')]+_0x56ffb0['limit'];var _0xfec60f;if(_0x374e51>=_0x33079c){_0x374e51=_0x33079c;_0xfec60f=0xc8;}else{_0xfec60f=0xce;}_0x403b18[_0xcc6a('0x1c')](_0xfec60f);return _0x403b18[_0xcc6a('0x23')](_0xcc6a('0x24'),_0x2d9585+'-'+_0x374e51+'/'+_0x33079c)[_0xcc6a('0x1e')](_0x4e628f);}return null;};}function patchUpdates(_0x30b8ed){return function(_0x36c80f){try{jsonpatch[_0xcc6a('0x25')](_0x36c80f,_0x30b8ed,!![]);}catch(_0x2254a8){return BPromise[_0xcc6a('0x26')](_0x2254a8);}return _0x36c80f[_0xcc6a('0x27')]();};}function saveUpdates(_0x845088,_0x51be9a){return function(_0x41c4c8){if(_0x41c4c8){return _0x41c4c8[_0xcc6a('0x28')](_0x845088)[_0xcc6a('0x29')](function(_0x581aae){return _0x581aae;});}return null;};}function removeEntity(_0x10016a,_0x294486){return function(_0x3a00e5){if(_0x3a00e5){return _0x3a00e5[_0xcc6a('0x2a')]()[_0xcc6a('0x29')](function(){var _0x5fc697=_0x3a00e5['get']({'plain':!![]});var _0x26def8=_0xcc6a('0x2b');return db[_0xcc6a('0x2c')]['destroy']({'where':{'type':_0x26def8,'resourceId':_0x5fc697['id']}})[_0xcc6a('0x29')](function(){return _0x3a00e5;});})[_0xcc6a('0x29')](function(){_0x10016a['status'](0xcc)[_0xcc6a('0x1d')]();});}};}function handleEntityNotFound(_0x8b1b2b,_0x3233d1){return function(_0x473f88){if(!_0x473f88){_0x8b1b2b['sendStatus'](0x194);}return _0x473f88;};}function handleError(_0x194aab,_0x3cf14c){_0x3cf14c=_0x3cf14c||0x1f4;return function(_0x2c6d88){logger['error'](_0x2c6d88[_0xcc6a('0x2d')]);if(_0x2c6d88['name']){delete _0x2c6d88['name'];}_0x194aab[_0xcc6a('0x1c')](_0x3cf14c)[_0xcc6a('0x2e')](_0x2c6d88);};}exports[_0xcc6a('0x2f')]=function(_0x11b481,_0x2b575d){var _0x131138={},_0x4e2de4={},_0x7b2b54={'count':0x0,'rows':[]};var _0x28e3c3=_[_0xcc6a('0x30')](db[_0xcc6a('0x31')][_0xcc6a('0x32')],function(_0x152ebd){return{'name':_0x152ebd[_0xcc6a('0x33')],'type':_0x152ebd[_0xcc6a('0x34')]['key']};});_0x4e2de4[_0xcc6a('0x35')]=_[_0xcc6a('0x30')](_0x28e3c3,_0xcc6a('0x36'));_0x4e2de4[_0xcc6a('0x37')]=_[_0xcc6a('0x38')](_0x11b481[_0xcc6a('0x37')]);_0x4e2de4[_0xcc6a('0x39')]=_['intersection'](_0x4e2de4[_0xcc6a('0x35')],_0x4e2de4['query']);_0x131138['attributes']=_['intersection'](_0x4e2de4[_0xcc6a('0x35')],qs[_0xcc6a('0x3a')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x3a')]));_0x131138[_0xcc6a('0x3b')]=_0x131138['attributes']['length']?_0x131138[_0xcc6a('0x3b')]:_0x4e2de4[_0xcc6a('0x35')];if(!_0x11b481[_0xcc6a('0x37')]['hasOwnProperty'](_0xcc6a('0x3c'))){_0x131138[_0xcc6a('0x21')]=qs[_0xcc6a('0x21')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x21')]);_0x131138[_0xcc6a('0x1f')]=qs[_0xcc6a('0x1f')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x1f')]);}_0x131138[_0xcc6a('0x3d')]=qs[_0xcc6a('0x3e')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x3e')]);_0x131138[_0xcc6a('0x3f')]=qs[_0xcc6a('0x39')](_[_0xcc6a('0x40')](_0x11b481[_0xcc6a('0x37')],_0x4e2de4[_0xcc6a('0x39')]),_0x28e3c3);if(_0x11b481['query']['filter']){_0x131138[_0xcc6a('0x3f')]=_[_0xcc6a('0x41')](_0x131138[_0xcc6a('0x3f')],{'$or':_[_0xcc6a('0x30')](_0x28e3c3,function(_0x1e628b){if(_0x1e628b[_0xcc6a('0x34')]!==_0xcc6a('0x42')){var _0x1199f1={};_0x1199f1[_0x1e628b['name']]={'$like':'%'+_0x11b481['query'][_0xcc6a('0x43')]+'%'};return _0x1199f1;}})});}_0x131138=_['merge']({},_0x131138,_0x11b481['options']);var _0x5cf1ba={'where':_0x131138[_0xcc6a('0x3f')]};return db[_0xcc6a('0x31')][_0xcc6a('0x22')](_0x5cf1ba)[_0xcc6a('0x29')](function(_0xe8056f){_0x7b2b54['count']=_0xe8056f;if(_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x44')]){_0x131138[_0xcc6a('0x45')]=[{'all':!![]}];}return db[_0xcc6a('0x31')][_0xcc6a('0x46')](_0x131138);})[_0xcc6a('0x29')](function(_0x54f862){_0x7b2b54[_0xcc6a('0x47')]=_0x54f862;return _0x7b2b54;})[_0xcc6a('0x29')](respondWithFilteredResult(_0x2b575d,_0x131138))[_0xcc6a('0x48')](handleError(_0x2b575d,null));};exports[_0xcc6a('0x49')]=function(_0x494904,_0x1fe723){var _0x4a9cea={'raw':!![],'where':{'id':_0x494904[_0xcc6a('0x4a')]['id']}},_0x351529={};_0x351529[_0xcc6a('0x35')]=_['keys'](db[_0xcc6a('0x31')][_0xcc6a('0x32')]);_0x351529[_0xcc6a('0x37')]=_['keys'](_0x494904['query']);_0x351529[_0xcc6a('0x39')]=_[_0xcc6a('0x4b')](_0x351529[_0xcc6a('0x35')],_0x351529[_0xcc6a('0x37')]);_0x4a9cea[_0xcc6a('0x3b')]=_['intersection'](_0x351529[_0xcc6a('0x35')],qs[_0xcc6a('0x3a')](_0x494904['query'][_0xcc6a('0x3a')]));_0x4a9cea[_0xcc6a('0x3b')]=_0x4a9cea[_0xcc6a('0x3b')][_0xcc6a('0x4c')]?_0x4a9cea[_0xcc6a('0x3b')]:_0x351529[_0xcc6a('0x35')];if(_0x494904['query']['includeAll']){_0x4a9cea['include']=[{'all':!![]}];}_0x4a9cea=_[_0xcc6a('0x41')]({},_0x4a9cea,_0x494904[_0xcc6a('0x4d')]);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x4a9cea)['then'](handleEntityNotFound(_0x1fe723,null))[_0xcc6a('0x29')](respondWithResult(_0x1fe723,null))['catch'](handleError(_0x1fe723,null));};exports[_0xcc6a('0x4f')]=function(_0x4299ca,_0xcfc540){return db[_0xcc6a('0x31')][_0xcc6a('0x4f')](_0x4299ca[_0xcc6a('0x50')],{})['then'](function(_0x1a3b82){var _0x7288b2=_0x4299ca[_0xcc6a('0x51')][_0xcc6a('0x52')]({'plain':!![]});if(!_0x7288b2)throw new Error(_0xcc6a('0x53'));if(_0x7288b2[_0xcc6a('0x54')]===_0xcc6a('0x51')){var _0x392805=_0x1a3b82[_0xcc6a('0x52')]({'plain':!![]});var _0x30d0ef='Reports';return db[_0xcc6a('0x55')][_0xcc6a('0x4e')]({'where':{'name':_0x30d0ef,'userProfileId':_0x7288b2[_0xcc6a('0x56')]},'raw':!![]})[_0xcc6a('0x29')](function(_0x14f5e5){if(_0x14f5e5&&_0x14f5e5[_0xcc6a('0x57')]===0x0){return db['UserProfileResource']['create']({'name':_0x392805[_0xcc6a('0x36')],'resourceId':_0x392805['id'],'type':'DefaultReports','sectionId':_0x14f5e5['id']},{})[_0xcc6a('0x29')](function(){return _0x1a3b82;});}else{return _0x1a3b82;}})[_0xcc6a('0x48')](function(_0x2b5782){logger[_0xcc6a('0x58')](_0xcc6a('0x59'),_0x2b5782);throw _0x2b5782;});}return _0x1a3b82;})[_0xcc6a('0x29')](respondWithResult(_0xcfc540,0xc9))[_0xcc6a('0x48')](handleError(_0xcfc540,null));};exports[_0xcc6a('0x28')]=function(_0x68b823,_0x27b074){if(_0x68b823[_0xcc6a('0x50')]['id']){delete _0x68b823['body']['id'];}return db[_0xcc6a('0x31')]['find']({'where':{'id':_0x68b823[_0xcc6a('0x4a')]['id']}})[_0xcc6a('0x29')](handleEntityNotFound(_0x27b074,null))[_0xcc6a('0x29')](saveUpdates(_0x68b823['body'],null))[_0xcc6a('0x29')](respondWithResult(_0x27b074,null))['catch'](handleError(_0x27b074,null));};exports[_0xcc6a('0x2a')]=function(_0x5db3b5,_0x3c0b1c){return db[_0xcc6a('0x31')][_0xcc6a('0x4e')]({'where':{'id':_0x5db3b5[_0xcc6a('0x4a')]['id']}})[_0xcc6a('0x29')](handleEntityNotFound(_0x3c0b1c,null))[_0xcc6a('0x29')](removeEntity(_0x3c0b1c,null))[_0xcc6a('0x48')](handleError(_0x3c0b1c,null));};exports[_0xcc6a('0x5a')]=function(_0x506311,_0x14d3ff){var _0x56d512=0xa;var _0x3a6b7e=['join',_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x586789={'SUM':_0xcc6a('0x5e'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xcc6a('0x5f'),'MIN':_0xcc6a('0x60'),'AVG':_0xcc6a('0x61'),'GROUP_CONCAT':_0xcc6a('0x62'),'GROUP_CONCAT ASC':_0xcc6a('0x63'),'GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x389e5f={'SEC_TO_TIME':_0xcc6a('0x65'),'DATE':_0xcc6a('0x66'),'HOUR':_0xcc6a('0x67'),'ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x2cc561=function(_0x483aa4){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),_0xcc6a('0x6c'),_0xcc6a('0x6d'),'IS\x20NOT\x20EMPTY'],_0x483aa4);};var _0x46d93b=function(_0x4ed702){if(!_0x4ed702||!_0x4ed702[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x20a16b='(',_0x19a578=0x0;_0x19a578<_0x4ed702[_0xcc6a('0x6e')][_0xcc6a('0x4c')];_0x19a578+=0x1){_0x19a578>0x0&&(_0x20a16b+='\x20'+_0x4ed702[_0xcc6a('0x6f')]+'\x20');_0x20a16b+=_0x4ed702[_0xcc6a('0x6e')][_0x19a578]['group']?_0x46d93b(_0x4ed702['rules'][_0x19a578]['group']):_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x70')]+'\x20'+_0x4ed702[_0xcc6a('0x6e')][_0x19a578]['condition']+(_0x2cc561(_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x71')])?'\x20'+_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x72')]:'');}return _0x20a16b+')';};var _0x5e1c69={'where':{'id':_0x506311['params']['id']}},_0x481d25,_0xaec5e8,_0x41527b,_0x4403d3,_0x386a74;_0x5e1c69=_[_0xcc6a('0x41')]({},_0x5e1c69,_0x506311[_0xcc6a('0x4d')]);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x5e1c69)[_0xcc6a('0x29')](function(_0x55d129){if(_0x55d129){_0x481d25=_0x55d129;return _0x55d129['getFields']();}return null;})[_0xcc6a('0x29')](function(_0xd1a27b){if(_0xd1a27b){if(!_0xd1a27b[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xaec5e8=_0xd1a27b;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x421d0b){if(_0x421d0b){_0x41527b=_['keyBy'](_0x421d0b,'id');var _0x4a8863;var _0x58e6b4=squel[_0xcc6a('0x75')]();_0x58e6b4[_0xcc6a('0x76')](_0x481d25[_0xcc6a('0x77')]);for(var _0x729b2=0x0;_0x729b2<_0xaec5e8['length'];_0x729b2+=0x1){_0x4a8863=_0xaec5e8[_0x729b2][_0xcc6a('0x78')]?_0x41527b[_0xaec5e8[_0x729b2][_0xcc6a('0x78')]]['metric']:_0xaec5e8[_0x729b2][_0xcc6a('0x70')];_0x4a8863=_0xaec5e8[_0x729b2]['function']?_[_0xcc6a('0x79')](_0x586789[_0xaec5e8[_0x729b2]['function']],'%s',_0x4a8863):_0x4a8863;_0x4a8863=_0xaec5e8[_0x729b2][_0xcc6a('0x7a')]?_[_0xcc6a('0x79')](_0x389e5f[_0xaec5e8[_0x729b2][_0xcc6a('0x7a')]],'%s',_0x4a8863):_0x4a8863;if(_0xaec5e8[_0x729b2]['groupBy']){_0x58e6b4[_0xcc6a('0x7b')](_0x4a8863);}_0xaec5e8[_0x729b2]['orderBy']&&_0x58e6b4[_0xcc6a('0x3d')](_0x4a8863,_0xaec5e8[_0x729b2]['orderBy']===_0xcc6a('0x7c')?![]:!![]);_0x58e6b4[_0xcc6a('0x70')](_0x4a8863,_0xaec5e8[_0x729b2][_0xcc6a('0x7d')]||_0x4a8863);}if(_0x481d25[_0xcc6a('0x7e')]){_0x481d25[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x481d25['joins']);for(var _0x18f5dc=0x0;_0x18f5dc<_0x481d25[_0xcc6a('0x7e')][_0xcc6a('0x4c')];_0x18f5dc+=0x1){if(_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')]&&_['includes'](_0x3a6b7e,_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')])&&_0x481d25['joins'][_0x18f5dc]['parentKey']&&_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x80')]&&_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x81')]){_0x58e6b4[_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')]](_0x481d25['joins'][_0x18f5dc][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x481d25[_0xcc6a('0x77')],_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x83')],_0x481d25['joins'][_0x18f5dc]['foreignTable'],_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x81')]));}}}if(_0x481d25[_0xcc6a('0x84')]){_0x481d25[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x481d25[_0xcc6a('0x84')]);_0x58e6b4[_0xcc6a('0x3f')](_0x46d93b(_0x481d25['conditions'][_0xcc6a('0x7b')]));}_0x386a74=_0x58e6b4[_0xcc6a('0x85')]();_0x58e6b4[_0xcc6a('0x21')](_0x56d512);_0x58e6b4[_0xcc6a('0x1f')](0x0);logger[_0xcc6a('0x86')](_0xcc6a('0x87'),_0x58e6b4['toString']());return dbH[_0xcc6a('0x88')][_0xcc6a('0x37')](_0x58e6b4[_0xcc6a('0x89')](),{'type':dbH['sequelize'][_0xcc6a('0x8a')][_0xcc6a('0x8b')]});}})[_0xcc6a('0x29')](respondWithResult(_0x14d3ff,null))[_0xcc6a('0x48')](handleError(_0x14d3ff,null));};function runReport(_0x2a25df,_0x1f1ff7,_0x565bcd){var _0x45c45f=_0x1f1ff7[_0xcc6a('0x36')];var _0x58cd56=0xa;var _0x1848dd=[_0xcc6a('0x8c'),_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x5abd5c={'SUM':_0xcc6a('0x5e'),'COUNT':_0xcc6a('0x8d'),'COUNT DISTINCT':_0xcc6a('0x8e'),'MAX':_0xcc6a('0x5f'),'MIN':_0xcc6a('0x60'),'AVG':_0xcc6a('0x61'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x5be65b={'SEC_TO_TIME':_0xcc6a('0x65'),'DATE':_0xcc6a('0x66'),'HOUR':_0xcc6a('0x67'),'ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x2b5c15=function(_0x3207b2){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),_0xcc6a('0x6c'),_0xcc6a('0x6d'),_0xcc6a('0x8f')],_0x3207b2);};var _0x58fdb3=function(_0xb4b2b4){if(!_0xb4b2b4||!_0xb4b2b4[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x275e15='(',_0x53b419=0x0;_0x53b419<_0xb4b2b4[_0xcc6a('0x6e')]['length'];_0x53b419+=0x1){_0x53b419>0x0&&(_0x275e15+='\x20'+_0xb4b2b4[_0xcc6a('0x6f')]+'\x20');_0x275e15+=_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x7b')]?_0x58fdb3(_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x7b')]):_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x70')]+'\x20'+_0xb4b2b4['rules'][_0x53b419][_0xcc6a('0x71')]+(_0x2b5c15(_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x71')])?'\x20'+_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x72')]:'');}return _0x275e15+')';};var _0x4473ab={'where':{'id':_0x2a25df['id']}},_0x558e2f,_0x14a957,_0x350766,_0x589bff,_0x5661b5;_0x4473ab=_[_0xcc6a('0x41')]({},_0x4473ab,_0x565bcd);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x4473ab)[_0xcc6a('0x29')](function(_0x2f0b79){if(_0x2f0b79){_0x558e2f=_0x2f0b79;return _0x2f0b79['getFields']();}return null;})[_0xcc6a('0x29')](function(_0x4a268b){if(_0x4a268b){if(!_0x4a268b[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))][(_0xcc6a('0x90'))](_0xcc6a('0x91'),0x193);}_0x14a957=_0x4a268b;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x1f4c4e){if(_0x1f4c4e){_0x350766=_['keyBy'](_0x1f4c4e,'id');var _0x312431;var _0x2a850c=squel[_0xcc6a('0x75')]();_0x2a850c['from'](_0x558e2f[_0xcc6a('0x77')]);for(var _0xd5b9f3=0x0;_0xd5b9f3<_0x14a957[_0xcc6a('0x4c')];_0xd5b9f3+=0x1){_0x312431=_0x14a957[_0xd5b9f3][_0xcc6a('0x78')]?_0x350766[_0x14a957[_0xd5b9f3][_0xcc6a('0x78')]][_0xcc6a('0x92')]:_0x14a957[_0xd5b9f3][_0xcc6a('0x70')];_0x312431=_0x14a957[_0xd5b9f3]['function']?_[_0xcc6a('0x79')](_0x5abd5c[_0x14a957[_0xd5b9f3][_0xcc6a('0x93')]],'%s',_0x312431):_0x312431;_0x312431=_0x14a957[_0xd5b9f3][_0xcc6a('0x7a')]?_[_0xcc6a('0x79')](_0x5be65b[_0x14a957[_0xd5b9f3][_0xcc6a('0x7a')]],'%s',_0x312431):_0x312431;if(_0x14a957[_0xd5b9f3][_0xcc6a('0x94')]){_0x2a850c[_0xcc6a('0x7b')](_0x312431);}_0x14a957[_0xd5b9f3][_0xcc6a('0x95')]&&_0x2a850c['order'](_0x312431,_0x14a957[_0xd5b9f3]['orderBy']===_0xcc6a('0x7c')?![]:!![]);_0x2a850c['field'](_0x312431,_0x14a957[_0xd5b9f3][_0xcc6a('0x7d')]||_0x312431);}if(_0x558e2f[_0xcc6a('0x7e')]){_0x558e2f[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x558e2f[_0xcc6a('0x7e')]);for(var _0x1f7ee5=0x0;_0x1f7ee5<_0x558e2f[_0xcc6a('0x7e')]['length'];_0x1f7ee5+=0x1){if(_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['type']&&_['includes'](_0x1848dd,_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['type'])&&_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x83')]&&_0x558e2f['joins'][_0x1f7ee5]['foreignTable']&&_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['foreignKey']){_0x2a850c[_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x34')]](_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x558e2f['table'],_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x83')],_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x80')],_0x558e2f['joins'][_0x1f7ee5][_0xcc6a('0x81')]));}}}if(_0x558e2f[_0xcc6a('0x84')]){_0x558e2f[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x558e2f[_0xcc6a('0x84')]);_0x2a850c[_0xcc6a('0x3f')](_0x58fdb3(_0x558e2f[_0xcc6a('0x84')]['group']));}_0x5661b5=_0x2a850c[_0xcc6a('0x85')]();_0x2a850c[_0xcc6a('0x21')](_0x58cd56);_0x2a850c['offset'](0x0);return;}})[_0xcc6a('0x29')](function(){if(_0x1f1ff7[_0xcc6a('0x96')]===_0xcc6a('0x97')){return null;}var _0x2297ea=_[_0xcc6a('0x41')](_0x1f1ff7,{'name':_0x1f1ff7[_0xcc6a('0x98')]||_0x1f1ff7[_0xcc6a('0x36')]||_0x558e2f[_0xcc6a('0x36')],'basename':_0x45c45f,'savename':util[_0xcc6a('0x7a')](_0xcc6a('0x99'),_0x1f1ff7[_0xcc6a('0x36')]||_0x558e2f[_0xcc6a('0x36')],require(_0xcc6a('0x9a'))[_0xcc6a('0x9b')](0x4),_0x1f1ff7['output']||'csv'),'reportId':_0x558e2f['id'],'reportType':_0xcc6a('0x9c')});return db[_0xcc6a('0x9d')]['create'](_0x2297ea,{'raw':!![]});})[_0xcc6a('0x29')](function(_0x1e74a4){if(_0x558e2f[_0xcc6a('0x77')]==='cdr'){_0x5661b5[_0xcc6a('0x3f')](_0x558e2f['table']+_0xcc6a('0x9e'),_0x1f1ff7[_0xcc6a('0x9f')],_0x1f1ff7['endDate']);}else{_0x5661b5[_0xcc6a('0x3f')](_0x558e2f['table']+_0xcc6a('0xa0'),_0x1f1ff7[_0xcc6a('0x9f')],_0x1f1ff7[_0xcc6a('0xa1')]);}if(_0x1e74a4){logger[_0xcc6a('0xa2')](_0xcc6a('0xa3'),_0x5661b5[_0xcc6a('0x89')]());require('child_process')['fork'](path[_0xcc6a('0x8c')](__dirname,_0xcc6a('0xa4'),_0x1e74a4[_0xcc6a('0x96')]),[_0x1e74a4['id'],_0x5661b5['toString'](),path[_0xcc6a('0x8c')](__dirname,_0xcc6a('0xa5'),_0x1e74a4[_0xcc6a('0xa6')]),_0x45c45f]);return _0x1e74a4;}else{var _0x3b7b43=squel['select']();_0x3b7b43[_0xcc6a('0x76')]('('+_0x5661b5[_0xcc6a('0x89')]()+')',_0xcc6a('0xa7'));_0x3b7b43['field'](_0xcc6a('0xa8'),'count');_0x5661b5[_0xcc6a('0x21')](_0x1f1ff7[_0xcc6a('0x21')]||_0x58cd56);_0x5661b5['offset'](_0x1f1ff7[_0xcc6a('0x1f')]||0x0);return dbH[_0xcc6a('0x88')][_0xcc6a('0x37')](_0x3b7b43[_0xcc6a('0x89')](),{'type':dbH[_0xcc6a('0x88')][_0xcc6a('0x8a')][_0xcc6a('0x8b')]})[_0xcc6a('0x29')](function(_0x25ba57){if(!_0x25ba57[_0xcc6a('0x4c')]){_0x589bff=0x0;}else{_0x589bff=_0x25ba57[0x0][_0xcc6a('0x22')]||0x0;}return dbH['sequelize']['query'](_0x5661b5[_0xcc6a('0x89')](),{'type':dbH['sequelize'][_0xcc6a('0x8a')]['SELECT']});})['then'](function(_0x32ced0){return{'rows':_0x32ced0||[],'count':_0x589bff};});}});}exports[_0xcc6a('0xa9')]=function(_0xc638ae,_0x3367e8){return runReport(_0xc638ae['params'],_0xc638ae[_0xcc6a('0x37')],_0xc638ae['options'])['then'](respondWithResult(_0x3367e8,null))[_0xcc6a('0x48')](handleError(_0x3367e8,null));};exports[_0xcc6a('0xaa')]=runReport;exports[_0xcc6a('0x37')]=function(_0x38d805,_0x3f5f97){var _0x399eb6=0xa;var _0x2ae391=['join',_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x50b948={'SUM':_0xcc6a('0x5e'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xcc6a('0x8e'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xcc6a('0x61'),'GROUP_CONCAT':_0xcc6a('0x62'),'GROUP_CONCAT ASC':_0xcc6a('0x63'),'GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x1d2ae0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x41d17b=function(_0x1827e6){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),'IS\x20NOT\x20NULL',_0xcc6a('0x6d'),'IS\x20NOT\x20EMPTY'],_0x1827e6);};var _0xa70fa=function(_0x33ec76){if(!_0x33ec76||!_0x33ec76[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x30162c='(',_0x48746a=0x0;_0x48746a<_0x33ec76['rules'][_0xcc6a('0x4c')];_0x48746a+=0x1){_0x48746a>0x0&&(_0x30162c+='\x20'+_0x33ec76[_0xcc6a('0x6f')]+'\x20');_0x30162c+=_0x33ec76['rules'][_0x48746a][_0xcc6a('0x7b')]?_0xa70fa(_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x7b')]):_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x70')]+'\x20'+_0x33ec76[_0xcc6a('0x6e')][_0x48746a]['condition']+(_0x41d17b(_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x71')])?'\x20'+_0x33ec76[_0xcc6a('0x6e')][_0x48746a]['value']:'');}return _0x30162c+')';};var _0x54f0e4={'where':{'id':_0x38d805[_0xcc6a('0x4a')]['id']}},_0x559f4f,_0x545b15,_0x17a4e1,_0x5a7da7,_0x434c8b;_0x54f0e4=_['merge']({},_0x54f0e4,_0x38d805[_0xcc6a('0x4d')]);return db['AnalyticDefaultReport'][_0xcc6a('0x4e')](_0x54f0e4)[_0xcc6a('0x29')](function(_0xe9231f){if(_0xe9231f){_0x559f4f=_0xe9231f;return _0xe9231f[_0xcc6a('0xab')]();}return null;})[_0xcc6a('0x29')](function(_0x197961){if(_0x197961){if(!_0x197961[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))][(_0xcc6a('0x90'))](_0xcc6a('0x91'),0x193);}_0x545b15=_0x197961;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x171a2a){if(_0x171a2a){_0x17a4e1=_[_0xcc6a('0xac')](_0x171a2a,'id');var _0x13860b;var _0x3b52f7=squel[_0xcc6a('0x75')]();_0x3b52f7[_0xcc6a('0x76')](_0x559f4f[_0xcc6a('0x77')]);for(var _0x319f4a=0x0;_0x319f4a<_0x545b15[_0xcc6a('0x4c')];_0x319f4a+=0x1){_0x13860b=_0x545b15[_0x319f4a]['MetricId']?_0x17a4e1[_0x545b15[_0x319f4a][_0xcc6a('0x78')]][_0xcc6a('0x92')]:_0x545b15[_0x319f4a][_0xcc6a('0x70')];_0x13860b=_0x545b15[_0x319f4a]['function']?_[_0xcc6a('0x79')](_0x50b948[_0x545b15[_0x319f4a][_0xcc6a('0x93')]],'%s',_0x13860b):_0x13860b;_0x13860b=_0x545b15[_0x319f4a]['format']?_[_0xcc6a('0x79')](_0x1d2ae0[_0x545b15[_0x319f4a][_0xcc6a('0x7a')]],'%s',_0x13860b):_0x13860b;if(_0x545b15[_0x319f4a]['groupBy']){_0x3b52f7[_0xcc6a('0x7b')](_0x13860b);}_0x545b15[_0x319f4a][_0xcc6a('0x95')]&&_0x3b52f7[_0xcc6a('0x3d')](_0x13860b,_0x545b15[_0x319f4a][_0xcc6a('0x95')]===_0xcc6a('0x7c')?![]:!![]);_0x3b52f7[_0xcc6a('0x70')](_0x13860b,_0x545b15[_0x319f4a]['alias']||_0x13860b);}if(_0x559f4f['joins']){_0x559f4f[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x559f4f['joins']);for(var _0x154885=0x0;_0x154885<_0x559f4f['joins'][_0xcc6a('0x4c')];_0x154885+=0x1){if(_0x559f4f['joins'][_0x154885][_0xcc6a('0x34')]&&_[_0xcc6a('0x6a')](_0x2ae391,_0x559f4f[_0xcc6a('0x7e')][_0x154885]['type'])&&_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x83')]&&_0x559f4f[_0xcc6a('0x7e')][_0x154885]['foreignTable']&&_0x559f4f['joins'][_0x154885]['foreignKey']){_0x3b52f7[_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x34')]](_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x559f4f[_0xcc6a('0x77')],_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x83')],_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x80')],_0x559f4f[_0xcc6a('0x7e')][_0x154885]['foreignKey']));}}}if(_0x559f4f[_0xcc6a('0x84')]){_0x559f4f[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x559f4f['conditions']);_0x3b52f7[_0xcc6a('0x3f')](_0xa70fa(_0x559f4f[_0xcc6a('0x84')][_0xcc6a('0x7b')]));}_0x434c8b=_0x3b52f7['clone']();_0x3b52f7[_0xcc6a('0x21')](_0x399eb6);_0x3b52f7[_0xcc6a('0x1f')](0x0);logger[_0xcc6a('0x86')](_0xcc6a('0x87'),_0x3b52f7['toString']());return dbH[_0xcc6a('0x88')]['query'](_0x3b52f7['toString'](),{'type':dbH['sequelize'][_0xcc6a('0x8a')]['SELECT']});}})['then'](function(){return{'sql':_0x434c8b[_0xcc6a('0x89')]()};})[_0xcc6a('0x29')](respondWithResult(_0x3f5f97,null))[_0xcc6a('0x48')](handleError(_0x3f5f97,null));};
\ No newline at end of file
index 28d0a71..99c1470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0ac=['api','bluebird','request-promise','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','lodash','util','../../config/logger'];(function(_0x596815,_0x43d5c8){var _0xcb9cb5=function(_0x1bdc2c){while(--_0x1bdc2c){_0x596815['push'](_0x596815['shift']());}};_0xcb9cb5(++_0x43d5c8);}(_0xa0ac,0x153));var _0xca0a=function(_0x1fd3e1,_0x4f0ab1){_0x1fd3e1=_0x1fd3e1-0x0;var _0x4d7b8f=_0xa0ac[_0x1fd3e1];return _0x4d7b8f;};'use strict';var _=require(_0xca0a('0x0'));var util=require(_0xca0a('0x1'));var logger=require(_0xca0a('0x2'))(_0xca0a('0x3'));var moment=require('moment');var BPromise=require(_0xca0a('0x4'));var rp=require(_0xca0a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xca0a('0x6'));module[_0xca0a('0x7')]=function(_0x2265df,_0x29b40e){return _0x2265df['define'](_0xca0a('0x8'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb5c=['../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x4d180c,_0x45c68e){var _0x49b57e=function(_0x264741){while(--_0x264741){_0x4d180c['push'](_0x4d180c['shift']());}};_0x49b57e(++_0x45c68e);}(_0xdb5c,0xc6));var _0xcdb5=function(_0x5870bc,_0x148586){_0x5870bc=_0x5870bc-0x0;var _0x1dee4f=_0xdb5c[_0x5870bc];return _0x1dee4f;};'use strict';var _=require(_0xcdb5('0x0'));var util=require(_0xcdb5('0x1'));var logger=require(_0xcdb5('0x2'))('api');var moment=require(_0xcdb5('0x3'));var BPromise=require(_0xcdb5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcdb5('0x5'));var rimraf=require('rimraf');var config=require(_0xcdb5('0x6'));var attributes=require(_0xcdb5('0x7'));module[_0xcdb5('0x8')]=function(_0x13b78c,_0x2b153c){return _0x13b78c[_0xcdb5('0x9')](_0xcdb5('0xa'),attributes,{'tableName':_0xcdb5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2eded1b..56c250e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b2=['debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','error','code','result','message','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent'];(function(_0xa99afd,_0x814e74){var _0x30292a=function(_0x41350f){while(--_0x41350f){_0xa99afd['push'](_0xa99afd['shift']());}};_0x30292a(++_0x814e74);}(_0x87b2,0x8b));var _0x287b=function(_0x3c737c,_0x453bc3){_0x3c737c=_0x3c737c-0x0;var _0x3aebfe=_0x87b2[_0x3c737c];return _0x3aebfe;};'use strict';var _=require('lodash');var util=require(_0x287b('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x287b('0x1'));var fs=require('fs');var Redis=require(_0x287b('0x2'));var db=require(_0x287b('0x3'))['db'];var utils=require(_0x287b('0x4'));var logger=require(_0x287b('0x5'))(_0x287b('0x6'));var config=require(_0x287b('0x7'));var jayson=require(_0x287b('0x8'));var client=jayson[_0x287b('0x9')][_0x287b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59b22f,_0x366ea7,_0x12f4cd){return new BPromise(function(_0x57406e,_0x10c3fe){return client['request'](_0x59b22f,_0x12f4cd)[_0x287b('0xb')](function(_0x28ef7a){logger[_0x287b('0xc')](_0x287b('0xd'),_0x366ea7,_0x287b('0xe'));logger[_0x287b('0xf')](_0x287b('0x10'),_0x366ea7,_0x287b('0xe'),JSON['stringify'](_0x28ef7a));if(_0x28ef7a[_0x287b('0x11')]){if(_0x28ef7a[_0x287b('0x11')][_0x287b('0x12')]===0x1f4){logger['error'](_0x287b('0xd'),_0x366ea7,_0x28ef7a[_0x287b('0x11')]['message']);return _0x10c3fe(_0x28ef7a[_0x287b('0x11')]['message']);}logger[_0x287b('0x11')](_0x287b('0xd'),_0x366ea7,_0x28ef7a[_0x287b('0x11')]['message']);return _0x57406e(_0x28ef7a[_0x287b('0x11')]['message']);}else{logger[_0x287b('0xc')](_0x287b('0xd'),_0x366ea7,_0x287b('0xe'));_0x57406e(_0x28ef7a[_0x287b('0x13')][_0x287b('0x14')]);}})[_0x287b('0x15')](function(_0x293986){logger['error'](_0x287b('0xd'),_0x366ea7,_0x293986);_0x10c3fe(_0x293986);});});}
\ No newline at end of file
+var _0xcd09=['http','request','then','info','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message','AnalyticDefaultReport,\x20%s,\x20%s','result','catch','lodash','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x49dfd6,_0x25bb94){var _0x121460=function(_0x1b3641){while(--_0x1b3641){_0x49dfd6['push'](_0x49dfd6['shift']());}};_0x121460(++_0x25bb94);}(_0xcd09,0x183));var _0x9cd0=function(_0x2cdec6,_0x39d4c8){_0x2cdec6=_0x2cdec6-0x0;var _0xa36703=_0xcd09[_0x2cdec6];return _0xa36703;};'use strict';var _=require(_0x9cd0('0x0'));var util=require('util');var moment=require(_0x9cd0('0x1'));var BPromise=require('bluebird');var rs=require(_0x9cd0('0x2'));var fs=require('fs');var Redis=require(_0x9cd0('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9cd0('0x4'))(_0x9cd0('0x5'));var config=require(_0x9cd0('0x6'));var jayson=require(_0x9cd0('0x7'));var client=jayson[_0x9cd0('0x8')][_0x9cd0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x58e3f8,_0x447eaa,_0x210b47){return new BPromise(function(_0x12e1e1,_0x435b83){return client[_0x9cd0('0xa')](_0x58e3f8,_0x210b47)[_0x9cd0('0xb')](function(_0x6fd118){logger[_0x9cd0('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x447eaa,_0x9cd0('0xd'));logger[_0x9cd0('0xe')](_0x9cd0('0xf'),_0x447eaa,'request\x20sent',JSON[_0x9cd0('0x10')](_0x6fd118));if(_0x6fd118['error']){if(_0x6fd118['error']['code']===0x1f4){logger[_0x9cd0('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x447eaa,_0x6fd118['error'][_0x9cd0('0x12')]);return _0x435b83(_0x6fd118[_0x9cd0('0x11')][_0x9cd0('0x12')]);}logger['error'](_0x9cd0('0x13'),_0x447eaa,_0x6fd118['error']['message']);return _0x12e1e1(_0x6fd118[_0x9cd0('0x11')][_0x9cd0('0x12')]);}else{logger[_0x9cd0('0xc')](_0x9cd0('0x13'),_0x447eaa,_0x9cd0('0xd'));_0x12e1e1(_0x6fd118[_0x9cd0('0x14')][_0x9cd0('0x12')]);}})[_0x9cd0('0x15')](function(_0x2870e9){logger[_0x9cd0('0x11')](_0x9cd0('0x13'),_0x447eaa,_0x2870e9);_0x435b83(_0x2870e9);});});}
\ No newline at end of file
index aabf8df..86edff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3310=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','post','create','put','update','delete'];(function(_0x294cef,_0x55f570){var _0x4d700f=function(_0x182398){while(--_0x182398){_0x294cef['push'](_0x294cef['shift']());}};_0x4d700f(++_0x55f570);}(_0x3310,0x13a));var _0x0331=function(_0x468e18,_0x8e288b){_0x468e18=_0x468e18-0x0;var _0x418bde=_0x3310[_0x468e18];return _0x418bde;};'use strict';var multer=require('multer');var util=require(_0x0331('0x0'));var path=require(_0x0331('0x1'));var timeout=require(_0x0331('0x2'));var express=require(_0x0331('0x3'));var router=express[_0x0331('0x4')]();var fs_extra=require(_0x0331('0x5'));var auth=require(_0x0331('0x6'));var interaction=require(_0x0331('0x7'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router['get']('/',auth[_0x0331('0x8')](),controller['index']);router[_0x0331('0x9')](_0x0331('0xa'),auth[_0x0331('0x8')](),controller[_0x0331('0xb')]);router[_0x0331('0x9')](_0x0331('0xc'),auth[_0x0331('0x8')](),controller[_0x0331('0xd')]);router['get'](_0x0331('0xe'),auth['isAuthenticated'](),controller['run']);router[_0x0331('0x9')](_0x0331('0xf'),auth['isAuthenticated'](),controller[_0x0331('0x10')]);router[_0x0331('0x11')]('/',auth[_0x0331('0x8')](),controller[_0x0331('0x12')]);router[_0x0331('0x13')]('/:id',auth[_0x0331('0x8')](),controller[_0x0331('0x14')]);router[_0x0331('0x15')](_0x0331('0xa'),auth['isAuthenticated'](),controller[_0x0331('0x16')]);module[_0x0331('0x17')]=router;
\ No newline at end of file
+var _0x5e64=['destroy','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','/:id/preview','/:id/run','run','/:id/query','query','create','put','update','delete'];(function(_0x467087,_0x765057){var _0x1c3b15=function(_0x27ec92){while(--_0x27ec92){_0x467087['push'](_0x467087['shift']());}};_0x1c3b15(++_0x765057);}(_0x5e64,0x6a));var _0x45e6=function(_0x31ca3d,_0x1c20a7){_0x31ca3d=_0x31ca3d-0x0;var _0x5d9072=_0x5e64[_0x31ca3d];return _0x5d9072;};'use strict';var multer=require('multer');var util=require(_0x45e6('0x0'));var path=require(_0x45e6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x45e6('0x2')]();var fs_extra=require(_0x45e6('0x3'));var auth=require(_0x45e6('0x4'));var interaction=require(_0x45e6('0x5'));var config=require('../../config/environment');var controller=require(_0x45e6('0x6'));router[_0x45e6('0x7')]('/',auth[_0x45e6('0x8')](),controller[_0x45e6('0x9')]);router['get'](_0x45e6('0xa'),auth[_0x45e6('0x8')](),controller['show']);router['get'](_0x45e6('0xb'),auth[_0x45e6('0x8')](),controller['preview']);router['get'](_0x45e6('0xc'),auth[_0x45e6('0x8')](),controller[_0x45e6('0xd')]);router[_0x45e6('0x7')](_0x45e6('0xe'),auth[_0x45e6('0x8')](),controller[_0x45e6('0xf')]);router['post']('/',auth[_0x45e6('0x8')](),controller[_0x45e6('0x10')]);router[_0x45e6('0x11')](_0x45e6('0xa'),auth[_0x45e6('0x8')](),controller[_0x45e6('0x12')]);router[_0x45e6('0x13')](_0x45e6('0xa'),auth[_0x45e6('0x8')](),controller[_0x45e6('0x14')]);module['exports']=router;
\ No newline at end of file
index 8f2f736..b31079c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc186=['UNSIGNED','moment','exports','STRING','csv','pdf','xlsx','DATE','Loading','ENUM','manual','scheduled','INTEGER'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xc186,0xf8));var _0x6c18=function(_0x5031d1,_0x5c2350){_0x5031d1=_0x5031d1-0x0;var _0x42609c=_0xc186[_0x5031d1];return _0x42609c;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6c18('0x0'));module[_0x6c18('0x1')]={'name':{'type':Sequelize[_0x6c18('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x6c18('0x2')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x6c18('0x3'),_0x6c18('0x4'),_0x6c18('0x5')),'allowNull':![],'defaultValue':_0x6c18('0x3')},'savename':{'type':Sequelize[_0x6c18('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x6c18('0x6')]},'endDate':{'type':Sequelize[_0x6c18('0x6')]},'status':{'type':Sequelize[_0x6c18('0x2')],'defaultValue':_0x6c18('0x7')},'type':{'type':Sequelize[_0x6c18('0x8')](_0x6c18('0x9'),_0x6c18('0xa')),'allowNull':![],'defaultValue':_0x6c18('0x9')},'reportId':{'type':Sequelize[_0x6c18('0xb')](0xb)[_0x6c18('0xc')]},'reportType':{'type':Sequelize[_0x6c18('0x2')]}};
\ No newline at end of file
+var _0x5e37=['manual','INTEGER','UNSIGNED','moment','STRING','csv','xlsx','DATE','ENUM'];(function(_0x568c8b,_0x21c13f){var _0x3f9aa0=function(_0x2c36de){while(--_0x2c36de){_0x568c8b['push'](_0x568c8b['shift']());}};_0x3f9aa0(++_0x21c13f);}(_0x5e37,0x11a));var _0x75e3=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x5e37[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x75e3('0x0'));module['exports']={'name':{'type':Sequelize[_0x75e3('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0x75e3('0x1')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x75e3('0x2'),'pdf',_0x75e3('0x3')),'allowNull':![],'defaultValue':_0x75e3('0x2')},'savename':{'type':Sequelize[_0x75e3('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0x75e3('0x4')]},'endDate':{'type':Sequelize[_0x75e3('0x4')]},'status':{'type':Sequelize[_0x75e3('0x1')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0x75e3('0x5')](_0x75e3('0x6'),'scheduled'),'allowNull':![],'defaultValue':_0x75e3('0x6')},'reportId':{'type':Sequelize[_0x75e3('0x7')](0xb)[_0x75e3('0x8')]},'reportType':{'type':Sequelize[_0x75e3('0x1')]}};
\ No newline at end of file
index 486b4a4..b74d1d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf17b=['AnalyticExtractedReport','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','options','count','include','findAll','catch','params','rawAttributes','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','output','join','root','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','name','index'];(function(_0x1f4a62,_0x24192a){var _0x2a9fe7=function(_0x2c8e09){while(--_0x2c8e09){_0x1f4a62['push'](_0x1f4a62['shift']());}};_0x2a9fe7(++_0x24192a);}(_0xf17b,0x8d));var _0xbf17=function(_0x182af5,_0x2fb4bc){_0x182af5=_0x182af5-0x0;var _0x104988=_0xf17b[_0x182af5];return _0x104988;};'use strict';var emlformat=require(_0xbf17('0x0'));var rimraf=require(_0xbf17('0x1'));var zipdir=require(_0xbf17('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbf17('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbf17('0x4'));var util=require(_0xbf17('0x5'));var path=require(_0xbf17('0x6'));var sox=require(_0xbf17('0x7'));var csv=require(_0xbf17('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbf17('0x9'));var _=require(_0xbf17('0xa'));var squel=require('squel');var crypto=require(_0xbf17('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf17('0x8'));var querystring=require(_0xbf17('0xc'));var Papa=require(_0xbf17('0xd'));var Redis=require(_0xbf17('0xe'));var authService=require(_0xbf17('0xf'));var qs=require(_0xbf17('0x10'));var as=require(_0xbf17('0x11'));var hardwareService=require(_0xbf17('0x12'));var logger=require(_0xbf17('0x13'))(_0xbf17('0x14'));var utils=require('../../config/utils');var config=require(_0xbf17('0x15'));var licenseUtil=require(_0xbf17('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x983370,_0x43d914){_0x43d914=_0x43d914||0xcc;return function(_0x250a4d){if(_0x250a4d){return _0x983370[_0xbf17('0x17')](_0x43d914);}return _0x983370[_0xbf17('0x18')](_0x43d914)[_0xbf17('0x19')]();};}function respondWithResult(_0x2d698e,_0x4ac484){_0x4ac484=_0x4ac484||0xc8;return function(_0x52ddba){if(_0x52ddba){return _0x2d698e[_0xbf17('0x18')](_0x4ac484)[_0xbf17('0x1a')](_0x52ddba);}};}function respondWithFilteredResult(_0x5e8af0,_0x17983f){return function(_0x2708bd){if(_0x2708bd){var _0x29aef5=typeof _0x17983f[_0xbf17('0x1b')]===_0xbf17('0x1c')&&typeof _0x17983f[_0xbf17('0x1d')]===_0xbf17('0x1c');var _0x1c0561=_0x2708bd['count'];var _0x46419f=_0x29aef5?0x0:_0x17983f[_0xbf17('0x1b')];var _0x53d0a4=_0x29aef5?_0x2708bd['count']:_0x17983f[_0xbf17('0x1b')]+_0x17983f[_0xbf17('0x1d')];var _0x254987;if(_0x53d0a4>=_0x1c0561){_0x53d0a4=_0x1c0561;_0x254987=0xc8;}else{_0x254987=0xce;}_0x5e8af0[_0xbf17('0x18')](_0x254987);return _0x5e8af0[_0xbf17('0x1e')]('Content-Range',_0x46419f+'-'+_0x53d0a4+'/'+_0x1c0561)[_0xbf17('0x1a')](_0x2708bd);}return null;};}function patchUpdates(_0xbbda4d){return function(_0x335c85){try{jsonpatch[_0xbf17('0x1f')](_0x335c85,_0xbbda4d,!![]);}catch(_0x2a3f2f){return BPromise[_0xbf17('0x20')](_0x2a3f2f);}return _0x335c85[_0xbf17('0x21')]();};}function saveUpdates(_0x27038e,_0x4f1d83){return function(_0x220e1f){if(_0x220e1f){return _0x220e1f[_0xbf17('0x22')](_0x27038e)[_0xbf17('0x23')](function(_0x815aa2){return _0x815aa2;});}return null;};}function removeEntity(_0x226044,_0x509c0b){return function(_0x4846ba){if(_0x4846ba){return _0x4846ba[_0xbf17('0x24')]()['then'](function(){var _0x2279e4=_0x4846ba[_0xbf17('0x25')]({'plain':!![]});var _0x54abf0=_0xbf17('0x26');return db[_0xbf17('0x27')][_0xbf17('0x24')]({'where':{'type':_0x54abf0,'resourceId':_0x2279e4['id']}})['then'](function(){return _0x4846ba;});})['then'](function(){_0x226044[_0xbf17('0x18')](0xcc)[_0xbf17('0x19')]();});}};}function handleEntityNotFound(_0x1fb7d6,_0x389990){return function(_0x42fb82){if(!_0x42fb82){_0x1fb7d6[_0xbf17('0x17')](0x194);}return _0x42fb82;};}function handleError(_0x2225bc,_0x16ad8d){_0x16ad8d=_0x16ad8d||0x1f4;return function(_0x1c8186){logger[_0xbf17('0x28')](_0x1c8186['stack']);if(_0x1c8186[_0xbf17('0x29')]){delete _0x1c8186[_0xbf17('0x29')];}_0x2225bc[_0xbf17('0x18')](_0x16ad8d)['send'](_0x1c8186);};}exports[_0xbf17('0x2a')]=function(_0x1ea4dc,_0xb498d6){var _0x290552={},_0x18888f={},_0x2846f3={'count':0x0,'rows':[]};var _0xbc86b3=_['map'](db[_0xbf17('0x2b')]['rawAttributes'],function(_0x2b8855){return{'name':_0x2b8855[_0xbf17('0x2c')],'type':_0x2b8855[_0xbf17('0x2d')][_0xbf17('0x2e')]};});_0x18888f['model']=_[_0xbf17('0x2f')](_0xbc86b3,_0xbf17('0x29'));_0x18888f[_0xbf17('0x30')]=_[_0xbf17('0x31')](_0x1ea4dc[_0xbf17('0x30')]);_0x18888f[_0xbf17('0x32')]=_[_0xbf17('0x33')](_0x18888f[_0xbf17('0x34')],_0x18888f['query']);_0x290552[_0xbf17('0x35')]=_[_0xbf17('0x33')](_0x18888f[_0xbf17('0x34')],qs[_0xbf17('0x36')](_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x36')]));_0x290552['attributes']=_0x290552['attributes'][_0xbf17('0x37')]?_0x290552[_0xbf17('0x35')]:_0x18888f[_0xbf17('0x34')];if(!_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x38')](_0xbf17('0x39'))){_0x290552['limit']=qs[_0xbf17('0x1d')](_0x1ea4dc['query']['limit']);_0x290552[_0xbf17('0x1b')]=qs['offset'](_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x1b')]);}_0x290552[_0xbf17('0x3a')]=qs['sort'](_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x3b')]);_0x290552['where']=qs[_0xbf17('0x32')](_[_0xbf17('0x3c')](_0x1ea4dc['query'],_0x18888f['filters']),_0xbc86b3);if(_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x3d')]){_0x290552['where']=_[_0xbf17('0x3e')](_0x290552[_0xbf17('0x3f')],{'$or':_['map'](_0xbc86b3,function(_0xd3bcea){if(_0xd3bcea[_0xbf17('0x2d')]!=='VIRTUAL'){var _0x2381dc={};_0x2381dc[_0xd3bcea['name']]={'$like':'%'+_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x3d')]+'%'};return _0x2381dc;}})});}_0x290552=_[_0xbf17('0x3e')]({},_0x290552,_0x1ea4dc[_0xbf17('0x40')]);var _0x40939b={'where':_0x290552['where']};return db['AnalyticExtractedReport']['count'](_0x40939b)[_0xbf17('0x23')](function(_0x1a942d){_0x2846f3[_0xbf17('0x41')]=_0x1a942d;if(_0x1ea4dc[_0xbf17('0x30')]['includeAll']){_0x290552[_0xbf17('0x42')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0xbf17('0x43')](_0x290552);})['then'](function(_0x149698){_0x2846f3['rows']=_0x149698;return _0x2846f3;})[_0xbf17('0x23')](respondWithFilteredResult(_0xb498d6,_0x290552))[_0xbf17('0x44')](handleError(_0xb498d6,null));};exports['show']=function(_0x5a2f14,_0x1357f9){var _0x231dff={'raw':!![],'where':{'id':_0x5a2f14[_0xbf17('0x45')]['id']}},_0x5e0f10={};_0x5e0f10[_0xbf17('0x34')]=_[_0xbf17('0x31')](db[_0xbf17('0x2b')][_0xbf17('0x46')]);_0x5e0f10[_0xbf17('0x30')]=_[_0xbf17('0x31')](_0x5a2f14[_0xbf17('0x30')]);_0x5e0f10['filters']=_['intersection'](_0x5e0f10[_0xbf17('0x34')],_0x5e0f10['query']);_0x231dff[_0xbf17('0x35')]=_[_0xbf17('0x33')](_0x5e0f10['model'],qs[_0xbf17('0x36')](_0x5a2f14[_0xbf17('0x30')][_0xbf17('0x36')]));_0x231dff[_0xbf17('0x35')]=_0x231dff['attributes'][_0xbf17('0x37')]?_0x231dff[_0xbf17('0x35')]:_0x5e0f10[_0xbf17('0x34')];if(_0x5a2f14[_0xbf17('0x30')][_0xbf17('0x47')]){_0x231dff[_0xbf17('0x42')]=[{'all':!![]}];}_0x231dff=_['merge']({},_0x231dff,_0x5a2f14[_0xbf17('0x40')]);return db[_0xbf17('0x2b')][_0xbf17('0x48')](_0x231dff)['then'](handleEntityNotFound(_0x1357f9,null))[_0xbf17('0x23')](respondWithResult(_0x1357f9,null))[_0xbf17('0x44')](handleError(_0x1357f9,null));};exports[_0xbf17('0x49')]=function(_0x10e401,_0x45d703){return db[_0xbf17('0x2b')][_0xbf17('0x49')](_0x10e401[_0xbf17('0x4a')],{})[_0xbf17('0x23')](function(_0x46d6d9){var _0x3a0825=_0x10e401[_0xbf17('0x4b')][_0xbf17('0x25')]({'plain':!![]});if(!_0x3a0825)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a0825[_0xbf17('0x4c')]==='user'){var _0x20380a=_0x46d6d9[_0xbf17('0x25')]({'plain':!![]});var _0x59a83a=_0xbf17('0x26');return db[_0xbf17('0x4d')][_0xbf17('0x48')]({'where':{'name':_0x59a83a,'userProfileId':_0x3a0825[_0xbf17('0x4e')]},'raw':!![]})[_0xbf17('0x23')](function(_0x20e6e0){if(_0x20e6e0&&_0x20e6e0['autoAssociation']===0x0){return db[_0xbf17('0x27')]['create']({'name':_0x20380a['name'],'resourceId':_0x20380a['id'],'type':_0x20e6e0[_0xbf17('0x29')],'sectionId':_0x20e6e0['id']},{})[_0xbf17('0x23')](function(){return _0x46d6d9;});}else{return _0x46d6d9;}})['catch'](function(_0x5d66c2){logger[_0xbf17('0x28')](_0xbf17('0x4f'),_0x5d66c2);throw _0x5d66c2;});}return _0x46d6d9;})[_0xbf17('0x23')](respondWithResult(_0x45d703,0xc9))['catch'](handleError(_0x45d703,null));};exports[_0xbf17('0x22')]=function(_0x3b16c8,_0x40353a){if(_0x3b16c8['body']['id']){delete _0x3b16c8['body']['id'];}return db[_0xbf17('0x2b')][_0xbf17('0x48')]({'where':{'id':_0x3b16c8[_0xbf17('0x45')]['id']}})['then'](handleEntityNotFound(_0x40353a,null))[_0xbf17('0x23')](saveUpdates(_0x3b16c8['body'],null))[_0xbf17('0x23')](respondWithResult(_0x40353a,null))[_0xbf17('0x44')](handleError(_0x40353a,null));};exports['destroy']=function(_0x2b0388,_0x197be3){return db[_0xbf17('0x2b')][_0xbf17('0x48')]({'where':{'id':_0x2b0388[_0xbf17('0x45')]['id']}})['then'](handleEntityNotFound(_0x197be3,null))[_0xbf17('0x23')](removeEntity(_0x197be3,null))['catch'](handleError(_0x197be3,null));};exports[_0xbf17('0x50')]=function(_0x10b6ca,_0x5c5494,_0x2ee7eb){return db[_0xbf17('0x2b')][_0xbf17('0x48')]({'where':{'id':_0x10b6ca['params']['id']},'attributes':['name',_0xbf17('0x51'),'savename',_0xbf17('0x52')],'raw':!![]})[_0xbf17('0x23')](handleEntityNotFound(_0x5c5494,null))['then'](function(_0x548df1){if(_0x548df1){if(!fs['existsSync'](path[_0xbf17('0x53')](config[_0xbf17('0x54')],_0xbf17('0x55'),_0x548df1[_0xbf17('0x56')]))){throw new db[(_0xbf17('0x57'))][(_0xbf17('0x58'))](_0xbf17('0x59'));}if(_0x10b6ca['query'][_0xbf17('0x5a')]){return _0x5c5494['sendStatus'](0xc8);}return _0x5c5494['download'](path[_0xbf17('0x53')](config[_0xbf17('0x54')],_0xbf17('0x55'),_0x548df1[_0xbf17('0x56')]),util[_0xbf17('0x5b')]('%s.%s',_0x548df1[_0xbf17('0x51')]||_0x548df1[_0xbf17('0x29')],_0x548df1[_0xbf17('0x52')]['toLowerCase']()));}})[_0xbf17('0x44')](handleError(_0x5c5494,null));};
\ No newline at end of file
+var _0x6455=['merge','include','findAll','catch','show','params','length','options','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','download','basename','savename','output','existsSync','root','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','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/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','get','ExtractedReports','UserProfileResource','end','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL'];(function(_0x937d84,_0x5c5ea1){var _0x58c043=function(_0x409b57){while(--_0x409b57){_0x937d84['push'](_0x937d84['shift']());}};_0x58c043(++_0x5c5ea1);}(_0x6455,0x14a));var _0x5645=function(_0x4825d6,_0x261eb6){_0x4825d6=_0x4825d6-0x0;var _0x5503bf=_0x6455[_0x4825d6];return _0x5503bf;};'use strict';var emlformat=require(_0x5645('0x0'));var rimraf=require(_0x5645('0x1'));var zipdir=require(_0x5645('0x2'));var jsonpatch=require('fast-json-patch');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(_0x5645('0xb'));var _=require(_0x5645('0xc'));var squel=require(_0x5645('0xd'));var crypto=require(_0x5645('0xe'));var jsforce=require(_0x5645('0xf'));var deskjs=require(_0x5645('0x10'));var toCsv=require(_0x5645('0x9'));var querystring=require(_0x5645('0x11'));var Papa=require(_0x5645('0x12'));var Redis=require('ioredis');var authService=require(_0x5645('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5645('0x14'));var hardwareService=require(_0x5645('0x15'));var logger=require(_0x5645('0x16'))(_0x5645('0x17'));var utils=require(_0x5645('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x5645('0x19'));var db=require(_0x5645('0x1a'))['db'];function respondWithStatusCode(_0x2d777e,_0x344f0f){_0x344f0f=_0x344f0f||0xcc;return function(_0x2b40f7){if(_0x2b40f7){return _0x2d777e[_0x5645('0x1b')](_0x344f0f);}return _0x2d777e[_0x5645('0x1c')](_0x344f0f)['end']();};}function respondWithResult(_0x415359,_0x4def7c){_0x4def7c=_0x4def7c||0xc8;return function(_0x2645d0){if(_0x2645d0){return _0x415359['status'](_0x4def7c)[_0x5645('0x1d')](_0x2645d0);}};}function respondWithFilteredResult(_0x4fb916,_0x1d2823){return function(_0x4c5679){if(_0x4c5679){var _0x14d47d=typeof _0x1d2823['offset']==='undefined'&&typeof _0x1d2823['limit']===_0x5645('0x1e');var _0x256d65=_0x4c5679['count'];var _0x2455a3=_0x14d47d?0x0:_0x1d2823['offset'];var _0x34e32a=_0x14d47d?_0x4c5679[_0x5645('0x1f')]:_0x1d2823[_0x5645('0x20')]+_0x1d2823[_0x5645('0x21')];var _0x1e964c;if(_0x34e32a>=_0x256d65){_0x34e32a=_0x256d65;_0x1e964c=0xc8;}else{_0x1e964c=0xce;}_0x4fb916[_0x5645('0x1c')](_0x1e964c);return _0x4fb916[_0x5645('0x22')](_0x5645('0x23'),_0x2455a3+'-'+_0x34e32a+'/'+_0x256d65)[_0x5645('0x1d')](_0x4c5679);}return null;};}function patchUpdates(_0x3a8283){return function(_0x577cec){try{jsonpatch[_0x5645('0x24')](_0x577cec,_0x3a8283,!![]);}catch(_0x1dca12){return BPromise[_0x5645('0x25')](_0x1dca12);}return _0x577cec['save']();};}function saveUpdates(_0x1ef4a6,_0x3ea197){return function(_0x778fd2){if(_0x778fd2){return _0x778fd2[_0x5645('0x26')](_0x1ef4a6)[_0x5645('0x27')](function(_0x3772bd){return _0x3772bd;});}return null;};}function removeEntity(_0x2dde1b,_0x576487){return function(_0x1422d8){if(_0x1422d8){return _0x1422d8['destroy']()['then'](function(){var _0x4a80f1=_0x1422d8[_0x5645('0x28')]({'plain':!![]});var _0x4d7fee=_0x5645('0x29');return db[_0x5645('0x2a')]['destroy']({'where':{'type':_0x4d7fee,'resourceId':_0x4a80f1['id']}})[_0x5645('0x27')](function(){return _0x1422d8;});})[_0x5645('0x27')](function(){_0x2dde1b['status'](0xcc)[_0x5645('0x2b')]();});}};}function handleEntityNotFound(_0x285c39,_0x18b734){return function(_0x252763){if(!_0x252763){_0x285c39[_0x5645('0x1b')](0x194);}return _0x252763;};}function handleError(_0x5cacda,_0x1c748d){_0x1c748d=_0x1c748d||0x1f4;return function(_0x22060c){logger[_0x5645('0x2c')](_0x22060c[_0x5645('0x2d')]);if(_0x22060c['name']){delete _0x22060c[_0x5645('0x2e')];}_0x5cacda[_0x5645('0x1c')](_0x1c748d)[_0x5645('0x2f')](_0x22060c);};}exports[_0x5645('0x30')]=function(_0x4aad82,_0x4fe2f3){var _0x2c5756={},_0x33bd5d={},_0x2136e3={'count':0x0,'rows':[]};var _0x3842db=_[_0x5645('0x31')](db[_0x5645('0x32')][_0x5645('0x33')],function(_0x5394c5){return{'name':_0x5394c5[_0x5645('0x34')],'type':_0x5394c5[_0x5645('0x35')][_0x5645('0x36')]};});_0x33bd5d[_0x5645('0x37')]=_[_0x5645('0x31')](_0x3842db,'name');_0x33bd5d[_0x5645('0x38')]=_[_0x5645('0x39')](_0x4aad82[_0x5645('0x38')]);_0x33bd5d[_0x5645('0x3a')]=_[_0x5645('0x3b')](_0x33bd5d[_0x5645('0x37')],_0x33bd5d[_0x5645('0x38')]);_0x2c5756['attributes']=_[_0x5645('0x3b')](_0x33bd5d[_0x5645('0x37')],qs['fields'](_0x4aad82[_0x5645('0x38')][_0x5645('0x3c')]));_0x2c5756[_0x5645('0x3d')]=_0x2c5756['attributes']['length']?_0x2c5756[_0x5645('0x3d')]:_0x33bd5d['model'];if(!_0x4aad82[_0x5645('0x38')][_0x5645('0x3e')](_0x5645('0x3f'))){_0x2c5756[_0x5645('0x21')]=qs[_0x5645('0x21')](_0x4aad82[_0x5645('0x38')][_0x5645('0x21')]);_0x2c5756[_0x5645('0x20')]=qs[_0x5645('0x20')](_0x4aad82[_0x5645('0x38')][_0x5645('0x20')]);}_0x2c5756[_0x5645('0x40')]=qs[_0x5645('0x41')](_0x4aad82[_0x5645('0x38')][_0x5645('0x41')]);_0x2c5756[_0x5645('0x42')]=qs['filters'](_[_0x5645('0x43')](_0x4aad82['query'],_0x33bd5d[_0x5645('0x3a')]),_0x3842db);if(_0x4aad82[_0x5645('0x38')][_0x5645('0x44')]){_0x2c5756[_0x5645('0x42')]=_['merge'](_0x2c5756['where'],{'$or':_[_0x5645('0x31')](_0x3842db,function(_0x33f27d){if(_0x33f27d['type']!==_0x5645('0x45')){var _0x36ef97={};_0x36ef97[_0x33f27d[_0x5645('0x2e')]]={'$like':'%'+_0x4aad82['query'][_0x5645('0x44')]+'%'};return _0x36ef97;}})});}_0x2c5756=_[_0x5645('0x46')]({},_0x2c5756,_0x4aad82['options']);var _0x16a727={'where':_0x2c5756[_0x5645('0x42')]};return db[_0x5645('0x32')][_0x5645('0x1f')](_0x16a727)[_0x5645('0x27')](function(_0x6f3592){_0x2136e3[_0x5645('0x1f')]=_0x6f3592;if(_0x4aad82[_0x5645('0x38')]['includeAll']){_0x2c5756[_0x5645('0x47')]=[{'all':!![]}];}return db[_0x5645('0x32')][_0x5645('0x48')](_0x2c5756);})['then'](function(_0x4719a7){_0x2136e3['rows']=_0x4719a7;return _0x2136e3;})[_0x5645('0x27')](respondWithFilteredResult(_0x4fe2f3,_0x2c5756))[_0x5645('0x49')](handleError(_0x4fe2f3,null));};exports[_0x5645('0x4a')]=function(_0x232b0a,_0x4f1eed){var _0x44386b={'raw':!![],'where':{'id':_0x232b0a[_0x5645('0x4b')]['id']}},_0x2572e8={};_0x2572e8[_0x5645('0x37')]=_['keys'](db[_0x5645('0x32')][_0x5645('0x33')]);_0x2572e8[_0x5645('0x38')]=_['keys'](_0x232b0a[_0x5645('0x38')]);_0x2572e8[_0x5645('0x3a')]=_[_0x5645('0x3b')](_0x2572e8['model'],_0x2572e8[_0x5645('0x38')]);_0x44386b['attributes']=_[_0x5645('0x3b')](_0x2572e8[_0x5645('0x37')],qs[_0x5645('0x3c')](_0x232b0a[_0x5645('0x38')][_0x5645('0x3c')]));_0x44386b[_0x5645('0x3d')]=_0x44386b[_0x5645('0x3d')][_0x5645('0x4c')]?_0x44386b[_0x5645('0x3d')]:_0x2572e8[_0x5645('0x37')];if(_0x232b0a[_0x5645('0x38')]['includeAll']){_0x44386b[_0x5645('0x47')]=[{'all':!![]}];}_0x44386b=_[_0x5645('0x46')]({},_0x44386b,_0x232b0a[_0x5645('0x4d')]);return db[_0x5645('0x32')][_0x5645('0x4e')](_0x44386b)['then'](handleEntityNotFound(_0x4f1eed,null))['then'](respondWithResult(_0x4f1eed,null))[_0x5645('0x49')](handleError(_0x4f1eed,null));};exports['create']=function(_0x59ec26,_0x100da3){return db['AnalyticExtractedReport'][_0x5645('0x4f')](_0x59ec26[_0x5645('0x50')],{})[_0x5645('0x27')](function(_0x29f0c9){var _0x9356db=_0x59ec26[_0x5645('0x51')][_0x5645('0x28')]({'plain':!![]});if(!_0x9356db)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x9356db[_0x5645('0x52')]==='user'){var _0x590949=_0x29f0c9['get']({'plain':!![]});var _0xe8af44=_0x5645('0x29');return db[_0x5645('0x53')][_0x5645('0x4e')]({'where':{'name':_0xe8af44,'userProfileId':_0x9356db[_0x5645('0x54')]},'raw':!![]})[_0x5645('0x27')](function(_0x1ce579){if(_0x1ce579&&_0x1ce579[_0x5645('0x55')]===0x0){return db['UserProfileResource'][_0x5645('0x4f')]({'name':_0x590949[_0x5645('0x2e')],'resourceId':_0x590949['id'],'type':_0x1ce579[_0x5645('0x2e')],'sectionId':_0x1ce579['id']},{})[_0x5645('0x27')](function(){return _0x29f0c9;});}else{return _0x29f0c9;}})[_0x5645('0x49')](function(_0x340ac2){logger['error'](_0x5645('0x56'),_0x340ac2);throw _0x340ac2;});}return _0x29f0c9;})['then'](respondWithResult(_0x100da3,0xc9))[_0x5645('0x49')](handleError(_0x100da3,null));};exports[_0x5645('0x26')]=function(_0x34b011,_0x587236){if(_0x34b011[_0x5645('0x50')]['id']){delete _0x34b011[_0x5645('0x50')]['id'];}return db[_0x5645('0x32')][_0x5645('0x4e')]({'where':{'id':_0x34b011[_0x5645('0x4b')]['id']}})[_0x5645('0x27')](handleEntityNotFound(_0x587236,null))['then'](saveUpdates(_0x34b011['body'],null))['then'](respondWithResult(_0x587236,null))[_0x5645('0x49')](handleError(_0x587236,null));};exports[_0x5645('0x57')]=function(_0x239792,_0x242423){return db['AnalyticExtractedReport'][_0x5645('0x4e')]({'where':{'id':_0x239792['params']['id']}})[_0x5645('0x27')](handleEntityNotFound(_0x242423,null))[_0x5645('0x27')](removeEntity(_0x242423,null))[_0x5645('0x49')](handleError(_0x242423,null));};exports[_0x5645('0x58')]=function(_0x494f04,_0x3d5d6f,_0x45db7e){return db[_0x5645('0x32')][_0x5645('0x4e')]({'where':{'id':_0x494f04[_0x5645('0x4b')]['id']},'attributes':[_0x5645('0x2e'),_0x5645('0x59'),_0x5645('0x5a'),_0x5645('0x5b')],'raw':!![]})[_0x5645('0x27')](handleEntityNotFound(_0x3d5d6f,null))[_0x5645('0x27')](function(_0x49a168){if(_0x49a168){if(!fs[_0x5645('0x5c')](path['join'](config[_0x5645('0x5d')],'server/files/reports',_0x49a168[_0x5645('0x5a')]))){throw new db[(_0x5645('0x5e'))][(_0x5645('0x5f'))](_0x5645('0x60'));}if(_0x494f04[_0x5645('0x38')][_0x5645('0x61')]){return _0x3d5d6f[_0x5645('0x1b')](0xc8);}return _0x3d5d6f['download'](path['join'](config[_0x5645('0x5d')],'server/files/reports',_0x49a168[_0x5645('0x5a')]),util[_0x5645('0x62')](_0x5645('0x63'),_0x49a168[_0x5645('0x59')]||_0x49a168['name'],_0x49a168[_0x5645('0x5b')]['toLowerCase']()));}})[_0x5645('0x49')](handleError(_0x3d5d6f,null));};
\ No newline at end of file
index ec98ed7..4fa0efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a2=['define','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports'];(function(_0x3fbbc8,_0x396bcd){var _0x1d77f7=function(_0x77597e){while(--_0x77597e){_0x3fbbc8['push'](_0x3fbbc8['shift']());}};_0x1d77f7(++_0x396bcd);}(_0xc6a2,0x64));var _0x2c6a=function(_0x3f2aa7,_0xa46eeb){_0x3f2aa7=_0x3f2aa7-0x0;var _0x57cdf2=_0xc6a2[_0x3f2aa7];return _0x57cdf2;};'use strict';var _=require(_0x2c6a('0x0'));var util=require(_0x2c6a('0x1'));var logger=require(_0x2c6a('0x2'))(_0x2c6a('0x3'));var moment=require(_0x2c6a('0x4'));var BPromise=require(_0x2c6a('0x5'));var rp=require(_0x2c6a('0x6'));var fs=require('fs');var path=require(_0x2c6a('0x7'));var rimraf=require(_0x2c6a('0x8'));var config=require(_0x2c6a('0x9'));var attributes=require(_0x2c6a('0xa'));module[_0x2c6a('0xb')]=function(_0x4c1c09,_0x53b1f1){return _0x4c1c09[_0x2c6a('0xc')]('AnalyticExtractedReport',attributes,{'tableName':_0x2c6a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0536=['../../config/environment','./analyticExtractedReport.attributes','exports','AnalyticExtractedReport','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x200e70,_0x2c7a75){var _0x590f23=function(_0x4fd94d){while(--_0x4fd94d){_0x200e70['push'](_0x200e70['shift']());}};_0x590f23(++_0x2c7a75);}(_0x0536,0xf4));var _0x6053=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0536[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x6053('0x0'));var util=require(_0x6053('0x1'));var logger=require(_0x6053('0x2'))(_0x6053('0x3'));var moment=require('moment');var BPromise=require(_0x6053('0x4'));var rp=require(_0x6053('0x5'));var fs=require('fs');var path=require(_0x6053('0x6'));var rimraf=require(_0x6053('0x7'));var config=require(_0x6053('0x8'));var attributes=require(_0x6053('0x9'));module[_0x6053('0xa')]=function(_0x55a08c,_0x202781){return _0x55a08c['define'](_0x6053('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eeb732b..2d52270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeed2=['rpc','http','request','then','info','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','AnalyticExtractedReport,\x20%s,\x20%s','result','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x234e1a,_0x500d79){var _0x55aad2=function(_0x272396){while(--_0x272396){_0x234e1a['push'](_0x234e1a['shift']());}};_0x55aad2(++_0x500d79);}(_0xeed2,0xd3));var _0x2eed=function(_0x317067,_0x149d90){_0x317067=_0x317067-0x0;var _0x48e375=_0xeed2[_0x317067];return _0x48e375;};'use strict';var _=require(_0x2eed('0x0'));var util=require('util');var moment=require(_0x2eed('0x1'));var BPromise=require(_0x2eed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2eed('0x3'));var db=require(_0x2eed('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2eed('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x2eed('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x8c3047,_0x2cfe82,_0x9220d1){return new BPromise(function(_0x1b1a75,_0x40c564){return client[_0x2eed('0x7')](_0x8c3047,_0x9220d1)[_0x2eed('0x8')](function(_0x2eb951){logger[_0x2eed('0x9')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cfe82,_0x2eed('0xa'));logger['debug'](_0x2eed('0xb'),_0x2cfe82,_0x2eed('0xa'),JSON[_0x2eed('0xc')](_0x2eb951));if(_0x2eb951['error']){if(_0x2eb951[_0x2eed('0xd')][_0x2eed('0xe')]===0x1f4){logger[_0x2eed('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cfe82,_0x2eb951[_0x2eed('0xd')][_0x2eed('0xf')]);return _0x40c564(_0x2eb951[_0x2eed('0xd')][_0x2eed('0xf')]);}logger[_0x2eed('0xd')](_0x2eed('0x10'),_0x2cfe82,_0x2eb951[_0x2eed('0xd')][_0x2eed('0xf')]);return _0x1b1a75(_0x2eb951[_0x2eed('0xd')]['message']);}else{logger[_0x2eed('0x9')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cfe82,_0x2eed('0xa'));_0x1b1a75(_0x2eb951[_0x2eed('0x11')][_0x2eed('0xf')]);}})['catch'](function(_0x13a449){logger['error'](_0x2eed('0x10'),_0x2cfe82,_0x13a449);_0x40c564(_0x13a449);});});}
\ No newline at end of file
+var _0xf96d=['../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','../../mysqldb'];(function(_0x19d9b9,_0x43a94f){var _0x250375=function(_0x5a0188){while(--_0x5a0188){_0x19d9b9['push'](_0x19d9b9['shift']());}};_0x250375(++_0x43a94f);}(_0xf96d,0xa7));var _0xdf96=function(_0x569009,_0x284182){_0x569009=_0x569009-0x0;var _0xce3fa0=_0xf96d[_0x569009];return _0xce3fa0;};'use strict';var _=require(_0xdf96('0x0'));var util=require(_0xdf96('0x1'));var moment=require(_0xdf96('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf96('0x3'))['db'];var utils=require(_0xdf96('0x4'));var logger=require(_0xdf96('0x5'))(_0xdf96('0x6'));var config=require(_0xdf96('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdf96('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x15d03f,_0x45c091,_0x16277b){return new BPromise(function(_0x294f8b,_0x519399){return client['request'](_0x15d03f,_0x16277b)[_0xdf96('0x9')](function(_0x13f1e9){logger[_0xdf96('0xa')](_0xdf96('0xb'),_0x45c091,_0xdf96('0xc'));logger[_0xdf96('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x45c091,'request\x20sent',JSON[_0xdf96('0xe')](_0x13f1e9));if(_0x13f1e9[_0xdf96('0xf')]){if(_0x13f1e9[_0xdf96('0xf')][_0xdf96('0x10')]===0x1f4){logger[_0xdf96('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x45c091,_0x13f1e9[_0xdf96('0xf')][_0xdf96('0x11')]);return _0x519399(_0x13f1e9[_0xdf96('0xf')][_0xdf96('0x11')]);}logger[_0xdf96('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x45c091,_0x13f1e9['error'][_0xdf96('0x11')]);return _0x294f8b(_0x13f1e9[_0xdf96('0xf')][_0xdf96('0x11')]);}else{logger[_0xdf96('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x45c091,_0xdf96('0xc'));_0x294f8b(_0x13f1e9['result']['message']);}})[_0xdf96('0x12')](function(_0x22b685){logger[_0xdf96('0xf')](_0xdf96('0xb'),_0x45c091,_0x22b685);_0x519399(_0x22b685);});});}
\ No newline at end of file
index f16e496..4c1ba98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0018=['exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','create','put','update','delete'];(function(_0x1cf764,_0x59c063){var _0x49ca2b=function(_0x2fb3f8){while(--_0x2fb3f8){_0x1cf764['push'](_0x1cf764['shift']());}};_0x49ca2b(++_0x59c063);}(_0x0018,0x78));var _0x8001=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x0018[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x8001('0x0'));var util=require(_0x8001('0x1'));var path=require(_0x8001('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8001('0x3')]();var fs_extra=require(_0x8001('0x4'));var auth=require(_0x8001('0x5'));var interaction=require(_0x8001('0x6'));var config=require('../../config/environment');var controller=require(_0x8001('0x7'));router[_0x8001('0x8')]('/',auth[_0x8001('0x9')](),controller[_0x8001('0xa')]);router['get'](_0x8001('0xb'),auth[_0x8001('0x9')](),controller['show']);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x8001('0xc')]);router[_0x8001('0xd')](_0x8001('0xb'),auth[_0x8001('0x9')](),controller[_0x8001('0xe')]);router[_0x8001('0xf')]('/:id',auth[_0x8001('0x9')](),controller['destroy']);module[_0x8001('0x10')]=router;
\ No newline at end of file
+var _0xc9bd=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','download','create','put','update','delete','/:id'];(function(_0x206397,_0x34f9a9){var _0x4d597f=function(_0x26159a){while(--_0x26159a){_0x206397['push'](_0x206397['shift']());}};_0x4d597f(++_0x34f9a9);}(_0xc9bd,0x1ba));var _0xdc9b=function(_0x2e3545,_0x20a6ec){_0x2e3545=_0x2e3545-0x0;var _0xcf18f=_0xc9bd[_0x2e3545];return _0xcf18f;};'use strict';var multer=require(_0xdc9b('0x0'));var util=require(_0xdc9b('0x1'));var path=require(_0xdc9b('0x2'));var timeout=require(_0xdc9b('0x3'));var express=require(_0xdc9b('0x4'));var router=express[_0xdc9b('0x5')]();var fs_extra=require(_0xdc9b('0x6'));var auth=require(_0xdc9b('0x7'));var interaction=require(_0xdc9b('0x8'));var config=require(_0xdc9b('0x9'));var controller=require('./analyticExtractedReport.controller');router[_0xdc9b('0xa')]('/',auth[_0xdc9b('0xb')](),controller[_0xdc9b('0xc')]);router['get']('/:id',auth[_0xdc9b('0xb')](),controller[_0xdc9b('0xd')]);router[_0xdc9b('0xa')]('/:id/download',auth[_0xdc9b('0xb')](),controller[_0xdc9b('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xdc9b('0xf')]);router[_0xdc9b('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xdc9b('0x11')]);router[_0xdc9b('0x12')](_0xdc9b('0x13'),auth['isAuthenticated'](),controller[_0xdc9b('0x14')]);module[_0xdc9b('0x15')]=router;
\ No newline at end of file
index b8d4208..5d55a59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f4=['STRING','BOOLEAN','sequelize','exports'];(function(_0x5463a3,_0x57d1c4){var _0x54bb27=function(_0x158334){while(--_0x158334){_0x5463a3['push'](_0x5463a3['shift']());}};_0x54bb27(++_0x57d1c4);}(_0x87f4,0x17a));var _0x487f=function(_0x38dbb5,_0x427be1){_0x38dbb5=_0x38dbb5-0x0;var _0x34bd46=_0x87f4[_0x38dbb5];return _0x34bd46;};'use strict';var Sequelize=require(_0x487f('0x0'));module[_0x487f('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x487f('0x2')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x487f('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x487f('0x2')]},'custom':{'type':Sequelize[_0x487f('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xeecf=['BOOLEAN','TEXT','STRING'];(function(_0x39dc46,_0x4d250b){var _0x360b00=function(_0x4fd0bd){while(--_0x4fd0bd){_0x39dc46['push'](_0x39dc46['shift']());}};_0x360b00(++_0x4d250b);}(_0xeecf,0x1c3));var _0xfeec=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xeecf[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require('sequelize');module['exports']={'field':{'type':Sequelize[_0xfeec('0x0')]},'alias':{'type':Sequelize[_0xfeec('0x1')]},'function':{'type':Sequelize[_0xfeec('0x1')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0xfeec('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xfeec('0x1')]},'custom':{'type':Sequelize[_0xfeec('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 05a9dce..2c776e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd215=['key','keys','intersection','model','query','attributes','fields','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticFieldReport','findAll','rows','catch','show','params','create','body','bulkCreate','find','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','eml-format','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','end','error','name','index','map','rawAttributes','fieldName','type'];(function(_0x24606a,_0x4f999){var _0x2168ce=function(_0x310646){while(--_0x310646){_0x24606a['push'](_0x24606a['shift']());}};_0x2168ce(++_0x4f999);}(_0xd215,0xc2));var _0x5d21=function(_0x31b659,_0x44f3d2){_0x31b659=_0x31b659-0x0;var _0xe67ee4=_0xd215[_0x31b659];return _0xe67ee4;};'use strict';var emlformat=require(_0x5d21('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5d21('0x1'));var moment=require(_0x5d21('0x2'));var BPromise=require(_0x5d21('0x3'));var Mustache=require(_0x5d21('0x4'));var util=require(_0x5d21('0x5'));var path=require(_0x5d21('0x6'));var sox=require('sox');var csv=require(_0x5d21('0x7'));var ejs=require(_0x5d21('0x8'));var fs=require('fs');var fs_extra=require(_0x5d21('0x9'));var _=require('lodash');var squel=require(_0x5d21('0xa'));var crypto=require(_0x5d21('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5d21('0xc'));var toCsv=require(_0x5d21('0x7'));var querystring=require('querystring');var Papa=require(_0x5d21('0xd'));var Redis=require(_0x5d21('0xe'));var authService=require(_0x5d21('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d21('0x10'));var logger=require(_0x5d21('0x11'))(_0x5d21('0x12'));var utils=require(_0x5d21('0x13'));var config=require(_0x5d21('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5d21('0x15'))['db'];function respondWithStatusCode(_0x1227a9,_0x36e3a7){_0x36e3a7=_0x36e3a7||0xcc;return function(_0x4958ed){if(_0x4958ed){return _0x1227a9[_0x5d21('0x16')](_0x36e3a7);}return _0x1227a9['status'](_0x36e3a7)['end']();};}function respondWithResult(_0x4aaf55,_0x2d745e){_0x2d745e=_0x2d745e||0xc8;return function(_0x5f25f1){if(_0x5f25f1){return _0x4aaf55[_0x5d21('0x17')](_0x2d745e)['json'](_0x5f25f1);}};}function respondWithFilteredResult(_0x166f47,_0x1ecf8f){return function(_0x1627fa){if(_0x1627fa){var _0x182a51=typeof _0x1ecf8f['offset']===_0x5d21('0x18')&&typeof _0x1ecf8f[_0x5d21('0x19')]===_0x5d21('0x18');var _0x4781d6=_0x1627fa['count'];var _0x1b24fb=_0x182a51?0x0:_0x1ecf8f[_0x5d21('0x1a')];var _0x2de61f=_0x182a51?_0x1627fa[_0x5d21('0x1b')]:_0x1ecf8f['offset']+_0x1ecf8f[_0x5d21('0x19')];var _0x11f133;if(_0x2de61f>=_0x4781d6){_0x2de61f=_0x4781d6;_0x11f133=0xc8;}else{_0x11f133=0xce;}_0x166f47[_0x5d21('0x17')](_0x11f133);return _0x166f47['set'](_0x5d21('0x1c'),_0x1b24fb+'-'+_0x2de61f+'/'+_0x4781d6)['json'](_0x1627fa);}return null;};}function patchUpdates(_0x5a72c4){return function(_0x4bb804){try{jsonpatch[_0x5d21('0x1d')](_0x4bb804,_0x5a72c4,!![]);}catch(_0x3cc278){return BPromise[_0x5d21('0x1e')](_0x3cc278);}return _0x4bb804[_0x5d21('0x1f')]();};}function saveUpdates(_0x37df58,_0x3549a6){return function(_0x12183a){if(_0x12183a){return _0x12183a[_0x5d21('0x20')](_0x37df58)[_0x5d21('0x21')](function(_0x439eca){return _0x439eca;});}return null;};}function removeEntity(_0x5a6b81,_0x1deec2){return function(_0x1c9ae5){if(_0x1c9ae5){return _0x1c9ae5[_0x5d21('0x22')]()['then'](function(){_0x5a6b81[_0x5d21('0x17')](0xcc)[_0x5d21('0x23')]();});}};}function handleEntityNotFound(_0x353200,_0x5b2617){return function(_0x7feb5f){if(!_0x7feb5f){_0x353200[_0x5d21('0x16')](0x194);}return _0x7feb5f;};}function handleError(_0x12d7a7,_0x9beab8){_0x9beab8=_0x9beab8||0x1f4;return function(_0x53b644){logger[_0x5d21('0x24')](_0x53b644['stack']);if(_0x53b644['name']){delete _0x53b644[_0x5d21('0x25')];}_0x12d7a7[_0x5d21('0x17')](_0x9beab8)['send'](_0x53b644);};}exports[_0x5d21('0x26')]=function(_0x5e6412,_0x477d53){var _0x528128={},_0x22d813={},_0x3a22c3={'count':0x0,'rows':[]};var _0x34b05e=_[_0x5d21('0x27')](db['AnalyticFieldReport'][_0x5d21('0x28')],function(_0x603c79){return{'name':_0x603c79[_0x5d21('0x29')],'type':_0x603c79[_0x5d21('0x2a')][_0x5d21('0x2b')]};});_0x22d813['model']=_[_0x5d21('0x27')](_0x34b05e,_0x5d21('0x25'));_0x22d813['query']=_[_0x5d21('0x2c')](_0x5e6412['query']);_0x22d813['filters']=_[_0x5d21('0x2d')](_0x22d813[_0x5d21('0x2e')],_0x22d813[_0x5d21('0x2f')]);_0x528128[_0x5d21('0x30')]=_[_0x5d21('0x2d')](_0x22d813['model'],qs['fields'](_0x5e6412['query'][_0x5d21('0x31')]));_0x528128[_0x5d21('0x30')]=_0x528128['attributes'][_0x5d21('0x32')]?_0x528128[_0x5d21('0x30')]:_0x22d813[_0x5d21('0x2e')];if(!_0x5e6412[_0x5d21('0x2f')]['hasOwnProperty'](_0x5d21('0x33'))){_0x528128[_0x5d21('0x19')]=qs[_0x5d21('0x19')](_0x5e6412['query']['limit']);_0x528128[_0x5d21('0x1a')]=qs[_0x5d21('0x1a')](_0x5e6412['query'][_0x5d21('0x1a')]);}_0x528128[_0x5d21('0x34')]=qs['sort'](_0x5e6412[_0x5d21('0x2f')][_0x5d21('0x35')]);_0x528128['where']=qs[_0x5d21('0x36')](_[_0x5d21('0x37')](_0x5e6412[_0x5d21('0x2f')],_0x22d813[_0x5d21('0x36')]),_0x34b05e);if(_0x5e6412[_0x5d21('0x2f')]['filter']){_0x528128[_0x5d21('0x38')]=_[_0x5d21('0x39')](_0x528128[_0x5d21('0x38')],{'$or':_[_0x5d21('0x27')](_0x34b05e,function(_0x429daa){if(_0x429daa['type']!==_0x5d21('0x3a')){var _0x2e15e5={};_0x2e15e5[_0x429daa[_0x5d21('0x25')]]={'$like':'%'+_0x5e6412[_0x5d21('0x2f')][_0x5d21('0x3b')]+'%'};return _0x2e15e5;}})});}_0x528128=_[_0x5d21('0x39')]({},_0x528128,_0x5e6412[_0x5d21('0x3c')]);var _0x2e17d6={'where':_0x528128['where']};return db['AnalyticFieldReport']['count'](_0x2e17d6)[_0x5d21('0x21')](function(_0x114120){_0x3a22c3[_0x5d21('0x1b')]=_0x114120;if(_0x5e6412[_0x5d21('0x2f')][_0x5d21('0x3d')]){_0x528128[_0x5d21('0x3e')]=[{'all':!![]}];}return db[_0x5d21('0x3f')][_0x5d21('0x40')](_0x528128);})['then'](function(_0x2fca32){_0x3a22c3[_0x5d21('0x41')]=_0x2fca32;return _0x3a22c3;})['then'](respondWithFilteredResult(_0x477d53,_0x528128))[_0x5d21('0x42')](handleError(_0x477d53,null));};exports[_0x5d21('0x43')]=function(_0x56af36,_0xf9a838){var _0x5ef7c1={'raw':![],'where':{'id':_0x56af36[_0x5d21('0x44')]['id']}},_0x4c3d3f={};_0x4c3d3f['model']=_[_0x5d21('0x2c')](db['AnalyticFieldReport'][_0x5d21('0x28')]);_0x4c3d3f[_0x5d21('0x2f')]=_['keys'](_0x56af36[_0x5d21('0x2f')]);_0x4c3d3f['filters']=_['intersection'](_0x4c3d3f['model'],_0x4c3d3f[_0x5d21('0x2f')]);_0x5ef7c1[_0x5d21('0x30')]=_[_0x5d21('0x2d')](_0x4c3d3f[_0x5d21('0x2e')],qs[_0x5d21('0x31')](_0x56af36['query'][_0x5d21('0x31')]));_0x5ef7c1['attributes']=_0x5ef7c1[_0x5d21('0x30')]['length']?_0x5ef7c1[_0x5d21('0x30')]:_0x4c3d3f[_0x5d21('0x2e')];if(_0x56af36[_0x5d21('0x2f')]['includeAll']){_0x5ef7c1[_0x5d21('0x3e')]=[{'all':!![]}];}_0x5ef7c1=_['merge']({},_0x5ef7c1,_0x56af36[_0x5d21('0x3c')]);return db[_0x5d21('0x3f')]['find'](_0x5ef7c1)[_0x5d21('0x21')](handleEntityNotFound(_0xf9a838,null))['then'](respondWithResult(_0xf9a838,null))[_0x5d21('0x42')](handleError(_0xf9a838,null));};exports[_0x5d21('0x45')]=function(_0x3ed31b,_0x2b188d){return db[_0x5d21('0x3f')][_0x5d21('0x45')](_0x3ed31b[_0x5d21('0x46')],{})[_0x5d21('0x21')](respondWithResult(_0x2b188d,0xc9))[_0x5d21('0x42')](handleError(_0x2b188d,null));};exports['bulkCreate']=function(_0x595fc3,_0xaa3772){return db[_0x5d21('0x3f')][_0x5d21('0x47')](_0x595fc3[_0x5d21('0x46')],{'raw':![],'individualHooks':!![]})[_0x5d21('0x21')](respondWithResult(_0xaa3772,0xc9))[_0x5d21('0x42')](handleError(_0xaa3772,null));};exports[_0x5d21('0x20')]=function(_0x149fb0,_0x508b51){if(_0x149fb0['body']['id']){delete _0x149fb0['body']['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x149fb0[_0x5d21('0x44')]['id']}})['then'](handleEntityNotFound(_0x508b51,null))[_0x5d21('0x21')](saveUpdates(_0x149fb0[_0x5d21('0x46')],null))[_0x5d21('0x21')](respondWithResult(_0x508b51,null))['catch'](handleError(_0x508b51,null));};exports[_0x5d21('0x22')]=function(_0x33c1f9,_0x2c4370){return db['AnalyticFieldReport'][_0x5d21('0x48')]({'where':{'id':_0x33c1f9[_0x5d21('0x44')]['id']}})[_0x5d21('0x21')](handleEntityNotFound(_0x2c4370,null))['then'](removeEntity(_0x2c4370,null))[_0x5d21('0x42')](handleError(_0x2c4370,null));};exports['bulkDestroy']=function(_0x467f03,_0x1c382c){return db[_0x5d21('0x3f')]['destroy']({'where':{'id':_0x467f03[_0x5d21('0x2f')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0x5d21('0x21')](respondWithResult(_0x1c382c,0xcc))[_0x5d21('0x42')](handleError(_0x1c382c,null));};exports[_0x5d21('0x49')]=function(_0x1d3ff0,_0x14f143,_0x48fdb8){return db[_0x5d21('0x4a')][_0x5d21('0x4b')]({'where':{'id':_0x1d3ff0[_0x5d21('0x44')]['id']}})[_0x5d21('0x21')](handleEntityNotFound(_0x14f143,null))[_0x5d21('0x21')](function(_0x20b318){if(_0x20b318){return db[_0x5d21('0x4c')][_0x5d21('0x4d')](function(_0x331529){return db[_0x5d21('0x3f')][_0x5d21('0x22')]({'where':{'CustomReportId':_0x1d3ff0[_0x5d21('0x44')]['id']},'transaction':_0x331529})[_0x5d21('0x21')](function(_0x285009){var _0x359f47=_[_0x5d21('0x27')](_0x1d3ff0[_0x5d21('0x46')],function(_0x34d0e1){delete _0x34d0e1['id'];_0x34d0e1[_0x5d21('0x4e')]=_0x1d3ff0['params']['id'];return _0x34d0e1;});return db[_0x5d21('0x3f')][_0x5d21('0x47')](_0x359f47,{'transaction':_0x331529});});})['then'](function(){return db['AnalyticFieldReport']['findAll']({'where':{'CustomReportId':_0x1d3ff0['params']['id']}});});}})['then'](respondWithResult(_0x14f143,null))[_0x5d21('0x42')](handleError(_0x14f143,null));};
\ No newline at end of file
+var _0x9bdc=['query','filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','find','create','body','bulkCreate','update','bulkDestroy','ids','addFields','findOne','sequelize','CustomReportId','eml-format','zip-dir','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','end','error','stack','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','key'];(function(_0x368c1a,_0x4e99c3){var _0xc545ae=function(_0x1cb6df){while(--_0x1cb6df){_0x368c1a['push'](_0x368c1a['shift']());}};_0xc545ae(++_0x4e99c3);}(_0x9bdc,0xcd));var _0xc9bd=function(_0x4649e2,_0x660580){_0x4649e2=_0x4649e2-0x0;var _0x11fd61=_0x9bdc[_0x4649e2];return _0x11fd61;};'use strict';var emlformat=require(_0xc9bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc9bd('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc9bd('0x2'));var moment=require(_0xc9bd('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc9bd('0x4'));var sox=require(_0xc9bd('0x5'));var csv=require(_0xc9bd('0x6'));var ejs=require(_0xc9bd('0x7'));var fs=require('fs');var fs_extra=require(_0xc9bd('0x8'));var _=require(_0xc9bd('0x9'));var squel=require('squel');var crypto=require(_0xc9bd('0xa'));var jsforce=require(_0xc9bd('0xb'));var deskjs=require(_0xc9bd('0xc'));var toCsv=require(_0xc9bd('0x6'));var querystring=require(_0xc9bd('0xd'));var Papa=require(_0xc9bd('0xe'));var Redis=require(_0xc9bd('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc9bd('0x10'));var as=require(_0xc9bd('0x11'));var hardwareService=require(_0xc9bd('0x12'));var logger=require(_0xc9bd('0x13'))('api');var utils=require(_0xc9bd('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xc9bd('0x15'));var db=require(_0xc9bd('0x16'))['db'];function respondWithStatusCode(_0x5f2191,_0x304099){_0x304099=_0x304099||0xcc;return function(_0x3cad89){if(_0x3cad89){return _0x5f2191[_0xc9bd('0x17')](_0x304099);}return _0x5f2191[_0xc9bd('0x18')](_0x304099)['end']();};}function respondWithResult(_0x54aad9,_0x1e0bd7){_0x1e0bd7=_0x1e0bd7||0xc8;return function(_0x5a7955){if(_0x5a7955){return _0x54aad9[_0xc9bd('0x18')](_0x1e0bd7)['json'](_0x5a7955);}};}function respondWithFilteredResult(_0x2f3997,_0x308bb0){return function(_0x511310){if(_0x511310){var _0x2aebf7=typeof _0x308bb0[_0xc9bd('0x19')]===_0xc9bd('0x1a')&&typeof _0x308bb0[_0xc9bd('0x1b')]===_0xc9bd('0x1a');var _0x18c984=_0x511310[_0xc9bd('0x1c')];var _0xad4a9d=_0x2aebf7?0x0:_0x308bb0[_0xc9bd('0x19')];var _0x5c4e98=_0x2aebf7?_0x511310[_0xc9bd('0x1c')]:_0x308bb0['offset']+_0x308bb0[_0xc9bd('0x1b')];var _0x1537b9;if(_0x5c4e98>=_0x18c984){_0x5c4e98=_0x18c984;_0x1537b9=0xc8;}else{_0x1537b9=0xce;}_0x2f3997[_0xc9bd('0x18')](_0x1537b9);return _0x2f3997[_0xc9bd('0x1d')](_0xc9bd('0x1e'),_0xad4a9d+'-'+_0x5c4e98+'/'+_0x18c984)[_0xc9bd('0x1f')](_0x511310);}return null;};}function patchUpdates(_0x3b0cf0){return function(_0xedeac){try{jsonpatch[_0xc9bd('0x20')](_0xedeac,_0x3b0cf0,!![]);}catch(_0x51862b){return BPromise[_0xc9bd('0x21')](_0x51862b);}return _0xedeac[_0xc9bd('0x22')]();};}function saveUpdates(_0x31aa4d,_0x3ee653){return function(_0x193190){if(_0x193190){return _0x193190['update'](_0x31aa4d)[_0xc9bd('0x23')](function(_0x519611){return _0x519611;});}return null;};}function removeEntity(_0x47f62e,_0x5e8309){return function(_0x20787c){if(_0x20787c){return _0x20787c[_0xc9bd('0x24')]()['then'](function(){_0x47f62e['status'](0xcc)[_0xc9bd('0x25')]();});}};}function handleEntityNotFound(_0x508e70,_0x40c277){return function(_0x804aa3){if(!_0x804aa3){_0x508e70['sendStatus'](0x194);}return _0x804aa3;};}function handleError(_0x52d865,_0x52e537){_0x52e537=_0x52e537||0x1f4;return function(_0x4ca2e3){logger[_0xc9bd('0x26')](_0x4ca2e3[_0xc9bd('0x27')]);if(_0x4ca2e3['name']){delete _0x4ca2e3[_0xc9bd('0x28')];}_0x52d865[_0xc9bd('0x18')](_0x52e537)[_0xc9bd('0x29')](_0x4ca2e3);};}exports['index']=function(_0x303e0c,_0x3e4a4b){var _0x2e98b1={},_0xfcec91={},_0xae5487={'count':0x0,'rows':[]};var _0x22ebd7=_[_0xc9bd('0x2a')](db[_0xc9bd('0x2b')][_0xc9bd('0x2c')],function(_0x5a71b3){return{'name':_0x5a71b3[_0xc9bd('0x2d')],'type':_0x5a71b3['type'][_0xc9bd('0x2e')]};});_0xfcec91['model']=_[_0xc9bd('0x2a')](_0x22ebd7,'name');_0xfcec91[_0xc9bd('0x2f')]=_['keys'](_0x303e0c[_0xc9bd('0x2f')]);_0xfcec91[_0xc9bd('0x30')]=_['intersection'](_0xfcec91[_0xc9bd('0x31')],_0xfcec91['query']);_0x2e98b1['attributes']=_['intersection'](_0xfcec91['model'],qs[_0xc9bd('0x32')](_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x32')]));_0x2e98b1[_0xc9bd('0x33')]=_0x2e98b1[_0xc9bd('0x33')][_0xc9bd('0x34')]?_0x2e98b1[_0xc9bd('0x33')]:_0xfcec91['model'];if(!_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x35')](_0xc9bd('0x36'))){_0x2e98b1[_0xc9bd('0x1b')]=qs[_0xc9bd('0x1b')](_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x1b')]);_0x2e98b1[_0xc9bd('0x19')]=qs[_0xc9bd('0x19')](_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x19')]);}_0x2e98b1[_0xc9bd('0x37')]=qs[_0xc9bd('0x38')](_0x303e0c[_0xc9bd('0x2f')]['sort']);_0x2e98b1[_0xc9bd('0x39')]=qs[_0xc9bd('0x30')](_[_0xc9bd('0x3a')](_0x303e0c[_0xc9bd('0x2f')],_0xfcec91[_0xc9bd('0x30')]),_0x22ebd7);if(_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x3b')]){_0x2e98b1[_0xc9bd('0x39')]=_['merge'](_0x2e98b1[_0xc9bd('0x39')],{'$or':_[_0xc9bd('0x2a')](_0x22ebd7,function(_0x3092f0){if(_0x3092f0[_0xc9bd('0x3c')]!==_0xc9bd('0x3d')){var _0x4a11ad={};_0x4a11ad[_0x3092f0[_0xc9bd('0x28')]]={'$like':'%'+_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x3b')]+'%'};return _0x4a11ad;}})});}_0x2e98b1=_[_0xc9bd('0x3e')]({},_0x2e98b1,_0x303e0c[_0xc9bd('0x3f')]);var _0x186b28={'where':_0x2e98b1[_0xc9bd('0x39')]};return db[_0xc9bd('0x2b')]['count'](_0x186b28)[_0xc9bd('0x23')](function(_0x2ab43a){_0xae5487[_0xc9bd('0x1c')]=_0x2ab43a;if(_0x303e0c[_0xc9bd('0x2f')][_0xc9bd('0x40')]){_0x2e98b1[_0xc9bd('0x41')]=[{'all':!![]}];}return db[_0xc9bd('0x2b')][_0xc9bd('0x42')](_0x2e98b1);})[_0xc9bd('0x23')](function(_0x215f78){_0xae5487[_0xc9bd('0x43')]=_0x215f78;return _0xae5487;})[_0xc9bd('0x23')](respondWithFilteredResult(_0x3e4a4b,_0x2e98b1))[_0xc9bd('0x44')](handleError(_0x3e4a4b,null));};exports[_0xc9bd('0x45')]=function(_0x46f66b,_0x5529cf){var _0x32e326={'raw':![],'where':{'id':_0x46f66b[_0xc9bd('0x46')]['id']}},_0x579d02={};_0x579d02[_0xc9bd('0x31')]=_[_0xc9bd('0x47')](db['AnalyticFieldReport']['rawAttributes']);_0x579d02[_0xc9bd('0x2f')]=_['keys'](_0x46f66b[_0xc9bd('0x2f')]);_0x579d02[_0xc9bd('0x30')]=_[_0xc9bd('0x48')](_0x579d02[_0xc9bd('0x31')],_0x579d02[_0xc9bd('0x2f')]);_0x32e326[_0xc9bd('0x33')]=_[_0xc9bd('0x48')](_0x579d02[_0xc9bd('0x31')],qs[_0xc9bd('0x32')](_0x46f66b[_0xc9bd('0x2f')]['fields']));_0x32e326[_0xc9bd('0x33')]=_0x32e326[_0xc9bd('0x33')][_0xc9bd('0x34')]?_0x32e326['attributes']:_0x579d02[_0xc9bd('0x31')];if(_0x46f66b[_0xc9bd('0x2f')][_0xc9bd('0x40')]){_0x32e326[_0xc9bd('0x41')]=[{'all':!![]}];}_0x32e326=_[_0xc9bd('0x3e')]({},_0x32e326,_0x46f66b[_0xc9bd('0x3f')]);return db[_0xc9bd('0x2b')][_0xc9bd('0x49')](_0x32e326)[_0xc9bd('0x23')](handleEntityNotFound(_0x5529cf,null))[_0xc9bd('0x23')](respondWithResult(_0x5529cf,null))[_0xc9bd('0x44')](handleError(_0x5529cf,null));};exports[_0xc9bd('0x4a')]=function(_0xb909cc,_0x2ad28e){return db[_0xc9bd('0x2b')][_0xc9bd('0x4a')](_0xb909cc[_0xc9bd('0x4b')],{})[_0xc9bd('0x23')](respondWithResult(_0x2ad28e,0xc9))[_0xc9bd('0x44')](handleError(_0x2ad28e,null));};exports[_0xc9bd('0x4c')]=function(_0x366467,_0x585a4d){return db[_0xc9bd('0x2b')]['bulkCreate'](_0x366467[_0xc9bd('0x4b')],{'raw':![],'individualHooks':!![]})[_0xc9bd('0x23')](respondWithResult(_0x585a4d,0xc9))[_0xc9bd('0x44')](handleError(_0x585a4d,null));};exports[_0xc9bd('0x4d')]=function(_0x3c266d,_0x56ab24){if(_0x3c266d['body']['id']){delete _0x3c266d['body']['id'];}return db[_0xc9bd('0x2b')][_0xc9bd('0x49')]({'where':{'id':_0x3c266d[_0xc9bd('0x46')]['id']}})[_0xc9bd('0x23')](handleEntityNotFound(_0x56ab24,null))[_0xc9bd('0x23')](saveUpdates(_0x3c266d[_0xc9bd('0x4b')],null))[_0xc9bd('0x23')](respondWithResult(_0x56ab24,null))[_0xc9bd('0x44')](handleError(_0x56ab24,null));};exports[_0xc9bd('0x24')]=function(_0x4e4892,_0xc6958d){return db[_0xc9bd('0x2b')][_0xc9bd('0x49')]({'where':{'id':_0x4e4892[_0xc9bd('0x46')]['id']}})[_0xc9bd('0x23')](handleEntityNotFound(_0xc6958d,null))[_0xc9bd('0x23')](removeEntity(_0xc6958d,null))[_0xc9bd('0x44')](handleError(_0xc6958d,null));};exports[_0xc9bd('0x4e')]=function(_0x37f54c,_0x398c5a){return db['AnalyticFieldReport'][_0xc9bd('0x24')]({'where':{'id':_0x37f54c['query'][_0xc9bd('0x4f')]||[]},'raw':![],'individualHooks':!![]})[_0xc9bd('0x23')](respondWithResult(_0x398c5a,0xcc))[_0xc9bd('0x44')](handleError(_0x398c5a,null));};exports[_0xc9bd('0x50')]=function(_0x9296ba,_0x38dde6,_0x28a8f2){return db['AnalyticCustomReport'][_0xc9bd('0x51')]({'where':{'id':_0x9296ba[_0xc9bd('0x46')]['id']}})[_0xc9bd('0x23')](handleEntityNotFound(_0x38dde6,null))[_0xc9bd('0x23')](function(_0x183b0b){if(_0x183b0b){return db[_0xc9bd('0x52')]['transaction'](function(_0xa82974){return db[_0xc9bd('0x2b')][_0xc9bd('0x24')]({'where':{'CustomReportId':_0x9296ba[_0xc9bd('0x46')]['id']},'transaction':_0xa82974})[_0xc9bd('0x23')](function(_0x3fb16b){var _0x1fbc83=_[_0xc9bd('0x2a')](_0x9296ba['body'],function(_0x4a9547){delete _0x4a9547['id'];_0x4a9547[_0xc9bd('0x53')]=_0x9296ba['params']['id'];return _0x4a9547;});return db[_0xc9bd('0x2b')][_0xc9bd('0x4c')](_0x1fbc83,{'transaction':_0xa82974});});})[_0xc9bd('0x23')](function(){return db[_0xc9bd('0x2b')][_0xc9bd('0x42')]({'where':{'CustomReportId':_0x9296ba[_0xc9bd('0x46')]['id']}});});}})['then'](respondWithResult(_0x38dde6,null))['catch'](handleError(_0x38dde6,null));};
\ No newline at end of file
index e81a779..8321a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67e2=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./analyticFieldReport.attributes','define','analytics_report_fields'];(function(_0x3ed0d5,_0x5f0e1f){var _0x5e4563=function(_0x1517ea){while(--_0x1517ea){_0x3ed0d5['push'](_0x3ed0d5['shift']());}};_0x5e4563(++_0x5f0e1f);}(_0x67e2,0xf3));var _0x267e=function(_0x72ee58,_0x3ddc46){_0x72ee58=_0x72ee58-0x0;var _0x233307=_0x67e2[_0x72ee58];return _0x233307;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x267e('0x0'))(_0x267e('0x1'));var moment=require('moment');var BPromise=require(_0x267e('0x2'));var rp=require(_0x267e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x267e('0x4'));var config=require(_0x267e('0x5'));var attributes=require(_0x267e('0x6'));module['exports']=function(_0x4c8ce4,_0x2781dd){return _0x4c8ce4[_0x267e('0x7')]('AnalyticFieldReport',attributes,{'tableName':_0x267e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a00=['rimraf','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4ff414,_0x2d3aba){var _0x13d8e9=function(_0x55fe10){while(--_0x55fe10){_0x4ff414['push'](_0x4ff414['shift']());}};_0x13d8e9(++_0x2d3aba);}(_0x9a00,0xf5));var _0x09a0=function(_0x2d2701,_0x2c2a82){_0x2d2701=_0x2d2701-0x0;var _0x381696=_0x9a00[_0x2d2701];return _0x381696;};'use strict';var _=require(_0x09a0('0x0'));var util=require('util');var logger=require(_0x09a0('0x1'))(_0x09a0('0x2'));var moment=require(_0x09a0('0x3'));var BPromise=require(_0x09a0('0x4'));var rp=require(_0x09a0('0x5'));var fs=require('fs');var path=require(_0x09a0('0x6'));var rimraf=require(_0x09a0('0x7'));var config=require(_0x09a0('0x8'));var attributes=require(_0x09a0('0x9'));module[_0x09a0('0xa')]=function(_0x15c2e6,_0x3368b5){return _0x15c2e6[_0x09a0('0xb')](_0x09a0('0xc'),attributes,{'tableName':_0x09a0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a34c9d0..4406a88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42c1=['request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s'];(function(_0x52fd3d,_0x3af718){var _0x49b06d=function(_0x2f4a2b){while(--_0x2f4a2b){_0x52fd3d['push'](_0x52fd3d['shift']());}};_0x49b06d(++_0x3af718);}(_0x42c1,0x1ce));var _0x142c=function(_0x1ff321,_0x155fa5){_0x1ff321=_0x1ff321-0x0;var _0x5a81b3=_0x42c1[_0x1ff321];return _0x5a81b3;};'use strict';var _=require(_0x142c('0x0'));var util=require(_0x142c('0x1'));var moment=require(_0x142c('0x2'));var BPromise=require(_0x142c('0x3'));var rs=require(_0x142c('0x4'));var fs=require('fs');var Redis=require(_0x142c('0x5'));var db=require(_0x142c('0x6'))['db'];var utils=require(_0x142c('0x7'));var logger=require(_0x142c('0x8'))(_0x142c('0x9'));var config=require('../../config/environment');var jayson=require(_0x142c('0xa'));var client=jayson[_0x142c('0xb')][_0x142c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4bb2cf,_0x9649b,_0x2d3e1a){return new BPromise(function(_0x102dca,_0x7c61ac){return client[_0x142c('0xd')](_0x4bb2cf,_0x2d3e1a)['then'](function(_0x57beca){logger[_0x142c('0xe')](_0x142c('0xf'),_0x9649b,'request\x20sent');logger[_0x142c('0x10')](_0x142c('0x11'),_0x9649b,_0x142c('0x12'),JSON[_0x142c('0x13')](_0x57beca));if(_0x57beca[_0x142c('0x14')]){if(_0x57beca[_0x142c('0x14')]['code']===0x1f4){logger[_0x142c('0x14')](_0x142c('0xf'),_0x9649b,_0x57beca[_0x142c('0x14')][_0x142c('0x15')]);return _0x7c61ac(_0x57beca[_0x142c('0x14')][_0x142c('0x15')]);}logger[_0x142c('0x14')](_0x142c('0xf'),_0x9649b,_0x57beca['error'][_0x142c('0x15')]);return _0x102dca(_0x57beca['error']['message']);}else{logger[_0x142c('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x9649b,_0x142c('0x12'));_0x102dca(_0x57beca[_0x142c('0x16')][_0x142c('0x15')]);}})[_0x142c('0x17')](function(_0x1b02d5){logger[_0x142c('0x14')](_0x142c('0xf'),_0x9649b,_0x1b02d5);_0x7c61ac(_0x1b02d5);});});}
\ No newline at end of file
+var _0x3c03=['error','message','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3c03,0x16d));var _0x33c0=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x3c03[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x33c0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x33c0('0x1'));var fs=require('fs');var Redis=require(_0x33c0('0x2'));var db=require(_0x33c0('0x3'))['db'];var utils=require(_0x33c0('0x4'));var logger=require('../../config/logger')(_0x33c0('0x5'));var config=require(_0x33c0('0x6'));var jayson=require(_0x33c0('0x7'));var client=jayson[_0x33c0('0x8')][_0x33c0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x6b194f,_0x3eaa6c,_0x5e6e9f){return new BPromise(function(_0x198469,_0xb593d7){return client['request'](_0x6b194f,_0x5e6e9f)[_0x33c0('0xa')](function(_0x36b8f6){logger['info'](_0x33c0('0xb'),_0x3eaa6c,_0x33c0('0xc'));logger[_0x33c0('0xd')](_0x33c0('0xe'),_0x3eaa6c,'request\x20sent',JSON['stringify'](_0x36b8f6));if(_0x36b8f6[_0x33c0('0xf')]){if(_0x36b8f6[_0x33c0('0xf')]['code']===0x1f4){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x3eaa6c,_0x36b8f6[_0x33c0('0xf')][_0x33c0('0x10')]);return _0xb593d7(_0x36b8f6[_0x33c0('0xf')][_0x33c0('0x10')]);}logger[_0x33c0('0xf')](_0x33c0('0xb'),_0x3eaa6c,_0x36b8f6['error'][_0x33c0('0x10')]);return _0x198469(_0x36b8f6[_0x33c0('0xf')][_0x33c0('0x10')]);}else{logger['info'](_0x33c0('0xb'),_0x3eaa6c,'request\x20sent');_0x198469(_0x36b8f6[_0x33c0('0x11')]['message']);}})[_0x33c0('0x12')](function(_0x3e208a){logger[_0x33c0('0xf')](_0x33c0('0xb'),_0x3eaa6c,_0x3e208a);_0xb593d7(_0x3e208a);});});}
\ No newline at end of file
index 0989598..f115fc0 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(_0x5e2751,_0x518a55){var _0x139a39=function(_0x4802db){while(--_0x4802db){_0x5e2751['push'](_0x5e2751['shift']());}};_0x139a39(++_0x518a55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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(_0x4950e2,_0x52949e){var _0x442e08=function(_0x368de5){while(--_0x368de5){_0x4950e2['push'](_0x4950e2['shift']());}};_0x442e08(++_0x52949e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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 157d516..42739ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb544=['TEXT','STRING','name'];(function(_0x52121e,_0x4e7ac8){var _0x2d7778=function(_0x41775c){while(--_0x41775c){_0x52121e['push'](_0x52121e['shift']());}};_0x2d7778(++_0x4e7ac8);}(_0xb544,0xd0));var _0x4b54=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xb544[_0x88cd7b];return _0x56fcc8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4b54('0x0')],'allowNull':![],'unique':_0x4b54('0x1')},'table':{'type':Sequelize[_0x4b54('0x0')]},'metric':{'type':Sequelize[_0x4b54('0x2')]},'description':{'type':Sequelize[_0x4b54('0x0')]}};
\ No newline at end of file
+var _0x1b32=['TEXT','exports','STRING','name'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x1b32,0x85));var _0x21b3=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1b32[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require('sequelize');module[_0x21b3('0x0')]={'name':{'type':Sequelize[_0x21b3('0x1')],'allowNull':![],'unique':_0x21b3('0x2')},'table':{'type':Sequelize[_0x21b3('0x1')]},'metric':{'type':Sequelize[_0x21b3('0x3')]},'description':{'type':Sequelize[_0x21b3('0x1')]}};
\ No newline at end of file
index 12b56cf..c5eb1bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Metrics','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','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','count','offset','set','save','update','destroy','then','error','stack','name','send','map','AnalyticMetric','type','key','model','query','keys','intersection','fields'];(function(_0x27d0f1,_0x2ed0e5){var _0x27747b=function(_0x5c727d){while(--_0x5c727d){_0x27d0f1['push'](_0x27d0f1['shift']());}};_0x27747b(++_0x2ed0e5);}(_0xa41a,0x6b));var _0xaa41=function(_0x3b7f2e,_0x57d0b8){_0x3b7f2e=_0x3b7f2e-0x0;var _0x286451=_0xa41a[_0x3b7f2e];return _0x286451;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d0a54,_0x518b5b){_0x518b5b=_0x518b5b||0xcc;return function(_0x19bd69){if(_0x19bd69){return _0x1d0a54[_0xaa41('0x19')](_0x518b5b);}return _0x1d0a54[_0xaa41('0x1a')](_0x518b5b)[_0xaa41('0x1b')]();};}function respondWithResult(_0x6f9ade,_0x4eaf81){_0x4eaf81=_0x4eaf81||0xc8;return function(_0x1e9d7f){if(_0x1e9d7f){return _0x6f9ade[_0xaa41('0x1a')](_0x4eaf81)[_0xaa41('0x1c')](_0x1e9d7f);}};}function respondWithFilteredResult(_0x1ef7d9,_0x2a6988){return function(_0x2005ae){if(_0x2005ae){var _0x1e1e02=typeof _0x2a6988['offset']===_0xaa41('0x1d')&&typeof _0x2a6988[_0xaa41('0x1e')]===_0xaa41('0x1d');var _0x391b01=_0x2005ae[_0xaa41('0x1f')];var _0xd20ddf=_0x1e1e02?0x0:_0x2a6988[_0xaa41('0x20')];var _0x46e6d3=_0x1e1e02?_0x2005ae[_0xaa41('0x1f')]:_0x2a6988['offset']+_0x2a6988['limit'];var _0x1f502a;if(_0x46e6d3>=_0x391b01){_0x46e6d3=_0x391b01;_0x1f502a=0xc8;}else{_0x1f502a=0xce;}_0x1ef7d9[_0xaa41('0x1a')](_0x1f502a);return _0x1ef7d9[_0xaa41('0x21')]('Content-Range',_0xd20ddf+'-'+_0x46e6d3+'/'+_0x391b01)[_0xaa41('0x1c')](_0x2005ae);}return null;};}function patchUpdates(_0x1f692b){return function(_0x4e768e){try{jsonpatch['apply'](_0x4e768e,_0x1f692b,!![]);}catch(_0x1b1910){return BPromise['reject'](_0x1b1910);}return _0x4e768e[_0xaa41('0x22')]();};}function saveUpdates(_0x209c83,_0x3e2175){return function(_0x1f27f3){if(_0x1f27f3){return _0x1f27f3[_0xaa41('0x23')](_0x209c83)['then'](function(_0x43c430){return _0x43c430;});}return null;};}function removeEntity(_0x43a85c,_0x448a21){return function(_0x21f596){if(_0x21f596){return _0x21f596[_0xaa41('0x24')]()[_0xaa41('0x25')](function(){var _0x5c3074=_0x21f596['get']({'plain':!![]});var _0x16aec5='Metrics';return db['UserProfileResource'][_0xaa41('0x24')]({'where':{'type':_0x16aec5,'resourceId':_0x5c3074['id']}})['then'](function(){return _0x21f596;});})['then'](function(){_0x43a85c[_0xaa41('0x1a')](0xcc)[_0xaa41('0x1b')]();});}};}function handleEntityNotFound(_0x392214,_0x632fd2){return function(_0x3f5272){if(!_0x3f5272){_0x392214[_0xaa41('0x19')](0x194);}return _0x3f5272;};}function handleError(_0x57ef96,_0x30a174){_0x30a174=_0x30a174||0x1f4;return function(_0x1f0275){logger[_0xaa41('0x26')](_0x1f0275[_0xaa41('0x27')]);if(_0x1f0275[_0xaa41('0x28')]){delete _0x1f0275[_0xaa41('0x28')];}_0x57ef96[_0xaa41('0x1a')](_0x30a174)[_0xaa41('0x29')](_0x1f0275);};}exports['index']=function(_0x377add,_0x48b48b){var _0x5dad80={},_0x714537={},_0x1176bd={'count':0x0,'rows':[]};var _0x534a85=_[_0xaa41('0x2a')](db[_0xaa41('0x2b')]['rawAttributes'],function(_0x5022fb){return{'name':_0x5022fb['fieldName'],'type':_0x5022fb[_0xaa41('0x2c')][_0xaa41('0x2d')]};});_0x714537[_0xaa41('0x2e')]=_[_0xaa41('0x2a')](_0x534a85,'name');_0x714537[_0xaa41('0x2f')]=_[_0xaa41('0x30')](_0x377add[_0xaa41('0x2f')]);_0x714537['filters']=_[_0xaa41('0x31')](_0x714537[_0xaa41('0x2e')],_0x714537[_0xaa41('0x2f')]);_0x5dad80['attributes']=_[_0xaa41('0x31')](_0x714537[_0xaa41('0x2e')],qs['fields'](_0x377add[_0xaa41('0x2f')][_0xaa41('0x32')]));_0x5dad80[_0xaa41('0x33')]=_0x5dad80['attributes'][_0xaa41('0x34')]?_0x5dad80['attributes']:_0x714537[_0xaa41('0x2e')];if(!_0x377add[_0xaa41('0x2f')][_0xaa41('0x35')]('nolimit')){_0x5dad80['limit']=qs['limit'](_0x377add[_0xaa41('0x2f')][_0xaa41('0x1e')]);_0x5dad80[_0xaa41('0x20')]=qs[_0xaa41('0x20')](_0x377add['query']['offset']);}_0x5dad80[_0xaa41('0x36')]=qs[_0xaa41('0x37')](_0x377add[_0xaa41('0x2f')][_0xaa41('0x37')]);_0x5dad80[_0xaa41('0x38')]=qs[_0xaa41('0x39')](_[_0xaa41('0x3a')](_0x377add['query'],_0x714537[_0xaa41('0x39')]),_0x534a85);if(_0x377add[_0xaa41('0x2f')][_0xaa41('0x3b')]){_0x5dad80[_0xaa41('0x38')]=_['merge'](_0x5dad80['where'],{'$or':_[_0xaa41('0x2a')](_0x534a85,function(_0x275fa3){if(_0x275fa3['type']!==_0xaa41('0x3c')){var _0x563687={};_0x563687[_0x275fa3[_0xaa41('0x28')]]={'$like':'%'+_0x377add[_0xaa41('0x2f')][_0xaa41('0x3b')]+'%'};return _0x563687;}})});}_0x5dad80=_[_0xaa41('0x3d')]({},_0x5dad80,_0x377add[_0xaa41('0x3e')]);var _0x12ba1a={'where':_0x5dad80[_0xaa41('0x38')]};return db[_0xaa41('0x2b')]['count'](_0x12ba1a)[_0xaa41('0x25')](function(_0x2abf39){_0x1176bd[_0xaa41('0x1f')]=_0x2abf39;if(_0x377add[_0xaa41('0x2f')][_0xaa41('0x3f')]){_0x5dad80[_0xaa41('0x40')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x5dad80);})[_0xaa41('0x25')](function(_0x4f9086){_0x1176bd[_0xaa41('0x41')]=_0x4f9086;return _0x1176bd;})[_0xaa41('0x25')](respondWithFilteredResult(_0x48b48b,_0x5dad80))[_0xaa41('0x42')](handleError(_0x48b48b,null));};exports[_0xaa41('0x43')]=function(_0x2aac10,_0x10bf09){var _0x2db8d6={'raw':!![],'where':{'id':_0x2aac10[_0xaa41('0x44')]['id']}},_0x5ee74c={};_0x5ee74c['model']=_['keys'](db[_0xaa41('0x2b')]['rawAttributes']);_0x5ee74c['query']=_['keys'](_0x2aac10[_0xaa41('0x2f')]);_0x5ee74c['filters']=_[_0xaa41('0x31')](_0x5ee74c[_0xaa41('0x2e')],_0x5ee74c['query']);_0x2db8d6['attributes']=_[_0xaa41('0x31')](_0x5ee74c[_0xaa41('0x2e')],qs[_0xaa41('0x32')](_0x2aac10[_0xaa41('0x2f')][_0xaa41('0x32')]));_0x2db8d6[_0xaa41('0x33')]=_0x2db8d6[_0xaa41('0x33')][_0xaa41('0x34')]?_0x2db8d6[_0xaa41('0x33')]:_0x5ee74c['model'];if(_0x2aac10[_0xaa41('0x2f')][_0xaa41('0x3f')]){_0x2db8d6[_0xaa41('0x40')]=[{'all':!![]}];}_0x2db8d6=_[_0xaa41('0x3d')]({},_0x2db8d6,_0x2aac10[_0xaa41('0x3e')]);return db[_0xaa41('0x2b')]['find'](_0x2db8d6)[_0xaa41('0x25')](handleEntityNotFound(_0x10bf09,null))[_0xaa41('0x25')](respondWithResult(_0x10bf09,null))[_0xaa41('0x42')](handleError(_0x10bf09,null));};exports[_0xaa41('0x45')]=function(_0x57d1f6,_0x23bc61){return db['AnalyticMetric']['create'](_0x57d1f6[_0xaa41('0x46')],{})[_0xaa41('0x25')](function(_0x3e16ef){var _0x4ca114=_0x57d1f6[_0xaa41('0x47')][_0xaa41('0x48')]({'plain':!![]});if(!_0x4ca114)throw new Error(_0xaa41('0x49'));if(_0x4ca114['role']===_0xaa41('0x47')){var _0x3c4f24=_0x3e16ef[_0xaa41('0x48')]({'plain':!![]});var _0x1378f9=_0xaa41('0x4a');return db[_0xaa41('0x4b')][_0xaa41('0x4c')]({'where':{'name':_0x1378f9,'userProfileId':_0x4ca114[_0xaa41('0x4d')]},'raw':!![]})['then'](function(_0x9f0a81){if(_0x9f0a81&&_0x9f0a81['autoAssociation']===0x0){return db['UserProfileResource'][_0xaa41('0x45')]({'name':_0x3c4f24[_0xaa41('0x28')],'resourceId':_0x3c4f24['id'],'type':_0x9f0a81[_0xaa41('0x28')],'sectionId':_0x9f0a81['id']},{})[_0xaa41('0x25')](function(){return _0x3e16ef;});}else{return _0x3e16ef;}})[_0xaa41('0x42')](function(_0x288db3){logger[_0xaa41('0x26')](_0xaa41('0x4e'),_0x288db3);throw _0x288db3;});}return _0x3e16ef;})['then'](respondWithResult(_0x23bc61,0xc9))[_0xaa41('0x42')](handleError(_0x23bc61,null));};exports[_0xaa41('0x23')]=function(_0x1d518f,_0x4f9e92){if(_0x1d518f[_0xaa41('0x46')]['id']){delete _0x1d518f[_0xaa41('0x46')]['id'];}return db['AnalyticMetric'][_0xaa41('0x4c')]({'where':{'id':_0x1d518f[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x4f9e92,null))['then'](saveUpdates(_0x1d518f[_0xaa41('0x46')],null))[_0xaa41('0x25')](respondWithResult(_0x4f9e92,null))['catch'](handleError(_0x4f9e92,null));};exports['destroy']=function(_0x3745ed,_0x3cd14f){return db[_0xaa41('0x2b')]['find']({'where':{'id':_0x3745ed[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x3cd14f,null))[_0xaa41('0x25')](removeEntity(_0x3cd14f,null))[_0xaa41('0x42')](handleError(_0x3cd14f,null));};
\ No newline at end of file
+var _0x55ca=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','get','Metrics','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','AnalyticMetric','findAll','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x2d53aa,_0xa66faf){var _0x15a28b=function(_0x519d00){while(--_0x519d00){_0x2d53aa['push'](_0x2d53aa['shift']());}};_0x15a28b(++_0xa66faf);}(_0x55ca,0x126));var _0xa55c=function(_0x302d0b,_0x2c7dbb){_0x302d0b=_0x302d0b-0x0;var _0x3b9e1d=_0x55ca[_0x302d0b];return _0x3b9e1d;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){var _0x54b038=_0x5ba836[_0xa55c('0x21')]({'plain':!![]});var _0x190757=_0xa55c('0x22');return db[_0xa55c('0x23')][_0xa55c('0x24')]({'where':{'type':_0x190757,'resourceId':_0x54b038['id']}})[_0xa55c('0x20')](function(){return _0x5ba836;});})[_0xa55c('0x20')](function(){_0x1fc828[_0xa55c('0x18')](0xcc)[_0xa55c('0x25')]();});}};}function handleEntityNotFound(_0x3cd152,_0x1273d7){return function(_0x57f271){if(!_0x57f271){_0x3cd152[_0xa55c('0x26')](0x194);}return _0x57f271;};}function handleError(_0x28814f,_0x1c9f6b){_0x1c9f6b=_0x1c9f6b||0x1f4;return function(_0x906caa){logger['error'](_0x906caa[_0xa55c('0x27')]);if(_0x906caa[_0xa55c('0x28')]){delete _0x906caa[_0xa55c('0x28')];}_0x28814f[_0xa55c('0x18')](_0x1c9f6b)[_0xa55c('0x29')](_0x906caa);};}exports[_0xa55c('0x2a')]=function(_0x52d37f,_0x23e698){var _0x490b7d={},_0x35c9c2={},_0x1d730b={'count':0x0,'rows':[]};var _0x1cc53e=_[_0xa55c('0x2b')](db['AnalyticMetric'][_0xa55c('0x2c')],function(_0x2096ae){return{'name':_0x2096ae[_0xa55c('0x2d')],'type':_0x2096ae[_0xa55c('0x2e')][_0xa55c('0x2f')]};});_0x35c9c2[_0xa55c('0x30')]=_[_0xa55c('0x2b')](_0x1cc53e,_0xa55c('0x28'));_0x35c9c2[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x52d37f[_0xa55c('0x31')]);_0x35c9c2['filters']=_['intersection'](_0x35c9c2[_0xa55c('0x30')],_0x35c9c2[_0xa55c('0x31')]);_0x490b7d['attributes']=_[_0xa55c('0x33')](_0x35c9c2[_0xa55c('0x30')],qs[_0xa55c('0x34')](_0x52d37f[_0xa55c('0x31')][_0xa55c('0x34')]));_0x490b7d[_0xa55c('0x35')]=_0x490b7d[_0xa55c('0x35')][_0xa55c('0x36')]?_0x490b7d[_0xa55c('0x35')]:_0x35c9c2['model'];if(!_0x52d37f['query']['hasOwnProperty'](_0xa55c('0x37'))){_0x490b7d[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x52d37f['query'][_0xa55c('0x1c')]);_0x490b7d['offset']=qs[_0xa55c('0x1a')](_0x52d37f['query'][_0xa55c('0x1a')]);}_0x490b7d[_0xa55c('0x38')]=qs[_0xa55c('0x39')](_0x52d37f['query'][_0xa55c('0x39')]);_0x490b7d[_0xa55c('0x3a')]=qs['filters'](_[_0xa55c('0x3b')](_0x52d37f[_0xa55c('0x31')],_0x35c9c2['filters']),_0x1cc53e);if(_0x52d37f['query'][_0xa55c('0x3c')]){_0x490b7d['where']=_[_0xa55c('0x3d')](_0x490b7d[_0xa55c('0x3a')],{'$or':_['map'](_0x1cc53e,function(_0x542d76){if(_0x542d76['type']!=='VIRTUAL'){var _0x3b3308={};_0x3b3308[_0x542d76[_0xa55c('0x28')]]={'$like':'%'+_0x52d37f[_0xa55c('0x31')][_0xa55c('0x3c')]+'%'};return _0x3b3308;}})});}_0x490b7d=_[_0xa55c('0x3d')]({},_0x490b7d,_0x52d37f['options']);var _0x3d52d8={'where':_0x490b7d[_0xa55c('0x3a')]};return db[_0xa55c('0x3e')][_0xa55c('0x1d')](_0x3d52d8)[_0xa55c('0x20')](function(_0x23cef5){_0x1d730b['count']=_0x23cef5;if(_0x52d37f[_0xa55c('0x31')]['includeAll']){_0x490b7d['include']=[{'all':!![]}];}return db[_0xa55c('0x3e')][_0xa55c('0x3f')](_0x490b7d);})['then'](function(_0x2bd98b){_0x1d730b['rows']=_0x2bd98b;return _0x1d730b;})['then'](respondWithFilteredResult(_0x23e698,_0x490b7d))[_0xa55c('0x40')](handleError(_0x23e698,null));};exports[_0xa55c('0x41')]=function(_0x1630ac,_0x540337){var _0x1b2708={'raw':!![],'where':{'id':_0x1630ac['params']['id']}},_0xd5a006={};_0xd5a006[_0xa55c('0x30')]=_['keys'](db[_0xa55c('0x3e')][_0xa55c('0x2c')]);_0xd5a006['query']=_[_0xa55c('0x32')](_0x1630ac[_0xa55c('0x31')]);_0xd5a006['filters']=_[_0xa55c('0x33')](_0xd5a006[_0xa55c('0x30')],_0xd5a006[_0xa55c('0x31')]);_0x1b2708['attributes']=_[_0xa55c('0x33')](_0xd5a006['model'],qs[_0xa55c('0x34')](_0x1630ac[_0xa55c('0x31')][_0xa55c('0x34')]));_0x1b2708['attributes']=_0x1b2708[_0xa55c('0x35')][_0xa55c('0x36')]?_0x1b2708['attributes']:_0xd5a006[_0xa55c('0x30')];if(_0x1630ac[_0xa55c('0x31')]['includeAll']){_0x1b2708[_0xa55c('0x42')]=[{'all':!![]}];}_0x1b2708=_[_0xa55c('0x3d')]({},_0x1b2708,_0x1630ac['options']);return db[_0xa55c('0x3e')][_0xa55c('0x43')](_0x1b2708)[_0xa55c('0x20')](handleEntityNotFound(_0x540337,null))[_0xa55c('0x20')](respondWithResult(_0x540337,null))['catch'](handleError(_0x540337,null));};exports[_0xa55c('0x44')]=function(_0x58a7ea,_0x2157d6){return db[_0xa55c('0x3e')][_0xa55c('0x44')](_0x58a7ea['body'],{})[_0xa55c('0x20')](function(_0x250b00){var _0x574fe9=_0x58a7ea[_0xa55c('0x45')][_0xa55c('0x21')]({'plain':!![]});if(!_0x574fe9)throw new Error(_0xa55c('0x46'));if(_0x574fe9[_0xa55c('0x47')]===_0xa55c('0x45')){var _0x1c84d9=_0x250b00[_0xa55c('0x21')]({'plain':!![]});var _0x129626=_0xa55c('0x22');return db[_0xa55c('0x48')]['find']({'where':{'name':_0x129626,'userProfileId':_0x574fe9[_0xa55c('0x49')]},'raw':!![]})[_0xa55c('0x20')](function(_0x216de8){if(_0x216de8&&_0x216de8['autoAssociation']===0x0){return db[_0xa55c('0x23')][_0xa55c('0x44')]({'name':_0x1c84d9['name'],'resourceId':_0x1c84d9['id'],'type':_0x216de8[_0xa55c('0x28')],'sectionId':_0x216de8['id']},{})['then'](function(){return _0x250b00;});}else{return _0x250b00;}})[_0xa55c('0x40')](function(_0x228df4){logger[_0xa55c('0x4a')](_0xa55c('0x4b'),_0x228df4);throw _0x228df4;});}return _0x250b00;})[_0xa55c('0x20')](respondWithResult(_0x2157d6,0xc9))['catch'](handleError(_0x2157d6,null));};exports[_0xa55c('0x1f')]=function(_0x4607ca,_0x4b85cc){if(_0x4607ca[_0xa55c('0x4c')]['id']){delete _0x4607ca[_0xa55c('0x4c')]['id'];}return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x4607ca['params']['id']}})['then'](handleEntityNotFound(_0x4b85cc,null))[_0xa55c('0x20')](saveUpdates(_0x4607ca[_0xa55c('0x4c')],null))[_0xa55c('0x20')](respondWithResult(_0x4b85cc,null))[_0xa55c('0x40')](handleError(_0x4b85cc,null));};exports['destroy']=function(_0x30c0c9,_0x5ce463){return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x30c0c9[_0xa55c('0x4d')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x5ce463,null))[_0xa55c('0x20')](removeEntity(_0x5ce463,null))['catch'](handleError(_0x5ce463,null));};
\ No newline at end of file
index e518eb1..80c48bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2a=['analytics_metrics','lodash','util','../../config/logger','api','path','rimraf','./analyticMetric.attributes','exports','define'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0x1e389f,_0x59ec25){_0x1e389f=_0x1e389f-0x0;var _0x3d1491=_0x5a2a[_0x1e389f];return _0x3d1491;};'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
+var _0xafdd=['request-promise','path','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x6a53fa,_0x4cd267){var _0x47ee45=function(_0x1a79a4){while(--_0x1a79a4){_0x6a53fa['push'](_0x6a53fa['shift']());}};_0x47ee45(++_0x4cd267);}(_0xafdd,0x19a));var _0xdafd=function(_0x2fb2bf,_0x3888d8){_0x2fb2bf=_0x2fb2bf-0x0;var _0x583522=_0xafdd[_0x2fb2bf];return _0x583522;};'use strict';var _=require(_0xdafd('0x0'));var util=require(_0xdafd('0x1'));var logger=require(_0xdafd('0x2'))(_0xdafd('0x3'));var moment=require(_0xdafd('0x4'));var BPromise=require(_0xdafd('0x5'));var rp=require(_0xdafd('0x6'));var fs=require('fs');var path=require(_0xdafd('0x7'));var rimraf=require('rimraf');var config=require(_0xdafd('0x8'));var attributes=require(_0xdafd('0x9'));module[_0xdafd('0xa')]=function(_0x37f05a,_0xfa4ad6){return _0x37f05a[_0xdafd('0xb')](_0xdafd('0xc'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10c4af9..7c79e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf27b=['AnalyticMetric,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5c7dfa,_0x47cad7){var _0x102bb8=function(_0x73f55f){while(--_0x73f55f){_0x5c7dfa['push'](_0x5c7dfa['shift']());}};_0x102bb8(++_0x47cad7);}(_0xf27b,0x10d));var _0xbf27=function(_0x4a6cf8,_0x5534ef){_0x4a6cf8=_0x4a6cf8-0x0;var _0x22205e=_0xf27b[_0x4a6cf8];return _0x22205e;};'use strict';var _=require(_0xbf27('0x0'));var util=require(_0xbf27('0x1'));var moment=require(_0xbf27('0x2'));var BPromise=require('bluebird');var rs=require(_0xbf27('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbf27('0x4'))['db'];var utils=require(_0xbf27('0x5'));var logger=require(_0xbf27('0x6'))('rpc');var config=require(_0xbf27('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbf27('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x50de37,_0x4c63d4,_0x209eff){return new BPromise(function(_0x2241db,_0x253e03){return client[_0xbf27('0x9')](_0x50de37,_0x209eff)[_0xbf27('0xa')](function(_0x336e05){logger[_0xbf27('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x4c63d4,_0xbf27('0xc'));logger['debug'](_0xbf27('0xd'),_0x4c63d4,'request\x20sent',JSON[_0xbf27('0xe')](_0x336e05));if(_0x336e05[_0xbf27('0xf')]){if(_0x336e05[_0xbf27('0xf')]['code']===0x1f4){logger['error'](_0xbf27('0x10'),_0x4c63d4,_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);return _0x253e03(_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);}logger[_0xbf27('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x4c63d4,_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);return _0x2241db(_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);}else{logger[_0xbf27('0xb')](_0xbf27('0x10'),_0x4c63d4,'request\x20sent');_0x2241db(_0x336e05['result'][_0xbf27('0x11')]);}})[_0xbf27('0x12')](function(_0x26041d){logger[_0xbf27('0xf')](_0xbf27('0x10'),_0x4c63d4,_0x26041d);_0x253e03(_0x26041d);});});}
\ No newline at end of file
+var _0xf33c=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','AnalyticMetric,\x20%s,\x20%s','catch','lodash','util','bluebird','ioredis'];(function(_0x254d9f,_0x54ddb5){var _0x1eedb9=function(_0x2d05f1){while(--_0x2d05f1){_0x254d9f['push'](_0x254d9f['shift']());}};_0x1eedb9(++_0x54ddb5);}(_0xf33c,0xb9));var _0xcf33=function(_0x269b9a,_0x4dea2f){_0x269b9a=_0x269b9a-0x0;var _0x2a2a0f=_0xf33c[_0x269b9a];return _0x2a2a0f;};'use strict';var _=require(_0xcf33('0x0'));var util=require(_0xcf33('0x1'));var moment=require('moment');var BPromise=require(_0xcf33('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcf33('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcf33('0x4'));var logger=require(_0xcf33('0x5'))(_0xcf33('0x6'));var config=require(_0xcf33('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xcf33('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d7bf1,_0xef76c8,_0x4b95a2){return new BPromise(function(_0x23e147,_0x45cea4){return client[_0xcf33('0x9')](_0x1d7bf1,_0x4b95a2)[_0xcf33('0xa')](function(_0x2e1f30){logger[_0xcf33('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0xef76c8,_0xcf33('0xc'));logger[_0xcf33('0xd')](_0xcf33('0xe'),_0xef76c8,_0xcf33('0xc'),JSON[_0xcf33('0xf')](_0x2e1f30));if(_0x2e1f30['error']){if(_0x2e1f30[_0xcf33('0x10')][_0xcf33('0x11')]===0x1f4){logger[_0xcf33('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0xef76c8,_0x2e1f30[_0xcf33('0x10')][_0xcf33('0x12')]);return _0x45cea4(_0x2e1f30['error'][_0xcf33('0x12')]);}logger[_0xcf33('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0xef76c8,_0x2e1f30[_0xcf33('0x10')]['message']);return _0x23e147(_0x2e1f30[_0xcf33('0x10')]['message']);}else{logger[_0xcf33('0xb')](_0xcf33('0x13'),_0xef76c8,_0xcf33('0xc'));_0x23e147(_0x2e1f30['result'][_0xcf33('0x12')]);}})[_0xcf33('0x14')](function(_0x3175b8){logger['error'](_0xcf33('0x13'),_0xef76c8,_0x3175b8);_0x45cea4(_0x3175b8);});});}
\ No newline at end of file
index ad7c9fe..69b7255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa647=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x139eab,_0x2c36c1){var _0x1c7d30=function(_0x299029){while(--_0x299029){_0x139eab['push'](_0x139eab['shift']());}};_0x1c7d30(++_0x2c36c1);}(_0xa647,0x81));var _0x7a64=function(_0x4658df,_0x1d7495){_0x4658df=_0x4658df-0x0;var _0x20f120=_0xa647[_0x4658df];return _0x20f120;};'use strict';var multer=require(_0x7a64('0x0'));var util=require(_0x7a64('0x1'));var path=require(_0x7a64('0x2'));var timeout=require(_0x7a64('0x3'));var express=require(_0x7a64('0x4'));var router=express[_0x7a64('0x5')]();var fs_extra=require(_0x7a64('0x6'));var auth=require(_0x7a64('0x7'));var interaction=require(_0x7a64('0x8'));var config=require(_0x7a64('0x9'));var controller=require(_0x7a64('0xa'));router[_0x7a64('0xb')]('/',auth['isAuthenticated'](),controller[_0x7a64('0xc')]);router[_0x7a64('0xb')]('/:id',auth[_0x7a64('0xd')](),controller[_0x7a64('0xe')]);router[_0x7a64('0xf')]('/',auth[_0x7a64('0xd')](),controller[_0x7a64('0x10')]);router[_0x7a64('0x11')](_0x7a64('0x12'),auth[_0x7a64('0xd')](),controller[_0x7a64('0x13')]);router[_0x7a64('0x14')](_0x7a64('0x12'),auth[_0x7a64('0xd')](),controller[_0x7a64('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x2123=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','/:id','show','isAuthenticated','create','put','delete','destroy'];(function(_0x3e902d,_0x3c02eb){var _0x31f549=function(_0x500636){while(--_0x500636){_0x3e902d['push'](_0x3e902d['shift']());}};_0x31f549(++_0x3c02eb);}(_0x2123,0x190));var _0x3212=function(_0x3555f8,_0x3b75e8){_0x3555f8=_0x3555f8-0x0;var _0x6599c5=_0x2123[_0x3555f8];return _0x6599c5;};'use strict';var multer=require(_0x3212('0x0'));var util=require(_0x3212('0x1'));var path=require(_0x3212('0x2'));var timeout=require(_0x3212('0x3'));var express=require(_0x3212('0x4'));var router=express[_0x3212('0x5')]();var fs_extra=require(_0x3212('0x6'));var auth=require(_0x3212('0x7'));var interaction=require(_0x3212('0x8'));var config=require(_0x3212('0x9'));var controller=require(_0x3212('0xa'));router[_0x3212('0xb')]('/',auth['isAuthenticated'](),controller[_0x3212('0xc')]);router[_0x3212('0xb')](_0x3212('0xd'),auth['isAuthenticated'](),controller[_0x3212('0xe')]);router['post']('/',auth[_0x3212('0xf')](),controller[_0x3212('0x10')]);router[_0x3212('0x11')](_0x3212('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x3212('0x12')](_0x3212('0xd'),auth[_0x3212('0xf')](),controller[_0x3212('0x13')]);module[_0x3212('0x14')]=router;
\ No newline at end of file
index aa667cf..893d0b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe919=['sequelize','exports'];(function(_0x26a515,_0x286339){var _0x314682=function(_0x501b51){while(--_0x501b51){_0x26a515['push'](_0x26a515['shift']());}};_0x314682(++_0x286339);}(_0xe919,0x1d0));var _0x9e91=function(_0x91f539,_0x442a0c){_0x91f539=_0x91f539-0x0;var _0x2e3bdd=_0xe919[_0x91f539];return _0x2e3bdd;};'use strict';var Sequelize=require(_0x9e91('0x0'));module[_0x9e91('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0xe10b=['TEXT'];(function(_0xfdd893,_0x1a366d){var _0x5e9137=function(_0x5ad3d5){while(--_0x5ad3d5){_0xfdd893['push'](_0xfdd893['shift']());}};_0x5e9137(++_0x1a366d);}(_0xe10b,0x98));var _0xbe10=function(_0x474726,_0x29ab8a){_0x474726=_0x474726-0x0;var _0x3e0708=_0xe10b[_0x474726];return _0x3e0708;};'use strict';var Sequelize=require('sequelize');module['exports']={'tree':{'type':Sequelize[_0xbe10('0x0')],'allowNull':![]}};
\ No newline at end of file
index fd4108c..ae4c0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fae=['apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','AnalyticTreeReport','include','findAll','rows','catch','show','length','includeAll','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x2fae,0x1b0));var _0xe2fa=function(_0x3473ec,_0x24b113){_0x3473ec=_0x3473ec-0x0;var _0x4c5f36=_0x2fae[_0x3473ec];return _0x4c5f36;};'use strict';var emlformat=require(_0xe2fa('0x0'));var rimraf=require(_0xe2fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe2fa('0x2'));var moment=require(_0xe2fa('0x3'));var BPromise=require(_0xe2fa('0x4'));var Mustache=require(_0xe2fa('0x5'));var util=require(_0xe2fa('0x6'));var path=require(_0xe2fa('0x7'));var sox=require(_0xe2fa('0x8'));var csv=require('to-csv');var ejs=require(_0xe2fa('0x9'));var fs=require('fs');var fs_extra=require(_0xe2fa('0xa'));var _=require(_0xe2fa('0xb'));var squel=require(_0xe2fa('0xc'));var crypto=require(_0xe2fa('0xd'));var jsforce=require(_0xe2fa('0xe'));var deskjs=require(_0xe2fa('0xf'));var toCsv=require(_0xe2fa('0x10'));var querystring=require('querystring');var Papa=require(_0xe2fa('0x11'));var Redis=require(_0xe2fa('0x12'));var authService=require(_0xe2fa('0x13'));var qs=require(_0xe2fa('0x14'));var as=require(_0xe2fa('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe2fa('0x16'))('api');var utils=require(_0xe2fa('0x17'));var config=require(_0xe2fa('0x18'));var licenseUtil=require(_0xe2fa('0x19'));var db=require(_0xe2fa('0x1a'))['db'];function respondWithStatusCode(_0x1e4ae6,_0x3fc69f){_0x3fc69f=_0x3fc69f||0xcc;return function(_0x450231){if(_0x450231){return _0x1e4ae6['sendStatus'](_0x3fc69f);}return _0x1e4ae6[_0xe2fa('0x1b')](_0x3fc69f)[_0xe2fa('0x1c')]();};}function respondWithResult(_0x1e6d6e,_0x304451){_0x304451=_0x304451||0xc8;return function(_0x5253c1){if(_0x5253c1){return _0x1e6d6e[_0xe2fa('0x1b')](_0x304451)[_0xe2fa('0x1d')](_0x5253c1);}};}function respondWithFilteredResult(_0x204dc0,_0x4202f8){return function(_0x31c999){if(_0x31c999){var _0x4ec201=typeof _0x4202f8[_0xe2fa('0x1e')]===_0xe2fa('0x1f')&&typeof _0x4202f8[_0xe2fa('0x20')]===_0xe2fa('0x1f');var _0x255577=_0x31c999[_0xe2fa('0x21')];var _0x5b84f7=_0x4ec201?0x0:_0x4202f8['offset'];var _0xdce244=_0x4ec201?_0x31c999['count']:_0x4202f8[_0xe2fa('0x1e')]+_0x4202f8['limit'];var _0x4a37bc;if(_0xdce244>=_0x255577){_0xdce244=_0x255577;_0x4a37bc=0xc8;}else{_0x4a37bc=0xce;}_0x204dc0['status'](_0x4a37bc);return _0x204dc0[_0xe2fa('0x22')](_0xe2fa('0x23'),_0x5b84f7+'-'+_0xdce244+'/'+_0x255577)[_0xe2fa('0x1d')](_0x31c999);}return null;};}function patchUpdates(_0xd4ff70){return function(_0x220f99){try{jsonpatch[_0xe2fa('0x24')](_0x220f99,_0xd4ff70,!![]);}catch(_0x5da68c){return BPromise[_0xe2fa('0x25')](_0x5da68c);}return _0x220f99[_0xe2fa('0x26')]();};}function saveUpdates(_0x10a0a2,_0x539dbe){return function(_0xb62fe6){if(_0xb62fe6){return _0xb62fe6[_0xe2fa('0x27')](_0x10a0a2)[_0xe2fa('0x28')](function(_0x1c9e5f){return _0x1c9e5f;});}return null;};}function removeEntity(_0x1a3020,_0xd405d6){return function(_0x161f33){if(_0x161f33){return _0x161f33[_0xe2fa('0x29')]()[_0xe2fa('0x28')](function(){_0x1a3020[_0xe2fa('0x1b')](0xcc)[_0xe2fa('0x1c')]();});}};}function handleEntityNotFound(_0x1084c0,_0x19ef40){return function(_0x1cdbb4){if(!_0x1cdbb4){_0x1084c0[_0xe2fa('0x2a')](0x194);}return _0x1cdbb4;};}function handleError(_0x194ca0,_0x4be672){_0x4be672=_0x4be672||0x1f4;return function(_0x475ba7){logger[_0xe2fa('0x2b')](_0x475ba7[_0xe2fa('0x2c')]);if(_0x475ba7[_0xe2fa('0x2d')]){delete _0x475ba7[_0xe2fa('0x2d')];}_0x194ca0['status'](_0x4be672)[_0xe2fa('0x2e')](_0x475ba7);};}exports['index']=function(_0x54b8ec,_0x13e46e){var _0x59a561={},_0x3a792d={},_0x4d8bf5={'count':0x0,'rows':[]};var _0x4d3f14=_[_0xe2fa('0x2f')](db['AnalyticTreeReport'][_0xe2fa('0x30')],function(_0x41dd15){return{'name':_0x41dd15[_0xe2fa('0x31')],'type':_0x41dd15[_0xe2fa('0x32')][_0xe2fa('0x33')]};});_0x3a792d['model']=_[_0xe2fa('0x2f')](_0x4d3f14,'name');_0x3a792d[_0xe2fa('0x34')]=_[_0xe2fa('0x35')](_0x54b8ec[_0xe2fa('0x34')]);_0x3a792d[_0xe2fa('0x36')]=_[_0xe2fa('0x37')](_0x3a792d[_0xe2fa('0x38')],_0x3a792d[_0xe2fa('0x34')]);_0x59a561[_0xe2fa('0x39')]=_[_0xe2fa('0x37')](_0x3a792d['model'],qs[_0xe2fa('0x3a')](_0x54b8ec[_0xe2fa('0x34')][_0xe2fa('0x3a')]));_0x59a561[_0xe2fa('0x39')]=_0x59a561['attributes']['length']?_0x59a561[_0xe2fa('0x39')]:_0x3a792d[_0xe2fa('0x38')];if(!_0x54b8ec[_0xe2fa('0x34')][_0xe2fa('0x3b')]('nolimit')){_0x59a561[_0xe2fa('0x20')]=qs[_0xe2fa('0x20')](_0x54b8ec['query'][_0xe2fa('0x20')]);_0x59a561['offset']=qs['offset'](_0x54b8ec[_0xe2fa('0x34')][_0xe2fa('0x1e')]);}_0x59a561[_0xe2fa('0x3c')]=qs[_0xe2fa('0x3d')](_0x54b8ec['query'][_0xe2fa('0x3d')]);_0x59a561[_0xe2fa('0x3e')]=qs[_0xe2fa('0x36')](_['pick'](_0x54b8ec[_0xe2fa('0x34')],_0x3a792d[_0xe2fa('0x36')]),_0x4d3f14);if(_0x54b8ec['query'][_0xe2fa('0x3f')]){_0x59a561[_0xe2fa('0x3e')]=_[_0xe2fa('0x40')](_0x59a561[_0xe2fa('0x3e')],{'$or':_[_0xe2fa('0x2f')](_0x4d3f14,function(_0x59e4ea){if(_0x59e4ea['type']!==_0xe2fa('0x41')){var _0x43f273={};_0x43f273[_0x59e4ea[_0xe2fa('0x2d')]]={'$like':'%'+_0x54b8ec[_0xe2fa('0x34')]['filter']+'%'};return _0x43f273;}})});}_0x59a561=_[_0xe2fa('0x40')]({},_0x59a561,_0x54b8ec[_0xe2fa('0x42')]);var _0x166d54={'where':_0x59a561[_0xe2fa('0x3e')]};return db[_0xe2fa('0x43')][_0xe2fa('0x21')](_0x166d54)[_0xe2fa('0x28')](function(_0x4dd924){_0x4d8bf5[_0xe2fa('0x21')]=_0x4dd924;if(_0x54b8ec[_0xe2fa('0x34')]['includeAll']){_0x59a561[_0xe2fa('0x44')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xe2fa('0x45')](_0x59a561);})[_0xe2fa('0x28')](function(_0x25f0e3){_0x4d8bf5[_0xe2fa('0x46')]=_0x25f0e3;return _0x4d8bf5;})[_0xe2fa('0x28')](respondWithFilteredResult(_0x13e46e,_0x59a561))[_0xe2fa('0x47')](handleError(_0x13e46e,null));};exports[_0xe2fa('0x48')]=function(_0x1aea11,_0x18ea6c){var _0x30c0fa={'raw':!![],'where':{'id':_0x1aea11['params']['id']}},_0x39391a={};_0x39391a[_0xe2fa('0x38')]=_[_0xe2fa('0x35')](db[_0xe2fa('0x43')][_0xe2fa('0x30')]);_0x39391a[_0xe2fa('0x34')]=_[_0xe2fa('0x35')](_0x1aea11['query']);_0x39391a[_0xe2fa('0x36')]=_[_0xe2fa('0x37')](_0x39391a[_0xe2fa('0x38')],_0x39391a[_0xe2fa('0x34')]);_0x30c0fa[_0xe2fa('0x39')]=_[_0xe2fa('0x37')](_0x39391a[_0xe2fa('0x38')],qs[_0xe2fa('0x3a')](_0x1aea11[_0xe2fa('0x34')][_0xe2fa('0x3a')]));_0x30c0fa[_0xe2fa('0x39')]=_0x30c0fa[_0xe2fa('0x39')][_0xe2fa('0x49')]?_0x30c0fa[_0xe2fa('0x39')]:_0x39391a[_0xe2fa('0x38')];if(_0x1aea11[_0xe2fa('0x34')][_0xe2fa('0x4a')]){_0x30c0fa[_0xe2fa('0x44')]=[{'all':!![]}];}_0x30c0fa=_[_0xe2fa('0x40')]({},_0x30c0fa,_0x1aea11[_0xe2fa('0x42')]);return db[_0xe2fa('0x43')][_0xe2fa('0x4b')](_0x30c0fa)[_0xe2fa('0x28')](handleEntityNotFound(_0x18ea6c,null))['then'](respondWithResult(_0x18ea6c,null))['catch'](handleError(_0x18ea6c,null));};exports['create']=function(_0x4e98d0,_0x495a72){return db['AnalyticTreeReport'][_0xe2fa('0x4c')](_0x4e98d0[_0xe2fa('0x4d')],{})[_0xe2fa('0x28')](respondWithResult(_0x495a72,0xc9))[_0xe2fa('0x47')](handleError(_0x495a72,null));};exports['update']=function(_0x516272,_0x1ad866){if(_0x516272[_0xe2fa('0x4d')]['id']){delete _0x516272['body']['id'];}return db[_0xe2fa('0x43')][_0xe2fa('0x4b')]({'where':{'id':_0x516272['params']['id']}})[_0xe2fa('0x28')](handleEntityNotFound(_0x1ad866,null))[_0xe2fa('0x28')](saveUpdates(_0x516272[_0xe2fa('0x4d')],null))[_0xe2fa('0x28')](respondWithResult(_0x1ad866,null))[_0xe2fa('0x47')](handleError(_0x1ad866,null));};exports[_0xe2fa('0x29')]=function(_0x3b5684,_0x1e0533){return db[_0xe2fa('0x43')][_0xe2fa('0x4b')]({'where':{'id':_0x3b5684['params']['id']}})[_0xe2fa('0x28')](handleEntityNotFound(_0x1e0533,null))[_0xe2fa('0x28')](removeEntity(_0x1e0533,null))[_0xe2fa('0x47')](handleError(_0x1e0533,null));};
\ No newline at end of file
+var _0x7454=['nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','show','params','length','create','body','update','find','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','set','Content-Range','json','apply','reject','save','then','destroy','end','error','stack','name','send','map','AnalyticTreeReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields'];(function(_0xa4df7d,_0x3a9cdd){var _0x578677=function(_0x544dcf){while(--_0x544dcf){_0xa4df7d['push'](_0xa4df7d['shift']());}};_0x578677(++_0x3a9cdd);}(_0x7454,0x146));var _0x4745=function(_0x1083f0,_0x190add){_0x1083f0=_0x1083f0-0x0;var _0x3e671f=_0x7454[_0x1083f0];return _0x3e671f;};'use strict';var emlformat=require(_0x4745('0x0'));var rimraf=require(_0x4745('0x1'));var zipdir=require(_0x4745('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4745('0x3'));var moment=require(_0x4745('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4745('0x5'));var util=require('util');var path=require(_0x4745('0x6'));var sox=require(_0x4745('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4745('0x8'));var _=require(_0x4745('0x9'));var squel=require(_0x4745('0xa'));var crypto=require(_0x4745('0xb'));var jsforce=require(_0x4745('0xc'));var deskjs=require(_0x4745('0xd'));var toCsv=require(_0x4745('0xe'));var querystring=require(_0x4745('0xf'));var Papa=require('papaparse');var Redis=require(_0x4745('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4745('0x11'));var as=require(_0x4745('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4745('0x13'))(_0x4745('0x14'));var utils=require(_0x4745('0x15'));var config=require(_0x4745('0x16'));var licenseUtil=require(_0x4745('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42eb96,_0x36a5b4){_0x36a5b4=_0x36a5b4||0xcc;return function(_0x5c42fc){if(_0x5c42fc){return _0x42eb96[_0x4745('0x18')](_0x36a5b4);}return _0x42eb96[_0x4745('0x19')](_0x36a5b4)['end']();};}function respondWithResult(_0x5e591d,_0x1f839d){_0x1f839d=_0x1f839d||0xc8;return function(_0x42804c){if(_0x42804c){return _0x5e591d[_0x4745('0x19')](_0x1f839d)['json'](_0x42804c);}};}function respondWithFilteredResult(_0xd76a7c,_0x1ed534){return function(_0xa7118d){if(_0xa7118d){var _0x378b72=typeof _0x1ed534[_0x4745('0x1a')]===_0x4745('0x1b')&&typeof _0x1ed534[_0x4745('0x1c')]===_0x4745('0x1b');var _0x4cf789=_0xa7118d['count'];var _0x387a08=_0x378b72?0x0:_0x1ed534[_0x4745('0x1a')];var _0xf05172=_0x378b72?_0xa7118d['count']:_0x1ed534[_0x4745('0x1a')]+_0x1ed534[_0x4745('0x1c')];var _0xd5ba0b;if(_0xf05172>=_0x4cf789){_0xf05172=_0x4cf789;_0xd5ba0b=0xc8;}else{_0xd5ba0b=0xce;}_0xd76a7c[_0x4745('0x19')](_0xd5ba0b);return _0xd76a7c[_0x4745('0x1d')](_0x4745('0x1e'),_0x387a08+'-'+_0xf05172+'/'+_0x4cf789)[_0x4745('0x1f')](_0xa7118d);}return null;};}function patchUpdates(_0x40b032){return function(_0x96f6ca){try{jsonpatch[_0x4745('0x20')](_0x96f6ca,_0x40b032,!![]);}catch(_0x58e87c){return BPromise[_0x4745('0x21')](_0x58e87c);}return _0x96f6ca[_0x4745('0x22')]();};}function saveUpdates(_0x190910,_0x1ddbe5){return function(_0x4aca46){if(_0x4aca46){return _0x4aca46['update'](_0x190910)[_0x4745('0x23')](function(_0x5623c2){return _0x5623c2;});}return null;};}function removeEntity(_0x43231e,_0x294268){return function(_0xdd7f90){if(_0xdd7f90){return _0xdd7f90[_0x4745('0x24')]()[_0x4745('0x23')](function(){_0x43231e['status'](0xcc)[_0x4745('0x25')]();});}};}function handleEntityNotFound(_0x5585ee,_0x2795b5){return function(_0x5aa4a2){if(!_0x5aa4a2){_0x5585ee[_0x4745('0x18')](0x194);}return _0x5aa4a2;};}function handleError(_0x4c3bea,_0x24ed82){_0x24ed82=_0x24ed82||0x1f4;return function(_0x5e31bf){logger[_0x4745('0x26')](_0x5e31bf[_0x4745('0x27')]);if(_0x5e31bf[_0x4745('0x28')]){delete _0x5e31bf[_0x4745('0x28')];}_0x4c3bea[_0x4745('0x19')](_0x24ed82)[_0x4745('0x29')](_0x5e31bf);};}exports['index']=function(_0x37e9ec,_0x3f48bf){var _0x1131ce={},_0x444805={},_0x327537={'count':0x0,'rows':[]};var _0x56fbeb=_[_0x4745('0x2a')](db[_0x4745('0x2b')][_0x4745('0x2c')],function(_0xdfb4ad){return{'name':_0xdfb4ad[_0x4745('0x2d')],'type':_0xdfb4ad[_0x4745('0x2e')]['key']};});_0x444805[_0x4745('0x2f')]=_[_0x4745('0x2a')](_0x56fbeb,_0x4745('0x28'));_0x444805[_0x4745('0x30')]=_[_0x4745('0x31')](_0x37e9ec['query']);_0x444805[_0x4745('0x32')]=_[_0x4745('0x33')](_0x444805[_0x4745('0x2f')],_0x444805[_0x4745('0x30')]);_0x1131ce[_0x4745('0x34')]=_[_0x4745('0x33')](_0x444805[_0x4745('0x2f')],qs[_0x4745('0x35')](_0x37e9ec[_0x4745('0x30')][_0x4745('0x35')]));_0x1131ce[_0x4745('0x34')]=_0x1131ce['attributes']['length']?_0x1131ce[_0x4745('0x34')]:_0x444805[_0x4745('0x2f')];if(!_0x37e9ec[_0x4745('0x30')]['hasOwnProperty'](_0x4745('0x36'))){_0x1131ce[_0x4745('0x1c')]=qs[_0x4745('0x1c')](_0x37e9ec['query'][_0x4745('0x1c')]);_0x1131ce[_0x4745('0x1a')]=qs[_0x4745('0x1a')](_0x37e9ec[_0x4745('0x30')][_0x4745('0x1a')]);}_0x1131ce[_0x4745('0x37')]=qs[_0x4745('0x38')](_0x37e9ec[_0x4745('0x30')][_0x4745('0x38')]);_0x1131ce['where']=qs[_0x4745('0x32')](_[_0x4745('0x39')](_0x37e9ec[_0x4745('0x30')],_0x444805[_0x4745('0x32')]),_0x56fbeb);if(_0x37e9ec[_0x4745('0x30')][_0x4745('0x3a')]){_0x1131ce[_0x4745('0x3b')]=_['merge'](_0x1131ce['where'],{'$or':_[_0x4745('0x2a')](_0x56fbeb,function(_0x15c1a1){if(_0x15c1a1[_0x4745('0x2e')]!==_0x4745('0x3c')){var _0xf17eda={};_0xf17eda[_0x15c1a1[_0x4745('0x28')]]={'$like':'%'+_0x37e9ec[_0x4745('0x30')][_0x4745('0x3a')]+'%'};return _0xf17eda;}})});}_0x1131ce=_[_0x4745('0x3d')]({},_0x1131ce,_0x37e9ec[_0x4745('0x3e')]);var _0x103cef={'where':_0x1131ce[_0x4745('0x3b')]};return db[_0x4745('0x2b')][_0x4745('0x3f')](_0x103cef)['then'](function(_0x43cd27){_0x327537[_0x4745('0x3f')]=_0x43cd27;if(_0x37e9ec['query'][_0x4745('0x40')]){_0x1131ce[_0x4745('0x41')]=[{'all':!![]}];}return db[_0x4745('0x2b')][_0x4745('0x42')](_0x1131ce);})[_0x4745('0x23')](function(_0x47e75d){_0x327537[_0x4745('0x43')]=_0x47e75d;return _0x327537;})[_0x4745('0x23')](respondWithFilteredResult(_0x3f48bf,_0x1131ce))[_0x4745('0x44')](handleError(_0x3f48bf,null));};exports[_0x4745('0x45')]=function(_0x1c6663,_0x1f4c78){var _0x442165={'raw':!![],'where':{'id':_0x1c6663[_0x4745('0x46')]['id']}},_0x401df5={};_0x401df5[_0x4745('0x2f')]=_[_0x4745('0x31')](db[_0x4745('0x2b')][_0x4745('0x2c')]);_0x401df5[_0x4745('0x30')]=_[_0x4745('0x31')](_0x1c6663[_0x4745('0x30')]);_0x401df5[_0x4745('0x32')]=_[_0x4745('0x33')](_0x401df5[_0x4745('0x2f')],_0x401df5['query']);_0x442165['attributes']=_[_0x4745('0x33')](_0x401df5[_0x4745('0x2f')],qs[_0x4745('0x35')](_0x1c6663[_0x4745('0x30')][_0x4745('0x35')]));_0x442165['attributes']=_0x442165[_0x4745('0x34')][_0x4745('0x47')]?_0x442165[_0x4745('0x34')]:_0x401df5['model'];if(_0x1c6663[_0x4745('0x30')]['includeAll']){_0x442165[_0x4745('0x41')]=[{'all':!![]}];}_0x442165=_[_0x4745('0x3d')]({},_0x442165,_0x1c6663[_0x4745('0x3e')]);return db[_0x4745('0x2b')]['find'](_0x442165)[_0x4745('0x23')](handleEntityNotFound(_0x1f4c78,null))[_0x4745('0x23')](respondWithResult(_0x1f4c78,null))[_0x4745('0x44')](handleError(_0x1f4c78,null));};exports[_0x4745('0x48')]=function(_0x3e27a7,_0x9df25c){return db[_0x4745('0x2b')][_0x4745('0x48')](_0x3e27a7[_0x4745('0x49')],{})[_0x4745('0x23')](respondWithResult(_0x9df25c,0xc9))[_0x4745('0x44')](handleError(_0x9df25c,null));};exports[_0x4745('0x4a')]=function(_0x1d0fce,_0x2cd756){if(_0x1d0fce['body']['id']){delete _0x1d0fce[_0x4745('0x49')]['id'];}return db['AnalyticTreeReport'][_0x4745('0x4b')]({'where':{'id':_0x1d0fce[_0x4745('0x46')]['id']}})['then'](handleEntityNotFound(_0x2cd756,null))['then'](saveUpdates(_0x1d0fce['body'],null))[_0x4745('0x23')](respondWithResult(_0x2cd756,null))['catch'](handleError(_0x2cd756,null));};exports[_0x4745('0x24')]=function(_0x15a330,_0x103ceb){return db[_0x4745('0x2b')][_0x4745('0x4b')]({'where':{'id':_0x15a330[_0x4745('0x46')]['id']}})['then'](handleEntityNotFound(_0x103ceb,null))[_0x4745('0x23')](removeEntity(_0x103ceb,null))[_0x4745('0x44')](handleError(_0x103ceb,null));};
\ No newline at end of file
index de34282..a2bdd52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ac=['analytics_report_trees','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./analyticTreeReport.attributes','define','AnalyticTreeReport'];(function(_0x48d122,_0x4bcd20){var _0x36e303=function(_0x2b7a2e){while(--_0x2b7a2e){_0x48d122['push'](_0x48d122['shift']());}};_0x36e303(++_0x4bcd20);}(_0x95ac,0xcd));var _0xc95a=function(_0x1d1f27,_0x2aa6f7){_0x1d1f27=_0x1d1f27-0x0;var _0x40a790=_0x95ac[_0x1d1f27];return _0x40a790;};'use strict';var _=require(_0xc95a('0x0'));var util=require(_0xc95a('0x1'));var logger=require('../../config/logger')(_0xc95a('0x2'));var moment=require(_0xc95a('0x3'));var BPromise=require(_0xc95a('0x4'));var rp=require(_0xc95a('0x5'));var fs=require('fs');var path=require(_0xc95a('0x6'));var rimraf=require(_0xc95a('0x7'));var config=require('../../config/environment');var attributes=require(_0xc95a('0x8'));module['exports']=function(_0x30da7f,_0x211893){return _0x30da7f[_0xc95a('0x9')](_0xc95a('0xa'),attributes,{'tableName':_0xc95a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b78=['request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','AnalyticTreeReport','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x184800,_0x13f14e){var _0x58e20b=function(_0x481e55){while(--_0x481e55){_0x184800['push'](_0x184800['shift']());}};_0x58e20b(++_0x13f14e);}(_0x7b78,0x1e8));var _0x87b7=function(_0x3d8cfc,_0x58ad8b){_0x3d8cfc=_0x3d8cfc-0x0;var _0x4bdde7=_0x7b78[_0x3d8cfc];return _0x4bdde7;};'use strict';var _=require(_0x87b7('0x0'));var util=require(_0x87b7('0x1'));var logger=require(_0x87b7('0x2'))(_0x87b7('0x3'));var moment=require(_0x87b7('0x4'));var BPromise=require(_0x87b7('0x5'));var rp=require(_0x87b7('0x6'));var fs=require('fs');var path=require(_0x87b7('0x7'));var rimraf=require(_0x87b7('0x8'));var config=require(_0x87b7('0x9'));var attributes=require(_0x87b7('0xa'));module[_0x87b7('0xb')]=function(_0x3274fb,_0x24fa16){return _0x3274fb['define'](_0x87b7('0xc'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 24dff67..d78a706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x7a54,0x106));var _0x47a5=function(_0x494ccf,_0x46be20){_0x494ccf=_0x494ccf-0x0;var _0x223b8a=_0x7a54[_0x494ccf];return _0x223b8a;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x550eb7,_0x465856){var _0x33bffe=function(_0x171208){while(--_0x171208){_0x550eb7['push'](_0x550eb7['shift']());}};_0x33bffe(++_0x465856);}(_0x2ef3,0xba));var _0x32ef=function(_0x3233ca,_0x2a4c62){_0x3233ca=_0x3233ca-0x0;var _0x5745b8=_0x2ef3[_0x3233ca];return _0x5745b8;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index 3cf8fc5..7c85d72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c12=['../../config/environment','isAuthenticated','index','get','/:id','show','post','create','update','exports','multer','path','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x1f8057,_0x29937c){var _0x530ae5=function(_0x1870ea){while(--_0x1870ea){_0x1f8057['push'](_0x1f8057['shift']());}};_0x530ae5(++_0x29937c);}(_0x8c12,0x190));var _0x28c1=function(_0x3f813d,_0x473c67){_0x3f813d=_0x3f813d-0x0;var _0x3a7580=_0x8c12[_0x3f813d];return _0x3a7580;};'use strict';var multer=require(_0x28c1('0x0'));var util=require('util');var path=require(_0x28c1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x28c1('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x28c1('0x3'));var interaction=require(_0x28c1('0x4'));var config=require(_0x28c1('0x5'));var controller=require('./analyticTreeReport.controller');router['get']('/',auth[_0x28c1('0x6')](),controller[_0x28c1('0x7')]);router[_0x28c1('0x8')](_0x28c1('0x9'),auth[_0x28c1('0x6')](),controller[_0x28c1('0xa')]);router[_0x28c1('0xb')]('/',auth['isAuthenticated'](),controller[_0x28c1('0xc')]);router['put'](_0x28c1('0x9'),auth[_0x28c1('0x6')](),controller[_0x28c1('0xd')]);router['delete']('/:id',auth[_0x28c1('0x6')](),controller['destroy']);module[_0x28c1('0xe')]=router;
\ No newline at end of file
+var _0x884d=['index','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated'];(function(_0x3d2b19,_0x349a5b){var _0x29769b=function(_0x5048ad){while(--_0x5048ad){_0x3d2b19['push'](_0x3d2b19['shift']());}};_0x29769b(++_0x349a5b);}(_0x884d,0x9c));var _0xd884=function(_0x430a19,_0x245c8d){_0x430a19=_0x430a19-0x0;var _0x4cc627=_0x884d[_0x430a19];return _0x4cc627;};'use strict';var multer=require(_0xd884('0x0'));var util=require(_0xd884('0x1'));var path=require(_0xd884('0x2'));var timeout=require(_0xd884('0x3'));var express=require(_0xd884('0x4'));var router=express[_0xd884('0x5')]();var fs_extra=require(_0xd884('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd884('0x7'));var config=require(_0xd884('0x8'));var controller=require(_0xd884('0x9'));router[_0xd884('0xa')]('/',auth[_0xd884('0xb')](),controller[_0xd884('0xc')]);router[_0xd884('0xa')](_0xd884('0xd'),auth[_0xd884('0xb')](),controller[_0xd884('0xe')]);router[_0xd884('0xf')]('/',auth[_0xd884('0xb')](),controller[_0xd884('0x10')]);router[_0xd884('0x11')](_0xd884('0xd'),auth[_0xd884('0xb')](),controller['update']);router[_0xd884('0x12')]('/:id',auth[_0xd884('0xb')](),controller[_0xd884('0x13')]);module[_0xd884('0x14')]=router;
\ No newline at end of file
index d2d7921..26d7a9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80fb=['exports','STRING'];(function(_0x5a99db,_0x1cece5){var _0x3aad62=function(_0x334cb7){while(--_0x334cb7){_0x5a99db['push'](_0x5a99db['shift']());}};_0x3aad62(++_0x1cece5);}(_0x80fb,0x11e));var _0xb80f=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x80fb[_0x1b828b];return _0x98da1a;};'use strict';var Sequelize=require('sequelize');module[_0xb80f('0x0')]={'name':{'type':Sequelize[_0xb80f('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb80f('0x1')]}};
\ No newline at end of file
+var _0xb26e=['STRING','sequelize'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0xb26e,0x11d));var _0xeb26=function(_0xae7883,_0xabf9c8){_0xae7883=_0xae7883-0x0;var _0xd55326=_0xb26e[_0xae7883];return _0xd55326;};'use strict';var Sequelize=require(_0xeb26('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xeb26('0x1')]}};
\ No newline at end of file
index 6bb57f6..598facf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe596=['find','catch','clone','include','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','mimetype','download','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','error','name','send','index','map','Attachment','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','show','params','filters'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe596,0x6d));var _0x6e59=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xe596[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0x6e59('0x0'));var rimraf=require(_0x6e59('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6e59('0x2'));var rp=require(_0x6e59('0x3'));var moment=require(_0x6e59('0x4'));var BPromise=require(_0x6e59('0x5'));var Mustache=require(_0x6e59('0x6'));var util=require(_0x6e59('0x7'));var path=require(_0x6e59('0x8'));var sox=require('sox');var csv=require(_0x6e59('0x9'));var ejs=require(_0x6e59('0xa'));var fs=require('fs');var fs_extra=require(_0x6e59('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6e59('0xc'));var jsforce=require(_0x6e59('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x6e59('0x9'));var querystring=require(_0x6e59('0xe'));var Papa=require(_0x6e59('0xf'));var Redis=require(_0x6e59('0x10'));var authService=require(_0x6e59('0x11'));var qs=require(_0x6e59('0x12'));var as=require(_0x6e59('0x13'));var hardwareService=require(_0x6e59('0x14'));var logger=require(_0x6e59('0x15'))(_0x6e59('0x16'));var utils=require(_0x6e59('0x17'));var config=require(_0x6e59('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6e59('0x19'))['db'];function respondWithStatusCode(_0x228f35,_0x1df3e9){_0x1df3e9=_0x1df3e9||0xcc;return function(_0x590965){if(_0x590965){return _0x228f35[_0x6e59('0x1a')](_0x1df3e9);}return _0x228f35[_0x6e59('0x1b')](_0x1df3e9)['end']();};}function respondWithResult(_0x511114,_0x5ca8a8){_0x5ca8a8=_0x5ca8a8||0xc8;return function(_0x4c3dac){if(_0x4c3dac){return _0x511114[_0x6e59('0x1b')](_0x5ca8a8)[_0x6e59('0x1c')](_0x4c3dac);}};}function respondWithFilteredResult(_0x906df1,_0x4546c2){return function(_0x11736e){if(_0x11736e){var _0x3c1fdb=typeof _0x4546c2[_0x6e59('0x1d')]===_0x6e59('0x1e')&&typeof _0x4546c2[_0x6e59('0x1f')]===_0x6e59('0x1e');var _0x53529f=_0x11736e[_0x6e59('0x20')];var _0x7b712d=_0x3c1fdb?0x0:_0x4546c2['offset'];var _0x221f57=_0x3c1fdb?_0x11736e[_0x6e59('0x20')]:_0x4546c2['offset']+_0x4546c2['limit'];var _0x53a588;if(_0x221f57>=_0x53529f){_0x221f57=_0x53529f;_0x53a588=0xc8;}else{_0x53a588=0xce;}_0x906df1[_0x6e59('0x1b')](_0x53a588);return _0x906df1['set'](_0x6e59('0x21'),_0x7b712d+'-'+_0x221f57+'/'+_0x53529f)[_0x6e59('0x1c')](_0x11736e);}return null;};}function patchUpdates(_0x3128cf){return function(_0x4076ba){try{jsonpatch['apply'](_0x4076ba,_0x3128cf,!![]);}catch(_0x1ab9c4){return BPromise[_0x6e59('0x22')](_0x1ab9c4);}return _0x4076ba[_0x6e59('0x23')]();};}function saveUpdates(_0x24b7c5,_0x77e557){return function(_0x89a293){if(_0x89a293){return _0x89a293[_0x6e59('0x24')](_0x24b7c5)[_0x6e59('0x25')](function(_0x8337c2){return _0x8337c2;});}return null;};}function removeEntity(_0x218818,_0x1beac6){return function(_0x4cc573){if(_0x4cc573){return _0x4cc573['destroy']()[_0x6e59('0x25')](function(){_0x218818[_0x6e59('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x297c07,_0x3f77e6){return function(_0x328070){if(!_0x328070){_0x297c07[_0x6e59('0x1a')](0x194);}return _0x328070;};}function handleError(_0x2d4757,_0x313976){_0x313976=_0x313976||0x1f4;return function(_0x5c2023){logger[_0x6e59('0x26')](_0x5c2023['stack']);if(_0x5c2023['name']){delete _0x5c2023[_0x6e59('0x27')];}_0x2d4757['status'](_0x313976)[_0x6e59('0x28')](_0x5c2023);};}exports[_0x6e59('0x29')]=function(_0x2e9317,_0x10b2d1){var _0x357e51={},_0x2d7c7b={},_0xaa2fbb={'count':0x0,'rows':[]};var _0x532faf=_[_0x6e59('0x2a')](db[_0x6e59('0x2b')][_0x6e59('0x2c')],function(_0x496ca8){return{'name':_0x496ca8[_0x6e59('0x2d')],'type':_0x496ca8[_0x6e59('0x2e')]['key']};});_0x2d7c7b[_0x6e59('0x2f')]=_[_0x6e59('0x2a')](_0x532faf,'name');_0x2d7c7b[_0x6e59('0x30')]=_[_0x6e59('0x31')](_0x2e9317['query']);_0x2d7c7b['filters']=_['intersection'](_0x2d7c7b[_0x6e59('0x2f')],_0x2d7c7b[_0x6e59('0x30')]);_0x357e51[_0x6e59('0x32')]=_[_0x6e59('0x33')](_0x2d7c7b[_0x6e59('0x2f')],qs['fields'](_0x2e9317['query'][_0x6e59('0x34')]));_0x357e51[_0x6e59('0x32')]=_0x357e51['attributes'][_0x6e59('0x35')]?_0x357e51[_0x6e59('0x32')]:_0x2d7c7b[_0x6e59('0x2f')];if(!_0x2e9317[_0x6e59('0x30')][_0x6e59('0x36')](_0x6e59('0x37'))){_0x357e51[_0x6e59('0x1f')]=qs['limit'](_0x2e9317[_0x6e59('0x30')]['limit']);_0x357e51[_0x6e59('0x1d')]=qs[_0x6e59('0x1d')](_0x2e9317[_0x6e59('0x30')]['offset']);}_0x357e51[_0x6e59('0x38')]=qs[_0x6e59('0x39')](_0x2e9317[_0x6e59('0x30')][_0x6e59('0x39')]);_0x357e51[_0x6e59('0x3a')]=qs['filters'](_[_0x6e59('0x3b')](_0x2e9317[_0x6e59('0x30')],_0x2d7c7b['filters']),_0x532faf);if(_0x2e9317['query']['filter']){_0x357e51[_0x6e59('0x3a')]=_['merge'](_0x357e51['where'],{'$or':_[_0x6e59('0x2a')](_0x532faf,function(_0x36cbed){if(_0x36cbed['type']!==_0x6e59('0x3c')){var _0x75ca8d={};_0x75ca8d[_0x36cbed['name']]={'$like':'%'+_0x2e9317[_0x6e59('0x30')][_0x6e59('0x3d')]+'%'};return _0x75ca8d;}})});}_0x357e51=_[_0x6e59('0x3e')]({},_0x357e51,_0x2e9317[_0x6e59('0x3f')]);var _0x5063b3={'where':_0x357e51[_0x6e59('0x3a')]};return db['Attachment']['count'](_0x5063b3)['then'](function(_0x518c1a){_0xaa2fbb[_0x6e59('0x20')]=_0x518c1a;if(_0x2e9317[_0x6e59('0x30')][_0x6e59('0x40')]){_0x357e51['include']=[{'all':!![]}];}return db[_0x6e59('0x2b')][_0x6e59('0x41')](_0x357e51);})[_0x6e59('0x25')](function(_0x3fbc34){_0xaa2fbb['rows']=_0x3fbc34;return _0xaa2fbb;})[_0x6e59('0x25')](respondWithFilteredResult(_0x10b2d1,_0x357e51))['catch'](handleError(_0x10b2d1,null));};exports[_0x6e59('0x42')]=function(_0x36788f,_0x36fb31){var _0x14955c={'raw':!![],'where':{'id':_0x36788f[_0x6e59('0x43')]['id']}},_0x402c00={};_0x402c00['model']=_[_0x6e59('0x31')](db[_0x6e59('0x2b')][_0x6e59('0x2c')]);_0x402c00['query']=_[_0x6e59('0x31')](_0x36788f[_0x6e59('0x30')]);_0x402c00[_0x6e59('0x44')]=_[_0x6e59('0x33')](_0x402c00[_0x6e59('0x2f')],_0x402c00[_0x6e59('0x30')]);_0x14955c[_0x6e59('0x32')]=_['intersection'](_0x402c00[_0x6e59('0x2f')],qs[_0x6e59('0x34')](_0x36788f[_0x6e59('0x30')][_0x6e59('0x34')]));_0x14955c[_0x6e59('0x32')]=_0x14955c[_0x6e59('0x32')][_0x6e59('0x35')]?_0x14955c[_0x6e59('0x32')]:_0x402c00['model'];if(_0x36788f['query'][_0x6e59('0x40')]){_0x14955c['include']=[{'all':!![]}];}_0x14955c=_[_0x6e59('0x3e')]({},_0x14955c,_0x36788f['options']);return db[_0x6e59('0x2b')][_0x6e59('0x45')](_0x14955c)[_0x6e59('0x25')](handleEntityNotFound(_0x36fb31,null))['then'](respondWithResult(_0x36fb31,null))[_0x6e59('0x46')](handleError(_0x36fb31,null));};exports[_0x6e59('0x47')]=function(_0x2b2b21,_0x336de1){var _0x3b186a={'where':{'id':_0x2b2b21[_0x6e59('0x43')]['id']}},_0x458931={};_0x458931[_0x6e59('0x2f')]=_[_0x6e59('0x31')](db['Attachment'][_0x6e59('0x2c')]);_0x3b186a[_0x6e59('0x32')]=_[_0x6e59('0x33')](_0x458931[_0x6e59('0x2f')],qs[_0x6e59('0x34')](_0x2b2b21[_0x6e59('0x30')][_0x6e59('0x34')]));_0x3b186a[_0x6e59('0x32')]=_0x3b186a['attributes'][_0x6e59('0x35')]?_0x3b186a[_0x6e59('0x32')]:_0x458931[_0x6e59('0x2f')];if(_0x2b2b21['query'][_0x6e59('0x40')]){_0x3b186a[_0x6e59('0x48')]=[{'all':!![]}];}_0x3b186a=_[_0x6e59('0x3e')]({},_0x3b186a,_0x2b2b21['options']);return db['Attachment']['find'](_0x3b186a)[_0x6e59('0x25')](handleEntityNotFound(_0x336de1,null))[_0x6e59('0x25')](function(_0x1bd005){if(_0x1bd005){var _0x515291=_0x1bd005[_0x6e59('0x49')]({'plain':!![]});_0x515291=qs[_0x6e59('0x4a')](_0x515291,['id',_0x6e59('0x4b'),_0x6e59('0x4c')]);_0x2b2b21[_0x6e59('0x4d')]=_[_0x6e59('0x4a')](_0x2b2b21[_0x6e59('0x4d')],['id','createdAt',_0x6e59('0x4c')]);return db['Attachment'][_0x6e59('0x4e')](_[_0x6e59('0x3e')](_0x515291,_0x2b2b21[_0x6e59('0x4d')]),{'include':_0x2b2b21[_0x6e59('0x30')][_0x6e59('0x40')]?[{'all':!![]}]:undefined});}})[_0x6e59('0x25')](respondWithResult(_0x336de1,0xc9))[_0x6e59('0x46')](handleError(_0x336de1,null));};exports[_0x6e59('0x24')]=function(_0x4a6116,_0x943bd){if(_0x4a6116[_0x6e59('0x4d')]['id']){delete _0x4a6116['body']['id'];}return db[_0x6e59('0x2b')][_0x6e59('0x45')]({'where':{'id':_0x4a6116[_0x6e59('0x43')]['id']}})[_0x6e59('0x25')](handleEntityNotFound(_0x943bd,null))[_0x6e59('0x25')](saveUpdates(_0x4a6116['body'],null))[_0x6e59('0x25')](respondWithResult(_0x943bd,null))[_0x6e59('0x46')](handleError(_0x943bd,null));};exports['destroy']=function(_0x5773a1,_0x2cd3f0){return db['Attachment'][_0x6e59('0x45')]({'where':{'id':_0x5773a1['params']['id']}})[_0x6e59('0x25')](handleEntityNotFound(_0x2cd3f0,null))[_0x6e59('0x25')](removeEntity(_0x2cd3f0,null))['catch'](handleError(_0x2cd3f0,null));};exports[_0x6e59('0x4e')]=function(_0x288653,_0x5b7083,_0x1bc28b){_0x288653[_0x6e59('0x4d')][_0x6e59('0x27')]=_0x288653[_0x6e59('0x4f')][_0x6e59('0x50')];_0x288653[_0x6e59('0x4d')][_0x6e59('0x51')]=_0x288653[_0x6e59('0x4f')]['filename'];_0x288653[_0x6e59('0x4d')][_0x6e59('0x2e')]=_0x288653[_0x6e59('0x4f')][_0x6e59('0x52')];return db[_0x6e59('0x2b')][_0x6e59('0x4e')](_0x288653[_0x6e59('0x4d')])[_0x6e59('0x25')](respondWithResult(_0x5b7083,0xc9))[_0x6e59('0x46')](handleError(_0x5b7083,null));};exports[_0x6e59('0x53')]=function(_0xa4f8a4,_0x62a694,_0xbb3448){return db[_0x6e59('0x2b')]['findOne']({'where':{'id':_0xa4f8a4['params']['id']},'raw':!![]})[_0x6e59('0x25')](handleEntityNotFound(_0x62a694,null))[_0x6e59('0x25')](function(_0x1686c3){if(_0x1686c3){var _0x38b1fb=_0x1686c3[_0x6e59('0x54')]!==null;var _0x566cc9=path[_0x6e59('0x55')](config[_0x6e59('0x56')],_0x6e59('0x57'));if(_0x38b1fb){_0x566cc9=path[_0x6e59('0x55')](_0x566cc9,_0x6e59('0x58'));}var _0x56eed5=path[_0x6e59('0x55')](_0x566cc9,_0x1686c3[_0x6e59('0x51')]);return _0x62a694[_0x6e59('0x53')](_0x56eed5);}})[_0x6e59('0x46')](handleError(_0x62a694,null));};
\ No newline at end of file
+var _0x5bc9=['fast-json-patch','moment','bluebird','mustache','path','sox','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','status','end','limit','undefined','count','offset','set','apply','reject','save','update','then','sendStatus','stack','name','send','Attachment','rawAttributes','type','map','query','filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','keys','clone','include','find','omit','createdAt','updatedAt','body','create','destroy','file','originalname','filename','mimetype','download','findOne','ChatOfflineMessageId','root','server/files/attachments/','join','basename','eml-format','rimraf','zip-dir'];(function(_0x3c7d80,_0x4a1c99){var _0xc4c747=function(_0xe71267){while(--_0xe71267){_0x3c7d80['push'](_0x3c7d80['shift']());}};_0xc4c747(++_0x4a1c99);}(_0x5bc9,0x161));var _0x95bc=function(_0x22a95b,_0x562c20){_0x22a95b=_0x22a95b-0x0;var _0x4346ea=_0x5bc9[_0x22a95b];return _0x4346ea;};'use strict';var emlformat=require(_0x95bc('0x0'));var rimraf=require(_0x95bc('0x1'));var zipdir=require(_0x95bc('0x2'));var jsonpatch=require(_0x95bc('0x3'));var rp=require('request-promise');var moment=require(_0x95bc('0x4'));var BPromise=require(_0x95bc('0x5'));var Mustache=require(_0x95bc('0x6'));var util=require('util');var path=require(_0x95bc('0x7'));var sox=require(_0x95bc('0x8'));var csv=require(_0x95bc('0x9'));var ejs=require(_0x95bc('0xa'));var fs=require('fs');var fs_extra=require(_0x95bc('0xb'));var _=require('lodash');var squel=require(_0x95bc('0xc'));var crypto=require(_0x95bc('0xd'));var jsforce=require(_0x95bc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x95bc('0x9'));var querystring=require(_0x95bc('0xf'));var Papa=require(_0x95bc('0x10'));var Redis=require(_0x95bc('0x11'));var authService=require(_0x95bc('0x12'));var qs=require(_0x95bc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x95bc('0x14'));var logger=require(_0x95bc('0x15'))(_0x95bc('0x16'));var utils=require(_0x95bc('0x17'));var config=require(_0x95bc('0x18'));var licenseUtil=require(_0x95bc('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2775e6,_0x3124d3){_0x3124d3=_0x3124d3||0xcc;return function(_0x3613cf){if(_0x3613cf){return _0x2775e6['sendStatus'](_0x3124d3);}return _0x2775e6[_0x95bc('0x1a')](_0x3124d3)[_0x95bc('0x1b')]();};}function respondWithResult(_0x4d34c7,_0x8f3a9f){_0x8f3a9f=_0x8f3a9f||0xc8;return function(_0xae957f){if(_0xae957f){return _0x4d34c7[_0x95bc('0x1a')](_0x8f3a9f)['json'](_0xae957f);}};}function respondWithFilteredResult(_0xe40d61,_0x13bb33){return function(_0x10a52f){if(_0x10a52f){var _0x418f1e=typeof _0x13bb33['offset']==='undefined'&&typeof _0x13bb33[_0x95bc('0x1c')]===_0x95bc('0x1d');var _0x4ea01c=_0x10a52f[_0x95bc('0x1e')];var _0x537066=_0x418f1e?0x0:_0x13bb33[_0x95bc('0x1f')];var _0x20c019=_0x418f1e?_0x10a52f[_0x95bc('0x1e')]:_0x13bb33[_0x95bc('0x1f')]+_0x13bb33[_0x95bc('0x1c')];var _0x2b195d;if(_0x20c019>=_0x4ea01c){_0x20c019=_0x4ea01c;_0x2b195d=0xc8;}else{_0x2b195d=0xce;}_0xe40d61[_0x95bc('0x1a')](_0x2b195d);return _0xe40d61[_0x95bc('0x20')]('Content-Range',_0x537066+'-'+_0x20c019+'/'+_0x4ea01c)['json'](_0x10a52f);}return null;};}function patchUpdates(_0x4e8f68){return function(_0x216597){try{jsonpatch[_0x95bc('0x21')](_0x216597,_0x4e8f68,!![]);}catch(_0x4172b2){return BPromise[_0x95bc('0x22')](_0x4172b2);}return _0x216597[_0x95bc('0x23')]();};}function saveUpdates(_0x325a77,_0x4789ea){return function(_0x312b22){if(_0x312b22){return _0x312b22[_0x95bc('0x24')](_0x325a77)['then'](function(_0x5f4d69){return _0x5f4d69;});}return null;};}function removeEntity(_0x1f7620,_0x1cf1e4){return function(_0x5cc6fc){if(_0x5cc6fc){return _0x5cc6fc['destroy']()[_0x95bc('0x25')](function(){_0x1f7620[_0x95bc('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54fc32,_0x1a1410){return function(_0x365793){if(!_0x365793){_0x54fc32[_0x95bc('0x26')](0x194);}return _0x365793;};}function handleError(_0x55d939,_0x244e74){_0x244e74=_0x244e74||0x1f4;return function(_0x498f56){logger['error'](_0x498f56[_0x95bc('0x27')]);if(_0x498f56[_0x95bc('0x28')]){delete _0x498f56[_0x95bc('0x28')];}_0x55d939[_0x95bc('0x1a')](_0x244e74)[_0x95bc('0x29')](_0x498f56);};}exports['index']=function(_0x4c6df1,_0x20562b){var _0x3c1bbd={},_0x643695={},_0x5adc56={'count':0x0,'rows':[]};var _0x34cc04=_['map'](db[_0x95bc('0x2a')][_0x95bc('0x2b')],function(_0xe40b54){return{'name':_0xe40b54['fieldName'],'type':_0xe40b54[_0x95bc('0x2c')]['key']};});_0x643695['model']=_[_0x95bc('0x2d')](_0x34cc04,_0x95bc('0x28'));_0x643695[_0x95bc('0x2e')]=_['keys'](_0x4c6df1[_0x95bc('0x2e')]);_0x643695[_0x95bc('0x2f')]=_[_0x95bc('0x30')](_0x643695['model'],_0x643695['query']);_0x3c1bbd['attributes']=_[_0x95bc('0x30')](_0x643695['model'],qs[_0x95bc('0x31')](_0x4c6df1[_0x95bc('0x2e')][_0x95bc('0x31')]));_0x3c1bbd[_0x95bc('0x32')]=_0x3c1bbd[_0x95bc('0x32')][_0x95bc('0x33')]?_0x3c1bbd[_0x95bc('0x32')]:_0x643695[_0x95bc('0x34')];if(!_0x4c6df1[_0x95bc('0x2e')][_0x95bc('0x35')](_0x95bc('0x36'))){_0x3c1bbd['limit']=qs['limit'](_0x4c6df1[_0x95bc('0x2e')][_0x95bc('0x1c')]);_0x3c1bbd[_0x95bc('0x1f')]=qs[_0x95bc('0x1f')](_0x4c6df1[_0x95bc('0x2e')][_0x95bc('0x1f')]);}_0x3c1bbd[_0x95bc('0x37')]=qs[_0x95bc('0x38')](_0x4c6df1[_0x95bc('0x2e')][_0x95bc('0x38')]);_0x3c1bbd[_0x95bc('0x39')]=qs['filters'](_['pick'](_0x4c6df1['query'],_0x643695[_0x95bc('0x2f')]),_0x34cc04);if(_0x4c6df1['query'][_0x95bc('0x3a')]){_0x3c1bbd[_0x95bc('0x39')]=_['merge'](_0x3c1bbd[_0x95bc('0x39')],{'$or':_['map'](_0x34cc04,function(_0x2d8f94){if(_0x2d8f94[_0x95bc('0x2c')]!==_0x95bc('0x3b')){var _0x4f320f={};_0x4f320f[_0x2d8f94['name']]={'$like':'%'+_0x4c6df1[_0x95bc('0x2e')][_0x95bc('0x3a')]+'%'};return _0x4f320f;}})});}_0x3c1bbd=_[_0x95bc('0x3c')]({},_0x3c1bbd,_0x4c6df1[_0x95bc('0x3d')]);var _0xf5b76f={'where':_0x3c1bbd[_0x95bc('0x39')]};return db['Attachment'][_0x95bc('0x1e')](_0xf5b76f)[_0x95bc('0x25')](function(_0x1131af){_0x5adc56[_0x95bc('0x1e')]=_0x1131af;if(_0x4c6df1['query'][_0x95bc('0x3e')]){_0x3c1bbd['include']=[{'all':!![]}];}return db[_0x95bc('0x2a')][_0x95bc('0x3f')](_0x3c1bbd);})['then'](function(_0x343da2){_0x5adc56[_0x95bc('0x40')]=_0x343da2;return _0x5adc56;})['then'](respondWithFilteredResult(_0x20562b,_0x3c1bbd))[_0x95bc('0x41')](handleError(_0x20562b,null));};exports[_0x95bc('0x42')]=function(_0x49b70b,_0x563ee9){var _0x1a271a={'raw':!![],'where':{'id':_0x49b70b[_0x95bc('0x43')]['id']}},_0x5b1920={};_0x5b1920[_0x95bc('0x34')]=_[_0x95bc('0x44')](db['Attachment'][_0x95bc('0x2b')]);_0x5b1920['query']=_[_0x95bc('0x44')](_0x49b70b[_0x95bc('0x2e')]);_0x5b1920[_0x95bc('0x2f')]=_[_0x95bc('0x30')](_0x5b1920['model'],_0x5b1920[_0x95bc('0x2e')]);_0x1a271a[_0x95bc('0x32')]=_[_0x95bc('0x30')](_0x5b1920['model'],qs[_0x95bc('0x31')](_0x49b70b[_0x95bc('0x2e')][_0x95bc('0x31')]));_0x1a271a[_0x95bc('0x32')]=_0x1a271a[_0x95bc('0x32')][_0x95bc('0x33')]?_0x1a271a[_0x95bc('0x32')]:_0x5b1920[_0x95bc('0x34')];if(_0x49b70b[_0x95bc('0x2e')][_0x95bc('0x3e')]){_0x1a271a['include']=[{'all':!![]}];}_0x1a271a=_[_0x95bc('0x3c')]({},_0x1a271a,_0x49b70b['options']);return db[_0x95bc('0x2a')]['find'](_0x1a271a)[_0x95bc('0x25')](handleEntityNotFound(_0x563ee9,null))[_0x95bc('0x25')](respondWithResult(_0x563ee9,null))[_0x95bc('0x41')](handleError(_0x563ee9,null));};exports[_0x95bc('0x45')]=function(_0x5d34db,_0x4c696b){var _0x49c299={'where':{'id':_0x5d34db[_0x95bc('0x43')]['id']}},_0x26a0ce={};_0x26a0ce[_0x95bc('0x34')]=_['keys'](db[_0x95bc('0x2a')][_0x95bc('0x2b')]);_0x49c299[_0x95bc('0x32')]=_[_0x95bc('0x30')](_0x26a0ce[_0x95bc('0x34')],qs[_0x95bc('0x31')](_0x5d34db[_0x95bc('0x2e')][_0x95bc('0x31')]));_0x49c299[_0x95bc('0x32')]=_0x49c299[_0x95bc('0x32')][_0x95bc('0x33')]?_0x49c299[_0x95bc('0x32')]:_0x26a0ce[_0x95bc('0x34')];if(_0x5d34db['query'][_0x95bc('0x3e')]){_0x49c299[_0x95bc('0x46')]=[{'all':!![]}];}_0x49c299=_[_0x95bc('0x3c')]({},_0x49c299,_0x5d34db[_0x95bc('0x3d')]);return db[_0x95bc('0x2a')][_0x95bc('0x47')](_0x49c299)[_0x95bc('0x25')](handleEntityNotFound(_0x4c696b,null))[_0x95bc('0x25')](function(_0x5d0e55){if(_0x5d0e55){var _0x34bc58=_0x5d0e55['get']({'plain':!![]});_0x34bc58=qs[_0x95bc('0x48')](_0x34bc58,['id',_0x95bc('0x49'),_0x95bc('0x4a')]);_0x5d34db['body']=_[_0x95bc('0x48')](_0x5d34db[_0x95bc('0x4b')],['id',_0x95bc('0x49'),_0x95bc('0x4a')]);return db[_0x95bc('0x2a')][_0x95bc('0x4c')](_[_0x95bc('0x3c')](_0x34bc58,_0x5d34db[_0x95bc('0x4b')]),{'include':_0x5d34db['query'][_0x95bc('0x3e')]?[{'all':!![]}]:undefined});}})[_0x95bc('0x25')](respondWithResult(_0x4c696b,0xc9))[_0x95bc('0x41')](handleError(_0x4c696b,null));};exports[_0x95bc('0x24')]=function(_0x11a89c,_0x580b52){if(_0x11a89c[_0x95bc('0x4b')]['id']){delete _0x11a89c[_0x95bc('0x4b')]['id'];}return db[_0x95bc('0x2a')][_0x95bc('0x47')]({'where':{'id':_0x11a89c[_0x95bc('0x43')]['id']}})[_0x95bc('0x25')](handleEntityNotFound(_0x580b52,null))[_0x95bc('0x25')](saveUpdates(_0x11a89c[_0x95bc('0x4b')],null))[_0x95bc('0x25')](respondWithResult(_0x580b52,null))['catch'](handleError(_0x580b52,null));};exports[_0x95bc('0x4d')]=function(_0x109e5b,_0x3e0a82){return db[_0x95bc('0x2a')][_0x95bc('0x47')]({'where':{'id':_0x109e5b['params']['id']}})['then'](handleEntityNotFound(_0x3e0a82,null))[_0x95bc('0x25')](removeEntity(_0x3e0a82,null))[_0x95bc('0x41')](handleError(_0x3e0a82,null));};exports[_0x95bc('0x4c')]=function(_0x380dd7,_0x339140,_0x2d10e0){_0x380dd7[_0x95bc('0x4b')][_0x95bc('0x28')]=_0x380dd7[_0x95bc('0x4e')][_0x95bc('0x4f')];_0x380dd7['body']['basename']=_0x380dd7[_0x95bc('0x4e')][_0x95bc('0x50')];_0x380dd7[_0x95bc('0x4b')][_0x95bc('0x2c')]=_0x380dd7['file'][_0x95bc('0x51')];return db['Attachment'][_0x95bc('0x4c')](_0x380dd7[_0x95bc('0x4b')])['then'](respondWithResult(_0x339140,0xc9))[_0x95bc('0x41')](handleError(_0x339140,null));};exports[_0x95bc('0x52')]=function(_0x5291ee,_0x540f3f,_0x5a516a){return db[_0x95bc('0x2a')][_0x95bc('0x53')]({'where':{'id':_0x5291ee[_0x95bc('0x43')]['id']},'raw':!![]})[_0x95bc('0x25')](handleEntityNotFound(_0x540f3f,null))['then'](function(_0x1907b3){if(_0x1907b3){var _0x4b531f=_0x1907b3[_0x95bc('0x54')]!==null;var _0x3028c4=path['join'](config[_0x95bc('0x55')],_0x95bc('0x56'));if(_0x4b531f){_0x3028c4=path[_0x95bc('0x57')](_0x3028c4,'offline-chat/');}var _0x591a0b=path[_0x95bc('0x57')](_0x3028c4,_0x1907b3[_0x95bc('0x58')]);return _0x540f3f[_0x95bc('0x52')](_0x591a0b);}})[_0x95bc('0x41')](handleError(_0x540f3f,null));};
\ No newline at end of file
index e256fa4..f938ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf01=['../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x14f89e,_0x139fce){var _0x26092d=function(_0x2bdc20){while(--_0x2bdc20){_0x14f89e['push'](_0x14f89e['shift']());}};_0x26092d(++_0x139fce);}(_0xdf01,0x13a));var _0x1df0=function(_0x19ba91,_0x2e0669){_0x19ba91=_0x19ba91-0x0;var _0x96636a=_0xdf01[_0x19ba91];return _0x96636a;};'use strict';var _=require(_0x1df0('0x0'));var util=require(_0x1df0('0x1'));var logger=require(_0x1df0('0x2'))(_0x1df0('0x3'));var moment=require(_0x1df0('0x4'));var BPromise=require(_0x1df0('0x5'));var rp=require(_0x1df0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1df0('0x7'));var config=require(_0x1df0('0x8'));var attributes=require(_0x1df0('0x9'));module[_0x1df0('0xa')]=function(_0x29e2e2,_0x1ca198){return _0x29e2e2[_0x1df0('0xb')](_0x1df0('0xc'),attributes,{'tableName':_0x1df0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8421=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Attachment','attachments'];(function(_0x54782f,_0xe9089f){var _0x5c034d=function(_0x5f4bfc){while(--_0x5f4bfc){_0x54782f['push'](_0x54782f['shift']());}};_0x5c034d(++_0xe9089f);}(_0x8421,0x1a0));var _0x1842=function(_0x2d362c,_0x56178c){_0x2d362c=_0x2d362c-0x0;var _0x1113f8=_0x8421[_0x2d362c];return _0x1113f8;};'use strict';var _=require(_0x1842('0x0'));var util=require('util');var logger=require(_0x1842('0x1'))(_0x1842('0x2'));var moment=require(_0x1842('0x3'));var BPromise=require(_0x1842('0x4'));var rp=require(_0x1842('0x5'));var fs=require('fs');var path=require(_0x1842('0x6'));var rimraf=require(_0x1842('0x7'));var config=require(_0x1842('0x8'));var attributes=require('./attachment.attributes');module[_0x1842('0x9')]=function(_0x2c66d3,_0x48584d){return _0x2c66d3[_0x1842('0xa')](_0x1842('0xb'),attributes,{'tableName':_0x1842('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcd45b2..fd0053b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3685=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateAttachment','Attachment','options','raw','catch','lodash','moment','bluebird','randomstring'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x3685,0xf8));var _0x5368=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3685[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x5368('0x0'));var util=require('util');var moment=require(_0x5368('0x1'));var BPromise=require(_0x5368('0x2'));var rs=require(_0x5368('0x3'));var fs=require('fs');var Redis=require(_0x5368('0x4'));var db=require(_0x5368('0x5'))['db'];var utils=require(_0x5368('0x6'));var logger=require(_0x5368('0x7'))(_0x5368('0x8'));var config=require(_0x5368('0x9'));var jayson=require(_0x5368('0xa'));var client=jayson['client'][_0x5368('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2529a2,_0x39223d,_0xaf4549){return new BPromise(function(_0x55fb7d,_0x14e621){return client[_0x5368('0xc')](_0x2529a2,_0xaf4549)[_0x5368('0xd')](function(_0x2a6ce8){logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,_0x5368('0x10'));logger[_0x5368('0x11')]('Attachment,\x20%s,\x20%s,\x20%s',_0x39223d,_0x5368('0x10'),JSON[_0x5368('0x12')](_0x2a6ce8));if(_0x2a6ce8[_0x5368('0x13')]){if(_0x2a6ce8['error'][_0x5368('0x14')]===0x1f4){logger[_0x5368('0x13')]('Attachment,\x20%s,\x20%s',_0x39223d,_0x2a6ce8['error']['message']);return _0x14e621(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);return _0x55fb7d(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}else{logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,'request\x20sent');_0x55fb7d(_0x2a6ce8[_0x5368('0x16')][_0x5368('0x15')]);}})['catch'](function(_0x19790d){logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x19790d);_0x14e621(_0x19790d);});});}exports[_0x5368('0x17')]=function(_0x5b10e9){var _0x3fcae0=this;return new Promise(function(_0x56ac4d,_0x4baaa9){return db[_0x5368('0x18')]['create'](_0x5b10e9['body'],{'raw':_0x5b10e9['options']?_0x5b10e9[_0x5368('0x19')][_0x5368('0x1a')]===undefined?!![]:![]:!![]})[_0x5368('0xd')](function(_0x5cef40){logger['info'](_0x5368('0x17'),_0x5b10e9);logger[_0x5368('0x11')](_0x5368('0x17'),_0x5b10e9,JSON[_0x5368('0x12')](_0x5cef40));_0x56ac4d(_0x5cef40);})[_0x5368('0x1b')](function(_0x1093e2){logger[_0x5368('0x13')](_0x5368('0x17'),_0x1093e2[_0x5368('0x15')],_0x5b10e9);_0x4baaa9(_0x3fcae0[_0x5368('0x13')](0x1f4,_0x1093e2['message']));});});};
\ No newline at end of file
+var _0xb0b9=['CreateAttachment','create','body','options','raw','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x52dd2c,_0x455063){var _0x1078b4=function(_0x46e94d){while(--_0x46e94d){_0x52dd2c['push'](_0x52dd2c['shift']());}};_0x1078b4(++_0x455063);}(_0xb0b9,0x1f3));var _0x9b0b=function(_0x2a9886,_0x3d1003){_0x2a9886=_0x2a9886-0x0;var _0xe3bbfb=_0xb0b9[_0x2a9886];return _0xe3bbfb;};'use strict';var _=require(_0x9b0b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9b0b('0x1'));var rs=require(_0x9b0b('0x2'));var fs=require('fs');var Redis=require(_0x9b0b('0x3'));var db=require(_0x9b0b('0x4'))['db'];var utils=require(_0x9b0b('0x5'));var logger=require(_0x9b0b('0x6'))(_0x9b0b('0x7'));var config=require(_0x9b0b('0x8'));var jayson=require(_0x9b0b('0x9'));var client=jayson[_0x9b0b('0xa')][_0x9b0b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x157d81,_0x21ccdd,_0x1feca7){return new BPromise(function(_0x4894ae,_0x537d6e){return client[_0x9b0b('0xc')](_0x157d81,_0x1feca7)[_0x9b0b('0xd')](function(_0x22e8bd){logger[_0x9b0b('0xe')](_0x9b0b('0xf'),_0x21ccdd,_0x9b0b('0x10'));logger['debug'](_0x9b0b('0x11'),_0x21ccdd,_0x9b0b('0x10'),JSON[_0x9b0b('0x12')](_0x22e8bd));if(_0x22e8bd[_0x9b0b('0x13')]){if(_0x22e8bd['error']['code']===0x1f4){logger[_0x9b0b('0x13')]('Attachment,\x20%s,\x20%s',_0x21ccdd,_0x22e8bd[_0x9b0b('0x13')]['message']);return _0x537d6e(_0x22e8bd[_0x9b0b('0x13')][_0x9b0b('0x14')]);}logger['error']('Attachment,\x20%s,\x20%s',_0x21ccdd,_0x22e8bd[_0x9b0b('0x13')][_0x9b0b('0x14')]);return _0x4894ae(_0x22e8bd[_0x9b0b('0x13')]['message']);}else{logger[_0x9b0b('0xe')](_0x9b0b('0xf'),_0x21ccdd,_0x9b0b('0x10'));_0x4894ae(_0x22e8bd[_0x9b0b('0x15')][_0x9b0b('0x14')]);}})[_0x9b0b('0x16')](function(_0x8ed071){logger[_0x9b0b('0x13')](_0x9b0b('0xf'),_0x21ccdd,_0x8ed071);_0x537d6e(_0x8ed071);});});}exports[_0x9b0b('0x17')]=function(_0x264b6d){var _0x3f2733=this;return new Promise(function(_0x3334e5,_0x24c230){return db['Attachment'][_0x9b0b('0x18')](_0x264b6d[_0x9b0b('0x19')],{'raw':_0x264b6d[_0x9b0b('0x1a')]?_0x264b6d['options'][_0x9b0b('0x1b')]===undefined?!![]:![]:!![]})[_0x9b0b('0xd')](function(_0x4067d3){logger['info'](_0x9b0b('0x17'),_0x264b6d);logger[_0x9b0b('0x1c')](_0x9b0b('0x17'),_0x264b6d,JSON[_0x9b0b('0x12')](_0x4067d3));_0x3334e5(_0x4067d3);})['catch'](function(_0x30bfe8){logger[_0x9b0b('0x13')]('CreateAttachment',_0x30bfe8[_0x9b0b('0x14')],_0x264b6d);_0x24c230(_0x3f2733[_0x9b0b('0x13')](0x1f4,_0x30bfe8[_0x9b0b('0x14')]));});});};
\ No newline at end of file
index a95d499..1c65c70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'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('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
+var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x214ff8,_0x4a4dc7){var _0x476747=function(_0xa68145){while(--_0xa68145){_0x214ff8['push'](_0x214ff8['shift']());}};_0x476747(++_0x4a4dc7);}(_0xadb5,0xad));var _0x5adb=function(_0x58c606,_0x1e52a7){_0x58c606=_0x58c606-0x0;var _0x16a5e8=_0xadb5[_0x58c606];return _0x16a5e8;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./attachment.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
index 25f8839..cf02ba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe54c=['map','emails','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','minutes','clearBlockUser','then','getLicense','catch','passport','Strategy','moment','../../mysqldb','../../config/environment','signToken','login','authenticate','/login','email','google','clientSecret','secret','callbackURL','Setting','findOne','blockDuration','User','find'];(function(_0x12143e,_0x279f8e){var _0x14f9cc=function(_0x3d807b){while(--_0x3d807b){_0x12143e['push'](_0x12143e['shift']());}};_0x14f9cc(++_0x279f8e);}(_0xe54c,0x1eb));var _0xce54=function(_0x5d82d9,_0x3d7694){_0x5d82d9=_0x5d82d9-0x0;var _0x3dfd86=_0xe54c[_0x5d82d9];return _0x3dfd86;};'use strict';var _=require('lodash');var passport=require(_0xce54('0x0'));var GoogleStrategy=require('passport-google-oauth20')[_0xce54('0x1')];var moment=require(_0xce54('0x2'));var db=require(_0xce54('0x3'))['db'];var config=require(_0xce54('0x4'));var signToken=require('../../components/auth/service')[_0xce54('0x5')];var utils=require('../../config/utils');exports[_0xce54('0x6')]=passport[_0xce54('0x7')]('google',{'failureRedirect':_0xce54('0x8'),'scope':['profile',_0xce54('0x9')],'session':![]});exports['callback']=passport[_0xce54('0x7')](_0xce54('0xa'),{'failureRedirect':_0xce54('0x8'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config[_0xce54('0xa')]?config[_0xce54('0xa')]['clientID']:'id','clientSecret':config[_0xce54('0xa')]?config[_0xce54('0xa')][_0xce54('0xb')]:_0xce54('0xc'),'callbackURL':config[_0xce54('0xa')]?config[_0xce54('0xa')][_0xce54('0xd')]:''},function(_0x43f054,_0x34d271,_0x34c11f,_0x5badea){var _0x477777,_0x329df6;return db[_0xce54('0xe')][_0xce54('0xf')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xce54('0x10')],'raw':!![]})['then'](function(_0x1a0340){_0x477777=_0x1a0340;return db[_0xce54('0x11')][_0xce54('0x12')]({'where':{'email':_[_0xce54('0x13')](_0x34c11f[_0xce54('0x14')],_0xce54('0x15')),'role':{'$or':[_0xce54('0x16'),_0xce54('0x17'),_0xce54('0x18')]}}});})['then'](function(_0x1dcfc2){_0x329df6=_0x1dcfc2;if(_0x329df6){if(_0x329df6['disabled']){return _0x5badea(_0xce54('0x19'));}else if(_0x477777['blockDuration']>0x0){if(_0x329df6[_0xce54('0x1a')]){if(moment(_0x329df6[_0xce54('0x1b')])[_0xce54('0x1c')](_0x477777[_0xce54('0x10')],_0xce54('0x1d'))>moment()){return _0x5badea('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xce54('0x1e')](_0x329df6,0x0,![],null)[_0xce54('0x1f')](function(){return utils['getLicense'](_0x329df6);})[_0xce54('0x1f')](function(){return _0x5badea(null,_0x329df6);});}}else{return utils[_0xce54('0x20')](_0x329df6)['then'](function(){return _0x5badea(null,_0x329df6);});}}else{return utils[_0xce54('0x20')](_0x329df6)[_0xce54('0x1f')](function(){return _0x5badea(null,_0x329df6);});}}return _0x5badea(_0xce54('0x19'));})[_0xce54('0x21')](function(_0x480d72){_0x5badea(_0x480d72);});}));
\ No newline at end of file
+var _0xb414=['add','minutes','then','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../config/utils','login','authenticate','google','/login','use','clientID','clientSecret','secret','Setting','allowedLoginAttempts','find','emails','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0xb414,0x1a5));var _0x4b41=function(_0xfb1b76,_0x18a4d5){_0xfb1b76=_0xfb1b76-0x0;var _0xef5991=_0xb414[_0xfb1b76];return _0xef5991;};'use strict';var _=require(_0x4b41('0x0'));var passport=require(_0x4b41('0x1'));var GoogleStrategy=require(_0x4b41('0x2'))['Strategy'];var moment=require(_0x4b41('0x3'));var db=require(_0x4b41('0x4'))['db'];var config=require(_0x4b41('0x5'));var signToken=require('../../components/auth/service')['signToken'];var utils=require(_0x4b41('0x6'));exports[_0x4b41('0x7')]=passport[_0x4b41('0x8')](_0x4b41('0x9'),{'failureRedirect':'/login','scope':['profile','email'],'session':![]});exports['callback']=passport[_0x4b41('0x8')]('google',{'failureRedirect':_0x4b41('0xa'),'session':![]});passport[_0x4b41('0xb')](new GoogleStrategy({'clientID':config['google']?config[_0x4b41('0x9')][_0x4b41('0xc')]:'id','clientSecret':config['google']?config[_0x4b41('0x9')][_0x4b41('0xd')]:_0x4b41('0xe'),'callbackURL':config['google']?config[_0x4b41('0x9')]['callbackURL']:''},function(_0x43da23,_0x39290d,_0x1b7630,_0x43b030){var _0x3d34dd,_0x90062;return db[_0x4b41('0xf')]['findOne']({'where':{'id':0x1},'attributes':[_0x4b41('0x10'),'blockDuration'],'raw':!![]})['then'](function(_0x1f5c35){_0x3d34dd=_0x1f5c35;return db['User'][_0x4b41('0x11')]({'where':{'email':_['map'](_0x1b7630[_0x4b41('0x12')],_0x4b41('0x13')),'role':{'$or':[_0x4b41('0x14'),_0x4b41('0x15'),_0x4b41('0x16')]}}});})['then'](function(_0x2a93cb){_0x90062=_0x2a93cb;if(_0x90062){if(_0x90062['disabled']){return _0x43b030(_0x4b41('0x17'));}else if(_0x3d34dd[_0x4b41('0x18')]>0x0){if(_0x90062[_0x4b41('0x19')]){if(moment(_0x90062[_0x4b41('0x1a')])[_0x4b41('0x1b')](_0x3d34dd[_0x4b41('0x18')],_0x4b41('0x1c'))>moment()){return _0x43b030(_0x4b41('0x17'));}else{return utils['clearBlockUser'](_0x90062,0x0,![],null)[_0x4b41('0x1d')](function(){return utils[_0x4b41('0x1e')](_0x90062);})['then'](function(){return _0x43b030(null,_0x90062);});}}else{return utils[_0x4b41('0x1e')](_0x90062)[_0x4b41('0x1d')](function(){return _0x43b030(null,_0x90062);});}}else{return utils[_0x4b41('0x1e')](_0x90062)[_0x4b41('0x1d')](function(){return _0x43b030(null,_0x90062);});}}return _0x43b030('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x4b41('0x1f')](function(_0xd7d48e){_0x43b030(_0xd7d48e);});}));
\ No newline at end of file
index ec5e02f..96c3cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeae=['exports','express','passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback','isMiddleware'];(function(_0x1a3832,_0x33c9d9){var _0x1fdbcd=function(_0x3822e5){while(--_0x3822e5){_0x1a3832['push'](_0x1a3832['shift']());}};_0x1fdbcd(++_0x33c9d9);}(_0xbeae,0x1cd));var _0xebea=function(_0x4b55e8,_0x41ba7e){_0x4b55e8=_0x4b55e8-0x0;var _0x46e844=_0xbeae[_0x4b55e8];return _0x46e844;};'use strict';var express=require(_0xebea('0x0'));var passport=require(_0xebea('0x1'));var router=express['Router']();var controller=require(_0xebea('0x2'));var userController=require(_0xebea('0x3'));var authService=require(_0xebea('0x4'));router[_0xebea('0x5')]('/',controller[_0xebea('0x6')]);router[_0xebea('0x5')](_0xebea('0x7'),controller['callback'],authService[_0xebea('0x8')],userController[_0xebea('0x6')],authService['setTokenCookie']);module[_0xebea('0x9')]=router;
\ No newline at end of file
+var _0xd3d3=['../../components/auth/service','login','callback','exports','./authGoogle.controller','../user/user.controller.js'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xd3d3,0x15a));var _0x3d3d=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xd3d3[_0x18ab2a];return _0x16dcee;};'use strict';var express=require('express');var passport=require('passport');var router=express['Router']();var controller=require(_0x3d3d('0x0'));var userController=require(_0x3d3d('0x1'));var authService=require(_0x3d3d('0x2'));router['get']('/',controller[_0x3d3d('0x3')]);router['get']('/callback',controller[_0x3d3d('0x4')],authService['isMiddleware'],userController[_0x3d3d('0x3')],authService['setTokenCookie']);module[_0x3d3d('0x5')]=router;
\ No newline at end of file
index 2f3680a..b0d449a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaace=['stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','body','Email\x20parameter\x20is\x20missing','trim','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordExpires','Password\x20reset!','util','passport','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','blocked','blockedAt','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','disabled','clearBlockUser','add','minutes','getLicense','catch','MailAccount','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','secure','authentication','auth','pass','merge','user','request','error','message'];(function(_0x42bfe9,_0x5d22d6){var _0x3b733a=function(_0x5071c8){while(--_0x5071c8){_0x42bfe9['push'](_0x42bfe9['shift']());}};_0x3b733a(++_0x5d22d6);}(_0xaace,0x78));var _0xeaac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaace[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xeaac('0x0'));var passport=require(_0xeaac('0x1'));var LocalStrategy=require('passport-local')[_0xeaac('0x2')];var jayson=require(_0xeaac('0x3'));var _=require(_0xeaac('0x4'));var rs=require(_0xeaac('0x5'));var moment=require(_0xeaac('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xeaac('0x7'));var utils=require('../../config/utils');var client=jayson[_0xeaac('0x8')][_0xeaac('0x9')]({'port':0x232b});function localAuthenticate(_0x9f1d36,_0x1e511e,_0x101f1f,_0x3e62dd){var _0x44b543,_0x322cfc;return db[_0xeaac('0xa')][_0xeaac('0xb')]({'where':{'id':0x1},'attributes':[_0xeaac('0xc'),_0xeaac('0xd')],'raw':!![]})[_0xeaac('0xe')](function(_0x1da861){_0x44b543=_0x1da861;return _0x9f1d36['findOne']({'attributes':['id',_0xeaac('0xf'),_0xeaac('0x10'),_0xeaac('0x11'),_0xeaac('0x12'),'disabled',_0xeaac('0x13'),_0xeaac('0x14'),'loginAttempts'],'where':{'name':_0x1e511e,'role':{'$or':['admin','user',_0xeaac('0x15')]}}});})['then'](function(_0x5ddeb5){if(!_0x5ddeb5||_0x5ddeb5&&_0x5ddeb5['name']!==_0x1e511e){throw new Error(_0xeaac('0x16'));}else{_0x322cfc=_0x5ddeb5;return _0x322cfc;}})[_0xeaac('0xe')](function(){_0x322cfc[_0xeaac('0x17')](_0x101f1f,function(_0x1df40c,_0x5cd5fa){var _0x139e02=_0x322cfc[_0xeaac('0x18')]+0x1;if(_0x1df40c){return _0x3e62dd(_0x1df40c);}else if(!_0x5cd5fa){if(_0x322cfc[_0xeaac('0x19')]){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}else if(_0x44b543['allowedLoginAttempts']>0x0){if(_0x322cfc['blocked']){if(_0x44b543[_0xeaac('0xd')]>0x0){if(moment(_0x322cfc[_0xeaac('0x14')])['add'](_0x44b543['blockDuration'],'minutes')>moment()){return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xeaac('0x1a')](_0x322cfc,_0x139e02,![],null)[_0xeaac('0xe')](function(){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});});}}else{return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x139e02>=_0x44b543[_0xeaac('0xc')]){return utils[_0xeaac('0x1a')](_0x322cfc,0x0,!![],moment())[_0xeaac('0xe')](function(){return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xeaac('0x1a')](_0x322cfc,_0x139e02,![],null)['then'](function(){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});});}}}else{return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}}else{if(_0x322cfc[_0xeaac('0x19')]){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}else if(_0x44b543[_0xeaac('0xc')]>0x0){if(_0x322cfc[_0xeaac('0x13')]){if(_0x44b543[_0xeaac('0xd')]>0x0){if(moment(_0x322cfc[_0xeaac('0x14')])[_0xeaac('0x1b')](_0x44b543[_0xeaac('0xd')],_0xeaac('0x1c'))>moment()){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}else{return utils[_0xeaac('0x1a')](_0x322cfc,0x0,![],null)[_0xeaac('0xe')](function(){return utils[_0xeaac('0x1d')](_0x322cfc);})[_0xeaac('0xe')](function(){return _0x3e62dd(null,_0x322cfc);});}}else{return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}}else{return utils['clearBlockUser'](_0x322cfc,0x0,![],null)['then'](function(){return utils[_0xeaac('0x1d')](_0x322cfc);})['then'](function(){return _0x3e62dd(null,_0x322cfc);})[_0xeaac('0x1e')](function(_0x56dcf8){return _0x3e62dd(null,![],_0x56dcf8);});}}else{if(_0x322cfc[_0xeaac('0x13')]){return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xeaac('0x1d')](_0x322cfc)[_0xeaac('0xe')](function(){return _0x3e62dd(null,_0x322cfc);});}}}});})[_0xeaac('0x1e')](function(_0x485263){return _0x3e62dd(null,![],_0x485263);});}function sendServiceMail(_0x5f868a){return db[_0xeaac('0x1f')]['find']({'where':{'service':!![]},'attributes':['id',_0xeaac('0xf'),_0xeaac('0x20')],'include':[{'model':db['MailServerOut'],'as':_0xeaac('0x21')}]})[_0xeaac('0xe')](function(_0x3f743a){if(!_0x3f743a){throw new Error(_0xeaac('0x22'));}var _0x33cf74={'tls':{'rejectUnauthorized':![]}};if(_0x3f743a[_0xeaac('0x21')][_0xeaac('0x23')]){_0x33cf74['service']=_0x3f743a[_0xeaac('0x21')]['service'];}else{_0x33cf74[_0xeaac('0x24')]=_0x3f743a[_0xeaac('0x21')][_0xeaac('0x24')];_0x33cf74['port']=_0x3f743a[_0xeaac('0x21')]['port'];_0x33cf74['secure']=_0x3f743a[_0xeaac('0x21')][_0xeaac('0x25')];}if(_0x3f743a['Smtp'][_0xeaac('0x26')]){_0x33cf74[_0xeaac('0x27')]={'user':_0x3f743a['Smtp']['user'],'pass':_0x3f743a['Smtp'][_0xeaac('0x28')]};}var _0x3e6c9e={'account':_0x33cf74,'message':_[_0xeaac('0x29')]({'from':util['format']('\x22%s\x22\x20<%s>',_0x3f743a[_0xeaac('0xf')],_0x3f743a[_0xeaac('0x20')]||_0x3f743a[_0xeaac('0x21')][_0xeaac('0x2a')])},_0x5f868a)};return client[_0xeaac('0x2b')]('SendMail',_0x3e6c9e);})[_0xeaac('0xe')](function(_0x5a621f){if(_0x5a621f[_0xeaac('0x2c')]){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x5a621f[_0xeaac('0x2c')][_0xeaac('0x2d')]||JSON[_0xeaac('0x2e')](_0x5a621f['error'])));}return!![];});}function handleError(_0x4c8567,_0x18016d,_0x5ac757){return _0x4c8567[_0xeaac('0x2f')](_0x18016d||0x1f4)[_0xeaac('0x30')]({'message':_0x5ac757?_0x5ac757['message']||_0x5ac757:''});}exports[_0xeaac('0x31')]=function(_0x5a7bc8,_0x24ca4a,_0x11b966){passport[_0xeaac('0x17')](_0xeaac('0x32'),function(_0xd0058e,_0x4b9045,_0xea1e65){var _0x31b76e=_0xd0058e||_0xea1e65;if(_0x31b76e){return handleError(_0x24ca4a,0x191,_0x31b76e);}if(!_0x4b9045){return handleError(_0x24ca4a,0x194,{'message':_0xeaac('0x33')});}else{var _0x407cfc={'payload':{'id':_0x4b9045['id'],'role':_0x4b9045['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x407cfc)[_0xeaac('0xe')](function(_0x1ff338){_0x24ca4a[_0xeaac('0x34')]({'id':_0x4b9045['id'],'token':_0x1ff338,'statusCall':'','isAlreadyLogged':_0x4b9045[_0xeaac('0x35')]});});}})(_0x5a7bc8,_0x24ca4a,_0x11b966);};exports[_0xeaac('0x36')]=function(_0x3a5bc0,_0x34f9f1,_0xf43ab7){if(!_0x3a5bc0[_0xeaac('0x37')][_0xeaac('0x20')]){return handleError(_0x34f9f1,0x1f4,{'message':_0xeaac('0x38')});}var _0x4e1e4d=rs['generate']();_0x3a5bc0[_0xeaac('0x37')][_0xeaac('0x20')]=_0x3a5bc0[_0xeaac('0x37')][_0xeaac('0x20')][_0xeaac('0x39')]()['toLowerCase']();var _0x502dd2;return db[_0xeaac('0xa')][_0xeaac('0xb')]({'where':{'id':0x1},'attributes':[_0xeaac('0xc'),_0xeaac('0xd')],'raw':!![]})[_0xeaac('0xe')](function(_0x43a132){_0x502dd2=_0x43a132;return db[_0xeaac('0x3a')][_0xeaac('0x3b')]({'where':{'email':_0x3a5bc0[_0xeaac('0x37')]['email']}});})['then'](function(_0x59e06d){if(!_0x59e06d){throw new Error(_0xeaac('0x3c'));}if(_0x59e06d[_0xeaac('0x19')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x59e06d['blocked']){if(moment(_0x59e06d[_0xeaac('0x14')])[_0xeaac('0x1b')](_0x502dd2['blockDuration'],_0xeaac('0x1c'))>moment()){throw new Error(_0xeaac('0x3d'));}else{_0x59e06d['blocked']=![];_0x59e06d[_0xeaac('0x14')]=null;}}_0x59e06d[_0xeaac('0x3e')]=_0x4e1e4d;_0x59e06d['resetPasswordExpires']=Date[_0xeaac('0x3f')]()+0x36ee80;return _0x59e06d[_0xeaac('0x40')]();})[_0xeaac('0xe')](function(){return sendServiceMail({'to':_0x3a5bc0['body']['email'],'subject':_0xeaac('0x41'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xeaac('0x42')+_0xeaac('0x43')+_0x3a5bc0['headers'][_0xeaac('0x24')]+_0xeaac('0x44')+_0x4e1e4d+'\x0a\x0a'+_0xeaac('0x45')});})[_0xeaac('0xe')](function(){_0x34f9f1['status'](0xc8)[_0xeaac('0x30')]({'message':_0xeaac('0x46')});})[_0xeaac('0x1e')](function(_0x3bc842){return handleError(_0x34f9f1,0x1f4,_0x3bc842);});};exports[_0xeaac('0x47')]=function(_0x13f97c,_0x247d39,_0x552176){return db['User'][_0xeaac('0x3b')]({'where':{'resetPasswordToken':_0x13f97c[_0xeaac('0x48')][_0xeaac('0x49')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0xeaac('0xe')](function(_0x556784){if(!_0x556784){throw new Error(_0xeaac('0x4a'));}return db['Setting'][_0xeaac('0xb')]({'attributes':['id',_0xeaac('0x4b'),_0xeaac('0x4c'),_0xeaac('0x4d')]})[_0xeaac('0xe')](function(_0x14923c){if(_0x14923c[_0xeaac('0x4b')])authService[_0xeaac('0x4e')](_0x13f97c[_0xeaac('0x37')]['password']);if(!_0x14923c[_0xeaac('0x4c')]||!_0x556784[_0xeaac('0x4f')])return _0x556784;authService[_0xeaac('0x50')](_0x13f97c['body'][_0xeaac('0x10')],_0x556784[_0xeaac('0x4f')],_0x14923c[_0xeaac('0x4d')]);return _0x556784;})[_0xeaac('0xe')](function(){_0x556784[_0xeaac('0x10')]=_0x13f97c[_0xeaac('0x37')][_0xeaac('0x10')];_0x556784[_0xeaac('0x3e')]=null;_0x556784[_0xeaac('0x51')]=null;return _0x556784[_0xeaac('0x40')]();});})['then'](function(){_0x247d39[_0xeaac('0x2f')](0xc8)['send']({'message':_0xeaac('0x52')});})[_0xeaac('0x1e')](function(_0x4aafb9){return handleError(_0x247d39,0x1f4,_0x4aafb9);});};passport['use'](new LocalStrategy({'usernameField':_0xeaac('0xf'),'passwordField':_0xeaac('0x10')},function(_0x383f75,_0x548bff,_0x37ae29){return localAuthenticate(db[_0xeaac('0x3a')],_0x383f75,_0x548bff,_0x37ae29);}));
\ No newline at end of file
+var _0x3105=['Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','add','minutes','getLicense','catch','MailAccount','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','user','merge','format','\x22%s\x22\x20<%s>','request','error','message','status','send','signToken','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','User','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','securePassword','previousPasswords','validatePasswordHistory','resetPasswordToken','resetPasswordExpires','Password\x20reset!','util','passport','passport-local','Strategy','randomstring','moment','../../mysqldb','../../config/utils','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','agent'];(function(_0x73b80e,_0x4daa4a){var _0x4c31cd=function(_0x3663a0){while(--_0x3663a0){_0x73b80e['push'](_0x73b80e['shift']());}};_0x4c31cd(++_0x4daa4a);}(_0x3105,0x7e));var _0x5310=function(_0x55fa37,_0x56176d){_0x55fa37=_0x55fa37-0x0;var _0x573e50=_0x3105[_0x55fa37];return _0x573e50;};'use strict';var util=require(_0x5310('0x0'));var passport=require(_0x5310('0x1'));var LocalStrategy=require(_0x5310('0x2'))[_0x5310('0x3')];var jayson=require('jayson/promise');var _=require('lodash');var rs=require(_0x5310('0x4'));var moment=require(_0x5310('0x5'));var db=require(_0x5310('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x5310('0x7'));var client=jayson[_0x5310('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x5634b4,_0xc48ba7,_0x2aecd7,_0x29d8f9){var _0x5c52b,_0x5c8f12;return db[_0x5310('0x9')][_0x5310('0xa')]({'where':{'id':0x1},'attributes':[_0x5310('0xb'),_0x5310('0xc')],'raw':!![]})[_0x5310('0xd')](function(_0x2b93ae){_0x5c52b=_0x2b93ae;return _0x5634b4[_0x5310('0xa')]({'attributes':['id',_0x5310('0xe'),_0x5310('0xf'),_0x5310('0x10'),_0x5310('0x11'),_0x5310('0x12'),_0x5310('0x13'),_0x5310('0x14'),_0x5310('0x15')],'where':{'name':_0xc48ba7,'role':{'$or':[_0x5310('0x16'),'user',_0x5310('0x17')]}}});})[_0x5310('0xd')](function(_0x4b2eab){if(!_0x4b2eab||_0x4b2eab&&_0x4b2eab[_0x5310('0xe')]!==_0xc48ba7){throw new Error(_0x5310('0x18'));}else{_0x5c8f12=_0x4b2eab;return _0x5c8f12;}})[_0x5310('0xd')](function(){_0x5c8f12[_0x5310('0x19')](_0x2aecd7,function(_0x3d64d4,_0x455072){var _0x4f772=_0x5c8f12[_0x5310('0x15')]+0x1;if(_0x3d64d4){return _0x29d8f9(_0x3d64d4);}else if(!_0x455072){if(_0x5c8f12[_0x5310('0x12')]){return _0x29d8f9(null,![],{'message':_0x5310('0x18')});}else if(_0x5c52b[_0x5310('0xb')]>0x0){if(_0x5c8f12[_0x5310('0x13')]){if(_0x5c52b[_0x5310('0xc')]>0x0){if(moment(_0x5c8f12[_0x5310('0x14')])[_0x5310('0x1a')](_0x5c52b[_0x5310('0xc')],_0x5310('0x1b'))>moment()){return _0x29d8f9(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x5c8f12,_0x4f772,![],null)[_0x5310('0xd')](function(){return _0x29d8f9(null,![],{'message':_0x5310('0x18')});});}}else{return _0x29d8f9(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x4f772>=_0x5c52b[_0x5310('0xb')]){return utils['clearBlockUser'](_0x5c8f12,0x0,!![],moment())[_0x5310('0xd')](function(){return _0x29d8f9(null,![],{'message':_0x5310('0x18')});});}else{return utils['clearBlockUser'](_0x5c8f12,_0x4f772,![],null)[_0x5310('0xd')](function(){return _0x29d8f9(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x29d8f9(null,![],{'message':_0x5310('0x18')});}}else{if(_0x5c8f12[_0x5310('0x12')]){return _0x29d8f9(null,![],{'message':_0x5310('0x18')});}else if(_0x5c52b[_0x5310('0xb')]>0x0){if(_0x5c8f12[_0x5310('0x13')]){if(_0x5c52b[_0x5310('0xc')]>0x0){if(moment(_0x5c8f12[_0x5310('0x14')])[_0x5310('0x1a')](_0x5c52b[_0x5310('0xc')],_0x5310('0x1b'))>moment()){return _0x29d8f9(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x5c8f12,0x0,![],null)[_0x5310('0xd')](function(){return utils['getLicense'](_0x5c8f12);})[_0x5310('0xd')](function(){return _0x29d8f9(null,_0x5c8f12);});}}else{return _0x29d8f9(null,![],{'message':_0x5310('0x18')});}}else{return utils['clearBlockUser'](_0x5c8f12,0x0,![],null)[_0x5310('0xd')](function(){return utils[_0x5310('0x1c')](_0x5c8f12);})[_0x5310('0xd')](function(){return _0x29d8f9(null,_0x5c8f12);})[_0x5310('0x1d')](function(_0x59a143){return _0x29d8f9(null,![],_0x59a143);});}}else{if(_0x5c8f12[_0x5310('0x13')]){return _0x29d8f9(null,![],{'message':_0x5310('0x18')});}else{return utils[_0x5310('0x1c')](_0x5c8f12)[_0x5310('0xd')](function(){return _0x29d8f9(null,_0x5c8f12);});}}}});})[_0x5310('0x1d')](function(_0xb0933f){return _0x29d8f9(null,![],_0xb0933f);});}function sendServiceMail(_0x573dfc){return db[_0x5310('0x1e')][_0x5310('0x1f')]({'where':{'service':!![]},'attributes':['id',_0x5310('0xe'),_0x5310('0x20')],'include':[{'model':db['MailServerOut'],'as':_0x5310('0x21')}]})[_0x5310('0xd')](function(_0x3b94d5){if(!_0x3b94d5){throw new Error(_0x5310('0x22'));}var _0xaba371={'tls':{'rejectUnauthorized':![]}};if(_0x3b94d5[_0x5310('0x21')]['service']){_0xaba371[_0x5310('0x23')]=_0x3b94d5[_0x5310('0x21')]['service'];}else{_0xaba371[_0x5310('0x24')]=_0x3b94d5[_0x5310('0x21')][_0x5310('0x24')];_0xaba371[_0x5310('0x25')]=_0x3b94d5[_0x5310('0x21')][_0x5310('0x25')];_0xaba371[_0x5310('0x26')]=_0x3b94d5['Smtp'][_0x5310('0x26')];}if(_0x3b94d5[_0x5310('0x21')]['authentication']){_0xaba371['auth']={'user':_0x3b94d5['Smtp'][_0x5310('0x27')],'pass':_0x3b94d5[_0x5310('0x21')]['pass']};}var _0x8c7c18={'account':_0xaba371,'message':_[_0x5310('0x28')]({'from':util[_0x5310('0x29')](_0x5310('0x2a'),_0x3b94d5[_0x5310('0xe')],_0x3b94d5[_0x5310('0x20')]||_0x3b94d5[_0x5310('0x21')]['user'])},_0x573dfc)};return client[_0x5310('0x2b')]('SendMail',_0x8c7c18);})[_0x5310('0xd')](function(_0x2a3ac0){if(_0x2a3ac0[_0x5310('0x2c')]){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x2a3ac0['error'][_0x5310('0x2d')]||JSON['stringify'](_0x2a3ac0['error'])));}return!![];});}function handleError(_0x4110db,_0x50b42c,_0x21e65c){return _0x4110db[_0x5310('0x2e')](_0x50b42c||0x1f4)[_0x5310('0x2f')]({'message':_0x21e65c?_0x21e65c[_0x5310('0x2d')]||_0x21e65c:''});}exports['login']=function(_0x42efff,_0x49f2f7,_0x2c2d3b){passport[_0x5310('0x19')]('local',function(_0x3d137c,_0x273f4a,_0x30c183){var _0x3479dd=_0x3d137c||_0x30c183;if(_0x3479dd){return handleError(_0x49f2f7,0x191,_0x3479dd);}if(!_0x273f4a){return handleError(_0x49f2f7,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x123b2c={'payload':{'id':_0x273f4a['id'],'role':_0x273f4a['role']},'options':{'expiresIn':0x15180}};return authService[_0x5310('0x30')](_0x123b2c)[_0x5310('0xd')](function(_0x2976da){_0x49f2f7['json']({'id':_0x273f4a['id'],'token':_0x2976da,'statusCall':'','isAlreadyLogged':_0x273f4a[_0x5310('0x31')]});});}})(_0x42efff,_0x49f2f7,_0x2c2d3b);};exports[_0x5310('0x32')]=function(_0x1a8c4a,_0x292261,_0x4f9b81){if(!_0x1a8c4a['body'][_0x5310('0x20')]){return handleError(_0x292261,0x1f4,{'message':_0x5310('0x33')});}var _0x401508=rs[_0x5310('0x34')]();_0x1a8c4a[_0x5310('0x35')][_0x5310('0x20')]=_0x1a8c4a[_0x5310('0x35')][_0x5310('0x20')][_0x5310('0x36')]()[_0x5310('0x37')]();var _0x23925a;return db[_0x5310('0x9')][_0x5310('0xa')]({'where':{'id':0x1},'attributes':[_0x5310('0xb'),_0x5310('0xc')],'raw':!![]})[_0x5310('0xd')](function(_0x50ccec){_0x23925a=_0x50ccec;return db['User'][_0x5310('0x1f')]({'where':{'email':_0x1a8c4a[_0x5310('0x35')][_0x5310('0x20')]}});})[_0x5310('0xd')](function(_0x37f07d){if(!_0x37f07d){throw new Error(_0x5310('0x38'));}if(_0x37f07d['disabled']){throw new Error(_0x5310('0x39'));}if(_0x37f07d['blocked']){if(moment(_0x37f07d[_0x5310('0x14')])[_0x5310('0x1a')](_0x23925a[_0x5310('0xc')],'minutes')>moment()){throw new Error(_0x5310('0x3a'));}else{_0x37f07d[_0x5310('0x13')]=![];_0x37f07d[_0x5310('0x14')]=null;}}_0x37f07d['resetPasswordToken']=_0x401508;_0x37f07d['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x37f07d[_0x5310('0x3b')]();})[_0x5310('0xd')](function(){return sendServiceMail({'to':_0x1a8c4a[_0x5310('0x35')][_0x5310('0x20')],'subject':_0x5310('0x3c'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x5310('0x3d')+'https://'+_0x1a8c4a[_0x5310('0x3e')][_0x5310('0x24')]+_0x5310('0x3f')+_0x401508+'\x0a\x0a'+_0x5310('0x40')});})[_0x5310('0xd')](function(){_0x292261[_0x5310('0x2e')](0xc8)[_0x5310('0x2f')]({'message':'Reset\x20Email\x20sent!'});})[_0x5310('0x1d')](function(_0x10b8e5){return handleError(_0x292261,0x1f4,_0x10b8e5);});};exports['reset']=function(_0x273535,_0x122972,_0x4b0524){return db[_0x5310('0x41')][_0x5310('0x1f')]({'where':{'resetPasswordToken':_0x273535['params']['token'],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x5310('0xd')](function(_0x425a33){if(!_0x425a33){throw new Error(_0x5310('0x42'));}return db[_0x5310('0x9')][_0x5310('0xa')]({'attributes':['id','securePassword',_0x5310('0x43'),_0x5310('0x44')]})['then'](function(_0x1e9a88){if(_0x1e9a88[_0x5310('0x45')])authService['validatePasswordPattern'](_0x273535[_0x5310('0x35')][_0x5310('0xf')]);if(!_0x1e9a88[_0x5310('0x43')]||!_0x425a33[_0x5310('0x46')])return _0x425a33;authService[_0x5310('0x47')](_0x273535['body'][_0x5310('0xf')],_0x425a33['previousPasswords'],_0x1e9a88[_0x5310('0x44')]);return _0x425a33;})[_0x5310('0xd')](function(){_0x425a33[_0x5310('0xf')]=_0x273535[_0x5310('0x35')]['password'];_0x425a33[_0x5310('0x48')]=null;_0x425a33[_0x5310('0x49')]=null;return _0x425a33[_0x5310('0x3b')]();});})[_0x5310('0xd')](function(){_0x122972[_0x5310('0x2e')](0xc8)[_0x5310('0x2f')]({'message':_0x5310('0x4a')});})[_0x5310('0x1d')](function(_0x466944){return handleError(_0x122972,0x1f4,_0x466944);});};passport['use'](new LocalStrategy({'usernameField':_0x5310('0xe'),'passwordField':_0x5310('0xf')},function(_0x585304,_0x4202a2,_0xa26246){return localAuthenticate(db[_0x5310('0x41')],_0x585304,_0x4202a2,_0xa26246);}));
\ No newline at end of file
index 95d3757..f2f4cc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a9e=['/forgot','forgot','/reset/:token','reset','express','Router','./authLocal.controller','login','post'];(function(_0x43916e,_0x136c0e){var _0x225c62=function(_0x3c3637){while(--_0x3c3637){_0x43916e['push'](_0x43916e['shift']());}};_0x225c62(++_0x136c0e);}(_0x6a9e,0x1cf));var _0xe6a9=function(_0x5cd4b9,_0x3996c0){_0x5cd4b9=_0x5cd4b9-0x0;var _0x30fbf1=_0x6a9e[_0x5cd4b9];return _0x30fbf1;};'use strict';var express=require(_0xe6a9('0x0'));var router=express[_0xe6a9('0x1')]();var controller=require(_0xe6a9('0x2'));router['post']('/',controller[_0xe6a9('0x3')]);router[_0xe6a9('0x4')](_0xe6a9('0x5'),controller[_0xe6a9('0x6')]);router[_0xe6a9('0x4')](_0xe6a9('0x7'),controller[_0xe6a9('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0xe6e4=['express','./authLocal.controller','post','login','/forgot','forgot','reset','exports'];(function(_0x39d067,_0x484365){var _0x5b0140=function(_0x998325){while(--_0x998325){_0x39d067['push'](_0x39d067['shift']());}};_0x5b0140(++_0x484365);}(_0xe6e4,0x160));var _0x4e6e=function(_0x43cc69,_0x401eea){_0x43cc69=_0x43cc69-0x0;var _0xde43ae=_0xe6e4[_0x43cc69];return _0xde43ae;};'use strict';var express=require(_0x4e6e('0x0'));var router=express['Router']();var controller=require(_0x4e6e('0x1'));router[_0x4e6e('0x2')]('/',controller[_0x4e6e('0x3')]);router[_0x4e6e('0x2')](_0x4e6e('0x4'),controller[_0x4e6e('0x5')]);router[_0x4e6e('0x2')]('/reset/:token',controller[_0x4e6e('0x6')]);module[_0x4e6e('0x7')]=router;
\ No newline at end of file
index 6d6f6fc..c1bdbd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fe=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x518b82,_0x222a4e){var _0x3660f1=function(_0x5f300a){while(--_0x5f300a){_0x518b82['push'](_0x518b82['shift']());}};_0x3660f1(++_0x222a4e);}(_0xd9fe,0xde));var _0xed9f=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0xd9fe[_0x3c8e9a];return _0x2d4c57;};'use strict';var Sequelize=require(_0xed9f('0x0'));module[_0xed9f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xed9f('0x2')]},'description':{'type':Sequelize[_0xed9f('0x2')]},'status':{'type':Sequelize[_0xed9f('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xed9f('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xb2b7=['exports','STRING','BOOLEAN','INTEGER'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb2b7,0xbc));var _0x7b2b=function(_0x579294,_0x711905){_0x579294=_0x579294-0x0;var _0x59f66b=_0xb2b7[_0x579294];return _0x59f66b;};'use strict';var Sequelize=require('sequelize');module[_0x7b2b('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0x7b2b('0x1')]},'description':{'type':Sequelize[_0x7b2b('0x1')]},'status':{'type':Sequelize[_0x7b2b('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7b2b('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index c2aa946..515075f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4086=['query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','update','body','destroy','find','addConditions','Condition','ids','findOne','order','getConditions','nolimit','addActions','omit','getActions','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','name','send','map','Automation','type','key','model'];(function(_0x347097,_0x37a135){var _0x5dfd04=function(_0x131412){while(--_0x131412){_0x347097['push'](_0x347097['shift']());}};_0x5dfd04(++_0x37a135);}(_0x4086,0x7d));var _0x6408=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4086[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6408('0x0'));var zipdir=require(_0x6408('0x1'));var jsonpatch=require(_0x6408('0x2'));var rp=require('request-promise');var moment=require(_0x6408('0x3'));var BPromise=require(_0x6408('0x4'));var Mustache=require(_0x6408('0x5'));var util=require(_0x6408('0x6'));var path=require(_0x6408('0x7'));var sox=require(_0x6408('0x8'));var csv=require(_0x6408('0x9'));var ejs=require(_0x6408('0xa'));var fs=require('fs');var fs_extra=require(_0x6408('0xb'));var _=require(_0x6408('0xc'));var squel=require('squel');var crypto=require(_0x6408('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6408('0xe'));var toCsv=require(_0x6408('0x9'));var querystring=require(_0x6408('0xf'));var Papa=require(_0x6408('0x10'));var Redis=require(_0x6408('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6408('0x12'));var as=require(_0x6408('0x13'));var hardwareService=require(_0x6408('0x14'));var logger=require(_0x6408('0x15'))(_0x6408('0x16'));var utils=require(_0x6408('0x17'));var config=require(_0x6408('0x18'));var licenseUtil=require(_0x6408('0x19'));var db=require(_0x6408('0x1a'))['db'];function respondWithStatusCode(_0x4aec2c,_0x5b7d4d){_0x5b7d4d=_0x5b7d4d||0xcc;return function(_0x11406b){if(_0x11406b){return _0x4aec2c[_0x6408('0x1b')](_0x5b7d4d);}return _0x4aec2c[_0x6408('0x1c')](_0x5b7d4d)[_0x6408('0x1d')]();};}function respondWithResult(_0x3971c3,_0x843446){_0x843446=_0x843446||0xc8;return function(_0x1d6106){if(_0x1d6106){return _0x3971c3[_0x6408('0x1c')](_0x843446)[_0x6408('0x1e')](_0x1d6106);}};}function respondWithFilteredResult(_0x547099,_0x4888db){return function(_0x2661d3){if(_0x2661d3){var _0x1f5d63=typeof _0x4888db[_0x6408('0x1f')]===_0x6408('0x20')&&typeof _0x4888db[_0x6408('0x21')]===_0x6408('0x20');var _0x24e81f=_0x2661d3[_0x6408('0x22')];var _0x1ceecb=_0x1f5d63?0x0:_0x4888db[_0x6408('0x1f')];var _0x500bc2=_0x1f5d63?_0x2661d3[_0x6408('0x22')]:_0x4888db[_0x6408('0x1f')]+_0x4888db[_0x6408('0x21')];var _0x68fa5d;if(_0x500bc2>=_0x24e81f){_0x500bc2=_0x24e81f;_0x68fa5d=0xc8;}else{_0x68fa5d=0xce;}_0x547099[_0x6408('0x1c')](_0x68fa5d);return _0x547099[_0x6408('0x23')](_0x6408('0x24'),_0x1ceecb+'-'+_0x500bc2+'/'+_0x24e81f)[_0x6408('0x1e')](_0x2661d3);}return null;};}function patchUpdates(_0x29c9a){return function(_0x40e1ed){try{jsonpatch[_0x6408('0x25')](_0x40e1ed,_0x29c9a,!![]);}catch(_0x508fd9){return BPromise[_0x6408('0x26')](_0x508fd9);}return _0x40e1ed[_0x6408('0x27')]();};}function saveUpdates(_0x2296f6,_0x12b462){return function(_0x42d146){if(_0x42d146){return _0x42d146['update'](_0x2296f6)[_0x6408('0x28')](function(_0x394573){return _0x394573;});}return null;};}function removeEntity(_0x4ee6af,_0x882e8c){return function(_0x4fecc4){if(_0x4fecc4){return _0x4fecc4['destroy']()['then'](function(){_0x4ee6af['status'](0xcc)[_0x6408('0x1d')]();});}};}function handleEntityNotFound(_0xf6ebcc,_0x36138d){return function(_0x47c1ae){if(!_0x47c1ae){_0xf6ebcc[_0x6408('0x1b')](0x194);}return _0x47c1ae;};}function handleError(_0x484b34,_0x1effbf){_0x1effbf=_0x1effbf||0x1f4;return function(_0x40b3de){logger[_0x6408('0x29')](_0x40b3de['stack']);if(_0x40b3de[_0x6408('0x2a')]){delete _0x40b3de[_0x6408('0x2a')];}_0x484b34['status'](_0x1effbf)[_0x6408('0x2b')](_0x40b3de);};}exports['index']=function(_0x1c527e,_0x5ae4bd){var _0x39b386={},_0x3fff05={},_0x4c5cea={'count':0x0,'rows':[]};var _0x3b6ead=_[_0x6408('0x2c')](db[_0x6408('0x2d')]['rawAttributes'],function(_0x1055b8){return{'name':_0x1055b8['fieldName'],'type':_0x1055b8[_0x6408('0x2e')][_0x6408('0x2f')]};});_0x3fff05[_0x6408('0x30')]=_[_0x6408('0x2c')](_0x3b6ead,_0x6408('0x2a'));_0x3fff05[_0x6408('0x31')]=_['keys'](_0x1c527e[_0x6408('0x31')]);_0x3fff05[_0x6408('0x32')]=_[_0x6408('0x33')](_0x3fff05[_0x6408('0x30')],_0x3fff05[_0x6408('0x31')]);_0x39b386[_0x6408('0x34')]=_[_0x6408('0x33')](_0x3fff05['model'],qs[_0x6408('0x35')](_0x1c527e[_0x6408('0x31')]['fields']));_0x39b386['attributes']=_0x39b386['attributes'][_0x6408('0x36')]?_0x39b386['attributes']:_0x3fff05[_0x6408('0x30')];if(!_0x1c527e[_0x6408('0x31')][_0x6408('0x37')]('nolimit')){_0x39b386[_0x6408('0x21')]=qs[_0x6408('0x21')](_0x1c527e['query']['limit']);_0x39b386['offset']=qs['offset'](_0x1c527e[_0x6408('0x31')]['offset']);}_0x39b386['order']=qs[_0x6408('0x38')](_0x1c527e[_0x6408('0x31')]['sort']);_0x39b386[_0x6408('0x39')]=qs[_0x6408('0x32')](_[_0x6408('0x3a')](_0x1c527e[_0x6408('0x31')],_0x3fff05[_0x6408('0x32')]),_0x3b6ead);if(_0x1c527e[_0x6408('0x31')][_0x6408('0x3b')]){_0x39b386[_0x6408('0x39')]=_[_0x6408('0x3c')](_0x39b386[_0x6408('0x39')],{'$or':_['map'](_0x3b6ead,function(_0x47dbf3){if(_0x47dbf3['type']!==_0x6408('0x3d')){var _0x594ca3={};_0x594ca3[_0x47dbf3[_0x6408('0x2a')]]={'$like':'%'+_0x1c527e[_0x6408('0x31')][_0x6408('0x3b')]+'%'};return _0x594ca3;}})});}_0x39b386=_['merge']({},_0x39b386,_0x1c527e[_0x6408('0x3e')]);var _0xd262bd={'where':_0x39b386[_0x6408('0x39')]};return db[_0x6408('0x2d')][_0x6408('0x22')](_0xd262bd)[_0x6408('0x28')](function(_0x2b32e8){_0x4c5cea['count']=_0x2b32e8;if(_0x1c527e[_0x6408('0x31')][_0x6408('0x3f')]){_0x39b386[_0x6408('0x40')]=[{'all':!![]}];}return db[_0x6408('0x2d')][_0x6408('0x41')](_0x39b386);})[_0x6408('0x28')](function(_0x30baa0){_0x4c5cea[_0x6408('0x42')]=_0x30baa0;return _0x4c5cea;})[_0x6408('0x28')](respondWithFilteredResult(_0x5ae4bd,_0x39b386))[_0x6408('0x43')](handleError(_0x5ae4bd,null));};exports[_0x6408('0x44')]=function(_0x23adb6,_0x1c1cd9){var _0x571499={'raw':![],'where':{'id':_0x23adb6[_0x6408('0x45')]['id']}},_0x5f3e19={};_0x5f3e19[_0x6408('0x30')]=_[_0x6408('0x46')](db['Automation'][_0x6408('0x47')]);_0x5f3e19[_0x6408('0x31')]=_['keys'](_0x23adb6[_0x6408('0x31')]);_0x5f3e19[_0x6408('0x32')]=_[_0x6408('0x33')](_0x5f3e19[_0x6408('0x30')],_0x5f3e19['query']);_0x571499[_0x6408('0x34')]=_[_0x6408('0x33')](_0x5f3e19[_0x6408('0x30')],qs['fields'](_0x23adb6['query'][_0x6408('0x35')]));_0x571499[_0x6408('0x34')]=_0x571499['attributes'][_0x6408('0x36')]?_0x571499[_0x6408('0x34')]:_0x5f3e19[_0x6408('0x30')];if(_0x23adb6[_0x6408('0x31')]['includeAll']){_0x571499[_0x6408('0x40')]=[{'all':!![]}];}_0x571499=_[_0x6408('0x3c')]({},_0x571499,_0x23adb6[_0x6408('0x3e')]);return db[_0x6408('0x2d')]['find'](_0x571499)['then'](handleEntityNotFound(_0x1c1cd9,null))[_0x6408('0x28')](respondWithResult(_0x1c1cd9,null))[_0x6408('0x43')](handleError(_0x1c1cd9,null));};exports[_0x6408('0x48')]=function(_0x36254d,_0x2882d8){return db[_0x6408('0x2d')]['create'](_0x36254d['body'],{})[_0x6408('0x28')](respondWithResult(_0x2882d8,0xc9))['catch'](handleError(_0x2882d8,null));};exports[_0x6408('0x49')]=function(_0x242d16,_0x24df2b){if(_0x242d16[_0x6408('0x4a')]['id']){delete _0x242d16[_0x6408('0x4a')]['id'];}return db[_0x6408('0x2d')]['find']({'where':{'id':_0x242d16[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x24df2b,null))[_0x6408('0x28')](saveUpdates(_0x242d16[_0x6408('0x4a')],null))[_0x6408('0x28')](respondWithResult(_0x24df2b,null))[_0x6408('0x43')](handleError(_0x24df2b,null));};exports[_0x6408('0x4b')]=function(_0x15d5b6,_0x3df639){return db[_0x6408('0x2d')][_0x6408('0x4c')]({'where':{'id':_0x15d5b6[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x3df639,null))[_0x6408('0x28')](removeEntity(_0x3df639,null))[_0x6408('0x43')](handleError(_0x3df639,null));};exports[_0x6408('0x4d')]=function(_0x2e397e,_0x4861d2,_0x260814){return db[_0x6408('0x4e')][_0x6408('0x4c')]({'where':{'id':_0x2e397e[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x4861d2,null))[_0x6408('0x28')](function(_0x2b78f0){if(_0x2b78f0){return _0x2b78f0[_0x6408('0x4d')](_0x2e397e['body']['ids'],_['omit'](_0x2e397e['body'],[_0x6408('0x4f'),'id'])||{});}})[_0x6408('0x28')](respondWithResult(_0x4861d2,null))['catch'](handleError(_0x4861d2,null));};exports['getConditions']=function(_0x238db4,_0x4b5d4e,_0x2f92df){var _0x310063={};var _0x3f93ca={};var _0x3a7002;var _0x154af4;return db['Automation'][_0x6408('0x50')]({'where':{'id':_0x238db4['params']['id']}})['then'](handleEntityNotFound(_0x4b5d4e,null))[_0x6408('0x28')](function(_0x224e41){if(_0x224e41){_0x3a7002=_0x224e41;_0x3f93ca[_0x6408('0x30')]=_[_0x6408('0x46')](db[_0x6408('0x4e')]['rawAttributes']);_0x3f93ca[_0x6408('0x31')]=_[_0x6408('0x46')](_0x238db4[_0x6408('0x31')]);_0x3f93ca[_0x6408('0x32')]=_['intersection'](_0x3f93ca[_0x6408('0x30')],_0x3f93ca[_0x6408('0x31')]);_0x310063[_0x6408('0x34')]=_[_0x6408('0x33')](_0x3f93ca['model'],qs['fields'](_0x238db4[_0x6408('0x31')][_0x6408('0x35')]));_0x310063[_0x6408('0x34')]=_0x310063[_0x6408('0x34')]['length']?_0x310063['attributes']:_0x3f93ca[_0x6408('0x30')];_0x310063[_0x6408('0x51')]=qs[_0x6408('0x38')](_0x238db4[_0x6408('0x31')][_0x6408('0x38')]);_0x310063[_0x6408('0x39')]=qs['filters'](_[_0x6408('0x3a')](_0x238db4['query'],_0x3f93ca['filters']));if(_0x238db4['query'][_0x6408('0x3b')]){_0x310063[_0x6408('0x39')]=_[_0x6408('0x3c')](_0x310063['where'],{'$or':_[_0x6408('0x2c')](_0x310063[_0x6408('0x34')],function(_0x3e0933){var _0x5d03fa={};_0x5d03fa[_0x3e0933]={'$like':'%'+_0x238db4[_0x6408('0x31')][_0x6408('0x3b')]+'%'};return _0x5d03fa;})});}_0x310063=_['merge']({},_0x310063,_0x238db4[_0x6408('0x3e')]);return _0x3a7002[_0x6408('0x52')](_0x310063);}})['then'](function(_0x11cfd1){if(_0x11cfd1){_0x154af4=_0x11cfd1['length'];if(!_0x238db4[_0x6408('0x31')][_0x6408('0x37')](_0x6408('0x53'))){_0x310063[_0x6408('0x21')]=qs['limit'](_0x238db4[_0x6408('0x31')][_0x6408('0x21')]);_0x310063['offset']=qs[_0x6408('0x1f')](_0x238db4[_0x6408('0x31')]['offset']);}return _0x3a7002[_0x6408('0x52')](_0x310063);}})[_0x6408('0x28')](function(_0x2b2514){if(_0x2b2514){return _0x2b2514?{'count':_0x154af4,'rows':_0x2b2514}:null;}})['then'](respondWithResult(_0x4b5d4e,null))['catch'](handleError(_0x4b5d4e,null));};exports[_0x6408('0x54')]=function(_0x3bc160,_0x11a810,_0xe07440){return db['Action'][_0x6408('0x4c')]({'where':{'id':_0x3bc160['params']['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x11a810,null))['then'](function(_0x257b33){if(_0x257b33){return _0x257b33[_0x6408('0x54')](_0x3bc160[_0x6408('0x4a')][_0x6408('0x4f')],_[_0x6408('0x55')](_0x3bc160['body'],[_0x6408('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x11a810,null))[_0x6408('0x43')](handleError(_0x11a810,null));};exports[_0x6408('0x56')]=function(_0x377990,_0x2e81ac,_0x3d430e){var _0xc09d1f={};var _0x1c42fd={};var _0x5e8547;var _0x3a4d35;return db[_0x6408('0x2d')][_0x6408('0x50')]({'where':{'id':_0x377990[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x2e81ac,null))[_0x6408('0x28')](function(_0x51cf8a){if(_0x51cf8a){_0x5e8547=_0x51cf8a;_0x1c42fd[_0x6408('0x30')]=_[_0x6408('0x46')](db['Action'][_0x6408('0x47')]);_0x1c42fd[_0x6408('0x31')]=_[_0x6408('0x46')](_0x377990['query']);_0x1c42fd[_0x6408('0x32')]=_[_0x6408('0x33')](_0x1c42fd[_0x6408('0x30')],_0x1c42fd['query']);_0xc09d1f['attributes']=_[_0x6408('0x33')](_0x1c42fd[_0x6408('0x30')],qs[_0x6408('0x35')](_0x377990[_0x6408('0x31')][_0x6408('0x35')]));_0xc09d1f[_0x6408('0x34')]=_0xc09d1f[_0x6408('0x34')][_0x6408('0x36')]?_0xc09d1f[_0x6408('0x34')]:_0x1c42fd[_0x6408('0x30')];_0xc09d1f['order']=qs[_0x6408('0x38')](_0x377990[_0x6408('0x31')][_0x6408('0x38')]);_0xc09d1f[_0x6408('0x39')]=qs['filters'](_[_0x6408('0x3a')](_0x377990[_0x6408('0x31')],_0x1c42fd[_0x6408('0x32')]));if(_0x377990['query'][_0x6408('0x3b')]){_0xc09d1f[_0x6408('0x39')]=_[_0x6408('0x3c')](_0xc09d1f[_0x6408('0x39')],{'$or':_[_0x6408('0x2c')](_0xc09d1f[_0x6408('0x34')],function(_0x372c01){var _0x1f0081={};_0x1f0081[_0x372c01]={'$like':'%'+_0x377990[_0x6408('0x31')][_0x6408('0x3b')]+'%'};return _0x1f0081;})});}_0xc09d1f=_[_0x6408('0x3c')]({},_0xc09d1f,_0x377990[_0x6408('0x3e')]);return _0x5e8547[_0x6408('0x56')](_0xc09d1f);}})[_0x6408('0x28')](function(_0x2e40c0){if(_0x2e40c0){_0x3a4d35=_0x2e40c0[_0x6408('0x36')];if(!_0x377990[_0x6408('0x31')][_0x6408('0x37')](_0x6408('0x53'))){_0xc09d1f[_0x6408('0x21')]=qs['limit'](_0x377990[_0x6408('0x31')][_0x6408('0x21')]);_0xc09d1f[_0x6408('0x1f')]=qs[_0x6408('0x1f')](_0x377990[_0x6408('0x31')]['offset']);}return _0x5e8547[_0x6408('0x56')](_0xc09d1f);}})[_0x6408('0x28')](function(_0xbaa515){if(_0xbaa515){return _0xbaa515?{'count':_0x3a4d35,'rows':_0xbaa515}:null;}})['then'](respondWithResult(_0x2e81ac,null))['catch'](handleError(_0x2e81ac,null));};
\ No newline at end of file
+var _0x8d65=['sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','map','Automation','rawAttributes','fieldName','model','filters','query','attributes','fields','length','hasOwnProperty','sort','where','merge','type','VIRTUAL','filter','include','findAll','rows','catch','show','params','keys','intersection','includeAll','options','find','create','body','addConditions','Condition','ids','omit','getConditions','findOne','pick','nolimit','Action','addActions','getActions','order','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x431807,_0x187385){var _0x51d062=function(_0x2bd6a6){while(--_0x2bd6a6){_0x431807['push'](_0x431807['shift']());}};_0x51d062(++_0x187385);}(_0x8d65,0x91));var _0x58d6=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x8d65[_0x2b4411];return _0x8e41ef;};'use strict';var emlformat=require(_0x58d6('0x0'));var rimraf=require(_0x58d6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x58d6('0x2'));var moment=require(_0x58d6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x58d6('0x4'));var util=require(_0x58d6('0x5'));var path=require(_0x58d6('0x6'));var sox=require(_0x58d6('0x7'));var csv=require(_0x58d6('0x8'));var ejs=require(_0x58d6('0x9'));var fs=require('fs');var fs_extra=require(_0x58d6('0xa'));var _=require(_0x58d6('0xb'));var squel=require('squel');var crypto=require(_0x58d6('0xc'));var jsforce=require(_0x58d6('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x58d6('0x8'));var querystring=require(_0x58d6('0xe'));var Papa=require(_0x58d6('0xf'));var Redis=require(_0x58d6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x58d6('0x11'));var as=require(_0x58d6('0x12'));var hardwareService=require(_0x58d6('0x13'));var logger=require(_0x58d6('0x14'))(_0x58d6('0x15'));var utils=require(_0x58d6('0x16'));var config=require(_0x58d6('0x17'));var licenseUtil=require(_0x58d6('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x351557,_0x3701be){_0x3701be=_0x3701be||0xcc;return function(_0x2c9f40){if(_0x2c9f40){return _0x351557[_0x58d6('0x19')](_0x3701be);}return _0x351557[_0x58d6('0x1a')](_0x3701be)[_0x58d6('0x1b')]();};}function respondWithResult(_0x4efa23,_0x33f495){_0x33f495=_0x33f495||0xc8;return function(_0x5abebb){if(_0x5abebb){return _0x4efa23[_0x58d6('0x1a')](_0x33f495)[_0x58d6('0x1c')](_0x5abebb);}};}function respondWithFilteredResult(_0x3765e9,_0x5bd910){return function(_0x12dcf9){if(_0x12dcf9){var _0x153286=typeof _0x5bd910['offset']===_0x58d6('0x1d')&&typeof _0x5bd910[_0x58d6('0x1e')]===_0x58d6('0x1d');var _0x100585=_0x12dcf9[_0x58d6('0x1f')];var _0x1527f9=_0x153286?0x0:_0x5bd910[_0x58d6('0x20')];var _0x121e46=_0x153286?_0x12dcf9[_0x58d6('0x1f')]:_0x5bd910[_0x58d6('0x20')]+_0x5bd910['limit'];var _0x22407b;if(_0x121e46>=_0x100585){_0x121e46=_0x100585;_0x22407b=0xc8;}else{_0x22407b=0xce;}_0x3765e9['status'](_0x22407b);return _0x3765e9[_0x58d6('0x21')](_0x58d6('0x22'),_0x1527f9+'-'+_0x121e46+'/'+_0x100585)[_0x58d6('0x1c')](_0x12dcf9);}return null;};}function patchUpdates(_0x2d6201){return function(_0x370115){try{jsonpatch[_0x58d6('0x23')](_0x370115,_0x2d6201,!![]);}catch(_0x1fe33b){return BPromise[_0x58d6('0x24')](_0x1fe33b);}return _0x370115[_0x58d6('0x25')]();};}function saveUpdates(_0x3bf6c1,_0x28fc3f){return function(_0x3b74a8){if(_0x3b74a8){return _0x3b74a8[_0x58d6('0x26')](_0x3bf6c1)[_0x58d6('0x27')](function(_0x163aff){return _0x163aff;});}return null;};}function removeEntity(_0x413747,_0x4cd6ba){return function(_0x262c4f){if(_0x262c4f){return _0x262c4f[_0x58d6('0x28')]()[_0x58d6('0x27')](function(){_0x413747[_0x58d6('0x1a')](0xcc)[_0x58d6('0x1b')]();});}};}function handleEntityNotFound(_0x2ebb5f,_0x491ef4){return function(_0xc8d2a7){if(!_0xc8d2a7){_0x2ebb5f['sendStatus'](0x194);}return _0xc8d2a7;};}function handleError(_0x247d4f,_0x532faa){_0x532faa=_0x532faa||0x1f4;return function(_0x93fbb0){logger['error'](_0x93fbb0[_0x58d6('0x29')]);if(_0x93fbb0['name']){delete _0x93fbb0[_0x58d6('0x2a')];}_0x247d4f[_0x58d6('0x1a')](_0x532faa)['send'](_0x93fbb0);};}exports['index']=function(_0x1f139d,_0x2c283c){var _0x54c53e={},_0x3848bb={},_0x985cca={'count':0x0,'rows':[]};var _0x11e3bc=_[_0x58d6('0x2b')](db[_0x58d6('0x2c')][_0x58d6('0x2d')],function(_0x2bc1e3){return{'name':_0x2bc1e3[_0x58d6('0x2e')],'type':_0x2bc1e3['type']['key']};});_0x3848bb[_0x58d6('0x2f')]=_['map'](_0x11e3bc,_0x58d6('0x2a'));_0x3848bb['query']=_['keys'](_0x1f139d['query']);_0x3848bb[_0x58d6('0x30')]=_['intersection'](_0x3848bb[_0x58d6('0x2f')],_0x3848bb[_0x58d6('0x31')]);_0x54c53e[_0x58d6('0x32')]=_['intersection'](_0x3848bb[_0x58d6('0x2f')],qs[_0x58d6('0x33')](_0x1f139d[_0x58d6('0x31')][_0x58d6('0x33')]));_0x54c53e[_0x58d6('0x32')]=_0x54c53e['attributes'][_0x58d6('0x34')]?_0x54c53e['attributes']:_0x3848bb[_0x58d6('0x2f')];if(!_0x1f139d[_0x58d6('0x31')][_0x58d6('0x35')]('nolimit')){_0x54c53e[_0x58d6('0x1e')]=qs['limit'](_0x1f139d[_0x58d6('0x31')][_0x58d6('0x1e')]);_0x54c53e['offset']=qs[_0x58d6('0x20')](_0x1f139d[_0x58d6('0x31')][_0x58d6('0x20')]);}_0x54c53e['order']=qs[_0x58d6('0x36')](_0x1f139d['query'][_0x58d6('0x36')]);_0x54c53e['where']=qs[_0x58d6('0x30')](_['pick'](_0x1f139d[_0x58d6('0x31')],_0x3848bb[_0x58d6('0x30')]),_0x11e3bc);if(_0x1f139d['query']['filter']){_0x54c53e[_0x58d6('0x37')]=_[_0x58d6('0x38')](_0x54c53e[_0x58d6('0x37')],{'$or':_['map'](_0x11e3bc,function(_0x404967){if(_0x404967[_0x58d6('0x39')]!==_0x58d6('0x3a')){var _0x204c62={};_0x204c62[_0x404967[_0x58d6('0x2a')]]={'$like':'%'+_0x1f139d[_0x58d6('0x31')][_0x58d6('0x3b')]+'%'};return _0x204c62;}})});}_0x54c53e=_[_0x58d6('0x38')]({},_0x54c53e,_0x1f139d['options']);var _0x45acd1={'where':_0x54c53e[_0x58d6('0x37')]};return db['Automation']['count'](_0x45acd1)['then'](function(_0x53f3f6){_0x985cca[_0x58d6('0x1f')]=_0x53f3f6;if(_0x1f139d[_0x58d6('0x31')]['includeAll']){_0x54c53e[_0x58d6('0x3c')]=[{'all':!![]}];}return db[_0x58d6('0x2c')][_0x58d6('0x3d')](_0x54c53e);})[_0x58d6('0x27')](function(_0x3f8de9){_0x985cca[_0x58d6('0x3e')]=_0x3f8de9;return _0x985cca;})[_0x58d6('0x27')](respondWithFilteredResult(_0x2c283c,_0x54c53e))[_0x58d6('0x3f')](handleError(_0x2c283c,null));};exports[_0x58d6('0x40')]=function(_0x5665f5,_0x13b335){var _0x249820={'raw':![],'where':{'id':_0x5665f5[_0x58d6('0x41')]['id']}},_0x2ce9bb={};_0x2ce9bb[_0x58d6('0x2f')]=_[_0x58d6('0x42')](db['Automation'][_0x58d6('0x2d')]);_0x2ce9bb['query']=_[_0x58d6('0x42')](_0x5665f5[_0x58d6('0x31')]);_0x2ce9bb[_0x58d6('0x30')]=_[_0x58d6('0x43')](_0x2ce9bb['model'],_0x2ce9bb[_0x58d6('0x31')]);_0x249820['attributes']=_[_0x58d6('0x43')](_0x2ce9bb['model'],qs[_0x58d6('0x33')](_0x5665f5[_0x58d6('0x31')][_0x58d6('0x33')]));_0x249820[_0x58d6('0x32')]=_0x249820[_0x58d6('0x32')][_0x58d6('0x34')]?_0x249820[_0x58d6('0x32')]:_0x2ce9bb[_0x58d6('0x2f')];if(_0x5665f5[_0x58d6('0x31')][_0x58d6('0x44')]){_0x249820[_0x58d6('0x3c')]=[{'all':!![]}];}_0x249820=_[_0x58d6('0x38')]({},_0x249820,_0x5665f5[_0x58d6('0x45')]);return db[_0x58d6('0x2c')][_0x58d6('0x46')](_0x249820)['then'](handleEntityNotFound(_0x13b335,null))[_0x58d6('0x27')](respondWithResult(_0x13b335,null))[_0x58d6('0x3f')](handleError(_0x13b335,null));};exports['create']=function(_0x37c79b,_0x5dd3b1){return db['Automation'][_0x58d6('0x47')](_0x37c79b[_0x58d6('0x48')],{})['then'](respondWithResult(_0x5dd3b1,0xc9))['catch'](handleError(_0x5dd3b1,null));};exports[_0x58d6('0x26')]=function(_0xdecfdc,_0x5ed681){if(_0xdecfdc[_0x58d6('0x48')]['id']){delete _0xdecfdc['body']['id'];}return db['Automation']['find']({'where':{'id':_0xdecfdc[_0x58d6('0x41')]['id']}})[_0x58d6('0x27')](handleEntityNotFound(_0x5ed681,null))[_0x58d6('0x27')](saveUpdates(_0xdecfdc['body'],null))[_0x58d6('0x27')](respondWithResult(_0x5ed681,null))[_0x58d6('0x3f')](handleError(_0x5ed681,null));};exports[_0x58d6('0x28')]=function(_0x2dd67f,_0x3214e7){return db['Automation']['find']({'where':{'id':_0x2dd67f[_0x58d6('0x41')]['id']}})['then'](handleEntityNotFound(_0x3214e7,null))['then'](removeEntity(_0x3214e7,null))[_0x58d6('0x3f')](handleError(_0x3214e7,null));};exports[_0x58d6('0x49')]=function(_0x4d9985,_0x4c4ac4,_0x39049a){return db[_0x58d6('0x4a')]['find']({'where':{'id':_0x4d9985[_0x58d6('0x41')]['id']}})[_0x58d6('0x27')](handleEntityNotFound(_0x4c4ac4,null))[_0x58d6('0x27')](function(_0x2ab97b){if(_0x2ab97b){return _0x2ab97b[_0x58d6('0x49')](_0x4d9985[_0x58d6('0x48')][_0x58d6('0x4b')],_[_0x58d6('0x4c')](_0x4d9985[_0x58d6('0x48')],[_0x58d6('0x4b'),'id'])||{});}})[_0x58d6('0x27')](respondWithResult(_0x4c4ac4,null))[_0x58d6('0x3f')](handleError(_0x4c4ac4,null));};exports[_0x58d6('0x4d')]=function(_0x555496,_0x4035bb,_0x153831){var _0x57736e={};var _0x376907={};var _0x325649;var _0x3a49bd;return db[_0x58d6('0x2c')][_0x58d6('0x4e')]({'where':{'id':_0x555496[_0x58d6('0x41')]['id']}})['then'](handleEntityNotFound(_0x4035bb,null))[_0x58d6('0x27')](function(_0x18bf13){if(_0x18bf13){_0x325649=_0x18bf13;_0x376907[_0x58d6('0x2f')]=_[_0x58d6('0x42')](db[_0x58d6('0x4a')][_0x58d6('0x2d')]);_0x376907[_0x58d6('0x31')]=_['keys'](_0x555496['query']);_0x376907[_0x58d6('0x30')]=_[_0x58d6('0x43')](_0x376907[_0x58d6('0x2f')],_0x376907[_0x58d6('0x31')]);_0x57736e[_0x58d6('0x32')]=_[_0x58d6('0x43')](_0x376907[_0x58d6('0x2f')],qs[_0x58d6('0x33')](_0x555496[_0x58d6('0x31')][_0x58d6('0x33')]));_0x57736e[_0x58d6('0x32')]=_0x57736e[_0x58d6('0x32')][_0x58d6('0x34')]?_0x57736e[_0x58d6('0x32')]:_0x376907[_0x58d6('0x2f')];_0x57736e['order']=qs[_0x58d6('0x36')](_0x555496['query'][_0x58d6('0x36')]);_0x57736e[_0x58d6('0x37')]=qs[_0x58d6('0x30')](_[_0x58d6('0x4f')](_0x555496[_0x58d6('0x31')],_0x376907[_0x58d6('0x30')]));if(_0x555496[_0x58d6('0x31')][_0x58d6('0x3b')]){_0x57736e[_0x58d6('0x37')]=_[_0x58d6('0x38')](_0x57736e[_0x58d6('0x37')],{'$or':_[_0x58d6('0x2b')](_0x57736e[_0x58d6('0x32')],function(_0x2f9d88){var _0x2b6439={};_0x2b6439[_0x2f9d88]={'$like':'%'+_0x555496[_0x58d6('0x31')]['filter']+'%'};return _0x2b6439;})});}_0x57736e=_[_0x58d6('0x38')]({},_0x57736e,_0x555496[_0x58d6('0x45')]);return _0x325649[_0x58d6('0x4d')](_0x57736e);}})[_0x58d6('0x27')](function(_0x333088){if(_0x333088){_0x3a49bd=_0x333088[_0x58d6('0x34')];if(!_0x555496['query'][_0x58d6('0x35')](_0x58d6('0x50'))){_0x57736e['limit']=qs[_0x58d6('0x1e')](_0x555496[_0x58d6('0x31')][_0x58d6('0x1e')]);_0x57736e['offset']=qs['offset'](_0x555496[_0x58d6('0x31')][_0x58d6('0x20')]);}return _0x325649[_0x58d6('0x4d')](_0x57736e);}})[_0x58d6('0x27')](function(_0x11c36d){if(_0x11c36d){return _0x11c36d?{'count':_0x3a49bd,'rows':_0x11c36d}:null;}})[_0x58d6('0x27')](respondWithResult(_0x4035bb,null))['catch'](handleError(_0x4035bb,null));};exports['addActions']=function(_0x1cbf17,_0x112292,_0x320dd7){return db[_0x58d6('0x51')]['find']({'where':{'id':_0x1cbf17[_0x58d6('0x41')]['id']}})[_0x58d6('0x27')](handleEntityNotFound(_0x112292,null))['then'](function(_0x5ad7a6){if(_0x5ad7a6){return _0x5ad7a6[_0x58d6('0x52')](_0x1cbf17[_0x58d6('0x48')][_0x58d6('0x4b')],_[_0x58d6('0x4c')](_0x1cbf17['body'],[_0x58d6('0x4b'),'id'])||{});}})['then'](respondWithResult(_0x112292,null))[_0x58d6('0x3f')](handleError(_0x112292,null));};exports[_0x58d6('0x53')]=function(_0x554f85,_0x2b98ac,_0x31caf4){var _0x4b30b5={};var _0x447d49={};var _0x3195a6;var _0x3a0dc3;return db[_0x58d6('0x2c')]['findOne']({'where':{'id':_0x554f85[_0x58d6('0x41')]['id']}})['then'](handleEntityNotFound(_0x2b98ac,null))[_0x58d6('0x27')](function(_0x8b2c20){if(_0x8b2c20){_0x3195a6=_0x8b2c20;_0x447d49[_0x58d6('0x2f')]=_['keys'](db[_0x58d6('0x51')][_0x58d6('0x2d')]);_0x447d49[_0x58d6('0x31')]=_[_0x58d6('0x42')](_0x554f85['query']);_0x447d49[_0x58d6('0x30')]=_[_0x58d6('0x43')](_0x447d49['model'],_0x447d49[_0x58d6('0x31')]);_0x4b30b5['attributes']=_['intersection'](_0x447d49[_0x58d6('0x2f')],qs[_0x58d6('0x33')](_0x554f85[_0x58d6('0x31')]['fields']));_0x4b30b5[_0x58d6('0x32')]=_0x4b30b5[_0x58d6('0x32')][_0x58d6('0x34')]?_0x4b30b5[_0x58d6('0x32')]:_0x447d49[_0x58d6('0x2f')];_0x4b30b5[_0x58d6('0x54')]=qs[_0x58d6('0x36')](_0x554f85['query']['sort']);_0x4b30b5[_0x58d6('0x37')]=qs[_0x58d6('0x30')](_[_0x58d6('0x4f')](_0x554f85['query'],_0x447d49['filters']));if(_0x554f85[_0x58d6('0x31')][_0x58d6('0x3b')]){_0x4b30b5[_0x58d6('0x37')]=_[_0x58d6('0x38')](_0x4b30b5[_0x58d6('0x37')],{'$or':_[_0x58d6('0x2b')](_0x4b30b5[_0x58d6('0x32')],function(_0x23d8ce){var _0x46cd37={};_0x46cd37[_0x23d8ce]={'$like':'%'+_0x554f85[_0x58d6('0x31')]['filter']+'%'};return _0x46cd37;})});}_0x4b30b5=_[_0x58d6('0x38')]({},_0x4b30b5,_0x554f85[_0x58d6('0x45')]);return _0x3195a6['getActions'](_0x4b30b5);}})['then'](function(_0x1e26e5){if(_0x1e26e5){_0x3a0dc3=_0x1e26e5[_0x58d6('0x34')];if(!_0x554f85['query'][_0x58d6('0x35')](_0x58d6('0x50'))){_0x4b30b5[_0x58d6('0x1e')]=qs[_0x58d6('0x1e')](_0x554f85[_0x58d6('0x31')][_0x58d6('0x1e')]);_0x4b30b5[_0x58d6('0x20')]=qs[_0x58d6('0x20')](_0x554f85[_0x58d6('0x31')][_0x58d6('0x20')]);}return _0x3195a6['getActions'](_0x4b30b5);}})['then'](function(_0x966672){if(_0x966672){return _0x966672?{'count':_0x3a0dc3,'rows':_0x966672}:null;}})[_0x58d6('0x27')](respondWithResult(_0x2b98ac,null))[_0x58d6('0x3f')](handleError(_0x2b98ac,null));};
\ No newline at end of file
index 486019d..8a31058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba3=['tools_automations','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','define'];(function(_0x274244,_0x122529){var _0x25ca10=function(_0x200ca1){while(--_0x200ca1){_0x274244['push'](_0x274244['shift']());}};_0x25ca10(++_0x122529);}(_0x2ba3,0x83));var _0x32ba=function(_0x49e342,_0x4cb7bd){_0x49e342=_0x49e342-0x0;var _0x40cd8c=_0x2ba3[_0x49e342];return _0x40cd8c;};'use strict';var _=require(_0x32ba('0x0'));var util=require(_0x32ba('0x1'));var logger=require(_0x32ba('0x2'))(_0x32ba('0x3'));var moment=require('moment');var BPromise=require(_0x32ba('0x4'));var rp=require(_0x32ba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x32ba('0x6'));var config=require(_0x32ba('0x7'));var attributes=require('./automation.attributes');module['exports']=function(_0x15bee6,_0x16a193){return _0x15bee6[_0x32ba('0x8')]('Automation',attributes,{'tableName':_0x32ba('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3659=['define','Automation','tools_automations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x5deae9,_0x5ad727){var _0x7f44cb=function(_0x108643){while(--_0x108643){_0x5deae9['push'](_0x5deae9['shift']());}};_0x7f44cb(++_0x5ad727);}(_0x3659,0x121));var _0x9365=function(_0xce6f11,_0x3c3137){_0xce6f11=_0xce6f11-0x0;var _0x35b709=_0x3659[_0xce6f11];return _0x35b709;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9365('0x0'))(_0x9365('0x1'));var moment=require(_0x9365('0x2'));var BPromise=require(_0x9365('0x3'));var rp=require(_0x9365('0x4'));var fs=require('fs');var path=require(_0x9365('0x5'));var rimraf=require(_0x9365('0x6'));var config=require('../../config/environment');var attributes=require('./automation.attributes');module[_0x9365('0x7')]=function(_0x370e50,_0x5e4f5a){return _0x370e50[_0x9365('0x8')](_0x9365('0x9'),attributes,{'tableName':_0x9365('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fc5e36..0b3bbc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0137=['http','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b1e76,_0x31695b){var _0x3d743a=function(_0x4ae27b){while(--_0x4ae27b){_0x1b1e76['push'](_0x1b1e76['shift']());}};_0x3d743a(++_0x31695b);}(_0x0137,0x1d8));var _0x7013=function(_0x4c82af,_0x5ca362){_0x4c82af=_0x4c82af-0x0;var _0x260354=_0x0137[_0x4c82af];return _0x260354;};'use strict';var _=require(_0x7013('0x0'));var util=require(_0x7013('0x1'));var moment=require(_0x7013('0x2'));var BPromise=require(_0x7013('0x3'));var rs=require(_0x7013('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7013('0x5'))['db'];var utils=require(_0x7013('0x6'));var logger=require(_0x7013('0x7'))(_0x7013('0x8'));var config=require(_0x7013('0x9'));var jayson=require(_0x7013('0xa'));var client=jayson['client'][_0x7013('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x346a4d,_0x4e2460,_0x16c0c8){return new BPromise(function(_0x16dae3,_0x1b748c){return client['request'](_0x346a4d,_0x16c0c8)[_0x7013('0xc')](function(_0x551b8a){logger[_0x7013('0xd')](_0x7013('0xe'),_0x4e2460,'request\x20sent');logger[_0x7013('0xf')](_0x7013('0x10'),_0x4e2460,_0x7013('0x11'),JSON[_0x7013('0x12')](_0x551b8a));if(_0x551b8a[_0x7013('0x13')]){if(_0x551b8a[_0x7013('0x13')]['code']===0x1f4){logger[_0x7013('0x13')](_0x7013('0xe'),_0x4e2460,_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);return _0x1b748c(_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);}logger[_0x7013('0x13')](_0x7013('0xe'),_0x4e2460,_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);return _0x16dae3(_0x551b8a[_0x7013('0x13')]['message']);}else{logger['info'](_0x7013('0xe'),_0x4e2460,_0x7013('0x11'));_0x16dae3(_0x551b8a[_0x7013('0x15')][_0x7013('0x14')]);}})[_0x7013('0x16')](function(_0x48614e){logger['error'](_0x7013('0xe'),_0x4e2460,_0x48614e);_0x1b748c(_0x48614e);});});}
\ No newline at end of file
+var _0x2015=['client','http','then','Automation,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x4a3160,_0x2f2c96){var _0x5b6088=function(_0x599c76){while(--_0x599c76){_0x4a3160['push'](_0x4a3160['shift']());}};_0x5b6088(++_0x2f2c96);}(_0x2015,0x193));var _0x5201=function(_0x474e82,_0x1b82c2){_0x474e82=_0x474e82-0x0;var _0x57fb25=_0x2015[_0x474e82];return _0x57fb25;};'use strict';var _=require(_0x5201('0x0'));var util=require(_0x5201('0x1'));var moment=require(_0x5201('0x2'));var BPromise=require(_0x5201('0x3'));var rs=require(_0x5201('0x4'));var fs=require('fs');var Redis=require(_0x5201('0x5'));var db=require(_0x5201('0x6'))['db'];var utils=require(_0x5201('0x7'));var logger=require('../../config/logger')(_0x5201('0x8'));var config=require(_0x5201('0x9'));var jayson=require(_0x5201('0xa'));var client=jayson[_0x5201('0xb')][_0x5201('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x11ce7b,_0x334b42,_0x374d23){return new BPromise(function(_0x15367c,_0x6fc2c3){return client['request'](_0x11ce7b,_0x374d23)[_0x5201('0xd')](function(_0x17d8f3){logger['info'](_0x5201('0xe'),_0x334b42,_0x5201('0xf'));logger[_0x5201('0x10')]('Automation,\x20%s,\x20%s,\x20%s',_0x334b42,_0x5201('0xf'),JSON[_0x5201('0x11')](_0x17d8f3));if(_0x17d8f3[_0x5201('0x12')]){if(_0x17d8f3[_0x5201('0x12')][_0x5201('0x13')]===0x1f4){logger[_0x5201('0x12')](_0x5201('0xe'),_0x334b42,_0x17d8f3[_0x5201('0x12')][_0x5201('0x14')]);return _0x6fc2c3(_0x17d8f3[_0x5201('0x12')][_0x5201('0x14')]);}logger[_0x5201('0x12')]('Automation,\x20%s,\x20%s',_0x334b42,_0x17d8f3[_0x5201('0x12')][_0x5201('0x14')]);return _0x15367c(_0x17d8f3['error']['message']);}else{logger[_0x5201('0x15')](_0x5201('0xe'),_0x334b42,_0x5201('0xf'));_0x15367c(_0x17d8f3['result']['message']);}})[_0x5201('0x16')](function(_0x582210){logger[_0x5201('0x12')]('Automation,\x20%s,\x20%s',_0x334b42,_0x582210);_0x6fc2c3(_0x582210);});});}
\ No newline at end of file
index 9ef693a..c1fd874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe953=['post','addConditions','addActions','put','update','delete','destroy','exports','Router','fs-extra','../../components/interaction/service','./automation.controller','isAuthenticated','index','get','/:id','/:id/conditions','/:id/actions','getActions'];(function(_0x333ce0,_0x512969){var _0x2f576e=function(_0x4f90b1){while(--_0x4f90b1){_0x333ce0['push'](_0x333ce0['shift']());}};_0x2f576e(++_0x512969);}(_0xe953,0x1d0));var _0x3e95=function(_0x164af1,_0x3cf772){_0x164af1=_0x164af1-0x0;var _0x5d81a2=_0xe953[_0x164af1];return _0x5d81a2;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3e95('0x0')]();var fs_extra=require(_0x3e95('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x3e95('0x2'));var config=require('../../config/environment');var controller=require(_0x3e95('0x3'));router['get']('/',auth[_0x3e95('0x4')](),controller[_0x3e95('0x5')]);router[_0x3e95('0x6')](_0x3e95('0x7'),auth[_0x3e95('0x4')](),controller['show']);router[_0x3e95('0x6')](_0x3e95('0x8'),auth[_0x3e95('0x4')](),controller['getConditions']);router[_0x3e95('0x6')](_0x3e95('0x9'),auth[_0x3e95('0x4')](),controller[_0x3e95('0xa')]);router['post']('/',auth[_0x3e95('0x4')](),controller['create']);router[_0x3e95('0xb')](_0x3e95('0x8'),auth[_0x3e95('0x4')](),controller[_0x3e95('0xc')]);router[_0x3e95('0xb')](_0x3e95('0x9'),auth['isAuthenticated'](),controller[_0x3e95('0xd')]);router[_0x3e95('0xe')]('/:id',auth[_0x3e95('0x4')](),controller[_0x3e95('0xf')]);router[_0x3e95('0x10')](_0x3e95('0x7'),auth['isAuthenticated'](),controller[_0x3e95('0x11')]);module[_0x3e95('0x12')]=router;
\ No newline at end of file
+var _0xdbf7=['isAuthenticated','index','get','/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x302cbb,_0x38dc84){var _0x42ca6b=function(_0x4ca4ae){while(--_0x4ca4ae){_0x302cbb['push'](_0x302cbb['shift']());}};_0x42ca6b(++_0x38dc84);}(_0xdbf7,0x8d));var _0x7dbf=function(_0x385379,_0x9b2b8c){_0x385379=_0x385379-0x0;var _0x1dc027=_0xdbf7[_0x385379];return _0x1dc027;};'use strict';var multer=require(_0x7dbf('0x0'));var util=require(_0x7dbf('0x1'));var path=require(_0x7dbf('0x2'));var timeout=require(_0x7dbf('0x3'));var express=require(_0x7dbf('0x4'));var router=express[_0x7dbf('0x5')]();var fs_extra=require(_0x7dbf('0x6'));var auth=require(_0x7dbf('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7dbf('0x8'));var controller=require('./automation.controller');router['get']('/',auth[_0x7dbf('0x9')](),controller[_0x7dbf('0xa')]);router[_0x7dbf('0xb')](_0x7dbf('0xc'),auth[_0x7dbf('0x9')](),controller[_0x7dbf('0xd')]);router[_0x7dbf('0xb')](_0x7dbf('0xe'),auth[_0x7dbf('0x9')](),controller[_0x7dbf('0xf')]);router[_0x7dbf('0xb')](_0x7dbf('0x10'),auth[_0x7dbf('0x9')](),controller[_0x7dbf('0x11')]);router[_0x7dbf('0x12')]('/',auth['isAuthenticated'](),controller[_0x7dbf('0x13')]);router[_0x7dbf('0x12')](_0x7dbf('0xe'),auth[_0x7dbf('0x9')](),controller[_0x7dbf('0x14')]);router[_0x7dbf('0x12')]('/:id/actions',auth[_0x7dbf('0x9')](),controller['addActions']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x7dbf('0x15')]);router[_0x7dbf('0x16')](_0x7dbf('0xc'),auth['isAuthenticated'](),controller[_0x7dbf('0x17')]);module[_0x7dbf('0x18')]=router;
\ No newline at end of file
index 6cec220..a2a7f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b12=['DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\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)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length'];(function(_0x21db13,_0x2b2d48){var _0x57aa14=function(_0x53b54b){while(--_0x53b54b){_0x21db13['push'](_0x21db13['shift']());}};_0x57aa14(++_0x2b2d48);}(_0x9b12,0x1d8));var _0x29b1=function(_0x252862,_0x2040a6){_0x252862=_0x252862-0x0;var _0x3ab7e2=_0x9b12[_0x252862];return _0x3ab7e2;};'use strict';var Sequelize=require('sequelize');module[_0x29b1('0x0')]={'name':{'type':Sequelize[_0x29b1('0x1')],'unique':_0x29b1('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x29b1('0x3')]('ivr'),'allowNull':![],'defaultValue':_0x29b1('0x4')},'description':{'type':Sequelize[_0x29b1('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x29b1('0x5')},'limitCalls':{'type':Sequelize[_0x29b1('0x6')](0x4)[_0x29b1('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x29b1('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x29b1('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x29b1('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0xa')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0xb')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'comment':_0x29b1('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x29b1('0xd')},'dialTimezone':{'type':Sequelize[_0x29b1('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x29b1('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0x29b1('0x3')](_0x29b1('0xf'),'never','onlyIfOpen'),'defaultValue':_0x29b1('0xf')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x29b1('0x10')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x29b1('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x29b1('0x11')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x29b1('0x12')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x29b1('0x6')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x29b1('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x29b1('0x13')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x29b1('0x6')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x29b1('0x14')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x29b1('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x29b1('0x15')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x29b1('0x16')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x29b1('0x17'),_0x29b1('0x18')),'defaultValue':_0x29b1('0x17')},'dialPrefix':{'type':Sequelize[_0x29b1('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x29b1('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x29b1('0x19')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x1a')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x1b')},'dialDropRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x1c')},'dialMachineMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x1d')},'dialMachineRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x1e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x1f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x20')}};
\ No newline at end of file
+var _0x5d45=['#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','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)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','STRING','name','ENUM','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting'];(function(_0x12b192,_0x3cb0aa){var _0x405fd9=function(_0x8365f1){while(--_0x8365f1){_0x12b192['push'](_0x12b192['shift']());}};_0x405fd9(++_0x3cb0aa);}(_0x5d45,0x165));var _0x55d4=function(_0x565821,_0x5b3815){_0x565821=_0x565821-0x0;var _0xd0f82b=_0x5d45[_0x565821];return _0xd0f82b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x55d4('0x0')],'unique':_0x55d4('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x55d4('0x2')]('ivr'),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x55d4('0x3')},'limitCalls':{'type':Sequelize[_0x55d4('0x4')](0x4)[_0x55d4('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x55d4('0x6')},'dialOriginateCallerIdName':{'type':Sequelize[_0x55d4('0x0')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x55d4('0x0')]},'dialOriginateTimeout':{'type':Sequelize[_0x55d4('0x4')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x55d4('0x7')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x55d4('0x8')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x55d4('0x4')](0x5)[_0x55d4('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x55d4('0x9')},'dialBusyRetryFrequency':{'type':Sequelize[_0x55d4('0x4')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x55d4('0xa')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x55d4('0x4')](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'comment':_0x55d4('0xb')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x55d4('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x55d4('0xc')},'dialGlobalMaxRetry':{'type':Sequelize[_0x55d4('0x4')](0x3)[_0x55d4('0x5')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x55d4('0xd')},'dialTimezone':{'type':Sequelize[_0x55d4('0x0')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x55d4('0x0')],'defaultValue':_0x55d4('0xe')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x55d4('0xf'),_0x55d4('0x10'),'onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x55d4('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0x55d4('0x4')](0x9)[_0x55d4('0x5')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x55d4('0x12')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x55d4('0x5')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x55d4('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x55d4('0x4')](0x9)[_0x55d4('0x5')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x55d4('0x4')](0x9)[_0x55d4('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x55d4('0x14')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x55d4('0x5')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x55d4('0x4')](0x9)[_0x55d4('0x5')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x55d4('0x15')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x55d4('0x4')](0x9)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x55d4('0x16')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x55d4('0x4')](0x5)[_0x55d4('0x5')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x55d4('0x17')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x55d4('0x4')](0x9)[_0x55d4('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x55d4('0x2')]('DESC','ASC'),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x55d4('0x4')](0x3)[_0x55d4('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x55d4('0x18')},'dialCutDigit':{'type':Sequelize[_0x55d4('0x4')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x55d4('0x19')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x55d4('0x4')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x55d4('0x1a')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x55d4('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x55d4('0x1b')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x55d4('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x55d4('0x4')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x55d4('0x1c')},'dialMachineMaxRetry':{'type':Sequelize[_0x55d4('0x4')](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x55d4('0x4')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x55d4('0x4')](0x3)[_0x55d4('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x55d4('0x4')](0x5)[_0x55d4('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index db555ee..172d6df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x055f=['push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','fromQuery','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','get','IvrCampaigns','sendStatus','error','stack','send','index','map','Campaign','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','findAll','rows','show','params','rawAttributes','keys','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','clone','omit','updatedAt','createdAt','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','CmHopper','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','select','field','phone','NOW()','ContactId','CmListId','toString','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','from','COALESCE(phone,\x27\x27)','onlyIfOpen','scheduledAt'];(function(_0x23eda3,_0x4d4bbb){var _0x3ffc87=function(_0xd2e2cb){while(--_0xd2e2cb){_0x23eda3['push'](_0x23eda3['shift']());}};_0x3ffc87(++_0x4d4bbb);}(_0x055f,0x113));var _0xf055=function(_0x441dfc,_0x1d856f){_0x441dfc=_0x441dfc-0x0;var _0x2c8bf6=_0x055f[_0x441dfc];return _0x2c8bf6;};'use strict';var emlformat=require(_0xf055('0x0'));var rimraf=require(_0xf055('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf055('0x2'));var rp=require(_0xf055('0x3'));var moment=require(_0xf055('0x4'));var BPromise=require(_0xf055('0x5'));var Mustache=require(_0xf055('0x6'));var util=require(_0xf055('0x7'));var path=require('path');var sox=require(_0xf055('0x8'));var csv=require(_0xf055('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf055('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf055('0xb'));var jsforce=require(_0xf055('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf055('0x9'));var querystring=require(_0xf055('0xd'));var Papa=require(_0xf055('0xe'));var Redis=require('ioredis');var authService=require(_0xf055('0xf'));var qs=require(_0xf055('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf055('0x11'));var utils=require(_0xf055('0x12'));var config=require(_0xf055('0x13'));var licenseUtil=require(_0xf055('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5cba22,_0x5327cf){_0x5327cf=_0x5327cf||0xcc;return function(_0x596755){if(_0x596755){return _0x5cba22['sendStatus'](_0x5327cf);}return _0x5cba22[_0xf055('0x15')](_0x5327cf)[_0xf055('0x16')]();};}function respondWithResult(_0x4d39ca,_0x496de0){_0x496de0=_0x496de0||0xc8;return function(_0x2cd269){if(_0x2cd269){return _0x4d39ca['status'](_0x496de0)[_0xf055('0x17')](_0x2cd269);}};}function respondWithFilteredResult(_0x4f1193,_0x1f4fa3){return function(_0x589417){if(_0x589417){var _0x20185b=typeof _0x1f4fa3['offset']===_0xf055('0x18')&&typeof _0x1f4fa3['limit']===_0xf055('0x18');var _0x5a0b5e=_0x589417[_0xf055('0x19')];var _0x550f0e=_0x20185b?0x0:_0x1f4fa3[_0xf055('0x1a')];var _0x28155d=_0x20185b?_0x589417[_0xf055('0x19')]:_0x1f4fa3[_0xf055('0x1a')]+_0x1f4fa3[_0xf055('0x1b')];var _0x2cb8ac;if(_0x28155d>=_0x5a0b5e){_0x28155d=_0x5a0b5e;_0x2cb8ac=0xc8;}else{_0x2cb8ac=0xce;}_0x4f1193[_0xf055('0x15')](_0x2cb8ac);return _0x4f1193[_0xf055('0x1c')](_0xf055('0x1d'),_0x550f0e+'-'+_0x28155d+'/'+_0x5a0b5e)['json'](_0x589417);}return null;};}function patchUpdates(_0x121772){return function(_0x55c3f1){try{jsonpatch[_0xf055('0x1e')](_0x55c3f1,_0x121772,!![]);}catch(_0x48a323){return BPromise[_0xf055('0x1f')](_0x48a323);}return _0x55c3f1['save']();};}function saveUpdates(_0x3ca692,_0x4546f4){return function(_0x55079c){if(_0x55079c){return _0x55079c[_0xf055('0x20')](_0x3ca692)[_0xf055('0x21')](function(_0x248cce){return _0x248cce;});}return null;};}function removeEntity(_0x3f426c,_0xdef04){return function(_0x3b5f1f){if(_0x3b5f1f){return _0x3b5f1f[_0xf055('0x22')]()[_0xf055('0x21')](function(){var _0x471faf=_0x3b5f1f[_0xf055('0x23')]({'plain':!![]});var _0xf43d05=_0xf055('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0xf43d05,'resourceId':_0x471faf['id']}})[_0xf055('0x21')](function(){return _0x3b5f1f;});})[_0xf055('0x21')](function(){_0x3f426c[_0xf055('0x15')](0xcc)[_0xf055('0x16')]();});}};}function handleEntityNotFound(_0x2b507d,_0x450d22){return function(_0x3e8774){if(!_0x3e8774){_0x2b507d[_0xf055('0x25')](0x194);}return _0x3e8774;};}function handleError(_0x477781,_0xc0b0f6){_0xc0b0f6=_0xc0b0f6||0x1f4;return function(_0x46e92b){logger[_0xf055('0x26')](_0x46e92b[_0xf055('0x27')]);if(_0x46e92b['name']){delete _0x46e92b['name'];}_0x477781[_0xf055('0x15')](_0xc0b0f6)[_0xf055('0x28')](_0x46e92b);};}exports[_0xf055('0x29')]=function(_0x442447,_0x596c39){var _0x53345e={},_0x38dcd4={},_0x511f48={'count':0x0,'rows':[]};var _0x44e704=_[_0xf055('0x2a')](db[_0xf055('0x2b')]['rawAttributes'],function(_0x46dddc){return{'name':_0x46dddc[_0xf055('0x2c')],'type':_0x46dddc[_0xf055('0x2d')][_0xf055('0x2e')]};});_0x38dcd4[_0xf055('0x2f')]=_[_0xf055('0x2a')](_0x44e704,'name');_0x38dcd4['query']=_['keys'](_0x442447[_0xf055('0x30')]);_0x38dcd4[_0xf055('0x31')]=_[_0xf055('0x32')](_0x38dcd4[_0xf055('0x2f')],_0x38dcd4[_0xf055('0x30')]);_0x53345e[_0xf055('0x33')]=_[_0xf055('0x32')](_0x38dcd4[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x442447[_0xf055('0x30')][_0xf055('0x34')]));_0x53345e[_0xf055('0x33')]=_0x53345e['attributes'][_0xf055('0x35')]?_0x53345e[_0xf055('0x33')]:_0x38dcd4['model'];if(!_0x442447[_0xf055('0x30')][_0xf055('0x36')](_0xf055('0x37'))){_0x53345e['limit']=qs[_0xf055('0x1b')](_0x442447[_0xf055('0x30')]['limit']);_0x53345e[_0xf055('0x1a')]=qs[_0xf055('0x1a')](_0x442447[_0xf055('0x30')]['offset']);}_0x53345e[_0xf055('0x38')]=qs[_0xf055('0x39')](_0x442447[_0xf055('0x30')][_0xf055('0x39')]);_0x53345e[_0xf055('0x3a')]=qs[_0xf055('0x31')](_[_0xf055('0x3b')](_0x442447[_0xf055('0x30')],_0x38dcd4[_0xf055('0x31')]),_0x44e704);if(_0x442447[_0xf055('0x30')][_0xf055('0x3c')]){_0x53345e['where']=_[_0xf055('0x3d')](_0x53345e['where'],{'$or':_[_0xf055('0x2a')](_0x44e704,function(_0x4c36d7){if(_0x4c36d7['type']!==_0xf055('0x3e')){var _0x540171={};_0x540171[_0x4c36d7[_0xf055('0x3f')]]={'$like':'%'+_0x442447[_0xf055('0x30')][_0xf055('0x3c')]+'%'};return _0x540171;}})});}_0x53345e=_[_0xf055('0x3d')]({},_0x53345e,_0x442447[_0xf055('0x40')]);var _0x44da3f={'where':_0x53345e['where']};return db['Campaign'][_0xf055('0x19')](_0x44da3f)[_0xf055('0x21')](function(_0xcd17b2){_0x511f48[_0xf055('0x19')]=_0xcd17b2;if(_0x442447[_0xf055('0x30')][_0xf055('0x41')]){_0x53345e[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x2b')][_0xf055('0x43')](_0x53345e);})[_0xf055('0x21')](function(_0x245717){_0x511f48[_0xf055('0x44')]=_0x245717;return _0x511f48;})[_0xf055('0x21')](respondWithFilteredResult(_0x596c39,_0x53345e))['catch'](handleError(_0x596c39,null));};exports[_0xf055('0x45')]=function(_0x601669,_0x2c55cd){var _0x1a55b2={'raw':![],'where':{'id':_0x601669[_0xf055('0x46')]['id']}},_0x5b9b19={};_0x5b9b19['model']=_['keys'](db[_0xf055('0x2b')][_0xf055('0x47')]);_0x5b9b19[_0xf055('0x30')]=_[_0xf055('0x48')](_0x601669[_0xf055('0x30')]);_0x5b9b19['filters']=_[_0xf055('0x32')](_0x5b9b19[_0xf055('0x2f')],_0x5b9b19[_0xf055('0x30')]);_0x1a55b2[_0xf055('0x33')]=_[_0xf055('0x32')](_0x5b9b19[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x601669[_0xf055('0x30')][_0xf055('0x34')]));_0x1a55b2[_0xf055('0x33')]=_0x1a55b2[_0xf055('0x33')][_0xf055('0x35')]?_0x1a55b2[_0xf055('0x33')]:_0x5b9b19[_0xf055('0x2f')];if(_0x601669[_0xf055('0x30')][_0xf055('0x41')]){_0x1a55b2[_0xf055('0x42')]=[{'all':!![]}];}_0x1a55b2=_[_0xf055('0x3d')]({},_0x1a55b2,_0x601669[_0xf055('0x40')]);return db[_0xf055('0x2b')][_0xf055('0x49')](_0x1a55b2)[_0xf055('0x21')](handleEntityNotFound(_0x2c55cd,null))['then'](respondWithResult(_0x2c55cd,null))[_0xf055('0x4a')](handleError(_0x2c55cd,null));};exports[_0xf055('0x4b')]=function(_0x4cca9c,_0x197b53){return db[_0xf055('0x2b')][_0xf055('0x4b')](_0x4cca9c[_0xf055('0x4c')],{})[_0xf055('0x21')](function(_0x4faf2d){var _0x3de1fe=_0x4cca9c[_0xf055('0x4d')][_0xf055('0x23')]({'plain':!![]});if(!_0x3de1fe)throw new Error(_0xf055('0x4e'));if(_0x3de1fe[_0xf055('0x4f')]===_0xf055('0x4d')){var _0x47f9b7=_0x4faf2d[_0xf055('0x23')]({'plain':!![]});var _0x59dfbf=_0xf055('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x59dfbf,'userProfileId':_0x3de1fe['userProfileId']},'raw':!![]})[_0xf055('0x21')](function(_0x4cbda2){if(_0x4cbda2&&_0x4cbda2[_0xf055('0x50')]===0x0){return db[_0xf055('0x51')][_0xf055('0x4b')]({'name':_0x47f9b7[_0xf055('0x3f')],'resourceId':_0x47f9b7['id'],'type':_0x4cbda2[_0xf055('0x3f')],'sectionId':_0x4cbda2['id']},{})[_0xf055('0x21')](function(){return _0x4faf2d;});}else{return _0x4faf2d;}})[_0xf055('0x4a')](function(_0x3ce5e0){logger[_0xf055('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3ce5e0);throw _0x3ce5e0;});}return _0x4faf2d;})[_0xf055('0x21')](respondWithResult(_0x197b53,0xc9))[_0xf055('0x4a')](handleError(_0x197b53,null));};exports[_0xf055('0x52')]=function(_0x13f831,_0x499c33){var _0x46a9d8={'where':{'id':_0x13f831[_0xf055('0x46')]['id']}},_0x5c8efa={};_0x5c8efa[_0xf055('0x2f')]=_['keys'](db[_0xf055('0x2b')][_0xf055('0x47')]);_0x46a9d8[_0xf055('0x33')]=_[_0xf055('0x32')](_0x5c8efa[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x13f831[_0xf055('0x30')][_0xf055('0x34')]));_0x46a9d8[_0xf055('0x33')]=_0x46a9d8[_0xf055('0x33')][_0xf055('0x35')]?_0x46a9d8['attributes']:_0x5c8efa[_0xf055('0x2f')];if(_0x13f831[_0xf055('0x30')][_0xf055('0x41')]){_0x46a9d8[_0xf055('0x42')]=[{'all':!![]}];}_0x46a9d8=_[_0xf055('0x3d')]({},_0x46a9d8,_0x13f831[_0xf055('0x40')]);return db[_0xf055('0x2b')][_0xf055('0x49')](_0x46a9d8)['then'](handleEntityNotFound(_0x499c33,null))[_0xf055('0x21')](function(_0x4ed352){if(_0x4ed352){var _0x5b7d93=_0x4ed352[_0xf055('0x23')]({'plain':!![]});_0x5b7d93=qs[_0xf055('0x53')](_0x5b7d93,['id','createdAt',_0xf055('0x54')]);_0x13f831[_0xf055('0x4c')]=_['omit'](_0x13f831[_0xf055('0x4c')],['id',_0xf055('0x55'),_0xf055('0x54')]);return db[_0xf055('0x2b')][_0xf055('0x4b')](_[_0xf055('0x3d')](_0x5b7d93,_0x13f831[_0xf055('0x4c')]),{'include':_0x13f831[_0xf055('0x30')][_0xf055('0x41')]?[{'all':!![]}]:undefined})[_0xf055('0x21')](function(_0x40780e){var _0x1373a9=_0x13f831['user'][_0xf055('0x23')]({'plain':!![]});if(!_0x1373a9)throw new Error(_0xf055('0x4e'));if(_0x1373a9[_0xf055('0x4f')]===_0xf055('0x4d')){var _0x118827=_0x40780e[_0xf055('0x23')]({'plain':!![]});var _0x51f46d=_0xf055('0x24');return db[_0xf055('0x56')][_0xf055('0x49')]({'where':{'name':_0x51f46d,'userProfileId':_0x1373a9[_0xf055('0x57')]},'raw':!![]})['then'](function(_0x4a2ae9){if(_0x4a2ae9&&_0x4a2ae9[_0xf055('0x50')]===0x0){return db[_0xf055('0x51')][_0xf055('0x4b')]({'name':_0x118827['name'],'resourceId':_0x118827['id'],'type':_0x4a2ae9[_0xf055('0x3f')],'sectionId':_0x4a2ae9['id']},{})[_0xf055('0x21')](function(){return _0x40780e;});}else{return _0x40780e;}})[_0xf055('0x4a')](function(_0x4c6278){logger[_0xf055('0x26')](_0xf055('0x58'),_0x4c6278);throw _0x4c6278;});}return _0x40780e;});}})[_0xf055('0x21')](respondWithResult(_0x499c33,0xc9))[_0xf055('0x4a')](handleError(_0x499c33,null));};exports['update']=function(_0x3d0640,_0x3adb95){if(_0x3d0640['body']['id']){delete _0x3d0640['body']['id'];}return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x3d0640[_0xf055('0x46')]['id']}})['then'](handleEntityNotFound(_0x3adb95,null))['then'](saveUpdates(_0x3d0640[_0xf055('0x4c')],null))[_0xf055('0x21')](respondWithResult(_0x3adb95,null))[_0xf055('0x4a')](handleError(_0x3adb95,null));};exports[_0xf055('0x22')]=function(_0x185ea6,_0x31c367){return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x185ea6['params']['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x31c367,null))[_0xf055('0x21')](removeEntity(_0x31c367,null))['catch'](handleError(_0x31c367,null));};exports['getHoppers']=function(_0x85e6d0,_0x5d7aa1,_0x416640){var _0x459811={'raw':!![],'where':{}};var _0xd9c191={};var _0x1d82e6={'count':0x0,'rows':[]};return db['Campaign'][_0xf055('0x59')]({'where':{'id':_0x85e6d0[_0xf055('0x46')]['id']}})['then'](handleEntityNotFound(_0x5d7aa1,null))[_0xf055('0x21')](function(_0x302337){if(_0x302337){_0xd9c191['model']=_[_0xf055('0x48')](db['CmHopper']['rawAttributes']);_0xd9c191[_0xf055('0x30')]=_[_0xf055('0x48')](_0x85e6d0['query']);_0xd9c191[_0xf055('0x31')]=_[_0xf055('0x32')](_0xd9c191[_0xf055('0x2f')],_0xd9c191[_0xf055('0x30')]);_0x459811[_0xf055('0x33')]=_[_0xf055('0x32')](_0xd9c191[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x85e6d0['query']['fields']));_0x459811[_0xf055('0x33')]=_0x459811['attributes'][_0xf055('0x35')]?_0x459811[_0xf055('0x33')]:_0xd9c191[_0xf055('0x2f')];if(!_0x85e6d0[_0xf055('0x30')][_0xf055('0x36')](_0xf055('0x37'))){_0x459811['limit']=qs['limit'](_0x85e6d0['query'][_0xf055('0x1b')]);_0x459811[_0xf055('0x1a')]=qs['offset'](_0x85e6d0['query'][_0xf055('0x1a')]);}_0x459811[_0xf055('0x38')]=qs[_0xf055('0x39')](_0x85e6d0['query'][_0xf055('0x39')]);_0x459811['where']=qs[_0xf055('0x31')](_[_0xf055('0x3b')](_0x85e6d0[_0xf055('0x30')],_0xd9c191[_0xf055('0x31')]));_0x459811[_0xf055('0x3a')]['CampaignId']=_0x302337['id'];if(_0x85e6d0[_0xf055('0x30')][_0xf055('0x3c')]){_0x459811['where']=_[_0xf055('0x3d')](_0x459811[_0xf055('0x3a')],{'$or':_[_0xf055('0x2a')](_0x459811['attributes'],function(_0x3f561f){var _0x240c0e={};_0x240c0e[_0x3f561f]={'$like':'%'+_0x85e6d0[_0xf055('0x30')][_0xf055('0x3c')]+'%'};return _0x240c0e;})});}_0x459811=_['merge']({},_0x459811,_0x85e6d0[_0xf055('0x40')]);return db[_0xf055('0x5a')][_0xf055('0x19')]({'where':_0x459811[_0xf055('0x3a')]})[_0xf055('0x21')](function(_0x24581b){_0x1d82e6['count']=_0x24581b;if(_0x85e6d0['query'][_0xf055('0x41')]){_0x459811[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x5a')][_0xf055('0x43')](_0x459811);})['then'](function(_0x2882b5){_0x1d82e6[_0xf055('0x44')]=_0x2882b5;return _0x1d82e6;});}})['then'](respondWithFilteredResult(_0x5d7aa1,_0x459811))[_0xf055('0x4a')](handleError(_0x5d7aa1,null));};exports[_0xf055('0x5b')]=function(_0x373340,_0x14cf77,_0x180c77){var _0x2e6878={'raw':!![],'where':{}};var _0x125588={};var _0x34d94e={'count':0x0,'rows':[]};return db[_0xf055('0x2b')][_0xf055('0x59')]({'where':{'id':_0x373340[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x14cf77,null))['then'](function(_0x524df0){if(_0x524df0){_0x125588[_0xf055('0x2f')]=_[_0xf055('0x48')](db[_0xf055('0x5c')][_0xf055('0x47')]);_0x125588['query']=_['keys'](_0x373340[_0xf055('0x30')]);_0x125588[_0xf055('0x31')]=_[_0xf055('0x32')](_0x125588[_0xf055('0x2f')],_0x125588[_0xf055('0x30')]);_0x2e6878[_0xf055('0x33')]=_[_0xf055('0x32')](_0x125588['model'],qs[_0xf055('0x34')](_0x373340[_0xf055('0x30')]['fields']));_0x2e6878[_0xf055('0x33')]=_0x2e6878[_0xf055('0x33')]['length']?_0x2e6878['attributes']:_0x125588[_0xf055('0x2f')];if(!_0x373340['query'][_0xf055('0x36')](_0xf055('0x37'))){_0x2e6878['limit']=qs[_0xf055('0x1b')](_0x373340[_0xf055('0x30')][_0xf055('0x1b')]);_0x2e6878['offset']=qs[_0xf055('0x1a')](_0x373340[_0xf055('0x30')]['offset']);}_0x2e6878['order']=qs[_0xf055('0x39')](_0x373340[_0xf055('0x30')]['sort']);_0x2e6878[_0xf055('0x3a')]=qs[_0xf055('0x31')](_['pick'](_0x373340[_0xf055('0x30')],_0x125588[_0xf055('0x31')]));_0x2e6878[_0xf055('0x3a')][_0xf055('0x5d')]=_0x524df0['id'];if(_0x373340[_0xf055('0x30')][_0xf055('0x3c')]){_0x2e6878[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x2e6878[_0xf055('0x3a')],{'$or':_['map'](_0x2e6878['attributes'],function(_0x1aa135){var _0x4f9cb3={};_0x4f9cb3[_0x1aa135]={'$like':'%'+_0x373340[_0xf055('0x30')]['filter']+'%'};return _0x4f9cb3;})});}_0x2e6878=_['merge']({},_0x2e6878,_0x373340[_0xf055('0x40')]);return db[_0xf055('0x5c')][_0xf055('0x19')]({'where':_0x2e6878[_0xf055('0x3a')]})[_0xf055('0x21')](function(_0x141c0b){_0x34d94e[_0xf055('0x19')]=_0x141c0b;if(_0x373340[_0xf055('0x30')]['includeAll']){_0x2e6878[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x5c')][_0xf055('0x43')](_0x2e6878);})[_0xf055('0x21')](function(_0x32a906){_0x34d94e[_0xf055('0x44')]=_0x32a906;return _0x34d94e;});}})[_0xf055('0x21')](respondWithFilteredResult(_0x14cf77,_0x2e6878))[_0xf055('0x4a')](handleError(_0x14cf77,null));};exports[_0xf055('0x5e')]=function(_0xc0ce83,_0x5da616,_0xa541a0){var _0x325115={'raw':!![],'where':{}};var _0x547b9b={};var _0xfb82dc={'count':0x0,'rows':[]};return db[_0xf055('0x2b')]['findOne']({'where':{'id':_0xc0ce83[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x5da616,null))[_0xf055('0x21')](function(_0x21966c){if(_0x21966c){_0x547b9b[_0xf055('0x2f')]=_[_0xf055('0x48')](db['CmHopperFinal'][_0xf055('0x47')]);_0x547b9b[_0xf055('0x30')]=_[_0xf055('0x48')](_0xc0ce83[_0xf055('0x30')]);_0x547b9b['filters']=_['intersection'](_0x547b9b[_0xf055('0x2f')],_0x547b9b['query']);_0x325115[_0xf055('0x33')]=_['intersection'](_0x547b9b[_0xf055('0x2f')],qs[_0xf055('0x34')](_0xc0ce83[_0xf055('0x30')][_0xf055('0x34')]));_0x325115[_0xf055('0x33')]=_0x325115[_0xf055('0x33')][_0xf055('0x35')]?_0x325115[_0xf055('0x33')]:_0x547b9b[_0xf055('0x2f')];if(!_0xc0ce83[_0xf055('0x30')][_0xf055('0x36')](_0xf055('0x37'))){_0x325115['limit']=qs['limit'](_0xc0ce83[_0xf055('0x30')][_0xf055('0x1b')]);_0x325115[_0xf055('0x1a')]=qs[_0xf055('0x1a')](_0xc0ce83[_0xf055('0x30')][_0xf055('0x1a')]);}_0x325115[_0xf055('0x38')]=qs['sort'](_0xc0ce83[_0xf055('0x30')][_0xf055('0x39')]);_0x325115[_0xf055('0x3a')]=qs['filters'](_['pick'](_0xc0ce83[_0xf055('0x30')],_0x547b9b[_0xf055('0x31')]));_0x325115[_0xf055('0x3a')][_0xf055('0x5d')]=_0x21966c['id'];if(_0xc0ce83[_0xf055('0x30')][_0xf055('0x3c')]){_0x325115[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x325115[_0xf055('0x3a')],{'$or':_[_0xf055('0x2a')](_0x325115['attributes'],function(_0x12e2bb){var _0x7336d1={};_0x7336d1[_0x12e2bb]={'$like':'%'+_0xc0ce83[_0xf055('0x30')][_0xf055('0x3c')]+'%'};return _0x7336d1;})});}_0x325115=_['merge']({},_0x325115,_0xc0ce83[_0xf055('0x40')]);return db[_0xf055('0x5f')]['count']({'where':_0x325115['where']})['then'](function(_0x1c82de){_0xfb82dc[_0xf055('0x19')]=_0x1c82de;if(_0xc0ce83['query'][_0xf055('0x41')]){_0x325115[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x5f')][_0xf055('0x43')](_0x325115);})[_0xf055('0x21')](function(_0x14e60d){_0xfb82dc[_0xf055('0x44')]=_0x14e60d;return _0xfb82dc;});}})[_0xf055('0x21')](respondWithFilteredResult(_0x5da616,_0x325115))[_0xf055('0x4a')](handleError(_0x5da616,null));};exports[_0xf055('0x60')]=function(_0x4c0676,_0x160145,_0x3e01f6){var _0x275bca={'raw':!![],'where':{}};var _0x32fd5a={};var _0x2e1508={'count':0x0,'rows':[]};return db[_0xf055('0x2b')][_0xf055('0x59')]({'where':{'id':_0x4c0676['params']['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x160145,null))[_0xf055('0x21')](function(_0xa9e201){if(_0xa9e201){_0x32fd5a[_0xf055('0x2f')]=_[_0xf055('0x48')](db[_0xf055('0x61')][_0xf055('0x47')]);_0x32fd5a[_0xf055('0x30')]=_['keys'](_0x4c0676['query']);_0x32fd5a['filters']=_[_0xf055('0x32')](_0x32fd5a[_0xf055('0x2f')],_0x32fd5a['query']);_0x275bca['attributes']=_[_0xf055('0x32')](_0x32fd5a[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x4c0676[_0xf055('0x30')][_0xf055('0x34')]));_0x275bca[_0xf055('0x33')]=_0x275bca[_0xf055('0x33')]['length']?_0x275bca[_0xf055('0x33')]:_0x32fd5a[_0xf055('0x2f')];if(!_0x4c0676[_0xf055('0x30')][_0xf055('0x36')]('nolimit')){_0x275bca[_0xf055('0x1b')]=qs[_0xf055('0x1b')](_0x4c0676[_0xf055('0x30')][_0xf055('0x1b')]);_0x275bca[_0xf055('0x1a')]=qs['offset'](_0x4c0676[_0xf055('0x30')][_0xf055('0x1a')]);}_0x275bca['order']=qs[_0xf055('0x39')](_0x4c0676[_0xf055('0x30')][_0xf055('0x39')]);_0x275bca[_0xf055('0x3a')]=qs['filters'](_[_0xf055('0x3b')](_0x4c0676[_0xf055('0x30')],_0x32fd5a['filters']));_0x275bca['where'][_0xf055('0x5d')]=_0xa9e201['id'];if(_0x4c0676[_0xf055('0x30')][_0xf055('0x3c')]){_0x275bca[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x275bca['where'],{'$or':_[_0xf055('0x2a')](_0x275bca[_0xf055('0x33')],function(_0x223099){var _0x4f865c={};_0x4f865c[_0x223099]={'$like':'%'+_0x4c0676['query']['filter']+'%'};return _0x4f865c;})});}_0x275bca=_[_0xf055('0x3d')]({},_0x275bca,_0x4c0676[_0xf055('0x40')]);return db['CmHopperBlack'][_0xf055('0x19')]({'where':_0x275bca[_0xf055('0x3a')]})[_0xf055('0x21')](function(_0x19b0c4){_0x2e1508[_0xf055('0x19')]=_0x19b0c4;if(_0x4c0676[_0xf055('0x30')][_0xf055('0x41')]){_0x275bca[_0xf055('0x42')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xf055('0x43')](_0x275bca);})[_0xf055('0x21')](function(_0x172568){_0x2e1508[_0xf055('0x44')]=_0x172568;return _0x2e1508;});}})[_0xf055('0x21')](respondWithFilteredResult(_0x160145,_0x275bca))[_0xf055('0x4a')](handleError(_0x160145,null));};exports[_0xf055('0x62')]=function(_0x1d7cf6,_0x266f7c,_0x6d9697){var _0x4a4fa2={};var _0x1446b8={};var _0x3087af;var _0x41644e;return db[_0xf055('0x2b')]['findOne']({'where':{'id':_0x1d7cf6[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x266f7c,null))[_0xf055('0x21')](function(_0x25c6c5){if(_0x25c6c5){_0x3087af=_0x25c6c5;_0x1446b8['model']=_['keys'](db[_0xf055('0x63')][_0xf055('0x47')]);_0x1446b8['query']=_['keys'](_0x1d7cf6['query']);_0x1446b8[_0xf055('0x31')]=_[_0xf055('0x32')](_0x1446b8['model'],_0x1446b8['query']);_0x4a4fa2[_0xf055('0x33')]=_['intersection'](_0x1446b8[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x1d7cf6[_0xf055('0x30')][_0xf055('0x34')]));_0x4a4fa2[_0xf055('0x33')]=_0x4a4fa2[_0xf055('0x33')]['length']?_0x4a4fa2['attributes']:_0x1446b8[_0xf055('0x2f')];_0x4a4fa2[_0xf055('0x38')]=qs['sort'](_0x1d7cf6[_0xf055('0x30')][_0xf055('0x39')]);_0x4a4fa2[_0xf055('0x3a')]=qs[_0xf055('0x31')](_['pick'](_0x1d7cf6['query'],_0x1446b8[_0xf055('0x31')]));if(_0x1d7cf6[_0xf055('0x30')]['filter']){_0x4a4fa2[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x4a4fa2['where'],{'$or':_[_0xf055('0x2a')](_0x4a4fa2['attributes'],function(_0x55ba55){var _0x15ad6c={};_0x15ad6c[_0x55ba55]={'$like':'%'+_0x1d7cf6['query'][_0xf055('0x3c')]+'%'};return _0x15ad6c;})});}_0x4a4fa2=_['merge']({},_0x4a4fa2,_0x1d7cf6[_0xf055('0x40')]);return _0x3087af[_0xf055('0x62')](_0x4a4fa2);}})[_0xf055('0x21')](function(_0x3a92d8){if(_0x3a92d8){_0x41644e=_0x3a92d8['length'];if(!_0x1d7cf6[_0xf055('0x30')][_0xf055('0x36')]('nolimit')){_0x4a4fa2[_0xf055('0x1b')]=qs[_0xf055('0x1b')](_0x1d7cf6[_0xf055('0x30')]['limit']);_0x4a4fa2[_0xf055('0x1a')]=qs[_0xf055('0x1a')](_0x1d7cf6[_0xf055('0x30')][_0xf055('0x1a')]);}return _0x3087af['getLists'](_0x4a4fa2);}})[_0xf055('0x21')](function(_0x28096b){if(_0x28096b){return _0x28096b?{'count':_0x41644e,'rows':_0x28096b}:null;}})[_0xf055('0x21')](respondWithResult(_0x266f7c,null))[_0xf055('0x4a')](handleError(_0x266f7c,null));};exports[_0xf055('0x64')]=function(_0x5da3c9,_0x2ca1e8,_0x1b9f06){var _0xf56293,_0x590953;return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x5da3c9['params']['id']}})['then'](handleEntityNotFound(_0x2ca1e8,null))[_0xf055('0x21')](function(_0x2b3ffb){if(_0x2b3ffb){_0x590953=_0x2b3ffb;return _0x2b3ffb['addLists'](_0x5da3c9['body'][_0xf055('0x65')],_[_0xf055('0x53')](_0x5da3c9[_0xf055('0x4c')],[_0xf055('0x65'),'id'])||{});}return null;})[_0xf055('0x66')](function(_0x249435){var _0x2ee427;_0xf56293=_0x249435||[];var _0x16559b=[];if(_0x249435){for(var _0x2696e6=0x0;_0x2696e6<_0x249435[_0xf055('0x35')];_0x2696e6+=0x1){var _0x33acc0=_0x249435[_0x2696e6]['get']({'plain':!![]});_0x590953[_0xf055('0x67')]=_0x5da3c9[_0xf055('0x4c')][_0xf055('0x67')]?_0x5da3c9['body'][_0xf055('0x67')]:_0x590953[_0xf055('0x67')];switch(_0x590953['dialCheckDuplicateType']){case _0xf055('0x68'):_0x2ee427=squel[_0xf055('0x69')]()[_0xf055('0x6a')](_0xf055('0x6b'))['fromQuery'](['phone','scheduledAt','ContactId','ListId',_0xf055('0x5d'),_0xf055('0x55'),_0xf055('0x54')],squel[_0xf055('0x6c')]()[_0xf055('0x6d')](_0xf055('0x6e'),_0xf055('0x6e'))[_0xf055('0x6d')](_0xf055('0x6f'),'scheduledAt')[_0xf055('0x6d')]('id',_0xf055('0x70'))[_0xf055('0x6d')](_0x33acc0[_0xf055('0x71')][_0xf055('0x72')](),_0xf055('0x73'))[_0xf055('0x6d')](_0x5da3c9[_0xf055('0x46')]['id']['toString'](),'CampaignId')[_0xf055('0x6d')]('NOW()',_0xf055('0x55'))[_0xf055('0x6d')](_0xf055('0x6f'),_0xf055('0x54'))['from'](_0xf055('0x74'))[_0xf055('0x3a')](_0xf055('0x75'))[_0xf055('0x3a')](_0xf055('0x76'),_0x33acc0[_0xf055('0x71')][_0xf055('0x72')]())['where'](_0xf055('0x77'))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xf055('0x6d')]('COALESCE(calleridnum,\x27\x27)')[_0xf055('0x78')]('cm_hopper_final')[_0xf055('0x3a')]('CampaignId\x20=\x20?',_0x5da3c9['params']['id'][_0xf055('0x72')]()))[_0xf055('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xf055('0x79'))['from']('cm_hopper')['where']('CampaignId\x20=\x20?',_0x5da3c9[_0xf055('0x46')]['id']['toString']())))[_0xf055('0x72')]();break;case _0xf055('0x7a'):_0x2ee427=squel['insert']()[_0xf055('0x6a')](_0xf055('0x6b'))['fromQuery']([_0xf055('0x6e'),_0xf055('0x7b'),'ContactId','ListId',_0xf055('0x5d'),_0xf055('0x55'),_0xf055('0x54')],squel[_0xf055('0x6c')]()['field'](_0xf055('0x6e'),'phone')[_0xf055('0x6d')]('NOW()','scheduledAt')[_0xf055('0x6d')]('id','ContactId')['field'](_0x33acc0['CmListId'][_0xf055('0x72')](),_0xf055('0x73'))['field'](_0x5da3c9[_0xf055('0x46')]['id']['toString'](),_0xf055('0x5d'))['field'](_0xf055('0x6f'),_0xf055('0x55'))[_0xf055('0x6d')]('NOW()',_0xf055('0x54'))['from'](_0xf055('0x74'))[_0xf055('0x3a')]('deletedAt\x20IS\x20NULL')['where'](_0xf055('0x76'),_0x33acc0[_0xf055('0x71')][_0xf055('0x72')]())['where'](_0xf055('0x77'))[_0xf055('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xf055('0x79'))['from'](_0xf055('0x6b'))[_0xf055('0x3a')]('CampaignId\x20=\x20?',_0x5da3c9[_0xf055('0x46')]['id']['toString']())))[_0xf055('0x72')]();break;default:_0x2ee427=squel[_0xf055('0x69')]()['into']('cm_hopper')['fromQuery']([_0xf055('0x6e'),_0xf055('0x7b'),_0xf055('0x70'),_0xf055('0x73'),_0xf055('0x5d'),_0xf055('0x55'),'updatedAt'],squel[_0xf055('0x6c')]()[_0xf055('0x6d')]('phone',_0xf055('0x6e'))[_0xf055('0x6d')](_0xf055('0x6f'),_0xf055('0x7b'))[_0xf055('0x6d')]('id',_0xf055('0x70'))[_0xf055('0x6d')](_0x33acc0[_0xf055('0x71')][_0xf055('0x72')](),_0xf055('0x73'))['field'](_0x5da3c9[_0xf055('0x46')]['id'][_0xf055('0x72')](),_0xf055('0x5d'))[_0xf055('0x6d')](_0xf055('0x6f'),'createdAt')[_0xf055('0x6d')]('NOW()','updatedAt')[_0xf055('0x78')](_0xf055('0x74'))[_0xf055('0x3a')](_0xf055('0x75'))[_0xf055('0x3a')]('ListId\x20=\x20?',_0x33acc0[_0xf055('0x71')][_0xf055('0x72')]())[_0xf055('0x3a')](_0xf055('0x77')))[_0xf055('0x72')]();}_0x16559b[_0xf055('0x7c')](db[_0xf055('0x7d')]['query'](_0x2ee427));}return BPromise[_0xf055('0x7e')](_0x16559b);}})[_0xf055('0x21')](function(){return _0xf56293;})['then'](respondWithResult(_0x2ca1e8,null))[_0xf055('0x4a')](handleError(_0x2ca1e8,null));};exports[_0xf055('0x7f')]=function(_0x51d77f,_0x23a9b7,_0x3ef940){return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x51d77f[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x23a9b7,null))[_0xf055('0x21')](function(_0x517c8b){if(_0x517c8b){return _0x517c8b[_0xf055('0x7f')](_0x51d77f['query']['ids']);}})[_0xf055('0x21')](function(_0xe2791c){if(_0xe2791c){return db['CmHopper'][_0xf055('0x22')]({'where':{'ListId':_0x51d77f[_0xf055('0x30')][_0xf055('0x65')],'CampaignId':_0x51d77f['params']['id']}})[_0xf055('0x21')](function(){return _0xe2791c;});}})['then'](respondWithStatusCode(_0x23a9b7,null))[_0xf055('0x4a')](handleError(_0x23a9b7,null));};exports[_0xf055('0x80')]=function(_0x2664a4,_0x50f810,_0x43ebe1){var _0x1e3426={};var _0x43e30b={};var _0x97ef8d;var _0x35d6ab;return db[_0xf055('0x2b')][_0xf055('0x59')]({'where':{'id':_0x2664a4['params']['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x50f810,null))['then'](function(_0x5bd6d9){if(_0x5bd6d9){_0x97ef8d=_0x5bd6d9;_0x43e30b['model']=_[_0xf055('0x48')](db[_0xf055('0x63')][_0xf055('0x47')]);_0x43e30b['query']=_[_0xf055('0x48')](_0x2664a4[_0xf055('0x30')]);_0x43e30b[_0xf055('0x31')]=_[_0xf055('0x32')](_0x43e30b[_0xf055('0x2f')],_0x43e30b[_0xf055('0x30')]);_0x1e3426[_0xf055('0x33')]=_[_0xf055('0x32')](_0x43e30b[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x2664a4['query'][_0xf055('0x34')]));_0x1e3426[_0xf055('0x33')]=_0x1e3426[_0xf055('0x33')]['length']?_0x1e3426[_0xf055('0x33')]:_0x43e30b['model'];_0x1e3426[_0xf055('0x38')]=qs[_0xf055('0x39')](_0x2664a4[_0xf055('0x30')][_0xf055('0x39')]);_0x1e3426[_0xf055('0x3a')]=qs[_0xf055('0x31')](_[_0xf055('0x3b')](_0x2664a4[_0xf055('0x30')],_0x43e30b[_0xf055('0x31')]));if(_0x2664a4[_0xf055('0x30')]['filter']){_0x1e3426['where']=_[_0xf055('0x3d')](_0x1e3426[_0xf055('0x3a')],{'$or':_[_0xf055('0x2a')](_0x1e3426['attributes'],function(_0x49aea){var _0x30d255={};_0x30d255[_0x49aea]={'$like':'%'+_0x2664a4['query'][_0xf055('0x3c')]+'%'};return _0x30d255;})});}_0x1e3426=_[_0xf055('0x3d')]({},_0x1e3426,_0x2664a4['options']);return _0x97ef8d[_0xf055('0x80')](_0x1e3426);}})[_0xf055('0x21')](function(_0x5abe3d){if(_0x5abe3d){_0x35d6ab=_0x5abe3d[_0xf055('0x35')];if(!_0x2664a4[_0xf055('0x30')][_0xf055('0x36')]('nolimit')){_0x1e3426[_0xf055('0x1b')]=qs['limit'](_0x2664a4[_0xf055('0x30')][_0xf055('0x1b')]);_0x1e3426['offset']=qs[_0xf055('0x1a')](_0x2664a4[_0xf055('0x30')][_0xf055('0x1a')]);}return _0x97ef8d['getBlackLists'](_0x1e3426);}})[_0xf055('0x21')](function(_0x3dd78e){if(_0x3dd78e){return _0x3dd78e?{'count':_0x35d6ab,'rows':_0x3dd78e}:null;}})[_0xf055('0x21')](respondWithResult(_0x50f810,null))['catch'](handleError(_0x50f810,null));};exports[_0xf055('0x81')]=function(_0x37e8f9,_0xa7570b,_0x4a30d1){var _0x55e853,_0x506e21;return db['Campaign'][_0xf055('0x49')]({'where':{'id':_0x37e8f9[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0xa7570b,null))['then'](function(_0x56a20e){if(_0x56a20e){_0x506e21=_0x56a20e;return _0x56a20e[_0xf055('0x81')](_0x37e8f9[_0xf055('0x4c')][_0xf055('0x65')],_['omit'](_0x37e8f9[_0xf055('0x4c')],['ids','id'])||{});}return null;})[_0xf055('0x66')](function(_0x567a37){var _0x4c732d;_0x55e853=_0x567a37||[];var _0x30e443=[];if(_0x567a37){for(var _0x1a9fd2=0x0;_0x1a9fd2<_0x567a37[_0xf055('0x35')];_0x1a9fd2+=0x1){var _0x436498=_0x567a37[_0x1a9fd2][_0xf055('0x23')]({'plain':!![]});_0x4c732d=squel['insert']()[_0xf055('0x6a')](_0xf055('0x82'))[_0xf055('0x83')]([_0xf055('0x6e'),'ContactId','ListId','CampaignId',_0xf055('0x55'),'updatedAt'],squel[_0xf055('0x6c')]()['field'](_0xf055('0x6e'),'phone')[_0xf055('0x6d')]('id',_0xf055('0x70'))[_0xf055('0x6d')](_0x436498[_0xf055('0x71')]['toString'](),'ListId')['field'](_0x37e8f9['params']['id'][_0xf055('0x72')](),_0xf055('0x5d'))['field'](_0xf055('0x6f'),'createdAt')['field'](_0xf055('0x6f'),_0xf055('0x54'))[_0xf055('0x78')](_0xf055('0x74'))[_0xf055('0x3a')](_0xf055('0x75'))[_0xf055('0x3a')]('ListId\x20=\x20?',_0x436498['CmListId'][_0xf055('0x72')]())[_0xf055('0x3a')](_0xf055('0x77')))[_0xf055('0x72')]();_0x30e443[_0xf055('0x7c')](db[_0xf055('0x7d')][_0xf055('0x30')](_0x4c732d));}return BPromise[_0xf055('0x7e')](_0x30e443);}})[_0xf055('0x21')](function(){return _0x55e853;})[_0xf055('0x21')](respondWithResult(_0xa7570b,null))[_0xf055('0x4a')](handleError(_0xa7570b,null));};exports[_0xf055('0x84')]=function(_0x338338,_0x31e9a3,_0xddac88){return db['Campaign'][_0xf055('0x49')]({'where':{'id':_0x338338[_0xf055('0x46')]['id']}})['then'](handleEntityNotFound(_0x31e9a3,null))[_0xf055('0x21')](function(_0x59833f){if(_0x59833f){return _0x59833f[_0xf055('0x84')](_0x338338[_0xf055('0x30')]['ids']);}})['then'](function(_0x5e8722){if(_0x5e8722){return db[_0xf055('0x61')]['destroy']({'where':{'ListId':_0x338338['query'][_0xf055('0x65')],'CampaignId':_0x338338[_0xf055('0x46')]['id']}})['then'](function(){return _0x5e8722;});}})['then'](respondWithStatusCode(_0x31e9a3,null))[_0xf055('0x4a')](handleError(_0x31e9a3,null));};
\ No newline at end of file
+var _0x955d=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','count','status','set','Content-Range','json','apply','reject','save','update','then','IvrCampaigns','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','limit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','Campaign','include','findAll','catch','show','params','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','role','getHoppers','findOne','hasOwnProperty','nolimit','CmHopper','rows','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','scheduledAt','ContactId','select','field','phone','NOW()','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','toString','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','fromQuery','push','sequelize','all','getBlackLists','addBlackLists','cm_hopper_black','phone\x20IS\x20NOT\x20NULL','removeBlackLists','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0xf15aac,_0x1a65d6){var _0x1a30e7=function(_0x2dc64a){while(--_0x2dc64a){_0xf15aac['push'](_0xf15aac['shift']());}};_0x1a30e7(++_0x1a65d6);}(_0x955d,0x19f));var _0xd955=function(_0x5bc09d,_0x5a569a){_0x5bc09d=_0x5bc09d-0x0;var _0x2bf9e1=_0x955d[_0x5bc09d];return _0x2bf9e1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd955('0x0'));var jsonpatch=require(_0xd955('0x1'));var rp=require(_0xd955('0x2'));var moment=require(_0xd955('0x3'));var BPromise=require(_0xd955('0x4'));var Mustache=require(_0xd955('0x5'));var util=require(_0xd955('0x6'));var path=require(_0xd955('0x7'));var sox=require(_0xd955('0x8'));var csv=require(_0xd955('0x9'));var ejs=require(_0xd955('0xa'));var fs=require('fs');var fs_extra=require(_0xd955('0xb'));var _=require(_0xd955('0xc'));var squel=require(_0xd955('0xd'));var crypto=require(_0xd955('0xe'));var jsforce=require(_0xd955('0xf'));var deskjs=require(_0xd955('0x10'));var toCsv=require('to-csv');var querystring=require(_0xd955('0x11'));var Papa=require(_0xd955('0x12'));var Redis=require(_0xd955('0x13'));var authService=require(_0xd955('0x14'));var qs=require(_0xd955('0x15'));var as=require(_0xd955('0x16'));var hardwareService=require(_0xd955('0x17'));var logger=require(_0xd955('0x18'))(_0xd955('0x19'));var utils=require(_0xd955('0x1a'));var config=require(_0xd955('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xd955('0x1c'))['db'];function respondWithStatusCode(_0x2e57b5,_0x3cabf0){_0x3cabf0=_0x3cabf0||0xcc;return function(_0xbaa5e0){if(_0xbaa5e0){return _0x2e57b5[_0xd955('0x1d')](_0x3cabf0);}return _0x2e57b5['status'](_0x3cabf0)[_0xd955('0x1e')]();};}function respondWithResult(_0x589b05,_0x5277f5){_0x5277f5=_0x5277f5||0xc8;return function(_0x1f0e09){if(_0x1f0e09){return _0x589b05['status'](_0x5277f5)['json'](_0x1f0e09);}};}function respondWithFilteredResult(_0x5b5996,_0x271a26){return function(_0xc665bf){if(_0xc665bf){var _0x489253=typeof _0x271a26[_0xd955('0x1f')]==='undefined'&&typeof _0x271a26['limit']===_0xd955('0x20');var _0x4beba5=_0xc665bf[_0xd955('0x21')];var _0x221fbc=_0x489253?0x0:_0x271a26['offset'];var _0x8552cc=_0x489253?_0xc665bf['count']:_0x271a26['offset']+_0x271a26['limit'];var _0x13fce3;if(_0x8552cc>=_0x4beba5){_0x8552cc=_0x4beba5;_0x13fce3=0xc8;}else{_0x13fce3=0xce;}_0x5b5996[_0xd955('0x22')](_0x13fce3);return _0x5b5996[_0xd955('0x23')](_0xd955('0x24'),_0x221fbc+'-'+_0x8552cc+'/'+_0x4beba5)[_0xd955('0x25')](_0xc665bf);}return null;};}function patchUpdates(_0x4d33e5){return function(_0x203da8){try{jsonpatch[_0xd955('0x26')](_0x203da8,_0x4d33e5,!![]);}catch(_0x4343ff){return BPromise[_0xd955('0x27')](_0x4343ff);}return _0x203da8[_0xd955('0x28')]();};}function saveUpdates(_0x5d01f1,_0x4baa8c){return function(_0x15f577){if(_0x15f577){return _0x15f577[_0xd955('0x29')](_0x5d01f1)[_0xd955('0x2a')](function(_0x2127ae){return _0x2127ae;});}return null;};}function removeEntity(_0x164d03,_0x518b07){return function(_0x406edc){if(_0x406edc){return _0x406edc['destroy']()[_0xd955('0x2a')](function(){var _0x521890=_0x406edc['get']({'plain':!![]});var _0x6258f=_0xd955('0x2b');return db[_0xd955('0x2c')][_0xd955('0x2d')]({'where':{'type':_0x6258f,'resourceId':_0x521890['id']}})[_0xd955('0x2a')](function(){return _0x406edc;});})[_0xd955('0x2a')](function(){_0x164d03[_0xd955('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55b082,_0x576e28){return function(_0xea3880){if(!_0xea3880){_0x55b082[_0xd955('0x1d')](0x194);}return _0xea3880;};}function handleError(_0x4739f0,_0x57d72a){_0x57d72a=_0x57d72a||0x1f4;return function(_0x29a95e){logger[_0xd955('0x2e')](_0x29a95e[_0xd955('0x2f')]);if(_0x29a95e[_0xd955('0x30')]){delete _0x29a95e[_0xd955('0x30')];}_0x4739f0['status'](_0x57d72a)[_0xd955('0x31')](_0x29a95e);};}exports[_0xd955('0x32')]=function(_0x511c23,_0x4dffef){var _0x5c0114={},_0x1ac310={},_0x5e2aed={'count':0x0,'rows':[]};var _0x20dcbf=_[_0xd955('0x33')](db['Campaign'][_0xd955('0x34')],function(_0x136cf4){return{'name':_0x136cf4[_0xd955('0x35')],'type':_0x136cf4[_0xd955('0x36')]['key']};});_0x1ac310[_0xd955('0x37')]=_[_0xd955('0x33')](_0x20dcbf,_0xd955('0x30'));_0x1ac310[_0xd955('0x38')]=_[_0xd955('0x39')](_0x511c23[_0xd955('0x38')]);_0x1ac310['filters']=_[_0xd955('0x3a')](_0x1ac310['model'],_0x1ac310['query']);_0x5c0114[_0xd955('0x3b')]=_[_0xd955('0x3a')](_0x1ac310[_0xd955('0x37')],qs[_0xd955('0x3c')](_0x511c23[_0xd955('0x38')]['fields']));_0x5c0114[_0xd955('0x3b')]=_0x5c0114[_0xd955('0x3b')][_0xd955('0x3d')]?_0x5c0114['attributes']:_0x1ac310['model'];if(!_0x511c23[_0xd955('0x38')]['hasOwnProperty']('nolimit')){_0x5c0114[_0xd955('0x3e')]=qs['limit'](_0x511c23['query']['limit']);_0x5c0114[_0xd955('0x1f')]=qs[_0xd955('0x1f')](_0x511c23[_0xd955('0x38')][_0xd955('0x1f')]);}_0x5c0114[_0xd955('0x3f')]=qs[_0xd955('0x40')](_0x511c23['query']['sort']);_0x5c0114[_0xd955('0x41')]=qs[_0xd955('0x42')](_[_0xd955('0x43')](_0x511c23[_0xd955('0x38')],_0x1ac310['filters']),_0x20dcbf);if(_0x511c23[_0xd955('0x38')]['filter']){_0x5c0114[_0xd955('0x41')]=_['merge'](_0x5c0114[_0xd955('0x41')],{'$or':_[_0xd955('0x33')](_0x20dcbf,function(_0x503197){if(_0x503197[_0xd955('0x36')]!==_0xd955('0x44')){var _0x3c2fde={};_0x3c2fde[_0x503197[_0xd955('0x30')]]={'$like':'%'+_0x511c23[_0xd955('0x38')][_0xd955('0x45')]+'%'};return _0x3c2fde;}})});}_0x5c0114=_[_0xd955('0x46')]({},_0x5c0114,_0x511c23[_0xd955('0x47')]);var _0x5844a7={'where':_0x5c0114[_0xd955('0x41')]};return db[_0xd955('0x48')][_0xd955('0x21')](_0x5844a7)[_0xd955('0x2a')](function(_0x33cfd6){_0x5e2aed[_0xd955('0x21')]=_0x33cfd6;if(_0x511c23[_0xd955('0x38')]['includeAll']){_0x5c0114[_0xd955('0x49')]=[{'all':!![]}];}return db[_0xd955('0x48')][_0xd955('0x4a')](_0x5c0114);})[_0xd955('0x2a')](function(_0x5b57d1){_0x5e2aed['rows']=_0x5b57d1;return _0x5e2aed;})[_0xd955('0x2a')](respondWithFilteredResult(_0x4dffef,_0x5c0114))[_0xd955('0x4b')](handleError(_0x4dffef,null));};exports[_0xd955('0x4c')]=function(_0x2b847f,_0x1d9ca2){var _0x31225c={'raw':![],'where':{'id':_0x2b847f[_0xd955('0x4d')]['id']}},_0x2ac873={};_0x2ac873['model']=_[_0xd955('0x39')](db['Campaign'][_0xd955('0x34')]);_0x2ac873[_0xd955('0x38')]=_[_0xd955('0x39')](_0x2b847f[_0xd955('0x38')]);_0x2ac873[_0xd955('0x42')]=_['intersection'](_0x2ac873['model'],_0x2ac873[_0xd955('0x38')]);_0x31225c[_0xd955('0x3b')]=_[_0xd955('0x3a')](_0x2ac873['model'],qs[_0xd955('0x3c')](_0x2b847f[_0xd955('0x38')][_0xd955('0x3c')]));_0x31225c[_0xd955('0x3b')]=_0x31225c[_0xd955('0x3b')]['length']?_0x31225c[_0xd955('0x3b')]:_0x2ac873['model'];if(_0x2b847f[_0xd955('0x38')][_0xd955('0x4e')]){_0x31225c[_0xd955('0x49')]=[{'all':!![]}];}_0x31225c=_[_0xd955('0x46')]({},_0x31225c,_0x2b847f[_0xd955('0x47')]);return db['Campaign']['find'](_0x31225c)['then'](handleEntityNotFound(_0x1d9ca2,null))[_0xd955('0x2a')](respondWithResult(_0x1d9ca2,null))[_0xd955('0x4b')](handleError(_0x1d9ca2,null));};exports[_0xd955('0x4f')]=function(_0x4be91c,_0x5448de){return db['Campaign'][_0xd955('0x4f')](_0x4be91c[_0xd955('0x50')],{})[_0xd955('0x2a')](function(_0x164002){var _0x37ac9f=_0x4be91c[_0xd955('0x51')][_0xd955('0x52')]({'plain':!![]});if(!_0x37ac9f)throw new Error(_0xd955('0x53'));if(_0x37ac9f['role']===_0xd955('0x51')){var _0x556506=_0x164002[_0xd955('0x52')]({'plain':!![]});var _0x781f23=_0xd955('0x2b');return db[_0xd955('0x54')][_0xd955('0x55')]({'where':{'name':_0x781f23,'userProfileId':_0x37ac9f[_0xd955('0x56')]},'raw':!![]})[_0xd955('0x2a')](function(_0x52f97e){if(_0x52f97e&&_0x52f97e[_0xd955('0x57')]===0x0){return db[_0xd955('0x2c')]['create']({'name':_0x556506['name'],'resourceId':_0x556506['id'],'type':_0x52f97e[_0xd955('0x30')],'sectionId':_0x52f97e['id']},{})[_0xd955('0x2a')](function(){return _0x164002;});}else{return _0x164002;}})[_0xd955('0x4b')](function(_0x5a0845){logger[_0xd955('0x2e')](_0xd955('0x58'),_0x5a0845);throw _0x5a0845;});}return _0x164002;})[_0xd955('0x2a')](respondWithResult(_0x5448de,0xc9))[_0xd955('0x4b')](handleError(_0x5448de,null));};exports['clone']=function(_0xf00302,_0x1218cf){var _0x33fbbc={'where':{'id':_0xf00302[_0xd955('0x4d')]['id']}},_0x54a389={};_0x54a389['model']=_[_0xd955('0x39')](db[_0xd955('0x48')][_0xd955('0x34')]);_0x33fbbc[_0xd955('0x3b')]=_[_0xd955('0x3a')](_0x54a389[_0xd955('0x37')],qs[_0xd955('0x3c')](_0xf00302[_0xd955('0x38')][_0xd955('0x3c')]));_0x33fbbc['attributes']=_0x33fbbc[_0xd955('0x3b')][_0xd955('0x3d')]?_0x33fbbc[_0xd955('0x3b')]:_0x54a389[_0xd955('0x37')];if(_0xf00302[_0xd955('0x38')]['includeAll']){_0x33fbbc['include']=[{'all':!![]}];}_0x33fbbc=_[_0xd955('0x46')]({},_0x33fbbc,_0xf00302[_0xd955('0x47')]);return db[_0xd955('0x48')]['find'](_0x33fbbc)['then'](handleEntityNotFound(_0x1218cf,null))[_0xd955('0x2a')](function(_0x26d409){if(_0x26d409){var _0x164b8e=_0x26d409[_0xd955('0x52')]({'plain':!![]});_0x164b8e=qs[_0xd955('0x59')](_0x164b8e,['id',_0xd955('0x5a'),_0xd955('0x5b')]);_0xf00302[_0xd955('0x50')]=_[_0xd955('0x59')](_0xf00302[_0xd955('0x50')],['id',_0xd955('0x5a'),'updatedAt']);return db[_0xd955('0x48')][_0xd955('0x4f')](_['merge'](_0x164b8e,_0xf00302[_0xd955('0x50')]),{'include':_0xf00302[_0xd955('0x38')][_0xd955('0x4e')]?[{'all':!![]}]:undefined})[_0xd955('0x2a')](function(_0x4564e8){var _0x39741d=_0xf00302[_0xd955('0x51')][_0xd955('0x52')]({'plain':!![]});if(!_0x39741d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x39741d[_0xd955('0x5c')]===_0xd955('0x51')){var _0x86c30d=_0x4564e8['get']({'plain':!![]});var _0x3e6230=_0xd955('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x3e6230,'userProfileId':_0x39741d[_0xd955('0x56')]},'raw':!![]})['then'](function(_0x516bed){if(_0x516bed&&_0x516bed[_0xd955('0x57')]===0x0){return db['UserProfileResource'][_0xd955('0x4f')]({'name':_0x86c30d[_0xd955('0x30')],'resourceId':_0x86c30d['id'],'type':_0x516bed[_0xd955('0x30')],'sectionId':_0x516bed['id']},{})['then'](function(){return _0x4564e8;});}else{return _0x4564e8;}})['catch'](function(_0x14f405){logger['error'](_0xd955('0x58'),_0x14f405);throw _0x14f405;});}return _0x4564e8;});}})['then'](respondWithResult(_0x1218cf,0xc9))[_0xd955('0x4b')](handleError(_0x1218cf,null));};exports[_0xd955('0x29')]=function(_0x3260e7,_0x2e84ad){if(_0x3260e7[_0xd955('0x50')]['id']){delete _0x3260e7[_0xd955('0x50')]['id'];}return db[_0xd955('0x48')][_0xd955('0x55')]({'where':{'id':_0x3260e7['params']['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x2e84ad,null))[_0xd955('0x2a')](saveUpdates(_0x3260e7['body'],null))[_0xd955('0x2a')](respondWithResult(_0x2e84ad,null))[_0xd955('0x4b')](handleError(_0x2e84ad,null));};exports[_0xd955('0x2d')]=function(_0xf8ff2b,_0x15d534){return db['Campaign'][_0xd955('0x55')]({'where':{'id':_0xf8ff2b[_0xd955('0x4d')]['id']}})['then'](handleEntityNotFound(_0x15d534,null))['then'](removeEntity(_0x15d534,null))['catch'](handleError(_0x15d534,null));};exports[_0xd955('0x5d')]=function(_0x159623,_0x3d24b5,_0x160b03){var _0x12bf4b={'raw':!![],'where':{}};var _0x286d9f={};var _0x16c814={'count':0x0,'rows':[]};return db[_0xd955('0x48')][_0xd955('0x5e')]({'where':{'id':_0x159623[_0xd955('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3d24b5,null))['then'](function(_0x5bf50a){if(_0x5bf50a){_0x286d9f['model']=_[_0xd955('0x39')](db['CmHopper'][_0xd955('0x34')]);_0x286d9f[_0xd955('0x38')]=_[_0xd955('0x39')](_0x159623[_0xd955('0x38')]);_0x286d9f['filters']=_[_0xd955('0x3a')](_0x286d9f[_0xd955('0x37')],_0x286d9f['query']);_0x12bf4b[_0xd955('0x3b')]=_['intersection'](_0x286d9f[_0xd955('0x37')],qs[_0xd955('0x3c')](_0x159623[_0xd955('0x38')][_0xd955('0x3c')]));_0x12bf4b[_0xd955('0x3b')]=_0x12bf4b[_0xd955('0x3b')][_0xd955('0x3d')]?_0x12bf4b[_0xd955('0x3b')]:_0x286d9f[_0xd955('0x37')];if(!_0x159623[_0xd955('0x38')][_0xd955('0x5f')](_0xd955('0x60'))){_0x12bf4b[_0xd955('0x3e')]=qs['limit'](_0x159623['query'][_0xd955('0x3e')]);_0x12bf4b[_0xd955('0x1f')]=qs[_0xd955('0x1f')](_0x159623['query']['offset']);}_0x12bf4b[_0xd955('0x3f')]=qs[_0xd955('0x40')](_0x159623[_0xd955('0x38')][_0xd955('0x40')]);_0x12bf4b[_0xd955('0x41')]=qs['filters'](_[_0xd955('0x43')](_0x159623[_0xd955('0x38')],_0x286d9f[_0xd955('0x42')]));_0x12bf4b[_0xd955('0x41')]['CampaignId']=_0x5bf50a['id'];if(_0x159623[_0xd955('0x38')][_0xd955('0x45')]){_0x12bf4b[_0xd955('0x41')]=_[_0xd955('0x46')](_0x12bf4b[_0xd955('0x41')],{'$or':_[_0xd955('0x33')](_0x12bf4b['attributes'],function(_0x3a3203){var _0x2a0f33={};_0x2a0f33[_0x3a3203]={'$like':'%'+_0x159623[_0xd955('0x38')][_0xd955('0x45')]+'%'};return _0x2a0f33;})});}_0x12bf4b=_[_0xd955('0x46')]({},_0x12bf4b,_0x159623['options']);return db[_0xd955('0x61')][_0xd955('0x21')]({'where':_0x12bf4b[_0xd955('0x41')]})[_0xd955('0x2a')](function(_0x151431){_0x16c814[_0xd955('0x21')]=_0x151431;if(_0x159623['query'][_0xd955('0x4e')]){_0x12bf4b['include']=[{'all':!![]}];}return db[_0xd955('0x61')][_0xd955('0x4a')](_0x12bf4b);})['then'](function(_0x42dbe8){_0x16c814[_0xd955('0x62')]=_0x42dbe8;return _0x16c814;});}})[_0xd955('0x2a')](respondWithFilteredResult(_0x3d24b5,_0x12bf4b))['catch'](handleError(_0x3d24b5,null));};exports[_0xd955('0x63')]=function(_0x53acba,_0x3dbbc3,_0x364585){var _0x1d504b={'raw':!![],'where':{}};var _0x4b126b={};var _0x30dfb3={'count':0x0,'rows':[]};return db[_0xd955('0x48')][_0xd955('0x5e')]({'where':{'id':_0x53acba[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x3dbbc3,null))['then'](function(_0x2e6c5a){if(_0x2e6c5a){_0x4b126b[_0xd955('0x37')]=_[_0xd955('0x39')](db[_0xd955('0x64')][_0xd955('0x34')]);_0x4b126b[_0xd955('0x38')]=_['keys'](_0x53acba[_0xd955('0x38')]);_0x4b126b[_0xd955('0x42')]=_[_0xd955('0x3a')](_0x4b126b['model'],_0x4b126b[_0xd955('0x38')]);_0x1d504b[_0xd955('0x3b')]=_['intersection'](_0x4b126b[_0xd955('0x37')],qs[_0xd955('0x3c')](_0x53acba[_0xd955('0x38')][_0xd955('0x3c')]));_0x1d504b['attributes']=_0x1d504b[_0xd955('0x3b')]['length']?_0x1d504b[_0xd955('0x3b')]:_0x4b126b['model'];if(!_0x53acba[_0xd955('0x38')]['hasOwnProperty'](_0xd955('0x60'))){_0x1d504b[_0xd955('0x3e')]=qs['limit'](_0x53acba[_0xd955('0x38')][_0xd955('0x3e')]);_0x1d504b[_0xd955('0x1f')]=qs[_0xd955('0x1f')](_0x53acba[_0xd955('0x38')]['offset']);}_0x1d504b['order']=qs[_0xd955('0x40')](_0x53acba[_0xd955('0x38')][_0xd955('0x40')]);_0x1d504b[_0xd955('0x41')]=qs[_0xd955('0x42')](_[_0xd955('0x43')](_0x53acba[_0xd955('0x38')],_0x4b126b[_0xd955('0x42')]));_0x1d504b[_0xd955('0x41')][_0xd955('0x65')]=_0x2e6c5a['id'];if(_0x53acba['query'][_0xd955('0x45')]){_0x1d504b[_0xd955('0x41')]=_[_0xd955('0x46')](_0x1d504b[_0xd955('0x41')],{'$or':_[_0xd955('0x33')](_0x1d504b[_0xd955('0x3b')],function(_0x133828){var _0x167a6c={};_0x167a6c[_0x133828]={'$like':'%'+_0x53acba[_0xd955('0x38')]['filter']+'%'};return _0x167a6c;})});}_0x1d504b=_['merge']({},_0x1d504b,_0x53acba['options']);return db[_0xd955('0x64')][_0xd955('0x21')]({'where':_0x1d504b[_0xd955('0x41')]})[_0xd955('0x2a')](function(_0x2d9868){_0x30dfb3[_0xd955('0x21')]=_0x2d9868;if(_0x53acba[_0xd955('0x38')]['includeAll']){_0x1d504b[_0xd955('0x49')]=[{'all':!![]}];}return db[_0xd955('0x64')]['findAll'](_0x1d504b);})[_0xd955('0x2a')](function(_0x171780){_0x30dfb3[_0xd955('0x62')]=_0x171780;return _0x30dfb3;});}})[_0xd955('0x2a')](respondWithFilteredResult(_0x3dbbc3,_0x1d504b))['catch'](handleError(_0x3dbbc3,null));};exports[_0xd955('0x66')]=function(_0x6f5e8b,_0x43b634,_0x297c9a){var _0x217eb7={'raw':!![],'where':{}};var _0x27ce62={};var _0x5607e0={'count':0x0,'rows':[]};return db['Campaign'][_0xd955('0x5e')]({'where':{'id':_0x6f5e8b[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x43b634,null))[_0xd955('0x2a')](function(_0xd2cf84){if(_0xd2cf84){_0x27ce62[_0xd955('0x37')]=_[_0xd955('0x39')](db[_0xd955('0x67')][_0xd955('0x34')]);_0x27ce62['query']=_[_0xd955('0x39')](_0x6f5e8b[_0xd955('0x38')]);_0x27ce62['filters']=_[_0xd955('0x3a')](_0x27ce62[_0xd955('0x37')],_0x27ce62[_0xd955('0x38')]);_0x217eb7[_0xd955('0x3b')]=_[_0xd955('0x3a')](_0x27ce62[_0xd955('0x37')],qs[_0xd955('0x3c')](_0x6f5e8b[_0xd955('0x38')]['fields']));_0x217eb7['attributes']=_0x217eb7['attributes']['length']?_0x217eb7[_0xd955('0x3b')]:_0x27ce62['model'];if(!_0x6f5e8b['query']['hasOwnProperty'](_0xd955('0x60'))){_0x217eb7[_0xd955('0x3e')]=qs[_0xd955('0x3e')](_0x6f5e8b[_0xd955('0x38')][_0xd955('0x3e')]);_0x217eb7['offset']=qs['offset'](_0x6f5e8b[_0xd955('0x38')][_0xd955('0x1f')]);}_0x217eb7[_0xd955('0x3f')]=qs[_0xd955('0x40')](_0x6f5e8b[_0xd955('0x38')][_0xd955('0x40')]);_0x217eb7[_0xd955('0x41')]=qs[_0xd955('0x42')](_[_0xd955('0x43')](_0x6f5e8b[_0xd955('0x38')],_0x27ce62[_0xd955('0x42')]));_0x217eb7['where'][_0xd955('0x65')]=_0xd2cf84['id'];if(_0x6f5e8b[_0xd955('0x38')][_0xd955('0x45')]){_0x217eb7[_0xd955('0x41')]=_[_0xd955('0x46')](_0x217eb7[_0xd955('0x41')],{'$or':_[_0xd955('0x33')](_0x217eb7[_0xd955('0x3b')],function(_0x237193){var _0x88420c={};_0x88420c[_0x237193]={'$like':'%'+_0x6f5e8b[_0xd955('0x38')][_0xd955('0x45')]+'%'};return _0x88420c;})});}_0x217eb7=_[_0xd955('0x46')]({},_0x217eb7,_0x6f5e8b[_0xd955('0x47')]);return db[_0xd955('0x67')][_0xd955('0x21')]({'where':_0x217eb7['where']})[_0xd955('0x2a')](function(_0x27884b){_0x5607e0[_0xd955('0x21')]=_0x27884b;if(_0x6f5e8b['query'][_0xd955('0x4e')]){_0x217eb7[_0xd955('0x49')]=[{'all':!![]}];}return db[_0xd955('0x67')][_0xd955('0x4a')](_0x217eb7);})['then'](function(_0x14bcb7){_0x5607e0['rows']=_0x14bcb7;return _0x5607e0;});}})[_0xd955('0x2a')](respondWithFilteredResult(_0x43b634,_0x217eb7))[_0xd955('0x4b')](handleError(_0x43b634,null));};exports['getHopperBlacks']=function(_0x22234c,_0x975c32,_0x9c56e1){var _0x17b255={'raw':!![],'where':{}};var _0x4e0dc9={};var _0x1ea026={'count':0x0,'rows':[]};return db['Campaign'][_0xd955('0x5e')]({'where':{'id':_0x22234c[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x975c32,null))[_0xd955('0x2a')](function(_0x575609){if(_0x575609){_0x4e0dc9['model']=_['keys'](db['CmHopperBlack']['rawAttributes']);_0x4e0dc9['query']=_['keys'](_0x22234c[_0xd955('0x38')]);_0x4e0dc9[_0xd955('0x42')]=_[_0xd955('0x3a')](_0x4e0dc9[_0xd955('0x37')],_0x4e0dc9[_0xd955('0x38')]);_0x17b255[_0xd955('0x3b')]=_[_0xd955('0x3a')](_0x4e0dc9['model'],qs[_0xd955('0x3c')](_0x22234c[_0xd955('0x38')][_0xd955('0x3c')]));_0x17b255[_0xd955('0x3b')]=_0x17b255['attributes'][_0xd955('0x3d')]?_0x17b255[_0xd955('0x3b')]:_0x4e0dc9[_0xd955('0x37')];if(!_0x22234c[_0xd955('0x38')][_0xd955('0x5f')](_0xd955('0x60'))){_0x17b255[_0xd955('0x3e')]=qs['limit'](_0x22234c[_0xd955('0x38')]['limit']);_0x17b255['offset']=qs['offset'](_0x22234c['query'][_0xd955('0x1f')]);}_0x17b255[_0xd955('0x3f')]=qs[_0xd955('0x40')](_0x22234c[_0xd955('0x38')][_0xd955('0x40')]);_0x17b255[_0xd955('0x41')]=qs[_0xd955('0x42')](_[_0xd955('0x43')](_0x22234c[_0xd955('0x38')],_0x4e0dc9[_0xd955('0x42')]));_0x17b255['where'][_0xd955('0x65')]=_0x575609['id'];if(_0x22234c[_0xd955('0x38')][_0xd955('0x45')]){_0x17b255['where']=_['merge'](_0x17b255['where'],{'$or':_['map'](_0x17b255['attributes'],function(_0x5efdb0){var _0xb38848={};_0xb38848[_0x5efdb0]={'$like':'%'+_0x22234c[_0xd955('0x38')][_0xd955('0x45')]+'%'};return _0xb38848;})});}_0x17b255=_[_0xd955('0x46')]({},_0x17b255,_0x22234c[_0xd955('0x47')]);return db['CmHopperBlack'][_0xd955('0x21')]({'where':_0x17b255[_0xd955('0x41')]})['then'](function(_0x3fa333){_0x1ea026[_0xd955('0x21')]=_0x3fa333;if(_0x22234c[_0xd955('0x38')][_0xd955('0x4e')]){_0x17b255[_0xd955('0x49')]=[{'all':!![]}];}return db[_0xd955('0x68')][_0xd955('0x4a')](_0x17b255);})[_0xd955('0x2a')](function(_0x457b25){_0x1ea026[_0xd955('0x62')]=_0x457b25;return _0x1ea026;});}})[_0xd955('0x2a')](respondWithFilteredResult(_0x975c32,_0x17b255))['catch'](handleError(_0x975c32,null));};exports[_0xd955('0x69')]=function(_0x383874,_0xe02a32,_0x50c484){var _0x34c5ac={};var _0x12d815={};var _0x653ea8;var _0x4e4ace;return db[_0xd955('0x48')]['findOne']({'where':{'id':_0x383874['params']['id']}})['then'](handleEntityNotFound(_0xe02a32,null))[_0xd955('0x2a')](function(_0x581797){if(_0x581797){_0x653ea8=_0x581797;_0x12d815[_0xd955('0x37')]=_['keys'](db[_0xd955('0x6a')][_0xd955('0x34')]);_0x12d815[_0xd955('0x38')]=_[_0xd955('0x39')](_0x383874[_0xd955('0x38')]);_0x12d815[_0xd955('0x42')]=_[_0xd955('0x3a')](_0x12d815[_0xd955('0x37')],_0x12d815['query']);_0x34c5ac['attributes']=_[_0xd955('0x3a')](_0x12d815['model'],qs['fields'](_0x383874[_0xd955('0x38')][_0xd955('0x3c')]));_0x34c5ac[_0xd955('0x3b')]=_0x34c5ac[_0xd955('0x3b')]['length']?_0x34c5ac[_0xd955('0x3b')]:_0x12d815['model'];_0x34c5ac['order']=qs[_0xd955('0x40')](_0x383874[_0xd955('0x38')][_0xd955('0x40')]);_0x34c5ac[_0xd955('0x41')]=qs[_0xd955('0x42')](_['pick'](_0x383874['query'],_0x12d815[_0xd955('0x42')]));if(_0x383874[_0xd955('0x38')]['filter']){_0x34c5ac['where']=_[_0xd955('0x46')](_0x34c5ac[_0xd955('0x41')],{'$or':_[_0xd955('0x33')](_0x34c5ac[_0xd955('0x3b')],function(_0x1d8f4f){var _0x558727={};_0x558727[_0x1d8f4f]={'$like':'%'+_0x383874[_0xd955('0x38')][_0xd955('0x45')]+'%'};return _0x558727;})});}_0x34c5ac=_['merge']({},_0x34c5ac,_0x383874[_0xd955('0x47')]);return _0x653ea8['getLists'](_0x34c5ac);}})[_0xd955('0x2a')](function(_0x3236ef){if(_0x3236ef){_0x4e4ace=_0x3236ef[_0xd955('0x3d')];if(!_0x383874[_0xd955('0x38')][_0xd955('0x5f')](_0xd955('0x60'))){_0x34c5ac[_0xd955('0x3e')]=qs[_0xd955('0x3e')](_0x383874['query'][_0xd955('0x3e')]);_0x34c5ac['offset']=qs[_0xd955('0x1f')](_0x383874[_0xd955('0x38')][_0xd955('0x1f')]);}return _0x653ea8[_0xd955('0x69')](_0x34c5ac);}})[_0xd955('0x2a')](function(_0x233702){if(_0x233702){return _0x233702?{'count':_0x4e4ace,'rows':_0x233702}:null;}})['then'](respondWithResult(_0xe02a32,null))['catch'](handleError(_0xe02a32,null));};exports[_0xd955('0x6b')]=function(_0x3bf60d,_0x5919a8,_0x4b3072){var _0x5ccfaa,_0x3e7c9d;return db[_0xd955('0x48')][_0xd955('0x55')]({'where':{'id':_0x3bf60d[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x5919a8,null))['then'](function(_0x468d31){if(_0x468d31){_0x3e7c9d=_0x468d31;return _0x468d31['addLists'](_0x3bf60d[_0xd955('0x50')][_0xd955('0x6c')],_['omit'](_0x3bf60d[_0xd955('0x50')],['ids','id'])||{});}return null;})[_0xd955('0x6d')](function(_0x3238a3){var _0x12e3fe;_0x5ccfaa=_0x3238a3||[];var _0x1a3bb9=[];if(_0x3238a3){for(var _0xb5667b=0x0;_0xb5667b<_0x3238a3[_0xd955('0x3d')];_0xb5667b+=0x1){var _0x515301=_0x3238a3[_0xb5667b][_0xd955('0x52')]({'plain':!![]});_0x3e7c9d[_0xd955('0x6e')]=_0x3bf60d['body'][_0xd955('0x6e')]?_0x3bf60d['body']['dialCheckDuplicateType']:_0x3e7c9d[_0xd955('0x6e')];switch(_0x3e7c9d[_0xd955('0x6e')]){case _0xd955('0x6f'):_0x12e3fe=squel['insert']()[_0xd955('0x70')](_0xd955('0x71'))['fromQuery'](['phone',_0xd955('0x72'),_0xd955('0x73'),'ListId','CampaignId',_0xd955('0x5a'),_0xd955('0x5b')],squel[_0xd955('0x74')]()[_0xd955('0x75')](_0xd955('0x76'),_0xd955('0x76'))['field'](_0xd955('0x77'),_0xd955('0x72'))[_0xd955('0x75')]('id',_0xd955('0x73'))[_0xd955('0x75')](_0x515301['CmListId']['toString'](),_0xd955('0x78'))[_0xd955('0x75')](_0x3bf60d['params']['id']['toString'](),_0xd955('0x65'))[_0xd955('0x75')](_0xd955('0x77'),_0xd955('0x5a'))[_0xd955('0x75')]('NOW()',_0xd955('0x5b'))[_0xd955('0x79')](_0xd955('0x7a'))['where'](_0xd955('0x7b'))['where'](_0xd955('0x7c'),_0x515301[_0xd955('0x7d')][_0xd955('0x7e')]())[_0xd955('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0xd955('0x41')](_0xd955('0x7f'),squel[_0xd955('0x74')]()['field'](_0xd955('0x80'))[_0xd955('0x79')](_0xd955('0x81'))[_0xd955('0x41')](_0xd955('0x82'),_0x3bf60d['params']['id'][_0xd955('0x7e')]()))['where'](_0xd955('0x7f'),squel[_0xd955('0x74')]()[_0xd955('0x75')](_0xd955('0x83'))['from'](_0xd955('0x71'))[_0xd955('0x41')](_0xd955('0x82'),_0x3bf60d[_0xd955('0x4d')]['id'][_0xd955('0x7e')]())))[_0xd955('0x7e')]();break;case _0xd955('0x84'):_0x12e3fe=squel[_0xd955('0x85')]()['into']('cm_hopper')['fromQuery'](['phone',_0xd955('0x72'),_0xd955('0x73'),_0xd955('0x78'),_0xd955('0x65'),'createdAt',_0xd955('0x5b')],squel[_0xd955('0x74')]()[_0xd955('0x75')](_0xd955('0x76'),'phone')['field'](_0xd955('0x77'),_0xd955('0x72'))[_0xd955('0x75')]('id',_0xd955('0x73'))[_0xd955('0x75')](_0x515301[_0xd955('0x7d')][_0xd955('0x7e')](),_0xd955('0x78'))['field'](_0x3bf60d['params']['id'][_0xd955('0x7e')](),_0xd955('0x65'))['field'](_0xd955('0x77'),_0xd955('0x5a'))['field'](_0xd955('0x77'),_0xd955('0x5b'))[_0xd955('0x79')](_0xd955('0x7a'))[_0xd955('0x41')]('deletedAt\x20IS\x20NULL')[_0xd955('0x41')](_0xd955('0x7c'),_0x515301[_0xd955('0x7d')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL')['where'](_0xd955('0x7f'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0xd955('0x79')](_0xd955('0x71'))[_0xd955('0x41')](_0xd955('0x82'),_0x3bf60d['params']['id'][_0xd955('0x7e')]())))[_0xd955('0x7e')]();break;default:_0x12e3fe=squel[_0xd955('0x85')]()['into'](_0xd955('0x71'))[_0xd955('0x86')]([_0xd955('0x76'),'scheduledAt',_0xd955('0x73'),_0xd955('0x78'),_0xd955('0x65'),_0xd955('0x5a'),_0xd955('0x5b')],squel[_0xd955('0x74')]()[_0xd955('0x75')](_0xd955('0x76'),_0xd955('0x76'))[_0xd955('0x75')](_0xd955('0x77'),_0xd955('0x72'))[_0xd955('0x75')]('id',_0xd955('0x73'))[_0xd955('0x75')](_0x515301[_0xd955('0x7d')]['toString'](),_0xd955('0x78'))[_0xd955('0x75')](_0x3bf60d['params']['id'][_0xd955('0x7e')](),_0xd955('0x65'))[_0xd955('0x75')]('NOW()',_0xd955('0x5a'))['field'](_0xd955('0x77'),'updatedAt')[_0xd955('0x79')](_0xd955('0x7a'))['where']('deletedAt\x20IS\x20NULL')[_0xd955('0x41')](_0xd955('0x7c'),_0x515301[_0xd955('0x7d')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xd955('0x7e')]();}_0x1a3bb9[_0xd955('0x87')](db[_0xd955('0x88')][_0xd955('0x38')](_0x12e3fe));}return BPromise[_0xd955('0x89')](_0x1a3bb9);}})[_0xd955('0x2a')](function(){return _0x5ccfaa;})[_0xd955('0x2a')](respondWithResult(_0x5919a8,null))['catch'](handleError(_0x5919a8,null));};exports['removeLists']=function(_0x5f1836,_0x518d58,_0xbbc2a8){return db[_0xd955('0x48')][_0xd955('0x55')]({'where':{'id':_0x5f1836[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x518d58,null))[_0xd955('0x2a')](function(_0x5cc2d1){if(_0x5cc2d1){return _0x5cc2d1['removeLists'](_0x5f1836[_0xd955('0x38')][_0xd955('0x6c')]);}})[_0xd955('0x2a')](function(_0x3b3b5c){if(_0x3b3b5c){return db[_0xd955('0x61')]['destroy']({'where':{'ListId':_0x5f1836[_0xd955('0x38')][_0xd955('0x6c')],'CampaignId':_0x5f1836[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](function(){return _0x3b3b5c;});}})[_0xd955('0x2a')](respondWithStatusCode(_0x518d58,null))[_0xd955('0x4b')](handleError(_0x518d58,null));};exports[_0xd955('0x8a')]=function(_0x46d5f5,_0x521356,_0x487710){var _0x213e13={};var _0x3c3f7f={};var _0x410d4a;var _0x4ee60c;return db[_0xd955('0x48')][_0xd955('0x5e')]({'where':{'id':_0x46d5f5[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x521356,null))[_0xd955('0x2a')](function(_0x3d0db5){if(_0x3d0db5){_0x410d4a=_0x3d0db5;_0x3c3f7f[_0xd955('0x37')]=_['keys'](db['CmList'][_0xd955('0x34')]);_0x3c3f7f[_0xd955('0x38')]=_[_0xd955('0x39')](_0x46d5f5[_0xd955('0x38')]);_0x3c3f7f[_0xd955('0x42')]=_[_0xd955('0x3a')](_0x3c3f7f[_0xd955('0x37')],_0x3c3f7f[_0xd955('0x38')]);_0x213e13[_0xd955('0x3b')]=_[_0xd955('0x3a')](_0x3c3f7f[_0xd955('0x37')],qs[_0xd955('0x3c')](_0x46d5f5[_0xd955('0x38')][_0xd955('0x3c')]));_0x213e13[_0xd955('0x3b')]=_0x213e13['attributes'][_0xd955('0x3d')]?_0x213e13[_0xd955('0x3b')]:_0x3c3f7f[_0xd955('0x37')];_0x213e13['order']=qs[_0xd955('0x40')](_0x46d5f5[_0xd955('0x38')][_0xd955('0x40')]);_0x213e13[_0xd955('0x41')]=qs['filters'](_[_0xd955('0x43')](_0x46d5f5[_0xd955('0x38')],_0x3c3f7f['filters']));if(_0x46d5f5[_0xd955('0x38')]['filter']){_0x213e13[_0xd955('0x41')]=_['merge'](_0x213e13['where'],{'$or':_['map'](_0x213e13['attributes'],function(_0x945afa){var _0x2076fc={};_0x2076fc[_0x945afa]={'$like':'%'+_0x46d5f5[_0xd955('0x38')]['filter']+'%'};return _0x2076fc;})});}_0x213e13=_[_0xd955('0x46')]({},_0x213e13,_0x46d5f5['options']);return _0x410d4a['getBlackLists'](_0x213e13);}})[_0xd955('0x2a')](function(_0x29f705){if(_0x29f705){_0x4ee60c=_0x29f705['length'];if(!_0x46d5f5[_0xd955('0x38')][_0xd955('0x5f')](_0xd955('0x60'))){_0x213e13[_0xd955('0x3e')]=qs[_0xd955('0x3e')](_0x46d5f5[_0xd955('0x38')][_0xd955('0x3e')]);_0x213e13[_0xd955('0x1f')]=qs[_0xd955('0x1f')](_0x46d5f5['query'][_0xd955('0x1f')]);}return _0x410d4a['getBlackLists'](_0x213e13);}})[_0xd955('0x2a')](function(_0x12f196){if(_0x12f196){return _0x12f196?{'count':_0x4ee60c,'rows':_0x12f196}:null;}})[_0xd955('0x2a')](respondWithResult(_0x521356,null))[_0xd955('0x4b')](handleError(_0x521356,null));};exports['addBlackLists']=function(_0x2632f6,_0x5575b9,_0x502326){var _0x45ceee,_0xdc234d;return db[_0xd955('0x48')][_0xd955('0x55')]({'where':{'id':_0x2632f6[_0xd955('0x4d')]['id']}})[_0xd955('0x2a')](handleEntityNotFound(_0x5575b9,null))[_0xd955('0x2a')](function(_0x34b5c0){if(_0x34b5c0){_0xdc234d=_0x34b5c0;return _0x34b5c0[_0xd955('0x8b')](_0x2632f6[_0xd955('0x50')][_0xd955('0x6c')],_[_0xd955('0x59')](_0x2632f6[_0xd955('0x50')],[_0xd955('0x6c'),'id'])||{});}return null;})[_0xd955('0x6d')](function(_0x17e008){var _0x150a28;_0x45ceee=_0x17e008||[];var _0x211c46=[];if(_0x17e008){for(var _0x344c06=0x0;_0x344c06<_0x17e008[_0xd955('0x3d')];_0x344c06+=0x1){var _0x42a02d=_0x17e008[_0x344c06][_0xd955('0x52')]({'plain':!![]});_0x150a28=squel[_0xd955('0x85')]()[_0xd955('0x70')](_0xd955('0x8c'))[_0xd955('0x86')](['phone','ContactId',_0xd955('0x78'),_0xd955('0x65'),'createdAt',_0xd955('0x5b')],squel['select']()[_0xd955('0x75')](_0xd955('0x76'),'phone')[_0xd955('0x75')]('id','ContactId')['field'](_0x42a02d['CmListId'][_0xd955('0x7e')](),_0xd955('0x78'))[_0xd955('0x75')](_0x2632f6[_0xd955('0x4d')]['id'][_0xd955('0x7e')](),_0xd955('0x65'))[_0xd955('0x75')](_0xd955('0x77'),_0xd955('0x5a'))[_0xd955('0x75')](_0xd955('0x77'),_0xd955('0x5b'))[_0xd955('0x79')](_0xd955('0x7a'))[_0xd955('0x41')]('deletedAt\x20IS\x20NULL')[_0xd955('0x41')]('ListId\x20=\x20?',_0x42a02d['CmListId'][_0xd955('0x7e')]())[_0xd955('0x41')](_0xd955('0x8d')))['toString']();_0x211c46['push'](db[_0xd955('0x88')][_0xd955('0x38')](_0x150a28));}return BPromise[_0xd955('0x89')](_0x211c46);}})['then'](function(){return _0x45ceee;})[_0xd955('0x2a')](respondWithResult(_0x5575b9,null))['catch'](handleError(_0x5575b9,null));};exports[_0xd955('0x8e')]=function(_0x58194b,_0x4b9a2d,_0x104d84){return db[_0xd955('0x48')][_0xd955('0x55')]({'where':{'id':_0x58194b[_0xd955('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4b9a2d,null))[_0xd955('0x2a')](function(_0x350836){if(_0x350836){return _0x350836[_0xd955('0x8e')](_0x58194b[_0xd955('0x38')][_0xd955('0x6c')]);}})[_0xd955('0x2a')](function(_0x1779ea){if(_0x1779ea){return db[_0xd955('0x68')]['destroy']({'where':{'ListId':_0x58194b[_0xd955('0x38')][_0xd955('0x6c')],'CampaignId':_0x58194b[_0xd955('0x4d')]['id']}})['then'](function(){return _0x1779ea;});}})[_0xd955('0x2a')](respondWithStatusCode(_0x4b9a2d,null))[_0xd955('0x4b')](handleError(_0x4b9a2d,null));};
\ No newline at end of file
index 6830fb1..78a0a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x5173eb,_0x312855){var _0x590759=function(_0x1c387a){while(--_0x1c387a){_0x5173eb['push'](_0x5173eb['shift']());}};_0x590759(++_0x312855);}(_0x7a54,0x106));var _0x47a5=function(_0x550107,_0x305cb5){_0x550107=_0x550107-0x0;var _0x450ac7=_0x7a54[_0x550107];return _0x450ac7;};'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 3f180c1..444cad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a8=['map','model','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Campaign,\x20%s,\x20%s','message','catch','GetCampaign','raw','options','attributes','limit','include'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x50a8,0x198));var _0x850a=function(_0x459a0a,_0x25c46f){_0x459a0a=_0x459a0a-0x0;var _0x4ab46c=_0x50a8[_0x459a0a];return _0x4ab46c;};'use strict';var _=require(_0x850a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x850a('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x850a('0x2'))['db'];var utils=require(_0x850a('0x3'));var logger=require(_0x850a('0x4'))(_0x850a('0x5'));var config=require(_0x850a('0x6'));var jayson=require(_0x850a('0x7'));var client=jayson[_0x850a('0x8')][_0x850a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3fdb41,_0x543ef0,_0x488676){return new BPromise(function(_0x3c138a,_0xf4dcd1){return client[_0x850a('0xa')](_0x3fdb41,_0x488676)[_0x850a('0xb')](function(_0x5c197f){logger[_0x850a('0xc')]('Campaign,\x20%s,\x20%s',_0x543ef0,'request\x20sent');logger[_0x850a('0xd')](_0x850a('0xe'),_0x543ef0,_0x850a('0xf'),JSON[_0x850a('0x10')](_0x5c197f));if(_0x5c197f[_0x850a('0x11')]){if(_0x5c197f['error']['code']===0x1f4){logger['error'](_0x850a('0x12'),_0x543ef0,_0x5c197f['error'][_0x850a('0x13')]);return _0xf4dcd1(_0x5c197f[_0x850a('0x11')][_0x850a('0x13')]);}logger[_0x850a('0x11')](_0x850a('0x12'),_0x543ef0,_0x5c197f['error'][_0x850a('0x13')]);return _0x3c138a(_0x5c197f['error']['message']);}else{logger['info']('Campaign,\x20%s,\x20%s',_0x543ef0,_0x850a('0xf'));_0x3c138a(_0x5c197f['result'][_0x850a('0x13')]);}})[_0x850a('0x14')](function(_0x3c90e6){logger[_0x850a('0x11')](_0x850a('0x12'),_0x543ef0,_0x3c90e6);_0xf4dcd1(_0x3c90e6);});});}exports[_0x850a('0x15')]=function(_0x3e2715){var _0x419ae6=this;return new Promise(function(_0x57e789,_0x432a28){return db['Campaign']['findAll']({'raw':_0x3e2715['options']?_0x3e2715['options'][_0x850a('0x16')]===undefined?!![]:![]:!![],'where':_0x3e2715[_0x850a('0x17')]?_0x3e2715[_0x850a('0x17')]['where']||null:null,'attributes':_0x3e2715[_0x850a('0x17')]?_0x3e2715[_0x850a('0x17')][_0x850a('0x18')]||null:null,'limit':_0x3e2715['options']?_0x3e2715['options'][_0x850a('0x19')]||null:null,'include':_0x3e2715[_0x850a('0x17')]?_0x3e2715[_0x850a('0x17')][_0x850a('0x1a')]?_['map'](_0x3e2715['options']['include'],function(_0x4363d4){return{'model':db[_0x4363d4['model']],'as':_0x4363d4['as'],'attributes':_0x4363d4[_0x850a('0x18')],'include':_0x4363d4[_0x850a('0x1a')]?_[_0x850a('0x1b')](_0x4363d4['include'],function(_0x4606ef){return{'model':db[_0x4606ef[_0x850a('0x1c')]],'as':_0x4606ef['as'],'attributes':_0x4606ef[_0x850a('0x18')],'include':_0x4606ef['include']?_[_0x850a('0x1b')](_0x4606ef[_0x850a('0x1a')],function(_0x4d715c){return{'model':db[_0x4d715c[_0x850a('0x1c')]],'as':_0x4d715c['as'],'attributes':_0x4d715c[_0x850a('0x18')]};}):[]};}):[]};}):[]:[]})[_0x850a('0xb')](function(_0x468c6b){logger[_0x850a('0xc')](_0x850a('0x15'),_0x3e2715);logger[_0x850a('0xd')](_0x850a('0x15'),_0x3e2715,JSON[_0x850a('0x10')](_0x468c6b));_0x57e789(_0x468c6b);})[_0x850a('0x14')](function(_0x44fb58){logger[_0x850a('0x11')](_0x850a('0x15'),_0x44fb58[_0x850a('0x13')],_0x3e2715);_0x432a28(_0x419ae6[_0x850a('0x11')](0x1f4,_0x44fb58['message']));});});};
\ No newline at end of file
+var _0x9bde=['model','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','Campaign,\x20%s,\x20%s','result','catch','GetCampaign','Campaign','options','raw','where','attributes','limit','map','include'];(function(_0x1203d8,_0x24bbe4){var _0x32c407=function(_0x288106){while(--_0x288106){_0x1203d8['push'](_0x1203d8['shift']());}};_0x32c407(++_0x24bbe4);}(_0x9bde,0xe1));var _0xe9bd=function(_0x15039b,_0x3e9947){_0x15039b=_0x15039b-0x0;var _0x4a774b=_0x9bde[_0x15039b];return _0x4a774b;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('Campaign,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('Campaign,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('Campaign,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('Campaign,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}exports[_0xe9bd('0x16')]=function(_0x3bae08){var _0x34ba2b=this;return new Promise(function(_0x330733,_0x5cf674){return db[_0xe9bd('0x17')]['findAll']({'raw':_0x3bae08[_0xe9bd('0x18')]?_0x3bae08['options'][_0xe9bd('0x19')]===undefined?!![]:![]:!![],'where':_0x3bae08[_0xe9bd('0x18')]?_0x3bae08[_0xe9bd('0x18')][_0xe9bd('0x1a')]||null:null,'attributes':_0x3bae08[_0xe9bd('0x18')]?_0x3bae08[_0xe9bd('0x18')][_0xe9bd('0x1b')]||null:null,'limit':_0x3bae08['options']?_0x3bae08[_0xe9bd('0x18')][_0xe9bd('0x1c')]||null:null,'include':_0x3bae08['options']?_0x3bae08[_0xe9bd('0x18')]['include']?_[_0xe9bd('0x1d')](_0x3bae08[_0xe9bd('0x18')][_0xe9bd('0x1e')],function(_0xf02209){return{'model':db[_0xf02209['model']],'as':_0xf02209['as'],'attributes':_0xf02209[_0xe9bd('0x1b')],'include':_0xf02209[_0xe9bd('0x1e')]?_[_0xe9bd('0x1d')](_0xf02209[_0xe9bd('0x1e')],function(_0x2641be){return{'model':db[_0x2641be[_0xe9bd('0x1f')]],'as':_0x2641be['as'],'attributes':_0x2641be[_0xe9bd('0x1b')],'include':_0x2641be[_0xe9bd('0x1e')]?_[_0xe9bd('0x1d')](_0x2641be['include'],function(_0x3c211a){return{'model':db[_0x3c211a[_0xe9bd('0x1f')]],'as':_0x3c211a['as'],'attributes':_0x3c211a['attributes']};}):[]};}):[]};}):[]:[]})[_0xe9bd('0xb')](function(_0xc25248){logger[_0xe9bd('0xc')](_0xe9bd('0x16'),_0x3bae08);logger[_0xe9bd('0xd')](_0xe9bd('0x16'),_0x3bae08,JSON['stringify'](_0xc25248));_0x330733(_0xc25248);})['catch'](function(_0x1de54c){logger['error'](_0xe9bd('0x16'),_0x1de54c[_0xe9bd('0x12')],_0x3bae08);_0x5cf674(_0x34ba2b[_0xe9bd('0x10')](0x1f4,_0x1de54c[_0xe9bd('0x12')]));});});};
\ No newline at end of file
index 2da8ffa..eb85476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdf4=['getBlackLists','post','create','/:id/clone','clone','/:id/blacklists','addBlackLists','put','delete','destroy','removeLists','removeBlackLists','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists'];(function(_0x42b030,_0x252cb6){var _0x112303=function(_0x261838){while(--_0x261838){_0x42b030['push'](_0x42b030['shift']());}};_0x112303(++_0x252cb6);}(_0xbdf4,0x199));var _0x4bdf=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xbdf4[_0x46698a];return _0x356db0;};'use strict';var multer=require('multer');var util=require(_0x4bdf('0x0'));var path=require(_0x4bdf('0x1'));var timeout=require(_0x4bdf('0x2'));var express=require(_0x4bdf('0x3'));var router=express[_0x4bdf('0x4')]();var fs_extra=require(_0x4bdf('0x5'));var auth=require(_0x4bdf('0x6'));var interaction=require(_0x4bdf('0x7'));var config=require(_0x4bdf('0x8'));var controller=require('./campaign.controller');router[_0x4bdf('0x9')]('/',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0xb')]);router[_0x4bdf('0x9')](_0x4bdf('0xc'),auth['isAuthenticated'](),controller[_0x4bdf('0xd')]);router[_0x4bdf('0x9')](_0x4bdf('0xe'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0xf')]);router[_0x4bdf('0x9')](_0x4bdf('0x10'),auth[_0x4bdf('0xa')](),controller['getHopperHistories']);router[_0x4bdf('0x9')](_0x4bdf('0x11'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x12')]);router['get'](_0x4bdf('0x13'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x14')]);router[_0x4bdf('0x9')](_0x4bdf('0x15'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x16')]);router['get']('/:id/blacklists',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x17')]);router[_0x4bdf('0x18')]('/',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x19')]);router['post'](_0x4bdf('0x1a'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x1b')]);router[_0x4bdf('0x18')](_0x4bdf('0x15'),auth[_0x4bdf('0xa')](),controller['addLists']);router[_0x4bdf('0x18')](_0x4bdf('0x1c'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x1d')]);router[_0x4bdf('0x1e')](_0x4bdf('0xc'),auth[_0x4bdf('0xa')](),controller['update']);router[_0x4bdf('0x1f')](_0x4bdf('0xc'),auth['isAuthenticated'](),controller[_0x4bdf('0x20')]);router[_0x4bdf('0x1f')]('/:id/lists',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x21')]);router[_0x4bdf('0x1f')](_0x4bdf('0x1c'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x22')]);module[_0x4bdf('0x23')]=router;
\ No newline at end of file
+var _0x8801=['./campaign.controller','get','index','/:id','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addLists','addBlackLists','put','update','delete','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3f6a78,_0x3961bd){var _0x3d54c4=function(_0x386117){while(--_0x386117){_0x3f6a78['push'](_0x3f6a78['shift']());}};_0x3d54c4(++_0x3961bd);}(_0x8801,0x116));var _0x1880=function(_0x519e07,_0x51b967){_0x519e07=_0x519e07-0x0;var _0x365679=_0x8801[_0x519e07];return _0x365679;};'use strict';var multer=require(_0x1880('0x0'));var util=require(_0x1880('0x1'));var path=require(_0x1880('0x2'));var timeout=require(_0x1880('0x3'));var express=require(_0x1880('0x4'));var router=express[_0x1880('0x5')]();var fs_extra=require(_0x1880('0x6'));var auth=require(_0x1880('0x7'));var interaction=require(_0x1880('0x8'));var config=require(_0x1880('0x9'));var controller=require(_0x1880('0xa'));router[_0x1880('0xb')]('/',auth['isAuthenticated'](),controller[_0x1880('0xc')]);router['get'](_0x1880('0xd'),auth[_0x1880('0xe')](),controller[_0x1880('0xf')]);router[_0x1880('0xb')](_0x1880('0x10'),auth[_0x1880('0xe')](),controller[_0x1880('0x11')]);router[_0x1880('0xb')](_0x1880('0x12'),auth[_0x1880('0xe')](),controller['getHopperHistories']);router[_0x1880('0xb')](_0x1880('0x13'),auth[_0x1880('0xe')](),controller['getHopperFinals']);router[_0x1880('0xb')](_0x1880('0x14'),auth[_0x1880('0xe')](),controller[_0x1880('0x15')]);router[_0x1880('0xb')](_0x1880('0x16'),auth['isAuthenticated'](),controller[_0x1880('0x17')]);router['get'](_0x1880('0x18'),auth[_0x1880('0xe')](),controller[_0x1880('0x19')]);router['post']('/',auth[_0x1880('0xe')](),controller['create']);router[_0x1880('0x1a')](_0x1880('0x1b'),auth[_0x1880('0xe')](),controller[_0x1880('0x1c')]);router[_0x1880('0x1a')](_0x1880('0x16'),auth['isAuthenticated'](),controller[_0x1880('0x1d')]);router['post'](_0x1880('0x18'),auth['isAuthenticated'](),controller[_0x1880('0x1e')]);router[_0x1880('0x1f')](_0x1880('0xd'),auth[_0x1880('0xe')](),controller[_0x1880('0x20')]);router['delete']('/:id',auth[_0x1880('0xe')](),controller['destroy']);router['delete'](_0x1880('0x16'),auth[_0x1880('0xe')](),controller['removeLists']);router[_0x1880('0x21')](_0x1880('0x18'),auth['isAuthenticated'](),controller[_0x1880('0x22')]);module[_0x1880('0x23')]=router;
\ No newline at end of file
index 6038300..a0017cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a24=['sequelize','exports','VIRTUAL','getDataValue','key'];(function(_0x4f939a,_0x5232ee){var _0xb1d4eb=function(_0x19821b){while(--_0x19821b){_0x4f939a['push'](_0x4f939a['shift']());}};_0xb1d4eb(++_0x5232ee);}(_0x2a24,0x1bd));var _0x42a2=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x2a24[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0x42a2('0x0'));module[_0x42a2('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x42a2('0x2')],'get':function(){return this[_0x42a2('0x3')](_0x42a2('0x4'));}}};
\ No newline at end of file
+var _0x3070=['STRING','TEXT','getDataValue','key','exports'];(function(_0x1cb7c8,_0x3744af){var _0x3cc25c=function(_0x1cac5f){while(--_0x1cac5f){_0x1cb7c8['push'](_0x1cb7c8['shift']());}};_0x3cc25c(++_0x3744af);}(_0x3070,0xa4));var _0x0307=function(_0x7f6574,_0x35b442){_0x7f6574=_0x7f6574-0x0;var _0x24efb2=_0x3070[_0x7f6574];return _0x24efb2;};'use strict';var Sequelize=require('sequelize');module[_0x0307('0x0')]={'key':{'type':Sequelize[_0x0307('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0x0307('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0307('0x1')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0307('0x3')](_0x0307('0x4'));}}};
\ No newline at end of file
index 329ce19..f752867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x667f=['json','offset','limit','undefined','apply','reject','save','update','destroy','then','CannedAnswers','error','name','send','index','map','CannedAnswer','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x667f,0x93));var _0xf667=function(_0x4edb1f,_0x13a1a3){_0x4edb1f=_0x4edb1f-0x0;var _0x3508d4=_0x667f[_0x4edb1f];return _0x3508d4;};'use strict';var emlformat=require(_0xf667('0x0'));var rimraf=require(_0xf667('0x1'));var zipdir=require(_0xf667('0x2'));var jsonpatch=require(_0xf667('0x3'));var rp=require(_0xf667('0x4'));var moment=require(_0xf667('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf667('0x6'));var util=require(_0xf667('0x7'));var path=require('path');var sox=require(_0xf667('0x8'));var csv=require('to-csv');var ejs=require(_0xf667('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf667('0xa'));var squel=require(_0xf667('0xb'));var crypto=require(_0xf667('0xc'));var jsforce=require(_0xf667('0xd'));var deskjs=require(_0xf667('0xe'));var toCsv=require(_0xf667('0xf'));var querystring=require(_0xf667('0x10'));var Papa=require(_0xf667('0x11'));var Redis=require(_0xf667('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf667('0x13'));var hardwareService=require(_0xf667('0x14'));var logger=require(_0xf667('0x15'))(_0xf667('0x16'));var utils=require(_0xf667('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf667('0x18'));var db=require(_0xf667('0x19'))['db'];function respondWithStatusCode(_0x1278dd,_0x154d69){_0x154d69=_0x154d69||0xcc;return function(_0x4ebf48){if(_0x4ebf48){return _0x1278dd[_0xf667('0x1a')](_0x154d69);}return _0x1278dd[_0xf667('0x1b')](_0x154d69)[_0xf667('0x1c')]();};}function respondWithResult(_0xa54507,_0x120cbd){_0x120cbd=_0x120cbd||0xc8;return function(_0x2abd80){if(_0x2abd80){return _0xa54507['status'](_0x120cbd)[_0xf667('0x1d')](_0x2abd80);}};}function respondWithFilteredResult(_0x458d58,_0x448619){return function(_0x39c19f){if(_0x39c19f){var _0x13408c=typeof _0x448619[_0xf667('0x1e')]==='undefined'&&typeof _0x448619[_0xf667('0x1f')]===_0xf667('0x20');var _0x3726dc=_0x39c19f['count'];var _0x4020e2=_0x13408c?0x0:_0x448619[_0xf667('0x1e')];var _0x303faf=_0x13408c?_0x39c19f['count']:_0x448619[_0xf667('0x1e')]+_0x448619[_0xf667('0x1f')];var _0x496e76;if(_0x303faf>=_0x3726dc){_0x303faf=_0x3726dc;_0x496e76=0xc8;}else{_0x496e76=0xce;}_0x458d58['status'](_0x496e76);return _0x458d58['set']('Content-Range',_0x4020e2+'-'+_0x303faf+'/'+_0x3726dc)['json'](_0x39c19f);}return null;};}function patchUpdates(_0x37483e){return function(_0x1e73c9){try{jsonpatch[_0xf667('0x21')](_0x1e73c9,_0x37483e,!![]);}catch(_0x4e1015){return BPromise[_0xf667('0x22')](_0x4e1015);}return _0x1e73c9[_0xf667('0x23')]();};}function saveUpdates(_0x557631,_0x31ef3f){return function(_0x27176e){if(_0x27176e){return _0x27176e[_0xf667('0x24')](_0x557631)['then'](function(_0x15dbc5){return _0x15dbc5;});}return null;};}function removeEntity(_0x10e585,_0x515805){return function(_0x4075b2){if(_0x4075b2){return _0x4075b2[_0xf667('0x25')]()[_0xf667('0x26')](function(){var _0x13a45d=_0x4075b2['get']({'plain':!![]});var _0x52dee3=_0xf667('0x27');return db['UserProfileResource'][_0xf667('0x25')]({'where':{'type':_0x52dee3,'resourceId':_0x13a45d['id']}})[_0xf667('0x26')](function(){return _0x4075b2;});})[_0xf667('0x26')](function(){_0x10e585['status'](0xcc)[_0xf667('0x1c')]();});}};}function handleEntityNotFound(_0x271b01,_0xd45d81){return function(_0x233498){if(!_0x233498){_0x271b01[_0xf667('0x1a')](0x194);}return _0x233498;};}function handleError(_0x6df76,_0x3b5fc3){_0x3b5fc3=_0x3b5fc3||0x1f4;return function(_0x32623f){logger[_0xf667('0x28')](_0x32623f['stack']);if(_0x32623f['name']){delete _0x32623f[_0xf667('0x29')];}_0x6df76[_0xf667('0x1b')](_0x3b5fc3)[_0xf667('0x2a')](_0x32623f);};}exports[_0xf667('0x2b')]=function(_0x2da3f8,_0x2e9548){var _0x56fd42={},_0x43ab3b={},_0x22f144={'count':0x0,'rows':[]};var _0x34a944=_[_0xf667('0x2c')](db[_0xf667('0x2d')]['rawAttributes'],function(_0x31b670){return{'name':_0x31b670[_0xf667('0x2e')],'type':_0x31b670[_0xf667('0x2f')][_0xf667('0x30')]};});_0x43ab3b['model']=_[_0xf667('0x2c')](_0x34a944,_0xf667('0x29'));_0x43ab3b[_0xf667('0x31')]=_[_0xf667('0x32')](_0x2da3f8[_0xf667('0x31')]);_0x43ab3b['filters']=_[_0xf667('0x33')](_0x43ab3b[_0xf667('0x34')],_0x43ab3b[_0xf667('0x31')]);_0x56fd42[_0xf667('0x35')]=_[_0xf667('0x33')](_0x43ab3b[_0xf667('0x34')],qs[_0xf667('0x36')](_0x2da3f8['query']['fields']));_0x56fd42[_0xf667('0x35')]=_0x56fd42['attributes'][_0xf667('0x37')]?_0x56fd42[_0xf667('0x35')]:_0x43ab3b[_0xf667('0x34')];if(!_0x2da3f8['query']['hasOwnProperty']('nolimit')){_0x56fd42[_0xf667('0x1f')]=qs[_0xf667('0x1f')](_0x2da3f8[_0xf667('0x31')][_0xf667('0x1f')]);_0x56fd42[_0xf667('0x1e')]=qs['offset'](_0x2da3f8[_0xf667('0x31')][_0xf667('0x1e')]);}_0x56fd42[_0xf667('0x38')]=qs[_0xf667('0x39')](_0x2da3f8[_0xf667('0x31')][_0xf667('0x39')]);_0x56fd42[_0xf667('0x3a')]=qs[_0xf667('0x3b')](_[_0xf667('0x3c')](_0x2da3f8[_0xf667('0x31')],_0x43ab3b['filters']),_0x34a944);if(_0x2da3f8[_0xf667('0x31')][_0xf667('0x3d')]){_0x56fd42[_0xf667('0x3a')]=_[_0xf667('0x3e')](_0x56fd42[_0xf667('0x3a')],{'$or':[{'key':{'$like':'%'+_0x2da3f8['query'][_0xf667('0x3d')]+'%'}},{'value':{'$like':'%'+_0x2da3f8[_0xf667('0x31')][_0xf667('0x3d')]+'%'}}]});}_0x56fd42=_[_0xf667('0x3e')]({},_0x56fd42,_0x2da3f8[_0xf667('0x3f')]);var _0x5c48ce={'where':_0x56fd42[_0xf667('0x3a')]};return db['CannedAnswer']['count'](_0x5c48ce)[_0xf667('0x26')](function(_0x5ced4d){_0x22f144['count']=_0x5ced4d;if(_0x2da3f8[_0xf667('0x31')][_0xf667('0x40')]){_0x56fd42[_0xf667('0x41')]=[{'all':!![]}];}return db['CannedAnswer'][_0xf667('0x42')](_0x56fd42);})[_0xf667('0x26')](function(_0x2d775f){_0x22f144['rows']=_0x2d775f;return _0x22f144;})[_0xf667('0x26')](respondWithFilteredResult(_0x2e9548,_0x56fd42))[_0xf667('0x43')](handleError(_0x2e9548,null));};exports[_0xf667('0x44')]=function(_0x47af95,_0x2e299b){var _0x1413da={'raw':!![],'where':{'id':_0x47af95[_0xf667('0x45')]['id']}},_0x515e4b={};_0x515e4b[_0xf667('0x34')]=_[_0xf667('0x32')](db['CannedAnswer'][_0xf667('0x46')]);_0x515e4b[_0xf667('0x31')]=_[_0xf667('0x32')](_0x47af95[_0xf667('0x31')]);_0x515e4b[_0xf667('0x3b')]=_[_0xf667('0x33')](_0x515e4b[_0xf667('0x34')],_0x515e4b[_0xf667('0x31')]);_0x1413da[_0xf667('0x35')]=_[_0xf667('0x33')](_0x515e4b[_0xf667('0x34')],qs[_0xf667('0x36')](_0x47af95[_0xf667('0x31')][_0xf667('0x36')]));_0x1413da[_0xf667('0x35')]=_0x1413da[_0xf667('0x35')][_0xf667('0x37')]?_0x1413da[_0xf667('0x35')]:_0x515e4b['model'];if(_0x47af95[_0xf667('0x31')][_0xf667('0x40')]){_0x1413da['include']=[{'all':!![]}];}_0x1413da=_[_0xf667('0x3e')]({},_0x1413da,_0x47af95[_0xf667('0x3f')]);return db[_0xf667('0x2d')]['find'](_0x1413da)[_0xf667('0x26')](handleEntityNotFound(_0x2e299b,null))[_0xf667('0x26')](respondWithResult(_0x2e299b,null))[_0xf667('0x43')](handleError(_0x2e299b,null));};exports[_0xf667('0x24')]=function(_0x28971a,_0x2b2937){if(_0x28971a['body']['id']){delete _0x28971a['body']['id'];}return db[_0xf667('0x2d')][_0xf667('0x47')]({'where':{'id':_0x28971a[_0xf667('0x45')]['id']}})[_0xf667('0x26')](handleEntityNotFound(_0x2b2937,null))[_0xf667('0x26')](saveUpdates(_0x28971a[_0xf667('0x48')],null))[_0xf667('0x26')](respondWithResult(_0x2b2937,null))['catch'](handleError(_0x2b2937,null));};exports['destroy']=function(_0x4d085b,_0x76c872){return db[_0xf667('0x2d')][_0xf667('0x47')]({'where':{'id':_0x4d085b[_0xf667('0x45')]['id']}})[_0xf667('0x26')](handleEntityNotFound(_0x76c872,null))[_0xf667('0x26')](removeEntity(_0x76c872,null))[_0xf667('0x43')](handleError(_0x76c872,null));};exports[_0xf667('0x49')]=function(_0x29a9d8,_0x45ed41){var _0x1900c9={'key':_0x29a9d8[_0xf667('0x48')][_0xf667('0x30')]};if(_0x29a9d8['body']['MailAccountId']){_0x1900c9[_0xf667('0x4a')]=_0x29a9d8[_0xf667('0x48')][_0xf667('0x4a')];}else if(_0x29a9d8['body'][_0xf667('0x4b')]){_0x1900c9[_0xf667('0x4b')]=_0x29a9d8[_0xf667('0x48')]['SmsAccountId'];}else if(_0x29a9d8[_0xf667('0x48')][_0xf667('0x4c')]){_0x1900c9[_0xf667('0x4c')]=_0x29a9d8[_0xf667('0x48')][_0xf667('0x4c')];}else if(_0x29a9d8[_0xf667('0x48')]['ChatWebsiteId']){_0x1900c9['ChatWebsiteId']=_0x29a9d8['body']['ChatWebsiteId'];}return db[_0xf667('0x2d')]['find']({'where':_0x1900c9})[_0xf667('0x26')](function(_0x14ff0e){if(_0x14ff0e){throw new db[(_0xf667('0x4d'))]['ValidationError'](_0xf667('0x4e'));}return db[_0xf667('0x2d')]['create'](_0x29a9d8[_0xf667('0x48')]);})[_0xf667('0x26')](function(_0x32494e){var _0x5180fe=_0x29a9d8['user'][_0xf667('0x4f')]({'plain':!![]});if(!_0x5180fe)throw new Error(_0xf667('0x50'));if(_0x5180fe[_0xf667('0x51')]===_0xf667('0x52')){var _0x28686a=_0x32494e[_0xf667('0x4f')]({'plain':!![]});return db[_0xf667('0x53')][_0xf667('0x47')]({'where':{'name':_0xf667('0x27'),'userProfileId':_0x5180fe[_0xf667('0x54')]},'raw':!![]})[_0xf667('0x26')](function(_0x138e4c){if(_0x138e4c&&_0x138e4c[_0xf667('0x55')]===0x0){return db[_0xf667('0x56')][_0xf667('0x49')]({'name':_0x28686a['name'],'resourceId':_0x28686a['id'],'type':_0x138e4c[_0xf667('0x29')],'sectionId':_0x138e4c['id']},{})[_0xf667('0x26')](function(){return _0x32494e;});}else{return _0x32494e;}})[_0xf667('0x43')](function(_0x45f489){logger[_0xf667('0x28')](_0xf667('0x57'),_0x45f489);throw _0x45f489;});}return _0x32494e;})[_0xf667('0x26')](respondWithResult(_0x45ed41,0xc9))[_0xf667('0x43')](handleError(_0x45ed41,null));};
\ No newline at end of file
+var _0x61e5=['pick','filter','merge','options','include','findAll','rows','params','catch','update','body','find','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','create','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','CannedAnswers','UserProfileResource','end','error','stack','name','send','index','map','CannedAnswer','rawAttributes','type','key','keys','filters','intersection','model','query','attributes','fields','length','order','sort','where'];(function(_0x44b664,_0x4a6da5){var _0x1aecbb=function(_0x411e86){while(--_0x411e86){_0x44b664['push'](_0x44b664['shift']());}};_0x1aecbb(++_0x4a6da5);}(_0x61e5,0x6e));var _0x561e=function(_0x387e32,_0x44a0b4){_0x387e32=_0x387e32-0x0;var _0xf40e01=_0x61e5[_0x387e32];return _0xf40e01;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x561e('0x0'));var zipdir=require(_0x561e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x561e('0x2'));var moment=require(_0x561e('0x3'));var BPromise=require(_0x561e('0x4'));var Mustache=require(_0x561e('0x5'));var util=require(_0x561e('0x6'));var path=require('path');var sox=require(_0x561e('0x7'));var csv=require('to-csv');var ejs=require(_0x561e('0x8'));var fs=require('fs');var fs_extra=require(_0x561e('0x9'));var _=require('lodash');var squel=require(_0x561e('0xa'));var crypto=require(_0x561e('0xb'));var jsforce=require(_0x561e('0xc'));var deskjs=require(_0x561e('0xd'));var toCsv=require(_0x561e('0xe'));var querystring=require(_0x561e('0xf'));var Papa=require(_0x561e('0x10'));var Redis=require(_0x561e('0x11'));var authService=require(_0x561e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x561e('0x13'));var hardwareService=require(_0x561e('0x14'));var logger=require(_0x561e('0x15'))(_0x561e('0x16'));var utils=require('../../config/utils');var config=require(_0x561e('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x165773,_0x53780d){_0x53780d=_0x53780d||0xcc;return function(_0x23eacc){if(_0x23eacc){return _0x165773[_0x561e('0x18')](_0x53780d);}return _0x165773[_0x561e('0x19')](_0x53780d)['end']();};}function respondWithResult(_0x3c81b7,_0x1da017){_0x1da017=_0x1da017||0xc8;return function(_0x3e3d88){if(_0x3e3d88){return _0x3c81b7[_0x561e('0x19')](_0x1da017)[_0x561e('0x1a')](_0x3e3d88);}};}function respondWithFilteredResult(_0x126bcd,_0x42c1b7){return function(_0x486499){if(_0x486499){var _0x4ae313=typeof _0x42c1b7[_0x561e('0x1b')]===_0x561e('0x1c')&&typeof _0x42c1b7[_0x561e('0x1d')]===_0x561e('0x1c');var _0x2d0b5f=_0x486499[_0x561e('0x1e')];var _0x1f949c=_0x4ae313?0x0:_0x42c1b7['offset'];var _0x1989af=_0x4ae313?_0x486499[_0x561e('0x1e')]:_0x42c1b7[_0x561e('0x1b')]+_0x42c1b7[_0x561e('0x1d')];var _0x592315;if(_0x1989af>=_0x2d0b5f){_0x1989af=_0x2d0b5f;_0x592315=0xc8;}else{_0x592315=0xce;}_0x126bcd[_0x561e('0x19')](_0x592315);return _0x126bcd[_0x561e('0x1f')]('Content-Range',_0x1f949c+'-'+_0x1989af+'/'+_0x2d0b5f)['json'](_0x486499);}return null;};}function patchUpdates(_0x3aa248){return function(_0x74af42){try{jsonpatch[_0x561e('0x20')](_0x74af42,_0x3aa248,!![]);}catch(_0x343a07){return BPromise[_0x561e('0x21')](_0x343a07);}return _0x74af42[_0x561e('0x22')]();};}function saveUpdates(_0x1cabf3,_0x322f2a){return function(_0x1d1991){if(_0x1d1991){return _0x1d1991['update'](_0x1cabf3)[_0x561e('0x23')](function(_0x2663d2){return _0x2663d2;});}return null;};}function removeEntity(_0x3a89b9,_0x47562e){return function(_0x373475){if(_0x373475){return _0x373475[_0x561e('0x24')]()['then'](function(){var _0x1143d8=_0x373475[_0x561e('0x25')]({'plain':!![]});var _0x5dcd54=_0x561e('0x26');return db[_0x561e('0x27')]['destroy']({'where':{'type':_0x5dcd54,'resourceId':_0x1143d8['id']}})[_0x561e('0x23')](function(){return _0x373475;});})['then'](function(){_0x3a89b9[_0x561e('0x19')](0xcc)[_0x561e('0x28')]();});}};}function handleEntityNotFound(_0x821c9,_0x59e58f){return function(_0x29d187){if(!_0x29d187){_0x821c9['sendStatus'](0x194);}return _0x29d187;};}function handleError(_0x10634d,_0x11d829){_0x11d829=_0x11d829||0x1f4;return function(_0x266af5){logger[_0x561e('0x29')](_0x266af5[_0x561e('0x2a')]);if(_0x266af5[_0x561e('0x2b')]){delete _0x266af5[_0x561e('0x2b')];}_0x10634d['status'](_0x11d829)[_0x561e('0x2c')](_0x266af5);};}exports[_0x561e('0x2d')]=function(_0x4ced02,_0x54aaaf){var _0x56ca89={},_0x58b902={},_0x86df3a={'count':0x0,'rows':[]};var _0x2393f7=_[_0x561e('0x2e')](db[_0x561e('0x2f')][_0x561e('0x30')],function(_0x3009c2){return{'name':_0x3009c2['fieldName'],'type':_0x3009c2[_0x561e('0x31')][_0x561e('0x32')]};});_0x58b902['model']=_['map'](_0x2393f7,_0x561e('0x2b'));_0x58b902['query']=_[_0x561e('0x33')](_0x4ced02['query']);_0x58b902[_0x561e('0x34')]=_[_0x561e('0x35')](_0x58b902[_0x561e('0x36')],_0x58b902[_0x561e('0x37')]);_0x56ca89[_0x561e('0x38')]=_[_0x561e('0x35')](_0x58b902[_0x561e('0x36')],qs[_0x561e('0x39')](_0x4ced02[_0x561e('0x37')]['fields']));_0x56ca89['attributes']=_0x56ca89[_0x561e('0x38')][_0x561e('0x3a')]?_0x56ca89[_0x561e('0x38')]:_0x58b902['model'];if(!_0x4ced02[_0x561e('0x37')]['hasOwnProperty']('nolimit')){_0x56ca89[_0x561e('0x1d')]=qs[_0x561e('0x1d')](_0x4ced02[_0x561e('0x37')][_0x561e('0x1d')]);_0x56ca89[_0x561e('0x1b')]=qs[_0x561e('0x1b')](_0x4ced02[_0x561e('0x37')]['offset']);}_0x56ca89[_0x561e('0x3b')]=qs[_0x561e('0x3c')](_0x4ced02[_0x561e('0x37')][_0x561e('0x3c')]);_0x56ca89[_0x561e('0x3d')]=qs['filters'](_[_0x561e('0x3e')](_0x4ced02[_0x561e('0x37')],_0x58b902[_0x561e('0x34')]),_0x2393f7);if(_0x4ced02[_0x561e('0x37')][_0x561e('0x3f')]){_0x56ca89[_0x561e('0x3d')]=_[_0x561e('0x40')](_0x56ca89[_0x561e('0x3d')],{'$or':[{'key':{'$like':'%'+_0x4ced02['query']['filter']+'%'}},{'value':{'$like':'%'+_0x4ced02['query']['filter']+'%'}}]});}_0x56ca89=_['merge']({},_0x56ca89,_0x4ced02[_0x561e('0x41')]);var _0x13026f={'where':_0x56ca89[_0x561e('0x3d')]};return db[_0x561e('0x2f')][_0x561e('0x1e')](_0x13026f)[_0x561e('0x23')](function(_0x1aa071){_0x86df3a[_0x561e('0x1e')]=_0x1aa071;if(_0x4ced02[_0x561e('0x37')]['includeAll']){_0x56ca89[_0x561e('0x42')]=[{'all':!![]}];}return db[_0x561e('0x2f')][_0x561e('0x43')](_0x56ca89);})['then'](function(_0x5dfa51){_0x86df3a[_0x561e('0x44')]=_0x5dfa51;return _0x86df3a;})['then'](respondWithFilteredResult(_0x54aaaf,_0x56ca89))['catch'](handleError(_0x54aaaf,null));};exports['show']=function(_0x444cae,_0x51ec02){var _0x4c8520={'raw':!![],'where':{'id':_0x444cae[_0x561e('0x45')]['id']}},_0x5b0067={};_0x5b0067['model']=_[_0x561e('0x33')](db['CannedAnswer'][_0x561e('0x30')]);_0x5b0067[_0x561e('0x37')]=_[_0x561e('0x33')](_0x444cae[_0x561e('0x37')]);_0x5b0067[_0x561e('0x34')]=_[_0x561e('0x35')](_0x5b0067['model'],_0x5b0067[_0x561e('0x37')]);_0x4c8520[_0x561e('0x38')]=_[_0x561e('0x35')](_0x5b0067[_0x561e('0x36')],qs[_0x561e('0x39')](_0x444cae['query'][_0x561e('0x39')]));_0x4c8520['attributes']=_0x4c8520[_0x561e('0x38')]['length']?_0x4c8520[_0x561e('0x38')]:_0x5b0067[_0x561e('0x36')];if(_0x444cae[_0x561e('0x37')]['includeAll']){_0x4c8520['include']=[{'all':!![]}];}_0x4c8520=_[_0x561e('0x40')]({},_0x4c8520,_0x444cae[_0x561e('0x41')]);return db['CannedAnswer']['find'](_0x4c8520)[_0x561e('0x23')](handleEntityNotFound(_0x51ec02,null))[_0x561e('0x23')](respondWithResult(_0x51ec02,null))[_0x561e('0x46')](handleError(_0x51ec02,null));};exports[_0x561e('0x47')]=function(_0x21493a,_0x3155cf){if(_0x21493a[_0x561e('0x48')]['id']){delete _0x21493a['body']['id'];}return db[_0x561e('0x2f')][_0x561e('0x49')]({'where':{'id':_0x21493a[_0x561e('0x45')]['id']}})[_0x561e('0x23')](handleEntityNotFound(_0x3155cf,null))[_0x561e('0x23')](saveUpdates(_0x21493a[_0x561e('0x48')],null))[_0x561e('0x23')](respondWithResult(_0x3155cf,null))['catch'](handleError(_0x3155cf,null));};exports[_0x561e('0x24')]=function(_0x332f96,_0x3ec216){return db[_0x561e('0x2f')]['find']({'where':{'id':_0x332f96[_0x561e('0x45')]['id']}})[_0x561e('0x23')](handleEntityNotFound(_0x3ec216,null))[_0x561e('0x23')](removeEntity(_0x3ec216,null))[_0x561e('0x46')](handleError(_0x3ec216,null));};exports['create']=function(_0x5aef01,_0x3fa5a4){var _0x533a61={'key':_0x5aef01[_0x561e('0x48')][_0x561e('0x32')]};if(_0x5aef01[_0x561e('0x48')][_0x561e('0x4a')]){_0x533a61[_0x561e('0x4a')]=_0x5aef01[_0x561e('0x48')]['MailAccountId'];}else if(_0x5aef01[_0x561e('0x48')][_0x561e('0x4b')]){_0x533a61[_0x561e('0x4b')]=_0x5aef01[_0x561e('0x48')][_0x561e('0x4b')];}else if(_0x5aef01[_0x561e('0x48')][_0x561e('0x4c')]){_0x533a61['OpenchannelAccountId']=_0x5aef01['body'][_0x561e('0x4c')];}else if(_0x5aef01[_0x561e('0x48')][_0x561e('0x4d')]){_0x533a61[_0x561e('0x4d')]=_0x5aef01['body'][_0x561e('0x4d')];}return db[_0x561e('0x2f')][_0x561e('0x49')]({'where':_0x533a61})[_0x561e('0x23')](function(_0x344dda){if(_0x344dda){throw new db['Sequelize'][(_0x561e('0x4e'))](_0x561e('0x4f'));}return db[_0x561e('0x2f')]['create'](_0x5aef01[_0x561e('0x48')]);})['then'](function(_0x244d2a){var _0x5c34f0=_0x5aef01[_0x561e('0x50')][_0x561e('0x25')]({'plain':!![]});if(!_0x5c34f0)throw new Error(_0x561e('0x51'));if(_0x5c34f0[_0x561e('0x52')]==='user'){var _0x58c1e5=_0x244d2a[_0x561e('0x25')]({'plain':!![]});return db[_0x561e('0x53')]['find']({'where':{'name':_0x561e('0x26'),'userProfileId':_0x5c34f0['userProfileId']},'raw':!![]})[_0x561e('0x23')](function(_0x1b9c91){if(_0x1b9c91&&_0x1b9c91[_0x561e('0x54')]===0x0){return db[_0x561e('0x27')][_0x561e('0x55')]({'name':_0x58c1e5[_0x561e('0x2b')],'resourceId':_0x58c1e5['id'],'type':_0x1b9c91[_0x561e('0x2b')],'sectionId':_0x1b9c91['id']},{})[_0x561e('0x23')](function(){return _0x244d2a;});}else{return _0x244d2a;}})[_0x561e('0x46')](function(_0x5cd591){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5cd591);throw _0x5cd591;});}return _0x244d2a;})[_0x561e('0x23')](respondWithResult(_0x3fa5a4,0xc9))[_0x561e('0x46')](handleError(_0x3fa5a4,null));};
\ No newline at end of file
index 4856904..3bb83c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b1b=['define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cannedAnswer.attributes'];(function(_0x5068c0,_0x4beee0){var _0x30c7fb=function(_0x144929){while(--_0x144929){_0x5068c0['push'](_0x5068c0['shift']());}};_0x30c7fb(++_0x4beee0);}(_0x3b1b,0x139));var _0xb3b1=function(_0x2a9007,_0x4e0431){_0x2a9007=_0x2a9007-0x0;var _0x2a9ab0=_0x3b1b[_0x2a9007];return _0x2a9ab0;};'use strict';var _=require(_0xb3b1('0x0'));var util=require(_0xb3b1('0x1'));var logger=require(_0xb3b1('0x2'))('api');var moment=require(_0xb3b1('0x3'));var BPromise=require(_0xb3b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb3b1('0x5'));var rimraf=require(_0xb3b1('0x6'));var config=require(_0xb3b1('0x7'));var attributes=require(_0xb3b1('0x8'));module['exports']=function(_0xf317ae,_0x497f46){return _0xf317ae[_0xb3b1('0x9')](_0xb3b1('0xa'),attributes,{'tableName':_0xb3b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb3b1('0xc'),'collate':_0xb3b1('0xd')});};
\ No newline at end of file
+var _0x4b09=['exports','define','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','api','bluebird','request-promise','path','rimraf','./cannedAnswer.attributes'];(function(_0x11a5a2,_0x1411fb){var _0xaf1ed0=function(_0x374416){while(--_0x374416){_0x11a5a2['push'](_0x11a5a2['shift']());}};_0xaf1ed0(++_0x1411fb);}(_0x4b09,0x1cd));var _0x94b0=function(_0x1443eb,_0x203408){_0x1443eb=_0x1443eb-0x0;var _0x2b8810=_0x4b09[_0x1443eb];return _0x2b8810;};'use strict';var _=require(_0x94b0('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x94b0('0x1'));var moment=require('moment');var BPromise=require(_0x94b0('0x2'));var rp=require(_0x94b0('0x3'));var fs=require('fs');var path=require(_0x94b0('0x4'));var rimraf=require(_0x94b0('0x5'));var config=require('../../config/environment');var attributes=require(_0x94b0('0x6'));module[_0x94b0('0x7')]=function(_0x549424,_0x5acfae){return _0x549424[_0x94b0('0x8')]('CannedAnswer',attributes,{'tableName':_0x94b0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x94b0('0xa'),'collate':_0x94b0('0xb')});};
\ No newline at end of file
index 66a4881..4f32c34 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(_0x2c871c,_0x21c3ee){var _0x2db0c0=function(_0x57b5e0){while(--_0x57b5e0){_0x2c871c['push'](_0x2c871c['shift']());}};_0x2db0c0(++_0x21c3ee);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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(_0x5b6f93,_0x3d0a12){var _0x2d5a0b=function(_0x47d9ac){while(--_0x47d9ac){_0x5b6f93['push'](_0x5b6f93['shift']());}};_0x2d5a0b(++_0x3d0a12);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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 5aa2a1b..f542e65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3769=['destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','index','isAuthenticated','post','create','put','/:id','update'];(function(_0x5dc550,_0x38d0f0){var _0x7b41a0=function(_0x415b8e){while(--_0x415b8e){_0x5dc550['push'](_0x5dc550['shift']());}};_0x7b41a0(++_0x38d0f0);}(_0x3769,0xa3));var _0x9376=function(_0x3b8fc5,_0x3bd37c){_0x3b8fc5=_0x3b8fc5-0x0;var _0x5ea05c=_0x3769[_0x3b8fc5];return _0x5ea05c;};'use strict';var multer=require(_0x9376('0x0'));var util=require('util');var path=require(_0x9376('0x1'));var timeout=require(_0x9376('0x2'));var express=require(_0x9376('0x3'));var router=express['Router']();var fs_extra=require(_0x9376('0x4'));var auth=require(_0x9376('0x5'));var interaction=require(_0x9376('0x6'));var config=require(_0x9376('0x7'));var controller=require(_0x9376('0x8'));router[_0x9376('0x9')]('/',auth['isAuthenticated'](),controller[_0x9376('0xa')]);router['get']('/:id',auth[_0x9376('0xb')](),controller['show']);router[_0x9376('0xc')]('/',auth['isAuthenticated'](),controller[_0x9376('0xd')]);router[_0x9376('0xe')](_0x9376('0xf'),auth[_0x9376('0xb')](),controller[_0x9376('0x10')]);router['delete'](_0x9376('0xf'),auth['isAuthenticated'](),controller[_0x9376('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xac88=['util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','/:id','create','put','update','delete','destroy','exports','multer'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xac88,0xe9));var _0x8ac8=function(_0x22c7c9,_0xc7de15){_0x22c7c9=_0x22c7c9-0x0;var _0x2a1a11=_0xac88[_0x22c7c9];return _0x2a1a11;};'use strict';var multer=require(_0x8ac8('0x0'));var util=require(_0x8ac8('0x1'));var path=require('path');var timeout=require(_0x8ac8('0x2'));var express=require('express');var router=express[_0x8ac8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8ac8('0x4'));var interaction=require(_0x8ac8('0x5'));var config=require(_0x8ac8('0x6'));var controller=require(_0x8ac8('0x7'));router[_0x8ac8('0x8')]('/',auth[_0x8ac8('0x9')](),controller[_0x8ac8('0xa')]);router[_0x8ac8('0x8')](_0x8ac8('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x8ac8('0x9')](),controller[_0x8ac8('0xc')]);router[_0x8ac8('0xd')]('/:id',auth[_0x8ac8('0x9')](),controller[_0x8ac8('0xe')]);router[_0x8ac8('0xf')](_0x8ac8('0xb'),auth[_0x8ac8('0x9')](),controller[_0x8ac8('0x10')]);module[_0x8ac8('0x11')]=router;
\ No newline at end of file
index 2f6995a..419c7a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b0b=['INTEGER','sequelize','exports','DATE','STRING'];(function(_0x57975f,_0x388556){var _0x4793b8=function(_0x652c05){while(--_0x652c05){_0x57975f['push'](_0x57975f['shift']());}};_0x4793b8(++_0x388556);}(_0x1b0b,0x173));var _0xb1b0=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x1b0b[_0x32f7d7];return _0x133d09;};'use strict';var Sequelize=require(_0xb1b0('0x0'));module[_0xb1b0('0x1')]={'calldate':{'type':Sequelize[_0xb1b0('0x2')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0xb1b0('0x3')]},'src':{'type':Sequelize[_0xb1b0('0x3')]},'dst':{'type':Sequelize[_0xb1b0('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xb1b0('0x3')]},'lastdata':{'type':Sequelize[_0xb1b0('0x3')]},'duration':{'type':Sequelize[_0xb1b0('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xb1b0('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xb1b0('0x3')]},'amaflags':{'type':Sequelize[_0xb1b0('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xb1b0('0x3')]},'userfield':{'type':Sequelize[_0xb1b0('0x3')]},'uniqueid':{'type':Sequelize[_0xb1b0('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xb1b0('0x3')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0xb1b0('0x3')]}};
\ No newline at end of file
+var _0x6ddd=['STRING','INTEGER','DATE','1970-01-01\x2000:00:01'];(function(_0x4508bd,_0x166386){var _0x51ab3b=function(_0x1e4a48){while(--_0x1e4a48){_0x4508bd['push'](_0x4508bd['shift']());}};_0x51ab3b(++_0x166386);}(_0x6ddd,0xae));var _0xd6dd=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x6ddd[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xd6dd('0x0')],'allowNull':![],'defaultValue':_0xd6dd('0x1')},'clid':{'type':Sequelize[_0xd6dd('0x2')]},'src':{'type':Sequelize[_0xd6dd('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xd6dd('0x2')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xd6dd('0x2')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xd6dd('0x2')]},'duration':{'type':Sequelize[_0xd6dd('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xd6dd('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xd6dd('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xd6dd('0x2')]},'userfield':{'type':Sequelize[_0xd6dd('0x2')]},'uniqueid':{'type':Sequelize[_0xd6dd('0x2')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xd6dd('0x2')]},'peeraccount':{'type':Sequelize[_0xd6dd('0x2')]},'type':{'type':Sequelize[_0xd6dd('0x2')]},'tag':{'type':Sequelize[_0xd6dd('0x2')]}};
\ No newline at end of file
index e5b7286..a543df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','Cdr','includeAll','findAll','catch','show','body','find','params','describe'];(function(_0x31b533,_0xaa5884){var _0x37fe3e=function(_0x4bf9a4){while(--_0x4bf9a4){_0x31b533['push'](_0x31b533['shift']());}};_0x37fe3e(++_0xaa5884);}(_0xda19,0xd5));var _0x9da1=function(_0x39cea8,_0x492d2c){_0x39cea8=_0x39cea8-0x0;var _0x5b136e=_0xda19[_0x39cea8];return _0x5b136e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];function respondWithStatusCode(_0x596b6b,_0x4735c7){_0x4735c7=_0x4735c7||0xcc;return function(_0x1d93f8){if(_0x1d93f8){return _0x596b6b[_0x9da1('0x17')](_0x4735c7);}return _0x596b6b[_0x9da1('0x18')](_0x4735c7)['end']();};}function respondWithResult(_0x2837e3,_0x535a13){_0x535a13=_0x535a13||0xc8;return function(_0x4d17e1){if(_0x4d17e1){return _0x2837e3[_0x9da1('0x18')](_0x535a13)['json'](_0x4d17e1);}};}function respondWithFilteredResult(_0x433ff4,_0x43c093){return function(_0x37653d){if(_0x37653d){var _0x1a1a6b=typeof _0x43c093[_0x9da1('0x19')]==='undefined'&&typeof _0x43c093[_0x9da1('0x1a')]===_0x9da1('0x1b');var _0xf83bf8=_0x37653d[_0x9da1('0x1c')];var _0xfb278d=_0x1a1a6b?0x0:_0x43c093[_0x9da1('0x19')];var _0x497676=_0x1a1a6b?_0x37653d['count']:_0x43c093[_0x9da1('0x19')]+_0x43c093[_0x9da1('0x1a')];var _0x1b0e7f;if(_0x497676>=_0xf83bf8){_0x497676=_0xf83bf8;_0x1b0e7f=0xc8;}else{_0x1b0e7f=0xce;}_0x433ff4[_0x9da1('0x18')](_0x1b0e7f);return _0x433ff4[_0x9da1('0x1d')](_0x9da1('0x1e'),_0xfb278d+'-'+_0x497676+'/'+_0xf83bf8)[_0x9da1('0x1f')](_0x37653d);}return null;};}function patchUpdates(_0x47e5cf){return function(_0x1a459c){try{jsonpatch[_0x9da1('0x20')](_0x1a459c,_0x47e5cf,!![]);}catch(_0x9c3b37){return BPromise[_0x9da1('0x21')](_0x9c3b37);}return _0x1a459c[_0x9da1('0x22')]();};}function saveUpdates(_0x4e9d7d,_0x5454d3){return function(_0x14793b){if(_0x14793b){return _0x14793b[_0x9da1('0x23')](_0x4e9d7d)[_0x9da1('0x24')](function(_0x330219){return _0x330219;});}return null;};}function removeEntity(_0x32eb55,_0x165b73){return function(_0x4c60aa){if(_0x4c60aa){return _0x4c60aa[_0x9da1('0x25')]()[_0x9da1('0x24')](function(){_0x32eb55['status'](0xcc)[_0x9da1('0x26')]();});}};}function handleEntityNotFound(_0x3f5680,_0x534210){return function(_0x2fd49c){if(!_0x2fd49c){_0x3f5680[_0x9da1('0x17')](0x194);}return _0x2fd49c;};}function handleError(_0x4b1152,_0x36b87a){_0x36b87a=_0x36b87a||0x1f4;return function(_0x1d6af5){logger['error'](_0x1d6af5['stack']);if(_0x1d6af5[_0x9da1('0x27')]){delete _0x1d6af5[_0x9da1('0x27')];}_0x4b1152['status'](_0x36b87a)[_0x9da1('0x28')](_0x1d6af5);};}exports['index']=function(_0x5a6f2d,_0x5a59c2){var _0x31b826={},_0x404b86={},_0x24c6d5={'count':0x0,'rows':[]};var _0x26dd58=_[_0x9da1('0x29')](db['Cdr'][_0x9da1('0x2a')],function(_0x4e6083){return{'name':_0x4e6083[_0x9da1('0x2b')],'type':_0x4e6083[_0x9da1('0x2c')]['key']};});_0x404b86[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x26dd58,'name');_0x404b86[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x5a6f2d[_0x9da1('0x2e')]);_0x404b86[_0x9da1('0x30')]=_['intersection'](_0x404b86['model'],_0x404b86[_0x9da1('0x2e')]);_0x31b826[_0x9da1('0x31')]=_[_0x9da1('0x32')](_0x404b86[_0x9da1('0x2d')],qs[_0x9da1('0x33')](_0x5a6f2d['query'][_0x9da1('0x33')]));_0x31b826[_0x9da1('0x31')]=_0x31b826[_0x9da1('0x31')][_0x9da1('0x34')]?_0x31b826[_0x9da1('0x31')]:_0x404b86[_0x9da1('0x2d')];if(!_0x5a6f2d['query'][_0x9da1('0x35')]('nolimit')){_0x31b826['limit']=qs[_0x9da1('0x1a')](_0x5a6f2d['query'][_0x9da1('0x1a')]);_0x31b826[_0x9da1('0x19')]=qs[_0x9da1('0x19')](_0x5a6f2d[_0x9da1('0x2e')][_0x9da1('0x19')]);}_0x31b826[_0x9da1('0x36')]=qs[_0x9da1('0x37')](_0x5a6f2d[_0x9da1('0x2e')]['sort']);_0x31b826[_0x9da1('0x38')]=qs['filters'](_[_0x9da1('0x39')](_0x5a6f2d['query'],_0x404b86['filters']),_0x26dd58);if(_0x5a6f2d[_0x9da1('0x2e')]['filter']){_0x31b826[_0x9da1('0x38')]=_[_0x9da1('0x3a')](_0x31b826['where'],{'$or':_[_0x9da1('0x29')](_0x26dd58,function(_0x1b750f){if(_0x1b750f[_0x9da1('0x2c')]!==_0x9da1('0x3b')){var _0x56bd49={};_0x56bd49[_0x1b750f[_0x9da1('0x27')]]={'$like':'%'+_0x5a6f2d['query'][_0x9da1('0x3c')]+'%'};return _0x56bd49;}})});}_0x31b826=_['merge']({},_0x31b826,_0x5a6f2d[_0x9da1('0x3d')]);var _0x46c176={'where':_0x31b826['where']};return db[_0x9da1('0x3e')][_0x9da1('0x1c')](_0x46c176)[_0x9da1('0x24')](function(_0x4e9af3){_0x24c6d5['count']=_0x4e9af3;if(_0x5a6f2d['query'][_0x9da1('0x3f')]){_0x31b826['include']=[{'all':!![]}];}return db[_0x9da1('0x3e')][_0x9da1('0x40')](_0x31b826);})[_0x9da1('0x24')](function(_0x43c064){_0x24c6d5['rows']=_0x43c064;return _0x24c6d5;})[_0x9da1('0x24')](respondWithFilteredResult(_0x5a59c2,_0x31b826))[_0x9da1('0x41')](handleError(_0x5a59c2,null));};exports[_0x9da1('0x42')]=function(_0x173dc6,_0x28fc88){var _0x26c225={'raw':!![],'where':{'id':_0x173dc6['params']['id']}},_0x28e0b2={};_0x28e0b2[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x3e')]['rawAttributes']);_0x28e0b2[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x173dc6['query']);_0x28e0b2[_0x9da1('0x30')]=_[_0x9da1('0x32')](_0x28e0b2['model'],_0x28e0b2[_0x9da1('0x2e')]);_0x26c225['attributes']=_[_0x9da1('0x32')](_0x28e0b2[_0x9da1('0x2d')],qs['fields'](_0x173dc6['query'][_0x9da1('0x33')]));_0x26c225[_0x9da1('0x31')]=_0x26c225[_0x9da1('0x31')][_0x9da1('0x34')]?_0x26c225[_0x9da1('0x31')]:_0x28e0b2[_0x9da1('0x2d')];if(_0x173dc6[_0x9da1('0x2e')][_0x9da1('0x3f')]){_0x26c225['include']=[{'all':!![]}];}_0x26c225=_[_0x9da1('0x3a')]({},_0x26c225,_0x173dc6[_0x9da1('0x3d')]);return db[_0x9da1('0x3e')]['find'](_0x26c225)[_0x9da1('0x24')](handleEntityNotFound(_0x28fc88,null))[_0x9da1('0x24')](respondWithResult(_0x28fc88,null))[_0x9da1('0x41')](handleError(_0x28fc88,null));};exports['create']=function(_0x336fc3,_0x351d4d){return db[_0x9da1('0x3e')]['create'](_0x336fc3[_0x9da1('0x43')],{})['then'](respondWithResult(_0x351d4d,0xc9))['catch'](handleError(_0x351d4d,null));};exports[_0x9da1('0x23')]=function(_0x43c47d,_0x5afbc7){if(_0x43c47d[_0x9da1('0x43')]['id']){delete _0x43c47d[_0x9da1('0x43')]['id'];}return db['Cdr'][_0x9da1('0x44')]({'where':{'id':_0x43c47d[_0x9da1('0x45')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x5afbc7,null))[_0x9da1('0x24')](saveUpdates(_0x43c47d[_0x9da1('0x43')],null))[_0x9da1('0x24')](respondWithResult(_0x5afbc7,null))[_0x9da1('0x41')](handleError(_0x5afbc7,null));};exports[_0x9da1('0x25')]=function(_0x3889f4,_0x5c9b46){return db[_0x9da1('0x3e')][_0x9da1('0x44')]({'where':{'id':_0x3889f4[_0x9da1('0x45')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x5c9b46,null))['then'](removeEntity(_0x5c9b46,null))['catch'](handleError(_0x5c9b46,null));};exports[_0x9da1('0x46')]=function(_0x6ca1ac,_0x3870dd){return db[_0x9da1('0x3e')][_0x9da1('0x46')]()[_0x9da1('0x24')](respondWithResult(_0x3870dd,null))[_0x9da1('0x41')](handleError(_0x3870dd,null));};
\ No newline at end of file
+var _0x9c5a=['order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','Cdr','rows','catch','params','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x43e537,_0x457e0e){var _0x20889e=function(_0x3fd6c9){while(--_0x3fd6c9){_0x43e537['push'](_0x43e537['shift']());}};_0x20889e(++_0x457e0e);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x19ec48,_0x213110){_0x19ec48=_0x19ec48-0x0;var _0x56e0ba=_0x9c5a[_0x19ec48];return _0x56e0ba;};'use strict';var emlformat=require(_0xa9c5('0x0'));var rimraf=require(_0xa9c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9c5('0x2'));var rp=require(_0xa9c5('0x3'));var moment=require(_0xa9c5('0x4'));var BPromise=require(_0xa9c5('0x5'));var Mustache=require('mustache');var util=require(_0xa9c5('0x6'));var path=require(_0xa9c5('0x7'));var sox=require('sox');var csv=require(_0xa9c5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9c5('0x9'));var _=require(_0xa9c5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9c5('0xb'));var deskjs=require(_0xa9c5('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa9c5('0xd'));var Papa=require(_0xa9c5('0xe'));var Redis=require('ioredis');var authService=require(_0xa9c5('0xf'));var qs=require(_0xa9c5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9c5('0x11'))(_0xa9c5('0x12'));var utils=require(_0xa9c5('0x13'));var config=require(_0xa9c5('0x14'));var licenseUtil=require(_0xa9c5('0x15'));var db=require(_0xa9c5('0x16'))['db'];function respondWithStatusCode(_0x51c8d,_0x42d5cf){_0x42d5cf=_0x42d5cf||0xcc;return function(_0x3c5ac7){if(_0x3c5ac7){return _0x51c8d[_0xa9c5('0x17')](_0x42d5cf);}return _0x51c8d['status'](_0x42d5cf)[_0xa9c5('0x18')]();};}function respondWithResult(_0x1276d2,_0x7df76d){_0x7df76d=_0x7df76d||0xc8;return function(_0x3806c4){if(_0x3806c4){return _0x1276d2[_0xa9c5('0x19')](_0x7df76d)[_0xa9c5('0x1a')](_0x3806c4);}};}function respondWithFilteredResult(_0x251099,_0x40b001){return function(_0x19a43e){if(_0x19a43e){var _0xcf13f2=typeof _0x40b001['offset']===_0xa9c5('0x1b')&&typeof _0x40b001[_0xa9c5('0x1c')]===_0xa9c5('0x1b');var _0x55cce5=_0x19a43e[_0xa9c5('0x1d')];var _0x1142d9=_0xcf13f2?0x0:_0x40b001[_0xa9c5('0x1e')];var _0x3b8cf7=_0xcf13f2?_0x19a43e[_0xa9c5('0x1d')]:_0x40b001[_0xa9c5('0x1e')]+_0x40b001[_0xa9c5('0x1c')];var _0x1e5ce6;if(_0x3b8cf7>=_0x55cce5){_0x3b8cf7=_0x55cce5;_0x1e5ce6=0xc8;}else{_0x1e5ce6=0xce;}_0x251099[_0xa9c5('0x19')](_0x1e5ce6);return _0x251099[_0xa9c5('0x1f')](_0xa9c5('0x20'),_0x1142d9+'-'+_0x3b8cf7+'/'+_0x55cce5)[_0xa9c5('0x1a')](_0x19a43e);}return null;};}function patchUpdates(_0x54f8b9){return function(_0x1115ad){try{jsonpatch[_0xa9c5('0x21')](_0x1115ad,_0x54f8b9,!![]);}catch(_0x541c77){return BPromise['reject'](_0x541c77);}return _0x1115ad[_0xa9c5('0x22')]();};}function saveUpdates(_0x366f5c,_0x10b208){return function(_0x3b497a){if(_0x3b497a){return _0x3b497a[_0xa9c5('0x23')](_0x366f5c)[_0xa9c5('0x24')](function(_0x48e2cb){return _0x48e2cb;});}return null;};}function removeEntity(_0x4fa280,_0x3d4e1b){return function(_0x11d395){if(_0x11d395){return _0x11d395['destroy']()[_0xa9c5('0x24')](function(){_0x4fa280[_0xa9c5('0x19')](0xcc)[_0xa9c5('0x18')]();});}};}function handleEntityNotFound(_0x32fc7d,_0x4cbba1){return function(_0x40f08b){if(!_0x40f08b){_0x32fc7d[_0xa9c5('0x17')](0x194);}return _0x40f08b;};}function handleError(_0x51b64a,_0x4e8a7f){_0x4e8a7f=_0x4e8a7f||0x1f4;return function(_0x242771){logger['error'](_0x242771[_0xa9c5('0x25')]);if(_0x242771[_0xa9c5('0x26')]){delete _0x242771['name'];}_0x51b64a[_0xa9c5('0x19')](_0x4e8a7f)[_0xa9c5('0x27')](_0x242771);};}exports['index']=function(_0x413edf,_0x32baf9){var _0x198cdf={},_0x185eb8={},_0x325c65={'count':0x0,'rows':[]};var _0x4f6e70=_[_0xa9c5('0x28')](db['Cdr'][_0xa9c5('0x29')],function(_0x1ef388){return{'name':_0x1ef388[_0xa9c5('0x2a')],'type':_0x1ef388['type'][_0xa9c5('0x2b')]};});_0x185eb8[_0xa9c5('0x2c')]=_['map'](_0x4f6e70,_0xa9c5('0x26'));_0x185eb8[_0xa9c5('0x2d')]=_[_0xa9c5('0x2e')](_0x413edf[_0xa9c5('0x2d')]);_0x185eb8[_0xa9c5('0x2f')]=_[_0xa9c5('0x30')](_0x185eb8[_0xa9c5('0x2c')],_0x185eb8['query']);_0x198cdf[_0xa9c5('0x31')]=_[_0xa9c5('0x30')](_0x185eb8[_0xa9c5('0x2c')],qs[_0xa9c5('0x32')](_0x413edf[_0xa9c5('0x2d')][_0xa9c5('0x32')]));_0x198cdf[_0xa9c5('0x31')]=_0x198cdf[_0xa9c5('0x31')]['length']?_0x198cdf['attributes']:_0x185eb8[_0xa9c5('0x2c')];if(!_0x413edf[_0xa9c5('0x2d')][_0xa9c5('0x33')](_0xa9c5('0x34'))){_0x198cdf[_0xa9c5('0x1c')]=qs[_0xa9c5('0x1c')](_0x413edf['query']['limit']);_0x198cdf['offset']=qs[_0xa9c5('0x1e')](_0x413edf[_0xa9c5('0x2d')]['offset']);}_0x198cdf[_0xa9c5('0x35')]=qs['sort'](_0x413edf[_0xa9c5('0x2d')][_0xa9c5('0x36')]);_0x198cdf[_0xa9c5('0x37')]=qs[_0xa9c5('0x2f')](_['pick'](_0x413edf[_0xa9c5('0x2d')],_0x185eb8[_0xa9c5('0x2f')]),_0x4f6e70);if(_0x413edf[_0xa9c5('0x2d')][_0xa9c5('0x38')]){_0x198cdf[_0xa9c5('0x37')]=_[_0xa9c5('0x39')](_0x198cdf[_0xa9c5('0x37')],{'$or':_[_0xa9c5('0x28')](_0x4f6e70,function(_0x573fc0){if(_0x573fc0[_0xa9c5('0x3a')]!==_0xa9c5('0x3b')){var _0x841c18={};_0x841c18[_0x573fc0[_0xa9c5('0x26')]]={'$like':'%'+_0x413edf[_0xa9c5('0x2d')][_0xa9c5('0x38')]+'%'};return _0x841c18;}})});}_0x198cdf=_['merge']({},_0x198cdf,_0x413edf[_0xa9c5('0x3c')]);var _0x5b7a0a={'where':_0x198cdf[_0xa9c5('0x37')]};return db['Cdr'][_0xa9c5('0x1d')](_0x5b7a0a)[_0xa9c5('0x24')](function(_0x37fb1b){_0x325c65['count']=_0x37fb1b;if(_0x413edf[_0xa9c5('0x2d')][_0xa9c5('0x3d')]){_0x198cdf[_0xa9c5('0x3e')]=[{'all':!![]}];}return db[_0xa9c5('0x3f')]['findAll'](_0x198cdf);})[_0xa9c5('0x24')](function(_0x97803f){_0x325c65[_0xa9c5('0x40')]=_0x97803f;return _0x325c65;})[_0xa9c5('0x24')](respondWithFilteredResult(_0x32baf9,_0x198cdf))[_0xa9c5('0x41')](handleError(_0x32baf9,null));};exports['show']=function(_0x2a1138,_0x566b60){var _0x1de605={'raw':!![],'where':{'id':_0x2a1138[_0xa9c5('0x42')]['id']}},_0x397614={};_0x397614[_0xa9c5('0x2c')]=_[_0xa9c5('0x2e')](db[_0xa9c5('0x3f')][_0xa9c5('0x29')]);_0x397614[_0xa9c5('0x2d')]=_[_0xa9c5('0x2e')](_0x2a1138[_0xa9c5('0x2d')]);_0x397614['filters']=_[_0xa9c5('0x30')](_0x397614[_0xa9c5('0x2c')],_0x397614[_0xa9c5('0x2d')]);_0x1de605[_0xa9c5('0x31')]=_[_0xa9c5('0x30')](_0x397614[_0xa9c5('0x2c')],qs['fields'](_0x2a1138[_0xa9c5('0x2d')][_0xa9c5('0x32')]));_0x1de605['attributes']=_0x1de605['attributes']['length']?_0x1de605['attributes']:_0x397614['model'];if(_0x2a1138[_0xa9c5('0x2d')][_0xa9c5('0x3d')]){_0x1de605[_0xa9c5('0x3e')]=[{'all':!![]}];}_0x1de605=_[_0xa9c5('0x39')]({},_0x1de605,_0x2a1138[_0xa9c5('0x3c')]);return db[_0xa9c5('0x3f')][_0xa9c5('0x43')](_0x1de605)[_0xa9c5('0x24')](handleEntityNotFound(_0x566b60,null))[_0xa9c5('0x24')](respondWithResult(_0x566b60,null))[_0xa9c5('0x41')](handleError(_0x566b60,null));};exports[_0xa9c5('0x44')]=function(_0x2c3dbf,_0x1c2ccf){return db['Cdr'][_0xa9c5('0x44')](_0x2c3dbf['body'],{})[_0xa9c5('0x24')](respondWithResult(_0x1c2ccf,0xc9))[_0xa9c5('0x41')](handleError(_0x1c2ccf,null));};exports['update']=function(_0x5cbd33,_0xf00970){if(_0x5cbd33[_0xa9c5('0x45')]['id']){delete _0x5cbd33[_0xa9c5('0x45')]['id'];}return db['Cdr']['find']({'where':{'id':_0x5cbd33[_0xa9c5('0x42')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0xf00970,null))['then'](saveUpdates(_0x5cbd33[_0xa9c5('0x45')],null))[_0xa9c5('0x24')](respondWithResult(_0xf00970,null))[_0xa9c5('0x41')](handleError(_0xf00970,null));};exports[_0xa9c5('0x46')]=function(_0x34020f,_0xb369da){return db['Cdr']['find']({'where':{'id':_0x34020f['params']['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0xb369da,null))[_0xa9c5('0x24')](removeEntity(_0xb369da,null))[_0xa9c5('0x41')](handleError(_0xb369da,null));};exports[_0xa9c5('0x47')]=function(_0x380266,_0x15d044){return db['Cdr'][_0xa9c5('0x47')]()[_0xa9c5('0x24')](respondWithResult(_0x15d044,null))[_0xa9c5('0x41')](handleError(_0x15d044,null));};
\ No newline at end of file
index a037b97..47d29f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x1f1b58,_0x5a5daf){var _0x96cade=function(_0x5da739){while(--_0x5da739){_0x1f1b58['push'](_0x1f1b58['shift']());}};_0x96cade(++_0x5a5daf);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x4cdb31,_0x37b8ec){var _0x368569=function(_0x5e3906){while(--_0x5e3906){_0x4cdb31['push'](_0x4cdb31['shift']());}};_0x368569(++_0x37b8ec);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index b7b2448..10c94a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f0b=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','request','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','Cdr,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment'];(function(_0xf26c2e,_0x56c3ea){var _0x46ecb4=function(_0x1be516){while(--_0x1be516){_0xf26c2e['push'](_0xf26c2e['shift']());}};_0x46ecb4(++_0x56c3ea);}(_0x1f0b,0x129));var _0xb1f0=function(_0x15ab99,_0x10c0c3){_0x15ab99=_0x15ab99-0x0;var _0x3734a7=_0x1f0b[_0x15ab99];return _0x3734a7;};'use strict';var _=require(_0xb1f0('0x0'));var util=require(_0xb1f0('0x1'));var moment=require(_0xb1f0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb1f0('0x3'));var db=require(_0xb1f0('0x4'))['db'];var utils=require(_0xb1f0('0x5'));var logger=require('../../config/logger')(_0xb1f0('0x6'));var config=require('../../config/environment');var jayson=require(_0xb1f0('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x58800a,_0x5702f0,_0x1e5246){return new BPromise(function(_0xc971c6,_0x130feb){return client[_0xb1f0('0x8')](_0x58800a,_0x1e5246)['then'](function(_0x5dab08){logger['info']('Cdr,\x20%s,\x20%s',_0x5702f0,_0xb1f0('0x9'));logger[_0xb1f0('0xa')](_0xb1f0('0xb'),_0x5702f0,_0xb1f0('0x9'),JSON[_0xb1f0('0xc')](_0x5dab08));if(_0x5dab08[_0xb1f0('0xd')]){if(_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0xe')]===0x1f4){logger[_0xb1f0('0xd')](_0xb1f0('0xf'),_0x5702f0,_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0x10')]);return _0x130feb(_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0x10')]);}logger[_0xb1f0('0xd')]('Cdr,\x20%s,\x20%s',_0x5702f0,_0x5dab08['error']['message']);return _0xc971c6(_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0x10')]);}else{logger[_0xb1f0('0x11')](_0xb1f0('0xf'),_0x5702f0,_0xb1f0('0x9'));_0xc971c6(_0x5dab08[_0xb1f0('0x12')][_0xb1f0('0x10')]);}})[_0xb1f0('0x13')](function(_0x22a215){logger[_0xb1f0('0xd')]('Cdr,\x20%s,\x20%s',_0x5702f0,_0x22a215);_0x130feb(_0x22a215);});});}
\ No newline at end of file
+var _0x1756=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','Cdr,\x20%s,\x20%s','message','info','catch','lodash','util','moment'];(function(_0x2d40a6,_0x2dbe1e){var _0x2fdbe7=function(_0x9b7b59){while(--_0x9b7b59){_0x2d40a6['push'](_0x2d40a6['shift']());}};_0x2fdbe7(++_0x2dbe1e);}(_0x1756,0x11d));var _0x6175=function(_0x3558e5,_0x14704e){_0x3558e5=_0x3558e5-0x0;var _0x50d734=_0x1756[_0x3558e5];return _0x50d734;};'use strict';var _=require(_0x6175('0x0'));var util=require(_0x6175('0x1'));var moment=require(_0x6175('0x2'));var BPromise=require('bluebird');var rs=require(_0x6175('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6175('0x4'))['db'];var utils=require(_0x6175('0x5'));var logger=require(_0x6175('0x6'))(_0x6175('0x7'));var config=require(_0x6175('0x8'));var jayson=require(_0x6175('0x9'));var client=jayson[_0x6175('0xa')][_0x6175('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9f46a1,_0x95fa6b,_0x2f7494){return new BPromise(function(_0x4ebbb3,_0x417e60){return client[_0x6175('0xc')](_0x9f46a1,_0x2f7494)[_0x6175('0xd')](function(_0x204c25){logger['info']('Cdr,\x20%s,\x20%s',_0x95fa6b,_0x6175('0xe'));logger[_0x6175('0xf')](_0x6175('0x10'),_0x95fa6b,_0x6175('0xe'),JSON[_0x6175('0x11')](_0x204c25));if(_0x204c25[_0x6175('0x12')]){if(_0x204c25[_0x6175('0x12')][_0x6175('0x13')]===0x1f4){logger['error'](_0x6175('0x14'),_0x95fa6b,_0x204c25[_0x6175('0x12')][_0x6175('0x15')]);return _0x417e60(_0x204c25[_0x6175('0x12')]['message']);}logger[_0x6175('0x12')](_0x6175('0x14'),_0x95fa6b,_0x204c25[_0x6175('0x12')][_0x6175('0x15')]);return _0x4ebbb3(_0x204c25[_0x6175('0x12')][_0x6175('0x15')]);}else{logger[_0x6175('0x16')](_0x6175('0x14'),_0x95fa6b,_0x6175('0xe'));_0x4ebbb3(_0x204c25['result'][_0x6175('0x15')]);}})[_0x6175('0x17')](function(_0x30059e){logger[_0x6175('0x12')](_0x6175('0x14'),_0x95fa6b,_0x30059e);_0x417e60(_0x30059e);});});}
\ No newline at end of file
index c5675ee..682322b 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(_0x255a63,_0x2b8f0c){var _0xf6a438=function(_0x1c3a0f){while(--_0x1c3a0f){_0x255a63['push'](_0x255a63['shift']());}};_0xf6a438(++_0x2b8f0c);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x263d7d,_0x4fe765){var _0x510b6d=function(_0x5e2f98){while(--_0x5e2f98){_0x263d7d['push'](_0x263d7d['shift']());}};_0x510b6d(++_0x4fe765);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index c9d17d1..f793e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2328=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x2328,0x157));var _0x8232=function(_0x4cfb85,_0x23ad69){_0x4cfb85=_0x4cfb85-0x0;var _0x577721=_0x2328[_0x4cfb85];return _0x577721;};'use strict';var Sequelize=require('sequelize');module[_0x8232('0x0')]={'priority':{'type':Sequelize[_0x8232('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x8232('0x2')],'allowNull':![],'defaultValue':_0x8232('0x3')},'appdata':{'type':Sequelize[_0x8232('0x4')]()},'description':{'type':Sequelize[_0x8232('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x8232('0x5')}};
\ No newline at end of file
+var _0x6906=['sequelize','STRING','noop','TEXT','*,*,*,*'];(function(_0x4b84d3,_0x2e2e7c){var _0x192d1d=function(_0x282686){while(--_0x282686){_0x4b84d3['push'](_0x4b84d3['shift']());}};_0x192d1d(++_0x2e2e7c);}(_0x6906,0xdc));var _0x6690=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x6906[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x6690('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x6690('0x1')],'allowNull':![],'defaultValue':_0x6690('0x2')},'appdata':{'type':Sequelize[_0x6690('0x3')]()},'description':{'type':Sequelize[_0x6690('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x6690('0x4')}};
\ No newline at end of file
index 4123e2e..7fd55a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcce8=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x430b24,_0x1f085e){var _0x5cee14=function(_0x15fcf4){while(--_0x15fcf4){_0x430b24['push'](_0x430b24['shift']());}};_0x5cee14(++_0x1f085e);}(_0xcce8,0x1a5));var _0x8cce=function(_0x252cd1,_0x4712d1){_0x252cd1=_0x252cd1-0x0;var _0x2e3cc1=_0xcce8[_0x252cd1];return _0x2e3cc1;};'use strict';var emlformat=require(_0x8cce('0x0'));var rimraf=require(_0x8cce('0x1'));var zipdir=require(_0x8cce('0x2'));var jsonpatch=require(_0x8cce('0x3'));var rp=require(_0x8cce('0x4'));var moment=require(_0x8cce('0x5'));var BPromise=require(_0x8cce('0x6'));var Mustache=require(_0x8cce('0x7'));var util=require(_0x8cce('0x8'));var path=require(_0x8cce('0x9'));var sox=require('sox');var csv=require(_0x8cce('0xa'));var ejs=require(_0x8cce('0xb'));var fs=require('fs');var fs_extra=require(_0x8cce('0xc'));var _=require(_0x8cce('0xd'));var squel=require(_0x8cce('0xe'));var crypto=require(_0x8cce('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8cce('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8cce('0x11'));var qs=require(_0x8cce('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8cce('0x13'));var logger=require(_0x8cce('0x14'))(_0x8cce('0x15'));var utils=require('../../config/utils');var config=require(_0x8cce('0x16'));var licenseUtil=require(_0x8cce('0x17'));var db=require(_0x8cce('0x18'))['db'];function respondWithStatusCode(_0x3ce0b5,_0x54f76c){_0x54f76c=_0x54f76c||0xcc;return function(_0x2e1eeb){if(_0x2e1eeb){return _0x3ce0b5[_0x8cce('0x19')](_0x54f76c);}return _0x3ce0b5[_0x8cce('0x1a')](_0x54f76c)[_0x8cce('0x1b')]();};}function respondWithResult(_0x4c7018,_0x2ebd26){_0x2ebd26=_0x2ebd26||0xc8;return function(_0x59b900){if(_0x59b900){return _0x4c7018['status'](_0x2ebd26)[_0x8cce('0x1c')](_0x59b900);}};}function respondWithFilteredResult(_0x556f59,_0x4548a1){return function(_0x3e13e5){if(_0x3e13e5){var _0x13fa21=typeof _0x4548a1[_0x8cce('0x1d')]===_0x8cce('0x1e')&&typeof _0x4548a1[_0x8cce('0x1f')]===_0x8cce('0x1e');var _0x44fd50=_0x3e13e5[_0x8cce('0x20')];var _0x8f3333=_0x13fa21?0x0:_0x4548a1['offset'];var _0x8ca96f=_0x13fa21?_0x3e13e5[_0x8cce('0x20')]:_0x4548a1['offset']+_0x4548a1[_0x8cce('0x1f')];var _0x1f7ce2;if(_0x8ca96f>=_0x44fd50){_0x8ca96f=_0x44fd50;_0x1f7ce2=0xc8;}else{_0x1f7ce2=0xce;}_0x556f59[_0x8cce('0x1a')](_0x1f7ce2);return _0x556f59[_0x8cce('0x21')](_0x8cce('0x22'),_0x8f3333+'-'+_0x8ca96f+'/'+_0x44fd50)['json'](_0x3e13e5);}return null;};}function patchUpdates(_0x17c30d){return function(_0x221fe2){try{jsonpatch[_0x8cce('0x23')](_0x221fe2,_0x17c30d,!![]);}catch(_0x472169){return BPromise['reject'](_0x472169);}return _0x221fe2[_0x8cce('0x24')]();};}function saveUpdates(_0x49af29,_0x38a5a5){return function(_0x2aa625){if(_0x2aa625){return _0x2aa625[_0x8cce('0x25')](_0x49af29)[_0x8cce('0x26')](function(_0x54611c){return _0x54611c;});}return null;};}function removeEntity(_0x1b064c,_0x20bedb){return function(_0x244bb7){if(_0x244bb7){return _0x244bb7[_0x8cce('0x27')]()[_0x8cce('0x26')](function(){_0x1b064c['status'](0xcc)[_0x8cce('0x1b')]();});}};}function handleEntityNotFound(_0x3e191d,_0xfd5aae){return function(_0x53f7d5){if(!_0x53f7d5){_0x3e191d['sendStatus'](0x194);}return _0x53f7d5;};}function handleError(_0x3b55c4,_0x592e11){_0x592e11=_0x592e11||0x1f4;return function(_0x57dca4){logger[_0x8cce('0x28')](_0x57dca4[_0x8cce('0x29')]);if(_0x57dca4[_0x8cce('0x2a')]){delete _0x57dca4[_0x8cce('0x2a')];}_0x3b55c4[_0x8cce('0x1a')](_0x592e11)[_0x8cce('0x2b')](_0x57dca4);};}exports[_0x8cce('0x2c')]=function(_0x16d469,_0x28d61b){var _0x3b1c49={'raw':!![],'where':{'id':_0x16d469[_0x8cce('0x2d')]['id']}},_0x4cb528={};_0x4cb528[_0x8cce('0x2e')]=_[_0x8cce('0x2f')](db[_0x8cce('0x30')][_0x8cce('0x31')]);_0x4cb528['query']=_[_0x8cce('0x2f')](_0x16d469[_0x8cce('0x32')]);_0x4cb528[_0x8cce('0x33')]=_[_0x8cce('0x34')](_0x4cb528[_0x8cce('0x2e')],_0x4cb528[_0x8cce('0x32')]);_0x3b1c49[_0x8cce('0x35')]=_[_0x8cce('0x34')](_0x4cb528[_0x8cce('0x2e')],qs[_0x8cce('0x36')](_0x16d469['query'][_0x8cce('0x36')]));_0x3b1c49[_0x8cce('0x35')]=_0x3b1c49['attributes'][_0x8cce('0x37')]?_0x3b1c49[_0x8cce('0x35')]:_0x4cb528[_0x8cce('0x2e')];if(_0x16d469[_0x8cce('0x32')][_0x8cce('0x38')]){_0x3b1c49[_0x8cce('0x39')]=[{'all':!![]}];}_0x3b1c49=_[_0x8cce('0x3a')]({},_0x3b1c49,_0x16d469[_0x8cce('0x3b')]);return db[_0x8cce('0x30')][_0x8cce('0x3c')](_0x3b1c49)['then'](handleEntityNotFound(_0x28d61b,null))[_0x8cce('0x26')](respondWithResult(_0x28d61b,null))[_0x8cce('0x3d')](handleError(_0x28d61b,null));};exports[_0x8cce('0x25')]=function(_0x4b8cfc,_0x2c60b4){if(_0x4b8cfc['body']['id']){delete _0x4b8cfc[_0x8cce('0x3e')]['id'];}return db[_0x8cce('0x30')][_0x8cce('0x3c')]({'where':{'id':_0x4b8cfc['params']['id']}})[_0x8cce('0x26')](handleEntityNotFound(_0x2c60b4,null))[_0x8cce('0x26')](saveUpdates(_0x4b8cfc[_0x8cce('0x3e')],null))[_0x8cce('0x26')](respondWithResult(_0x2c60b4,null))['catch'](handleError(_0x2c60b4,null));};exports['destroy']=function(_0x116926,_0x1cf39a){return db[_0x8cce('0x30')][_0x8cce('0x3c')]({'where':{'id':_0x116926[_0x8cce('0x2d')]['id']}})[_0x8cce('0x26')](handleEntityNotFound(_0x1cf39a,null))[_0x8cce('0x26')](removeEntity(_0x1cf39a,null))[_0x8cce('0x3d')](handleError(_0x1cf39a,null));};
\ No newline at end of file
+var _0x69af=['../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','params','ChatApplication','rawAttributes','query','keys','filters','intersection','attributes','model','includeAll','merge','options','find','body','catch','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api'];(function(_0xbc546d,_0x579ead){var _0x4ba4ac=function(_0x4a12b3){while(--_0x4a12b3){_0xbc546d['push'](_0xbc546d['shift']());}};_0x4ba4ac(++_0x579ead);}(_0x69af,0x17b));var _0xf69a=function(_0x548250,_0x271d6e){_0x548250=_0x548250-0x0;var _0x152546=_0x69af[_0x548250];return _0x152546;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf69a('0x0'));var zipdir=require(_0xf69a('0x1'));var jsonpatch=require(_0xf69a('0x2'));var rp=require(_0xf69a('0x3'));var moment=require(_0xf69a('0x4'));var BPromise=require(_0xf69a('0x5'));var Mustache=require('mustache');var util=require(_0xf69a('0x6'));var path=require(_0xf69a('0x7'));var sox=require(_0xf69a('0x8'));var csv=require(_0xf69a('0x9'));var ejs=require(_0xf69a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf69a('0xb'));var squel=require(_0xf69a('0xc'));var crypto=require(_0xf69a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf69a('0x9'));var querystring=require(_0xf69a('0xe'));var Papa=require(_0xf69a('0xf'));var Redis=require(_0xf69a('0x10'));var authService=require(_0xf69a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf69a('0x12'))(_0xf69a('0x13'));var utils=require(_0xf69a('0x14'));var config=require(_0xf69a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf69a('0x16'))['db'];function respondWithStatusCode(_0x2f9dd7,_0x331bd4){_0x331bd4=_0x331bd4||0xcc;return function(_0x1b053f){if(_0x1b053f){return _0x2f9dd7[_0xf69a('0x17')](_0x331bd4);}return _0x2f9dd7[_0xf69a('0x18')](_0x331bd4)[_0xf69a('0x19')]();};}function respondWithResult(_0x3d76e8,_0x1bab41){_0x1bab41=_0x1bab41||0xc8;return function(_0x3a7342){if(_0x3a7342){return _0x3d76e8['status'](_0x1bab41)[_0xf69a('0x1a')](_0x3a7342);}};}function respondWithFilteredResult(_0x28a747,_0x1e7ed4){return function(_0x324002){if(_0x324002){var _0x510555=typeof _0x1e7ed4[_0xf69a('0x1b')]===_0xf69a('0x1c')&&typeof _0x1e7ed4[_0xf69a('0x1d')]===_0xf69a('0x1c');var _0x1e486c=_0x324002[_0xf69a('0x1e')];var _0x272ad5=_0x510555?0x0:_0x1e7ed4['offset'];var _0x495b1e=_0x510555?_0x324002['count']:_0x1e7ed4[_0xf69a('0x1b')]+_0x1e7ed4['limit'];var _0x58e1a3;if(_0x495b1e>=_0x1e486c){_0x495b1e=_0x1e486c;_0x58e1a3=0xc8;}else{_0x58e1a3=0xce;}_0x28a747['status'](_0x58e1a3);return _0x28a747[_0xf69a('0x1f')](_0xf69a('0x20'),_0x272ad5+'-'+_0x495b1e+'/'+_0x1e486c)[_0xf69a('0x1a')](_0x324002);}return null;};}function patchUpdates(_0x39c67a){return function(_0x5f0c24){try{jsonpatch['apply'](_0x5f0c24,_0x39c67a,!![]);}catch(_0x21c486){return BPromise[_0xf69a('0x21')](_0x21c486);}return _0x5f0c24[_0xf69a('0x22')]();};}function saveUpdates(_0x752c26,_0xdb0def){return function(_0x1ca53e){if(_0x1ca53e){return _0x1ca53e[_0xf69a('0x23')](_0x752c26)[_0xf69a('0x24')](function(_0x492034){return _0x492034;});}return null;};}function removeEntity(_0x24b0f9,_0x40ed91){return function(_0x223fea){if(_0x223fea){return _0x223fea[_0xf69a('0x25')]()[_0xf69a('0x24')](function(){_0x24b0f9[_0xf69a('0x18')](0xcc)[_0xf69a('0x19')]();});}};}function handleEntityNotFound(_0xc1384e,_0x4c11b3){return function(_0x25e5da){if(!_0x25e5da){_0xc1384e['sendStatus'](0x194);}return _0x25e5da;};}function handleError(_0x1d8f95,_0x106ac9){_0x106ac9=_0x106ac9||0x1f4;return function(_0x3109e0){logger[_0xf69a('0x26')](_0x3109e0[_0xf69a('0x27')]);if(_0x3109e0[_0xf69a('0x28')]){delete _0x3109e0[_0xf69a('0x28')];}_0x1d8f95[_0xf69a('0x18')](_0x106ac9)[_0xf69a('0x29')](_0x3109e0);};}exports['show']=function(_0x5c4211,_0x179040){var _0x4bfc2a={'raw':!![],'where':{'id':_0x5c4211[_0xf69a('0x2a')]['id']}},_0x51f198={};_0x51f198['model']=_['keys'](db[_0xf69a('0x2b')][_0xf69a('0x2c')]);_0x51f198[_0xf69a('0x2d')]=_[_0xf69a('0x2e')](_0x5c4211[_0xf69a('0x2d')]);_0x51f198[_0xf69a('0x2f')]=_[_0xf69a('0x30')](_0x51f198['model'],_0x51f198[_0xf69a('0x2d')]);_0x4bfc2a[_0xf69a('0x31')]=_['intersection'](_0x51f198[_0xf69a('0x32')],qs['fields'](_0x5c4211['query']['fields']));_0x4bfc2a[_0xf69a('0x31')]=_0x4bfc2a['attributes']['length']?_0x4bfc2a['attributes']:_0x51f198['model'];if(_0x5c4211[_0xf69a('0x2d')][_0xf69a('0x33')]){_0x4bfc2a['include']=[{'all':!![]}];}_0x4bfc2a=_[_0xf69a('0x34')]({},_0x4bfc2a,_0x5c4211[_0xf69a('0x35')]);return db[_0xf69a('0x2b')][_0xf69a('0x36')](_0x4bfc2a)['then'](handleEntityNotFound(_0x179040,null))[_0xf69a('0x24')](respondWithResult(_0x179040,null))['catch'](handleError(_0x179040,null));};exports['update']=function(_0x31eb36,_0x4e0f88){if(_0x31eb36['body']['id']){delete _0x31eb36[_0xf69a('0x37')]['id'];}return db['ChatApplication'][_0xf69a('0x36')]({'where':{'id':_0x31eb36[_0xf69a('0x2a')]['id']}})['then'](handleEntityNotFound(_0x4e0f88,null))['then'](saveUpdates(_0x31eb36[_0xf69a('0x37')],null))[_0xf69a('0x24')](respondWithResult(_0x4e0f88,null))[_0xf69a('0x38')](handleError(_0x4e0f88,null));};exports['destroy']=function(_0x39d3b3,_0x2d06d2){return db[_0xf69a('0x2b')][_0xf69a('0x36')]({'where':{'id':_0x39d3b3[_0xf69a('0x2a')]['id']}})[_0xf69a('0x24')](handleEntityNotFound(_0x2d06d2,null))[_0xf69a('0x24')](removeEntity(_0x2d06d2,null))[_0xf69a('0x38')](handleError(_0x2d06d2,null));};
\ No newline at end of file
index 7a9562b..7754165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1571=['../../config/environment','./chatApplication.attributes','exports','utf8mb4_unicode_ci','util','api','moment','request-promise','path'];(function(_0x335251,_0x5efde1){var _0x12ae10=function(_0x26e2b6){while(--_0x26e2b6){_0x335251['push'](_0x335251['shift']());}};_0x12ae10(++_0x5efde1);}(_0x1571,0x199));var _0x1157=function(_0x4fe328,_0x5e456d){_0x4fe328=_0x4fe328-0x0;var _0x11a53b=_0x1571[_0x4fe328];return _0x11a53b;};'use strict';var _=require('lodash');var util=require(_0x1157('0x0'));var logger=require('../../config/logger')(_0x1157('0x1'));var moment=require(_0x1157('0x2'));var BPromise=require('bluebird');var rp=require(_0x1157('0x3'));var fs=require('fs');var path=require(_0x1157('0x4'));var rimraf=require('rimraf');var config=require(_0x1157('0x5'));var attributes=require(_0x1157('0x6'));module[_0x1157('0x7')]=function(_0x2f0a3f,_0xa59bd6){return _0x2f0a3f['define']('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1157('0x8')});};
\ No newline at end of file
+var _0x2bb9=['../../config/logger','api','moment','bluebird','path','rimraf','exports','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','util'];(function(_0x420d01,_0x34980b){var _0xcb5fd2=function(_0x4a9fbb){while(--_0x4a9fbb){_0x420d01['push'](_0x420d01['shift']());}};_0xcb5fd2(++_0x34980b);}(_0x2bb9,0x11f));var _0x92bb=function(_0x37ce3a,_0x1b2a64){_0x37ce3a=_0x37ce3a-0x0;var _0x2441b9=_0x2bb9[_0x37ce3a];return _0x2441b9;};'use strict';var _=require('lodash');var util=require(_0x92bb('0x0'));var logger=require(_0x92bb('0x1'))(_0x92bb('0x2'));var moment=require(_0x92bb('0x3'));var BPromise=require(_0x92bb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x92bb('0x5'));var rimraf=require(_0x92bb('0x6'));var config=require('../../config/environment');var attributes=require('./chatApplication.attributes');module[_0x92bb('0x7')]=function(_0x504d23,_0x1ce7d6){return _0x504d23[_0x92bb('0x8')](_0x92bb('0x9'),attributes,{'tableName':_0x92bb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x92bb('0xb')});};
\ No newline at end of file
index 8465589..7af9ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf1=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x3b309f,_0x5c3215){var _0x268d4f=function(_0x4cc8e9){while(--_0x4cc8e9){_0x3b309f['push'](_0x3b309f['shift']());}};_0x268d4f(++_0x5c3215);}(_0xcaf1,0x19d));var _0x1caf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcaf1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x1caf('0x0'));var moment=require(_0x1caf('0x1'));var BPromise=require(_0x1caf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1caf('0x3'))['db'];var utils=require(_0x1caf('0x4'));var logger=require(_0x1caf('0x5'))(_0x1caf('0x6'));var config=require(_0x1caf('0x7'));var jayson=require(_0x1caf('0x8'));var client=jayson[_0x1caf('0x9')][_0x1caf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x10f48a,_0x50b25b,_0x5640f9){return new BPromise(function(_0x4436a9,_0x46ab5f){return client[_0x1caf('0xb')](_0x10f48a,_0x5640f9)[_0x1caf('0xc')](function(_0x2e60c3){logger[_0x1caf('0xd')]('ChatApplication,\x20%s,\x20%s',_0x50b25b,_0x1caf('0xe'));logger[_0x1caf('0xf')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x50b25b,_0x1caf('0xe'),JSON[_0x1caf('0x10')](_0x2e60c3));if(_0x2e60c3['error']){if(_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x12')]===0x1f4){logger[_0x1caf('0x11')](_0x1caf('0x13'),_0x50b25b,_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);return _0x46ab5f(_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);}logger[_0x1caf('0x11')]('ChatApplication,\x20%s,\x20%s',_0x50b25b,_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);return _0x4436a9(_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);}else{logger[_0x1caf('0xd')]('ChatApplication,\x20%s,\x20%s',_0x50b25b,_0x1caf('0xe'));_0x4436a9(_0x2e60c3[_0x1caf('0x15')][_0x1caf('0x14')]);}})['catch'](function(_0x12c4ab){logger[_0x1caf('0x11')](_0x1caf('0x13'),_0x50b25b,_0x12c4ab);_0x46ab5f(_0x12c4ab);});});}
\ No newline at end of file
+var _0xc973=['http','request','then','ChatApplication,\x20%s,\x20%s','debug','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client'];(function(_0x33c23e,_0x340cf2){var _0x35bd4e=function(_0x49b84b){while(--_0x49b84b){_0x33c23e['push'](_0x33c23e['shift']());}};_0x35bd4e(++_0x340cf2);}(_0xc973,0x1e6));var _0x3c97=function(_0x361aca,_0x5f5c00){_0x361aca=_0x361aca-0x0;var _0x1132fd=_0xc973[_0x361aca];return _0x1132fd;};'use strict';var _=require('lodash');var util=require(_0x3c97('0x0'));var moment=require('moment');var BPromise=require(_0x3c97('0x1'));var rs=require(_0x3c97('0x2'));var fs=require('fs');var Redis=require(_0x3c97('0x3'));var db=require(_0x3c97('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3c97('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3c97('0x6'));var client=jayson[_0x3c97('0x7')][_0x3c97('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x10d8fd,_0x276d5f,_0x5e2033){return new BPromise(function(_0x3ac274,_0x3250f0){return client[_0x3c97('0x9')](_0x10d8fd,_0x5e2033)[_0x3c97('0xa')](function(_0x2b6b74){logger['info'](_0x3c97('0xb'),_0x276d5f,'request\x20sent');logger[_0x3c97('0xc')](_0x3c97('0xd'),_0x276d5f,_0x3c97('0xe'),JSON['stringify'](_0x2b6b74));if(_0x2b6b74[_0x3c97('0xf')]){if(_0x2b6b74[_0x3c97('0xf')][_0x3c97('0x10')]===0x1f4){logger[_0x3c97('0xf')](_0x3c97('0xb'),_0x276d5f,_0x2b6b74[_0x3c97('0xf')][_0x3c97('0x11')]);return _0x3250f0(_0x2b6b74['error'][_0x3c97('0x11')]);}logger[_0x3c97('0xf')](_0x3c97('0xb'),_0x276d5f,_0x2b6b74[_0x3c97('0xf')][_0x3c97('0x11')]);return _0x3ac274(_0x2b6b74[_0x3c97('0xf')]['message']);}else{logger['info'](_0x3c97('0xb'),_0x276d5f,_0x3c97('0xe'));_0x3ac274(_0x2b6b74[_0x3c97('0x12')]['message']);}})['catch'](function(_0x37a73d){logger[_0x3c97('0xf')](_0x3c97('0xb'),_0x276d5f,_0x37a73d);_0x3250f0(_0x37a73d);});});}
\ No newline at end of file
index 1442c1a..a9afc17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06f=['../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x44e4e8,_0x254701){var _0x574ad3=function(_0x20d202){while(--_0x20d202){_0x44e4e8['push'](_0x44e4e8['shift']());}};_0x574ad3(++_0x254701);}(_0xe06f,0x180));var _0xfe06=function(_0x20550f,_0xf0706f){_0x20550f=_0x20550f-0x0;var _0x3ea1be=_0xe06f[_0x20550f];return _0x3ea1be;};'use strict';var multer=require('multer');var util=require(_0xfe06('0x0'));var path=require('path');var timeout=require(_0xfe06('0x1'));var express=require(_0xfe06('0x2'));var router=express[_0xfe06('0x3')]();var fs_extra=require(_0xfe06('0x4'));var auth=require(_0xfe06('0x5'));var interaction=require(_0xfe06('0x6'));var config=require(_0xfe06('0x7'));var controller=require(_0xfe06('0x8'));router[_0xfe06('0x9')](_0xfe06('0xa'),auth[_0xfe06('0xb')](),controller[_0xfe06('0xc')]);router[_0xfe06('0xd')](_0xfe06('0xa'),auth[_0xfe06('0xb')](),controller[_0xfe06('0xe')]);router[_0xfe06('0xf')]('/:id',auth[_0xfe06('0xb')](),controller['destroy']);module[_0xfe06('0x10')]=router;
\ No newline at end of file
+var _0x5c57=['show','put','update','delete','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated'];(function(_0x5cbd57,_0x300a34){var _0x428302=function(_0x20365c){while(--_0x20365c){_0x5cbd57['push'](_0x5cbd57['shift']());}};_0x428302(++_0x300a34);}(_0x5c57,0x163));var _0x75c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c57[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x75c5('0x0'));var timeout=require(_0x75c5('0x1'));var express=require(_0x75c5('0x2'));var router=express['Router']();var fs_extra=require(_0x75c5('0x3'));var auth=require(_0x75c5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x75c5('0x5'));var controller=require(_0x75c5('0x6'));router['get'](_0x75c5('0x7'),auth[_0x75c5('0x8')](),controller[_0x75c5('0x9')]);router[_0x75c5('0xa')](_0x75c5('0x7'),auth[_0x75c5('0x8')](),controller[_0x75c5('0xb')]);router[_0x75c5('0xc')](_0x75c5('0x7'),auth[_0x75c5('0x8')](),controller['destroy']);module[_0x75c5('0xd')]=router;
\ No newline at end of file
index a3016b1..0e800b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bf0=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x3bf0,0x83));var _0x03bf=function(_0x5754e3,_0x5d9437){_0x5754e3=_0x5754e3-0x0;var _0x41b1aa=_0x3bf0[_0x5754e3];return _0x41b1aa;};'use strict';var Sequelize=require(_0x03bf('0x0'));module[_0x03bf('0x1')]={'name':{'type':Sequelize[_0x03bf('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x03bf('0x2')]},'write':{'type':Sequelize[_0x03bf('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2901=['STRING','BOOLEAN','sequelize','exports'];(function(_0x34300a,_0x4c2664){var _0x1dc6e6=function(_0x5c357e){while(--_0x5c357e){_0x34300a['push'](_0x34300a['shift']());}};_0x1dc6e6(++_0x4c2664);}(_0x2901,0xfe));var _0x1290=function(_0x5ec8fb,_0x2fef75){_0x5ec8fb=_0x5ec8fb-0x0;var _0x30f5c8=_0x2901[_0x5ec8fb];return _0x30f5c8;};'use strict';var Sequelize=require(_0x1290('0x0'));module[_0x1290('0x1')]={'name':{'type':Sequelize[_0x1290('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1290('0x2')]},'write':{'type':Sequelize[_0x1290('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 5ed3a17..6d2ba4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a57=['request-promise','moment','mustache','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','ChatGroup','includeAll','include','findAll','catch','show','params','find','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','User','pick','removeMembers','ChatGroupId','create','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf'];(function(_0x48b852,_0x591467){var _0x2bb570=function(_0x4c1146){while(--_0x4c1146){_0x48b852['push'](_0x48b852['shift']());}};_0x2bb570(++_0x591467);}(_0x5a57,0x192));var _0x75a5=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x5a57[_0x5e36d1];return _0x950b9e;};'use strict';var emlformat=require(_0x75a5('0x0'));var rimraf=require(_0x75a5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75a5('0x2'));var moment=require(_0x75a5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x75a5('0x4'));var util=require('util');var path=require(_0x75a5('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x75a5('0x6'));var fs=require('fs');var fs_extra=require(_0x75a5('0x7'));var _=require(_0x75a5('0x8'));var squel=require(_0x75a5('0x9'));var crypto=require(_0x75a5('0xa'));var jsforce=require(_0x75a5('0xb'));var deskjs=require(_0x75a5('0xc'));var toCsv=require(_0x75a5('0xd'));var querystring=require(_0x75a5('0xe'));var Papa=require(_0x75a5('0xf'));var Redis=require(_0x75a5('0x10'));var authService=require(_0x75a5('0x11'));var qs=require(_0x75a5('0x12'));var as=require(_0x75a5('0x13'));var hardwareService=require(_0x75a5('0x14'));var logger=require('../../config/logger')(_0x75a5('0x15'));var utils=require(_0x75a5('0x16'));var config=require(_0x75a5('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x75a5('0x18'))['db'];config['redis']=_[_0x75a5('0x19')](config[_0x75a5('0x1a')],{'host':_0x75a5('0x1b'),'port':0x18eb});var socket=require(_0x75a5('0x1c'))(new Redis(config['redis']));require(_0x75a5('0x1d'))[_0x75a5('0x1e')](socket);function respondWithStatusCode(_0x451a0c,_0x1a3596){_0x1a3596=_0x1a3596||0xcc;return function(_0x56f099){if(_0x56f099){return _0x451a0c[_0x75a5('0x1f')](_0x1a3596);}return _0x451a0c[_0x75a5('0x20')](_0x1a3596)[_0x75a5('0x21')]();};}function respondWithResult(_0x212e0a,_0x318608){_0x318608=_0x318608||0xc8;return function(_0xd23a3c){if(_0xd23a3c){return _0x212e0a[_0x75a5('0x20')](_0x318608)[_0x75a5('0x22')](_0xd23a3c);}};}function respondWithFilteredResult(_0x3c457e,_0x2f6bf1){return function(_0x375d06){if(_0x375d06){var _0x1fc605=typeof _0x2f6bf1[_0x75a5('0x23')]===_0x75a5('0x24')&&typeof _0x2f6bf1[_0x75a5('0x25')]===_0x75a5('0x24');var _0x5d035d=_0x375d06[_0x75a5('0x26')];var _0x40a5fe=_0x1fc605?0x0:_0x2f6bf1['offset'];var _0x3a3e77=_0x1fc605?_0x375d06[_0x75a5('0x26')]:_0x2f6bf1[_0x75a5('0x23')]+_0x2f6bf1['limit'];var _0x370419;if(_0x3a3e77>=_0x5d035d){_0x3a3e77=_0x5d035d;_0x370419=0xc8;}else{_0x370419=0xce;}_0x3c457e[_0x75a5('0x20')](_0x370419);return _0x3c457e[_0x75a5('0x27')](_0x75a5('0x28'),_0x40a5fe+'-'+_0x3a3e77+'/'+_0x5d035d)[_0x75a5('0x22')](_0x375d06);}return null;};}function patchUpdates(_0x39459a){return function(_0x369ba2){try{jsonpatch[_0x75a5('0x29')](_0x369ba2,_0x39459a,!![]);}catch(_0x2d69fd){return BPromise[_0x75a5('0x2a')](_0x2d69fd);}return _0x369ba2[_0x75a5('0x2b')]();};}function saveUpdates(_0x4ea76a,_0x450724){return function(_0x1638ad){if(_0x1638ad){return _0x1638ad[_0x75a5('0x2c')](_0x4ea76a)['then'](function(_0x1fae25){return _0x1fae25;});}return null;};}function removeEntity(_0x12d275,_0x2a8623){return function(_0x11d27c){if(_0x11d27c){return _0x11d27c[_0x75a5('0x2d')]()[_0x75a5('0x2e')](function(){_0x12d275[_0x75a5('0x20')](0xcc)[_0x75a5('0x21')]();});}};}function handleEntityNotFound(_0x5ce792,_0x5c737c){return function(_0x2d6be9){if(!_0x2d6be9){_0x5ce792[_0x75a5('0x1f')](0x194);}return _0x2d6be9;};}function handleError(_0x197562,_0x52c958){_0x52c958=_0x52c958||0x1f4;return function(_0xadd1d){logger[_0x75a5('0x2f')](_0xadd1d[_0x75a5('0x30')]);if(_0xadd1d[_0x75a5('0x31')]){delete _0xadd1d[_0x75a5('0x31')];}_0x197562['status'](_0x52c958)['send'](_0xadd1d);};}exports['index']=function(_0x539beb,_0x12c4f4){var _0x188bc0={},_0x16955e={},_0x22668e={'count':0x0,'rows':[]};var _0x4c3395=_[_0x75a5('0x32')](db['ChatGroup'][_0x75a5('0x33')],function(_0x530807){return{'name':_0x530807[_0x75a5('0x34')],'type':_0x530807[_0x75a5('0x35')][_0x75a5('0x36')]};});_0x16955e['model']=_[_0x75a5('0x32')](_0x4c3395,_0x75a5('0x31'));_0x16955e[_0x75a5('0x37')]=_[_0x75a5('0x38')](_0x539beb[_0x75a5('0x37')]);_0x16955e['filters']=_['intersection'](_0x16955e[_0x75a5('0x39')],_0x16955e['query']);_0x188bc0[_0x75a5('0x3a')]=_[_0x75a5('0x3b')](_0x16955e[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x539beb[_0x75a5('0x37')][_0x75a5('0x3c')]));_0x188bc0[_0x75a5('0x3a')]=_0x188bc0[_0x75a5('0x3a')][_0x75a5('0x3d')]?_0x188bc0[_0x75a5('0x3a')]:_0x16955e[_0x75a5('0x39')];if(!_0x539beb['query'][_0x75a5('0x3e')](_0x75a5('0x3f'))){_0x188bc0[_0x75a5('0x25')]=qs[_0x75a5('0x25')](_0x539beb[_0x75a5('0x37')]['limit']);_0x188bc0[_0x75a5('0x23')]=qs[_0x75a5('0x23')](_0x539beb[_0x75a5('0x37')][_0x75a5('0x23')]);}_0x188bc0[_0x75a5('0x40')]=qs[_0x75a5('0x41')](_0x539beb[_0x75a5('0x37')]['sort']);_0x188bc0[_0x75a5('0x42')]=qs[_0x75a5('0x43')](_['pick'](_0x539beb[_0x75a5('0x37')],_0x16955e[_0x75a5('0x43')]),_0x4c3395);if(_0x539beb[_0x75a5('0x37')][_0x75a5('0x44')]){_0x188bc0[_0x75a5('0x42')]=_[_0x75a5('0x45')](_0x188bc0[_0x75a5('0x42')],{'$or':_[_0x75a5('0x32')](_0x4c3395,function(_0x4e7c54){if(_0x4e7c54['type']!==_0x75a5('0x46')){var _0x13de73={};_0x13de73[_0x4e7c54[_0x75a5('0x31')]]={'$like':'%'+_0x539beb[_0x75a5('0x37')][_0x75a5('0x44')]+'%'};return _0x13de73;}})});}_0x188bc0=_['merge']({},_0x188bc0,_0x539beb[_0x75a5('0x47')]);var _0x1d921b={'where':_0x188bc0['where']};return db[_0x75a5('0x48')][_0x75a5('0x26')](_0x1d921b)['then'](function(_0x12e5bb){_0x22668e[_0x75a5('0x26')]=_0x12e5bb;if(_0x539beb['query'][_0x75a5('0x49')]){_0x188bc0[_0x75a5('0x4a')]=[{'all':!![]}];}return db[_0x75a5('0x48')][_0x75a5('0x4b')](_0x188bc0);})[_0x75a5('0x2e')](function(_0x4e76da){_0x22668e['rows']=_0x4e76da;return _0x22668e;})[_0x75a5('0x2e')](respondWithFilteredResult(_0x12c4f4,_0x188bc0))[_0x75a5('0x4c')](handleError(_0x12c4f4,null));};exports[_0x75a5('0x4d')]=function(_0x5bf3bb,_0x5cddcf){var _0x8a9866={'raw':!![],'where':{'id':_0x5bf3bb[_0x75a5('0x4e')]['id']}},_0x32c20b={};_0x32c20b[_0x75a5('0x39')]=_[_0x75a5('0x38')](db[_0x75a5('0x48')][_0x75a5('0x33')]);_0x32c20b['query']=_['keys'](_0x5bf3bb[_0x75a5('0x37')]);_0x32c20b['filters']=_['intersection'](_0x32c20b[_0x75a5('0x39')],_0x32c20b['query']);_0x8a9866[_0x75a5('0x3a')]=_[_0x75a5('0x3b')](_0x32c20b[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x5bf3bb[_0x75a5('0x37')][_0x75a5('0x3c')]));_0x8a9866['attributes']=_0x8a9866[_0x75a5('0x3a')][_0x75a5('0x3d')]?_0x8a9866[_0x75a5('0x3a')]:_0x32c20b[_0x75a5('0x39')];if(_0x5bf3bb['query']['includeAll']){_0x8a9866[_0x75a5('0x4a')]=[{'all':!![]}];}_0x8a9866=_[_0x75a5('0x45')]({},_0x8a9866,_0x5bf3bb[_0x75a5('0x47')]);return db['ChatGroup'][_0x75a5('0x4f')](_0x8a9866)[_0x75a5('0x2e')](handleEntityNotFound(_0x5cddcf,null))[_0x75a5('0x2e')](respondWithResult(_0x5cddcf,null))['catch'](handleError(_0x5cddcf,null));};exports['create']=function(_0x187663,_0x7772ce){return db['ChatGroup']['create'](_0x187663[_0x75a5('0x50')],{})[_0x75a5('0x2e')](respondWithResult(_0x7772ce,0xc9))[_0x75a5('0x4c')](handleError(_0x7772ce,null));};exports[_0x75a5('0x2c')]=function(_0x302fa9,_0x3afd84){if(_0x302fa9[_0x75a5('0x50')]['id']){delete _0x302fa9['body']['id'];}return db[_0x75a5('0x48')][_0x75a5('0x4f')]({'where':{'id':_0x302fa9['params']['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x3afd84,null))[_0x75a5('0x2e')](saveUpdates(_0x302fa9[_0x75a5('0x50')],null))[_0x75a5('0x2e')](respondWithResult(_0x3afd84,null))[_0x75a5('0x4c')](handleError(_0x3afd84,null));};exports['destroy']=function(_0x225acd,_0x4901c5){return db[_0x75a5('0x48')][_0x75a5('0x4f')]({'where':{'id':_0x225acd[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x4901c5,null))[_0x75a5('0x2e')](removeEntity(_0x4901c5,null))['catch'](handleError(_0x4901c5,null));};exports[_0x75a5('0x51')]=function(_0x5def8f,_0x1e909f){return db[_0x75a5('0x48')][_0x75a5('0x51')]()[_0x75a5('0x2e')](respondWithResult(_0x1e909f,null))[_0x75a5('0x4c')](handleError(_0x1e909f,null));};exports[_0x75a5('0x52')]=function(_0xcb9fbf,_0x38df2e,_0x569dd1){return db[_0x75a5('0x53')][_0x75a5('0x26')]({'where':{'ChatGroupId':_0xcb9fbf[_0x75a5('0x4e')]['id'],'ToId':_0xcb9fbf[_0x75a5('0x54')]['id'],'read':![]}})['then'](function(_0x12bad7){return{'id':_[_0x75a5('0x55')](_0xcb9fbf[_0x75a5('0x4e')]['id']),'count':_0x12bad7};})[_0x75a5('0x2e')](respondWithResult(_0x38df2e,null))[_0x75a5('0x4c')](handleError(_0x38df2e,null));};exports[_0x75a5('0x56')]=function(_0x82dcc2,_0x47e01c,_0x42e2d1){return db[_0x75a5('0x48')][_0x75a5('0x4f')]({'where':{'id':_0x82dcc2[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x47e01c,null))[_0x75a5('0x2e')](function(_0x3faa9c){if(_0x3faa9c){return _0x3faa9c[_0x75a5('0x56')](_0x82dcc2[_0x75a5('0x50')][_0x75a5('0x57')],_[_0x75a5('0x58')](_0x82dcc2[_0x75a5('0x50')],[_0x75a5('0x57'),'id'])||{});}})['then'](respondWithResult(_0x47e01c,null))[_0x75a5('0x4c')](handleError(_0x47e01c,null));};exports[_0x75a5('0x59')]=function(_0x1ab7ee,_0x87df24,_0xd63550){var _0x55c715={};var _0xfe3c16={};var _0x1f6386;var _0x2514a5;return db[_0x75a5('0x48')][_0x75a5('0x5a')]({'where':{'id':_0x1ab7ee[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x87df24,null))[_0x75a5('0x2e')](function(_0x33efd8){if(_0x33efd8){_0x1f6386=_0x33efd8;_0xfe3c16['model']=_[_0x75a5('0x38')](db[_0x75a5('0x5b')]['rawAttributes']);_0xfe3c16[_0x75a5('0x37')]=_[_0x75a5('0x38')](_0x1ab7ee[_0x75a5('0x37')]);_0xfe3c16[_0x75a5('0x43')]=_[_0x75a5('0x3b')](_0xfe3c16[_0x75a5('0x39')],_0xfe3c16['query']);_0x55c715[_0x75a5('0x3a')]=_['intersection'](_0xfe3c16[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x1ab7ee[_0x75a5('0x37')][_0x75a5('0x3c')]));_0x55c715[_0x75a5('0x3a')]=_0x55c715['attributes'][_0x75a5('0x3d')]?_0x55c715[_0x75a5('0x3a')]:_0xfe3c16[_0x75a5('0x39')];_0x55c715[_0x75a5('0x40')]=qs[_0x75a5('0x41')](_0x1ab7ee[_0x75a5('0x37')]['sort']);_0x55c715[_0x75a5('0x42')]=qs[_0x75a5('0x43')](_[_0x75a5('0x5c')](_0x1ab7ee['query'],_0xfe3c16[_0x75a5('0x43')]));if(_0x1ab7ee[_0x75a5('0x37')]['filter']){_0x55c715['where']=_[_0x75a5('0x45')](_0x55c715[_0x75a5('0x42')],{'$or':_[_0x75a5('0x32')](_0x55c715[_0x75a5('0x3a')],function(_0x3c8bd1){var _0x55d33e={};_0x55d33e[_0x3c8bd1]={'$like':'%'+_0x1ab7ee['query']['filter']+'%'};return _0x55d33e;})});}_0x55c715=_[_0x75a5('0x45')]({},_0x55c715,_0x1ab7ee[_0x75a5('0x47')]);return _0x1f6386[_0x75a5('0x59')](_0x55c715);}})[_0x75a5('0x2e')](function(_0x227035){if(_0x227035){_0x2514a5=_0x227035['length'];if(!_0x1ab7ee[_0x75a5('0x37')][_0x75a5('0x3e')](_0x75a5('0x3f'))){_0x55c715['limit']=qs[_0x75a5('0x25')](_0x1ab7ee['query'][_0x75a5('0x25')]);_0x55c715['offset']=qs[_0x75a5('0x23')](_0x1ab7ee['query'][_0x75a5('0x23')]);}return _0x1f6386[_0x75a5('0x59')](_0x55c715);}})['then'](function(_0xfde669){if(_0xfde669){return _0xfde669?{'count':_0x2514a5,'rows':_0xfde669}:null;}})[_0x75a5('0x2e')](respondWithResult(_0x87df24,null))[_0x75a5('0x4c')](handleError(_0x87df24,null));};exports[_0x75a5('0x5d')]=function(_0x5cc0cf,_0x4c6e16,_0x2d3e35){return db['ChatGroup'][_0x75a5('0x4f')]({'where':{'id':_0x5cc0cf['params']['id']}})['then'](handleEntityNotFound(_0x4c6e16,null))['then'](function(_0x3356e2){if(_0x3356e2){return _0x3356e2[_0x75a5('0x5d')](_0x5cc0cf[_0x75a5('0x37')][_0x75a5('0x57')]);}})[_0x75a5('0x2e')](respondWithStatusCode(_0x4c6e16,null))['catch'](handleError(_0x4c6e16,null));};exports['addMessage']=function(_0x59e6f1,_0x360b12,_0x49601f){if(_0x59e6f1[_0x75a5('0x50')]['id']){delete _0x59e6f1[_0x75a5('0x50')]['id'];}return db['ChatGroup'][_0x75a5('0x4f')]({'where':{'id':_0x59e6f1[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x360b12,null))[_0x75a5('0x2e')](function(_0x4da8ff){if(_0x4da8ff){_0x59e6f1['body'][_0x75a5('0x5e')]=_0x4da8ff['id'];return db[_0x75a5('0x53')][_0x75a5('0x5f')](_0x59e6f1[_0x75a5('0x50')]);}})[_0x75a5('0x2e')](respondWithResult(_0x360b12,null))['catch'](handleError(_0x360b12,null));};exports[_0x75a5('0x60')]=function(_0x374167,_0x27ff72,_0x8ea9ed){var _0x3bfd64={};var _0x3cb1d3={};var _0x179329;var _0x39a899;return db[_0x75a5('0x48')][_0x75a5('0x5a')]({'where':{'id':_0x374167[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x27ff72,null))[_0x75a5('0x2e')](function(_0x89459a){if(_0x89459a){_0x179329=_0x89459a;_0x3cb1d3[_0x75a5('0x39')]=_[_0x75a5('0x38')](db[_0x75a5('0x53')][_0x75a5('0x33')]);_0x3cb1d3['query']=_['keys'](_0x374167[_0x75a5('0x37')]);_0x3cb1d3['filters']=_[_0x75a5('0x3b')](_0x3cb1d3[_0x75a5('0x39')],_0x3cb1d3[_0x75a5('0x37')]);_0x3bfd64[_0x75a5('0x3a')]=_['intersection'](_0x3cb1d3[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x374167['query'][_0x75a5('0x3c')]));_0x3bfd64[_0x75a5('0x3a')]=_0x3bfd64[_0x75a5('0x3a')][_0x75a5('0x3d')]?_0x3bfd64[_0x75a5('0x3a')]:_0x3cb1d3[_0x75a5('0x39')];_0x3bfd64[_0x75a5('0x40')]=qs[_0x75a5('0x41')](_0x374167[_0x75a5('0x37')][_0x75a5('0x41')]);_0x3bfd64[_0x75a5('0x42')]=qs[_0x75a5('0x43')](_[_0x75a5('0x5c')](_0x374167[_0x75a5('0x37')],_0x3cb1d3[_0x75a5('0x43')]));if(_0x374167[_0x75a5('0x37')][_0x75a5('0x44')]){_0x3bfd64[_0x75a5('0x42')]=_['merge'](_0x3bfd64[_0x75a5('0x42')],{'$or':_[_0x75a5('0x32')](_0x3bfd64[_0x75a5('0x3a')],function(_0x4fa5c7){var _0x40c5fb={};_0x40c5fb[_0x4fa5c7]={'$like':'%'+_0x374167[_0x75a5('0x37')][_0x75a5('0x44')]+'%'};return _0x40c5fb;})});}if(_0x374167[_0x75a5('0x37')][_0x75a5('0x61')]){var _0x155902=_0x374167[_0x75a5('0x37')]['$gte'][_0x75a5('0x62')](',');var _0x39ca5a={};_0x39ca5a[_0x155902[0x0]]={'$gte':moment(_0x155902[0x1])[_0x75a5('0x63')](_0x75a5('0x64'))};_0x3bfd64[_0x75a5('0x42')]=_[_0x75a5('0x45')](_0x3bfd64['where'],_0x39ca5a);}_0x3bfd64=_['merge']({},_0x3bfd64,_0x374167[_0x75a5('0x47')]);return _0x179329[_0x75a5('0x60')](_0x3bfd64);}})[_0x75a5('0x2e')](function(_0x359c97){if(_0x359c97){_0x39a899=_0x359c97[_0x75a5('0x3d')];if(!_0x374167[_0x75a5('0x37')][_0x75a5('0x3e')]('nolimit')){_0x3bfd64[_0x75a5('0x25')]=qs[_0x75a5('0x25')](_0x374167['query'][_0x75a5('0x25')]);_0x3bfd64['offset']=qs['offset'](_0x374167[_0x75a5('0x37')]['offset']);}return _0x179329[_0x75a5('0x60')](_0x3bfd64);}})['then'](function(_0x39b884){if(_0x39b884){return _0x39b884?{'count':_0x39a899,'rows':_0x39b884}:null;}})['then'](respondWithResult(_0x27ff72,null))[_0x75a5('0x4c')](handleError(_0x27ff72,null));};
\ No newline at end of file
+var _0x5fda=['error','name','send','map','ChatGroup','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','rows','catch','params','keys','find','create','body','describe','getUnread','user','toInteger','addMembers','pick','getMembers','removeMembers','ChatGroupId','getMessages','findOne','ChatInternalMessage','$gte','split','format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatGroup.socket','register','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus'];(function(_0x30bd17,_0x3285a0){var _0x457c91=function(_0xfa7f69){while(--_0xfa7f69){_0x30bd17['push'](_0x30bd17['shift']());}};_0x457c91(++_0x3285a0);}(_0x5fda,0x8b));var _0xa5fd=function(_0x343dab,_0x134185){_0x343dab=_0x343dab-0x0;var _0xa7e52d=_0x5fda[_0x343dab];return _0xa7e52d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa5fd('0x0'));var jsonpatch=require(_0xa5fd('0x1'));var rp=require(_0xa5fd('0x2'));var moment=require('moment');var BPromise=require(_0xa5fd('0x3'));var Mustache=require(_0xa5fd('0x4'));var util=require('util');var path=require(_0xa5fd('0x5'));var sox=require('sox');var csv=require(_0xa5fd('0x6'));var ejs=require(_0xa5fd('0x7'));var fs=require('fs');var fs_extra=require(_0xa5fd('0x8'));var _=require(_0xa5fd('0x9'));var squel=require(_0xa5fd('0xa'));var crypto=require(_0xa5fd('0xb'));var jsforce=require(_0xa5fd('0xc'));var deskjs=require(_0xa5fd('0xd'));var toCsv=require(_0xa5fd('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa5fd('0xe'));var authService=require(_0xa5fd('0xf'));var qs=require(_0xa5fd('0x10'));var as=require(_0xa5fd('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa5fd('0x12'))('api');var utils=require(_0xa5fd('0x13'));var config=require(_0xa5fd('0x14'));var licenseUtil=require(_0xa5fd('0x15'));var db=require(_0xa5fd('0x16'))['db'];config[_0xa5fd('0x17')]=_[_0xa5fd('0x18')](config[_0xa5fd('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xa5fd('0x19'))(new Redis(config[_0xa5fd('0x17')]));require(_0xa5fd('0x1a'))[_0xa5fd('0x1b')](socket);function respondWithStatusCode(_0x310c45,_0x376304){_0x376304=_0x376304||0xcc;return function(_0x892d9b){if(_0x892d9b){return _0x310c45['sendStatus'](_0x376304);}return _0x310c45['status'](_0x376304)[_0xa5fd('0x1c')]();};}function respondWithResult(_0x54aa43,_0x4d52ad){_0x4d52ad=_0x4d52ad||0xc8;return function(_0x55565f){if(_0x55565f){return _0x54aa43[_0xa5fd('0x1d')](_0x4d52ad)[_0xa5fd('0x1e')](_0x55565f);}};}function respondWithFilteredResult(_0x172bb,_0xae3685){return function(_0x237c70){if(_0x237c70){var _0x358fee=typeof _0xae3685[_0xa5fd('0x1f')]===_0xa5fd('0x20')&&typeof _0xae3685[_0xa5fd('0x21')]===_0xa5fd('0x20');var _0x46a72f=_0x237c70[_0xa5fd('0x22')];var _0xd67ba=_0x358fee?0x0:_0xae3685['offset'];var _0x34e50d=_0x358fee?_0x237c70[_0xa5fd('0x22')]:_0xae3685[_0xa5fd('0x1f')]+_0xae3685[_0xa5fd('0x21')];var _0xc892fa;if(_0x34e50d>=_0x46a72f){_0x34e50d=_0x46a72f;_0xc892fa=0xc8;}else{_0xc892fa=0xce;}_0x172bb['status'](_0xc892fa);return _0x172bb['set'](_0xa5fd('0x23'),_0xd67ba+'-'+_0x34e50d+'/'+_0x46a72f)[_0xa5fd('0x1e')](_0x237c70);}return null;};}function patchUpdates(_0xda17e8){return function(_0x3368a1){try{jsonpatch[_0xa5fd('0x24')](_0x3368a1,_0xda17e8,!![]);}catch(_0x24c026){return BPromise[_0xa5fd('0x25')](_0x24c026);}return _0x3368a1[_0xa5fd('0x26')]();};}function saveUpdates(_0x5e59b3,_0x532b5d){return function(_0x30fc91){if(_0x30fc91){return _0x30fc91[_0xa5fd('0x27')](_0x5e59b3)[_0xa5fd('0x28')](function(_0x50230c){return _0x50230c;});}return null;};}function removeEntity(_0x19d424,_0x1382fe){return function(_0xd618e6){if(_0xd618e6){return _0xd618e6[_0xa5fd('0x29')]()[_0xa5fd('0x28')](function(){_0x19d424[_0xa5fd('0x1d')](0xcc)[_0xa5fd('0x1c')]();});}};}function handleEntityNotFound(_0x2d9c15,_0x15da30){return function(_0x5e9f59){if(!_0x5e9f59){_0x2d9c15[_0xa5fd('0x2a')](0x194);}return _0x5e9f59;};}function handleError(_0x9c16de,_0x324899){_0x324899=_0x324899||0x1f4;return function(_0x4e09fc){logger[_0xa5fd('0x2b')](_0x4e09fc['stack']);if(_0x4e09fc[_0xa5fd('0x2c')]){delete _0x4e09fc[_0xa5fd('0x2c')];}_0x9c16de[_0xa5fd('0x1d')](_0x324899)[_0xa5fd('0x2d')](_0x4e09fc);};}exports['index']=function(_0x347fe9,_0x17f7d6){var _0x353396={},_0xec107b={},_0x1d61ad={'count':0x0,'rows':[]};var _0x31494d=_[_0xa5fd('0x2e')](db[_0xa5fd('0x2f')][_0xa5fd('0x30')],function(_0x44d638){return{'name':_0x44d638[_0xa5fd('0x31')],'type':_0x44d638[_0xa5fd('0x32')][_0xa5fd('0x33')]};});_0xec107b[_0xa5fd('0x34')]=_[_0xa5fd('0x2e')](_0x31494d,_0xa5fd('0x2c'));_0xec107b[_0xa5fd('0x35')]=_['keys'](_0x347fe9['query']);_0xec107b[_0xa5fd('0x36')]=_[_0xa5fd('0x37')](_0xec107b[_0xa5fd('0x34')],_0xec107b[_0xa5fd('0x35')]);_0x353396[_0xa5fd('0x38')]=_[_0xa5fd('0x37')](_0xec107b[_0xa5fd('0x34')],qs[_0xa5fd('0x39')](_0x347fe9['query']['fields']));_0x353396[_0xa5fd('0x38')]=_0x353396[_0xa5fd('0x38')][_0xa5fd('0x3a')]?_0x353396[_0xa5fd('0x38')]:_0xec107b[_0xa5fd('0x34')];if(!_0x347fe9[_0xa5fd('0x35')][_0xa5fd('0x3b')](_0xa5fd('0x3c'))){_0x353396[_0xa5fd('0x21')]=qs[_0xa5fd('0x21')](_0x347fe9[_0xa5fd('0x35')]['limit']);_0x353396[_0xa5fd('0x1f')]=qs[_0xa5fd('0x1f')](_0x347fe9[_0xa5fd('0x35')][_0xa5fd('0x1f')]);}_0x353396[_0xa5fd('0x3d')]=qs[_0xa5fd('0x3e')](_0x347fe9[_0xa5fd('0x35')][_0xa5fd('0x3e')]);_0x353396[_0xa5fd('0x3f')]=qs[_0xa5fd('0x36')](_['pick'](_0x347fe9[_0xa5fd('0x35')],_0xec107b[_0xa5fd('0x36')]),_0x31494d);if(_0x347fe9['query'][_0xa5fd('0x40')]){_0x353396[_0xa5fd('0x3f')]=_[_0xa5fd('0x41')](_0x353396[_0xa5fd('0x3f')],{'$or':_[_0xa5fd('0x2e')](_0x31494d,function(_0x19c04e){if(_0x19c04e[_0xa5fd('0x32')]!==_0xa5fd('0x42')){var _0x243ab8={};_0x243ab8[_0x19c04e[_0xa5fd('0x2c')]]={'$like':'%'+_0x347fe9[_0xa5fd('0x35')][_0xa5fd('0x40')]+'%'};return _0x243ab8;}})});}_0x353396=_[_0xa5fd('0x41')]({},_0x353396,_0x347fe9[_0xa5fd('0x43')]);var _0x3e06d4={'where':_0x353396[_0xa5fd('0x3f')]};return db[_0xa5fd('0x2f')][_0xa5fd('0x22')](_0x3e06d4)[_0xa5fd('0x28')](function(_0x45039a){_0x1d61ad[_0xa5fd('0x22')]=_0x45039a;if(_0x347fe9[_0xa5fd('0x35')]['includeAll']){_0x353396[_0xa5fd('0x44')]=[{'all':!![]}];}return db[_0xa5fd('0x2f')]['findAll'](_0x353396);})[_0xa5fd('0x28')](function(_0x4e9a01){_0x1d61ad[_0xa5fd('0x45')]=_0x4e9a01;return _0x1d61ad;})[_0xa5fd('0x28')](respondWithFilteredResult(_0x17f7d6,_0x353396))[_0xa5fd('0x46')](handleError(_0x17f7d6,null));};exports['show']=function(_0x58e76c,_0x43e6fc){var _0x42c84f={'raw':!![],'where':{'id':_0x58e76c[_0xa5fd('0x47')]['id']}},_0x21cc98={};_0x21cc98[_0xa5fd('0x34')]=_['keys'](db[_0xa5fd('0x2f')][_0xa5fd('0x30')]);_0x21cc98[_0xa5fd('0x35')]=_[_0xa5fd('0x48')](_0x58e76c['query']);_0x21cc98[_0xa5fd('0x36')]=_[_0xa5fd('0x37')](_0x21cc98[_0xa5fd('0x34')],_0x21cc98[_0xa5fd('0x35')]);_0x42c84f[_0xa5fd('0x38')]=_[_0xa5fd('0x37')](_0x21cc98[_0xa5fd('0x34')],qs[_0xa5fd('0x39')](_0x58e76c[_0xa5fd('0x35')]['fields']));_0x42c84f['attributes']=_0x42c84f['attributes'][_0xa5fd('0x3a')]?_0x42c84f[_0xa5fd('0x38')]:_0x21cc98[_0xa5fd('0x34')];if(_0x58e76c[_0xa5fd('0x35')]['includeAll']){_0x42c84f[_0xa5fd('0x44')]=[{'all':!![]}];}_0x42c84f=_[_0xa5fd('0x41')]({},_0x42c84f,_0x58e76c[_0xa5fd('0x43')]);return db[_0xa5fd('0x2f')][_0xa5fd('0x49')](_0x42c84f)[_0xa5fd('0x28')](handleEntityNotFound(_0x43e6fc,null))['then'](respondWithResult(_0x43e6fc,null))['catch'](handleError(_0x43e6fc,null));};exports[_0xa5fd('0x4a')]=function(_0xd37a0f,_0x232bfc){return db[_0xa5fd('0x2f')][_0xa5fd('0x4a')](_0xd37a0f[_0xa5fd('0x4b')],{})[_0xa5fd('0x28')](respondWithResult(_0x232bfc,0xc9))[_0xa5fd('0x46')](handleError(_0x232bfc,null));};exports[_0xa5fd('0x27')]=function(_0x37687b,_0x1adfdb){if(_0x37687b[_0xa5fd('0x4b')]['id']){delete _0x37687b[_0xa5fd('0x4b')]['id'];}return db['ChatGroup'][_0xa5fd('0x49')]({'where':{'id':_0x37687b[_0xa5fd('0x47')]['id']}})['then'](handleEntityNotFound(_0x1adfdb,null))[_0xa5fd('0x28')](saveUpdates(_0x37687b[_0xa5fd('0x4b')],null))['then'](respondWithResult(_0x1adfdb,null))[_0xa5fd('0x46')](handleError(_0x1adfdb,null));};exports[_0xa5fd('0x29')]=function(_0x325bae,_0x56c7cc){return db[_0xa5fd('0x2f')][_0xa5fd('0x49')]({'where':{'id':_0x325bae['params']['id']}})[_0xa5fd('0x28')](handleEntityNotFound(_0x56c7cc,null))[_0xa5fd('0x28')](removeEntity(_0x56c7cc,null))[_0xa5fd('0x46')](handleError(_0x56c7cc,null));};exports[_0xa5fd('0x4c')]=function(_0x1dfd0a,_0x30948c){return db[_0xa5fd('0x2f')][_0xa5fd('0x4c')]()[_0xa5fd('0x28')](respondWithResult(_0x30948c,null))[_0xa5fd('0x46')](handleError(_0x30948c,null));};exports[_0xa5fd('0x4d')]=function(_0x50c926,_0x4f0fe1,_0x179127){return db['ChatInternalMessage']['count']({'where':{'ChatGroupId':_0x50c926['params']['id'],'ToId':_0x50c926[_0xa5fd('0x4e')]['id'],'read':![]}})[_0xa5fd('0x28')](function(_0x1d67c2){return{'id':_[_0xa5fd('0x4f')](_0x50c926[_0xa5fd('0x47')]['id']),'count':_0x1d67c2};})['then'](respondWithResult(_0x4f0fe1,null))[_0xa5fd('0x46')](handleError(_0x4f0fe1,null));};exports['addMembers']=function(_0x59a3f8,_0x227701,_0x395965){return db[_0xa5fd('0x2f')][_0xa5fd('0x49')]({'where':{'id':_0x59a3f8[_0xa5fd('0x47')]['id']}})[_0xa5fd('0x28')](handleEntityNotFound(_0x227701,null))['then'](function(_0x443f78){if(_0x443f78){return _0x443f78[_0xa5fd('0x50')](_0x59a3f8[_0xa5fd('0x4b')]['ids'],_['omit'](_0x59a3f8[_0xa5fd('0x4b')],['ids','id'])||{});}})[_0xa5fd('0x28')](respondWithResult(_0x227701,null))[_0xa5fd('0x46')](handleError(_0x227701,null));};exports['getMembers']=function(_0x6c9a55,_0x25ac70,_0x235dba){var _0x1a53f5={};var _0x2e95d4={};var _0x2f0927;var _0x106bf6;return db[_0xa5fd('0x2f')]['findOne']({'where':{'id':_0x6c9a55[_0xa5fd('0x47')]['id']}})[_0xa5fd('0x28')](handleEntityNotFound(_0x25ac70,null))[_0xa5fd('0x28')](function(_0xa3ea41){if(_0xa3ea41){_0x2f0927=_0xa3ea41;_0x2e95d4[_0xa5fd('0x34')]=_[_0xa5fd('0x48')](db['User'][_0xa5fd('0x30')]);_0x2e95d4[_0xa5fd('0x35')]=_['keys'](_0x6c9a55[_0xa5fd('0x35')]);_0x2e95d4[_0xa5fd('0x36')]=_['intersection'](_0x2e95d4[_0xa5fd('0x34')],_0x2e95d4[_0xa5fd('0x35')]);_0x1a53f5[_0xa5fd('0x38')]=_[_0xa5fd('0x37')](_0x2e95d4[_0xa5fd('0x34')],qs[_0xa5fd('0x39')](_0x6c9a55[_0xa5fd('0x35')][_0xa5fd('0x39')]));_0x1a53f5[_0xa5fd('0x38')]=_0x1a53f5[_0xa5fd('0x38')][_0xa5fd('0x3a')]?_0x1a53f5[_0xa5fd('0x38')]:_0x2e95d4[_0xa5fd('0x34')];_0x1a53f5[_0xa5fd('0x3d')]=qs[_0xa5fd('0x3e')](_0x6c9a55[_0xa5fd('0x35')]['sort']);_0x1a53f5[_0xa5fd('0x3f')]=qs['filters'](_[_0xa5fd('0x51')](_0x6c9a55[_0xa5fd('0x35')],_0x2e95d4[_0xa5fd('0x36')]));if(_0x6c9a55[_0xa5fd('0x35')]['filter']){_0x1a53f5['where']=_[_0xa5fd('0x41')](_0x1a53f5[_0xa5fd('0x3f')],{'$or':_[_0xa5fd('0x2e')](_0x1a53f5[_0xa5fd('0x38')],function(_0x53ab4a){var _0x2104c9={};_0x2104c9[_0x53ab4a]={'$like':'%'+_0x6c9a55[_0xa5fd('0x35')][_0xa5fd('0x40')]+'%'};return _0x2104c9;})});}_0x1a53f5=_[_0xa5fd('0x41')]({},_0x1a53f5,_0x6c9a55[_0xa5fd('0x43')]);return _0x2f0927['getMembers'](_0x1a53f5);}})['then'](function(_0x5bdff1){if(_0x5bdff1){_0x106bf6=_0x5bdff1[_0xa5fd('0x3a')];if(!_0x6c9a55['query']['hasOwnProperty'](_0xa5fd('0x3c'))){_0x1a53f5[_0xa5fd('0x21')]=qs[_0xa5fd('0x21')](_0x6c9a55[_0xa5fd('0x35')][_0xa5fd('0x21')]);_0x1a53f5['offset']=qs['offset'](_0x6c9a55[_0xa5fd('0x35')][_0xa5fd('0x1f')]);}return _0x2f0927[_0xa5fd('0x52')](_0x1a53f5);}})[_0xa5fd('0x28')](function(_0x4ce9ea){if(_0x4ce9ea){return _0x4ce9ea?{'count':_0x106bf6,'rows':_0x4ce9ea}:null;}})[_0xa5fd('0x28')](respondWithResult(_0x25ac70,null))[_0xa5fd('0x46')](handleError(_0x25ac70,null));};exports[_0xa5fd('0x53')]=function(_0x2d4cdd,_0x9b920d,_0x4d0a17){return db[_0xa5fd('0x2f')]['find']({'where':{'id':_0x2d4cdd['params']['id']}})[_0xa5fd('0x28')](handleEntityNotFound(_0x9b920d,null))[_0xa5fd('0x28')](function(_0x4188ab){if(_0x4188ab){return _0x4188ab[_0xa5fd('0x53')](_0x2d4cdd[_0xa5fd('0x35')]['ids']);}})[_0xa5fd('0x28')](respondWithStatusCode(_0x9b920d,null))['catch'](handleError(_0x9b920d,null));};exports['addMessage']=function(_0x2a338a,_0x11a803,_0x3b2e25){if(_0x2a338a['body']['id']){delete _0x2a338a[_0xa5fd('0x4b')]['id'];}return db[_0xa5fd('0x2f')][_0xa5fd('0x49')]({'where':{'id':_0x2a338a[_0xa5fd('0x47')]['id']}})['then'](handleEntityNotFound(_0x11a803,null))[_0xa5fd('0x28')](function(_0x701382){if(_0x701382){_0x2a338a[_0xa5fd('0x4b')][_0xa5fd('0x54')]=_0x701382['id'];return db['ChatInternalMessage']['create'](_0x2a338a['body']);}})['then'](respondWithResult(_0x11a803,null))[_0xa5fd('0x46')](handleError(_0x11a803,null));};exports[_0xa5fd('0x55')]=function(_0x180cd2,_0x2c0358,_0x4db3bd){var _0x300b74={};var _0x354dbf={};var _0x550636;var _0xc797b6;return db[_0xa5fd('0x2f')][_0xa5fd('0x56')]({'where':{'id':_0x180cd2[_0xa5fd('0x47')]['id']}})[_0xa5fd('0x28')](handleEntityNotFound(_0x2c0358,null))[_0xa5fd('0x28')](function(_0x3ae117){if(_0x3ae117){_0x550636=_0x3ae117;_0x354dbf['model']=_[_0xa5fd('0x48')](db[_0xa5fd('0x57')][_0xa5fd('0x30')]);_0x354dbf[_0xa5fd('0x35')]=_['keys'](_0x180cd2['query']);_0x354dbf[_0xa5fd('0x36')]=_['intersection'](_0x354dbf[_0xa5fd('0x34')],_0x354dbf['query']);_0x300b74['attributes']=_[_0xa5fd('0x37')](_0x354dbf[_0xa5fd('0x34')],qs[_0xa5fd('0x39')](_0x180cd2[_0xa5fd('0x35')]['fields']));_0x300b74[_0xa5fd('0x38')]=_0x300b74[_0xa5fd('0x38')][_0xa5fd('0x3a')]?_0x300b74[_0xa5fd('0x38')]:_0x354dbf[_0xa5fd('0x34')];_0x300b74[_0xa5fd('0x3d')]=qs[_0xa5fd('0x3e')](_0x180cd2[_0xa5fd('0x35')][_0xa5fd('0x3e')]);_0x300b74['where']=qs['filters'](_[_0xa5fd('0x51')](_0x180cd2[_0xa5fd('0x35')],_0x354dbf[_0xa5fd('0x36')]));if(_0x180cd2[_0xa5fd('0x35')][_0xa5fd('0x40')]){_0x300b74[_0xa5fd('0x3f')]=_[_0xa5fd('0x41')](_0x300b74[_0xa5fd('0x3f')],{'$or':_[_0xa5fd('0x2e')](_0x300b74[_0xa5fd('0x38')],function(_0x51c777){var _0x84ec72={};_0x84ec72[_0x51c777]={'$like':'%'+_0x180cd2['query']['filter']+'%'};return _0x84ec72;})});}if(_0x180cd2[_0xa5fd('0x35')][_0xa5fd('0x58')]){var _0x40385d=_0x180cd2[_0xa5fd('0x35')]['$gte'][_0xa5fd('0x59')](',');var _0x49f65e={};_0x49f65e[_0x40385d[0x0]]={'$gte':moment(_0x40385d[0x1])[_0xa5fd('0x5a')]('YYYY-MM-DD\x20HH:mm:ss')};_0x300b74['where']=_[_0xa5fd('0x41')](_0x300b74[_0xa5fd('0x3f')],_0x49f65e);}_0x300b74=_['merge']({},_0x300b74,_0x180cd2['options']);return _0x550636[_0xa5fd('0x55')](_0x300b74);}})[_0xa5fd('0x28')](function(_0xfa84db){if(_0xfa84db){_0xc797b6=_0xfa84db[_0xa5fd('0x3a')];if(!_0x180cd2[_0xa5fd('0x35')][_0xa5fd('0x3b')](_0xa5fd('0x3c'))){_0x300b74[_0xa5fd('0x21')]=qs[_0xa5fd('0x21')](_0x180cd2[_0xa5fd('0x35')][_0xa5fd('0x21')]);_0x300b74[_0xa5fd('0x1f')]=qs[_0xa5fd('0x1f')](_0x180cd2[_0xa5fd('0x35')]['offset']);}return _0x550636[_0xa5fd('0x55')](_0x300b74);}})[_0xa5fd('0x28')](function(_0xcfd00c){if(_0xcfd00c){return _0xcfd00c?{'count':_0xc797b6,'rows':_0xcfd00c}:null;}})['then'](respondWithResult(_0x2c0358,null))[_0xa5fd('0x46')](handleError(_0x2c0358,null));};
\ No newline at end of file
index 47a6e69..c684e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b43=['events','../../mysqldb','ChatGroup','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2f2a9d,_0x2b700b){var _0x13ca6a=function(_0x47a72b){while(--_0x47a72b){_0x2f2a9d['push'](_0x2f2a9d['shift']());}};_0x13ca6a(++_0x2b700b);}(_0x8b43,0x7e));var _0x38b4=function(_0x20cdb8,_0x432d70){_0x20cdb8=_0x20cdb8-0x0;var _0x4623bb=_0x8b43[_0x20cdb8];return _0x4623bb;};'use strict';var EventEmitter=require(_0x38b4('0x0'));var ChatGroup=require(_0x38b4('0x1'))['db'][_0x38b4('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x38b4('0x3'),'afterDestroy':_0x38b4('0x4')};function emitEvent(_0x1a57b5){return function(_0x58d046,_0x1d7c99,_0x560139){ChatGroupEvents[_0x38b4('0x5')](_0x1a57b5+':'+_0x58d046['id'],_0x58d046);ChatGroupEvents[_0x38b4('0x5')](_0x1a57b5,_0x58d046);_0x560139(null);};}for(var e in events){if(events[_0x38b4('0x6')](e)){var event=events[e];ChatGroup[_0x38b4('0x7')](e,emitEvent(event));}}module[_0x38b4('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0x7b84=['events','../../mysqldb','ChatGroup','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x7b84,0x17c));var _0x47b8=function(_0x48adf7,_0x5e5ead){_0x48adf7=_0x48adf7-0x0;var _0x73e75=_0x7b84[_0x48adf7];return _0x73e75;};'use strict';var EventEmitter=require(_0x47b8('0x0'));var ChatGroup=require(_0x47b8('0x1'))['db'][_0x47b8('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x47b8('0x3')](0x0);var events={'afterCreate':_0x47b8('0x4'),'afterUpdate':_0x47b8('0x5'),'afterDestroy':_0x47b8('0x6')};function emitEvent(_0x5c7cda){return function(_0x445a5f,_0x1fa41a,_0x2279ea){ChatGroupEvents[_0x47b8('0x7')](_0x5c7cda+':'+_0x445a5f['id'],_0x445a5f);ChatGroupEvents[_0x47b8('0x7')](_0x5c7cda,_0x445a5f);_0x2279ea(null);};}for(var e in events){if(events[_0x47b8('0x8')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0x47b8('0x9')]=ChatGroupEvents;
\ No newline at end of file
index acc3c2f..b1627ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07a=['moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash','util','../../config/logger','api'];(function(_0x318840,_0x561b1e){var _0x223da4=function(_0x510071){while(--_0x510071){_0x318840['push'](_0x318840['shift']());}};_0x223da4(++_0x561b1e);}(_0xa07a,0x1bc));var _0xaa07=function(_0x52107c,_0x2c7ac3){_0x52107c=_0x52107c-0x0;var _0x5c6298=_0xa07a[_0x52107c];return _0x5c6298;};'use strict';var _=require(_0xaa07('0x0'));var util=require(_0xaa07('0x1'));var logger=require(_0xaa07('0x2'))(_0xaa07('0x3'));var moment=require(_0xaa07('0x4'));var BPromise=require(_0xaa07('0x5'));var rp=require(_0xaa07('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaa07('0x7'));var config=require(_0xaa07('0x8'));var attributes=require(_0xaa07('0x9'));module[_0xaa07('0xa')]=function(_0x4ad831,_0x804601){return _0x4ad831[_0xaa07('0xb')](_0xaa07('0xc'),attributes,{'tableName':_0xaa07('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b9b=['api','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','chat_groups','lodash','util'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x2b9b,0x1c0));var _0xb2b9=function(_0x50c156,_0x34856c){_0x50c156=_0x50c156-0x0;var _0x33c679=_0x2b9b[_0x50c156];return _0x33c679;};'use strict';var _=require(_0xb2b9('0x0'));var util=require(_0xb2b9('0x1'));var logger=require('../../config/logger')(_0xb2b9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb2b9('0x3'));var fs=require('fs');var path=require(_0xb2b9('0x4'));var rimraf=require(_0xb2b9('0x5'));var config=require(_0xb2b9('0x6'));var attributes=require(_0xb2b9('0x7'));module[_0xb2b9('0x8')]=function(_0x5373bd,_0x2c1308){return _0x5373bd['define']('ChatGroup',attributes,{'tableName':_0xb2b9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 16f6a89..14ba440 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8169=['error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','redis','defaults','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x8169,0xd4));var _0x9816=function(_0x4a2130,_0x36a2c5){_0x4a2130=_0x4a2130-0x0;var _0x78dc56=_0x8169[_0x4a2130];return _0x78dc56;};'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});config[_0x9816('0x8')]=_[_0x9816('0x9')](config[_0x9816('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9816('0x8')]));require('./chatGroup.socket')[_0x9816('0xa')](socket);function respondWithRpcPromise(_0x55f668,_0x2f8d70,_0x142259){return new BPromise(function(_0x2a912f,_0x1d1182){return client[_0x9816('0xb')](_0x55f668,_0x142259)[_0x9816('0xc')](function(_0x378aee){logger[_0x9816('0xd')](_0x9816('0xe'),_0x2f8d70,_0x9816('0xf'));logger['debug'](_0x9816('0x10'),_0x2f8d70,_0x9816('0xf'),JSON[_0x9816('0x11')](_0x378aee));if(_0x378aee[_0x9816('0x12')]){if(_0x378aee['error'][_0x9816('0x13')]===0x1f4){logger[_0x9816('0x12')](_0x9816('0xe'),_0x2f8d70,_0x378aee['error'][_0x9816('0x14')]);return _0x1d1182(_0x378aee[_0x9816('0x12')]['message']);}logger[_0x9816('0x12')]('ChatGroup,\x20%s,\x20%s',_0x2f8d70,_0x378aee[_0x9816('0x12')]['message']);return _0x2a912f(_0x378aee[_0x9816('0x12')][_0x9816('0x14')]);}else{logger[_0x9816('0xd')](_0x9816('0xe'),_0x2f8d70,_0x9816('0xf'));_0x2a912f(_0x378aee[_0x9816('0x15')][_0x9816('0x14')]);}})[_0x9816('0x16')](function(_0x45642b){logger[_0x9816('0x12')](_0x9816('0xe'),_0x2f8d70,_0x45642b);_0x1d1182(_0x45642b);});});}
\ No newline at end of file
+var _0xed95=['code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','then','info','ChatGroup,\x20%s,\x20%s','debug','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x2f9348,_0x2d5431){var _0x422b76=function(_0x2a8c56){while(--_0x2a8c56){_0x2f9348['push'](_0x2f9348['shift']());}};_0x422b76(++_0x2d5431);}(_0xed95,0xb9));var _0x5ed9=function(_0x58b436,_0x1380ec){_0x58b436=_0x58b436-0x0;var _0x541f5d=_0xed95[_0x58b436];return _0x541f5d;};'use strict';var _=require(_0x5ed9('0x0'));var util=require(_0x5ed9('0x1'));var moment=require(_0x5ed9('0x2'));var BPromise=require(_0x5ed9('0x3'));var rs=require(_0x5ed9('0x4'));var fs=require('fs');var Redis=require(_0x5ed9('0x5'));var db=require(_0x5ed9('0x6'))['db'];var utils=require(_0x5ed9('0x7'));var logger=require(_0x5ed9('0x8'))(_0x5ed9('0x9'));var config=require(_0x5ed9('0xa'));var jayson=require(_0x5ed9('0xb'));var client=jayson['client']['http']({'port':0x232a});config[_0x5ed9('0xc')]=_[_0x5ed9('0xd')](config[_0x5ed9('0xc')],{'host':_0x5ed9('0xe'),'port':0x18eb});var socket=require(_0x5ed9('0xf'))(new Redis(config[_0x5ed9('0xc')]));require('./chatGroup.socket')['register'](socket);function respondWithRpcPromise(_0x3cbaf0,_0xbe4c01,_0x46fc84){return new BPromise(function(_0x41fc93,_0x526924){return client['request'](_0x3cbaf0,_0x46fc84)[_0x5ed9('0x10')](function(_0x144e86){logger[_0x5ed9('0x11')](_0x5ed9('0x12'),_0xbe4c01,'request\x20sent');logger[_0x5ed9('0x13')](_0x5ed9('0x14'),_0xbe4c01,_0x5ed9('0x15'),JSON['stringify'](_0x144e86));if(_0x144e86['error']){if(_0x144e86[_0x5ed9('0x16')][_0x5ed9('0x17')]===0x1f4){logger['error'](_0x5ed9('0x12'),_0xbe4c01,_0x144e86[_0x5ed9('0x16')]['message']);return _0x526924(_0x144e86['error'][_0x5ed9('0x18')]);}logger[_0x5ed9('0x16')]('ChatGroup,\x20%s,\x20%s',_0xbe4c01,_0x144e86[_0x5ed9('0x16')][_0x5ed9('0x18')]);return _0x41fc93(_0x144e86['error'][_0x5ed9('0x18')]);}else{logger[_0x5ed9('0x11')]('ChatGroup,\x20%s,\x20%s',_0xbe4c01,'request\x20sent');_0x41fc93(_0x144e86['result']['message']);}})[_0x5ed9('0x19')](function(_0x409a26){logger[_0x5ed9('0x16')](_0x5ed9('0x12'),_0xbe4c01,_0x409a26);_0x526924(_0x409a26);});});}
\ No newline at end of file
index 1199f87..508d45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f1=['update','emit','register','length','./chatGroup.events'];(function(_0x4627fb,_0x4d89b8){var _0x1ad65d=function(_0x32a1df){while(--_0x32a1df){_0x4627fb['push'](_0x4627fb['shift']());}};_0x1ad65d(++_0x4d89b8);}(_0x41f1,0x117));var _0x141f=function(_0x5c7158,_0x40146f){_0x5c7158=_0x5c7158-0x0;var _0x526bc4=_0x41f1[_0x5c7158];return _0x526bc4;};'use strict';var ChatGroupEvents=require(_0x141f('0x0'));var events=['save','remove',_0x141f('0x1')];function createListener(_0x428fc2,_0x3be288){return function(_0x2e9bab){_0x3be288[_0x141f('0x2')](_0x428fc2,_0x2e9bab);};}function removeListener(_0x19ef3c,_0x33343c){return function(){ChatGroupEvents['removeListener'](_0x19ef3c,_0x33343c);};}exports[_0x141f('0x3')]=function(_0x5a5241){for(var _0x3340fe=0x0,_0x6dda91=events[_0x141f('0x4')];_0x3340fe<_0x6dda91;_0x3340fe++){var _0x11e6b9=events[_0x3340fe];var _0x2eaa29=createListener('chatGroup:'+_0x11e6b9,_0x5a5241);ChatGroupEvents['on'](_0x11e6b9,_0x2eaa29);}};
\ No newline at end of file
+var _0x96b8=['update','emit','removeListener','length','chatGroup:','./chatGroup.events','save','remove'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x96b8,0x135));var _0x896b=function(_0x2f8b0f,_0x532d7c){_0x2f8b0f=_0x2f8b0f-0x0;var _0x34273d=_0x96b8[_0x2f8b0f];return _0x34273d;};'use strict';var ChatGroupEvents=require(_0x896b('0x0'));var events=[_0x896b('0x1'),_0x896b('0x2'),_0x896b('0x3')];function createListener(_0xa86fe0,_0x37b820){return function(_0x118f73){_0x37b820[_0x896b('0x4')](_0xa86fe0,_0x118f73);};}function removeListener(_0x519387,_0x2cc192){return function(){ChatGroupEvents[_0x896b('0x5')](_0x519387,_0x2cc192);};}exports['register']=function(_0x19c6d8){for(var _0x1e8c41=0x0,_0x2c8876=events[_0x896b('0x6')];_0x1e8c41<_0x2c8876;_0x1e8c41++){var _0x5630b0=events[_0x1e8c41];var _0x403a98=createListener(_0x896b('0x7')+_0x5630b0,_0x19c6d8);ChatGroupEvents['on'](_0x5630b0,_0x403a98);}};
\ No newline at end of file
index 198c06a..23f508b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3919=['Router','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','show','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','path','connect-timeout'];(function(_0x4f79b4,_0x47dba7){var _0x2c7d2c=function(_0x36ebae){while(--_0x36ebae){_0x4f79b4['push'](_0x4f79b4['shift']());}};_0x2c7d2c(++_0x47dba7);}(_0x3919,0x1d8));var _0x9391=function(_0x5309cd,_0x1dca0e){_0x5309cd=_0x5309cd-0x0;var _0x56e3b0=_0x3919[_0x5309cd];return _0x56e3b0;};'use strict';var multer=require(_0x9391('0x0'));var util=require('util');var path=require(_0x9391('0x1'));var timeout=require(_0x9391('0x2'));var express=require('express');var router=express[_0x9391('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9391('0x4'));var config=require('../../config/environment');var controller=require('./chatGroup.controller');router[_0x9391('0x5')]('/',auth[_0x9391('0x6')](),controller[_0x9391('0x7')]);router[_0x9391('0x5')]('/describe',auth[_0x9391('0x6')](),controller[_0x9391('0x8')]);router[_0x9391('0x5')](_0x9391('0x9'),auth[_0x9391('0x6')](),controller[_0x9391('0xa')]);router[_0x9391('0x5')]('/:id/unread',auth[_0x9391('0x6')](),controller[_0x9391('0xb')]);router[_0x9391('0x5')](_0x9391('0xc'),auth[_0x9391('0x6')](),controller[_0x9391('0xd')]);router[_0x9391('0x5')](_0x9391('0xe'),auth[_0x9391('0x6')](),controller[_0x9391('0xf')]);router[_0x9391('0x10')]('/',auth[_0x9391('0x6')](),controller[_0x9391('0x11')]);router[_0x9391('0x10')](_0x9391('0xc'),auth[_0x9391('0x6')](),controller[_0x9391('0x12')]);router[_0x9391('0x10')](_0x9391('0xe'),auth[_0x9391('0x6')](),controller[_0x9391('0x13')]);router[_0x9391('0x14')](_0x9391('0x9'),auth['isAuthenticated'](),controller[_0x9391('0x15')]);router[_0x9391('0x16')](_0x9391('0x9'),auth[_0x9391('0x6')](),controller[_0x9391('0x17')]);router[_0x9391('0x16')](_0x9391('0xc'),auth[_0x9391('0x6')](),controller[_0x9391('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x5cb2=['removeMembers','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','/:id/unread','getMembers','getMessages','post','create','/:id/members','addMembers','addMessage','update','delete'];(function(_0x56d1f0,_0x729ae0){var _0x343bdb=function(_0x3a2a21){while(--_0x3a2a21){_0x56d1f0['push'](_0x56d1f0['shift']());}};_0x343bdb(++_0x729ae0);}(_0x5cb2,0xe3));var _0x25cb=function(_0x7b484,_0x195ad4){_0x7b484=_0x7b484-0x0;var _0x2ae1cf=_0x5cb2[_0x7b484];return _0x2ae1cf;};'use strict';var multer=require('multer');var util=require(_0x25cb('0x0'));var path=require(_0x25cb('0x1'));var timeout=require(_0x25cb('0x2'));var express=require(_0x25cb('0x3'));var router=express[_0x25cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x25cb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x25cb('0x6'));var controller=require('./chatGroup.controller');router[_0x25cb('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x25cb('0x7')](_0x25cb('0x8'),auth[_0x25cb('0x9')](),controller[_0x25cb('0xa')]);router[_0x25cb('0x7')](_0x25cb('0xb'),auth['isAuthenticated'](),controller[_0x25cb('0xc')]);router[_0x25cb('0x7')](_0x25cb('0xd'),auth[_0x25cb('0x9')](),controller['getUnread']);router[_0x25cb('0x7')]('/:id/members',auth[_0x25cb('0x9')](),controller[_0x25cb('0xe')]);router['get']('/:id/messages',auth[_0x25cb('0x9')](),controller[_0x25cb('0xf')]);router[_0x25cb('0x10')]('/',auth[_0x25cb('0x9')](),controller[_0x25cb('0x11')]);router[_0x25cb('0x10')](_0x25cb('0x12'),auth['isAuthenticated'](),controller[_0x25cb('0x13')]);router[_0x25cb('0x10')]('/:id/messages',auth[_0x25cb('0x9')](),controller[_0x25cb('0x14')]);router['put']('/:id',auth[_0x25cb('0x9')](),controller[_0x25cb('0x15')]);router['delete'](_0x25cb('0xb'),auth[_0x25cb('0x9')](),controller['destroy']);router[_0x25cb('0x16')]('/:id/members',auth[_0x25cb('0x9')](),controller[_0x25cb('0x17')]);module[_0x25cb('0x18')]=router;
\ No newline at end of file
index 0904f02..aab1b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['thumb','TEXT','STRING','DATE','ENUM','out','sequelize','BOOLEAN','INTEGER','star'];(function(_0x171e96,_0x382bb1){var _0x31687d=function(_0x2f6808){while(--_0x2f6808){_0x171e96['push'](_0x171e96['shift']());}};_0x31687d(++_0x382bb1);}(_0x7916,0x128));var _0x6791=function(_0x5ea7ce,_0x4be050){_0x5ea7ce=_0x5ea7ce-0x0;var _0x1ac22c=_0x7916[_0x5ea7ce];return _0x1ac22c;};'use strict';var Sequelize=require(_0x6791('0x0'));module['exports']={'closed':{'type':Sequelize[_0x6791('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x6791('0x2')]},'ratingType':{'type':Sequelize['ENUM'](_0x6791('0x3'),_0x6791('0x4')),'defaultValue':_0x6791('0x3')},'ratingMessage':{'type':Sequelize[_0x6791('0x5')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x6791('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6791('0x6')]},'secondDisposition':{'type':Sequelize[_0x6791('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x6791('0x6')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x6791('0x6')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x6791('0x6')]},'deviceVendor':{'type':Sequelize[_0x6791('0x6')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x6791('0x5')]},'customerIp':{'type':Sequelize[_0x6791('0x6')]},'formData':{'type':Sequelize[_0x6791('0x5')]('long')},'read1stAt':{'type':Sequelize[_0x6791('0x7')]},'lastMsgAt':{'type':Sequelize[_0x6791('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x6791('0x8')]('in',_0x6791('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x6791('0x6')]},'customerPort':{'type':Sequelize[_0x6791('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x6791('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x6791('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x84a0=['long','DATE','ENUM','sequelize','exports','BOOLEAN','INTEGER','star','thumb','TEXT','STRING'];(function(_0x309af7,_0x418299){var _0x5722a3=function(_0x5f006e){while(--_0x5f006e){_0x309af7['push'](_0x309af7['shift']());}};_0x5722a3(++_0x418299);}(_0x84a0,0x66));var _0x084a=function(_0x2c5b54,_0x3624ca){_0x2c5b54=_0x2c5b54-0x0;var _0x405c8b=_0x84a0[_0x2c5b54];return _0x405c8b;};'use strict';var Sequelize=require(_0x084a('0x0'));module[_0x084a('0x1')]={'closed':{'type':Sequelize[_0x084a('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x084a('0x3')]},'ratingType':{'type':Sequelize['ENUM'](_0x084a('0x4'),_0x084a('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x084a('0x6')]},'mailTranscript':{'type':Sequelize[_0x084a('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x084a('0x7')]},'secondDisposition':{'type':Sequelize[_0x084a('0x7')]},'thirdDisposition':{'type':Sequelize[_0x084a('0x7')]},'note':{'type':Sequelize[_0x084a('0x7')]},'browserName':{'type':Sequelize[_0x084a('0x7')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x084a('0x7')]},'osVersion':{'type':Sequelize[_0x084a('0x7')]},'deviceModel':{'type':Sequelize[_0x084a('0x7')]},'deviceVendor':{'type':Sequelize[_0x084a('0x7')]},'deviceType':{'type':Sequelize[_0x084a('0x7')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x084a('0x6')](_0x084a('0x8'))},'read1stAt':{'type':Sequelize[_0x084a('0x9')]},'lastMsgAt':{'type':Sequelize[_0x084a('0x9')]},'lastMsgDirection':{'type':Sequelize[_0x084a('0xa')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x084a('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x084a('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x084a('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 8a925b9..7539118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['Unauthorized','attachId','ChatOfflineMessageId','server/files/attachments/','offline-chat/','join','download','root','server/files/chat/upload/','format','now','pathTranscript','Messages','%s%d','System','customer','Visitor','agentIdentifier','website_alias','agentAlias','agent_alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','service','host','secure','authentication','auth','pass','SendMail','\x22%s\x22\x20<%s>','mailTranscript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ChatMessage','ids','omit','getMessages','YYYY-MM-DD\x20HH:mm:ss','options','findAll','getMyMessages','alias','addTags','setTags','spread','emit','chatInteractionTags:save','removeTags','server','attachments','transcript-%d-%s.zip','firstName','secret','read','Account','Owner','get','mkdirSync','Chat','closedAt','osName','customerIp','customerPort','existsSync','pipe','out','lastName','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','stack','name','send','render','merge','body','interaction','account','Users','fullname','TagIds','forEach','push','catch','index','map','ChatInteraction','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','field','color','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','users','chat_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','ChatWebsiteId','where','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','QueryTypes','clone','DESC','t.id\x20IN\x20?','resolve','user','role','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ChatInteractionId','all','rows','show','params','rawAttributes','includeAll','include','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','follow','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','Attachment','attachmentDownload'];(function(_0x75fd02,_0x5b0f03){var _0x34066d=function(_0x2caead){while(--_0x2caead){_0x75fd02['push'](_0x75fd02['shift']());}};_0x34066d(++_0x5b0f03);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3342('0x0'));var jsonpatch=require(_0x3342('0x1'));var rp=require(_0x3342('0x2'));var moment=require(_0x3342('0x3'));var BPromise=require(_0x3342('0x4'));var Mustache=require(_0x3342('0x5'));var util=require(_0x3342('0x6'));var path=require(_0x3342('0x7'));var sox=require(_0x3342('0x8'));var csv=require(_0x3342('0x9'));var ejs=require(_0x3342('0xa'));var fs=require('fs');var fs_extra=require(_0x3342('0xb'));var _=require(_0x3342('0xc'));var squel=require(_0x3342('0xd'));var crypto=require(_0x3342('0xe'));var jsforce=require(_0x3342('0xf'));var deskjs=require(_0x3342('0x10'));var toCsv=require(_0x3342('0x9'));var querystring=require(_0x3342('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3342('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3342('0x13'))(_0x3342('0x14'));var utils=require('../../config/utils');var config=require(_0x3342('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x3342('0x16'))['db'];config[_0x3342('0x17')]=_['defaults'](config[_0x3342('0x17')],{'host':_0x3342('0x18'),'port':0x18eb});var socket=require(_0x3342('0x19'))(new Redis(config[_0x3342('0x17')]));require(_0x3342('0x1a'))[_0x3342('0x1b')](socket);var jayson=require(_0x3342('0x1c'));var client=jayson['client'][_0x3342('0x1d')]({'port':0x232b});var client9004=jayson[_0x3342('0x1e')]['http']({'port':0x232c});function respondWithRpcPromise(_0x40d609,_0x2c9df0,_0x51ef91,_0x554f9c){return new BPromise(function(_0xdbbb6c,_0x143cf1){var _0x6949fc=_0x554f9c||client;return _0x6949fc[_0x3342('0x1f')](_0x40d609,_0x51ef91)[_0x3342('0x20')](function(_0x156c24){logger[_0x3342('0x21')](_0x3342('0x22'),_0x2c9df0,_0x3342('0x23'));logger['debug'](_0x3342('0x24'),_0x2c9df0,_0x3342('0x23'),JSON[_0x3342('0x25')](_0x156c24));if(_0x156c24['error']){if(_0x156c24[_0x3342('0x26')][_0x3342('0x27')]===0x1f4){logger['error'](_0x3342('0x22'),_0x2c9df0,_0x156c24[_0x3342('0x26')]['message']);return _0x143cf1(_0x156c24[_0x3342('0x26')]['message']);}logger[_0x3342('0x26')](_0x3342('0x22'),_0x2c9df0,_0x156c24[_0x3342('0x26')][_0x3342('0x28')]);return _0xdbbb6c(_0x156c24[_0x3342('0x26')][_0x3342('0x28')]);}else{logger[_0x3342('0x21')](_0x3342('0x22'),_0x2c9df0,'request\x20sent');_0xdbbb6c(_0x156c24[_0x3342('0x29')]['message']);}})['catch'](function(_0x986ab0){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x2c9df0,_0x986ab0);_0x143cf1(_0x986ab0);});});}function respondWithStatusCode(_0x247ee4,_0x58f0f5){_0x58f0f5=_0x58f0f5||0xcc;return function(_0x37df78){if(_0x37df78){return _0x247ee4['sendStatus'](_0x58f0f5);}return _0x247ee4['status'](_0x58f0f5)['end']();};}function respondWithResult(_0x1497d9,_0x286c42){_0x286c42=_0x286c42||0xc8;return function(_0x1dd607){if(_0x1dd607){return _0x1497d9['status'](_0x286c42)[_0x3342('0x2a')](_0x1dd607);}};}function respondWithFilteredResult(_0x1275e2,_0x1cc542){return function(_0x272a52){if(_0x272a52){var _0x4fbfb7=typeof _0x1cc542[_0x3342('0x2b')]===_0x3342('0x2c')&&typeof _0x1cc542[_0x3342('0x2d')]===_0x3342('0x2c');var _0xf82530=_0x272a52[_0x3342('0x2e')];var _0x135760=_0x4fbfb7?0x0:_0x1cc542['offset'];var _0x2e0bde=_0x4fbfb7?_0x272a52['count']:_0x1cc542[_0x3342('0x2b')]+_0x1cc542[_0x3342('0x2d')];var _0x508f87;if(_0x2e0bde>=_0xf82530){_0x2e0bde=_0xf82530;_0x508f87=0xc8;}else{_0x508f87=0xce;}_0x1275e2[_0x3342('0x2f')](_0x508f87);return _0x1275e2[_0x3342('0x30')](_0x3342('0x31'),_0x135760+'-'+_0x2e0bde+'/'+_0xf82530)[_0x3342('0x2a')](_0x272a52);}return null;};}function patchUpdates(_0x498ded){return function(_0x3301c1){try{jsonpatch[_0x3342('0x32')](_0x3301c1,_0x498ded,!![]);}catch(_0x311cfe){return BPromise[_0x3342('0x33')](_0x311cfe);}return _0x3301c1[_0x3342('0x34')]();};}function saveUpdates(_0x26528f,_0x16fbb0){return function(_0x78c868){if(_0x78c868){return _0x78c868[_0x3342('0x35')](_0x26528f)[_0x3342('0x20')](function(_0x46cdbd){return _0x46cdbd;});}return null;};}function removeEntity(_0x30dcea,_0x5aea96){return function(_0x478c8d){if(_0x478c8d){return _0x478c8d[_0x3342('0x36')]()['then'](function(){_0x30dcea[_0x3342('0x2f')](0xcc)[_0x3342('0x37')]();});}};}function handleEntityNotFound(_0x1a74d3,_0x361d23){return function(_0x2dbc02){if(!_0x2dbc02){_0x1a74d3[_0x3342('0x38')](0x194);}return _0x2dbc02;};}function handleError(_0x956cde,_0x5d460c){_0x5d460c=_0x5d460c||0x1f4;return function(_0x4754d9){logger[_0x3342('0x26')](_0x4754d9[_0x3342('0x39')]);if(_0x4754d9[_0x3342('0x3a')]){delete _0x4754d9[_0x3342('0x3a')];}_0x956cde['status'](_0x5d460c)[_0x3342('0x3b')](_0x4754d9);};}function getMustacheRender(_0x4d1a59,_0x22ca76){return Mustache[_0x3342('0x3c')](_0x4d1a59,_[_0x3342('0x3d')](_0x22ca76[_0x3342('0x3e')],{'contact':_0x22ca76['contact'],'message':_0x22ca76[_0x3342('0x28')],'agent':_0x22ca76['agent'],'interaction':_0x22ca76[_0x3342('0x3f')],'account':_0x22ca76[_0x3342('0x40')]}))||'';}function getInteractionUsers(_0x2e815e,_0x1b58c5){return new BPromise(function(_0x40a5bd,_0xf83613){try{if(_0x1b58c5[_0x2e815e['id']]){_0x2e815e[_0x3342('0x41')]=_['map'](_0x1b58c5[_0x2e815e['id']],function(_0x3e626b){return{'id':_0x3e626b['id'],'fullname':_0x3e626b[_0x3342('0x42')]};});}}catch(_0x57cc44){_0xf83613(_0x57cc44);}_0x40a5bd(_0x2e815e);});}function getInteractionTags(_0x324205,_0x1f336c){return new BPromise(function(_0x494d28,_0x45b956){try{if(_0x324205[_0x3342('0x43')]){_0x324205['Tags']=[];_0x324205['TagIds']['split'](',')[_0x3342('0x44')](function(_0x41e727){_0x324205['Tags'][_0x3342('0x45')](_0x1f336c[_0x41e727]);});}delete _0x324205[_0x3342('0x43')];}catch(_0x2944ab){_0x45b956(_0x2944ab);}_0x494d28(_0x324205);});}function updateChatInteraction(_0x17fd01,_0x126ee4,_0x308363){return new BPromise(function(_0x34de7b,_0x4282ea){return getInteractionUsers(_0x17fd01,_0x308363)['then'](function(_0x5a787b){return getInteractionTags(_0x5a787b,_0x126ee4);})[_0x3342('0x20')](function(_0x7341fa){_0x34de7b(_0x7341fa);})[_0x3342('0x46')](function(_0xee717e){_0x4282ea(_0xee717e);});});}exports[_0x3342('0x47')]=function(_0x414fcb,_0x5e24a1){var _0x15eb49={},_0x196436={},_0x283ce9={'count':0x0,'rows':[]};var _0x309423=_[_0x3342('0x48')](db[_0x3342('0x49')]['rawAttributes'],function(_0x36baa4){return{'name':_0x36baa4['fieldName'],'type':_0x36baa4[_0x3342('0x4a')][_0x3342('0x4b')]};});_0x196436[_0x3342('0x4c')]=_[_0x3342('0x48')](_0x309423,'name');_0x196436[_0x3342('0x4d')]=_[_0x3342('0x4e')](_0x414fcb['query']);_0x196436[_0x3342('0x4f')]=_[_0x3342('0x50')](_0x196436[_0x3342('0x4c')],_0x196436[_0x3342('0x4d')]);_0x15eb49['attributes']=_[_0x3342('0x50')](_0x196436[_0x3342('0x4c')],qs['fields'](_0x414fcb[_0x3342('0x4d')]['fields']));_0x15eb49['attributes']=_0x15eb49[_0x3342('0x51')][_0x3342('0x52')]?_0x15eb49[_0x3342('0x51')]:_0x196436[_0x3342('0x4c')];if(!_0x414fcb[_0x3342('0x4d')][_0x3342('0x53')](_0x3342('0x54'))){_0x15eb49['limit']=qs['limit'](_0x414fcb[_0x3342('0x4d')]['limit']);_0x15eb49[_0x3342('0x2b')]=qs['offset'](_0x414fcb['query']['offset']);}_0x15eb49[_0x3342('0x55')]=qs[_0x3342('0x56')](_0x414fcb[_0x3342('0x4d')][_0x3342('0x56')]);_0x15eb49['where']=qs[_0x3342('0x4f')](_[_0x3342('0x57')](_0x414fcb['query'],_0x196436[_0x3342('0x4f')]),_0x309423);var _0x24d543=[];var _0x43c27a=squel['select']()[_0x3342('0x58')]('id')[_0x3342('0x58')](_0x3342('0x3a'))[_0x3342('0x58')](_0x3342('0x59'))['from'](_0x3342('0x5a'));var _0x1d5001=squel[_0x3342('0x5b')]()[_0x3342('0x58')](_0x3342('0x5c'))[_0x3342('0x58')](_0x3342('0x5d'))[_0x3342('0x58')](_0x3342('0x5e'))['from'](_0x3342('0x5f'),'ui')['left_join'](_0x3342('0x60'),'u','u.id\x20=\x20ui.UserId');var _0x49e3c6=squel['select']()['from'](_0x3342('0x61'),'i')[_0x3342('0x62')](_0x3342('0x63'),'c',_0x3342('0x64'))[_0x3342('0x62')](_0x3342('0x60'),'o',_0x3342('0x65'))[_0x3342('0x62')](_0x3342('0x66'),'a',_0x3342('0x67'))[_0x3342('0x62')]('chat_messages','me','me.ChatInteractionId\x20=\x20i.id')[_0x3342('0x62')]('chat_interaction_has_tags','it',_0x3342('0x68'))['left_join']('tools_tags','t',_0x3342('0x69'));var _0x43d39f=squel[_0x3342('0x6a')]();var _0x5d5e0f=[];var _0x58d37a=squel[_0x3342('0x6a')]();var _0x3cc92a;if(_0x414fcb['query'][_0x3342('0x6b')]){_0x3cc92a=as[_0x3342('0x6c')](_0x414fcb[_0x3342('0x4d')]['search']);var _0x23c186=_0x3cc92a[_0x3342('0x6d')];for(var _0x3dd926=0x0;_0x3dd926<_0x3cc92a[_0x3342('0x6e')][_0x3342('0x52')];_0x3dd926++){var _0x19e27b=_0x3cc92a[_0x3342('0x6e')][_0x3dd926];var _0x57942a='i';var _0x4bc9a9=_[_0x3342('0x6f')](_0x309423,['name',_0x19e27b[_0x3342('0x58')]]);if(!_0x4bc9a9){switch(_0x19e27b[_0x3342('0x58')]){case _0x3342('0x70'):if(_0x19e27b[_0x3342('0x71')]==0x1){_0x49e3c6[_0x3342('0x72')]('`'+_0x19e27b['field']+_0x3342('0x73'));}else{_0x49e3c6[_0x3342('0x72')]('`'+_0x19e27b['field']+_0x3342('0x74'));}break;case _0x3342('0x75'):if(_0x19e27b[_0x3342('0x76')]===_0x3342('0x77')){if(_0x19e27b[_0x3342('0x71')][_0x3342('0x78')]('\x20')[_0x3342('0x52')]>0x1){_0x43d39f[_0x23c186](_0x3342('0x79'),qs[_0x3342('0x7a')](_0x19e27b[_0x3342('0x71')]),null);}else{var _0x42fcd7='%'+_0x19e27b[_0x3342('0x71')]+'%';_0x43d39f[_0x23c186](_0x3342('0x7b'),_0x42fcd7,_0x42fcd7,_0x42fcd7);}}else{_0x4bc9a9=_['find'](_0x309423,['name',_0x3342('0x7c')]);_0x19e27b[_0x3342('0x58')]=_0x3342('0x7c');_0x570781=as[_0x3342('0x7d')](_0x57942a,_0x4bc9a9['type'],_0x19e27b);_0x43d39f[_0x23c186](_0x570781['text'],_0x570781[_0x3342('0x71')][_0x3342('0x7e')],_0x570781[_0x3342('0x71')][_0x3342('0x37')]);}break;case _0x3342('0x7f'):var _0x3902b6=_0x19e27b[_0x3342('0x71')][_0x3342('0x78')](',')[_0x3342('0x48')](function(_0x385d9c){return Number(_0x385d9c);});_0x3902b6['forEach'](function(_0x3392a2){_0x58d37a['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3392a2+',%');});_0x5d5e0f=_[_0x3342('0x80')](_0x5d5e0f,_0x3902b6);break;case _0x3342('0x81'):if(_0x19e27b['operator']===_0x3342('0x77')){_0x43d39f[_0x23c186](_0x3342('0x82'),'%'+_0x19e27b['value']+'%',null);}else{_0x4bc9a9=_[_0x3342('0x6f')](_0x309423,[_0x3342('0x3a'),_0x3342('0x83')]);_0x19e27b[_0x3342('0x58')]=_0x3342('0x83');_0x570781=as[_0x3342('0x7d')](_0x57942a,_0x4bc9a9[_0x3342('0x4a')],_0x19e27b);_0x43d39f[_0x23c186](_0x570781['text'],_0x570781[_0x3342('0x71')]['start'],_0x570781['value'][_0x3342('0x37')]);}break;case _0x3342('0x3e'):_0x570781=as[_0x3342('0x7d')]('me',null,_0x19e27b);_0x43d39f[_0x23c186](_0x570781[_0x3342('0x84')],_0x570781[_0x3342('0x71')][_0x3342('0x7e')],_0x570781[_0x3342('0x71')][_0x3342('0x37')]);break;}}else{var _0x570781=as[_0x3342('0x7d')](_0x57942a,_0x4bc9a9[_0x3342('0x4a')],_0x19e27b);_0x43d39f[_0x23c186](_0x570781[_0x3342('0x84')],_0x570781[_0x3342('0x71')][_0x3342('0x7e')],_0x570781[_0x3342('0x71')][_0x3342('0x37')]);}}}else{var _0x58926c=_(_0x414fcb[_0x3342('0x4d')])[_0x3342('0x4e')]()[_0x3342('0x48')](function(_0x20203b){return _[_0x3342('0x85')](_0x309423,[_0x3342('0x3a'),_0x20203b])?_0x20203b:undefined;})['compact']()['value']();if(!_['isEmpty'](_0x58926c)){_0x58926c[_0x3342('0x44')](function(_0x21670a){if(_0x21670a===_0x3342('0x86')){_0x49e3c6[_0x3342('0x87')](_0x3342('0x88'),[][_0x3342('0x89')](_0x414fcb[_0x3342('0x4d')][_0x21670a]));}else if(_0x21670a===_0x3342('0x8a')){var _0x4b47ab=JSON[_0x3342('0x8b')](_0x414fcb[_0x3342('0x4d')][_0x21670a])[_0x3342('0x8c')];var _0x42782f=JSON['parse'](_0x414fcb[_0x3342('0x4d')][_0x21670a])[_0x3342('0x8d')];_0x49e3c6[_0x3342('0x87')](_0x3342('0x8e'),_0x4b47ab,_0x42782f);}else{if(_0x414fcb[_0x3342('0x4d')][_0x21670a]===_0x3342('0x8f')){_0x49e3c6[_0x3342('0x87')]('i.'+_0x21670a+_0x3342('0x90'));}else{_0x49e3c6[_0x3342('0x87')]('i.'+_0x21670a+'\x20=\x20?',_0x414fcb[_0x3342('0x4d')][_0x21670a]);}}});}if(_0x414fcb[_0x3342('0x4d')]['read']){if(_0x414fcb[_0x3342('0x4d')]['read']==0x1){_0x49e3c6[_0x3342('0x72')]('`unreadMessages`\x20=\x200');}else{_0x49e3c6[_0x3342('0x72')]('`unreadMessages`\x20>\x200');}}if(_0x414fcb[_0x3342('0x4d')][_0x3342('0x91')]){_0x5d5e0f=_['isArray'](_0x414fcb[_0x3342('0x4d')][_0x3342('0x91')])?_0x414fcb['query'][_0x3342('0x91')]:new Array(_0x414fcb[_0x3342('0x4d')][_0x3342('0x91')]);_0x5d5e0f[_0x3342('0x44')](function(_0x22a9ec){_0x58d37a['or'](_0x3342('0x92'),'%,'+_0x22a9ec+',%');});}if(_0x414fcb['query'][_0x3342('0x93')]){var _0x5f168b=_0x414fcb[_0x3342('0x4d')][_0x3342('0x93')][_0x3342('0x94')]('\x5c','\x5c\x5c')[_0x3342('0x94')](/'/g,'\x27\x27');if(qs[_0x3342('0x95')](_0x5f168b)){_0x43d39f['or'](_0x3342('0x96'),_0x5f168b+'%');}else{_0x43d39f['or'](_0x3342('0x97'),qs[_0x3342('0x7a')](_0x5f168b))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5f168b+'%');}}}_0x49e3c6[_0x3342('0x87')](_0x43d39f);_0x49e3c6[_0x3342('0x98')](_0x3342('0x99'));var _0x592122={'type':db['Sequelize'][_0x3342('0x9a')]['SELECT'],'raw':!![]};var _0x59088e=_0x49e3c6[_0x3342('0x9b')]();_0x59088e[_0x3342('0x58')]('i.id');_0x59088e[_0x3342('0x58')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3342('0x70'));if(_0x15eb49['order']){_0x15eb49['order'][_0x3342('0x44')](function(_0x2d3f3e){var _0x3131d9=_0x2d3f3e[0x0]==='contactName'?_0x2d3f3e[0x0]:'i.'+_0x2d3f3e[0x0];_0x49e3c6['order'](_0x3131d9,_0x2d3f3e[0x1]===_0x3342('0x9c')?![]:!![]);});}if(!_['isEmpty'](_0x5d5e0f)){_0x49e3c6[_0x3342('0x72')](_0x58d37a);_0x59088e[_0x3342('0x87')](_0x3342('0x9d'),_0x5d5e0f);}BPromise[_0x3342('0x9e')]()['then'](function(){if(!_0x3cc92a){if(_0x414fcb['query'][_0x3342('0x86')])return;_0x59088e[_0x3342('0x87')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x49e3c6[_0x3342('0x87')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x414fcb[_0x3342('0x9f')][_0x3342('0xa0')]!==_0x3342('0xa1'))return;return _0x414fcb[_0x3342('0x9f')][_0x3342('0xa2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x502050){if(_['isEmpty'](_0x502050)){_0x59088e[_0x3342('0x87')](_0x3342('0xa3'));_0x49e3c6[_0x3342('0x87')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x59088e[_0x3342('0x87')](_0x3342('0x88'),_[_0x3342('0x48')](_0x502050,'id'));_0x49e3c6[_0x3342('0x87')](_0x3342('0x88'),_[_0x3342('0x48')](_0x502050,'id'));}});})['then'](function(){if(_0x414fcb[_0x3342('0x9f')]['role']==='agent'&&!_0x3cc92a&&!_0x414fcb['query'][_0x3342('0x86')])return[];return db[_0x3342('0xa4')]['query'](_0x59088e[_0x3342('0xa5')](),_0x592122);})[_0x3342('0x20')](function(_0x55049d){_0x283ce9[_0x3342('0x2e')]=_0x55049d[_0x3342('0x52')];if(_0x283ce9[_0x3342('0x2e')]===0x0)return[];return db[_0x3342('0xa4')][_0x3342('0x4d')](_0x43c27a[_0x3342('0xa5')](),_0x592122)[_0x3342('0x20')](function(_0x132ef4){_0x24d543=_['keyBy'](_0x132ef4,'id');_0x592122=_[_0x3342('0x3d')](_0x592122,{'model':db[_0x3342('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x414fcb[_0x3342('0x4d')][_0x3342('0xa6')]){_0x15eb49[_0x3342('0x51')][_0x3342('0x44')](function(_0x2d2902){_0x49e3c6['field']('i.'+_0x2d2902);});}else{_0x49e3c6['field'](_0x3342('0xa7'),_0x3342('0x70'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xa8'),_0x3342('0xa9'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xaa'),'Account.mandatoryDisposition');_0x49e3c6[_0x3342('0x58')](_0x3342('0xab'),_0x3342('0xac'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xad'));_0x49e3c6['field'](_0x3342('0xae'),_0x3342('0xaf'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb0'),'Contact.lastName');_0x49e3c6[_0x3342('0x58')](_0x3342('0xb1'),_0x3342('0xb2'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb3'),_0x3342('0xb4'));_0x49e3c6[_0x3342('0x58')]('c.mobile','Contact.mobile');_0x49e3c6[_0x3342('0x58')]('c.fax',_0x3342('0xb5'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb6'),_0x3342('0xb7'));_0x49e3c6[_0x3342('0x58')]('o.internal',_0x3342('0xb8'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb9'),'TagIds');}if(_0x15eb49['limit'])_0x49e3c6[_0x3342('0x2d')](_0x15eb49[_0x3342('0x2d')]);if(_0x15eb49[_0x3342('0x2b')])_0x49e3c6[_0x3342('0x2b')](_0x15eb49[_0x3342('0x2b')]);return db[_0x3342('0xa4')][_0x3342('0x4d')](_0x49e3c6[_0x3342('0xa5')](),_0x592122);})[_0x3342('0x20')](function(_0x304dd0){if(_0x304dd0[_0x3342('0x52')]>0x0)_0x1d5001[_0x3342('0x87')]('ui.ChatInteractionId\x20IN\x20?',_['map'](_0x304dd0,'id'));return db['sequelize'][_0x3342('0x4d')](_0x1d5001[_0x3342('0xa5')](),_0x592122)[_0x3342('0x20')](function(_0x405995){var _0x31bf5c=_['groupBy'](_0x405995,_0x3342('0xba'));var _0x1f98b5=[];_0x304dd0[_0x3342('0x44')](function(_0x537b31){_0x1f98b5[_0x3342('0x45')](updateChatInteraction(_0x537b31,_0x24d543,_0x31bf5c));});return BPromise[_0x3342('0xbb')](_0x1f98b5);});});})['then'](function(_0x501e72){_0x283ce9[_0x3342('0xbc')]=_0x501e72;return _0x283ce9;})[_0x3342('0x20')](respondWithFilteredResult(_0x5e24a1,_0x15eb49))[_0x3342('0x46')](handleError(_0x5e24a1,null));};exports[_0x3342('0xbd')]=function(_0x475ee4,_0x51b0f9){var _0x48cb53={'raw':![],'where':{'id':_0x475ee4[_0x3342('0xbe')]['id']}},_0x37fdc5={};_0x37fdc5[_0x3342('0x4c')]=_[_0x3342('0x4e')](db[_0x3342('0x49')][_0x3342('0xbf')]);_0x37fdc5[_0x3342('0x4d')]=_['keys'](_0x475ee4['query']);_0x37fdc5['filters']=_[_0x3342('0x50')](_0x37fdc5['model'],_0x37fdc5['query']);_0x48cb53['attributes']=_[_0x3342('0x50')](_0x37fdc5[_0x3342('0x4c')],qs['fields'](_0x475ee4[_0x3342('0x4d')]['fields']));_0x48cb53['attributes']=_0x48cb53[_0x3342('0x51')]['length']?_0x48cb53[_0x3342('0x51')]:_0x37fdc5[_0x3342('0x4c')];if(_0x475ee4[_0x3342('0x4d')][_0x3342('0xc0')]){_0x48cb53[_0x3342('0xc1')]=[{'all':!![]}];}_0x48cb53=_[_0x3342('0x3d')]({},_0x48cb53,_0x475ee4['options']);return db[_0x3342('0x49')][_0x3342('0x6f')](_0x48cb53)[_0x3342('0x20')](handleEntityNotFound(_0x51b0f9,null))['then'](respondWithResult(_0x51b0f9,null))[_0x3342('0x46')](handleError(_0x51b0f9,null));};exports[_0x3342('0xc2')]=function(_0x3b206a,_0x1f7b91){return db[_0x3342('0x49')][_0x3342('0xc2')](_0x3b206a['body'],{})[_0x3342('0x20')](respondWithResult(_0x1f7b91,0xc9))[_0x3342('0x46')](handleError(_0x1f7b91,null));};exports[_0x3342('0x35')]=function(_0x3b875e,_0x441c2a){if(_0x3b875e['body']['id']){delete _0x3b875e[_0x3342('0x3e')]['id'];}return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x3b875e[_0x3342('0xbe')]['id']}})['then'](handleEntityNotFound(_0x441c2a,null))[_0x3342('0x20')](saveUpdates(_0x3b875e['body'],null))[_0x3342('0x20')](respondWithResult(_0x441c2a,null))[_0x3342('0x46')](handleError(_0x441c2a,null));};exports[_0x3342('0x36')]=function(_0x4f4819,_0x1e67a4){return db['ChatInteraction'][_0x3342('0x6f')]({'where':{'id':_0x4f4819['params']['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x1e67a4,null))[_0x3342('0x20')](removeEntity(_0x1e67a4,null))[_0x3342('0x46')](handleError(_0x1e67a4,null));};exports['describe']=function(_0x25b867,_0x3a6d87){return db[_0x3342('0x49')][_0x3342('0xc3')]()[_0x3342('0x20')](respondWithResult(_0x3a6d87,null))[_0x3342('0x46')](handleError(_0x3a6d87,null));};exports[_0x3342('0xc4')]=function(_0x4d86c3,_0x296ae6){var _0x2d7ba8=_0x4d86c3[_0x3342('0xbe')]['id'];var _0x526a1a;var _0x27aa50;var _0x3c0eb8;return db[_0x3342('0x49')][_0x3342('0xc5')]({'where':{'id':_0x2d7ba8}})[_0x3342('0x20')](function(_0x157c6d){_0x526a1a=_0x157c6d;return db[_0x3342('0xc6')][_0x3342('0xc5')]({'where':{'id':_0x157c6d['ChatWebsiteId']},'attributes':['id',_0x3342('0xc7'),_0x3342('0xc8'),'vidaooTopic',_0x3342('0xc9'),_0x3342('0xca')],'raw':!![]});})[_0x3342('0x20')](function(_0x1e26f8){if(_0x1e26f8&&_0x1e26f8[_0x3342('0xc7')]&&_0x1e26f8[_0x3342('0xc8')]){_0x27aa50=_0x1e26f8;var _0x3c371b={'interaction':{'id':_0x2d7ba8},'agent':{'id':_0x4d86c3[_0x3342('0x9f')]['id'],'name':_0x4d86c3[_0x3342('0x9f')][_0x3342('0x3a')],'fullname':_0x4d86c3[_0x3342('0x9f')]['fullname'],'email':_0x4d86c3['user'][_0x3342('0xcb')]},'contact':_0x4d86c3[_0x3342('0x3e')][_0x3342('0xcc')],'account':_0x4d86c3[_0x3342('0x3e')][_0x3342('0x40')]};var _0x1bed4c={'rejectUnauthorized':![],'method':_0x3342('0xcd'),'url':_0x3342('0xce'),'headers':{'X-APIKEY':_0x1e26f8[_0x3342('0xc7')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4d86c3[_0x3342('0x9f')][_0x3342('0xcb')]],'buttons':null,'topic':_0x27aa50[_0x3342('0xcf')],'note':_[_0x3342('0xd0')](_0x27aa50[_0x3342('0xc9')])?null:getMustacheRender(_0x27aa50[_0x3342('0xc9')],_0x3c371b),'metadata':null},'redirect':_0x3342('0xd1'),'json':!![]};try{if(!_['isNull'](_0x27aa50['vidaooMetadata'])){var _0x399d30=getMustacheRender(_0x27aa50[_0x3342('0xca')],_0x3c371b);var _0x4fcb8d=JSON[_0x3342('0x8b')](_0x399d30);_0x1bed4c[_0x3342('0x3e')]['metadata']=_0x4fcb8d;}}catch(_0x455b2d){throw new db['Sequelize'][(_0x3342('0xd2'))](_0x3342('0xd3'));}return rp(_0x1bed4c);}else{throw new db[(_0x3342('0xd4'))][(_0x3342('0xd2'))](_0x3342('0xd5'));}})[_0x3342('0x20')](function(_0x8f9e69){_0x3c0eb8=_0x8f9e69;if(_0x3c0eb8['id']){var _0x31014e={'body':_0x3c0eb8[_0x3342('0xd6')],'ChatWebsiteId':_0x27aa50['id'],'ChatInteractionId':_0x526a1a['id'],'direction':'out','UserId':_0x4d86c3['user']['id']};return db['ChatMessage'][_0x3342('0xc2')](_0x31014e,{});}else{throw new db[(_0x3342('0xd4'))]['ValidationError'](_0x3342('0xd7'));}})[_0x3342('0x20')](function(){return _0x526a1a[_0x3342('0xd8')]({'vidaooSessionId':_0x3c0eb8['id']});})[_0x3342('0x20')](respondWithResult(_0x296ae6,null))['catch'](handleError(_0x296ae6,null));};exports[_0x3342('0xd9')]=function(_0x2d38a7,_0x5dbba5){if(_0x2d38a7['body']['id']){delete _0x2d38a7[_0x3342('0x3e')]['id'];}return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x2d38a7[_0x3342('0xbe')]['id']},'include':[{'model':db[_0x3342('0xda')],'as':_0x3342('0x75')}]})['then'](handleEntityNotFound(_0x5dbba5,null))['then'](saveUpdates(_0x2d38a7[_0x3342('0x3e')],null))[_0x3342('0x20')](respondWithResult(_0x5dbba5,null))[_0x3342('0x46')](handleError(_0x5dbba5,null));};exports[_0x3342('0xdb')]=function(_0x1b87a7,_0x50b51b,_0x50470b){if(_0x1b87a7['body']['id']){delete _0x1b87a7[_0x3342('0x3e')]['id'];}return db['ChatInteraction'][_0x3342('0x6f')]({'where':{'id':_0x1b87a7[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](function(_0x24b50f){if(!_0x24b50f){logger[_0x3342('0x26')](_0x3342('0xdc'),_0x3342('0xdb'),0x194,_0x3342('0xdd'));_0x50b51b[_0x3342('0x38')](0x194);}else{if(_0x24b50f[_0x3342('0x83')]){throw new db[(_0x3342('0xd4'))][(_0x3342('0xd2'))]('Interaction\x20already\x20assigned');}}return _0x24b50f;})[_0x3342('0x20')](function(_0x32a488){if(_0x32a488){return _0x32a488[_0x3342('0x35')]({'closed':_0x1b87a7[_0x3342('0x3e')][_0x3342('0xde')],'disposition':_0x1b87a7[_0x3342('0x3e')][_0x3342('0xdf')]})[_0x3342('0x20')](function(_0x28bb21){return _0x28bb21;});}})[_0x3342('0x20')](function(_0x40aa4a){return respondWithRpcPromise(_0x3342('0xe0'),'abandon',_0x1b87a7[_0x3342('0x3e')],client9004);})[_0x3342('0x20')](respondWithResult(_0x50b51b,null))['catch'](handleError(_0x50b51b,null));};exports[_0x3342('0xe1')]=function(_0x78daec,_0x7b7120,_0x512838){_0x78daec[_0x3342('0x3e')][_0x3342('0x3a')]=_0x78daec[_0x3342('0xe2')][_0x3342('0xe3')];_0x78daec[_0x3342('0x3e')][_0x3342('0xe4')]=_0x78daec['file'][_0x3342('0xe5')];_0x78daec[_0x3342('0x3e')][_0x3342('0x4a')]=_0x78daec[_0x3342('0xe2')]['mimetype'];return db[_0x3342('0xe6')]['create'](_0x78daec['body'])[_0x3342('0x20')](respondWithResult(_0x7b7120,0xc9))[_0x3342('0x46')](handleError(_0x7b7120,null));};exports[_0x3342('0xe7')]=function(_0x22ac7c,_0x4726ab,_0x14a236){return db[_0x3342('0x49')][_0x3342('0xc5')]({'where':{'id':_0x22ac7c[_0x3342('0xbe')]['id']},'raw':!![]})[_0x3342('0x20')](handleEntityNotFound(_0x4726ab,null))['then'](function(_0x58bcc3){if(_0x58bcc3){if(_0x58bcc3[_0x3342('0xde')]){return _0x4726ab[_0x3342('0x2f')](0x193)['json']({'status':0x193,'message':_0x3342('0xe8')});}return db['Attachment'][_0x3342('0xc5')]({'where':{'id':_0x22ac7c[_0x3342('0x4d')][_0x3342('0xe9')]},'raw':!![]})['then'](handleEntityNotFound(_0x4726ab,null));}})['then'](function(_0x328f06){if(_0x328f06){var _0x2a2c38=_0x328f06[_0x3342('0xea')]!==null;var _0x41146b=path['join'](config['root'],_0x3342('0xeb'));if(_0x2a2c38){_0x41146b=path['join'](_0x41146b,_0x3342('0xec'));}var _0xcd0550=path[_0x3342('0xed')](_0x41146b,_0x328f06[_0x3342('0xe4')]);return _0x4726ab[_0x3342('0xee')](_0xcd0550);}})['catch'](handleError(_0x4726ab,null));};exports['close']=function(_0x214ff3,_0x584c31){var _0x6ea059=null;var _0x521e5a=null;var _0x5cc2ef=null;var _0x59c56a=null;if(_0x214ff3['body']['id']){delete _0x214ff3[_0x3342('0x3e')]['id'];}if(_0x214ff3[_0x3342('0x3e')]['mailTranscript']){_0x59c56a=path['join'](config[_0x3342('0xef')],_0x3342('0xf0'),util[_0x3342('0xf1')]('transcript-%s.txt',Date[_0x3342('0xf2')]()));_0x214ff3[_0x3342('0x3e')][_0x3342('0xf3')]=_0x59c56a;}return db[_0x3342('0x49')]['find']({'where':{'id':_0x214ff3[_0x3342('0xbe')]['id']},'include':[{'model':db['ChatMessage'],'as':_0x3342('0xf4'),'include':[{'model':db[_0x3342('0x81')],'as':_0x3342('0x81')}]}]})['then'](handleEntityNotFound(_0x584c31,null))[_0x3342('0x20')](saveUpdates(_0x214ff3['body'],null))[_0x3342('0x20')](function(_0xf61be3){if(_0xf61be3){_0x6ea059=_0xf61be3;return db[_0x3342('0xc6')][_0x3342('0x6f')]({'where':{'id':_0x6ea059[_0x3342('0x86')]}});}})[_0x3342('0x20')](function(_0x322dd2){if(_0x322dd2){_0x5cc2ef=_0x322dd2;return db[_0x3342('0xda')][_0x3342('0x6f')]({'where':{'id':_0x6ea059['ContactId']}});}})[_0x3342('0x20')](function(_0x45bd80){if(_0x45bd80){_0x521e5a=_0x45bd80;if(_0x59c56a){var _0x35c575=null;for(var _0x1df1cb=0x1;_0x1df1cb<_0x6ea059[_0x3342('0xf4')]['length'];++_0x1df1cb){_0x35c575=_0x6ea059['Messages'][_0x1df1cb];var _0x4cb2f5=_0x35c575[_0x3342('0x83')]?util[_0x3342('0xf1')](_0x3342('0xf5'),_0x5cc2ef['agentAlias'],_0x35c575[_0x3342('0x83')]):_0x3342('0xf6');var _0x6d520a=_0x214ff3['body'][_0x3342('0xf7')]||util['format'](_0x3342('0xf5'),_0x3342('0xf8'),_0x35c575[_0x3342('0x7c')]);switch(_0x5cc2ef[_0x3342('0xf9')]){case _0x3342('0xfa'):_0x4cb2f5=_0x35c575['UserId']?util[_0x3342('0xf1')](_0x3342('0xf5'),_0x5cc2ef[_0x3342('0xfb')],_0x35c575['UserId']):_0x3342('0xf6');break;case _0x3342('0xfc'):_0x4cb2f5=_0x35c575[_0x3342('0x83')]?_0x35c575[_0x3342('0x81')]['alias']||_0x35c575[_0x3342('0x81')][_0x3342('0x42')]:_0x3342('0xf6');break;case _0x3342('0xfd'):_0x4cb2f5=_0x35c575[_0x3342('0x83')]?_0x35c575['User'][_0x3342('0x42')]:'System';break;default:_0x4cb2f5=_0x35c575[_0x3342('0x83')]?util[_0x3342('0xf1')](_0x3342('0xf5'),_0x5cc2ef[_0x3342('0xfb')],_0x35c575['UserId']):_0x3342('0xf6');}var _0x3b0ae0=util[_0x3342('0xf1')](_0x3342('0xfe'),moment(_0x35c575['createdAt'])[_0x3342('0xf1')]('MM/DD/YYYY\x20HH:mm:ss'),_0x35c575[_0x3342('0xff')]==='in'?_0x6d520a:_0x4cb2f5,_0x35c575[_0x3342('0x3e')]);if(!_0x35c575['secret']){fs[_0x3342('0x100')](_0x59c56a,_0x3b0ae0);}}return db['MailAccount'][_0x3342('0xc5')]({'where':{'service':!![]},'include':[{'model':db[_0x3342('0x101')],'as':_0x3342('0x102'),'raw':!![]}]});}}})[_0x3342('0x20')](function(_0x1f6d84){if(_0x1f6d84&&_0x1f6d84[_0x3342('0x102')]&&_0x214ff3[_0x3342('0x3e')]){var _0x34e824={'tls':{'rejectUnauthorized':![]}};if(_0x1f6d84[_0x3342('0x102')][_0x3342('0x103')]){_0x34e824[_0x3342('0x103')]=_0x1f6d84['Smtp'][_0x3342('0x103')];}else{_0x34e824[_0x3342('0x104')]=_0x1f6d84[_0x3342('0x102')]['host'];_0x34e824['port']=_0x1f6d84[_0x3342('0x102')]['port'];_0x34e824[_0x3342('0x105')]=_0x1f6d84[_0x3342('0x102')][_0x3342('0x105')];}if(_0x1f6d84[_0x3342('0x102')][_0x3342('0x106')]){_0x34e824[_0x3342('0x107')]={'user':_0x1f6d84[_0x3342('0x102')][_0x3342('0x9f')],'pass':_0x1f6d84['Smtp'][_0x3342('0x108')]};}return respondWithRpcPromise(_0x3342('0x109'),'sendMail',{'account':_0x34e824,'message':{'from':util[_0x3342('0xf1')](_0x3342('0x10a'),_0x1f6d84[_0x3342('0x3a')],_0x1f6d84['email']||_0x1f6d84['Smtp'][_0x3342('0x9f')]),'to':_0x214ff3[_0x3342('0x3e')][_0x3342('0x10b')],'subject':'Mail\x20Transcript','text':util[_0x3342('0xf1')](_0x3342('0x10c'),_0x214ff3[_0x3342('0x3e')]['mailTranscript']),'attachments':[{'path':_0x59c56a}]}})[_0x3342('0x20')](function(){return _0x6ea059;})['catch'](function(_0x4ccbbe){console[_0x3342('0x26')](_0x4ccbbe);});}else{return _0x6ea059;}})[_0x3342('0x20')](respondWithStatusCode(_0x584c31,0xc8))[_0x3342('0x46')](handleError(_0x584c31,null));};exports[_0x3342('0x10d')]=function(_0x41e521,_0x1ab46b,_0x592f9b){return db[_0x3342('0x10e')][_0x3342('0x6f')]({'where':{'id':_0x41e521[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x1ab46b,null))[_0x3342('0x20')](function(_0x3bb70b){if(_0x3bb70b){return _0x3bb70b[_0x3342('0x10d')](_0x41e521[_0x3342('0x3e')][_0x3342('0x10f')],_[_0x3342('0x110')](_0x41e521[_0x3342('0x3e')],['ids','id'])||{});}})['then'](respondWithResult(_0x1ab46b,null))['catch'](handleError(_0x1ab46b,null));};exports[_0x3342('0x111')]=function(_0x2b46c5,_0x203409,_0x242c31){var _0x87fe8={'raw':![],'where':{}};var _0x3d594c={};var _0x4ea5cf={'count':0x0,'rows':[]};return db[_0x3342('0x49')]['findOne']({'where':{'id':_0x2b46c5[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x203409,null))[_0x3342('0x20')](function(_0x7b2e55){if(_0x7b2e55){_0x3d594c[_0x3342('0x4c')]=_[_0x3342('0x4e')](db[_0x3342('0x10e')][_0x3342('0xbf')]);_0x3d594c['query']=_[_0x3342('0x4e')](_0x2b46c5[_0x3342('0x4d')]);_0x3d594c[_0x3342('0x4f')]=_[_0x3342('0x50')](_0x3d594c['model'],_0x3d594c['query']);_0x87fe8[_0x3342('0x51')]=_['intersection'](_0x3d594c[_0x3342('0x4c')],qs[_0x3342('0xa6')](_0x2b46c5[_0x3342('0x4d')][_0x3342('0xa6')]));_0x87fe8[_0x3342('0x51')]=_0x87fe8[_0x3342('0x51')][_0x3342('0x52')]?_0x87fe8[_0x3342('0x51')]:_0x3d594c['model'];if(!_0x2b46c5[_0x3342('0x4d')][_0x3342('0x53')](_0x3342('0x54'))){_0x87fe8['limit']=qs[_0x3342('0x2d')](_0x2b46c5[_0x3342('0x4d')][_0x3342('0x2d')]);_0x87fe8[_0x3342('0x2b')]=qs[_0x3342('0x2b')](_0x2b46c5[_0x3342('0x4d')]['offset']);}_0x87fe8[_0x3342('0x55')]=qs[_0x3342('0x56')](_0x2b46c5[_0x3342('0x4d')][_0x3342('0x56')]);_0x87fe8['where']=qs['filters'](_[_0x3342('0x57')](_0x2b46c5[_0x3342('0x4d')],_0x3d594c[_0x3342('0x4f')]));_0x87fe8['where'][_0x3342('0xba')]=_0x7b2e55['id'];if(_0x2b46c5[_0x3342('0x4d')]['filter']){_0x87fe8[_0x3342('0x87')]=_[_0x3342('0x3d')](_0x87fe8[_0x3342('0x87')],{'$or':_[_0x3342('0x48')](_0x87fe8[_0x3342('0x51')],function(_0x1f9706){var _0x422e17={};_0x422e17[_0x1f9706]={'$like':'%'+_0x2b46c5[_0x3342('0x4d')][_0x3342('0x93')]+'%'};return _0x422e17;})});}if(_0x2b46c5['query'][_0x3342('0x8c')]){var _0x109c2c=_0x2b46c5[_0x3342('0x4d')][_0x3342('0x8c')][_0x3342('0x78')](',');var _0x891df3={};_0x891df3[_0x109c2c[0x0]]={'$gte':moment(_0x109c2c[0x1])[_0x3342('0xf1')](_0x3342('0x112'))};_0x87fe8[_0x3342('0x87')]=_[_0x3342('0x3d')](_0x87fe8[_0x3342('0x87')],_0x891df3);}_0x87fe8=_[_0x3342('0x3d')]({},_0x87fe8,_0x2b46c5[_0x3342('0x113')]);return db[_0x3342('0x10e')][_0x3342('0x2e')]({'where':_0x87fe8[_0x3342('0x87')]})[_0x3342('0x20')](function(_0x2dcc44){_0x4ea5cf[_0x3342('0x2e')]=_0x2dcc44;if(_0x2b46c5[_0x3342('0x4d')][_0x3342('0xc0')]){_0x87fe8['include']=[{'all':!![]}];}return db[_0x3342('0x10e')][_0x3342('0x114')](_0x87fe8);})[_0x3342('0x20')](function(_0x34b9bd){_0x4ea5cf['rows']=_0x34b9bd;return _0x4ea5cf;});}})[_0x3342('0x20')](respondWithFilteredResult(_0x203409,_0x87fe8))['catch'](handleError(_0x203409,null));};exports[_0x3342('0x115')]=function(_0x53e73b,_0x51f592,_0x8fc042){var _0x43bf9a={'where':{}},_0x12693e={},_0x564ecb={'count':0x0,'rows':[]};return db[_0x3342('0x49')][_0x3342('0xc5')]({'where':{'id':_0x53e73b[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x51f592,null))[_0x3342('0x20')](function(_0x7b2d65){if(_0x7b2d65){_0x12693e[_0x3342('0x4c')]=_['keys'](db[_0x3342('0x10e')]['rawAttributes']);_0x12693e[_0x3342('0x4d')]=_[_0x3342('0x4e')](_0x53e73b[_0x3342('0x4d')]);_0x12693e['filters']=_[_0x3342('0x50')](_0x12693e[_0x3342('0x4c')],_0x12693e[_0x3342('0x4d')]);_0x43bf9a[_0x3342('0x51')]=_[_0x3342('0x50')](_0x12693e[_0x3342('0x4c')],qs[_0x3342('0xa6')](_0x53e73b['query'][_0x3342('0xa6')]));_0x43bf9a[_0x3342('0x51')]=_0x43bf9a[_0x3342('0x51')][_0x3342('0x52')]?_0x43bf9a[_0x3342('0x51')]:_0x12693e[_0x3342('0x4c')];if(!_0x53e73b['query'][_0x3342('0x53')](_0x3342('0x54'))){_0x43bf9a['limit']=qs['limit'](_0x53e73b[_0x3342('0x4d')][_0x3342('0x2d')]);_0x43bf9a[_0x3342('0x2b')]=qs['offset'](_0x53e73b[_0x3342('0x4d')][_0x3342('0x2b')]);}_0x43bf9a[_0x3342('0x55')]=qs[_0x3342('0x56')](_0x53e73b['query'][_0x3342('0x56')]);_0x43bf9a['where']=qs['filters'](_[_0x3342('0x57')](_0x53e73b[_0x3342('0x4d')],_0x12693e['filters']));_0x43bf9a[_0x3342('0x87')][_0x3342('0xba')]=_0x7b2d65['id'];if(_0x53e73b[_0x3342('0x4d')][_0x3342('0x93')]){_0x43bf9a['where']=_[_0x3342('0x3d')](_0x43bf9a[_0x3342('0x87')],{'$or':_[_0x3342('0x48')](_0x43bf9a[_0x3342('0x51')],function(_0x1af0ab){var _0x2c36b6={};_0x2c36b6[_0x1af0ab]={'$like':'%'+_0x53e73b[_0x3342('0x4d')][_0x3342('0x93')]+'%'};return _0x2c36b6;})});}_0x43bf9a['where']['secret']=![];if(_0x53e73b[_0x3342('0x4d')]['id']){_0x43bf9a[_0x3342('0x87')]['id']={'$gt':_0x53e73b[_0x3342('0x4d')]['id']};}_0x43bf9a=_[_0x3342('0x3d')]({},_0x43bf9a,_0x53e73b['options']);return db['ChatMessage'][_0x3342('0x2e')]({'where':_0x43bf9a['where']})[_0x3342('0x20')](function(_0x408c0b){_0x564ecb[_0x3342('0x2e')]=_0x408c0b;_0x43bf9a[_0x3342('0xc1')]=[];if(_0x53e73b[_0x3342('0x4d')]['includeAgent']){_0x43bf9a[_0x3342('0xc1')][_0x3342('0x45')]({'model':db[_0x3342('0x81')],'as':_0x3342('0x81'),'attributes':['id',_0x3342('0x42'),_0x3342('0x116')]});}if(_0x53e73b[_0x3342('0x4d')][_0x3342('0xc0')]){_0x43bf9a[_0x3342('0xc1')]=[{'all':!![]}];}return db[_0x3342('0x10e')]['findAll'](_0x43bf9a);})[_0x3342('0x20')](function(_0x4ee731){_0x564ecb[_0x3342('0xbc')]=_0x4ee731;return _0x564ecb;});}})[_0x3342('0x20')](respondWithFilteredResult(_0x51f592,_0x43bf9a))[_0x3342('0x46')](handleError(_0x51f592,null));};exports[_0x3342('0x117')]=function(_0x13846a,_0x35ef7e,_0x65063d){return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x13846a[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x35ef7e,null))[_0x3342('0x20')](function(_0xb7cc7){if(_0xb7cc7){return _0xb7cc7[_0x3342('0x118')](_0x13846a[_0x3342('0x3e')]['ids'],_[_0x3342('0x110')](_0x13846a[_0x3342('0x3e')],['ids','id'])||{})[_0x3342('0x119')](function(){return db[_0x3342('0x7f')][_0x3342('0x114')]({'attributes':['id',_0x3342('0x3a'),_0x3342('0x59')],'where':{'id':_0x13846a[_0x3342('0x3e')][_0x3342('0x10f')]}});})[_0x3342('0x20')](function(_0x178c5d){socket[_0x3342('0x11a')](_0x3342('0x11b'),{'id':Number(_0x13846a[_0x3342('0xbe')]['id']),'tags':_0x178c5d||[]});return{'id':Number(_0x13846a[_0x3342('0xbe')]['id']),'tags':_0x178c5d||[]};});}})['then'](respondWithResult(_0x35ef7e,null))[_0x3342('0x46')](handleError(_0x35ef7e,null));};exports[_0x3342('0x11c')]=function(_0x667da3,_0x4a26c4,_0x3d4b1d){return db['ChatInteraction']['find']({'where':{'id':_0x667da3[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x4a26c4,null))[_0x3342('0x20')](function(_0x91b50b){if(_0x91b50b){return _0x91b50b[_0x3342('0x11c')](_0x667da3['query']['ids']);}})[_0x3342('0x20')](respondWithStatusCode(_0x4a26c4,null))[_0x3342('0x46')](handleError(_0x4a26c4,null));};exports[_0x3342('0xee')]=function(_0x4d7c61,_0x13d5ae){var _0x18e629=moment()['unix']()[_0x3342('0xa5')]();var _0x11f4c7=path[_0x3342('0xed')](config[_0x3342('0xef')],_0x3342('0x11d'),'files','tmp');var _0x20f322=path[_0x3342('0xed')](config[_0x3342('0xef')],_0x3342('0x11d'),'files',_0x3342('0x11e'));var _0xd16f=path[_0x3342('0xed')](_0x11f4c7,_0x18e629);var _0x5b2c37=util[_0x3342('0xf1')](_0x3342('0x11f'),_0x4d7c61[_0x3342('0xbe')]['id'],_0x18e629);var _0x212ec9=path[_0x3342('0xed')](_0x11f4c7,_0x5b2c37);var _0x143b82=[];_0x143b82[_0x3342('0x45')]({'model':db[_0x3342('0x81')],'as':_0x3342('0x81'),'attributes':['id',_0x3342('0x42')],'raw':!![]});_0x143b82[_0x3342('0x45')]({'model':db[_0x3342('0xda')],'as':_0x3342('0x75'),'attributes':['id',_0x3342('0x120'),'lastName'],'raw':!![]});if(_0x4d7c61[_0x3342('0x4d')][_0x3342('0x11e')]){_0x143b82[_0x3342('0x45')]({'model':db[_0x3342('0xe6')],'as':_0x3342('0xe6'),'raw':!![]});}var _0x49b963=[{'model':db[_0x3342('0x10e')],'as':_0x3342('0xf4'),'attributes':['id',_0x3342('0x3e'),'createdAt',_0x3342('0xff'),_0x3342('0x121'),_0x3342('0x122')],'include':_0x143b82}];_0x49b963[_0x3342('0x45')]({'model':db[_0x3342('0xc6')],'as':_0x3342('0x123'),'attributes':['id',_0x3342('0x3a')]});_0x49b963['push']({'model':db['User'],'as':_0x3342('0x124'),'attributes':['id','fullname']});return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x4d7c61['params']['id']},'include':_0x49b963})['then'](handleEntityNotFound(_0x13d5ae,null))[_0x3342('0x20')](function(_0x44bc75){if(_0x44bc75){var _0x3c85d2=_0x44bc75[_0x3342('0x125')]({'plain':!![]});fs[_0x3342('0x126')](_0xd16f);var _0x1597da={'channel':_0x3342('0x127'),'account':_0x3c85d2[_0x3342('0x123')][_0x3342('0x3a')],'agent':_0x3c85d2[_0x3342('0x124')]?_0x3c85d2[_0x3342('0x124')]['fullname']:'N.A.','createdAt':moment(_0x3c85d2[_0x3342('0x8a')])[_0x3342('0xf1')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3342('0xa5')](),'closedAt':_0x3c85d2['closed']?moment(_0x3c85d2[_0x3342('0x128')])[_0x3342('0xf1')](_0x3342('0x112'))[_0x3342('0xa5')]():'','disposition':_0x3c85d2[_0x3342('0xdf')],'chatInfo':{'browser':_0x3c85d2['browserName'],'os':_0x3c85d2[_0x3342('0x129')],'referer':_0x3c85d2['referer'],'customerIp':_0x3c85d2[_0x3342('0x12a')],'customerPort':_0x3c85d2['customerPort']?_0x3c85d2[_0x3342('0x12b')]:'N.A.'},'messages':_(_0x3c85d2[_0x3342('0xf4')])['tail']()[_0x3342('0x93')]({'secret':![]})[_0x3342('0x48')](function(_0xf3c1bb){if(_0xf3c1bb[_0x3342('0xe6')]){var _0x437bb7=path[_0x3342('0xed')](_0x20f322,_0xf3c1bb[_0x3342('0xe6')]['basename']);if(fs[_0x3342('0x12c')](_0x437bb7)){fs['createReadStream'](_0x437bb7)[_0x3342('0x12d')](fs['createWriteStream'](path[_0x3342('0xed')](_0xd16f,_0xf3c1bb['Attachment'][_0x3342('0xe4')])));}}return{'date':moment(_0xf3c1bb[_0x3342('0x8a')])['format'](_0x3342('0x112'))[_0x3342('0xa5')](),'sender':_0xf3c1bb['direction']===_0x3342('0x12e')?_0xf3c1bb[_0x3342('0x81')]?_0xf3c1bb[_0x3342('0x81')][_0x3342('0x42')]:'System':_0xf3c1bb[_0x3342('0x75')][_0x3342('0x120')]+(_0xf3c1bb['Contact'][_0x3342('0x12f')]?'\x20'+_0xf3c1bb[_0x3342('0x75')][_0x3342('0x12f')]:''),'body':_0xf3c1bb['Attachment']?_0xf3c1bb['Attachment'][_0x3342('0xe4')]:_0xf3c1bb[_0x3342('0x3e')],'direction':_0xf3c1bb['direction']===_0x3342('0x12e')?'A':'C','secret':_0xf3c1bb['secret'],'read':_0xf3c1bb[_0x3342('0x122')],'attachment':_0xf3c1bb[_0x3342('0xe6')]};})['value']()};return ejs[_0x3342('0x130')](path[_0x3342('0xed')](config[_0x3342('0xef')],_0x3342('0x11d'),'views',_0x3342('0x131')),{'interaction':_0x1597da})[_0x3342('0x20')](function(_0x267752){var _0x47bdd3=path[_0x3342('0xed')](_0xd16f,_0x3342('0x132')+_0x3c85d2['id']+'-'+_0x18e629+_0x3342('0x133'));var _0x5b9ac8={'path':_0x47bdd3,'channel':'Chat','interactionId':_0x3c85d2['id']};return pdf[_0x3342('0x134')](_0x267752,_0x5b9ac8);})[_0x3342('0x20')](function(){return new BPromise(function(_0x567761,_0x17cb20){zipdir(_0xd16f,{'saveTo':_0x212ec9},function(_0x5fbd3c,_0x33a274){if(_0x5fbd3c)return _0x17cb20(_0x5fbd3c);return _0x567761(_0x33a274);});})[_0x3342('0x20')](function(){return new BPromise(function(_0x90ef48,_0x76b760){rimraf(_0xd16f,function(_0x1ec7ff){if(_0x1ec7ff)_0x76b760(_0x1ec7ff);return _0x90ef48();});});})[_0x3342('0x20')](function(){return _0x13d5ae[_0x3342('0xee')](_0x212ec9,_0x5b2c37,function(_0x4f3f28){if(_0x4f3f28){console[_0x3342('0x135')](_0x3342('0x136'),_0x4f3f28);}else{fs[_0x3342('0x137')](_0x212ec9);}});});});}else{return _0x13d5ae[_0x3342('0x38')](0xc8);}})[_0x3342('0x46')](handleError(_0x13d5ae,null));};
\ No newline at end of file
+var _0x8603=['Unauthorized','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','close','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','CmContact','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailServerOut','Smtp','service','host','port','secure','auth','pass','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','mailTranscript','addMessage','ids','omit','getMessages','nolimit','pick','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','getMyMessages','hasOwnProperty','includeAgent','addTags','setTags','spread','chatInteractionTags:save','removeTags','download','unix','server','files','attachments','Attachment','Account','Owner','mkdirSync','Chat','N.A.','closedAt','disposition','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','lastName','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','client','http','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','save','update','then','stack','name','send','render','contact','agent','interaction','account','Users','fullname','Tags','TagIds','split','push','catch','index','map','ChatInteraction','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','field','color','from','tools_tags','select','u.id','u.fullname','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','Tag','forEach','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','keys','some','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','show','params','include','options','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooMetadata','email','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','vidaooNote','follow','ValidationError','Error\x20in\x20Vidaoo\x20configuration','out','ChatMessage','customUpdate','abandon','Interaction\x20already\x20assigned','closed','AbandonInteraction','file','originalname','basename','mimetype','attachmentDownload'];(function(_0x505eb4,_0x489e88){var _0x2af8f5=function(_0x1e4450){while(--_0x1e4450){_0x505eb4['push'](_0x505eb4['shift']());}};_0x2af8f5(++_0x489e88);}(_0x8603,0x190));var _0x3860=function(_0x23a079,_0xb8c9aa){_0x23a079=_0x23a079-0x0;var _0x53f2a5=_0x8603[_0x23a079];return _0x53f2a5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3860('0x0'));var zipdir=require(_0x3860('0x1'));var jsonpatch=require(_0x3860('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3860('0x3'));var Mustache=require(_0x3860('0x4'));var util=require(_0x3860('0x5'));var path=require('path');var sox=require(_0x3860('0x6'));var csv=require('to-csv');var ejs=require(_0x3860('0x7'));var fs=require('fs');var fs_extra=require(_0x3860('0x8'));var _=require(_0x3860('0x9'));var squel=require(_0x3860('0xa'));var crypto=require(_0x3860('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3860('0xc'));var Papa=require(_0x3860('0xd'));var Redis=require('ioredis');var authService=require(_0x3860('0xe'));var qs=require(_0x3860('0xf'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x3860('0x10'));var hardwareService=require(_0x3860('0x11'));var logger=require('../../config/logger')(_0x3860('0x12'));var utils=require(_0x3860('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x3860('0x14'));var db=require(_0x3860('0x15'))['db'];config[_0x3860('0x16')]=_[_0x3860('0x17')](config[_0x3860('0x16')],{'host':_0x3860('0x18'),'port':0x18eb});var socket=require(_0x3860('0x19'))(new Redis(config[_0x3860('0x16')]));require(_0x3860('0x1a'))[_0x3860('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x3860('0x1c')][_0x3860('0x1d')]({'port':0x232b});var client9004=jayson[_0x3860('0x1c')][_0x3860('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x1055b3,_0xfa0c9a,_0x2d8a3a,_0x378305){return new BPromise(function(_0x311fdb,_0x3c0d91){var _0x3e51b4=_0x378305||client;return _0x3e51b4[_0x3860('0x1e')](_0x1055b3,_0x2d8a3a)['then'](function(_0x4863bd){logger[_0x3860('0x1f')](_0x3860('0x20'),_0xfa0c9a,_0x3860('0x21'));logger['debug'](_0x3860('0x22'),_0xfa0c9a,_0x3860('0x21'),JSON[_0x3860('0x23')](_0x4863bd));if(_0x4863bd[_0x3860('0x24')]){if(_0x4863bd[_0x3860('0x24')][_0x3860('0x25')]===0x1f4){logger[_0x3860('0x24')](_0x3860('0x20'),_0xfa0c9a,_0x4863bd[_0x3860('0x24')][_0x3860('0x26')]);return _0x3c0d91(_0x4863bd[_0x3860('0x24')][_0x3860('0x26')]);}logger[_0x3860('0x24')](_0x3860('0x20'),_0xfa0c9a,_0x4863bd[_0x3860('0x24')]['message']);return _0x311fdb(_0x4863bd[_0x3860('0x24')][_0x3860('0x26')]);}else{logger[_0x3860('0x1f')](_0x3860('0x20'),_0xfa0c9a,_0x3860('0x21'));_0x311fdb(_0x4863bd['result'][_0x3860('0x26')]);}})['catch'](function(_0x577750){logger[_0x3860('0x24')](_0x3860('0x20'),_0xfa0c9a,_0x577750);_0x3c0d91(_0x577750);});});}function respondWithStatusCode(_0x54b5ec,_0x4d9a90){_0x4d9a90=_0x4d9a90||0xcc;return function(_0x5f42d5){if(_0x5f42d5){return _0x54b5ec[_0x3860('0x27')](_0x4d9a90);}return _0x54b5ec[_0x3860('0x28')](_0x4d9a90)[_0x3860('0x29')]();};}function respondWithResult(_0x371f3a,_0x9332a5){_0x9332a5=_0x9332a5||0xc8;return function(_0x228d34){if(_0x228d34){return _0x371f3a['status'](_0x9332a5)['json'](_0x228d34);}};}function respondWithFilteredResult(_0x389bd0,_0x1f1809){return function(_0x5a9af2){if(_0x5a9af2){var _0x2551f4=typeof _0x1f1809[_0x3860('0x2a')]===_0x3860('0x2b')&&typeof _0x1f1809[_0x3860('0x2c')]===_0x3860('0x2b');var _0x4bbae9=_0x5a9af2[_0x3860('0x2d')];var _0xf624ba=_0x2551f4?0x0:_0x1f1809[_0x3860('0x2a')];var _0x4bd90c=_0x2551f4?_0x5a9af2[_0x3860('0x2d')]:_0x1f1809['offset']+_0x1f1809[_0x3860('0x2c')];var _0x4825f0;if(_0x4bd90c>=_0x4bbae9){_0x4bd90c=_0x4bbae9;_0x4825f0=0xc8;}else{_0x4825f0=0xce;}_0x389bd0[_0x3860('0x28')](_0x4825f0);return _0x389bd0[_0x3860('0x2e')](_0x3860('0x2f'),_0xf624ba+'-'+_0x4bd90c+'/'+_0x4bbae9)['json'](_0x5a9af2);}return null;};}function patchUpdates(_0x39c751){return function(_0x451b0c){try{jsonpatch['apply'](_0x451b0c,_0x39c751,!![]);}catch(_0x1c94cc){return BPromise['reject'](_0x1c94cc);}return _0x451b0c[_0x3860('0x30')]();};}function saveUpdates(_0x3a577a,_0x35185c){return function(_0x2fc231){if(_0x2fc231){return _0x2fc231[_0x3860('0x31')](_0x3a577a)[_0x3860('0x32')](function(_0x1d3fd0){return _0x1d3fd0;});}return null;};}function removeEntity(_0x4d30bc,_0x1a48b6){return function(_0x396ccf){if(_0x396ccf){return _0x396ccf['destroy']()[_0x3860('0x32')](function(){_0x4d30bc[_0x3860('0x28')](0xcc)[_0x3860('0x29')]();});}};}function handleEntityNotFound(_0x5af661,_0x523cc1){return function(_0x285b1b){if(!_0x285b1b){_0x5af661[_0x3860('0x27')](0x194);}return _0x285b1b;};}function handleError(_0x3abf18,_0xa921ed){_0xa921ed=_0xa921ed||0x1f4;return function(_0x59271f){logger['error'](_0x59271f[_0x3860('0x33')]);if(_0x59271f[_0x3860('0x34')]){delete _0x59271f[_0x3860('0x34')];}_0x3abf18[_0x3860('0x28')](_0xa921ed)[_0x3860('0x35')](_0x59271f);};}function getMustacheRender(_0x4df2a9,_0x424424){return Mustache[_0x3860('0x36')](_0x4df2a9,_['merge'](_0x424424['body'],{'contact':_0x424424[_0x3860('0x37')],'message':_0x424424[_0x3860('0x26')],'agent':_0x424424[_0x3860('0x38')],'interaction':_0x424424[_0x3860('0x39')],'account':_0x424424[_0x3860('0x3a')]}))||'';}function getInteractionUsers(_0x592311,_0x28f04d){return new BPromise(function(_0x510aef,_0x112600){try{if(_0x28f04d[_0x592311['id']]){_0x592311[_0x3860('0x3b')]=_['map'](_0x28f04d[_0x592311['id']],function(_0x36d9bd){return{'id':_0x36d9bd['id'],'fullname':_0x36d9bd[_0x3860('0x3c')]};});}}catch(_0x4f3303){_0x112600(_0x4f3303);}_0x510aef(_0x592311);});}function getInteractionTags(_0x1ef9aa,_0xc7d34d){return new BPromise(function(_0x15bd2c,_0xf346e){try{if(_0x1ef9aa['TagIds']){_0x1ef9aa[_0x3860('0x3d')]=[];_0x1ef9aa[_0x3860('0x3e')][_0x3860('0x3f')](',')['forEach'](function(_0x3a87e5){_0x1ef9aa['Tags'][_0x3860('0x40')](_0xc7d34d[_0x3a87e5]);});}delete _0x1ef9aa[_0x3860('0x3e')];}catch(_0x405bfc){_0xf346e(_0x405bfc);}_0x15bd2c(_0x1ef9aa);});}function updateChatInteraction(_0x3f613f,_0x2220c8,_0x3f4216){return new BPromise(function(_0x4e0a44,_0xbbbf01){return getInteractionUsers(_0x3f613f,_0x3f4216)[_0x3860('0x32')](function(_0x5dc78f){return getInteractionTags(_0x5dc78f,_0x2220c8);})['then'](function(_0x2938d4){_0x4e0a44(_0x2938d4);})[_0x3860('0x41')](function(_0x4f2f53){_0xbbbf01(_0x4f2f53);});});}exports[_0x3860('0x42')]=function(_0x30d8eb,_0x4c6c23){var _0xa6791a={},_0x56a650={},_0x392dc3={'count':0x0,'rows':[]};var _0x37e5c3=_[_0x3860('0x43')](db[_0x3860('0x44')][_0x3860('0x45')],function(_0x15ebbd){return{'name':_0x15ebbd[_0x3860('0x46')],'type':_0x15ebbd[_0x3860('0x47')][_0x3860('0x48')]};});_0x56a650[_0x3860('0x49')]=_[_0x3860('0x43')](_0x37e5c3,'name');_0x56a650[_0x3860('0x4a')]=_['keys'](_0x30d8eb[_0x3860('0x4a')]);_0x56a650[_0x3860('0x4b')]=_[_0x3860('0x4c')](_0x56a650[_0x3860('0x49')],_0x56a650[_0x3860('0x4a')]);_0xa6791a[_0x3860('0x4d')]=_[_0x3860('0x4c')](_0x56a650[_0x3860('0x49')],qs['fields'](_0x30d8eb[_0x3860('0x4a')][_0x3860('0x4e')]));_0xa6791a[_0x3860('0x4d')]=_0xa6791a['attributes'][_0x3860('0x4f')]?_0xa6791a[_0x3860('0x4d')]:_0x56a650[_0x3860('0x49')];if(!_0x30d8eb[_0x3860('0x4a')]['hasOwnProperty']('nolimit')){_0xa6791a[_0x3860('0x2c')]=qs['limit'](_0x30d8eb[_0x3860('0x4a')][_0x3860('0x2c')]);_0xa6791a[_0x3860('0x2a')]=qs['offset'](_0x30d8eb[_0x3860('0x4a')]['offset']);}_0xa6791a[_0x3860('0x50')]=qs['sort'](_0x30d8eb[_0x3860('0x4a')][_0x3860('0x51')]);_0xa6791a[_0x3860('0x52')]=qs['filters'](_['pick'](_0x30d8eb[_0x3860('0x4a')],_0x56a650[_0x3860('0x4b')]),_0x37e5c3);var _0x478dd9=[];var _0x3910f5=squel['select']()[_0x3860('0x53')]('id')[_0x3860('0x53')](_0x3860('0x34'))[_0x3860('0x53')](_0x3860('0x54'))[_0x3860('0x55')](_0x3860('0x56'));var _0x5a9987=squel[_0x3860('0x57')]()[_0x3860('0x53')](_0x3860('0x58'))[_0x3860('0x53')](_0x3860('0x59'))[_0x3860('0x53')]('ui.ChatInteractionId')[_0x3860('0x55')](_0x3860('0x5a'),'ui')[_0x3860('0x5b')](_0x3860('0x5c'),'u',_0x3860('0x5d'));var _0x1e2b5d=squel[_0x3860('0x57')]()[_0x3860('0x55')]('chat_interactions','i')[_0x3860('0x5b')](_0x3860('0x5e'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x3860('0x5b')](_0x3860('0x5c'),'o',_0x3860('0x5f'))['left_join'](_0x3860('0x60'),'a','a.id\x20=\x20i.ChatWebsiteId')[_0x3860('0x5b')](_0x3860('0x61'),'me',_0x3860('0x62'))[_0x3860('0x5b')](_0x3860('0x63'),'it',_0x3860('0x64'))[_0x3860('0x5b')](_0x3860('0x56'),'t',_0x3860('0x65'));var _0x151492=squel[_0x3860('0x66')]();var _0x2bac24=[];var _0x58147d=squel['expr']();var _0x5111e0;if(_0x30d8eb[_0x3860('0x4a')]['search']){_0x5111e0=as['parseSearch'](_0x30d8eb[_0x3860('0x4a')][_0x3860('0x67')]);var _0x2ff440=_0x5111e0[_0x3860('0x68')];for(var _0x3d6c17=0x0;_0x3d6c17<_0x5111e0[_0x3860('0x69')]['length'];_0x3d6c17++){var _0x49ec68=_0x5111e0['conditions'][_0x3d6c17];var _0x1d6c70='i';var _0x1c1da4=_[_0x3860('0x6a')](_0x37e5c3,['name',_0x49ec68[_0x3860('0x53')]]);if(!_0x1c1da4){switch(_0x49ec68['field']){case _0x3860('0x6b'):if(_0x49ec68[_0x3860('0x6c')]==0x1){_0x1e2b5d['having']('`'+_0x49ec68[_0x3860('0x53')]+_0x3860('0x6d'));}else{_0x1e2b5d[_0x3860('0x6e')]('`'+_0x49ec68[_0x3860('0x53')]+'`\x20>\x200');}break;case _0x3860('0x6f'):if(_0x49ec68[_0x3860('0x70')]===_0x3860('0x71')){if(_0x49ec68['value']['split']('\x20')[_0x3860('0x4f')]>0x1){_0x151492[_0x2ff440](_0x3860('0x72'),qs[_0x3860('0x73')](_0x49ec68[_0x3860('0x6c')]),null);}else{var _0x28a8b4='%'+_0x49ec68[_0x3860('0x6c')]+'%';_0x151492[_0x2ff440]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x28a8b4,_0x28a8b4,_0x28a8b4);}}else{_0x1c1da4=_[_0x3860('0x6a')](_0x37e5c3,[_0x3860('0x34'),'ContactId']);_0x49ec68[_0x3860('0x53')]=_0x3860('0x74');_0x3427a5=as[_0x3860('0x75')](_0x1d6c70,_0x1c1da4[_0x3860('0x47')],_0x49ec68);_0x151492[_0x2ff440](_0x3427a5[_0x3860('0x76')],_0x3427a5[_0x3860('0x6c')]['start'],_0x3427a5[_0x3860('0x6c')][_0x3860('0x29')]);}break;case _0x3860('0x77'):var _0x27e5ab=_0x49ec68[_0x3860('0x6c')][_0x3860('0x3f')](',')['map'](function(_0x1ae31b){return Number(_0x1ae31b);});_0x27e5ab[_0x3860('0x78')](function(_0x1c33dc){_0x58147d['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1c33dc+',%');});_0x2bac24=_['union'](_0x2bac24,_0x27e5ab);break;case _0x3860('0x79'):if(_0x49ec68[_0x3860('0x70')]===_0x3860('0x71')){_0x151492[_0x2ff440](_0x3860('0x7a'),'%'+_0x49ec68[_0x3860('0x6c')]+'%',null);}else{_0x1c1da4=_['find'](_0x37e5c3,['name',_0x3860('0x7b')]);_0x49ec68[_0x3860('0x53')]='UserId';_0x3427a5=as['buildExpression'](_0x1d6c70,_0x1c1da4[_0x3860('0x47')],_0x49ec68);_0x151492[_0x2ff440](_0x3427a5[_0x3860('0x76')],_0x3427a5['value'][_0x3860('0x7c')],_0x3427a5[_0x3860('0x6c')][_0x3860('0x29')]);}break;case _0x3860('0x7d'):_0x3427a5=as['buildExpression']('me',null,_0x49ec68);_0x151492[_0x2ff440](_0x3427a5[_0x3860('0x76')],_0x3427a5[_0x3860('0x6c')]['start'],_0x3427a5['value'][_0x3860('0x29')]);break;}}else{var _0x3427a5=as['buildExpression'](_0x1d6c70,_0x1c1da4[_0x3860('0x47')],_0x49ec68);_0x151492[_0x2ff440](_0x3427a5['text'],_0x3427a5[_0x3860('0x6c')]['start'],_0x3427a5['value'][_0x3860('0x29')]);}}}else{var _0x49c356=_(_0x30d8eb[_0x3860('0x4a')])[_0x3860('0x7e')]()[_0x3860('0x43')](function(_0x2fd2f4){return _[_0x3860('0x7f')](_0x37e5c3,[_0x3860('0x34'),_0x2fd2f4])?_0x2fd2f4:undefined;})['compact']()[_0x3860('0x6c')]();if(!_[_0x3860('0x80')](_0x49c356)){_0x49c356[_0x3860('0x78')](function(_0x5d7cc4){if(_0x5d7cc4===_0x3860('0x81')){_0x1e2b5d['where'](_0x3860('0x82'),[][_0x3860('0x83')](_0x30d8eb['query'][_0x5d7cc4]));}else if(_0x5d7cc4===_0x3860('0x84')){var _0x2cd731=JSON[_0x3860('0x85')](_0x30d8eb['query'][_0x5d7cc4])['$gte'];var _0x5a282a=JSON['parse'](_0x30d8eb[_0x3860('0x4a')][_0x5d7cc4])[_0x3860('0x86')];_0x1e2b5d[_0x3860('0x52')](_0x3860('0x87'),_0x2cd731,_0x5a282a);}else{if(_0x30d8eb['query'][_0x5d7cc4]==='null'){_0x1e2b5d[_0x3860('0x52')]('i.'+_0x5d7cc4+_0x3860('0x88'));}else{_0x1e2b5d[_0x3860('0x52')]('i.'+_0x5d7cc4+_0x3860('0x89'),_0x30d8eb['query'][_0x5d7cc4]);}}});}if(_0x30d8eb[_0x3860('0x4a')][_0x3860('0x8a')]){if(_0x30d8eb['query']['read']==0x1){_0x1e2b5d[_0x3860('0x6e')](_0x3860('0x8b'));}else{_0x1e2b5d[_0x3860('0x6e')](_0x3860('0x8c'));}}if(_0x30d8eb['query']['tag']){_0x2bac24=_[_0x3860('0x8d')](_0x30d8eb['query'][_0x3860('0x8e')])?_0x30d8eb[_0x3860('0x4a')]['tag']:new Array(_0x30d8eb['query']['tag']);_0x2bac24[_0x3860('0x78')](function(_0x36116e){_0x58147d['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x36116e+',%');});}if(_0x30d8eb[_0x3860('0x4a')][_0x3860('0x8f')]){var _0x2351fe=_0x30d8eb[_0x3860('0x4a')][_0x3860('0x8f')]['replace']('\x5c','\x5c\x5c')[_0x3860('0x90')](/'/g,'\x27\x27');if(qs[_0x3860('0x91')](_0x2351fe)){_0x151492['or'](_0x3860('0x92'),_0x2351fe+'%');}else{_0x151492['or'](_0x3860('0x93'),qs[_0x3860('0x73')](_0x2351fe))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x2351fe+'%');}}}_0x1e2b5d[_0x3860('0x52')](_0x151492);_0x1e2b5d[_0x3860('0x94')](_0x3860('0x95'));var _0x41ee6f={'type':db[_0x3860('0x96')]['QueryTypes']['SELECT'],'raw':!![]};var _0x196c50=_0x1e2b5d[_0x3860('0x97')]();_0x196c50[_0x3860('0x53')](_0x3860('0x95'));_0x196c50[_0x3860('0x53')](_0x3860('0x98'),_0x3860('0x6b'));if(_0xa6791a['order']){_0xa6791a[_0x3860('0x50')][_0x3860('0x78')](function(_0x58eddd){var _0x1ff95b=_0x58eddd[0x0]===_0x3860('0x99')?_0x58eddd[0x0]:'i.'+_0x58eddd[0x0];_0x1e2b5d[_0x3860('0x50')](_0x1ff95b,_0x58eddd[0x1]==='DESC'?![]:!![]);});}if(!_[_0x3860('0x80')](_0x2bac24)){_0x1e2b5d[_0x3860('0x6e')](_0x58147d);_0x196c50['where'](_0x3860('0x9a'),_0x2bac24);}BPromise['resolve']()[_0x3860('0x32')](function(){if(!_0x5111e0){if(_0x30d8eb[_0x3860('0x4a')]['ChatWebsiteId'])return;_0x196c50[_0x3860('0x52')](_0x3860('0x9b'));_0x1e2b5d[_0x3860('0x52')](_0x3860('0x9b'));return;}if(_0x30d8eb[_0x3860('0x9c')]['role']!==_0x3860('0x38'))return;return _0x30d8eb[_0x3860('0x9c')][_0x3860('0x9d')]({'attributes':['id'],'raw':!![]})[_0x3860('0x32')](function(_0x3c9837){if(_['isEmpty'](_0x3c9837)){_0x196c50['where'](_0x3860('0x9e'));_0x1e2b5d[_0x3860('0x52')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x196c50[_0x3860('0x52')](_0x3860('0x82'),_[_0x3860('0x43')](_0x3c9837,'id'));_0x1e2b5d[_0x3860('0x52')]('i.ChatWebsiteId\x20IN\x20?',_[_0x3860('0x43')](_0x3c9837,'id'));}});})['then'](function(){if(_0x30d8eb[_0x3860('0x9c')][_0x3860('0x9f')]===_0x3860('0x38')&&!_0x5111e0&&!_0x30d8eb[_0x3860('0x4a')][_0x3860('0x81')])return[];return db[_0x3860('0xa0')][_0x3860('0x4a')](_0x196c50['toString'](),_0x41ee6f);})[_0x3860('0x32')](function(_0x47396d){_0x392dc3['count']=_0x47396d['length'];if(_0x392dc3['count']===0x0)return[];return db['sequelize'][_0x3860('0x4a')](_0x3910f5[_0x3860('0xa1')](),_0x41ee6f)[_0x3860('0x32')](function(_0x1482cd){_0x478dd9=_[_0x3860('0xa2')](_0x1482cd,'id');_0x41ee6f=_[_0x3860('0xa3')](_0x41ee6f,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x30d8eb[_0x3860('0x4a')]['fields']){_0xa6791a[_0x3860('0x4d')][_0x3860('0x78')](function(_0x897ea0){_0x1e2b5d[_0x3860('0x53')]('i.'+_0x897ea0);});}else{_0x1e2b5d[_0x3860('0x53')](_0x3860('0x98'),_0x3860('0x6b'));_0x1e2b5d[_0x3860('0x53')](_0x3860('0xa4'),_0x3860('0xa5'));_0x1e2b5d[_0x3860('0x53')]('a.mandatoryDisposition',_0x3860('0xa6'));_0x1e2b5d[_0x3860('0x53')](_0x3860('0xa7'),'contactName');_0x1e2b5d[_0x3860('0x53')](_0x3860('0xa8'));_0x1e2b5d[_0x3860('0x53')](_0x3860('0xa9'),'Contact.firstName');_0x1e2b5d[_0x3860('0x53')](_0x3860('0xaa'),_0x3860('0xab'));_0x1e2b5d['field'](_0x3860('0xac'),_0x3860('0xad'));_0x1e2b5d[_0x3860('0x53')]('c.phone',_0x3860('0xae'));_0x1e2b5d[_0x3860('0x53')](_0x3860('0xaf'),'Contact.mobile');_0x1e2b5d[_0x3860('0x53')](_0x3860('0xb0'),_0x3860('0xb1'));_0x1e2b5d['field'](_0x3860('0xb2'),_0x3860('0xb3'));_0x1e2b5d[_0x3860('0x53')]('o.internal',_0x3860('0xb4'));_0x1e2b5d['field'](_0x3860('0xb5'),'TagIds');}if(_0xa6791a[_0x3860('0x2c')])_0x1e2b5d[_0x3860('0x2c')](_0xa6791a[_0x3860('0x2c')]);if(_0xa6791a[_0x3860('0x2a')])_0x1e2b5d[_0x3860('0x2a')](_0xa6791a[_0x3860('0x2a')]);return db[_0x3860('0xa0')][_0x3860('0x4a')](_0x1e2b5d[_0x3860('0xa1')](),_0x41ee6f);})[_0x3860('0x32')](function(_0x10b4e8){if(_0x10b4e8[_0x3860('0x4f')]>0x0)_0x5a9987[_0x3860('0x52')](_0x3860('0xb6'),_[_0x3860('0x43')](_0x10b4e8,'id'));return db[_0x3860('0xa0')][_0x3860('0x4a')](_0x5a9987[_0x3860('0xa1')](),_0x41ee6f)['then'](function(_0x37575b){var _0x1d6d2b=_[_0x3860('0xb7')](_0x37575b,_0x3860('0xb8'));var _0x3e6bf8=[];_0x10b4e8[_0x3860('0x78')](function(_0xffe2a1){_0x3e6bf8[_0x3860('0x40')](updateChatInteraction(_0xffe2a1,_0x478dd9,_0x1d6d2b));});return BPromise[_0x3860('0xb9')](_0x3e6bf8);});});})[_0x3860('0x32')](function(_0x3b932d){_0x392dc3['rows']=_0x3b932d;return _0x392dc3;})[_0x3860('0x32')](respondWithFilteredResult(_0x4c6c23,_0xa6791a))[_0x3860('0x41')](handleError(_0x4c6c23,null));};exports[_0x3860('0xba')]=function(_0x6334ca,_0x4a929e){var _0x1a1994={'raw':![],'where':{'id':_0x6334ca[_0x3860('0xbb')]['id']}},_0x2ece36={};_0x2ece36[_0x3860('0x49')]=_['keys'](db[_0x3860('0x44')]['rawAttributes']);_0x2ece36['query']=_[_0x3860('0x7e')](_0x6334ca[_0x3860('0x4a')]);_0x2ece36[_0x3860('0x4b')]=_[_0x3860('0x4c')](_0x2ece36[_0x3860('0x49')],_0x2ece36[_0x3860('0x4a')]);_0x1a1994[_0x3860('0x4d')]=_[_0x3860('0x4c')](_0x2ece36[_0x3860('0x49')],qs[_0x3860('0x4e')](_0x6334ca[_0x3860('0x4a')][_0x3860('0x4e')]));_0x1a1994[_0x3860('0x4d')]=_0x1a1994['attributes'][_0x3860('0x4f')]?_0x1a1994['attributes']:_0x2ece36[_0x3860('0x49')];if(_0x6334ca[_0x3860('0x4a')]['includeAll']){_0x1a1994[_0x3860('0xbc')]=[{'all':!![]}];}_0x1a1994=_[_0x3860('0xa3')]({},_0x1a1994,_0x6334ca[_0x3860('0xbd')]);return db[_0x3860('0x44')][_0x3860('0x6a')](_0x1a1994)[_0x3860('0x32')](handleEntityNotFound(_0x4a929e,null))[_0x3860('0x32')](respondWithResult(_0x4a929e,null))['catch'](handleError(_0x4a929e,null));};exports[_0x3860('0xbe')]=function(_0x6d1819,_0x9e1682){return db[_0x3860('0x44')][_0x3860('0xbe')](_0x6d1819['body'],{})[_0x3860('0x32')](respondWithResult(_0x9e1682,0xc9))['catch'](handleError(_0x9e1682,null));};exports['update']=function(_0x56af8c,_0x1059a4){if(_0x56af8c[_0x3860('0x7d')]['id']){delete _0x56af8c[_0x3860('0x7d')]['id'];}return db[_0x3860('0x44')][_0x3860('0x6a')]({'where':{'id':_0x56af8c[_0x3860('0xbb')]['id']}})[_0x3860('0x32')](handleEntityNotFound(_0x1059a4,null))[_0x3860('0x32')](saveUpdates(_0x56af8c['body'],null))[_0x3860('0x32')](respondWithResult(_0x1059a4,null))[_0x3860('0x41')](handleError(_0x1059a4,null));};exports['destroy']=function(_0x490884,_0x4428eb){return db[_0x3860('0x44')][_0x3860('0x6a')]({'where':{'id':_0x490884['params']['id']}})[_0x3860('0x32')](handleEntityNotFound(_0x4428eb,null))['then'](removeEntity(_0x4428eb,null))[_0x3860('0x41')](handleError(_0x4428eb,null));};exports['describe']=function(_0x41fd53,_0xf91fc2){return db['ChatInteraction'][_0x3860('0xbf')]()[_0x3860('0x32')](respondWithResult(_0xf91fc2,null))['catch'](handleError(_0xf91fc2,null));};exports[_0x3860('0xc0')]=function(_0x398bc1,_0x3312c4){var _0x501519=_0x398bc1[_0x3860('0xbb')]['id'];var _0x47fba5;var _0x3e3dac;var _0x18b845;return db['ChatInteraction'][_0x3860('0xc1')]({'where':{'id':_0x501519}})[_0x3860('0x32')](function(_0x2b1dc1){_0x47fba5=_0x2b1dc1;return db[_0x3860('0xc2')][_0x3860('0xc1')]({'where':{'id':_0x2b1dc1['ChatWebsiteId']},'attributes':['id',_0x3860('0xc3'),_0x3860('0xc4'),'vidaooTopic','vidaooNote',_0x3860('0xc5')],'raw':!![]});})['then'](function(_0xe27f6b){if(_0xe27f6b&&_0xe27f6b[_0x3860('0xc3')]&&_0xe27f6b['vidaooEscalation']){_0x3e3dac=_0xe27f6b;var _0x1041bf={'interaction':{'id':_0x501519},'agent':{'id':_0x398bc1['user']['id'],'name':_0x398bc1[_0x3860('0x9c')]['name'],'fullname':_0x398bc1[_0x3860('0x9c')][_0x3860('0x3c')],'email':_0x398bc1[_0x3860('0x9c')][_0x3860('0xc6')]},'contact':_0x398bc1['body'][_0x3860('0x37')],'account':_0x398bc1[_0x3860('0x7d')][_0x3860('0x3a')]};var _0x1e1baf={'rejectUnauthorized':![],'method':'POST','url':_0x3860('0xc7'),'headers':{'X-APIKEY':_0xe27f6b[_0x3860('0xc3')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x398bc1['user'][_0x3860('0xc6')]],'buttons':null,'topic':_0x3e3dac[_0x3860('0xc8')],'note':_[_0x3860('0xc9')](_0x3e3dac[_0x3860('0xca')])?null:getMustacheRender(_0x3e3dac['vidaooNote'],_0x1041bf),'metadata':null},'redirect':_0x3860('0xcb'),'json':!![]};try{if(!_[_0x3860('0xc9')](_0x3e3dac[_0x3860('0xc5')])){var _0x1ce6e6=getMustacheRender(_0x3e3dac['vidaooMetadata'],_0x1041bf);var _0x1df44=JSON['parse'](_0x1ce6e6);_0x1e1baf['body']['metadata']=_0x1df44;}}catch(_0x15b53f){throw new db[(_0x3860('0x96'))][(_0x3860('0xcc'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x1e1baf);}else{throw new db[(_0x3860('0x96'))]['ValidationError'](_0x3860('0xcd'));}})[_0x3860('0x32')](function(_0x21c052){_0x18b845=_0x21c052;if(_0x18b845['id']){var _0x3a920b={'body':_0x18b845['join_url'],'ChatWebsiteId':_0x3e3dac['id'],'ChatInteractionId':_0x47fba5['id'],'direction':_0x3860('0xce'),'UserId':_0x398bc1[_0x3860('0x9c')]['id']};return db[_0x3860('0xcf')]['create'](_0x3a920b,{});}else{throw new db[(_0x3860('0x96'))][(_0x3860('0xcc'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})['then'](function(){return _0x47fba5['updateAttributes']({'vidaooSessionId':_0x18b845['id']});})['then'](respondWithResult(_0x3312c4,null))[_0x3860('0x41')](handleError(_0x3312c4,null));};exports[_0x3860('0xd0')]=function(_0x2a09a2,_0x266347){if(_0x2a09a2[_0x3860('0x7d')]['id']){delete _0x2a09a2[_0x3860('0x7d')]['id'];}return db[_0x3860('0x44')]['find']({'where':{'id':_0x2a09a2['params']['id']},'include':[{'model':db['CmContact'],'as':_0x3860('0x6f')}]})[_0x3860('0x32')](handleEntityNotFound(_0x266347,null))[_0x3860('0x32')](saveUpdates(_0x2a09a2['body'],null))[_0x3860('0x32')](respondWithResult(_0x266347,null))['catch'](handleError(_0x266347,null));};exports['abandon']=function(_0x5f0700,_0x46f630,_0x505ba2){if(_0x5f0700['body']['id']){delete _0x5f0700[_0x3860('0x7d')]['id'];}return db[_0x3860('0x44')][_0x3860('0x6a')]({'where':{'id':_0x5f0700[_0x3860('0xbb')]['id']}})['then'](function(_0x53392b){if(!_0x53392b){logger['error']('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x3860('0xd1'),0x194,'entity\x20not\x20found');_0x46f630['sendStatus'](0x194);}else{if(_0x53392b[_0x3860('0x7b')]){throw new db[(_0x3860('0x96'))][(_0x3860('0xcc'))](_0x3860('0xd2'));}}return _0x53392b;})['then'](function(_0x6e541d){if(_0x6e541d){return _0x6e541d[_0x3860('0x31')]({'closed':_0x5f0700[_0x3860('0x7d')][_0x3860('0xd3')],'disposition':_0x5f0700['body']['disposition']})[_0x3860('0x32')](function(_0x55c19c){return _0x55c19c;});}})[_0x3860('0x32')](function(_0x4ab85d){return respondWithRpcPromise(_0x3860('0xd4'),_0x3860('0xd1'),_0x5f0700[_0x3860('0x7d')],client9004);})[_0x3860('0x32')](respondWithResult(_0x46f630,null))[_0x3860('0x41')](handleError(_0x46f630,null));};exports['attachmentUpload']=function(_0x5d3c4d,_0x5e3c54,_0x39e855){_0x5d3c4d[_0x3860('0x7d')][_0x3860('0x34')]=_0x5d3c4d[_0x3860('0xd5')][_0x3860('0xd6')];_0x5d3c4d['body'][_0x3860('0xd7')]=_0x5d3c4d[_0x3860('0xd5')]['filename'];_0x5d3c4d[_0x3860('0x7d')]['type']=_0x5d3c4d[_0x3860('0xd5')][_0x3860('0xd8')];return db['Attachment'][_0x3860('0xbe')](_0x5d3c4d[_0x3860('0x7d')])[_0x3860('0x32')](respondWithResult(_0x5e3c54,0xc9))[_0x3860('0x41')](handleError(_0x5e3c54,null));};exports[_0x3860('0xd9')]=function(_0x3e2dfc,_0x135e84,_0x199bbc){return db[_0x3860('0x44')][_0x3860('0xc1')]({'where':{'id':_0x3e2dfc[_0x3860('0xbb')]['id']},'raw':!![]})[_0x3860('0x32')](handleEntityNotFound(_0x135e84,null))['then'](function(_0x369a4b){if(_0x369a4b){if(_0x369a4b['closed']){return _0x135e84[_0x3860('0x28')](0x193)['json']({'status':0x193,'message':_0x3860('0xda')});}return db['Attachment'][_0x3860('0xc1')]({'where':{'id':_0x3e2dfc['query']['attachId']},'raw':!![]})[_0x3860('0x32')](handleEntityNotFound(_0x135e84,null));}})[_0x3860('0x32')](function(_0xa152b4){if(_0xa152b4){var _0x28931d=_0xa152b4[_0x3860('0xdb')]!==null;var _0x5e65a2=path[_0x3860('0xdc')](config[_0x3860('0xdd')],_0x3860('0xde'));if(_0x28931d){_0x5e65a2=path[_0x3860('0xdc')](_0x5e65a2,_0x3860('0xdf'));}var _0x268658=path['join'](_0x5e65a2,_0xa152b4[_0x3860('0xd7')]);return _0x135e84['download'](_0x268658);}})[_0x3860('0x41')](handleError(_0x135e84,null));};exports[_0x3860('0xe0')]=function(_0x118c4e,_0x471da9){var _0x244ceb=null;var _0x24f8a6=null;var _0x532349=null;var _0x17fa12=null;if(_0x118c4e[_0x3860('0x7d')]['id']){delete _0x118c4e[_0x3860('0x7d')]['id'];}if(_0x118c4e[_0x3860('0x7d')]['mailTranscript']){_0x17fa12=path[_0x3860('0xdc')](config[_0x3860('0xdd')],_0x3860('0xe1'),util[_0x3860('0xe2')](_0x3860('0xe3'),Date[_0x3860('0xe4')]()));_0x118c4e['body'][_0x3860('0xe5')]=_0x17fa12;}return db[_0x3860('0x44')][_0x3860('0x6a')]({'where':{'id':_0x118c4e[_0x3860('0xbb')]['id']},'include':[{'model':db[_0x3860('0xcf')],'as':_0x3860('0xe6'),'include':[{'model':db['User'],'as':'User'}]}]})['then'](handleEntityNotFound(_0x471da9,null))[_0x3860('0x32')](saveUpdates(_0x118c4e[_0x3860('0x7d')],null))['then'](function(_0x276828){if(_0x276828){_0x244ceb=_0x276828;return db[_0x3860('0xc2')][_0x3860('0x6a')]({'where':{'id':_0x244ceb[_0x3860('0x81')]}});}})[_0x3860('0x32')](function(_0x1740d0){if(_0x1740d0){_0x532349=_0x1740d0;return db[_0x3860('0xe7')][_0x3860('0x6a')]({'where':{'id':_0x244ceb[_0x3860('0x74')]}});}})[_0x3860('0x32')](function(_0x975c7f){if(_0x975c7f){_0x24f8a6=_0x975c7f;if(_0x17fa12){var _0x23207b=null;for(var _0x1a1366=0x1;_0x1a1366<_0x244ceb[_0x3860('0xe6')][_0x3860('0x4f')];++_0x1a1366){_0x23207b=_0x244ceb['Messages'][_0x1a1366];var _0x56566c=_0x23207b[_0x3860('0x7b')]?util[_0x3860('0xe2')](_0x3860('0xe8'),_0x532349[_0x3860('0xe9')],_0x23207b[_0x3860('0x7b')]):_0x3860('0xea');var _0x1290e7=_0x118c4e[_0x3860('0x7d')]['customer']||util[_0x3860('0xe2')](_0x3860('0xe8'),_0x3860('0xeb'),_0x23207b['ContactId']);switch(_0x532349[_0x3860('0xec')]){case _0x3860('0xed'):_0x56566c=_0x23207b[_0x3860('0x7b')]?util[_0x3860('0xe2')](_0x3860('0xe8'),_0x532349[_0x3860('0xe9')],_0x23207b[_0x3860('0x7b')]):_0x3860('0xea');break;case _0x3860('0xee'):_0x56566c=_0x23207b['UserId']?_0x23207b[_0x3860('0x79')][_0x3860('0xef')]||_0x23207b['User'][_0x3860('0x3c')]:_0x3860('0xea');break;case _0x3860('0xf0'):_0x56566c=_0x23207b['UserId']?_0x23207b[_0x3860('0x79')][_0x3860('0x3c')]:_0x3860('0xea');break;default:_0x56566c=_0x23207b[_0x3860('0x7b')]?util['format']('%s%d',_0x532349[_0x3860('0xe9')],_0x23207b['UserId']):_0x3860('0xea');}var _0x15314d=util[_0x3860('0xe2')](_0x3860('0xf1'),moment(_0x23207b[_0x3860('0x84')])[_0x3860('0xe2')](_0x3860('0xf2')),_0x23207b[_0x3860('0xf3')]==='in'?_0x1290e7:_0x56566c,_0x23207b['body']);if(!_0x23207b[_0x3860('0xf4')]){fs[_0x3860('0xf5')](_0x17fa12,_0x15314d);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x3860('0xf6')],'as':'Smtp','raw':!![]}]});}}})[_0x3860('0x32')](function(_0x2bf644){if(_0x2bf644&&_0x2bf644[_0x3860('0xf7')]&&_0x118c4e[_0x3860('0x7d')]){var _0xd95981={'tls':{'rejectUnauthorized':![]}};if(_0x2bf644[_0x3860('0xf7')][_0x3860('0xf8')]){_0xd95981[_0x3860('0xf8')]=_0x2bf644['Smtp']['service'];}else{_0xd95981[_0x3860('0xf9')]=_0x2bf644['Smtp'][_0x3860('0xf9')];_0xd95981[_0x3860('0xfa')]=_0x2bf644[_0x3860('0xf7')][_0x3860('0xfa')];_0xd95981[_0x3860('0xfb')]=_0x2bf644[_0x3860('0xf7')][_0x3860('0xfb')];}if(_0x2bf644['Smtp']['authentication']){_0xd95981[_0x3860('0xfc')]={'user':_0x2bf644[_0x3860('0xf7')][_0x3860('0x9c')],'pass':_0x2bf644['Smtp'][_0x3860('0xfd')]};}return respondWithRpcPromise(_0x3860('0xfe'),_0x3860('0xff'),{'account':_0xd95981,'message':{'from':util['format'](_0x3860('0x100'),_0x2bf644[_0x3860('0x34')],_0x2bf644['email']||_0x2bf644['Smtp']['user']),'to':_0x118c4e['body']['mailTranscript'],'subject':_0x3860('0x101'),'text':util[_0x3860('0xe2')](_0x3860('0x102'),_0x118c4e[_0x3860('0x7d')][_0x3860('0x103')]),'attachments':[{'path':_0x17fa12}]}})['then'](function(){return _0x244ceb;})[_0x3860('0x41')](function(_0x5235e){console['error'](_0x5235e);});}else{return _0x244ceb;}})[_0x3860('0x32')](respondWithStatusCode(_0x471da9,0xc8))[_0x3860('0x41')](handleError(_0x471da9,null));};exports[_0x3860('0x104')]=function(_0x38cdf1,_0x4ab7b2,_0x4c8a10){return db['ChatMessage'][_0x3860('0x6a')]({'where':{'id':_0x38cdf1['params']['id']}})[_0x3860('0x32')](handleEntityNotFound(_0x4ab7b2,null))[_0x3860('0x32')](function(_0x2adf67){if(_0x2adf67){return _0x2adf67[_0x3860('0x104')](_0x38cdf1[_0x3860('0x7d')][_0x3860('0x105')],_[_0x3860('0x106')](_0x38cdf1[_0x3860('0x7d')],[_0x3860('0x105'),'id'])||{});}})[_0x3860('0x32')](respondWithResult(_0x4ab7b2,null))[_0x3860('0x41')](handleError(_0x4ab7b2,null));};exports[_0x3860('0x107')]=function(_0x173790,_0x20d0d2,_0x8d3ad7){var _0xf1e9ab={'raw':![],'where':{}};var _0xcf350b={};var _0x1348e0={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x3860('0xc1')]({'where':{'id':_0x173790['params']['id']}})[_0x3860('0x32')](handleEntityNotFound(_0x20d0d2,null))[_0x3860('0x32')](function(_0x11d0ab){if(_0x11d0ab){_0xcf350b[_0x3860('0x49')]=_[_0x3860('0x7e')](db[_0x3860('0xcf')][_0x3860('0x45')]);_0xcf350b[_0x3860('0x4a')]=_[_0x3860('0x7e')](_0x173790['query']);_0xcf350b[_0x3860('0x4b')]=_[_0x3860('0x4c')](_0xcf350b[_0x3860('0x49')],_0xcf350b[_0x3860('0x4a')]);_0xf1e9ab[_0x3860('0x4d')]=_[_0x3860('0x4c')](_0xcf350b[_0x3860('0x49')],qs['fields'](_0x173790[_0x3860('0x4a')][_0x3860('0x4e')]));_0xf1e9ab[_0x3860('0x4d')]=_0xf1e9ab['attributes'][_0x3860('0x4f')]?_0xf1e9ab[_0x3860('0x4d')]:_0xcf350b[_0x3860('0x49')];if(!_0x173790['query']['hasOwnProperty'](_0x3860('0x108'))){_0xf1e9ab[_0x3860('0x2c')]=qs['limit'](_0x173790[_0x3860('0x4a')]['limit']);_0xf1e9ab[_0x3860('0x2a')]=qs[_0x3860('0x2a')](_0x173790['query'][_0x3860('0x2a')]);}_0xf1e9ab['order']=qs[_0x3860('0x51')](_0x173790[_0x3860('0x4a')][_0x3860('0x51')]);_0xf1e9ab[_0x3860('0x52')]=qs[_0x3860('0x4b')](_[_0x3860('0x109')](_0x173790[_0x3860('0x4a')],_0xcf350b['filters']));_0xf1e9ab[_0x3860('0x52')]['ChatInteractionId']=_0x11d0ab['id'];if(_0x173790[_0x3860('0x4a')][_0x3860('0x8f')]){_0xf1e9ab['where']=_['merge'](_0xf1e9ab[_0x3860('0x52')],{'$or':_[_0x3860('0x43')](_0xf1e9ab[_0x3860('0x4d')],function(_0x234f93){var _0x5ed001={};_0x5ed001[_0x234f93]={'$like':'%'+_0x173790[_0x3860('0x4a')][_0x3860('0x8f')]+'%'};return _0x5ed001;})});}if(_0x173790[_0x3860('0x4a')]['$gte']){var _0x1ac962=_0x173790[_0x3860('0x4a')]['$gte'][_0x3860('0x3f')](',');var _0x35dbfe={};_0x35dbfe[_0x1ac962[0x0]]={'$gte':moment(_0x1ac962[0x1])[_0x3860('0xe2')](_0x3860('0x10a'))};_0xf1e9ab[_0x3860('0x52')]=_[_0x3860('0xa3')](_0xf1e9ab[_0x3860('0x52')],_0x35dbfe);}_0xf1e9ab=_['merge']({},_0xf1e9ab,_0x173790[_0x3860('0xbd')]);return db[_0x3860('0xcf')][_0x3860('0x2d')]({'where':_0xf1e9ab[_0x3860('0x52')]})[_0x3860('0x32')](function(_0x54ebd7){_0x1348e0[_0x3860('0x2d')]=_0x54ebd7;if(_0x173790[_0x3860('0x4a')][_0x3860('0x10b')]){_0xf1e9ab[_0x3860('0xbc')]=[{'all':!![]}];}return db[_0x3860('0xcf')][_0x3860('0x10c')](_0xf1e9ab);})['then'](function(_0x16457e){_0x1348e0[_0x3860('0x10d')]=_0x16457e;return _0x1348e0;});}})[_0x3860('0x32')](respondWithFilteredResult(_0x20d0d2,_0xf1e9ab))[_0x3860('0x41')](handleError(_0x20d0d2,null));};exports[_0x3860('0x10e')]=function(_0x2b6605,_0x11409b,_0x187e3b){var _0x4fb4f3={'where':{}},_0x21b179={},_0x28b7a2={'count':0x0,'rows':[]};return db[_0x3860('0x44')][_0x3860('0xc1')]({'where':{'id':_0x2b6605[_0x3860('0xbb')]['id']}})[_0x3860('0x32')](handleEntityNotFound(_0x11409b,null))[_0x3860('0x32')](function(_0x2ca2e7){if(_0x2ca2e7){_0x21b179[_0x3860('0x49')]=_['keys'](db[_0x3860('0xcf')][_0x3860('0x45')]);_0x21b179[_0x3860('0x4a')]=_[_0x3860('0x7e')](_0x2b6605[_0x3860('0x4a')]);_0x21b179[_0x3860('0x4b')]=_[_0x3860('0x4c')](_0x21b179[_0x3860('0x49')],_0x21b179[_0x3860('0x4a')]);_0x4fb4f3[_0x3860('0x4d')]=_[_0x3860('0x4c')](_0x21b179[_0x3860('0x49')],qs[_0x3860('0x4e')](_0x2b6605[_0x3860('0x4a')][_0x3860('0x4e')]));_0x4fb4f3['attributes']=_0x4fb4f3[_0x3860('0x4d')][_0x3860('0x4f')]?_0x4fb4f3[_0x3860('0x4d')]:_0x21b179[_0x3860('0x49')];if(!_0x2b6605[_0x3860('0x4a')][_0x3860('0x10f')](_0x3860('0x108'))){_0x4fb4f3[_0x3860('0x2c')]=qs[_0x3860('0x2c')](_0x2b6605[_0x3860('0x4a')][_0x3860('0x2c')]);_0x4fb4f3[_0x3860('0x2a')]=qs['offset'](_0x2b6605[_0x3860('0x4a')]['offset']);}_0x4fb4f3[_0x3860('0x50')]=qs['sort'](_0x2b6605[_0x3860('0x4a')]['sort']);_0x4fb4f3[_0x3860('0x52')]=qs[_0x3860('0x4b')](_['pick'](_0x2b6605[_0x3860('0x4a')],_0x21b179[_0x3860('0x4b')]));_0x4fb4f3[_0x3860('0x52')][_0x3860('0xb8')]=_0x2ca2e7['id'];if(_0x2b6605[_0x3860('0x4a')]['filter']){_0x4fb4f3['where']=_[_0x3860('0xa3')](_0x4fb4f3[_0x3860('0x52')],{'$or':_[_0x3860('0x43')](_0x4fb4f3[_0x3860('0x4d')],function(_0x31a537){var _0x438121={};_0x438121[_0x31a537]={'$like':'%'+_0x2b6605[_0x3860('0x4a')]['filter']+'%'};return _0x438121;})});}_0x4fb4f3[_0x3860('0x52')]['secret']=![];if(_0x2b6605[_0x3860('0x4a')]['id']){_0x4fb4f3[_0x3860('0x52')]['id']={'$gt':_0x2b6605[_0x3860('0x4a')]['id']};}_0x4fb4f3=_[_0x3860('0xa3')]({},_0x4fb4f3,_0x2b6605['options']);return db[_0x3860('0xcf')][_0x3860('0x2d')]({'where':_0x4fb4f3['where']})[_0x3860('0x32')](function(_0x4d4366){_0x28b7a2[_0x3860('0x2d')]=_0x4d4366;_0x4fb4f3[_0x3860('0xbc')]=[];if(_0x2b6605[_0x3860('0x4a')][_0x3860('0x110')]){_0x4fb4f3[_0x3860('0xbc')][_0x3860('0x40')]({'model':db[_0x3860('0x79')],'as':_0x3860('0x79'),'attributes':['id',_0x3860('0x3c'),'alias']});}if(_0x2b6605[_0x3860('0x4a')][_0x3860('0x10b')]){_0x4fb4f3[_0x3860('0xbc')]=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x4fb4f3);})['then'](function(_0x39c52e){_0x28b7a2[_0x3860('0x10d')]=_0x39c52e;return _0x28b7a2;});}})[_0x3860('0x32')](respondWithFilteredResult(_0x11409b,_0x4fb4f3))[_0x3860('0x41')](handleError(_0x11409b,null));};exports[_0x3860('0x111')]=function(_0x185040,_0x14cef9,_0x5e1ed4){return db[_0x3860('0x44')][_0x3860('0x6a')]({'where':{'id':_0x185040[_0x3860('0xbb')]['id']}})[_0x3860('0x32')](handleEntityNotFound(_0x14cef9,null))['then'](function(_0xbc013a){if(_0xbc013a){return _0xbc013a[_0x3860('0x112')](_0x185040['body'][_0x3860('0x105')],_[_0x3860('0x106')](_0x185040[_0x3860('0x7d')],[_0x3860('0x105'),'id'])||{})[_0x3860('0x113')](function(){return db[_0x3860('0x77')][_0x3860('0x10c')]({'attributes':['id',_0x3860('0x34'),_0x3860('0x54')],'where':{'id':_0x185040[_0x3860('0x7d')][_0x3860('0x105')]}});})[_0x3860('0x32')](function(_0x57f603){socket['emit'](_0x3860('0x114'),{'id':Number(_0x185040['params']['id']),'tags':_0x57f603||[]});return{'id':Number(_0x185040['params']['id']),'tags':_0x57f603||[]};});}})[_0x3860('0x32')](respondWithResult(_0x14cef9,null))[_0x3860('0x41')](handleError(_0x14cef9,null));};exports[_0x3860('0x115')]=function(_0x2e2ff3,_0x27c591,_0x8b9a7a){return db['ChatInteraction'][_0x3860('0x6a')]({'where':{'id':_0x2e2ff3[_0x3860('0xbb')]['id']}})['then'](handleEntityNotFound(_0x27c591,null))[_0x3860('0x32')](function(_0x5ecd57){if(_0x5ecd57){return _0x5ecd57['removeTags'](_0x2e2ff3['query'][_0x3860('0x105')]);}})[_0x3860('0x32')](respondWithStatusCode(_0x27c591,null))[_0x3860('0x41')](handleError(_0x27c591,null));};exports[_0x3860('0x116')]=function(_0x39524a,_0xa0492b){var _0x4d44de=moment()[_0x3860('0x117')]()[_0x3860('0xa1')]();var _0x1dcd01=path['join'](config[_0x3860('0xdd')],_0x3860('0x118'),_0x3860('0x119'),'tmp');var _0x198422=path['join'](config[_0x3860('0xdd')],'server',_0x3860('0x119'),_0x3860('0x11a'));var _0x1a97c1=path[_0x3860('0xdc')](_0x1dcd01,_0x4d44de);var _0x4cc748=util[_0x3860('0xe2')]('transcript-%d-%s.zip',_0x39524a[_0x3860('0xbb')]['id'],_0x4d44de);var _0x18fd61=path['join'](_0x1dcd01,_0x4cc748);var _0x39eb63=[];_0x39eb63[_0x3860('0x40')]({'model':db['User'],'as':_0x3860('0x79'),'attributes':['id',_0x3860('0x3c')],'raw':!![]});_0x39eb63[_0x3860('0x40')]({'model':db[_0x3860('0xe7')],'as':_0x3860('0x6f'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x39524a[_0x3860('0x4a')]['attachments']){_0x39eb63[_0x3860('0x40')]({'model':db[_0x3860('0x11b')],'as':'Attachment','raw':!![]});}var _0x134dfd=[{'model':db[_0x3860('0xcf')],'as':_0x3860('0xe6'),'attributes':['id','body',_0x3860('0x84'),'direction','secret','read'],'include':_0x39eb63}];_0x134dfd['push']({'model':db['ChatWebsite'],'as':_0x3860('0x11c'),'attributes':['id',_0x3860('0x34')]});_0x134dfd['push']({'model':db[_0x3860('0x79')],'as':_0x3860('0x11d'),'attributes':['id',_0x3860('0x3c')]});return db[_0x3860('0x44')][_0x3860('0x6a')]({'where':{'id':_0x39524a[_0x3860('0xbb')]['id']},'include':_0x134dfd})[_0x3860('0x32')](handleEntityNotFound(_0xa0492b,null))['then'](function(_0x2fe51b){if(_0x2fe51b){var _0x51bf5a=_0x2fe51b['get']({'plain':!![]});fs[_0x3860('0x11e')](_0x1a97c1);var _0x33abf1={'channel':_0x3860('0x11f'),'account':_0x51bf5a[_0x3860('0x11c')][_0x3860('0x34')],'agent':_0x51bf5a['Owner']?_0x51bf5a[_0x3860('0x11d')]['fullname']:_0x3860('0x120'),'createdAt':moment(_0x51bf5a['createdAt'])[_0x3860('0xe2')](_0x3860('0x10a'))[_0x3860('0xa1')](),'closedAt':_0x51bf5a[_0x3860('0xd3')]?moment(_0x51bf5a[_0x3860('0x121')])[_0x3860('0xe2')](_0x3860('0x10a'))[_0x3860('0xa1')]():'','disposition':_0x51bf5a[_0x3860('0x122')],'chatInfo':{'browser':_0x51bf5a['browserName'],'os':_0x51bf5a[_0x3860('0x123')],'referer':_0x51bf5a[_0x3860('0x124')],'customerIp':_0x51bf5a[_0x3860('0x125')],'customerPort':_0x51bf5a[_0x3860('0x126')]?_0x51bf5a[_0x3860('0x126')]:'N.A.'},'messages':_(_0x51bf5a[_0x3860('0xe6')])[_0x3860('0x127')]()['filter']({'secret':![]})['map'](function(_0x5b23d2){if(_0x5b23d2[_0x3860('0x11b')]){var _0x409781=path[_0x3860('0xdc')](_0x198422,_0x5b23d2[_0x3860('0x11b')][_0x3860('0xd7')]);if(fs[_0x3860('0x128')](_0x409781)){fs[_0x3860('0x129')](_0x409781)[_0x3860('0x12a')](fs[_0x3860('0x12b')](path[_0x3860('0xdc')](_0x1a97c1,_0x5b23d2[_0x3860('0x11b')][_0x3860('0xd7')])));}}return{'date':moment(_0x5b23d2[_0x3860('0x84')])[_0x3860('0xe2')](_0x3860('0x10a'))[_0x3860('0xa1')](),'sender':_0x5b23d2[_0x3860('0xf3')]===_0x3860('0xce')?_0x5b23d2[_0x3860('0x79')]?_0x5b23d2['User'][_0x3860('0x3c')]:_0x3860('0xea'):_0x5b23d2[_0x3860('0x6f')]['firstName']+(_0x5b23d2[_0x3860('0x6f')][_0x3860('0x12c')]?'\x20'+_0x5b23d2['Contact'][_0x3860('0x12c')]:''),'body':_0x5b23d2['Attachment']?_0x5b23d2['Attachment'][_0x3860('0xd7')]:_0x5b23d2[_0x3860('0x7d')],'direction':_0x5b23d2[_0x3860('0xf3')]===_0x3860('0xce')?'A':'C','secret':_0x5b23d2[_0x3860('0xf4')],'read':_0x5b23d2[_0x3860('0x8a')],'attachment':_0x5b23d2['Attachment']};})[_0x3860('0x6c')]()};return ejs[_0x3860('0x12d')](path[_0x3860('0xdc')](config['root'],_0x3860('0x118'),_0x3860('0x12e'),'downloadInteraction.ejs'),{'interaction':_0x33abf1})[_0x3860('0x32')](function(_0x5c5755){var _0x5dfb3b=path[_0x3860('0xdc')](_0x1a97c1,_0x3860('0x12f')+_0x51bf5a['id']+'-'+_0x4d44de+_0x3860('0x130'));var _0x1eba76={'path':_0x5dfb3b,'channel':'Chat','interactionId':_0x51bf5a['id']};return pdf[_0x3860('0x131')](_0x5c5755,_0x1eba76);})['then'](function(){return new BPromise(function(_0x34ad82,_0x44ac65){zipdir(_0x1a97c1,{'saveTo':_0x18fd61},function(_0x43cc98,_0xd9ff70){if(_0x43cc98)return _0x44ac65(_0x43cc98);return _0x34ad82(_0xd9ff70);});})['then'](function(){return new BPromise(function(_0x52e611,_0x4ccefa){rimraf(_0x1a97c1,function(_0x2c90b){if(_0x2c90b)_0x4ccefa(_0x2c90b);return _0x52e611();});});})[_0x3860('0x32')](function(){return _0xa0492b[_0x3860('0x116')](_0x18fd61,_0x4cc748,function(_0x3046f4){if(_0x3046f4){console[_0x3860('0x132')](_0x3860('0x133'),_0x3046f4);}else{fs[_0x3860('0x134')](_0x18fd61);}});});});}else{return _0xa0492b['sendStatus'](0xc8);}})[_0x3860('0x41')](handleError(_0xa0492b,null));};
\ No newline at end of file
index a9ff926..0710720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94b8=['length','emit','hasOwnProperty','hook','../../mysqldb','ChatInteraction','setMaxListeners','save','then','setDataValue','map','unreadMessages'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x94b8,0x16c));var _0x894b=function(_0x4cb793,_0x23bf08){_0x4cb793=_0x4cb793-0x0;var _0x3f645e=_0x94b8[_0x4cb793];return _0x3f645e;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x894b('0x0'))['db'][_0x894b('0x1')];var ChatMessage=require(_0x894b('0x0'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x894b('0x2')](0x0);var events={'afterCreate':_0x894b('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2156a4){return function(_0x35b7d3,_0x314c4e,_0x56fcbe){_0x35b7d3['getUsers']({'attributes':['id'],'raw':!![]})[_0x894b('0x4')](function(_0x4c5cca){_0x35b7d3[_0x894b('0x5')]('Users',_0x4c5cca[_0x894b('0x6')](function(_0x23b81b){return{'id':_0x23b81b['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x35b7d3['id'],'direction':'in','read':![]},'raw':!![]});})[_0x894b('0x4')](function(_0x264934){_0x35b7d3[_0x894b('0x5')](_0x894b('0x7'),_0x264934[_0x894b('0x8')]);ChatInteractionEvents['emit'](_0x2156a4+':'+_0x35b7d3['id'],_0x35b7d3);ChatInteractionEvents[_0x894b('0x9')](_0x2156a4,_0x35b7d3);_0x56fcbe(null);})['catch'](_0x56fcbe(null));};}for(var e in events){if(events[_0x894b('0xa')](e)){var event=events[e];ChatInteraction[_0x894b('0xb')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x2fc4=['setDataValue','Users','map','findAll','then','unreadMessages','length','catch','hasOwnProperty','exports','events','ChatMessage','setMaxListeners','update','remove','getUsers'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x2fc4,0x9a));var _0x42fc=function(_0x1bc1df,_0x3bc10a){_0x1bc1df=_0x1bc1df-0x0;var _0x106a3a=_0x2fc4[_0x1bc1df];return _0x106a3a;};'use strict';var EventEmitter=require(_0x42fc('0x0'));var ChatInteraction=require('../../mysqldb')['db']['ChatInteraction'];var ChatMessage=require('../../mysqldb')['db'][_0x42fc('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x42fc('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x42fc('0x3'),'afterDestroy':_0x42fc('0x4')};function emitEvent(_0x10099b){return function(_0x39d64f,_0x5cf48f,_0x1aceb6){_0x39d64f[_0x42fc('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x20957f){_0x39d64f[_0x42fc('0x6')](_0x42fc('0x7'),_0x20957f[_0x42fc('0x8')](function(_0x9cdbbb){return{'id':_0x9cdbbb['id']};}));return ChatMessage[_0x42fc('0x9')]({'where':{'ChatInteractionId':_0x39d64f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x42fc('0xa')](function(_0x5c3282){_0x39d64f[_0x42fc('0x6')](_0x42fc('0xb'),_0x5c3282[_0x42fc('0xc')]);ChatInteractionEvents['emit'](_0x10099b+':'+_0x39d64f['id'],_0x39d64f);ChatInteractionEvents['emit'](_0x10099b,_0x39d64f);_0x1aceb6(null);})[_0x42fc('0xd')](_0x1aceb6(null));};}for(var e in events){if(events[_0x42fc('0xe')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x42fc('0xf')]=ChatInteractionEvents;
\ No newline at end of file
index 37cbce7..8df73c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b2=['format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','chat_interactions','changed','closed','closedAt'];(function(_0x2d3107,_0x13e8bb){var _0x21d541=function(_0x258a32){while(--_0x258a32){_0x2d3107['push'](_0x2d3107['shift']());}};_0x21d541(++_0x13e8bb);}(_0x28b2,0x1cb));var _0x228b=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x28b2[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0x228b('0x0'));var util=require(_0x228b('0x1'));var logger=require(_0x228b('0x2'))(_0x228b('0x3'));var moment=require(_0x228b('0x4'));var BPromise=require(_0x228b('0x5'));var rp=require(_0x228b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x228b('0x7'));var config=require(_0x228b('0x8'));var attributes=require(_0x228b('0x9'));module[_0x228b('0xa')]=function(_0x56e8fc,_0x1d7170){return _0x56e8fc[_0x228b('0xb')]('ChatInteraction',attributes,{'tableName':_0x228b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x164ea4,_0x54ab58,_0x117ec3){if(_0x164ea4[_0x228b('0xd')](_0x228b('0xe'))){_0x164ea4[_0x228b('0xf')]=moment()[_0x228b('0x10')](_0x228b('0x11'));}_0x117ec3(null,_0x164ea4);}},'charset':_0x228b('0x12'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xea2f=['YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','changed','closed','closedAt'];(function(_0x4a1711,_0x3ecba3){var _0xba7ee8=function(_0xa1df27){while(--_0xa1df27){_0x4a1711['push'](_0x4a1711['shift']());}};_0xba7ee8(++_0x3ecba3);}(_0xea2f,0x1bb));var _0xfea2=function(_0x30ed7b,_0x54824b){_0x30ed7b=_0x30ed7b-0x0;var _0x4c2eb6=_0xea2f[_0x30ed7b];return _0x4c2eb6;};'use strict';var _=require(_0xfea2('0x0'));var util=require(_0xfea2('0x1'));var logger=require(_0xfea2('0x2'))(_0xfea2('0x3'));var moment=require(_0xfea2('0x4'));var BPromise=require(_0xfea2('0x5'));var rp=require(_0xfea2('0x6'));var fs=require('fs');var path=require(_0xfea2('0x7'));var rimraf=require(_0xfea2('0x8'));var config=require(_0xfea2('0x9'));var attributes=require(_0xfea2('0xa'));module[_0xfea2('0xb')]=function(_0x5f0252,_0xac283c){return _0x5f0252[_0xfea2('0xc')](_0xfea2('0xd'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xd9d5b5,_0x78e9de,_0x9266e6){if(_0xd9d5b5[_0xfea2('0xe')](_0xfea2('0xf'))){_0xd9d5b5[_0xfea2('0x10')]=moment()['format'](_0xfea2('0x11'));}_0x9266e6(null,_0xd9d5b5);}},'charset':_0xfea2('0x12'),'collate':_0xfea2('0x13')});};
\ No newline at end of file
index 7a87aaa..e74b53b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843c=['./chatInteraction.socket','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','ChatInteraction','update','options','raw','attributes','UpdateChatInteraction','find','where','addTags','ids','omit','spread','AddTags','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','localhost','socket.io-emitter'];(function(_0x35021f,_0x451349){var _0x1044e9=function(_0x379319){while(--_0x379319){_0x35021f['push'](_0x35021f['shift']());}};_0x1044e9(++_0x451349);}(_0x843c,0xc0));var _0xc843=function(_0x54f3cc,_0x52c872){_0x54f3cc=_0x54f3cc-0x0;var _0x10d3fb=_0x843c[_0x54f3cc];return _0x10d3fb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc843('0x0'));var BPromise=require('bluebird');var rs=require(_0xc843('0x1'));var fs=require('fs');var Redis=require(_0xc843('0x2'));var db=require(_0xc843('0x3'))['db'];var utils=require(_0xc843('0x4'));var logger=require(_0xc843('0x5'))(_0xc843('0x6'));var config=require(_0xc843('0x7'));var jayson=require(_0xc843('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xc843('0x9')](config[_0xc843('0xa')],{'host':_0xc843('0xb'),'port':0x18eb});var socket=require(_0xc843('0xc'))(new Redis(config['redis']));require(_0xc843('0xd'))[_0xc843('0xe')](socket);function respondWithRpcPromise(_0x2e9555,_0x1d9f79,_0x4b3ea7){return new BPromise(function(_0x4f3703,_0x209608){return client[_0xc843('0xf')](_0x2e9555,_0x4b3ea7)[_0xc843('0x10')](function(_0x6ae130){logger['info'](_0xc843('0x11'),_0x1d9f79,_0xc843('0x12'));logger[_0xc843('0x13')](_0xc843('0x14'),_0x1d9f79,_0xc843('0x12'),JSON[_0xc843('0x15')](_0x6ae130));if(_0x6ae130['error']){if(_0x6ae130['error'][_0xc843('0x16')]===0x1f4){logger[_0xc843('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x1d9f79,_0x6ae130[_0xc843('0x17')]['message']);return _0x209608(_0x6ae130[_0xc843('0x17')][_0xc843('0x18')]);}logger[_0xc843('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x1d9f79,_0x6ae130[_0xc843('0x17')][_0xc843('0x18')]);return _0x4f3703(_0x6ae130[_0xc843('0x17')][_0xc843('0x18')]);}else{logger[_0xc843('0x19')](_0xc843('0x11'),_0x1d9f79,_0xc843('0x12'));_0x4f3703(_0x6ae130[_0xc843('0x1a')][_0xc843('0x18')]);}})[_0xc843('0x1b')](function(_0x4aadb7){logger['error'](_0xc843('0x11'),_0x1d9f79,_0x4aadb7);_0x209608(_0x4aadb7);});});}exports['UpdateChatInteraction']=function(_0x3ccf9a){var _0x4cc235=this;return new Promise(function(_0x4307b0,_0x4d7747){return db[_0xc843('0x1c')][_0xc843('0x1d')](_0x3ccf9a['body'],{'raw':_0x3ccf9a[_0xc843('0x1e')]?_0x3ccf9a[_0xc843('0x1e')][_0xc843('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ccf9a[_0xc843('0x1e')]?_0x3ccf9a['options']['where']||null:null,'attributes':_0x3ccf9a[_0xc843('0x1e')]?_0x3ccf9a['options'][_0xc843('0x20')]||null:null,'limit':_0x3ccf9a['options']?_0x3ccf9a[_0xc843('0x1e')]['limit']||null:null})[_0xc843('0x10')](function(_0x5e12b6){logger[_0xc843('0x19')](_0xc843('0x21'),_0x3ccf9a);logger[_0xc843('0x13')]('UpdateChatInteraction',_0x3ccf9a,JSON['stringify'](_0x5e12b6));_0x4307b0(_0x5e12b6);})[_0xc843('0x1b')](function(_0x4ebb8a){logger[_0xc843('0x17')](_0xc843('0x21'),_0x4ebb8a[_0xc843('0x18')],_0x3ccf9a);_0x4d7747(_0x4cc235['error'](0x1f4,_0x4ebb8a[_0xc843('0x18')]));});});};exports['AddTagsToChatInteraction']=function(_0x30c272){return new Promise(function(_0x2210cd,_0x42015a){return db[_0xc843('0x1c')][_0xc843('0x22')]({'where':_0x30c272[_0xc843('0x1e')]?_0x30c272[_0xc843('0x1e')][_0xc843('0x23')]||null:null})['then'](function(_0x37a384){if(_0x37a384){return _0x37a384[_0xc843('0x24')](_0x30c272['body'][_0xc843('0x25')],_[_0xc843('0x26')](_0x30c272['body'],['ids','id'])||{});}})[_0xc843('0x27')](function(_0x514bd1){logger[_0xc843('0x19')](_0xc843('0x28'),_0x30c272);logger['debug'](_0xc843('0x28'),_0x30c272,JSON[_0xc843('0x15')](_0x514bd1));_0x2210cd(_0x514bd1);})[_0xc843('0x1b')](function(_0x11fa15){logger[_0xc843('0x17')](_0xc843('0x28'),_0x11fa15['message'],_0x30c272);_0x42015a(_this[_0xc843('0x17')](0x1f4,_0x11fa15[_0xc843('0x18')]));});});};
\ No newline at end of file
+var _0x3418=['../../config/logger','rpc','../../config/environment','client','http','redis','socket.io-emitter','register','request','then','request\x20sent','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','info','result','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','limit','debug','catch','AddTagsToChatInteraction','find','ids','spread','AddTags','lodash','util','randomstring'];(function(_0x3afc7c,_0x1edb7b){var _0x106683=function(_0x5b662f){while(--_0x5b662f){_0x3afc7c['push'](_0x3afc7c['shift']());}};_0x106683(++_0x1edb7b);}(_0x3418,0x100));var _0x8341=function(_0x4f2a64,_0x3a6d3a){_0x4f2a64=_0x4f2a64-0x0;var _0x494b01=_0x3418[_0x4f2a64];return _0x494b01;};'use strict';var _=require(_0x8341('0x0'));var util=require(_0x8341('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8341('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8341('0x3'))(_0x8341('0x4'));var config=require(_0x8341('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8341('0x6')][_0x8341('0x7')]({'port':0x232a});config[_0x8341('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8341('0x9'))(new Redis(config[_0x8341('0x8')]));require('./chatInteraction.socket')[_0x8341('0xa')](socket);function respondWithRpcPromise(_0x98ceb4,_0x3459e0,_0x3f9a9b){return new BPromise(function(_0x28018c,_0xa581f0){return client[_0x8341('0xb')](_0x98ceb4,_0x3f9a9b)[_0x8341('0xc')](function(_0x292f8f){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x3459e0,_0x8341('0xd'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x3459e0,_0x8341('0xd'),JSON[_0x8341('0xe')](_0x292f8f));if(_0x292f8f[_0x8341('0xf')]){if(_0x292f8f['error'][_0x8341('0x10')]===0x1f4){logger[_0x8341('0xf')](_0x8341('0x11'),_0x3459e0,_0x292f8f[_0x8341('0xf')]['message']);return _0xa581f0(_0x292f8f[_0x8341('0xf')][_0x8341('0x12')]);}logger[_0x8341('0xf')]('ChatInteraction,\x20%s,\x20%s',_0x3459e0,_0x292f8f[_0x8341('0xf')]['message']);return _0x28018c(_0x292f8f[_0x8341('0xf')]['message']);}else{logger[_0x8341('0x13')](_0x8341('0x11'),_0x3459e0,_0x8341('0xd'));_0x28018c(_0x292f8f[_0x8341('0x14')][_0x8341('0x12')]);}})['catch'](function(_0x562bba){logger[_0x8341('0xf')](_0x8341('0x11'),_0x3459e0,_0x562bba);_0xa581f0(_0x562bba);});});}exports[_0x8341('0x15')]=function(_0x59e8cf){var _0x534194=this;return new Promise(function(_0x1c880b,_0x1c8a87){return db[_0x8341('0x16')][_0x8341('0x17')](_0x59e8cf[_0x8341('0x18')],{'raw':_0x59e8cf['options']?_0x59e8cf[_0x8341('0x19')][_0x8341('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59e8cf[_0x8341('0x19')]?_0x59e8cf[_0x8341('0x19')][_0x8341('0x1b')]||null:null,'attributes':_0x59e8cf['options']?_0x59e8cf[_0x8341('0x19')][_0x8341('0x1c')]||null:null,'limit':_0x59e8cf['options']?_0x59e8cf['options'][_0x8341('0x1d')]||null:null})[_0x8341('0xc')](function(_0x473c4f){logger[_0x8341('0x13')](_0x8341('0x15'),_0x59e8cf);logger[_0x8341('0x1e')](_0x8341('0x15'),_0x59e8cf,JSON['stringify'](_0x473c4f));_0x1c880b(_0x473c4f);})[_0x8341('0x1f')](function(_0x19c5f0){logger[_0x8341('0xf')](_0x8341('0x15'),_0x19c5f0[_0x8341('0x12')],_0x59e8cf);_0x1c8a87(_0x534194['error'](0x1f4,_0x19c5f0[_0x8341('0x12')]));});});};exports[_0x8341('0x20')]=function(_0x547250){return new Promise(function(_0x1215ad,_0xe048ff){return db['ChatInteraction'][_0x8341('0x21')]({'where':_0x547250['options']?_0x547250[_0x8341('0x19')]['where']||null:null})[_0x8341('0xc')](function(_0x2880fc){if(_0x2880fc){return _0x2880fc['addTags'](_0x547250[_0x8341('0x18')][_0x8341('0x22')],_['omit'](_0x547250['body'],[_0x8341('0x22'),'id'])||{});}})[_0x8341('0x23')](function(_0xed7a58){logger[_0x8341('0x13')](_0x8341('0x24'),_0x547250);logger[_0x8341('0x1e')](_0x8341('0x24'),_0x547250,JSON[_0x8341('0xe')](_0xed7a58));_0x1215ad(_0xed7a58);})[_0x8341('0x1f')](function(_0x4d8301){logger[_0x8341('0xf')](_0x8341('0x24'),_0x4d8301[_0x8341('0x12')],_0x547250);_0xe048ff(_this[_0x8341('0xf')](0x1f4,_0x4d8301['message']));});});};
\ No newline at end of file
index b40e250..74cb8de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x193c=['remove','update','removeListener','register','length','./chatInteraction.events','save'];(function(_0x58a4ac,_0x43fd42){var _0x545810=function(_0x308e65){while(--_0x308e65){_0x58a4ac['push'](_0x58a4ac['shift']());}};_0x545810(++_0x43fd42);}(_0x193c,0x1d3));var _0xc193=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x193c[_0x3ab51d];return _0x29a04e;};'use strict';var ChatInteractionEvents=require(_0xc193('0x0'));var events=[_0xc193('0x1'),_0xc193('0x2'),_0xc193('0x3')];function createListener(_0x442f7e,_0x562397){return function(_0x54ba13){_0x562397['emit'](_0x442f7e,_0x54ba13);};}function removeListener(_0x49bc59,_0x466508){return function(){ChatInteractionEvents[_0xc193('0x4')](_0x49bc59,_0x466508);};}exports[_0xc193('0x5')]=function(_0x91faef){for(var _0x2f101e=0x0,_0x31cbc0=events[_0xc193('0x6')];_0x2f101e<_0x31cbc0;_0x2f101e++){var _0x139766=events[_0x2f101e];var _0x4bece9=createListener('chatInteraction:'+_0x139766,_0x91faef);ChatInteractionEvents['on'](_0x139766,_0x4bece9);}};
\ No newline at end of file
+var _0x5139=['register','chatInteraction:','./chatInteraction.events','save','update','emit'];(function(_0x477df6,_0x36b453){var _0x172df2=function(_0x2327ce){while(--_0x2327ce){_0x477df6['push'](_0x477df6['shift']());}};_0x172df2(++_0x36b453);}(_0x5139,0x8c));var _0x9513=function(_0x1bd2fc,_0x41d291){_0x1bd2fc=_0x1bd2fc-0x0;var _0x328321=_0x5139[_0x1bd2fc];return _0x328321;};'use strict';var ChatInteractionEvents=require(_0x9513('0x0'));var events=[_0x9513('0x1'),'remove',_0x9513('0x2')];function createListener(_0x844653,_0x85f4e5){return function(_0x2ada15){_0x85f4e5[_0x9513('0x3')](_0x844653,_0x2ada15);};}function removeListener(_0x453743,_0x6e0d7e){return function(){ChatInteractionEvents['removeListener'](_0x453743,_0x6e0d7e);};}exports[_0x9513('0x4')]=function(_0x166802){for(var _0x2550f1=0x0,_0x2385d8=events['length'];_0x2550f1<_0x2385d8;_0x2550f1++){var _0x45d209=events[_0x2550f1];var _0x1ce372=createListener(_0x9513('0x5')+_0x45d209,_0x166802);ChatInteractionEvents['on'](_0x45d209,_0x1ce372);}};
\ No newline at end of file
index 1e73470..f9ebee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2af=['./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','now','originalname','replace','/:id/attachment_upload','single','file','/:id/messages','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xb2af,0x110));var _0xfb2a=function(_0x15ef18,_0x466f6b){_0x15ef18=_0x15ef18-0x0;var _0x386204=_0xb2af[_0x15ef18];return _0x386204;};'use strict';var multer=require(_0xfb2a('0x0'));var util=require(_0xfb2a('0x1'));var path=require(_0xfb2a('0x2'));var timeout=require(_0xfb2a('0x3'));var express=require('express');var router=express[_0xfb2a('0x4')]();var fs_extra=require(_0xfb2a('0x5'));var auth=require(_0xfb2a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xfb2a('0x7'));var controller=require(_0xfb2a('0x8'));router[_0xfb2a('0x9')]('/',auth[_0xfb2a('0xa')](),controller[_0xfb2a('0xb')]);router[_0xfb2a('0x9')](_0xfb2a('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xfb2a('0x9')](_0xfb2a('0xd'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0xf')]);router['get'](_0xfb2a('0x10'),auth['isChatInteractionAuthorized'](),controller[_0xfb2a('0x11')]);router[_0xfb2a('0x9')]('/:id/messages',auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x12')]);router[_0xfb2a('0x9')](_0xfb2a('0x13'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0x14')]);router[_0xfb2a('0x9')](_0xfb2a('0x15'),auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x16')]);router[_0xfb2a('0x17')]('/',auth[_0xfb2a('0xa')](),controller['create']);router[_0xfb2a('0x17')](_0xfb2a('0x18'),auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x19')]);var upload=multer({'storage':multer[_0xfb2a('0x1a')]({'destination':function(_0x2506a9,_0x2772ad,_0x505d02){_0x505d02(null,path[_0xfb2a('0x1b')](config[_0xfb2a('0x1c')],_0xfb2a('0x1d')));},'filename':function(_0x2aa854,_0x44dbee,_0x14f40c){_0x14f40c(null,util[_0xfb2a('0x1e')]('%s-%s',Date[_0xfb2a('0x1f')](),_0x44dbee[_0xfb2a('0x20')][_0xfb2a('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xfb2a('0x22'),upload[_0xfb2a('0x23')](_0xfb2a('0x24')),controller['attachmentUpload']);router[_0xfb2a('0x17')](_0xfb2a('0x25'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0x26')]);router[_0xfb2a('0x17')](_0xfb2a('0x27'),auth[_0xfb2a('0xa')](),interaction[_0xfb2a('0x28')](_0xfb2a('0x29'),_0xfb2a('0x2a')),controller[_0xfb2a('0x2b')]);router[_0xfb2a('0x2c')](_0xfb2a('0xd'),auth[_0xfb2a('0xa')](),interaction['tracked'](_0xfb2a('0x29'),_0xfb2a('0x2d')),controller[_0xfb2a('0x2e')]);router[_0xfb2a('0x2c')](_0xfb2a('0x2f'),controller[_0xfb2a('0x30')]);router[_0xfb2a('0x2c')](_0xfb2a('0x31'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0x32')]);router['put'](_0xfb2a('0x33'),controller[_0xfb2a('0x34')]);router['delete'](_0xfb2a('0xd'),auth[_0xfb2a('0xa')](),interaction[_0xfb2a('0x28')](_0xfb2a('0x29'),'chatinteraction:destroy'),controller['destroy']);router[_0xfb2a('0x35')](_0xfb2a('0x27'),auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x36')]);module[_0xfb2a('0x37')]=router;
\ No newline at end of file
+var _0x897f=['customUpdate','/:id/abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/download','download','post','diskStorage','root','server/files/attachments/','format','%s-%s','originalname','replace','/:id/attachment_upload','file','attachmentUpload','addMessage','/:id/tags','chat','chatinteraction:addtags','addTags','put','tracked','chatinteraction:update','update','/:id/custom_update'];(function(_0x284bf8,_0x300554){var _0x1bf5c0=function(_0x4b0cc4){while(--_0x4b0cc4){_0x284bf8['push'](_0x284bf8['shift']());}};_0x1bf5c0(++_0x300554);}(_0x897f,0x103));var _0xf897=function(_0x932e4c,_0x140353){_0x932e4c=_0x932e4c-0x0;var _0x5184d4=_0x897f[_0x932e4c];return _0x5184d4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf897('0x0'));var timeout=require(_0xf897('0x1'));var express=require('express');var router=express[_0xf897('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf897('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xf897('0x4'));var controller=require(_0xf897('0x5'));router[_0xf897('0x6')]('/',auth[_0xf897('0x7')](),controller[_0xf897('0x8')]);router['get'](_0xf897('0x9'),auth[_0xf897('0x7')](),controller[_0xf897('0xa')]);router[_0xf897('0x6')](_0xf897('0xb'),auth[_0xf897('0xc')](),controller[_0xf897('0xd')]);router['get'](_0xf897('0xe'),auth['isChatInteractionAuthorized'](),controller[_0xf897('0xf')]);router['get'](_0xf897('0x10'),auth[_0xf897('0x7')](),controller[_0xf897('0x11')]);router['get']('/:id/my_messages',auth[_0xf897('0xc')](),controller['getMyMessages']);router[_0xf897('0x6')](_0xf897('0x12'),auth[_0xf897('0x7')](),controller[_0xf897('0x13')]);router['post']('/',auth[_0xf897('0x7')](),controller['create']);router[_0xf897('0x14')]('/:id/vidaoo',auth['isAuthenticated'](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0xf897('0x15')]({'destination':function(_0x5b8c10,_0x3d6302,_0x45e387){_0x45e387(null,path['join'](config[_0xf897('0x16')],_0xf897('0x17')));},'filename':function(_0x24c29d,_0xf458d2,_0x4feac2){_0x4feac2(null,util[_0xf897('0x18')](_0xf897('0x19'),Date['now'](),_0xf458d2[_0xf897('0x1a')][_0xf897('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf897('0x14')](_0xf897('0x1c'),upload['single'](_0xf897('0x1d')),controller[_0xf897('0x1e')]);router[_0xf897('0x14')](_0xf897('0x10'),auth[_0xf897('0xc')](),controller[_0xf897('0x1f')]);router[_0xf897('0x14')](_0xf897('0x20'),auth['isAuthenticated'](),interaction['tracked'](_0xf897('0x21'),_0xf897('0x22')),controller[_0xf897('0x23')]);router[_0xf897('0x24')](_0xf897('0xb'),auth['isAuthenticated'](),interaction[_0xf897('0x25')](_0xf897('0x21'),_0xf897('0x26')),controller[_0xf897('0x27')]);router[_0xf897('0x24')](_0xf897('0x28'),controller[_0xf897('0x29')]);router[_0xf897('0x24')](_0xf897('0x2a'),auth['isChatInteractionAuthorized'](),controller['abandon']);router[_0xf897('0x24')](_0xf897('0x2b'),controller[_0xf897('0x2c')]);router[_0xf897('0x2d')](_0xf897('0xb'),auth[_0xf897('0x7')](),interaction[_0xf897('0x25')](_0xf897('0x21'),_0xf897('0x2e')),controller[_0xf897('0x2f')]);router['delete'](_0xf897('0x20'),auth['isAuthenticated'](),controller[_0xf897('0x30')]);module[_0xf897('0x31')]=router;
\ No newline at end of file
index 96d1e76..058db97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b5=['BOOLEAN','INTEGER','sequelize','exports','TEXT'];(function(_0x1bd759,_0x234f1a){var _0x2af580=function(_0x284273){while(--_0x284273){_0x1bd759['push'](_0x1bd759['shift']());}};_0x2af580(++_0x234f1a);}(_0x58b5,0xc0));var _0x558b=function(_0x516e0c,_0x4184f9){_0x516e0c=_0x516e0c-0x0;var _0x353d0b=_0x58b5[_0x516e0c];return _0x353d0b;};'use strict';var Sequelize=require(_0x558b('0x0'));module[_0x558b('0x1')]={'body':{'type':Sequelize[_0x558b('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x558b('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x558b('0x4')]}};
\ No newline at end of file
+var _0x56fd=['medium','BOOLEAN','INTEGER','exports','TEXT'];(function(_0x49a1a0,_0x48f776){var _0x518a4f=function(_0x313633){while(--_0x313633){_0x49a1a0['push'](_0x49a1a0['shift']());}};_0x518a4f(++_0x48f776);}(_0x56fd,0x184));var _0xd56f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x56fd[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0xd56f('0x0')]={'body':{'type':Sequelize[_0xd56f('0x1')](_0xd56f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xd56f('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xd56f('0x4')]}};
\ No newline at end of file
index 9be82ea..3760ece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x356f=['body','describe','get','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','-online','VoiceQueue','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','Agents','autoAssociation','isEmpty','length','resourceId','push','messages','FromId','ToId','read','-createdAt','all','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','create'];(function(_0x782c04,_0x1ba990){var _0x511687=function(_0x5083c9){while(--_0x5083c9){_0x782c04['push'](_0x782c04['shift']());}};_0x511687(++_0x1ba990);}(_0x356f,0x175));var _0xf356=function(_0x17f37f,_0x29dad6){_0x17f37f=_0x17f37f-0x0;var _0x2b2a99=_0x356f[_0x17f37f];return _0x2b2a99;};'use strict';var emlformat=require(_0xf356('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf356('0x1'));var rp=require('request-promise');var moment=require(_0xf356('0x2'));var BPromise=require(_0xf356('0x3'));var Mustache=require(_0xf356('0x4'));var util=require(_0xf356('0x5'));var path=require(_0xf356('0x6'));var sox=require(_0xf356('0x7'));var csv=require(_0xf356('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf356('0x9'));var _=require(_0xf356('0xa'));var squel=require(_0xf356('0xb'));var crypto=require(_0xf356('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf356('0xd'));var toCsv=require(_0xf356('0x8'));var querystring=require(_0xf356('0xe'));var Papa=require('papaparse');var Redis=require(_0xf356('0xf'));var authService=require(_0xf356('0x10'));var qs=require(_0xf356('0x11'));var as=require(_0xf356('0x12'));var hardwareService=require(_0xf356('0x13'));var logger=require(_0xf356('0x14'))(_0xf356('0x15'));var utils=require(_0xf356('0x16'));var config=require(_0xf356('0x17'));var licenseUtil=require(_0xf356('0x18'));var db=require(_0xf356('0x19'))['db'];config[_0xf356('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf356('0x1b'))(new Redis(config[_0xf356('0x1a')]));require(_0xf356('0x1c'))[_0xf356('0x1d')](socket);function respondWithStatusCode(_0x584cd5,_0x3a88bd){_0x3a88bd=_0x3a88bd||0xcc;return function(_0x19e6db){if(_0x19e6db){return _0x584cd5[_0xf356('0x1e')](_0x3a88bd);}return _0x584cd5[_0xf356('0x1f')](_0x3a88bd)['end']();};}function respondWithResult(_0x334c0a,_0x5180a9){_0x5180a9=_0x5180a9||0xc8;return function(_0x424bcd){if(_0x424bcd){return _0x334c0a[_0xf356('0x1f')](_0x5180a9)[_0xf356('0x20')](_0x424bcd);}};}function respondWithFilteredResult(_0x495cc4,_0xca370a){return function(_0x5983b8){if(_0x5983b8){var _0x2a5714=typeof _0xca370a[_0xf356('0x21')]===_0xf356('0x22')&&typeof _0xca370a['limit']===_0xf356('0x22');var _0x40d95b=_0x5983b8['count'];var _0x3b2a12=_0x2a5714?0x0:_0xca370a[_0xf356('0x21')];var _0x20d534=_0x2a5714?_0x5983b8[_0xf356('0x23')]:_0xca370a['offset']+_0xca370a[_0xf356('0x24')];var _0x21097e;if(_0x20d534>=_0x40d95b){_0x20d534=_0x40d95b;_0x21097e=0xc8;}else{_0x21097e=0xce;}_0x495cc4[_0xf356('0x1f')](_0x21097e);return _0x495cc4[_0xf356('0x25')](_0xf356('0x26'),_0x3b2a12+'-'+_0x20d534+'/'+_0x40d95b)['json'](_0x5983b8);}return null;};}function patchUpdates(_0x5d747c){return function(_0x29c3ce){try{jsonpatch[_0xf356('0x27')](_0x29c3ce,_0x5d747c,!![]);}catch(_0x56c0ec){return BPromise[_0xf356('0x28')](_0x56c0ec);}return _0x29c3ce[_0xf356('0x29')]();};}function saveUpdates(_0x32c2dd,_0x5abbcc){return function(_0x548c41){if(_0x548c41){return _0x548c41[_0xf356('0x2a')](_0x32c2dd)[_0xf356('0x2b')](function(_0x111d1e){return _0x111d1e;});}return null;};}function removeEntity(_0x220094,_0x5e25e2){return function(_0x3c5efe){if(_0x3c5efe){return _0x3c5efe[_0xf356('0x2c')]()[_0xf356('0x2b')](function(){_0x220094[_0xf356('0x1f')](0xcc)[_0xf356('0x2d')]();});}};}function handleEntityNotFound(_0x57ef0e,_0x35efa6){return function(_0x2f7fa0){if(!_0x2f7fa0){_0x57ef0e[_0xf356('0x1e')](0x194);}return _0x2f7fa0;};}function handleError(_0x5a5a49,_0x59e6a3){_0x59e6a3=_0x59e6a3||0x1f4;return function(_0x130708){logger[_0xf356('0x2e')](_0x130708['stack']);if(_0x130708[_0xf356('0x2f')]){delete _0x130708[_0xf356('0x2f')];}_0x5a5a49['status'](_0x59e6a3)[_0xf356('0x30')](_0x130708);};}exports[_0xf356('0x31')]=function(_0x2d3e70,_0x1a3acb){var _0x2b043d={},_0x47cf36={},_0x56f328={'count':0x0,'rows':[]};var _0x20d26e=_[_0xf356('0x32')](db[_0xf356('0x33')][_0xf356('0x34')],function(_0x19ef86){return{'name':_0x19ef86[_0xf356('0x35')],'type':_0x19ef86[_0xf356('0x36')][_0xf356('0x37')]};});_0x47cf36['model']=_[_0xf356('0x32')](_0x20d26e,_0xf356('0x2f'));_0x47cf36[_0xf356('0x38')]=_[_0xf356('0x39')](_0x2d3e70[_0xf356('0x38')]);_0x47cf36[_0xf356('0x3a')]=_[_0xf356('0x3b')](_0x47cf36[_0xf356('0x3c')],_0x47cf36[_0xf356('0x38')]);_0x2b043d[_0xf356('0x3d')]=_[_0xf356('0x3b')](_0x47cf36[_0xf356('0x3c')],qs[_0xf356('0x3e')](_0x2d3e70[_0xf356('0x38')]['fields']));_0x2b043d[_0xf356('0x3d')]=_0x2b043d['attributes']['length']?_0x2b043d[_0xf356('0x3d')]:_0x47cf36[_0xf356('0x3c')];if(!_0x2d3e70[_0xf356('0x38')]['hasOwnProperty'](_0xf356('0x3f'))){_0x2b043d['limit']=qs[_0xf356('0x24')](_0x2d3e70[_0xf356('0x38')][_0xf356('0x24')]);_0x2b043d[_0xf356('0x21')]=qs[_0xf356('0x21')](_0x2d3e70[_0xf356('0x38')]['offset']);}_0x2b043d[_0xf356('0x40')]=qs[_0xf356('0x41')](_0x2d3e70[_0xf356('0x38')][_0xf356('0x41')]);_0x2b043d[_0xf356('0x42')]=qs['filters'](_[_0xf356('0x43')](_0x2d3e70[_0xf356('0x38')],_0x47cf36[_0xf356('0x3a')]),_0x20d26e);if(_0x2d3e70[_0xf356('0x38')][_0xf356('0x44')]){_0x2b043d['where']=_[_0xf356('0x45')](_0x2b043d[_0xf356('0x42')],{'$or':_[_0xf356('0x32')](_0x20d26e,function(_0x3ff937){if(_0x3ff937[_0xf356('0x36')]!==_0xf356('0x46')){var _0x4f1084={};_0x4f1084[_0x3ff937[_0xf356('0x2f')]]={'$like':'%'+_0x2d3e70['query'][_0xf356('0x44')]+'%'};return _0x4f1084;}})});}_0x2b043d=_[_0xf356('0x45')]({},_0x2b043d,_0x2d3e70[_0xf356('0x47')]);var _0x4b4ca3={'where':_0x2b043d[_0xf356('0x42')]};return db[_0xf356('0x33')]['count'](_0x4b4ca3)[_0xf356('0x2b')](function(_0x143e23){_0x56f328[_0xf356('0x23')]=_0x143e23;if(_0x2d3e70[_0xf356('0x38')][_0xf356('0x48')]){_0x2b043d['include']=[{'all':!![]}];}return db[_0xf356('0x33')][_0xf356('0x49')](_0x2b043d);})[_0xf356('0x2b')](function(_0x199e7f){_0x56f328['rows']=_0x199e7f;return _0x56f328;})[_0xf356('0x2b')](respondWithFilteredResult(_0x1a3acb,_0x2b043d))[_0xf356('0x4a')](handleError(_0x1a3acb,null));};exports[_0xf356('0x4b')]=function(_0x38a4df,_0x145f6f){var _0x5befb3={'raw':!![],'where':{'id':_0x38a4df[_0xf356('0x4c')]['id']}},_0x3968cb={};_0x3968cb[_0xf356('0x3c')]=_[_0xf356('0x39')](db[_0xf356('0x33')][_0xf356('0x34')]);_0x3968cb[_0xf356('0x38')]=_[_0xf356('0x39')](_0x38a4df[_0xf356('0x38')]);_0x3968cb[_0xf356('0x3a')]=_[_0xf356('0x3b')](_0x3968cb['model'],_0x3968cb[_0xf356('0x38')]);_0x5befb3[_0xf356('0x3d')]=_['intersection'](_0x3968cb['model'],qs[_0xf356('0x3e')](_0x38a4df['query'][_0xf356('0x3e')]));_0x5befb3['attributes']=_0x5befb3[_0xf356('0x3d')]['length']?_0x5befb3[_0xf356('0x3d')]:_0x3968cb[_0xf356('0x3c')];if(_0x38a4df['query'][_0xf356('0x48')]){_0x5befb3[_0xf356('0x4d')]=[{'all':!![]}];}_0x5befb3=_[_0xf356('0x45')]({},_0x5befb3,_0x38a4df['options']);return db[_0xf356('0x33')]['find'](_0x5befb3)[_0xf356('0x2b')](handleEntityNotFound(_0x145f6f,null))['then'](respondWithResult(_0x145f6f,null))[_0xf356('0x4a')](handleError(_0x145f6f,null));};exports[_0xf356('0x4e')]=function(_0x1c0234,_0x157052){return db[_0xf356('0x33')]['create'](_0x1c0234[_0xf356('0x4f')],{})[_0xf356('0x2b')](respondWithResult(_0x157052,0xc9))[_0xf356('0x4a')](handleError(_0x157052,null));};exports[_0xf356('0x2a')]=function(_0x23beee,_0x5d06f9){if(_0x23beee[_0xf356('0x4f')]['id']){delete _0x23beee[_0xf356('0x4f')]['id'];}return db[_0xf356('0x33')]['find']({'where':{'id':_0x23beee['params']['id']}})[_0xf356('0x2b')](handleEntityNotFound(_0x5d06f9,null))[_0xf356('0x2b')](saveUpdates(_0x23beee[_0xf356('0x4f')],null))[_0xf356('0x2b')](respondWithResult(_0x5d06f9,null))['catch'](handleError(_0x5d06f9,null));};exports['destroy']=function(_0x17b041,_0x860800){return db[_0xf356('0x33')]['find']({'where':{'id':_0x17b041[_0xf356('0x4c')]['id']}})[_0xf356('0x2b')](handleEntityNotFound(_0x860800,null))[_0xf356('0x2b')](removeEntity(_0x860800,null))[_0xf356('0x4a')](handleError(_0x860800,null));};exports[_0xf356('0x50')]=function(_0x1c3feb,_0x156217){return db[_0xf356('0x33')][_0xf356('0x50')]()[_0xf356('0x2b')](respondWithResult(_0x156217,null))['catch'](handleError(_0x156217,null));};function wrapUser(_0x16faad){return function(_0xfc2db8){var _0x4568eb=_0x16faad[_0xf356('0x51')]({'plain':!![]});_0x4568eb['messages']=[];if(_0xfc2db8){_0x4568eb['lastMessageAt']=_0xfc2db8[_0xf356('0x52')];_0x4568eb['lastMessage']=_0xfc2db8;}else{_0x4568eb['lastMessageAt']=moment(0x0)[_0xf356('0x53')](_0xf356('0x54'));_0x4568eb['lastMessage']={};}return _0x4568eb;};}exports['getUsers']=function(_0x82b028,_0x30f136,_0x48fb46){var _0x2a312d=[];return db[_0xf356('0x55')][_0xf356('0x49')]({'where':{'role':[_0xf356('0x56'),_0xf356('0x57'),_0xf356('0x58')]},'attributes':['id',_0xf356('0x59'),'name',_0xf356('0x5a'),_0xf356('0x5b'),_0xf356('0x5c'),_0xf356('0x5d'),_0xf356('0x5e'),_0xf356('0x5f'),'showWebBar'],'order':qs[_0xf356('0x41')](_0xf356('0x60')),'include':[{'model':db[_0xf356('0x61')],'as':'VoiceQueues','attributes':['id',_0xf356('0x2f'),'type'],'through':{'attributes':[]}}]})['then'](function(_0x2e379c){if(_0x2e379c){var _0xb4c59a=_0x82b028['user'][_0xf356('0x51')]({'plain':!![]});if(!_0xb4c59a)throw new Error(_0xf356('0x62'));if(_0xb4c59a[_0xf356('0x5a')]===_0xf356('0x58')){return db[_0xf356('0x63')][_0xf356('0x64')]({'where':{'name':_0xf356('0x65'),'userProfileId':_0xb4c59a['userProfileId']},'raw':!![]})[_0xf356('0x2b')](function(_0x2a4832){if(_0x2a4832){if(_0x2a4832[_0xf356('0x66')]===0x0){return db['UserProfileResource'][_0xf356('0x49')]({'where':{'sectionId':_0x2a4832['id']},'raw':!![]})['then'](function(_0x568342){var _0x590bb3=[];if(_[_0xf356('0x67')](_0x568342)){_0x590bb3=_[_0xf356('0x44')](_0x2e379c,function(_0x5ab90c){if(_0x5ab90c[_0xf356('0x5a')]!=='agent'){return _0x5ab90c;}});return _0x590bb3;}else{for(var _0x158747=0x0;_0x158747<_0x2e379c[_0xf356('0x68')];_0x158747++){var _0x2fcac0=_0x2e379c[_0x158747];if(_0x2fcac0[_0xf356('0x5a')]==='agent'){var _0x21d9dc=_[_0xf356('0x64')](_0x568342,function(_0x41c5b6){return _0x41c5b6[_0xf356('0x69')]===_0x2fcac0['id'];});if(_0x21d9dc)_0x590bb3[_0xf356('0x6a')](_0x2fcac0);}else{_0x590bb3[_0xf356('0x6a')](_0x2fcac0);}}return _0x590bb3;}});}else{return _0x2e379c;}}else{var _0x1bdb8d=_['filter'](_0x2e379c,function(_0x4899fa){if(_0x4899fa['role']!==_0xf356('0x56')){return _0x4899fa;}});return _0x1bdb8d;}});}else{return _0x2e379c;}}})[_0xf356('0x2b')](function(_0x1407fa){var _0x4e635a=[];if(_0x1407fa){_0x2a312d=_0x1407fa;for(var _0x340793=0x0;_0x340793<_0x1407fa['length'];_0x340793+=0x1){_0x2a312d[_0x340793][_0xf356('0x6b')]=[];_0x4e635a[_0xf356('0x6a')](db['ChatInternalMessage'][_0xf356('0x64')]({'where':{'FromId':[_0x82b028[_0xf356('0x58')]['id'],_0x1407fa[_0x340793]['id']],'ToId':[_0x82b028[_0xf356('0x58')]['id'],_0x1407fa[_0x340793]['id']],'ChatGroupId':null},'attributes':['id',_0xf356('0x52'),_0xf356('0x6c'),_0xf356('0x6d'),_0xf356('0x6e'),_0xf356('0x4f')],'order':qs[_0xf356('0x41')](_0xf356('0x6f')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xf356('0x2b')](wrapUser(_0x1407fa[_0x340793])));}return BPromise[_0xf356('0x70')](_0x4e635a);}return[];})[_0xf356('0x2b')](function(_0x3bd680){return{'rows':_0x3bd680,'count':_0x3bd680['length']};})[_0xf356('0x2b')](respondWithResult(_0x30f136,null))[_0xf356('0x4a')](handleError(_0x30f136,null));};
\ No newline at end of file
+var _0x9929=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','push','messages','FromId','read','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./chatInternalMessage.socket','status','offset','undefined','count','limit','set','Content-Range','json','apply','destroy','then','end','sendStatus','index','map','ChatInternalMessage','fieldName','type','name','query','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','params','keys','find','catch','create','body','describe','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','admin','user','fullname','role','userpic','internal','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues'];(function(_0x497948,_0x4ca60c){var _0x39bb36=function(_0x2ec88e){while(--_0x2ec88e){_0x497948['push'](_0x497948['shift']());}};_0x39bb36(++_0x4ca60c);}(_0x9929,0x1ac));var _0x9992=function(_0x217b5a,_0x57ab6d){_0x217b5a=_0x217b5a-0x0;var _0x187179=_0x9929[_0x217b5a];return _0x187179;};'use strict';var emlformat=require(_0x9992('0x0'));var rimraf=require(_0x9992('0x1'));var zipdir=require(_0x9992('0x2'));var jsonpatch=require(_0x9992('0x3'));var rp=require(_0x9992('0x4'));var moment=require('moment');var BPromise=require(_0x9992('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9992('0x6'));var sox=require(_0x9992('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9992('0x8'));var _=require(_0x9992('0x9'));var squel=require('squel');var crypto=require(_0x9992('0xa'));var jsforce=require(_0x9992('0xb'));var deskjs=require(_0x9992('0xc'));var toCsv=require(_0x9992('0xd'));var querystring=require('querystring');var Papa=require(_0x9992('0xe'));var Redis=require(_0x9992('0xf'));var authService=require(_0x9992('0x10'));var qs=require(_0x9992('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9992('0x12'));var logger=require(_0x9992('0x13'))('api');var utils=require(_0x9992('0x14'));var config=require(_0x9992('0x15'));var licenseUtil=require(_0x9992('0x16'));var db=require(_0x9992('0x17'))['db'];config[_0x9992('0x18')]=_['defaults'](config[_0x9992('0x18')],{'host':_0x9992('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9992('0x18')]));require(_0x9992('0x1a'))['register'](socket);function respondWithStatusCode(_0xc89bcc,_0x2248c6){_0x2248c6=_0x2248c6||0xcc;return function(_0x2f3ab3){if(_0x2f3ab3){return _0xc89bcc['sendStatus'](_0x2248c6);}return _0xc89bcc['status'](_0x2248c6)['end']();};}function respondWithResult(_0x3cb61e,_0x3bbf3c){_0x3bbf3c=_0x3bbf3c||0xc8;return function(_0x4b8226){if(_0x4b8226){return _0x3cb61e[_0x9992('0x1b')](_0x3bbf3c)['json'](_0x4b8226);}};}function respondWithFilteredResult(_0x6fc585,_0x41ffc7){return function(_0x1c4d59){if(_0x1c4d59){var _0x255b79=typeof _0x41ffc7[_0x9992('0x1c')]===_0x9992('0x1d')&&typeof _0x41ffc7['limit']===_0x9992('0x1d');var _0x51c10a=_0x1c4d59[_0x9992('0x1e')];var _0x22ede3=_0x255b79?0x0:_0x41ffc7[_0x9992('0x1c')];var _0x45afd1=_0x255b79?_0x1c4d59['count']:_0x41ffc7[_0x9992('0x1c')]+_0x41ffc7[_0x9992('0x1f')];var _0x175bc4;if(_0x45afd1>=_0x51c10a){_0x45afd1=_0x51c10a;_0x175bc4=0xc8;}else{_0x175bc4=0xce;}_0x6fc585['status'](_0x175bc4);return _0x6fc585[_0x9992('0x20')](_0x9992('0x21'),_0x22ede3+'-'+_0x45afd1+'/'+_0x51c10a)[_0x9992('0x22')](_0x1c4d59);}return null;};}function patchUpdates(_0x3d4e43){return function(_0x3c923d){try{jsonpatch[_0x9992('0x23')](_0x3c923d,_0x3d4e43,!![]);}catch(_0x1aee5f){return BPromise['reject'](_0x1aee5f);}return _0x3c923d['save']();};}function saveUpdates(_0x31f26c,_0xe5155a){return function(_0x58bc80){if(_0x58bc80){return _0x58bc80['update'](_0x31f26c)['then'](function(_0x2e4dc4){return _0x2e4dc4;});}return null;};}function removeEntity(_0x356149,_0x2d138c){return function(_0x10120a){if(_0x10120a){return _0x10120a[_0x9992('0x24')]()[_0x9992('0x25')](function(){_0x356149[_0x9992('0x1b')](0xcc)[_0x9992('0x26')]();});}};}function handleEntityNotFound(_0x160d2f,_0x319132){return function(_0x4cb36d){if(!_0x4cb36d){_0x160d2f[_0x9992('0x27')](0x194);}return _0x4cb36d;};}function handleError(_0x5d87d9,_0x3631ea){_0x3631ea=_0x3631ea||0x1f4;return function(_0x41a96a){logger['error'](_0x41a96a['stack']);if(_0x41a96a['name']){delete _0x41a96a['name'];}_0x5d87d9[_0x9992('0x1b')](_0x3631ea)['send'](_0x41a96a);};}exports[_0x9992('0x28')]=function(_0x29d630,_0x2a6b87){var _0x389005={},_0x39d866={},_0x2857ca={'count':0x0,'rows':[]};var _0x34e44f=_[_0x9992('0x29')](db[_0x9992('0x2a')]['rawAttributes'],function(_0x33dbb8){return{'name':_0x33dbb8[_0x9992('0x2b')],'type':_0x33dbb8[_0x9992('0x2c')]['key']};});_0x39d866['model']=_[_0x9992('0x29')](_0x34e44f,_0x9992('0x2d'));_0x39d866[_0x9992('0x2e')]=_['keys'](_0x29d630[_0x9992('0x2e')]);_0x39d866['filters']=_[_0x9992('0x2f')](_0x39d866['model'],_0x39d866[_0x9992('0x2e')]);_0x389005[_0x9992('0x30')]=_['intersection'](_0x39d866[_0x9992('0x31')],qs[_0x9992('0x32')](_0x29d630['query'][_0x9992('0x32')]));_0x389005[_0x9992('0x30')]=_0x389005[_0x9992('0x30')][_0x9992('0x33')]?_0x389005[_0x9992('0x30')]:_0x39d866[_0x9992('0x31')];if(!_0x29d630[_0x9992('0x2e')][_0x9992('0x34')]('nolimit')){_0x389005[_0x9992('0x1f')]=qs[_0x9992('0x1f')](_0x29d630[_0x9992('0x2e')][_0x9992('0x1f')]);_0x389005[_0x9992('0x1c')]=qs[_0x9992('0x1c')](_0x29d630[_0x9992('0x2e')][_0x9992('0x1c')]);}_0x389005[_0x9992('0x35')]=qs['sort'](_0x29d630[_0x9992('0x2e')][_0x9992('0x36')]);_0x389005[_0x9992('0x37')]=qs[_0x9992('0x38')](_['pick'](_0x29d630[_0x9992('0x2e')],_0x39d866[_0x9992('0x38')]),_0x34e44f);if(_0x29d630[_0x9992('0x2e')][_0x9992('0x39')]){_0x389005[_0x9992('0x37')]=_[_0x9992('0x3a')](_0x389005[_0x9992('0x37')],{'$or':_[_0x9992('0x29')](_0x34e44f,function(_0x2951f4){if(_0x2951f4[_0x9992('0x2c')]!==_0x9992('0x3b')){var _0x2067f3={};_0x2067f3[_0x2951f4['name']]={'$like':'%'+_0x29d630[_0x9992('0x2e')][_0x9992('0x39')]+'%'};return _0x2067f3;}})});}_0x389005=_[_0x9992('0x3a')]({},_0x389005,_0x29d630[_0x9992('0x3c')]);var _0x14f5c5={'where':_0x389005[_0x9992('0x37')]};return db['ChatInternalMessage']['count'](_0x14f5c5)[_0x9992('0x25')](function(_0x3bd70f){_0x2857ca[_0x9992('0x1e')]=_0x3bd70f;if(_0x29d630[_0x9992('0x2e')][_0x9992('0x3d')]){_0x389005[_0x9992('0x3e')]=[{'all':!![]}];}return db[_0x9992('0x2a')]['findAll'](_0x389005);})[_0x9992('0x25')](function(_0x12b685){_0x2857ca[_0x9992('0x3f')]=_0x12b685;return _0x2857ca;})[_0x9992('0x25')](respondWithFilteredResult(_0x2a6b87,_0x389005))['catch'](handleError(_0x2a6b87,null));};exports['show']=function(_0x6daa63,_0x4c66c5){var _0x406516={'raw':!![],'where':{'id':_0x6daa63[_0x9992('0x40')]['id']}},_0x13edd7={};_0x13edd7['model']=_[_0x9992('0x41')](db[_0x9992('0x2a')]['rawAttributes']);_0x13edd7['query']=_[_0x9992('0x41')](_0x6daa63[_0x9992('0x2e')]);_0x13edd7[_0x9992('0x38')]=_[_0x9992('0x2f')](_0x13edd7['model'],_0x13edd7[_0x9992('0x2e')]);_0x406516[_0x9992('0x30')]=_[_0x9992('0x2f')](_0x13edd7['model'],qs[_0x9992('0x32')](_0x6daa63[_0x9992('0x2e')][_0x9992('0x32')]));_0x406516['attributes']=_0x406516[_0x9992('0x30')][_0x9992('0x33')]?_0x406516[_0x9992('0x30')]:_0x13edd7[_0x9992('0x31')];if(_0x6daa63[_0x9992('0x2e')][_0x9992('0x3d')]){_0x406516[_0x9992('0x3e')]=[{'all':!![]}];}_0x406516=_[_0x9992('0x3a')]({},_0x406516,_0x6daa63[_0x9992('0x3c')]);return db['ChatInternalMessage'][_0x9992('0x42')](_0x406516)[_0x9992('0x25')](handleEntityNotFound(_0x4c66c5,null))[_0x9992('0x25')](respondWithResult(_0x4c66c5,null))[_0x9992('0x43')](handleError(_0x4c66c5,null));};exports[_0x9992('0x44')]=function(_0x1b631e,_0x176c27){return db[_0x9992('0x2a')][_0x9992('0x44')](_0x1b631e[_0x9992('0x45')],{})['then'](respondWithResult(_0x176c27,0xc9))[_0x9992('0x43')](handleError(_0x176c27,null));};exports['update']=function(_0x2a4175,_0x270da9){if(_0x2a4175[_0x9992('0x45')]['id']){delete _0x2a4175[_0x9992('0x45')]['id'];}return db[_0x9992('0x2a')]['find']({'where':{'id':_0x2a4175[_0x9992('0x40')]['id']}})[_0x9992('0x25')](handleEntityNotFound(_0x270da9,null))['then'](saveUpdates(_0x2a4175[_0x9992('0x45')],null))[_0x9992('0x25')](respondWithResult(_0x270da9,null))[_0x9992('0x43')](handleError(_0x270da9,null));};exports[_0x9992('0x24')]=function(_0x301650,_0x3ed860){return db['ChatInternalMessage'][_0x9992('0x42')]({'where':{'id':_0x301650[_0x9992('0x40')]['id']}})[_0x9992('0x25')](handleEntityNotFound(_0x3ed860,null))[_0x9992('0x25')](removeEntity(_0x3ed860,null))[_0x9992('0x43')](handleError(_0x3ed860,null));};exports[_0x9992('0x46')]=function(_0xb74806,_0x1fbe3d){return db['ChatInternalMessage'][_0x9992('0x46')]()[_0x9992('0x25')](respondWithResult(_0x1fbe3d,null))['catch'](handleError(_0x1fbe3d,null));};function wrapUser(_0x220a4b){return function(_0xcf01b4){var _0x1c8585=_0x220a4b['get']({'plain':!![]});_0x1c8585['messages']=[];if(_0xcf01b4){_0x1c8585['lastMessageAt']=_0xcf01b4[_0x9992('0x47')];_0x1c8585[_0x9992('0x48')]=_0xcf01b4;}else{_0x1c8585[_0x9992('0x49')]=moment(0x0)[_0x9992('0x4a')](_0x9992('0x4b'));_0x1c8585['lastMessage']={};}return _0x1c8585;};}exports[_0x9992('0x4c')]=function(_0x18430a,_0x2a979a,_0x157d17){var _0x416451=[];return db[_0x9992('0x4d')][_0x9992('0x4e')]({'where':{'role':[_0x9992('0x4f'),_0x9992('0x50'),_0x9992('0x51')]},'attributes':['id',_0x9992('0x52'),_0x9992('0x2d'),_0x9992('0x53'),_0x9992('0x54'),_0x9992('0x55'),'online',_0x9992('0x56'),_0x9992('0x57'),_0x9992('0x58')],'order':qs[_0x9992('0x36')](_0x9992('0x59')),'include':[{'model':db[_0x9992('0x5a')],'as':_0x9992('0x5b'),'attributes':['id',_0x9992('0x2d'),_0x9992('0x2c')],'through':{'attributes':[]}}]})[_0x9992('0x25')](function(_0x46f025){if(_0x46f025){var _0x4b291b=_0x18430a[_0x9992('0x51')][_0x9992('0x5c')]({'plain':!![]});if(!_0x4b291b)throw new Error(_0x9992('0x5d'));if(_0x4b291b[_0x9992('0x53')]==='user'){return db[_0x9992('0x5e')][_0x9992('0x42')]({'where':{'name':_0x9992('0x5f'),'userProfileId':_0x4b291b[_0x9992('0x60')]},'raw':!![]})[_0x9992('0x25')](function(_0xad2c78){if(_0xad2c78){if(_0xad2c78[_0x9992('0x61')]===0x0){return db[_0x9992('0x62')][_0x9992('0x4e')]({'where':{'sectionId':_0xad2c78['id']},'raw':!![]})[_0x9992('0x25')](function(_0x2418ed){var _0x42511d=[];if(_[_0x9992('0x63')](_0x2418ed)){_0x42511d=_[_0x9992('0x39')](_0x46f025,function(_0x3eb870){if(_0x3eb870[_0x9992('0x53')]!=='agent'){return _0x3eb870;}});return _0x42511d;}else{for(var _0x46cda6=0x0;_0x46cda6<_0x46f025[_0x9992('0x33')];_0x46cda6++){var _0x575443=_0x46f025[_0x46cda6];if(_0x575443[_0x9992('0x53')]===_0x9992('0x4f')){var _0x519356=_[_0x9992('0x42')](_0x2418ed,function(_0x28d2bb){return _0x28d2bb['resourceId']===_0x575443['id'];});if(_0x519356)_0x42511d[_0x9992('0x64')](_0x575443);}else{_0x42511d[_0x9992('0x64')](_0x575443);}}return _0x42511d;}});}else{return _0x46f025;}}else{var _0x39fb2d=_['filter'](_0x46f025,function(_0x470c65){if(_0x470c65[_0x9992('0x53')]!==_0x9992('0x4f')){return _0x470c65;}});return _0x39fb2d;}});}else{return _0x46f025;}}})[_0x9992('0x25')](function(_0x39c609){var _0x3153b7=[];if(_0x39c609){_0x416451=_0x39c609;for(var _0x208c0a=0x0;_0x208c0a<_0x39c609[_0x9992('0x33')];_0x208c0a+=0x1){_0x416451[_0x208c0a][_0x9992('0x65')]=[];_0x3153b7['push'](db[_0x9992('0x2a')][_0x9992('0x42')]({'where':{'FromId':[_0x18430a['user']['id'],_0x39c609[_0x208c0a]['id']],'ToId':[_0x18430a[_0x9992('0x51')]['id'],_0x39c609[_0x208c0a]['id']],'ChatGroupId':null},'attributes':['id',_0x9992('0x47'),_0x9992('0x66'),'ToId',_0x9992('0x67'),_0x9992('0x45')],'order':qs['sort']('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x39c609[_0x208c0a])));}return BPromise['all'](_0x3153b7);}return[];})['then'](function(_0x361400){return{'rows':_0x361400,'count':_0x361400['length']};})[_0x9992('0x25')](respondWithResult(_0x2a979a,null))['catch'](handleError(_0x2a979a,null));};
\ No newline at end of file
index ae4e9db..714deb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d9=['save','update','remove','hasOwnProperty','hook','exports','../../mysqldb','ChatInternalMessage','setMaxListeners'];(function(_0x45185b,_0xb2d4db){var _0x24b578=function(_0x1b023d){while(--_0x1b023d){_0x45185b['push'](_0x45185b['shift']());}};_0x24b578(++_0xb2d4db);}(_0x20d9,0xcc));var _0x920d=function(_0xee700d,_0x5c1eb1){_0xee700d=_0xee700d-0x0;var _0x46a7b7=_0x20d9[_0xee700d];return _0x46a7b7;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x920d('0x0'))['db'][_0x920d('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x920d('0x2')](0x0);var events={'afterCreate':_0x920d('0x3'),'afterUpdate':_0x920d('0x4'),'afterDestroy':_0x920d('0x5')};function emitEvent(_0x2d41d4){return function(_0xd4aa26,_0x21ee9e,_0x8a1718){ChatInternalMessageEvents['emit'](_0x2d41d4+':'+_0xd4aa26['id'],_0xd4aa26);ChatInternalMessageEvents['emit'](_0x2d41d4,_0xd4aa26);_0x8a1718(null);};}for(var e in events){if(events[_0x920d('0x6')](e)){var event=events[e];ChatInternalMessage[_0x920d('0x7')](e,emitEvent(event));}}module[_0x920d('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x8470=['hook','events','../../mysqldb','ChatInternalMessage','save','update','remove','emit','hasOwnProperty'];(function(_0x27bd2c,_0x24bd98){var _0x3784ea=function(_0x4ca802){while(--_0x4ca802){_0x27bd2c['push'](_0x27bd2c['shift']());}};_0x3784ea(++_0x24bd98);}(_0x8470,0x160));var _0x0847=function(_0xce2061,_0xb8d633){_0xce2061=_0xce2061-0x0;var _0x2e5071=_0x8470[_0xce2061];return _0x2e5071;};'use strict';var EventEmitter=require(_0x0847('0x0'));var ChatInternalMessage=require(_0x0847('0x1'))['db'][_0x0847('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0847('0x3'),'afterUpdate':_0x0847('0x4'),'afterDestroy':_0x0847('0x5')};function emitEvent(_0x9282aa){return function(_0x239fb8,_0x4ef479,_0x1e0a14){ChatInternalMessageEvents['emit'](_0x9282aa+':'+_0x239fb8['id'],_0x239fb8);ChatInternalMessageEvents[_0x0847('0x6')](_0x9282aa,_0x239fb8);_0x1e0a14(null);};}for(var e in events){if(events[_0x0847('0x7')](e)){var event=events[e];ChatInternalMessage[_0x0847('0x8')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
index 8b39400..57fcccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24aa=['bluebird','request-promise','../../config/environment','./chatInternalMessage.attributes','exports','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment'];(function(_0x440485,_0x4fdf81){var _0x56e4a4=function(_0x18afdc){while(--_0x18afdc){_0x440485['push'](_0x440485['shift']());}};_0x56e4a4(++_0x4fdf81);}(_0x24aa,0x1e8));var _0xa24a=function(_0x3449dc,_0x242fa7){_0x3449dc=_0x3449dc-0x0;var _0x80cc87=_0x24aa[_0x3449dc];return _0x80cc87;};'use strict';var _=require(_0xa24a('0x0'));var util=require(_0xa24a('0x1'));var logger=require(_0xa24a('0x2'))('api');var moment=require(_0xa24a('0x3'));var BPromise=require(_0xa24a('0x4'));var rp=require(_0xa24a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa24a('0x6'));var attributes=require(_0xa24a('0x7'));module[_0xa24a('0x8')]=function(_0x4e7be4,_0x11b06f){return _0x4e7be4['define'](_0xa24a('0x9'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa24a('0xa'),'collate':_0xa24a('0xb')});};
\ No newline at end of file
+var _0xce15=['exports','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes'];(function(_0x276f4e,_0xa327d1){var _0x1217d2=function(_0x4a6474){while(--_0x4a6474){_0x276f4e['push'](_0x276f4e['shift']());}};_0x1217d2(++_0xa327d1);}(_0xce15,0xd6));var _0x5ce1=function(_0x412818,_0xe8171a){_0x412818=_0x412818-0x0;var _0x2d40d1=_0xce15[_0x412818];return _0x2d40d1;};'use strict';var _=require(_0x5ce1('0x0'));var util=require(_0x5ce1('0x1'));var logger=require(_0x5ce1('0x2'))(_0x5ce1('0x3'));var moment=require(_0x5ce1('0x4'));var BPromise=require(_0x5ce1('0x5'));var rp=require(_0x5ce1('0x6'));var fs=require('fs');var path=require(_0x5ce1('0x7'));var rimraf=require(_0x5ce1('0x8'));var config=require(_0x5ce1('0x9'));var attributes=require(_0x5ce1('0xa'));module[_0x5ce1('0xb')]=function(_0x34a8b1,_0xdbf80f){return _0x34a8b1['define']('ChatInternalMessage',attributes,{'tableName':_0x5ce1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5ce1('0xd'),'collate':_0x5ce1('0xe')});};
\ No newline at end of file
index 11dc82a..590605f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5502=['error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3d4313,_0x1e9ae1){var _0x5a2f2e=function(_0x222407){while(--_0x222407){_0x3d4313['push'](_0x3d4313['shift']());}};_0x5a2f2e(++_0x1e9ae1);}(_0x5502,0x10b));var _0x2550=function(_0x3d2781,_0x4c8c02){_0x3d2781=_0x3d2781-0x0;var _0x3d71a8=_0x5502[_0x3d2781];return _0x3d71a8;};'use strict';var _=require(_0x2550('0x0'));var util=require(_0x2550('0x1'));var moment=require(_0x2550('0x2'));var BPromise=require(_0x2550('0x3'));var rs=require(_0x2550('0x4'));var fs=require('fs');var Redis=require(_0x2550('0x5'));var db=require(_0x2550('0x6'))['db'];var utils=require(_0x2550('0x7'));var logger=require(_0x2550('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2550('0x9'));var client=jayson['client'][_0x2550('0xa')]({'port':0x232a});config[_0x2550('0xb')]=_[_0x2550('0xc')](config[_0x2550('0xb')],{'host':_0x2550('0xd'),'port':0x18eb});var socket=require(_0x2550('0xe'))(new Redis(config['redis']));require(_0x2550('0xf'))[_0x2550('0x10')](socket);function respondWithRpcPromise(_0x5cd9b9,_0x38e0a6,_0x2b69d1){return new BPromise(function(_0x175f90,_0x5a90e5){return client[_0x2550('0x11')](_0x5cd9b9,_0x2b69d1)['then'](function(_0x53e570){logger['info'](_0x2550('0x12'),_0x38e0a6,'request\x20sent');logger['debug']('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x38e0a6,_0x2550('0x13'),JSON[_0x2550('0x14')](_0x53e570));if(_0x53e570[_0x2550('0x15')]){if(_0x53e570[_0x2550('0x15')][_0x2550('0x16')]===0x1f4){logger[_0x2550('0x15')](_0x2550('0x12'),_0x38e0a6,_0x53e570[_0x2550('0x15')][_0x2550('0x17')]);return _0x5a90e5(_0x53e570['error']['message']);}logger[_0x2550('0x15')](_0x2550('0x12'),_0x38e0a6,_0x53e570[_0x2550('0x15')][_0x2550('0x17')]);return _0x175f90(_0x53e570[_0x2550('0x15')][_0x2550('0x17')]);}else{logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x38e0a6,_0x2550('0x13'));_0x175f90(_0x53e570['result'][_0x2550('0x17')]);}})['catch'](function(_0x51dd8f){logger[_0x2550('0x15')](_0x2550('0x12'),_0x38e0a6,_0x51dd8f);_0x5a90e5(_0x51dd8f);});});}
\ No newline at end of file
+var _0x4397=['debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x23c1eb,_0x2bec88){var _0x1ab8f8=function(_0x1ece6b){while(--_0x1ece6b){_0x23c1eb['push'](_0x23c1eb['shift']());}};_0x1ab8f8(++_0x2bec88);}(_0x4397,0x196));var _0x7439=function(_0xa9eaa0,_0x4ba2b4){_0xa9eaa0=_0xa9eaa0-0x0;var _0x30897a=_0x4397[_0xa9eaa0];return _0x30897a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7439('0x0'));var BPromise=require(_0x7439('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7439('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x7439('0x3'));var logger=require('../../config/logger')(_0x7439('0x4'));var config=require('../../config/environment');var jayson=require(_0x7439('0x5'));var client=jayson[_0x7439('0x6')][_0x7439('0x7')]({'port':0x232a});config[_0x7439('0x8')]=_[_0x7439('0x9')](config[_0x7439('0x8')],{'host':_0x7439('0xa'),'port':0x18eb});var socket=require(_0x7439('0xb'))(new Redis(config[_0x7439('0x8')]));require(_0x7439('0xc'))[_0x7439('0xd')](socket);function respondWithRpcPromise(_0x2eb8c4,_0x280eac,_0x399d1b){return new BPromise(function(_0x22bc86,_0x45cc61){return client[_0x7439('0xe')](_0x2eb8c4,_0x399d1b)[_0x7439('0xf')](function(_0x26071d){logger[_0x7439('0x10')](_0x7439('0x11'),_0x280eac,_0x7439('0x12'));logger[_0x7439('0x13')](_0x7439('0x14'),_0x280eac,_0x7439('0x12'),JSON[_0x7439('0x15')](_0x26071d));if(_0x26071d[_0x7439('0x16')]){if(_0x26071d[_0x7439('0x16')]['code']===0x1f4){logger[_0x7439('0x16')](_0x7439('0x11'),_0x280eac,_0x26071d[_0x7439('0x16')]['message']);return _0x45cc61(_0x26071d['error'][_0x7439('0x17')]);}logger[_0x7439('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x280eac,_0x26071d[_0x7439('0x16')][_0x7439('0x17')]);return _0x22bc86(_0x26071d[_0x7439('0x16')]['message']);}else{logger[_0x7439('0x10')](_0x7439('0x11'),_0x280eac,_0x7439('0x12'));_0x22bc86(_0x26071d[_0x7439('0x18')][_0x7439('0x17')]);}})['catch'](function(_0x49ef56){logger[_0x7439('0x16')](_0x7439('0x11'),_0x280eac,_0x49ef56);_0x45cc61(_0x49ef56);});});}
\ No newline at end of file
index b63e2c0..07af273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b1c=['removeListener','register','length','./chatInternalMessage.events','save','remove','update','emit'];(function(_0x4077f,_0x307a47){var _0xbeb552=function(_0x106e13){while(--_0x106e13){_0x4077f['push'](_0x4077f['shift']());}};_0xbeb552(++_0x307a47);}(_0x3b1c,0x12b));var _0xc3b1=function(_0x40be4a,_0x42747e){_0x40be4a=_0x40be4a-0x0;var _0x5e3a38=_0x3b1c[_0x40be4a];return _0x5e3a38;};'use strict';var ChatInternalMessageEvents=require(_0xc3b1('0x0'));var events=[_0xc3b1('0x1'),_0xc3b1('0x2'),_0xc3b1('0x3')];function createListener(_0x40babe,_0x45ab5d){return function(_0x34bfc7){_0x45ab5d[_0xc3b1('0x4')](_0x40babe,_0x34bfc7);};}function removeListener(_0x5423b9,_0x4ff90c){return function(){ChatInternalMessageEvents[_0xc3b1('0x5')](_0x5423b9,_0x4ff90c);};}exports[_0xc3b1('0x6')]=function(_0xe9d620){for(var _0x3618f1=0x0,_0x5e47e6=events[_0xc3b1('0x7')];_0x3618f1<_0x5e47e6;_0x3618f1++){var _0x5acb96=events[_0x3618f1];var _0x5dc50a=createListener('chatInternalMessage:'+_0x5acb96,_0xe9d620);ChatInternalMessageEvents['on'](_0x5acb96,_0x5dc50a);}};
\ No newline at end of file
+var _0x6f6f=['chatInternalMessage:','./chatInternalMessage.events','save','remove','update','emit','removeListener','length'];(function(_0x296d66,_0x501966){var _0x49faa2=function(_0x446f69){while(--_0x446f69){_0x296d66['push'](_0x296d66['shift']());}};_0x49faa2(++_0x501966);}(_0x6f6f,0x169));var _0xf6f6=function(_0x1bfc5c,_0x2472df){_0x1bfc5c=_0x1bfc5c-0x0;var _0x108926=_0x6f6f[_0x1bfc5c];return _0x108926;};'use strict';var ChatInternalMessageEvents=require(_0xf6f6('0x0'));var events=[_0xf6f6('0x1'),_0xf6f6('0x2'),_0xf6f6('0x3')];function createListener(_0x3957c9,_0x2f28d8){return function(_0xdee691){_0x2f28d8[_0xf6f6('0x4')](_0x3957c9,_0xdee691);};}function removeListener(_0x32fe29,_0x39d749){return function(){ChatInternalMessageEvents[_0xf6f6('0x5')](_0x32fe29,_0x39d749);};}exports['register']=function(_0x55aae0){for(var _0x7fcd60=0x0,_0x14da31=events[_0xf6f6('0x6')];_0x7fcd60<_0x14da31;_0x7fcd60++){var _0x54d913=events[_0x7fcd60];var _0x75801e=createListener(_0xf6f6('0x7')+_0x54d913,_0x55aae0);ChatInternalMessageEvents['on'](_0x54d913,_0x75801e);}};
\ No newline at end of file
index ebd6840..752aab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb2=['/describe','isAuthenticated','describe','/users','getUsers','/:id','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index'];(function(_0x48aa65,_0x2ff462){var _0x354849=function(_0x5e08e8){while(--_0x5e08e8){_0x48aa65['push'](_0x48aa65['shift']());}};_0x354849(++_0x2ff462);}(_0x4fb2,0x17b));var _0x24fb=function(_0x379d12,_0x3737d6){_0x379d12=_0x379d12-0x0;var _0x3073e3=_0x4fb2[_0x379d12];return _0x3073e3;};'use strict';var multer=require(_0x24fb('0x0'));var util=require(_0x24fb('0x1'));var path=require(_0x24fb('0x2'));var timeout=require('connect-timeout');var express=require(_0x24fb('0x3'));var router=express[_0x24fb('0x4')]();var fs_extra=require(_0x24fb('0x5'));var auth=require(_0x24fb('0x6'));var interaction=require(_0x24fb('0x7'));var config=require(_0x24fb('0x8'));var controller=require(_0x24fb('0x9'));router[_0x24fb('0xa')]('/',auth['isAuthenticated'](),controller[_0x24fb('0xb')]);router[_0x24fb('0xa')](_0x24fb('0xc'),auth[_0x24fb('0xd')](),controller[_0x24fb('0xe')]);router[_0x24fb('0xa')](_0x24fb('0xf'),auth[_0x24fb('0xd')](),controller[_0x24fb('0x10')]);router[_0x24fb('0xa')](_0x24fb('0x11'),auth[_0x24fb('0xd')](),controller['show']);router['post']('/',auth[_0x24fb('0xd')](),controller[_0x24fb('0x12')]);router[_0x24fb('0x13')](_0x24fb('0x11'),controller[_0x24fb('0x14')]);router[_0x24fb('0x15')]('/:id',auth[_0x24fb('0xd')](),controller[_0x24fb('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xa7a4=['update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','getUsers','show','post','create','/:id'];(function(_0x1e9761,_0x5be100){var _0x419f3e=function(_0x480e16){while(--_0x480e16){_0x1e9761['push'](_0x1e9761['shift']());}};_0x419f3e(++_0x5be100);}(_0xa7a4,0xb3));var _0x4a7a=function(_0xfbe06e,_0x2fb7ab){_0xfbe06e=_0xfbe06e-0x0;var _0x24e5b6=_0xa7a4[_0xfbe06e];return _0x24e5b6;};'use strict';var multer=require('multer');var util=require(_0x4a7a('0x0'));var path=require(_0x4a7a('0x1'));var timeout=require(_0x4a7a('0x2'));var express=require(_0x4a7a('0x3'));var router=express['Router']();var fs_extra=require(_0x4a7a('0x4'));var auth=require(_0x4a7a('0x5'));var interaction=require(_0x4a7a('0x6'));var config=require(_0x4a7a('0x7'));var controller=require(_0x4a7a('0x8'));router[_0x4a7a('0x9')]('/',auth[_0x4a7a('0xa')](),controller[_0x4a7a('0xb')]);router['get'](_0x4a7a('0xc'),auth[_0x4a7a('0xa')](),controller[_0x4a7a('0xd')]);router[_0x4a7a('0x9')]('/users',auth['isAuthenticated'](),controller[_0x4a7a('0xe')]);router[_0x4a7a('0x9')]('/:id',auth[_0x4a7a('0xa')](),controller[_0x4a7a('0xf')]);router[_0x4a7a('0x10')]('/',auth[_0x4a7a('0xa')](),controller[_0x4a7a('0x11')]);router['put'](_0x4a7a('0x12'),controller[_0x4a7a('0x13')]);router['delete']('/:id',auth[_0x4a7a('0xa')](),controller[_0x4a7a('0x14')]);module[_0x4a7a('0x15')]=router;
\ No newline at end of file
index c420744..9da0d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['DATE','STRING','TEXT','sequelize','exports','medium','ENUM','out'];(function(_0x3d5ffe,_0x497344){var _0x19dc7d=function(_0x42695c){while(--_0x42695c){_0x3d5ffe['push'](_0x3d5ffe['shift']());}};_0x19dc7d(++_0x497344);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x34f39c,_0x5c2f79){_0x34f39c=_0x34f39c-0x0;var _0x51df8a=_0xe1e3[_0x34f39c];return _0x51df8a;};'use strict';var Sequelize=require(_0x3e1e('0x0'));module[_0x3e1e('0x1')]={'body':{'type':Sequelize['TEXT'](_0x3e1e('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x3e1e('0x3')]('in','out'),'defaultValue':_0x3e1e('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x3e1e('0x5')]},'providerName':{'type':Sequelize[_0x3e1e('0x6')]},'providerResponse':{'type':Sequelize[_0x3e1e('0x7')]}};
\ No newline at end of file
+var _0x1775=['out','DATE','STRING','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0xcc926b,_0xa6d99){var _0x21341c=function(_0x3c8b1c){while(--_0x3c8b1c){_0xcc926b['push'](_0xcc926b['shift']());}};_0x21341c(++_0xa6d99);}(_0x1775,0x1db));var _0x5177=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1775[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x5177('0x0')]={'body':{'type':Sequelize[_0x5177('0x1')](_0x5177('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x5177('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x5177('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5177('0x4')]('in',_0x5177('0x5')),'defaultValue':_0x5177('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x5177('0x6')]},'providerName':{'type':Sequelize[_0x5177('0x7')]},'providerResponse':{'type':Sequelize[_0x5177('0x1')]}};
\ No newline at end of file
index e31b5cd..0928cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','chat-interactions','chat','ChatInteraction','RejectMessage','rejectMessage','Sequelize','QueryTypes','SELECT','fullname','rejectmessage','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','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteractionId','isNil','read1stAt','format'];(function(_0x3e3828,_0x3bd0bb){var _0xd796ba=function(_0x4f2c11){while(--_0x4f2c11){_0x3e3828['push'](_0x3e3828['shift']());}};_0xd796ba(++_0x3bd0bb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
+var _0x4be6=['ChatMessage','includeAll','findAll','rows','show','params','find','body','describe','../../config/logger','chat-interactions','accept','readAt','format','UserId','user','agent','get','ChatInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','chat','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','User','rejectmessage','formData','eml-format','zip-dir','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','end','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options'];(function(_0x4831ef,_0x6ce310){var _0xee1644=function(_0x2711da){while(--_0x2711da){_0x4831ef['push'](_0x4831ef['shift']());}};_0xee1644(++_0x6ce310);}(_0x4be6,0x1b1));var _0x64be=function(_0x4bf604,_0x150a6a){_0x4bf604=_0x4bf604-0x0;var _0x7fa56a=_0x4be6[_0x4bf604];return _0x7fa56a;};'use strict';var emlformat=require(_0x64be('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64be('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x64be('0x2'));var Mustache=require(_0x64be('0x3'));var util=require(_0x64be('0x4'));var path=require(_0x64be('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x64be('0x6'));var fs=require('fs');var fs_extra=require(_0x64be('0x7'));var _=require(_0x64be('0x8'));var squel=require(_0x64be('0x9'));var crypto=require(_0x64be('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x64be('0xb'));var toCsv=require(_0x64be('0xc'));var querystring=require(_0x64be('0xd'));var Papa=require(_0x64be('0xe'));var Redis=require(_0x64be('0xf'));var authService=require(_0x64be('0x10'));var qs=require(_0x64be('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x64be('0x12'));var logger=require('../../config/logger')(_0x64be('0x13'));var utils=require('../../config/utils');var config=require(_0x64be('0x14'));var licenseUtil=require(_0x64be('0x15'));var db=require(_0x64be('0x16'))['db'];config['redis']=_['defaults'](config[_0x64be('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x64be('0x18'))(new Redis(config[_0x64be('0x17')]));require(_0x64be('0x19'))['register'](socket);var jayson=require(_0x64be('0x1a'));var client=jayson[_0x64be('0x1b')][_0x64be('0x1c')]({'port':0x232c});var client9002=jayson[_0x64be('0x1b')][_0x64be('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x569e2,_0x1541c9,_0x4575f8,_0x254f55){return new BPromise(function(_0x4b3c55,_0x355c9f){var _0x320068=_0x254f55||client;return _0x320068[_0x64be('0x1d')](_0x569e2,_0x4575f8)['then'](function(_0x3cb10e){logger[_0x64be('0x1e')](_0x64be('0x1f'),_0x1541c9,_0x64be('0x20'));logger['debug'](_0x64be('0x21'),_0x1541c9,'request\x20sent',JSON[_0x64be('0x22')](_0x3cb10e));if(_0x3cb10e[_0x64be('0x23')]){if(_0x3cb10e[_0x64be('0x23')]['code']===0x1f4){logger[_0x64be('0x23')]('ChatMessage,\x20%s,\x20%s',_0x1541c9,_0x3cb10e[_0x64be('0x23')][_0x64be('0x24')]);return _0x355c9f(_0x3cb10e[_0x64be('0x23')]['message']);}logger[_0x64be('0x23')](_0x64be('0x1f'),_0x1541c9,_0x3cb10e['error'][_0x64be('0x24')]);return _0x4b3c55(_0x3cb10e[_0x64be('0x23')]['message']);}else{logger[_0x64be('0x1e')](_0x64be('0x1f'),_0x1541c9,_0x64be('0x20'));_0x4b3c55(_0x3cb10e['result'][_0x64be('0x24')]);}})[_0x64be('0x25')](function(_0x1a02e4){logger[_0x64be('0x23')](_0x64be('0x1f'),_0x1541c9,_0x1a02e4);_0x355c9f(_0x1a02e4);});});}function respondWithStatusCode(_0x15fe66,_0x319164){_0x319164=_0x319164||0xcc;return function(_0xab853b){if(_0xab853b){return _0x15fe66['sendStatus'](_0x319164);}return _0x15fe66['status'](_0x319164)[_0x64be('0x26')]();};}function respondWithResult(_0x53bdd5,_0xfea427){_0xfea427=_0xfea427||0xc8;return function(_0xab9b99){if(_0xab9b99){return _0x53bdd5[_0x64be('0x27')](_0xfea427)[_0x64be('0x28')](_0xab9b99);}};}function respondWithFilteredResult(_0x13eac9,_0x133999){return function(_0xd7d94){if(_0xd7d94){var _0x58495d=typeof _0x133999[_0x64be('0x29')]===_0x64be('0x2a')&&typeof _0x133999[_0x64be('0x2b')]==='undefined';var _0x20d866=_0xd7d94[_0x64be('0x2c')];var _0x18cab1=_0x58495d?0x0:_0x133999['offset'];var _0x3ba89c=_0x58495d?_0xd7d94[_0x64be('0x2c')]:_0x133999[_0x64be('0x29')]+_0x133999[_0x64be('0x2b')];var _0x475f44;if(_0x3ba89c>=_0x20d866){_0x3ba89c=_0x20d866;_0x475f44=0xc8;}else{_0x475f44=0xce;}_0x13eac9[_0x64be('0x27')](_0x475f44);return _0x13eac9['set'](_0x64be('0x2d'),_0x18cab1+'-'+_0x3ba89c+'/'+_0x20d866)['json'](_0xd7d94);}return null;};}function patchUpdates(_0x2a0ff6){return function(_0x2089b3){try{jsonpatch['apply'](_0x2089b3,_0x2a0ff6,!![]);}catch(_0x47a953){return BPromise[_0x64be('0x2e')](_0x47a953);}return _0x2089b3[_0x64be('0x2f')]();};}function saveUpdates(_0x2af24f,_0x6eca6b){return function(_0x20fd14){if(_0x20fd14){return _0x20fd14[_0x64be('0x30')](_0x2af24f)['then'](function(_0x2fe6f4){return _0x2fe6f4;});}return null;};}function removeEntity(_0x5b92c0,_0x1b8784){return function(_0x4633ea){if(_0x4633ea){return _0x4633ea[_0x64be('0x31')]()[_0x64be('0x32')](function(){_0x5b92c0['status'](0xcc)[_0x64be('0x26')]();});}};}function handleEntityNotFound(_0x13c378,_0x250519){return function(_0x1ef7d2){if(!_0x1ef7d2){_0x13c378['sendStatus'](0x194);}return _0x1ef7d2;};}function handleError(_0xebcc16,_0x3d0931){_0x3d0931=_0x3d0931||0x1f4;return function(_0xc6c252){logger[_0x64be('0x23')](_0xc6c252[_0x64be('0x33')]);if(_0xc6c252[_0x64be('0x34')]){delete _0xc6c252[_0x64be('0x34')];}_0xebcc16[_0x64be('0x27')](_0x3d0931)[_0x64be('0x35')](_0xc6c252);};}exports[_0x64be('0x36')]=function(_0x1855ac,_0xa9db4a){var _0x3caeec={},_0x5ff4b={},_0xa372ef={'count':0x0,'rows':[]};var _0x6fa687=_[_0x64be('0x37')](db['ChatMessage'][_0x64be('0x38')],function(_0x16e878){return{'name':_0x16e878['fieldName'],'type':_0x16e878[_0x64be('0x39')][_0x64be('0x3a')]};});_0x5ff4b[_0x64be('0x3b')]=_[_0x64be('0x37')](_0x6fa687,_0x64be('0x34'));_0x5ff4b[_0x64be('0x3c')]=_[_0x64be('0x3d')](_0x1855ac[_0x64be('0x3c')]);_0x5ff4b[_0x64be('0x3e')]=_[_0x64be('0x3f')](_0x5ff4b[_0x64be('0x3b')],_0x5ff4b[_0x64be('0x3c')]);_0x3caeec[_0x64be('0x40')]=_[_0x64be('0x3f')](_0x5ff4b[_0x64be('0x3b')],qs['fields'](_0x1855ac[_0x64be('0x3c')][_0x64be('0x41')]));_0x3caeec['attributes']=_0x3caeec['attributes'][_0x64be('0x42')]?_0x3caeec['attributes']:_0x5ff4b[_0x64be('0x3b')];if(!_0x1855ac[_0x64be('0x3c')][_0x64be('0x43')](_0x64be('0x44'))){_0x3caeec[_0x64be('0x2b')]=qs[_0x64be('0x2b')](_0x1855ac[_0x64be('0x3c')][_0x64be('0x2b')]);_0x3caeec[_0x64be('0x29')]=qs[_0x64be('0x29')](_0x1855ac['query'][_0x64be('0x29')]);}_0x3caeec['order']=qs[_0x64be('0x45')](_0x1855ac[_0x64be('0x3c')][_0x64be('0x45')]);_0x3caeec[_0x64be('0x46')]=qs[_0x64be('0x3e')](_['pick'](_0x1855ac[_0x64be('0x3c')],_0x5ff4b[_0x64be('0x3e')]),_0x6fa687);if(_0x1855ac['query']['filter']){_0x3caeec[_0x64be('0x46')]=_[_0x64be('0x47')](_0x3caeec[_0x64be('0x46')],{'$or':_[_0x64be('0x37')](_0x6fa687,function(_0x424a82){if(_0x424a82[_0x64be('0x39')]!==_0x64be('0x48')){var _0x2b9d1d={};_0x2b9d1d[_0x424a82[_0x64be('0x34')]]={'$like':'%'+_0x1855ac[_0x64be('0x3c')][_0x64be('0x49')]+'%'};return _0x2b9d1d;}})});}_0x3caeec=_['merge']({},_0x3caeec,_0x1855ac[_0x64be('0x4a')]);var _0x308f16={'where':_0x3caeec[_0x64be('0x46')]};return db[_0x64be('0x4b')][_0x64be('0x2c')](_0x308f16)[_0x64be('0x32')](function(_0x24e437){_0xa372ef['count']=_0x24e437;if(_0x1855ac[_0x64be('0x3c')][_0x64be('0x4c')]){_0x3caeec['include']=[{'all':!![]}];}return db[_0x64be('0x4b')][_0x64be('0x4d')](_0x3caeec);})['then'](function(_0x108bc2){_0xa372ef[_0x64be('0x4e')]=_0x108bc2;return _0xa372ef;})[_0x64be('0x32')](respondWithFilteredResult(_0xa9db4a,_0x3caeec))['catch'](handleError(_0xa9db4a,null));};exports[_0x64be('0x4f')]=function(_0x394bca,_0x1fafb3){var _0x125709={'raw':!![],'where':{'id':_0x394bca[_0x64be('0x50')]['id']}},_0x1e26e1={};_0x1e26e1[_0x64be('0x3b')]=_[_0x64be('0x3d')](db[_0x64be('0x4b')][_0x64be('0x38')]);_0x1e26e1[_0x64be('0x3c')]=_[_0x64be('0x3d')](_0x394bca['query']);_0x1e26e1['filters']=_[_0x64be('0x3f')](_0x1e26e1[_0x64be('0x3b')],_0x1e26e1[_0x64be('0x3c')]);_0x125709[_0x64be('0x40')]=_[_0x64be('0x3f')](_0x1e26e1[_0x64be('0x3b')],qs[_0x64be('0x41')](_0x394bca[_0x64be('0x3c')][_0x64be('0x41')]));_0x125709[_0x64be('0x40')]=_0x125709[_0x64be('0x40')][_0x64be('0x42')]?_0x125709[_0x64be('0x40')]:_0x1e26e1[_0x64be('0x3b')];if(_0x394bca[_0x64be('0x3c')]['includeAll']){_0x125709['include']=[{'all':!![]}];}_0x125709=_[_0x64be('0x47')]({},_0x125709,_0x394bca[_0x64be('0x4a')]);return db[_0x64be('0x4b')][_0x64be('0x51')](_0x125709)[_0x64be('0x32')](handleEntityNotFound(_0x1fafb3,null))[_0x64be('0x32')](respondWithResult(_0x1fafb3,null))[_0x64be('0x25')](handleError(_0x1fafb3,null));};exports['create']=function(_0xcf041a,_0x551060){return db[_0x64be('0x4b')]['create'](_0xcf041a['body'],{})[_0x64be('0x32')](respondWithResult(_0x551060,0xc9))[_0x64be('0x25')](handleError(_0x551060,null));};exports[_0x64be('0x30')]=function(_0x56f076,_0x58b8f9){if(_0x56f076['body']['id']){delete _0x56f076[_0x64be('0x52')]['id'];}return db[_0x64be('0x4b')][_0x64be('0x51')]({'where':{'id':_0x56f076[_0x64be('0x50')]['id']}})['then'](handleEntityNotFound(_0x58b8f9,null))['then'](saveUpdates(_0x56f076[_0x64be('0x52')],null))[_0x64be('0x32')](respondWithResult(_0x58b8f9,null))[_0x64be('0x25')](handleError(_0x58b8f9,null));};exports['destroy']=function(_0x2e2a34,_0x156c6a){return db[_0x64be('0x4b')][_0x64be('0x51')]({'where':{'id':_0x2e2a34['params']['id']}})[_0x64be('0x32')](handleEntityNotFound(_0x156c6a,null))[_0x64be('0x32')](removeEntity(_0x156c6a,null))[_0x64be('0x25')](handleError(_0x156c6a,null));};exports[_0x64be('0x53')]=function(_0x288704,_0x3f19ce){return db[_0x64be('0x4b')][_0x64be('0x53')]()[_0x64be('0x32')](respondWithResult(_0x3f19ce,null))[_0x64be('0x25')](handleError(_0x3f19ce,null));};var interaction_log=require(_0x64be('0x54'))(_0x64be('0x55'));exports[_0x64be('0x56')]=function(_0x20c04e,_0x435675,_0xe47edb){var _0xc4b1dd={'agent':{},'channel':'chat'};if(_0x20c04e[_0x64be('0x52')]['id']){delete _0x20c04e['body']['id'];}_0x20c04e['body']['read']=!![];_0x20c04e['body'][_0x64be('0x57')]=moment()[_0x64be('0x58')]('YYYY-MM-DD\x20HH:mm:ss');_0x20c04e['body'][_0x64be('0x59')]=_0x20c04e[_0x64be('0x52')]['UserId']||_0x20c04e[_0x64be('0x5a')]['id'];_0xc4b1dd[_0x64be('0x5b')]['id']=_0x20c04e[_0x64be('0x52')][_0x64be('0x59')];return db[_0x64be('0x4b')][_0x64be('0x51')]({'where':{'id':_0x20c04e[_0x64be('0x50')]['id'],'UserId':null}})[_0x64be('0x32')](handleEntityNotFound(_0x435675,null))[_0x64be('0x32')](saveUpdates(_0x20c04e['body'],null))['then'](function(_0x571c05){if(_0x571c05){_0xc4b1dd[_0x64be('0x24')]=_0x571c05[_0x64be('0x5c')]({'plain':!![]});return db['ChatInteraction'][_0x64be('0x51')]({'where':{'id':_0x571c05[_0x64be('0x5d')]}});}return null;})[_0x64be('0x32')](handleEntityNotFound(_0x435675,null))[_0x64be('0x32')](function(_0x25d8a5){if(_0x25d8a5){return _0x25d8a5[_0x64be('0x30')]({'UserId':_0x20c04e[_0x64be('0x52')][_0x64be('0x59')],'read1stAt':_[_0x64be('0x5e')](_0x25d8a5[_0x64be('0x5f')])?moment()[_0x64be('0x58')](_0x64be('0x60')):undefined});}return null;})['then'](function(_0x307dfe){if(_0x307dfe){_0xc4b1dd['interaction']=_0x307dfe[_0x64be('0x5c')]({'plain':!![]});interaction_log[_0x64be('0x1e')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x20c04e[_0x64be('0x5a')]['id'],_0x20c04e[_0x64be('0x5a')][_0x64be('0x34')],_0x20c04e[_0x64be('0x5a')][_0x64be('0x61')],_0xc4b1dd[_0x64be('0x62')]['id'],_0x20c04e[_0x64be('0x52')]?JSON[_0x64be('0x22')](_0x20c04e[_0x64be('0x52')]):_0x64be('0x63'));return respondWithRpcPromise(_0x64be('0x64'),_0x64be('0x65'),_0xc4b1dd);}return null;})[_0x64be('0x32')](function(_0xa81a9d){var _0x336aed=_0x64be('0x66')+_0xa81a9d[_0x64be('0x24')][_0x64be('0x67')];return db[_0x64be('0x68')][_0x64be('0x3c')](_0x336aed,{'type':db[_0x64be('0x69')][_0x64be('0x6a')][_0x64be('0x6b')],'raw':!![]})[_0x64be('0x32')](function(_0x3e2591){return _0x3e2591;});})['then'](function(_0x674b2e){if(_0x674b2e){_0xc4b1dd[_0x64be('0x24')][_0x64be('0x6c')]=_0x674b2e[0x0];if(!_0x20c04e[_0x64be('0x52')][_0x64be('0x59')])return;return db['User'][_0x64be('0x51')]({'where':{'id':_0x20c04e['body'][_0x64be('0x59')],'role':'agent'},'attributes':['id',_0x64be('0x34'),_0x64be('0x6d'),_0x64be('0x6e'),_0x64be('0x6f')],'raw':!![]});}return null;})[_0x64be('0x32')](function(_0x2c76fb){if(!_0x2c76fb)return null;_0xc4b1dd['message'][_0x64be('0x5b')]=_0x2c76fb;return _0xc4b1dd;})[_0x64be('0x32')](function(_0x5b1417){if(_0x5b1417){if(_0x20c04e[_0x64be('0x52')][_0x64be('0x70')]){_0xc4b1dd[_0x64be('0x24')][_0x64be('0x71')]=util['format'](_0x64be('0x72'),_0x20c04e['user'][_0x64be('0x34')]);_0xc4b1dd[_0x64be('0x24')][_0x64be('0x73')]=_0xc4b1dd[_0x64be('0x73')];_0xc4b1dd[_0x64be('0x24')][_0x64be('0x74')]=_0xc4b1dd['channel'];_0xc4b1dd[_0x64be('0x24')][_0x64be('0x75')]=_0x64be('0x56');return respondWithRpcPromise('EventManager',_0x64be('0x76'),{'event':_0x64be('0x77'),'message':_[_0x64be('0x47')](_0xc4b1dd['message'],JSON[_0x64be('0x78')](_0xc4b1dd['interaction']['formData']))},client9002)['then'](function(){return _0xc4b1dd;});}return _0xc4b1dd;}return null;})['then'](respondWithResult(_0x435675,null))['catch'](handleError(_0x435675,null));};var interaction_log=require(_0x64be('0x54'))('chat-interactions');exports[_0x64be('0x2e')]=function(_0x2e2e6e,_0x948881,_0x354190){var _0x4a4020={'agent':{},'channel':_0x64be('0x79')};if(_0x2e2e6e[_0x64be('0x52')]['id']){delete _0x2e2e6e[_0x64be('0x52')]['id'];}_0x2e2e6e[_0x64be('0x52')][_0x64be('0x59')]=_0x2e2e6e[_0x64be('0x52')][_0x64be('0x59')]||_0x2e2e6e[_0x64be('0x5a')]['id'];_0x4a4020[_0x64be('0x5b')]['id']=_0x2e2e6e['body'][_0x64be('0x59')];return db[_0x64be('0x4b')][_0x64be('0x51')]({'where':{'id':_0x2e2e6e[_0x64be('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x948881,null))['then'](function(_0x245e34){if(_0x245e34){_0x4a4020[_0x64be('0x24')]=_0x245e34[_0x64be('0x5c')]({'plain':!![]});return db[_0x64be('0x7a')][_0x64be('0x51')]({'where':{'id':_0x245e34[_0x64be('0x5d')]}});}return null;})[_0x64be('0x32')](handleEntityNotFound(_0x948881,null))[_0x64be('0x32')](function(_0x1c44fb){if(_0x1c44fb){_0x4a4020[_0x64be('0x62')]=_0x1c44fb[_0x64be('0x5c')]({'plain':!![]});interaction_log[_0x64be('0x1e')](_0x64be('0x7b'),_0x2e2e6e['user']['id'],_0x2e2e6e[_0x64be('0x5a')][_0x64be('0x34')],_0x2e2e6e['user']['role'],_0x4a4020['interaction']['id'],_0x2e2e6e[_0x64be('0x52')]?JSON[_0x64be('0x22')](_0x2e2e6e[_0x64be('0x52')]):'null');return respondWithRpcPromise('RejectMessage','rejectMessage',_0x4a4020);}return null;})['then'](function(_0x265e8b){var _0x378e96=_0x64be('0x66')+_0x265e8b[_0x64be('0x24')][_0x64be('0x67')];return db[_0x64be('0x68')][_0x64be('0x3c')](_0x378e96,{'type':db[_0x64be('0x69')]['QueryTypes'][_0x64be('0x6b')],'raw':!![]})[_0x64be('0x32')](function(_0x423f59){return _0x423f59;});})[_0x64be('0x32')](function(_0x254136){if(_0x254136){_0x4a4020[_0x64be('0x24')][_0x64be('0x6c')]=_0x254136[0x0];if(!_0x2e2e6e['body'][_0x64be('0x59')])return;return db[_0x64be('0x7c')][_0x64be('0x51')]({'where':{'id':_0x2e2e6e['body'][_0x64be('0x59')],'role':'agent'},'attributes':['id',_0x64be('0x34'),_0x64be('0x6d'),'email',_0x64be('0x6f')],'raw':!![]});}return null;})[_0x64be('0x32')](function(_0x39acdf){if(!_0x39acdf)return null;_0x4a4020[_0x64be('0x24')]['agent']=_0x39acdf;return _0x4a4020;})[_0x64be('0x32')](function(_0x172c13){if(_0x172c13){_0x172c13[_0x64be('0x24')]['interface']=util['format'](_0x64be('0x72'),_0x2e2e6e[_0x64be('0x5a')][_0x64be('0x34')]);_0x172c13[_0x64be('0x24')][_0x64be('0x73')]=_0x4a4020[_0x64be('0x73')];_0x172c13[_0x64be('0x24')][_0x64be('0x74')]=_0x4a4020['channel'];_0x172c13['message'][_0x64be('0x75')]=_0x64be('0x2e');respondWithRpcPromise('EventManager',_0x64be('0x76'),{'event':_0x64be('0x7d'),'message':_[_0x64be('0x47')](_0x4a4020['message'],JSON[_0x64be('0x78')](_0x4a4020[_0x64be('0x62')][_0x64be('0x7e')]))},client9002);return _0x4a4020;}return null;})[_0x64be('0x32')](respondWithResult(_0x948881,null))[_0x64be('0x25')](handleError(_0x948881,null));};
\ No newline at end of file
index 90a3c40..4fbb66f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b8=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','events','ChatMessage'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0x69b8,0x116));var _0x869b=function(_0x4b1f89,_0x30591e){_0x4b1f89=_0x4b1f89-0x0;var _0x382d1b=_0x69b8[_0x4b1f89];return _0x382d1b;};'use strict';var EventEmitter=require(_0x869b('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x869b('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x869b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x869b('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4f6042){return function(_0x39e971,_0x8d4ee3,_0x32661b){ChatMessageEvents[_0x869b('0x4')](_0x4f6042+':'+_0x39e971['id'],_0x39e971);ChatMessageEvents[_0x869b('0x4')](_0x4f6042,_0x39e971);_0x32661b(null);};}for(var e in events){if(events[_0x869b('0x5')](e)){var event=events[e];ChatMessage[_0x869b('0x6')](e,emitEvent(event));}}module[_0x869b('0x7')]=ChatMessageEvents;
\ No newline at end of file
+var _0xea97=['../../mysqldb','ChatMessage','setMaxListeners','save','emit','hook','events'];(function(_0x5e6aad,_0x3cdddd){var _0x55deab=function(_0x51d41b){while(--_0x51d41b){_0x5e6aad['push'](_0x5e6aad['shift']());}};_0x55deab(++_0x3cdddd);}(_0xea97,0x16b));var _0x7ea9=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0xea97[_0xc0a3d3];return _0x3386e8;};'use strict';var EventEmitter=require(_0x7ea9('0x0'));var ChatMessage=require(_0x7ea9('0x1'))['db'][_0x7ea9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x7ea9('0x3')](0x0);var events={'afterCreate':_0x7ea9('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x43e1b5){return function(_0x24ad45,_0x32b29f,_0x1145da){ChatMessageEvents[_0x7ea9('0x5')](_0x43e1b5+':'+_0x24ad45['id'],_0x24ad45);ChatMessageEvents[_0x7ea9('0x5')](_0x43e1b5,_0x24ad45);_0x1145da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x7ea9('0x6')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index 6883d84..77bee51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a74=['UserId','ChatInteraction','findOne','ChatInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','FULLTEXT','direction','toLowerCase','out','secret'];(function(_0x15cd80,_0x3f479c){var _0x4a5ed5=function(_0x56edb8){while(--_0x56edb8){_0x15cd80['push'](_0x15cd80['shift']());}};_0x4a5ed5(++_0x3f479c);}(_0x1a74,0x118));var _0x41a7=function(_0x2c1746,_0x73b35d){_0x2c1746=_0x2c1746-0x0;var _0x56fdc8=_0x1a74[_0x2c1746];return _0x56fdc8;};'use strict';var _=require(_0x41a7('0x0'));var util=require(_0x41a7('0x1'));var logger=require(_0x41a7('0x2'))(_0x41a7('0x3'));var moment=require(_0x41a7('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x41a7('0x5'));var rimraf=require('rimraf');var config=require(_0x41a7('0x6'));var attributes=require(_0x41a7('0x7'));module[_0x41a7('0x8')]=function(_0x469db5,_0x21ba25){return _0x469db5[_0x41a7('0x9')](_0x41a7('0xa'),attributes,{'tableName':_0x41a7('0xb'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0x41a7('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2e6022,_0x5a7562,_0xfcd7dc){var _0x15957b=_0x469db5['models'];var _0x3c2639=_0x2e6022['get']({'plain':!![]});if(_0x3c2639[_0x41a7('0xd')]['toLowerCase']()==='in'||_0x3c2639[_0x41a7('0xd')][_0x41a7('0xe')]()===_0x41a7('0xf')&&!_0x3c2639[_0x41a7('0x10')]&&!_['isNil'](_0x3c2639[_0x41a7('0x11')])){_0x15957b[_0x41a7('0x12')][_0x41a7('0x13')]({'where':{'id':_0x3c2639[_0x41a7('0x14')]}})['then'](function(_0x42c660){if(_0x42c660){_0x42c660[_0x41a7('0x15')]({'lastMsgAt':_0x3c2639[_0x41a7('0x16')],'lastMsgDirection':_0x3c2639[_0x41a7('0xd')][_0x41a7('0xe')]()});}})[_0x41a7('0x17')](function(_0x57ad4e){console[_0x41a7('0x18')](_0x57ad4e);});}_0xfcd7dc();}},'charset':_0x41a7('0x19'),'collate':_0x41a7('0x1a')});};
\ No newline at end of file
+var _0x3b61=['update','toLowerCase','utf8mb4','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','out','secret','isNil','findOne','ChatInteractionId','then'];(function(_0x5ca644,_0x3d2165){var _0x5c87a2=function(_0x3dc7d9){while(--_0x3dc7d9){_0x5ca644['push'](_0x5ca644['shift']());}};_0x5c87a2(++_0x3d2165);}(_0x3b61,0x1c5));var _0x13b6=function(_0x44d720,_0x5e82de){_0x44d720=_0x44d720-0x0;var _0x46d103=_0x3b61[_0x44d720];return _0x46d103;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x13b6('0x0'))(_0x13b6('0x1'));var moment=require(_0x13b6('0x2'));var BPromise=require(_0x13b6('0x3'));var rp=require(_0x13b6('0x4'));var fs=require('fs');var path=require(_0x13b6('0x5'));var rimraf=require('rimraf');var config=require(_0x13b6('0x6'));var attributes=require('./chatMessage.attributes');module[_0x13b6('0x7')]=function(_0x5e351b,_0x4246a6){return _0x5e351b[_0x13b6('0x8')](_0x13b6('0x9'),attributes,{'tableName':_0x13b6('0xa'),'paranoid':![],'indexes':[{'name':_0x13b6('0xb'),'fields':[_0x13b6('0xc')],'type':_0x13b6('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3ba5bf,_0x5ab522,_0x40c1a9){var _0x33858b=_0x5e351b[_0x13b6('0xe')];var _0x5a1f9e=_0x3ba5bf[_0x13b6('0xf')]({'plain':!![]});if(_0x5a1f9e['direction']['toLowerCase']()==='in'||_0x5a1f9e['direction']['toLowerCase']()===_0x13b6('0x10')&&!_0x5a1f9e[_0x13b6('0x11')]&&!_[_0x13b6('0x12')](_0x5a1f9e['UserId'])){_0x33858b['ChatInteraction'][_0x13b6('0x13')]({'where':{'id':_0x5a1f9e[_0x13b6('0x14')]}})[_0x13b6('0x15')](function(_0x2aa339){if(_0x2aa339){_0x2aa339[_0x13b6('0x16')]({'lastMsgAt':_0x5a1f9e['createdAt'],'lastMsgDirection':_0x5a1f9e['direction'][_0x13b6('0x17')]()});}})['catch'](function(_0x2d2015){console['error'](_0x2d2015);});}_0x40c1a9();}},'charset':_0x13b6('0x18'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d628dad..859ea3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb31d=['result','CreateChatMessage','ChatMessage','create','body','options','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','socket.io-emitter','register','request','then','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','ChatMessage,\x20%s,\x20%s','message'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb31d,0xe8));var _0xdb31=function(_0x10a1e5,_0x135b55){_0x10a1e5=_0x10a1e5-0x0;var _0x3890e4=_0xb31d[_0x10a1e5];return _0x3890e4;};'use strict';var _=require(_0xdb31('0x0'));var util=require(_0xdb31('0x1'));var moment=require(_0xdb31('0x2'));var BPromise=require(_0xdb31('0x3'));var rs=require(_0xdb31('0x4'));var fs=require('fs');var Redis=require(_0xdb31('0x5'));var db=require(_0xdb31('0x6'))['db'];var utils=require(_0xdb31('0x7'));var logger=require('../../config/logger')(_0xdb31('0x8'));var config=require('../../config/environment');var jayson=require(_0xdb31('0x9'));var client=jayson['client'][_0xdb31('0xa')]({'port':0x232a});config[_0xdb31('0xb')]=_['defaults'](config[_0xdb31('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xdb31('0xc'))(new Redis(config['redis']));require('./chatMessage.socket')[_0xdb31('0xd')](socket);function respondWithRpcPromise(_0x406743,_0xb95516,_0x32fe49){return new BPromise(function(_0x280ecf,_0x5ac478){return client[_0xdb31('0xe')](_0x406743,_0x32fe49)[_0xdb31('0xf')](function(_0x2dfc37){logger[_0xdb31('0x10')]('ChatMessage,\x20%s,\x20%s',_0xb95516,_0xdb31('0x11'));logger[_0xdb31('0x12')](_0xdb31('0x13'),_0xb95516,_0xdb31('0x11'),JSON['stringify'](_0x2dfc37));if(_0x2dfc37[_0xdb31('0x14')]){if(_0x2dfc37['error'][_0xdb31('0x15')]===0x1f4){logger['error'](_0xdb31('0x16'),_0xb95516,_0x2dfc37[_0xdb31('0x14')][_0xdb31('0x17')]);return _0x5ac478(_0x2dfc37['error']['message']);}logger[_0xdb31('0x14')](_0xdb31('0x16'),_0xb95516,_0x2dfc37['error'][_0xdb31('0x17')]);return _0x280ecf(_0x2dfc37[_0xdb31('0x14')]['message']);}else{logger[_0xdb31('0x10')](_0xdb31('0x16'),_0xb95516,_0xdb31('0x11'));_0x280ecf(_0x2dfc37[_0xdb31('0x18')][_0xdb31('0x17')]);}})['catch'](function(_0x2e5dad){logger[_0xdb31('0x14')](_0xdb31('0x16'),_0xb95516,_0x2e5dad);_0x5ac478(_0x2e5dad);});});}exports[_0xdb31('0x19')]=function(_0x5df6a0){var _0x4ff078=this;return new Promise(function(_0x157dd9,_0x7dafce){return db[_0xdb31('0x1a')][_0xdb31('0x1b')](_0x5df6a0[_0xdb31('0x1c')],{'raw':_0x5df6a0['options']?_0x5df6a0[_0xdb31('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0xdb31('0xf')](function(_0x1e890c){logger[_0xdb31('0x10')](_0xdb31('0x19'),_0x5df6a0);logger[_0xdb31('0x12')]('CreateChatMessage',_0x5df6a0,JSON[_0xdb31('0x1e')](_0x1e890c));_0x157dd9(_0x1e890c);})[_0xdb31('0x1f')](function(_0xdaec48){logger[_0xdb31('0x14')](_0xdb31('0x19'),_0xdaec48[_0xdb31('0x17')],_0x5df6a0);_0x7dafce(_0x4ff078[_0xdb31('0x14')](0x1f4,_0xdaec48[_0xdb31('0x17')]));});});};
\ No newline at end of file
+var _0x4abd=['message','result','catch','CreateChatMessage','create','body','options','raw','stringify','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','./chatMessage.socket','request','then','info','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','code','error','ChatMessage,\x20%s,\x20%s'];(function(_0x347d58,_0x4cce25){var _0x1eeb4f=function(_0x45b545){while(--_0x45b545){_0x347d58['push'](_0x347d58['shift']());}};_0x1eeb4f(++_0x4cce25);}(_0x4abd,0x9a));var _0xd4ab=function(_0x5dc7bb,_0x3c2edc){_0x5dc7bb=_0x5dc7bb-0x0;var _0x3569c3=_0x4abd[_0x5dc7bb];return _0x3569c3;};'use strict';var _=require('lodash');var util=require(_0xd4ab('0x0'));var moment=require(_0xd4ab('0x1'));var BPromise=require(_0xd4ab('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd4ab('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd4ab('0x4'));var logger=require(_0xd4ab('0x5'))('rpc');var config=require(_0xd4ab('0x6'));var jayson=require(_0xd4ab('0x7'));var client=jayson['client'][_0xd4ab('0x8')]({'port':0x232a});config[_0xd4ab('0x9')]=_[_0xd4ab('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd4ab('0xb'))['register'](socket);function respondWithRpcPromise(_0x12de97,_0x54a44e,_0x34f980){return new BPromise(function(_0x513585,_0x1221c7){return client[_0xd4ab('0xc')](_0x12de97,_0x34f980)[_0xd4ab('0xd')](function(_0x22db12){logger[_0xd4ab('0xe')]('ChatMessage,\x20%s,\x20%s',_0x54a44e,_0xd4ab('0xf'));logger['debug'](_0xd4ab('0x10'),_0x54a44e,_0xd4ab('0xf'),JSON['stringify'](_0x22db12));if(_0x22db12['error']){if(_0x22db12['error'][_0xd4ab('0x11')]===0x1f4){logger[_0xd4ab('0x12')](_0xd4ab('0x13'),_0x54a44e,_0x22db12['error']['message']);return _0x1221c7(_0x22db12[_0xd4ab('0x12')][_0xd4ab('0x14')]);}logger[_0xd4ab('0x12')](_0xd4ab('0x13'),_0x54a44e,_0x22db12[_0xd4ab('0x12')][_0xd4ab('0x14')]);return _0x513585(_0x22db12[_0xd4ab('0x12')][_0xd4ab('0x14')]);}else{logger[_0xd4ab('0xe')](_0xd4ab('0x13'),_0x54a44e,_0xd4ab('0xf'));_0x513585(_0x22db12[_0xd4ab('0x15')]['message']);}})[_0xd4ab('0x16')](function(_0x492a08){logger[_0xd4ab('0x12')](_0xd4ab('0x13'),_0x54a44e,_0x492a08);_0x1221c7(_0x492a08);});});}exports[_0xd4ab('0x17')]=function(_0x33d5a9){var _0x436dd9=this;return new Promise(function(_0xe95880,_0x4a9f83){return db['ChatMessage'][_0xd4ab('0x18')](_0x33d5a9[_0xd4ab('0x19')],{'raw':_0x33d5a9[_0xd4ab('0x1a')]?_0x33d5a9[_0xd4ab('0x1a')][_0xd4ab('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x17e772){logger['info'](_0xd4ab('0x17'),_0x33d5a9);logger['debug'](_0xd4ab('0x17'),_0x33d5a9,JSON[_0xd4ab('0x1c')](_0x17e772));_0xe95880(_0x17e772);})[_0xd4ab('0x16')](function(_0x1799d5){logger[_0xd4ab('0x12')](_0xd4ab('0x17'),_0x1799d5[_0xd4ab('0x14')],_0x33d5a9);_0x4a9f83(_0x436dd9[_0xd4ab('0x12')](0x1f4,_0x1799d5[_0xd4ab('0x14')]));});});};
\ No newline at end of file
index b388b5b..003f013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['remove','emit','removeListener','register','chatMessage:','./chatMessage.events','save'];(function(_0x2e2eab,_0x2e609a){var _0x2357bc=function(_0x2235ad){while(--_0x2235ad){_0x2e2eab['push'](_0x2e2eab['shift']());}};_0x2357bc(++_0x2e609a);}(_0x9879,0x98));var _0x9987=function(_0x219a66,_0x5b157f){_0x219a66=_0x219a66-0x0;var _0x1f0d3e=_0x9879[_0x219a66];return _0x1f0d3e;};'use strict';var ChatMessageEvents=require(_0x9987('0x0'));var events=[_0x9987('0x1'),_0x9987('0x2'),'update'];function createListener(_0xadce9d,_0x525218){return function(_0x3a2473){_0x525218[_0x9987('0x3')](_0xadce9d,_0x3a2473);};}function removeListener(_0x1fd45d,_0xcc5722){return function(){ChatMessageEvents[_0x9987('0x4')](_0x1fd45d,_0xcc5722);};}exports[_0x9987('0x5')]=function(_0x4258df){for(var _0x4d479d=0x0,_0x34d2fd=events['length'];_0x4d479d<_0x34d2fd;_0x4d479d++){var _0x6cb988=events[_0x4d479d];var _0x3e5538=createListener(_0x9987('0x6')+_0x6cb988,_0x4258df);ChatMessageEvents['on'](_0x6cb988,_0x3e5538);}};
\ No newline at end of file
+var _0x2975=['update','removeListener','register','length','chatMessage:','save','remove'];(function(_0x409316,_0x146a5a){var _0x156779=function(_0x5bdcd9){while(--_0x5bdcd9){_0x409316['push'](_0x409316['shift']());}};_0x156779(++_0x146a5a);}(_0x2975,0x1c5));var _0x5297=function(_0x267eaa,_0x10e7f5){_0x267eaa=_0x267eaa-0x0;var _0x567a81=_0x2975[_0x267eaa];return _0x567a81;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x5297('0x0'),_0x5297('0x1'),_0x5297('0x2')];function createListener(_0x1a511b,_0x115e60){return function(_0x178801){_0x115e60['emit'](_0x1a511b,_0x178801);};}function removeListener(_0x56371f,_0x5e9de3){return function(){ChatMessageEvents[_0x5297('0x3')](_0x56371f,_0x5e9de3);};}exports[_0x5297('0x4')]=function(_0x11a43d){for(var _0x3da9c6=0x0,_0x4d1d2c=events[_0x5297('0x5')];_0x3da9c6<_0x4d1d2c;_0x3da9c6++){var _0x1b72a7=events[_0x3da9c6];var _0x4f12b0=createListener(_0x5297('0x6')+_0x1b72a7,_0x11a43d);ChatMessageEvents['on'](_0x1b72a7,_0x4f12b0);}};
\ No newline at end of file
index 0d76a34..561edcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aba=['index','/describe','describe','get','/:id','post','tracked','chat','chatmessage:create','create','put','update','/:id/accept','delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated'];(function(_0x1058f9,_0x200633){var _0x17be6f=function(_0x44e456){while(--_0x44e456){_0x1058f9['push'](_0x1058f9['shift']());}};_0x17be6f(++_0x200633);}(_0x9aba,0x1eb));var _0xa9ab=function(_0x4cc13c,_0x2da74e){_0x4cc13c=_0x4cc13c-0x0;var _0xf24fdb=_0x9aba[_0x4cc13c];return _0xf24fdb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa9ab('0x0'));var timeout=require(_0xa9ab('0x1'));var express=require('express');var router=express[_0xa9ab('0x2')]();var fs_extra=require(_0xa9ab('0x3'));var auth=require(_0xa9ab('0x4'));var interaction=require(_0xa9ab('0x5'));var config=require(_0xa9ab('0x6'));var controller=require(_0xa9ab('0x7'));router['get']('/',auth[_0xa9ab('0x8')](),controller[_0xa9ab('0x9')]);router['get'](_0xa9ab('0xa'),auth[_0xa9ab('0x8')](),controller[_0xa9ab('0xb')]);router[_0xa9ab('0xc')](_0xa9ab('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xa9ab('0xe')]('/',auth['isAuthenticated'](),interaction[_0xa9ab('0xf')](_0xa9ab('0x10'),_0xa9ab('0x11')),controller[_0xa9ab('0x12')]);router[_0xa9ab('0x13')]('/:id',controller[_0xa9ab('0x14')]);router[_0xa9ab('0x13')](_0xa9ab('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0xa9ab('0x13')]('/:id/reject',auth[_0xa9ab('0x8')](),controller['reject']);router[_0xa9ab('0x16')](_0xa9ab('0xd'),auth[_0xa9ab('0x8')](),controller[_0xa9ab('0x17')]);module[_0xa9ab('0x18')]=router;
\ No newline at end of file
+var _0x0a93=['/describe','describe','/:id','show','post','tracked','chatmessage:create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','express','Router','../../config/environment','./chatMessage.controller','get','isAuthenticated','index'];(function(_0x33b5be,_0xd913b){var _0x13c01c=function(_0x4e952b){while(--_0x4e952b){_0x33b5be['push'](_0x33b5be['shift']());}};_0x13c01c(++_0xd913b);}(_0x0a93,0x101));var _0x30a9=function(_0x54b1f3,_0xcec86e){_0x54b1f3=_0x54b1f3-0x0;var _0x35b34b=_0x0a93[_0x54b1f3];return _0x35b34b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x30a9('0x0'));var router=express[_0x30a9('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x30a9('0x2'));var controller=require(_0x30a9('0x3'));router[_0x30a9('0x4')]('/',auth[_0x30a9('0x5')](),controller[_0x30a9('0x6')]);router['get'](_0x30a9('0x7'),auth[_0x30a9('0x5')](),controller[_0x30a9('0x8')]);router[_0x30a9('0x4')](_0x30a9('0x9'),auth[_0x30a9('0x5')](),controller[_0x30a9('0xa')]);router[_0x30a9('0xb')]('/',auth[_0x30a9('0x5')](),interaction[_0x30a9('0xc')]('chat',_0x30a9('0xd')),controller['create']);router[_0x30a9('0xe')](_0x30a9('0x9'),controller[_0x30a9('0xf')]);router[_0x30a9('0xe')](_0x30a9('0x10'),auth[_0x30a9('0x5')](),controller[_0x30a9('0x11')]);router[_0x30a9('0xe')](_0x30a9('0x12'),auth[_0x30a9('0x5')](),controller['reject']);router[_0x30a9('0x13')]('/:id',auth[_0x30a9('0x5')](),controller[_0x30a9('0x14')]);module[_0x30a9('0x15')]=router;
\ No newline at end of file
index 0e6b811..c080110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5034=['medium','sequelize','exports'];(function(_0x3c2ce4,_0x143822){var _0x43d462=function(_0x4a3a58){while(--_0x4a3a58){_0x3c2ce4['push'](_0x3c2ce4['shift']());}};_0x43d462(++_0x143822);}(_0x5034,0xdc));var _0x4503=function(_0x5c6cdc,_0x407422){_0x5c6cdc=_0x5c6cdc-0x0;var _0x2f4dbb=_0x5034[_0x5c6cdc];return _0x2f4dbb;};'use strict';var Sequelize=require(_0x4503('0x0'));module[_0x4503('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4503('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0xe5e2=['exports','TEXT','sequelize'];(function(_0x222dcd,_0x4f6179){var _0x424c19=function(_0x4c25b9){while(--_0x4c25b9){_0x222dcd['push'](_0x222dcd['shift']());}};_0x424c19(++_0x4f6179);}(_0xe5e2,0x74));var _0x2e5e=function(_0x4bbfd7,_0x56324e){_0x4bbfd7=_0x4bbfd7-0x0;var _0x4551a9=_0xe5e2[_0x4bbfd7];return _0x4551a9;};'use strict';var Sequelize=require(_0x2e5e('0x0'));module[_0x2e5e('0x1')]={'body':{'type':Sequelize[_0x2e5e('0x2')]('medium'),'allowNull':![]}};
\ No newline at end of file
index e83a2f6..4555318 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(_0x1ad95f,_0x425c13){var _0x234493=function(_0xf787a2){while(--_0xf787a2){_0x1ad95f['push'](_0x1ad95f['shift']());}};_0x234493(++_0x425c13);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x7a54,0x106));var _0x47a5=function(_0xa7342,_0x59905b){_0xa7342=_0xa7342-0x0;var _0xfb015f=_0x7a54[_0xa7342];return _0xfb015f;};'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 fdee63b..a55093e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd76=['request-promise','rimraf','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x159f35,_0x1a06d1){var _0xb16cca=function(_0x665397){while(--_0x665397){_0x159f35['push'](_0x159f35['shift']());}};_0xb16cca(++_0x1a06d1);}(_0xbd76,0x86));var _0x6bd7=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xbd76[_0x5f0089];return _0x193892;};'use strict';var _=require(_0x6bd7('0x0'));var util=require(_0x6bd7('0x1'));var logger=require(_0x6bd7('0x2'))(_0x6bd7('0x3'));var moment=require(_0x6bd7('0x4'));var BPromise=require(_0x6bd7('0x5'));var rp=require(_0x6bd7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6bd7('0x7'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module[_0x6bd7('0x8')]=function(_0x3860b1,_0x4ab273){return _0x3860b1[_0x6bd7('0x9')](_0x6bd7('0xa'),attributes,{'tableName':_0x6bd7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6bd7('0xc'),'collate':_0x6bd7('0xd')});};
\ No newline at end of file
+var _0xa59a=['utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','request-promise','path','rimraf','chat_offline_messages'];(function(_0x25993f,_0x15275f){var _0x1eaa86=function(_0x48b310){while(--_0x48b310){_0x25993f['push'](_0x25993f['shift']());}};_0x1eaa86(++_0x15275f);}(_0xa59a,0x122));var _0xaa59=function(_0xc50322,_0x2d18eb){_0xc50322=_0xc50322-0x0;var _0x5e0d90=_0xa59a[_0xc50322];return _0x5e0d90;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xaa59('0x0'))(_0xaa59('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xaa59('0x2'));var fs=require('fs');var path=require(_0xaa59('0x3'));var rimraf=require(_0xaa59('0x4'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x378050,_0x1fa784){return _0x378050['define']('ChatOfflineMessage',attributes,{'tableName':_0xaa59('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaa59('0x6'),'collate':_0xaa59('0x7')});};
\ No newline at end of file
index 45526e5..04a52bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5197=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','moment','bluebird','ioredis'];(function(_0x3ae812,_0x57767f){var _0x3f6639=function(_0x47e00e){while(--_0x47e00e){_0x3ae812['push'](_0x3ae812['shift']());}};_0x3f6639(++_0x57767f);}(_0x5197,0x140));var _0x7519=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x5197[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require(_0x7519('0x0'));var util=require('util');var moment=require(_0x7519('0x1'));var BPromise=require(_0x7519('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7519('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7519('0x4'));var logger=require(_0x7519('0x5'))(_0x7519('0x6'));var config=require(_0x7519('0x7'));var jayson=require(_0x7519('0x8'));var client=jayson[_0x7519('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c7d28,_0x4e7c6c,_0x4cee53){return new BPromise(function(_0x165537,_0x52493e){return client['request'](_0x1c7d28,_0x4cee53)[_0x7519('0xa')](function(_0x4b09e4){logger['info'](_0x7519('0xb'),_0x4e7c6c,_0x7519('0xc'));logger[_0x7519('0xd')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x4e7c6c,_0x7519('0xc'),JSON['stringify'](_0x4b09e4));if(_0x4b09e4['error']){if(_0x4b09e4[_0x7519('0xe')][_0x7519('0xf')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x4e7c6c,_0x4b09e4['error'][_0x7519('0x10')]);return _0x52493e(_0x4b09e4[_0x7519('0xe')]['message']);}logger[_0x7519('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x4e7c6c,_0x4b09e4['error'][_0x7519('0x10')]);return _0x165537(_0x4b09e4[_0x7519('0xe')][_0x7519('0x10')]);}else{logger['info'](_0x7519('0xb'),_0x4e7c6c,'request\x20sent');_0x165537(_0x4b09e4[_0x7519('0x11')][_0x7519('0x10')]);}})['catch'](function(_0x4461f7){logger[_0x7519('0xe')](_0x7519('0xb'),_0x4e7c6c,_0x4461f7);_0x52493e(_0x4461f7);});});}
\ No newline at end of file
+var _0x5a78=['moment','randomstring','rpc','../../config/environment','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x52206c,_0x4f6532){var _0xa89510=function(_0x555e39){while(--_0x555e39){_0x52206c['push'](_0x52206c['shift']());}};_0xa89510(++_0x4f6532);}(_0x5a78,0x14e));var _0x85a7=function(_0x143420,_0x39e7e1){_0x143420=_0x143420-0x0;var _0x377f74=_0x5a78[_0x143420];return _0x377f74;};'use strict';var _=require(_0x85a7('0x0'));var util=require(_0x85a7('0x1'));var moment=require(_0x85a7('0x2'));var BPromise=require('bluebird');var rs=require(_0x85a7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x85a7('0x4'));var config=require(_0x85a7('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x85a7('0x6')][_0x85a7('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xe85360,_0x3f1e1e,_0x47dc10){return new BPromise(function(_0x1d9281,_0x98468f){return client[_0x85a7('0x8')](_0xe85360,_0x47dc10)[_0x85a7('0x9')](function(_0x2c20f6){logger[_0x85a7('0xa')](_0x85a7('0xb'),_0x3f1e1e,_0x85a7('0xc'));logger[_0x85a7('0xd')](_0x85a7('0xe'),_0x3f1e1e,_0x85a7('0xc'),JSON[_0x85a7('0xf')](_0x2c20f6));if(_0x2c20f6['error']){if(_0x2c20f6[_0x85a7('0x10')][_0x85a7('0x11')]===0x1f4){logger[_0x85a7('0x10')](_0x85a7('0xb'),_0x3f1e1e,_0x2c20f6[_0x85a7('0x10')]['message']);return _0x98468f(_0x2c20f6[_0x85a7('0x10')]['message']);}logger[_0x85a7('0x10')](_0x85a7('0xb'),_0x3f1e1e,_0x2c20f6[_0x85a7('0x10')][_0x85a7('0x12')]);return _0x1d9281(_0x2c20f6['error']['message']);}else{logger[_0x85a7('0xa')](_0x85a7('0xb'),_0x3f1e1e,_0x85a7('0xc'));_0x1d9281(_0x2c20f6[_0x85a7('0x13')]['message']);}})[_0x85a7('0x14')](function(_0x510078){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x3f1e1e,_0x510078);_0x98468f(_0x510078);});});}
\ No newline at end of file
index 38d0f75..cdc68bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x197b=['../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2ca9b2,_0x436feb){var _0x39d922=function(_0x1fc31){while(--_0x1fc31){_0x2ca9b2['push'](_0x2ca9b2['shift']());}};_0x39d922(++_0x436feb);}(_0x197b,0x1dc));var _0xb197=function(_0xa0074f,_0x3e4c9f){_0xa0074f=_0xa0074f-0x0;var _0x33a82e=_0x197b[_0xa0074f];return _0x33a82e;};'use strict';var multer=require(_0xb197('0x0'));var util=require(_0xb197('0x1'));var path=require('path');var timeout=require(_0xb197('0x2'));var express=require(_0xb197('0x3'));var router=express[_0xb197('0x4')]();var fs_extra=require(_0xb197('0x5'));var auth=require(_0xb197('0x6'));var interaction=require(_0xb197('0x7'));var config=require(_0xb197('0x8'));var controller=require(_0xb197('0x9'));router[_0xb197('0xa')]('/',auth[_0xb197('0xb')](),controller['index']);router['get'](_0xb197('0xc'),auth['isAuthenticated'](),controller[_0xb197('0xd')]);router[_0xb197('0xa')](_0xb197('0xe'),auth['isAuthenticated'](),controller[_0xb197('0xf')]);router[_0xb197('0x10')]('/',auth[_0xb197('0xb')](),controller[_0xb197('0x11')]);router['put'](_0xb197('0xe'),auth[_0xb197('0xb')](),controller[_0xb197('0x12')]);router[_0xb197('0x13')](_0xb197('0xe'),auth[_0xb197('0xb')](),controller[_0xb197('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xd76e=['connect-timeout','Router','fs-extra','../../config/environment','get','index','/describe','isAuthenticated','describe','post','create','put','update','delete','/:id','exports','multer','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd76e,0x19c));var _0xed76=function(_0x429f4f,_0x54e31a){_0x429f4f=_0x429f4f-0x0;var _0x591d5d=_0xd76e[_0x429f4f];return _0x591d5d;};'use strict';var multer=require(_0xed76('0x0'));var util=require(_0xed76('0x1'));var path=require('path');var timeout=require(_0xed76('0x2'));var express=require('express');var router=express[_0xed76('0x3')]();var fs_extra=require(_0xed76('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xed76('0x5'));var controller=require('./chatOfflineMessage.controller');router[_0xed76('0x6')]('/',auth['isAuthenticated'](),controller[_0xed76('0x7')]);router[_0xed76('0x6')](_0xed76('0x8'),auth[_0xed76('0x9')](),controller[_0xed76('0xa')]);router[_0xed76('0x6')]('/:id',auth[_0xed76('0x9')](),controller['show']);router[_0xed76('0xb')]('/',auth[_0xed76('0x9')](),controller[_0xed76('0xc')]);router[_0xed76('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xed76('0xe')]);router[_0xed76('0xf')](_0xed76('0x10'),auth[_0xed76('0x9')](),controller['destroy']);module[_0xed76('0x11')]=router;
\ No newline at end of file
index 3c633fd..768cbb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f0=['STRING','sequelize','exports','ENUM','mouseOver'];(function(_0x11aca4,_0x507af9){var _0x1668e5=function(_0x41e821){while(--_0x41e821){_0x11aca4['push'](_0x11aca4['shift']());}};_0x1668e5(++_0x507af9);}(_0x68f0,0xc9));var _0x068f=function(_0xf74372,_0x51fe82){_0xf74372=_0xf74372-0x0;var _0x36bb65=_0x68f0[_0xf74372];return _0x36bb65;};'use strict';var Sequelize=require(_0x068f('0x0'));module[_0x068f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x068f('0x2')](_0x068f('0x3'),'timeout'),'defaultValue':_0x068f('0x3')},'selector':{'type':Sequelize[_0x068f('0x4')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x8cdd=['sequelize','STRING','mouseOver','INTEGER'];(function(_0x36120e,_0x1e3eb9){var _0x1103f5=function(_0x5a5188){while(--_0x5a5188){_0x36120e['push'](_0x36120e['shift']());}};_0x1103f5(++_0x1e3eb9);}(_0x8cdd,0x19c));var _0xd8cd=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x8cdd[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0xd8cd('0x0'));module['exports']={'name':{'type':Sequelize[_0xd8cd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xd8cd('0x2'),'timeout'),'defaultValue':_0xd8cd('0x2')},'selector':{'type':Sequelize[_0xd8cd('0x1')]},'timeout':{'type':Sequelize[_0xd8cd('0x3')]}};
\ No newline at end of file
index 4132ced..0a816ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','update','destroy','then','error','stack','name','send','show','model','keys','ChatProactiveAction','rawAttributes','query','filters','attributes','intersection','length','includeAll','include','merge','options','create','body','catch','find','params','rimraf','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x3457b4,_0x4cd8f9){var _0xaa8fa9=function(_0x51897a){while(--_0x51897a){_0x3457b4['push'](_0x3457b4['shift']());}};_0xaa8fa9(++_0x4cd8f9);}(_0x14f5,0xae));var _0x514f=function(_0x15acaf,_0x4b720e){_0x15acaf=_0x15acaf-0x0;var _0x400770=_0x14f5[_0x15acaf];return _0x400770;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x514f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x514f('0x1'));var rp=require(_0x514f('0x2'));var moment=require(_0x514f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x514f('0x4'));var util=require(_0x514f('0x5'));var path=require('path');var sox=require(_0x514f('0x6'));var csv=require(_0x514f('0x7'));var ejs=require(_0x514f('0x8'));var fs=require('fs');var fs_extra=require(_0x514f('0x9'));var _=require(_0x514f('0xa'));var squel=require(_0x514f('0xb'));var crypto=require(_0x514f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x514f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x514f('0xe'));var Papa=require(_0x514f('0xf'));var Redis=require(_0x514f('0x10'));var authService=require(_0x514f('0x11'));var qs=require(_0x514f('0x12'));var as=require(_0x514f('0x13'));var hardwareService=require(_0x514f('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x514f('0x15'));var licenseUtil=require(_0x514f('0x16'));var db=require(_0x514f('0x17'))['db'];function respondWithStatusCode(_0x321914,_0x3eed49){_0x3eed49=_0x3eed49||0xcc;return function(_0x2ed1b7){if(_0x2ed1b7){return _0x321914[_0x514f('0x18')](_0x3eed49);}return _0x321914[_0x514f('0x19')](_0x3eed49)[_0x514f('0x1a')]();};}function respondWithResult(_0x4124bf,_0x46e552){_0x46e552=_0x46e552||0xc8;return function(_0x3fc905){if(_0x3fc905){return _0x4124bf[_0x514f('0x19')](_0x46e552)[_0x514f('0x1b')](_0x3fc905);}};}function respondWithFilteredResult(_0x1694b3,_0x5865d1){return function(_0x70d2b4){if(_0x70d2b4){var _0x1f0cbe=typeof _0x5865d1['offset']===_0x514f('0x1c')&&typeof _0x5865d1['limit']===_0x514f('0x1c');var _0x309ce0=_0x70d2b4[_0x514f('0x1d')];var _0x5a5641=_0x1f0cbe?0x0:_0x5865d1[_0x514f('0x1e')];var _0x3673a4=_0x1f0cbe?_0x70d2b4[_0x514f('0x1d')]:_0x5865d1[_0x514f('0x1e')]+_0x5865d1['limit'];var _0x4f9193;if(_0x3673a4>=_0x309ce0){_0x3673a4=_0x309ce0;_0x4f9193=0xc8;}else{_0x4f9193=0xce;}_0x1694b3[_0x514f('0x19')](_0x4f9193);return _0x1694b3[_0x514f('0x1f')](_0x514f('0x20'),_0x5a5641+'-'+_0x3673a4+'/'+_0x309ce0)['json'](_0x70d2b4);}return null;};}function patchUpdates(_0x43fcf9){return function(_0x7248e8){try{jsonpatch['apply'](_0x7248e8,_0x43fcf9,!![]);}catch(_0x186417){return BPromise[_0x514f('0x21')](_0x186417);}return _0x7248e8['save']();};}function saveUpdates(_0xd093a1,_0x18a430){return function(_0xd89aa2){if(_0xd89aa2){return _0xd89aa2[_0x514f('0x22')](_0xd093a1)['then'](function(_0x58861e){return _0x58861e;});}return null;};}function removeEntity(_0x4b0245,_0x5d80cb){return function(_0x1c16f9){if(_0x1c16f9){return _0x1c16f9[_0x514f('0x23')]()[_0x514f('0x24')](function(){_0x4b0245[_0x514f('0x19')](0xcc)[_0x514f('0x1a')]();});}};}function handleEntityNotFound(_0x26df04,_0x2c6bb1){return function(_0x101742){if(!_0x101742){_0x26df04[_0x514f('0x18')](0x194);}return _0x101742;};}function handleError(_0x5f2da2,_0x8c8bdf){_0x8c8bdf=_0x8c8bdf||0x1f4;return function(_0x37b3db){logger[_0x514f('0x25')](_0x37b3db[_0x514f('0x26')]);if(_0x37b3db[_0x514f('0x27')]){delete _0x37b3db[_0x514f('0x27')];}_0x5f2da2[_0x514f('0x19')](_0x8c8bdf)[_0x514f('0x28')](_0x37b3db);};}exports[_0x514f('0x29')]=function(_0x594a50,_0x2c4c4b){var _0x488c17={'raw':!![],'where':{'id':_0x594a50['params']['id']}},_0x2b43e0={};_0x2b43e0[_0x514f('0x2a')]=_[_0x514f('0x2b')](db[_0x514f('0x2c')][_0x514f('0x2d')]);_0x2b43e0[_0x514f('0x2e')]=_['keys'](_0x594a50['query']);_0x2b43e0[_0x514f('0x2f')]=_['intersection'](_0x2b43e0[_0x514f('0x2a')],_0x2b43e0[_0x514f('0x2e')]);_0x488c17[_0x514f('0x30')]=_[_0x514f('0x31')](_0x2b43e0[_0x514f('0x2a')],qs['fields'](_0x594a50['query']['fields']));_0x488c17[_0x514f('0x30')]=_0x488c17[_0x514f('0x30')][_0x514f('0x32')]?_0x488c17[_0x514f('0x30')]:_0x2b43e0[_0x514f('0x2a')];if(_0x594a50[_0x514f('0x2e')][_0x514f('0x33')]){_0x488c17[_0x514f('0x34')]=[{'all':!![]}];}_0x488c17=_[_0x514f('0x35')]({},_0x488c17,_0x594a50[_0x514f('0x36')]);return db['ChatProactiveAction']['find'](_0x488c17)['then'](handleEntityNotFound(_0x2c4c4b,null))[_0x514f('0x24')](respondWithResult(_0x2c4c4b,null))['catch'](handleError(_0x2c4c4b,null));};exports[_0x514f('0x37')]=function(_0x50c120,_0x3aefc5){return db['ChatProactiveAction']['create'](_0x50c120[_0x514f('0x38')],{})['then'](respondWithResult(_0x3aefc5,0xc9))[_0x514f('0x39')](handleError(_0x3aefc5,null));};exports[_0x514f('0x22')]=function(_0x2cea89,_0x1696a2){if(_0x2cea89[_0x514f('0x38')]['id']){delete _0x2cea89['body']['id'];}return db[_0x514f('0x2c')][_0x514f('0x3a')]({'where':{'id':_0x2cea89[_0x514f('0x3b')]['id']}})[_0x514f('0x24')](handleEntityNotFound(_0x1696a2,null))['then'](saveUpdates(_0x2cea89[_0x514f('0x38')],null))[_0x514f('0x24')](respondWithResult(_0x1696a2,null))[_0x514f('0x39')](handleError(_0x1696a2,null));};exports[_0x514f('0x23')]=function(_0x51b24a,_0x1c1a24){return db[_0x514f('0x2c')][_0x514f('0x3a')]({'where':{'id':_0x51b24a[_0x514f('0x3b')]['id']}})['then'](handleEntityNotFound(_0x1c1a24,null))[_0x514f('0x24')](removeEntity(_0x1c1a24,null))['catch'](handleError(_0x1c1a24,null));};
\ No newline at end of file
+var _0xb90d=['count','offset','set','apply','reject','update','destroy','then','end','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','merge','options','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit'];(function(_0x4c4427,_0x42d0a7){var _0x18869d=function(_0xfc1e5a){while(--_0xfc1e5a){_0x4c4427['push'](_0x4c4427['shift']());}};_0x18869d(++_0x42d0a7);}(_0xb90d,0x17a));var _0xdb90=function(_0x298510,_0x21b06b){_0x298510=_0x298510-0x0;var _0x51f279=_0xb90d[_0x298510];return _0x51f279;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdb90('0x0'));var zipdir=require(_0xdb90('0x1'));var jsonpatch=require(_0xdb90('0x2'));var rp=require(_0xdb90('0x3'));var moment=require(_0xdb90('0x4'));var BPromise=require(_0xdb90('0x5'));var Mustache=require('mustache');var util=require(_0xdb90('0x6'));var path=require(_0xdb90('0x7'));var sox=require(_0xdb90('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb90('0x9'));var _=require(_0xdb90('0xa'));var squel=require(_0xdb90('0xb'));var crypto=require(_0xdb90('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdb90('0xd'));var toCsv=require(_0xdb90('0xe'));var querystring=require(_0xdb90('0xf'));var Papa=require('papaparse');var Redis=require(_0xdb90('0x10'));var authService=require(_0xdb90('0x11'));var qs=require(_0xdb90('0x12'));var as=require(_0xdb90('0x13'));var hardwareService=require(_0xdb90('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdb90('0x15'));var licenseUtil=require(_0xdb90('0x16'));var db=require(_0xdb90('0x17'))['db'];function respondWithStatusCode(_0xb5ea64,_0xdc179e){_0xdc179e=_0xdc179e||0xcc;return function(_0x113659){if(_0x113659){return _0xb5ea64['sendStatus'](_0xdc179e);}return _0xb5ea64['status'](_0xdc179e)['end']();};}function respondWithResult(_0x511592,_0x569d40){_0x569d40=_0x569d40||0xc8;return function(_0x5eb6ef){if(_0x5eb6ef){return _0x511592[_0xdb90('0x18')](_0x569d40)[_0xdb90('0x19')](_0x5eb6ef);}};}function respondWithFilteredResult(_0x5b93b1,_0x19b02e){return function(_0x1cde0d){if(_0x1cde0d){var _0x4db002=typeof _0x19b02e['offset']===_0xdb90('0x1a')&&typeof _0x19b02e[_0xdb90('0x1b')]===_0xdb90('0x1a');var _0x5101e9=_0x1cde0d[_0xdb90('0x1c')];var _0x13f6df=_0x4db002?0x0:_0x19b02e[_0xdb90('0x1d')];var _0x44d4d4=_0x4db002?_0x1cde0d[_0xdb90('0x1c')]:_0x19b02e[_0xdb90('0x1d')]+_0x19b02e[_0xdb90('0x1b')];var _0x1838ed;if(_0x44d4d4>=_0x5101e9){_0x44d4d4=_0x5101e9;_0x1838ed=0xc8;}else{_0x1838ed=0xce;}_0x5b93b1[_0xdb90('0x18')](_0x1838ed);return _0x5b93b1[_0xdb90('0x1e')]('Content-Range',_0x13f6df+'-'+_0x44d4d4+'/'+_0x5101e9)['json'](_0x1cde0d);}return null;};}function patchUpdates(_0x4110c7){return function(_0x1c2dbe){try{jsonpatch[_0xdb90('0x1f')](_0x1c2dbe,_0x4110c7,!![]);}catch(_0x13f84d){return BPromise[_0xdb90('0x20')](_0x13f84d);}return _0x1c2dbe['save']();};}function saveUpdates(_0x31f9df,_0x922395){return function(_0x590e6a){if(_0x590e6a){return _0x590e6a[_0xdb90('0x21')](_0x31f9df)['then'](function(_0x185b08){return _0x185b08;});}return null;};}function removeEntity(_0x2fdb1b,_0x1fe5ab){return function(_0x463199){if(_0x463199){return _0x463199[_0xdb90('0x22')]()[_0xdb90('0x23')](function(){_0x2fdb1b[_0xdb90('0x18')](0xcc)[_0xdb90('0x24')]();});}};}function handleEntityNotFound(_0x1ef44a,_0x1fed39){return function(_0x64268c){if(!_0x64268c){_0x1ef44a['sendStatus'](0x194);}return _0x64268c;};}function handleError(_0x1a27c3,_0xedb1a6){_0xedb1a6=_0xedb1a6||0x1f4;return function(_0x3fcafd){logger['error'](_0x3fcafd['stack']);if(_0x3fcafd[_0xdb90('0x25')]){delete _0x3fcafd[_0xdb90('0x25')];}_0x1a27c3[_0xdb90('0x18')](_0xedb1a6)[_0xdb90('0x26')](_0x3fcafd);};}exports[_0xdb90('0x27')]=function(_0x321efc,_0x46f743){var _0x67aebc={'raw':!![],'where':{'id':_0x321efc[_0xdb90('0x28')]['id']}},_0x554d8f={};_0x554d8f[_0xdb90('0x29')]=_[_0xdb90('0x2a')](db[_0xdb90('0x2b')][_0xdb90('0x2c')]);_0x554d8f[_0xdb90('0x2d')]=_[_0xdb90('0x2a')](_0x321efc[_0xdb90('0x2d')]);_0x554d8f[_0xdb90('0x2e')]=_[_0xdb90('0x2f')](_0x554d8f[_0xdb90('0x29')],_0x554d8f[_0xdb90('0x2d')]);_0x67aebc[_0xdb90('0x30')]=_[_0xdb90('0x2f')](_0x554d8f['model'],qs[_0xdb90('0x31')](_0x321efc[_0xdb90('0x2d')][_0xdb90('0x31')]));_0x67aebc[_0xdb90('0x30')]=_0x67aebc[_0xdb90('0x30')][_0xdb90('0x32')]?_0x67aebc[_0xdb90('0x30')]:_0x554d8f[_0xdb90('0x29')];if(_0x321efc[_0xdb90('0x2d')][_0xdb90('0x33')]){_0x67aebc['include']=[{'all':!![]}];}_0x67aebc=_[_0xdb90('0x34')]({},_0x67aebc,_0x321efc[_0xdb90('0x35')]);return db['ChatProactiveAction'][_0xdb90('0x36')](_0x67aebc)[_0xdb90('0x23')](handleEntityNotFound(_0x46f743,null))[_0xdb90('0x23')](respondWithResult(_0x46f743,null))[_0xdb90('0x37')](handleError(_0x46f743,null));};exports[_0xdb90('0x38')]=function(_0x579279,_0x430c37){return db[_0xdb90('0x2b')][_0xdb90('0x38')](_0x579279['body'],{})[_0xdb90('0x23')](respondWithResult(_0x430c37,0xc9))[_0xdb90('0x37')](handleError(_0x430c37,null));};exports['update']=function(_0x42d6ff,_0x2b2942){if(_0x42d6ff[_0xdb90('0x39')]['id']){delete _0x42d6ff[_0xdb90('0x39')]['id'];}return db['ChatProactiveAction'][_0xdb90('0x36')]({'where':{'id':_0x42d6ff[_0xdb90('0x28')]['id']}})['then'](handleEntityNotFound(_0x2b2942,null))['then'](saveUpdates(_0x42d6ff[_0xdb90('0x39')],null))[_0xdb90('0x23')](respondWithResult(_0x2b2942,null))[_0xdb90('0x37')](handleError(_0x2b2942,null));};exports[_0xdb90('0x22')]=function(_0x49c745,_0x13ae1b){return db['ChatProactiveAction']['find']({'where':{'id':_0x49c745['params']['id']}})[_0xdb90('0x23')](handleEntityNotFound(_0x13ae1b,null))[_0xdb90('0x23')](removeEntity(_0x13ae1b,null))[_0xdb90('0x37')](handleError(_0x13ae1b,null));};
\ No newline at end of file
index da75a76..0abe6e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa05d=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction'];(function(_0x3cd133,_0x222fcb){var _0x2512c8=function(_0x484491){while(--_0x484491){_0x3cd133['push'](_0x3cd133['shift']());}};_0x2512c8(++_0x222fcb);}(_0xa05d,0xdc));var _0xda05=function(_0x23ad48,_0x104b01){_0x23ad48=_0x23ad48-0x0;var _0x199a20=_0xa05d[_0x23ad48];return _0x199a20;};'use strict';var _=require(_0xda05('0x0'));var util=require(_0xda05('0x1'));var logger=require(_0xda05('0x2'))(_0xda05('0x3'));var moment=require(_0xda05('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xda05('0x5'));var rimraf=require(_0xda05('0x6'));var config=require(_0xda05('0x7'));var attributes=require(_0xda05('0x8'));module[_0xda05('0x9')]=function(_0x3c59e9,_0x187b6e){return _0x3c59e9['define'](_0xda05('0xa'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x39c5=['lodash','util','api','bluebird','request-promise','path','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction','chat_proactive_actions'];(function(_0x8bdf07,_0x13a5eb){var _0x4389f8=function(_0x157bda){while(--_0x157bda){_0x8bdf07['push'](_0x8bdf07['shift']());}};_0x4389f8(++_0x13a5eb);}(_0x39c5,0xf2));var _0x539c=function(_0x4eec9b,_0x4aea09){_0x4eec9b=_0x4eec9b-0x0;var _0x2e3849=_0x39c5[_0x4eec9b];return _0x2e3849;};'use strict';var _=require(_0x539c('0x0'));var util=require(_0x539c('0x1'));var logger=require('../../config/logger')(_0x539c('0x2'));var moment=require('moment');var BPromise=require(_0x539c('0x3'));var rp=require(_0x539c('0x4'));var fs=require('fs');var path=require(_0x539c('0x5'));var rimraf=require('rimraf');var config=require(_0x539c('0x6'));var attributes=require(_0x539c('0x7'));module[_0x539c('0x8')]=function(_0x113d8e,_0x417a8f){return _0x113d8e['define'](_0x539c('0x9'),attributes,{'tableName':_0x539c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f73489..3d84b6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac52=['ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x3e229f,_0x179151){var _0x430e94=function(_0x4b89ec){while(--_0x4b89ec){_0x3e229f['push'](_0x3e229f['shift']());}};_0x430e94(++_0x179151);}(_0xac52,0x122));var _0x2ac5=function(_0x3e7e96,_0x5683ca){_0x3e7e96=_0x3e7e96-0x0;var _0x13f6f0=_0xac52[_0x3e7e96];return _0x13f6f0;};'use strict';var _=require('lodash');var util=require(_0x2ac5('0x0'));var moment=require(_0x2ac5('0x1'));var BPromise=require(_0x2ac5('0x2'));var rs=require(_0x2ac5('0x3'));var fs=require('fs');var Redis=require(_0x2ac5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2ac5('0x5'));var logger=require(_0x2ac5('0x6'))('rpc');var config=require(_0x2ac5('0x7'));var jayson=require(_0x2ac5('0x8'));var client=jayson[_0x2ac5('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54a8ed,_0x433d88,_0x197aed){return new BPromise(function(_0x1ff724,_0x3fc8b5){return client[_0x2ac5('0xa')](_0x54a8ed,_0x197aed)[_0x2ac5('0xb')](function(_0x22f28b){logger[_0x2ac5('0xc')](_0x2ac5('0xd'),_0x433d88,_0x2ac5('0xe'));logger['debug'](_0x2ac5('0xf'),_0x433d88,_0x2ac5('0xe'),JSON[_0x2ac5('0x10')](_0x22f28b));if(_0x22f28b[_0x2ac5('0x11')]){if(_0x22f28b['error']['code']===0x1f4){logger['error'](_0x2ac5('0xd'),_0x433d88,_0x22f28b[_0x2ac5('0x11')][_0x2ac5('0x12')]);return _0x3fc8b5(_0x22f28b[_0x2ac5('0x11')][_0x2ac5('0x12')]);}logger['error'](_0x2ac5('0xd'),_0x433d88,_0x22f28b['error'][_0x2ac5('0x12')]);return _0x1ff724(_0x22f28b[_0x2ac5('0x11')][_0x2ac5('0x12')]);}else{logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x433d88,_0x2ac5('0xe'));_0x1ff724(_0x22f28b[_0x2ac5('0x13')][_0x2ac5('0x12')]);}})[_0x2ac5('0x14')](function(_0x1741ce){logger[_0x2ac5('0x11')](_0x2ac5('0xd'),_0x433d88,_0x1741ce);_0x3fc8b5(_0x1741ce);});});}
\ No newline at end of file
+var _0xe14b=['catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x5ac3f6,_0x3bda11){var _0x2c866f=function(_0x46acd9){while(--_0x46acd9){_0x5ac3f6['push'](_0x5ac3f6['shift']());}};_0x2c866f(++_0x3bda11);}(_0xe14b,0xbe));var _0xbe14=function(_0x11218b,_0x178d90){_0x11218b=_0x11218b-0x0;var _0x329f85=_0xe14b[_0x11218b];return _0x329f85;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require(_0xbe14('0x2'));var BPromise=require('bluebird');var rs=require(_0xbe14('0x3'));var fs=require('fs');var Redis=require(_0xbe14('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x5'));var logger=require('../../config/logger')(_0xbe14('0x6'));var config=require(_0xbe14('0x7'));var jayson=require(_0xbe14('0x8'));var client=jayson[_0xbe14('0x9')][_0xbe14('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x14cad8,_0x262f38,_0x30f023){return new BPromise(function(_0x58756f,_0x56a997){return client[_0xbe14('0xb')](_0x14cad8,_0x30f023)[_0xbe14('0xc')](function(_0x12bfcf){logger[_0xbe14('0xd')](_0xbe14('0xe'),_0x262f38,_0xbe14('0xf'));logger['debug'](_0xbe14('0x10'),_0x262f38,_0xbe14('0xf'),JSON['stringify'](_0x12bfcf));if(_0x12bfcf[_0xbe14('0x11')]){if(_0x12bfcf[_0xbe14('0x11')]['code']===0x1f4){logger['error'](_0xbe14('0xe'),_0x262f38,_0x12bfcf[_0xbe14('0x11')]['message']);return _0x56a997(_0x12bfcf[_0xbe14('0x11')]['message']);}logger[_0xbe14('0x11')](_0xbe14('0xe'),_0x262f38,_0x12bfcf['error'][_0xbe14('0x12')]);return _0x58756f(_0x12bfcf[_0xbe14('0x11')]['message']);}else{logger[_0xbe14('0xd')](_0xbe14('0xe'),_0x262f38,_0xbe14('0xf'));_0x58756f(_0x12bfcf[_0xbe14('0x13')][_0xbe14('0x12')]);}})[_0xbe14('0x14')](function(_0x1854d8){logger[_0xbe14('0x11')](_0xbe14('0xe'),_0x262f38,_0x1854d8);_0x56a997(_0x1854d8);});});}
\ No newline at end of file
index e397757..b1b0dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['isAuthenticated','/:id','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','show','post'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x038b,0x114));var _0xb038=function(_0x4eae78,_0x5908cc){_0x4eae78=_0x4eae78-0x0;var _0x13ae24=_0x038b[_0x4eae78];return _0x13ae24;};'use strict';var multer=require('multer');var util=require(_0xb038('0x0'));var path=require(_0xb038('0x1'));var timeout=require(_0xb038('0x2'));var express=require('express');var router=express[_0xb038('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb038('0x4'));var interaction=require(_0xb038('0x5'));var config=require('../../config/environment');var controller=require(_0xb038('0x6'));router[_0xb038('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xb038('0x8')]);router[_0xb038('0x9')]('/',auth[_0xb038('0xa')](),controller['create']);router['put'](_0xb038('0xb'),auth[_0xb038('0xa')](),controller['update']);router['delete'](_0xb038('0xb'),auth[_0xb038('0xa')](),controller['destroy']);module[_0xb038('0xc')]=router;
\ No newline at end of file
+var _0x326f=['../../config/environment','./chatProactiveAction.controller','get','/:id','show','post','isAuthenticated','create','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x7698f5,_0x1be3dd){var _0x2039a6=function(_0x584369){while(--_0x584369){_0x7698f5['push'](_0x7698f5['shift']());}};_0x2039a6(++_0x1be3dd);}(_0x326f,0xd1));var _0xf326=function(_0x36c8fe,_0x1facf3){_0x36c8fe=_0x36c8fe-0x0;var _0x1937ac=_0x326f[_0x36c8fe];return _0x1937ac;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')](_0xf326('0xa'),auth['isAuthenticated'](),controller[_0xf326('0xb')]);router[_0xf326('0xc')]('/',auth[_0xf326('0xd')](),controller[_0xf326('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xf')]);router[_0xf326('0x10')](_0xf326('0xa'),auth[_0xf326('0xd')](),controller[_0xf326('0x11')]);module['exports']=router;
\ No newline at end of file
index da489ae..30730a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0053=['sequelize','exports','name','STRING','INTEGER','rrmemory','beepall'];(function(_0x421e31,_0x5bfb91){var _0x30a361=function(_0x421c25){while(--_0x421c25){_0x421e31['push'](_0x421e31['shift']());}};_0x30a361(++_0x5bfb91);}(_0x0053,0xf5));var _0x3005=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0053[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3005('0x0'));module[_0x3005('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3005('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3005('0x3')]},'timeout':{'type':Sequelize[_0x3005('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3005('0x5'),_0x3005('0x6'),'roundrobin')}};
\ No newline at end of file
+var _0x60b9=['STRING','name','INTEGER','beepall','roundrobin'];(function(_0x163718,_0x259f3a){var _0x5676b1=function(_0x298031){while(--_0x298031){_0x163718['push'](_0x163718['shift']());}};_0x5676b1(++_0x259f3a);}(_0x60b9,0xcd));var _0x960b=function(_0xe3c786,_0x1b6c09){_0xe3c786=_0xe3c786-0x0;var _0x43a8af=_0x60b9[_0xe3c786];return _0x43a8af;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x960b('0x0')],'unique':_0x960b('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x960b('0x0')]},'timeout':{'type':Sequelize[_0x960b('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x960b('0x3'),_0x960b('0x4'))}};
\ No newline at end of file
index 4dcb138..e4106d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b00=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatQueue.socket','register','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','get','ChatQueues','UserProfileResource','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','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','getMembers','findOne','UserChatQueue','User','UserId','agent','updatedAt','createdAt','format','%s/%s','chatPause','getTeams','Team','addTeams','online','voicePause','flatMap','Agents','sequelize','transaction','findOrCreate','removeTeams','ids','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','includes','all','union','compact','value','isEmpty','removeAgents','forEach','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','isArray','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','lodash','squel','crypto'];(function(_0x29e397,_0x1ec646){var _0x52426a=function(_0xd547e8){while(--_0xd547e8){_0x29e397['push'](_0x29e397['shift']());}};_0x52426a(++_0x1ec646);}(_0x2b00,0x88));var _0x02b0=function(_0x1327f7,_0x574202){_0x1327f7=_0x1327f7-0x0;var _0xa7a00c=_0x2b00[_0x1327f7];return _0xa7a00c;};'use strict';var emlformat=require(_0x02b0('0x0'));var rimraf=require(_0x02b0('0x1'));var zipdir=require(_0x02b0('0x2'));var jsonpatch=require(_0x02b0('0x3'));var rp=require(_0x02b0('0x4'));var moment=require('moment');var BPromise=require(_0x02b0('0x5'));var Mustache=require(_0x02b0('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x02b0('0x7'));var ejs=require(_0x02b0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x02b0('0x9'));var squel=require(_0x02b0('0xa'));var crypto=require(_0x02b0('0xb'));var jsforce=require(_0x02b0('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x02b0('0xd'));var Papa=require(_0x02b0('0xe'));var Redis=require('ioredis');var authService=require(_0x02b0('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x02b0('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x02b0('0x11'));var utils=require(_0x02b0('0x12'));var config=require(_0x02b0('0x13'));var licenseUtil=require(_0x02b0('0x14'));var db=require(_0x02b0('0x15'))['db'];config['redis']=_['defaults'](config[_0x02b0('0x16')],{'host':_0x02b0('0x17'),'port':0x18eb});var socket=require(_0x02b0('0x18'))(new Redis(config[_0x02b0('0x16')]));require(_0x02b0('0x19'))[_0x02b0('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x02b0('0x1b')][_0x02b0('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x310bd4,_0x22fbfd,_0x7d5af8,_0xb069fc){return new BPromise(function(_0x508971,_0x50dc6a){var _0x12b001=_0xb069fc||client;return _0x12b001[_0x02b0('0x1d')](_0x310bd4,_0x7d5af8)[_0x02b0('0x1e')](function(_0x465505){logger[_0x02b0('0x1f')](_0x02b0('0x20'),_0x22fbfd,'request\x20sent');logger['debug'](_0x02b0('0x21'),_0x22fbfd,'request\x20sent',JSON[_0x02b0('0x22')](_0x465505));if(_0x465505[_0x02b0('0x23')]){if(_0x465505[_0x02b0('0x23')][_0x02b0('0x24')]===0x1f4){logger[_0x02b0('0x23')](_0x02b0('0x20'),_0x22fbfd,_0x465505[_0x02b0('0x23')][_0x02b0('0x25')]);return _0x50dc6a(_0x465505[_0x02b0('0x23')][_0x02b0('0x25')]);}logger[_0x02b0('0x23')](_0x02b0('0x20'),_0x22fbfd,_0x465505[_0x02b0('0x23')][_0x02b0('0x25')]);return _0x508971(_0x465505[_0x02b0('0x23')]['message']);}else{logger[_0x02b0('0x1f')](_0x02b0('0x20'),_0x22fbfd,_0x02b0('0x26'));_0x508971(_0x465505[_0x02b0('0x27')]['message']);}})[_0x02b0('0x28')](function(_0x3762d3){logger['error'](_0x02b0('0x20'),_0x22fbfd,_0x3762d3);_0x50dc6a(_0x3762d3);});});}function respondWithStatusCode(_0x41a0de,_0x21f18e){_0x21f18e=_0x21f18e||0xcc;return function(_0x2f64a6){if(_0x2f64a6){return _0x41a0de[_0x02b0('0x29')](_0x21f18e);}return _0x41a0de[_0x02b0('0x2a')](_0x21f18e)[_0x02b0('0x2b')]();};}function respondWithResult(_0x247697,_0x26e272){_0x26e272=_0x26e272||0xc8;return function(_0x1bcce3){if(_0x1bcce3){return _0x247697[_0x02b0('0x2a')](_0x26e272)['json'](_0x1bcce3);}};}function respondWithFilteredResult(_0x2a1dbe,_0x45a756){return function(_0x53230e){if(_0x53230e){var _0x167ef7=typeof _0x45a756[_0x02b0('0x2c')]===_0x02b0('0x2d')&&typeof _0x45a756[_0x02b0('0x2e')]==='undefined';var _0x2fb696=_0x53230e['count'];var _0x2210b7=_0x167ef7?0x0:_0x45a756[_0x02b0('0x2c')];var _0x1d5c7c=_0x167ef7?_0x53230e[_0x02b0('0x2f')]:_0x45a756[_0x02b0('0x2c')]+_0x45a756[_0x02b0('0x2e')];var _0x3ab197;if(_0x1d5c7c>=_0x2fb696){_0x1d5c7c=_0x2fb696;_0x3ab197=0xc8;}else{_0x3ab197=0xce;}_0x2a1dbe[_0x02b0('0x2a')](_0x3ab197);return _0x2a1dbe[_0x02b0('0x30')](_0x02b0('0x31'),_0x2210b7+'-'+_0x1d5c7c+'/'+_0x2fb696)[_0x02b0('0x32')](_0x53230e);}return null;};}function patchUpdates(_0xd93e16){return function(_0x51f3b8){try{jsonpatch['apply'](_0x51f3b8,_0xd93e16,!![]);}catch(_0x25b801){return BPromise[_0x02b0('0x33')](_0x25b801);}return _0x51f3b8[_0x02b0('0x34')]();};}function saveUpdates(_0x1abf99,_0x5d8a2d){return function(_0xc9fdd6){if(_0xc9fdd6){return _0xc9fdd6[_0x02b0('0x35')](_0x1abf99)[_0x02b0('0x1e')](function(_0x445e87){return _0x445e87;});}return null;};}function removeEntity(_0x5beb8b,_0x4e3b80){return function(_0x1f84eb){if(_0x1f84eb){return _0x1f84eb[_0x02b0('0x36')]()[_0x02b0('0x1e')](function(){var _0x3e9969=_0x1f84eb[_0x02b0('0x37')]({'plain':!![]});var _0x44ebe0=_0x02b0('0x38');return db[_0x02b0('0x39')][_0x02b0('0x36')]({'where':{'type':_0x44ebe0,'resourceId':_0x3e9969['id']}})[_0x02b0('0x1e')](function(){return _0x1f84eb;});})[_0x02b0('0x1e')](function(){_0x5beb8b[_0x02b0('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x128e9f,_0x139256){return function(_0x29ea58){if(!_0x29ea58){_0x128e9f[_0x02b0('0x29')](0x194);}return _0x29ea58;};}function handleError(_0x49ca06,_0x4ab1a2){_0x4ab1a2=_0x4ab1a2||0x1f4;return function(_0xe4303a){logger[_0x02b0('0x23')](_0xe4303a['stack']);if(_0xe4303a[_0x02b0('0x3a')]){delete _0xe4303a[_0x02b0('0x3a')];}_0x49ca06['status'](_0x4ab1a2)[_0x02b0('0x3b')](_0xe4303a);};}exports[_0x02b0('0x3c')]=function(_0x567191,_0x27b0e1){var _0x2a8bb3={},_0x5382f8={},_0x768e77={'count':0x0,'rows':[]};var _0x1a09d9=_[_0x02b0('0x3d')](db[_0x02b0('0x3e')][_0x02b0('0x3f')],function(_0x35b265){return{'name':_0x35b265[_0x02b0('0x40')],'type':_0x35b265[_0x02b0('0x41')]['key']};});_0x5382f8[_0x02b0('0x42')]=_['map'](_0x1a09d9,'name');_0x5382f8[_0x02b0('0x43')]=_[_0x02b0('0x44')](_0x567191[_0x02b0('0x43')]);_0x5382f8['filters']=_[_0x02b0('0x45')](_0x5382f8[_0x02b0('0x42')],_0x5382f8[_0x02b0('0x43')]);_0x2a8bb3[_0x02b0('0x46')]=_[_0x02b0('0x45')](_0x5382f8[_0x02b0('0x42')],qs[_0x02b0('0x47')](_0x567191[_0x02b0('0x43')]['fields']));_0x2a8bb3[_0x02b0('0x46')]=_0x2a8bb3[_0x02b0('0x46')][_0x02b0('0x48')]?_0x2a8bb3[_0x02b0('0x46')]:_0x5382f8['model'];if(!_0x567191[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x2a8bb3[_0x02b0('0x2e')]=qs[_0x02b0('0x2e')](_0x567191[_0x02b0('0x43')]['limit']);_0x2a8bb3['offset']=qs[_0x02b0('0x2c')](_0x567191['query'][_0x02b0('0x2c')]);}_0x2a8bb3[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x567191[_0x02b0('0x43')][_0x02b0('0x4c')]);_0x2a8bb3[_0x02b0('0x4d')]=qs[_0x02b0('0x4e')](_[_0x02b0('0x4f')](_0x567191[_0x02b0('0x43')],_0x5382f8['filters']),_0x1a09d9);if(_0x567191['query'][_0x02b0('0x50')]){_0x2a8bb3[_0x02b0('0x4d')]=_['merge'](_0x2a8bb3[_0x02b0('0x4d')],{'$or':_[_0x02b0('0x3d')](_0x1a09d9,function(_0x2107ee){if(_0x2107ee[_0x02b0('0x41')]!==_0x02b0('0x51')){var _0x293e29={};_0x293e29[_0x2107ee[_0x02b0('0x3a')]]={'$like':'%'+_0x567191[_0x02b0('0x43')][_0x02b0('0x50')]+'%'};return _0x293e29;}})});}_0x2a8bb3=_[_0x02b0('0x52')]({},_0x2a8bb3,_0x567191[_0x02b0('0x53')]);var _0x5acdb6={'where':_0x2a8bb3['where']};return db[_0x02b0('0x3e')][_0x02b0('0x2f')](_0x5acdb6)[_0x02b0('0x1e')](function(_0x48f304){_0x768e77[_0x02b0('0x2f')]=_0x48f304;if(_0x567191['query'][_0x02b0('0x54')]){_0x2a8bb3[_0x02b0('0x55')]=[{'all':!![]}];}return db[_0x02b0('0x3e')][_0x02b0('0x56')](_0x2a8bb3);})[_0x02b0('0x1e')](function(_0x294223){_0x768e77['rows']=_0x294223;return _0x768e77;})['then'](respondWithFilteredResult(_0x27b0e1,_0x2a8bb3))['catch'](handleError(_0x27b0e1,null));};exports[_0x02b0('0x57')]=function(_0x2e773b,_0x4126cf){var _0xd7a8f0={'raw':!![],'where':{'id':_0x2e773b[_0x02b0('0x58')]['id']}},_0x54644b={};_0x54644b[_0x02b0('0x42')]=_[_0x02b0('0x44')](db[_0x02b0('0x3e')][_0x02b0('0x3f')]);_0x54644b[_0x02b0('0x43')]=_[_0x02b0('0x44')](_0x2e773b['query']);_0x54644b[_0x02b0('0x4e')]=_['intersection'](_0x54644b[_0x02b0('0x42')],_0x54644b[_0x02b0('0x43')]);_0xd7a8f0['attributes']=_['intersection'](_0x54644b['model'],qs[_0x02b0('0x47')](_0x2e773b[_0x02b0('0x43')][_0x02b0('0x47')]));_0xd7a8f0[_0x02b0('0x46')]=_0xd7a8f0[_0x02b0('0x46')][_0x02b0('0x48')]?_0xd7a8f0[_0x02b0('0x46')]:_0x54644b['model'];if(_0x2e773b['query'][_0x02b0('0x54')]){_0xd7a8f0[_0x02b0('0x55')]=[{'all':!![]}];}_0xd7a8f0=_[_0x02b0('0x52')]({},_0xd7a8f0,_0x2e773b[_0x02b0('0x53')]);return db['ChatQueue'][_0x02b0('0x59')](_0xd7a8f0)[_0x02b0('0x1e')](handleEntityNotFound(_0x4126cf,null))[_0x02b0('0x1e')](respondWithResult(_0x4126cf,null))[_0x02b0('0x28')](handleError(_0x4126cf,null));};exports[_0x02b0('0x5a')]=function(_0x1f2a1a,_0x53d54c){return db[_0x02b0('0x3e')][_0x02b0('0x5a')](_0x1f2a1a[_0x02b0('0x5b')],{})[_0x02b0('0x1e')](function(_0x5d79e8){var _0xab25d=_0x1f2a1a[_0x02b0('0x5c')]['get']({'plain':!![]});if(!_0xab25d)throw new Error(_0x02b0('0x5d'));if(_0xab25d[_0x02b0('0x5e')]===_0x02b0('0x5c')){var _0x22b143=_0x5d79e8[_0x02b0('0x37')]({'plain':!![]});var _0x4a4f5f='ChatQueues';return db[_0x02b0('0x5f')][_0x02b0('0x59')]({'where':{'name':_0x4a4f5f,'userProfileId':_0xab25d[_0x02b0('0x60')]},'raw':!![]})[_0x02b0('0x1e')](function(_0x41aecc){if(_0x41aecc&&_0x41aecc[_0x02b0('0x61')]===0x0){return db[_0x02b0('0x39')][_0x02b0('0x5a')]({'name':_0x22b143['name'],'resourceId':_0x22b143['id'],'type':_0x41aecc[_0x02b0('0x3a')],'sectionId':_0x41aecc['id']},{})[_0x02b0('0x1e')](function(){return _0x5d79e8;});}else{return _0x5d79e8;}})[_0x02b0('0x28')](function(_0x46a01a){logger[_0x02b0('0x23')](_0x02b0('0x62'),_0x46a01a);throw _0x46a01a;});}return _0x5d79e8;})[_0x02b0('0x1e')](respondWithResult(_0x53d54c,0xc9))['catch'](handleError(_0x53d54c,null));};exports['update']=function(_0x1fb950,_0x3b2324){if(_0x1fb950[_0x02b0('0x5b')]['id']){delete _0x1fb950[_0x02b0('0x5b')]['id'];}return db[_0x02b0('0x3e')]['find']({'where':{'id':_0x1fb950[_0x02b0('0x58')]['id']}})[_0x02b0('0x1e')](handleEntityNotFound(_0x3b2324,null))[_0x02b0('0x1e')](saveUpdates(_0x1fb950[_0x02b0('0x5b')],null))[_0x02b0('0x1e')](respondWithResult(_0x3b2324,null))[_0x02b0('0x28')](handleError(_0x3b2324,null));};exports[_0x02b0('0x36')]=function(_0x2bfa25,_0x570327){return db[_0x02b0('0x3e')]['find']({'where':{'id':_0x2bfa25[_0x02b0('0x58')]['id']}})[_0x02b0('0x1e')](handleEntityNotFound(_0x570327,null))['then'](removeEntity(_0x570327,null))['catch'](handleError(_0x570327,null));};exports['describe']=function(_0x1d1236,_0x302dd6){return db['ChatQueue']['describe']()[_0x02b0('0x1e')](respondWithResult(_0x302dd6,null))[_0x02b0('0x28')](handleError(_0x302dd6,null));};exports[_0x02b0('0x63')]=function(_0x281cd2,_0x27912b,_0x39cc94){var _0x4805b4={'raw':!![],'where':{}},_0x78489d={},_0x1c2327;return db[_0x02b0('0x3e')][_0x02b0('0x64')]({'where':{'id':_0x281cd2['params']['id']}})['then'](handleEntityNotFound(_0x27912b,null))['then'](function(_0x405bb0){if(_0x405bb0){_0x1c2327=_0x405bb0['get']({'plain':!![]});_0x78489d['model']=_[_0x02b0('0x44')](db[_0x02b0('0x65')]['rawAttributes']);_0x78489d['query']=_['keys'](_0x281cd2[_0x02b0('0x43')]);_0x78489d[_0x02b0('0x4e')]=_[_0x02b0('0x45')](_0x78489d[_0x02b0('0x42')],_0x78489d[_0x02b0('0x43')]);_0x4805b4[_0x02b0('0x46')]=_[_0x02b0('0x45')](_0x78489d['model'],qs[_0x02b0('0x47')](_0x281cd2[_0x02b0('0x43')][_0x02b0('0x47')]));_0x4805b4['attributes']=_0x4805b4[_0x02b0('0x46')][_0x02b0('0x48')]?_0x4805b4['attributes']:_0x78489d[_0x02b0('0x42')];if(!_0x281cd2[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x4805b4['limit']=qs[_0x02b0('0x2e')](_0x281cd2[_0x02b0('0x43')][_0x02b0('0x2e')]);_0x4805b4[_0x02b0('0x2c')]=qs[_0x02b0('0x2c')](_0x281cd2['query'][_0x02b0('0x2c')]);}_0x4805b4[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x281cd2[_0x02b0('0x43')]['sort']);_0x4805b4[_0x02b0('0x4d')]=qs['filters'](_[_0x02b0('0x4f')](_0x281cd2[_0x02b0('0x43')],_0x78489d['filters']));_0x4805b4[_0x02b0('0x4d')]['ChatQueueId']=_0x405bb0['id'];if(_0x281cd2['query'][_0x02b0('0x50')]){_0x4805b4['where']=_[_0x02b0('0x52')](_0x4805b4['where'],{'$or':_[_0x02b0('0x3d')](_0x4805b4[_0x02b0('0x46')],function(_0x2a4c6b){var _0x1c07d1={};_0x1c07d1[_0x2a4c6b]={'$like':'%'+_0x281cd2[_0x02b0('0x43')][_0x02b0('0x50')]+'%'};return _0x1c07d1;})});}_0x4805b4=_[_0x02b0('0x52')]({},_0x4805b4,_0x281cd2[_0x02b0('0x53')]);return db['UserChatQueue'][_0x02b0('0x56')](_0x4805b4);}})['then'](function(_0x8a3039){if(_0x8a3039){return db[_0x02b0('0x66')]['findAndCountAll']({'where':{'id':_['map'](_0x8a3039,_0x02b0('0x67')),'role':_0x02b0('0x68')},'attributes':['id','name','chatPause',_0x02b0('0x69'),_0x02b0('0x6a')]});}})[_0x02b0('0x1e')](function(_0x44ec63){if(_0x44ec63){return{'count':_0x44ec63['count'],'rows':_[_0x02b0('0x3d')](_0x44ec63['rows'],function(_0x53566d){return{'membername':_0x53566d['name'],'UserId':_0x53566d['id'],'queue_name':_0x1c2327[_0x02b0('0x3a')],'ChatQueueId':_0x1c2327['id'],'interface':util[_0x02b0('0x6b')](_0x02b0('0x6c'),'SIP',_0x53566d[_0x02b0('0x3a')]),'penalty':0x0,'paused':_0x53566d[_0x02b0('0x6d')],'createdAt':_0x53566d[_0x02b0('0x6a')],'updatedAt':_0x53566d[_0x02b0('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x02b0('0x1e')](respondWithFilteredResult(_0x27912b,_0x4805b4))[_0x02b0('0x28')](handleError(_0x27912b,null));};exports[_0x02b0('0x6e')]=function(_0x3b10aa,_0x4bb3d6,_0x711067){var _0x487f9a={};var _0xf3244e={};var _0x2c31b0;var _0x12befb;return db[_0x02b0('0x3e')][_0x02b0('0x64')]({'where':{'id':_0x3b10aa[_0x02b0('0x58')]['id']}})['then'](handleEntityNotFound(_0x4bb3d6,null))['then'](function(_0x44012a){if(_0x44012a){_0x2c31b0=_0x44012a;_0xf3244e[_0x02b0('0x42')]=_[_0x02b0('0x44')](db[_0x02b0('0x6f')][_0x02b0('0x3f')]);_0xf3244e[_0x02b0('0x43')]=_[_0x02b0('0x44')](_0x3b10aa['query']);_0xf3244e['filters']=_[_0x02b0('0x45')](_0xf3244e[_0x02b0('0x42')],_0xf3244e[_0x02b0('0x43')]);_0x487f9a['attributes']=_['intersection'](_0xf3244e[_0x02b0('0x42')],qs['fields'](_0x3b10aa['query'][_0x02b0('0x47')]));_0x487f9a[_0x02b0('0x46')]=_0x487f9a[_0x02b0('0x46')][_0x02b0('0x48')]?_0x487f9a[_0x02b0('0x46')]:_0xf3244e['model'];_0x487f9a[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x3b10aa[_0x02b0('0x43')]['sort']);_0x487f9a[_0x02b0('0x4d')]=qs[_0x02b0('0x4e')](_[_0x02b0('0x4f')](_0x3b10aa['query'],_0xf3244e[_0x02b0('0x4e')]));if(_0x3b10aa[_0x02b0('0x43')][_0x02b0('0x50')]){_0x487f9a[_0x02b0('0x4d')]=_[_0x02b0('0x52')](_0x487f9a['where'],{'$or':_[_0x02b0('0x3d')](_0x487f9a[_0x02b0('0x46')],function(_0x1d7887){var _0x8a6502={};_0x8a6502[_0x1d7887]={'$like':'%'+_0x3b10aa[_0x02b0('0x43')]['filter']+'%'};return _0x8a6502;})});}_0x487f9a=_['merge']({},_0x487f9a,_0x3b10aa[_0x02b0('0x53')]);return _0x2c31b0[_0x02b0('0x6e')](_0x487f9a);}})[_0x02b0('0x1e')](function(_0x1c64a9){if(_0x1c64a9){_0x12befb=_0x1c64a9[_0x02b0('0x48')];if(!_0x3b10aa[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x487f9a['limit']=qs['limit'](_0x3b10aa['query']['limit']);_0x487f9a[_0x02b0('0x2c')]=qs[_0x02b0('0x2c')](_0x3b10aa[_0x02b0('0x43')][_0x02b0('0x2c')]);}return _0x2c31b0[_0x02b0('0x6e')](_0x487f9a);}})['then'](function(_0x963b96){if(_0x963b96){return _0x963b96?{'count':_0x12befb,'rows':_0x963b96}:null;}})[_0x02b0('0x1e')](respondWithResult(_0x4bb3d6,null))[_0x02b0('0x28')](handleError(_0x4bb3d6,null));};exports[_0x02b0('0x70')]=function(_0x1c183a,_0x27c233,_0xecda25){var _0x2b6b14=_0x1c183a['body']['ids'];return db['Team']['findAll']({'where':{'id':_0x2b6b14},'attributes':['id'],'include':[{'model':db[_0x02b0('0x66')],'as':'Agents','attributes':['id','name',_0x02b0('0x71'),_0x02b0('0x72'),'interface'],'raw':!![]}]})['then'](function(_0x493fde){if(_0x493fde){var _0x2dbae0=_[_0x02b0('0x73')](_0x493fde,function(_0x280fd4){var _0x1b559c=_0x280fd4[_0x02b0('0x37')]({'plain':!![]});return _0x1b559c[_0x02b0('0x74')];});return db[_0x02b0('0x3e')][_0x02b0('0x59')]({'where':{'id':_0x1c183a['params']['id']}})[_0x02b0('0x1e')](function(_0x3e4f6e){return db[_0x02b0('0x75')][_0x02b0('0x76')](function(_0x488ed6){return _0x3e4f6e['addTeams'](_0x2b6b14,{'transaction':_0x488ed6})[_0x02b0('0x1e')](function(){return BPromise['each'](_0x2dbae0,function(_0x57d3b5){return db[_0x02b0('0x65')][_0x02b0('0x77')]({'where':{'UserId':_0x57d3b5['id'],'ChatQueueId':_0x1c183a[_0x02b0('0x58')]['id']},'transaction':_0x488ed6});});})[_0x02b0('0x1e')](function(){_0x2dbae0['forEach'](function(_0x1c04d3){socket['emit']('userChatQueue:save',{'UserId':_0x1c04d3['id'],'ChatQueueId':_0x3e4f6e['id']});});});});});}})['then'](respondWithStatusCode(_0x27c233,null))[_0x02b0('0x28')](handleError(_0x27c233,null));};exports[_0x02b0('0x78')]=function(_0x162b1a,_0x55a380,_0x3c157c){return db[_0x02b0('0x6f')][_0x02b0('0x56')]({'where':{'id':_0x162b1a[_0x02b0('0x43')][_0x02b0('0x79')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x02b0('0x74'),'attributes':['id'],'raw':!![]}]})[_0x02b0('0x1e')](handleEntityNotFound(_0x55a380,null))[_0x02b0('0x1e')](function(_0x42fe8d){var _0x5ab14d=_[_0x02b0('0x3d')](_0x42fe8d,'id');var _0x54ac55=[];var _0x3abcc3=[];var _0xe07b4e=squel[_0x02b0('0x7a')]();_0xe07b4e[_0x02b0('0x7b')](_0x02b0('0x7c'))[_0x02b0('0x7d')]('team_has_chat_queues','tq')[_0x02b0('0x7e')]('user_has_teams','ut',_0x02b0('0x7f'))[_0x02b0('0x4d')](_0x02b0('0x80'),_0x162b1a[_0x02b0('0x58')]['id']);for(var _0x1c6af4=0x0;_0x1c6af4<_0x42fe8d[_0x02b0('0x48')];_0x1c6af4+=0x1){let _0x3e9c53=_0x42fe8d[_0x1c6af4];for(var _0x5a03b1=0x0;_0x5a03b1<_0x3e9c53[_0x02b0('0x74')]['length'];_0x5a03b1+=0x1){let _0x409197=_0x3e9c53['Agents'][_0x5a03b1];var _0x328ab6=_0xe07b4e[_0x02b0('0x81')]();_0x328ab6[_0x02b0('0x4d')]('ut.UserId\x20=\x20?',_0x409197['id']);_0x3abcc3['push'](db[_0x02b0('0x75')][_0x02b0('0x43')](_0x328ab6[_0x02b0('0x82')](),{'type':db[_0x02b0('0x75')][_0x02b0('0x83')]['SELECT']})[_0x02b0('0x1e')](function(_0x2de23e){if(_0x2de23e[_0x02b0('0x48')]===0x1){return _0x409197['id'];}else{var _0x1ab1a8=_['every'](_[_0x02b0('0x3d')](_0x2de23e,'TeamId'),function(_0x5d12a6){return _[_0x02b0('0x84')](_0x5ab14d,_0x5d12a6);});if(_0x1ab1a8){return _0x409197['id'];}}}));}}return BPromise[_0x02b0('0x85')](_0x3abcc3)[_0x02b0('0x1e')](function(_0x2689f0){_0x54ac55=_(_0x54ac55)[_0x02b0('0x86')](_0x2689f0)[_0x02b0('0x87')]()[_0x02b0('0x88')]();return db['ChatQueue'][_0x02b0('0x59')]({'where':{'id':_0x162b1a[_0x02b0('0x58')]['id']}})['then'](function(_0x16ed69){return db[_0x02b0('0x75')][_0x02b0('0x76')](function(_0x4a2293){return _0x16ed69[_0x02b0('0x78')](_0x162b1a['query'][_0x02b0('0x79')],{'transaction':_0x4a2293})[_0x02b0('0x1e')](function(){if(!_[_0x02b0('0x89')](_0x54ac55)){return _0x16ed69[_0x02b0('0x8a')](_0x54ac55,{'transaction':_0x4a2293});}})[_0x02b0('0x1e')](function(){_0x54ac55[_0x02b0('0x8b')](function(_0x1365b4){socket['emit'](_0x02b0('0x8c'),{'UserId':_0x1365b4,'ChatQueueId':_0x16ed69['id']});});});});});});})[_0x02b0('0x1e')](respondWithStatusCode(_0x55a380,null))[_0x02b0('0x28')](handleError(_0x55a380,null));};exports[_0x02b0('0x8d')]=function(_0x1c1302,_0x1d6317,_0x1c7286){return db[_0x02b0('0x3e')][_0x02b0('0x59')]({'where':{'id':_0x1c1302[_0x02b0('0x58')]['id']}})['then'](handleEntityNotFound(_0x1d6317,null))[_0x02b0('0x1e')](function(_0x289bb4){if(_0x289bb4){return _0x289bb4[_0x02b0('0x8d')](_0x1c1302[_0x02b0('0x5b')][_0x02b0('0x79')],_[_0x02b0('0x8e')](_0x1c1302['body'],['ids','id'])||{})[_0x02b0('0x8f')](function(_0x445f18){for(var _0x4c0666=0x0;_0x4c0666<_0x1c1302['body']['ids'][_0x02b0('0x48')];_0x4c0666+=0x1){socket['emit'](_0x02b0('0x90'),{'UserId':Number(_0x1c1302[_0x02b0('0x5b')]['ids'][_0x4c0666]),'ChatQueueId':Number(_0x1c1302['params']['id'])});}return _0x445f18;});}})[_0x02b0('0x1e')](respondWithResult(_0x1d6317,null))[_0x02b0('0x28')](handleError(_0x1d6317,null));};exports[_0x02b0('0x8a')]=function(_0x47a0d1,_0x137c45,_0x52fa1f){return db[_0x02b0('0x3e')][_0x02b0('0x59')]({'where':{'id':_0x47a0d1[_0x02b0('0x58')]['id']}})['then'](handleEntityNotFound(_0x137c45,null))[_0x02b0('0x1e')](function(_0x80c5f1){if(_0x80c5f1){return _0x80c5f1[_0x02b0('0x8a')](_0x47a0d1[_0x02b0('0x43')][_0x02b0('0x79')])['then'](function(){if(_[_0x02b0('0x91')](_0x47a0d1[_0x02b0('0x43')]['ids'])){for(var _0xe37dcf=0x0;_0xe37dcf<_0x47a0d1[_0x02b0('0x43')][_0x02b0('0x79')][_0x02b0('0x48')];_0xe37dcf+=0x1){socket[_0x02b0('0x92')](_0x02b0('0x8c'),{'UserId':Number(_0x47a0d1[_0x02b0('0x43')][_0x02b0('0x79')][_0xe37dcf]),'ChatQueueId':Number(_0x47a0d1[_0x02b0('0x58')]['id'])});}}else{socket[_0x02b0('0x92')]('userChatQueue:remove',{'UserId':Number(_0x47a0d1['query']['ids']),'ChatQueueId':Number(_0x47a0d1['params']['id'])});}});}})['then'](respondWithStatusCode(_0x137c45,null))['catch'](handleError(_0x137c45,null));};exports[_0x02b0('0x93')]=function(_0x2ff017,_0x351634,_0x58e9f5){var _0x412c38={};var _0xf41191={};var _0x4aef44;var _0x105447;return db['ChatQueue'][_0x02b0('0x64')]({'where':{'id':_0x2ff017[_0x02b0('0x58')]['id']}})[_0x02b0('0x1e')](handleEntityNotFound(_0x351634,null))['then'](function(_0x3b11e1){if(_0x3b11e1){_0x4aef44=_0x3b11e1;_0xf41191[_0x02b0('0x42')]=_[_0x02b0('0x44')](db[_0x02b0('0x66')][_0x02b0('0x3f')]);_0xf41191[_0x02b0('0x43')]=_['keys'](_0x2ff017[_0x02b0('0x43')]);_0xf41191[_0x02b0('0x4e')]=_['intersection'](_0xf41191[_0x02b0('0x42')],_0xf41191[_0x02b0('0x43')]);_0x412c38[_0x02b0('0x46')]=_['intersection'](_0xf41191[_0x02b0('0x42')],qs[_0x02b0('0x47')](_0x2ff017['query'][_0x02b0('0x47')]));_0x412c38[_0x02b0('0x46')]=_0x412c38[_0x02b0('0x46')]['length']?_0x412c38[_0x02b0('0x46')]:_0xf41191[_0x02b0('0x42')];_0x412c38[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x2ff017[_0x02b0('0x43')][_0x02b0('0x4c')]);_0x412c38[_0x02b0('0x4d')]=qs[_0x02b0('0x4e')](_[_0x02b0('0x4f')](_0x2ff017['query'],_0xf41191[_0x02b0('0x4e')]));if(_0x2ff017['query']['filter']){_0x412c38[_0x02b0('0x4d')]=_[_0x02b0('0x52')](_0x412c38[_0x02b0('0x4d')],{'$or':_[_0x02b0('0x3d')](_0x412c38[_0x02b0('0x46')],function(_0x3c11b2){var _0xc639ce={};_0xc639ce[_0x3c11b2]={'$like':'%'+_0x2ff017[_0x02b0('0x43')][_0x02b0('0x50')]+'%'};return _0xc639ce;})});}_0x412c38=_[_0x02b0('0x52')]({},_0x412c38,_0x2ff017[_0x02b0('0x53')]);return _0x4aef44[_0x02b0('0x93')](_0x412c38);}})['then'](function(_0x2a4e56){if(_0x2a4e56){_0x105447=_0x2a4e56[_0x02b0('0x48')];if(!_0x2ff017[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x412c38[_0x02b0('0x2e')]=qs[_0x02b0('0x2e')](_0x2ff017[_0x02b0('0x43')]['limit']);_0x412c38[_0x02b0('0x2c')]=qs['offset'](_0x2ff017['query'][_0x02b0('0x2c')]);}return _0x4aef44[_0x02b0('0x93')](_0x412c38);}})['then'](function(_0x4987a9){if(_0x4987a9){return _0x4987a9?{'count':_0x105447,'rows':_0x4987a9}:null;}})[_0x02b0('0x1e')](respondWithResult(_0x351634,null))[_0x02b0('0x28')](handleError(_0x351634,null));};
\ No newline at end of file
+var _0xb04b=['UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','findOne','UserChatQueue','order','sort','ChatQueueId','User','findAndCountAll','map','UserId','agent','chatPause','updatedAt','rows','SIP','createdAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','transaction','findOrCreate','forEach','userChatQueue:save','removeTeams','select','tq.TeamId','from','team_has_chat_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','emit','userChatQueue:remove','addAgents','spread','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','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','redis','defaults','socket.io-emitter','./chatQueue.socket','register','jayson/promise','http','request','then','info','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','status','end','json','offset','limit','undefined','count','set','apply','reject','save','destroy','get','ChatQueues','UserProfileResource','sendStatus','name','send','ChatQueue','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','hasOwnProperty','nolimit','where','pick','filter','merge','options','includeAll','include','findAll','show','keys','fields','length','find','create','body','user','role'];(function(_0xf032bb,_0x59ff60){var _0x212229=function(_0x131e6c){while(--_0x131e6c){_0xf032bb['push'](_0xf032bb['shift']());}};_0x212229(++_0x59ff60);}(_0xb04b,0x166));var _0xbb04=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb04b[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xbb04('0x0'));var rimraf=require(_0xbb04('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb04('0x2'));var rp=require(_0xbb04('0x3'));var moment=require(_0xbb04('0x4'));var BPromise=require(_0xbb04('0x5'));var Mustache=require(_0xbb04('0x6'));var util=require(_0xbb04('0x7'));var path=require('path');var sox=require(_0xbb04('0x8'));var csv=require(_0xbb04('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbb04('0xa'));var squel=require(_0xbb04('0xb'));var crypto=require('crypto');var jsforce=require(_0xbb04('0xc'));var deskjs=require(_0xbb04('0xd'));var toCsv=require('to-csv');var querystring=require(_0xbb04('0xe'));var Papa=require(_0xbb04('0xf'));var Redis=require(_0xbb04('0x10'));var authService=require(_0xbb04('0x11'));var qs=require(_0xbb04('0x12'));var as=require(_0xbb04('0x13'));var hardwareService=require(_0xbb04('0x14'));var logger=require(_0xbb04('0x15'))(_0xbb04('0x16'));var utils=require(_0xbb04('0x17'));var config=require(_0xbb04('0x18'));var licenseUtil=require(_0xbb04('0x19'));var db=require(_0xbb04('0x1a'))['db'];config[_0xbb04('0x1b')]=_[_0xbb04('0x1c')](config[_0xbb04('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xbb04('0x1d'))(new Redis(config['redis']));require(_0xbb04('0x1e'))[_0xbb04('0x1f')](socket);var jayson=require(_0xbb04('0x20'));var client=jayson['client'][_0xbb04('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x14fb30,_0x4279ef,_0x47ca16,_0x5c48cb){return new BPromise(function(_0x7393be,_0x638b5a){var _0x236f2c=_0x5c48cb||client;return _0x236f2c[_0xbb04('0x22')](_0x14fb30,_0x47ca16)[_0xbb04('0x23')](function(_0x4fb273){logger[_0xbb04('0x24')]('ChatQueue,\x20%s,\x20%s',_0x4279ef,_0xbb04('0x25'));logger['debug'](_0xbb04('0x26'),_0x4279ef,_0xbb04('0x25'),JSON[_0xbb04('0x27')](_0x4fb273));if(_0x4fb273[_0xbb04('0x28')]){if(_0x4fb273[_0xbb04('0x28')][_0xbb04('0x29')]===0x1f4){logger[_0xbb04('0x28')](_0xbb04('0x2a'),_0x4279ef,_0x4fb273[_0xbb04('0x28')][_0xbb04('0x2b')]);return _0x638b5a(_0x4fb273[_0xbb04('0x28')][_0xbb04('0x2b')]);}logger['error']('ChatQueue,\x20%s,\x20%s',_0x4279ef,_0x4fb273['error'][_0xbb04('0x2b')]);return _0x7393be(_0x4fb273[_0xbb04('0x28')][_0xbb04('0x2b')]);}else{logger[_0xbb04('0x24')](_0xbb04('0x2a'),_0x4279ef,_0xbb04('0x25'));_0x7393be(_0x4fb273[_0xbb04('0x2c')][_0xbb04('0x2b')]);}})[_0xbb04('0x2d')](function(_0x1f4e57){logger[_0xbb04('0x28')]('ChatQueue,\x20%s,\x20%s',_0x4279ef,_0x1f4e57);_0x638b5a(_0x1f4e57);});});}function respondWithStatusCode(_0x2e8ebd,_0x2e57d5){_0x2e57d5=_0x2e57d5||0xcc;return function(_0x5e4c64){if(_0x5e4c64){return _0x2e8ebd['sendStatus'](_0x2e57d5);}return _0x2e8ebd[_0xbb04('0x2e')](_0x2e57d5)[_0xbb04('0x2f')]();};}function respondWithResult(_0x35be78,_0x29fd32){_0x29fd32=_0x29fd32||0xc8;return function(_0x3b324c){if(_0x3b324c){return _0x35be78[_0xbb04('0x2e')](_0x29fd32)[_0xbb04('0x30')](_0x3b324c);}};}function respondWithFilteredResult(_0x344a7e,_0x597360){return function(_0xfc3753){if(_0xfc3753){var _0x2e0702=typeof _0x597360[_0xbb04('0x31')]==='undefined'&&typeof _0x597360[_0xbb04('0x32')]===_0xbb04('0x33');var _0x3ec028=_0xfc3753['count'];var _0x120f01=_0x2e0702?0x0:_0x597360['offset'];var _0x5318c7=_0x2e0702?_0xfc3753[_0xbb04('0x34')]:_0x597360[_0xbb04('0x31')]+_0x597360['limit'];var _0x588e0e;if(_0x5318c7>=_0x3ec028){_0x5318c7=_0x3ec028;_0x588e0e=0xc8;}else{_0x588e0e=0xce;}_0x344a7e[_0xbb04('0x2e')](_0x588e0e);return _0x344a7e[_0xbb04('0x35')]('Content-Range',_0x120f01+'-'+_0x5318c7+'/'+_0x3ec028)[_0xbb04('0x30')](_0xfc3753);}return null;};}function patchUpdates(_0x9d50d5){return function(_0x5d66a8){try{jsonpatch[_0xbb04('0x36')](_0x5d66a8,_0x9d50d5,!![]);}catch(_0x3dde48){return BPromise[_0xbb04('0x37')](_0x3dde48);}return _0x5d66a8[_0xbb04('0x38')]();};}function saveUpdates(_0x17d782,_0x3b5975){return function(_0x212bb3){if(_0x212bb3){return _0x212bb3['update'](_0x17d782)[_0xbb04('0x23')](function(_0x4d29ec){return _0x4d29ec;});}return null;};}function removeEntity(_0xc3e6c3,_0x269eac){return function(_0x585756){if(_0x585756){return _0x585756[_0xbb04('0x39')]()[_0xbb04('0x23')](function(){var _0x5db92c=_0x585756[_0xbb04('0x3a')]({'plain':!![]});var _0x421776=_0xbb04('0x3b');return db[_0xbb04('0x3c')]['destroy']({'where':{'type':_0x421776,'resourceId':_0x5db92c['id']}})[_0xbb04('0x23')](function(){return _0x585756;});})[_0xbb04('0x23')](function(){_0xc3e6c3[_0xbb04('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a3618,_0x19e9fc){return function(_0x26b85a){if(!_0x26b85a){_0x3a3618[_0xbb04('0x3d')](0x194);}return _0x26b85a;};}function handleError(_0x5c8e5c,_0x5e1a03){_0x5e1a03=_0x5e1a03||0x1f4;return function(_0x36bdfb){logger[_0xbb04('0x28')](_0x36bdfb['stack']);if(_0x36bdfb[_0xbb04('0x3e')]){delete _0x36bdfb[_0xbb04('0x3e')];}_0x5c8e5c['status'](_0x5e1a03)[_0xbb04('0x3f')](_0x36bdfb);};}exports['index']=function(_0x5ed1f7,_0x3e1fdc){var _0x3c561f={},_0x14154c={},_0x5065ce={'count':0x0,'rows':[]};var _0x2dbdb6=_['map'](db[_0xbb04('0x40')][_0xbb04('0x41')],function(_0x36b2ba){return{'name':_0x36b2ba[_0xbb04('0x42')],'type':_0x36b2ba[_0xbb04('0x43')]['key']};});_0x14154c[_0xbb04('0x44')]=_['map'](_0x2dbdb6,_0xbb04('0x3e'));_0x14154c[_0xbb04('0x45')]=_['keys'](_0x5ed1f7[_0xbb04('0x45')]);_0x14154c[_0xbb04('0x46')]=_[_0xbb04('0x47')](_0x14154c[_0xbb04('0x44')],_0x14154c[_0xbb04('0x45')]);_0x3c561f[_0xbb04('0x48')]=_['intersection'](_0x14154c[_0xbb04('0x44')],qs['fields'](_0x5ed1f7[_0xbb04('0x45')]['fields']));_0x3c561f[_0xbb04('0x48')]=_0x3c561f[_0xbb04('0x48')]['length']?_0x3c561f[_0xbb04('0x48')]:_0x14154c[_0xbb04('0x44')];if(!_0x5ed1f7[_0xbb04('0x45')][_0xbb04('0x49')](_0xbb04('0x4a'))){_0x3c561f['limit']=qs[_0xbb04('0x32')](_0x5ed1f7['query']['limit']);_0x3c561f[_0xbb04('0x31')]=qs[_0xbb04('0x31')](_0x5ed1f7['query'][_0xbb04('0x31')]);}_0x3c561f['order']=qs['sort'](_0x5ed1f7[_0xbb04('0x45')]['sort']);_0x3c561f[_0xbb04('0x4b')]=qs[_0xbb04('0x46')](_[_0xbb04('0x4c')](_0x5ed1f7[_0xbb04('0x45')],_0x14154c[_0xbb04('0x46')]),_0x2dbdb6);if(_0x5ed1f7[_0xbb04('0x45')][_0xbb04('0x4d')]){_0x3c561f[_0xbb04('0x4b')]=_[_0xbb04('0x4e')](_0x3c561f['where'],{'$or':_['map'](_0x2dbdb6,function(_0x2e1a18){if(_0x2e1a18['type']!=='VIRTUAL'){var _0x1c55ee={};_0x1c55ee[_0x2e1a18['name']]={'$like':'%'+_0x5ed1f7[_0xbb04('0x45')][_0xbb04('0x4d')]+'%'};return _0x1c55ee;}})});}_0x3c561f=_[_0xbb04('0x4e')]({},_0x3c561f,_0x5ed1f7[_0xbb04('0x4f')]);var _0x4882e8={'where':_0x3c561f['where']};return db[_0xbb04('0x40')][_0xbb04('0x34')](_0x4882e8)[_0xbb04('0x23')](function(_0x5990ba){_0x5065ce[_0xbb04('0x34')]=_0x5990ba;if(_0x5ed1f7['query'][_0xbb04('0x50')]){_0x3c561f[_0xbb04('0x51')]=[{'all':!![]}];}return db['ChatQueue'][_0xbb04('0x52')](_0x3c561f);})[_0xbb04('0x23')](function(_0x2dcafa){_0x5065ce['rows']=_0x2dcafa;return _0x5065ce;})[_0xbb04('0x23')](respondWithFilteredResult(_0x3e1fdc,_0x3c561f))[_0xbb04('0x2d')](handleError(_0x3e1fdc,null));};exports[_0xbb04('0x53')]=function(_0x5d85b6,_0x47260b){var _0x406e5e={'raw':!![],'where':{'id':_0x5d85b6['params']['id']}},_0x274a1d={};_0x274a1d[_0xbb04('0x44')]=_[_0xbb04('0x54')](db['ChatQueue'][_0xbb04('0x41')]);_0x274a1d[_0xbb04('0x45')]=_[_0xbb04('0x54')](_0x5d85b6['query']);_0x274a1d['filters']=_[_0xbb04('0x47')](_0x274a1d[_0xbb04('0x44')],_0x274a1d['query']);_0x406e5e[_0xbb04('0x48')]=_[_0xbb04('0x47')](_0x274a1d[_0xbb04('0x44')],qs[_0xbb04('0x55')](_0x5d85b6['query'][_0xbb04('0x55')]));_0x406e5e[_0xbb04('0x48')]=_0x406e5e['attributes'][_0xbb04('0x56')]?_0x406e5e['attributes']:_0x274a1d[_0xbb04('0x44')];if(_0x5d85b6[_0xbb04('0x45')][_0xbb04('0x50')]){_0x406e5e['include']=[{'all':!![]}];}_0x406e5e=_[_0xbb04('0x4e')]({},_0x406e5e,_0x5d85b6[_0xbb04('0x4f')]);return db['ChatQueue'][_0xbb04('0x57')](_0x406e5e)['then'](handleEntityNotFound(_0x47260b,null))[_0xbb04('0x23')](respondWithResult(_0x47260b,null))[_0xbb04('0x2d')](handleError(_0x47260b,null));};exports[_0xbb04('0x58')]=function(_0x4c0c65,_0x55eb0f){return db[_0xbb04('0x40')][_0xbb04('0x58')](_0x4c0c65[_0xbb04('0x59')],{})[_0xbb04('0x23')](function(_0x2086b0){var _0x409393=_0x4c0c65[_0xbb04('0x5a')][_0xbb04('0x3a')]({'plain':!![]});if(!_0x409393)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x409393[_0xbb04('0x5b')]==='user'){var _0xcd192=_0x2086b0['get']({'plain':!![]});var _0x3a03df='ChatQueues';return db[_0xbb04('0x5c')][_0xbb04('0x57')]({'where':{'name':_0x3a03df,'userProfileId':_0x409393[_0xbb04('0x5d')]},'raw':!![]})[_0xbb04('0x23')](function(_0x3948ed){if(_0x3948ed&&_0x3948ed[_0xbb04('0x5e')]===0x0){return db[_0xbb04('0x3c')]['create']({'name':_0xcd192[_0xbb04('0x3e')],'resourceId':_0xcd192['id'],'type':_0x3948ed[_0xbb04('0x3e')],'sectionId':_0x3948ed['id']},{})['then'](function(){return _0x2086b0;});}else{return _0x2086b0;}})['catch'](function(_0x536d75){logger['error'](_0xbb04('0x5f'),_0x536d75);throw _0x536d75;});}return _0x2086b0;})['then'](respondWithResult(_0x55eb0f,0xc9))[_0xbb04('0x2d')](handleError(_0x55eb0f,null));};exports[_0xbb04('0x60')]=function(_0x98aa03,_0x8839ee){if(_0x98aa03[_0xbb04('0x59')]['id']){delete _0x98aa03[_0xbb04('0x59')]['id'];}return db['ChatQueue'][_0xbb04('0x57')]({'where':{'id':_0x98aa03[_0xbb04('0x61')]['id']}})['then'](handleEntityNotFound(_0x8839ee,null))[_0xbb04('0x23')](saveUpdates(_0x98aa03[_0xbb04('0x59')],null))['then'](respondWithResult(_0x8839ee,null))['catch'](handleError(_0x8839ee,null));};exports['destroy']=function(_0x3fc0a3,_0x270844){return db['ChatQueue'][_0xbb04('0x57')]({'where':{'id':_0x3fc0a3['params']['id']}})[_0xbb04('0x23')](handleEntityNotFound(_0x270844,null))[_0xbb04('0x23')](removeEntity(_0x270844,null))[_0xbb04('0x2d')](handleError(_0x270844,null));};exports[_0xbb04('0x62')]=function(_0x2dfa65,_0x4c0e10){return db['ChatQueue']['describe']()[_0xbb04('0x23')](respondWithResult(_0x4c0e10,null))['catch'](handleError(_0x4c0e10,null));};exports['getMembers']=function(_0xc19c1f,_0x4e6e1b,_0x35e683){var _0x3300b8={'raw':!![],'where':{}},_0x249503={},_0x446e80;return db[_0xbb04('0x40')][_0xbb04('0x63')]({'where':{'id':_0xc19c1f[_0xbb04('0x61')]['id']}})['then'](handleEntityNotFound(_0x4e6e1b,null))[_0xbb04('0x23')](function(_0x6c71fb){if(_0x6c71fb){_0x446e80=_0x6c71fb[_0xbb04('0x3a')]({'plain':!![]});_0x249503['model']=_[_0xbb04('0x54')](db[_0xbb04('0x64')]['rawAttributes']);_0x249503[_0xbb04('0x45')]=_[_0xbb04('0x54')](_0xc19c1f[_0xbb04('0x45')]);_0x249503[_0xbb04('0x46')]=_[_0xbb04('0x47')](_0x249503[_0xbb04('0x44')],_0x249503[_0xbb04('0x45')]);_0x3300b8[_0xbb04('0x48')]=_['intersection'](_0x249503[_0xbb04('0x44')],qs[_0xbb04('0x55')](_0xc19c1f[_0xbb04('0x45')][_0xbb04('0x55')]));_0x3300b8[_0xbb04('0x48')]=_0x3300b8[_0xbb04('0x48')][_0xbb04('0x56')]?_0x3300b8[_0xbb04('0x48')]:_0x249503[_0xbb04('0x44')];if(!_0xc19c1f[_0xbb04('0x45')][_0xbb04('0x49')](_0xbb04('0x4a'))){_0x3300b8[_0xbb04('0x32')]=qs['limit'](_0xc19c1f[_0xbb04('0x45')]['limit']);_0x3300b8[_0xbb04('0x31')]=qs[_0xbb04('0x31')](_0xc19c1f[_0xbb04('0x45')]['offset']);}_0x3300b8[_0xbb04('0x65')]=qs[_0xbb04('0x66')](_0xc19c1f[_0xbb04('0x45')]['sort']);_0x3300b8[_0xbb04('0x4b')]=qs['filters'](_[_0xbb04('0x4c')](_0xc19c1f['query'],_0x249503['filters']));_0x3300b8[_0xbb04('0x4b')][_0xbb04('0x67')]=_0x6c71fb['id'];if(_0xc19c1f[_0xbb04('0x45')]['filter']){_0x3300b8['where']=_[_0xbb04('0x4e')](_0x3300b8[_0xbb04('0x4b')],{'$or':_['map'](_0x3300b8[_0xbb04('0x48')],function(_0xcc83f8){var _0x26f48e={};_0x26f48e[_0xcc83f8]={'$like':'%'+_0xc19c1f[_0xbb04('0x45')][_0xbb04('0x4d')]+'%'};return _0x26f48e;})});}_0x3300b8=_['merge']({},_0x3300b8,_0xc19c1f[_0xbb04('0x4f')]);return db[_0xbb04('0x64')]['findAll'](_0x3300b8);}})[_0xbb04('0x23')](function(_0x42d17c){if(_0x42d17c){return db[_0xbb04('0x68')][_0xbb04('0x69')]({'where':{'id':_[_0xbb04('0x6a')](_0x42d17c,_0xbb04('0x6b')),'role':_0xbb04('0x6c')},'attributes':['id','name',_0xbb04('0x6d'),_0xbb04('0x6e'),'createdAt']});}})['then'](function(_0x236bae){if(_0x236bae){return{'count':_0x236bae[_0xbb04('0x34')],'rows':_['map'](_0x236bae[_0xbb04('0x6f')],function(_0x44cdea){return{'membername':_0x44cdea[_0xbb04('0x3e')],'UserId':_0x44cdea['id'],'queue_name':_0x446e80[_0xbb04('0x3e')],'ChatQueueId':_0x446e80['id'],'interface':util['format']('%s/%s',_0xbb04('0x70'),_0x44cdea['name']),'penalty':0x0,'paused':_0x44cdea[_0xbb04('0x6d')],'createdAt':_0x44cdea[_0xbb04('0x71')],'updatedAt':_0x44cdea['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xbb04('0x23')](respondWithFilteredResult(_0x4e6e1b,_0x3300b8))['catch'](handleError(_0x4e6e1b,null));};exports[_0xbb04('0x72')]=function(_0x2eb0c2,_0x31c07e,_0x1990ea){var _0x4433aa={};var _0x5bc3a7={};var _0x6cf5ee;var _0x30b419;return db[_0xbb04('0x40')]['findOne']({'where':{'id':_0x2eb0c2[_0xbb04('0x61')]['id']}})['then'](handleEntityNotFound(_0x31c07e,null))[_0xbb04('0x23')](function(_0x590389){if(_0x590389){_0x6cf5ee=_0x590389;_0x5bc3a7['model']=_[_0xbb04('0x54')](db[_0xbb04('0x73')][_0xbb04('0x41')]);_0x5bc3a7[_0xbb04('0x45')]=_[_0xbb04('0x54')](_0x2eb0c2['query']);_0x5bc3a7['filters']=_[_0xbb04('0x47')](_0x5bc3a7[_0xbb04('0x44')],_0x5bc3a7[_0xbb04('0x45')]);_0x4433aa[_0xbb04('0x48')]=_[_0xbb04('0x47')](_0x5bc3a7[_0xbb04('0x44')],qs[_0xbb04('0x55')](_0x2eb0c2['query'][_0xbb04('0x55')]));_0x4433aa[_0xbb04('0x48')]=_0x4433aa['attributes'][_0xbb04('0x56')]?_0x4433aa[_0xbb04('0x48')]:_0x5bc3a7['model'];_0x4433aa['order']=qs['sort'](_0x2eb0c2[_0xbb04('0x45')][_0xbb04('0x66')]);_0x4433aa[_0xbb04('0x4b')]=qs['filters'](_[_0xbb04('0x4c')](_0x2eb0c2[_0xbb04('0x45')],_0x5bc3a7[_0xbb04('0x46')]));if(_0x2eb0c2['query']['filter']){_0x4433aa[_0xbb04('0x4b')]=_[_0xbb04('0x4e')](_0x4433aa[_0xbb04('0x4b')],{'$or':_['map'](_0x4433aa[_0xbb04('0x48')],function(_0x39fb1f){var _0xad7662={};_0xad7662[_0x39fb1f]={'$like':'%'+_0x2eb0c2[_0xbb04('0x45')][_0xbb04('0x4d')]+'%'};return _0xad7662;})});}_0x4433aa=_[_0xbb04('0x4e')]({},_0x4433aa,_0x2eb0c2[_0xbb04('0x4f')]);return _0x6cf5ee[_0xbb04('0x72')](_0x4433aa);}})[_0xbb04('0x23')](function(_0x207b9f){if(_0x207b9f){_0x30b419=_0x207b9f[_0xbb04('0x56')];if(!_0x2eb0c2['query'][_0xbb04('0x49')](_0xbb04('0x4a'))){_0x4433aa['limit']=qs[_0xbb04('0x32')](_0x2eb0c2['query'][_0xbb04('0x32')]);_0x4433aa[_0xbb04('0x31')]=qs[_0xbb04('0x31')](_0x2eb0c2['query']['offset']);}return _0x6cf5ee[_0xbb04('0x72')](_0x4433aa);}})[_0xbb04('0x23')](function(_0x124035){if(_0x124035){return _0x124035?{'count':_0x30b419,'rows':_0x124035}:null;}})[_0xbb04('0x23')](respondWithResult(_0x31c07e,null))[_0xbb04('0x2d')](handleError(_0x31c07e,null));};exports[_0xbb04('0x74')]=function(_0x3f4d5d,_0x1f822c,_0x14bc4e){var _0x23f78d=_0x3f4d5d[_0xbb04('0x59')][_0xbb04('0x75')];return db[_0xbb04('0x73')][_0xbb04('0x52')]({'where':{'id':_0x23f78d},'attributes':['id'],'include':[{'model':db[_0xbb04('0x68')],'as':_0xbb04('0x76'),'attributes':['id','name',_0xbb04('0x77'),_0xbb04('0x78'),'interface'],'raw':!![]}]})[_0xbb04('0x23')](function(_0x37ca6b){if(_0x37ca6b){var _0x4f6bcc=_['flatMap'](_0x37ca6b,function(_0x98c173){var _0x242277=_0x98c173[_0xbb04('0x3a')]({'plain':!![]});return _0x242277[_0xbb04('0x76')];});return db[_0xbb04('0x40')][_0xbb04('0x57')]({'where':{'id':_0x3f4d5d[_0xbb04('0x61')]['id']}})[_0xbb04('0x23')](function(_0x14f955){return db['sequelize'][_0xbb04('0x79')](function(_0x52ffe9){return _0x14f955[_0xbb04('0x74')](_0x23f78d,{'transaction':_0x52ffe9})[_0xbb04('0x23')](function(){return BPromise['each'](_0x4f6bcc,function(_0x46c3dc){return db['UserChatQueue'][_0xbb04('0x7a')]({'where':{'UserId':_0x46c3dc['id'],'ChatQueueId':_0x3f4d5d[_0xbb04('0x61')]['id']},'transaction':_0x52ffe9});});})[_0xbb04('0x23')](function(){_0x4f6bcc[_0xbb04('0x7b')](function(_0x1821ab){socket['emit'](_0xbb04('0x7c'),{'UserId':_0x1821ab['id'],'ChatQueueId':_0x14f955['id']});});});});});}})[_0xbb04('0x23')](respondWithStatusCode(_0x1f822c,null))['catch'](handleError(_0x1f822c,null));};exports[_0xbb04('0x7d')]=function(_0x17ffa6,_0x418db8,_0x3c76b0){return db[_0xbb04('0x73')][_0xbb04('0x52')]({'where':{'id':_0x17ffa6[_0xbb04('0x45')][_0xbb04('0x75')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xbb04('0x76'),'attributes':['id'],'raw':!![]}]})[_0xbb04('0x23')](handleEntityNotFound(_0x418db8,null))[_0xbb04('0x23')](function(_0x54355f){var _0x338266=_[_0xbb04('0x6a')](_0x54355f,'id');var _0x216868=[];var _0x308cfc=[];var _0x44e7fe=squel[_0xbb04('0x7e')]();_0x44e7fe['field'](_0xbb04('0x7f'))[_0xbb04('0x80')](_0xbb04('0x81'),'tq')['join'](_0xbb04('0x82'),'ut',_0xbb04('0x83'))['where']('ChatQueueId\x20=\x20?',_0x17ffa6[_0xbb04('0x61')]['id']);for(var _0x34aa6=0x0;_0x34aa6<_0x54355f[_0xbb04('0x56')];_0x34aa6+=0x1){let _0x2153b1=_0x54355f[_0x34aa6];for(var _0x2cae0d=0x0;_0x2cae0d<_0x2153b1[_0xbb04('0x76')][_0xbb04('0x56')];_0x2cae0d+=0x1){let _0x5716df=_0x2153b1['Agents'][_0x2cae0d];var _0x242313=_0x44e7fe[_0xbb04('0x84')]();_0x242313[_0xbb04('0x4b')](_0xbb04('0x85'),_0x5716df['id']);_0x308cfc['push'](db[_0xbb04('0x86')][_0xbb04('0x45')](_0x242313['toString'](),{'type':db[_0xbb04('0x86')][_0xbb04('0x87')][_0xbb04('0x88')]})[_0xbb04('0x23')](function(_0x1045a6){if(_0x1045a6[_0xbb04('0x56')]===0x1){return _0x5716df['id'];}else{var _0xf270db=_[_0xbb04('0x89')](_[_0xbb04('0x6a')](_0x1045a6,_0xbb04('0x8a')),function(_0x19d218){return _[_0xbb04('0x8b')](_0x338266,_0x19d218);});if(_0xf270db){return _0x5716df['id'];}}}));}}return BPromise[_0xbb04('0x8c')](_0x308cfc)[_0xbb04('0x23')](function(_0xbe3076){_0x216868=_(_0x216868)[_0xbb04('0x8d')](_0xbe3076)[_0xbb04('0x8e')]()['value']();return db[_0xbb04('0x40')][_0xbb04('0x57')]({'where':{'id':_0x17ffa6['params']['id']}})[_0xbb04('0x23')](function(_0x3a0e0c){return db[_0xbb04('0x86')][_0xbb04('0x79')](function(_0x8c16d9){return _0x3a0e0c[_0xbb04('0x7d')](_0x17ffa6['query'][_0xbb04('0x75')],{'transaction':_0x8c16d9})['then'](function(){if(!_[_0xbb04('0x8f')](_0x216868)){return _0x3a0e0c[_0xbb04('0x90')](_0x216868,{'transaction':_0x8c16d9});}})[_0xbb04('0x23')](function(){_0x216868[_0xbb04('0x7b')](function(_0x51f947){socket[_0xbb04('0x91')](_0xbb04('0x92'),{'UserId':_0x51f947,'ChatQueueId':_0x3a0e0c['id']});});});});});});})[_0xbb04('0x23')](respondWithStatusCode(_0x418db8,null))[_0xbb04('0x2d')](handleError(_0x418db8,null));};exports[_0xbb04('0x93')]=function(_0x388b3f,_0x349cbb,_0x4eb01d){return db[_0xbb04('0x40')][_0xbb04('0x57')]({'where':{'id':_0x388b3f[_0xbb04('0x61')]['id']}})['then'](handleEntityNotFound(_0x349cbb,null))['then'](function(_0x357466){if(_0x357466){return _0x357466[_0xbb04('0x93')](_0x388b3f[_0xbb04('0x59')]['ids'],_['omit'](_0x388b3f['body'],['ids','id'])||{})[_0xbb04('0x94')](function(_0x230dfa){for(var _0x3dacc9=0x0;_0x3dacc9<_0x388b3f['body'][_0xbb04('0x75')][_0xbb04('0x56')];_0x3dacc9+=0x1){socket[_0xbb04('0x91')]('userChatQueue:save',{'UserId':Number(_0x388b3f[_0xbb04('0x59')][_0xbb04('0x75')][_0x3dacc9]),'ChatQueueId':Number(_0x388b3f[_0xbb04('0x61')]['id'])});}return _0x230dfa;});}})['then'](respondWithResult(_0x349cbb,null))['catch'](handleError(_0x349cbb,null));};exports[_0xbb04('0x90')]=function(_0x401e63,_0x529a62,_0xebb091){return db['ChatQueue'][_0xbb04('0x57')]({'where':{'id':_0x401e63[_0xbb04('0x61')]['id']}})[_0xbb04('0x23')](handleEntityNotFound(_0x529a62,null))[_0xbb04('0x23')](function(_0xd04b32){if(_0xd04b32){return _0xd04b32[_0xbb04('0x90')](_0x401e63[_0xbb04('0x45')][_0xbb04('0x75')])[_0xbb04('0x23')](function(){if(_['isArray'](_0x401e63[_0xbb04('0x45')][_0xbb04('0x75')])){for(var _0x73ebf9=0x0;_0x73ebf9<_0x401e63[_0xbb04('0x45')]['ids'][_0xbb04('0x56')];_0x73ebf9+=0x1){socket[_0xbb04('0x91')](_0xbb04('0x92'),{'UserId':Number(_0x401e63[_0xbb04('0x45')]['ids'][_0x73ebf9]),'ChatQueueId':Number(_0x401e63['params']['id'])});}}else{socket[_0xbb04('0x91')](_0xbb04('0x92'),{'UserId':Number(_0x401e63[_0xbb04('0x45')]['ids']),'ChatQueueId':Number(_0x401e63[_0xbb04('0x61')]['id'])});}});}})[_0xbb04('0x23')](respondWithStatusCode(_0x529a62,null))[_0xbb04('0x2d')](handleError(_0x529a62,null));};exports[_0xbb04('0x95')]=function(_0x973abc,_0x3a0667,_0x5c534b){var _0x48e2de={};var _0x3b798a={};var _0x4078ae;var _0x318a04;return db[_0xbb04('0x40')][_0xbb04('0x63')]({'where':{'id':_0x973abc[_0xbb04('0x61')]['id']}})[_0xbb04('0x23')](handleEntityNotFound(_0x3a0667,null))[_0xbb04('0x23')](function(_0x56bdc3){if(_0x56bdc3){_0x4078ae=_0x56bdc3;_0x3b798a[_0xbb04('0x44')]=_[_0xbb04('0x54')](db[_0xbb04('0x68')][_0xbb04('0x41')]);_0x3b798a[_0xbb04('0x45')]=_[_0xbb04('0x54')](_0x973abc[_0xbb04('0x45')]);_0x3b798a[_0xbb04('0x46')]=_[_0xbb04('0x47')](_0x3b798a['model'],_0x3b798a[_0xbb04('0x45')]);_0x48e2de[_0xbb04('0x48')]=_[_0xbb04('0x47')](_0x3b798a[_0xbb04('0x44')],qs[_0xbb04('0x55')](_0x973abc[_0xbb04('0x45')][_0xbb04('0x55')]));_0x48e2de['attributes']=_0x48e2de['attributes'][_0xbb04('0x56')]?_0x48e2de['attributes']:_0x3b798a[_0xbb04('0x44')];_0x48e2de[_0xbb04('0x65')]=qs[_0xbb04('0x66')](_0x973abc[_0xbb04('0x45')][_0xbb04('0x66')]);_0x48e2de[_0xbb04('0x4b')]=qs[_0xbb04('0x46')](_[_0xbb04('0x4c')](_0x973abc[_0xbb04('0x45')],_0x3b798a[_0xbb04('0x46')]));if(_0x973abc['query'][_0xbb04('0x4d')]){_0x48e2de['where']=_[_0xbb04('0x4e')](_0x48e2de[_0xbb04('0x4b')],{'$or':_[_0xbb04('0x6a')](_0x48e2de[_0xbb04('0x48')],function(_0x25e25d){var _0x576566={};_0x576566[_0x25e25d]={'$like':'%'+_0x973abc['query'][_0xbb04('0x4d')]+'%'};return _0x576566;})});}_0x48e2de=_[_0xbb04('0x4e')]({},_0x48e2de,_0x973abc[_0xbb04('0x4f')]);return _0x4078ae[_0xbb04('0x95')](_0x48e2de);}})['then'](function(_0xc51a48){if(_0xc51a48){_0x318a04=_0xc51a48[_0xbb04('0x56')];if(!_0x973abc['query'][_0xbb04('0x49')](_0xbb04('0x4a'))){_0x48e2de[_0xbb04('0x32')]=qs[_0xbb04('0x32')](_0x973abc[_0xbb04('0x45')]['limit']);_0x48e2de[_0xbb04('0x31')]=qs['offset'](_0x973abc[_0xbb04('0x45')]['offset']);}return _0x4078ae[_0xbb04('0x95')](_0x48e2de);}})[_0xbb04('0x23')](function(_0x1e5b8d){if(_0x1e5b8d){return _0x1e5b8d?{'count':_0x318a04,'rows':_0x1e5b8d}:null;}})[_0xbb04('0x23')](respondWithResult(_0x3a0667,null))[_0xbb04('0x2d')](handleError(_0x3a0667,null));};
\ No newline at end of file
index c6180bc..d04be4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba92=['hasOwnProperty','hook','events','../../mysqldb','ChatQueue','update','remove','emit'];(function(_0x24841e,_0x5aeddc){var _0x5ed3e7=function(_0x4ad5e4){while(--_0x4ad5e4){_0x24841e['push'](_0x24841e['shift']());}};_0x5ed3e7(++_0x5aeddc);}(_0xba92,0x1e2));var _0x2ba9=function(_0x2e3876,_0x5b19d){_0x2e3876=_0x2e3876-0x0;var _0x12b466=_0xba92[_0x2e3876];return _0x12b466;};'use strict';var EventEmitter=require(_0x2ba9('0x0'));var ChatQueue=require(_0x2ba9('0x1'))['db'][_0x2ba9('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2ba9('0x3'),'afterDestroy':_0x2ba9('0x4')};function emitEvent(_0x53c796){return function(_0x42d198,_0x33493b,_0x10d27c){ChatQueueEvents[_0x2ba9('0x5')](_0x53c796+':'+_0x42d198['id'],_0x42d198);ChatQueueEvents[_0x2ba9('0x5')](_0x53c796,_0x42d198);_0x10d27c(null);};}for(var e in events){if(events[_0x2ba9('0x6')](e)){var event=events[e];ChatQueue[_0x2ba9('0x7')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0x7f4c=['exports','events','ChatQueue','save','remove','emit','hook'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7f4c,0x1eb));var _0xc7f4=function(_0x263ab1,_0x3c8a27){_0x263ab1=_0x263ab1-0x0;var _0x51fd64=_0x7f4c[_0x263ab1];return _0x51fd64;};'use strict';var EventEmitter=require(_0xc7f4('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xc7f4('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc7f4('0x2'),'afterUpdate':'update','afterDestroy':_0xc7f4('0x3')};function emitEvent(_0x4f7f76){return function(_0x334fcc,_0x4a3e8d,_0x40e8e5){ChatQueueEvents[_0xc7f4('0x4')](_0x4f7f76+':'+_0x334fcc['id'],_0x334fcc);ChatQueueEvents[_0xc7f4('0x4')](_0x4f7f76,_0x334fcc);_0x40e8e5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xc7f4('0x5')](e,emitEvent(event));}}module[_0xc7f4('0x6')]=ChatQueueEvents;
\ No newline at end of file
index 4f88808..46b68b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88a9=['moment','path','rimraf','../../config/environment','./chatQueue.attributes','define','chat_queues','lodash','util','../../config/logger','api'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x88a9,0xcd));var _0x988a=function(_0xe4827,_0x19c922){_0xe4827=_0xe4827-0x0;var _0xfde1af=_0x88a9[_0xe4827];return _0xfde1af;};'use strict';var _=require(_0x988a('0x0'));var util=require(_0x988a('0x1'));var logger=require(_0x988a('0x2'))(_0x988a('0x3'));var moment=require(_0x988a('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x988a('0x5'));var rimraf=require(_0x988a('0x6'));var config=require(_0x988a('0x7'));var attributes=require(_0x988a('0x8'));module['exports']=function(_0x1301f6,_0x3563e4){return _0x1301f6[_0x988a('0x9')]('ChatQueue',attributes,{'tableName':_0x988a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x219f=['exports','define','lodash','util','../../config/logger','api','moment','bluebird','path','./chatQueue.attributes'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x219f,0x1e2));var _0xf219=function(_0x5f47d7,_0xb3aaec){_0x5f47d7=_0x5f47d7-0x0;var _0x5951b0=_0x219f[_0x5f47d7];return _0x5951b0;};'use strict';var _=require(_0xf219('0x0'));var util=require(_0xf219('0x1'));var logger=require(_0xf219('0x2'))(_0xf219('0x3'));var moment=require(_0xf219('0x4'));var BPromise=require(_0xf219('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf219('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf219('0x7'));module[_0xf219('0x8')]=function(_0x2e2090,_0x3a80dc){return _0x2e2090[_0xf219('0x9')]('ChatQueue',attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69e9248..d12c2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ae=['catch','ChatQueue','findAll','options','attributes','limit','include','model','map','GetChatQueue','ShowChatQueue','find','raw','where','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0x13ae,0xe6));var _0xe13a=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x13ae[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe13a('0x0'));var fs=require('fs');var Redis=require(_0xe13a('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe13a('0x2'))('rpc');var config=require(_0xe13a('0x3'));var jayson=require(_0xe13a('0x4'));var client=jayson[_0xe13a('0x5')][_0xe13a('0x6')]({'port':0x232a});config[_0xe13a('0x7')]=_[_0xe13a('0x8')](config[_0xe13a('0x7')],{'host':_0xe13a('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe13a('0xa'))[_0xe13a('0xb')](socket);function respondWithRpcPromise(_0x12f549,_0x10477a,_0x11b623){return new BPromise(function(_0x4b0b03,_0x88125){return client[_0xe13a('0xc')](_0x12f549,_0x11b623)[_0xe13a('0xd')](function(_0x3a993f){logger[_0xe13a('0xe')](_0xe13a('0xf'),_0x10477a,_0xe13a('0x10'));logger[_0xe13a('0x11')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x10477a,_0xe13a('0x10'),JSON[_0xe13a('0x12')](_0x3a993f));if(_0x3a993f[_0xe13a('0x13')]){if(_0x3a993f[_0xe13a('0x13')][_0xe13a('0x14')]===0x1f4){logger[_0xe13a('0x13')](_0xe13a('0xf'),_0x10477a,_0x3a993f['error']['message']);return _0x88125(_0x3a993f[_0xe13a('0x13')][_0xe13a('0x15')]);}logger[_0xe13a('0x13')](_0xe13a('0xf'),_0x10477a,_0x3a993f[_0xe13a('0x13')][_0xe13a('0x15')]);return _0x4b0b03(_0x3a993f[_0xe13a('0x13')][_0xe13a('0x15')]);}else{logger[_0xe13a('0xe')](_0xe13a('0xf'),_0x10477a,_0xe13a('0x10'));_0x4b0b03(_0x3a993f['result'][_0xe13a('0x15')]);}})[_0xe13a('0x16')](function(_0x5688aa){logger[_0xe13a('0x13')](_0xe13a('0xf'),_0x10477a,_0x5688aa);_0x88125(_0x5688aa);});});}exports['GetChatQueue']=function(_0x21e8c3){var _0x31bccb=this;return new Promise(function(_0x21404e,_0x4489bd){return db[_0xe13a('0x17')][_0xe13a('0x18')]({'raw':_0x21e8c3[_0xe13a('0x19')]?_0x21e8c3[_0xe13a('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x21e8c3['options']?_0x21e8c3[_0xe13a('0x19')]['where']||null:null,'attributes':_0x21e8c3[_0xe13a('0x19')]?_0x21e8c3[_0xe13a('0x19')][_0xe13a('0x1a')]||null:null,'limit':_0x21e8c3[_0xe13a('0x19')]?_0x21e8c3[_0xe13a('0x19')][_0xe13a('0x1b')]||null:null,'include':_0x21e8c3['options']?_0x21e8c3[_0xe13a('0x19')]['include']?_['map'](_0x21e8c3[_0xe13a('0x19')][_0xe13a('0x1c')],function(_0x43b238){return{'model':db[_0x43b238[_0xe13a('0x1d')]],'as':_0x43b238['as'],'attributes':_0x43b238[_0xe13a('0x1a')],'include':_0x43b238[_0xe13a('0x1c')]?_['map'](_0x43b238['include'],function(_0x562360){return{'model':db[_0x562360[_0xe13a('0x1d')]],'as':_0x562360['as'],'attributes':_0x562360[_0xe13a('0x1a')],'include':_0x562360[_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x562360['include'],function(_0x502bff){return{'model':db[_0x502bff[_0xe13a('0x1d')]],'as':_0x502bff['as'],'attributes':_0x502bff[_0xe13a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe13a('0xd')](function(_0x55e77d){logger[_0xe13a('0xe')]('GetChatQueue',_0x21e8c3);logger[_0xe13a('0x11')](_0xe13a('0x1f'),_0x21e8c3,JSON[_0xe13a('0x12')](_0x55e77d));_0x21404e(_0x55e77d);})[_0xe13a('0x16')](function(_0x425208){logger[_0xe13a('0x13')]('GetChatQueue',_0x425208['message'],_0x21e8c3);_0x4489bd(_0x31bccb['error'](0x1f4,_0x425208[_0xe13a('0x15')]));});});};exports[_0xe13a('0x20')]=function(_0x569792){var _0x450ab6=this;return new Promise(function(_0x250ad2,_0x1194e4){return db['ChatQueue'][_0xe13a('0x21')]({'raw':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x22')]===undefined?!![]:![]:!![],'where':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x23')]||null:null,'attributes':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x1a')]||null:null,'include':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x569792[_0xe13a('0x19')][_0xe13a('0x1c')],function(_0x2e9589){return{'model':db[_0x2e9589[_0xe13a('0x1d')]],'as':_0x2e9589['as'],'attributes':_0x2e9589['attributes'],'include':_0x2e9589[_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x2e9589[_0xe13a('0x1c')],function(_0x1ab27d){return{'model':db[_0x1ab27d['model']],'as':_0x1ab27d['as'],'attributes':_0x1ab27d[_0xe13a('0x1a')],'include':_0x1ab27d[_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x1ab27d[_0xe13a('0x1c')],function(_0x4bbf9b){return{'model':db[_0x4bbf9b[_0xe13a('0x1d')]],'as':_0x4bbf9b['as'],'attributes':_0x4bbf9b[_0xe13a('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d67bc){logger[_0xe13a('0xe')](_0xe13a('0x20'),_0x569792);logger[_0xe13a('0x11')](_0xe13a('0x20'),_0x569792,JSON[_0xe13a('0x12')](_0x5d67bc));_0x250ad2(_0x5d67bc);})[_0xe13a('0x16')](function(_0x201067){logger[_0xe13a('0x13')]('ShowChatQueue',_0x201067['message'],_0x569792);_0x1194e4(_0x450ab6[_0xe13a('0x13')](0x1f4,_0x201067[_0xe13a('0x15')]));});});};
\ No newline at end of file
+var _0x20d8=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','register','request','then','info','ChatQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowChatQueue','find','lodash','util'];(function(_0x2a2a9d,_0x105242){var _0x1c2dc2=function(_0x332d60){while(--_0x332d60){_0x2a2a9d['push'](_0x2a2a9d['shift']());}};_0x1c2dc2(++_0x105242);}(_0x20d8,0xee));var _0x820d=function(_0x2f8ac0,_0x2677b6){_0x2f8ac0=_0x2f8ac0-0x0;var _0x4750b7=_0x20d8[_0x2f8ac0];return _0x4750b7;};'use strict';var _=require(_0x820d('0x0'));var util=require(_0x820d('0x1'));var moment=require(_0x820d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x820d('0x3'));var db=require(_0x820d('0x4'))['db'];var utils=require(_0x820d('0x5'));var logger=require(_0x820d('0x6'))(_0x820d('0x7'));var config=require('../../config/environment');var jayson=require(_0x820d('0x8'));var client=jayson[_0x820d('0x9')][_0x820d('0xa')]({'port':0x232a});config['redis']=_[_0x820d('0xb')](config[_0x820d('0xc')],{'host':_0x820d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x820d('0xc')]));require('./chatQueue.socket')[_0x820d('0xe')](socket);function respondWithRpcPromise(_0x49c4d5,_0x5d1607,_0x801013){return new BPromise(function(_0x55c06f,_0x3af4e4){return client[_0x820d('0xf')](_0x49c4d5,_0x801013)[_0x820d('0x10')](function(_0x5724e9){logger[_0x820d('0x11')](_0x820d('0x12'),_0x5d1607,'request\x20sent');logger[_0x820d('0x13')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x5d1607,_0x820d('0x14'),JSON[_0x820d('0x15')](_0x5724e9));if(_0x5724e9[_0x820d('0x16')]){if(_0x5724e9[_0x820d('0x16')][_0x820d('0x17')]===0x1f4){logger[_0x820d('0x16')]('ChatQueue,\x20%s,\x20%s',_0x5d1607,_0x5724e9['error'][_0x820d('0x18')]);return _0x3af4e4(_0x5724e9['error'][_0x820d('0x18')]);}logger[_0x820d('0x16')](_0x820d('0x12'),_0x5d1607,_0x5724e9['error'][_0x820d('0x18')]);return _0x55c06f(_0x5724e9[_0x820d('0x16')][_0x820d('0x18')]);}else{logger[_0x820d('0x11')](_0x820d('0x12'),_0x5d1607,_0x820d('0x14'));_0x55c06f(_0x5724e9[_0x820d('0x19')][_0x820d('0x18')]);}})[_0x820d('0x1a')](function(_0xa00407){logger[_0x820d('0x16')](_0x820d('0x12'),_0x5d1607,_0xa00407);_0x3af4e4(_0xa00407);});});}exports[_0x820d('0x1b')]=function(_0x35520c){var _0xf9945e=this;return new Promise(function(_0x27d50d,_0x30ec53){return db[_0x820d('0x1c')][_0x820d('0x1d')]({'raw':_0x35520c['options']?_0x35520c[_0x820d('0x1e')][_0x820d('0x1f')]===undefined?!![]:![]:!![],'where':_0x35520c['options']?_0x35520c[_0x820d('0x1e')][_0x820d('0x20')]||null:null,'attributes':_0x35520c[_0x820d('0x1e')]?_0x35520c[_0x820d('0x1e')][_0x820d('0x21')]||null:null,'limit':_0x35520c[_0x820d('0x1e')]?_0x35520c[_0x820d('0x1e')][_0x820d('0x22')]||null:null,'include':_0x35520c[_0x820d('0x1e')]?_0x35520c[_0x820d('0x1e')]['include']?_[_0x820d('0x23')](_0x35520c['options'][_0x820d('0x24')],function(_0x16fbf0){return{'model':db[_0x16fbf0[_0x820d('0x25')]],'as':_0x16fbf0['as'],'attributes':_0x16fbf0[_0x820d('0x21')],'include':_0x16fbf0[_0x820d('0x24')]?_[_0x820d('0x23')](_0x16fbf0[_0x820d('0x24')],function(_0x582010){return{'model':db[_0x582010[_0x820d('0x25')]],'as':_0x582010['as'],'attributes':_0x582010[_0x820d('0x21')],'include':_0x582010[_0x820d('0x24')]?_['map'](_0x582010[_0x820d('0x24')],function(_0x5a0697){return{'model':db[_0x5a0697[_0x820d('0x25')]],'as':_0x5a0697['as'],'attributes':_0x5a0697[_0x820d('0x21')]};}):[]};}):[]};}):[]:[]})[_0x820d('0x10')](function(_0x4e8f59){logger['info'](_0x820d('0x1b'),_0x35520c);logger[_0x820d('0x13')]('GetChatQueue',_0x35520c,JSON['stringify'](_0x4e8f59));_0x27d50d(_0x4e8f59);})[_0x820d('0x1a')](function(_0x215872){logger['error'](_0x820d('0x1b'),_0x215872[_0x820d('0x18')],_0x35520c);_0x30ec53(_0xf9945e[_0x820d('0x16')](0x1f4,_0x215872['message']));});});};exports[_0x820d('0x26')]=function(_0x597a9a){var _0x5ca5b1=this;return new Promise(function(_0x4d2b5e,_0xaa2295){return db[_0x820d('0x1c')][_0x820d('0x27')]({'raw':_0x597a9a['options']?_0x597a9a[_0x820d('0x1e')][_0x820d('0x1f')]===undefined?!![]:![]:!![],'where':_0x597a9a['options']?_0x597a9a[_0x820d('0x1e')]['where']||null:null,'attributes':_0x597a9a[_0x820d('0x1e')]?_0x597a9a[_0x820d('0x1e')][_0x820d('0x21')]||null:null,'include':_0x597a9a['options']?_0x597a9a[_0x820d('0x1e')]['include']?_[_0x820d('0x23')](_0x597a9a[_0x820d('0x1e')][_0x820d('0x24')],function(_0x17a216){return{'model':db[_0x17a216[_0x820d('0x25')]],'as':_0x17a216['as'],'attributes':_0x17a216['attributes'],'include':_0x17a216[_0x820d('0x24')]?_['map'](_0x17a216[_0x820d('0x24')],function(_0x2f0c6b){return{'model':db[_0x2f0c6b['model']],'as':_0x2f0c6b['as'],'attributes':_0x2f0c6b[_0x820d('0x21')],'include':_0x2f0c6b['include']?_[_0x820d('0x23')](_0x2f0c6b['include'],function(_0x58af10){return{'model':db[_0x58af10[_0x820d('0x25')]],'as':_0x58af10['as'],'attributes':_0x58af10[_0x820d('0x21')]};}):[]};}):[]};}):[]:[]})[_0x820d('0x10')](function(_0x22dd32){logger['info'](_0x820d('0x26'),_0x597a9a);logger[_0x820d('0x13')]('ShowChatQueue',_0x597a9a,JSON['stringify'](_0x22dd32));_0x4d2b5e(_0x22dd32);})[_0x820d('0x1a')](function(_0x44b8aa){logger[_0x820d('0x16')](_0x820d('0x26'),_0x44b8aa[_0x820d('0x18')],_0x597a9a);_0xaa2295(_0x5ca5b1[_0x820d('0x16')](0x1f4,_0x44b8aa[_0x820d('0x18')]));});});};
\ No newline at end of file
index 25dd772..32cf633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['./chatQueue.events','save','emit','length'];(function(_0xf8bc91,_0x40aa22){var _0x543420=function(_0xb137){while(--_0xb137){_0xf8bc91['push'](_0xf8bc91['shift']());}};_0x543420(++_0x40aa22);}(_0x4b84,0x1cc));var _0x44b8=function(_0x55cc58,_0x5ce0af){_0x55cc58=_0x55cc58-0x0;var _0x26062e=_0x4b84[_0x55cc58];return _0x26062e;};'use strict';var ChatQueueEvents=require(_0x44b8('0x0'));var events=[_0x44b8('0x1'),'remove','update'];function createListener(_0x765943,_0x519db3){return function(_0x4b8ad8){_0x519db3[_0x44b8('0x2')](_0x765943,_0x4b8ad8);};}function removeListener(_0x31282a,_0x39ad16){return function(){ChatQueueEvents['removeListener'](_0x31282a,_0x39ad16);};}exports['register']=function(_0x55f25d){for(var _0x996a8b=0x0,_0x54274b=events[_0x44b8('0x3')];_0x996a8b<_0x54274b;_0x996a8b++){var _0x5947f7=events[_0x996a8b];var _0x3e87c5=createListener('chatQueue:'+_0x5947f7,_0x55f25d);ChatQueueEvents['on'](_0x5947f7,_0x3e87c5);}};
\ No newline at end of file
+var _0x29d4=['removeListener','register','length','./chatQueue.events','remove','update'];(function(_0x2b4776,_0x214f31){var _0x5d7745=function(_0x298195){while(--_0x298195){_0x2b4776['push'](_0x2b4776['shift']());}};_0x5d7745(++_0x214f31);}(_0x29d4,0x1a1));var _0x429d=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x29d4[_0x37c22c];return _0x119d79;};'use strict';var ChatQueueEvents=require(_0x429d('0x0'));var events=['save',_0x429d('0x1'),_0x429d('0x2')];function createListener(_0x16ce75,_0x472fc9){return function(_0x45df1c){_0x472fc9['emit'](_0x16ce75,_0x45df1c);};}function removeListener(_0xc3989d,_0x3f43f5){return function(){ChatQueueEvents[_0x429d('0x3')](_0xc3989d,_0x3f43f5);};}exports[_0x429d('0x4')]=function(_0x1c55aa){for(var _0xa71445=0x0,_0x56aa2f=events[_0x429d('0x5')];_0xa71445<_0x56aa2f;_0xa71445++){var _0x4befb9=events[_0xa71445];var _0x9fc337=createListener('chatQueue:'+_0x4befb9,_0x1c55aa);ChatQueueEvents['on'](_0x4befb9,_0x9fc337);}};
\ No newline at end of file
index 8087787..c006c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x318b2e,_0x41e795){var _0x3609bd=function(_0x4d2423){while(--_0x4d2423){_0x318b2e['push'](_0x318b2e['shift']());}};_0x3609bd(++_0x41e795);}(_0xe14b,0x93));var _0xbe14=function(_0x1844ac,_0x1faf3e){_0x1844ac=_0x1844ac-0x0;var _0x2230cd=_0xe14b[_0x1844ac];return _0x2230cd;};'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['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
+var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3e74,0x175));var _0x43e7=function(_0x122d33,_0x2644f6){_0x122d33=_0x122d33-0x0;var _0x2470c2=_0x3e74[_0x122d33];return _0x2470c2;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router;
\ No newline at end of file
index 093a568..170afa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe8e=['STRING','DATE','sequelize'];(function(_0x32e685,_0x3bcb0d){var _0x49652f=function(_0x17a7e6){while(--_0x17a7e6){_0x32e685['push'](_0x32e685['shift']());}};_0x49652f(++_0x3bcb0d);}(_0xfe8e,0x197));var _0xefe8=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0xfe8e[_0x710815];return _0x5b3b89;};'use strict';var moment=require('moment');var Sequelize=require(_0xefe8('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xefe8('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xefe8('0x1')]},'joinAt':{'type':Sequelize[_0xefe8('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xefe8('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xefe8('0x1')]}};
\ No newline at end of file
+var _0x0e4b=['STRING','moment','exports','DATE'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0x0e4b,0x1d1));var _0xb0e4=function(_0x339263,_0x1afc90){_0x339263=_0x339263-0x0;var _0x460930=_0x0e4b[_0x339263];return _0x460930;};'use strict';var moment=require(_0xb0e4('0x0'));var Sequelize=require('sequelize');module[_0xb0e4('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xb0e4('0x2')]},'leaveAt':{'type':Sequelize[_0xb0e4('0x2')]},'acceptAt':{'type':Sequelize[_0xb0e4('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xb0e4('0x3')]}};
\ No newline at end of file
index 691c17e..c69f81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1410=['eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','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','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','find','catch','create','body','params','describe'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x1410,0x130));var _0x0141=function(_0x50d83c,_0x2cea1d){_0x50d83c=_0x50d83c-0x0;var _0x12f92f=_0x1410[_0x50d83c];return _0x12f92f;};'use strict';var emlformat=require(_0x0141('0x0'));var rimraf=require(_0x0141('0x1'));var zipdir=require(_0x0141('0x2'));var jsonpatch=require(_0x0141('0x3'));var rp=require('request-promise');var moment=require(_0x0141('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0141('0x5'));var util=require('util');var path=require(_0x0141('0x6'));var sox=require(_0x0141('0x7'));var csv=require(_0x0141('0x8'));var ejs=require(_0x0141('0x9'));var fs=require('fs');var fs_extra=require(_0x0141('0xa'));var _=require(_0x0141('0xb'));var squel=require(_0x0141('0xc'));var crypto=require(_0x0141('0xd'));var jsforce=require(_0x0141('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0141('0x8'));var querystring=require(_0x0141('0xf'));var Papa=require(_0x0141('0x10'));var Redis=require(_0x0141('0x11'));var authService=require(_0x0141('0x12'));var qs=require(_0x0141('0x13'));var as=require(_0x0141('0x14'));var hardwareService=require(_0x0141('0x15'));var logger=require('../../config/logger')(_0x0141('0x16'));var utils=require(_0x0141('0x17'));var config=require(_0x0141('0x18'));var licenseUtil=require(_0x0141('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49cebd,_0xab59e3){_0xab59e3=_0xab59e3||0xcc;return function(_0x25aefb){if(_0x25aefb){return _0x49cebd['sendStatus'](_0xab59e3);}return _0x49cebd[_0x0141('0x1a')](_0xab59e3)[_0x0141('0x1b')]();};}function respondWithResult(_0x16a55a,_0x245007){_0x245007=_0x245007||0xc8;return function(_0x1665e2){if(_0x1665e2){return _0x16a55a['status'](_0x245007)[_0x0141('0x1c')](_0x1665e2);}};}function respondWithFilteredResult(_0x5edd9f,_0x2ee001){return function(_0x3db66a){if(_0x3db66a){var _0x345fbd=typeof _0x2ee001[_0x0141('0x1d')]===_0x0141('0x1e')&&typeof _0x2ee001[_0x0141('0x1f')]==='undefined';var _0x58c3bb=_0x3db66a[_0x0141('0x20')];var _0x3720f6=_0x345fbd?0x0:_0x2ee001['offset'];var _0x9c1eec=_0x345fbd?_0x3db66a[_0x0141('0x20')]:_0x2ee001[_0x0141('0x1d')]+_0x2ee001[_0x0141('0x1f')];var _0x5427b5;if(_0x9c1eec>=_0x58c3bb){_0x9c1eec=_0x58c3bb;_0x5427b5=0xc8;}else{_0x5427b5=0xce;}_0x5edd9f[_0x0141('0x1a')](_0x5427b5);return _0x5edd9f[_0x0141('0x21')]('Content-Range',_0x3720f6+'-'+_0x9c1eec+'/'+_0x58c3bb)[_0x0141('0x1c')](_0x3db66a);}return null;};}function patchUpdates(_0x3e8603){return function(_0x17585f){try{jsonpatch[_0x0141('0x22')](_0x17585f,_0x3e8603,!![]);}catch(_0x316f70){return BPromise[_0x0141('0x23')](_0x316f70);}return _0x17585f['save']();};}function saveUpdates(_0x21d8fc,_0x40c774){return function(_0x363860){if(_0x363860){return _0x363860[_0x0141('0x24')](_0x21d8fc)[_0x0141('0x25')](function(_0x1a4b0b){return _0x1a4b0b;});}return null;};}function removeEntity(_0xccf0c,_0x20656b){return function(_0x12a11e){if(_0x12a11e){return _0x12a11e[_0x0141('0x26')]()[_0x0141('0x25')](function(){_0xccf0c[_0x0141('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4247d,_0x14ecbf){return function(_0xb80072){if(!_0xb80072){_0x4247d[_0x0141('0x27')](0x194);}return _0xb80072;};}function handleError(_0xcc5658,_0x52e90a){_0x52e90a=_0x52e90a||0x1f4;return function(_0x59196f){logger[_0x0141('0x28')](_0x59196f[_0x0141('0x29')]);if(_0x59196f['name']){delete _0x59196f[_0x0141('0x2a')];}_0xcc5658['status'](_0x52e90a)[_0x0141('0x2b')](_0x59196f);};}exports[_0x0141('0x2c')]=function(_0x400602,_0x378a87){var _0x2379ad={},_0x29f463={},_0x146daf={'count':0x0,'rows':[]};var _0xc6eabc=_[_0x0141('0x2d')](db[_0x0141('0x2e')][_0x0141('0x2f')],function(_0x36c409){return{'name':_0x36c409[_0x0141('0x30')],'type':_0x36c409['type'][_0x0141('0x31')]};});_0x29f463['model']=_[_0x0141('0x2d')](_0xc6eabc,_0x0141('0x2a'));_0x29f463[_0x0141('0x32')]=_[_0x0141('0x33')](_0x400602[_0x0141('0x32')]);_0x29f463[_0x0141('0x34')]=_['intersection'](_0x29f463[_0x0141('0x35')],_0x29f463['query']);_0x2379ad[_0x0141('0x36')]=_[_0x0141('0x37')](_0x29f463[_0x0141('0x35')],qs['fields'](_0x400602[_0x0141('0x32')][_0x0141('0x38')]));_0x2379ad['attributes']=_0x2379ad[_0x0141('0x36')][_0x0141('0x39')]?_0x2379ad[_0x0141('0x36')]:_0x29f463[_0x0141('0x35')];if(!_0x400602[_0x0141('0x32')]['hasOwnProperty'](_0x0141('0x3a'))){_0x2379ad[_0x0141('0x1f')]=qs[_0x0141('0x1f')](_0x400602[_0x0141('0x32')][_0x0141('0x1f')]);_0x2379ad[_0x0141('0x1d')]=qs['offset'](_0x400602['query'][_0x0141('0x1d')]);}_0x2379ad[_0x0141('0x3b')]=qs['sort'](_0x400602[_0x0141('0x32')][_0x0141('0x3c')]);_0x2379ad[_0x0141('0x3d')]=qs['filters'](_['pick'](_0x400602['query'],_0x29f463[_0x0141('0x34')]),_0xc6eabc);if(_0x400602[_0x0141('0x32')][_0x0141('0x3e')]){_0x2379ad[_0x0141('0x3d')]=_[_0x0141('0x3f')](_0x2379ad[_0x0141('0x3d')],{'$or':_[_0x0141('0x2d')](_0xc6eabc,function(_0x51ae65){if(_0x51ae65[_0x0141('0x40')]!==_0x0141('0x41')){var _0x5b76c1={};_0x5b76c1[_0x51ae65[_0x0141('0x2a')]]={'$like':'%'+_0x400602[_0x0141('0x32')][_0x0141('0x3e')]+'%'};return _0x5b76c1;}})});}_0x2379ad=_[_0x0141('0x3f')]({},_0x2379ad,_0x400602[_0x0141('0x42')]);var _0x158480={'where':_0x2379ad[_0x0141('0x3d')]};return db[_0x0141('0x2e')]['count'](_0x158480)[_0x0141('0x25')](function(_0x9e9408){_0x146daf['count']=_0x9e9408;if(_0x400602[_0x0141('0x32')][_0x0141('0x43')]){_0x2379ad[_0x0141('0x44')]=[{'all':!![]}];}return db[_0x0141('0x2e')][_0x0141('0x45')](_0x2379ad);})['then'](function(_0x1746a1){_0x146daf['rows']=_0x1746a1;return _0x146daf;})[_0x0141('0x25')](respondWithFilteredResult(_0x378a87,_0x2379ad))['catch'](handleError(_0x378a87,null));};exports['show']=function(_0x4e863f,_0x25870d){var _0x2579df={'raw':!![],'where':{'id':_0x4e863f['params']['id']}},_0x210a8c={};_0x210a8c[_0x0141('0x35')]=_[_0x0141('0x33')](db[_0x0141('0x2e')][_0x0141('0x2f')]);_0x210a8c['query']=_[_0x0141('0x33')](_0x4e863f[_0x0141('0x32')]);_0x210a8c[_0x0141('0x34')]=_[_0x0141('0x37')](_0x210a8c[_0x0141('0x35')],_0x210a8c[_0x0141('0x32')]);_0x2579df[_0x0141('0x36')]=_[_0x0141('0x37')](_0x210a8c['model'],qs[_0x0141('0x38')](_0x4e863f[_0x0141('0x32')][_0x0141('0x38')]));_0x2579df['attributes']=_0x2579df[_0x0141('0x36')][_0x0141('0x39')]?_0x2579df[_0x0141('0x36')]:_0x210a8c['model'];if(_0x4e863f[_0x0141('0x32')]['includeAll']){_0x2579df[_0x0141('0x44')]=[{'all':!![]}];}_0x2579df=_['merge']({},_0x2579df,_0x4e863f[_0x0141('0x42')]);return db['ChatQueueReport'][_0x0141('0x46')](_0x2579df)[_0x0141('0x25')](handleEntityNotFound(_0x25870d,null))[_0x0141('0x25')](respondWithResult(_0x25870d,null))[_0x0141('0x47')](handleError(_0x25870d,null));};exports[_0x0141('0x48')]=function(_0x482e1e,_0x3890ef){return db[_0x0141('0x2e')][_0x0141('0x48')](_0x482e1e['body'],{})[_0x0141('0x25')](respondWithResult(_0x3890ef,0xc9))[_0x0141('0x47')](handleError(_0x3890ef,null));};exports[_0x0141('0x24')]=function(_0x4978a3,_0x3e30a8){if(_0x4978a3['body']['id']){delete _0x4978a3[_0x0141('0x49')]['id'];}return db[_0x0141('0x2e')][_0x0141('0x46')]({'where':{'id':_0x4978a3[_0x0141('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e30a8,null))[_0x0141('0x25')](saveUpdates(_0x4978a3[_0x0141('0x49')],null))[_0x0141('0x25')](respondWithResult(_0x3e30a8,null))[_0x0141('0x47')](handleError(_0x3e30a8,null));};exports[_0x0141('0x26')]=function(_0x2da74f,_0x4a37d3){return db['ChatQueueReport'][_0x0141('0x46')]({'where':{'id':_0x2da74f[_0x0141('0x4a')]['id']}})[_0x0141('0x25')](handleEntityNotFound(_0x4a37d3,null))['then'](removeEntity(_0x4a37d3,null))[_0x0141('0x47')](handleError(_0x4a37d3,null));};exports[_0x0141('0x4b')]=function(_0x1a4217,_0x4b7d84){return db[_0x0141('0x2e')]['describe']()[_0x0141('0x25')](respondWithResult(_0x4b7d84,null))[_0x0141('0x47')](handleError(_0x4b7d84,null));};
\ No newline at end of file
+var _0x8917=['length','nolimit','sort','where','pick','filter','merge','VIRTUAL','ChatQueueReport','includeAll','include','catch','show','params','keys','fields','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','Content-Range','json','reject','save','update','destroy','then','sendStatus','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes'];(function(_0xeaf2d7,_0x338344){var _0x31deac=function(_0x16144f){while(--_0x16144f){_0xeaf2d7['push'](_0xeaf2d7['shift']());}};_0x31deac(++_0x338344);}(_0x8917,0x1d7));var _0x7891=function(_0x5da2a2,_0x4e6545){_0x5da2a2=_0x5da2a2-0x0;var _0x3a1bbd=_0x8917[_0x5da2a2];return _0x3a1bbd;};'use strict';var emlformat=require(_0x7891('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7891('0x1'));var jsonpatch=require(_0x7891('0x2'));var rp=require(_0x7891('0x3'));var moment=require(_0x7891('0x4'));var BPromise=require(_0x7891('0x5'));var Mustache=require(_0x7891('0x6'));var util=require(_0x7891('0x7'));var path=require(_0x7891('0x8'));var sox=require(_0x7891('0x9'));var csv=require('to-csv');var ejs=require(_0x7891('0xa'));var fs=require('fs');var fs_extra=require(_0x7891('0xb'));var _=require(_0x7891('0xc'));var squel=require(_0x7891('0xd'));var crypto=require(_0x7891('0xe'));var jsforce=require(_0x7891('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7891('0x10'));var querystring=require('querystring');var Papa=require(_0x7891('0x11'));var Redis=require(_0x7891('0x12'));var authService=require(_0x7891('0x13'));var qs=require(_0x7891('0x14'));var as=require(_0x7891('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7891('0x16'))(_0x7891('0x17'));var utils=require(_0x7891('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7891('0x19'));var db=require(_0x7891('0x1a'))['db'];function respondWithStatusCode(_0x1a1dbc,_0x31692f){_0x31692f=_0x31692f||0xcc;return function(_0x1b481e){if(_0x1b481e){return _0x1a1dbc['sendStatus'](_0x31692f);}return _0x1a1dbc[_0x7891('0x1b')](_0x31692f)[_0x7891('0x1c')]();};}function respondWithResult(_0x2517f1,_0xc56bc0){_0xc56bc0=_0xc56bc0||0xc8;return function(_0x71e75c){if(_0x71e75c){return _0x2517f1[_0x7891('0x1b')](_0xc56bc0)['json'](_0x71e75c);}};}function respondWithFilteredResult(_0x1fa45b,_0x21a74f){return function(_0x5bfe12){if(_0x5bfe12){var _0x23286b=typeof _0x21a74f[_0x7891('0x1d')]==='undefined'&&typeof _0x21a74f[_0x7891('0x1e')]===_0x7891('0x1f');var _0x250f65=_0x5bfe12[_0x7891('0x20')];var _0x9ff8c2=_0x23286b?0x0:_0x21a74f[_0x7891('0x1d')];var _0x457f50=_0x23286b?_0x5bfe12[_0x7891('0x20')]:_0x21a74f[_0x7891('0x1d')]+_0x21a74f[_0x7891('0x1e')];var _0x20da1e;if(_0x457f50>=_0x250f65){_0x457f50=_0x250f65;_0x20da1e=0xc8;}else{_0x20da1e=0xce;}_0x1fa45b['status'](_0x20da1e);return _0x1fa45b['set'](_0x7891('0x21'),_0x9ff8c2+'-'+_0x457f50+'/'+_0x250f65)[_0x7891('0x22')](_0x5bfe12);}return null;};}function patchUpdates(_0x30b2ae){return function(_0x4c76fe){try{jsonpatch['apply'](_0x4c76fe,_0x30b2ae,!![]);}catch(_0x19a628){return BPromise[_0x7891('0x23')](_0x19a628);}return _0x4c76fe[_0x7891('0x24')]();};}function saveUpdates(_0x36f66a,_0x155a97){return function(_0xf09f20){if(_0xf09f20){return _0xf09f20[_0x7891('0x25')](_0x36f66a)['then'](function(_0x28a917){return _0x28a917;});}return null;};}function removeEntity(_0xab091c,_0x27f2e0){return function(_0x2de356){if(_0x2de356){return _0x2de356[_0x7891('0x26')]()[_0x7891('0x27')](function(){_0xab091c[_0x7891('0x1b')](0xcc)[_0x7891('0x1c')]();});}};}function handleEntityNotFound(_0x24372f,_0x2acda5){return function(_0x55108b){if(!_0x55108b){_0x24372f[_0x7891('0x28')](0x194);}return _0x55108b;};}function handleError(_0x369740,_0x397d03){_0x397d03=_0x397d03||0x1f4;return function(_0x12ed70){logger['error'](_0x12ed70[_0x7891('0x29')]);if(_0x12ed70['name']){delete _0x12ed70[_0x7891('0x2a')];}_0x369740[_0x7891('0x1b')](_0x397d03)[_0x7891('0x2b')](_0x12ed70);};}exports['index']=function(_0x4009f8,_0x1a6bef){var _0x44442f={},_0x263f13={},_0x27be75={'count':0x0,'rows':[]};var _0x2a72d2=_[_0x7891('0x2c')](db['ChatQueueReport'][_0x7891('0x2d')],function(_0x4bb7d7){return{'name':_0x4bb7d7[_0x7891('0x2e')],'type':_0x4bb7d7[_0x7891('0x2f')][_0x7891('0x30')]};});_0x263f13[_0x7891('0x31')]=_[_0x7891('0x2c')](_0x2a72d2,_0x7891('0x2a'));_0x263f13[_0x7891('0x32')]=_['keys'](_0x4009f8[_0x7891('0x32')]);_0x263f13[_0x7891('0x33')]=_[_0x7891('0x34')](_0x263f13[_0x7891('0x31')],_0x263f13[_0x7891('0x32')]);_0x44442f[_0x7891('0x35')]=_[_0x7891('0x34')](_0x263f13['model'],qs['fields'](_0x4009f8['query']['fields']));_0x44442f[_0x7891('0x35')]=_0x44442f[_0x7891('0x35')][_0x7891('0x36')]?_0x44442f[_0x7891('0x35')]:_0x263f13[_0x7891('0x31')];if(!_0x4009f8[_0x7891('0x32')]['hasOwnProperty'](_0x7891('0x37'))){_0x44442f[_0x7891('0x1e')]=qs[_0x7891('0x1e')](_0x4009f8[_0x7891('0x32')][_0x7891('0x1e')]);_0x44442f[_0x7891('0x1d')]=qs[_0x7891('0x1d')](_0x4009f8['query'][_0x7891('0x1d')]);}_0x44442f['order']=qs[_0x7891('0x38')](_0x4009f8['query'][_0x7891('0x38')]);_0x44442f[_0x7891('0x39')]=qs[_0x7891('0x33')](_[_0x7891('0x3a')](_0x4009f8[_0x7891('0x32')],_0x263f13['filters']),_0x2a72d2);if(_0x4009f8[_0x7891('0x32')][_0x7891('0x3b')]){_0x44442f[_0x7891('0x39')]=_[_0x7891('0x3c')](_0x44442f[_0x7891('0x39')],{'$or':_['map'](_0x2a72d2,function(_0x4e63ee){if(_0x4e63ee['type']!==_0x7891('0x3d')){var _0x30117f={};_0x30117f[_0x4e63ee[_0x7891('0x2a')]]={'$like':'%'+_0x4009f8[_0x7891('0x32')][_0x7891('0x3b')]+'%'};return _0x30117f;}})});}_0x44442f=_['merge']({},_0x44442f,_0x4009f8['options']);var _0x439e23={'where':_0x44442f[_0x7891('0x39')]};return db[_0x7891('0x3e')][_0x7891('0x20')](_0x439e23)['then'](function(_0x37503e){_0x27be75[_0x7891('0x20')]=_0x37503e;if(_0x4009f8[_0x7891('0x32')][_0x7891('0x3f')]){_0x44442f[_0x7891('0x40')]=[{'all':!![]}];}return db[_0x7891('0x3e')]['findAll'](_0x44442f);})['then'](function(_0x44cc49){_0x27be75['rows']=_0x44cc49;return _0x27be75;})[_0x7891('0x27')](respondWithFilteredResult(_0x1a6bef,_0x44442f))[_0x7891('0x41')](handleError(_0x1a6bef,null));};exports[_0x7891('0x42')]=function(_0x527420,_0x4a83ae){var _0x29a55b={'raw':!![],'where':{'id':_0x527420[_0x7891('0x43')]['id']}},_0xe65246={};_0xe65246[_0x7891('0x31')]=_[_0x7891('0x44')](db['ChatQueueReport']['rawAttributes']);_0xe65246[_0x7891('0x32')]=_['keys'](_0x527420[_0x7891('0x32')]);_0xe65246['filters']=_[_0x7891('0x34')](_0xe65246[_0x7891('0x31')],_0xe65246[_0x7891('0x32')]);_0x29a55b['attributes']=_[_0x7891('0x34')](_0xe65246[_0x7891('0x31')],qs[_0x7891('0x45')](_0x527420[_0x7891('0x32')]['fields']));_0x29a55b[_0x7891('0x35')]=_0x29a55b[_0x7891('0x35')]['length']?_0x29a55b['attributes']:_0xe65246[_0x7891('0x31')];if(_0x527420['query'][_0x7891('0x3f')]){_0x29a55b[_0x7891('0x40')]=[{'all':!![]}];}_0x29a55b=_[_0x7891('0x3c')]({},_0x29a55b,_0x527420[_0x7891('0x46')]);return db['ChatQueueReport'][_0x7891('0x47')](_0x29a55b)['then'](handleEntityNotFound(_0x4a83ae,null))['then'](respondWithResult(_0x4a83ae,null))['catch'](handleError(_0x4a83ae,null));};exports[_0x7891('0x48')]=function(_0x15a6d8,_0x12099c){return db[_0x7891('0x3e')]['create'](_0x15a6d8[_0x7891('0x49')],{})[_0x7891('0x27')](respondWithResult(_0x12099c,0xc9))[_0x7891('0x41')](handleError(_0x12099c,null));};exports[_0x7891('0x25')]=function(_0xa637bc,_0x551aa9){if(_0xa637bc['body']['id']){delete _0xa637bc[_0x7891('0x49')]['id'];}return db['ChatQueueReport'][_0x7891('0x47')]({'where':{'id':_0xa637bc['params']['id']}})[_0x7891('0x27')](handleEntityNotFound(_0x551aa9,null))[_0x7891('0x27')](saveUpdates(_0xa637bc[_0x7891('0x49')],null))[_0x7891('0x27')](respondWithResult(_0x551aa9,null))[_0x7891('0x41')](handleError(_0x551aa9,null));};exports[_0x7891('0x26')]=function(_0x425cd1,_0x3830af){return db[_0x7891('0x3e')][_0x7891('0x47')]({'where':{'id':_0x425cd1[_0x7891('0x43')]['id']}})[_0x7891('0x27')](handleEntityNotFound(_0x3830af,null))[_0x7891('0x27')](removeEntity(_0x3830af,null))[_0x7891('0x41')](handleError(_0x3830af,null));};exports[_0x7891('0x4a')]=function(_0x3aa4da,_0x51a6fc){return db[_0x7891('0x3e')][_0x7891('0x4a')]()[_0x7891('0x27')](respondWithResult(_0x51a6fc,null))[_0x7891('0x41')](handleError(_0x51a6fc,null));};
\ No newline at end of file
index a6fbff9..5ef2707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x23ad5a,_0x22b265){var _0x2d6300=function(_0x69e18d){while(--_0x69e18d){_0x23ad5a['push'](_0x23ad5a['shift']());}};_0x2d6300(++_0x22b265);}(_0xbaf0,0x12a));var _0x0baf=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbaf0[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x46c920,_0xeec179){var _0x443ad8=function(_0x5f46e6){while(--_0x5f46e6){_0x46c920['push'](_0x46c920['shift']());}};_0x443ad8(++_0xeec179);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 39854d2..187475f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cc4=['message','info','result','CreateChatQueueReport','ChatQueueReport','options','raw','catch','UpdateChatQueueReport','update','body','where','attributes','then','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x43c4d6,_0x3e8483){var _0x59ae5f=function(_0xdcc0f){while(--_0xdcc0f){_0x43c4d6['push'](_0x43c4d6['shift']());}};_0x59ae5f(++_0x3e8483);}(_0x3cc4,0x8e));var _0x43cc=function(_0x29067e,_0x8dba59){_0x29067e=_0x29067e-0x0;var _0xdedc50=_0x3cc4[_0x29067e];return _0xdedc50;};'use strict';var _=require(_0x43cc('0x0'));var util=require(_0x43cc('0x1'));var moment=require('moment');var BPromise=require(_0x43cc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x43cc('0x3'))['db'];var utils=require(_0x43cc('0x4'));var logger=require(_0x43cc('0x5'))(_0x43cc('0x6'));var config=require(_0x43cc('0x7'));var jayson=require(_0x43cc('0x8'));var client=jayson['client'][_0x43cc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x178fc2,_0x2a5988,_0x482fb5){return new BPromise(function(_0x412580,_0x297a11){return client[_0x43cc('0xa')](_0x178fc2,_0x482fb5)['then'](function(_0x35f1af){logger['info'](_0x43cc('0xb'),_0x2a5988,_0x43cc('0xc'));logger[_0x43cc('0xd')](_0x43cc('0xe'),_0x2a5988,_0x43cc('0xc'),JSON[_0x43cc('0xf')](_0x35f1af));if(_0x35f1af['error']){if(_0x35f1af[_0x43cc('0x10')][_0x43cc('0x11')]===0x1f4){logger[_0x43cc('0x10')](_0x43cc('0xb'),_0x2a5988,_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);return _0x297a11(_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);}logger[_0x43cc('0x10')](_0x43cc('0xb'),_0x2a5988,_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);return _0x412580(_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);}else{logger[_0x43cc('0x13')](_0x43cc('0xb'),_0x2a5988,_0x43cc('0xc'));_0x412580(_0x35f1af[_0x43cc('0x14')][_0x43cc('0x12')]);}})['catch'](function(_0x68308){logger['error'](_0x43cc('0xb'),_0x2a5988,_0x68308);_0x297a11(_0x68308);});});}exports[_0x43cc('0x15')]=function(_0x35bc24){var _0x142372=this;return new Promise(function(_0x4e6ccb,_0x3c8f3c){return db[_0x43cc('0x16')]['create'](_0x35bc24['body'],{'raw':_0x35bc24[_0x43cc('0x17')]?_0x35bc24[_0x43cc('0x17')][_0x43cc('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x1991f5){logger[_0x43cc('0x13')](_0x43cc('0x15'),_0x35bc24);logger[_0x43cc('0xd')](_0x43cc('0x15'),_0x35bc24,JSON[_0x43cc('0xf')](_0x1991f5));_0x4e6ccb(_0x1991f5);})[_0x43cc('0x19')](function(_0x1e3336){logger['error'](_0x43cc('0x15'),_0x1e3336['message'],_0x35bc24);_0x3c8f3c(_0x142372[_0x43cc('0x10')](0x1f4,_0x1e3336['message']));});});};exports[_0x43cc('0x1a')]=function(_0x264577){var _0x1cf691=this;return new Promise(function(_0x7b2957,_0x440e76){return db[_0x43cc('0x16')][_0x43cc('0x1b')](_0x264577[_0x43cc('0x1c')],{'raw':_0x264577[_0x43cc('0x17')]?_0x264577[_0x43cc('0x17')][_0x43cc('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x264577['options']?_0x264577[_0x43cc('0x17')][_0x43cc('0x1d')]||null:null,'attributes':_0x264577[_0x43cc('0x17')]?_0x264577[_0x43cc('0x17')][_0x43cc('0x1e')]||null:null,'limit':_0x264577[_0x43cc('0x17')]?_0x264577[_0x43cc('0x17')]['limit']||null:null})[_0x43cc('0x1f')](function(_0x53427a){logger[_0x43cc('0x13')](_0x43cc('0x1a'),_0x264577);logger[_0x43cc('0xd')]('UpdateChatQueueReport',_0x264577,JSON[_0x43cc('0xf')](_0x53427a));_0x7b2957(_0x53427a);})[_0x43cc('0x19')](function(_0x3897b5){logger[_0x43cc('0x10')](_0x43cc('0x1a'),_0x3897b5['message'],_0x264577);_0x440e76(_0x1cf691[_0x43cc('0x10')](0x1f4,_0x3897b5['message']));});});};
\ No newline at end of file
+var _0x174b=['body','options','raw','CreateChatQueueReport','UpdateChatQueueReport','ChatQueueReport','update','attributes','limit','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','ChatQueueReport,\x20%s,\x20%s','message','result','catch','create'];(function(_0x4ad825,_0x388f20){var _0x115f89=function(_0x4bc606){while(--_0x4bc606){_0x4ad825['push'](_0x4ad825['shift']());}};_0x115f89(++_0x388f20);}(_0x174b,0x19d));var _0xb174=function(_0x44edad,_0x34cb3f){_0x44edad=_0x44edad-0x0;var _0x13b1f9=_0x174b[_0x44edad];return _0x13b1f9;};'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')]('ChatQueueReport,\x20%s,\x20%s',_0xa073f6,_0xb174('0xd'));logger[_0xb174('0xe')]('ChatQueueReport,\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']('ChatQueueReport,\x20%s,\x20%s',_0xa073f6,_0x5d31ac);_0x149942(_0x5d31ac);});});}exports['CreateChatQueueReport']=function(_0x2ab4dc){var _0x4fb4eb=this;return new Promise(function(_0xaf80a9,_0x1a6f40){return db['ChatQueueReport'][_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')]('CreateChatQueueReport',_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
index 1f3a50f..9e3fe6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01e1=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','delete','destroy','exports','multer','util','connect-timeout','Router'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0x01e1,0x100));var _0x101e=function(_0x5cec41,_0x48bf95){_0x5cec41=_0x5cec41-0x0;var _0x57480b=_0x01e1[_0x5cec41];return _0x57480b;};'use strict';var multer=require(_0x101e('0x0'));var util=require(_0x101e('0x1'));var path=require('path');var timeout=require(_0x101e('0x2'));var express=require('express');var router=express[_0x101e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x101e('0x4'));var interaction=require(_0x101e('0x5'));var config=require(_0x101e('0x6'));var controller=require(_0x101e('0x7'));router[_0x101e('0x8')]('/',auth[_0x101e('0x9')](),controller[_0x101e('0xa')]);router['get'](_0x101e('0xb'),auth['isAuthenticated'](),controller[_0x101e('0xc')]);router[_0x101e('0x8')](_0x101e('0xd'),auth[_0x101e('0x9')](),controller[_0x101e('0xe')]);router['post']('/',auth[_0x101e('0x9')](),controller[_0x101e('0xf')]);router[_0x101e('0x10')](_0x101e('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x101e('0x11')](_0x101e('0xd'),auth[_0x101e('0x9')](),controller[_0x101e('0x12')]);module[_0x101e('0x13')]=router;
\ No newline at end of file
+var _0xac4f=['util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','exports'];(function(_0x2460c4,_0x438cc1){var _0x10bc8f=function(_0x42e97c){while(--_0x42e97c){_0x2460c4['push'](_0x2460c4['shift']());}};_0x10bc8f(++_0x438cc1);}(_0xac4f,0x144));var _0xfac4=function(_0x33403b,_0x5cca9c){_0x33403b=_0x33403b-0x0;var _0x2d8657=_0xac4f[_0x33403b];return _0x2d8657;};'use strict';var multer=require('multer');var util=require(_0xfac4('0x0'));var path=require(_0xfac4('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfac4('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfac4('0x3'));var interaction=require(_0xfac4('0x4'));var config=require(_0xfac4('0x5'));var controller=require('./chatQueueReport.controller');router[_0xfac4('0x6')]('/',auth[_0xfac4('0x7')](),controller[_0xfac4('0x8')]);router[_0xfac4('0x6')](_0xfac4('0x9'),auth[_0xfac4('0x7')](),controller[_0xfac4('0xa')]);router[_0xfac4('0x6')]('/:id',auth[_0xfac4('0x7')](),controller[_0xfac4('0xb')]);router[_0xfac4('0xc')]('/',auth['isAuthenticated'](),controller[_0xfac4('0xd')]);router[_0xfac4('0xe')](_0xfac4('0xf'),auth[_0xfac4('0x7')](),controller[_0xfac4('0x10')]);router['delete'](_0xfac4('0xf'),auth[_0xfac4('0x7')](),controller['destroy']);module[_0xfac4('0x11')]=router;
\ No newline at end of file
index 00618ea..c2c00ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x7b173,_0x539d7f){var _0x1c598c=function(_0xe1e1e0){while(--_0xe1e1e0){_0x7b173['push'](_0x7b173['shift']());}};_0x1c598c(++_0x539d7f);}(_0xb43b,0x1b2));var _0xbb43=function(_0xd6ed49,_0x35207b){_0xd6ed49=_0xd6ed49-0x0;var _0x66763a=_0xb43b[_0xd6ed49];return _0x66763a;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5bfb78,_0x22e3ff){var _0x4efd00=function(_0x5c9496){while(--_0x5c9496){_0x5bfb78['push'](_0x5bfb78['shift']());}};_0x4efd00(++_0x22e3ff);}(_0x9bde,0xe1));var _0xe9bd=function(_0x4dc648,_0x44d204){_0x4dc648=_0x4dc648-0x0;var _0x5a437e=_0x9bde[_0x4dc648];return _0x5a437e;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index 88a1b2f..e925c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b55=['model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','set','reject','update','then','destroy','name','index','map','ChatTransferReport','rawAttributes','query','keys','filters'];(function(_0x208de5,_0x2da92b){var _0x31391a=function(_0x13df55){while(--_0x13df55){_0x208de5['push'](_0x208de5['shift']());}};_0x31391a(++_0x2da92b);}(_0x1b55,0x1ca));var _0x51b5=function(_0xa6e9fa,_0x33372a){_0xa6e9fa=_0xa6e9fa-0x0;var _0x44592c=_0x1b55[_0xa6e9fa];return _0x44592c;};'use strict';var emlformat=require(_0x51b5('0x0'));var rimraf=require(_0x51b5('0x1'));var zipdir=require(_0x51b5('0x2'));var jsonpatch=require(_0x51b5('0x3'));var rp=require('request-promise');var moment=require(_0x51b5('0x4'));var BPromise=require(_0x51b5('0x5'));var Mustache=require(_0x51b5('0x6'));var util=require(_0x51b5('0x7'));var path=require('path');var sox=require(_0x51b5('0x8'));var csv=require(_0x51b5('0x9'));var ejs=require(_0x51b5('0xa'));var fs=require('fs');var fs_extra=require(_0x51b5('0xb'));var _=require('lodash');var squel=require(_0x51b5('0xc'));var crypto=require(_0x51b5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x51b5('0xe'));var toCsv=require(_0x51b5('0x9'));var querystring=require(_0x51b5('0xf'));var Papa=require(_0x51b5('0x10'));var Redis=require(_0x51b5('0x11'));var authService=require(_0x51b5('0x12'));var qs=require(_0x51b5('0x13'));var as=require(_0x51b5('0x14'));var hardwareService=require(_0x51b5('0x15'));var logger=require(_0x51b5('0x16'))(_0x51b5('0x17'));var utils=require(_0x51b5('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x51b5('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x519f4c,_0xe22158){_0xe22158=_0xe22158||0xcc;return function(_0x7dcdbd){if(_0x7dcdbd){return _0x519f4c[_0x51b5('0x1a')](_0xe22158);}return _0x519f4c[_0x51b5('0x1b')](_0xe22158)['end']();};}function respondWithResult(_0x3461ab,_0x558f8d){_0x558f8d=_0x558f8d||0xc8;return function(_0x220a54){if(_0x220a54){return _0x3461ab[_0x51b5('0x1b')](_0x558f8d)[_0x51b5('0x1c')](_0x220a54);}};}function respondWithFilteredResult(_0x2b03e5,_0x197d87){return function(_0x12a5d7){if(_0x12a5d7){var _0x573744=typeof _0x197d87[_0x51b5('0x1d')]==='undefined'&&typeof _0x197d87[_0x51b5('0x1e')]===_0x51b5('0x1f');var _0x51ba41=_0x12a5d7[_0x51b5('0x20')];var _0x252a49=_0x573744?0x0:_0x197d87[_0x51b5('0x1d')];var _0x1271c0=_0x573744?_0x12a5d7[_0x51b5('0x20')]:_0x197d87['offset']+_0x197d87['limit'];var _0x5cadf0;if(_0x1271c0>=_0x51ba41){_0x1271c0=_0x51ba41;_0x5cadf0=0xc8;}else{_0x5cadf0=0xce;}_0x2b03e5['status'](_0x5cadf0);return _0x2b03e5[_0x51b5('0x21')]('Content-Range',_0x252a49+'-'+_0x1271c0+'/'+_0x51ba41)['json'](_0x12a5d7);}return null;};}function patchUpdates(_0x292f87){return function(_0x1380eb){try{jsonpatch['apply'](_0x1380eb,_0x292f87,!![]);}catch(_0x9653cf){return BPromise[_0x51b5('0x22')](_0x9653cf);}return _0x1380eb['save']();};}function saveUpdates(_0x2f95f2,_0x3853fc){return function(_0x2ac7bd){if(_0x2ac7bd){return _0x2ac7bd[_0x51b5('0x23')](_0x2f95f2)[_0x51b5('0x24')](function(_0x560090){return _0x560090;});}return null;};}function removeEntity(_0x18320f,_0x4afc21){return function(_0xf23d37){if(_0xf23d37){return _0xf23d37[_0x51b5('0x25')]()[_0x51b5('0x24')](function(){_0x18320f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x36785f,_0x1000e7){return function(_0x11ecf7){if(!_0x11ecf7){_0x36785f['sendStatus'](0x194);}return _0x11ecf7;};}function handleError(_0x44010f,_0x539c2d){_0x539c2d=_0x539c2d||0x1f4;return function(_0x58e97a){logger['error'](_0x58e97a['stack']);if(_0x58e97a[_0x51b5('0x26')]){delete _0x58e97a[_0x51b5('0x26')];}_0x44010f['status'](_0x539c2d)['send'](_0x58e97a);};}exports[_0x51b5('0x27')]=function(_0x3724a9,_0x4ccb6b){var _0x304463={},_0x101283={},_0x4f80f2={'count':0x0,'rows':[]};var _0x5556c5=_[_0x51b5('0x28')](db[_0x51b5('0x29')][_0x51b5('0x2a')],function(_0x2d4889){return{'name':_0x2d4889['fieldName'],'type':_0x2d4889['type']['key']};});_0x101283['model']=_[_0x51b5('0x28')](_0x5556c5,_0x51b5('0x26'));_0x101283[_0x51b5('0x2b')]=_[_0x51b5('0x2c')](_0x3724a9[_0x51b5('0x2b')]);_0x101283[_0x51b5('0x2d')]=_['intersection'](_0x101283[_0x51b5('0x2e')],_0x101283['query']);_0x304463[_0x51b5('0x2f')]=_[_0x51b5('0x30')](_0x101283[_0x51b5('0x2e')],qs[_0x51b5('0x31')](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x31')]));_0x304463[_0x51b5('0x2f')]=_0x304463[_0x51b5('0x2f')][_0x51b5('0x32')]?_0x304463['attributes']:_0x101283[_0x51b5('0x2e')];if(!_0x3724a9['query'][_0x51b5('0x33')](_0x51b5('0x34'))){_0x304463[_0x51b5('0x1e')]=qs['limit'](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x1e')]);_0x304463[_0x51b5('0x1d')]=qs[_0x51b5('0x1d')](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x1d')]);}_0x304463[_0x51b5('0x35')]=qs[_0x51b5('0x36')](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x36')]);_0x304463[_0x51b5('0x37')]=qs[_0x51b5('0x2d')](_[_0x51b5('0x38')](_0x3724a9[_0x51b5('0x2b')],_0x101283[_0x51b5('0x2d')]),_0x5556c5);if(_0x3724a9[_0x51b5('0x2b')]['filter']){_0x304463['where']=_[_0x51b5('0x39')](_0x304463[_0x51b5('0x37')],{'$or':_[_0x51b5('0x28')](_0x5556c5,function(_0x4e195f){if(_0x4e195f[_0x51b5('0x3a')]!==_0x51b5('0x3b')){var _0x59db7e={};_0x59db7e[_0x4e195f[_0x51b5('0x26')]]={'$like':'%'+_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x3c')]+'%'};return _0x59db7e;}})});}_0x304463=_[_0x51b5('0x39')]({},_0x304463,_0x3724a9[_0x51b5('0x3d')]);var _0x511727={'where':_0x304463['where']};return db[_0x51b5('0x29')][_0x51b5('0x20')](_0x511727)[_0x51b5('0x24')](function(_0x5afbc7){_0x4f80f2[_0x51b5('0x20')]=_0x5afbc7;if(_0x3724a9[_0x51b5('0x2b')]['includeAll']){_0x304463[_0x51b5('0x3e')]=[{'all':!![]}];}return db[_0x51b5('0x29')][_0x51b5('0x3f')](_0x304463);})[_0x51b5('0x24')](function(_0x3b2cc2){_0x4f80f2[_0x51b5('0x40')]=_0x3b2cc2;return _0x4f80f2;})[_0x51b5('0x24')](respondWithFilteredResult(_0x4ccb6b,_0x304463))[_0x51b5('0x41')](handleError(_0x4ccb6b,null));};exports[_0x51b5('0x42')]=function(_0x4e8a39,_0x24ba50){var _0x356c93={'raw':!![],'where':{'id':_0x4e8a39['params']['id']}},_0x436a34={};_0x436a34[_0x51b5('0x2e')]=_[_0x51b5('0x2c')](db['ChatTransferReport'][_0x51b5('0x2a')]);_0x436a34[_0x51b5('0x2b')]=_[_0x51b5('0x2c')](_0x4e8a39[_0x51b5('0x2b')]);_0x436a34[_0x51b5('0x2d')]=_[_0x51b5('0x30')](_0x436a34['model'],_0x436a34['query']);_0x356c93[_0x51b5('0x2f')]=_[_0x51b5('0x30')](_0x436a34[_0x51b5('0x2e')],qs[_0x51b5('0x31')](_0x4e8a39[_0x51b5('0x2b')][_0x51b5('0x31')]));_0x356c93[_0x51b5('0x2f')]=_0x356c93[_0x51b5('0x2f')][_0x51b5('0x32')]?_0x356c93['attributes']:_0x436a34['model'];if(_0x4e8a39[_0x51b5('0x2b')][_0x51b5('0x43')]){_0x356c93[_0x51b5('0x3e')]=[{'all':!![]}];}_0x356c93=_[_0x51b5('0x39')]({},_0x356c93,_0x4e8a39[_0x51b5('0x3d')]);return db['ChatTransferReport'][_0x51b5('0x44')](_0x356c93)[_0x51b5('0x24')](handleEntityNotFound(_0x24ba50,null))[_0x51b5('0x24')](respondWithResult(_0x24ba50,null))['catch'](handleError(_0x24ba50,null));};exports[_0x51b5('0x45')]=function(_0x416cf5,_0x18f7c3){return db[_0x51b5('0x29')][_0x51b5('0x45')](_0x416cf5[_0x51b5('0x46')],{})[_0x51b5('0x24')](respondWithResult(_0x18f7c3,0xc9))[_0x51b5('0x41')](handleError(_0x18f7c3,null));};exports[_0x51b5('0x23')]=function(_0x402cae,_0xc473f0){if(_0x402cae[_0x51b5('0x46')]['id']){delete _0x402cae['body']['id'];}return db[_0x51b5('0x29')][_0x51b5('0x44')]({'where':{'id':_0x402cae[_0x51b5('0x47')]['id']}})[_0x51b5('0x24')](handleEntityNotFound(_0xc473f0,null))['then'](saveUpdates(_0x402cae['body'],null))['then'](respondWithResult(_0xc473f0,null))[_0x51b5('0x41')](handleError(_0xc473f0,null));};exports[_0x51b5('0x25')]=function(_0x148888,_0x9c1487){return db['ChatTransferReport'][_0x51b5('0x44')]({'where':{'id':_0x148888[_0x51b5('0x47')]['id']}})[_0x51b5('0x24')](handleEntityNotFound(_0x9c1487,null))[_0x51b5('0x24')](removeEntity(_0x9c1487,null))[_0x51b5('0x41')](handleError(_0x9c1487,null));};exports['describe']=function(_0x36243c,_0x1b1a12){return db['ChatTransferReport']['describe']()[_0x51b5('0x24')](respondWithResult(_0x1b1a12,null))[_0x51b5('0x41')](handleError(_0x1b1a12,null));};
\ No newline at end of file
+var _0x4554=['pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','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','sendStatus','status','offset','undefined','count','limit','Content-Range','save','update','then','destroy','error','name','send','index','map','ChatTransferReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where'];(function(_0x171ca6,_0x2f8f9d){var _0x244768=function(_0x25390c){while(--_0x25390c){_0x171ca6['push'](_0x171ca6['shift']());}};_0x244768(++_0x2f8f9d);}(_0x4554,0x133));var _0x4455=function(_0x598528,_0x454689){_0x598528=_0x598528-0x0;var _0x1b1c38=_0x4554[_0x598528];return _0x1b1c38;};'use strict';var emlformat=require(_0x4455('0x0'));var rimraf=require(_0x4455('0x1'));var zipdir=require(_0x4455('0x2'));var jsonpatch=require(_0x4455('0x3'));var rp=require(_0x4455('0x4'));var moment=require(_0x4455('0x5'));var BPromise=require(_0x4455('0x6'));var Mustache=require(_0x4455('0x7'));var util=require(_0x4455('0x8'));var path=require(_0x4455('0x9'));var sox=require(_0x4455('0xa'));var csv=require(_0x4455('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4455('0xc'));var _=require(_0x4455('0xd'));var squel=require('squel');var crypto=require(_0x4455('0xe'));var jsforce=require(_0x4455('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x4455('0xb'));var querystring=require('querystring');var Papa=require(_0x4455('0x10'));var Redis=require(_0x4455('0x11'));var authService=require(_0x4455('0x12'));var qs=require(_0x4455('0x13'));var as=require(_0x4455('0x14'));var hardwareService=require(_0x4455('0x15'));var logger=require(_0x4455('0x16'))(_0x4455('0x17'));var utils=require(_0x4455('0x18'));var config=require(_0x4455('0x19'));var licenseUtil=require(_0x4455('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3110de,_0x77dd5a){_0x77dd5a=_0x77dd5a||0xcc;return function(_0x255879){if(_0x255879){return _0x3110de[_0x4455('0x1b')](_0x77dd5a);}return _0x3110de[_0x4455('0x1c')](_0x77dd5a)['end']();};}function respondWithResult(_0x59e72b,_0x3fa822){_0x3fa822=_0x3fa822||0xc8;return function(_0x117ec7){if(_0x117ec7){return _0x59e72b[_0x4455('0x1c')](_0x3fa822)['json'](_0x117ec7);}};}function respondWithFilteredResult(_0x12d397,_0x44f02b){return function(_0x29069f){if(_0x29069f){var _0x4c485a=typeof _0x44f02b[_0x4455('0x1d')]==='undefined'&&typeof _0x44f02b['limit']===_0x4455('0x1e');var _0x50418e=_0x29069f[_0x4455('0x1f')];var _0x4ea2fc=_0x4c485a?0x0:_0x44f02b[_0x4455('0x1d')];var _0xea95c9=_0x4c485a?_0x29069f[_0x4455('0x1f')]:_0x44f02b[_0x4455('0x1d')]+_0x44f02b[_0x4455('0x20')];var _0x5c8154;if(_0xea95c9>=_0x50418e){_0xea95c9=_0x50418e;_0x5c8154=0xc8;}else{_0x5c8154=0xce;}_0x12d397[_0x4455('0x1c')](_0x5c8154);return _0x12d397['set'](_0x4455('0x21'),_0x4ea2fc+'-'+_0xea95c9+'/'+_0x50418e)['json'](_0x29069f);}return null;};}function patchUpdates(_0x4f109a){return function(_0xac9c4c){try{jsonpatch['apply'](_0xac9c4c,_0x4f109a,!![]);}catch(_0x4911d1){return BPromise['reject'](_0x4911d1);}return _0xac9c4c[_0x4455('0x22')]();};}function saveUpdates(_0x24602a,_0x3e6826){return function(_0x38a79a){if(_0x38a79a){return _0x38a79a[_0x4455('0x23')](_0x24602a)[_0x4455('0x24')](function(_0xfea541){return _0xfea541;});}return null;};}function removeEntity(_0x506832,_0x49c955){return function(_0x17ccdd){if(_0x17ccdd){return _0x17ccdd[_0x4455('0x25')]()[_0x4455('0x24')](function(){_0x506832[_0x4455('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b80c5,_0x32293b){return function(_0x2935ad){if(!_0x2935ad){_0x1b80c5[_0x4455('0x1b')](0x194);}return _0x2935ad;};}function handleError(_0x1077f7,_0x26ac95){_0x26ac95=_0x26ac95||0x1f4;return function(_0x477fb1){logger[_0x4455('0x26')](_0x477fb1['stack']);if(_0x477fb1['name']){delete _0x477fb1[_0x4455('0x27')];}_0x1077f7[_0x4455('0x1c')](_0x26ac95)[_0x4455('0x28')](_0x477fb1);};}exports[_0x4455('0x29')]=function(_0x257400,_0x42898d){var _0x1e8735={},_0x166728={},_0x3609e1={'count':0x0,'rows':[]};var _0x482786=_[_0x4455('0x2a')](db[_0x4455('0x2b')][_0x4455('0x2c')],function(_0x5671ff){return{'name':_0x5671ff['fieldName'],'type':_0x5671ff[_0x4455('0x2d')]['key']};});_0x166728[_0x4455('0x2e')]=_[_0x4455('0x2a')](_0x482786,'name');_0x166728[_0x4455('0x2f')]=_[_0x4455('0x30')](_0x257400[_0x4455('0x2f')]);_0x166728[_0x4455('0x31')]=_[_0x4455('0x32')](_0x166728[_0x4455('0x2e')],_0x166728[_0x4455('0x2f')]);_0x1e8735[_0x4455('0x33')]=_[_0x4455('0x32')](_0x166728[_0x4455('0x2e')],qs[_0x4455('0x34')](_0x257400[_0x4455('0x2f')][_0x4455('0x34')]));_0x1e8735[_0x4455('0x33')]=_0x1e8735[_0x4455('0x33')][_0x4455('0x35')]?_0x1e8735[_0x4455('0x33')]:_0x166728['model'];if(!_0x257400[_0x4455('0x2f')][_0x4455('0x36')](_0x4455('0x37'))){_0x1e8735[_0x4455('0x20')]=qs[_0x4455('0x20')](_0x257400[_0x4455('0x2f')][_0x4455('0x20')]);_0x1e8735[_0x4455('0x1d')]=qs[_0x4455('0x1d')](_0x257400[_0x4455('0x2f')][_0x4455('0x1d')]);}_0x1e8735['order']=qs[_0x4455('0x38')](_0x257400[_0x4455('0x2f')][_0x4455('0x38')]);_0x1e8735[_0x4455('0x39')]=qs[_0x4455('0x31')](_[_0x4455('0x3a')](_0x257400[_0x4455('0x2f')],_0x166728[_0x4455('0x31')]),_0x482786);if(_0x257400[_0x4455('0x2f')][_0x4455('0x3b')]){_0x1e8735[_0x4455('0x39')]=_[_0x4455('0x3c')](_0x1e8735[_0x4455('0x39')],{'$or':_[_0x4455('0x2a')](_0x482786,function(_0x4813f9){if(_0x4813f9[_0x4455('0x2d')]!==_0x4455('0x3d')){var _0x24e556={};_0x24e556[_0x4813f9[_0x4455('0x27')]]={'$like':'%'+_0x257400[_0x4455('0x2f')]['filter']+'%'};return _0x24e556;}})});}_0x1e8735=_[_0x4455('0x3c')]({},_0x1e8735,_0x257400['options']);var _0x419fde={'where':_0x1e8735[_0x4455('0x39')]};return db[_0x4455('0x2b')][_0x4455('0x1f')](_0x419fde)[_0x4455('0x24')](function(_0x4ce1cc){_0x3609e1[_0x4455('0x1f')]=_0x4ce1cc;if(_0x257400[_0x4455('0x2f')][_0x4455('0x3e')]){_0x1e8735[_0x4455('0x3f')]=[{'all':!![]}];}return db[_0x4455('0x2b')][_0x4455('0x40')](_0x1e8735);})[_0x4455('0x24')](function(_0x289b6c){_0x3609e1[_0x4455('0x41')]=_0x289b6c;return _0x3609e1;})['then'](respondWithFilteredResult(_0x42898d,_0x1e8735))['catch'](handleError(_0x42898d,null));};exports[_0x4455('0x42')]=function(_0x58acda,_0x5cccaa){var _0x485724={'raw':!![],'where':{'id':_0x58acda[_0x4455('0x43')]['id']}},_0xbdaf15={};_0xbdaf15[_0x4455('0x2e')]=_['keys'](db['ChatTransferReport'][_0x4455('0x2c')]);_0xbdaf15['query']=_[_0x4455('0x30')](_0x58acda['query']);_0xbdaf15[_0x4455('0x31')]=_['intersection'](_0xbdaf15[_0x4455('0x2e')],_0xbdaf15['query']);_0x485724[_0x4455('0x33')]=_[_0x4455('0x32')](_0xbdaf15['model'],qs[_0x4455('0x34')](_0x58acda[_0x4455('0x2f')]['fields']));_0x485724['attributes']=_0x485724[_0x4455('0x33')][_0x4455('0x35')]?_0x485724[_0x4455('0x33')]:_0xbdaf15[_0x4455('0x2e')];if(_0x58acda[_0x4455('0x2f')]['includeAll']){_0x485724[_0x4455('0x3f')]=[{'all':!![]}];}_0x485724=_['merge']({},_0x485724,_0x58acda[_0x4455('0x44')]);return db[_0x4455('0x2b')][_0x4455('0x45')](_0x485724)[_0x4455('0x24')](handleEntityNotFound(_0x5cccaa,null))['then'](respondWithResult(_0x5cccaa,null))['catch'](handleError(_0x5cccaa,null));};exports[_0x4455('0x46')]=function(_0x1c2fb8,_0x345bef){return db['ChatTransferReport']['create'](_0x1c2fb8[_0x4455('0x47')],{})[_0x4455('0x24')](respondWithResult(_0x345bef,0xc9))[_0x4455('0x48')](handleError(_0x345bef,null));};exports['update']=function(_0x324d36,_0x5e2f16){if(_0x324d36[_0x4455('0x47')]['id']){delete _0x324d36[_0x4455('0x47')]['id'];}return db[_0x4455('0x2b')][_0x4455('0x45')]({'where':{'id':_0x324d36[_0x4455('0x43')]['id']}})[_0x4455('0x24')](handleEntityNotFound(_0x5e2f16,null))[_0x4455('0x24')](saveUpdates(_0x324d36['body'],null))['then'](respondWithResult(_0x5e2f16,null))[_0x4455('0x48')](handleError(_0x5e2f16,null));};exports[_0x4455('0x25')]=function(_0x3c49a0,_0x595315){return db['ChatTransferReport'][_0x4455('0x45')]({'where':{'id':_0x3c49a0[_0x4455('0x43')]['id']}})[_0x4455('0x24')](handleEntityNotFound(_0x595315,null))[_0x4455('0x24')](removeEntity(_0x595315,null))[_0x4455('0x48')](handleError(_0x595315,null));};exports['describe']=function(_0x5c2bdf,_0x2c9368){return db[_0x4455('0x2b')]['describe']()[_0x4455('0x24')](respondWithResult(_0x2c9368,null))[_0x4455('0x48')](handleError(_0x2c9368,null));};
\ No newline at end of file
index 5b7539c..6ae73fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb24a=['exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','api','bluebird','request-promise','path','../../config/environment','./chatTransferReport.attributes'];(function(_0x25b276,_0x342433){var _0x4955dd=function(_0x475474){while(--_0x475474){_0x25b276['push'](_0x25b276['shift']());}};_0x4955dd(++_0x342433);}(_0xb24a,0x1b2));var _0xab24=function(_0x11b1b3,_0xf3cc69){_0x11b1b3=_0x11b1b3-0x0;var _0x437029=_0xb24a[_0x11b1b3];return _0x437029;};'use strict';var _=require(_0xab24('0x0'));var util=require(_0xab24('0x1'));var logger=require('../../config/logger')(_0xab24('0x2'));var moment=require('moment');var BPromise=require(_0xab24('0x3'));var rp=require(_0xab24('0x4'));var fs=require('fs');var path=require(_0xab24('0x5'));var rimraf=require('rimraf');var config=require(_0xab24('0x6'));var attributes=require(_0xab24('0x7'));module[_0xab24('0x8')]=function(_0x409fa6,_0x4d6f2b){return _0x409fa6[_0xab24('0x9')](_0xab24('0xa'),attributes,{'tableName':_0xab24('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xab24('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x83a6=['../../config/environment','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x4c3c7a,_0x3ed091){var _0x1b6227=function(_0xf10f2a){while(--_0xf10f2a){_0x4c3c7a['push'](_0x4c3c7a['shift']());}};_0x1b6227(++_0x3ed091);}(_0x83a6,0x1f4));var _0x683a=function(_0x3bffe4,_0x15170c){_0x3bffe4=_0x3bffe4-0x0;var _0x4ec340=_0x83a6[_0x3bffe4];return _0x4ec340;};'use strict';var _=require(_0x683a('0x0'));var util=require('util');var logger=require(_0x683a('0x1'))(_0x683a('0x2'));var moment=require('moment');var BPromise=require(_0x683a('0x3'));var rp=require(_0x683a('0x4'));var fs=require('fs');var path=require(_0x683a('0x5'));var rimraf=require(_0x683a('0x6'));var config=require(_0x683a('0x7'));var attributes=require('./chatTransferReport.attributes');module[_0x683a('0x8')]=function(_0x4d6ef3,_0x9e28d2){return _0x4d6ef3[_0x683a('0x9')](_0x683a('0xa'),attributes,{'tableName':_0x683a('0xb'),'paranoid':![],'indexes':[{'name':_0x683a('0xc'),'fields':[_0x683a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 675d2e3..aeadd20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x1a931a,_0x309ef0){var _0x239d88=function(_0x4b5df8){while(--_0x4b5df8){_0x1a931a['push'](_0x1a931a['shift']());}};_0x239d88(++_0x309ef0);}(_0x049e,0x64));var _0xe049=function(_0x466e57,_0x21b819){_0x466e57=_0x466e57-0x0;var _0x34df42=_0x049e[_0x466e57];return _0x34df42;};'use strict';var _=require(_0xe049('0x0'));var util=require(_0xe049('0x1'));var moment=require(_0xe049('0x2'));var BPromise=require(_0xe049('0x3'));var rs=require(_0xe049('0x4'));var fs=require('fs');var Redis=require(_0xe049('0x5'));var db=require(_0xe049('0x6'))['db'];var utils=require(_0xe049('0x7'));var logger=require(_0xe049('0x8'))(_0xe049('0x9'));var config=require('../../config/environment');var jayson=require(_0xe049('0xa'));var client=jayson['client'][_0xe049('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xc9b888,_0x5d9590,_0x108446){return new BPromise(function(_0xbb691f,_0x50e19b){return client[_0xe049('0xc')](_0xc9b888,_0x108446)[_0xe049('0xd')](function(_0x5155f4){logger[_0xe049('0xe')](_0xe049('0xf'),_0x5d9590,'request\x20sent');logger[_0xe049('0x10')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x5d9590,_0xe049('0x11'),JSON[_0xe049('0x12')](_0x5155f4));if(_0x5155f4[_0xe049('0x13')]){if(_0x5155f4[_0xe049('0x13')][_0xe049('0x14')]===0x1f4){logger['error'](_0xe049('0xf'),_0x5d9590,_0x5155f4[_0xe049('0x13')][_0xe049('0x15')]);return _0x50e19b(_0x5155f4[_0xe049('0x13')]['message']);}logger[_0xe049('0x13')](_0xe049('0xf'),_0x5d9590,_0x5155f4[_0xe049('0x13')][_0xe049('0x15')]);return _0xbb691f(_0x5155f4[_0xe049('0x13')][_0xe049('0x15')]);}else{logger[_0xe049('0xe')](_0xe049('0xf'),_0x5d9590,_0xe049('0x11'));_0xbb691f(_0x5155f4[_0xe049('0x16')][_0xe049('0x15')]);}})[_0xe049('0x17')](function(_0x54be48){logger['error'](_0xe049('0xf'),_0x5d9590,_0x54be48);_0x50e19b(_0x54be48);});});}
\ No newline at end of file
+var _0xdd3f=['../../config/environment','jayson/promise','client','http','request','then','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x3a40df,_0x2f0e18){var _0x3cd1a5=function(_0x61b195){while(--_0x61b195){_0x3a40df['push'](_0x3a40df['shift']());}};_0x3cd1a5(++_0x2f0e18);}(_0xdd3f,0x13a));var _0xfdd3=function(_0x31425d,_0x2e0f43){_0x31425d=_0x31425d-0x0;var _0xe15235=_0xdd3f[_0x31425d];return _0xe15235;};'use strict';var _=require(_0xfdd3('0x0'));var util=require(_0xfdd3('0x1'));var moment=require(_0xfdd3('0x2'));var BPromise=require(_0xfdd3('0x3'));var rs=require(_0xfdd3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfdd3('0x5'))['db'];var utils=require(_0xfdd3('0x6'));var logger=require('../../config/logger')(_0xfdd3('0x7'));var config=require(_0xfdd3('0x8'));var jayson=require(_0xfdd3('0x9'));var client=jayson[_0xfdd3('0xa')][_0xfdd3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x946fc0,_0x35a66a,_0x4c9aa7){return new BPromise(function(_0xca31aa,_0x59e6bb){return client[_0xfdd3('0xc')](_0x946fc0,_0x4c9aa7)[_0xfdd3('0xd')](function(_0x478914){logger['info'](_0xfdd3('0xe'),_0x35a66a,'request\x20sent');logger[_0xfdd3('0xf')](_0xfdd3('0x10'),_0x35a66a,'request\x20sent',JSON[_0xfdd3('0x11')](_0x478914));if(_0x478914[_0xfdd3('0x12')]){if(_0x478914[_0xfdd3('0x12')][_0xfdd3('0x13')]===0x1f4){logger['error'](_0xfdd3('0xe'),_0x35a66a,_0x478914['error'][_0xfdd3('0x14')]);return _0x59e6bb(_0x478914[_0xfdd3('0x12')][_0xfdd3('0x14')]);}logger[_0xfdd3('0x12')](_0xfdd3('0xe'),_0x35a66a,_0x478914[_0xfdd3('0x12')][_0xfdd3('0x14')]);return _0xca31aa(_0x478914['error']['message']);}else{logger['info'](_0xfdd3('0xe'),_0x35a66a,_0xfdd3('0x15'));_0xca31aa(_0x478914['result'][_0xfdd3('0x14')]);}})[_0xfdd3('0x16')](function(_0x1e5e31){logger['error'](_0xfdd3('0xe'),_0x35a66a,_0x1e5e31);_0x59e6bb(_0x1e5e31);});});}
\ No newline at end of file
index 66a0e88..0441927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7de=['/:id','show','post','create','put','update','delete','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x5b5eb4,_0x117c87){var _0x42af53=function(_0xdf6fcb){while(--_0xdf6fcb){_0x5b5eb4['push'](_0x5b5eb4['shift']());}};_0x42af53(++_0x117c87);}(_0xd7de,0x7a));var _0xed7d=function(_0x25f397,_0x4d1ecc){_0x25f397=_0x25f397-0x0;var _0x11f679=_0xd7de[_0x25f397];return _0x11f679;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xed7d('0x0'));var express=require('express');var router=express[_0xed7d('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xed7d('0x2'));var interaction=require(_0xed7d('0x3'));var config=require(_0xed7d('0x4'));var controller=require(_0xed7d('0x5'));router[_0xed7d('0x6')]('/',auth[_0xed7d('0x7')](),controller[_0xed7d('0x8')]);router[_0xed7d('0x6')](_0xed7d('0x9'),auth[_0xed7d('0x7')](),controller[_0xed7d('0xa')]);router['get'](_0xed7d('0xb'),auth['isAuthenticated'](),controller[_0xed7d('0xc')]);router[_0xed7d('0xd')]('/',auth['isAuthenticated'](),controller[_0xed7d('0xe')]);router[_0xed7d('0xf')](_0xed7d('0xb'),auth[_0xed7d('0x7')](),controller[_0xed7d('0x10')]);router[_0xed7d('0x11')](_0xed7d('0xb'),auth[_0xed7d('0x7')](),controller['destroy']);module[_0xed7d('0x12')]=router;
\ No newline at end of file
+var _0x70f5=['post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x3f785e,_0x5962ef){var _0xc6f088=function(_0xcca55e){while(--_0xcca55e){_0x3f785e['push'](_0x3f785e['shift']());}};_0xc6f088(++_0x5962ef);}(_0x70f5,0xed));var _0x570f=function(_0xa0c7ce,_0x1d353a){_0xa0c7ce=_0xa0c7ce-0x0;var _0xce382a=_0x70f5[_0xa0c7ce];return _0xce382a;};'use strict';var multer=require(_0x570f('0x0'));var util=require(_0x570f('0x1'));var path=require(_0x570f('0x2'));var timeout=require(_0x570f('0x3'));var express=require(_0x570f('0x4'));var router=express[_0x570f('0x5')]();var fs_extra=require(_0x570f('0x6'));var auth=require(_0x570f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x570f('0x8'));var controller=require(_0x570f('0x9'));router[_0x570f('0xa')]('/',auth[_0x570f('0xb')](),controller[_0x570f('0xc')]);router[_0x570f('0xa')]('/describe',auth[_0x570f('0xb')](),controller[_0x570f('0xd')]);router['get'](_0x570f('0xe'),auth[_0x570f('0xb')](),controller['show']);router[_0x570f('0xf')]('/',auth['isAuthenticated'](),controller[_0x570f('0x10')]);router['put'](_0x570f('0xe'),auth[_0x570f('0xb')](),controller[_0x570f('0x11')]);router[_0x570f('0x12')]('/:id',auth[_0x570f('0xb')](),controller[_0x570f('0x13')]);module[_0x570f('0x14')]=router;
\ No newline at end of file
index 4350146..5c0d4e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8366=['parse','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','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','We\x20are\x20here!','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Feedback','star','thumb','stringify','input','text','name','getDataValue','onlineForm','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm'];(function(_0x9fa101,_0x4f61d7){var _0x3b90a7=function(_0xf6d40d){while(--_0xf6d40d){_0x9fa101['push'](_0x9fa101['shift']());}};_0x3b90a7(++_0x4f61d7);}(_0x8366,0xd7));var _0x6836=function(_0x1fff4c,_0x2a2264){_0x1fff4c=_0x1fff4c-0x0;var _0x892602=_0x8366[_0x1fff4c];return _0x892602;};'use strict';var Sequelize=require(_0x6836('0x0'));var rs=require(_0x6836('0x1'));module[_0x6836('0x2')]={'name':{'type':Sequelize[_0x6836('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x6836('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x6836('0x4')},'mapKeyOffline':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x4')},'key':{'type':Sequelize[_0x6836('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x5')},'customerAlias':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6836('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'defaultValue':_0x6836('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x6836('0x3')]},'animation':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x6836('0xa')](_0x6836('0xb'),'squared'),'defaultValue':_0x6836('0xb')},'header_online':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0xc')},'start_chat_button':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize['STRING'],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x6836('0xe')]},'closingQuestion':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0xf')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x10')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x6836('0x11')},'placeholderMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x12')},'closingMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x13')},'closingMessageButton':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x14')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x15')},'ratingType':{'type':Sequelize[_0x6836('0xa')](_0x6836('0x16'),_0x6836('0x17')),'defaultValue':_0x6836('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x6836('0xe')],'defaultValue':function(){return JSON[_0x6836('0x18')]({'items':[{'type':_0x6836('0x19'),'variable':null,'config':{'placeholder':'name','type':_0x6836('0x1a'),'required':!![]},'props':{'title':_0x6836('0x1b'),'helpText':''}},{'type':_0x6836('0x19'),'props':{'title':_0x6836('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x6836('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x6836('0x1c')](_0x6836('0x1d'))?JSON['parse'](this[_0x6836('0x1c')]('onlineForm')):{};},'set':function(_0x42b200){return this[_0x6836('0x1e')](_0x6836('0x1d'),JSON[_0x6836('0x18')](_0x42b200));}},'offlineForm':{'type':Sequelize[_0x6836('0xe')],'defaultValue':function(){return JSON[_0x6836('0x18')]({'items':[{'type':_0x6836('0x19'),'props':{'title':_0x6836('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x6836('0x4'),'type':_0x6836('0x4')},'variable':null},{'type':_0x6836('0x1f'),'config':{'placeholder':_0x6836('0x20')},'props':{'title':_0x6836('0x20'),'helpText':_0x6836('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x6836('0x1c')](_0x6836('0x22'))?JSON[_0x6836('0x23')](this[_0x6836('0x1c')](_0x6836('0x22'))):{};},'set':function(_0x5371af){return this[_0x6836('0x1e')](_0x6836('0x22'),JSON[_0x6836('0x18')](_0x5371af));}},'token':{'type':Sequelize[_0x6836('0x3')],'defaultValue':function(){return rs[_0x6836('0x24')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x6836('0x3')]},'forwardOffline':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x6836('0x3')]},'waitingTitle':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x25')},'waitingMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x27')},'offlineMessageBody':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x28')},'skipUnmanaged':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x29')},'sendUnmanaged':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x14')},'enableCustomerAttachment':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x6836('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x6836('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x6836('0x2a');}},'notificationSound':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0x6836('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2c')},'verticalAlignment':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2d')},'defaultTitle':{'type':Sequelize[_0x6836('0x3')]},'customerAvatar':{'type':Sequelize[_0x6836('0xe')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'defaultValue':_0x6836('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6836('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6836('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2f')},'systemAvatar':{'type':Sequelize[_0x6836('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6836('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![],'comment':_0x6836('0x30'),'set':function(_0x37a222){if(!_0x37a222)this['setDataValue'](_0x6836('0x31'),null);this[_0x6836('0x1e')]('mandatoryDisposition',_0x37a222);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x6836('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x6836('0xe')]}};
\ No newline at end of file
+var _0xc741=['thumb','stringify','name','text','input','email','getDataValue','onlineForm','setDataValue','Comments','Leave\x20your\x20comments','offlineForm','parse','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','bottom_right','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','STRING','address','Agent','#011F6A','INTEGER','BOOLEAN','ENUM','rounded','squared','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Skip','Feedback','star'];(function(_0x39447b,_0x42c62){var _0x1521a5=function(_0x3c1715){while(--_0x3c1715){_0x39447b['push'](_0x39447b['shift']());}};_0x1521a5(++_0x42c62);}(_0xc741,0x190));var _0x1c74=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xc741[_0x346737];return _0x1ade2e;};'use strict';var Sequelize=require(_0x1c74('0x0'));var rs=require(_0x1c74('0x1'));module['exports']={'name':{'type':Sequelize[_0x1c74('0x2')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1c74('0x3')},'description':{'type':Sequelize[_0x1c74('0x2')]},'mapKey':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':'email'},'key':{'type':Sequelize[_0x1c74('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x4')},'customerAlias':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1c74('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x1c74('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x1c74('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x1c74('0x2')]},'animation':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x1c74('0x8')](_0x1c74('0x9'),_0x1c74('0xa')),'defaultValue':_0x1c74('0x9')},'header_online':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0xb')},'offline_chat_button':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0xc')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x1c74('0xd')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x1c74('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x1c74('0xf')]},'closingQuestion':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x1c74('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x11')},'noteTitle':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x12')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0x1c74('0x13')},'closingMessage':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0xc')},'skipMessageButton':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x14')},'conditionAgreement':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x15')},'ratingType':{'type':Sequelize['ENUM'](_0x1c74('0x16'),_0x1c74('0x17')),'defaultValue':_0x1c74('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x1c74('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x1c74('0xf')],'defaultValue':function(){return JSON[_0x1c74('0x18')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x1c74('0x19'),'type':_0x1c74('0x1a'),'required':!![]},'props':{'title':_0x1c74('0x19'),'helpText':''}},{'type':_0x1c74('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x1c74('0x1c'),'type':_0x1c74('0x1c')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x1c74('0x1d')](_0x1c74('0x1e'))?JSON['parse'](this['getDataValue'](_0x1c74('0x1e'))):{};},'set':function(_0x237934){return this[_0x1c74('0x1f')](_0x1c74('0x1e'),JSON[_0x1c74('0x18')](_0x237934));}},'offlineForm':{'type':Sequelize[_0x1c74('0xf')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x1c74('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x1c74('0x1c'),'type':'email'},'variable':null},{'type':'textarea','config':{'placeholder':_0x1c74('0x20')},'props':{'title':'Comments','helpText':_0x1c74('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x1c74('0x1d')](_0x1c74('0x22'))?JSON[_0x1c74('0x23')](this[_0x1c74('0x1d')](_0x1c74('0x22'))):{};},'set':function(_0x3eec6c){return this[_0x1c74('0x1f')](_0x1c74('0x22'),JSON[_0x1c74('0x18')](_0x3eec6c));}},'token':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':function(){return rs[_0x1c74('0x24')]();}},'autoclose':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x1c74('0x2')]},'waitingTitle':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x25')},'waitingMessage':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x27')},'offlineMessageBody':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x1c74('0x14')},'sendUnmanaged':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x1c74('0xf')]},'showAgentAvatar':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x1c74('0x2')]},'notificationTemplate':{'type':Sequelize[_0x1c74('0xf')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x1c74('0x28')},'verticalAlignment':{'type':Sequelize[_0x1c74('0x6')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x1c74('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1c74('0x29'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x1c74('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x1c74('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':_0x1c74('0x2a')},'systemAvatar':{'type':Sequelize[_0x1c74('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x1c74('0x2b')},'mandatoryDisposition':{'type':Sequelize[_0x1c74('0x7')],'defaultValue':![],'comment':_0x1c74('0x2c'),'set':function(_0x471a35){if(!_0x471a35)this[_0x1c74('0x1f')]('mandatoryDispositionPauseId',null);this[_0x1c74('0x1f')](_0x1c74('0x2d'),_0x471a35);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x1c74('0x2')]},'vidaooTopic':{'type':Sequelize[_0x1c74('0x2')],'allowNull':![],'defaultValue':_0x1c74('0x2e')},'vidaooNote':{'type':Sequelize[_0x1c74('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x1c74('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index f561cec..1674dd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5659=['MailAccount','readFileSync','render','toPairs','ChatOfflineMessage','originalname','server','files','attachments','basename','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','service','host','secure','authentication','auth','pass','SendMail','sendMail','email','offlineMessageSubject','openNewInteraction','mimetype','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','NotifyMailAccount','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','hasOwnProperty','Contact','User','fullname','internal','Tag','Tags','color','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','Interval','getProactiveActions','virtual','License','Intervals','push','some','server/files/chat/iframe.ejs','utf8','x-real-ip','connection','remoteAddress','verticalAlignment','textColor','color_button','backgroundColor','addApplications','ChatApplication','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','false','onlineForm','items','fromKey','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','client','http','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','limit','undefined','count','offset','apply','reject','then','destroy','get','ChatWebsites','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','show','params','keys','includeAll','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','update','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','removeDispositions','ids','CannedAnswer','getAnswers','nolimit','order','removeAnswers','addLogo','sitepic','agentAvatar','file','customerAvatar','filename','addSystemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','existsSync','root','server/files/images/logos/','download','getAvatar','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','systemAvatar','notify','user-agent-parser','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','Contacts','DESC','Applications','List','account','applications','list','orderBy','priority','asc','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','referer','browser','format','%s\x20%s','version','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','lastName','messageId','created','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','forcedOwnership','Start','startRouting','EventManager','offline','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5659,0x184));var _0x9565=function(_0x525290,_0x493c29){_0x525290=_0x525290-0x0;var _0x1231ca=_0x5659[_0x525290];return _0x1231ca;};'use strict';var emlformat=require(_0x9565('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9565('0x1'));var jsonpatch=require(_0x9565('0x2'));var rp=require('request-promise');var moment=require(_0x9565('0x3'));var BPromise=require(_0x9565('0x4'));var Mustache=require(_0x9565('0x5'));var util=require('util');var path=require(_0x9565('0x6'));var sox=require(_0x9565('0x7'));var csv=require(_0x9565('0x8'));var ejs=require(_0x9565('0x9'));var fs=require('fs');var fs_extra=require(_0x9565('0xa'));var _=require('lodash');var squel=require(_0x9565('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9565('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9565('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9565('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9565('0xf'));var logger=require(_0x9565('0x10'))(_0x9565('0x11'));var utils=require(_0x9565('0x12'));var config=require(_0x9565('0x13'));var licenseUtil=require(_0x9565('0x14'));var db=require(_0x9565('0x15'))['db'];config[_0x9565('0x16')]=_[_0x9565('0x17')](config[_0x9565('0x16')],{'host':_0x9565('0x18'),'port':0x18eb});var socket=require(_0x9565('0x19'))(new Redis(config[_0x9565('0x16')]));require(_0x9565('0x1a'))[_0x9565('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9565('0x1c')][_0x9565('0x1d')]({'port':0x232c});var client9002=jayson[_0x9565('0x1c')][_0x9565('0x1d')]({'port':0x232a});var client9003=jayson[_0x9565('0x1c')]['http']({'port':0x232b});var client9001=jayson[_0x9565('0x1c')][_0x9565('0x1d')]({'port':0x2329});function respondWithRpcPromise(_0x25b90f,_0x48194a,_0x3e5c7c,_0x368167){return new BPromise(function(_0x368bdc,_0x2231c9){var _0x55580f=_0x368167||client;return _0x55580f['request'](_0x25b90f,_0x3e5c7c)['then'](function(_0x21a67c){logger[_0x9565('0x1e')]('ChatWebsite,\x20%s,\x20%s',_0x48194a,_0x9565('0x1f'));logger[_0x9565('0x20')](_0x9565('0x21'),_0x48194a,_0x9565('0x1f'),JSON[_0x9565('0x22')](_0x21a67c));if(_0x21a67c[_0x9565('0x23')]){if(_0x21a67c[_0x9565('0x23')][_0x9565('0x24')]===0x1f4){logger['error'](_0x9565('0x25'),_0x48194a,_0x21a67c[_0x9565('0x23')][_0x9565('0x26')]);return _0x2231c9(_0x21a67c['error'][_0x9565('0x26')]);}logger[_0x9565('0x23')](_0x9565('0x25'),_0x48194a,_0x21a67c[_0x9565('0x23')]['message']);return _0x368bdc(_0x21a67c[_0x9565('0x23')][_0x9565('0x26')]);}else{logger['info'](_0x9565('0x25'),_0x48194a,'request\x20sent');_0x368bdc(_0x21a67c[_0x9565('0x27')]['message']);}})[_0x9565('0x28')](function(_0x5184cf){logger['error'](_0x9565('0x25'),_0x48194a,_0x5184cf);_0x2231c9(_0x5184cf);});});}function respondWithStatusCode(_0x55f815,_0x177011){_0x177011=_0x177011||0xcc;return function(_0xee7af0){if(_0xee7af0){return _0x55f815[_0x9565('0x29')](_0x177011);}return _0x55f815[_0x9565('0x2a')](_0x177011)['end']();};}function respondWithResult(_0x3ef75d,_0xbd3657){_0xbd3657=_0xbd3657||0xc8;return function(_0xea82d8){if(_0xea82d8){return _0x3ef75d[_0x9565('0x2a')](_0xbd3657)[_0x9565('0x2b')](_0xea82d8);}};}function respondWithFilteredResult(_0x824ec2,_0x13eb35){return function(_0x455c9e){if(_0x455c9e){var _0x15b688=typeof _0x13eb35['offset']==='undefined'&&typeof _0x13eb35[_0x9565('0x2c')]===_0x9565('0x2d');var _0x89014c=_0x455c9e[_0x9565('0x2e')];var _0x5422c4=_0x15b688?0x0:_0x13eb35[_0x9565('0x2f')];var _0x1bf8d5=_0x15b688?_0x455c9e['count']:_0x13eb35[_0x9565('0x2f')]+_0x13eb35[_0x9565('0x2c')];var _0x88788e;if(_0x1bf8d5>=_0x89014c){_0x1bf8d5=_0x89014c;_0x88788e=0xc8;}else{_0x88788e=0xce;}_0x824ec2['status'](_0x88788e);return _0x824ec2['set']('Content-Range',_0x5422c4+'-'+_0x1bf8d5+'/'+_0x89014c)[_0x9565('0x2b')](_0x455c9e);}return null;};}function patchUpdates(_0x3d1b8b){return function(_0x2326a4){try{jsonpatch[_0x9565('0x30')](_0x2326a4,_0x3d1b8b,!![]);}catch(_0x4bcb8b){return BPromise[_0x9565('0x31')](_0x4bcb8b);}return _0x2326a4['save']();};}function saveUpdates(_0x41b430,_0x7a0543){return function(_0x4b931f){if(_0x4b931f){return _0x4b931f['update'](_0x41b430)[_0x9565('0x32')](function(_0x21f3a4){return _0x21f3a4;});}return null;};}function removeEntity(_0x27bc4f,_0x8e7a7a){return function(_0x466de8){if(_0x466de8){return _0x466de8[_0x9565('0x33')]()[_0x9565('0x32')](function(){var _0x442cb4=_0x466de8[_0x9565('0x34')]({'plain':!![]});var _0x1c66c9=_0x9565('0x35');return db['UserProfileResource'][_0x9565('0x33')]({'where':{'type':_0x1c66c9,'resourceId':_0x442cb4['id']}})[_0x9565('0x32')](function(){return _0x466de8;});})[_0x9565('0x32')](function(){_0x27bc4f[_0x9565('0x2a')](0xcc)[_0x9565('0x36')]();});}};}function handleEntityNotFound(_0x48056b,_0x1196de){return function(_0x2d2df3){if(!_0x2d2df3){_0x48056b[_0x9565('0x29')](0x194);}return _0x2d2df3;};}function handleError(_0x468368,_0x1beb27){_0x1beb27=_0x1beb27||0x1f4;return function(_0x2cf54e){logger[_0x9565('0x23')](_0x2cf54e[_0x9565('0x37')]);if(_0x2cf54e[_0x9565('0x38')]){delete _0x2cf54e[_0x9565('0x38')];}_0x468368[_0x9565('0x2a')](_0x1beb27)[_0x9565('0x39')](_0x2cf54e);};}exports[_0x9565('0x3a')]=function(_0x4ef5fd,_0x4bad3a){var _0x5ecea7={'include':[{'model':db[_0x9565('0x3b')],'as':_0x9565('0x3c')}]},_0x501eeb={},_0x213158={'count':0x0,'rows':[]};var _0x541586=_[_0x9565('0x3d')](db[_0x9565('0x3e')][_0x9565('0x3f')],function(_0x53b9e){return{'name':_0x53b9e[_0x9565('0x40')],'type':_0x53b9e[_0x9565('0x41')][_0x9565('0x42')]};});_0x501eeb[_0x9565('0x43')]=_['map'](_0x541586,'name');_0x501eeb[_0x9565('0x44')]=_['keys'](_0x4ef5fd[_0x9565('0x44')]);_0x501eeb[_0x9565('0x45')]=_[_0x9565('0x46')](_0x501eeb[_0x9565('0x43')],_0x501eeb[_0x9565('0x44')]);_0x5ecea7[_0x9565('0x47')]=_['intersection'](_0x501eeb[_0x9565('0x43')],qs['fields'](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x48')]));_0x5ecea7[_0x9565('0x47')]=_0x5ecea7[_0x9565('0x47')][_0x9565('0x49')]?_0x5ecea7[_0x9565('0x47')]:_0x501eeb[_0x9565('0x43')];if(!_0x4ef5fd[_0x9565('0x44')]['hasOwnProperty']('nolimit')){_0x5ecea7['limit']=qs[_0x9565('0x2c')](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x2c')]);_0x5ecea7['offset']=qs[_0x9565('0x2f')](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x2f')]);}_0x5ecea7['order']=qs['sort'](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x4a')]);_0x5ecea7['where']=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x4ef5fd[_0x9565('0x44')],_0x501eeb[_0x9565('0x45')]),_0x541586);if(_0x4ef5fd[_0x9565('0x44')][_0x9565('0x4c')]){_0x5ecea7[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x5ecea7[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x541586,function(_0x504958){if(_0x504958['type']!==_0x9565('0x4f')){var _0x1c348d={};_0x1c348d[_0x504958[_0x9565('0x38')]]={'$like':'%'+_0x4ef5fd['query']['filter']+'%'};return _0x1c348d;}})});}_0x5ecea7=_[_0x9565('0x4e')]({},_0x5ecea7,_0x4ef5fd['options']);var _0x196dda={'where':_0x5ecea7[_0x9565('0x4d')]};return db[_0x9565('0x3e')][_0x9565('0x2e')](_0x196dda)[_0x9565('0x32')](function(_0x3e20b6){_0x213158['count']=_0x3e20b6;if(_0x4ef5fd[_0x9565('0x44')]['includeAll']){_0x5ecea7[_0x9565('0x50')]=[{'all':!![]}];}return db['ChatWebsite'][_0x9565('0x51')](_0x5ecea7);})['then'](function(_0x388a49){_0x213158[_0x9565('0x52')]=_0x388a49;return _0x213158;})[_0x9565('0x32')](respondWithFilteredResult(_0x4bad3a,_0x5ecea7))[_0x9565('0x28')](handleError(_0x4bad3a,null));};exports[_0x9565('0x53')]=function(_0xe5234a,_0x1dfb89){var _0x1b2101={'raw':![],'where':{'id':_0xe5234a[_0x9565('0x54')]['id']},'include':[{'model':db['Pause'],'as':_0x9565('0x3c')}]},_0x3d9b07={};_0x3d9b07[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0x3e')]['rawAttributes']);_0x3d9b07['query']=_['keys'](_0xe5234a['query']);_0x3d9b07[_0x9565('0x45')]=_['intersection'](_0x3d9b07[_0x9565('0x43')],_0x3d9b07[_0x9565('0x44')]);_0x1b2101[_0x9565('0x47')]=_[_0x9565('0x46')](_0x3d9b07['model'],qs['fields'](_0xe5234a[_0x9565('0x44')]['fields']));_0x1b2101[_0x9565('0x47')]=_0x1b2101['attributes']['length']?_0x1b2101[_0x9565('0x47')]:_0x3d9b07[_0x9565('0x43')];if(_0xe5234a[_0x9565('0x44')][_0x9565('0x56')]){_0x1b2101[_0x9565('0x50')]=[{'all':!![]}];}_0x1b2101=_[_0x9565('0x4e')]({},_0x1b2101,_0xe5234a[_0x9565('0x57')]);return db['ChatWebsite']['find'](_0x1b2101)['then'](handleEntityNotFound(_0x1dfb89,null))[_0x9565('0x32')](respondWithResult(_0x1dfb89,null))[_0x9565('0x28')](handleError(_0x1dfb89,null));};exports['create']=function(_0x227978,_0x46e569){return db[_0x9565('0x3e')][_0x9565('0x58')](_0x227978[_0x9565('0x59')],{})[_0x9565('0x32')](function(_0x4e485c){var _0x32c96f=_0x227978[_0x9565('0x5a')]['get']({'plain':!![]});if(!_0x32c96f)throw new Error(_0x9565('0x5b'));if(_0x32c96f[_0x9565('0x5c')]===_0x9565('0x5a')){var _0x252612=_0x4e485c[_0x9565('0x34')]({'plain':!![]});var _0x5b9a92='ChatWebsites';return db[_0x9565('0x5d')][_0x9565('0x5e')]({'where':{'name':_0x5b9a92,'userProfileId':_0x32c96f[_0x9565('0x5f')]},'raw':!![]})[_0x9565('0x32')](function(_0x3fbceb){if(_0x3fbceb&&_0x3fbceb[_0x9565('0x60')]===0x0){return db[_0x9565('0x61')][_0x9565('0x58')]({'name':_0x252612[_0x9565('0x38')],'resourceId':_0x252612['id'],'type':_0x3fbceb['name'],'sectionId':_0x3fbceb['id']},{})[_0x9565('0x32')](function(){return _0x4e485c;});}else{return _0x4e485c;}})[_0x9565('0x28')](function(_0x5aa6a4){logger[_0x9565('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5aa6a4);throw _0x5aa6a4;});}return _0x4e485c;})[_0x9565('0x32')](respondWithResult(_0x46e569,0xc9))[_0x9565('0x28')](handleError(_0x46e569,null));};exports[_0x9565('0x62')]=function(_0x3fcf11,_0x5dd525){if(_0x3fcf11[_0x9565('0x59')]['id']){delete _0x3fcf11['body']['id'];}return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x3fcf11['params']['id']},'include':[{'model':db[_0x9565('0x3b')],'as':_0x9565('0x3c')}]})[_0x9565('0x32')](handleEntityNotFound(_0x5dd525,null))[_0x9565('0x32')](saveUpdates(_0x3fcf11['body'],null))[_0x9565('0x32')](respondWithResult(_0x5dd525,null))[_0x9565('0x28')](handleError(_0x5dd525,null));};exports[_0x9565('0x33')]=function(_0x2969e1,_0x30d9f8){return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x2969e1[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x30d9f8,null))[_0x9565('0x32')](removeEntity(_0x30d9f8,null))[_0x9565('0x28')](handleError(_0x30d9f8,null));};exports[_0x9565('0x63')]=function(_0x1d86b1,_0x31bad0){return db[_0x9565('0x3e')][_0x9565('0x63')]()[_0x9565('0x32')](respondWithResult(_0x31bad0,null))[_0x9565('0x28')](handleError(_0x31bad0,null));};exports[_0x9565('0x64')]=function(_0x49bd68,_0x5cc045,_0x1b312f){if(_0x49bd68['body']['id']){delete _0x49bd68['body']['id'];}return db[_0x9565('0x3e')]['find']({'where':{'id':_0x49bd68[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x5cc045,null))[_0x9565('0x32')](function(_0x4da260){if(_0x4da260){_0x49bd68['body'][_0x9565('0x65')]=_0x4da260['id'];return db[_0x9565('0x66')][_0x9565('0x58')](_0x49bd68[_0x9565('0x59')]);}})['then'](respondWithResult(_0x5cc045,null))[_0x9565('0x28')](handleError(_0x5cc045,null));};exports[_0x9565('0x67')]=function(_0x2fc720,_0x1da90f,_0x52e42a){var _0x241b58={'raw':![],'where':{}};var _0x4bb3ef={};var _0x23ff48={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9565('0x68')]({'where':{'id':_0x2fc720[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x1da90f,null))[_0x9565('0x32')](function(_0x740b41){if(_0x740b41){_0x4bb3ef[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0x66')]['rawAttributes']);_0x4bb3ef[_0x9565('0x44')]=_['keys'](_0x2fc720[_0x9565('0x44')]);_0x4bb3ef['filters']=_[_0x9565('0x46')](_0x4bb3ef['model'],_0x4bb3ef['query']);_0x241b58[_0x9565('0x47')]=_[_0x9565('0x46')](_0x4bb3ef['model'],qs[_0x9565('0x48')](_0x2fc720[_0x9565('0x44')][_0x9565('0x48')]));_0x241b58[_0x9565('0x47')]=_0x241b58[_0x9565('0x47')]['length']?_0x241b58[_0x9565('0x47')]:_0x4bb3ef[_0x9565('0x43')];if(!_0x2fc720['query']['hasOwnProperty']('nolimit')){_0x241b58[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x2fc720[_0x9565('0x44')][_0x9565('0x2c')]);_0x241b58['offset']=qs['offset'](_0x2fc720['query'][_0x9565('0x2f')]);}_0x241b58['order']=qs['sort'](_0x2fc720[_0x9565('0x44')]['sort']);_0x241b58[_0x9565('0x4d')]=qs['filters'](_[_0x9565('0x4b')](_0x2fc720[_0x9565('0x44')],_0x4bb3ef[_0x9565('0x45')]));_0x241b58[_0x9565('0x4d')]['ChatWebsiteId']=_0x740b41['id'];if(_0x2fc720[_0x9565('0x44')][_0x9565('0x4c')]){_0x241b58['where']=_[_0x9565('0x4e')](_0x241b58[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x241b58[_0x9565('0x47')],function(_0x1d6441){var _0x73491e={};_0x73491e[_0x1d6441]={'$like':'%'+_0x2fc720[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x73491e;})});}_0x241b58=_[_0x9565('0x4e')]({},_0x241b58,_0x2fc720['options']);return db[_0x9565('0x66')][_0x9565('0x2e')]({'where':_0x241b58[_0x9565('0x4d')]})['then'](function(_0x289db8){_0x23ff48['count']=_0x289db8;if(_0x2fc720[_0x9565('0x44')][_0x9565('0x56')]){_0x241b58['include']=[{'all':!![]}];}return db['Disposition'][_0x9565('0x51')](_0x241b58);})[_0x9565('0x32')](function(_0x3b2e3a){_0x23ff48[_0x9565('0x52')]=_0x3b2e3a;return _0x23ff48;});}})[_0x9565('0x32')](respondWithFilteredResult(_0x1da90f,_0x241b58))[_0x9565('0x28')](handleError(_0x1da90f,null));};exports[_0x9565('0x69')]=function(_0x14153a,_0x136d23,_0x3dcb30){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x14153a[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x136d23,null))[_0x9565('0x32')](function(_0x4ddc12){if(_0x4ddc12){return _0x4ddc12[_0x9565('0x69')](_0x14153a[_0x9565('0x44')][_0x9565('0x6a')]);}})['then'](respondWithStatusCode(_0x136d23,null))[_0x9565('0x28')](handleError(_0x136d23,null));};exports['addAnswer']=function(_0x4b580c,_0x51674d,_0x59c7a3){if(_0x4b580c['body']['id']){delete _0x4b580c['body']['id'];}return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x4b580c[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x51674d,null))[_0x9565('0x32')](function(_0x4a365b){if(_0x4a365b){_0x4b580c[_0x9565('0x59')][_0x9565('0x65')]=_0x4a365b['id'];return db[_0x9565('0x6b')][_0x9565('0x58')](_0x4b580c[_0x9565('0x59')]);}})[_0x9565('0x32')](respondWithResult(_0x51674d,null))[_0x9565('0x28')](handleError(_0x51674d,null));};exports[_0x9565('0x6c')]=function(_0x191ef2,_0x4855ba,_0x31841f){var _0xfcc971={'raw':![],'where':{}};var _0x589bfe={};var _0x333727={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9565('0x68')]({'where':{'id':_0x191ef2[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x4855ba,null))[_0x9565('0x32')](function(_0x26f97a){if(_0x26f97a){_0x589bfe['model']=_['keys'](db[_0x9565('0x6b')][_0x9565('0x3f')]);_0x589bfe[_0x9565('0x44')]=_[_0x9565('0x55')](_0x191ef2[_0x9565('0x44')]);_0x589bfe[_0x9565('0x45')]=_['intersection'](_0x589bfe[_0x9565('0x43')],_0x589bfe[_0x9565('0x44')]);_0xfcc971[_0x9565('0x47')]=_[_0x9565('0x46')](_0x589bfe[_0x9565('0x43')],qs[_0x9565('0x48')](_0x191ef2['query'][_0x9565('0x48')]));_0xfcc971['attributes']=_0xfcc971['attributes'][_0x9565('0x49')]?_0xfcc971[_0x9565('0x47')]:_0x589bfe[_0x9565('0x43')];if(!_0x191ef2['query']['hasOwnProperty'](_0x9565('0x6d'))){_0xfcc971[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x191ef2[_0x9565('0x44')][_0x9565('0x2c')]);_0xfcc971[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x191ef2[_0x9565('0x44')][_0x9565('0x2f')]);}_0xfcc971[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x191ef2[_0x9565('0x44')][_0x9565('0x4a')]);_0xfcc971[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x191ef2[_0x9565('0x44')],_0x589bfe['filters']));_0xfcc971['where'][_0x9565('0x65')]=_0x26f97a['id'];if(_0x191ef2[_0x9565('0x44')][_0x9565('0x4c')]){_0xfcc971['where']=_[_0x9565('0x4e')](_0xfcc971['where'],{'$or':_[_0x9565('0x3d')](_0xfcc971['attributes'],function(_0x68c537){var _0x5c648e={};_0x5c648e[_0x68c537]={'$like':'%'+_0x191ef2[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x5c648e;})});}_0xfcc971=_[_0x9565('0x4e')]({},_0xfcc971,_0x191ef2['options']);return db['CannedAnswer']['count']({'where':_0xfcc971[_0x9565('0x4d')]})[_0x9565('0x32')](function(_0xb84af5){_0x333727[_0x9565('0x2e')]=_0xb84af5;if(_0x191ef2[_0x9565('0x44')]['includeAll']){_0xfcc971[_0x9565('0x50')]=[{'all':!![]}];}return db[_0x9565('0x6b')]['findAll'](_0xfcc971);})[_0x9565('0x32')](function(_0x60f1cb){_0x333727[_0x9565('0x52')]=_0x60f1cb;return _0x333727;});}})[_0x9565('0x32')](respondWithFilteredResult(_0x4855ba,_0xfcc971))[_0x9565('0x28')](handleError(_0x4855ba,null));};exports[_0x9565('0x6f')]=function(_0x3c3681,_0x1c8919,_0x2f7863){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x3c3681[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x1c8919,null))[_0x9565('0x32')](function(_0x1273d7){if(_0x1273d7){return _0x1273d7['removeAnswers'](_0x3c3681[_0x9565('0x44')]['ids']);}})[_0x9565('0x32')](respondWithStatusCode(_0x1c8919,null))[_0x9565('0x28')](handleError(_0x1c8919,null));};exports[_0x9565('0x70')]=function(_0x12d896,_0x7bfbad,_0x144119){_0x12d896[_0x9565('0x59')][_0x9565('0x71')]=_0x12d896['file']['filename'];return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x12d896[_0x9565('0x54')]['id']}})['then'](handleEntityNotFound(_0x7bfbad,null))[_0x9565('0x32')](saveUpdates(_0x12d896[_0x9565('0x59')],null))[_0x9565('0x32')](respondWithResult(_0x7bfbad,null))[_0x9565('0x28')](handleError(_0x7bfbad,null));};exports['addAvatar']=function(_0x4a0b24,_0x9f67c4,_0x2789e9){_0x4a0b24[_0x9565('0x59')][_0x9565('0x72')]=_0x4a0b24[_0x9565('0x73')]['filename'];return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x4a0b24[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x9f67c4,null))[_0x9565('0x32')](saveUpdates(_0x4a0b24[_0x9565('0x59')],null))[_0x9565('0x32')](respondWithResult(_0x9f67c4,null))[_0x9565('0x28')](handleError(_0x9f67c4,null));};exports['addCustomerAvatar']=function(_0x254af9,_0x3df9b5,_0x115f49){_0x254af9[_0x9565('0x59')][_0x9565('0x74')]=_0x254af9[_0x9565('0x73')][_0x9565('0x75')];return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x254af9[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x3df9b5,null))['then'](saveUpdates(_0x254af9['body'],null))[_0x9565('0x32')](respondWithResult(_0x3df9b5,null))[_0x9565('0x28')](handleError(_0x3df9b5,null));};exports[_0x9565('0x76')]=function(_0x578230,_0x48c5cc,_0x205407){_0x578230[_0x9565('0x59')]['systemAvatar']=_0x578230[_0x9565('0x73')][_0x9565('0x75')];return db[_0x9565('0x3e')]['find']({'where':{'id':_0x578230[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x48c5cc,null))[_0x9565('0x32')](saveUpdates(_0x578230[_0x9565('0x59')],null))[_0x9565('0x32')](respondWithResult(_0x48c5cc,null))[_0x9565('0x28')](handleError(_0x48c5cc,null));};exports[_0x9565('0x77')]=function(_0x52a9f6,_0x518743,_0x4f8f07){var _0x2bc494=path[_0x9565('0x78')](config['root'],_0x9565('0x79'));var _0x4b25ba={'where':{'id':_0x52a9f6[_0x9565('0x54')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x3ca5ac=![];return require(_0x9565('0x14'))[_0x9565('0x7a')]()[_0x9565('0x32')](function(_0x37db57){if(_0x37db57){_0x3ca5ac=_0x37db57[_0x9565('0x7b')];}})[_0x9565('0x32')](function(){return db['ChatWebsite'][_0x9565('0x5e')](_0x4b25ba);})[_0x9565('0x32')](handleEntityNotFound(_0x518743,null))[_0x9565('0x32')](function(_0x28efec){if(_0x28efec){if(!_[_0x9565('0x7c')](_0x28efec[_0x9565('0x71')])){if(fs[_0x9565('0x7d')](path[_0x9565('0x78')](config['root'],'server/files/images/logos/',_0x28efec[_0x9565('0x71')]))&&_0x3ca5ac){_0x2bc494=path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x7f'),_0x28efec[_0x9565('0x71')]);}}return _0x518743[_0x9565('0x80')](_0x2bc494);}})[_0x9565('0x28')](handleError(_0x518743,null));};exports[_0x9565('0x81')]=function(_0x50cb59,_0x5527e0,_0x2e6f7b){var _0x2b0c93=path[_0x9565('0x78')](config[_0x9565('0x7e')],'server/files/images/avatars/default_avatar.png');var _0x40da21={'where':{'id':_0x50cb59[_0x9565('0x54')]['id']},'attributes':['id',_0x9565('0x72')],'raw':!![]};return db['ChatWebsite'][_0x9565('0x5e')](_0x40da21)[_0x9565('0x32')](handleEntityNotFound(_0x5527e0,null))[_0x9565('0x32')](function(_0x788133){if(_0x788133){if(!_[_0x9565('0x7c')](_0x788133[_0x9565('0x72')])){if(fs['existsSync'](path[_0x9565('0x78')](config[_0x9565('0x7e')],'server/files/images/avatars/',_0x788133['agentAvatar']))){_0x2b0c93=path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x82'),_0x788133[_0x9565('0x72')]);}}return _0x5527e0[_0x9565('0x80')](_0x2b0c93);}})['catch'](handleError(_0x5527e0,null));};exports['getCustomerAvatar']=function(_0x2aa15c,_0x1a5305,_0x621d96){var _0x54a175=path[_0x9565('0x78')](config['root'],_0x9565('0x83'));var _0x41965f={'where':{'id':_0x2aa15c['params']['id']},'attributes':['id',_0x9565('0x74'),_0x9565('0x84')],'raw':!![]};return db[_0x9565('0x3e')][_0x9565('0x5e')](_0x41965f)[_0x9565('0x32')](handleEntityNotFound(_0x1a5305,null))[_0x9565('0x32')](function(_0x1e32ac){if(_0x1e32ac){if(!_[_0x9565('0x7c')](_0x1e32ac[_0x9565('0x74')])){if(fs[_0x9565('0x7d')](path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x82'),_0x1e32ac[_0x9565('0x74')]))&&_0x1e32ac[_0x9565('0x84')]){_0x54a175=path[_0x9565('0x78')](config[_0x9565('0x7e')],'server/files/images/avatars/',_0x1e32ac[_0x9565('0x74')]);}}return _0x1a5305[_0x9565('0x80')](_0x54a175);}})[_0x9565('0x28')](handleError(_0x1a5305,null));};exports[_0x9565('0x85')]=function(_0x5a9e98,_0x42fa57,_0xc70bf9){var _0x3bed0f=path[_0x9565('0x78')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x1b97b0={'where':{'id':_0x5a9e98[_0x9565('0x54')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db['ChatWebsite'][_0x9565('0x5e')](_0x1b97b0)[_0x9565('0x32')](handleEntityNotFound(_0x42fa57,null))['then'](function(_0x103da8){if(_0x103da8){if(!_[_0x9565('0x7c')](_0x103da8[_0x9565('0x86')])){if(fs[_0x9565('0x7d')](path[_0x9565('0x78')](config['root'],_0x9565('0x82'),_0x103da8[_0x9565('0x86')]))){_0x3bed0f=path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x82'),_0x103da8[_0x9565('0x86')]);}}return _0x42fa57['download'](_0x3bed0f);}})[_0x9565('0x28')](handleError(_0x42fa57,null));};exports[_0x9565('0x87')]=function(_0x4a55db,_0x1380b0,_0x49fc36){var _0x54ee85=require(_0x9565('0x88'));var _0x24d554=new _0x54ee85();var _0x325cb5=_0x24d554['setUA'](_0x4a55db['headers'][_0x9565('0x89')])[_0x9565('0x8a')]();var _0x310721={'body':_0x4a55db[_0x9565('0x59')],'channel':_0x9565('0x8b')};var _0x4d26e6=[];var _0x14f4f1=[];var _0xd79dd4={};var _0x40ee8c=![];return db[_0x9565('0x8c')][_0x9565('0x63')]()[_0x9565('0x32')](function(_0x26bb11){if(!_0x26bb11){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))](_0x9565('0x8f'));}_0x4d26e6=_[_0x9565('0x90')](_[_0x9565('0x55')](_0x26bb11),[_0x9565('0x91'),'updatedAt']);_0x14f4f1=_['difference'](_[_0x9565('0x55')](_0x26bb11),[_0x9565('0x91'),_0x9565('0x92'),_0x9565('0x93'),_0x9565('0x94')]);if(_0x4a55db['body']['id']){delete _0x4a55db[_0x9565('0x59')]['id'];}if(_[_0x9565('0x7c')](_0x4a55db[_0x9565('0x59')][_0x9565('0x95')])){throw new db[(_0x9565('0x8d'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x9565('0x7c')](_0x4a55db[_0x9565('0x59')][_0x9565('0x59')])||_0x4a55db['body'][_0x9565('0x59')]===''){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))](_0x9565('0x96'));}if(_['isNil'](_0x4a55db[_0x9565('0x59')][_0x9565('0x97')])){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x14f4f1);}if(!_[_0x9565('0x98')](_0x14f4f1,_0x4a55db['body'][_0x9565('0x97')])){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x14f4f1);}_0xd79dd4[_0x4a55db['body'][_0x9565('0x97')]]=_0x4a55db['body'][_0x9565('0x95')];})[_0x9565('0x32')](function(){return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x4a55db[_0x9565('0x54')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x9565('0x8c')],'as':_0x9565('0x99'),'where':_0xd79dd4,'limit':0x1,'order':[[_0x9565('0x92'),_0x9565('0x9a')]]}]},{'model':db['ChatApplication'],'as':_0x9565('0x9b')}]});})['then'](handleEntityNotFound(_0x1380b0,null))[_0x9565('0x32')](function(_0x339d0a){if(_0x339d0a&&_0x339d0a[_0x9565('0x9c')]){_0x310721[_0x9565('0x9d')]=_0x339d0a;_0x310721[_0x9565('0x9e')]=_0x339d0a[_0x9565('0x9b')];_0x310721[_0x9565('0x9f')]=_0x339d0a['List'];_0x310721[_0x9565('0x9e')]=_[_0x9565('0xa0')](_0x310721['applications'],[_0x9565('0xa1')],[_0x9565('0xa2')]);if(_0x310721[_0x9565('0x9d')][_0x9565('0x9b')]){delete _0x310721[_0x9565('0x9d')]['Applications'];}if(_0x310721[_0x9565('0x9d')][_0x9565('0x9c')]&&_0x310721[_0x9565('0x9d')]['List'][_0x9565('0x99')][_0x9565('0x49')]){return _0x310721['account'][_0x9565('0x9c')][_0x9565('0x99')][0x0];}var _0x35a927=_[_0x9565('0x17')](_0x4a55db[_0x9565('0x59')],{'firstName':_0x4a55db[_0x9565('0x59')]['from'],'ListId':_0x339d0a[_0x9565('0x94')]});_0x35a927[_0x4a55db[_0x9565('0x59')]['mapKey']]=_0x4a55db['body'][_0x9565('0x95')];return db['CmContact'][_0x9565('0x58')](_0x35a927,{'fields':_0x4d26e6,'raw':!![]});}})['then'](handleEntityNotFound(_0x1380b0,null))[_0x9565('0x32')](function(_0x3646bb){_0x310721[_0x9565('0xa3')]=_0x3646bb;var _0x2c6e5a=_0x4a55db[_0x9565('0x59')][_0x9565('0xa4')];if(_0x4a55db[_0x9565('0xa5')][_0x9565('0xa6')]){_0x2c6e5a=_0x4a55db['headers']['cf-connecting-ip'];}else if(_0x4a55db['headers'][_0x9565('0xa7')]){_0x2c6e5a=_[_0x9565('0xa8')](_0x4a55db[_0x9565('0xa5')]['x-forwarded-for'][_0x9565('0xa9')](','));}if(_0x3646bb){var _0x12936d={'ContactId':_0x3646bb['id'],'ChatWebsiteId':_0x4a55db[_0x9565('0x54')]['id'],'from':(_0x3646bb['firstName']||'')+'\x20'+(_0x3646bb['lastName']||''),'customerIp':_0x2c6e5a,'customerPort':_0x4a55db[_0x9565('0xa5')][_0x9565('0xaa')]?_0x4a55db[_0x9565('0xa5')][_0x9565('0xaa')]:null,'referer':_0x4a55db[_0x9565('0x59')][_0x9565('0xab')],'browserName':_0x325cb5[_0x9565('0xac')][_0x9565('0x38')]&&_0x325cb5[_0x9565('0xac')]['version']?util[_0x9565('0xad')](_0x9565('0xae'),_0x325cb5[_0x9565('0xac')][_0x9565('0x38')],_0x325cb5['browser'][_0x9565('0xaf')]):'unknown','browserVersion':_0x325cb5[_0x9565('0xac')][_0x9565('0xaf')]||'unknown','osName':util[_0x9565('0xad')](_0x9565('0xae'),_0x325cb5['os'][_0x9565('0x38')],_0x325cb5['os'][_0x9565('0xaf')]),'osVersion':_0x325cb5['os'][_0x9565('0xaf')],'deviceModel':_0x325cb5['device']['model']&&_0x325cb5[_0x9565('0xb0')]['vendor']?util[_0x9565('0xad')](_0x9565('0xb1'),_0x325cb5[_0x9565('0xb0')]['model'],_0x325cb5[_0x9565('0xb0')][_0x9565('0xb2')],_0x325cb5[_0x9565('0xb0')]['type']):null,'deviceVendor':_0x325cb5[_0x9565('0xb0')][_0x9565('0xb2')],'deviceType':_0x325cb5[_0x9565('0xb0')][_0x9565('0x41')],'formData':JSON[_0x9565('0x22')](_0x4a55db[_0x9565('0x59')])};var _0x247c4c={'ChatWebsiteId':_0x4a55db['params']['id'],'closed':![]};if(_0x4a55db[_0x9565('0x59')][_0x9565('0xb3')]){_0x247c4c['threadId']=_0x4a55db['body']['threadId'];return db[_0x9565('0xb4')][_0x9565('0x5e')]({'where':_0x247c4c})['then'](function(_0x55c8da){if(_0x55c8da){return[_0x55c8da,![]];}_0x12936d[_0x9565('0xb3')]=_0x4a55db['body']['threadId'];_0x12936d['externalUrl']=_0x4a55db[_0x9565('0x59')][_0x9565('0xb5')];return db[_0x9565('0xb4')][_0x9565('0x58')](_0x12936d)[_0x9565('0x32')](function(_0x1c600b){return[_0x1c600b,!![]];});});}_0x247c4c[_0x9565('0xb6')]=_0x3646bb['id'];if(_0x4a55db[_0x9565('0x59')]['interaction']&&_0x4a55db[_0x9565('0x59')][_0x9565('0xb7')]['id']){_0x247c4c['id']=_0x4a55db['body'][_0x9565('0xb7')]['id'];return db[_0x9565('0xb4')][_0x9565('0x5e')]({'where':_0x247c4c})['then'](function(_0x162e52){if(_0x162e52){return[_0x162e52,![]];}return db['ChatInteraction'][_0x9565('0x58')](_0x12936d)[_0x9565('0x32')](function(_0x1746d1){return[_0x1746d1,!![]];});});}return db[_0x9565('0xb4')]['create'](_0x12936d)[_0x9565('0x32')](function(_0x51b3e3){return[_0x51b3e3,!![]];});}})[_0x9565('0xb8')](function(_0x57a55f,_0x4b99e3){if(_0x57a55f){_0x40ee8c=_0x4b99e3;if(!_0x4b99e3){var _0x29656d={'from':(_0x310721['contact'][_0x9565('0xb9')]||'')+'\x20'+(_0x310721[_0x9565('0xa3')][_0x9565('0xba')]||'')};if(_0x4a55db[_0x9565('0x59')]['threadId']&&_0x4a55db[_0x9565('0x59')][_0x9565('0xbb')]&&_0x4a55db[_0x9565('0x59')]['threadId']!=_0x4a55db[_0x9565('0x59')][_0x9565('0xbb')]){_0x29656d[_0x9565('0xb3')]=_0x4a55db[_0x9565('0x59')][_0x9565('0xbb')];}return _0x57a55f[_0x9565('0x62')](_0x29656d);}else{return _0x57a55f;}}})[_0x9565('0x32')](function(_0x544ace){_0x310721[_0x9565('0xb7')]=_0x544ace[_0x9565('0x34')]({'plain':!![]});_0x310721[_0x9565('0xb7')][_0x9565('0xbc')]=_0x40ee8c;if(_0x310721['interaction'][_0x9565('0xbc')]){if(_0x310721[_0x9565('0x9d')]['autoclose']){_0x310721[_0x9565('0x9e')]['push']({'id':0x0,'priority':_0x310721[_0x9565('0x9e')][_0x9565('0x49')]+0x1,'app':_0x9565('0xbd'),'appdata':_0x9565('0xbe'),'interval':_0x9565('0xbf')});}}return db[_0x9565('0xc0')][_0x9565('0x58')]({'body':_0x4a55db[_0x9565('0x59')][_0x9565('0x59')],'ChatWebsiteId':_0x4a55db[_0x9565('0x54')]['id'],'ChatInteractionId':_0x544ace['id'],'direction':'in','ContactId':_0x310721[_0x9565('0xa3')]['id'],'AttachmentId':_0x4a55db[_0x9565('0x59')][_0x9565('0xc1')]});})['then'](function(_0x5dc363){_0x310721[_0x9565('0x26')]=_0x5dc363;if(_0x310721[_0x9565('0xb7')][_0x9565('0xc2')]){return db['User'][_0x9565('0x5e')]({'attributes':['id',_0x9565('0x38')],'where':{'id':_0x310721[_0x9565('0xb7')][_0x9565('0xc2')]}})[_0x9565('0x32')](function(_0x418ad9){if(_0x418ad9){_0x310721['applications'][_0x9565('0xc3')]({'id':0x0,'priority':0x0,'app':_0x9565('0xc4'),'appdata':_0x418ad9[_0x9565('0x38')]+','+(_0x310721[_0x9565('0x9d')]['waitForTheAssignedAgent']||0xa),'interval':_0x9565('0xbf')});_0x310721[_0x9565('0xc5')]=!![];}return respondWithRpcPromise(_0x9565('0xc6'),_0x9565('0xc7'),_0x310721);});}return respondWithRpcPromise('Start','startRouting',_0x310721);})[_0x9565('0x32')](function(_0x4d7877){respondWithRpcPromise(_0x9565('0xc8'),_0x9565('0xc8'),{'event':_0x9565('0x87'),'message':_0x4d7877},client9002);return _0x4d7877;})['then'](respondWithResult(_0x1380b0,null))[_0x9565('0x28')](handleError(_0x1380b0,null));};exports[_0x9565('0xc9')]=function(_0x5b8b55,_0x1afe2f,_0x24cc66){var _0xfae4c1,_0x5be9cb,_0x173ac1;var _0x503e83=[];var _0xb4fbeb=[];var _0xc79bc7={};var _0x1e1c0b=_0x5b8b55['files']||[];var _0x39be12=[];var _0x30258f;return db[_0x9565('0x8c')][_0x9565('0x63')]()['then'](function(_0x2e9065){if(!_0x2e9065){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('no\x20available\x20attributes');}_0xb4fbeb=_['difference'](_[_0x9565('0x55')](_0x2e9065),[_0x9565('0x91'),_0x9565('0x92')]);_0x503e83=_[_0x9565('0x90')](_[_0x9565('0x55')](_0x2e9065),[_0x9565('0x91'),_0x9565('0x92'),_0x9565('0x93'),_0x9565('0x94')]);if(_0x5b8b55[_0x9565('0x59')]['id']){delete _0x5b8b55[_0x9565('0x59')]['id'];}if(_['isNil'](_0x5b8b55['body'][_0x9565('0x95')])){throw _0x1afe2f['status'](0x1f4)[_0x9565('0x39')](new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))](_0x9565('0xca')));}if(_[_0x9565('0x7c')](_0x5b8b55['body']['body'])||_0x5b8b55[_0x9565('0x59')]['body']===''){throw _0x1afe2f[_0x9565('0x2a')](0x1f4)['send'](new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x5b8b55[_0x9565('0x59')][_0x9565('0xcb')])){throw _0x1afe2f[_0x9565('0x2a')](0x1f4)['send'](new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x503e83));}if(!_['includes'](_0x503e83,_0x5b8b55[_0x9565('0x59')]['mapKeyOffline'])){throw _0x1afe2f['status'](0x1f4)[_0x9565('0x39')](new db[(_0x9565('0x8d'))]['ValidationError'](_0x9565('0xcc')+_0x503e83));}_0xc79bc7[_0x5b8b55[_0x9565('0x59')][_0x9565('0xcb')]]=_0x5b8b55[_0x9565('0x59')][_0x9565('0x95')];})[_0x9565('0x32')](function(){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x5b8b55[_0x9565('0x54')]['id']},'include':[{'model':db[_0x9565('0xcd')],'as':'List'},{'model':db[_0x9565('0xce')],'as':_0x9565('0xce')}]});})[_0x9565('0x32')](handleEntityNotFound(_0x1afe2f,null))[_0x9565('0x32')](function(_0x3935ef){if(_0x3935ef&&_0x3935ef[_0x9565('0x9c')]){_0x5be9cb=_0x3935ef;var _0x18b68b=_[_0x9565('0x17')](_0x5b8b55[_0x9565('0x59')],{'firstName':_0x5b8b55['body']['from'],'phone':_0x5b8b55['body'][_0x9565('0x95')],'ListId':_0x3935ef['ListId']});_0x18b68b[_0x5b8b55['body'][_0x9565('0xcb')]]=_0x5b8b55[_0x9565('0x59')][_0x9565('0x95')];return db['CmContact']['findOrCreate']({'where':_0xc79bc7,'defaults':_0x18b68b});}})[_0x9565('0xb8')](function(_0xc24a31){if(_0xc24a31){_0x173ac1=_0xc24a31;var _0x37ce36=fs[_0x9565('0xcf')](path[_0x9565('0x78')](config['root'],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x35adba=ejs[_0x9565('0xd0')](_0x37ce36,{'body':_[_0x9565('0xd1')](_0x5b8b55[_0x9565('0x59')][_0x9565('0x59')]),'bodyTitle':_0x5be9cb['offlineMessageBody']});return db[_0x9565('0xd2')][_0x9565('0x58')]({'body':_0x35adba,'ContactId':_0xc24a31['id'],'ChatWebsiteId':_0x5be9cb['id']});}})['then'](function(_0x11d82d){_0x30258f=_0x11d82d;if(_0x1e1c0b['length']){var _0x32f24a=_0x1e1c0b[_0x9565('0x3d')](function(_0x185826){return{'name':_0x185826[_0x9565('0xd3')],'basename':_0x185826[_0x9565('0x75')],'type':_0x185826['mimetype'],'ChatOfflineMessageId':_0x11d82d['id']};});_0x39be12=_0x32f24a['map'](_0x5741d0=>{var _0x457359={'filename':_0x5741d0[_0x9565('0x38')],'path':path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0xd4'),_0x9565('0xd5'),_0x9565('0xd6'),'offline-chat',_0x5741d0[_0x9565('0xd7')])};return _0x457359;});if(!_0x5be9cb['openNewInteraction']){return db[_0x9565('0xd8')]['transaction'](function(_0x524bc7){return db[_0x9565('0xd9')][_0x9565('0xda')](_0x32f24a,{'transaction':_0x524bc7});});}}})[_0x9565('0x32')](function(){if(_0x30258f){_0xfae4c1=_0x30258f;return db[_0x9565('0xce')][_0x9565('0x68')]({'where':{'active':!![]},'include':[{'model':db[_0x9565('0xdb')],'as':_0x9565('0xdc'),'raw':!![]}]});}})[_0x9565('0x32')](function(_0x5658ce){if(_0x5658ce&&_0x5658ce['Smtp']&&_0x5be9cb['forwardOffline']&&_0x5be9cb['forwardOfflineAddress']){var _0x16565d={'tls':{'rejectUnauthorized':![]}};if(_0x5658ce[_0x9565('0xdc')][_0x9565('0xdd')]){_0x16565d[_0x9565('0xdd')]=_0x5658ce[_0x9565('0xdc')]['service'];}else{_0x16565d[_0x9565('0xde')]=_0x5658ce['Smtp'][_0x9565('0xde')];_0x16565d['port']=_0x5658ce[_0x9565('0xdc')]['port'];_0x16565d['secure']=_0x5658ce[_0x9565('0xdc')][_0x9565('0xdf')];}if(_0x5658ce['Smtp'][_0x9565('0xe0')]){_0x16565d[_0x9565('0xe1')]={'user':_0x5658ce[_0x9565('0xdc')][_0x9565('0x5a')],'pass':_0x5658ce[_0x9565('0xdc')][_0x9565('0xe2')]};}return respondWithRpcPromise(_0x9565('0xe3'),_0x9565('0xe4'),{'account':_0x16565d,'message':{'from':util[_0x9565('0xad')]('\x22%s\x22\x20<%s>',_0x5658ce[_0x9565('0x38')],_0x5658ce[_0x9565('0xe5')]||_0x5658ce[_0x9565('0xdc')][_0x9565('0x5a')]),'to':_0x5be9cb['forwardOfflineAddress'],'subject':_0x5be9cb[_0x9565('0xe6')],'html':_0xfae4c1[_0x9565('0x59')],'attachments':_0x39be12}},client9003)[_0x9565('0x32')](function(){return _0xfae4c1;})[_0x9565('0x28')](function(_0x37945a){console[_0x9565('0x23')](_0x37945a);});}})[_0x9565('0x32')](function(){if(_0x5be9cb&&_0x5be9cb[_0x9565('0xe7')]&&_0x5be9cb['MailAccountId']){var _0x3545cc=[];if(_0x1e1c0b[_0x9565('0x49')]){_0x3545cc=_0x1e1c0b[_0x9565('0x3d')](function(_0x3a8aeb){return{'name':_0x3a8aeb[_0x9565('0xd3')],'basename':_0x3a8aeb[_0x9565('0x75')],'type':_0x3a8aeb[_0x9565('0xe8')],'ChatOfflineMessageId':_0x30258f['id']};});}var _0x334c24;if(!_[_0x9565('0x7c')](_0x5be9cb[_0x9565('0xe9')])){var _0xe977e0=_[_0x9565('0x3d')](_0x5b8b55['body'],function(_0x175b92){return _0x175b92;});var _0x3df5c0=_[_0x9565('0xea')](_0xe977e0)[0x0];var _0x165993=_[_0x9565('0xeb')](_0x3df5c0,function(_0x3a04e1){return _0x3a04e1;});_0x334c24=_0x165993[0x1][_0x5be9cb[_0x9565('0xe9')]];}var _0x3ccf96={'from':_0x173ac1[_0x9565('0xe5')],'firstName':_0x173ac1[_0x9565('0xb9')],'lastName':_0x173ac1[_0x9565('0xba')],'mapKey':'email','message':{'from':_0x173ac1[_0x9565('0xe5')],'to':_0x5be9cb[_0x9565('0xce')][_0x9565('0xe5')],'cc':'','subject':_[_0x9565('0x7c')](_0x334c24)?_0x5be9cb[_0x9565('0xe6')]:_0x334c24,'messageId':'','sentAt':new Date(),'attach':_0x3545cc['length'],'attachments':_0x3545cc,'originChannel':_0x9565('0xec'),'ChatWebsiteId':_0x5be9cb['id'],'ChatOfflineMessageId':_0xfae4c1['id'],'originTo':_0x5be9cb[_0x9565('0xce')][_0x9565('0xe5')]},'body':_0xfae4c1[_0x9565('0x59')]};var _0x53965b={'account':{'id':_0x5be9cb[_0x9565('0xed')]},'body':_0x3ccf96,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x9565('0xee'),'notifyMail',_0x53965b,client9001)[_0x9565('0x32')](function(){return _0xfae4c1;})[_0x9565('0x28')](function(_0xb4ccc1){console[_0x9565('0x23')](_0xb4ccc1);});}return;})[_0x9565('0x32')](function(){if(_0xfae4c1){return _0xfae4c1;}})['then'](respondWithResult(_0x1afe2f,null))[_0x9565('0x28')](function(_0xb584e4){console['error']('catch',_0xb584e4);for(var _0x504ce5 of _0x1e1c0b){var _0x33c723=path[_0x9565('0x78')](config['root'],_0x9565('0xd4'),'files',_0x9565('0xd6'),_0x9565('0xef'),_0x504ce5[_0x9565('0x75')]);fs_extra[_0x9565('0xf0')](_0x33c723)[_0x9565('0x28')](function(_0x33cfba){console[_0x9565('0x23')](_0x9565('0xf1'),_0x33c723,_0x33cfba);});}});};exports[_0x9565('0xf2')]=function(_0x4b3e79,_0x455bee,_0x46c6ab){return db['ChatInteraction'][_0x9565('0x5e')]({'where':{'id':_0x4b3e79['params']['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x455bee,null))[_0x9565('0x32')](function(_0x4a6f8){if(_0x4a6f8){return _0x4a6f8[_0x9565('0xf2')](_0x4b3e79['body'][_0x9565('0x6a')],_[_0x9565('0xf3')](_0x4b3e79[_0x9565('0x59')],[_0x9565('0x6a'),'id'])||{});}})[_0x9565('0x32')](respondWithResult(_0x455bee,null))[_0x9565('0x28')](handleError(_0x455bee,null));};exports[_0x9565('0xf4')]=function(_0x12b328,_0x45b1a0,_0x4b07b7){var _0x2b9df9={'raw':![],'where':{}};var _0x1313cd={};var _0x5cc241={'count':0x0,'rows':[]};return db[_0x9565('0x3e')][_0x9565('0x68')]({'where':{'id':_0x12b328[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x45b1a0,null))[_0x9565('0x32')](function(_0x90a066){if(_0x90a066){_0x1313cd[_0x9565('0x43')]=_[_0x9565('0x55')](db['ChatInteraction'][_0x9565('0x3f')]);_0x1313cd[_0x9565('0x44')]=_[_0x9565('0x55')](_0x12b328['query']);_0x1313cd['filters']=_[_0x9565('0x46')](_0x1313cd[_0x9565('0x43')],_0x1313cd['query']);_0x2b9df9['attributes']=_[_0x9565('0x46')](_0x1313cd['model'],qs[_0x9565('0x48')](_0x12b328[_0x9565('0x44')][_0x9565('0x48')]));_0x2b9df9['attributes']=_0x2b9df9[_0x9565('0x47')]['length']?_0x2b9df9[_0x9565('0x47')]:_0x1313cd[_0x9565('0x43')];if(!_0x12b328['query'][_0x9565('0xf5')](_0x9565('0x6d'))){_0x2b9df9[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x12b328[_0x9565('0x44')]['limit']);_0x2b9df9[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x12b328[_0x9565('0x44')][_0x9565('0x2f')]);}_0x2b9df9['order']=qs[_0x9565('0x4a')](_0x12b328[_0x9565('0x44')][_0x9565('0x4a')]);_0x2b9df9['where']=qs['filters'](_[_0x9565('0x4b')](_0x12b328[_0x9565('0x44')],_0x1313cd[_0x9565('0x45')]));_0x2b9df9[_0x9565('0x4d')][_0x9565('0x65')]=_0x90a066['id'];if(_0x12b328[_0x9565('0x44')][_0x9565('0x4c')]){_0x2b9df9[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x2b9df9[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x2b9df9[_0x9565('0x47')],function(_0x10af6f){var _0x35a0e0={};_0x35a0e0[_0x10af6f]={'$like':'%'+_0x12b328[_0x9565('0x44')]['filter']+'%'};return _0x35a0e0;})});}_0x2b9df9=_[_0x9565('0x4e')]({},_0x2b9df9,_0x12b328[_0x9565('0x57')]);return db[_0x9565('0xb4')][_0x9565('0x2e')]({'where':_0x2b9df9[_0x9565('0x4d')]})[_0x9565('0x32')](function(_0xa163ba){_0x5cc241[_0x9565('0x2e')]=_0xa163ba;if(_0x12b328['query'][_0x9565('0x56')]){_0x2b9df9[_0x9565('0x50')]=[{'model':db[_0x9565('0x8c')],'as':_0x9565('0xf6'),'required':![]},{'model':db[_0x9565('0xf7')],'as':'Owner','attributes':[_0x9565('0x38'),_0x9565('0xf8'),_0x9565('0xf9')],'required':![]},{'model':db[_0x9565('0xfa')],'as':_0x9565('0xfb'),'attributes':['id',_0x9565('0x38'),_0x9565('0xfc')],'where':_0x12b328[_0x9565('0x44')]['tag']?{'id':_0x12b328['query'][_0x9565('0xfd')]}:undefined,'required':_0x12b328[_0x9565('0x44')][_0x9565('0xfd')]?!![]:![]}];}return db[_0x9565('0xb4')][_0x9565('0x51')](_0x2b9df9);})[_0x9565('0x32')](function(_0x415baa){_0x5cc241[_0x9565('0x52')]=_0x415baa;return _0x5cc241;});}})[_0x9565('0x32')](respondWithFilteredResult(_0x45b1a0,_0x2b9df9))[_0x9565('0x28')](handleError(_0x45b1a0,null));};function iftimePromise(_0x2d7023,_0x49050c){return respondWithRpcPromise(_0x9565('0xfe'),'getSnippet',{'command':_0x49050c[_0x9565('0xff')]?util[_0x9565('0xad')](_0x9565('0x100'),_0x2d7023[_0x9565('0x101')],_0x49050c[_0x9565('0xff')]):util[_0x9565('0xad')](_0x9565('0x102'),_0x2d7023[_0x9565('0x101')])},client9002)[_0x9565('0x32')](function(_0x1c02a1){var _0x295a5a=_0x1c02a1&&_0x1c02a1['indexOf']('true')>=0x0?!![]:![];logger[_0x9565('0x1e')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x49050c['id'],_0x2d7023['id'],_0x2d7023['interval'],_0x295a5a?'ONLINE':'OFFLINE',_0x49050c['timezone']?_0x49050c[_0x9565('0xff')]:_0x9565('0x103'));return _0x295a5a;})[_0x9565('0x28')](function(_0x481d5e){logger['error'](_0x9565('0x104'),_0x49050c['id'],_0x2d7023['id'],_0x2d7023[_0x9565('0x101')],util['inspect'](_0x481d5e,{'showHidden':![],'depth':null}),_0x49050c['timezone']?_0x49050c[_0x9565('0xff')]:_0x9565('0x103'));return![];});}exports['getSnippet']=function(_0x1a3c5e,_0x1bb929,_0x2c2f82){var _0x15fcef=0x0;var _0x614b49=0x0;var _0x5d675a=![];var _0x2af40c;var _0x835d5b;return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x1a3c5e[_0x9565('0x54')]['id']},'include':[{'model':db[_0x9565('0x105')],'as':_0x9565('0x105'),'include':[{'model':db['Interval'],'as':'Intervals','attributes':['id',_0x9565('0x101')],'raw':!![]}]}]})[_0x9565('0x32')](handleEntityNotFound(_0x1bb929,null))[_0x9565('0x32')](function(_0x146252){if(_0x146252){_0x2af40c=_0x146252;return _0x146252[_0x9565('0x106')]({'raw':!![]});}})[_0x9565('0x32')](function(_0x4725b9){if(_0x2af40c){if(_0x4725b9){_0x835d5b=_0x4725b9;}}return require('../../config/license/util')[_0x9565('0x7a')]();})['then'](function(_0x385955){if(_0x385955){_0x614b49=_0x385955[_0x9565('0x107')];_0x5d675a=_0x385955['custom'];}})[_0x9565('0x32')](function(){return db['ChatInteraction']['count']({'where':{'closed':![]}});})[_0x9565('0x32')](function(_0xe7ed46){_0x15fcef=_0xe7ed46;if(_0x614b49&&_0xe7ed46>_0x614b49){return db[_0x9565('0x108')][_0x9565('0x68')]({'where':{'id':0x1}})[_0x9565('0x32')](function(_0x5d26d1){if(_0x5d26d1){_0x5d26d1['increment']('chatLicenseExceeded');}});}})['then'](function(){if(_0x2af40c[_0x9565('0x105')]&&_0x2af40c[_0x9565('0x105')][_0x9565('0x109')]){var _0x1e2234=[];for(var _0xb9bddd=0x0;_0xb9bddd<_0x2af40c[_0x9565('0x105')]['Intervals'][_0x9565('0x49')];_0xb9bddd++){var _0x25f213=_0x2af40c[_0x9565('0x105')][_0x9565('0x109')][_0xb9bddd][_0x9565('0x34')]({'plain':!![]});_0x1e2234[_0x9565('0x10a')](iftimePromise(_0x25f213,_0x2af40c));}return BPromise['all'](_0x1e2234)[_0x9565('0x32')](function(_0x337350){return _[_0x9565('0x10b')](_0x337350);});}else{return!![];}})[_0x9565('0x32')](function(_0x12659c){var _0x5bd904=fs[_0x9565('0xcf')](path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x10c')),_0x9565('0x10d'));var _0x2b119f={'remote':_0x2af40c['remote'],'query':querystring[_0x9565('0x22')](_['merge'](_0x2af40c[_0x9565('0x34')]({'plain':!![]}),{'customerIp':_0x1a3c5e[_0x9565('0xa5')][_0x9565('0xa7')]||_0x1a3c5e['headers'][_0x9565('0x10e')]||_0x1a3c5e[_0x9565('0x10f')][_0x9565('0x110')]||_0x1a3c5e['ip'],'referer':_0x1a3c5e['headers']['referer'],'openedInteractions':_0x15fcef,'maxInteractions':_0x614b49,'virtual':_0x5d675a[_0x9565('0x107')],'online':_0x12659c,'custom':_0x5d675a}))['replace'](/'/g,'\x5c\x27')};_0x1bb929[_0x9565('0x39')](ejs['render'](Mustache['render'](_0x5bd904,_0x2b119f),{'proactiveActions':_0x835d5b,'alignment':_0x2af40c['alignment'],'verticalAlignment':_0x2af40c[_0x9565('0x111')],'div_color':_0x2af40c[_0x9565('0xfc')],'text_color':_0x2af40c[_0x9565('0x112')],'button_color':_0x2af40c[_0x9565('0x113')],'background_color':_0x2af40c[_0x9565('0x114')]}));})[_0x9565('0x28')](handleError(_0x1bb929,null));};exports[_0x9565('0x115')]=function(_0x4e14bc,_0xe4ed17,_0x586624){return db['ChatWebsite']['findOne']({'where':{'id':_0x4e14bc[_0x9565('0x54')]['id']}})['then'](handleEntityNotFound(_0xe4ed17,null))[_0x9565('0x32')](function(_0x5e4942){if(_0x5e4942){return db['sequelize']['transaction'](function(_0x42de14){return db[_0x9565('0x116')][_0x9565('0x33')]({'where':{'ChatWebsiteId':_0x4e14bc[_0x9565('0x54')]['id']},'transaction':_0x42de14})['then'](function(_0x153a68){var _0x13cfdd=_['map'](_0x4e14bc['body'],function(_0x14d5d4){_0x14d5d4[_0x9565('0x65')]=_0x4e14bc[_0x9565('0x54')]['id'];return _0x14d5d4;});return db[_0x9565('0x116')][_0x9565('0xda')](_0x13cfdd,{'transaction':_0x42de14});});})[_0x9565('0x32')](function(){return db[_0x9565('0x116')][_0x9565('0x117')]({'where':{'ChatWebsiteId':_0x4e14bc[_0x9565('0x54')]['id']},'order':'priority'});});}})[_0x9565('0x32')](respondWithResult(_0xe4ed17,null))[_0x9565('0x28')](handleError(_0xe4ed17,null));};exports[_0x9565('0x118')]=function(_0x4d5d58,_0x134af9,_0x3fba45){var _0x5f5b35={};var _0x18d649={};var _0x7ffd94;var _0x2118fc;return db['ChatWebsite'][_0x9565('0x68')]({'where':{'id':_0x4d5d58[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x134af9,null))[_0x9565('0x32')](function(_0x345c67){if(_0x345c67){_0x7ffd94=_0x345c67;_0x18d649[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0x116')][_0x9565('0x3f')]);_0x18d649[_0x9565('0x44')]=_[_0x9565('0x55')](_0x4d5d58['query']);_0x18d649[_0x9565('0x45')]=_['intersection'](_0x18d649[_0x9565('0x43')],_0x18d649[_0x9565('0x44')]);_0x5f5b35[_0x9565('0x47')]=_[_0x9565('0x46')](_0x18d649[_0x9565('0x43')],qs['fields'](_0x4d5d58[_0x9565('0x44')][_0x9565('0x48')]));_0x5f5b35[_0x9565('0x47')]=_0x5f5b35[_0x9565('0x47')][_0x9565('0x49')]?_0x5f5b35[_0x9565('0x47')]:_0x18d649[_0x9565('0x43')];_0x5f5b35[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x4d5d58[_0x9565('0x44')]['sort']);_0x5f5b35[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x4d5d58[_0x9565('0x44')],_0x18d649[_0x9565('0x45')]));if(_0x4d5d58[_0x9565('0x44')][_0x9565('0x4c')]){_0x5f5b35[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x5f5b35[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x5f5b35[_0x9565('0x47')],function(_0x249524){var _0xa55ac8={};_0xa55ac8[_0x249524]={'$like':'%'+_0x4d5d58[_0x9565('0x44')]['filter']+'%'};return _0xa55ac8;})});}_0x5f5b35=_[_0x9565('0x4e')]({},_0x5f5b35,_0x4d5d58[_0x9565('0x57')]);return _0x7ffd94['getApplications'](_0x5f5b35);}})['then'](function(_0x3ed771){if(_0x3ed771){_0x2118fc=_0x3ed771[_0x9565('0x49')];if(!_0x4d5d58[_0x9565('0x44')]['hasOwnProperty']('nolimit')){_0x5f5b35[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x4d5d58['query'][_0x9565('0x2c')]);_0x5f5b35[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x4d5d58[_0x9565('0x44')][_0x9565('0x2f')]);}return _0x7ffd94[_0x9565('0x118')](_0x5f5b35);}})['then'](function(_0xbe7ab7){if(_0xbe7ab7){return _0xbe7ab7?{'count':_0x2118fc,'rows':_0xbe7ab7}:null;}})[_0x9565('0x32')](respondWithResult(_0x134af9,null))['catch'](handleError(_0x134af9,null));};exports[_0x9565('0x119')]=function(_0xf985cc,_0x160f45,_0x49a847){return db[_0x9565('0x11a')][_0x9565('0x5e')]({'where':{'id':_0xf985cc[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x160f45,null))[_0x9565('0x32')](function(_0x46689e){if(_0x46689e){return _0x46689e[_0x9565('0x119')](_0xf985cc[_0x9565('0x59')][_0x9565('0x6a')],_[_0x9565('0xf3')](_0xf985cc[_0x9565('0x59')],['ids','id'])||{});}})[_0x9565('0x32')](respondWithResult(_0x160f45,null))[_0x9565('0x28')](handleError(_0x160f45,null));};exports['getProactiveActions']=function(_0x5357c7,_0x11b1d5,_0x147626){var _0x5f2d47={};var _0x47fa3b={};var _0xcfe6ee;var _0x44359a;return db[_0x9565('0x3e')][_0x9565('0x68')]({'where':{'id':_0x5357c7[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x11b1d5,null))[_0x9565('0x32')](function(_0x4f459b){if(_0x4f459b){_0xcfe6ee=_0x4f459b;_0x47fa3b[_0x9565('0x43')]=_['keys'](db[_0x9565('0x11b')][_0x9565('0x3f')]);_0x47fa3b[_0x9565('0x44')]=_[_0x9565('0x55')](_0x5357c7[_0x9565('0x44')]);_0x47fa3b['filters']=_[_0x9565('0x46')](_0x47fa3b['model'],_0x47fa3b[_0x9565('0x44')]);_0x5f2d47[_0x9565('0x47')]=_['intersection'](_0x47fa3b['model'],qs[_0x9565('0x48')](_0x5357c7[_0x9565('0x44')][_0x9565('0x48')]));_0x5f2d47[_0x9565('0x47')]=_0x5f2d47[_0x9565('0x47')][_0x9565('0x49')]?_0x5f2d47[_0x9565('0x47')]:_0x47fa3b[_0x9565('0x43')];_0x5f2d47[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x5357c7[_0x9565('0x44')][_0x9565('0x4a')]);_0x5f2d47[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x5357c7[_0x9565('0x44')],_0x47fa3b['filters']));if(_0x5357c7[_0x9565('0x44')][_0x9565('0x4c')]){_0x5f2d47[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x5f2d47[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x5f2d47[_0x9565('0x47')],function(_0x6561b7){var _0x336fb8={};_0x336fb8[_0x6561b7]={'$like':'%'+_0x5357c7[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x336fb8;})});}_0x5f2d47=_[_0x9565('0x4e')]({},_0x5f2d47,_0x5357c7[_0x9565('0x57')]);return _0xcfe6ee[_0x9565('0x106')](_0x5f2d47);}})[_0x9565('0x32')](function(_0x31e154){if(_0x31e154){_0x44359a=_0x31e154[_0x9565('0x49')];if(!_0x5357c7[_0x9565('0x44')][_0x9565('0xf5')](_0x9565('0x6d'))){_0x5f2d47[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x5357c7['query']['limit']);_0x5f2d47[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x5357c7['query']['offset']);}return _0xcfe6ee[_0x9565('0x106')](_0x5f2d47);}})[_0x9565('0x32')](function(_0x2860ee){if(_0x2860ee){return _0x2860ee?{'count':_0x44359a,'rows':_0x2860ee}:null;}})['then'](respondWithResult(_0x11b1d5,null))['catch'](handleError(_0x11b1d5,null));};exports[_0x9565('0x11c')]=function(_0x733692,_0x5c65e4,_0x29b7d2){var _0x28e854=_0x733692[_0x9565('0x44')]['online']===_0x9565('0x11d')?'offlineForm':_0x9565('0x11e');return db[_0x9565('0x3e')]['find']({'attributes':['id',_0x28e854],'where':{'id':_0x733692['params']['id']}})['then'](handleEntityNotFound(_0x5c65e4,null))[_0x9565('0x32')](function(_0x437fab){if(_0x437fab){var _0x324511=_0x437fab[_0x28e854];var _0x198a1d=_0x324511&&_0x324511[_0x9565('0x11f')]?_0x324511['items']:[];_0x5c65e4[_0x9565('0x39')]({'fromKey':_['isNil'](_0x324511[_0x9565('0x120')])?undefined:_0x324511['fromKey'],'count':_0x198a1d[_0x9565('0x49')],'rows':_0x198a1d});}})[_0x9565('0x28')](handleError(_0x5c65e4,null));};exports['getOfflineMessages']=function(_0x5b001a,_0x393436,_0x494548){var _0x35addb={'raw':![],'where':{}};var _0x1d9bbd={};var _0x226df7={'count':0x0,'rows':[]};return db[_0x9565('0x3e')]['findOne']({'where':{'id':_0x5b001a[_0x9565('0x54')]['id']}})['then'](handleEntityNotFound(_0x393436,null))[_0x9565('0x32')](function(_0x2084f8){if(_0x2084f8){_0x1d9bbd[_0x9565('0x43')]=_['keys'](db[_0x9565('0xd2')][_0x9565('0x3f')]);_0x1d9bbd[_0x9565('0x44')]=_[_0x9565('0x55')](_0x5b001a[_0x9565('0x44')]);_0x1d9bbd[_0x9565('0x45')]=_['intersection'](_0x1d9bbd[_0x9565('0x43')],_0x1d9bbd[_0x9565('0x44')]);_0x35addb[_0x9565('0x47')]=_['intersection'](_0x1d9bbd[_0x9565('0x43')],qs[_0x9565('0x48')](_0x5b001a[_0x9565('0x44')][_0x9565('0x48')]));_0x35addb[_0x9565('0x47')]=_0x35addb['attributes'][_0x9565('0x49')]?_0x35addb[_0x9565('0x47')]:_0x1d9bbd['model'];if(!_0x5b001a[_0x9565('0x44')][_0x9565('0xf5')](_0x9565('0x6d'))){_0x35addb[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x5b001a['query']['limit']);_0x35addb[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x5b001a['query'][_0x9565('0x2f')]);}_0x35addb[_0x9565('0x6e')]=qs['sort'](_0x5b001a[_0x9565('0x44')][_0x9565('0x4a')]);_0x35addb[_0x9565('0x4d')]=qs[_0x9565('0x45')](_['pick'](_0x5b001a['query'],_0x1d9bbd['filters']));_0x35addb[_0x9565('0x4d')][_0x9565('0x65')]=_0x2084f8['id'];if(_0x5b001a[_0x9565('0x44')][_0x9565('0x4c')]){_0x35addb[_0x9565('0x4d')]=_['merge'](_0x35addb[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x35addb[_0x9565('0x47')],function(_0x2b5e61){var _0x4534af={};_0x4534af[_0x2b5e61]={'$like':'%'+_0x5b001a['query'][_0x9565('0x4c')]+'%'};return _0x4534af;})});}_0x35addb=_[_0x9565('0x4e')]({},_0x35addb,_0x5b001a[_0x9565('0x57')]);return db[_0x9565('0xd2')][_0x9565('0x2e')]({'where':_0x35addb[_0x9565('0x4d')]})[_0x9565('0x32')](function(_0x5684fd){_0x226df7[_0x9565('0x2e')]=_0x5684fd;if(_0x5b001a['query'][_0x9565('0x56')]){_0x35addb[_0x9565('0x50')]=[{'all':!![]}];}else{_0x35addb['include']=[{'model':db[_0x9565('0x8c')],'as':'Contact','required':![]},{'model':db[_0x9565('0xd9')],'as':_0x9565('0x121'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x35addb);})[_0x9565('0x32')](function(_0x4f32d8){_0x226df7[_0x9565('0x52')]=_0x4f32d8;return _0x226df7;});}})['then'](respondWithFilteredResult(_0x393436,_0x35addb))[_0x9565('0x28')](handleError(_0x393436,null));};exports['addAgents']=function(_0x4faa26,_0x16a911,_0x496b5c){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x4faa26[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x16a911,null))[_0x9565('0x32')](function(_0x5bf885){if(_0x5bf885){return _0x5bf885[_0x9565('0x122')](_0x4faa26[_0x9565('0x59')][_0x9565('0x6a')],_['omit'](_0x4faa26[_0x9565('0x59')],[_0x9565('0x6a'),'id'])||{})[_0x9565('0xb8')](function(_0x19bf85){for(var _0x32863c=0x0;_0x32863c<_0x4faa26[_0x9565('0x59')][_0x9565('0x6a')][_0x9565('0x49')];_0x32863c+=0x1){socket['emit'](_0x9565('0x123'),{'UserId':Number(_0x4faa26[_0x9565('0x59')][_0x9565('0x6a')][_0x32863c]),'ChatWebsiteId':Number(_0x4faa26[_0x9565('0x54')]['id'])});}return _0x19bf85;});}})['then'](respondWithResult(_0x16a911,null))[_0x9565('0x28')](handleError(_0x16a911,null));};exports['removeAgents']=function(_0x127059,_0x47e6ec,_0x1f5211){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x127059[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x47e6ec,null))[_0x9565('0x32')](function(_0x516b62){if(_0x516b62){return _0x516b62[_0x9565('0x124')](_0x127059[_0x9565('0x44')][_0x9565('0x6a')])['then'](function(){if(_[_0x9565('0x125')](_0x127059[_0x9565('0x44')][_0x9565('0x6a')])){for(var _0x10a3fb=0x0;_0x10a3fb<_0x127059[_0x9565('0x44')]['ids'][_0x9565('0x49')];_0x10a3fb+=0x1){socket[_0x9565('0x126')](_0x9565('0x127'),{'UserId':Number(_0x127059[_0x9565('0x44')][_0x9565('0x6a')][_0x10a3fb]),'ChatWebsiteId':Number(_0x127059[_0x9565('0x54')]['id'])});}}else{socket[_0x9565('0x126')](_0x9565('0x127'),{'UserId':Number(_0x127059[_0x9565('0x44')][_0x9565('0x6a')]),'ChatWebsiteId':Number(_0x127059['params']['id'])});}});}})[_0x9565('0x32')](respondWithStatusCode(_0x47e6ec,null))[_0x9565('0x28')](handleError(_0x47e6ec,null));};exports[_0x9565('0x128')]=function(_0x15e5c8,_0x3822aa,_0x63def3){var _0x170b82={};var _0x17ea0c={};var _0x25ba87;var _0x22270f;return db[_0x9565('0x3e')][_0x9565('0x68')]({'where':{'id':_0x15e5c8[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x3822aa,null))[_0x9565('0x32')](function(_0x3a7831){if(_0x3a7831){_0x25ba87=_0x3a7831;_0x17ea0c[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0xf7')]['rawAttributes']);_0x17ea0c[_0x9565('0x44')]=_[_0x9565('0x55')](_0x15e5c8[_0x9565('0x44')]);_0x17ea0c['filters']=_[_0x9565('0x46')](_0x17ea0c[_0x9565('0x43')],_0x17ea0c[_0x9565('0x44')]);_0x170b82['attributes']=_[_0x9565('0x46')](_0x17ea0c[_0x9565('0x43')],qs[_0x9565('0x48')](_0x15e5c8[_0x9565('0x44')][_0x9565('0x48')]));_0x170b82[_0x9565('0x47')]=_0x170b82[_0x9565('0x47')][_0x9565('0x49')]?_0x170b82[_0x9565('0x47')]:_0x17ea0c[_0x9565('0x43')];_0x170b82[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x15e5c8[_0x9565('0x44')][_0x9565('0x4a')]);_0x170b82[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x15e5c8[_0x9565('0x44')],_0x17ea0c[_0x9565('0x45')]));if(_0x15e5c8[_0x9565('0x44')][_0x9565('0x4c')]){_0x170b82['where']=_[_0x9565('0x4e')](_0x170b82['where'],{'$or':_['map'](_0x170b82['attributes'],function(_0x4bd444){var _0x48ee46={};_0x48ee46[_0x4bd444]={'$like':'%'+_0x15e5c8[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x48ee46;})});}_0x170b82=_[_0x9565('0x4e')]({},_0x170b82,_0x15e5c8[_0x9565('0x57')]);return _0x25ba87[_0x9565('0x128')](_0x170b82);}})[_0x9565('0x32')](function(_0x3453be){if(_0x3453be){_0x22270f=_0x3453be['length'];if(!_0x15e5c8['query']['hasOwnProperty'](_0x9565('0x6d'))){_0x170b82['limit']=qs[_0x9565('0x2c')](_0x15e5c8[_0x9565('0x44')][_0x9565('0x2c')]);_0x170b82[_0x9565('0x2f')]=qs['offset'](_0x15e5c8[_0x9565('0x44')][_0x9565('0x2f')]);}return _0x25ba87[_0x9565('0x128')](_0x170b82);}})[_0x9565('0x32')](function(_0x1094a8){if(_0x1094a8){return _0x1094a8?{'count':_0x22270f,'rows':_0x1094a8}:null;}})[_0x9565('0x32')](respondWithResult(_0x3822aa,null))[_0x9565('0x28')](handleError(_0x3822aa,null));};
\ No newline at end of file
+var _0x7623=['autoAssociation','Pause','describe','addDisposition','ChatWebsiteId','Disposition','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','sitepic','file','filename','agentAvatar','customerAvatar','addSystemAvatar','getLogo','join','root','getLicense','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','systemAvatar','notify','user-agent-parser','setUA','user-agent','getResult','chat','CmContact','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','account','applications','list','orderBy','priority','defaults','customerIp','headers','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','contact','messageId','created','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','offlineMessageBody','originalname','mimetype','server','attachments','offline-chat','basename','transaction','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','auth','pass','offlineMessageSubject','openNewInteraction','MailAccountId','subjectOffline','mapValues','email','Chat','NotifyMailAccount','notifyMail','addInteraction','omit','getInteractions','Contact','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','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','push','server/files/chat/iframe.ejs','remote','remoteAddress','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','ChatApplication','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','hasOwnProperty','getFields','offlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Attachment','Attachments','addAgents','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatWebsite.socket','jayson/promise','http','client','then','info','ChatWebsite,\x20%s,\x20%s','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','destroy','get','ChatWebsites','UserProfileResource','name','send','index','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0x7623,0x1ef));var _0x3762=function(_0x92a987,_0x4415b6){_0x92a987=_0x92a987-0x0;var _0x331f4c=_0x7623[_0x92a987];return _0x331f4c;};'use strict';var emlformat=require(_0x3762('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3762('0x1'));var jsonpatch=require(_0x3762('0x2'));var rp=require('request-promise');var moment=require(_0x3762('0x3'));var BPromise=require(_0x3762('0x4'));var Mustache=require(_0x3762('0x5'));var util=require(_0x3762('0x6'));var path=require(_0x3762('0x7'));var sox=require(_0x3762('0x8'));var csv=require(_0x3762('0x9'));var ejs=require(_0x3762('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3762('0xb'));var crypto=require(_0x3762('0xc'));var jsforce=require(_0x3762('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3762('0x9'));var querystring=require(_0x3762('0xe'));var Papa=require(_0x3762('0xf'));var Redis=require('ioredis');var authService=require(_0x3762('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x3762('0x11'));var hardwareService=require(_0x3762('0x12'));var logger=require(_0x3762('0x13'))('api');var utils=require(_0x3762('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3762('0x15'));var db=require(_0x3762('0x16'))['db'];config[_0x3762('0x17')]=_['defaults'](config[_0x3762('0x17')],{'host':_0x3762('0x18'),'port':0x18eb});var socket=require(_0x3762('0x19'))(new Redis(config[_0x3762('0x17')]));require(_0x3762('0x1a'))['register'](socket);var jayson=require(_0x3762('0x1b'));var client=jayson['client'][_0x3762('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x3762('0x1c')]({'port':0x232a});var client9003=jayson[_0x3762('0x1d')]['http']({'port':0x232b});var client9001=jayson[_0x3762('0x1d')][_0x3762('0x1c')]({'port':0x2329});function respondWithRpcPromise(_0x415744,_0x7f9dfb,_0x29bf77,_0xc0d5f2){return new BPromise(function(_0x2b1b84,_0x4f83be){var _0x5e77d8=_0xc0d5f2||client;return _0x5e77d8['request'](_0x415744,_0x29bf77)[_0x3762('0x1e')](function(_0x1c035a){logger[_0x3762('0x1f')](_0x3762('0x20'),_0x7f9dfb,'request\x20sent');logger['debug'](_0x3762('0x21'),_0x7f9dfb,'request\x20sent',JSON[_0x3762('0x22')](_0x1c035a));if(_0x1c035a[_0x3762('0x23')]){if(_0x1c035a[_0x3762('0x23')]['code']===0x1f4){logger[_0x3762('0x23')](_0x3762('0x20'),_0x7f9dfb,_0x1c035a['error'][_0x3762('0x24')]);return _0x4f83be(_0x1c035a['error'][_0x3762('0x24')]);}logger[_0x3762('0x23')](_0x3762('0x20'),_0x7f9dfb,_0x1c035a['error']['message']);return _0x2b1b84(_0x1c035a[_0x3762('0x23')][_0x3762('0x24')]);}else{logger[_0x3762('0x1f')](_0x3762('0x20'),_0x7f9dfb,_0x3762('0x25'));_0x2b1b84(_0x1c035a[_0x3762('0x26')][_0x3762('0x24')]);}})[_0x3762('0x27')](function(_0x1247b6){logger[_0x3762('0x23')]('ChatWebsite,\x20%s,\x20%s',_0x7f9dfb,_0x1247b6);_0x4f83be(_0x1247b6);});});}function respondWithStatusCode(_0x586ade,_0xe99620){_0xe99620=_0xe99620||0xcc;return function(_0x53e0aa){if(_0x53e0aa){return _0x586ade[_0x3762('0x28')](_0xe99620);}return _0x586ade[_0x3762('0x29')](_0xe99620)[_0x3762('0x2a')]();};}function respondWithResult(_0x1973d3,_0x1e776e){_0x1e776e=_0x1e776e||0xc8;return function(_0x1359f8){if(_0x1359f8){return _0x1973d3['status'](_0x1e776e)[_0x3762('0x2b')](_0x1359f8);}};}function respondWithFilteredResult(_0x2e37cd,_0x3abd73){return function(_0x3efbe3){if(_0x3efbe3){var _0x1431ed=typeof _0x3abd73[_0x3762('0x2c')]===_0x3762('0x2d')&&typeof _0x3abd73[_0x3762('0x2e')]===_0x3762('0x2d');var _0x2e4242=_0x3efbe3[_0x3762('0x2f')];var _0x28b310=_0x1431ed?0x0:_0x3abd73[_0x3762('0x2c')];var _0x392c0e=_0x1431ed?_0x3efbe3['count']:_0x3abd73[_0x3762('0x2c')]+_0x3abd73[_0x3762('0x2e')];var _0x5b8335;if(_0x392c0e>=_0x2e4242){_0x392c0e=_0x2e4242;_0x5b8335=0xc8;}else{_0x5b8335=0xce;}_0x2e37cd[_0x3762('0x29')](_0x5b8335);return _0x2e37cd['set']('Content-Range',_0x28b310+'-'+_0x392c0e+'/'+_0x2e4242)['json'](_0x3efbe3);}return null;};}function patchUpdates(_0x91ad50){return function(_0x5b9d3b){try{jsonpatch[_0x3762('0x30')](_0x5b9d3b,_0x91ad50,!![]);}catch(_0x39f6c1){return BPromise[_0x3762('0x31')](_0x39f6c1);}return _0x5b9d3b[_0x3762('0x32')]();};}function saveUpdates(_0x26429a,_0x313432){return function(_0x179b60){if(_0x179b60){return _0x179b60[_0x3762('0x33')](_0x26429a)['then'](function(_0x20bd38){return _0x20bd38;});}return null;};}function removeEntity(_0x1a39ba,_0x349b0d){return function(_0x5626b0){if(_0x5626b0){return _0x5626b0[_0x3762('0x34')]()[_0x3762('0x1e')](function(){var _0x5c2cfe=_0x5626b0[_0x3762('0x35')]({'plain':!![]});var _0x5a984b=_0x3762('0x36');return db[_0x3762('0x37')][_0x3762('0x34')]({'where':{'type':_0x5a984b,'resourceId':_0x5c2cfe['id']}})['then'](function(){return _0x5626b0;});})[_0x3762('0x1e')](function(){_0x1a39ba[_0x3762('0x29')](0xcc)[_0x3762('0x2a')]();});}};}function handleEntityNotFound(_0x170dc1,_0x56ca7d){return function(_0x333c0e){if(!_0x333c0e){_0x170dc1[_0x3762('0x28')](0x194);}return _0x333c0e;};}function handleError(_0x36ad60,_0x5b421e){_0x5b421e=_0x5b421e||0x1f4;return function(_0x3a076e){logger[_0x3762('0x23')](_0x3a076e['stack']);if(_0x3a076e[_0x3762('0x38')]){delete _0x3a076e[_0x3762('0x38')];}_0x36ad60[_0x3762('0x29')](_0x5b421e)[_0x3762('0x39')](_0x3a076e);};}exports[_0x3762('0x3a')]=function(_0x370c19,_0x3ff99e){var _0x304309={'include':[{'model':db['Pause'],'as':_0x3762('0x3b')}]},_0x417b31={},_0xd9d04b={'count':0x0,'rows':[]};var _0xb45f71=_[_0x3762('0x3c')](db[_0x3762('0x3d')][_0x3762('0x3e')],function(_0x3779f8){return{'name':_0x3779f8[_0x3762('0x3f')],'type':_0x3779f8['type'][_0x3762('0x40')]};});_0x417b31[_0x3762('0x41')]=_[_0x3762('0x3c')](_0xb45f71,'name');_0x417b31[_0x3762('0x42')]=_[_0x3762('0x43')](_0x370c19['query']);_0x417b31[_0x3762('0x44')]=_[_0x3762('0x45')](_0x417b31[_0x3762('0x41')],_0x417b31[_0x3762('0x42')]);_0x304309[_0x3762('0x46')]=_[_0x3762('0x45')](_0x417b31[_0x3762('0x41')],qs[_0x3762('0x47')](_0x370c19[_0x3762('0x42')][_0x3762('0x47')]));_0x304309[_0x3762('0x46')]=_0x304309[_0x3762('0x46')][_0x3762('0x48')]?_0x304309['attributes']:_0x417b31[_0x3762('0x41')];if(!_0x370c19['query']['hasOwnProperty'](_0x3762('0x49'))){_0x304309[_0x3762('0x2e')]=qs[_0x3762('0x2e')](_0x370c19[_0x3762('0x42')][_0x3762('0x2e')]);_0x304309['offset']=qs[_0x3762('0x2c')](_0x370c19[_0x3762('0x42')][_0x3762('0x2c')]);}_0x304309[_0x3762('0x4a')]=qs[_0x3762('0x4b')](_0x370c19[_0x3762('0x42')]['sort']);_0x304309[_0x3762('0x4c')]=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x370c19[_0x3762('0x42')],_0x417b31[_0x3762('0x44')]),_0xb45f71);if(_0x370c19[_0x3762('0x42')][_0x3762('0x4e')]){_0x304309[_0x3762('0x4c')]=_[_0x3762('0x4f')](_0x304309[_0x3762('0x4c')],{'$or':_[_0x3762('0x3c')](_0xb45f71,function(_0x321283){if(_0x321283[_0x3762('0x50')]!=='VIRTUAL'){var _0x5a9c75={};_0x5a9c75[_0x321283[_0x3762('0x38')]]={'$like':'%'+_0x370c19[_0x3762('0x42')][_0x3762('0x4e')]+'%'};return _0x5a9c75;}})});}_0x304309=_['merge']({},_0x304309,_0x370c19[_0x3762('0x51')]);var _0x47291f={'where':_0x304309[_0x3762('0x4c')]};return db[_0x3762('0x3d')]['count'](_0x47291f)[_0x3762('0x1e')](function(_0x48ba60){_0xd9d04b[_0x3762('0x2f')]=_0x48ba60;if(_0x370c19[_0x3762('0x42')][_0x3762('0x52')]){_0x304309[_0x3762('0x53')]=[{'all':!![]}];}return db[_0x3762('0x3d')]['findAll'](_0x304309);})[_0x3762('0x1e')](function(_0xe40bb9){_0xd9d04b[_0x3762('0x54')]=_0xe40bb9;return _0xd9d04b;})[_0x3762('0x1e')](respondWithFilteredResult(_0x3ff99e,_0x304309))[_0x3762('0x27')](handleError(_0x3ff99e,null));};exports[_0x3762('0x55')]=function(_0x220ecb,_0x27bdcf){var _0x5acee3={'raw':![],'where':{'id':_0x220ecb[_0x3762('0x56')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x5e0826={};_0x5e0826[_0x3762('0x41')]=_['keys'](db[_0x3762('0x3d')]['rawAttributes']);_0x5e0826['query']=_[_0x3762('0x43')](_0x220ecb[_0x3762('0x42')]);_0x5e0826[_0x3762('0x44')]=_[_0x3762('0x45')](_0x5e0826[_0x3762('0x41')],_0x5e0826[_0x3762('0x42')]);_0x5acee3[_0x3762('0x46')]=_['intersection'](_0x5e0826[_0x3762('0x41')],qs[_0x3762('0x47')](_0x220ecb[_0x3762('0x42')]['fields']));_0x5acee3[_0x3762('0x46')]=_0x5acee3[_0x3762('0x46')][_0x3762('0x48')]?_0x5acee3[_0x3762('0x46')]:_0x5e0826[_0x3762('0x41')];if(_0x220ecb[_0x3762('0x42')][_0x3762('0x52')]){_0x5acee3[_0x3762('0x53')]=[{'all':!![]}];}_0x5acee3=_[_0x3762('0x4f')]({},_0x5acee3,_0x220ecb[_0x3762('0x51')]);return db[_0x3762('0x3d')][_0x3762('0x57')](_0x5acee3)[_0x3762('0x1e')](handleEntityNotFound(_0x27bdcf,null))[_0x3762('0x1e')](respondWithResult(_0x27bdcf,null))['catch'](handleError(_0x27bdcf,null));};exports[_0x3762('0x58')]=function(_0x78e1b3,_0x32cdc4){return db['ChatWebsite'][_0x3762('0x58')](_0x78e1b3[_0x3762('0x59')],{})['then'](function(_0x706c5a){var _0x33daeb=_0x78e1b3[_0x3762('0x5a')][_0x3762('0x35')]({'plain':!![]});if(!_0x33daeb)throw new Error(_0x3762('0x5b'));if(_0x33daeb[_0x3762('0x5c')]===_0x3762('0x5a')){var _0x25e66f=_0x706c5a[_0x3762('0x35')]({'plain':!![]});var _0x1fdd72='ChatWebsites';return db[_0x3762('0x5d')][_0x3762('0x57')]({'where':{'name':_0x1fdd72,'userProfileId':_0x33daeb[_0x3762('0x5e')]},'raw':!![]})[_0x3762('0x1e')](function(_0x38dfe1){if(_0x38dfe1&&_0x38dfe1[_0x3762('0x5f')]===0x0){return db['UserProfileResource']['create']({'name':_0x25e66f[_0x3762('0x38')],'resourceId':_0x25e66f['id'],'type':_0x38dfe1[_0x3762('0x38')],'sectionId':_0x38dfe1['id']},{})[_0x3762('0x1e')](function(){return _0x706c5a;});}else{return _0x706c5a;}})[_0x3762('0x27')](function(_0x5e9a67){logger[_0x3762('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e9a67);throw _0x5e9a67;});}return _0x706c5a;})[_0x3762('0x1e')](respondWithResult(_0x32cdc4,0xc9))[_0x3762('0x27')](handleError(_0x32cdc4,null));};exports['update']=function(_0xed9dc8,_0x3e8e22){if(_0xed9dc8['body']['id']){delete _0xed9dc8[_0x3762('0x59')]['id'];}return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0xed9dc8['params']['id']},'include':[{'model':db[_0x3762('0x60')],'as':'mandatoryDispositionPause'}]})[_0x3762('0x1e')](handleEntityNotFound(_0x3e8e22,null))['then'](saveUpdates(_0xed9dc8[_0x3762('0x59')],null))[_0x3762('0x1e')](respondWithResult(_0x3e8e22,null))[_0x3762('0x27')](handleError(_0x3e8e22,null));};exports[_0x3762('0x34')]=function(_0x336d4c,_0x38f0df){return db['ChatWebsite'][_0x3762('0x57')]({'where':{'id':_0x336d4c[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x38f0df,null))[_0x3762('0x1e')](removeEntity(_0x38f0df,null))[_0x3762('0x27')](handleError(_0x38f0df,null));};exports[_0x3762('0x61')]=function(_0x2a01cf,_0x5eea74){return db[_0x3762('0x3d')][_0x3762('0x61')]()['then'](respondWithResult(_0x5eea74,null))['catch'](handleError(_0x5eea74,null));};exports[_0x3762('0x62')]=function(_0x3cd904,_0x3dd1a,_0x338ae4){if(_0x3cd904[_0x3762('0x59')]['id']){delete _0x3cd904[_0x3762('0x59')]['id'];}return db[_0x3762('0x3d')]['find']({'where':{'id':_0x3cd904['params']['id']}})['then'](handleEntityNotFound(_0x3dd1a,null))[_0x3762('0x1e')](function(_0x203ba1){if(_0x203ba1){_0x3cd904['body'][_0x3762('0x63')]=_0x203ba1['id'];return db[_0x3762('0x64')][_0x3762('0x58')](_0x3cd904[_0x3762('0x59')]);}})['then'](respondWithResult(_0x3dd1a,null))[_0x3762('0x27')](handleError(_0x3dd1a,null));};exports['getDispositions']=function(_0x36df5a,_0x3387ad,_0x29144f){var _0x5310c6={'raw':![],'where':{}};var _0x3013c1={};var _0x18092f={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x3762('0x65')]({'where':{'id':_0x36df5a['params']['id']}})['then'](handleEntityNotFound(_0x3387ad,null))[_0x3762('0x1e')](function(_0x9f67f2){if(_0x9f67f2){_0x3013c1['model']=_[_0x3762('0x43')](db['Disposition'][_0x3762('0x3e')]);_0x3013c1[_0x3762('0x42')]=_['keys'](_0x36df5a['query']);_0x3013c1[_0x3762('0x44')]=_[_0x3762('0x45')](_0x3013c1['model'],_0x3013c1[_0x3762('0x42')]);_0x5310c6[_0x3762('0x46')]=_[_0x3762('0x45')](_0x3013c1[_0x3762('0x41')],qs['fields'](_0x36df5a['query'][_0x3762('0x47')]));_0x5310c6[_0x3762('0x46')]=_0x5310c6[_0x3762('0x46')][_0x3762('0x48')]?_0x5310c6[_0x3762('0x46')]:_0x3013c1[_0x3762('0x41')];if(!_0x36df5a['query']['hasOwnProperty'](_0x3762('0x49'))){_0x5310c6['limit']=qs[_0x3762('0x2e')](_0x36df5a[_0x3762('0x42')][_0x3762('0x2e')]);_0x5310c6['offset']=qs['offset'](_0x36df5a[_0x3762('0x42')][_0x3762('0x2c')]);}_0x5310c6[_0x3762('0x4a')]=qs[_0x3762('0x4b')](_0x36df5a[_0x3762('0x42')]['sort']);_0x5310c6[_0x3762('0x4c')]=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x36df5a[_0x3762('0x42')],_0x3013c1['filters']));_0x5310c6[_0x3762('0x4c')]['ChatWebsiteId']=_0x9f67f2['id'];if(_0x36df5a['query'][_0x3762('0x4e')]){_0x5310c6[_0x3762('0x4c')]=_[_0x3762('0x4f')](_0x5310c6[_0x3762('0x4c')],{'$or':_[_0x3762('0x3c')](_0x5310c6[_0x3762('0x46')],function(_0x559bc2){var _0xce366c={};_0xce366c[_0x559bc2]={'$like':'%'+_0x36df5a['query'][_0x3762('0x4e')]+'%'};return _0xce366c;})});}_0x5310c6=_[_0x3762('0x4f')]({},_0x5310c6,_0x36df5a[_0x3762('0x51')]);return db[_0x3762('0x64')][_0x3762('0x2f')]({'where':_0x5310c6[_0x3762('0x4c')]})[_0x3762('0x1e')](function(_0x1d2ef3){_0x18092f[_0x3762('0x2f')]=_0x1d2ef3;if(_0x36df5a[_0x3762('0x42')][_0x3762('0x52')]){_0x5310c6[_0x3762('0x53')]=[{'all':!![]}];}return db[_0x3762('0x64')][_0x3762('0x66')](_0x5310c6);})[_0x3762('0x1e')](function(_0x4c8deb){_0x18092f['rows']=_0x4c8deb;return _0x18092f;});}})['then'](respondWithFilteredResult(_0x3387ad,_0x5310c6))['catch'](handleError(_0x3387ad,null));};exports[_0x3762('0x67')]=function(_0xc8fb7c,_0x37c20d,_0x29b0b3){return db['ChatWebsite'][_0x3762('0x57')]({'where':{'id':_0xc8fb7c[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x37c20d,null))['then'](function(_0x3e77f9){if(_0x3e77f9){return _0x3e77f9[_0x3762('0x67')](_0xc8fb7c[_0x3762('0x42')][_0x3762('0x68')]);}})[_0x3762('0x1e')](respondWithStatusCode(_0x37c20d,null))[_0x3762('0x27')](handleError(_0x37c20d,null));};exports[_0x3762('0x69')]=function(_0x8161ee,_0x407159,_0xc88459){if(_0x8161ee[_0x3762('0x59')]['id']){delete _0x8161ee['body']['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x8161ee[_0x3762('0x56')]['id']}})['then'](handleEntityNotFound(_0x407159,null))[_0x3762('0x1e')](function(_0x1cbea7){if(_0x1cbea7){_0x8161ee[_0x3762('0x59')][_0x3762('0x63')]=_0x1cbea7['id'];return db[_0x3762('0x6a')][_0x3762('0x58')](_0x8161ee['body']);}})[_0x3762('0x1e')](respondWithResult(_0x407159,null))['catch'](handleError(_0x407159,null));};exports[_0x3762('0x6b')]=function(_0x2a693f,_0x11583c,_0x1d9438){var _0x23958a={'raw':![],'where':{}};var _0x38e538={};var _0x9c7473={'count':0x0,'rows':[]};return db[_0x3762('0x3d')][_0x3762('0x65')]({'where':{'id':_0x2a693f[_0x3762('0x56')]['id']}})['then'](handleEntityNotFound(_0x11583c,null))[_0x3762('0x1e')](function(_0x431039){if(_0x431039){_0x38e538[_0x3762('0x41')]=_['keys'](db[_0x3762('0x6a')][_0x3762('0x3e')]);_0x38e538[_0x3762('0x42')]=_[_0x3762('0x43')](_0x2a693f['query']);_0x38e538[_0x3762('0x44')]=_[_0x3762('0x45')](_0x38e538['model'],_0x38e538['query']);_0x23958a[_0x3762('0x46')]=_[_0x3762('0x45')](_0x38e538[_0x3762('0x41')],qs[_0x3762('0x47')](_0x2a693f['query'][_0x3762('0x47')]));_0x23958a[_0x3762('0x46')]=_0x23958a[_0x3762('0x46')][_0x3762('0x48')]?_0x23958a['attributes']:_0x38e538[_0x3762('0x41')];if(!_0x2a693f[_0x3762('0x42')]['hasOwnProperty']('nolimit')){_0x23958a[_0x3762('0x2e')]=qs[_0x3762('0x2e')](_0x2a693f[_0x3762('0x42')]['limit']);_0x23958a[_0x3762('0x2c')]=qs['offset'](_0x2a693f[_0x3762('0x42')]['offset']);}_0x23958a[_0x3762('0x4a')]=qs[_0x3762('0x4b')](_0x2a693f[_0x3762('0x42')][_0x3762('0x4b')]);_0x23958a[_0x3762('0x4c')]=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x2a693f[_0x3762('0x42')],_0x38e538[_0x3762('0x44')]));_0x23958a['where'][_0x3762('0x63')]=_0x431039['id'];if(_0x2a693f[_0x3762('0x42')]['filter']){_0x23958a['where']=_[_0x3762('0x4f')](_0x23958a[_0x3762('0x4c')],{'$or':_[_0x3762('0x3c')](_0x23958a[_0x3762('0x46')],function(_0x5f2b10){var _0x30dfe2={};_0x30dfe2[_0x5f2b10]={'$like':'%'+_0x2a693f[_0x3762('0x42')][_0x3762('0x4e')]+'%'};return _0x30dfe2;})});}_0x23958a=_[_0x3762('0x4f')]({},_0x23958a,_0x2a693f[_0x3762('0x51')]);return db['CannedAnswer'][_0x3762('0x2f')]({'where':_0x23958a[_0x3762('0x4c')]})[_0x3762('0x1e')](function(_0x294a20){_0x9c7473[_0x3762('0x2f')]=_0x294a20;if(_0x2a693f[_0x3762('0x42')][_0x3762('0x52')]){_0x23958a[_0x3762('0x53')]=[{'all':!![]}];}return db[_0x3762('0x6a')][_0x3762('0x66')](_0x23958a);})[_0x3762('0x1e')](function(_0x4e2049){_0x9c7473['rows']=_0x4e2049;return _0x9c7473;});}})['then'](respondWithFilteredResult(_0x11583c,_0x23958a))[_0x3762('0x27')](handleError(_0x11583c,null));};exports[_0x3762('0x6c')]=function(_0x2938aa,_0xde9116,_0x3f7375){return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x2938aa[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0xde9116,null))[_0x3762('0x1e')](function(_0x56a120){if(_0x56a120){return _0x56a120['removeAnswers'](_0x2938aa[_0x3762('0x42')]['ids']);}})['then'](respondWithStatusCode(_0xde9116,null))[_0x3762('0x27')](handleError(_0xde9116,null));};exports['addLogo']=function(_0x1447ff,_0x2f2543,_0x4232a3){_0x1447ff[_0x3762('0x59')][_0x3762('0x6d')]=_0x1447ff[_0x3762('0x6e')][_0x3762('0x6f')];return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x1447ff['params']['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x2f2543,null))['then'](saveUpdates(_0x1447ff[_0x3762('0x59')],null))[_0x3762('0x1e')](respondWithResult(_0x2f2543,null))[_0x3762('0x27')](handleError(_0x2f2543,null));};exports['addAvatar']=function(_0x5a2668,_0x5f1564,_0x3b1807){_0x5a2668['body'][_0x3762('0x70')]=_0x5a2668[_0x3762('0x6e')][_0x3762('0x6f')];return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x5a2668[_0x3762('0x56')]['id']}})['then'](handleEntityNotFound(_0x5f1564,null))[_0x3762('0x1e')](saveUpdates(_0x5a2668[_0x3762('0x59')],null))[_0x3762('0x1e')](respondWithResult(_0x5f1564,null))['catch'](handleError(_0x5f1564,null));};exports['addCustomerAvatar']=function(_0x2a3a93,_0x316e61,_0x231b95){_0x2a3a93[_0x3762('0x59')][_0x3762('0x71')]=_0x2a3a93['file'][_0x3762('0x6f')];return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x2a3a93[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x316e61,null))[_0x3762('0x1e')](saveUpdates(_0x2a3a93[_0x3762('0x59')],null))[_0x3762('0x1e')](respondWithResult(_0x316e61,null))[_0x3762('0x27')](handleError(_0x316e61,null));};exports[_0x3762('0x72')]=function(_0x538c4c,_0x421133,_0x1140b2){_0x538c4c[_0x3762('0x59')]['systemAvatar']=_0x538c4c[_0x3762('0x6e')][_0x3762('0x6f')];return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x538c4c[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x421133,null))[_0x3762('0x1e')](saveUpdates(_0x538c4c[_0x3762('0x59')],null))[_0x3762('0x1e')](respondWithResult(_0x421133,null))['catch'](handleError(_0x421133,null));};exports[_0x3762('0x73')]=function(_0x485914,_0xb13a03,_0xd7c810){var _0x59e2dc=path[_0x3762('0x74')](config[_0x3762('0x75')],'server/files/images/logos/default_logo.svg');var _0x3faed9={'where':{'id':_0x485914['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x390d2d=![];return require('../../config/license/util')[_0x3762('0x76')]()[_0x3762('0x1e')](function(_0x3c7afc){if(_0x3c7afc){_0x390d2d=_0x3c7afc[_0x3762('0x77')];}})[_0x3762('0x1e')](function(){return db[_0x3762('0x3d')]['find'](_0x3faed9);})[_0x3762('0x1e')](handleEntityNotFound(_0xb13a03,null))[_0x3762('0x1e')](function(_0x4ea222){if(_0x4ea222){if(!_[_0x3762('0x78')](_0x4ea222[_0x3762('0x6d')])){if(fs[_0x3762('0x79')](path[_0x3762('0x74')](config['root'],_0x3762('0x7a'),_0x4ea222[_0x3762('0x6d')]))&&_0x390d2d){_0x59e2dc=path['join'](config['root'],_0x3762('0x7a'),_0x4ea222['sitepic']);}}return _0xb13a03[_0x3762('0x7b')](_0x59e2dc);}})['catch'](handleError(_0xb13a03,null));};exports[_0x3762('0x7c')]=function(_0x2d9645,_0xf54edc,_0x26b07b){var _0x2c0318=path['join'](config[_0x3762('0x75')],'server/files/images/avatars/default_avatar.png');var _0x4e866e={'where':{'id':_0x2d9645[_0x3762('0x56')]['id']},'attributes':['id',_0x3762('0x70')],'raw':!![]};return db[_0x3762('0x3d')][_0x3762('0x57')](_0x4e866e)[_0x3762('0x1e')](handleEntityNotFound(_0xf54edc,null))[_0x3762('0x1e')](function(_0x3ddec3){if(_0x3ddec3){if(!_[_0x3762('0x78')](_0x3ddec3[_0x3762('0x70')])){if(fs[_0x3762('0x79')](path[_0x3762('0x74')](config[_0x3762('0x75')],_0x3762('0x7d'),_0x3ddec3['agentAvatar']))){_0x2c0318=path['join'](config[_0x3762('0x75')],'server/files/images/avatars/',_0x3ddec3['agentAvatar']);}}return _0xf54edc['download'](_0x2c0318);}})['catch'](handleError(_0xf54edc,null));};exports[_0x3762('0x7e')]=function(_0x13785c,_0x87b840,_0x271f05){var _0x3a70a7=path[_0x3762('0x74')](config[_0x3762('0x75')],'server/files/images/avatars/customer_avatar.png');var _0x59e0e0={'where':{'id':_0x13785c[_0x3762('0x56')]['id']},'attributes':['id',_0x3762('0x71'),_0x3762('0x7f')],'raw':!![]};return db['ChatWebsite'][_0x3762('0x57')](_0x59e0e0)[_0x3762('0x1e')](handleEntityNotFound(_0x87b840,null))[_0x3762('0x1e')](function(_0xfff5a1){if(_0xfff5a1){if(!_[_0x3762('0x78')](_0xfff5a1[_0x3762('0x71')])){if(fs[_0x3762('0x79')](path[_0x3762('0x74')](config[_0x3762('0x75')],_0x3762('0x7d'),_0xfff5a1['customerAvatar']))&&_0xfff5a1[_0x3762('0x7f')]){_0x3a70a7=path[_0x3762('0x74')](config[_0x3762('0x75')],'server/files/images/avatars/',_0xfff5a1[_0x3762('0x71')]);}}return _0x87b840[_0x3762('0x7b')](_0x3a70a7);}})[_0x3762('0x27')](handleError(_0x87b840,null));};exports['getSystemAvatar']=function(_0x239021,_0x1393ff,_0x33588d){var _0x2de0b6=path['join'](config[_0x3762('0x75')],'server/files/images/avatars/system_avatar.png');var _0x80452d={'where':{'id':_0x239021[_0x3762('0x56')]['id']},'attributes':['id',_0x3762('0x80')],'raw':!![]};return db[_0x3762('0x3d')][_0x3762('0x57')](_0x80452d)[_0x3762('0x1e')](handleEntityNotFound(_0x1393ff,null))[_0x3762('0x1e')](function(_0x48d8d3){if(_0x48d8d3){if(!_[_0x3762('0x78')](_0x48d8d3[_0x3762('0x80')])){if(fs['existsSync'](path[_0x3762('0x74')](config[_0x3762('0x75')],'server/files/images/avatars/',_0x48d8d3['systemAvatar']))){_0x2de0b6=path[_0x3762('0x74')](config[_0x3762('0x75')],_0x3762('0x7d'),_0x48d8d3[_0x3762('0x80')]);}}return _0x1393ff[_0x3762('0x7b')](_0x2de0b6);}})['catch'](handleError(_0x1393ff,null));};exports[_0x3762('0x81')]=function(_0x251f74,_0x56ba1e,_0x5afcaa){var _0x112a32=require(_0x3762('0x82'));var _0x5955e7=new _0x112a32();var _0x3c05d0=_0x5955e7[_0x3762('0x83')](_0x251f74['headers'][_0x3762('0x84')])[_0x3762('0x85')]();var _0x5a6c4e={'body':_0x251f74['body'],'channel':_0x3762('0x86')};var _0x1970ee=[];var _0x47feda=[];var _0x500128={};var _0x2a5825=![];return db[_0x3762('0x87')][_0x3762('0x61')]()[_0x3762('0x1e')](function(_0x5663e5){if(!_0x5663e5){throw new db['Sequelize'][(_0x3762('0x88'))]('no\x20available\x20attributes');}_0x1970ee=_[_0x3762('0x89')](_['keys'](_0x5663e5),[_0x3762('0x8a'),'updatedAt']);_0x47feda=_[_0x3762('0x89')](_[_0x3762('0x43')](_0x5663e5),[_0x3762('0x8a'),_0x3762('0x8b'),_0x3762('0x8c'),_0x3762('0x8d')]);if(_0x251f74[_0x3762('0x59')]['id']){delete _0x251f74['body']['id'];}if(_[_0x3762('0x78')](_0x251f74[_0x3762('0x59')][_0x3762('0x8e')])){throw new db[(_0x3762('0x8f'))][(_0x3762('0x88'))](_0x3762('0x90'));}if(_[_0x3762('0x78')](_0x251f74[_0x3762('0x59')][_0x3762('0x59')])||_0x251f74[_0x3762('0x59')]['body']===''){throw new db[(_0x3762('0x8f'))]['ValidationError'](_0x3762('0x91'));}if(_[_0x3762('0x78')](_0x251f74[_0x3762('0x59')][_0x3762('0x92')])){throw new db[(_0x3762('0x8f'))][(_0x3762('0x88'))](_0x3762('0x93')+_0x47feda);}if(!_[_0x3762('0x94')](_0x47feda,_0x251f74[_0x3762('0x59')]['mapKey'])){throw new db[(_0x3762('0x8f'))][(_0x3762('0x88'))](_0x3762('0x95')+_0x47feda);}_0x500128[_0x251f74[_0x3762('0x59')][_0x3762('0x92')]]=_0x251f74[_0x3762('0x59')][_0x3762('0x8e')];})[_0x3762('0x1e')](function(){return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x251f74[_0x3762('0x56')]['id']},'include':[{'model':db[_0x3762('0x96')],'as':_0x3762('0x97'),'include':[{'model':db[_0x3762('0x87')],'as':_0x3762('0x98'),'where':_0x500128,'limit':0x1,'order':[[_0x3762('0x8b'),'DESC']]}]},{'model':db['ChatApplication'],'as':'Applications'}]});})[_0x3762('0x1e')](handleEntityNotFound(_0x56ba1e,null))[_0x3762('0x1e')](function(_0x4fd50a){if(_0x4fd50a&&_0x4fd50a[_0x3762('0x97')]){_0x5a6c4e[_0x3762('0x99')]=_0x4fd50a;_0x5a6c4e[_0x3762('0x9a')]=_0x4fd50a['Applications'];_0x5a6c4e[_0x3762('0x9b')]=_0x4fd50a[_0x3762('0x97')];_0x5a6c4e[_0x3762('0x9a')]=_[_0x3762('0x9c')](_0x5a6c4e['applications'],[_0x3762('0x9d')],['asc']);if(_0x5a6c4e['account']['Applications']){delete _0x5a6c4e[_0x3762('0x99')]['Applications'];}if(_0x5a6c4e[_0x3762('0x99')][_0x3762('0x97')]&&_0x5a6c4e[_0x3762('0x99')][_0x3762('0x97')][_0x3762('0x98')][_0x3762('0x48')]){return _0x5a6c4e[_0x3762('0x99')][_0x3762('0x97')][_0x3762('0x98')][0x0];}var _0x86a51d=_[_0x3762('0x9e')](_0x251f74[_0x3762('0x59')],{'firstName':_0x251f74[_0x3762('0x59')][_0x3762('0x8e')],'ListId':_0x4fd50a[_0x3762('0x8d')]});_0x86a51d[_0x251f74[_0x3762('0x59')][_0x3762('0x92')]]=_0x251f74[_0x3762('0x59')][_0x3762('0x8e')];return db[_0x3762('0x87')]['create'](_0x86a51d,{'fields':_0x1970ee,'raw':!![]});}})[_0x3762('0x1e')](handleEntityNotFound(_0x56ba1e,null))[_0x3762('0x1e')](function(_0x27b292){_0x5a6c4e['contact']=_0x27b292;var _0x197ea2=_0x251f74[_0x3762('0x59')][_0x3762('0x9f')];if(_0x251f74[_0x3762('0xa0')][_0x3762('0xa1')]){_0x197ea2=_0x251f74['headers'][_0x3762('0xa1')];}else if(_0x251f74[_0x3762('0xa0')][_0x3762('0xa2')]){_0x197ea2=_[_0x3762('0xa3')](_0x251f74[_0x3762('0xa0')][_0x3762('0xa2')][_0x3762('0xa4')](','));}if(_0x27b292){var _0xdf0adc={'ContactId':_0x27b292['id'],'ChatWebsiteId':_0x251f74['params']['id'],'from':(_0x27b292[_0x3762('0xa5')]||'')+'\x20'+(_0x27b292[_0x3762('0xa6')]||''),'customerIp':_0x197ea2,'customerPort':_0x251f74['headers'][_0x3762('0xa7')]?_0x251f74['headers'][_0x3762('0xa7')]:null,'referer':_0x251f74[_0x3762('0x59')][_0x3762('0xa8')],'browserName':_0x3c05d0[_0x3762('0xa9')][_0x3762('0x38')]&&_0x3c05d0['browser'][_0x3762('0xaa')]?util[_0x3762('0xab')](_0x3762('0xac'),_0x3c05d0[_0x3762('0xa9')][_0x3762('0x38')],_0x3c05d0[_0x3762('0xa9')][_0x3762('0xaa')]):'unknown','browserVersion':_0x3c05d0['browser'][_0x3762('0xaa')]||'unknown','osName':util[_0x3762('0xab')](_0x3762('0xac'),_0x3c05d0['os'][_0x3762('0x38')],_0x3c05d0['os']['version']),'osVersion':_0x3c05d0['os'][_0x3762('0xaa')],'deviceModel':_0x3c05d0[_0x3762('0xad')]['model']&&_0x3c05d0['device'][_0x3762('0xae')]?util['format'](_0x3762('0xaf'),_0x3c05d0['device'][_0x3762('0x41')],_0x3c05d0[_0x3762('0xad')][_0x3762('0xae')],_0x3c05d0['device'][_0x3762('0x50')]):null,'deviceVendor':_0x3c05d0[_0x3762('0xad')][_0x3762('0xae')],'deviceType':_0x3c05d0[_0x3762('0xad')]['type'],'formData':JSON[_0x3762('0x22')](_0x251f74[_0x3762('0x59')])};var _0x5a759d={'ChatWebsiteId':_0x251f74['params']['id'],'closed':![]};if(_0x251f74[_0x3762('0x59')][_0x3762('0xb0')]){_0x5a759d[_0x3762('0xb0')]=_0x251f74[_0x3762('0x59')]['threadId'];return db[_0x3762('0xb1')][_0x3762('0x57')]({'where':_0x5a759d})[_0x3762('0x1e')](function(_0x5c51db){if(_0x5c51db){return[_0x5c51db,![]];}_0xdf0adc['threadId']=_0x251f74[_0x3762('0x59')][_0x3762('0xb0')];_0xdf0adc[_0x3762('0xb2')]=_0x251f74[_0x3762('0x59')]['externalUrl'];return db['ChatInteraction'][_0x3762('0x58')](_0xdf0adc)[_0x3762('0x1e')](function(_0x3502dd){return[_0x3502dd,!![]];});});}_0x5a759d[_0x3762('0xb3')]=_0x27b292['id'];if(_0x251f74[_0x3762('0x59')][_0x3762('0xb4')]&&_0x251f74[_0x3762('0x59')][_0x3762('0xb4')]['id']){_0x5a759d['id']=_0x251f74[_0x3762('0x59')][_0x3762('0xb4')]['id'];return db[_0x3762('0xb1')][_0x3762('0x57')]({'where':_0x5a759d})[_0x3762('0x1e')](function(_0x164a23){if(_0x164a23){return[_0x164a23,![]];}return db[_0x3762('0xb1')]['create'](_0xdf0adc)[_0x3762('0x1e')](function(_0x317776){return[_0x317776,!![]];});});}return db[_0x3762('0xb1')][_0x3762('0x58')](_0xdf0adc)[_0x3762('0x1e')](function(_0x2ed4d8){return[_0x2ed4d8,!![]];});}})[_0x3762('0xb5')](function(_0x24eb34,_0x3ddeda){if(_0x24eb34){_0x2a5825=_0x3ddeda;if(!_0x3ddeda){var _0x3714f5={'from':(_0x5a6c4e['contact']['firstName']||'')+'\x20'+(_0x5a6c4e[_0x3762('0xb6')][_0x3762('0xa6')]||'')};if(_0x251f74[_0x3762('0x59')][_0x3762('0xb0')]&&_0x251f74[_0x3762('0x59')]['messageId']&&_0x251f74[_0x3762('0x59')][_0x3762('0xb0')]!=_0x251f74[_0x3762('0x59')][_0x3762('0xb7')]){_0x3714f5[_0x3762('0xb0')]=_0x251f74[_0x3762('0x59')][_0x3762('0xb7')];}return _0x24eb34[_0x3762('0x33')](_0x3714f5);}else{return _0x24eb34;}}})[_0x3762('0x1e')](function(_0x39d99f){_0x5a6c4e[_0x3762('0xb4')]=_0x39d99f[_0x3762('0x35')]({'plain':!![]});_0x5a6c4e['interaction'][_0x3762('0xb8')]=_0x2a5825;if(_0x5a6c4e[_0x3762('0xb4')]['created']){if(_0x5a6c4e[_0x3762('0x99')]['autoclose']){_0x5a6c4e[_0x3762('0x9a')]['push']({'id':0x0,'priority':_0x5a6c4e['applications'][_0x3762('0x48')]+0x1,'app':'close','appdata':_0x3762('0xb9'),'interval':_0x3762('0xba')});}}return db[_0x3762('0xbb')][_0x3762('0x58')]({'body':_0x251f74[_0x3762('0x59')][_0x3762('0x59')],'ChatWebsiteId':_0x251f74[_0x3762('0x56')]['id'],'ChatInteractionId':_0x39d99f['id'],'direction':'in','ContactId':_0x5a6c4e[_0x3762('0xb6')]['id'],'AttachmentId':_0x251f74['body'][_0x3762('0xbc')]});})['then'](function(_0x35e527){_0x5a6c4e[_0x3762('0x24')]=_0x35e527;if(_0x5a6c4e[_0x3762('0xb4')][_0x3762('0xbd')]){return db[_0x3762('0xbe')][_0x3762('0x57')]({'attributes':['id',_0x3762('0x38')],'where':{'id':_0x5a6c4e[_0x3762('0xb4')][_0x3762('0xbd')]}})['then'](function(_0x17df2b){if(_0x17df2b){_0x5a6c4e['applications'][_0x3762('0xbf')]({'id':0x0,'priority':0x0,'app':_0x3762('0xc0'),'appdata':_0x17df2b[_0x3762('0x38')]+','+(_0x5a6c4e[_0x3762('0x99')][_0x3762('0xc1')]||0xa),'interval':'*,*,*,*'});_0x5a6c4e[_0x3762('0xc2')]=!![];}return respondWithRpcPromise(_0x3762('0xc3'),'startRouting',_0x5a6c4e);});}return respondWithRpcPromise('Start',_0x3762('0xc4'),_0x5a6c4e);})[_0x3762('0x1e')](function(_0x1b12d0){respondWithRpcPromise(_0x3762('0xc5'),_0x3762('0xc5'),{'event':_0x3762('0x81'),'message':_0x1b12d0},client9002);return _0x1b12d0;})[_0x3762('0x1e')](respondWithResult(_0x56ba1e,null))[_0x3762('0x27')](handleError(_0x56ba1e,null));};exports['offline']=function(_0x1eb120,_0x3223f2,_0x329e09){var _0x55a8e9,_0x480541,_0x530e23;var _0x20de30=[];var _0x4cdf7b=[];var _0x2096d2={};var _0x48643c=_0x1eb120[_0x3762('0xc6')]||[];var _0x5d8302=[];var _0x47e8cb;return db[_0x3762('0x87')][_0x3762('0x61')]()['then'](function(_0x289dcc){if(!_0x289dcc){throw new db[(_0x3762('0x8f'))][(_0x3762('0x88'))](_0x3762('0xc7'));}_0x4cdf7b=_[_0x3762('0x89')](_['keys'](_0x289dcc),[_0x3762('0x8a'),'updatedAt']);_0x20de30=_['difference'](_[_0x3762('0x43')](_0x289dcc),[_0x3762('0x8a'),'updatedAt','CompanyId',_0x3762('0x8d')]);if(_0x1eb120[_0x3762('0x59')]['id']){delete _0x1eb120[_0x3762('0x59')]['id'];}if(_[_0x3762('0x78')](_0x1eb120[_0x3762('0x59')]['from'])){throw _0x3223f2[_0x3762('0x29')](0x1f4)['send'](new db[(_0x3762('0x8f'))][(_0x3762('0x88'))](_0x3762('0x90')));}if(_[_0x3762('0x78')](_0x1eb120[_0x3762('0x59')][_0x3762('0x59')])||_0x1eb120[_0x3762('0x59')][_0x3762('0x59')]===''){throw _0x3223f2['status'](0x1f4)['send'](new db[(_0x3762('0x8f'))][(_0x3762('0x88'))](_0x3762('0x91')));}if(_[_0x3762('0x78')](_0x1eb120[_0x3762('0x59')][_0x3762('0xc8')])){throw _0x3223f2[_0x3762('0x29')](0x1f4)[_0x3762('0x39')](new db[(_0x3762('0x8f'))][(_0x3762('0x88'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x20de30));}if(!_[_0x3762('0x94')](_0x20de30,_0x1eb120['body']['mapKeyOffline'])){throw _0x3223f2[_0x3762('0x29')](0x1f4)[_0x3762('0x39')](new db['Sequelize'][(_0x3762('0x88'))](_0x3762('0xc9')+_0x20de30));}_0x2096d2[_0x1eb120['body'][_0x3762('0xc8')]]=_0x1eb120[_0x3762('0x59')][_0x3762('0x8e')];})['then'](function(){return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x1eb120[_0x3762('0x56')]['id']},'include':[{'model':db[_0x3762('0x96')],'as':'List'},{'model':db[_0x3762('0xca')],'as':'MailAccount'}]});})['then'](handleEntityNotFound(_0x3223f2,null))[_0x3762('0x1e')](function(_0x8242b4){if(_0x8242b4&&_0x8242b4[_0x3762('0x97')]){_0x480541=_0x8242b4;var _0x154a66=_[_0x3762('0x9e')](_0x1eb120[_0x3762('0x59')],{'firstName':_0x1eb120[_0x3762('0x59')]['from'],'phone':_0x1eb120[_0x3762('0x59')][_0x3762('0x8e')],'ListId':_0x8242b4[_0x3762('0x8d')]});_0x154a66[_0x1eb120[_0x3762('0x59')][_0x3762('0xc8')]]=_0x1eb120['body'][_0x3762('0x8e')];return db[_0x3762('0x87')]['findOrCreate']({'where':_0x2096d2,'defaults':_0x154a66});}})['spread'](function(_0x2e8288){if(_0x2e8288){_0x530e23=_0x2e8288;var _0x3b885b=fs[_0x3762('0xcb')](path['join'](config['root'],_0x3762('0xcc')),'utf8');var _0x29c8d6=ejs[_0x3762('0xcd')](_0x3b885b,{'body':_['toPairs'](_0x1eb120[_0x3762('0x59')][_0x3762('0x59')]),'bodyTitle':_0x480541[_0x3762('0xce')]});return db['ChatOfflineMessage'][_0x3762('0x58')]({'body':_0x29c8d6,'ContactId':_0x2e8288['id'],'ChatWebsiteId':_0x480541['id']});}})[_0x3762('0x1e')](function(_0x13153c){_0x47e8cb=_0x13153c;if(_0x48643c[_0x3762('0x48')]){var _0x530693=_0x48643c[_0x3762('0x3c')](function(_0xccd972){return{'name':_0xccd972[_0x3762('0xcf')],'basename':_0xccd972['filename'],'type':_0xccd972[_0x3762('0xd0')],'ChatOfflineMessageId':_0x13153c['id']};});_0x5d8302=_0x530693[_0x3762('0x3c')](_0x5e5022=>{var _0x3379dd={'filename':_0x5e5022[_0x3762('0x38')],'path':path['join'](config['root'],_0x3762('0xd1'),'files',_0x3762('0xd2'),_0x3762('0xd3'),_0x5e5022[_0x3762('0xd4')])};return _0x3379dd;});if(!_0x480541['openNewInteraction']){return db['sequelize'][_0x3762('0xd5')](function(_0x3aa20f){return db['Attachment'][_0x3762('0xd6')](_0x530693,{'transaction':_0x3aa20f});});}}})[_0x3762('0x1e')](function(){if(_0x47e8cb){_0x55a8e9=_0x47e8cb;return db[_0x3762('0xca')][_0x3762('0x65')]({'where':{'active':!![]},'include':[{'model':db[_0x3762('0xd7')],'as':_0x3762('0xd8'),'raw':!![]}]});}})[_0x3762('0x1e')](function(_0x135821){if(_0x135821&&_0x135821[_0x3762('0xd8')]&&_0x480541[_0x3762('0xd9')]&&_0x480541[_0x3762('0xda')]){var _0x124f35={'tls':{'rejectUnauthorized':![]}};if(_0x135821[_0x3762('0xd8')][_0x3762('0xdb')]){_0x124f35[_0x3762('0xdb')]=_0x135821['Smtp'][_0x3762('0xdb')];}else{_0x124f35[_0x3762('0xdc')]=_0x135821[_0x3762('0xd8')][_0x3762('0xdc')];_0x124f35[_0x3762('0xdd')]=_0x135821['Smtp'][_0x3762('0xdd')];_0x124f35[_0x3762('0xde')]=_0x135821[_0x3762('0xd8')][_0x3762('0xde')];}if(_0x135821['Smtp']['authentication']){_0x124f35[_0x3762('0xdf')]={'user':_0x135821[_0x3762('0xd8')][_0x3762('0x5a')],'pass':_0x135821[_0x3762('0xd8')][_0x3762('0xe0')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x124f35,'message':{'from':util[_0x3762('0xab')]('\x22%s\x22\x20<%s>',_0x135821[_0x3762('0x38')],_0x135821['email']||_0x135821['Smtp'][_0x3762('0x5a')]),'to':_0x480541[_0x3762('0xda')],'subject':_0x480541[_0x3762('0xe1')],'html':_0x55a8e9[_0x3762('0x59')],'attachments':_0x5d8302}},client9003)['then'](function(){return _0x55a8e9;})[_0x3762('0x27')](function(_0x42d8a7){console['error'](_0x42d8a7);});}})['then'](function(){if(_0x480541&&_0x480541[_0x3762('0xe2')]&&_0x480541[_0x3762('0xe3')]){var _0x2c31c7=[];if(_0x48643c[_0x3762('0x48')]){_0x2c31c7=_0x48643c['map'](function(_0x343d7f){return{'name':_0x343d7f[_0x3762('0xcf')],'basename':_0x343d7f['filename'],'type':_0x343d7f[_0x3762('0xd0')],'ChatOfflineMessageId':_0x47e8cb['id']};});}var _0x1009f6;if(!_[_0x3762('0x78')](_0x480541[_0x3762('0xe4')])){var _0x10b7f3=_[_0x3762('0x3c')](_0x1eb120[_0x3762('0x59')],function(_0x3c6c44){return _0x3c6c44;});var _0x31a8a8=_['toPairsIn'](_0x10b7f3)[0x0];var _0x2eae7b=_[_0x3762('0xe5')](_0x31a8a8,function(_0x45975f){return _0x45975f;});_0x1009f6=_0x2eae7b[0x1][_0x480541['subjectOffline']];}var _0x44f995={'from':_0x530e23[_0x3762('0xe6')],'firstName':_0x530e23[_0x3762('0xa5')],'lastName':_0x530e23['lastName'],'mapKey':_0x3762('0xe6'),'message':{'from':_0x530e23[_0x3762('0xe6')],'to':_0x480541[_0x3762('0xca')][_0x3762('0xe6')],'cc':'','subject':_[_0x3762('0x78')](_0x1009f6)?_0x480541[_0x3762('0xe1')]:_0x1009f6,'messageId':'','sentAt':new Date(),'attach':_0x2c31c7[_0x3762('0x48')],'attachments':_0x2c31c7,'originChannel':_0x3762('0xe7'),'ChatWebsiteId':_0x480541['id'],'ChatOfflineMessageId':_0x55a8e9['id'],'originTo':_0x480541[_0x3762('0xca')][_0x3762('0xe6')]},'body':_0x55a8e9[_0x3762('0x59')]};var _0x17cc36={'account':{'id':_0x480541['MailAccountId']},'body':_0x44f995,'log':_0x3762('0xe8')};return respondWithRpcPromise(_0x3762('0xe8'),_0x3762('0xe9'),_0x17cc36,client9001)[_0x3762('0x1e')](function(){return _0x55a8e9;})[_0x3762('0x27')](function(_0x4ff62e){console[_0x3762('0x23')](_0x4ff62e);});}return;})[_0x3762('0x1e')](function(){if(_0x55a8e9){return _0x55a8e9;}})['then'](respondWithResult(_0x3223f2,null))[_0x3762('0x27')](function(_0x37406e){console['error']('catch',_0x37406e);for(var _0x272cfd of _0x48643c){var _0x58a9d8=path[_0x3762('0x74')](config[_0x3762('0x75')],_0x3762('0xd1'),_0x3762('0xc6'),_0x3762('0xd2'),_0x3762('0xd3'),_0x272cfd[_0x3762('0x6f')]);fs_extra['remove'](_0x58a9d8)[_0x3762('0x27')](function(_0x288684){console['error']('Could\x20not\x20remove\x20attachment\x20file',_0x58a9d8,_0x288684);});}});};exports[_0x3762('0xea')]=function(_0xfe77bc,_0x2eb2ca,_0x56432f){return db['ChatInteraction'][_0x3762('0x57')]({'where':{'id':_0xfe77bc[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x2eb2ca,null))[_0x3762('0x1e')](function(_0x4ed68e){if(_0x4ed68e){return _0x4ed68e['addInteraction'](_0xfe77bc[_0x3762('0x59')][_0x3762('0x68')],_[_0x3762('0xeb')](_0xfe77bc[_0x3762('0x59')],[_0x3762('0x68'),'id'])||{});}})['then'](respondWithResult(_0x2eb2ca,null))[_0x3762('0x27')](handleError(_0x2eb2ca,null));};exports[_0x3762('0xec')]=function(_0x4e0688,_0x262660,_0x37b71f){var _0x32ef71={'raw':![],'where':{}};var _0xe6b2a3={};var _0x3c8b9f={'count':0x0,'rows':[]};return db[_0x3762('0x3d')][_0x3762('0x65')]({'where':{'id':_0x4e0688[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x262660,null))[_0x3762('0x1e')](function(_0x4f5a44){if(_0x4f5a44){_0xe6b2a3[_0x3762('0x41')]=_[_0x3762('0x43')](db[_0x3762('0xb1')][_0x3762('0x3e')]);_0xe6b2a3[_0x3762('0x42')]=_[_0x3762('0x43')](_0x4e0688[_0x3762('0x42')]);_0xe6b2a3['filters']=_['intersection'](_0xe6b2a3[_0x3762('0x41')],_0xe6b2a3[_0x3762('0x42')]);_0x32ef71[_0x3762('0x46')]=_[_0x3762('0x45')](_0xe6b2a3[_0x3762('0x41')],qs[_0x3762('0x47')](_0x4e0688[_0x3762('0x42')]['fields']));_0x32ef71[_0x3762('0x46')]=_0x32ef71[_0x3762('0x46')][_0x3762('0x48')]?_0x32ef71[_0x3762('0x46')]:_0xe6b2a3['model'];if(!_0x4e0688[_0x3762('0x42')]['hasOwnProperty'](_0x3762('0x49'))){_0x32ef71['limit']=qs[_0x3762('0x2e')](_0x4e0688[_0x3762('0x42')][_0x3762('0x2e')]);_0x32ef71['offset']=qs[_0x3762('0x2c')](_0x4e0688['query'][_0x3762('0x2c')]);}_0x32ef71[_0x3762('0x4a')]=qs[_0x3762('0x4b')](_0x4e0688[_0x3762('0x42')][_0x3762('0x4b')]);_0x32ef71[_0x3762('0x4c')]=qs['filters'](_[_0x3762('0x4d')](_0x4e0688[_0x3762('0x42')],_0xe6b2a3[_0x3762('0x44')]));_0x32ef71[_0x3762('0x4c')][_0x3762('0x63')]=_0x4f5a44['id'];if(_0x4e0688[_0x3762('0x42')][_0x3762('0x4e')]){_0x32ef71[_0x3762('0x4c')]=_[_0x3762('0x4f')](_0x32ef71['where'],{'$or':_['map'](_0x32ef71[_0x3762('0x46')],function(_0x2a5b4e){var _0x2b3d59={};_0x2b3d59[_0x2a5b4e]={'$like':'%'+_0x4e0688[_0x3762('0x42')]['filter']+'%'};return _0x2b3d59;})});}_0x32ef71=_[_0x3762('0x4f')]({},_0x32ef71,_0x4e0688[_0x3762('0x51')]);return db['ChatInteraction'][_0x3762('0x2f')]({'where':_0x32ef71[_0x3762('0x4c')]})['then'](function(_0x8e1111){_0x3c8b9f['count']=_0x8e1111;if(_0x4e0688[_0x3762('0x42')]['includeAll']){_0x32ef71[_0x3762('0x53')]=[{'model':db[_0x3762('0x87')],'as':_0x3762('0xed'),'required':![]},{'model':db['User'],'as':_0x3762('0xee'),'attributes':['name',_0x3762('0xef'),_0x3762('0xf0')],'required':![]},{'model':db[_0x3762('0xf1')],'as':_0x3762('0xf2'),'attributes':['id',_0x3762('0x38'),_0x3762('0xf3')],'where':_0x4e0688[_0x3762('0x42')][_0x3762('0xf4')]?{'id':_0x4e0688['query'][_0x3762('0xf4')]}:undefined,'required':_0x4e0688[_0x3762('0x42')][_0x3762('0xf4')]?!![]:![]}];}return db[_0x3762('0xb1')][_0x3762('0x66')](_0x32ef71);})['then'](function(_0x5d7b1c){_0x3c8b9f[_0x3762('0x54')]=_0x5d7b1c;return _0x3c8b9f;});}})[_0x3762('0x1e')](respondWithFilteredResult(_0x262660,_0x32ef71))[_0x3762('0x27')](handleError(_0x262660,null));};function iftimePromise(_0x2f6b65,_0x208b72){return respondWithRpcPromise(_0x3762('0xf5'),_0x3762('0xf6'),{'command':_0x208b72[_0x3762('0xf7')]?util[_0x3762('0xab')](_0x3762('0xf8'),_0x2f6b65[_0x3762('0xf9')],_0x208b72[_0x3762('0xf7')]):util[_0x3762('0xab')](_0x3762('0xfa'),_0x2f6b65[_0x3762('0xf9')])},client9002)[_0x3762('0x1e')](function(_0x422221){var _0x449d21=_0x422221&&_0x422221[_0x3762('0xfb')](_0x3762('0xfc'))>=0x0?!![]:![];logger[_0x3762('0x1f')](_0x3762('0xfd'),_0x208b72['id'],_0x2f6b65['id'],_0x2f6b65[_0x3762('0xf9')],_0x449d21?_0x3762('0xfe'):_0x3762('0xff'),_0x208b72[_0x3762('0xf7')]?_0x208b72[_0x3762('0xf7')]:_0x3762('0x100'));return _0x449d21;})[_0x3762('0x27')](function(_0x2a79c1){logger[_0x3762('0x23')](_0x3762('0xfd'),_0x208b72['id'],_0x2f6b65['id'],_0x2f6b65[_0x3762('0xf9')],util['inspect'](_0x2a79c1,{'showHidden':![],'depth':null}),_0x208b72['timezone']?_0x208b72[_0x3762('0xf7')]:_0x3762('0x100'));return![];});}exports[_0x3762('0xf6')]=function(_0x8f387a,_0x39428e,_0x3a7228){var _0x4c5507=0x0;var _0x2d7b18=0x0;var _0x2dfdf4=![];var _0x34b261;var _0x3d200b;return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x8f387a[_0x3762('0x56')]['id']},'include':[{'model':db[_0x3762('0x101')],'as':_0x3762('0x101'),'include':[{'model':db[_0x3762('0x101')],'as':_0x3762('0x102'),'attributes':['id',_0x3762('0xf9')],'raw':!![]}]}]})[_0x3762('0x1e')](handleEntityNotFound(_0x39428e,null))[_0x3762('0x1e')](function(_0x2cbc2c){if(_0x2cbc2c){_0x34b261=_0x2cbc2c;return _0x2cbc2c[_0x3762('0x103')]({'raw':!![]});}})[_0x3762('0x1e')](function(_0x5bd054){if(_0x34b261){if(_0x5bd054){_0x3d200b=_0x5bd054;}}return require(_0x3762('0x15'))[_0x3762('0x76')]();})[_0x3762('0x1e')](function(_0x55d9ec){if(_0x55d9ec){_0x2d7b18=_0x55d9ec[_0x3762('0x104')];_0x2dfdf4=_0x55d9ec[_0x3762('0x77')];}})[_0x3762('0x1e')](function(){return db[_0x3762('0xb1')][_0x3762('0x2f')]({'where':{'closed':![]}});})[_0x3762('0x1e')](function(_0x4dc5dc){_0x4c5507=_0x4dc5dc;if(_0x2d7b18&&_0x4dc5dc>_0x2d7b18){return db[_0x3762('0x105')][_0x3762('0x65')]({'where':{'id':0x1}})[_0x3762('0x1e')](function(_0x3ab720){if(_0x3ab720){_0x3ab720[_0x3762('0x106')](_0x3762('0x107'));}});}})[_0x3762('0x1e')](function(){if(_0x34b261[_0x3762('0x101')]&&_0x34b261['Interval'][_0x3762('0x102')]){var _0x2d708b=[];for(var _0xbf95ac=0x0;_0xbf95ac<_0x34b261[_0x3762('0x101')][_0x3762('0x102')][_0x3762('0x48')];_0xbf95ac++){var _0x4e0919=_0x34b261[_0x3762('0x101')][_0x3762('0x102')][_0xbf95ac][_0x3762('0x35')]({'plain':!![]});_0x2d708b[_0x3762('0x108')](iftimePromise(_0x4e0919,_0x34b261));}return BPromise['all'](_0x2d708b)[_0x3762('0x1e')](function(_0x28766e){return _['some'](_0x28766e);});}else{return!![];}})[_0x3762('0x1e')](function(_0x2c48ab){var _0x2500c9=fs[_0x3762('0xcb')](path[_0x3762('0x74')](config['root'],_0x3762('0x109')),'utf8');var _0x38f8f0={'remote':_0x34b261[_0x3762('0x10a')],'query':querystring[_0x3762('0x22')](_[_0x3762('0x4f')](_0x34b261['get']({'plain':!![]}),{'customerIp':_0x8f387a[_0x3762('0xa0')][_0x3762('0xa2')]||_0x8f387a[_0x3762('0xa0')]['x-real-ip']||_0x8f387a['connection'][_0x3762('0x10b')]||_0x8f387a['ip'],'referer':_0x8f387a[_0x3762('0xa0')][_0x3762('0xa8')],'openedInteractions':_0x4c5507,'maxInteractions':_0x2d7b18,'virtual':_0x2dfdf4[_0x3762('0x104')],'online':_0x2c48ab,'custom':_0x2dfdf4}))['replace'](/'/g,'\x5c\x27')};_0x39428e[_0x3762('0x39')](ejs[_0x3762('0xcd')](Mustache['render'](_0x2500c9,_0x38f8f0),{'proactiveActions':_0x3d200b,'alignment':_0x34b261[_0x3762('0x10c')],'verticalAlignment':_0x34b261[_0x3762('0x10d')],'div_color':_0x34b261['color'],'text_color':_0x34b261[_0x3762('0x10e')],'button_color':_0x34b261[_0x3762('0x10f')],'background_color':_0x34b261[_0x3762('0x110')]}));})['catch'](handleError(_0x39428e,null));};exports[_0x3762('0x111')]=function(_0x4ccf4b,_0x49c844,_0x49b520){return db['ChatWebsite'][_0x3762('0x65')]({'where':{'id':_0x4ccf4b[_0x3762('0x56')]['id']}})['then'](handleEntityNotFound(_0x49c844,null))[_0x3762('0x1e')](function(_0x1ce328){if(_0x1ce328){return db['sequelize'][_0x3762('0xd5')](function(_0x2b52ea){return db[_0x3762('0x112')][_0x3762('0x34')]({'where':{'ChatWebsiteId':_0x4ccf4b[_0x3762('0x56')]['id']},'transaction':_0x2b52ea})[_0x3762('0x1e')](function(_0x186060){var _0x146b88=_[_0x3762('0x3c')](_0x4ccf4b[_0x3762('0x59')],function(_0x194272){_0x194272[_0x3762('0x63')]=_0x4ccf4b[_0x3762('0x56')]['id'];return _0x194272;});return db[_0x3762('0x112')][_0x3762('0xd6')](_0x146b88,{'transaction':_0x2b52ea});});})[_0x3762('0x1e')](function(){return db[_0x3762('0x112')][_0x3762('0x113')]({'where':{'ChatWebsiteId':_0x4ccf4b[_0x3762('0x56')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x49c844,null))['catch'](handleError(_0x49c844,null));};exports['getApplications']=function(_0x25b430,_0x20fc0f,_0x3c1397){var _0x48c3ea={};var _0x2f24c2={};var _0x3cb3c3;var _0xf31f9e;return db[_0x3762('0x3d')][_0x3762('0x65')]({'where':{'id':_0x25b430[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x20fc0f,null))['then'](function(_0x5eb1f5){if(_0x5eb1f5){_0x3cb3c3=_0x5eb1f5;_0x2f24c2[_0x3762('0x41')]=_[_0x3762('0x43')](db[_0x3762('0x112')][_0x3762('0x3e')]);_0x2f24c2[_0x3762('0x42')]=_[_0x3762('0x43')](_0x25b430[_0x3762('0x42')]);_0x2f24c2[_0x3762('0x44')]=_[_0x3762('0x45')](_0x2f24c2[_0x3762('0x41')],_0x2f24c2[_0x3762('0x42')]);_0x48c3ea['attributes']=_[_0x3762('0x45')](_0x2f24c2[_0x3762('0x41')],qs[_0x3762('0x47')](_0x25b430[_0x3762('0x42')]['fields']));_0x48c3ea[_0x3762('0x46')]=_0x48c3ea[_0x3762('0x46')][_0x3762('0x48')]?_0x48c3ea[_0x3762('0x46')]:_0x2f24c2[_0x3762('0x41')];_0x48c3ea['order']=qs[_0x3762('0x4b')](_0x25b430[_0x3762('0x42')][_0x3762('0x4b')]);_0x48c3ea['where']=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x25b430[_0x3762('0x42')],_0x2f24c2[_0x3762('0x44')]));if(_0x25b430[_0x3762('0x42')][_0x3762('0x4e')]){_0x48c3ea[_0x3762('0x4c')]=_[_0x3762('0x4f')](_0x48c3ea[_0x3762('0x4c')],{'$or':_[_0x3762('0x3c')](_0x48c3ea[_0x3762('0x46')],function(_0x46c97a){var _0x4c1aa0={};_0x4c1aa0[_0x46c97a]={'$like':'%'+_0x25b430[_0x3762('0x42')][_0x3762('0x4e')]+'%'};return _0x4c1aa0;})});}_0x48c3ea=_['merge']({},_0x48c3ea,_0x25b430[_0x3762('0x51')]);return _0x3cb3c3[_0x3762('0x114')](_0x48c3ea);}})['then'](function(_0x5a03b6){if(_0x5a03b6){_0xf31f9e=_0x5a03b6[_0x3762('0x48')];if(!_0x25b430[_0x3762('0x42')]['hasOwnProperty'](_0x3762('0x49'))){_0x48c3ea[_0x3762('0x2e')]=qs['limit'](_0x25b430[_0x3762('0x42')][_0x3762('0x2e')]);_0x48c3ea[_0x3762('0x2c')]=qs[_0x3762('0x2c')](_0x25b430[_0x3762('0x42')][_0x3762('0x2c')]);}return _0x3cb3c3[_0x3762('0x114')](_0x48c3ea);}})['then'](function(_0x55db58){if(_0x55db58){return _0x55db58?{'count':_0xf31f9e,'rows':_0x55db58}:null;}})[_0x3762('0x1e')](respondWithResult(_0x20fc0f,null))[_0x3762('0x27')](handleError(_0x20fc0f,null));};exports[_0x3762('0x115')]=function(_0x1f73e7,_0x8e5001,_0x572d1a){return db[_0x3762('0x116')][_0x3762('0x57')]({'where':{'id':_0x1f73e7[_0x3762('0x56')]['id']}})['then'](handleEntityNotFound(_0x8e5001,null))[_0x3762('0x1e')](function(_0x3d45cd){if(_0x3d45cd){return _0x3d45cd['addProactiveActions'](_0x1f73e7['body']['ids'],_[_0x3762('0xeb')](_0x1f73e7[_0x3762('0x59')],[_0x3762('0x68'),'id'])||{});}})[_0x3762('0x1e')](respondWithResult(_0x8e5001,null))[_0x3762('0x27')](handleError(_0x8e5001,null));};exports['getProactiveActions']=function(_0x4b6cbe,_0x4e8810,_0x515707){var _0x47d1df={};var _0x51f91f={};var _0x48cddb;var _0x1389fa;return db['ChatWebsite'][_0x3762('0x65')]({'where':{'id':_0x4b6cbe['params']['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x4e8810,null))[_0x3762('0x1e')](function(_0x1c3d55){if(_0x1c3d55){_0x48cddb=_0x1c3d55;_0x51f91f['model']=_['keys'](db[_0x3762('0x117')][_0x3762('0x3e')]);_0x51f91f[_0x3762('0x42')]=_['keys'](_0x4b6cbe['query']);_0x51f91f[_0x3762('0x44')]=_[_0x3762('0x45')](_0x51f91f[_0x3762('0x41')],_0x51f91f[_0x3762('0x42')]);_0x47d1df[_0x3762('0x46')]=_[_0x3762('0x45')](_0x51f91f[_0x3762('0x41')],qs[_0x3762('0x47')](_0x4b6cbe[_0x3762('0x42')][_0x3762('0x47')]));_0x47d1df['attributes']=_0x47d1df[_0x3762('0x46')]['length']?_0x47d1df['attributes']:_0x51f91f[_0x3762('0x41')];_0x47d1df['order']=qs[_0x3762('0x4b')](_0x4b6cbe[_0x3762('0x42')]['sort']);_0x47d1df[_0x3762('0x4c')]=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x4b6cbe[_0x3762('0x42')],_0x51f91f['filters']));if(_0x4b6cbe[_0x3762('0x42')][_0x3762('0x4e')]){_0x47d1df[_0x3762('0x4c')]=_[_0x3762('0x4f')](_0x47d1df[_0x3762('0x4c')],{'$or':_['map'](_0x47d1df[_0x3762('0x46')],function(_0x517942){var _0x35505e={};_0x35505e[_0x517942]={'$like':'%'+_0x4b6cbe[_0x3762('0x42')][_0x3762('0x4e')]+'%'};return _0x35505e;})});}_0x47d1df=_[_0x3762('0x4f')]({},_0x47d1df,_0x4b6cbe['options']);return _0x48cddb['getProactiveActions'](_0x47d1df);}})[_0x3762('0x1e')](function(_0x562f7e){if(_0x562f7e){_0x1389fa=_0x562f7e['length'];if(!_0x4b6cbe[_0x3762('0x42')][_0x3762('0x118')](_0x3762('0x49'))){_0x47d1df[_0x3762('0x2e')]=qs['limit'](_0x4b6cbe[_0x3762('0x42')][_0x3762('0x2e')]);_0x47d1df[_0x3762('0x2c')]=qs[_0x3762('0x2c')](_0x4b6cbe[_0x3762('0x42')]['offset']);}return _0x48cddb['getProactiveActions'](_0x47d1df);}})['then'](function(_0x1de548){if(_0x1de548){return _0x1de548?{'count':_0x1389fa,'rows':_0x1de548}:null;}})[_0x3762('0x1e')](respondWithResult(_0x4e8810,null))[_0x3762('0x27')](handleError(_0x4e8810,null));};exports[_0x3762('0x119')]=function(_0x6c381d,_0x35fa57,_0x5ece25){var _0x1e0e99=_0x6c381d[_0x3762('0x42')]['online']==='false'?_0x3762('0x11a'):'onlineForm';return db['ChatWebsite'][_0x3762('0x57')]({'attributes':['id',_0x1e0e99],'where':{'id':_0x6c381d[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x35fa57,null))['then'](function(_0x3ee802){if(_0x3ee802){var _0x1336d5=_0x3ee802[_0x1e0e99];var _0xdb2650=_0x1336d5&&_0x1336d5[_0x3762('0x11b')]?_0x1336d5[_0x3762('0x11b')]:[];_0x35fa57[_0x3762('0x39')]({'fromKey':_[_0x3762('0x78')](_0x1336d5['fromKey'])?undefined:_0x1336d5[_0x3762('0x11c')],'count':_0xdb2650[_0x3762('0x48')],'rows':_0xdb2650});}})['catch'](handleError(_0x35fa57,null));};exports[_0x3762('0x11d')]=function(_0x1fb0e7,_0x3fa846,_0x5b9f2b){var _0x2069bc={'raw':![],'where':{}};var _0x51ba97={};var _0x2d6aed={'count':0x0,'rows':[]};return db[_0x3762('0x3d')][_0x3762('0x65')]({'where':{'id':_0x1fb0e7[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x3fa846,null))['then'](function(_0xfaf42a){if(_0xfaf42a){_0x51ba97[_0x3762('0x41')]=_[_0x3762('0x43')](db[_0x3762('0x11e')]['rawAttributes']);_0x51ba97[_0x3762('0x42')]=_['keys'](_0x1fb0e7['query']);_0x51ba97[_0x3762('0x44')]=_[_0x3762('0x45')](_0x51ba97[_0x3762('0x41')],_0x51ba97[_0x3762('0x42')]);_0x2069bc[_0x3762('0x46')]=_['intersection'](_0x51ba97['model'],qs[_0x3762('0x47')](_0x1fb0e7[_0x3762('0x42')][_0x3762('0x47')]));_0x2069bc[_0x3762('0x46')]=_0x2069bc[_0x3762('0x46')]['length']?_0x2069bc[_0x3762('0x46')]:_0x51ba97['model'];if(!_0x1fb0e7[_0x3762('0x42')]['hasOwnProperty'](_0x3762('0x49'))){_0x2069bc[_0x3762('0x2e')]=qs['limit'](_0x1fb0e7['query']['limit']);_0x2069bc[_0x3762('0x2c')]=qs['offset'](_0x1fb0e7['query']['offset']);}_0x2069bc[_0x3762('0x4a')]=qs[_0x3762('0x4b')](_0x1fb0e7[_0x3762('0x42')][_0x3762('0x4b')]);_0x2069bc[_0x3762('0x4c')]=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x1fb0e7['query'],_0x51ba97[_0x3762('0x44')]));_0x2069bc[_0x3762('0x4c')]['ChatWebsiteId']=_0xfaf42a['id'];if(_0x1fb0e7[_0x3762('0x42')][_0x3762('0x4e')]){_0x2069bc[_0x3762('0x4c')]=_['merge'](_0x2069bc['where'],{'$or':_[_0x3762('0x3c')](_0x2069bc[_0x3762('0x46')],function(_0x50abcb){var _0xcddee6={};_0xcddee6[_0x50abcb]={'$like':'%'+_0x1fb0e7[_0x3762('0x42')][_0x3762('0x4e')]+'%'};return _0xcddee6;})});}_0x2069bc=_['merge']({},_0x2069bc,_0x1fb0e7[_0x3762('0x51')]);return db[_0x3762('0x11e')][_0x3762('0x2f')]({'where':_0x2069bc[_0x3762('0x4c')]})['then'](function(_0x34e209){_0x2d6aed['count']=_0x34e209;if(_0x1fb0e7['query']['includeAll']){_0x2069bc[_0x3762('0x53')]=[{'all':!![]}];}else{_0x2069bc[_0x3762('0x53')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x3762('0x11f')],'as':_0x3762('0x120'),'required':![]}];}return db[_0x3762('0x11e')][_0x3762('0x66')](_0x2069bc);})['then'](function(_0x2764ed){_0x2d6aed[_0x3762('0x54')]=_0x2764ed;return _0x2d6aed;});}})[_0x3762('0x1e')](respondWithFilteredResult(_0x3fa846,_0x2069bc))[_0x3762('0x27')](handleError(_0x3fa846,null));};exports['addAgents']=function(_0x17cf7c,_0x25a749,_0x129ad2){return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x17cf7c[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x25a749,null))[_0x3762('0x1e')](function(_0x3ec72e){if(_0x3ec72e){return _0x3ec72e[_0x3762('0x121')](_0x17cf7c[_0x3762('0x59')][_0x3762('0x68')],_[_0x3762('0xeb')](_0x17cf7c[_0x3762('0x59')],[_0x3762('0x68'),'id'])||{})['spread'](function(_0x38a0e2){for(var _0x54ecc6=0x0;_0x54ecc6<_0x17cf7c[_0x3762('0x59')][_0x3762('0x68')]['length'];_0x54ecc6+=0x1){socket[_0x3762('0x122')]('userChatWebsite:save',{'UserId':Number(_0x17cf7c[_0x3762('0x59')][_0x3762('0x68')][_0x54ecc6]),'ChatWebsiteId':Number(_0x17cf7c[_0x3762('0x56')]['id'])});}return _0x38a0e2;});}})[_0x3762('0x1e')](respondWithResult(_0x25a749,null))[_0x3762('0x27')](handleError(_0x25a749,null));};exports[_0x3762('0x123')]=function(_0x25975,_0x25629f,_0x4b5884){return db[_0x3762('0x3d')][_0x3762('0x57')]({'where':{'id':_0x25975[_0x3762('0x56')]['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x25629f,null))[_0x3762('0x1e')](function(_0x4f43d2){if(_0x4f43d2){return _0x4f43d2[_0x3762('0x123')](_0x25975[_0x3762('0x42')][_0x3762('0x68')])[_0x3762('0x1e')](function(){if(_[_0x3762('0x124')](_0x25975[_0x3762('0x42')][_0x3762('0x68')])){for(var _0x1b09ab=0x0;_0x1b09ab<_0x25975[_0x3762('0x42')][_0x3762('0x68')]['length'];_0x1b09ab+=0x1){socket[_0x3762('0x122')](_0x3762('0x125'),{'UserId':Number(_0x25975['query']['ids'][_0x1b09ab]),'ChatWebsiteId':Number(_0x25975[_0x3762('0x56')]['id'])});}}else{socket[_0x3762('0x122')](_0x3762('0x125'),{'UserId':Number(_0x25975[_0x3762('0x42')][_0x3762('0x68')]),'ChatWebsiteId':Number(_0x25975[_0x3762('0x56')]['id'])});}});}})[_0x3762('0x1e')](respondWithStatusCode(_0x25629f,null))[_0x3762('0x27')](handleError(_0x25629f,null));};exports[_0x3762('0x126')]=function(_0x246c30,_0x9f5379,_0x555c7a){var _0x4cb6b1={};var _0x1a3cb2={};var _0x3fcd27;var _0x42746b;return db[_0x3762('0x3d')][_0x3762('0x65')]({'where':{'id':_0x246c30['params']['id']}})[_0x3762('0x1e')](handleEntityNotFound(_0x9f5379,null))[_0x3762('0x1e')](function(_0x54875c){if(_0x54875c){_0x3fcd27=_0x54875c;_0x1a3cb2[_0x3762('0x41')]=_[_0x3762('0x43')](db[_0x3762('0xbe')][_0x3762('0x3e')]);_0x1a3cb2[_0x3762('0x42')]=_['keys'](_0x246c30['query']);_0x1a3cb2[_0x3762('0x44')]=_[_0x3762('0x45')](_0x1a3cb2[_0x3762('0x41')],_0x1a3cb2[_0x3762('0x42')]);_0x4cb6b1[_0x3762('0x46')]=_[_0x3762('0x45')](_0x1a3cb2['model'],qs[_0x3762('0x47')](_0x246c30['query'][_0x3762('0x47')]));_0x4cb6b1[_0x3762('0x46')]=_0x4cb6b1['attributes'][_0x3762('0x48')]?_0x4cb6b1[_0x3762('0x46')]:_0x1a3cb2[_0x3762('0x41')];_0x4cb6b1[_0x3762('0x4a')]=qs[_0x3762('0x4b')](_0x246c30['query'][_0x3762('0x4b')]);_0x4cb6b1[_0x3762('0x4c')]=qs[_0x3762('0x44')](_[_0x3762('0x4d')](_0x246c30[_0x3762('0x42')],_0x1a3cb2[_0x3762('0x44')]));if(_0x246c30['query'][_0x3762('0x4e')]){_0x4cb6b1['where']=_['merge'](_0x4cb6b1['where'],{'$or':_['map'](_0x4cb6b1[_0x3762('0x46')],function(_0x1276bd){var _0x22354f={};_0x22354f[_0x1276bd]={'$like':'%'+_0x246c30['query'][_0x3762('0x4e')]+'%'};return _0x22354f;})});}_0x4cb6b1=_[_0x3762('0x4f')]({},_0x4cb6b1,_0x246c30[_0x3762('0x51')]);return _0x3fcd27[_0x3762('0x126')](_0x4cb6b1);}})['then'](function(_0x1324eb){if(_0x1324eb){_0x42746b=_0x1324eb[_0x3762('0x48')];if(!_0x246c30['query'][_0x3762('0x118')](_0x3762('0x49'))){_0x4cb6b1[_0x3762('0x2e')]=qs['limit'](_0x246c30[_0x3762('0x42')][_0x3762('0x2e')]);_0x4cb6b1[_0x3762('0x2c')]=qs['offset'](_0x246c30[_0x3762('0x42')][_0x3762('0x2c')]);}return _0x3fcd27[_0x3762('0x126')](_0x4cb6b1);}})[_0x3762('0x1e')](function(_0xb6f7f5){if(_0xb6f7f5){return _0xb6f7f5?{'count':_0x42746b,'rows':_0xb6f7f5}:null;}})['then'](respondWithResult(_0x9f5379,null))[_0x3762('0x27')](handleError(_0x9f5379,null));};
\ No newline at end of file
index 7fe724f..10b3e9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1061=['emit','hasOwnProperty','hook','events','save','update','remove'];(function(_0x55c00d,_0x520cb6){var _0x254a8f=function(_0x2b3378){while(--_0x2b3378){_0x55c00d['push'](_0x55c00d['shift']());}};_0x254a8f(++_0x520cb6);}(_0x1061,0x1b5));var _0x1106=function(_0x62a8d7,_0xd05a94){_0x62a8d7=_0x62a8d7-0x0;var _0x5477c6=_0x1061[_0x62a8d7];return _0x5477c6;};'use strict';var EventEmitter=require(_0x1106('0x0'));var ChatWebsite=require('../../mysqldb')['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1106('0x1'),'afterUpdate':_0x1106('0x2'),'afterDestroy':_0x1106('0x3')};function emitEvent(_0x222f76){return function(_0x1c1bae,_0x13fcfc,_0x75d67b){ChatWebsiteEvents[_0x1106('0x4')](_0x222f76+':'+_0x1c1bae['id'],_0x1c1bae);ChatWebsiteEvents['emit'](_0x222f76,_0x1c1bae);_0x75d67b(null);};}for(var e in events){if(events[_0x1106('0x5')](e)){var event=events[e];ChatWebsite[_0x1106('0x6')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0xaf5a=['remove','emit','hook','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0xe7a70,_0x232555){var _0x459a23=function(_0x4111ca){while(--_0x4111ca){_0xe7a70['push'](_0xe7a70['shift']());}};_0x459a23(++_0x232555);}(_0xaf5a,0x144));var _0xaaf5=function(_0x9ab282,_0x224526){_0x9ab282=_0x9ab282-0x0;var _0x3ae406=_0xaf5a[_0x9ab282];return _0x3ae406;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0xaaf5('0x0'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xaaf5('0x1')](0x0);var events={'afterCreate':_0xaaf5('0x2'),'afterUpdate':_0xaaf5('0x3'),'afterDestroy':_0xaaf5('0x4')};function emitEvent(_0x337a3){return function(_0x277e58,_0x2f9a11,_0xc037e5){ChatWebsiteEvents['emit'](_0x337a3+':'+_0x277e58['id'],_0x277e58);ChatWebsiteEvents[_0xaaf5('0x5')](_0x337a3,_0x277e58);_0xc037e5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xaaf5('0x6')](e,emitEvent(event));}}module[_0xaaf5('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
index e1a1e8b..0f5db65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5124=['ChatWebsite','chat_websites','lodash','util','../../config/logger','moment','rimraf','../../config/environment','./chatWebsite.attributes','exports'];(function(_0x1e527e,_0x250b65){var _0x53f774=function(_0x2149b3){while(--_0x2149b3){_0x1e527e['push'](_0x1e527e['shift']());}};_0x53f774(++_0x250b65);}(_0x5124,0x106));var _0x4512=function(_0x10335e,_0x1cb40d){_0x10335e=_0x10335e-0x0;var _0x310772=_0x5124[_0x10335e];return _0x310772;};'use strict';var _=require(_0x4512('0x0'));var util=require(_0x4512('0x1'));var logger=require(_0x4512('0x2'))('api');var moment=require(_0x4512('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4512('0x4'));var config=require(_0x4512('0x5'));var attributes=require(_0x4512('0x6'));module[_0x4512('0x7')]=function(_0x5a9273,_0x18162d){return _0x5a9273['define'](_0x4512('0x8'),attributes,{'tableName':_0x4512('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9048=['chat_websites','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','define','ChatWebsite'];(function(_0x1b93ff,_0x2ca4e9){var _0x3ad4c2=function(_0x258799){while(--_0x258799){_0x1b93ff['push'](_0x1b93ff['shift']());}};_0x3ad4c2(++_0x2ca4e9);}(_0x9048,0x1a5));var _0x8904=function(_0x1efbae,_0x1dda96){_0x1efbae=_0x1efbae-0x0;var _0xc96866=_0x9048[_0x1efbae];return _0xc96866;};'use strict';var _=require(_0x8904('0x0'));var util=require('util');var logger=require(_0x8904('0x1'))('api');var moment=require(_0x8904('0x2'));var BPromise=require(_0x8904('0x3'));var rp=require(_0x8904('0x4'));var fs=require('fs');var path=require(_0x8904('0x5'));var rimraf=require(_0x8904('0x6'));var config=require(_0x8904('0x7'));var attributes=require(_0x8904('0x8'));module['exports']=function(_0x5c69ce,_0x5f1936){return _0x5c69ce[_0x8904('0x9')](_0x8904('0xa'),attributes,{'tableName':_0x8904('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aeda6e8..03b8e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22a0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','socket.io-emitter','./chatWebsite.socket','request','then','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x44511e,_0x2242ba){var _0x243798=function(_0x29a312){while(--_0x29a312){_0x44511e['push'](_0x44511e['shift']());}};_0x243798(++_0x2242ba);}(_0x22a0,0x18a));var _0x022a=function(_0x5199b6,_0x405650){_0x5199b6=_0x5199b6-0x0;var _0x3f37e1=_0x22a0[_0x5199b6];return _0x3f37e1;};'use strict';var _=require(_0x022a('0x0'));var util=require(_0x022a('0x1'));var moment=require(_0x022a('0x2'));var BPromise=require(_0x022a('0x3'));var rs=require(_0x022a('0x4'));var fs=require('fs');var Redis=require(_0x022a('0x5'));var db=require(_0x022a('0x6'))['db'];var utils=require(_0x022a('0x7'));var logger=require(_0x022a('0x8'))(_0x022a('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x022a('0xa')]['http']({'port':0x232a});config[_0x022a('0xb')]=_[_0x022a('0xc')](config[_0x022a('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x022a('0xd'))(new Redis(config[_0x022a('0xb')]));require(_0x022a('0xe'))['register'](socket);function respondWithRpcPromise(_0x149851,_0x284045,_0x1ee4b2){return new BPromise(function(_0x57a172,_0xf145c2){return client[_0x022a('0xf')](_0x149851,_0x1ee4b2)[_0x022a('0x10')](function(_0x912cd3){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x284045,'request\x20sent');logger[_0x022a('0x11')](_0x022a('0x12'),_0x284045,_0x022a('0x13'),JSON[_0x022a('0x14')](_0x912cd3));if(_0x912cd3[_0x022a('0x15')]){if(_0x912cd3['error'][_0x022a('0x16')]===0x1f4){logger[_0x022a('0x15')](_0x022a('0x17'),_0x284045,_0x912cd3[_0x022a('0x15')][_0x022a('0x18')]);return _0xf145c2(_0x912cd3[_0x022a('0x15')][_0x022a('0x18')]);}logger[_0x022a('0x15')](_0x022a('0x17'),_0x284045,_0x912cd3['error'][_0x022a('0x18')]);return _0x57a172(_0x912cd3[_0x022a('0x15')]['message']);}else{logger['info'](_0x022a('0x17'),_0x284045,_0x022a('0x13'));_0x57a172(_0x912cd3['result'][_0x022a('0x18')]);}})['catch'](function(_0x28163a){logger[_0x022a('0x15')](_0x022a('0x17'),_0x284045,_0x28163a);_0xf145c2(_0x28163a);});});}
\ No newline at end of file
+var _0xfa00=['socket.io-emitter','./chatWebsite.socket','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x15e798,_0x4e4d13){var _0x587d6c=function(_0x252bce){while(--_0x252bce){_0x15e798['push'](_0x15e798['shift']());}};_0x587d6c(++_0x4e4d13);}(_0xfa00,0x76));var _0x0fa0=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xfa00[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x0fa0('0x0'));var util=require('util');var moment=require(_0x0fa0('0x1'));var BPromise=require(_0x0fa0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0fa0('0x3'));var logger=require(_0x0fa0('0x4'))(_0x0fa0('0x5'));var config=require('../../config/environment');var jayson=require(_0x0fa0('0x6'));var client=jayson[_0x0fa0('0x7')][_0x0fa0('0x8')]({'port':0x232a});config[_0x0fa0('0x9')]=_[_0x0fa0('0xa')](config[_0x0fa0('0x9')],{'host':_0x0fa0('0xb'),'port':0x18eb});var socket=require(_0x0fa0('0xc'))(new Redis(config[_0x0fa0('0x9')]));require(_0x0fa0('0xd'))[_0x0fa0('0xe')](socket);function respondWithRpcPromise(_0x27f00f,_0x50540c,_0x4f2616){return new BPromise(function(_0x3ff1df,_0x5ae61b){return client[_0x0fa0('0xf')](_0x27f00f,_0x4f2616)[_0x0fa0('0x10')](function(_0x1aba7e){logger[_0x0fa0('0x11')](_0x0fa0('0x12'),_0x50540c,'request\x20sent');logger['debug']('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x50540c,_0x0fa0('0x13'),JSON[_0x0fa0('0x14')](_0x1aba7e));if(_0x1aba7e['error']){if(_0x1aba7e[_0x0fa0('0x15')][_0x0fa0('0x16')]===0x1f4){logger[_0x0fa0('0x15')](_0x0fa0('0x12'),_0x50540c,_0x1aba7e[_0x0fa0('0x15')][_0x0fa0('0x17')]);return _0x5ae61b(_0x1aba7e['error'][_0x0fa0('0x17')]);}logger[_0x0fa0('0x15')](_0x0fa0('0x12'),_0x50540c,_0x1aba7e[_0x0fa0('0x15')]['message']);return _0x3ff1df(_0x1aba7e[_0x0fa0('0x15')][_0x0fa0('0x17')]);}else{logger[_0x0fa0('0x11')](_0x0fa0('0x12'),_0x50540c,_0x0fa0('0x13'));_0x3ff1df(_0x1aba7e[_0x0fa0('0x18')][_0x0fa0('0x17')]);}})[_0x0fa0('0x19')](function(_0x416091){logger[_0x0fa0('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x50540c,_0x416091);_0x5ae61b(_0x416091);});});}
\ No newline at end of file
index 05e64c7..b12908f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4902=['register','length','chatWebsite:','./chatWebsite.events','save','remove','update','removeListener'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4902,0xbb));var _0x2490=function(_0x99facc,_0x548cd6){_0x99facc=_0x99facc-0x0;var _0xd39ed0=_0x4902[_0x99facc];return _0xd39ed0;};'use strict';var ChatWebsiteEvents=require(_0x2490('0x0'));var events=[_0x2490('0x1'),_0x2490('0x2'),_0x2490('0x3')];function createListener(_0x591380,_0x582839){return function(_0xd2e7c2){_0x582839['emit'](_0x591380,_0xd2e7c2);};}function removeListener(_0x515c10,_0x268057){return function(){ChatWebsiteEvents[_0x2490('0x4')](_0x515c10,_0x268057);};}exports[_0x2490('0x5')]=function(_0xc9e550){for(var _0x3b0ae2=0x0,_0x462483=events[_0x2490('0x6')];_0x3b0ae2<_0x462483;_0x3b0ae2++){var _0x3033da=events[_0x3b0ae2];var _0x4c758b=createListener(_0x2490('0x7')+_0x3033da,_0xc9e550);ChatWebsiteEvents['on'](_0x3033da,_0x4c758b);}};
\ No newline at end of file
+var _0xf91a=['register','length','chatWebsite:','./chatWebsite.events','save','remove','update','removeListener'];(function(_0x389318,_0x13a53d){var _0x7919e3=function(_0x2985d1){while(--_0x2985d1){_0x389318['push'](_0x389318['shift']());}};_0x7919e3(++_0x13a53d);}(_0xf91a,0x6b));var _0xaf91=function(_0x1fb03b,_0x2f7ad2){_0x1fb03b=_0x1fb03b-0x0;var _0x51f23f=_0xf91a[_0x1fb03b];return _0x51f23f;};'use strict';var ChatWebsiteEvents=require(_0xaf91('0x0'));var events=[_0xaf91('0x1'),_0xaf91('0x2'),_0xaf91('0x3')];function createListener(_0x4c686f,_0x379201){return function(_0x2af0dc){_0x379201['emit'](_0x4c686f,_0x2af0dc);};}function removeListener(_0x2aa285,_0x315891){return function(){ChatWebsiteEvents[_0xaf91('0x4')](_0x2aa285,_0x315891);};}exports[_0xaf91('0x5')]=function(_0x1e9cb2){for(var _0x27b176=0x0,_0x58c49d=events[_0xaf91('0x6')];_0x27b176<_0x58c49d;_0x27b176++){var _0x346e80=events[_0x27b176];var _0x3e8e69=createListener(_0xaf91('0x7')+_0x346e80,_0x1e9cb2);ChatWebsiteEvents['on'](_0x346e80,_0x3e8e69);}};
\ No newline at end of file
index 1239768..ac15015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x540f=['getInteractions','/:id/snippet','/:id/applications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','post','create','addAnswer','diskStorage','join','root','format','now','single','addLogo','server/files/images/avatars/','%s-%s','file','addAvatar','originalname','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','replace','extname','/:id/offline','any','offline','addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','put','delete','destroy','removeAnswers','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar'];(function(_0xd82c46,_0x5bb505){var _0x584779=function(_0x5db5b3){while(--_0x5db5b3){_0xd82c46['push'](_0xd82c46['shift']());}};_0x584779(++_0x5bb505);}(_0x540f,0x190));var _0xf540=function(_0x254081,_0x20731a){_0x254081=_0x254081-0x0;var _0x5d1e2a=_0x540f[_0x254081];return _0x5d1e2a;};'use strict';var multer=require('multer');var util=require(_0xf540('0x0'));var path=require(_0xf540('0x1'));var timeout=require(_0xf540('0x2'));var express=require(_0xf540('0x3'));var router=express[_0xf540('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf540('0x5'));var config=require(_0xf540('0x6'));var controller=require(_0xf540('0x7'));router[_0xf540('0x8')]('/',auth[_0xf540('0x9')](),controller[_0xf540('0xa')]);router[_0xf540('0x8')](_0xf540('0xb'),auth['isAuthenticated'](),controller[_0xf540('0xc')]);router['get'](_0xf540('0xd'),auth[_0xf540('0x9')](),controller[_0xf540('0xe')]);router[_0xf540('0x8')](_0xf540('0xf'),auth[_0xf540('0x9')](),controller['getDispositions']);router['get'](_0xf540('0x10'),auth[_0xf540('0x9')](),controller[_0xf540('0x11')]);router[_0xf540('0x8')](_0xf540('0x12'),controller[_0xf540('0x13')]);router['get'](_0xf540('0x14'),controller[_0xf540('0x15')]);router[_0xf540('0x8')](_0xf540('0x16'),controller[_0xf540('0x17')]);router[_0xf540('0x8')](_0xf540('0x18'),controller[_0xf540('0x19')]);router[_0xf540('0x8')]('/:id/interactions',auth[_0xf540('0x9')](),controller[_0xf540('0x1a')]);router[_0xf540('0x8')](_0xf540('0x1b'),controller['getSnippet']);router[_0xf540('0x8')](_0xf540('0x1c'),auth[_0xf540('0x9')](),controller['getApplications']);router[_0xf540('0x8')]('/:id/proactive_actions',auth[_0xf540('0x9')](),controller[_0xf540('0x1d')]);router['get'](_0xf540('0x1e'),controller[_0xf540('0x1f')]);router[_0xf540('0x8')](_0xf540('0x20'),auth['isAuthenticated'](),controller[_0xf540('0x21')]);router['get'](_0xf540('0x22'),auth[_0xf540('0x9')](),controller['getAgents']);router[_0xf540('0x23')]('/',auth[_0xf540('0x9')](),controller[_0xf540('0x24')]);router[_0xf540('0x23')]('/:id/dispositions',auth[_0xf540('0x9')](),controller['addDisposition']);router[_0xf540('0x23')]('/:id/canned_answers',auth[_0xf540('0x9')](),controller[_0xf540('0x25')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x21be06,_0x4e9a85,_0x1a4cc9){_0x1a4cc9(null,path[_0xf540('0x27')](config[_0xf540('0x28')],'server/files/images/logos/'));},'filename':function(_0x4d1a2b,_0x4e713b,_0x443036){_0x443036(null,util[_0xf540('0x29')]('%s-%s',Date[_0xf540('0x2a')](),_0x4e713b['originalname']));}})});router[_0xf540('0x23')](_0xf540('0x12'),upload[_0xf540('0x2b')]('file'),controller[_0xf540('0x2c')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x374262,_0x1014e6,_0x2268dd){_0x2268dd(null,path['join'](config[_0xf540('0x28')],_0xf540('0x2d')));},'filename':function(_0x31e0e8,_0x24525c,_0x3623f2){_0x3623f2(null,util[_0xf540('0x29')](_0xf540('0x2e'),Date['now'](),_0x24525c['originalname']));}})});router[_0xf540('0x23')](_0xf540('0x14'),upload[_0xf540('0x2b')](_0xf540('0x2f')),controller[_0xf540('0x30')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x569f5f,_0x2d79a2,_0x20e5c7){_0x20e5c7(null,path[_0xf540('0x27')](config[_0xf540('0x28')],_0xf540('0x2d')));},'filename':function(_0x4fbd83,_0x1c3c5e,_0x2eba10){_0x2eba10(null,util[_0xf540('0x29')]('%s-%s',Date[_0xf540('0x2a')](),_0x1c3c5e[_0xf540('0x31')]));}})});router['post'](_0xf540('0x16'),upload[_0xf540('0x2b')](_0xf540('0x2f')),controller[_0xf540('0x32')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x2beb06,_0x1bf1c9,_0x59c98c){_0x59c98c(null,path[_0xf540('0x27')](config[_0xf540('0x28')],_0xf540('0x2d')));},'filename':function(_0x1b2315,_0x37486e,_0x187db7){_0x187db7(null,util[_0xf540('0x29')](_0xf540('0x2e'),Date[_0xf540('0x2a')](),_0x37486e['originalname']));}})});router[_0xf540('0x23')](_0xf540('0x18'),upload[_0xf540('0x2b')](_0xf540('0x2f')),controller[_0xf540('0x33')]);router[_0xf540('0x23')](_0xf540('0x34'),controller[_0xf540('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x2f24dd,_0x1080b0,_0x11180b){const _0x4ed7eb=path[_0xf540('0x27')](config['root'],_0xf540('0x36'),_0xf540('0x37'),_0xf540('0x38'));fs_extra['ensureDir'](_0x4ed7eb,function(){_0x11180b(null,_0x4ed7eb);});},'filename':function(_0x3478b3,_0x4120d0,_0x2b86c1){const _0x176e58=_0x4120d0[_0xf540('0x31')][_0xf540('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0xc2e3ae=path[_0xf540('0x3a')](_0x176e58);const _0xd0dc05=Date[_0xf540('0x2a')]()+'-'+_0x176e58['replace'](_0xc2e3ae,'')+_0xc2e3ae;_0x2b86c1(null,_0xd0dc05);}})});router[_0xf540('0x23')](_0xf540('0x3b'),offlineUploadMulter[_0xf540('0x3c')](),controller[_0xf540('0x3d')]);router[_0xf540('0x23')]('/:id/interactions',auth[_0xf540('0x9')](),controller[_0xf540('0x3e')]);router[_0xf540('0x23')]('/:id/applications',auth[_0xf540('0x9')](),controller[_0xf540('0x3f')]);router[_0xf540('0x23')](_0xf540('0x40'),auth[_0xf540('0x9')](),controller[_0xf540('0x41')]);router[_0xf540('0x23')](_0xf540('0x22'),auth[_0xf540('0x9')](),controller['addAgents']);router[_0xf540('0x42')](_0xf540('0xd'),auth[_0xf540('0x9')](),controller['update']);router[_0xf540('0x43')](_0xf540('0xd'),auth[_0xf540('0x9')](),controller[_0xf540('0x44')]);router['delete'](_0xf540('0xf'),auth[_0xf540('0x9')](),controller['removeDispositions']);router['delete'](_0xf540('0x10'),auth['isAuthenticated'](),controller[_0xf540('0x45')]);router[_0xf540('0x43')](_0xf540('0x22'),auth[_0xf540('0x9')](),controller['removeAgents']);module[_0xf540('0x46')]=router;
\ No newline at end of file
+var _0x6f45=['file','addAvatar','single','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','addApplications','addProactiveActions','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','/:id/interactions','getInteractions','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','post','create','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','server/files/images/avatars/'];(function(_0x4a7e8e,_0x5716b5){var _0x369f5b=function(_0x20bbb5){while(--_0x20bbb5){_0x4a7e8e['push'](_0x4a7e8e['shift']());}};_0x369f5b(++_0x5716b5);}(_0x6f45,0x167));var _0x56f4=function(_0x57d0af,_0x14b907){_0x57d0af=_0x57d0af-0x0;var _0x4ae9c1=_0x6f45[_0x57d0af];return _0x4ae9c1;};'use strict';var multer=require(_0x56f4('0x0'));var util=require(_0x56f4('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x56f4('0x2'));var auth=require(_0x56f4('0x3'));var interaction=require(_0x56f4('0x4'));var config=require(_0x56f4('0x5'));var controller=require('./chatWebsite.controller');router[_0x56f4('0x6')]('/',auth[_0x56f4('0x7')](),controller[_0x56f4('0x8')]);router[_0x56f4('0x6')](_0x56f4('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x56f4('0x6')](_0x56f4('0xa'),auth[_0x56f4('0x7')](),controller[_0x56f4('0xb')]);router[_0x56f4('0x6')](_0x56f4('0xc'),auth[_0x56f4('0x7')](),controller['getDispositions']);router['get'](_0x56f4('0xd'),auth['isAuthenticated'](),controller[_0x56f4('0xe')]);router[_0x56f4('0x6')](_0x56f4('0xf'),controller[_0x56f4('0x10')]);router['get'](_0x56f4('0x11'),controller[_0x56f4('0x12')]);router[_0x56f4('0x6')](_0x56f4('0x13'),controller[_0x56f4('0x14')]);router[_0x56f4('0x6')](_0x56f4('0x15'),controller['getSystemAvatar']);router[_0x56f4('0x6')](_0x56f4('0x16'),auth['isAuthenticated'](),controller[_0x56f4('0x17')]);router[_0x56f4('0x6')]('/:id/snippet',controller['getSnippet']);router[_0x56f4('0x6')](_0x56f4('0x18'),auth[_0x56f4('0x7')](),controller['getApplications']);router[_0x56f4('0x6')](_0x56f4('0x19'),auth['isAuthenticated'](),controller[_0x56f4('0x1a')]);router[_0x56f4('0x6')](_0x56f4('0x1b'),controller[_0x56f4('0x1c')]);router[_0x56f4('0x6')](_0x56f4('0x1d'),auth[_0x56f4('0x7')](),controller[_0x56f4('0x1e')]);router['get'](_0x56f4('0x1f'),auth[_0x56f4('0x7')](),controller['getAgents']);router[_0x56f4('0x20')]('/',auth[_0x56f4('0x7')](),controller[_0x56f4('0x21')]);router[_0x56f4('0x20')](_0x56f4('0xc'),auth[_0x56f4('0x7')](),controller['addDisposition']);router[_0x56f4('0x20')](_0x56f4('0xd'),auth[_0x56f4('0x7')](),controller[_0x56f4('0x22')]);var upload=multer({'storage':multer[_0x56f4('0x23')]({'destination':function(_0x53bc89,_0x36e9bf,_0x5bd8b8){_0x5bd8b8(null,path[_0x56f4('0x24')](config[_0x56f4('0x25')],'server/files/images/logos/'));},'filename':function(_0x440d9d,_0x1aff24,_0x2739f4){_0x2739f4(null,util[_0x56f4('0x26')](_0x56f4('0x27'),Date[_0x56f4('0x28')](),_0x1aff24[_0x56f4('0x29')]));}})});router[_0x56f4('0x20')](_0x56f4('0xf'),upload['single']('file'),controller['addLogo']);var upload=multer({'storage':multer[_0x56f4('0x23')]({'destination':function(_0x8ea828,_0x568438,_0x1d0123){_0x1d0123(null,path[_0x56f4('0x24')](config[_0x56f4('0x25')],_0x56f4('0x2a')));},'filename':function(_0x4b780a,_0x5ea81b,_0x54476c){_0x54476c(null,util[_0x56f4('0x26')](_0x56f4('0x27'),Date[_0x56f4('0x28')](),_0x5ea81b[_0x56f4('0x29')]));}})});router['post'](_0x56f4('0x11'),upload['single'](_0x56f4('0x2b')),controller[_0x56f4('0x2c')]);var upload=multer({'storage':multer[_0x56f4('0x23')]({'destination':function(_0x213f26,_0xc58f86,_0x14caf8){_0x14caf8(null,path[_0x56f4('0x24')](config[_0x56f4('0x25')],_0x56f4('0x2a')));},'filename':function(_0x10088b,_0x421c83,_0x59c479){_0x59c479(null,util['format'](_0x56f4('0x27'),Date['now'](),_0x421c83[_0x56f4('0x29')]));}})});router[_0x56f4('0x20')](_0x56f4('0x13'),upload[_0x56f4('0x2d')]('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x56f4('0x23')]({'destination':function(_0x1f9968,_0x172b75,_0x29c2ab){_0x29c2ab(null,path[_0x56f4('0x24')](config[_0x56f4('0x25')],_0x56f4('0x2a')));},'filename':function(_0x55f4b2,_0x4b3b0a,_0x25ae35){_0x25ae35(null,util[_0x56f4('0x26')](_0x56f4('0x27'),Date[_0x56f4('0x28')](),_0x4b3b0a[_0x56f4('0x29')]));}})});router[_0x56f4('0x20')](_0x56f4('0x15'),upload[_0x56f4('0x2d')](_0x56f4('0x2b')),controller[_0x56f4('0x2e')]);router['post'](_0x56f4('0x2f'),controller[_0x56f4('0x30')]);const offlineUploadMulter=multer({'storage':multer[_0x56f4('0x23')]({'destination':function(_0x464969,_0x5245da,_0x2c7d1e){const _0x161a10=path[_0x56f4('0x24')](config['root'],_0x56f4('0x31'),_0x56f4('0x32'),_0x56f4('0x33'));fs_extra[_0x56f4('0x34')](_0x161a10,function(){_0x2c7d1e(null,_0x161a10);});},'filename':function(_0x213475,_0x2404c0,_0x47587d){const _0x430b43=_0x2404c0[_0x56f4('0x29')][_0x56f4('0x35')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x44652c=path[_0x56f4('0x36')](_0x430b43);const _0x165259=Date['now']()+'-'+_0x430b43[_0x56f4('0x35')](_0x44652c,'')+_0x44652c;_0x47587d(null,_0x165259);}})});router['post'](_0x56f4('0x37'),offlineUploadMulter[_0x56f4('0x38')](),controller['offline']);router[_0x56f4('0x20')](_0x56f4('0x16'),auth[_0x56f4('0x7')](),controller['addInteraction']);router[_0x56f4('0x20')](_0x56f4('0x18'),auth['isAuthenticated'](),controller[_0x56f4('0x39')]);router[_0x56f4('0x20')](_0x56f4('0x19'),auth['isAuthenticated'](),controller[_0x56f4('0x3a')]);router[_0x56f4('0x20')](_0x56f4('0x1f'),auth[_0x56f4('0x7')](),controller['addAgents']);router[_0x56f4('0x3b')]('/:id',auth[_0x56f4('0x7')](),controller[_0x56f4('0x3c')]);router[_0x56f4('0x3d')](_0x56f4('0xa'),auth['isAuthenticated'](),controller[_0x56f4('0x3e')]);router['delete'](_0x56f4('0xc'),auth['isAuthenticated'](),controller[_0x56f4('0x3f')]);router[_0x56f4('0x3d')]('/:id/canned_answers',auth[_0x56f4('0x7')](),controller[_0x56f4('0x40')]);router['delete']('/:id/users',auth[_0x56f4('0x7')](),controller[_0x56f4('0x41')]);module[_0x56f4('0x42')]=router;
\ No newline at end of file
index e2f8462..fc228f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x960c=['STRING','AmazonAWS','Google','sequelize'];(function(_0x4631fc,_0x4d9cf0){var _0x34b44e=function(_0x171202){while(--_0x171202){_0x4631fc['push'](_0x4631fc['shift']());}};_0x34b44e(++_0x4d9cf0);}(_0x960c,0x113));var _0xc960=function(_0x24c70d,_0xcb7e28){_0x24c70d=_0x24c70d-0x0;var _0x3a7563=_0x960c[_0x24c70d];return _0x3a7563;};'use strict';var Sequelize=require(_0xc960('0x0'));module['exports']={'name':{'type':Sequelize[_0xc960('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0xc960('0x2'),_0xc960('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xc960('0x1')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf360=['STRING','AmazonAWS','sequelize','exports'];(function(_0x17ee38,_0x5bdff4){var _0x439a4e=function(_0x2c6e2b){while(--_0x2c6e2b){_0x17ee38['push'](_0x17ee38['shift']());}};_0x439a4e(++_0x5bdff4);}(_0xf360,0x9e));var _0x0f36=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xf360[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require(_0x0f36('0x0'));module[_0x0f36('0x1')]={'name':{'type':Sequelize[_0x0f36('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0x0f36('0x3'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x0f36('0x2')]},'data2':{'type':Sequelize[_0x0f36('0x2')]}};
\ No newline at end of file
index dc18a8a..578d49a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['update','catch','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','CloudProvider','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body'];(function(_0x47f5f1,_0x53edc2){var _0x24f65d=function(_0x2f7543){while(--_0x2f7543){_0x47f5f1['push'](_0x47f5f1['shift']());}};_0x24f65d(++_0x53edc2);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'all':!![]}];}return db[_0x65f6('0x27')][_0x65f6('0x3c')](_0x4ac04b);})[_0x65f6('0x21')](function(_0xed4c96){_0x266cfe[_0x65f6('0x3d')]=_0xed4c96;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))['catch'](handleError(_0x559330,null));};exports[_0x65f6('0x3e')]=function(_0x400ed2,_0x377ae5){var _0x181798={'raw':!![],'where':{'id':_0x400ed2[_0x65f6('0x3f')]['id']}},_0x83e2d9={};_0x83e2d9[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x83e2d9[_0x65f6('0x2c')]=_[_0x65f6('0x2b')](_0x400ed2[_0x65f6('0x2c')]);_0x83e2d9[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],_0x83e2d9['query']);_0x181798[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x400ed2['query'][_0x65f6('0x2f')]));_0x181798[_0x65f6('0x30')]=_0x181798[_0x65f6('0x30')]['length']?_0x181798[_0x65f6('0x30')]:_0x83e2d9[_0x65f6('0x2a')];if(_0x400ed2[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x181798['include']=[{'all':!![]}];}_0x181798=_[_0x65f6('0x37')]({},_0x181798,_0x400ed2['options']);return db[_0x65f6('0x27')][_0x65f6('0x40')](_0x181798)['then'](handleEntityNotFound(_0x377ae5,null))[_0x65f6('0x21')](respondWithResult(_0x377ae5,null))['catch'](handleError(_0x377ae5,null));};exports[_0x65f6('0x41')]=function(_0x4d9b76,_0x2d1706){return db[_0x65f6('0x27')][_0x65f6('0x41')](_0x4d9b76[_0x65f6('0x42')],{})['then'](respondWithResult(_0x2d1706,0xc9))['catch'](handleError(_0x2d1706,null));};exports[_0x65f6('0x43')]=function(_0x15d3ba,_0x3b647a){if(_0x15d3ba[_0x65f6('0x42')]['id']){delete _0x15d3ba[_0x65f6('0x42')]['id'];}return db[_0x65f6('0x27')][_0x65f6('0x40')]({'where':{'id':_0x15d3ba[_0x65f6('0x3f')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b647a,null))['then'](saveUpdates(_0x15d3ba[_0x65f6('0x42')],null))[_0x65f6('0x21')](respondWithResult(_0x3b647a,null))[_0x65f6('0x44')](handleError(_0x3b647a,null));};exports['destroy']=function(_0x47e749,_0x42d453){return db['CloudProvider'][_0x65f6('0x40')]({'where':{'id':_0x47e749[_0x65f6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42d453,null))[_0x65f6('0x21')](removeEntity(_0x42d453,null))['catch'](handleError(_0x42d453,null));};
\ No newline at end of file
+var _0x2ef3=['update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','CloudProvider','then','includeAll','include','findAll','catch','show','params','keys','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x36d349,_0x549361){var _0x2e37aa=function(_0x3c3e7e){while(--_0x3c3e7e){_0x36d349['push'](_0x36d349['shift']());}};_0x2e37aa(++_0x549361);}(_0x2ef3,0xba));var _0x32ef=function(_0x5aec9a,_0xd4b93b){_0x5aec9a=_0x5aec9a-0x0;var _0x59dae7=_0x2ef3[_0x5aec9a];return _0x59dae7;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['CloudProvider'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'all':!![]}];}return db[_0x32ef('0x3d')][_0x32ef('0x41')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x3c0e44){_0x3c569d['rows']=_0x3c0e44;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x42')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x43')]=function(_0x2a33dd,_0x765c63){var _0x5dca14={'raw':!![],'where':{'id':_0x2a33dd[_0x32ef('0x44')]['id']}},_0x2901a1={};_0x2901a1['model']=_[_0x32ef('0x45')](db['CloudProvider'][_0x32ef('0x2a')]);_0x2901a1[_0x32ef('0x2f')]=_[_0x32ef('0x45')](_0x2a33dd[_0x32ef('0x2f')]);_0x2901a1[_0x32ef('0x30')]=_[_0x32ef('0x32')](_0x2901a1[_0x32ef('0x2e')],_0x2901a1[_0x32ef('0x2f')]);_0x5dca14[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x2901a1['model'],qs[_0x32ef('0x33')](_0x2a33dd['query'][_0x32ef('0x33')]));_0x5dca14[_0x32ef('0x31')]=_0x5dca14[_0x32ef('0x31')]['length']?_0x5dca14[_0x32ef('0x31')]:_0x2901a1[_0x32ef('0x2e')];if(_0x2a33dd[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5dca14[_0x32ef('0x40')]=[{'all':!![]}];}_0x5dca14=_[_0x32ef('0x3b')]({},_0x5dca14,_0x2a33dd[_0x32ef('0x3c')]);return db['CloudProvider']['find'](_0x5dca14)[_0x32ef('0x3e')](handleEntityNotFound(_0x765c63,null))[_0x32ef('0x3e')](respondWithResult(_0x765c63,null))[_0x32ef('0x42')](handleError(_0x765c63,null));};exports[_0x32ef('0x46')]=function(_0x209361,_0xd67dc9){return db[_0x32ef('0x3d')][_0x32ef('0x46')](_0x209361[_0x32ef('0x47')],{})[_0x32ef('0x3e')](respondWithResult(_0xd67dc9,0xc9))[_0x32ef('0x42')](handleError(_0xd67dc9,null));};exports[_0x32ef('0x24')]=function(_0x36a65c,_0x4c2534){if(_0x36a65c[_0x32ef('0x47')]['id']){delete _0x36a65c[_0x32ef('0x47')]['id'];}return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x36a65c[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x4c2534,null))[_0x32ef('0x3e')](saveUpdates(_0x36a65c[_0x32ef('0x47')],null))[_0x32ef('0x3e')](respondWithResult(_0x4c2534,null))[_0x32ef('0x42')](handleError(_0x4c2534,null));};exports[_0x32ef('0x49')]=function(_0x29d456,_0x272377){return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x29d456[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x272377,null))[_0x32ef('0x3e')](removeEntity(_0x272377,null))['catch'](handleError(_0x272377,null));};
\ No newline at end of file
index df51d1c..4ff5948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e40=['path','../../config/environment','./cloudProvider.attributes','CloudProvider','cloud_providers','../../config/logger','api','moment','bluebird'];(function(_0x52ace8,_0x21ebde){var _0x5d0460=function(_0x2cffd0){while(--_0x2cffd0){_0x52ace8['push'](_0x52ace8['shift']());}};_0x5d0460(++_0x21ebde);}(_0x9e40,0xdd));var _0x09e4=function(_0x17a043,_0x20f0c7){_0x17a043=_0x17a043-0x0;var _0xf106c6=_0x9e40[_0x17a043];return _0xf106c6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x09e4('0x0'))(_0x09e4('0x1'));var moment=require(_0x09e4('0x2'));var BPromise=require(_0x09e4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09e4('0x4'));var rimraf=require('rimraf');var config=require(_0x09e4('0x5'));var attributes=require(_0x09e4('0x6'));module['exports']=function(_0x5c61f2,_0x32a758){return _0x5c61f2['define'](_0x09e4('0x7'),attributes,{'tableName':_0x09e4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe78=['rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x12da5e,_0x20f80c){var _0x36a787=function(_0x24abab){while(--_0x24abab){_0x12da5e['push'](_0x12da5e['shift']());}};_0x36a787(++_0x20f80c);}(_0xbe78,0x124));var _0x8be7=function(_0x57d485,_0x4ddb6a){_0x57d485=_0x57d485-0x0;var _0x3f6177=_0xbe78[_0x57d485];return _0x3f6177;};'use strict';var _=require(_0x8be7('0x0'));var util=require(_0x8be7('0x1'));var logger=require(_0x8be7('0x2'))(_0x8be7('0x3'));var moment=require(_0x8be7('0x4'));var BPromise=require(_0x8be7('0x5'));var rp=require(_0x8be7('0x6'));var fs=require('fs');var path=require(_0x8be7('0x7'));var rimraf=require(_0x8be7('0x8'));var config=require(_0x8be7('0x9'));var attributes=require(_0x8be7('0xa'));module[_0x8be7('0xb')]=function(_0x8629d2,_0x3e9299){return _0x8629d2[_0x8be7('0xc')](_0x8be7('0xd'),attributes,{'tableName':_0x8be7('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c61e52e..8f3cede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa76e=['result','catch','util','moment','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','CloudProvider,\x20%s,\x20%s','message'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xa76e,0xfe));var _0xea76=function(_0x58a4fe,_0x11d439){_0x58a4fe=_0x58a4fe-0x0;var _0x697de2=_0xa76e[_0x58a4fe];return _0x697de2;};'use strict';var _=require('lodash');var util=require(_0xea76('0x0'));var moment=require(_0xea76('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xea76('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xea76('0x3'));var logger=require(_0xea76('0x4'))(_0xea76('0x5'));var config=require('../../config/environment');var jayson=require(_0xea76('0x6'));var client=jayson['client'][_0xea76('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4ee974,_0x45ac1b,_0x1735ff){return new BPromise(function(_0x5eb746,_0x55aae7){return client[_0xea76('0x8')](_0x4ee974,_0x1735ff)[_0xea76('0x9')](function(_0x1c6723){logger[_0xea76('0xa')]('CloudProvider,\x20%s,\x20%s',_0x45ac1b,_0xea76('0xb'));logger[_0xea76('0xc')](_0xea76('0xd'),_0x45ac1b,'request\x20sent',JSON[_0xea76('0xe')](_0x1c6723));if(_0x1c6723[_0xea76('0xf')]){if(_0x1c6723[_0xea76('0xf')][_0xea76('0x10')]===0x1f4){logger[_0xea76('0xf')](_0xea76('0x11'),_0x45ac1b,_0x1c6723[_0xea76('0xf')][_0xea76('0x12')]);return _0x55aae7(_0x1c6723[_0xea76('0xf')][_0xea76('0x12')]);}logger[_0xea76('0xf')](_0xea76('0x11'),_0x45ac1b,_0x1c6723[_0xea76('0xf')][_0xea76('0x12')]);return _0x5eb746(_0x1c6723[_0xea76('0xf')]['message']);}else{logger[_0xea76('0xa')](_0xea76('0x11'),_0x45ac1b,_0xea76('0xb'));_0x5eb746(_0x1c6723[_0xea76('0x13')][_0xea76('0x12')]);}})[_0xea76('0x14')](function(_0x3b47fa){logger[_0xea76('0xf')](_0xea76('0x11'),_0x45ac1b,_0x3b47fa);_0x55aae7(_0x3b47fa);});});}
\ No newline at end of file
+var _0x68b3=['rpc','jayson/promise','client','http','request','then','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x115a41,_0x40602b){var _0x482d0e=function(_0x191c49){while(--_0x191c49){_0x115a41['push'](_0x115a41['shift']());}};_0x482d0e(++_0x40602b);}(_0x68b3,0x1d8));var _0x368b=function(_0x14c8bf,_0x469c33){_0x14c8bf=_0x14c8bf-0x0;var _0x5b3ab7=_0x68b3[_0x14c8bf];return _0x5b3ab7;};'use strict';var _=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var moment=require(_0x368b('0x2'));var BPromise=require(_0x368b('0x3'));var rs=require(_0x368b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x368b('0x5'))['db'];var utils=require(_0x368b('0x6'));var logger=require(_0x368b('0x7'))(_0x368b('0x8'));var config=require('../../config/environment');var jayson=require(_0x368b('0x9'));var client=jayson[_0x368b('0xa')][_0x368b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23584a,_0x4406c8,_0x127c1e){return new BPromise(function(_0x2dec1c,_0x142d05){return client[_0x368b('0xc')](_0x23584a,_0x127c1e)[_0x368b('0xd')](function(_0x2a7b9f){logger['info'](_0x368b('0xe'),_0x4406c8,_0x368b('0xf'));logger[_0x368b('0x10')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x4406c8,_0x368b('0xf'),JSON[_0x368b('0x11')](_0x2a7b9f));if(_0x2a7b9f[_0x368b('0x12')]){if(_0x2a7b9f['error'][_0x368b('0x13')]===0x1f4){logger[_0x368b('0x12')]('CloudProvider,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x142d05(_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);}logger[_0x368b('0x12')]('CloudProvider,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x2dec1c(_0x2a7b9f['error'][_0x368b('0x14')]);}else{logger[_0x368b('0x15')](_0x368b('0xe'),_0x4406c8,'request\x20sent');_0x2dec1c(_0x2a7b9f[_0x368b('0x16')][_0x368b('0x14')]);}})[_0x368b('0x17')](function(_0x4d6d9d){logger[_0x368b('0x12')](_0x368b('0xe'),_0x4406c8,_0x4d6d9d);_0x142d05(_0x4d6d9d);});});}
\ No newline at end of file
index 4b9934b..b833d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c0c=['delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','update'];(function(_0x20e7e3,_0x1529be){var _0x14b9de=function(_0xa82925){while(--_0xa82925){_0x20e7e3['push'](_0x20e7e3['shift']());}};_0x14b9de(++_0x1529be);}(_0x6c0c,0x18f));var _0xc6c0=function(_0x4c32a5,_0x2ae3ef){_0x4c32a5=_0x4c32a5-0x0;var _0x1a7fa9=_0x6c0c[_0x4c32a5];return _0x1a7fa9;};'use strict';var multer=require(_0xc6c0('0x0'));var util=require(_0xc6c0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc6c0('0x2'));var router=express['Router']();var fs_extra=require(_0xc6c0('0x3'));var auth=require(_0xc6c0('0x4'));var interaction=require(_0xc6c0('0x5'));var config=require(_0xc6c0('0x6'));var controller=require('./cloudProvider.controller');router['get']('/',auth[_0xc6c0('0x7')](),controller[_0xc6c0('0x8')]);router[_0xc6c0('0x9')](_0xc6c0('0xa'),auth[_0xc6c0('0x7')](),controller[_0xc6c0('0xb')]);router[_0xc6c0('0xc')]('/',auth[_0xc6c0('0x7')](),controller[_0xc6c0('0xd')]);router['put']('/:id',auth[_0xc6c0('0x7')](),controller[_0xc6c0('0xe')]);router[_0xc6c0('0xf')](_0xc6c0('0xa'),auth[_0xc6c0('0x7')](),controller[_0xc6c0('0x10')]);module[_0xc6c0('0x11')]=router;
\ No newline at end of file
+var _0xf7ce=['put','update','delete','destroy','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','/:id','post','create'];(function(_0x37cc26,_0x179b88){var _0x358eff=function(_0x359992){while(--_0x359992){_0x37cc26['push'](_0x37cc26['shift']());}};_0x358eff(++_0x179b88);}(_0xf7ce,0x194));var _0xef7c=function(_0x2d8d09,_0x253e60){_0x2d8d09=_0x2d8d09-0x0;var _0x244ec6=_0xf7ce[_0x2d8d09];return _0x244ec6;};'use strict';var multer=require(_0xef7c('0x0'));var util=require('util');var path=require(_0xef7c('0x1'));var timeout=require('connect-timeout');var express=require(_0xef7c('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xef7c('0x3'));var interaction=require(_0xef7c('0x4'));var config=require(_0xef7c('0x5'));var controller=require(_0xef7c('0x6'));router[_0xef7c('0x7')]('/',auth[_0xef7c('0x8')](),controller['index']);router[_0xef7c('0x7')](_0xef7c('0x9'),auth[_0xef7c('0x8')](),controller['show']);router[_0xef7c('0xa')]('/',auth[_0xef7c('0x8')](),controller[_0xef7c('0xb')]);router[_0xef7c('0xc')](_0xef7c('0x9'),auth['isAuthenticated'](),controller[_0xef7c('0xd')]);router[_0xef7c('0xe')](_0xef7c('0x9'),auth['isAuthenticated'](),controller[_0xef7c('0xf')]);module['exports']=router;
\ No newline at end of file
index 8598232..889bc06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f75=['name','sequelize','STRING'];(function(_0x2b5db6,_0x1c1e34){var _0x52356e=function(_0x337c2f){while(--_0x337c2f){_0x2b5db6['push'](_0x2b5db6['shift']());}};_0x52356e(++_0x1c1e34);}(_0x9f75,0x15a));var _0x59f7=function(_0x29d08f,_0x233bdb){_0x29d08f=_0x29d08f-0x0;var _0x33052a=_0x9f75[_0x29d08f];return _0x33052a;};'use strict';var Sequelize=require(_0x59f7('0x0'));module['exports']={'name':{'type':Sequelize[_0x59f7('0x1')],'unique':_0x59f7('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x59f7('0x1')]},'phone':{'type':Sequelize[_0x59f7('0x1')]},'fax':{'type':Sequelize[_0x59f7('0x1')]},'type':{'type':Sequelize[_0x59f7('0x1')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x59f7('0x1')]},'city':{'type':Sequelize[_0x59f7('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x59f7('0x1')]},'sStreet':{'type':Sequelize[_0x59f7('0x1')]},'sPostalCode':{'type':Sequelize[_0x59f7('0x1')]},'sCity':{'type':Sequelize[_0x59f7('0x1')]},'sCountry':{'type':Sequelize[_0x59f7('0x1')]},'description':{'type':Sequelize[_0x59f7('0x1')]}};
\ No newline at end of file
+var _0x207a=['sequelize','STRING','name'];(function(_0x4ad8d6,_0x4a387b){var _0x4fef56=function(_0x407155){while(--_0x407155){_0x4ad8d6['push'](_0x4ad8d6['shift']());}};_0x4fef56(++_0x4a387b);}(_0x207a,0x180));var _0xa207=function(_0x5891de,_0xa8ab91){_0x5891de=_0x5891de-0x0;var _0x18c5f8=_0x207a[_0x5891de];return _0x18c5f8;};'use strict';var Sequelize=require(_0xa207('0x0'));module['exports']={'name':{'type':Sequelize[_0xa207('0x1')],'unique':_0xa207('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xa207('0x1')]},'companyId':{'type':Sequelize[_0xa207('0x1')]},'website':{'type':Sequelize[_0xa207('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xa207('0x1')]},'type':{'type':Sequelize[_0xa207('0x1')]},'street':{'type':Sequelize[_0xa207('0x1')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xa207('0x1')]},'email':{'type':Sequelize[_0xa207('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xa207('0x1')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0xa207('0x1')]},'sCountry':{'type':Sequelize[_0xa207('0x1')]},'description':{'type':Sequelize[_0xa207('0x1')]}};
\ No newline at end of file
index 3de059b..2bb5e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a8=['update','then','get','Companies','UserProfileResource','destroy','error','stack','name','send','index','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','CmCompany','includeAll','include','rows','catch','params','rawAttributes','find','create','body','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addContacts','CmContact','ids','getContacts','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','save'];(function(_0x4d2459,_0x3c1d9d){var _0x565550=function(_0x322dfd){while(--_0x322dfd){_0x4d2459['push'](_0x4d2459['shift']());}};_0x565550(++_0x3c1d9d);}(_0x58a8,0x131));var _0x858a=function(_0x1a0df5,_0x48ae51){_0x1a0df5=_0x1a0df5-0x0;var _0x43ced8=_0x58a8[_0x1a0df5];return _0x43ced8;};'use strict';var emlformat=require(_0x858a('0x0'));var rimraf=require(_0x858a('0x1'));var zipdir=require(_0x858a('0x2'));var jsonpatch=require(_0x858a('0x3'));var rp=require(_0x858a('0x4'));var moment=require('moment');var BPromise=require(_0x858a('0x5'));var Mustache=require(_0x858a('0x6'));var util=require('util');var path=require(_0x858a('0x7'));var sox=require(_0x858a('0x8'));var csv=require(_0x858a('0x9'));var ejs=require(_0x858a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x858a('0xb'));var squel=require(_0x858a('0xc'));var crypto=require(_0x858a('0xd'));var jsforce=require(_0x858a('0xe'));var deskjs=require(_0x858a('0xf'));var toCsv=require(_0x858a('0x9'));var querystring=require(_0x858a('0x10'));var Papa=require(_0x858a('0x11'));var Redis=require(_0x858a('0x12'));var authService=require(_0x858a('0x13'));var qs=require(_0x858a('0x14'));var as=require(_0x858a('0x15'));var hardwareService=require(_0x858a('0x16'));var logger=require(_0x858a('0x17'))(_0x858a('0x18'));var utils=require(_0x858a('0x19'));var config=require(_0x858a('0x1a'));var licenseUtil=require(_0x858a('0x1b'));var db=require(_0x858a('0x1c'))['db'];function respondWithStatusCode(_0x1f7ea6,_0x249306){_0x249306=_0x249306||0xcc;return function(_0x5f3a66){if(_0x5f3a66){return _0x1f7ea6[_0x858a('0x1d')](_0x249306);}return _0x1f7ea6[_0x858a('0x1e')](_0x249306)[_0x858a('0x1f')]();};}function respondWithResult(_0x200617,_0x198bbe){_0x198bbe=_0x198bbe||0xc8;return function(_0xa66a2b){if(_0xa66a2b){return _0x200617['status'](_0x198bbe)['json'](_0xa66a2b);}};}function respondWithFilteredResult(_0x27c46f,_0x46ef35){return function(_0x16b7bf){if(_0x16b7bf){var _0x185e16=typeof _0x46ef35[_0x858a('0x20')]===_0x858a('0x21')&&typeof _0x46ef35[_0x858a('0x22')]===_0x858a('0x21');var _0x30353b=_0x16b7bf[_0x858a('0x23')];var _0x3c201a=_0x185e16?0x0:_0x46ef35['offset'];var _0xa50880=_0x185e16?_0x16b7bf[_0x858a('0x23')]:_0x46ef35['offset']+_0x46ef35[_0x858a('0x22')];var _0x14cec1;if(_0xa50880>=_0x30353b){_0xa50880=_0x30353b;_0x14cec1=0xc8;}else{_0x14cec1=0xce;}_0x27c46f[_0x858a('0x1e')](_0x14cec1);return _0x27c46f[_0x858a('0x24')](_0x858a('0x25'),_0x3c201a+'-'+_0xa50880+'/'+_0x30353b)['json'](_0x16b7bf);}return null;};}function patchUpdates(_0x495a1d){return function(_0x1df856){try{jsonpatch['apply'](_0x1df856,_0x495a1d,!![]);}catch(_0x26bc4b){return BPromise['reject'](_0x26bc4b);}return _0x1df856[_0x858a('0x26')]();};}function saveUpdates(_0x1efd1d,_0x2729df){return function(_0x466926){if(_0x466926){return _0x466926[_0x858a('0x27')](_0x1efd1d)[_0x858a('0x28')](function(_0xd69c65){return _0xd69c65;});}return null;};}function removeEntity(_0x510822,_0x565f73){return function(_0xba570b){if(_0xba570b){return _0xba570b['destroy']()[_0x858a('0x28')](function(){var _0x46260b=_0xba570b[_0x858a('0x29')]({'plain':!![]});var _0x50458a=_0x858a('0x2a');return db[_0x858a('0x2b')][_0x858a('0x2c')]({'where':{'type':_0x50458a,'resourceId':_0x46260b['id']}})['then'](function(){return _0xba570b;});})[_0x858a('0x28')](function(){_0x510822[_0x858a('0x1e')](0xcc)[_0x858a('0x1f')]();});}};}function handleEntityNotFound(_0xe60186,_0x3c5bb4){return function(_0x54f8c1){if(!_0x54f8c1){_0xe60186[_0x858a('0x1d')](0x194);}return _0x54f8c1;};}function handleError(_0x4e9629,_0x1a2ef7){_0x1a2ef7=_0x1a2ef7||0x1f4;return function(_0x5c615c){logger[_0x858a('0x2d')](_0x5c615c[_0x858a('0x2e')]);if(_0x5c615c[_0x858a('0x2f')]){delete _0x5c615c[_0x858a('0x2f')];}_0x4e9629['status'](_0x1a2ef7)[_0x858a('0x30')](_0x5c615c);};}exports[_0x858a('0x31')]=function(_0x2e4318,_0x262685){var _0x431c3d={},_0x274c53={},_0x55d79d={'count':0x0,'rows':[]};return db['CmCompany']['describe']()['then'](function(_0xa33526){_0x274c53[_0x858a('0x32')]=_[_0x858a('0x33')](_0xa33526);_0x274c53[_0x858a('0x34')]=_[_0x858a('0x33')](_0x2e4318['query']);_0x274c53[_0x858a('0x35')]=_[_0x858a('0x36')](_0x274c53['model'],_0x274c53[_0x858a('0x34')]);_0x431c3d['attributes']=_[_0x858a('0x36')](_0x274c53[_0x858a('0x32')],qs[_0x858a('0x37')](_0x2e4318[_0x858a('0x34')][_0x858a('0x37')]));_0x431c3d[_0x858a('0x38')]=_0x431c3d[_0x858a('0x38')][_0x858a('0x39')]?_0x431c3d['attributes']:_0x274c53[_0x858a('0x32')];if(!_0x2e4318[_0x858a('0x34')][_0x858a('0x3a')](_0x858a('0x3b'))){_0x431c3d[_0x858a('0x22')]=qs[_0x858a('0x22')](_0x2e4318['query'][_0x858a('0x22')]);_0x431c3d[_0x858a('0x20')]=qs[_0x858a('0x20')](_0x2e4318['query'][_0x858a('0x20')]);}_0x431c3d[_0x858a('0x3c')]=qs[_0x858a('0x3d')](_0x2e4318[_0x858a('0x34')][_0x858a('0x3d')]);_0x431c3d[_0x858a('0x3e')]=qs[_0x858a('0x35')](_[_0x858a('0x3f')](_0x2e4318['query'],_0x274c53[_0x858a('0x35')]),_0xa33526);if(_0x2e4318['query']['filter']){_0x431c3d[_0x858a('0x3e')]=_[_0x858a('0x40')](_0x431c3d[_0x858a('0x3e')],{'$or':_[_0x858a('0x41')](_0x431c3d[_0x858a('0x38')],function(_0xa001f9){var _0x2c9cd={};_0x2c9cd[_0xa001f9]={'$like':'%'+_0x2e4318[_0x858a('0x34')][_0x858a('0x42')]+'%'};return _0x2c9cd;})});}_0x431c3d=_[_0x858a('0x40')]({},_0x431c3d,_0x2e4318[_0x858a('0x43')]);var _0x10e0de={'where':_0x431c3d['where']};return db[_0x858a('0x44')]['count'](_0x10e0de)[_0x858a('0x28')](function(_0x28fac9){_0x55d79d[_0x858a('0x23')]=_0x28fac9;if(_0x2e4318[_0x858a('0x34')][_0x858a('0x45')]){_0x431c3d[_0x858a('0x46')]=[{'all':!![]}];}return db[_0x858a('0x44')]['findAll'](_0x431c3d);})['then'](function(_0x5df5a4){_0x55d79d[_0x858a('0x47')]=_0x5df5a4;return _0x55d79d;})[_0x858a('0x28')](respondWithFilteredResult(_0x262685,_0x431c3d))[_0x858a('0x48')](handleError(_0x262685,null));})[_0x858a('0x48')](handleError(_0x262685,null));};exports['show']=function(_0x1c1711,_0x5d588a){var _0x1932a0={'raw':![],'where':{'id':_0x1c1711[_0x858a('0x49')]['id']}},_0x52df4c={};_0x52df4c['model']=_[_0x858a('0x33')](db['CmCompany'][_0x858a('0x4a')]);_0x52df4c[_0x858a('0x34')]=_[_0x858a('0x33')](_0x1c1711[_0x858a('0x34')]);_0x52df4c[_0x858a('0x35')]=_['intersection'](_0x52df4c['model'],_0x52df4c['query']);_0x1932a0[_0x858a('0x38')]=_['intersection'](_0x52df4c[_0x858a('0x32')],qs[_0x858a('0x37')](_0x1c1711['query']['fields']));_0x1932a0['attributes']=_0x1932a0[_0x858a('0x38')][_0x858a('0x39')]?_0x1932a0['attributes']:_0x52df4c['model'];if(_0x1c1711[_0x858a('0x34')]['includeAll']){_0x1932a0[_0x858a('0x46')]=[{'all':!![]}];}_0x1932a0=_[_0x858a('0x40')]({},_0x1932a0,_0x1c1711['options']);return db[_0x858a('0x44')][_0x858a('0x4b')](_0x1932a0)[_0x858a('0x28')](handleEntityNotFound(_0x5d588a,null))[_0x858a('0x28')](respondWithResult(_0x5d588a,null))[_0x858a('0x48')](handleError(_0x5d588a,null));};exports[_0x858a('0x4c')]=function(_0x19bf4a,_0x492512){return db[_0x858a('0x44')][_0x858a('0x4c')](_0x19bf4a[_0x858a('0x4d')],{})['then'](function(_0x4b40f6){var _0x49c27b=_0x19bf4a[_0x858a('0x4e')][_0x858a('0x29')]({'plain':!![]});if(!_0x49c27b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x49c27b['role']===_0x858a('0x4e')){var _0x23d9e9=_0x4b40f6[_0x858a('0x29')]({'plain':!![]});var _0x1df364=_0x858a('0x2a');return db['UserProfileSection'][_0x858a('0x4b')]({'where':{'name':_0x1df364,'userProfileId':_0x49c27b['userProfileId']},'raw':!![]})[_0x858a('0x28')](function(_0x354004){if(_0x354004&&_0x354004[_0x858a('0x4f')]===0x0){return db[_0x858a('0x2b')][_0x858a('0x4c')]({'name':_0x23d9e9[_0x858a('0x2f')],'resourceId':_0x23d9e9['id'],'type':_0x354004['name'],'sectionId':_0x354004['id']},{})['then'](function(){return _0x4b40f6;});}else{return _0x4b40f6;}})['catch'](function(_0x82f227){logger[_0x858a('0x2d')](_0x858a('0x50'),_0x82f227);throw _0x82f227;});}return _0x4b40f6;})[_0x858a('0x28')](respondWithResult(_0x492512,0xc9))['catch'](handleError(_0x492512,null));};exports[_0x858a('0x27')]=function(_0x5ab2d8,_0xdf6d74){if(_0x5ab2d8[_0x858a('0x4d')]['id']){delete _0x5ab2d8['body']['id'];}return db['CmCompany'][_0x858a('0x4b')]({'where':{'id':_0x5ab2d8[_0x858a('0x49')]['id']}})[_0x858a('0x28')](handleEntityNotFound(_0xdf6d74,null))[_0x858a('0x28')](saveUpdates(_0x5ab2d8[_0x858a('0x4d')],null))[_0x858a('0x28')](respondWithResult(_0xdf6d74,null))[_0x858a('0x48')](handleError(_0xdf6d74,null));};exports[_0x858a('0x2c')]=function(_0x4e53b8,_0x4cf217){return db[_0x858a('0x44')][_0x858a('0x4b')]({'where':{'id':_0x4e53b8['params']['id']}})[_0x858a('0x28')](handleEntityNotFound(_0x4cf217,null))['then'](removeEntity(_0x4cf217,null))['catch'](handleError(_0x4cf217,null));};exports[_0x858a('0x51')]=function(_0xdf0d6d,_0x199fc0){return db[_0x858a('0x44')][_0x858a('0x51')]()['then'](respondWithResult(_0x199fc0,null))['catch'](handleError(_0x199fc0,null));};exports[_0x858a('0x52')]=function(_0x4f0d3a,_0x18ce51,_0x4bebe7){return db[_0x858a('0x53')][_0x858a('0x4b')]({'where':{'id':_0x4f0d3a['params']['id']}})[_0x858a('0x28')](handleEntityNotFound(_0x18ce51,null))[_0x858a('0x28')](function(_0x32d53d){if(_0x32d53d){return _0x32d53d[_0x858a('0x52')](_0x4f0d3a[_0x858a('0x4d')][_0x858a('0x54')],_['omit'](_0x4f0d3a[_0x858a('0x4d')],[_0x858a('0x54'),'id'])||{});}})[_0x858a('0x28')](respondWithResult(_0x18ce51,null))[_0x858a('0x48')](handleError(_0x18ce51,null));};exports[_0x858a('0x55')]=function(_0x39e3d6,_0x358f7c,_0x5b6a53){var _0x54fa0a={};var _0x104924={};var _0x5ef094;var _0x78df4a;return db['CmCompany']['findOne']({'where':{'id':_0x39e3d6['params']['id']}})[_0x858a('0x28')](handleEntityNotFound(_0x358f7c,null))[_0x858a('0x28')](function(_0x225d01){if(_0x225d01){_0x5ef094=_0x225d01;_0x104924[_0x858a('0x32')]=_[_0x858a('0x33')](db[_0x858a('0x53')]['rawAttributes']);_0x104924['query']=_[_0x858a('0x33')](_0x39e3d6['query']);_0x104924[_0x858a('0x35')]=_[_0x858a('0x36')](_0x104924[_0x858a('0x32')],_0x104924[_0x858a('0x34')]);_0x54fa0a[_0x858a('0x38')]=_[_0x858a('0x36')](_0x104924[_0x858a('0x32')],qs[_0x858a('0x37')](_0x39e3d6[_0x858a('0x34')]['fields']));_0x54fa0a[_0x858a('0x38')]=_0x54fa0a['attributes']['length']?_0x54fa0a[_0x858a('0x38')]:_0x104924[_0x858a('0x32')];_0x54fa0a[_0x858a('0x3c')]=qs[_0x858a('0x3d')](_0x39e3d6[_0x858a('0x34')][_0x858a('0x3d')]);_0x54fa0a[_0x858a('0x3e')]=qs[_0x858a('0x35')](_[_0x858a('0x3f')](_0x39e3d6[_0x858a('0x34')],_0x104924[_0x858a('0x35')]));if(_0x39e3d6[_0x858a('0x34')][_0x858a('0x42')]){_0x54fa0a[_0x858a('0x3e')]=_[_0x858a('0x40')](_0x54fa0a['where'],{'$or':_[_0x858a('0x41')](_0x54fa0a['attributes'],function(_0x260171){var _0x544616={};_0x544616[_0x260171]={'$like':'%'+_0x39e3d6[_0x858a('0x34')][_0x858a('0x42')]+'%'};return _0x544616;})});}_0x54fa0a=_[_0x858a('0x40')]({},_0x54fa0a,_0x39e3d6[_0x858a('0x43')]);return _0x5ef094[_0x858a('0x55')](_0x54fa0a);}})[_0x858a('0x28')](function(_0x5c2f5a){if(_0x5c2f5a){_0x78df4a=_0x5c2f5a[_0x858a('0x39')];if(!_0x39e3d6[_0x858a('0x34')]['hasOwnProperty']('nolimit')){_0x54fa0a[_0x858a('0x22')]=qs['limit'](_0x39e3d6[_0x858a('0x34')][_0x858a('0x22')]);_0x54fa0a[_0x858a('0x20')]=qs[_0x858a('0x20')](_0x39e3d6[_0x858a('0x34')][_0x858a('0x20')]);}return _0x5ef094[_0x858a('0x55')](_0x54fa0a);}})[_0x858a('0x28')](function(_0x4e2f24){if(_0x4e2f24){return _0x4e2f24?{'count':_0x78df4a,'rows':_0x4e2f24}:null;}})[_0x858a('0x28')](respondWithResult(_0x358f7c,null))['catch'](handleError(_0x358f7c,null));};
\ No newline at end of file
+var _0xb738=['to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','update','then','destroy','get','UserProfileResource','stack','name','index','CmCompany','describe','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','map','options','includeAll','findAll','catch','show','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Companies','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addContacts','CmContact','omit','ids','getContacts','findOne','order','pick','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x2d3125,_0xc86049){var _0xa90f2e=function(_0xa9f2e8){while(--_0xa9f2e8){_0x2d3125['push'](_0x2d3125['shift']());}};_0xa90f2e(++_0xc86049);}(_0xb738,0x9d));var _0x8b73=function(_0x1ac052,_0x3f8942){_0x1ac052=_0x1ac052-0x0;var _0x17dfe7=_0xb738[_0x1ac052];return _0x17dfe7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8b73('0x0'));var jsonpatch=require(_0x8b73('0x1'));var rp=require(_0x8b73('0x2'));var moment=require(_0x8b73('0x3'));var BPromise=require(_0x8b73('0x4'));var Mustache=require(_0x8b73('0x5'));var util=require(_0x8b73('0x6'));var path=require(_0x8b73('0x7'));var sox=require(_0x8b73('0x8'));var csv=require(_0x8b73('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8b73('0xa'));var squel=require('squel');var crypto=require(_0x8b73('0xb'));var jsforce=require(_0x8b73('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8b73('0x9'));var querystring=require(_0x8b73('0xd'));var Papa=require(_0x8b73('0xe'));var Redis=require(_0x8b73('0xf'));var authService=require(_0x8b73('0x10'));var qs=require(_0x8b73('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8b73('0x12'));var logger=require(_0x8b73('0x13'))('api');var utils=require(_0x8b73('0x14'));var config=require(_0x8b73('0x15'));var licenseUtil=require(_0x8b73('0x16'));var db=require(_0x8b73('0x17'))['db'];function respondWithStatusCode(_0x2bf4da,_0x2e85ac){_0x2e85ac=_0x2e85ac||0xcc;return function(_0x51b074){if(_0x51b074){return _0x2bf4da[_0x8b73('0x18')](_0x2e85ac);}return _0x2bf4da[_0x8b73('0x19')](_0x2e85ac)['end']();};}function respondWithResult(_0xacd6e3,_0x5890b4){_0x5890b4=_0x5890b4||0xc8;return function(_0x4a2797){if(_0x4a2797){return _0xacd6e3['status'](_0x5890b4)['json'](_0x4a2797);}};}function respondWithFilteredResult(_0x4dd63d,_0x2fb193){return function(_0x3c9e2e){if(_0x3c9e2e){var _0x35828e=typeof _0x2fb193[_0x8b73('0x1a')]==='undefined'&&typeof _0x2fb193[_0x8b73('0x1b')]==='undefined';var _0x401b7b=_0x3c9e2e['count'];var _0xd318fc=_0x35828e?0x0:_0x2fb193['offset'];var _0x16a9bb=_0x35828e?_0x3c9e2e[_0x8b73('0x1c')]:_0x2fb193[_0x8b73('0x1a')]+_0x2fb193[_0x8b73('0x1b')];var _0x381451;if(_0x16a9bb>=_0x401b7b){_0x16a9bb=_0x401b7b;_0x381451=0xc8;}else{_0x381451=0xce;}_0x4dd63d[_0x8b73('0x19')](_0x381451);return _0x4dd63d[_0x8b73('0x1d')](_0x8b73('0x1e'),_0xd318fc+'-'+_0x16a9bb+'/'+_0x401b7b)[_0x8b73('0x1f')](_0x3c9e2e);}return null;};}function patchUpdates(_0x3a9985){return function(_0x1d88d3){try{jsonpatch['apply'](_0x1d88d3,_0x3a9985,!![]);}catch(_0x47329c){return BPromise['reject'](_0x47329c);}return _0x1d88d3['save']();};}function saveUpdates(_0x37d882,_0x37e3e8){return function(_0x211bbe){if(_0x211bbe){return _0x211bbe[_0x8b73('0x20')](_0x37d882)[_0x8b73('0x21')](function(_0x1f91ff){return _0x1f91ff;});}return null;};}function removeEntity(_0x28bc30,_0x4bf91c){return function(_0x3b5245){if(_0x3b5245){return _0x3b5245[_0x8b73('0x22')]()['then'](function(){var _0x4c997c=_0x3b5245[_0x8b73('0x23')]({'plain':!![]});var _0x453726='Companies';return db[_0x8b73('0x24')][_0x8b73('0x22')]({'where':{'type':_0x453726,'resourceId':_0x4c997c['id']}})['then'](function(){return _0x3b5245;});})['then'](function(){_0x28bc30[_0x8b73('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bb061,_0x2c94ae){return function(_0x50822f){if(!_0x50822f){_0x2bb061[_0x8b73('0x18')](0x194);}return _0x50822f;};}function handleError(_0x187a5a,_0x48bac5){_0x48bac5=_0x48bac5||0x1f4;return function(_0x32eb3c){logger['error'](_0x32eb3c[_0x8b73('0x25')]);if(_0x32eb3c[_0x8b73('0x26')]){delete _0x32eb3c[_0x8b73('0x26')];}_0x187a5a[_0x8b73('0x19')](_0x48bac5)['send'](_0x32eb3c);};}exports[_0x8b73('0x27')]=function(_0x2ad078,_0x3cc21c){var _0xe8fc77={},_0x220531={},_0x42f60b={'count':0x0,'rows':[]};return db[_0x8b73('0x28')][_0x8b73('0x29')]()['then'](function(_0xcc2ab9){_0x220531[_0x8b73('0x2a')]=_[_0x8b73('0x2b')](_0xcc2ab9);_0x220531['query']=_[_0x8b73('0x2b')](_0x2ad078['query']);_0x220531['filters']=_[_0x8b73('0x2c')](_0x220531[_0x8b73('0x2a')],_0x220531[_0x8b73('0x2d')]);_0xe8fc77['attributes']=_['intersection'](_0x220531[_0x8b73('0x2a')],qs[_0x8b73('0x2e')](_0x2ad078[_0x8b73('0x2d')][_0x8b73('0x2e')]));_0xe8fc77['attributes']=_0xe8fc77[_0x8b73('0x2f')][_0x8b73('0x30')]?_0xe8fc77[_0x8b73('0x2f')]:_0x220531['model'];if(!_0x2ad078['query'][_0x8b73('0x31')](_0x8b73('0x32'))){_0xe8fc77[_0x8b73('0x1b')]=qs[_0x8b73('0x1b')](_0x2ad078['query']['limit']);_0xe8fc77['offset']=qs[_0x8b73('0x1a')](_0x2ad078[_0x8b73('0x2d')]['offset']);}_0xe8fc77['order']=qs[_0x8b73('0x33')](_0x2ad078[_0x8b73('0x2d')][_0x8b73('0x33')]);_0xe8fc77[_0x8b73('0x34')]=qs['filters'](_['pick'](_0x2ad078[_0x8b73('0x2d')],_0x220531[_0x8b73('0x35')]),_0xcc2ab9);if(_0x2ad078[_0x8b73('0x2d')][_0x8b73('0x36')]){_0xe8fc77['where']=_[_0x8b73('0x37')](_0xe8fc77[_0x8b73('0x34')],{'$or':_[_0x8b73('0x38')](_0xe8fc77[_0x8b73('0x2f')],function(_0x108b44){var _0x1de9c0={};_0x1de9c0[_0x108b44]={'$like':'%'+_0x2ad078[_0x8b73('0x2d')][_0x8b73('0x36')]+'%'};return _0x1de9c0;})});}_0xe8fc77=_[_0x8b73('0x37')]({},_0xe8fc77,_0x2ad078[_0x8b73('0x39')]);var _0x2b16b9={'where':_0xe8fc77[_0x8b73('0x34')]};return db[_0x8b73('0x28')][_0x8b73('0x1c')](_0x2b16b9)[_0x8b73('0x21')](function(_0x31396d){_0x42f60b[_0x8b73('0x1c')]=_0x31396d;if(_0x2ad078['query'][_0x8b73('0x3a')]){_0xe8fc77['include']=[{'all':!![]}];}return db[_0x8b73('0x28')][_0x8b73('0x3b')](_0xe8fc77);})[_0x8b73('0x21')](function(_0x14b79c){_0x42f60b['rows']=_0x14b79c;return _0x42f60b;})[_0x8b73('0x21')](respondWithFilteredResult(_0x3cc21c,_0xe8fc77))['catch'](handleError(_0x3cc21c,null));})[_0x8b73('0x3c')](handleError(_0x3cc21c,null));};exports[_0x8b73('0x3d')]=function(_0x1e7301,_0x3c49f9){var _0x4f9dd4={'raw':![],'where':{'id':_0x1e7301['params']['id']}},_0x19b254={};_0x19b254[_0x8b73('0x2a')]=_[_0x8b73('0x2b')](db[_0x8b73('0x28')][_0x8b73('0x3e')]);_0x19b254[_0x8b73('0x2d')]=_[_0x8b73('0x2b')](_0x1e7301['query']);_0x19b254[_0x8b73('0x35')]=_[_0x8b73('0x2c')](_0x19b254[_0x8b73('0x2a')],_0x19b254['query']);_0x4f9dd4[_0x8b73('0x2f')]=_[_0x8b73('0x2c')](_0x19b254['model'],qs[_0x8b73('0x2e')](_0x1e7301['query']['fields']));_0x4f9dd4[_0x8b73('0x2f')]=_0x4f9dd4['attributes'][_0x8b73('0x30')]?_0x4f9dd4[_0x8b73('0x2f')]:_0x19b254[_0x8b73('0x2a')];if(_0x1e7301[_0x8b73('0x2d')]['includeAll']){_0x4f9dd4[_0x8b73('0x3f')]=[{'all':!![]}];}_0x4f9dd4=_['merge']({},_0x4f9dd4,_0x1e7301[_0x8b73('0x39')]);return db[_0x8b73('0x28')][_0x8b73('0x40')](_0x4f9dd4)[_0x8b73('0x21')](handleEntityNotFound(_0x3c49f9,null))['then'](respondWithResult(_0x3c49f9,null))[_0x8b73('0x3c')](handleError(_0x3c49f9,null));};exports[_0x8b73('0x41')]=function(_0x2e1bbe,_0xeea108){return db[_0x8b73('0x28')][_0x8b73('0x41')](_0x2e1bbe[_0x8b73('0x42')],{})['then'](function(_0x1282aa){var _0x5a735f=_0x2e1bbe['user'][_0x8b73('0x23')]({'plain':!![]});if(!_0x5a735f)throw new Error(_0x8b73('0x43'));if(_0x5a735f[_0x8b73('0x44')]===_0x8b73('0x45')){var _0x162f73=_0x1282aa[_0x8b73('0x23')]({'plain':!![]});var _0x3d58ce=_0x8b73('0x46');return db[_0x8b73('0x47')]['find']({'where':{'name':_0x3d58ce,'userProfileId':_0x5a735f['userProfileId']},'raw':!![]})[_0x8b73('0x21')](function(_0x49a5af){if(_0x49a5af&&_0x49a5af[_0x8b73('0x48')]===0x0){return db[_0x8b73('0x24')][_0x8b73('0x41')]({'name':_0x162f73[_0x8b73('0x26')],'resourceId':_0x162f73['id'],'type':_0x49a5af[_0x8b73('0x26')],'sectionId':_0x49a5af['id']},{})[_0x8b73('0x21')](function(){return _0x1282aa;});}else{return _0x1282aa;}})[_0x8b73('0x3c')](function(_0x24b412){logger['error'](_0x8b73('0x49'),_0x24b412);throw _0x24b412;});}return _0x1282aa;})[_0x8b73('0x21')](respondWithResult(_0xeea108,0xc9))[_0x8b73('0x3c')](handleError(_0xeea108,null));};exports[_0x8b73('0x20')]=function(_0x5b6ec2,_0x55c37e){if(_0x5b6ec2[_0x8b73('0x42')]['id']){delete _0x5b6ec2[_0x8b73('0x42')]['id'];}return db[_0x8b73('0x28')][_0x8b73('0x40')]({'where':{'id':_0x5b6ec2[_0x8b73('0x4a')]['id']}})[_0x8b73('0x21')](handleEntityNotFound(_0x55c37e,null))['then'](saveUpdates(_0x5b6ec2[_0x8b73('0x42')],null))[_0x8b73('0x21')](respondWithResult(_0x55c37e,null))[_0x8b73('0x3c')](handleError(_0x55c37e,null));};exports['destroy']=function(_0x140c63,_0xa6da86){return db[_0x8b73('0x28')][_0x8b73('0x40')]({'where':{'id':_0x140c63[_0x8b73('0x4a')]['id']}})[_0x8b73('0x21')](handleEntityNotFound(_0xa6da86,null))[_0x8b73('0x21')](removeEntity(_0xa6da86,null))[_0x8b73('0x3c')](handleError(_0xa6da86,null));};exports['describe']=function(_0x32adc4,_0x204652){return db[_0x8b73('0x28')][_0x8b73('0x29')]()['then'](respondWithResult(_0x204652,null))[_0x8b73('0x3c')](handleError(_0x204652,null));};exports[_0x8b73('0x4b')]=function(_0x23f80e,_0x5244df,_0x4d6ca5){return db[_0x8b73('0x4c')][_0x8b73('0x40')]({'where':{'id':_0x23f80e[_0x8b73('0x4a')]['id']}})[_0x8b73('0x21')](handleEntityNotFound(_0x5244df,null))[_0x8b73('0x21')](function(_0x1ba096){if(_0x1ba096){return _0x1ba096['addContacts'](_0x23f80e[_0x8b73('0x42')]['ids'],_[_0x8b73('0x4d')](_0x23f80e['body'],[_0x8b73('0x4e'),'id'])||{});}})['then'](respondWithResult(_0x5244df,null))[_0x8b73('0x3c')](handleError(_0x5244df,null));};exports[_0x8b73('0x4f')]=function(_0x195987,_0x3566d4,_0x6546f5){var _0x17517a={};var _0x118ff0={};var _0x1df29c;var _0x3e4f34;return db[_0x8b73('0x28')][_0x8b73('0x50')]({'where':{'id':_0x195987[_0x8b73('0x4a')]['id']}})[_0x8b73('0x21')](handleEntityNotFound(_0x3566d4,null))[_0x8b73('0x21')](function(_0x2b0725){if(_0x2b0725){_0x1df29c=_0x2b0725;_0x118ff0[_0x8b73('0x2a')]=_[_0x8b73('0x2b')](db[_0x8b73('0x4c')][_0x8b73('0x3e')]);_0x118ff0[_0x8b73('0x2d')]=_[_0x8b73('0x2b')](_0x195987[_0x8b73('0x2d')]);_0x118ff0[_0x8b73('0x35')]=_[_0x8b73('0x2c')](_0x118ff0['model'],_0x118ff0[_0x8b73('0x2d')]);_0x17517a[_0x8b73('0x2f')]=_[_0x8b73('0x2c')](_0x118ff0['model'],qs[_0x8b73('0x2e')](_0x195987[_0x8b73('0x2d')][_0x8b73('0x2e')]));_0x17517a[_0x8b73('0x2f')]=_0x17517a[_0x8b73('0x2f')][_0x8b73('0x30')]?_0x17517a[_0x8b73('0x2f')]:_0x118ff0[_0x8b73('0x2a')];_0x17517a[_0x8b73('0x51')]=qs[_0x8b73('0x33')](_0x195987['query']['sort']);_0x17517a[_0x8b73('0x34')]=qs[_0x8b73('0x35')](_[_0x8b73('0x52')](_0x195987[_0x8b73('0x2d')],_0x118ff0[_0x8b73('0x35')]));if(_0x195987[_0x8b73('0x2d')][_0x8b73('0x36')]){_0x17517a[_0x8b73('0x34')]=_['merge'](_0x17517a[_0x8b73('0x34')],{'$or':_['map'](_0x17517a['attributes'],function(_0x5021a4){var _0x3839b9={};_0x3839b9[_0x5021a4]={'$like':'%'+_0x195987[_0x8b73('0x2d')][_0x8b73('0x36')]+'%'};return _0x3839b9;})});}_0x17517a=_[_0x8b73('0x37')]({},_0x17517a,_0x195987[_0x8b73('0x39')]);return _0x1df29c['getContacts'](_0x17517a);}})[_0x8b73('0x21')](function(_0x44ff80){if(_0x44ff80){_0x3e4f34=_0x44ff80['length'];if(!_0x195987[_0x8b73('0x2d')][_0x8b73('0x31')](_0x8b73('0x32'))){_0x17517a[_0x8b73('0x1b')]=qs[_0x8b73('0x1b')](_0x195987[_0x8b73('0x2d')]['limit']);_0x17517a[_0x8b73('0x1a')]=qs[_0x8b73('0x1a')](_0x195987[_0x8b73('0x2d')][_0x8b73('0x1a')]);}return _0x1df29c[_0x8b73('0x4f')](_0x17517a);}})['then'](function(_0x466299){if(_0x466299){return _0x466299?{'count':_0x3e4f34,'rows':_0x466299}:null;}})[_0x8b73('0x21')](respondWithResult(_0x3566d4,null))[_0x8b73('0x3c')](handleError(_0x3566d4,null));};
\ No newline at end of file
index 2a6b34f..21a514d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e94=['lodash','util','../../config/logger','bluebird','request-promise','path','./cmCompany.attributes','exports','define','CmCompany','cm_companies'];(function(_0x16c081,_0x31f3ad){var _0x14940c=function(_0x100075){while(--_0x100075){_0x16c081['push'](_0x16c081['shift']());}};_0x14940c(++_0x31f3ad);}(_0x2e94,0xe7));var _0x42e9=function(_0xc3325c,_0x1f54e8){_0xc3325c=_0xc3325c-0x0;var _0x19e806=_0x2e94[_0xc3325c];return _0x19e806;};'use strict';var _=require(_0x42e9('0x0'));var util=require(_0x42e9('0x1'));var logger=require(_0x42e9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x42e9('0x3'));var rp=require(_0x42e9('0x4'));var fs=require('fs');var path=require(_0x42e9('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x42e9('0x6'));module[_0x42e9('0x7')]=function(_0x4d3b53,_0x5cd3de){return _0x4d3b53[_0x42e9('0x8')](_0x42e9('0x9'),attributes,{'tableName':_0x42e9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff0c=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./cmCompany.attributes','define','cm_companies','util'];(function(_0x211da0,_0x37f342){var _0x2addfe=function(_0x328652){while(--_0x328652){_0x211da0['push'](_0x211da0['shift']());}};_0x2addfe(++_0x37f342);}(_0xff0c,0xe5));var _0xcff0=function(_0x5a7dd3,_0x26b7cf){_0x5a7dd3=_0x5a7dd3-0x0;var _0x2f4d07=_0xff0c[_0x5a7dd3];return _0x2f4d07;};'use strict';var _=require('lodash');var util=require(_0xcff0('0x0'));var logger=require(_0xcff0('0x1'))(_0xcff0('0x2'));var moment=require(_0xcff0('0x3'));var BPromise=require(_0xcff0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcff0('0x5'));var config=require(_0xcff0('0x6'));var attributes=require(_0xcff0('0x7'));module['exports']=function(_0x1f6bbc,_0x54ae74){return _0x1f6bbc[_0xcff0('0x8')]('CmCompany',attributes,{'tableName':_0xcff0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63e6fc0..26bc50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6839=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x6b4fb7,_0x165f64){var _0x437f48=function(_0x312287){while(--_0x312287){_0x6b4fb7['push'](_0x6b4fb7['shift']());}};_0x437f48(++_0x165f64);}(_0x6839,0x199));var _0x9683=function(_0x2d6df9,_0x45da50){_0x2d6df9=_0x2d6df9-0x0;var _0x429b18=_0x6839[_0x2d6df9];return _0x429b18;};'use strict';var _=require(_0x9683('0x0'));var util=require(_0x9683('0x1'));var moment=require(_0x9683('0x2'));var BPromise=require(_0x9683('0x3'));var rs=require(_0x9683('0x4'));var fs=require('fs');var Redis=require(_0x9683('0x5'));var db=require(_0x9683('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9683('0x7'))('rpc');var config=require(_0x9683('0x8'));var jayson=require(_0x9683('0x9'));var client=jayson[_0x9683('0xa')][_0x9683('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1da025,_0x103187,_0x2716fa){return new BPromise(function(_0x3e7ded,_0x18271f){return client['request'](_0x1da025,_0x2716fa)[_0x9683('0xc')](function(_0x4118f1){logger['info'](_0x9683('0xd'),_0x103187,_0x9683('0xe'));logger[_0x9683('0xf')](_0x9683('0x10'),_0x103187,'request\x20sent',JSON[_0x9683('0x11')](_0x4118f1));if(_0x4118f1[_0x9683('0x12')]){if(_0x4118f1['error'][_0x9683('0x13')]===0x1f4){logger[_0x9683('0x12')](_0x9683('0xd'),_0x103187,_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);return _0x18271f(_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);}logger[_0x9683('0x12')]('CmCompany,\x20%s,\x20%s',_0x103187,_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);return _0x3e7ded(_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);}else{logger[_0x9683('0x15')]('CmCompany,\x20%s,\x20%s',_0x103187,_0x9683('0xe'));_0x3e7ded(_0x4118f1['result'][_0x9683('0x14')]);}})[_0x9683('0x16')](function(_0x4a82b7){logger['error'](_0x9683('0xd'),_0x103187,_0x4a82b7);_0x18271f(_0x4a82b7);});});}
\ No newline at end of file
+var _0x327e=['../../config/logger','rpc','client','http','request','then','info','CmCompany,\x20%s,\x20%s','CmCompany,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x2640e5,_0x4cb2d5){var _0x87b465=function(_0x4ecb32){while(--_0x4ecb32){_0x2640e5['push'](_0x2640e5['shift']());}};_0x87b465(++_0x4cb2d5);}(_0x327e,0x1f1));var _0xe327=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x327e[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xe327('0x0'));var util=require(_0xe327('0x1'));var moment=require(_0xe327('0x2'));var BPromise=require(_0xe327('0x3'));var rs=require(_0xe327('0x4'));var fs=require('fs');var Redis=require(_0xe327('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe327('0x6'));var logger=require(_0xe327('0x7'))(_0xe327('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe327('0x9')][_0xe327('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a7afe,_0x2e3420,_0x33f7a6){return new BPromise(function(_0x2196c7,_0x2ea3ab){return client[_0xe327('0xb')](_0x4a7afe,_0x33f7a6)[_0xe327('0xc')](function(_0x19d322){logger[_0xe327('0xd')](_0xe327('0xe'),_0x2e3420,'request\x20sent');logger['debug'](_0xe327('0xf'),_0x2e3420,_0xe327('0x10'),JSON['stringify'](_0x19d322));if(_0x19d322[_0xe327('0x11')]){if(_0x19d322[_0xe327('0x11')][_0xe327('0x12')]===0x1f4){logger['error'](_0xe327('0xe'),_0x2e3420,_0x19d322['error']['message']);return _0x2ea3ab(_0x19d322[_0xe327('0x11')][_0xe327('0x13')]);}logger[_0xe327('0x11')](_0xe327('0xe'),_0x2e3420,_0x19d322[_0xe327('0x11')][_0xe327('0x13')]);return _0x2196c7(_0x19d322['error'][_0xe327('0x13')]);}else{logger[_0xe327('0xd')](_0xe327('0xe'),_0x2e3420,_0xe327('0x10'));_0x2196c7(_0x19d322['result'][_0xe327('0x13')]);}})[_0xe327('0x14')](function(_0x4680b8){logger[_0xe327('0x11')](_0xe327('0xe'),_0x2e3420,_0x4680b8);_0x2ea3ab(_0x4680b8);});});}
\ No newline at end of file
index 98c783d..5ee7778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47da=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','update','delete','destroy'];(function(_0x360392,_0x5ed142){var _0x9e2ce1=function(_0x5b56cd){while(--_0x5b56cd){_0x360392['push'](_0x360392['shift']());}};_0x9e2ce1(++_0x5ed142);}(_0x47da,0x195));var _0xa47d=function(_0x1d17c1,_0x4d2a96){_0x1d17c1=_0x1d17c1-0x0;var _0x254470=_0x47da[_0x1d17c1];return _0x254470;};'use strict';var multer=require(_0xa47d('0x0'));var util=require(_0xa47d('0x1'));var path=require(_0xa47d('0x2'));var timeout=require(_0xa47d('0x3'));var express=require(_0xa47d('0x4'));var router=express[_0xa47d('0x5')]();var fs_extra=require(_0xa47d('0x6'));var auth=require(_0xa47d('0x7'));var interaction=require(_0xa47d('0x8'));var config=require(_0xa47d('0x9'));var controller=require(_0xa47d('0xa'));router[_0xa47d('0xb')]('/',auth[_0xa47d('0xc')](),controller[_0xa47d('0xd')]);router[_0xa47d('0xb')](_0xa47d('0xe'),auth[_0xa47d('0xc')](),controller[_0xa47d('0xf')]);router[_0xa47d('0xb')](_0xa47d('0x10'),auth['isAuthenticated'](),controller[_0xa47d('0x11')]);router[_0xa47d('0xb')](_0xa47d('0x12'),auth[_0xa47d('0xc')](),controller[_0xa47d('0x13')]);router[_0xa47d('0x14')]('/',auth[_0xa47d('0xc')](),controller[_0xa47d('0x15')]);router['post'](_0xa47d('0x12'),auth[_0xa47d('0xc')](),controller[_0xa47d('0x16')]);router[_0xa47d('0x17')](_0xa47d('0x10'),auth['isAuthenticated'](),controller[_0xa47d('0x18')]);router[_0xa47d('0x19')](_0xa47d('0x10'),auth['isAuthenticated'](),controller[_0xa47d('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x4799=['/:id/contacts','getContacts','post','create','addContacts','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show'];(function(_0xc18afe,_0x2e94a0){var _0x1b6c13=function(_0x7d87b5){while(--_0x7d87b5){_0xc18afe['push'](_0xc18afe['shift']());}};_0x1b6c13(++_0x2e94a0);}(_0x4799,0x191));var _0x9479=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x4799[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0x9479('0x0'));var util=require(_0x9479('0x1'));var path=require('path');var timeout=require(_0x9479('0x2'));var express=require(_0x9479('0x3'));var router=express[_0x9479('0x4')]();var fs_extra=require(_0x9479('0x5'));var auth=require(_0x9479('0x6'));var interaction=require(_0x9479('0x7'));var config=require(_0x9479('0x8'));var controller=require('./cmCompany.controller');router[_0x9479('0x9')]('/',auth['isAuthenticated'](),controller[_0x9479('0xa')]);router[_0x9479('0x9')](_0x9479('0xb'),auth[_0x9479('0xc')](),controller[_0x9479('0xd')]);router[_0x9479('0x9')]('/:id',auth[_0x9479('0xc')](),controller[_0x9479('0xe')]);router[_0x9479('0x9')](_0x9479('0xf'),auth[_0x9479('0xc')](),controller[_0x9479('0x10')]);router[_0x9479('0x11')]('/',auth[_0x9479('0xc')](),controller[_0x9479('0x12')]);router[_0x9479('0x11')](_0x9479('0xf'),auth[_0x9479('0xc')](),controller[_0x9479('0x13')]);router[_0x9479('0x14')](_0x9479('0x15'),auth[_0x9479('0xc')](),controller[_0x9479('0x16')]);router[_0x9479('0x17')](_0x9479('0x15'),auth[_0x9479('0xc')](),controller[_0x9479('0x18')]);module[_0x9479('0x19')]=router;
\ No newline at end of file
index abc3304..01b30a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cbb=['sequelize','STRING','INTEGER','UNSIGNED','DATE','NOW','lodash'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x1cbb,0x164));var _0xb1cb=function(_0x5d5852,_0x48a3de){_0x5d5852=_0x5d5852-0x0;var _0x2efcec=_0x1cbb[_0x5d5852];return _0x2efcec;};'use strict';var _=require(_0xb1cb('0x0'));var Sequelize=require(_0xb1cb('0x1'));module['exports']={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xb1cb('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xb1cb('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xb1cb('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xb1cb('0x2')]},'fax':{'type':Sequelize[_0xb1cb('0x2')]},'email':{'type':Sequelize[_0xb1cb('0x2')]},'url':{'type':Sequelize[_0xb1cb('0x2')]},'facebook':{'type':Sequelize[_0xb1cb('0x2')]},'fb_data':{'type':Sequelize[_0xb1cb('0x2')]},'twitter':{'type':Sequelize[_0xb1cb('0x2')]},'skype':{'type':Sequelize[_0xb1cb('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xb1cb('0x2')]},'wechat':{'type':Sequelize[_0xb1cb('0x2')]},'telegram':{'type':Sequelize[_0xb1cb('0x2')]},'UserId':{'type':Sequelize[_0xb1cb('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xb1cb('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xb1cb('0x5')],'defaultValue':Sequelize[_0xb1cb('0x6')]}};
\ No newline at end of file
+var _0x6bec=['STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','sequelize','exports'];(function(_0x1c7ecc,_0x3e27ac){var _0x3e8b9e=function(_0x2dae95){while(--_0x2dae95){_0x1c7ecc['push'](_0x1c7ecc['shift']());}};_0x3e8b9e(++_0x3e27ac);}(_0x6bec,0x76));var _0xc6be=function(_0x68d1aa,_0x4fbc52){_0x68d1aa=_0x68d1aa-0x0;var _0x5a5f4b=_0x6bec[_0x68d1aa];return _0x5a5f4b;};'use strict';var _=require('lodash');var Sequelize=require(_0xc6be('0x0'));module[_0xc6be('0x1')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xc6be('0x2')]},'postalCode':{'type':Sequelize[_0xc6be('0x2')]},'city':{'type':Sequelize[_0xc6be('0x2')]},'country':{'type':Sequelize[_0xc6be('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc6be('0x3')]},'phone':{'type':Sequelize[_0xc6be('0x2')]},'mobile':{'type':Sequelize[_0xc6be('0x2')]},'fax':{'type':Sequelize[_0xc6be('0x2')]},'email':{'type':Sequelize[_0xc6be('0x2')]},'url':{'type':Sequelize[_0xc6be('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xc6be('0x2')]},'twitter':{'type':Sequelize[_0xc6be('0x2')]},'skype':{'type':Sequelize[_0xc6be('0x2')]},'teams':{'type':Sequelize[_0xc6be('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xc6be('0x2')]},'wechat':{'type':Sequelize[_0xc6be('0x2')]},'telegram':{'type':Sequelize[_0xc6be('0x2')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0xc6be('0x4')](0x2)[_0xc6be('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xc6be('0x6')],'defaultValue':Sequelize[_0xc6be('0x7')]}};
\ No newline at end of file
index 4011c3a..46f0a72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2422=['customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','flatten','sortBy','reverse','slice','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','end','error','name','index','CmContact','describe','then','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','type','model','filters','query','attributes','intersection','fields','nolimit','order','sort','where','pick','select','color','from','tools_tags','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','sqlOperator','conditions','find','field','Tag','value','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','castTo','text','start','map','hasOwnProperty','filter','isNil','Contact','isEmpty','ListId','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','keyBy','c.lastName','c.phone','c.mobile','c.fax','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','params','catch','displayName','findAll','columnName','alias','custom','values','body','get','mergeWith','isArray','tags','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','bulkCreate','duplicates','$or','findOrCreate','spread','show','cf_%d','omit','pickBy','format','table','cm_contacts','id\x20=\x20?','toParam','phone','getTags','merge','setTags','ids','getHoppers','rawAttributes','ContactId','includeAll','include','getHopperHistories','getHopperFinals','options','getJscriptySessions','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','socket_timestamp','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','binding_values','CompanyId','pid','createReadStream','file','parse','meta','import','binding','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','getJourney','mail','chat','sms','openchannel','whatsapp','voice','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','destination','starttime','endtime','duration','createdAt','userDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','startCase','Website','note','disposition','secondDisposition','Owner','browserName'];(function(_0x364a36,_0x1e2677){var _0x5cd6fa=function(_0x58d692){while(--_0x58d692){_0x364a36['push'](_0x364a36['shift']());}};_0x5cd6fa(++_0x1e2677);}(_0x2422,0x143));var _0x2242=function(_0x3cca86,_0x364bc7){_0x3cca86=_0x3cca86-0x0;var _0x4709b2=_0x2422[_0x3cca86];return _0x4709b2;};'use strict';var emlformat=require(_0x2242('0x0'));var rimraf=require(_0x2242('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2242('0x2'));var rp=require(_0x2242('0x3'));var moment=require('moment');var BPromise=require(_0x2242('0x4'));var Mustache=require(_0x2242('0x5'));var util=require(_0x2242('0x6'));var path=require(_0x2242('0x7'));var sox=require(_0x2242('0x8'));var csv=require(_0x2242('0x9'));var ejs=require(_0x2242('0xa'));var fs=require('fs');var fs_extra=require(_0x2242('0xb'));var _=require(_0x2242('0xc'));var squel=require(_0x2242('0xd'));var crypto=require(_0x2242('0xe'));var jsforce=require(_0x2242('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2242('0x9'));var querystring=require(_0x2242('0x10'));var Papa=require(_0x2242('0x11'));var Redis=require(_0x2242('0x12'));var authService=require(_0x2242('0x13'));var qs=require(_0x2242('0x14'));var as=require(_0x2242('0x15'));var hardwareService=require(_0x2242('0x16'));var logger=require(_0x2242('0x17'))(_0x2242('0x18'));var utils=require('../../config/utils');var config=require(_0x2242('0x19'));var licenseUtil=require(_0x2242('0x1a'));var db=require(_0x2242('0x1b'))['db'];config[_0x2242('0x1c')]=_[_0x2242('0x1d')](config[_0x2242('0x1c')],{'host':_0x2242('0x1e'),'port':0x18eb});var socket=require(_0x2242('0x1f'))(new Redis(config[_0x2242('0x1c')]));require(_0x2242('0x20'))[_0x2242('0x21')](socket);function respondWithStatusCode(_0x30cf85,_0x2124c1){_0x2124c1=_0x2124c1||0xcc;return function(_0x4c536a){if(_0x4c536a){return _0x30cf85[_0x2242('0x22')](_0x2124c1);}return _0x30cf85[_0x2242('0x23')](_0x2124c1)['end']();};}function respondWithResult(_0x4638cd,_0x481a7f){_0x481a7f=_0x481a7f||0xc8;return function(_0x3b12c2){if(_0x3b12c2){return _0x4638cd[_0x2242('0x23')](_0x481a7f)['json'](_0x3b12c2);}};}function respondWithFilteredResult(_0x26753a,_0x3768ee){return function(_0x4be9c6){if(_0x4be9c6){var _0x1fdbf9=typeof _0x3768ee[_0x2242('0x24')]===_0x2242('0x25')&&typeof _0x3768ee[_0x2242('0x26')]==='undefined';var _0x393db6=_0x4be9c6[_0x2242('0x27')];var _0x7463a0=_0x1fdbf9?0x0:_0x3768ee[_0x2242('0x24')];var _0xa69c2=_0x1fdbf9?_0x4be9c6['count']:_0x3768ee[_0x2242('0x24')]+_0x3768ee[_0x2242('0x26')];var _0x581e21;if(_0xa69c2>=_0x393db6){_0xa69c2=_0x393db6;_0x581e21=0xc8;}else{_0x581e21=0xce;}_0x26753a[_0x2242('0x23')](_0x581e21);return _0x26753a[_0x2242('0x28')](_0x2242('0x29'),_0x7463a0+'-'+_0xa69c2+'/'+_0x393db6)[_0x2242('0x2a')](_0x4be9c6);}return null;};}function patchUpdates(_0x2f9db6){return function(_0x2c2b86){try{jsonpatch[_0x2242('0x2b')](_0x2c2b86,_0x2f9db6,!![]);}catch(_0x240b61){return BPromise[_0x2242('0x2c')](_0x240b61);}return _0x2c2b86[_0x2242('0x2d')]();};}function saveUpdates(_0x51271d,_0x467d7f){return function(_0x55acdd){if(_0x55acdd){return _0x55acdd[_0x2242('0x2e')](_0x51271d)['then'](function(_0x285805){return _0x285805;});}return null;};}function removeEntity(_0x1a6b50,_0x326945){return function(_0x335b3c){if(_0x335b3c){return _0x335b3c[_0x2242('0x2f')]()['then'](function(){_0x1a6b50[_0x2242('0x23')](0xcc)[_0x2242('0x30')]();});}};}function handleEntityNotFound(_0x9350a8,_0x189075){return function(_0x715ca2){if(!_0x715ca2){_0x9350a8['sendStatus'](0x194);}return _0x715ca2;};}function handleError(_0x3e8c97,_0x38c127){_0x38c127=_0x38c127||0x1f4;return function(_0x4b37d6){logger[_0x2242('0x31')](_0x4b37d6['stack']);if(_0x4b37d6[_0x2242('0x32')]){delete _0x4b37d6['name'];}_0x3e8c97[_0x2242('0x23')](_0x38c127)['send'](_0x4b37d6);};}exports[_0x2242('0x33')]=function(_0x2cd76d,_0x12a68a){var _0x42da9a={},_0x263b3b={},_0x360cda={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x35')]()[_0x2242('0x36')](function(_0x2df5e0){var _0x1f4ae9=[];for(var _0x1a597e=0x0;_0x1a597e<Object[_0x2242('0x37')](_0x2df5e0)[_0x2242('0x38')];_0x1a597e++){var _0x1e7d6e=Object[_0x2242('0x37')](_0x2df5e0)[_0x1a597e];if(_[_0x2242('0x39')](_0x1e7d6e,_0x2242('0x3a'))){_0x1f4ae9[_0x2242('0x3b')](db[_0x2242('0x3c')][_0x2242('0x3d')]({'where':{'id':_[_0x2242('0x3e')](_0x1e7d6e,_0x2242('0x3a'))},'raw':!![]}));}}return BPromise[_0x2242('0x3f')](_0x1f4ae9)[_0x2242('0x36')](function(_0x15c828){for(var _0x410d8a=0x0;_0x410d8a<_0x15c828['length'];_0x410d8a++){if(_0x15c828[_0x410d8a]){var _0x27220a='cf_'+_0x15c828[_0x410d8a]['id'];var _0x4a19fa=_0x2df5e0[_0x27220a];_0x4a19fa[_0x2242('0x40')]=_0x15c828[_0x410d8a][_0x2242('0x41')];}}return _0x2df5e0;});})['then'](function(_0x3c065b){_0x263b3b[_0x2242('0x42')]=_[_0x2242('0x37')](_0x3c065b);_0x263b3b['query']=_[_0x2242('0x37')](_0x2cd76d['query']);_0x263b3b[_0x2242('0x43')]=_['intersection'](_0x263b3b[_0x2242('0x42')],_0x263b3b[_0x2242('0x44')]);_0x42da9a[_0x2242('0x45')]=_[_0x2242('0x46')](_0x263b3b[_0x2242('0x42')],qs[_0x2242('0x47')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x47')]));_0x42da9a['attributes']=_0x42da9a[_0x2242('0x45')][_0x2242('0x38')]?_0x42da9a[_0x2242('0x45')]:_0x263b3b[_0x2242('0x42')];if(!_0x2cd76d[_0x2242('0x44')]['hasOwnProperty'](_0x2242('0x48'))){_0x42da9a[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x2cd76d['query'][_0x2242('0x26')]);_0x42da9a['offset']=qs[_0x2242('0x24')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x24')]);}_0x42da9a[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x4a')]);_0x42da9a[_0x2242('0x4b')]=qs['filters'](_[_0x2242('0x4c')](_0x2cd76d[_0x2242('0x44')],_0x263b3b[_0x2242('0x43')]),_0x3c065b);var _0x5782bc=[];var _0x80025a=squel[_0x2242('0x4d')]()['field']('id')['field'](_0x2242('0x32'))['field'](_0x2242('0x4e'))[_0x2242('0x4f')](_0x2242('0x50'));var _0x2b22b3=squel[_0x2242('0x4d')]()[_0x2242('0x4f')]('cm_contacts','c')[_0x2242('0x51')](_0x2242('0x52'),'uc',_0x2242('0x53'))[_0x2242('0x51')]('cm_contact_has_tags','ct',_0x2242('0x54'))['left_join']('tools_tags','t',_0x2242('0x55'))['where'](_0x2242('0x56'));var _0x849bf0=squel[_0x2242('0x57')]();var _0x3bb3d7=[];var _0x382e68=squel[_0x2242('0x57')]();var _0x5f1e5e;if(_0x2cd76d[_0x2242('0x44')]['search']){_0x5f1e5e=as[_0x2242('0x58')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x59')]);var _0x231d52=_0x5f1e5e[_0x2242('0x5a')];for(var _0x13b272=0x0;_0x13b272<_0x5f1e5e['conditions'][_0x2242('0x38')];_0x13b272++){var _0x4c5515=_0x5f1e5e[_0x2242('0x5b')][_0x13b272];var _0x12ca51='c';var _0x1dc495=_(_0x3c065b)[_0x2242('0x37')]()[_0x2242('0x5c')](function(_0xb36fd2){return _0xb36fd2===_0x4c5515['field'];});if(_0x1dc495)_0x1dc495=_0x3c065b[_0x4c5515[_0x2242('0x5d')]];if(!_0x1dc495){if(_0x4c5515[_0x2242('0x5d')]===_0x2242('0x5e')){var _0x389e8c=_0x4c5515[_0x2242('0x5f')][_0x2242('0x60')](',')['map'](function(_0x4e710b){return Number(_0x4e710b);});_0x389e8c[_0x2242('0x61')](function(_0x51e81b){_0x382e68['or'](_0x2242('0x62'),'%,'+_0x51e81b+',%');});_0x3bb3d7=_[_0x2242('0x63')](_0x3bb3d7,_0x389e8c);}else if(_0x4c5515[_0x2242('0x5d')]===_0x2242('0x64')){_0x849bf0[_0x2242('0x65')](_0x2242('0x66'),_0x4c5515['value']);}}else{if(_0x4c5515['field']===_0x2242('0x67')||_0x1dc495['fieldType']==='datetime')_0x4c5515[_0x2242('0x68')]='DATE';var _0xba13ef=as['buildExpression'](_0x12ca51,_0x1dc495[_0x2242('0x41')],_0x4c5515);_0x849bf0[_0x231d52](_0xba13ef[_0x2242('0x69')],_0xba13ef[_0x2242('0x5f')][_0x2242('0x6a')],_0xba13ef['value'][_0x2242('0x30')]);}}}else{var _0x2b8cf9=_(Object['keys'](_0x2cd76d[_0x2242('0x44')]))[_0x2242('0x6b')](function(_0x318ae4){return _0x3c065b[_0x2242('0x6c')](_0x318ae4)?_0x318ae4:undefined;})[_0x2242('0x6d')](function(_0x489f30){return!_[_0x2242('0x6e')](_0x489f30);})[_0x2242('0x5f')]();if(_0x2cd76d[_0x2242('0x44')][_0x2242('0x6f')])_0x2b8cf9[_0x2242('0x3b')]('Contact');if(!_[_0x2242('0x70')](_0x2b8cf9)){_0x2b8cf9[_0x2242('0x61')](function(_0x452c57){if(_0x452c57===_0x2242('0x71')){_0x2b22b3[_0x2242('0x4b')]('c.ListId\x20IN\x20?',[][_0x2242('0x72')](_0x2cd76d['query'][_0x452c57]));}else if(_0x452c57==='Contact'){var _0x5ec0b7='%'+_0x2cd76d[_0x2242('0x44')][_0x452c57]+'%';_0x2b22b3[_0x2242('0x4b')](_0x2242('0x73'),_0x5ec0b7);}else{_0x2b22b3[_0x2242('0x4b')]('c.'+_0x452c57+'\x20=\x20?',_0x2cd76d[_0x2242('0x44')][_0x452c57]);}});}if(_0x2cd76d[_0x2242('0x44')]['tag']){_0x3bb3d7=_['isArray'](_0x2cd76d['query']['tag'])?_0x2cd76d['query'][_0x2242('0x74')]:new Array(_0x2cd76d[_0x2242('0x44')][_0x2242('0x74')]);_0x3bb3d7[_0x2242('0x61')](function(_0x1a3551){_0x382e68['or'](_0x2242('0x62'),'%,'+_0x1a3551+',%');});}if(_0x2cd76d[_0x2242('0x44')][_0x2242('0x6d')]){var _0x4bddca=_0x2cd76d[_0x2242('0x44')][_0x2242('0x6d')][_0x2242('0x75')]('\x5c','\x5c\x5c')[_0x2242('0x75')](/'/g,'\x27\x27');if(_0x4bddca[_0x2242('0x60')]('\x20')[_0x2242('0x38')]>0x1){_0x849bf0['or'](_0x2242('0x76'),qs['getFullTextValue'](_0x4bddca),null);}else{if(qs[_0x2242('0x77')](_0x4bddca)){_0x849bf0['or'](_0x2242('0x78'),_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x79'),_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x7a'),_0x4bddca+'%');_0x849bf0['or']('c.fax\x20LIKE\x20?',_0x4bddca+'%');}else if(qs['isEmail'](_0x4bddca)){_0x849bf0['or'](_0x2242('0x7b'),_0x4bddca+'%');}else{_0x849bf0['or']('c.firstName\x20LIKE\x20?','%'+_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x7c'),'%'+_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x7b'),'%'+_0x4bddca+'%');}}}}_0x2b22b3[_0x2242('0x4b')](_0x849bf0);_0x2b22b3[_0x2242('0x7d')](_0x2242('0x7e'));var _0x51da95={'type':db[_0x2242('0x7f')][_0x2242('0x80')][_0x2242('0x81')],'raw':!![]};var _0x54d71e=_0x2b22b3[_0x2242('0x82')]()['field'](_0x2242('0x7e'));if(_0x42da9a[_0x2242('0x49')]){_0x42da9a[_0x2242('0x49')]['forEach'](function(_0x587bf9){_0x2b22b3[_0x2242('0x49')]('c.'+_0x587bf9[0x0],_0x587bf9[0x1]===_0x2242('0x83')?![]:!![]);});}if(!_[_0x2242('0x70')](_0x3bb3d7)){_0x2b22b3[_0x2242('0x84')](_0x382e68);_0x54d71e[_0x2242('0x4b')](_0x2242('0x85'),_0x3bb3d7);}BPromise[_0x2242('0x86')]()[_0x2242('0x36')](function(){if(!_0x5f1e5e)return;if(_0x2cd76d[_0x2242('0x87')][_0x2242('0x88')]!==_0x2242('0x89'))return;if(!_['some'](_0x5f1e5e[_0x2242('0x5b')],[_0x2242('0x5d'),'User'])){return _0x2cd76d['user'][_0x2242('0x8a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x1a19e5){if(_[_0x2242('0x70')](_0x1a19e5)){_0x54d71e['where'](_0x2242('0x8b'));_0x2b22b3['where'](_0x2242('0x8b'));}else{_0x54d71e[_0x2242('0x4b')](_0x2242('0x8c'),_[_0x2242('0x6b')](_0x1a19e5,'id'));_0x2b22b3['where'](_0x2242('0x8c'),_[_0x2242('0x6b')](_0x1a19e5,'id'));}});}})[_0x2242('0x36')](function(){if(_0x2cd76d['user'][_0x2242('0x88')]===_0x2242('0x89')&&!_0x5f1e5e&&!_0x2cd76d[_0x2242('0x44')][_0x2242('0x71')])return[];return db[_0x2242('0x8d')][_0x2242('0x44')](_0x54d71e[_0x2242('0x8e')](),_0x51da95);})['then'](function(_0x51dd9e){_0x360cda[_0x2242('0x27')]=_0x51dd9e['length'];if(_0x360cda[_0x2242('0x27')]===0x0)return[];return db[_0x2242('0x8d')][_0x2242('0x44')](_0x80025a[_0x2242('0x8e')](),_0x51da95)[_0x2242('0x36')](function(_0x482f2a){_0x5782bc=_[_0x2242('0x8f')](_0x482f2a,'id');_0x51da95=_['merge'](_0x51da95,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2cd76d[_0x2242('0x44')][_0x2242('0x47')]){_0x42da9a[_0x2242('0x45')][_0x2242('0x61')](function(_0x3fdcb){_0x2b22b3[_0x2242('0x5d')]('c.'+_0x3fdcb);});}else{_0x2b22b3['field']('c.id');_0x2b22b3['field']('c.firstName');_0x2b22b3[_0x2242('0x5d')](_0x2242('0x90'));_0x2b22b3['field'](_0x2242('0x91'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x92'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x93'));_0x2b22b3['field']('c.email');_0x2b22b3[_0x2242('0x5d')](_0x2242('0x94'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x95'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x96'));_0x2b22b3['field'](_0x2242('0x97'));_0x2b22b3['field'](_0x2242('0x98'),'TagIds');}if(_0x42da9a[_0x2242('0x26')])_0x2b22b3['limit'](_0x42da9a[_0x2242('0x26')]);if(_0x42da9a[_0x2242('0x24')])_0x2b22b3[_0x2242('0x24')](_0x42da9a[_0x2242('0x24')]);return db[_0x2242('0x8d')]['query'](_0x2b22b3[_0x2242('0x8e')](),_0x51da95);});})[_0x2242('0x36')](function(_0x4b8da3){_0x4b8da3[_0x2242('0x61')](function(_0x2586fa){if(_0x2586fa[_0x2242('0x99')]){_0x2586fa[_0x2242('0x9a')]=[];_0x2586fa[_0x2242('0x99')][_0x2242('0x60')](',')['forEach'](function(_0x557cba){_0x2586fa[_0x2242('0x9a')][_0x2242('0x3b')](_0x5782bc[_0x557cba]);});}delete _0x2586fa[_0x2242('0x99')];});_0x360cda[_0x2242('0x9b')]=_0x4b8da3;return _0x360cda;})[_0x2242('0x36')](respondWithFilteredResult(_0x12a68a,_0x42da9a));})['catch'](handleError(_0x12a68a,null));};exports[_0x2242('0x2f')]=function(_0x184b51,_0x28cfc8){return db['CmContact'][_0x2242('0x5c')]({'where':{'id':_0x184b51[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x28cfc8,null))[_0x2242('0x36')](removeEntity(_0x28cfc8,null))[_0x2242('0x9d')](handleError(_0x28cfc8,null));};exports[_0x2242('0x35')]=function(_0x3fcbe2,_0xef83dc){return db[_0x2242('0x34')][_0x2242('0x35')]()['then'](function(_0x960a0a){delete _0x960a0a['tags'];for(var _0x1a7dcd=0x0;_0x1a7dcd<Object[_0x2242('0x37')](_0x960a0a)[_0x2242('0x38')];_0x1a7dcd++){var _0x3e688c=Object[_0x2242('0x37')](_0x960a0a)[_0x1a7dcd];if(!_[_0x2242('0x39')](_0x3e688c,_0x2242('0x3a'))){_0x960a0a[_0x3e688c]['columnName']=_0x3e688c;_0x960a0a[_0x3e688c][_0x2242('0x9e')]=_0x3e688c;}}return _0x960a0a;})[_0x2242('0x36')](function(_0x491598){var _0x1c67eb={'where':{'$or':[{'ListId':_0x3fcbe2[_0x2242('0x44')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x2242('0x3c')][_0x2242('0x9f')](_0x1c67eb)['then'](function(_0x216cdc){for(var _0x5e2834=0x0;_0x5e2834<_0x216cdc[_0x2242('0x38')];_0x5e2834++){var _0x4c7a53=_0x2242('0x3a')+_0x216cdc[_0x5e2834]['id'];_0x491598[_0x4c7a53][_0x2242('0xa0')]=_0x4c7a53;_0x491598[_0x4c7a53]['displayName']=_0x216cdc[_0x5e2834][_0x2242('0xa1')];_0x491598[_0x4c7a53][_0x2242('0xa2')]={'type':_0x216cdc[_0x5e2834][_0x2242('0x41')],'values':_0x216cdc[_0x5e2834][_0x2242('0xa3')]};}Object['keys'](_0x491598)[_0x2242('0x61')](function(_0x4d13d1){if(!_0x491598[_0x4d13d1][_0x2242('0x6c')](_0x2242('0xa0'))){delete _0x491598[_0x4d13d1];}});return _0x491598;});})[_0x2242('0x36')](respondWithResult(_0xef83dc,null))[_0x2242('0x9d')](handleError(_0xef83dc,null));};exports['merge']=function(_0x418a3b,_0x3e89a9){var _0x3724fd;var _0x5746cb;var _0x555232;if(_0x418a3b[_0x2242('0xa4')]['id']){delete _0x418a3b[_0x2242('0xa4')]['id'];}return db[_0x2242('0x34')][_0x2242('0x9f')]({'where':{'id':[_0x418a3b[_0x2242('0xa4')]['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}})[_0x2242('0x36')](function(_0x28d215){if(_0x28d215){if(_0x28d215[_0x2242('0x38')]!==0x2){return null;}_0x28d215[0x0]=_0x28d215[0x0][_0x2242('0xa5')]({'plain':!![]});_0x28d215[0x1]=_0x28d215[0x1][_0x2242('0xa5')]({'plain':!![]});delete _0x28d215[0x0]['id'];delete _0x28d215[0x1]['id'];return _[_0x2242('0xa6')](_0x28d215[0x0],_0x28d215[0x1],function(_0x416918,_0x31ee38){if(Array[_0x2242('0xa7')](_0x31ee38)&&!_0x31ee38[_0x2242('0x38')]){return _0x416918;}else if(!_0x31ee38){return _0x416918;}});}})[_0x2242('0x36')](handleEntityNotFound(_0x3e89a9,null))['then'](function(_0x185235){if(_0x185235){if(_0x185235[_0x2242('0xa8')]&&_['isArray'](_0x185235[_0x2242('0xa8')])){_0x185235[_0x2242('0xa8')]=_0x185235[_0x2242('0xa8')][_0x2242('0xa9')]();}logger[_0x2242('0xaa')](_0x2242('0xab'),_0x418a3b[_0x2242('0xa4')]['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]);return db[_0x2242('0xac')]['destroy']({'where':{'ContactId':[_0x418a3b[_0x2242('0xa4')]['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}})[_0x2242('0x36')](function(_0x32160a){logger['info'](_0x2242('0xad'),_0x32160a);return db[_0x2242('0xae')][_0x2242('0x2f')]({'where':{'ContactId':[_0x418a3b['body']['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}})[_0x2242('0x36')](function(_0x2e7f11){logger['info']('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x2e7f11);return db[_0x2242('0x34')][_0x2242('0xaf')](_0x185235);});});}})[_0x2242('0x36')](function(_0x957c60){if(_0x957c60){_0x3724fd=_0x957c60;_0x5746cb={'ContactId':_0x3724fd['id']};_0x555232={'where':{'ContactId':[_0x418a3b['body']['to'],_0x418a3b[_0x2242('0xa4')]['from']]}};return db[_0x2242('0xb0')]['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb1')]['update'](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xb2')]['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db['MailInteraction'][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb3')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db['MailInteraction']['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb3')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db['SmsInteraction'][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb4')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xb5')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb6')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb7')]['update'](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db['OpenchannelMessage']['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb8')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb9')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xba')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xbb')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xbc')]['update'](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xbd')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xbe')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xbf')]['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xc0')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xc1')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xc2')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db['WhatsappMessage'][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xc3')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0x34')][_0x2242('0x2f')]({'where':{'id':[_0x418a3b['body']['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}});}})[_0x2242('0x36')](function(){if(_0x3724fd){return _0x3724fd;}})['then'](respondWithResult(_0x3e89a9,null))['catch'](handleError(_0x3e89a9,null));};exports[_0x2242('0xaf')]=function(_0x35a749,_0x48ca85){return db[_0x2242('0x34')]['describe']()['then'](function(_0x1f9d14){if(_0x35a749[_0x2242('0xa4')][_0x2242('0xa8')]&&_[_0x2242('0xa7')](_0x35a749[_0x2242('0xa4')]['tags'])){if(_0x35a749[_0x2242('0xa4')]['tags']['length']){_0x35a749['body']['tags']=_0x35a749[_0x2242('0xa4')]['tags'][_0x2242('0xa9')](';')+';';}else{_0x35a749[_0x2242('0xa4')]['tags']=null;}}else{_0x35a749['body'][_0x2242('0xa8')]=null;}return db[_0x2242('0x34')][_0x2242('0xaf')](_0x35a749['body'],{'fields':_[_0x2242('0x37')](_0x1f9d14),'raw':!![]});})['then'](respondWithResult(_0x48ca85,0xc9))['catch'](handleError(_0x48ca85,null));};exports[_0x2242('0xc4')]=function(_0xcc8e4c,_0x298944){var _0x57a192=[];var _0x5e2473=0x0;var _0x5463c1=0x0;var _0x24421d=0x0;return db[_0x2242('0x34')][_0x2242('0x35')]()[_0x2242('0x36')](function(_0xc53f71){return BPromise['each'](_0xcc8e4c['body'],function(_0x17c8c9){var _0x344aff={'where':{'$or':[]},'defaults':_0x17c8c9,'fields':_[_0x2242('0x37')](_0xc53f71),'raw':!![]};if(_0x17c8c9[_0x2242('0xc5')]){for(var _0x5c97d7=0x0;_0x5c97d7<_0x17c8c9[_0x2242('0xc5')][_0x2242('0x38')];_0x5c97d7++){var _0x367245={};_0x367245[_0x17c8c9[_0x2242('0xc5')][_0x5c97d7]]=_0x17c8c9[_0x17c8c9[_0x2242('0xc5')][_0x5c97d7]];_0x344aff[_0x2242('0x4b')][_0x2242('0xc6')][_0x2242('0x3b')](_0x367245);}_0x344aff[_0x2242('0x4b')][_0x2242('0x71')]=_0x17c8c9['ListId'];}return db[_0x2242('0x34')][_0x2242('0xc7')](_0x344aff)[_0x2242('0xc8')](function(_0x2290c5,_0x5f0a15){if(_0x5f0a15){_0x5e2473++;}else{_0x24421d++;}})[_0x2242('0x9d')](function(_0x3f0f4b){console[_0x2242('0x31')](_0x3f0f4b);_0x5463c1++;});});})[_0x2242('0x36')](function(_0x57a1ee){if(_0x57a1ee){return{'success':_0x5e2473,'failure':_0x5463c1,'duplicates':_0x24421d};}})[_0x2242('0x36')](respondWithResult(_0x298944,0xc9))[_0x2242('0x9d')](handleError(_0x298944,null));};exports[_0x2242('0xc9')]=function(_0x357349,_0x238487,_0x53d5ba){var _0x5a2073;return db[_0x2242('0x34')][_0x2242('0x35')]()[_0x2242('0x36')](function(_0x28a601){return db[_0x2242('0x34')]['find']({'where':{'id':_0x357349['params']['id']},'include':[{'model':db[_0x2242('0x5e')],'as':_0x2242('0x9a'),'attributes':['id',_0x2242('0x32'),_0x2242('0x4e')],'required':_0x357349[_0x2242('0x44')][_0x2242('0x74')]?!![]:![]}],'attributes':_[_0x2242('0x37')](_0x28a601)});})['then'](function(_0x409c4a){_0x5a2073=_0x409c4a[_0x2242('0xa5')]({'plain':!![]});var _0x3f75ab={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x409c4a&&_0x409c4a[_0x2242('0x71')]){if(_0x409c4a[_0x2242('0x71')]){_0x3f75ab[_0x2242('0x4b')]['$and'][_0x2242('0x3b')]({'ListId':{'$ne':_0x409c4a[_0x2242('0x71')]}});}}return db[_0x2242('0x3c')]['findAll'](_0x3f75ab);})[_0x2242('0x36')](function(_0x840ea6){return _['omit'](_0x5a2073,_[_0x2242('0x6b')](_0x840ea6,function(_0x3984f2){return util['format'](_0x2242('0xca'),_0x3984f2['id']);}));})[_0x2242('0x36')](handleEntityNotFound(_0x238487,null))[_0x2242('0x36')](respondWithResult(_0x238487,null))['catch'](handleError(_0x238487,null));};exports[_0x2242('0x2e')]=function(_0x5e3029,_0x510552){var _0x242d48;if(_0x5e3029[_0x2242('0xa4')]['id']){delete _0x5e3029[_0x2242('0xa4')]['id'];}return db['CmContact'][_0x2242('0x5c')]({'where':{'id':_0x5e3029[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x510552,null))[_0x2242('0x36')](saveUpdates(_0x5e3029[_0x2242('0xa4')],null))['then'](function(_0x2f4a7f){_0x242d48=_0x2f4a7f;var _0x150729={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2f4a7f&&_0x2f4a7f[_0x2242('0x71')]){if(_0x2f4a7f[_0x2242('0x71')]){_0x150729['where']['$and'][_0x2242('0x3b')]({'ListId':{'$ne':_0x2f4a7f[_0x2242('0x71')]}});}}return db[_0x2242('0x3c')]['findAll'](_0x150729);})[_0x2242('0x36')](function(_0x2ddac4){if(_0x2ddac4){return _[_0x2242('0xcb')](_[_0x2242('0xcc')](_0x5e3029[_0x2242('0xa4')],function(_0x1208ad,_0x3fd0a5){return _[_0x2242('0x39')](_0x3fd0a5,'cf_');}),_[_0x2242('0x6b')](_0x2ddac4,function(_0x13e7f8){return util[_0x2242('0xcd')](_0x2242('0xca'),_0x13e7f8['id']);}));}})[_0x2242('0x36')](function(_0x3d0187){if(_0x3d0187&&!_['isEmpty'](_0x3d0187)){var _0x54a938=squel[_0x2242('0x2e')]()[_0x2242('0xce')](_0x2242('0xcf'))['setFields'](_0x3d0187)['where'](_0x2242('0xd0'),_0x5e3029[_0x2242('0x9c')]['id'])[_0x2242('0xd1')]();return db[_0x2242('0x8d')][_0x2242('0x44')](_0x54a938['text'],{'replacements':_0x54a938['values']});}})[_0x2242('0x36')](function(){if(_0x5e3029[_0x2242('0xa4')]['phone']&&_0x242d48){return db['CmHopper'][_0x2242('0x2e')]({'phone':_0x5e3029[_0x2242('0xa4')][_0x2242('0xd2')]},{'where':{'ContactId':_0x242d48['id']}});}})['then'](function(){return _0x242d48;})[_0x2242('0x36')](respondWithResult(_0x510552,null))[_0x2242('0x9d')](handleError(_0x510552,null));};exports[_0x2242('0xd3')]=function(_0x43d8dc,_0x2ba37e,_0x3aaa03){var _0x18cce0={};var _0x601475={};var _0x53c179;var _0x3ec8b8;return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x43d8dc[_0x2242('0x9c')]['id']}})['then'](handleEntityNotFound(_0x2ba37e,null))[_0x2242('0x36')](function(_0x28e71a){if(_0x28e71a){_0x53c179=_0x28e71a;_0x601475['model']=_['keys'](db[_0x2242('0x5e')]['rawAttributes']);_0x601475[_0x2242('0x44')]=_[_0x2242('0x37')](_0x43d8dc[_0x2242('0x44')]);_0x601475['filters']=_[_0x2242('0x46')](_0x601475[_0x2242('0x42')],_0x601475[_0x2242('0x44')]);_0x18cce0[_0x2242('0x45')]=_[_0x2242('0x46')](_0x601475[_0x2242('0x42')],qs[_0x2242('0x47')](_0x43d8dc[_0x2242('0x44')][_0x2242('0x47')]));_0x18cce0[_0x2242('0x45')]=_0x18cce0['attributes'][_0x2242('0x38')]?_0x18cce0['attributes']:_0x601475[_0x2242('0x42')];_0x18cce0[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x43d8dc['query']['sort']);_0x18cce0['where']=qs[_0x2242('0x43')](_['pick'](_0x43d8dc[_0x2242('0x44')],_0x601475['filters']));if(_0x43d8dc[_0x2242('0x44')]['filter']){_0x18cce0[_0x2242('0x4b')]=_[_0x2242('0xd4')](_0x18cce0['where'],{'$or':_['map'](_0x18cce0['attributes'],function(_0x17ef0d){var _0x26f27b={};_0x26f27b[_0x17ef0d]={'$like':'%'+_0x43d8dc['query'][_0x2242('0x6d')]+'%'};return _0x26f27b;})});}_0x18cce0=_[_0x2242('0xd4')]({},_0x18cce0,_0x43d8dc['options']);return _0x53c179[_0x2242('0xd3')](_0x18cce0);}})['then'](function(_0x22a7bc){if(_0x22a7bc){_0x3ec8b8=_0x22a7bc[_0x2242('0x38')];if(!_0x43d8dc[_0x2242('0x44')][_0x2242('0x6c')](_0x2242('0x48'))){_0x18cce0[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x43d8dc[_0x2242('0x44')][_0x2242('0x26')]);_0x18cce0[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x43d8dc[_0x2242('0x44')][_0x2242('0x24')]);}return _0x53c179[_0x2242('0xd3')](_0x18cce0);}})[_0x2242('0x36')](function(_0x2408c8){if(_0x2408c8){return _0x2408c8?{'count':_0x3ec8b8,'rows':_0x2408c8}:null;}})[_0x2242('0x36')](respondWithResult(_0x2ba37e,null))[_0x2242('0x9d')](handleError(_0x2ba37e,null));};exports['setTags']=function(_0xa1e997,_0x45c03f,_0x99f371){if(_0xa1e997[_0x2242('0xa4')]['id']){delete _0xa1e997['body']['id'];}return db['CmContact']['findOne']({'where':{'id':_0xa1e997['params']['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x45c03f,null))[_0x2242('0x36')](function(_0x56aaed){if(_0x56aaed){return _0x56aaed[_0x2242('0xd5')](_0xa1e997['body'][_0x2242('0xd6')]||[]);}return null;})[_0x2242('0x36')](respondWithResult(_0x45c03f,null))[_0x2242('0x9d')](handleError(_0x45c03f,null));};exports[_0x2242('0xd7')]=function(_0x25ddd3,_0x5ca5d8,_0x165cd2){var _0x4e77aa={'raw':![],'where':{}};var _0x11e146={};var _0x543105={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x25ddd3[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x5ca5d8,null))[_0x2242('0x36')](function(_0x324045){if(_0x324045){_0x11e146[_0x2242('0x42')]=_[_0x2242('0x37')](db[_0x2242('0xac')][_0x2242('0xd8')]);_0x11e146[_0x2242('0x44')]=_['keys'](_0x25ddd3['query']);_0x11e146['filters']=_[_0x2242('0x46')](_0x11e146['model'],_0x11e146[_0x2242('0x44')]);_0x4e77aa[_0x2242('0x45')]=_['intersection'](_0x11e146[_0x2242('0x42')],qs[_0x2242('0x47')](_0x25ddd3['query'][_0x2242('0x47')]));_0x4e77aa['attributes']=_0x4e77aa[_0x2242('0x45')]['length']?_0x4e77aa[_0x2242('0x45')]:_0x11e146[_0x2242('0x42')];if(!_0x25ddd3['query'][_0x2242('0x6c')](_0x2242('0x48'))){_0x4e77aa[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x25ddd3[_0x2242('0x44')][_0x2242('0x26')]);_0x4e77aa[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x25ddd3[_0x2242('0x44')][_0x2242('0x24')]);}_0x4e77aa[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x25ddd3[_0x2242('0x44')][_0x2242('0x4a')]);_0x4e77aa['where']=qs['filters'](_['pick'](_0x25ddd3[_0x2242('0x44')],_0x11e146[_0x2242('0x43')]));_0x4e77aa['where'][_0x2242('0xd9')]=_0x324045['id'];if(_0x25ddd3[_0x2242('0x44')]['filter']){_0x4e77aa[_0x2242('0x4b')]=_['merge'](_0x4e77aa['where'],{'$or':_['map'](_0x4e77aa[_0x2242('0x45')],function(_0x1fd9d6){var _0x30d0d0={};_0x30d0d0[_0x1fd9d6]={'$like':'%'+_0x25ddd3[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x30d0d0;})});}_0x4e77aa=_[_0x2242('0xd4')]({},_0x4e77aa,_0x25ddd3['options']);return db[_0x2242('0xac')]['count']({'where':_0x4e77aa[_0x2242('0x4b')]})[_0x2242('0x36')](function(_0x8c2ac7){_0x543105[_0x2242('0x27')]=_0x8c2ac7;if(_0x25ddd3[_0x2242('0x44')][_0x2242('0xda')]){_0x4e77aa[_0x2242('0xdb')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x4e77aa);})['then'](function(_0x349ff2){_0x543105[_0x2242('0x9b')]=_0x349ff2;return _0x543105;});}})[_0x2242('0x36')](respondWithFilteredResult(_0x5ca5d8,_0x4e77aa))['catch'](handleError(_0x5ca5d8,null));};exports[_0x2242('0xdc')]=function(_0x7bba9f,_0x9d0fd5,_0x68b70){var _0x382b9d={'raw':!![],'where':{}};var _0x2e352a={};var _0x5a47e9={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x7bba9f[_0x2242('0x9c')]['id']}})['then'](handleEntityNotFound(_0x9d0fd5,null))['then'](function(_0x265458){if(_0x265458){_0x2e352a['model']=_[_0x2242('0x37')](db[_0x2242('0xb9')][_0x2242('0xd8')]);_0x2e352a['query']=_[_0x2242('0x37')](_0x7bba9f['query']);_0x2e352a[_0x2242('0x43')]=_[_0x2242('0x46')](_0x2e352a[_0x2242('0x42')],_0x2e352a[_0x2242('0x44')]);_0x382b9d[_0x2242('0x45')]=_['intersection'](_0x2e352a[_0x2242('0x42')],qs[_0x2242('0x47')](_0x7bba9f['query'][_0x2242('0x47')]));_0x382b9d[_0x2242('0x45')]=_0x382b9d[_0x2242('0x45')][_0x2242('0x38')]?_0x382b9d[_0x2242('0x45')]:_0x2e352a[_0x2242('0x42')];if(!_0x7bba9f['query'][_0x2242('0x6c')](_0x2242('0x48'))){_0x382b9d[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x7bba9f[_0x2242('0x44')][_0x2242('0x26')]);_0x382b9d[_0x2242('0x24')]=qs['offset'](_0x7bba9f[_0x2242('0x44')]['offset']);}_0x382b9d[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x7bba9f[_0x2242('0x44')][_0x2242('0x4a')]);_0x382b9d['where']=qs[_0x2242('0x43')](_[_0x2242('0x4c')](_0x7bba9f[_0x2242('0x44')],_0x2e352a[_0x2242('0x43')]));_0x382b9d[_0x2242('0x4b')][_0x2242('0xd9')]=_0x265458['id'];if(_0x7bba9f['query'][_0x2242('0x6d')]){_0x382b9d['where']=_[_0x2242('0xd4')](_0x382b9d[_0x2242('0x4b')],{'$or':_[_0x2242('0x6b')](_0x382b9d['attributes'],function(_0x374c38){var _0x4c5537={};_0x4c5537[_0x374c38]={'$like':'%'+_0x7bba9f[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x4c5537;})});}_0x382b9d=_[_0x2242('0xd4')]({},_0x382b9d,_0x7bba9f['options']);return db[_0x2242('0xb9')][_0x2242('0x27')]({'where':_0x382b9d[_0x2242('0x4b')]})['then'](function(_0x4c4ce9){_0x5a47e9['count']=_0x4c4ce9;if(_0x7bba9f['query'][_0x2242('0xda')]){_0x382b9d[_0x2242('0xdb')]=[{'all':!![]}];}return db[_0x2242('0xb9')][_0x2242('0x9f')](_0x382b9d);})[_0x2242('0x36')](function(_0xe9ca90){_0x5a47e9[_0x2242('0x9b')]=_0xe9ca90;return _0x5a47e9;});}})[_0x2242('0x36')](respondWithFilteredResult(_0x9d0fd5,_0x382b9d))[_0x2242('0x9d')](handleError(_0x9d0fd5,null));};exports[_0x2242('0xdd')]=function(_0x5a408c,_0x48121d,_0x5290ca){var _0x5ca76e={'raw':!![],'where':{}};var _0x2ef7d2={};var _0x5912b9={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x5a408c[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x48121d,null))[_0x2242('0x36')](function(_0x2d9b6c){if(_0x2d9b6c){_0x2ef7d2['model']=_['keys'](db[_0x2242('0xb8')][_0x2242('0xd8')]);_0x2ef7d2[_0x2242('0x44')]=_[_0x2242('0x37')](_0x5a408c['query']);_0x2ef7d2['filters']=_['intersection'](_0x2ef7d2[_0x2242('0x42')],_0x2ef7d2[_0x2242('0x44')]);_0x5ca76e[_0x2242('0x45')]=_['intersection'](_0x2ef7d2[_0x2242('0x42')],qs[_0x2242('0x47')](_0x5a408c[_0x2242('0x44')][_0x2242('0x47')]));_0x5ca76e[_0x2242('0x45')]=_0x5ca76e[_0x2242('0x45')][_0x2242('0x38')]?_0x5ca76e[_0x2242('0x45')]:_0x2ef7d2[_0x2242('0x42')];if(!_0x5a408c[_0x2242('0x44')][_0x2242('0x6c')](_0x2242('0x48'))){_0x5ca76e[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x5a408c['query'][_0x2242('0x26')]);_0x5ca76e['offset']=qs[_0x2242('0x24')](_0x5a408c[_0x2242('0x44')]['offset']);}_0x5ca76e['order']=qs['sort'](_0x5a408c[_0x2242('0x44')][_0x2242('0x4a')]);_0x5ca76e[_0x2242('0x4b')]=qs[_0x2242('0x43')](_[_0x2242('0x4c')](_0x5a408c[_0x2242('0x44')],_0x2ef7d2[_0x2242('0x43')]));_0x5ca76e[_0x2242('0x4b')]['ContactId']=_0x2d9b6c['id'];if(_0x5a408c[_0x2242('0x44')][_0x2242('0x6d')]){_0x5ca76e[_0x2242('0x4b')]=_[_0x2242('0xd4')](_0x5ca76e[_0x2242('0x4b')],{'$or':_['map'](_0x5ca76e[_0x2242('0x45')],function(_0x22ab4a){var _0x307759={};_0x307759[_0x22ab4a]={'$like':'%'+_0x5a408c[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x307759;})});}_0x5ca76e=_['merge']({},_0x5ca76e,_0x5a408c[_0x2242('0xde')]);return db[_0x2242('0xb8')]['count']({'where':_0x5ca76e[_0x2242('0x4b')]})['then'](function(_0x2052fc){_0x5912b9[_0x2242('0x27')]=_0x2052fc;if(_0x5a408c[_0x2242('0x44')][_0x2242('0xda')]){_0x5ca76e[_0x2242('0xdb')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x5ca76e);})[_0x2242('0x36')](function(_0x471eb3){_0x5912b9[_0x2242('0x9b')]=_0x471eb3;return _0x5912b9;});}})['then'](respondWithFilteredResult(_0x48121d,_0x5ca76e))['catch'](handleError(_0x48121d,null));};exports[_0x2242('0xdf')]=function(_0x10e394,_0x115058,_0x5f0aa6){var _0x3eb75e={'raw':!![],'where':{}};var _0x562684={};var _0x54f4e8={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x10e394[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x115058,null))['then'](function(_0x13ebf6){if(_0x13ebf6){_0x562684['model']=_['keys'](db['JscriptySessionReport']['rawAttributes']);_0x562684[_0x2242('0x44')]=_['keys'](_0x10e394[_0x2242('0x44')]);_0x562684[_0x2242('0x43')]=_['intersection'](_0x562684[_0x2242('0x42')],_0x562684[_0x2242('0x44')]);_0x3eb75e['attributes']=_[_0x2242('0x46')](_0x562684[_0x2242('0x42')],qs[_0x2242('0x47')](_0x10e394[_0x2242('0x44')]['fields']));_0x3eb75e['attributes']=_0x3eb75e[_0x2242('0x45')][_0x2242('0x38')]?_0x3eb75e[_0x2242('0x45')]:_0x562684[_0x2242('0x42')];if(!_0x10e394[_0x2242('0x44')][_0x2242('0x6c')](_0x2242('0x48'))){_0x3eb75e[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x10e394[_0x2242('0x44')][_0x2242('0x26')]);_0x3eb75e[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x10e394[_0x2242('0x44')][_0x2242('0x24')]);}_0x3eb75e[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x10e394[_0x2242('0x44')][_0x2242('0x4a')]);_0x3eb75e[_0x2242('0x4b')]=qs[_0x2242('0x43')](_[_0x2242('0x4c')](_0x10e394[_0x2242('0x44')],_0x562684[_0x2242('0x43')]));_0x3eb75e[_0x2242('0x4b')][_0x2242('0xd9')]=_0x13ebf6['id'];if(_0x10e394[_0x2242('0x44')][_0x2242('0x6d')]){_0x3eb75e[_0x2242('0x4b')]=_['merge'](_0x3eb75e[_0x2242('0x4b')],{'$or':_[_0x2242('0x6b')](_0x3eb75e['attributes'],function(_0x2950c3){var _0x47bb0c={};_0x47bb0c[_0x2950c3]={'$like':'%'+_0x10e394[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x47bb0c;})});}_0x3eb75e=_[_0x2242('0xd4')]({},_0x3eb75e,_0x10e394[_0x2242('0xde')]);return db['JscriptySessionReport'][_0x2242('0x27')]({'where':_0x3eb75e[_0x2242('0x4b')]})[_0x2242('0x36')](function(_0xcd2c2a){_0x54f4e8[_0x2242('0x27')]=_0xcd2c2a;if(_0x10e394[_0x2242('0x44')][_0x2242('0xda')]){_0x3eb75e[_0x2242('0xdb')]=[{'all':!![]}];}return db[_0x2242('0xc1')]['findAll'](_0x3eb75e);})[_0x2242('0x36')](function(_0x5ea0d8){_0x54f4e8['rows']=_0x5ea0d8;return _0x54f4e8;});}})[_0x2242('0x36')](respondWithFilteredResult(_0x115058,_0x3eb75e))[_0x2242('0x9d')](handleError(_0x115058,null));};exports['uploadCsv']=function(_0x857186,_0x189335,_0x53688a){try{if(!_0x857186[_0x2242('0xa4')][_0x2242('0x71')]){throw new Error(_0x2242('0xe0'));}if(!_0x857186[_0x2242('0xa4')][_0x2242('0xe1')]){throw new Error(_0x2242('0xe2'));}if(!_0x857186['body']['binding_values']){throw new Error(_0x2242('0xe3'));}if(!_0x857186[_0x2242('0xa4')][_0x2242('0xe4')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x2aa454=_0x857186[_0x2242('0xa4')][_0x2242('0xe1')][_0x2242('0x60')](',');var _0x221582=_0x857186[_0x2242('0xa4')]['binding_values'][_0x2242('0x60')](',');if(!_0x2aa454[_0x2242('0x38')]||!_0x221582[_0x2242('0x38')]||_0x2aa454[_0x2242('0x38')]!==_0x221582[_0x2242('0x38')]){throw new Error(_0x2242('0xe5'));}_0x857186['body'][_0x2242('0x47')]=_[_0x2242('0xe6')](_0x2aa454,_0x221582);if(!_0x857186[_0x2242('0xa4')][_0x2242('0x47')]['phone']){throw new Error(_0x2242('0xe7'));}if(!_0x857186[_0x2242('0xa4')]['fields'][_0x2242('0xe8')]){throw new Error(_0x2242('0xe9'));}var _0x48226b=path[_0x2242('0xa9')](config[_0x2242('0xea')],_0x2242('0xeb'),_0x857186['file'][_0x2242('0xec')]);fs[_0x2242('0xed')](_0x48226b,parseInt(_0x2242('0xee'),0x8));var _0xb62b83=require(_0x2242('0xef'))[_0x2242('0xf0')](path[_0x2242('0xa9')](__dirname,_0x2242('0xf1')),[_0x48226b,_0x857186[_0x2242('0xa4')][_0x2242('0xe1')],_0x857186['body'][_0x2242('0xf2')],_0x857186[_0x2242('0xa4')][_0x2242('0x71')],_0x857186[_0x2242('0xa4')][_0x2242('0xf3')],_0x857186[_0x2242('0xa4')][_0x2242('0xc5')],_0x857186[_0x2242('0xa4')][_0x2242('0xe4')]]);return _0x189335[_0x2242('0x23')](0xc8)['json']({'message':'File\x20uploaded\x20correctly!','pid':_0xb62b83[_0x2242('0xf4')]});}catch(_0x3085b3){return _0x189335['status'](0x1f4)['send'](_0x3085b3);}};exports['upload']=function(_0x497d90,_0x52599c,_0x4aca42){var _0x1f8f0e=fs[_0x2242('0xf5')](_0x497d90[_0x2242('0xf6')][_0x2242('0x7')]);Papa[_0x2242('0xf7')](_0x1f8f0e,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2e60b0){return _0x52599c[_0x2242('0x23')](0xc8)[_0x2242('0x2a')]({'file':_0x497d90[_0x2242('0xf6')],'fields':_0x2e60b0[_0x2242('0xf8')][_0x2242('0x47')]});}});};exports[_0x2242('0xf9')]=function(_0x3cfa86,_0x411f72,_0x2d16d8){return db[_0x2242('0x64')][_0x2242('0x9f')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0x2242('0x36')](function(_0x42db2a){var _0x2ade30=![];if(!_0x3cfa86[_0x2242('0xa4')]['ListId']){throw new Error(_0x2242('0xe0'));}if(!_0x3cfa86[_0x2242('0xa4')]['binding'][_0x2242('0xd2')]){throw new Error(_0x2242('0xe7'));}if(!_0x3cfa86[_0x2242('0xa4')][_0x2242('0xfa')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x3cfa86[_0x2242('0xa4')][_0x2242('0xe4')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xc4c8a3=require(_0x2242('0xef'))[_0x2242('0xf0')](path['join'](__dirname,_0x2242('0xfb')),[_0x3cfa86['params']['id'],JSON[_0x2242('0xfc')](_0x3cfa86[_0x2242('0xa4')]),JSON['stringify'](_0x42db2a)]);_0xc4c8a3['on'](_0x2242('0xfd'),function(_0x426145){_0x2ade30=!![];return _0x411f72[_0x2242('0x23')](0xc8)['json']({'message':_0x2242('0xfe'),'pid':_0xc4c8a3[_0x2242('0xf4')]});});_0xc4c8a3['on'](_0x2242('0xff'),function(_0xb2355f){if(_0xb2355f&&!_0x2ade30){return _0x411f72[_0x2242('0x23')](0x1f4)[_0x2242('0x2a')]({'message':'error\x20child\x20process','pid':_0xc4c8a3[_0x2242('0xf4')]});}});})['catch'](handleError(_0x411f72,null));};exports[_0x2242('0x100')]=function(_0x4ee7bd,_0x485589){var _0x42b878=[_0x2242('0x101'),_0x2242('0x102'),_0x2242('0x103'),_0x2242('0x104'),'fax',_0x2242('0x105'),_0x2242('0x106')];var _0x3609b3={'offset':0x0,'order':qs[_0x2242('0x4a')](_0x2242('0x107'))},_0x1f98a7={'count':0x0,'rows':[]};Promise['resolve']()[_0x2242('0x36')](function(){if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x108')]){if(!_[_0x2242('0x109')](_0x42b878,_0x4ee7bd['query'][_0x2242('0x108')]['toLowerCase']())){throw new Error(_0x2242('0x10a'));}_0x42b878=[_0x4ee7bd['query'][_0x2242('0x108')][_0x2242('0x10b')]()];}if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]){try{var _0x5c6b74=JSON[_0x2242('0xf7')](_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]);if(!moment(_0x5c6b74[_0x2242('0x4f')])[_0x2242('0x10d')]()){throw new Error(_0x2242('0x10e'));}if(!moment(_0x5c6b74['to'])[_0x2242('0x10d')]()){throw new Error(_0x2242('0x10f'));}}catch(_0x459eac){throw new Error(_0x2242('0x110'));}}if(!_0x4ee7bd[_0x2242('0x44')]['hasOwnProperty']('nolimit')){_0x3609b3[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x4ee7bd[_0x2242('0x44')]['limit']||0xa);_0x3609b3[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x4ee7bd[_0x2242('0x44')][_0x2242('0x24')]);}var _0x2ec2ea=_0x42b878[_0x2242('0x6b')](function(_0x1286cc){if(_0x1286cc===_0x2242('0x106')){var _0xfa5e7={'attributes':['id',_0x2242('0x111'),_0x2242('0x41'),'source',_0x2242('0x112'),'callerid',_0x2242('0x113'),_0x2242('0x114'),_0x2242('0x115'),'note',_0x2242('0x116'),_0x2242('0x117'),'userSecondDisposition',_0x2242('0x118'),_0x2242('0x119')],'where':{'ContactId':_0x4ee7bd[_0x2242('0x9c')]['id']},'include':[{'model':db[_0x2242('0x64')],'as':_0x2242('0x64'),'attributes':['id',_0x2242('0x32'),_0x2242('0x11a'),'alias']}],'order':[[_0x2242('0x116'),_0x2242('0x83')]]};if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]){_0xfa5e7[_0x2242('0x4b')][_0x2242('0x116')]={'$gte':_0x5c6b74['from'],'$lte':_0x5c6b74['to']};}return db[_0x2242('0xbb')][_0x2242('0x11b')](_0xfa5e7)['then'](function(_0x4bd59d){_0x1f98a7['count']+=_0x4bd59d[_0x2242('0x27')];return _[_0x2242('0x6b')](_0x4bd59d['rows'],function(_0x163ac8){var _0x59ea4c=_0x163ac8[_0x2242('0xa5')]({'plain':!![]});_0x59ea4c[_0x2242('0x108')]=_0x1286cc;if(_0x59ea4c[_0x2242('0x64')]){_0x59ea4c['User']={'id':_0x59ea4c[_0x2242('0x64')]['id'],'name':_0x59ea4c[_0x2242('0x64')][_0x2242('0x32')],'fullname':_0x59ea4c[_0x2242('0x64')][_0x2242('0x11a')],'alias':_0x59ea4c[_0x2242('0x64')][_0x2242('0xa1')]};}return _0x59ea4c;});});}else{var _0x7df38=_[_0x2242('0x11c')](_0x1286cc)+(_0x1286cc===_0x2242('0x102')?_0x2242('0x11d'):'Account');var _0x179cb6={'attributes':['id','closed','closedAt',_0x2242('0x116'),_0x2242('0x11e'),_0x2242('0x11f'),_0x2242('0x120'),'thirdDisposition',_0x2242('0x119'),_0x7df38+'Id'],'where':{'ContactId':_0x4ee7bd[_0x2242('0x9c')]['id']},'include':[{'model':db[_0x7df38],'as':'Account','attributes':['id','name','key']},{'model':db['User'],'as':_0x2242('0x121'),'attributes':['id',_0x2242('0x32'),_0x2242('0x11a')]},{'model':db['Tag'],'as':_0x2242('0x9a'),'attributes':['id',_0x2242('0x32'),'color'],'through':{'attributes':[]}}],'order':[[_0x2242('0x116'),'DESC']]};if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]){_0x179cb6[_0x2242('0x4b')]['createdAt']={'$gte':_0x5c6b74[_0x2242('0x4f')],'$lte':_0x5c6b74['to']};}switch(_0x1286cc){case _0x2242('0x102'):_0x179cb6[_0x2242('0x45')]['push'](_0x2242('0x122'),_0x2242('0x123'),_0x2242('0x124'),_0x2242('0x125'),_0x2242('0x126'),_0x2242('0x127'),_0x2242('0x128'),_0x2242('0x129'),_0x2242('0x12a'));break;case _0x2242('0x101'):_0x179cb6[_0x2242('0x45')]['push'](_0x2242('0x12b'),_0x2242('0x12c'));break;case'openchannel':_0x179cb6[_0x2242('0x45')][_0x2242('0x3b')](_0x2242('0x12d'),_0x2242('0x12e'));break;}return db[_[_0x2242('0x11c')](_0x1286cc)+'Interaction'][_0x2242('0x11b')](_0x179cb6)[_0x2242('0x36')](function(_0x11c56c){_0x1f98a7[_0x2242('0x27')]+=_0x11c56c[_0x2242('0x27')];return _[_0x2242('0x6b')](_0x11c56c[_0x2242('0x9b')],function(_0x2095c8){var _0x3e3635=_0x2095c8['get']({'plain':!![]});_0x3e3635[_0x2242('0x108')]=_0x1286cc;if(_0x3e3635[_0x2242('0x121')]){_0x3e3635[_0x2242('0x121')]={'id':_0x3e3635[_0x2242('0x121')]['id'],'name':_0x3e3635[_0x2242('0x121')]['name'],'fullname':_0x3e3635['Owner']['fullname']};}return _0x3e3635;});});}});return Promise['all'](_0x2ec2ea);})['then'](function(_0x55ce18){return _(_0x55ce18)[_0x2242('0x12f')]()[_0x2242('0x130')](_0x2242('0x116'))[_0x2242('0x131')]()[_0x2242('0x5f')]();})[_0x2242('0x36')](function(_0x3be42d){_0x1f98a7[_0x2242('0x9b')]=_0x3609b3[_0x2242('0x26')]?_0x3be42d[_0x2242('0x132')](_0x3609b3[_0x2242('0x24')],_0x3609b3[_0x2242('0x24')]+_0x3609b3[_0x2242('0x26')]):_0x3be42d;return _0x1f98a7;})[_0x2242('0x36')](respondWithFilteredResult(_0x485589,_0x3609b3))[_0x2242('0x9d')](handleError(_0x485589,null));};
\ No newline at end of file
+var _0x5e97=['cf_%d','$and','table','cm_contacts','setFields','toParam','phone','getTags','options','setTags','findOne','ids','getHoppers','rawAttributes','pick','ContactId','includeAll','include','getHopperHistories','getHopperFinals','CmHopperFinal','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','createReadStream','path','meta','import','binding','child_process','stringify','message','start\x20child\x20process\x20correctly!','getJourney','mail','chat','sms','fax','whatsapp','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','parse','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','voice','uniqueid','source','starttime','endtime','note','createdAt','userSecondDisposition','fullname','DESC','range','findAndCountAll','startCase','Website','Account','closed','disposition','UserId','Owner','browserName','customerIp','customerPort','deviceModel','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','sortBy','reverse','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','error','name','send','index','CmContact','describe','keys','length','cf_','push','all','fieldType','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','select','field','color','from','tools_tags','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','expr','sqlOperator','conditions','value','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','buildExpression','text','start','filter','isNil','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','\x20=\x20?','tag','replace','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','group','QueryTypes','c.id','order','having','t.id\x20IN\x20?','resolve','role','agent','some','user','getLists','c.ListId\x20IS\x20NULL','map','sequelize','keyBy','merge','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.ListId','c.createdAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','toString','Tags','rows','catch','destroy','find','params','startsWith','columnName','displayName','CmCustomField','findAll','alias','custom','values','body','get','isArray','tags','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','info','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','SmsQueueReport','WhatsappMessage','WhatsappQueueReport','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','Tag','omit','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e97,0x18c));var _0x75e9=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x5e97[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0x75e9('0x0'));var rimraf=require(_0x75e9('0x1'));var zipdir=require(_0x75e9('0x2'));var jsonpatch=require(_0x75e9('0x3'));var rp=require(_0x75e9('0x4'));var moment=require(_0x75e9('0x5'));var BPromise=require(_0x75e9('0x6'));var Mustache=require(_0x75e9('0x7'));var util=require(_0x75e9('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x75e9('0x9'));var ejs=require(_0x75e9('0xa'));var fs=require('fs');var fs_extra=require(_0x75e9('0xb'));var _=require('lodash');var squel=require(_0x75e9('0xc'));var crypto=require(_0x75e9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x75e9('0xe'));var toCsv=require(_0x75e9('0x9'));var querystring=require(_0x75e9('0xf'));var Papa=require(_0x75e9('0x10'));var Redis=require(_0x75e9('0x11'));var authService=require(_0x75e9('0x12'));var qs=require(_0x75e9('0x13'));var as=require(_0x75e9('0x14'));var hardwareService=require(_0x75e9('0x15'));var logger=require(_0x75e9('0x16'))('api');var utils=require(_0x75e9('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x75e9('0x18'));var db=require(_0x75e9('0x19'))['db'];config['redis']=_[_0x75e9('0x1a')](config[_0x75e9('0x1b')],{'host':_0x75e9('0x1c'),'port':0x18eb});var socket=require(_0x75e9('0x1d'))(new Redis(config[_0x75e9('0x1b')]));require(_0x75e9('0x1e'))['register'](socket);function respondWithStatusCode(_0x2ba70b,_0x4dacf3){_0x4dacf3=_0x4dacf3||0xcc;return function(_0x470b44){if(_0x470b44){return _0x2ba70b[_0x75e9('0x1f')](_0x4dacf3);}return _0x2ba70b[_0x75e9('0x20')](_0x4dacf3)[_0x75e9('0x21')]();};}function respondWithResult(_0x3f4624,_0x1af4c7){_0x1af4c7=_0x1af4c7||0xc8;return function(_0x4a6a41){if(_0x4a6a41){return _0x3f4624[_0x75e9('0x20')](_0x1af4c7)['json'](_0x4a6a41);}};}function respondWithFilteredResult(_0x39fb8c,_0x5d0858){return function(_0x42e873){if(_0x42e873){var _0x5a8971=typeof _0x5d0858[_0x75e9('0x22')]==='undefined'&&typeof _0x5d0858[_0x75e9('0x23')]===_0x75e9('0x24');var _0x45d0bb=_0x42e873[_0x75e9('0x25')];var _0x5492b2=_0x5a8971?0x0:_0x5d0858['offset'];var _0x6f8e8e=_0x5a8971?_0x42e873[_0x75e9('0x25')]:_0x5d0858[_0x75e9('0x22')]+_0x5d0858[_0x75e9('0x23')];var _0x43c691;if(_0x6f8e8e>=_0x45d0bb){_0x6f8e8e=_0x45d0bb;_0x43c691=0xc8;}else{_0x43c691=0xce;}_0x39fb8c[_0x75e9('0x20')](_0x43c691);return _0x39fb8c[_0x75e9('0x26')](_0x75e9('0x27'),_0x5492b2+'-'+_0x6f8e8e+'/'+_0x45d0bb)[_0x75e9('0x28')](_0x42e873);}return null;};}function patchUpdates(_0x215eed){return function(_0x3e89a0){try{jsonpatch[_0x75e9('0x29')](_0x3e89a0,_0x215eed,!![]);}catch(_0x1e6037){return BPromise[_0x75e9('0x2a')](_0x1e6037);}return _0x3e89a0[_0x75e9('0x2b')]();};}function saveUpdates(_0x168827,_0x32a5c3){return function(_0x157ec2){if(_0x157ec2){return _0x157ec2[_0x75e9('0x2c')](_0x168827)['then'](function(_0x240d2c){return _0x240d2c;});}return null;};}function removeEntity(_0x866ca4,_0xd00b9a){return function(_0x184f44){if(_0x184f44){return _0x184f44['destroy']()[_0x75e9('0x2d')](function(){_0x866ca4[_0x75e9('0x20')](0xcc)[_0x75e9('0x21')]();});}};}function handleEntityNotFound(_0x5d46d4,_0x45a01f){return function(_0x72c58c){if(!_0x72c58c){_0x5d46d4[_0x75e9('0x1f')](0x194);}return _0x72c58c;};}function handleError(_0x5d802c,_0x20a0fc){_0x20a0fc=_0x20a0fc||0x1f4;return function(_0x4820ec){logger[_0x75e9('0x2e')](_0x4820ec['stack']);if(_0x4820ec[_0x75e9('0x2f')]){delete _0x4820ec[_0x75e9('0x2f')];}_0x5d802c[_0x75e9('0x20')](_0x20a0fc)[_0x75e9('0x30')](_0x4820ec);};}exports[_0x75e9('0x31')]=function(_0x24f83d,_0x51f670){var _0x1acabf={},_0x24cfca={},_0x44bf5f={'count':0x0,'rows':[]};return db[_0x75e9('0x32')][_0x75e9('0x33')]()[_0x75e9('0x2d')](function(_0x4e1064){var _0x53ccfd=[];for(var _0x5efd34=0x0;_0x5efd34<Object[_0x75e9('0x34')](_0x4e1064)[_0x75e9('0x35')];_0x5efd34++){var _0x181511=Object[_0x75e9('0x34')](_0x4e1064)[_0x5efd34];if(_['startsWith'](_0x181511,_0x75e9('0x36'))){_0x53ccfd[_0x75e9('0x37')](db['CmCustomField']['findOne']({'where':{'id':_['trimStart'](_0x181511,_0x75e9('0x36'))},'raw':!![]}));}}return BPromise[_0x75e9('0x38')](_0x53ccfd)['then'](function(_0x48781a){for(var _0x212c1a=0x0;_0x212c1a<_0x48781a[_0x75e9('0x35')];_0x212c1a++){if(_0x48781a[_0x212c1a]){var _0x3d40b7='cf_'+_0x48781a[_0x212c1a]['id'];var _0x415387=_0x4e1064[_0x3d40b7];_0x415387[_0x75e9('0x39')]=_0x48781a[_0x212c1a][_0x75e9('0x3a')];}}return _0x4e1064;});})[_0x75e9('0x2d')](function(_0x132294){_0x24cfca[_0x75e9('0x3b')]=_['keys'](_0x132294);_0x24cfca[_0x75e9('0x3c')]=_['keys'](_0x24f83d[_0x75e9('0x3c')]);_0x24cfca[_0x75e9('0x3d')]=_[_0x75e9('0x3e')](_0x24cfca[_0x75e9('0x3b')],_0x24cfca[_0x75e9('0x3c')]);_0x1acabf[_0x75e9('0x3f')]=_[_0x75e9('0x3e')](_0x24cfca['model'],qs[_0x75e9('0x40')](_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x40')]));_0x1acabf[_0x75e9('0x3f')]=_0x1acabf[_0x75e9('0x3f')]['length']?_0x1acabf[_0x75e9('0x3f')]:_0x24cfca['model'];if(!_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x41')](_0x75e9('0x42'))){_0x1acabf[_0x75e9('0x23')]=qs[_0x75e9('0x23')](_0x24f83d['query'][_0x75e9('0x23')]);_0x1acabf[_0x75e9('0x22')]=qs['offset'](_0x24f83d[_0x75e9('0x3c')]['offset']);}_0x1acabf['order']=qs[_0x75e9('0x43')](_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x43')]);_0x1acabf[_0x75e9('0x44')]=qs[_0x75e9('0x3d')](_['pick'](_0x24f83d['query'],_0x24cfca[_0x75e9('0x3d')]),_0x132294);var _0x5c04bb=[];var _0x392b76=squel[_0x75e9('0x45')]()[_0x75e9('0x46')]('id')[_0x75e9('0x46')](_0x75e9('0x2f'))[_0x75e9('0x46')](_0x75e9('0x47'))[_0x75e9('0x48')](_0x75e9('0x49'));var _0x3d37fe=squel[_0x75e9('0x45')]()[_0x75e9('0x48')]('cm_contacts','c')[_0x75e9('0x4a')](_0x75e9('0x4b'),'uc',_0x75e9('0x4c'))[_0x75e9('0x4a')](_0x75e9('0x4d'),'ct',_0x75e9('0x4e'))['left_join'](_0x75e9('0x49'),'t','t.id\x20=\x20ct.TagId')['where']('c.deletedAt\x20IS\x20NULL');var _0x35c546=squel[_0x75e9('0x4f')]();var _0x19cbe1=[];var _0x3e2989=squel[_0x75e9('0x4f')]();var _0x5e0504;if(_0x24f83d[_0x75e9('0x3c')]['search']){_0x5e0504=as['parseSearch'](_0x24f83d[_0x75e9('0x3c')]['search']);var _0x548881=_0x5e0504[_0x75e9('0x50')];for(var _0x194843=0x0;_0x194843<_0x5e0504[_0x75e9('0x51')]['length'];_0x194843++){var _0x98579=_0x5e0504[_0x75e9('0x51')][_0x194843];var _0x3db00='c';var _0x3977fb=_(_0x132294)['keys']()['find'](function(_0x2f2daa){return _0x2f2daa===_0x98579[_0x75e9('0x46')];});if(_0x3977fb)_0x3977fb=_0x132294[_0x98579['field']];if(!_0x3977fb){if(_0x98579[_0x75e9('0x46')]==='Tag'){var _0x5ddd9d=_0x98579[_0x75e9('0x52')][_0x75e9('0x53')](',')['map'](function(_0x46159c){return Number(_0x46159c);});_0x5ddd9d[_0x75e9('0x54')](function(_0x145eaf){_0x3e2989['or'](_0x75e9('0x55'),'%,'+_0x145eaf+',%');});_0x19cbe1=_['union'](_0x19cbe1,_0x5ddd9d);}else if(_0x98579[_0x75e9('0x46')]===_0x75e9('0x56')){_0x35c546['and'](_0x75e9('0x57'),_0x98579[_0x75e9('0x52')]);}}else{if(_0x98579[_0x75e9('0x46')]===_0x75e9('0x58')||_0x3977fb['fieldType']===_0x75e9('0x59'))_0x98579[_0x75e9('0x5a')]=_0x75e9('0x5b');var _0x874fdd=as[_0x75e9('0x5c')](_0x3db00,_0x3977fb['type'],_0x98579);_0x35c546[_0x548881](_0x874fdd[_0x75e9('0x5d')],_0x874fdd[_0x75e9('0x52')][_0x75e9('0x5e')],_0x874fdd[_0x75e9('0x52')][_0x75e9('0x21')]);}}}else{var _0x440ae1=_(Object[_0x75e9('0x34')](_0x24f83d[_0x75e9('0x3c')]))['map'](function(_0x2cdf2d){return _0x132294[_0x75e9('0x41')](_0x2cdf2d)?_0x2cdf2d:undefined;})[_0x75e9('0x5f')](function(_0x2dad4f){return!_[_0x75e9('0x60')](_0x2dad4f);})[_0x75e9('0x52')]();if(_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x61')])_0x440ae1[_0x75e9('0x37')](_0x75e9('0x61'));if(!_[_0x75e9('0x62')](_0x440ae1)){_0x440ae1['forEach'](function(_0x457438){if(_0x457438===_0x75e9('0x63')){_0x3d37fe[_0x75e9('0x44')](_0x75e9('0x64'),[][_0x75e9('0x65')](_0x24f83d[_0x75e9('0x3c')][_0x457438]));}else if(_0x457438==='Contact'){var _0x4677bf='%'+_0x24f83d[_0x75e9('0x3c')][_0x457438]+'%';_0x3d37fe[_0x75e9('0x44')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x4677bf);}else{_0x3d37fe[_0x75e9('0x44')]('c.'+_0x457438+_0x75e9('0x66'),_0x24f83d['query'][_0x457438]);}});}if(_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x67')]){_0x19cbe1=_['isArray'](_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x67')])?_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x67')]:new Array(_0x24f83d['query'][_0x75e9('0x67')]);_0x19cbe1[_0x75e9('0x54')](function(_0x1f159d){_0x3e2989['or'](_0x75e9('0x55'),'%,'+_0x1f159d+',%');});}if(_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x5f')]){var _0x2de714=_0x24f83d['query'][_0x75e9('0x5f')]['replace']('\x5c','\x5c\x5c')[_0x75e9('0x68')](/'/g,'\x27\x27');if(_0x2de714[_0x75e9('0x53')]('\x20')[_0x75e9('0x35')]>0x1){_0x35c546['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x2de714),null);}else{if(qs[_0x75e9('0x69')](_0x2de714)){_0x35c546['or'](_0x75e9('0x6a'),_0x2de714+'%');_0x35c546['or'](_0x75e9('0x6b'),_0x2de714+'%');_0x35c546['or'](_0x75e9('0x6c'),_0x2de714+'%');_0x35c546['or'](_0x75e9('0x6d'),_0x2de714+'%');}else if(qs[_0x75e9('0x6e')](_0x2de714)){_0x35c546['or'](_0x75e9('0x6f'),_0x2de714+'%');}else{_0x35c546['or'](_0x75e9('0x70'),'%'+_0x2de714+'%');_0x35c546['or']('c.lastName\x20LIKE\x20?','%'+_0x2de714+'%');_0x35c546['or'](_0x75e9('0x6f'),'%'+_0x2de714+'%');}}}}_0x3d37fe[_0x75e9('0x44')](_0x35c546);_0x3d37fe[_0x75e9('0x71')]('c.id');var _0x35c49f={'type':db['Sequelize'][_0x75e9('0x72')]['SELECT'],'raw':!![]};var _0x6dcd81=_0x3d37fe['clone']()[_0x75e9('0x46')](_0x75e9('0x73'));if(_0x1acabf[_0x75e9('0x74')]){_0x1acabf[_0x75e9('0x74')][_0x75e9('0x54')](function(_0xf8ff8b){_0x3d37fe[_0x75e9('0x74')]('c.'+_0xf8ff8b[0x0],_0xf8ff8b[0x1]==='DESC'?![]:!![]);});}if(!_[_0x75e9('0x62')](_0x19cbe1)){_0x3d37fe[_0x75e9('0x75')](_0x3e2989);_0x6dcd81[_0x75e9('0x44')](_0x75e9('0x76'),_0x19cbe1);}BPromise[_0x75e9('0x77')]()[_0x75e9('0x2d')](function(){if(!_0x5e0504)return;if(_0x24f83d['user'][_0x75e9('0x78')]!==_0x75e9('0x79'))return;if(!_[_0x75e9('0x7a')](_0x5e0504['conditions'],[_0x75e9('0x46'),'User'])){return _0x24f83d[_0x75e9('0x7b')][_0x75e9('0x7c')]({'attributes':['id'],'raw':!![]})[_0x75e9('0x2d')](function(_0x502e38){if(_['isEmpty'](_0x502e38)){_0x6dcd81[_0x75e9('0x44')]('c.ListId\x20IS\x20NULL');_0x3d37fe['where'](_0x75e9('0x7d'));}else{_0x6dcd81['where'](_0x75e9('0x64'),_[_0x75e9('0x7e')](_0x502e38,'id'));_0x3d37fe['where'](_0x75e9('0x64'),_[_0x75e9('0x7e')](_0x502e38,'id'));}});}})[_0x75e9('0x2d')](function(){if(_0x24f83d[_0x75e9('0x7b')][_0x75e9('0x78')]===_0x75e9('0x79')&&!_0x5e0504&&!_0x24f83d[_0x75e9('0x3c')][_0x75e9('0x63')])return[];return db[_0x75e9('0x7f')]['query'](_0x6dcd81['toString'](),_0x35c49f);})[_0x75e9('0x2d')](function(_0x29fe6e){_0x44bf5f['count']=_0x29fe6e[_0x75e9('0x35')];if(_0x44bf5f[_0x75e9('0x25')]===0x0)return[];return db[_0x75e9('0x7f')][_0x75e9('0x3c')](_0x392b76['toString'](),_0x35c49f)['then'](function(_0x1ab838){_0x5c04bb=_[_0x75e9('0x80')](_0x1ab838,'id');_0x35c49f=_[_0x75e9('0x81')](_0x35c49f,{'model':db[_0x75e9('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x24f83d['query'][_0x75e9('0x40')]){_0x1acabf[_0x75e9('0x3f')][_0x75e9('0x54')](function(_0x3bedc9){_0x3d37fe[_0x75e9('0x46')]('c.'+_0x3bedc9);});}else{_0x3d37fe['field'](_0x75e9('0x73'));_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x82'));_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x83'));_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x84'));_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x85'));_0x3d37fe['field'](_0x75e9('0x86'));_0x3d37fe[_0x75e9('0x46')]('c.email');_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x87'));_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x88'));_0x3d37fe[_0x75e9('0x46')]('c.deletedAt');_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x89'));_0x3d37fe[_0x75e9('0x46')](_0x75e9('0x8a'),_0x75e9('0x8b'));}if(_0x1acabf[_0x75e9('0x23')])_0x3d37fe[_0x75e9('0x23')](_0x1acabf[_0x75e9('0x23')]);if(_0x1acabf[_0x75e9('0x22')])_0x3d37fe['offset'](_0x1acabf[_0x75e9('0x22')]);return db[_0x75e9('0x7f')][_0x75e9('0x3c')](_0x3d37fe[_0x75e9('0x8c')](),_0x35c49f);});})[_0x75e9('0x2d')](function(_0x23b20e){_0x23b20e[_0x75e9('0x54')](function(_0x5f50f0){if(_0x5f50f0[_0x75e9('0x8b')]){_0x5f50f0[_0x75e9('0x8d')]=[];_0x5f50f0[_0x75e9('0x8b')][_0x75e9('0x53')](',')['forEach'](function(_0x3ce661){_0x5f50f0[_0x75e9('0x8d')][_0x75e9('0x37')](_0x5c04bb[_0x3ce661]);});}delete _0x5f50f0[_0x75e9('0x8b')];});_0x44bf5f[_0x75e9('0x8e')]=_0x23b20e;return _0x44bf5f;})[_0x75e9('0x2d')](respondWithFilteredResult(_0x51f670,_0x1acabf));})[_0x75e9('0x8f')](handleError(_0x51f670,null));};exports[_0x75e9('0x90')]=function(_0x56a81e,_0x5d6f17){return db[_0x75e9('0x32')][_0x75e9('0x91')]({'where':{'id':_0x56a81e[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x5d6f17,null))[_0x75e9('0x2d')](removeEntity(_0x5d6f17,null))['catch'](handleError(_0x5d6f17,null));};exports[_0x75e9('0x33')]=function(_0x4f53b1,_0x4fad63){return db[_0x75e9('0x32')][_0x75e9('0x33')]()[_0x75e9('0x2d')](function(_0x3d73a6){delete _0x3d73a6['tags'];for(var _0x24fd2a=0x0;_0x24fd2a<Object[_0x75e9('0x34')](_0x3d73a6)[_0x75e9('0x35')];_0x24fd2a++){var _0x2fc5d6=Object['keys'](_0x3d73a6)[_0x24fd2a];if(!_[_0x75e9('0x93')](_0x2fc5d6,_0x75e9('0x36'))){_0x3d73a6[_0x2fc5d6][_0x75e9('0x94')]=_0x2fc5d6;_0x3d73a6[_0x2fc5d6][_0x75e9('0x95')]=_0x2fc5d6;}}return _0x3d73a6;})[_0x75e9('0x2d')](function(_0x2f169b){var _0x2a97de={'where':{'$or':[{'ListId':_0x4f53b1[_0x75e9('0x3c')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x75e9('0x96')][_0x75e9('0x97')](_0x2a97de)[_0x75e9('0x2d')](function(_0x168fb9){for(var _0x2e81f9=0x0;_0x2e81f9<_0x168fb9[_0x75e9('0x35')];_0x2e81f9++){var _0x23b9eb=_0x75e9('0x36')+_0x168fb9[_0x2e81f9]['id'];_0x2f169b[_0x23b9eb][_0x75e9('0x94')]=_0x23b9eb;_0x2f169b[_0x23b9eb][_0x75e9('0x95')]=_0x168fb9[_0x2e81f9][_0x75e9('0x98')];_0x2f169b[_0x23b9eb][_0x75e9('0x99')]={'type':_0x168fb9[_0x2e81f9][_0x75e9('0x3a')],'values':_0x168fb9[_0x2e81f9][_0x75e9('0x9a')]};}Object[_0x75e9('0x34')](_0x2f169b)['forEach'](function(_0x48aec6){if(!_0x2f169b[_0x48aec6][_0x75e9('0x41')](_0x75e9('0x94'))){delete _0x2f169b[_0x48aec6];}});return _0x2f169b;});})[_0x75e9('0x2d')](respondWithResult(_0x4fad63,null))[_0x75e9('0x8f')](handleError(_0x4fad63,null));};exports[_0x75e9('0x81')]=function(_0x103bab,_0x3a1092){var _0x446f4f;var _0x39083c;var _0x1c6984;if(_0x103bab[_0x75e9('0x9b')]['id']){delete _0x103bab[_0x75e9('0x9b')]['id'];}return db[_0x75e9('0x32')]['findAll']({'where':{'id':[_0x103bab['body']['to'],_0x103bab[_0x75e9('0x9b')]['from']]}})[_0x75e9('0x2d')](function(_0x20dcba){if(_0x20dcba){if(_0x20dcba[_0x75e9('0x35')]!==0x2){return null;}_0x20dcba[0x0]=_0x20dcba[0x0][_0x75e9('0x9c')]({'plain':!![]});_0x20dcba[0x1]=_0x20dcba[0x1][_0x75e9('0x9c')]({'plain':!![]});delete _0x20dcba[0x0]['id'];delete _0x20dcba[0x1]['id'];return _['mergeWith'](_0x20dcba[0x0],_0x20dcba[0x1],function(_0x5d78f0,_0x26ab12){if(Array[_0x75e9('0x9d')](_0x26ab12)&&!_0x26ab12[_0x75e9('0x35')]){return _0x5d78f0;}else if(!_0x26ab12){return _0x5d78f0;}});}})[_0x75e9('0x2d')](handleEntityNotFound(_0x3a1092,null))[_0x75e9('0x2d')](function(_0x344ec3){if(_0x344ec3){if(_0x344ec3[_0x75e9('0x9e')]&&_[_0x75e9('0x9d')](_0x344ec3[_0x75e9('0x9e')])){_0x344ec3[_0x75e9('0x9e')]=_0x344ec3[_0x75e9('0x9e')][_0x75e9('0x9f')]();}logger['info'](_0x75e9('0xa0'),_0x103bab['body']['to'],_0x103bab[_0x75e9('0x9b')]['from']);return db[_0x75e9('0xa1')][_0x75e9('0x90')]({'where':{'ContactId':[_0x103bab[_0x75e9('0x9b')]['to'],_0x103bab[_0x75e9('0x9b')]['from']]}})[_0x75e9('0x2d')](function(_0x3f011e){logger[_0x75e9('0xa2')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x3f011e);return db[_0x75e9('0xa3')]['destroy']({'where':{'ContactId':[_0x103bab[_0x75e9('0x9b')]['to'],_0x103bab[_0x75e9('0x9b')][_0x75e9('0x48')]]}})[_0x75e9('0x2d')](function(_0x4c9695){logger[_0x75e9('0xa2')](_0x75e9('0xa4'),_0x4c9695);return db['CmContact'][_0x75e9('0xa5')](_0x344ec3);});});}})['then'](function(_0x2b7e0d){if(_0x2b7e0d){_0x446f4f=_0x2b7e0d;_0x39083c={'ContactId':_0x446f4f['id']};_0x1c6984={'where':{'ContactId':[_0x103bab[_0x75e9('0x9b')]['to'],_0x103bab[_0x75e9('0x9b')][_0x75e9('0x48')]]}};return db[_0x75e9('0xa6')]['update'](_0x39083c,_0x1c6984);}})['then'](function(){if(_0x446f4f){return db[_0x75e9('0xa7')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xa8')]['update'](_0x39083c,_0x1c6984);}})['then'](function(){if(_0x446f4f){return db[_0x75e9('0xa9')]['update'](_0x39083c,_0x1c6984);}})['then'](function(){if(_0x446f4f){return db[_0x75e9('0xaa')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xa9')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xaa')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})['then'](function(){if(_0x446f4f){return db['SmsInteraction'][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['SmsMessage'][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xab')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})['then'](function(){if(_0x446f4f){return db[_0x75e9('0xac')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xad')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['OpenchannelMessage'][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['CmHopperFinal']['update'](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xae')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xaf')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xb0')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xb1')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['FaxQueueReport']['update'](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xb2')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['OpenchannelQueueReport'][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xb3')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['JscriptySessionReport'][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db['WhatsappInteraction']['update'](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0xb4')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})['then'](function(){if(_0x446f4f){return db[_0x75e9('0xb5')][_0x75e9('0x2c')](_0x39083c,_0x1c6984);}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return db[_0x75e9('0x32')]['destroy']({'where':{'id':[_0x103bab['body']['to'],_0x103bab[_0x75e9('0x9b')][_0x75e9('0x48')]]}});}})[_0x75e9('0x2d')](function(){if(_0x446f4f){return _0x446f4f;}})[_0x75e9('0x2d')](respondWithResult(_0x3a1092,null))['catch'](handleError(_0x3a1092,null));};exports[_0x75e9('0xa5')]=function(_0x3bce15,_0x466483){return db[_0x75e9('0x32')][_0x75e9('0x33')]()[_0x75e9('0x2d')](function(_0x56536c){if(_0x3bce15[_0x75e9('0x9b')]['tags']&&_[_0x75e9('0x9d')](_0x3bce15[_0x75e9('0x9b')][_0x75e9('0x9e')])){if(_0x3bce15[_0x75e9('0x9b')][_0x75e9('0x9e')][_0x75e9('0x35')]){_0x3bce15[_0x75e9('0x9b')][_0x75e9('0x9e')]=_0x3bce15[_0x75e9('0x9b')][_0x75e9('0x9e')]['join'](';')+';';}else{_0x3bce15[_0x75e9('0x9b')][_0x75e9('0x9e')]=null;}}else{_0x3bce15[_0x75e9('0x9b')]['tags']=null;}return db['CmContact'][_0x75e9('0xa5')](_0x3bce15[_0x75e9('0x9b')],{'fields':_[_0x75e9('0x34')](_0x56536c),'raw':!![]});})[_0x75e9('0x2d')](respondWithResult(_0x466483,0xc9))[_0x75e9('0x8f')](handleError(_0x466483,null));};exports[_0x75e9('0xb6')]=function(_0x28529e,_0x2a980b){var _0xb161ed=[];var _0x353a6b=0x0;var _0x17c89e=0x0;var _0x1c49b2=0x0;return db['CmContact'][_0x75e9('0x33')]()['then'](function(_0x35f9a4){return BPromise[_0x75e9('0xb7')](_0x28529e['body'],function(_0x11a864){var _0x42b425={'where':{'$or':[]},'defaults':_0x11a864,'fields':_['keys'](_0x35f9a4),'raw':!![]};if(_0x11a864[_0x75e9('0xb8')]){for(var _0x2a6cdf=0x0;_0x2a6cdf<_0x11a864[_0x75e9('0xb8')][_0x75e9('0x35')];_0x2a6cdf++){var _0x2aa26f={};_0x2aa26f[_0x11a864[_0x75e9('0xb8')][_0x2a6cdf]]=_0x11a864[_0x11a864[_0x75e9('0xb8')][_0x2a6cdf]];_0x42b425[_0x75e9('0x44')][_0x75e9('0xb9')]['push'](_0x2aa26f);}_0x42b425[_0x75e9('0x44')][_0x75e9('0x63')]=_0x11a864['ListId'];}return db[_0x75e9('0x32')][_0x75e9('0xba')](_0x42b425)[_0x75e9('0xbb')](function(_0x170a79,_0x84f894){if(_0x84f894){_0x353a6b++;}else{_0x1c49b2++;}})[_0x75e9('0x8f')](function(_0x5f370f){console['error'](_0x5f370f);_0x17c89e++;});});})[_0x75e9('0x2d')](function(_0x470225){if(_0x470225){return{'success':_0x353a6b,'failure':_0x17c89e,'duplicates':_0x1c49b2};}})[_0x75e9('0x2d')](respondWithResult(_0x2a980b,0xc9))[_0x75e9('0x8f')](handleError(_0x2a980b,null));};exports[_0x75e9('0xbc')]=function(_0x4a4e7a,_0x49bd8d,_0x22b089){var _0x511ca7;return db[_0x75e9('0x32')][_0x75e9('0x33')]()[_0x75e9('0x2d')](function(_0xcdc71a){return db[_0x75e9('0x32')][_0x75e9('0x91')]({'where':{'id':_0x4a4e7a[_0x75e9('0x92')]['id']},'include':[{'model':db[_0x75e9('0xbd')],'as':'Tags','attributes':['id','name',_0x75e9('0x47')],'required':_0x4a4e7a[_0x75e9('0x3c')][_0x75e9('0x67')]?!![]:![]}],'attributes':_['keys'](_0xcdc71a)});})['then'](function(_0x4a1c7a){_0x511ca7=_0x4a1c7a[_0x75e9('0x9c')]({'plain':!![]});var _0x5cdd44={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4a1c7a&&_0x4a1c7a[_0x75e9('0x63')]){if(_0x4a1c7a[_0x75e9('0x63')]){_0x5cdd44[_0x75e9('0x44')]['$and'][_0x75e9('0x37')]({'ListId':{'$ne':_0x4a1c7a[_0x75e9('0x63')]}});}}return db[_0x75e9('0x96')]['findAll'](_0x5cdd44);})[_0x75e9('0x2d')](function(_0x78706b){return _[_0x75e9('0xbe')](_0x511ca7,_[_0x75e9('0x7e')](_0x78706b,function(_0x26c7e4){return util[_0x75e9('0xbf')](_0x75e9('0xc0'),_0x26c7e4['id']);}));})[_0x75e9('0x2d')](handleEntityNotFound(_0x49bd8d,null))[_0x75e9('0x2d')](respondWithResult(_0x49bd8d,null))[_0x75e9('0x8f')](handleError(_0x49bd8d,null));};exports[_0x75e9('0x2c')]=function(_0x28f59a,_0x19d4a6){var _0x287b52;if(_0x28f59a[_0x75e9('0x9b')]['id']){delete _0x28f59a['body']['id'];}return db['CmContact']['find']({'where':{'id':_0x28f59a[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x19d4a6,null))[_0x75e9('0x2d')](saveUpdates(_0x28f59a[_0x75e9('0x9b')],null))['then'](function(_0x13026f){_0x287b52=_0x13026f;var _0x4c25d3={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x13026f&&_0x13026f[_0x75e9('0x63')]){if(_0x13026f['ListId']){_0x4c25d3['where'][_0x75e9('0xc1')][_0x75e9('0x37')]({'ListId':{'$ne':_0x13026f['ListId']}});}}return db[_0x75e9('0x96')][_0x75e9('0x97')](_0x4c25d3);})[_0x75e9('0x2d')](function(_0x2a131d){if(_0x2a131d){return _[_0x75e9('0xbe')](_['pickBy'](_0x28f59a[_0x75e9('0x9b')],function(_0x98879a,_0x33fd19){return _[_0x75e9('0x93')](_0x33fd19,_0x75e9('0x36'));}),_['map'](_0x2a131d,function(_0x29f1b0){return util['format']('cf_%d',_0x29f1b0['id']);}));}})[_0x75e9('0x2d')](function(_0x328680){if(_0x328680&&!_['isEmpty'](_0x328680)){var _0x1c4092=squel[_0x75e9('0x2c')]()[_0x75e9('0xc2')](_0x75e9('0xc3'))[_0x75e9('0xc4')](_0x328680)[_0x75e9('0x44')]('id\x20=\x20?',_0x28f59a[_0x75e9('0x92')]['id'])[_0x75e9('0xc5')]();return db['sequelize'][_0x75e9('0x3c')](_0x1c4092[_0x75e9('0x5d')],{'replacements':_0x1c4092[_0x75e9('0x9a')]});}})[_0x75e9('0x2d')](function(){if(_0x28f59a[_0x75e9('0x9b')][_0x75e9('0xc6')]&&_0x287b52){return db['CmHopper']['update']({'phone':_0x28f59a['body'][_0x75e9('0xc6')]},{'where':{'ContactId':_0x287b52['id']}});}})[_0x75e9('0x2d')](function(){return _0x287b52;})[_0x75e9('0x2d')](respondWithResult(_0x19d4a6,null))[_0x75e9('0x8f')](handleError(_0x19d4a6,null));};exports[_0x75e9('0xc7')]=function(_0xb9fd0c,_0x22cb7b,_0x58ca58){var _0x532756={};var _0x4d804b={};var _0x50c37c;var _0x3a7db7;return db[_0x75e9('0x32')]['findOne']({'where':{'id':_0xb9fd0c[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x22cb7b,null))[_0x75e9('0x2d')](function(_0x42bc38){if(_0x42bc38){_0x50c37c=_0x42bc38;_0x4d804b[_0x75e9('0x3b')]=_[_0x75e9('0x34')](db['Tag']['rawAttributes']);_0x4d804b[_0x75e9('0x3c')]=_['keys'](_0xb9fd0c[_0x75e9('0x3c')]);_0x4d804b[_0x75e9('0x3d')]=_['intersection'](_0x4d804b[_0x75e9('0x3b')],_0x4d804b[_0x75e9('0x3c')]);_0x532756['attributes']=_[_0x75e9('0x3e')](_0x4d804b[_0x75e9('0x3b')],qs['fields'](_0xb9fd0c[_0x75e9('0x3c')][_0x75e9('0x40')]));_0x532756[_0x75e9('0x3f')]=_0x532756[_0x75e9('0x3f')][_0x75e9('0x35')]?_0x532756['attributes']:_0x4d804b[_0x75e9('0x3b')];_0x532756[_0x75e9('0x74')]=qs['sort'](_0xb9fd0c[_0x75e9('0x3c')][_0x75e9('0x43')]);_0x532756[_0x75e9('0x44')]=qs[_0x75e9('0x3d')](_['pick'](_0xb9fd0c[_0x75e9('0x3c')],_0x4d804b['filters']));if(_0xb9fd0c[_0x75e9('0x3c')]['filter']){_0x532756[_0x75e9('0x44')]=_[_0x75e9('0x81')](_0x532756[_0x75e9('0x44')],{'$or':_[_0x75e9('0x7e')](_0x532756['attributes'],function(_0xdba31c){var _0x404aed={};_0x404aed[_0xdba31c]={'$like':'%'+_0xb9fd0c[_0x75e9('0x3c')][_0x75e9('0x5f')]+'%'};return _0x404aed;})});}_0x532756=_[_0x75e9('0x81')]({},_0x532756,_0xb9fd0c[_0x75e9('0xc8')]);return _0x50c37c[_0x75e9('0xc7')](_0x532756);}})['then'](function(_0x4f4edf){if(_0x4f4edf){_0x3a7db7=_0x4f4edf['length'];if(!_0xb9fd0c[_0x75e9('0x3c')][_0x75e9('0x41')](_0x75e9('0x42'))){_0x532756[_0x75e9('0x23')]=qs[_0x75e9('0x23')](_0xb9fd0c[_0x75e9('0x3c')][_0x75e9('0x23')]);_0x532756['offset']=qs[_0x75e9('0x22')](_0xb9fd0c['query'][_0x75e9('0x22')]);}return _0x50c37c['getTags'](_0x532756);}})[_0x75e9('0x2d')](function(_0x383b3a){if(_0x383b3a){return _0x383b3a?{'count':_0x3a7db7,'rows':_0x383b3a}:null;}})[_0x75e9('0x2d')](respondWithResult(_0x22cb7b,null))[_0x75e9('0x8f')](handleError(_0x22cb7b,null));};exports[_0x75e9('0xc9')]=function(_0x42e40f,_0x38a497,_0x2bfad8){if(_0x42e40f[_0x75e9('0x9b')]['id']){delete _0x42e40f[_0x75e9('0x9b')]['id'];}return db[_0x75e9('0x32')][_0x75e9('0xca')]({'where':{'id':_0x42e40f[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x38a497,null))[_0x75e9('0x2d')](function(_0x5ea5db){if(_0x5ea5db){return _0x5ea5db[_0x75e9('0xc9')](_0x42e40f['body'][_0x75e9('0xcb')]||[]);}return null;})[_0x75e9('0x2d')](respondWithResult(_0x38a497,null))[_0x75e9('0x8f')](handleError(_0x38a497,null));};exports[_0x75e9('0xcc')]=function(_0x239cb3,_0x5d070d,_0x2ed8b0){var _0x599c8d={'raw':![],'where':{}};var _0x567f17={};var _0x36dbc8={'count':0x0,'rows':[]};return db[_0x75e9('0x32')][_0x75e9('0xca')]({'where':{'id':_0x239cb3[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x5d070d,null))[_0x75e9('0x2d')](function(_0x183983){if(_0x183983){_0x567f17[_0x75e9('0x3b')]=_['keys'](db[_0x75e9('0xa1')][_0x75e9('0xcd')]);_0x567f17[_0x75e9('0x3c')]=_[_0x75e9('0x34')](_0x239cb3[_0x75e9('0x3c')]);_0x567f17[_0x75e9('0x3d')]=_['intersection'](_0x567f17['model'],_0x567f17['query']);_0x599c8d[_0x75e9('0x3f')]=_['intersection'](_0x567f17[_0x75e9('0x3b')],qs[_0x75e9('0x40')](_0x239cb3[_0x75e9('0x3c')][_0x75e9('0x40')]));_0x599c8d[_0x75e9('0x3f')]=_0x599c8d['attributes']['length']?_0x599c8d[_0x75e9('0x3f')]:_0x567f17[_0x75e9('0x3b')];if(!_0x239cb3['query']['hasOwnProperty'](_0x75e9('0x42'))){_0x599c8d[_0x75e9('0x23')]=qs[_0x75e9('0x23')](_0x239cb3['query'][_0x75e9('0x23')]);_0x599c8d['offset']=qs['offset'](_0x239cb3['query'][_0x75e9('0x22')]);}_0x599c8d['order']=qs[_0x75e9('0x43')](_0x239cb3['query'][_0x75e9('0x43')]);_0x599c8d[_0x75e9('0x44')]=qs[_0x75e9('0x3d')](_[_0x75e9('0xce')](_0x239cb3[_0x75e9('0x3c')],_0x567f17[_0x75e9('0x3d')]));_0x599c8d[_0x75e9('0x44')][_0x75e9('0xcf')]=_0x183983['id'];if(_0x239cb3[_0x75e9('0x3c')][_0x75e9('0x5f')]){_0x599c8d[_0x75e9('0x44')]=_[_0x75e9('0x81')](_0x599c8d[_0x75e9('0x44')],{'$or':_['map'](_0x599c8d[_0x75e9('0x3f')],function(_0xd72e4){var _0x55539f={};_0x55539f[_0xd72e4]={'$like':'%'+_0x239cb3['query'][_0x75e9('0x5f')]+'%'};return _0x55539f;})});}_0x599c8d=_[_0x75e9('0x81')]({},_0x599c8d,_0x239cb3[_0x75e9('0xc8')]);return db[_0x75e9('0xa1')][_0x75e9('0x25')]({'where':_0x599c8d[_0x75e9('0x44')]})[_0x75e9('0x2d')](function(_0x49f6a3){_0x36dbc8['count']=_0x49f6a3;if(_0x239cb3['query'][_0x75e9('0xd0')]){_0x599c8d[_0x75e9('0xd1')]=[{'all':!![]}];}return db['CmHopper'][_0x75e9('0x97')](_0x599c8d);})[_0x75e9('0x2d')](function(_0x1af090){_0x36dbc8[_0x75e9('0x8e')]=_0x1af090;return _0x36dbc8;});}})[_0x75e9('0x2d')](respondWithFilteredResult(_0x5d070d,_0x599c8d))[_0x75e9('0x8f')](handleError(_0x5d070d,null));};exports[_0x75e9('0xd2')]=function(_0x5740b7,_0x522625,_0x4ba375){var _0x541125={'raw':!![],'where':{}};var _0x106224={};var _0x2e1544={'count':0x0,'rows':[]};return db[_0x75e9('0x32')][_0x75e9('0xca')]({'where':{'id':_0x5740b7[_0x75e9('0x92')]['id']}})['then'](handleEntityNotFound(_0x522625,null))['then'](function(_0xc18523){if(_0xc18523){_0x106224[_0x75e9('0x3b')]=_['keys'](db[_0x75e9('0xae')][_0x75e9('0xcd')]);_0x106224[_0x75e9('0x3c')]=_['keys'](_0x5740b7[_0x75e9('0x3c')]);_0x106224[_0x75e9('0x3d')]=_[_0x75e9('0x3e')](_0x106224['model'],_0x106224[_0x75e9('0x3c')]);_0x541125[_0x75e9('0x3f')]=_[_0x75e9('0x3e')](_0x106224[_0x75e9('0x3b')],qs['fields'](_0x5740b7[_0x75e9('0x3c')][_0x75e9('0x40')]));_0x541125[_0x75e9('0x3f')]=_0x541125[_0x75e9('0x3f')][_0x75e9('0x35')]?_0x541125[_0x75e9('0x3f')]:_0x106224[_0x75e9('0x3b')];if(!_0x5740b7[_0x75e9('0x3c')][_0x75e9('0x41')](_0x75e9('0x42'))){_0x541125['limit']=qs[_0x75e9('0x23')](_0x5740b7[_0x75e9('0x3c')][_0x75e9('0x23')]);_0x541125[_0x75e9('0x22')]=qs['offset'](_0x5740b7[_0x75e9('0x3c')][_0x75e9('0x22')]);}_0x541125[_0x75e9('0x74')]=qs[_0x75e9('0x43')](_0x5740b7[_0x75e9('0x3c')]['sort']);_0x541125[_0x75e9('0x44')]=qs[_0x75e9('0x3d')](_[_0x75e9('0xce')](_0x5740b7[_0x75e9('0x3c')],_0x106224[_0x75e9('0x3d')]));_0x541125['where']['ContactId']=_0xc18523['id'];if(_0x5740b7['query'][_0x75e9('0x5f')]){_0x541125[_0x75e9('0x44')]=_[_0x75e9('0x81')](_0x541125[_0x75e9('0x44')],{'$or':_[_0x75e9('0x7e')](_0x541125[_0x75e9('0x3f')],function(_0x59e725){var _0x2c5268={};_0x2c5268[_0x59e725]={'$like':'%'+_0x5740b7['query'][_0x75e9('0x5f')]+'%'};return _0x2c5268;})});}_0x541125=_['merge']({},_0x541125,_0x5740b7['options']);return db[_0x75e9('0xae')][_0x75e9('0x25')]({'where':_0x541125[_0x75e9('0x44')]})[_0x75e9('0x2d')](function(_0x587f2d){_0x2e1544[_0x75e9('0x25')]=_0x587f2d;if(_0x5740b7[_0x75e9('0x3c')][_0x75e9('0xd0')]){_0x541125[_0x75e9('0xd1')]=[{'all':!![]}];}return db[_0x75e9('0xae')][_0x75e9('0x97')](_0x541125);})[_0x75e9('0x2d')](function(_0x4f50d5){_0x2e1544[_0x75e9('0x8e')]=_0x4f50d5;return _0x2e1544;});}})[_0x75e9('0x2d')](respondWithFilteredResult(_0x522625,_0x541125))['catch'](handleError(_0x522625,null));};exports[_0x75e9('0xd3')]=function(_0x79c86c,_0x36159c,_0xccb5b9){var _0x3051ef={'raw':!![],'where':{}};var _0x5f4d96={};var _0x47deb3={'count':0x0,'rows':[]};return db[_0x75e9('0x32')]['findOne']({'where':{'id':_0x79c86c[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x36159c,null))[_0x75e9('0x2d')](function(_0x16ebbd){if(_0x16ebbd){_0x5f4d96[_0x75e9('0x3b')]=_[_0x75e9('0x34')](db[_0x75e9('0xd4')]['rawAttributes']);_0x5f4d96[_0x75e9('0x3c')]=_['keys'](_0x79c86c['query']);_0x5f4d96[_0x75e9('0x3d')]=_[_0x75e9('0x3e')](_0x5f4d96['model'],_0x5f4d96[_0x75e9('0x3c')]);_0x3051ef[_0x75e9('0x3f')]=_[_0x75e9('0x3e')](_0x5f4d96[_0x75e9('0x3b')],qs[_0x75e9('0x40')](_0x79c86c['query']['fields']));_0x3051ef[_0x75e9('0x3f')]=_0x3051ef[_0x75e9('0x3f')]['length']?_0x3051ef['attributes']:_0x5f4d96[_0x75e9('0x3b')];if(!_0x79c86c[_0x75e9('0x3c')][_0x75e9('0x41')](_0x75e9('0x42'))){_0x3051ef[_0x75e9('0x23')]=qs[_0x75e9('0x23')](_0x79c86c['query'][_0x75e9('0x23')]);_0x3051ef[_0x75e9('0x22')]=qs[_0x75e9('0x22')](_0x79c86c[_0x75e9('0x3c')][_0x75e9('0x22')]);}_0x3051ef[_0x75e9('0x74')]=qs[_0x75e9('0x43')](_0x79c86c['query'][_0x75e9('0x43')]);_0x3051ef['where']=qs[_0x75e9('0x3d')](_['pick'](_0x79c86c[_0x75e9('0x3c')],_0x5f4d96[_0x75e9('0x3d')]));_0x3051ef[_0x75e9('0x44')][_0x75e9('0xcf')]=_0x16ebbd['id'];if(_0x79c86c[_0x75e9('0x3c')][_0x75e9('0x5f')]){_0x3051ef[_0x75e9('0x44')]=_[_0x75e9('0x81')](_0x3051ef[_0x75e9('0x44')],{'$or':_[_0x75e9('0x7e')](_0x3051ef[_0x75e9('0x3f')],function(_0x507587){var _0x4b3334={};_0x4b3334[_0x507587]={'$like':'%'+_0x79c86c[_0x75e9('0x3c')][_0x75e9('0x5f')]+'%'};return _0x4b3334;})});}_0x3051ef=_[_0x75e9('0x81')]({},_0x3051ef,_0x79c86c[_0x75e9('0xc8')]);return db[_0x75e9('0xd4')]['count']({'where':_0x3051ef[_0x75e9('0x44')]})[_0x75e9('0x2d')](function(_0x573ffa){_0x47deb3[_0x75e9('0x25')]=_0x573ffa;if(_0x79c86c[_0x75e9('0x3c')]['includeAll']){_0x3051ef[_0x75e9('0xd1')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x75e9('0x97')](_0x3051ef);})[_0x75e9('0x2d')](function(_0x1b0a09){_0x47deb3[_0x75e9('0x8e')]=_0x1b0a09;return _0x47deb3;});}})['then'](respondWithFilteredResult(_0x36159c,_0x3051ef))[_0x75e9('0x8f')](handleError(_0x36159c,null));};exports[_0x75e9('0xd5')]=function(_0x32672b,_0x547b45,_0x15bd2d){var _0x344ad2={'raw':!![],'where':{}};var _0x3fc9de={};var _0x988d9c={'count':0x0,'rows':[]};return db['CmContact'][_0x75e9('0xca')]({'where':{'id':_0x32672b[_0x75e9('0x92')]['id']}})[_0x75e9('0x2d')](handleEntityNotFound(_0x547b45,null))[_0x75e9('0x2d')](function(_0x444c05){if(_0x444c05){_0x3fc9de[_0x75e9('0x3b')]=_[_0x75e9('0x34')](db[_0x75e9('0xd6')][_0x75e9('0xcd')]);_0x3fc9de[_0x75e9('0x3c')]=_['keys'](_0x32672b[_0x75e9('0x3c')]);_0x3fc9de['filters']=_['intersection'](_0x3fc9de[_0x75e9('0x3b')],_0x3fc9de[_0x75e9('0x3c')]);_0x344ad2[_0x75e9('0x3f')]=_[_0x75e9('0x3e')](_0x3fc9de[_0x75e9('0x3b')],qs[_0x75e9('0x40')](_0x32672b[_0x75e9('0x3c')][_0x75e9('0x40')]));_0x344ad2[_0x75e9('0x3f')]=_0x344ad2[_0x75e9('0x3f')][_0x75e9('0x35')]?_0x344ad2[_0x75e9('0x3f')]:_0x3fc9de[_0x75e9('0x3b')];if(!_0x32672b[_0x75e9('0x3c')][_0x75e9('0x41')](_0x75e9('0x42'))){_0x344ad2[_0x75e9('0x23')]=qs[_0x75e9('0x23')](_0x32672b[_0x75e9('0x3c')][_0x75e9('0x23')]);_0x344ad2['offset']=qs['offset'](_0x32672b['query']['offset']);}_0x344ad2[_0x75e9('0x74')]=qs[_0x75e9('0x43')](_0x32672b[_0x75e9('0x3c')][_0x75e9('0x43')]);_0x344ad2[_0x75e9('0x44')]=qs[_0x75e9('0x3d')](_[_0x75e9('0xce')](_0x32672b['query'],_0x3fc9de['filters']));_0x344ad2[_0x75e9('0x44')][_0x75e9('0xcf')]=_0x444c05['id'];if(_0x32672b[_0x75e9('0x3c')]['filter']){_0x344ad2['where']=_['merge'](_0x344ad2[_0x75e9('0x44')],{'$or':_[_0x75e9('0x7e')](_0x344ad2[_0x75e9('0x3f')],function(_0x5afffd){var _0x46dcd0={};_0x46dcd0[_0x5afffd]={'$like':'%'+_0x32672b[_0x75e9('0x3c')][_0x75e9('0x5f')]+'%'};return _0x46dcd0;})});}_0x344ad2=_[_0x75e9('0x81')]({},_0x344ad2,_0x32672b[_0x75e9('0xc8')]);return db['JscriptySessionReport'][_0x75e9('0x25')]({'where':_0x344ad2[_0x75e9('0x44')]})[_0x75e9('0x2d')](function(_0x2850c6){_0x988d9c[_0x75e9('0x25')]=_0x2850c6;if(_0x32672b[_0x75e9('0x3c')]['includeAll']){_0x344ad2[_0x75e9('0xd1')]=[{'all':!![]}];}return db[_0x75e9('0xd6')][_0x75e9('0x97')](_0x344ad2);})['then'](function(_0x3508c3){_0x988d9c[_0x75e9('0x8e')]=_0x3508c3;return _0x988d9c;});}})[_0x75e9('0x2d')](respondWithFilteredResult(_0x547b45,_0x344ad2))['catch'](handleError(_0x547b45,null));};exports[_0x75e9('0xd7')]=function(_0x17e7e3,_0x54b683,_0x3b8cda){try{if(!_0x17e7e3[_0x75e9('0x9b')]['ListId']){throw new Error(_0x75e9('0xd8'));}if(!_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0xd9')]){throw new Error(_0x75e9('0xda'));}if(!_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0xdb')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0xdc')]){throw new Error(_0x75e9('0xdd'));}var _0x5e8ce9=_0x17e7e3[_0x75e9('0x9b')]['binding_keys'][_0x75e9('0x53')](',');var _0x53334e=_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0xdb')]['split'](',');if(!_0x5e8ce9[_0x75e9('0x35')]||!_0x53334e[_0x75e9('0x35')]||_0x5e8ce9[_0x75e9('0x35')]!==_0x53334e[_0x75e9('0x35')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x17e7e3['body'][_0x75e9('0x40')]=_[_0x75e9('0xde')](_0x5e8ce9,_0x53334e);if(!_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0x40')][_0x75e9('0xc6')]){throw new Error(_0x75e9('0xdf'));}if(!_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0x40')][_0x75e9('0xe0')]){throw new Error(_0x75e9('0xe1'));}var _0x2fc36a=path[_0x75e9('0x9f')](config[_0x75e9('0xe2')],_0x75e9('0xe3'),_0x17e7e3[_0x75e9('0xe4')][_0x75e9('0xe5')]);fs[_0x75e9('0xe6')](_0x2fc36a,parseInt(_0x75e9('0xe7'),0x8));var _0x53d413=require('child_process')[_0x75e9('0xe8')](path['join'](__dirname,_0x75e9('0xe9')),[_0x2fc36a,_0x17e7e3['body'][_0x75e9('0xd9')],_0x17e7e3['body'][_0x75e9('0xdb')],_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0x63')],_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0xea')],_0x17e7e3['body']['duplicates'],_0x17e7e3[_0x75e9('0x9b')][_0x75e9('0xdc')]]);return _0x54b683[_0x75e9('0x20')](0xc8)[_0x75e9('0x28')]({'message':_0x75e9('0xeb'),'pid':_0x53d413[_0x75e9('0xec')]});}catch(_0xe53573){return _0x54b683['status'](0x1f4)['send'](_0xe53573);}};exports[_0x75e9('0xed')]=function(_0x271bb6,_0x4a27ea,_0x34d578){var _0x296e2b=fs[_0x75e9('0xee')](_0x271bb6['file'][_0x75e9('0xef')]);Papa['parse'](_0x296e2b,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x1c1b4b){return _0x4a27ea[_0x75e9('0x20')](0xc8)[_0x75e9('0x28')]({'file':_0x271bb6[_0x75e9('0xe4')],'fields':_0x1c1b4b[_0x75e9('0xf0')][_0x75e9('0x40')]});}});};exports[_0x75e9('0xf1')]=function(_0x1715f6,_0x36edad,_0x2508b6){return db['User'][_0x75e9('0x97')]({'raw':!![],'attributes':['id'],'where':{'role':_0x75e9('0x79')}})[_0x75e9('0x2d')](function(_0x2db275){var _0x27e877=![];if(!_0x1715f6[_0x75e9('0x9b')][_0x75e9('0x63')]){throw new Error(_0x75e9('0xd8'));}if(!_0x1715f6[_0x75e9('0x9b')][_0x75e9('0xf2')][_0x75e9('0xc6')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x1715f6[_0x75e9('0x9b')]['binding'][_0x75e9('0xe0')]){throw new Error(_0x75e9('0xe1'));}if(!_0x1715f6['body'][_0x75e9('0xdc')]){throw new Error(_0x75e9('0xdd'));}var _0x496111=require(_0x75e9('0xf3'))[_0x75e9('0xe8')](path[_0x75e9('0x9f')](__dirname,'../../components/import/cm/csv2'),[_0x1715f6[_0x75e9('0x92')]['id'],JSON[_0x75e9('0xf4')](_0x1715f6[_0x75e9('0x9b')]),JSON[_0x75e9('0xf4')](_0x2db275)]);_0x496111['on'](_0x75e9('0xf5'),function(_0xc78477){_0x27e877=!![];return _0x36edad[_0x75e9('0x20')](0xc8)[_0x75e9('0x28')]({'message':_0x75e9('0xf6'),'pid':_0x496111['pid']});});_0x496111['on']('exit',function(_0x601c1b){if(_0x601c1b&&!_0x27e877){return _0x36edad[_0x75e9('0x20')](0x1f4)['json']({'message':'error\x20child\x20process','pid':_0x496111['pid']});}});})[_0x75e9('0x8f')](handleError(_0x36edad,null));};exports[_0x75e9('0xf7')]=function(_0x53b430,_0x4f765d){var _0x1576e1=[_0x75e9('0xf8'),_0x75e9('0xf9'),_0x75e9('0xfa'),'openchannel',_0x75e9('0xfb'),_0x75e9('0xfc'),'voice'];var _0x46c72f={'offset':0x0,'order':qs[_0x75e9('0x43')](_0x75e9('0xfd'))},_0x8e9f99={'count':0x0,'rows':[]};Promise[_0x75e9('0x77')]()[_0x75e9('0x2d')](function(){if(_0x53b430['query'][_0x75e9('0xfe')]){if(!_[_0x75e9('0xff')](_0x1576e1,_0x53b430[_0x75e9('0x3c')][_0x75e9('0xfe')][_0x75e9('0x100')]())){throw new Error(_0x75e9('0x101'));}_0x1576e1=[_0x53b430['query'][_0x75e9('0xfe')][_0x75e9('0x100')]()];}if(_0x53b430[_0x75e9('0x3c')]['range']){try{var _0x4dd3f2=JSON[_0x75e9('0x102')](_0x53b430['query']['range']);if(!moment(_0x4dd3f2[_0x75e9('0x48')])[_0x75e9('0x103')]()){throw new Error(_0x75e9('0x104'));}if(!moment(_0x4dd3f2['to'])[_0x75e9('0x103')]()){throw new Error(_0x75e9('0x105'));}}catch(_0x3f9c71){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x53b430[_0x75e9('0x3c')]['hasOwnProperty'](_0x75e9('0x42'))){_0x46c72f[_0x75e9('0x23')]=qs[_0x75e9('0x23')](_0x53b430[_0x75e9('0x3c')][_0x75e9('0x23')]||0xa);_0x46c72f[_0x75e9('0x22')]=qs[_0x75e9('0x22')](_0x53b430[_0x75e9('0x3c')][_0x75e9('0x22')]);}var _0x2aa40e=_0x1576e1['map'](function(_0x888c99){if(_0x888c99===_0x75e9('0x106')){var _0x2784b6={'attributes':['id',_0x75e9('0x107'),'type',_0x75e9('0x108'),'destination','callerid',_0x75e9('0x109'),_0x75e9('0x10a'),'duration',_0x75e9('0x10b'),_0x75e9('0x10c'),'userDisposition',_0x75e9('0x10d'),'userThirdDisposition','UserId'],'where':{'ContactId':_0x53b430[_0x75e9('0x92')]['id']},'include':[{'model':db[_0x75e9('0x56')],'as':_0x75e9('0x56'),'attributes':['id',_0x75e9('0x2f'),_0x75e9('0x10e'),'alias']}],'order':[[_0x75e9('0x10c'),_0x75e9('0x10f')]]};if(_0x53b430[_0x75e9('0x3c')][_0x75e9('0x110')]){_0x2784b6[_0x75e9('0x44')][_0x75e9('0x10c')]={'$gte':_0x4dd3f2['from'],'$lte':_0x4dd3f2['to']};}return db[_0x75e9('0xb0')][_0x75e9('0x111')](_0x2784b6)[_0x75e9('0x2d')](function(_0x410be2){_0x8e9f99['count']+=_0x410be2[_0x75e9('0x25')];return _['map'](_0x410be2[_0x75e9('0x8e')],function(_0x29a832){var _0x6c7e6a=_0x29a832['get']({'plain':!![]});_0x6c7e6a[_0x75e9('0xfe')]=_0x888c99;if(_0x6c7e6a[_0x75e9('0x56')]){_0x6c7e6a[_0x75e9('0x56')]={'id':_0x6c7e6a[_0x75e9('0x56')]['id'],'name':_0x6c7e6a[_0x75e9('0x56')][_0x75e9('0x2f')],'fullname':_0x6c7e6a[_0x75e9('0x56')]['fullname'],'alias':_0x6c7e6a['User'][_0x75e9('0x98')]};}return _0x6c7e6a;});});}else{var _0x34e481=_[_0x75e9('0x112')](_0x888c99)+(_0x888c99===_0x75e9('0xf9')?_0x75e9('0x113'):_0x75e9('0x114'));var _0x1cd120={'attributes':['id',_0x75e9('0x115'),'closedAt',_0x75e9('0x10c'),_0x75e9('0x10b'),_0x75e9('0x116'),'secondDisposition','thirdDisposition',_0x75e9('0x117'),_0x34e481+'Id'],'where':{'ContactId':_0x53b430[_0x75e9('0x92')]['id']},'include':[{'model':db[_0x34e481],'as':'Account','attributes':['id',_0x75e9('0x2f'),'key']},{'model':db[_0x75e9('0x56')],'as':_0x75e9('0x118'),'attributes':['id',_0x75e9('0x2f'),_0x75e9('0x10e')]},{'model':db[_0x75e9('0xbd')],'as':_0x75e9('0x8d'),'attributes':['id',_0x75e9('0x2f'),_0x75e9('0x47')],'through':{'attributes':[]}}],'order':[[_0x75e9('0x10c'),_0x75e9('0x10f')]]};if(_0x53b430['query'][_0x75e9('0x110')]){_0x1cd120[_0x75e9('0x44')][_0x75e9('0x10c')]={'$gte':_0x4dd3f2[_0x75e9('0x48')],'$lte':_0x4dd3f2['to']};}switch(_0x888c99){case'chat':_0x1cd120[_0x75e9('0x3f')][_0x75e9('0x37')](_0x75e9('0x119'),_0x75e9('0x11a'),_0x75e9('0x11b'),_0x75e9('0x11c'),'osName',_0x75e9('0x11d'),_0x75e9('0x11e'),_0x75e9('0x11f'),_0x75e9('0x120'));break;case _0x75e9('0xf8'):_0x1cd120['attributes']['push'](_0x75e9('0x121'),_0x75e9('0x122'));break;case'openchannel':_0x1cd120['attributes'][_0x75e9('0x37')](_0x75e9('0x123'),'threadId');break;}return db[_[_0x75e9('0x112')](_0x888c99)+'Interaction'][_0x75e9('0x111')](_0x1cd120)['then'](function(_0x5ef6ba){_0x8e9f99[_0x75e9('0x25')]+=_0x5ef6ba['count'];return _[_0x75e9('0x7e')](_0x5ef6ba[_0x75e9('0x8e')],function(_0x3915ed){var _0x389579=_0x3915ed[_0x75e9('0x9c')]({'plain':!![]});_0x389579['channel']=_0x888c99;if(_0x389579[_0x75e9('0x118')]){_0x389579[_0x75e9('0x118')]={'id':_0x389579[_0x75e9('0x118')]['id'],'name':_0x389579[_0x75e9('0x118')][_0x75e9('0x2f')],'fullname':_0x389579['Owner'][_0x75e9('0x10e')]};}return _0x389579;});});}});return Promise[_0x75e9('0x38')](_0x2aa40e);})[_0x75e9('0x2d')](function(_0x140241){return _(_0x140241)['flatten']()[_0x75e9('0x124')]('createdAt')[_0x75e9('0x125')]()['value']();})[_0x75e9('0x2d')](function(_0x110c6c){_0x8e9f99['rows']=_0x46c72f[_0x75e9('0x23')]?_0x110c6c['slice'](_0x46c72f[_0x75e9('0x22')],_0x46c72f['offset']+_0x46c72f[_0x75e9('0x23')]):_0x110c6c;return _0x8e9f99;})['then'](respondWithFilteredResult(_0x4f765d,_0x46c72f))['catch'](handleError(_0x4f765d,null));};
\ No newline at end of file
index 4f46c9b..92e7813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x906b=['hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4cfdc2,_0x259c79){var _0x4fabad=function(_0x13a373){while(--_0x13a373){_0x4cfdc2['push'](_0x4cfdc2['shift']());}};_0x4fabad(++_0x259c79);}(_0x906b,0x142));var _0xb906=function(_0x34ad72,_0x1e43f6){_0x34ad72=_0x34ad72-0x0;var _0x5c9aa8=_0x906b[_0x34ad72];return _0x5c9aa8;};'use strict';var EventEmitter=require(_0xb906('0x0'));var CmContact=require(_0xb906('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xb906('0x2')](0x0);var events={'afterCreate':_0xb906('0x3'),'afterUpdate':_0xb906('0x4'),'afterDestroy':_0xb906('0x5')};function emitEvent(_0x43298e){return function(_0x193947,_0x45a833,_0x405890){CmContactEvents[_0xb906('0x6')](_0x43298e+':'+_0x193947['id'],_0x193947);CmContactEvents[_0xb906('0x6')](_0x43298e,_0x193947);_0x405890(null);};}for(var e in events){if(events[_0xb906('0x7')](e)){var event=events[e];CmContact[_0xb906('0x8')](e,emitEvent(event));}}module[_0xb906('0x9')]=CmContactEvents;
\ No newline at end of file
+var _0x8ba6=['remove','emit','hook','exports','events','../../mysqldb','CmContact','setMaxListeners','update'];(function(_0x3c500e,_0x51614d){var _0x575924=function(_0x7db7c4){while(--_0x7db7c4){_0x3c500e['push'](_0x3c500e['shift']());}};_0x575924(++_0x51614d);}(_0x8ba6,0x1ab));var _0x68ba=function(_0x18ac95,_0xc16cc0){_0x18ac95=_0x18ac95-0x0;var _0x204cf5=_0x8ba6[_0x18ac95];return _0x204cf5;};'use strict';var EventEmitter=require(_0x68ba('0x0'));var CmContact=require(_0x68ba('0x1'))['db'][_0x68ba('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x68ba('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x68ba('0x4'),'afterDestroy':_0x68ba('0x5')};function emitEvent(_0x45b11e){return function(_0x5ec44e,_0x12666d,_0x2cacb2){CmContactEvents[_0x68ba('0x6')](_0x45b11e+':'+_0x5ec44e['id'],_0x5ec44e);CmContactEvents[_0x68ba('0x6')](_0x45b11e,_0x5ec44e);_0x2cacb2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x68ba('0x7')](e,emitEvent(event));}}module[_0x68ba('0x8')]=CmContactEvents;
\ No newline at end of file
index ef06636..b520943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea12=['CmList','BlackLists','get','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','findAll','Lists','dialCheckDuplicateType','always','message','destroy','ContactId','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','cm_contacts','fti_cm_contacts','firstName','phone','mobile','utf8mb4','models','error','cmContact','afterCreate','CmHopper','findOne','then','isNil','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','inspect','\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','VoiceQueue','outbound','length','onlyIfOpen'];(function(_0x2bc98e,_0x49ed1c){var _0x24b895=function(_0x58f303){while(--_0x58f303){_0x2bc98e['push'](_0x2bc98e['shift']());}};_0x24b895(++_0x49ed1c);}(_0xea12,0x1c5));var _0x2ea1=function(_0x19f048,_0x647a39){_0x19f048=_0x19f048-0x0;var _0x7c8799=_0xea12[_0x19f048];return _0x7c8799;};'use strict';var _=require(_0x2ea1('0x0'));var util=require(_0x2ea1('0x1'));var logger=require(_0x2ea1('0x2'))(_0x2ea1('0x3'));var moment=require('moment');var BPromise=require(_0x2ea1('0x4'));var rp=require(_0x2ea1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ea1('0x6'));var config=require(_0x2ea1('0x7'));var attributes=require(_0x2ea1('0x8'));module[_0x2ea1('0x9')]=function(_0x5ddb58,_0x32e4f4){return _0x5ddb58[_0x2ea1('0xa')]('CmContact',attributes,{'tableName':_0x2ea1('0xb'),'paranoid':!![],'indexes':[{'name':'phone','fields':['phone']},{'name':_0x2ea1('0xc'),'fields':[_0x2ea1('0xd'),'lastName',_0x2ea1('0xe'),_0x2ea1('0xf'),'fax','email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x2ea1('0x10'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4fdb2d,_0x4bd4b9,_0x160238){var _0x3d8148=_0x5ddb58[_0x2ea1('0x11')];var _0x13908b=_0x4fdb2d['get']({'plain':!![]});function _0x587d01(){return function(_0x35e04a){logger[_0x2ea1('0x12')](_0x2ea1('0x13'),_0x2ea1('0x14'),util['inspect'](_0x35e04a,{'showHidden':![],'depth':null}));};}var _0x4dfcbb=function(_0x23344d){return new BPromise(function(_0x16ee6d,_0x14bfe7){_0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x16')]({'where':{'phone':_0x13908b[_0x2ea1('0xe')],'VoiceQueueId':_0x23344d['id']}})[_0x2ea1('0x17')](function(_0x1c1f03){if(!_[_0x2ea1('0x18')](_0x1c1f03)){throw new Error('cmContact,\x20afterCreate\x20'+_0x13908b[_0x2ea1('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x23344d['id']);}return _0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b[_0x2ea1('0x1b')]:0x2,'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')),'callback':_0x13908b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()['format'](_0x2ea1('0x1e')):undefined,'VoiceQueueId':_0x23344d['id']});})[_0x2ea1('0x20')](function(_0x1e55ec){_0x14bfe7(_0x1e55ec);});});};var _0x1ac7ab=function(_0x2e5975){return new BPromise(function(_0x1b2a50,_0x1a2c99){_0x3d8148[_0x2ea1('0x15')]['findOne']({'where':{'phone':_0x13908b[_0x2ea1('0xe')],'VoiceQueueId':_0x2e5975['id']}})[_0x2ea1('0x17')](function(_0x140a37){if(!_[_0x2ea1('0x18')](_0x140a37)){throw new Error(_0x2ea1('0x21')+_0x13908b[_0x2ea1('0xe')]+_0x2ea1('0x22')+_0x2e5975['id']);}return _0x3d8148['CmHopperFinal'][_0x2ea1('0x16')]({'where':{'calleridnum':_0x13908b[_0x2ea1('0xe')],'VoiceQueueId':_0x2e5975['id']}});})[_0x2ea1('0x17')](function(_0x219b28){if(!_['isNil'](_0x219b28)){throw new Error(_0x2ea1('0x23')+_0x13908b[_0x2ea1('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x2e5975['id']);}return _0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b['ListId'],'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b[_0x2ea1('0x1b')]:0x2,'scheduledat':_0x13908b['scheduledat']?_0x13908b[_0x2ea1('0x1c')]:moment()['format'](_0x2ea1('0x1e')),'callback':_0x13908b[_0x2ea1('0x1f')]?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b['callbackUniqueid']:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()['format'](_0x2ea1('0x1e')):undefined,'VoiceQueueId':_0x2e5975['id']});})[_0x2ea1('0x20')](function(_0x2172fd){_0x1a2c99(_0x2172fd);});});};function _0x34ba5b(){return function(_0x37f8a0){logger[_0x2ea1('0x12')](_0x2ea1('0x13'),'afterCreate',util[_0x2ea1('0x24')](_0x37f8a0,{'showHidden':![],'depth':null}));};}var _0x7c725d=function(_0x2e10d9){return new BPromise(function(_0x280e5f,_0x1cb0d7){_0x3d8148[_0x2ea1('0x15')]['findOne']({'where':{'phone':_0x13908b['phone'],'CampaignId':_0x2e10d9['id']}})[_0x2ea1('0x17')](function(_0x51c0c8){if(!_[_0x2ea1('0x18')](_0x51c0c8)){throw new Error(_0x2ea1('0x21')+_0x13908b[_0x2ea1('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x2e10d9['id']);}return _0x3d8148[_0x2ea1('0x15')]['create']({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b['ListId'],'priority':_0x13908b['priority']?_0x13908b['priority']:0x2,'scheduledat':_0x13908b['scheduledat']?_0x13908b[_0x2ea1('0x1c')]:moment()['format'](_0x2ea1('0x1e')),'callback':_0x13908b[_0x2ea1('0x1f')]?!![]:![],'callbackuniqueid':_0x13908b['callbackUniqueid']?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()[_0x2ea1('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x2e10d9['id']});})[_0x2ea1('0x20')](function(_0x5ce2d1){_0x1cb0d7(_0x5ce2d1);});});};var _0x4167de=function(_0x5e88b5){return new BPromise(function(_0x3f1597,_0x149115){_0x3d8148['CmHopper'][_0x2ea1('0x16')]({'where':{'phone':_0x13908b['phone'],'CampaignId':_0x5e88b5['id']}})['then'](function(_0x52b80d){if(!_[_0x2ea1('0x18')](_0x52b80d)){throw new Error(_0x2ea1('0x21')+_0x13908b[_0x2ea1('0xe')]+_0x2ea1('0x25')+_0x5e88b5['id']);}return _0x3d8148['CmHopperFinal'][_0x2ea1('0x16')]({'where':{'calleridnum':_0x13908b[_0x2ea1('0xe')],'CampaignId':_0x5e88b5['id']}});})['then'](function(_0x481ea9){if(!_[_0x2ea1('0x18')](_0x481ea9)){throw new Error(_0x2ea1('0x23')+_0x13908b[_0x2ea1('0xe')]+_0x2ea1('0x26')+_0x5e88b5['id']);}return _0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b['phone'],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b[_0x2ea1('0x1b')]:0x2,'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')),'callback':_0x13908b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b['callbackUniqueid']:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')):undefined,'CampaignId':_0x5e88b5['id']});})['catch'](function(_0x44f152){_0x149115(_0x44f152);});});};if(_0x13908b[_0x2ea1('0x1a')]){_0x3d8148[_0x2ea1('0x27')]['findAll']({'where':{'type':_0x2ea1('0x28')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x3d8148['CmList'],'as':'Lists','where':{'id':_0x13908b[_0x2ea1('0x1a')]}}]})['then'](function(_0x1f3b9c){if(_0x1f3b9c){var _0x331ff1=[];for(var _0x43c6eb=0x0,_0x1800c7;_0x43c6eb<_0x1f3b9c[_0x2ea1('0x29')];_0x43c6eb+=0x1){_0x1800c7=_0x1f3b9c[_0x43c6eb]['get']({'plain':!![]});switch(_0x1800c7['dialCheckDuplicateType']){case'always':_0x1ac7ab(_0x1800c7)[_0x2ea1('0x20')](_0x587d01());break;case _0x2ea1('0x2a'):_0x4dfcbb(_0x1800c7)['catch'](_0x587d01());break;default:_0x3d8148['CmHopper'][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')),'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b['priority']:0x2,'callback':_0x13908b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')):undefined,'VoiceQueueId':_0x1800c7['id']})[_0x2ea1('0x20')](_0x587d01());}}}})[_0x2ea1('0x17')](function(){return _0x3d8148['VoiceQueue']['findAll']({'where':{'type':_0x2ea1('0x28')},'attributes':['id'],'include':[{'model':_0x3d8148[_0x2ea1('0x2b')],'as':_0x2ea1('0x2c'),'where':{'id':_0x13908b['ListId']}}]})['then'](function(_0x52e027){if(_0x52e027){var _0x2ef0b5=[];for(var _0x2685bd=0x0,_0xbdf03d;_0x2685bd<_0x52e027[_0x2ea1('0x29')];_0x2685bd+=0x1){_0xbdf03d=_0x52e027[_0x2685bd][_0x2ea1('0x2d')]({'plain':!![]});_0x3d8148[_0x2ea1('0x2e')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b['ListId'],'VoiceQueueId':_0xbdf03d['id']})[_0x2ea1('0x20')](function(_0x45c5a0){logger[_0x2ea1('0x12')](_0x2ea1('0x2f'),'afterCreate',_0x45c5a0['message']);});}}});})['then'](function(){return _0x3d8148[_0x2ea1('0x30')][_0x2ea1('0x31')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x3d8148[_0x2ea1('0x2b')],'as':_0x2ea1('0x32'),'where':{'id':_0x13908b[_0x2ea1('0x1a')]}}]})[_0x2ea1('0x17')](function(_0x207af4){if(_0x207af4){var _0xabfd0d=[];for(var _0x3c3f3c=0x0,_0x2fc13a;_0x3c3f3c<_0x207af4[_0x2ea1('0x29')];_0x3c3f3c+=0x1){_0x2fc13a=_0x207af4[_0x3c3f3c]['get']({'plain':!![]});switch(_0x2fc13a[_0x2ea1('0x33')]){case _0x2ea1('0x34'):_0x4167de(_0x2fc13a)['catch'](_0x34ba5b());break;case _0x2ea1('0x2a'):_0x7c725d(_0x2fc13a)[_0x2ea1('0x20')](_0x34ba5b());break;default:_0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()['format'](_0x2ea1('0x1e')),'priority':_0x13908b['priority']?_0x13908b['priority']:0x2,'callback':_0x13908b[_0x2ea1('0x1f')]?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()['format'](_0x2ea1('0x1e')):undefined,'CampaignId':_0x2fc13a['id']})[_0x2ea1('0x20')](_0x34ba5b());}}}});})[_0x2ea1('0x17')](function(){return _0x3d8148[_0x2ea1('0x30')][_0x2ea1('0x31')]({'attributes':['id'],'include':[{'model':_0x3d8148[_0x2ea1('0x2b')],'as':_0x2ea1('0x2c'),'where':{'id':_0x13908b['ListId']}}]})[_0x2ea1('0x17')](function(_0x45d1b2){if(_0x45d1b2){var _0x7baa99=[];for(var _0x4b4dd0=0x0,_0x40175e;_0x4b4dd0<_0x45d1b2[_0x2ea1('0x29')];_0x4b4dd0+=0x1){_0x40175e=_0x45d1b2[_0x4b4dd0][_0x2ea1('0x2d')]({'plain':!![]});_0x3d8148[_0x2ea1('0x2e')]['create']({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'CampaignId':_0x40175e['id']})[_0x2ea1('0x20')](function(_0x7e2d83){logger[_0x2ea1('0x12')]('cmContact,\x20%s,\x20%s','afterCreate',_0x7e2d83['message']);});}}});})['then'](function(){_0x160238();})[_0x2ea1('0x20')](function(_0x5aa149){logger[_0x2ea1('0x12')](_0x2ea1('0x2f'),_0x2ea1('0x14'),_0x5aa149[_0x2ea1('0x35')]);_0x160238(_0x5aa149);});}else{_0x160238(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x1b76e5,_0x33222a,_0x463a41){var _0x442873=_0x5ddb58[_0x2ea1('0x11')];var _0x469e01=_0x1b76e5[_0x2ea1('0x2d')]({'plain':!![]});return _0x442873['CmHopper'][_0x2ea1('0x31')]({'raw':!![],'where':{'ListId':_0x469e01[_0x2ea1('0x1a')],'ContactId':_0x469e01['id']}})[_0x2ea1('0x17')](function(_0x497d53){if(!_['isEmpty'](_0x497d53)){var _0x304c24=[];for(var _0x52e746=0x0;_0x52e746<_0x497d53[_0x2ea1('0x29')];_0x52e746+=0x1){var _0x1027a7=_0x442873[_0x2ea1('0x15')][_0x2ea1('0x36')]({'where':{'ListId':_0x497d53[_0x52e746][_0x2ea1('0x1a')],'ContactId':_0x497d53[_0x52e746][_0x2ea1('0x37')],'VoiceQueueId':_0x497d53[_0x52e746][_0x2ea1('0x38')],'CampaignId':_0x497d53[_0x52e746][_0x2ea1('0x39')]}});_0x304c24[_0x2ea1('0x3a')](_0x1027a7);}return BPromise['all'](_0x304c24);}})[_0x2ea1('0x17')](function(_0x100e7c){logger[_0x2ea1('0x3b')](_0x2ea1('0x3c'),util[_0x2ea1('0x24')](_0x100e7c,{'showHidden':![],'depth':null}));_0x463a41();})[_0x2ea1('0x20')](function(_0x3bba6f){logger[_0x2ea1('0x12')](_0x2ea1('0x3d'),util[_0x2ea1('0x24')](_0x3bba6f,{'showHidden':![],'depth':null}));_0x463a41(_0x3bba6f);});}}});};
\ No newline at end of file
+var _0xbce4=['path','./cmContact.attributes','define','phone','fti_cm_contacts','lastName','fax','email','FULLTEXT','get','error','cmContact','afterCreate','CmHopper','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','findOne','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','then','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','inspect','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','outbound','dialCheckDuplicateType','Lists','length','always','onlyIfOpen','findAll','CmList','BlackLists','CmHopperBlack','message','Campaign','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','destroy','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0xbce4,0x76));var _0x4bce=function(_0x5dbee2,_0x407dbd){_0x5dbee2=_0x5dbee2-0x0;var _0x3a6e14=_0xbce4[_0x5dbee2];return _0x3a6e14;};'use strict';var _=require(_0x4bce('0x0'));var util=require(_0x4bce('0x1'));var logger=require(_0x4bce('0x2'))(_0x4bce('0x3'));var moment=require(_0x4bce('0x4'));var BPromise=require('bluebird');var rp=require(_0x4bce('0x5'));var fs=require('fs');var path=require(_0x4bce('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4bce('0x7'));module['exports']=function(_0x5d2689,_0x4cb5dd){return _0x5d2689[_0x4bce('0x8')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x4bce('0x9'),'fields':[_0x4bce('0x9')]},{'name':_0x4bce('0xa'),'fields':['firstName',_0x4bce('0xb'),_0x4bce('0x9'),'mobile',_0x4bce('0xc'),_0x4bce('0xd')],'type':_0x4bce('0xe')}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0xb44241,_0x1da980,_0x4e96d5){var _0x4c85c6=_0x5d2689['models'];var _0xb15ddd=_0xb44241[_0x4bce('0xf')]({'plain':!![]});function _0x50e16c(){return function(_0xc448c2){logger[_0x4bce('0x10')](_0x4bce('0x11'),_0x4bce('0x12'),util['inspect'](_0xc448c2,{'showHidden':![],'depth':null}));};}var _0x281266=function(_0x2afeb9){return new BPromise(function(_0x4531e6,_0xc2a040){_0x4c85c6[_0x4bce('0x13')]['findOne']({'where':{'phone':_0xb15ddd['phone'],'VoiceQueueId':_0x2afeb9['id']}})['then'](function(_0x300308){if(!_[_0x4bce('0x14')](_0x300308)){throw new Error(_0x4bce('0x15')+_0xb15ddd[_0x4bce('0x9')]+_0x4bce('0x16')+_0x2afeb9['id']);}return _0x4c85c6[_0x4bce('0x13')][_0x4bce('0x17')]({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'priority':_0xb15ddd['priority']?_0xb15ddd[_0x4bce('0x19')]:0x2,'scheduledat':_0xb15ddd['scheduledat']?_0xb15ddd[_0x4bce('0x1a')]:moment()['format'](_0x4bce('0x1b')),'callback':_0xb15ddd['callbackUniqueid']?!![]:![],'callbackuniqueid':_0xb15ddd[_0x4bce('0x1c')]?_0xb15ddd[_0x4bce('0x1c')]:undefined,'callbackat':_0xb15ddd['callbackUniqueid']?moment()[_0x4bce('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x2afeb9['id']});})[_0x4bce('0x1e')](function(_0x402751){_0xc2a040(_0x402751);});});};var _0x493386=function(_0x1b1e63){return new BPromise(function(_0x59a644,_0xd535d6){_0x4c85c6[_0x4bce('0x13')][_0x4bce('0x1f')]({'where':{'phone':_0xb15ddd[_0x4bce('0x9')],'VoiceQueueId':_0x1b1e63['id']}})['then'](function(_0x294c29){if(!_[_0x4bce('0x14')](_0x294c29)){throw new Error('cmContact,\x20afterCreate\x20'+_0xb15ddd[_0x4bce('0x9')]+_0x4bce('0x20')+_0x1b1e63['id']);}return _0x4c85c6[_0x4bce('0x21')]['findOne']({'where':{'calleridnum':_0xb15ddd[_0x4bce('0x9')],'VoiceQueueId':_0x1b1e63['id']}});})[_0x4bce('0x22')](function(_0x324c7d){if(!_[_0x4bce('0x14')](_0x324c7d)){throw new Error(_0x4bce('0x23')+_0xb15ddd[_0x4bce('0x9')]+_0x4bce('0x24')+_0x1b1e63['id']);}return _0x4c85c6[_0x4bce('0x13')][_0x4bce('0x17')]({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'priority':_0xb15ddd[_0x4bce('0x19')]?_0xb15ddd[_0x4bce('0x19')]:0x2,'scheduledat':_0xb15ddd[_0x4bce('0x1a')]?_0xb15ddd[_0x4bce('0x1a')]:moment()[_0x4bce('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xb15ddd[_0x4bce('0x1c')]?!![]:![],'callbackuniqueid':_0xb15ddd[_0x4bce('0x1c')]?_0xb15ddd['callbackUniqueid']:undefined,'callbackat':_0xb15ddd[_0x4bce('0x1c')]?moment()['format'](_0x4bce('0x1b')):undefined,'VoiceQueueId':_0x1b1e63['id']});})[_0x4bce('0x1e')](function(_0x21b3f){_0xd535d6(_0x21b3f);});});};function _0x26d2ee(){return function(_0x168d84){logger['error']('cmContact',_0x4bce('0x12'),util[_0x4bce('0x25')](_0x168d84,{'showHidden':![],'depth':null}));};}var _0x45be84=function(_0xa2c9b1){return new BPromise(function(_0x45b285,_0x285f93){_0x4c85c6[_0x4bce('0x13')][_0x4bce('0x1f')]({'where':{'phone':_0xb15ddd[_0x4bce('0x9')],'CampaignId':_0xa2c9b1['id']}})[_0x4bce('0x22')](function(_0x43de43){if(!_[_0x4bce('0x14')](_0x43de43)){throw new Error(_0x4bce('0x15')+_0xb15ddd[_0x4bce('0x9')]+_0x4bce('0x26')+_0xa2c9b1['id']);}return _0x4c85c6[_0x4bce('0x13')]['create']({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'priority':_0xb15ddd[_0x4bce('0x19')]?_0xb15ddd[_0x4bce('0x19')]:0x2,'scheduledat':_0xb15ddd[_0x4bce('0x1a')]?_0xb15ddd[_0x4bce('0x1a')]:moment()[_0x4bce('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xb15ddd[_0x4bce('0x1c')]?!![]:![],'callbackuniqueid':_0xb15ddd['callbackUniqueid']?_0xb15ddd['callbackUniqueid']:undefined,'callbackat':_0xb15ddd['callbackUniqueid']?moment()[_0x4bce('0x1d')](_0x4bce('0x1b')):undefined,'CampaignId':_0xa2c9b1['id']});})[_0x4bce('0x1e')](function(_0xe44a6c){_0x285f93(_0xe44a6c);});});};var _0x2b43c2=function(_0x1580e6){return new BPromise(function(_0x3a4a0c,_0x27f2bd){_0x4c85c6[_0x4bce('0x13')][_0x4bce('0x1f')]({'where':{'phone':_0xb15ddd[_0x4bce('0x9')],'CampaignId':_0x1580e6['id']}})[_0x4bce('0x22')](function(_0xfdd9ef){if(!_[_0x4bce('0x14')](_0xfdd9ef)){throw new Error(_0x4bce('0x15')+_0xb15ddd['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1580e6['id']);}return _0x4c85c6['CmHopperFinal']['findOne']({'where':{'calleridnum':_0xb15ddd[_0x4bce('0x9')],'CampaignId':_0x1580e6['id']}});})[_0x4bce('0x22')](function(_0xbe2226){if(!_[_0x4bce('0x14')](_0xbe2226)){throw new Error(_0x4bce('0x23')+_0xb15ddd[_0x4bce('0x9')]+_0x4bce('0x27')+_0x1580e6['id']);}return _0x4c85c6[_0x4bce('0x13')][_0x4bce('0x17')]({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'priority':_0xb15ddd[_0x4bce('0x19')]?_0xb15ddd[_0x4bce('0x19')]:0x2,'scheduledat':_0xb15ddd[_0x4bce('0x1a')]?_0xb15ddd[_0x4bce('0x1a')]:moment()[_0x4bce('0x1d')](_0x4bce('0x1b')),'callback':_0xb15ddd[_0x4bce('0x1c')]?!![]:![],'callbackuniqueid':_0xb15ddd[_0x4bce('0x1c')]?_0xb15ddd[_0x4bce('0x1c')]:undefined,'callbackat':_0xb15ddd[_0x4bce('0x1c')]?moment()[_0x4bce('0x1d')](_0x4bce('0x1b')):undefined,'CampaignId':_0x1580e6['id']});})[_0x4bce('0x1e')](function(_0x4354f8){_0x27f2bd(_0x4354f8);});});};if(_0xb15ddd[_0x4bce('0x18')]){_0x4c85c6['VoiceQueue']['findAll']({'where':{'type':_0x4bce('0x28')},'attributes':['id',_0x4bce('0x29')],'include':[{'model':_0x4c85c6['CmList'],'as':_0x4bce('0x2a'),'where':{'id':_0xb15ddd['ListId']}}]})[_0x4bce('0x22')](function(_0xe2398b){if(_0xe2398b){var _0x3f2f57=[];for(var _0x35a041=0x0,_0x3d2dc0;_0x35a041<_0xe2398b[_0x4bce('0x2b')];_0x35a041+=0x1){_0x3d2dc0=_0xe2398b[_0x35a041]['get']({'plain':!![]});switch(_0x3d2dc0[_0x4bce('0x29')]){case _0x4bce('0x2c'):_0x493386(_0x3d2dc0)[_0x4bce('0x1e')](_0x50e16c());break;case _0x4bce('0x2d'):_0x281266(_0x3d2dc0)[_0x4bce('0x1e')](_0x50e16c());break;default:_0x4c85c6[_0x4bce('0x13')][_0x4bce('0x17')]({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'scheduledat':_0xb15ddd[_0x4bce('0x1a')]?_0xb15ddd[_0x4bce('0x1a')]:moment()[_0x4bce('0x1d')](_0x4bce('0x1b')),'priority':_0xb15ddd['priority']?_0xb15ddd[_0x4bce('0x19')]:0x2,'callback':_0xb15ddd[_0x4bce('0x1c')]?!![]:![],'callbackuniqueid':_0xb15ddd[_0x4bce('0x1c')]?_0xb15ddd[_0x4bce('0x1c')]:undefined,'callbackat':_0xb15ddd[_0x4bce('0x1c')]?moment()[_0x4bce('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x3d2dc0['id']})[_0x4bce('0x1e')](_0x50e16c());}}}})['then'](function(){return _0x4c85c6['VoiceQueue'][_0x4bce('0x2e')]({'where':{'type':_0x4bce('0x28')},'attributes':['id'],'include':[{'model':_0x4c85c6[_0x4bce('0x2f')],'as':_0x4bce('0x30'),'where':{'id':_0xb15ddd[_0x4bce('0x18')]}}]})[_0x4bce('0x22')](function(_0x27c114){if(_0x27c114){var _0x2674b4=[];for(var _0x10001f=0x0,_0x25b4a4;_0x10001f<_0x27c114[_0x4bce('0x2b')];_0x10001f+=0x1){_0x25b4a4=_0x27c114[_0x10001f][_0x4bce('0xf')]({'plain':!![]});_0x4c85c6[_0x4bce('0x31')]['create']({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'VoiceQueueId':_0x25b4a4['id']})[_0x4bce('0x1e')](function(_0x44e206){logger[_0x4bce('0x10')]('cmContact,\x20%s,\x20%s',_0x4bce('0x12'),_0x44e206[_0x4bce('0x32')]);});}}});})[_0x4bce('0x22')](function(){return _0x4c85c6[_0x4bce('0x33')][_0x4bce('0x2e')]({'attributes':['id',_0x4bce('0x29')],'include':[{'model':_0x4c85c6[_0x4bce('0x2f')],'as':_0x4bce('0x2a'),'where':{'id':_0xb15ddd[_0x4bce('0x18')]}}]})[_0x4bce('0x22')](function(_0x9d0718){if(_0x9d0718){var _0x14d198=[];for(var _0x11e4d3=0x0,_0x41a05b;_0x11e4d3<_0x9d0718[_0x4bce('0x2b')];_0x11e4d3+=0x1){_0x41a05b=_0x9d0718[_0x11e4d3][_0x4bce('0xf')]({'plain':!![]});switch(_0x41a05b[_0x4bce('0x29')]){case _0x4bce('0x2c'):_0x2b43c2(_0x41a05b)['catch'](_0x26d2ee());break;case _0x4bce('0x2d'):_0x45be84(_0x41a05b)[_0x4bce('0x1e')](_0x26d2ee());break;default:_0x4c85c6[_0x4bce('0x13')][_0x4bce('0x17')]({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'scheduledat':_0xb15ddd[_0x4bce('0x1a')]?_0xb15ddd[_0x4bce('0x1a')]:moment()[_0x4bce('0x1d')](_0x4bce('0x1b')),'priority':_0xb15ddd[_0x4bce('0x19')]?_0xb15ddd['priority']:0x2,'callback':_0xb15ddd[_0x4bce('0x1c')]?!![]:![],'callbackuniqueid':_0xb15ddd[_0x4bce('0x1c')]?_0xb15ddd[_0x4bce('0x1c')]:undefined,'callbackat':_0xb15ddd[_0x4bce('0x1c')]?moment()[_0x4bce('0x1d')](_0x4bce('0x1b')):undefined,'CampaignId':_0x41a05b['id']})[_0x4bce('0x1e')](_0x26d2ee());}}}});})[_0x4bce('0x22')](function(){return _0x4c85c6[_0x4bce('0x33')]['findAll']({'attributes':['id'],'include':[{'model':_0x4c85c6['CmList'],'as':'BlackLists','where':{'id':_0xb15ddd[_0x4bce('0x18')]}}]})['then'](function(_0x370389){if(_0x370389){var _0x2e8fff=[];for(var _0x14227f=0x0,_0x342494;_0x14227f<_0x370389[_0x4bce('0x2b')];_0x14227f+=0x1){_0x342494=_0x370389[_0x14227f][_0x4bce('0xf')]({'plain':!![]});_0x4c85c6['CmHopperBlack'][_0x4bce('0x17')]({'phone':_0xb15ddd[_0x4bce('0x9')],'ContactId':_0xb15ddd['id'],'ListId':_0xb15ddd[_0x4bce('0x18')],'CampaignId':_0x342494['id']})[_0x4bce('0x1e')](function(_0x3e8907){logger[_0x4bce('0x10')](_0x4bce('0x34'),_0x4bce('0x12'),_0x3e8907[_0x4bce('0x32')]);});}}});})[_0x4bce('0x22')](function(){_0x4e96d5();})[_0x4bce('0x1e')](function(_0x554539){logger[_0x4bce('0x10')](_0x4bce('0x34'),_0x4bce('0x12'),_0x554539[_0x4bce('0x32')]);_0x4e96d5(_0x554539);});}else{_0x4e96d5(new Error(_0x4bce('0x35')));}},'afterDestroy':function(_0x4d6deb,_0x19f26c,_0xf9e0a5){var _0xe51977=_0x5d2689['models'];var _0x257e8e=_0x4d6deb[_0x4bce('0xf')]({'plain':!![]});return _0xe51977[_0x4bce('0x13')]['findAll']({'raw':!![],'where':{'ListId':_0x257e8e['ListId'],'ContactId':_0x257e8e['id']}})[_0x4bce('0x22')](function(_0x236a17){if(!_[_0x4bce('0x36')](_0x236a17)){var _0x372e27=[];for(var _0x435c19=0x0;_0x435c19<_0x236a17['length'];_0x435c19+=0x1){var _0x3eaa2a=_0xe51977['CmHopper'][_0x4bce('0x37')]({'where':{'ListId':_0x236a17[_0x435c19][_0x4bce('0x18')],'ContactId':_0x236a17[_0x435c19]['ContactId'],'VoiceQueueId':_0x236a17[_0x435c19]['VoiceQueueId'],'CampaignId':_0x236a17[_0x435c19][_0x4bce('0x38')]}});_0x372e27[_0x4bce('0x39')](_0x3eaa2a);}return BPromise[_0x4bce('0x3a')](_0x372e27);}})[_0x4bce('0x22')](function(_0x1ce19a){logger[_0x4bce('0x3b')](_0x4bce('0x3c'),util[_0x4bce('0x25')](_0x1ce19a,{'showHidden':![],'depth':null}));_0xf9e0a5();})[_0x4bce('0x1e')](function(_0x41dad5){logger[_0x4bce('0x10')](_0x4bce('0x3d'),util[_0x4bce('0x25')](_0x41dad5,{'showHidden':![],'depth':null}));_0xf9e0a5(_0x41dad5);});}}});};
\ No newline at end of file
index c8eb578..bdc1da9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefc8=['query','lodash','util','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetCmContact','CmContact','options','raw','where','include','map','model','attributes','debug','stringify','CreateCmContact','body','length','keys','startsWith','update','table','cm_contacts','set','id\x20=\x20?','sequelize'];(function(_0x1599ed,_0x543460){var _0x12c03c=function(_0x3e2a44){while(--_0x3e2a44){_0x1599ed['push'](_0x1599ed['shift']());}};_0x12c03c(++_0x543460);}(_0xefc8,0x127));var _0x8efc=function(_0x1cbd4b,_0x469134){_0x1cbd4b=_0x1cbd4b-0x0;var _0x594036=_0xefc8[_0x1cbd4b];return _0x594036;};'use strict';var _=require(_0x8efc('0x0'));var util=require(_0x8efc('0x1'));var moment=require('moment');var BPromise=require(_0x8efc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8efc('0x3'));var squel=require(_0x8efc('0x4'));var db=require(_0x8efc('0x5'))['db'];var utils=require(_0x8efc('0x6'));var logger=require('../../config/logger')(_0x8efc('0x7'));var config=require(_0x8efc('0x8'));var jayson=require(_0x8efc('0x9'));var client=jayson[_0x8efc('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8efc('0xb')](config['redis'],{'host':_0x8efc('0xc'),'port':0x18eb});var socket=require(_0x8efc('0xd'))(new Redis(config[_0x8efc('0xe')]));require(_0x8efc('0xf'))[_0x8efc('0x10')](socket);function respondWithRpcPromise(_0x5458aa,_0x5e1b99,_0x301477){return new BPromise(function(_0x33b625,_0x28f469){return client[_0x8efc('0x11')](_0x5458aa,_0x301477)[_0x8efc('0x12')](function(_0x34e5f3){logger[_0x8efc('0x13')](_0x8efc('0x14'),_0x5e1b99,_0x8efc('0x15'));logger['debug']('CmContact,\x20%s,\x20%s,\x20%s',_0x5e1b99,_0x8efc('0x15'),JSON['stringify'](_0x34e5f3));if(_0x34e5f3[_0x8efc('0x16')]){if(_0x34e5f3['error'][_0x8efc('0x17')]===0x1f4){logger['error']('CmContact,\x20%s,\x20%s',_0x5e1b99,_0x34e5f3['error'][_0x8efc('0x18')]);return _0x28f469(_0x34e5f3[_0x8efc('0x16')]['message']);}logger['error'](_0x8efc('0x14'),_0x5e1b99,_0x34e5f3[_0x8efc('0x16')][_0x8efc('0x18')]);return _0x33b625(_0x34e5f3['error'][_0x8efc('0x18')]);}else{logger[_0x8efc('0x13')](_0x8efc('0x14'),_0x5e1b99,_0x8efc('0x15'));_0x33b625(_0x34e5f3['result']['message']);}})[_0x8efc('0x19')](function(_0x199a56){logger[_0x8efc('0x16')](_0x8efc('0x14'),_0x5e1b99,_0x199a56);_0x28f469(_0x199a56);});});}exports[_0x8efc('0x1a')]=function(_0x2b31a9){var _0x371a5d=this;return new Promise(function(_0x2e4e27,_0xda66e5){return db[_0x8efc('0x1b')]['findAll']({'raw':_0x2b31a9['options']?_0x2b31a9[_0x8efc('0x1c')][_0x8efc('0x1d')]===undefined?!![]:![]:!![],'where':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')][_0x8efc('0x1e')]||null:null,'attributes':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')]['attributes']||null:null,'limit':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')]['limit']||null:null,'include':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')][_0x8efc('0x1f')]?_[_0x8efc('0x20')](_0x2b31a9[_0x8efc('0x1c')]['include'],function(_0x45bf84){return{'model':db[_0x45bf84[_0x8efc('0x21')]],'as':_0x45bf84['as'],'attributes':_0x45bf84[_0x8efc('0x22')],'include':_0x45bf84[_0x8efc('0x1f')]?_[_0x8efc('0x20')](_0x45bf84[_0x8efc('0x1f')],function(_0x52ce84){return{'model':db[_0x52ce84['model']],'as':_0x52ce84['as'],'attributes':_0x52ce84[_0x8efc('0x22')],'include':_0x52ce84[_0x8efc('0x1f')]?_[_0x8efc('0x20')](_0x52ce84[_0x8efc('0x1f')],function(_0x216a20){return{'model':db[_0x216a20[_0x8efc('0x21')]],'as':_0x216a20['as'],'attributes':_0x216a20['attributes']};}):[]};}):[]};}):[]:[]})[_0x8efc('0x12')](function(_0xaacd19){logger[_0x8efc('0x13')](_0x8efc('0x1a'),_0x2b31a9);logger[_0x8efc('0x23')](_0x8efc('0x1a'),_0x2b31a9,JSON[_0x8efc('0x24')](_0xaacd19));_0x2e4e27(_0xaacd19);})['catch'](function(_0x34fddd){logger['error'](_0x8efc('0x1a'),_0x34fddd[_0x8efc('0x18')],_0x2b31a9);_0xda66e5(_0x371a5d['error'](0x1f4,_0x34fddd['message']));});});};exports[_0x8efc('0x25')]=function(_0x31aa88){var _0x8ab551=this;return new Promise(function(_0x5708e4,_0x2be0b4){return db[_0x8efc('0x1b')]['create'](_0x31aa88[_0x8efc('0x26')],{'raw':_0x31aa88[_0x8efc('0x1c')]?_0x31aa88['options']['raw']===undefined?!![]:![]:!![]})[_0x8efc('0x12')](function(_0xadda32){var _0x2b3268;for(var _0x441e50=0x0;_0x441e50<Object['keys'](_0x31aa88[_0x8efc('0x26')])[_0x8efc('0x27')];_0x441e50++){var _0x520c69=Object[_0x8efc('0x28')](_0x31aa88[_0x8efc('0x26')])[_0x441e50];if(_0x520c69[_0x8efc('0x29')]('cf_')){_0x2b3268=squel[_0x8efc('0x2a')]()[_0x8efc('0x2b')](_0x8efc('0x2c'))[_0x8efc('0x2d')](_0x520c69,_0x31aa88['body'][_0x520c69])[_0x8efc('0x1e')](_0x8efc('0x2e'),_0xadda32['id'])['toString']();break;}}if(!_0x2b3268)return _0xadda32;return db[_0x8efc('0x2f')][_0x8efc('0x30')](_0x2b3268)[_0x8efc('0x12')](function(){return _0xadda32;});})[_0x8efc('0x12')](function(_0x4b2634){logger[_0x8efc('0x13')](_0x8efc('0x25'),_0x31aa88);logger[_0x8efc('0x23')]('CreateCmContact',_0x31aa88,JSON[_0x8efc('0x24')](_0x4b2634));_0x5708e4(_0x4b2634);})[_0x8efc('0x19')](function(_0x5eb252){logger[_0x8efc('0x16')](_0x8efc('0x25'),_0x5eb252['message'],_0x31aa88);_0x2be0b4(_0x8ab551[_0x8efc('0x16')](0x1f4,_0x5eb252[_0x8efc('0x18')]));});});};
\ No newline at end of file
+var _0x3e95=['cm_contacts','set','id\x20=\x20?','toString','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','redis','socket.io-emitter','./cmContact.socket','register','request','then','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetCmContact','CmContact','options','attributes','limit','include','map','model','CreateCmContact','create','body','keys','length','startsWith','cf_','update','table'];(function(_0x648f4e,_0xfe93a5){var _0x3c954b=function(_0x53b7fd){while(--_0x53b7fd){_0x648f4e['push'](_0x648f4e['shift']());}};_0x3c954b(++_0xfe93a5);}(_0x3e95,0x1b4));var _0x53e9=function(_0x58e5f5,_0x17500a){_0x58e5f5=_0x58e5f5-0x0;var _0x5cb488=_0x3e95[_0x58e5f5];return _0x5cb488;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x53e9('0x0'));var BPromise=require(_0x53e9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x53e9('0x2'));var squel=require(_0x53e9('0x3'));var db=require(_0x53e9('0x4'))['db'];var utils=require(_0x53e9('0x5'));var logger=require('../../config/logger')(_0x53e9('0x6'));var config=require(_0x53e9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x53e9('0x8')][_0x53e9('0x9')]({'port':0x232a});config['redis']=_[_0x53e9('0xa')](config[_0x53e9('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x53e9('0xc'))(new Redis(config['redis']));require(_0x53e9('0xd'))[_0x53e9('0xe')](socket);function respondWithRpcPromise(_0x46b890,_0x2a005b,_0x32bb95){return new BPromise(function(_0x2822dc,_0x3170e5){return client[_0x53e9('0xf')](_0x46b890,_0x32bb95)[_0x53e9('0x10')](function(_0x42587d){logger['info'](_0x53e9('0x11'),_0x2a005b,_0x53e9('0x12'));logger[_0x53e9('0x13')](_0x53e9('0x14'),_0x2a005b,_0x53e9('0x12'),JSON[_0x53e9('0x15')](_0x42587d));if(_0x42587d['error']){if(_0x42587d[_0x53e9('0x16')]['code']===0x1f4){logger[_0x53e9('0x16')](_0x53e9('0x11'),_0x2a005b,_0x42587d[_0x53e9('0x16')][_0x53e9('0x17')]);return _0x3170e5(_0x42587d[_0x53e9('0x16')][_0x53e9('0x17')]);}logger[_0x53e9('0x16')](_0x53e9('0x11'),_0x2a005b,_0x42587d[_0x53e9('0x16')][_0x53e9('0x17')]);return _0x2822dc(_0x42587d[_0x53e9('0x16')][_0x53e9('0x17')]);}else{logger[_0x53e9('0x18')]('CmContact,\x20%s,\x20%s',_0x2a005b,_0x53e9('0x12'));_0x2822dc(_0x42587d[_0x53e9('0x19')][_0x53e9('0x17')]);}})[_0x53e9('0x1a')](function(_0x49d1cc){logger[_0x53e9('0x16')](_0x53e9('0x11'),_0x2a005b,_0x49d1cc);_0x3170e5(_0x49d1cc);});});}exports[_0x53e9('0x1b')]=function(_0x173664){var _0x241e78=this;return new Promise(function(_0x489436,_0x2cde99){return db[_0x53e9('0x1c')]['findAll']({'raw':_0x173664[_0x53e9('0x1d')]?_0x173664[_0x53e9('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x173664['options']?_0x173664['options']['where']||null:null,'attributes':_0x173664['options']?_0x173664[_0x53e9('0x1d')][_0x53e9('0x1e')]||null:null,'limit':_0x173664[_0x53e9('0x1d')]?_0x173664['options'][_0x53e9('0x1f')]||null:null,'include':_0x173664[_0x53e9('0x1d')]?_0x173664['options'][_0x53e9('0x20')]?_[_0x53e9('0x21')](_0x173664[_0x53e9('0x1d')][_0x53e9('0x20')],function(_0x1d44af){return{'model':db[_0x1d44af['model']],'as':_0x1d44af['as'],'attributes':_0x1d44af[_0x53e9('0x1e')],'include':_0x1d44af['include']?_['map'](_0x1d44af[_0x53e9('0x20')],function(_0xf97702){return{'model':db[_0xf97702[_0x53e9('0x22')]],'as':_0xf97702['as'],'attributes':_0xf97702[_0x53e9('0x1e')],'include':_0xf97702[_0x53e9('0x20')]?_[_0x53e9('0x21')](_0xf97702[_0x53e9('0x20')],function(_0x5c609e){return{'model':db[_0x5c609e[_0x53e9('0x22')]],'as':_0x5c609e['as'],'attributes':_0x5c609e[_0x53e9('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a7a63){logger[_0x53e9('0x18')](_0x53e9('0x1b'),_0x173664);logger[_0x53e9('0x13')](_0x53e9('0x1b'),_0x173664,JSON[_0x53e9('0x15')](_0x1a7a63));_0x489436(_0x1a7a63);})['catch'](function(_0xd75dd){logger['error'](_0x53e9('0x1b'),_0xd75dd[_0x53e9('0x17')],_0x173664);_0x2cde99(_0x241e78['error'](0x1f4,_0xd75dd['message']));});});};exports[_0x53e9('0x23')]=function(_0x593cd7){var _0x58c736=this;return new Promise(function(_0x10bf5b,_0x314196){return db[_0x53e9('0x1c')][_0x53e9('0x24')](_0x593cd7[_0x53e9('0x25')],{'raw':_0x593cd7[_0x53e9('0x1d')]?_0x593cd7[_0x53e9('0x1d')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x55e39a){var _0x20ae0f;for(var _0x5c4cc8=0x0;_0x5c4cc8<Object[_0x53e9('0x26')](_0x593cd7[_0x53e9('0x25')])[_0x53e9('0x27')];_0x5c4cc8++){var _0x57db6b=Object[_0x53e9('0x26')](_0x593cd7[_0x53e9('0x25')])[_0x5c4cc8];if(_0x57db6b[_0x53e9('0x28')](_0x53e9('0x29'))){_0x20ae0f=squel[_0x53e9('0x2a')]()[_0x53e9('0x2b')](_0x53e9('0x2c'))[_0x53e9('0x2d')](_0x57db6b,_0x593cd7['body'][_0x57db6b])['where'](_0x53e9('0x2e'),_0x55e39a['id'])[_0x53e9('0x2f')]();break;}}if(!_0x20ae0f)return _0x55e39a;return db['sequelize']['query'](_0x20ae0f)['then'](function(){return _0x55e39a;});})['then'](function(_0x4ae36a){logger['info'](_0x53e9('0x23'),_0x593cd7);logger[_0x53e9('0x13')]('CreateCmContact',_0x593cd7,JSON['stringify'](_0x4ae36a));_0x10bf5b(_0x4ae36a);})[_0x53e9('0x1a')](function(_0x547ece){logger['error'](_0x53e9('0x23'),_0x547ece[_0x53e9('0x17')],_0x593cd7);_0x314196(_0x58c736[_0x53e9('0x16')](0x1f4,_0x547ece[_0x53e9('0x17')]));});});};
\ No newline at end of file
index 3187a74..67ef846 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(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 ff85e3e..d63097b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe692=['isAuthenticated','index','describe','/:id','show','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','/merge','post','create','/:id/tags','setTags','diskStorage','join','root','server/files/tmp','originalname','replace','%s-%s%s','basename','now','/csv','format','extname','file','upload','import','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','get'];(function(_0x23f858,_0x3ac7e1){var _0x1219e9=function(_0xc459ad){while(--_0xc459ad){_0x23f858['push'](_0x23f858['shift']());}};_0x1219e9(++_0x3ac7e1);}(_0xe692,0x193));var _0x2e69=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xe692[_0x2adbeb];return _0x5e18a6;};'use strict';var multer=require(_0x2e69('0x0'));var util=require(_0x2e69('0x1'));var path=require(_0x2e69('0x2'));var timeout=require(_0x2e69('0x3'));var express=require(_0x2e69('0x4'));var router=express[_0x2e69('0x5')]();var fs_extra=require(_0x2e69('0x6'));var auth=require(_0x2e69('0x7'));var interaction=require(_0x2e69('0x8'));var config=require('../../config/environment');var controller=require(_0x2e69('0x9'));router[_0x2e69('0xa')]('/',auth[_0x2e69('0xb')](),controller[_0x2e69('0xc')]);router[_0x2e69('0xa')]('/describe',auth[_0x2e69('0xb')](),controller[_0x2e69('0xd')]);router[_0x2e69('0xa')](_0x2e69('0xe'),auth['isAuthenticated'](),controller[_0x2e69('0xf')]);router['get']('/:id/tags',auth[_0x2e69('0xb')](),controller[_0x2e69('0x10')]);router['get'](_0x2e69('0x11'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x2e69('0xa')](_0x2e69('0x12'),auth[_0x2e69('0xb')](),controller[_0x2e69('0x13')]);router[_0x2e69('0xa')]('/:id/hopper_finals',auth[_0x2e69('0xb')](),controller['getHopperFinals']);router[_0x2e69('0xa')](_0x2e69('0x14'),auth['isAuthenticated'](),controller[_0x2e69('0x15')]);router[_0x2e69('0xa')](_0x2e69('0x16'),auth['isAuthenticated'](),controller['getJourney']);router['post'](_0x2e69('0x17'),auth[_0x2e69('0xb')](),controller['merge']);router[_0x2e69('0x18')]('/',auth[_0x2e69('0xb')](),controller[_0x2e69('0x19')]);router[_0x2e69('0x18')]('/create_many',auth[_0x2e69('0xb')](),controller['bulkCreate']);router[_0x2e69('0x18')](_0x2e69('0x1a'),auth[_0x2e69('0xb')](),controller[_0x2e69('0x1b')]);var upload=multer({'storage':multer[_0x2e69('0x1c')]({'destination':function(_0x35c8d0,_0x239e55,_0x4d5f69){_0x4d5f69(null,path[_0x2e69('0x1d')](config[_0x2e69('0x1e')],_0x2e69('0x1f')));},'filename':function(_0xed9854,_0x1eab52,_0x581221){_0x1eab52[_0x2e69('0x20')]=_0x1eab52[_0x2e69('0x20')][_0x2e69('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x581221(null,util['format'](_0x2e69('0x22'),path[_0x2e69('0x23')](_0x1eab52[_0x2e69('0x20')],path['extname'](_0x1eab52[_0x2e69('0x20')])),Date[_0x2e69('0x24')](),path['extname'](_0x1eab52[_0x2e69('0x20')])));}})});router[_0x2e69('0x18')](_0x2e69('0x25'),upload['single']('file'),controller['uploadCsv']);var upload=multer({'storage':multer[_0x2e69('0x1c')]({'destination':function(_0x2415f4,_0x14b3d4,_0xdd43a5){_0xdd43a5(null,path['join'](config[_0x2e69('0x1e')],_0x2e69('0x1f')));},'filename':function(_0x58a89d,_0x13e61d,_0x2a8dfd){_0x13e61d[_0x2e69('0x20')]=_0x13e61d['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2a8dfd(null,util[_0x2e69('0x26')]('%s-%s%s',path[_0x2e69('0x23')](_0x13e61d[_0x2e69('0x20')],path[_0x2e69('0x27')](_0x13e61d[_0x2e69('0x20')])),Date[_0x2e69('0x24')](),path[_0x2e69('0x27')](_0x13e61d[_0x2e69('0x20')])));}})});router[_0x2e69('0x18')]('/upload',upload['single'](_0x2e69('0x28')),controller[_0x2e69('0x29')]);router['post']('/upload/:id',auth['isAuthenticated'](),controller[_0x2e69('0x2a')]);router[_0x2e69('0x2b')](_0x2e69('0xe'),auth[_0x2e69('0xb')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x2e69('0x2c')]);module[_0x2e69('0x2d')]=router;
\ No newline at end of file
+var _0x9429=['getHopperHistories','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname','format','basename','now','extname','file','/upload','single','upload','/upload/:id','import','put','update','delete','destroy','util','path','express','Router','../../components/interaction/service','get','isAuthenticated','/describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories'];(function(_0x56db88,_0x18e18c){var _0x1abc3c=function(_0x3a6f0b){while(--_0x3a6f0b){_0x56db88['push'](_0x56db88['shift']());}};_0x1abc3c(++_0x18e18c);}(_0x9429,0x169));var _0x9942=function(_0xd3028a,_0x222676){_0xd3028a=_0xd3028a-0x0;var _0x598e0b=_0x9429[_0xd3028a];return _0x598e0b;};'use strict';var multer=require('multer');var util=require(_0x9942('0x0'));var path=require(_0x9942('0x1'));var timeout=require('connect-timeout');var express=require(_0x9942('0x2'));var router=express[_0x9942('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9942('0x4'));var config=require('../../config/environment');var controller=require('./cmContact.controller');router[_0x9942('0x5')]('/',auth[_0x9942('0x6')](),controller['index']);router[_0x9942('0x5')](_0x9942('0x7'),auth[_0x9942('0x6')](),controller['describe']);router[_0x9942('0x5')](_0x9942('0x8'),auth['isAuthenticated'](),controller[_0x9942('0x9')]);router['get'](_0x9942('0xa'),auth[_0x9942('0x6')](),controller[_0x9942('0xb')]);router[_0x9942('0x5')](_0x9942('0xc'),auth[_0x9942('0x6')](),controller[_0x9942('0xd')]);router['get'](_0x9942('0xe'),auth['isAuthenticated'](),controller[_0x9942('0xf')]);router[_0x9942('0x5')]('/:id/hopper_finals',auth[_0x9942('0x6')](),controller[_0x9942('0x10')]);router[_0x9942('0x5')](_0x9942('0x11'),auth['isAuthenticated'](),controller[_0x9942('0x12')]);router[_0x9942('0x5')](_0x9942('0x13'),auth[_0x9942('0x6')](),controller[_0x9942('0x14')]);router[_0x9942('0x15')](_0x9942('0x16'),auth[_0x9942('0x6')](),controller[_0x9942('0x17')]);router[_0x9942('0x15')]('/',auth[_0x9942('0x6')](),controller[_0x9942('0x18')]);router[_0x9942('0x15')](_0x9942('0x19'),auth[_0x9942('0x6')](),controller[_0x9942('0x1a')]);router['post']('/:id/tags',auth[_0x9942('0x6')](),controller[_0x9942('0x1b')]);var upload=multer({'storage':multer[_0x9942('0x1c')]({'destination':function(_0x1c213f,_0x53c2c9,_0x3d5303){_0x3d5303(null,path[_0x9942('0x1d')](config[_0x9942('0x1e')],_0x9942('0x1f')));},'filename':function(_0x312d11,_0x5edf38,_0x5485df){_0x5edf38[_0x9942('0x20')]=_0x5edf38[_0x9942('0x20')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5485df(null,util[_0x9942('0x21')]('%s-%s%s',path[_0x9942('0x22')](_0x5edf38[_0x9942('0x20')],path['extname'](_0x5edf38['originalname'])),Date[_0x9942('0x23')](),path[_0x9942('0x24')](_0x5edf38[_0x9942('0x20')])));}})});router[_0x9942('0x15')]('/csv',upload['single'](_0x9942('0x25')),controller['uploadCsv']);var upload=multer({'storage':multer[_0x9942('0x1c')]({'destination':function(_0x2d7569,_0x7b7ff2,_0x3a6019){_0x3a6019(null,path[_0x9942('0x1d')](config[_0x9942('0x1e')],_0x9942('0x1f')));},'filename':function(_0x1c5770,_0x12ae6a,_0x3ea8e0){_0x12ae6a[_0x9942('0x20')]=_0x12ae6a[_0x9942('0x20')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3ea8e0(null,util[_0x9942('0x21')]('%s-%s%s',path[_0x9942('0x22')](_0x12ae6a['originalname'],path[_0x9942('0x24')](_0x12ae6a[_0x9942('0x20')])),Date[_0x9942('0x23')](),path[_0x9942('0x24')](_0x12ae6a[_0x9942('0x20')])));}})});router[_0x9942('0x15')](_0x9942('0x26'),upload[_0x9942('0x27')](_0x9942('0x25')),controller[_0x9942('0x28')]);router[_0x9942('0x15')](_0x9942('0x29'),auth['isAuthenticated'](),controller[_0x9942('0x2a')]);router[_0x9942('0x2b')](_0x9942('0x8'),auth['isAuthenticated'](),controller[_0x9942('0x2c')]);router[_0x9942('0x2d')](_0x9942('0x8'),auth[_0x9942('0x6')](),controller[_0x9942('0x2e')]);module['exports']=router;
\ No newline at end of file
index 1b46254..61ac555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94be=['isArray','stringify','BOOLEAN','voice','sequelize','lodash','VIRTUAL','alias','STRING','setDataValue','getDataValue','name','TEXT','long','type','parse','values'];(function(_0xe5afb7,_0x37246d){var _0x24101c=function(_0x33f163){while(--_0x33f163){_0xe5afb7['push'](_0xe5afb7['shift']());}};_0x24101c(++_0x37246d);}(_0x94be,0xae));var _0xe94b=function(_0x1670e0,_0x5b241e){_0x1670e0=_0x1670e0-0x0;var _0x531650=_0x94be[_0x1670e0];return _0x531650;};'use strict';var Sequelize=require(_0xe94b('0x0'));var _=require(_0xe94b('0x1'));module['exports']={'name':{'type':Sequelize[_0xe94b('0x2')],'get':function(_0x2e7071){return this['getDataValue'](_0xe94b('0x3'));}},'alias':{'type':Sequelize[_0xe94b('0x4')],'allowNull':![],'set':function(_0x227e2c){this[_0xe94b('0x5')](_0xe94b('0x3'),_0x227e2c?_0x227e2c:this[_0xe94b('0x6')](_0xe94b('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xe94b('0x8')](_0xe94b('0x9')),'get':function(){if(this[_0xe94b('0x6')](_0xe94b('0xa'))==='select'){return JSON[_0xe94b('0xb')](this[_0xe94b('0x6')](_0xe94b('0xc')));}else{return this['getDataValue'](_0xe94b('0xc'));}},'set':function(_0x208228){if(Array[_0xe94b('0xd')](_0x208228)){this[_0xe94b('0x5')](_0xe94b('0xc'),JSON[_0xe94b('0xe')](_0x208228));}else{this['setDataValue'](_0xe94b('0xc'),_0x208228);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xe94b('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xe94b('0x10'))}};
\ No newline at end of file
+var _0x07f1=['name','STRING','TEXT','long','type','select','values','stringify','BOOLEAN','ENUM','sequelize','lodash','getDataValue','alias','setDataValue'];(function(_0x3a0c2e,_0x2fd03b){var _0x276907=function(_0x284f36){while(--_0x284f36){_0x3a0c2e['push'](_0x3a0c2e['shift']());}};_0x276907(++_0x2fd03b);}(_0x07f1,0x163));var _0x107f=function(_0x579527,_0xf2ece6){_0x579527=_0x579527-0x0;var _0x3d5c50=_0x07f1[_0x579527];return _0x3d5c50;};'use strict';var Sequelize=require(_0x107f('0x0'));var _=require(_0x107f('0x1'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x392492){return this[_0x107f('0x2')](_0x107f('0x3'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x6bb910){this[_0x107f('0x4')]('alias',_0x6bb910?_0x6bb910:this[_0x107f('0x2')](_0x107f('0x5')));}},'type':{'type':Sequelize[_0x107f('0x6')],'allowNull':![]},'values':{'type':Sequelize[_0x107f('0x7')](_0x107f('0x8')),'get':function(){if(this[_0x107f('0x2')](_0x107f('0x9'))===_0x107f('0xa')){return JSON['parse'](this[_0x107f('0x2')]('values'));}else{return this[_0x107f('0x2')](_0x107f('0xb'));}},'set':function(_0x4a7fd6){if(Array['isArray'](_0x4a7fd6)){this['setDataValue'](_0x107f('0xb'),JSON[_0x107f('0xc')](_0x4a7fd6));}else{this['setDataValue'](_0x107f('0xb'),_0x4a7fd6);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x107f('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x107f('0xe')]('voice')}};
\ No newline at end of file
index 8d290af..d4b20be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc11=['json','offset','undefined','limit','count','apply','reject','save','then','destroy','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','CmCustomField','includeAll','include','findAll','rows','show','params','options','catch','update','body','find','transaction','create','Sequelize','TEXT','INTEGER','switch','BOOLEAN','defaultValue','sequelize','addColumn','format','cf_%d','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end'];(function(_0xbdd2fa,_0x342b3c){var _0x11ea03=function(_0x1e6162){while(--_0x1e6162){_0xbdd2fa['push'](_0xbdd2fa['shift']());}};_0x11ea03(++_0x342b3c);}(_0xfc11,0x88));var _0x1fc1=function(_0x530be9,_0x31423c){_0x530be9=_0x530be9-0x0;var _0x3dbc5b=_0xfc11[_0x530be9];return _0x3dbc5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1fc1('0x0'));var zipdir=require(_0x1fc1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1fc1('0x2'));var moment=require(_0x1fc1('0x3'));var BPromise=require(_0x1fc1('0x4'));var Mustache=require(_0x1fc1('0x5'));var util=require(_0x1fc1('0x6'));var path=require('path');var sox=require(_0x1fc1('0x7'));var csv=require(_0x1fc1('0x8'));var ejs=require(_0x1fc1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1fc1('0xa'));var squel=require(_0x1fc1('0xb'));var crypto=require('crypto');var jsforce=require(_0x1fc1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1fc1('0x8'));var querystring=require(_0x1fc1('0xd'));var Papa=require('papaparse');var Redis=require(_0x1fc1('0xe'));var authService=require(_0x1fc1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fc1('0x10'));var logger=require(_0x1fc1('0x11'))(_0x1fc1('0x12'));var utils=require(_0x1fc1('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1fc1('0x14'))['db'];function respondWithStatusCode(_0x42e4e7,_0x461b99){_0x461b99=_0x461b99||0xcc;return function(_0x39e7b8){if(_0x39e7b8){return _0x42e4e7[_0x1fc1('0x15')](_0x461b99);}return _0x42e4e7[_0x1fc1('0x16')](_0x461b99)[_0x1fc1('0x17')]();};}function respondWithResult(_0x4d1e4e,_0x2f0830){_0x2f0830=_0x2f0830||0xc8;return function(_0x29a244){if(_0x29a244){return _0x4d1e4e[_0x1fc1('0x16')](_0x2f0830)[_0x1fc1('0x18')](_0x29a244);}};}function respondWithFilteredResult(_0xf15a13,_0x5a21ee){return function(_0x3526be){if(_0x3526be){var _0x19c499=typeof _0x5a21ee[_0x1fc1('0x19')]===_0x1fc1('0x1a')&&typeof _0x5a21ee[_0x1fc1('0x1b')]===_0x1fc1('0x1a');var _0x472d1e=_0x3526be[_0x1fc1('0x1c')];var _0x5728f8=_0x19c499?0x0:_0x5a21ee[_0x1fc1('0x19')];var _0xb632cf=_0x19c499?_0x3526be['count']:_0x5a21ee[_0x1fc1('0x19')]+_0x5a21ee[_0x1fc1('0x1b')];var _0x369827;if(_0xb632cf>=_0x472d1e){_0xb632cf=_0x472d1e;_0x369827=0xc8;}else{_0x369827=0xce;}_0xf15a13[_0x1fc1('0x16')](_0x369827);return _0xf15a13['set']('Content-Range',_0x5728f8+'-'+_0xb632cf+'/'+_0x472d1e)['json'](_0x3526be);}return null;};}function patchUpdates(_0x3750ba){return function(_0x184c2c){try{jsonpatch[_0x1fc1('0x1d')](_0x184c2c,_0x3750ba,!![]);}catch(_0x726a6b){return BPromise[_0x1fc1('0x1e')](_0x726a6b);}return _0x184c2c[_0x1fc1('0x1f')]();};}function saveUpdates(_0x1fc384,_0x89d01){return function(_0xce68c0){if(_0xce68c0){return _0xce68c0['update'](_0x1fc384)[_0x1fc1('0x20')](function(_0x39711b){return _0x39711b;});}return null;};}function removeEntity(_0x47888f,_0x50f4e9){return function(_0x5848b8){if(_0x5848b8){return _0x5848b8[_0x1fc1('0x21')]()[_0x1fc1('0x20')](function(){_0x47888f[_0x1fc1('0x16')](0xcc)[_0x1fc1('0x17')]();});}};}function handleEntityNotFound(_0x420360,_0xcc3c46){return function(_0x163e04){if(!_0x163e04){_0x420360['sendStatus'](0x194);}return _0x163e04;};}function handleError(_0x31893c,_0x2f85c7){_0x2f85c7=_0x2f85c7||0x1f4;return function(_0x1538e5){logger['error'](_0x1538e5['stack']);if(_0x1538e5['name']){delete _0x1538e5[_0x1fc1('0x22')];}_0x31893c['status'](_0x2f85c7)[_0x1fc1('0x23')](_0x1538e5);};}exports['index']=function(_0x2ea2c7,_0x2dc48f){var _0x299524={},_0x47b0cc={},_0x1fb988={'count':0x0,'rows':[]};var _0x22c369=_[_0x1fc1('0x24')](db['CmCustomField'][_0x1fc1('0x25')],function(_0x403606){return{'name':_0x403606[_0x1fc1('0x26')],'type':_0x403606[_0x1fc1('0x27')][_0x1fc1('0x28')]};});_0x47b0cc[_0x1fc1('0x29')]=_[_0x1fc1('0x2a')](_[_0x1fc1('0x24')](_0x22c369,_0x1fc1('0x22')),[_0x1fc1('0x22')]);_0x47b0cc[_0x1fc1('0x2b')]=_[_0x1fc1('0x2c')](_0x2ea2c7[_0x1fc1('0x2b')]);_0x47b0cc[_0x1fc1('0x2d')]=_['intersection'](_0x47b0cc[_0x1fc1('0x29')],_0x47b0cc['query']);_0x299524[_0x1fc1('0x2e')]=_[_0x1fc1('0x2f')](_0x47b0cc[_0x1fc1('0x29')],qs[_0x1fc1('0x30')](_0x2ea2c7[_0x1fc1('0x2b')][_0x1fc1('0x30')]));_0x299524['attributes']=_0x299524['attributes'][_0x1fc1('0x31')]?_0x299524[_0x1fc1('0x2e')]:_0x47b0cc[_0x1fc1('0x29')];if(!_0x2ea2c7[_0x1fc1('0x2b')][_0x1fc1('0x32')]('nolimit')){_0x299524[_0x1fc1('0x1b')]=qs['limit'](_0x2ea2c7['query'][_0x1fc1('0x1b')]);_0x299524[_0x1fc1('0x19')]=qs[_0x1fc1('0x19')](_0x2ea2c7['query'][_0x1fc1('0x19')]);}_0x299524[_0x1fc1('0x33')]=qs[_0x1fc1('0x34')](_0x2ea2c7[_0x1fc1('0x2b')]['sort']);_0x299524[_0x1fc1('0x35')]=qs[_0x1fc1('0x2d')](_[_0x1fc1('0x36')](_0x2ea2c7['query'],_0x47b0cc[_0x1fc1('0x2d')]),_0x22c369);if(_0x2ea2c7['query']['filter']){_0x299524[_0x1fc1('0x35')]=_['merge'](_0x299524[_0x1fc1('0x35')],{'$or':_[_0x1fc1('0x24')](_0x22c369,function(_0x277058){if(_0x277058[_0x1fc1('0x27')]!=='VIRTUAL'){var _0x38e066={};_0x38e066[_0x277058[_0x1fc1('0x22')]]={'$like':'%'+_0x2ea2c7[_0x1fc1('0x2b')]['filter']+'%'};return _0x38e066;}})});}_0x299524=_[_0x1fc1('0x37')]({},_0x299524,_0x2ea2c7['options']);var _0x3bade8={'where':_0x299524[_0x1fc1('0x35')]};return db[_0x1fc1('0x38')][_0x1fc1('0x1c')](_0x3bade8)['then'](function(_0xea9951){_0x1fb988[_0x1fc1('0x1c')]=_0xea9951;if(_0x2ea2c7[_0x1fc1('0x2b')][_0x1fc1('0x39')]){_0x299524[_0x1fc1('0x3a')]=[{'all':!![]}];}return db['CmCustomField'][_0x1fc1('0x3b')](_0x299524);})['then'](function(_0x1960b3){_0x1fb988[_0x1fc1('0x3c')]=_0x1960b3;return _0x1fb988;})[_0x1fc1('0x20')](respondWithFilteredResult(_0x2dc48f,_0x299524))['catch'](handleError(_0x2dc48f,null));};exports[_0x1fc1('0x3d')]=function(_0x7d2453,_0x2b5dbb){var _0x448e92={'raw':!![],'where':{'id':_0x7d2453[_0x1fc1('0x3e')]['id']}},_0x417a24={};_0x417a24['model']=_[_0x1fc1('0x2c')](db[_0x1fc1('0x38')][_0x1fc1('0x25')]);_0x417a24[_0x1fc1('0x2b')]=_[_0x1fc1('0x2c')](_0x7d2453[_0x1fc1('0x2b')]);_0x417a24[_0x1fc1('0x2d')]=_[_0x1fc1('0x2f')](_0x417a24['model'],_0x417a24[_0x1fc1('0x2b')]);_0x448e92[_0x1fc1('0x2e')]=_[_0x1fc1('0x2f')](_0x417a24[_0x1fc1('0x29')],qs[_0x1fc1('0x30')](_0x7d2453['query'][_0x1fc1('0x30')]));_0x448e92[_0x1fc1('0x2e')]=_0x448e92['attributes']['length']?_0x448e92[_0x1fc1('0x2e')]:_0x417a24['model'];if(_0x7d2453['query'][_0x1fc1('0x39')]){_0x448e92[_0x1fc1('0x3a')]=[{'all':!![]}];}_0x448e92=_['merge']({},_0x448e92,_0x7d2453[_0x1fc1('0x3f')]);return db[_0x1fc1('0x38')]['find'](_0x448e92)['then'](handleEntityNotFound(_0x2b5dbb,null))[_0x1fc1('0x20')](respondWithResult(_0x2b5dbb,null))[_0x1fc1('0x40')](handleError(_0x2b5dbb,null));};exports[_0x1fc1('0x41')]=function(_0x33266f,_0x48804a){if(_0x33266f[_0x1fc1('0x42')]['id']){delete _0x33266f[_0x1fc1('0x42')]['id'];}return db[_0x1fc1('0x38')][_0x1fc1('0x43')]({'where':{'id':_0x33266f[_0x1fc1('0x3e')]['id']}})['then'](handleEntityNotFound(_0x48804a,null))[_0x1fc1('0x20')](saveUpdates(_0x33266f['body'],null))[_0x1fc1('0x20')](respondWithResult(_0x48804a,null))[_0x1fc1('0x40')](handleError(_0x48804a,null));};exports[_0x1fc1('0x21')]=function(_0x5af349,_0x299b0b){return db[_0x1fc1('0x38')]['find']({'where':{'id':_0x5af349['params']['id']}})['then'](handleEntityNotFound(_0x299b0b,null))[_0x1fc1('0x20')](removeEntity(_0x299b0b,null))[_0x1fc1('0x40')](handleError(_0x299b0b,null));};exports['create']=function(_0x27746,_0x3c068c){var _0xd46c97;return db['sequelize'][_0x1fc1('0x44')](function(_0x5615bd){return db[_0x1fc1('0x38')][_0x1fc1('0x45')](_0x27746[_0x1fc1('0x42')],{'transaction':_0x5615bd})['then'](function(_0x56a7ae){_0xd46c97=_0x56a7ae;var _0x71aafe={'type':db[_0x1fc1('0x46')][_0x1fc1('0x47')],'transaction':_0x5615bd};switch(_0x27746[_0x1fc1('0x42')][_0x1fc1('0x27')]){case'text':_0x71aafe[_0x1fc1('0x27')]=db[_0x1fc1('0x46')][_0x1fc1('0x47')];break;case'number':_0x71aafe[_0x1fc1('0x27')]=db[_0x1fc1('0x46')][_0x1fc1('0x48')];break;case _0x1fc1('0x49'):_0x71aafe[_0x1fc1('0x27')]=db['Sequelize'][_0x1fc1('0x4a')];_0x71aafe[_0x1fc1('0x4b')]=![];break;default:}return db[_0x1fc1('0x4c')]['queryInterface'][_0x1fc1('0x4d')]('cm_contacts',util[_0x1fc1('0x4e')](_0x1fc1('0x4f'),_0xd46c97['id']),_0x71aafe);})[_0x1fc1('0x20')](function(){return _0xd46c97;});})['then'](respondWithResult(_0x3c068c,0xc9))[_0x1fc1('0x40')](handleError(_0x3c068c,null));};
\ No newline at end of file
+var _0x942e=['eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','fieldName','type','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','CmCustomField','rows','catch','show','params','rawAttributes','include','find','body','create','sequelize','Sequelize','text','TEXT','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format'];(function(_0x253b70,_0x1aeaf6){var _0x5f5843=function(_0x52f1f5){while(--_0x52f1f5){_0x253b70['push'](_0x253b70['shift']());}};_0x5f5843(++_0x1aeaf6);}(_0x942e,0x10e));var _0xe942=function(_0xda7d2,_0x4a664f){_0xda7d2=_0xda7d2-0x0;var _0x7f353b=_0x942e[_0xda7d2];return _0x7f353b;};'use strict';var emlformat=require(_0xe942('0x0'));var rimraf=require(_0xe942('0x1'));var zipdir=require(_0xe942('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe942('0x3'));var moment=require('moment');var BPromise=require(_0xe942('0x4'));var Mustache=require(_0xe942('0x5'));var util=require(_0xe942('0x6'));var path=require(_0xe942('0x7'));var sox=require(_0xe942('0x8'));var csv=require(_0xe942('0x9'));var ejs=require(_0xe942('0xa'));var fs=require('fs');var fs_extra=require(_0xe942('0xb'));var _=require(_0xe942('0xc'));var squel=require(_0xe942('0xd'));var crypto=require(_0xe942('0xe'));var jsforce=require(_0xe942('0xf'));var deskjs=require(_0xe942('0x10'));var toCsv=require(_0xe942('0x9'));var querystring=require(_0xe942('0x11'));var Papa=require(_0xe942('0x12'));var Redis=require(_0xe942('0x13'));var authService=require(_0xe942('0x14'));var qs=require(_0xe942('0x15'));var as=require(_0xe942('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe942('0x17'))(_0xe942('0x18'));var utils=require(_0xe942('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xe942('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c847a,_0x5173aa){_0x5173aa=_0x5173aa||0xcc;return function(_0x4e1904){if(_0x4e1904){return _0x2c847a[_0xe942('0x1b')](_0x5173aa);}return _0x2c847a[_0xe942('0x1c')](_0x5173aa)['end']();};}function respondWithResult(_0x425966,_0x596884){_0x596884=_0x596884||0xc8;return function(_0x39d573){if(_0x39d573){return _0x425966[_0xe942('0x1c')](_0x596884)[_0xe942('0x1d')](_0x39d573);}};}function respondWithFilteredResult(_0x361ae5,_0x5a1697){return function(_0x525761){if(_0x525761){var _0x2d23a5=typeof _0x5a1697['offset']===_0xe942('0x1e')&&typeof _0x5a1697[_0xe942('0x1f')]===_0xe942('0x1e');var _0x2af59d=_0x525761[_0xe942('0x20')];var _0x448b6d=_0x2d23a5?0x0:_0x5a1697[_0xe942('0x21')];var _0x2b689f=_0x2d23a5?_0x525761[_0xe942('0x20')]:_0x5a1697[_0xe942('0x21')]+_0x5a1697['limit'];var _0x180211;if(_0x2b689f>=_0x2af59d){_0x2b689f=_0x2af59d;_0x180211=0xc8;}else{_0x180211=0xce;}_0x361ae5['status'](_0x180211);return _0x361ae5[_0xe942('0x22')](_0xe942('0x23'),_0x448b6d+'-'+_0x2b689f+'/'+_0x2af59d)[_0xe942('0x1d')](_0x525761);}return null;};}function patchUpdates(_0x44098c){return function(_0x17c4a1){try{jsonpatch[_0xe942('0x24')](_0x17c4a1,_0x44098c,!![]);}catch(_0x48b82d){return BPromise[_0xe942('0x25')](_0x48b82d);}return _0x17c4a1[_0xe942('0x26')]();};}function saveUpdates(_0x30c7f5,_0x46be9b){return function(_0x557c67){if(_0x557c67){return _0x557c67[_0xe942('0x27')](_0x30c7f5)[_0xe942('0x28')](function(_0x3294c5){return _0x3294c5;});}return null;};}function removeEntity(_0x1c6854,_0x4f2d88){return function(_0x29670c){if(_0x29670c){return _0x29670c[_0xe942('0x29')]()[_0xe942('0x28')](function(){_0x1c6854['status'](0xcc)[_0xe942('0x2a')]();});}};}function handleEntityNotFound(_0x4ae05d,_0x1dcc85){return function(_0x9434d3){if(!_0x9434d3){_0x4ae05d[_0xe942('0x1b')](0x194);}return _0x9434d3;};}function handleError(_0x36451a,_0x40272a){_0x40272a=_0x40272a||0x1f4;return function(_0x3f5a09){logger[_0xe942('0x2b')](_0x3f5a09[_0xe942('0x2c')]);if(_0x3f5a09[_0xe942('0x2d')]){delete _0x3f5a09[_0xe942('0x2d')];}_0x36451a['status'](_0x40272a)[_0xe942('0x2e')](_0x3f5a09);};}exports[_0xe942('0x2f')]=function(_0x1bb863,_0x131385){var _0x3c4270={},_0x19b3c4={},_0x109386={'count':0x0,'rows':[]};var _0x242db4=_['map'](db['CmCustomField']['rawAttributes'],function(_0x5afd72){return{'name':_0x5afd72[_0xe942('0x30')],'type':_0x5afd72[_0xe942('0x31')]['key']};});_0x19b3c4[_0xe942('0x32')]=_['differenceBy'](_[_0xe942('0x33')](_0x242db4,'name'),[_0xe942('0x2d')]);_0x19b3c4[_0xe942('0x34')]=_[_0xe942('0x35')](_0x1bb863['query']);_0x19b3c4['filters']=_[_0xe942('0x36')](_0x19b3c4[_0xe942('0x32')],_0x19b3c4['query']);_0x3c4270['attributes']=_[_0xe942('0x36')](_0x19b3c4[_0xe942('0x32')],qs[_0xe942('0x37')](_0x1bb863[_0xe942('0x34')][_0xe942('0x37')]));_0x3c4270[_0xe942('0x38')]=_0x3c4270[_0xe942('0x38')][_0xe942('0x39')]?_0x3c4270['attributes']:_0x19b3c4[_0xe942('0x32')];if(!_0x1bb863[_0xe942('0x34')][_0xe942('0x3a')](_0xe942('0x3b'))){_0x3c4270['limit']=qs[_0xe942('0x1f')](_0x1bb863['query'][_0xe942('0x1f')]);_0x3c4270['offset']=qs[_0xe942('0x21')](_0x1bb863[_0xe942('0x34')][_0xe942('0x21')]);}_0x3c4270[_0xe942('0x3c')]=qs[_0xe942('0x3d')](_0x1bb863[_0xe942('0x34')][_0xe942('0x3d')]);_0x3c4270[_0xe942('0x3e')]=qs[_0xe942('0x3f')](_['pick'](_0x1bb863[_0xe942('0x34')],_0x19b3c4[_0xe942('0x3f')]),_0x242db4);if(_0x1bb863['query']['filter']){_0x3c4270['where']=_[_0xe942('0x40')](_0x3c4270[_0xe942('0x3e')],{'$or':_[_0xe942('0x33')](_0x242db4,function(_0x200907){if(_0x200907[_0xe942('0x31')]!==_0xe942('0x41')){var _0x38dfe8={};_0x38dfe8[_0x200907['name']]={'$like':'%'+_0x1bb863['query'][_0xe942('0x42')]+'%'};return _0x38dfe8;}})});}_0x3c4270=_[_0xe942('0x40')]({},_0x3c4270,_0x1bb863[_0xe942('0x43')]);var _0x331ef4={'where':_0x3c4270['where']};return db['CmCustomField'][_0xe942('0x20')](_0x331ef4)[_0xe942('0x28')](function(_0x3e333b){_0x109386['count']=_0x3e333b;if(_0x1bb863[_0xe942('0x34')][_0xe942('0x44')]){_0x3c4270['include']=[{'all':!![]}];}return db[_0xe942('0x45')]['findAll'](_0x3c4270);})[_0xe942('0x28')](function(_0x36014a){_0x109386[_0xe942('0x46')]=_0x36014a;return _0x109386;})[_0xe942('0x28')](respondWithFilteredResult(_0x131385,_0x3c4270))[_0xe942('0x47')](handleError(_0x131385,null));};exports[_0xe942('0x48')]=function(_0x1a02af,_0x144901){var _0x2012f6={'raw':!![],'where':{'id':_0x1a02af[_0xe942('0x49')]['id']}},_0x4b9b4c={};_0x4b9b4c[_0xe942('0x32')]=_[_0xe942('0x35')](db['CmCustomField'][_0xe942('0x4a')]);_0x4b9b4c['query']=_[_0xe942('0x35')](_0x1a02af[_0xe942('0x34')]);_0x4b9b4c[_0xe942('0x3f')]=_[_0xe942('0x36')](_0x4b9b4c[_0xe942('0x32')],_0x4b9b4c[_0xe942('0x34')]);_0x2012f6[_0xe942('0x38')]=_[_0xe942('0x36')](_0x4b9b4c['model'],qs['fields'](_0x1a02af['query'][_0xe942('0x37')]));_0x2012f6['attributes']=_0x2012f6[_0xe942('0x38')]['length']?_0x2012f6[_0xe942('0x38')]:_0x4b9b4c[_0xe942('0x32')];if(_0x1a02af[_0xe942('0x34')]['includeAll']){_0x2012f6[_0xe942('0x4b')]=[{'all':!![]}];}_0x2012f6=_['merge']({},_0x2012f6,_0x1a02af[_0xe942('0x43')]);return db[_0xe942('0x45')][_0xe942('0x4c')](_0x2012f6)[_0xe942('0x28')](handleEntityNotFound(_0x144901,null))[_0xe942('0x28')](respondWithResult(_0x144901,null))[_0xe942('0x47')](handleError(_0x144901,null));};exports['update']=function(_0x3f6eae,_0x32eeb0){if(_0x3f6eae[_0xe942('0x4d')]['id']){delete _0x3f6eae[_0xe942('0x4d')]['id'];}return db['CmCustomField']['find']({'where':{'id':_0x3f6eae[_0xe942('0x49')]['id']}})[_0xe942('0x28')](handleEntityNotFound(_0x32eeb0,null))[_0xe942('0x28')](saveUpdates(_0x3f6eae[_0xe942('0x4d')],null))[_0xe942('0x28')](respondWithResult(_0x32eeb0,null))[_0xe942('0x47')](handleError(_0x32eeb0,null));};exports['destroy']=function(_0x11109d,_0x365029){return db['CmCustomField'][_0xe942('0x4c')]({'where':{'id':_0x11109d[_0xe942('0x49')]['id']}})['then'](handleEntityNotFound(_0x365029,null))[_0xe942('0x28')](removeEntity(_0x365029,null))['catch'](handleError(_0x365029,null));};exports[_0xe942('0x4e')]=function(_0x105159,_0x28dc27){var _0x57bef9;return db[_0xe942('0x4f')]['transaction'](function(_0x53d5a1){return db[_0xe942('0x45')][_0xe942('0x4e')](_0x105159[_0xe942('0x4d')],{'transaction':_0x53d5a1})[_0xe942('0x28')](function(_0x3d81fc){_0x57bef9=_0x3d81fc;var _0x286838={'type':db[_0xe942('0x50')]['TEXT'],'transaction':_0x53d5a1};switch(_0x105159[_0xe942('0x4d')][_0xe942('0x31')]){case _0xe942('0x51'):_0x286838[_0xe942('0x31')]=db[_0xe942('0x50')][_0xe942('0x52')];break;case'number':_0x286838[_0xe942('0x31')]=db[_0xe942('0x50')][_0xe942('0x53')];break;case _0xe942('0x54'):_0x286838[_0xe942('0x31')]=db[_0xe942('0x50')][_0xe942('0x55')];_0x286838['defaultValue']=![];break;default:}return db[_0xe942('0x4f')][_0xe942('0x56')][_0xe942('0x57')](_0xe942('0x58'),util[_0xe942('0x59')]('cf_%d',_0x57bef9['id']),_0x286838);})[_0xe942('0x28')](function(){return _0x57bef9;});})['then'](respondWithResult(_0x28dc27,0xc9))[_0xe942('0x47')](handleError(_0x28dc27,null));};
\ No newline at end of file
index 2cf92bc..45245a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff8=['exports','util','../../config/logger','moment','request-promise','path','rimraf','./cmCustomField.attributes'];(function(_0x4abee9,_0x2cfb5d){var _0x5bcf99=function(_0x2687bc){while(--_0x2687bc){_0x4abee9['push'](_0x4abee9['shift']());}};_0x5bcf99(++_0x2cfb5d);}(_0x9ff8,0x1f1));var _0x89ff=function(_0x158688,_0xf5160f){_0x158688=_0x158688-0x0;var _0xf71074=_0x9ff8[_0x158688];return _0xf71074;};'use strict';var _=require('lodash');var util=require(_0x89ff('0x0'));var logger=require(_0x89ff('0x1'))('api');var moment=require(_0x89ff('0x2'));var BPromise=require('bluebird');var rp=require(_0x89ff('0x3'));var fs=require('fs');var path=require(_0x89ff('0x4'));var rimraf=require(_0x89ff('0x5'));var config=require('../../config/environment');var attributes=require(_0x89ff('0x6'));module[_0x89ff('0x7')]=function(_0x289444,_0x38de23){return _0x289444['define']('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6658=['bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports','define','../../config/logger','api','moment'];(function(_0x1621f6,_0x45ec5a){var _0x5f1d54=function(_0x53140b){while(--_0x53140b){_0x1621f6['push'](_0x1621f6['shift']());}};_0x5f1d54(++_0x45ec5a);}(_0x6658,0x10b));var _0x8665=function(_0x4e3874,_0x3abd8a){_0x4e3874=_0x4e3874-0x0;var _0x5263c4=_0x6658[_0x4e3874];return _0x5263c4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8665('0x0'))(_0x8665('0x1'));var moment=require(_0x8665('0x2'));var BPromise=require(_0x8665('0x3'));var rp=require(_0x8665('0x4'));var fs=require('fs');var path=require(_0x8665('0x5'));var rimraf=require('rimraf');var config=require(_0x8665('0x6'));var attributes=require(_0x8665('0x7'));module[_0x8665('0x8')]=function(_0xe8f7f,_0x23ebf2){return _0xe8f7f[_0x8665('0x9')]('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7e5bb9b..efd583f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a49=['ioredis','../../config/utils','rpc','../../config/environment','http','request','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring'];(function(_0x3a785b,_0xed26f9){var _0x54b2b8=function(_0x1e0b15){while(--_0x1e0b15){_0x3a785b['push'](_0x3a785b['shift']());}};_0x54b2b8(++_0xed26f9);}(_0x1a49,0x1c6));var _0x91a4=function(_0x1c477a,_0x24c0d1){_0x1c477a=_0x1c477a-0x0;var _0x4c56ac=_0x1a49[_0x1c477a];return _0x4c56ac;};'use strict';var _=require(_0x91a4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x91a4('0x1'));var fs=require('fs');var Redis=require(_0x91a4('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x91a4('0x3'));var logger=require('../../config/logger')(_0x91a4('0x4'));var config=require(_0x91a4('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x91a4('0x6')]({'port':0x232a});function respondWithRpcPromise(_0xf91193,_0x38f575,_0x59955f){return new BPromise(function(_0x46f219,_0x3c30ae){return client[_0x91a4('0x7')](_0xf91193,_0x59955f)['then'](function(_0x443618){logger[_0x91a4('0x8')](_0x91a4('0x9'),_0x38f575,_0x91a4('0xa'));logger[_0x91a4('0xb')](_0x91a4('0xc'),_0x38f575,'request\x20sent',JSON[_0x91a4('0xd')](_0x443618));if(_0x443618['error']){if(_0x443618[_0x91a4('0xe')][_0x91a4('0xf')]===0x1f4){logger[_0x91a4('0xe')]('CmCustomField,\x20%s,\x20%s',_0x38f575,_0x443618[_0x91a4('0xe')][_0x91a4('0x10')]);return _0x3c30ae(_0x443618[_0x91a4('0xe')][_0x91a4('0x10')]);}logger[_0x91a4('0xe')]('CmCustomField,\x20%s,\x20%s',_0x38f575,_0x443618[_0x91a4('0xe')]['message']);return _0x46f219(_0x443618[_0x91a4('0xe')][_0x91a4('0x10')]);}else{logger['info'](_0x91a4('0x9'),_0x38f575,_0x91a4('0xa'));_0x46f219(_0x443618[_0x91a4('0x11')][_0x91a4('0x10')]);}})[_0x91a4('0x12')](function(_0x31b0b1){logger[_0x91a4('0xe')](_0x91a4('0x9'),_0x38f575,_0x31b0b1);_0x3c30ae(_0x31b0b1);});});}
\ No newline at end of file
+var _0xd058=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment'];(function(_0x1351fa,_0x3d20c8){var _0x5272d3=function(_0x1422ff){while(--_0x1422ff){_0x1351fa['push'](_0x1351fa['shift']());}};_0x5272d3(++_0x3d20c8);}(_0xd058,0x16d));var _0x8d05=function(_0x9d639c,_0x524dbe){_0x9d639c=_0x9d639c-0x0;var _0x1671de=_0xd058[_0x9d639c];return _0x1671de;};'use strict';var _=require(_0x8d05('0x0'));var util=require(_0x8d05('0x1'));var moment=require(_0x8d05('0x2'));var BPromise=require('bluebird');var rs=require(_0x8d05('0x3'));var fs=require('fs');var Redis=require(_0x8d05('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8d05('0x5'));var logger=require(_0x8d05('0x6'))(_0x8d05('0x7'));var config=require(_0x8d05('0x8'));var jayson=require(_0x8d05('0x9'));var client=jayson[_0x8d05('0xa')][_0x8d05('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a7031,_0x5be18a,_0x180fc5){return new BPromise(function(_0x2786ae,_0x172ce4){return client[_0x8d05('0xc')](_0x5a7031,_0x180fc5)[_0x8d05('0xd')](function(_0x3f1eb2){logger[_0x8d05('0xe')](_0x8d05('0xf'),_0x5be18a,_0x8d05('0x10'));logger[_0x8d05('0x11')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x5be18a,_0x8d05('0x10'),JSON[_0x8d05('0x12')](_0x3f1eb2));if(_0x3f1eb2[_0x8d05('0x13')]){if(_0x3f1eb2[_0x8d05('0x13')][_0x8d05('0x14')]===0x1f4){logger[_0x8d05('0x13')](_0x8d05('0xf'),_0x5be18a,_0x3f1eb2[_0x8d05('0x13')]['message']);return _0x172ce4(_0x3f1eb2[_0x8d05('0x13')][_0x8d05('0x15')]);}logger['error'](_0x8d05('0xf'),_0x5be18a,_0x3f1eb2[_0x8d05('0x13')]['message']);return _0x2786ae(_0x3f1eb2[_0x8d05('0x13')]['message']);}else{logger[_0x8d05('0xe')](_0x8d05('0xf'),_0x5be18a,'request\x20sent');_0x2786ae(_0x3f1eb2[_0x8d05('0x16')][_0x8d05('0x15')]);}})['catch'](function(_0x52ff14){logger[_0x8d05('0x13')]('CmCustomField,\x20%s,\x20%s',_0x5be18a,_0x52ff14);_0x172ce4(_0x52ff14);});});}
\ No newline at end of file
index 68f53dd..09b3a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10eb=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0xf24dba,_0x4b18e2){var _0x4cca5c=function(_0x302bd4){while(--_0x302bd4){_0xf24dba['push'](_0xf24dba['shift']());}};_0x4cca5c(++_0x4b18e2);}(_0x10eb,0x71));var _0xb10e=function(_0x441e3a,_0x4fd2b1){_0x441e3a=_0x441e3a-0x0;var _0x55b3b8=_0x10eb[_0x441e3a];return _0x55b3b8;};'use strict';var multer=require(_0xb10e('0x0'));var util=require('util');var path=require(_0xb10e('0x1'));var timeout=require(_0xb10e('0x2'));var express=require(_0xb10e('0x3'));var router=express[_0xb10e('0x4')]();var fs_extra=require(_0xb10e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb10e('0x6'));var config=require(_0xb10e('0x7'));var controller=require('./cmCustomField.controller');router['get']('/',auth[_0xb10e('0x8')](),controller[_0xb10e('0x9')]);router[_0xb10e('0xa')](_0xb10e('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb10e('0xc')](_0xb10e('0xb'),auth[_0xb10e('0x8')](),controller[_0xb10e('0xd')]);router[_0xb10e('0xe')](_0xb10e('0xb'),auth[_0xb10e('0x8')](),controller[_0xb10e('0xf')]);module[_0xb10e('0x10')]=router;
\ No newline at end of file
+var _0xb5ec=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer'];(function(_0x39a2e4,_0x32acf2){var _0x1709fd=function(_0x26ed15){while(--_0x26ed15){_0x39a2e4['push'](_0x39a2e4['shift']());}};_0x1709fd(++_0x32acf2);}(_0xb5ec,0x97));var _0xcb5e=function(_0x1b506b,_0xa6035){_0x1b506b=_0x1b506b-0x0;var _0x270fd2=_0xb5ec[_0x1b506b];return _0x270fd2;};'use strict';var multer=require(_0xcb5e('0x0'));var util=require(_0xcb5e('0x1'));var path=require(_0xcb5e('0x2'));var timeout=require(_0xcb5e('0x3'));var express=require('express');var router=express[_0xcb5e('0x4')]();var fs_extra=require(_0xcb5e('0x5'));var auth=require(_0xcb5e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcb5e('0x7'));var controller=require('./cmCustomField.controller');router[_0xcb5e('0x8')]('/',auth[_0xcb5e('0x9')](),controller[_0xcb5e('0xa')]);router[_0xcb5e('0x8')](_0xcb5e('0xb'),auth[_0xcb5e('0x9')](),controller[_0xcb5e('0xc')]);router[_0xcb5e('0xd')]('/',auth[_0xcb5e('0x9')](),controller[_0xcb5e('0xe')]);router['put'](_0xcb5e('0xb'),auth[_0xcb5e('0x9')](),controller[_0xcb5e('0xf')]);router[_0xcb5e('0x10')](_0xcb5e('0xb'),auth[_0xcb5e('0x9')](),controller[_0xcb5e('0x11')]);module[_0xcb5e('0x12')]=router;
\ No newline at end of file
index 320122f..feef06f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd80=['BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x29e608,_0x1a6ccc){var _0x5d1d75=function(_0x15a6e4){while(--_0x15a6e4){_0x29e608['push'](_0x29e608['shift']());}};_0x5d1d75(++_0x1a6ccc);}(_0xcd80,0xdf));var _0x0cd8=function(_0xb25c71,_0x184611){_0xb25c71=_0xb25c71-0x0;var _0x4ad3a4=_0xcd80[_0xb25c71];return _0x4ad3a4;};'use strict';var moment=require(_0x0cd8('0x0'));var Sequelize=require(_0x0cd8('0x1'));module[_0x0cd8('0x2')]={'phone':{'type':Sequelize[_0x0cd8('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x0cd8('0x4')],'defaultValue':moment()[_0x0cd8('0x5')](_0x0cd8('0x6'))},'countbusyretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x0cd8('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x0cd8('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x0cd8('0x4')]},'priority':{'type':Sequelize[_0x0cd8('0x7')](0x2)[_0x0cd8('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x0cd8('0x8')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x0cd8('0x7')],'unique':_0x0cd8('0xa')},'ListId':{'type':Sequelize[_0x0cd8('0x7')],'unique':_0x0cd8('0xa')},'UserId':{'type':Sequelize[_0x0cd8('0x7')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x0cd8('0xa')},'CampaignId':{'type':Sequelize[_0x0cd8('0x7')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe9b2=['DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','STRING','BOOLEAN'];(function(_0x35f3b5,_0x180171){var _0x176cdd=function(_0x4e4b69){while(--_0x4e4b69){_0x35f3b5['push'](_0x35f3b5['shift']());}};_0x176cdd(++_0x180171);}(_0xe9b2,0x88));var _0x2e9b=function(_0xb66224,_0x3a3f2f){_0xb66224=_0xb66224-0x0;var _0x346365=_0xe9b2[_0xb66224];return _0x346365;};'use strict';var moment=require(_0x2e9b('0x0'));var Sequelize=require(_0x2e9b('0x1'));module['exports']={'phone':{'type':Sequelize[_0x2e9b('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x2e9b('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x2e9b('0x4')],'defaultValue':moment()[_0x2e9b('0x5')](_0x2e9b('0x6'))},'countbusyretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x2e9b('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2e9b('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2e9b('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x2e9b('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x2e9b('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x2e9b('0x7')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x2e9b('0x9')},'UserId':{'type':Sequelize[_0x2e9b('0x7')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x2e9b('0x9')},'CampaignId':{'type':Sequelize[_0x2e9b('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2e9b('0x7')],'defaultValue':0x0}};
\ No newline at end of file
index 6c623cd..d49c802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cc8=['user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmContact','getVoiceQueues','preview','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue','outbound','format','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','destroy','then','stack','name','send','map','CmHopper','key','query','filters','intersection','model','concat','$and','$or','$gt','$gte','$lt','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','show','keys','rawAttributes','find','catch','create','update','body','params','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','updatedAt','deleted','campaign','membername'];(function(_0x228a6b,_0x38f03f){var _0x11cfb9=function(_0x4f29e1){while(--_0x4f29e1){_0x228a6b['push'](_0x228a6b['shift']());}};_0x11cfb9(++_0x38f03f);}(_0x0cc8,0x1d7));var _0x80cc=function(_0x369289,_0xb779d8){_0x369289=_0x369289-0x0;var _0x1c8ba4=_0x0cc8[_0x369289];return _0x1c8ba4;};'use strict';var emlformat=require(_0x80cc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x80cc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x80cc('0x2'));var BPromise=require(_0x80cc('0x3'));var Mustache=require(_0x80cc('0x4'));var util=require('util');var path=require(_0x80cc('0x5'));var sox=require(_0x80cc('0x6'));var csv=require(_0x80cc('0x7'));var ejs=require(_0x80cc('0x8'));var fs=require('fs');var fs_extra=require(_0x80cc('0x9'));var _=require(_0x80cc('0xa'));var squel=require(_0x80cc('0xb'));var crypto=require(_0x80cc('0xc'));var jsforce=require(_0x80cc('0xd'));var deskjs=require(_0x80cc('0xe'));var toCsv=require(_0x80cc('0x7'));var querystring=require(_0x80cc('0xf'));var Papa=require('papaparse');var Redis=require(_0x80cc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x80cc('0x11'));var as=require(_0x80cc('0x12'));var hardwareService=require(_0x80cc('0x13'));var logger=require(_0x80cc('0x14'))('api');var utils=require(_0x80cc('0x15'));var config=require(_0x80cc('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bcb43,_0x35e361){_0x35e361=_0x35e361||0xcc;return function(_0x3e3e45){if(_0x3e3e45){return _0x4bcb43[_0x80cc('0x17')](_0x35e361);}return _0x4bcb43['status'](_0x35e361)[_0x80cc('0x18')]();};}function respondWithResult(_0x416392,_0x45643c){_0x45643c=_0x45643c||0xc8;return function(_0x1b079d){if(_0x1b079d){return _0x416392[_0x80cc('0x19')](_0x45643c)[_0x80cc('0x1a')](_0x1b079d);}};}function respondWithFilteredResult(_0x4cb9fa,_0x5f356e){return function(_0x1a5a5b){if(_0x1a5a5b){var _0x3d252e=typeof _0x5f356e[_0x80cc('0x1b')]===_0x80cc('0x1c')&&typeof _0x5f356e[_0x80cc('0x1d')]==='undefined';var _0x38f713=_0x1a5a5b[_0x80cc('0x1e')];var _0x4cf191=_0x3d252e?0x0:_0x5f356e[_0x80cc('0x1b')];var _0x15dd19=_0x3d252e?_0x1a5a5b[_0x80cc('0x1e')]:_0x5f356e[_0x80cc('0x1b')]+_0x5f356e[_0x80cc('0x1d')];var _0x5a0353;if(_0x15dd19>=_0x38f713){_0x15dd19=_0x38f713;_0x5a0353=0xc8;}else{_0x5a0353=0xce;}_0x4cb9fa[_0x80cc('0x19')](_0x5a0353);return _0x4cb9fa[_0x80cc('0x1f')]('Content-Range',_0x4cf191+'-'+_0x15dd19+'/'+_0x38f713)[_0x80cc('0x1a')](_0x1a5a5b);}return null;};}function patchUpdates(_0x497784){return function(_0x5a7757){try{jsonpatch['apply'](_0x5a7757,_0x497784,!![]);}catch(_0xca4df0){return BPromise['reject'](_0xca4df0);}return _0x5a7757['save']();};}function saveUpdates(_0x5c18e4,_0x116906){return function(_0x126b92){if(_0x126b92){return _0x126b92['update'](_0x5c18e4)['then'](function(_0xd1d511){return _0xd1d511;});}return null;};}function removeEntity(_0xc219ef,_0x55bae6){return function(_0x297058){if(_0x297058){return _0x297058[_0x80cc('0x20')]()[_0x80cc('0x21')](function(){_0xc219ef[_0x80cc('0x19')](0xcc)[_0x80cc('0x18')]();});}};}function handleEntityNotFound(_0x540b73,_0x315abd){return function(_0x233a4d){if(!_0x233a4d){_0x540b73[_0x80cc('0x17')](0x194);}return _0x233a4d;};}function handleError(_0x2ed409,_0x34b21a){_0x34b21a=_0x34b21a||0x1f4;return function(_0x2025b7){logger['error'](_0x2025b7[_0x80cc('0x22')]);if(_0x2025b7['name']){delete _0x2025b7[_0x80cc('0x23')];}_0x2ed409[_0x80cc('0x19')](_0x34b21a)[_0x80cc('0x24')](_0x2025b7);};}exports['index']=function(_0x6ee4ac,_0x435a11){var _0xc11292={},_0x319191={},_0x3ae7f7={'count':0x0,'rows':[]};var _0x21325f=_[_0x80cc('0x25')](db[_0x80cc('0x26')]['rawAttributes'],function(_0x43b844){return{'name':_0x43b844['fieldName'],'type':_0x43b844['type'][_0x80cc('0x27')]};});_0x319191['model']=_[_0x80cc('0x25')](_0x21325f,_0x80cc('0x23'));_0x319191[_0x80cc('0x28')]=_['keys'](_0x6ee4ac[_0x80cc('0x28')]);_0x319191[_0x80cc('0x29')]=_[_0x80cc('0x2a')](_0x319191[_0x80cc('0x2b')],_0x319191[_0x80cc('0x28')]);_0x319191[_0x80cc('0x29')]=_[_0x80cc('0x2c')](_0x319191[_0x80cc('0x29')],[_0x80cc('0x2d'),_0x80cc('0x2e'),_0x80cc('0x2f'),_0x80cc('0x30'),_0x80cc('0x31'),'$lte',_0x80cc('0x32'),'$eq',_0x80cc('0x33'),_0x80cc('0x34'),_0x80cc('0x35'),_0x80cc('0x36'),_0x80cc('0x37'),_0x80cc('0x38'),_0x80cc('0x39'),_0x80cc('0x3a'),_0x80cc('0x3b'),_0x80cc('0x38'),_0x80cc('0x3c'),_0x80cc('0x3d'),'$contained','$any']);_0xc11292['attributes']=_[_0x80cc('0x2a')](_0x319191[_0x80cc('0x2b')],qs[_0x80cc('0x3e')](_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x3e')]));_0xc11292[_0x80cc('0x3f')]=_0xc11292['attributes'][_0x80cc('0x40')]?_0xc11292[_0x80cc('0x3f')]:_0x319191[_0x80cc('0x2b')];if(!_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x41')]('nolimit')){_0xc11292[_0x80cc('0x1d')]=qs[_0x80cc('0x1d')](_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x1d')]);_0xc11292[_0x80cc('0x1b')]=qs[_0x80cc('0x1b')](_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x1b')]);}_0xc11292['order']=qs[_0x80cc('0x42')](_0x6ee4ac[_0x80cc('0x28')]['sort']);_0xc11292['where']=qs[_0x80cc('0x29')](_[_0x80cc('0x43')](_0x6ee4ac['query'],_0x319191[_0x80cc('0x29')]),_0x21325f);if(_0x6ee4ac['query'][_0x80cc('0x44')]){_0xc11292[_0x80cc('0x45')]=_[_0x80cc('0x46')](_0xc11292[_0x80cc('0x45')],{'$or':_[_0x80cc('0x25')](_0x21325f,function(_0x3e7df8){if(_0x3e7df8[_0x80cc('0x47')]!==_0x80cc('0x48')){var _0x5e9bd0={};_0x5e9bd0[_0x3e7df8[_0x80cc('0x23')]]={'$like':'%'+_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x44')]+'%'};return _0x5e9bd0;}})});}_0xc11292=_[_0x80cc('0x46')]({},_0xc11292,_0x6ee4ac[_0x80cc('0x49')]);var _0x40c0ba={'where':_0xc11292[_0x80cc('0x45')]};return db[_0x80cc('0x26')][_0x80cc('0x1e')](_0x40c0ba)[_0x80cc('0x21')](function(_0xfc7dc2){_0x3ae7f7[_0x80cc('0x1e')]=_0xfc7dc2;if(_0x6ee4ac[_0x80cc('0x28')]['includeAll']){_0xc11292[_0x80cc('0x4a')]=[{'all':!![]}];}return db['CmHopper'][_0x80cc('0x4b')](_0xc11292);})['then'](function(_0x10dcd0){_0x3ae7f7[_0x80cc('0x4c')]=_0x10dcd0;return _0x3ae7f7;})[_0x80cc('0x21')](respondWithFilteredResult(_0x435a11,_0xc11292))['catch'](handleError(_0x435a11,null));};exports[_0x80cc('0x4d')]=function(_0x4f83cd,_0x1e5243){var _0x3fbd5f={'raw':!![],'where':{'id':_0x4f83cd['params']['id']}},_0x45fb4f={};_0x45fb4f['model']=_[_0x80cc('0x4e')](db[_0x80cc('0x26')][_0x80cc('0x4f')]);_0x45fb4f[_0x80cc('0x28')]=_[_0x80cc('0x4e')](_0x4f83cd['query']);_0x45fb4f[_0x80cc('0x29')]=_[_0x80cc('0x2a')](_0x45fb4f[_0x80cc('0x2b')],_0x45fb4f[_0x80cc('0x28')]);_0x3fbd5f[_0x80cc('0x3f')]=_[_0x80cc('0x2a')](_0x45fb4f[_0x80cc('0x2b')],qs[_0x80cc('0x3e')](_0x4f83cd['query'][_0x80cc('0x3e')]));_0x3fbd5f['attributes']=_0x3fbd5f[_0x80cc('0x3f')][_0x80cc('0x40')]?_0x3fbd5f[_0x80cc('0x3f')]:_0x45fb4f[_0x80cc('0x2b')];if(_0x4f83cd[_0x80cc('0x28')]['includeAll']){_0x3fbd5f['include']=[{'all':!![]}];}_0x3fbd5f=_[_0x80cc('0x46')]({},_0x3fbd5f,_0x4f83cd['options']);return db[_0x80cc('0x26')][_0x80cc('0x50')](_0x3fbd5f)['then'](handleEntityNotFound(_0x1e5243,null))[_0x80cc('0x21')](respondWithResult(_0x1e5243,null))[_0x80cc('0x51')](handleError(_0x1e5243,null));};exports[_0x80cc('0x52')]=function(_0x12544f,_0x2e22db){return db['CmHopper'][_0x80cc('0x52')](_0x12544f['body'],{})['then'](respondWithResult(_0x2e22db,0xc9))[_0x80cc('0x51')](handleError(_0x2e22db,null));};exports[_0x80cc('0x53')]=function(_0x56f095,_0x3a955c){if(_0x56f095[_0x80cc('0x54')]['id']){delete _0x56f095[_0x80cc('0x54')]['id'];}return db[_0x80cc('0x26')]['find']({'where':{'id':_0x56f095[_0x80cc('0x55')]['id']}})[_0x80cc('0x21')](handleEntityNotFound(_0x3a955c,null))[_0x80cc('0x21')](saveUpdates(_0x56f095['body'],null))[_0x80cc('0x21')](respondWithResult(_0x3a955c,null))[_0x80cc('0x51')](handleError(_0x3a955c,null));};exports['describe']=function(_0x454ff1,_0x524730){return db[_0x80cc('0x26')][_0x80cc('0x56')]()['then'](respondWithResult(_0x524730,null))[_0x80cc('0x51')](handleError(_0x524730,null));};exports[_0x80cc('0x20')]=function(_0x3b8c6c,_0x2b53b4){var _0x245214;return db[_0x80cc('0x26')][_0x80cc('0x50')]({'where':{'id':_0x3b8c6c[_0x80cc('0x55')]['id']}})[_0x80cc('0x21')](handleEntityNotFound(_0x2b53b4,null))[_0x80cc('0x21')](function(_0x44ca3b){if(_0x44ca3b){return _0x44ca3b[_0x80cc('0x20')]()['then'](function(_0x3d60fa){return _0x3d60fa;});}})[_0x80cc('0x21')](function(_0x1b86f0){_0x245214=_0x1b86f0;if(_0x1b86f0){if(_0x1b86f0[_0x80cc('0x57')]||_0x1b86f0[_0x80cc('0x58')]){return db[_0x1b86f0[_0x80cc('0x57')]?_0x80cc('0x59'):_0x80cc('0x5a')][_0x80cc('0x50')]({'where':{'id':_0x1b86f0[_0x80cc('0x57')]?_0x1b86f0[_0x80cc('0x57')]:_0x1b86f0[_0x80cc('0x58')]},'attributes':['id','name'],'raw':!![]});}}})[_0x80cc('0x21')](function(_0x583258){var _0x4ded20={};if(_0x583258){_['merge'](_0x4ded20,_[_0x80cc('0x5b')](_0x245214[_0x80cc('0x5c')],['createdAt',_0x80cc('0x5d'),'id']));_0x4ded20['state']=0x15;_0x4ded20['statedesc']=_0x80cc('0x5e');_0x4ded20[_0x80cc('0x5f')]=_0x583258[_0x80cc('0x23')];_0x4ded20[_0x80cc('0x60')]=_0x3b8c6c[_0x80cc('0x61')][_0x80cc('0x23')];_0x4ded20[_0x80cc('0x62')]=_0x3b8c6c[_0x80cc('0x61')]['id'];_0x4ded20['deleted']=!![];_0x4ded20[_0x80cc('0x63')]=moment()['format'](_0x80cc('0x64'));_0x4ded20[_0x80cc('0x65')]=_0x245214[_0x80cc('0x66')];_0x4ded20[_0x80cc('0x67')]=_0x245214[_0x80cc('0x57')]?'queue':_0x80cc('0x68');return db['CmContact'][_0x80cc('0x50')]({'where':{'id':_0x4ded20[_0x80cc('0x69')]},'attributes':[_0x80cc('0x6a'),_0x80cc('0x6b')]})['then'](function(_0x2df2f8){if(!_[_0x80cc('0x6c')](_0x2b53b4)&&!_[_0x80cc('0x6c')](_0x2df2f8[_0x80cc('0x6a')])){_0x4ded20[_0x80cc('0x6d')]=_0x2df2f8[_0x80cc('0x6a')];if(!_['isNil'](_0x2df2f8[_0x80cc('0x6b')])){_0x4ded20[_0x80cc('0x6d')]+='\x20'+_0x2df2f8[_0x80cc('0x6b')];}}})[_0x80cc('0x6e')](function(){return db[_0x80cc('0x6f')][_0x80cc('0x52')](_0x4ded20);});}})[_0x80cc('0x21')](function(){return _0x2b53b4[_0x80cc('0x19')](0xcc)[_0x80cc('0x18')]();})[_0x80cc('0x51')](handleError(_0x2b53b4,null));};exports['getPreview']=function(_0xb45fd9,_0x39ae93,_0x5e7f65){var _0x2511c7=[];return db[_0x80cc('0x70')][_0x80cc('0x56')]()[_0x80cc('0x21')](function(_0x555436){_0x2511c7=_[_0x80cc('0x4e')](_0x555436);return _0xb45fd9['user'][_0x80cc('0x71')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x80cc('0x72')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x1b4b48){if(_0x1b4b48&&_0x1b4b48[_0x80cc('0x40')]){return db[_0x80cc('0x73')][_0x80cc('0x74')](function(_0x541ac2){var _0x2b7e2f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x80cc('0x64'))},'VoiceQueueId':{'$in':_[_0x80cc('0x25')](_0x1b4b48,'id')},'$or':[{'UserId':null},{'UserId':_0xb45fd9[_0x80cc('0x61')]['id']}]};var _0x576a23=[];if(_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x75')]&&_0xb45fd9['body'][_0x80cc('0x75')]===_0x80cc('0x76')){if(!_[_0x80cc('0x77')](_0xb45fd9[_0x80cc('0x54')]['hopperIds'])){_0x2b7e2f['id']={'$in':_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x78')]};}_0x576a23=[[_0x80cc('0x79'),_0x80cc('0x7a')],[_0x80cc('0x7b'),_0x1b4b48[0x0][_0x80cc('0x7c')]===_0x80cc('0x7a')?'DESC':_0x80cc('0x7a')],db[_0x80cc('0x73')][_0x80cc('0x7d')](_0x80cc('0x7e')),['id','DESC']];}else{if(!_[_0x80cc('0x77')](_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x78')])){_0x2b7e2f['id']={'$notIn':_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x78')]};}_0x576a23=[['priority',_0x80cc('0x7f')],[_0x80cc('0x7b'),_0x1b4b48[0x0][_0x80cc('0x7c')]],db[_0x80cc('0x73')][_0x80cc('0x7d')](_0x80cc('0x80')),['id',_0x80cc('0x7a')]];}return db['CmHopper']['findOne']({'attributes':['id',_0x80cc('0x81')],'where':_0x2b7e2f,'order':_0x576a23,'transaction':_0x541ac2,'lock':_0x541ac2[_0x80cc('0x82')][_0x80cc('0x83')],'include':[{'model':db[_0x80cc('0x70')],'as':_0x80cc('0x84'),'attributes':_0x2511c7,'include':[{'model':db[_0x80cc('0x85')],'as':'Company','attributes':['id',_0x80cc('0x23')]}]},{'model':db[_0x80cc('0x86')],'as':_0x80cc('0x87'),'attributes':['id',_0x80cc('0x23')]},{'model':db['VoiceQueue'],'as':_0x80cc('0x88'),'attributes':['id',_0x80cc('0x23'),'dialActive']}]})[_0x80cc('0x21')](function(_0x3b02d1){if(_0x3b02d1){return _0x3b02d1[_0x80cc('0x53')]({'UserId':_0xb45fd9['user']['id']},{'transaction':_0x541ac2});}});});}})[_0x80cc('0x21')](handleEntityNotFound(_0x39ae93,null))['then'](respondWithResult(_0x39ae93,null))[_0x80cc('0x51')](handleError(_0x39ae93,null));};exports['getOpenContacts']=function(_0x20e832,_0x508c00,_0x18bd26){return _0x20e832[_0x80cc('0x61')]['getVoiceQueues']({'where':{'type':_0x80cc('0x89'),'dialActive':!![],'dialMethod':_0x80cc('0x72')},'attributes':['id'],'raw':!![]})[_0x80cc('0x21')](function(_0x100d34){if(_0x100d34&&_0x100d34[_0x80cc('0x40')]){return db[_0x80cc('0x26')][_0x80cc('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x80cc('0x8a')](_0x80cc('0x64'))},'VoiceQueueId':{'$in':_[_0x80cc('0x25')](_0x100d34,'id')},'$or':[{'UserId':null},{'UserId':_0x20e832[_0x80cc('0x61')]['id']}]}});}return 0x0;})[_0x80cc('0x21')](function(_0x52143a){if(!_[_0x80cc('0x6c')](_0x52143a)&&_['isNumber'](_0x52143a)){return _0x508c00[_0x80cc('0x19')](0xc8)[_0x80cc('0x1a')]({'contacts':_0x52143a});}else{logger[_0x80cc('0x8b')](_0x80cc('0x8c'),'getOpenContacts',0x194,_0x80cc('0x8d'));_0x508c00[_0x80cc('0x17')](0x194);}})['catch'](handleError(_0x508c00,null));};
\ No newline at end of file
+var _0x40af=['$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','then','include','findAll','rows','catch','show','params','intersection','merge','find','create','body','describe','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','dataValues','createdAt','updatedAt','state','deleted','campaign','user','UserId','format','calleridnum','phone','queue','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','preview','dialOrderByScheduledAt','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','scheduledAt','ASC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','UPDATE','CmCompany','Company','CmList','Queue','dialActive','update','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','destroy','end','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','keys','query','filters','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$not','$between','$notBetween'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x40af,0xec));var _0xf40a=function(_0x2a485f,_0x2c2b0f){_0x2a485f=_0x2a485f-0x0;var _0x1d70a9=_0x40af[_0x2a485f];return _0x1d70a9;};'use strict';var emlformat=require(_0xf40a('0x0'));var rimraf=require(_0xf40a('0x1'));var zipdir=require(_0xf40a('0x2'));var jsonpatch=require(_0xf40a('0x3'));var rp=require(_0xf40a('0x4'));var moment=require(_0xf40a('0x5'));var BPromise=require(_0xf40a('0x6'));var Mustache=require('mustache');var util=require(_0xf40a('0x7'));var path=require(_0xf40a('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf40a('0x9'));var fs=require('fs');var fs_extra=require(_0xf40a('0xa'));var _=require(_0xf40a('0xb'));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(_0xf40a('0xc'));var Papa=require(_0xf40a('0xd'));var Redis=require(_0xf40a('0xe'));var authService=require(_0xf40a('0xf'));var qs=require(_0xf40a('0x10'));var as=require(_0xf40a('0x11'));var hardwareService=require(_0xf40a('0x12'));var logger=require(_0xf40a('0x13'))('api');var utils=require(_0xf40a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf40a('0x15'));var db=require(_0xf40a('0x16'))['db'];function respondWithStatusCode(_0x21e4da,_0x2d0b70){_0x2d0b70=_0x2d0b70||0xcc;return function(_0x11fe05){if(_0x11fe05){return _0x21e4da[_0xf40a('0x17')](_0x2d0b70);}return _0x21e4da[_0xf40a('0x18')](_0x2d0b70)['end']();};}function respondWithResult(_0x4a52e0,_0x5b9f4b){_0x5b9f4b=_0x5b9f4b||0xc8;return function(_0x117a90){if(_0x117a90){return _0x4a52e0[_0xf40a('0x18')](_0x5b9f4b)['json'](_0x117a90);}};}function respondWithFilteredResult(_0x215bab,_0x4b78d3){return function(_0x15ccf2){if(_0x15ccf2){var _0x49ed3f=typeof _0x4b78d3[_0xf40a('0x19')]===_0xf40a('0x1a')&&typeof _0x4b78d3[_0xf40a('0x1b')]===_0xf40a('0x1a');var _0x4d7c95=_0x15ccf2[_0xf40a('0x1c')];var _0x225e03=_0x49ed3f?0x0:_0x4b78d3[_0xf40a('0x19')];var _0x56288a=_0x49ed3f?_0x15ccf2[_0xf40a('0x1c')]:_0x4b78d3['offset']+_0x4b78d3[_0xf40a('0x1b')];var _0x565704;if(_0x56288a>=_0x4d7c95){_0x56288a=_0x4d7c95;_0x565704=0xc8;}else{_0x565704=0xce;}_0x215bab['status'](_0x565704);return _0x215bab[_0xf40a('0x1d')](_0xf40a('0x1e'),_0x225e03+'-'+_0x56288a+'/'+_0x4d7c95)[_0xf40a('0x1f')](_0x15ccf2);}return null;};}function patchUpdates(_0x4819a7){return function(_0x5b4499){try{jsonpatch['apply'](_0x5b4499,_0x4819a7,!![]);}catch(_0x54ea36){return BPromise[_0xf40a('0x20')](_0x54ea36);}return _0x5b4499[_0xf40a('0x21')]();};}function saveUpdates(_0x47f54a,_0x190170){return function(_0x20d52a){if(_0x20d52a){return _0x20d52a['update'](_0x47f54a)['then'](function(_0x2865b5){return _0x2865b5;});}return null;};}function removeEntity(_0x2a556d,_0x40fd6e){return function(_0x1d6a09){if(_0x1d6a09){return _0x1d6a09[_0xf40a('0x22')]()['then'](function(){_0x2a556d[_0xf40a('0x18')](0xcc)[_0xf40a('0x23')]();});}};}function handleEntityNotFound(_0x9dc63c,_0x13bb1a){return function(_0x3818d0){if(!_0x3818d0){_0x9dc63c[_0xf40a('0x17')](0x194);}return _0x3818d0;};}function handleError(_0x3bde90,_0x546737){_0x546737=_0x546737||0x1f4;return function(_0x4e6baf){logger['error'](_0x4e6baf['stack']);if(_0x4e6baf[_0xf40a('0x24')]){delete _0x4e6baf['name'];}_0x3bde90['status'](_0x546737)[_0xf40a('0x25')](_0x4e6baf);};}exports[_0xf40a('0x26')]=function(_0x223d6a,_0x1fde7b){var _0x54675e={},_0x1f9769={},_0x423f2c={'count':0x0,'rows':[]};var _0x2eaffa=_[_0xf40a('0x27')](db[_0xf40a('0x28')][_0xf40a('0x29')],function(_0x18fb87){return{'name':_0x18fb87[_0xf40a('0x2a')],'type':_0x18fb87[_0xf40a('0x2b')][_0xf40a('0x2c')]};});_0x1f9769[_0xf40a('0x2d')]=_[_0xf40a('0x27')](_0x2eaffa,_0xf40a('0x24'));_0x1f9769['query']=_[_0xf40a('0x2e')](_0x223d6a[_0xf40a('0x2f')]);_0x1f9769['filters']=_['intersection'](_0x1f9769[_0xf40a('0x2d')],_0x1f9769['query']);_0x1f9769[_0xf40a('0x30')]=_[_0xf40a('0x31')](_0x1f9769[_0xf40a('0x30')],[_0xf40a('0x32'),_0xf40a('0x33'),_0xf40a('0x34'),_0xf40a('0x35'),_0xf40a('0x36'),_0xf40a('0x37'),_0xf40a('0x38'),'$eq',_0xf40a('0x39'),_0xf40a('0x3a'),_0xf40a('0x3b'),_0xf40a('0x3c'),_0xf40a('0x3d'),_0xf40a('0x3e'),_0xf40a('0x3f'),_0xf40a('0x40'),_0xf40a('0x41'),_0xf40a('0x3e'),'$overlap',_0xf40a('0x42'),'$contained',_0xf40a('0x43')]);_0x54675e[_0xf40a('0x44')]=_['intersection'](_0x1f9769[_0xf40a('0x2d')],qs[_0xf40a('0x45')](_0x223d6a[_0xf40a('0x2f')][_0xf40a('0x45')]));_0x54675e[_0xf40a('0x44')]=_0x54675e[_0xf40a('0x44')][_0xf40a('0x46')]?_0x54675e[_0xf40a('0x44')]:_0x1f9769[_0xf40a('0x2d')];if(!_0x223d6a[_0xf40a('0x2f')][_0xf40a('0x47')](_0xf40a('0x48'))){_0x54675e[_0xf40a('0x1b')]=qs[_0xf40a('0x1b')](_0x223d6a['query']['limit']);_0x54675e[_0xf40a('0x19')]=qs['offset'](_0x223d6a[_0xf40a('0x2f')][_0xf40a('0x19')]);}_0x54675e[_0xf40a('0x49')]=qs[_0xf40a('0x4a')](_0x223d6a[_0xf40a('0x2f')][_0xf40a('0x4a')]);_0x54675e['where']=qs[_0xf40a('0x30')](_[_0xf40a('0x4b')](_0x223d6a[_0xf40a('0x2f')],_0x1f9769['filters']),_0x2eaffa);if(_0x223d6a[_0xf40a('0x2f')][_0xf40a('0x4c')]){_0x54675e[_0xf40a('0x4d')]=_['merge'](_0x54675e[_0xf40a('0x4d')],{'$or':_[_0xf40a('0x27')](_0x2eaffa,function(_0x44fe09){if(_0x44fe09[_0xf40a('0x2b')]!==_0xf40a('0x4e')){var _0x4dfdb1={};_0x4dfdb1[_0x44fe09['name']]={'$like':'%'+_0x223d6a[_0xf40a('0x2f')]['filter']+'%'};return _0x4dfdb1;}})});}_0x54675e=_['merge']({},_0x54675e,_0x223d6a['options']);var _0x597426={'where':_0x54675e[_0xf40a('0x4d')]};return db[_0xf40a('0x28')][_0xf40a('0x1c')](_0x597426)[_0xf40a('0x4f')](function(_0x3af55a){_0x423f2c[_0xf40a('0x1c')]=_0x3af55a;if(_0x223d6a['query']['includeAll']){_0x54675e[_0xf40a('0x50')]=[{'all':!![]}];}return db['CmHopper'][_0xf40a('0x51')](_0x54675e);})[_0xf40a('0x4f')](function(_0x352453){_0x423f2c[_0xf40a('0x52')]=_0x352453;return _0x423f2c;})['then'](respondWithFilteredResult(_0x1fde7b,_0x54675e))[_0xf40a('0x53')](handleError(_0x1fde7b,null));};exports[_0xf40a('0x54')]=function(_0x5d9bcb,_0x5c8092){var _0x390ac2={'raw':!![],'where':{'id':_0x5d9bcb[_0xf40a('0x55')]['id']}},_0x287c67={};_0x287c67[_0xf40a('0x2d')]=_['keys'](db[_0xf40a('0x28')][_0xf40a('0x29')]);_0x287c67['query']=_[_0xf40a('0x2e')](_0x5d9bcb[_0xf40a('0x2f')]);_0x287c67[_0xf40a('0x30')]=_[_0xf40a('0x56')](_0x287c67[_0xf40a('0x2d')],_0x287c67['query']);_0x390ac2[_0xf40a('0x44')]=_[_0xf40a('0x56')](_0x287c67['model'],qs[_0xf40a('0x45')](_0x5d9bcb['query'][_0xf40a('0x45')]));_0x390ac2[_0xf40a('0x44')]=_0x390ac2[_0xf40a('0x44')][_0xf40a('0x46')]?_0x390ac2[_0xf40a('0x44')]:_0x287c67[_0xf40a('0x2d')];if(_0x5d9bcb[_0xf40a('0x2f')]['includeAll']){_0x390ac2[_0xf40a('0x50')]=[{'all':!![]}];}_0x390ac2=_[_0xf40a('0x57')]({},_0x390ac2,_0x5d9bcb['options']);return db[_0xf40a('0x28')][_0xf40a('0x58')](_0x390ac2)[_0xf40a('0x4f')](handleEntityNotFound(_0x5c8092,null))[_0xf40a('0x4f')](respondWithResult(_0x5c8092,null))[_0xf40a('0x53')](handleError(_0x5c8092,null));};exports[_0xf40a('0x59')]=function(_0x474ff5,_0x41b5ad){return db[_0xf40a('0x28')][_0xf40a('0x59')](_0x474ff5[_0xf40a('0x5a')],{})[_0xf40a('0x4f')](respondWithResult(_0x41b5ad,0xc9))[_0xf40a('0x53')](handleError(_0x41b5ad,null));};exports['update']=function(_0x14e563,_0x2ee01b){if(_0x14e563['body']['id']){delete _0x14e563[_0xf40a('0x5a')]['id'];}return db[_0xf40a('0x28')][_0xf40a('0x58')]({'where':{'id':_0x14e563[_0xf40a('0x55')]['id']}})[_0xf40a('0x4f')](handleEntityNotFound(_0x2ee01b,null))[_0xf40a('0x4f')](saveUpdates(_0x14e563['body'],null))[_0xf40a('0x4f')](respondWithResult(_0x2ee01b,null))['catch'](handleError(_0x2ee01b,null));};exports[_0xf40a('0x5b')]=function(_0x17f088,_0x3d3abd){return db[_0xf40a('0x28')]['describe']()[_0xf40a('0x4f')](respondWithResult(_0x3d3abd,null))[_0xf40a('0x53')](handleError(_0x3d3abd,null));};exports[_0xf40a('0x22')]=function(_0x5be7db,_0x1c8b43){var _0x3f75d6;return db[_0xf40a('0x28')][_0xf40a('0x58')]({'where':{'id':_0x5be7db[_0xf40a('0x55')]['id']}})['then'](handleEntityNotFound(_0x1c8b43,null))[_0xf40a('0x4f')](function(_0x2cb51f){if(_0x2cb51f){return _0x2cb51f[_0xf40a('0x22')]()[_0xf40a('0x4f')](function(_0x2a7967){return _0x2a7967;});}})[_0xf40a('0x4f')](function(_0x471e26){_0x3f75d6=_0x471e26;if(_0x471e26){if(_0x471e26['VoiceQueueId']||_0x471e26[_0xf40a('0x5c')]){return db[_0x471e26['VoiceQueueId']?_0xf40a('0x5d'):_0xf40a('0x5e')][_0xf40a('0x58')]({'where':{'id':_0x471e26[_0xf40a('0x5f')]?_0x471e26[_0xf40a('0x5f')]:_0x471e26[_0xf40a('0x5c')]},'attributes':['id',_0xf40a('0x24')],'raw':!![]});}}})[_0xf40a('0x4f')](function(_0x532db8){var _0x4f0826={};if(_0x532db8){_[_0xf40a('0x57')](_0x4f0826,_[_0xf40a('0x60')](_0x3f75d6[_0xf40a('0x61')],[_0xf40a('0x62'),_0xf40a('0x63'),'id']));_0x4f0826[_0xf40a('0x64')]=0x15;_0x4f0826['statedesc']=_0xf40a('0x65');_0x4f0826[_0xf40a('0x66')]=_0x532db8['name'];_0x4f0826['membername']=_0x5be7db[_0xf40a('0x67')]['name'];_0x4f0826[_0xf40a('0x68')]=_0x5be7db[_0xf40a('0x67')]['id'];_0x4f0826[_0xf40a('0x65')]=!![];_0x4f0826['deletedat']=moment()[_0xf40a('0x69')]('YYYY-MM-DD\x20HH:mm:ss');_0x4f0826[_0xf40a('0x6a')]=_0x3f75d6[_0xf40a('0x6b')];_0x4f0826['campaigntype']=_0x3f75d6['VoiceQueueId']?_0xf40a('0x6c'):'ivr';return db[_0xf40a('0x6d')][_0xf40a('0x58')]({'where':{'id':_0x4f0826[_0xf40a('0x6e')]},'attributes':[_0xf40a('0x6f'),'lastName']})[_0xf40a('0x4f')](function(_0x504125){if(!_[_0xf40a('0x70')](_0x1c8b43)&&!_[_0xf40a('0x70')](_0x504125['firstName'])){_0x4f0826[_0xf40a('0x71')]=_0x504125[_0xf40a('0x6f')];if(!_['isNil'](_0x504125[_0xf40a('0x72')])){_0x4f0826['calleridname']+='\x20'+_0x504125[_0xf40a('0x72')];}}})[_0xf40a('0x73')](function(){return db[_0xf40a('0x74')][_0xf40a('0x59')](_0x4f0826);});}})[_0xf40a('0x4f')](function(){return _0x1c8b43[_0xf40a('0x18')](0xcc)[_0xf40a('0x23')]();})['catch'](handleError(_0x1c8b43,null));};exports[_0xf40a('0x75')]=function(_0x400b3e,_0x74f97,_0x4c8890){var _0x22d444=[];return db[_0xf40a('0x6d')][_0xf40a('0x5b')]()[_0xf40a('0x4f')](function(_0x4fb278){_0x22d444=_['keys'](_0x4fb278);return _0x400b3e['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xf40a('0x76')},'attributes':['id',_0xf40a('0x77')],'raw':!![]});})[_0xf40a('0x4f')](function(_0x4afd60){if(_0x4afd60&&_0x4afd60[_0xf40a('0x46')]){return db['sequelize'][_0xf40a('0x78')](function(_0x881e2f){var _0x5d9ed0={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xf40a('0x79'))},'VoiceQueueId':{'$in':_['map'](_0x4afd60,'id')},'$or':[{'UserId':null},{'UserId':_0x400b3e['user']['id']}]};var _0x5ccf0a=[];if(_0x400b3e[_0xf40a('0x5a')][_0xf40a('0x7a')]&&_0x400b3e[_0xf40a('0x5a')][_0xf40a('0x7a')]===_0xf40a('0x7b')){if(!_[_0xf40a('0x7c')](_0x400b3e[_0xf40a('0x5a')]['hopperIds'])){_0x5d9ed0['id']={'$in':_0x400b3e[_0xf40a('0x5a')][_0xf40a('0x7d')]};}_0x5ccf0a=[[_0xf40a('0x7e'),'ASC'],[_0xf40a('0x7f'),_0x4afd60[0x0]['dialOrderByScheduledAt']===_0xf40a('0x80')?'DESC':_0xf40a('0x80')],db[_0xf40a('0x81')][_0xf40a('0x82')](_0xf40a('0x83')),['id',_0xf40a('0x84')]];}else{if(!_[_0xf40a('0x7c')](_0x400b3e[_0xf40a('0x5a')][_0xf40a('0x7d')])){_0x5d9ed0['id']={'$notIn':_0x400b3e[_0xf40a('0x5a')][_0xf40a('0x7d')]};}_0x5ccf0a=[[_0xf40a('0x7e'),_0xf40a('0x84')],[_0xf40a('0x7f'),_0x4afd60[0x0][_0xf40a('0x77')]],db[_0xf40a('0x81')]['literal'](_0xf40a('0x85')),['id',_0xf40a('0x80')]];}return db[_0xf40a('0x28')]['findOne']({'attributes':['id',_0xf40a('0x86')],'where':_0x5d9ed0,'order':_0x5ccf0a,'transaction':_0x881e2f,'lock':_0x881e2f[_0xf40a('0x87')][_0xf40a('0x88')],'include':[{'model':db[_0xf40a('0x6d')],'as':'Contact','attributes':_0x22d444,'include':[{'model':db[_0xf40a('0x89')],'as':_0xf40a('0x8a'),'attributes':['id','name']}]},{'model':db[_0xf40a('0x8b')],'as':'List','attributes':['id','name']},{'model':db[_0xf40a('0x5d')],'as':_0xf40a('0x8c'),'attributes':['id',_0xf40a('0x24'),_0xf40a('0x8d')]}]})[_0xf40a('0x4f')](function(_0x12e2e1){if(_0x12e2e1){return _0x12e2e1[_0xf40a('0x8e')]({'UserId':_0x400b3e[_0xf40a('0x67')]['id']},{'transaction':_0x881e2f});}});});}})[_0xf40a('0x4f')](handleEntityNotFound(_0x74f97,null))[_0xf40a('0x4f')](respondWithResult(_0x74f97,null))[_0xf40a('0x53')](handleError(_0x74f97,null));};exports['getOpenContacts']=function(_0x26bba1,_0x5a30ff,_0x41c417){return _0x26bba1[_0xf40a('0x67')]['getVoiceQueues']({'where':{'type':_0xf40a('0x8f'),'dialActive':!![],'dialMethod':_0xf40a('0x76')},'attributes':['id'],'raw':!![]})[_0xf40a('0x4f')](function(_0x12036a){if(_0x12036a&&_0x12036a[_0xf40a('0x46')]){return db['CmHopper'][_0xf40a('0x1c')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xf40a('0x69')](_0xf40a('0x79'))},'VoiceQueueId':{'$in':_['map'](_0x12036a,'id')},'$or':[{'UserId':null},{'UserId':_0x26bba1[_0xf40a('0x67')]['id']}]}});}return 0x0;})[_0xf40a('0x4f')](function(_0x17c22a){if(!_[_0xf40a('0x70')](_0x17c22a)&&_[_0xf40a('0x90')](_0x17c22a)){return _0x5a30ff[_0xf40a('0x18')](0xc8)[_0xf40a('0x1f')]({'contacts':_0x17c22a});}else{logger['error'](_0xf40a('0x91'),_0xf40a('0x92'),0x194,_0xf40a('0x93'));_0x5a30ff[_0xf40a('0x17')](0x194);}})[_0xf40a('0x53')](handleError(_0x5a30ff,null));};
\ No newline at end of file
index a24c511..a9fba60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','priority','lodash'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x326f,0xd1));var _0xf326=function(_0x570c06,_0x7915c5){_0x570c06=_0x570c06-0x0;var _0x20c5e2=_0x326f[_0x570c06];return _0x20c5e2;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0xf326('0xe'),'fields':[_0xf326('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','priority','lodash'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x326f,0xd1));var _0xf326=function(_0x4d428d,_0x5d4643){_0x4d428d=_0x4d428d-0x0;var _0x498929=_0x326f[_0x4d428d];return _0x498929;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0xf326('0xe'),'fields':[_0xf326('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index f86458d..2ac49d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85a6=['error','code','message','result','catch','GetCmHopper','CmHopper','findAll','options','raw','attributes','include','model','map','debug','ShowCmHopper','find','where','body','CreateCmHopper','UpdateCmHopper','limit','DestroyCmHopper','destroy','GetContactDialer','describe','transaction','order','LOCK','UPDATE','CmContact','Contact','keys','name','UserId','push','includes','update','all','MoveContactManagedDialer','sequelize','CmHopperFinal','create','CountReScheduled','COUNT','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','length','GetCmHopperPreview','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x18d75b,_0x443dfd){var _0x249655=function(_0x66a29e){while(--_0x66a29e){_0x18d75b['push'](_0x18d75b['shift']());}};_0x249655(++_0x443dfd);}(_0x85a6,0x15a));var _0x685a=function(_0x285174,_0x1dad60){_0x285174=_0x285174-0x0;var _0xa40f1=_0x85a6[_0x285174];return _0xa40f1;};'use strict';var _=require(_0x685a('0x0'));var util=require(_0x685a('0x1'));var moment=require(_0x685a('0x2'));var BPromise=require(_0x685a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x685a('0x4'));var db=require(_0x685a('0x5'))['db'];var utils=require(_0x685a('0x6'));var logger=require(_0x685a('0x7'))(_0x685a('0x8'));var config=require('../../config/environment');var jayson=require(_0x685a('0x9'));var client=jayson[_0x685a('0xa')][_0x685a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b7bb2,_0x2b4a46,_0x1f2189){return new BPromise(function(_0x189ed5,_0x5b3125){return client[_0x685a('0xc')](_0x4b7bb2,_0x1f2189)[_0x685a('0xd')](function(_0x32714c){logger[_0x685a('0xe')](_0x685a('0xf'),_0x2b4a46,_0x685a('0x10'));logger['debug'](_0x685a('0x11'),_0x2b4a46,'request\x20sent',JSON[_0x685a('0x12')](_0x32714c));if(_0x32714c[_0x685a('0x13')]){if(_0x32714c[_0x685a('0x13')][_0x685a('0x14')]===0x1f4){logger[_0x685a('0x13')](_0x685a('0xf'),_0x2b4a46,_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);return _0x5b3125(_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);}logger[_0x685a('0x13')]('CmHopper,\x20%s,\x20%s',_0x2b4a46,_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);return _0x189ed5(_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);}else{logger[_0x685a('0xe')](_0x685a('0xf'),_0x2b4a46,_0x685a('0x10'));_0x189ed5(_0x32714c[_0x685a('0x16')]['message']);}})[_0x685a('0x17')](function(_0x344eec){logger[_0x685a('0x13')]('CmHopper,\x20%s,\x20%s',_0x2b4a46,_0x344eec);_0x5b3125(_0x344eec);});});}exports[_0x685a('0x18')]=function(_0xab6dcd){var _0x4f24cc=this;return new Promise(function(_0x48cb10,_0x1cf470){return db[_0x685a('0x19')][_0x685a('0x1a')]({'raw':_0xab6dcd[_0x685a('0x1b')]?_0xab6dcd['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![],'where':_0xab6dcd['options']?_0xab6dcd['options']['where']||null:null,'attributes':_0xab6dcd[_0x685a('0x1b')]?_0xab6dcd['options'][_0x685a('0x1d')]||null:null,'limit':_0xab6dcd['options']?_0xab6dcd[_0x685a('0x1b')]['limit']||null:null,'include':_0xab6dcd[_0x685a('0x1b')]?_0xab6dcd[_0x685a('0x1b')][_0x685a('0x1e')]?_['map'](_0xab6dcd[_0x685a('0x1b')]['include'],function(_0x366407){return{'model':db[_0x366407[_0x685a('0x1f')]],'as':_0x366407['as'],'attributes':_0x366407[_0x685a('0x1d')],'include':_0x366407[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x366407[_0x685a('0x1e')],function(_0x526750){return{'model':db[_0x526750[_0x685a('0x1f')]],'as':_0x526750['as'],'attributes':_0x526750['attributes'],'include':_0x526750[_0x685a('0x1e')]?_['map'](_0x526750['include'],function(_0x4e4fb0){return{'model':db[_0x4e4fb0[_0x685a('0x1f')]],'as':_0x4e4fb0['as'],'attributes':_0x4e4fb0[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f99a4){logger['info'](_0x685a('0x18'),_0xab6dcd);logger[_0x685a('0x21')](_0x685a('0x18'),_0xab6dcd,JSON[_0x685a('0x12')](_0x2f99a4));_0x48cb10(_0x2f99a4);})['catch'](function(_0x1b060d){logger['error']('GetCmHopper',_0x1b060d[_0x685a('0x15')],_0xab6dcd);_0x1cf470(_0x4f24cc['error'](0x1f4,_0x1b060d[_0x685a('0x15')]));});});};exports[_0x685a('0x22')]=function(_0x51a689){var _0x4cdb8c=this;return new Promise(function(_0x59310a,_0x2eb913){return db['CmHopper'][_0x685a('0x23')]({'raw':_0x51a689[_0x685a('0x1b')]?_0x51a689['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![],'where':_0x51a689[_0x685a('0x1b')]?_0x51a689[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x51a689[_0x685a('0x1b')]?_0x51a689[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'include':_0x51a689[_0x685a('0x1b')]?_0x51a689[_0x685a('0x1b')][_0x685a('0x1e')]?_[_0x685a('0x20')](_0x51a689[_0x685a('0x1b')]['include'],function(_0x351834){return{'model':db[_0x351834[_0x685a('0x1f')]],'as':_0x351834['as'],'attributes':_0x351834[_0x685a('0x1d')],'include':_0x351834[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x351834[_0x685a('0x1e')],function(_0x23e9eb){return{'model':db[_0x23e9eb['model']],'as':_0x23e9eb['as'],'attributes':_0x23e9eb[_0x685a('0x1d')],'include':_0x23e9eb[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x23e9eb[_0x685a('0x1e')],function(_0x5939df){return{'model':db[_0x5939df['model']],'as':_0x5939df['as'],'attributes':_0x5939df[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51b887){logger[_0x685a('0xe')](_0x685a('0x22'),_0x51a689);logger[_0x685a('0x21')](_0x685a('0x22'),_0x51a689,JSON['stringify'](_0x51b887));_0x59310a(_0x51b887);})[_0x685a('0x17')](function(_0x217032){logger[_0x685a('0x13')]('ShowCmHopper',_0x217032['message'],_0x51a689);_0x2eb913(_0x4cdb8c[_0x685a('0x13')](0x1f4,_0x217032[_0x685a('0x15')]));});});};exports['CreateCmHopper']=function(_0x13e5c5){var _0x310e4a=this;return new Promise(function(_0x294692,_0x3b9eef){return db[_0x685a('0x19')]['create'](_0x13e5c5[_0x685a('0x25')],{'raw':_0x13e5c5['options']?_0x13e5c5['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![]})[_0x685a('0xd')](function(_0x2672d5){logger[_0x685a('0xe')](_0x685a('0x26'),_0x13e5c5);logger[_0x685a('0x21')]('CreateCmHopper',_0x13e5c5,JSON['stringify'](_0x2672d5));_0x294692(_0x2672d5);})[_0x685a('0x17')](function(_0x4792db){logger[_0x685a('0x13')](_0x685a('0x26'),_0x4792db[_0x685a('0x15')],_0x13e5c5);_0x3b9eef(_0x310e4a[_0x685a('0x13')](0x1f4,_0x4792db[_0x685a('0x15')]));});});};exports[_0x685a('0x27')]=function(_0x4551bd){var _0x35fd45=this;return new Promise(function(_0x555e78,_0x1ea204){return db[_0x685a('0x19')]['update'](_0x4551bd[_0x685a('0x25')],{'raw':_0x4551bd[_0x685a('0x1b')]?_0x4551bd[_0x685a('0x1b')][_0x685a('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4551bd[_0x685a('0x1b')]?_0x4551bd[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x4551bd['options']?_0x4551bd[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'limit':_0x4551bd[_0x685a('0x1b')]?_0x4551bd[_0x685a('0x1b')][_0x685a('0x28')]||null:null})[_0x685a('0xd')](function(_0x557681){logger[_0x685a('0xe')]('UpdateCmHopper',_0x4551bd);logger[_0x685a('0x21')](_0x685a('0x27'),_0x4551bd,JSON[_0x685a('0x12')](_0x557681));_0x555e78(_0x557681);})[_0x685a('0x17')](function(_0x39a697){logger[_0x685a('0x13')]('UpdateCmHopper',_0x39a697['message'],_0x4551bd);_0x1ea204(_0x35fd45[_0x685a('0x13')](0x1f4,_0x39a697[_0x685a('0x15')]));});});};exports[_0x685a('0x29')]=function(_0xb75970){var _0x4a056c=this;return new Promise(function(_0x531690,_0x40ff5){return db[_0x685a('0x19')][_0x685a('0x2a')]({'where':_0xb75970[_0x685a('0x1b')]?_0xb75970[_0x685a('0x1b')][_0x685a('0x24')]||null:null})[_0x685a('0xd')](function(_0x2befa3){logger['info'](_0x685a('0x29'),_0xb75970);logger[_0x685a('0x21')](_0x685a('0x29'),_0xb75970,JSON[_0x685a('0x12')](_0x2befa3));_0x531690(_0x2befa3);})[_0x685a('0x17')](function(_0x5c586b){logger[_0x685a('0x13')](_0x685a('0x29'),_0x5c586b[_0x685a('0x15')],_0xb75970);_0x40ff5(_0x4a056c[_0x685a('0x13')](0x1f4,_0x5c586b['message']));});});};exports[_0x685a('0x2b')]=function(_0x1896e1){var _0x3497de=this;return new Promise(function(_0x4cd538,_0xe4c342){return db['CmContact'][_0x685a('0x2c')]()[_0x685a('0xd')](function(_0x10437f){return db['sequelize'][_0x685a('0x2d')](function(_0x49d283){return db[_0x685a('0x19')][_0x685a('0x1a')]({'where':_0x1896e1[_0x685a('0x1b')]?_0x1896e1[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x1896e1['options']?_0x1896e1[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'limit':_0x1896e1[_0x685a('0x1b')]?_0x1896e1[_0x685a('0x1b')]['limit']||null:null,'order':_0x1896e1[_0x685a('0x1b')]?_0x1896e1[_0x685a('0x1b')][_0x685a('0x2e')]||null:null,'transaction':_0x49d283,'lock':_0x49d283[_0x685a('0x2f')][_0x685a('0x30')],'include':[{'model':db[_0x685a('0x31')],'as':_0x685a('0x32'),'attributes':_[_0x685a('0x33')](_0x10437f)},{'model':db['User'],'as':'Agent','attributes':['id',_0x685a('0x34'),'voicePause']}]})[_0x685a('0xd')](function(_0x1e00fb){var _0x123996=[];var _0x40868a=[];for(var _0x29454d=0x0;_0x29454d<_0x1e00fb['length'];_0x29454d+=0x1){var _0x58e64b=_0x1e00fb[_0x29454d][_0x685a('0x35')];if(_0x58e64b===null){_0x123996[_0x685a('0x36')](_0x1e00fb[_0x29454d]['update'](_0x1896e1[_0x685a('0x25')],{'transaction':_0x49d283}));}else if(!_0x40868a[_0x685a('0x37')](_0x58e64b)){_0x40868a[_0x685a('0x36')](_0x58e64b);_0x123996[_0x685a('0x36')](_0x1e00fb[_0x29454d][_0x685a('0x38')](_0x1896e1['body'],{'transaction':_0x49d283}));}}return BPromise[_0x685a('0x39')](_0x123996);});})[_0x685a('0xd')](function(_0x5444f1){logger[_0x685a('0xe')](_0x685a('0x2b'),_0x1896e1);logger[_0x685a('0x21')]('GetContactDialer',_0x1896e1,JSON[_0x685a('0x12')](_0x5444f1));_0x4cd538(_0x5444f1);})[_0x685a('0x17')](function(_0x2e56b5){logger['error'](_0x685a('0x2b'),_0x2e56b5[_0x685a('0x15')],_0x1896e1);_0xe4c342(_0x3497de[_0x685a('0x13')](0x1f4,_0x2e56b5['message']));});});});};exports[_0x685a('0x3a')]=function(_0x5cc31a){var _0x5a9fde=this;return new Promise(function(_0x19982b,_0x5b1f9d){return db[_0x685a('0x3b')][_0x685a('0x2d')](function(_0x2954d3){return db[_0x685a('0x3c')][_0x685a('0x3d')](_0x5cc31a[_0x685a('0x25')],{'raw':_0x5cc31a[_0x685a('0x1b')]?_0x5cc31a[_0x685a('0x1b')][_0x685a('0x1c')]===undefined?!![]:![]:!![],'transaction':_0x2954d3})[_0x685a('0xd')](function(){return db['CmHopper'][_0x685a('0x2a')]({'where':_0x5cc31a['options']?_0x5cc31a['options'][_0x685a('0x24')]||null:null,'transaction':_0x2954d3});});})[_0x685a('0xd')](function(_0x16bc30){logger[_0x685a('0xe')](_0x685a('0x3a'),_0x5cc31a);logger[_0x685a('0x21')]('MoveContactManagedDialer',_0x5cc31a,JSON[_0x685a('0x12')](_0x16bc30));_0x19982b(_0x16bc30);})[_0x685a('0x17')](function(_0x394711){logger[_0x685a('0x13')](_0x685a('0x3a'),_0x394711['message'],_0x5cc31a);_0x5b1f9d(_0x5a9fde[_0x685a('0x13')](0x1f4,_0x394711['message']));});});};exports[_0x685a('0x3e')]=function(_0x5b3b6d){var _0x419ec3=this;return new Promise(function(_0x5a8644,_0x438407){return db[_0x685a('0x19')][_0x685a('0x1a')]({'raw':_0x5b3b6d[_0x685a('0x1b')]?_0x5b3b6d[_0x685a('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5b3b6d[_0x685a('0x1b')]?_0x5b3b6d['options'][_0x685a('0x24')]||null:null,'attributes':[[db[_0x685a('0x3b')]['fn'](_0x685a('0x3f'),db[_0x685a('0x3b')]['fn']('IF',db[_0x685a('0x3b')][_0x685a('0x40')]('`scheduledat`\x20>=\x20'+util[_0x685a('0x41')](_0x685a('0x42'),moment()[_0x685a('0x41')](_0x685a('0x43')))+_0x685a('0x44')))),_0x685a('0x45')]]})[_0x685a('0xd')](function(_0x2f2061){logger[_0x685a('0xe')](_0x685a('0x3e'),_0x5b3b6d);logger['debug']('CountReScheduled',_0x5b3b6d,JSON[_0x685a('0x12')](_0x2f2061));_0x5a8644(_0x2f2061);})['catch'](function(_0x227818){logger[_0x685a('0x13')]('CountReScheduled',_0x227818[_0x685a('0x15')],_0x5b3b6d);_0x438407(_0x419ec3[_0x685a('0x13')](0x1f4,_0x227818[_0x685a('0x15')]));});});};exports[_0x685a('0x46')]=function(_0x5f2f0b){var _0x4029b9=this;return new Promise(function(_0x201d25,_0x2775ac){return db[_0x685a('0x31')][_0x685a('0x2c')]()[_0x685a('0xd')](function(_0x4d1205){return db['sequelize']['transaction'](function(_0x156fad){return db[_0x685a('0x19')][_0x685a('0x1a')]({'where':_0x5f2f0b[_0x685a('0x1b')]?_0x5f2f0b[_0x685a('0x1b')]['where']||null:null,'attributes':_0x5f2f0b['options']?_0x5f2f0b[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'limit':0x1,'order':_0x5f2f0b[_0x685a('0x1b')]?_0x5f2f0b['options']['order']||null:null,'group':db[_0x685a('0x19')][_0x685a('0x35')],'transaction':_0x156fad,'lock':_0x156fad[_0x685a('0x2f')][_0x685a('0x30')],'include':_0x5f2f0b['options']?_0x5f2f0b[_0x685a('0x1b')]['include']?_[_0x685a('0x20')](_0x5f2f0b['options'][_0x685a('0x1e')],function(_0x386ad2){return{'model':db[_0x386ad2[_0x685a('0x1f')]],'as':_0x386ad2['as'],'attributes':_0x386ad2['attributes'],'include':_0x386ad2['include']?_[_0x685a('0x20')](_0x386ad2[_0x685a('0x1e')],function(_0x2b8e64){return{'model':db[_0x2b8e64[_0x685a('0x1f')]],'as':_0x2b8e64['as'],'attributes':_0x2b8e64[_0x685a('0x1d')],'include':_0x2b8e64[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x2b8e64[_0x685a('0x1e')],function(_0x489491){return{'model':db[_0x489491[_0x685a('0x1f')]],'as':_0x489491['as'],'attributes':_0x489491[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x357640){var _0x38fc7c=[];for(var _0x347914=0x0;_0x347914<_0x357640[_0x685a('0x47')];_0x347914+=0x1){_0x38fc7c[_0x685a('0x36')](_0x357640[_0x347914]['update'](_0x5f2f0b[_0x685a('0x25')],{'transaction':_0x156fad}));}return BPromise['all'](_0x38fc7c);});})[_0x685a('0xd')](function(_0x1d04d9){logger['info'](_0x685a('0x46'),_0x5f2f0b);logger[_0x685a('0x21')](_0x685a('0x46'),_0x5f2f0b,JSON[_0x685a('0x12')](_0x1d04d9));_0x201d25(_0x1d04d9);})[_0x685a('0x17')](function(_0x7819f){logger['error'](_0x685a('0x46'),_0x7819f[_0x685a('0x15')],_0x5f2f0b);_0x2775ac(_0x4029b9['error'](0x1f4,_0x7819f['message']));});});});};exports[_0x685a('0x48')]=function(_0x47adf7){var _0x42ca28=this;return new Promise(function(_0x151ae2,_0xe90fac){db[_0x685a('0x31')][_0x685a('0x2c')]()['then'](function(_0x5c1ee3){return db[_0x685a('0x19')]['findAll']({'raw':_0x47adf7[_0x685a('0x1b')]?_0x47adf7['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![],'where':_0x47adf7[_0x685a('0x1b')]?_0x47adf7[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x47adf7['options']?_0x47adf7['options'][_0x685a('0x1d')]||null:null,'limit':_0x47adf7[_0x685a('0x1b')]?_0x47adf7[_0x685a('0x1b')][_0x685a('0x28')]||null:null,'include':_0x47adf7['options']?_0x47adf7['options'][_0x685a('0x1e')]?_[_0x685a('0x20')](_0x47adf7[_0x685a('0x1b')][_0x685a('0x1e')],function(_0x54fd2e){return{'model':db[_0x54fd2e['model']],'as':_0x54fd2e['as'],'attributes':_0x54fd2e['as']==='Contact'?_['keys'](_0x5c1ee3):_0x54fd2e['attributes'],'include':_0x54fd2e[_0x685a('0x1e')]?_['map'](_0x54fd2e[_0x685a('0x1e')],function(_0x34c14c){return{'model':db[_0x34c14c['model']],'as':_0x34c14c['as'],'attributes':_0x34c14c['attributes'],'include':_0x34c14c[_0x685a('0x1e')]?_['map'](_0x34c14c['include'],function(_0x1e666a){return{'model':db[_0x1e666a[_0x685a('0x1f')]],'as':_0x1e666a['as'],'attributes':_0x1e666a[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x685a('0xd')](function(_0x3aba56){logger[_0x685a('0xe')](_0x685a('0x18'),_0x47adf7);logger[_0x685a('0x21')](_0x685a('0x18'),_0x47adf7,JSON[_0x685a('0x12')](_0x3aba56));_0x151ae2(_0x3aba56);})[_0x685a('0x17')](function(_0x4e4bde){logger[_0x685a('0x13')](_0x685a('0x18'),_0x4e4bde[_0x685a('0x15')],_0x47adf7);_0xe90fac(_0x42ca28['error'](0x1f4,_0x4e4bde[_0x685a('0x15')]));});});});};
\ No newline at end of file
+var _0x1cf9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','findAll','options','raw','where','attributes','limit','include','model','map','GetCmHopper','CmHopper','find','ShowCmHopper','debug','CreateCmHopper','create','body','update','UpdateCmHopper','DestroyCmHopper','destroy','CmContact','sequelize','transaction','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','push','GetContactDialer','MoveContactManagedDialer','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','CountReScheduled','GetContactRecallMe','describe','order','GetCmHopperPreview','lodash'];(function(_0x310eb9,_0x1aed15){var _0x28915c=function(_0x457fd6){while(--_0x457fd6){_0x310eb9['push'](_0x310eb9['shift']());}};_0x28915c(++_0x1aed15);}(_0x1cf9,0x158));var _0x91cf=function(_0x5dfa4d,_0x34a475){_0x5dfa4d=_0x5dfa4d-0x0;var _0x713674=_0x1cf9[_0x5dfa4d];return _0x713674;};'use strict';var _=require(_0x91cf('0x0'));var util=require('util');var moment=require(_0x91cf('0x1'));var BPromise=require(_0x91cf('0x2'));var rs=require(_0x91cf('0x3'));var fs=require('fs');var Redis=require(_0x91cf('0x4'));var db=require(_0x91cf('0x5'))['db'];var utils=require(_0x91cf('0x6'));var logger=require(_0x91cf('0x7'))(_0x91cf('0x8'));var config=require(_0x91cf('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x91cf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2730dd,_0x40e75d,_0x25c4ae){return new BPromise(function(_0x55e411,_0x498893){return client[_0x91cf('0xb')](_0x2730dd,_0x25c4ae)[_0x91cf('0xc')](function(_0x5a6482){logger[_0x91cf('0xd')](_0x91cf('0xe'),_0x40e75d,_0x91cf('0xf'));logger['debug'](_0x91cf('0x10'),_0x40e75d,'request\x20sent',JSON[_0x91cf('0x11')](_0x5a6482));if(_0x5a6482[_0x91cf('0x12')]){if(_0x5a6482['error']['code']===0x1f4){logger[_0x91cf('0x12')]('CmHopper,\x20%s,\x20%s',_0x40e75d,_0x5a6482[_0x91cf('0x12')][_0x91cf('0x13')]);return _0x498893(_0x5a6482[_0x91cf('0x12')][_0x91cf('0x13')]);}logger['error']('CmHopper,\x20%s,\x20%s',_0x40e75d,_0x5a6482[_0x91cf('0x12')][_0x91cf('0x13')]);return _0x55e411(_0x5a6482['error'][_0x91cf('0x13')]);}else{logger['info']('CmHopper,\x20%s,\x20%s',_0x40e75d,_0x91cf('0xf'));_0x55e411(_0x5a6482[_0x91cf('0x14')][_0x91cf('0x13')]);}})[_0x91cf('0x15')](function(_0x5db062){logger[_0x91cf('0x12')](_0x91cf('0xe'),_0x40e75d,_0x5db062);_0x498893(_0x5db062);});});}exports['GetCmHopper']=function(_0x4af639){var _0x1a52cb=this;return new Promise(function(_0x227d65,_0xf95cd3){return db['CmHopper'][_0x91cf('0x16')]({'raw':_0x4af639[_0x91cf('0x17')]?_0x4af639[_0x91cf('0x17')][_0x91cf('0x18')]===undefined?!![]:![]:!![],'where':_0x4af639[_0x91cf('0x17')]?_0x4af639[_0x91cf('0x17')][_0x91cf('0x19')]||null:null,'attributes':_0x4af639['options']?_0x4af639['options'][_0x91cf('0x1a')]||null:null,'limit':_0x4af639[_0x91cf('0x17')]?_0x4af639[_0x91cf('0x17')][_0x91cf('0x1b')]||null:null,'include':_0x4af639['options']?_0x4af639[_0x91cf('0x17')][_0x91cf('0x1c')]?_['map'](_0x4af639[_0x91cf('0x17')][_0x91cf('0x1c')],function(_0x4e1420){return{'model':db[_0x4e1420[_0x91cf('0x1d')]],'as':_0x4e1420['as'],'attributes':_0x4e1420[_0x91cf('0x1a')],'include':_0x4e1420[_0x91cf('0x1c')]?_[_0x91cf('0x1e')](_0x4e1420['include'],function(_0x5106cc){return{'model':db[_0x5106cc[_0x91cf('0x1d')]],'as':_0x5106cc['as'],'attributes':_0x5106cc['attributes'],'include':_0x5106cc[_0x91cf('0x1c')]?_[_0x91cf('0x1e')](_0x5106cc[_0x91cf('0x1c')],function(_0x403a4b){return{'model':db[_0x403a4b['model']],'as':_0x403a4b['as'],'attributes':_0x403a4b['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cf('0xc')](function(_0x25efdb){logger[_0x91cf('0xd')]('GetCmHopper',_0x4af639);logger['debug'](_0x91cf('0x1f'),_0x4af639,JSON[_0x91cf('0x11')](_0x25efdb));_0x227d65(_0x25efdb);})[_0x91cf('0x15')](function(_0x2078c6){logger['error'](_0x91cf('0x1f'),_0x2078c6[_0x91cf('0x13')],_0x4af639);_0xf95cd3(_0x1a52cb[_0x91cf('0x12')](0x1f4,_0x2078c6[_0x91cf('0x13')]));});});};exports['ShowCmHopper']=function(_0x3fc2a1){var _0x14df6d=this;return new Promise(function(_0x16670d,_0x520471){return db[_0x91cf('0x20')][_0x91cf('0x21')]({'raw':_0x3fc2a1[_0x91cf('0x17')]?_0x3fc2a1[_0x91cf('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x3fc2a1[_0x91cf('0x17')]?_0x3fc2a1[_0x91cf('0x17')][_0x91cf('0x19')]||null:null,'attributes':_0x3fc2a1['options']?_0x3fc2a1[_0x91cf('0x17')]['attributes']||null:null,'include':_0x3fc2a1['options']?_0x3fc2a1[_0x91cf('0x17')][_0x91cf('0x1c')]?_['map'](_0x3fc2a1[_0x91cf('0x17')][_0x91cf('0x1c')],function(_0x38f4aa){return{'model':db[_0x38f4aa[_0x91cf('0x1d')]],'as':_0x38f4aa['as'],'attributes':_0x38f4aa[_0x91cf('0x1a')],'include':_0x38f4aa['include']?_['map'](_0x38f4aa[_0x91cf('0x1c')],function(_0x4bf5d1){return{'model':db[_0x4bf5d1[_0x91cf('0x1d')]],'as':_0x4bf5d1['as'],'attributes':_0x4bf5d1[_0x91cf('0x1a')],'include':_0x4bf5d1[_0x91cf('0x1c')]?_['map'](_0x4bf5d1[_0x91cf('0x1c')],function(_0x476c51){return{'model':db[_0x476c51[_0x91cf('0x1d')]],'as':_0x476c51['as'],'attributes':_0x476c51['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cf('0xc')](function(_0x38fc52){logger[_0x91cf('0xd')](_0x91cf('0x22'),_0x3fc2a1);logger[_0x91cf('0x23')](_0x91cf('0x22'),_0x3fc2a1,JSON[_0x91cf('0x11')](_0x38fc52));_0x16670d(_0x38fc52);})[_0x91cf('0x15')](function(_0x4b513d){logger[_0x91cf('0x12')](_0x91cf('0x22'),_0x4b513d[_0x91cf('0x13')],_0x3fc2a1);_0x520471(_0x14df6d['error'](0x1f4,_0x4b513d[_0x91cf('0x13')]));});});};exports[_0x91cf('0x24')]=function(_0x5d0752){var _0x4b336c=this;return new Promise(function(_0x289f10,_0xb19c64){return db[_0x91cf('0x20')][_0x91cf('0x25')](_0x5d0752[_0x91cf('0x26')],{'raw':_0x5d0752[_0x91cf('0x17')]?_0x5d0752[_0x91cf('0x17')][_0x91cf('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x4a7ba8){logger['info'](_0x91cf('0x24'),_0x5d0752);logger[_0x91cf('0x23')](_0x91cf('0x24'),_0x5d0752,JSON[_0x91cf('0x11')](_0x4a7ba8));_0x289f10(_0x4a7ba8);})[_0x91cf('0x15')](function(_0x423de7){logger[_0x91cf('0x12')](_0x91cf('0x24'),_0x423de7[_0x91cf('0x13')],_0x5d0752);_0xb19c64(_0x4b336c[_0x91cf('0x12')](0x1f4,_0x423de7['message']));});});};exports['UpdateCmHopper']=function(_0x1481b1){var _0x303ab8=this;return new Promise(function(_0xfdd5f1,_0x18f187){return db[_0x91cf('0x20')][_0x91cf('0x27')](_0x1481b1[_0x91cf('0x26')],{'raw':_0x1481b1['options']?_0x1481b1[_0x91cf('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1481b1['options']?_0x1481b1['options'][_0x91cf('0x19')]||null:null,'attributes':_0x1481b1[_0x91cf('0x17')]?_0x1481b1[_0x91cf('0x17')][_0x91cf('0x1a')]||null:null,'limit':_0x1481b1[_0x91cf('0x17')]?_0x1481b1[_0x91cf('0x17')][_0x91cf('0x1b')]||null:null})[_0x91cf('0xc')](function(_0x297b92){logger[_0x91cf('0xd')](_0x91cf('0x28'),_0x1481b1);logger[_0x91cf('0x23')](_0x91cf('0x28'),_0x1481b1,JSON[_0x91cf('0x11')](_0x297b92));_0xfdd5f1(_0x297b92);})['catch'](function(_0x373dfb){logger[_0x91cf('0x12')]('UpdateCmHopper',_0x373dfb[_0x91cf('0x13')],_0x1481b1);_0x18f187(_0x303ab8['error'](0x1f4,_0x373dfb['message']));});});};exports[_0x91cf('0x29')]=function(_0x4b3a57){var _0x54a7bb=this;return new Promise(function(_0x59d08f,_0x1e3b08){return db[_0x91cf('0x20')][_0x91cf('0x2a')]({'where':_0x4b3a57[_0x91cf('0x17')]?_0x4b3a57[_0x91cf('0x17')][_0x91cf('0x19')]||null:null})[_0x91cf('0xc')](function(_0x1e4b40){logger[_0x91cf('0xd')](_0x91cf('0x29'),_0x4b3a57);logger[_0x91cf('0x23')](_0x91cf('0x29'),_0x4b3a57,JSON[_0x91cf('0x11')](_0x1e4b40));_0x59d08f(_0x1e4b40);})[_0x91cf('0x15')](function(_0x5b4a7b){logger[_0x91cf('0x12')](_0x91cf('0x29'),_0x5b4a7b[_0x91cf('0x13')],_0x4b3a57);_0x1e3b08(_0x54a7bb[_0x91cf('0x12')](0x1f4,_0x5b4a7b[_0x91cf('0x13')]));});});};exports['GetContactDialer']=function(_0x49e9f3){var _0x1e8c46=this;return new Promise(function(_0x5e194e,_0x2b8125){return db[_0x91cf('0x2b')]['describe']()[_0x91cf('0xc')](function(_0x1862c5){return db[_0x91cf('0x2c')][_0x91cf('0x2d')](function(_0x5d426d){return db[_0x91cf('0x20')][_0x91cf('0x16')]({'where':_0x49e9f3[_0x91cf('0x17')]?_0x49e9f3[_0x91cf('0x17')][_0x91cf('0x19')]||null:null,'attributes':_0x49e9f3[_0x91cf('0x17')]?_0x49e9f3[_0x91cf('0x17')][_0x91cf('0x1a')]||null:null,'limit':_0x49e9f3[_0x91cf('0x17')]?_0x49e9f3[_0x91cf('0x17')][_0x91cf('0x1b')]||null:null,'order':_0x49e9f3['options']?_0x49e9f3[_0x91cf('0x17')]['order']||null:null,'transaction':_0x5d426d,'lock':_0x5d426d['LOCK'][_0x91cf('0x2e')],'include':[{'model':db[_0x91cf('0x2b')],'as':_0x91cf('0x2f'),'attributes':_[_0x91cf('0x30')](_0x1862c5)},{'model':db[_0x91cf('0x31')],'as':_0x91cf('0x32'),'attributes':['id',_0x91cf('0x33'),_0x91cf('0x34')]}]})[_0x91cf('0xc')](function(_0x4557e1){var _0x384eeb=[];var _0x4a4c20=[];for(var _0x5a57f3=0x0;_0x5a57f3<_0x4557e1[_0x91cf('0x35')];_0x5a57f3+=0x1){var _0x41bec8=_0x4557e1[_0x5a57f3][_0x91cf('0x36')];if(_0x41bec8===null){_0x384eeb[_0x91cf('0x37')](_0x4557e1[_0x5a57f3][_0x91cf('0x27')](_0x49e9f3[_0x91cf('0x26')],{'transaction':_0x5d426d}));}else if(!_0x4a4c20['includes'](_0x41bec8)){_0x4a4c20[_0x91cf('0x37')](_0x41bec8);_0x384eeb[_0x91cf('0x37')](_0x4557e1[_0x5a57f3]['update'](_0x49e9f3[_0x91cf('0x26')],{'transaction':_0x5d426d}));}}return BPromise['all'](_0x384eeb);});})['then'](function(_0x58c2c1){logger[_0x91cf('0xd')](_0x91cf('0x38'),_0x49e9f3);logger[_0x91cf('0x23')]('GetContactDialer',_0x49e9f3,JSON[_0x91cf('0x11')](_0x58c2c1));_0x5e194e(_0x58c2c1);})[_0x91cf('0x15')](function(_0x48b1e0){logger['error'](_0x91cf('0x38'),_0x48b1e0['message'],_0x49e9f3);_0x2b8125(_0x1e8c46['error'](0x1f4,_0x48b1e0[_0x91cf('0x13')]));});});});};exports['MoveContactManagedDialer']=function(_0x3602a6){var _0x51ec8c=this;return new Promise(function(_0x59e034,_0x329a11){return db[_0x91cf('0x2c')][_0x91cf('0x2d')](function(_0x2387ec){return db['CmHopperFinal']['create'](_0x3602a6[_0x91cf('0x26')],{'raw':_0x3602a6['options']?_0x3602a6[_0x91cf('0x17')]['raw']===undefined?!![]:![]:!![],'transaction':_0x2387ec})['then'](function(){return db[_0x91cf('0x20')]['destroy']({'where':_0x3602a6[_0x91cf('0x17')]?_0x3602a6[_0x91cf('0x17')][_0x91cf('0x19')]||null:null,'transaction':_0x2387ec});});})[_0x91cf('0xc')](function(_0x15d129){logger[_0x91cf('0xd')](_0x91cf('0x39'),_0x3602a6);logger[_0x91cf('0x23')](_0x91cf('0x39'),_0x3602a6,JSON[_0x91cf('0x11')](_0x15d129));_0x59e034(_0x15d129);})[_0x91cf('0x15')](function(_0x53c5e3){logger[_0x91cf('0x12')]('MoveContactManagedDialer',_0x53c5e3[_0x91cf('0x13')],_0x3602a6);_0x329a11(_0x51ec8c[_0x91cf('0x12')](0x1f4,_0x53c5e3[_0x91cf('0x13')]));});});};exports['CountReScheduled']=function(_0x16b8be){var _0x4b5aeb=this;return new Promise(function(_0x34792d,_0x36f920){return db[_0x91cf('0x20')][_0x91cf('0x16')]({'raw':_0x16b8be[_0x91cf('0x17')]?_0x16b8be['options'][_0x91cf('0x18')]===undefined?!![]:![]:!![],'where':_0x16b8be[_0x91cf('0x17')]?_0x16b8be['options'][_0x91cf('0x19')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x91cf('0x2c')]['fn']('IF',db['sequelize'][_0x91cf('0x3a')](_0x91cf('0x3b')+util[_0x91cf('0x3c')](_0x91cf('0x3d'),moment()['format'](_0x91cf('0x3e')))+_0x91cf('0x3f')))),'contactsRescheduled']]})[_0x91cf('0xc')](function(_0x472fa2){logger[_0x91cf('0xd')]('CountReScheduled',_0x16b8be);logger['debug'](_0x91cf('0x40'),_0x16b8be,JSON[_0x91cf('0x11')](_0x472fa2));_0x34792d(_0x472fa2);})['catch'](function(_0x3e6283){logger['error'](_0x91cf('0x40'),_0x3e6283['message'],_0x16b8be);_0x36f920(_0x4b5aeb['error'](0x1f4,_0x3e6283['message']));});});};exports[_0x91cf('0x41')]=function(_0x29e45d){var _0x34752d=this;return new Promise(function(_0x5c2dd2,_0x231ac0){return db[_0x91cf('0x2b')][_0x91cf('0x42')]()[_0x91cf('0xc')](function(_0x58f536){return db[_0x91cf('0x2c')][_0x91cf('0x2d')](function(_0x36cae5){return db['CmHopper'][_0x91cf('0x16')]({'where':_0x29e45d[_0x91cf('0x17')]?_0x29e45d[_0x91cf('0x17')][_0x91cf('0x19')]||null:null,'attributes':_0x29e45d[_0x91cf('0x17')]?_0x29e45d[_0x91cf('0x17')][_0x91cf('0x1a')]||null:null,'limit':0x1,'order':_0x29e45d[_0x91cf('0x17')]?_0x29e45d['options'][_0x91cf('0x43')]||null:null,'group':db[_0x91cf('0x20')][_0x91cf('0x36')],'transaction':_0x36cae5,'lock':_0x36cae5['LOCK'][_0x91cf('0x2e')],'include':_0x29e45d['options']?_0x29e45d['options'][_0x91cf('0x1c')]?_['map'](_0x29e45d[_0x91cf('0x17')][_0x91cf('0x1c')],function(_0xe4d54f){return{'model':db[_0xe4d54f['model']],'as':_0xe4d54f['as'],'attributes':_0xe4d54f[_0x91cf('0x1a')],'include':_0xe4d54f[_0x91cf('0x1c')]?_[_0x91cf('0x1e')](_0xe4d54f[_0x91cf('0x1c')],function(_0xf0c6e1){return{'model':db[_0xf0c6e1[_0x91cf('0x1d')]],'as':_0xf0c6e1['as'],'attributes':_0xf0c6e1['attributes'],'include':_0xf0c6e1[_0x91cf('0x1c')]?_['map'](_0xf0c6e1[_0x91cf('0x1c')],function(_0x4399ee){return{'model':db[_0x4399ee['model']],'as':_0x4399ee['as'],'attributes':_0x4399ee[_0x91cf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x91cf('0xc')](function(_0x30a633){var _0x2e6fc2=[];for(var _0x1d669b=0x0;_0x1d669b<_0x30a633[_0x91cf('0x35')];_0x1d669b+=0x1){_0x2e6fc2[_0x91cf('0x37')](_0x30a633[_0x1d669b][_0x91cf('0x27')](_0x29e45d['body'],{'transaction':_0x36cae5}));}return BPromise['all'](_0x2e6fc2);});})['then'](function(_0x28c9d4){logger[_0x91cf('0xd')](_0x91cf('0x41'),_0x29e45d);logger[_0x91cf('0x23')](_0x91cf('0x41'),_0x29e45d,JSON[_0x91cf('0x11')](_0x28c9d4));_0x5c2dd2(_0x28c9d4);})[_0x91cf('0x15')](function(_0x12aecc){logger[_0x91cf('0x12')]('GetContactRecallMe',_0x12aecc[_0x91cf('0x13')],_0x29e45d);_0x231ac0(_0x34752d[_0x91cf('0x12')](0x1f4,_0x12aecc[_0x91cf('0x13')]));});});});};exports[_0x91cf('0x44')]=function(_0x15aecd){var _0x1ca9cf=this;return new Promise(function(_0x24c659,_0x3f92b9){db[_0x91cf('0x2b')][_0x91cf('0x42')]()['then'](function(_0xc3e0c0){return db[_0x91cf('0x20')][_0x91cf('0x16')]({'raw':_0x15aecd[_0x91cf('0x17')]?_0x15aecd[_0x91cf('0x17')][_0x91cf('0x18')]===undefined?!![]:![]:!![],'where':_0x15aecd['options']?_0x15aecd['options']['where']||null:null,'attributes':_0x15aecd[_0x91cf('0x17')]?_0x15aecd[_0x91cf('0x17')][_0x91cf('0x1a')]||null:null,'limit':_0x15aecd['options']?_0x15aecd[_0x91cf('0x17')][_0x91cf('0x1b')]||null:null,'include':_0x15aecd[_0x91cf('0x17')]?_0x15aecd[_0x91cf('0x17')][_0x91cf('0x1c')]?_[_0x91cf('0x1e')](_0x15aecd[_0x91cf('0x17')][_0x91cf('0x1c')],function(_0x51f8f7){return{'model':db[_0x51f8f7[_0x91cf('0x1d')]],'as':_0x51f8f7['as'],'attributes':_0x51f8f7['as']===_0x91cf('0x2f')?_[_0x91cf('0x30')](_0xc3e0c0):_0x51f8f7[_0x91cf('0x1a')],'include':_0x51f8f7[_0x91cf('0x1c')]?_[_0x91cf('0x1e')](_0x51f8f7[_0x91cf('0x1c')],function(_0x4dc5e7){return{'model':db[_0x4dc5e7['model']],'as':_0x4dc5e7['as'],'attributes':_0x4dc5e7[_0x91cf('0x1a')],'include':_0x4dc5e7[_0x91cf('0x1c')]?_['map'](_0x4dc5e7['include'],function(_0x213ca0){return{'model':db[_0x213ca0[_0x91cf('0x1d')]],'as':_0x213ca0['as'],'attributes':_0x213ca0[_0x91cf('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x31391e){logger[_0x91cf('0xd')]('GetCmHopper',_0x15aecd);logger[_0x91cf('0x23')](_0x91cf('0x1f'),_0x15aecd,JSON[_0x91cf('0x11')](_0x31391e));_0x24c659(_0x31391e);})[_0x91cf('0x15')](function(_0x322066){logger[_0x91cf('0x12')](_0x91cf('0x1f'),_0x322066[_0x91cf('0x13')],_0x15aecd);_0x3f92b9(_0x1ca9cf['error'](0x1f4,_0x322066['message']));});});});};
\ No newline at end of file
index b869b52..96d2ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c17=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','index','isAuthenticated','describe','/opencontacts','getOpenContacts','/:id','show','create','post','/preview','put','delete'];(function(_0x3e2022,_0x29eab1){var _0x3541c4=function(_0x246d92){while(--_0x246d92){_0x3e2022['push'](_0x3e2022['shift']());}};_0x3541c4(++_0x29eab1);}(_0x8c17,0x1b6));var _0x78c1=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x8c17[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0x78c1('0x0'));var util=require(_0x78c1('0x1'));var path=require(_0x78c1('0x2'));var timeout=require(_0x78c1('0x3'));var express=require(_0x78c1('0x4'));var router=express['Router']();var fs_extra=require(_0x78c1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x78c1('0x6'));var config=require(_0x78c1('0x7'));var controller=require(_0x78c1('0x8'));router[_0x78c1('0x9')]('/',auth['isAuthenticated'](),controller[_0x78c1('0xa')]);router['get']('/describe',auth[_0x78c1('0xb')](),controller[_0x78c1('0xc')]);router[_0x78c1('0x9')](_0x78c1('0xd'),auth[_0x78c1('0xb')](),controller[_0x78c1('0xe')]);router[_0x78c1('0x9')](_0x78c1('0xf'),auth[_0x78c1('0xb')](),controller[_0x78c1('0x10')]);router['post']('/',auth[_0x78c1('0xb')](),controller[_0x78c1('0x11')]);router[_0x78c1('0x12')](_0x78c1('0x13'),auth[_0x78c1('0xb')](),controller['getPreview']);router[_0x78c1('0x14')]('/:id',auth[_0x78c1('0xb')](),controller['update']);router[_0x78c1('0x15')](_0x78c1('0xf'),auth[_0x78c1('0xb')](),controller['destroy']);module[_0x78c1('0x16')]=router;
\ No newline at end of file
+var _0xe427=['get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show','post','create','getPreview','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x326bdd,_0x4c47b9){var _0x5ecae0=function(_0x2bb0a1){while(--_0x2bb0a1){_0x326bdd['push'](_0x326bdd['shift']());}};_0x5ecae0(++_0x4c47b9);}(_0xe427,0xfa));var _0x7e42=function(_0x53815c,_0x3fa23b){_0x53815c=_0x53815c-0x0;var _0x3e45db=_0xe427[_0x53815c];return _0x3e45db;};'use strict';var multer=require(_0x7e42('0x0'));var util=require(_0x7e42('0x1'));var path=require(_0x7e42('0x2'));var timeout=require(_0x7e42('0x3'));var express=require(_0x7e42('0x4'));var router=express[_0x7e42('0x5')]();var fs_extra=require(_0x7e42('0x6'));var auth=require(_0x7e42('0x7'));var interaction=require(_0x7e42('0x8'));var config=require(_0x7e42('0x9'));var controller=require('./cmHopper.controller');router[_0x7e42('0xa')]('/',auth[_0x7e42('0xb')](),controller[_0x7e42('0xc')]);router[_0x7e42('0xa')](_0x7e42('0xd'),auth[_0x7e42('0xb')](),controller[_0x7e42('0xe')]);router[_0x7e42('0xa')](_0x7e42('0xf'),auth[_0x7e42('0xb')](),controller[_0x7e42('0x10')]);router['get'](_0x7e42('0x11'),auth['isAuthenticated'](),controller[_0x7e42('0x12')]);router[_0x7e42('0x13')]('/',auth[_0x7e42('0xb')](),controller[_0x7e42('0x14')]);router[_0x7e42('0x13')]('/preview',auth[_0x7e42('0xb')](),controller[_0x7e42('0x15')]);router[_0x7e42('0x16')](_0x7e42('0x11'),auth[_0x7e42('0xb')](),controller[_0x7e42('0x17')]);router[_0x7e42('0x18')]('/:id',auth[_0x7e42('0xb')](),controller[_0x7e42('0x19')]);module['exports']=router;
\ No newline at end of file
index e483d45..82bad3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba3=['moment','sequelize','STRING','INTEGER','contactListQueue'];(function(_0x49c3bd,_0x5eb9d5){var _0x26a65b=function(_0x2e2a98){while(--_0x2e2a98){_0x49c3bd['push'](_0x49c3bd['shift']());}};_0x26a65b(++_0x5eb9d5);}(_0xdba3,0x19f));var _0x3dba=function(_0x37adce,_0xe3e342){_0x37adce=_0x37adce-0x0;var _0x3cb7f9=_0xdba3[_0x37adce];return _0x3cb7f9;};'use strict';var moment=require(_0x3dba('0x0'));var Sequelize=require(_0x3dba('0x1'));module['exports']={'phone':{'type':Sequelize[_0x3dba('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x3dba('0x3')],'unique':_0x3dba('0x4')},'ListId':{'type':Sequelize[_0x3dba('0x3')],'unique':_0x3dba('0x4')},'VoiceQueueId':{'type':Sequelize[_0x3dba('0x3')],'unique':_0x3dba('0x4')}};
\ No newline at end of file
+var _0x14f5=['INTEGER','contactListQueue','sequelize','STRING'];(function(_0x382a62,_0x1baa5e){var _0x490a25=function(_0x1b3427){while(--_0x1b3427){_0x382a62['push'](_0x382a62['shift']());}};_0x490a25(++_0x1baa5e);}(_0x14f5,0xae));var _0x514f=function(_0x2375f2,_0x4ca4e5){_0x2375f2=_0x2375f2-0x0;var _0x448a6f=_0x14f5[_0x2375f2];return _0x448a6f;};'use strict';var moment=require('moment');var Sequelize=require(_0x514f('0x0'));module['exports']={'phone':{'type':Sequelize[_0x514f('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x514f('0x2')],'unique':_0x514f('0x3')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x514f('0x3')},'VoiceQueueId':{'type':Sequelize[_0x514f('0x2')],'unique':'contactListQueue'}};
\ No newline at end of file
index fc7b810..17547f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae9=['bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','save','then','destroy','end','error','stack','name','index','map','rawAttributes','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperBlack','includeAll','include','findAll','rows','catch','show','keys','find','update','body','params','describe','eml-format','fast-json-patch','request-promise'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0x5ae9,0x19b));var _0x95ae=function(_0x1ce7cf,_0x1706be){_0x1ce7cf=_0x1ce7cf-0x0;var _0x38fe5a=_0x5ae9[_0x1ce7cf];return _0x38fe5a;};'use strict';var emlformat=require(_0x95ae('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x95ae('0x1'));var rp=require(_0x95ae('0x2'));var moment=require('moment');var BPromise=require(_0x95ae('0x3'));var Mustache=require(_0x95ae('0x4'));var util=require('util');var path=require(_0x95ae('0x5'));var sox=require('sox');var csv=require(_0x95ae('0x6'));var ejs=require(_0x95ae('0x7'));var fs=require('fs');var fs_extra=require(_0x95ae('0x8'));var _=require(_0x95ae('0x9'));var squel=require(_0x95ae('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x95ae('0xb'));var toCsv=require(_0x95ae('0x6'));var querystring=require(_0x95ae('0xc'));var Papa=require(_0x95ae('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x95ae('0xe'));var as=require(_0x95ae('0xf'));var hardwareService=require(_0x95ae('0x10'));var logger=require(_0x95ae('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x95ae('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x95ae('0x13'))['db'];function respondWithStatusCode(_0x2a9b87,_0x530bb8){_0x530bb8=_0x530bb8||0xcc;return function(_0xc1af8f){if(_0xc1af8f){return _0x2a9b87[_0x95ae('0x14')](_0x530bb8);}return _0x2a9b87[_0x95ae('0x15')](_0x530bb8)['end']();};}function respondWithResult(_0x4685a4,_0x3af218){_0x3af218=_0x3af218||0xc8;return function(_0x308b7a){if(_0x308b7a){return _0x4685a4['status'](_0x3af218)[_0x95ae('0x16')](_0x308b7a);}};}function respondWithFilteredResult(_0x5ebbb7,_0x210e00){return function(_0x57bd67){if(_0x57bd67){var _0x2594fe=typeof _0x210e00[_0x95ae('0x17')]===_0x95ae('0x18')&&typeof _0x210e00[_0x95ae('0x19')]===_0x95ae('0x18');var _0x38b457=_0x57bd67[_0x95ae('0x1a')];var _0x24d5d2=_0x2594fe?0x0:_0x210e00[_0x95ae('0x17')];var _0x47ed05=_0x2594fe?_0x57bd67[_0x95ae('0x1a')]:_0x210e00[_0x95ae('0x17')]+_0x210e00['limit'];var _0x14a11d;if(_0x47ed05>=_0x38b457){_0x47ed05=_0x38b457;_0x14a11d=0xc8;}else{_0x14a11d=0xce;}_0x5ebbb7[_0x95ae('0x15')](_0x14a11d);return _0x5ebbb7['set']('Content-Range',_0x24d5d2+'-'+_0x47ed05+'/'+_0x38b457)[_0x95ae('0x16')](_0x57bd67);}return null;};}function patchUpdates(_0x16aa0c){return function(_0x1359a8){try{jsonpatch[_0x95ae('0x1b')](_0x1359a8,_0x16aa0c,!![]);}catch(_0x8ed1b1){return BPromise['reject'](_0x8ed1b1);}return _0x1359a8[_0x95ae('0x1c')]();};}function saveUpdates(_0x457324,_0x1ecde4){return function(_0x2ad155){if(_0x2ad155){return _0x2ad155['update'](_0x457324)[_0x95ae('0x1d')](function(_0x5b0453){return _0x5b0453;});}return null;};}function removeEntity(_0x7fd81f,_0x59f88a){return function(_0x2b46c5){if(_0x2b46c5){return _0x2b46c5[_0x95ae('0x1e')]()[_0x95ae('0x1d')](function(){_0x7fd81f['status'](0xcc)[_0x95ae('0x1f')]();});}};}function handleEntityNotFound(_0x25d81c,_0x1b3dc5){return function(_0x1437e1){if(!_0x1437e1){_0x25d81c[_0x95ae('0x14')](0x194);}return _0x1437e1;};}function handleError(_0x4d24a6,_0x455eda){_0x455eda=_0x455eda||0x1f4;return function(_0x4e2436){logger[_0x95ae('0x20')](_0x4e2436[_0x95ae('0x21')]);if(_0x4e2436[_0x95ae('0x22')]){delete _0x4e2436['name'];}_0x4d24a6[_0x95ae('0x15')](_0x455eda)['send'](_0x4e2436);};}exports[_0x95ae('0x23')]=function(_0x5f4d16,_0x611fca){var _0x424e0f={},_0x4fa625={},_0x3df451={'count':0x0,'rows':[]};var _0x2751c9=_[_0x95ae('0x24')](db['CmHopperBlack'][_0x95ae('0x25')],function(_0x4c111d){return{'name':_0x4c111d['fieldName'],'type':_0x4c111d['type'][_0x95ae('0x26')]};});_0x4fa625[_0x95ae('0x27')]=_[_0x95ae('0x24')](_0x2751c9,'name');_0x4fa625[_0x95ae('0x28')]=_['keys'](_0x5f4d16[_0x95ae('0x28')]);_0x4fa625[_0x95ae('0x29')]=_['intersection'](_0x4fa625[_0x95ae('0x27')],_0x4fa625['query']);_0x424e0f[_0x95ae('0x2a')]=_[_0x95ae('0x2b')](_0x4fa625['model'],qs[_0x95ae('0x2c')](_0x5f4d16[_0x95ae('0x28')][_0x95ae('0x2c')]));_0x424e0f[_0x95ae('0x2a')]=_0x424e0f[_0x95ae('0x2a')][_0x95ae('0x2d')]?_0x424e0f[_0x95ae('0x2a')]:_0x4fa625['model'];if(!_0x5f4d16['query'][_0x95ae('0x2e')](_0x95ae('0x2f'))){_0x424e0f[_0x95ae('0x19')]=qs[_0x95ae('0x19')](_0x5f4d16[_0x95ae('0x28')]['limit']);_0x424e0f[_0x95ae('0x17')]=qs[_0x95ae('0x17')](_0x5f4d16[_0x95ae('0x28')][_0x95ae('0x17')]);}_0x424e0f[_0x95ae('0x30')]=qs[_0x95ae('0x31')](_0x5f4d16['query'][_0x95ae('0x31')]);_0x424e0f[_0x95ae('0x32')]=qs[_0x95ae('0x29')](_[_0x95ae('0x33')](_0x5f4d16['query'],_0x4fa625[_0x95ae('0x29')]),_0x2751c9);if(_0x5f4d16['query'][_0x95ae('0x34')]){_0x424e0f[_0x95ae('0x32')]=_[_0x95ae('0x35')](_0x424e0f[_0x95ae('0x32')],{'$or':_[_0x95ae('0x24')](_0x2751c9,function(_0x2222a2){if(_0x2222a2['type']!==_0x95ae('0x36')){var _0xf65b36={};_0xf65b36[_0x2222a2['name']]={'$like':'%'+_0x5f4d16['query'][_0x95ae('0x34')]+'%'};return _0xf65b36;}})});}_0x424e0f=_[_0x95ae('0x35')]({},_0x424e0f,_0x5f4d16[_0x95ae('0x37')]);var _0x53ca83={'where':_0x424e0f[_0x95ae('0x32')]};return db[_0x95ae('0x38')][_0x95ae('0x1a')](_0x53ca83)[_0x95ae('0x1d')](function(_0x1a3b58){_0x3df451[_0x95ae('0x1a')]=_0x1a3b58;if(_0x5f4d16['query'][_0x95ae('0x39')]){_0x424e0f[_0x95ae('0x3a')]=[{'all':!![]}];}return db[_0x95ae('0x38')][_0x95ae('0x3b')](_0x424e0f);})[_0x95ae('0x1d')](function(_0xf41d5b){_0x3df451[_0x95ae('0x3c')]=_0xf41d5b;return _0x3df451;})['then'](respondWithFilteredResult(_0x611fca,_0x424e0f))[_0x95ae('0x3d')](handleError(_0x611fca,null));};exports[_0x95ae('0x3e')]=function(_0x288d33,_0x36b11b){var _0x1ea78e={'raw':!![],'where':{'id':_0x288d33['params']['id']}},_0x4ec147={};_0x4ec147[_0x95ae('0x27')]=_[_0x95ae('0x3f')](db[_0x95ae('0x38')][_0x95ae('0x25')]);_0x4ec147['query']=_['keys'](_0x288d33['query']);_0x4ec147[_0x95ae('0x29')]=_['intersection'](_0x4ec147['model'],_0x4ec147[_0x95ae('0x28')]);_0x1ea78e[_0x95ae('0x2a')]=_['intersection'](_0x4ec147[_0x95ae('0x27')],qs[_0x95ae('0x2c')](_0x288d33[_0x95ae('0x28')][_0x95ae('0x2c')]));_0x1ea78e['attributes']=_0x1ea78e[_0x95ae('0x2a')][_0x95ae('0x2d')]?_0x1ea78e[_0x95ae('0x2a')]:_0x4ec147['model'];if(_0x288d33[_0x95ae('0x28')][_0x95ae('0x39')]){_0x1ea78e[_0x95ae('0x3a')]=[{'all':!![]}];}_0x1ea78e=_[_0x95ae('0x35')]({},_0x1ea78e,_0x288d33[_0x95ae('0x37')]);return db[_0x95ae('0x38')][_0x95ae('0x40')](_0x1ea78e)[_0x95ae('0x1d')](handleEntityNotFound(_0x36b11b,null))[_0x95ae('0x1d')](respondWithResult(_0x36b11b,null))['catch'](handleError(_0x36b11b,null));};exports[_0x95ae('0x41')]=function(_0x55e6e3,_0x41cec7){if(_0x55e6e3[_0x95ae('0x42')]['id']){delete _0x55e6e3[_0x95ae('0x42')]['id'];}return db['CmHopperBlack'][_0x95ae('0x40')]({'where':{'id':_0x55e6e3[_0x95ae('0x43')]['id']}})['then'](handleEntityNotFound(_0x41cec7,null))[_0x95ae('0x1d')](saveUpdates(_0x55e6e3[_0x95ae('0x42')],null))['then'](respondWithResult(_0x41cec7,null))[_0x95ae('0x3d')](handleError(_0x41cec7,null));};exports[_0x95ae('0x1e')]=function(_0x5bfdd1,_0xb6cbd0){return db['CmHopperBlack'][_0x95ae('0x40')]({'where':{'id':_0x5bfdd1[_0x95ae('0x43')]['id']}})[_0x95ae('0x1d')](handleEntityNotFound(_0xb6cbd0,null))['then'](removeEntity(_0xb6cbd0,null))[_0x95ae('0x3d')](handleError(_0xb6cbd0,null));};exports[_0x95ae('0x44')]=function(_0x5322b1,_0xcae893){return db[_0x95ae('0x38')]['describe']()['then'](respondWithResult(_0xcae893,null))[_0x95ae('0x3d')](handleError(_0xcae893,null));};
\ No newline at end of file
+var _0xdcf7=['status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','sendStatus','error','stack','name','index','map','CmHopperBlack','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x3c17c7,_0x251da){var _0x1b9bf8=function(_0x4a17d1){while(--_0x4a17d1){_0x3c17c7['push'](_0x3c17c7['shift']());}};_0x1b9bf8(++_0x251da);}(_0xdcf7,0x7d));var _0x7dcf=function(_0x5c9489,_0xf784e6){_0x5c9489=_0x5c9489-0x0;var _0x3de7b8=_0xdcf7[_0x5c9489];return _0x3de7b8;};'use strict';var emlformat=require(_0x7dcf('0x0'));var rimraf=require(_0x7dcf('0x1'));var zipdir=require(_0x7dcf('0x2'));var jsonpatch=require(_0x7dcf('0x3'));var rp=require(_0x7dcf('0x4'));var moment=require(_0x7dcf('0x5'));var BPromise=require(_0x7dcf('0x6'));var Mustache=require(_0x7dcf('0x7'));var util=require(_0x7dcf('0x8'));var path=require(_0x7dcf('0x9'));var sox=require(_0x7dcf('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7dcf('0xb'));var _=require(_0x7dcf('0xc'));var squel=require(_0x7dcf('0xd'));var crypto=require(_0x7dcf('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7dcf('0xf'));var toCsv=require(_0x7dcf('0x10'));var querystring=require('querystring');var Papa=require(_0x7dcf('0x11'));var Redis=require(_0x7dcf('0x12'));var authService=require(_0x7dcf('0x13'));var qs=require(_0x7dcf('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7dcf('0x15'));var logger=require(_0x7dcf('0x16'))('api');var utils=require(_0x7dcf('0x17'));var config=require(_0x7dcf('0x18'));var licenseUtil=require(_0x7dcf('0x19'));var db=require(_0x7dcf('0x1a'))['db'];function respondWithStatusCode(_0x4744f1,_0x2ca19b){_0x2ca19b=_0x2ca19b||0xcc;return function(_0x1ef159){if(_0x1ef159){return _0x4744f1['sendStatus'](_0x2ca19b);}return _0x4744f1[_0x7dcf('0x1b')](_0x2ca19b)[_0x7dcf('0x1c')]();};}function respondWithResult(_0x185262,_0x93c937){_0x93c937=_0x93c937||0xc8;return function(_0x22729f){if(_0x22729f){return _0x185262[_0x7dcf('0x1b')](_0x93c937)['json'](_0x22729f);}};}function respondWithFilteredResult(_0x2648c5,_0x4182f3){return function(_0x13c0ac){if(_0x13c0ac){var _0x58a797=typeof _0x4182f3[_0x7dcf('0x1d')]===_0x7dcf('0x1e')&&typeof _0x4182f3[_0x7dcf('0x1f')]===_0x7dcf('0x1e');var _0x3d616f=_0x13c0ac[_0x7dcf('0x20')];var _0x59ddd9=_0x58a797?0x0:_0x4182f3['offset'];var _0x4bd5aa=_0x58a797?_0x13c0ac[_0x7dcf('0x20')]:_0x4182f3[_0x7dcf('0x1d')]+_0x4182f3[_0x7dcf('0x1f')];var _0x125ad3;if(_0x4bd5aa>=_0x3d616f){_0x4bd5aa=_0x3d616f;_0x125ad3=0xc8;}else{_0x125ad3=0xce;}_0x2648c5['status'](_0x125ad3);return _0x2648c5[_0x7dcf('0x21')](_0x7dcf('0x22'),_0x59ddd9+'-'+_0x4bd5aa+'/'+_0x3d616f)[_0x7dcf('0x23')](_0x13c0ac);}return null;};}function patchUpdates(_0x5488d2){return function(_0xad3e74){try{jsonpatch[_0x7dcf('0x24')](_0xad3e74,_0x5488d2,!![]);}catch(_0x510d25){return BPromise[_0x7dcf('0x25')](_0x510d25);}return _0xad3e74['save']();};}function saveUpdates(_0x35f1fa,_0x4f04a1){return function(_0x1920cd){if(_0x1920cd){return _0x1920cd[_0x7dcf('0x26')](_0x35f1fa)[_0x7dcf('0x27')](function(_0x358be4){return _0x358be4;});}return null;};}function removeEntity(_0x593c13,_0x1b713b){return function(_0x36e2e6){if(_0x36e2e6){return _0x36e2e6[_0x7dcf('0x28')]()[_0x7dcf('0x27')](function(){_0x593c13[_0x7dcf('0x1b')](0xcc)[_0x7dcf('0x1c')]();});}};}function handleEntityNotFound(_0x3eaeee,_0x15881c){return function(_0x4d0fbb){if(!_0x4d0fbb){_0x3eaeee[_0x7dcf('0x29')](0x194);}return _0x4d0fbb;};}function handleError(_0x3a670c,_0x129158){_0x129158=_0x129158||0x1f4;return function(_0x153a1e){logger[_0x7dcf('0x2a')](_0x153a1e[_0x7dcf('0x2b')]);if(_0x153a1e[_0x7dcf('0x2c')]){delete _0x153a1e[_0x7dcf('0x2c')];}_0x3a670c[_0x7dcf('0x1b')](_0x129158)['send'](_0x153a1e);};}exports[_0x7dcf('0x2d')]=function(_0x3107b5,_0x3f100a){var _0x30c502={},_0x26df2f={},_0x35d60e={'count':0x0,'rows':[]};var _0x4db39c=_[_0x7dcf('0x2e')](db[_0x7dcf('0x2f')][_0x7dcf('0x30')],function(_0xbd169d){return{'name':_0xbd169d[_0x7dcf('0x31')],'type':_0xbd169d[_0x7dcf('0x32')]['key']};});_0x26df2f['model']=_['map'](_0x4db39c,_0x7dcf('0x2c'));_0x26df2f[_0x7dcf('0x33')]=_[_0x7dcf('0x34')](_0x3107b5[_0x7dcf('0x33')]);_0x26df2f[_0x7dcf('0x35')]=_[_0x7dcf('0x36')](_0x26df2f['model'],_0x26df2f[_0x7dcf('0x33')]);_0x30c502[_0x7dcf('0x37')]=_[_0x7dcf('0x36')](_0x26df2f['model'],qs['fields'](_0x3107b5[_0x7dcf('0x33')][_0x7dcf('0x38')]));_0x30c502['attributes']=_0x30c502[_0x7dcf('0x37')]['length']?_0x30c502[_0x7dcf('0x37')]:_0x26df2f[_0x7dcf('0x39')];if(!_0x3107b5['query'][_0x7dcf('0x3a')](_0x7dcf('0x3b'))){_0x30c502[_0x7dcf('0x1f')]=qs[_0x7dcf('0x1f')](_0x3107b5['query'][_0x7dcf('0x1f')]);_0x30c502[_0x7dcf('0x1d')]=qs[_0x7dcf('0x1d')](_0x3107b5[_0x7dcf('0x33')]['offset']);}_0x30c502[_0x7dcf('0x3c')]=qs[_0x7dcf('0x3d')](_0x3107b5['query'][_0x7dcf('0x3d')]);_0x30c502[_0x7dcf('0x3e')]=qs[_0x7dcf('0x35')](_['pick'](_0x3107b5['query'],_0x26df2f[_0x7dcf('0x35')]),_0x4db39c);if(_0x3107b5['query'][_0x7dcf('0x3f')]){_0x30c502['where']=_['merge'](_0x30c502[_0x7dcf('0x3e')],{'$or':_['map'](_0x4db39c,function(_0x15c797){if(_0x15c797[_0x7dcf('0x32')]!==_0x7dcf('0x40')){var _0xa9c81e={};_0xa9c81e[_0x15c797[_0x7dcf('0x2c')]]={'$like':'%'+_0x3107b5['query']['filter']+'%'};return _0xa9c81e;}})});}_0x30c502=_['merge']({},_0x30c502,_0x3107b5[_0x7dcf('0x41')]);var _0x3683bd={'where':_0x30c502[_0x7dcf('0x3e')]};return db[_0x7dcf('0x2f')]['count'](_0x3683bd)[_0x7dcf('0x27')](function(_0x5d865d){_0x35d60e[_0x7dcf('0x20')]=_0x5d865d;if(_0x3107b5[_0x7dcf('0x33')][_0x7dcf('0x42')]){_0x30c502['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x7dcf('0x43')](_0x30c502);})[_0x7dcf('0x27')](function(_0x30e6db){_0x35d60e[_0x7dcf('0x44')]=_0x30e6db;return _0x35d60e;})[_0x7dcf('0x27')](respondWithFilteredResult(_0x3f100a,_0x30c502))[_0x7dcf('0x45')](handleError(_0x3f100a,null));};exports[_0x7dcf('0x46')]=function(_0x507cc3,_0x2bb625){var _0x11cc0a={'raw':!![],'where':{'id':_0x507cc3[_0x7dcf('0x47')]['id']}},_0xf44a14={};_0xf44a14['model']=_['keys'](db[_0x7dcf('0x2f')][_0x7dcf('0x30')]);_0xf44a14[_0x7dcf('0x33')]=_['keys'](_0x507cc3['query']);_0xf44a14[_0x7dcf('0x35')]=_[_0x7dcf('0x36')](_0xf44a14[_0x7dcf('0x39')],_0xf44a14[_0x7dcf('0x33')]);_0x11cc0a[_0x7dcf('0x37')]=_[_0x7dcf('0x36')](_0xf44a14[_0x7dcf('0x39')],qs[_0x7dcf('0x38')](_0x507cc3[_0x7dcf('0x33')]['fields']));_0x11cc0a[_0x7dcf('0x37')]=_0x11cc0a['attributes'][_0x7dcf('0x48')]?_0x11cc0a[_0x7dcf('0x37')]:_0xf44a14[_0x7dcf('0x39')];if(_0x507cc3[_0x7dcf('0x33')][_0x7dcf('0x42')]){_0x11cc0a[_0x7dcf('0x49')]=[{'all':!![]}];}_0x11cc0a=_['merge']({},_0x11cc0a,_0x507cc3[_0x7dcf('0x41')]);return db['CmHopperBlack'][_0x7dcf('0x4a')](_0x11cc0a)['then'](handleEntityNotFound(_0x2bb625,null))['then'](respondWithResult(_0x2bb625,null))['catch'](handleError(_0x2bb625,null));};exports['update']=function(_0x594628,_0x2bbcdf){if(_0x594628[_0x7dcf('0x4b')]['id']){delete _0x594628[_0x7dcf('0x4b')]['id'];}return db[_0x7dcf('0x2f')][_0x7dcf('0x4a')]({'where':{'id':_0x594628[_0x7dcf('0x47')]['id']}})[_0x7dcf('0x27')](handleEntityNotFound(_0x2bbcdf,null))[_0x7dcf('0x27')](saveUpdates(_0x594628[_0x7dcf('0x4b')],null))['then'](respondWithResult(_0x2bbcdf,null))[_0x7dcf('0x45')](handleError(_0x2bbcdf,null));};exports[_0x7dcf('0x28')]=function(_0x240ec7,_0x15c996){return db['CmHopperBlack']['find']({'where':{'id':_0x240ec7[_0x7dcf('0x47')]['id']}})[_0x7dcf('0x27')](handleEntityNotFound(_0x15c996,null))[_0x7dcf('0x27')](removeEntity(_0x15c996,null))[_0x7dcf('0x45')](handleError(_0x15c996,null));};exports['describe']=function(_0x399255,_0x160eb2){return db['CmHopperBlack']['describe']()['then'](respondWithResult(_0x160eb2,null))[_0x7dcf('0x45')](handleError(_0x160eb2,null));};
\ No newline at end of file
index 22a0a36..c24dfbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ece=['path','rimraf','../../config/environment','exports','define','lodash','../../config/logger','api'];(function(_0x5d6839,_0x489e9d){var _0x319319=function(_0x814f86){while(--_0x814f86){_0x5d6839['push'](_0x5d6839['shift']());}};_0x319319(++_0x489e9d);}(_0x9ece,0x1b5));var _0xe9ec=function(_0x2ed20b,_0x219cd4){_0x2ed20b=_0x2ed20b-0x0;var _0x2ef910=_0x9ece[_0x2ed20b];return _0x2ef910;};'use strict';var _=require(_0xe9ec('0x0'));var util=require('util');var logger=require(_0xe9ec('0x1'))(_0xe9ec('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe9ec('0x3'));var rimraf=require(_0xe9ec('0x4'));var config=require(_0xe9ec('0x5'));var attributes=require('./cmHopperBlack.attributes');module[_0xe9ec('0x6')]=function(_0x38a849,_0x12bbd7){return _0x38a849[_0xe9ec('0x7')]('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2db4=['moment','bluebird','request-promise','path','rimraf','./cmHopperBlack.attributes','exports','define','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger','api'];(function(_0x38b584,_0x135c86){var _0x1a25ed=function(_0xe6dc65){while(--_0xe6dc65){_0x38b584['push'](_0x38b584['shift']());}};_0x1a25ed(++_0x135c86);}(_0x2db4,0x15a));var _0x42db=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2db4[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x42db('0x0'));var util=require(_0x42db('0x1'));var logger=require(_0x42db('0x2'))(_0x42db('0x3'));var moment=require(_0x42db('0x4'));var BPromise=require(_0x42db('0x5'));var rp=require(_0x42db('0x6'));var fs=require('fs');var path=require(_0x42db('0x7'));var rimraf=require(_0x42db('0x8'));var config=require('../../config/environment');var attributes=require(_0x42db('0x9'));module[_0x42db('0xa')]=function(_0x2a643e,_0x510282){return _0x2a643e[_0x42db('0xb')](_0x42db('0xc'),attributes,{'tableName':_0x42db('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c085651..d406144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ef4=['CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmHopperBlack','CmHopperBlack','options','raw','where','limit','include','map','model','attributes','stringify','update','body','info','UpdateCmHopperBlack','DestroyCmHopperBlack','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then'];(function(_0x4f0217,_0x29aa7e){var _0x4da152=function(_0x213af1){while(--_0x213af1){_0x4f0217['push'](_0x4f0217['shift']());}};_0x4da152(++_0x29aa7e);}(_0x4ef4,0x1b0));var _0x44ef=function(_0x3dfef8,_0x22f885){_0x3dfef8=_0x3dfef8-0x0;var _0x4ddee1=_0x4ef4[_0x3dfef8];return _0x4ddee1;};'use strict';var _=require(_0x44ef('0x0'));var util=require(_0x44ef('0x1'));var moment=require(_0x44ef('0x2'));var BPromise=require(_0x44ef('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x44ef('0x4'));var db=require(_0x44ef('0x5'))['db'];var utils=require(_0x44ef('0x6'));var logger=require('../../config/logger')(_0x44ef('0x7'));var config=require('../../config/environment');var jayson=require(_0x44ef('0x8'));var client=jayson[_0x44ef('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c4e6,_0x44853b,_0x1235ee){return new BPromise(function(_0x16394c,_0x3a19fb){return client[_0x44ef('0xa')](_0x5c4e6,_0x1235ee)[_0x44ef('0xb')](function(_0x2fda97){logger['info'](_0x44ef('0xc'),_0x44853b,_0x44ef('0xd'));logger[_0x44ef('0xe')](_0x44ef('0xf'),_0x44853b,_0x44ef('0xd'),JSON['stringify'](_0x2fda97));if(_0x2fda97[_0x44ef('0x10')]){if(_0x2fda97[_0x44ef('0x10')][_0x44ef('0x11')]===0x1f4){logger[_0x44ef('0x10')](_0x44ef('0xc'),_0x44853b,_0x2fda97['error'][_0x44ef('0x12')]);return _0x3a19fb(_0x2fda97[_0x44ef('0x10')][_0x44ef('0x12')]);}logger[_0x44ef('0x10')](_0x44ef('0xc'),_0x44853b,_0x2fda97[_0x44ef('0x10')][_0x44ef('0x12')]);return _0x16394c(_0x2fda97[_0x44ef('0x10')][_0x44ef('0x12')]);}else{logger['info'](_0x44ef('0xc'),_0x44853b,_0x44ef('0xd'));_0x16394c(_0x2fda97[_0x44ef('0x13')][_0x44ef('0x12')]);}})[_0x44ef('0x14')](function(_0x2d2d23){logger[_0x44ef('0x10')](_0x44ef('0xc'),_0x44853b,_0x2d2d23);_0x3a19fb(_0x2d2d23);});});}exports[_0x44ef('0x15')]=function(_0x118b96){var _0x16adea=this;return new Promise(function(_0x53e56e,_0x289e10){return db[_0x44ef('0x16')]['findAll']({'raw':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')][_0x44ef('0x18')]===undefined?!![]:![]:!![],'where':_0x118b96['options']?_0x118b96['options'][_0x44ef('0x19')]||null:null,'attributes':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')]['attributes']||null:null,'limit':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')][_0x44ef('0x1a')]||null:null,'include':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')][_0x44ef('0x1b')]?_[_0x44ef('0x1c')](_0x118b96[_0x44ef('0x17')][_0x44ef('0x1b')],function(_0x5c7024){return{'model':db[_0x5c7024[_0x44ef('0x1d')]],'as':_0x5c7024['as'],'attributes':_0x5c7024[_0x44ef('0x1e')],'include':_0x5c7024['include']?_[_0x44ef('0x1c')](_0x5c7024[_0x44ef('0x1b')],function(_0x2a8d5d){return{'model':db[_0x2a8d5d[_0x44ef('0x1d')]],'as':_0x2a8d5d['as'],'attributes':_0x2a8d5d['attributes'],'include':_0x2a8d5d[_0x44ef('0x1b')]?_['map'](_0x2a8d5d[_0x44ef('0x1b')],function(_0x3746fb){return{'model':db[_0x3746fb[_0x44ef('0x1d')]],'as':_0x3746fb['as'],'attributes':_0x3746fb[_0x44ef('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5513f3){logger['info'](_0x44ef('0x15'),_0x118b96);logger[_0x44ef('0xe')](_0x44ef('0x15'),_0x118b96,JSON[_0x44ef('0x1f')](_0x5513f3));_0x53e56e(_0x5513f3);})[_0x44ef('0x14')](function(_0x398820){logger[_0x44ef('0x10')](_0x44ef('0x15'),_0x398820[_0x44ef('0x12')],_0x118b96);_0x289e10(_0x16adea['error'](0x1f4,_0x398820[_0x44ef('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x5b9c49){var _0x40d71c=this;return new Promise(function(_0x32ce43,_0x2d8a10){return db[_0x44ef('0x16')][_0x44ef('0x20')](_0x5b9c49[_0x44ef('0x21')],{'raw':_0x5b9c49[_0x44ef('0x17')]?_0x5b9c49[_0x44ef('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b9c49['options']?_0x5b9c49['options'][_0x44ef('0x19')]||null:null,'attributes':_0x5b9c49[_0x44ef('0x17')]?_0x5b9c49[_0x44ef('0x17')][_0x44ef('0x1e')]||null:null,'limit':_0x5b9c49[_0x44ef('0x17')]?_0x5b9c49[_0x44ef('0x17')][_0x44ef('0x1a')]||null:null})[_0x44ef('0xb')](function(_0x58de92){logger[_0x44ef('0x22')](_0x44ef('0x23'),_0x5b9c49);logger[_0x44ef('0xe')](_0x44ef('0x23'),_0x5b9c49,JSON[_0x44ef('0x1f')](_0x58de92));_0x32ce43(_0x58de92);})[_0x44ef('0x14')](function(_0xf74c61){logger[_0x44ef('0x10')]('UpdateCmHopperBlack',_0xf74c61[_0x44ef('0x12')],_0x5b9c49);_0x2d8a10(_0x40d71c[_0x44ef('0x10')](0x1f4,_0xf74c61[_0x44ef('0x12')]));});});};exports['DestroyCmHopperBlack']=function(_0x1d2db8){var _0x3e4034=this;return new Promise(function(_0x1144a0,_0x2fbee0){return db[_0x44ef('0x16')]['destroy']({'where':_0x1d2db8[_0x44ef('0x17')]?_0x1d2db8['options'][_0x44ef('0x19')]||null:null})[_0x44ef('0xb')](function(_0x5a0e95){logger[_0x44ef('0x22')](_0x44ef('0x24'),_0x1d2db8);logger[_0x44ef('0xe')](_0x44ef('0x24'),_0x1d2db8,JSON[_0x44ef('0x1f')](_0x5a0e95));_0x1144a0(_0x5a0e95);})[_0x44ef('0x14')](function(_0x104b30){logger[_0x44ef('0x10')](_0x44ef('0x24'),_0x104b30[_0x44ef('0x12')],_0x1d2db8);_0x2fbee0(_0x3e4034[_0x44ef('0x10')](0x1f4,_0x104b30[_0x44ef('0x12')]));});});};
\ No newline at end of file
+var _0xde33=['map','model','debug','catch','UpdateCmHopperBlack','CmHopperBlack','update','body','then','destroy','DestroyCmHopperBlack','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','CmHopperBlack,\x20%s,\x20%s','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetCmHopperBlack','findAll','options','raw','where','attributes','limit','include'];(function(_0x5de5be,_0xdca74c){var _0x2b6aa7=function(_0x471f4b){while(--_0x471f4b){_0x5de5be['push'](_0x5de5be['shift']());}};_0x2b6aa7(++_0xdca74c);}(_0xde33,0xa7));var _0x3de3=function(_0x4bf9e6,_0x500ad5){_0x4bf9e6=_0x4bf9e6-0x0;var _0x38f1d3=_0xde33[_0x4bf9e6];return _0x38f1d3;};'use strict';var _=require(_0x3de3('0x0'));var util=require('util');var moment=require(_0x3de3('0x1'));var BPromise=require('bluebird');var rs=require(_0x3de3('0x2'));var fs=require('fs');var Redis=require(_0x3de3('0x3'));var db=require(_0x3de3('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3de3('0x5'));var config=require(_0x3de3('0x6'));var jayson=require(_0x3de3('0x7'));var client=jayson[_0x3de3('0x8')][_0x3de3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d8427,_0x18d963,_0x631f5b){return new BPromise(function(_0x182624,_0x3f263c){return client[_0x3de3('0xa')](_0x5d8427,_0x631f5b)['then'](function(_0x28f016){logger['info'](_0x3de3('0xb'),_0x18d963,_0x3de3('0xc'));logger['debug'](_0x3de3('0xd'),_0x18d963,_0x3de3('0xc'),JSON[_0x3de3('0xe')](_0x28f016));if(_0x28f016[_0x3de3('0xf')]){if(_0x28f016[_0x3de3('0xf')][_0x3de3('0x10')]===0x1f4){logger[_0x3de3('0xf')](_0x3de3('0xb'),_0x18d963,_0x28f016['error'][_0x3de3('0x11')]);return _0x3f263c(_0x28f016['error'][_0x3de3('0x11')]);}logger['error'](_0x3de3('0xb'),_0x18d963,_0x28f016['error']['message']);return _0x182624(_0x28f016['error'][_0x3de3('0x11')]);}else{logger[_0x3de3('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x18d963,'request\x20sent');_0x182624(_0x28f016[_0x3de3('0x13')][_0x3de3('0x11')]);}})['catch'](function(_0x4b7b9e){logger[_0x3de3('0xf')](_0x3de3('0xb'),_0x18d963,_0x4b7b9e);_0x3f263c(_0x4b7b9e);});});}exports[_0x3de3('0x14')]=function(_0x653a04){var _0x270ae2=this;return new Promise(function(_0x10e841,_0x358f5c){return db['CmHopperBlack'][_0x3de3('0x15')]({'raw':_0x653a04[_0x3de3('0x16')]?_0x653a04[_0x3de3('0x16')][_0x3de3('0x17')]===undefined?!![]:![]:!![],'where':_0x653a04[_0x3de3('0x16')]?_0x653a04[_0x3de3('0x16')][_0x3de3('0x18')]||null:null,'attributes':_0x653a04['options']?_0x653a04[_0x3de3('0x16')][_0x3de3('0x19')]||null:null,'limit':_0x653a04[_0x3de3('0x16')]?_0x653a04['options'][_0x3de3('0x1a')]||null:null,'include':_0x653a04['options']?_0x653a04[_0x3de3('0x16')][_0x3de3('0x1b')]?_[_0x3de3('0x1c')](_0x653a04[_0x3de3('0x16')][_0x3de3('0x1b')],function(_0x57f3b1){return{'model':db[_0x57f3b1['model']],'as':_0x57f3b1['as'],'attributes':_0x57f3b1[_0x3de3('0x19')],'include':_0x57f3b1[_0x3de3('0x1b')]?_[_0x3de3('0x1c')](_0x57f3b1['include'],function(_0x1911ee){return{'model':db[_0x1911ee['model']],'as':_0x1911ee['as'],'attributes':_0x1911ee[_0x3de3('0x19')],'include':_0x1911ee[_0x3de3('0x1b')]?_[_0x3de3('0x1c')](_0x1911ee[_0x3de3('0x1b')],function(_0x231166){return{'model':db[_0x231166[_0x3de3('0x1d')]],'as':_0x231166['as'],'attributes':_0x231166[_0x3de3('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x561af0){logger[_0x3de3('0x12')](_0x3de3('0x14'),_0x653a04);logger[_0x3de3('0x1e')](_0x3de3('0x14'),_0x653a04,JSON[_0x3de3('0xe')](_0x561af0));_0x10e841(_0x561af0);})[_0x3de3('0x1f')](function(_0x410130){logger[_0x3de3('0xf')]('GetCmHopperBlack',_0x410130[_0x3de3('0x11')],_0x653a04);_0x358f5c(_0x270ae2['error'](0x1f4,_0x410130[_0x3de3('0x11')]));});});};exports[_0x3de3('0x20')]=function(_0x16e4f4){var _0x16150d=this;return new Promise(function(_0x6bc9c,_0x31fe3f){return db[_0x3de3('0x21')][_0x3de3('0x22')](_0x16e4f4[_0x3de3('0x23')],{'raw':_0x16e4f4[_0x3de3('0x16')]?_0x16e4f4[_0x3de3('0x16')][_0x3de3('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16e4f4[_0x3de3('0x16')]?_0x16e4f4[_0x3de3('0x16')]['where']||null:null,'attributes':_0x16e4f4['options']?_0x16e4f4['options'][_0x3de3('0x19')]||null:null,'limit':_0x16e4f4[_0x3de3('0x16')]?_0x16e4f4[_0x3de3('0x16')]['limit']||null:null})[_0x3de3('0x24')](function(_0x43f780){logger[_0x3de3('0x12')](_0x3de3('0x20'),_0x16e4f4);logger['debug'](_0x3de3('0x20'),_0x16e4f4,JSON[_0x3de3('0xe')](_0x43f780));_0x6bc9c(_0x43f780);})[_0x3de3('0x1f')](function(_0x2ce8dd){logger[_0x3de3('0xf')](_0x3de3('0x20'),_0x2ce8dd[_0x3de3('0x11')],_0x16e4f4);_0x31fe3f(_0x16150d[_0x3de3('0xf')](0x1f4,_0x2ce8dd['message']));});});};exports['DestroyCmHopperBlack']=function(_0xeb5067){var _0x1bc0b2=this;return new Promise(function(_0x75f5,_0x496d21){return db[_0x3de3('0x21')][_0x3de3('0x25')]({'where':_0xeb5067['options']?_0xeb5067[_0x3de3('0x16')][_0x3de3('0x18')]||null:null})[_0x3de3('0x24')](function(_0x347e1e){logger[_0x3de3('0x12')](_0x3de3('0x26'),_0xeb5067);logger[_0x3de3('0x1e')](_0x3de3('0x26'),_0xeb5067,JSON[_0x3de3('0xe')](_0x347e1e));_0x75f5(_0x347e1e);})[_0x3de3('0x1f')](function(_0x20a96a){logger[_0x3de3('0xf')](_0x3de3('0x26'),_0x20a96a[_0x3de3('0x11')],_0xeb5067);_0x496d21(_0x1bc0b2[_0x3de3('0xf')](0x1f4,_0x20a96a[_0x3de3('0x11')]));});});};
\ No newline at end of file
index 0f36804..bb71b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6050=['/:id','isAuthenticated','show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','describe','get'];(function(_0x1c86dc,_0xaa7be7){var _0x2e0182=function(_0x2326e2){while(--_0x2326e2){_0x1c86dc['push'](_0x1c86dc['shift']());}};_0x2e0182(++_0xaa7be7);}(_0x6050,0x196));var _0x0605=function(_0x2319e7,_0x34adaa){_0x2319e7=_0x2319e7-0x0;var _0x1ad698=_0x6050[_0x2319e7];return _0x1ad698;};'use strict';var multer=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var path=require(_0x0605('0x2'));var timeout=require(_0x0605('0x3'));var express=require(_0x0605('0x4'));var router=express[_0x0605('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0605('0x6'));var interaction=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var controller=require('./cmHopperBlack.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0605('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x0605('0xa')]);router[_0x0605('0xb')](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0xe')]);router['put'](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0xf')]);router[_0x0605('0x10')](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0x11')]);module[_0x0605('0x12')]=router;
\ No newline at end of file
+var _0xf61e=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','isAuthenticated','describe','show','put'];(function(_0x2461e4,_0x5a72fd){var _0x3f40b6=function(_0x5342ea){while(--_0x5342ea){_0x2461e4['push'](_0x2461e4['shift']());}};_0x3f40b6(++_0x5a72fd);}(_0xf61e,0x191));var _0xef61=function(_0x49b15c,_0x5ddb22){_0x49b15c=_0x49b15c-0x0;var _0x139718=_0xf61e[_0x49b15c];return _0x139718;};'use strict';var multer=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var path=require(_0xef61('0x2'));var timeout=require(_0xef61('0x3'));var express=require(_0xef61('0x4'));var router=express[_0xef61('0x5')]();var fs_extra=require(_0xef61('0x6'));var auth=require(_0xef61('0x7'));var interaction=require(_0xef61('0x8'));var config=require(_0xef61('0x9'));var controller=require(_0xef61('0xa'));router[_0xef61('0xb')]('/',auth['isAuthenticated'](),controller[_0xef61('0xc')]);router[_0xef61('0xb')]('/describe',auth[_0xef61('0xd')](),controller[_0xef61('0xe')]);router[_0xef61('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xef61('0xf')]);router[_0xef61('0x10')](_0xef61('0x11'),auth[_0xef61('0xd')](),controller[_0xef61('0x12')]);router[_0xef61('0x13')](_0xef61('0x11'),auth[_0xef61('0xd')](),controller[_0xef61('0x14')]);module[_0xef61('0x15')]=router;
\ No newline at end of file
index 8f9c79e..f39824c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf984=['STRING','DATE','INTEGER','getDataValue','endtime','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN','sequelize','moment','exports'];(function(_0x2f9154,_0x36bc7a){var _0x203d20=function(_0x15b370){while(--_0x15b370){_0x2f9154['push'](_0x2f9154['shift']());}};_0x203d20(++_0x36bc7a);}(_0xf984,0x185));var _0x4f98=function(_0x37c054,_0x1cf983){_0x37c054=_0x37c054-0x0;var _0x20e5ef=_0xf984[_0x37c054];return _0x20e5ef;};'use strict';var Sequelize=require(_0x4f98('0x0'));var moment=require(_0x4f98('0x1'));module[_0x4f98('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x4f98('0x3')]},'scheduledat':{'type':Sequelize[_0x4f98('0x4')]},'countbusyretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x4f98('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4f98('0x3')]},'calleridname':{'type':Sequelize[_0x4f98('0x3')]},'starttime':{'type':Sequelize[_0x4f98('0x4')]},'responsetime':{'type':Sequelize[_0x4f98('0x4')]},'answertime':{'type':Sequelize[_0x4f98('0x4')]},'droptime':{'type':Sequelize[_0x4f98('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4f98('0x3')]},'campaign':{'type':Sequelize[_0x4f98('0x3')]},'campaigntype':{'type':Sequelize[_0x4f98('0x3')]},'membername':{'type':Sequelize[_0x4f98('0x3')]},'reason':{'type':Sequelize[_0x4f98('0x3')]},'disposition':{'type':Sequelize[_0x4f98('0x3')]},'secondDisposition':{'type':Sequelize[_0x4f98('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0x4f98('0x4')],'set':function(_0x115fd1){var _0xda9aab=this[_0x4f98('0x6')](_0x4f98('0x7'));if(_0xda9aab&&_0x115fd1){this[_0x4f98('0x8')](_0x4f98('0x9'),moment(_0x115fd1)[_0x4f98('0xa')](moment(_0xda9aab),_0x4f98('0xb')));}return this[_0x4f98('0x8')](_0x4f98('0xc'),_0x115fd1);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x4f98('0xd')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x4f98('0xd')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x4f98('0xd')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4f98('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4f98('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x4f98('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x4f98('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdba3=['dispositionat','BOOLEAN','moment','exports','INTEGER','STRING','DATE','endtime','followuptime','diff','seconds','setDataValue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdba3,0x1a6));var _0x3dba=function(_0x433e3b,_0x1e36a8){_0x433e3b=_0x433e3b-0x0;var _0x3a5439=_0xdba3[_0x433e3b];return _0x3a5439;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3dba('0x0'));module[_0x3dba('0x1')]={'state':{'type':Sequelize[_0x3dba('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x3dba('0x3')]},'originatecalleridname':{'type':Sequelize[_0x3dba('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x3dba('0x3')]},'starttime':{'type':Sequelize[_0x3dba('0x4')]},'responsetime':{'type':Sequelize[_0x3dba('0x4')]},'answertime':{'type':Sequelize[_0x3dba('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x3dba('0x4')]},'ringtime':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x3dba('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x3dba('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x3dba('0x3')]},'disposition':{'type':Sequelize[_0x3dba('0x3')]},'secondDisposition':{'type':Sequelize[_0x3dba('0x3')]},'thirdDisposition':{'type':Sequelize[_0x3dba('0x3')]},'dispositionat':{'type':Sequelize[_0x3dba('0x4')],'set':function(_0x4ba5f7){var _0x16ee93=this['getDataValue'](_0x3dba('0x5'));if(_0x16ee93&&_0x4ba5f7){this['setDataValue'](_0x3dba('0x6'),moment(_0x4ba5f7)[_0x3dba('0x7')](moment(_0x16ee93),_0x3dba('0x8')));}return this[_0x3dba('0x9')](_0x3dba('0xa'),_0x4ba5f7);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x3dba('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x3dba('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x3dba('0x4')]},'callback':{'type':Sequelize[_0x3dba('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x3dba('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x3dba('0x4')]},'deleted':{'type':Sequelize[_0x3dba('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x3dba('0x4')]},'recallme':{'type':Sequelize[_0x3dba('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x3dba('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x3dba('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 330dbaa..6e81e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['set','Content-Range','apply','reject','save','update','then','error','stack','name','index','CmHopperFinal','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','rows','catch','show','params','keys','fields','include','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','dropContacts','abandonedContacts','reCallContacts','answeringMachine','into','cm_hopper','fromQuery','ListId','VoiceQueueId','createdAt','field','phone','NOW()','scheduledAt','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','from','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','CampaignId','ANY_VALUE(calleridnum)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count'];(function(_0x2e5d4e,_0x5af227){var _0x31ecd7=function(_0x138bc5){while(--_0x138bc5){_0x2e5d4e['push'](_0x2e5d4e['shift']());}};_0x31ecd7(++_0x5af227);}(_0x5496,0x175));var _0x6549=function(_0x2efe54,_0x2a4e0d){_0x2efe54=_0x2efe54-0x0;var _0x2901cd=_0x5496[_0x2efe54];return _0x2901cd;};'use strict';var emlformat=require(_0x6549('0x0'));var rimraf=require(_0x6549('0x1'));var zipdir=require(_0x6549('0x2'));var jsonpatch=require(_0x6549('0x3'));var rp=require(_0x6549('0x4'));var moment=require('moment');var BPromise=require(_0x6549('0x5'));var Mustache=require('mustache');var util=require(_0x6549('0x6'));var path=require(_0x6549('0x7'));var sox=require(_0x6549('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6549('0x9'));var _=require(_0x6549('0xa'));var squel=require('squel');var crypto=require(_0x6549('0xb'));var jsforce=require(_0x6549('0xc'));var deskjs=require(_0x6549('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6549('0xe'));var Papa=require(_0x6549('0xf'));var Redis=require(_0x6549('0x10'));var authService=require(_0x6549('0x11'));var qs=require(_0x6549('0x12'));var as=require(_0x6549('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6549('0x14'));var utils=require(_0x6549('0x15'));var config=require(_0x6549('0x16'));var licenseUtil=require(_0x6549('0x17'));var db=require(_0x6549('0x18'))['db'];function respondWithStatusCode(_0x5bc018,_0x4dfb06){_0x4dfb06=_0x4dfb06||0xcc;return function(_0x3f844f){if(_0x3f844f){return _0x5bc018[_0x6549('0x19')](_0x4dfb06);}return _0x5bc018['status'](_0x4dfb06)[_0x6549('0x1a')]();};}function respondWithResult(_0x150fc8,_0x195d25){_0x195d25=_0x195d25||0xc8;return function(_0x12b068){if(_0x12b068){return _0x150fc8[_0x6549('0x1b')](_0x195d25)[_0x6549('0x1c')](_0x12b068);}};}function respondWithFilteredResult(_0x55c112,_0x5db86d){return function(_0x384f75){if(_0x384f75){var _0x25da29=typeof _0x5db86d['offset']===_0x6549('0x1d')&&typeof _0x5db86d[_0x6549('0x1e')]===_0x6549('0x1d');var _0x387e60=_0x384f75[_0x6549('0x1f')];var _0x53b12b=_0x25da29?0x0:_0x5db86d['offset'];var _0x26a212=_0x25da29?_0x384f75['count']:_0x5db86d['offset']+_0x5db86d[_0x6549('0x1e')];var _0x1e5079;if(_0x26a212>=_0x387e60){_0x26a212=_0x387e60;_0x1e5079=0xc8;}else{_0x1e5079=0xce;}_0x55c112[_0x6549('0x1b')](_0x1e5079);return _0x55c112[_0x6549('0x20')](_0x6549('0x21'),_0x53b12b+'-'+_0x26a212+'/'+_0x387e60)['json'](_0x384f75);}return null;};}function patchUpdates(_0x228117){return function(_0x4b40c1){try{jsonpatch[_0x6549('0x22')](_0x4b40c1,_0x228117,!![]);}catch(_0x72322b){return BPromise[_0x6549('0x23')](_0x72322b);}return _0x4b40c1[_0x6549('0x24')]();};}function saveUpdates(_0x22bcf8,_0x12d547){return function(_0x427b47){if(_0x427b47){return _0x427b47[_0x6549('0x25')](_0x22bcf8)[_0x6549('0x26')](function(_0x6ae00c){return _0x6ae00c;});}return null;};}function removeEntity(_0x40d3f9,_0x1fbfa4){return function(_0x23c0ba){if(_0x23c0ba){return _0x23c0ba['destroy']()[_0x6549('0x26')](function(){_0x40d3f9[_0x6549('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x126967,_0x29f89e){return function(_0x3768cb){if(!_0x3768cb){_0x126967['sendStatus'](0x194);}return _0x3768cb;};}function handleError(_0x31a95,_0xfb51a1){_0xfb51a1=_0xfb51a1||0x1f4;return function(_0x14de1f){logger[_0x6549('0x27')](_0x14de1f[_0x6549('0x28')]);if(_0x14de1f[_0x6549('0x29')]){delete _0x14de1f[_0x6549('0x29')];}_0x31a95[_0x6549('0x1b')](_0xfb51a1)['send'](_0x14de1f);};}exports[_0x6549('0x2a')]=function(_0x136518,_0x17fdfb){var _0x4c605c={},_0x3f1502={},_0x4acaf5={'count':0x0,'rows':[]};var _0x4f0ad1=_['map'](db[_0x6549('0x2b')][_0x6549('0x2c')],function(_0x4f3069){return{'name':_0x4f3069[_0x6549('0x2d')],'type':_0x4f3069[_0x6549('0x2e')][_0x6549('0x2f')]};});_0x3f1502[_0x6549('0x30')]=_[_0x6549('0x31')](_0x4f0ad1,_0x6549('0x29'));_0x3f1502[_0x6549('0x32')]=_['keys'](_0x136518[_0x6549('0x32')]);_0x3f1502[_0x6549('0x33')]=_[_0x6549('0x34')](_0x3f1502[_0x6549('0x30')],_0x3f1502[_0x6549('0x32')]);_0x4c605c[_0x6549('0x35')]=_['intersection'](_0x3f1502[_0x6549('0x30')],qs['fields'](_0x136518[_0x6549('0x32')]['fields']));_0x4c605c[_0x6549('0x35')]=_0x4c605c[_0x6549('0x35')][_0x6549('0x36')]?_0x4c605c['attributes']:_0x3f1502[_0x6549('0x30')];if(!_0x136518[_0x6549('0x32')][_0x6549('0x37')](_0x6549('0x38'))){_0x4c605c['limit']=qs['limit'](_0x136518['query'][_0x6549('0x1e')]);_0x4c605c[_0x6549('0x39')]=qs['offset'](_0x136518[_0x6549('0x32')][_0x6549('0x39')]);}_0x4c605c[_0x6549('0x3a')]=qs[_0x6549('0x3b')](_0x136518[_0x6549('0x32')]['sort']);_0x4c605c['where']=qs[_0x6549('0x33')](_[_0x6549('0x3c')](_0x136518[_0x6549('0x32')],_0x3f1502[_0x6549('0x33')]),_0x4f0ad1);if(_0x136518[_0x6549('0x32')][_0x6549('0x3d')]){_0x4c605c[_0x6549('0x3e')]=_[_0x6549('0x3f')](_0x4c605c[_0x6549('0x3e')],{'$or':_[_0x6549('0x31')](_0x4f0ad1,function(_0x525f82){if(_0x525f82[_0x6549('0x2e')]!==_0x6549('0x40')){var _0x2ea977={};_0x2ea977[_0x525f82[_0x6549('0x29')]]={'$like':'%'+_0x136518[_0x6549('0x32')]['filter']+'%'};return _0x2ea977;}})});}_0x4c605c=_['merge']({},_0x4c605c,_0x136518['options']);var _0x22b919={'where':_0x4c605c[_0x6549('0x3e')]};return db[_0x6549('0x2b')][_0x6549('0x1f')](_0x22b919)['then'](function(_0x56ce9f){_0x4acaf5[_0x6549('0x1f')]=_0x56ce9f;if(_0x136518[_0x6549('0x32')][_0x6549('0x41')]){_0x4c605c['include']=[{'all':!![]}];}return db[_0x6549('0x2b')]['findAll'](_0x4c605c);})[_0x6549('0x26')](function(_0x2ec614){_0x4acaf5[_0x6549('0x42')]=_0x2ec614;return _0x4acaf5;})[_0x6549('0x26')](respondWithFilteredResult(_0x17fdfb,_0x4c605c))[_0x6549('0x43')](handleError(_0x17fdfb,null));};exports[_0x6549('0x44')]=function(_0xbbfdc9,_0x4deaab){var _0x132625={'raw':!![],'where':{'id':_0xbbfdc9[_0x6549('0x45')]['id']}},_0x309f45={};_0x309f45[_0x6549('0x30')]=_[_0x6549('0x46')](db[_0x6549('0x2b')][_0x6549('0x2c')]);_0x309f45[_0x6549('0x32')]=_[_0x6549('0x46')](_0xbbfdc9[_0x6549('0x32')]);_0x309f45[_0x6549('0x33')]=_[_0x6549('0x34')](_0x309f45[_0x6549('0x30')],_0x309f45[_0x6549('0x32')]);_0x132625[_0x6549('0x35')]=_[_0x6549('0x34')](_0x309f45['model'],qs[_0x6549('0x47')](_0xbbfdc9[_0x6549('0x32')][_0x6549('0x47')]));_0x132625[_0x6549('0x35')]=_0x132625['attributes'][_0x6549('0x36')]?_0x132625['attributes']:_0x309f45[_0x6549('0x30')];if(_0xbbfdc9[_0x6549('0x32')]['includeAll']){_0x132625[_0x6549('0x48')]=[{'all':!![]}];}_0x132625=_[_0x6549('0x3f')]({},_0x132625,_0xbbfdc9[_0x6549('0x49')]);return db[_0x6549('0x2b')][_0x6549('0x4a')](_0x132625)['then'](handleEntityNotFound(_0x4deaab,null))['then'](respondWithResult(_0x4deaab,null))[_0x6549('0x43')](handleError(_0x4deaab,null));};exports[_0x6549('0x4b')]=function(_0x41d675,_0x1712f3){return db[_0x6549('0x2b')]['describe']()[_0x6549('0x26')](respondWithResult(_0x1712f3,null))[_0x6549('0x43')](handleError(_0x1712f3,null));};exports[_0x6549('0x25')]=function(_0x6121af,_0xa4c650){if(_0x6121af[_0x6549('0x4c')][_0x6549('0x4d')]){delete _0x6121af[_0x6549('0x4c')]['uniqueid'];}return db[_0x6549('0x2b')]['find']({'where':{'uniqueid':_0x6121af[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0xa4c650,null))[_0x6549('0x26')](saveUpdates(_0x6121af['body'],null))[_0x6549('0x26')](respondWithResult(_0xa4c650,null))[_0x6549('0x43')](handleError(_0xa4c650,null));};exports[_0x6549('0x4e')]=function(_0x5300c8,_0x19ac50,_0x17d7ce){return db[_0x6549('0x2b')][_0x6549('0x4f')]({'raw':![],'where':{'VoiceQueueId':_0x5300c8[_0x6549('0x45')]['id']},'attributes':[[db[_0x6549('0x50')]['fn']('COUNT',db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x52')))),_0x6549('0x53')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x55')))),_0x6549('0x56')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x57')))),_0x6549('0x58')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x59')))),_0x6549('0x5a')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5b')))),'dropContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5c')))),'abandonedContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5d')))),'reCallContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x5e')))),'answeringMachine']]})[_0x6549('0x26')](handleEntityNotFound(_0x19ac50,null))[_0x6549('0x26')](respondWithResult(_0x19ac50,null))[_0x6549('0x43')](handleError(_0x19ac50,null));};exports[_0x6549('0x5f')]=function(_0x2da535,_0x45eb28,_0x3b01d9){return db[_0x6549('0x2b')][_0x6549('0x4f')]({'raw':![],'where':{'CampaignId':_0x2da535[_0x6549('0x45')]['id']},'attributes':[[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x52')))),_0x6549('0x53')],[db['sequelize']['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')]('`state`\x20=\x203,\x201,\x20null'))),_0x6549('0x56')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')]('`state`\x20=\x205,\x201,\x20null'))),_0x6549('0x58')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x59')))),_0x6549('0x5a')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5b')))),_0x6549('0x60')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x5c')))),_0x6549('0x61')],[db['sequelize']['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x5d')))),_0x6549('0x62')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')]('`state`\x20=\x2019,\x201,\x20null'))),_0x6549('0x63')]]})['then'](handleEntityNotFound(_0x45eb28,null))[_0x6549('0x26')](respondWithResult(_0x45eb28,null))[_0x6549('0x43')](handleError(_0x45eb28,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x372b67,_0x2c00a1,_0x2e6b4b){return db['VoiceQueue'][_0x6549('0x4a')]({'where':{'id':_0x372b67[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x2c00a1,null))[_0x6549('0x26')](function(_0x15b906){var _0x34c5f9;if(_0x15b906){_0x34c5f9=squel['insert']()[_0x6549('0x64')](_0x6549('0x65'))[_0x6549('0x66')](['phone','scheduledAt','ContactId',_0x6549('0x67'),_0x6549('0x68'),_0x6549('0x69'),'updatedAt'],squel['select']()[_0x6549('0x6a')]('ANY_VALUE(calleridnum)',_0x6549('0x6b'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x6d'))[_0x6549('0x6a')](_0x6549('0x6e'),_0x6549('0x6f'))['field'](_0x6549('0x70'),_0x6549('0x67'))[_0x6549('0x6a')]('ANY_VALUE(VoiceQueueId)',_0x6549('0x68'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x69'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x71'))['from'](_0x6549('0x72'))['where'](_0x6549('0x73'),_0x372b67[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x75'),_0x372b67[_0x6549('0x4c')][_0x6549('0x76')][_0x6549('0x74')]())['where'](_0x6549('0x77'))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x6b'))[_0x6549('0x7a')](_0x6549('0x65'))[_0x6549('0x3e')](_0x6549('0x73'),_0x372b67['params']['id'][_0x6549('0x74')]()))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x7b'))[_0x6549('0x7a')](_0x6549('0x72'))[_0x6549('0x3e')](_0x6549('0x73'),_0x372b67[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x7c')))[_0x6549('0x7d')](_0x6549('0x6f')))[_0x6549('0x74')]();return db[_0x6549('0x50')]['query'](_0x34c5f9);}return[];})[_0x6549('0x26')](respondWithResult(_0x2c00a1,null))[_0x6549('0x43')](handleError(_0x2c00a1,null));};exports[_0x6549('0x7e')]=function(_0x35bad6,_0x371d8a,_0xfde69e){return db[_0x6549('0x7f')][_0x6549('0x4a')]({'where':{'id':_0x35bad6[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x371d8a,null))[_0x6549('0x26')](function(_0x1da2d7){var _0x348d55;if(_0x1da2d7){_0x348d55=squel[_0x6549('0x80')]()[_0x6549('0x64')](_0x6549('0x65'))[_0x6549('0x66')](['phone',_0x6549('0x6d'),_0x6549('0x6f'),_0x6549('0x67'),_0x6549('0x81'),_0x6549('0x69'),_0x6549('0x71')],squel[_0x6549('0x79')]()['field'](_0x6549('0x82'),'phone')['field'](_0x6549('0x6c'),'scheduledAt')[_0x6549('0x6a')](_0x6549('0x6e'),_0x6549('0x6f'))[_0x6549('0x6a')](_0x6549('0x70'),'ListId')[_0x6549('0x6a')]('ANY_VALUE(CampaignId)',_0x6549('0x81'))[_0x6549('0x6a')](_0x6549('0x6c'),'createdAt')[_0x6549('0x6a')](_0x6549('0x6c'),'updatedAt')['from'](_0x6549('0x72'))[_0x6549('0x3e')](_0x6549('0x83'),_0x35bad6[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x75'),_0x35bad6[_0x6549('0x4c')][_0x6549('0x76')][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x77'))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x6b'))[_0x6549('0x7a')](_0x6549('0x65'))['where']('CampaignId\x20=\x20?',_0x35bad6[_0x6549('0x45')]['id'][_0x6549('0x74')]()))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x7b'))[_0x6549('0x7a')](_0x6549('0x72'))[_0x6549('0x3e')]('CampaignId\x20=\x20?',_0x35bad6['params']['id']['toString']())[_0x6549('0x3e')](_0x6549('0x7c')))[_0x6549('0x7d')](_0x6549('0x6f')))[_0x6549('0x74')]();return db['sequelize'][_0x6549('0x32')](_0x348d55);}return[];})[_0x6549('0x26')](respondWithResult(_0x371d8a,null))[_0x6549('0x43')](handleError(_0x371d8a,null));};exports[_0x6549('0x84')]=function(_0x230874,_0x3be369,_0xaf1a80){return db[_0x6549('0x85')][_0x6549('0x86')]({'where':{'VoiceQueueId':_0x230874[_0x6549('0x4c')][_0x6549('0x68')],'CampaignId':_0x230874['body'][_0x6549('0x81')],'ContactId':_0x230874[_0x6549('0x4c')][_0x6549('0x6f')]}})[_0x6549('0x26')](handleEntityNotFound(_0x3be369,null))['then'](function(_0x158c92){if(_0x158c92){return _0x158c92;}return null;})[_0x6549('0x26')](respondWithResult(_0x3be369,null))[_0x6549('0x43')](handleError(_0x3be369,null));};
\ No newline at end of file
+var _0xfdbd=['status','end','json','offset','undefined','count','limit','set','reject','save','update','destroy','then','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','length','find','catch','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','params','noAnswerContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','toString','state\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state','checkContactHopper','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','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'];(function(_0x5bab8e,_0x5a9ed6){var _0x3e14ea=function(_0x3d5948){while(--_0x3d5948){_0x5bab8e['push'](_0x5bab8e['shift']());}};_0x3e14ea(++_0x5a9ed6);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x3763da,_0x58158b){_0x3763da=_0x3763da-0x0;var _0x5d192f=_0xfdbd[_0x3763da];return _0x5d192f;};'use strict';var emlformat=require(_0xdfdb('0x0'));var rimraf=require(_0xdfdb('0x1'));var zipdir=require(_0xdfdb('0x2'));var jsonpatch=require(_0xdfdb('0x3'));var rp=require(_0xdfdb('0x4'));var moment=require(_0xdfdb('0x5'));var BPromise=require(_0xdfdb('0x6'));var Mustache=require(_0xdfdb('0x7'));var util=require(_0xdfdb('0x8'));var path=require('path');var sox=require(_0xdfdb('0x9'));var csv=require('to-csv');var ejs=require(_0xdfdb('0xa'));var fs=require('fs');var fs_extra=require(_0xdfdb('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdfdb('0xc'));var deskjs=require(_0xdfdb('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdfdb('0xe'));var Papa=require(_0xdfdb('0xf'));var Redis=require(_0xdfdb('0x10'));var authService=require(_0xdfdb('0x11'));var qs=require(_0xdfdb('0x12'));var as=require(_0xdfdb('0x13'));var hardwareService=require(_0xdfdb('0x14'));var logger=require('../../config/logger')(_0xdfdb('0x15'));var utils=require(_0xdfdb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xdfdb('0x17'));var db=require(_0xdfdb('0x18'))['db'];function respondWithStatusCode(_0x2bee3b,_0x1918c1){_0x1918c1=_0x1918c1||0xcc;return function(_0x2a95f1){if(_0x2a95f1){return _0x2bee3b[_0xdfdb('0x19')](_0x1918c1);}return _0x2bee3b[_0xdfdb('0x1a')](_0x1918c1)[_0xdfdb('0x1b')]();};}function respondWithResult(_0x51162f,_0x48a66a){_0x48a66a=_0x48a66a||0xc8;return function(_0x2c44dc){if(_0x2c44dc){return _0x51162f['status'](_0x48a66a)[_0xdfdb('0x1c')](_0x2c44dc);}};}function respondWithFilteredResult(_0x9f3039,_0x11a56a){return function(_0x40bc8a){if(_0x40bc8a){var _0x3bfd81=typeof _0x11a56a[_0xdfdb('0x1d')]==='undefined'&&typeof _0x11a56a['limit']===_0xdfdb('0x1e');var _0x8b9193=_0x40bc8a[_0xdfdb('0x1f')];var _0x55ab5a=_0x3bfd81?0x0:_0x11a56a[_0xdfdb('0x1d')];var _0xb677b1=_0x3bfd81?_0x40bc8a[_0xdfdb('0x1f')]:_0x11a56a[_0xdfdb('0x1d')]+_0x11a56a[_0xdfdb('0x20')];var _0x2294de;if(_0xb677b1>=_0x8b9193){_0xb677b1=_0x8b9193;_0x2294de=0xc8;}else{_0x2294de=0xce;}_0x9f3039[_0xdfdb('0x1a')](_0x2294de);return _0x9f3039[_0xdfdb('0x21')]('Content-Range',_0x55ab5a+'-'+_0xb677b1+'/'+_0x8b9193)[_0xdfdb('0x1c')](_0x40bc8a);}return null;};}function patchUpdates(_0xb7417c){return function(_0x172c63){try{jsonpatch['apply'](_0x172c63,_0xb7417c,!![]);}catch(_0x377112){return BPromise[_0xdfdb('0x22')](_0x377112);}return _0x172c63[_0xdfdb('0x23')]();};}function saveUpdates(_0x4d55e5,_0x280e53){return function(_0x789bd2){if(_0x789bd2){return _0x789bd2[_0xdfdb('0x24')](_0x4d55e5)['then'](function(_0x2a80c1){return _0x2a80c1;});}return null;};}function removeEntity(_0x526057,_0x2db1c1){return function(_0x145350){if(_0x145350){return _0x145350[_0xdfdb('0x25')]()[_0xdfdb('0x26')](function(){_0x526057['status'](0xcc)[_0xdfdb('0x1b')]();});}};}function handleEntityNotFound(_0x4363d8,_0x956843){return function(_0x400663){if(!_0x400663){_0x4363d8[_0xdfdb('0x19')](0x194);}return _0x400663;};}function handleError(_0x305954,_0x57d24f){_0x57d24f=_0x57d24f||0x1f4;return function(_0xec4d22){logger[_0xdfdb('0x27')](_0xec4d22[_0xdfdb('0x28')]);if(_0xec4d22['name']){delete _0xec4d22[_0xdfdb('0x29')];}_0x305954['status'](_0x57d24f)[_0xdfdb('0x2a')](_0xec4d22);};}exports[_0xdfdb('0x2b')]=function(_0x19c36f,_0x513fa0){var _0x5bc174={},_0x1c8ca8={},_0xc56435={'count':0x0,'rows':[]};var _0xedbb91=_[_0xdfdb('0x2c')](db[_0xdfdb('0x2d')][_0xdfdb('0x2e')],function(_0x5a9fc4){return{'name':_0x5a9fc4[_0xdfdb('0x2f')],'type':_0x5a9fc4[_0xdfdb('0x30')][_0xdfdb('0x31')]};});_0x1c8ca8[_0xdfdb('0x32')]=_[_0xdfdb('0x2c')](_0xedbb91,_0xdfdb('0x29'));_0x1c8ca8[_0xdfdb('0x33')]=_[_0xdfdb('0x34')](_0x19c36f[_0xdfdb('0x33')]);_0x1c8ca8[_0xdfdb('0x35')]=_[_0xdfdb('0x36')](_0x1c8ca8['model'],_0x1c8ca8['query']);_0x5bc174[_0xdfdb('0x37')]=_['intersection'](_0x1c8ca8[_0xdfdb('0x32')],qs[_0xdfdb('0x38')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x38')]));_0x5bc174['attributes']=_0x5bc174[_0xdfdb('0x37')]['length']?_0x5bc174[_0xdfdb('0x37')]:_0x1c8ca8[_0xdfdb('0x32')];if(!_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x39')](_0xdfdb('0x3a'))){_0x5bc174[_0xdfdb('0x20')]=qs['limit'](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x20')]);_0x5bc174['offset']=qs[_0xdfdb('0x1d')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x1d')]);}_0x5bc174[_0xdfdb('0x3b')]=qs[_0xdfdb('0x3c')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3c')]);_0x5bc174[_0xdfdb('0x3d')]=qs[_0xdfdb('0x35')](_[_0xdfdb('0x3e')](_0x19c36f[_0xdfdb('0x33')],_0x1c8ca8['filters']),_0xedbb91);if(_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3f')]){_0x5bc174[_0xdfdb('0x3d')]=_[_0xdfdb('0x40')](_0x5bc174[_0xdfdb('0x3d')],{'$or':_[_0xdfdb('0x2c')](_0xedbb91,function(_0x3ec73a){if(_0x3ec73a[_0xdfdb('0x30')]!=='VIRTUAL'){var _0x55d707={};_0x55d707[_0x3ec73a[_0xdfdb('0x29')]]={'$like':'%'+_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3f')]+'%'};return _0x55d707;}})});}_0x5bc174=_[_0xdfdb('0x40')]({},_0x5bc174,_0x19c36f[_0xdfdb('0x41')]);var _0x300884={'where':_0x5bc174[_0xdfdb('0x3d')]};return db[_0xdfdb('0x2d')][_0xdfdb('0x1f')](_0x300884)['then'](function(_0x175f57){_0xc56435[_0xdfdb('0x1f')]=_0x175f57;if(_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x42')]){_0x5bc174[_0xdfdb('0x43')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xdfdb('0x44')](_0x5bc174);})[_0xdfdb('0x26')](function(_0x3e9f88){_0xc56435[_0xdfdb('0x45')]=_0x3e9f88;return _0xc56435;})[_0xdfdb('0x26')](respondWithFilteredResult(_0x513fa0,_0x5bc174))['catch'](handleError(_0x513fa0,null));};exports[_0xdfdb('0x46')]=function(_0xd2f8bd,_0xf0482a){var _0x5b4381={'raw':!![],'where':{'id':_0xd2f8bd['params']['id']}},_0x2b5139={};_0x2b5139[_0xdfdb('0x32')]=_['keys'](db[_0xdfdb('0x2d')][_0xdfdb('0x2e')]);_0x2b5139['query']=_[_0xdfdb('0x34')](_0xd2f8bd['query']);_0x2b5139[_0xdfdb('0x35')]=_[_0xdfdb('0x36')](_0x2b5139[_0xdfdb('0x32')],_0x2b5139[_0xdfdb('0x33')]);_0x5b4381[_0xdfdb('0x37')]=_['intersection'](_0x2b5139['model'],qs[_0xdfdb('0x38')](_0xd2f8bd[_0xdfdb('0x33')]['fields']));_0x5b4381[_0xdfdb('0x37')]=_0x5b4381['attributes'][_0xdfdb('0x47')]?_0x5b4381[_0xdfdb('0x37')]:_0x2b5139[_0xdfdb('0x32')];if(_0xd2f8bd[_0xdfdb('0x33')][_0xdfdb('0x42')]){_0x5b4381[_0xdfdb('0x43')]=[{'all':!![]}];}_0x5b4381=_[_0xdfdb('0x40')]({},_0x5b4381,_0xd2f8bd[_0xdfdb('0x41')]);return db[_0xdfdb('0x2d')][_0xdfdb('0x48')](_0x5b4381)[_0xdfdb('0x26')](handleEntityNotFound(_0xf0482a,null))[_0xdfdb('0x26')](respondWithResult(_0xf0482a,null))[_0xdfdb('0x49')](handleError(_0xf0482a,null));};exports[_0xdfdb('0x4a')]=function(_0x1c08fb,_0x273477){return db['CmHopperFinal']['describe']()[_0xdfdb('0x26')](respondWithResult(_0x273477,null))[_0xdfdb('0x49')](handleError(_0x273477,null));};exports[_0xdfdb('0x24')]=function(_0x4bbb88,_0x36149e){if(_0x4bbb88[_0xdfdb('0x4b')][_0xdfdb('0x4c')]){delete _0x4bbb88[_0xdfdb('0x4b')]['uniqueid'];}return db[_0xdfdb('0x2d')][_0xdfdb('0x48')]({'where':{'uniqueid':_0x4bbb88['params']['id']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x36149e,null))[_0xdfdb('0x26')](saveUpdates(_0x4bbb88[_0xdfdb('0x4b')],null))[_0xdfdb('0x26')](respondWithResult(_0x36149e,null))[_0xdfdb('0x49')](handleError(_0x36149e,null));};exports[_0xdfdb('0x4d')]=function(_0x17dfdb,_0x1f5b88,_0x1da7af){return db['CmHopperFinal'][_0xdfdb('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x17dfdb['params']['id']},'attributes':[[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x51')))),_0xdfdb('0x52')],[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x53')))),'noAnswerContacts'],[db[_0xdfdb('0x4e')]['fn']('COUNT',db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x54')))),_0xdfdb('0x55')],[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db['sequelize'][_0xdfdb('0x50')](_0xdfdb('0x56')))),_0xdfdb('0x57')],[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x58')))),_0xdfdb('0x59')],[db['sequelize']['fn']('COUNT',db[_0xdfdb('0x4e')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xdfdb('0x5a')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x5b')))),_0xdfdb('0x5c')],[db[_0xdfdb('0x4e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdfdb('0x4e')]['literal'](_0xdfdb('0x5d')))),_0xdfdb('0x5e')]]})[_0xdfdb('0x26')](handleEntityNotFound(_0x1f5b88,null))['then'](respondWithResult(_0x1f5b88,null))[_0xdfdb('0x49')](handleError(_0x1f5b88,null));};exports[_0xdfdb('0x5f')]=function(_0x349cf7,_0x2f69a8,_0x424212){return db[_0xdfdb('0x2d')][_0xdfdb('0x44')]({'raw':![],'where':{'CampaignId':_0x349cf7[_0xdfdb('0x60')]['id']},'attributes':[[db['sequelize']['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db['sequelize'][_0xdfdb('0x50')](_0xdfdb('0x51')))),_0xdfdb('0x52')],[db[_0xdfdb('0x4e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')]('`state`\x20=\x203,\x201,\x20null'))),_0xdfdb('0x61')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db['sequelize']['fn']('IF',db['sequelize'][_0xdfdb('0x50')](_0xdfdb('0x54')))),'busyContacts'],[db['sequelize']['fn'](_0xdfdb('0x4f'),db['sequelize']['fn']('IF',db['sequelize'][_0xdfdb('0x50')]('`state`\x20=\x208,\x201,\x20null'))),_0xdfdb('0x57')],[db[_0xdfdb('0x4e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xdfdb('0x59')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xdfdb('0x5a')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')]('`state`\x20=\x2022,\x201,\x20null'))),_0xdfdb('0x5c')],[db[_0xdfdb('0x4e')]['fn'](_0xdfdb('0x4f'),db[_0xdfdb('0x4e')]['fn']('IF',db[_0xdfdb('0x4e')][_0xdfdb('0x50')](_0xdfdb('0x5d')))),_0xdfdb('0x5e')]]})[_0xdfdb('0x26')](handleEntityNotFound(_0x2f69a8,null))[_0xdfdb('0x26')](respondWithResult(_0x2f69a8,null))['catch'](handleError(_0x2f69a8,null));};exports[_0xdfdb('0x62')]=function(_0x198cfa,_0x2831d6,_0x45bfc0){return db[_0xdfdb('0x63')]['find']({'where':{'id':_0x198cfa[_0xdfdb('0x60')]['id']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x2831d6,null))[_0xdfdb('0x26')](function(_0x1a31b9){var _0x4999c4;if(_0x1a31b9){_0x4999c4=squel[_0xdfdb('0x64')]()[_0xdfdb('0x65')](_0xdfdb('0x66'))[_0xdfdb('0x67')]([_0xdfdb('0x68'),_0xdfdb('0x69'),_0xdfdb('0x6a'),_0xdfdb('0x6b'),_0xdfdb('0x6c'),_0xdfdb('0x6d'),_0xdfdb('0x6e')],squel['select']()[_0xdfdb('0x6f')](_0xdfdb('0x70'),'phone')[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x69'))['field']('ANY_VALUE(ContactId)','ContactId')[_0xdfdb('0x6f')](_0xdfdb('0x72'),_0xdfdb('0x6b'))[_0xdfdb('0x6f')](_0xdfdb('0x73'),_0xdfdb('0x6c'))[_0xdfdb('0x6f')]('NOW()',_0xdfdb('0x6d'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x6e'))[_0xdfdb('0x74')](_0xdfdb('0x75'))[_0xdfdb('0x3d')]('VoiceQueueId\x20=\x20?',_0x198cfa[_0xdfdb('0x60')]['id'][_0xdfdb('0x76')]())[_0xdfdb('0x3d')](_0xdfdb('0x77'),_0x198cfa[_0xdfdb('0x4b')]['state'][_0xdfdb('0x76')]())['where'](_0xdfdb('0x78'))[_0xdfdb('0x3d')](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')]('phone')[_0xdfdb('0x74')](_0xdfdb('0x66'))['where']('VoiceQueueId\x20=\x20?',_0x198cfa[_0xdfdb('0x60')]['id']['toString']()))['where'](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')](_0xdfdb('0x7b'))[_0xdfdb('0x74')](_0xdfdb('0x75'))[_0xdfdb('0x3d')](_0xdfdb('0x7c'),_0x198cfa['params']['id'][_0xdfdb('0x76')]())['where'](_0xdfdb('0x7d')))[_0xdfdb('0x7e')](_0xdfdb('0x6a')))[_0xdfdb('0x76')]();return db[_0xdfdb('0x4e')]['query'](_0x4999c4);}return[];})[_0xdfdb('0x26')](respondWithResult(_0x2831d6,null))[_0xdfdb('0x49')](handleError(_0x2831d6,null));};exports[_0xdfdb('0x7f')]=function(_0x1b6445,_0x36241c,_0x4c833f){return db['Campaign'][_0xdfdb('0x48')]({'where':{'id':_0x1b6445[_0xdfdb('0x60')]['id']}})['then'](handleEntityNotFound(_0x36241c,null))[_0xdfdb('0x26')](function(_0x50d5d4){var _0x158454;if(_0x50d5d4){_0x158454=squel[_0xdfdb('0x64')]()[_0xdfdb('0x65')]('cm_hopper')[_0xdfdb('0x67')](['phone','scheduledAt',_0xdfdb('0x6a'),'ListId',_0xdfdb('0x80'),_0xdfdb('0x6d'),_0xdfdb('0x6e')],squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')](_0xdfdb('0x70'),_0xdfdb('0x68'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x69'))['field']('ANY_VALUE(ContactId)',_0xdfdb('0x6a'))['field']('ANY_VALUE(ListId)','ListId')['field'](_0xdfdb('0x81'),_0xdfdb('0x80'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x6d'))[_0xdfdb('0x6f')](_0xdfdb('0x71'),_0xdfdb('0x6e'))[_0xdfdb('0x74')](_0xdfdb('0x75'))[_0xdfdb('0x3d')](_0xdfdb('0x82'),_0x1b6445[_0xdfdb('0x60')]['id']['toString']())['where'](_0xdfdb('0x77'),_0x1b6445[_0xdfdb('0x4b')][_0xdfdb('0x83')][_0xdfdb('0x76')]())[_0xdfdb('0x3d')](_0xdfdb('0x78'))[_0xdfdb('0x3d')](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()['field'](_0xdfdb('0x68'))[_0xdfdb('0x74')](_0xdfdb('0x66'))[_0xdfdb('0x3d')](_0xdfdb('0x82'),_0x1b6445[_0xdfdb('0x60')]['id']['toString']()))[_0xdfdb('0x3d')](_0xdfdb('0x79'),squel[_0xdfdb('0x7a')]()[_0xdfdb('0x6f')](_0xdfdb('0x7b'))[_0xdfdb('0x74')]('cm_hopper_final')[_0xdfdb('0x3d')](_0xdfdb('0x82'),_0x1b6445[_0xdfdb('0x60')]['id']['toString']())['where'](_0xdfdb('0x7d')))['group']('ContactId'))[_0xdfdb('0x76')]();return db[_0xdfdb('0x4e')]['query'](_0x158454);}return[];})['then'](respondWithResult(_0x36241c,null))[_0xdfdb('0x49')](handleError(_0x36241c,null));};exports[_0xdfdb('0x84')]=function(_0x1f87d3,_0x1bc293,_0x36b01e){return db['CmHopper']['findOne']({'where':{'VoiceQueueId':_0x1f87d3[_0xdfdb('0x4b')]['VoiceQueueId'],'CampaignId':_0x1f87d3[_0xdfdb('0x4b')][_0xdfdb('0x80')],'ContactId':_0x1f87d3[_0xdfdb('0x4b')]['ContactId']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x1bc293,null))[_0xdfdb('0x26')](function(_0x3e0208){if(_0x3e0208){return _0x3e0208;}return null;})[_0xdfdb('0x26')](respondWithResult(_0x1bc293,null))['catch'](handleError(_0x1bc293,null));};
\ No newline at end of file
index d04c3a3..1b87366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee1=['bluebird','request-promise','path','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x570514,_0x591a89){var _0x1763dc=function(_0xd1e0e5){while(--_0xd1e0e5){_0x570514['push'](_0x570514['shift']());}};_0x1763dc(++_0x591a89);}(_0xfee1,0x164));var _0x1fee=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xfee1[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x1fee('0x0'));var util=require('util');var logger=require(_0x1fee('0x1'))(_0x1fee('0x2'));var moment=require(_0x1fee('0x3'));var BPromise=require(_0x1fee('0x4'));var rp=require(_0x1fee('0x5'));var fs=require('fs');var path=require(_0x1fee('0x6'));var rimraf=require('rimraf');var config=require(_0x1fee('0x7'));var attributes=require(_0x1fee('0x8'));module[_0x1fee('0x9')]=function(_0x545fe7,_0x25099d){return _0x545fe7[_0x1fee('0xa')](_0x1fee('0xb'),attributes,{'tableName':_0x1fee('0xc'),'paranoid':![],'indexes':[{'name':_0x1fee('0xd'),'fields':[_0x1fee('0xd')]},{'name':_0x1fee('0xe'),'fields':[_0x1fee('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0291=['request-promise','path','rimraf','exports','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','util','moment'];(function(_0x74e2c8,_0x22dee3){var _0x3ff12a=function(_0x2d4be5){while(--_0x2d4be5){_0x74e2c8['push'](_0x74e2c8['shift']());}};_0x3ff12a(++_0x22dee3);}(_0x0291,0xda));var _0x1029=function(_0x3d8992,_0x476acd){_0x3d8992=_0x3d8992-0x0;var _0x169fb7=_0x0291[_0x3d8992];return _0x169fb7;};'use strict';var _=require('lodash');var util=require(_0x1029('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x1029('0x1'));var BPromise=require('bluebird');var rp=require(_0x1029('0x2'));var fs=require('fs');var path=require(_0x1029('0x3'));var rimraf=require(_0x1029('0x4'));var config=require('../../config/environment');var attributes=require('./cmHopperFinal.attributes');module[_0x1029('0x5')]=function(_0x342acb,_0x39ea2e){return _0x342acb['define'](_0x1029('0x6'),attributes,{'tableName':_0x1029('0x7'),'paranoid':![],'indexes':[{'name':_0x1029('0x8'),'fields':[_0x1029('0x8')]},{'name':_0x1029('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e8116e7..57578af 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(_0x2a358c,_0x274091){var _0x519406=function(_0x5a0f95){while(--_0x5a0f95){_0x2a358c['push'](_0x2a358c['shift']());}};_0x519406(++_0x274091);}(_0x7a54,0x106));var _0x47a5=function(_0x30688b,_0x26b9b4){_0x30688b=_0x30688b-0x0;var _0x16b201=_0x7a54[_0x30688b];return _0x16b201;};'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(_0x21122c,_0x2f90df){var _0x1e1866=function(_0x306c66){while(--_0x306c66){_0x21122c['push'](_0x21122c['shift']());}};_0x1e1866(++_0x2f90df);}(_0x7a54,0x106));var _0x47a5=function(_0x16bdc1,_0xd9f68c){_0x16bdc1=_0x16bdc1-0x0;var _0x7a192e=_0x7a54[_0x16bdc1];return _0x7a192e;};'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 9cbd23e..3fb3fa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0ee=['../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x52fcd3,_0x1ef880){var _0x13e2fb=function(_0x32832d){while(--_0x32832d){_0x52fcd3['push'](_0x52fcd3['shift']());}};_0x13e2fb(++_0x1ef880);}(_0xb0ee,0x18f));var _0xeb0e=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0xb0ee[_0x5627e1];return _0x2f013f;};'use strict';var multer=require('multer');var util=require(_0xeb0e('0x0'));var path=require(_0xeb0e('0x1'));var timeout=require(_0xeb0e('0x2'));var express=require(_0xeb0e('0x3'));var router=express[_0xeb0e('0x4')]();var fs_extra=require(_0xeb0e('0x5'));var auth=require(_0xeb0e('0x6'));var interaction=require(_0xeb0e('0x7'));var config=require(_0xeb0e('0x8'));var controller=require(_0xeb0e('0x9'));router['get']('/',auth[_0xeb0e('0xa')](),controller[_0xeb0e('0xb')]);router[_0xeb0e('0xc')](_0xeb0e('0xd'),auth['isAuthenticated'](),controller[_0xeb0e('0xe')]);router[_0xeb0e('0xc')](_0xeb0e('0xf'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x10')]);router[_0xeb0e('0xc')](_0xeb0e('0x11'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x12')]);router[_0xeb0e('0xc')](_0xeb0e('0x13'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x14')]);router[_0xeb0e('0x15')](_0xeb0e('0x16'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x17')]);router[_0xeb0e('0x15')]('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller[_0xeb0e('0x18')]);router['post']('/checkContactHopper',auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x19')]);router[_0xeb0e('0x1a')](_0xeb0e('0xf'),auth['isAuthenticated'](),controller[_0xeb0e('0x1b')]);module[_0xeb0e('0x1c')]=router;
\ No newline at end of file
+var _0x060b=['post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer','util','path','../../components/auth/service','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal'];(function(_0xc0141,_0x4f494b){var _0x21d1ae=function(_0x221885){while(--_0x221885){_0xc0141['push'](_0xc0141['shift']());}};_0x21d1ae(++_0x4f494b);}(_0x060b,0x1b3));var _0xb060=function(_0x33a1e2,_0x282771){_0x33a1e2=_0x33a1e2-0x0;var _0x174943=_0x060b[_0x33a1e2];return _0x174943;};'use strict';var multer=require(_0xb060('0x0'));var util=require(_0xb060('0x1'));var path=require(_0xb060('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb060('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb060('0x4'));router[_0xb060('0x5')]('/',auth[_0xb060('0x6')](),controller[_0xb060('0x7')]);router[_0xb060('0x5')](_0xb060('0x8'),auth[_0xb060('0x6')](),controller[_0xb060('0x9')]);router[_0xb060('0x5')](_0xb060('0xa'),auth[_0xb060('0x6')](),controller['show']);router['get'](_0xb060('0xb'),auth['isAuthenticated'](),controller[_0xb060('0xc')]);router[_0xb060('0x5')](_0xb060('0xd'),auth['isAuthenticated'](),controller[_0xb060('0xe')]);router[_0xb060('0xf')](_0xb060('0x10'),auth[_0xb060('0x6')](),controller[_0xb060('0x11')]);router[_0xb060('0xf')](_0xb060('0x12'),auth[_0xb060('0x6')](),controller[_0xb060('0x13')]);router[_0xb060('0xf')](_0xb060('0x14'),auth['isAuthenticated'](),controller[_0xb060('0x15')]);router[_0xb060('0x16')](_0xb060('0xa'),auth[_0xb060('0x6')](),controller[_0xb060('0x17')]);module[_0xb060('0x18')]=router;
\ No newline at end of file
index 1064188..52ef376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64a6=['DATE','BOOLEAN','sequelize','exports','INTEGER','STRING'];(function(_0x25aaa1,_0x8405a3){var _0x2fa2c1=function(_0x1d4efd){while(--_0x1d4efd){_0x25aaa1['push'](_0x25aaa1['shift']());}};_0x2fa2c1(++_0x8405a3);}(_0x64a6,0x1ee));var _0x664a=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x64a6[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require(_0x664a('0x0'));module[_0x664a('0x1')]={'state':{'type':Sequelize[_0x664a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x664a('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x664a('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x664a('0x3')]},'originatecalleridname':{'type':Sequelize[_0x664a('0x3')]},'calleridnum':{'type':Sequelize[_0x664a('0x3')]},'calleridname':{'type':Sequelize[_0x664a('0x3')]},'starttime':{'type':Sequelize[_0x664a('0x4')]},'responsetime':{'type':Sequelize[_0x664a('0x4')]},'answertime':{'type':Sequelize[_0x664a('0x4')]},'droptime':{'type':Sequelize[_0x664a('0x4')]},'endtime':{'type':Sequelize[_0x664a('0x4')]},'ringtime':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x664a('0x3')]},'membername':{'type':Sequelize[_0x664a('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x664a('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x664a('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x664a('0x4')]},'edited':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1284=['INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x5e8a44,_0x4f2319){var _0x263722=function(_0x32ec1f){while(--_0x32ec1f){_0x5e8a44['push'](_0x5e8a44['shift']());}};_0x263722(++_0x4f2319);}(_0x1284,0xe5));var _0x4128=function(_0x3df871,_0xda2e11){_0x3df871=_0x3df871-0x0;var _0x570f7b=_0x1284[_0x3df871];return _0x570f7b;};'use strict';var Sequelize=require(_0x4128('0x0'));module['exports']={'state':{'type':Sequelize[_0x4128('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x4128('0x2')]},'scheduledat':{'type':Sequelize[_0x4128('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x4128('0x2')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x4128('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4128('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x4128('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x4128('0x3')]},'endtime':{'type':Sequelize[_0x4128('0x3')]},'ringtime':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4128('0x2')]},'campaign':{'type':Sequelize[_0x4128('0x2')]},'campaigntype':{'type':Sequelize[_0x4128('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x4128('0x4')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x4128('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x4128('0x3')]},'edited':{'type':Sequelize[_0x4128('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4128('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 013c9ae..6cda616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86a2=['rows','catch','keys','includeAll','include','options','find','create','body','describe','uniqueid','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','error','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','findAll'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x86a2,0x1b0));var _0x286a=function(_0x236f12,_0x4c7faf){_0x236f12=_0x236f12-0x0;var _0x32969a=_0x86a2[_0x236f12];return _0x32969a;};'use strict';var emlformat=require(_0x286a('0x0'));var rimraf=require(_0x286a('0x1'));var zipdir=require(_0x286a('0x2'));var jsonpatch=require(_0x286a('0x3'));var rp=require(_0x286a('0x4'));var moment=require(_0x286a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x286a('0x6'));var util=require(_0x286a('0x7'));var path=require('path');var sox=require(_0x286a('0x8'));var csv=require('to-csv');var ejs=require(_0x286a('0x9'));var fs=require('fs');var fs_extra=require(_0x286a('0xa'));var _=require(_0x286a('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x286a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x286a('0xd'));var Redis=require(_0x286a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x286a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x286a('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x286a('0x11'))['db'];function respondWithStatusCode(_0x1ed638,_0x46a0d3){_0x46a0d3=_0x46a0d3||0xcc;return function(_0x25a9b4){if(_0x25a9b4){return _0x1ed638[_0x286a('0x12')](_0x46a0d3);}return _0x1ed638[_0x286a('0x13')](_0x46a0d3)['end']();};}function respondWithResult(_0x5295b7,_0x65e0d3){_0x65e0d3=_0x65e0d3||0xc8;return function(_0x407077){if(_0x407077){return _0x5295b7[_0x286a('0x13')](_0x65e0d3)['json'](_0x407077);}};}function respondWithFilteredResult(_0x1e2b6b,_0x1c623e){return function(_0x195f97){if(_0x195f97){var _0x5004f5=typeof _0x1c623e[_0x286a('0x14')]===_0x286a('0x15')&&typeof _0x1c623e['limit']===_0x286a('0x15');var _0x14b4be=_0x195f97[_0x286a('0x16')];var _0x403715=_0x5004f5?0x0:_0x1c623e['offset'];var _0x4db460=_0x5004f5?_0x195f97[_0x286a('0x16')]:_0x1c623e[_0x286a('0x14')]+_0x1c623e[_0x286a('0x17')];var _0x20fa21;if(_0x4db460>=_0x14b4be){_0x4db460=_0x14b4be;_0x20fa21=0xc8;}else{_0x20fa21=0xce;}_0x1e2b6b['status'](_0x20fa21);return _0x1e2b6b[_0x286a('0x18')](_0x286a('0x19'),_0x403715+'-'+_0x4db460+'/'+_0x14b4be)[_0x286a('0x1a')](_0x195f97);}return null;};}function patchUpdates(_0x13af5b){return function(_0x4eee41){try{jsonpatch[_0x286a('0x1b')](_0x4eee41,_0x13af5b,!![]);}catch(_0x435bb4){return BPromise[_0x286a('0x1c')](_0x435bb4);}return _0x4eee41[_0x286a('0x1d')]();};}function saveUpdates(_0x5300e1,_0x27fc43){return function(_0x389eef){if(_0x389eef){return _0x389eef[_0x286a('0x1e')](_0x5300e1)[_0x286a('0x1f')](function(_0x86ebe1){return _0x86ebe1;});}return null;};}function removeEntity(_0x4caffb,_0x291524){return function(_0x444a6b){if(_0x444a6b){return _0x444a6b['destroy']()[_0x286a('0x1f')](function(){_0x4caffb[_0x286a('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x179a72,_0x111a03){return function(_0x548d4a){if(!_0x548d4a){_0x179a72[_0x286a('0x12')](0x194);}return _0x548d4a;};}function handleError(_0xac2306,_0x1800d0){_0x1800d0=_0x1800d0||0x1f4;return function(_0x2559a9){logger[_0x286a('0x20')](_0x2559a9['stack']);if(_0x2559a9[_0x286a('0x21')]){delete _0x2559a9[_0x286a('0x21')];}_0xac2306[_0x286a('0x13')](_0x1800d0)[_0x286a('0x22')](_0x2559a9);};}exports[_0x286a('0x23')]=function(_0x63ceaa,_0xd43142){var _0x3fef6f={},_0x1bde43={},_0x46fb8b={'count':0x0,'rows':[]};var _0x3e54d9=_[_0x286a('0x24')](db[_0x286a('0x25')][_0x286a('0x26')],function(_0x1d6590){return{'name':_0x1d6590[_0x286a('0x27')],'type':_0x1d6590['type'][_0x286a('0x28')]};});_0x1bde43[_0x286a('0x29')]=_[_0x286a('0x24')](_0x3e54d9,_0x286a('0x21'));_0x1bde43['query']=_['keys'](_0x63ceaa[_0x286a('0x2a')]);_0x1bde43[_0x286a('0x2b')]=_[_0x286a('0x2c')](_0x1bde43[_0x286a('0x29')],_0x1bde43[_0x286a('0x2a')]);_0x3fef6f[_0x286a('0x2d')]=_[_0x286a('0x2c')](_0x1bde43['model'],qs[_0x286a('0x2e')](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x2e')]));_0x3fef6f[_0x286a('0x2d')]=_0x3fef6f['attributes'][_0x286a('0x2f')]?_0x3fef6f['attributes']:_0x1bde43[_0x286a('0x29')];if(!_0x63ceaa[_0x286a('0x2a')]['hasOwnProperty'](_0x286a('0x30'))){_0x3fef6f[_0x286a('0x17')]=qs['limit'](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x17')]);_0x3fef6f[_0x286a('0x14')]=qs[_0x286a('0x14')](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x14')]);}_0x3fef6f[_0x286a('0x31')]=qs[_0x286a('0x32')](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x32')]);_0x3fef6f[_0x286a('0x33')]=qs['filters'](_[_0x286a('0x34')](_0x63ceaa[_0x286a('0x2a')],_0x1bde43[_0x286a('0x2b')]),_0x3e54d9);if(_0x63ceaa[_0x286a('0x2a')][_0x286a('0x35')]){_0x3fef6f[_0x286a('0x33')]=_['merge'](_0x3fef6f['where'],{'$or':_[_0x286a('0x24')](_0x3e54d9,function(_0x33813f){if(_0x33813f[_0x286a('0x36')]!==_0x286a('0x37')){var _0x5cf750={};_0x5cf750[_0x33813f['name']]={'$like':'%'+_0x63ceaa[_0x286a('0x2a')][_0x286a('0x35')]+'%'};return _0x5cf750;}})});}_0x3fef6f=_[_0x286a('0x38')]({},_0x3fef6f,_0x63ceaa['options']);var _0x466c0a={'where':_0x3fef6f[_0x286a('0x33')]};return db[_0x286a('0x25')][_0x286a('0x16')](_0x466c0a)[_0x286a('0x1f')](function(_0x4e129f){_0x46fb8b[_0x286a('0x16')]=_0x4e129f;if(_0x63ceaa[_0x286a('0x2a')]['includeAll']){_0x3fef6f['include']=[{'all':!![]}];}return db[_0x286a('0x25')][_0x286a('0x39')](_0x3fef6f);})[_0x286a('0x1f')](function(_0x17dd68){_0x46fb8b[_0x286a('0x3a')]=_0x17dd68;return _0x46fb8b;})[_0x286a('0x1f')](respondWithFilteredResult(_0xd43142,_0x3fef6f))[_0x286a('0x3b')](handleError(_0xd43142,null));};exports['show']=function(_0x4c354c,_0x27ea3d){var _0x1091b1={'raw':!![],'where':{'id':_0x4c354c['params']['id']}},_0x2db722={};_0x2db722[_0x286a('0x29')]=_[_0x286a('0x3c')](db['CmHopperHistory'][_0x286a('0x26')]);_0x2db722[_0x286a('0x2a')]=_[_0x286a('0x3c')](_0x4c354c[_0x286a('0x2a')]);_0x2db722[_0x286a('0x2b')]=_[_0x286a('0x2c')](_0x2db722['model'],_0x2db722[_0x286a('0x2a')]);_0x1091b1[_0x286a('0x2d')]=_[_0x286a('0x2c')](_0x2db722['model'],qs['fields'](_0x4c354c['query'][_0x286a('0x2e')]));_0x1091b1[_0x286a('0x2d')]=_0x1091b1[_0x286a('0x2d')][_0x286a('0x2f')]?_0x1091b1['attributes']:_0x2db722['model'];if(_0x4c354c[_0x286a('0x2a')][_0x286a('0x3d')]){_0x1091b1[_0x286a('0x3e')]=[{'all':!![]}];}_0x1091b1=_[_0x286a('0x38')]({},_0x1091b1,_0x4c354c[_0x286a('0x3f')]);return db[_0x286a('0x25')][_0x286a('0x40')](_0x1091b1)['then'](handleEntityNotFound(_0x27ea3d,null))[_0x286a('0x1f')](respondWithResult(_0x27ea3d,null))[_0x286a('0x3b')](handleError(_0x27ea3d,null));};exports[_0x286a('0x41')]=function(_0x892def,_0x53e8f0){return db['CmHopperHistory'][_0x286a('0x41')](_0x892def[_0x286a('0x42')],{})[_0x286a('0x1f')](respondWithResult(_0x53e8f0,0xc9))['catch'](handleError(_0x53e8f0,null));};exports['describe']=function(_0xe4df4b,_0x1a9e79){return db[_0x286a('0x25')][_0x286a('0x43')]()[_0x286a('0x1f')](respondWithResult(_0x1a9e79,null))[_0x286a('0x3b')](handleError(_0x1a9e79,null));};exports[_0x286a('0x1e')]=function(_0x2a1b43,_0xbf0e43){if(_0x2a1b43['body'][_0x286a('0x44')]){delete _0x2a1b43[_0x286a('0x42')][_0x286a('0x44')];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x2a1b43[_0x286a('0x45')]['id']}})['then'](handleEntityNotFound(_0xbf0e43,null))[_0x286a('0x1f')](saveUpdates(_0x2a1b43[_0x286a('0x42')],null))[_0x286a('0x1f')](respondWithResult(_0xbf0e43,null))[_0x286a('0x3b')](handleError(_0xbf0e43,null));};
\ No newline at end of file
+var _0x9dd4=['nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','rawAttributes','intersection','fields','includeAll','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','CmHopperHistory','fieldName','type','key','query','keys','filters','model','attributes','length'];(function(_0x5ec454,_0xfcd77e){var _0x5ebf50=function(_0x29de85){while(--_0x29de85){_0x5ec454['push'](_0x5ec454['shift']());}};_0x5ebf50(++_0xfcd77e);}(_0x9dd4,0xad));var _0x49dd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9dd4[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x49dd('0x0'));var rimraf=require(_0x49dd('0x1'));var zipdir=require(_0x49dd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x49dd('0x3'));var moment=require(_0x49dd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x49dd('0x5'));var util=require('util');var path=require(_0x49dd('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x49dd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x49dd('0x8'));var squel=require('squel');var crypto=require(_0x49dd('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x49dd('0xa'));var toCsv=require('to-csv');var querystring=require(_0x49dd('0xb'));var Papa=require(_0x49dd('0xc'));var Redis=require(_0x49dd('0xd'));var authService=require(_0x49dd('0xe'));var qs=require(_0x49dd('0xf'));var as=require(_0x49dd('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49dd('0x11'))(_0x49dd('0x12'));var utils=require(_0x49dd('0x13'));var config=require(_0x49dd('0x14'));var licenseUtil=require(_0x49dd('0x15'));var db=require(_0x49dd('0x16'))['db'];function respondWithStatusCode(_0x3a485a,_0x57a17c){_0x57a17c=_0x57a17c||0xcc;return function(_0x3dbd8e){if(_0x3dbd8e){return _0x3a485a[_0x49dd('0x17')](_0x57a17c);}return _0x3a485a[_0x49dd('0x18')](_0x57a17c)['end']();};}function respondWithResult(_0x55a4b6,_0x1aec47){_0x1aec47=_0x1aec47||0xc8;return function(_0xb0f13d){if(_0xb0f13d){return _0x55a4b6['status'](_0x1aec47)[_0x49dd('0x19')](_0xb0f13d);}};}function respondWithFilteredResult(_0x5ddf6c,_0x58906a){return function(_0x4ebf41){if(_0x4ebf41){var _0x36d7d9=typeof _0x58906a[_0x49dd('0x1a')]==='undefined'&&typeof _0x58906a['limit']===_0x49dd('0x1b');var _0x2f782e=_0x4ebf41[_0x49dd('0x1c')];var _0x32fdff=_0x36d7d9?0x0:_0x58906a['offset'];var _0x49b5b4=_0x36d7d9?_0x4ebf41[_0x49dd('0x1c')]:_0x58906a[_0x49dd('0x1a')]+_0x58906a['limit'];var _0x265c2a;if(_0x49b5b4>=_0x2f782e){_0x49b5b4=_0x2f782e;_0x265c2a=0xc8;}else{_0x265c2a=0xce;}_0x5ddf6c['status'](_0x265c2a);return _0x5ddf6c[_0x49dd('0x1d')]('Content-Range',_0x32fdff+'-'+_0x49b5b4+'/'+_0x2f782e)['json'](_0x4ebf41);}return null;};}function patchUpdates(_0x512d8a){return function(_0x48347e){try{jsonpatch[_0x49dd('0x1e')](_0x48347e,_0x512d8a,!![]);}catch(_0x19154a){return BPromise[_0x49dd('0x1f')](_0x19154a);}return _0x48347e[_0x49dd('0x20')]();};}function saveUpdates(_0x1aac86,_0x26ceb9){return function(_0x5acee1){if(_0x5acee1){return _0x5acee1[_0x49dd('0x21')](_0x1aac86)[_0x49dd('0x22')](function(_0x584c26){return _0x584c26;});}return null;};}function removeEntity(_0x548c7d,_0x16fa0e){return function(_0x38dd70){if(_0x38dd70){return _0x38dd70[_0x49dd('0x23')]()[_0x49dd('0x22')](function(){_0x548c7d[_0x49dd('0x18')](0xcc)[_0x49dd('0x24')]();});}};}function handleEntityNotFound(_0x3ca50e,_0x453c65){return function(_0x45f3f4){if(!_0x45f3f4){_0x3ca50e['sendStatus'](0x194);}return _0x45f3f4;};}function handleError(_0x2147e2,_0x379cf5){_0x379cf5=_0x379cf5||0x1f4;return function(_0xb3c178){logger['error'](_0xb3c178[_0x49dd('0x25')]);if(_0xb3c178[_0x49dd('0x26')]){delete _0xb3c178[_0x49dd('0x26')];}_0x2147e2['status'](_0x379cf5)[_0x49dd('0x27')](_0xb3c178);};}exports[_0x49dd('0x28')]=function(_0x3ebd9b,_0x109d06){var _0x29ed64={},_0x145988={},_0x3062ac={'count':0x0,'rows':[]};var _0xbb8f80=_[_0x49dd('0x29')](db[_0x49dd('0x2a')]['rawAttributes'],function(_0x3ab8f9){return{'name':_0x3ab8f9[_0x49dd('0x2b')],'type':_0x3ab8f9[_0x49dd('0x2c')][_0x49dd('0x2d')]};});_0x145988['model']=_[_0x49dd('0x29')](_0xbb8f80,_0x49dd('0x26'));_0x145988[_0x49dd('0x2e')]=_[_0x49dd('0x2f')](_0x3ebd9b['query']);_0x145988[_0x49dd('0x30')]=_['intersection'](_0x145988[_0x49dd('0x31')],_0x145988[_0x49dd('0x2e')]);_0x29ed64['attributes']=_['intersection'](_0x145988[_0x49dd('0x31')],qs['fields'](_0x3ebd9b[_0x49dd('0x2e')]['fields']));_0x29ed64[_0x49dd('0x32')]=_0x29ed64[_0x49dd('0x32')][_0x49dd('0x33')]?_0x29ed64[_0x49dd('0x32')]:_0x145988['model'];if(!_0x3ebd9b['query']['hasOwnProperty'](_0x49dd('0x34'))){_0x29ed64[_0x49dd('0x35')]=qs[_0x49dd('0x35')](_0x3ebd9b[_0x49dd('0x2e')]['limit']);_0x29ed64[_0x49dd('0x1a')]=qs[_0x49dd('0x1a')](_0x3ebd9b[_0x49dd('0x2e')]['offset']);}_0x29ed64['order']=qs[_0x49dd('0x36')](_0x3ebd9b['query'][_0x49dd('0x36')]);_0x29ed64[_0x49dd('0x37')]=qs[_0x49dd('0x30')](_[_0x49dd('0x38')](_0x3ebd9b[_0x49dd('0x2e')],_0x145988[_0x49dd('0x30')]),_0xbb8f80);if(_0x3ebd9b[_0x49dd('0x2e')][_0x49dd('0x39')]){_0x29ed64[_0x49dd('0x37')]=_[_0x49dd('0x3a')](_0x29ed64['where'],{'$or':_[_0x49dd('0x29')](_0xbb8f80,function(_0x288c71){if(_0x288c71[_0x49dd('0x2c')]!==_0x49dd('0x3b')){var _0x4f0887={};_0x4f0887[_0x288c71[_0x49dd('0x26')]]={'$like':'%'+_0x3ebd9b[_0x49dd('0x2e')][_0x49dd('0x39')]+'%'};return _0x4f0887;}})});}_0x29ed64=_[_0x49dd('0x3a')]({},_0x29ed64,_0x3ebd9b[_0x49dd('0x3c')]);var _0x4aeddb={'where':_0x29ed64['where']};return db[_0x49dd('0x2a')][_0x49dd('0x1c')](_0x4aeddb)[_0x49dd('0x22')](function(_0x3fd022){_0x3062ac[_0x49dd('0x1c')]=_0x3fd022;if(_0x3ebd9b[_0x49dd('0x2e')]['includeAll']){_0x29ed64[_0x49dd('0x3d')]=[{'all':!![]}];}return db[_0x49dd('0x2a')]['findAll'](_0x29ed64);})['then'](function(_0x35893e){_0x3062ac[_0x49dd('0x3e')]=_0x35893e;return _0x3062ac;})[_0x49dd('0x22')](respondWithFilteredResult(_0x109d06,_0x29ed64))[_0x49dd('0x3f')](handleError(_0x109d06,null));};exports[_0x49dd('0x40')]=function(_0x31489a,_0x4a272a){var _0x9deb7b={'raw':!![],'where':{'id':_0x31489a[_0x49dd('0x41')]['id']}},_0x48c9c2={};_0x48c9c2[_0x49dd('0x31')]=_['keys'](db[_0x49dd('0x2a')][_0x49dd('0x42')]);_0x48c9c2['query']=_['keys'](_0x31489a[_0x49dd('0x2e')]);_0x48c9c2[_0x49dd('0x30')]=_[_0x49dd('0x43')](_0x48c9c2[_0x49dd('0x31')],_0x48c9c2[_0x49dd('0x2e')]);_0x9deb7b[_0x49dd('0x32')]=_[_0x49dd('0x43')](_0x48c9c2[_0x49dd('0x31')],qs[_0x49dd('0x44')](_0x31489a[_0x49dd('0x2e')][_0x49dd('0x44')]));_0x9deb7b[_0x49dd('0x32')]=_0x9deb7b[_0x49dd('0x32')]['length']?_0x9deb7b[_0x49dd('0x32')]:_0x48c9c2['model'];if(_0x31489a[_0x49dd('0x2e')][_0x49dd('0x45')]){_0x9deb7b[_0x49dd('0x3d')]=[{'all':!![]}];}_0x9deb7b=_['merge']({},_0x9deb7b,_0x31489a[_0x49dd('0x3c')]);return db[_0x49dd('0x2a')][_0x49dd('0x46')](_0x9deb7b)[_0x49dd('0x22')](handleEntityNotFound(_0x4a272a,null))['then'](respondWithResult(_0x4a272a,null))[_0x49dd('0x3f')](handleError(_0x4a272a,null));};exports[_0x49dd('0x47')]=function(_0x2cee2b,_0x222864){return db[_0x49dd('0x2a')][_0x49dd('0x47')](_0x2cee2b[_0x49dd('0x48')],{})[_0x49dd('0x22')](respondWithResult(_0x222864,0xc9))[_0x49dd('0x3f')](handleError(_0x222864,null));};exports[_0x49dd('0x49')]=function(_0x47149d,_0xbc3b63){return db['CmHopperHistory'][_0x49dd('0x49')]()[_0x49dd('0x22')](respondWithResult(_0xbc3b63,null))[_0x49dd('0x3f')](handleError(_0xbc3b63,null));};exports['update']=function(_0x25bb38,_0x3834f9){if(_0x25bb38['body'][_0x49dd('0x4a')]){delete _0x25bb38[_0x49dd('0x48')][_0x49dd('0x4a')];}return db[_0x49dd('0x2a')]['find']({'where':{'uniqueid':_0x25bb38['params']['id']}})[_0x49dd('0x22')](handleEntityNotFound(_0x3834f9,null))[_0x49dd('0x22')](saveUpdates(_0x25bb38[_0x49dd('0x48')],null))[_0x49dd('0x22')](respondWithResult(_0x3834f9,null))[_0x49dd('0x3f')](handleError(_0x3834f9,null));};
\ No newline at end of file
index 1fed4bd..373550d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x199d=['./cmHopperHistory.attributes','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x5a4ebb,_0x5459d6){var _0xbb2a27=function(_0x87ac82){while(--_0x87ac82){_0x5a4ebb['push'](_0x5a4ebb['shift']());}};_0xbb2a27(++_0x5459d6);}(_0x199d,0x13d));var _0xd199=function(_0x7791d5,_0xdab65f){_0x7791d5=_0x7791d5-0x0;var _0x5ce288=_0x199d[_0x7791d5];return _0x5ce288;};'use strict';var _=require(_0xd199('0x0'));var util=require(_0xd199('0x1'));var logger=require(_0xd199('0x2'))(_0xd199('0x3'));var moment=require(_0xd199('0x4'));var BPromise=require('bluebird');var rp=require(_0xd199('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd199('0x6'));var config=require(_0xd199('0x7'));var attributes=require(_0xd199('0x8'));module['exports']=function(_0x44dc53,_0x16825f){return _0x44dc53['define'](_0xd199('0x9'),attributes,{'tableName':_0xd199('0xa'),'paranoid':![],'indexes':[{'name':_0xd199('0xb'),'fields':['endtime']},{'name':_0xd199('0xc'),'fields':[_0xd199('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf3a8=['util','../../config/logger','moment','path','../../config/environment','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid'];(function(_0x1df2e6,_0x30b71a){var _0x39b726=function(_0x298c70){while(--_0x298c70){_0x1df2e6['push'](_0x1df2e6['shift']());}};_0x39b726(++_0x30b71a);}(_0xf3a8,0xf2));var _0x8f3a=function(_0x5f1bcc,_0x14673b){_0x5f1bcc=_0x5f1bcc-0x0;var _0x32c72c=_0xf3a8[_0x5f1bcc];return _0x32c72c;};'use strict';var _=require('lodash');var util=require(_0x8f3a('0x0'));var logger=require(_0x8f3a('0x1'))('api');var moment=require(_0x8f3a('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8f3a('0x3'));var rimraf=require('rimraf');var config=require(_0x8f3a('0x4'));var attributes=require('./cmHopperHistory.attributes');module[_0x8f3a('0x5')]=function(_0x3d6e2d,_0x109997){return _0x3d6e2d[_0x8f3a('0x6')](_0x8f3a('0x7'),attributes,{'tableName':_0x8f3a('0x8'),'paranoid':![],'indexes':[{'name':_0x8f3a('0x9'),'fields':[_0x8f3a('0x9')]},{'name':_0x8f3a('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5812dd8..30d7300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8868=['literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','AvgHandleTime','catch','GetVoiceQueueHopperHistory','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','col','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','where','sequelize','COUNT'];(function(_0x5ef9fc,_0x481b7f){var _0x27f8fb=function(_0x3a413a){while(--_0x3a413a){_0x5ef9fc['push'](_0x5ef9fc['shift']());}};_0x27f8fb(++_0x481b7f);}(_0x8868,0x1ca));var _0x8886=function(_0x13bf8e,_0x5641f0){_0x13bf8e=_0x13bf8e-0x0;var _0x20343a=_0x8868[_0x13bf8e];return _0x20343a;};'use strict';var _=require(_0x8886('0x0'));var util=require(_0x8886('0x1'));var moment=require(_0x8886('0x2'));var BPromise=require(_0x8886('0x3'));var rs=require(_0x8886('0x4'));var fs=require('fs');var Redis=require(_0x8886('0x5'));var db=require(_0x8886('0x6'))['db'];var utils=require(_0x8886('0x7'));var logger=require(_0x8886('0x8'))(_0x8886('0x9'));var config=require(_0x8886('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8886('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26b94d,_0x5e2a73,_0x1a85e1){return new BPromise(function(_0x56b9fa,_0x147fc9){return client[_0x8886('0xc')](_0x26b94d,_0x1a85e1)[_0x8886('0xd')](function(_0x39036d){logger[_0x8886('0xe')](_0x8886('0xf'),_0x5e2a73,'request\x20sent');logger[_0x8886('0x10')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x5e2a73,'request\x20sent',JSON[_0x8886('0x11')](_0x39036d));if(_0x39036d['error']){if(_0x39036d[_0x8886('0x12')][_0x8886('0x13')]===0x1f4){logger[_0x8886('0x12')](_0x8886('0xf'),_0x5e2a73,_0x39036d['error'][_0x8886('0x14')]);return _0x147fc9(_0x39036d[_0x8886('0x12')]['message']);}logger[_0x8886('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x5e2a73,_0x39036d[_0x8886('0x12')][_0x8886('0x14')]);return _0x56b9fa(_0x39036d[_0x8886('0x12')][_0x8886('0x14')]);}else{logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x5e2a73,_0x8886('0x15'));_0x56b9fa(_0x39036d[_0x8886('0x16')]['message']);}})['catch'](function(_0x563a82){logger['error'](_0x8886('0xf'),_0x5e2a73,_0x563a82);_0x147fc9(_0x563a82);});});}exports[_0x8886('0x17')]=function(_0x1d47a6){var _0x5504ab=this;return new Promise(function(_0xb13c62,_0x20072e){return db[_0x8886('0x18')][_0x8886('0x19')](_0x1d47a6[_0x8886('0x1a')],{'raw':_0x1d47a6[_0x8886('0x1b')]?_0x1d47a6[_0x8886('0x1b')][_0x8886('0x1c')]===undefined?!![]:![]:!![]})[_0x8886('0xd')](function(_0x19f0ef){logger['info'](_0x8886('0x17'),_0x1d47a6);logger['debug'](_0x8886('0x17'),_0x1d47a6,JSON[_0x8886('0x11')](_0x19f0ef));_0xb13c62(_0x19f0ef);})['catch'](function(_0x3894a0){logger[_0x8886('0x12')](_0x8886('0x17'),_0x3894a0[_0x8886('0x14')],_0x1d47a6);_0x20072e(_0x5504ab[_0x8886('0x12')](0x1f4,_0x3894a0[_0x8886('0x14')]));});});};exports['AvgHandleTime']=function(_0x3df299){var _0x5cf7d9=this;return new Promise(function(_0x25f350,_0x32e265){return db[_0x8886('0x18')]['findAll']({'raw':_0x3df299[_0x8886('0x1b')]?_0x3df299['options'][_0x8886('0x1c')]===undefined?!![]:![]:!![],'where':_0x3df299[_0x8886('0x1b')]?_0x3df299[_0x8886('0x1b')][_0x8886('0x1d')]||null:null,'attributes':[[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['col']('id')),'predictiveIntervalTotalCalls'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x21')))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x22')))),_0x8886('0x23')],[db[_0x8886('0x1e')]['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x2011,\x201,\x20null'))),_0x8886('0x24')],[db['sequelize']['fn'](_0x8886('0x25'),db[_0x8886('0x1e')]['fn']('IF',db['sequelize'][_0x8886('0x20')](_0x8886('0x26')))),_0x8886('0x27')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x25'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x28')))),_0x8886('0x29')]]})[_0x8886('0xd')](function(_0x3db25d){logger[_0x8886('0xe')](_0x8886('0x2a'),_0x3df299);logger['debug'](_0x8886('0x2a'),_0x3df299,JSON[_0x8886('0x11')](_0x3db25d));_0x25f350(_0x3db25d);})[_0x8886('0x2b')](function(_0x314cd2){logger[_0x8886('0x12')]('AvgHandleTime',_0x314cd2[_0x8886('0x14')],_0x3df299);_0x32e265(_0x5cf7d9[_0x8886('0x12')](0x1f4,_0x314cd2[_0x8886('0x14')]));});});};exports[_0x8886('0x2c')]=function(_0x105501){var _0x1f918a=this;return new Promise(function(_0x4724fe,_0x487f30){return db[_0x8886('0x18')][_0x8886('0x2d')]({'raw':_0x105501['options']?_0x105501['options'][_0x8886('0x1c')]===undefined?!![]:![]:!![],'where':_0x105501[_0x8886('0x1b')]?_0x105501['options']['where']||null:null,'attributes':[[_0x8886('0x2e'),_0x8886('0x2f')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x30')))),'outboundNoSuchCallsDay'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x203,\x201,\x20null'))),_0x8886('0x31')],[db[_0x8886('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x8886('0x20')](_0x8886('0x21')))),_0x8886('0x32')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal']('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x33')))),_0x8886('0x34')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db['sequelize'][_0x8886('0x20')](_0x8886('0x35')))),_0x8886('0x36')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x37')))),_0x8886('0x38')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x39')))),_0x8886('0x3a')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x2014,\x201,\x20null'))),_0x8886('0x3b')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x3c')))),'outboundRejectCallsDay'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db['sequelize'][_0x8886('0x20')]('`state`\x20=\x2016,\x201,\x20null'))),_0x8886('0x3d')],[db[_0x8886('0x1e')]['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x8886('0x3e')))),_0x8886('0x3f')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x40')))),_0x8886('0x41')]],'group':[_0x8886('0x2e')]})['then'](function(_0x2824b3){logger[_0x8886('0xe')](_0x8886('0x2c'),_0x105501);logger[_0x8886('0x10')](_0x8886('0x2c'),_0x105501,JSON[_0x8886('0x11')](_0x2824b3));_0x4724fe(_0x2824b3);})[_0x8886('0x2b')](function(_0x21db9d){logger[_0x8886('0x12')](_0x8886('0x2c'),_0x21db9d[_0x8886('0x14')],_0x105501);_0x487f30(_0x1f918a[_0x8886('0x12')](0x1f4,_0x21db9d[_0x8886('0x14')]));});});};exports[_0x8886('0x42')]=function(_0x52fdb3){var _0x508bb3=this;return new Promise(function(_0x4c699a,_0x4c251a){return db[_0x8886('0x18')]['findAll']({'raw':_0x52fdb3[_0x8886('0x1b')]?_0x52fdb3['options'][_0x8886('0x1c')]===undefined?!![]:![]:!![],'where':_0x52fdb3[_0x8886('0x1b')]?_0x52fdb3[_0x8886('0x1b')][_0x8886('0x1d')]||null:null,'attributes':[['campaign',_0x8886('0x2f')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize'][_0x8886('0x43')]('id')),_0x8886('0x44')],[db[_0x8886('0x1e')]['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x21')))),_0x8886('0x45')]],'group':[_0x8886('0x2e')]})[_0x8886('0xd')](function(_0x2b0908){logger['info'](_0x8886('0x42'),_0x52fdb3);logger[_0x8886('0x10')]('GetCampaignHopperHistory',_0x52fdb3,JSON[_0x8886('0x11')](_0x2b0908));_0x4c699a(_0x2b0908);})[_0x8886('0x2b')](function(_0x1f9df0){logger[_0x8886('0x12')]('GetCampaignHopperHistory',_0x1f9df0[_0x8886('0x14')],_0x52fdb3);_0x4c251a(_0x508bb3['error'](0x1f4,_0x1f9df0[_0x8886('0x14')]));});});};
\ No newline at end of file
+var _0x9c02=['`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','GetVoiceQueueHopperHistory','col','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','../../config/utils','rpc','jayson/promise','http','request','then','info','debug','request\x20sent','stringify','error','code','message','CmHopperHistory,\x20%s,\x20%s','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','AvgHandleTime','findAll','where','sequelize','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','name'];(function(_0x9030dd,_0x279036){var _0x5f1917=function(_0x12437d){while(--_0x12437d){_0x9030dd['push'](_0x9030dd['shift']());}};_0x5f1917(++_0x279036);}(_0x9c02,0x196));var _0x29c0=function(_0x168a5e,_0xda080c){_0x168a5e=_0x168a5e-0x0;var _0x2bd1fd=_0x9c02[_0x168a5e];return _0x2bd1fd;};'use strict';var _=require(_0x29c0('0x0'));var util=require(_0x29c0('0x1'));var moment=require(_0x29c0('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(_0x29c0('0x3'));var logger=require('../../config/logger')(_0x29c0('0x4'));var config=require('../../config/environment');var jayson=require(_0x29c0('0x5'));var client=jayson['client'][_0x29c0('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x308869,_0x1ac647,_0x5beeb6){return new BPromise(function(_0x58fa3e,_0x18c44c){return client[_0x29c0('0x7')](_0x308869,_0x5beeb6)[_0x29c0('0x8')](function(_0x2e83cb){logger[_0x29c0('0x9')]('CmHopperHistory,\x20%s,\x20%s',_0x1ac647,'request\x20sent');logger[_0x29c0('0xa')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x1ac647,_0x29c0('0xb'),JSON[_0x29c0('0xc')](_0x2e83cb));if(_0x2e83cb[_0x29c0('0xd')]){if(_0x2e83cb[_0x29c0('0xd')][_0x29c0('0xe')]===0x1f4){logger[_0x29c0('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0x1ac647,_0x2e83cb[_0x29c0('0xd')][_0x29c0('0xf')]);return _0x18c44c(_0x2e83cb[_0x29c0('0xd')][_0x29c0('0xf')]);}logger[_0x29c0('0xd')](_0x29c0('0x10'),_0x1ac647,_0x2e83cb[_0x29c0('0xd')][_0x29c0('0xf')]);return _0x58fa3e(_0x2e83cb[_0x29c0('0xd')][_0x29c0('0xf')]);}else{logger[_0x29c0('0x9')](_0x29c0('0x10'),_0x1ac647,_0x29c0('0xb'));_0x58fa3e(_0x2e83cb[_0x29c0('0x11')][_0x29c0('0xf')]);}})[_0x29c0('0x12')](function(_0x6a0177){logger[_0x29c0('0xd')](_0x29c0('0x10'),_0x1ac647,_0x6a0177);_0x18c44c(_0x6a0177);});});}exports[_0x29c0('0x13')]=function(_0x627c4c){var _0x281597=this;return new Promise(function(_0x2bfa71,_0x429b88){return db[_0x29c0('0x14')][_0x29c0('0x15')](_0x627c4c[_0x29c0('0x16')],{'raw':_0x627c4c['options']?_0x627c4c[_0x29c0('0x17')][_0x29c0('0x18')]===undefined?!![]:![]:!![]})[_0x29c0('0x8')](function(_0x3c3eb2){logger[_0x29c0('0x9')](_0x29c0('0x13'),_0x627c4c);logger['debug'](_0x29c0('0x13'),_0x627c4c,JSON[_0x29c0('0xc')](_0x3c3eb2));_0x2bfa71(_0x3c3eb2);})[_0x29c0('0x12')](function(_0x26bf2e){logger[_0x29c0('0xd')]('CreateCmHopperHistory',_0x26bf2e[_0x29c0('0xf')],_0x627c4c);_0x429b88(_0x281597[_0x29c0('0xd')](0x1f4,_0x26bf2e['message']));});});};exports[_0x29c0('0x19')]=function(_0x402c54){var _0x3698fe=this;return new Promise(function(_0x5d7a2a,_0x1993a5){return db['CmHopperHistory'][_0x29c0('0x1a')]({'raw':_0x402c54[_0x29c0('0x17')]?_0x402c54['options'][_0x29c0('0x18')]===undefined?!![]:![]:!![],'where':_0x402c54[_0x29c0('0x17')]?_0x402c54[_0x29c0('0x17')][_0x29c0('0x1b')]||null:null,'attributes':[[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db['sequelize']['col']('id')),'predictiveIntervalTotalCalls'],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0x29c0('0x1e')](_0x29c0('0x1f')))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')]('`state`\x20=\x2010,\x201,\x20null'))),_0x29c0('0x20')],[db[_0x29c0('0x1c')]['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x21')))),_0x29c0('0x22')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x23'),db['sequelize']['fn']('IF',db['sequelize'][_0x29c0('0x1e')](_0x29c0('0x24')))),_0x29c0('0x25')],[db['sequelize']['fn'](_0x29c0('0x23'),db[_0x29c0('0x1c')]['fn']('IF',db['sequelize']['literal'](_0x29c0('0x26')))),_0x29c0('0x27')]]})[_0x29c0('0x8')](function(_0x15e860){logger[_0x29c0('0x9')](_0x29c0('0x19'),_0x402c54);logger[_0x29c0('0xa')]('AvgHandleTime',_0x402c54,JSON[_0x29c0('0xc')](_0x15e860));_0x5d7a2a(_0x15e860);})['catch'](function(_0x7397d6){logger[_0x29c0('0xd')](_0x29c0('0x19'),_0x7397d6['message'],_0x402c54);_0x1993a5(_0x3698fe[_0x29c0('0xd')](0x1f4,_0x7397d6[_0x29c0('0xf')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x2e41dc){var _0x434404=this;return new Promise(function(_0x135867,_0x28c919){return db[_0x29c0('0x14')][_0x29c0('0x1a')]({'raw':_0x2e41dc[_0x29c0('0x17')]?_0x2e41dc[_0x29c0('0x17')][_0x29c0('0x18')]===undefined?!![]:![]:!![],'where':_0x2e41dc[_0x29c0('0x17')]?_0x2e41dc[_0x29c0('0x17')][_0x29c0('0x1b')]||null:null,'attributes':[[_0x29c0('0x28'),_0x29c0('0x29')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x2a')))),_0x29c0('0x2b')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db['sequelize']['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x2c')))),_0x29c0('0x2d')],[db[_0x29c0('0x1c')]['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')]('`state`\x20=\x204,\x201,\x20null'))),_0x29c0('0x2e')],[db[_0x29c0('0x1c')]['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db['sequelize'][_0x29c0('0x1e')]('`state`\x20=\x205,\x201,\x20null'))),_0x29c0('0x2f')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')]('`state`\x20=\x208,\x201,\x20null'))),'outboundCongestionCallsDay'],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db['sequelize']['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x30')))),_0x29c0('0x31')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x32')))),_0x29c0('0x33')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')]('`state`\x20=\x2012,\x201,\x20null'))),_0x29c0('0x34')],[db[_0x29c0('0x1c')]['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')]['literal'](_0x29c0('0x35')))),'outboundBlacklistCallsDay'],[db[_0x29c0('0x1c')]['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')]('`state`\x20=\x2014,\x201,\x20null'))),_0x29c0('0x36')],[db['sequelize']['fn'](_0x29c0('0x1d'),db['sequelize']['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x37')))),_0x29c0('0x38')],[db[_0x29c0('0x1c')]['fn']('COUNT',db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')]['literal'](_0x29c0('0x39')))),_0x29c0('0x3a')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')]['literal'](_0x29c0('0x3b')))),_0x29c0('0x38')],[db['sequelize']['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db['sequelize'][_0x29c0('0x1e')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0x29c0('0x28')]})['then'](function(_0x271709){logger[_0x29c0('0x9')](_0x29c0('0x3c'),_0x2e41dc);logger[_0x29c0('0xa')](_0x29c0('0x3c'),_0x2e41dc,JSON['stringify'](_0x271709));_0x135867(_0x271709);})['catch'](function(_0x2e3f93){logger['error'](_0x29c0('0x3c'),_0x2e3f93[_0x29c0('0xf')],_0x2e41dc);_0x28c919(_0x434404['error'](0x1f4,_0x2e3f93[_0x29c0('0xf')]));});});};exports['GetCampaignHopperHistory']=function(_0x1bffe8){var _0x4bc7df=this;return new Promise(function(_0x102cd0,_0x3c22ee){return db['CmHopperHistory']['findAll']({'raw':_0x1bffe8['options']?_0x1bffe8[_0x29c0('0x17')][_0x29c0('0x18')]===undefined?!![]:![]:!![],'where':_0x1bffe8['options']?_0x1bffe8['options'][_0x29c0('0x1b')]||null:null,'attributes':[[_0x29c0('0x28'),_0x29c0('0x29')],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db['sequelize'][_0x29c0('0x3d')]('id')),'ivrTotalCallsDays'],[db[_0x29c0('0x1c')]['fn'](_0x29c0('0x1d'),db[_0x29c0('0x1c')]['fn']('IF',db[_0x29c0('0x1c')][_0x29c0('0x1e')](_0x29c0('0x1f')))),_0x29c0('0x3e')]],'group':[_0x29c0('0x28')]})[_0x29c0('0x8')](function(_0x48f8a8){logger['info'](_0x29c0('0x3f'),_0x1bffe8);logger[_0x29c0('0xa')](_0x29c0('0x3f'),_0x1bffe8,JSON[_0x29c0('0xc')](_0x48f8a8));_0x102cd0(_0x48f8a8);})['catch'](function(_0x5aa6df){logger[_0x29c0('0xd')](_0x29c0('0x3f'),_0x5aa6df[_0x29c0('0xf')],_0x1bffe8);_0x3c22ee(_0x4bc7df['error'](0x1f4,_0x5aa6df['message']));});});};
\ No newline at end of file
index 2d519a1..0d68d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f23=['exports','multer','util','path','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put'];(function(_0x2931e6,_0x30a18d){var _0x214c89=function(_0x1591ec){while(--_0x1591ec){_0x2931e6['push'](_0x2931e6['shift']());}};_0x214c89(++_0x30a18d);}(_0x5f23,0x1d2));var _0x35f2=function(_0x445a3d,_0x4120ce){_0x445a3d=_0x445a3d-0x0;var _0x59ec30=_0x5f23[_0x445a3d];return _0x59ec30;};'use strict';var multer=require(_0x35f2('0x0'));var util=require(_0x35f2('0x1'));var path=require(_0x35f2('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x35f2('0x3'));var config=require(_0x35f2('0x4'));var controller=require(_0x35f2('0x5'));router[_0x35f2('0x6')]('/',auth[_0x35f2('0x7')](),controller[_0x35f2('0x8')]);router['get'](_0x35f2('0x9'),auth[_0x35f2('0x7')](),controller[_0x35f2('0xa')]);router[_0x35f2('0x6')](_0x35f2('0xb'),auth[_0x35f2('0x7')](),controller['show']);router[_0x35f2('0xc')]('/',auth[_0x35f2('0x7')](),controller['create']);router[_0x35f2('0xd')](_0x35f2('0xb'),auth[_0x35f2('0x7')](),controller['update']);module[_0x35f2('0xe')]=router;
\ No newline at end of file
+var _0xa578=['get','isAuthenticated','/describe','describe','/:id','show','post','put','update','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller'];(function(_0x2a0e5f,_0x2e57f3){var _0x2e63e6=function(_0x571935){while(--_0x571935){_0x2a0e5f['push'](_0x2a0e5f['shift']());}};_0x2e63e6(++_0x2e57f3);}(_0xa578,0xac));var _0x8a57=function(_0x371983,_0x15e1a9){_0x371983=_0x371983-0x0;var _0x77046f=_0xa578[_0x371983];return _0x77046f;};'use strict';var multer=require(_0x8a57('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8a57('0x1'));var router=express[_0x8a57('0x2')]();var fs_extra=require(_0x8a57('0x3'));var auth=require(_0x8a57('0x4'));var interaction=require(_0x8a57('0x5'));var config=require(_0x8a57('0x6'));var controller=require(_0x8a57('0x7'));router[_0x8a57('0x8')]('/',auth[_0x8a57('0x9')](),controller['index']);router[_0x8a57('0x8')](_0x8a57('0xa'),auth[_0x8a57('0x9')](),controller[_0x8a57('0xb')]);router[_0x8a57('0x8')](_0x8a57('0xc'),auth[_0x8a57('0x9')](),controller[_0x8a57('0xd')]);router[_0x8a57('0xe')]('/',auth[_0x8a57('0x9')](),controller['create']);router[_0x8a57('0xf')](_0x8a57('0xc'),auth[_0x8a57('0x9')](),controller[_0x8a57('0x10')]);module[_0x8a57('0x11')]=router;
\ No newline at end of file
index ad53006..35b6003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121d=['STRING','name','sequelize','exports'];(function(_0x26c5df,_0x7900e){var _0x1e4580=function(_0x14368f){while(--_0x14368f){_0x26c5df['push'](_0x26c5df['shift']());}};_0x1e4580(++_0x7900e);}(_0x121d,0xea));var _0xd121=function(_0x13cfc3,_0x3720e8){_0x13cfc3=_0x13cfc3-0x0;var _0x41a490=_0x121d[_0x13cfc3];return _0x41a490;};'use strict';var Sequelize=require(_0xd121('0x0'));module[_0xd121('0x1')]={'name':{'type':Sequelize[_0xd121('0x2')],'unique':_0xd121('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd121('0x2')]},'dialPrefix':{'type':Sequelize[_0xd121('0x2')]}};
\ No newline at end of file
+var _0xc4f5=['exports','STRING','name'];(function(_0x5da875,_0x475a8b){var _0x25d687=function(_0xb8a423){while(--_0xb8a423){_0x5da875['push'](_0x5da875['shift']());}};_0x25d687(++_0x475a8b);}(_0xc4f5,0xa5));var _0x5c4f=function(_0x2724e5,_0x229d74){_0x2724e5=_0x2724e5-0x0;var _0x4b6621=_0xc4f5[_0x2724e5];return _0x4b6621;};'use strict';var Sequelize=require('sequelize');module[_0x5c4f('0x0')]={'name':{'type':Sequelize[_0x5c4f('0x1')],'unique':_0x5c4f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x5c4f('0x1')]}};
\ No newline at end of file
index e6998da..19d7fa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37fb=['reject','save','update','then','UserProfileResource','destroy','error','name','send','map','CmList','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','merge','filter','includeAll','findAll','rows','catch','params','rawAttributes','include','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Lists','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ListId','getDispositions','findOne','Disposition','nolimit','removeDispositions','ids','addContacts','tags','isArray','join','each','CmContact','omit','success','push','errors','message','getContacts','CustomFields','format','cf_%d','order','raw','getContactsCsv','CmCustomField','concat','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','zip-dir','request-promise','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/license/util','../../mysqldb','redis','defaults','./cmList.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0xe0e176,_0x198335){var _0x453fcd=function(_0x205d65){while(--_0x205d65){_0xe0e176['push'](_0xe0e176['shift']());}};_0x453fcd(++_0x198335);}(_0x37fb,0xf9));var _0xb37f=function(_0xf7077d,_0x309ea1){_0xf7077d=_0xf7077d-0x0;var _0x19ff53=_0x37fb[_0xf7077d];return _0x19ff53;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb37f('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb37f('0x1'));var moment=require('moment');var BPromise=require(_0xb37f('0x2'));var Mustache=require(_0xb37f('0x3'));var util=require(_0xb37f('0x4'));var path=require(_0xb37f('0x5'));var sox=require(_0xb37f('0x6'));var csv=require('to-csv');var ejs=require(_0xb37f('0x7'));var fs=require('fs');var fs_extra=require(_0xb37f('0x8'));var _=require(_0xb37f('0x9'));var squel=require(_0xb37f('0xa'));var crypto=require('crypto');var jsforce=require(_0xb37f('0xb'));var deskjs=require(_0xb37f('0xc'));var toCsv=require(_0xb37f('0xd'));var querystring=require(_0xb37f('0xe'));var Papa=require(_0xb37f('0xf'));var Redis=require(_0xb37f('0x10'));var authService=require(_0xb37f('0x11'));var qs=require(_0xb37f('0x12'));var as=require(_0xb37f('0x13'));var hardwareService=require(_0xb37f('0x14'));var logger=require(_0xb37f('0x15'))(_0xb37f('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb37f('0x17'));var db=require(_0xb37f('0x18'))['db'];config[_0xb37f('0x19')]=_[_0xb37f('0x1a')](config[_0xb37f('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb37f('0x19')]));require(_0xb37f('0x1b'))[_0xb37f('0x1c')](socket);function respondWithStatusCode(_0x36b5ea,_0x3fefee){_0x3fefee=_0x3fefee||0xcc;return function(_0x3ef4bc){if(_0x3ef4bc){return _0x36b5ea[_0xb37f('0x1d')](_0x3fefee);}return _0x36b5ea[_0xb37f('0x1e')](_0x3fefee)[_0xb37f('0x1f')]();};}function respondWithResult(_0xaaea8d,_0x1e7175){_0x1e7175=_0x1e7175||0xc8;return function(_0x431c3e){if(_0x431c3e){return _0xaaea8d[_0xb37f('0x1e')](_0x1e7175)['json'](_0x431c3e);}};}function respondWithFilteredResult(_0x49c94f,_0x190431){return function(_0x1b84ac){if(_0x1b84ac){var _0x3c8f17=typeof _0x190431[_0xb37f('0x20')]===_0xb37f('0x21')&&typeof _0x190431[_0xb37f('0x22')]==='undefined';var _0x1cb4aa=_0x1b84ac[_0xb37f('0x23')];var _0x18617d=_0x3c8f17?0x0:_0x190431[_0xb37f('0x20')];var _0x3397bd=_0x3c8f17?_0x1b84ac[_0xb37f('0x23')]:_0x190431['offset']+_0x190431[_0xb37f('0x22')];var _0x546720;if(_0x3397bd>=_0x1cb4aa){_0x3397bd=_0x1cb4aa;_0x546720=0xc8;}else{_0x546720=0xce;}_0x49c94f[_0xb37f('0x1e')](_0x546720);return _0x49c94f[_0xb37f('0x24')](_0xb37f('0x25'),_0x18617d+'-'+_0x3397bd+'/'+_0x1cb4aa)['json'](_0x1b84ac);}return null;};}function patchUpdates(_0xbfb39b){return function(_0x2ac62b){try{jsonpatch[_0xb37f('0x26')](_0x2ac62b,_0xbfb39b,!![]);}catch(_0x4618a4){return BPromise[_0xb37f('0x27')](_0x4618a4);}return _0x2ac62b[_0xb37f('0x28')]();};}function saveUpdates(_0x4a1ca9,_0x56fcea){return function(_0x55a4db){if(_0x55a4db){return _0x55a4db[_0xb37f('0x29')](_0x4a1ca9)[_0xb37f('0x2a')](function(_0x3ad6cc){return _0x3ad6cc;});}return null;};}function removeEntity(_0x9d46e2,_0x4093d0){return function(_0x4329b3){if(_0x4329b3){return _0x4329b3['destroy']()[_0xb37f('0x2a')](function(){var _0x1b6222=_0x4329b3['get']({'plain':!![]});var _0xf7a072='Lists';return db[_0xb37f('0x2b')][_0xb37f('0x2c')]({'where':{'type':_0xf7a072,'resourceId':_0x1b6222['id']}})['then'](function(){return _0x4329b3;});})[_0xb37f('0x2a')](function(){_0x9d46e2[_0xb37f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x382d28,_0x455109){return function(_0x470619){if(!_0x470619){_0x382d28[_0xb37f('0x1d')](0x194);}return _0x470619;};}function handleError(_0x20a69b,_0x30d500){_0x30d500=_0x30d500||0x1f4;return function(_0x44881d){logger[_0xb37f('0x2d')](_0x44881d['stack']);if(_0x44881d[_0xb37f('0x2e')]){delete _0x44881d[_0xb37f('0x2e')];}_0x20a69b[_0xb37f('0x1e')](_0x30d500)[_0xb37f('0x2f')](_0x44881d);};}exports['index']=function(_0x12364f,_0x225d09){var _0x78fb17={},_0x21bc2d={},_0x12485={'count':0x0,'rows':[]};var _0x4cd0a5=_[_0xb37f('0x30')](db[_0xb37f('0x31')]['rawAttributes'],function(_0xc8d781){return{'name':_0xc8d781['fieldName'],'type':_0xc8d781[_0xb37f('0x32')][_0xb37f('0x33')]};});_0x21bc2d[_0xb37f('0x34')]=_[_0xb37f('0x30')](_0x4cd0a5,'name');_0x21bc2d[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x12364f[_0xb37f('0x35')]);_0x21bc2d['filters']=_[_0xb37f('0x37')](_0x21bc2d[_0xb37f('0x34')],_0x21bc2d[_0xb37f('0x35')]);_0x78fb17[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x21bc2d[_0xb37f('0x34')],qs['fields'](_0x12364f[_0xb37f('0x35')][_0xb37f('0x39')]));_0x78fb17[_0xb37f('0x38')]=_0x78fb17[_0xb37f('0x38')][_0xb37f('0x3a')]?_0x78fb17[_0xb37f('0x38')]:_0x21bc2d[_0xb37f('0x34')];if(!_0x12364f[_0xb37f('0x35')][_0xb37f('0x3b')]('nolimit')){_0x78fb17['limit']=qs['limit'](_0x12364f[_0xb37f('0x35')][_0xb37f('0x22')]);_0x78fb17[_0xb37f('0x20')]=qs['offset'](_0x12364f[_0xb37f('0x35')]['offset']);}_0x78fb17['order']=qs[_0xb37f('0x3c')](_0x12364f['query'][_0xb37f('0x3c')]);_0x78fb17[_0xb37f('0x3d')]=qs[_0xb37f('0x3e')](_[_0xb37f('0x3f')](_0x12364f['query'],_0x21bc2d[_0xb37f('0x3e')]),_0x4cd0a5);if(_0x12364f['query']['filter']){_0x78fb17[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x78fb17[_0xb37f('0x3d')],{'$or':_['map'](_0x4cd0a5,function(_0x15c3b3){if(_0x15c3b3[_0xb37f('0x32')]!=='VIRTUAL'){var _0x5bb89e={};_0x5bb89e[_0x15c3b3[_0xb37f('0x2e')]]={'$like':'%'+_0x12364f[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x5bb89e;}})});}_0x78fb17=_[_0xb37f('0x40')]({},_0x78fb17,_0x12364f['options']);var _0x21dd37={'where':_0x78fb17[_0xb37f('0x3d')]};return db['CmList'][_0xb37f('0x23')](_0x21dd37)[_0xb37f('0x2a')](function(_0x4ea98c){_0x12485[_0xb37f('0x23')]=_0x4ea98c;if(_0x12364f[_0xb37f('0x35')][_0xb37f('0x42')]){_0x78fb17['include']=[{'all':!![]}];}return db[_0xb37f('0x31')][_0xb37f('0x43')](_0x78fb17);})['then'](function(_0x584f52){_0x12485[_0xb37f('0x44')]=_0x584f52;return _0x12485;})[_0xb37f('0x2a')](respondWithFilteredResult(_0x225d09,_0x78fb17))[_0xb37f('0x45')](handleError(_0x225d09,null));};exports['show']=function(_0x4646ea,_0x36b27f){var _0x2f9cde={'raw':![],'where':{'id':_0x4646ea[_0xb37f('0x46')]['id']}},_0x1d5381={};_0x1d5381[_0xb37f('0x34')]=_[_0xb37f('0x36')](db[_0xb37f('0x31')][_0xb37f('0x47')]);_0x1d5381['query']=_['keys'](_0x4646ea[_0xb37f('0x35')]);_0x1d5381[_0xb37f('0x3e')]=_['intersection'](_0x1d5381[_0xb37f('0x34')],_0x1d5381[_0xb37f('0x35')]);_0x2f9cde[_0xb37f('0x38')]=_['intersection'](_0x1d5381[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0x4646ea[_0xb37f('0x35')][_0xb37f('0x39')]));_0x2f9cde[_0xb37f('0x38')]=_0x2f9cde['attributes']['length']?_0x2f9cde[_0xb37f('0x38')]:_0x1d5381[_0xb37f('0x34')];if(_0x4646ea[_0xb37f('0x35')][_0xb37f('0x42')]){_0x2f9cde[_0xb37f('0x48')]=[{'all':!![]}];}_0x2f9cde=_[_0xb37f('0x40')]({},_0x2f9cde,_0x4646ea[_0xb37f('0x49')]);return db[_0xb37f('0x31')][_0xb37f('0x4a')](_0x2f9cde)[_0xb37f('0x2a')](handleEntityNotFound(_0x36b27f,null))[_0xb37f('0x2a')](respondWithResult(_0x36b27f,null))[_0xb37f('0x45')](handleError(_0x36b27f,null));};exports[_0xb37f('0x4b')]=function(_0x362f21,_0x261a6c){return db[_0xb37f('0x31')][_0xb37f('0x4b')](_0x362f21[_0xb37f('0x4c')],{})['then'](function(_0x27bae3){var _0x4e4756=_0x362f21[_0xb37f('0x4d')][_0xb37f('0x4e')]({'plain':!![]});if(!_0x4e4756)throw new Error(_0xb37f('0x4f'));if(_0x4e4756['role']===_0xb37f('0x4d')){var _0x4fc7d6=_0x27bae3['get']({'plain':!![]});var _0x3f7f2c=_0xb37f('0x50');return db[_0xb37f('0x51')][_0xb37f('0x4a')]({'where':{'name':_0x3f7f2c,'userProfileId':_0x4e4756[_0xb37f('0x52')]},'raw':!![]})[_0xb37f('0x2a')](function(_0x24d08f){if(_0x24d08f&&_0x24d08f['autoAssociation']===0x0){return db['UserProfileResource'][_0xb37f('0x4b')]({'name':_0x4fc7d6['name'],'resourceId':_0x4fc7d6['id'],'type':_0x24d08f[_0xb37f('0x2e')],'sectionId':_0x24d08f['id']},{})['then'](function(){return _0x27bae3;});}else{return _0x27bae3;}})[_0xb37f('0x45')](function(_0x141d88){logger['error'](_0xb37f('0x53'),_0x141d88);throw _0x141d88;});}return _0x27bae3;})[_0xb37f('0x2a')](respondWithResult(_0x261a6c,0xc9))[_0xb37f('0x45')](handleError(_0x261a6c,null));};exports['update']=function(_0x12b5e0,_0x23bbb2){if(_0x12b5e0[_0xb37f('0x4c')]['id']){delete _0x12b5e0[_0xb37f('0x4c')]['id'];}return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x12b5e0['params']['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x23bbb2,null))[_0xb37f('0x2a')](saveUpdates(_0x12b5e0[_0xb37f('0x4c')],null))['then'](respondWithResult(_0x23bbb2,null))[_0xb37f('0x45')](handleError(_0x23bbb2,null));};exports['destroy']=function(_0x21884b,_0x9fde76){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x21884b[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x9fde76,null))[_0xb37f('0x2a')](removeEntity(_0x9fde76,null))[_0xb37f('0x45')](handleError(_0x9fde76,null));};exports['describe']=function(_0x3a94ea,_0x191977){return db['CmList'][_0xb37f('0x54')]()[_0xb37f('0x2a')](respondWithResult(_0x191977,null))[_0xb37f('0x45')](handleError(_0x191977,null));};exports['addDisposition']=function(_0x4cce14,_0x5e6fc0,_0x389355){if(_0x4cce14[_0xb37f('0x4c')]['id']){delete _0x4cce14[_0xb37f('0x4c')]['id'];}return db[_0xb37f('0x31')]['find']({'where':{'id':_0x4cce14[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x5e6fc0,null))[_0xb37f('0x2a')](function(_0x58c6d1){if(_0x58c6d1){_0x4cce14[_0xb37f('0x4c')][_0xb37f('0x55')]=_0x58c6d1['id'];return db['Disposition'][_0xb37f('0x4b')](_0x4cce14['body']);}})[_0xb37f('0x2a')](respondWithResult(_0x5e6fc0,null))[_0xb37f('0x45')](handleError(_0x5e6fc0,null));};exports[_0xb37f('0x56')]=function(_0x152847,_0x47c970,_0xd22fcf){var _0x347dbc={'raw':![],'where':{}};var _0x4b3b9e={};var _0x9f3da6={'count':0x0,'rows':[]};return db['CmList'][_0xb37f('0x57')]({'where':{'id':_0x152847[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x47c970,null))[_0xb37f('0x2a')](function(_0x1ca76c){if(_0x1ca76c){_0x4b3b9e[_0xb37f('0x34')]=_[_0xb37f('0x36')](db[_0xb37f('0x58')]['rawAttributes']);_0x4b3b9e[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x152847['query']);_0x4b3b9e[_0xb37f('0x3e')]=_[_0xb37f('0x37')](_0x4b3b9e[_0xb37f('0x34')],_0x4b3b9e[_0xb37f('0x35')]);_0x347dbc[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x4b3b9e['model'],qs[_0xb37f('0x39')](_0x152847[_0xb37f('0x35')][_0xb37f('0x39')]));_0x347dbc['attributes']=_0x347dbc[_0xb37f('0x38')]['length']?_0x347dbc[_0xb37f('0x38')]:_0x4b3b9e[_0xb37f('0x34')];if(!_0x152847[_0xb37f('0x35')][_0xb37f('0x3b')](_0xb37f('0x59'))){_0x347dbc[_0xb37f('0x22')]=qs[_0xb37f('0x22')](_0x152847[_0xb37f('0x35')]['limit']);_0x347dbc[_0xb37f('0x20')]=qs[_0xb37f('0x20')](_0x152847[_0xb37f('0x35')][_0xb37f('0x20')]);}_0x347dbc['order']=qs[_0xb37f('0x3c')](_0x152847[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x347dbc[_0xb37f('0x3d')]=qs[_0xb37f('0x3e')](_[_0xb37f('0x3f')](_0x152847[_0xb37f('0x35')],_0x4b3b9e[_0xb37f('0x3e')]));_0x347dbc[_0xb37f('0x3d')][_0xb37f('0x55')]=_0x1ca76c['id'];if(_0x152847[_0xb37f('0x35')][_0xb37f('0x41')]){_0x347dbc[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x347dbc[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x347dbc[_0xb37f('0x38')],function(_0x30a72c){var _0x42f099={};_0x42f099[_0x30a72c]={'$like':'%'+_0x152847[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x42f099;})});}_0x347dbc=_[_0xb37f('0x40')]({},_0x347dbc,_0x152847[_0xb37f('0x49')]);return db[_0xb37f('0x58')][_0xb37f('0x23')]({'where':_0x347dbc[_0xb37f('0x3d')]})[_0xb37f('0x2a')](function(_0x4c174){_0x9f3da6[_0xb37f('0x23')]=_0x4c174;if(_0x152847[_0xb37f('0x35')][_0xb37f('0x42')]){_0x347dbc[_0xb37f('0x48')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x347dbc);})[_0xb37f('0x2a')](function(_0x3078d0){_0x9f3da6['rows']=_0x3078d0;return _0x9f3da6;});}})['then'](respondWithFilteredResult(_0x47c970,_0x347dbc))['catch'](handleError(_0x47c970,null));};exports[_0xb37f('0x5a')]=function(_0x41dbd0,_0x3036b0,_0x44343a){return db['CmList'][_0xb37f('0x4a')]({'where':{'id':_0x41dbd0['params']['id']}})['then'](handleEntityNotFound(_0x3036b0,null))['then'](function(_0x9f3ac0){if(_0x9f3ac0){return _0x9f3ac0[_0xb37f('0x5a')](_0x41dbd0[_0xb37f('0x35')][_0xb37f('0x5b')]);}})['then'](respondWithStatusCode(_0x3036b0,null))[_0xb37f('0x45')](handleError(_0x3036b0,null));};exports[_0xb37f('0x5c')]=function(_0x47646b,_0x574138,_0x40464f){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x47646b[_0xb37f('0x46')]['id']}})['then'](handleEntityNotFound(_0x574138,null))['then'](function(_0x2b41a7){if(_0x2b41a7){var _0x4d93c6=[];var _0x3d5811={'success':[],'errors':[]};return db['CmContact']['describe']()[_0xb37f('0x2a')](function(_0x2b732e){if(_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')]&&_[_0xb37f('0x5e')](_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')])){if(_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')][_0xb37f('0x3a')]){_0x47646b['body']['tags']=_0x47646b['body'][_0xb37f('0x5d')][_0xb37f('0x5f')](';')+';';}else{_0x47646b['body']['tags']=null;}}else{_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')]=null;}if(_0x47646b[_0xb37f('0x4c')]&&_[_0xb37f('0x5e')](_0x47646b['body'])){for(var _0x4a8b01=0x0;_0x4a8b01<_0x47646b[_0xb37f('0x4c')][_0xb37f('0x3a')];_0x4a8b01+=0x1){_0x47646b[_0xb37f('0x4c')][_0x4a8b01]['ListId']=_0x47646b[_0xb37f('0x46')]['id'];_0x4d93c6['push'](_0x47646b[_0xb37f('0x4c')][_0x4a8b01]);}return BPromise[_0xb37f('0x60')](_0x4d93c6,function(_0x1aaad5){return db[_0xb37f('0x61')][_0xb37f('0x4b')](_[_0xb37f('0x62')](_0x1aaad5,[_0xb37f('0x5b'),'id'])||{},{'fields':_[_0xb37f('0x36')](_0x2b732e),'raw':!![]})['then'](function(_0x294d6c){_0x3d5811[_0xb37f('0x63')][_0xb37f('0x64')](_0x294d6c['dataValues']);})['catch'](function(_0x2095e2){_0x3d5811[_0xb37f('0x65')][_0xb37f('0x64')]({'data':_0x1aaad5,'error':_0x2095e2[_0xb37f('0x66')]});});})[_0xb37f('0x2a')](function(_0x4cdc97){return _0x3d5811;})['catch'](function(_0x16fafd){return _0x16fafd;});}else{_0x574138[_0xb37f('0x1e')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0xb37f('0x2a')](respondWithResult(_0x574138,null))[_0xb37f('0x45')](handleError(_0x574138,null));};exports[_0xb37f('0x67')]=function(_0xacfbc4,_0x5b7c55,_0x27df10){var _0x5a7334;return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0xacfbc4[_0xb37f('0x46')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xb37f('0x68')}]})[_0xb37f('0x2a')](handleEntityNotFound(_0x5b7c55,null))[_0xb37f('0x2a')](function(_0x401cf8){if(_0x401cf8){_0x5a7334=_0x401cf8;return db[_0xb37f('0x61')][_0xb37f('0x47')];}})[_0xb37f('0x2a')](function(_0x3f02d5){if(_0x3f02d5){var _0x41621f={};var _0x1eb3c2={};_0x1eb3c2[_0xb37f('0x34')]=_['concat'](_[_0xb37f('0x36')](_0x3f02d5),_[_0xb37f('0x30')](_0x5a7334[_0xb37f('0x68')],function(_0x398b66){return util[_0xb37f('0x69')](_0xb37f('0x6a'),_0x398b66['id']);}));_0x1eb3c2[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0xacfbc4[_0xb37f('0x35')]);_0x1eb3c2[_0xb37f('0x3e')]=_[_0xb37f('0x37')](_0x1eb3c2[_0xb37f('0x34')],_0x1eb3c2['query']);_0x41621f['attributes']=_[_0xb37f('0x37')](_0x1eb3c2[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x39')]));_0x41621f['attributes']=_0x41621f[_0xb37f('0x38')]['length']?_0x41621f[_0xb37f('0x38')]:_0x1eb3c2[_0xb37f('0x34')];if(!_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x3b')]('nolimit')){_0x41621f['limit']=qs[_0xb37f('0x22')](_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x22')]);_0x41621f[_0xb37f('0x20')]=qs[_0xb37f('0x20')](_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x20')]);}_0x41621f[_0xb37f('0x6b')]=qs[_0xb37f('0x3c')](_0xacfbc4['query'][_0xb37f('0x3c')]);_0x41621f['where']=qs['filters'](_[_0xb37f('0x3f')](_0xacfbc4[_0xb37f('0x35')],_0x1eb3c2[_0xb37f('0x3e')]));_0x41621f[_0xb37f('0x6c')]=!![];if(_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x41')]){_0x41621f[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x41621f[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x41621f[_0xb37f('0x38')],function(_0x308165){var _0x9fe21={};_0x9fe21[_0x308165]={'$like':'%'+_0xacfbc4['query'][_0xb37f('0x41')]+'%'};return _0x9fe21;})});}_0x41621f=_['merge']({},_0x41621f,_0xacfbc4[_0xb37f('0x49')]);return _0x5a7334['getContacts'](_0x41621f);}})[_0xb37f('0x2a')](respondWithResult(_0x5b7c55,null))[_0xb37f('0x45')](handleError(_0x5b7c55,null));};exports[_0xb37f('0x6d')]=function(_0x143f81,_0x2cfba5,_0x5aacc4){var _0x2e887e;return db[_0xb37f('0x31')]['find']({'where':{'id':_0x143f81['params']['id']},'include':[{'model':db[_0xb37f('0x6e')],'as':_0xb37f('0x68')}]})[_0xb37f('0x2a')](handleEntityNotFound(_0x2cfba5,null))['then'](function(_0x4b4557){if(_0x4b4557){_0x2e887e=_0x4b4557;return db[_0xb37f('0x61')][_0xb37f('0x47')];}})[_0xb37f('0x2a')](function(_0x2f5163){if(_0x2f5163){var _0x4f391d={};var _0x40aeac={};_0x40aeac[_0xb37f('0x34')]=_[_0xb37f('0x6f')](_[_0xb37f('0x36')](_0x2f5163),_[_0xb37f('0x30')](_0x2e887e[_0xb37f('0x68')],function(_0x36c87f){return util['format'](_0xb37f('0x6a'),_0x36c87f['id']);}));_0x40aeac[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x143f81[_0xb37f('0x35')]);_0x40aeac[_0xb37f('0x3e')]=_[_0xb37f('0x37')](_0x40aeac[_0xb37f('0x34')],_0x40aeac['query']);_0x4f391d[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x40aeac[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0x143f81[_0xb37f('0x35')][_0xb37f('0x39')]));_0x4f391d[_0xb37f('0x38')]=_0x4f391d['attributes'][_0xb37f('0x3a')]?_0x4f391d[_0xb37f('0x38')]:_0x40aeac['model'];if(!_0x143f81[_0xb37f('0x35')]['hasOwnProperty'](_0xb37f('0x59'))){_0x4f391d[_0xb37f('0x22')]=qs['limit'](_0x143f81[_0xb37f('0x35')][_0xb37f('0x22')]);_0x4f391d[_0xb37f('0x20')]=qs[_0xb37f('0x20')](_0x143f81['query'][_0xb37f('0x20')]);}_0x4f391d[_0xb37f('0x6b')]=qs[_0xb37f('0x3c')](_0x143f81[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x4f391d[_0xb37f('0x3d')]=qs[_0xb37f('0x3e')](_['pick'](_0x143f81[_0xb37f('0x35')],_0x40aeac[_0xb37f('0x3e')]));_0x4f391d['raw']=!![];if(_0x143f81[_0xb37f('0x35')]['filter']){_0x4f391d[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x4f391d[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x4f391d[_0xb37f('0x38')],function(_0x75e76a){var _0x55c64e={};_0x55c64e[_0x75e76a]={'$like':'%'+_0x143f81[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x55c64e;})});}_0x4f391d=_['merge']({},_0x4f391d,_0x143f81['options']);return _0x2e887e['getContacts'](_0x4f391d);}})[_0xb37f('0x2a')](function(_0x273d27){if(!_[_0xb37f('0x70')](_0x273d27)){var _0x3a3800=toCsv(_0x273d27);var _0x7760c6=Date[_0xb37f('0x71')]();fs[_0xb37f('0x72')](util['format'](_0xb37f('0x73'),_0x2e887e['id'],_0x7760c6),_0x3a3800);_0x2cfba5[_0xb37f('0x74')]('Content-disposition',_0xb37f('0x75')+util[_0xb37f('0x69')]('list_%d_%s.csv',_0x2e887e['id'],_0x7760c6));_0x2cfba5[_0xb37f('0x74')]('Content-type',_0xb37f('0x76'));return _0x2cfba5[_0xb37f('0x77')](util[_0xb37f('0x69')](_0xb37f('0x73'),_0x2e887e['id'],_0x7760c6));}else{return _0x2cfba5['sendStatus'](0xcc);}})[_0xb37f('0x45')](handleError(_0x2cfba5,null));};exports[_0xb37f('0x78')]=function(_0x327145,_0x51e2cd,_0x21c0ab){var _0x9ff0c1;delete _0x327145[_0xb37f('0x4c')]['id'];return db['CmList']['findOne']({'where':{'id':_0x327145[_0xb37f('0x46')]['id']}})['then'](handleEntityNotFound(_0x51e2cd,null))['then'](function(_0x230518){if(_0x230518){return db[_0xb37f('0x79')][_0xb37f('0x7a')](function(_0x5eb0e9){return db[_0xb37f('0x6e')][_0xb37f('0x4b')](_0x327145[_0xb37f('0x4c')],{'transaction':_0x5eb0e9})[_0xb37f('0x2a')](function(_0x432647){_0x9ff0c1=_0x432647;return _0x230518[_0xb37f('0x7b')](_0x432647,{'transaction':_0x5eb0e9});})['then'](function(){var _0x95b1a5={'type':db[_0xb37f('0x7c')][_0xb37f('0x7d')],'transaction':_0x5eb0e9};switch(_0x327145['body'][_0xb37f('0x32')]){case _0xb37f('0x7e'):_0x95b1a5[_0xb37f('0x32')]=db[_0xb37f('0x7c')][_0xb37f('0x7d')];break;case _0xb37f('0x7f'):_0x95b1a5[_0xb37f('0x32')]=db['Sequelize'][_0xb37f('0x80')];break;case _0xb37f('0x81'):_0x95b1a5[_0xb37f('0x32')]=db[_0xb37f('0x7c')][_0xb37f('0x82')];_0x95b1a5[_0xb37f('0x83')]=![];break;default:}return db['sequelize']['queryInterface'][_0xb37f('0x84')](_0xb37f('0x85'),util[_0xb37f('0x69')](_0xb37f('0x86'),_0x9ff0c1['id']),_0x95b1a5);})[_0xb37f('0x2a')](function(){return _0x9ff0c1;});});}})[_0xb37f('0x2a')](respondWithResult(_0x51e2cd,null))[_0xb37f('0x45')](handleError(_0x51e2cd,null));};exports[_0xb37f('0x87')]=function(_0x53be82,_0x12cc2e,_0x59ee4b){var _0x4138ef={};var _0x3da13f={};var _0x754b56;var _0x593054;return db[_0xb37f('0x31')][_0xb37f('0x57')]({'where':{'id':_0x53be82[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x12cc2e,null))[_0xb37f('0x2a')](function(_0x4342ca){if(_0x4342ca){_0x754b56=_0x4342ca;_0x3da13f['model']=_[_0xb37f('0x36')](db[_0xb37f('0x6e')][_0xb37f('0x47')]);_0x3da13f['query']=_[_0xb37f('0x36')](_0x53be82[_0xb37f('0x35')]);_0x3da13f['filters']=_['intersection'](_0x3da13f[_0xb37f('0x34')],_0x3da13f[_0xb37f('0x35')]);_0x4138ef[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x3da13f[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0x53be82[_0xb37f('0x35')][_0xb37f('0x39')]));_0x4138ef[_0xb37f('0x38')]=_0x4138ef[_0xb37f('0x38')][_0xb37f('0x3a')]?_0x4138ef[_0xb37f('0x38')]:_0x3da13f[_0xb37f('0x34')];_0x4138ef[_0xb37f('0x6b')]=qs['sort'](_0x53be82[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x4138ef[_0xb37f('0x3d')]=qs['filters'](_[_0xb37f('0x3f')](_0x53be82[_0xb37f('0x35')],_0x3da13f['filters']));_0x4138ef[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x4138ef[_0xb37f('0x3d')],{'$or':[{'ListId':_0x4342ca['id']},{'ListId':null}]});if(_0x53be82[_0xb37f('0x35')]['filter']){_0x4138ef[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x4138ef[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x4138ef[_0xb37f('0x38')],function(_0x4c93e4){var _0x44b383={};_0x44b383[_0x4c93e4]={'$like':'%'+_0x53be82['query']['filter']+'%'};return _0x44b383;})});}_0x4138ef=_[_0xb37f('0x40')]({},_0x4138ef,_0x53be82[_0xb37f('0x49')]);return db['CmCustomField'][_0xb37f('0x88')](_0x4138ef);}})['then'](respondWithResult(_0x12cc2e,null))['catch'](handleError(_0x12cc2e,null));};exports['addAgents']=function(_0xd3a255,_0x58430f,_0x44ff81){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0xd3a255[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x58430f,null))[_0xb37f('0x2a')](function(_0x23fbaa){if(_0x23fbaa){return _0x23fbaa[_0xb37f('0x89')](_0xd3a255[_0xb37f('0x4c')][_0xb37f('0x5b')],_[_0xb37f('0x62')](_0xd3a255[_0xb37f('0x4c')],[_0xb37f('0x5b'),'id'])||{})['spread'](function(_0x15e7d7){for(var _0x403b69=0x0;_0x403b69<_0xd3a255['body'][_0xb37f('0x5b')]['length'];_0x403b69+=0x1){socket[_0xb37f('0x8a')](_0xb37f('0x8b'),{'UserId':Number(_0xd3a255[_0xb37f('0x4c')]['ids'][_0x403b69]),'CmListId':Number(_0xd3a255[_0xb37f('0x46')]['id'])});}return _0x15e7d7;});}})[_0xb37f('0x2a')](respondWithResult(_0x58430f,null))[_0xb37f('0x45')](handleError(_0x58430f,null));};exports[_0xb37f('0x8c')]=function(_0x54b095,_0x232f0c,_0x4bcde6){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x54b095[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x232f0c,null))[_0xb37f('0x2a')](function(_0x4721ec){if(_0x4721ec){return _0x4721ec[_0xb37f('0x8c')](_0x54b095['query'][_0xb37f('0x5b')])[_0xb37f('0x2a')](function(){if(_[_0xb37f('0x5e')](_0x54b095[_0xb37f('0x35')][_0xb37f('0x5b')])){for(var _0x5cc936=0x0;_0x5cc936<_0x54b095[_0xb37f('0x35')][_0xb37f('0x5b')][_0xb37f('0x3a')];_0x5cc936+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x54b095[_0xb37f('0x35')][_0xb37f('0x5b')][_0x5cc936]),'CmListId':Number(_0x54b095[_0xb37f('0x46')]['id'])});}}else{socket[_0xb37f('0x8a')](_0xb37f('0x8d'),{'UserId':Number(_0x54b095['query'][_0xb37f('0x5b')]),'CmListId':Number(_0x54b095[_0xb37f('0x46')]['id'])});}});}})['then'](respondWithStatusCode(_0x232f0c,null))[_0xb37f('0x45')](handleError(_0x232f0c,null));};exports[_0xb37f('0x8e')]=function(_0x558977,_0x1f570c,_0x5dc462){var _0x47ed42={};var _0x5df99a={};var _0x3af4ed;var _0x3accf0;return db['CmList'][_0xb37f('0x57')]({'where':{'id':_0x558977[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x1f570c,null))[_0xb37f('0x2a')](function(_0x1a0835){if(_0x1a0835){_0x3af4ed=_0x1a0835;_0x5df99a[_0xb37f('0x34')]=_['keys'](db[_0xb37f('0x8f')][_0xb37f('0x47')]);_0x5df99a[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x558977[_0xb37f('0x35')]);_0x5df99a[_0xb37f('0x3e')]=_['intersection'](_0x5df99a[_0xb37f('0x34')],_0x5df99a['query']);_0x47ed42[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x5df99a[_0xb37f('0x34')],qs['fields'](_0x558977[_0xb37f('0x35')][_0xb37f('0x39')]));_0x47ed42[_0xb37f('0x38')]=_0x47ed42['attributes'][_0xb37f('0x3a')]?_0x47ed42['attributes']:_0x5df99a[_0xb37f('0x34')];_0x47ed42[_0xb37f('0x6b')]=qs[_0xb37f('0x3c')](_0x558977[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x47ed42['where']=qs[_0xb37f('0x3e')](_['pick'](_0x558977[_0xb37f('0x35')],_0x5df99a[_0xb37f('0x3e')]));if(_0x558977[_0xb37f('0x35')]['filter']){_0x47ed42[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x47ed42[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x47ed42[_0xb37f('0x38')],function(_0x26f853){var _0x3ddbf0={};_0x3ddbf0[_0x26f853]={'$like':'%'+_0x558977[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x3ddbf0;})});}_0x47ed42=_[_0xb37f('0x40')]({},_0x47ed42,_0x558977[_0xb37f('0x49')]);return _0x3af4ed[_0xb37f('0x8e')](_0x47ed42);}})[_0xb37f('0x2a')](function(_0x5ee37f){if(_0x5ee37f){_0x3accf0=_0x5ee37f[_0xb37f('0x3a')];if(!_0x558977[_0xb37f('0x35')]['hasOwnProperty']('nolimit')){_0x47ed42[_0xb37f('0x22')]=qs['limit'](_0x558977[_0xb37f('0x35')][_0xb37f('0x22')]);_0x47ed42['offset']=qs[_0xb37f('0x20')](_0x558977['query']['offset']);}return _0x3af4ed[_0xb37f('0x8e')](_0x47ed42);}})['then'](function(_0xcd08eb){if(_0xcd08eb){return _0xcd08eb?{'count':_0x3accf0,'rows':_0xcd08eb}:null;}})[_0xb37f('0x2a')](respondWithResult(_0x1f570c,null))[_0xb37f('0x45')](handleError(_0x1f570c,null));};
\ No newline at end of file
+var _0x3600=['CmCustomField','CustomFields','concat','format','cf_%d','raw','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','list_%d_%s.csv','Content-type','addCustomField','transaction','addCustomFields','Sequelize','text','TEXT','number','INTEGER','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','getCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','redis','defaults','socket.io-emitter','./cmList.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','Lists','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','CmList','includeAll','params','keys','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addDisposition','ListId','Disposition','getDispositions','findOne','order','include','findAll','rows','removeDispositions','ids','addContacts','CmContact','describe','tags','isArray','join','push','omit','dataValues','errors','message','getContacts'];(function(_0x35ca01,_0x2339d8){var _0x279bf5=function(_0x3409d1){while(--_0x3409d1){_0x35ca01['push'](_0x35ca01['shift']());}};_0x279bf5(++_0x2339d8);}(_0x3600,0x13f));var _0x0360=function(_0x1f8eae,_0x2a9b83){_0x1f8eae=_0x1f8eae-0x0;var _0x9dbefb=_0x3600[_0x1f8eae];return _0x9dbefb;};'use strict';var emlformat=require(_0x0360('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0360('0x1'));var jsonpatch=require(_0x0360('0x2'));var rp=require(_0x0360('0x3'));var moment=require(_0x0360('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0360('0x5'));var util=require(_0x0360('0x6'));var path=require('path');var sox=require(_0x0360('0x7'));var csv=require(_0x0360('0x8'));var ejs=require(_0x0360('0x9'));var fs=require('fs');var fs_extra=require(_0x0360('0xa'));var _=require(_0x0360('0xb'));var squel=require('squel');var crypto=require(_0x0360('0xc'));var jsforce=require(_0x0360('0xd'));var deskjs=require(_0x0360('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0360('0xf'));var Papa=require(_0x0360('0x10'));var Redis=require(_0x0360('0x11'));var authService=require(_0x0360('0x12'));var qs=require(_0x0360('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0360('0x14'))('api');var utils=require(_0x0360('0x15'));var config=require(_0x0360('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x0360('0x17')]=_[_0x0360('0x18')](config[_0x0360('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x0360('0x19'))(new Redis(config[_0x0360('0x17')]));require(_0x0360('0x1a'))[_0x0360('0x1b')](socket);function respondWithStatusCode(_0x4b4ee6,_0x110f34){_0x110f34=_0x110f34||0xcc;return function(_0x55ce2c){if(_0x55ce2c){return _0x4b4ee6[_0x0360('0x1c')](_0x110f34);}return _0x4b4ee6['status'](_0x110f34)[_0x0360('0x1d')]();};}function respondWithResult(_0x5160b0,_0x10241c){_0x10241c=_0x10241c||0xc8;return function(_0x52bc51){if(_0x52bc51){return _0x5160b0[_0x0360('0x1e')](_0x10241c)[_0x0360('0x1f')](_0x52bc51);}};}function respondWithFilteredResult(_0x5121e0,_0x52f65a){return function(_0x1fcde4){if(_0x1fcde4){var _0x23b979=typeof _0x52f65a[_0x0360('0x20')]===_0x0360('0x21')&&typeof _0x52f65a['limit']===_0x0360('0x21');var _0x1e1bd0=_0x1fcde4[_0x0360('0x22')];var _0x55e46b=_0x23b979?0x0:_0x52f65a[_0x0360('0x20')];var _0x4b2124=_0x23b979?_0x1fcde4[_0x0360('0x22')]:_0x52f65a[_0x0360('0x20')]+_0x52f65a[_0x0360('0x23')];var _0x1dd836;if(_0x4b2124>=_0x1e1bd0){_0x4b2124=_0x1e1bd0;_0x1dd836=0xc8;}else{_0x1dd836=0xce;}_0x5121e0['status'](_0x1dd836);return _0x5121e0[_0x0360('0x24')](_0x0360('0x25'),_0x55e46b+'-'+_0x4b2124+'/'+_0x1e1bd0)[_0x0360('0x1f')](_0x1fcde4);}return null;};}function patchUpdates(_0xa9b596){return function(_0x85bb02){try{jsonpatch['apply'](_0x85bb02,_0xa9b596,!![]);}catch(_0x51adba){return BPromise[_0x0360('0x26')](_0x51adba);}return _0x85bb02[_0x0360('0x27')]();};}function saveUpdates(_0x1c832e,_0x1a0260){return function(_0x49a38e){if(_0x49a38e){return _0x49a38e[_0x0360('0x28')](_0x1c832e)[_0x0360('0x29')](function(_0x435dbc){return _0x435dbc;});}return null;};}function removeEntity(_0x18c2ec,_0x450308){return function(_0x43b9ca){if(_0x43b9ca){return _0x43b9ca[_0x0360('0x2a')]()[_0x0360('0x29')](function(){var _0x778d4c=_0x43b9ca['get']({'plain':!![]});var _0x3a08b5=_0x0360('0x2b');return db[_0x0360('0x2c')][_0x0360('0x2a')]({'where':{'type':_0x3a08b5,'resourceId':_0x778d4c['id']}})[_0x0360('0x29')](function(){return _0x43b9ca;});})[_0x0360('0x29')](function(){_0x18c2ec[_0x0360('0x1e')](0xcc)[_0x0360('0x1d')]();});}};}function handleEntityNotFound(_0x2c344c,_0x3083d6){return function(_0x1d4377){if(!_0x1d4377){_0x2c344c[_0x0360('0x1c')](0x194);}return _0x1d4377;};}function handleError(_0x461fee,_0x58cb21){_0x58cb21=_0x58cb21||0x1f4;return function(_0x1270d8){logger[_0x0360('0x2d')](_0x1270d8[_0x0360('0x2e')]);if(_0x1270d8[_0x0360('0x2f')]){delete _0x1270d8[_0x0360('0x2f')];}_0x461fee[_0x0360('0x1e')](_0x58cb21)[_0x0360('0x30')](_0x1270d8);};}exports[_0x0360('0x31')]=function(_0x27e843,_0x33e462){var _0x4771fe={},_0x55b6ba={},_0x4bb596={'count':0x0,'rows':[]};var _0x94de1d=_['map'](db['CmList'][_0x0360('0x32')],function(_0x28ceb3){return{'name':_0x28ceb3[_0x0360('0x33')],'type':_0x28ceb3[_0x0360('0x34')][_0x0360('0x35')]};});_0x55b6ba['model']=_[_0x0360('0x36')](_0x94de1d,_0x0360('0x2f'));_0x55b6ba[_0x0360('0x37')]=_['keys'](_0x27e843[_0x0360('0x37')]);_0x55b6ba['filters']=_[_0x0360('0x38')](_0x55b6ba[_0x0360('0x39')],_0x55b6ba[_0x0360('0x37')]);_0x4771fe['attributes']=_[_0x0360('0x38')](_0x55b6ba[_0x0360('0x39')],qs[_0x0360('0x3a')](_0x27e843[_0x0360('0x37')]['fields']));_0x4771fe[_0x0360('0x3b')]=_0x4771fe['attributes'][_0x0360('0x3c')]?_0x4771fe['attributes']:_0x55b6ba[_0x0360('0x39')];if(!_0x27e843[_0x0360('0x37')][_0x0360('0x3d')](_0x0360('0x3e'))){_0x4771fe[_0x0360('0x23')]=qs[_0x0360('0x23')](_0x27e843[_0x0360('0x37')][_0x0360('0x23')]);_0x4771fe[_0x0360('0x20')]=qs['offset'](_0x27e843[_0x0360('0x37')]['offset']);}_0x4771fe['order']=qs[_0x0360('0x3f')](_0x27e843[_0x0360('0x37')]['sort']);_0x4771fe[_0x0360('0x40')]=qs[_0x0360('0x41')](_[_0x0360('0x42')](_0x27e843[_0x0360('0x37')],_0x55b6ba['filters']),_0x94de1d);if(_0x27e843[_0x0360('0x37')][_0x0360('0x43')]){_0x4771fe[_0x0360('0x40')]=_[_0x0360('0x44')](_0x4771fe[_0x0360('0x40')],{'$or':_[_0x0360('0x36')](_0x94de1d,function(_0x5895bd){if(_0x5895bd[_0x0360('0x34')]!==_0x0360('0x45')){var _0x599e85={};_0x599e85[_0x5895bd[_0x0360('0x2f')]]={'$like':'%'+_0x27e843[_0x0360('0x37')][_0x0360('0x43')]+'%'};return _0x599e85;}})});}_0x4771fe=_['merge']({},_0x4771fe,_0x27e843[_0x0360('0x46')]);var _0x2656f2={'where':_0x4771fe[_0x0360('0x40')]};return db[_0x0360('0x47')][_0x0360('0x22')](_0x2656f2)[_0x0360('0x29')](function(_0x4a2db9){_0x4bb596[_0x0360('0x22')]=_0x4a2db9;if(_0x27e843[_0x0360('0x37')][_0x0360('0x48')]){_0x4771fe['include']=[{'all':!![]}];}return db[_0x0360('0x47')]['findAll'](_0x4771fe);})['then'](function(_0x48f876){_0x4bb596['rows']=_0x48f876;return _0x4bb596;})['then'](respondWithFilteredResult(_0x33e462,_0x4771fe))['catch'](handleError(_0x33e462,null));};exports['show']=function(_0x4a4361,_0x4863ac){var _0x3d2946={'raw':![],'where':{'id':_0x4a4361[_0x0360('0x49')]['id']}},_0x214ec3={};_0x214ec3['model']=_[_0x0360('0x4a')](db[_0x0360('0x47')][_0x0360('0x32')]);_0x214ec3['query']=_[_0x0360('0x4a')](_0x4a4361[_0x0360('0x37')]);_0x214ec3[_0x0360('0x41')]=_[_0x0360('0x38')](_0x214ec3[_0x0360('0x39')],_0x214ec3[_0x0360('0x37')]);_0x3d2946[_0x0360('0x3b')]=_['intersection'](_0x214ec3[_0x0360('0x39')],qs['fields'](_0x4a4361[_0x0360('0x37')][_0x0360('0x3a')]));_0x3d2946[_0x0360('0x3b')]=_0x3d2946[_0x0360('0x3b')]['length']?_0x3d2946['attributes']:_0x214ec3[_0x0360('0x39')];if(_0x4a4361[_0x0360('0x37')][_0x0360('0x48')]){_0x3d2946['include']=[{'all':!![]}];}_0x3d2946=_[_0x0360('0x44')]({},_0x3d2946,_0x4a4361[_0x0360('0x46')]);return db[_0x0360('0x47')][_0x0360('0x4b')](_0x3d2946)[_0x0360('0x29')](handleEntityNotFound(_0x4863ac,null))['then'](respondWithResult(_0x4863ac,null))[_0x0360('0x4c')](handleError(_0x4863ac,null));};exports['create']=function(_0x64baf4,_0x508a01){return db['CmList'][_0x0360('0x4d')](_0x64baf4[_0x0360('0x4e')],{})['then'](function(_0x187378){var _0x205f67=_0x64baf4[_0x0360('0x4f')][_0x0360('0x50')]({'plain':!![]});if(!_0x205f67)throw new Error(_0x0360('0x51'));if(_0x205f67['role']==='user'){var _0x563028=_0x187378[_0x0360('0x50')]({'plain':!![]});var _0x2cadb0=_0x0360('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x2cadb0,'userProfileId':_0x205f67['userProfileId']},'raw':!![]})[_0x0360('0x29')](function(_0x11ef46){if(_0x11ef46&&_0x11ef46[_0x0360('0x52')]===0x0){return db[_0x0360('0x2c')][_0x0360('0x4d')]({'name':_0x563028['name'],'resourceId':_0x563028['id'],'type':_0x11ef46[_0x0360('0x2f')],'sectionId':_0x11ef46['id']},{})['then'](function(){return _0x187378;});}else{return _0x187378;}})[_0x0360('0x4c')](function(_0x294c67){logger[_0x0360('0x2d')](_0x0360('0x53'),_0x294c67);throw _0x294c67;});}return _0x187378;})['then'](respondWithResult(_0x508a01,0xc9))['catch'](handleError(_0x508a01,null));};exports[_0x0360('0x28')]=function(_0x73535d,_0x4c6e7d){if(_0x73535d[_0x0360('0x4e')]['id']){delete _0x73535d[_0x0360('0x4e')]['id'];}return db[_0x0360('0x47')][_0x0360('0x4b')]({'where':{'id':_0x73535d[_0x0360('0x49')]['id']}})['then'](handleEntityNotFound(_0x4c6e7d,null))[_0x0360('0x29')](saveUpdates(_0x73535d[_0x0360('0x4e')],null))[_0x0360('0x29')](respondWithResult(_0x4c6e7d,null))[_0x0360('0x4c')](handleError(_0x4c6e7d,null));};exports['destroy']=function(_0x2de0dc,_0x277dca){return db[_0x0360('0x47')][_0x0360('0x4b')]({'where':{'id':_0x2de0dc['params']['id']}})['then'](handleEntityNotFound(_0x277dca,null))[_0x0360('0x29')](removeEntity(_0x277dca,null))[_0x0360('0x4c')](handleError(_0x277dca,null));};exports['describe']=function(_0x4ce66d,_0xb3cd26){return db['CmList']['describe']()[_0x0360('0x29')](respondWithResult(_0xb3cd26,null))[_0x0360('0x4c')](handleError(_0xb3cd26,null));};exports[_0x0360('0x54')]=function(_0x3a4c71,_0x5ee897,_0x57f608){if(_0x3a4c71[_0x0360('0x4e')]['id']){delete _0x3a4c71[_0x0360('0x4e')]['id'];}return db[_0x0360('0x47')][_0x0360('0x4b')]({'where':{'id':_0x3a4c71[_0x0360('0x49')]['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x5ee897,null))[_0x0360('0x29')](function(_0x8eadf3){if(_0x8eadf3){_0x3a4c71['body'][_0x0360('0x55')]=_0x8eadf3['id'];return db[_0x0360('0x56')][_0x0360('0x4d')](_0x3a4c71[_0x0360('0x4e')]);}})[_0x0360('0x29')](respondWithResult(_0x5ee897,null))[_0x0360('0x4c')](handleError(_0x5ee897,null));};exports[_0x0360('0x57')]=function(_0x90aece,_0x463a21,_0x3cd818){var _0x2cafd1={'raw':![],'where':{}};var _0x175959={};var _0x5a7c78={'count':0x0,'rows':[]};return db['CmList'][_0x0360('0x58')]({'where':{'id':_0x90aece[_0x0360('0x49')]['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x463a21,null))[_0x0360('0x29')](function(_0x4fd2e0){if(_0x4fd2e0){_0x175959[_0x0360('0x39')]=_[_0x0360('0x4a')](db[_0x0360('0x56')]['rawAttributes']);_0x175959['query']=_['keys'](_0x90aece[_0x0360('0x37')]);_0x175959[_0x0360('0x41')]=_[_0x0360('0x38')](_0x175959[_0x0360('0x39')],_0x175959[_0x0360('0x37')]);_0x2cafd1['attributes']=_[_0x0360('0x38')](_0x175959[_0x0360('0x39')],qs[_0x0360('0x3a')](_0x90aece[_0x0360('0x37')]['fields']));_0x2cafd1[_0x0360('0x3b')]=_0x2cafd1['attributes']['length']?_0x2cafd1[_0x0360('0x3b')]:_0x175959[_0x0360('0x39')];if(!_0x90aece[_0x0360('0x37')][_0x0360('0x3d')](_0x0360('0x3e'))){_0x2cafd1[_0x0360('0x23')]=qs[_0x0360('0x23')](_0x90aece[_0x0360('0x37')][_0x0360('0x23')]);_0x2cafd1['offset']=qs[_0x0360('0x20')](_0x90aece[_0x0360('0x37')][_0x0360('0x20')]);}_0x2cafd1[_0x0360('0x59')]=qs[_0x0360('0x3f')](_0x90aece[_0x0360('0x37')][_0x0360('0x3f')]);_0x2cafd1[_0x0360('0x40')]=qs[_0x0360('0x41')](_[_0x0360('0x42')](_0x90aece[_0x0360('0x37')],_0x175959['filters']));_0x2cafd1[_0x0360('0x40')]['ListId']=_0x4fd2e0['id'];if(_0x90aece[_0x0360('0x37')][_0x0360('0x43')]){_0x2cafd1[_0x0360('0x40')]=_[_0x0360('0x44')](_0x2cafd1[_0x0360('0x40')],{'$or':_[_0x0360('0x36')](_0x2cafd1[_0x0360('0x3b')],function(_0x1c882e){var _0x2974d1={};_0x2974d1[_0x1c882e]={'$like':'%'+_0x90aece['query'][_0x0360('0x43')]+'%'};return _0x2974d1;})});}_0x2cafd1=_['merge']({},_0x2cafd1,_0x90aece[_0x0360('0x46')]);return db[_0x0360('0x56')]['count']({'where':_0x2cafd1[_0x0360('0x40')]})['then'](function(_0xd68fa0){_0x5a7c78['count']=_0xd68fa0;if(_0x90aece['query']['includeAll']){_0x2cafd1[_0x0360('0x5a')]=[{'all':!![]}];}return db[_0x0360('0x56')][_0x0360('0x5b')](_0x2cafd1);})['then'](function(_0x5d98cf){_0x5a7c78[_0x0360('0x5c')]=_0x5d98cf;return _0x5a7c78;});}})[_0x0360('0x29')](respondWithFilteredResult(_0x463a21,_0x2cafd1))[_0x0360('0x4c')](handleError(_0x463a21,null));};exports[_0x0360('0x5d')]=function(_0x21459f,_0x3ce96c,_0x335ba9){return db[_0x0360('0x47')][_0x0360('0x4b')]({'where':{'id':_0x21459f['params']['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x3ce96c,null))[_0x0360('0x29')](function(_0x60209){if(_0x60209){return _0x60209[_0x0360('0x5d')](_0x21459f[_0x0360('0x37')][_0x0360('0x5e')]);}})['then'](respondWithStatusCode(_0x3ce96c,null))[_0x0360('0x4c')](handleError(_0x3ce96c,null));};exports[_0x0360('0x5f')]=function(_0x4ca585,_0xbce949,_0x534410){return db[_0x0360('0x47')][_0x0360('0x4b')]({'where':{'id':_0x4ca585['params']['id']}})[_0x0360('0x29')](handleEntityNotFound(_0xbce949,null))['then'](function(_0x1ca7f8){if(_0x1ca7f8){var _0x6797ce=[];var _0x4f32d1={'success':[],'errors':[]};return db[_0x0360('0x60')][_0x0360('0x61')]()[_0x0360('0x29')](function(_0x367162){if(_0x4ca585[_0x0360('0x4e')][_0x0360('0x62')]&&_[_0x0360('0x63')](_0x4ca585['body']['tags'])){if(_0x4ca585[_0x0360('0x4e')]['tags'][_0x0360('0x3c')]){_0x4ca585[_0x0360('0x4e')][_0x0360('0x62')]=_0x4ca585[_0x0360('0x4e')][_0x0360('0x62')][_0x0360('0x64')](';')+';';}else{_0x4ca585['body'][_0x0360('0x62')]=null;}}else{_0x4ca585[_0x0360('0x4e')][_0x0360('0x62')]=null;}if(_0x4ca585['body']&&_['isArray'](_0x4ca585[_0x0360('0x4e')])){for(var _0x2af278=0x0;_0x2af278<_0x4ca585[_0x0360('0x4e')][_0x0360('0x3c')];_0x2af278+=0x1){_0x4ca585[_0x0360('0x4e')][_0x2af278]['ListId']=_0x4ca585['params']['id'];_0x6797ce[_0x0360('0x65')](_0x4ca585[_0x0360('0x4e')][_0x2af278]);}return BPromise['each'](_0x6797ce,function(_0x54050e){return db[_0x0360('0x60')][_0x0360('0x4d')](_[_0x0360('0x66')](_0x54050e,[_0x0360('0x5e'),'id'])||{},{'fields':_[_0x0360('0x4a')](_0x367162),'raw':!![]})[_0x0360('0x29')](function(_0x1d1b72){_0x4f32d1['success'][_0x0360('0x65')](_0x1d1b72[_0x0360('0x67')]);})[_0x0360('0x4c')](function(_0x5a33ee){_0x4f32d1[_0x0360('0x68')][_0x0360('0x65')]({'data':_0x54050e,'error':_0x5a33ee[_0x0360('0x69')]});});})[_0x0360('0x29')](function(_0x17cdd5){return _0x4f32d1;})[_0x0360('0x4c')](function(_0xa2ea2a){return _0xa2ea2a;});}else{_0xbce949[_0x0360('0x1e')](0x190)[_0x0360('0x1f')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0x0360('0x29')](respondWithResult(_0xbce949,null))[_0x0360('0x4c')](handleError(_0xbce949,null));};exports[_0x0360('0x6a')]=function(_0x8be010,_0x29fd5a,_0x202075){var _0x3159e0;return db['CmList'][_0x0360('0x4b')]({'where':{'id':_0x8be010[_0x0360('0x49')]['id']},'include':[{'model':db[_0x0360('0x6b')],'as':_0x0360('0x6c')}]})['then'](handleEntityNotFound(_0x29fd5a,null))[_0x0360('0x29')](function(_0x2f4459){if(_0x2f4459){_0x3159e0=_0x2f4459;return db[_0x0360('0x60')][_0x0360('0x32')];}})[_0x0360('0x29')](function(_0x439b3b){if(_0x439b3b){var _0x243e36={};var _0x4e6d51={};_0x4e6d51[_0x0360('0x39')]=_[_0x0360('0x6d')](_[_0x0360('0x4a')](_0x439b3b),_[_0x0360('0x36')](_0x3159e0['CustomFields'],function(_0x20d66c){return util[_0x0360('0x6e')](_0x0360('0x6f'),_0x20d66c['id']);}));_0x4e6d51[_0x0360('0x37')]=_[_0x0360('0x4a')](_0x8be010[_0x0360('0x37')]);_0x4e6d51[_0x0360('0x41')]=_['intersection'](_0x4e6d51['model'],_0x4e6d51[_0x0360('0x37')]);_0x243e36[_0x0360('0x3b')]=_[_0x0360('0x38')](_0x4e6d51[_0x0360('0x39')],qs[_0x0360('0x3a')](_0x8be010[_0x0360('0x37')][_0x0360('0x3a')]));_0x243e36[_0x0360('0x3b')]=_0x243e36[_0x0360('0x3b')][_0x0360('0x3c')]?_0x243e36[_0x0360('0x3b')]:_0x4e6d51['model'];if(!_0x8be010[_0x0360('0x37')][_0x0360('0x3d')](_0x0360('0x3e'))){_0x243e36['limit']=qs[_0x0360('0x23')](_0x8be010['query'][_0x0360('0x23')]);_0x243e36[_0x0360('0x20')]=qs['offset'](_0x8be010[_0x0360('0x37')][_0x0360('0x20')]);}_0x243e36[_0x0360('0x59')]=qs[_0x0360('0x3f')](_0x8be010[_0x0360('0x37')]['sort']);_0x243e36['where']=qs[_0x0360('0x41')](_[_0x0360('0x42')](_0x8be010[_0x0360('0x37')],_0x4e6d51[_0x0360('0x41')]));_0x243e36[_0x0360('0x70')]=!![];if(_0x8be010[_0x0360('0x37')][_0x0360('0x43')]){_0x243e36['where']=_[_0x0360('0x44')](_0x243e36['where'],{'$or':_[_0x0360('0x36')](_0x243e36['attributes'],function(_0x53ec2a){var _0xabd71a={};_0xabd71a[_0x53ec2a]={'$like':'%'+_0x8be010[_0x0360('0x37')][_0x0360('0x43')]+'%'};return _0xabd71a;})});}_0x243e36=_[_0x0360('0x44')]({},_0x243e36,_0x8be010[_0x0360('0x46')]);return _0x3159e0[_0x0360('0x6a')](_0x243e36);}})['then'](respondWithResult(_0x29fd5a,null))[_0x0360('0x4c')](handleError(_0x29fd5a,null));};exports['getContactsCsv']=function(_0xfff924,_0x24e0d2,_0x2b8817){var _0x1edc44;return db[_0x0360('0x47')]['find']({'where':{'id':_0xfff924[_0x0360('0x49')]['id']},'include':[{'model':db[_0x0360('0x6b')],'as':_0x0360('0x6c')}]})['then'](handleEntityNotFound(_0x24e0d2,null))['then'](function(_0x4e1956){if(_0x4e1956){_0x1edc44=_0x4e1956;return db[_0x0360('0x60')][_0x0360('0x32')];}})[_0x0360('0x29')](function(_0x4792e7){if(_0x4792e7){var _0x133aff={};var _0x1d5959={};_0x1d5959[_0x0360('0x39')]=_[_0x0360('0x6d')](_[_0x0360('0x4a')](_0x4792e7),_[_0x0360('0x36')](_0x1edc44[_0x0360('0x6c')],function(_0x19e425){return util['format'](_0x0360('0x6f'),_0x19e425['id']);}));_0x1d5959[_0x0360('0x37')]=_['keys'](_0xfff924[_0x0360('0x37')]);_0x1d5959[_0x0360('0x41')]=_['intersection'](_0x1d5959[_0x0360('0x39')],_0x1d5959[_0x0360('0x37')]);_0x133aff[_0x0360('0x3b')]=_['intersection'](_0x1d5959[_0x0360('0x39')],qs[_0x0360('0x3a')](_0xfff924[_0x0360('0x37')]['fields']));_0x133aff['attributes']=_0x133aff[_0x0360('0x3b')]['length']?_0x133aff['attributes']:_0x1d5959[_0x0360('0x39')];if(!_0xfff924['query'][_0x0360('0x3d')](_0x0360('0x3e'))){_0x133aff[_0x0360('0x23')]=qs[_0x0360('0x23')](_0xfff924[_0x0360('0x37')][_0x0360('0x23')]);_0x133aff[_0x0360('0x20')]=qs[_0x0360('0x20')](_0xfff924[_0x0360('0x37')][_0x0360('0x20')]);}_0x133aff[_0x0360('0x59')]=qs[_0x0360('0x3f')](_0xfff924[_0x0360('0x37')][_0x0360('0x3f')]);_0x133aff[_0x0360('0x40')]=qs[_0x0360('0x41')](_[_0x0360('0x42')](_0xfff924[_0x0360('0x37')],_0x1d5959[_0x0360('0x41')]));_0x133aff[_0x0360('0x70')]=!![];if(_0xfff924[_0x0360('0x37')][_0x0360('0x43')]){_0x133aff[_0x0360('0x40')]=_[_0x0360('0x44')](_0x133aff[_0x0360('0x40')],{'$or':_['map'](_0x133aff[_0x0360('0x3b')],function(_0x27d7cf){var _0x333190={};_0x333190[_0x27d7cf]={'$like':'%'+_0xfff924[_0x0360('0x37')][_0x0360('0x43')]+'%'};return _0x333190;})});}_0x133aff=_[_0x0360('0x44')]({},_0x133aff,_0xfff924[_0x0360('0x46')]);return _0x1edc44[_0x0360('0x6a')](_0x133aff);}})[_0x0360('0x29')](function(_0x104b93){if(!_['isEmpty'](_0x104b93)){var _0x371600=toCsv(_0x104b93);var _0x482625=Date[_0x0360('0x71')]();fs[_0x0360('0x72')](util[_0x0360('0x6e')](_0x0360('0x73'),_0x1edc44['id'],_0x482625),_0x371600);_0x24e0d2[_0x0360('0x74')](_0x0360('0x75'),'attachment;\x20filename='+util['format'](_0x0360('0x76'),_0x1edc44['id'],_0x482625));_0x24e0d2[_0x0360('0x74')](_0x0360('0x77'),'text/csv');return _0x24e0d2['download'](util['format'](_0x0360('0x73'),_0x1edc44['id'],_0x482625));}else{return _0x24e0d2[_0x0360('0x1c')](0xcc);}})[_0x0360('0x4c')](handleError(_0x24e0d2,null));};exports[_0x0360('0x78')]=function(_0x20ff6b,_0x57ec6d,_0x3f2403){var _0x2ef4a2;delete _0x20ff6b[_0x0360('0x4e')]['id'];return db['CmList'][_0x0360('0x58')]({'where':{'id':_0x20ff6b[_0x0360('0x49')]['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x57ec6d,null))['then'](function(_0x4e9667){if(_0x4e9667){return db['sequelize'][_0x0360('0x79')](function(_0x13bffb){return db['CmCustomField'][_0x0360('0x4d')](_0x20ff6b[_0x0360('0x4e')],{'transaction':_0x13bffb})[_0x0360('0x29')](function(_0x359e7b){_0x2ef4a2=_0x359e7b;return _0x4e9667[_0x0360('0x7a')](_0x359e7b,{'transaction':_0x13bffb});})['then'](function(){var _0xd7f913={'type':db[_0x0360('0x7b')]['TEXT'],'transaction':_0x13bffb};switch(_0x20ff6b[_0x0360('0x4e')][_0x0360('0x34')]){case _0x0360('0x7c'):_0xd7f913[_0x0360('0x34')]=db[_0x0360('0x7b')][_0x0360('0x7d')];break;case _0x0360('0x7e'):_0xd7f913[_0x0360('0x34')]=db[_0x0360('0x7b')][_0x0360('0x7f')];break;case'switch':_0xd7f913[_0x0360('0x34')]=db['Sequelize'][_0x0360('0x80')];_0xd7f913[_0x0360('0x81')]=![];break;default:}return db['sequelize'][_0x0360('0x82')][_0x0360('0x83')](_0x0360('0x84'),util[_0x0360('0x6e')]('cf_%s',_0x2ef4a2['id']),_0xd7f913);})[_0x0360('0x29')](function(){return _0x2ef4a2;});});}})[_0x0360('0x29')](respondWithResult(_0x57ec6d,null))[_0x0360('0x4c')](handleError(_0x57ec6d,null));};exports[_0x0360('0x85')]=function(_0x3ca8d9,_0xc01e66,_0x5cac82){var _0x530aa2={};var _0x5a82fa={};var _0x23d7aa;var _0x725450;return db[_0x0360('0x47')][_0x0360('0x58')]({'where':{'id':_0x3ca8d9['params']['id']}})[_0x0360('0x29')](handleEntityNotFound(_0xc01e66,null))[_0x0360('0x29')](function(_0x443d89){if(_0x443d89){_0x23d7aa=_0x443d89;_0x5a82fa[_0x0360('0x39')]=_[_0x0360('0x4a')](db['CmCustomField']['rawAttributes']);_0x5a82fa[_0x0360('0x37')]=_[_0x0360('0x4a')](_0x3ca8d9['query']);_0x5a82fa[_0x0360('0x41')]=_[_0x0360('0x38')](_0x5a82fa[_0x0360('0x39')],_0x5a82fa['query']);_0x530aa2[_0x0360('0x3b')]=_[_0x0360('0x38')](_0x5a82fa[_0x0360('0x39')],qs['fields'](_0x3ca8d9[_0x0360('0x37')]['fields']));_0x530aa2[_0x0360('0x3b')]=_0x530aa2['attributes']['length']?_0x530aa2['attributes']:_0x5a82fa[_0x0360('0x39')];_0x530aa2[_0x0360('0x59')]=qs[_0x0360('0x3f')](_0x3ca8d9['query']['sort']);_0x530aa2[_0x0360('0x40')]=qs[_0x0360('0x41')](_[_0x0360('0x42')](_0x3ca8d9[_0x0360('0x37')],_0x5a82fa['filters']));_0x530aa2[_0x0360('0x40')]=_[_0x0360('0x44')](_0x530aa2[_0x0360('0x40')],{'$or':[{'ListId':_0x443d89['id']},{'ListId':null}]});if(_0x3ca8d9[_0x0360('0x37')][_0x0360('0x43')]){_0x530aa2['where']=_[_0x0360('0x44')](_0x530aa2[_0x0360('0x40')],{'$or':_[_0x0360('0x36')](_0x530aa2['attributes'],function(_0x296020){var _0x4456c2={};_0x4456c2[_0x296020]={'$like':'%'+_0x3ca8d9[_0x0360('0x37')][_0x0360('0x43')]+'%'};return _0x4456c2;})});}_0x530aa2=_['merge']({},_0x530aa2,_0x3ca8d9[_0x0360('0x46')]);return db[_0x0360('0x6b')]['findAndCountAll'](_0x530aa2);}})[_0x0360('0x29')](respondWithResult(_0xc01e66,null))[_0x0360('0x4c')](handleError(_0xc01e66,null));};exports[_0x0360('0x86')]=function(_0x1bcb4b,_0x414e45,_0x480dc0){return db[_0x0360('0x47')]['find']({'where':{'id':_0x1bcb4b[_0x0360('0x49')]['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x414e45,null))[_0x0360('0x29')](function(_0x249615){if(_0x249615){return _0x249615['addAgents'](_0x1bcb4b[_0x0360('0x4e')][_0x0360('0x5e')],_['omit'](_0x1bcb4b[_0x0360('0x4e')],[_0x0360('0x5e'),'id'])||{})[_0x0360('0x87')](function(_0x863222){for(var _0xb8444b=0x0;_0xb8444b<_0x1bcb4b[_0x0360('0x4e')]['ids'][_0x0360('0x3c')];_0xb8444b+=0x1){socket[_0x0360('0x88')](_0x0360('0x89'),{'UserId':Number(_0x1bcb4b[_0x0360('0x4e')][_0x0360('0x5e')][_0xb8444b]),'CmListId':Number(_0x1bcb4b[_0x0360('0x49')]['id'])});}return _0x863222;});}})[_0x0360('0x29')](respondWithResult(_0x414e45,null))[_0x0360('0x4c')](handleError(_0x414e45,null));};exports[_0x0360('0x8a')]=function(_0x2974b6,_0x2b6b23,_0x44cdeb){return db[_0x0360('0x47')][_0x0360('0x4b')]({'where':{'id':_0x2974b6[_0x0360('0x49')]['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x2b6b23,null))['then'](function(_0x45a5fc){if(_0x45a5fc){return _0x45a5fc[_0x0360('0x8a')](_0x2974b6[_0x0360('0x37')][_0x0360('0x5e')])[_0x0360('0x29')](function(){if(_[_0x0360('0x63')](_0x2974b6['query'][_0x0360('0x5e')])){for(var _0x30d72d=0x0;_0x30d72d<_0x2974b6[_0x0360('0x37')][_0x0360('0x5e')][_0x0360('0x3c')];_0x30d72d+=0x1){socket[_0x0360('0x88')](_0x0360('0x8b'),{'UserId':Number(_0x2974b6[_0x0360('0x37')][_0x0360('0x5e')][_0x30d72d]),'CmListId':Number(_0x2974b6[_0x0360('0x49')]['id'])});}}else{socket['emit'](_0x0360('0x8b'),{'UserId':Number(_0x2974b6[_0x0360('0x37')][_0x0360('0x5e')]),'CmListId':Number(_0x2974b6[_0x0360('0x49')]['id'])});}});}})[_0x0360('0x29')](respondWithStatusCode(_0x2b6b23,null))['catch'](handleError(_0x2b6b23,null));};exports[_0x0360('0x8c')]=function(_0x381941,_0x2cfce5,_0x53f87e){var _0x4a1ba9={};var _0x15ac26={};var _0x3e791c;var _0x4e8734;return db[_0x0360('0x47')][_0x0360('0x58')]({'where':{'id':_0x381941[_0x0360('0x49')]['id']}})[_0x0360('0x29')](handleEntityNotFound(_0x2cfce5,null))[_0x0360('0x29')](function(_0x164ca7){if(_0x164ca7){_0x3e791c=_0x164ca7;_0x15ac26[_0x0360('0x39')]=_[_0x0360('0x4a')](db[_0x0360('0x8d')]['rawAttributes']);_0x15ac26[_0x0360('0x37')]=_['keys'](_0x381941['query']);_0x15ac26[_0x0360('0x41')]=_[_0x0360('0x38')](_0x15ac26[_0x0360('0x39')],_0x15ac26[_0x0360('0x37')]);_0x4a1ba9[_0x0360('0x3b')]=_[_0x0360('0x38')](_0x15ac26[_0x0360('0x39')],qs[_0x0360('0x3a')](_0x381941[_0x0360('0x37')]['fields']));_0x4a1ba9[_0x0360('0x3b')]=_0x4a1ba9['attributes'][_0x0360('0x3c')]?_0x4a1ba9['attributes']:_0x15ac26[_0x0360('0x39')];_0x4a1ba9[_0x0360('0x59')]=qs[_0x0360('0x3f')](_0x381941[_0x0360('0x37')]['sort']);_0x4a1ba9['where']=qs['filters'](_[_0x0360('0x42')](_0x381941[_0x0360('0x37')],_0x15ac26[_0x0360('0x41')]));if(_0x381941[_0x0360('0x37')]['filter']){_0x4a1ba9['where']=_['merge'](_0x4a1ba9[_0x0360('0x40')],{'$or':_[_0x0360('0x36')](_0x4a1ba9[_0x0360('0x3b')],function(_0x10d3eb){var _0x3accc5={};_0x3accc5[_0x10d3eb]={'$like':'%'+_0x381941['query']['filter']+'%'};return _0x3accc5;})});}_0x4a1ba9=_['merge']({},_0x4a1ba9,_0x381941[_0x0360('0x46')]);return _0x3e791c[_0x0360('0x8c')](_0x4a1ba9);}})[_0x0360('0x29')](function(_0x5aeeed){if(_0x5aeeed){_0x4e8734=_0x5aeeed[_0x0360('0x3c')];if(!_0x381941['query'][_0x0360('0x3d')](_0x0360('0x3e'))){_0x4a1ba9[_0x0360('0x23')]=qs[_0x0360('0x23')](_0x381941['query']['limit']);_0x4a1ba9[_0x0360('0x20')]=qs[_0x0360('0x20')](_0x381941['query'][_0x0360('0x20')]);}return _0x3e791c[_0x0360('0x8c')](_0x4a1ba9);}})[_0x0360('0x29')](function(_0x6e5810){if(_0x6e5810){return _0x6e5810?{'count':_0x4e8734,'rows':_0x6e5810}:null;}})[_0x0360('0x29')](respondWithResult(_0x2cfce5,null))[_0x0360('0x4c')](handleError(_0x2cfce5,null));};
\ No newline at end of file
index 8282613..ee68f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmList'];(function(_0x22e237,_0x4e94ff){var _0x3e48a9=function(_0x1c092a){while(--_0x1c092a){_0x22e237['push'](_0x22e237['shift']());}};_0x3e48a9(++_0x4e94ff);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var EventEmitter=require(_0x7995('0x0'));var CmList=require(_0x7995('0x1'))['db'][_0x7995('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0x7995('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7995('0x4'),'afterDestroy':_0x7995('0x5')};function emitEvent(_0x1902b4){return function(_0x462a03,_0x576d89,_0x744bea){CmListEvents[_0x7995('0x6')](_0x1902b4+':'+_0x462a03['id'],_0x462a03);CmListEvents[_0x7995('0x6')](_0x1902b4,_0x462a03);_0x744bea(null);};}for(var e in events){if(events[_0x7995('0x7')](e)){var event=events[e];CmList[_0x7995('0x8')](e,emitEvent(event));}}module[_0x7995('0x9')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5a7d41,_0x4447e2){_0x5a7d41=_0x5a7d41-0x0;var _0x98d8fa=_0x5fc3[_0x5a7d41];return _0x98d8fa;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index 364963c..5e3851f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd28=['rimraf','./cmList.attributes','exports','define','util','../../config/logger','moment','request-promise','path'];(function(_0x3f8197,_0x3544b2){var _0x428b9c=function(_0x3e9585){while(--_0x3e9585){_0x3f8197['push'](_0x3f8197['shift']());}};_0x428b9c(++_0x3544b2);}(_0xfd28,0x148));var _0x8fd2=function(_0xd1c39b,_0x16f0c6){_0xd1c39b=_0xd1c39b-0x0;var _0x58f5bc=_0xfd28[_0xd1c39b];return _0x58f5bc;};'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')]('CmList',attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb903=['rimraf','../../config/environment','./cmList.attributes','exports','cm_lists','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x28ee82,_0x5c252f){var _0x13cd70=function(_0x2b6762){while(--_0x2b6762){_0x28ee82['push'](_0x28ee82['shift']());}};_0x13cd70(++_0x5c252f);}(_0xb903,0x185));var _0x3b90=function(_0x20f8a0,_0x1cfb3c){_0x20f8a0=_0x20f8a0-0x0;var _0x55693a=_0xb903[_0x20f8a0];return _0x55693a;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var moment=require('moment');var BPromise=require(_0x3b90('0x4'));var rp=require(_0x3b90('0x5'));var fs=require('fs');var path=require(_0x3b90('0x6'));var rimraf=require(_0x3b90('0x7'));var config=require(_0x3b90('0x8'));var attributes=require(_0x3b90('0x9'));module[_0x3b90('0xa')]=function(_0x5acd76,_0x15b68f){return _0x5acd76['define']('CmList',attributes,{'tableName':_0x3b90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ebd57d6..0255341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x111b=['request','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','CmList,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis'];(function(_0xfbc824,_0x42853c){var _0x2d4191=function(_0x4305cc){while(--_0x4305cc){_0xfbc824['push'](_0xfbc824['shift']());}};_0x2d4191(++_0x42853c);}(_0x111b,0xbb));var _0xb111=function(_0x4a9281,_0x2d76d3){_0x4a9281=_0x4a9281-0x0;var _0x428de5=_0x111b[_0x4a9281];return _0x428de5;};'use strict';var _=require(_0xb111('0x0'));var util=require(_0xb111('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb111('0x2'));var fs=require('fs');var Redis=require(_0xb111('0x3'));var db=require(_0xb111('0x4'))['db'];var utils=require(_0xb111('0x5'));var logger=require(_0xb111('0x6'))(_0xb111('0x7'));var config=require(_0xb111('0x8'));var jayson=require(_0xb111('0x9'));var client=jayson[_0xb111('0xa')][_0xb111('0xb')]({'port':0x232a});config['redis']=_[_0xb111('0xc')](config['redis'],{'host':_0xb111('0xd'),'port':0x18eb});var socket=require(_0xb111('0xe'))(new Redis(config[_0xb111('0xf')]));require('./cmList.socket')['register'](socket);function respondWithRpcPromise(_0x18c70e,_0x3cf98b,_0x153e2a){return new BPromise(function(_0x13a0e5,_0x3a036d){return client[_0xb111('0x10')](_0x18c70e,_0x153e2a)[_0xb111('0x11')](function(_0x1e0888){logger[_0xb111('0x12')]('CmList,\x20%s,\x20%s',_0x3cf98b,_0xb111('0x13'));logger[_0xb111('0x14')](_0xb111('0x15'),_0x3cf98b,_0xb111('0x13'),JSON[_0xb111('0x16')](_0x1e0888));if(_0x1e0888['error']){if(_0x1e0888[_0xb111('0x17')][_0xb111('0x18')]===0x1f4){logger[_0xb111('0x17')](_0xb111('0x19'),_0x3cf98b,_0x1e0888[_0xb111('0x17')][_0xb111('0x1a')]);return _0x3a036d(_0x1e0888[_0xb111('0x17')][_0xb111('0x1a')]);}logger['error'](_0xb111('0x19'),_0x3cf98b,_0x1e0888[_0xb111('0x17')][_0xb111('0x1a')]);return _0x13a0e5(_0x1e0888[_0xb111('0x17')]['message']);}else{logger[_0xb111('0x12')](_0xb111('0x19'),_0x3cf98b,_0xb111('0x13'));_0x13a0e5(_0x1e0888[_0xb111('0x1b')][_0xb111('0x1a')]);}})[_0xb111('0x1c')](function(_0x5ab823){logger[_0xb111('0x17')](_0xb111('0x19'),_0x3cf98b,_0x5ab823);_0x3a036d(_0x5ab823);});});}
\ No newline at end of file
+var _0xf8da=['jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3c3709,_0x1408ea){var _0x7800c9=function(_0x1e726d){while(--_0x1e726d){_0x3c3709['push'](_0x3c3709['shift']());}};_0x7800c9(++_0x1408ea);}(_0xf8da,0x6e));var _0xaf8d=function(_0x52c6b9,_0x5d7ebb){_0x52c6b9=_0x52c6b9-0x0;var _0x2a9468=_0xf8da[_0x52c6b9];return _0x2a9468;};'use strict';var _=require(_0xaf8d('0x0'));var util=require('util');var moment=require(_0xaf8d('0x1'));var BPromise=require(_0xaf8d('0x2'));var rs=require(_0xaf8d('0x3'));var fs=require('fs');var Redis=require(_0xaf8d('0x4'));var db=require(_0xaf8d('0x5'))['db'];var utils=require(_0xaf8d('0x6'));var logger=require(_0xaf8d('0x7'))(_0xaf8d('0x8'));var config=require(_0xaf8d('0x9'));var jayson=require(_0xaf8d('0xa'));var client=jayson[_0xaf8d('0xb')]['http']({'port':0x232a});config['redis']=_[_0xaf8d('0xc')](config[_0xaf8d('0xd')],{'host':_0xaf8d('0xe'),'port':0x18eb});var socket=require(_0xaf8d('0xf'))(new Redis(config['redis']));require(_0xaf8d('0x10'))[_0xaf8d('0x11')](socket);function respondWithRpcPromise(_0x247481,_0x10680e,_0x4ea880){return new BPromise(function(_0x200549,_0x5a6e80){return client[_0xaf8d('0x12')](_0x247481,_0x4ea880)[_0xaf8d('0x13')](function(_0x4afd65){logger[_0xaf8d('0x14')](_0xaf8d('0x15'),_0x10680e,_0xaf8d('0x16'));logger[_0xaf8d('0x17')]('CmList,\x20%s,\x20%s,\x20%s',_0x10680e,'request\x20sent',JSON[_0xaf8d('0x18')](_0x4afd65));if(_0x4afd65[_0xaf8d('0x19')]){if(_0x4afd65[_0xaf8d('0x19')][_0xaf8d('0x1a')]===0x1f4){logger[_0xaf8d('0x19')](_0xaf8d('0x15'),_0x10680e,_0x4afd65[_0xaf8d('0x19')]['message']);return _0x5a6e80(_0x4afd65[_0xaf8d('0x19')][_0xaf8d('0x1b')]);}logger['error']('CmList,\x20%s,\x20%s',_0x10680e,_0x4afd65[_0xaf8d('0x19')][_0xaf8d('0x1b')]);return _0x200549(_0x4afd65[_0xaf8d('0x19')]['message']);}else{logger[_0xaf8d('0x14')]('CmList,\x20%s,\x20%s',_0x10680e,_0xaf8d('0x16'));_0x200549(_0x4afd65[_0xaf8d('0x1c')][_0xaf8d('0x1b')]);}})[_0xaf8d('0x1d')](function(_0x3cd2d9){logger[_0xaf8d('0x19')](_0xaf8d('0x15'),_0x10680e,_0x3cd2d9);_0x5a6e80(_0x3cd2d9);});});}
\ No newline at end of file
index a6c9de7..63c6270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3c6=['emit','removeListener','register','length','./cmList.events','remove','update'];(function(_0x4259cd,_0x253958){var _0x263b9a=function(_0x3fe643){while(--_0x3fe643){_0x4259cd['push'](_0x4259cd['shift']());}};_0x263b9a(++_0x253958);}(_0xa3c6,0x97));var _0x6a3c=function(_0x543f28,_0x216cab){_0x543f28=_0x543f28-0x0;var _0x951f97=_0xa3c6[_0x543f28];return _0x951f97;};'use strict';var CmListEvents=require(_0x6a3c('0x0'));var events=['save',_0x6a3c('0x1'),_0x6a3c('0x2')];function createListener(_0x3d8f2d,_0x5adeb6){return function(_0x50b735){_0x5adeb6[_0x6a3c('0x3')](_0x3d8f2d,_0x50b735);};}function removeListener(_0x5a9489,_0x4922ff){return function(){CmListEvents[_0x6a3c('0x4')](_0x5a9489,_0x4922ff);};}exports[_0x6a3c('0x5')]=function(_0x6b60af){for(var _0x32b2b9=0x0,_0x53a74a=events[_0x6a3c('0x6')];_0x32b2b9<_0x53a74a;_0x32b2b9++){var _0x1a6cdc=events[_0x32b2b9];var _0xea4738=createListener('cmList:'+_0x1a6cdc,_0x6b60af);CmListEvents['on'](_0x1a6cdc,_0xea4738);}};
\ No newline at end of file
+var _0x3305=['cmList:','./cmList.events','emit','removeListener','register','length'];(function(_0x51b2f1,_0x22c27a){var _0xf9ddf8=function(_0x20e84d){while(--_0x20e84d){_0x51b2f1['push'](_0x51b2f1['shift']());}};_0xf9ddf8(++_0x22c27a);}(_0x3305,0x103));var _0x5330=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x3305[_0x42cae2];return _0x5f256f;};'use strict';var CmListEvents=require(_0x5330('0x0'));var events=['save','remove','update'];function createListener(_0x46cc3f,_0x428587){return function(_0x449da6){_0x428587[_0x5330('0x1')](_0x46cc3f,_0x449da6);};}function removeListener(_0x1da03e,_0x37b1eb){return function(){CmListEvents[_0x5330('0x2')](_0x1da03e,_0x37b1eb);};}exports[_0x5330('0x3')]=function(_0x2bf48d){for(var _0x24b0df=0x0,_0x2682e0=events[_0x5330('0x4')];_0x24b0df<_0x2682e0;_0x24b0df++){var _0x33edbf=events[_0x24b0df];var _0xcfdabc=createListener(_0x5330('0x5')+_0x33edbf,_0x2bf48d);CmListEvents['on'](_0x33edbf,_0xcfdabc);}};
\ No newline at end of file
index 87aa503..b797efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd6=['addCustomField','addAgents','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','/:id/dispositions','addDisposition','addContacts'];(function(_0x4b72ae,_0x3da576){var _0x4996be=function(_0x478815){while(--_0x478815){_0x4b72ae['push'](_0x4b72ae['shift']());}};_0x4996be(++_0x3da576);}(_0xecd6,0x13b));var _0x6ecd=function(_0xc6e0c4,_0xa681d8){_0xc6e0c4=_0xc6e0c4-0x0;var _0x11442c=_0xecd6[_0xc6e0c4];return _0x11442c;};'use strict';var multer=require(_0x6ecd('0x0'));var util=require(_0x6ecd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6ecd('0x2')]();var fs_extra=require(_0x6ecd('0x3'));var auth=require(_0x6ecd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6ecd('0x5'));var controller=require(_0x6ecd('0x6'));router[_0x6ecd('0x7')]('/',auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x9')]);router[_0x6ecd('0x7')](_0x6ecd('0xa'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0xb')]);router[_0x6ecd('0x7')](_0x6ecd('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x6ecd('0x7')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x6ecd('0xd')]);router[_0x6ecd('0x7')](_0x6ecd('0xe'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0xf')]);router[_0x6ecd('0x7')]('/:id/contacts/csv',auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x10')]);router[_0x6ecd('0x7')](_0x6ecd('0x11'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x12')]);router[_0x6ecd('0x7')](_0x6ecd('0x13'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x14')]);router[_0x6ecd('0x15')]('/',auth[_0x6ecd('0x8')](),controller['create']);router[_0x6ecd('0x15')](_0x6ecd('0x16'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x17')]);router[_0x6ecd('0x15')](_0x6ecd('0xe'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x18')]);router[_0x6ecd('0x15')]('/:id/fields',auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x19')]);router[_0x6ecd('0x15')](_0x6ecd('0x13'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x1a')]);router[_0x6ecd('0x1b')](_0x6ecd('0xc'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x1c')]);router[_0x6ecd('0x1d')](_0x6ecd('0xc'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x1e')]);router[_0x6ecd('0x1d')](_0x6ecd('0x16'),auth['isAuthenticated'](),controller[_0x6ecd('0x1f')]);router[_0x6ecd('0x1d')](_0x6ecd('0x13'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x20')]);module[_0x6ecd('0x21')]=router;
\ No newline at end of file
+var _0x2bce=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','/:id/contacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addCustomField','put','update','delete','destroy','removeDispositions'];(function(_0x55e958,_0x5b3f43){var _0x398172=function(_0x518eb8){while(--_0x518eb8){_0x55e958['push'](_0x55e958['shift']());}};_0x398172(++_0x5b3f43);}(_0x2bce,0xd3));var _0xe2bc=function(_0x46204e,_0x3408da){_0x46204e=_0x46204e-0x0;var _0x243825=_0x2bce[_0x46204e];return _0x243825;};'use strict';var multer=require(_0xe2bc('0x0'));var util=require(_0xe2bc('0x1'));var path=require(_0xe2bc('0x2'));var timeout=require(_0xe2bc('0x3'));var express=require(_0xe2bc('0x4'));var router=express[_0xe2bc('0x5')]();var fs_extra=require(_0xe2bc('0x6'));var auth=require(_0xe2bc('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe2bc('0x8'));var controller=require(_0xe2bc('0x9'));router[_0xe2bc('0xa')]('/',auth[_0xe2bc('0xb')](),controller[_0xe2bc('0xc')]);router[_0xe2bc('0xa')](_0xe2bc('0xd'),auth['isAuthenticated'](),controller[_0xe2bc('0xe')]);router[_0xe2bc('0xa')](_0xe2bc('0xf'),auth[_0xe2bc('0xb')](),controller['show']);router['get'](_0xe2bc('0x10'),auth['isAuthenticated'](),controller['getDispositions']);router[_0xe2bc('0xa')](_0xe2bc('0x11'),auth[_0xe2bc('0xb')](),controller['getContacts']);router[_0xe2bc('0xa')](_0xe2bc('0x12'),auth['isAuthenticated'](),controller[_0xe2bc('0x13')]);router['get'](_0xe2bc('0x14'),auth['isAuthenticated'](),controller[_0xe2bc('0x15')]);router[_0xe2bc('0xa')](_0xe2bc('0x16'),auth[_0xe2bc('0xb')](),controller[_0xe2bc('0x17')]);router[_0xe2bc('0x18')]('/',auth[_0xe2bc('0xb')](),controller[_0xe2bc('0x19')]);router['post'](_0xe2bc('0x10'),auth[_0xe2bc('0xb')](),controller[_0xe2bc('0x1a')]);router['post'](_0xe2bc('0x11'),auth[_0xe2bc('0xb')](),controller[_0xe2bc('0x1b')]);router[_0xe2bc('0x18')]('/:id/fields',auth[_0xe2bc('0xb')](),controller[_0xe2bc('0x1c')]);router[_0xe2bc('0x18')](_0xe2bc('0x16'),auth['isAuthenticated'](),controller['addAgents']);router[_0xe2bc('0x1d')]('/:id',auth['isAuthenticated'](),controller[_0xe2bc('0x1e')]);router[_0xe2bc('0x1f')](_0xe2bc('0xf'),auth['isAuthenticated'](),controller[_0xe2bc('0x20')]);router[_0xe2bc('0x1f')](_0xe2bc('0x10'),auth[_0xe2bc('0xb')](),controller[_0xe2bc('0x21')]);router['delete']('/:id/users',auth[_0xe2bc('0xb')](),controller['removeAgents']);module[_0xe2bc('0x22')]=router;
\ No newline at end of file
index f595b07..fd3cfd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7993=['getDataValue','field','STRING','sequelize','exports','VIRTUAL'];(function(_0x37d579,_0x436605){var _0x229044=function(_0x469d90){while(--_0x469d90){_0x37d579['push'](_0x37d579['shift']());}};_0x229044(++_0x436605);}(_0x7993,0x1d1));var _0x3799=function(_0x532c13,_0xd8d672){_0x532c13=_0x532c13-0x0;var _0x565290=_0x7993[_0x532c13];return _0x565290;};'use strict';var Sequelize=require(_0x3799('0x0'));module[_0x3799('0x1')]={'name':{'type':Sequelize[_0x3799('0x2')],'get':function(_0x560604){return this[_0x3799('0x3')](_0x3799('0x4'));}},'field':{'type':Sequelize[_0x3799('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0x3799('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x3799('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0xb04b=['STRING','sequelize','exports','VIRTUAL','getDataValue','field'];(function(_0x3c43f6,_0x429058){var _0x5677a4=function(_0x13b06b){while(--_0x13b06b){_0x3c43f6['push'](_0x3c43f6['shift']());}};_0x5677a4(++_0x429058);}(_0xb04b,0x199));var _0xbb04=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb04b[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xbb04('0x0'));module[_0xbb04('0x1')]={'name':{'type':Sequelize[_0xbb04('0x2')],'get':function(_0x2e9e62){return this[_0xbb04('0x3')](_0xbb04('0x4'));}},'field':{'type':Sequelize[_0xbb04('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0xbb04('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xbb04('0x5')],'allowNull':![]}};
\ No newline at end of file
index efafdbf..bc3a08c 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(_0x1f6582,_0x67dd80){var _0x1d5127=function(_0x3d8ca9){while(--_0x3d8ca9){_0x1f6582['push'](_0x1f6582['shift']());}};_0x1d5127(++_0x67dd80);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x1f043c,_0xed33e4){var _0x11adac=function(_0x303e3d){while(--_0x303e3d){_0x1f043c['push'](_0x1f043c['shift']());}};_0x11adac(++_0xed33e4);}(_0x7a54,0x106));var _0x47a5=function(_0xab4442,_0x4fd5bd){_0xab4442=_0xab4442-0x0;var _0x35dd56=_0x7a54[_0xab4442];return _0x35dd56;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index e7d1314..eb61af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223b=['path','rimraf','../../config/environment','Condition','tools_conditions','../../config/logger','api','bluebird','request-promise'];(function(_0x3865d7,_0x3ba37b){var _0x321441=function(_0x3f32f2){while(--_0x3f32f2){_0x3865d7['push'](_0x3865d7['shift']());}};_0x321441(++_0x3ba37b);}(_0x223b,0x1d9));var _0xb223=function(_0x322d5f,_0x348a9d){_0x322d5f=_0x322d5f-0x0;var _0x4fec46=_0x223b[_0x322d5f];return _0x4fec46;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb223('0x0'))(_0xb223('0x1'));var moment=require('moment');var BPromise=require(_0xb223('0x2'));var rp=require(_0xb223('0x3'));var fs=require('fs');var path=require(_0xb223('0x4'));var rimraf=require(_0xb223('0x5'));var config=require(_0xb223('0x6'));var attributes=require('./condition.attributes');module['exports']=function(_0x431a30,_0x236049){return _0x431a30['define'](_0xb223('0x7'),attributes,{'tableName':_0xb223('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb31e=['./condition.attributes','exports','define','tools_conditions','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0x1c9bf2,_0x20db65){var _0x38a9ef=function(_0x387fef){while(--_0x387fef){_0x1c9bf2['push'](_0x1c9bf2['shift']());}};_0x38a9ef(++_0x20db65);}(_0xb31e,0xc2));var _0xeb31=function(_0x211821,_0x274635){_0x211821=_0x211821-0x0;var _0x23f587=_0xb31e[_0x211821];return _0x23f587;};'use strict';var _=require('lodash');var util=require(_0xeb31('0x0'));var logger=require(_0xeb31('0x1'))(_0xeb31('0x2'));var moment=require('moment');var BPromise=require(_0xeb31('0x3'));var rp=require(_0xeb31('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeb31('0x5'));var config=require('../../config/environment');var attributes=require(_0xeb31('0x6'));module[_0xeb31('0x7')]=function(_0x3284d2,_0x2de7ab){return _0x3284d2[_0xeb31('0x8')]('Condition',attributes,{'tableName':_0xeb31('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd6032d..03b5b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbecc=['../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Condition,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x15c795,_0x303f38){var _0x3bac6c=function(_0x33fc08){while(--_0x33fc08){_0x15c795['push'](_0x15c795['shift']());}};_0x3bac6c(++_0x303f38);}(_0xbecc,0x192));var _0xcbec=function(_0x40d0f3,_0xc9a74b){_0x40d0f3=_0x40d0f3-0x0;var _0x4f1029=_0xbecc[_0x40d0f3];return _0x4f1029;};'use strict';var _=require(_0xcbec('0x0'));var util=require('util');var moment=require(_0xcbec('0x1'));var BPromise=require(_0xcbec('0x2'));var rs=require(_0xcbec('0x3'));var fs=require('fs');var Redis=require(_0xcbec('0x4'));var db=require(_0xcbec('0x5'))['db'];var utils=require(_0xcbec('0x6'));var logger=require('../../config/logger')(_0xcbec('0x7'));var config=require(_0xcbec('0x8'));var jayson=require(_0xcbec('0x9'));var client=jayson['client'][_0xcbec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33fbf8,_0xa2ab8f,_0x582fe8){return new BPromise(function(_0x3fca6a,_0x11e015){return client[_0xcbec('0xb')](_0x33fbf8,_0x582fe8)[_0xcbec('0xc')](function(_0x294bbe){logger[_0xcbec('0xd')]('Condition,\x20%s,\x20%s',_0xa2ab8f,'request\x20sent');logger[_0xcbec('0xe')](_0xcbec('0xf'),_0xa2ab8f,_0xcbec('0x10'),JSON[_0xcbec('0x11')](_0x294bbe));if(_0x294bbe['error']){if(_0x294bbe[_0xcbec('0x12')][_0xcbec('0x13')]===0x1f4){logger['error'](_0xcbec('0x14'),_0xa2ab8f,_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);return _0x11e015(_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);}logger['error'](_0xcbec('0x14'),_0xa2ab8f,_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);return _0x3fca6a(_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);}else{logger[_0xcbec('0xd')](_0xcbec('0x14'),_0xa2ab8f,_0xcbec('0x10'));_0x3fca6a(_0x294bbe[_0xcbec('0x16')][_0xcbec('0x15')]);}})[_0xcbec('0x17')](function(_0x4d88c3){logger[_0xcbec('0x12')](_0xcbec('0x14'),_0xa2ab8f,_0x4d88c3);_0x11e015(_0x4d88c3);});});}
\ No newline at end of file
+var _0xafcb=['http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x15f1f5,_0x5eac89){var _0x1f45d7=function(_0xbe5a5d){while(--_0xbe5a5d){_0x15f1f5['push'](_0x15f1f5['shift']());}};_0x1f45d7(++_0x5eac89);}(_0xafcb,0x1ee));var _0xbafc=function(_0x27bb59,_0xa8c8e1){_0x27bb59=_0x27bb59-0x0;var _0x5e2a64=_0xafcb[_0x27bb59];return _0x5e2a64;};'use strict';var _=require(_0xbafc('0x0'));var util=require(_0xbafc('0x1'));var moment=require(_0xbafc('0x2'));var BPromise=require('bluebird');var rs=require(_0xbafc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbafc('0x4'))['db'];var utils=require(_0xbafc('0x5'));var logger=require(_0xbafc('0x6'))(_0xbafc('0x7'));var config=require('../../config/environment');var jayson=require(_0xbafc('0x8'));var client=jayson[_0xbafc('0x9')][_0xbafc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b66e0,_0x205a2b,_0x18c7a4){return new BPromise(function(_0x464e1e,_0x15d87f){return client[_0xbafc('0xb')](_0x5b66e0,_0x18c7a4)[_0xbafc('0xc')](function(_0x7a267f){logger[_0xbafc('0xd')](_0xbafc('0xe'),_0x205a2b,_0xbafc('0xf'));logger[_0xbafc('0x10')](_0xbafc('0x11'),_0x205a2b,'request\x20sent',JSON[_0xbafc('0x12')](_0x7a267f));if(_0x7a267f['error']){if(_0x7a267f[_0xbafc('0x13')][_0xbafc('0x14')]===0x1f4){logger['error'](_0xbafc('0xe'),_0x205a2b,_0x7a267f[_0xbafc('0x13')][_0xbafc('0x15')]);return _0x15d87f(_0x7a267f[_0xbafc('0x13')][_0xbafc('0x15')]);}logger[_0xbafc('0x13')]('Condition,\x20%s,\x20%s',_0x205a2b,_0x7a267f[_0xbafc('0x13')][_0xbafc('0x15')]);return _0x464e1e(_0x7a267f[_0xbafc('0x13')][_0xbafc('0x15')]);}else{logger['info']('Condition,\x20%s,\x20%s',_0x205a2b,_0xbafc('0xf'));_0x464e1e(_0x7a267f[_0xbafc('0x16')]['message']);}})[_0xbafc('0x17')](function(_0x802d32){logger['error']('Condition,\x20%s,\x20%s',_0x205a2b,_0x802d32);_0x15d87f(_0x802d32);});});}
\ No newline at end of file
index 5d24a2f..247d7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9207=['fs-extra','../../components/auth/service','../../components/interaction/service','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x520c8c,_0xc553f6){var _0x2408a4=function(_0x34d796){while(--_0x34d796){_0x520c8c['push'](_0x520c8c['shift']());}};_0x2408a4(++_0xc553f6);}(_0x9207,0x127));var _0x7920=function(_0x41ecfc,_0x54f670){_0x41ecfc=_0x41ecfc-0x0;var _0x4cdc47=_0x9207[_0x41ecfc];return _0x4cdc47;};'use strict';var multer=require(_0x7920('0x0'));var util=require(_0x7920('0x1'));var path=require(_0x7920('0x2'));var timeout=require('connect-timeout');var express=require(_0x7920('0x3'));var router=express[_0x7920('0x4')]();var fs_extra=require(_0x7920('0x5'));var auth=require(_0x7920('0x6'));var interaction=require(_0x7920('0x7'));var config=require('../../config/environment');var controller=require('./condition.controller');router[_0x7920('0x8')](_0x7920('0x9'),auth[_0x7920('0xa')](),controller[_0x7920('0xb')]);router[_0x7920('0xc')](_0x7920('0x9'),auth['isAuthenticated'](),controller[_0x7920('0xd')]);module[_0x7920('0xe')]=router;
\ No newline at end of file
+var _0xd481=['../../config/environment','put','/:id','update','delete','isAuthenticated','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x1da7f4,_0x567ec6){var _0x284a2a=function(_0x651f82){while(--_0x651f82){_0x1da7f4['push'](_0x1da7f4['shift']());}};_0x284a2a(++_0x567ec6);}(_0xd481,0x1e4));var _0x1d48=function(_0x2e83f6,_0x5167e7){_0x2e83f6=_0x2e83f6-0x0;var _0x308c04=_0xd481[_0x2e83f6];return _0x308c04;};'use strict';var multer=require(_0x1d48('0x0'));var util=require('util');var path=require(_0x1d48('0x1'));var timeout=require(_0x1d48('0x2'));var express=require('express');var router=express[_0x1d48('0x3')]();var fs_extra=require(_0x1d48('0x4'));var auth=require(_0x1d48('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1d48('0x6'));var controller=require('./condition.controller');router[_0x1d48('0x7')](_0x1d48('0x8'),auth['isAuthenticated'](),controller[_0x1d48('0x9')]);router[_0x1d48('0xa')](_0x1d48('0x8'),auth[_0x1d48('0xb')](),controller[_0x1d48('0xc')]);module[_0x1d48('0xd')]=router;
\ No newline at end of file
index 3d8d1d4..f4f5a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['STRING','sequelize'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xb7e7[_0x3c4737];return _0x2bb926;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x383627,_0x5be16e){var _0x2c16a0=function(_0x569b72){while(--_0x569b72){_0x383627['push'](_0x383627['shift']());}};_0x2c16a0(++_0x5be16e);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index 585f0d7..203a9e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc5b=['bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','Dashboard','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','clone','body','omit','createdAt','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','getItems','findOne','DashboardItem','hasOwnProperty','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x3d75b6,_0x1363c7){var _0x312494=function(_0x179309){while(--_0x179309){_0x3d75b6['push'](_0x3d75b6['shift']());}};_0x312494(++_0x1363c7);}(_0xfc5b,0x79));var _0xbfc5=function(_0x6ac2b9,_0x37c01d){_0x6ac2b9=_0x6ac2b9-0x0;var _0x1b2628=_0xfc5b[_0x6ac2b9];return _0x1b2628;};'use strict';var emlformat=require(_0xbfc5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbfc5('0x1'));var jsonpatch=require(_0xbfc5('0x2'));var rp=require(_0xbfc5('0x3'));var moment=require(_0xbfc5('0x4'));var BPromise=require(_0xbfc5('0x5'));var Mustache=require('mustache');var util=require(_0xbfc5('0x6'));var path=require(_0xbfc5('0x7'));var sox=require('sox');var csv=require(_0xbfc5('0x8'));var ejs=require(_0xbfc5('0x9'));var fs=require('fs');var fs_extra=require(_0xbfc5('0xa'));var _=require(_0xbfc5('0xb'));var squel=require(_0xbfc5('0xc'));var crypto=require('crypto');var jsforce=require(_0xbfc5('0xd'));var deskjs=require(_0xbfc5('0xe'));var toCsv=require(_0xbfc5('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbfc5('0xf'));var authService=require(_0xbfc5('0x10'));var qs=require(_0xbfc5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbfc5('0x12'))(_0xbfc5('0x13'));var utils=require(_0xbfc5('0x14'));var config=require(_0xbfc5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xbfc5('0x16'))['db'];config[_0xbfc5('0x17')]=_[_0xbfc5('0x18')](config[_0xbfc5('0x17')],{'host':_0xbfc5('0x19'),'port':0x18eb});var socket=require(_0xbfc5('0x1a'))(new Redis(config['redis']));require(_0xbfc5('0x1b'))[_0xbfc5('0x1c')](socket);function respondWithStatusCode(_0x3d4465,_0x4a4eaf){_0x4a4eaf=_0x4a4eaf||0xcc;return function(_0x437bdf){if(_0x437bdf){return _0x3d4465[_0xbfc5('0x1d')](_0x4a4eaf);}return _0x3d4465['status'](_0x4a4eaf)[_0xbfc5('0x1e')]();};}function respondWithResult(_0x2f5dcf,_0x4fac81){_0x4fac81=_0x4fac81||0xc8;return function(_0x5ff5aa){if(_0x5ff5aa){return _0x2f5dcf['status'](_0x4fac81)['json'](_0x5ff5aa);}};}function respondWithFilteredResult(_0x113759,_0x4bb880){return function(_0x16fe85){if(_0x16fe85){var _0x4289cb=typeof _0x4bb880[_0xbfc5('0x1f')]===_0xbfc5('0x20')&&typeof _0x4bb880[_0xbfc5('0x21')]===_0xbfc5('0x20');var _0x3d7da8=_0x16fe85[_0xbfc5('0x22')];var _0xed601e=_0x4289cb?0x0:_0x4bb880[_0xbfc5('0x1f')];var _0x49c25e=_0x4289cb?_0x16fe85[_0xbfc5('0x22')]:_0x4bb880[_0xbfc5('0x1f')]+_0x4bb880[_0xbfc5('0x21')];var _0x3b59fa;if(_0x49c25e>=_0x3d7da8){_0x49c25e=_0x3d7da8;_0x3b59fa=0xc8;}else{_0x3b59fa=0xce;}_0x113759[_0xbfc5('0x23')](_0x3b59fa);return _0x113759[_0xbfc5('0x24')](_0xbfc5('0x25'),_0xed601e+'-'+_0x49c25e+'/'+_0x3d7da8)['json'](_0x16fe85);}return null;};}function patchUpdates(_0xa0c0bd){return function(_0x1437b9){try{jsonpatch[_0xbfc5('0x26')](_0x1437b9,_0xa0c0bd,!![]);}catch(_0x1c191b){return BPromise[_0xbfc5('0x27')](_0x1c191b);}return _0x1437b9[_0xbfc5('0x28')]();};}function saveUpdates(_0x147fb6,_0x47a069){return function(_0x22580a){if(_0x22580a){return _0x22580a[_0xbfc5('0x29')](_0x147fb6)[_0xbfc5('0x2a')](function(_0x465725){return _0x465725;});}return null;};}function removeEntity(_0x6a6ec0,_0x42a795){return function(_0x29aaf1){if(_0x29aaf1){return _0x29aaf1[_0xbfc5('0x2b')]()[_0xbfc5('0x2a')](function(){var _0x5c1fd1=_0x29aaf1[_0xbfc5('0x2c')]({'plain':!![]});var _0x2e4db7=_0xbfc5('0x2d');return db[_0xbfc5('0x2e')]['destroy']({'where':{'type':_0x2e4db7,'resourceId':_0x5c1fd1['id']}})['then'](function(){return _0x29aaf1;});})[_0xbfc5('0x2a')](function(){_0x6a6ec0[_0xbfc5('0x23')](0xcc)[_0xbfc5('0x1e')]();});}};}function handleEntityNotFound(_0x31705f,_0x2f3e43){return function(_0x1a752b){if(!_0x1a752b){_0x31705f['sendStatus'](0x194);}return _0x1a752b;};}function handleError(_0x14012a,_0x29e186){_0x29e186=_0x29e186||0x1f4;return function(_0x2a4500){logger[_0xbfc5('0x2f')](_0x2a4500[_0xbfc5('0x30')]);if(_0x2a4500['name']){delete _0x2a4500[_0xbfc5('0x31')];}_0x14012a[_0xbfc5('0x23')](_0x29e186)[_0xbfc5('0x32')](_0x2a4500);};}exports[_0xbfc5('0x33')]=function(_0x30fbe0,_0x178140){var _0x55fe79={},_0x37d10c={},_0x5d7c55={'count':0x0,'rows':[]};var _0x3d6bab=_['map'](db[_0xbfc5('0x34')][_0xbfc5('0x35')],function(_0x5eab94){return{'name':_0x5eab94[_0xbfc5('0x36')],'type':_0x5eab94[_0xbfc5('0x37')][_0xbfc5('0x38')]};});_0x37d10c[_0xbfc5('0x39')]=_[_0xbfc5('0x3a')](_0x3d6bab,_0xbfc5('0x31'));_0x37d10c['query']=_[_0xbfc5('0x3b')](_0x30fbe0[_0xbfc5('0x3c')]);_0x37d10c[_0xbfc5('0x3d')]=_[_0xbfc5('0x3e')](_0x37d10c['model'],_0x37d10c['query']);_0x55fe79[_0xbfc5('0x3f')]=_[_0xbfc5('0x3e')](_0x37d10c[_0xbfc5('0x39')],qs[_0xbfc5('0x40')](_0x30fbe0[_0xbfc5('0x3c')]['fields']));_0x55fe79[_0xbfc5('0x3f')]=_0x55fe79['attributes']['length']?_0x55fe79[_0xbfc5('0x3f')]:_0x37d10c[_0xbfc5('0x39')];if(!_0x30fbe0['query']['hasOwnProperty']('nolimit')){_0x55fe79[_0xbfc5('0x21')]=qs[_0xbfc5('0x21')](_0x30fbe0['query'][_0xbfc5('0x21')]);_0x55fe79[_0xbfc5('0x1f')]=qs['offset'](_0x30fbe0[_0xbfc5('0x3c')][_0xbfc5('0x1f')]);}_0x55fe79[_0xbfc5('0x41')]=qs[_0xbfc5('0x42')](_0x30fbe0[_0xbfc5('0x3c')]['sort']);_0x55fe79['where']=qs['filters'](_[_0xbfc5('0x43')](_0x30fbe0[_0xbfc5('0x3c')],_0x37d10c[_0xbfc5('0x3d')]),_0x3d6bab);if(_0x30fbe0['query'][_0xbfc5('0x44')]){_0x55fe79['where']=_[_0xbfc5('0x45')](_0x55fe79[_0xbfc5('0x46')],{'$or':_['map'](_0x3d6bab,function(_0x59dda7){if(_0x59dda7[_0xbfc5('0x37')]!==_0xbfc5('0x47')){var _0x33098a={};_0x33098a[_0x59dda7[_0xbfc5('0x31')]]={'$like':'%'+_0x30fbe0[_0xbfc5('0x3c')][_0xbfc5('0x44')]+'%'};return _0x33098a;}})});}_0x55fe79=_[_0xbfc5('0x45')]({},_0x55fe79,_0x30fbe0[_0xbfc5('0x48')]);var _0xc80bc7={'where':_0x55fe79[_0xbfc5('0x46')]};return db[_0xbfc5('0x34')]['count'](_0xc80bc7)[_0xbfc5('0x2a')](function(_0x40baec){_0x5d7c55[_0xbfc5('0x22')]=_0x40baec;if(_0x30fbe0[_0xbfc5('0x3c')][_0xbfc5('0x49')]){_0x55fe79['include']=[{'all':!![]}];}return db[_0xbfc5('0x34')][_0xbfc5('0x4a')](_0x55fe79);})[_0xbfc5('0x2a')](function(_0x41cc4c){_0x5d7c55[_0xbfc5('0x4b')]=_0x41cc4c;return _0x5d7c55;})[_0xbfc5('0x2a')](respondWithFilteredResult(_0x178140,_0x55fe79))[_0xbfc5('0x4c')](handleError(_0x178140,null));};exports[_0xbfc5('0x4d')]=function(_0x344f8e,_0x510c50){var _0x518e15={'raw':![],'where':{'id':_0x344f8e[_0xbfc5('0x4e')]['id']}},_0x18a93b={};_0x18a93b[_0xbfc5('0x39')]=_['keys'](db[_0xbfc5('0x34')][_0xbfc5('0x35')]);_0x18a93b[_0xbfc5('0x3c')]=_[_0xbfc5('0x3b')](_0x344f8e['query']);_0x18a93b['filters']=_['intersection'](_0x18a93b[_0xbfc5('0x39')],_0x18a93b[_0xbfc5('0x3c')]);_0x518e15[_0xbfc5('0x3f')]=_[_0xbfc5('0x3e')](_0x18a93b['model'],qs[_0xbfc5('0x40')](_0x344f8e[_0xbfc5('0x3c')][_0xbfc5('0x40')]));_0x518e15[_0xbfc5('0x3f')]=_0x518e15[_0xbfc5('0x3f')][_0xbfc5('0x4f')]?_0x518e15[_0xbfc5('0x3f')]:_0x18a93b[_0xbfc5('0x39')];if(_0x344f8e[_0xbfc5('0x3c')]['includeAll']){_0x518e15[_0xbfc5('0x50')]=[{'all':!![]}];}_0x518e15=_['merge']({},_0x518e15,_0x344f8e[_0xbfc5('0x48')]);return db[_0xbfc5('0x34')][_0xbfc5('0x51')](_0x518e15)[_0xbfc5('0x2a')](handleEntityNotFound(_0x510c50,null))[_0xbfc5('0x2a')](respondWithResult(_0x510c50,null))[_0xbfc5('0x4c')](handleError(_0x510c50,null));};exports[_0xbfc5('0x52')]=function(_0x1fd27e,_0x2c22da){return db['Dashboard'][_0xbfc5('0x52')](_0x1fd27e['body'],{})[_0xbfc5('0x2a')](function(_0xfeb96e){var _0x120dfe=_0x1fd27e['user'][_0xbfc5('0x2c')]({'plain':!![]});if(!_0x120dfe)throw new Error(_0xbfc5('0x53'));if(_0x120dfe[_0xbfc5('0x54')]===_0xbfc5('0x55')){var _0x3a9a2d=_0xfeb96e[_0xbfc5('0x2c')]({'plain':!![]});var _0x2f9554=_0xbfc5('0x2d');return db['UserProfileSection'][_0xbfc5('0x51')]({'where':{'name':_0x2f9554,'userProfileId':_0x120dfe[_0xbfc5('0x56')]},'raw':!![]})['then'](function(_0x25eae3){if(_0x25eae3&&_0x25eae3['autoAssociation']===0x0){return db[_0xbfc5('0x2e')][_0xbfc5('0x52')]({'name':_0x3a9a2d[_0xbfc5('0x31')],'resourceId':_0x3a9a2d['id'],'type':_0x25eae3['name'],'sectionId':_0x25eae3['id']},{})[_0xbfc5('0x2a')](function(){return _0xfeb96e;});}else{return _0xfeb96e;}})[_0xbfc5('0x4c')](function(_0x38950d){logger[_0xbfc5('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38950d);throw _0x38950d;});}return _0xfeb96e;})[_0xbfc5('0x2a')](respondWithResult(_0x2c22da,0xc9))[_0xbfc5('0x4c')](handleError(_0x2c22da,null));};exports[_0xbfc5('0x57')]=function(_0xbd61c9,_0x139ec5){var _0x539b7b={'where':{'id':_0xbd61c9[_0xbfc5('0x4e')]['id']}},_0x28d66c={};_0x28d66c['model']=_['keys'](db['Dashboard'][_0xbfc5('0x35')]);_0x539b7b[_0xbfc5('0x3f')]=_[_0xbfc5('0x3e')](_0x28d66c[_0xbfc5('0x39')],qs['fields'](_0xbd61c9[_0xbfc5('0x3c')][_0xbfc5('0x40')]));_0x539b7b[_0xbfc5('0x3f')]=_0x539b7b[_0xbfc5('0x3f')][_0xbfc5('0x4f')]?_0x539b7b[_0xbfc5('0x3f')]:_0x28d66c[_0xbfc5('0x39')];if(_0xbd61c9[_0xbfc5('0x3c')][_0xbfc5('0x49')]){_0x539b7b[_0xbfc5('0x50')]=[{'all':!![]}];}_0x539b7b=_['merge']({},_0x539b7b,_0xbd61c9[_0xbfc5('0x48')]);return db['Dashboard'][_0xbfc5('0x51')](_0x539b7b)[_0xbfc5('0x2a')](handleEntityNotFound(_0x139ec5,null))[_0xbfc5('0x2a')](function(_0x2fa821){if(_0x2fa821){var _0x236623=_0x2fa821['get']({'plain':!![]});_0x236623=qs['omit'](_0x236623,['id','createdAt','updatedAt']);_0xbd61c9[_0xbfc5('0x58')]=_[_0xbfc5('0x59')](_0xbd61c9[_0xbfc5('0x58')],['id',_0xbfc5('0x5a'),'updatedAt']);return db[_0xbfc5('0x34')][_0xbfc5('0x52')](_[_0xbfc5('0x45')](_0x236623,_0xbd61c9[_0xbfc5('0x58')]),{'include':_0xbd61c9[_0xbfc5('0x3c')][_0xbfc5('0x49')]?[{'all':!![]}]:undefined})[_0xbfc5('0x2a')](function(_0x5514eb){var _0x5342d0=_0xbd61c9['user']['get']({'plain':!![]});if(!_0x5342d0)throw new Error(_0xbfc5('0x53'));if(_0x5342d0['role']===_0xbfc5('0x55')){var _0x2ff732=_0x5514eb[_0xbfc5('0x2c')]({'plain':!![]});var _0x479549=_0xbfc5('0x2d');return db[_0xbfc5('0x5b')][_0xbfc5('0x51')]({'where':{'name':_0x479549,'userProfileId':_0x5342d0[_0xbfc5('0x56')]},'raw':!![]})[_0xbfc5('0x2a')](function(_0x382c11){if(_0x382c11&&_0x382c11[_0xbfc5('0x5c')]===0x0){return db[_0xbfc5('0x2e')][_0xbfc5('0x52')]({'name':_0x2ff732[_0xbfc5('0x31')],'resourceId':_0x2ff732['id'],'type':_0x382c11['name'],'sectionId':_0x382c11['id']},{})['then'](function(){return _0x5514eb;});}else{return _0x5514eb;}})[_0xbfc5('0x4c')](function(_0x478da0){logger['error'](_0xbfc5('0x5d'),_0x478da0);throw _0x478da0;});}return _0x5514eb;});}})[_0xbfc5('0x2a')](respondWithResult(_0x139ec5,0xc9))[_0xbfc5('0x4c')](handleError(_0x139ec5,null));};exports[_0xbfc5('0x29')]=function(_0x3239de,_0x10136d){if(_0x3239de[_0xbfc5('0x58')]['id']){delete _0x3239de[_0xbfc5('0x58')]['id'];}return db[_0xbfc5('0x34')][_0xbfc5('0x51')]({'where':{'id':_0x3239de[_0xbfc5('0x4e')]['id']}})[_0xbfc5('0x2a')](handleEntityNotFound(_0x10136d,null))[_0xbfc5('0x2a')](saveUpdates(_0x3239de[_0xbfc5('0x58')],null))[_0xbfc5('0x2a')](respondWithResult(_0x10136d,null))[_0xbfc5('0x4c')](handleError(_0x10136d,null));};exports[_0xbfc5('0x2b')]=function(_0x5962c4,_0x37ef01){return db[_0xbfc5('0x34')]['find']({'where':{'id':_0x5962c4[_0xbfc5('0x4e')]['id']}})[_0xbfc5('0x2a')](handleEntityNotFound(_0x37ef01,null))[_0xbfc5('0x2a')](removeEntity(_0x37ef01,null))[_0xbfc5('0x4c')](handleError(_0x37ef01,null));};function widgetAttributes(_0x629ff0){try{switch(_0x629ff0[_0xbfc5('0x37')]){case _0xbfc5('0x5e'):return[{'name':_0xbfc5('0x5f'),'value':_0x629ff0['attrUrl']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0['attrs'][0x0][_0xbfc5('0x61')]:undefined)||_0xbfc5('0x62')}];case'custom':return[{'name':_0xbfc5('0x63'),'value':_0x629ff0['attrPath']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0['attrs'][0x0][_0xbfc5('0x61')]:undefined)||''}];case _0xbfc5('0x64'):return[{'name':_0xbfc5('0x65'),'value':_0x629ff0[_0xbfc5('0x65')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0['attrs'][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x61')]:undefined)||_0xbfc5('0x66')},{'name':_0xbfc5('0x67'),'value':_0x629ff0['attrTimezone']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x629ff0[_0xbfc5('0x68')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x2]?_0x629ff0[_0xbfc5('0x60')][0x2]['value']:undefined)||0xc}];case _0xbfc5('0x69'):return[{'name':_0xbfc5('0x6a'),'value':_0x629ff0['attrMetric']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0['attrs'][0x0]['value']:undefined)||_0xbfc5('0x6b')},{'name':'attrVoiceQueues','value':_0x629ff0[_0xbfc5('0x6c')]||(_0x629ff0['attrs']&&_0x629ff0['attrs'][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||[]},{'name':'attrFontSize','value':_0x629ff0['attrFontSize']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x2]?_0x629ff0[_0xbfc5('0x60')][0x2]['value']:undefined)||0x14}];case _0xbfc5('0x6d'):case'pie-chart':return[{'name':_0xbfc5('0x6e'),'value':_0x629ff0[_0xbfc5('0x6e')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x61')]:undefined)||'total'},{'name':_0xbfc5('0x6f'),'value':_0x629ff0['attrSerie2']||(_0x629ff0['attrs']&&_0x629ff0[_0xbfc5('0x60')][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||null},{'name':_0xbfc5('0x70'),'value':_0x629ff0[_0xbfc5('0x70')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x2]?_0x629ff0[_0xbfc5('0x60')][0x2]['value']:undefined)||null},{'name':_0xbfc5('0x6c'),'value':_0x629ff0[_0xbfc5('0x6c')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0['attrs'][0x3]?_0x629ff0[_0xbfc5('0x60')][0x3][_0xbfc5('0x61')]:undefined)||[]}];case _0xbfc5('0x71'):return[{'name':_0xbfc5('0x72'),'type':_0x629ff0[_0xbfc5('0x73')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x37')]:undefined)||null,'value':_0x629ff0[_0xbfc5('0x72')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x61')]:undefined)||null},{'name':_0xbfc5('0x74'),'value':_0x629ff0[_0xbfc5('0x74')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0['attrs'][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||0x0}];default:return[];}}catch(_0x296058){logger[_0xbfc5('0x2f')](_0xbfc5('0x75'),JSON[_0xbfc5('0x76')](_0x296058));return[];}}exports[_0xbfc5('0x77')]=function(_0x34b417,_0x305607,_0x5d53b1){if(_0x34b417[_0xbfc5('0x58')]['id']){delete _0x34b417[_0xbfc5('0x58')]['id'];}return db[_0xbfc5('0x34')][_0xbfc5('0x51')]({'where':{'id':_0x34b417[_0xbfc5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x305607,null))[_0xbfc5('0x2a')](function(_0x2e0340){if(_0x2e0340){_0x34b417[_0xbfc5('0x58')][_0xbfc5('0x78')]=_0x2e0340['id'];_0x34b417[_0xbfc5('0x58')][_0xbfc5('0x60')]=widgetAttributes(_0x34b417[_0xbfc5('0x58')]);return db['DashboardItem'][_0xbfc5('0x52')](_0x34b417[_0xbfc5('0x58')]);}})[_0xbfc5('0x2a')](respondWithResult(_0x305607,null))[_0xbfc5('0x4c')](handleError(_0x305607,null));};exports[_0xbfc5('0x79')]=function(_0xdd78ef,_0x27e982,_0x3abb3a){var _0x437599={};var _0x3bf1c7={};var _0x324bcb;var _0x5c638b;return db['Dashboard'][_0xbfc5('0x7a')]({'where':{'id':_0xdd78ef[_0xbfc5('0x4e')]['id']}})[_0xbfc5('0x2a')](handleEntityNotFound(_0x27e982,null))[_0xbfc5('0x2a')](function(_0x3e3d90){if(_0x3e3d90){_0x324bcb=_0x3e3d90;_0x3bf1c7['model']=_['keys'](db[_0xbfc5('0x7b')]['rawAttributes']);_0x3bf1c7[_0xbfc5('0x3c')]=_[_0xbfc5('0x3b')](_0xdd78ef[_0xbfc5('0x3c')]);_0x3bf1c7[_0xbfc5('0x3d')]=_[_0xbfc5('0x3e')](_0x3bf1c7['model'],_0x3bf1c7[_0xbfc5('0x3c')]);_0x437599['attributes']=_[_0xbfc5('0x3e')](_0x3bf1c7['model'],qs[_0xbfc5('0x40')](_0xdd78ef['query'][_0xbfc5('0x40')]));_0x437599[_0xbfc5('0x3f')]=_0x437599[_0xbfc5('0x3f')][_0xbfc5('0x4f')]?_0x437599['attributes']:_0x3bf1c7[_0xbfc5('0x39')];_0x437599['order']=qs[_0xbfc5('0x42')](_0xdd78ef['query']['sort']);_0x437599[_0xbfc5('0x46')]=qs[_0xbfc5('0x3d')](_[_0xbfc5('0x43')](_0xdd78ef[_0xbfc5('0x3c')],_0x3bf1c7[_0xbfc5('0x3d')]));if(_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x44')]){_0x437599[_0xbfc5('0x46')]=_[_0xbfc5('0x45')](_0x437599[_0xbfc5('0x46')],{'$or':_['map'](_0x437599[_0xbfc5('0x3f')],function(_0x429d7b){var _0x36d8ba={};_0x36d8ba[_0x429d7b]={'$like':'%'+_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x44')]+'%'};return _0x36d8ba;})});}_0x437599=_[_0xbfc5('0x45')]({},_0x437599,_0xdd78ef[_0xbfc5('0x48')]);return _0x324bcb[_0xbfc5('0x79')](_0x437599);}})[_0xbfc5('0x2a')](function(_0x30dac3){if(_0x30dac3){_0x5c638b=_0x30dac3[_0xbfc5('0x4f')];if(!_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x7c')](_0xbfc5('0x7d'))){_0x437599[_0xbfc5('0x21')]=qs[_0xbfc5('0x21')](_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x21')]);_0x437599[_0xbfc5('0x1f')]=qs[_0xbfc5('0x1f')](_0xdd78ef[_0xbfc5('0x3c')]['offset']);}return _0x324bcb[_0xbfc5('0x79')](_0x437599);}})['then'](function(_0x1ebe26){if(_0x1ebe26){return _0x1ebe26?{'count':_0x5c638b,'rows':_0x1ebe26}:null;}})['then'](respondWithResult(_0x27e982,null))['catch'](handleError(_0x27e982,null));};
\ No newline at end of file
+var _0xeea7=['model','name','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','length','find','create','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','updatedAt','createdAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','update','iframe','attrUrl','attrs','https://','attrPath','value','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','total','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','send','index','map','Dashboard','rawAttributes','type','key'];(function(_0x1781ed,_0x8bdf45){var _0x260921=function(_0x55c11a){while(--_0x55c11a){_0x1781ed['push'](_0x1781ed['shift']());}};_0x260921(++_0x8bdf45);}(_0xeea7,0x1b3));var _0x7eea=function(_0x1d67c0,_0x101bee){_0x1d67c0=_0x1d67c0-0x0;var _0x4dcc79=_0xeea7[_0x1d67c0];return _0x4dcc79;};'use strict';var emlformat=require(_0x7eea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7eea('0x1'));var jsonpatch=require(_0x7eea('0x2'));var rp=require(_0x7eea('0x3'));var moment=require(_0x7eea('0x4'));var BPromise=require(_0x7eea('0x5'));var Mustache=require('mustache');var util=require(_0x7eea('0x6'));var path=require(_0x7eea('0x7'));var sox=require('sox');var csv=require(_0x7eea('0x8'));var ejs=require(_0x7eea('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7eea('0xa'));var squel=require(_0x7eea('0xb'));var crypto=require(_0x7eea('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7eea('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7eea('0xe'));var Papa=require('papaparse');var Redis=require(_0x7eea('0xf'));var authService=require(_0x7eea('0x10'));var qs=require(_0x7eea('0x11'));var as=require(_0x7eea('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7eea('0x13'))('api');var utils=require(_0x7eea('0x14'));var config=require(_0x7eea('0x15'));var licenseUtil=require(_0x7eea('0x16'));var db=require('../../mysqldb')['db'];config[_0x7eea('0x17')]=_['defaults'](config['redis'],{'host':_0x7eea('0x18'),'port':0x18eb});var socket=require(_0x7eea('0x19'))(new Redis(config[_0x7eea('0x17')]));require(_0x7eea('0x1a'))[_0x7eea('0x1b')](socket);function respondWithStatusCode(_0x19f8e2,_0x16ab7b){_0x16ab7b=_0x16ab7b||0xcc;return function(_0x3a6c0f){if(_0x3a6c0f){return _0x19f8e2[_0x7eea('0x1c')](_0x16ab7b);}return _0x19f8e2[_0x7eea('0x1d')](_0x16ab7b)[_0x7eea('0x1e')]();};}function respondWithResult(_0x4f0b6e,_0x149f8d){_0x149f8d=_0x149f8d||0xc8;return function(_0x23a9f0){if(_0x23a9f0){return _0x4f0b6e['status'](_0x149f8d)['json'](_0x23a9f0);}};}function respondWithFilteredResult(_0x32b435,_0xfed87f){return function(_0x54aafc){if(_0x54aafc){var _0x232d5d=typeof _0xfed87f[_0x7eea('0x1f')]===_0x7eea('0x20')&&typeof _0xfed87f[_0x7eea('0x21')]===_0x7eea('0x20');var _0x2e25e0=_0x54aafc['count'];var _0x39dad2=_0x232d5d?0x0:_0xfed87f[_0x7eea('0x1f')];var _0x331f5e=_0x232d5d?_0x54aafc[_0x7eea('0x22')]:_0xfed87f[_0x7eea('0x1f')]+_0xfed87f[_0x7eea('0x21')];var _0x3a2298;if(_0x331f5e>=_0x2e25e0){_0x331f5e=_0x2e25e0;_0x3a2298=0xc8;}else{_0x3a2298=0xce;}_0x32b435[_0x7eea('0x1d')](_0x3a2298);return _0x32b435[_0x7eea('0x23')](_0x7eea('0x24'),_0x39dad2+'-'+_0x331f5e+'/'+_0x2e25e0)[_0x7eea('0x25')](_0x54aafc);}return null;};}function patchUpdates(_0x9c48fb){return function(_0x38c350){try{jsonpatch['apply'](_0x38c350,_0x9c48fb,!![]);}catch(_0xc6e9b6){return BPromise[_0x7eea('0x26')](_0xc6e9b6);}return _0x38c350['save']();};}function saveUpdates(_0x4c2f0f,_0x596d12){return function(_0x26393a){if(_0x26393a){return _0x26393a['update'](_0x4c2f0f)[_0x7eea('0x27')](function(_0x135ebe){return _0x135ebe;});}return null;};}function removeEntity(_0x5a796f,_0x1df74a){return function(_0x407590){if(_0x407590){return _0x407590[_0x7eea('0x28')]()[_0x7eea('0x27')](function(){var _0x4f4676=_0x407590[_0x7eea('0x29')]({'plain':!![]});var _0x2fbe47=_0x7eea('0x2a');return db[_0x7eea('0x2b')][_0x7eea('0x28')]({'where':{'type':_0x2fbe47,'resourceId':_0x4f4676['id']}})['then'](function(){return _0x407590;});})['then'](function(){_0x5a796f[_0x7eea('0x1d')](0xcc)[_0x7eea('0x1e')]();});}};}function handleEntityNotFound(_0x593c67,_0x47b9e6){return function(_0x27b4fe){if(!_0x27b4fe){_0x593c67['sendStatus'](0x194);}return _0x27b4fe;};}function handleError(_0x373f87,_0x43ad9c){_0x43ad9c=_0x43ad9c||0x1f4;return function(_0x1b9218){logger[_0x7eea('0x2c')](_0x1b9218[_0x7eea('0x2d')]);if(_0x1b9218['name']){delete _0x1b9218['name'];}_0x373f87[_0x7eea('0x1d')](_0x43ad9c)[_0x7eea('0x2e')](_0x1b9218);};}exports[_0x7eea('0x2f')]=function(_0x33510f,_0x21d8a4){var _0x14f744={},_0x1156d5={},_0x5ba3bb={'count':0x0,'rows':[]};var _0x1cd4e8=_[_0x7eea('0x30')](db[_0x7eea('0x31')][_0x7eea('0x32')],function(_0x2f72e3){return{'name':_0x2f72e3['fieldName'],'type':_0x2f72e3[_0x7eea('0x33')][_0x7eea('0x34')]};});_0x1156d5[_0x7eea('0x35')]=_['map'](_0x1cd4e8,_0x7eea('0x36'));_0x1156d5[_0x7eea('0x37')]=_['keys'](_0x33510f[_0x7eea('0x37')]);_0x1156d5[_0x7eea('0x38')]=_[_0x7eea('0x39')](_0x1156d5['model'],_0x1156d5[_0x7eea('0x37')]);_0x14f744[_0x7eea('0x3a')]=_[_0x7eea('0x39')](_0x1156d5['model'],qs[_0x7eea('0x3b')](_0x33510f[_0x7eea('0x37')][_0x7eea('0x3b')]));_0x14f744[_0x7eea('0x3a')]=_0x14f744['attributes']['length']?_0x14f744[_0x7eea('0x3a')]:_0x1156d5[_0x7eea('0x35')];if(!_0x33510f[_0x7eea('0x37')][_0x7eea('0x3c')](_0x7eea('0x3d'))){_0x14f744['limit']=qs['limit'](_0x33510f[_0x7eea('0x37')][_0x7eea('0x21')]);_0x14f744[_0x7eea('0x1f')]=qs['offset'](_0x33510f[_0x7eea('0x37')][_0x7eea('0x1f')]);}_0x14f744[_0x7eea('0x3e')]=qs['sort'](_0x33510f[_0x7eea('0x37')][_0x7eea('0x3f')]);_0x14f744[_0x7eea('0x40')]=qs[_0x7eea('0x38')](_[_0x7eea('0x41')](_0x33510f[_0x7eea('0x37')],_0x1156d5['filters']),_0x1cd4e8);if(_0x33510f[_0x7eea('0x37')][_0x7eea('0x42')]){_0x14f744[_0x7eea('0x40')]=_[_0x7eea('0x43')](_0x14f744['where'],{'$or':_['map'](_0x1cd4e8,function(_0x3a697a){if(_0x3a697a[_0x7eea('0x33')]!=='VIRTUAL'){var _0x267514={};_0x267514[_0x3a697a[_0x7eea('0x36')]]={'$like':'%'+_0x33510f[_0x7eea('0x37')]['filter']+'%'};return _0x267514;}})});}_0x14f744=_['merge']({},_0x14f744,_0x33510f[_0x7eea('0x44')]);var _0xce15c9={'where':_0x14f744[_0x7eea('0x40')]};return db['Dashboard'][_0x7eea('0x22')](_0xce15c9)[_0x7eea('0x27')](function(_0x3ba063){_0x5ba3bb[_0x7eea('0x22')]=_0x3ba063;if(_0x33510f['query'][_0x7eea('0x45')]){_0x14f744[_0x7eea('0x46')]=[{'all':!![]}];}return db[_0x7eea('0x31')][_0x7eea('0x47')](_0x14f744);})['then'](function(_0x3a4b46){_0x5ba3bb[_0x7eea('0x48')]=_0x3a4b46;return _0x5ba3bb;})['then'](respondWithFilteredResult(_0x21d8a4,_0x14f744))[_0x7eea('0x49')](handleError(_0x21d8a4,null));};exports[_0x7eea('0x4a')]=function(_0x45cfab,_0x34b70c){var _0x2dba71={'raw':![],'where':{'id':_0x45cfab['params']['id']}},_0x3a7daa={};_0x3a7daa['model']=_[_0x7eea('0x4b')](db[_0x7eea('0x31')][_0x7eea('0x32')]);_0x3a7daa[_0x7eea('0x37')]=_['keys'](_0x45cfab[_0x7eea('0x37')]);_0x3a7daa[_0x7eea('0x38')]=_[_0x7eea('0x39')](_0x3a7daa[_0x7eea('0x35')],_0x3a7daa[_0x7eea('0x37')]);_0x2dba71[_0x7eea('0x3a')]=_[_0x7eea('0x39')](_0x3a7daa[_0x7eea('0x35')],qs[_0x7eea('0x3b')](_0x45cfab['query'][_0x7eea('0x3b')]));_0x2dba71[_0x7eea('0x3a')]=_0x2dba71[_0x7eea('0x3a')][_0x7eea('0x4c')]?_0x2dba71[_0x7eea('0x3a')]:_0x3a7daa['model'];if(_0x45cfab[_0x7eea('0x37')][_0x7eea('0x45')]){_0x2dba71[_0x7eea('0x46')]=[{'all':!![]}];}_0x2dba71=_[_0x7eea('0x43')]({},_0x2dba71,_0x45cfab[_0x7eea('0x44')]);return db[_0x7eea('0x31')][_0x7eea('0x4d')](_0x2dba71)[_0x7eea('0x27')](handleEntityNotFound(_0x34b70c,null))['then'](respondWithResult(_0x34b70c,null))[_0x7eea('0x49')](handleError(_0x34b70c,null));};exports['create']=function(_0x403fff,_0x4de1a3){return db[_0x7eea('0x31')][_0x7eea('0x4e')](_0x403fff['body'],{})['then'](function(_0x25e583){var _0x4b0a10=_0x403fff['user'][_0x7eea('0x29')]({'plain':!![]});if(!_0x4b0a10)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b0a10['role']===_0x7eea('0x4f')){var _0x1def39=_0x25e583['get']({'plain':!![]});var _0x3579ea=_0x7eea('0x2a');return db[_0x7eea('0x50')][_0x7eea('0x4d')]({'where':{'name':_0x3579ea,'userProfileId':_0x4b0a10[_0x7eea('0x51')]},'raw':!![]})[_0x7eea('0x27')](function(_0x4c07e0){if(_0x4c07e0&&_0x4c07e0[_0x7eea('0x52')]===0x0){return db[_0x7eea('0x2b')]['create']({'name':_0x1def39[_0x7eea('0x36')],'resourceId':_0x1def39['id'],'type':_0x4c07e0[_0x7eea('0x36')],'sectionId':_0x4c07e0['id']},{})[_0x7eea('0x27')](function(){return _0x25e583;});}else{return _0x25e583;}})[_0x7eea('0x49')](function(_0x4505d8){logger[_0x7eea('0x2c')](_0x7eea('0x53'),_0x4505d8);throw _0x4505d8;});}return _0x25e583;})[_0x7eea('0x27')](respondWithResult(_0x4de1a3,0xc9))[_0x7eea('0x49')](handleError(_0x4de1a3,null));};exports[_0x7eea('0x54')]=function(_0x1681ba,_0x32c0f7){var _0x2ffc26={'where':{'id':_0x1681ba[_0x7eea('0x55')]['id']}},_0xe05cf6={};_0xe05cf6[_0x7eea('0x35')]=_[_0x7eea('0x4b')](db['Dashboard'][_0x7eea('0x32')]);_0x2ffc26[_0x7eea('0x3a')]=_[_0x7eea('0x39')](_0xe05cf6['model'],qs[_0x7eea('0x3b')](_0x1681ba[_0x7eea('0x37')]['fields']));_0x2ffc26[_0x7eea('0x3a')]=_0x2ffc26[_0x7eea('0x3a')][_0x7eea('0x4c')]?_0x2ffc26[_0x7eea('0x3a')]:_0xe05cf6['model'];if(_0x1681ba[_0x7eea('0x37')][_0x7eea('0x45')]){_0x2ffc26[_0x7eea('0x46')]=[{'all':!![]}];}_0x2ffc26=_['merge']({},_0x2ffc26,_0x1681ba[_0x7eea('0x44')]);return db[_0x7eea('0x31')][_0x7eea('0x4d')](_0x2ffc26)[_0x7eea('0x27')](handleEntityNotFound(_0x32c0f7,null))[_0x7eea('0x27')](function(_0x3b9028){if(_0x3b9028){var _0x221b35=_0x3b9028['get']({'plain':!![]});_0x221b35=qs[_0x7eea('0x56')](_0x221b35,['id','createdAt',_0x7eea('0x57')]);_0x1681ba['body']=_['omit'](_0x1681ba['body'],['id',_0x7eea('0x58'),_0x7eea('0x57')]);return db['Dashboard'][_0x7eea('0x4e')](_[_0x7eea('0x43')](_0x221b35,_0x1681ba[_0x7eea('0x59')]),{'include':_0x1681ba[_0x7eea('0x37')][_0x7eea('0x45')]?[{'all':!![]}]:undefined})['then'](function(_0x40d7d5){var _0x4f702f=_0x1681ba[_0x7eea('0x4f')][_0x7eea('0x29')]({'plain':!![]});if(!_0x4f702f)throw new Error(_0x7eea('0x5a'));if(_0x4f702f[_0x7eea('0x5b')]===_0x7eea('0x4f')){var _0x4b2205=_0x40d7d5[_0x7eea('0x29')]({'plain':!![]});var _0x35687d=_0x7eea('0x2a');return db[_0x7eea('0x50')][_0x7eea('0x4d')]({'where':{'name':_0x35687d,'userProfileId':_0x4f702f['userProfileId']},'raw':!![]})[_0x7eea('0x27')](function(_0x530b19){if(_0x530b19&&_0x530b19[_0x7eea('0x52')]===0x0){return db[_0x7eea('0x2b')][_0x7eea('0x4e')]({'name':_0x4b2205['name'],'resourceId':_0x4b2205['id'],'type':_0x530b19[_0x7eea('0x36')],'sectionId':_0x530b19['id']},{})[_0x7eea('0x27')](function(){return _0x40d7d5;});}else{return _0x40d7d5;}})['catch'](function(_0x11e794){logger[_0x7eea('0x2c')](_0x7eea('0x53'),_0x11e794);throw _0x11e794;});}return _0x40d7d5;});}})[_0x7eea('0x27')](respondWithResult(_0x32c0f7,0xc9))[_0x7eea('0x49')](handleError(_0x32c0f7,null));};exports[_0x7eea('0x5c')]=function(_0x33fdb8,_0x196e71){if(_0x33fdb8[_0x7eea('0x59')]['id']){delete _0x33fdb8[_0x7eea('0x59')]['id'];}return db[_0x7eea('0x31')][_0x7eea('0x4d')]({'where':{'id':_0x33fdb8[_0x7eea('0x55')]['id']}})['then'](handleEntityNotFound(_0x196e71,null))['then'](saveUpdates(_0x33fdb8['body'],null))['then'](respondWithResult(_0x196e71,null))['catch'](handleError(_0x196e71,null));};exports[_0x7eea('0x28')]=function(_0x28b98b,_0x264f44){return db[_0x7eea('0x31')][_0x7eea('0x4d')]({'where':{'id':_0x28b98b[_0x7eea('0x55')]['id']}})[_0x7eea('0x27')](handleEntityNotFound(_0x264f44,null))[_0x7eea('0x27')](removeEntity(_0x264f44,null))[_0x7eea('0x49')](handleError(_0x264f44,null));};function widgetAttributes(_0xeb69d6){try{switch(_0xeb69d6[_0x7eea('0x33')]){case _0x7eea('0x5d'):return[{'name':_0x7eea('0x5e'),'value':_0xeb69d6[_0x7eea('0x5e')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x0]?_0xeb69d6['attrs'][0x0]['value']:undefined)||_0x7eea('0x60')}];case'custom':return[{'name':'attrPath','value':_0xeb69d6[_0x7eea('0x61')]||(_0xeb69d6['attrs']&&_0xeb69d6[_0x7eea('0x5f')][0x0]?_0xeb69d6[_0x7eea('0x5f')][0x0][_0x7eea('0x62')]:undefined)||''}];case'clock':return[{'name':_0x7eea('0x63'),'value':_0xeb69d6[_0x7eea('0x63')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x0]?_0xeb69d6[_0x7eea('0x5f')][0x0][_0x7eea('0x62')]:undefined)||_0x7eea('0x64')},{'name':_0x7eea('0x65'),'value':_0xeb69d6[_0x7eea('0x65')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x1]?_0xeb69d6['attrs'][0x1]['value']:undefined)||_0x7eea('0x66')},{'name':'attrFontSize','value':_0xeb69d6[_0x7eea('0x67')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x2]?_0xeb69d6[_0x7eea('0x5f')][0x2]['value']:undefined)||0xc}];case _0x7eea('0x68'):return[{'name':'attrMetric','value':_0xeb69d6[_0x7eea('0x69')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6['attrs'][0x0]?_0xeb69d6[_0x7eea('0x5f')][0x0][_0x7eea('0x62')]:undefined)||'total'},{'name':_0x7eea('0x6a'),'value':_0xeb69d6[_0x7eea('0x6a')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x1]?_0xeb69d6[_0x7eea('0x5f')][0x1][_0x7eea('0x62')]:undefined)||[]},{'name':_0x7eea('0x67'),'value':_0xeb69d6[_0x7eea('0x67')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x2]?_0xeb69d6[_0x7eea('0x5f')][0x2][_0x7eea('0x62')]:undefined)||0x14}];case _0x7eea('0x6b'):case'pie-chart':return[{'name':'attrSerie1','value':_0xeb69d6['attrSerie1']||(_0xeb69d6['attrs']&&_0xeb69d6[_0x7eea('0x5f')][0x0]?_0xeb69d6[_0x7eea('0x5f')][0x0]['value']:undefined)||_0x7eea('0x6c')},{'name':_0x7eea('0x6d'),'value':_0xeb69d6[_0x7eea('0x6d')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x1]?_0xeb69d6[_0x7eea('0x5f')][0x1][_0x7eea('0x62')]:undefined)||null},{'name':_0x7eea('0x6e'),'value':_0xeb69d6[_0x7eea('0x6e')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6['attrs'][0x2]?_0xeb69d6[_0x7eea('0x5f')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0xeb69d6['attrVoiceQueues']||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x3]?_0xeb69d6['attrs'][0x3][_0x7eea('0x62')]:undefined)||[]}];case _0x7eea('0x6f'):return[{'name':'attrReport','type':_0xeb69d6[_0x7eea('0x70')]||(_0xeb69d6[_0x7eea('0x5f')]&&_0xeb69d6[_0x7eea('0x5f')][0x0]?_0xeb69d6['attrs'][0x0]['type']:undefined)||null,'value':_0xeb69d6[_0x7eea('0x71')]||(_0xeb69d6['attrs']&&_0xeb69d6[_0x7eea('0x5f')][0x0]?_0xeb69d6[_0x7eea('0x5f')][0x0][_0x7eea('0x62')]:undefined)||null},{'name':_0x7eea('0x72'),'value':_0xeb69d6[_0x7eea('0x72')]||(_0xeb69d6['attrs']&&_0xeb69d6['attrs'][0x1]?_0xeb69d6[_0x7eea('0x5f')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1574f5){logger[_0x7eea('0x2c')](_0x7eea('0x73'),JSON[_0x7eea('0x74')](_0x1574f5));return[];}}exports[_0x7eea('0x75')]=function(_0x33c0b5,_0x57fdd7,_0x5e3d62){if(_0x33c0b5[_0x7eea('0x59')]['id']){delete _0x33c0b5[_0x7eea('0x59')]['id'];}return db['Dashboard'][_0x7eea('0x4d')]({'where':{'id':_0x33c0b5['params']['id']}})[_0x7eea('0x27')](handleEntityNotFound(_0x57fdd7,null))['then'](function(_0x43e0cb){if(_0x43e0cb){_0x33c0b5['body'][_0x7eea('0x76')]=_0x43e0cb['id'];_0x33c0b5[_0x7eea('0x59')][_0x7eea('0x5f')]=widgetAttributes(_0x33c0b5['body']);return db[_0x7eea('0x77')]['create'](_0x33c0b5[_0x7eea('0x59')]);}})[_0x7eea('0x27')](respondWithResult(_0x57fdd7,null))[_0x7eea('0x49')](handleError(_0x57fdd7,null));};exports[_0x7eea('0x78')]=function(_0x49dcb8,_0x5a1752,_0x53b755){var _0x34d0c8={};var _0x2e8a97={};var _0x5c7889;var _0x4dd322;return db['Dashboard'][_0x7eea('0x79')]({'where':{'id':_0x49dcb8[_0x7eea('0x55')]['id']}})[_0x7eea('0x27')](handleEntityNotFound(_0x5a1752,null))[_0x7eea('0x27')](function(_0x1075f3){if(_0x1075f3){_0x5c7889=_0x1075f3;_0x2e8a97[_0x7eea('0x35')]=_[_0x7eea('0x4b')](db[_0x7eea('0x77')][_0x7eea('0x32')]);_0x2e8a97[_0x7eea('0x37')]=_[_0x7eea('0x4b')](_0x49dcb8['query']);_0x2e8a97['filters']=_['intersection'](_0x2e8a97[_0x7eea('0x35')],_0x2e8a97[_0x7eea('0x37')]);_0x34d0c8[_0x7eea('0x3a')]=_[_0x7eea('0x39')](_0x2e8a97['model'],qs[_0x7eea('0x3b')](_0x49dcb8[_0x7eea('0x37')]['fields']));_0x34d0c8[_0x7eea('0x3a')]=_0x34d0c8[_0x7eea('0x3a')]['length']?_0x34d0c8[_0x7eea('0x3a')]:_0x2e8a97[_0x7eea('0x35')];_0x34d0c8['order']=qs[_0x7eea('0x3f')](_0x49dcb8['query']['sort']);_0x34d0c8[_0x7eea('0x40')]=qs[_0x7eea('0x38')](_[_0x7eea('0x41')](_0x49dcb8[_0x7eea('0x37')],_0x2e8a97[_0x7eea('0x38')]));if(_0x49dcb8[_0x7eea('0x37')][_0x7eea('0x42')]){_0x34d0c8['where']=_[_0x7eea('0x43')](_0x34d0c8[_0x7eea('0x40')],{'$or':_['map'](_0x34d0c8[_0x7eea('0x3a')],function(_0x3095d3){var _0x2e6bfd={};_0x2e6bfd[_0x3095d3]={'$like':'%'+_0x49dcb8[_0x7eea('0x37')][_0x7eea('0x42')]+'%'};return _0x2e6bfd;})});}_0x34d0c8=_[_0x7eea('0x43')]({},_0x34d0c8,_0x49dcb8[_0x7eea('0x44')]);return _0x5c7889[_0x7eea('0x78')](_0x34d0c8);}})['then'](function(_0x26fb31){if(_0x26fb31){_0x4dd322=_0x26fb31[_0x7eea('0x4c')];if(!_0x49dcb8[_0x7eea('0x37')]['hasOwnProperty']('nolimit')){_0x34d0c8[_0x7eea('0x21')]=qs[_0x7eea('0x21')](_0x49dcb8[_0x7eea('0x37')]['limit']);_0x34d0c8[_0x7eea('0x1f')]=qs[_0x7eea('0x1f')](_0x49dcb8['query'][_0x7eea('0x1f')]);}return _0x5c7889[_0x7eea('0x78')](_0x34d0c8);}})[_0x7eea('0x27')](function(_0x41e210){if(_0x41e210){return _0x41e210?{'count':_0x4dd322,'rows':_0x41e210}:null;}})['then'](respondWithResult(_0x5a1752,null))['catch'](handleError(_0x5a1752,null));};
\ No newline at end of file
index 0d0c40c..2c9e6cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8343=['exports','events','../../mysqldb','Dashboard','save','remove','emit','hook'];(function(_0x3fe042,_0x1106f7){var _0x7d4a1f=function(_0x2df987){while(--_0x2df987){_0x3fe042['push'](_0x3fe042['shift']());}};_0x7d4a1f(++_0x1106f7);}(_0x8343,0xa9));var _0x3834=function(_0x49ff68,_0x1463de){_0x49ff68=_0x49ff68-0x0;var _0x1e18e5=_0x8343[_0x49ff68];return _0x1e18e5;};'use strict';var EventEmitter=require(_0x3834('0x0'));var Dashboard=require(_0x3834('0x1'))['db'][_0x3834('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3834('0x3'),'afterUpdate':'update','afterDestroy':_0x3834('0x4')};function emitEvent(_0x4f6fc4){return function(_0x4a4217,_0x599baf,_0x1ec3da){DashboardEvents[_0x3834('0x5')](_0x4f6fc4+':'+_0x4a4217['id'],_0x4a4217);DashboardEvents[_0x3834('0x5')](_0x4f6fc4,_0x4a4217);_0x1ec3da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x3834('0x6')](e,emitEvent(event));}}module[_0x3834('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0xe740=['hook','exports','events','Dashboard','setMaxListeners','update','emit'];(function(_0x1f27df,_0x4f1a64){var _0x286ee2=function(_0x255ea7){while(--_0x255ea7){_0x1f27df['push'](_0x1f27df['shift']());}};_0x286ee2(++_0x4f1a64);}(_0xe740,0x14b));var _0x0e74=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xe740[_0x341e0f];return _0x59555a;};'use strict';var EventEmitter=require(_0x0e74('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x0e74('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x0e74('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0e74('0x3'),'afterDestroy':'remove'};function emitEvent(_0x35bed6){return function(_0x5ed338,_0xe2aea7,_0x41795e){DashboardEvents['emit'](_0x35bed6+':'+_0x5ed338['id'],_0x5ed338);DashboardEvents[_0x0e74('0x4')](_0x35bed6,_0x5ed338);_0x41795e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x0e74('0x5')](e,emitEvent(event));}}module[_0x0e74('0x6')]=DashboardEvents;
\ No newline at end of file
index ab02e68..e29d641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d1=['util','api','moment','bluebird','request-promise','path','../../config/environment','Dashboard','dashboards','lodash'];(function(_0xe1784d,_0x2f8e7b){var _0x5a8ad3=function(_0x2416ba){while(--_0x2416ba){_0xe1784d['push'](_0xe1784d['shift']());}};_0x5a8ad3(++_0x2f8e7b);}(_0xb9d1,0x117));var _0x1b9d=function(_0x4dc3cc,_0x4129d8){_0x4dc3cc=_0x4dc3cc-0x0;var _0x666d37=_0xb9d1[_0x4dc3cc];return _0x666d37;};'use strict';var _=require(_0x1b9d('0x0'));var util=require(_0x1b9d('0x1'));var logger=require('../../config/logger')(_0x1b9d('0x2'));var moment=require(_0x1b9d('0x3'));var BPromise=require(_0x1b9d('0x4'));var rp=require(_0x1b9d('0x5'));var fs=require('fs');var path=require(_0x1b9d('0x6'));var rimraf=require('rimraf');var config=require(_0x1b9d('0x7'));var attributes=require('./dashboard.attributes');module['exports']=function(_0x18c799,_0x5c8269){return _0x18c799['define'](_0x1b9d('0x8'),attributes,{'tableName':_0x1b9d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ed3=['../../config/environment','./dashboard.attributes','define','Dashboard','dashboards','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6ed3,0x1d9));var _0x36ed=function(_0x32b73e,_0x3e567d){_0x32b73e=_0x32b73e-0x0;var _0x3aaa05=_0x6ed3[_0x32b73e];return _0x3aaa05;};'use strict';var _=require(_0x36ed('0x0'));var util=require('util');var logger=require(_0x36ed('0x1'))(_0x36ed('0x2'));var moment=require(_0x36ed('0x3'));var BPromise=require(_0x36ed('0x4'));var rp=require(_0x36ed('0x5'));var fs=require('fs');var path=require(_0x36ed('0x6'));var rimraf=require(_0x36ed('0x7'));var config=require(_0x36ed('0x8'));var attributes=require(_0x36ed('0x9'));module['exports']=function(_0x2646c0,_0x47dafa){return _0x2646c0[_0x36ed('0xa')](_0x36ed('0xb'),attributes,{'tableName':_0x36ed('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d782173..df9f163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x407b=['request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./dashboard.socket','register'];(function(_0x50bf5a,_0x807bba){var _0x4ddc1d=function(_0x349a61){while(--_0x349a61){_0x50bf5a['push'](_0x50bf5a['shift']());}};_0x4ddc1d(++_0x807bba);}(_0x407b,0x14e));var _0xb407=function(_0x4c6fcc,_0x484fb5){_0x4c6fcc=_0x4c6fcc-0x0;var _0x3d37a9=_0x407b[_0x4c6fcc];return _0x3d37a9;};'use strict';var _=require('lodash');var util=require(_0xb407('0x0'));var moment=require(_0xb407('0x1'));var BPromise=require(_0xb407('0x2'));var rs=require(_0xb407('0x3'));var fs=require('fs');var Redis=require(_0xb407('0x4'));var db=require(_0xb407('0x5'))['db'];var utils=require(_0xb407('0x6'));var logger=require(_0xb407('0x7'))('rpc');var config=require(_0xb407('0x8'));var jayson=require(_0xb407('0x9'));var client=jayson[_0xb407('0xa')][_0xb407('0xb')]({'port':0x232a});config['redis']=_[_0xb407('0xc')](config[_0xb407('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xb407('0xe'))(new Redis(config[_0xb407('0xd')]));require(_0xb407('0xf'))[_0xb407('0x10')](socket);function respondWithRpcPromise(_0x4bc4f7,_0x42c56e,_0x4aec08){return new BPromise(function(_0x30e439,_0x13542e){return client[_0xb407('0x11')](_0x4bc4f7,_0x4aec08)['then'](function(_0x5aafa6){logger[_0xb407('0x12')](_0xb407('0x13'),_0x42c56e,_0xb407('0x14'));logger[_0xb407('0x15')](_0xb407('0x16'),_0x42c56e,_0xb407('0x14'),JSON[_0xb407('0x17')](_0x5aafa6));if(_0x5aafa6[_0xb407('0x18')]){if(_0x5aafa6[_0xb407('0x18')]['code']===0x1f4){logger['error'](_0xb407('0x13'),_0x42c56e,_0x5aafa6[_0xb407('0x18')][_0xb407('0x19')]);return _0x13542e(_0x5aafa6[_0xb407('0x18')][_0xb407('0x19')]);}logger[_0xb407('0x18')](_0xb407('0x13'),_0x42c56e,_0x5aafa6['error'][_0xb407('0x19')]);return _0x30e439(_0x5aafa6[_0xb407('0x18')][_0xb407('0x19')]);}else{logger['info'](_0xb407('0x13'),_0x42c56e,_0xb407('0x14'));_0x30e439(_0x5aafa6[_0xb407('0x1a')]['message']);}})['catch'](function(_0x41f6ed){logger[_0xb407('0x18')](_0xb407('0x13'),_0x42c56e,_0x41f6ed);_0x13542e(_0x41f6ed);});});}
\ No newline at end of file
+var _0x0586=['Dashboard,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','then'];(function(_0x33f7e1,_0x48d209){var _0x23bab4=function(_0xd532b0){while(--_0xd532b0){_0x33f7e1['push'](_0x33f7e1['shift']());}};_0x23bab4(++_0x48d209);}(_0x0586,0x90));var _0x6058=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0586[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6058('0x0'));var util=require(_0x6058('0x1'));var moment=require(_0x6058('0x2'));var BPromise=require(_0x6058('0x3'));var rs=require(_0x6058('0x4'));var fs=require('fs');var Redis=require(_0x6058('0x5'));var db=require(_0x6058('0x6'))['db'];var utils=require(_0x6058('0x7'));var logger=require(_0x6058('0x8'))(_0x6058('0x9'));var config=require(_0x6058('0xa'));var jayson=require(_0x6058('0xb'));var client=jayson[_0x6058('0xc')][_0x6058('0xd')]({'port':0x232a});config['redis']=_[_0x6058('0xe')](config['redis'],{'host':_0x6058('0xf'),'port':0x18eb});var socket=require(_0x6058('0x10'))(new Redis(config['redis']));require('./dashboard.socket')['register'](socket);function respondWithRpcPromise(_0x1019cb,_0x3d060a,_0x3197f4){return new BPromise(function(_0x565ae0,_0x2bb4fd){return client['request'](_0x1019cb,_0x3197f4)[_0x6058('0x11')](function(_0x53757d){logger['info'](_0x6058('0x12'),_0x3d060a,'request\x20sent');logger[_0x6058('0x13')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x3d060a,_0x6058('0x14'),JSON[_0x6058('0x15')](_0x53757d));if(_0x53757d[_0x6058('0x16')]){if(_0x53757d['error']['code']===0x1f4){logger[_0x6058('0x16')](_0x6058('0x12'),_0x3d060a,_0x53757d[_0x6058('0x16')]['message']);return _0x2bb4fd(_0x53757d['error'][_0x6058('0x17')]);}logger[_0x6058('0x16')](_0x6058('0x12'),_0x3d060a,_0x53757d[_0x6058('0x16')][_0x6058('0x17')]);return _0x565ae0(_0x53757d[_0x6058('0x16')][_0x6058('0x17')]);}else{logger[_0x6058('0x18')](_0x6058('0x12'),_0x3d060a,'request\x20sent');_0x565ae0(_0x53757d[_0x6058('0x19')][_0x6058('0x17')]);}})[_0x6058('0x1a')](function(_0x76c61c){logger[_0x6058('0x16')]('Dashboard,\x20%s,\x20%s',_0x3d060a,_0x76c61c);_0x2bb4fd(_0x76c61c);});});}
\ No newline at end of file
index 4cb3b72..2f7359f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe65b=['save','remove','update','emit','removeListener','register','length','./dashboard.events'];(function(_0x23ac3a,_0x1e1890){var _0x36e268=function(_0x235a5a){while(--_0x235a5a){_0x23ac3a['push'](_0x23ac3a['shift']());}};_0x36e268(++_0x1e1890);}(_0xe65b,0x1e7));var _0xbe65=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xe65b[_0x2be8c2];return _0x97f531;};'use strict';var DashboardEvents=require(_0xbe65('0x0'));var events=[_0xbe65('0x1'),_0xbe65('0x2'),_0xbe65('0x3')];function createListener(_0x256ebf,_0x2878fe){return function(_0x3e07fa){_0x2878fe[_0xbe65('0x4')](_0x256ebf,_0x3e07fa);};}function removeListener(_0x375d2a,_0x4bf871){return function(){DashboardEvents[_0xbe65('0x5')](_0x375d2a,_0x4bf871);};}exports[_0xbe65('0x6')]=function(_0x2ae846){for(var _0x1057cc=0x0,_0x21cfef=events[_0xbe65('0x7')];_0x1057cc<_0x21cfef;_0x1057cc++){var _0x42020e=events[_0x1057cc];var _0x3f9f39=createListener('dashboard:'+_0x42020e,_0x2ae846);DashboardEvents['on'](_0x42020e,_0x3f9f39);}};
\ No newline at end of file
+var _0xc7be=['./dashboard.events','save','remove','update','emit','removeListener','length','dashboard:'];(function(_0x1b3c2e,_0x2f7a47){var _0x34f002=function(_0x14df47){while(--_0x14df47){_0x1b3c2e['push'](_0x1b3c2e['shift']());}};_0x34f002(++_0x2f7a47);}(_0xc7be,0x1e0));var _0xec7b=function(_0x4e11ad,_0x35a3a6){_0x4e11ad=_0x4e11ad-0x0;var _0x479fae=_0xc7be[_0x4e11ad];return _0x479fae;};'use strict';var DashboardEvents=require(_0xec7b('0x0'));var events=[_0xec7b('0x1'),_0xec7b('0x2'),_0xec7b('0x3')];function createListener(_0x393759,_0x38d058){return function(_0x3715e0){_0x38d058[_0xec7b('0x4')](_0x393759,_0x3715e0);};}function removeListener(_0x1f207e,_0x216399){return function(){DashboardEvents[_0xec7b('0x5')](_0x1f207e,_0x216399);};}exports['register']=function(_0x1135ce){for(var _0x361eb3=0x0,_0x130f2e=events[_0xec7b('0x6')];_0x361eb3<_0x130f2e;_0x361eb3++){var _0x57448a=events[_0x361eb3];var _0x27eedc=createListener(_0xec7b('0x7')+_0x57448a,_0x1135ce);DashboardEvents['on'](_0x57448a,_0x27eedc);}};
\ No newline at end of file
index a4b55d1..c7341cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x772e=['/:id','show','post','/:id/clone','clone','/:id/items','addItem','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x4ae159,_0x471667){var _0x497017=function(_0x179d26){while(--_0x179d26){_0x4ae159['push'](_0x4ae159['shift']());}};_0x497017(++_0x471667);}(_0x772e,0xdb));var _0xe772=function(_0x230bbc,_0x5f40c0){_0x230bbc=_0x230bbc-0x0;var _0x595e24=_0x772e[_0x230bbc];return _0x595e24;};'use strict';var multer=require(_0xe772('0x0'));var util=require('util');var path=require(_0xe772('0x1'));var timeout=require(_0xe772('0x2'));var express=require(_0xe772('0x3'));var router=express[_0xe772('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe772('0x5'));var interaction=require(_0xe772('0x6'));var config=require(_0xe772('0x7'));var controller=require('./dashboard.controller');router[_0xe772('0x8')]('/',auth[_0xe772('0x9')](),controller[_0xe772('0xa')]);router[_0xe772('0x8')](_0xe772('0xb'),auth[_0xe772('0x9')](),controller[_0xe772('0xc')]);router[_0xe772('0x8')]('/:id/items',auth[_0xe772('0x9')](),controller['getItems']);router[_0xe772('0xd')]('/',auth[_0xe772('0x9')](),controller['create']);router[_0xe772('0xd')](_0xe772('0xe'),auth[_0xe772('0x9')](),controller[_0xe772('0xf')]);router[_0xe772('0xd')](_0xe772('0x10'),auth[_0xe772('0x9')](),controller[_0xe772('0x11')]);router[_0xe772('0x12')](_0xe772('0xb'),auth['isAuthenticated'](),controller[_0xe772('0x13')]);router[_0xe772('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xe772('0x15')]);module[_0xe772('0x16')]=router;
\ No newline at end of file
+var _0x9885=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./dashboard.controller','get','index','/:id','isAuthenticated','/:id/items','getItems','post','/:id/clone','clone','addItem','put','update','exports'];(function(_0x2a2b85,_0x245573){var _0x43304b=function(_0x2ec9d){while(--_0x2ec9d){_0x2a2b85['push'](_0x2a2b85['shift']());}};_0x43304b(++_0x245573);}(_0x9885,0x6e));var _0x5988=function(_0x397d56,_0x41e7fa){_0x397d56=_0x397d56-0x0;var _0x9e65a=_0x9885[_0x397d56];return _0x9e65a;};'use strict';var multer=require(_0x5988('0x0'));var util=require(_0x5988('0x1'));var path=require(_0x5988('0x2'));var timeout=require(_0x5988('0x3'));var express=require(_0x5988('0x4'));var router=express[_0x5988('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5988('0x6'));var interaction=require(_0x5988('0x7'));var config=require('../../config/environment');var controller=require(_0x5988('0x8'));router[_0x5988('0x9')]('/',auth['isAuthenticated'](),controller[_0x5988('0xa')]);router['get'](_0x5988('0xb'),auth[_0x5988('0xc')](),controller['show']);router[_0x5988('0x9')](_0x5988('0xd'),auth[_0x5988('0xc')](),controller[_0x5988('0xe')]);router[_0x5988('0xf')]('/',auth[_0x5988('0xc')](),controller['create']);router[_0x5988('0xf')](_0x5988('0x10'),auth['isAuthenticated'](),controller[_0x5988('0x11')]);router[_0x5988('0xf')](_0x5988('0xd'),auth[_0x5988('0xc')](),controller[_0x5988('0x12')]);router[_0x5988('0x13')](_0x5988('0xb'),auth[_0x5988('0xc')](),controller[_0x5988('0x14')]);router['delete'](_0x5988('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x5988('0x15')]=router;
\ No newline at end of file
index b4dce73..058f7dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['setDataValue','stringify','INTEGER','#ffffff','squel','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7096,0x10c));var _0x6709=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x7096[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x6709('0x0'));var _=require('lodash');module[_0x6709('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6709('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x6709('0x3')](_0x6709('0x4')),'get':function(){try{return JSON[_0x6709('0x5')](this[_0x6709('0x6')](_0x6709('0x7')));}catch(_0xb8fe6d){return[];}},'set':function(_0x9d630f){try{this[_0x6709('0x8')](_0x6709('0x7'),JSON[_0x6709('0x9')](_0x9d630f));}catch(_0x985814){this[_0x6709('0x8')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x6709('0xa')]},'col':{'type':Sequelize[_0x6709('0xa')]},'background':{'type':Sequelize[_0x6709('0x2')],'allowNull':![],'defaultValue':_0x6709('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6709('0x2')]},'titleFontSize':{'type':Sequelize[_0x6709('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0xeda8=['TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','#ffffff','sequelize','squel','exports','STRING'];(function(_0x558e5a,_0x5e9a85){var _0x717a46=function(_0x786d8){while(--_0x786d8){_0x558e5a['push'](_0x558e5a['shift']());}};_0x717a46(++_0x5e9a85);}(_0xeda8,0x104));var _0x8eda=function(_0x5dca31,_0x492f03){_0x5dca31=_0x5dca31-0x0;var _0x486be9=_0xeda8[_0x5dca31];return _0x486be9;};'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
index a55a173..beda262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01af=['https://','custom','attrPath','clock','attrHourFormat','value','HH:mm:ss','0.00','attrFontSize','counter','attrMetric','total','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrVoiceQueues','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','update','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','end','error','stack','send','show','model','DashboardItem','rawAttributes','keys','query','filters','intersection','attributes','fields','length','includeAll','include','merge','find','catch','destroy','params','type','iframe','attrUrl','attrs'];(function(_0x3ee2b4,_0x5b5104){var _0x53bcbd=function(_0x43e60b){while(--_0x43e60b){_0x3ee2b4['push'](_0x3ee2b4['shift']());}};_0x53bcbd(++_0x5b5104);}(_0x01af,0x79));var _0xf01a=function(_0x174fcb,_0x51d223){_0x174fcb=_0x174fcb-0x0;var _0x871370=_0x01af[_0x174fcb];return _0x871370;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf01a('0x0'));var zipdir=require(_0xf01a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf01a('0x2'));var moment=require(_0xf01a('0x3'));var BPromise=require(_0xf01a('0x4'));var Mustache=require('mustache');var util=require(_0xf01a('0x5'));var path=require(_0xf01a('0x6'));var sox=require(_0xf01a('0x7'));var csv=require(_0xf01a('0x8'));var ejs=require(_0xf01a('0x9'));var fs=require('fs');var fs_extra=require(_0xf01a('0xa'));var _=require('lodash');var squel=require(_0xf01a('0xb'));var crypto=require(_0xf01a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf01a('0x8'));var querystring=require(_0xf01a('0xd'));var Papa=require(_0xf01a('0xe'));var Redis=require(_0xf01a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf01a('0x10'));var as=require(_0xf01a('0x11'));var hardwareService=require(_0xf01a('0x12'));var logger=require('../../config/logger')(_0xf01a('0x13'));var utils=require(_0xf01a('0x14'));var config=require(_0xf01a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xf01a('0x16')]=_[_0xf01a('0x17')](config[_0xf01a('0x16')],{'host':_0xf01a('0x18'),'port':0x18eb});var socket=require(_0xf01a('0x19'))(new Redis(config[_0xf01a('0x16')]));require(_0xf01a('0x1a'))[_0xf01a('0x1b')](socket);function respondWithStatusCode(_0x257614,_0x4610e1){_0x4610e1=_0x4610e1||0xcc;return function(_0x4b1de9){if(_0x4b1de9){return _0x257614[_0xf01a('0x1c')](_0x4610e1);}return _0x257614[_0xf01a('0x1d')](_0x4610e1)['end']();};}function respondWithResult(_0x3c7019,_0x3d3d2d){_0x3d3d2d=_0x3d3d2d||0xc8;return function(_0x47feef){if(_0x47feef){return _0x3c7019[_0xf01a('0x1d')](_0x3d3d2d)[_0xf01a('0x1e')](_0x47feef);}};}function respondWithFilteredResult(_0x575685,_0x1df7f4){return function(_0x4497fb){if(_0x4497fb){var _0x3cc6ea=typeof _0x1df7f4[_0xf01a('0x1f')]===_0xf01a('0x20')&&typeof _0x1df7f4[_0xf01a('0x21')]===_0xf01a('0x20');var _0x487018=_0x4497fb[_0xf01a('0x22')];var _0x42605c=_0x3cc6ea?0x0:_0x1df7f4[_0xf01a('0x1f')];var _0x33a0b0=_0x3cc6ea?_0x4497fb['count']:_0x1df7f4[_0xf01a('0x1f')]+_0x1df7f4[_0xf01a('0x21')];var _0x2142c2;if(_0x33a0b0>=_0x487018){_0x33a0b0=_0x487018;_0x2142c2=0xc8;}else{_0x2142c2=0xce;}_0x575685[_0xf01a('0x1d')](_0x2142c2);return _0x575685[_0xf01a('0x23')](_0xf01a('0x24'),_0x42605c+'-'+_0x33a0b0+'/'+_0x487018)['json'](_0x4497fb);}return null;};}function patchUpdates(_0x3349b7){return function(_0x1e3a1b){try{jsonpatch[_0xf01a('0x25')](_0x1e3a1b,_0x3349b7,!![]);}catch(_0xf22db0){return BPromise[_0xf01a('0x26')](_0xf22db0);}return _0x1e3a1b[_0xf01a('0x27')]();};}function saveUpdates(_0x118a37,_0x50e0e5){return function(_0x241ed9){if(_0x241ed9){return _0x241ed9['update'](_0x118a37)[_0xf01a('0x28')](function(_0x2fc8e0){return _0x2fc8e0;});}return null;};}function removeEntity(_0x352b6c,_0x1d7525){return function(_0x1f4df1){if(_0x1f4df1){return _0x1f4df1['destroy']()['then'](function(){_0x352b6c[_0xf01a('0x1d')](0xcc)[_0xf01a('0x29')]();});}};}function handleEntityNotFound(_0x31de94,_0x4a00f0){return function(_0x4e668e){if(!_0x4e668e){_0x31de94['sendStatus'](0x194);}return _0x4e668e;};}function handleError(_0x1589e5,_0x19d5a4){_0x19d5a4=_0x19d5a4||0x1f4;return function(_0x3bfc70){logger[_0xf01a('0x2a')](_0x3bfc70[_0xf01a('0x2b')]);if(_0x3bfc70['name']){delete _0x3bfc70['name'];}_0x1589e5['status'](_0x19d5a4)[_0xf01a('0x2c')](_0x3bfc70);};}exports[_0xf01a('0x2d')]=function(_0x3e4617,_0x3e9cf3){var _0x2122d9={'raw':![],'where':{'id':_0x3e4617['params']['id']}},_0x2624b5={};_0x2624b5[_0xf01a('0x2e')]=_['keys'](db[_0xf01a('0x2f')][_0xf01a('0x30')]);_0x2624b5['query']=_[_0xf01a('0x31')](_0x3e4617[_0xf01a('0x32')]);_0x2624b5[_0xf01a('0x33')]=_[_0xf01a('0x34')](_0x2624b5['model'],_0x2624b5[_0xf01a('0x32')]);_0x2122d9[_0xf01a('0x35')]=_[_0xf01a('0x34')](_0x2624b5[_0xf01a('0x2e')],qs[_0xf01a('0x36')](_0x3e4617[_0xf01a('0x32')]['fields']));_0x2122d9[_0xf01a('0x35')]=_0x2122d9[_0xf01a('0x35')][_0xf01a('0x37')]?_0x2122d9[_0xf01a('0x35')]:_0x2624b5['model'];if(_0x3e4617[_0xf01a('0x32')][_0xf01a('0x38')]){_0x2122d9[_0xf01a('0x39')]=[{'all':!![]}];}_0x2122d9=_[_0xf01a('0x3a')]({},_0x2122d9,_0x3e4617['options']);return db[_0xf01a('0x2f')][_0xf01a('0x3b')](_0x2122d9)[_0xf01a('0x28')](handleEntityNotFound(_0x3e9cf3,null))['then'](respondWithResult(_0x3e9cf3,null))[_0xf01a('0x3c')](handleError(_0x3e9cf3,null));};exports[_0xf01a('0x3d')]=function(_0x52063b,_0x5d6b42){return db['DashboardItem'][_0xf01a('0x3b')]({'where':{'id':_0x52063b[_0xf01a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5d6b42,null))['then'](removeEntity(_0x5d6b42,null))['catch'](handleError(_0x5d6b42,null));};function widgetAttributes(_0x38cf03){try{switch(_0x38cf03[_0xf01a('0x3f')]){case _0xf01a('0x40'):return[{'name':_0xf01a('0x41'),'value':_0x38cf03[_0xf01a('0x41')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03['attrs'][0x0]['value']:undefined)||_0xf01a('0x43')}];case _0xf01a('0x44'):return[{'name':_0xf01a('0x45'),'value':_0x38cf03[_0xf01a('0x45')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x0]?_0x38cf03[_0xf01a('0x42')][0x0]['value']:undefined)||''}];case _0xf01a('0x46'):return[{'name':_0xf01a('0x47'),'value':_0x38cf03['attrHourFormat']||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03['attrs'][0x0][_0xf01a('0x48')]:undefined)||_0xf01a('0x49')},{'name':'attrTimezone','value':_0x38cf03['attrTimezone']||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x1]?_0x38cf03[_0xf01a('0x42')][0x1]['value']:undefined)||_0xf01a('0x4a')},{'name':'attrFontSize','value':_0x38cf03[_0xf01a('0x4b')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x2]?_0x38cf03[_0xf01a('0x42')][0x2][_0xf01a('0x48')]:undefined)||0xc}];case _0xf01a('0x4c'):return[{'name':'attrMetric','value':_0x38cf03[_0xf01a('0x4d')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03[_0xf01a('0x42')][0x0][_0xf01a('0x48')]:undefined)||_0xf01a('0x4e')},{'name':'attrVoiceQueues','value':_0x38cf03['attrVoiceQueues']||(_0x38cf03['attrs']&&_0x38cf03['attrs'][0x1]?_0x38cf03['attrs'][0x1][_0xf01a('0x48')]:undefined)||[]},{'name':_0xf01a('0x4b'),'value':_0x38cf03[_0xf01a('0x4b')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x2]?_0x38cf03[_0xf01a('0x42')][0x2]['value']:undefined)||0x14}];case _0xf01a('0x4f'):case _0xf01a('0x50'):return[{'name':_0xf01a('0x51'),'value':_0x38cf03[_0xf01a('0x51')]||(_0x38cf03['attrs']&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03[_0xf01a('0x42')][0x0][_0xf01a('0x48')]:undefined)||_0xf01a('0x4e')},{'name':_0xf01a('0x52'),'value':_0x38cf03[_0xf01a('0x52')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x1]?_0x38cf03[_0xf01a('0x42')][0x1][_0xf01a('0x48')]:undefined)||null},{'name':'attrSerie3','value':_0x38cf03[_0xf01a('0x53')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x2]?_0x38cf03[_0xf01a('0x42')][0x2][_0xf01a('0x48')]:undefined)||null},{'name':_0xf01a('0x54'),'value':_0x38cf03[_0xf01a('0x54')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x3]?_0x38cf03[_0xf01a('0x42')][0x3][_0xf01a('0x48')]:undefined)||[]}];case _0xf01a('0x55'):return[{'name':_0xf01a('0x56'),'type':_0x38cf03[_0xf01a('0x57')]||(_0x38cf03['attrs']&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03['attrs'][0x0][_0xf01a('0x3f')]:undefined)||null,'value':_0x38cf03[_0xf01a('0x56')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x0]?_0x38cf03[_0xf01a('0x42')][0x0][_0xf01a('0x48')]:undefined)||null},{'name':'attrRefresh','value':_0x38cf03[_0xf01a('0x58')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x1]?_0x38cf03[_0xf01a('0x42')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0xd67712){logger[_0xf01a('0x2a')](_0xf01a('0x59'),JSON[_0xf01a('0x5a')](_0xd67712));return[];}}exports[_0xf01a('0x5b')]=function(_0x499473,_0x3ad304){if(_0x499473['body']){_0x499473[_0xf01a('0x5c')][_0xf01a('0x42')]=widgetAttributes(_0x499473['body']);}return db[_0xf01a('0x2f')][_0xf01a('0x5b')](_0x499473[_0xf01a('0x5c')],{})[_0xf01a('0x28')](respondWithResult(_0x3ad304,0xc9))[_0xf01a('0x3c')](handleError(_0x3ad304,null));};exports[_0xf01a('0x5d')]=function(_0x10eb33,_0xc4498f){if(_0x10eb33[_0xf01a('0x5c')]['id']){delete _0x10eb33[_0xf01a('0x5c')]['id'];}_0x10eb33['body'][_0xf01a('0x42')]=widgetAttributes(_0x10eb33[_0xf01a('0x5c')]);return db[_0xf01a('0x2f')][_0xf01a('0x3b')]({'where':{'id':_0x10eb33[_0xf01a('0x3e')]['id']}})[_0xf01a('0x28')](handleEntityNotFound(_0xc4498f,null))['then'](saveUpdates(_0x10eb33[_0xf01a('0x5c')],null))['then'](respondWithResult(_0xc4498f,null))[_0xf01a('0x3c')](handleError(_0xc4498f,null));};
\ No newline at end of file
+var _0xf63f=['socket.io-emitter','register','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','destroy','then','end','stack','name','send','show','params','model','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','type','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','widgetAttributes:\x20%s','stringify','body','create','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost'];(function(_0x46e9de,_0x1db92e){var _0x2cc952=function(_0x5a91c7){while(--_0x5a91c7){_0x46e9de['push'](_0x46e9de['shift']());}};_0x2cc952(++_0x1db92e);}(_0xf63f,0xf8));var _0xff63=function(_0x8c2905,_0xa85a96){_0x8c2905=_0x8c2905-0x0;var _0x3603e2=_0xf63f[_0x8c2905];return _0x3603e2;};'use strict';var emlformat=require(_0xff63('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff63('0x1'));var jsonpatch=require(_0xff63('0x2'));var rp=require(_0xff63('0x3'));var moment=require(_0xff63('0x4'));var BPromise=require(_0xff63('0x5'));var Mustache=require(_0xff63('0x6'));var util=require(_0xff63('0x7'));var path=require(_0xff63('0x8'));var sox=require(_0xff63('0x9'));var csv=require(_0xff63('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xff63('0xb'));var _=require(_0xff63('0xc'));var squel=require(_0xff63('0xd'));var crypto=require('crypto');var jsforce=require(_0xff63('0xe'));var deskjs=require(_0xff63('0xf'));var toCsv=require(_0xff63('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xff63('0x10'));var qs=require(_0xff63('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xff63('0x12'));var logger=require(_0xff63('0x13'))(_0xff63('0x14'));var utils=require(_0xff63('0x15'));var config=require(_0xff63('0x16'));var licenseUtil=require(_0xff63('0x17'));var db=require(_0xff63('0x18'))['db'];config[_0xff63('0x19')]=_[_0xff63('0x1a')](config[_0xff63('0x19')],{'host':_0xff63('0x1b'),'port':0x18eb});var socket=require(_0xff63('0x1c'))(new Redis(config['redis']));require('./dashboardItem.socket')[_0xff63('0x1d')](socket);function respondWithStatusCode(_0x512cea,_0x27e380){_0x27e380=_0x27e380||0xcc;return function(_0x568380){if(_0x568380){return _0x512cea[_0xff63('0x1e')](_0x27e380);}return _0x512cea['status'](_0x27e380)['end']();};}function respondWithResult(_0x259453,_0x204537){_0x204537=_0x204537||0xc8;return function(_0x1c6b8a){if(_0x1c6b8a){return _0x259453['status'](_0x204537)[_0xff63('0x1f')](_0x1c6b8a);}};}function respondWithFilteredResult(_0x1dc2db,_0x4106f5){return function(_0x1b6409){if(_0x1b6409){var _0x297712=typeof _0x4106f5[_0xff63('0x20')]===_0xff63('0x21')&&typeof _0x4106f5[_0xff63('0x22')]==='undefined';var _0x6a8191=_0x1b6409[_0xff63('0x23')];var _0x3429d4=_0x297712?0x0:_0x4106f5['offset'];var _0x3dbc98=_0x297712?_0x1b6409[_0xff63('0x23')]:_0x4106f5[_0xff63('0x20')]+_0x4106f5[_0xff63('0x22')];var _0x5b6b8d;if(_0x3dbc98>=_0x6a8191){_0x3dbc98=_0x6a8191;_0x5b6b8d=0xc8;}else{_0x5b6b8d=0xce;}_0x1dc2db[_0xff63('0x24')](_0x5b6b8d);return _0x1dc2db[_0xff63('0x25')](_0xff63('0x26'),_0x3429d4+'-'+_0x3dbc98+'/'+_0x6a8191)[_0xff63('0x1f')](_0x1b6409);}return null;};}function patchUpdates(_0x27d481){return function(_0x1fc9b4){try{jsonpatch[_0xff63('0x27')](_0x1fc9b4,_0x27d481,!![]);}catch(_0x3200f3){return BPromise['reject'](_0x3200f3);}return _0x1fc9b4[_0xff63('0x28')]();};}function saveUpdates(_0x18fdbb,_0x309353){return function(_0xb77828){if(_0xb77828){return _0xb77828[_0xff63('0x29')](_0x18fdbb)['then'](function(_0x52417b){return _0x52417b;});}return null;};}function removeEntity(_0x3b18d3,_0x31853a){return function(_0x112514){if(_0x112514){return _0x112514[_0xff63('0x2a')]()[_0xff63('0x2b')](function(){_0x3b18d3[_0xff63('0x24')](0xcc)[_0xff63('0x2c')]();});}};}function handleEntityNotFound(_0x52bd97,_0x58cba4){return function(_0x4ed227){if(!_0x4ed227){_0x52bd97[_0xff63('0x1e')](0x194);}return _0x4ed227;};}function handleError(_0x6d6c1e,_0x52a54a){_0x52a54a=_0x52a54a||0x1f4;return function(_0x5af740){logger['error'](_0x5af740[_0xff63('0x2d')]);if(_0x5af740['name']){delete _0x5af740[_0xff63('0x2e')];}_0x6d6c1e['status'](_0x52a54a)[_0xff63('0x2f')](_0x5af740);};}exports[_0xff63('0x30')]=function(_0x268b72,_0x454056){var _0x4de14a={'raw':![],'where':{'id':_0x268b72[_0xff63('0x31')]['id']}},_0x40fed2={};_0x40fed2[_0xff63('0x32')]=_['keys'](db[_0xff63('0x33')][_0xff63('0x34')]);_0x40fed2[_0xff63('0x35')]=_['keys'](_0x268b72[_0xff63('0x35')]);_0x40fed2[_0xff63('0x36')]=_[_0xff63('0x37')](_0x40fed2[_0xff63('0x32')],_0x40fed2[_0xff63('0x35')]);_0x4de14a[_0xff63('0x38')]=_[_0xff63('0x37')](_0x40fed2[_0xff63('0x32')],qs[_0xff63('0x39')](_0x268b72[_0xff63('0x35')]['fields']));_0x4de14a[_0xff63('0x38')]=_0x4de14a[_0xff63('0x38')][_0xff63('0x3a')]?_0x4de14a[_0xff63('0x38')]:_0x40fed2[_0xff63('0x32')];if(_0x268b72[_0xff63('0x35')]['includeAll']){_0x4de14a[_0xff63('0x3b')]=[{'all':!![]}];}_0x4de14a=_[_0xff63('0x3c')]({},_0x4de14a,_0x268b72[_0xff63('0x3d')]);return db[_0xff63('0x33')][_0xff63('0x3e')](_0x4de14a)[_0xff63('0x2b')](handleEntityNotFound(_0x454056,null))[_0xff63('0x2b')](respondWithResult(_0x454056,null))['catch'](handleError(_0x454056,null));};exports[_0xff63('0x2a')]=function(_0x5b5ef2,_0x9b05ec){return db[_0xff63('0x33')]['find']({'where':{'id':_0x5b5ef2[_0xff63('0x31')]['id']}})[_0xff63('0x2b')](handleEntityNotFound(_0x9b05ec,null))[_0xff63('0x2b')](removeEntity(_0x9b05ec,null))[_0xff63('0x3f')](handleError(_0x9b05ec,null));};function widgetAttributes(_0xd43d3a){try{switch(_0xd43d3a[_0xff63('0x40')]){case'iframe':return[{'name':'attrUrl','value':_0xd43d3a['attrUrl']||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x0]?_0xd43d3a[_0xff63('0x41')][0x0][_0xff63('0x42')]:undefined)||_0xff63('0x43')}];case _0xff63('0x44'):return[{'name':_0xff63('0x45'),'value':_0xd43d3a[_0xff63('0x45')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x0]?_0xd43d3a[_0xff63('0x41')][0x0][_0xff63('0x42')]:undefined)||''}];case _0xff63('0x46'):return[{'name':_0xff63('0x47'),'value':_0xd43d3a[_0xff63('0x47')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x0]?_0xd43d3a['attrs'][0x0][_0xff63('0x42')]:undefined)||_0xff63('0x48')},{'name':_0xff63('0x49'),'value':_0xd43d3a[_0xff63('0x49')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x1]?_0xd43d3a['attrs'][0x1][_0xff63('0x42')]:undefined)||_0xff63('0x4a')},{'name':_0xff63('0x4b'),'value':_0xd43d3a[_0xff63('0x4b')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x2]?_0xd43d3a['attrs'][0x2][_0xff63('0x42')]:undefined)||0xc}];case _0xff63('0x4c'):return[{'name':_0xff63('0x4d'),'value':_0xd43d3a[_0xff63('0x4d')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x0]?_0xd43d3a[_0xff63('0x41')][0x0][_0xff63('0x42')]:undefined)||_0xff63('0x4e')},{'name':_0xff63('0x4f'),'value':_0xd43d3a[_0xff63('0x4f')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x1]?_0xd43d3a[_0xff63('0x41')][0x1][_0xff63('0x42')]:undefined)||[]},{'name':_0xff63('0x4b'),'value':_0xd43d3a[_0xff63('0x4b')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x2]?_0xd43d3a['attrs'][0x2]['value']:undefined)||0x14}];case _0xff63('0x50'):case _0xff63('0x51'):return[{'name':_0xff63('0x52'),'value':_0xd43d3a[_0xff63('0x52')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x0]?_0xd43d3a[_0xff63('0x41')][0x0][_0xff63('0x42')]:undefined)||_0xff63('0x4e')},{'name':_0xff63('0x53'),'value':_0xd43d3a[_0xff63('0x53')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x1]?_0xd43d3a['attrs'][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0xd43d3a[_0xff63('0x54')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x2]?_0xd43d3a[_0xff63('0x41')][0x2][_0xff63('0x42')]:undefined)||null},{'name':'attrVoiceQueues','value':_0xd43d3a['attrVoiceQueues']||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x3]?_0xd43d3a['attrs'][0x3]['value']:undefined)||[]}];case _0xff63('0x55'):return[{'name':'attrReport','type':_0xd43d3a[_0xff63('0x56')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x0]?_0xd43d3a[_0xff63('0x41')][0x0][_0xff63('0x40')]:undefined)||null,'value':_0xd43d3a[_0xff63('0x57')]||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a['attrs'][0x0]?_0xd43d3a[_0xff63('0x41')][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0xd43d3a['attrRefresh']||(_0xd43d3a[_0xff63('0x41')]&&_0xd43d3a[_0xff63('0x41')][0x1]?_0xd43d3a[_0xff63('0x41')][0x1][_0xff63('0x42')]:undefined)||0x0}];default:return[];}}catch(_0x1b2e76){logger['error'](_0xff63('0x58'),JSON[_0xff63('0x59')](_0x1b2e76));return[];}}exports['create']=function(_0x3dd7c6,_0x5105ae){if(_0x3dd7c6['body']){_0x3dd7c6[_0xff63('0x5a')]['attrs']=widgetAttributes(_0x3dd7c6[_0xff63('0x5a')]);}return db[_0xff63('0x33')][_0xff63('0x5b')](_0x3dd7c6['body'],{})['then'](respondWithResult(_0x5105ae,0xc9))[_0xff63('0x3f')](handleError(_0x5105ae,null));};exports[_0xff63('0x29')]=function(_0x34f423,_0x2154ff){if(_0x34f423[_0xff63('0x5a')]['id']){delete _0x34f423[_0xff63('0x5a')]['id'];}_0x34f423[_0xff63('0x5a')][_0xff63('0x41')]=widgetAttributes(_0x34f423['body']);return db[_0xff63('0x33')][_0xff63('0x3e')]({'where':{'id':_0x34f423[_0xff63('0x31')]['id']}})[_0xff63('0x2b')](handleEntityNotFound(_0x2154ff,null))['then'](saveUpdates(_0x34f423[_0xff63('0x5a')],null))['then'](respondWithResult(_0x2154ff,null))[_0xff63('0x3f')](handleError(_0x2154ff,null));};
\ No newline at end of file
index 2819db6..3e58bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fe5=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x445d92,_0x22c321){var _0x2bac4d=function(_0xe6f1a1){while(--_0xe6f1a1){_0x445d92['push'](_0x445d92['shift']());}};_0x2bac4d(++_0x22c321);}(_0x2fe5,0x14b));var _0x52fe=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2fe5[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0x52fe('0x0'));var DashboardItem=require(_0x52fe('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x52fe('0x2'),'afterUpdate':_0x52fe('0x3'),'afterDestroy':_0x52fe('0x4')};function emitEvent(_0x39f0a7){return function(_0xd0dfd1,_0x48ef08,_0x445d6f){DashboardItemEvents[_0x52fe('0x5')](_0x39f0a7+':'+_0xd0dfd1['id'],_0xd0dfd1);DashboardItemEvents['emit'](_0x39f0a7,_0xd0dfd1);_0x445d6f(null);};}for(var e in events){if(events[_0x52fe('0x6')](e)){var event=events[e];DashboardItem[_0x52fe('0x7')](e,emitEvent(event));}}module[_0x52fe('0x8')]=DashboardItemEvents;
\ No newline at end of file
+var _0xf08f=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','DashboardItem'];(function(_0x38b40f,_0x2d0152){var _0x74fcba=function(_0x12595b){while(--_0x12595b){_0x38b40f['push'](_0x38b40f['shift']());}};_0x74fcba(++_0x2d0152);}(_0xf08f,0x178));var _0xff08=function(_0x2f32c4,_0x2597ba){_0x2f32c4=_0x2f32c4-0x0;var _0x95b5dc=_0xf08f[_0x2f32c4];return _0x95b5dc;};'use strict';var EventEmitter=require(_0xff08('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xff08('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xff08('0x2')](0x0);var events={'afterCreate':_0xff08('0x3'),'afterUpdate':_0xff08('0x4'),'afterDestroy':'remove'};function emitEvent(_0x14d749){return function(_0x46ffd1,_0x2a1250,_0x258c15){DashboardItemEvents[_0xff08('0x5')](_0x14d749+':'+_0x46ffd1['id'],_0x46ffd1);DashboardItemEvents[_0xff08('0x5')](_0x14d749,_0x46ffd1);_0x258c15(null);};}for(var e in events){if(events[_0xff08('0x6')](e)){var event=events[e];DashboardItem[_0xff08('0x7')](e,emitEvent(event));}}module[_0xff08('0x8')]=DashboardItemEvents;
\ No newline at end of file
index 5bd7e0b..f17051c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5b7=['request-promise','rimraf','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','util','../../config/logger','api','moment','bluebird'];(function(_0x5277df,_0x4f836e){var _0x34249e=function(_0x1222cf){while(--_0x1222cf){_0x5277df['push'](_0x5277df['shift']());}};_0x34249e(++_0x4f836e);}(_0xf5b7,0xf7));var _0x7f5b=function(_0x2bfc84,_0x14478a){_0x2bfc84=_0x2bfc84-0x0;var _0x2104ae=_0xf5b7[_0x2bfc84];return _0x2104ae;};'use strict';var _=require('lodash');var util=require(_0x7f5b('0x0'));var logger=require(_0x7f5b('0x1'))(_0x7f5b('0x2'));var moment=require(_0x7f5b('0x3'));var BPromise=require(_0x7f5b('0x4'));var rp=require(_0x7f5b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7f5b('0x6'));var config=require('../../config/environment');var attributes=require(_0x7f5b('0x7'));module[_0x7f5b('0x8')]=function(_0x481e5b,_0x295885){return _0x481e5b[_0x7f5b('0x9')](_0x7f5b('0xa'),attributes,{'tableName':_0x7f5b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c0a=['./dashboardItem.attributes','define','dashboard_items','lodash','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x378720,_0xa711f1){var _0x47920a=function(_0xc5056){while(--_0xc5056){_0x378720['push'](_0x378720['shift']());}};_0x47920a(++_0xa711f1);}(_0x4c0a,0x11a));var _0xa4c0=function(_0x4376ff,_0x204647){_0x4376ff=_0x4376ff-0x0;var _0x7d36d9=_0x4c0a[_0x4376ff];return _0x7d36d9;};'use strict';var _=require(_0xa4c0('0x0'));var util=require('util');var logger=require(_0xa4c0('0x1'))(_0xa4c0('0x2'));var moment=require(_0xa4c0('0x3'));var BPromise=require(_0xa4c0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa4c0('0x5'));var attributes=require(_0xa4c0('0x6'));module['exports']=function(_0x5374a2,_0x194d73){return _0x5374a2[_0xa4c0('0x7')]('DashboardItem',attributes,{'tableName':_0xa4c0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 00ca86c..8d73e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf311=['request','info','DashboardItem,\x20%s,\x20%s','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','code','error','message','result','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket'];(function(_0x17b287,_0x4bed1c){var _0x177054=function(_0x380f78){while(--_0x380f78){_0x17b287['push'](_0x17b287['shift']());}};_0x177054(++_0x4bed1c);}(_0xf311,0xd8));var _0x1f31=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf311[_0x1cc8fe];return _0x230054;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1f31('0x0'));var BPromise=require('bluebird');var rs=require(_0x1f31('0x1'));var fs=require('fs');var Redis=require(_0x1f31('0x2'));var db=require(_0x1f31('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f31('0x4'))(_0x1f31('0x5'));var config=require(_0x1f31('0x6'));var jayson=require(_0x1f31('0x7'));var client=jayson[_0x1f31('0x8')][_0x1f31('0x9')]({'port':0x232a});config[_0x1f31('0xa')]=_['defaults'](config[_0x1f31('0xa')],{'host':_0x1f31('0xb'),'port':0x18eb});var socket=require(_0x1f31('0xc'))(new Redis(config['redis']));require(_0x1f31('0xd'))['register'](socket);function respondWithRpcPromise(_0x545e88,_0x117708,_0x2b942d){return new BPromise(function(_0x106bb1,_0x5ebf82){return client[_0x1f31('0xe')](_0x545e88,_0x2b942d)['then'](function(_0x28c217){logger[_0x1f31('0xf')](_0x1f31('0x10'),_0x117708,_0x1f31('0x11'));logger['debug'](_0x1f31('0x12'),_0x117708,_0x1f31('0x11'),JSON['stringify'](_0x28c217));if(_0x28c217['error']){if(_0x28c217['error'][_0x1f31('0x13')]===0x1f4){logger[_0x1f31('0x14')](_0x1f31('0x10'),_0x117708,_0x28c217['error'][_0x1f31('0x15')]);return _0x5ebf82(_0x28c217[_0x1f31('0x14')][_0x1f31('0x15')]);}logger[_0x1f31('0x14')]('DashboardItem,\x20%s,\x20%s',_0x117708,_0x28c217['error'][_0x1f31('0x15')]);return _0x106bb1(_0x28c217['error'][_0x1f31('0x15')]);}else{logger[_0x1f31('0xf')](_0x1f31('0x10'),_0x117708,_0x1f31('0x11'));_0x106bb1(_0x28c217[_0x1f31('0x16')][_0x1f31('0x15')]);}})['catch'](function(_0x2f3dd3){logger[_0x1f31('0x14')](_0x1f31('0x10'),_0x117708,_0x2f3dd3);_0x5ebf82(_0x2f3dd3);});});}
\ No newline at end of file
+var _0xcd0a=['request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','register'];(function(_0x26478e,_0xa4ba6c){var _0x342471=function(_0xeffbd3){while(--_0xeffbd3){_0x26478e['push'](_0x26478e['shift']());}};_0x342471(++_0xa4ba6c);}(_0xcd0a,0x1d8));var _0xacd0=function(_0x26cf86,_0x359fe7){_0x26cf86=_0x26cf86-0x0;var _0x3250ea=_0xcd0a[_0x26cf86];return _0x3250ea;};'use strict';var _=require(_0xacd0('0x0'));var util=require('util');var moment=require(_0xacd0('0x1'));var BPromise=require(_0xacd0('0x2'));var rs=require(_0xacd0('0x3'));var fs=require('fs');var Redis=require(_0xacd0('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xacd0('0x5'))(_0xacd0('0x6'));var config=require(_0xacd0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xacd0('0x8')][_0xacd0('0x9')]({'port':0x232a});config[_0xacd0('0xa')]=_[_0xacd0('0xb')](config[_0xacd0('0xa')],{'host':_0xacd0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xacd0('0xa')]));require('./dashboardItem.socket')[_0xacd0('0xd')](socket);function respondWithRpcPromise(_0x1f2778,_0x24c4bb,_0x22581a){return new BPromise(function(_0x1410a0,_0xdfd98e){return client[_0xacd0('0xe')](_0x1f2778,_0x22581a)[_0xacd0('0xf')](function(_0x27f0dc){logger[_0xacd0('0x10')](_0xacd0('0x11'),_0x24c4bb,_0xacd0('0x12'));logger[_0xacd0('0x13')](_0xacd0('0x14'),_0x24c4bb,_0xacd0('0x12'),JSON[_0xacd0('0x15')](_0x27f0dc));if(_0x27f0dc['error']){if(_0x27f0dc[_0xacd0('0x16')][_0xacd0('0x17')]===0x1f4){logger[_0xacd0('0x16')](_0xacd0('0x11'),_0x24c4bb,_0x27f0dc['error'][_0xacd0('0x18')]);return _0xdfd98e(_0x27f0dc[_0xacd0('0x16')][_0xacd0('0x18')]);}logger[_0xacd0('0x16')](_0xacd0('0x11'),_0x24c4bb,_0x27f0dc[_0xacd0('0x16')][_0xacd0('0x18')]);return _0x1410a0(_0x27f0dc[_0xacd0('0x16')][_0xacd0('0x18')]);}else{logger[_0xacd0('0x10')](_0xacd0('0x11'),_0x24c4bb,_0xacd0('0x12'));_0x1410a0(_0x27f0dc[_0xacd0('0x19')][_0xacd0('0x18')]);}})[_0xacd0('0x1a')](function(_0x59f746){logger[_0xacd0('0x16')](_0xacd0('0x11'),_0x24c4bb,_0x59f746);_0xdfd98e(_0x59f746);});});}
\ No newline at end of file
index 88e7b7e..ea4f0ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d2=['remove','update','emit','removeListener','register','length','dashboardItem:','save'];(function(_0x483882,_0xa3ee97){var _0x1ce74d=function(_0x3c1b31){while(--_0x3c1b31){_0x483882['push'](_0x483882['shift']());}};_0x1ce74d(++_0xa3ee97);}(_0x76d2,0x197));var _0x276d=function(_0x5eb404,_0x54980f){_0x5eb404=_0x5eb404-0x0;var _0xcd5a4d=_0x76d2[_0x5eb404];return _0xcd5a4d;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0x276d('0x0'),_0x276d('0x1'),_0x276d('0x2')];function createListener(_0x1fa22c,_0x203683){return function(_0x22d2b8){_0x203683[_0x276d('0x3')](_0x1fa22c,_0x22d2b8);};}function removeListener(_0x12b0c5,_0x3268b0){return function(){DashboardItemEvents[_0x276d('0x4')](_0x12b0c5,_0x3268b0);};}exports[_0x276d('0x5')]=function(_0x4421bd){for(var _0x569c48=0x0,_0x5c1d96=events[_0x276d('0x6')];_0x569c48<_0x5c1d96;_0x569c48++){var _0x195ca4=events[_0x569c48];var _0x5ccaea=createListener(_0x276d('0x7')+_0x195ca4,_0x4421bd);DashboardItemEvents['on'](_0x195ca4,_0x5ccaea);}};
\ No newline at end of file
+var _0x25df=['save','remove','update','removeListener','register','length','./dashboardItem.events'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x25df,0x1d4));var _0xf25d=function(_0x9b09aa,_0x53ed8e){_0x9b09aa=_0x9b09aa-0x0;var _0x553abc=_0x25df[_0x9b09aa];return _0x553abc;};'use strict';var DashboardItemEvents=require(_0xf25d('0x0'));var events=[_0xf25d('0x1'),_0xf25d('0x2'),_0xf25d('0x3')];function createListener(_0xd22be6,_0x141b9c){return function(_0x4c69dd){_0x141b9c['emit'](_0xd22be6,_0x4c69dd);};}function removeListener(_0x3d5bca,_0x5c6370){return function(){DashboardItemEvents[_0xf25d('0x4')](_0x3d5bca,_0x5c6370);};}exports[_0xf25d('0x5')]=function(_0x29bcca){for(var _0x21f18d=0x0,_0x12e7a8=events[_0xf25d('0x6')];_0x21f18d<_0x12e7a8;_0x21f18d++){var _0xd211c=events[_0x21f18d];var _0xe38af9=createListener('dashboardItem:'+_0xd211c,_0x29bcca);DashboardItemEvents['on'](_0xd211c,_0xe38af9);}};
\ No newline at end of file
index 558203a..fabd657 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d1=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','post','isAuthenticated','put','update','delete'];(function(_0x146a85,_0x529b52){var _0x1b59bf=function(_0x4af0fd){while(--_0x4af0fd){_0x146a85['push'](_0x146a85['shift']());}};_0x1b59bf(++_0x529b52);}(_0x23d1,0x1d5));var _0x123d=function(_0x2b1d17,_0x13c88f){_0x2b1d17=_0x2b1d17-0x0;var _0x4c0b4b=_0x23d1[_0x2b1d17];return _0x4c0b4b;};'use strict';var multer=require(_0x123d('0x0'));var util=require(_0x123d('0x1'));var path=require(_0x123d('0x2'));var timeout=require(_0x123d('0x3'));var express=require(_0x123d('0x4'));var router=express['Router']();var fs_extra=require(_0x123d('0x5'));var auth=require(_0x123d('0x6'));var interaction=require(_0x123d('0x7'));var config=require(_0x123d('0x8'));var controller=require(_0x123d('0x9'));router[_0x123d('0xa')](_0x123d('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x123d('0xc')]('/',auth[_0x123d('0xd')](),controller['create']);router[_0x123d('0xe')](_0x123d('0xb'),auth[_0x123d('0xd')](),controller[_0x123d('0xf')]);router[_0x123d('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x123d('0x11')]=router;
\ No newline at end of file
+var _0x0bbf=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','util','path'];(function(_0x274a31,_0xfae158){var _0x5d1675=function(_0x5a7ff4){while(--_0x5a7ff4){_0x274a31['push'](_0x274a31['shift']());}};_0x5d1675(++_0xfae158);}(_0x0bbf,0x185));var _0xf0bb=function(_0x3600e4,_0x215e86){_0x3600e4=_0x3600e4-0x0;var _0x494bfa=_0x0bbf[_0x3600e4];return _0x494bfa;};'use strict';var multer=require('multer');var util=require(_0xf0bb('0x0'));var path=require(_0xf0bb('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf0bb('0x2')]();var fs_extra=require(_0xf0bb('0x3'));var auth=require(_0xf0bb('0x4'));var interaction=require(_0xf0bb('0x5'));var config=require(_0xf0bb('0x6'));var controller=require(_0xf0bb('0x7'));router[_0xf0bb('0x8')](_0xf0bb('0x9'),auth[_0xf0bb('0xa')](),controller[_0xf0bb('0xb')]);router[_0xf0bb('0xc')]('/',auth[_0xf0bb('0xa')](),controller[_0xf0bb('0xd')]);router[_0xf0bb('0xe')](_0xf0bb('0x9'),auth[_0xf0bb('0xa')](),controller['update']);router[_0xf0bb('0xf')](_0xf0bb('0x9'),auth[_0xf0bb('0xa')](),controller[_0xf0bb('0x10')]);module['exports']=router;
\ No newline at end of file
index c8debeb..8e4ccc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe624=['ENUM','first','third','STRING'];(function(_0x144fea,_0x422c9a){var _0x21d993=function(_0x594692){while(--_0x594692){_0x144fea['push'](_0x144fea['shift']());}};_0x21d993(++_0x422c9a);}(_0xe624,0x193));var _0x4e62=function(_0x3eec42,_0x192ed2){_0x3eec42=_0x3eec42-0x0;var _0x110bf0=_0xe624[_0x3eec42];return _0x110bf0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4e62('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x4e62('0x1')](_0x4e62('0x2'),'second',_0x4e62('0x3')),'allowNull':![],'defaultValue':_0x4e62('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4131=['second','third','STRING','sequelize','exports','ENUM','first'];(function(_0x4cde95,_0x41819e){var _0x400bce=function(_0x5234ae){while(--_0x5234ae){_0x4cde95['push'](_0x4cde95['shift']());}};_0x400bce(++_0x41819e);}(_0x4131,0x9d));var _0x1413=function(_0x4e8401,_0x51b328){_0x4e8401=_0x4e8401-0x0;var _0x17269f=_0x4131[_0x4e8401];return _0x17269f;};'use strict';var Sequelize=require(_0x1413('0x0'));module[_0x1413('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x1413('0x2')](_0x1413('0x3'),_0x1413('0x4'),_0x1413('0x5')),'allowNull':![],'defaultValue':_0x1413('0x3')},'description':{'type':Sequelize[_0x1413('0x6')]}};
\ No newline at end of file
index 1165047..149efd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84cd=['jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','Content-Range','apply','reject','save','update','then','Dispositions','UserProfileResource','destroy','error','stack','name','index','Disposition','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','count','include','findAll','catch','show','params','includeAll','options','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','create','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x460696,_0x21b9df){var _0x41a233=function(_0x41bb1d){while(--_0x41bb1d){_0x460696['push'](_0x460696['shift']());}};_0x41a233(++_0x21b9df);}(_0x84cd,0x193));var _0xd84c=function(_0x56ef1a,_0x47bb44){_0x56ef1a=_0x56ef1a-0x0;var _0x88e4df=_0x84cd[_0x56ef1a];return _0x88e4df;};'use strict';var emlformat=require(_0xd84c('0x0'));var rimraf=require(_0xd84c('0x1'));var zipdir=require(_0xd84c('0x2'));var jsonpatch=require(_0xd84c('0x3'));var rp=require(_0xd84c('0x4'));var moment=require(_0xd84c('0x5'));var BPromise=require(_0xd84c('0x6'));var Mustache=require(_0xd84c('0x7'));var util=require(_0xd84c('0x8'));var path=require(_0xd84c('0x9'));var sox=require(_0xd84c('0xa'));var csv=require(_0xd84c('0xb'));var ejs=require(_0xd84c('0xc'));var fs=require('fs');var fs_extra=require(_0xd84c('0xd'));var _=require(_0xd84c('0xe'));var squel=require(_0xd84c('0xf'));var crypto=require(_0xd84c('0x10'));var jsforce=require(_0xd84c('0x11'));var deskjs=require('desk.js');var toCsv=require(_0xd84c('0xb'));var querystring=require('querystring');var Papa=require(_0xd84c('0x12'));var Redis=require(_0xd84c('0x13'));var authService=require(_0xd84c('0x14'));var qs=require(_0xd84c('0x15'));var as=require(_0xd84c('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd84c('0x17'))(_0xd84c('0x18'));var utils=require(_0xd84c('0x19'));var config=require(_0xd84c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xd84c('0x1b'))['db'];function respondWithStatusCode(_0x17b58f,_0x316e46){_0x316e46=_0x316e46||0xcc;return function(_0xe8800b){if(_0xe8800b){return _0x17b58f[_0xd84c('0x1c')](_0x316e46);}return _0x17b58f[_0xd84c('0x1d')](_0x316e46)[_0xd84c('0x1e')]();};}function respondWithResult(_0x54e874,_0x147e7b){_0x147e7b=_0x147e7b||0xc8;return function(_0x4f4c58){if(_0x4f4c58){return _0x54e874[_0xd84c('0x1d')](_0x147e7b)[_0xd84c('0x1f')](_0x4f4c58);}};}function respondWithFilteredResult(_0x61b292,_0x28006e){return function(_0x3de7ab){if(_0x3de7ab){var _0x14f102=typeof _0x28006e['offset']===_0xd84c('0x20')&&typeof _0x28006e[_0xd84c('0x21')]==='undefined';var _0x48b782=_0x3de7ab['count'];var _0xac75d1=_0x14f102?0x0:_0x28006e[_0xd84c('0x22')];var _0x2e2754=_0x14f102?_0x3de7ab['count']:_0x28006e[_0xd84c('0x22')]+_0x28006e[_0xd84c('0x21')];var _0x29c82c;if(_0x2e2754>=_0x48b782){_0x2e2754=_0x48b782;_0x29c82c=0xc8;}else{_0x29c82c=0xce;}_0x61b292[_0xd84c('0x1d')](_0x29c82c);return _0x61b292['set'](_0xd84c('0x23'),_0xac75d1+'-'+_0x2e2754+'/'+_0x48b782)[_0xd84c('0x1f')](_0x3de7ab);}return null;};}function patchUpdates(_0x9dcdff){return function(_0xa555bf){try{jsonpatch[_0xd84c('0x24')](_0xa555bf,_0x9dcdff,!![]);}catch(_0x407c5c){return BPromise[_0xd84c('0x25')](_0x407c5c);}return _0xa555bf[_0xd84c('0x26')]();};}function saveUpdates(_0x4a6fe9,_0x4bf7a5){return function(_0x580b32){if(_0x580b32){return _0x580b32[_0xd84c('0x27')](_0x4a6fe9)[_0xd84c('0x28')](function(_0x3e1c8e){return _0x3e1c8e;});}return null;};}function removeEntity(_0x911f49,_0x106cac){return function(_0x47627c){if(_0x47627c){return _0x47627c['destroy']()[_0xd84c('0x28')](function(){var _0x48c6b6=_0x47627c['get']({'plain':!![]});var _0x42d846=_0xd84c('0x29');return db[_0xd84c('0x2a')][_0xd84c('0x2b')]({'where':{'type':_0x42d846,'resourceId':_0x48c6b6['id']}})[_0xd84c('0x28')](function(){return _0x47627c;});})[_0xd84c('0x28')](function(){_0x911f49['status'](0xcc)[_0xd84c('0x1e')]();});}};}function handleEntityNotFound(_0x276254,_0x15ce0c){return function(_0x57aca9){if(!_0x57aca9){_0x276254[_0xd84c('0x1c')](0x194);}return _0x57aca9;};}function handleError(_0x5b93ea,_0xdbf845){_0xdbf845=_0xdbf845||0x1f4;return function(_0x5adf26){logger[_0xd84c('0x2c')](_0x5adf26[_0xd84c('0x2d')]);if(_0x5adf26[_0xd84c('0x2e')]){delete _0x5adf26[_0xd84c('0x2e')];}_0x5b93ea[_0xd84c('0x1d')](_0xdbf845)['send'](_0x5adf26);};}exports[_0xd84c('0x2f')]=function(_0x17e171,_0x3419d6){var _0x487c8c={},_0x13e707={},_0x281ab2={'count':0x0,'rows':[]};var _0x17b020=_['map'](db[_0xd84c('0x30')][_0xd84c('0x31')],function(_0x34fb20){return{'name':_0x34fb20['fieldName'],'type':_0x34fb20[_0xd84c('0x32')][_0xd84c('0x33')]};});_0x13e707[_0xd84c('0x34')]=_[_0xd84c('0x35')](_0x17b020,_0xd84c('0x2e'));_0x13e707[_0xd84c('0x36')]=_[_0xd84c('0x37')](_0x17e171[_0xd84c('0x36')]);_0x13e707[_0xd84c('0x38')]=_[_0xd84c('0x39')](_0x13e707['model'],_0x13e707['query']);_0x487c8c[_0xd84c('0x3a')]=_['intersection'](_0x13e707[_0xd84c('0x34')],qs[_0xd84c('0x3b')](_0x17e171[_0xd84c('0x36')][_0xd84c('0x3b')]));_0x487c8c['attributes']=_0x487c8c['attributes'][_0xd84c('0x3c')]?_0x487c8c[_0xd84c('0x3a')]:_0x13e707[_0xd84c('0x34')];if(!_0x17e171[_0xd84c('0x36')][_0xd84c('0x3d')](_0xd84c('0x3e'))){_0x487c8c[_0xd84c('0x21')]=qs['limit'](_0x17e171['query'][_0xd84c('0x21')]);_0x487c8c['offset']=qs['offset'](_0x17e171[_0xd84c('0x36')][_0xd84c('0x22')]);}_0x487c8c['order']=qs[_0xd84c('0x3f')](_0x17e171[_0xd84c('0x36')][_0xd84c('0x3f')]);_0x487c8c[_0xd84c('0x40')]=qs[_0xd84c('0x38')](_[_0xd84c('0x41')](_0x17e171[_0xd84c('0x36')],_0x13e707[_0xd84c('0x38')]),_0x17b020);if(_0x17e171[_0xd84c('0x36')][_0xd84c('0x42')]){_0x487c8c[_0xd84c('0x40')]=_['merge'](_0x487c8c[_0xd84c('0x40')],{'$or':_[_0xd84c('0x35')](_0x17b020,function(_0x4cf4ce){if(_0x4cf4ce[_0xd84c('0x32')]!=='VIRTUAL'){var _0x286533={};_0x286533[_0x4cf4ce[_0xd84c('0x2e')]]={'$like':'%'+_0x17e171[_0xd84c('0x36')][_0xd84c('0x42')]+'%'};return _0x286533;}})});}_0x487c8c=_[_0xd84c('0x43')]({},_0x487c8c,_0x17e171['options']);var _0x233cee={'where':_0x487c8c[_0xd84c('0x40')]};return db[_0xd84c('0x30')][_0xd84c('0x44')](_0x233cee)[_0xd84c('0x28')](function(_0x47a318){_0x281ab2[_0xd84c('0x44')]=_0x47a318;if(_0x17e171['query']['includeAll']){_0x487c8c[_0xd84c('0x45')]=[{'all':!![]}];}return db[_0xd84c('0x30')][_0xd84c('0x46')](_0x487c8c);})['then'](function(_0x4dd3f2){_0x281ab2['rows']=_0x4dd3f2;return _0x281ab2;})[_0xd84c('0x28')](respondWithFilteredResult(_0x3419d6,_0x487c8c))[_0xd84c('0x47')](handleError(_0x3419d6,null));};exports[_0xd84c('0x48')]=function(_0x39fd0a,_0x215029){var _0x4566cf={'raw':!![],'where':{'id':_0x39fd0a[_0xd84c('0x49')]['id']}},_0x2b94b8={};_0x2b94b8[_0xd84c('0x34')]=_[_0xd84c('0x37')](db[_0xd84c('0x30')][_0xd84c('0x31')]);_0x2b94b8[_0xd84c('0x36')]=_[_0xd84c('0x37')](_0x39fd0a[_0xd84c('0x36')]);_0x2b94b8[_0xd84c('0x38')]=_[_0xd84c('0x39')](_0x2b94b8['model'],_0x2b94b8[_0xd84c('0x36')]);_0x4566cf['attributes']=_[_0xd84c('0x39')](_0x2b94b8[_0xd84c('0x34')],qs[_0xd84c('0x3b')](_0x39fd0a[_0xd84c('0x36')]['fields']));_0x4566cf[_0xd84c('0x3a')]=_0x4566cf[_0xd84c('0x3a')][_0xd84c('0x3c')]?_0x4566cf[_0xd84c('0x3a')]:_0x2b94b8[_0xd84c('0x34')];if(_0x39fd0a[_0xd84c('0x36')][_0xd84c('0x4a')]){_0x4566cf[_0xd84c('0x45')]=[{'all':!![]}];}_0x4566cf=_[_0xd84c('0x43')]({},_0x4566cf,_0x39fd0a[_0xd84c('0x4b')]);return db['Disposition'][_0xd84c('0x4c')](_0x4566cf)[_0xd84c('0x28')](handleEntityNotFound(_0x215029,null))[_0xd84c('0x28')](respondWithResult(_0x215029,null))[_0xd84c('0x47')](handleError(_0x215029,null));};exports['create']=function(_0x3dca89,_0x1b178b){return db[_0xd84c('0x30')]['create'](_0x3dca89[_0xd84c('0x4d')],{})[_0xd84c('0x28')](function(_0x1b591d){var _0x3e35d9=_0x3dca89[_0xd84c('0x4e')][_0xd84c('0x4f')]({'plain':!![]});if(!_0x3e35d9)throw new Error(_0xd84c('0x50'));if(_0x3e35d9[_0xd84c('0x51')]==='user'){var _0x3ab13f=_0x1b591d[_0xd84c('0x4f')]({'plain':!![]});var _0x14cb78='Dispositions';return db['UserProfileSection'][_0xd84c('0x4c')]({'where':{'name':_0x14cb78,'userProfileId':_0x3e35d9['userProfileId']},'raw':!![]})[_0xd84c('0x28')](function(_0x486c3f){if(_0x486c3f&&_0x486c3f[_0xd84c('0x52')]===0x0){return db[_0xd84c('0x2a')][_0xd84c('0x53')]({'name':_0x3ab13f[_0xd84c('0x2e')],'resourceId':_0x3ab13f['id'],'type':_0x486c3f[_0xd84c('0x2e')],'sectionId':_0x486c3f['id']},{})[_0xd84c('0x28')](function(){return _0x1b591d;});}else{return _0x1b591d;}})[_0xd84c('0x47')](function(_0x3cff19){logger[_0xd84c('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3cff19);throw _0x3cff19;});}return _0x1b591d;})[_0xd84c('0x28')](respondWithResult(_0x1b178b,0xc9))[_0xd84c('0x47')](handleError(_0x1b178b,null));};exports[_0xd84c('0x27')]=function(_0xd15484,_0x4c4357){if(_0xd15484['body']['id']){delete _0xd15484['body']['id'];}return db[_0xd84c('0x30')][_0xd84c('0x4c')]({'where':{'id':_0xd15484['params']['id']}})['then'](handleEntityNotFound(_0x4c4357,null))[_0xd84c('0x28')](saveUpdates(_0xd15484[_0xd84c('0x4d')],null))['then'](respondWithResult(_0x4c4357,null))[_0xd84c('0x47')](handleError(_0x4c4357,null));};exports[_0xd84c('0x2b')]=function(_0x3ed29a,_0x89c0ec){return db[_0xd84c('0x30')][_0xd84c('0x4c')]({'where':{'id':_0x3ed29a[_0xd84c('0x49')]['id']}})[_0xd84c('0x28')](handleEntityNotFound(_0x89c0ec,null))[_0xd84c('0x28')](removeEntity(_0x89c0ec,null))[_0xd84c('0x47')](handleError(_0x89c0ec,null));};
\ No newline at end of file
+var _0x1db9=['get','Dispositions','error','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','show','params','includeAll','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then'];(function(_0x2d6e20,_0x5b359d){var _0xad62f8=function(_0x53ab3b){while(--_0x53ab3b){_0x2d6e20['push'](_0x2d6e20['shift']());}};_0xad62f8(++_0x5b359d);}(_0x1db9,0x176));var _0x91db=function(_0x3cd59c,_0xdaebe0){_0x3cd59c=_0x3cd59c-0x0;var _0x3e4b8c=_0x1db9[_0x3cd59c];return _0x3e4b8c;};'use strict';var emlformat=require(_0x91db('0x0'));var rimraf=require(_0x91db('0x1'));var zipdir=require(_0x91db('0x2'));var jsonpatch=require(_0x91db('0x3'));var rp=require(_0x91db('0x4'));var moment=require(_0x91db('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x91db('0x6'));var util=require(_0x91db('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x91db('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x91db('0x9'));var squel=require(_0x91db('0xa'));var crypto=require(_0x91db('0xb'));var jsforce=require(_0x91db('0xc'));var deskjs=require(_0x91db('0xd'));var toCsv=require('to-csv');var querystring=require(_0x91db('0xe'));var Papa=require('papaparse');var Redis=require(_0x91db('0xf'));var authService=require(_0x91db('0x10'));var qs=require(_0x91db('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x91db('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x91db('0x13'));var licenseUtil=require(_0x91db('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x540c48,_0x2b9b98){_0x2b9b98=_0x2b9b98||0xcc;return function(_0x329277){if(_0x329277){return _0x540c48[_0x91db('0x15')](_0x2b9b98);}return _0x540c48[_0x91db('0x16')](_0x2b9b98)[_0x91db('0x17')]();};}function respondWithResult(_0x4c3124,_0x371158){_0x371158=_0x371158||0xc8;return function(_0x285052){if(_0x285052){return _0x4c3124[_0x91db('0x16')](_0x371158)[_0x91db('0x18')](_0x285052);}};}function respondWithFilteredResult(_0x2df307,_0x33b39d){return function(_0x260b56){if(_0x260b56){var _0x143bc4=typeof _0x33b39d[_0x91db('0x19')]===_0x91db('0x1a')&&typeof _0x33b39d[_0x91db('0x1b')]===_0x91db('0x1a');var _0x5f5440=_0x260b56[_0x91db('0x1c')];var _0x23d125=_0x143bc4?0x0:_0x33b39d[_0x91db('0x19')];var _0x42e66c=_0x143bc4?_0x260b56[_0x91db('0x1c')]:_0x33b39d[_0x91db('0x19')]+_0x33b39d['limit'];var _0x4ae820;if(_0x42e66c>=_0x5f5440){_0x42e66c=_0x5f5440;_0x4ae820=0xc8;}else{_0x4ae820=0xce;}_0x2df307[_0x91db('0x16')](_0x4ae820);return _0x2df307[_0x91db('0x1d')](_0x91db('0x1e'),_0x23d125+'-'+_0x42e66c+'/'+_0x5f5440)[_0x91db('0x18')](_0x260b56);}return null;};}function patchUpdates(_0x50cf9c){return function(_0x168dea){try{jsonpatch[_0x91db('0x1f')](_0x168dea,_0x50cf9c,!![]);}catch(_0x6e3ca6){return BPromise[_0x91db('0x20')](_0x6e3ca6);}return _0x168dea[_0x91db('0x21')]();};}function saveUpdates(_0x31b96c,_0xaad1f6){return function(_0x8e323f){if(_0x8e323f){return _0x8e323f[_0x91db('0x22')](_0x31b96c)[_0x91db('0x23')](function(_0x554454){return _0x554454;});}return null;};}function removeEntity(_0x58774f,_0x134caa){return function(_0x2ac8d5){if(_0x2ac8d5){return _0x2ac8d5['destroy']()[_0x91db('0x23')](function(){var _0x16efa4=_0x2ac8d5[_0x91db('0x24')]({'plain':!![]});var _0x6e3a9c=_0x91db('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x6e3a9c,'resourceId':_0x16efa4['id']}})[_0x91db('0x23')](function(){return _0x2ac8d5;});})[_0x91db('0x23')](function(){_0x58774f[_0x91db('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b38f2,_0x3c31ea){return function(_0x46c0e8){if(!_0x46c0e8){_0x3b38f2[_0x91db('0x15')](0x194);}return _0x46c0e8;};}function handleError(_0x512c79,_0x1a64f0){_0x1a64f0=_0x1a64f0||0x1f4;return function(_0x2a00d1){logger[_0x91db('0x26')](_0x2a00d1['stack']);if(_0x2a00d1[_0x91db('0x27')]){delete _0x2a00d1[_0x91db('0x27')];}_0x512c79[_0x91db('0x16')](_0x1a64f0)[_0x91db('0x28')](_0x2a00d1);};}exports[_0x91db('0x29')]=function(_0x1e865e,_0x2e6a27){var _0x1b5a7b={},_0x330a9a={},_0x1b27f9={'count':0x0,'rows':[]};var _0x1946ae=_[_0x91db('0x2a')](db[_0x91db('0x2b')][_0x91db('0x2c')],function(_0x5a6d47){return{'name':_0x5a6d47[_0x91db('0x2d')],'type':_0x5a6d47[_0x91db('0x2e')][_0x91db('0x2f')]};});_0x330a9a[_0x91db('0x30')]=_[_0x91db('0x2a')](_0x1946ae,'name');_0x330a9a[_0x91db('0x31')]=_[_0x91db('0x32')](_0x1e865e[_0x91db('0x31')]);_0x330a9a['filters']=_[_0x91db('0x33')](_0x330a9a['model'],_0x330a9a[_0x91db('0x31')]);_0x1b5a7b[_0x91db('0x34')]=_[_0x91db('0x33')](_0x330a9a[_0x91db('0x30')],qs['fields'](_0x1e865e[_0x91db('0x31')][_0x91db('0x35')]));_0x1b5a7b[_0x91db('0x34')]=_0x1b5a7b['attributes'][_0x91db('0x36')]?_0x1b5a7b[_0x91db('0x34')]:_0x330a9a['model'];if(!_0x1e865e[_0x91db('0x31')][_0x91db('0x37')]('nolimit')){_0x1b5a7b[_0x91db('0x1b')]=qs['limit'](_0x1e865e[_0x91db('0x31')][_0x91db('0x1b')]);_0x1b5a7b['offset']=qs['offset'](_0x1e865e['query'][_0x91db('0x19')]);}_0x1b5a7b[_0x91db('0x38')]=qs['sort'](_0x1e865e[_0x91db('0x31')][_0x91db('0x39')]);_0x1b5a7b[_0x91db('0x3a')]=qs[_0x91db('0x3b')](_[_0x91db('0x3c')](_0x1e865e[_0x91db('0x31')],_0x330a9a[_0x91db('0x3b')]),_0x1946ae);if(_0x1e865e[_0x91db('0x31')][_0x91db('0x3d')]){_0x1b5a7b[_0x91db('0x3a')]=_[_0x91db('0x3e')](_0x1b5a7b['where'],{'$or':_[_0x91db('0x2a')](_0x1946ae,function(_0x50c414){if(_0x50c414[_0x91db('0x2e')]!==_0x91db('0x3f')){var _0x488471={};_0x488471[_0x50c414[_0x91db('0x27')]]={'$like':'%'+_0x1e865e[_0x91db('0x31')][_0x91db('0x3d')]+'%'};return _0x488471;}})});}_0x1b5a7b=_[_0x91db('0x3e')]({},_0x1b5a7b,_0x1e865e[_0x91db('0x40')]);var _0x50634d={'where':_0x1b5a7b[_0x91db('0x3a')]};return db[_0x91db('0x2b')][_0x91db('0x1c')](_0x50634d)['then'](function(_0x4733a4){_0x1b27f9[_0x91db('0x1c')]=_0x4733a4;if(_0x1e865e[_0x91db('0x31')]['includeAll']){_0x1b5a7b[_0x91db('0x41')]=[{'all':!![]}];}return db[_0x91db('0x2b')][_0x91db('0x42')](_0x1b5a7b);})[_0x91db('0x23')](function(_0x3609e1){_0x1b27f9['rows']=_0x3609e1;return _0x1b27f9;})[_0x91db('0x23')](respondWithFilteredResult(_0x2e6a27,_0x1b5a7b))['catch'](handleError(_0x2e6a27,null));};exports[_0x91db('0x43')]=function(_0x420bf6,_0x18ab19){var _0x3e07fc={'raw':!![],'where':{'id':_0x420bf6[_0x91db('0x44')]['id']}},_0x46c92a={};_0x46c92a[_0x91db('0x30')]=_[_0x91db('0x32')](db[_0x91db('0x2b')][_0x91db('0x2c')]);_0x46c92a[_0x91db('0x31')]=_['keys'](_0x420bf6['query']);_0x46c92a[_0x91db('0x3b')]=_[_0x91db('0x33')](_0x46c92a[_0x91db('0x30')],_0x46c92a['query']);_0x3e07fc[_0x91db('0x34')]=_[_0x91db('0x33')](_0x46c92a[_0x91db('0x30')],qs[_0x91db('0x35')](_0x420bf6[_0x91db('0x31')]['fields']));_0x3e07fc[_0x91db('0x34')]=_0x3e07fc['attributes'][_0x91db('0x36')]?_0x3e07fc[_0x91db('0x34')]:_0x46c92a[_0x91db('0x30')];if(_0x420bf6[_0x91db('0x31')][_0x91db('0x45')]){_0x3e07fc[_0x91db('0x41')]=[{'all':!![]}];}_0x3e07fc=_[_0x91db('0x3e')]({},_0x3e07fc,_0x420bf6[_0x91db('0x40')]);return db[_0x91db('0x2b')]['find'](_0x3e07fc)['then'](handleEntityNotFound(_0x18ab19,null))[_0x91db('0x23')](respondWithResult(_0x18ab19,null))[_0x91db('0x46')](handleError(_0x18ab19,null));};exports[_0x91db('0x47')]=function(_0x410423,_0x27e224){return db['Disposition'][_0x91db('0x47')](_0x410423[_0x91db('0x48')],{})[_0x91db('0x23')](function(_0x2dbd11){var _0x404900=_0x410423['user'][_0x91db('0x24')]({'plain':!![]});if(!_0x404900)throw new Error(_0x91db('0x49'));if(_0x404900[_0x91db('0x4a')]===_0x91db('0x4b')){var _0x50b269=_0x2dbd11[_0x91db('0x24')]({'plain':!![]});var _0x59003f='Dispositions';return db[_0x91db('0x4c')]['find']({'where':{'name':_0x59003f,'userProfileId':_0x404900[_0x91db('0x4d')]},'raw':!![]})['then'](function(_0x54c327){if(_0x54c327&&_0x54c327[_0x91db('0x4e')]===0x0){return db[_0x91db('0x4f')][_0x91db('0x47')]({'name':_0x50b269['name'],'resourceId':_0x50b269['id'],'type':_0x54c327[_0x91db('0x27')],'sectionId':_0x54c327['id']},{})[_0x91db('0x23')](function(){return _0x2dbd11;});}else{return _0x2dbd11;}})[_0x91db('0x46')](function(_0x53069d){logger['error'](_0x91db('0x50'),_0x53069d);throw _0x53069d;});}return _0x2dbd11;})[_0x91db('0x23')](respondWithResult(_0x27e224,0xc9))['catch'](handleError(_0x27e224,null));};exports[_0x91db('0x22')]=function(_0x4df392,_0x373216){if(_0x4df392[_0x91db('0x48')]['id']){delete _0x4df392[_0x91db('0x48')]['id'];}return db[_0x91db('0x2b')]['find']({'where':{'id':_0x4df392[_0x91db('0x44')]['id']}})[_0x91db('0x23')](handleEntityNotFound(_0x373216,null))[_0x91db('0x23')](saveUpdates(_0x4df392[_0x91db('0x48')],null))[_0x91db('0x23')](respondWithResult(_0x373216,null))[_0x91db('0x46')](handleError(_0x373216,null));};exports[_0x91db('0x51')]=function(_0x20d41b,_0x2e0581){return db[_0x91db('0x2b')]['find']({'where':{'id':_0x20d41b[_0x91db('0x44')]['id']}})[_0x91db('0x23')](handleEntityNotFound(_0x2e0581,null))[_0x91db('0x23')](removeEntity(_0x2e0581,null))[_0x91db('0x46')](handleError(_0x2e0581,null));};
\ No newline at end of file
index c1bd45a..179ab43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11cb=['name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','define','Disposition','tools_dispositions','name','ListId','name_chat','name_mail','MailAccountId'];(function(_0x4cc579,_0x18a743){var _0x495123=function(_0xf88889){while(--_0xf88889){_0x4cc579['push'](_0x4cc579['shift']());}};_0x495123(++_0x18a743);}(_0x11cb,0x1d4));var _0xb11c=function(_0x4bf8b8,_0x427f75){_0x4bf8b8=_0x4bf8b8-0x0;var _0x293646=_0x11cb[_0x4bf8b8];return _0x293646;};'use strict';var _=require('lodash');var util=require(_0xb11c('0x0'));var logger=require(_0xb11c('0x1'))(_0xb11c('0x2'));var moment=require(_0xb11c('0x3'));var BPromise=require('bluebird');var rp=require(_0xb11c('0x4'));var fs=require('fs');var path=require(_0xb11c('0x5'));var rimraf=require('rimraf');var config=require(_0xb11c('0x6'));var attributes=require('./disposition.attributes');module[_0xb11c('0x7')]=function(_0x321083,_0x1323c9){return _0x321083[_0xb11c('0x8')](_0xb11c('0x9'),attributes,{'tableName':_0xb11c('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xb11c('0xb'),_0xb11c('0xc')]},{'unique':!![],'name':_0xb11c('0xd'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xb11c('0xe'),'fields':[_0xb11c('0xb'),_0xb11c('0xf')]},{'unique':!![],'name':_0xb11c('0x10'),'fields':[_0xb11c('0xb'),'SmsAccountId']},{'unique':!![],'name':_0xb11c('0x11'),'fields':[_0xb11c('0xb'),_0xb11c('0x12')]},{'unique':!![],'name':_0xb11c('0x13'),'fields':['name',_0xb11c('0x14')]},{'unique':!![],'name':_0xb11c('0x15'),'fields':[_0xb11c('0xb'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe22f=['name_fax','FaxAccountId','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','exports','Disposition','tools_dispositions','name_voice','ListId','name_chat','name_mail','name','name_sms','SmsAccountId'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xe22f,0x109));var _0xfe22=function(_0x3efa84,_0x35c227){_0x3efa84=_0x3efa84-0x0;var _0x2e7e4f=_0xe22f[_0x3efa84];return _0x2e7e4f;};'use strict';var _=require(_0xfe22('0x0'));var util=require(_0xfe22('0x1'));var logger=require(_0xfe22('0x2'))(_0xfe22('0x3'));var moment=require(_0xfe22('0x4'));var BPromise=require(_0xfe22('0x5'));var rp=require(_0xfe22('0x6'));var fs=require('fs');var path=require(_0xfe22('0x7'));var rimraf=require(_0xfe22('0x8'));var config=require(_0xfe22('0x9'));var attributes=require(_0xfe22('0xa'));module[_0xfe22('0xb')]=function(_0xe11912,_0x41a414){return _0xe11912['define'](_0xfe22('0xc'),attributes,{'tableName':_0xfe22('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xfe22('0xe'),'fields':['name',_0xfe22('0xf')]},{'unique':!![],'name':_0xfe22('0x10'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xfe22('0x11'),'fields':[_0xfe22('0x12'),'MailAccountId']},{'unique':!![],'name':_0xfe22('0x13'),'fields':[_0xfe22('0x12'),_0xfe22('0x14')]},{'unique':!![],'name':_0xfe22('0x15'),'fields':['name',_0xfe22('0x16')]},{'unique':!![],'name':'name_openchannel','fields':[_0xfe22('0x12'),_0xfe22('0x17')]},{'unique':!![],'name':_0xfe22('0x18'),'fields':[_0xfe22('0x12'),_0xfe22('0x19')]}],'timestamps':!![]});};
\ No newline at end of file
index 0fbff56..823c205 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(_0x56445a,_0x5965f2){var _0x5423b4=function(_0x5d447a){while(--_0x5d447a){_0x56445a['push'](_0x56445a['shift']());}};_0x5423b4(++_0x5965f2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ 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(_0x210118,_0x49f367){var _0x16b5e1=function(_0x46ed2d){while(--_0x46ed2d){_0x210118['push'](_0x210118['shift']());}};_0x16b5e1(++_0x49f367);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 05d6a3d..498b36f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a9=['post','create','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show'];(function(_0x302339,_0x315424){var _0x1b25a5=function(_0x18ae76){while(--_0x18ae76){_0x302339['push'](_0x302339['shift']());}};_0x1b25a5(++_0x315424);}(_0x47a9,0x190));var _0x947a=function(_0x3841a1,_0x2ee1cb){_0x3841a1=_0x3841a1-0x0;var _0x50ab75=_0x47a9[_0x3841a1];return _0x50ab75;};'use strict';var multer=require(_0x947a('0x0'));var util=require(_0x947a('0x1'));var path=require(_0x947a('0x2'));var timeout=require(_0x947a('0x3'));var express=require(_0x947a('0x4'));var router=express[_0x947a('0x5')]();var fs_extra=require(_0x947a('0x6'));var auth=require(_0x947a('0x7'));var interaction=require(_0x947a('0x8'));var config=require(_0x947a('0x9'));var controller=require('./disposition.controller');router[_0x947a('0xa')]('/',auth[_0x947a('0xb')](),controller['index']);router[_0x947a('0xa')](_0x947a('0xc'),auth[_0x947a('0xb')](),controller[_0x947a('0xd')]);router[_0x947a('0xe')]('/',auth[_0x947a('0xb')](),controller[_0x947a('0xf')]);router['put'](_0x947a('0xc'),auth['isAuthenticated'](),controller[_0x947a('0x10')]);router['delete'](_0x947a('0xc'),auth[_0x947a('0xb')](),controller[_0x947a('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x273d=['exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','post','put','/:id','delete','destroy'];(function(_0x2c753c,_0x3378e7){var _0x23ba20=function(_0xac82d){while(--_0xac82d){_0x2c753c['push'](_0x2c753c['shift']());}};_0x23ba20(++_0x3378e7);}(_0x273d,0x6d));var _0xd273=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x273d[_0x47b58b];return _0x46bebe;};'use strict';var multer=require('multer');var util=require(_0xd273('0x0'));var path=require(_0xd273('0x1'));var timeout=require(_0xd273('0x2'));var express=require('express');var router=express[_0xd273('0x3')]();var fs_extra=require(_0xd273('0x4'));var auth=require(_0xd273('0x5'));var interaction=require(_0xd273('0x6'));var config=require(_0xd273('0x7'));var controller=require(_0xd273('0x8'));router[_0xd273('0x9')]('/',auth[_0xd273('0xa')](),controller[_0xd273('0xb')]);router[_0xd273('0x9')]('/:id',auth[_0xd273('0xa')](),controller['show']);router[_0xd273('0xc')]('/',auth[_0xd273('0xa')](),controller['create']);router[_0xd273('0xd')](_0xd273('0xe'),auth['isAuthenticated'](),controller['update']);router[_0xd273('0xf')](_0xd273('0xe'),auth['isAuthenticated'](),controller[_0xd273('0x10')]);module[_0xd273('0x11')]=router;
\ No newline at end of file
index 36e7241..e4a12eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x960b=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','9600','12000','7200','14400','v17,v27,v29','SIP','IAX','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x960b,0x1a4));var _0xb960=function(_0x1e6018,_0x3cff20){_0x1e6018=_0x1e6018-0x0;var _0x1b42b8=_0x960b[_0x1e6018];return _0x1b42b8;};'use strict';var Sequelize=require(_0xb960('0x0'));module[_0xb960('0x1')]={'name':{'type':Sequelize[_0xb960('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb960('0x2')]},'ecm':{'type':Sequelize[_0xb960('0x3')](_0xb960('0x4'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xb960('0x2')],'defaultValue':_0xb960('0x5')},'localstationid':{'type':Sequelize[_0xb960('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xb960('0x3')](_0xb960('0x6'),_0xb960('0x7'),'7200',_0xb960('0x8'),_0xb960('0x9'),'14400'),'defaultValue':_0xb960('0x7')},'maxrate':{'type':Sequelize[_0xb960('0x3')](_0xb960('0x6'),_0xb960('0x7'),_0xb960('0xa'),_0xb960('0x8'),_0xb960('0x9'),_0xb960('0xb')),'defaultValue':_0xb960('0xb')},'modem':{'type':Sequelize[_0xb960('0x2')],'defaultValue':_0xb960('0xc')},'gateway':{'type':Sequelize[_0xb960('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xb960('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xb960('0x3')](_0xb960('0xd'),_0xb960('0xe'),'DADHI',_0xb960('0xf')),'defaultValue':_0xb960('0xd')},'key':{'type':Sequelize[_0xb960('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xb960('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb960('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb960('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb960('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb960('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb960('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0xb960('0x13')},'mandatoryDisposition':{'type':Sequelize[_0xb960('0x11')],'defaultValue':![],'comment':_0xb960('0x14'),'set':function(_0x57fdfe){if(!_0x57fdfe)this[_0xb960('0x15')]('mandatoryDispositionPauseId',null);this[_0xb960('0x15')](_0xb960('0x16'),_0x57fdfe);}}};
\ No newline at end of file
+var _0x9ef1=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','9600','12000','14400','4800','7200','v17,v27,v29','SIP','IAX','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x51f012,_0x629f0d){var _0x1e3e8f=function(_0x5f4175){while(--_0x5f4175){_0x51f012['push'](_0x51f012['shift']());}};_0x1e3e8f(++_0x629f0d);}(_0x9ef1,0x1b4));var _0x19ef=function(_0x104a9b,_0x136a69){_0x104a9b=_0x104a9b-0x0;var _0x38f959=_0x9ef1[_0x104a9b];return _0x38f959;};'use strict';var Sequelize=require(_0x19ef('0x0'));module[_0x19ef('0x1')]={'name':{'type':Sequelize[_0x19ef('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x19ef('0x2')]},'ecm':{'type':Sequelize[_0x19ef('0x3')](_0x19ef('0x4'),'no'),'defaultValue':_0x19ef('0x4')},'headerinfo':{'type':Sequelize[_0x19ef('0x2')],'defaultValue':_0x19ef('0x5')},'localstationid':{'type':Sequelize[_0x19ef('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize['ENUM'](_0x19ef('0x6'),'4800','7200',_0x19ef('0x7'),_0x19ef('0x8'),_0x19ef('0x9')),'defaultValue':_0x19ef('0xa')},'maxrate':{'type':Sequelize[_0x19ef('0x3')](_0x19ef('0x6'),_0x19ef('0xa'),_0x19ef('0xb'),_0x19ef('0x7'),_0x19ef('0x8'),_0x19ef('0x9')),'defaultValue':_0x19ef('0x9')},'modem':{'type':Sequelize[_0x19ef('0x2')],'defaultValue':_0x19ef('0xc')},'gateway':{'type':Sequelize[_0x19ef('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x19ef('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x19ef('0x3')](_0x19ef('0xd'),_0x19ef('0xe'),'DADHI',_0x19ef('0xf')),'defaultValue':_0x19ef('0xd')},'key':{'type':Sequelize[_0x19ef('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x19ef('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x19ef('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x19ef('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x19ef('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x19ef('0x11')],'allowNull':!![],'defaultValue':null,'comment':_0x19ef('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x19ef('0x12')],'defaultValue':![],'comment':_0x19ef('0x14'),'set':function(_0x3c93e0){if(!_0x3c93e0)this[_0x19ef('0x15')](_0x19ef('0x16'),null);this['setDataValue'](_0x19ef('0x17'),_0x3c93e0);}}};
\ No newline at end of file
index 22f267d..3af3729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf50=['keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','Disposition','findOne','FaxAccountId','ids','addAnswer','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','CmContact','User','Owner','fullname','internal','Tags','tag','addApplications','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','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','VoiceExtension','updateAccountApplications','sequelize','tech','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','CmList','List','Contacts','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','defaults','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','FaxAccounts','UserProfileResource','destroy','stack','name','Pause','FaxAccount','rawAttributes','type','key','query'];(function(_0x8ba19a,_0x1d2b2b){var _0x2bd8b4=function(_0xee823f){while(--_0xee823f){_0x8ba19a['push'](_0x8ba19a['shift']());}};_0x2bd8b4(++_0x1d2b2b);}(_0xaf50,0x1f0));var _0x0af5=function(_0x194ef7,_0x348197){_0x194ef7=_0x194ef7-0x0;var _0x4a749d=_0xaf50[_0x194ef7];return _0x4a749d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0af5('0x0'));var zipdir=require(_0x0af5('0x1'));var jsonpatch=require(_0x0af5('0x2'));var rp=require(_0x0af5('0x3'));var moment=require(_0x0af5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x0af5('0x5'));var sox=require(_0x0af5('0x6'));var csv=require(_0x0af5('0x7'));var ejs=require(_0x0af5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0af5('0x9'));var squel=require(_0x0af5('0xa'));var crypto=require(_0x0af5('0xb'));var jsforce=require(_0x0af5('0xc'));var deskjs=require(_0x0af5('0xd'));var toCsv=require(_0x0af5('0x7'));var querystring=require(_0x0af5('0xe'));var Papa=require('papaparse');var Redis=require(_0x0af5('0xf'));var authService=require(_0x0af5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x0af5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0af5('0x12'))(_0x0af5('0x13'));var utils=require('../../config/utils');var config=require(_0x0af5('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x0af5('0x15'))['db'];config[_0x0af5('0x16')]=_['defaults'](config['redis'],{'host':_0x0af5('0x17'),'port':0x18eb});var socket=require(_0x0af5('0x18'))(new Redis(config[_0x0af5('0x16')]));require(_0x0af5('0x19'))[_0x0af5('0x1a')](socket);var jayson=require(_0x0af5('0x1b'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0af5('0x1c')][_0x0af5('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4024ee,_0x3bab8d,_0xca4c,_0xed3328){return new BPromise(function(_0x55be5b,_0x2f1868){var _0xc417a1=_0xed3328||client;return _0xc417a1[_0x0af5('0x1e')](_0x4024ee,_0xca4c)[_0x0af5('0x1f')](function(_0x2e930c){logger[_0x0af5('0x20')](_0x0af5('0x21'),_0x3bab8d,_0x0af5('0x22'));logger[_0x0af5('0x23')](_0x0af5('0x24'),_0x3bab8d,_0x0af5('0x22'),JSON[_0x0af5('0x25')](_0x2e930c));if(_0x2e930c[_0x0af5('0x26')]){if(_0x2e930c[_0x0af5('0x26')][_0x0af5('0x27')]===0x1f4){logger['error'](_0x0af5('0x21'),_0x3bab8d,_0x2e930c[_0x0af5('0x26')]['message']);return _0x2f1868(_0x2e930c[_0x0af5('0x26')]['message']);}logger[_0x0af5('0x26')](_0x0af5('0x21'),_0x3bab8d,_0x2e930c[_0x0af5('0x26')][_0x0af5('0x28')]);return _0x55be5b(_0x2e930c[_0x0af5('0x26')][_0x0af5('0x28')]);}else{logger[_0x0af5('0x20')]('FaxAccount,\x20%s,\x20%s',_0x3bab8d,_0x0af5('0x22'));_0x55be5b(_0x2e930c[_0x0af5('0x29')][_0x0af5('0x28')]);}})[_0x0af5('0x2a')](function(_0x441037){logger[_0x0af5('0x26')](_0x0af5('0x21'),_0x3bab8d,_0x441037);_0x2f1868(_0x441037);});});}function respondWithStatusCode(_0x35c1a0,_0x156048){_0x156048=_0x156048||0xcc;return function(_0x32d4b3){if(_0x32d4b3){return _0x35c1a0[_0x0af5('0x2b')](_0x156048);}return _0x35c1a0[_0x0af5('0x2c')](_0x156048)[_0x0af5('0x2d')]();};}function respondWithResult(_0x40562b,_0x213ff2){_0x213ff2=_0x213ff2||0xc8;return function(_0xb60803){if(_0xb60803){return _0x40562b['status'](_0x213ff2)[_0x0af5('0x2e')](_0xb60803);}};}function respondWithFilteredResult(_0x75040f,_0x2989aa){return function(_0x94a2c8){if(_0x94a2c8){var _0x2a2c99=typeof _0x2989aa['offset']===_0x0af5('0x2f')&&typeof _0x2989aa[_0x0af5('0x30')]===_0x0af5('0x2f');var _0x289797=_0x94a2c8[_0x0af5('0x31')];var _0x4409ae=_0x2a2c99?0x0:_0x2989aa[_0x0af5('0x32')];var _0x4ab353=_0x2a2c99?_0x94a2c8[_0x0af5('0x31')]:_0x2989aa[_0x0af5('0x32')]+_0x2989aa[_0x0af5('0x30')];var _0x47dfde;if(_0x4ab353>=_0x289797){_0x4ab353=_0x289797;_0x47dfde=0xc8;}else{_0x47dfde=0xce;}_0x75040f['status'](_0x47dfde);return _0x75040f[_0x0af5('0x33')](_0x0af5('0x34'),_0x4409ae+'-'+_0x4ab353+'/'+_0x289797)['json'](_0x94a2c8);}return null;};}function patchUpdates(_0x5ba397){return function(_0x53c4e9){try{jsonpatch[_0x0af5('0x35')](_0x53c4e9,_0x5ba397,!![]);}catch(_0x12eabb){return BPromise[_0x0af5('0x36')](_0x12eabb);}return _0x53c4e9[_0x0af5('0x37')]();};}function saveUpdates(_0x290a41,_0x335b08){return function(_0xd1315b){if(_0xd1315b){return _0xd1315b[_0x0af5('0x38')](_0x290a41)[_0x0af5('0x1f')](function(_0x5bd611){return _0x5bd611;});}return null;};}function removeEntity(_0x4346bb,_0x22e013){return function(_0x531460){if(_0x531460){return _0x531460['destroy']()[_0x0af5('0x1f')](function(){var _0x385fd2=_0x531460['get']({'plain':!![]});var _0x109a6e=_0x0af5('0x39');return db[_0x0af5('0x3a')][_0x0af5('0x3b')]({'where':{'type':_0x109a6e,'resourceId':_0x385fd2['id']}})[_0x0af5('0x1f')](function(){return _0x531460;});})[_0x0af5('0x1f')](function(){_0x4346bb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x405cb2,_0x2d69fb){return function(_0x58577d){if(!_0x58577d){_0x405cb2[_0x0af5('0x2b')](0x194);}return _0x58577d;};}function handleError(_0x2e179f,_0x25ed1b){_0x25ed1b=_0x25ed1b||0x1f4;return function(_0x4a2c61){logger[_0x0af5('0x26')](_0x4a2c61[_0x0af5('0x3c')]);if(_0x4a2c61[_0x0af5('0x3d')]){delete _0x4a2c61[_0x0af5('0x3d')];}_0x2e179f['status'](_0x25ed1b)['send'](_0x4a2c61);};}exports['index']=function(_0x5deb16,_0x36552e){var _0x17ee78={'include':[{'model':db[_0x0af5('0x3e')],'as':'mandatoryDispositionPause'}]},_0x2fae87={},_0x1d0aca={'count':0x0,'rows':[]};var _0x4e3f30=_['map'](db[_0x0af5('0x3f')][_0x0af5('0x40')],function(_0x137ce3){return{'name':_0x137ce3['fieldName'],'type':_0x137ce3[_0x0af5('0x41')][_0x0af5('0x42')]};});_0x2fae87['model']=_['map'](_0x4e3f30,_0x0af5('0x3d'));_0x2fae87[_0x0af5('0x43')]=_[_0x0af5('0x44')](_0x5deb16[_0x0af5('0x43')]);_0x2fae87[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x2fae87[_0x0af5('0x47')],_0x2fae87['query']);_0x17ee78[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x2fae87[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x5deb16[_0x0af5('0x43')][_0x0af5('0x49')]));_0x17ee78[_0x0af5('0x48')]=_0x17ee78[_0x0af5('0x48')][_0x0af5('0x4a')]?_0x17ee78[_0x0af5('0x48')]:_0x2fae87[_0x0af5('0x47')];if(!_0x5deb16[_0x0af5('0x43')][_0x0af5('0x4b')](_0x0af5('0x4c'))){_0x17ee78['limit']=qs['limit'](_0x5deb16[_0x0af5('0x43')][_0x0af5('0x30')]);_0x17ee78[_0x0af5('0x32')]=qs[_0x0af5('0x32')](_0x5deb16[_0x0af5('0x43')][_0x0af5('0x32')]);}_0x17ee78[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x5deb16['query'][_0x0af5('0x4e')]);_0x17ee78[_0x0af5('0x4f')]=qs['filters'](_[_0x0af5('0x50')](_0x5deb16[_0x0af5('0x43')],_0x2fae87['filters']),_0x4e3f30);if(_0x5deb16[_0x0af5('0x43')][_0x0af5('0x51')]){_0x17ee78[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x17ee78[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x4e3f30,function(_0x5ad2f4){if(_0x5ad2f4[_0x0af5('0x41')]!==_0x0af5('0x54')){var _0x1e6717={};_0x1e6717[_0x5ad2f4[_0x0af5('0x3d')]]={'$like':'%'+_0x5deb16[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x1e6717;}})});}_0x17ee78=_[_0x0af5('0x52')]({},_0x17ee78,_0x5deb16[_0x0af5('0x55')]);var _0x81d9e={'where':_0x17ee78['where']};return db[_0x0af5('0x3f')][_0x0af5('0x31')](_0x81d9e)['then'](function(_0x5c3787){_0x1d0aca['count']=_0x5c3787;if(_0x5deb16[_0x0af5('0x43')][_0x0af5('0x56')]){_0x17ee78[_0x0af5('0x57')]=[{'all':!![]}];}return db[_0x0af5('0x3f')][_0x0af5('0x58')](_0x17ee78);})[_0x0af5('0x1f')](function(_0x24f6b5){_0x1d0aca[_0x0af5('0x59')]=_0x24f6b5;return _0x1d0aca;})[_0x0af5('0x1f')](respondWithFilteredResult(_0x36552e,_0x17ee78))[_0x0af5('0x2a')](handleError(_0x36552e,null));};exports[_0x0af5('0x5a')]=function(_0x2a505b,_0x2c6703){var _0x342564={'raw':![],'where':{'id':_0x2a505b[_0x0af5('0x5b')]['id']},'include':[{'model':db[_0x0af5('0x3e')],'as':_0x0af5('0x5c')}]},_0x5b3828={};_0x5b3828[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x3f')][_0x0af5('0x40')]);_0x5b3828['query']=_[_0x0af5('0x44')](_0x2a505b[_0x0af5('0x43')]);_0x5b3828[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x5b3828[_0x0af5('0x47')],_0x5b3828[_0x0af5('0x43')]);_0x342564[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x5b3828[_0x0af5('0x47')],qs['fields'](_0x2a505b[_0x0af5('0x43')][_0x0af5('0x49')]));_0x342564['attributes']=_0x342564[_0x0af5('0x48')][_0x0af5('0x4a')]?_0x342564['attributes']:_0x5b3828[_0x0af5('0x47')];if(_0x2a505b[_0x0af5('0x43')]['includeAll']){_0x342564[_0x0af5('0x57')]=[{'all':!![]}];}_0x342564=_['merge']({},_0x342564,_0x2a505b[_0x0af5('0x55')]);return db[_0x0af5('0x3f')]['find'](_0x342564)[_0x0af5('0x1f')](handleEntityNotFound(_0x2c6703,null))['then'](respondWithResult(_0x2c6703,null))[_0x0af5('0x2a')](handleError(_0x2c6703,null));};exports[_0x0af5('0x5d')]=function(_0x5438c3,_0x277927){return db[_0x0af5('0x3f')][_0x0af5('0x5d')](_0x5438c3[_0x0af5('0x5e')],{})[_0x0af5('0x1f')](function(_0x35ae9c){var _0x319766=_0x5438c3[_0x0af5('0x5f')][_0x0af5('0x60')]({'plain':!![]});if(!_0x319766)throw new Error(_0x0af5('0x61'));if(_0x319766[_0x0af5('0x62')]===_0x0af5('0x5f')){var _0x1e1512=_0x35ae9c[_0x0af5('0x60')]({'plain':!![]});var _0x12e26c=_0x0af5('0x39');return db[_0x0af5('0x63')][_0x0af5('0x64')]({'where':{'name':_0x12e26c,'userProfileId':_0x319766['userProfileId']},'raw':!![]})[_0x0af5('0x1f')](function(_0x33e7f2){if(_0x33e7f2&&_0x33e7f2[_0x0af5('0x65')]===0x0){return db[_0x0af5('0x3a')][_0x0af5('0x5d')]({'name':_0x1e1512[_0x0af5('0x3d')],'resourceId':_0x1e1512['id'],'type':_0x33e7f2[_0x0af5('0x3d')],'sectionId':_0x33e7f2['id']},{})[_0x0af5('0x1f')](function(){return _0x35ae9c;});}else{return _0x35ae9c;}})[_0x0af5('0x2a')](function(_0x289035){logger['error'](_0x0af5('0x66'),_0x289035);throw _0x289035;});}return _0x35ae9c;})['then'](respondWithResult(_0x277927,0xc9))[_0x0af5('0x2a')](handleError(_0x277927,null));};exports['update']=function(_0x29ade9,_0x4271db){if(_0x29ade9[_0x0af5('0x5e')]['id']){delete _0x29ade9[_0x0af5('0x5e')]['id'];}return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x29ade9[_0x0af5('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x0af5('0x5c')}]})[_0x0af5('0x1f')](handleEntityNotFound(_0x4271db,null))[_0x0af5('0x1f')](saveUpdates(_0x29ade9[_0x0af5('0x5e')],null))[_0x0af5('0x1f')](respondWithResult(_0x4271db,null))[_0x0af5('0x2a')](handleError(_0x4271db,null));};exports['destroy']=function(_0x58f826,_0x92df0f){return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x58f826[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x92df0f,null))['then'](removeEntity(_0x92df0f,null))[_0x0af5('0x2a')](handleError(_0x92df0f,null));};exports[_0x0af5('0x67')]=function(_0x59f97e,_0x60db0c){return db[_0x0af5('0x3f')][_0x0af5('0x67')]()['then'](respondWithResult(_0x60db0c,null))[_0x0af5('0x2a')](handleError(_0x60db0c,null));};exports['addDisposition']=function(_0x150cb6,_0x163ef7,_0x55ecfb){if(_0x150cb6[_0x0af5('0x5e')]['id']){delete _0x150cb6[_0x0af5('0x5e')]['id'];}return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x150cb6[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x163ef7,null))[_0x0af5('0x1f')](function(_0x3ad049){if(_0x3ad049){_0x150cb6[_0x0af5('0x5e')]['FaxAccountId']=_0x3ad049['id'];return db[_0x0af5('0x68')][_0x0af5('0x5d')](_0x150cb6['body']);}})[_0x0af5('0x1f')](respondWithResult(_0x163ef7,null))[_0x0af5('0x2a')](handleError(_0x163ef7,null));};exports['getDispositions']=function(_0x13a3d5,_0x33f832,_0x4514f0){var _0x41da7e={'raw':![],'where':{}};var _0x55d3a3={};var _0x11ac83={'count':0x0,'rows':[]};return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x13a3d5['params']['id']}})['then'](handleEntityNotFound(_0x33f832,null))[_0x0af5('0x1f')](function(_0x466da6){if(_0x466da6){_0x55d3a3[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x68')]['rawAttributes']);_0x55d3a3['query']=_['keys'](_0x13a3d5[_0x0af5('0x43')]);_0x55d3a3[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x55d3a3['model'],_0x55d3a3[_0x0af5('0x43')]);_0x41da7e[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x55d3a3['model'],qs['fields'](_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x49')]));_0x41da7e[_0x0af5('0x48')]=_0x41da7e[_0x0af5('0x48')]['length']?_0x41da7e[_0x0af5('0x48')]:_0x55d3a3['model'];if(!_0x13a3d5[_0x0af5('0x43')]['hasOwnProperty'](_0x0af5('0x4c'))){_0x41da7e[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x30')]);_0x41da7e[_0x0af5('0x32')]=qs[_0x0af5('0x32')](_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x32')]);}_0x41da7e['order']=qs['sort'](_0x13a3d5[_0x0af5('0x43')]['sort']);_0x41da7e[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_[_0x0af5('0x50')](_0x13a3d5[_0x0af5('0x43')],_0x55d3a3[_0x0af5('0x45')]));_0x41da7e[_0x0af5('0x4f')][_0x0af5('0x6a')]=_0x466da6['id'];if(_0x13a3d5['query']['filter']){_0x41da7e[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x41da7e[_0x0af5('0x4f')],{'$or':_['map'](_0x41da7e[_0x0af5('0x48')],function(_0x5d6161){var _0xc4fcb6={};_0xc4fcb6[_0x5d6161]={'$like':'%'+_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0xc4fcb6;})});}_0x41da7e=_[_0x0af5('0x52')]({},_0x41da7e,_0x13a3d5[_0x0af5('0x55')]);return db[_0x0af5('0x68')]['count']({'where':_0x41da7e[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x4d3e8e){_0x11ac83['count']=_0x4d3e8e;if(_0x13a3d5['query']['includeAll']){_0x41da7e[_0x0af5('0x57')]=[{'all':!![]}];}return db[_0x0af5('0x68')]['findAll'](_0x41da7e);})[_0x0af5('0x1f')](function(_0x4dbc55){_0x11ac83[_0x0af5('0x59')]=_0x4dbc55;return _0x11ac83;});}})[_0x0af5('0x1f')](respondWithFilteredResult(_0x33f832,_0x41da7e))[_0x0af5('0x2a')](handleError(_0x33f832,null));};exports['removeDispositions']=function(_0x327959,_0x4ce10c,_0x4fe462){return db['FaxAccount']['find']({'where':{'id':_0x327959[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x4ce10c,null))['then'](function(_0x2da046){if(_0x2da046){return _0x2da046['removeDispositions'](_0x327959[_0x0af5('0x43')][_0x0af5('0x6b')]);}})[_0x0af5('0x1f')](respondWithStatusCode(_0x4ce10c,null))[_0x0af5('0x2a')](handleError(_0x4ce10c,null));};exports[_0x0af5('0x6c')]=function(_0x1eb771,_0x5bc981,_0x42a6bf){if(_0x1eb771['body']['id']){delete _0x1eb771[_0x0af5('0x5e')]['id'];}return db[_0x0af5('0x3f')]['find']({'where':{'id':_0x1eb771[_0x0af5('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5bc981,null))[_0x0af5('0x1f')](function(_0x58b8f3){if(_0x58b8f3){_0x1eb771[_0x0af5('0x5e')][_0x0af5('0x6a')]=_0x58b8f3['id'];return db[_0x0af5('0x6d')]['create'](_0x1eb771[_0x0af5('0x5e')]);}})[_0x0af5('0x1f')](respondWithResult(_0x5bc981,null))['catch'](handleError(_0x5bc981,null));};exports['getAnswers']=function(_0x2188de,_0x3ee255,_0x47c9f1){var _0x1ac3c1={'raw':![],'where':{}};var _0x19c96a={};var _0x11dce0={'count':0x0,'rows':[]};return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x2188de['params']['id']}})['then'](handleEntityNotFound(_0x3ee255,null))[_0x0af5('0x1f')](function(_0x308a2d){if(_0x308a2d){_0x19c96a[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x6d')][_0x0af5('0x40')]);_0x19c96a[_0x0af5('0x43')]=_[_0x0af5('0x44')](_0x2188de[_0x0af5('0x43')]);_0x19c96a[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x19c96a[_0x0af5('0x47')],_0x19c96a[_0x0af5('0x43')]);_0x1ac3c1['attributes']=_[_0x0af5('0x46')](_0x19c96a[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x2188de['query'][_0x0af5('0x49')]));_0x1ac3c1[_0x0af5('0x48')]=_0x1ac3c1[_0x0af5('0x48')][_0x0af5('0x4a')]?_0x1ac3c1[_0x0af5('0x48')]:_0x19c96a[_0x0af5('0x47')];if(!_0x2188de['query']['hasOwnProperty']('nolimit')){_0x1ac3c1['limit']=qs[_0x0af5('0x30')](_0x2188de['query'][_0x0af5('0x30')]);_0x1ac3c1[_0x0af5('0x32')]=qs[_0x0af5('0x32')](_0x2188de[_0x0af5('0x43')][_0x0af5('0x32')]);}_0x1ac3c1[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x2188de[_0x0af5('0x43')][_0x0af5('0x4e')]);_0x1ac3c1[_0x0af5('0x4f')]=qs['filters'](_[_0x0af5('0x50')](_0x2188de[_0x0af5('0x43')],_0x19c96a[_0x0af5('0x45')]));_0x1ac3c1['where'][_0x0af5('0x6a')]=_0x308a2d['id'];if(_0x2188de[_0x0af5('0x43')][_0x0af5('0x51')]){_0x1ac3c1[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x1ac3c1[_0x0af5('0x4f')],{'$or':_['map'](_0x1ac3c1[_0x0af5('0x48')],function(_0x4d4e54){var _0x33a04a={};_0x33a04a[_0x4d4e54]={'$like':'%'+_0x2188de[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x33a04a;})});}_0x1ac3c1=_[_0x0af5('0x52')]({},_0x1ac3c1,_0x2188de[_0x0af5('0x55')]);return db[_0x0af5('0x6d')][_0x0af5('0x31')]({'where':_0x1ac3c1[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x480ea5){_0x11dce0[_0x0af5('0x31')]=_0x480ea5;if(_0x2188de['query'][_0x0af5('0x56')]){_0x1ac3c1['include']=[{'all':!![]}];}return db[_0x0af5('0x6d')]['findAll'](_0x1ac3c1);})[_0x0af5('0x1f')](function(_0x4e206b){_0x11dce0['rows']=_0x4e206b;return _0x11dce0;});}})['then'](respondWithFilteredResult(_0x3ee255,_0x1ac3c1))['catch'](handleError(_0x3ee255,null));};exports[_0x0af5('0x6e')]=function(_0x2c81fa,_0x1ba006,_0x42d39c){return db['FaxAccount'][_0x0af5('0x64')]({'where':{'id':_0x2c81fa['params']['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x1ba006,null))['then'](function(_0x998ce3){if(_0x998ce3){return _0x998ce3[_0x0af5('0x6e')](_0x2c81fa['query'][_0x0af5('0x6b')]);}})[_0x0af5('0x1f')](respondWithStatusCode(_0x1ba006,null))[_0x0af5('0x2a')](handleError(_0x1ba006,null));};exports[_0x0af5('0x6f')]=function(_0x4c4c6a,_0x168afa,_0x3ddaaa){return db[_0x0af5('0x70')][_0x0af5('0x64')]({'where':{'id':_0x4c4c6a[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x168afa,null))['then'](function(_0x579aa1){if(_0x579aa1){return _0x579aa1['addInteraction'](_0x4c4c6a[_0x0af5('0x5e')][_0x0af5('0x6b')],_[_0x0af5('0x71')](_0x4c4c6a[_0x0af5('0x5e')],[_0x0af5('0x6b'),'id'])||{});}})[_0x0af5('0x1f')](respondWithResult(_0x168afa,null))['catch'](handleError(_0x168afa,null));};exports['getInteractions']=function(_0x514c03,_0x1943bb,_0x4fecde){var _0x553e71={'raw':![],'where':{}};var _0x4db74c={};var _0x21bdf4={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0af5('0x69')]({'where':{'id':_0x514c03['params']['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x1943bb,null))[_0x0af5('0x1f')](function(_0x1d2b7e){if(_0x1d2b7e){_0x4db74c[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x70')][_0x0af5('0x40')]);_0x4db74c[_0x0af5('0x43')]=_[_0x0af5('0x44')](_0x514c03[_0x0af5('0x43')]);_0x4db74c[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x4db74c[_0x0af5('0x47')],_0x4db74c['query']);_0x553e71[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x4db74c[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x514c03['query'][_0x0af5('0x49')]));_0x553e71[_0x0af5('0x48')]=_0x553e71['attributes']['length']?_0x553e71['attributes']:_0x4db74c[_0x0af5('0x47')];if(!_0x514c03[_0x0af5('0x43')]['hasOwnProperty'](_0x0af5('0x4c'))){_0x553e71[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x514c03[_0x0af5('0x43')]['limit']);_0x553e71['offset']=qs[_0x0af5('0x32')](_0x514c03['query'][_0x0af5('0x32')]);}_0x553e71[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x514c03['query'][_0x0af5('0x4e')]);_0x553e71[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_[_0x0af5('0x50')](_0x514c03[_0x0af5('0x43')],_0x4db74c['filters']));_0x553e71[_0x0af5('0x4f')][_0x0af5('0x6a')]=_0x1d2b7e['id'];if(_0x514c03[_0x0af5('0x43')][_0x0af5('0x51')]){_0x553e71[_0x0af5('0x4f')]=_['merge'](_0x553e71[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x553e71['attributes'],function(_0x533e75){var _0x2e3a10={};_0x2e3a10[_0x533e75]={'$like':'%'+_0x514c03[_0x0af5('0x43')]['filter']+'%'};return _0x2e3a10;})});}_0x553e71=_[_0x0af5('0x52')]({},_0x553e71,_0x514c03[_0x0af5('0x55')]);return db[_0x0af5('0x70')][_0x0af5('0x31')]({'where':_0x553e71[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x2b8f96){_0x21bdf4[_0x0af5('0x31')]=_0x2b8f96;if(_0x514c03[_0x0af5('0x43')][_0x0af5('0x56')]){_0x553e71[_0x0af5('0x57')]=[{'model':db[_0x0af5('0x72')],'as':'Contact','required':![]},{'model':db[_0x0af5('0x73')],'as':_0x0af5('0x74'),'attributes':[_0x0af5('0x3d'),_0x0af5('0x75'),_0x0af5('0x76')],'required':![]},{'model':db['Tag'],'as':_0x0af5('0x77'),'attributes':['id',_0x0af5('0x3d'),'color'],'where':_0x514c03[_0x0af5('0x43')][_0x0af5('0x78')]?{'id':_0x514c03[_0x0af5('0x43')][_0x0af5('0x78')]}:undefined,'required':_0x514c03[_0x0af5('0x43')][_0x0af5('0x78')]?!![]:![]}];}return db[_0x0af5('0x70')][_0x0af5('0x58')](_0x553e71);})[_0x0af5('0x1f')](function(_0x305c69){_0x21bdf4[_0x0af5('0x59')]=_0x305c69;return _0x21bdf4;});}})[_0x0af5('0x1f')](respondWithFilteredResult(_0x1943bb,_0x553e71))[_0x0af5('0x2a')](handleError(_0x1943bb,null));};exports[_0x0af5('0x79')]=function(_0x446236,_0x4a3f03,_0x5f187d){return db['FaxAccount']['findOne']({'where':{'id':_0x446236[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x4a3f03,null))[_0x0af5('0x1f')](function(_0x16df8d){if(_0x16df8d){return db['sequelize'][_0x0af5('0x7a')](function(_0x42f2c9){return db[_0x0af5('0x7b')][_0x0af5('0x3b')]({'where':{'FaxAccountId':_0x446236['params']['id']},'transaction':_0x42f2c9})[_0x0af5('0x1f')](function(_0x3684f7){var _0x3d4f8e=_[_0x0af5('0x53')](_0x446236[_0x0af5('0x5e')],function(_0x552557){_0x552557['FaxAccountId']=_0x446236['params']['id'];return _0x552557;});return db[_0x0af5('0x7b')][_0x0af5('0x7c')](_0x3d4f8e,{'transaction':_0x42f2c9});});})['then'](function(){return db[_0x0af5('0x7b')][_0x0af5('0x7d')]({'where':{'FaxAccountId':_0x446236[_0x0af5('0x5b')]['id']},'order':_0x0af5('0x7e')});});}})[_0x0af5('0x1f')](respondWithResult(_0x4a3f03,null))[_0x0af5('0x2a')](handleError(_0x4a3f03,null));};exports[_0x0af5('0x7f')]=function(_0x3e3d81,_0xd650f5,_0xf0ebf7){var _0x33bf70={};var _0x327ffe={};var _0x56f53a;var _0x2c5048;return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x3e3d81[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0xd650f5,null))[_0x0af5('0x1f')](function(_0x309e04){if(_0x309e04){_0x56f53a=_0x309e04;_0x327ffe[_0x0af5('0x47')]=_[_0x0af5('0x44')](db['FaxApplication'][_0x0af5('0x40')]);_0x327ffe['query']=_[_0x0af5('0x44')](_0x3e3d81['query']);_0x327ffe[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x327ffe['model'],_0x327ffe['query']);_0x33bf70[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x327ffe[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x3e3d81['query'][_0x0af5('0x49')]));_0x33bf70['attributes']=_0x33bf70['attributes'][_0x0af5('0x4a')]?_0x33bf70[_0x0af5('0x48')]:_0x327ffe[_0x0af5('0x47')];_0x33bf70[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x4e')]);_0x33bf70[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_[_0x0af5('0x50')](_0x3e3d81[_0x0af5('0x43')],_0x327ffe['filters']));if(_0x3e3d81[_0x0af5('0x43')]['filter']){_0x33bf70[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x33bf70[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x33bf70[_0x0af5('0x48')],function(_0x5cc366){var _0x358d1e={};_0x358d1e[_0x5cc366]={'$like':'%'+_0x3e3d81[_0x0af5('0x43')]['filter']+'%'};return _0x358d1e;})});}_0x33bf70=_[_0x0af5('0x52')]({},_0x33bf70,_0x3e3d81[_0x0af5('0x55')]);return _0x56f53a[_0x0af5('0x7f')](_0x33bf70);}})[_0x0af5('0x1f')](function(_0x451ae4){if(_0x451ae4){_0x2c5048=_0x451ae4[_0x0af5('0x4a')];if(!_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x4b')]('nolimit')){_0x33bf70[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x30')]);_0x33bf70['offset']=qs[_0x0af5('0x32')](_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x32')]);}return _0x56f53a[_0x0af5('0x7f')](_0x33bf70);}})[_0x0af5('0x1f')](function(_0x52964b){if(_0x52964b){return _0x52964b?{'count':_0x2c5048,'rows':_0x52964b}:null;}})[_0x0af5('0x1f')](respondWithResult(_0xd650f5,null))[_0x0af5('0x2a')](handleError(_0xd650f5,null));};function Extension(_0x44cd1c,_0x3f5b44,_0x37a514,_0x3b97f7){this['context']=_0x0af5('0x80');this[_0x0af5('0x81')]=_0x44cd1c[_0x0af5('0x82')];this[_0x0af5('0x83')]=_0x3b97f7;this[_0x0af5('0x41')]=_0x0af5('0x84');this['description']=_0x0af5('0x85');this['FaxAccountId']=_0x44cd1c['id'];this['priority']=_0x3f5b44;this[_0x0af5('0x86')]=_0x37a514;}function createExtensionsReciveFax(_0x1e350f){var _0xb3678c=0x1;var _0x36f126=[];_0x36f126[_0x0af5('0x87')](new Extension(_0x1e350f,_0xb3678c,'',_0x0af5('0x88')));_0xb3678c+=0x1;_0x36f126['push'](new Extension(_0x1e350f,_0xb3678c,_0x0af5('0x89'),'Set'));_0xb3678c+=0x1;for(var _0x514e1e in _0x1e350f){if(_0x1e350f[_0x0af5('0x4b')](_0x514e1e)&&(_0x514e1e==='ecm'||_0x514e1e===_0x0af5('0x82')||_0x514e1e==='gateway'||_0x514e1e===_0x0af5('0x8a')||_0x514e1e===_0x0af5('0x8b')||_0x514e1e===_0x0af5('0x8c')||_0x514e1e===_0x0af5('0x8d')||_0x514e1e===_0x0af5('0x8e')||_0x514e1e===_0x0af5('0x8f'))){_0x36f126[_0x0af5('0x87')](new Extension(_0x1e350f,_0xb3678c,'FAXOPT('+_0x514e1e+')='+_0x1e350f[_0x514e1e],'Set'));_0xb3678c+=0x1;}}_0x36f126[_0x0af5('0x87')](new Extension(_0x1e350f,_0xb3678c,'6',_0x0af5('0x90')));_0xb3678c+=0x1;_0x36f126['push'](new Extension(_0x1e350f,_0xb3678c,_0x0af5('0x91'),'ReceiveFax'));_0xb3678c=0x0;return _0x36f126;}exports['addAccountApplications']=function(_0x4eb805,_0x1639e9,_0x4875c1){var _0x1a8e32;return db['sequelize'][_0x0af5('0x7a')](function(_0x11f785){return db[_0x0af5('0x3f')][_0x0af5('0x5d')](_0x4eb805[_0x0af5('0x5e')],{'transaction':_0x11f785})[_0x0af5('0x1f')](function(_0x2c87d6){_0x1a8e32=_0x2c87d6['get']({'plain':!![]});return db[_0x0af5('0x92')]['bulkCreate'](createExtensionsReciveFax(_0x1a8e32),{'transaction':_0x11f785});});})[_0x0af5('0x1f')](function(){return _0x1a8e32;})[_0x0af5('0x1f')](respondWithResult(_0x1639e9,null))['catch'](handleError(_0x1639e9,null));};exports[_0x0af5('0x93')]=function(_0x44359,_0x532a45,_0x11d37a){var _0x442681;return db[_0x0af5('0x94')]['transaction'](function(_0x43e585){return db[_0x0af5('0x3f')]['update'](_0x44359[_0x0af5('0x5e')],{'where':{'id':_0x44359['body']['id']},'transaction':_0x43e585})['then'](function(_0x2e16bf){return db[_0x0af5('0x92')][_0x0af5('0x3b')]({'where':{'FaxAccountId':_0x44359[_0x0af5('0x5e')]['id']},'transaction':_0x43e585})[_0x0af5('0x1f')](function(_0x5191de){return db['VoiceExtension'][_0x0af5('0x7c')](createExtensionsReciveFax(_[_0x0af5('0x71')](_0x44359[_0x0af5('0x5e')],[_0x0af5('0x95'),_0x0af5('0x42'),_0x0af5('0x96'),_0x0af5('0x97'),_0x0af5('0x98'),_0x0af5('0x99')])),{'transaction':_0x43e585});});});})[_0x0af5('0x1f')](function(){return db['FaxAccount'][_0x0af5('0x9a')](_0x44359['body']['id']);})[_0x0af5('0x1f')](respondWithResult(_0x532a45,null))[_0x0af5('0x2a')](handleError(_0x532a45,null));};exports[_0x0af5('0x9b')]=function(_0x320282,_0x1f779b,_0x1e6961){var _0x1bd1a9={'raw':!![],'where':{}};var _0x16fd5f={};var _0x21ead8={'count':0x0,'rows':[]};return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x320282[_0x0af5('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1f779b,null))[_0x0af5('0x1f')](function(_0x2f3c21){if(_0x2f3c21){_0x16fd5f['model']=_['keys'](db[_0x0af5('0x9c')][_0x0af5('0x40')]);_0x16fd5f[_0x0af5('0x43')]=_['keys'](_0x320282[_0x0af5('0x43')]);_0x16fd5f[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x16fd5f[_0x0af5('0x47')],_0x16fd5f[_0x0af5('0x43')]);_0x1bd1a9[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x16fd5f[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x320282[_0x0af5('0x43')][_0x0af5('0x49')]));_0x1bd1a9['attributes']=_0x1bd1a9['attributes']['length']?_0x1bd1a9[_0x0af5('0x48')]:_0x16fd5f[_0x0af5('0x47')];if(!_0x320282[_0x0af5('0x43')][_0x0af5('0x4b')]('nolimit')){_0x1bd1a9[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x320282['query'][_0x0af5('0x30')]);_0x1bd1a9['offset']=qs['offset'](_0x320282['query'][_0x0af5('0x32')]);}_0x1bd1a9['order']=qs['sort'](_0x320282['query'][_0x0af5('0x4e')]);_0x1bd1a9[_0x0af5('0x4f')]=qs['filters'](_[_0x0af5('0x50')](_0x320282['query'],_0x16fd5f[_0x0af5('0x45')]));_0x1bd1a9[_0x0af5('0x4f')]['FaxAccountId']=_0x2f3c21['id'];if(_0x320282['query']['filter']){_0x1bd1a9[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x1bd1a9[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x1bd1a9['attributes'],function(_0x22968b){var _0x5cd6f8={};_0x5cd6f8[_0x22968b]={'$like':'%'+_0x320282[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x5cd6f8;})});}if(_0x320282['query']['$gte']){var _0x105444=_0x320282[_0x0af5('0x43')][_0x0af5('0x9d')][_0x0af5('0x9e')](',');var _0x3ac28b={};_0x3ac28b[_0x105444[0x0]]={'$gte':moment(_0x105444[0x1])[_0x0af5('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1bd1a9[_0x0af5('0x4f')]=_['merge'](_0x1bd1a9[_0x0af5('0x4f')],_0x3ac28b);}_0x1bd1a9=_['merge']({},_0x1bd1a9,_0x320282['options']);return db['FaxMessage'][_0x0af5('0x31')]({'where':_0x1bd1a9[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x210f79){_0x21ead8[_0x0af5('0x31')]=_0x210f79;if(_0x320282[_0x0af5('0x43')]['includeAll']){_0x1bd1a9[_0x0af5('0x57')]=[{'all':!![]}];}return db['FaxMessage'][_0x0af5('0x58')](_0x1bd1a9);})['then'](function(_0x5d2888){_0x21ead8[_0x0af5('0x59')]=_0x5d2888;return _0x21ead8;});}})[_0x0af5('0x1f')](respondWithFilteredResult(_0x1f779b,_0x1bd1a9))[_0x0af5('0x2a')](handleError(_0x1f779b,null));};exports['send']=function(_0x4bc546,_0x56edcf,_0x2d5448){var _0x494399,_0x460967={},_0x29653c;if(_0x4bc546[_0x0af5('0x5e')]['to']){_0x29653c=_0x4bc546['body']['to'][0x0];}return db['FaxAccount'][_0x0af5('0x64')]({'where':{'id':_0x4bc546[_0x0af5('0x5b')]['id']},'include':[{'model':db[_0x0af5('0xa0')],'as':_0x0af5('0xa1'),'include':[{'model':db[_0x0af5('0x72')],'as':_0x0af5('0xa2'),'where':{'fax':_0x29653c},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x0af5('0x1f')](handleEntityNotFound(_0x56edcf,null))[_0x0af5('0x1f')](function(_0x55995f){_0x494399=_0x55995f;if(_0x4bc546['body'][_0x0af5('0xa3')]&&_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x0af5('0x4a')]){for(var _0x3168c8=0x0;_0x3168c8<_0x4bc546['body']['attachments'][_0x0af5('0x4a')];_0x3168c8+=0x1){_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8]={'filename':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8][_0x0af5('0x3d')],'id':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8]['id'],'path':path[_0x0af5('0xa4')](config['root'],_0x0af5('0xa5'),_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8][_0x0af5('0xa6')])};}}return respondWithRpcPromise(_0x0af5('0xa7'),_0x0af5('0xa7'),{'FaxAccountId':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5b')]['id'])?undefined:_0x4bc546['params']['id'],'path':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0][_0x0af5('0x5')])?undefined:_0x4bc546[_0x0af5('0x5e')]['attachments'][0x0]['path'],'fax':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')]['to'][0x0])?undefined:_0x4bc546['body']['to'][0x0]},client9002);})[_0x0af5('0x1f')](function(){if(_0x494399){if(_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')]['from'])){_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa9')]=util[_0x0af5('0x9f')](_0x0af5('0xaa'),_0x494399[_0x0af5('0x3d')],_0x494399[_0x0af5('0xab')]);}if(_0x494399[_0x0af5('0xa1')]){if(_0x494399['List'][_0x0af5('0xa2')][_0x0af5('0x4a')]){return _0x494399[_0x0af5('0xa1')][_0x0af5('0xa2')][0x0];}else{return db[_0x0af5('0x72')][_0x0af5('0x5d')](_[_0x0af5('0xac')](_0x4bc546[_0x0af5('0x5e')],{'firstName':_0x4bc546[_0x0af5('0x5e')]['to'][0x0],'phone':_0x4bc546[_0x0af5('0x5e')]['to'][0x0],'fax':_0x4bc546['body']['to'][0x0],'ListId':_0x494399[_0x0af5('0x99')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x0af5('0xad'));}})[_0x0af5('0x1f')](function(_0x5e5421){if(_0x5e5421){return db[_0x0af5('0x70')][_0x0af5('0x64')]({'where':{'ContactId':_0x5e5421['id'],'closed':![],'FaxAccountId':_0x494399['id']}})[_0x0af5('0x1f')](function(_0x1b0447){if(_0x1b0447){return[_0x1b0447,![]];}return db['FaxInteraction'][_0x0af5('0x5d')]({'UserId':_0x4bc546[_0x0af5('0x5f')]['id'],'ContactId':_0x5e5421['id'],'FaxAccountId':_0x494399['id'],'fax':_0x4bc546['body']['to'][0x0],'firstMsgDirection':_0x0af5('0xae'),'Messages':[_[_0x0af5('0x52')](_0x4bc546[_0x0af5('0x5e')],{'read':![],'body':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0][_0x0af5('0xaf')],'FaxAccountId':_0x494399['id'],'UserId':_0x4bc546[_0x0af5('0x5f')]['id'],'ContactId':_0x5e5421['id'],'AttachmentId':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x0af5('0x9c')],'as':_0x0af5('0xb0')}]})[_0x0af5('0x1f')](function(_0x26d841){return[_0x26d841,!![]];});});}else{throw new Error(_0x0af5('0xb1'));}})[_0x0af5('0xb2')](function(_0x2fd47d,_0x2984fa){if(_0x2984fa){return _0x2fd47d;}return db[_0x0af5('0x9c')][_0x0af5('0x5d')]({'direction':_0x0af5('0xae'),'read':![],'body':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0][_0x0af5('0xaf')],'FaxAccountId':_0x494399['id'],'FaxInteractionId':_0x2fd47d['id'],'UserId':_0x4bc546[_0x0af5('0x5f')]['id'],'ContactId':_0x2fd47d['ContactId'],'AttachmentId':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0]['id']})['then'](function(_0x544b8d){_0x2fd47d[_0x0af5('0xb3')][_0x0af5('0xb0')]=[];_0x2fd47d[_0x0af5('0xb3')][_0x0af5('0xb0')]['push'](_0x544b8d[_0x0af5('0xb3')]);return _0x2fd47d;});})['then'](function(_0x328d56){respondWithRpcPromise(_0x0af5('0xb4'),_0x0af5('0xb4'),{'FaxAccountId':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5b')]['id'])?undefined:_0x4bc546[_0x0af5('0x5b')]['id'],'path':_[_0x0af5('0xa8')](_0x4bc546['body'][_0x0af5('0xa3')][0x0]['path'])?undefined:_0x4bc546[_0x0af5('0x5e')]['attachments'][0x0][_0x0af5('0x5')],'fax':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')]['to'][0x0])?undefined:_0x4bc546[_0x0af5('0x5e')]['to'][0x0],'AttachmentId':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0]['id']},client9002)['then'](function(_0x296d09){logger[_0x0af5('0x20')](_0x0af5('0xb5'),_0x296d09);})[_0x0af5('0x2a')](function(_0x134664){logger[_0x0af5('0x20')](_0x0af5('0xb5'),_0x134664);});return _0x328d56;})[_0x0af5('0x1f')](respondWithResult(_0x56edcf,null))[_0x0af5('0x2a')](handleError(_0x56edcf,null));};exports[_0x0af5('0xb6')]=function(_0x1acc5d,_0x10de93,_0xc28be7){return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x1acc5d[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x10de93,null))[_0x0af5('0x1f')](function(_0x37f451){if(_0x37f451){return _0x37f451[_0x0af5('0xb6')](_0x1acc5d['body'][_0x0af5('0x6b')],_['omit'](_0x1acc5d[_0x0af5('0x5e')],['ids','id'])||{})['spread'](function(_0x278adb){for(var _0x233e28=0x0;_0x233e28<_0x1acc5d[_0x0af5('0x5e')][_0x0af5('0x6b')][_0x0af5('0x4a')];_0x233e28+=0x1){socket[_0x0af5('0xb7')](_0x0af5('0xb8'),{'UserId':Number(_0x1acc5d[_0x0af5('0x5e')]['ids'][_0x233e28]),'FaxAccountId':Number(_0x1acc5d[_0x0af5('0x5b')]['id'])});}return _0x278adb;});}})[_0x0af5('0x1f')](respondWithResult(_0x10de93,null))[_0x0af5('0x2a')](handleError(_0x10de93,null));};exports[_0x0af5('0xb9')]=function(_0x2bf84a,_0x3e1bf7,_0x5aa472){return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x2bf84a[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x3e1bf7,null))[_0x0af5('0x1f')](function(_0x2f812a){if(_0x2f812a){return _0x2f812a[_0x0af5('0xb9')](_0x2bf84a[_0x0af5('0x43')][_0x0af5('0x6b')])[_0x0af5('0x1f')](function(){if(_['isArray'](_0x2bf84a['query']['ids'])){for(var _0x22326a=0x0;_0x22326a<_0x2bf84a[_0x0af5('0x43')]['ids']['length'];_0x22326a+=0x1){socket[_0x0af5('0xb7')](_0x0af5('0xba'),{'UserId':Number(_0x2bf84a[_0x0af5('0x43')][_0x0af5('0x6b')][_0x22326a]),'FaxAccountId':Number(_0x2bf84a[_0x0af5('0x5b')]['id'])});}}else{socket[_0x0af5('0xb7')]('userFaxAccount:remove',{'UserId':Number(_0x2bf84a[_0x0af5('0x43')][_0x0af5('0x6b')]),'FaxAccountId':Number(_0x2bf84a[_0x0af5('0x5b')]['id'])});}});}})[_0x0af5('0x1f')](respondWithStatusCode(_0x3e1bf7,null))['catch'](handleError(_0x3e1bf7,null));};exports['getAgents']=function(_0xbab2f8,_0x5a235f,_0x10f9cc){var _0x10a099={};var _0x2583a9={};var _0x55682d;var _0x1f98fc;return db['FaxAccount'][_0x0af5('0x69')]({'where':{'id':_0xbab2f8['params']['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x5a235f,null))[_0x0af5('0x1f')](function(_0x4a6ad8){if(_0x4a6ad8){_0x55682d=_0x4a6ad8;_0x2583a9[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x73')][_0x0af5('0x40')]);_0x2583a9[_0x0af5('0x43')]=_['keys'](_0xbab2f8[_0x0af5('0x43')]);_0x2583a9[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x2583a9[_0x0af5('0x47')],_0x2583a9[_0x0af5('0x43')]);_0x10a099['attributes']=_[_0x0af5('0x46')](_0x2583a9['model'],qs[_0x0af5('0x49')](_0xbab2f8[_0x0af5('0x43')][_0x0af5('0x49')]));_0x10a099[_0x0af5('0x48')]=_0x10a099['attributes']['length']?_0x10a099[_0x0af5('0x48')]:_0x2583a9[_0x0af5('0x47')];_0x10a099[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0xbab2f8['query'][_0x0af5('0x4e')]);_0x10a099[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_['pick'](_0xbab2f8[_0x0af5('0x43')],_0x2583a9[_0x0af5('0x45')]));if(_0xbab2f8[_0x0af5('0x43')]['filter']){_0x10a099[_0x0af5('0x4f')]=_['merge'](_0x10a099[_0x0af5('0x4f')],{'$or':_['map'](_0x10a099[_0x0af5('0x48')],function(_0x4a66bc){var _0x23b39c={};_0x23b39c[_0x4a66bc]={'$like':'%'+_0xbab2f8[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x23b39c;})});}_0x10a099=_[_0x0af5('0x52')]({},_0x10a099,_0xbab2f8['options']);return _0x55682d[_0x0af5('0xbb')](_0x10a099);}})[_0x0af5('0x1f')](function(_0x52e18c){if(_0x52e18c){_0x1f98fc=_0x52e18c[_0x0af5('0x4a')];if(!_0xbab2f8[_0x0af5('0x43')][_0x0af5('0x4b')]('nolimit')){_0x10a099['limit']=qs[_0x0af5('0x30')](_0xbab2f8[_0x0af5('0x43')]['limit']);_0x10a099['offset']=qs[_0x0af5('0x32')](_0xbab2f8['query']['offset']);}return _0x55682d['getAgents'](_0x10a099);}})[_0x0af5('0x1f')](function(_0x25388f){if(_0x25388f){return _0x25388f?{'count':_0x1f98fc,'rows':_0x25388f}:null;}})[_0x0af5('0x1f')](respondWithResult(_0x5a235f,null))[_0x0af5('0x2a')](handleError(_0x5a235f,null));};
\ No newline at end of file
+var _0x2f5e=['save','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','FaxAccount','includeAll','findAll','rows','show','Pause','mandatoryDispositionPause','length','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','FaxAccountId','getDispositions','findOne','Disposition','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addInteraction','omit','FaxInteraction','CmContact','User','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','FaxApplication','bulkCreate','getApplications','exten','localstationid','description','Fax\x20Extension','priority','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','minrate','modem','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','transaction','VoiceExtension','updateAccountApplications','createdAt','updatedAt','ListId','findById','getMessages','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','Contacts','DESC','attachments','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Send\x20Fax\x20failed','out','filename','user','Messages','Contact\x20not\x20found','spread','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x2f5e,0x14f));var _0xe2f5=function(_0x2d0bfd,_0x2ba336){_0x2d0bfd=_0x2d0bfd-0x0;var _0x4d806c=_0x2f5e[_0x2d0bfd];return _0x4d806c;};'use strict';var emlformat=require(_0xe2f5('0x0'));var rimraf=require(_0xe2f5('0x1'));var zipdir=require(_0xe2f5('0x2'));var jsonpatch=require(_0xe2f5('0x3'));var rp=require(_0xe2f5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe2f5('0x5'));var util=require(_0xe2f5('0x6'));var path=require(_0xe2f5('0x7'));var sox=require(_0xe2f5('0x8'));var csv=require(_0xe2f5('0x9'));var ejs=require(_0xe2f5('0xa'));var fs=require('fs');var fs_extra=require(_0xe2f5('0xb'));var _=require(_0xe2f5('0xc'));var squel=require(_0xe2f5('0xd'));var crypto=require(_0xe2f5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe2f5('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe2f5('0x10'));var authService=require(_0xe2f5('0x11'));var qs=require(_0xe2f5('0x12'));var as=require(_0xe2f5('0x13'));var hardwareService=require(_0xe2f5('0x14'));var logger=require(_0xe2f5('0x15'))('api');var utils=require(_0xe2f5('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe2f5('0x17'));var db=require(_0xe2f5('0x18'))['db'];config['redis']=_[_0xe2f5('0x19')](config[_0xe2f5('0x1a')],{'host':_0xe2f5('0x1b'),'port':0x18eb});var socket=require(_0xe2f5('0x1c'))(new Redis(config[_0xe2f5('0x1a')]));require(_0xe2f5('0x1d'))[_0xe2f5('0x1e')](socket);var jayson=require(_0xe2f5('0x1f'));var client=jayson[_0xe2f5('0x20')]['http']({'port':0x232c});var client9002=jayson[_0xe2f5('0x20')][_0xe2f5('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x14c995,_0x44744f,_0x3e4685,_0x2cca2c){return new BPromise(function(_0x1f329f,_0xedc57b){var _0x4ed0a6=_0x2cca2c||client;return _0x4ed0a6[_0xe2f5('0x22')](_0x14c995,_0x3e4685)['then'](function(_0x415d4a){logger[_0xe2f5('0x23')](_0xe2f5('0x24'),_0x44744f,_0xe2f5('0x25'));logger[_0xe2f5('0x26')](_0xe2f5('0x27'),_0x44744f,_0xe2f5('0x25'),JSON[_0xe2f5('0x28')](_0x415d4a));if(_0x415d4a['error']){if(_0x415d4a[_0xe2f5('0x29')]['code']===0x1f4){logger[_0xe2f5('0x29')](_0xe2f5('0x24'),_0x44744f,_0x415d4a['error'][_0xe2f5('0x2a')]);return _0xedc57b(_0x415d4a[_0xe2f5('0x29')][_0xe2f5('0x2a')]);}logger[_0xe2f5('0x29')](_0xe2f5('0x24'),_0x44744f,_0x415d4a[_0xe2f5('0x29')][_0xe2f5('0x2a')]);return _0x1f329f(_0x415d4a[_0xe2f5('0x29')][_0xe2f5('0x2a')]);}else{logger[_0xe2f5('0x23')](_0xe2f5('0x24'),_0x44744f,_0xe2f5('0x25'));_0x1f329f(_0x415d4a[_0xe2f5('0x2b')]['message']);}})[_0xe2f5('0x2c')](function(_0x19db73){logger['error'](_0xe2f5('0x24'),_0x44744f,_0x19db73);_0xedc57b(_0x19db73);});});}function respondWithStatusCode(_0x57e77c,_0x25241a){_0x25241a=_0x25241a||0xcc;return function(_0x14fe78){if(_0x14fe78){return _0x57e77c[_0xe2f5('0x2d')](_0x25241a);}return _0x57e77c[_0xe2f5('0x2e')](_0x25241a)['end']();};}function respondWithResult(_0x1efd05,_0x5c4a01){_0x5c4a01=_0x5c4a01||0xc8;return function(_0x39d334){if(_0x39d334){return _0x1efd05[_0xe2f5('0x2e')](_0x5c4a01)[_0xe2f5('0x2f')](_0x39d334);}};}function respondWithFilteredResult(_0x3f7e4a,_0x40b2b5){return function(_0xdce9b1){if(_0xdce9b1){var _0x42d19f=typeof _0x40b2b5[_0xe2f5('0x30')]===_0xe2f5('0x31')&&typeof _0x40b2b5[_0xe2f5('0x32')]===_0xe2f5('0x31');var _0x429b47=_0xdce9b1[_0xe2f5('0x33')];var _0x2d8537=_0x42d19f?0x0:_0x40b2b5['offset'];var _0x531762=_0x42d19f?_0xdce9b1[_0xe2f5('0x33')]:_0x40b2b5[_0xe2f5('0x30')]+_0x40b2b5[_0xe2f5('0x32')];var _0x4942a4;if(_0x531762>=_0x429b47){_0x531762=_0x429b47;_0x4942a4=0xc8;}else{_0x4942a4=0xce;}_0x3f7e4a[_0xe2f5('0x2e')](_0x4942a4);return _0x3f7e4a['set'](_0xe2f5('0x34'),_0x2d8537+'-'+_0x531762+'/'+_0x429b47)['json'](_0xdce9b1);}return null;};}function patchUpdates(_0x2df5a9){return function(_0x5f2d28){try{jsonpatch[_0xe2f5('0x35')](_0x5f2d28,_0x2df5a9,!![]);}catch(_0x25b27c){return BPromise[_0xe2f5('0x36')](_0x25b27c);}return _0x5f2d28[_0xe2f5('0x37')]();};}function saveUpdates(_0xf6a357,_0x34f937){return function(_0x200662){if(_0x200662){return _0x200662[_0xe2f5('0x38')](_0xf6a357)[_0xe2f5('0x39')](function(_0x125c23){return _0x125c23;});}return null;};}function removeEntity(_0x462e58,_0x36e6ce){return function(_0x5ccbd0){if(_0x5ccbd0){return _0x5ccbd0[_0xe2f5('0x3a')]()[_0xe2f5('0x39')](function(){var _0x89e39b=_0x5ccbd0[_0xe2f5('0x3b')]({'plain':!![]});var _0x2b13c7='FaxAccounts';return db[_0xe2f5('0x3c')][_0xe2f5('0x3a')]({'where':{'type':_0x2b13c7,'resourceId':_0x89e39b['id']}})[_0xe2f5('0x39')](function(){return _0x5ccbd0;});})[_0xe2f5('0x39')](function(){_0x462e58['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x20bcda,_0x5d4435){return function(_0x25209b){if(!_0x25209b){_0x20bcda[_0xe2f5('0x2d')](0x194);}return _0x25209b;};}function handleError(_0x4cedb7,_0x2064cf){_0x2064cf=_0x2064cf||0x1f4;return function(_0x23446b){logger[_0xe2f5('0x29')](_0x23446b[_0xe2f5('0x3d')]);if(_0x23446b[_0xe2f5('0x3e')]){delete _0x23446b[_0xe2f5('0x3e')];}_0x4cedb7[_0xe2f5('0x2e')](_0x2064cf)[_0xe2f5('0x3f')](_0x23446b);};}exports[_0xe2f5('0x40')]=function(_0x33a3fe,_0x293044){var _0x5b78cf={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1efc9={},_0x4a7f3a={'count':0x0,'rows':[]};var _0x1173df=_[_0xe2f5('0x41')](db['FaxAccount'][_0xe2f5('0x42')],function(_0x4e2554){return{'name':_0x4e2554[_0xe2f5('0x43')],'type':_0x4e2554['type'][_0xe2f5('0x44')]};});_0x1efc9['model']=_['map'](_0x1173df,'name');_0x1efc9[_0xe2f5('0x45')]=_[_0xe2f5('0x46')](_0x33a3fe['query']);_0x1efc9['filters']=_[_0xe2f5('0x47')](_0x1efc9[_0xe2f5('0x48')],_0x1efc9['query']);_0x5b78cf['attributes']=_[_0xe2f5('0x47')](_0x1efc9['model'],qs['fields'](_0x33a3fe['query'][_0xe2f5('0x49')]));_0x5b78cf['attributes']=_0x5b78cf[_0xe2f5('0x4a')]['length']?_0x5b78cf[_0xe2f5('0x4a')]:_0x1efc9[_0xe2f5('0x48')];if(!_0x33a3fe[_0xe2f5('0x45')][_0xe2f5('0x4b')](_0xe2f5('0x4c'))){_0x5b78cf[_0xe2f5('0x32')]=qs[_0xe2f5('0x32')](_0x33a3fe[_0xe2f5('0x45')]['limit']);_0x5b78cf[_0xe2f5('0x30')]=qs['offset'](_0x33a3fe[_0xe2f5('0x45')][_0xe2f5('0x30')]);}_0x5b78cf[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0x33a3fe[_0xe2f5('0x45')][_0xe2f5('0x4e')]);_0x5b78cf[_0xe2f5('0x4f')]=qs[_0xe2f5('0x50')](_[_0xe2f5('0x51')](_0x33a3fe[_0xe2f5('0x45')],_0x1efc9[_0xe2f5('0x50')]),_0x1173df);if(_0x33a3fe[_0xe2f5('0x45')][_0xe2f5('0x52')]){_0x5b78cf[_0xe2f5('0x4f')]=_[_0xe2f5('0x53')](_0x5b78cf[_0xe2f5('0x4f')],{'$or':_['map'](_0x1173df,function(_0x3456da){if(_0x3456da[_0xe2f5('0x54')]!==_0xe2f5('0x55')){var _0x2abf71={};_0x2abf71[_0x3456da['name']]={'$like':'%'+_0x33a3fe[_0xe2f5('0x45')]['filter']+'%'};return _0x2abf71;}})});}_0x5b78cf=_['merge']({},_0x5b78cf,_0x33a3fe[_0xe2f5('0x56')]);var _0x3a529c={'where':_0x5b78cf[_0xe2f5('0x4f')]};return db[_0xe2f5('0x57')][_0xe2f5('0x33')](_0x3a529c)[_0xe2f5('0x39')](function(_0x52b79d){_0x4a7f3a[_0xe2f5('0x33')]=_0x52b79d;if(_0x33a3fe[_0xe2f5('0x45')][_0xe2f5('0x58')]){_0x5b78cf['include']=[{'all':!![]}];}return db[_0xe2f5('0x57')][_0xe2f5('0x59')](_0x5b78cf);})[_0xe2f5('0x39')](function(_0x21afdb){_0x4a7f3a[_0xe2f5('0x5a')]=_0x21afdb;return _0x4a7f3a;})['then'](respondWithFilteredResult(_0x293044,_0x5b78cf))[_0xe2f5('0x2c')](handleError(_0x293044,null));};exports[_0xe2f5('0x5b')]=function(_0x45c909,_0x3bd8e0){var _0x179faf={'raw':![],'where':{'id':_0x45c909['params']['id']},'include':[{'model':db[_0xe2f5('0x5c')],'as':_0xe2f5('0x5d')}]},_0x223ef3={};_0x223ef3[_0xe2f5('0x48')]=_[_0xe2f5('0x46')](db[_0xe2f5('0x57')][_0xe2f5('0x42')]);_0x223ef3['query']=_[_0xe2f5('0x46')](_0x45c909[_0xe2f5('0x45')]);_0x223ef3['filters']=_['intersection'](_0x223ef3[_0xe2f5('0x48')],_0x223ef3[_0xe2f5('0x45')]);_0x179faf[_0xe2f5('0x4a')]=_[_0xe2f5('0x47')](_0x223ef3[_0xe2f5('0x48')],qs[_0xe2f5('0x49')](_0x45c909[_0xe2f5('0x45')]['fields']));_0x179faf[_0xe2f5('0x4a')]=_0x179faf[_0xe2f5('0x4a')][_0xe2f5('0x5e')]?_0x179faf[_0xe2f5('0x4a')]:_0x223ef3[_0xe2f5('0x48')];if(_0x45c909[_0xe2f5('0x45')][_0xe2f5('0x58')]){_0x179faf[_0xe2f5('0x5f')]=[{'all':!![]}];}_0x179faf=_[_0xe2f5('0x53')]({},_0x179faf,_0x45c909[_0xe2f5('0x56')]);return db[_0xe2f5('0x57')][_0xe2f5('0x60')](_0x179faf)[_0xe2f5('0x39')](handleEntityNotFound(_0x3bd8e0,null))[_0xe2f5('0x39')](respondWithResult(_0x3bd8e0,null))[_0xe2f5('0x2c')](handleError(_0x3bd8e0,null));};exports[_0xe2f5('0x61')]=function(_0x36457c,_0x302836){return db[_0xe2f5('0x57')][_0xe2f5('0x61')](_0x36457c[_0xe2f5('0x62')],{})[_0xe2f5('0x39')](function(_0x2b138b){var _0xd0365f=_0x36457c['user']['get']({'plain':!![]});if(!_0xd0365f)throw new Error(_0xe2f5('0x63'));if(_0xd0365f[_0xe2f5('0x64')]==='user'){var _0x4ab924=_0x2b138b[_0xe2f5('0x3b')]({'plain':!![]});var _0xdb009d=_0xe2f5('0x65');return db[_0xe2f5('0x66')][_0xe2f5('0x60')]({'where':{'name':_0xdb009d,'userProfileId':_0xd0365f[_0xe2f5('0x67')]},'raw':!![]})['then'](function(_0x2a5b9a){if(_0x2a5b9a&&_0x2a5b9a['autoAssociation']===0x0){return db[_0xe2f5('0x3c')][_0xe2f5('0x61')]({'name':_0x4ab924[_0xe2f5('0x3e')],'resourceId':_0x4ab924['id'],'type':_0x2a5b9a['name'],'sectionId':_0x2a5b9a['id']},{})['then'](function(){return _0x2b138b;});}else{return _0x2b138b;}})[_0xe2f5('0x2c')](function(_0x5c4e67){logger[_0xe2f5('0x29')](_0xe2f5('0x68'),_0x5c4e67);throw _0x5c4e67;});}return _0x2b138b;})['then'](respondWithResult(_0x302836,0xc9))[_0xe2f5('0x2c')](handleError(_0x302836,null));};exports[_0xe2f5('0x38')]=function(_0x3d876f,_0x271200){if(_0x3d876f[_0xe2f5('0x62')]['id']){delete _0x3d876f[_0xe2f5('0x62')]['id'];}return db[_0xe2f5('0x57')][_0xe2f5('0x60')]({'where':{'id':_0x3d876f[_0xe2f5('0x69')]['id']},'include':[{'model':db[_0xe2f5('0x5c')],'as':'mandatoryDispositionPause'}]})[_0xe2f5('0x39')](handleEntityNotFound(_0x271200,null))[_0xe2f5('0x39')](saveUpdates(_0x3d876f['body'],null))[_0xe2f5('0x39')](respondWithResult(_0x271200,null))[_0xe2f5('0x2c')](handleError(_0x271200,null));};exports[_0xe2f5('0x3a')]=function(_0x38c0af,_0x12bf1f){return db[_0xe2f5('0x57')][_0xe2f5('0x60')]({'where':{'id':_0x38c0af['params']['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x12bf1f,null))['then'](removeEntity(_0x12bf1f,null))[_0xe2f5('0x2c')](handleError(_0x12bf1f,null));};exports[_0xe2f5('0x6a')]=function(_0x4c6044,_0x28051d){return db[_0xe2f5('0x57')][_0xe2f5('0x6a')]()[_0xe2f5('0x39')](respondWithResult(_0x28051d,null))[_0xe2f5('0x2c')](handleError(_0x28051d,null));};exports['addDisposition']=function(_0x8a12ef,_0x2aea54,_0xc7554a){if(_0x8a12ef[_0xe2f5('0x62')]['id']){delete _0x8a12ef[_0xe2f5('0x62')]['id'];}return db['FaxAccount'][_0xe2f5('0x60')]({'where':{'id':_0x8a12ef[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x2aea54,null))[_0xe2f5('0x39')](function(_0x484196){if(_0x484196){_0x8a12ef[_0xe2f5('0x62')][_0xe2f5('0x6b')]=_0x484196['id'];return db['Disposition']['create'](_0x8a12ef['body']);}})[_0xe2f5('0x39')](respondWithResult(_0x2aea54,null))[_0xe2f5('0x2c')](handleError(_0x2aea54,null));};exports[_0xe2f5('0x6c')]=function(_0x5735e1,_0x4da6bc,_0x36d20e){var _0x18d5fa={'raw':![],'where':{}};var _0x485eb1={};var _0x81618d={'count':0x0,'rows':[]};return db[_0xe2f5('0x57')][_0xe2f5('0x6d')]({'where':{'id':_0x5735e1[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x4da6bc,null))['then'](function(_0x398986){if(_0x398986){_0x485eb1[_0xe2f5('0x48')]=_[_0xe2f5('0x46')](db['Disposition'][_0xe2f5('0x42')]);_0x485eb1[_0xe2f5('0x45')]=_[_0xe2f5('0x46')](_0x5735e1[_0xe2f5('0x45')]);_0x485eb1[_0xe2f5('0x50')]=_[_0xe2f5('0x47')](_0x485eb1[_0xe2f5('0x48')],_0x485eb1[_0xe2f5('0x45')]);_0x18d5fa[_0xe2f5('0x4a')]=_[_0xe2f5('0x47')](_0x485eb1['model'],qs[_0xe2f5('0x49')](_0x5735e1[_0xe2f5('0x45')][_0xe2f5('0x49')]));_0x18d5fa[_0xe2f5('0x4a')]=_0x18d5fa['attributes'][_0xe2f5('0x5e')]?_0x18d5fa[_0xe2f5('0x4a')]:_0x485eb1[_0xe2f5('0x48')];if(!_0x5735e1[_0xe2f5('0x45')][_0xe2f5('0x4b')](_0xe2f5('0x4c'))){_0x18d5fa['limit']=qs[_0xe2f5('0x32')](_0x5735e1[_0xe2f5('0x45')][_0xe2f5('0x32')]);_0x18d5fa[_0xe2f5('0x30')]=qs[_0xe2f5('0x30')](_0x5735e1['query'][_0xe2f5('0x30')]);}_0x18d5fa[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0x5735e1[_0xe2f5('0x45')][_0xe2f5('0x4e')]);_0x18d5fa['where']=qs[_0xe2f5('0x50')](_[_0xe2f5('0x51')](_0x5735e1[_0xe2f5('0x45')],_0x485eb1[_0xe2f5('0x50')]));_0x18d5fa[_0xe2f5('0x4f')][_0xe2f5('0x6b')]=_0x398986['id'];if(_0x5735e1[_0xe2f5('0x45')]['filter']){_0x18d5fa[_0xe2f5('0x4f')]=_['merge'](_0x18d5fa[_0xe2f5('0x4f')],{'$or':_[_0xe2f5('0x41')](_0x18d5fa[_0xe2f5('0x4a')],function(_0x16f428){var _0x1081bc={};_0x1081bc[_0x16f428]={'$like':'%'+_0x5735e1[_0xe2f5('0x45')][_0xe2f5('0x52')]+'%'};return _0x1081bc;})});}_0x18d5fa=_['merge']({},_0x18d5fa,_0x5735e1[_0xe2f5('0x56')]);return db[_0xe2f5('0x6e')][_0xe2f5('0x33')]({'where':_0x18d5fa[_0xe2f5('0x4f')]})['then'](function(_0x287c4d){_0x81618d[_0xe2f5('0x33')]=_0x287c4d;if(_0x5735e1['query'][_0xe2f5('0x58')]){_0x18d5fa[_0xe2f5('0x5f')]=[{'all':!![]}];}return db[_0xe2f5('0x6e')][_0xe2f5('0x59')](_0x18d5fa);})['then'](function(_0x3f325b){_0x81618d[_0xe2f5('0x5a')]=_0x3f325b;return _0x81618d;});}})[_0xe2f5('0x39')](respondWithFilteredResult(_0x4da6bc,_0x18d5fa))[_0xe2f5('0x2c')](handleError(_0x4da6bc,null));};exports[_0xe2f5('0x6f')]=function(_0x4219a0,_0x207d6d,_0x3dc745){return db[_0xe2f5('0x57')][_0xe2f5('0x60')]({'where':{'id':_0x4219a0['params']['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x207d6d,null))[_0xe2f5('0x39')](function(_0x35e351){if(_0x35e351){return _0x35e351[_0xe2f5('0x6f')](_0x4219a0[_0xe2f5('0x45')]['ids']);}})[_0xe2f5('0x39')](respondWithStatusCode(_0x207d6d,null))[_0xe2f5('0x2c')](handleError(_0x207d6d,null));};exports[_0xe2f5('0x70')]=function(_0x5d1334,_0x51c440,_0x3a4edd){if(_0x5d1334['body']['id']){delete _0x5d1334[_0xe2f5('0x62')]['id'];}return db['FaxAccount'][_0xe2f5('0x60')]({'where':{'id':_0x5d1334[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x51c440,null))['then'](function(_0x84da15){if(_0x84da15){_0x5d1334['body'][_0xe2f5('0x6b')]=_0x84da15['id'];return db[_0xe2f5('0x71')]['create'](_0x5d1334['body']);}})['then'](respondWithResult(_0x51c440,null))[_0xe2f5('0x2c')](handleError(_0x51c440,null));};exports[_0xe2f5('0x72')]=function(_0xb0db06,_0x48cdec,_0x1cf1c0){var _0x5b89ac={'raw':![],'where':{}};var _0x4765bd={};var _0x37b9df={'count':0x0,'rows':[]};return db[_0xe2f5('0x57')][_0xe2f5('0x6d')]({'where':{'id':_0xb0db06['params']['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x48cdec,null))[_0xe2f5('0x39')](function(_0x2eb497){if(_0x2eb497){_0x4765bd['model']=_[_0xe2f5('0x46')](db[_0xe2f5('0x71')][_0xe2f5('0x42')]);_0x4765bd[_0xe2f5('0x45')]=_[_0xe2f5('0x46')](_0xb0db06['query']);_0x4765bd[_0xe2f5('0x50')]=_[_0xe2f5('0x47')](_0x4765bd[_0xe2f5('0x48')],_0x4765bd['query']);_0x5b89ac[_0xe2f5('0x4a')]=_[_0xe2f5('0x47')](_0x4765bd['model'],qs['fields'](_0xb0db06[_0xe2f5('0x45')][_0xe2f5('0x49')]));_0x5b89ac['attributes']=_0x5b89ac[_0xe2f5('0x4a')][_0xe2f5('0x5e')]?_0x5b89ac[_0xe2f5('0x4a')]:_0x4765bd[_0xe2f5('0x48')];if(!_0xb0db06['query'][_0xe2f5('0x4b')](_0xe2f5('0x4c'))){_0x5b89ac[_0xe2f5('0x32')]=qs[_0xe2f5('0x32')](_0xb0db06[_0xe2f5('0x45')][_0xe2f5('0x32')]);_0x5b89ac['offset']=qs[_0xe2f5('0x30')](_0xb0db06['query'][_0xe2f5('0x30')]);}_0x5b89ac[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0xb0db06[_0xe2f5('0x45')][_0xe2f5('0x4e')]);_0x5b89ac['where']=qs[_0xe2f5('0x50')](_['pick'](_0xb0db06[_0xe2f5('0x45')],_0x4765bd[_0xe2f5('0x50')]));_0x5b89ac[_0xe2f5('0x4f')][_0xe2f5('0x6b')]=_0x2eb497['id'];if(_0xb0db06[_0xe2f5('0x45')]['filter']){_0x5b89ac[_0xe2f5('0x4f')]=_[_0xe2f5('0x53')](_0x5b89ac[_0xe2f5('0x4f')],{'$or':_[_0xe2f5('0x41')](_0x5b89ac[_0xe2f5('0x4a')],function(_0x4d543b){var _0x24ce15={};_0x24ce15[_0x4d543b]={'$like':'%'+_0xb0db06[_0xe2f5('0x45')]['filter']+'%'};return _0x24ce15;})});}_0x5b89ac=_['merge']({},_0x5b89ac,_0xb0db06[_0xe2f5('0x56')]);return db[_0xe2f5('0x71')][_0xe2f5('0x33')]({'where':_0x5b89ac[_0xe2f5('0x4f')]})['then'](function(_0x380ceb){_0x37b9df[_0xe2f5('0x33')]=_0x380ceb;if(_0xb0db06[_0xe2f5('0x45')]['includeAll']){_0x5b89ac[_0xe2f5('0x5f')]=[{'all':!![]}];}return db[_0xe2f5('0x71')][_0xe2f5('0x59')](_0x5b89ac);})[_0xe2f5('0x39')](function(_0x554cbc){_0x37b9df[_0xe2f5('0x5a')]=_0x554cbc;return _0x37b9df;});}})[_0xe2f5('0x39')](respondWithFilteredResult(_0x48cdec,_0x5b89ac))[_0xe2f5('0x2c')](handleError(_0x48cdec,null));};exports['removeAnswers']=function(_0x5646f3,_0x10262c,_0x2c1f26){return db[_0xe2f5('0x57')][_0xe2f5('0x60')]({'where':{'id':_0x5646f3[_0xe2f5('0x69')]['id']}})['then'](handleEntityNotFound(_0x10262c,null))[_0xe2f5('0x39')](function(_0xe6e57f){if(_0xe6e57f){return _0xe6e57f[_0xe2f5('0x73')](_0x5646f3['query'][_0xe2f5('0x74')]);}})[_0xe2f5('0x39')](respondWithStatusCode(_0x10262c,null))['catch'](handleError(_0x10262c,null));};exports[_0xe2f5('0x75')]=function(_0x545924,_0x2603d9,_0x46ec5b){return db['FaxInteraction'][_0xe2f5('0x60')]({'where':{'id':_0x545924[_0xe2f5('0x69')]['id']}})['then'](handleEntityNotFound(_0x2603d9,null))['then'](function(_0x2aafd9){if(_0x2aafd9){return _0x2aafd9[_0xe2f5('0x75')](_0x545924['body']['ids'],_[_0xe2f5('0x76')](_0x545924['body'],[_0xe2f5('0x74'),'id'])||{});}})[_0xe2f5('0x39')](respondWithResult(_0x2603d9,null))[_0xe2f5('0x2c')](handleError(_0x2603d9,null));};exports['getInteractions']=function(_0x1f4633,_0x141d64,_0x12c68b){var _0x10d334={'raw':![],'where':{}};var _0x41118b={};var _0x347194={'count':0x0,'rows':[]};return db[_0xe2f5('0x57')][_0xe2f5('0x6d')]({'where':{'id':_0x1f4633[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x141d64,null))[_0xe2f5('0x39')](function(_0x140c04){if(_0x140c04){_0x41118b[_0xe2f5('0x48')]=_[_0xe2f5('0x46')](db['FaxInteraction'][_0xe2f5('0x42')]);_0x41118b[_0xe2f5('0x45')]=_[_0xe2f5('0x46')](_0x1f4633[_0xe2f5('0x45')]);_0x41118b['filters']=_[_0xe2f5('0x47')](_0x41118b[_0xe2f5('0x48')],_0x41118b[_0xe2f5('0x45')]);_0x10d334[_0xe2f5('0x4a')]=_[_0xe2f5('0x47')](_0x41118b['model'],qs[_0xe2f5('0x49')](_0x1f4633[_0xe2f5('0x45')][_0xe2f5('0x49')]));_0x10d334[_0xe2f5('0x4a')]=_0x10d334[_0xe2f5('0x4a')][_0xe2f5('0x5e')]?_0x10d334[_0xe2f5('0x4a')]:_0x41118b[_0xe2f5('0x48')];if(!_0x1f4633['query'][_0xe2f5('0x4b')](_0xe2f5('0x4c'))){_0x10d334['limit']=qs[_0xe2f5('0x32')](_0x1f4633[_0xe2f5('0x45')][_0xe2f5('0x32')]);_0x10d334[_0xe2f5('0x30')]=qs[_0xe2f5('0x30')](_0x1f4633[_0xe2f5('0x45')]['offset']);}_0x10d334[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0x1f4633[_0xe2f5('0x45')][_0xe2f5('0x4e')]);_0x10d334[_0xe2f5('0x4f')]=qs[_0xe2f5('0x50')](_[_0xe2f5('0x51')](_0x1f4633[_0xe2f5('0x45')],_0x41118b[_0xe2f5('0x50')]));_0x10d334[_0xe2f5('0x4f')][_0xe2f5('0x6b')]=_0x140c04['id'];if(_0x1f4633[_0xe2f5('0x45')][_0xe2f5('0x52')]){_0x10d334[_0xe2f5('0x4f')]=_['merge'](_0x10d334[_0xe2f5('0x4f')],{'$or':_['map'](_0x10d334[_0xe2f5('0x4a')],function(_0x51ea1f){var _0x3ebf42={};_0x3ebf42[_0x51ea1f]={'$like':'%'+_0x1f4633['query'][_0xe2f5('0x52')]+'%'};return _0x3ebf42;})});}_0x10d334=_[_0xe2f5('0x53')]({},_0x10d334,_0x1f4633[_0xe2f5('0x56')]);return db[_0xe2f5('0x77')][_0xe2f5('0x33')]({'where':_0x10d334[_0xe2f5('0x4f')]})[_0xe2f5('0x39')](function(_0x37ba76){_0x347194['count']=_0x37ba76;if(_0x1f4633['query'][_0xe2f5('0x58')]){_0x10d334[_0xe2f5('0x5f')]=[{'model':db[_0xe2f5('0x78')],'as':'Contact','required':![]},{'model':db[_0xe2f5('0x79')],'as':_0xe2f5('0x7a'),'attributes':[_0xe2f5('0x3e'),'fullname',_0xe2f5('0x7b')],'required':![]},{'model':db[_0xe2f5('0x7c')],'as':_0xe2f5('0x7d'),'attributes':['id','name',_0xe2f5('0x7e')],'where':_0x1f4633[_0xe2f5('0x45')]['tag']?{'id':_0x1f4633[_0xe2f5('0x45')][_0xe2f5('0x7f')]}:undefined,'required':_0x1f4633[_0xe2f5('0x45')][_0xe2f5('0x7f')]?!![]:![]}];}return db[_0xe2f5('0x77')][_0xe2f5('0x59')](_0x10d334);})['then'](function(_0x2a911d){_0x347194[_0xe2f5('0x5a')]=_0x2a911d;return _0x347194;});}})['then'](respondWithFilteredResult(_0x141d64,_0x10d334))[_0xe2f5('0x2c')](handleError(_0x141d64,null));};exports[_0xe2f5('0x80')]=function(_0x6f08e3,_0x2150ba,_0x105f14){return db[_0xe2f5('0x57')]['findOne']({'where':{'id':_0x6f08e3[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x2150ba,null))['then'](function(_0x3b9893){if(_0x3b9893){return db[_0xe2f5('0x81')]['transaction'](function(_0x39127d){return db[_0xe2f5('0x82')][_0xe2f5('0x3a')]({'where':{'FaxAccountId':_0x6f08e3[_0xe2f5('0x69')]['id']},'transaction':_0x39127d})[_0xe2f5('0x39')](function(_0x56118c){var _0x1c19a5=_[_0xe2f5('0x41')](_0x6f08e3[_0xe2f5('0x62')],function(_0x36d316){_0x36d316[_0xe2f5('0x6b')]=_0x6f08e3[_0xe2f5('0x69')]['id'];return _0x36d316;});return db[_0xe2f5('0x82')][_0xe2f5('0x83')](_0x1c19a5,{'transaction':_0x39127d});});})[_0xe2f5('0x39')](function(){return db['FaxApplication']['findAndCountAll']({'where':{'FaxAccountId':_0x6f08e3[_0xe2f5('0x69')]['id']},'order':'priority'});});}})[_0xe2f5('0x39')](respondWithResult(_0x2150ba,null))[_0xe2f5('0x2c')](handleError(_0x2150ba,null));};exports['getApplications']=function(_0x582dd7,_0x4e00e4,_0x4241c6){var _0x3280cf={};var _0x35dbe9={};var _0x2f1cd3;var _0x491d69;return db[_0xe2f5('0x57')][_0xe2f5('0x6d')]({'where':{'id':_0x582dd7[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x4e00e4,null))[_0xe2f5('0x39')](function(_0xa5ac01){if(_0xa5ac01){_0x2f1cd3=_0xa5ac01;_0x35dbe9['model']=_[_0xe2f5('0x46')](db[_0xe2f5('0x82')][_0xe2f5('0x42')]);_0x35dbe9[_0xe2f5('0x45')]=_['keys'](_0x582dd7[_0xe2f5('0x45')]);_0x35dbe9['filters']=_[_0xe2f5('0x47')](_0x35dbe9[_0xe2f5('0x48')],_0x35dbe9[_0xe2f5('0x45')]);_0x3280cf['attributes']=_[_0xe2f5('0x47')](_0x35dbe9[_0xe2f5('0x48')],qs[_0xe2f5('0x49')](_0x582dd7[_0xe2f5('0x45')][_0xe2f5('0x49')]));_0x3280cf['attributes']=_0x3280cf[_0xe2f5('0x4a')][_0xe2f5('0x5e')]?_0x3280cf['attributes']:_0x35dbe9[_0xe2f5('0x48')];_0x3280cf[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0x582dd7['query']['sort']);_0x3280cf[_0xe2f5('0x4f')]=qs['filters'](_[_0xe2f5('0x51')](_0x582dd7['query'],_0x35dbe9[_0xe2f5('0x50')]));if(_0x582dd7[_0xe2f5('0x45')][_0xe2f5('0x52')]){_0x3280cf[_0xe2f5('0x4f')]=_[_0xe2f5('0x53')](_0x3280cf[_0xe2f5('0x4f')],{'$or':_[_0xe2f5('0x41')](_0x3280cf[_0xe2f5('0x4a')],function(_0xb4cf8f){var _0x39aac8={};_0x39aac8[_0xb4cf8f]={'$like':'%'+_0x582dd7['query']['filter']+'%'};return _0x39aac8;})});}_0x3280cf=_[_0xe2f5('0x53')]({},_0x3280cf,_0x582dd7[_0xe2f5('0x56')]);return _0x2f1cd3['getApplications'](_0x3280cf);}})[_0xe2f5('0x39')](function(_0x5b8cd6){if(_0x5b8cd6){_0x491d69=_0x5b8cd6['length'];if(!_0x582dd7[_0xe2f5('0x45')][_0xe2f5('0x4b')](_0xe2f5('0x4c'))){_0x3280cf['limit']=qs[_0xe2f5('0x32')](_0x582dd7['query'][_0xe2f5('0x32')]);_0x3280cf[_0xe2f5('0x30')]=qs[_0xe2f5('0x30')](_0x582dd7[_0xe2f5('0x45')][_0xe2f5('0x30')]);}return _0x2f1cd3[_0xe2f5('0x84')](_0x3280cf);}})[_0xe2f5('0x39')](function(_0x1097cc){if(_0x1097cc){return _0x1097cc?{'count':_0x491d69,'rows':_0x1097cc}:null;}})['then'](respondWithResult(_0x4e00e4,null))[_0xe2f5('0x2c')](handleError(_0x4e00e4,null));};function Extension(_0x423425,_0x465add,_0x56c296,_0xea5dc3){this['context']='from-voip-provider';this[_0xe2f5('0x85')]=_0x423425[_0xe2f5('0x86')];this['app']=_0xea5dc3;this[_0xe2f5('0x54')]='system';this[_0xe2f5('0x87')]=_0xe2f5('0x88');this[_0xe2f5('0x6b')]=_0x423425['id'];this[_0xe2f5('0x89')]=_0x465add;this[_0xe2f5('0x8a')]=_0x56c296;}function createExtensionsReciveFax(_0x5edae4){var _0x4c43d4=0x1;var _0x2907a9=[];_0x2907a9[_0xe2f5('0x8b')](new Extension(_0x5edae4,_0x4c43d4,'',_0xe2f5('0x8c')));_0x4c43d4+=0x1;_0x2907a9['push'](new Extension(_0x5edae4,_0x4c43d4,_0xe2f5('0x8d'),_0xe2f5('0x8e')));_0x4c43d4+=0x1;for(var _0x4938ff in _0x5edae4){if(_0x5edae4[_0xe2f5('0x4b')](_0x4938ff)&&(_0x4938ff===_0xe2f5('0x8f')||_0x4938ff==='localstationid'||_0x4938ff===_0xe2f5('0x90')||_0x4938ff===_0xe2f5('0x91')||_0x4938ff===_0xe2f5('0x92')||_0x4938ff==='maxrate'||_0x4938ff===_0xe2f5('0x93')||_0x4938ff===_0xe2f5('0x94')||_0x4938ff===_0xe2f5('0x95'))){_0x2907a9[_0xe2f5('0x8b')](new Extension(_0x5edae4,_0x4c43d4,_0xe2f5('0x96')+_0x4938ff+')='+_0x5edae4[_0x4938ff],_0xe2f5('0x8e')));_0x4c43d4+=0x1;}}_0x2907a9[_0xe2f5('0x8b')](new Extension(_0x5edae4,_0x4c43d4,'6',_0xe2f5('0x97')));_0x4c43d4+=0x1;_0x2907a9[_0xe2f5('0x8b')](new Extension(_0x5edae4,_0x4c43d4,_0xe2f5('0x98'),_0xe2f5('0x99')));_0x4c43d4=0x0;return _0x2907a9;}exports['addAccountApplications']=function(_0x17d1f4,_0x4c9015,_0x4fd3c2){var _0x2575cf;return db[_0xe2f5('0x81')][_0xe2f5('0x9a')](function(_0x508828){return db[_0xe2f5('0x57')][_0xe2f5('0x61')](_0x17d1f4[_0xe2f5('0x62')],{'transaction':_0x508828})[_0xe2f5('0x39')](function(_0x5a6854){_0x2575cf=_0x5a6854[_0xe2f5('0x3b')]({'plain':!![]});return db[_0xe2f5('0x9b')]['bulkCreate'](createExtensionsReciveFax(_0x2575cf),{'transaction':_0x508828});});})[_0xe2f5('0x39')](function(){return _0x2575cf;})[_0xe2f5('0x39')](respondWithResult(_0x4c9015,null))[_0xe2f5('0x2c')](handleError(_0x4c9015,null));};exports[_0xe2f5('0x9c')]=function(_0x4bf1db,_0x5eb522,_0x440ed3){var _0x4a779b;return db[_0xe2f5('0x81')][_0xe2f5('0x9a')](function(_0x3160a1){return db[_0xe2f5('0x57')]['update'](_0x4bf1db['body'],{'where':{'id':_0x4bf1db[_0xe2f5('0x62')]['id']},'transaction':_0x3160a1})[_0xe2f5('0x39')](function(_0x3c67cd){return db[_0xe2f5('0x9b')]['destroy']({'where':{'FaxAccountId':_0x4bf1db[_0xe2f5('0x62')]['id']},'transaction':_0x3160a1})[_0xe2f5('0x39')](function(_0x32c853){return db[_0xe2f5('0x9b')]['bulkCreate'](createExtensionsReciveFax(_[_0xe2f5('0x76')](_0x4bf1db[_0xe2f5('0x62')],['tech',_0xe2f5('0x44'),_0xe2f5('0x9d'),_0xe2f5('0x9e'),'TrunkId',_0xe2f5('0x9f')])),{'transaction':_0x3160a1});});});})[_0xe2f5('0x39')](function(){return db[_0xe2f5('0x57')][_0xe2f5('0xa0')](_0x4bf1db[_0xe2f5('0x62')]['id']);})['then'](respondWithResult(_0x5eb522,null))['catch'](handleError(_0x5eb522,null));};exports[_0xe2f5('0xa1')]=function(_0x2a78a9,_0x22c472,_0x30ec94){var _0x273954={'raw':!![],'where':{}};var _0x16260a={};var _0x576f5c={'count':0x0,'rows':[]};return db[_0xe2f5('0x57')][_0xe2f5('0x6d')]({'where':{'id':_0x2a78a9[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x22c472,null))[_0xe2f5('0x39')](function(_0x3a6307){if(_0x3a6307){_0x16260a[_0xe2f5('0x48')]=_[_0xe2f5('0x46')](db['FaxMessage'][_0xe2f5('0x42')]);_0x16260a[_0xe2f5('0x45')]=_[_0xe2f5('0x46')](_0x2a78a9[_0xe2f5('0x45')]);_0x16260a[_0xe2f5('0x50')]=_[_0xe2f5('0x47')](_0x16260a['model'],_0x16260a[_0xe2f5('0x45')]);_0x273954[_0xe2f5('0x4a')]=_['intersection'](_0x16260a[_0xe2f5('0x48')],qs[_0xe2f5('0x49')](_0x2a78a9[_0xe2f5('0x45')]['fields']));_0x273954[_0xe2f5('0x4a')]=_0x273954['attributes']['length']?_0x273954[_0xe2f5('0x4a')]:_0x16260a[_0xe2f5('0x48')];if(!_0x2a78a9[_0xe2f5('0x45')]['hasOwnProperty']('nolimit')){_0x273954[_0xe2f5('0x32')]=qs['limit'](_0x2a78a9[_0xe2f5('0x45')][_0xe2f5('0x32')]);_0x273954[_0xe2f5('0x30')]=qs[_0xe2f5('0x30')](_0x2a78a9[_0xe2f5('0x45')][_0xe2f5('0x30')]);}_0x273954[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0x2a78a9[_0xe2f5('0x45')][_0xe2f5('0x4e')]);_0x273954['where']=qs[_0xe2f5('0x50')](_[_0xe2f5('0x51')](_0x2a78a9['query'],_0x16260a[_0xe2f5('0x50')]));_0x273954[_0xe2f5('0x4f')]['FaxAccountId']=_0x3a6307['id'];if(_0x2a78a9[_0xe2f5('0x45')][_0xe2f5('0x52')]){_0x273954['where']=_[_0xe2f5('0x53')](_0x273954[_0xe2f5('0x4f')],{'$or':_[_0xe2f5('0x41')](_0x273954[_0xe2f5('0x4a')],function(_0x49c81d){var _0x1f7e99={};_0x1f7e99[_0x49c81d]={'$like':'%'+_0x2a78a9[_0xe2f5('0x45')][_0xe2f5('0x52')]+'%'};return _0x1f7e99;})});}if(_0x2a78a9[_0xe2f5('0x45')]['$gte']){var _0x448ee2=_0x2a78a9[_0xe2f5('0x45')]['$gte'][_0xe2f5('0xa2')](',');var _0x2f8539={};_0x2f8539[_0x448ee2[0x0]]={'$gte':moment(_0x448ee2[0x1])[_0xe2f5('0xa3')](_0xe2f5('0xa4'))};_0x273954[_0xe2f5('0x4f')]=_[_0xe2f5('0x53')](_0x273954[_0xe2f5('0x4f')],_0x2f8539);}_0x273954=_['merge']({},_0x273954,_0x2a78a9['options']);return db[_0xe2f5('0xa5')][_0xe2f5('0x33')]({'where':_0x273954[_0xe2f5('0x4f')]})['then'](function(_0x327c27){_0x576f5c[_0xe2f5('0x33')]=_0x327c27;if(_0x2a78a9['query'][_0xe2f5('0x58')]){_0x273954['include']=[{'all':!![]}];}return db[_0xe2f5('0xa5')]['findAll'](_0x273954);})[_0xe2f5('0x39')](function(_0x430c28){_0x576f5c[_0xe2f5('0x5a')]=_0x430c28;return _0x576f5c;});}})['then'](respondWithFilteredResult(_0x22c472,_0x273954))[_0xe2f5('0x2c')](handleError(_0x22c472,null));};exports[_0xe2f5('0x3f')]=function(_0x4d7cdf,_0x33c9a0,_0x42216a){var _0x1d8ca2,_0x48f1b9={},_0x2758c6;if(_0x4d7cdf['body']['to']){_0x2758c6=_0x4d7cdf['body']['to'][0x0];}return db[_0xe2f5('0x57')][_0xe2f5('0x60')]({'where':{'id':_0x4d7cdf[_0xe2f5('0x69')]['id']},'include':[{'model':db[_0xe2f5('0xa6')],'as':_0xe2f5('0xa7'),'include':[{'model':db[_0xe2f5('0x78')],'as':_0xe2f5('0xa8'),'where':{'fax':_0x2758c6},'limit':0x1,'order':[[_0xe2f5('0x9e'),_0xe2f5('0xa9')]]}]}]})[_0xe2f5('0x39')](handleEntityNotFound(_0x33c9a0,null))[_0xe2f5('0x39')](function(_0x131654){_0x1d8ca2=_0x131654;if(_0x4d7cdf[_0xe2f5('0x62')]['attachments']&&_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][_0xe2f5('0x5e')]){for(var _0x508d6d=0x0;_0x508d6d<_0x4d7cdf['body'][_0xe2f5('0xaa')]['length'];_0x508d6d+=0x1){_0x4d7cdf['body'][_0xe2f5('0xaa')][_0x508d6d]={'filename':_0x4d7cdf['body'][_0xe2f5('0xaa')][_0x508d6d][_0xe2f5('0x3e')],'id':_0x4d7cdf[_0xe2f5('0x62')]['attachments'][_0x508d6d]['id'],'path':path['join'](config['root'],_0xe2f5('0xab'),_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][_0x508d6d][_0xe2f5('0xac')])};}}return respondWithRpcPromise('CheckAfterSend',_0xe2f5('0xad'),{'FaxAccountId':_['isNil'](_0x4d7cdf[_0xe2f5('0x69')]['id'])?undefined:_0x4d7cdf['params']['id'],'path':_[_0xe2f5('0xae')](_0x4d7cdf['body'][_0xe2f5('0xaa')][0x0][_0xe2f5('0x7')])?undefined:_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][0x0][_0xe2f5('0x7')],'fax':_[_0xe2f5('0xae')](_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0])?undefined:_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0]},client9002);})[_0xe2f5('0x39')](function(){if(_0x1d8ca2){if(_[_0xe2f5('0xae')](_0x4d7cdf[_0xe2f5('0x62')]['from'])){_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaf')]=util[_0xe2f5('0xa3')](_0xe2f5('0xb0'),_0x1d8ca2[_0xe2f5('0x3e')],_0x1d8ca2[_0xe2f5('0xb1')]);}if(_0x1d8ca2['List']){if(_0x1d8ca2['List'][_0xe2f5('0xa8')][_0xe2f5('0x5e')]){return _0x1d8ca2[_0xe2f5('0xa7')][_0xe2f5('0xa8')][0x0];}else{return db[_0xe2f5('0x78')][_0xe2f5('0x61')](_[_0xe2f5('0x19')](_0x4d7cdf[_0xe2f5('0x62')],{'firstName':_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0],'phone':_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0],'fax':_0x4d7cdf['body']['to'][0x0],'ListId':_0x1d8ca2[_0xe2f5('0x9f')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xe2f5('0xb2'));}})['then'](function(_0x64c6ae){if(_0x64c6ae){return db['FaxInteraction'][_0xe2f5('0x60')]({'where':{'ContactId':_0x64c6ae['id'],'closed':![],'FaxAccountId':_0x1d8ca2['id']}})['then'](function(_0x4b254d){if(_0x4b254d){return[_0x4b254d,![]];}return db[_0xe2f5('0x77')]['create']({'UserId':_0x4d7cdf['user']['id'],'ContactId':_0x64c6ae['id'],'FaxAccountId':_0x1d8ca2['id'],'fax':_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0],'firstMsgDirection':_0xe2f5('0xb3'),'Messages':[_[_0xe2f5('0x53')](_0x4d7cdf[_0xe2f5('0x62')],{'read':![],'body':_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][0x0][_0xe2f5('0xb4')],'FaxAccountId':_0x1d8ca2['id'],'UserId':_0x4d7cdf[_0xe2f5('0xb5')]['id'],'ContactId':_0x64c6ae['id'],'AttachmentId':_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0xe2f5('0xb6')}]})[_0xe2f5('0x39')](function(_0x4a2bee){return[_0x4a2bee,!![]];});});}else{throw new Error(_0xe2f5('0xb7'));}})[_0xe2f5('0xb8')](function(_0x5a19a3,_0x2ade1f){if(_0x2ade1f){return _0x5a19a3;}return db[_0xe2f5('0xa5')][_0xe2f5('0x61')]({'direction':_0xe2f5('0xb3'),'read':![],'body':_0x4d7cdf['body'][_0xe2f5('0xaa')][0x0][_0xe2f5('0xb4')],'FaxAccountId':_0x1d8ca2['id'],'FaxInteractionId':_0x5a19a3['id'],'UserId':_0x4d7cdf[_0xe2f5('0xb5')]['id'],'ContactId':_0x5a19a3['ContactId'],'AttachmentId':_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][0x0]['id']})[_0xe2f5('0x39')](function(_0x10e094){_0x5a19a3[_0xe2f5('0xb9')][_0xe2f5('0xb6')]=[];_0x5a19a3[_0xe2f5('0xb9')][_0xe2f5('0xb6')][_0xe2f5('0x8b')](_0x10e094[_0xe2f5('0xb9')]);return _0x5a19a3;});})[_0xe2f5('0x39')](function(_0x38c90b){respondWithRpcPromise('SendFax',_0xe2f5('0xba'),{'FaxAccountId':_[_0xe2f5('0xae')](_0x4d7cdf['params']['id'])?undefined:_0x4d7cdf[_0xe2f5('0x69')]['id'],'path':_[_0xe2f5('0xae')](_0x4d7cdf[_0xe2f5('0x62')][_0xe2f5('0xaa')][0x0][_0xe2f5('0x7')])?undefined:_0x4d7cdf['body'][_0xe2f5('0xaa')][0x0][_0xe2f5('0x7')],'fax':_[_0xe2f5('0xae')](_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0])?undefined:_0x4d7cdf[_0xe2f5('0x62')]['to'][0x0],'AttachmentId':_0x4d7cdf['body']['attachments'][0x0]['id']},client9002)['then'](function(_0x52cb60){logger[_0xe2f5('0x23')](_0xe2f5('0xbb'),_0x52cb60);})[_0xe2f5('0x2c')](function(_0x1681bc){logger[_0xe2f5('0x23')](_0xe2f5('0xbb'),_0x1681bc);});return _0x38c90b;})[_0xe2f5('0x39')](respondWithResult(_0x33c9a0,null))[_0xe2f5('0x2c')](handleError(_0x33c9a0,null));};exports[_0xe2f5('0xbc')]=function(_0x37946b,_0x4697f8,_0x21c6aa){return db['FaxAccount'][_0xe2f5('0x60')]({'where':{'id':_0x37946b[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x4697f8,null))[_0xe2f5('0x39')](function(_0x1727ce){if(_0x1727ce){return _0x1727ce[_0xe2f5('0xbc')](_0x37946b[_0xe2f5('0x62')][_0xe2f5('0x74')],_[_0xe2f5('0x76')](_0x37946b[_0xe2f5('0x62')],[_0xe2f5('0x74'),'id'])||{})[_0xe2f5('0xb8')](function(_0x47c4a5){for(var _0x11567b=0x0;_0x11567b<_0x37946b[_0xe2f5('0x62')][_0xe2f5('0x74')][_0xe2f5('0x5e')];_0x11567b+=0x1){socket[_0xe2f5('0xbd')](_0xe2f5('0xbe'),{'UserId':Number(_0x37946b[_0xe2f5('0x62')][_0xe2f5('0x74')][_0x11567b]),'FaxAccountId':Number(_0x37946b['params']['id'])});}return _0x47c4a5;});}})[_0xe2f5('0x39')](respondWithResult(_0x4697f8,null))[_0xe2f5('0x2c')](handleError(_0x4697f8,null));};exports[_0xe2f5('0xbf')]=function(_0x4b0daa,_0x2a97c9,_0x388bbf){return db[_0xe2f5('0x57')][_0xe2f5('0x60')]({'where':{'id':_0x4b0daa[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x2a97c9,null))[_0xe2f5('0x39')](function(_0x1e14fd){if(_0x1e14fd){return _0x1e14fd[_0xe2f5('0xbf')](_0x4b0daa[_0xe2f5('0x45')][_0xe2f5('0x74')])['then'](function(){if(_[_0xe2f5('0xc0')](_0x4b0daa[_0xe2f5('0x45')][_0xe2f5('0x74')])){for(var _0x4871c0=0x0;_0x4871c0<_0x4b0daa['query']['ids'][_0xe2f5('0x5e')];_0x4871c0+=0x1){socket['emit'](_0xe2f5('0xc1'),{'UserId':Number(_0x4b0daa[_0xe2f5('0x45')][_0xe2f5('0x74')][_0x4871c0]),'FaxAccountId':Number(_0x4b0daa[_0xe2f5('0x69')]['id'])});}}else{socket[_0xe2f5('0xbd')](_0xe2f5('0xc1'),{'UserId':Number(_0x4b0daa[_0xe2f5('0x45')][_0xe2f5('0x74')]),'FaxAccountId':Number(_0x4b0daa[_0xe2f5('0x69')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a97c9,null))['catch'](handleError(_0x2a97c9,null));};exports[_0xe2f5('0xc2')]=function(_0x1df318,_0x4519d7,_0x34e9b2){var _0x3d34c6={};var _0x167d53={};var _0x2d7a6d;var _0x374ae7;return db[_0xe2f5('0x57')][_0xe2f5('0x6d')]({'where':{'id':_0x1df318[_0xe2f5('0x69')]['id']}})[_0xe2f5('0x39')](handleEntityNotFound(_0x4519d7,null))[_0xe2f5('0x39')](function(_0x218bed){if(_0x218bed){_0x2d7a6d=_0x218bed;_0x167d53[_0xe2f5('0x48')]=_[_0xe2f5('0x46')](db[_0xe2f5('0x79')][_0xe2f5('0x42')]);_0x167d53[_0xe2f5('0x45')]=_[_0xe2f5('0x46')](_0x1df318[_0xe2f5('0x45')]);_0x167d53['filters']=_[_0xe2f5('0x47')](_0x167d53[_0xe2f5('0x48')],_0x167d53['query']);_0x3d34c6['attributes']=_[_0xe2f5('0x47')](_0x167d53[_0xe2f5('0x48')],qs[_0xe2f5('0x49')](_0x1df318[_0xe2f5('0x45')]['fields']));_0x3d34c6[_0xe2f5('0x4a')]=_0x3d34c6['attributes'][_0xe2f5('0x5e')]?_0x3d34c6[_0xe2f5('0x4a')]:_0x167d53[_0xe2f5('0x48')];_0x3d34c6[_0xe2f5('0x4d')]=qs[_0xe2f5('0x4e')](_0x1df318[_0xe2f5('0x45')]['sort']);_0x3d34c6['where']=qs[_0xe2f5('0x50')](_[_0xe2f5('0x51')](_0x1df318[_0xe2f5('0x45')],_0x167d53[_0xe2f5('0x50')]));if(_0x1df318[_0xe2f5('0x45')][_0xe2f5('0x52')]){_0x3d34c6['where']=_[_0xe2f5('0x53')](_0x3d34c6[_0xe2f5('0x4f')],{'$or':_['map'](_0x3d34c6[_0xe2f5('0x4a')],function(_0x4c0539){var _0x31e628={};_0x31e628[_0x4c0539]={'$like':'%'+_0x1df318[_0xe2f5('0x45')][_0xe2f5('0x52')]+'%'};return _0x31e628;})});}_0x3d34c6=_[_0xe2f5('0x53')]({},_0x3d34c6,_0x1df318[_0xe2f5('0x56')]);return _0x2d7a6d[_0xe2f5('0xc2')](_0x3d34c6);}})[_0xe2f5('0x39')](function(_0x30b107){if(_0x30b107){_0x374ae7=_0x30b107[_0xe2f5('0x5e')];if(!_0x1df318[_0xe2f5('0x45')]['hasOwnProperty'](_0xe2f5('0x4c'))){_0x3d34c6['limit']=qs[_0xe2f5('0x32')](_0x1df318[_0xe2f5('0x45')][_0xe2f5('0x32')]);_0x3d34c6[_0xe2f5('0x30')]=qs[_0xe2f5('0x30')](_0x1df318[_0xe2f5('0x45')][_0xe2f5('0x30')]);}return _0x2d7a6d[_0xe2f5('0xc2')](_0x3d34c6);}})[_0xe2f5('0x39')](function(_0x203f03){if(_0x203f03){return _0x203f03?{'count':_0x374ae7,'rows':_0x203f03}:null;}})[_0xe2f5('0x39')](respondWithResult(_0x4519d7,null))[_0xe2f5('0x2c')](handleError(_0x4519d7,null));};
\ No newline at end of file
index 8a1dd03..fb79d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc359=['remove','hasOwnProperty','hook','events','FaxAccount','setMaxListeners','save','update'];(function(_0x17077b,_0x402caf){var _0x41c6fd=function(_0x344071){while(--_0x344071){_0x17077b['push'](_0x17077b['shift']());}};_0x41c6fd(++_0x402caf);}(_0xc359,0x93));var _0x9c35=function(_0x3c1b2d,_0x23b1b9){_0x3c1b2d=_0x3c1b2d-0x0;var _0x412475=_0xc359[_0x3c1b2d];return _0x412475;};'use strict';var EventEmitter=require(_0x9c35('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x9c35('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9c35('0x2')](0x0);var events={'afterCreate':_0x9c35('0x3'),'afterUpdate':_0x9c35('0x4'),'afterDestroy':_0x9c35('0x5')};function emitEvent(_0x2d26bc){return function(_0x4add6d,_0x3a9320,_0x5f601e){FaxAccountEvents['emit'](_0x2d26bc+':'+_0x4add6d['id'],_0x4add6d);FaxAccountEvents['emit'](_0x2d26bc,_0x4add6d);_0x5f601e(null);};}for(var e in events){if(events[_0x9c35('0x6')](e)){var event=events[e];FaxAccount[_0x9c35('0x7')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0xdd6a=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0xc3b3ec,_0x49f3c8){var _0x8cd97=function(_0x583afa){while(--_0x583afa){_0xc3b3ec['push'](_0xc3b3ec['shift']());}};_0x8cd97(++_0x49f3c8);}(_0xdd6a,0x15d));var _0xadd6=function(_0x12dd11,_0x52b882){_0x12dd11=_0x12dd11-0x0;var _0x3a502b=_0xdd6a[_0x12dd11];return _0x3a502b;};'use strict';var EventEmitter=require(_0xadd6('0x0'));var FaxAccount=require(_0xadd6('0x1'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xadd6('0x2')](0x0);var events={'afterCreate':_0xadd6('0x3'),'afterUpdate':_0xadd6('0x4'),'afterDestroy':_0xadd6('0x5')};function emitEvent(_0x5df8af){return function(_0xceb59a,_0x395648,_0x2885e8){FaxAccountEvents[_0xadd6('0x6')](_0x5df8af+':'+_0xceb59a['id'],_0xceb59a);FaxAccountEvents[_0xadd6('0x6')](_0x5df8af,_0xceb59a);_0x2885e8(null);};}for(var e in events){if(events[_0xadd6('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0xadd6('0x8')]=FaxAccountEvents;
\ No newline at end of file
index e775904..6aabd03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ea=['request-promise','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash','util','../../config/logger','bluebird'];(function(_0x377217,_0x26b013){var _0x26258d=function(_0x1e1894){while(--_0x1e1894){_0x377217['push'](_0x377217['shift']());}};_0x26258d(++_0x26b013);}(_0xd0ea,0x172));var _0xad0e=function(_0x187684,_0x131dd4){_0x187684=_0x187684-0x0;var _0x393c49=_0xd0ea[_0x187684];return _0x393c49;};'use strict';var _=require(_0xad0e('0x0'));var util=require(_0xad0e('0x1'));var logger=require(_0xad0e('0x2'))('api');var moment=require('moment');var BPromise=require(_0xad0e('0x3'));var rp=require(_0xad0e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xad0e('0x5'));var config=require(_0xad0e('0x6'));var attributes=require(_0xad0e('0x7'));module[_0xad0e('0x8')]=function(_0x18eafd,_0x1c0909){return _0x18eafd['define'](_0xad0e('0x9'),attributes,{'tableName':_0xad0e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9aa8=['exports','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./faxAccount.attributes'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9aa8,0x19b));var _0x89aa=function(_0x28df91,_0x1c26ad){_0x28df91=_0x28df91-0x0;var _0x422c58=_0x9aa8[_0x28df91];return _0x422c58;};'use strict';var _=require(_0x89aa('0x0'));var util=require(_0x89aa('0x1'));var logger=require(_0x89aa('0x2'))(_0x89aa('0x3'));var moment=require(_0x89aa('0x4'));var BPromise=require(_0x89aa('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x89aa('0x6'));var rimraf=require(_0x89aa('0x7'));var config=require('../../config/environment');var attributes=require(_0x89aa('0x8'));module[_0x89aa('0x9')]=function(_0x16a7e4,_0x3b9d85){return _0x16a7e4['define'](_0x89aa('0xa'),attributes,{'tableName':_0x89aa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb79ccc..b53ec2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0212=['socket.io-emitter','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','FaxAccount','findAll','options','raw','where','limit','include','map','model','attributes','GetFaxAccount','stringify','NotifyFaxAccount','fax','CmContact','describe','keys','createdAt','updatedAt','difference','CompanyId','ListId','body','isNil','from','Sequelize','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','find','account','CmList','Contacts','DESC','FaxApplication','Applications','List','get','applications','list','orderBy','priority','asc','length','contact','FaxInteraction','create','Contact\x20not\x20found','spread','autoclose','close','unmanaged','*,*,*,*','interaction','AttachmentId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults'];(function(_0x1da289,_0x417651){var _0x41c889=function(_0x2cea8c){while(--_0x2cea8c){_0x1da289['push'](_0x1da289['shift']());}};_0x41c889(++_0x417651);}(_0x0212,0x106));var _0x2021=function(_0xaf29da,_0x117f5a){_0xaf29da=_0xaf29da-0x0;var _0x295c51=_0x0212[_0xaf29da];return _0x295c51;};'use strict';var _=require(_0x2021('0x0'));var util=require(_0x2021('0x1'));var moment=require('moment');var BPromise=require(_0x2021('0x2'));var rs=require(_0x2021('0x3'));var fs=require('fs');var Redis=require(_0x2021('0x4'));var db=require(_0x2021('0x5'))['db'];var utils=require(_0x2021('0x6'));var logger=require(_0x2021('0x7'))(_0x2021('0x8'));var config=require(_0x2021('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2021('0xa')][_0x2021('0xb')]({'port':0x232c});config[_0x2021('0xc')]=_[_0x2021('0xd')](config[_0x2021('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x2021('0xe'))(new Redis(config[_0x2021('0xc')]));require('./faxAccount.socket')[_0x2021('0xf')](socket);function respondWithRpcPromise(_0xda743,_0x18aeee,_0x3a1660){return new BPromise(function(_0x1b3485,_0x2ed737){return client['request'](_0xda743,_0x3a1660)[_0x2021('0x10')](function(_0x34d77a){logger[_0x2021('0x11')](_0x2021('0x12'),_0x18aeee,_0x2021('0x13'));logger[_0x2021('0x14')](_0x2021('0x15'),_0x18aeee,_0x2021('0x13'),JSON['stringify'](_0x34d77a));if(_0x34d77a[_0x2021('0x16')]){if(_0x34d77a['error'][_0x2021('0x17')]===0x1f4){logger[_0x2021('0x16')](_0x2021('0x12'),_0x18aeee,_0x34d77a[_0x2021('0x16')]['message']);return _0x2ed737(_0x34d77a[_0x2021('0x16')][_0x2021('0x18')]);}logger[_0x2021('0x16')](_0x2021('0x12'),_0x18aeee,_0x34d77a[_0x2021('0x16')][_0x2021('0x18')]);return _0x1b3485(_0x34d77a[_0x2021('0x16')][_0x2021('0x18')]);}else{logger[_0x2021('0x11')](_0x2021('0x12'),_0x18aeee,_0x2021('0x13'));_0x1b3485(_0x34d77a[_0x2021('0x19')][_0x2021('0x18')]);}})[_0x2021('0x1a')](function(_0x158bd7){logger[_0x2021('0x16')](_0x2021('0x12'),_0x18aeee,_0x158bd7);_0x2ed737(_0x158bd7);});});}exports['GetFaxAccount']=function(_0x20abf1){var _0x32884c=this;return new Promise(function(_0x4a3d78,_0x1af14c){return db[_0x2021('0x1b')][_0x2021('0x1c')]({'raw':_0x20abf1['options']?_0x20abf1[_0x2021('0x1d')][_0x2021('0x1e')]===undefined?!![]:![]:!![],'where':_0x20abf1[_0x2021('0x1d')]?_0x20abf1['options'][_0x2021('0x1f')]||null:null,'attributes':_0x20abf1[_0x2021('0x1d')]?_0x20abf1[_0x2021('0x1d')]['attributes']||null:null,'limit':_0x20abf1['options']?_0x20abf1[_0x2021('0x1d')][_0x2021('0x20')]||null:null,'include':_0x20abf1[_0x2021('0x1d')]?_0x20abf1[_0x2021('0x1d')][_0x2021('0x21')]?_[_0x2021('0x22')](_0x20abf1[_0x2021('0x1d')]['include'],function(_0x5623fc){return{'model':db[_0x5623fc[_0x2021('0x23')]],'as':_0x5623fc['as'],'attributes':_0x5623fc[_0x2021('0x24')],'include':_0x5623fc[_0x2021('0x21')]?_[_0x2021('0x22')](_0x5623fc[_0x2021('0x21')],function(_0x6b1add){return{'model':db[_0x6b1add[_0x2021('0x23')]],'as':_0x6b1add['as'],'attributes':_0x6b1add[_0x2021('0x24')],'include':_0x6b1add[_0x2021('0x21')]?_[_0x2021('0x22')](_0x6b1add[_0x2021('0x21')],function(_0x1d88f7){return{'model':db[_0x1d88f7[_0x2021('0x23')]],'as':_0x1d88f7['as'],'attributes':_0x1d88f7[_0x2021('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2cd2d){logger[_0x2021('0x11')](_0x2021('0x25'),_0x20abf1);logger['debug']('GetFaxAccount',_0x20abf1,JSON[_0x2021('0x26')](_0x2cd2d));_0x4a3d78(_0x2cd2d);})['catch'](function(_0x4ef688){logger[_0x2021('0x16')](_0x2021('0x25'),_0x4ef688[_0x2021('0x18')],_0x20abf1);_0x1af14c(_0x32884c[_0x2021('0x16')](0x1f4,_0x4ef688[_0x2021('0x18')]));});});};exports[_0x2021('0x27')]=function(_0x319000,_0x29af30,_0xcb72e7){var _0x490cb8=this;return new Promise(function(_0x4cb000,_0x58589b){var _0x508588={'body':_0x319000['body'],'channel':_0x2021('0x28')};var _0x42495a=[];var _0x49877f=[];var _0x1f3223={};return db[_0x2021('0x29')][_0x2021('0x2a')]()[_0x2021('0x10')](function(_0x26e355){if(!_0x26e355){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x42495a=_['difference'](_[_0x2021('0x2b')](_0x26e355),[_0x2021('0x2c'),_0x2021('0x2d')]);_0x49877f=_[_0x2021('0x2e')](_['keys'](_0x26e355),['createdAt',_0x2021('0x2d'),_0x2021('0x2f'),_0x2021('0x30')]);if(_0x319000[_0x2021('0x31')]['id']){delete _0x319000[_0x2021('0x31')]['id'];}if(_[_0x2021('0x32')](_0x319000[_0x2021('0x31')][_0x2021('0x33')])){throw new db[(_0x2021('0x34'))]['ValidationError'](_0x2021('0x35'));}if(_[_0x2021('0x32')](_0x319000['body'][_0x2021('0x31')])||_0x319000[_0x2021('0x31')][_0x2021('0x31')]===''){throw new db[(_0x2021('0x34'))][(_0x2021('0x36'))](_0x2021('0x37'));}if(_['isNil'](_0x319000[_0x2021('0x31')]['mapKey'])){throw new db[(_0x2021('0x34'))]['ValidationError'](_0x2021('0x38')+_0x49877f);}if(!_[_0x2021('0x39')](_0x49877f,_0x319000[_0x2021('0x31')]['mapKey'])){throw new db[(_0x2021('0x34'))][(_0x2021('0x36'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49877f);}_0x1f3223[_0x319000[_0x2021('0x31')][_0x2021('0x3a')]]=_0x319000[_0x2021('0x31')][_0x2021('0x33')];})[_0x2021('0x10')](function(){return db[_0x2021('0x1b')][_0x2021('0x3b')]({'where':{'id':_0x319000[_0x2021('0x3c')]['id']},'include':[{'model':db[_0x2021('0x3d')],'as':'List','include':[{'model':db[_0x2021('0x29')],'as':_0x2021('0x3e'),'where':_0x1f3223,'limit':0x1,'order':[[_0x2021('0x2d'),_0x2021('0x3f')]]}]},{'model':db[_0x2021('0x40')],'as':_0x2021('0x41')}]});})['then'](function(_0x596836){if(_0x596836&&_0x596836[_0x2021('0x42')]){var _0x2343e2=_0x596836[_0x2021('0x43')]({'plain':!![]});_0x508588[_0x2021('0x3c')]=_0x2343e2;_0x508588[_0x2021('0x44')]=_0x2343e2['Applications'];_0x508588[_0x2021('0x45')]=_0x2343e2[_0x2021('0x42')];_0x508588[_0x2021('0x44')]=_[_0x2021('0x46')](_0x508588['applications'],[_0x2021('0x47')],[_0x2021('0x48')]);if(_0x508588[_0x2021('0x3c')][_0x2021('0x41')]){delete _0x508588[_0x2021('0x3c')][_0x2021('0x41')];}if(_0x508588[_0x2021('0x3c')][_0x2021('0x42')]&&_0x508588[_0x2021('0x3c')][_0x2021('0x42')][_0x2021('0x3e')][_0x2021('0x49')]){return _0x508588[_0x2021('0x3c')][_0x2021('0x42')][_0x2021('0x3e')][0x0];}var _0x170057=_['defaults'](_0x319000[_0x2021('0x31')],{'firstName':_0x319000[_0x2021('0x31')][_0x2021('0x33')],'ListId':_0x2343e2[_0x2021('0x30')]});_0x170057[_0x319000[_0x2021('0x31')][_0x2021('0x3a')]]=_0x319000['body'][_0x2021('0x33')];return db[_0x2021('0x29')]['create'](_0x170057,{'fields':_0x42495a,'raw':!![]});}})[_0x2021('0x10')](function(_0x36a207){_0x508588[_0x2021('0x4a')]=_0x36a207;if(_0x36a207){var _0x3f1c7a={'ContactId':_0x36a207['id'],'FaxAccountId':_0x319000[_0x2021('0x3c')]['id'],'fax':_0x36a207[_0x2021('0x28')]};return db[_0x2021('0x4b')][_0x2021('0x3b')]({'where':{'ContactId':_0x36a207['id'],'closed':![],'FaxAccountId':_0x319000['account']['id']}})[_0x2021('0x10')](function(_0x355570){if(_0x355570){return[_0x355570,![]];}return db[_0x2021('0x4b')][_0x2021('0x4c')](_0x3f1c7a)[_0x2021('0x10')](function(_0x233246){return[_0x233246,!![]];});});}else{throw new Error(_0x2021('0x4d'));}})[_0x2021('0x4e')](function(_0x7e64d3,_0x30b2e1){var _0x2a899a=_0x7e64d3[_0x2021('0x43')]({'plain':!![]});if(_0x30b2e1){if(_0x508588[_0x2021('0x3c')][_0x2021('0x4f')]){_0x508588['applications']['push']({'id':0x0,'priority':_0x508588[_0x2021('0x44')]['length']+0x1,'app':_0x2021('0x50'),'appdata':_0x2021('0x51'),'interval':_0x2021('0x52')});}_0x2a899a['created']=!![];}else{_0x2a899a['created']=![];}_0x508588[_0x2021('0x53')]=_0x2a899a;return db['FaxMessage'][_0x2021('0x4c')]({'body':_0x319000[_0x2021('0x31')][_0x2021('0x31')],'FaxAccountId':_0x319000['account']['id'],'FaxInteractionId':_0x7e64d3['id'],'direction':'in','ContactId':_0x7e64d3['ContactId'],'AttachmentId':_0x319000['body'][_0x2021('0x54')]});})[_0x2021('0x10')](function(_0x399b3c){_0x508588[_0x2021('0x18')]=_0x399b3c;if(_0x508588[_0x2021('0x53')]['UserId']){return db[_0x2021('0x55')][_0x2021('0x3b')]({'attributes':['id',_0x2021('0x56')],'where':{'id':_0x508588['interaction']['UserId']}})['then'](function(_0x34d267){if(_0x34d267){_0x508588[_0x2021('0x44')][_0x2021('0x57')]({'id':0x0,'priority':0x0,'app':_0x2021('0x58'),'appdata':_0x34d267[_0x2021('0x56')]+','+(_0x508588[_0x2021('0x3c')][_0x2021('0x59')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x2021('0x5a'),_0x2021('0x5b'),_0x508588);});}return respondWithRpcPromise(_0x2021('0x5a'),_0x2021('0x5b'),_0x508588);})[_0x2021('0x10')](function(_0x56f9d8){_0x4cb000(_0x56f9d8);})[_0x2021('0x1a')](function(_0x165d2b){_0x58589b(_0x490cb8[_0x2021('0x16')](0x1f4,_0x165d2b[_0x2021('0x18')]));});});};
\ No newline at end of file
+var _0x86a0=['updatedAt','ListId','isNil','from','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','find','account','CmList','List','Contacts','FaxApplication','get','applications','Applications','orderBy','length','FaxInteraction','create','Contact\x20not\x20found','spread','autoclose','push','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','User','name','UserId','agent','waitForTheAssignedAgent','Start','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','./faxAccount.socket','register','request','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','FaxAccount','findAll','options','raw','where','attributes','limit','include','model','map','then','GetFaxAccount','NotifyFaxAccount','body','fax','CmContact','describe','ValidationError','difference','createdAt'];(function(_0xbdf03f,_0x595215){var _0x2bbe9e=function(_0x59fbd4){while(--_0x59fbd4){_0xbdf03f['push'](_0xbdf03f['shift']());}};_0x2bbe9e(++_0x595215);}(_0x86a0,0x7c));var _0x086a=function(_0x2deab6,_0x22f6ef){_0x2deab6=_0x2deab6-0x0;var _0x2a5c75=_0x86a0[_0x2deab6];return _0x2a5c75;};'use strict';var _=require(_0x086a('0x0'));var util=require(_0x086a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x086a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x086a('0x3'))['db'];var utils=require(_0x086a('0x4'));var logger=require(_0x086a('0x5'))(_0x086a('0x6'));var config=require(_0x086a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x086a('0x8')][_0x086a('0x9')]({'port':0x232c});config[_0x086a('0xa')]=_[_0x086a('0xb')](config[_0x086a('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x086a('0xa')]));require(_0x086a('0xc'))[_0x086a('0xd')](socket);function respondWithRpcPromise(_0x4c749d,_0x1e4a8f,_0x2377ba){return new BPromise(function(_0xaeea0f,_0x15b118){return client[_0x086a('0xe')](_0x4c749d,_0x2377ba)['then'](function(_0xd925e5){logger[_0x086a('0xf')]('FaxAccount,\x20%s,\x20%s',_0x1e4a8f,'request\x20sent');logger[_0x086a('0x10')](_0x086a('0x11'),_0x1e4a8f,_0x086a('0x12'),JSON[_0x086a('0x13')](_0xd925e5));if(_0xd925e5[_0x086a('0x14')]){if(_0xd925e5[_0x086a('0x14')][_0x086a('0x15')]===0x1f4){logger[_0x086a('0x14')](_0x086a('0x16'),_0x1e4a8f,_0xd925e5[_0x086a('0x14')]['message']);return _0x15b118(_0xd925e5['error'][_0x086a('0x17')]);}logger['error'](_0x086a('0x16'),_0x1e4a8f,_0xd925e5[_0x086a('0x14')][_0x086a('0x17')]);return _0xaeea0f(_0xd925e5[_0x086a('0x14')]['message']);}else{logger[_0x086a('0xf')](_0x086a('0x16'),_0x1e4a8f,_0x086a('0x12'));_0xaeea0f(_0xd925e5[_0x086a('0x18')][_0x086a('0x17')]);}})[_0x086a('0x19')](function(_0x21cfa2){logger['error'](_0x086a('0x16'),_0x1e4a8f,_0x21cfa2);_0x15b118(_0x21cfa2);});});}exports['GetFaxAccount']=function(_0x38de2d){var _0xf5de85=this;return new Promise(function(_0x71b561,_0x5bfb98){return db[_0x086a('0x1a')][_0x086a('0x1b')]({'raw':_0x38de2d[_0x086a('0x1c')]?_0x38de2d[_0x086a('0x1c')][_0x086a('0x1d')]===undefined?!![]:![]:!![],'where':_0x38de2d[_0x086a('0x1c')]?_0x38de2d['options'][_0x086a('0x1e')]||null:null,'attributes':_0x38de2d[_0x086a('0x1c')]?_0x38de2d[_0x086a('0x1c')][_0x086a('0x1f')]||null:null,'limit':_0x38de2d[_0x086a('0x1c')]?_0x38de2d[_0x086a('0x1c')][_0x086a('0x20')]||null:null,'include':_0x38de2d[_0x086a('0x1c')]?_0x38de2d[_0x086a('0x1c')][_0x086a('0x21')]?_['map'](_0x38de2d['options']['include'],function(_0x5b976b){return{'model':db[_0x5b976b[_0x086a('0x22')]],'as':_0x5b976b['as'],'attributes':_0x5b976b[_0x086a('0x1f')],'include':_0x5b976b[_0x086a('0x21')]?_[_0x086a('0x23')](_0x5b976b[_0x086a('0x21')],function(_0x8fdc54){return{'model':db[_0x8fdc54[_0x086a('0x22')]],'as':_0x8fdc54['as'],'attributes':_0x8fdc54['attributes'],'include':_0x8fdc54['include']?_[_0x086a('0x23')](_0x8fdc54[_0x086a('0x21')],function(_0x41b408){return{'model':db[_0x41b408[_0x086a('0x22')]],'as':_0x41b408['as'],'attributes':_0x41b408['attributes']};}):[]};}):[]};}):[]:[]})[_0x086a('0x24')](function(_0x4898e9){logger[_0x086a('0xf')](_0x086a('0x25'),_0x38de2d);logger[_0x086a('0x10')]('GetFaxAccount',_0x38de2d,JSON['stringify'](_0x4898e9));_0x71b561(_0x4898e9);})[_0x086a('0x19')](function(_0x2c6e82){logger[_0x086a('0x14')](_0x086a('0x25'),_0x2c6e82[_0x086a('0x17')],_0x38de2d);_0x5bfb98(_0xf5de85[_0x086a('0x14')](0x1f4,_0x2c6e82['message']));});});};exports[_0x086a('0x26')]=function(_0x21a110,_0x2cff37,_0x555e11){var _0x2d4d01=this;return new Promise(function(_0x30d3c7,_0x3be3ad){var _0x56866={'body':_0x21a110[_0x086a('0x27')],'channel':_0x086a('0x28')};var _0x662c74=[];var _0x27f8e4=[];var _0xa21e7c={};return db[_0x086a('0x29')][_0x086a('0x2a')]()[_0x086a('0x24')](function(_0x99f3f0){if(!_0x99f3f0){throw new db['Sequelize'][(_0x086a('0x2b'))]('no\x20available\x20attributes');}_0x662c74=_[_0x086a('0x2c')](_['keys'](_0x99f3f0),[_0x086a('0x2d'),_0x086a('0x2e')]);_0x27f8e4=_[_0x086a('0x2c')](_['keys'](_0x99f3f0),[_0x086a('0x2d'),_0x086a('0x2e'),'CompanyId',_0x086a('0x2f')]);if(_0x21a110[_0x086a('0x27')]['id']){delete _0x21a110['body']['id'];}if(_[_0x086a('0x30')](_0x21a110[_0x086a('0x27')][_0x086a('0x31')])){throw new db[(_0x086a('0x32'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x086a('0x30')](_0x21a110[_0x086a('0x27')][_0x086a('0x27')])||_0x21a110[_0x086a('0x27')][_0x086a('0x27')]===''){throw new db[(_0x086a('0x32'))][(_0x086a('0x2b'))](_0x086a('0x33'));}if(_[_0x086a('0x30')](_0x21a110[_0x086a('0x27')][_0x086a('0x34')])){throw new db[(_0x086a('0x32'))][(_0x086a('0x2b'))](_0x086a('0x35')+_0x27f8e4);}if(!_[_0x086a('0x36')](_0x27f8e4,_0x21a110['body'][_0x086a('0x34')])){throw new db[(_0x086a('0x32'))][(_0x086a('0x2b'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x27f8e4);}_0xa21e7c[_0x21a110[_0x086a('0x27')]['mapKey']]=_0x21a110['body']['from'];})['then'](function(){return db['FaxAccount'][_0x086a('0x37')]({'where':{'id':_0x21a110[_0x086a('0x38')]['id']},'include':[{'model':db[_0x086a('0x39')],'as':_0x086a('0x3a'),'include':[{'model':db['CmContact'],'as':_0x086a('0x3b'),'where':_0xa21e7c,'limit':0x1,'order':[[_0x086a('0x2e'),'DESC']]}]},{'model':db[_0x086a('0x3c')],'as':'Applications'}]});})['then'](function(_0x2f1d30){if(_0x2f1d30&&_0x2f1d30[_0x086a('0x3a')]){var _0x3d5a6c=_0x2f1d30[_0x086a('0x3d')]({'plain':!![]});_0x56866['account']=_0x3d5a6c;_0x56866[_0x086a('0x3e')]=_0x3d5a6c[_0x086a('0x3f')];_0x56866['list']=_0x3d5a6c[_0x086a('0x3a')];_0x56866['applications']=_[_0x086a('0x40')](_0x56866[_0x086a('0x3e')],['priority'],['asc']);if(_0x56866[_0x086a('0x38')][_0x086a('0x3f')]){delete _0x56866[_0x086a('0x38')][_0x086a('0x3f')];}if(_0x56866[_0x086a('0x38')][_0x086a('0x3a')]&&_0x56866[_0x086a('0x38')][_0x086a('0x3a')]['Contacts'][_0x086a('0x41')]){return _0x56866[_0x086a('0x38')][_0x086a('0x3a')][_0x086a('0x3b')][0x0];}var _0x172999=_[_0x086a('0xb')](_0x21a110[_0x086a('0x27')],{'firstName':_0x21a110[_0x086a('0x27')]['from'],'ListId':_0x3d5a6c[_0x086a('0x2f')]});_0x172999[_0x21a110['body'][_0x086a('0x34')]]=_0x21a110[_0x086a('0x27')][_0x086a('0x31')];return db[_0x086a('0x29')]['create'](_0x172999,{'fields':_0x662c74,'raw':!![]});}})[_0x086a('0x24')](function(_0x296e33){_0x56866['contact']=_0x296e33;if(_0x296e33){var _0x2b53b5={'ContactId':_0x296e33['id'],'FaxAccountId':_0x21a110[_0x086a('0x38')]['id'],'fax':_0x296e33['fax']};return db[_0x086a('0x42')][_0x086a('0x37')]({'where':{'ContactId':_0x296e33['id'],'closed':![],'FaxAccountId':_0x21a110[_0x086a('0x38')]['id']}})[_0x086a('0x24')](function(_0x9a1209){if(_0x9a1209){return[_0x9a1209,![]];}return db[_0x086a('0x42')][_0x086a('0x43')](_0x2b53b5)[_0x086a('0x24')](function(_0x23fbc1){return[_0x23fbc1,!![]];});});}else{throw new Error(_0x086a('0x44'));}})[_0x086a('0x45')](function(_0x17dcfc,_0x443922){var _0x1787bc=_0x17dcfc['get']({'plain':!![]});if(_0x443922){if(_0x56866[_0x086a('0x38')][_0x086a('0x46')]){_0x56866[_0x086a('0x3e')][_0x086a('0x47')]({'id':0x0,'priority':_0x56866[_0x086a('0x3e')][_0x086a('0x41')]+0x1,'app':'close','appdata':_0x086a('0x48'),'interval':_0x086a('0x49')});}_0x1787bc['created']=!![];}else{_0x1787bc[_0x086a('0x4a')]=![];}_0x56866[_0x086a('0x4b')]=_0x1787bc;return db[_0x086a('0x4c')]['create']({'body':_0x21a110['body'][_0x086a('0x27')],'FaxAccountId':_0x21a110['account']['id'],'FaxInteractionId':_0x17dcfc['id'],'direction':'in','ContactId':_0x17dcfc[_0x086a('0x4d')],'AttachmentId':_0x21a110['body'][_0x086a('0x4e')]});})[_0x086a('0x24')](function(_0x2d4817){_0x56866[_0x086a('0x17')]=_0x2d4817;if(_0x56866[_0x086a('0x4b')]['UserId']){return db[_0x086a('0x4f')][_0x086a('0x37')]({'attributes':['id',_0x086a('0x50')],'where':{'id':_0x56866[_0x086a('0x4b')][_0x086a('0x51')]}})[_0x086a('0x24')](function(_0x513814){if(_0x513814){_0x56866[_0x086a('0x3e')]['unshift']({'id':0x0,'priority':0x0,'app':_0x086a('0x52'),'appdata':_0x513814[_0x086a('0x50')]+','+(_0x56866[_0x086a('0x38')][_0x086a('0x53')]||0xa),'interval':_0x086a('0x49')});}return respondWithRpcPromise(_0x086a('0x54'),'startRouting',_0x56866);});}return respondWithRpcPromise(_0x086a('0x54'),'startRouting',_0x56866);})[_0x086a('0x24')](function(_0x5d9ebc){_0x30d3c7(_0x5d9ebc);})['catch'](function(_0x58388d){_0x3be3ad(_0x2d4d01['error'](0x1f4,_0x58388d['message']));});});};
\ No newline at end of file
index 7a2bb6e..0b47c48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c8=['faxAccount:','./faxAccount.events','remove','update','emit','removeListener','register','length'];(function(_0x417320,_0x4839d3){var _0xe7a084=function(_0x8fbf4d){while(--_0x8fbf4d){_0x417320['push'](_0x417320['shift']());}};_0xe7a084(++_0x4839d3);}(_0xd6c8,0xb9));var _0x8d6c=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0xd6c8[_0x33fcbb];return _0x2efe40;};'use strict';var FaxAccountEvents=require(_0x8d6c('0x0'));var events=['save',_0x8d6c('0x1'),_0x8d6c('0x2')];function createListener(_0x553f76,_0x84923b){return function(_0x550cb6){_0x84923b[_0x8d6c('0x3')](_0x553f76,_0x550cb6);};}function removeListener(_0x26be58,_0x1fbbdc){return function(){FaxAccountEvents[_0x8d6c('0x4')](_0x26be58,_0x1fbbdc);};}exports[_0x8d6c('0x5')]=function(_0x370954){for(var _0x5a65f1=0x0,_0x2dd0dd=events[_0x8d6c('0x6')];_0x5a65f1<_0x2dd0dd;_0x5a65f1++){var _0xce069d=events[_0x5a65f1];var _0x421bc7=createListener(_0x8d6c('0x7')+_0xce069d,_0x370954);FaxAccountEvents['on'](_0xce069d,_0x421bc7);}};
\ No newline at end of file
+var _0x94d8=['length','./faxAccount.events','save','remove','update','emit','removeListener','register'];(function(_0x11e0ef,_0xdb91a8){var _0x24b1a2=function(_0x2f36b0){while(--_0x2f36b0){_0x11e0ef['push'](_0x11e0ef['shift']());}};_0x24b1a2(++_0xdb91a8);}(_0x94d8,0x131));var _0x894d=function(_0x263e5e,_0x5125a4){_0x263e5e=_0x263e5e-0x0;var _0x2aa7c0=_0x94d8[_0x263e5e];return _0x2aa7c0;};'use strict';var FaxAccountEvents=require(_0x894d('0x0'));var events=[_0x894d('0x1'),_0x894d('0x2'),_0x894d('0x3')];function createListener(_0x195709,_0x2d6ec7){return function(_0x150e9d){_0x2d6ec7[_0x894d('0x4')](_0x195709,_0x150e9d);};}function removeListener(_0x57197a,_0x5d4540){return function(){FaxAccountEvents[_0x894d('0x5')](_0x57197a,_0x5d4540);};}exports[_0x894d('0x6')]=function(_0xc3b6d6){for(var _0x42a504=0x0,_0x1fd9e3=events[_0x894d('0x7')];_0x42a504<_0x1fd9e3;_0x42a504++){var _0x16526e=events[_0x42a504];var _0x47dbff=createListener('faxAccount:'+_0x16526e,_0xc3b6d6);FaxAccountEvents['on'](_0x16526e,_0x47dbff);}};
\ No newline at end of file
index 866225b..4ebda13 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(_0x1762fd,_0x3774d1){var _0x1a1329=function(_0x142d7f){while(--_0x142d7f){_0x1762fd['push'](_0x1762fd['shift']());}};_0x1a1329(++_0x3774d1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/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(_0x248081,_0x3f2969){var _0x43d256=function(_0x2816da){while(--_0x2816da){_0x248081['push'](_0x248081['shift']());}};_0x43d256(++_0x3f2969);}(_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'));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 0835641..0b48789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b11=['sequelize','exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0x4b11,0xae));var _0x14b1=function(_0x180352,_0x219a77){_0x180352=_0x180352-0x0;var _0x1ce147=_0x4b11[_0x180352];return _0x1ce147;};'use strict';var Sequelize=require(_0x14b1('0x0'));module[_0x14b1('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x14b1('0x2')],'allowNull':![],'defaultValue':_0x14b1('0x3')},'appdata':{'type':Sequelize[_0x14b1('0x4')]()},'description':{'type':Sequelize[_0x14b1('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x14b1('0x5')}};
\ No newline at end of file
+var _0xef4d=['STRING','noop','sequelize','exports','INTEGER'];(function(_0x1fc850,_0x46df04){var _0x1e8c91=function(_0x49da4d){while(--_0x49da4d){_0x1fc850['push'](_0x1fc850['shift']());}};_0x1e8c91(++_0x46df04);}(_0xef4d,0x6b));var _0xdef4=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0xef4d[_0x42bc91];return _0x3f5507;};'use strict';var Sequelize=require(_0xdef4('0x0'));module[_0xdef4('0x1')]={'priority':{'type':Sequelize[_0xdef4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xdef4('0x3')],'allowNull':![],'defaultValue':_0xdef4('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xdef4('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 73d5f4a..40ab843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64e4=['where','pick','filter','VIRTUAL','merge','options','rows','catch','show','params','length','includeAll','include','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','sort'];(function(_0x5dcff5,_0x2b41ce){var _0x883626=function(_0x5ea59f){while(--_0x5ea59f){_0x5dcff5['push'](_0x5dcff5['shift']());}};_0x883626(++_0x2b41ce);}(_0x64e4,0x173));var _0x464e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64e4[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x464e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x464e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x464e('0x2'));var moment=require(_0x464e('0x3'));var BPromise=require(_0x464e('0x4'));var Mustache=require(_0x464e('0x5'));var util=require(_0x464e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x464e('0x7'));var ejs=require(_0x464e('0x8'));var fs=require('fs');var fs_extra=require(_0x464e('0x9'));var _=require('lodash');var squel=require(_0x464e('0xa'));var crypto=require(_0x464e('0xb'));var jsforce=require(_0x464e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x464e('0xd'));var Redis=require(_0x464e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x464e('0xf'));var as=require(_0x464e('0x10'));var hardwareService=require(_0x464e('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x464e('0x12'));var config=require(_0x464e('0x13'));var licenseUtil=require(_0x464e('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5565e4,_0x5c8d35){_0x5c8d35=_0x5c8d35||0xcc;return function(_0x465c4e){if(_0x465c4e){return _0x5565e4[_0x464e('0x15')](_0x5c8d35);}return _0x5565e4[_0x464e('0x16')](_0x5c8d35)[_0x464e('0x17')]();};}function respondWithResult(_0x1290f9,_0x489789){_0x489789=_0x489789||0xc8;return function(_0x2c2976){if(_0x2c2976){return _0x1290f9[_0x464e('0x16')](_0x489789)[_0x464e('0x18')](_0x2c2976);}};}function respondWithFilteredResult(_0x26371e,_0x217562){return function(_0x2d6ed5){if(_0x2d6ed5){var _0x1c0e3f=typeof _0x217562['offset']==='undefined'&&typeof _0x217562[_0x464e('0x19')]===_0x464e('0x1a');var _0xdcb7b7=_0x2d6ed5[_0x464e('0x1b')];var _0x2ad306=_0x1c0e3f?0x0:_0x217562['offset'];var _0x1b77a2=_0x1c0e3f?_0x2d6ed5[_0x464e('0x1b')]:_0x217562['offset']+_0x217562[_0x464e('0x19')];var _0x3abf88;if(_0x1b77a2>=_0xdcb7b7){_0x1b77a2=_0xdcb7b7;_0x3abf88=0xc8;}else{_0x3abf88=0xce;}_0x26371e[_0x464e('0x16')](_0x3abf88);return _0x26371e['set'](_0x464e('0x1c'),_0x2ad306+'-'+_0x1b77a2+'/'+_0xdcb7b7)[_0x464e('0x18')](_0x2d6ed5);}return null;};}function patchUpdates(_0x47a0f6){return function(_0xcbcdc4){try{jsonpatch['apply'](_0xcbcdc4,_0x47a0f6,!![]);}catch(_0xf2c10f){return BPromise[_0x464e('0x1d')](_0xf2c10f);}return _0xcbcdc4[_0x464e('0x1e')]();};}function saveUpdates(_0x43a428,_0x29ad2e){return function(_0x581b84){if(_0x581b84){return _0x581b84[_0x464e('0x1f')](_0x43a428)[_0x464e('0x20')](function(_0x4d220f){return _0x4d220f;});}return null;};}function removeEntity(_0xe0bdd,_0x3548e9){return function(_0x15d82d){if(_0x15d82d){return _0x15d82d[_0x464e('0x21')]()[_0x464e('0x20')](function(){_0xe0bdd[_0x464e('0x16')](0xcc)[_0x464e('0x17')]();});}};}function handleEntityNotFound(_0x543306,_0x3509ed){return function(_0xa9b145){if(!_0xa9b145){_0x543306[_0x464e('0x15')](0x194);}return _0xa9b145;};}function handleError(_0x23a062,_0x486e69){_0x486e69=_0x486e69||0x1f4;return function(_0x25add0){logger['error'](_0x25add0[_0x464e('0x22')]);if(_0x25add0[_0x464e('0x23')]){delete _0x25add0[_0x464e('0x23')];}_0x23a062['status'](_0x486e69)[_0x464e('0x24')](_0x25add0);};}exports[_0x464e('0x25')]=function(_0x3be87d,_0x58492c){var _0x20b5f6={},_0x42d7fe={},_0x340925={'count':0x0,'rows':[]};var _0xfa011c=_[_0x464e('0x26')](db[_0x464e('0x27')][_0x464e('0x28')],function(_0x47b68e){return{'name':_0x47b68e[_0x464e('0x29')],'type':_0x47b68e[_0x464e('0x2a')][_0x464e('0x2b')]};});_0x42d7fe[_0x464e('0x2c')]=_[_0x464e('0x26')](_0xfa011c,'name');_0x42d7fe[_0x464e('0x2d')]=_[_0x464e('0x2e')](_0x3be87d['query']);_0x42d7fe[_0x464e('0x2f')]=_[_0x464e('0x30')](_0x42d7fe[_0x464e('0x2c')],_0x42d7fe[_0x464e('0x2d')]);_0x20b5f6[_0x464e('0x31')]=_[_0x464e('0x30')](_0x42d7fe['model'],qs[_0x464e('0x32')](_0x3be87d[_0x464e('0x2d')][_0x464e('0x32')]));_0x20b5f6[_0x464e('0x31')]=_0x20b5f6['attributes']['length']?_0x20b5f6[_0x464e('0x31')]:_0x42d7fe[_0x464e('0x2c')];if(!_0x3be87d[_0x464e('0x2d')][_0x464e('0x33')](_0x464e('0x34'))){_0x20b5f6['limit']=qs[_0x464e('0x19')](_0x3be87d[_0x464e('0x2d')][_0x464e('0x19')]);_0x20b5f6[_0x464e('0x35')]=qs['offset'](_0x3be87d[_0x464e('0x2d')][_0x464e('0x35')]);}_0x20b5f6['order']=qs[_0x464e('0x36')](_0x3be87d[_0x464e('0x2d')][_0x464e('0x36')]);_0x20b5f6[_0x464e('0x37')]=qs['filters'](_[_0x464e('0x38')](_0x3be87d[_0x464e('0x2d')],_0x42d7fe['filters']),_0xfa011c);if(_0x3be87d['query'][_0x464e('0x39')]){_0x20b5f6['where']=_['merge'](_0x20b5f6['where'],{'$or':_[_0x464e('0x26')](_0xfa011c,function(_0x1a8916){if(_0x1a8916['type']!==_0x464e('0x3a')){var _0x40906b={};_0x40906b[_0x1a8916[_0x464e('0x23')]]={'$like':'%'+_0x3be87d['query'][_0x464e('0x39')]+'%'};return _0x40906b;}})});}_0x20b5f6=_[_0x464e('0x3b')]({},_0x20b5f6,_0x3be87d[_0x464e('0x3c')]);var _0x319875={'where':_0x20b5f6['where']};return db[_0x464e('0x27')][_0x464e('0x1b')](_0x319875)['then'](function(_0x206080){_0x340925['count']=_0x206080;if(_0x3be87d[_0x464e('0x2d')]['includeAll']){_0x20b5f6['include']=[{'all':!![]}];}return db[_0x464e('0x27')]['findAll'](_0x20b5f6);})[_0x464e('0x20')](function(_0x5d68a6){_0x340925[_0x464e('0x3d')]=_0x5d68a6;return _0x340925;})[_0x464e('0x20')](respondWithFilteredResult(_0x58492c,_0x20b5f6))[_0x464e('0x3e')](handleError(_0x58492c,null));};exports[_0x464e('0x3f')]=function(_0x158303,_0xf38e0){var _0x4c0c0d={'raw':!![],'where':{'id':_0x158303[_0x464e('0x40')]['id']}},_0x4d7326={};_0x4d7326[_0x464e('0x2c')]=_['keys'](db['FaxApplication'][_0x464e('0x28')]);_0x4d7326['query']=_[_0x464e('0x2e')](_0x158303['query']);_0x4d7326[_0x464e('0x2f')]=_['intersection'](_0x4d7326['model'],_0x4d7326[_0x464e('0x2d')]);_0x4c0c0d[_0x464e('0x31')]=_[_0x464e('0x30')](_0x4d7326[_0x464e('0x2c')],qs[_0x464e('0x32')](_0x158303[_0x464e('0x2d')][_0x464e('0x32')]));_0x4c0c0d[_0x464e('0x31')]=_0x4c0c0d[_0x464e('0x31')][_0x464e('0x41')]?_0x4c0c0d['attributes']:_0x4d7326[_0x464e('0x2c')];if(_0x158303[_0x464e('0x2d')][_0x464e('0x42')]){_0x4c0c0d[_0x464e('0x43')]=[{'all':!![]}];}_0x4c0c0d=_['merge']({},_0x4c0c0d,_0x158303[_0x464e('0x3c')]);return db[_0x464e('0x27')]['find'](_0x4c0c0d)['then'](handleEntityNotFound(_0xf38e0,null))[_0x464e('0x20')](respondWithResult(_0xf38e0,null))[_0x464e('0x3e')](handleError(_0xf38e0,null));};exports[_0x464e('0x44')]=function(_0x255444,_0x420ffe){return db[_0x464e('0x27')][_0x464e('0x44')](_0x255444[_0x464e('0x45')],{})[_0x464e('0x20')](respondWithResult(_0x420ffe,0xc9))['catch'](handleError(_0x420ffe,null));};exports[_0x464e('0x1f')]=function(_0x20687e,_0x1b87ae){if(_0x20687e[_0x464e('0x45')]['id']){delete _0x20687e['body']['id'];}return db[_0x464e('0x27')][_0x464e('0x46')]({'where':{'id':_0x20687e[_0x464e('0x40')]['id']}})['then'](handleEntityNotFound(_0x1b87ae,null))['then'](saveUpdates(_0x20687e[_0x464e('0x45')],null))[_0x464e('0x20')](respondWithResult(_0x1b87ae,null))[_0x464e('0x3e')](handleError(_0x1b87ae,null));};exports[_0x464e('0x21')]=function(_0x1db647,_0x1150a1){return db[_0x464e('0x27')][_0x464e('0x46')]({'where':{'id':_0x1db647[_0x464e('0x40')]['id']}})[_0x464e('0x20')](handleEntityNotFound(_0x1150a1,null))['then'](removeEntity(_0x1150a1,null))[_0x464e('0x3e')](handleError(_0x1150a1,null));};
\ No newline at end of file
+var _0x1f90=['request-promise','moment','bluebird','mustache','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','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','apply','reject','save','update','then','destroy','error','stack','name','send','map','FaxApplication','rawAttributes','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch'];(function(_0x149f32,_0x4273f7){var _0x11f475=function(_0x18eeef){while(--_0x18eeef){_0x149f32['push'](_0x149f32['shift']());}};_0x11f475(++_0x4273f7);}(_0x1f90,0x1ad));var _0x01f9=function(_0x510bef,_0x45d98e){_0x510bef=_0x510bef-0x0;var _0x5af891=_0x1f90[_0x510bef];return _0x5af891;};'use strict';var emlformat=require(_0x01f9('0x0'));var rimraf=require(_0x01f9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x01f9('0x2'));var rp=require(_0x01f9('0x3'));var moment=require(_0x01f9('0x4'));var BPromise=require(_0x01f9('0x5'));var Mustache=require(_0x01f9('0x6'));var util=require('util');var path=require(_0x01f9('0x7'));var sox=require(_0x01f9('0x8'));var csv=require(_0x01f9('0x9'));var ejs=require(_0x01f9('0xa'));var fs=require('fs');var fs_extra=require(_0x01f9('0xb'));var _=require(_0x01f9('0xc'));var squel=require(_0x01f9('0xd'));var crypto=require(_0x01f9('0xe'));var jsforce=require(_0x01f9('0xf'));var deskjs=require(_0x01f9('0x10'));var toCsv=require('to-csv');var querystring=require(_0x01f9('0x11'));var Papa=require(_0x01f9('0x12'));var Redis=require('ioredis');var authService=require(_0x01f9('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x01f9('0x14'));var hardwareService=require(_0x01f9('0x15'));var logger=require(_0x01f9('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x01f9('0x17'));var licenseUtil=require(_0x01f9('0x18'));var db=require(_0x01f9('0x19'))['db'];function respondWithStatusCode(_0x4193b7,_0x4cc5b9){_0x4cc5b9=_0x4cc5b9||0xcc;return function(_0x583371){if(_0x583371){return _0x4193b7[_0x01f9('0x1a')](_0x4cc5b9);}return _0x4193b7[_0x01f9('0x1b')](_0x4cc5b9)['end']();};}function respondWithResult(_0x342921,_0x1f5215){_0x1f5215=_0x1f5215||0xc8;return function(_0x14a4dd){if(_0x14a4dd){return _0x342921[_0x01f9('0x1b')](_0x1f5215)[_0x01f9('0x1c')](_0x14a4dd);}};}function respondWithFilteredResult(_0x459c44,_0x1ab3be){return function(_0x39c8b7){if(_0x39c8b7){var _0x168ee2=typeof _0x1ab3be[_0x01f9('0x1d')]==='undefined'&&typeof _0x1ab3be[_0x01f9('0x1e')]==='undefined';var _0x5e2be0=_0x39c8b7[_0x01f9('0x1f')];var _0x54bba7=_0x168ee2?0x0:_0x1ab3be[_0x01f9('0x1d')];var _0x3533bf=_0x168ee2?_0x39c8b7[_0x01f9('0x1f')]:_0x1ab3be[_0x01f9('0x1d')]+_0x1ab3be[_0x01f9('0x1e')];var _0x259564;if(_0x3533bf>=_0x5e2be0){_0x3533bf=_0x5e2be0;_0x259564=0xc8;}else{_0x259564=0xce;}_0x459c44[_0x01f9('0x1b')](_0x259564);return _0x459c44['set']('Content-Range',_0x54bba7+'-'+_0x3533bf+'/'+_0x5e2be0)[_0x01f9('0x1c')](_0x39c8b7);}return null;};}function patchUpdates(_0x11dc1a){return function(_0x38c9eb){try{jsonpatch[_0x01f9('0x20')](_0x38c9eb,_0x11dc1a,!![]);}catch(_0x5e0de0){return BPromise[_0x01f9('0x21')](_0x5e0de0);}return _0x38c9eb[_0x01f9('0x22')]();};}function saveUpdates(_0x568794,_0x4c12ff){return function(_0x316e88){if(_0x316e88){return _0x316e88[_0x01f9('0x23')](_0x568794)[_0x01f9('0x24')](function(_0x46ab08){return _0x46ab08;});}return null;};}function removeEntity(_0x2b6f31,_0x15647d){return function(_0x558d9b){if(_0x558d9b){return _0x558d9b[_0x01f9('0x25')]()[_0x01f9('0x24')](function(){_0x2b6f31[_0x01f9('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23d091,_0x304edb){return function(_0x15c4f5){if(!_0x15c4f5){_0x23d091[_0x01f9('0x1a')](0x194);}return _0x15c4f5;};}function handleError(_0x5d1bcc,_0x173e52){_0x173e52=_0x173e52||0x1f4;return function(_0x45d5f0){logger[_0x01f9('0x26')](_0x45d5f0[_0x01f9('0x27')]);if(_0x45d5f0[_0x01f9('0x28')]){delete _0x45d5f0[_0x01f9('0x28')];}_0x5d1bcc[_0x01f9('0x1b')](_0x173e52)[_0x01f9('0x29')](_0x45d5f0);};}exports['index']=function(_0x40ec37,_0x550c38){var _0x5d9fa8={},_0x5ee885={},_0x280e22={'count':0x0,'rows':[]};var _0x317b52=_[_0x01f9('0x2a')](db[_0x01f9('0x2b')][_0x01f9('0x2c')],function(_0x1fa1b5){return{'name':_0x1fa1b5['fieldName'],'type':_0x1fa1b5['type']['key']};});_0x5ee885[_0x01f9('0x2d')]=_['map'](_0x317b52,_0x01f9('0x28'));_0x5ee885[_0x01f9('0x2e')]=_[_0x01f9('0x2f')](_0x40ec37[_0x01f9('0x2e')]);_0x5ee885['filters']=_[_0x01f9('0x30')](_0x5ee885[_0x01f9('0x2d')],_0x5ee885[_0x01f9('0x2e')]);_0x5d9fa8[_0x01f9('0x31')]=_[_0x01f9('0x30')](_0x5ee885[_0x01f9('0x2d')],qs['fields'](_0x40ec37[_0x01f9('0x2e')][_0x01f9('0x32')]));_0x5d9fa8[_0x01f9('0x31')]=_0x5d9fa8['attributes'][_0x01f9('0x33')]?_0x5d9fa8[_0x01f9('0x31')]:_0x5ee885[_0x01f9('0x2d')];if(!_0x40ec37[_0x01f9('0x2e')][_0x01f9('0x34')](_0x01f9('0x35'))){_0x5d9fa8[_0x01f9('0x1e')]=qs['limit'](_0x40ec37['query']['limit']);_0x5d9fa8[_0x01f9('0x1d')]=qs[_0x01f9('0x1d')](_0x40ec37[_0x01f9('0x2e')]['offset']);}_0x5d9fa8['order']=qs[_0x01f9('0x36')](_0x40ec37[_0x01f9('0x2e')]['sort']);_0x5d9fa8[_0x01f9('0x37')]=qs[_0x01f9('0x38')](_[_0x01f9('0x39')](_0x40ec37[_0x01f9('0x2e')],_0x5ee885['filters']),_0x317b52);if(_0x40ec37[_0x01f9('0x2e')][_0x01f9('0x3a')]){_0x5d9fa8[_0x01f9('0x37')]=_[_0x01f9('0x3b')](_0x5d9fa8[_0x01f9('0x37')],{'$or':_[_0x01f9('0x2a')](_0x317b52,function(_0x1bf4ca){if(_0x1bf4ca[_0x01f9('0x3c')]!==_0x01f9('0x3d')){var _0x34fe76={};_0x34fe76[_0x1bf4ca[_0x01f9('0x28')]]={'$like':'%'+_0x40ec37['query']['filter']+'%'};return _0x34fe76;}})});}_0x5d9fa8=_['merge']({},_0x5d9fa8,_0x40ec37[_0x01f9('0x3e')]);var _0x3c87ca={'where':_0x5d9fa8[_0x01f9('0x37')]};return db[_0x01f9('0x2b')]['count'](_0x3c87ca)[_0x01f9('0x24')](function(_0x5ac78d){_0x280e22[_0x01f9('0x1f')]=_0x5ac78d;if(_0x40ec37[_0x01f9('0x2e')][_0x01f9('0x3f')]){_0x5d9fa8[_0x01f9('0x40')]=[{'all':!![]}];}return db[_0x01f9('0x2b')][_0x01f9('0x41')](_0x5d9fa8);})['then'](function(_0x2c4a7b){_0x280e22['rows']=_0x2c4a7b;return _0x280e22;})[_0x01f9('0x24')](respondWithFilteredResult(_0x550c38,_0x5d9fa8))[_0x01f9('0x42')](handleError(_0x550c38,null));};exports[_0x01f9('0x43')]=function(_0x33fb1a,_0x214125){var _0x3bea1f={'raw':!![],'where':{'id':_0x33fb1a[_0x01f9('0x44')]['id']}},_0x5f5c8c={};_0x5f5c8c[_0x01f9('0x2d')]=_[_0x01f9('0x2f')](db[_0x01f9('0x2b')][_0x01f9('0x2c')]);_0x5f5c8c[_0x01f9('0x2e')]=_[_0x01f9('0x2f')](_0x33fb1a[_0x01f9('0x2e')]);_0x5f5c8c[_0x01f9('0x38')]=_['intersection'](_0x5f5c8c[_0x01f9('0x2d')],_0x5f5c8c[_0x01f9('0x2e')]);_0x3bea1f['attributes']=_[_0x01f9('0x30')](_0x5f5c8c['model'],qs['fields'](_0x33fb1a[_0x01f9('0x2e')]['fields']));_0x3bea1f[_0x01f9('0x31')]=_0x3bea1f[_0x01f9('0x31')][_0x01f9('0x33')]?_0x3bea1f[_0x01f9('0x31')]:_0x5f5c8c['model'];if(_0x33fb1a['query'][_0x01f9('0x3f')]){_0x3bea1f[_0x01f9('0x40')]=[{'all':!![]}];}_0x3bea1f=_[_0x01f9('0x3b')]({},_0x3bea1f,_0x33fb1a[_0x01f9('0x3e')]);return db[_0x01f9('0x2b')][_0x01f9('0x45')](_0x3bea1f)[_0x01f9('0x24')](handleEntityNotFound(_0x214125,null))[_0x01f9('0x24')](respondWithResult(_0x214125,null))[_0x01f9('0x42')](handleError(_0x214125,null));};exports[_0x01f9('0x46')]=function(_0xb50074,_0x5123b7){return db[_0x01f9('0x2b')][_0x01f9('0x46')](_0xb50074['body'],{})[_0x01f9('0x24')](respondWithResult(_0x5123b7,0xc9))[_0x01f9('0x42')](handleError(_0x5123b7,null));};exports[_0x01f9('0x23')]=function(_0x46e1b2,_0x1ac469){if(_0x46e1b2[_0x01f9('0x47')]['id']){delete _0x46e1b2[_0x01f9('0x47')]['id'];}return db['FaxApplication'][_0x01f9('0x45')]({'where':{'id':_0x46e1b2[_0x01f9('0x44')]['id']}})['then'](handleEntityNotFound(_0x1ac469,null))['then'](saveUpdates(_0x46e1b2[_0x01f9('0x47')],null))[_0x01f9('0x24')](respondWithResult(_0x1ac469,null))[_0x01f9('0x42')](handleError(_0x1ac469,null));};exports['destroy']=function(_0x47a91b,_0x1d11e9){return db['FaxApplication']['find']({'where':{'id':_0x47a91b[_0x01f9('0x44')]['id']}})[_0x01f9('0x24')](handleEntityNotFound(_0x1d11e9,null))['then'](removeEntity(_0x1d11e9,null))[_0x01f9('0x42')](handleError(_0x1d11e9,null));};
\ No newline at end of file
index f04d522..8ef60ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45a7=['moment','bluebird','request-promise','path','../../config/environment','exports','define','fax_applications','lodash','util','../../config/logger','api'];(function(_0x44b4c3,_0x3458f6){var _0xe9d45f=function(_0x2ef741){while(--_0x2ef741){_0x44b4c3['push'](_0x44b4c3['shift']());}};_0xe9d45f(++_0x3458f6);}(_0x45a7,0x140));var _0x745a=function(_0x224f65,_0x4750bf){_0x224f65=_0x224f65-0x0;var _0x3f921c=_0x45a7[_0x224f65];return _0x3f921c;};'use strict';var _=require(_0x745a('0x0'));var util=require(_0x745a('0x1'));var logger=require(_0x745a('0x2'))(_0x745a('0x3'));var moment=require(_0x745a('0x4'));var BPromise=require(_0x745a('0x5'));var rp=require(_0x745a('0x6'));var fs=require('fs');var path=require(_0x745a('0x7'));var rimraf=require('rimraf');var config=require(_0x745a('0x8'));var attributes=require('./faxApplication.attributes');module[_0x745a('0x9')]=function(_0x2e3ba2,_0x50fbb2){return _0x2e3ba2[_0x745a('0xa')]('FaxApplication',attributes,{'tableName':_0x745a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa6df=['../../config/environment','./faxApplication.attributes','exports','define','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xa6df,0x118));var _0xfa6d=function(_0x27ebdd,_0x20fcba){_0x27ebdd=_0x27ebdd-0x0;var _0x9c6ce7=_0xa6df[_0x27ebdd];return _0x9c6ce7;};'use strict';var _=require(_0xfa6d('0x0'));var util=require('util');var logger=require(_0xfa6d('0x1'))('api');var moment=require(_0xfa6d('0x2'));var BPromise=require('bluebird');var rp=require(_0xfa6d('0x3'));var fs=require('fs');var path=require(_0xfa6d('0x4'));var rimraf=require(_0xfa6d('0x5'));var config=require(_0xfa6d('0x6'));var attributes=require(_0xfa6d('0x7'));module[_0xfa6d('0x8')]=function(_0x1f795a,_0x56b2e0){return _0x1f795a[_0xfa6d('0x9')]('FaxApplication',attributes,{'tableName':_0xfa6d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfa6d('0xb'),'collate':_0xfa6d('0xc')});};
\ No newline at end of file
index adb134e..dd6b199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd2=['attributes','limit','info','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','update','body','options','raw','where'];(function(_0x2d9988,_0x486907){var _0x45f73e=function(_0x51d480){while(--_0x51d480){_0x2d9988['push'](_0x2d9988['shift']());}};_0x45f73e(++_0x486907);}(_0x4dd2,0x12c));var _0x24dd=function(_0x3fd275,_0xf0cd7){_0x3fd275=_0x3fd275-0x0;var _0xe4f14f=_0x4dd2[_0x3fd275];return _0xe4f14f;};'use strict';var _=require(_0x24dd('0x0'));var util=require(_0x24dd('0x1'));var moment=require(_0x24dd('0x2'));var BPromise=require(_0x24dd('0x3'));var rs=require(_0x24dd('0x4'));var fs=require('fs');var Redis=require(_0x24dd('0x5'));var db=require(_0x24dd('0x6'))['db'];var utils=require(_0x24dd('0x7'));var logger=require('../../config/logger')(_0x24dd('0x8'));var config=require(_0x24dd('0x9'));var jayson=require(_0x24dd('0xa'));var client=jayson['client'][_0x24dd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40e85d,_0x307277,_0x4a32f6){return new BPromise(function(_0x404017,_0x22e2a6){return client[_0x24dd('0xc')](_0x40e85d,_0x4a32f6)[_0x24dd('0xd')](function(_0xa034a9){logger['info'](_0x24dd('0xe'),_0x307277,_0x24dd('0xf'));logger[_0x24dd('0x10')](_0x24dd('0x11'),_0x307277,'request\x20sent',JSON[_0x24dd('0x12')](_0xa034a9));if(_0xa034a9['error']){if(_0xa034a9[_0x24dd('0x13')][_0x24dd('0x14')]===0x1f4){logger[_0x24dd('0x13')](_0x24dd('0xe'),_0x307277,_0xa034a9[_0x24dd('0x13')][_0x24dd('0x15')]);return _0x22e2a6(_0xa034a9[_0x24dd('0x13')][_0x24dd('0x15')]);}logger[_0x24dd('0x13')](_0x24dd('0xe'),_0x307277,_0xa034a9['error'][_0x24dd('0x15')]);return _0x404017(_0xa034a9[_0x24dd('0x13')][_0x24dd('0x15')]);}else{logger['info'](_0x24dd('0xe'),_0x307277,'request\x20sent');_0x404017(_0xa034a9[_0x24dd('0x16')]['message']);}})[_0x24dd('0x17')](function(_0x10484e){logger['error'](_0x24dd('0xe'),_0x307277,_0x10484e);_0x22e2a6(_0x10484e);});});}exports[_0x24dd('0x18')]=function(_0x4db4fd){var _0x5d225e=this;return new Promise(function(_0x5576a6,_0x1b5cb4){return db['FaxApplication'][_0x24dd('0x19')](_0x4db4fd[_0x24dd('0x1a')],{'raw':_0x4db4fd[_0x24dd('0x1b')]?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db4fd[_0x24dd('0x1b')]?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1d')]||null:null,'attributes':_0x4db4fd[_0x24dd('0x1b')]?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1e')]||null:null,'limit':_0x4db4fd['options']?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1f')]||null:null})[_0x24dd('0xd')](function(_0x26466c){logger[_0x24dd('0x20')](_0x24dd('0x18'),_0x4db4fd);logger[_0x24dd('0x10')](_0x24dd('0x18'),_0x4db4fd,JSON[_0x24dd('0x12')](_0x26466c));_0x5576a6(_0x26466c);})['catch'](function(_0x5f0318){logger[_0x24dd('0x13')](_0x24dd('0x18'),_0x5f0318[_0x24dd('0x15')],_0x4db4fd);_0x1b5cb4(_0x5d225e[_0x24dd('0x13')](0x1f4,_0x5f0318['message']));});});};
\ No newline at end of file
+var _0x5870=['request','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateFaxApplication','FaxApplication','body','options','raw','where','attributes','limit','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http'];(function(_0x25f3b4,_0x16a6ec){var _0x42f023=function(_0x48040a){while(--_0x48040a){_0x25f3b4['push'](_0x25f3b4['shift']());}};_0x42f023(++_0x16a6ec);}(_0x5870,0x88));var _0x0587=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x5870[_0x49ca18];return _0x145d54;};'use strict';var _=require(_0x0587('0x0'));var util=require(_0x0587('0x1'));var moment=require(_0x0587('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0587('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0587('0x4'));var logger=require(_0x0587('0x5'))(_0x0587('0x6'));var config=require(_0x0587('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0587('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xbac61b,_0x3ef970,_0x3a603a){return new BPromise(function(_0x3958f9,_0x5c5ae0){return client[_0x0587('0x9')](_0xbac61b,_0x3a603a)['then'](function(_0x167c68){logger[_0x0587('0xa')](_0x0587('0xb'),_0x3ef970,_0x0587('0xc'));logger[_0x0587('0xd')](_0x0587('0xe'),_0x3ef970,'request\x20sent',JSON[_0x0587('0xf')](_0x167c68));if(_0x167c68[_0x0587('0x10')]){if(_0x167c68[_0x0587('0x10')][_0x0587('0x11')]===0x1f4){logger[_0x0587('0x10')](_0x0587('0xb'),_0x3ef970,_0x167c68[_0x0587('0x10')]['message']);return _0x5c5ae0(_0x167c68['error'][_0x0587('0x12')]);}logger[_0x0587('0x10')]('FaxApplication,\x20%s,\x20%s',_0x3ef970,_0x167c68[_0x0587('0x10')][_0x0587('0x12')]);return _0x3958f9(_0x167c68[_0x0587('0x10')]['message']);}else{logger[_0x0587('0xa')]('FaxApplication,\x20%s,\x20%s',_0x3ef970,_0x0587('0xc'));_0x3958f9(_0x167c68['result'][_0x0587('0x12')]);}})[_0x0587('0x13')](function(_0x1013e2){logger[_0x0587('0x10')](_0x0587('0xb'),_0x3ef970,_0x1013e2);_0x5c5ae0(_0x1013e2);});});}exports[_0x0587('0x14')]=function(_0xda2d21){var _0x22b47f=this;return new Promise(function(_0x53c3ea,_0x320f0b){return db[_0x0587('0x15')]['update'](_0xda2d21[_0x0587('0x16')],{'raw':_0xda2d21[_0x0587('0x17')]?_0xda2d21[_0x0587('0x17')][_0x0587('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xda2d21['options']?_0xda2d21[_0x0587('0x17')][_0x0587('0x19')]||null:null,'attributes':_0xda2d21[_0x0587('0x17')]?_0xda2d21[_0x0587('0x17')][_0x0587('0x1a')]||null:null,'limit':_0xda2d21[_0x0587('0x17')]?_0xda2d21[_0x0587('0x17')][_0x0587('0x1b')]||null:null})[_0x0587('0x1c')](function(_0x4eb6c6){logger[_0x0587('0xa')](_0x0587('0x14'),_0xda2d21);logger[_0x0587('0xd')]('UpdateFaxApplication',_0xda2d21,JSON[_0x0587('0xf')](_0x4eb6c6));_0x53c3ea(_0x4eb6c6);})['catch'](function(_0x2cb637){logger['error'](_0x0587('0x14'),_0x2cb637['message'],_0xda2d21);_0x320f0b(_0x22b47f[_0x0587('0x10')](0x1f4,_0x2cb637[_0x0587('0x12')]));});});};
\ No newline at end of file
index d64018b..a337d23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['show','create','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated'];(function(_0xae1a83,_0x1980d4){var _0xdb9da8=function(_0x36fc99){while(--_0x36fc99){_0xae1a83['push'](_0xae1a83['shift']());}};_0xdb9da8(++_0x1980d4);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x208505,_0x241a77){_0x208505=_0x208505-0x0;var _0x1a985f=_0x4cf8[_0x208505];return _0x1a985f;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0xe')]);router['put'](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router[_0x84cf('0x11')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xe5b5=['../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x604eb9,_0x1ff2fa){var _0x94afc4=function(_0xc235e9){while(--_0xc235e9){_0x604eb9['push'](_0x604eb9['shift']());}};_0x94afc4(++_0x1ff2fa);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0xe5b5[_0x47a12a];return _0x30cd40;};'use strict';var multer=require(_0x5e5b('0x0'));var util=require(_0x5e5b('0x1'));var path=require(_0x5e5b('0x2'));var timeout=require(_0x5e5b('0x3'));var express=require(_0x5e5b('0x4'));var router=express[_0x5e5b('0x5')]();var fs_extra=require(_0x5e5b('0x6'));var auth=require(_0x5e5b('0x7'));var interaction=require(_0x5e5b('0x8'));var config=require(_0x5e5b('0x9'));var controller=require(_0x5e5b('0xa'));router[_0x5e5b('0xb')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xd')]);router[_0x5e5b('0xb')](_0x5e5b('0xe'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xf')]);router[_0x5e5b('0x10')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x11')]);router[_0x5e5b('0x12')](_0x5e5b('0xe'),auth['isAuthenticated'](),controller[_0x5e5b('0x13')]);router['delete'](_0x5e5b('0xe'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x14')]);module[_0x5e5b('0x15')]=router;
\ No newline at end of file
index 74013e4..8fb9331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6a=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x5d3ef5,_0x3e6af0){var _0x1d0abb=function(_0x3ea37f){while(--_0x3ea37f){_0x5d3ef5['push'](_0x5d3ef5['shift']());}};_0x1d0abb(++_0x3e6af0);}(_0xcc6a,0x81));var _0xacc6=function(_0x1692cf,_0x58dfaa){_0x1692cf=_0x1692cf-0x0;var _0x475e63=_0xcc6a[_0x1692cf];return _0x475e63;};'use strict';var Sequelize=require(_0xacc6('0x0'));module[_0xacc6('0x1')]={'closed':{'type':Sequelize[_0xacc6('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xacc6('0x3')]},'disposition':{'type':Sequelize[_0xacc6('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xacc6('0x3')]},'fax':{'type':Sequelize[_0xacc6('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xacc6('0x5')]('in',_0xacc6('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xacc6('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xacc6('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x6851=['STRING','DATE','out','ENUM','sequelize','exports','BOOLEAN'];(function(_0x24345f,_0x39055b){var _0x3707a2=function(_0x3f0c5d){while(--_0x3f0c5d){_0x24345f['push'](_0x24345f['shift']());}};_0x3707a2(++_0x39055b);}(_0x6851,0xb3));var _0x1685=function(_0x74892f,_0x1e981b){_0x74892f=_0x74892f-0x0;var _0x10ee61=_0x6851[_0x74892f];return _0x10ee61;};'use strict';var Sequelize=require(_0x1685('0x0'));module[_0x1685('0x1')]={'closed':{'type':Sequelize[_0x1685('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x1685('0x3')]},'secondDisposition':{'type':Sequelize[_0x1685('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1685('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1685('0x4')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x1685('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x1685('0x6')]('in',_0x1685('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 9ae2b82..3e4d633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff0=['i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','role','sequelize','toString','merge','a.key','Account.key','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.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','all','rows','catch','show','params','includeAll','include','options','create','update','body','destroy','describe','addMessage','ids','omit','findOne','FaxMessage','hasOwnProperty','pick','FaxInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','setTags','emit','faxInteractionTags:save','removeTags','unix','server','files','join','root','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','download','log','err','unlinkSync','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','name','Users','map','fullname','TagIds','Tags','forEach','push','index','FaxInteraction','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','field','color','from','select','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','fax_interactions','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','compact','isEmpty','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','read','`unreadMessages`\x20=\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','FaxAccountId'];(function(_0x4ef824,_0x340392){var _0x463187=function(_0x32a1df){while(--_0x32a1df){_0x4ef824['push'](_0x4ef824['shift']());}};_0x463187(++_0x340392);}(_0xeff0,0x125));var _0x0eff=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xeff0[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x0eff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0eff('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0eff('0x2'));var moment=require(_0x0eff('0x3'));var BPromise=require(_0x0eff('0x4'));var Mustache=require(_0x0eff('0x5'));var util=require(_0x0eff('0x6'));var path=require(_0x0eff('0x7'));var sox=require(_0x0eff('0x8'));var csv=require(_0x0eff('0x9'));var ejs=require(_0x0eff('0xa'));var fs=require('fs');var fs_extra=require(_0x0eff('0xb'));var _=require(_0x0eff('0xc'));var squel=require(_0x0eff('0xd'));var crypto=require(_0x0eff('0xe'));var jsforce=require(_0x0eff('0xf'));var deskjs=require(_0x0eff('0x10'));var toCsv=require(_0x0eff('0x9'));var querystring=require(_0x0eff('0x11'));var Papa=require(_0x0eff('0x12'));var Redis=require(_0x0eff('0x13'));var authService=require(_0x0eff('0x14'));var qs=require(_0x0eff('0x15'));var as=require(_0x0eff('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0eff('0x17'))(_0x0eff('0x18'));var utils=require(_0x0eff('0x19'));var config=require(_0x0eff('0x1a'));var licenseUtil=require(_0x0eff('0x1b'));var db=require('../../mysqldb')['db'];config[_0x0eff('0x1c')]=_[_0x0eff('0x1d')](config['redis'],{'host':_0x0eff('0x1e'),'port':0x18eb});var socket=require(_0x0eff('0x1f'))(new Redis(config['redis']));require(_0x0eff('0x20'))[_0x0eff('0x21')](socket);function respondWithStatusCode(_0x2612ab,_0x3f25c7){_0x3f25c7=_0x3f25c7||0xcc;return function(_0x46042d){if(_0x46042d){return _0x2612ab['sendStatus'](_0x3f25c7);}return _0x2612ab[_0x0eff('0x22')](_0x3f25c7)[_0x0eff('0x23')]();};}function respondWithResult(_0x2e9558,_0x5c2888){_0x5c2888=_0x5c2888||0xc8;return function(_0x2cb044){if(_0x2cb044){return _0x2e9558[_0x0eff('0x22')](_0x5c2888)[_0x0eff('0x24')](_0x2cb044);}};}function respondWithFilteredResult(_0xb48e4b,_0x1db933){return function(_0x59b093){if(_0x59b093){var _0x262ded=typeof _0x1db933[_0x0eff('0x25')]===_0x0eff('0x26')&&typeof _0x1db933[_0x0eff('0x27')]==='undefined';var _0xd01c7e=_0x59b093['count'];var _0x5613fd=_0x262ded?0x0:_0x1db933[_0x0eff('0x25')];var _0x3abc99=_0x262ded?_0x59b093[_0x0eff('0x28')]:_0x1db933[_0x0eff('0x25')]+_0x1db933['limit'];var _0x26e5fc;if(_0x3abc99>=_0xd01c7e){_0x3abc99=_0xd01c7e;_0x26e5fc=0xc8;}else{_0x26e5fc=0xce;}_0xb48e4b[_0x0eff('0x22')](_0x26e5fc);return _0xb48e4b[_0x0eff('0x29')](_0x0eff('0x2a'),_0x5613fd+'-'+_0x3abc99+'/'+_0xd01c7e)['json'](_0x59b093);}return null;};}function patchUpdates(_0x36fe42){return function(_0x10918e){try{jsonpatch[_0x0eff('0x2b')](_0x10918e,_0x36fe42,!![]);}catch(_0x428b67){return BPromise[_0x0eff('0x2c')](_0x428b67);}return _0x10918e[_0x0eff('0x2d')]();};}function saveUpdates(_0x34149b,_0x476001){return function(_0x4b66e7){if(_0x4b66e7){return _0x4b66e7['update'](_0x34149b)[_0x0eff('0x2e')](function(_0x59b3d3){return _0x59b3d3;});}return null;};}function removeEntity(_0x658f49,_0x31ebaf){return function(_0x22ec68){if(_0x22ec68){return _0x22ec68['destroy']()[_0x0eff('0x2e')](function(){_0x658f49['status'](0xcc)[_0x0eff('0x23')]();});}};}function handleEntityNotFound(_0x35f6e2,_0x4d7ebe){return function(_0x4968bd){if(!_0x4968bd){_0x35f6e2[_0x0eff('0x2f')](0x194);}return _0x4968bd;};}function handleError(_0x4d4bbb,_0x1999c8){_0x1999c8=_0x1999c8||0x1f4;return function(_0x175f08){logger['error'](_0x175f08['stack']);if(_0x175f08[_0x0eff('0x30')]){delete _0x175f08[_0x0eff('0x30')];}_0x4d4bbb[_0x0eff('0x22')](_0x1999c8)['send'](_0x175f08);};}function getInteractionUsers(_0x5134de,_0x72297f){return new BPromise(function(_0x58ba27,_0x34efc7){try{if(_0x72297f[_0x5134de['id']]){_0x5134de[_0x0eff('0x31')]=_[_0x0eff('0x32')](_0x72297f[_0x5134de['id']],function(_0x5e0860){return{'id':_0x5e0860['id'],'fullname':_0x5e0860[_0x0eff('0x33')]};});}}catch(_0x4b5941){_0x34efc7(_0x4b5941);}_0x58ba27(_0x5134de);});}function getInteractionTags(_0x1cb80a,_0x238852){return new BPromise(function(_0x32f0e1,_0x4b4b30){try{if(_0x1cb80a[_0x0eff('0x34')]){_0x1cb80a[_0x0eff('0x35')]=[];_0x1cb80a[_0x0eff('0x34')]['split'](',')[_0x0eff('0x36')](function(_0x5bf632){_0x1cb80a[_0x0eff('0x35')][_0x0eff('0x37')](_0x238852[_0x5bf632]);});}delete _0x1cb80a[_0x0eff('0x34')];}catch(_0x4be3b6){_0x4b4b30(_0x4be3b6);}_0x32f0e1(_0x1cb80a);});}function updateFaxInteraction(_0x590607,_0x5c843c,_0xb64303){return new BPromise(function(_0x3714bc,_0x29efef){return getInteractionUsers(_0x590607,_0xb64303)[_0x0eff('0x2e')](function(_0x5a39e4){return getInteractionTags(_0x5a39e4,_0x5c843c);})[_0x0eff('0x2e')](function(_0x29675c){_0x3714bc(_0x29675c);})['catch'](function(_0x808181){_0x29efef(_0x808181);});});}exports[_0x0eff('0x38')]=function(_0x4e9e4d,_0xfe8cde){var _0x3e14ba={},_0x2ff30c={},_0x1bd0f1={'count':0x0,'rows':[]};var _0x1b452c=_[_0x0eff('0x32')](db[_0x0eff('0x39')][_0x0eff('0x3a')],function(_0x48ea78){return{'name':_0x48ea78['fieldName'],'type':_0x48ea78[_0x0eff('0x3b')][_0x0eff('0x3c')]};});_0x2ff30c[_0x0eff('0x3d')]=_[_0x0eff('0x32')](_0x1b452c,_0x0eff('0x30'));_0x2ff30c['query']=_[_0x0eff('0x3e')](_0x4e9e4d[_0x0eff('0x3f')]);_0x2ff30c[_0x0eff('0x40')]=_[_0x0eff('0x41')](_0x2ff30c[_0x0eff('0x3d')],_0x2ff30c[_0x0eff('0x3f')]);_0x3e14ba[_0x0eff('0x42')]=_[_0x0eff('0x41')](_0x2ff30c[_0x0eff('0x3d')],qs[_0x0eff('0x43')](_0x4e9e4d['query']['fields']));_0x3e14ba[_0x0eff('0x42')]=_0x3e14ba[_0x0eff('0x42')][_0x0eff('0x44')]?_0x3e14ba['attributes']:_0x2ff30c[_0x0eff('0x3d')];if(!_0x4e9e4d[_0x0eff('0x3f')]['hasOwnProperty'](_0x0eff('0x45'))){_0x3e14ba[_0x0eff('0x27')]=qs['limit'](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x27')]);_0x3e14ba[_0x0eff('0x25')]=qs['offset'](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x25')]);}_0x3e14ba[_0x0eff('0x46')]=qs[_0x0eff('0x47')](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x47')]);_0x3e14ba[_0x0eff('0x48')]=qs[_0x0eff('0x40')](_['pick'](_0x4e9e4d[_0x0eff('0x3f')],_0x2ff30c[_0x0eff('0x40')]),_0x1b452c);var _0x524e49=[];var _0x391ebc=squel['select']()[_0x0eff('0x49')]('id')['field']('name')['field'](_0x0eff('0x4a'))[_0x0eff('0x4b')]('tools_tags');var _0x455d10=squel[_0x0eff('0x4c')]()[_0x0eff('0x49')](_0x0eff('0x4d'))[_0x0eff('0x49')]('u.fullname')['field'](_0x0eff('0x4e'))[_0x0eff('0x4b')](_0x0eff('0x4f'),'ui')[_0x0eff('0x50')](_0x0eff('0x51'),'u','u.id\x20=\x20ui.UserId');var _0x12af56=squel[_0x0eff('0x4c')]()[_0x0eff('0x4b')](_0x0eff('0x52'),'i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x0eff('0x50')](_0x0eff('0x51'),'o',_0x0eff('0x53'))[_0x0eff('0x50')](_0x0eff('0x54'),'a',_0x0eff('0x55'))[_0x0eff('0x50')](_0x0eff('0x56'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x0eff('0x50')](_0x0eff('0x57'),'it',_0x0eff('0x58'))[_0x0eff('0x50')](_0x0eff('0x59'),'t',_0x0eff('0x5a'));var _0x299d3e=squel[_0x0eff('0x5b')]();var _0x30558f=[];var _0x597192=squel[_0x0eff('0x5b')]();var _0x2a6039;if(_0x4e9e4d[_0x0eff('0x3f')]['search']){_0x2a6039=as[_0x0eff('0x5c')](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x5d')]);var _0x5e2eb2=_0x2a6039[_0x0eff('0x5e')];for(var _0x4a0bd9=0x0;_0x4a0bd9<_0x2a6039[_0x0eff('0x5f')][_0x0eff('0x44')];_0x4a0bd9++){var _0x3b100f=_0x2a6039['conditions'][_0x4a0bd9];var _0x1c455c='i';var _0x3da985=_[_0x0eff('0x60')](_0x1b452c,[_0x0eff('0x30'),_0x3b100f[_0x0eff('0x49')]]);if(!_0x3da985){switch(_0x3b100f[_0x0eff('0x49')]){case _0x0eff('0x61'):if(_0x3b100f[_0x0eff('0x62')]==0x1){_0x12af56[_0x0eff('0x63')]('`'+_0x3b100f[_0x0eff('0x49')]+_0x0eff('0x64'));}else{_0x12af56[_0x0eff('0x63')]('`'+_0x3b100f[_0x0eff('0x49')]+_0x0eff('0x65'));}break;case'Contact':if(_0x3b100f['operator']===_0x0eff('0x66')){if(_0x3b100f[_0x0eff('0x62')][_0x0eff('0x67')]('\x20')[_0x0eff('0x44')]>0x1){_0x299d3e[_0x5e2eb2](_0x0eff('0x68'),qs[_0x0eff('0x69')](_0x3b100f['value']),null);}else{var _0x3e3196='%'+_0x3b100f[_0x0eff('0x62')]+'%';_0x299d3e[_0x5e2eb2](_0x0eff('0x6a'),_0x3e3196,_0x3e3196,_0x3e3196);}}else{_0x3da985=_[_0x0eff('0x60')](_0x1b452c,['name',_0x0eff('0x6b')]);_0x3b100f[_0x0eff('0x49')]=_0x0eff('0x6b');_0x360b82=as[_0x0eff('0x6c')](_0x1c455c,_0x3da985[_0x0eff('0x3b')],_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82[_0x0eff('0x6d')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82['value']['end']);}break;case _0x0eff('0x6f'):var _0x43dab8=_0x3b100f[_0x0eff('0x62')][_0x0eff('0x67')](',')[_0x0eff('0x32')](function(_0x1c7ece){return Number(_0x1c7ece);});_0x43dab8[_0x0eff('0x36')](function(_0x2bc778){_0x597192['or'](_0x0eff('0x70'),'%,'+_0x2bc778+',%');});_0x30558f=_[_0x0eff('0x71')](_0x30558f,_0x43dab8);break;case _0x0eff('0x72'):if(_0x3b100f['operator']===_0x0eff('0x66')){_0x299d3e[_0x5e2eb2](_0x0eff('0x73'),'%'+_0x3b100f[_0x0eff('0x62')]+'%',null);}else{_0x3da985=_[_0x0eff('0x60')](_0x1b452c,['name',_0x0eff('0x74')]);_0x3b100f[_0x0eff('0x49')]=_0x0eff('0x74');_0x360b82=as[_0x0eff('0x6c')](_0x1c455c,_0x3da985['type'],_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82['text'],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x23')]);}break;case'body':_0x360b82=as[_0x0eff('0x6c')]('me',null,_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82[_0x0eff('0x6d')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82[_0x0eff('0x62')]['end']);break;}}else{var _0x360b82=as[_0x0eff('0x6c')](_0x1c455c,_0x3da985['type'],_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82[_0x0eff('0x6d')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x23')]);}}}else{var _0xbfa63f=_(_0x4e9e4d[_0x0eff('0x3f')])[_0x0eff('0x3e')]()[_0x0eff('0x32')](function(_0x32ab60){return _['some'](_0x1b452c,[_0x0eff('0x30'),_0x32ab60])?_0x32ab60:undefined;})[_0x0eff('0x75')]()[_0x0eff('0x62')]();if(!_[_0x0eff('0x76')](_0xbfa63f)){_0xbfa63f[_0x0eff('0x36')](function(_0x58c5a0){if(_0x58c5a0==='FaxAccountId'){_0x12af56[_0x0eff('0x48')]('i.FaxAccountId\x20IN\x20?',[][_0x0eff('0x77')](_0x4e9e4d['query'][_0x58c5a0]));}else if(_0x58c5a0===_0x0eff('0x78')){var _0x327865=JSON[_0x0eff('0x79')](_0x4e9e4d[_0x0eff('0x3f')][_0x58c5a0])[_0x0eff('0x7a')];var _0x3b1b34=JSON['parse'](_0x4e9e4d[_0x0eff('0x3f')][_0x58c5a0])['$lte'];_0x12af56[_0x0eff('0x48')](_0x0eff('0x7b'),_0x327865,_0x3b1b34);}else{if(_0x4e9e4d[_0x0eff('0x3f')][_0x58c5a0]===_0x0eff('0x7c')){_0x12af56[_0x0eff('0x48')]('i.'+_0x58c5a0+'\x20IS\x20NULL');}else{_0x12af56[_0x0eff('0x48')]('i.'+_0x58c5a0+'\x20=\x20?',_0x4e9e4d['query'][_0x58c5a0]);}}});}if(_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x7d')]){if(_0x4e9e4d['query']['read']==0x1){_0x12af56[_0x0eff('0x63')](_0x0eff('0x7e'));}else{_0x12af56['having']('`unreadMessages`\x20>\x200');}}if(_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x7f')]){_0x30558f=_['isArray'](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x7f')])?_0x4e9e4d['query'][_0x0eff('0x7f')]:new Array(_0x4e9e4d[_0x0eff('0x3f')]['tag']);_0x30558f[_0x0eff('0x36')](function(_0x4a28eb){_0x597192['or'](_0x0eff('0x70'),'%,'+_0x4a28eb+',%');});}if(_0x4e9e4d['query'][_0x0eff('0x80')]){var _0xb148e=_0x4e9e4d[_0x0eff('0x3f')]['filter'][_0x0eff('0x81')]('\x5c','\x5c\x5c')[_0x0eff('0x81')](/'/g,'\x27\x27');if(qs[_0x0eff('0x82')](_0xb148e)){_0x299d3e['or'](_0x0eff('0x83'),_0xb148e+'%')['or'](_0x0eff('0x84'),_0xb148e+'%');}_0x299d3e['or'](_0x0eff('0x85'),_0xb148e+'%');}}_0x12af56[_0x0eff('0x48')](_0x299d3e);_0x12af56[_0x0eff('0x86')](_0x0eff('0x87'));var _0x39ee87={'type':db[_0x0eff('0x88')][_0x0eff('0x89')][_0x0eff('0x8a')],'raw':!![]};var _0x4e566d=_0x12af56['clone']();_0x4e566d[_0x0eff('0x49')]('i.id');_0x4e566d[_0x0eff('0x49')](_0x0eff('0x8b'),_0x0eff('0x61'));if(_0x3e14ba[_0x0eff('0x46')]){_0x3e14ba[_0x0eff('0x46')][_0x0eff('0x36')](function(_0x296e83){var _0x4f9afc=_0x296e83[0x0]===_0x0eff('0x8c')?_0x296e83[0x0]:'i.'+_0x296e83[0x0];_0x12af56[_0x0eff('0x46')](_0x4f9afc,_0x296e83[0x1]===_0x0eff('0x8d')?![]:!![]);});}if(!_[_0x0eff('0x76')](_0x30558f)){_0x12af56[_0x0eff('0x63')](_0x597192);_0x4e566d['where'](_0x0eff('0x8e'),_0x30558f);}BPromise[_0x0eff('0x8f')]()[_0x0eff('0x2e')](function(){if(!_0x2a6039){if(_0x4e9e4d['query'][_0x0eff('0x90')])return;_0x4e566d[_0x0eff('0x48')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x12af56['where'](_0x0eff('0x91'));return;}if(_0x4e9e4d[_0x0eff('0x92')]['role']!==_0x0eff('0x93'))return;return _0x4e9e4d[_0x0eff('0x92')][_0x0eff('0x94')]({'attributes':['id'],'raw':!![]})[_0x0eff('0x2e')](function(_0x4563d8){if(_[_0x0eff('0x76')](_0x4563d8)){_0x4e566d[_0x0eff('0x48')](_0x0eff('0x95'));_0x12af56[_0x0eff('0x48')](_0x0eff('0x95'));}else{_0x4e566d[_0x0eff('0x48')](_0x0eff('0x96'),_['map'](_0x4563d8,'id'));_0x12af56['where'](_0x0eff('0x96'),_['map'](_0x4563d8,'id'));}});})['then'](function(){if(_0x4e9e4d['user'][_0x0eff('0x97')]===_0x0eff('0x93')&&!_0x2a6039&&!_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x90')])return[];return db[_0x0eff('0x98')][_0x0eff('0x3f')](_0x4e566d[_0x0eff('0x99')](),_0x39ee87);})[_0x0eff('0x2e')](function(_0x25906f){_0x1bd0f1[_0x0eff('0x28')]=_0x25906f[_0x0eff('0x44')];if(_0x1bd0f1[_0x0eff('0x28')]===0x0)return[];return db['sequelize'][_0x0eff('0x3f')](_0x391ebc[_0x0eff('0x99')](),_0x39ee87)[_0x0eff('0x2e')](function(_0xb5ec01){_0x524e49=_['keyBy'](_0xb5ec01,'id');_0x39ee87=_[_0x0eff('0x9a')](_0x39ee87,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4e9e4d[_0x0eff('0x3f')]['fields']){_0x3e14ba[_0x0eff('0x42')][_0x0eff('0x36')](function(_0x47425e){_0x12af56['field']('i.'+_0x47425e);});}else{_0x12af56['field'](_0x0eff('0x8b'),'unreadMessages');_0x12af56['field'](_0x0eff('0x9b'),_0x0eff('0x9c'));_0x12af56['field']('a.mandatoryDisposition','Account.mandatoryDisposition');_0x12af56[_0x0eff('0x49')](_0x0eff('0x9d'),_0x0eff('0x8c'));_0x12af56[_0x0eff('0x49')](_0x0eff('0x9e'));_0x12af56[_0x0eff('0x49')](_0x0eff('0x9f'),'Contact.firstName');_0x12af56[_0x0eff('0x49')]('c.lastName',_0x0eff('0xa0'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xa1'),_0x0eff('0xa2'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xa3'),_0x0eff('0xa4'));_0x12af56['field']('c.mobile',_0x0eff('0xa5'));_0x12af56[_0x0eff('0x49')]('c.fax',_0x0eff('0xa6'));_0x12af56['field'](_0x0eff('0xa7'),_0x0eff('0xa8'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xa9'),_0x0eff('0xaa'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xab'),'TagIds');}if(_0x3e14ba['limit'])_0x12af56[_0x0eff('0x27')](_0x3e14ba[_0x0eff('0x27')]);if(_0x3e14ba['offset'])_0x12af56[_0x0eff('0x25')](_0x3e14ba['offset']);return db['sequelize']['query'](_0x12af56[_0x0eff('0x99')](),_0x39ee87);})[_0x0eff('0x2e')](function(_0x2aae00){if(_0x2aae00[_0x0eff('0x44')]>0x0)_0x455d10[_0x0eff('0x48')](_0x0eff('0xac'),_['map'](_0x2aae00,'id'));return db[_0x0eff('0x98')][_0x0eff('0x3f')](_0x455d10['toString'](),_0x39ee87)[_0x0eff('0x2e')](function(_0x5d696f){var _0x122272=_['groupBy'](_0x5d696f,'FaxInteractionId');var _0x58b888=[];_0x2aae00[_0x0eff('0x36')](function(_0x1efe62){_0x58b888[_0x0eff('0x37')](updateFaxInteraction(_0x1efe62,_0x524e49,_0x122272));});return BPromise[_0x0eff('0xad')](_0x58b888);});});})['then'](function(_0x31ab8c){_0x1bd0f1[_0x0eff('0xae')]=_0x31ab8c;return _0x1bd0f1;})['then'](respondWithFilteredResult(_0xfe8cde,_0x3e14ba))[_0x0eff('0xaf')](handleError(_0xfe8cde,null));};exports[_0x0eff('0xb0')]=function(_0x50f3e8,_0x32efb2){var _0x39c87e={'raw':![],'where':{'id':_0x50f3e8[_0x0eff('0xb1')]['id']}},_0x54e61f={};_0x54e61f['model']=_[_0x0eff('0x3e')](db[_0x0eff('0x39')][_0x0eff('0x3a')]);_0x54e61f[_0x0eff('0x3f')]=_[_0x0eff('0x3e')](_0x50f3e8[_0x0eff('0x3f')]);_0x54e61f[_0x0eff('0x40')]=_['intersection'](_0x54e61f[_0x0eff('0x3d')],_0x54e61f[_0x0eff('0x3f')]);_0x39c87e[_0x0eff('0x42')]=_['intersection'](_0x54e61f[_0x0eff('0x3d')],qs[_0x0eff('0x43')](_0x50f3e8[_0x0eff('0x3f')][_0x0eff('0x43')]));_0x39c87e['attributes']=_0x39c87e['attributes'][_0x0eff('0x44')]?_0x39c87e['attributes']:_0x54e61f[_0x0eff('0x3d')];if(_0x50f3e8[_0x0eff('0x3f')][_0x0eff('0xb2')]){_0x39c87e[_0x0eff('0xb3')]=[{'all':!![]}];}_0x39c87e=_[_0x0eff('0x9a')]({},_0x39c87e,_0x50f3e8[_0x0eff('0xb4')]);return db['FaxInteraction'][_0x0eff('0x60')](_0x39c87e)[_0x0eff('0x2e')](handleEntityNotFound(_0x32efb2,null))[_0x0eff('0x2e')](respondWithResult(_0x32efb2,null))[_0x0eff('0xaf')](handleError(_0x32efb2,null));};exports['create']=function(_0x7d7008,_0x43e118){return db['FaxInteraction'][_0x0eff('0xb5')](_0x7d7008['body'],{})['then'](respondWithResult(_0x43e118,0xc9))['catch'](handleError(_0x43e118,null));};exports[_0x0eff('0xb6')]=function(_0x52faf8,_0x5a7901){if(_0x52faf8[_0x0eff('0xb7')]['id']){delete _0x52faf8[_0x0eff('0xb7')]['id'];}return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x52faf8[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x5a7901,null))[_0x0eff('0x2e')](saveUpdates(_0x52faf8['body'],null))['then'](respondWithResult(_0x5a7901,null))['catch'](handleError(_0x5a7901,null));};exports[_0x0eff('0xb8')]=function(_0x366861,_0x59731d){return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x366861[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x59731d,null))[_0x0eff('0x2e')](removeEntity(_0x59731d,null))['catch'](handleError(_0x59731d,null));};exports['describe']=function(_0x2a2534,_0x2625e3){return db[_0x0eff('0x39')][_0x0eff('0xb9')]()[_0x0eff('0x2e')](respondWithResult(_0x2625e3,null))[_0x0eff('0xaf')](handleError(_0x2625e3,null));};exports[_0x0eff('0xba')]=function(_0x55cbd8,_0x529973,_0x383f07){return db['FaxMessage'][_0x0eff('0x60')]({'where':{'id':_0x55cbd8[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x529973,null))[_0x0eff('0x2e')](function(_0x2d3d00){if(_0x2d3d00){return _0x2d3d00[_0x0eff('0xba')](_0x55cbd8[_0x0eff('0xb7')][_0x0eff('0xbb')],_[_0x0eff('0xbc')](_0x55cbd8[_0x0eff('0xb7')],[_0x0eff('0xbb'),'id'])||{});}})[_0x0eff('0x2e')](respondWithResult(_0x529973,null))['catch'](handleError(_0x529973,null));};exports['getMessages']=function(_0x57eac8,_0x394def,_0x380dbe){var _0x4dc006={'raw':![],'where':{}};var _0x586642={};var _0x20b53b={'count':0x0,'rows':[]};return db[_0x0eff('0x39')][_0x0eff('0xbd')]({'where':{'id':_0x57eac8[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x394def,null))['then'](function(_0x575d13){if(_0x575d13){_0x586642[_0x0eff('0x3d')]=_[_0x0eff('0x3e')](db[_0x0eff('0xbe')][_0x0eff('0x3a')]);_0x586642['query']=_[_0x0eff('0x3e')](_0x57eac8[_0x0eff('0x3f')]);_0x586642[_0x0eff('0x40')]=_['intersection'](_0x586642[_0x0eff('0x3d')],_0x586642[_0x0eff('0x3f')]);_0x4dc006['attributes']=_['intersection'](_0x586642[_0x0eff('0x3d')],qs[_0x0eff('0x43')](_0x57eac8[_0x0eff('0x3f')]['fields']));_0x4dc006['attributes']=_0x4dc006['attributes'][_0x0eff('0x44')]?_0x4dc006[_0x0eff('0x42')]:_0x586642[_0x0eff('0x3d')];if(!_0x57eac8[_0x0eff('0x3f')][_0x0eff('0xbf')](_0x0eff('0x45'))){_0x4dc006['limit']=qs[_0x0eff('0x27')](_0x57eac8[_0x0eff('0x3f')]['limit']);_0x4dc006[_0x0eff('0x25')]=qs['offset'](_0x57eac8[_0x0eff('0x3f')]['offset']);}_0x4dc006[_0x0eff('0x46')]=qs[_0x0eff('0x47')](_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x47')]);_0x4dc006['where']=qs[_0x0eff('0x40')](_[_0x0eff('0xc0')](_0x57eac8[_0x0eff('0x3f')],_0x586642[_0x0eff('0x40')]));_0x4dc006[_0x0eff('0x48')][_0x0eff('0xc1')]=_0x575d13['id'];if(_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x80')]){_0x4dc006[_0x0eff('0x48')]=_[_0x0eff('0x9a')](_0x4dc006[_0x0eff('0x48')],{'$or':_[_0x0eff('0x32')](_0x4dc006[_0x0eff('0x42')],function(_0x2e7129){var _0x5569b8={};_0x5569b8[_0x2e7129]={'$like':'%'+_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x80')]+'%'};return _0x5569b8;})});}if(_0x57eac8[_0x0eff('0x3f')]['$gte']){var _0x1976ae=_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x7a')]['split'](',');var _0x28875c={};_0x28875c[_0x1976ae[0x0]]={'$gte':moment(_0x1976ae[0x1])[_0x0eff('0xc2')](_0x0eff('0xc3'))};_0x4dc006[_0x0eff('0x48')]=_[_0x0eff('0x9a')](_0x4dc006[_0x0eff('0x48')],_0x28875c);}_0x4dc006=_[_0x0eff('0x9a')]({},_0x4dc006,_0x57eac8['options']);return db['FaxMessage'][_0x0eff('0x28')]({'where':_0x4dc006[_0x0eff('0x48')]})[_0x0eff('0x2e')](function(_0x2cde6f){_0x20b53b[_0x0eff('0x28')]=_0x2cde6f;if(_0x57eac8[_0x0eff('0x3f')][_0x0eff('0xb2')]){_0x4dc006[_0x0eff('0xb3')]=[{'all':!![]}];}return db['FaxMessage'][_0x0eff('0xc4')](_0x4dc006);})[_0x0eff('0x2e')](function(_0x48bd36){_0x20b53b['rows']=_0x48bd36;return _0x20b53b;});}})['then'](respondWithFilteredResult(_0x394def,_0x4dc006))[_0x0eff('0xaf')](handleError(_0x394def,null));};exports['addTags']=function(_0xd63175,_0xb7568f,_0x45bddb){return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0xd63175[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0xb7568f,null))[_0x0eff('0x2e')](function(_0x24830e){if(_0x24830e){return _0x24830e[_0x0eff('0xc5')](_0xd63175[_0x0eff('0xb7')][_0x0eff('0xbb')],_[_0x0eff('0xbc')](_0xd63175[_0x0eff('0xb7')],['ids','id'])||{})['spread'](function(){return db[_0x0eff('0x6f')][_0x0eff('0xc4')]({'attributes':['id','name',_0x0eff('0x4a')],'where':{'id':_0xd63175[_0x0eff('0xb7')]['ids']}});})[_0x0eff('0x2e')](function(_0x409adc){socket[_0x0eff('0xc6')](_0x0eff('0xc7'),{'id':Number(_0xd63175[_0x0eff('0xb1')]['id']),'tags':_0x409adc||[]});return{'id':Number(_0xd63175[_0x0eff('0xb1')]['id']),'tags':_0x409adc||[]};});}})[_0x0eff('0x2e')](respondWithResult(_0xb7568f,null))[_0x0eff('0xaf')](handleError(_0xb7568f,null));};exports[_0x0eff('0xc8')]=function(_0x587b01,_0x3f10a3,_0x23729b){return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x587b01[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x3f10a3,null))[_0x0eff('0x2e')](function(_0x403f9c){if(_0x403f9c){return _0x403f9c[_0x0eff('0xc8')](_0x587b01[_0x0eff('0x3f')][_0x0eff('0xbb')]);}})[_0x0eff('0x2e')](respondWithStatusCode(_0x3f10a3,null))[_0x0eff('0xaf')](handleError(_0x3f10a3,null));};exports['download']=function(_0x21e8f8,_0x5e8735){var _0x2ccabb=moment()[_0x0eff('0xc9')]()[_0x0eff('0x99')]();var _0x439676=path['join'](config['root'],_0x0eff('0xca'),_0x0eff('0xcb'),'tmp');var _0x413dd9=path[_0x0eff('0xcc')](config[_0x0eff('0xcd')],_0x0eff('0xca'),_0x0eff('0xcb'),_0x0eff('0xce'));var _0x43ea0f=path[_0x0eff('0xcc')](_0x439676,_0x2ccabb);var _0x5b27a7=util[_0x0eff('0xc2')](_0x0eff('0xcf'),_0x21e8f8[_0x0eff('0xb1')]['id'],_0x2ccabb);var _0x32351e=path[_0x0eff('0xcc')](_0x439676,_0x5b27a7);var _0x1463d7=[];_0x1463d7[_0x0eff('0x37')]({'model':db[_0x0eff('0xd0')],'as':_0x0eff('0xd0'),'raw':!![]});var _0x5b8ac1=[{'model':db['FaxMessage'],'as':'Messages','attributes':['id',_0x0eff('0xb7'),_0x0eff('0x78')],'include':_0x1463d7}];return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x21e8f8[_0x0eff('0xb1')]['id']},'include':_0x5b8ac1})['then'](handleEntityNotFound(_0x5e8735,null))[_0x0eff('0x2e')](function(_0x84370c){if(_0x84370c&&_0x84370c[_0x0eff('0xd1')]){var _0x4574a0=_0x84370c[_0x0eff('0xd2')]({'plain':!![]});fs[_0x0eff('0xd3')](_0x43ea0f);for(var _0xc5ebcc=0x0;_0xc5ebcc<_0x4574a0['Messages'][_0x0eff('0x44')];_0xc5ebcc++){var _0x576c78=_0x4574a0[_0x0eff('0xd1')][_0xc5ebcc][_0x0eff('0xd0')];if(_0x576c78){var _0x351243=path['join'](_0x413dd9,_0x576c78[_0x0eff('0xd4')]);if(fs[_0x0eff('0xd5')](_0x351243)){fs[_0x0eff('0xd6')](_0x351243)['pipe'](fs['createWriteStream'](path[_0x0eff('0xcc')](_0x43ea0f,_0x576c78[_0x0eff('0xd4')])));}}}return BPromise[_0x0eff('0x8f')]()[_0x0eff('0x2e')](function(){return new BPromise(function(_0x8efaad,_0x55463f){zipdir(_0x43ea0f,{'saveTo':_0x32351e},function(_0xb63bf6,_0x75eecd){if(_0xb63bf6)return _0x55463f(_0xb63bf6);return _0x8efaad(_0x75eecd);});})[_0x0eff('0x2e')](function(){return new BPromise(function(_0x360bc,_0x2b6bcd){rimraf(_0x43ea0f,function(_0x58731d){if(_0x58731d)_0x2b6bcd(_0x58731d);return _0x360bc();});});})[_0x0eff('0x2e')](function(){return _0x5e8735[_0x0eff('0xd7')](_0x32351e,_0x5b27a7,function(_0x629db7){if(_0x629db7){console[_0x0eff('0xd8')](_0x0eff('0xd9'),_0x629db7);}else{fs[_0x0eff('0xda')](_0x32351e);}});});});}else{return _0x5e8735[_0x0eff('0x2f')](0xc8);}})[_0x0eff('0xaf')](handleError(_0x5e8735,null));};
\ No newline at end of file
+var _0x91fa=['clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','fields','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','FaxInteractionId','all','rows','catch','show','params','rawAttributes','includeAll','include','options','create','describe','addMessage','omit','ids','findOne','FaxMessage','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','download','join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','basename','existsSync','createReadStream','pipe','createWriteStream','log','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','bluebird','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','status','offset','undefined','count','limit','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','index','FaxInteraction','fieldName','type','key','keys','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','select','field','color','from','tools_tags','u.id','u.fullname','user_has_fax_interactions','left_join','users','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','having','`\x20=\x200','`\x20>\x200','operator','$substring','ContactId','buildExpression','value','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','end','body','compact','isEmpty','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT'];(function(_0x7de9b8,_0x52beda){var _0x390280=function(_0x4cffea){while(--_0x4cffea){_0x7de9b8['push'](_0x7de9b8['shift']());}};_0x390280(++_0x52beda);}(_0x91fa,0x128));var _0xa91f=function(_0x83c716,_0x25152d){_0x83c716=_0x83c716-0x0;var _0xab9893=_0x91fa[_0x83c716];return _0xab9893;};'use strict';var emlformat=require(_0xa91f('0x0'));var rimraf=require(_0xa91f('0x1'));var zipdir=require(_0xa91f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa91f('0x3'));var moment=require('moment');var BPromise=require(_0xa91f('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa91f('0x5'));var sox=require(_0xa91f('0x6'));var csv=require(_0xa91f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa91f('0x8'));var _=require(_0xa91f('0x9'));var squel=require(_0xa91f('0xa'));var crypto=require('crypto');var jsforce=require(_0xa91f('0xb'));var deskjs=require(_0xa91f('0xc'));var toCsv=require(_0xa91f('0x7'));var querystring=require(_0xa91f('0xd'));var Papa=require('papaparse');var Redis=require(_0xa91f('0xe'));var authService=require(_0xa91f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xa91f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa91f('0x11'))(_0xa91f('0x12'));var utils=require(_0xa91f('0x13'));var config=require(_0xa91f('0x14'));var licenseUtil=require(_0xa91f('0x15'));var db=require(_0xa91f('0x16'))['db'];config[_0xa91f('0x17')]=_[_0xa91f('0x18')](config[_0xa91f('0x17')],{'host':_0xa91f('0x19'),'port':0x18eb});var socket=require(_0xa91f('0x1a'))(new Redis(config[_0xa91f('0x17')]));require(_0xa91f('0x1b'))['register'](socket);function respondWithStatusCode(_0x555909,_0xb0b2a2){_0xb0b2a2=_0xb0b2a2||0xcc;return function(_0x47427f){if(_0x47427f){return _0x555909[_0xa91f('0x1c')](_0xb0b2a2);}return _0x555909[_0xa91f('0x1d')](_0xb0b2a2)['end']();};}function respondWithResult(_0x2cc6f0,_0x3095f6){_0x3095f6=_0x3095f6||0xc8;return function(_0x3510c8){if(_0x3510c8){return _0x2cc6f0[_0xa91f('0x1d')](_0x3095f6)['json'](_0x3510c8);}};}function respondWithFilteredResult(_0x36486d,_0x51cfe5){return function(_0x2df1ff){if(_0x2df1ff){var _0x22f1f1=typeof _0x51cfe5[_0xa91f('0x1e')]===_0xa91f('0x1f')&&typeof _0x51cfe5['limit']==='undefined';var _0x31dd80=_0x2df1ff['count'];var _0x1adc47=_0x22f1f1?0x0:_0x51cfe5[_0xa91f('0x1e')];var _0x33874e=_0x22f1f1?_0x2df1ff[_0xa91f('0x20')]:_0x51cfe5[_0xa91f('0x1e')]+_0x51cfe5[_0xa91f('0x21')];var _0x344619;if(_0x33874e>=_0x31dd80){_0x33874e=_0x31dd80;_0x344619=0xc8;}else{_0x344619=0xce;}_0x36486d[_0xa91f('0x1d')](_0x344619);return _0x36486d[_0xa91f('0x22')]('Content-Range',_0x1adc47+'-'+_0x33874e+'/'+_0x31dd80)[_0xa91f('0x23')](_0x2df1ff);}return null;};}function patchUpdates(_0x22cc57){return function(_0x51d7cc){try{jsonpatch[_0xa91f('0x24')](_0x51d7cc,_0x22cc57,!![]);}catch(_0x101c63){return BPromise[_0xa91f('0x25')](_0x101c63);}return _0x51d7cc[_0xa91f('0x26')]();};}function saveUpdates(_0x21b616,_0x5223eb){return function(_0x2c7836){if(_0x2c7836){return _0x2c7836[_0xa91f('0x27')](_0x21b616)[_0xa91f('0x28')](function(_0x441c07){return _0x441c07;});}return null;};}function removeEntity(_0x611bb7,_0xd641ef){return function(_0x544f6b){if(_0x544f6b){return _0x544f6b[_0xa91f('0x29')]()[_0xa91f('0x28')](function(){_0x611bb7[_0xa91f('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20d84c,_0x3a945d){return function(_0x110753){if(!_0x110753){_0x20d84c[_0xa91f('0x1c')](0x194);}return _0x110753;};}function handleError(_0x28c2c4,_0x192747){_0x192747=_0x192747||0x1f4;return function(_0x55da81){logger[_0xa91f('0x2a')](_0x55da81[_0xa91f('0x2b')]);if(_0x55da81[_0xa91f('0x2c')]){delete _0x55da81[_0xa91f('0x2c')];}_0x28c2c4[_0xa91f('0x1d')](_0x192747)[_0xa91f('0x2d')](_0x55da81);};}function getInteractionUsers(_0x49270b,_0x545c5f){return new BPromise(function(_0x1eef9b,_0x73c2b1){try{if(_0x545c5f[_0x49270b['id']]){_0x49270b[_0xa91f('0x2e')]=_[_0xa91f('0x2f')](_0x545c5f[_0x49270b['id']],function(_0xa9d816){return{'id':_0xa9d816['id'],'fullname':_0xa9d816['fullname']};});}}catch(_0x538a26){_0x73c2b1(_0x538a26);}_0x1eef9b(_0x49270b);});}function getInteractionTags(_0x488656,_0x187ad7){return new BPromise(function(_0x4a536d,_0x4ed8e4){try{if(_0x488656[_0xa91f('0x30')]){_0x488656[_0xa91f('0x31')]=[];_0x488656[_0xa91f('0x30')][_0xa91f('0x32')](',')[_0xa91f('0x33')](function(_0x1f7fec){_0x488656[_0xa91f('0x31')][_0xa91f('0x34')](_0x187ad7[_0x1f7fec]);});}delete _0x488656[_0xa91f('0x30')];}catch(_0x5cab29){_0x4ed8e4(_0x5cab29);}_0x4a536d(_0x488656);});}function updateFaxInteraction(_0x297ae4,_0x348b7c,_0x18104e){return new BPromise(function(_0xe8776d,_0x2c39ed){return getInteractionUsers(_0x297ae4,_0x18104e)[_0xa91f('0x28')](function(_0x3b0292){return getInteractionTags(_0x3b0292,_0x348b7c);})[_0xa91f('0x28')](function(_0xa99c8){_0xe8776d(_0xa99c8);})['catch'](function(_0x347f03){_0x2c39ed(_0x347f03);});});}exports[_0xa91f('0x35')]=function(_0xdbfa6f,_0x1bdfb0){var _0x37d998={},_0x27afb2={},_0x8b504c={'count':0x0,'rows':[]};var _0x141909=_['map'](db[_0xa91f('0x36')]['rawAttributes'],function(_0x2c5b67){return{'name':_0x2c5b67[_0xa91f('0x37')],'type':_0x2c5b67[_0xa91f('0x38')][_0xa91f('0x39')]};});_0x27afb2['model']=_[_0xa91f('0x2f')](_0x141909,_0xa91f('0x2c'));_0x27afb2['query']=_[_0xa91f('0x3a')](_0xdbfa6f[_0xa91f('0x3b')]);_0x27afb2[_0xa91f('0x3c')]=_[_0xa91f('0x3d')](_0x27afb2[_0xa91f('0x3e')],_0x27afb2[_0xa91f('0x3b')]);_0x37d998[_0xa91f('0x3f')]=_[_0xa91f('0x3d')](_0x27afb2[_0xa91f('0x3e')],qs['fields'](_0xdbfa6f['query']['fields']));_0x37d998[_0xa91f('0x3f')]=_0x37d998['attributes'][_0xa91f('0x40')]?_0x37d998['attributes']:_0x27afb2['model'];if(!_0xdbfa6f['query'][_0xa91f('0x41')](_0xa91f('0x42'))){_0x37d998[_0xa91f('0x21')]=qs['limit'](_0xdbfa6f['query'][_0xa91f('0x21')]);_0x37d998[_0xa91f('0x1e')]=qs[_0xa91f('0x1e')](_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x1e')]);}_0x37d998[_0xa91f('0x43')]=qs['sort'](_0xdbfa6f['query'][_0xa91f('0x44')]);_0x37d998[_0xa91f('0x45')]=qs['filters'](_['pick'](_0xdbfa6f[_0xa91f('0x3b')],_0x27afb2[_0xa91f('0x3c')]),_0x141909);var _0x53ce41=[];var _0x113694=squel[_0xa91f('0x46')]()['field']('id')[_0xa91f('0x47')](_0xa91f('0x2c'))['field'](_0xa91f('0x48'))[_0xa91f('0x49')](_0xa91f('0x4a'));var _0x13abfe=squel[_0xa91f('0x46')]()[_0xa91f('0x47')](_0xa91f('0x4b'))['field'](_0xa91f('0x4c'))[_0xa91f('0x47')]('ui.FaxInteractionId')[_0xa91f('0x49')](_0xa91f('0x4d'),'ui')[_0xa91f('0x4e')](_0xa91f('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0x519097=squel[_0xa91f('0x46')]()[_0xa91f('0x49')](_0xa91f('0x50'),'i')[_0xa91f('0x4e')](_0xa91f('0x51'),'c',_0xa91f('0x52'))[_0xa91f('0x4e')]('users','o',_0xa91f('0x53'))['left_join']('fax_accounts','a',_0xa91f('0x54'))['left_join'](_0xa91f('0x55'),'me',_0xa91f('0x56'))['left_join'](_0xa91f('0x57'),'it',_0xa91f('0x58'))['left_join'](_0xa91f('0x4a'),'t',_0xa91f('0x59'));var _0x20e8ed=squel[_0xa91f('0x5a')]();var _0x3b6e31=[];var _0x5bb48b=squel['expr']();var _0x49a58d;if(_0xdbfa6f[_0xa91f('0x3b')]['search']){_0x49a58d=as[_0xa91f('0x5b')](_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x5c')]);var _0x593e57=_0x49a58d[_0xa91f('0x5d')];for(var _0x1dcfe7=0x0;_0x1dcfe7<_0x49a58d[_0xa91f('0x5e')][_0xa91f('0x40')];_0x1dcfe7++){var _0xb5c3d8=_0x49a58d[_0xa91f('0x5e')][_0x1dcfe7];var _0x34c921='i';var _0x3fdce6=_[_0xa91f('0x5f')](_0x141909,[_0xa91f('0x2c'),_0xb5c3d8['field']]);if(!_0x3fdce6){switch(_0xb5c3d8['field']){case'unreadMessages':if(_0xb5c3d8['value']==0x1){_0x519097[_0xa91f('0x60')]('`'+_0xb5c3d8[_0xa91f('0x47')]+_0xa91f('0x61'));}else{_0x519097[_0xa91f('0x60')]('`'+_0xb5c3d8[_0xa91f('0x47')]+_0xa91f('0x62'));}break;case'Contact':if(_0xb5c3d8[_0xa91f('0x63')]===_0xa91f('0x64')){if(_0xb5c3d8['value'][_0xa91f('0x32')]('\x20')[_0xa91f('0x40')]>0x1){_0x20e8ed[_0x593e57]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0xb5c3d8['value']),null);}else{var _0x2c64d8='%'+_0xb5c3d8['value']+'%';_0x20e8ed[_0x593e57]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2c64d8,_0x2c64d8,_0x2c64d8);}}else{_0x3fdce6=_[_0xa91f('0x5f')](_0x141909,[_0xa91f('0x2c'),_0xa91f('0x65')]);_0xb5c3d8[_0xa91f('0x47')]=_0xa91f('0x65');_0x487874=as[_0xa91f('0x66')](_0x34c921,_0x3fdce6[_0xa91f('0x38')],_0xb5c3d8);_0x20e8ed[_0x593e57](_0x487874['text'],_0x487874[_0xa91f('0x67')][_0xa91f('0x68')],_0x487874[_0xa91f('0x67')]['end']);}break;case _0xa91f('0x69'):var _0x1c8142=_0xb5c3d8[_0xa91f('0x67')][_0xa91f('0x32')](',')[_0xa91f('0x2f')](function(_0x15599e){return Number(_0x15599e);});_0x1c8142[_0xa91f('0x33')](function(_0x1d535a){_0x5bb48b['or'](_0xa91f('0x6a'),'%,'+_0x1d535a+',%');});_0x3b6e31=_[_0xa91f('0x6b')](_0x3b6e31,_0x1c8142);break;case _0xa91f('0x6c'):if(_0xb5c3d8['operator']==='$substring'){_0x20e8ed[_0x593e57](_0xa91f('0x6d'),'%'+_0xb5c3d8[_0xa91f('0x67')]+'%',null);}else{_0x3fdce6=_[_0xa91f('0x5f')](_0x141909,[_0xa91f('0x2c'),_0xa91f('0x6e')]);_0xb5c3d8[_0xa91f('0x47')]='UserId';_0x487874=as['buildExpression'](_0x34c921,_0x3fdce6[_0xa91f('0x38')],_0xb5c3d8);_0x20e8ed[_0x593e57](_0x487874[_0xa91f('0x6f')],_0x487874['value'][_0xa91f('0x68')],_0x487874[_0xa91f('0x67')][_0xa91f('0x70')]);}break;case _0xa91f('0x71'):_0x487874=as[_0xa91f('0x66')]('me',null,_0xb5c3d8);_0x20e8ed[_0x593e57](_0x487874[_0xa91f('0x6f')],_0x487874[_0xa91f('0x67')][_0xa91f('0x68')],_0x487874[_0xa91f('0x67')][_0xa91f('0x70')]);break;}}else{var _0x487874=as[_0xa91f('0x66')](_0x34c921,_0x3fdce6[_0xa91f('0x38')],_0xb5c3d8);_0x20e8ed[_0x593e57](_0x487874[_0xa91f('0x6f')],_0x487874[_0xa91f('0x67')]['start'],_0x487874['value'][_0xa91f('0x70')]);}}}else{var _0x53e085=_(_0xdbfa6f['query'])[_0xa91f('0x3a')]()[_0xa91f('0x2f')](function(_0x47e39b){return _['some'](_0x141909,[_0xa91f('0x2c'),_0x47e39b])?_0x47e39b:undefined;})[_0xa91f('0x72')]()[_0xa91f('0x67')]();if(!_[_0xa91f('0x73')](_0x53e085)){_0x53e085['forEach'](function(_0x158db3){if(_0x158db3==='FaxAccountId'){_0x519097[_0xa91f('0x45')](_0xa91f('0x74'),[][_0xa91f('0x75')](_0xdbfa6f[_0xa91f('0x3b')][_0x158db3]));}else if(_0x158db3===_0xa91f('0x76')){var _0x3ce8af=JSON[_0xa91f('0x77')](_0xdbfa6f[_0xa91f('0x3b')][_0x158db3])[_0xa91f('0x78')];var _0x4a9992=JSON[_0xa91f('0x77')](_0xdbfa6f[_0xa91f('0x3b')][_0x158db3])[_0xa91f('0x79')];_0x519097[_0xa91f('0x45')](_0xa91f('0x7a'),_0x3ce8af,_0x4a9992);}else{if(_0xdbfa6f[_0xa91f('0x3b')][_0x158db3]===_0xa91f('0x7b')){_0x519097[_0xa91f('0x45')]('i.'+_0x158db3+_0xa91f('0x7c'));}else{_0x519097['where']('i.'+_0x158db3+_0xa91f('0x7d'),_0xdbfa6f[_0xa91f('0x3b')][_0x158db3]);}}});}if(_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x7e')]){if(_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x7e')]==0x1){_0x519097[_0xa91f('0x60')]('`unreadMessages`\x20=\x200');}else{_0x519097[_0xa91f('0x60')](_0xa91f('0x7f'));}}if(_0xdbfa6f[_0xa91f('0x3b')]['tag']){_0x3b6e31=_[_0xa91f('0x80')](_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x81')])?_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x81')]:new Array(_0xdbfa6f[_0xa91f('0x3b')]['tag']);_0x3b6e31['forEach'](function(_0x5dd827){_0x5bb48b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5dd827+',%');});}if(_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x82')]){var _0x369f27=_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x82')][_0xa91f('0x83')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x369f27)){_0x20e8ed['or'](_0xa91f('0x84'),_0x369f27+'%')['or'](_0xa91f('0x85'),_0x369f27+'%');}_0x20e8ed['or'](_0xa91f('0x86'),_0x369f27+'%');}}_0x519097[_0xa91f('0x45')](_0x20e8ed);_0x519097[_0xa91f('0x87')](_0xa91f('0x88'));var _0x4e59f4={'type':db[_0xa91f('0x89')][_0xa91f('0x8a')][_0xa91f('0x8b')],'raw':!![]};var _0x197d42=_0x519097[_0xa91f('0x8c')]();_0x197d42['field'](_0xa91f('0x88'));_0x197d42[_0xa91f('0x47')](_0xa91f('0x8d'),_0xa91f('0x8e'));if(_0x37d998[_0xa91f('0x43')]){_0x37d998[_0xa91f('0x43')]['forEach'](function(_0x1417bf){var _0x4d7fe7=_0x1417bf[0x0]===_0xa91f('0x8f')?_0x1417bf[0x0]:'i.'+_0x1417bf[0x0];_0x519097[_0xa91f('0x43')](_0x4d7fe7,_0x1417bf[0x1]===_0xa91f('0x90')?![]:!![]);});}if(!_[_0xa91f('0x73')](_0x3b6e31)){_0x519097[_0xa91f('0x60')](_0x5bb48b);_0x197d42[_0xa91f('0x45')](_0xa91f('0x91'),_0x3b6e31);}BPromise['resolve']()[_0xa91f('0x28')](function(){if(!_0x49a58d){if(_0xdbfa6f['query'][_0xa91f('0x92')])return;_0x197d42[_0xa91f('0x45')](_0xa91f('0x93'));_0x519097[_0xa91f('0x45')](_0xa91f('0x93'));return;}if(_0xdbfa6f[_0xa91f('0x94')]['role']!==_0xa91f('0x95'))return;return _0xdbfa6f[_0xa91f('0x94')][_0xa91f('0x96')]({'attributes':['id'],'raw':!![]})[_0xa91f('0x28')](function(_0x477a1b){if(_[_0xa91f('0x73')](_0x477a1b)){_0x197d42[_0xa91f('0x45')](_0xa91f('0x97'));_0x519097[_0xa91f('0x45')](_0xa91f('0x97'));}else{_0x197d42['where']('i.FaxAccountId\x20IN\x20?',_[_0xa91f('0x2f')](_0x477a1b,'id'));_0x519097[_0xa91f('0x45')](_0xa91f('0x74'),_[_0xa91f('0x2f')](_0x477a1b,'id'));}});})[_0xa91f('0x28')](function(){if(_0xdbfa6f['user'][_0xa91f('0x98')]==='agent'&&!_0x49a58d&&!_0xdbfa6f[_0xa91f('0x3b')][_0xa91f('0x92')])return[];return db[_0xa91f('0x99')][_0xa91f('0x3b')](_0x197d42['toString'](),_0x4e59f4);})[_0xa91f('0x28')](function(_0x1d0536){_0x8b504c['count']=_0x1d0536[_0xa91f('0x40')];if(_0x8b504c[_0xa91f('0x20')]===0x0)return[];return db[_0xa91f('0x99')][_0xa91f('0x3b')](_0x113694[_0xa91f('0x9a')](),_0x4e59f4)[_0xa91f('0x28')](function(_0x3279e0){_0x53ce41=_[_0xa91f('0x9b')](_0x3279e0,'id');_0x4e59f4=_[_0xa91f('0x9c')](_0x4e59f4,{'model':db[_0xa91f('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xdbfa6f['query'][_0xa91f('0x9d')]){_0x37d998['attributes'][_0xa91f('0x33')](function(_0x51822e){_0x519097[_0xa91f('0x47')]('i.'+_0x51822e);});}else{_0x519097[_0xa91f('0x47')](_0xa91f('0x8d'),'unreadMessages');_0x519097[_0xa91f('0x47')]('a.key',_0xa91f('0x9e'));_0x519097[_0xa91f('0x47')](_0xa91f('0x9f'),_0xa91f('0xa0'));_0x519097[_0xa91f('0x47')]('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',_0xa91f('0x8f'));_0x519097[_0xa91f('0x47')](_0xa91f('0xa1'));_0x519097[_0xa91f('0x47')](_0xa91f('0xa2'),_0xa91f('0xa3'));_0x519097[_0xa91f('0x47')](_0xa91f('0xa4'),_0xa91f('0xa5'));_0x519097['field'](_0xa91f('0xa6'),_0xa91f('0xa7'));_0x519097[_0xa91f('0x47')](_0xa91f('0xa8'),'Contact.phone');_0x519097[_0xa91f('0x47')](_0xa91f('0xa9'),_0xa91f('0xaa'));_0x519097[_0xa91f('0x47')]('c.fax',_0xa91f('0xab'));_0x519097['field']('o.fullname','Owner.fullname');_0x519097[_0xa91f('0x47')](_0xa91f('0xac'),'Owner.internal');_0x519097[_0xa91f('0x47')](_0xa91f('0xad'),'TagIds');}if(_0x37d998['limit'])_0x519097[_0xa91f('0x21')](_0x37d998['limit']);if(_0x37d998['offset'])_0x519097['offset'](_0x37d998['offset']);return db['sequelize'][_0xa91f('0x3b')](_0x519097[_0xa91f('0x9a')](),_0x4e59f4);})['then'](function(_0x14c18d){if(_0x14c18d[_0xa91f('0x40')]>0x0)_0x13abfe[_0xa91f('0x45')]('ui.FaxInteractionId\x20IN\x20?',_['map'](_0x14c18d,'id'));return db[_0xa91f('0x99')]['query'](_0x13abfe[_0xa91f('0x9a')](),_0x4e59f4)[_0xa91f('0x28')](function(_0x15d189){var _0x22a564=_[_0xa91f('0xae')](_0x15d189,_0xa91f('0xaf'));var _0x3d7263=[];_0x14c18d[_0xa91f('0x33')](function(_0x290264){_0x3d7263['push'](updateFaxInteraction(_0x290264,_0x53ce41,_0x22a564));});return BPromise[_0xa91f('0xb0')](_0x3d7263);});});})['then'](function(_0x1f315d){_0x8b504c[_0xa91f('0xb1')]=_0x1f315d;return _0x8b504c;})[_0xa91f('0x28')](respondWithFilteredResult(_0x1bdfb0,_0x37d998))[_0xa91f('0xb2')](handleError(_0x1bdfb0,null));};exports[_0xa91f('0xb3')]=function(_0x5a5820,_0x3ba279){var _0x2899e4={'raw':![],'where':{'id':_0x5a5820[_0xa91f('0xb4')]['id']}},_0x365a56={};_0x365a56['model']=_[_0xa91f('0x3a')](db[_0xa91f('0x36')][_0xa91f('0xb5')]);_0x365a56['query']=_['keys'](_0x5a5820['query']);_0x365a56['filters']=_[_0xa91f('0x3d')](_0x365a56[_0xa91f('0x3e')],_0x365a56['query']);_0x2899e4['attributes']=_[_0xa91f('0x3d')](_0x365a56['model'],qs[_0xa91f('0x9d')](_0x5a5820['query'][_0xa91f('0x9d')]));_0x2899e4[_0xa91f('0x3f')]=_0x2899e4['attributes'][_0xa91f('0x40')]?_0x2899e4[_0xa91f('0x3f')]:_0x365a56[_0xa91f('0x3e')];if(_0x5a5820[_0xa91f('0x3b')][_0xa91f('0xb6')]){_0x2899e4[_0xa91f('0xb7')]=[{'all':!![]}];}_0x2899e4=_[_0xa91f('0x9c')]({},_0x2899e4,_0x5a5820[_0xa91f('0xb8')]);return db[_0xa91f('0x36')][_0xa91f('0x5f')](_0x2899e4)['then'](handleEntityNotFound(_0x3ba279,null))[_0xa91f('0x28')](respondWithResult(_0x3ba279,null))['catch'](handleError(_0x3ba279,null));};exports[_0xa91f('0xb9')]=function(_0x4a2478,_0x6a926a){return db[_0xa91f('0x36')][_0xa91f('0xb9')](_0x4a2478[_0xa91f('0x71')],{})[_0xa91f('0x28')](respondWithResult(_0x6a926a,0xc9))[_0xa91f('0xb2')](handleError(_0x6a926a,null));};exports[_0xa91f('0x27')]=function(_0x337daa,_0x7f17d7){if(_0x337daa['body']['id']){delete _0x337daa[_0xa91f('0x71')]['id'];}return db[_0xa91f('0x36')]['find']({'where':{'id':_0x337daa[_0xa91f('0xb4')]['id']}})[_0xa91f('0x28')](handleEntityNotFound(_0x7f17d7,null))['then'](saveUpdates(_0x337daa['body'],null))[_0xa91f('0x28')](respondWithResult(_0x7f17d7,null))['catch'](handleError(_0x7f17d7,null));};exports['destroy']=function(_0x434361,_0x225df8){return db[_0xa91f('0x36')][_0xa91f('0x5f')]({'where':{'id':_0x434361['params']['id']}})['then'](handleEntityNotFound(_0x225df8,null))[_0xa91f('0x28')](removeEntity(_0x225df8,null))[_0xa91f('0xb2')](handleError(_0x225df8,null));};exports[_0xa91f('0xba')]=function(_0x373aed,_0x47c010){return db[_0xa91f('0x36')]['describe']()[_0xa91f('0x28')](respondWithResult(_0x47c010,null))[_0xa91f('0xb2')](handleError(_0x47c010,null));};exports[_0xa91f('0xbb')]=function(_0x50850c,_0x32156f,_0x287d9d){return db['FaxMessage'][_0xa91f('0x5f')]({'where':{'id':_0x50850c[_0xa91f('0xb4')]['id']}})[_0xa91f('0x28')](handleEntityNotFound(_0x32156f,null))[_0xa91f('0x28')](function(_0x566010){if(_0x566010){return _0x566010['addMessage'](_0x50850c[_0xa91f('0x71')]['ids'],_[_0xa91f('0xbc')](_0x50850c[_0xa91f('0x71')],[_0xa91f('0xbd'),'id'])||{});}})['then'](respondWithResult(_0x32156f,null))[_0xa91f('0xb2')](handleError(_0x32156f,null));};exports['getMessages']=function(_0x2d13a7,_0x33a5ef,_0x404621){var _0x366404={'raw':![],'where':{}};var _0x4b07dc={};var _0xfe4a53={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xa91f('0xbe')]({'where':{'id':_0x2d13a7[_0xa91f('0xb4')]['id']}})[_0xa91f('0x28')](handleEntityNotFound(_0x33a5ef,null))[_0xa91f('0x28')](function(_0x443235){if(_0x443235){_0x4b07dc[_0xa91f('0x3e')]=_[_0xa91f('0x3a')](db[_0xa91f('0xbf')]['rawAttributes']);_0x4b07dc['query']=_[_0xa91f('0x3a')](_0x2d13a7[_0xa91f('0x3b')]);_0x4b07dc['filters']=_['intersection'](_0x4b07dc[_0xa91f('0x3e')],_0x4b07dc['query']);_0x366404[_0xa91f('0x3f')]=_['intersection'](_0x4b07dc[_0xa91f('0x3e')],qs[_0xa91f('0x9d')](_0x2d13a7[_0xa91f('0x3b')][_0xa91f('0x9d')]));_0x366404['attributes']=_0x366404[_0xa91f('0x3f')]['length']?_0x366404[_0xa91f('0x3f')]:_0x4b07dc[_0xa91f('0x3e')];if(!_0x2d13a7[_0xa91f('0x3b')][_0xa91f('0x41')](_0xa91f('0x42'))){_0x366404[_0xa91f('0x21')]=qs[_0xa91f('0x21')](_0x2d13a7[_0xa91f('0x3b')][_0xa91f('0x21')]);_0x366404['offset']=qs[_0xa91f('0x1e')](_0x2d13a7[_0xa91f('0x3b')][_0xa91f('0x1e')]);}_0x366404[_0xa91f('0x43')]=qs['sort'](_0x2d13a7[_0xa91f('0x3b')][_0xa91f('0x44')]);_0x366404[_0xa91f('0x45')]=qs[_0xa91f('0x3c')](_['pick'](_0x2d13a7[_0xa91f('0x3b')],_0x4b07dc[_0xa91f('0x3c')]));_0x366404[_0xa91f('0x45')][_0xa91f('0xaf')]=_0x443235['id'];if(_0x2d13a7['query'][_0xa91f('0x82')]){_0x366404[_0xa91f('0x45')]=_[_0xa91f('0x9c')](_0x366404[_0xa91f('0x45')],{'$or':_['map'](_0x366404['attributes'],function(_0x56fe2a){var _0x2d6d6c={};_0x2d6d6c[_0x56fe2a]={'$like':'%'+_0x2d13a7['query'][_0xa91f('0x82')]+'%'};return _0x2d6d6c;})});}if(_0x2d13a7['query'][_0xa91f('0x78')]){var _0x157616=_0x2d13a7['query'][_0xa91f('0x78')][_0xa91f('0x32')](',');var _0x18ab32={};_0x18ab32[_0x157616[0x0]]={'$gte':moment(_0x157616[0x1])[_0xa91f('0xc0')](_0xa91f('0xc1'))};_0x366404[_0xa91f('0x45')]=_[_0xa91f('0x9c')](_0x366404[_0xa91f('0x45')],_0x18ab32);}_0x366404=_[_0xa91f('0x9c')]({},_0x366404,_0x2d13a7[_0xa91f('0xb8')]);return db['FaxMessage'][_0xa91f('0x20')]({'where':_0x366404['where']})[_0xa91f('0x28')](function(_0x2c136b){_0xfe4a53[_0xa91f('0x20')]=_0x2c136b;if(_0x2d13a7[_0xa91f('0x3b')][_0xa91f('0xb6')]){_0x366404[_0xa91f('0xb7')]=[{'all':!![]}];}return db[_0xa91f('0xbf')][_0xa91f('0xc2')](_0x366404);})[_0xa91f('0x28')](function(_0x10191f){_0xfe4a53[_0xa91f('0xb1')]=_0x10191f;return _0xfe4a53;});}})[_0xa91f('0x28')](respondWithFilteredResult(_0x33a5ef,_0x366404))[_0xa91f('0xb2')](handleError(_0x33a5ef,null));};exports[_0xa91f('0xc3')]=function(_0x32aa29,_0xc80be0,_0xa128a9){return db[_0xa91f('0x36')][_0xa91f('0x5f')]({'where':{'id':_0x32aa29[_0xa91f('0xb4')]['id']}})['then'](handleEntityNotFound(_0xc80be0,null))[_0xa91f('0x28')](function(_0xbc0267){if(_0xbc0267){return _0xbc0267[_0xa91f('0xc4')](_0x32aa29['body'][_0xa91f('0xbd')],_[_0xa91f('0xbc')](_0x32aa29[_0xa91f('0x71')],[_0xa91f('0xbd'),'id'])||{})[_0xa91f('0xc5')](function(){return db[_0xa91f('0x69')][_0xa91f('0xc2')]({'attributes':['id',_0xa91f('0x2c'),_0xa91f('0x48')],'where':{'id':_0x32aa29['body'][_0xa91f('0xbd')]}});})['then'](function(_0x92e711){socket[_0xa91f('0xc6')](_0xa91f('0xc7'),{'id':Number(_0x32aa29[_0xa91f('0xb4')]['id']),'tags':_0x92e711||[]});return{'id':Number(_0x32aa29[_0xa91f('0xb4')]['id']),'tags':_0x92e711||[]};});}})[_0xa91f('0x28')](respondWithResult(_0xc80be0,null))[_0xa91f('0xb2')](handleError(_0xc80be0,null));};exports[_0xa91f('0xc8')]=function(_0x12d857,_0x301825,_0x212710){return db[_0xa91f('0x36')][_0xa91f('0x5f')]({'where':{'id':_0x12d857[_0xa91f('0xb4')]['id']}})[_0xa91f('0x28')](handleEntityNotFound(_0x301825,null))['then'](function(_0x4f3ba2){if(_0x4f3ba2){return _0x4f3ba2['removeTags'](_0x12d857[_0xa91f('0x3b')]['ids']);}})['then'](respondWithStatusCode(_0x301825,null))[_0xa91f('0xb2')](handleError(_0x301825,null));};exports[_0xa91f('0xc9')]=function(_0x4459eb,_0x5d7afe){var _0xeef856=moment()['unix']()['toString']();var _0x111cd9=path[_0xa91f('0xca')](config[_0xa91f('0xcb')],_0xa91f('0xcc'),'files','tmp');var _0x5ba2d6=path[_0xa91f('0xca')](config[_0xa91f('0xcb')],_0xa91f('0xcc'),_0xa91f('0xcd'),_0xa91f('0xce'));var _0x29204c=path[_0xa91f('0xca')](_0x111cd9,_0xeef856);var _0xc8910c=util[_0xa91f('0xc0')](_0xa91f('0xcf'),_0x4459eb['params']['id'],_0xeef856);var _0x558283=path[_0xa91f('0xca')](_0x111cd9,_0xc8910c);var _0x3092bd=[];_0x3092bd[_0xa91f('0x34')]({'model':db[_0xa91f('0xd0')],'as':'Attachment','raw':!![]});var _0x28d7a5=[{'model':db[_0xa91f('0xbf')],'as':_0xa91f('0xd1'),'attributes':['id',_0xa91f('0x71'),'createdAt'],'include':_0x3092bd}];return db['FaxInteraction'][_0xa91f('0x5f')]({'where':{'id':_0x4459eb['params']['id']},'include':_0x28d7a5})['then'](handleEntityNotFound(_0x5d7afe,null))['then'](function(_0x2dca5c){if(_0x2dca5c&&_0x2dca5c['Messages']){var _0x3d64be=_0x2dca5c['get']({'plain':!![]});fs['mkdirSync'](_0x29204c);for(var _0xe619=0x0;_0xe619<_0x3d64be[_0xa91f('0xd1')][_0xa91f('0x40')];_0xe619++){var _0x3b9901=_0x3d64be[_0xa91f('0xd1')][_0xe619][_0xa91f('0xd0')];if(_0x3b9901){var _0x3b8ce3=path[_0xa91f('0xca')](_0x5ba2d6,_0x3b9901[_0xa91f('0xd2')]);if(fs[_0xa91f('0xd3')](_0x3b8ce3)){fs[_0xa91f('0xd4')](_0x3b8ce3)[_0xa91f('0xd5')](fs[_0xa91f('0xd6')](path[_0xa91f('0xca')](_0x29204c,_0x3b9901[_0xa91f('0xd2')])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0x59b41b,_0x5c14c8){zipdir(_0x29204c,{'saveTo':_0x558283},function(_0x53e36a,_0x20d37d){if(_0x53e36a)return _0x5c14c8(_0x53e36a);return _0x59b41b(_0x20d37d);});})[_0xa91f('0x28')](function(){return new BPromise(function(_0x5d9189,_0x3ccddd){rimraf(_0x29204c,function(_0x4e17d6){if(_0x4e17d6)_0x3ccddd(_0x4e17d6);return _0x5d9189();});});})['then'](function(){return _0x5d7afe[_0xa91f('0xc9')](_0x558283,_0xc8910c,function(_0x4109e4){if(_0x4109e4){console[_0xa91f('0xd7')](_0xa91f('0xd8'),_0x4109e4);}else{fs[_0xa91f('0xd9')](_0x558283);}});});});}else{return _0x5d7afe['sendStatus'](0xc8);}})[_0xa91f('0xb2')](handleError(_0x5d7afe,null));};
\ No newline at end of file
index 40533ed..897adb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6e=['hasOwnProperty','exports','events','../../mysqldb','FaxInteraction','FaxMessage','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch'];(function(_0x1d1a1c,_0xba0aad){var _0x36f72b=function(_0x2cbb7f){while(--_0x2cbb7f){_0x1d1a1c['push'](_0x1d1a1c['shift']());}};_0x36f72b(++_0xba0aad);}(_0x3d6e,0x1ab));var _0xe3d6=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x3d6e[_0x1ae5ab];return _0x1ce001;};'use strict';var EventEmitter=require(_0xe3d6('0x0'));var FaxInteraction=require(_0xe3d6('0x1'))['db'][_0xe3d6('0x2')];var FaxMessage=require(_0xe3d6('0x1'))['db'][_0xe3d6('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe3d6('0x4'),'afterDestroy':_0xe3d6('0x5')};function emitEvent(_0x44fb12){return function(_0xc4ff4b,_0x31570a,_0xface8e){_0xc4ff4b[_0xe3d6('0x6')]({'attributes':['id'],'raw':!![]})[_0xe3d6('0x7')](function(_0x549741){_0xc4ff4b[_0xe3d6('0x8')](_0xe3d6('0x9'),_0x549741[_0xe3d6('0xa')](function(_0x531ea7){return{'id':_0x531ea7['id']};}));return FaxMessage[_0xe3d6('0xb')]({'where':{'FaxInteractionId':_0xc4ff4b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5c532b){_0xc4ff4b[_0xe3d6('0x8')]('unreadMessages',_0x5c532b[_0xe3d6('0xc')]);FaxInteractionEvents[_0xe3d6('0xd')](_0x44fb12+':'+_0xc4ff4b['id'],_0xc4ff4b);FaxInteractionEvents['emit'](_0x44fb12,_0xc4ff4b);_0xface8e(null);})[_0xe3d6('0xe')](_0xface8e(null));};}for(var e in events){if(events[_0xe3d6('0xf')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0xe3d6('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0xef21=['Users','map','unreadMessages','length','emit','catch','events','../../mysqldb','FaxInteraction','setMaxListeners','save','update','getUsers','then','setDataValue'];(function(_0x2acb77,_0x272b50){var _0x11c4ad=function(_0x371a01){while(--_0x371a01){_0x2acb77['push'](_0x2acb77['shift']());}};_0x11c4ad(++_0x272b50);}(_0xef21,0xba));var _0x1ef2=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0xef21[_0x31a371];return _0x2a5bd6;};'use strict';var EventEmitter=require(_0x1ef2('0x0'));var FaxInteraction=require(_0x1ef2('0x1'))['db'][_0x1ef2('0x2')];var FaxMessage=require(_0x1ef2('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x1ef2('0x3')](0x0);var events={'afterCreate':_0x1ef2('0x4'),'afterUpdate':_0x1ef2('0x5'),'afterDestroy':'remove'};function emitEvent(_0x903f41){return function(_0x549d96,_0x951eb0,_0x48ea1c){_0x549d96[_0x1ef2('0x6')]({'attributes':['id'],'raw':!![]})[_0x1ef2('0x7')](function(_0x399266){_0x549d96[_0x1ef2('0x8')](_0x1ef2('0x9'),_0x399266[_0x1ef2('0xa')](function(_0x27b895){return{'id':_0x27b895['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x549d96['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x268f57){_0x549d96[_0x1ef2('0x8')](_0x1ef2('0xb'),_0x268f57[_0x1ef2('0xc')]);FaxInteractionEvents[_0x1ef2('0xd')](_0x903f41+':'+_0x549d96['id'],_0x549d96);FaxInteractionEvents[_0x1ef2('0xd')](_0x903f41,_0x549d96);_0x48ea1c(null);})[_0x1ef2('0xe')](_0x48ea1c(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index 11e6abe..4e76f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfead=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','request-promise','path','rimraf','./faxInteraction.attributes','fax_interactions','changed'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xfead,0x152));var _0xdfea=function(_0x57ba2a,_0x1c911c){_0x57ba2a=_0x57ba2a-0x0;var _0x1b1fcf=_0xfead[_0x57ba2a];return _0x1b1fcf;};'use strict';var _=require(_0xdfea('0x0'));var util=require(_0xdfea('0x1'));var logger=require(_0xdfea('0x2'))('api');var moment=require(_0xdfea('0x3'));var BPromise=require('bluebird');var rp=require(_0xdfea('0x4'));var fs=require('fs');var path=require(_0xdfea('0x5'));var rimraf=require(_0xdfea('0x6'));var config=require('../../config/environment');var attributes=require(_0xdfea('0x7'));module['exports']=function(_0x39d6d4,_0x1d554c){return _0x39d6d4['define']('FaxInteraction',attributes,{'tableName':_0xdfea('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x522b59,_0x264e16,_0x3fe3f8){if(_0x522b59[_0xdfea('0x9')]('closed')){_0x522b59['closedAt']=moment()[_0xdfea('0xa')](_0xdfea('0xb'));}_0x3fe3f8(null,_0x522b59);}}});};
\ No newline at end of file
+var _0x4d1b=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','./faxInteraction.attributes','define','FaxInteraction','changed','closed'];(function(_0x3c615c,_0x44e5f6){var _0x55f1ab=function(_0x10215d){while(--_0x10215d){_0x3c615c['push'](_0x3c615c['shift']());}};_0x55f1ab(++_0x44e5f6);}(_0x4d1b,0x102));var _0xb4d1=function(_0x41d902,_0x29d0b){_0x41d902=_0x41d902-0x0;var _0x360fb1=_0x4d1b[_0x41d902];return _0x360fb1;};'use strict';var _=require(_0xb4d1('0x0'));var util=require('util');var logger=require(_0xb4d1('0x1'))(_0xb4d1('0x2'));var moment=require(_0xb4d1('0x3'));var BPromise=require(_0xb4d1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb4d1('0x5'));var rimraf=require('rimraf');var config=require(_0xb4d1('0x6'));var attributes=require(_0xb4d1('0x7'));module['exports']=function(_0x4f6be6,_0x44d02f){return _0x4f6be6[_0xb4d1('0x8')](_0xb4d1('0x9'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1e09fb,_0x205fe1,_0x5388c8){if(_0x1e09fb[_0xb4d1('0xa')](_0xb4d1('0xb'))){_0x1e09fb[_0xb4d1('0xc')]=moment()[_0xb4d1('0xd')](_0xb4d1('0xe'));}_0x5388c8(null,_0x1e09fb);}}});};
\ No newline at end of file
index 88c76e9..7f83c03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9699=['spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxInteraction','options','raw','where','attributes','limit','UpdateFaxInteraction','AddTagsToFaxInteraction','addTags','ids','body'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9699,0x19c));var _0x9969=function(_0x4d4ada,_0x5eeee3){_0x4d4ada=_0x4d4ada-0x0;var _0x2428da=_0x9699[_0x4d4ada];return _0x2428da;};'use strict';var _=require(_0x9969('0x0'));var util=require('util');var moment=require(_0x9969('0x1'));var BPromise=require(_0x9969('0x2'));var rs=require(_0x9969('0x3'));var fs=require('fs');var Redis=require(_0x9969('0x4'));var db=require(_0x9969('0x5'))['db'];var utils=require(_0x9969('0x6'));var logger=require(_0x9969('0x7'))(_0x9969('0x8'));var config=require('../../config/environment');var jayson=require(_0x9969('0x9'));var client=jayson[_0x9969('0xa')][_0x9969('0xb')]({'port':0x232a});config[_0x9969('0xc')]=_['defaults'](config[_0x9969('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x9969('0xd'))(new Redis(config[_0x9969('0xc')]));require(_0x9969('0xe'))[_0x9969('0xf')](socket);function respondWithRpcPromise(_0x103d22,_0x8c796,_0x48d234){return new BPromise(function(_0x25701,_0x317cc2){return client[_0x9969('0x10')](_0x103d22,_0x48d234)[_0x9969('0x11')](function(_0x4503e7){logger[_0x9969('0x12')](_0x9969('0x13'),_0x8c796,_0x9969('0x14'));logger[_0x9969('0x15')](_0x9969('0x16'),_0x8c796,_0x9969('0x14'),JSON[_0x9969('0x17')](_0x4503e7));if(_0x4503e7[_0x9969('0x18')]){if(_0x4503e7['error'][_0x9969('0x19')]===0x1f4){logger[_0x9969('0x18')](_0x9969('0x13'),_0x8c796,_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);return _0x317cc2(_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);}logger[_0x9969('0x18')](_0x9969('0x13'),_0x8c796,_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);return _0x25701(_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);}else{logger['info'](_0x9969('0x13'),_0x8c796,_0x9969('0x14'));_0x25701(_0x4503e7['result'][_0x9969('0x1a')]);}})[_0x9969('0x1b')](function(_0x4711dc){logger[_0x9969('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x8c796,_0x4711dc);_0x317cc2(_0x4711dc);});});}exports['UpdateFaxInteraction']=function(_0x233893){var _0x4aaf62=this;return new Promise(function(_0x4ac917,_0x3b5165){return db[_0x9969('0x1c')]['update'](_0x233893['body'],{'raw':_0x233893[_0x9969('0x1d')]?_0x233893[_0x9969('0x1d')][_0x9969('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x233893[_0x9969('0x1d')]?_0x233893['options'][_0x9969('0x1f')]||null:null,'attributes':_0x233893['options']?_0x233893[_0x9969('0x1d')][_0x9969('0x20')]||null:null,'limit':_0x233893[_0x9969('0x1d')]?_0x233893[_0x9969('0x1d')][_0x9969('0x21')]||null:null})[_0x9969('0x11')](function(_0x5e2dc0){logger[_0x9969('0x12')]('UpdateFaxInteraction',_0x233893);logger[_0x9969('0x15')](_0x9969('0x22'),_0x233893,JSON[_0x9969('0x17')](_0x5e2dc0));_0x4ac917(_0x5e2dc0);})[_0x9969('0x1b')](function(_0x295841){logger['error'](_0x9969('0x22'),_0x295841[_0x9969('0x1a')],_0x233893);_0x3b5165(_0x4aaf62[_0x9969('0x18')](0x1f4,_0x295841[_0x9969('0x1a')]));});});};exports[_0x9969('0x23')]=function(_0x1bdbfe){return new Promise(function(_0x2c6e62,_0x320b10){return db['FaxInteraction']['find']({'where':_0x1bdbfe['options']?_0x1bdbfe[_0x9969('0x1d')][_0x9969('0x1f')]||null:null})[_0x9969('0x11')](function(_0x350811){if(_0x350811){return _0x350811[_0x9969('0x24')](_0x1bdbfe['body'][_0x9969('0x25')],_['omit'](_0x1bdbfe[_0x9969('0x26')],['ids','id'])||{});}})[_0x9969('0x27')](function(_0x56a2c8){logger[_0x9969('0x12')](_0x9969('0x28'),_0x1bdbfe);logger[_0x9969('0x15')]('AddTags',_0x1bdbfe,JSON['stringify'](_0x56a2c8));_0x2c6e62(_0x56a2c8);})['catch'](function(_0x550462){logger[_0x9969('0x18')](_0x9969('0x28'),_0x550462[_0x9969('0x1a')],_0x1bdbfe);_0x320b10(_this[_0x9969('0x18')](0x1f4,_0x550462['message']));});});};
\ No newline at end of file
+var _0xca21=['limit','AddTagsToFaxInteraction','find','addTags','body','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','options','where','attributes'];(function(_0x202132,_0x16f0f9){var _0x5dbb91=function(_0x47fe6f){while(--_0x47fe6f){_0x202132['push'](_0x202132['shift']());}};_0x5dbb91(++_0x16f0f9);}(_0xca21,0xda));var _0x1ca2=function(_0x4d657b,_0x270007){_0x4d657b=_0x4d657b-0x0;var _0x1624e0=_0xca21[_0x4d657b];return _0x1624e0;};'use strict';var _=require(_0x1ca2('0x0'));var util=require(_0x1ca2('0x1'));var moment=require('moment');var BPromise=require(_0x1ca2('0x2'));var rs=require(_0x1ca2('0x3'));var fs=require('fs');var Redis=require(_0x1ca2('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1ca2('0x5'));var logger=require(_0x1ca2('0x6'))(_0x1ca2('0x7'));var config=require(_0x1ca2('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1ca2('0x9')]({'port':0x232a});config[_0x1ca2('0xa')]=_[_0x1ca2('0xb')](config[_0x1ca2('0xa')],{'host':_0x1ca2('0xc'),'port':0x18eb});var socket=require(_0x1ca2('0xd'))(new Redis(config[_0x1ca2('0xa')]));require(_0x1ca2('0xe'))[_0x1ca2('0xf')](socket);function respondWithRpcPromise(_0x17ad73,_0x4657b7,_0xff93e2){return new BPromise(function(_0x85dc8,_0x485b94){return client[_0x1ca2('0x10')](_0x17ad73,_0xff93e2)[_0x1ca2('0x11')](function(_0x57f0d4){logger[_0x1ca2('0x12')](_0x1ca2('0x13'),_0x4657b7,_0x1ca2('0x14'));logger[_0x1ca2('0x15')](_0x1ca2('0x16'),_0x4657b7,_0x1ca2('0x14'),JSON[_0x1ca2('0x17')](_0x57f0d4));if(_0x57f0d4[_0x1ca2('0x18')]){if(_0x57f0d4[_0x1ca2('0x18')]['code']===0x1f4){logger[_0x1ca2('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x4657b7,_0x57f0d4[_0x1ca2('0x18')][_0x1ca2('0x19')]);return _0x485b94(_0x57f0d4[_0x1ca2('0x18')][_0x1ca2('0x19')]);}logger[_0x1ca2('0x18')](_0x1ca2('0x13'),_0x4657b7,_0x57f0d4[_0x1ca2('0x18')][_0x1ca2('0x19')]);return _0x85dc8(_0x57f0d4[_0x1ca2('0x18')][_0x1ca2('0x19')]);}else{logger['info'](_0x1ca2('0x13'),_0x4657b7,_0x1ca2('0x14'));_0x85dc8(_0x57f0d4[_0x1ca2('0x1a')][_0x1ca2('0x19')]);}})[_0x1ca2('0x1b')](function(_0x3525cc){logger[_0x1ca2('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x4657b7,_0x3525cc);_0x485b94(_0x3525cc);});});}exports[_0x1ca2('0x1c')]=function(_0x2a8b20){var _0x5d56cf=this;return new Promise(function(_0x4e33f4,_0x383714){return db[_0x1ca2('0x1d')][_0x1ca2('0x1e')](_0x2a8b20['body'],{'raw':_0x2a8b20[_0x1ca2('0x1f')]?_0x2a8b20[_0x1ca2('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a8b20['options']?_0x2a8b20[_0x1ca2('0x1f')][_0x1ca2('0x20')]||null:null,'attributes':_0x2a8b20[_0x1ca2('0x1f')]?_0x2a8b20[_0x1ca2('0x1f')][_0x1ca2('0x21')]||null:null,'limit':_0x2a8b20['options']?_0x2a8b20[_0x1ca2('0x1f')][_0x1ca2('0x22')]||null:null})['then'](function(_0x18f17c){logger[_0x1ca2('0x12')](_0x1ca2('0x1c'),_0x2a8b20);logger[_0x1ca2('0x15')]('UpdateFaxInteraction',_0x2a8b20,JSON['stringify'](_0x18f17c));_0x4e33f4(_0x18f17c);})[_0x1ca2('0x1b')](function(_0x565e4a){logger['error'](_0x1ca2('0x1c'),_0x565e4a[_0x1ca2('0x19')],_0x2a8b20);_0x383714(_0x5d56cf['error'](0x1f4,_0x565e4a[_0x1ca2('0x19')]));});});};exports[_0x1ca2('0x23')]=function(_0x3071cc){return new Promise(function(_0x26e662,_0x48cfb1){return db['FaxInteraction'][_0x1ca2('0x24')]({'where':_0x3071cc['options']?_0x3071cc[_0x1ca2('0x1f')][_0x1ca2('0x20')]||null:null})[_0x1ca2('0x11')](function(_0x59fdaa){if(_0x59fdaa){return _0x59fdaa[_0x1ca2('0x25')](_0x3071cc[_0x1ca2('0x26')][_0x1ca2('0x27')],_['omit'](_0x3071cc[_0x1ca2('0x26')],[_0x1ca2('0x27'),'id'])||{});}})[_0x1ca2('0x28')](function(_0x4b1380){logger[_0x1ca2('0x12')](_0x1ca2('0x29'),_0x3071cc);logger[_0x1ca2('0x15')](_0x1ca2('0x29'),_0x3071cc,JSON[_0x1ca2('0x17')](_0x4b1380));_0x26e662(_0x4b1380);})[_0x1ca2('0x1b')](function(_0xf18129){logger[_0x1ca2('0x18')](_0x1ca2('0x29'),_0xf18129['message'],_0x3071cc);_0x48cfb1(_this[_0x1ca2('0x18')](0x1f4,_0xf18129['message']));});});};
\ No newline at end of file
index 73c8c94..e07b600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9b4=['remove','update','emit','removeListener','register','faxInteraction:','./faxInteraction.events','save'];(function(_0x338cc9,_0x412d42){var _0x277ee9=function(_0x3d2b2c){while(--_0x3d2b2c){_0x338cc9['push'](_0x338cc9['shift']());}};_0x277ee9(++_0x412d42);}(_0xf9b4,0x176));var _0x4f9b=function(_0x5e2f7b,_0x226498){_0x5e2f7b=_0x5e2f7b-0x0;var _0x3c386e=_0xf9b4[_0x5e2f7b];return _0x3c386e;};'use strict';var FaxInteractionEvents=require(_0x4f9b('0x0'));var events=[_0x4f9b('0x1'),_0x4f9b('0x2'),_0x4f9b('0x3')];function createListener(_0xfe7ecb,_0x401ca8){return function(_0x528fa1){_0x401ca8[_0x4f9b('0x4')](_0xfe7ecb,_0x528fa1);};}function removeListener(_0x420eed,_0x301d27){return function(){FaxInteractionEvents[_0x4f9b('0x5')](_0x420eed,_0x301d27);};}exports[_0x4f9b('0x6')]=function(_0x401a67){for(var _0x2e3498=0x0,_0x4589d2=events['length'];_0x2e3498<_0x4589d2;_0x2e3498++){var _0x1978e4=events[_0x2e3498];var _0x27413e=createListener(_0x4f9b('0x7')+_0x1978e4,_0x401a67);FaxInteractionEvents['on'](_0x1978e4,_0x27413e);}};
\ No newline at end of file
+var _0xeff2=['./faxInteraction.events','remove','update','emit','removeListener','register','length','faxInteraction:'];(function(_0x2c3c25,_0x41c547){var _0x4541ef=function(_0x103fd4){while(--_0x103fd4){_0x2c3c25['push'](_0x2c3c25['shift']());}};_0x4541ef(++_0x41c547);}(_0xeff2,0x1f0));var _0x2eff=function(_0x28d48b,_0x26cf1e){_0x28d48b=_0x28d48b-0x0;var _0x238709=_0xeff2[_0x28d48b];return _0x238709;};'use strict';var FaxInteractionEvents=require(_0x2eff('0x0'));var events=['save',_0x2eff('0x1'),_0x2eff('0x2')];function createListener(_0x5244f6,_0x46b75a){return function(_0x26cb4e){_0x46b75a[_0x2eff('0x3')](_0x5244f6,_0x26cb4e);};}function removeListener(_0x31c199,_0x22f9f8){return function(){FaxInteractionEvents[_0x2eff('0x4')](_0x31c199,_0x22f9f8);};}exports[_0x2eff('0x5')]=function(_0x5b2178){for(var _0x34f6d4=0x0,_0x1c62e6=events[_0x2eff('0x6')];_0x34f6d4<_0x1c62e6;_0x34f6d4++){var _0x240f1a=events[_0x34f6d4];var _0x9f31b9=createListener(_0x2eff('0x7')+_0x240f1a,_0x5b2178);FaxInteractionEvents['on'](_0x240f1a,_0x9f31b9);}};
\ No newline at end of file
index 7a80e5d..a5d4e82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eb6=['/:id/messages','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','/describe','describe','/:id','isAuthenticated','show','getMessages','/:id/download','download','post','create'];(function(_0x4287b6,_0x2d1db7){var _0x5a4f7e=function(_0x4da8cf){while(--_0x4da8cf){_0x4287b6['push'](_0x4287b6['shift']());}};_0x5a4f7e(++_0x2d1db7);}(_0x4eb6,0xf5));var _0x64eb=function(_0x536c58,_0xf1457e){_0x536c58=_0x536c58-0x0;var _0x54e418=_0x4eb6[_0x536c58];return _0x54e418;};'use strict';var multer=require(_0x64eb('0x0'));var util=require(_0x64eb('0x1'));var path=require('path');var timeout=require(_0x64eb('0x2'));var express=require(_0x64eb('0x3'));var router=express['Router']();var fs_extra=require(_0x64eb('0x4'));var auth=require(_0x64eb('0x5'));var interaction=require(_0x64eb('0x6'));var config=require('../../config/environment');var controller=require(_0x64eb('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x64eb('0x8')](_0x64eb('0x9'),auth['isAuthenticated'](),controller[_0x64eb('0xa')]);router[_0x64eb('0x8')](_0x64eb('0xb'),auth[_0x64eb('0xc')](),controller[_0x64eb('0xd')]);router['get']('/:id/messages',auth[_0x64eb('0xc')](),controller[_0x64eb('0xe')]);router['get'](_0x64eb('0xf'),auth['isAuthenticated'](),controller[_0x64eb('0x10')]);router[_0x64eb('0x11')]('/',auth[_0x64eb('0xc')](),controller[_0x64eb('0x12')]);router[_0x64eb('0x11')](_0x64eb('0x13'),auth['isAuthenticated'](),controller['addMessage']);router['post'](_0x64eb('0x14'),auth[_0x64eb('0xc')](),interaction[_0x64eb('0x15')](_0x64eb('0x16'),_0x64eb('0x17')),controller[_0x64eb('0x18')]);router[_0x64eb('0x19')](_0x64eb('0xb'),auth[_0x64eb('0xc')](),interaction[_0x64eb('0x15')](_0x64eb('0x16'),_0x64eb('0x1a')),controller[_0x64eb('0x1b')]);router[_0x64eb('0x1c')](_0x64eb('0xb'),auth[_0x64eb('0xc')](),interaction[_0x64eb('0x15')](_0x64eb('0x16'),_0x64eb('0x1d')),controller[_0x64eb('0x1e')]);router[_0x64eb('0x1c')](_0x64eb('0x14'),auth['isAuthenticated'](),controller[_0x64eb('0x1f')]);module[_0x64eb('0x20')]=router;
\ No newline at end of file
+var _0x2d88=['update','delete','faxinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','/describe','isAuthenticated','describe','download','post','create','/:id/messages','addMessage','tracked','fax','faxinteraction:addtags','put','/:id','faxinteraction:update'];(function(_0x4a5494,_0x3ad336){var _0x57cbb5=function(_0xa5a1ac){while(--_0xa5a1ac){_0x4a5494['push'](_0x4a5494['shift']());}};_0x57cbb5(++_0x3ad336);}(_0x2d88,0x127));var _0x82d8=function(_0x20570a,_0x442706){_0x20570a=_0x20570a-0x0;var _0x470dca=_0x2d88[_0x20570a];return _0x470dca;};'use strict';var multer=require(_0x82d8('0x0'));var util=require(_0x82d8('0x1'));var path=require('path');var timeout=require(_0x82d8('0x2'));var express=require(_0x82d8('0x3'));var router=express[_0x82d8('0x4')]();var fs_extra=require(_0x82d8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x82d8('0x6'));var config=require(_0x82d8('0x7'));var controller=require(_0x82d8('0x8'));router[_0x82d8('0x9')]('/',auth['isAuthenticated'](),controller[_0x82d8('0xa')]);router[_0x82d8('0x9')](_0x82d8('0xb'),auth[_0x82d8('0xc')](),controller[_0x82d8('0xd')]);router[_0x82d8('0x9')]('/:id',auth[_0x82d8('0xc')](),controller['show']);router['get']('/:id/messages',auth[_0x82d8('0xc')](),controller['getMessages']);router[_0x82d8('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0x82d8('0xe')]);router[_0x82d8('0xf')]('/',auth[_0x82d8('0xc')](),controller[_0x82d8('0x10')]);router[_0x82d8('0xf')](_0x82d8('0x11'),auth[_0x82d8('0xc')](),controller[_0x82d8('0x12')]);router[_0x82d8('0xf')]('/:id/tags',auth[_0x82d8('0xc')](),interaction[_0x82d8('0x13')](_0x82d8('0x14'),_0x82d8('0x15')),controller['addTags']);router[_0x82d8('0x16')](_0x82d8('0x17'),auth[_0x82d8('0xc')](),interaction[_0x82d8('0x13')](_0x82d8('0x14'),_0x82d8('0x18')),controller[_0x82d8('0x19')]);router[_0x82d8('0x1a')](_0x82d8('0x17'),auth[_0x82d8('0xc')](),interaction['tracked']('fax',_0x82d8('0x1b')),controller[_0x82d8('0x1c')]);router['delete'](_0x82d8('0x1d'),auth[_0x82d8('0xc')](),controller[_0x82d8('0x1e')]);module[_0x82d8('0x1f')]=router;
\ No newline at end of file
index ad6d62a..493a26f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['out','DATE','sequelize','exports','TEXT','BOOLEAN'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9879,0x98));var _0x9987=function(_0x56b7a6,_0x2522e5){_0x56b7a6=_0x56b7a6-0x0;var _0x76753f=_0x9879[_0x56b7a6];return _0x76753f;};'use strict';var Sequelize=require(_0x9987('0x0'));module[_0x9987('0x1')]={'body':{'type':Sequelize[_0x9987('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x9987('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x9987('0x4')),'defaultValue':_0x9987('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x9987('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x9987('0x5')]}};
\ No newline at end of file
+var _0xa3e6=['sequelize','TEXT','BOOLEAN','ENUM','out'];(function(_0x3fb166,_0x4eb985){var _0x5e91be=function(_0x53f4d9){while(--_0x53f4d9){_0x3fb166['push'](_0x3fb166['shift']());}};_0x5e91be(++_0x4eb985);}(_0xa3e6,0xbe));var _0x6a3e=function(_0x1c940f,_0x369631){_0x1c940f=_0x1c940f-0x0;var _0x331caf=_0xa3e6[_0x1c940f];return _0x331caf;};'use strict';var Sequelize=require(_0x6a3e('0x0'));module['exports']={'body':{'type':Sequelize[_0x6a3e('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x6a3e('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6a3e('0x3')]('in',_0x6a3e('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x6a3e('0x1')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index b8e5bfa..71176ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb97=['desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','client','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','map','FaxMessage','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','body','describe','fax-interactions','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','FaxInteractionId','isNil','read1stAt','interaction','get','user','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','User','agent','interface','channel','EventManager','acceptmessage','FaxInteraction','RejectMessage','ContactId','QueryTypes','fullname','email','SIP/%s','event','rejectmessage','create','CmContact','Attachment','findOne','AttachmentId','SendFax','basename','join','server','attachments','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0xc59aa9,_0x31dab9){var _0x50736c=function(_0x1efcfd){while(--_0x1efcfd){_0xc59aa9['push'](_0xc59aa9['shift']());}};_0x50736c(++_0x31dab9);}(_0xfb97,0x104));var _0x7fb9=function(_0x2d3a4d,_0x47561e){_0x2d3a4d=_0x2d3a4d-0x0;var _0x3a94a3=_0xfb97[_0x2d3a4d];return _0x3a94a3;};'use strict';var emlformat=require(_0x7fb9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7fb9('0x1'));var jsonpatch=require(_0x7fb9('0x2'));var rp=require(_0x7fb9('0x3'));var moment=require(_0x7fb9('0x4'));var BPromise=require(_0x7fb9('0x5'));var Mustache=require('mustache');var util=require(_0x7fb9('0x6'));var path=require(_0x7fb9('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7fb9('0x8'));var fs=require('fs');var fs_extra=require(_0x7fb9('0x9'));var _=require(_0x7fb9('0xa'));var squel=require(_0x7fb9('0xb'));var crypto=require(_0x7fb9('0xc'));var jsforce=require(_0x7fb9('0xd'));var deskjs=require(_0x7fb9('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7fb9('0xf'));var authService=require(_0x7fb9('0x10'));var qs=require(_0x7fb9('0x11'));var as=require(_0x7fb9('0x12'));var hardwareService=require(_0x7fb9('0x13'));var logger=require(_0x7fb9('0x14'))(_0x7fb9('0x15'));var utils=require(_0x7fb9('0x16'));var config=require(_0x7fb9('0x17'));var licenseUtil=require(_0x7fb9('0x18'));var db=require(_0x7fb9('0x19'))['db'];config['redis']=_[_0x7fb9('0x1a')](config[_0x7fb9('0x1b')],{'host':_0x7fb9('0x1c'),'port':0x18eb});var socket=require(_0x7fb9('0x1d'))(new Redis(config[_0x7fb9('0x1b')]));require('./faxMessage.socket')[_0x7fb9('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7fb9('0x1f')]['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5ce9df,_0x2bded4,_0x3ea141,_0x2e1494){return new BPromise(function(_0x230966,_0x20fb8e){var _0x3195ac=_0x2e1494||client;return _0x3195ac[_0x7fb9('0x20')](_0x5ce9df,_0x3ea141)[_0x7fb9('0x21')](function(_0x101c4b){logger['info'](_0x7fb9('0x22'),_0x2bded4,_0x7fb9('0x23'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x2bded4,_0x7fb9('0x23'),JSON[_0x7fb9('0x24')](_0x101c4b));if(_0x101c4b['error']){if(_0x101c4b['error'][_0x7fb9('0x25')]===0x1f4){logger[_0x7fb9('0x26')](_0x7fb9('0x22'),_0x2bded4,_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);return _0x20fb8e(_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x2bded4,_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);return _0x230966(_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);}else{logger[_0x7fb9('0x28')](_0x7fb9('0x22'),_0x2bded4,'request\x20sent');_0x230966(_0x101c4b[_0x7fb9('0x29')]['message']);}})[_0x7fb9('0x2a')](function(_0x302215){logger[_0x7fb9('0x26')](_0x7fb9('0x22'),_0x2bded4,_0x302215);_0x20fb8e(_0x302215);});});}function respondWithStatusCode(_0x23cb50,_0x1dcd77){_0x1dcd77=_0x1dcd77||0xcc;return function(_0x88d71a){if(_0x88d71a){return _0x23cb50[_0x7fb9('0x2b')](_0x1dcd77);}return _0x23cb50[_0x7fb9('0x2c')](_0x1dcd77)['end']();};}function respondWithResult(_0x536fd0,_0x5a6fc9){_0x5a6fc9=_0x5a6fc9||0xc8;return function(_0x47fc83){if(_0x47fc83){return _0x536fd0[_0x7fb9('0x2c')](_0x5a6fc9)[_0x7fb9('0x2d')](_0x47fc83);}};}function respondWithFilteredResult(_0xbe1d87,_0x121700){return function(_0x15a634){if(_0x15a634){var _0x353c0b=typeof _0x121700[_0x7fb9('0x2e')]===_0x7fb9('0x2f')&&typeof _0x121700[_0x7fb9('0x30')]===_0x7fb9('0x2f');var _0x5ccec4=_0x15a634[_0x7fb9('0x31')];var _0x5e3233=_0x353c0b?0x0:_0x121700[_0x7fb9('0x2e')];var _0x5cb100=_0x353c0b?_0x15a634[_0x7fb9('0x31')]:_0x121700[_0x7fb9('0x2e')]+_0x121700[_0x7fb9('0x30')];var _0x54f33a;if(_0x5cb100>=_0x5ccec4){_0x5cb100=_0x5ccec4;_0x54f33a=0xc8;}else{_0x54f33a=0xce;}_0xbe1d87[_0x7fb9('0x2c')](_0x54f33a);return _0xbe1d87[_0x7fb9('0x32')](_0x7fb9('0x33'),_0x5e3233+'-'+_0x5cb100+'/'+_0x5ccec4)[_0x7fb9('0x2d')](_0x15a634);}return null;};}function patchUpdates(_0x10ab5f){return function(_0x4c81aa){try{jsonpatch[_0x7fb9('0x34')](_0x4c81aa,_0x10ab5f,!![]);}catch(_0x3cd739){return BPromise[_0x7fb9('0x35')](_0x3cd739);}return _0x4c81aa[_0x7fb9('0x36')]();};}function saveUpdates(_0x11f3d7,_0x529704){return function(_0x4b4d8b){if(_0x4b4d8b){return _0x4b4d8b[_0x7fb9('0x37')](_0x11f3d7)[_0x7fb9('0x21')](function(_0x27e894){return _0x27e894;});}return null;};}function removeEntity(_0x42b7c7,_0xd03554){return function(_0x2bcdb5){if(_0x2bcdb5){return _0x2bcdb5[_0x7fb9('0x38')]()[_0x7fb9('0x21')](function(){_0x42b7c7[_0x7fb9('0x2c')](0xcc)[_0x7fb9('0x39')]();});}};}function handleEntityNotFound(_0x3d88b6,_0x5d5bc4){return function(_0x385a1f){if(!_0x385a1f){_0x3d88b6[_0x7fb9('0x2b')](0x194);}return _0x385a1f;};}function handleError(_0x3b926b,_0x418f27){_0x418f27=_0x418f27||0x1f4;return function(_0x48ddb3){logger['error'](_0x48ddb3[_0x7fb9('0x3a')]);if(_0x48ddb3[_0x7fb9('0x3b')]){delete _0x48ddb3['name'];}_0x3b926b[_0x7fb9('0x2c')](_0x418f27)[_0x7fb9('0x3c')](_0x48ddb3);};}exports['index']=function(_0x6c7242,_0x4e1663){var _0x31793a={},_0x35212d={},_0x210a00={'count':0x0,'rows':[]};var _0x20e3af=_[_0x7fb9('0x3d')](db[_0x7fb9('0x3e')][_0x7fb9('0x3f')],function(_0x10bbc8){return{'name':_0x10bbc8[_0x7fb9('0x40')],'type':_0x10bbc8[_0x7fb9('0x41')][_0x7fb9('0x42')]};});_0x35212d[_0x7fb9('0x43')]=_[_0x7fb9('0x3d')](_0x20e3af,_0x7fb9('0x3b'));_0x35212d[_0x7fb9('0x44')]=_[_0x7fb9('0x45')](_0x6c7242['query']);_0x35212d['filters']=_['intersection'](_0x35212d[_0x7fb9('0x43')],_0x35212d[_0x7fb9('0x44')]);_0x31793a[_0x7fb9('0x46')]=_[_0x7fb9('0x47')](_0x35212d[_0x7fb9('0x43')],qs[_0x7fb9('0x48')](_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x48')]));_0x31793a[_0x7fb9('0x46')]=_0x31793a[_0x7fb9('0x46')][_0x7fb9('0x49')]?_0x31793a[_0x7fb9('0x46')]:_0x35212d[_0x7fb9('0x43')];if(!_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x4a')]('nolimit')){_0x31793a[_0x7fb9('0x30')]=qs[_0x7fb9('0x30')](_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x30')]);_0x31793a['offset']=qs['offset'](_0x6c7242[_0x7fb9('0x44')]['offset']);}_0x31793a[_0x7fb9('0x4b')]=qs[_0x7fb9('0x4c')](_0x6c7242['query'][_0x7fb9('0x4c')]);_0x31793a[_0x7fb9('0x4d')]=qs[_0x7fb9('0x4e')](_['pick'](_0x6c7242[_0x7fb9('0x44')],_0x35212d[_0x7fb9('0x4e')]),_0x20e3af);if(_0x6c7242[_0x7fb9('0x44')]['filter']){_0x31793a[_0x7fb9('0x4d')]=_[_0x7fb9('0x4f')](_0x31793a[_0x7fb9('0x4d')],{'$or':_[_0x7fb9('0x3d')](_0x20e3af,function(_0x1cf756){if(_0x1cf756[_0x7fb9('0x41')]!==_0x7fb9('0x50')){var _0x2720f6={};_0x2720f6[_0x1cf756[_0x7fb9('0x3b')]]={'$like':'%'+_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x51')]+'%'};return _0x2720f6;}})});}_0x31793a=_[_0x7fb9('0x4f')]({},_0x31793a,_0x6c7242[_0x7fb9('0x52')]);var _0x5c014a={'where':_0x31793a[_0x7fb9('0x4d')]};return db[_0x7fb9('0x3e')]['count'](_0x5c014a)['then'](function(_0x10b169){_0x210a00[_0x7fb9('0x31')]=_0x10b169;if(_0x6c7242['query'][_0x7fb9('0x53')]){_0x31793a[_0x7fb9('0x54')]=[{'all':!![]}];}return db[_0x7fb9('0x3e')]['findAll'](_0x31793a);})['then'](function(_0x20e65){_0x210a00[_0x7fb9('0x55')]=_0x20e65;return _0x210a00;})[_0x7fb9('0x21')](respondWithFilteredResult(_0x4e1663,_0x31793a))['catch'](handleError(_0x4e1663,null));};exports[_0x7fb9('0x56')]=function(_0x4ac12e,_0x1b58f){var _0x3ccbe0={'raw':!![],'where':{'id':_0x4ac12e[_0x7fb9('0x57')]['id']}},_0x32dbf4={};_0x32dbf4[_0x7fb9('0x43')]=_[_0x7fb9('0x45')](db[_0x7fb9('0x3e')][_0x7fb9('0x3f')]);_0x32dbf4[_0x7fb9('0x44')]=_[_0x7fb9('0x45')](_0x4ac12e[_0x7fb9('0x44')]);_0x32dbf4['filters']=_[_0x7fb9('0x47')](_0x32dbf4[_0x7fb9('0x43')],_0x32dbf4[_0x7fb9('0x44')]);_0x3ccbe0[_0x7fb9('0x46')]=_['intersection'](_0x32dbf4[_0x7fb9('0x43')],qs[_0x7fb9('0x48')](_0x4ac12e[_0x7fb9('0x44')]['fields']));_0x3ccbe0[_0x7fb9('0x46')]=_0x3ccbe0[_0x7fb9('0x46')][_0x7fb9('0x49')]?_0x3ccbe0[_0x7fb9('0x46')]:_0x32dbf4[_0x7fb9('0x43')];if(_0x4ac12e[_0x7fb9('0x44')][_0x7fb9('0x53')]){_0x3ccbe0[_0x7fb9('0x54')]=[{'all':!![]}];}_0x3ccbe0=_[_0x7fb9('0x4f')]({},_0x3ccbe0,_0x4ac12e[_0x7fb9('0x52')]);return db['FaxMessage'][_0x7fb9('0x58')](_0x3ccbe0)[_0x7fb9('0x21')](handleEntityNotFound(_0x1b58f,null))[_0x7fb9('0x21')](respondWithResult(_0x1b58f,null))[_0x7fb9('0x2a')](handleError(_0x1b58f,null));};exports[_0x7fb9('0x37')]=function(_0x3e389f,_0x22eb09){if(_0x3e389f[_0x7fb9('0x59')]['id']){delete _0x3e389f[_0x7fb9('0x59')]['id'];}return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x3e389f['params']['id']}})[_0x7fb9('0x21')](handleEntityNotFound(_0x22eb09,null))['then'](saveUpdates(_0x3e389f['body'],null))[_0x7fb9('0x21')](respondWithResult(_0x22eb09,null))[_0x7fb9('0x2a')](handleError(_0x22eb09,null));};exports[_0x7fb9('0x38')]=function(_0x430d48,_0x46e2ae){return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x430d48[_0x7fb9('0x57')]['id']}})[_0x7fb9('0x21')](handleEntityNotFound(_0x46e2ae,null))[_0x7fb9('0x21')](removeEntity(_0x46e2ae,null))[_0x7fb9('0x2a')](handleError(_0x46e2ae,null));};exports['describe']=function(_0x531fdd,_0x2ad121){return db[_0x7fb9('0x3e')][_0x7fb9('0x5a')]()[_0x7fb9('0x21')](respondWithResult(_0x2ad121,null))[_0x7fb9('0x2a')](handleError(_0x2ad121,null));};var interaction_log=require('../../config/logger')(_0x7fb9('0x5b'));exports['accept']=function(_0x1214a5,_0x12a737,_0x4dce7f){var _0x517cc2={'agent':{},'channel':_0x7fb9('0x5c')};if(_0x1214a5[_0x7fb9('0x59')]['id']){delete _0x1214a5[_0x7fb9('0x59')]['id'];}_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x5d')]=!![];_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x5e')]=moment()[_0x7fb9('0x5f')](_0x7fb9('0x60'));_0x1214a5['body'][_0x7fb9('0x61')]=_0x1214a5['body'][_0x7fb9('0x61')]||_0x1214a5['user']['id'];_0x517cc2['agent']['id']=_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x61')];return db['FaxMessage'][_0x7fb9('0x58')]({'where':{'id':_0x1214a5[_0x7fb9('0x57')]['id'],'UserId':null}})[_0x7fb9('0x21')](handleEntityNotFound(_0x12a737,null))[_0x7fb9('0x21')](saveUpdates(_0x1214a5['body'],null))[_0x7fb9('0x21')](function(_0x5a241a){if(_0x5a241a){_0x517cc2['message']=_0x5a241a['get']({'plain':!![]});return db['FaxInteraction'][_0x7fb9('0x58')]({'where':{'id':_0x5a241a[_0x7fb9('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x12a737,null))[_0x7fb9('0x21')](function(_0x589f88){if(_0x589f88){return _0x589f88['update']({'UserId':_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x61')],'read1stAt':_[_0x7fb9('0x63')](_0x589f88[_0x7fb9('0x64')])?moment()['format'](_0x7fb9('0x60')):undefined});}return null;})[_0x7fb9('0x21')](function(_0x33c3a2){if(_0x33c3a2){_0x517cc2[_0x7fb9('0x65')]=_0x33c3a2[_0x7fb9('0x66')]({'plain':!![]});interaction_log[_0x7fb9('0x28')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1214a5[_0x7fb9('0x67')]['id'],_0x1214a5[_0x7fb9('0x67')][_0x7fb9('0x3b')],_0x1214a5[_0x7fb9('0x67')][_0x7fb9('0x68')],_0x517cc2['interaction']['id'],_0x1214a5['body']?JSON[_0x7fb9('0x24')](_0x1214a5[_0x7fb9('0x59')]):_0x7fb9('0x69'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x517cc2);}return null;})[_0x7fb9('0x21')](function(_0x43cd9c){var _0x12c851=_0x7fb9('0x6a')+_0x43cd9c['message']['ContactId'];return db[_0x7fb9('0x6b')][_0x7fb9('0x44')](_0x12c851,{'type':db[_0x7fb9('0x6c')]['QueryTypes'][_0x7fb9('0x6d')],'raw':!![]})['then'](function(_0x1ff33a){return _0x1ff33a;});})[_0x7fb9('0x21')](function(_0x47896b){if(_0x47896b){_0x517cc2[_0x7fb9('0x27')][_0x7fb9('0x6e')]=_0x47896b[0x0];if(!_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x61')])return;return db[_0x7fb9('0x6f')][_0x7fb9('0x58')]({'where':{'id':_0x1214a5['body'][_0x7fb9('0x61')],'role':_0x7fb9('0x70')},'attributes':['id','name','fullname','email','internal'],'raw':!![]});}return null;})[_0x7fb9('0x21')](function(_0x64e5cd){if(!_0x64e5cd)return null;_0x517cc2['message'][_0x7fb9('0x70')]=_0x64e5cd;return _0x517cc2;})[_0x7fb9('0x21')](function(_0xb047f3){if(_0xb047f3){if(_0x1214a5['body']['manual']){_0x517cc2[_0x7fb9('0x27')][_0x7fb9('0x71')]=util[_0x7fb9('0x5f')]('SIP/%s',_0x1214a5[_0x7fb9('0x67')][_0x7fb9('0x3b')]);_0x517cc2[_0x7fb9('0x27')][_0x7fb9('0x72')]=_0x517cc2[_0x7fb9('0x72')];_0x517cc2[_0x7fb9('0x27')]['event']='accept';return respondWithRpcPromise(_0x7fb9('0x73'),_0x7fb9('0x73'),{'event':_0x7fb9('0x74'),'message':_0x517cc2[_0x7fb9('0x27')]},client9002)['then'](function(){return _0x517cc2;});}return _0x517cc2;}return null;})['then'](respondWithResult(_0x12a737,null))[_0x7fb9('0x2a')](handleError(_0x12a737,null));};var interaction_log=require(_0x7fb9('0x14'))(_0x7fb9('0x5b'));exports['reject']=function(_0x2ac223,_0x423d09,_0x4dca25){var _0x359841={'agent':{},'channel':'fax'};if(_0x2ac223[_0x7fb9('0x59')]['id']){delete _0x2ac223[_0x7fb9('0x59')]['id'];}_0x2ac223[_0x7fb9('0x59')][_0x7fb9('0x61')]=_0x2ac223[_0x7fb9('0x59')][_0x7fb9('0x61')]||_0x2ac223[_0x7fb9('0x67')]['id'];_0x359841[_0x7fb9('0x70')]['id']=_0x2ac223[_0x7fb9('0x59')]['UserId'];return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x2ac223[_0x7fb9('0x57')]['id'],'UserId':null}})[_0x7fb9('0x21')](handleEntityNotFound(_0x423d09,null))[_0x7fb9('0x21')](function(_0x27a6aa){if(_0x27a6aa){_0x359841[_0x7fb9('0x27')]=_0x27a6aa[_0x7fb9('0x66')]({'plain':!![]});return db[_0x7fb9('0x75')][_0x7fb9('0x58')]({'where':{'id':_0x27a6aa['FaxInteractionId']}});}return null;})[_0x7fb9('0x21')](handleEntityNotFound(_0x423d09,null))[_0x7fb9('0x21')](function(_0x534ea2){if(_0x534ea2){_0x359841[_0x7fb9('0x65')]=_0x534ea2['get']({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2ac223[_0x7fb9('0x67')]['id'],_0x2ac223[_0x7fb9('0x67')][_0x7fb9('0x3b')],_0x2ac223[_0x7fb9('0x67')]['role'],_0x359841[_0x7fb9('0x65')]['id'],_0x2ac223[_0x7fb9('0x59')]?JSON[_0x7fb9('0x24')](_0x2ac223[_0x7fb9('0x59')]):_0x7fb9('0x69'));return respondWithRpcPromise(_0x7fb9('0x76'),'rejectMessage',_0x359841);}return null;})[_0x7fb9('0x21')](function(_0x451a56){var _0x4bab44='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x451a56[_0x7fb9('0x27')][_0x7fb9('0x77')];return db[_0x7fb9('0x6b')][_0x7fb9('0x44')](_0x4bab44,{'type':db[_0x7fb9('0x6c')][_0x7fb9('0x78')][_0x7fb9('0x6d')],'raw':!![]})[_0x7fb9('0x21')](function(_0x34f0bd){return _0x34f0bd;});})['then'](function(_0x2d798d){if(_0x2d798d){_0x359841[_0x7fb9('0x27')][_0x7fb9('0x6e')]=_0x2d798d[0x0];if(!_0x2ac223[_0x7fb9('0x59')]['UserId'])return;return db['User']['find']({'where':{'id':_0x2ac223[_0x7fb9('0x59')][_0x7fb9('0x61')],'role':'agent'},'attributes':['id','name',_0x7fb9('0x79'),_0x7fb9('0x7a'),'internal'],'raw':!![]});}return null;})['then'](function(_0x299a7f){if(!_0x299a7f)return null;_0x359841[_0x7fb9('0x27')]['agent']=_0x299a7f;return _0x359841;})[_0x7fb9('0x21')](function(_0x5d4f1a){if(_0x5d4f1a){_0x5d4f1a[_0x7fb9('0x27')][_0x7fb9('0x71')]=util[_0x7fb9('0x5f')](_0x7fb9('0x7b'),_0x2ac223[_0x7fb9('0x67')][_0x7fb9('0x3b')]);_0x5d4f1a[_0x7fb9('0x27')][_0x7fb9('0x72')]=_0x359841['channel'];_0x5d4f1a[_0x7fb9('0x27')][_0x7fb9('0x7c')]=_0x7fb9('0x35');respondWithRpcPromise(_0x7fb9('0x73'),_0x7fb9('0x73'),{'event':_0x7fb9('0x7d'),'message':_0x5d4f1a[_0x7fb9('0x27')]},client9002);return _0x359841;}return null;})[_0x7fb9('0x21')](respondWithResult(_0x423d09,null))[_0x7fb9('0x2a')](handleError(_0x423d09,null));};exports[_0x7fb9('0x7e')]=function(_0x4ec798,_0x9f3d85){var _0x48be9c;return db['FaxMessage']['create'](_0x4ec798['body'],{})[_0x7fb9('0x21')](function(_0x17cead){_0x48be9c=_0x17cead;return db[_0x7fb9('0x7f')]['findOne']({'where':{'id':_0x48be9c[_0x7fb9('0x77')]}});})[_0x7fb9('0x21')](function(_0x59c1f2){if(_['isNil'](_0x59c1f2)){return;}else{_0x48be9c['fax']=_0x59c1f2[_0x7fb9('0x5c')];return db[_0x7fb9('0x80')][_0x7fb9('0x81')]({'where':{'id':_0x48be9c[_0x7fb9('0x82')]}});}})[_0x7fb9('0x21')](function(_0x4f25b5){return respondWithRpcPromise(_0x7fb9('0x83'),_0x7fb9('0x83'),{'FaxAccountId':_[_0x7fb9('0x63')](_0x4ec798['body'])?undefined:_0x4ec798[_0x7fb9('0x59')]['FaxAccountId'],'path':_[_0x7fb9('0x63')](_0x4f25b5)?undefined:util[_0x7fb9('0x5f')]('/var/opt/motion2/server/files/attachments/%s',_0x4f25b5[_0x7fb9('0x84')]),'fax':_[_0x7fb9('0x63')](_0x48be9c[_0x7fb9('0x5c')])?undefined:_0x48be9c[_0x7fb9('0x5c')],'AttachmentId':_0x48be9c[_0x7fb9('0x82')]},client9002);})['then'](respondWithResult(_0x9f3d85,0xc9))[_0x7fb9('0x2a')](handleError(_0x9f3d85,null));};exports['download']=function(_0x2a5a61,_0x4ed901){var _0x4ac462=path[_0x7fb9('0x85')](config['root'],_0x7fb9('0x86'),'files',_0x7fb9('0x87'));return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x2a5a61['params']['id']},'include':[{'model':db[_0x7fb9('0x80')],'as':_0x7fb9('0x80')}]})[_0x7fb9('0x21')](handleEntityNotFound(_0x4ed901,null))[_0x7fb9('0x21')](function(_0xcff7f2){if(_0xcff7f2){return _0x4ed901[_0x7fb9('0x88')](path['join'](_0x4ac462,_0xcff7f2[_0x7fb9('0x80')][_0x7fb9('0x84')]));}})['catch'](handleError(_0x4ed901,null));};
\ No newline at end of file
+var _0x25d2=['stack','name','send','index','map','FaxMessage','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','VIRTUAL','options','include','findAll','rows','keys','includeAll','merge','find','body','params','fax-interactions','fax','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteractionId','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','manual','SIP/%s','channel','EventManager','acceptmessage','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','internal','event','create','CmContact','findOne','Attachment','AttachmentId','SendFax','isNil','basename','join','root','server','files','attachments','download','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','FaxMessage,\x20%s,\x20%s','message','info','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','end'];(function(_0x1a5f02,_0x42bda5){var _0xdee029=function(_0x231b3c){while(--_0x231b3c){_0x1a5f02['push'](_0x1a5f02['shift']());}};_0xdee029(++_0x42bda5);}(_0x25d2,0x16c));var _0x225d=function(_0x188cd3,_0x450c9b){_0x188cd3=_0x188cd3-0x0;var _0x20dea9=_0x25d2[_0x188cd3];return _0x20dea9;};'use strict';var emlformat=require(_0x225d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x225d('0x1'));var jsonpatch=require(_0x225d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x225d('0x3'));var Mustache=require(_0x225d('0x4'));var util=require(_0x225d('0x5'));var path=require(_0x225d('0x6'));var sox=require(_0x225d('0x7'));var csv=require(_0x225d('0x8'));var ejs=require(_0x225d('0x9'));var fs=require('fs');var fs_extra=require(_0x225d('0xa'));var _=require(_0x225d('0xb'));var squel=require(_0x225d('0xc'));var crypto=require(_0x225d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x225d('0xe'));var toCsv=require(_0x225d('0x8'));var querystring=require(_0x225d('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x225d('0x10'));var qs=require(_0x225d('0x11'));var as=require(_0x225d('0x12'));var hardwareService=require(_0x225d('0x13'));var logger=require(_0x225d('0x14'))(_0x225d('0x15'));var utils=require('../../config/utils');var config=require(_0x225d('0x16'));var licenseUtil=require(_0x225d('0x17'));var db=require(_0x225d('0x18'))['db'];config[_0x225d('0x19')]=_[_0x225d('0x1a')](config['redis'],{'host':_0x225d('0x1b'),'port':0x18eb});var socket=require(_0x225d('0x1c'))(new Redis(config[_0x225d('0x19')]));require(_0x225d('0x1d'))[_0x225d('0x1e')](socket);var jayson=require(_0x225d('0x1f'));var client=jayson[_0x225d('0x20')]['http']({'port':0x232c});var client9002=jayson['client'][_0x225d('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x74b7a6,_0x171742,_0x219d4e,_0x219f64){return new BPromise(function(_0x30973a,_0x5e3334){var _0x33a3f4=_0x219f64||client;return _0x33a3f4[_0x225d('0x22')](_0x74b7a6,_0x219d4e)[_0x225d('0x23')](function(_0x27fd2c){logger['info']('FaxMessage,\x20%s,\x20%s',_0x171742,_0x225d('0x24'));logger[_0x225d('0x25')](_0x225d('0x26'),_0x171742,_0x225d('0x24'),JSON[_0x225d('0x27')](_0x27fd2c));if(_0x27fd2c[_0x225d('0x28')]){if(_0x27fd2c[_0x225d('0x28')]['code']===0x1f4){logger['error'](_0x225d('0x29'),_0x171742,_0x27fd2c['error']['message']);return _0x5e3334(_0x27fd2c[_0x225d('0x28')][_0x225d('0x2a')]);}logger[_0x225d('0x28')](_0x225d('0x29'),_0x171742,_0x27fd2c[_0x225d('0x28')]['message']);return _0x30973a(_0x27fd2c[_0x225d('0x28')]['message']);}else{logger[_0x225d('0x2b')]('FaxMessage,\x20%s,\x20%s',_0x171742,_0x225d('0x24'));_0x30973a(_0x27fd2c['result'][_0x225d('0x2a')]);}})[_0x225d('0x2c')](function(_0x441a15){logger['error'](_0x225d('0x29'),_0x171742,_0x441a15);_0x5e3334(_0x441a15);});});}function respondWithStatusCode(_0x545ca6,_0x5e5812){_0x5e5812=_0x5e5812||0xcc;return function(_0x12763e){if(_0x12763e){return _0x545ca6[_0x225d('0x2d')](_0x5e5812);}return _0x545ca6[_0x225d('0x2e')](_0x5e5812)['end']();};}function respondWithResult(_0x289950,_0x633fc){_0x633fc=_0x633fc||0xc8;return function(_0x9e7bc3){if(_0x9e7bc3){return _0x289950[_0x225d('0x2e')](_0x633fc)[_0x225d('0x2f')](_0x9e7bc3);}};}function respondWithFilteredResult(_0x115ca7,_0x736070){return function(_0x58add4){if(_0x58add4){var _0x28c806=typeof _0x736070[_0x225d('0x30')]==='undefined'&&typeof _0x736070[_0x225d('0x31')]===_0x225d('0x32');var _0x3f0fe4=_0x58add4['count'];var _0x2c6c7d=_0x28c806?0x0:_0x736070[_0x225d('0x30')];var _0x221b85=_0x28c806?_0x58add4[_0x225d('0x33')]:_0x736070[_0x225d('0x30')]+_0x736070[_0x225d('0x31')];var _0x4f6f3a;if(_0x221b85>=_0x3f0fe4){_0x221b85=_0x3f0fe4;_0x4f6f3a=0xc8;}else{_0x4f6f3a=0xce;}_0x115ca7[_0x225d('0x2e')](_0x4f6f3a);return _0x115ca7[_0x225d('0x34')](_0x225d('0x35'),_0x2c6c7d+'-'+_0x221b85+'/'+_0x3f0fe4)[_0x225d('0x2f')](_0x58add4);}return null;};}function patchUpdates(_0x5ae61a){return function(_0x1afe4f){try{jsonpatch['apply'](_0x1afe4f,_0x5ae61a,!![]);}catch(_0x30690c){return BPromise[_0x225d('0x36')](_0x30690c);}return _0x1afe4f[_0x225d('0x37')]();};}function saveUpdates(_0x248fbf,_0x3e944c){return function(_0x584b6c){if(_0x584b6c){return _0x584b6c[_0x225d('0x38')](_0x248fbf)[_0x225d('0x23')](function(_0x53fd08){return _0x53fd08;});}return null;};}function removeEntity(_0x55218f,_0x2bc1d8){return function(_0x48c37c){if(_0x48c37c){return _0x48c37c[_0x225d('0x39')]()['then'](function(){_0x55218f[_0x225d('0x2e')](0xcc)[_0x225d('0x3a')]();});}};}function handleEntityNotFound(_0x1ca143,_0x1ce6d1){return function(_0x29e261){if(!_0x29e261){_0x1ca143[_0x225d('0x2d')](0x194);}return _0x29e261;};}function handleError(_0x1f9233,_0x21d58d){_0x21d58d=_0x21d58d||0x1f4;return function(_0x5ca111){logger[_0x225d('0x28')](_0x5ca111[_0x225d('0x3b')]);if(_0x5ca111['name']){delete _0x5ca111[_0x225d('0x3c')];}_0x1f9233['status'](_0x21d58d)[_0x225d('0x3d')](_0x5ca111);};}exports[_0x225d('0x3e')]=function(_0x4fe57e,_0x35a961){var _0x123a62={},_0x30c69f={},_0x5a1065={'count':0x0,'rows':[]};var _0x3e6d4a=_[_0x225d('0x3f')](db[_0x225d('0x40')][_0x225d('0x41')],function(_0xbbc330){return{'name':_0xbbc330['fieldName'],'type':_0xbbc330[_0x225d('0x42')][_0x225d('0x43')]};});_0x30c69f[_0x225d('0x44')]=_[_0x225d('0x3f')](_0x3e6d4a,_0x225d('0x3c'));_0x30c69f[_0x225d('0x45')]=_['keys'](_0x4fe57e[_0x225d('0x45')]);_0x30c69f[_0x225d('0x46')]=_[_0x225d('0x47')](_0x30c69f[_0x225d('0x44')],_0x30c69f[_0x225d('0x45')]);_0x123a62[_0x225d('0x48')]=_[_0x225d('0x47')](_0x30c69f['model'],qs[_0x225d('0x49')](_0x4fe57e['query'][_0x225d('0x49')]));_0x123a62[_0x225d('0x48')]=_0x123a62[_0x225d('0x48')][_0x225d('0x4a')]?_0x123a62[_0x225d('0x48')]:_0x30c69f[_0x225d('0x44')];if(!_0x4fe57e[_0x225d('0x45')]['hasOwnProperty'](_0x225d('0x4b'))){_0x123a62[_0x225d('0x31')]=qs[_0x225d('0x31')](_0x4fe57e[_0x225d('0x45')][_0x225d('0x31')]);_0x123a62[_0x225d('0x30')]=qs[_0x225d('0x30')](_0x4fe57e[_0x225d('0x45')][_0x225d('0x30')]);}_0x123a62[_0x225d('0x4c')]=qs[_0x225d('0x4d')](_0x4fe57e[_0x225d('0x45')][_0x225d('0x4d')]);_0x123a62['where']=qs[_0x225d('0x46')](_['pick'](_0x4fe57e[_0x225d('0x45')],_0x30c69f['filters']),_0x3e6d4a);if(_0x4fe57e[_0x225d('0x45')][_0x225d('0x4e')]){_0x123a62[_0x225d('0x4f')]=_['merge'](_0x123a62[_0x225d('0x4f')],{'$or':_[_0x225d('0x3f')](_0x3e6d4a,function(_0x4eb4ec){if(_0x4eb4ec['type']!==_0x225d('0x50')){var _0x44c1b7={};_0x44c1b7[_0x4eb4ec[_0x225d('0x3c')]]={'$like':'%'+_0x4fe57e[_0x225d('0x45')]['filter']+'%'};return _0x44c1b7;}})});}_0x123a62=_['merge']({},_0x123a62,_0x4fe57e[_0x225d('0x51')]);var _0x2d45f9={'where':_0x123a62[_0x225d('0x4f')]};return db[_0x225d('0x40')][_0x225d('0x33')](_0x2d45f9)[_0x225d('0x23')](function(_0x20c6af){_0x5a1065[_0x225d('0x33')]=_0x20c6af;if(_0x4fe57e[_0x225d('0x45')]['includeAll']){_0x123a62[_0x225d('0x52')]=[{'all':!![]}];}return db[_0x225d('0x40')][_0x225d('0x53')](_0x123a62);})['then'](function(_0x52881e){_0x5a1065[_0x225d('0x54')]=_0x52881e;return _0x5a1065;})[_0x225d('0x23')](respondWithFilteredResult(_0x35a961,_0x123a62))[_0x225d('0x2c')](handleError(_0x35a961,null));};exports['show']=function(_0x18bfdb,_0x7f4540){var _0x56443b={'raw':!![],'where':{'id':_0x18bfdb['params']['id']}},_0x31833c={};_0x31833c['model']=_[_0x225d('0x55')](db[_0x225d('0x40')][_0x225d('0x41')]);_0x31833c[_0x225d('0x45')]=_[_0x225d('0x55')](_0x18bfdb['query']);_0x31833c[_0x225d('0x46')]=_[_0x225d('0x47')](_0x31833c['model'],_0x31833c[_0x225d('0x45')]);_0x56443b['attributes']=_[_0x225d('0x47')](_0x31833c[_0x225d('0x44')],qs[_0x225d('0x49')](_0x18bfdb['query'][_0x225d('0x49')]));_0x56443b[_0x225d('0x48')]=_0x56443b[_0x225d('0x48')]['length']?_0x56443b[_0x225d('0x48')]:_0x31833c['model'];if(_0x18bfdb[_0x225d('0x45')][_0x225d('0x56')]){_0x56443b[_0x225d('0x52')]=[{'all':!![]}];}_0x56443b=_[_0x225d('0x57')]({},_0x56443b,_0x18bfdb['options']);return db['FaxMessage'][_0x225d('0x58')](_0x56443b)[_0x225d('0x23')](handleEntityNotFound(_0x7f4540,null))[_0x225d('0x23')](respondWithResult(_0x7f4540,null))[_0x225d('0x2c')](handleError(_0x7f4540,null));};exports[_0x225d('0x38')]=function(_0x214063,_0x45662b){if(_0x214063[_0x225d('0x59')]['id']){delete _0x214063[_0x225d('0x59')]['id'];}return db[_0x225d('0x40')][_0x225d('0x58')]({'where':{'id':_0x214063['params']['id']}})['then'](handleEntityNotFound(_0x45662b,null))[_0x225d('0x23')](saveUpdates(_0x214063[_0x225d('0x59')],null))[_0x225d('0x23')](respondWithResult(_0x45662b,null))[_0x225d('0x2c')](handleError(_0x45662b,null));};exports[_0x225d('0x39')]=function(_0x32f765,_0x2351d5){return db[_0x225d('0x40')][_0x225d('0x58')]({'where':{'id':_0x32f765[_0x225d('0x5a')]['id']}})[_0x225d('0x23')](handleEntityNotFound(_0x2351d5,null))[_0x225d('0x23')](removeEntity(_0x2351d5,null))['catch'](handleError(_0x2351d5,null));};exports['describe']=function(_0x1357f2,_0x5018d4){return db[_0x225d('0x40')]['describe']()['then'](respondWithResult(_0x5018d4,null))[_0x225d('0x2c')](handleError(_0x5018d4,null));};var interaction_log=require(_0x225d('0x14'))(_0x225d('0x5b'));exports['accept']=function(_0x246c58,_0x5c9852,_0x4267ea){var _0xf4aa11={'agent':{},'channel':_0x225d('0x5c')};if(_0x246c58[_0x225d('0x59')]['id']){delete _0x246c58[_0x225d('0x59')]['id'];}_0x246c58[_0x225d('0x59')][_0x225d('0x5d')]=!![];_0x246c58[_0x225d('0x59')]['readAt']=moment()[_0x225d('0x5e')](_0x225d('0x5f'));_0x246c58[_0x225d('0x59')][_0x225d('0x60')]=_0x246c58['body'][_0x225d('0x60')]||_0x246c58[_0x225d('0x61')]['id'];_0xf4aa11[_0x225d('0x62')]['id']=_0x246c58[_0x225d('0x59')][_0x225d('0x60')];return db[_0x225d('0x40')][_0x225d('0x58')]({'where':{'id':_0x246c58[_0x225d('0x5a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5c9852,null))[_0x225d('0x23')](saveUpdates(_0x246c58[_0x225d('0x59')],null))[_0x225d('0x23')](function(_0x1dd0e6){if(_0x1dd0e6){_0xf4aa11[_0x225d('0x2a')]=_0x1dd0e6[_0x225d('0x63')]({'plain':!![]});return db['FaxInteraction'][_0x225d('0x58')]({'where':{'id':_0x1dd0e6[_0x225d('0x64')]}});}return null;})[_0x225d('0x23')](handleEntityNotFound(_0x5c9852,null))[_0x225d('0x23')](function(_0x4fd7ba){if(_0x4fd7ba){return _0x4fd7ba[_0x225d('0x38')]({'UserId':_0x246c58['body']['UserId'],'read1stAt':_['isNil'](_0x4fd7ba[_0x225d('0x65')])?moment()['format'](_0x225d('0x5f')):undefined});}return null;})[_0x225d('0x23')](function(_0x46fef8){if(_0x46fef8){_0xf4aa11[_0x225d('0x66')]=_0x46fef8[_0x225d('0x63')]({'plain':!![]});interaction_log[_0x225d('0x2b')](_0x225d('0x67'),_0x246c58[_0x225d('0x61')]['id'],_0x246c58[_0x225d('0x61')][_0x225d('0x3c')],_0x246c58[_0x225d('0x61')][_0x225d('0x68')],_0xf4aa11[_0x225d('0x66')]['id'],_0x246c58['body']?JSON[_0x225d('0x27')](_0x246c58[_0x225d('0x59')]):_0x225d('0x69'));return respondWithRpcPromise('AcceptMessage',_0x225d('0x6a'),_0xf4aa11);}return null;})[_0x225d('0x23')](function(_0x180036){var _0x40a076=_0x225d('0x6b')+_0x180036['message']['ContactId'];return db[_0x225d('0x6c')][_0x225d('0x45')](_0x40a076,{'type':db[_0x225d('0x6d')][_0x225d('0x6e')][_0x225d('0x6f')],'raw':!![]})[_0x225d('0x23')](function(_0x34ee55){return _0x34ee55;});})['then'](function(_0x4e5f03){if(_0x4e5f03){_0xf4aa11[_0x225d('0x2a')]['contact']=_0x4e5f03[0x0];if(!_0x246c58[_0x225d('0x59')][_0x225d('0x60')])return;return db[_0x225d('0x70')]['find']({'where':{'id':_0x246c58[_0x225d('0x59')][_0x225d('0x60')],'role':_0x225d('0x62')},'attributes':['id','name',_0x225d('0x71'),_0x225d('0x72'),'internal'],'raw':!![]});}return null;})[_0x225d('0x23')](function(_0xc64ddc){if(!_0xc64ddc)return null;_0xf4aa11[_0x225d('0x2a')]['agent']=_0xc64ddc;return _0xf4aa11;})[_0x225d('0x23')](function(_0x3cbe1f){if(_0x3cbe1f){if(_0x246c58[_0x225d('0x59')][_0x225d('0x73')]){_0xf4aa11['message']['interface']=util[_0x225d('0x5e')](_0x225d('0x74'),_0x246c58[_0x225d('0x61')]['name']);_0xf4aa11['message'][_0x225d('0x75')]=_0xf4aa11[_0x225d('0x75')];_0xf4aa11['message']['motionChannel']=_0xf4aa11['channel'];_0xf4aa11[_0x225d('0x2a')]['event']='accept';return respondWithRpcPromise(_0x225d('0x76'),_0x225d('0x76'),{'event':_0x225d('0x77'),'message':_0xf4aa11[_0x225d('0x2a')]},client9002)[_0x225d('0x23')](function(){return _0xf4aa11;});}return _0xf4aa11;}return null;})[_0x225d('0x23')](respondWithResult(_0x5c9852,null))['catch'](handleError(_0x5c9852,null));};var interaction_log=require(_0x225d('0x14'))(_0x225d('0x5b'));exports['reject']=function(_0x400f5c,_0x569b4d,_0x35a162){var _0x2a08b8={'agent':{},'channel':_0x225d('0x5c')};if(_0x400f5c[_0x225d('0x59')]['id']){delete _0x400f5c[_0x225d('0x59')]['id'];}_0x400f5c[_0x225d('0x59')][_0x225d('0x60')]=_0x400f5c[_0x225d('0x59')]['UserId']||_0x400f5c[_0x225d('0x61')]['id'];_0x2a08b8[_0x225d('0x62')]['id']=_0x400f5c[_0x225d('0x59')]['UserId'];return db[_0x225d('0x40')][_0x225d('0x58')]({'where':{'id':_0x400f5c[_0x225d('0x5a')]['id'],'UserId':null}})[_0x225d('0x23')](handleEntityNotFound(_0x569b4d,null))[_0x225d('0x23')](function(_0x53bcd8){if(_0x53bcd8){_0x2a08b8[_0x225d('0x2a')]=_0x53bcd8[_0x225d('0x63')]({'plain':!![]});return db[_0x225d('0x78')][_0x225d('0x58')]({'where':{'id':_0x53bcd8['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x569b4d,null))[_0x225d('0x23')](function(_0xc57a89){if(_0xc57a89){_0x2a08b8[_0x225d('0x66')]=_0xc57a89[_0x225d('0x63')]({'plain':!![]});interaction_log[_0x225d('0x2b')](_0x225d('0x79'),_0x400f5c['user']['id'],_0x400f5c[_0x225d('0x61')][_0x225d('0x3c')],_0x400f5c[_0x225d('0x61')][_0x225d('0x68')],_0x2a08b8[_0x225d('0x66')]['id'],_0x400f5c[_0x225d('0x59')]?JSON[_0x225d('0x27')](_0x400f5c[_0x225d('0x59')]):_0x225d('0x69'));return respondWithRpcPromise(_0x225d('0x7a'),_0x225d('0x7b'),_0x2a08b8);}return null;})[_0x225d('0x23')](function(_0x1d292c){var _0x197617='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1d292c['message'][_0x225d('0x7c')];return db[_0x225d('0x6c')][_0x225d('0x45')](_0x197617,{'type':db[_0x225d('0x6d')][_0x225d('0x6e')][_0x225d('0x6f')],'raw':!![]})[_0x225d('0x23')](function(_0x573fe0){return _0x573fe0;});})[_0x225d('0x23')](function(_0x372af2){if(_0x372af2){_0x2a08b8[_0x225d('0x2a')]['contact']=_0x372af2[0x0];if(!_0x400f5c[_0x225d('0x59')][_0x225d('0x60')])return;return db['User']['find']({'where':{'id':_0x400f5c['body'][_0x225d('0x60')],'role':_0x225d('0x62')},'attributes':['id',_0x225d('0x3c'),_0x225d('0x71'),_0x225d('0x72'),_0x225d('0x7d')],'raw':!![]});}return null;})['then'](function(_0x20dd24){if(!_0x20dd24)return null;_0x2a08b8[_0x225d('0x2a')][_0x225d('0x62')]=_0x20dd24;return _0x2a08b8;})[_0x225d('0x23')](function(_0x19c66a){if(_0x19c66a){_0x19c66a[_0x225d('0x2a')]['interface']=util[_0x225d('0x5e')]('SIP/%s',_0x400f5c[_0x225d('0x61')][_0x225d('0x3c')]);_0x19c66a[_0x225d('0x2a')][_0x225d('0x75')]=_0x2a08b8['channel'];_0x19c66a[_0x225d('0x2a')]['motionChannel']=_0x2a08b8['channel'];_0x19c66a[_0x225d('0x2a')][_0x225d('0x7e')]=_0x225d('0x36');respondWithRpcPromise(_0x225d('0x76'),_0x225d('0x76'),{'event':'rejectmessage','message':_0x19c66a['message']},client9002);return _0x2a08b8;}return null;})[_0x225d('0x23')](respondWithResult(_0x569b4d,null))['catch'](handleError(_0x569b4d,null));};exports[_0x225d('0x7f')]=function(_0x8c4c78,_0x1cd5f6){var _0x577807;return db[_0x225d('0x40')][_0x225d('0x7f')](_0x8c4c78['body'],{})[_0x225d('0x23')](function(_0x505500){_0x577807=_0x505500;return db[_0x225d('0x80')][_0x225d('0x81')]({'where':{'id':_0x577807['ContactId']}});})[_0x225d('0x23')](function(_0x5a9e3c){if(_['isNil'](_0x5a9e3c)){return;}else{_0x577807[_0x225d('0x5c')]=_0x5a9e3c[_0x225d('0x5c')];return db[_0x225d('0x82')][_0x225d('0x81')]({'where':{'id':_0x577807[_0x225d('0x83')]}});}})[_0x225d('0x23')](function(_0xf33020){return respondWithRpcPromise('SendFax',_0x225d('0x84'),{'FaxAccountId':_['isNil'](_0x8c4c78[_0x225d('0x59')])?undefined:_0x8c4c78['body']['FaxAccountId'],'path':_[_0x225d('0x85')](_0xf33020)?undefined:util[_0x225d('0x5e')]('/var/opt/motion2/server/files/attachments/%s',_0xf33020[_0x225d('0x86')]),'fax':_[_0x225d('0x85')](_0x577807[_0x225d('0x5c')])?undefined:_0x577807[_0x225d('0x5c')],'AttachmentId':_0x577807[_0x225d('0x83')]},client9002);})[_0x225d('0x23')](respondWithResult(_0x1cd5f6,0xc9))[_0x225d('0x2c')](handleError(_0x1cd5f6,null));};exports['download']=function(_0x1a727e,_0x195f4b){var _0x201e25=path[_0x225d('0x87')](config[_0x225d('0x88')],_0x225d('0x89'),_0x225d('0x8a'),_0x225d('0x8b'));return db[_0x225d('0x40')]['find']({'where':{'id':_0x1a727e['params']['id']},'include':[{'model':db[_0x225d('0x82')],'as':'Attachment'}]})[_0x225d('0x23')](handleEntityNotFound(_0x195f4b,null))[_0x225d('0x23')](function(_0x252157){if(_0x252157){return _0x195f4b[_0x225d('0x8c')](path['join'](_0x201e25,_0x252157['Attachment'][_0x225d('0x86')]));}})['catch'](handleError(_0x195f4b,null));};
\ No newline at end of file
index 5a4cb84..7124f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869e=['update','remove','emit','hasOwnProperty','events','../../mysqldb','FaxMessage','save'];(function(_0x33ae49,_0x43972c){var _0x4b5d19=function(_0x4bda79){while(--_0x4bda79){_0x33ae49['push'](_0x33ae49['shift']());}};_0x4b5d19(++_0x43972c);}(_0x869e,0x15c));var _0xe869=function(_0x36319b,_0x3c5623){_0x36319b=_0x36319b-0x0;var _0x47f08a=_0x869e[_0x36319b];return _0x47f08a;};'use strict';var EventEmitter=require(_0xe869('0x0'));var FaxMessage=require(_0xe869('0x1'))['db'][_0xe869('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe869('0x3'),'afterUpdate':_0xe869('0x4'),'afterDestroy':_0xe869('0x5')};function emitEvent(_0x34b325){return function(_0x39fee6,_0x597771,_0x21f626){FaxMessageEvents[_0xe869('0x6')](_0x34b325+':'+_0x39fee6['id'],_0x39fee6);FaxMessageEvents[_0xe869('0x6')](_0x34b325,_0x39fee6);_0x21f626(null);};}for(var e in events){if(events[_0xe869('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0xa7ee=['exports','events','FaxMessage','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x54edc9,_0x345f01){var _0x2ae7a9=function(_0x24a545){while(--_0x24a545){_0x54edc9['push'](_0x54edc9['shift']());}};_0x2ae7a9(++_0x345f01);}(_0xa7ee,0x159));var _0xea7e=function(_0x38c699,_0x56fea7){_0x38c699=_0x38c699-0x0;var _0x3b1ded=_0xa7ee[_0x38c699];return _0x3b1ded;};'use strict';var EventEmitter=require(_0xea7e('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0xea7e('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xea7e('0x2')](0x0);var events={'afterCreate':_0xea7e('0x3'),'afterUpdate':_0xea7e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x547937){return function(_0x1a88ef,_0x5ef5bd,_0x2439f9){FaxMessageEvents[_0xea7e('0x5')](_0x547937+':'+_0x1a88ef['id'],_0x1a88ef);FaxMessageEvents[_0xea7e('0x5')](_0x547937,_0x1a88ef);_0x2439f9(null);};}for(var e in events){if(events[_0xea7e('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xea7e('0x7')]=FaxMessageEvents;
\ No newline at end of file
index c5bf04a..1834709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa820=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','direction','out','secret','findOne','update','catch','utf8mb4_unicode_ci','lodash','util'];(function(_0xa16cc0,_0x217e43){var _0x5b7c04=function(_0xb3e2eb){while(--_0xb3e2eb){_0xa16cc0['push'](_0xa16cc0['shift']());}};_0x5b7c04(++_0x217e43);}(_0xa820,0x132));var _0x0a82=function(_0x49aa7d,_0x5d46d8){_0x49aa7d=_0x49aa7d-0x0;var _0xdd0d26=_0xa820[_0x49aa7d];return _0xdd0d26;};'use strict';var _=require(_0x0a82('0x0'));var util=require(_0x0a82('0x1'));var logger=require(_0x0a82('0x2'))(_0x0a82('0x3'));var moment=require(_0x0a82('0x4'));var BPromise=require(_0x0a82('0x5'));var rp=require(_0x0a82('0x6'));var fs=require('fs');var path=require(_0x0a82('0x7'));var rimraf=require(_0x0a82('0x8'));var config=require(_0x0a82('0x9'));var attributes=require(_0x0a82('0xa'));module[_0x0a82('0xb')]=function(_0x552aa7,_0x28f7d3){return _0x552aa7[_0x0a82('0xc')](_0x0a82('0xd'),attributes,{'tableName':_0x0a82('0xe'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b751c,_0x1eea78,_0x167a71){var _0x29d6cf=_0x552aa7['models'];var _0x1b5c9d=_0x3b751c['get']({'plain':!![]});if(_0x1b5c9d[_0x0a82('0xf')]['toLowerCase']()==='in'||_0x1b5c9d[_0x0a82('0xf')]['toLowerCase']()===_0x0a82('0x10')&&!_0x1b5c9d[_0x0a82('0x11')]&&!_['isNil'](_0x1b5c9d['UserId'])){_0x29d6cf['FaxInteraction'][_0x0a82('0x12')]({'where':{'id':_0x1b5c9d['FaxInteractionId']}})['then'](function(_0x19def2){if(_0x19def2){_0x19def2[_0x0a82('0x13')]({'lastMsgAt':_0x1b5c9d['createdAt'],'lastMsgDirection':_0x1b5c9d[_0x0a82('0xf')]['toLowerCase']()});}})[_0x0a82('0x14')](function(_0x13793e){console['error'](_0x13793e);});}_0x167a71();}},'charset':'utf8mb4','collate':_0x0a82('0x15')});};
\ No newline at end of file
+var _0xf22a=['models','get','direction','toLowerCase','out','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT'];(function(_0x3cfc3d,_0x675f13){var _0x31b424=function(_0x44929b){while(--_0x44929b){_0x3cfc3d['push'](_0x3cfc3d['shift']());}};_0x31b424(++_0x675f13);}(_0xf22a,0x1a2));var _0xaf22=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xf22a[_0x21549c];return _0x426cbd;};'use strict';var _=require(_0xaf22('0x0'));var util=require(_0xaf22('0x1'));var logger=require(_0xaf22('0x2'))(_0xaf22('0x3'));var moment=require('moment');var BPromise=require(_0xaf22('0x4'));var rp=require(_0xaf22('0x5'));var fs=require('fs');var path=require(_0xaf22('0x6'));var rimraf=require(_0xaf22('0x7'));var config=require(_0xaf22('0x8'));var attributes=require('./faxMessage.attributes');module[_0xaf22('0x9')]=function(_0x240bef,_0x5d8ae0){return _0x240bef[_0xaf22('0xa')](_0xaf22('0xb'),attributes,{'tableName':_0xaf22('0xc'),'paranoid':![],'indexes':[{'name':_0xaf22('0xd'),'fields':[_0xaf22('0xe')],'type':_0xaf22('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x411d28,_0x4c4f5c,_0x8a0205){var _0x10117a=_0x240bef[_0xaf22('0x10')];var _0x2dd6fa=_0x411d28[_0xaf22('0x11')]({'plain':!![]});if(_0x2dd6fa[_0xaf22('0x12')][_0xaf22('0x13')]()==='in'||_0x2dd6fa[_0xaf22('0x12')][_0xaf22('0x13')]()===_0xaf22('0x14')&&!_0x2dd6fa['secret']&&!_[_0xaf22('0x15')](_0x2dd6fa[_0xaf22('0x16')])){_0x10117a[_0xaf22('0x17')][_0xaf22('0x18')]({'where':{'id':_0x2dd6fa[_0xaf22('0x19')]}})['then'](function(_0x507f6c){if(_0x507f6c){_0x507f6c[_0xaf22('0x1a')]({'lastMsgAt':_0x2dd6fa[_0xaf22('0x1b')],'lastMsgDirection':_0x2dd6fa[_0xaf22('0x12')][_0xaf22('0x13')]()});}})[_0xaf22('0x1c')](function(_0x95afbd){console[_0xaf22('0x1d')](_0x95afbd);});}_0x8a0205();}},'charset':'utf8mb4','collate':_0xaf22('0x1e')});};
\ No newline at end of file
index 3fc641f..f568e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['redis','defaults','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','CreateFaxMessage','FaxMessage','create','options','raw','catch','update','body','attributes','limit','UpdateFaxMessage','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client'];(function(_0x274821,_0x57435f){var _0x38c51f=function(_0x107f82){while(--_0x107f82){_0x274821['push'](_0x274821['shift']());}};_0x38c51f(++_0x57435f);}(_0x6aa7,0x178));var _0x76aa=function(_0x7aaa36,_0x13d02f){_0x7aaa36=_0x7aaa36-0x0;var _0x104c8a=_0x6aa7[_0x7aaa36];return _0x104c8a;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});config[_0x76aa('0x9')]=_[_0x76aa('0xa')](config[_0x76aa('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x76aa('0xb'))(new Redis(config[_0x76aa('0x9')]));require(_0x76aa('0xc'))['register'](socket);function respondWithRpcPromise(_0xcd99aa,_0x25856d,_0x41643a){return new BPromise(function(_0x16cb50,_0x37f1ab){return client[_0x76aa('0xd')](_0xcd99aa,_0x41643a)[_0x76aa('0xe')](function(_0x8dc35c){logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,'request\x20sent');logger[_0x76aa('0x11')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x25856d,_0x76aa('0x12'),JSON[_0x76aa('0x13')](_0x8dc35c));if(_0x8dc35c[_0x76aa('0x14')]){if(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x15')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x25856d,_0x8dc35c[_0x76aa('0x14')]['message']);return _0x37f1ab(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x16')]);}logger['error'](_0x76aa('0x10'),_0x25856d,_0x8dc35c['error'][_0x76aa('0x16')]);return _0x16cb50(_0x8dc35c['error'][_0x76aa('0x16')]);}else{logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,_0x76aa('0x12'));_0x16cb50(_0x8dc35c[_0x76aa('0x17')][_0x76aa('0x16')]);}})['catch'](function(_0x5d6202){logger[_0x76aa('0x14')](_0x76aa('0x10'),_0x25856d,_0x5d6202);_0x37f1ab(_0x5d6202);});});}exports[_0x76aa('0x18')]=function(_0x15b931){var _0x15109b=this;return new Promise(function(_0x191560,_0x19af92){return db[_0x76aa('0x19')][_0x76aa('0x1a')](_0x15b931['body'],{'raw':_0x15b931[_0x76aa('0x1b')]?_0x15b931[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x41463a){logger[_0x76aa('0xf')](_0x76aa('0x18'),_0x15b931);logger[_0x76aa('0x11')](_0x76aa('0x18'),_0x15b931,JSON[_0x76aa('0x13')](_0x41463a));_0x191560(_0x41463a);})[_0x76aa('0x1d')](function(_0x3363b3){logger[_0x76aa('0x14')](_0x76aa('0x18'),_0x3363b3[_0x76aa('0x16')],_0x15b931);_0x19af92(_0x15109b[_0x76aa('0x14')](0x1f4,_0x3363b3[_0x76aa('0x16')]));});});};exports['UpdateFaxMessage']=function(_0xb5e8a9){var _0x1d6d15=this;return new Promise(function(_0x25c614,_0x2e7ab4){return db[_0x76aa('0x19')][_0x76aa('0x1e')](_0xb5e8a9[_0x76aa('0x1f')],{'raw':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb5e8a9['options']?_0xb5e8a9[_0x76aa('0x1b')]['where']||null:null,'attributes':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x20')]||null:null,'limit':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x21')]||null:null})[_0x76aa('0xe')](function(_0x3827ec){logger[_0x76aa('0xf')](_0x76aa('0x22'),_0xb5e8a9);logger['debug'](_0x76aa('0x22'),_0xb5e8a9,JSON[_0x76aa('0x13')](_0x3827ec));_0x25c614(_0x3827ec);})[_0x76aa('0x1d')](function(_0x928ccf){logger[_0x76aa('0x14')](_0x76aa('0x22'),_0x928ccf[_0x76aa('0x16')],_0xb5e8a9);_0x2e7ab4(_0x1d6d15['error'](0x1f4,_0x928ccf[_0x76aa('0x16')]));});});};
\ No newline at end of file
+var _0xdace=['FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','FaxMessage','create','body','options','raw','CreateFaxMessage','UpdateFaxMessage','update','attributes','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','./faxMessage.socket','register','then','FaxMessage,\x20%s,\x20%s','debug'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xdace,0xc5));var _0xedac=function(_0x56b138,_0x2396d6){_0x56b138=_0x56b138-0x0;var _0x3df878=_0xdace[_0x56b138];return _0x3df878;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var moment=require(_0xedac('0x1'));var BPromise=require(_0xedac('0x2'));var rs=require(_0xedac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xedac('0x4'))['db'];var utils=require(_0xedac('0x5'));var logger=require(_0xedac('0x6'))(_0xedac('0x7'));var config=require('../../config/environment');var jayson=require(_0xedac('0x8'));var client=jayson[_0xedac('0x9')][_0xedac('0xa')]({'port':0x232a});config['redis']=_[_0xedac('0xb')](config[_0xedac('0xc')],{'host':_0xedac('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xedac('0xc')]));require(_0xedac('0xe'))[_0xedac('0xf')](socket);function respondWithRpcPromise(_0x4af030,_0x5e188c,_0x144368){return new BPromise(function(_0x2ea11d,_0x57e1bf){return client['request'](_0x4af030,_0x144368)[_0xedac('0x10')](function(_0x25395d){logger['info'](_0xedac('0x11'),_0x5e188c,'request\x20sent');logger[_0xedac('0x12')](_0xedac('0x13'),_0x5e188c,_0xedac('0x14'),JSON[_0xedac('0x15')](_0x25395d));if(_0x25395d[_0xedac('0x16')]){if(_0x25395d[_0xedac('0x16')][_0xedac('0x17')]===0x1f4){logger[_0xedac('0x16')]('FaxMessage,\x20%s,\x20%s',_0x5e188c,_0x25395d[_0xedac('0x16')][_0xedac('0x18')]);return _0x57e1bf(_0x25395d[_0xedac('0x16')][_0xedac('0x18')]);}logger[_0xedac('0x16')]('FaxMessage,\x20%s,\x20%s',_0x5e188c,_0x25395d[_0xedac('0x16')]['message']);return _0x2ea11d(_0x25395d[_0xedac('0x16')][_0xedac('0x18')]);}else{logger[_0xedac('0x19')](_0xedac('0x11'),_0x5e188c,'request\x20sent');_0x2ea11d(_0x25395d['result'][_0xedac('0x18')]);}})[_0xedac('0x1a')](function(_0x25fe64){logger[_0xedac('0x16')]('FaxMessage,\x20%s,\x20%s',_0x5e188c,_0x25fe64);_0x57e1bf(_0x25fe64);});});}exports['CreateFaxMessage']=function(_0x2b2ae9){var _0x17766c=this;return new Promise(function(_0x23c609,_0xcc1605){return db[_0xedac('0x1b')][_0xedac('0x1c')](_0x2b2ae9[_0xedac('0x1d')],{'raw':_0x2b2ae9[_0xedac('0x1e')]?_0x2b2ae9['options'][_0xedac('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x29cd40){logger[_0xedac('0x19')]('CreateFaxMessage',_0x2b2ae9);logger[_0xedac('0x12')](_0xedac('0x20'),_0x2b2ae9,JSON[_0xedac('0x15')](_0x29cd40));_0x23c609(_0x29cd40);})[_0xedac('0x1a')](function(_0x6b13ca){logger[_0xedac('0x16')]('CreateFaxMessage',_0x6b13ca[_0xedac('0x18')],_0x2b2ae9);_0xcc1605(_0x17766c[_0xedac('0x16')](0x1f4,_0x6b13ca[_0xedac('0x18')]));});});};exports[_0xedac('0x21')]=function(_0x1ff33e){var _0x453a3c=this;return new Promise(function(_0x40ba53,_0x26c6f7){return db[_0xedac('0x1b')][_0xedac('0x22')](_0x1ff33e['body'],{'raw':_0x1ff33e[_0xedac('0x1e')]?_0x1ff33e[_0xedac('0x1e')][_0xedac('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ff33e['options']?_0x1ff33e[_0xedac('0x1e')]['where']||null:null,'attributes':_0x1ff33e['options']?_0x1ff33e[_0xedac('0x1e')][_0xedac('0x23')]||null:null,'limit':_0x1ff33e[_0xedac('0x1e')]?_0x1ff33e[_0xedac('0x1e')]['limit']||null:null})['then'](function(_0xe813e6){logger[_0xedac('0x19')](_0xedac('0x21'),_0x1ff33e);logger[_0xedac('0x12')](_0xedac('0x21'),_0x1ff33e,JSON[_0xedac('0x15')](_0xe813e6));_0x40ba53(_0xe813e6);})[_0xedac('0x1a')](function(_0x483233){logger[_0xedac('0x16')](_0xedac('0x21'),_0x483233[_0xedac('0x18')],_0x1ff33e);_0x26c6f7(_0x453a3c['error'](0x1f4,_0x483233[_0xedac('0x18')]));});});};
\ No newline at end of file
index f36a931..6c7aaa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8500=['removeListener','register','length','faxMessage:','save','remove','update','emit'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x8500,0x18c));var _0x0850=function(_0x4f4764,_0x1526b3){_0x4f4764=_0x4f4764-0x0;var _0x1a37c1=_0x8500[_0x4f4764];return _0x1a37c1;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x0850('0x0'),_0x0850('0x1'),_0x0850('0x2')];function createListener(_0x5583e,_0xcaef42){return function(_0x36f180){_0xcaef42[_0x0850('0x3')](_0x5583e,_0x36f180);};}function removeListener(_0x40b82f,_0x5796f9){return function(){FaxMessageEvents[_0x0850('0x4')](_0x40b82f,_0x5796f9);};}exports[_0x0850('0x5')]=function(_0x23c81c){for(var _0x47d20f=0x0,_0x1685ba=events[_0x0850('0x6')];_0x47d20f<_0x1685ba;_0x47d20f++){var _0x40e651=events[_0x47d20f];var _0x586516=createListener(_0x0850('0x7')+_0x40e651,_0x23c81c);FaxMessageEvents['on'](_0x40e651,_0x586516);}};
\ No newline at end of file
+var _0x751d=['save','emit','register','length','faxMessage:','./faxMessage.events'];(function(_0x3c0f91,_0x29c1b4){var _0x212fe4=function(_0x21dfb7){while(--_0x21dfb7){_0x3c0f91['push'](_0x3c0f91['shift']());}};_0x212fe4(++_0x29c1b4);}(_0x751d,0x16d));var _0xd751=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x751d[_0x11005e];return _0x29338f;};'use strict';var FaxMessageEvents=require(_0xd751('0x0'));var events=[_0xd751('0x1'),'remove','update'];function createListener(_0x40e91b,_0x105e6a){return function(_0x39f999){_0x105e6a[_0xd751('0x2')](_0x40e91b,_0x39f999);};}function removeListener(_0x41ffd4,_0x466cec){return function(){FaxMessageEvents['removeListener'](_0x41ffd4,_0x466cec);};}exports[_0xd751('0x3')]=function(_0x596a17){for(var _0x8b52b4=0x0,_0x10e1af=events[_0xd751('0x4')];_0x8b52b4<_0x10e1af;_0x8b52b4++){var _0x3e079a=events[_0x8b52b4];var _0x1198e3=createListener(_0xd751('0x5')+_0x3e079a,_0x596a17);FaxMessageEvents['on'](_0x3e079a,_0x1198e3);}};
\ No newline at end of file
index 7f021c5..a6b175f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','/describe','isAuthenticated','describe','show','/:id/download','download','post','tracked','fax','faxmessage:create','create','/:id','update','put','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util'];(function(_0x5e840c,_0xa66906){var _0x100020=function(_0x1ad645){while(--_0x1ad645){_0x5e840c['push'](_0x5e840c['shift']());}};_0x100020(++_0xa66906);}(_0x0bb5,0x148));var _0x50bb=function(_0x4442ef,_0x1a027d){_0x4442ef=_0x4442ef-0x0;var _0x4b30cb=_0x0bb5[_0x4442ef];return _0x4b30cb;};'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('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x10')]('/',auth[_0x50bb('0xb')](),interaction[_0x50bb('0x11')](_0x50bb('0x12'),_0x50bb('0x13')),controller[_0x50bb('0x14')]);router['put'](_0x50bb('0x15'),auth['isAuthenticated'](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')](_0x50bb('0x18'),auth['isAuthenticated'](),controller[_0x50bb('0x19')]);router[_0x50bb('0x17')](_0x50bb('0x1a'),auth['isAuthenticated'](),controller[_0x50bb('0x1b')]);router['delete'](_0x50bb('0x15'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x1c')]);module[_0x50bb('0x1d')]=router;
\ No newline at end of file
+var _0x6324=['path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe','show','download','post','tracked','fax','faxmessage:create','create','/:id','update','put','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util'];(function(_0x2b9c55,_0x3977d0){var _0x48257a=function(_0x3dea34){while(--_0x3dea34){_0x2b9c55['push'](_0x2b9c55['shift']());}};_0x48257a(++_0x3977d0);}(_0x6324,0x142));var _0x4632=function(_0x746739,_0x289561){_0x746739=_0x746739-0x0;var _0x4b7447=_0x6324[_0x746739];return _0x4b7447;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./faxMessage.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/describe',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xb')]);router['get']('/:id/download',auth[_0x4632('0x8')](),controller[_0x4632('0xc')]);router[_0x4632('0xd')]('/',auth[_0x4632('0x8')](),interaction[_0x4632('0xe')](_0x4632('0xf'),_0x4632('0x10')),controller[_0x4632('0x11')]);router['put'](_0x4632('0x12'),auth['isAuthenticated'](),controller[_0x4632('0x13')]);router[_0x4632('0x14')](_0x4632('0x15'),auth[_0x4632('0x8')](),controller['accept']);router[_0x4632('0x14')](_0x4632('0x16'),auth[_0x4632('0x8')](),controller[_0x4632('0x17')]);router[_0x4632('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x4632('0x19')]);module[_0x4632('0x1a')]=router;
\ No newline at end of file
index d09e505..4257153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe96f=['sequelize','exports','STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x20beae,_0x5eac6d){var _0xf5725=function(_0x926a3b){while(--_0x926a3b){_0x20beae['push'](_0x20beae['shift']());}};_0xf5725(++_0x5eac6d);}(_0xe96f,0x158));var _0xfe96=function(_0x23ef92,_0x26ae31){_0x23ef92=_0x23ef92-0x0;var _0x18dec6=_0xe96f[_0x23ef92];return _0x18dec6;};'use strict';var Sequelize=require(_0xfe96('0x0'));module[_0xfe96('0x1')]={'name':{'type':Sequelize[_0xfe96('0x2')],'unique':_0xfe96('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfe96('0x2')]},'timeout':{'type':Sequelize[_0xfe96('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xfe96('0x5'),_0xfe96('0x6'),_0xfe96('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xfe96('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb3f9=['roundrobin','INTEGER','sequelize','exports','STRING','ENUM','rrmemory','beepall'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xb3f9,0x7a));var _0x9b3f=function(_0x57ddf0,_0xb4abb9){_0x57ddf0=_0x57ddf0-0x0;var _0xade1f7=_0xb3f9[_0x57ddf0];return _0xade1f7;};'use strict';var Sequelize=require(_0x9b3f('0x0'));module[_0x9b3f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9b3f('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9b3f('0x3')](_0x9b3f('0x4'),_0x9b3f('0x5'),_0x9b3f('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x9b3f('0x7')],'defaultValue':0x0}};
\ No newline at end of file
index bc3686e..091ac98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed3=['query','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','count','include','findAll','catch','show','params','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxQueues','UserProfileSection','find','userProfileId','describe','findOne','UserFaxQueue','nolimit','pick','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','findOrCreate','emit','userFaxQueue:save','removeTeams','field','tq.TeamId','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','forEach','addAgents','omit','isArray','userFaxQueue:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./faxQueue.socket','sendStatus','end','status','offset','limit','undefined','set','Content-Range','json','apply','reject','save','update','destroy','then','UserProfileResource','stack','name','send','map','FaxQueue','rawAttributes','key','model','keys','filters','intersection'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x0ed3,0x168));var _0x30ed=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0ed3[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x30ed('0x0'));var jsonpatch=require(_0x30ed('0x1'));var rp=require(_0x30ed('0x2'));var moment=require(_0x30ed('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x30ed('0x4'));var util=require(_0x30ed('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x30ed('0x6'));var ejs=require(_0x30ed('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x30ed('0x8'));var jsforce=require(_0x30ed('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x30ed('0x6'));var querystring=require(_0x30ed('0xa'));var Papa=require('papaparse');var Redis=require(_0x30ed('0xb'));var authService=require(_0x30ed('0xc'));var qs=require(_0x30ed('0xd'));var as=require(_0x30ed('0xe'));var hardwareService=require(_0x30ed('0xf'));var logger=require('../../config/logger')(_0x30ed('0x10'));var utils=require(_0x30ed('0x11'));var config=require(_0x30ed('0x12'));var licenseUtil=require(_0x30ed('0x13'));var db=require(_0x30ed('0x14'))['db'];config[_0x30ed('0x15')]=_[_0x30ed('0x16')](config[_0x30ed('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x30ed('0x17'))['register'](socket);function respondWithStatusCode(_0x3099f6,_0x328600){_0x328600=_0x328600||0xcc;return function(_0x2307cd){if(_0x2307cd){return _0x3099f6[_0x30ed('0x18')](_0x328600);}return _0x3099f6['status'](_0x328600)[_0x30ed('0x19')]();};}function respondWithResult(_0x34506c,_0x17d949){_0x17d949=_0x17d949||0xc8;return function(_0x15e86c){if(_0x15e86c){return _0x34506c[_0x30ed('0x1a')](_0x17d949)['json'](_0x15e86c);}};}function respondWithFilteredResult(_0x4a7292,_0x48e4a7){return function(_0x5713ce){if(_0x5713ce){var _0x1caa14=typeof _0x48e4a7[_0x30ed('0x1b')]==='undefined'&&typeof _0x48e4a7[_0x30ed('0x1c')]===_0x30ed('0x1d');var _0x1ca528=_0x5713ce['count'];var _0x3b470a=_0x1caa14?0x0:_0x48e4a7[_0x30ed('0x1b')];var _0x5f1f61=_0x1caa14?_0x5713ce['count']:_0x48e4a7[_0x30ed('0x1b')]+_0x48e4a7[_0x30ed('0x1c')];var _0x2ed819;if(_0x5f1f61>=_0x1ca528){_0x5f1f61=_0x1ca528;_0x2ed819=0xc8;}else{_0x2ed819=0xce;}_0x4a7292[_0x30ed('0x1a')](_0x2ed819);return _0x4a7292[_0x30ed('0x1e')](_0x30ed('0x1f'),_0x3b470a+'-'+_0x5f1f61+'/'+_0x1ca528)[_0x30ed('0x20')](_0x5713ce);}return null;};}function patchUpdates(_0x2b4916){return function(_0x33f614){try{jsonpatch[_0x30ed('0x21')](_0x33f614,_0x2b4916,!![]);}catch(_0x588cd1){return BPromise[_0x30ed('0x22')](_0x588cd1);}return _0x33f614[_0x30ed('0x23')]();};}function saveUpdates(_0x54b7af,_0x33f06b){return function(_0x3edfe8){if(_0x3edfe8){return _0x3edfe8[_0x30ed('0x24')](_0x54b7af)['then'](function(_0x4d602e){return _0x4d602e;});}return null;};}function removeEntity(_0x4f26a6,_0x395d2c){return function(_0x25a38f){if(_0x25a38f){return _0x25a38f[_0x30ed('0x25')]()[_0x30ed('0x26')](function(){var _0x50187f=_0x25a38f['get']({'plain':!![]});var _0x5267f5='FaxQueues';return db[_0x30ed('0x27')][_0x30ed('0x25')]({'where':{'type':_0x5267f5,'resourceId':_0x50187f['id']}})[_0x30ed('0x26')](function(){return _0x25a38f;});})[_0x30ed('0x26')](function(){_0x4f26a6['status'](0xcc)[_0x30ed('0x19')]();});}};}function handleEntityNotFound(_0x3bfd86,_0x1a4acb){return function(_0x21674f){if(!_0x21674f){_0x3bfd86[_0x30ed('0x18')](0x194);}return _0x21674f;};}function handleError(_0xd6004,_0x5c2d30){_0x5c2d30=_0x5c2d30||0x1f4;return function(_0x279904){logger['error'](_0x279904[_0x30ed('0x28')]);if(_0x279904[_0x30ed('0x29')]){delete _0x279904[_0x30ed('0x29')];}_0xd6004[_0x30ed('0x1a')](_0x5c2d30)[_0x30ed('0x2a')](_0x279904);};}exports['index']=function(_0x497820,_0x3f83c6){var _0x29cd1b={},_0xaaac38={},_0x304f4f={'count':0x0,'rows':[]};var _0x5d69e8=_[_0x30ed('0x2b')](db[_0x30ed('0x2c')][_0x30ed('0x2d')],function(_0x1fed2d){return{'name':_0x1fed2d['fieldName'],'type':_0x1fed2d['type'][_0x30ed('0x2e')]};});_0xaaac38[_0x30ed('0x2f')]=_[_0x30ed('0x2b')](_0x5d69e8,_0x30ed('0x29'));_0xaaac38['query']=_[_0x30ed('0x30')](_0x497820['query']);_0xaaac38[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0xaaac38['model'],_0xaaac38[_0x30ed('0x33')]);_0x29cd1b[_0x30ed('0x34')]=_['intersection'](_0xaaac38['model'],qs[_0x30ed('0x35')](_0x497820[_0x30ed('0x33')][_0x30ed('0x35')]));_0x29cd1b[_0x30ed('0x34')]=_0x29cd1b[_0x30ed('0x34')][_0x30ed('0x36')]?_0x29cd1b[_0x30ed('0x34')]:_0xaaac38['model'];if(!_0x497820[_0x30ed('0x33')][_0x30ed('0x37')]('nolimit')){_0x29cd1b[_0x30ed('0x1c')]=qs['limit'](_0x497820[_0x30ed('0x33')][_0x30ed('0x1c')]);_0x29cd1b[_0x30ed('0x1b')]=qs[_0x30ed('0x1b')](_0x497820[_0x30ed('0x33')][_0x30ed('0x1b')]);}_0x29cd1b[_0x30ed('0x38')]=qs[_0x30ed('0x39')](_0x497820[_0x30ed('0x33')]['sort']);_0x29cd1b[_0x30ed('0x3a')]=qs['filters'](_['pick'](_0x497820[_0x30ed('0x33')],_0xaaac38[_0x30ed('0x31')]),_0x5d69e8);if(_0x497820['query'][_0x30ed('0x3b')]){_0x29cd1b[_0x30ed('0x3a')]=_[_0x30ed('0x3c')](_0x29cd1b[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0x5d69e8,function(_0x118f77){if(_0x118f77['type']!==_0x30ed('0x3d')){var _0x356924={};_0x356924[_0x118f77[_0x30ed('0x29')]]={'$like':'%'+_0x497820[_0x30ed('0x33')]['filter']+'%'};return _0x356924;}})});}_0x29cd1b=_[_0x30ed('0x3c')]({},_0x29cd1b,_0x497820[_0x30ed('0x3e')]);var _0x2cd9ae={'where':_0x29cd1b['where']};return db[_0x30ed('0x2c')][_0x30ed('0x3f')](_0x2cd9ae)[_0x30ed('0x26')](function(_0x226224){_0x304f4f[_0x30ed('0x3f')]=_0x226224;if(_0x497820[_0x30ed('0x33')]['includeAll']){_0x29cd1b[_0x30ed('0x40')]=[{'all':!![]}];}return db[_0x30ed('0x2c')][_0x30ed('0x41')](_0x29cd1b);})[_0x30ed('0x26')](function(_0x5b00fa){_0x304f4f['rows']=_0x5b00fa;return _0x304f4f;})[_0x30ed('0x26')](respondWithFilteredResult(_0x3f83c6,_0x29cd1b))[_0x30ed('0x42')](handleError(_0x3f83c6,null));};exports[_0x30ed('0x43')]=function(_0x3c1cc9,_0x4f7ba3){var _0x599b50={'raw':!![],'where':{'id':_0x3c1cc9[_0x30ed('0x44')]['id']}},_0x40e4cd={};_0x40e4cd['model']=_[_0x30ed('0x30')](db['FaxQueue']['rawAttributes']);_0x40e4cd[_0x30ed('0x33')]=_[_0x30ed('0x30')](_0x3c1cc9[_0x30ed('0x33')]);_0x40e4cd[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0x40e4cd['model'],_0x40e4cd[_0x30ed('0x33')]);_0x599b50[_0x30ed('0x34')]=_['intersection'](_0x40e4cd['model'],qs['fields'](_0x3c1cc9[_0x30ed('0x33')][_0x30ed('0x35')]));_0x599b50['attributes']=_0x599b50['attributes']['length']?_0x599b50['attributes']:_0x40e4cd['model'];if(_0x3c1cc9[_0x30ed('0x33')][_0x30ed('0x45')]){_0x599b50[_0x30ed('0x40')]=[{'all':!![]}];}_0x599b50=_['merge']({},_0x599b50,_0x3c1cc9[_0x30ed('0x3e')]);return db[_0x30ed('0x2c')]['find'](_0x599b50)[_0x30ed('0x26')](handleEntityNotFound(_0x4f7ba3,null))[_0x30ed('0x26')](respondWithResult(_0x4f7ba3,null))['catch'](handleError(_0x4f7ba3,null));};exports[_0x30ed('0x46')]=function(_0x3b1fd0,_0x2753e5){return db['FaxQueue'][_0x30ed('0x46')](_0x3b1fd0[_0x30ed('0x47')],{})['then'](function(_0x56f381){var _0x3e5fe8=_0x3b1fd0[_0x30ed('0x48')][_0x30ed('0x49')]({'plain':!![]});if(!_0x3e5fe8)throw new Error(_0x30ed('0x4a'));if(_0x3e5fe8[_0x30ed('0x4b')]===_0x30ed('0x48')){var _0x2ebcf0=_0x56f381['get']({'plain':!![]});var _0x351558=_0x30ed('0x4c');return db[_0x30ed('0x4d')][_0x30ed('0x4e')]({'where':{'name':_0x351558,'userProfileId':_0x3e5fe8[_0x30ed('0x4f')]},'raw':!![]})[_0x30ed('0x26')](function(_0x3d5ac0){if(_0x3d5ac0&&_0x3d5ac0['autoAssociation']===0x0){return db[_0x30ed('0x27')][_0x30ed('0x46')]({'name':_0x2ebcf0[_0x30ed('0x29')],'resourceId':_0x2ebcf0['id'],'type':_0x3d5ac0[_0x30ed('0x29')],'sectionId':_0x3d5ac0['id']},{})[_0x30ed('0x26')](function(){return _0x56f381;});}else{return _0x56f381;}})[_0x30ed('0x42')](function(_0xc9eea5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xc9eea5);throw _0xc9eea5;});}return _0x56f381;})[_0x30ed('0x26')](respondWithResult(_0x2753e5,0xc9))[_0x30ed('0x42')](handleError(_0x2753e5,null));};exports[_0x30ed('0x24')]=function(_0x42fb35,_0x24493e){if(_0x42fb35[_0x30ed('0x47')]['id']){delete _0x42fb35[_0x30ed('0x47')]['id'];}return db[_0x30ed('0x2c')][_0x30ed('0x4e')]({'where':{'id':_0x42fb35[_0x30ed('0x44')]['id']}})['then'](handleEntityNotFound(_0x24493e,null))[_0x30ed('0x26')](saveUpdates(_0x42fb35[_0x30ed('0x47')],null))['then'](respondWithResult(_0x24493e,null))['catch'](handleError(_0x24493e,null));};exports['destroy']=function(_0x1576dd,_0x46b27f){return db[_0x30ed('0x2c')]['find']({'where':{'id':_0x1576dd['params']['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x46b27f,null))['then'](removeEntity(_0x46b27f,null))['catch'](handleError(_0x46b27f,null));};exports[_0x30ed('0x50')]=function(_0x2151b2,_0xe265e3){return db['FaxQueue']['describe']()['then'](respondWithResult(_0xe265e3,null))['catch'](handleError(_0xe265e3,null));};exports['getMembers']=function(_0x44f161,_0x551b9e,_0x4f2452){var _0xc181db={'raw':!![],'where':{}},_0x379d65={},_0x1aa889;return db[_0x30ed('0x2c')][_0x30ed('0x51')]({'where':{'id':_0x44f161[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x551b9e,null))[_0x30ed('0x26')](function(_0x3f09a8){if(_0x3f09a8){_0x1aa889=_0x3f09a8[_0x30ed('0x49')]({'plain':!![]});_0x379d65[_0x30ed('0x2f')]=_[_0x30ed('0x30')](db[_0x30ed('0x52')][_0x30ed('0x2d')]);_0x379d65['query']=_['keys'](_0x44f161['query']);_0x379d65[_0x30ed('0x31')]=_['intersection'](_0x379d65['model'],_0x379d65[_0x30ed('0x33')]);_0xc181db[_0x30ed('0x34')]=_[_0x30ed('0x32')](_0x379d65[_0x30ed('0x2f')],qs[_0x30ed('0x35')](_0x44f161['query'][_0x30ed('0x35')]));_0xc181db[_0x30ed('0x34')]=_0xc181db[_0x30ed('0x34')][_0x30ed('0x36')]?_0xc181db[_0x30ed('0x34')]:_0x379d65[_0x30ed('0x2f')];if(!_0x44f161[_0x30ed('0x33')][_0x30ed('0x37')](_0x30ed('0x53'))){_0xc181db[_0x30ed('0x1c')]=qs[_0x30ed('0x1c')](_0x44f161[_0x30ed('0x33')]['limit']);_0xc181db['offset']=qs[_0x30ed('0x1b')](_0x44f161[_0x30ed('0x33')]['offset']);}_0xc181db[_0x30ed('0x38')]=qs[_0x30ed('0x39')](_0x44f161[_0x30ed('0x33')][_0x30ed('0x39')]);_0xc181db[_0x30ed('0x3a')]=qs['filters'](_[_0x30ed('0x54')](_0x44f161[_0x30ed('0x33')],_0x379d65[_0x30ed('0x31')]));_0xc181db['where'][_0x30ed('0x55')]=_0x3f09a8['id'];if(_0x44f161[_0x30ed('0x33')]['filter']){_0xc181db[_0x30ed('0x3a')]=_[_0x30ed('0x3c')](_0xc181db[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0xc181db[_0x30ed('0x34')],function(_0x16c6ea){var _0x360f89={};_0x360f89[_0x16c6ea]={'$like':'%'+_0x44f161[_0x30ed('0x33')][_0x30ed('0x3b')]+'%'};return _0x360f89;})});}_0xc181db=_[_0x30ed('0x3c')]({},_0xc181db,_0x44f161[_0x30ed('0x3e')]);return db[_0x30ed('0x52')][_0x30ed('0x41')](_0xc181db);}})[_0x30ed('0x26')](function(_0x4856cf){if(_0x4856cf){return db[_0x30ed('0x56')][_0x30ed('0x57')]({'where':{'id':_[_0x30ed('0x2b')](_0x4856cf,_0x30ed('0x58')),'role':_0x30ed('0x59')},'attributes':['id',_0x30ed('0x29'),_0x30ed('0x5a'),_0x30ed('0x5b'),_0x30ed('0x5c')]});}})['then'](function(_0x588dfc){if(_0x588dfc){return{'count':_0x588dfc[_0x30ed('0x3f')],'rows':_[_0x30ed('0x2b')](_0x588dfc[_0x30ed('0x5d')],function(_0xd82b19){return{'membername':_0xd82b19[_0x30ed('0x29')],'UserId':_0xd82b19['id'],'queue_name':_0x1aa889[_0x30ed('0x29')],'FaxQueueId':_0x1aa889['id'],'interface':util[_0x30ed('0x5e')](_0x30ed('0x5f'),_0x30ed('0x60'),_0xd82b19[_0x30ed('0x29')]),'penalty':0x0,'paused':_0xd82b19[_0x30ed('0x5a')],'createdAt':_0xd82b19[_0x30ed('0x5c')],'updatedAt':_0xd82b19[_0x30ed('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x551b9e,_0xc181db))['catch'](handleError(_0x551b9e,null));};exports[_0x30ed('0x61')]=function(_0x4e1149,_0x1e9cdd,_0x23b69c){var _0x2bd523={};var _0x10ce07={};var _0x504513;var _0x1d5314;return db[_0x30ed('0x2c')][_0x30ed('0x51')]({'where':{'id':_0x4e1149['params']['id']}})['then'](handleEntityNotFound(_0x1e9cdd,null))[_0x30ed('0x26')](function(_0x328017){if(_0x328017){_0x504513=_0x328017;_0x10ce07[_0x30ed('0x2f')]=_[_0x30ed('0x30')](db[_0x30ed('0x62')]['rawAttributes']);_0x10ce07['query']=_[_0x30ed('0x30')](_0x4e1149[_0x30ed('0x33')]);_0x10ce07[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0x10ce07[_0x30ed('0x2f')],_0x10ce07['query']);_0x2bd523[_0x30ed('0x34')]=_[_0x30ed('0x32')](_0x10ce07[_0x30ed('0x2f')],qs[_0x30ed('0x35')](_0x4e1149[_0x30ed('0x33')][_0x30ed('0x35')]));_0x2bd523[_0x30ed('0x34')]=_0x2bd523[_0x30ed('0x34')][_0x30ed('0x36')]?_0x2bd523['attributes']:_0x10ce07[_0x30ed('0x2f')];_0x2bd523['order']=qs[_0x30ed('0x39')](_0x4e1149[_0x30ed('0x33')][_0x30ed('0x39')]);_0x2bd523['where']=qs[_0x30ed('0x31')](_[_0x30ed('0x54')](_0x4e1149['query'],_0x10ce07['filters']));if(_0x4e1149[_0x30ed('0x33')][_0x30ed('0x3b')]){_0x2bd523['where']=_[_0x30ed('0x3c')](_0x2bd523[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0x2bd523[_0x30ed('0x34')],function(_0x46ba28){var _0x5be6be={};_0x5be6be[_0x46ba28]={'$like':'%'+_0x4e1149[_0x30ed('0x33')]['filter']+'%'};return _0x5be6be;})});}_0x2bd523=_[_0x30ed('0x3c')]({},_0x2bd523,_0x4e1149[_0x30ed('0x3e')]);return _0x504513['getTeams'](_0x2bd523);}})[_0x30ed('0x26')](function(_0x20d4cb){if(_0x20d4cb){_0x1d5314=_0x20d4cb[_0x30ed('0x36')];if(!_0x4e1149[_0x30ed('0x33')][_0x30ed('0x37')](_0x30ed('0x53'))){_0x2bd523[_0x30ed('0x1c')]=qs[_0x30ed('0x1c')](_0x4e1149[_0x30ed('0x33')]['limit']);_0x2bd523[_0x30ed('0x1b')]=qs[_0x30ed('0x1b')](_0x4e1149['query'][_0x30ed('0x1b')]);}return _0x504513['getTeams'](_0x2bd523);}})['then'](function(_0x5c8cea){if(_0x5c8cea){return _0x5c8cea?{'count':_0x1d5314,'rows':_0x5c8cea}:null;}})[_0x30ed('0x26')](respondWithResult(_0x1e9cdd,null))[_0x30ed('0x42')](handleError(_0x1e9cdd,null));};exports[_0x30ed('0x63')]=function(_0x7d9f66,_0x30aa58,_0x1de8b8){var _0x20836d=_0x7d9f66[_0x30ed('0x47')][_0x30ed('0x64')];return db['Team'][_0x30ed('0x41')]({'where':{'id':_0x20836d},'attributes':['id'],'include':[{'model':db[_0x30ed('0x56')],'as':'Agents','attributes':['id','name',_0x30ed('0x65'),_0x30ed('0x66'),_0x30ed('0x67')],'raw':!![]}]})['then'](function(_0x15c5b6){if(_0x15c5b6){var _0x183b13=_[_0x30ed('0x68')](_0x15c5b6,function(_0x3852b7){var _0x6d6a5d=_0x3852b7[_0x30ed('0x49')]({'plain':!![]});return _0x6d6a5d[_0x30ed('0x69')];});return db[_0x30ed('0x2c')][_0x30ed('0x4e')]({'where':{'id':_0x7d9f66['params']['id']}})[_0x30ed('0x26')](function(_0x11db17){return db[_0x30ed('0x6a')][_0x30ed('0x6b')](function(_0x11715e){return _0x11db17[_0x30ed('0x63')](_0x20836d,{'transaction':_0x11715e})[_0x30ed('0x26')](function(){return BPromise['each'](_0x183b13,function(_0x10ecc9){return db[_0x30ed('0x52')][_0x30ed('0x6c')]({'where':{'UserId':_0x10ecc9['id'],'FaxQueueId':_0x7d9f66[_0x30ed('0x44')]['id']},'transaction':_0x11715e});});})['then'](function(){_0x183b13['forEach'](function(_0x1c16e8){socket[_0x30ed('0x6d')](_0x30ed('0x6e'),{'UserId':_0x1c16e8['id'],'FaxQueueId':_0x11db17['id']});});});});});}})[_0x30ed('0x26')](respondWithStatusCode(_0x30aa58,null))['catch'](handleError(_0x30aa58,null));};exports[_0x30ed('0x6f')]=function(_0x2f43c2,_0x27bd1e,_0x322e48){return db[_0x30ed('0x62')][_0x30ed('0x41')]({'where':{'id':_0x2f43c2[_0x30ed('0x33')]['ids']},'attributes':['id'],'include':[{'model':db[_0x30ed('0x56')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x27bd1e,null))['then'](function(_0x221cbd){var _0x24f0df=_[_0x30ed('0x2b')](_0x221cbd,'id');var _0xd378bf=[];var _0x1679ab=[];var _0x42d37a=squel['select']();_0x42d37a[_0x30ed('0x70')](_0x30ed('0x71'))['from']('team_has_fax_queues','tq')[_0x30ed('0x72')]('user_has_teams','ut',_0x30ed('0x73'))[_0x30ed('0x3a')](_0x30ed('0x74'),_0x2f43c2[_0x30ed('0x44')]['id']);for(var _0x56dff9=0x0;_0x56dff9<_0x221cbd['length'];_0x56dff9+=0x1){let _0x1c585f=_0x221cbd[_0x56dff9];for(var _0x5df745=0x0;_0x5df745<_0x1c585f['Agents'][_0x30ed('0x36')];_0x5df745+=0x1){let _0x614436=_0x1c585f[_0x30ed('0x69')][_0x5df745];var _0x4c8396=_0x42d37a[_0x30ed('0x75')]();_0x4c8396[_0x30ed('0x3a')](_0x30ed('0x76'),_0x614436['id']);_0x1679ab['push'](db[_0x30ed('0x6a')][_0x30ed('0x33')](_0x4c8396[_0x30ed('0x77')](),{'type':db['sequelize'][_0x30ed('0x78')][_0x30ed('0x79')]})[_0x30ed('0x26')](function(_0xf05516){if(_0xf05516[_0x30ed('0x36')]===0x1){return _0x614436['id'];}else{var _0x2b61e3=_[_0x30ed('0x7a')](_[_0x30ed('0x2b')](_0xf05516,_0x30ed('0x7b')),function(_0x41aa6e){return _[_0x30ed('0x7c')](_0x24f0df,_0x41aa6e);});if(_0x2b61e3){return _0x614436['id'];}}}));}}return BPromise[_0x30ed('0x7d')](_0x1679ab)[_0x30ed('0x26')](function(_0x4037ea){_0xd378bf=_(_0xd378bf)[_0x30ed('0x7e')](_0x4037ea)[_0x30ed('0x7f')]()[_0x30ed('0x80')]();return db[_0x30ed('0x2c')]['find']({'where':{'id':_0x2f43c2[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](function(_0x196c4f){return db[_0x30ed('0x6a')][_0x30ed('0x6b')](function(_0x31df2b){return _0x196c4f[_0x30ed('0x6f')](_0x2f43c2['query'][_0x30ed('0x64')],{'transaction':_0x31df2b})[_0x30ed('0x26')](function(){if(!_[_0x30ed('0x81')](_0xd378bf)){return _0x196c4f[_0x30ed('0x82')](_0xd378bf,{'transaction':_0x31df2b});}})[_0x30ed('0x26')](function(){_0xd378bf[_0x30ed('0x83')](function(_0x29bff4){socket[_0x30ed('0x6d')]('userFaxQueue:remove',{'UserId':_0x29bff4,'FaxQueueId':_0x196c4f['id']});});});});});});})[_0x30ed('0x26')](respondWithStatusCode(_0x27bd1e,null))[_0x30ed('0x42')](handleError(_0x27bd1e,null));};exports[_0x30ed('0x84')]=function(_0x3b7339,_0x398fe2,_0x13b656){return db[_0x30ed('0x2c')][_0x30ed('0x4e')]({'where':{'id':_0x3b7339[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x398fe2,null))[_0x30ed('0x26')](function(_0x139f06){if(_0x139f06){return _0x139f06[_0x30ed('0x84')](_0x3b7339[_0x30ed('0x47')][_0x30ed('0x64')],_[_0x30ed('0x85')](_0x3b7339[_0x30ed('0x47')],[_0x30ed('0x64'),'id'])||{})['spread'](function(_0x479c05){for(var _0x3ac796=0x0;_0x3ac796<_0x3b7339[_0x30ed('0x47')][_0x30ed('0x64')][_0x30ed('0x36')];_0x3ac796+=0x1){socket[_0x30ed('0x6d')](_0x30ed('0x6e'),{'UserId':Number(_0x3b7339['body'][_0x30ed('0x64')][_0x3ac796]),'FaxQueueId':Number(_0x3b7339[_0x30ed('0x44')]['id'])});}return _0x479c05;});}})[_0x30ed('0x26')](respondWithResult(_0x398fe2,null))[_0x30ed('0x42')](handleError(_0x398fe2,null));};exports[_0x30ed('0x82')]=function(_0x252949,_0x4e3e87,_0x345446){return db['FaxQueue'][_0x30ed('0x4e')]({'where':{'id':_0x252949[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x4e3e87,null))['then'](function(_0xb44558){if(_0xb44558){return _0xb44558[_0x30ed('0x82')](_0x252949[_0x30ed('0x33')][_0x30ed('0x64')])[_0x30ed('0x26')](function(){if(_[_0x30ed('0x86')](_0x252949['query']['ids'])){for(var _0x39ad6b=0x0;_0x39ad6b<_0x252949[_0x30ed('0x33')][_0x30ed('0x64')][_0x30ed('0x36')];_0x39ad6b+=0x1){socket[_0x30ed('0x6d')]('userFaxQueue:remove',{'UserId':Number(_0x252949[_0x30ed('0x33')][_0x30ed('0x64')][_0x39ad6b]),'FaxQueueId':Number(_0x252949[_0x30ed('0x44')]['id'])});}}else{socket[_0x30ed('0x6d')](_0x30ed('0x87'),{'UserId':Number(_0x252949[_0x30ed('0x33')]['ids']),'FaxQueueId':Number(_0x252949['params']['id'])});}});}})[_0x30ed('0x26')](respondWithStatusCode(_0x4e3e87,null))[_0x30ed('0x42')](handleError(_0x4e3e87,null));};exports[_0x30ed('0x88')]=function(_0x1aed87,_0xd97a9c,_0x590f16){var _0x104bd5={};var _0x3c4dfd={};var _0x5d1c17;var _0x2123c3;return db['FaxQueue'][_0x30ed('0x51')]({'where':{'id':_0x1aed87[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0xd97a9c,null))['then'](function(_0x1e65ee){if(_0x1e65ee){_0x5d1c17=_0x1e65ee;_0x3c4dfd[_0x30ed('0x2f')]=_[_0x30ed('0x30')](db[_0x30ed('0x56')][_0x30ed('0x2d')]);_0x3c4dfd[_0x30ed('0x33')]=_[_0x30ed('0x30')](_0x1aed87['query']);_0x3c4dfd[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0x3c4dfd[_0x30ed('0x2f')],_0x3c4dfd[_0x30ed('0x33')]);_0x104bd5[_0x30ed('0x34')]=_['intersection'](_0x3c4dfd[_0x30ed('0x2f')],qs[_0x30ed('0x35')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x35')]));_0x104bd5['attributes']=_0x104bd5['attributes'][_0x30ed('0x36')]?_0x104bd5['attributes']:_0x3c4dfd[_0x30ed('0x2f')];_0x104bd5[_0x30ed('0x38')]=qs[_0x30ed('0x39')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x39')]);_0x104bd5[_0x30ed('0x3a')]=qs[_0x30ed('0x31')](_[_0x30ed('0x54')](_0x1aed87[_0x30ed('0x33')],_0x3c4dfd['filters']));if(_0x1aed87[_0x30ed('0x33')][_0x30ed('0x3b')]){_0x104bd5[_0x30ed('0x3a')]=_[_0x30ed('0x3c')](_0x104bd5[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0x104bd5[_0x30ed('0x34')],function(_0x55fc3c){var _0x26be40={};_0x26be40[_0x55fc3c]={'$like':'%'+_0x1aed87['query'][_0x30ed('0x3b')]+'%'};return _0x26be40;})});}_0x104bd5=_[_0x30ed('0x3c')]({},_0x104bd5,_0x1aed87['options']);return _0x5d1c17['getAgents'](_0x104bd5);}})[_0x30ed('0x26')](function(_0x357d3b){if(_0x357d3b){_0x2123c3=_0x357d3b[_0x30ed('0x36')];if(!_0x1aed87[_0x30ed('0x33')]['hasOwnProperty'](_0x30ed('0x53'))){_0x104bd5[_0x30ed('0x1c')]=qs[_0x30ed('0x1c')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x1c')]);_0x104bd5[_0x30ed('0x1b')]=qs[_0x30ed('0x1b')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x1b')]);}return _0x5d1c17['getAgents'](_0x104bd5);}})['then'](function(_0x7b855){if(_0x7b855){return _0x7b855?{'count':_0x2123c3,'rows':_0x7b855}:null;}})[_0x30ed('0x26')](respondWithResult(_0xd97a9c,null))[_0x30ed('0x42')](handleError(_0xd97a9c,null));};
\ No newline at end of file
+var _0x8c5a=['update','then','destroy','FaxQueues','error','stack','name','send','index','FaxQueue','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','describe','getMembers','findOne','length','FaxQueueId','UserFaxQueue','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','ids','voicePause','interface','flatMap','addTeams','emit','userFaxQueue:save','removeTeams','Agents','select','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','union','compact','value','transaction','isEmpty','removeAgents','forEach','addAgents','spread','userFaxQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save'];(function(_0x539905,_0x310dbe){var _0x16d69f=function(_0xae3eab){while(--_0xae3eab){_0x539905['push'](_0x539905['shift']());}};_0x16d69f(++_0x310dbe);}(_0x8c5a,0xf3));var _0xa8c5=function(_0x19701c,_0x3add91){_0x19701c=_0x19701c-0x0;var _0x2f3ba1=_0x8c5a[_0x19701c];return _0x2f3ba1;};'use strict';var emlformat=require(_0xa8c5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa8c5('0x1'));var jsonpatch=require(_0xa8c5('0x2'));var rp=require(_0xa8c5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa8c5('0x4'));var path=require(_0xa8c5('0x5'));var sox=require(_0xa8c5('0x6'));var csv=require(_0xa8c5('0x7'));var ejs=require(_0xa8c5('0x8'));var fs=require('fs');var fs_extra=require(_0xa8c5('0x9'));var _=require(_0xa8c5('0xa'));var squel=require(_0xa8c5('0xb'));var crypto=require(_0xa8c5('0xc'));var jsforce=require(_0xa8c5('0xd'));var deskjs=require(_0xa8c5('0xe'));var toCsv=require(_0xa8c5('0x7'));var querystring=require(_0xa8c5('0xf'));var Papa=require(_0xa8c5('0x10'));var Redis=require(_0xa8c5('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa8c5('0x12'));var as=require(_0xa8c5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa8c5('0x14'));var config=require(_0xa8c5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8c5('0x16'))['db'];config[_0xa8c5('0x17')]=_[_0xa8c5('0x18')](config[_0xa8c5('0x17')],{'host':_0xa8c5('0x19'),'port':0x18eb});var socket=require(_0xa8c5('0x1a'))(new Redis(config['redis']));require(_0xa8c5('0x1b'))[_0xa8c5('0x1c')](socket);function respondWithStatusCode(_0x5f513b,_0x3e0a1b){_0x3e0a1b=_0x3e0a1b||0xcc;return function(_0x46cd3e){if(_0x46cd3e){return _0x5f513b[_0xa8c5('0x1d')](_0x3e0a1b);}return _0x5f513b[_0xa8c5('0x1e')](_0x3e0a1b)['end']();};}function respondWithResult(_0x38a960,_0x20ee80){_0x20ee80=_0x20ee80||0xc8;return function(_0x329a39){if(_0x329a39){return _0x38a960[_0xa8c5('0x1e')](_0x20ee80)[_0xa8c5('0x1f')](_0x329a39);}};}function respondWithFilteredResult(_0x2c1dbc,_0x518dec){return function(_0x7ca6f1){if(_0x7ca6f1){var _0x41ed63=typeof _0x518dec['offset']===_0xa8c5('0x20')&&typeof _0x518dec[_0xa8c5('0x21')]==='undefined';var _0x48d631=_0x7ca6f1['count'];var _0x3f7159=_0x41ed63?0x0:_0x518dec[_0xa8c5('0x22')];var _0x2d5943=_0x41ed63?_0x7ca6f1[_0xa8c5('0x23')]:_0x518dec['offset']+_0x518dec['limit'];var _0x4d92d7;if(_0x2d5943>=_0x48d631){_0x2d5943=_0x48d631;_0x4d92d7=0xc8;}else{_0x4d92d7=0xce;}_0x2c1dbc['status'](_0x4d92d7);return _0x2c1dbc[_0xa8c5('0x24')](_0xa8c5('0x25'),_0x3f7159+'-'+_0x2d5943+'/'+_0x48d631)[_0xa8c5('0x1f')](_0x7ca6f1);}return null;};}function patchUpdates(_0x1407b1){return function(_0xb0ae4d){try{jsonpatch[_0xa8c5('0x26')](_0xb0ae4d,_0x1407b1,!![]);}catch(_0x5dc7d8){return BPromise[_0xa8c5('0x27')](_0x5dc7d8);}return _0xb0ae4d[_0xa8c5('0x28')]();};}function saveUpdates(_0x9c1cf9,_0x4fcbd8){return function(_0x498558){if(_0x498558){return _0x498558[_0xa8c5('0x29')](_0x9c1cf9)[_0xa8c5('0x2a')](function(_0x5e0184){return _0x5e0184;});}return null;};}function removeEntity(_0x5200cd,_0x12f1c8){return function(_0x48c75e){if(_0x48c75e){return _0x48c75e[_0xa8c5('0x2b')]()[_0xa8c5('0x2a')](function(){var _0x2e11c4=_0x48c75e['get']({'plain':!![]});var _0x197ab8=_0xa8c5('0x2c');return db['UserProfileResource'][_0xa8c5('0x2b')]({'where':{'type':_0x197ab8,'resourceId':_0x2e11c4['id']}})['then'](function(){return _0x48c75e;});})[_0xa8c5('0x2a')](function(){_0x5200cd[_0xa8c5('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22467f,_0x472ef8){return function(_0x2d701d){if(!_0x2d701d){_0x22467f['sendStatus'](0x194);}return _0x2d701d;};}function handleError(_0x23549f,_0x4fa042){_0x4fa042=_0x4fa042||0x1f4;return function(_0x4d21f9){logger[_0xa8c5('0x2d')](_0x4d21f9[_0xa8c5('0x2e')]);if(_0x4d21f9[_0xa8c5('0x2f')]){delete _0x4d21f9[_0xa8c5('0x2f')];}_0x23549f['status'](_0x4fa042)[_0xa8c5('0x30')](_0x4d21f9);};}exports[_0xa8c5('0x31')]=function(_0x4b1a2b,_0x26efed){var _0x29b8c0={},_0x1f5e89={},_0x44c1fd={'count':0x0,'rows':[]};var _0x3a0ae2=_['map'](db[_0xa8c5('0x32')]['rawAttributes'],function(_0x5bbd77){return{'name':_0x5bbd77[_0xa8c5('0x33')],'type':_0x5bbd77[_0xa8c5('0x34')][_0xa8c5('0x35')]};});_0x1f5e89[_0xa8c5('0x36')]=_[_0xa8c5('0x37')](_0x3a0ae2,_0xa8c5('0x2f'));_0x1f5e89['query']=_[_0xa8c5('0x38')](_0x4b1a2b[_0xa8c5('0x39')]);_0x1f5e89[_0xa8c5('0x3a')]=_[_0xa8c5('0x3b')](_0x1f5e89[_0xa8c5('0x36')],_0x1f5e89[_0xa8c5('0x39')]);_0x29b8c0[_0xa8c5('0x3c')]=_['intersection'](_0x1f5e89[_0xa8c5('0x36')],qs[_0xa8c5('0x3d')](_0x4b1a2b[_0xa8c5('0x39')][_0xa8c5('0x3d')]));_0x29b8c0[_0xa8c5('0x3c')]=_0x29b8c0['attributes']['length']?_0x29b8c0[_0xa8c5('0x3c')]:_0x1f5e89[_0xa8c5('0x36')];if(!_0x4b1a2b[_0xa8c5('0x39')][_0xa8c5('0x3e')](_0xa8c5('0x3f'))){_0x29b8c0[_0xa8c5('0x21')]=qs['limit'](_0x4b1a2b[_0xa8c5('0x39')][_0xa8c5('0x21')]);_0x29b8c0[_0xa8c5('0x22')]=qs['offset'](_0x4b1a2b[_0xa8c5('0x39')][_0xa8c5('0x22')]);}_0x29b8c0[_0xa8c5('0x40')]=qs[_0xa8c5('0x41')](_0x4b1a2b[_0xa8c5('0x39')]['sort']);_0x29b8c0[_0xa8c5('0x42')]=qs[_0xa8c5('0x3a')](_[_0xa8c5('0x43')](_0x4b1a2b['query'],_0x1f5e89['filters']),_0x3a0ae2);if(_0x4b1a2b['query'][_0xa8c5('0x44')]){_0x29b8c0['where']=_[_0xa8c5('0x45')](_0x29b8c0['where'],{'$or':_[_0xa8c5('0x37')](_0x3a0ae2,function(_0x4c1a53){if(_0x4c1a53['type']!==_0xa8c5('0x46')){var _0x235556={};_0x235556[_0x4c1a53[_0xa8c5('0x2f')]]={'$like':'%'+_0x4b1a2b[_0xa8c5('0x39')][_0xa8c5('0x44')]+'%'};return _0x235556;}})});}_0x29b8c0=_[_0xa8c5('0x45')]({},_0x29b8c0,_0x4b1a2b[_0xa8c5('0x47')]);var _0x25b0f2={'where':_0x29b8c0['where']};return db[_0xa8c5('0x32')][_0xa8c5('0x23')](_0x25b0f2)[_0xa8c5('0x2a')](function(_0x48f20a){_0x44c1fd['count']=_0x48f20a;if(_0x4b1a2b[_0xa8c5('0x39')][_0xa8c5('0x48')]){_0x29b8c0[_0xa8c5('0x49')]=[{'all':!![]}];}return db[_0xa8c5('0x32')][_0xa8c5('0x4a')](_0x29b8c0);})['then'](function(_0x11f3c4){_0x44c1fd[_0xa8c5('0x4b')]=_0x11f3c4;return _0x44c1fd;})['then'](respondWithFilteredResult(_0x26efed,_0x29b8c0))[_0xa8c5('0x4c')](handleError(_0x26efed,null));};exports[_0xa8c5('0x4d')]=function(_0x3abab2,_0x50d65c){var _0x521b43={'raw':!![],'where':{'id':_0x3abab2[_0xa8c5('0x4e')]['id']}},_0x100b03={};_0x100b03[_0xa8c5('0x36')]=_[_0xa8c5('0x38')](db[_0xa8c5('0x32')][_0xa8c5('0x4f')]);_0x100b03[_0xa8c5('0x39')]=_[_0xa8c5('0x38')](_0x3abab2[_0xa8c5('0x39')]);_0x100b03[_0xa8c5('0x3a')]=_['intersection'](_0x100b03[_0xa8c5('0x36')],_0x100b03[_0xa8c5('0x39')]);_0x521b43[_0xa8c5('0x3c')]=_['intersection'](_0x100b03[_0xa8c5('0x36')],qs[_0xa8c5('0x3d')](_0x3abab2[_0xa8c5('0x39')][_0xa8c5('0x3d')]));_0x521b43['attributes']=_0x521b43[_0xa8c5('0x3c')]['length']?_0x521b43['attributes']:_0x100b03[_0xa8c5('0x36')];if(_0x3abab2[_0xa8c5('0x39')][_0xa8c5('0x48')]){_0x521b43[_0xa8c5('0x49')]=[{'all':!![]}];}_0x521b43=_['merge']({},_0x521b43,_0x3abab2[_0xa8c5('0x47')]);return db['FaxQueue']['find'](_0x521b43)[_0xa8c5('0x2a')](handleEntityNotFound(_0x50d65c,null))[_0xa8c5('0x2a')](respondWithResult(_0x50d65c,null))[_0xa8c5('0x4c')](handleError(_0x50d65c,null));};exports[_0xa8c5('0x50')]=function(_0x2a5bac,_0x37bd02){return db[_0xa8c5('0x32')][_0xa8c5('0x50')](_0x2a5bac['body'],{})[_0xa8c5('0x2a')](function(_0x69ac1b){var _0x1eb704=_0x2a5bac[_0xa8c5('0x51')]['get']({'plain':!![]});if(!_0x1eb704)throw new Error(_0xa8c5('0x52'));if(_0x1eb704['role']===_0xa8c5('0x51')){var _0x5c065c=_0x69ac1b[_0xa8c5('0x53')]({'plain':!![]});var _0x5938fb=_0xa8c5('0x2c');return db[_0xa8c5('0x54')]['find']({'where':{'name':_0x5938fb,'userProfileId':_0x1eb704[_0xa8c5('0x55')]},'raw':!![]})['then'](function(_0x425ba2){if(_0x425ba2&&_0x425ba2[_0xa8c5('0x56')]===0x0){return db[_0xa8c5('0x57')][_0xa8c5('0x50')]({'name':_0x5c065c[_0xa8c5('0x2f')],'resourceId':_0x5c065c['id'],'type':_0x425ba2[_0xa8c5('0x2f')],'sectionId':_0x425ba2['id']},{})['then'](function(){return _0x69ac1b;});}else{return _0x69ac1b;}})['catch'](function(_0x54b1f3){logger[_0xa8c5('0x2d')](_0xa8c5('0x58'),_0x54b1f3);throw _0x54b1f3;});}return _0x69ac1b;})[_0xa8c5('0x2a')](respondWithResult(_0x37bd02,0xc9))['catch'](handleError(_0x37bd02,null));};exports['update']=function(_0x2b4893,_0x5523fd){if(_0x2b4893[_0xa8c5('0x59')]['id']){delete _0x2b4893[_0xa8c5('0x59')]['id'];}return db['FaxQueue'][_0xa8c5('0x5a')]({'where':{'id':_0x2b4893[_0xa8c5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5523fd,null))[_0xa8c5('0x2a')](saveUpdates(_0x2b4893[_0xa8c5('0x59')],null))[_0xa8c5('0x2a')](respondWithResult(_0x5523fd,null))[_0xa8c5('0x4c')](handleError(_0x5523fd,null));};exports['destroy']=function(_0x8ae447,_0x5b6e25){return db[_0xa8c5('0x32')][_0xa8c5('0x5a')]({'where':{'id':_0x8ae447[_0xa8c5('0x4e')]['id']}})[_0xa8c5('0x2a')](handleEntityNotFound(_0x5b6e25,null))['then'](removeEntity(_0x5b6e25,null))['catch'](handleError(_0x5b6e25,null));};exports[_0xa8c5('0x5b')]=function(_0x3a8d9c,_0x234650){return db['FaxQueue'][_0xa8c5('0x5b')]()['then'](respondWithResult(_0x234650,null))[_0xa8c5('0x4c')](handleError(_0x234650,null));};exports[_0xa8c5('0x5c')]=function(_0x25a38c,_0xdd29a5,_0x324495){var _0x4176e1={'raw':!![],'where':{}},_0x44988c={},_0x58fbb6;return db['FaxQueue'][_0xa8c5('0x5d')]({'where':{'id':_0x25a38c[_0xa8c5('0x4e')]['id']}})[_0xa8c5('0x2a')](handleEntityNotFound(_0xdd29a5,null))[_0xa8c5('0x2a')](function(_0x3c44cc){if(_0x3c44cc){_0x58fbb6=_0x3c44cc[_0xa8c5('0x53')]({'plain':!![]});_0x44988c[_0xa8c5('0x36')]=_['keys'](db['UserFaxQueue'][_0xa8c5('0x4f')]);_0x44988c[_0xa8c5('0x39')]=_['keys'](_0x25a38c[_0xa8c5('0x39')]);_0x44988c[_0xa8c5('0x3a')]=_[_0xa8c5('0x3b')](_0x44988c['model'],_0x44988c[_0xa8c5('0x39')]);_0x4176e1[_0xa8c5('0x3c')]=_[_0xa8c5('0x3b')](_0x44988c[_0xa8c5('0x36')],qs[_0xa8c5('0x3d')](_0x25a38c['query']['fields']));_0x4176e1[_0xa8c5('0x3c')]=_0x4176e1[_0xa8c5('0x3c')][_0xa8c5('0x5e')]?_0x4176e1[_0xa8c5('0x3c')]:_0x44988c[_0xa8c5('0x36')];if(!_0x25a38c[_0xa8c5('0x39')]['hasOwnProperty'](_0xa8c5('0x3f'))){_0x4176e1[_0xa8c5('0x21')]=qs[_0xa8c5('0x21')](_0x25a38c[_0xa8c5('0x39')][_0xa8c5('0x21')]);_0x4176e1[_0xa8c5('0x22')]=qs['offset'](_0x25a38c[_0xa8c5('0x39')][_0xa8c5('0x22')]);}_0x4176e1[_0xa8c5('0x40')]=qs[_0xa8c5('0x41')](_0x25a38c[_0xa8c5('0x39')][_0xa8c5('0x41')]);_0x4176e1[_0xa8c5('0x42')]=qs[_0xa8c5('0x3a')](_[_0xa8c5('0x43')](_0x25a38c[_0xa8c5('0x39')],_0x44988c[_0xa8c5('0x3a')]));_0x4176e1[_0xa8c5('0x42')][_0xa8c5('0x5f')]=_0x3c44cc['id'];if(_0x25a38c[_0xa8c5('0x39')]['filter']){_0x4176e1[_0xa8c5('0x42')]=_['merge'](_0x4176e1['where'],{'$or':_['map'](_0x4176e1[_0xa8c5('0x3c')],function(_0xf017d){var _0x1c71eb={};_0x1c71eb[_0xf017d]={'$like':'%'+_0x25a38c['query']['filter']+'%'};return _0x1c71eb;})});}_0x4176e1=_[_0xa8c5('0x45')]({},_0x4176e1,_0x25a38c[_0xa8c5('0x47')]);return db[_0xa8c5('0x60')][_0xa8c5('0x4a')](_0x4176e1);}})[_0xa8c5('0x2a')](function(_0x5324a2){if(_0x5324a2){return db[_0xa8c5('0x61')][_0xa8c5('0x62')]({'where':{'id':_[_0xa8c5('0x37')](_0x5324a2,_0xa8c5('0x63')),'role':_0xa8c5('0x64')},'attributes':['id',_0xa8c5('0x2f'),_0xa8c5('0x65'),_0xa8c5('0x66'),_0xa8c5('0x67')]});}})[_0xa8c5('0x2a')](function(_0x254ffd){if(_0x254ffd){return{'count':_0x254ffd[_0xa8c5('0x23')],'rows':_[_0xa8c5('0x37')](_0x254ffd[_0xa8c5('0x4b')],function(_0x14f45e){return{'membername':_0x14f45e[_0xa8c5('0x2f')],'UserId':_0x14f45e['id'],'queue_name':_0x58fbb6['name'],'FaxQueueId':_0x58fbb6['id'],'interface':util['format'](_0xa8c5('0x68'),_0xa8c5('0x69'),_0x14f45e[_0xa8c5('0x2f')]),'penalty':0x0,'paused':_0x14f45e['faxPause'],'createdAt':_0x14f45e[_0xa8c5('0x67')],'updatedAt':_0x14f45e[_0xa8c5('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa8c5('0x2a')](respondWithFilteredResult(_0xdd29a5,_0x4176e1))[_0xa8c5('0x4c')](handleError(_0xdd29a5,null));};exports[_0xa8c5('0x6a')]=function(_0x319d72,_0x5b2c2f,_0x24c659){var _0x106d2c={};var _0x1055c7={};var _0x3ea2e0;var _0x53a749;return db['FaxQueue'][_0xa8c5('0x5d')]({'where':{'id':_0x319d72[_0xa8c5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5b2c2f,null))[_0xa8c5('0x2a')](function(_0x2ef3b8){if(_0x2ef3b8){_0x3ea2e0=_0x2ef3b8;_0x1055c7[_0xa8c5('0x36')]=_['keys'](db[_0xa8c5('0x6b')][_0xa8c5('0x4f')]);_0x1055c7['query']=_['keys'](_0x319d72['query']);_0x1055c7['filters']=_['intersection'](_0x1055c7['model'],_0x1055c7['query']);_0x106d2c['attributes']=_[_0xa8c5('0x3b')](_0x1055c7[_0xa8c5('0x36')],qs[_0xa8c5('0x3d')](_0x319d72['query'][_0xa8c5('0x3d')]));_0x106d2c['attributes']=_0x106d2c[_0xa8c5('0x3c')][_0xa8c5('0x5e')]?_0x106d2c[_0xa8c5('0x3c')]:_0x1055c7['model'];_0x106d2c['order']=qs[_0xa8c5('0x41')](_0x319d72[_0xa8c5('0x39')][_0xa8c5('0x41')]);_0x106d2c[_0xa8c5('0x42')]=qs[_0xa8c5('0x3a')](_['pick'](_0x319d72[_0xa8c5('0x39')],_0x1055c7[_0xa8c5('0x3a')]));if(_0x319d72[_0xa8c5('0x39')]['filter']){_0x106d2c['where']=_[_0xa8c5('0x45')](_0x106d2c[_0xa8c5('0x42')],{'$or':_[_0xa8c5('0x37')](_0x106d2c['attributes'],function(_0x57d4ff){var _0x4c1228={};_0x4c1228[_0x57d4ff]={'$like':'%'+_0x319d72[_0xa8c5('0x39')][_0xa8c5('0x44')]+'%'};return _0x4c1228;})});}_0x106d2c=_[_0xa8c5('0x45')]({},_0x106d2c,_0x319d72[_0xa8c5('0x47')]);return _0x3ea2e0['getTeams'](_0x106d2c);}})[_0xa8c5('0x2a')](function(_0x507843){if(_0x507843){_0x53a749=_0x507843[_0xa8c5('0x5e')];if(!_0x319d72[_0xa8c5('0x39')]['hasOwnProperty']('nolimit')){_0x106d2c[_0xa8c5('0x21')]=qs['limit'](_0x319d72[_0xa8c5('0x39')][_0xa8c5('0x21')]);_0x106d2c[_0xa8c5('0x22')]=qs[_0xa8c5('0x22')](_0x319d72[_0xa8c5('0x39')][_0xa8c5('0x22')]);}return _0x3ea2e0[_0xa8c5('0x6a')](_0x106d2c);}})[_0xa8c5('0x2a')](function(_0x629dc6){if(_0x629dc6){return _0x629dc6?{'count':_0x53a749,'rows':_0x629dc6}:null;}})['then'](respondWithResult(_0x5b2c2f,null))[_0xa8c5('0x4c')](handleError(_0x5b2c2f,null));};exports['addTeams']=function(_0x3ab7fb,_0x26539f,_0x20607c){var _0x5029c2=_0x3ab7fb[_0xa8c5('0x59')][_0xa8c5('0x6c')];return db[_0xa8c5('0x6b')][_0xa8c5('0x4a')]({'where':{'id':_0x5029c2},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xa8c5('0x2f'),'online',_0xa8c5('0x6d'),_0xa8c5('0x6e')],'raw':!![]}]})[_0xa8c5('0x2a')](function(_0xbd37cd){if(_0xbd37cd){var _0xb5884b=_[_0xa8c5('0x6f')](_0xbd37cd,function(_0x5a2450){var _0xac14fc=_0x5a2450['get']({'plain':!![]});return _0xac14fc['Agents'];});return db[_0xa8c5('0x32')][_0xa8c5('0x5a')]({'where':{'id':_0x3ab7fb['params']['id']}})[_0xa8c5('0x2a')](function(_0xfd14a9){return db['sequelize']['transaction'](function(_0x2aece2){return _0xfd14a9[_0xa8c5('0x70')](_0x5029c2,{'transaction':_0x2aece2})[_0xa8c5('0x2a')](function(){return BPromise['each'](_0xb5884b,function(_0x40956e){return db[_0xa8c5('0x60')]['findOrCreate']({'where':{'UserId':_0x40956e['id'],'FaxQueueId':_0x3ab7fb['params']['id']},'transaction':_0x2aece2});});})[_0xa8c5('0x2a')](function(){_0xb5884b['forEach'](function(_0x33ae51){socket[_0xa8c5('0x71')](_0xa8c5('0x72'),{'UserId':_0x33ae51['id'],'FaxQueueId':_0xfd14a9['id']});});});});});}})[_0xa8c5('0x2a')](respondWithStatusCode(_0x26539f,null))[_0xa8c5('0x4c')](handleError(_0x26539f,null));};exports[_0xa8c5('0x73')]=function(_0x21c087,_0xde8ef7,_0x76e136){return db[_0xa8c5('0x6b')]['findAll']({'where':{'id':_0x21c087[_0xa8c5('0x39')][_0xa8c5('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xa8c5('0x61')],'as':_0xa8c5('0x74'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xde8ef7,null))[_0xa8c5('0x2a')](function(_0x364850){var _0x309226=_['map'](_0x364850,'id');var _0x484d4e=[];var _0x16e29b=[];var _0x529880=squel[_0xa8c5('0x75')]();_0x529880['field'](_0xa8c5('0x76'))[_0xa8c5('0x77')](_0xa8c5('0x78'),'tq')['join'](_0xa8c5('0x79'),'ut',_0xa8c5('0x7a'))[_0xa8c5('0x42')](_0xa8c5('0x7b'),_0x21c087[_0xa8c5('0x4e')]['id']);for(var _0x2835ed=0x0;_0x2835ed<_0x364850[_0xa8c5('0x5e')];_0x2835ed+=0x1){let _0x5ed9e7=_0x364850[_0x2835ed];for(var _0x4bfa35=0x0;_0x4bfa35<_0x5ed9e7[_0xa8c5('0x74')][_0xa8c5('0x5e')];_0x4bfa35+=0x1){let _0x2a68bb=_0x5ed9e7['Agents'][_0x4bfa35];var _0x59bea4=_0x529880[_0xa8c5('0x7c')]();_0x59bea4['where'](_0xa8c5('0x7d'),_0x2a68bb['id']);_0x16e29b[_0xa8c5('0x7e')](db[_0xa8c5('0x7f')]['query'](_0x59bea4[_0xa8c5('0x80')](),{'type':db[_0xa8c5('0x7f')][_0xa8c5('0x81')][_0xa8c5('0x82')]})[_0xa8c5('0x2a')](function(_0x4f44ed){if(_0x4f44ed[_0xa8c5('0x5e')]===0x1){return _0x2a68bb['id'];}else{var _0x44902d=_['every'](_[_0xa8c5('0x37')](_0x4f44ed,'TeamId'),function(_0x5468e5){return _['includes'](_0x309226,_0x5468e5);});if(_0x44902d){return _0x2a68bb['id'];}}}));}}return BPromise['all'](_0x16e29b)[_0xa8c5('0x2a')](function(_0x5c28e5){_0x484d4e=_(_0x484d4e)[_0xa8c5('0x83')](_0x5c28e5)[_0xa8c5('0x84')]()[_0xa8c5('0x85')]();return db['FaxQueue'][_0xa8c5('0x5a')]({'where':{'id':_0x21c087[_0xa8c5('0x4e')]['id']}})[_0xa8c5('0x2a')](function(_0x590519){return db['sequelize'][_0xa8c5('0x86')](function(_0x464118){return _0x590519[_0xa8c5('0x73')](_0x21c087[_0xa8c5('0x39')][_0xa8c5('0x6c')],{'transaction':_0x464118})[_0xa8c5('0x2a')](function(){if(!_[_0xa8c5('0x87')](_0x484d4e)){return _0x590519[_0xa8c5('0x88')](_0x484d4e,{'transaction':_0x464118});}})['then'](function(){_0x484d4e[_0xa8c5('0x89')](function(_0x3251f3){socket['emit']('userFaxQueue:remove',{'UserId':_0x3251f3,'FaxQueueId':_0x590519['id']});});});});});});})[_0xa8c5('0x2a')](respondWithStatusCode(_0xde8ef7,null))[_0xa8c5('0x4c')](handleError(_0xde8ef7,null));};exports[_0xa8c5('0x8a')]=function(_0x537326,_0x3c0184,_0x352ee7){return db[_0xa8c5('0x32')][_0xa8c5('0x5a')]({'where':{'id':_0x537326[_0xa8c5('0x4e')]['id']}})[_0xa8c5('0x2a')](handleEntityNotFound(_0x3c0184,null))[_0xa8c5('0x2a')](function(_0x4fde41){if(_0x4fde41){return _0x4fde41['addAgents'](_0x537326[_0xa8c5('0x59')][_0xa8c5('0x6c')],_['omit'](_0x537326[_0xa8c5('0x59')],[_0xa8c5('0x6c'),'id'])||{})[_0xa8c5('0x8b')](function(_0x4a66c0){for(var _0x12d6f7=0x0;_0x12d6f7<_0x537326[_0xa8c5('0x59')]['ids'][_0xa8c5('0x5e')];_0x12d6f7+=0x1){socket[_0xa8c5('0x71')]('userFaxQueue:save',{'UserId':Number(_0x537326[_0xa8c5('0x59')][_0xa8c5('0x6c')][_0x12d6f7]),'FaxQueueId':Number(_0x537326[_0xa8c5('0x4e')]['id'])});}return _0x4a66c0;});}})['then'](respondWithResult(_0x3c0184,null))[_0xa8c5('0x4c')](handleError(_0x3c0184,null));};exports['removeAgents']=function(_0x254031,_0x9dd7f0,_0x4a102d){return db['FaxQueue']['find']({'where':{'id':_0x254031[_0xa8c5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x9dd7f0,null))[_0xa8c5('0x2a')](function(_0x54c982){if(_0x54c982){return _0x54c982[_0xa8c5('0x88')](_0x254031['query']['ids'])[_0xa8c5('0x2a')](function(){if(_['isArray'](_0x254031[_0xa8c5('0x39')][_0xa8c5('0x6c')])){for(var _0x500fe3=0x0;_0x500fe3<_0x254031[_0xa8c5('0x39')][_0xa8c5('0x6c')][_0xa8c5('0x5e')];_0x500fe3+=0x1){socket[_0xa8c5('0x71')](_0xa8c5('0x8c'),{'UserId':Number(_0x254031[_0xa8c5('0x39')][_0xa8c5('0x6c')][_0x500fe3]),'FaxQueueId':Number(_0x254031[_0xa8c5('0x4e')]['id'])});}}else{socket[_0xa8c5('0x71')](_0xa8c5('0x8c'),{'UserId':Number(_0x254031[_0xa8c5('0x39')][_0xa8c5('0x6c')]),'FaxQueueId':Number(_0x254031[_0xa8c5('0x4e')]['id'])});}});}})[_0xa8c5('0x2a')](respondWithStatusCode(_0x9dd7f0,null))[_0xa8c5('0x4c')](handleError(_0x9dd7f0,null));};exports[_0xa8c5('0x8d')]=function(_0x2bb915,_0xa949fe,_0x33779a){var _0xd29b8f={};var _0x250dbd={};var _0x34fcec;var _0x422335;return db[_0xa8c5('0x32')][_0xa8c5('0x5d')]({'where':{'id':_0x2bb915[_0xa8c5('0x4e')]['id']}})[_0xa8c5('0x2a')](handleEntityNotFound(_0xa949fe,null))[_0xa8c5('0x2a')](function(_0x8827f){if(_0x8827f){_0x34fcec=_0x8827f;_0x250dbd['model']=_[_0xa8c5('0x38')](db[_0xa8c5('0x61')][_0xa8c5('0x4f')]);_0x250dbd[_0xa8c5('0x39')]=_[_0xa8c5('0x38')](_0x2bb915[_0xa8c5('0x39')]);_0x250dbd[_0xa8c5('0x3a')]=_['intersection'](_0x250dbd['model'],_0x250dbd['query']);_0xd29b8f[_0xa8c5('0x3c')]=_[_0xa8c5('0x3b')](_0x250dbd['model'],qs[_0xa8c5('0x3d')](_0x2bb915[_0xa8c5('0x39')][_0xa8c5('0x3d')]));_0xd29b8f[_0xa8c5('0x3c')]=_0xd29b8f['attributes'][_0xa8c5('0x5e')]?_0xd29b8f['attributes']:_0x250dbd[_0xa8c5('0x36')];_0xd29b8f[_0xa8c5('0x40')]=qs[_0xa8c5('0x41')](_0x2bb915[_0xa8c5('0x39')]['sort']);_0xd29b8f[_0xa8c5('0x42')]=qs[_0xa8c5('0x3a')](_[_0xa8c5('0x43')](_0x2bb915['query'],_0x250dbd['filters']));if(_0x2bb915[_0xa8c5('0x39')][_0xa8c5('0x44')]){_0xd29b8f[_0xa8c5('0x42')]=_['merge'](_0xd29b8f[_0xa8c5('0x42')],{'$or':_[_0xa8c5('0x37')](_0xd29b8f[_0xa8c5('0x3c')],function(_0x1d272b){var _0x557d71={};_0x557d71[_0x1d272b]={'$like':'%'+_0x2bb915[_0xa8c5('0x39')][_0xa8c5('0x44')]+'%'};return _0x557d71;})});}_0xd29b8f=_['merge']({},_0xd29b8f,_0x2bb915['options']);return _0x34fcec[_0xa8c5('0x8d')](_0xd29b8f);}})[_0xa8c5('0x2a')](function(_0x46dc5d){if(_0x46dc5d){_0x422335=_0x46dc5d['length'];if(!_0x2bb915[_0xa8c5('0x39')][_0xa8c5('0x3e')](_0xa8c5('0x3f'))){_0xd29b8f[_0xa8c5('0x21')]=qs[_0xa8c5('0x21')](_0x2bb915[_0xa8c5('0x39')][_0xa8c5('0x21')]);_0xd29b8f[_0xa8c5('0x22')]=qs[_0xa8c5('0x22')](_0x2bb915[_0xa8c5('0x39')]['offset']);}return _0x34fcec[_0xa8c5('0x8d')](_0xd29b8f);}})[_0xa8c5('0x2a')](function(_0xe2f688){if(_0xe2f688){return _0xe2f688?{'count':_0x422335,'rows':_0xe2f688}:null;}})[_0xa8c5('0x2a')](respondWithResult(_0xa949fe,null))[_0xa8c5('0x4c')](handleError(_0xa949fe,null));};
\ No newline at end of file
index 0d6f5d9..2e6b58a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3771=['hook','exports','events','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3771,0x1bb));var _0x1377=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x3771[_0x487b0c];return _0x1adbdc;};'use strict';var EventEmitter=require(_0x1377('0x0'));var FaxQueue=require(_0x1377('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1377('0x2'),'afterUpdate':_0x1377('0x3'),'afterDestroy':_0x1377('0x4')};function emitEvent(_0x3eb3d2){return function(_0x7cfb2d,_0xfa66bf,_0x5023a4){FaxQueueEvents['emit'](_0x3eb3d2+':'+_0x7cfb2d['id'],_0x7cfb2d);FaxQueueEvents[_0x1377('0x5')](_0x3eb3d2,_0x7cfb2d);_0x5023a4(null);};}for(var e in events){if(events[_0x1377('0x6')](e)){var event=events[e];FaxQueue[_0x1377('0x7')](e,emitEvent(event));}}module[_0x1377('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0xd5ef=['hook','../../mysqldb','save','update','remove','hasOwnProperty'];(function(_0x1cb675,_0x337ad0){var _0x3a10d9=function(_0x508371){while(--_0x508371){_0x1cb675['push'](_0x1cb675['shift']());}};_0x3a10d9(++_0x337ad0);}(_0xd5ef,0x121));var _0xfd5e=function(_0x3e4329,_0xf2b41d){_0x3e4329=_0x3e4329-0x0;var _0x37553c=_0xd5ef[_0x3e4329];return _0x37553c;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xfd5e('0x0'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfd5e('0x1'),'afterUpdate':_0xfd5e('0x2'),'afterDestroy':_0xfd5e('0x3')};function emitEvent(_0x54e838){return function(_0x9d0b7c,_0x345366,_0x1c1f6a){FaxQueueEvents['emit'](_0x54e838+':'+_0x9d0b7c['id'],_0x9d0b7c);FaxQueueEvents['emit'](_0x54e838,_0x9d0b7c);_0x1c1f6a(null);};}for(var e in events){if(events[_0xfd5e('0x4')](e)){var event=events[e];FaxQueue[_0xfd5e('0x5')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index f8ee1de..a75282d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x170d=['path','rimraf','./faxQueue.attributes','exports','FaxQueue','lodash','util','api','moment','bluebird','request-promise'];(function(_0x55c00d,_0x520cb6){var _0x254a8f=function(_0x2b3378){while(--_0x2b3378){_0x55c00d['push'](_0x55c00d['shift']());}};_0x254a8f(++_0x520cb6);}(_0x170d,0x1bd));var _0xd170=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x170d[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xd170('0x0'));var util=require(_0xd170('0x1'));var logger=require('../../config/logger')(_0xd170('0x2'));var moment=require(_0xd170('0x3'));var BPromise=require(_0xd170('0x4'));var rp=require(_0xd170('0x5'));var fs=require('fs');var path=require(_0xd170('0x6'));var rimraf=require(_0xd170('0x7'));var config=require('../../config/environment');var attributes=require(_0xd170('0x8'));module[_0xd170('0x9')]=function(_0x580d20,_0x593b05){return _0x580d20['define'](_0xd170('0xa'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4350=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','define','FaxQueue','fax_queues','util'];(function(_0x4e01da,_0x3d1000){var _0x5bea9a=function(_0x1ade0a){while(--_0x1ade0a){_0x4e01da['push'](_0x4e01da['shift']());}};_0x5bea9a(++_0x3d1000);}(_0x4350,0x15e));var _0x0435=function(_0x5b1104,_0x237284){_0x5b1104=_0x5b1104-0x0;var _0xd527cc=_0x4350[_0x5b1104];return _0xd527cc;};'use strict';var _=require('lodash');var util=require(_0x0435('0x0'));var logger=require(_0x0435('0x1'))(_0x0435('0x2'));var moment=require('moment');var BPromise=require(_0x0435('0x3'));var rp=require(_0x0435('0x4'));var fs=require('fs');var path=require(_0x0435('0x5'));var rimraf=require(_0x0435('0x6'));var config=require(_0x0435('0x7'));var attributes=require(_0x0435('0x8'));module[_0x0435('0x9')]=function(_0x451626,_0x276b22){return _0x451626[_0x0435('0xa')](_0x0435('0xb'),attributes,{'tableName':_0x0435('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e4fa1bf..a4fa7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadfb=['result','FaxQueue','findAll','options','where','attributes','limit','include','map','model','GetFaxQueue','stringify','catch','ShowFaxQueue','find','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','FaxQueue,\x20%s,\x20%s','message'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xadfb,0xd7));var _0xbadf=function(_0x209e50,_0x4ddc6e){_0x209e50=_0x209e50-0x0;var _0x32349a=_0xadfb[_0x209e50];return _0x32349a;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xbadf('0x0'));var rs=require(_0xbadf('0x1'));var fs=require('fs');var Redis=require(_0xbadf('0x2'));var db=require(_0xbadf('0x3'))['db'];var utils=require(_0xbadf('0x4'));var logger=require(_0xbadf('0x5'))('rpc');var config=require(_0xbadf('0x6'));var jayson=require(_0xbadf('0x7'));var client=jayson['client'][_0xbadf('0x8')]({'port':0x232a});config[_0xbadf('0x9')]=_[_0xbadf('0xa')](config[_0xbadf('0x9')],{'host':_0xbadf('0xb'),'port':0x18eb});var socket=require(_0xbadf('0xc'))(new Redis(config[_0xbadf('0x9')]));require(_0xbadf('0xd'))[_0xbadf('0xe')](socket);function respondWithRpcPromise(_0x2f4573,_0xed7e29,_0x18c8a0){return new BPromise(function(_0x12fde1,_0x1f1bc7){return client[_0xbadf('0xf')](_0x2f4573,_0x18c8a0)[_0xbadf('0x10')](function(_0xe7e4f5){logger[_0xbadf('0x11')]('FaxQueue,\x20%s,\x20%s',_0xed7e29,_0xbadf('0x12'));logger[_0xbadf('0x13')](_0xbadf('0x14'),_0xed7e29,_0xbadf('0x12'),JSON['stringify'](_0xe7e4f5));if(_0xe7e4f5[_0xbadf('0x15')]){if(_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x16')]===0x1f4){logger[_0xbadf('0x15')](_0xbadf('0x17'),_0xed7e29,_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x18')]);return _0x1f1bc7(_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x18')]);}logger[_0xbadf('0x15')](_0xbadf('0x17'),_0xed7e29,_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x18')]);return _0x12fde1(_0xe7e4f5['error']['message']);}else{logger[_0xbadf('0x11')](_0xbadf('0x17'),_0xed7e29,'request\x20sent');_0x12fde1(_0xe7e4f5[_0xbadf('0x19')][_0xbadf('0x18')]);}})['catch'](function(_0x4a2f45){logger['error'](_0xbadf('0x17'),_0xed7e29,_0x4a2f45);_0x1f1bc7(_0x4a2f45);});});}exports['GetFaxQueue']=function(_0x1c7aea){var _0x4d3af9=this;return new Promise(function(_0x210972,_0x2ce060){return db[_0xbadf('0x1a')][_0xbadf('0x1b')]({'raw':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea['options']['raw']===undefined?!![]:![]:!![],'where':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x1d')]||null:null,'attributes':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x1e')]||null:null,'limit':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea['options'][_0xbadf('0x1f')]||null:null,'include':_0x1c7aea['options']?_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x20')]?_[_0xbadf('0x21')](_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x20')],function(_0x48aba5){return{'model':db[_0x48aba5['model']],'as':_0x48aba5['as'],'attributes':_0x48aba5[_0xbadf('0x1e')],'include':_0x48aba5['include']?_[_0xbadf('0x21')](_0x48aba5[_0xbadf('0x20')],function(_0x4f9eb7){return{'model':db[_0x4f9eb7[_0xbadf('0x22')]],'as':_0x4f9eb7['as'],'attributes':_0x4f9eb7[_0xbadf('0x1e')],'include':_0x4f9eb7[_0xbadf('0x20')]?_['map'](_0x4f9eb7[_0xbadf('0x20')],function(_0x3f8e2f){return{'model':db[_0x3f8e2f[_0xbadf('0x22')]],'as':_0x3f8e2f['as'],'attributes':_0x3f8e2f[_0xbadf('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbadf('0x10')](function(_0x11a8aa){logger[_0xbadf('0x11')](_0xbadf('0x23'),_0x1c7aea);logger['debug'](_0xbadf('0x23'),_0x1c7aea,JSON[_0xbadf('0x24')](_0x11a8aa));_0x210972(_0x11a8aa);})[_0xbadf('0x25')](function(_0x11cfc2){logger[_0xbadf('0x15')](_0xbadf('0x23'),_0x11cfc2[_0xbadf('0x18')],_0x1c7aea);_0x2ce060(_0x4d3af9[_0xbadf('0x15')](0x1f4,_0x11cfc2[_0xbadf('0x18')]));});});};exports[_0xbadf('0x26')]=function(_0x10fd8a){var _0x5a34d8=this;return new Promise(function(_0x166d57,_0x29d214){return db['FaxQueue'][_0xbadf('0x27')]({'raw':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a[_0xbadf('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a[_0xbadf('0x1c')][_0xbadf('0x1d')]||null:null,'attributes':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a[_0xbadf('0x1c')]['attributes']||null:null,'include':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a['options']['include']?_[_0xbadf('0x21')](_0x10fd8a[_0xbadf('0x1c')][_0xbadf('0x20')],function(_0x310b71){return{'model':db[_0x310b71[_0xbadf('0x22')]],'as':_0x310b71['as'],'attributes':_0x310b71[_0xbadf('0x1e')],'include':_0x310b71[_0xbadf('0x20')]?_[_0xbadf('0x21')](_0x310b71[_0xbadf('0x20')],function(_0x4cf5cd){return{'model':db[_0x4cf5cd['model']],'as':_0x4cf5cd['as'],'attributes':_0x4cf5cd[_0xbadf('0x1e')],'include':_0x4cf5cd[_0xbadf('0x20')]?_[_0xbadf('0x21')](_0x4cf5cd['include'],function(_0xaafcd0){return{'model':db[_0xaafcd0['model']],'as':_0xaafcd0['as'],'attributes':_0xaafcd0['attributes']};}):[]};}):[]};}):[]:[]})[_0xbadf('0x10')](function(_0xfbf1ff){logger['info'](_0xbadf('0x26'),_0x10fd8a);logger['debug'](_0xbadf('0x26'),_0x10fd8a,JSON[_0xbadf('0x24')](_0xfbf1ff));_0x166d57(_0xfbf1ff);})[_0xbadf('0x25')](function(_0x2f9762){logger[_0xbadf('0x15')](_0xbadf('0x26'),_0x2f9762[_0xbadf('0x18')],_0x10fd8a);_0x29d214(_0x5a34d8[_0xbadf('0x15')](0x1f4,_0x2f9762[_0xbadf('0x18')]));});});};
\ No newline at end of file
+var _0x3817=['map','model','catch','find','ShowFaxQueue','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','include'];(function(_0x701c4f,_0x2d49f0){var _0x5ea109=function(_0x1679e5){while(--_0x1679e5){_0x701c4f['push'](_0x701c4f['shift']());}};_0x5ea109(++_0x2d49f0);}(_0x3817,0x18b));var _0x7381=function(_0x5b6d36,_0x2e4327){_0x5b6d36=_0x5b6d36-0x0;var _0x311e9e=_0x3817[_0x5b6d36];return _0x311e9e;};'use strict';var _=require('lodash');var util=require(_0x7381('0x0'));var moment=require(_0x7381('0x1'));var BPromise=require('bluebird');var rs=require(_0x7381('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7381('0x3'))['db'];var utils=require(_0x7381('0x4'));var logger=require(_0x7381('0x5'))(_0x7381('0x6'));var config=require(_0x7381('0x7'));var jayson=require(_0x7381('0x8'));var client=jayson[_0x7381('0x9')]['http']({'port':0x232a});config['redis']=_[_0x7381('0xa')](config[_0x7381('0xb')],{'host':_0x7381('0xc'),'port':0x18eb});var socket=require(_0x7381('0xd'))(new Redis(config[_0x7381('0xb')]));require('./faxQueue.socket')[_0x7381('0xe')](socket);function respondWithRpcPromise(_0x526ed9,_0x443289,_0x4e71bc){return new BPromise(function(_0x1090a0,_0x2b57bc){return client[_0x7381('0xf')](_0x526ed9,_0x4e71bc)[_0x7381('0x10')](function(_0x57d923){logger[_0x7381('0x11')](_0x7381('0x12'),_0x443289,_0x7381('0x13'));logger[_0x7381('0x14')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x443289,'request\x20sent',JSON[_0x7381('0x15')](_0x57d923));if(_0x57d923['error']){if(_0x57d923[_0x7381('0x16')][_0x7381('0x17')]===0x1f4){logger[_0x7381('0x16')]('FaxQueue,\x20%s,\x20%s',_0x443289,_0x57d923[_0x7381('0x16')][_0x7381('0x18')]);return _0x2b57bc(_0x57d923['error'][_0x7381('0x18')]);}logger[_0x7381('0x16')](_0x7381('0x12'),_0x443289,_0x57d923[_0x7381('0x16')][_0x7381('0x18')]);return _0x1090a0(_0x57d923[_0x7381('0x16')]['message']);}else{logger['info'](_0x7381('0x12'),_0x443289,'request\x20sent');_0x1090a0(_0x57d923[_0x7381('0x19')]['message']);}})['catch'](function(_0x191e5c){logger['error'](_0x7381('0x12'),_0x443289,_0x191e5c);_0x2b57bc(_0x191e5c);});});}exports[_0x7381('0x1a')]=function(_0x41808c){var _0x18fcfc=this;return new Promise(function(_0x763378,_0x27e23e){return db[_0x7381('0x1b')][_0x7381('0x1c')]({'raw':_0x41808c[_0x7381('0x1d')]?_0x41808c[_0x7381('0x1d')][_0x7381('0x1e')]===undefined?!![]:![]:!![],'where':_0x41808c[_0x7381('0x1d')]?_0x41808c['options'][_0x7381('0x1f')]||null:null,'attributes':_0x41808c[_0x7381('0x1d')]?_0x41808c[_0x7381('0x1d')][_0x7381('0x20')]||null:null,'limit':_0x41808c[_0x7381('0x1d')]?_0x41808c[_0x7381('0x1d')]['limit']||null:null,'include':_0x41808c[_0x7381('0x1d')]?_0x41808c[_0x7381('0x1d')][_0x7381('0x21')]?_[_0x7381('0x22')](_0x41808c[_0x7381('0x1d')]['include'],function(_0x4a94e1){return{'model':db[_0x4a94e1[_0x7381('0x23')]],'as':_0x4a94e1['as'],'attributes':_0x4a94e1['attributes'],'include':_0x4a94e1[_0x7381('0x21')]?_['map'](_0x4a94e1[_0x7381('0x21')],function(_0x56f451){return{'model':db[_0x56f451[_0x7381('0x23')]],'as':_0x56f451['as'],'attributes':_0x56f451['attributes'],'include':_0x56f451[_0x7381('0x21')]?_[_0x7381('0x22')](_0x56f451[_0x7381('0x21')],function(_0x4c4ae5){return{'model':db[_0x4c4ae5['model']],'as':_0x4c4ae5['as'],'attributes':_0x4c4ae5[_0x7381('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x21aa43){logger[_0x7381('0x11')](_0x7381('0x1a'),_0x41808c);logger[_0x7381('0x14')]('GetFaxQueue',_0x41808c,JSON[_0x7381('0x15')](_0x21aa43));_0x763378(_0x21aa43);})[_0x7381('0x24')](function(_0x255d6f){logger[_0x7381('0x16')]('GetFaxQueue',_0x255d6f[_0x7381('0x18')],_0x41808c);_0x27e23e(_0x18fcfc[_0x7381('0x16')](0x1f4,_0x255d6f[_0x7381('0x18')]));});});};exports['ShowFaxQueue']=function(_0x4b8ca8){var _0x5e2c0f=this;return new Promise(function(_0x815a59,_0x331511){return db[_0x7381('0x1b')][_0x7381('0x25')]({'raw':_0x4b8ca8['options']?_0x4b8ca8[_0x7381('0x1d')][_0x7381('0x1e')]===undefined?!![]:![]:!![],'where':_0x4b8ca8[_0x7381('0x1d')]?_0x4b8ca8[_0x7381('0x1d')][_0x7381('0x1f')]||null:null,'attributes':_0x4b8ca8['options']?_0x4b8ca8[_0x7381('0x1d')][_0x7381('0x20')]||null:null,'include':_0x4b8ca8['options']?_0x4b8ca8[_0x7381('0x1d')]['include']?_[_0x7381('0x22')](_0x4b8ca8['options'][_0x7381('0x21')],function(_0x51bd01){return{'model':db[_0x51bd01[_0x7381('0x23')]],'as':_0x51bd01['as'],'attributes':_0x51bd01['attributes'],'include':_0x51bd01[_0x7381('0x21')]?_['map'](_0x51bd01[_0x7381('0x21')],function(_0x22cb3b){return{'model':db[_0x22cb3b[_0x7381('0x23')]],'as':_0x22cb3b['as'],'attributes':_0x22cb3b['attributes'],'include':_0x22cb3b[_0x7381('0x21')]?_[_0x7381('0x22')](_0x22cb3b[_0x7381('0x21')],function(_0x3999de){return{'model':db[_0x3999de[_0x7381('0x23')]],'as':_0x3999de['as'],'attributes':_0x3999de[_0x7381('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3e6b33){logger[_0x7381('0x11')](_0x7381('0x26'),_0x4b8ca8);logger[_0x7381('0x14')](_0x7381('0x26'),_0x4b8ca8,JSON[_0x7381('0x15')](_0x3e6b33));_0x815a59(_0x3e6b33);})[_0x7381('0x24')](function(_0x38a64c){logger[_0x7381('0x16')](_0x7381('0x26'),_0x38a64c[_0x7381('0x18')],_0x4b8ca8);_0x331511(_0x5e2c0f['error'](0x1f4,_0x38a64c['message']));});});};
\ No newline at end of file
index 407665a..ef7dda0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35e5=['./faxQueue.events','update','emit','removeListener','register','length','faxQueue:'];(function(_0x320908,_0x21dca3){var _0x3684fe=function(_0x1813e6){while(--_0x1813e6){_0x320908['push'](_0x320908['shift']());}};_0x3684fe(++_0x21dca3);}(_0x35e5,0xc4));var _0x535e=function(_0x87c02a,_0x5b81eb){_0x87c02a=_0x87c02a-0x0;var _0x206094=_0x35e5[_0x87c02a];return _0x206094;};'use strict';var FaxQueueEvents=require(_0x535e('0x0'));var events=['save','remove',_0x535e('0x1')];function createListener(_0x5d02b4,_0x21ded1){return function(_0x43753e){_0x21ded1[_0x535e('0x2')](_0x5d02b4,_0x43753e);};}function removeListener(_0x30997d,_0x458d94){return function(){FaxQueueEvents[_0x535e('0x3')](_0x30997d,_0x458d94);};}exports[_0x535e('0x4')]=function(_0x38328d){for(var _0x3fdc43=0x0,_0x1d5f08=events[_0x535e('0x5')];_0x3fdc43<_0x1d5f08;_0x3fdc43++){var _0x1904b8=events[_0x3fdc43];var _0x39ff17=createListener(_0x535e('0x6')+_0x1904b8,_0x38328d);FaxQueueEvents['on'](_0x1904b8,_0x39ff17);}};
\ No newline at end of file
+var _0x406f=['emit','removeListener','register','length','./faxQueue.events','remove'];(function(_0xa6febb,_0x4de536){var _0x1c4ec4=function(_0x251143){while(--_0x251143){_0xa6febb['push'](_0xa6febb['shift']());}};_0x1c4ec4(++_0x4de536);}(_0x406f,0xe8));var _0xf406=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x406f[_0x36ed48];return _0x51c63a;};'use strict';var FaxQueueEvents=require(_0xf406('0x0'));var events=['save',_0xf406('0x1'),'update'];function createListener(_0x28ed57,_0x444c02){return function(_0x2921ce){_0x444c02[_0xf406('0x2')](_0x28ed57,_0x2921ce);};}function removeListener(_0xbe427a,_0x19221b){return function(){FaxQueueEvents[_0xf406('0x3')](_0xbe427a,_0x19221b);};}exports[_0xf406('0x4')]=function(_0x40542f){for(var _0x235134=0x0,_0x51237b=events[_0xf406('0x5')];_0x235134<_0x51237b;_0x235134++){var _0x18bf2f=events[_0x235134];var _0x1130ae=createListener('faxQueue:'+_0x18bf2f,_0x40542f);FaxQueueEvents['on'](_0x18bf2f,_0x1130ae);}};
\ No newline at end of file
index 1d5f6f9..6ee9b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xdb28,0x106));var _0x8db2=function(_0x42225f,_0x4479e5){_0x42225f=_0x42225f-0x0;var _0x175895=_0xdb28[_0x42225f];return _0x175895;};'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('./faxQueue.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['getTeams']);router[_0x8db2('0x9')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8db2('0x14')](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x15')]);router[_0x8db2('0x14')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);router[_0x8db2('0x17')](_0x8db2('0xd'),auth['isAuthenticated'](),controller[_0x8db2('0x18')]);router[_0x8db2('0x19')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1a')]);router[_0x8db2('0x19')](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1b')]);router['delete']('/:id/users',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1c')]);module[_0x8db2('0x1d')]=router;
\ No newline at end of file
+var _0x32f4=['/:id/teams','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','/describe','show','/:id/members','/:id/users','getAgents','post','create','addTeams','addAgents','/:id','update','delete','destroy'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x32f4,0x154));var _0x432f=function(_0x6328cb,_0x27b7ba){_0x6328cb=_0x6328cb-0x0;var _0x6a1131=_0x32f4[_0x6328cb];return _0x6a1131;};'use strict';var multer=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var path=require(_0x432f('0x2'));var timeout=require(_0x432f('0x3'));var express=require('express');var router=express[_0x432f('0x4')]();var fs_extra=require(_0x432f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var controller=require(_0x432f('0x8'));router[_0x432f('0x9')]('/',auth[_0x432f('0xa')](),controller['index']);router['get'](_0x432f('0xb'),auth[_0x432f('0xa')](),controller['describe']);router[_0x432f('0x9')]('/:id',auth[_0x432f('0xa')](),controller[_0x432f('0xc')]);router[_0x432f('0x9')](_0x432f('0xd'),auth[_0x432f('0xa')](),controller['getMembers']);router[_0x432f('0x9')]('/:id/teams',auth[_0x432f('0xa')](),controller['getTeams']);router[_0x432f('0x9')](_0x432f('0xe'),auth['isAuthenticated'](),controller[_0x432f('0xf')]);router[_0x432f('0x10')]('/',auth['isAuthenticated'](),controller[_0x432f('0x11')]);router[_0x432f('0x10')]('/:id/teams',auth['isAuthenticated'](),controller[_0x432f('0x12')]);router[_0x432f('0x10')](_0x432f('0xe'),auth[_0x432f('0xa')](),controller[_0x432f('0x13')]);router['put'](_0x432f('0x14'),auth[_0x432f('0xa')](),controller[_0x432f('0x15')]);router[_0x432f('0x16')]('/:id',auth[_0x432f('0xa')](),controller[_0x432f('0x17')]);router[_0x432f('0x16')](_0x432f('0x18'),auth[_0x432f('0xa')](),controller[_0x432f('0x19')]);router['delete'](_0x432f('0xe'),auth['isAuthenticated'](),controller[_0x432f('0x1a')]);module[_0x432f('0x1b')]=router;
\ No newline at end of file
index 1968db4..43dd3fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102c=['exports','STRING','DATE','moment','sequelize'];(function(_0x35e683,_0x128119){var _0x580795=function(_0x1facd4){while(--_0x1facd4){_0x35e683['push'](_0x35e683['shift']());}};_0x580795(++_0x128119);}(_0x102c,0x16b));var _0xc102=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x102c[_0x5bd426];return _0x23a7eb;};'use strict';var moment=require(_0xc102('0x0'));var Sequelize=require(_0xc102('0x1'));module[_0xc102('0x2')]={'uniqueid':{'type':Sequelize[_0xc102('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xc102('0x3')]},'joinAt':{'type':Sequelize[_0xc102('0x4')]},'leaveAt':{'type':Sequelize[_0xc102('0x4')]},'acceptAt':{'type':Sequelize[_0xc102('0x4')]},'exitAt':{'type':Sequelize[_0xc102('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9ca1=['moment','sequelize','exports','STRING','DATE'];(function(_0x926af6,_0x2d7e70){var _0x11acd3=function(_0x249f98){while(--_0x249f98){_0x926af6['push'](_0x926af6['shift']());}};_0x11acd3(++_0x2d7e70);}(_0x9ca1,0x1cc));var _0x19ca=function(_0x232b71,_0x344f77){_0x232b71=_0x232b71-0x0;var _0xf86e99=_0x9ca1[_0x232b71];return _0xf86e99;};'use strict';var moment=require(_0x19ca('0x0'));var Sequelize=require(_0x19ca('0x1'));module[_0x19ca('0x2')]={'uniqueid':{'type':Sequelize[_0x19ca('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x19ca('0x3')]},'joinAt':{'type':Sequelize[_0x19ca('0x4')]},'leaveAt':{'type':Sequelize[_0x19ca('0x4')]},'acceptAt':{'type':Sequelize[_0x19ca('0x4')]},'exitAt':{'type':Sequelize[_0x19ca('0x4')]},'reason':{'type':Sequelize[_0x19ca('0x3')]}};
\ No newline at end of file
index 07bbabe..a6d9c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd31=['util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','count','limit','set','Content-Range','reject','update','then','error','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','fields','attributes','length','hasOwnProperty','nolimit','where','pick','VIRTUAL','filter','merge','FaxQueueReport','includeAll','include','rows','catch','intersection','options','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xcd31,0x15d));var _0x1cd3=function(_0x474ba7,_0x1d74c6){_0x474ba7=_0x474ba7-0x0;var _0x422657=_0xcd31[_0x474ba7];return _0x422657;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cd3('0x0'));var zipdir=require(_0x1cd3('0x1'));var jsonpatch=require(_0x1cd3('0x2'));var rp=require('request-promise');var moment=require(_0x1cd3('0x3'));var BPromise=require(_0x1cd3('0x4'));var Mustache=require(_0x1cd3('0x5'));var util=require(_0x1cd3('0x6'));var path=require(_0x1cd3('0x7'));var sox=require(_0x1cd3('0x8'));var csv=require('to-csv');var ejs=require(_0x1cd3('0x9'));var fs=require('fs');var fs_extra=require(_0x1cd3('0xa'));var _=require(_0x1cd3('0xb'));var squel=require('squel');var crypto=require(_0x1cd3('0xc'));var jsforce=require(_0x1cd3('0xd'));var deskjs=require(_0x1cd3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1cd3('0xf'));var Papa=require(_0x1cd3('0x10'));var Redis=require(_0x1cd3('0x11'));var authService=require(_0x1cd3('0x12'));var qs=require(_0x1cd3('0x13'));var as=require(_0x1cd3('0x14'));var hardwareService=require(_0x1cd3('0x15'));var logger=require('../../config/logger')(_0x1cd3('0x16'));var utils=require(_0x1cd3('0x17'));var config=require(_0x1cd3('0x18'));var licenseUtil=require(_0x1cd3('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfe288e,_0x4c9c6d){_0x4c9c6d=_0x4c9c6d||0xcc;return function(_0x41016f){if(_0x41016f){return _0xfe288e[_0x1cd3('0x1a')](_0x4c9c6d);}return _0xfe288e[_0x1cd3('0x1b')](_0x4c9c6d)['end']();};}function respondWithResult(_0x5b885f,_0x1a874c){_0x1a874c=_0x1a874c||0xc8;return function(_0x1def57){if(_0x1def57){return _0x5b885f[_0x1cd3('0x1b')](_0x1a874c)['json'](_0x1def57);}};}function respondWithFilteredResult(_0x2b28cf,_0x40cbbf){return function(_0x5a2b84){if(_0x5a2b84){var _0x418da3=typeof _0x40cbbf['offset']==='undefined'&&typeof _0x40cbbf['limit']==='undefined';var _0x5ca15c=_0x5a2b84['count'];var _0x14c491=_0x418da3?0x0:_0x40cbbf[_0x1cd3('0x1c')];var _0xf82a46=_0x418da3?_0x5a2b84[_0x1cd3('0x1d')]:_0x40cbbf[_0x1cd3('0x1c')]+_0x40cbbf[_0x1cd3('0x1e')];var _0x35870b;if(_0xf82a46>=_0x5ca15c){_0xf82a46=_0x5ca15c;_0x35870b=0xc8;}else{_0x35870b=0xce;}_0x2b28cf[_0x1cd3('0x1b')](_0x35870b);return _0x2b28cf[_0x1cd3('0x1f')](_0x1cd3('0x20'),_0x14c491+'-'+_0xf82a46+'/'+_0x5ca15c)['json'](_0x5a2b84);}return null;};}function patchUpdates(_0x33fc72){return function(_0x2368b3){try{jsonpatch['apply'](_0x2368b3,_0x33fc72,!![]);}catch(_0x26b59a){return BPromise[_0x1cd3('0x21')](_0x26b59a);}return _0x2368b3['save']();};}function saveUpdates(_0x20cda5,_0x159d22){return function(_0x330741){if(_0x330741){return _0x330741[_0x1cd3('0x22')](_0x20cda5)['then'](function(_0x4f6920){return _0x4f6920;});}return null;};}function removeEntity(_0x29ff8c,_0x1a6dad){return function(_0x49c7b1){if(_0x49c7b1){return _0x49c7b1['destroy']()[_0x1cd3('0x23')](function(){_0x29ff8c[_0x1cd3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55aa9c,_0x34b15f){return function(_0x1589fa){if(!_0x1589fa){_0x55aa9c['sendStatus'](0x194);}return _0x1589fa;};}function handleError(_0x5635f9,_0x1c86f6){_0x1c86f6=_0x1c86f6||0x1f4;return function(_0xc311a9){logger[_0x1cd3('0x24')](_0xc311a9['stack']);if(_0xc311a9['name']){delete _0xc311a9[_0x1cd3('0x25')];}_0x5635f9['status'](_0x1c86f6)[_0x1cd3('0x26')](_0xc311a9);};}exports[_0x1cd3('0x27')]=function(_0x268501,_0x4b7c0b){var _0xae9d0c={},_0x53979a={},_0x47578c={'count':0x0,'rows':[]};var _0x3e3afb=_[_0x1cd3('0x28')](db['FaxQueueReport'][_0x1cd3('0x29')],function(_0x909bc6){return{'name':_0x909bc6[_0x1cd3('0x2a')],'type':_0x909bc6[_0x1cd3('0x2b')][_0x1cd3('0x2c')]};});_0x53979a['model']=_[_0x1cd3('0x28')](_0x3e3afb,_0x1cd3('0x25'));_0x53979a[_0x1cd3('0x2d')]=_[_0x1cd3('0x2e')](_0x268501[_0x1cd3('0x2d')]);_0x53979a[_0x1cd3('0x2f')]=_['intersection'](_0x53979a[_0x1cd3('0x30')],_0x53979a[_0x1cd3('0x2d')]);_0xae9d0c['attributes']=_['intersection'](_0x53979a[_0x1cd3('0x30')],qs[_0x1cd3('0x31')](_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x31')]));_0xae9d0c[_0x1cd3('0x32')]=_0xae9d0c['attributes'][_0x1cd3('0x33')]?_0xae9d0c['attributes']:_0x53979a['model'];if(!_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x34')](_0x1cd3('0x35'))){_0xae9d0c[_0x1cd3('0x1e')]=qs['limit'](_0x268501[_0x1cd3('0x2d')]['limit']);_0xae9d0c[_0x1cd3('0x1c')]=qs[_0x1cd3('0x1c')](_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x1c')]);}_0xae9d0c['order']=qs['sort'](_0x268501[_0x1cd3('0x2d')]['sort']);_0xae9d0c[_0x1cd3('0x36')]=qs[_0x1cd3('0x2f')](_[_0x1cd3('0x37')](_0x268501[_0x1cd3('0x2d')],_0x53979a[_0x1cd3('0x2f')]),_0x3e3afb);if(_0x268501['query']['filter']){_0xae9d0c['where']=_['merge'](_0xae9d0c[_0x1cd3('0x36')],{'$or':_['map'](_0x3e3afb,function(_0x285845){if(_0x285845['type']!==_0x1cd3('0x38')){var _0x1af9a6={};_0x1af9a6[_0x285845['name']]={'$like':'%'+_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x39')]+'%'};return _0x1af9a6;}})});}_0xae9d0c=_[_0x1cd3('0x3a')]({},_0xae9d0c,_0x268501['options']);var _0x53e2dd={'where':_0xae9d0c[_0x1cd3('0x36')]};return db[_0x1cd3('0x3b')][_0x1cd3('0x1d')](_0x53e2dd)[_0x1cd3('0x23')](function(_0x2cc3a3){_0x47578c[_0x1cd3('0x1d')]=_0x2cc3a3;if(_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x3c')]){_0xae9d0c[_0x1cd3('0x3d')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0xae9d0c);})['then'](function(_0x42a2ed){_0x47578c[_0x1cd3('0x3e')]=_0x42a2ed;return _0x47578c;})['then'](respondWithFilteredResult(_0x4b7c0b,_0xae9d0c))[_0x1cd3('0x3f')](handleError(_0x4b7c0b,null));};exports['show']=function(_0x40b662,_0x2f6a00){var _0x2109a2={'raw':!![],'where':{'id':_0x40b662['params']['id']}},_0x326f08={};_0x326f08['model']=_['keys'](db[_0x1cd3('0x3b')]['rawAttributes']);_0x326f08['query']=_[_0x1cd3('0x2e')](_0x40b662['query']);_0x326f08[_0x1cd3('0x2f')]=_[_0x1cd3('0x40')](_0x326f08[_0x1cd3('0x30')],_0x326f08[_0x1cd3('0x2d')]);_0x2109a2[_0x1cd3('0x32')]=_[_0x1cd3('0x40')](_0x326f08[_0x1cd3('0x30')],qs[_0x1cd3('0x31')](_0x40b662['query'][_0x1cd3('0x31')]));_0x2109a2[_0x1cd3('0x32')]=_0x2109a2[_0x1cd3('0x32')]['length']?_0x2109a2['attributes']:_0x326f08[_0x1cd3('0x30')];if(_0x40b662[_0x1cd3('0x2d')][_0x1cd3('0x3c')]){_0x2109a2[_0x1cd3('0x3d')]=[{'all':!![]}];}_0x2109a2=_[_0x1cd3('0x3a')]({},_0x2109a2,_0x40b662[_0x1cd3('0x41')]);return db[_0x1cd3('0x3b')]['find'](_0x2109a2)[_0x1cd3('0x23')](handleEntityNotFound(_0x2f6a00,null))[_0x1cd3('0x23')](respondWithResult(_0x2f6a00,null))[_0x1cd3('0x3f')](handleError(_0x2f6a00,null));};exports['create']=function(_0x57c84d,_0x2605c5){return db[_0x1cd3('0x3b')][_0x1cd3('0x42')](_0x57c84d[_0x1cd3('0x43')],{})[_0x1cd3('0x23')](respondWithResult(_0x2605c5,0xc9))['catch'](handleError(_0x2605c5,null));};exports['update']=function(_0x500fcf,_0x3cde0b){if(_0x500fcf[_0x1cd3('0x43')]['id']){delete _0x500fcf[_0x1cd3('0x43')]['id'];}return db[_0x1cd3('0x3b')][_0x1cd3('0x44')]({'where':{'id':_0x500fcf['params']['id']}})['then'](handleEntityNotFound(_0x3cde0b,null))[_0x1cd3('0x23')](saveUpdates(_0x500fcf[_0x1cd3('0x43')],null))['then'](respondWithResult(_0x3cde0b,null))[_0x1cd3('0x3f')](handleError(_0x3cde0b,null));};exports[_0x1cd3('0x45')]=function(_0x2542f6,_0x5c7d9c){return db['FaxQueueReport'][_0x1cd3('0x44')]({'where':{'id':_0x2542f6['params']['id']}})[_0x1cd3('0x23')](handleEntityNotFound(_0x5c7d9c,null))[_0x1cd3('0x23')](removeEntity(_0x5c7d9c,null))[_0x1cd3('0x3f')](handleError(_0x5c7d9c,null));};exports[_0x1cd3('0x46')]=function(_0x44037e,_0xfaecf0){return db[_0x1cd3('0x3b')][_0x1cd3('0x46')]()['then'](respondWithResult(_0xfaecf0,null))[_0x1cd3('0x3f')](handleError(_0xfaecf0,null));};
\ No newline at end of file
+var _0xba47=['catch','params','rawAttributes','create','update','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','set','reject','then','destroy','sendStatus','name','send','index','map','FaxQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','include','rows'];(function(_0x465642,_0x1c4fe1){var _0x2220e1=function(_0x515d50){while(--_0x515d50){_0x465642['push'](_0x465642['shift']());}};_0x2220e1(++_0x1c4fe1);}(_0xba47,0x1ac));var _0x7ba4=function(_0x5c4322,_0x49cfcd){_0x5c4322=_0x5c4322-0x0;var _0x50b212=_0xba47[_0x5c4322];return _0x50b212;};'use strict';var emlformat=require(_0x7ba4('0x0'));var rimraf=require(_0x7ba4('0x1'));var zipdir=require(_0x7ba4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7ba4('0x3'));var moment=require(_0x7ba4('0x4'));var BPromise=require(_0x7ba4('0x5'));var Mustache=require(_0x7ba4('0x6'));var util=require('util');var path=require(_0x7ba4('0x7'));var sox=require(_0x7ba4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7ba4('0x9'));var _=require(_0x7ba4('0xa'));var squel=require(_0x7ba4('0xb'));var crypto=require(_0x7ba4('0xc'));var jsforce=require(_0x7ba4('0xd'));var deskjs=require(_0x7ba4('0xe'));var toCsv=require(_0x7ba4('0xf'));var querystring=require(_0x7ba4('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7ba4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7ba4('0x12'));var hardwareService=require(_0x7ba4('0x13'));var logger=require(_0x7ba4('0x14'))(_0x7ba4('0x15'));var utils=require('../../config/utils');var config=require(_0x7ba4('0x16'));var licenseUtil=require(_0x7ba4('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x83d2c,_0x266be2){_0x266be2=_0x266be2||0xcc;return function(_0x2fdee0){if(_0x2fdee0){return _0x83d2c['sendStatus'](_0x266be2);}return _0x83d2c[_0x7ba4('0x18')](_0x266be2)[_0x7ba4('0x19')]();};}function respondWithResult(_0x26da9d,_0x471e93){_0x471e93=_0x471e93||0xc8;return function(_0xcf45f6){if(_0xcf45f6){return _0x26da9d[_0x7ba4('0x18')](_0x471e93)[_0x7ba4('0x1a')](_0xcf45f6);}};}function respondWithFilteredResult(_0x1e16c5,_0x3197d9){return function(_0x480e0b){if(_0x480e0b){var _0x4b0fb7=typeof _0x3197d9[_0x7ba4('0x1b')]===_0x7ba4('0x1c')&&typeof _0x3197d9['limit']===_0x7ba4('0x1c');var _0xbc6330=_0x480e0b[_0x7ba4('0x1d')];var _0xd5bdde=_0x4b0fb7?0x0:_0x3197d9[_0x7ba4('0x1b')];var _0x988f2f=_0x4b0fb7?_0x480e0b[_0x7ba4('0x1d')]:_0x3197d9[_0x7ba4('0x1b')]+_0x3197d9['limit'];var _0x5d14ba;if(_0x988f2f>=_0xbc6330){_0x988f2f=_0xbc6330;_0x5d14ba=0xc8;}else{_0x5d14ba=0xce;}_0x1e16c5[_0x7ba4('0x18')](_0x5d14ba);return _0x1e16c5[_0x7ba4('0x1e')]('Content-Range',_0xd5bdde+'-'+_0x988f2f+'/'+_0xbc6330)[_0x7ba4('0x1a')](_0x480e0b);}return null;};}function patchUpdates(_0x14a214){return function(_0x3601ba){try{jsonpatch['apply'](_0x3601ba,_0x14a214,!![]);}catch(_0x5b1dde){return BPromise[_0x7ba4('0x1f')](_0x5b1dde);}return _0x3601ba['save']();};}function saveUpdates(_0x4bd364,_0x225b6a){return function(_0x4dffd7){if(_0x4dffd7){return _0x4dffd7['update'](_0x4bd364)[_0x7ba4('0x20')](function(_0x246943){return _0x246943;});}return null;};}function removeEntity(_0x3a3c67,_0x413a67){return function(_0x2afc11){if(_0x2afc11){return _0x2afc11[_0x7ba4('0x21')]()[_0x7ba4('0x20')](function(){_0x3a3c67['status'](0xcc)[_0x7ba4('0x19')]();});}};}function handleEntityNotFound(_0x34ee62,_0x10508e){return function(_0x3c679c){if(!_0x3c679c){_0x34ee62[_0x7ba4('0x22')](0x194);}return _0x3c679c;};}function handleError(_0x28c51c,_0x4f0ce5){_0x4f0ce5=_0x4f0ce5||0x1f4;return function(_0x901837){logger['error'](_0x901837['stack']);if(_0x901837['name']){delete _0x901837[_0x7ba4('0x23')];}_0x28c51c[_0x7ba4('0x18')](_0x4f0ce5)[_0x7ba4('0x24')](_0x901837);};}exports[_0x7ba4('0x25')]=function(_0x37d8cd,_0x494754){var _0x315cdb={},_0x45be5c={},_0xfb47a5={'count':0x0,'rows':[]};var _0x40a6fb=_[_0x7ba4('0x26')](db[_0x7ba4('0x27')]['rawAttributes'],function(_0x4fdbc7){return{'name':_0x4fdbc7[_0x7ba4('0x28')],'type':_0x4fdbc7[_0x7ba4('0x29')][_0x7ba4('0x2a')]};});_0x45be5c[_0x7ba4('0x2b')]=_[_0x7ba4('0x26')](_0x40a6fb,_0x7ba4('0x23'));_0x45be5c[_0x7ba4('0x2c')]=_[_0x7ba4('0x2d')](_0x37d8cd[_0x7ba4('0x2c')]);_0x45be5c[_0x7ba4('0x2e')]=_['intersection'](_0x45be5c[_0x7ba4('0x2b')],_0x45be5c[_0x7ba4('0x2c')]);_0x315cdb['attributes']=_[_0x7ba4('0x2f')](_0x45be5c[_0x7ba4('0x2b')],qs['fields'](_0x37d8cd[_0x7ba4('0x2c')][_0x7ba4('0x30')]));_0x315cdb['attributes']=_0x315cdb[_0x7ba4('0x31')]['length']?_0x315cdb['attributes']:_0x45be5c[_0x7ba4('0x2b')];if(!_0x37d8cd['query'][_0x7ba4('0x32')](_0x7ba4('0x33'))){_0x315cdb[_0x7ba4('0x34')]=qs[_0x7ba4('0x34')](_0x37d8cd[_0x7ba4('0x2c')][_0x7ba4('0x34')]);_0x315cdb['offset']=qs[_0x7ba4('0x1b')](_0x37d8cd[_0x7ba4('0x2c')][_0x7ba4('0x1b')]);}_0x315cdb[_0x7ba4('0x35')]=qs['sort'](_0x37d8cd[_0x7ba4('0x2c')][_0x7ba4('0x36')]);_0x315cdb[_0x7ba4('0x37')]=qs[_0x7ba4('0x2e')](_[_0x7ba4('0x38')](_0x37d8cd['query'],_0x45be5c[_0x7ba4('0x2e')]),_0x40a6fb);if(_0x37d8cd[_0x7ba4('0x2c')][_0x7ba4('0x39')]){_0x315cdb['where']=_[_0x7ba4('0x3a')](_0x315cdb[_0x7ba4('0x37')],{'$or':_[_0x7ba4('0x26')](_0x40a6fb,function(_0x498520){if(_0x498520[_0x7ba4('0x29')]!=='VIRTUAL'){var _0x21c7f8={};_0x21c7f8[_0x498520['name']]={'$like':'%'+_0x37d8cd[_0x7ba4('0x2c')][_0x7ba4('0x39')]+'%'};return _0x21c7f8;}})});}_0x315cdb=_[_0x7ba4('0x3a')]({},_0x315cdb,_0x37d8cd[_0x7ba4('0x3b')]);var _0x2307ef={'where':_0x315cdb[_0x7ba4('0x37')]};return db[_0x7ba4('0x27')][_0x7ba4('0x1d')](_0x2307ef)[_0x7ba4('0x20')](function(_0x234182){_0xfb47a5['count']=_0x234182;if(_0x37d8cd['query']['includeAll']){_0x315cdb[_0x7ba4('0x3c')]=[{'all':!![]}];}return db[_0x7ba4('0x27')]['findAll'](_0x315cdb);})[_0x7ba4('0x20')](function(_0x3daf6f){_0xfb47a5[_0x7ba4('0x3d')]=_0x3daf6f;return _0xfb47a5;})['then'](respondWithFilteredResult(_0x494754,_0x315cdb))[_0x7ba4('0x3e')](handleError(_0x494754,null));};exports['show']=function(_0x21338c,_0x242b7e){var _0x306e4e={'raw':!![],'where':{'id':_0x21338c[_0x7ba4('0x3f')]['id']}},_0x35b21a={};_0x35b21a['model']=_['keys'](db[_0x7ba4('0x27')][_0x7ba4('0x40')]);_0x35b21a[_0x7ba4('0x2c')]=_['keys'](_0x21338c[_0x7ba4('0x2c')]);_0x35b21a['filters']=_[_0x7ba4('0x2f')](_0x35b21a[_0x7ba4('0x2b')],_0x35b21a['query']);_0x306e4e[_0x7ba4('0x31')]=_[_0x7ba4('0x2f')](_0x35b21a[_0x7ba4('0x2b')],qs[_0x7ba4('0x30')](_0x21338c[_0x7ba4('0x2c')][_0x7ba4('0x30')]));_0x306e4e[_0x7ba4('0x31')]=_0x306e4e[_0x7ba4('0x31')]['length']?_0x306e4e[_0x7ba4('0x31')]:_0x35b21a[_0x7ba4('0x2b')];if(_0x21338c[_0x7ba4('0x2c')]['includeAll']){_0x306e4e[_0x7ba4('0x3c')]=[{'all':!![]}];}_0x306e4e=_['merge']({},_0x306e4e,_0x21338c[_0x7ba4('0x3b')]);return db[_0x7ba4('0x27')]['find'](_0x306e4e)[_0x7ba4('0x20')](handleEntityNotFound(_0x242b7e,null))[_0x7ba4('0x20')](respondWithResult(_0x242b7e,null))[_0x7ba4('0x3e')](handleError(_0x242b7e,null));};exports['create']=function(_0x2ce0c0,_0x3000cf){return db['FaxQueueReport'][_0x7ba4('0x41')](_0x2ce0c0['body'],{})[_0x7ba4('0x20')](respondWithResult(_0x3000cf,0xc9))[_0x7ba4('0x3e')](handleError(_0x3000cf,null));};exports[_0x7ba4('0x42')]=function(_0x4e62d6,_0x448cb5){if(_0x4e62d6[_0x7ba4('0x43')]['id']){delete _0x4e62d6[_0x7ba4('0x43')]['id'];}return db['FaxQueueReport']['find']({'where':{'id':_0x4e62d6[_0x7ba4('0x3f')]['id']}})['then'](handleEntityNotFound(_0x448cb5,null))[_0x7ba4('0x20')](saveUpdates(_0x4e62d6['body'],null))[_0x7ba4('0x20')](respondWithResult(_0x448cb5,null))['catch'](handleError(_0x448cb5,null));};exports[_0x7ba4('0x21')]=function(_0x7044cc,_0x4946ae){return db[_0x7ba4('0x27')][_0x7ba4('0x44')]({'where':{'id':_0x7044cc[_0x7ba4('0x3f')]['id']}})[_0x7ba4('0x20')](handleEntityNotFound(_0x4946ae,null))[_0x7ba4('0x20')](removeEntity(_0x4946ae,null))['catch'](handleError(_0x4946ae,null));};exports[_0x7ba4('0x45')]=function(_0x1dfa4b,_0xd6d1da){return db[_0x7ba4('0x27')]['describe']()[_0x7ba4('0x20')](respondWithResult(_0xd6d1da,null))[_0x7ba4('0x3e')](handleError(_0xd6d1da,null));};
\ No newline at end of file
index 71752a4..0435c7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','util'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x814b,0x1a2));var _0xb814=function(_0x1bc013,_0x7771c6){_0x1bc013=_0x1bc013-0x0;var _0x55df36=_0x814b[_0x1bc013];return _0x55df36;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fbe=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','../../config/logger','api'];(function(_0x3052eb,_0x1b25fb){var _0x547cb7=function(_0x236f5a){while(--_0x236f5a){_0x3052eb['push'](_0x3052eb['shift']());}};_0x547cb7(++_0x1b25fb);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0xb03c3,_0x46c612){_0xb03c3=_0xb03c3-0x0;var _0x21501f=_0x7fbe[_0xb03c3];return _0x21501f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xe7fb('0xc'),'fields':[_0xe7fb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 0cb92c0..0ce0610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9077=['request\x20sent','stringify','error','code','message','catch','CreateFaxQueueReport','create','options','UpdateFaxQueueReport','update','body','raw','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0xbd0f32,_0x127abb){var _0x26f682=function(_0x54985b){while(--_0x54985b){_0xbd0f32['push'](_0xbd0f32['shift']());}};_0x26f682(++_0x127abb);}(_0x9077,0x76));var _0x7907=function(_0x78291f,_0x3bf6ef){_0x78291f=_0x78291f-0x0;var _0x197968=_0x9077[_0x78291f];return _0x197968;};'use strict';var _=require(_0x7907('0x0'));var util=require(_0x7907('0x1'));var moment=require(_0x7907('0x2'));var BPromise=require(_0x7907('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7907('0x4'));var db=require(_0x7907('0x5'))['db'];var utils=require(_0x7907('0x6'));var logger=require(_0x7907('0x7'))(_0x7907('0x8'));var config=require('../../config/environment');var jayson=require(_0x7907('0x9'));var client=jayson[_0x7907('0xa')][_0x7907('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c84c5,_0x190b5b,_0xc22a90){return new BPromise(function(_0x3648d8,_0x37384b){return client[_0x7907('0xc')](_0x5c84c5,_0xc22a90)[_0x7907('0xd')](function(_0x2462c7){logger[_0x7907('0xe')](_0x7907('0xf'),_0x190b5b,'request\x20sent');logger[_0x7907('0x10')](_0x7907('0x11'),_0x190b5b,_0x7907('0x12'),JSON[_0x7907('0x13')](_0x2462c7));if(_0x2462c7[_0x7907('0x14')]){if(_0x2462c7['error'][_0x7907('0x15')]===0x1f4){logger[_0x7907('0x14')](_0x7907('0xf'),_0x190b5b,_0x2462c7['error'][_0x7907('0x16')]);return _0x37384b(_0x2462c7[_0x7907('0x14')][_0x7907('0x16')]);}logger[_0x7907('0x14')]('FaxQueueReport,\x20%s,\x20%s',_0x190b5b,_0x2462c7[_0x7907('0x14')][_0x7907('0x16')]);return _0x3648d8(_0x2462c7[_0x7907('0x14')][_0x7907('0x16')]);}else{logger[_0x7907('0xe')](_0x7907('0xf'),_0x190b5b,_0x7907('0x12'));_0x3648d8(_0x2462c7['result']['message']);}})[_0x7907('0x17')](function(_0x4339b9){logger[_0x7907('0x14')](_0x7907('0xf'),_0x190b5b,_0x4339b9);_0x37384b(_0x4339b9);});});}exports[_0x7907('0x18')]=function(_0x5303f1){var _0x579df7=this;return new Promise(function(_0x16e6fe,_0x4232ef){return db['FaxQueueReport'][_0x7907('0x19')](_0x5303f1['body'],{'raw':_0x5303f1[_0x7907('0x1a')]?_0x5303f1[_0x7907('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x7907('0xd')](function(_0x5cad04){logger[_0x7907('0xe')]('CreateFaxQueueReport',_0x5303f1);logger[_0x7907('0x10')](_0x7907('0x18'),_0x5303f1,JSON['stringify'](_0x5cad04));_0x16e6fe(_0x5cad04);})[_0x7907('0x17')](function(_0x14fc44){logger[_0x7907('0x14')]('CreateFaxQueueReport',_0x14fc44[_0x7907('0x16')],_0x5303f1);_0x4232ef(_0x579df7[_0x7907('0x14')](0x1f4,_0x14fc44[_0x7907('0x16')]));});});};exports[_0x7907('0x1b')]=function(_0x12bb1e){var _0x515287=this;return new Promise(function(_0x39611e,_0x4b3f99){return db['FaxQueueReport'][_0x7907('0x1c')](_0x12bb1e[_0x7907('0x1d')],{'raw':_0x12bb1e[_0x7907('0x1a')]?_0x12bb1e[_0x7907('0x1a')][_0x7907('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12bb1e['options']?_0x12bb1e[_0x7907('0x1a')][_0x7907('0x1f')]||null:null,'attributes':_0x12bb1e[_0x7907('0x1a')]?_0x12bb1e[_0x7907('0x1a')][_0x7907('0x20')]||null:null,'limit':_0x12bb1e['options']?_0x12bb1e['options'][_0x7907('0x21')]||null:null})[_0x7907('0xd')](function(_0x48b174){logger[_0x7907('0xe')](_0x7907('0x1b'),_0x12bb1e);logger[_0x7907('0x10')](_0x7907('0x1b'),_0x12bb1e,JSON[_0x7907('0x13')](_0x48b174));_0x39611e(_0x48b174);})['catch'](function(_0xaa09d){logger[_0x7907('0x14')](_0x7907('0x1b'),_0xaa09d[_0x7907('0x16')],_0x12bb1e);_0x4b3f99(_0x515287['error'](0x1f4,_0xaa09d[_0x7907('0x16')]));});});};
\ No newline at end of file
+var _0x0663=['limit','UpdateFaxQueueReport','lodash','util','moment','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','options','raw','body','where'];(function(_0xa44396,_0x4e0c6a){var _0x13cfd4=function(_0x3e2dd5){while(--_0x3e2dd5){_0xa44396['push'](_0xa44396['shift']());}};_0x13cfd4(++_0x4e0c6a);}(_0x0663,0x14c));var _0x3066=function(_0xbf187d,_0x19c26f){_0xbf187d=_0xbf187d-0x0;var _0x3289b0=_0x0663[_0xbf187d];return _0x3289b0;};'use strict';var _=require(_0x3066('0x0'));var util=require(_0x3066('0x1'));var moment=require(_0x3066('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(_0x3066('0x3'));var logger=require(_0x3066('0x4'))('rpc');var config=require(_0x3066('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x3066('0x6')][_0x3066('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4a2bb9,_0x3cee3d,_0x1e157d){return new BPromise(function(_0xd7bd5d,_0x5de49a){return client[_0x3066('0x8')](_0x4a2bb9,_0x1e157d)[_0x3066('0x9')](function(_0x468431){logger[_0x3066('0xa')](_0x3066('0xb'),_0x3cee3d,_0x3066('0xc'));logger[_0x3066('0xd')](_0x3066('0xe'),_0x3cee3d,_0x3066('0xc'),JSON[_0x3066('0xf')](_0x468431));if(_0x468431['error']){if(_0x468431[_0x3066('0x10')][_0x3066('0x11')]===0x1f4){logger['error'](_0x3066('0xb'),_0x3cee3d,_0x468431[_0x3066('0x10')][_0x3066('0x12')]);return _0x5de49a(_0x468431['error'][_0x3066('0x12')]);}logger[_0x3066('0x10')](_0x3066('0xb'),_0x3cee3d,_0x468431['error'][_0x3066('0x12')]);return _0xd7bd5d(_0x468431[_0x3066('0x10')][_0x3066('0x12')]);}else{logger[_0x3066('0xa')](_0x3066('0xb'),_0x3cee3d,_0x3066('0xc'));_0xd7bd5d(_0x468431[_0x3066('0x13')][_0x3066('0x12')]);}})[_0x3066('0x14')](function(_0x276f21){logger['error'](_0x3066('0xb'),_0x3cee3d,_0x276f21);_0x5de49a(_0x276f21);});});}exports[_0x3066('0x15')]=function(_0x466409){var _0x306ebe=this;return new Promise(function(_0x5dbc8f,_0x3c58ca){return db[_0x3066('0x16')][_0x3066('0x17')](_0x466409['body'],{'raw':_0x466409['options']?_0x466409[_0x3066('0x18')][_0x3066('0x19')]===undefined?!![]:![]:!![]})[_0x3066('0x9')](function(_0x2efa7e){logger['info'](_0x3066('0x15'),_0x466409);logger[_0x3066('0xd')]('CreateFaxQueueReport',_0x466409,JSON[_0x3066('0xf')](_0x2efa7e));_0x5dbc8f(_0x2efa7e);})[_0x3066('0x14')](function(_0x41c32a){logger[_0x3066('0x10')](_0x3066('0x15'),_0x41c32a['message'],_0x466409);_0x3c58ca(_0x306ebe[_0x3066('0x10')](0x1f4,_0x41c32a['message']));});});};exports['UpdateFaxQueueReport']=function(_0x3b3562){var _0x2048e1=this;return new Promise(function(_0x3568ff,_0x4ec800){return db[_0x3066('0x16')]['update'](_0x3b3562[_0x3066('0x1a')],{'raw':_0x3b3562['options']?_0x3b3562[_0x3066('0x18')][_0x3066('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b3562[_0x3066('0x18')]?_0x3b3562[_0x3066('0x18')][_0x3066('0x1b')]||null:null,'attributes':_0x3b3562[_0x3066('0x18')]?_0x3b3562[_0x3066('0x18')]['attributes']||null:null,'limit':_0x3b3562[_0x3066('0x18')]?_0x3b3562[_0x3066('0x18')][_0x3066('0x1c')]||null:null})[_0x3066('0x9')](function(_0xd9bb6b){logger[_0x3066('0xa')]('UpdateFaxQueueReport',_0x3b3562);logger[_0x3066('0xd')](_0x3066('0x1d'),_0x3b3562,JSON[_0x3066('0xf')](_0xd9bb6b));_0x3568ff(_0xd9bb6b);})[_0x3066('0x14')](function(_0x249e9e){logger[_0x3066('0x10')](_0x3066('0x1d'),_0x249e9e[_0x3066('0x12')],_0x3b3562);_0x4ec800(_0x2048e1[_0x3066('0x10')](0x1f4,_0x249e9e[_0x3066('0x12')]));});});};
\ No newline at end of file
index 11aaabc..803f62c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c8d=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','get','/:id','show','post','create','update','delete','path'];(function(_0x233600,_0x4c135c){var _0x59b9a0=function(_0xfa02e7){while(--_0xfa02e7){_0x233600['push'](_0x233600['shift']());}};_0x59b9a0(++_0x4c135c);}(_0x9c8d,0x1a3));var _0xd9c8=function(_0x19356f,_0x36afac){_0x19356f=_0x19356f-0x0;var _0xf5f59d=_0x9c8d[_0x19356f];return _0xf5f59d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd9c8('0x0'));var timeout=require(_0xd9c8('0x1'));var express=require('express');var router=express[_0xd9c8('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xd9c8('0x3'));var interaction=require(_0xd9c8('0x4'));var config=require(_0xd9c8('0x5'));var controller=require(_0xd9c8('0x6'));router['get']('/',auth[_0xd9c8('0x7')](),controller['index']);router['get']('/describe',auth[_0xd9c8('0x7')](),controller['describe']);router[_0xd9c8('0x8')](_0xd9c8('0x9'),auth[_0xd9c8('0x7')](),controller[_0xd9c8('0xa')]);router[_0xd9c8('0xb')]('/',auth[_0xd9c8('0x7')](),controller[_0xd9c8('0xc')]);router['put'](_0xd9c8('0x9'),auth[_0xd9c8('0x7')](),controller[_0xd9c8('0xd')]);router[_0xd9c8('0xe')](_0xd9c8('0x9'),auth[_0xd9c8('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc3df=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path'];(function(_0x59ecc6,_0x528b39){var _0x59f8b1=function(_0x248c3a){while(--_0x248c3a){_0x59ecc6['push'](_0x59ecc6['shift']());}};_0x59f8b1(++_0x528b39);}(_0xc3df,0x1b5));var _0xfc3d=function(_0x2a2b5f,_0x47f0e4){_0x2a2b5f=_0x2a2b5f-0x0;var _0x448c28=_0xc3df[_0x2a2b5f];return _0x448c28;};'use strict';var multer=require(_0xfc3d('0x0'));var util=require(_0xfc3d('0x1'));var path=require(_0xfc3d('0x2'));var timeout=require(_0xfc3d('0x3'));var express=require(_0xfc3d('0x4'));var router=express[_0xfc3d('0x5')]();var fs_extra=require(_0xfc3d('0x6'));var auth=require(_0xfc3d('0x7'));var interaction=require(_0xfc3d('0x8'));var config=require('../../config/environment');var controller=require(_0xfc3d('0x9'));router[_0xfc3d('0xa')]('/',auth[_0xfc3d('0xb')](),controller['index']);router[_0xfc3d('0xa')](_0xfc3d('0xc'),auth[_0xfc3d('0xb')](),controller[_0xfc3d('0xd')]);router[_0xfc3d('0xa')](_0xfc3d('0xe'),auth[_0xfc3d('0xb')](),controller[_0xfc3d('0xf')]);router[_0xfc3d('0x10')]('/',auth[_0xfc3d('0xb')](),controller[_0xfc3d('0x11')]);router[_0xfc3d('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xfc3d('0x13')]);router[_0xfc3d('0x14')](_0xfc3d('0xe'),auth[_0xfc3d('0xb')](),controller[_0xfc3d('0x15')]);module['exports']=router;
\ No newline at end of file
index 726493b..5d5a25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x347097,_0x37a135){var _0x5dfd04=function(_0x131412){while(--_0x131412){_0x347097['push'](_0x347097['shift']());}};_0x5dfd04(++_0x37a135);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x3b594b,_0x5835c3){var _0x1ea5f8=function(_0x191b3e){while(--_0x191b3e){_0x3b594b['push'](_0x3b594b['shift']());}};_0x1ea5f8(++_0x5835c3);}(_0x9bde,0xe1));var _0xe9bd=function(_0x4eb1c2,_0x4379fb){_0x4eb1c2=_0x4eb1c2-0x0;var _0x502cb4=_0x9bde[_0x4eb1c2];return _0x502cb4;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index e4a08c9..8406d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d5=['include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxTransferReport','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x12c60a,_0xc2a818){var _0x25d0f6=function(_0x302bfb){while(--_0x302bfb){_0x12c60a['push'](_0x12c60a['shift']());}};_0x25d0f6(++_0xc2a818);}(_0xb2d5,0x1c0));var _0x5b2d=function(_0x2f2f70,_0x4d0a75){_0x2f2f70=_0x2f2f70-0x0;var _0x4c1c88=_0xb2d5[_0x2f2f70];return _0x4c1c88;};'use strict';var emlformat=require(_0x5b2d('0x0'));var rimraf=require(_0x5b2d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b2d('0x2'));var rp=require(_0x5b2d('0x3'));var moment=require(_0x5b2d('0x4'));var BPromise=require(_0x5b2d('0x5'));var Mustache=require(_0x5b2d('0x6'));var util=require('util');var path=require(_0x5b2d('0x7'));var sox=require('sox');var csv=require(_0x5b2d('0x8'));var ejs=require(_0x5b2d('0x9'));var fs=require('fs');var fs_extra=require(_0x5b2d('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5b2d('0xb'));var jsforce=require(_0x5b2d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5b2d('0xd'));var Papa=require(_0x5b2d('0xe'));var Redis=require(_0x5b2d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5b2d('0x10'));var as=require(_0x5b2d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5b2d('0x12'))(_0x5b2d('0x13'));var utils=require(_0x5b2d('0x14'));var config=require(_0x5b2d('0x15'));var licenseUtil=require(_0x5b2d('0x16'));var db=require(_0x5b2d('0x17'))['db'];function respondWithStatusCode(_0x204c90,_0x180dd7){_0x180dd7=_0x180dd7||0xcc;return function(_0x423880){if(_0x423880){return _0x204c90[_0x5b2d('0x18')](_0x180dd7);}return _0x204c90[_0x5b2d('0x19')](_0x180dd7)[_0x5b2d('0x1a')]();};}function respondWithResult(_0x4eb006,_0x14f087){_0x14f087=_0x14f087||0xc8;return function(_0x3c2c99){if(_0x3c2c99){return _0x4eb006['status'](_0x14f087)['json'](_0x3c2c99);}};}function respondWithFilteredResult(_0x22d4e5,_0x6f4236){return function(_0x33e477){if(_0x33e477){var _0x3367bb=typeof _0x6f4236[_0x5b2d('0x1b')]===_0x5b2d('0x1c')&&typeof _0x6f4236[_0x5b2d('0x1d')]===_0x5b2d('0x1c');var _0xbe2226=_0x33e477[_0x5b2d('0x1e')];var _0x4a20f4=_0x3367bb?0x0:_0x6f4236['offset'];var _0x12e511=_0x3367bb?_0x33e477['count']:_0x6f4236['offset']+_0x6f4236['limit'];var _0x3afd00;if(_0x12e511>=_0xbe2226){_0x12e511=_0xbe2226;_0x3afd00=0xc8;}else{_0x3afd00=0xce;}_0x22d4e5[_0x5b2d('0x19')](_0x3afd00);return _0x22d4e5['set']('Content-Range',_0x4a20f4+'-'+_0x12e511+'/'+_0xbe2226)['json'](_0x33e477);}return null;};}function patchUpdates(_0x2be7fb){return function(_0xead66d){try{jsonpatch[_0x5b2d('0x1f')](_0xead66d,_0x2be7fb,!![]);}catch(_0x54e1e8){return BPromise[_0x5b2d('0x20')](_0x54e1e8);}return _0xead66d[_0x5b2d('0x21')]();};}function saveUpdates(_0x270506,_0x3dc237){return function(_0x59d9fb){if(_0x59d9fb){return _0x59d9fb[_0x5b2d('0x22')](_0x270506)[_0x5b2d('0x23')](function(_0x3d4e4c){return _0x3d4e4c;});}return null;};}function removeEntity(_0x4220af,_0x49f66c){return function(_0x3d7a9c){if(_0x3d7a9c){return _0x3d7a9c[_0x5b2d('0x24')]()[_0x5b2d('0x23')](function(){_0x4220af[_0x5b2d('0x19')](0xcc)[_0x5b2d('0x1a')]();});}};}function handleEntityNotFound(_0x101260,_0x16bf15){return function(_0x945223){if(!_0x945223){_0x101260[_0x5b2d('0x18')](0x194);}return _0x945223;};}function handleError(_0xc9533,_0x423972){_0x423972=_0x423972||0x1f4;return function(_0x33411a){logger['error'](_0x33411a[_0x5b2d('0x25')]);if(_0x33411a['name']){delete _0x33411a[_0x5b2d('0x26')];}_0xc9533[_0x5b2d('0x19')](_0x423972)[_0x5b2d('0x27')](_0x33411a);};}exports[_0x5b2d('0x28')]=function(_0xf504d3,_0x42801b){var _0x5b81eb={},_0x280d92={},_0x4562c5={'count':0x0,'rows':[]};var _0x60c58=_[_0x5b2d('0x29')](db[_0x5b2d('0x2a')]['rawAttributes'],function(_0x2c6473){return{'name':_0x2c6473[_0x5b2d('0x2b')],'type':_0x2c6473[_0x5b2d('0x2c')]['key']};});_0x280d92[_0x5b2d('0x2d')]=_[_0x5b2d('0x29')](_0x60c58,_0x5b2d('0x26'));_0x280d92['query']=_[_0x5b2d('0x2e')](_0xf504d3['query']);_0x280d92[_0x5b2d('0x2f')]=_[_0x5b2d('0x30')](_0x280d92['model'],_0x280d92[_0x5b2d('0x31')]);_0x5b81eb[_0x5b2d('0x32')]=_[_0x5b2d('0x30')](_0x280d92['model'],qs[_0x5b2d('0x33')](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x33')]));_0x5b81eb['attributes']=_0x5b81eb['attributes'][_0x5b2d('0x34')]?_0x5b81eb[_0x5b2d('0x32')]:_0x280d92[_0x5b2d('0x2d')];if(!_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x35')]('nolimit')){_0x5b81eb[_0x5b2d('0x1d')]=qs['limit'](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x1d')]);_0x5b81eb[_0x5b2d('0x1b')]=qs[_0x5b2d('0x1b')](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x1b')]);}_0x5b81eb[_0x5b2d('0x36')]=qs[_0x5b2d('0x37')](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x37')]);_0x5b81eb[_0x5b2d('0x38')]=qs[_0x5b2d('0x2f')](_[_0x5b2d('0x39')](_0xf504d3[_0x5b2d('0x31')],_0x280d92[_0x5b2d('0x2f')]),_0x60c58);if(_0xf504d3['query'][_0x5b2d('0x3a')]){_0x5b81eb['where']=_[_0x5b2d('0x3b')](_0x5b81eb[_0x5b2d('0x38')],{'$or':_[_0x5b2d('0x29')](_0x60c58,function(_0x24cf0f){if(_0x24cf0f['type']!==_0x5b2d('0x3c')){var _0x32a5de={};_0x32a5de[_0x24cf0f[_0x5b2d('0x26')]]={'$like':'%'+_0xf504d3[_0x5b2d('0x31')]['filter']+'%'};return _0x32a5de;}})});}_0x5b81eb=_['merge']({},_0x5b81eb,_0xf504d3[_0x5b2d('0x3d')]);var _0x2fd4f={'where':_0x5b81eb[_0x5b2d('0x38')]};return db['FaxTransferReport'][_0x5b2d('0x1e')](_0x2fd4f)[_0x5b2d('0x23')](function(_0x39bc5c){_0x4562c5[_0x5b2d('0x1e')]=_0x39bc5c;if(_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x3e')]){_0x5b81eb[_0x5b2d('0x3f')]=[{'all':!![]}];}return db[_0x5b2d('0x2a')][_0x5b2d('0x40')](_0x5b81eb);})[_0x5b2d('0x23')](function(_0x54caf1){_0x4562c5[_0x5b2d('0x41')]=_0x54caf1;return _0x4562c5;})[_0x5b2d('0x23')](respondWithFilteredResult(_0x42801b,_0x5b81eb))[_0x5b2d('0x42')](handleError(_0x42801b,null));};exports[_0x5b2d('0x43')]=function(_0x1501bc,_0x37dff7){var _0xfcd199={'raw':!![],'where':{'id':_0x1501bc[_0x5b2d('0x44')]['id']}},_0x3212b5={};_0x3212b5[_0x5b2d('0x2d')]=_[_0x5b2d('0x2e')](db[_0x5b2d('0x2a')]['rawAttributes']);_0x3212b5[_0x5b2d('0x31')]=_[_0x5b2d('0x2e')](_0x1501bc[_0x5b2d('0x31')]);_0x3212b5['filters']=_['intersection'](_0x3212b5[_0x5b2d('0x2d')],_0x3212b5[_0x5b2d('0x31')]);_0xfcd199[_0x5b2d('0x32')]=_[_0x5b2d('0x30')](_0x3212b5[_0x5b2d('0x2d')],qs[_0x5b2d('0x33')](_0x1501bc[_0x5b2d('0x31')]['fields']));_0xfcd199[_0x5b2d('0x32')]=_0xfcd199[_0x5b2d('0x32')][_0x5b2d('0x34')]?_0xfcd199[_0x5b2d('0x32')]:_0x3212b5[_0x5b2d('0x2d')];if(_0x1501bc[_0x5b2d('0x31')][_0x5b2d('0x3e')]){_0xfcd199[_0x5b2d('0x3f')]=[{'all':!![]}];}_0xfcd199=_['merge']({},_0xfcd199,_0x1501bc[_0x5b2d('0x3d')]);return db[_0x5b2d('0x2a')]['find'](_0xfcd199)[_0x5b2d('0x23')](handleEntityNotFound(_0x37dff7,null))[_0x5b2d('0x23')](respondWithResult(_0x37dff7,null))[_0x5b2d('0x42')](handleError(_0x37dff7,null));};exports[_0x5b2d('0x45')]=function(_0x197892,_0x5945c2){return db[_0x5b2d('0x2a')]['create'](_0x197892[_0x5b2d('0x46')],{})['then'](respondWithResult(_0x5945c2,0xc9))[_0x5b2d('0x42')](handleError(_0x5945c2,null));};exports[_0x5b2d('0x22')]=function(_0x351633,_0x3000da){if(_0x351633['body']['id']){delete _0x351633[_0x5b2d('0x46')]['id'];}return db[_0x5b2d('0x2a')][_0x5b2d('0x47')]({'where':{'id':_0x351633[_0x5b2d('0x44')]['id']}})[_0x5b2d('0x23')](handleEntityNotFound(_0x3000da,null))[_0x5b2d('0x23')](saveUpdates(_0x351633['body'],null))['then'](respondWithResult(_0x3000da,null))[_0x5b2d('0x42')](handleError(_0x3000da,null));};exports['destroy']=function(_0x16f125,_0x4ceb05){return db[_0x5b2d('0x2a')][_0x5b2d('0x47')]({'where':{'id':_0x16f125[_0x5b2d('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ceb05,null))[_0x5b2d('0x23')](removeEntity(_0x4ceb05,null))[_0x5b2d('0x42')](handleError(_0x4ceb05,null));};exports[_0x5b2d('0x48')]=function(_0x3d2c68,_0x1325a6){return db[_0x5b2d('0x2a')][_0x5b2d('0x48')]()['then'](respondWithResult(_0x1325a6,null))[_0x5b2d('0x42')](handleError(_0x1325a6,null));};
\ No newline at end of file
+var _0xf20a=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','FaxTransferReport','findAll','rows','catch','show','includeAll','include','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x47cc26,_0x467421){var _0x4f3f5d=function(_0x516b6a){while(--_0x516b6a){_0x47cc26['push'](_0x47cc26['shift']());}};_0x4f3f5d(++_0x467421);}(_0xf20a,0x1bb));var _0xaf20=function(_0x36559,_0xa8c52e){_0x36559=_0x36559-0x0;var _0x32aebc=_0xf20a[_0x36559];return _0x32aebc;};'use strict';var emlformat=require(_0xaf20('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaf20('0x1'));var jsonpatch=require(_0xaf20('0x2'));var rp=require(_0xaf20('0x3'));var moment=require('moment');var BPromise=require(_0xaf20('0x4'));var Mustache=require(_0xaf20('0x5'));var util=require(_0xaf20('0x6'));var path=require('path');var sox=require(_0xaf20('0x7'));var csv=require(_0xaf20('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaf20('0x9'));var _=require(_0xaf20('0xa'));var squel=require(_0xaf20('0xb'));var crypto=require('crypto');var jsforce=require(_0xaf20('0xc'));var deskjs=require(_0xaf20('0xd'));var toCsv=require(_0xaf20('0x8'));var querystring=require(_0xaf20('0xe'));var Papa=require(_0xaf20('0xf'));var Redis=require(_0xaf20('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xaf20('0x11'));var as=require(_0xaf20('0x12'));var hardwareService=require(_0xaf20('0x13'));var logger=require(_0xaf20('0x14'))(_0xaf20('0x15'));var utils=require(_0xaf20('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xaf20('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d8f1f,_0x5dcc20){_0x5dcc20=_0x5dcc20||0xcc;return function(_0x5e0da3){if(_0x5e0da3){return _0x4d8f1f[_0xaf20('0x18')](_0x5dcc20);}return _0x4d8f1f[_0xaf20('0x19')](_0x5dcc20)[_0xaf20('0x1a')]();};}function respondWithResult(_0x5f0b2c,_0x214898){_0x214898=_0x214898||0xc8;return function(_0x435150){if(_0x435150){return _0x5f0b2c[_0xaf20('0x19')](_0x214898)[_0xaf20('0x1b')](_0x435150);}};}function respondWithFilteredResult(_0x4df692,_0x2a068b){return function(_0x405bc6){if(_0x405bc6){var _0x446d86=typeof _0x2a068b['offset']===_0xaf20('0x1c')&&typeof _0x2a068b[_0xaf20('0x1d')]===_0xaf20('0x1c');var _0x2d571c=_0x405bc6['count'];var _0xfdc486=_0x446d86?0x0:_0x2a068b[_0xaf20('0x1e')];var _0x120802=_0x446d86?_0x405bc6[_0xaf20('0x1f')]:_0x2a068b[_0xaf20('0x1e')]+_0x2a068b['limit'];var _0x35479c;if(_0x120802>=_0x2d571c){_0x120802=_0x2d571c;_0x35479c=0xc8;}else{_0x35479c=0xce;}_0x4df692['status'](_0x35479c);return _0x4df692[_0xaf20('0x20')](_0xaf20('0x21'),_0xfdc486+'-'+_0x120802+'/'+_0x2d571c)[_0xaf20('0x1b')](_0x405bc6);}return null;};}function patchUpdates(_0x248090){return function(_0x34faf0){try{jsonpatch[_0xaf20('0x22')](_0x34faf0,_0x248090,!![]);}catch(_0x39da22){return BPromise[_0xaf20('0x23')](_0x39da22);}return _0x34faf0[_0xaf20('0x24')]();};}function saveUpdates(_0x292b7a,_0x208776){return function(_0x15d48a){if(_0x15d48a){return _0x15d48a[_0xaf20('0x25')](_0x292b7a)['then'](function(_0x3e23b1){return _0x3e23b1;});}return null;};}function removeEntity(_0x599e91,_0x536f8){return function(_0x3553cd){if(_0x3553cd){return _0x3553cd[_0xaf20('0x26')]()[_0xaf20('0x27')](function(){_0x599e91[_0xaf20('0x19')](0xcc)[_0xaf20('0x1a')]();});}};}function handleEntityNotFound(_0x5c38fb,_0x31179c){return function(_0x1ced68){if(!_0x1ced68){_0x5c38fb[_0xaf20('0x18')](0x194);}return _0x1ced68;};}function handleError(_0x11f6f4,_0x289cd0){_0x289cd0=_0x289cd0||0x1f4;return function(_0x209fa7){logger[_0xaf20('0x28')](_0x209fa7[_0xaf20('0x29')]);if(_0x209fa7[_0xaf20('0x2a')]){delete _0x209fa7['name'];}_0x11f6f4['status'](_0x289cd0)[_0xaf20('0x2b')](_0x209fa7);};}exports[_0xaf20('0x2c')]=function(_0x4b6790,_0x5e3c8c){var _0x482926={},_0x2ea2cd={},_0x4add85={'count':0x0,'rows':[]};var _0x36f05b=_[_0xaf20('0x2d')](db['FaxTransferReport'][_0xaf20('0x2e')],function(_0x2c35bb){return{'name':_0x2c35bb[_0xaf20('0x2f')],'type':_0x2c35bb[_0xaf20('0x30')][_0xaf20('0x31')]};});_0x2ea2cd[_0xaf20('0x32')]=_[_0xaf20('0x2d')](_0x36f05b,'name');_0x2ea2cd['query']=_[_0xaf20('0x33')](_0x4b6790[_0xaf20('0x34')]);_0x2ea2cd['filters']=_[_0xaf20('0x35')](_0x2ea2cd[_0xaf20('0x32')],_0x2ea2cd[_0xaf20('0x34')]);_0x482926[_0xaf20('0x36')]=_[_0xaf20('0x35')](_0x2ea2cd['model'],qs[_0xaf20('0x37')](_0x4b6790[_0xaf20('0x34')][_0xaf20('0x37')]));_0x482926[_0xaf20('0x36')]=_0x482926[_0xaf20('0x36')][_0xaf20('0x38')]?_0x482926[_0xaf20('0x36')]:_0x2ea2cd['model'];if(!_0x4b6790['query']['hasOwnProperty'](_0xaf20('0x39'))){_0x482926['limit']=qs[_0xaf20('0x1d')](_0x4b6790['query'][_0xaf20('0x1d')]);_0x482926['offset']=qs[_0xaf20('0x1e')](_0x4b6790[_0xaf20('0x34')][_0xaf20('0x1e')]);}_0x482926['order']=qs[_0xaf20('0x3a')](_0x4b6790[_0xaf20('0x34')][_0xaf20('0x3a')]);_0x482926[_0xaf20('0x3b')]=qs['filters'](_[_0xaf20('0x3c')](_0x4b6790['query'],_0x2ea2cd[_0xaf20('0x3d')]),_0x36f05b);if(_0x4b6790['query'][_0xaf20('0x3e')]){_0x482926[_0xaf20('0x3b')]=_['merge'](_0x482926['where'],{'$or':_[_0xaf20('0x2d')](_0x36f05b,function(_0x1386e0){if(_0x1386e0[_0xaf20('0x30')]!==_0xaf20('0x3f')){var _0x2d8046={};_0x2d8046[_0x1386e0['name']]={'$like':'%'+_0x4b6790[_0xaf20('0x34')][_0xaf20('0x3e')]+'%'};return _0x2d8046;}})});}_0x482926=_[_0xaf20('0x40')]({},_0x482926,_0x4b6790[_0xaf20('0x41')]);var _0x5465be={'where':_0x482926[_0xaf20('0x3b')]};return db[_0xaf20('0x42')][_0xaf20('0x1f')](_0x5465be)['then'](function(_0x227acf){_0x4add85[_0xaf20('0x1f')]=_0x227acf;if(_0x4b6790[_0xaf20('0x34')]['includeAll']){_0x482926['include']=[{'all':!![]}];}return db[_0xaf20('0x42')][_0xaf20('0x43')](_0x482926);})['then'](function(_0xd369fe){_0x4add85[_0xaf20('0x44')]=_0xd369fe;return _0x4add85;})[_0xaf20('0x27')](respondWithFilteredResult(_0x5e3c8c,_0x482926))[_0xaf20('0x45')](handleError(_0x5e3c8c,null));};exports[_0xaf20('0x46')]=function(_0x1bda3f,_0x595db2){var _0x435163={'raw':!![],'where':{'id':_0x1bda3f['params']['id']}},_0x3dfd95={};_0x3dfd95[_0xaf20('0x32')]=_[_0xaf20('0x33')](db[_0xaf20('0x42')]['rawAttributes']);_0x3dfd95[_0xaf20('0x34')]=_['keys'](_0x1bda3f[_0xaf20('0x34')]);_0x3dfd95[_0xaf20('0x3d')]=_[_0xaf20('0x35')](_0x3dfd95['model'],_0x3dfd95['query']);_0x435163[_0xaf20('0x36')]=_[_0xaf20('0x35')](_0x3dfd95[_0xaf20('0x32')],qs['fields'](_0x1bda3f[_0xaf20('0x34')][_0xaf20('0x37')]));_0x435163[_0xaf20('0x36')]=_0x435163['attributes'][_0xaf20('0x38')]?_0x435163[_0xaf20('0x36')]:_0x3dfd95['model'];if(_0x1bda3f[_0xaf20('0x34')][_0xaf20('0x47')]){_0x435163[_0xaf20('0x48')]=[{'all':!![]}];}_0x435163=_['merge']({},_0x435163,_0x1bda3f[_0xaf20('0x41')]);return db['FaxTransferReport'][_0xaf20('0x49')](_0x435163)[_0xaf20('0x27')](handleEntityNotFound(_0x595db2,null))[_0xaf20('0x27')](respondWithResult(_0x595db2,null))['catch'](handleError(_0x595db2,null));};exports['create']=function(_0x1dd4e9,_0x27b691){return db[_0xaf20('0x42')][_0xaf20('0x4a')](_0x1dd4e9[_0xaf20('0x4b')],{})['then'](respondWithResult(_0x27b691,0xc9))[_0xaf20('0x45')](handleError(_0x27b691,null));};exports[_0xaf20('0x25')]=function(_0x119efd,_0x60e88b){if(_0x119efd['body']['id']){delete _0x119efd['body']['id'];}return db[_0xaf20('0x42')][_0xaf20('0x49')]({'where':{'id':_0x119efd['params']['id']}})[_0xaf20('0x27')](handleEntityNotFound(_0x60e88b,null))[_0xaf20('0x27')](saveUpdates(_0x119efd[_0xaf20('0x4b')],null))[_0xaf20('0x27')](respondWithResult(_0x60e88b,null))[_0xaf20('0x45')](handleError(_0x60e88b,null));};exports[_0xaf20('0x26')]=function(_0x23e54a,_0x3e0952){return db[_0xaf20('0x42')]['find']({'where':{'id':_0x23e54a['params']['id']}})[_0xaf20('0x27')](handleEntityNotFound(_0x3e0952,null))[_0xaf20('0x27')](removeEntity(_0x3e0952,null))['catch'](handleError(_0x3e0952,null));};exports[_0xaf20('0x4c')]=function(_0xa11cf9,_0x2ddb42){return db[_0xaf20('0x42')][_0xaf20('0x4c')]()[_0xaf20('0x27')](respondWithResult(_0x2ddb42,null))[_0xaf20('0x45')](handleError(_0x2ddb42,null));};
\ No newline at end of file
index 477c778..34913ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c57=['./faxTransferReport.attributes','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2591d0,_0x182200){var _0x56fd03=function(_0x2fdd7e){while(--_0x2fdd7e){_0x2591d0['push'](_0x2591d0['shift']());}};_0x56fd03(++_0x182200);}(_0x5c57,0x116));var _0x75c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c57[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x75c5('0x0'));var util=require(_0x75c5('0x1'));var logger=require(_0x75c5('0x2'))(_0x75c5('0x3'));var moment=require(_0x75c5('0x4'));var BPromise=require(_0x75c5('0x5'));var rp=require(_0x75c5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75c5('0x7'));var config=require('../../config/environment');var attributes=require(_0x75c5('0x8'));module['exports']=function(_0x342b3c,_0x4ec10d){return _0x342b3c['define']('FaxTransferReport',attributes,{'tableName':_0x75c5('0x9'),'paranoid':![],'indexes':[{'name':_0x75c5('0xa'),'fields':[_0x75c5('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x05a4=['report_fax_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./faxTransferReport.attributes','exports','define','FaxTransferReport'];(function(_0x3cb322,_0x387758){var _0x451209=function(_0x3ad47e){while(--_0x3ad47e){_0x3cb322['push'](_0x3cb322['shift']());}};_0x451209(++_0x387758);}(_0x05a4,0x161));var _0x405a=function(_0x2405d6,_0x5190be){_0x2405d6=_0x2405d6-0x0;var _0x3283dc=_0x05a4[_0x2405d6];return _0x3283dc;};'use strict';var _=require(_0x405a('0x0'));var util=require(_0x405a('0x1'));var logger=require(_0x405a('0x2'))('api');var moment=require(_0x405a('0x3'));var BPromise=require(_0x405a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x405a('0x5'));var rimraf=require(_0x405a('0x6'));var config=require('../../config/environment');var attributes=require(_0x405a('0x7'));module[_0x405a('0x8')]=function(_0x3d6509,_0x3ba7a1){return _0x3d6509[_0x405a('0x9')](_0x405a('0xa'),attributes,{'tableName':_0x405a('0xb'),'paranoid':![],'indexes':[{'name':_0x405a('0xc'),'fields':[_0x405a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 9ac80ed..bb1b263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca82=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment'];(function(_0x39d980,_0x15c127){var _0x33fcbc=function(_0x32548a){while(--_0x32548a){_0x39d980['push'](_0x39d980['shift']());}};_0x33fcbc(++_0x15c127);}(_0xca82,0x15b));var _0x2ca8=function(_0x5bf35e,_0x4ccc17){_0x5bf35e=_0x5bf35e-0x0;var _0x35b3d7=_0xca82[_0x5bf35e];return _0x35b3d7;};'use strict';var _=require(_0x2ca8('0x0'));var util=require(_0x2ca8('0x1'));var moment=require(_0x2ca8('0x2'));var BPromise=require(_0x2ca8('0x3'));var rs=require(_0x2ca8('0x4'));var fs=require('fs');var Redis=require(_0x2ca8('0x5'));var db=require(_0x2ca8('0x6'))['db'];var utils=require(_0x2ca8('0x7'));var logger=require(_0x2ca8('0x8'))(_0x2ca8('0x9'));var config=require(_0x2ca8('0xa'));var jayson=require(_0x2ca8('0xb'));var client=jayson[_0x2ca8('0xc')][_0x2ca8('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x556d09,_0xcb3b17,_0x2407ce){return new BPromise(function(_0x28e936,_0x3d6583){return client[_0x2ca8('0xe')](_0x556d09,_0x2407ce)['then'](function(_0x1c052d){logger[_0x2ca8('0xf')](_0x2ca8('0x10'),_0xcb3b17,_0x2ca8('0x11'));logger[_0x2ca8('0x12')](_0x2ca8('0x13'),_0xcb3b17,'request\x20sent',JSON['stringify'](_0x1c052d));if(_0x1c052d[_0x2ca8('0x14')]){if(_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x15')]===0x1f4){logger[_0x2ca8('0x14')]('FaxTransferReport,\x20%s,\x20%s',_0xcb3b17,_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x16')]);return _0x3d6583(_0x1c052d[_0x2ca8('0x14')]['message']);}logger[_0x2ca8('0x14')](_0x2ca8('0x10'),_0xcb3b17,_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x16')]);return _0x28e936(_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x16')]);}else{logger['info'](_0x2ca8('0x10'),_0xcb3b17,'request\x20sent');_0x28e936(_0x1c052d[_0x2ca8('0x17')]['message']);}})[_0x2ca8('0x18')](function(_0x180dd2){logger[_0x2ca8('0x14')](_0x2ca8('0x10'),_0xcb3b17,_0x180dd2);_0x3d6583(_0x180dd2);});});}
\ No newline at end of file
+var _0xa565=['message','info','result','lodash','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa565,0xe7));var _0x5a56=function(_0x4449b3,_0x14a7c8){_0x4449b3=_0x4449b3-0x0;var _0x15aa56=_0xa565[_0x4449b3];return _0x15aa56;};'use strict';var _=require(_0x5a56('0x0'));var util=require('util');var moment=require(_0x5a56('0x1'));var BPromise=require('bluebird');var rs=require(_0x5a56('0x2'));var fs=require('fs');var Redis=require(_0x5a56('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5a56('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x5a56('0x5'));var jayson=require(_0x5a56('0x6'));var client=jayson[_0x5a56('0x7')][_0x5a56('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d711c,_0x5eb532,_0x3fa177){return new BPromise(function(_0x1f746a,_0x1de654){return client[_0x5a56('0x9')](_0x1d711c,_0x3fa177)[_0x5a56('0xa')](function(_0x5deadf){logger['info'](_0x5a56('0xb'),_0x5eb532,_0x5a56('0xc'));logger[_0x5a56('0xd')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x5eb532,_0x5a56('0xc'),JSON['stringify'](_0x5deadf));if(_0x5deadf[_0x5a56('0xe')]){if(_0x5deadf[_0x5a56('0xe')][_0x5a56('0xf')]===0x1f4){logger[_0x5a56('0xe')](_0x5a56('0xb'),_0x5eb532,_0x5deadf[_0x5a56('0xe')]['message']);return _0x1de654(_0x5deadf[_0x5a56('0xe')]['message']);}logger['error'](_0x5a56('0xb'),_0x5eb532,_0x5deadf[_0x5a56('0xe')][_0x5a56('0x10')]);return _0x1f746a(_0x5deadf[_0x5a56('0xe')][_0x5a56('0x10')]);}else{logger[_0x5a56('0x11')](_0x5a56('0xb'),_0x5eb532,_0x5a56('0xc'));_0x1f746a(_0x5deadf[_0x5a56('0x12')][_0x5a56('0x10')]);}})['catch'](function(_0x432462){logger[_0x5a56('0xe')](_0x5a56('0xb'),_0x5eb532,_0x432462);_0x1de654(_0x432462);});});}
\ No newline at end of file
index 773d943..f9f68e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeba0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','destroy','path','connect-timeout'];(function(_0x1a3968,_0x2720b5){var _0x30f501=function(_0x497dd9){while(--_0x497dd9){_0x1a3968['push'](_0x1a3968['shift']());}};_0x30f501(++_0x2720b5);}(_0xeba0,0x17a));var _0x0eba=function(_0x56f972,_0x49b459){_0x56f972=_0x56f972-0x0;var _0xf415ef=_0xeba0[_0x56f972];return _0xf415ef;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0eba('0x0'));var timeout=require(_0x0eba('0x1'));var express=require('express');var router=express[_0x0eba('0x2')]();var fs_extra=require(_0x0eba('0x3'));var auth=require(_0x0eba('0x4'));var interaction=require(_0x0eba('0x5'));var config=require(_0x0eba('0x6'));var controller=require(_0x0eba('0x7'));router['get']('/',auth[_0x0eba('0x8')](),controller[_0x0eba('0x9')]);router[_0x0eba('0xa')](_0x0eba('0xb'),auth['isAuthenticated'](),controller[_0x0eba('0xc')]);router[_0x0eba('0xa')](_0x0eba('0xd'),auth['isAuthenticated'](),controller[_0x0eba('0xe')]);router['post']('/',auth[_0x0eba('0x8')](),controller[_0x0eba('0xf')]);router[_0x0eba('0x10')](_0x0eba('0xd'),auth[_0x0eba('0x8')](),controller[_0x0eba('0x11')]);router[_0x0eba('0x12')]('/:id',auth[_0x0eba('0x8')](),controller[_0x0eba('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x0c93=['./faxTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','put','update','delete','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x577b16,_0x450639){var _0x7d82e2=function(_0x2d1ebe){while(--_0x2d1ebe){_0x577b16['push'](_0x577b16['shift']());}};_0x7d82e2(++_0x450639);}(_0x0c93,0x7e));var _0x30c9=function(_0x52d30d,_0xf8c946){_0x52d30d=_0x52d30d-0x0;var _0x295a80=_0x0c93[_0x52d30d];return _0x295a80;};'use strict';var multer=require('multer');var util=require(_0x30c9('0x0'));var path=require(_0x30c9('0x1'));var timeout=require(_0x30c9('0x2'));var express=require(_0x30c9('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x30c9('0x4'));var interaction=require(_0x30c9('0x5'));var config=require(_0x30c9('0x6'));var controller=require(_0x30c9('0x7'));router[_0x30c9('0x8')]('/',auth[_0x30c9('0x9')](),controller[_0x30c9('0xa')]);router['get']('/describe',auth[_0x30c9('0x9')](),controller[_0x30c9('0xb')]);router[_0x30c9('0x8')](_0x30c9('0xc'),auth[_0x30c9('0x9')](),controller[_0x30c9('0xd')]);router[_0x30c9('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x30c9('0xf')](_0x30c9('0xc'),auth[_0x30c9('0x9')](),controller[_0x30c9('0x10')]);router[_0x30c9('0x11')]('/:id',auth[_0x30c9('0x9')](),controller['destroy']);module[_0x30c9('0x12')]=router;
\ No newline at end of file
index 6745073..2fa9476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69fb=['./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','put','delete','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1cf04f,_0x392017){var _0x593b9e=function(_0x34a8ce){while(--_0x34a8ce){_0x1cf04f['push'](_0x1cf04f['shift']());}};_0x593b9e(++_0x392017);}(_0x69fb,0xcb));var _0xb69f=function(_0x4630f4,_0x4aa158){_0x4630f4=_0x4630f4-0x0;var _0x3e2187=_0x69fb[_0x4630f4];return _0x3e2187;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb69f('0x0'));var timeout=require(_0xb69f('0x1'));var express=require('express');var router=express[_0xb69f('0x2')]();var fs_extra=require(_0xb69f('0x3'));var auth=require(_0xb69f('0x4'));var interaction=require(_0xb69f('0x5'));var config=require(_0xb69f('0x6'));var controller=require(_0xb69f('0x7'));router[_0xb69f('0x8')]('/',auth[_0xb69f('0x9')](),controller[_0xb69f('0xa')]);router[_0xb69f('0x8')](_0xb69f('0xb'),auth['isAuthenticated'](),controller[_0xb69f('0xc')]);router[_0xb69f('0x8')](_0xb69f('0xd'),auth[_0xb69f('0x9')](),controller['getConfigurations']);router[_0xb69f('0x8')](_0xb69f('0xe'),auth[_0xb69f('0x9')](),controller[_0xb69f('0xf')]);router[_0xb69f('0x10')]('/',auth[_0xb69f('0x9')](),controller['create']);router[_0xb69f('0x10')]('/:id/configurations',auth[_0xb69f('0x9')](),controller[_0xb69f('0x11')]);router[_0xb69f('0x12')](_0xb69f('0xb'),auth[_0xb69f('0x9')](),controller['update']);router[_0xb69f('0x13')](_0xb69f('0xb'),auth[_0xb69f('0x9')](),controller['destroy']);module[_0xb69f('0x14')]=router;
\ No newline at end of file
+var _0xfef2=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','index','get','/:id','isAuthenticated','/:id/configurations','getConfigurations','getFields','create','post','addConfiguration','put','exports'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xfef2,0x1ee));var _0x2fef=function(_0x4f526c,_0x6c4dbe){_0x4f526c=_0x4f526c-0x0;var _0x38a51e=_0xfef2[_0x4f526c];return _0x38a51e;};'use strict';var multer=require(_0x2fef('0x0'));var util=require('util');var path=require(_0x2fef('0x1'));var timeout=require(_0x2fef('0x2'));var express=require(_0x2fef('0x3'));var router=express[_0x2fef('0x4')]();var fs_extra=require(_0x2fef('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2fef('0x6'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x2fef('0x7')]);router[_0x2fef('0x8')](_0x2fef('0x9'),auth[_0x2fef('0xa')](),controller['show']);router[_0x2fef('0x8')](_0x2fef('0xb'),auth[_0x2fef('0xa')](),controller[_0x2fef('0xc')]);router[_0x2fef('0x8')]('/:id/fields',auth[_0x2fef('0xa')](),controller[_0x2fef('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2fef('0xe')]);router[_0x2fef('0xf')]('/:id/configurations',auth[_0x2fef('0xa')](),controller[_0x2fef('0x10')]);router[_0x2fef('0x11')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x2fef('0x9'),auth[_0x2fef('0xa')](),controller['destroy']);module[_0x2fef('0x12')]=router;
\ No newline at end of file
index 47e0093..a134529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0c=['integrationTab','newTab','exports','STRING','ENUM','basic'];(function(_0x7c3789,_0x4d4ef3){var _0x268881=function(_0x16ba7d){while(--_0x16ba7d){_0x7c3789['push'](_0x7c3789['shift']());}};_0x268881(++_0x4d4ef3);}(_0x3a0c,0x194));var _0xc3a0=function(_0x494118,_0x29077a){_0x494118=_0x494118-0x0;var _0x2ad03c=_0x3a0c[_0x494118];return _0x2ad03c;};'use strict';var Sequelize=require('sequelize');module[_0xc3a0('0x0')]={'name':{'type':Sequelize[_0xc3a0('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc3a0('0x1')]},'authType':{'type':Sequelize[_0xc3a0('0x2')](_0xc3a0('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize[_0xc3a0('0x1')]},'consumerKey':{'type':Sequelize[_0xc3a0('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xc3a0('0x1')]},'serverUrl':{'type':Sequelize[_0xc3a0('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xc3a0('0x2')](_0xc3a0('0x4'),_0xc3a0('0x5')),'defaultValue':_0xc3a0('0x4')}};
\ No newline at end of file
+var _0x5438=['sequelize','exports','STRING','basic','ENUM','integrationTab'];(function(_0x56d733,_0x60d7db){var _0x5702f9=function(_0x5243e9){while(--_0x5243e9){_0x56d733['push'](_0x56d733['shift']());}};_0x5702f9(++_0x60d7db);}(_0x5438,0xcc));var _0x8543=function(_0x3b34b1,_0x3f3206){_0x3b34b1=_0x3b34b1-0x0;var _0x1b20e1=_0x5438[_0x3b34b1];return _0x1b20e1;};'use strict';var Sequelize=require(_0x8543('0x0'));module[_0x8543('0x1')]={'name':{'type':Sequelize[_0x8543('0x2')]},'description':{'type':Sequelize[_0x8543('0x2')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize['ENUM'](_0x8543('0x3')),'defaultValue':_0x8543('0x3')},'password':{'type':Sequelize[_0x8543('0x2')]},'consumerKey':{'type':Sequelize[_0x8543('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x8543('0x2')]},'tokenSecret':{'type':Sequelize[_0x8543('0x2')]},'serverUrl':{'type':Sequelize[_0x8543('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8543('0x4')](_0x8543('0x5'),'newTab'),'defaultValue':_0x8543('0x5')}};
\ No newline at end of file
index d3ae118..cdf3fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c91=['DeskField','getFields','priority','remoteUri','authType','username','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','headers','Authorization','Basic\x20%s','%s:%s','password','toString','base64','concat','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','lodash','crypto','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','map','DeskAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','catch','rawAttributes','fields','find','create','body','params','findOne','DeskConfiguration','order','merge','getConfigurations','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0xe83a86,_0x1a0f7d){var _0x55f841=function(_0x1fbfcb){while(--_0x1fbfcb){_0xe83a86['push'](_0xe83a86['shift']());}};_0x55f841(++_0x1a0f7d);}(_0x3c91,0xf6));var _0x13c9=function(_0x1d7fca,_0x14576a){_0x1d7fca=_0x1d7fca-0x0;var _0x1a223f=_0x3c91[_0x1d7fca];return _0x1a223f;};'use strict';var emlformat=require(_0x13c9('0x0'));var rimraf=require(_0x13c9('0x1'));var zipdir=require(_0x13c9('0x2'));var jsonpatch=require(_0x13c9('0x3'));var rp=require(_0x13c9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x13c9('0x5'));var path=require(_0x13c9('0x6'));var sox=require(_0x13c9('0x7'));var csv=require(_0x13c9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x13c9('0x9'));var squel=require('squel');var crypto=require(_0x13c9('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x13c9('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x13c9('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x13c9('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x13c9('0xd'));var logger=require(_0x13c9('0xe'))(_0x13c9('0xf'));var utils=require('../../config/utils');var config=require(_0x13c9('0x10'));var licenseUtil=require(_0x13c9('0x11'));var db=require(_0x13c9('0x12'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x46a298,_0x15de77){_0x15de77=_0x15de77||0xcc;return function(_0x4ecf7e){if(_0x4ecf7e){return _0x46a298[_0x13c9('0x13')](_0x15de77);}return _0x46a298[_0x13c9('0x14')](_0x15de77)['end']();};}function respondWithResult(_0x2745bd,_0x3474df){_0x3474df=_0x3474df||0xc8;return function(_0x302756){if(_0x302756){return _0x2745bd[_0x13c9('0x14')](_0x3474df)[_0x13c9('0x15')](_0x302756);}};}function respondWithFilteredResult(_0x3535fd,_0x5a6c22){return function(_0xcae763){if(_0xcae763){var _0x401485=typeof _0x5a6c22[_0x13c9('0x16')]===_0x13c9('0x17')&&typeof _0x5a6c22['limit']==='undefined';var _0xe17f4f=_0xcae763[_0x13c9('0x18')];var _0x148e90=_0x401485?0x0:_0x5a6c22['offset'];var _0x18be5c=_0x401485?_0xcae763[_0x13c9('0x18')]:_0x5a6c22['offset']+_0x5a6c22[_0x13c9('0x19')];var _0x536409;if(_0x18be5c>=_0xe17f4f){_0x18be5c=_0xe17f4f;_0x536409=0xc8;}else{_0x536409=0xce;}_0x3535fd['status'](_0x536409);return _0x3535fd[_0x13c9('0x1a')](_0x13c9('0x1b'),_0x148e90+'-'+_0x18be5c+'/'+_0xe17f4f)['json'](_0xcae763);}return null;};}function patchUpdates(_0x46598f){return function(_0xa638c3){try{jsonpatch[_0x13c9('0x1c')](_0xa638c3,_0x46598f,!![]);}catch(_0x14a59d){return BPromise['reject'](_0x14a59d);}return _0xa638c3[_0x13c9('0x1d')]();};}function saveUpdates(_0x5106fb,_0x199295){return function(_0x2db63d){if(_0x2db63d){return _0x2db63d[_0x13c9('0x1e')](_0x5106fb)[_0x13c9('0x1f')](function(_0x56fa8){return _0x56fa8;});}return null;};}function removeEntity(_0x2479c4,_0x58860d){return function(_0x25df0c){if(_0x25df0c){return _0x25df0c[_0x13c9('0x20')]()['then'](function(){_0x2479c4[_0x13c9('0x14')](0xcc)[_0x13c9('0x21')]();});}};}function handleEntityNotFound(_0x4cb2fb,_0x2442cf){return function(_0x181c8b){if(!_0x181c8b){_0x4cb2fb['sendStatus'](0x194);}return _0x181c8b;};}function handleError(_0x66f4ec,_0x926ccf){_0x926ccf=_0x926ccf||0x1f4;return function(_0x40e959){logger[_0x13c9('0x22')](_0x40e959[_0x13c9('0x23')]);if(_0x40e959[_0x13c9('0x24')]){delete _0x40e959[_0x13c9('0x24')];}_0x66f4ec[_0x13c9('0x14')](_0x926ccf)['send'](_0x40e959);};}exports['index']=function(_0x364914,_0x4875aa){var _0x4e376d={},_0x2cffa0={},_0x543321={'count':0x0,'rows':[]};var _0x2c4b24=_[_0x13c9('0x25')](db[_0x13c9('0x26')]['rawAttributes'],function(_0xbfc160){return{'name':_0xbfc160[_0x13c9('0x27')],'type':_0xbfc160[_0x13c9('0x28')][_0x13c9('0x29')]};});_0x2cffa0['model']=_[_0x13c9('0x25')](_0x2c4b24,_0x13c9('0x24'));_0x2cffa0[_0x13c9('0x2a')]=_[_0x13c9('0x2b')](_0x364914['query']);_0x2cffa0[_0x13c9('0x2c')]=_[_0x13c9('0x2d')](_0x2cffa0[_0x13c9('0x2e')],_0x2cffa0[_0x13c9('0x2a')]);_0x4e376d['attributes']=_['intersection'](_0x2cffa0['model'],qs['fields'](_0x364914['query']['fields']));_0x4e376d['attributes']=_0x4e376d[_0x13c9('0x2f')][_0x13c9('0x30')]?_0x4e376d[_0x13c9('0x2f')]:_0x2cffa0[_0x13c9('0x2e')];if(!_0x364914[_0x13c9('0x2a')][_0x13c9('0x31')](_0x13c9('0x32'))){_0x4e376d[_0x13c9('0x19')]=qs[_0x13c9('0x19')](_0x364914[_0x13c9('0x2a')]['limit']);_0x4e376d[_0x13c9('0x16')]=qs[_0x13c9('0x16')](_0x364914[_0x13c9('0x2a')]['offset']);}_0x4e376d['order']=qs[_0x13c9('0x33')](_0x364914[_0x13c9('0x2a')][_0x13c9('0x33')]);_0x4e376d[_0x13c9('0x34')]=qs[_0x13c9('0x2c')](_[_0x13c9('0x35')](_0x364914[_0x13c9('0x2a')],_0x2cffa0[_0x13c9('0x2c')]),_0x2c4b24);if(_0x364914[_0x13c9('0x2a')][_0x13c9('0x36')]){_0x4e376d[_0x13c9('0x34')]=_['merge'](_0x4e376d[_0x13c9('0x34')],{'$or':_[_0x13c9('0x25')](_0x2c4b24,function(_0x94d593){if(_0x94d593[_0x13c9('0x28')]!==_0x13c9('0x37')){var _0x472443={};_0x472443[_0x94d593[_0x13c9('0x24')]]={'$like':'%'+_0x364914[_0x13c9('0x2a')][_0x13c9('0x36')]+'%'};return _0x472443;}})});}_0x4e376d=_['merge']({},_0x4e376d,_0x364914[_0x13c9('0x38')]);var _0x46c1f0={'where':_0x4e376d[_0x13c9('0x34')]};return db[_0x13c9('0x26')][_0x13c9('0x18')](_0x46c1f0)[_0x13c9('0x1f')](function(_0x20e29d){_0x543321[_0x13c9('0x18')]=_0x20e29d;if(_0x364914[_0x13c9('0x2a')][_0x13c9('0x39')]){_0x4e376d[_0x13c9('0x3a')]=[{'all':!![]}];}return db[_0x13c9('0x26')][_0x13c9('0x3b')](_0x4e376d);})[_0x13c9('0x1f')](function(_0x3aee3b){_0x543321['rows']=_0x3aee3b;return _0x543321;})[_0x13c9('0x1f')](respondWithFilteredResult(_0x4875aa,_0x4e376d))[_0x13c9('0x3c')](handleError(_0x4875aa,null));};exports['show']=function(_0x182363,_0x3b9ba7){var _0x24db83={'raw':![],'where':{'id':_0x182363['params']['id']}},_0x118883={};_0x118883[_0x13c9('0x2e')]=_['keys'](db[_0x13c9('0x26')][_0x13c9('0x3d')]);_0x118883[_0x13c9('0x2a')]=_[_0x13c9('0x2b')](_0x182363[_0x13c9('0x2a')]);_0x118883['filters']=_['intersection'](_0x118883[_0x13c9('0x2e')],_0x118883[_0x13c9('0x2a')]);_0x24db83[_0x13c9('0x2f')]=_[_0x13c9('0x2d')](_0x118883[_0x13c9('0x2e')],qs['fields'](_0x182363[_0x13c9('0x2a')][_0x13c9('0x3e')]));_0x24db83['attributes']=_0x24db83[_0x13c9('0x2f')][_0x13c9('0x30')]?_0x24db83[_0x13c9('0x2f')]:_0x118883[_0x13c9('0x2e')];if(_0x182363['query'][_0x13c9('0x39')]){_0x24db83['include']=[{'all':!![]}];}_0x24db83=_['merge']({},_0x24db83,_0x182363[_0x13c9('0x38')]);return db[_0x13c9('0x26')][_0x13c9('0x3f')](_0x24db83)[_0x13c9('0x1f')](handleEntityNotFound(_0x3b9ba7,null))[_0x13c9('0x1f')](respondWithResult(_0x3b9ba7,null))[_0x13c9('0x3c')](handleError(_0x3b9ba7,null));};exports['create']=function(_0x4dbdb8,_0x90da1){return db[_0x13c9('0x26')][_0x13c9('0x40')](_0x4dbdb8['body'],{})[_0x13c9('0x1f')](respondWithResult(_0x90da1,0xc9))[_0x13c9('0x3c')](handleError(_0x90da1,null));};exports[_0x13c9('0x1e')]=function(_0x3b7e74,_0x10e500){if(_0x3b7e74[_0x13c9('0x41')]['id']){delete _0x3b7e74[_0x13c9('0x41')]['id'];}return db['DeskAccount'][_0x13c9('0x3f')]({'where':{'id':_0x3b7e74[_0x13c9('0x42')]['id']}})[_0x13c9('0x1f')](handleEntityNotFound(_0x10e500,null))[_0x13c9('0x1f')](saveUpdates(_0x3b7e74[_0x13c9('0x41')],null))['then'](respondWithResult(_0x10e500,null))[_0x13c9('0x3c')](handleError(_0x10e500,null));};exports['destroy']=function(_0x37e7b3,_0x4257f8){return db[_0x13c9('0x26')][_0x13c9('0x3f')]({'where':{'id':_0x37e7b3[_0x13c9('0x42')]['id']}})[_0x13c9('0x1f')](handleEntityNotFound(_0x4257f8,null))[_0x13c9('0x1f')](removeEntity(_0x4257f8,null))['catch'](handleError(_0x4257f8,null));};exports['getConfigurations']=function(_0xa8252f,_0x1f2a7e,_0x241e71){var _0x2fb2fa={};var _0xecf451={};var _0x325b8f;var _0x424daa;return db[_0x13c9('0x26')][_0x13c9('0x43')]({'where':{'id':_0xa8252f[_0x13c9('0x42')]['id']}})['then'](handleEntityNotFound(_0x1f2a7e,null))[_0x13c9('0x1f')](function(_0x4b73ec){if(_0x4b73ec){_0x325b8f=_0x4b73ec;_0xecf451[_0x13c9('0x2e')]=_[_0x13c9('0x2b')](db[_0x13c9('0x44')][_0x13c9('0x3d')]);_0xecf451[_0x13c9('0x2a')]=_[_0x13c9('0x2b')](_0xa8252f[_0x13c9('0x2a')]);_0xecf451[_0x13c9('0x2c')]=_[_0x13c9('0x2d')](_0xecf451[_0x13c9('0x2e')],_0xecf451[_0x13c9('0x2a')]);_0x2fb2fa[_0x13c9('0x2f')]=_[_0x13c9('0x2d')](_0xecf451[_0x13c9('0x2e')],qs[_0x13c9('0x3e')](_0xa8252f['query'][_0x13c9('0x3e')]));_0x2fb2fa[_0x13c9('0x2f')]=_0x2fb2fa[_0x13c9('0x2f')][_0x13c9('0x30')]?_0x2fb2fa[_0x13c9('0x2f')]:_0xecf451[_0x13c9('0x2e')];_0x2fb2fa[_0x13c9('0x45')]=qs[_0x13c9('0x33')](_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x33')]);_0x2fb2fa[_0x13c9('0x34')]=qs[_0x13c9('0x2c')](_[_0x13c9('0x35')](_0xa8252f[_0x13c9('0x2a')],_0xecf451['filters']));if(_0xa8252f['query'][_0x13c9('0x36')]){_0x2fb2fa['where']=_[_0x13c9('0x46')](_0x2fb2fa[_0x13c9('0x34')],{'$or':_[_0x13c9('0x25')](_0x2fb2fa[_0x13c9('0x2f')],function(_0x495ef2){var _0x4f1958={};_0x4f1958[_0x495ef2]={'$like':'%'+_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x36')]+'%'};return _0x4f1958;})});}_0x2fb2fa=_['merge']({},_0x2fb2fa,_0xa8252f[_0x13c9('0x38')]);return _0x325b8f[_0x13c9('0x47')](_0x2fb2fa);}})['then'](function(_0x252ec5){if(_0x252ec5){_0x424daa=_0x252ec5[_0x13c9('0x30')];if(!_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x31')](_0x13c9('0x32'))){_0x2fb2fa['limit']=qs[_0x13c9('0x19')](_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x19')]);_0x2fb2fa[_0x13c9('0x16')]=qs[_0x13c9('0x16')](_0xa8252f['query'][_0x13c9('0x16')]);}return _0x325b8f[_0x13c9('0x47')](_0x2fb2fa);}})[_0x13c9('0x1f')](function(_0x3b7b46){if(_0x3b7b46){return _0x3b7b46?{'count':_0x424daa,'rows':_0x3b7b46}:null;}})[_0x13c9('0x1f')](respondWithResult(_0x1f2a7e,null))[_0x13c9('0x3c')](handleError(_0x1f2a7e,null));};exports[_0x13c9('0x48')]=function(_0x24f12e,_0x2502f5,_0x3f9847){if(_0x24f12e['body']['id']){delete _0x24f12e['body']['id'];}return db[_0x13c9('0x26')]['findOne']({'where':{'id':_0x24f12e[_0x13c9('0x42')]['id']}})[_0x13c9('0x1f')](handleEntityNotFound(_0x2502f5,null))[_0x13c9('0x1f')](function(_0x2e2685){if(_0x2e2685){_0x24f12e[_0x13c9('0x41')]['AccountId']=_0x2e2685['id'];_0x24f12e['body'][_0x13c9('0x49')]=integrations[_0x13c9('0x4a')](_0x24f12e[_0x13c9('0x41')][_0x13c9('0x4b')],_0x24f12e['body']['type']);_0x24f12e[_0x13c9('0x41')][_0x13c9('0x4c')]=integrations[_0x13c9('0x4d')](_0x24f12e['body']['channel'],_0x24f12e[_0x13c9('0x41')][_0x13c9('0x28')]);return db['DeskConfiguration']['create'](_0x24f12e[_0x13c9('0x41')],{'include':[{'model':db[_0x13c9('0x4e')],'as':_0x13c9('0x49')},{'model':db[_0x13c9('0x4e')],'as':_0x13c9('0x4c')}]});}return null;})[_0x13c9('0x1f')](respondWithResult(_0x2502f5,null))[_0x13c9('0x3c')](handleError(_0x2502f5,null));};exports[_0x13c9('0x4f')]=function(_0x400b62,_0x2331bf,_0xb7f8e5){var _0x11cc66=[{'name':_0x13c9('0x50'),'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 _0x331dbd='';return db[_0x13c9('0x26')][_0x13c9('0x43')]({'where':{'id':_0x400b62[_0x13c9('0x42')]['id']},'attributes':['id',_0x13c9('0x51'),_0x13c9('0x52'),_0x13c9('0x53'),'password','consumerKey','consumerSecret','token',_0x13c9('0x54')]})[_0x13c9('0x1f')](handleEntityNotFound(_0x2331bf,null))[_0x13c9('0x1f')](function(_0x2431f7){if(_0x2431f7){_0x331dbd=_0x2431f7[_0x13c9('0x51')];var _0x243db1=_0x331dbd[_0x13c9('0x55')](-0x1);if(_0x243db1==='/'){_0x331dbd=_0x331dbd[_0x13c9('0x56')](0x0,_0x331dbd[_0x13c9('0x57')](_0x243db1));}var _0x495922={'method':_0x13c9('0x58'),'uri':util[_0x13c9('0x59')](_0x13c9('0x5a'),_0x331dbd),'headers':{'Content-Type':_0x13c9('0x5b'),'Accept':'application/json'},'json':!![]};if(_0x2431f7['authType']==='basic'){_0x495922[_0x13c9('0x5c')][_0x13c9('0x5d')]=util[_0x13c9('0x59')](_0x13c9('0x5e'),new Buffer(util[_0x13c9('0x59')](_0x13c9('0x5f'),_0x2431f7[_0x13c9('0x53')],_0x2431f7[_0x13c9('0x60')]))[_0x13c9('0x61')](_0x13c9('0x62')));}return rp(_0x495922)[_0x13c9('0x1f')](function(_0x147444){return _0x11cc66[_0x13c9('0x63')](_[_0x13c9('0x25')](_0x147444[_0x13c9('0x64')][_0x13c9('0x65')],function(_0x20c423){return{'id':_0x20c423[_0x13c9('0x24')],'name':_0x20c423['name'],'type':_0x20c423[_0x13c9('0x28')],'active':_0x20c423[_0x13c9('0x66')],'label':_0x20c423[_0x13c9('0x67')],'custom':!![]};}));});}})[_0x13c9('0x1f')](function(_0x29d5dd){return{'count':_0x29d5dd[_0x13c9('0x30')],'rows':_0x29d5dd};})[_0x13c9('0x1f')](respondWithResult(_0x2331bf,null))['catch'](function(_0x1774b1){var _0x3e5d4c=_0x400b62[_0x13c9('0x2a')][_0x13c9('0x68')]?0x1f4:_0x1774b1[_0x13c9('0x69')]||0x1f4;logger[_0x13c9('0x22')](_0x13c9('0x6a'),_0x13c9('0x4f'),_0x3e5d4c,JSON['stringify'](_0x1774b1));delete _0x1774b1[_0x13c9('0x24')];if(_0x3e5d4c===0x191){_0x3e5d4c=0x190;}_0x2331bf[_0x13c9('0x14')](_0x3e5d4c)['send'](_0x400b62[_0x13c9('0x2a')][_0x13c9('0x68')]?{'message':_0x13c9('0x6b'),'statusCode':_0x1774b1['statusCode']}:_0x1774b1);});};
\ No newline at end of file
+var _0x0382=['json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','DeskConfiguration','length','filter','options','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','remoteUri','username','password','consumerKey','consumerSecret','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','Basic\x20%s','%s:%s','toString','concat','_embedded','entries','label','test','statusCode','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x0382,0xcf));var _0x2038=function(_0x498334,_0x27b6fe){_0x498334=_0x498334-0x0;var _0x13bb70=_0x0382[_0x498334];return _0x13bb70;};'use strict';var emlformat=require(_0x2038('0x0'));var rimraf=require(_0x2038('0x1'));var zipdir=require(_0x2038('0x2'));var jsonpatch=require(_0x2038('0x3'));var rp=require(_0x2038('0x4'));var moment=require('moment');var BPromise=require(_0x2038('0x5'));var Mustache=require(_0x2038('0x6'));var util=require(_0x2038('0x7'));var path=require(_0x2038('0x8'));var sox=require('sox');var csv=require(_0x2038('0x9'));var ejs=require(_0x2038('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2038('0xb'));var squel=require(_0x2038('0xc'));var crypto=require(_0x2038('0xd'));var jsforce=require(_0x2038('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2038('0x9'));var querystring=require(_0x2038('0xf'));var Papa=require('papaparse');var Redis=require(_0x2038('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2038('0x11'));var as=require(_0x2038('0x12'));var hardwareService=require(_0x2038('0x13'));var logger=require(_0x2038('0x14'))(_0x2038('0x15'));var utils=require(_0x2038('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2038('0x17'));var db=require(_0x2038('0x18'))['db'];var integrations=require(_0x2038('0x19'));function respondWithStatusCode(_0x5b9457,_0x5ea453){_0x5ea453=_0x5ea453||0xcc;return function(_0x460d07){if(_0x460d07){return _0x5b9457[_0x2038('0x1a')](_0x5ea453);}return _0x5b9457[_0x2038('0x1b')](_0x5ea453)[_0x2038('0x1c')]();};}function respondWithResult(_0x47f982,_0x17ee84){_0x17ee84=_0x17ee84||0xc8;return function(_0x1f934f){if(_0x1f934f){return _0x47f982[_0x2038('0x1b')](_0x17ee84)[_0x2038('0x1d')](_0x1f934f);}};}function respondWithFilteredResult(_0x2302a2,_0x13f59b){return function(_0x57b3c0){if(_0x57b3c0){var _0xbac8d1=typeof _0x13f59b['offset']===_0x2038('0x1e')&&typeof _0x13f59b['limit']==='undefined';var _0x539b92=_0x57b3c0[_0x2038('0x1f')];var _0x9eb9b0=_0xbac8d1?0x0:_0x13f59b['offset'];var _0x4fb3a3=_0xbac8d1?_0x57b3c0[_0x2038('0x1f')]:_0x13f59b[_0x2038('0x20')]+_0x13f59b[_0x2038('0x21')];var _0x4eacf8;if(_0x4fb3a3>=_0x539b92){_0x4fb3a3=_0x539b92;_0x4eacf8=0xc8;}else{_0x4eacf8=0xce;}_0x2302a2[_0x2038('0x1b')](_0x4eacf8);return _0x2302a2[_0x2038('0x22')]('Content-Range',_0x9eb9b0+'-'+_0x4fb3a3+'/'+_0x539b92)[_0x2038('0x1d')](_0x57b3c0);}return null;};}function patchUpdates(_0x222085){return function(_0x27e6a7){try{jsonpatch[_0x2038('0x23')](_0x27e6a7,_0x222085,!![]);}catch(_0x59f231){return BPromise[_0x2038('0x24')](_0x59f231);}return _0x27e6a7[_0x2038('0x25')]();};}function saveUpdates(_0x1f3cfa,_0x5d6d0d){return function(_0x87638){if(_0x87638){return _0x87638[_0x2038('0x26')](_0x1f3cfa)[_0x2038('0x27')](function(_0x1388af){return _0x1388af;});}return null;};}function removeEntity(_0x2a36bd,_0xa6d36){return function(_0x2bca45){if(_0x2bca45){return _0x2bca45[_0x2038('0x28')]()['then'](function(){_0x2a36bd[_0x2038('0x1b')](0xcc)[_0x2038('0x1c')]();});}};}function handleEntityNotFound(_0x3d7e99,_0x367d8f){return function(_0x58b52e){if(!_0x58b52e){_0x3d7e99['sendStatus'](0x194);}return _0x58b52e;};}function handleError(_0x49e6f7,_0x2d7ce0){_0x2d7ce0=_0x2d7ce0||0x1f4;return function(_0x6e6d46){logger[_0x2038('0x29')](_0x6e6d46[_0x2038('0x2a')]);if(_0x6e6d46['name']){delete _0x6e6d46[_0x2038('0x2b')];}_0x49e6f7[_0x2038('0x1b')](_0x2d7ce0)[_0x2038('0x2c')](_0x6e6d46);};}exports[_0x2038('0x2d')]=function(_0x33645d,_0x26c051){var _0xa28024={},_0x54ad16={},_0x2f9202={'count':0x0,'rows':[]};var _0x5937dd=_[_0x2038('0x2e')](db[_0x2038('0x2f')][_0x2038('0x30')],function(_0x45fdff){return{'name':_0x45fdff[_0x2038('0x31')],'type':_0x45fdff[_0x2038('0x32')][_0x2038('0x33')]};});_0x54ad16['model']=_[_0x2038('0x2e')](_0x5937dd,_0x2038('0x2b'));_0x54ad16[_0x2038('0x34')]=_[_0x2038('0x35')](_0x33645d[_0x2038('0x34')]);_0x54ad16[_0x2038('0x36')]=_[_0x2038('0x37')](_0x54ad16[_0x2038('0x38')],_0x54ad16[_0x2038('0x34')]);_0xa28024[_0x2038('0x39')]=_['intersection'](_0x54ad16[_0x2038('0x38')],qs[_0x2038('0x3a')](_0x33645d[_0x2038('0x34')][_0x2038('0x3a')]));_0xa28024['attributes']=_0xa28024[_0x2038('0x39')]['length']?_0xa28024[_0x2038('0x39')]:_0x54ad16[_0x2038('0x38')];if(!_0x33645d['query']['hasOwnProperty'](_0x2038('0x3b'))){_0xa28024[_0x2038('0x21')]=qs[_0x2038('0x21')](_0x33645d[_0x2038('0x34')][_0x2038('0x21')]);_0xa28024[_0x2038('0x20')]=qs['offset'](_0x33645d[_0x2038('0x34')][_0x2038('0x20')]);}_0xa28024[_0x2038('0x3c')]=qs[_0x2038('0x3d')](_0x33645d[_0x2038('0x34')]['sort']);_0xa28024[_0x2038('0x3e')]=qs[_0x2038('0x36')](_[_0x2038('0x3f')](_0x33645d[_0x2038('0x34')],_0x54ad16['filters']),_0x5937dd);if(_0x33645d[_0x2038('0x34')]['filter']){_0xa28024[_0x2038('0x3e')]=_[_0x2038('0x40')](_0xa28024[_0x2038('0x3e')],{'$or':_['map'](_0x5937dd,function(_0x264657){if(_0x264657[_0x2038('0x32')]!==_0x2038('0x41')){var _0x171398={};_0x171398[_0x264657[_0x2038('0x2b')]]={'$like':'%'+_0x33645d['query']['filter']+'%'};return _0x171398;}})});}_0xa28024=_['merge']({},_0xa28024,_0x33645d['options']);var _0x18ecca={'where':_0xa28024[_0x2038('0x3e')]};return db[_0x2038('0x2f')][_0x2038('0x1f')](_0x18ecca)[_0x2038('0x27')](function(_0x273384){_0x2f9202[_0x2038('0x1f')]=_0x273384;if(_0x33645d[_0x2038('0x34')][_0x2038('0x42')]){_0xa28024[_0x2038('0x43')]=[{'all':!![]}];}return db[_0x2038('0x2f')][_0x2038('0x44')](_0xa28024);})[_0x2038('0x27')](function(_0x234ed3){_0x2f9202[_0x2038('0x45')]=_0x234ed3;return _0x2f9202;})['then'](respondWithFilteredResult(_0x26c051,_0xa28024))[_0x2038('0x46')](handleError(_0x26c051,null));};exports[_0x2038('0x47')]=function(_0x3f3ed9,_0x26860c){var _0x4c23c4={'raw':![],'where':{'id':_0x3f3ed9[_0x2038('0x48')]['id']}},_0x3d79f6={};_0x3d79f6[_0x2038('0x38')]=_[_0x2038('0x35')](db['DeskAccount'][_0x2038('0x30')]);_0x3d79f6[_0x2038('0x34')]=_[_0x2038('0x35')](_0x3f3ed9['query']);_0x3d79f6[_0x2038('0x36')]=_[_0x2038('0x37')](_0x3d79f6[_0x2038('0x38')],_0x3d79f6[_0x2038('0x34')]);_0x4c23c4[_0x2038('0x39')]=_[_0x2038('0x37')](_0x3d79f6[_0x2038('0x38')],qs[_0x2038('0x3a')](_0x3f3ed9[_0x2038('0x34')]['fields']));_0x4c23c4[_0x2038('0x39')]=_0x4c23c4[_0x2038('0x39')]['length']?_0x4c23c4[_0x2038('0x39')]:_0x3d79f6[_0x2038('0x38')];if(_0x3f3ed9[_0x2038('0x34')][_0x2038('0x42')]){_0x4c23c4['include']=[{'all':!![]}];}_0x4c23c4=_[_0x2038('0x40')]({},_0x4c23c4,_0x3f3ed9['options']);return db[_0x2038('0x2f')][_0x2038('0x49')](_0x4c23c4)[_0x2038('0x27')](handleEntityNotFound(_0x26860c,null))[_0x2038('0x27')](respondWithResult(_0x26860c,null))['catch'](handleError(_0x26860c,null));};exports[_0x2038('0x4a')]=function(_0x5bd205,_0x4e0446){return db[_0x2038('0x2f')][_0x2038('0x4a')](_0x5bd205[_0x2038('0x4b')],{})['then'](respondWithResult(_0x4e0446,0xc9))['catch'](handleError(_0x4e0446,null));};exports[_0x2038('0x26')]=function(_0x1276cd,_0x25aefe){if(_0x1276cd[_0x2038('0x4b')]['id']){delete _0x1276cd[_0x2038('0x4b')]['id'];}return db[_0x2038('0x2f')][_0x2038('0x49')]({'where':{'id':_0x1276cd[_0x2038('0x48')]['id']}})[_0x2038('0x27')](handleEntityNotFound(_0x25aefe,null))[_0x2038('0x27')](saveUpdates(_0x1276cd[_0x2038('0x4b')],null))[_0x2038('0x27')](respondWithResult(_0x25aefe,null))['catch'](handleError(_0x25aefe,null));};exports[_0x2038('0x28')]=function(_0x47809c,_0x42818e){return db['DeskAccount'][_0x2038('0x49')]({'where':{'id':_0x47809c[_0x2038('0x48')]['id']}})[_0x2038('0x27')](handleEntityNotFound(_0x42818e,null))[_0x2038('0x27')](removeEntity(_0x42818e,null))['catch'](handleError(_0x42818e,null));};exports[_0x2038('0x4c')]=function(_0x228c4d,_0x568a2c,_0x2803ed){var _0x3cf7c9={};var _0x15f6a1={};var _0x1b4709;var _0x4c58b0;return db[_0x2038('0x2f')][_0x2038('0x4d')]({'where':{'id':_0x228c4d[_0x2038('0x48')]['id']}})[_0x2038('0x27')](handleEntityNotFound(_0x568a2c,null))['then'](function(_0x55ac8c){if(_0x55ac8c){_0x1b4709=_0x55ac8c;_0x15f6a1[_0x2038('0x38')]=_['keys'](db[_0x2038('0x4e')][_0x2038('0x30')]);_0x15f6a1[_0x2038('0x34')]=_[_0x2038('0x35')](_0x228c4d[_0x2038('0x34')]);_0x15f6a1[_0x2038('0x36')]=_[_0x2038('0x37')](_0x15f6a1[_0x2038('0x38')],_0x15f6a1[_0x2038('0x34')]);_0x3cf7c9[_0x2038('0x39')]=_[_0x2038('0x37')](_0x15f6a1[_0x2038('0x38')],qs[_0x2038('0x3a')](_0x228c4d[_0x2038('0x34')][_0x2038('0x3a')]));_0x3cf7c9[_0x2038('0x39')]=_0x3cf7c9[_0x2038('0x39')][_0x2038('0x4f')]?_0x3cf7c9[_0x2038('0x39')]:_0x15f6a1[_0x2038('0x38')];_0x3cf7c9[_0x2038('0x3c')]=qs[_0x2038('0x3d')](_0x228c4d['query'][_0x2038('0x3d')]);_0x3cf7c9[_0x2038('0x3e')]=qs[_0x2038('0x36')](_['pick'](_0x228c4d['query'],_0x15f6a1['filters']));if(_0x228c4d[_0x2038('0x34')][_0x2038('0x50')]){_0x3cf7c9[_0x2038('0x3e')]=_[_0x2038('0x40')](_0x3cf7c9[_0x2038('0x3e')],{'$or':_[_0x2038('0x2e')](_0x3cf7c9[_0x2038('0x39')],function(_0x521868){var _0x4ebb6e={};_0x4ebb6e[_0x521868]={'$like':'%'+_0x228c4d[_0x2038('0x34')][_0x2038('0x50')]+'%'};return _0x4ebb6e;})});}_0x3cf7c9=_['merge']({},_0x3cf7c9,_0x228c4d[_0x2038('0x51')]);return _0x1b4709['getConfigurations'](_0x3cf7c9);}})['then'](function(_0x5b66df){if(_0x5b66df){_0x4c58b0=_0x5b66df[_0x2038('0x4f')];if(!_0x228c4d[_0x2038('0x34')][_0x2038('0x52')](_0x2038('0x3b'))){_0x3cf7c9[_0x2038('0x21')]=qs['limit'](_0x228c4d[_0x2038('0x34')][_0x2038('0x21')]);_0x3cf7c9[_0x2038('0x20')]=qs[_0x2038('0x20')](_0x228c4d['query'][_0x2038('0x20')]);}return _0x1b4709[_0x2038('0x4c')](_0x3cf7c9);}})[_0x2038('0x27')](function(_0x207ac0){if(_0x207ac0){return _0x207ac0?{'count':_0x4c58b0,'rows':_0x207ac0}:null;}})[_0x2038('0x27')](respondWithResult(_0x568a2c,null))[_0x2038('0x46')](handleError(_0x568a2c,null));};exports[_0x2038('0x53')]=function(_0x3a1c45,_0x489ea0,_0x2e5a66){if(_0x3a1c45[_0x2038('0x4b')]['id']){delete _0x3a1c45[_0x2038('0x4b')]['id'];}return db[_0x2038('0x2f')][_0x2038('0x4d')]({'where':{'id':_0x3a1c45[_0x2038('0x48')]['id']}})[_0x2038('0x27')](handleEntityNotFound(_0x489ea0,null))['then'](function(_0x2c0392){if(_0x2c0392){_0x3a1c45[_0x2038('0x4b')][_0x2038('0x54')]=_0x2c0392['id'];_0x3a1c45[_0x2038('0x4b')][_0x2038('0x55')]=integrations[_0x2038('0x56')](_0x3a1c45[_0x2038('0x4b')][_0x2038('0x57')],_0x3a1c45[_0x2038('0x4b')]['type']);_0x3a1c45[_0x2038('0x4b')][_0x2038('0x58')]=integrations[_0x2038('0x59')](_0x3a1c45['body'][_0x2038('0x57')],_0x3a1c45[_0x2038('0x4b')][_0x2038('0x32')]);return db['DeskConfiguration'][_0x2038('0x4a')](_0x3a1c45[_0x2038('0x4b')],{'include':[{'model':db[_0x2038('0x5a')],'as':_0x2038('0x55')},{'model':db[_0x2038('0x5a')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x489ea0,null))[_0x2038('0x46')](handleError(_0x489ea0,null));};exports[_0x2038('0x5b')]=function(_0x5a0238,_0x4face4,_0x4df59d){var _0x17cc17=[{'name':_0x2038('0x5c'),'label':_0x2038('0x5c'),'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 _0x63331='';return db['DeskAccount'][_0x2038('0x4d')]({'where':{'id':_0x5a0238[_0x2038('0x48')]['id']},'attributes':['id',_0x2038('0x5d'),'authType',_0x2038('0x5e'),_0x2038('0x5f'),_0x2038('0x60'),_0x2038('0x61'),'token',_0x2038('0x62')]})['then'](handleEntityNotFound(_0x4face4,null))[_0x2038('0x27')](function(_0x282a32){if(_0x282a32){_0x63331=_0x282a32['remoteUri'];var _0x544912=_0x63331[_0x2038('0x63')](-0x1);if(_0x544912==='/'){_0x63331=_0x63331[_0x2038('0x64')](0x0,_0x63331[_0x2038('0x65')](_0x544912));}var _0x272b60={'method':_0x2038('0x66'),'uri':util[_0x2038('0x67')](_0x2038('0x68'),_0x63331),'headers':{'Content-Type':_0x2038('0x69'),'Accept':'application/json'},'json':!![]};if(_0x282a32[_0x2038('0x6a')]===_0x2038('0x6b')){_0x272b60['headers']['Authorization']=util['format'](_0x2038('0x6c'),new Buffer(util[_0x2038('0x67')](_0x2038('0x6d'),_0x282a32[_0x2038('0x5e')],_0x282a32[_0x2038('0x5f')]))[_0x2038('0x6e')]('base64'));}return rp(_0x272b60)[_0x2038('0x27')](function(_0x1f13ac){return _0x17cc17[_0x2038('0x6f')](_[_0x2038('0x2e')](_0x1f13ac[_0x2038('0x70')][_0x2038('0x71')],function(_0x23b0b6){return{'id':_0x23b0b6[_0x2038('0x2b')],'name':_0x23b0b6[_0x2038('0x2b')],'type':_0x23b0b6['type'],'active':_0x23b0b6['active'],'label':_0x23b0b6[_0x2038('0x72')],'custom':!![]};}));});}})['then'](function(_0x51c848){return{'count':_0x51c848['length'],'rows':_0x51c848};})[_0x2038('0x27')](respondWithResult(_0x4face4,null))[_0x2038('0x46')](function(_0x13d772){var _0x4d5a64=_0x5a0238[_0x2038('0x34')][_0x2038('0x73')]?0x1f4:_0x13d772[_0x2038('0x74')]||0x1f4;logger[_0x2038('0x29')]('getFields,\x20%s,\x20%s,\x20%s',_0x2038('0x5b'),_0x4d5a64,JSON[_0x2038('0x75')](_0x13d772));delete _0x13d772[_0x2038('0x2b')];if(_0x4d5a64===0x191){_0x4d5a64=0x190;}_0x4face4[_0x2038('0x1b')](_0x4d5a64)[_0x2038('0x2c')](_0x5a0238['query'][_0x2038('0x73')]?{'message':'Wrong\x20credentials','statusCode':_0x13d772[_0x2038('0x74')]}:_0x13d772);});};
\ No newline at end of file
index f0ad0f1..eb00cf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe74=['rimraf','../../config/environment','./intDeskAccount.attributes','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','request-promise'];(function(_0x2df724,_0x411382){var _0x1b2504=function(_0x1d3cd1){while(--_0x1d3cd1){_0x2df724['push'](_0x2df724['shift']());}};_0x1b2504(++_0x411382);}(_0xbe74,0x1b7));var _0x4be7=function(_0x31abee,_0x11ff0c){_0x31abee=_0x31abee-0x0;var _0x3c1761=_0xbe74[_0x31abee];return _0x3c1761;};'use strict';var _=require(_0x4be7('0x0'));var util=require(_0x4be7('0x1'));var logger=require(_0x4be7('0x2'))(_0x4be7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4be7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4be7('0x5'));var config=require(_0x4be7('0x6'));var attributes=require(_0x4be7('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x4be7('0x8')]=function(_0x32e23e,_0x275c89){return _0x32e23e[_0x4be7('0x9')](_0x4be7('0xa'),attributes,{'tableName':_0x4be7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd21a=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xd21a,0x16a));var _0xad21=function(_0x576bc0,_0x13ff3c){_0x576bc0=_0x576bc0-0x0;var _0x10b947=_0xd21a[_0x576bc0];return _0x10b947;};'use strict';var _=require(_0xad21('0x0'));var util=require(_0xad21('0x1'));var logger=require(_0xad21('0x2'))('api');var moment=require(_0xad21('0x3'));var BPromise=require(_0xad21('0x4'));var rp=require(_0xad21('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xad21('0x6'));var config=require(_0xad21('0x7'));var attributes=require(_0xad21('0x8'));var integrations=require(_0xad21('0x9'));module[_0xad21('0xa')]=function(_0x292c85,_0x215d5c){return _0x292c85[_0xad21('0xb')](_0xad21('0xc'),attributes,{'tableName':_0xad21('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f516253..f08d5f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec09=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetDeskAccount','findAll','options','where','attributes','limit','include','model','map','then','debug','ShowDeskAccount','find','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xec09,0x7b));var _0x9ec0=function(_0x3faf85,_0x272107){_0x3faf85=_0x3faf85-0x0;var _0x496c38=_0xec09[_0x3faf85];return _0x496c38;};'use strict';var _=require(_0x9ec0('0x0'));var util=require('util');var moment=require(_0x9ec0('0x1'));var BPromise=require(_0x9ec0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ec0('0x3'));var db=require(_0x9ec0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9ec0('0x5'))(_0x9ec0('0x6'));var config=require(_0x9ec0('0x7'));var jayson=require(_0x9ec0('0x8'));var client=jayson[_0x9ec0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1214d9,_0x292b44,_0x244dd9){return new BPromise(function(_0xfb0287,_0x3b3641){return client[_0x9ec0('0xa')](_0x1214d9,_0x244dd9)['then'](function(_0x5c4108){logger[_0x9ec0('0xb')](_0x9ec0('0xc'),_0x292b44,'request\x20sent');logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x292b44,_0x9ec0('0xd'),JSON[_0x9ec0('0xe')](_0x5c4108));if(_0x5c4108['error']){if(_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x10')]===0x1f4){logger['error'](_0x9ec0('0xc'),_0x292b44,_0x5c4108['error'][_0x9ec0('0x11')]);return _0x3b3641(_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x11')]);}logger[_0x9ec0('0xf')]('DeskAccount,\x20%s,\x20%s',_0x292b44,_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x11')]);return _0xfb0287(_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x11')]);}else{logger['info'](_0x9ec0('0xc'),_0x292b44,_0x9ec0('0xd'));_0xfb0287(_0x5c4108['result'][_0x9ec0('0x11')]);}})[_0x9ec0('0x12')](function(_0x338b77){logger['error'](_0x9ec0('0xc'),_0x292b44,_0x338b77);_0x3b3641(_0x338b77);});});}exports[_0x9ec0('0x13')]=function(_0x256013){var _0x126fa0=this;return new Promise(function(_0xd4e9b5,_0x4f79f5){return db['DeskAccount'][_0x9ec0('0x14')]({'raw':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x16')]||null:null,'attributes':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x17')]||null:null,'limit':_0x256013['options']?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x18')]||null:null,'include':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x19')]?_['map'](_0x256013[_0x9ec0('0x15')][_0x9ec0('0x19')],function(_0x559804){return{'model':db[_0x559804[_0x9ec0('0x1a')]],'as':_0x559804['as'],'attributes':_0x559804[_0x9ec0('0x17')],'include':_0x559804[_0x9ec0('0x19')]?_[_0x9ec0('0x1b')](_0x559804[_0x9ec0('0x19')],function(_0x17acc4){return{'model':db[_0x17acc4[_0x9ec0('0x1a')]],'as':_0x17acc4['as'],'attributes':_0x17acc4[_0x9ec0('0x17')],'include':_0x17acc4['include']?_['map'](_0x17acc4[_0x9ec0('0x19')],function(_0x399871){return{'model':db[_0x399871[_0x9ec0('0x1a')]],'as':_0x399871['as'],'attributes':_0x399871[_0x9ec0('0x17')]};}):[]};}):[]};}):[]:[]})[_0x9ec0('0x1c')](function(_0x3309b7){logger[_0x9ec0('0xb')]('GetDeskAccount',_0x256013);logger[_0x9ec0('0x1d')]('GetDeskAccount',_0x256013,JSON[_0x9ec0('0xe')](_0x3309b7));_0xd4e9b5(_0x3309b7);})['catch'](function(_0x11edd6){logger[_0x9ec0('0xf')]('GetDeskAccount',_0x11edd6[_0x9ec0('0x11')],_0x256013);_0x4f79f5(_0x126fa0[_0x9ec0('0xf')](0x1f4,_0x11edd6[_0x9ec0('0x11')]));});});};exports[_0x9ec0('0x1e')]=function(_0x389e57){var _0x3fd7d7=this;return new Promise(function(_0x30dd6d,_0x48be98){return db['DeskAccount'][_0x9ec0('0x1f')]({'raw':_0x389e57['options']?_0x389e57[_0x9ec0('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x389e57['options']?_0x389e57[_0x9ec0('0x15')]['where']||null:null,'attributes':_0x389e57[_0x9ec0('0x15')]?_0x389e57[_0x9ec0('0x15')][_0x9ec0('0x17')]||null:null,'include':_0x389e57[_0x9ec0('0x15')]?_0x389e57[_0x9ec0('0x15')]['include']?_['map'](_0x389e57[_0x9ec0('0x15')][_0x9ec0('0x19')],function(_0x433791){return{'model':db[_0x433791[_0x9ec0('0x1a')]],'as':_0x433791['as'],'attributes':_0x433791[_0x9ec0('0x17')],'include':_0x433791['include']?_['map'](_0x433791['include'],function(_0x1dc801){return{'model':db[_0x1dc801[_0x9ec0('0x1a')]],'as':_0x1dc801['as'],'attributes':_0x1dc801[_0x9ec0('0x17')],'include':_0x1dc801[_0x9ec0('0x19')]?_[_0x9ec0('0x1b')](_0x1dc801[_0x9ec0('0x19')],function(_0x5569c7){return{'model':db[_0x5569c7[_0x9ec0('0x1a')]],'as':_0x5569c7['as'],'attributes':_0x5569c7['attributes']};}):[]};}):[]};}):[]:[]})[_0x9ec0('0x1c')](function(_0x79f8bf){logger[_0x9ec0('0xb')](_0x9ec0('0x1e'),_0x389e57);logger[_0x9ec0('0x1d')](_0x9ec0('0x1e'),_0x389e57,JSON[_0x9ec0('0xe')](_0x79f8bf));_0x30dd6d(_0x79f8bf);})[_0x9ec0('0x12')](function(_0x5ace25){logger['error']('ShowDeskAccount',_0x5ace25['message'],_0x389e57);_0x48be98(_0x3fd7d7['error'](0x1f4,_0x5ace25['message']));});});};
\ No newline at end of file
+var _0x23ad=['then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','DeskAccount','findAll','options','where','attributes','limit','include','model','map','GetDeskAccount','debug','catch','find','raw','ShowDeskAccount','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request'];(function(_0x350b82,_0x3cd7e0){var _0x33c86d=function(_0x5d17e5){while(--_0x5d17e5){_0x350b82['push'](_0x350b82['shift']());}};_0x33c86d(++_0x3cd7e0);}(_0x23ad,0x1c8));var _0xd23a=function(_0x2a0e6f,_0x1de709){_0x2a0e6f=_0x2a0e6f-0x0;var _0x16f560=_0x23ad[_0x2a0e6f];return _0x16f560;};'use strict';var _=require(_0xd23a('0x0'));var util=require(_0xd23a('0x1'));var moment=require(_0xd23a('0x2'));var BPromise=require('bluebird');var rs=require(_0xd23a('0x3'));var fs=require('fs');var Redis=require(_0xd23a('0x4'));var db=require(_0xd23a('0x5'))['db'];var utils=require(_0xd23a('0x6'));var logger=require(_0xd23a('0x7'))(_0xd23a('0x8'));var config=require('../../config/environment');var jayson=require(_0xd23a('0x9'));var client=jayson['client'][_0xd23a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b87cb,_0x3144e6,_0x544352){return new BPromise(function(_0x35f66d,_0xec421f){return client[_0xd23a('0xb')](_0x2b87cb,_0x544352)[_0xd23a('0xc')](function(_0x375873){logger[_0xd23a('0xd')](_0xd23a('0xe'),_0x3144e6,_0xd23a('0xf'));logger['debug'](_0xd23a('0x10'),_0x3144e6,'request\x20sent',JSON[_0xd23a('0x11')](_0x375873));if(_0x375873['error']){if(_0x375873['error'][_0xd23a('0x12')]===0x1f4){logger['error']('DeskAccount,\x20%s,\x20%s',_0x3144e6,_0x375873[_0xd23a('0x13')][_0xd23a('0x14')]);return _0xec421f(_0x375873[_0xd23a('0x13')][_0xd23a('0x14')]);}logger[_0xd23a('0x13')](_0xd23a('0xe'),_0x3144e6,_0x375873[_0xd23a('0x13')][_0xd23a('0x14')]);return _0x35f66d(_0x375873['error']['message']);}else{logger[_0xd23a('0xd')](_0xd23a('0xe'),_0x3144e6,_0xd23a('0xf'));_0x35f66d(_0x375873['result']['message']);}})['catch'](function(_0x2d2166){logger[_0xd23a('0x13')](_0xd23a('0xe'),_0x3144e6,_0x2d2166);_0xec421f(_0x2d2166);});});}exports['GetDeskAccount']=function(_0x587149){var _0x243355=this;return new Promise(function(_0x284a2c,_0x2b3c82){return db[_0xd23a('0x15')][_0xd23a('0x16')]({'raw':_0x587149[_0xd23a('0x17')]?_0x587149['options']['raw']===undefined?!![]:![]:!![],'where':_0x587149[_0xd23a('0x17')]?_0x587149[_0xd23a('0x17')][_0xd23a('0x18')]||null:null,'attributes':_0x587149[_0xd23a('0x17')]?_0x587149[_0xd23a('0x17')][_0xd23a('0x19')]||null:null,'limit':_0x587149[_0xd23a('0x17')]?_0x587149['options'][_0xd23a('0x1a')]||null:null,'include':_0x587149[_0xd23a('0x17')]?_0x587149[_0xd23a('0x17')]['include']?_['map'](_0x587149[_0xd23a('0x17')][_0xd23a('0x1b')],function(_0x2bf6c7){return{'model':db[_0x2bf6c7[_0xd23a('0x1c')]],'as':_0x2bf6c7['as'],'attributes':_0x2bf6c7['attributes'],'include':_0x2bf6c7['include']?_[_0xd23a('0x1d')](_0x2bf6c7[_0xd23a('0x1b')],function(_0x1b4460){return{'model':db[_0x1b4460['model']],'as':_0x1b4460['as'],'attributes':_0x1b4460[_0xd23a('0x19')],'include':_0x1b4460['include']?_[_0xd23a('0x1d')](_0x1b4460['include'],function(_0x1c0131){return{'model':db[_0x1c0131[_0xd23a('0x1c')]],'as':_0x1c0131['as'],'attributes':_0x1c0131[_0xd23a('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x35304e){logger[_0xd23a('0xd')](_0xd23a('0x1e'),_0x587149);logger[_0xd23a('0x1f')](_0xd23a('0x1e'),_0x587149,JSON[_0xd23a('0x11')](_0x35304e));_0x284a2c(_0x35304e);})[_0xd23a('0x20')](function(_0x2ef961){logger[_0xd23a('0x13')](_0xd23a('0x1e'),_0x2ef961['message'],_0x587149);_0x2b3c82(_0x243355[_0xd23a('0x13')](0x1f4,_0x2ef961[_0xd23a('0x14')]));});});};exports['ShowDeskAccount']=function(_0x2b1c53){var _0x1f1b18=this;return new Promise(function(_0xb22a96,_0x24d138){return db[_0xd23a('0x15')][_0xd23a('0x21')]({'raw':_0x2b1c53[_0xd23a('0x17')]?_0x2b1c53[_0xd23a('0x17')][_0xd23a('0x22')]===undefined?!![]:![]:!![],'where':_0x2b1c53[_0xd23a('0x17')]?_0x2b1c53[_0xd23a('0x17')][_0xd23a('0x18')]||null:null,'attributes':_0x2b1c53[_0xd23a('0x17')]?_0x2b1c53[_0xd23a('0x17')][_0xd23a('0x19')]||null:null,'include':_0x2b1c53[_0xd23a('0x17')]?_0x2b1c53[_0xd23a('0x17')][_0xd23a('0x1b')]?_[_0xd23a('0x1d')](_0x2b1c53['options']['include'],function(_0xcbc0ea){return{'model':db[_0xcbc0ea[_0xd23a('0x1c')]],'as':_0xcbc0ea['as'],'attributes':_0xcbc0ea[_0xd23a('0x19')],'include':_0xcbc0ea['include']?_['map'](_0xcbc0ea['include'],function(_0x5a5049){return{'model':db[_0x5a5049[_0xd23a('0x1c')]],'as':_0x5a5049['as'],'attributes':_0x5a5049[_0xd23a('0x19')],'include':_0x5a5049[_0xd23a('0x1b')]?_[_0xd23a('0x1d')](_0x5a5049['include'],function(_0x2c95f8){return{'model':db[_0x2c95f8[_0xd23a('0x1c')]],'as':_0x2c95f8['as'],'attributes':_0x2c95f8[_0xd23a('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58767d){logger[_0xd23a('0xd')](_0xd23a('0x23'),_0x2b1c53);logger[_0xd23a('0x1f')](_0xd23a('0x23'),_0x2b1c53,JSON[_0xd23a('0x11')](_0x58767d));_0xb22a96(_0x58767d);})[_0xd23a('0x20')](function(_0x48f9a6){logger['error'](_0xd23a('0x23'),_0x48f9a6['message'],_0x2b1c53);_0x24d138(_0x1f1b18[_0xd23a('0x13')](0x1f4,_0x48f9a6[_0xd23a('0x14')]));});});};
\ No newline at end of file
index b1745d1..e801fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x42f3a5,_0x3a4470){var _0x1a7d74=function(_0x43cc36){while(--_0x43cc36){_0x42f3a5['push'](_0x42f3a5['shift']());}};_0x1a7d74(++_0x3a4470);}(_0x55ca,0x126));var _0xa55c=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x55ca[_0x47568e];return _0x33815b;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
+var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x4b85ee,_0x1a9354){var _0x1cb607=function(_0x3c2bf7){while(--_0x3c2bf7){_0x4b85ee['push'](_0x4b85ee['shift']());}};_0x1cb607(++_0x1a9354);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
index 67ef1ea..f3b717f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ceb=['sequelize','exports','STRING'];(function(_0x534dc8,_0x17e26c){var _0x17e333=function(_0x37eb96){while(--_0x37eb96){_0x534dc8['push'](_0x534dc8['shift']());}};_0x17e333(++_0x17e26c);}(_0x3ceb,0x1e6));var _0xb3ce=function(_0x5cb135,_0x40c305){_0x5cb135=_0x5cb135-0x0;var _0x440662=_0x3ceb[_0x5cb135];return _0x440662;};'use strict';var Sequelize=require(_0xb3ce('0x0'));module[_0xb3ce('0x1')]={'name':{'type':Sequelize[_0xb3ce('0x2')]},'description':{'type':Sequelize[_0xb3ce('0x2')]}};
\ No newline at end of file
+var _0xb86e=['STRING'];(function(_0xb98d8d,_0x481423){var _0x489b15=function(_0x409a13){while(--_0x409a13){_0xb98d8d['push'](_0xb98d8d['shift']());}};_0x489b15(++_0x481423);}(_0xb86e,0x1ae));var _0xeb86=function(_0x410b26,_0x2d8194){_0x410b26=_0x410b26-0x0;var _0x39d86d=_0xb86e[_0x410b26];return _0x39d86d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xeb86('0x0')]},'description':{'type':Sequelize[_0xeb86('0x0')]}};
\ No newline at end of file
index b8b71f9..1024313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2947=['getDescriptions','getTags','Tag','rimraf','zip-dir','fast-json-patch','moment','bluebird','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','name','send','rawAttributes','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','DeskConfiguration','includeAll','include','findAll','rows','catch','show','keys','length','options','find','create','body','params','getFields','findOne','DeskField','merge','getSubjects'];(function(_0x11f55e,_0x3b8a78){var _0x275227=function(_0x77e8c9){while(--_0x77e8c9){_0x11f55e['push'](_0x11f55e['shift']());}};_0x275227(++_0x3b8a78);}(_0x2947,0xf9));var _0x7294=function(_0x5f4fa2,_0x32156a){_0x5f4fa2=_0x5f4fa2-0x0;var _0x21e1ee=_0x2947[_0x5f4fa2];return _0x21e1ee;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7294('0x0'));var zipdir=require(_0x7294('0x1'));var jsonpatch=require(_0x7294('0x2'));var rp=require('request-promise');var moment=require(_0x7294('0x3'));var BPromise=require(_0x7294('0x4'));var Mustache=require('mustache');var util=require(_0x7294('0x5'));var path=require(_0x7294('0x6'));var sox=require(_0x7294('0x7'));var csv=require('to-csv');var ejs=require(_0x7294('0x8'));var fs=require('fs');var fs_extra=require(_0x7294('0x9'));var _=require(_0x7294('0xa'));var squel=require('squel');var crypto=require(_0x7294('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7294('0xc'));var toCsv=require(_0x7294('0xd'));var querystring=require(_0x7294('0xe'));var Papa=require(_0x7294('0xf'));var Redis=require(_0x7294('0x10'));var authService=require(_0x7294('0x11'));var qs=require(_0x7294('0x12'));var as=require(_0x7294('0x13'));var hardwareService=require(_0x7294('0x14'));var logger=require(_0x7294('0x15'))(_0x7294('0x16'));var utils=require(_0x7294('0x17'));var config=require(_0x7294('0x18'));var licenseUtil=require(_0x7294('0x19'));var db=require(_0x7294('0x1a'))['db'];function respondWithStatusCode(_0x534aa7,_0x49d685){_0x49d685=_0x49d685||0xcc;return function(_0x176fdb){if(_0x176fdb){return _0x534aa7[_0x7294('0x1b')](_0x49d685);}return _0x534aa7['status'](_0x49d685)[_0x7294('0x1c')]();};}function respondWithResult(_0x52f763,_0x508b43){_0x508b43=_0x508b43||0xc8;return function(_0x4459f6){if(_0x4459f6){return _0x52f763[_0x7294('0x1d')](_0x508b43)[_0x7294('0x1e')](_0x4459f6);}};}function respondWithFilteredResult(_0x5a925d,_0x404a2c){return function(_0x57dfc2){if(_0x57dfc2){var _0x3acf44=typeof _0x404a2c[_0x7294('0x1f')]==='undefined'&&typeof _0x404a2c[_0x7294('0x20')]==='undefined';var _0x5106d2=_0x57dfc2[_0x7294('0x21')];var _0x3ab120=_0x3acf44?0x0:_0x404a2c[_0x7294('0x1f')];var _0x2db13f=_0x3acf44?_0x57dfc2['count']:_0x404a2c[_0x7294('0x1f')]+_0x404a2c[_0x7294('0x20')];var _0x4f772f;if(_0x2db13f>=_0x5106d2){_0x2db13f=_0x5106d2;_0x4f772f=0xc8;}else{_0x4f772f=0xce;}_0x5a925d['status'](_0x4f772f);return _0x5a925d[_0x7294('0x22')](_0x7294('0x23'),_0x3ab120+'-'+_0x2db13f+'/'+_0x5106d2)[_0x7294('0x1e')](_0x57dfc2);}return null;};}function patchUpdates(_0x659257){return function(_0x1f3c9c){try{jsonpatch['apply'](_0x1f3c9c,_0x659257,!![]);}catch(_0x59cac1){return BPromise[_0x7294('0x24')](_0x59cac1);}return _0x1f3c9c[_0x7294('0x25')]();};}function saveUpdates(_0x149446,_0x5e74b9){return function(_0x594b77){if(_0x594b77){return _0x594b77[_0x7294('0x26')](_0x149446)[_0x7294('0x27')](function(_0x38ed3b){return _0x38ed3b;});}return null;};}function removeEntity(_0x2b2459,_0x3e85ca){return function(_0x306bb6){if(_0x306bb6){return _0x306bb6[_0x7294('0x28')]()[_0x7294('0x27')](function(){_0x2b2459[_0x7294('0x1d')](0xcc)[_0x7294('0x1c')]();});}};}function handleEntityNotFound(_0x22a59e,_0x31d9c8){return function(_0x117281){if(!_0x117281){_0x22a59e[_0x7294('0x1b')](0x194);}return _0x117281;};}function handleError(_0x3bcc23,_0x51750e){_0x51750e=_0x51750e||0x1f4;return function(_0x343f6a){logger['error'](_0x343f6a['stack']);if(_0x343f6a[_0x7294('0x29')]){delete _0x343f6a[_0x7294('0x29')];}_0x3bcc23['status'](_0x51750e)[_0x7294('0x2a')](_0x343f6a);};}exports['index']=function(_0x4eb546,_0x17e27b){var _0x1c2a8d={},_0x203c41={},_0xb5843b={'count':0x0,'rows':[]};var _0x338112=_['map'](db['DeskConfiguration'][_0x7294('0x2b')],function(_0x5c26c9){return{'name':_0x5c26c9['fieldName'],'type':_0x5c26c9['type'][_0x7294('0x2c')]};});_0x203c41[_0x7294('0x2d')]=_['map'](_0x338112,_0x7294('0x29'));_0x203c41[_0x7294('0x2e')]=_['keys'](_0x4eb546[_0x7294('0x2e')]);_0x203c41[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x203c41[_0x7294('0x2d')],_0x203c41[_0x7294('0x2e')]);_0x1c2a8d[_0x7294('0x31')]=_[_0x7294('0x30')](_0x203c41['model'],qs[_0x7294('0x32')](_0x4eb546[_0x7294('0x2e')]['fields']));_0x1c2a8d[_0x7294('0x31')]=_0x1c2a8d[_0x7294('0x31')]['length']?_0x1c2a8d[_0x7294('0x31')]:_0x203c41[_0x7294('0x2d')];if(!_0x4eb546[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x1c2a8d[_0x7294('0x20')]=qs['limit'](_0x4eb546[_0x7294('0x2e')][_0x7294('0x20')]);_0x1c2a8d['offset']=qs[_0x7294('0x1f')](_0x4eb546[_0x7294('0x2e')][_0x7294('0x1f')]);}_0x1c2a8d[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x4eb546[_0x7294('0x2e')][_0x7294('0x36')]);_0x1c2a8d[_0x7294('0x37')]=qs[_0x7294('0x2f')](_[_0x7294('0x38')](_0x4eb546[_0x7294('0x2e')],_0x203c41[_0x7294('0x2f')]),_0x338112);if(_0x4eb546[_0x7294('0x2e')][_0x7294('0x39')]){_0x1c2a8d[_0x7294('0x37')]=_['merge'](_0x1c2a8d[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x338112,function(_0x6b3db2){if(_0x6b3db2['type']!==_0x7294('0x3b')){var _0x5b2089={};_0x5b2089[_0x6b3db2[_0x7294('0x29')]]={'$like':'%'+_0x4eb546[_0x7294('0x2e')][_0x7294('0x39')]+'%'};return _0x5b2089;}})});}_0x1c2a8d=_['merge']({},_0x1c2a8d,_0x4eb546['options']);var _0x4924f1={'where':_0x1c2a8d[_0x7294('0x37')]};return db[_0x7294('0x3c')][_0x7294('0x21')](_0x4924f1)[_0x7294('0x27')](function(_0xc35ad1){_0xb5843b[_0x7294('0x21')]=_0xc35ad1;if(_0x4eb546[_0x7294('0x2e')][_0x7294('0x3d')]){_0x1c2a8d[_0x7294('0x3e')]=[{'all':!![]}];}return db[_0x7294('0x3c')][_0x7294('0x3f')](_0x1c2a8d);})['then'](function(_0x22b219){_0xb5843b[_0x7294('0x40')]=_0x22b219;return _0xb5843b;})[_0x7294('0x27')](respondWithFilteredResult(_0x17e27b,_0x1c2a8d))[_0x7294('0x41')](handleError(_0x17e27b,null));};exports[_0x7294('0x42')]=function(_0x2b1c3b,_0x10876c){var _0x2bd1fd={'raw':![],'where':{'id':_0x2b1c3b['params']['id']}},_0x5f4f2f={};_0x5f4f2f[_0x7294('0x2d')]=_[_0x7294('0x43')](db['DeskConfiguration'][_0x7294('0x2b')]);_0x5f4f2f['query']=_[_0x7294('0x43')](_0x2b1c3b['query']);_0x5f4f2f['filters']=_['intersection'](_0x5f4f2f[_0x7294('0x2d')],_0x5f4f2f[_0x7294('0x2e')]);_0x2bd1fd[_0x7294('0x31')]=_['intersection'](_0x5f4f2f[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x2b1c3b[_0x7294('0x2e')][_0x7294('0x32')]));_0x2bd1fd[_0x7294('0x31')]=_0x2bd1fd[_0x7294('0x31')][_0x7294('0x44')]?_0x2bd1fd[_0x7294('0x31')]:_0x5f4f2f[_0x7294('0x2d')];if(_0x2b1c3b[_0x7294('0x2e')][_0x7294('0x3d')]){_0x2bd1fd[_0x7294('0x3e')]=[{'all':!![]}];}_0x2bd1fd=_['merge']({},_0x2bd1fd,_0x2b1c3b[_0x7294('0x45')]);return db[_0x7294('0x3c')][_0x7294('0x46')](_0x2bd1fd)[_0x7294('0x27')](handleEntityNotFound(_0x10876c,null))[_0x7294('0x27')](respondWithResult(_0x10876c,null))[_0x7294('0x41')](handleError(_0x10876c,null));};exports['create']=function(_0x557ba5,_0x3a47a4){return db[_0x7294('0x3c')][_0x7294('0x47')](_0x557ba5[_0x7294('0x48')],{})[_0x7294('0x27')](respondWithResult(_0x3a47a4,0xc9))[_0x7294('0x41')](handleError(_0x3a47a4,null));};exports[_0x7294('0x26')]=function(_0x14033b,_0x592f08){if(_0x14033b[_0x7294('0x48')]['id']){delete _0x14033b[_0x7294('0x48')]['id'];}return db[_0x7294('0x3c')]['find']({'where':{'id':_0x14033b[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x592f08,null))[_0x7294('0x27')](saveUpdates(_0x14033b['body'],null))[_0x7294('0x27')](respondWithResult(_0x592f08,null))[_0x7294('0x41')](handleError(_0x592f08,null));};exports[_0x7294('0x28')]=function(_0x2060ce,_0x1d7812){return db[_0x7294('0x3c')]['find']({'where':{'id':_0x2060ce[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x1d7812,null))['then'](removeEntity(_0x1d7812,null))[_0x7294('0x41')](handleError(_0x1d7812,null));};exports[_0x7294('0x4a')]=function(_0x5b664b,_0x59e721,_0x3c4d30){var _0x449ea2={};var _0x58fffd={};var _0x5b2a31;var _0x23835d;return db['DeskConfiguration'][_0x7294('0x4b')]({'where':{'id':_0x5b664b[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x59e721,null))[_0x7294('0x27')](function(_0x195c24){if(_0x195c24){_0x5b2a31=_0x195c24;_0x58fffd[_0x7294('0x2d')]=_[_0x7294('0x43')](db[_0x7294('0x4c')][_0x7294('0x2b')]);_0x58fffd[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x5b664b['query']);_0x58fffd[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x58fffd[_0x7294('0x2d')],_0x58fffd['query']);_0x449ea2[_0x7294('0x31')]=_['intersection'](_0x58fffd[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x5b664b['query']['fields']));_0x449ea2[_0x7294('0x31')]=_0x449ea2[_0x7294('0x31')][_0x7294('0x44')]?_0x449ea2[_0x7294('0x31')]:_0x58fffd[_0x7294('0x2d')];_0x449ea2[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x5b664b['query'][_0x7294('0x36')]);_0x449ea2[_0x7294('0x37')]=qs[_0x7294('0x2f')](_[_0x7294('0x38')](_0x5b664b['query'],_0x58fffd[_0x7294('0x2f')]));if(_0x5b664b[_0x7294('0x2e')]['filter']){_0x449ea2['where']=_[_0x7294('0x4d')](_0x449ea2[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x449ea2[_0x7294('0x31')],function(_0x439d99){var _0x94e5c5={};_0x94e5c5[_0x439d99]={'$like':'%'+_0x5b664b['query']['filter']+'%'};return _0x94e5c5;})});}_0x449ea2=_[_0x7294('0x4d')]({},_0x449ea2,_0x5b664b[_0x7294('0x45')]);return _0x5b2a31[_0x7294('0x4a')](_0x449ea2);}})[_0x7294('0x27')](function(_0x30860e){if(_0x30860e){_0x23835d=_0x30860e[_0x7294('0x44')];if(!_0x5b664b[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x449ea2[_0x7294('0x20')]=qs[_0x7294('0x20')](_0x5b664b['query'][_0x7294('0x20')]);_0x449ea2['offset']=qs[_0x7294('0x1f')](_0x5b664b[_0x7294('0x2e')]['offset']);}return _0x5b2a31[_0x7294('0x4a')](_0x449ea2);}})[_0x7294('0x27')](function(_0x2a62be){if(_0x2a62be){return _0x2a62be?{'count':_0x23835d,'rows':_0x2a62be}:null;}})[_0x7294('0x27')](respondWithResult(_0x59e721,null))['catch'](handleError(_0x59e721,null));};exports[_0x7294('0x4e')]=function(_0x361693,_0x155e43,_0x9bba55){var _0x162ac4={};var _0x3b8ede={};var _0x2f8079;var _0x17d7e3;return db[_0x7294('0x3c')][_0x7294('0x4b')]({'where':{'id':_0x361693[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x155e43,null))[_0x7294('0x27')](function(_0x5ca5d3){if(_0x5ca5d3){_0x2f8079=_0x5ca5d3;_0x3b8ede[_0x7294('0x2d')]=_[_0x7294('0x43')](db['DeskField']['rawAttributes']);_0x3b8ede[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x361693[_0x7294('0x2e')]);_0x3b8ede[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x3b8ede[_0x7294('0x2d')],_0x3b8ede[_0x7294('0x2e')]);_0x162ac4[_0x7294('0x31')]=_[_0x7294('0x30')](_0x3b8ede[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x361693['query']['fields']));_0x162ac4[_0x7294('0x31')]=_0x162ac4[_0x7294('0x31')][_0x7294('0x44')]?_0x162ac4[_0x7294('0x31')]:_0x3b8ede[_0x7294('0x2d')];_0x162ac4[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x361693[_0x7294('0x2e')][_0x7294('0x36')]);_0x162ac4[_0x7294('0x37')]=qs['filters'](_['pick'](_0x361693[_0x7294('0x2e')],_0x3b8ede['filters']));if(_0x361693[_0x7294('0x2e')][_0x7294('0x39')]){_0x162ac4[_0x7294('0x37')]=_[_0x7294('0x4d')](_0x162ac4[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x162ac4[_0x7294('0x31')],function(_0x5d914f){var _0x58c2d3={};_0x58c2d3[_0x5d914f]={'$like':'%'+_0x361693[_0x7294('0x2e')]['filter']+'%'};return _0x58c2d3;})});}_0x162ac4=_['merge']({},_0x162ac4,_0x361693[_0x7294('0x45')]);return _0x2f8079[_0x7294('0x4e')](_0x162ac4);}})[_0x7294('0x27')](function(_0x14dbe3){if(_0x14dbe3){_0x17d7e3=_0x14dbe3['length'];if(!_0x361693[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x162ac4[_0x7294('0x20')]=qs[_0x7294('0x20')](_0x361693[_0x7294('0x2e')][_0x7294('0x20')]);_0x162ac4['offset']=qs[_0x7294('0x1f')](_0x361693[_0x7294('0x2e')]['offset']);}return _0x2f8079['getSubjects'](_0x162ac4);}})[_0x7294('0x27')](function(_0x374e0e){if(_0x374e0e){return _0x374e0e?{'count':_0x17d7e3,'rows':_0x374e0e}:null;}})[_0x7294('0x27')](respondWithResult(_0x155e43,null))[_0x7294('0x41')](handleError(_0x155e43,null));};exports[_0x7294('0x4f')]=function(_0x20b6cb,_0x113791,_0x5aa843){var _0x4f64be={};var _0x52da84={};var _0x2ec453;var _0x29a86a;return db[_0x7294('0x3c')][_0x7294('0x4b')]({'where':{'id':_0x20b6cb[_0x7294('0x49')]['id']}})['then'](handleEntityNotFound(_0x113791,null))[_0x7294('0x27')](function(_0x22d87a){if(_0x22d87a){_0x2ec453=_0x22d87a;_0x52da84[_0x7294('0x2d')]=_[_0x7294('0x43')](db['DeskField']['rawAttributes']);_0x52da84[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x20b6cb[_0x7294('0x2e')]);_0x52da84[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x52da84[_0x7294('0x2d')],_0x52da84[_0x7294('0x2e')]);_0x4f64be[_0x7294('0x31')]=_['intersection'](_0x52da84[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x20b6cb[_0x7294('0x2e')][_0x7294('0x32')]));_0x4f64be[_0x7294('0x31')]=_0x4f64be['attributes'][_0x7294('0x44')]?_0x4f64be[_0x7294('0x31')]:_0x52da84[_0x7294('0x2d')];_0x4f64be[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x20b6cb[_0x7294('0x2e')]['sort']);_0x4f64be['where']=qs[_0x7294('0x2f')](_['pick'](_0x20b6cb[_0x7294('0x2e')],_0x52da84['filters']));if(_0x20b6cb[_0x7294('0x2e')]['filter']){_0x4f64be[_0x7294('0x37')]=_['merge'](_0x4f64be[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x4f64be[_0x7294('0x31')],function(_0x18b699){var _0x5ef543={};_0x5ef543[_0x18b699]={'$like':'%'+_0x20b6cb['query']['filter']+'%'};return _0x5ef543;})});}_0x4f64be=_[_0x7294('0x4d')]({},_0x4f64be,_0x20b6cb[_0x7294('0x45')]);return _0x2ec453['getDescriptions'](_0x4f64be);}})['then'](function(_0x339116){if(_0x339116){_0x29a86a=_0x339116['length'];if(!_0x20b6cb[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x4f64be[_0x7294('0x20')]=qs[_0x7294('0x20')](_0x20b6cb[_0x7294('0x2e')][_0x7294('0x20')]);_0x4f64be['offset']=qs['offset'](_0x20b6cb[_0x7294('0x2e')][_0x7294('0x1f')]);}return _0x2ec453[_0x7294('0x4f')](_0x4f64be);}})[_0x7294('0x27')](function(_0x27f423){if(_0x27f423){return _0x27f423?{'count':_0x29a86a,'rows':_0x27f423}:null;}})[_0x7294('0x27')](respondWithResult(_0x113791,null))[_0x7294('0x41')](handleError(_0x113791,null));};exports[_0x7294('0x50')]=function(_0x5a0853,_0x2d23be,_0x187071){var _0x4331b1={};var _0x58439b={};var _0x4b52f9;var _0x3a5947;return db[_0x7294('0x3c')]['findOne']({'where':{'id':_0x5a0853[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x2d23be,null))[_0x7294('0x27')](function(_0x3f81b0){if(_0x3f81b0){_0x4b52f9=_0x3f81b0;_0x58439b['model']=_['keys'](db[_0x7294('0x51')]['rawAttributes']);_0x58439b[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x5a0853[_0x7294('0x2e')]);_0x58439b[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x58439b[_0x7294('0x2d')],_0x58439b[_0x7294('0x2e')]);_0x4331b1['attributes']=_[_0x7294('0x30')](_0x58439b['model'],qs['fields'](_0x5a0853[_0x7294('0x2e')][_0x7294('0x32')]));_0x4331b1[_0x7294('0x31')]=_0x4331b1[_0x7294('0x31')]['length']?_0x4331b1[_0x7294('0x31')]:_0x58439b[_0x7294('0x2d')];_0x4331b1[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x5a0853[_0x7294('0x2e')][_0x7294('0x36')]);_0x4331b1['where']=qs[_0x7294('0x2f')](_[_0x7294('0x38')](_0x5a0853['query'],_0x58439b['filters']));if(_0x5a0853['query'][_0x7294('0x39')]){_0x4331b1[_0x7294('0x37')]=_[_0x7294('0x4d')](_0x4331b1[_0x7294('0x37')],{'$or':_['map'](_0x4331b1[_0x7294('0x31')],function(_0x4dbd48){var _0x5e7abe={};_0x5e7abe[_0x4dbd48]={'$like':'%'+_0x5a0853[_0x7294('0x2e')][_0x7294('0x39')]+'%'};return _0x5e7abe;})});}_0x4331b1=_[_0x7294('0x4d')]({},_0x4331b1,_0x5a0853['options']);return _0x4b52f9[_0x7294('0x50')](_0x4331b1);}})[_0x7294('0x27')](function(_0x22c694){if(_0x22c694){_0x3a5947=_0x22c694[_0x7294('0x44')];if(!_0x5a0853['query'][_0x7294('0x33')]('nolimit')){_0x4331b1['limit']=qs[_0x7294('0x20')](_0x5a0853[_0x7294('0x2e')][_0x7294('0x20')]);_0x4331b1[_0x7294('0x1f')]=qs[_0x7294('0x1f')](_0x5a0853[_0x7294('0x2e')][_0x7294('0x1f')]);}return _0x4b52f9['getTags'](_0x4331b1);}})[_0x7294('0x27')](function(_0x8c2e69){if(_0x8c2e69){return _0x8c2e69?{'count':_0x3a5947,'rows':_0x8c2e69}:null;}})['then'](respondWithResult(_0x2d23be,null))[_0x7294('0x41')](handleError(_0x2d23be,null));};exports['setTags']=function(_0x37b92d,_0xa18b3f,_0x82254f){if(_0x37b92d[_0x7294('0x48')]['id']){delete _0x37b92d['body']['id'];}return db[_0x7294('0x3c')][_0x7294('0x4b')]({'where':{'id':_0x37b92d[_0x7294('0x49')]['id']}})['then'](handleEntityNotFound(_0xa18b3f,null))[_0x7294('0x27')](function(_0x2a668c){if(_0x2a668c){return _0x2a668c['setTags'](_0x37b92d[_0x7294('0x48')]['ids']||[]);}return null;})[_0x7294('0x27')](respondWithResult(_0xa18b3f,null))[_0x7294('0x41')](handleError(_0xa18b3f,null));};
\ No newline at end of file
+var _0x1fc8=['getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','getFields','DeskField','keys','pick','getSubjects','findOne','getDescriptions'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x1fc8,0x10c));var _0x81fc=function(_0x4c7333,_0x5d229b){_0x4c7333=_0x4c7333-0x0;var _0x1ef84f=_0x1fc8[_0x4c7333];return _0x1ef84f;};'use strict';var emlformat=require(_0x81fc('0x0'));var rimraf=require(_0x81fc('0x1'));var zipdir=require(_0x81fc('0x2'));var jsonpatch=require(_0x81fc('0x3'));var rp=require('request-promise');var moment=require(_0x81fc('0x4'));var BPromise=require(_0x81fc('0x5'));var Mustache=require(_0x81fc('0x6'));var util=require(_0x81fc('0x7'));var path=require(_0x81fc('0x8'));var sox=require('sox');var csv=require(_0x81fc('0x9'));var ejs=require(_0x81fc('0xa'));var fs=require('fs');var fs_extra=require(_0x81fc('0xb'));var _=require('lodash');var squel=require(_0x81fc('0xc'));var crypto=require(_0x81fc('0xd'));var jsforce=require(_0x81fc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x81fc('0x9'));var querystring=require(_0x81fc('0xf'));var Papa=require(_0x81fc('0x10'));var Redis=require('ioredis');var authService=require(_0x81fc('0x11'));var qs=require(_0x81fc('0x12'));var as=require(_0x81fc('0x13'));var hardwareService=require(_0x81fc('0x14'));var logger=require('../../config/logger')(_0x81fc('0x15'));var utils=require(_0x81fc('0x16'));var config=require(_0x81fc('0x17'));var licenseUtil=require(_0x81fc('0x18'));var db=require(_0x81fc('0x19'))['db'];function respondWithStatusCode(_0xda5931,_0x5e8438){_0x5e8438=_0x5e8438||0xcc;return function(_0x4e561b){if(_0x4e561b){return _0xda5931[_0x81fc('0x1a')](_0x5e8438);}return _0xda5931[_0x81fc('0x1b')](_0x5e8438)[_0x81fc('0x1c')]();};}function respondWithResult(_0x123c23,_0x416cae){_0x416cae=_0x416cae||0xc8;return function(_0x2f12a0){if(_0x2f12a0){return _0x123c23['status'](_0x416cae)['json'](_0x2f12a0);}};}function respondWithFilteredResult(_0x97f36e,_0x5692a6){return function(_0x4cc572){if(_0x4cc572){var _0x430a35=typeof _0x5692a6['offset']===_0x81fc('0x1d')&&typeof _0x5692a6[_0x81fc('0x1e')]===_0x81fc('0x1d');var _0x483d56=_0x4cc572[_0x81fc('0x1f')];var _0x351b7e=_0x430a35?0x0:_0x5692a6[_0x81fc('0x20')];var _0x4cbd85=_0x430a35?_0x4cc572[_0x81fc('0x1f')]:_0x5692a6[_0x81fc('0x20')]+_0x5692a6['limit'];var _0x5b22fd;if(_0x4cbd85>=_0x483d56){_0x4cbd85=_0x483d56;_0x5b22fd=0xc8;}else{_0x5b22fd=0xce;}_0x97f36e[_0x81fc('0x1b')](_0x5b22fd);return _0x97f36e['set'](_0x81fc('0x21'),_0x351b7e+'-'+_0x4cbd85+'/'+_0x483d56)[_0x81fc('0x22')](_0x4cc572);}return null;};}function patchUpdates(_0x361fd5){return function(_0x200fc6){try{jsonpatch[_0x81fc('0x23')](_0x200fc6,_0x361fd5,!![]);}catch(_0x2f1ac8){return BPromise[_0x81fc('0x24')](_0x2f1ac8);}return _0x200fc6[_0x81fc('0x25')]();};}function saveUpdates(_0x5a9897,_0x54a69f){return function(_0x2534ea){if(_0x2534ea){return _0x2534ea[_0x81fc('0x26')](_0x5a9897)[_0x81fc('0x27')](function(_0x353f32){return _0x353f32;});}return null;};}function removeEntity(_0x5154fd,_0x3edc8e){return function(_0x26948b){if(_0x26948b){return _0x26948b['destroy']()['then'](function(){_0x5154fd[_0x81fc('0x1b')](0xcc)[_0x81fc('0x1c')]();});}};}function handleEntityNotFound(_0x326fd3,_0x4ff999){return function(_0x33c214){if(!_0x33c214){_0x326fd3[_0x81fc('0x1a')](0x194);}return _0x33c214;};}function handleError(_0x35c6e5,_0x265bd9){_0x265bd9=_0x265bd9||0x1f4;return function(_0x47f1fc){logger[_0x81fc('0x28')](_0x47f1fc[_0x81fc('0x29')]);if(_0x47f1fc[_0x81fc('0x2a')]){delete _0x47f1fc[_0x81fc('0x2a')];}_0x35c6e5['status'](_0x265bd9)[_0x81fc('0x2b')](_0x47f1fc);};}exports['index']=function(_0x5570c0,_0x509c5b){var _0x569068={},_0x4200c3={},_0x3fd75c={'count':0x0,'rows':[]};var _0x96f900=_[_0x81fc('0x2c')](db[_0x81fc('0x2d')][_0x81fc('0x2e')],function(_0x4fa4ba){return{'name':_0x4fa4ba[_0x81fc('0x2f')],'type':_0x4fa4ba[_0x81fc('0x30')][_0x81fc('0x31')]};});_0x4200c3['model']=_[_0x81fc('0x2c')](_0x96f900,_0x81fc('0x2a'));_0x4200c3['query']=_['keys'](_0x5570c0[_0x81fc('0x32')]);_0x4200c3[_0x81fc('0x33')]=_[_0x81fc('0x34')](_0x4200c3[_0x81fc('0x35')],_0x4200c3['query']);_0x569068['attributes']=_['intersection'](_0x4200c3[_0x81fc('0x35')],qs[_0x81fc('0x36')](_0x5570c0[_0x81fc('0x32')]['fields']));_0x569068['attributes']=_0x569068[_0x81fc('0x37')][_0x81fc('0x38')]?_0x569068[_0x81fc('0x37')]:_0x4200c3[_0x81fc('0x35')];if(!_0x5570c0['query'][_0x81fc('0x39')](_0x81fc('0x3a'))){_0x569068[_0x81fc('0x1e')]=qs[_0x81fc('0x1e')](_0x5570c0[_0x81fc('0x32')][_0x81fc('0x1e')]);_0x569068[_0x81fc('0x20')]=qs[_0x81fc('0x20')](_0x5570c0[_0x81fc('0x32')][_0x81fc('0x20')]);}_0x569068[_0x81fc('0x3b')]=qs['sort'](_0x5570c0[_0x81fc('0x32')][_0x81fc('0x3c')]);_0x569068['where']=qs[_0x81fc('0x33')](_['pick'](_0x5570c0[_0x81fc('0x32')],_0x4200c3[_0x81fc('0x33')]),_0x96f900);if(_0x5570c0['query'][_0x81fc('0x3d')]){_0x569068[_0x81fc('0x3e')]=_['merge'](_0x569068['where'],{'$or':_[_0x81fc('0x2c')](_0x96f900,function(_0x542f0e){if(_0x542f0e[_0x81fc('0x30')]!==_0x81fc('0x3f')){var _0x12c5fd={};_0x12c5fd[_0x542f0e[_0x81fc('0x2a')]]={'$like':'%'+_0x5570c0[_0x81fc('0x32')][_0x81fc('0x3d')]+'%'};return _0x12c5fd;}})});}_0x569068=_[_0x81fc('0x40')]({},_0x569068,_0x5570c0[_0x81fc('0x41')]);var _0x512622={'where':_0x569068[_0x81fc('0x3e')]};return db[_0x81fc('0x2d')][_0x81fc('0x1f')](_0x512622)[_0x81fc('0x27')](function(_0x3aa588){_0x3fd75c[_0x81fc('0x1f')]=_0x3aa588;if(_0x5570c0['query'][_0x81fc('0x42')]){_0x569068[_0x81fc('0x43')]=[{'all':!![]}];}return db[_0x81fc('0x2d')][_0x81fc('0x44')](_0x569068);})['then'](function(_0x5a1813){_0x3fd75c[_0x81fc('0x45')]=_0x5a1813;return _0x3fd75c;})[_0x81fc('0x27')](respondWithFilteredResult(_0x509c5b,_0x569068))['catch'](handleError(_0x509c5b,null));};exports[_0x81fc('0x46')]=function(_0x2b4d23,_0x40892a){var _0xa1fcec={'raw':![],'where':{'id':_0x2b4d23[_0x81fc('0x47')]['id']}},_0x2e7e8f={};_0x2e7e8f[_0x81fc('0x35')]=_['keys'](db[_0x81fc('0x2d')][_0x81fc('0x2e')]);_0x2e7e8f[_0x81fc('0x32')]=_['keys'](_0x2b4d23[_0x81fc('0x32')]);_0x2e7e8f[_0x81fc('0x33')]=_[_0x81fc('0x34')](_0x2e7e8f[_0x81fc('0x35')],_0x2e7e8f[_0x81fc('0x32')]);_0xa1fcec['attributes']=_[_0x81fc('0x34')](_0x2e7e8f[_0x81fc('0x35')],qs[_0x81fc('0x36')](_0x2b4d23[_0x81fc('0x32')][_0x81fc('0x36')]));_0xa1fcec['attributes']=_0xa1fcec[_0x81fc('0x37')][_0x81fc('0x38')]?_0xa1fcec['attributes']:_0x2e7e8f[_0x81fc('0x35')];if(_0x2b4d23[_0x81fc('0x32')][_0x81fc('0x42')]){_0xa1fcec[_0x81fc('0x43')]=[{'all':!![]}];}_0xa1fcec=_[_0x81fc('0x40')]({},_0xa1fcec,_0x2b4d23[_0x81fc('0x41')]);return db['DeskConfiguration'][_0x81fc('0x48')](_0xa1fcec)['then'](handleEntityNotFound(_0x40892a,null))[_0x81fc('0x27')](respondWithResult(_0x40892a,null))[_0x81fc('0x49')](handleError(_0x40892a,null));};exports[_0x81fc('0x4a')]=function(_0x8ba2ee,_0x504698){return db[_0x81fc('0x2d')][_0x81fc('0x4a')](_0x8ba2ee[_0x81fc('0x4b')],{})[_0x81fc('0x27')](respondWithResult(_0x504698,0xc9))['catch'](handleError(_0x504698,null));};exports[_0x81fc('0x26')]=function(_0xebf4ff,_0x8c1b86){if(_0xebf4ff[_0x81fc('0x4b')]['id']){delete _0xebf4ff[_0x81fc('0x4b')]['id'];}return db[_0x81fc('0x2d')][_0x81fc('0x48')]({'where':{'id':_0xebf4ff[_0x81fc('0x47')]['id']}})[_0x81fc('0x27')](handleEntityNotFound(_0x8c1b86,null))[_0x81fc('0x27')](saveUpdates(_0xebf4ff[_0x81fc('0x4b')],null))['then'](respondWithResult(_0x8c1b86,null))['catch'](handleError(_0x8c1b86,null));};exports[_0x81fc('0x4c')]=function(_0x20695b,_0x50524c){return db[_0x81fc('0x2d')][_0x81fc('0x48')]({'where':{'id':_0x20695b[_0x81fc('0x47')]['id']}})[_0x81fc('0x27')](handleEntityNotFound(_0x50524c,null))[_0x81fc('0x27')](removeEntity(_0x50524c,null))['catch'](handleError(_0x50524c,null));};exports[_0x81fc('0x4d')]=function(_0x22e6d7,_0x4c9e11,_0x35121c){var _0x236332={};var _0x54ffc7={};var _0x408457;var _0x2216eb;return db[_0x81fc('0x2d')]['findOne']({'where':{'id':_0x22e6d7[_0x81fc('0x47')]['id']}})[_0x81fc('0x27')](handleEntityNotFound(_0x4c9e11,null))['then'](function(_0x3c4b3a){if(_0x3c4b3a){_0x408457=_0x3c4b3a;_0x54ffc7[_0x81fc('0x35')]=_['keys'](db[_0x81fc('0x4e')][_0x81fc('0x2e')]);_0x54ffc7[_0x81fc('0x32')]=_[_0x81fc('0x4f')](_0x22e6d7[_0x81fc('0x32')]);_0x54ffc7[_0x81fc('0x33')]=_['intersection'](_0x54ffc7[_0x81fc('0x35')],_0x54ffc7[_0x81fc('0x32')]);_0x236332[_0x81fc('0x37')]=_[_0x81fc('0x34')](_0x54ffc7[_0x81fc('0x35')],qs[_0x81fc('0x36')](_0x22e6d7[_0x81fc('0x32')][_0x81fc('0x36')]));_0x236332['attributes']=_0x236332[_0x81fc('0x37')][_0x81fc('0x38')]?_0x236332['attributes']:_0x54ffc7[_0x81fc('0x35')];_0x236332[_0x81fc('0x3b')]=qs[_0x81fc('0x3c')](_0x22e6d7[_0x81fc('0x32')][_0x81fc('0x3c')]);_0x236332[_0x81fc('0x3e')]=qs['filters'](_[_0x81fc('0x50')](_0x22e6d7[_0x81fc('0x32')],_0x54ffc7['filters']));if(_0x22e6d7[_0x81fc('0x32')][_0x81fc('0x3d')]){_0x236332[_0x81fc('0x3e')]=_[_0x81fc('0x40')](_0x236332[_0x81fc('0x3e')],{'$or':_['map'](_0x236332[_0x81fc('0x37')],function(_0x20a12a){var _0x4c6593={};_0x4c6593[_0x20a12a]={'$like':'%'+_0x22e6d7[_0x81fc('0x32')][_0x81fc('0x3d')]+'%'};return _0x4c6593;})});}_0x236332=_[_0x81fc('0x40')]({},_0x236332,_0x22e6d7[_0x81fc('0x41')]);return _0x408457[_0x81fc('0x4d')](_0x236332);}})[_0x81fc('0x27')](function(_0x2d1dea){if(_0x2d1dea){_0x2216eb=_0x2d1dea[_0x81fc('0x38')];if(!_0x22e6d7['query']['hasOwnProperty'](_0x81fc('0x3a'))){_0x236332['limit']=qs[_0x81fc('0x1e')](_0x22e6d7['query'][_0x81fc('0x1e')]);_0x236332[_0x81fc('0x20')]=qs[_0x81fc('0x20')](_0x22e6d7[_0x81fc('0x32')][_0x81fc('0x20')]);}return _0x408457['getFields'](_0x236332);}})[_0x81fc('0x27')](function(_0x5c4d2e){if(_0x5c4d2e){return _0x5c4d2e?{'count':_0x2216eb,'rows':_0x5c4d2e}:null;}})[_0x81fc('0x27')](respondWithResult(_0x4c9e11,null))[_0x81fc('0x49')](handleError(_0x4c9e11,null));};exports[_0x81fc('0x51')]=function(_0x36d0f4,_0x3b7966,_0x3cc536){var _0xa2f32b={};var _0x4a1113={};var _0x48f68d;var _0x1e63c3;return db['DeskConfiguration'][_0x81fc('0x52')]({'where':{'id':_0x36d0f4['params']['id']}})[_0x81fc('0x27')](handleEntityNotFound(_0x3b7966,null))['then'](function(_0x12a84c){if(_0x12a84c){_0x48f68d=_0x12a84c;_0x4a1113[_0x81fc('0x35')]=_[_0x81fc('0x4f')](db[_0x81fc('0x4e')][_0x81fc('0x2e')]);_0x4a1113[_0x81fc('0x32')]=_[_0x81fc('0x4f')](_0x36d0f4[_0x81fc('0x32')]);_0x4a1113['filters']=_['intersection'](_0x4a1113['model'],_0x4a1113[_0x81fc('0x32')]);_0xa2f32b[_0x81fc('0x37')]=_[_0x81fc('0x34')](_0x4a1113[_0x81fc('0x35')],qs[_0x81fc('0x36')](_0x36d0f4[_0x81fc('0x32')]['fields']));_0xa2f32b[_0x81fc('0x37')]=_0xa2f32b[_0x81fc('0x37')][_0x81fc('0x38')]?_0xa2f32b['attributes']:_0x4a1113[_0x81fc('0x35')];_0xa2f32b[_0x81fc('0x3b')]=qs[_0x81fc('0x3c')](_0x36d0f4['query']['sort']);_0xa2f32b['where']=qs[_0x81fc('0x33')](_[_0x81fc('0x50')](_0x36d0f4[_0x81fc('0x32')],_0x4a1113['filters']));if(_0x36d0f4[_0x81fc('0x32')][_0x81fc('0x3d')]){_0xa2f32b['where']=_[_0x81fc('0x40')](_0xa2f32b[_0x81fc('0x3e')],{'$or':_[_0x81fc('0x2c')](_0xa2f32b[_0x81fc('0x37')],function(_0x40b246){var _0x363f5e={};_0x363f5e[_0x40b246]={'$like':'%'+_0x36d0f4[_0x81fc('0x32')][_0x81fc('0x3d')]+'%'};return _0x363f5e;})});}_0xa2f32b=_['merge']({},_0xa2f32b,_0x36d0f4['options']);return _0x48f68d[_0x81fc('0x51')](_0xa2f32b);}})[_0x81fc('0x27')](function(_0x409eff){if(_0x409eff){_0x1e63c3=_0x409eff[_0x81fc('0x38')];if(!_0x36d0f4[_0x81fc('0x32')][_0x81fc('0x39')](_0x81fc('0x3a'))){_0xa2f32b[_0x81fc('0x1e')]=qs['limit'](_0x36d0f4[_0x81fc('0x32')][_0x81fc('0x1e')]);_0xa2f32b['offset']=qs[_0x81fc('0x20')](_0x36d0f4[_0x81fc('0x32')][_0x81fc('0x20')]);}return _0x48f68d[_0x81fc('0x51')](_0xa2f32b);}})[_0x81fc('0x27')](function(_0x897064){if(_0x897064){return _0x897064?{'count':_0x1e63c3,'rows':_0x897064}:null;}})[_0x81fc('0x27')](respondWithResult(_0x3b7966,null))[_0x81fc('0x49')](handleError(_0x3b7966,null));};exports['getDescriptions']=function(_0xc434a4,_0xe91118,_0x38d3d1){var _0x22a888={};var _0x4bb83c={};var _0x1fffe1;var _0x36c8c6;return db[_0x81fc('0x2d')][_0x81fc('0x52')]({'where':{'id':_0xc434a4[_0x81fc('0x47')]['id']}})[_0x81fc('0x27')](handleEntityNotFound(_0xe91118,null))[_0x81fc('0x27')](function(_0x5329aa){if(_0x5329aa){_0x1fffe1=_0x5329aa;_0x4bb83c['model']=_['keys'](db[_0x81fc('0x4e')][_0x81fc('0x2e')]);_0x4bb83c['query']=_[_0x81fc('0x4f')](_0xc434a4[_0x81fc('0x32')]);_0x4bb83c[_0x81fc('0x33')]=_[_0x81fc('0x34')](_0x4bb83c[_0x81fc('0x35')],_0x4bb83c[_0x81fc('0x32')]);_0x22a888[_0x81fc('0x37')]=_[_0x81fc('0x34')](_0x4bb83c[_0x81fc('0x35')],qs[_0x81fc('0x36')](_0xc434a4[_0x81fc('0x32')][_0x81fc('0x36')]));_0x22a888[_0x81fc('0x37')]=_0x22a888['attributes'][_0x81fc('0x38')]?_0x22a888[_0x81fc('0x37')]:_0x4bb83c[_0x81fc('0x35')];_0x22a888[_0x81fc('0x3b')]=qs[_0x81fc('0x3c')](_0xc434a4[_0x81fc('0x32')]['sort']);_0x22a888[_0x81fc('0x3e')]=qs[_0x81fc('0x33')](_[_0x81fc('0x50')](_0xc434a4[_0x81fc('0x32')],_0x4bb83c[_0x81fc('0x33')]));if(_0xc434a4['query'][_0x81fc('0x3d')]){_0x22a888['where']=_[_0x81fc('0x40')](_0x22a888[_0x81fc('0x3e')],{'$or':_[_0x81fc('0x2c')](_0x22a888[_0x81fc('0x37')],function(_0x27e209){var _0x2a2231={};_0x2a2231[_0x27e209]={'$like':'%'+_0xc434a4[_0x81fc('0x32')][_0x81fc('0x3d')]+'%'};return _0x2a2231;})});}_0x22a888=_['merge']({},_0x22a888,_0xc434a4['options']);return _0x1fffe1[_0x81fc('0x53')](_0x22a888);}})[_0x81fc('0x27')](function(_0xafeaae){if(_0xafeaae){_0x36c8c6=_0xafeaae[_0x81fc('0x38')];if(!_0xc434a4[_0x81fc('0x32')][_0x81fc('0x39')](_0x81fc('0x3a'))){_0x22a888[_0x81fc('0x1e')]=qs['limit'](_0xc434a4[_0x81fc('0x32')][_0x81fc('0x1e')]);_0x22a888[_0x81fc('0x20')]=qs[_0x81fc('0x20')](_0xc434a4[_0x81fc('0x32')][_0x81fc('0x20')]);}return _0x1fffe1['getDescriptions'](_0x22a888);}})[_0x81fc('0x27')](function(_0x542cc9){if(_0x542cc9){return _0x542cc9?{'count':_0x36c8c6,'rows':_0x542cc9}:null;}})[_0x81fc('0x27')](respondWithResult(_0xe91118,null))[_0x81fc('0x49')](handleError(_0xe91118,null));};exports[_0x81fc('0x54')]=function(_0x89760c,_0x185e38,_0x292df9){var _0x59d056={};var _0x417cc4={};var _0x5def01;var _0x419006;return db[_0x81fc('0x2d')][_0x81fc('0x52')]({'where':{'id':_0x89760c['params']['id']}})['then'](handleEntityNotFound(_0x185e38,null))[_0x81fc('0x27')](function(_0x3a3b2e){if(_0x3a3b2e){_0x5def01=_0x3a3b2e;_0x417cc4[_0x81fc('0x35')]=_['keys'](db[_0x81fc('0x55')][_0x81fc('0x2e')]);_0x417cc4[_0x81fc('0x32')]=_[_0x81fc('0x4f')](_0x89760c['query']);_0x417cc4['filters']=_['intersection'](_0x417cc4[_0x81fc('0x35')],_0x417cc4[_0x81fc('0x32')]);_0x59d056[_0x81fc('0x37')]=_[_0x81fc('0x34')](_0x417cc4[_0x81fc('0x35')],qs['fields'](_0x89760c[_0x81fc('0x32')]['fields']));_0x59d056[_0x81fc('0x37')]=_0x59d056['attributes'][_0x81fc('0x38')]?_0x59d056['attributes']:_0x417cc4[_0x81fc('0x35')];_0x59d056['order']=qs[_0x81fc('0x3c')](_0x89760c['query']['sort']);_0x59d056[_0x81fc('0x3e')]=qs[_0x81fc('0x33')](_[_0x81fc('0x50')](_0x89760c[_0x81fc('0x32')],_0x417cc4[_0x81fc('0x33')]));if(_0x89760c[_0x81fc('0x32')][_0x81fc('0x3d')]){_0x59d056[_0x81fc('0x3e')]=_[_0x81fc('0x40')](_0x59d056['where'],{'$or':_[_0x81fc('0x2c')](_0x59d056[_0x81fc('0x37')],function(_0x18196b){var _0x3d0dd4={};_0x3d0dd4[_0x18196b]={'$like':'%'+_0x89760c[_0x81fc('0x32')][_0x81fc('0x3d')]+'%'};return _0x3d0dd4;})});}_0x59d056=_[_0x81fc('0x40')]({},_0x59d056,_0x89760c[_0x81fc('0x41')]);return _0x5def01[_0x81fc('0x54')](_0x59d056);}})[_0x81fc('0x27')](function(_0x25466e){if(_0x25466e){_0x419006=_0x25466e['length'];if(!_0x89760c['query'][_0x81fc('0x39')](_0x81fc('0x3a'))){_0x59d056[_0x81fc('0x1e')]=qs['limit'](_0x89760c['query'][_0x81fc('0x1e')]);_0x59d056[_0x81fc('0x20')]=qs[_0x81fc('0x20')](_0x89760c[_0x81fc('0x32')][_0x81fc('0x20')]);}return _0x5def01[_0x81fc('0x54')](_0x59d056);}})[_0x81fc('0x27')](function(_0x377634){if(_0x377634){return _0x377634?{'count':_0x419006,'rows':_0x377634}:null;}})['then'](respondWithResult(_0x185e38,null))[_0x81fc('0x49')](handleError(_0x185e38,null));};exports[_0x81fc('0x56')]=function(_0x405fe8,_0x2efe83,_0x3eae27){if(_0x405fe8[_0x81fc('0x4b')]['id']){delete _0x405fe8[_0x81fc('0x4b')]['id'];}return db[_0x81fc('0x2d')]['findOne']({'where':{'id':_0x405fe8['params']['id']}})[_0x81fc('0x27')](handleEntityNotFound(_0x2efe83,null))[_0x81fc('0x27')](function(_0x1e6228){if(_0x1e6228){return _0x1e6228[_0x81fc('0x56')](_0x405fe8[_0x81fc('0x4b')][_0x81fc('0x57')]||[]);}return null;})['then'](respondWithResult(_0x2efe83,null))['catch'](handleError(_0x2efe83,null));};
\ No newline at end of file
index 5fc9344..a07b5bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64f=['../../config/logger','api','request-promise','path','rimraf','./intDeskConfiguration.attributes','define','int_desk_configurations','lodash','util'];(function(_0x5335ea,_0x2a612d){var _0x40a7da=function(_0x28023c){while(--_0x28023c){_0x5335ea['push'](_0x5335ea['shift']());}};_0x40a7da(++_0x2a612d);}(_0xe64f,0x102));var _0xfe64=function(_0x669662,_0x27e510){_0x669662=_0x669662-0x0;var _0x352db5=_0xe64f[_0x669662];return _0x352db5;};'use strict';var _=require(_0xfe64('0x0'));var util=require(_0xfe64('0x1'));var logger=require(_0xfe64('0x2'))(_0xfe64('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfe64('0x4'));var fs=require('fs');var path=require(_0xfe64('0x5'));var rimraf=require(_0xfe64('0x6'));var config=require('../../config/environment');var attributes=require(_0xfe64('0x7'));module['exports']=function(_0x515cf9,_0x574e2a){return _0x515cf9[_0xfe64('0x8')]('DeskConfiguration',attributes,{'tableName':_0xfe64('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x95ee=['../../config/environment','./intDeskConfiguration.attributes','define','DeskConfiguration','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0x95ee,0x7d));var _0xe95e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x95ee[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0xe95e('0x0'));var util=require(_0xe95e('0x1'));var logger=require(_0xe95e('0x2'))(_0xe95e('0x3'));var moment=require(_0xe95e('0x4'));var BPromise=require(_0xe95e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe95e('0x6'));var rimraf=require('rimraf');var config=require(_0xe95e('0x7'));var attributes=require(_0xe95e('0x8'));module['exports']=function(_0x5715c7,_0x25006b){return _0x5715c7[_0xe95e('0x9')](_0xe95e('0xa'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b0d7c4..085a3dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e9b=['DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code'];(function(_0x2ade6c,_0x2d42f2){var _0x2cb372=function(_0x477d8a){while(--_0x477d8a){_0x2ade6c['push'](_0x2ade6c['shift']());}};_0x2cb372(++_0x2d42f2);}(_0x6e9b,0xea));var _0xb6e9=function(_0x3b0f99,_0x2e58a0){_0x3b0f99=_0x3b0f99-0x0;var _0x49793e=_0x6e9b[_0x3b0f99];return _0x49793e;};'use strict';var _=require(_0xb6e9('0x0'));var util=require(_0xb6e9('0x1'));var moment=require(_0xb6e9('0x2'));var BPromise=require(_0xb6e9('0x3'));var rs=require(_0xb6e9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb6e9('0x5'))['db'];var utils=require(_0xb6e9('0x6'));var logger=require(_0xb6e9('0x7'))('rpc');var config=require(_0xb6e9('0x8'));var jayson=require(_0xb6e9('0x9'));var client=jayson[_0xb6e9('0xa')][_0xb6e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45f9f0,_0x122191,_0x174772){return new BPromise(function(_0x5967ba,_0x20ba2a){return client[_0xb6e9('0xc')](_0x45f9f0,_0x174772)[_0xb6e9('0xd')](function(_0x2b68b2){logger[_0xb6e9('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x122191,_0xb6e9('0xf'));logger['debug']('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x122191,'request\x20sent',JSON[_0xb6e9('0x10')](_0x2b68b2));if(_0x2b68b2[_0xb6e9('0x11')]){if(_0x2b68b2['error'][_0xb6e9('0x12')]===0x1f4){logger['error'](_0xb6e9('0x13'),_0x122191,_0x2b68b2[_0xb6e9('0x11')][_0xb6e9('0x14')]);return _0x20ba2a(_0x2b68b2[_0xb6e9('0x11')]['message']);}logger[_0xb6e9('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x122191,_0x2b68b2[_0xb6e9('0x11')][_0xb6e9('0x14')]);return _0x5967ba(_0x2b68b2[_0xb6e9('0x11')][_0xb6e9('0x14')]);}else{logger[_0xb6e9('0xe')](_0xb6e9('0x13'),_0x122191,_0xb6e9('0xf'));_0x5967ba(_0x2b68b2[_0xb6e9('0x15')][_0xb6e9('0x14')]);}})[_0xb6e9('0x16')](function(_0x3e6a34){logger[_0xb6e9('0x11')](_0xb6e9('0x13'),_0x122191,_0x3e6a34);_0x20ba2a(_0x3e6a34);});});}
\ No newline at end of file
+var _0x3c91=['client','http','request','then','DeskConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x2ceedb,_0x3d4af3){var _0x1eef5c=function(_0xee38c1){while(--_0xee38c1){_0x2ceedb['push'](_0x2ceedb['shift']());}};_0x1eef5c(++_0x3d4af3);}(_0x3c91,0x1af));var _0x13c9=function(_0x245a34,_0x211b5d){_0x245a34=_0x245a34-0x0;var _0x132a5b=_0x3c91[_0x245a34];return _0x132a5b;};'use strict';var _=require(_0x13c9('0x0'));var util=require(_0x13c9('0x1'));var moment=require(_0x13c9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c9('0x3'));var db=require(_0x13c9('0x4'))['db'];var utils=require(_0x13c9('0x5'));var logger=require('../../config/logger')(_0x13c9('0x6'));var config=require(_0x13c9('0x7'));var jayson=require(_0x13c9('0x8'));var client=jayson[_0x13c9('0x9')][_0x13c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c4332,_0x58b610,_0x44243f){return new BPromise(function(_0x196c2a,_0x5fd23){return client[_0x13c9('0xb')](_0x4c4332,_0x44243f)[_0x13c9('0xc')](function(_0x5370dd){logger['info'](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));logger['debug']('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x58b610,_0x13c9('0xe'),JSON[_0x13c9('0xf')](_0x5370dd));if(_0x5370dd[_0x13c9('0x10')]){if(_0x5370dd[_0x13c9('0x10')][_0x13c9('0x11')]===0x1f4){logger[_0x13c9('0x10')](_0x13c9('0xd'),_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x5fd23(_0x5370dd['error']['message']);}logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x196c2a(_0x5370dd[_0x13c9('0x10')]['message']);}else{logger[_0x13c9('0x13')](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));_0x196c2a(_0x5370dd[_0x13c9('0x14')][_0x13c9('0x12')]);}})[_0x13c9('0x15')](function(_0x238952){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x58b610,_0x238952);_0x5fd23(_0x238952);});});}
\ No newline at end of file
index 739d56e..6429742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa4=['./intDeskField.controller','get','isAuthenticated','index','/:id','show','create','put','update','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5be795,_0x1cb1b8){var _0x4e8a3b=function(_0x5584ef){while(--_0x5584ef){_0x5be795['push'](_0x5be795['shift']());}};_0x4e8a3b(++_0x1cb1b8);}(_0xdfa4,0x190));var _0x4dfa=function(_0x1400ba,_0x272b1e){_0x1400ba=_0x1400ba-0x0;var _0x2f25d3=_0xdfa4[_0x1400ba];return _0x2f25d3;};'use strict';var multer=require(_0x4dfa('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4dfa('0x1'));var express=require(_0x4dfa('0x2'));var router=express[_0x4dfa('0x3')]();var fs_extra=require(_0x4dfa('0x4'));var auth=require(_0x4dfa('0x5'));var interaction=require(_0x4dfa('0x6'));var config=require(_0x4dfa('0x7'));var controller=require(_0x4dfa('0x8'));router[_0x4dfa('0x9')]('/',auth[_0x4dfa('0xa')](),controller[_0x4dfa('0xb')]);router[_0x4dfa('0x9')](_0x4dfa('0xc'),auth[_0x4dfa('0xa')](),controller[_0x4dfa('0xd')]);router['post']('/',auth[_0x4dfa('0xa')](),controller[_0x4dfa('0xe')]);router[_0x4dfa('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x4dfa('0x10')]);router['delete'](_0x4dfa('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa753=['Router','fs-extra','../../components/auth/service','./intDeskField.controller','get','index','isAuthenticated','post','create','put','/:id','update','destroy','multer','util','path','express'];(function(_0x1e671f,_0x1c8a22){var _0x1e6ffb=function(_0x110e00){while(--_0x110e00){_0x1e671f['push'](_0x1e671f['shift']());}};_0x1e6ffb(++_0x1c8a22);}(_0xa753,0xa6));var _0x3a75=function(_0x8edbe5,_0x18d624){_0x8edbe5=_0x8edbe5-0x0;var _0x43d453=_0xa753[_0x8edbe5];return _0x43d453;};'use strict';var multer=require(_0x3a75('0x0'));var util=require(_0x3a75('0x1'));var path=require(_0x3a75('0x2'));var timeout=require('connect-timeout');var express=require(_0x3a75('0x3'));var router=express[_0x3a75('0x4')]();var fs_extra=require(_0x3a75('0x5'));var auth=require(_0x3a75('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3a75('0x7'));router[_0x3a75('0x8')]('/',auth['isAuthenticated'](),controller[_0x3a75('0x9')]);router[_0x3a75('0x8')]('/:id',auth[_0x3a75('0xa')](),controller['show']);router[_0x3a75('0xb')]('/',auth[_0x3a75('0xa')](),controller[_0x3a75('0xc')]);router[_0x3a75('0xd')](_0x3a75('0xe'),auth[_0x3a75('0xa')](),controller[_0x3a75('0xf')]);router['delete'](_0x3a75('0xe'),auth[_0x3a75('0xa')](),controller[_0x3a75('0x10')]);module['exports']=router;
\ No newline at end of file
index facf25c..b5888b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccf9=['BOOLEAN','exports','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0x4fa2b5,_0x48fa09){var _0x33342b=function(_0x4ca19a){while(--_0x4ca19a){_0x4fa2b5['push'](_0x4fa2b5['shift']());}};_0x33342b(++_0x48fa09);}(_0xccf9,0x121));var _0x9ccf=function(_0x2100b8,_0x205963){_0x2100b8=_0x2100b8-0x0;var _0x4f2732=_0xccf9[_0x2100b8];return _0x4f2732;};'use strict';var Sequelize=require('sequelize');module[_0x9ccf('0x0')]={'type':{'type':Sequelize[_0x9ccf('0x1')](_0x9ccf('0x2'),'variable',_0x9ccf('0x3'),_0x9ccf('0x4'),_0x9ccf('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9ccf('0x6')]},'key':{'type':Sequelize[_0x9ccf('0x6')]},'keyType':{'type':Sequelize[_0x9ccf('0x1')](_0x9ccf('0x2'),'variable',_0x9ccf('0x3'))},'keyContent':{'type':Sequelize[_0x9ccf('0x6')]},'idField':{'type':Sequelize[_0x9ccf('0x6')]},'nameField':{'type':Sequelize[_0x9ccf('0x6')]},'customField':{'type':Sequelize[_0x9ccf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9ccf('0x6')]}};
\ No newline at end of file
+var _0x37c6=['BOOLEAN','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x30e74c,_0x2fa8a5){var _0x1ffebd=function(_0x284197){while(--_0x284197){_0x30e74c['push'](_0x30e74c['shift']());}};_0x1ffebd(++_0x2fa8a5);}(_0x37c6,0x1a1));var _0x637c=function(_0xf25121,_0xaf16e5){_0xf25121=_0xf25121-0x0;var _0x5745a7=_0x37c6[_0xf25121];return _0x5745a7;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x637c('0x0')](_0x637c('0x1'),_0x637c('0x2'),_0x637c('0x3'),_0x637c('0x4'),_0x637c('0x5')),'defaultValue':_0x637c('0x1')},'content':{'type':Sequelize[_0x637c('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x637c('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x637c('0x6')]},'nameField':{'type':Sequelize[_0x637c('0x6')]},'customField':{'type':Sequelize[_0x637c('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x637c('0x6')]}};
\ No newline at end of file
index d049c8b..b554caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['count','set','Content-Range','apply','reject','save','then','sendStatus','name','send','map','DeskField','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','rows','show','params','include','find','catch','create','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x53ec,0x192));var _0xc53e=function(_0x20237d,_0x506c3d){_0x20237d=_0x20237d-0x0;var _0x5a5b92=_0x53ec[_0x20237d];return _0x5a5b92;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];function respondWithStatusCode(_0x863fa,_0x4203aa){_0x4203aa=_0x4203aa||0xcc;return function(_0x56f0e5){if(_0x56f0e5){return _0x863fa['sendStatus'](_0x4203aa);}return _0x863fa[_0xc53e('0x18')](_0x4203aa)[_0xc53e('0x19')]();};}function respondWithResult(_0x7cd798,_0x3d2e17){_0x3d2e17=_0x3d2e17||0xc8;return function(_0x358ef3){if(_0x358ef3){return _0x7cd798[_0xc53e('0x18')](_0x3d2e17)[_0xc53e('0x1a')](_0x358ef3);}};}function respondWithFilteredResult(_0x19c0d1,_0x455e4d){return function(_0x2ad6eb){if(_0x2ad6eb){var _0x5b0a88=typeof _0x455e4d[_0xc53e('0x1b')]===_0xc53e('0x1c')&&typeof _0x455e4d[_0xc53e('0x1d')]===_0xc53e('0x1c');var _0x15333b=_0x2ad6eb[_0xc53e('0x1e')];var _0x164016=_0x5b0a88?0x0:_0x455e4d[_0xc53e('0x1b')];var _0x3b550e=_0x5b0a88?_0x2ad6eb['count']:_0x455e4d['offset']+_0x455e4d[_0xc53e('0x1d')];var _0x2a5bac;if(_0x3b550e>=_0x15333b){_0x3b550e=_0x15333b;_0x2a5bac=0xc8;}else{_0x2a5bac=0xce;}_0x19c0d1[_0xc53e('0x18')](_0x2a5bac);return _0x19c0d1[_0xc53e('0x1f')](_0xc53e('0x20'),_0x164016+'-'+_0x3b550e+'/'+_0x15333b)[_0xc53e('0x1a')](_0x2ad6eb);}return null;};}function patchUpdates(_0x15a015){return function(_0x25702b){try{jsonpatch[_0xc53e('0x21')](_0x25702b,_0x15a015,!![]);}catch(_0x401af6){return BPromise[_0xc53e('0x22')](_0x401af6);}return _0x25702b[_0xc53e('0x23')]();};}function saveUpdates(_0x426467,_0x4fb695){return function(_0x47cfdd){if(_0x47cfdd){return _0x47cfdd['update'](_0x426467)[_0xc53e('0x24')](function(_0x384218){return _0x384218;});}return null;};}function removeEntity(_0x7591c1,_0x4015c8){return function(_0x180811){if(_0x180811){return _0x180811['destroy']()['then'](function(){_0x7591c1[_0xc53e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae55e,_0x3a5ce8){return function(_0x443179){if(!_0x443179){_0x1ae55e[_0xc53e('0x25')](0x194);}return _0x443179;};}function handleError(_0x63c5dc,_0x4df8cf){_0x4df8cf=_0x4df8cf||0x1f4;return function(_0x398e7a){logger['error'](_0x398e7a['stack']);if(_0x398e7a['name']){delete _0x398e7a[_0xc53e('0x26')];}_0x63c5dc['status'](_0x4df8cf)[_0xc53e('0x27')](_0x398e7a);};}exports['index']=function(_0x24a77e,_0x5112d2){var _0x5ce216={},_0x8f0ee6={},_0x6a62b0={'count':0x0,'rows':[]};var _0x42dec1=_[_0xc53e('0x28')](db[_0xc53e('0x29')][_0xc53e('0x2a')],function(_0x3280fe){return{'name':_0x3280fe[_0xc53e('0x2b')],'type':_0x3280fe['type'][_0xc53e('0x2c')]};});_0x8f0ee6[_0xc53e('0x2d')]=_[_0xc53e('0x28')](_0x42dec1,'name');_0x8f0ee6[_0xc53e('0x2e')]=_['keys'](_0x24a77e[_0xc53e('0x2e')]);_0x8f0ee6[_0xc53e('0x2f')]=_['intersection'](_0x8f0ee6['model'],_0x8f0ee6[_0xc53e('0x2e')]);_0x5ce216[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x8f0ee6[_0xc53e('0x2d')],qs[_0xc53e('0x32')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x5ce216[_0xc53e('0x30')]=_0x5ce216['attributes'][_0xc53e('0x33')]?_0x5ce216[_0xc53e('0x30')]:_0x8f0ee6[_0xc53e('0x2d')];if(!_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x34')](_0xc53e('0x35'))){_0x5ce216[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x24a77e[_0xc53e('0x2e')]['limit']);_0x5ce216[_0xc53e('0x1b')]=qs['offset'](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x1b')]);}_0x5ce216['order']=qs[_0xc53e('0x36')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x36')]);_0x5ce216['where']=qs[_0xc53e('0x2f')](_[_0xc53e('0x37')](_0x24a77e[_0xc53e('0x2e')],_0x8f0ee6[_0xc53e('0x2f')]),_0x42dec1);if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]){_0x5ce216[_0xc53e('0x39')]=_['merge'](_0x5ce216[_0xc53e('0x39')],{'$or':_[_0xc53e('0x28')](_0x42dec1,function(_0x2db711){if(_0x2db711['type']!==_0xc53e('0x3a')){var _0x5e8ab7={};_0x5e8ab7[_0x2db711[_0xc53e('0x26')]]={'$like':'%'+_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]+'%'};return _0x5e8ab7;}})});}_0x5ce216=_[_0xc53e('0x3b')]({},_0x5ce216,_0x24a77e[_0xc53e('0x3c')]);var _0x5507d0={'where':_0x5ce216[_0xc53e('0x39')]};return db[_0xc53e('0x29')]['count'](_0x5507d0)['then'](function(_0x5e9e15){_0x6a62b0['count']=_0x5e9e15;if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x5ce216['include']=[{'all':!![]}];}return db[_0xc53e('0x29')]['findAll'](_0x5ce216);})['then'](function(_0x53447e){_0x6a62b0[_0xc53e('0x3e')]=_0x53447e;return _0x6a62b0;})['then'](respondWithFilteredResult(_0x5112d2,_0x5ce216))['catch'](handleError(_0x5112d2,null));};exports[_0xc53e('0x3f')]=function(_0x53a82f,_0x422088){var _0x360af9={'raw':!![],'where':{'id':_0x53a82f[_0xc53e('0x40')]['id']}},_0x49f204={};_0x49f204[_0xc53e('0x2d')]=_['keys'](db[_0xc53e('0x29')]['rawAttributes']);_0x49f204['query']=_['keys'](_0x53a82f['query']);_0x49f204[_0xc53e('0x2f')]=_[_0xc53e('0x31')](_0x49f204[_0xc53e('0x2d')],_0x49f204['query']);_0x360af9[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x49f204['model'],qs['fields'](_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x360af9[_0xc53e('0x30')]=_0x360af9['attributes'][_0xc53e('0x33')]?_0x360af9[_0xc53e('0x30')]:_0x49f204[_0xc53e('0x2d')];if(_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x360af9[_0xc53e('0x41')]=[{'all':!![]}];}_0x360af9=_[_0xc53e('0x3b')]({},_0x360af9,_0x53a82f['options']);return db[_0xc53e('0x29')][_0xc53e('0x42')](_0x360af9)[_0xc53e('0x24')](handleEntityNotFound(_0x422088,null))['then'](respondWithResult(_0x422088,null))[_0xc53e('0x43')](handleError(_0x422088,null));};exports[_0xc53e('0x44')]=function(_0x4458c8,_0x15e744){return db[_0xc53e('0x29')][_0xc53e('0x44')](_0x4458c8['body'],{})[_0xc53e('0x24')](respondWithResult(_0x15e744,0xc9))[_0xc53e('0x43')](handleError(_0x15e744,null));};exports[_0xc53e('0x45')]=function(_0x5a6e41,_0x33d45c){if(_0x5a6e41[_0xc53e('0x46')]['id']){delete _0x5a6e41[_0xc53e('0x46')]['id'];}return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x5a6e41[_0xc53e('0x40')]['id']}})[_0xc53e('0x24')](handleEntityNotFound(_0x33d45c,null))[_0xc53e('0x24')](saveUpdates(_0x5a6e41[_0xc53e('0x46')],null))[_0xc53e('0x24')](respondWithResult(_0x33d45c,null))['catch'](handleError(_0x33d45c,null));};exports[_0xc53e('0x47')]=function(_0x17cf13,_0x38520c){return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x17cf13['params']['id']}})['then'](handleEntityNotFound(_0x38520c,null))[_0xc53e('0x24')](removeEntity(_0x38520c,null))['catch'](handleError(_0x38520c,null));};
\ No newline at end of file
+var _0xb242=['nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','params','find','catch','create','body','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','DeskField','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','attributes','intersection','fields','length'];(function(_0x5af97c,_0x24a49f){var _0x3472ae=function(_0x54cdc3){while(--_0x54cdc3){_0x5af97c['push'](_0x5af97c['shift']());}};_0x3472ae(++_0x24a49f);}(_0xb242,0x1f3));var _0x2b24=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0xb242[_0x200aa5];return _0x458200;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2b24('0x0'));var zipdir=require(_0x2b24('0x1'));var jsonpatch=require(_0x2b24('0x2'));var rp=require(_0x2b24('0x3'));var moment=require(_0x2b24('0x4'));var BPromise=require(_0x2b24('0x5'));var Mustache=require(_0x2b24('0x6'));var util=require('util');var path=require('path');var sox=require(_0x2b24('0x7'));var csv=require(_0x2b24('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2b24('0x9'));var _=require(_0x2b24('0xa'));var squel=require(_0x2b24('0xb'));var crypto=require('crypto');var jsforce=require(_0x2b24('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2b24('0x8'));var querystring=require(_0x2b24('0xd'));var Papa=require('papaparse');var Redis=require(_0x2b24('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x2b24('0xf'));var as=require(_0x2b24('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2b24('0x11'));var utils=require('../../config/utils');var config=require(_0x2b24('0x12'));var licenseUtil=require(_0x2b24('0x13'));var db=require(_0x2b24('0x14'))['db'];function respondWithStatusCode(_0x3917e5,_0x57df0e){_0x57df0e=_0x57df0e||0xcc;return function(_0x528d77){if(_0x528d77){return _0x3917e5[_0x2b24('0x15')](_0x57df0e);}return _0x3917e5[_0x2b24('0x16')](_0x57df0e)[_0x2b24('0x17')]();};}function respondWithResult(_0x1e44db,_0x1a99ea){_0x1a99ea=_0x1a99ea||0xc8;return function(_0x5f5b96){if(_0x5f5b96){return _0x1e44db[_0x2b24('0x16')](_0x1a99ea)[_0x2b24('0x18')](_0x5f5b96);}};}function respondWithFilteredResult(_0x56e1e5,_0x38cd5d){return function(_0x6038d2){if(_0x6038d2){var _0x486d9a=typeof _0x38cd5d[_0x2b24('0x19')]===_0x2b24('0x1a')&&typeof _0x38cd5d[_0x2b24('0x1b')]===_0x2b24('0x1a');var _0x5dea21=_0x6038d2[_0x2b24('0x1c')];var _0x2815dc=_0x486d9a?0x0:_0x38cd5d[_0x2b24('0x19')];var _0x4951af=_0x486d9a?_0x6038d2[_0x2b24('0x1c')]:_0x38cd5d[_0x2b24('0x19')]+_0x38cd5d[_0x2b24('0x1b')];var _0x4d8e4f;if(_0x4951af>=_0x5dea21){_0x4951af=_0x5dea21;_0x4d8e4f=0xc8;}else{_0x4d8e4f=0xce;}_0x56e1e5['status'](_0x4d8e4f);return _0x56e1e5[_0x2b24('0x1d')](_0x2b24('0x1e'),_0x2815dc+'-'+_0x4951af+'/'+_0x5dea21)[_0x2b24('0x18')](_0x6038d2);}return null;};}function patchUpdates(_0x357596){return function(_0x5574ef){try{jsonpatch[_0x2b24('0x1f')](_0x5574ef,_0x357596,!![]);}catch(_0x271ca7){return BPromise[_0x2b24('0x20')](_0x271ca7);}return _0x5574ef[_0x2b24('0x21')]();};}function saveUpdates(_0x5df507,_0x504ecf){return function(_0x22c8c5){if(_0x22c8c5){return _0x22c8c5['update'](_0x5df507)['then'](function(_0x4daa9d){return _0x4daa9d;});}return null;};}function removeEntity(_0x5973a1,_0x2acfcf){return function(_0x2c0665){if(_0x2c0665){return _0x2c0665[_0x2b24('0x22')]()[_0x2b24('0x23')](function(){_0x5973a1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d25e4,_0x1fde97){return function(_0x20801c){if(!_0x20801c){_0x4d25e4[_0x2b24('0x15')](0x194);}return _0x20801c;};}function handleError(_0x191318,_0x55fce4){_0x55fce4=_0x55fce4||0x1f4;return function(_0x5c9efb){logger[_0x2b24('0x24')](_0x5c9efb[_0x2b24('0x25')]);if(_0x5c9efb['name']){delete _0x5c9efb['name'];}_0x191318[_0x2b24('0x16')](_0x55fce4)['send'](_0x5c9efb);};}exports['index']=function(_0x2a9a05,_0x476753){var _0x12604d={},_0x3183cd={},_0x4e6991={'count':0x0,'rows':[]};var _0x652aa3=_['map'](db[_0x2b24('0x26')][_0x2b24('0x27')],function(_0x402fa9){return{'name':_0x402fa9[_0x2b24('0x28')],'type':_0x402fa9[_0x2b24('0x29')][_0x2b24('0x2a')]};});_0x3183cd[_0x2b24('0x2b')]=_[_0x2b24('0x2c')](_0x652aa3,_0x2b24('0x2d'));_0x3183cd[_0x2b24('0x2e')]=_[_0x2b24('0x2f')](_0x2a9a05['query']);_0x3183cd[_0x2b24('0x30')]=_['intersection'](_0x3183cd[_0x2b24('0x2b')],_0x3183cd['query']);_0x12604d[_0x2b24('0x31')]=_[_0x2b24('0x32')](_0x3183cd['model'],qs[_0x2b24('0x33')](_0x2a9a05[_0x2b24('0x2e')]['fields']));_0x12604d[_0x2b24('0x31')]=_0x12604d[_0x2b24('0x31')][_0x2b24('0x34')]?_0x12604d['attributes']:_0x3183cd[_0x2b24('0x2b')];if(!_0x2a9a05[_0x2b24('0x2e')]['hasOwnProperty'](_0x2b24('0x35'))){_0x12604d[_0x2b24('0x1b')]=qs['limit'](_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x1b')]);_0x12604d['offset']=qs[_0x2b24('0x19')](_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x19')]);}_0x12604d['order']=qs[_0x2b24('0x36')](_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x36')]);_0x12604d[_0x2b24('0x37')]=qs['filters'](_[_0x2b24('0x38')](_0x2a9a05[_0x2b24('0x2e')],_0x3183cd[_0x2b24('0x30')]),_0x652aa3);if(_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x39')]){_0x12604d[_0x2b24('0x37')]=_['merge'](_0x12604d[_0x2b24('0x37')],{'$or':_[_0x2b24('0x2c')](_0x652aa3,function(_0x181da8){if(_0x181da8[_0x2b24('0x29')]!==_0x2b24('0x3a')){var _0x5e284e={};_0x5e284e[_0x181da8[_0x2b24('0x2d')]]={'$like':'%'+_0x2a9a05[_0x2b24('0x2e')]['filter']+'%'};return _0x5e284e;}})});}_0x12604d=_[_0x2b24('0x3b')]({},_0x12604d,_0x2a9a05[_0x2b24('0x3c')]);var _0x54c3db={'where':_0x12604d[_0x2b24('0x37')]};return db[_0x2b24('0x26')][_0x2b24('0x1c')](_0x54c3db)[_0x2b24('0x23')](function(_0x1ff337){_0x4e6991[_0x2b24('0x1c')]=_0x1ff337;if(_0x2a9a05['query'][_0x2b24('0x3d')]){_0x12604d[_0x2b24('0x3e')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x12604d);})[_0x2b24('0x23')](function(_0x32c29b){_0x4e6991['rows']=_0x32c29b;return _0x4e6991;})['then'](respondWithFilteredResult(_0x476753,_0x12604d))['catch'](handleError(_0x476753,null));};exports['show']=function(_0x2e69be,_0x30e8f8){var _0x4672e6={'raw':!![],'where':{'id':_0x2e69be[_0x2b24('0x3f')]['id']}},_0x2eb00c={};_0x2eb00c[_0x2b24('0x2b')]=_['keys'](db['DeskField']['rawAttributes']);_0x2eb00c[_0x2b24('0x2e')]=_[_0x2b24('0x2f')](_0x2e69be[_0x2b24('0x2e')]);_0x2eb00c['filters']=_[_0x2b24('0x32')](_0x2eb00c['model'],_0x2eb00c[_0x2b24('0x2e')]);_0x4672e6[_0x2b24('0x31')]=_[_0x2b24('0x32')](_0x2eb00c[_0x2b24('0x2b')],qs[_0x2b24('0x33')](_0x2e69be[_0x2b24('0x2e')]['fields']));_0x4672e6[_0x2b24('0x31')]=_0x4672e6[_0x2b24('0x31')][_0x2b24('0x34')]?_0x4672e6['attributes']:_0x2eb00c[_0x2b24('0x2b')];if(_0x2e69be['query'][_0x2b24('0x3d')]){_0x4672e6['include']=[{'all':!![]}];}_0x4672e6=_[_0x2b24('0x3b')]({},_0x4672e6,_0x2e69be[_0x2b24('0x3c')]);return db[_0x2b24('0x26')][_0x2b24('0x40')](_0x4672e6)[_0x2b24('0x23')](handleEntityNotFound(_0x30e8f8,null))[_0x2b24('0x23')](respondWithResult(_0x30e8f8,null))[_0x2b24('0x41')](handleError(_0x30e8f8,null));};exports[_0x2b24('0x42')]=function(_0x5677b6,_0x305f2b){return db[_0x2b24('0x26')][_0x2b24('0x42')](_0x5677b6[_0x2b24('0x43')],{})['then'](respondWithResult(_0x305f2b,0xc9))[_0x2b24('0x41')](handleError(_0x305f2b,null));};exports[_0x2b24('0x44')]=function(_0xb8b044,_0x33ac4a){if(_0xb8b044[_0x2b24('0x43')]['id']){delete _0xb8b044[_0x2b24('0x43')]['id'];}return db['DeskField'][_0x2b24('0x40')]({'where':{'id':_0xb8b044[_0x2b24('0x3f')]['id']}})['then'](handleEntityNotFound(_0x33ac4a,null))[_0x2b24('0x23')](saveUpdates(_0xb8b044['body'],null))[_0x2b24('0x23')](respondWithResult(_0x33ac4a,null))[_0x2b24('0x41')](handleError(_0x33ac4a,null));};exports[_0x2b24('0x22')]=function(_0x24cb12,_0x1000c8){return db[_0x2b24('0x26')][_0x2b24('0x40')]({'where':{'id':_0x24cb12['params']['id']}})[_0x2b24('0x23')](handleEntityNotFound(_0x1000c8,null))[_0x2b24('0x23')](removeEntity(_0x1000c8,null))[_0x2b24('0x41')](handleError(_0x1000c8,null));};
\ No newline at end of file
index 545f244..5661130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa726=['../../config/logger','api','request-promise','path','rimraf','exports','define','DeskField','desk_unique_index','idField','FieldId'];(function(_0x2a3e66,_0x1e004c){var _0x5c032e=function(_0xa39199){while(--_0xa39199){_0x2a3e66['push'](_0x2a3e66['shift']());}};_0x5c032e(++_0x1e004c);}(_0xa726,0x11e));var _0x6a72=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0xa726[_0x42f009];return _0x22a1e0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6a72('0x0'))(_0x6a72('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6a72('0x2'));var fs=require('fs');var path=require(_0x6a72('0x3'));var rimraf=require(_0x6a72('0x4'));var config=require('../../config/environment');var attributes=require('./intDeskField.attributes');module[_0x6a72('0x5')]=function(_0x249ce5,_0x1db765){return _0x249ce5[_0x6a72('0x6')](_0x6a72('0x7'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x6a72('0x8'),'fields':[_0x6a72('0x9'),_0x6a72('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x605e=['path','exports','DeskField','int_desk_fields','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3a03be,_0x597b9a){var _0xd572b8=function(_0xdd1ff9){while(--_0xdd1ff9){_0x3a03be['push'](_0x3a03be['shift']());}};_0xd572b8(++_0x597b9a);}(_0x605e,0x149));var _0xe605=function(_0x557bbe,_0x554719){_0x557bbe=_0x557bbe-0x0;var _0x41b497=_0x605e[_0x557bbe];return _0x41b497;};'use strict';var _=require(_0xe605('0x0'));var util=require(_0xe605('0x1'));var logger=require(_0xe605('0x2'))(_0xe605('0x3'));var moment=require(_0xe605('0x4'));var BPromise=require(_0xe605('0x5'));var rp=require(_0xe605('0x6'));var fs=require('fs');var path=require(_0xe605('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intDeskField.attributes');module[_0xe605('0x8')]=function(_0x5d281d,_0x3f7c9c){return _0x5d281d['define'](_0xe605('0x9'),attributes,{'tableName':_0xe605('0xa'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0xe605('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0d097cc..83ee7ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e73=['catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','error','code','DeskField,\x20%s,\x20%s','message','result'];(function(_0x2c28f5,_0x2f7e56){var _0x137e10=function(_0x255011){while(--_0x255011){_0x2c28f5['push'](_0x2c28f5['shift']());}};_0x137e10(++_0x2f7e56);}(_0x4e73,0x65));var _0x34e7=function(_0x398586,_0x291df7){_0x398586=_0x398586-0x0;var _0x55cb6a=_0x4e73[_0x398586];return _0x55cb6a;};'use strict';var _=require(_0x34e7('0x0'));var util=require(_0x34e7('0x1'));var moment=require(_0x34e7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34e7('0x3'));var db=require(_0x34e7('0x4'))['db'];var utils=require(_0x34e7('0x5'));var logger=require('../../config/logger')(_0x34e7('0x6'));var config=require(_0x34e7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x34e7('0x8')][_0x34e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x314a09,_0x3d1d42,_0x154df6){return new BPromise(function(_0xee9e5e,_0xa06c85){return client[_0x34e7('0xa')](_0x314a09,_0x154df6)[_0x34e7('0xb')](function(_0x4885fb){logger['info']('DeskField,\x20%s,\x20%s',_0x3d1d42,_0x34e7('0xc'));logger[_0x34e7('0xd')]('DeskField,\x20%s,\x20%s,\x20%s',_0x3d1d42,_0x34e7('0xc'),JSON['stringify'](_0x4885fb));if(_0x4885fb[_0x34e7('0xe')]){if(_0x4885fb['error'][_0x34e7('0xf')]===0x1f4){logger['error'](_0x34e7('0x10'),_0x3d1d42,_0x4885fb[_0x34e7('0xe')]['message']);return _0xa06c85(_0x4885fb[_0x34e7('0xe')][_0x34e7('0x11')]);}logger[_0x34e7('0xe')](_0x34e7('0x10'),_0x3d1d42,_0x4885fb[_0x34e7('0xe')]['message']);return _0xee9e5e(_0x4885fb[_0x34e7('0xe')][_0x34e7('0x11')]);}else{logger['info'](_0x34e7('0x10'),_0x3d1d42,'request\x20sent');_0xee9e5e(_0x4885fb[_0x34e7('0x12')]['message']);}})[_0x34e7('0x13')](function(_0x340c4c){logger[_0x34e7('0xe')]('DeskField,\x20%s,\x20%s',_0x3d1d42,_0x340c4c);_0xa06c85(_0x340c4c);});});}
\ No newline at end of file
+var _0x2ce0=['request\x20sent','stringify','error','code','message','DeskField,\x20%s,\x20%s','result','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','DeskField,\x20%s,\x20%s,\x20%s'];(function(_0x168777,_0x4ccd71){var _0x48a3f1=function(_0x3ec3e9){while(--_0x3ec3e9){_0x168777['push'](_0x168777['shift']());}};_0x48a3f1(++_0x4ccd71);}(_0x2ce0,0x7a));var _0x02ce=function(_0x2d3511,_0x28a797){_0x2d3511=_0x2d3511-0x0;var _0x55901e=_0x2ce0[_0x2d3511];return _0x55901e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x02ce('0x0'));var BPromise=require('bluebird');var rs=require(_0x02ce('0x1'));var fs=require('fs');var Redis=require(_0x02ce('0x2'));var db=require(_0x02ce('0x3'))['db'];var utils=require(_0x02ce('0x4'));var logger=require(_0x02ce('0x5'))(_0x02ce('0x6'));var config=require(_0x02ce('0x7'));var jayson=require(_0x02ce('0x8'));var client=jayson[_0x02ce('0x9')][_0x02ce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x149aea,_0x4ff11a,_0x2ec218){return new BPromise(function(_0x341c40,_0x1c38a7){return client[_0x02ce('0xb')](_0x149aea,_0x2ec218)[_0x02ce('0xc')](function(_0x1e09af){logger[_0x02ce('0xd')]('DeskField,\x20%s,\x20%s',_0x4ff11a,'request\x20sent');logger[_0x02ce('0xe')](_0x02ce('0xf'),_0x4ff11a,_0x02ce('0x10'),JSON[_0x02ce('0x11')](_0x1e09af));if(_0x1e09af[_0x02ce('0x12')]){if(_0x1e09af[_0x02ce('0x12')][_0x02ce('0x13')]===0x1f4){logger[_0x02ce('0x12')]('DeskField,\x20%s,\x20%s',_0x4ff11a,_0x1e09af['error'][_0x02ce('0x14')]);return _0x1c38a7(_0x1e09af[_0x02ce('0x12')][_0x02ce('0x14')]);}logger['error'](_0x02ce('0x15'),_0x4ff11a,_0x1e09af[_0x02ce('0x12')][_0x02ce('0x14')]);return _0x341c40(_0x1e09af[_0x02ce('0x12')][_0x02ce('0x14')]);}else{logger['info'](_0x02ce('0x15'),_0x4ff11a,'request\x20sent');_0x341c40(_0x1e09af[_0x02ce('0x16')][_0x02ce('0x14')]);}})['catch'](function(_0x35e3af){logger[_0x02ce('0x12')](_0x02ce('0x15'),_0x4ff11a,_0x35e3af);_0x1c38a7(_0x35e3af);});});}
\ No newline at end of file
index 4a9459a..8abb169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a81=['../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','delete','destroy','util','path','connect-timeout','express'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8a81,0xee));var _0x18a8=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x8a81[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require('multer');var util=require(_0x18a8('0x0'));var path=require(_0x18a8('0x1'));var timeout=require(_0x18a8('0x2'));var express=require(_0x18a8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x18a8('0x4'));var interaction=require(_0x18a8('0x5'));var config=require('../../config/environment');var controller=require(_0x18a8('0x6'));router[_0x18a8('0x7')]('/',auth[_0x18a8('0x8')](),controller[_0x18a8('0x9')]);router[_0x18a8('0x7')](_0x18a8('0xa'),auth[_0x18a8('0x8')](),controller[_0x18a8('0xb')]);router[_0x18a8('0x7')](_0x18a8('0xc'),auth[_0x18a8('0x8')](),controller[_0x18a8('0xd')]);router[_0x18a8('0x7')](_0x18a8('0xe'),auth['isAuthenticated'](),controller[_0x18a8('0xf')]);router[_0x18a8('0x10')]('/',auth[_0x18a8('0x8')](),controller[_0x18a8('0x11')]);router['post'](_0x18a8('0xc'),auth[_0x18a8('0x8')](),controller[_0x18a8('0x12')]);router[_0x18a8('0x13')](_0x18a8('0xa'),auth[_0x18a8('0x8')](),controller['update']);router[_0x18a8('0x14')](_0x18a8('0xa'),auth[_0x18a8('0x8')](),controller[_0x18a8('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xa49e=['/:id','update','destroy','exports','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','index','getConfigurations','getFields','post','addConfiguration','put'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0xa49e,0xa6));var _0xea49=function(_0x2dd752,_0x59b4fc){_0x2dd752=_0x2dd752-0x0;var _0x297823=_0xa49e[_0x2dd752];return _0x297823;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xea49('0x0'));var router=express[_0xea49('0x1')]();var fs_extra=require(_0xea49('0x2'));var auth=require(_0xea49('0x3'));var interaction=require(_0xea49('0x4'));var config=require('../../config/environment');var controller=require(_0xea49('0x5'));router[_0xea49('0x6')]('/',auth[_0xea49('0x7')](),controller[_0xea49('0x8')]);router[_0xea49('0x6')]('/:id',auth[_0xea49('0x7')](),controller['show']);router[_0xea49('0x6')]('/:id/configurations',auth[_0xea49('0x7')](),controller[_0xea49('0x9')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0xea49('0xa')]);router[_0xea49('0xb')]('/',auth[_0xea49('0x7')](),controller['create']);router[_0xea49('0xb')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xea49('0xc')]);router[_0xea49('0xd')](_0xea49('0xe'),auth['isAuthenticated'](),controller[_0xea49('0xf')]);router['delete'](_0xea49('0xe'),auth[_0xea49('0x7')](),controller[_0xea49('0x10')]);module[_0xea49('0x11')]=router;
\ No newline at end of file
index bb1f885..baf6830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc397=['exports','STRING'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc397,0x18a));var _0x7c39=function(_0x46540d,_0x38401c){_0x46540d=_0x46540d-0x0;var _0xdd0924=_0xc397[_0x46540d];return _0xdd0924;};'use strict';var Sequelize=require('sequelize');module[_0x7c39('0x0')]={'name':{'type':Sequelize[_0x7c39('0x1')]},'username':{'type':Sequelize[_0x7c39('0x1')]},'password':{'type':Sequelize[_0x7c39('0x1')]},'remoteUri':{'type':Sequelize[_0x7c39('0x1')]},'tenantId':{'type':Sequelize[_0x7c39('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x7c39('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9c01=['exports','STRING','sequelize'];(function(_0x5d9bc7,_0x37c16f){var _0x572511=function(_0x7d27cd){while(--_0x7d27cd){_0x5d9bc7['push'](_0x5d9bc7['shift']());}};_0x572511(++_0x37c16f);}(_0x9c01,0x143));var _0x19c0=function(_0x4e6e89,_0x397119){_0x4e6e89=_0x4e6e89-0x0;var _0x39ae96=_0x9c01[_0x4e6e89];return _0x39ae96;};'use strict';var Sequelize=require(_0x19c0('0x0'));module[_0x19c0('0x1')]={'name':{'type':Sequelize[_0x19c0('0x2')]},'username':{'type':Sequelize[_0x19c0('0x2')]},'password':{'type':Sequelize[_0x19c0('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x19c0('0x2')]},'clientId':{'type':Sequelize[_0x19c0('0x2')]},'clientSecret':{'type':Sequelize[_0x19c0('0x2')]},'serverUrl':{'type':Sequelize[_0x19c0('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x19c0('0x2')]}};
\ No newline at end of file
index 03c25cf..ece7eb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacfe=['POST','https://login.microsoftonline.com/','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','@odata.type','PicklistAttributeMetadata','forEach','BooleanAttributeMetadata','push','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','Wrong\x20credentials','statusCode','GET',')/Attributes(','Label','UserLocalizedLabel','Value','DisplayName','EntityDefinitions(','OptionSet','TrueOption','true','FalseOption','false','?$select=DisplayName,LogicalName','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','status','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','include','options','catch','create','body','find','getConfigurations','findOne','Dynamics365Configuration','order','pick','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','type','getDescriptions','Descriptions','getFields','ticketType','incident','Incident','PhoneCall','title','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','escalatedon','exchangerate','firstresponsebykpiidname','followupby','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','slainvokedidname','socialprofileidname','ticketnumber','timezoneruleversionnumber','versionnumber','concat','username','password','remoteUri','tenantId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0xacfe,0xfd));var _0xeacf=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xacfe[_0x3ff085];return _0x2b68c3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xeacf('0x0'));var jsonpatch=require(_0xeacf('0x1'));var rp=require(_0xeacf('0x2'));var moment=require(_0xeacf('0x3'));var BPromise=require(_0xeacf('0x4'));var Mustache=require(_0xeacf('0x5'));var util=require(_0xeacf('0x6'));var path=require(_0xeacf('0x7'));var sox=require(_0xeacf('0x8'));var csv=require(_0xeacf('0x9'));var ejs=require(_0xeacf('0xa'));var fs=require('fs');var fs_extra=require(_0xeacf('0xb'));var _=require(_0xeacf('0xc'));var squel=require('squel');var crypto=require(_0xeacf('0xd'));var jsforce=require(_0xeacf('0xe'));var deskjs=require(_0xeacf('0xf'));var toCsv=require(_0xeacf('0x9'));var querystring=require('querystring');var Papa=require(_0xeacf('0x10'));var Redis=require('ioredis');var authService=require(_0xeacf('0x11'));var qs=require(_0xeacf('0x12'));var as=require(_0xeacf('0x13'));var hardwareService=require(_0xeacf('0x14'));var logger=require(_0xeacf('0x15'))(_0xeacf('0x16'));var utils=require(_0xeacf('0x17'));var config=require(_0xeacf('0x18'));var licenseUtil=require(_0xeacf('0x19'));var db=require(_0xeacf('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x20f851,_0x44f7b1){_0x44f7b1=_0x44f7b1||0xcc;return function(_0x30b57c){if(_0x30b57c){return _0x20f851[_0xeacf('0x1b')](_0x44f7b1);}return _0x20f851['status'](_0x44f7b1)[_0xeacf('0x1c')]();};}function respondWithResult(_0xe8eab2,_0x3ce3ef){_0x3ce3ef=_0x3ce3ef||0xc8;return function(_0x57d0fb){if(_0x57d0fb){return _0xe8eab2['status'](_0x3ce3ef)[_0xeacf('0x1d')](_0x57d0fb);}};}function respondWithFilteredResult(_0xdef37f,_0x51619b){return function(_0x31bc9a){if(_0x31bc9a){var _0x5f3326=typeof _0x51619b[_0xeacf('0x1e')]===_0xeacf('0x1f')&&typeof _0x51619b['limit']===_0xeacf('0x1f');var _0x5382f3=_0x31bc9a[_0xeacf('0x20')];var _0xe87314=_0x5f3326?0x0:_0x51619b[_0xeacf('0x1e')];var _0x118932=_0x5f3326?_0x31bc9a['count']:_0x51619b[_0xeacf('0x1e')]+_0x51619b['limit'];var _0xabd595;if(_0x118932>=_0x5382f3){_0x118932=_0x5382f3;_0xabd595=0xc8;}else{_0xabd595=0xce;}_0xdef37f[_0xeacf('0x21')](_0xabd595);return _0xdef37f[_0xeacf('0x22')]('Content-Range',_0xe87314+'-'+_0x118932+'/'+_0x5382f3)[_0xeacf('0x1d')](_0x31bc9a);}return null;};}function patchUpdates(_0x19f3bc){return function(_0x3c1ddc){try{jsonpatch[_0xeacf('0x23')](_0x3c1ddc,_0x19f3bc,!![]);}catch(_0x144b94){return BPromise[_0xeacf('0x24')](_0x144b94);}return _0x3c1ddc[_0xeacf('0x25')]();};}function saveUpdates(_0x273d57,_0x6dc216){return function(_0x4f7e6d){if(_0x4f7e6d){return _0x4f7e6d[_0xeacf('0x26')](_0x273d57)[_0xeacf('0x27')](function(_0x32ed3b){return _0x32ed3b;});}return null;};}function removeEntity(_0x35338b,_0x339b83){return function(_0x356df7){if(_0x356df7){return _0x356df7[_0xeacf('0x28')]()['then'](function(){_0x35338b['status'](0xcc)[_0xeacf('0x1c')]();});}};}function handleEntityNotFound(_0x259bba,_0x5a13c8){return function(_0xbc7515){if(!_0xbc7515){_0x259bba[_0xeacf('0x1b')](0x194);}return _0xbc7515;};}function handleError(_0x25bd08,_0x1e368a){_0x1e368a=_0x1e368a||0x1f4;return function(_0x4e7e4f){logger[_0xeacf('0x29')](_0x4e7e4f[_0xeacf('0x2a')]);if(_0x4e7e4f['name']){delete _0x4e7e4f[_0xeacf('0x2b')];}_0x25bd08[_0xeacf('0x21')](_0x1e368a)[_0xeacf('0x2c')](_0x4e7e4f);};}exports[_0xeacf('0x2d')]=function(_0x518b9f,_0x4c7eb1){var _0x1d375a={},_0x4f6c25={},_0x5e80f9={'count':0x0,'rows':[]};var _0x533279=_['map'](db[_0xeacf('0x2e')][_0xeacf('0x2f')],function(_0xfdb744){return{'name':_0xfdb744[_0xeacf('0x30')],'type':_0xfdb744['type'][_0xeacf('0x31')]};});_0x4f6c25[_0xeacf('0x32')]=_[_0xeacf('0x33')](_0x533279,_0xeacf('0x2b'));_0x4f6c25[_0xeacf('0x34')]=_[_0xeacf('0x35')](_0x518b9f['query']);_0x4f6c25[_0xeacf('0x36')]=_[_0xeacf('0x37')](_0x4f6c25['model'],_0x4f6c25['query']);_0x1d375a[_0xeacf('0x38')]=_[_0xeacf('0x37')](_0x4f6c25['model'],qs[_0xeacf('0x39')](_0x518b9f[_0xeacf('0x34')][_0xeacf('0x39')]));_0x1d375a['attributes']=_0x1d375a[_0xeacf('0x38')][_0xeacf('0x3a')]?_0x1d375a[_0xeacf('0x38')]:_0x4f6c25[_0xeacf('0x32')];if(!_0x518b9f[_0xeacf('0x34')][_0xeacf('0x3b')]('nolimit')){_0x1d375a[_0xeacf('0x3c')]=qs[_0xeacf('0x3c')](_0x518b9f['query'][_0xeacf('0x3c')]);_0x1d375a[_0xeacf('0x1e')]=qs['offset'](_0x518b9f['query']['offset']);}_0x1d375a['order']=qs[_0xeacf('0x3d')](_0x518b9f['query'][_0xeacf('0x3d')]);_0x1d375a[_0xeacf('0x3e')]=qs[_0xeacf('0x36')](_['pick'](_0x518b9f[_0xeacf('0x34')],_0x4f6c25[_0xeacf('0x36')]),_0x533279);if(_0x518b9f[_0xeacf('0x34')][_0xeacf('0x3f')]){_0x1d375a[_0xeacf('0x3e')]=_[_0xeacf('0x40')](_0x1d375a[_0xeacf('0x3e')],{'$or':_['map'](_0x533279,function(_0xe02507){if(_0xe02507['type']!==_0xeacf('0x41')){var _0x3de67a={};_0x3de67a[_0xe02507[_0xeacf('0x2b')]]={'$like':'%'+_0x518b9f['query'][_0xeacf('0x3f')]+'%'};return _0x3de67a;}})});}_0x1d375a=_['merge']({},_0x1d375a,_0x518b9f['options']);var _0x214bc5={'where':_0x1d375a['where']};return db['Dynamics365Account'][_0xeacf('0x20')](_0x214bc5)[_0xeacf('0x27')](function(_0x11aea6){_0x5e80f9[_0xeacf('0x20')]=_0x11aea6;if(_0x518b9f[_0xeacf('0x34')][_0xeacf('0x42')]){_0x1d375a['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0xeacf('0x43')](_0x1d375a);})['then'](function(_0x4c3afc){_0x5e80f9[_0xeacf('0x44')]=_0x4c3afc;return _0x5e80f9;})[_0xeacf('0x27')](respondWithFilteredResult(_0x4c7eb1,_0x1d375a))['catch'](handleError(_0x4c7eb1,null));};exports[_0xeacf('0x45')]=function(_0x2fbfa5,_0x20f52c){var _0x4ed82f={'raw':![],'where':{'id':_0x2fbfa5[_0xeacf('0x46')]['id']}},_0x41d104={};_0x41d104[_0xeacf('0x32')]=_[_0xeacf('0x35')](db[_0xeacf('0x2e')][_0xeacf('0x2f')]);_0x41d104[_0xeacf('0x34')]=_[_0xeacf('0x35')](_0x2fbfa5[_0xeacf('0x34')]);_0x41d104[_0xeacf('0x36')]=_[_0xeacf('0x37')](_0x41d104[_0xeacf('0x32')],_0x41d104['query']);_0x4ed82f[_0xeacf('0x38')]=_[_0xeacf('0x37')](_0x41d104[_0xeacf('0x32')],qs['fields'](_0x2fbfa5[_0xeacf('0x34')]['fields']));_0x4ed82f[_0xeacf('0x38')]=_0x4ed82f[_0xeacf('0x38')][_0xeacf('0x3a')]?_0x4ed82f[_0xeacf('0x38')]:_0x41d104['model'];if(_0x2fbfa5[_0xeacf('0x34')]['includeAll']){_0x4ed82f[_0xeacf('0x47')]=[{'all':!![]}];}_0x4ed82f=_[_0xeacf('0x40')]({},_0x4ed82f,_0x2fbfa5[_0xeacf('0x48')]);return db[_0xeacf('0x2e')]['find'](_0x4ed82f)[_0xeacf('0x27')](handleEntityNotFound(_0x20f52c,null))[_0xeacf('0x27')](respondWithResult(_0x20f52c,null))[_0xeacf('0x49')](handleError(_0x20f52c,null));};exports['create']=function(_0x36b8f2,_0x2af124){return db['Dynamics365Account'][_0xeacf('0x4a')](_0x36b8f2[_0xeacf('0x4b')],{})[_0xeacf('0x27')](respondWithResult(_0x2af124,0xc9))[_0xeacf('0x49')](handleError(_0x2af124,null));};exports[_0xeacf('0x26')]=function(_0x5f4bbe,_0x50652f){if(_0x5f4bbe[_0xeacf('0x4b')]['id']){delete _0x5f4bbe[_0xeacf('0x4b')]['id'];}return db[_0xeacf('0x2e')][_0xeacf('0x4c')]({'where':{'id':_0x5f4bbe['params']['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x50652f,null))[_0xeacf('0x27')](saveUpdates(_0x5f4bbe['body'],null))['then'](respondWithResult(_0x50652f,null))[_0xeacf('0x49')](handleError(_0x50652f,null));};exports['destroy']=function(_0x3f46c3,_0x174672){return db['Dynamics365Account'][_0xeacf('0x4c')]({'where':{'id':_0x3f46c3[_0xeacf('0x46')]['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x174672,null))[_0xeacf('0x27')](removeEntity(_0x174672,null))['catch'](handleError(_0x174672,null));};exports[_0xeacf('0x4d')]=function(_0x1cbf66,_0x1483e4,_0x3d7a33){var _0x5d8dc0={};var _0x3d007e={};var _0x115ea8;var _0x4e6108;return db[_0xeacf('0x2e')][_0xeacf('0x4e')]({'where':{'id':_0x1cbf66[_0xeacf('0x46')]['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x1483e4,null))[_0xeacf('0x27')](function(_0x40e4c8){if(_0x40e4c8){_0x115ea8=_0x40e4c8;_0x3d007e[_0xeacf('0x32')]=_[_0xeacf('0x35')](db[_0xeacf('0x4f')]['rawAttributes']);_0x3d007e[_0xeacf('0x34')]=_[_0xeacf('0x35')](_0x1cbf66['query']);_0x3d007e[_0xeacf('0x36')]=_[_0xeacf('0x37')](_0x3d007e[_0xeacf('0x32')],_0x3d007e[_0xeacf('0x34')]);_0x5d8dc0[_0xeacf('0x38')]=_['intersection'](_0x3d007e[_0xeacf('0x32')],qs[_0xeacf('0x39')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x39')]));_0x5d8dc0[_0xeacf('0x38')]=_0x5d8dc0['attributes'][_0xeacf('0x3a')]?_0x5d8dc0[_0xeacf('0x38')]:_0x3d007e[_0xeacf('0x32')];_0x5d8dc0[_0xeacf('0x50')]=qs[_0xeacf('0x3d')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x3d')]);_0x5d8dc0[_0xeacf('0x3e')]=qs['filters'](_[_0xeacf('0x51')](_0x1cbf66[_0xeacf('0x34')],_0x3d007e[_0xeacf('0x36')]));if(_0x1cbf66['query'][_0xeacf('0x3f')]){_0x5d8dc0[_0xeacf('0x3e')]=_[_0xeacf('0x40')](_0x5d8dc0['where'],{'$or':_[_0xeacf('0x33')](_0x5d8dc0[_0xeacf('0x38')],function(_0x40b95b){var _0x3c582a={};_0x3c582a[_0x40b95b]={'$like':'%'+_0x1cbf66[_0xeacf('0x34')]['filter']+'%'};return _0x3c582a;})});}_0x5d8dc0=_[_0xeacf('0x40')]({},_0x5d8dc0,_0x1cbf66[_0xeacf('0x48')]);return _0x115ea8[_0xeacf('0x4d')](_0x5d8dc0);}})[_0xeacf('0x27')](function(_0x9284c){if(_0x9284c){_0x4e6108=_0x9284c[_0xeacf('0x3a')];if(!_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x3b')](_0xeacf('0x52'))){_0x5d8dc0['limit']=qs[_0xeacf('0x3c')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x3c')]);_0x5d8dc0[_0xeacf('0x1e')]=qs[_0xeacf('0x1e')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x1e')]);}return _0x115ea8[_0xeacf('0x4d')](_0x5d8dc0);}})[_0xeacf('0x27')](function(_0x13e9c4){if(_0x13e9c4){return _0x13e9c4?{'count':_0x4e6108,'rows':_0x13e9c4}:null;}})[_0xeacf('0x27')](respondWithResult(_0x1483e4,null))[_0xeacf('0x49')](handleError(_0x1483e4,null));};exports[_0xeacf('0x53')]=function(_0xa7c8e2,_0x22c8c8,_0x40e510){if(_0xa7c8e2[_0xeacf('0x4b')]['id']){delete _0xa7c8e2[_0xeacf('0x4b')]['id'];}return db[_0xeacf('0x2e')][_0xeacf('0x4e')]({'where':{'id':_0xa7c8e2[_0xeacf('0x46')]['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x22c8c8,null))[_0xeacf('0x27')](function(_0x36780e){if(_0x36780e){_0xa7c8e2[_0xeacf('0x4b')][_0xeacf('0x54')]=_0x36780e['id'];_0xa7c8e2[_0xeacf('0x4b')][_0xeacf('0x55')]=integrations[_0xeacf('0x56')](_0xa7c8e2[_0xeacf('0x4b')][_0xeacf('0x57')],_0xa7c8e2['body'][_0xeacf('0x58')]);_0xa7c8e2[_0xeacf('0x4b')]['Descriptions']=integrations[_0xeacf('0x59')](_0xa7c8e2[_0xeacf('0x4b')]['channel'],_0xa7c8e2[_0xeacf('0x4b')]['type']);return db[_0xeacf('0x4f')][_0xeacf('0x4a')](_0xa7c8e2[_0xeacf('0x4b')],{'include':[{'model':db['Dynamics365Field'],'as':'Subjects'},{'model':db['Dynamics365Field'],'as':_0xeacf('0x5a')}]});}return null;})[_0xeacf('0x27')](respondWithResult(_0x22c8c8,null))[_0xeacf('0x49')](handleError(_0x22c8c8,null));};exports[_0xeacf('0x5b')]=function(_0x49489d,_0x26db58,_0x3e1897){var _0x3b4a83=_0x49489d[_0xeacf('0x34')][_0xeacf('0x5c')];var _0x4a3983=_0x3b4a83===_0xeacf('0x5d')?_0xeacf('0x5e'):_0xeacf('0x5f');var _0x490e27='';var _0x196cf9='';var _0x50641b='';var _0x448b6='';var _0x3598c9='';var _0x460a95='';var _0x47a0be='';var _0x588af0='';var _0x444db8=[_0xeacf('0x60'),'description','customerid',_0xeacf('0x61'),_0xeacf('0x62'),_0xeacf('0x63'),_0xeacf('0x64'),_0xeacf('0x65'),_0xeacf('0x66'),_0xeacf('0x67')];var _0x59067c=[_0xeacf('0x68'),_0xeacf('0x69'),_0xeacf('0x6a'),_0xeacf('0x6b'),_0xeacf('0x6c'),'contactidyominame',_0xeacf('0x6d'),_0xeacf('0x6e'),_0xeacf('0x6f'),_0xeacf('0x70'),_0xeacf('0x71'),_0xeacf('0x72'),_0xeacf('0x73'),_0xeacf('0x74'),_0xeacf('0x75'),_0xeacf('0x76'),_0xeacf('0x77'),'customeridyominame',_0xeacf('0x78'),_0xeacf('0x79'),_0xeacf('0x7a'),'entityimage_url',_0xeacf('0x7b'),_0xeacf('0x7c'),_0xeacf('0x7d'),_0xeacf('0x7e'),'importsequencenumber','influencescore',_0xeacf('0x7f'),_0xeacf('0x80'),_0xeacf('0x81'),_0xeacf('0x82'),_0xeacf('0x83'),_0xeacf('0x84'),_0xeacf('0x85'),'modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0xeacf('0x86'),_0xeacf('0x87'),'numberofchildincidents',_0xeacf('0x88'),_0xeacf('0x89'),_0xeacf('0x8a'),'owneridtype',_0xeacf('0x8b'),_0xeacf('0x8c'),'primarycontactidname',_0xeacf('0x8d'),_0xeacf('0x8e'),_0xeacf('0x8f'),_0xeacf('0x90'),_0xeacf('0x91'),_0xeacf('0x92'),_0xeacf('0x93'),_0xeacf('0x94'),'responsiblecontactidyominame','sentimentvalue',_0xeacf('0x95'),'slaname',_0xeacf('0x96'),'statecode','statuscode','subjectidname',_0xeacf('0x97'),_0xeacf('0x98'),'transactioncurrencyidname','traversedpath','utcconversiontimezonecode',_0xeacf('0x99')];var _0x17fab9=_0x444db8[_0xeacf('0x9a')](_0x59067c);return db['Dynamics365Account'][_0xeacf('0x4e')]({'where':{'id':_0x49489d[_0xeacf('0x46')]['id']},'attributes':['id',_0xeacf('0x9b'),_0xeacf('0x9c'),_0xeacf('0x9d'),_0xeacf('0x9e'),'clientId',_0xeacf('0x9f')]})[_0xeacf('0x27')](handleEntityNotFound(_0x26db58,null))['then'](function(_0x190380){if(_0x190380){_0x588af0=_0x190380[_0xeacf('0x9d')];var _0x129dbf=_0x588af0[_0xeacf('0xa0')](-0x1);if(_0x129dbf==='/'){_0x588af0=_0x588af0[_0xeacf('0xa1')](0x0,_0x588af0[_0xeacf('0xa2')](_0x129dbf));}_0x47a0be=util[_0xeacf('0xa3')](_0xeacf('0xa4'),_0x588af0);var _0x406ab8={'method':_0xeacf('0xa5'),'uri':_0xeacf('0xa6')+_0x190380[_0xeacf('0x9e')]+'/oauth2/token','form':{'client_id':_0x190380['clientId'],'resource':_0x588af0,'username':_0x190380[_0xeacf('0x9b')],'password':_0x190380[_0xeacf('0x9c')],'grant_type':_0xeacf('0x9c'),'client_secret':_0x190380[_0xeacf('0x9f')]},'json':!![]};return rp(_0x406ab8);}})[_0xeacf('0x27')](function(_0x451c21){_0x460a95=_0x451c21[_0xeacf('0xa7')];var _0xb68a58={'method':'GET','uri':encodeURI(_0x47a0be+_0xeacf('0xa8')+_0x4a3983+'\x27'),'headers':{'Authorization':_0xeacf('0xa9')+_0x460a95,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0xb68a58);})[_0xeacf('0x27')](function(_0xb4dc1f){var _0x1ad9f3=_0xb4dc1f[_0xeacf('0xab')][0x0];var _0xc5b5b9=_0x1ad9f3[_0xeacf('0xac')];var _0x41731f={'method':'GET','uri':_0x47a0be+'EntityDefinitions('+_0xc5b5b9+_0xeacf('0xad'),'headers':{'Authorization':_0xeacf('0xa9')+_0x460a95,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x41731f);})[_0xeacf('0x27')](function(_0xea253d){_0x490e27=_0xea253d;_0x196cf9=_0x490e27[_0xeacf('0xae')];_0x196cf9=_[_0xeacf('0xaf')](_0x196cf9,function(_0x55f85c){return!_0x17fab9[_0xeacf('0xb0')](_0x55f85c[_0xeacf('0xb1')]);});var _0x102b2a=[];var _0x1c626c=[];_0x196cf9['forEach'](function(_0x36ab03){if(_0x36ab03[_0xeacf('0xb2')]){var _0x2f1489=_0x36ab03['@odata.type'][_0xeacf('0xa1')](_0x36ab03[_0xeacf('0xb2')][_0xeacf('0xa2')]('.')+0x1);if(_0x2f1489===_0xeacf('0xb3')){_0x102b2a['push'](getSelectList(_0x47a0be,_0x3b4a83,_0x1c626c,_0x490e27['MetadataId'],_0x36ab03[_0xeacf('0xac')],_0x460a95));}}});return Promise['all'](_0x102b2a);})[_0xeacf('0x27')](function(_0x3178d6){_0x50641b=_0x3178d6[0x0];var _0x26dcba=[];var _0x487a9d=[];_0x196cf9[_0xeacf('0xb4')](function(_0x2ebb92){if(!_['isNil'](_0x2ebb92[_0xeacf('0xb2')])){var _0x285573=_0x2ebb92[_0xeacf('0xb2')][_0xeacf('0xa1')](_0x2ebb92[_0xeacf('0xb2')]['lastIndexOf']('.')+0x1);if(_0x285573===_0xeacf('0xb5')){_0x26dcba[_0xeacf('0xb6')](getBooleanList(_0x47a0be,_0x3b4a83,_0x487a9d,_0x490e27['MetadataId'],_0x2ebb92[_0xeacf('0xac')],_0x460a95));}}});return Promise[_0xeacf('0xb7')](_0x26dcba);})[_0xeacf('0x27')](function(_0x204b1d){_0x448b6=_0x204b1d[0x0];var _0x181fb5=[];var _0x5f0e89=[];_0x196cf9['forEach'](function(_0x1e4c7f){if(_0x1e4c7f[_0xeacf('0xb2')]){var _0x459c49=_0x1e4c7f['@odata.type']['substring'](_0x1e4c7f[_0xeacf('0xb2')]['lastIndexOf']('.')+0x1);if(_0x459c49===_0xeacf('0xb8')||_0x459c49===_0xeacf('0xb9')||_0x459c49===_0xeacf('0xba')||_0x459c49===_0xeacf('0xbb')||_0x459c49===_0xeacf('0xbc')||_0x459c49===_0xeacf('0xbd')||_0x459c49===_0xeacf('0xbe')||_0x459c49===_0xeacf('0xbf')||_0x459c49===_0xeacf('0xc0')||_0x459c49==='DecimalAttributeMetadata'){_0x181fb5[_0xeacf('0xb6')](getInputList(_0x47a0be,_0x3b4a83,_0x459c49,_0x5f0e89,_0x490e27[_0xeacf('0xac')],_0x1e4c7f['MetadataId'],_0x460a95));}}});return Promise[_0xeacf('0xb7')](_0x181fb5);})[_0xeacf('0x27')](function(_0x432618){_0x3598c9=_0x432618[0x0];var _0x3ada78=_0x50641b['concat'](_0x448b6)[_0xeacf('0x9a')](_0x3598c9);var _0x3c09ef={'count':_0x3ada78['length'],'rows':_0x3ada78};return _0x3c09ef;})[_0xeacf('0x27')](respondWithResult(_0x26db58,null))[_0xeacf('0x49')](function(_0x3b04ee){var _0x12b2ac=_0x49489d[_0xeacf('0x34')][_0xeacf('0xc1')]?0x1f4:_0x3b04ee['statusCode']||0x1f4;logger['error'](_0x3b04ee[_0xeacf('0x2a')]);delete _0x3b04ee['name'];if(_0x12b2ac===0x191){_0x12b2ac=0x190;}_0x26db58[_0xeacf('0x21')](_0x12b2ac)['send'](_0x49489d[_0xeacf('0x34')]['test']?{'message':_0xeacf('0xc2'),'statusCode':_0x3b04ee[_0xeacf('0xc3')]}:_0x3b04ee);});};function getSelectList(_0x4cd65d,_0x19ff67,_0xf21f0f,_0x5d94b0,_0x250ba7,_0x1a778e){var _0x41946b={'method':_0xeacf('0xc4'),'uri':_0x4cd65d+'EntityDefinitions('+_0x5d94b0+_0xeacf('0xc5')+_0x250ba7+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0xeacf('0xa9')+_0x1a778e,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x41946b)[_0xeacf('0x27')](function(_0x5e2da2){var _0x458077=[];var _0x462c92=_0x5e2da2['OptionSet']['Options'];_0x462c92[_0xeacf('0xb4')](function(_0x442deb){_0x458077[_0xeacf('0xb6')]({'name':_0x442deb[_0xeacf('0xc6')][_0xeacf('0xc7')]['Label'],'value':String(_0x442deb[_0xeacf('0xc8')])});});var _0x291169={'id':_0x19ff67+'_'+_0x5e2da2[_0xeacf('0xb1')],'name':_0x5e2da2[_0xeacf('0xc9')]['UserLocalizedLabel'][_0xeacf('0xc6')],'custom':![],'options':_0x458077};_0xf21f0f['push'](_0x291169);return _0xf21f0f;});}function getBooleanList(_0xfd8d3d,_0x3b631b,_0x5c5972,_0x3df3a6,_0x46adf9,_0x4aa2d9){var _0x51a8c6={'method':'GET','uri':_0xfd8d3d+_0xeacf('0xca')+_0x3df3a6+')/Attributes('+_0x46adf9+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0xeacf('0xa9')+_0x4aa2d9,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x51a8c6)['then'](function(_0x2e9b90){var _0x2dc7d7=[];_0x2dc7d7[_0xeacf('0xb6')]({'name':_0x2e9b90[_0xeacf('0xcb')][_0xeacf('0xcc')][_0xeacf('0xc6')][_0xeacf('0xc7')]['Label'],'value':_0xeacf('0xcd')},{'name':_0x2e9b90[_0xeacf('0xcb')][_0xeacf('0xce')]['Label'][_0xeacf('0xc7')]['Label'],'value':_0xeacf('0xcf')});var _0x274b42={'id':_0x3b631b+'_'+_0x2e9b90[_0xeacf('0xb1')],'name':_0x2e9b90['DisplayName']['UserLocalizedLabel'][_0xeacf('0xc6')],'custom':![],'options':_0x2dc7d7};_0x5c5972[_0xeacf('0xb6')](_0x274b42);return _0x5c5972;});}function getInputList(_0x5cffe9,_0xf0f439,_0x2e4078,_0x1e08f3,_0x5b048e,_0x4f8eca,_0x409e70){var _0x1803d0={'method':_0xeacf('0xc4'),'uri':_0x5cffe9+_0xeacf('0xca')+_0x5b048e+_0xeacf('0xc5')+_0x4f8eca+')/Microsoft.Dynamics.CRM.'+_0x2e4078+_0xeacf('0xd0'),'headers':{'Authorization':'Bearer\x20'+_0x409e70,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x1803d0)[_0xeacf('0x27')](function(_0x1d5f5){var _0xcea4d4={'id':_0xf0f439+'_'+_0x1d5f5['LogicalName'],'name':_0x1d5f5[_0xeacf('0xc9')][_0xeacf('0xc7')]?_0x1d5f5[_0xeacf('0xc9')][_0xeacf('0xc7')][_0xeacf('0xc6')]:_0x1d5f5[_0xeacf('0xb1')],'custom':![],'options':[]};_0x1e08f3[_0xeacf('0xb6')](_0xcea4d4);return _0x1e08f3;});}
\ No newline at end of file
+var _0x2d17=['update','then','stack','name','send','Dynamics365Account','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','fields','find','create','body','destroy','getConfigurations','Dynamics365Configuration','order','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','incident','Incident','title','description','customerid','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','sentimentvalue','slainvokedidname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','concat','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','%s/api/data/v9.0/','https://login.microsoftonline.com/','/oauth2/token','username','access_token','GET','Bearer\x20','4.0','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','all','isNil','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','error','test','Wrong\x20credentials','EntityDefinitions(',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','Options','push','Label','UserLocalizedLabel','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','OptionSet','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','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','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range'];(function(_0x5311e8,_0x57c5bb){var _0x582ad8=function(_0x1909af){while(--_0x1909af){_0x5311e8['push'](_0x5311e8['shift']());}};_0x582ad8(++_0x57c5bb);}(_0x2d17,0x17e));var _0x72d1=function(_0x4aa7bc,_0x5d58e0){_0x4aa7bc=_0x4aa7bc-0x0;var _0x36268d=_0x2d17[_0x4aa7bc];return _0x36268d;};'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'];var integrations=require(_0x72d1('0x19'));function respondWithStatusCode(_0x5ad4df,_0x3cd1ae){_0x3cd1ae=_0x3cd1ae||0xcc;return function(_0x37017c){if(_0x37017c){return _0x5ad4df[_0x72d1('0x1a')](_0x3cd1ae);}return _0x5ad4df[_0x72d1('0x1b')](_0x3cd1ae)[_0x72d1('0x1c')]();};}function respondWithResult(_0x685a27,_0x143718){_0x143718=_0x143718||0xc8;return function(_0x383bb){if(_0x383bb){return _0x685a27[_0x72d1('0x1b')](_0x143718)[_0x72d1('0x1d')](_0x383bb);}};}function respondWithFilteredResult(_0x21c85e,_0x23a238){return function(_0x8d458){if(_0x8d458){var _0x491af4=typeof _0x23a238[_0x72d1('0x1e')]==='undefined'&&typeof _0x23a238[_0x72d1('0x1f')]===_0x72d1('0x20');var _0x59d7b5=_0x8d458[_0x72d1('0x21')];var _0x1cbb45=_0x491af4?0x0:_0x23a238[_0x72d1('0x1e')];var _0x49caf4=_0x491af4?_0x8d458['count']:_0x23a238[_0x72d1('0x1e')]+_0x23a238[_0x72d1('0x1f')];var _0x2233cb;if(_0x49caf4>=_0x59d7b5){_0x49caf4=_0x59d7b5;_0x2233cb=0xc8;}else{_0x2233cb=0xce;}_0x21c85e[_0x72d1('0x1b')](_0x2233cb);return _0x21c85e[_0x72d1('0x22')](_0x72d1('0x23'),_0x1cbb45+'-'+_0x49caf4+'/'+_0x59d7b5)[_0x72d1('0x1d')](_0x8d458);}return null;};}function patchUpdates(_0x5c7982){return function(_0x1c695c){try{jsonpatch['apply'](_0x1c695c,_0x5c7982,!![]);}catch(_0x506062){return BPromise['reject'](_0x506062);}return _0x1c695c['save']();};}function saveUpdates(_0x445985,_0x374602){return function(_0x573c98){if(_0x573c98){return _0x573c98[_0x72d1('0x24')](_0x445985)[_0x72d1('0x25')](function(_0x492086){return _0x492086;});}return null;};}function removeEntity(_0x1431ee,_0x26fa35){return function(_0x4e6acd){if(_0x4e6acd){return _0x4e6acd['destroy']()[_0x72d1('0x25')](function(){_0x1431ee[_0x72d1('0x1b')](0xcc)[_0x72d1('0x1c')]();});}};}function handleEntityNotFound(_0x2f879f,_0xdf6a69){return function(_0x33d530){if(!_0x33d530){_0x2f879f[_0x72d1('0x1a')](0x194);}return _0x33d530;};}function handleError(_0x589f7c,_0x57ec9e){_0x57ec9e=_0x57ec9e||0x1f4;return function(_0x1ba258){logger['error'](_0x1ba258[_0x72d1('0x26')]);if(_0x1ba258[_0x72d1('0x27')]){delete _0x1ba258[_0x72d1('0x27')];}_0x589f7c['status'](_0x57ec9e)[_0x72d1('0x28')](_0x1ba258);};}exports['index']=function(_0x707cd0,_0x20055f){var _0x32588f={},_0x2cc0c8={},_0x51242b={'count':0x0,'rows':[]};var _0x37617e=_['map'](db[_0x72d1('0x29')][_0x72d1('0x2a')],function(_0x5cec3f){return{'name':_0x5cec3f[_0x72d1('0x2b')],'type':_0x5cec3f[_0x72d1('0x2c')][_0x72d1('0x2d')]};});_0x2cc0c8[_0x72d1('0x2e')]=_[_0x72d1('0x2f')](_0x37617e,'name');_0x2cc0c8[_0x72d1('0x30')]=_[_0x72d1('0x31')](_0x707cd0[_0x72d1('0x30')]);_0x2cc0c8['filters']=_[_0x72d1('0x32')](_0x2cc0c8[_0x72d1('0x2e')],_0x2cc0c8['query']);_0x32588f[_0x72d1('0x33')]=_[_0x72d1('0x32')](_0x2cc0c8[_0x72d1('0x2e')],qs['fields'](_0x707cd0[_0x72d1('0x30')]['fields']));_0x32588f[_0x72d1('0x33')]=_0x32588f[_0x72d1('0x33')][_0x72d1('0x34')]?_0x32588f[_0x72d1('0x33')]:_0x2cc0c8[_0x72d1('0x2e')];if(!_0x707cd0[_0x72d1('0x30')][_0x72d1('0x35')](_0x72d1('0x36'))){_0x32588f[_0x72d1('0x1f')]=qs[_0x72d1('0x1f')](_0x707cd0[_0x72d1('0x30')]['limit']);_0x32588f[_0x72d1('0x1e')]=qs[_0x72d1('0x1e')](_0x707cd0[_0x72d1('0x30')][_0x72d1('0x1e')]);}_0x32588f['order']=qs[_0x72d1('0x37')](_0x707cd0[_0x72d1('0x30')][_0x72d1('0x37')]);_0x32588f['where']=qs[_0x72d1('0x38')](_[_0x72d1('0x39')](_0x707cd0[_0x72d1('0x30')],_0x2cc0c8['filters']),_0x37617e);if(_0x707cd0[_0x72d1('0x30')][_0x72d1('0x3a')]){_0x32588f[_0x72d1('0x3b')]=_['merge'](_0x32588f[_0x72d1('0x3b')],{'$or':_[_0x72d1('0x2f')](_0x37617e,function(_0x1e083e){if(_0x1e083e[_0x72d1('0x2c')]!==_0x72d1('0x3c')){var _0x785820={};_0x785820[_0x1e083e[_0x72d1('0x27')]]={'$like':'%'+_0x707cd0['query'][_0x72d1('0x3a')]+'%'};return _0x785820;}})});}_0x32588f=_[_0x72d1('0x3d')]({},_0x32588f,_0x707cd0[_0x72d1('0x3e')]);var _0x16407a={'where':_0x32588f[_0x72d1('0x3b')]};return db[_0x72d1('0x29')][_0x72d1('0x21')](_0x16407a)[_0x72d1('0x25')](function(_0x55438b){_0x51242b[_0x72d1('0x21')]=_0x55438b;if(_0x707cd0[_0x72d1('0x30')][_0x72d1('0x3f')]){_0x32588f[_0x72d1('0x40')]=[{'all':!![]}];}return db[_0x72d1('0x29')][_0x72d1('0x41')](_0x32588f);})[_0x72d1('0x25')](function(_0x3620df){_0x51242b['rows']=_0x3620df;return _0x51242b;})['then'](respondWithFilteredResult(_0x20055f,_0x32588f))[_0x72d1('0x42')](handleError(_0x20055f,null));};exports[_0x72d1('0x43')]=function(_0x824c17,_0x21d361){var _0x5a6bc4={'raw':![],'where':{'id':_0x824c17[_0x72d1('0x44')]['id']}},_0x3fe286={};_0x3fe286['model']=_[_0x72d1('0x31')](db['Dynamics365Account'][_0x72d1('0x2a')]);_0x3fe286[_0x72d1('0x30')]=_['keys'](_0x824c17[_0x72d1('0x30')]);_0x3fe286['filters']=_['intersection'](_0x3fe286['model'],_0x3fe286[_0x72d1('0x30')]);_0x5a6bc4['attributes']=_[_0x72d1('0x32')](_0x3fe286[_0x72d1('0x2e')],qs[_0x72d1('0x45')](_0x824c17['query']['fields']));_0x5a6bc4[_0x72d1('0x33')]=_0x5a6bc4['attributes']['length']?_0x5a6bc4[_0x72d1('0x33')]:_0x3fe286[_0x72d1('0x2e')];if(_0x824c17[_0x72d1('0x30')]['includeAll']){_0x5a6bc4['include']=[{'all':!![]}];}_0x5a6bc4=_['merge']({},_0x5a6bc4,_0x824c17['options']);return db[_0x72d1('0x29')][_0x72d1('0x46')](_0x5a6bc4)[_0x72d1('0x25')](handleEntityNotFound(_0x21d361,null))[_0x72d1('0x25')](respondWithResult(_0x21d361,null))[_0x72d1('0x42')](handleError(_0x21d361,null));};exports[_0x72d1('0x47')]=function(_0x1d1465,_0x5924c){return db[_0x72d1('0x29')]['create'](_0x1d1465[_0x72d1('0x48')],{})[_0x72d1('0x25')](respondWithResult(_0x5924c,0xc9))[_0x72d1('0x42')](handleError(_0x5924c,null));};exports['update']=function(_0x418e6f,_0x29c88f){if(_0x418e6f[_0x72d1('0x48')]['id']){delete _0x418e6f['body']['id'];}return db[_0x72d1('0x29')][_0x72d1('0x46')]({'where':{'id':_0x418e6f[_0x72d1('0x44')]['id']}})[_0x72d1('0x25')](handleEntityNotFound(_0x29c88f,null))['then'](saveUpdates(_0x418e6f['body'],null))[_0x72d1('0x25')](respondWithResult(_0x29c88f,null))[_0x72d1('0x42')](handleError(_0x29c88f,null));};exports[_0x72d1('0x49')]=function(_0x5ad683,_0x402a04){return db[_0x72d1('0x29')][_0x72d1('0x46')]({'where':{'id':_0x5ad683[_0x72d1('0x44')]['id']}})[_0x72d1('0x25')](handleEntityNotFound(_0x402a04,null))[_0x72d1('0x25')](removeEntity(_0x402a04,null))[_0x72d1('0x42')](handleError(_0x402a04,null));};exports[_0x72d1('0x4a')]=function(_0x12870c,_0x18f986,_0x472f47){var _0x48e072={};var _0x46b2f5={};var _0x50d4d4;var _0x5dd7b0;return db[_0x72d1('0x29')]['findOne']({'where':{'id':_0x12870c[_0x72d1('0x44')]['id']}})[_0x72d1('0x25')](handleEntityNotFound(_0x18f986,null))[_0x72d1('0x25')](function(_0x162248){if(_0x162248){_0x50d4d4=_0x162248;_0x46b2f5[_0x72d1('0x2e')]=_[_0x72d1('0x31')](db[_0x72d1('0x4b')][_0x72d1('0x2a')]);_0x46b2f5[_0x72d1('0x30')]=_[_0x72d1('0x31')](_0x12870c[_0x72d1('0x30')]);_0x46b2f5['filters']=_[_0x72d1('0x32')](_0x46b2f5[_0x72d1('0x2e')],_0x46b2f5[_0x72d1('0x30')]);_0x48e072['attributes']=_['intersection'](_0x46b2f5[_0x72d1('0x2e')],qs[_0x72d1('0x45')](_0x12870c[_0x72d1('0x30')][_0x72d1('0x45')]));_0x48e072[_0x72d1('0x33')]=_0x48e072['attributes'][_0x72d1('0x34')]?_0x48e072['attributes']:_0x46b2f5[_0x72d1('0x2e')];_0x48e072[_0x72d1('0x4c')]=qs[_0x72d1('0x37')](_0x12870c[_0x72d1('0x30')][_0x72d1('0x37')]);_0x48e072[_0x72d1('0x3b')]=qs[_0x72d1('0x38')](_[_0x72d1('0x39')](_0x12870c[_0x72d1('0x30')],_0x46b2f5[_0x72d1('0x38')]));if(_0x12870c[_0x72d1('0x30')][_0x72d1('0x3a')]){_0x48e072[_0x72d1('0x3b')]=_[_0x72d1('0x3d')](_0x48e072[_0x72d1('0x3b')],{'$or':_[_0x72d1('0x2f')](_0x48e072[_0x72d1('0x33')],function(_0x5e63cc){var _0x1b40e8={};_0x1b40e8[_0x5e63cc]={'$like':'%'+_0x12870c[_0x72d1('0x30')][_0x72d1('0x3a')]+'%'};return _0x1b40e8;})});}_0x48e072=_[_0x72d1('0x3d')]({},_0x48e072,_0x12870c[_0x72d1('0x3e')]);return _0x50d4d4[_0x72d1('0x4a')](_0x48e072);}})['then'](function(_0x1aec3d){if(_0x1aec3d){_0x5dd7b0=_0x1aec3d[_0x72d1('0x34')];if(!_0x12870c[_0x72d1('0x30')]['hasOwnProperty']('nolimit')){_0x48e072[_0x72d1('0x1f')]=qs['limit'](_0x12870c[_0x72d1('0x30')][_0x72d1('0x1f')]);_0x48e072[_0x72d1('0x1e')]=qs[_0x72d1('0x1e')](_0x12870c[_0x72d1('0x30')][_0x72d1('0x1e')]);}return _0x50d4d4[_0x72d1('0x4a')](_0x48e072);}})[_0x72d1('0x25')](function(_0x28e42b){if(_0x28e42b){return _0x28e42b?{'count':_0x5dd7b0,'rows':_0x28e42b}:null;}})['then'](respondWithResult(_0x18f986,null))['catch'](handleError(_0x18f986,null));};exports[_0x72d1('0x4d')]=function(_0x1d44f0,_0x1bd80b,_0x544e7a){if(_0x1d44f0[_0x72d1('0x48')]['id']){delete _0x1d44f0[_0x72d1('0x48')]['id'];}return db['Dynamics365Account'][_0x72d1('0x4e')]({'where':{'id':_0x1d44f0[_0x72d1('0x44')]['id']}})[_0x72d1('0x25')](handleEntityNotFound(_0x1bd80b,null))[_0x72d1('0x25')](function(_0x17ac0e){if(_0x17ac0e){_0x1d44f0[_0x72d1('0x48')][_0x72d1('0x4f')]=_0x17ac0e['id'];_0x1d44f0[_0x72d1('0x48')][_0x72d1('0x50')]=integrations[_0x72d1('0x51')](_0x1d44f0[_0x72d1('0x48')][_0x72d1('0x52')],_0x1d44f0['body']['type']);_0x1d44f0[_0x72d1('0x48')][_0x72d1('0x53')]=integrations[_0x72d1('0x54')](_0x1d44f0[_0x72d1('0x48')][_0x72d1('0x52')],_0x1d44f0[_0x72d1('0x48')][_0x72d1('0x2c')]);return db[_0x72d1('0x4b')]['create'](_0x1d44f0[_0x72d1('0x48')],{'include':[{'model':db['Dynamics365Field'],'as':_0x72d1('0x50')},{'model':db[_0x72d1('0x55')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x1bd80b,null))[_0x72d1('0x42')](handleError(_0x1bd80b,null));};exports[_0x72d1('0x56')]=function(_0x22ca95,_0x44d076,_0x3f17d0){var _0x54388a=_0x22ca95[_0x72d1('0x30')]['ticketType'];var _0x2d24f0=_0x54388a===_0x72d1('0x57')?_0x72d1('0x58'):'PhoneCall';var _0x61b30b='';var _0x4970ac='';var _0x78efb8='';var _0xf6aa3='';var _0x5158ff='';var _0x3c0a7e='';var _0x4304a0='';var _0x4eb5ca='';var _0x87762c=[_0x72d1('0x59'),_0x72d1('0x5a'),_0x72d1('0x5b'),'ownerid','caseorigincode','subject',_0x72d1('0x5c'),_0x72d1('0x5d'),_0x72d1('0x5e'),_0x72d1('0x5f')];var _0x146b06=[_0x72d1('0x60'),'accountidyominame','actualserviceunits',_0x72d1('0x61'),_0x72d1('0x62'),_0x72d1('0x63'),_0x72d1('0x64'),_0x72d1('0x65'),_0x72d1('0x66'),'createdbyexternalpartyyominame',_0x72d1('0x67'),_0x72d1('0x68'),_0x72d1('0x69'),'createdonbehalfbyname',_0x72d1('0x6a'),_0x72d1('0x6b'),_0x72d1('0x6c'),_0x72d1('0x6d'),_0x72d1('0x6e'),_0x72d1('0x6f'),_0x72d1('0x70'),_0x72d1('0x71'),'escalatedon',_0x72d1('0x72'),_0x72d1('0x73'),_0x72d1('0x74'),_0x72d1('0x75'),'influencescore','kbarticleidname',_0x72d1('0x76'),_0x72d1('0x77'),'modifiedbyexternalpartyname',_0x72d1('0x78'),_0x72d1('0x79'),_0x72d1('0x7a'),_0x72d1('0x7b'),_0x72d1('0x7c'),_0x72d1('0x7d'),_0x72d1('0x7e'),_0x72d1('0x7f'),'numberofchildincidents',_0x72d1('0x80'),_0x72d1('0x81'),_0x72d1('0x82'),_0x72d1('0x83'),_0x72d1('0x84'),_0x72d1('0x85'),_0x72d1('0x86'),_0x72d1('0x87'),'prioritycodename',_0x72d1('0x88'),_0x72d1('0x89'),_0x72d1('0x8a'),_0x72d1('0x8b'),_0x72d1('0x8c'),_0x72d1('0x8d'),'responsiblecontactidyominame',_0x72d1('0x8e'),_0x72d1('0x8f'),'slaname',_0x72d1('0x90'),_0x72d1('0x91'),_0x72d1('0x92'),_0x72d1('0x93'),_0x72d1('0x94'),_0x72d1('0x95'),'transactioncurrencyidname',_0x72d1('0x96'),_0x72d1('0x97'),'versionnumber'];var _0x4bd004=_0x87762c[_0x72d1('0x98')](_0x146b06);return db[_0x72d1('0x29')][_0x72d1('0x4e')]({'where':{'id':_0x22ca95[_0x72d1('0x44')]['id']},'attributes':['id','username',_0x72d1('0x99'),_0x72d1('0x9a'),_0x72d1('0x9b'),_0x72d1('0x9c'),_0x72d1('0x9d')]})[_0x72d1('0x25')](handleEntityNotFound(_0x44d076,null))[_0x72d1('0x25')](function(_0x14a215){if(_0x14a215){_0x4eb5ca=_0x14a215['remoteUri'];var _0x34c1b6=_0x4eb5ca[_0x72d1('0x9e')](-0x1);if(_0x34c1b6==='/'){_0x4eb5ca=_0x4eb5ca[_0x72d1('0x9f')](0x0,_0x4eb5ca[_0x72d1('0xa0')](_0x34c1b6));}_0x4304a0=util['format'](_0x72d1('0xa1'),_0x4eb5ca);var _0xa01097={'method':'POST','uri':_0x72d1('0xa2')+_0x14a215['tenantId']+_0x72d1('0xa3'),'form':{'client_id':_0x14a215['clientId'],'resource':_0x4eb5ca,'username':_0x14a215[_0x72d1('0xa4')],'password':_0x14a215[_0x72d1('0x99')],'grant_type':_0x72d1('0x99'),'client_secret':_0x14a215[_0x72d1('0x9d')]},'json':!![]};return rp(_0xa01097);}})[_0x72d1('0x25')](function(_0x4c5fc3){_0x3c0a7e=_0x4c5fc3[_0x72d1('0xa5')];var _0x5e810={'method':_0x72d1('0xa6'),'uri':encodeURI(_0x4304a0+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x2d24f0+'\x27'),'headers':{'Authorization':_0x72d1('0xa7')+_0x3c0a7e,'If-None-Match':null,'OData-Version':_0x72d1('0xa8')},'json':!![]};return rp(_0x5e810);})['then'](function(_0x26f1b0){var _0x2e58ae=_0x26f1b0[_0x72d1('0xa9')][0x0];var _0x5c262e=_0x2e58ae[_0x72d1('0xaa')];var _0x39d961={'method':_0x72d1('0xa6'),'uri':_0x4304a0+'EntityDefinitions('+_0x5c262e+_0x72d1('0xab'),'headers':{'Authorization':'Bearer\x20'+_0x3c0a7e,'If-None-Match':null,'OData-Version':_0x72d1('0xa8')},'json':!![]};return rp(_0x39d961);})['then'](function(_0x38e949){_0x61b30b=_0x38e949;_0x4970ac=_0x61b30b[_0x72d1('0xac')];_0x4970ac=_[_0x72d1('0xad')](_0x4970ac,function(_0x21ad86){return!_0x4bd004['includes'](_0x21ad86[_0x72d1('0xae')]);});var _0x13311e=[];var _0x20ba2f=[];_0x4970ac[_0x72d1('0xaf')](function(_0x52b09d){if(_0x52b09d[_0x72d1('0xb0')]){var _0x3e28f5=_0x52b09d[_0x72d1('0xb0')][_0x72d1('0x9f')](_0x52b09d[_0x72d1('0xb0')][_0x72d1('0xa0')]('.')+0x1);if(_0x3e28f5===_0x72d1('0xb1')){_0x13311e['push'](getSelectList(_0x4304a0,_0x54388a,_0x20ba2f,_0x61b30b['MetadataId'],_0x52b09d['MetadataId'],_0x3c0a7e));}}});return Promise[_0x72d1('0xb2')](_0x13311e);})['then'](function(_0x2d6f12){_0x78efb8=_0x2d6f12[0x0];var _0x8f4603=[];var _0x487bb1=[];_0x4970ac[_0x72d1('0xaf')](function(_0x57bb88){if(!_[_0x72d1('0xb3')](_0x57bb88[_0x72d1('0xb0')])){var _0x175c8e=_0x57bb88[_0x72d1('0xb0')]['substring'](_0x57bb88['@odata.type'][_0x72d1('0xa0')]('.')+0x1);if(_0x175c8e==='BooleanAttributeMetadata'){_0x8f4603['push'](getBooleanList(_0x4304a0,_0x54388a,_0x487bb1,_0x61b30b['MetadataId'],_0x57bb88[_0x72d1('0xaa')],_0x3c0a7e));}}});return Promise[_0x72d1('0xb2')](_0x8f4603);})[_0x72d1('0x25')](function(_0x14d48b){_0xf6aa3=_0x14d48b[0x0];var _0x2340ff=[];var _0x34a135=[];_0x4970ac[_0x72d1('0xaf')](function(_0x4e9d08){if(_0x4e9d08['@odata.type']){var _0x34ee21=_0x4e9d08[_0x72d1('0xb0')]['substring'](_0x4e9d08[_0x72d1('0xb0')]['lastIndexOf']('.')+0x1);if(_0x34ee21==='StringAttributeMetadata'||_0x34ee21===_0x72d1('0xb4')||_0x34ee21===_0x72d1('0xb5')||_0x34ee21===_0x72d1('0xb6')||_0x34ee21===_0x72d1('0xb7')||_0x34ee21===_0x72d1('0xb8')||_0x34ee21===_0x72d1('0xb9')||_0x34ee21==='EntityNameAttributeMetadata'||_0x34ee21===_0x72d1('0xba')||_0x34ee21===_0x72d1('0xbb')){_0x2340ff['push'](getInputList(_0x4304a0,_0x54388a,_0x34ee21,_0x34a135,_0x61b30b[_0x72d1('0xaa')],_0x4e9d08['MetadataId'],_0x3c0a7e));}}});return Promise[_0x72d1('0xb2')](_0x2340ff);})[_0x72d1('0x25')](function(_0x237949){_0x5158ff=_0x237949[0x0];var _0x366265=_0x78efb8[_0x72d1('0x98')](_0xf6aa3)[_0x72d1('0x98')](_0x5158ff);var _0x25a748={'count':_0x366265[_0x72d1('0x34')],'rows':_0x366265};return _0x25a748;})[_0x72d1('0x25')](respondWithResult(_0x44d076,null))['catch'](function(_0x27d69e){var _0x1c18c2=_0x22ca95['query']['test']?0x1f4:_0x27d69e[_0x72d1('0xbc')]||0x1f4;logger[_0x72d1('0xbd')](_0x27d69e[_0x72d1('0x26')]);delete _0x27d69e[_0x72d1('0x27')];if(_0x1c18c2===0x191){_0x1c18c2=0x190;}_0x44d076[_0x72d1('0x1b')](_0x1c18c2)[_0x72d1('0x28')](_0x22ca95[_0x72d1('0x30')][_0x72d1('0xbe')]?{'message':_0x72d1('0xbf'),'statusCode':_0x27d69e['statusCode']}:_0x27d69e);});};function getSelectList(_0x442e32,_0x2c86c9,_0x5c9b4a,_0x19258c,_0x320d0c,_0x5de65){var _0x44ad2b={'method':_0x72d1('0xa6'),'uri':_0x442e32+_0x72d1('0xc0')+_0x19258c+_0x72d1('0xc1')+_0x320d0c+_0x72d1('0xc2')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x72d1('0xa7')+_0x5de65,'If-None-Match':null,'OData-Version':_0x72d1('0xa8')},'json':!![]};return rp(_0x44ad2b)['then'](function(_0x544614){var _0x301bfb=[];var _0x113d59=_0x544614['OptionSet'][_0x72d1('0xc3')];_0x113d59['forEach'](function(_0x59772f){_0x301bfb[_0x72d1('0xc4')]({'name':_0x59772f[_0x72d1('0xc5')][_0x72d1('0xc6')][_0x72d1('0xc5')],'value':String(_0x59772f[_0x72d1('0xc7')])});});var _0x564856={'id':_0x2c86c9+'_'+_0x544614['LogicalName'],'name':_0x544614[_0x72d1('0xc8')][_0x72d1('0xc6')][_0x72d1('0xc5')],'custom':![],'options':_0x301bfb};_0x5c9b4a[_0x72d1('0xc4')](_0x564856);return _0x5c9b4a;});}function getBooleanList(_0x4c4931,_0x3b46a9,_0x42c8a8,_0x15b07a,_0x18e3de,_0x12b742){var _0x5912ea={'method':'GET','uri':_0x4c4931+_0x72d1('0xc0')+_0x15b07a+_0x72d1('0xc1')+_0x18e3de+_0x72d1('0xc9'),'headers':{'Authorization':'Bearer\x20'+_0x12b742,'If-None-Match':null,'OData-Version':_0x72d1('0xa8')},'json':!![]};return rp(_0x5912ea)[_0x72d1('0x25')](function(_0x412a62){var _0x53e735=[];_0x53e735[_0x72d1('0xc4')]({'name':_0x412a62['OptionSet'][_0x72d1('0xca')][_0x72d1('0xc5')]['UserLocalizedLabel'][_0x72d1('0xc5')],'value':_0x72d1('0xcb')},{'name':_0x412a62[_0x72d1('0xcc')][_0x72d1('0xcd')][_0x72d1('0xc5')][_0x72d1('0xc6')]['Label'],'value':_0x72d1('0xce')});var _0xacdafa={'id':_0x3b46a9+'_'+_0x412a62[_0x72d1('0xae')],'name':_0x412a62['DisplayName'][_0x72d1('0xc6')][_0x72d1('0xc5')],'custom':![],'options':_0x53e735};_0x42c8a8[_0x72d1('0xc4')](_0xacdafa);return _0x42c8a8;});}function getInputList(_0x62d0a3,_0x4be8a8,_0x180fc3,_0x110d8a,_0xf94aa1,_0x317e18,_0xc8f14b){var _0x23fc9b={'method':'GET','uri':_0x62d0a3+_0x72d1('0xc0')+_0xf94aa1+_0x72d1('0xc1')+_0x317e18+_0x72d1('0xcf')+_0x180fc3+_0x72d1('0xd0'),'headers':{'Authorization':'Bearer\x20'+_0xc8f14b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x23fc9b)[_0x72d1('0x25')](function(_0x4fb939){var _0x475440={'id':_0x4be8a8+'_'+_0x4fb939[_0x72d1('0xae')],'name':_0x4fb939[_0x72d1('0xc8')][_0x72d1('0xc6')]?_0x4fb939[_0x72d1('0xc8')]['UserLocalizedLabel'][_0x72d1('0xc5')]:_0x4fb939[_0x72d1('0xae')],'custom':![],'options':[]};_0x110d8a[_0x72d1('0xc4')](_0x475440);return _0x110d8a;});}
\ No newline at end of file
index a6bee53..73449ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x338f40,_0x3e5190){var _0x2c8260=function(_0x3d319f){while(--_0x3d319f){_0x338f40['push'](_0x338f40['shift']());}};_0x2c8260(++_0x3e5190);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'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'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','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(_0x3ca1fe,_0x219427){var _0x2c30c6=function(_0x3bc361){while(--_0x3bc361){_0x3ca1fe['push'](_0x3ca1fe['shift']());}};_0x2c30c6(++_0x219427);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x100682,_0x11afec){_0x100682=_0x100682-0x0;var _0xcb6e87=_0xcb91[_0x100682];return _0xcb6e87;};'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 ceb208e..0fbdbd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e37=['Dynamics365Account,\x20%s,\x20%s','message','result','GetDynamics365Account','Dynamics365Account','options','where','attributes','limit','map','include','model','catch','ShowDynamics365Account','find','raw','lodash','util','ioredis','../../config/utils','rpc','jayson/promise','then','info','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x58f245,_0x3e4f31){var _0x1f0cfb=function(_0x515942){while(--_0x515942){_0x58f245['push'](_0x58f245['shift']());}};_0x1f0cfb(++_0x3e4f31);}(_0x5e37,0x1d2));var _0x75e3=function(_0x10b48a,_0x1a0a3f){_0x10b48a=_0x10b48a-0x0;var _0x2c4533=_0x5e37[_0x10b48a];return _0x2c4533;};'use strict';var _=require(_0x75e3('0x0'));var util=require(_0x75e3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x75e3('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x75e3('0x3'));var logger=require('../../config/logger')(_0x75e3('0x4'));var config=require('../../config/environment');var jayson=require(_0x75e3('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x49bfcc,_0x58fa18,_0x1a9b03){return new BPromise(function(_0x2bd460,_0x316cdf){return client['request'](_0x49bfcc,_0x1a9b03)[_0x75e3('0x6')](function(_0x172dcd){logger[_0x75e3('0x7')]('Dynamics365Account,\x20%s,\x20%s',_0x58fa18,'request\x20sent');logger[_0x75e3('0x8')](_0x75e3('0x9'),_0x58fa18,_0x75e3('0xa'),JSON[_0x75e3('0xb')](_0x172dcd));if(_0x172dcd[_0x75e3('0xc')]){if(_0x172dcd[_0x75e3('0xc')][_0x75e3('0xd')]===0x1f4){logger[_0x75e3('0xc')](_0x75e3('0xe'),_0x58fa18,_0x172dcd[_0x75e3('0xc')]['message']);return _0x316cdf(_0x172dcd[_0x75e3('0xc')][_0x75e3('0xf')]);}logger[_0x75e3('0xc')](_0x75e3('0xe'),_0x58fa18,_0x172dcd[_0x75e3('0xc')][_0x75e3('0xf')]);return _0x2bd460(_0x172dcd[_0x75e3('0xc')][_0x75e3('0xf')]);}else{logger['info'](_0x75e3('0xe'),_0x58fa18,_0x75e3('0xa'));_0x2bd460(_0x172dcd[_0x75e3('0x10')]['message']);}})['catch'](function(_0x45fdb1){logger[_0x75e3('0xc')](_0x75e3('0xe'),_0x58fa18,_0x45fdb1);_0x316cdf(_0x45fdb1);});});}exports[_0x75e3('0x11')]=function(_0x1fcfe3){var _0x5f445a=this;return new Promise(function(_0x35451d,_0xf148){return db[_0x75e3('0x12')]['findAll']({'raw':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')][_0x75e3('0x14')]||null:null,'attributes':_0x1fcfe3['options']?_0x1fcfe3[_0x75e3('0x13')][_0x75e3('0x15')]||null:null,'limit':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')][_0x75e3('0x16')]||null:null,'include':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')]['include']?_[_0x75e3('0x17')](_0x1fcfe3[_0x75e3('0x13')]['include'],function(_0x28bd06){return{'model':db[_0x28bd06['model']],'as':_0x28bd06['as'],'attributes':_0x28bd06['attributes'],'include':_0x28bd06[_0x75e3('0x18')]?_[_0x75e3('0x17')](_0x28bd06[_0x75e3('0x18')],function(_0x422f2f){return{'model':db[_0x422f2f['model']],'as':_0x422f2f['as'],'attributes':_0x422f2f[_0x75e3('0x15')],'include':_0x422f2f[_0x75e3('0x18')]?_['map'](_0x422f2f[_0x75e3('0x18')],function(_0x122c37){return{'model':db[_0x122c37[_0x75e3('0x19')]],'as':_0x122c37['as'],'attributes':_0x122c37[_0x75e3('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12960e){logger[_0x75e3('0x7')]('GetDynamics365Account',_0x1fcfe3);logger[_0x75e3('0x8')](_0x75e3('0x11'),_0x1fcfe3,JSON[_0x75e3('0xb')](_0x12960e));_0x35451d(_0x12960e);})[_0x75e3('0x1a')](function(_0x290c6f){logger['error'](_0x75e3('0x11'),_0x290c6f['message'],_0x1fcfe3);_0xf148(_0x5f445a[_0x75e3('0xc')](0x1f4,_0x290c6f[_0x75e3('0xf')]));});});};exports[_0x75e3('0x1b')]=function(_0x2b6385){var _0x3b9333=this;return new Promise(function(_0x4b034c,_0x4bf9e1){return db[_0x75e3('0x12')][_0x75e3('0x1c')]({'raw':_0x2b6385[_0x75e3('0x13')]?_0x2b6385['options'][_0x75e3('0x1d')]===undefined?!![]:![]:!![],'where':_0x2b6385['options']?_0x2b6385[_0x75e3('0x13')][_0x75e3('0x14')]||null:null,'attributes':_0x2b6385[_0x75e3('0x13')]?_0x2b6385[_0x75e3('0x13')][_0x75e3('0x15')]||null:null,'include':_0x2b6385[_0x75e3('0x13')]?_0x2b6385[_0x75e3('0x13')][_0x75e3('0x18')]?_[_0x75e3('0x17')](_0x2b6385['options'][_0x75e3('0x18')],function(_0xd16070){return{'model':db[_0xd16070[_0x75e3('0x19')]],'as':_0xd16070['as'],'attributes':_0xd16070[_0x75e3('0x15')],'include':_0xd16070[_0x75e3('0x18')]?_[_0x75e3('0x17')](_0xd16070[_0x75e3('0x18')],function(_0x934309){return{'model':db[_0x934309[_0x75e3('0x19')]],'as':_0x934309['as'],'attributes':_0x934309[_0x75e3('0x15')],'include':_0x934309[_0x75e3('0x18')]?_[_0x75e3('0x17')](_0x934309[_0x75e3('0x18')],function(_0x4b9488){return{'model':db[_0x4b9488[_0x75e3('0x19')]],'as':_0x4b9488['as'],'attributes':_0x4b9488[_0x75e3('0x15')]};}):[]};}):[]};}):[]:[]})[_0x75e3('0x6')](function(_0x42dcc3){logger['info']('ShowDynamics365Account',_0x2b6385);logger[_0x75e3('0x8')](_0x75e3('0x1b'),_0x2b6385,JSON[_0x75e3('0xb')](_0x42dcc3));_0x4b034c(_0x42dcc3);})['catch'](function(_0x555b4e){logger['error'](_0x75e3('0x1b'),_0x555b4e[_0x75e3('0xf')],_0x2b6385);_0x4bf9e1(_0x3b9333[_0x75e3('0xc')](0x1f4,_0x555b4e[_0x75e3('0xf')]));});});};
\ No newline at end of file
+var _0xacc0=['map','model','then','ShowDynamics365Account','Dynamics365Account','find','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','Dynamics365Account,\x20%s,\x20%s','message','result','catch','GetDynamics365Account','findAll','options','where','attributes','limit','include'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xacc0,0x130));var _0x0acc=function(_0x464057,_0x14ea55){_0x464057=_0x464057-0x0;var _0x280538=_0xacc0[_0x464057];return _0x280538;};'use strict';var _=require('lodash');var util=require(_0x0acc('0x0'));var moment=require(_0x0acc('0x1'));var BPromise=require(_0x0acc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0acc('0x3'));var db=require(_0x0acc('0x4'))['db'];var utils=require(_0x0acc('0x5'));var logger=require(_0x0acc('0x6'))(_0x0acc('0x7'));var config=require(_0x0acc('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0acc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x264687,_0x43cbde,_0x534b59){return new BPromise(function(_0x4ca9eb,_0xb6b388){return client['request'](_0x264687,_0x534b59)['then'](function(_0x34edeb){logger[_0x0acc('0xa')]('Dynamics365Account,\x20%s,\x20%s',_0x43cbde,_0x0acc('0xb'));logger[_0x0acc('0xc')](_0x0acc('0xd'),_0x43cbde,'request\x20sent',JSON['stringify'](_0x34edeb));if(_0x34edeb[_0x0acc('0xe')]){if(_0x34edeb[_0x0acc('0xe')]['code']===0x1f4){logger[_0x0acc('0xe')](_0x0acc('0xf'),_0x43cbde,_0x34edeb['error'][_0x0acc('0x10')]);return _0xb6b388(_0x34edeb[_0x0acc('0xe')][_0x0acc('0x10')]);}logger['error'](_0x0acc('0xf'),_0x43cbde,_0x34edeb[_0x0acc('0xe')]['message']);return _0x4ca9eb(_0x34edeb[_0x0acc('0xe')]['message']);}else{logger['info'](_0x0acc('0xf'),_0x43cbde,_0x0acc('0xb'));_0x4ca9eb(_0x34edeb[_0x0acc('0x11')][_0x0acc('0x10')]);}})[_0x0acc('0x12')](function(_0x43eca6){logger[_0x0acc('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x43cbde,_0x43eca6);_0xb6b388(_0x43eca6);});});}exports[_0x0acc('0x13')]=function(_0xca6816){var _0x38ef80=this;return new Promise(function(_0x75fd46,_0x396dc9){return db['Dynamics365Account'][_0x0acc('0x14')]({'raw':_0xca6816[_0x0acc('0x15')]?_0xca6816[_0x0acc('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0xca6816[_0x0acc('0x15')]?_0xca6816[_0x0acc('0x15')][_0x0acc('0x16')]||null:null,'attributes':_0xca6816['options']?_0xca6816[_0x0acc('0x15')][_0x0acc('0x17')]||null:null,'limit':_0xca6816[_0x0acc('0x15')]?_0xca6816['options'][_0x0acc('0x18')]||null:null,'include':_0xca6816[_0x0acc('0x15')]?_0xca6816[_0x0acc('0x15')][_0x0acc('0x19')]?_['map'](_0xca6816['options'][_0x0acc('0x19')],function(_0x49da36){return{'model':db[_0x49da36['model']],'as':_0x49da36['as'],'attributes':_0x49da36[_0x0acc('0x17')],'include':_0x49da36['include']?_[_0x0acc('0x1a')](_0x49da36[_0x0acc('0x19')],function(_0x5b5a1c){return{'model':db[_0x5b5a1c[_0x0acc('0x1b')]],'as':_0x5b5a1c['as'],'attributes':_0x5b5a1c[_0x0acc('0x17')],'include':_0x5b5a1c[_0x0acc('0x19')]?_['map'](_0x5b5a1c[_0x0acc('0x19')],function(_0x41e7d8){return{'model':db[_0x41e7d8[_0x0acc('0x1b')]],'as':_0x41e7d8['as'],'attributes':_0x41e7d8[_0x0acc('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0acc('0x1c')](function(_0x4d535a){logger[_0x0acc('0xa')](_0x0acc('0x13'),_0xca6816);logger[_0x0acc('0xc')](_0x0acc('0x13'),_0xca6816,JSON['stringify'](_0x4d535a));_0x75fd46(_0x4d535a);})['catch'](function(_0x5473ac){logger['error']('GetDynamics365Account',_0x5473ac[_0x0acc('0x10')],_0xca6816);_0x396dc9(_0x38ef80['error'](0x1f4,_0x5473ac['message']));});});};exports[_0x0acc('0x1d')]=function(_0x436744){var _0x3a01f4=this;return new Promise(function(_0x5099af,_0x17cbc9){return db[_0x0acc('0x1e')][_0x0acc('0x1f')]({'raw':_0x436744[_0x0acc('0x15')]?_0x436744[_0x0acc('0x15')][_0x0acc('0x20')]===undefined?!![]:![]:!![],'where':_0x436744[_0x0acc('0x15')]?_0x436744['options'][_0x0acc('0x16')]||null:null,'attributes':_0x436744[_0x0acc('0x15')]?_0x436744[_0x0acc('0x15')][_0x0acc('0x17')]||null:null,'include':_0x436744[_0x0acc('0x15')]?_0x436744[_0x0acc('0x15')][_0x0acc('0x19')]?_[_0x0acc('0x1a')](_0x436744[_0x0acc('0x15')][_0x0acc('0x19')],function(_0x37d5ac){return{'model':db[_0x37d5ac[_0x0acc('0x1b')]],'as':_0x37d5ac['as'],'attributes':_0x37d5ac[_0x0acc('0x17')],'include':_0x37d5ac[_0x0acc('0x19')]?_[_0x0acc('0x1a')](_0x37d5ac[_0x0acc('0x19')],function(_0x21ed2c){return{'model':db[_0x21ed2c['model']],'as':_0x21ed2c['as'],'attributes':_0x21ed2c[_0x0acc('0x17')],'include':_0x21ed2c[_0x0acc('0x19')]?_[_0x0acc('0x1a')](_0x21ed2c[_0x0acc('0x19')],function(_0x1e3cc2){return{'model':db[_0x1e3cc2[_0x0acc('0x1b')]],'as':_0x1e3cc2['as'],'attributes':_0x1e3cc2[_0x0acc('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0acc('0x1c')](function(_0x5481d5){logger[_0x0acc('0xa')](_0x0acc('0x1d'),_0x436744);logger[_0x0acc('0xc')](_0x0acc('0x1d'),_0x436744,JSON['stringify'](_0x5481d5));_0x5099af(_0x5481d5);})[_0x0acc('0x12')](function(_0x4f89da){logger[_0x0acc('0xe')](_0x0acc('0x1d'),_0x4f89da[_0x0acc('0x10')],_0x436744);_0x17cbc9(_0x3a01f4['error'](0x1f4,_0x4f89da['message']));});});};
\ No newline at end of file
index 5467065..e28b975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a0=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','update','exports','multer','util'];(function(_0x565ab0,_0x43a529){var _0x30de58=function(_0x5f5b98){while(--_0x5f5b98){_0x565ab0['push'](_0x565ab0['shift']());}};_0x30de58(++_0x43a529);}(_0xd7a0,0x163));var _0x0d7a=function(_0x5d072b,_0x7178){_0x5d072b=_0x5d072b-0x0;var _0x43a6aa=_0xd7a0[_0x5d072b];return _0x43a6aa;};'use strict';var multer=require(_0x0d7a('0x0'));var util=require(_0x0d7a('0x1'));var path=require('path');var timeout=require(_0x0d7a('0x2'));var express=require('express');var router=express[_0x0d7a('0x3')]();var fs_extra=require(_0x0d7a('0x4'));var auth=require(_0x0d7a('0x5'));var interaction=require(_0x0d7a('0x6'));var config=require(_0x0d7a('0x7'));var controller=require('./intDynamics365Configuration.controller');router[_0x0d7a('0x8')]('/',auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xa')]);router[_0x0d7a('0x8')](_0x0d7a('0xb'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xc')]);router['get'](_0x0d7a('0xd'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xe')]);router[_0x0d7a('0x8')]('/:id/subjects',auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xf')]);router['get'](_0x0d7a('0x10'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0x11')]);router[_0x0d7a('0x12')]('/',auth[_0x0d7a('0x9')](),controller['create']);router['put'](_0x0d7a('0xb'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0x13')]);router['delete'](_0x0d7a('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x0d7a('0x14')]=router;
\ No newline at end of file
+var _0x9648=['post','create','put','/:id','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x5bbf59,_0x1a97cc){var _0x1d187f=function(_0x119e24){while(--_0x119e24){_0x5bbf59['push'](_0x5bbf59['shift']());}};_0x1d187f(++_0x1a97cc);}(_0x9648,0xa4));var _0x8964=function(_0x498239,_0x32ae56){_0x498239=_0x498239-0x0;var _0x4826e9=_0x9648[_0x498239];return _0x4826e9;};'use strict';var multer=require(_0x8964('0x0'));var util=require('util');var path=require(_0x8964('0x1'));var timeout=require('connect-timeout');var express=require(_0x8964('0x2'));var router=express[_0x8964('0x3')]();var fs_extra=require(_0x8964('0x4'));var auth=require(_0x8964('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8964('0x6'));var controller=require(_0x8964('0x7'));router[_0x8964('0x8')]('/',auth[_0x8964('0x9')](),controller[_0x8964('0xa')]);router[_0x8964('0x8')]('/:id',auth[_0x8964('0x9')](),controller[_0x8964('0xb')]);router['get'](_0x8964('0xc'),auth['isAuthenticated'](),controller[_0x8964('0xd')]);router['get'](_0x8964('0xe'),auth[_0x8964('0x9')](),controller[_0x8964('0xf')]);router[_0x8964('0x8')](_0x8964('0x10'),auth[_0x8964('0x9')](),controller[_0x8964('0x11')]);router[_0x8964('0x12')]('/',auth[_0x8964('0x9')](),controller[_0x8964('0x13')]);router[_0x8964('0x14')](_0x8964('0x15'),auth[_0x8964('0x9')](),controller[_0x8964('0x16')]);router[_0x8964('0x17')](_0x8964('0x15'),auth[_0x8964('0x9')](),controller[_0x8964('0x18')]);module[_0x8964('0x19')]=router;
\ No newline at end of file
index 46460e4..a291861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0254=['sequelize','STRING','ENUM','incident','phonecall'];(function(_0x5e34ad,_0x3fcdd2){var _0x215512=function(_0x289a8e){while(--_0x289a8e){_0x5e34ad['push'](_0x5e34ad['shift']());}};_0x215512(++_0x3fcdd2);}(_0x0254,0xeb));var _0x4025=function(_0x42e4ab,_0x2ad398){_0x42e4ab=_0x42e4ab-0x0;var _0x1b32c2=_0x0254[_0x42e4ab];return _0x1b32c2;};'use strict';var Sequelize=require(_0x4025('0x0'));module['exports']={'name':{'type':Sequelize[_0x4025('0x1')]},'description':{'type':Sequelize[_0x4025('0x1')]},'ticketType':{'type':Sequelize[_0x4025('0x2')](_0x4025('0x3'),_0x4025('0x4')),'defaultValue':_0x4025('0x3')}};
\ No newline at end of file
+var _0xa521=['sequelize','exports','STRING','ENUM','incident','phonecall'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xa521,0x198));var _0x1a52=function(_0x6a47b9,_0x43bf3c){_0x6a47b9=_0x6a47b9-0x0;var _0x16eb92=_0xa521[_0x6a47b9];return _0x16eb92;};'use strict';var Sequelize=require(_0x1a52('0x0'));module[_0x1a52('0x1')]={'name':{'type':Sequelize[_0x1a52('0x2')]},'description':{'type':Sequelize[_0x1a52('0x2')]},'ticketType':{'type':Sequelize[_0x1a52('0x3')](_0x1a52('0x4'),_0x1a52('0x5')),'defaultValue':_0x1a52('0x4')}};
\ No newline at end of file
index 19175bd..ead1645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2826=['includeAll','find','create','body','findOne','Dynamics365Field','pick','filter','getFields','getSubjects','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','name','send','index','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','merge','options','include','findAll','rows','catch','params'];(function(_0x4ff8d7,_0x5c5690){var _0x1f9793=function(_0x132866){while(--_0x132866){_0x4ff8d7['push'](_0x4ff8d7['shift']());}};_0x1f9793(++_0x5c5690);}(_0x2826,0x196));var _0x6282=function(_0x11e53b,_0x1c9618){_0x11e53b=_0x11e53b-0x0;var _0x4c92ef=_0x2826[_0x11e53b];return _0x4c92ef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6282('0x0'));var zipdir=require(_0x6282('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6282('0x2'));var moment=require(_0x6282('0x3'));var BPromise=require(_0x6282('0x4'));var Mustache=require(_0x6282('0x5'));var util=require(_0x6282('0x6'));var path=require(_0x6282('0x7'));var sox=require(_0x6282('0x8'));var csv=require(_0x6282('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6282('0xa'));var _=require('lodash');var squel=require(_0x6282('0xb'));var crypto=require(_0x6282('0xc'));var jsforce=require(_0x6282('0xd'));var deskjs=require(_0x6282('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6282('0xf'));var Papa=require('papaparse');var Redis=require(_0x6282('0x10'));var authService=require(_0x6282('0x11'));var qs=require(_0x6282('0x12'));var as=require(_0x6282('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x6282('0x14'));var config=require(_0x6282('0x15'));var licenseUtil=require(_0x6282('0x16'));var db=require(_0x6282('0x17'))['db'];function respondWithStatusCode(_0x193d46,_0x190d4b){_0x190d4b=_0x190d4b||0xcc;return function(_0x59ad60){if(_0x59ad60){return _0x193d46[_0x6282('0x18')](_0x190d4b);}return _0x193d46[_0x6282('0x19')](_0x190d4b)[_0x6282('0x1a')]();};}function respondWithResult(_0x96cc5b,_0x486dea){_0x486dea=_0x486dea||0xc8;return function(_0x4d44fc){if(_0x4d44fc){return _0x96cc5b[_0x6282('0x19')](_0x486dea)[_0x6282('0x1b')](_0x4d44fc);}};}function respondWithFilteredResult(_0x13b1ef,_0x28e9a8){return function(_0x552560){if(_0x552560){var _0x5451b7=typeof _0x28e9a8['offset']===_0x6282('0x1c')&&typeof _0x28e9a8[_0x6282('0x1d')]===_0x6282('0x1c');var _0x291e34=_0x552560[_0x6282('0x1e')];var _0x447b18=_0x5451b7?0x0:_0x28e9a8[_0x6282('0x1f')];var _0x25f5cf=_0x5451b7?_0x552560['count']:_0x28e9a8[_0x6282('0x1f')]+_0x28e9a8[_0x6282('0x1d')];var _0x35ddde;if(_0x25f5cf>=_0x291e34){_0x25f5cf=_0x291e34;_0x35ddde=0xc8;}else{_0x35ddde=0xce;}_0x13b1ef['status'](_0x35ddde);return _0x13b1ef[_0x6282('0x20')]('Content-Range',_0x447b18+'-'+_0x25f5cf+'/'+_0x291e34)[_0x6282('0x1b')](_0x552560);}return null;};}function patchUpdates(_0x1cbf28){return function(_0x10958e){try{jsonpatch['apply'](_0x10958e,_0x1cbf28,!![]);}catch(_0x29b650){return BPromise[_0x6282('0x21')](_0x29b650);}return _0x10958e[_0x6282('0x22')]();};}function saveUpdates(_0x416f7d,_0x41dcac){return function(_0x3041d4){if(_0x3041d4){return _0x3041d4[_0x6282('0x23')](_0x416f7d)[_0x6282('0x24')](function(_0x5ad37b){return _0x5ad37b;});}return null;};}function removeEntity(_0x3d527a,_0x8eae55){return function(_0x266cff){if(_0x266cff){return _0x266cff[_0x6282('0x25')]()['then'](function(){_0x3d527a[_0x6282('0x19')](0xcc)[_0x6282('0x1a')]();});}};}function handleEntityNotFound(_0x2b0803,_0x21e63b){return function(_0x2f5d1f){if(!_0x2f5d1f){_0x2b0803[_0x6282('0x18')](0x194);}return _0x2f5d1f;};}function handleError(_0x54e2d7,_0x22a14c){_0x22a14c=_0x22a14c||0x1f4;return function(_0x1ed16e){logger['error'](_0x1ed16e['stack']);if(_0x1ed16e[_0x6282('0x26')]){delete _0x1ed16e[_0x6282('0x26')];}_0x54e2d7[_0x6282('0x19')](_0x22a14c)[_0x6282('0x27')](_0x1ed16e);};}exports[_0x6282('0x28')]=function(_0x538d67,_0x33bd07){var _0x5abb2e={},_0x4b418f={},_0x189c90={'count':0x0,'rows':[]};var _0x38bc35=_['map'](db[_0x6282('0x29')][_0x6282('0x2a')],function(_0x14a8c5){return{'name':_0x14a8c5[_0x6282('0x2b')],'type':_0x14a8c5[_0x6282('0x2c')][_0x6282('0x2d')]};});_0x4b418f[_0x6282('0x2e')]=_[_0x6282('0x2f')](_0x38bc35,_0x6282('0x26'));_0x4b418f[_0x6282('0x30')]=_[_0x6282('0x31')](_0x538d67[_0x6282('0x30')]);_0x4b418f[_0x6282('0x32')]=_[_0x6282('0x33')](_0x4b418f[_0x6282('0x2e')],_0x4b418f['query']);_0x5abb2e['attributes']=_[_0x6282('0x33')](_0x4b418f[_0x6282('0x2e')],qs['fields'](_0x538d67[_0x6282('0x30')][_0x6282('0x34')]));_0x5abb2e['attributes']=_0x5abb2e[_0x6282('0x35')][_0x6282('0x36')]?_0x5abb2e[_0x6282('0x35')]:_0x4b418f[_0x6282('0x2e')];if(!_0x538d67[_0x6282('0x30')][_0x6282('0x37')](_0x6282('0x38'))){_0x5abb2e[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0x538d67[_0x6282('0x30')][_0x6282('0x1d')]);_0x5abb2e['offset']=qs[_0x6282('0x1f')](_0x538d67[_0x6282('0x30')]['offset']);}_0x5abb2e[_0x6282('0x39')]=qs[_0x6282('0x3a')](_0x538d67[_0x6282('0x30')][_0x6282('0x3a')]);_0x5abb2e['where']=qs[_0x6282('0x32')](_['pick'](_0x538d67[_0x6282('0x30')],_0x4b418f[_0x6282('0x32')]),_0x38bc35);if(_0x538d67[_0x6282('0x30')]['filter']){_0x5abb2e[_0x6282('0x3b')]=_['merge'](_0x5abb2e[_0x6282('0x3b')],{'$or':_[_0x6282('0x2f')](_0x38bc35,function(_0x1f9da1){if(_0x1f9da1[_0x6282('0x2c')]!==_0x6282('0x3c')){var _0x48c0db={};_0x48c0db[_0x1f9da1[_0x6282('0x26')]]={'$like':'%'+_0x538d67[_0x6282('0x30')]['filter']+'%'};return _0x48c0db;}})});}_0x5abb2e=_[_0x6282('0x3d')]({},_0x5abb2e,_0x538d67[_0x6282('0x3e')]);var _0x530169={'where':_0x5abb2e[_0x6282('0x3b')]};return db['Dynamics365Configuration'][_0x6282('0x1e')](_0x530169)[_0x6282('0x24')](function(_0x837d21){_0x189c90[_0x6282('0x1e')]=_0x837d21;if(_0x538d67[_0x6282('0x30')]['includeAll']){_0x5abb2e[_0x6282('0x3f')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x6282('0x40')](_0x5abb2e);})[_0x6282('0x24')](function(_0x40864c){_0x189c90[_0x6282('0x41')]=_0x40864c;return _0x189c90;})[_0x6282('0x24')](respondWithFilteredResult(_0x33bd07,_0x5abb2e))[_0x6282('0x42')](handleError(_0x33bd07,null));};exports['show']=function(_0x59ffc3,_0xb2353a){var _0x44034c={'raw':![],'where':{'id':_0x59ffc3[_0x6282('0x43')]['id']}},_0x3325e8={};_0x3325e8[_0x6282('0x2e')]=_[_0x6282('0x31')](db[_0x6282('0x29')][_0x6282('0x2a')]);_0x3325e8[_0x6282('0x30')]=_[_0x6282('0x31')](_0x59ffc3['query']);_0x3325e8[_0x6282('0x32')]=_[_0x6282('0x33')](_0x3325e8['model'],_0x3325e8[_0x6282('0x30')]);_0x44034c['attributes']=_[_0x6282('0x33')](_0x3325e8[_0x6282('0x2e')],qs['fields'](_0x59ffc3[_0x6282('0x30')][_0x6282('0x34')]));_0x44034c[_0x6282('0x35')]=_0x44034c[_0x6282('0x35')][_0x6282('0x36')]?_0x44034c[_0x6282('0x35')]:_0x3325e8[_0x6282('0x2e')];if(_0x59ffc3[_0x6282('0x30')][_0x6282('0x44')]){_0x44034c['include']=[{'all':!![]}];}_0x44034c=_[_0x6282('0x3d')]({},_0x44034c,_0x59ffc3[_0x6282('0x3e')]);return db[_0x6282('0x29')][_0x6282('0x45')](_0x44034c)[_0x6282('0x24')](handleEntityNotFound(_0xb2353a,null))['then'](respondWithResult(_0xb2353a,null))[_0x6282('0x42')](handleError(_0xb2353a,null));};exports[_0x6282('0x46')]=function(_0x4f8cf9,_0x1eb90d){return db[_0x6282('0x29')][_0x6282('0x46')](_0x4f8cf9[_0x6282('0x47')],{})[_0x6282('0x24')](respondWithResult(_0x1eb90d,0xc9))[_0x6282('0x42')](handleError(_0x1eb90d,null));};exports[_0x6282('0x23')]=function(_0xb17a89,_0x434c14){if(_0xb17a89['body']['id']){delete _0xb17a89[_0x6282('0x47')]['id'];}return db[_0x6282('0x29')][_0x6282('0x45')]({'where':{'id':_0xb17a89[_0x6282('0x43')]['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x434c14,null))[_0x6282('0x24')](saveUpdates(_0xb17a89['body'],null))[_0x6282('0x24')](respondWithResult(_0x434c14,null))[_0x6282('0x42')](handleError(_0x434c14,null));};exports['destroy']=function(_0x1da9f6,_0x32d288){return db[_0x6282('0x29')][_0x6282('0x45')]({'where':{'id':_0x1da9f6[_0x6282('0x43')]['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x32d288,null))[_0x6282('0x24')](removeEntity(_0x32d288,null))['catch'](handleError(_0x32d288,null));};exports['getFields']=function(_0xdfbbd4,_0x50cef9,_0x4cab99){var _0x5bf67d={};var _0xffbd39={};var _0x484e4d;var _0x8bb1ae;return db['Dynamics365Configuration'][_0x6282('0x48')]({'where':{'id':_0xdfbbd4['params']['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x50cef9,null))[_0x6282('0x24')](function(_0x2b901a){if(_0x2b901a){_0x484e4d=_0x2b901a;_0xffbd39[_0x6282('0x2e')]=_[_0x6282('0x31')](db[_0x6282('0x49')][_0x6282('0x2a')]);_0xffbd39['query']=_[_0x6282('0x31')](_0xdfbbd4[_0x6282('0x30')]);_0xffbd39[_0x6282('0x32')]=_['intersection'](_0xffbd39[_0x6282('0x2e')],_0xffbd39[_0x6282('0x30')]);_0x5bf67d['attributes']=_['intersection'](_0xffbd39['model'],qs[_0x6282('0x34')](_0xdfbbd4[_0x6282('0x30')][_0x6282('0x34')]));_0x5bf67d[_0x6282('0x35')]=_0x5bf67d[_0x6282('0x35')][_0x6282('0x36')]?_0x5bf67d[_0x6282('0x35')]:_0xffbd39['model'];_0x5bf67d[_0x6282('0x39')]=qs[_0x6282('0x3a')](_0xdfbbd4['query']['sort']);_0x5bf67d[_0x6282('0x3b')]=qs[_0x6282('0x32')](_[_0x6282('0x4a')](_0xdfbbd4[_0x6282('0x30')],_0xffbd39['filters']));if(_0xdfbbd4['query'][_0x6282('0x4b')]){_0x5bf67d[_0x6282('0x3b')]=_[_0x6282('0x3d')](_0x5bf67d[_0x6282('0x3b')],{'$or':_['map'](_0x5bf67d['attributes'],function(_0xb6902a){var _0x26116c={};_0x26116c[_0xb6902a]={'$like':'%'+_0xdfbbd4[_0x6282('0x30')]['filter']+'%'};return _0x26116c;})});}_0x5bf67d=_[_0x6282('0x3d')]({},_0x5bf67d,_0xdfbbd4[_0x6282('0x3e')]);return _0x484e4d[_0x6282('0x4c')](_0x5bf67d);}})[_0x6282('0x24')](function(_0x46640c){if(_0x46640c){_0x8bb1ae=_0x46640c['length'];if(!_0xdfbbd4[_0x6282('0x30')][_0x6282('0x37')]('nolimit')){_0x5bf67d[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0xdfbbd4[_0x6282('0x30')][_0x6282('0x1d')]);_0x5bf67d[_0x6282('0x1f')]=qs['offset'](_0xdfbbd4[_0x6282('0x30')][_0x6282('0x1f')]);}return _0x484e4d[_0x6282('0x4c')](_0x5bf67d);}})[_0x6282('0x24')](function(_0x64fe22){if(_0x64fe22){return _0x64fe22?{'count':_0x8bb1ae,'rows':_0x64fe22}:null;}})[_0x6282('0x24')](respondWithResult(_0x50cef9,null))['catch'](handleError(_0x50cef9,null));};exports['getSubjects']=function(_0x2d0390,_0x1538ca,_0x243dfd){var _0x45a47c={};var _0x58a1c9={};var _0x428ccc;var _0xc3985d;return db['Dynamics365Configuration'][_0x6282('0x48')]({'where':{'id':_0x2d0390['params']['id']}})['then'](handleEntityNotFound(_0x1538ca,null))[_0x6282('0x24')](function(_0x31dc47){if(_0x31dc47){_0x428ccc=_0x31dc47;_0x58a1c9['model']=_[_0x6282('0x31')](db[_0x6282('0x49')][_0x6282('0x2a')]);_0x58a1c9[_0x6282('0x30')]=_[_0x6282('0x31')](_0x2d0390[_0x6282('0x30')]);_0x58a1c9[_0x6282('0x32')]=_[_0x6282('0x33')](_0x58a1c9[_0x6282('0x2e')],_0x58a1c9['query']);_0x45a47c[_0x6282('0x35')]=_[_0x6282('0x33')](_0x58a1c9[_0x6282('0x2e')],qs[_0x6282('0x34')](_0x2d0390[_0x6282('0x30')][_0x6282('0x34')]));_0x45a47c[_0x6282('0x35')]=_0x45a47c[_0x6282('0x35')][_0x6282('0x36')]?_0x45a47c['attributes']:_0x58a1c9[_0x6282('0x2e')];_0x45a47c['order']=qs[_0x6282('0x3a')](_0x2d0390[_0x6282('0x30')][_0x6282('0x3a')]);_0x45a47c['where']=qs[_0x6282('0x32')](_[_0x6282('0x4a')](_0x2d0390[_0x6282('0x30')],_0x58a1c9[_0x6282('0x32')]));if(_0x2d0390[_0x6282('0x30')]['filter']){_0x45a47c[_0x6282('0x3b')]=_[_0x6282('0x3d')](_0x45a47c[_0x6282('0x3b')],{'$or':_[_0x6282('0x2f')](_0x45a47c['attributes'],function(_0x3655d7){var _0x29c1a7={};_0x29c1a7[_0x3655d7]={'$like':'%'+_0x2d0390[_0x6282('0x30')][_0x6282('0x4b')]+'%'};return _0x29c1a7;})});}_0x45a47c=_[_0x6282('0x3d')]({},_0x45a47c,_0x2d0390['options']);return _0x428ccc[_0x6282('0x4d')](_0x45a47c);}})[_0x6282('0x24')](function(_0x1a385a){if(_0x1a385a){_0xc3985d=_0x1a385a[_0x6282('0x36')];if(!_0x2d0390[_0x6282('0x30')][_0x6282('0x37')]('nolimit')){_0x45a47c[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0x2d0390[_0x6282('0x30')]['limit']);_0x45a47c[_0x6282('0x1f')]=qs[_0x6282('0x1f')](_0x2d0390[_0x6282('0x30')][_0x6282('0x1f')]);}return _0x428ccc['getSubjects'](_0x45a47c);}})[_0x6282('0x24')](function(_0x175a75){if(_0x175a75){return _0x175a75?{'count':_0xc3985d,'rows':_0x175a75}:null;}})[_0x6282('0x24')](respondWithResult(_0x1538ca,null))[_0x6282('0x42')](handleError(_0x1538ca,null));};exports['getDescriptions']=function(_0x47b8ed,_0x2b0682,_0x3cbb23){var _0x37ea58={};var _0x3e2f23={};var _0x3faac5;var _0x4df5dd;return db[_0x6282('0x29')]['findOne']({'where':{'id':_0x47b8ed[_0x6282('0x43')]['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x2b0682,null))[_0x6282('0x24')](function(_0x591c0e){if(_0x591c0e){_0x3faac5=_0x591c0e;_0x3e2f23[_0x6282('0x2e')]=_[_0x6282('0x31')](db[_0x6282('0x49')][_0x6282('0x2a')]);_0x3e2f23['query']=_[_0x6282('0x31')](_0x47b8ed[_0x6282('0x30')]);_0x3e2f23[_0x6282('0x32')]=_['intersection'](_0x3e2f23['model'],_0x3e2f23[_0x6282('0x30')]);_0x37ea58[_0x6282('0x35')]=_[_0x6282('0x33')](_0x3e2f23[_0x6282('0x2e')],qs[_0x6282('0x34')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x34')]));_0x37ea58[_0x6282('0x35')]=_0x37ea58[_0x6282('0x35')][_0x6282('0x36')]?_0x37ea58['attributes']:_0x3e2f23[_0x6282('0x2e')];_0x37ea58[_0x6282('0x39')]=qs[_0x6282('0x3a')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x3a')]);_0x37ea58[_0x6282('0x3b')]=qs[_0x6282('0x32')](_[_0x6282('0x4a')](_0x47b8ed[_0x6282('0x30')],_0x3e2f23[_0x6282('0x32')]));if(_0x47b8ed[_0x6282('0x30')][_0x6282('0x4b')]){_0x37ea58[_0x6282('0x3b')]=_[_0x6282('0x3d')](_0x37ea58[_0x6282('0x3b')],{'$or':_[_0x6282('0x2f')](_0x37ea58['attributes'],function(_0x501c7c){var _0x1ed2a0={};_0x1ed2a0[_0x501c7c]={'$like':'%'+_0x47b8ed['query'][_0x6282('0x4b')]+'%'};return _0x1ed2a0;})});}_0x37ea58=_[_0x6282('0x3d')]({},_0x37ea58,_0x47b8ed[_0x6282('0x3e')]);return _0x3faac5['getDescriptions'](_0x37ea58);}})[_0x6282('0x24')](function(_0x365a71){if(_0x365a71){_0x4df5dd=_0x365a71[_0x6282('0x36')];if(!_0x47b8ed[_0x6282('0x30')]['hasOwnProperty'](_0x6282('0x38'))){_0x37ea58[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x1d')]);_0x37ea58[_0x6282('0x1f')]=qs[_0x6282('0x1f')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x1f')]);}return _0x3faac5[_0x6282('0x4e')](_0x37ea58);}})[_0x6282('0x24')](function(_0x1260bc){if(_0x1260bc){return _0x1260bc?{'count':_0x4df5dd,'rows':_0x1260bc}:null;}})[_0x6282('0x24')](respondWithResult(_0x2b0682,null))[_0x6282('0x42')](handleError(_0x2b0682,null));};
\ No newline at end of file
+var _0x2f22=['options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','getFields','findOne','Dynamics365Field','nolimit','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','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/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x2f22,0x64));var _0x22f2=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2f22[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x22f2('0x0'));var rimraf=require(_0x22f2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x22f2('0x2'));var rp=require(_0x22f2('0x3'));var moment=require(_0x22f2('0x4'));var BPromise=require(_0x22f2('0x5'));var Mustache=require('mustache');var util=require(_0x22f2('0x6'));var path=require(_0x22f2('0x7'));var sox=require(_0x22f2('0x8'));var csv=require(_0x22f2('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x22f2('0xa'));var _=require(_0x22f2('0xb'));var squel=require(_0x22f2('0xc'));var crypto=require('crypto');var jsforce=require(_0x22f2('0xd'));var deskjs=require(_0x22f2('0xe'));var toCsv=require('to-csv');var querystring=require(_0x22f2('0xf'));var Papa=require(_0x22f2('0x10'));var Redis=require(_0x22f2('0x11'));var authService=require(_0x22f2('0x12'));var qs=require(_0x22f2('0x13'));var as=require(_0x22f2('0x14'));var hardwareService=require(_0x22f2('0x15'));var logger=require(_0x22f2('0x16'))(_0x22f2('0x17'));var utils=require('../../config/utils');var config=require(_0x22f2('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x22f2('0x19'))['db'];function respondWithStatusCode(_0x8a8cf,_0x445019){_0x445019=_0x445019||0xcc;return function(_0x44d055){if(_0x44d055){return _0x8a8cf[_0x22f2('0x1a')](_0x445019);}return _0x8a8cf['status'](_0x445019)['end']();};}function respondWithResult(_0x215135,_0x5baa56){_0x5baa56=_0x5baa56||0xc8;return function(_0x27a1b1){if(_0x27a1b1){return _0x215135[_0x22f2('0x1b')](_0x5baa56)[_0x22f2('0x1c')](_0x27a1b1);}};}function respondWithFilteredResult(_0x38b3b4,_0x25048c){return function(_0x1e0f74){if(_0x1e0f74){var _0x264983=typeof _0x25048c[_0x22f2('0x1d')]===_0x22f2('0x1e')&&typeof _0x25048c[_0x22f2('0x1f')]===_0x22f2('0x1e');var _0x84e754=_0x1e0f74[_0x22f2('0x20')];var _0x201945=_0x264983?0x0:_0x25048c[_0x22f2('0x1d')];var _0x364cf5=_0x264983?_0x1e0f74[_0x22f2('0x20')]:_0x25048c[_0x22f2('0x1d')]+_0x25048c['limit'];var _0x44d454;if(_0x364cf5>=_0x84e754){_0x364cf5=_0x84e754;_0x44d454=0xc8;}else{_0x44d454=0xce;}_0x38b3b4['status'](_0x44d454);return _0x38b3b4['set'](_0x22f2('0x21'),_0x201945+'-'+_0x364cf5+'/'+_0x84e754)[_0x22f2('0x1c')](_0x1e0f74);}return null;};}function patchUpdates(_0x41bb1d){return function(_0x1c43c6){try{jsonpatch[_0x22f2('0x22')](_0x1c43c6,_0x41bb1d,!![]);}catch(_0x23070f){return BPromise[_0x22f2('0x23')](_0x23070f);}return _0x1c43c6['save']();};}function saveUpdates(_0x1371f7,_0x57701b){return function(_0x79609d){if(_0x79609d){return _0x79609d[_0x22f2('0x24')](_0x1371f7)['then'](function(_0x48e90d){return _0x48e90d;});}return null;};}function removeEntity(_0x4ed3b1,_0x2ca0d9){return function(_0x4ce5c6){if(_0x4ce5c6){return _0x4ce5c6[_0x22f2('0x25')]()[_0x22f2('0x26')](function(){_0x4ed3b1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c473a,_0x348c9f){return function(_0x21db72){if(!_0x21db72){_0x5c473a[_0x22f2('0x1a')](0x194);}return _0x21db72;};}function handleError(_0x37a2a2,_0x2d0808){_0x2d0808=_0x2d0808||0x1f4;return function(_0x5d3866){logger[_0x22f2('0x27')](_0x5d3866[_0x22f2('0x28')]);if(_0x5d3866[_0x22f2('0x29')]){delete _0x5d3866['name'];}_0x37a2a2[_0x22f2('0x1b')](_0x2d0808)[_0x22f2('0x2a')](_0x5d3866);};}exports['index']=function(_0x8b7a11,_0x130a6c){var _0x3f3574={},_0x1f26eb={},_0x4986e8={'count':0x0,'rows':[]};var _0x102022=_[_0x22f2('0x2b')](db[_0x22f2('0x2c')][_0x22f2('0x2d')],function(_0x4f7240){return{'name':_0x4f7240[_0x22f2('0x2e')],'type':_0x4f7240[_0x22f2('0x2f')][_0x22f2('0x30')]};});_0x1f26eb['model']=_[_0x22f2('0x2b')](_0x102022,_0x22f2('0x29'));_0x1f26eb[_0x22f2('0x31')]=_['keys'](_0x8b7a11[_0x22f2('0x31')]);_0x1f26eb['filters']=_['intersection'](_0x1f26eb[_0x22f2('0x32')],_0x1f26eb['query']);_0x3f3574[_0x22f2('0x33')]=_[_0x22f2('0x34')](_0x1f26eb[_0x22f2('0x32')],qs['fields'](_0x8b7a11[_0x22f2('0x31')][_0x22f2('0x35')]));_0x3f3574['attributes']=_0x3f3574[_0x22f2('0x33')][_0x22f2('0x36')]?_0x3f3574[_0x22f2('0x33')]:_0x1f26eb[_0x22f2('0x32')];if(!_0x8b7a11['query'][_0x22f2('0x37')]('nolimit')){_0x3f3574['limit']=qs[_0x22f2('0x1f')](_0x8b7a11[_0x22f2('0x31')]['limit']);_0x3f3574[_0x22f2('0x1d')]=qs['offset'](_0x8b7a11[_0x22f2('0x31')][_0x22f2('0x1d')]);}_0x3f3574[_0x22f2('0x38')]=qs[_0x22f2('0x39')](_0x8b7a11[_0x22f2('0x31')][_0x22f2('0x39')]);_0x3f3574[_0x22f2('0x3a')]=qs[_0x22f2('0x3b')](_[_0x22f2('0x3c')](_0x8b7a11['query'],_0x1f26eb[_0x22f2('0x3b')]),_0x102022);if(_0x8b7a11[_0x22f2('0x31')][_0x22f2('0x3d')]){_0x3f3574['where']=_[_0x22f2('0x3e')](_0x3f3574[_0x22f2('0x3a')],{'$or':_['map'](_0x102022,function(_0x3baa8a){if(_0x3baa8a['type']!==_0x22f2('0x3f')){var _0x1b88f5={};_0x1b88f5[_0x3baa8a[_0x22f2('0x29')]]={'$like':'%'+_0x8b7a11[_0x22f2('0x31')]['filter']+'%'};return _0x1b88f5;}})});}_0x3f3574=_[_0x22f2('0x3e')]({},_0x3f3574,_0x8b7a11[_0x22f2('0x40')]);var _0x271b47={'where':_0x3f3574[_0x22f2('0x3a')]};return db[_0x22f2('0x2c')][_0x22f2('0x20')](_0x271b47)['then'](function(_0x4b724d){_0x4986e8[_0x22f2('0x20')]=_0x4b724d;if(_0x8b7a11[_0x22f2('0x31')][_0x22f2('0x41')]){_0x3f3574[_0x22f2('0x42')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x22f2('0x43')](_0x3f3574);})[_0x22f2('0x26')](function(_0x221c5a){_0x4986e8[_0x22f2('0x44')]=_0x221c5a;return _0x4986e8;})[_0x22f2('0x26')](respondWithFilteredResult(_0x130a6c,_0x3f3574))[_0x22f2('0x45')](handleError(_0x130a6c,null));};exports[_0x22f2('0x46')]=function(_0x43f6c5,_0x27b715){var _0x45a777={'raw':![],'where':{'id':_0x43f6c5[_0x22f2('0x47')]['id']}},_0x1828dd={};_0x1828dd[_0x22f2('0x32')]=_[_0x22f2('0x48')](db[_0x22f2('0x2c')]['rawAttributes']);_0x1828dd[_0x22f2('0x31')]=_[_0x22f2('0x48')](_0x43f6c5[_0x22f2('0x31')]);_0x1828dd[_0x22f2('0x3b')]=_[_0x22f2('0x34')](_0x1828dd[_0x22f2('0x32')],_0x1828dd[_0x22f2('0x31')]);_0x45a777[_0x22f2('0x33')]=_[_0x22f2('0x34')](_0x1828dd['model'],qs['fields'](_0x43f6c5[_0x22f2('0x31')][_0x22f2('0x35')]));_0x45a777[_0x22f2('0x33')]=_0x45a777[_0x22f2('0x33')][_0x22f2('0x36')]?_0x45a777['attributes']:_0x1828dd[_0x22f2('0x32')];if(_0x43f6c5[_0x22f2('0x31')][_0x22f2('0x41')]){_0x45a777['include']=[{'all':!![]}];}_0x45a777=_['merge']({},_0x45a777,_0x43f6c5[_0x22f2('0x40')]);return db[_0x22f2('0x2c')][_0x22f2('0x49')](_0x45a777)[_0x22f2('0x26')](handleEntityNotFound(_0x27b715,null))[_0x22f2('0x26')](respondWithResult(_0x27b715,null))[_0x22f2('0x45')](handleError(_0x27b715,null));};exports[_0x22f2('0x4a')]=function(_0x37dc9a,_0x5b5773){return db[_0x22f2('0x2c')][_0x22f2('0x4a')](_0x37dc9a[_0x22f2('0x4b')],{})['then'](respondWithResult(_0x5b5773,0xc9))[_0x22f2('0x45')](handleError(_0x5b5773,null));};exports['update']=function(_0x74fd7a,_0x3457be){if(_0x74fd7a[_0x22f2('0x4b')]['id']){delete _0x74fd7a['body']['id'];}return db['Dynamics365Configuration'][_0x22f2('0x49')]({'where':{'id':_0x74fd7a[_0x22f2('0x47')]['id']}})[_0x22f2('0x26')](handleEntityNotFound(_0x3457be,null))[_0x22f2('0x26')](saveUpdates(_0x74fd7a['body'],null))[_0x22f2('0x26')](respondWithResult(_0x3457be,null))['catch'](handleError(_0x3457be,null));};exports['destroy']=function(_0x2c9662,_0x3c8aeb){return db[_0x22f2('0x2c')][_0x22f2('0x49')]({'where':{'id':_0x2c9662[_0x22f2('0x47')]['id']}})[_0x22f2('0x26')](handleEntityNotFound(_0x3c8aeb,null))[_0x22f2('0x26')](removeEntity(_0x3c8aeb,null))['catch'](handleError(_0x3c8aeb,null));};exports[_0x22f2('0x4c')]=function(_0x5638e9,_0x254a42,_0x5ee7d6){var _0x35b42e={};var _0x20bb51={};var _0xb063e8;var _0x10a57b;return db['Dynamics365Configuration'][_0x22f2('0x4d')]({'where':{'id':_0x5638e9['params']['id']}})[_0x22f2('0x26')](handleEntityNotFound(_0x254a42,null))[_0x22f2('0x26')](function(_0x1e4ed0){if(_0x1e4ed0){_0xb063e8=_0x1e4ed0;_0x20bb51[_0x22f2('0x32')]=_[_0x22f2('0x48')](db[_0x22f2('0x4e')][_0x22f2('0x2d')]);_0x20bb51['query']=_[_0x22f2('0x48')](_0x5638e9[_0x22f2('0x31')]);_0x20bb51[_0x22f2('0x3b')]=_['intersection'](_0x20bb51[_0x22f2('0x32')],_0x20bb51[_0x22f2('0x31')]);_0x35b42e[_0x22f2('0x33')]=_[_0x22f2('0x34')](_0x20bb51[_0x22f2('0x32')],qs[_0x22f2('0x35')](_0x5638e9[_0x22f2('0x31')][_0x22f2('0x35')]));_0x35b42e[_0x22f2('0x33')]=_0x35b42e[_0x22f2('0x33')][_0x22f2('0x36')]?_0x35b42e['attributes']:_0x20bb51[_0x22f2('0x32')];_0x35b42e[_0x22f2('0x38')]=qs[_0x22f2('0x39')](_0x5638e9[_0x22f2('0x31')]['sort']);_0x35b42e['where']=qs[_0x22f2('0x3b')](_[_0x22f2('0x3c')](_0x5638e9[_0x22f2('0x31')],_0x20bb51[_0x22f2('0x3b')]));if(_0x5638e9['query'][_0x22f2('0x3d')]){_0x35b42e['where']=_['merge'](_0x35b42e[_0x22f2('0x3a')],{'$or':_['map'](_0x35b42e['attributes'],function(_0x25e5a4){var _0x594257={};_0x594257[_0x25e5a4]={'$like':'%'+_0x5638e9[_0x22f2('0x31')][_0x22f2('0x3d')]+'%'};return _0x594257;})});}_0x35b42e=_['merge']({},_0x35b42e,_0x5638e9['options']);return _0xb063e8[_0x22f2('0x4c')](_0x35b42e);}})[_0x22f2('0x26')](function(_0x22b48e){if(_0x22b48e){_0x10a57b=_0x22b48e[_0x22f2('0x36')];if(!_0x5638e9[_0x22f2('0x31')][_0x22f2('0x37')](_0x22f2('0x4f'))){_0x35b42e[_0x22f2('0x1f')]=qs[_0x22f2('0x1f')](_0x5638e9[_0x22f2('0x31')][_0x22f2('0x1f')]);_0x35b42e[_0x22f2('0x1d')]=qs[_0x22f2('0x1d')](_0x5638e9[_0x22f2('0x31')][_0x22f2('0x1d')]);}return _0xb063e8[_0x22f2('0x4c')](_0x35b42e);}})[_0x22f2('0x26')](function(_0x2d9822){if(_0x2d9822){return _0x2d9822?{'count':_0x10a57b,'rows':_0x2d9822}:null;}})['then'](respondWithResult(_0x254a42,null))['catch'](handleError(_0x254a42,null));};exports[_0x22f2('0x50')]=function(_0x524d7e,_0x4f0629,_0x5c8983){var _0xe23ea8={};var _0x1c336c={};var _0x384e8a;var _0x14313e;return db[_0x22f2('0x2c')][_0x22f2('0x4d')]({'where':{'id':_0x524d7e[_0x22f2('0x47')]['id']}})[_0x22f2('0x26')](handleEntityNotFound(_0x4f0629,null))[_0x22f2('0x26')](function(_0x5aa7d1){if(_0x5aa7d1){_0x384e8a=_0x5aa7d1;_0x1c336c[_0x22f2('0x32')]=_[_0x22f2('0x48')](db[_0x22f2('0x4e')]['rawAttributes']);_0x1c336c[_0x22f2('0x31')]=_['keys'](_0x524d7e[_0x22f2('0x31')]);_0x1c336c[_0x22f2('0x3b')]=_[_0x22f2('0x34')](_0x1c336c[_0x22f2('0x32')],_0x1c336c[_0x22f2('0x31')]);_0xe23ea8[_0x22f2('0x33')]=_[_0x22f2('0x34')](_0x1c336c[_0x22f2('0x32')],qs['fields'](_0x524d7e[_0x22f2('0x31')][_0x22f2('0x35')]));_0xe23ea8['attributes']=_0xe23ea8['attributes']['length']?_0xe23ea8[_0x22f2('0x33')]:_0x1c336c[_0x22f2('0x32')];_0xe23ea8['order']=qs[_0x22f2('0x39')](_0x524d7e['query'][_0x22f2('0x39')]);_0xe23ea8[_0x22f2('0x3a')]=qs[_0x22f2('0x3b')](_[_0x22f2('0x3c')](_0x524d7e[_0x22f2('0x31')],_0x1c336c['filters']));if(_0x524d7e[_0x22f2('0x31')][_0x22f2('0x3d')]){_0xe23ea8[_0x22f2('0x3a')]=_['merge'](_0xe23ea8[_0x22f2('0x3a')],{'$or':_['map'](_0xe23ea8[_0x22f2('0x33')],function(_0x359456){var _0xf2a07a={};_0xf2a07a[_0x359456]={'$like':'%'+_0x524d7e[_0x22f2('0x31')]['filter']+'%'};return _0xf2a07a;})});}_0xe23ea8=_[_0x22f2('0x3e')]({},_0xe23ea8,_0x524d7e[_0x22f2('0x40')]);return _0x384e8a[_0x22f2('0x50')](_0xe23ea8);}})['then'](function(_0x2818b4){if(_0x2818b4){_0x14313e=_0x2818b4['length'];if(!_0x524d7e[_0x22f2('0x31')][_0x22f2('0x37')](_0x22f2('0x4f'))){_0xe23ea8['limit']=qs[_0x22f2('0x1f')](_0x524d7e[_0x22f2('0x31')][_0x22f2('0x1f')]);_0xe23ea8[_0x22f2('0x1d')]=qs[_0x22f2('0x1d')](_0x524d7e[_0x22f2('0x31')][_0x22f2('0x1d')]);}return _0x384e8a[_0x22f2('0x50')](_0xe23ea8);}})['then'](function(_0x1c13d7){if(_0x1c13d7){return _0x1c13d7?{'count':_0x14313e,'rows':_0x1c13d7}:null;}})[_0x22f2('0x26')](respondWithResult(_0x4f0629,null))[_0x22f2('0x45')](handleError(_0x4f0629,null));};exports[_0x22f2('0x51')]=function(_0x1e6690,_0x3ff0ad,_0x548f5f){var _0x15cec5={};var _0x500f91={};var _0x11e7e5;var _0x28f686;return db[_0x22f2('0x2c')][_0x22f2('0x4d')]({'where':{'id':_0x1e6690['params']['id']}})[_0x22f2('0x26')](handleEntityNotFound(_0x3ff0ad,null))[_0x22f2('0x26')](function(_0x144148){if(_0x144148){_0x11e7e5=_0x144148;_0x500f91[_0x22f2('0x32')]=_['keys'](db[_0x22f2('0x4e')][_0x22f2('0x2d')]);_0x500f91[_0x22f2('0x31')]=_[_0x22f2('0x48')](_0x1e6690[_0x22f2('0x31')]);_0x500f91['filters']=_[_0x22f2('0x34')](_0x500f91[_0x22f2('0x32')],_0x500f91[_0x22f2('0x31')]);_0x15cec5[_0x22f2('0x33')]=_[_0x22f2('0x34')](_0x500f91['model'],qs[_0x22f2('0x35')](_0x1e6690[_0x22f2('0x31')]['fields']));_0x15cec5[_0x22f2('0x33')]=_0x15cec5[_0x22f2('0x33')][_0x22f2('0x36')]?_0x15cec5[_0x22f2('0x33')]:_0x500f91[_0x22f2('0x32')];_0x15cec5[_0x22f2('0x38')]=qs[_0x22f2('0x39')](_0x1e6690[_0x22f2('0x31')][_0x22f2('0x39')]);_0x15cec5['where']=qs[_0x22f2('0x3b')](_[_0x22f2('0x3c')](_0x1e6690[_0x22f2('0x31')],_0x500f91['filters']));if(_0x1e6690['query'][_0x22f2('0x3d')]){_0x15cec5['where']=_['merge'](_0x15cec5['where'],{'$or':_[_0x22f2('0x2b')](_0x15cec5[_0x22f2('0x33')],function(_0x28aea4){var _0x4d98b3={};_0x4d98b3[_0x28aea4]={'$like':'%'+_0x1e6690[_0x22f2('0x31')][_0x22f2('0x3d')]+'%'};return _0x4d98b3;})});}_0x15cec5=_[_0x22f2('0x3e')]({},_0x15cec5,_0x1e6690[_0x22f2('0x40')]);return _0x11e7e5['getDescriptions'](_0x15cec5);}})['then'](function(_0x4c2d68){if(_0x4c2d68){_0x28f686=_0x4c2d68[_0x22f2('0x36')];if(!_0x1e6690[_0x22f2('0x31')][_0x22f2('0x37')](_0x22f2('0x4f'))){_0x15cec5[_0x22f2('0x1f')]=qs[_0x22f2('0x1f')](_0x1e6690[_0x22f2('0x31')][_0x22f2('0x1f')]);_0x15cec5[_0x22f2('0x1d')]=qs[_0x22f2('0x1d')](_0x1e6690['query'][_0x22f2('0x1d')]);}return _0x11e7e5['getDescriptions'](_0x15cec5);}})[_0x22f2('0x26')](function(_0x4f3523){if(_0x4f3523){return _0x4f3523?{'count':_0x28f686,'rows':_0x4f3523}:null;}})[_0x22f2('0x26')](respondWithResult(_0x3ff0ad,null))[_0x22f2('0x45')](handleError(_0x3ff0ad,null));};
\ No newline at end of file
index a17dcaa..92181c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x457bec,_0x213f2b){var _0x2d8a8e=function(_0x4e819e){while(--_0x4e819e){_0x457bec['push'](_0x457bec['shift']());}};_0x2d8a8e(++_0x213f2b);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2fc905,_0x22c8ca){_0x2fc905=_0x2fc905-0x0;var _0x4ac29d=_0xb43b[_0x2fc905];return _0x4ac29d;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['int_dynamics365_configurations','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./intDynamics365Configuration.attributes'];(function(_0x61bb05,_0x47421f){var _0x3ceb3e=function(_0x54b8f7){while(--_0x54b8f7){_0x61bb05['push'](_0x61bb05['shift']());}};_0x3ceb3e(++_0x47421f);}(_0x70e0,0x17b));var _0x070e=function(_0x5907b6,_0x2a918c){_0x5907b6=_0x5907b6-0x0;var _0x1d2e60=_0x70e0[_0x5907b6];return _0x1d2e60;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('Dynamics365Configuration',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f847499..0e73dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8ba=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','then','info','Dynamics365Configuration,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x3aaf0a,_0x450970){var _0x33e6bc=function(_0x1db54d){while(--_0x1db54d){_0x3aaf0a['push'](_0x3aaf0a['shift']());}};_0x33e6bc(++_0x450970);}(_0xb8ba,0x113));var _0xab8b=function(_0x23b0b1,_0x4ce415){_0x23b0b1=_0x23b0b1-0x0;var _0x39dc3c=_0xb8ba[_0x23b0b1];return _0x39dc3c;};'use strict';var _=require(_0xab8b('0x0'));var util=require('util');var moment=require(_0xab8b('0x1'));var BPromise=require(_0xab8b('0x2'));var rs=require(_0xab8b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab8b('0x4'))['db'];var utils=require(_0xab8b('0x5'));var logger=require('../../config/logger')(_0xab8b('0x6'));var config=require('../../config/environment');var jayson=require(_0xab8b('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x56ed7e,_0x213219,_0x126912){return new BPromise(function(_0x2efaf6,_0x1585e7){return client['request'](_0x56ed7e,_0x126912)[_0xab8b('0x8')](function(_0x4b2938){logger[_0xab8b('0x9')](_0xab8b('0xa'),_0x213219,'request\x20sent');logger[_0xab8b('0xb')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x213219,_0xab8b('0xc'),JSON['stringify'](_0x4b2938));if(_0x4b2938[_0xab8b('0xd')]){if(_0x4b2938[_0xab8b('0xd')][_0xab8b('0xe')]===0x1f4){logger[_0xab8b('0xd')](_0xab8b('0xa'),_0x213219,_0x4b2938[_0xab8b('0xd')][_0xab8b('0xf')]);return _0x1585e7(_0x4b2938[_0xab8b('0xd')]['message']);}logger[_0xab8b('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x213219,_0x4b2938['error'][_0xab8b('0xf')]);return _0x2efaf6(_0x4b2938[_0xab8b('0xd')][_0xab8b('0xf')]);}else{logger[_0xab8b('0x9')](_0xab8b('0xa'),_0x213219,_0xab8b('0xc'));_0x2efaf6(_0x4b2938[_0xab8b('0x10')][_0xab8b('0xf')]);}})[_0xab8b('0x11')](function(_0x54620f){logger[_0xab8b('0xd')](_0xab8b('0xa'),_0x213219,_0x54620f);_0x1585e7(_0x54620f);});});}
\ No newline at end of file
+var _0xea27=['http','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client'];(function(_0x1b4518,_0x1a2196){var _0x3063cb=function(_0x216472){while(--_0x216472){_0x1b4518['push'](_0x1b4518['shift']());}};_0x3063cb(++_0x1a2196);}(_0xea27,0x132));var _0x7ea2=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0xea27[_0x28d18d];return _0x470640;};'use strict';var _=require('lodash');var util=require(_0x7ea2('0x0'));var moment=require(_0x7ea2('0x1'));var BPromise=require(_0x7ea2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7ea2('0x3'));var db=require(_0x7ea2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7ea2('0x5'))(_0x7ea2('0x6'));var config=require('../../config/environment');var jayson=require(_0x7ea2('0x7'));var client=jayson[_0x7ea2('0x8')][_0x7ea2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc4c72,_0x33a0eb,_0x2a7237){return new BPromise(function(_0x43d155,_0x5279e2){return client['request'](_0xc4c72,_0x2a7237)[_0x7ea2('0xa')](function(_0x4417fe){logger['info'](_0x7ea2('0xb'),_0x33a0eb,_0x7ea2('0xc'));logger[_0x7ea2('0xd')](_0x7ea2('0xe'),_0x33a0eb,_0x7ea2('0xc'),JSON[_0x7ea2('0xf')](_0x4417fe));if(_0x4417fe[_0x7ea2('0x10')]){if(_0x4417fe[_0x7ea2('0x10')]['code']===0x1f4){logger['error'](_0x7ea2('0xb'),_0x33a0eb,_0x4417fe[_0x7ea2('0x10')][_0x7ea2('0x11')]);return _0x5279e2(_0x4417fe[_0x7ea2('0x10')]['message']);}logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x33a0eb,_0x4417fe[_0x7ea2('0x10')][_0x7ea2('0x11')]);return _0x43d155(_0x4417fe[_0x7ea2('0x10')][_0x7ea2('0x11')]);}else{logger[_0x7ea2('0x12')](_0x7ea2('0xb'),_0x33a0eb,_0x7ea2('0xc'));_0x43d155(_0x4417fe[_0x7ea2('0x13')][_0x7ea2('0x11')]);}})[_0x7ea2('0x14')](function(_0x4e70d6){logger[_0x7ea2('0x10')]('Dynamics365Configuration,\x20%s,\x20%s',_0x33a0eb,_0x4e70d6);_0x5279e2(_0x4e70d6);});});}
\ No newline at end of file
index 044b9b3..1a01617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64e6=['delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','post','create','put','/:id','update'];(function(_0x1a1601,_0x4567ea){var _0x566869=function(_0x46614e){while(--_0x46614e){_0x1a1601['push'](_0x1a1601['shift']());}};_0x566869(++_0x4567ea);}(_0x64e6,0x1ab));var _0x664e=function(_0x4854e7,_0x46fbb0){_0x4854e7=_0x4854e7-0x0;var _0x45a654=_0x64e6[_0x4854e7];return _0x45a654;};'use strict';var multer=require(_0x664e('0x0'));var util=require(_0x664e('0x1'));var path=require('path');var timeout=require(_0x664e('0x2'));var express=require('express');var router=express[_0x664e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x664e('0x4'));var interaction=require(_0x664e('0x5'));var config=require(_0x664e('0x6'));var controller=require(_0x664e('0x7'));router[_0x664e('0x8')]('/',auth[_0x664e('0x9')](),controller['index']);router['get']('/:id',auth[_0x664e('0x9')](),controller['show']);router[_0x664e('0xa')]('/',auth['isAuthenticated'](),controller[_0x664e('0xb')]);router[_0x664e('0xc')](_0x664e('0xd'),auth[_0x664e('0x9')](),controller[_0x664e('0xe')]);router[_0x664e('0xf')](_0x664e('0xd'),auth['isAuthenticated'](),controller[_0x664e('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x1690=['/:id','show','post','put','update','delete','destroy','util','path','express','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index'];(function(_0x54ea0f,_0x130ad3){var _0x2dccf5=function(_0x4749ef){while(--_0x4749ef){_0x54ea0f['push'](_0x54ea0f['shift']());}};_0x2dccf5(++_0x130ad3);}(_0x1690,0x1c9));var _0x0169=function(_0x9336f8,_0x286899){_0x9336f8=_0x9336f8-0x0;var _0x32adbb=_0x1690[_0x9336f8];return _0x32adbb;};'use strict';var multer=require('multer');var util=require(_0x0169('0x0'));var path=require(_0x0169('0x1'));var timeout=require('connect-timeout');var express=require(_0x0169('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(_0x0169('0x3'));var controller=require(_0x0169('0x4'));router[_0x0169('0x5')]('/',auth[_0x0169('0x6')](),controller[_0x0169('0x7')]);router[_0x0169('0x5')](_0x0169('0x8'),auth[_0x0169('0x6')](),controller[_0x0169('0x9')]);router[_0x0169('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0169('0xb')](_0x0169('0x8'),auth[_0x0169('0x6')](),controller[_0x0169('0xc')]);router[_0x0169('0xd')](_0x0169('0x8'),auth['isAuthenticated'](),controller[_0x0169('0xe')]);module['exports']=router;
\ No newline at end of file
index 2d64104..b6432d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c67=['keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string','customVariable'];(function(_0x336d4a,_0x1f1544){var _0x565506=function(_0x1e01b9){while(--_0x1e01b9){_0x336d4a['push'](_0x336d4a['shift']());}};_0x565506(++_0x1f1544);}(_0x4c67,0xd4));var _0x74c6=function(_0x563dd7,_0x4ad148){_0x563dd7=_0x563dd7-0x0;var _0x5e1bc3=_0x4c67[_0x563dd7];return _0x5e1bc3;};'use strict';var Sequelize=require('sequelize');module[_0x74c6('0x0')]={'type':{'type':Sequelize[_0x74c6('0x1')](_0x74c6('0x2'),'variable',_0x74c6('0x3'),_0x74c6('0x4'),_0x74c6('0x5')),'defaultValue':_0x74c6('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x74c6('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x74c6('0x6')]},'nameField':{'type':Sequelize[_0x74c6('0x6')]},'customField':{'type':Sequelize[_0x74c6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x380b=['STRING','customVariable','BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist'];(function(_0x343bfd,_0x26de43){var _0x5a0d6f=function(_0x2a3412){while(--_0x2a3412){_0x343bfd['push'](_0x343bfd['shift']());}};_0x5a0d6f(++_0x26de43);}(_0x380b,0xf3));var _0xb380=function(_0x4c3f56,_0x5cc86e){_0x4c3f56=_0x4c3f56-0x0;var _0x1589cd=_0x380b[_0x4c3f56];return _0x1589cd;};'use strict';var Sequelize=require(_0xb380('0x0'));module[_0xb380('0x1')]={'type':{'type':Sequelize[_0xb380('0x2')](_0xb380('0x3'),_0xb380('0x4'),'customVariable',_0xb380('0x5'),_0xb380('0x6')),'defaultValue':_0xb380('0x3')},'content':{'type':Sequelize[_0xb380('0x7')]},'key':{'type':Sequelize[_0xb380('0x7')]},'keyType':{'type':Sequelize[_0xb380('0x2')](_0xb380('0x3'),_0xb380('0x4'),_0xb380('0x8'))},'keyContent':{'type':Sequelize[_0xb380('0x7')]},'idField':{'type':Sequelize[_0xb380('0x7')]},'nameField':{'type':Sequelize[_0xb380('0x7')]},'customField':{'type':Sequelize[_0xb380('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb380('0x7')]}};
\ No newline at end of file
index dd0b643..d830990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae8b=['count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','index','Dynamics365Field','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','rawAttributes','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xae8b,0x1a7));var _0xbae8=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xae8b[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0xbae8('0x0'));var rimraf=require(_0xbae8('0x1'));var zipdir=require(_0xbae8('0x2'));var jsonpatch=require(_0xbae8('0x3'));var rp=require(_0xbae8('0x4'));var moment=require(_0xbae8('0x5'));var BPromise=require(_0xbae8('0x6'));var Mustache=require(_0xbae8('0x7'));var util=require(_0xbae8('0x8'));var path=require(_0xbae8('0x9'));var sox=require(_0xbae8('0xa'));var csv=require(_0xbae8('0xb'));var ejs=require(_0xbae8('0xc'));var fs=require('fs');var fs_extra=require(_0xbae8('0xd'));var _=require(_0xbae8('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbae8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xbae8('0xb'));var querystring=require('querystring');var Papa=require(_0xbae8('0x10'));var Redis=require(_0xbae8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbae8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbae8('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbae8('0x14'));var config=require(_0xbae8('0x15'));var licenseUtil=require(_0xbae8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b908a,_0xdf4584){_0xdf4584=_0xdf4584||0xcc;return function(_0x1f11cf){if(_0x1f11cf){return _0x5b908a['sendStatus'](_0xdf4584);}return _0x5b908a[_0xbae8('0x17')](_0xdf4584)[_0xbae8('0x18')]();};}function respondWithResult(_0x145031,_0x38d998){_0x38d998=_0x38d998||0xc8;return function(_0x3b5d5c){if(_0x3b5d5c){return _0x145031['status'](_0x38d998)[_0xbae8('0x19')](_0x3b5d5c);}};}function respondWithFilteredResult(_0x1adaca,_0x31faf5){return function(_0x38bdbe){if(_0x38bdbe){var _0x178dfc=typeof _0x31faf5['offset']===_0xbae8('0x1a')&&typeof _0x31faf5['limit']===_0xbae8('0x1a');var _0x199298=_0x38bdbe[_0xbae8('0x1b')];var _0x19d470=_0x178dfc?0x0:_0x31faf5[_0xbae8('0x1c')];var _0x1757ed=_0x178dfc?_0x38bdbe['count']:_0x31faf5[_0xbae8('0x1c')]+_0x31faf5[_0xbae8('0x1d')];var _0x438160;if(_0x1757ed>=_0x199298){_0x1757ed=_0x199298;_0x438160=0xc8;}else{_0x438160=0xce;}_0x1adaca['status'](_0x438160);return _0x1adaca[_0xbae8('0x1e')](_0xbae8('0x1f'),_0x19d470+'-'+_0x1757ed+'/'+_0x199298)[_0xbae8('0x19')](_0x38bdbe);}return null;};}function patchUpdates(_0x2dc156){return function(_0x48dbb6){try{jsonpatch[_0xbae8('0x20')](_0x48dbb6,_0x2dc156,!![]);}catch(_0x173dd4){return BPromise[_0xbae8('0x21')](_0x173dd4);}return _0x48dbb6[_0xbae8('0x22')]();};}function saveUpdates(_0x3cb8ca,_0x145daa){return function(_0x37aa1d){if(_0x37aa1d){return _0x37aa1d[_0xbae8('0x23')](_0x3cb8ca)['then'](function(_0x29cfed){return _0x29cfed;});}return null;};}function removeEntity(_0xd2b14e,_0x5f04a9){return function(_0x57d77c){if(_0x57d77c){return _0x57d77c[_0xbae8('0x24')]()['then'](function(){_0xd2b14e[_0xbae8('0x17')](0xcc)[_0xbae8('0x18')]();});}};}function handleEntityNotFound(_0x2284ac,_0x194c49){return function(_0xc46e7f){if(!_0xc46e7f){_0x2284ac[_0xbae8('0x25')](0x194);}return _0xc46e7f;};}function handleError(_0x1d7219,_0x26cb63){_0x26cb63=_0x26cb63||0x1f4;return function(_0x1b9adb){logger[_0xbae8('0x26')](_0x1b9adb[_0xbae8('0x27')]);if(_0x1b9adb[_0xbae8('0x28')]){delete _0x1b9adb[_0xbae8('0x28')];}_0x1d7219[_0xbae8('0x17')](_0x26cb63)[_0xbae8('0x29')](_0x1b9adb);};}exports[_0xbae8('0x2a')]=function(_0x3e0d54,_0xd22cf5){var _0x2aa0d9={},_0x3752ba={},_0x557e43={'count':0x0,'rows':[]};var _0x5620f2=_['map'](db[_0xbae8('0x2b')]['rawAttributes'],function(_0x344a89){return{'name':_0x344a89[_0xbae8('0x2c')],'type':_0x344a89[_0xbae8('0x2d')]['key']};});_0x3752ba[_0xbae8('0x2e')]=_[_0xbae8('0x2f')](_0x5620f2,_0xbae8('0x28'));_0x3752ba['query']=_[_0xbae8('0x30')](_0x3e0d54[_0xbae8('0x31')]);_0x3752ba[_0xbae8('0x32')]=_[_0xbae8('0x33')](_0x3752ba[_0xbae8('0x2e')],_0x3752ba[_0xbae8('0x31')]);_0x2aa0d9[_0xbae8('0x34')]=_['intersection'](_0x3752ba[_0xbae8('0x2e')],qs[_0xbae8('0x35')](_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x35')]));_0x2aa0d9[_0xbae8('0x34')]=_0x2aa0d9['attributes']['length']?_0x2aa0d9[_0xbae8('0x34')]:_0x3752ba[_0xbae8('0x2e')];if(!_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x36')](_0xbae8('0x37'))){_0x2aa0d9[_0xbae8('0x1d')]=qs['limit'](_0x3e0d54['query']['limit']);_0x2aa0d9[_0xbae8('0x1c')]=qs[_0xbae8('0x1c')](_0x3e0d54['query']['offset']);}_0x2aa0d9[_0xbae8('0x38')]=qs[_0xbae8('0x39')](_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x39')]);_0x2aa0d9[_0xbae8('0x3a')]=qs[_0xbae8('0x32')](_[_0xbae8('0x3b')](_0x3e0d54['query'],_0x3752ba[_0xbae8('0x32')]),_0x5620f2);if(_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x3c')]){_0x2aa0d9[_0xbae8('0x3a')]=_[_0xbae8('0x3d')](_0x2aa0d9['where'],{'$or':_[_0xbae8('0x2f')](_0x5620f2,function(_0x28698e){if(_0x28698e[_0xbae8('0x2d')]!==_0xbae8('0x3e')){var _0x41932f={};_0x41932f[_0x28698e['name']]={'$like':'%'+_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x3c')]+'%'};return _0x41932f;}})});}_0x2aa0d9=_[_0xbae8('0x3d')]({},_0x2aa0d9,_0x3e0d54[_0xbae8('0x3f')]);var _0x23a9b1={'where':_0x2aa0d9[_0xbae8('0x3a')]};return db[_0xbae8('0x2b')][_0xbae8('0x1b')](_0x23a9b1)[_0xbae8('0x40')](function(_0x4395df){_0x557e43['count']=_0x4395df;if(_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x41')]){_0x2aa0d9[_0xbae8('0x42')]=[{'all':!![]}];}return db[_0xbae8('0x2b')][_0xbae8('0x43')](_0x2aa0d9);})[_0xbae8('0x40')](function(_0x3f11d0){_0x557e43[_0xbae8('0x44')]=_0x3f11d0;return _0x557e43;})[_0xbae8('0x40')](respondWithFilteredResult(_0xd22cf5,_0x2aa0d9))['catch'](handleError(_0xd22cf5,null));};exports['show']=function(_0x18b57c,_0x219f80){var _0xe5140e={'raw':!![],'where':{'id':_0x18b57c['params']['id']}},_0x24d557={};_0x24d557['model']=_[_0xbae8('0x30')](db[_0xbae8('0x2b')][_0xbae8('0x45')]);_0x24d557[_0xbae8('0x31')]=_[_0xbae8('0x30')](_0x18b57c[_0xbae8('0x31')]);_0x24d557[_0xbae8('0x32')]=_[_0xbae8('0x33')](_0x24d557[_0xbae8('0x2e')],_0x24d557['query']);_0xe5140e[_0xbae8('0x34')]=_[_0xbae8('0x33')](_0x24d557[_0xbae8('0x2e')],qs[_0xbae8('0x35')](_0x18b57c[_0xbae8('0x31')][_0xbae8('0x35')]));_0xe5140e[_0xbae8('0x34')]=_0xe5140e['attributes']['length']?_0xe5140e['attributes']:_0x24d557['model'];if(_0x18b57c['query']['includeAll']){_0xe5140e[_0xbae8('0x42')]=[{'all':!![]}];}_0xe5140e=_[_0xbae8('0x3d')]({},_0xe5140e,_0x18b57c[_0xbae8('0x3f')]);return db[_0xbae8('0x2b')][_0xbae8('0x46')](_0xe5140e)['then'](handleEntityNotFound(_0x219f80,null))['then'](respondWithResult(_0x219f80,null))[_0xbae8('0x47')](handleError(_0x219f80,null));};exports[_0xbae8('0x48')]=function(_0x4a4b52,_0x4ced9f){return db[_0xbae8('0x2b')][_0xbae8('0x48')](_0x4a4b52['body'],{})[_0xbae8('0x40')](respondWithResult(_0x4ced9f,0xc9))[_0xbae8('0x47')](handleError(_0x4ced9f,null));};exports[_0xbae8('0x23')]=function(_0x5a58f8,_0xabbd73){if(_0x5a58f8[_0xbae8('0x49')]['id']){delete _0x5a58f8['body']['id'];}return db[_0xbae8('0x2b')][_0xbae8('0x46')]({'where':{'id':_0x5a58f8[_0xbae8('0x4a')]['id']}})[_0xbae8('0x40')](handleEntityNotFound(_0xabbd73,null))['then'](saveUpdates(_0x5a58f8[_0xbae8('0x49')],null))['then'](respondWithResult(_0xabbd73,null))[_0xbae8('0x47')](handleError(_0xabbd73,null));};exports[_0xbae8('0x24')]=function(_0x3a78fd,_0x105190){return db[_0xbae8('0x2b')][_0xbae8('0x46')]({'where':{'id':_0x3a78fd[_0xbae8('0x4a')]['id']}})[_0xbae8('0x40')](handleEntityNotFound(_0x105190,null))[_0xbae8('0x40')](removeEntity(_0x105190,null))['catch'](handleError(_0x105190,null));};
\ No newline at end of file
+var _0x3eb5=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','Content-Range','reject','save','update','then','destroy','end','stack','name','index','map','Dynamics365Field','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','params','includeAll','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x52a6aa,_0x4ecd95){var _0x325f25=function(_0x14b5ce){while(--_0x14b5ce){_0x52a6aa['push'](_0x52a6aa['shift']());}};_0x325f25(++_0x4ecd95);}(_0x3eb5,0xd2));var _0x53eb=function(_0x57d0dc,_0x387f3e){_0x57d0dc=_0x57d0dc-0x0;var _0x177765=_0x3eb5[_0x57d0dc];return _0x177765;};'use strict';var emlformat=require(_0x53eb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x53eb('0x1'));var jsonpatch=require(_0x53eb('0x2'));var rp=require(_0x53eb('0x3'));var moment=require('moment');var BPromise=require(_0x53eb('0x4'));var Mustache=require(_0x53eb('0x5'));var util=require(_0x53eb('0x6'));var path=require(_0x53eb('0x7'));var sox=require(_0x53eb('0x8'));var csv=require(_0x53eb('0x9'));var ejs=require(_0x53eb('0xa'));var fs=require('fs');var fs_extra=require(_0x53eb('0xb'));var _=require(_0x53eb('0xc'));var squel=require('squel');var crypto=require(_0x53eb('0xd'));var jsforce=require(_0x53eb('0xe'));var deskjs=require(_0x53eb('0xf'));var toCsv=require(_0x53eb('0x9'));var querystring=require(_0x53eb('0x10'));var Papa=require(_0x53eb('0x11'));var Redis=require('ioredis');var authService=require(_0x53eb('0x12'));var qs=require(_0x53eb('0x13'));var as=require(_0x53eb('0x14'));var hardwareService=require(_0x53eb('0x15'));var logger=require('../../config/logger')(_0x53eb('0x16'));var utils=require(_0x53eb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x53eb('0x18'));var db=require(_0x53eb('0x19'))['db'];function respondWithStatusCode(_0x8bc9cd,_0x41d734){_0x41d734=_0x41d734||0xcc;return function(_0x7e3d8d){if(_0x7e3d8d){return _0x8bc9cd[_0x53eb('0x1a')](_0x41d734);}return _0x8bc9cd[_0x53eb('0x1b')](_0x41d734)['end']();};}function respondWithResult(_0x53204c,_0x267b3c){_0x267b3c=_0x267b3c||0xc8;return function(_0x1457df){if(_0x1457df){return _0x53204c[_0x53eb('0x1b')](_0x267b3c)[_0x53eb('0x1c')](_0x1457df);}};}function respondWithFilteredResult(_0x5d0c68,_0x15e53a){return function(_0x569a82){if(_0x569a82){var _0x4b5cb2=typeof _0x15e53a['offset']===_0x53eb('0x1d')&&typeof _0x15e53a[_0x53eb('0x1e')]==='undefined';var _0x103055=_0x569a82['count'];var _0x150cf1=_0x4b5cb2?0x0:_0x15e53a[_0x53eb('0x1f')];var _0xc8b417=_0x4b5cb2?_0x569a82[_0x53eb('0x20')]:_0x15e53a[_0x53eb('0x1f')]+_0x15e53a[_0x53eb('0x1e')];var _0x521eef;if(_0xc8b417>=_0x103055){_0xc8b417=_0x103055;_0x521eef=0xc8;}else{_0x521eef=0xce;}_0x5d0c68[_0x53eb('0x1b')](_0x521eef);return _0x5d0c68['set'](_0x53eb('0x21'),_0x150cf1+'-'+_0xc8b417+'/'+_0x103055)['json'](_0x569a82);}return null;};}function patchUpdates(_0x410f82){return function(_0x36a5f8){try{jsonpatch['apply'](_0x36a5f8,_0x410f82,!![]);}catch(_0x464acd){return BPromise[_0x53eb('0x22')](_0x464acd);}return _0x36a5f8[_0x53eb('0x23')]();};}function saveUpdates(_0x3b1119,_0x4c5dc9){return function(_0x2e4d4e){if(_0x2e4d4e){return _0x2e4d4e[_0x53eb('0x24')](_0x3b1119)[_0x53eb('0x25')](function(_0x47962d){return _0x47962d;});}return null;};}function removeEntity(_0x2672de,_0x54cc3f){return function(_0x1894c7){if(_0x1894c7){return _0x1894c7[_0x53eb('0x26')]()[_0x53eb('0x25')](function(){_0x2672de['status'](0xcc)[_0x53eb('0x27')]();});}};}function handleEntityNotFound(_0x431798,_0x4f782d){return function(_0x28cc29){if(!_0x28cc29){_0x431798['sendStatus'](0x194);}return _0x28cc29;};}function handleError(_0x14ba56,_0x3b4895){_0x3b4895=_0x3b4895||0x1f4;return function(_0x10c79b){logger['error'](_0x10c79b[_0x53eb('0x28')]);if(_0x10c79b[_0x53eb('0x29')]){delete _0x10c79b[_0x53eb('0x29')];}_0x14ba56[_0x53eb('0x1b')](_0x3b4895)['send'](_0x10c79b);};}exports[_0x53eb('0x2a')]=function(_0x2dd64e,_0x2e4dbe){var _0x2d7a6a={},_0x4aa09f={},_0x2c3434={'count':0x0,'rows':[]};var _0x752c1=_[_0x53eb('0x2b')](db[_0x53eb('0x2c')][_0x53eb('0x2d')],function(_0x27468c){return{'name':_0x27468c[_0x53eb('0x2e')],'type':_0x27468c['type'][_0x53eb('0x2f')]};});_0x4aa09f[_0x53eb('0x30')]=_[_0x53eb('0x2b')](_0x752c1,_0x53eb('0x29'));_0x4aa09f['query']=_[_0x53eb('0x31')](_0x2dd64e[_0x53eb('0x32')]);_0x4aa09f['filters']=_[_0x53eb('0x33')](_0x4aa09f[_0x53eb('0x30')],_0x4aa09f[_0x53eb('0x32')]);_0x2d7a6a[_0x53eb('0x34')]=_[_0x53eb('0x33')](_0x4aa09f[_0x53eb('0x30')],qs[_0x53eb('0x35')](_0x2dd64e[_0x53eb('0x32')][_0x53eb('0x35')]));_0x2d7a6a[_0x53eb('0x34')]=_0x2d7a6a['attributes'][_0x53eb('0x36')]?_0x2d7a6a[_0x53eb('0x34')]:_0x4aa09f[_0x53eb('0x30')];if(!_0x2dd64e[_0x53eb('0x32')][_0x53eb('0x37')](_0x53eb('0x38'))){_0x2d7a6a['limit']=qs[_0x53eb('0x1e')](_0x2dd64e[_0x53eb('0x32')][_0x53eb('0x1e')]);_0x2d7a6a['offset']=qs['offset'](_0x2dd64e[_0x53eb('0x32')][_0x53eb('0x1f')]);}_0x2d7a6a[_0x53eb('0x39')]=qs[_0x53eb('0x3a')](_0x2dd64e[_0x53eb('0x32')]['sort']);_0x2d7a6a[_0x53eb('0x3b')]=qs['filters'](_['pick'](_0x2dd64e[_0x53eb('0x32')],_0x4aa09f[_0x53eb('0x3c')]),_0x752c1);if(_0x2dd64e[_0x53eb('0x32')]['filter']){_0x2d7a6a['where']=_[_0x53eb('0x3d')](_0x2d7a6a[_0x53eb('0x3b')],{'$or':_[_0x53eb('0x2b')](_0x752c1,function(_0x277301){if(_0x277301[_0x53eb('0x3e')]!==_0x53eb('0x3f')){var _0x1a8e00={};_0x1a8e00[_0x277301['name']]={'$like':'%'+_0x2dd64e[_0x53eb('0x32')][_0x53eb('0x40')]+'%'};return _0x1a8e00;}})});}_0x2d7a6a=_['merge']({},_0x2d7a6a,_0x2dd64e[_0x53eb('0x41')]);var _0x5122ac={'where':_0x2d7a6a[_0x53eb('0x3b')]};return db[_0x53eb('0x2c')][_0x53eb('0x20')](_0x5122ac)[_0x53eb('0x25')](function(_0x5e9995){_0x2c3434[_0x53eb('0x20')]=_0x5e9995;if(_0x2dd64e[_0x53eb('0x32')]['includeAll']){_0x2d7a6a[_0x53eb('0x42')]=[{'all':!![]}];}return db[_0x53eb('0x2c')][_0x53eb('0x43')](_0x2d7a6a);})['then'](function(_0x56a950){_0x2c3434[_0x53eb('0x44')]=_0x56a950;return _0x2c3434;})[_0x53eb('0x25')](respondWithFilteredResult(_0x2e4dbe,_0x2d7a6a))[_0x53eb('0x45')](handleError(_0x2e4dbe,null));};exports['show']=function(_0x589a8c,_0x4d90a0){var _0x47a50d={'raw':!![],'where':{'id':_0x589a8c[_0x53eb('0x46')]['id']}},_0x54de55={};_0x54de55['model']=_['keys'](db[_0x53eb('0x2c')][_0x53eb('0x2d')]);_0x54de55[_0x53eb('0x32')]=_['keys'](_0x589a8c[_0x53eb('0x32')]);_0x54de55[_0x53eb('0x3c')]=_[_0x53eb('0x33')](_0x54de55[_0x53eb('0x30')],_0x54de55['query']);_0x47a50d[_0x53eb('0x34')]=_[_0x53eb('0x33')](_0x54de55[_0x53eb('0x30')],qs[_0x53eb('0x35')](_0x589a8c[_0x53eb('0x32')][_0x53eb('0x35')]));_0x47a50d[_0x53eb('0x34')]=_0x47a50d[_0x53eb('0x34')][_0x53eb('0x36')]?_0x47a50d[_0x53eb('0x34')]:_0x54de55[_0x53eb('0x30')];if(_0x589a8c[_0x53eb('0x32')][_0x53eb('0x47')]){_0x47a50d[_0x53eb('0x42')]=[{'all':!![]}];}_0x47a50d=_[_0x53eb('0x3d')]({},_0x47a50d,_0x589a8c[_0x53eb('0x41')]);return db[_0x53eb('0x2c')][_0x53eb('0x48')](_0x47a50d)[_0x53eb('0x25')](handleEntityNotFound(_0x4d90a0,null))[_0x53eb('0x25')](respondWithResult(_0x4d90a0,null))[_0x53eb('0x45')](handleError(_0x4d90a0,null));};exports[_0x53eb('0x49')]=function(_0x5159fd,_0x53af90){return db[_0x53eb('0x2c')]['create'](_0x5159fd[_0x53eb('0x4a')],{})['then'](respondWithResult(_0x53af90,0xc9))[_0x53eb('0x45')](handleError(_0x53af90,null));};exports[_0x53eb('0x24')]=function(_0x5a44df,_0x2873f9){if(_0x5a44df[_0x53eb('0x4a')]['id']){delete _0x5a44df[_0x53eb('0x4a')]['id'];}return db[_0x53eb('0x2c')][_0x53eb('0x48')]({'where':{'id':_0x5a44df[_0x53eb('0x46')]['id']}})['then'](handleEntityNotFound(_0x2873f9,null))[_0x53eb('0x25')](saveUpdates(_0x5a44df[_0x53eb('0x4a')],null))[_0x53eb('0x25')](respondWithResult(_0x2873f9,null))[_0x53eb('0x45')](handleError(_0x2873f9,null));};exports[_0x53eb('0x26')]=function(_0x29e9b1,_0x51087e){return db[_0x53eb('0x2c')][_0x53eb('0x48')]({'where':{'id':_0x29e9b1[_0x53eb('0x46')]['id']}})[_0x53eb('0x25')](handleEntityNotFound(_0x51087e,null))[_0x53eb('0x25')](removeEntity(_0x51087e,null))[_0x53eb('0x45')](handleError(_0x51087e,null));};
\ No newline at end of file
index dd9fc98..3b4b0c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ee=['define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports'];(function(_0x451d30,_0x442b74){var _0x38fd9c=function(_0x108285){while(--_0x108285){_0x451d30['push'](_0x451d30['shift']());}};_0x38fd9c(++_0x442b74);}(_0xb9ee,0x123));var _0xeb9e=function(_0x58f57f,_0x23028c){_0x58f57f=_0x58f57f-0x0;var _0x318b7f=_0xb9ee[_0x58f57f];return _0x318b7f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xeb9e('0x0'))(_0xeb9e('0x1'));var moment=require(_0xeb9e('0x2'));var BPromise=require(_0xeb9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb9e('0x4'));var rimraf=require(_0xeb9e('0x5'));var config=require(_0xeb9e('0x6'));var attributes=require(_0xeb9e('0x7'));module[_0xeb9e('0x8')]=function(_0x46384a,_0x18460e){return _0x46384a[_0xeb9e('0x9')](_0xeb9e('0xa'),attributes,{'tableName':_0xeb9e('0xb'),'paranoid':![],'indexes':[{'name':_0xeb9e('0xc'),'fields':[_0xeb9e('0xd'),_0xeb9e('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbcac=['rimraf','../../config/environment','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','util','../../config/logger','api','bluebird','path'];(function(_0x512856,_0x1e30c1){var _0x33a1b2=function(_0x19df0b){while(--_0x19df0b){_0x512856['push'](_0x512856['shift']());}};_0x33a1b2(++_0x1e30c1);}(_0xbcac,0x10e));var _0xcbca=function(_0x541bcb,_0xf0394d){_0x541bcb=_0x541bcb-0x0;var _0x12b575=_0xbcac[_0x541bcb];return _0x12b575;};'use strict';var _=require('lodash');var util=require(_0xcbca('0x0'));var logger=require(_0xcbca('0x1'))(_0xcbca('0x2'));var moment=require('moment');var BPromise=require(_0xcbca('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcbca('0x4'));var rimraf=require(_0xcbca('0x5'));var config=require(_0xcbca('0x6'));var attributes=require('./intDynamics365Field.attributes');module['exports']=function(_0x23c550,_0x3507be){return _0x23c550['define'](_0xcbca('0x7'),attributes,{'tableName':_0xcbca('0x8'),'paranoid':![],'indexes':[{'name':_0xcbca('0x9'),'fields':[_0xcbca('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c4e049e..9c951ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f6a=['request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x14647d,_0x20a244){var _0x3a0cae=function(_0x6f6909){while(--_0x6f6909){_0x14647d['push'](_0x14647d['shift']());}};_0x3a0cae(++_0x20a244);}(_0x3f6a,0x13f));var _0xa3f6=function(_0x39e37e,_0x3063db){_0x39e37e=_0x39e37e-0x0;var _0x18f9a8=_0x3f6a[_0x39e37e];return _0x18f9a8;};'use strict';var _=require(_0xa3f6('0x0'));var util=require(_0xa3f6('0x1'));var moment=require('moment');var BPromise=require(_0xa3f6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa3f6('0x3'))['db'];var utils=require(_0xa3f6('0x4'));var logger=require(_0xa3f6('0x5'))(_0xa3f6('0x6'));var config=require(_0xa3f6('0x7'));var jayson=require(_0xa3f6('0x8'));var client=jayson[_0xa3f6('0x9')][_0xa3f6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x538a88,_0x5c5eae,_0x5062ba){return new BPromise(function(_0x12fdf9,_0x54251d){return client[_0xa3f6('0xb')](_0x538a88,_0x5062ba)['then'](function(_0x3c0cbd){logger[_0xa3f6('0xc')](_0xa3f6('0xd'),_0x5c5eae,_0xa3f6('0xe'));logger[_0xa3f6('0xf')](_0xa3f6('0x10'),_0x5c5eae,'request\x20sent',JSON['stringify'](_0x3c0cbd));if(_0x3c0cbd[_0xa3f6('0x11')]){if(_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x12')]===0x1f4){logger[_0xa3f6('0x11')](_0xa3f6('0xd'),_0x5c5eae,_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);return _0x54251d(_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);}logger[_0xa3f6('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x5c5eae,_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);return _0x12fdf9(_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);}else{logger['info'](_0xa3f6('0xd'),_0x5c5eae,_0xa3f6('0xe'));_0x12fdf9(_0x3c0cbd[_0xa3f6('0x14')][_0xa3f6('0x13')]);}})[_0xa3f6('0x15')](function(_0x3c1e60){logger[_0xa3f6('0x11')](_0xa3f6('0xd'),_0x5c5eae,_0x3c1e60);_0x54251d(_0x3c1e60);});});}
\ No newline at end of file
+var _0xdde1=['../../config/environment','jayson/promise','http','request','then','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x2f381b,_0x4bc41c){var _0x367ffc=function(_0x282b49){while(--_0x282b49){_0x2f381b['push'](_0x2f381b['shift']());}};_0x367ffc(++_0x4bc41c);}(_0xdde1,0x185));var _0x1dde=function(_0x1be35b,_0xa49780){_0x1be35b=_0x1be35b-0x0;var _0xd22f6=_0xdde1[_0x1be35b];return _0xd22f6;};'use strict';var _=require(_0x1dde('0x0'));var util=require(_0x1dde('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1dde('0x2'));var fs=require('fs');var Redis=require(_0x1dde('0x3'));var db=require(_0x1dde('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1dde('0x5'))(_0x1dde('0x6'));var config=require(_0x1dde('0x7'));var jayson=require(_0x1dde('0x8'));var client=jayson['client'][_0x1dde('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4174ad,_0x470baa,_0x2abf35){return new BPromise(function(_0x2f391e,_0x432329){return client[_0x1dde('0xa')](_0x4174ad,_0x2abf35)[_0x1dde('0xb')](function(_0xefc48){logger['info'](_0x1dde('0xc'),_0x470baa,_0x1dde('0xd'));logger[_0x1dde('0xe')](_0x1dde('0xf'),_0x470baa,_0x1dde('0xd'),JSON[_0x1dde('0x10')](_0xefc48));if(_0xefc48['error']){if(_0xefc48[_0x1dde('0x11')][_0x1dde('0x12')]===0x1f4){logger[_0x1dde('0x11')](_0x1dde('0xc'),_0x470baa,_0xefc48[_0x1dde('0x11')][_0x1dde('0x13')]);return _0x432329(_0xefc48[_0x1dde('0x11')][_0x1dde('0x13')]);}logger['error'](_0x1dde('0xc'),_0x470baa,_0xefc48[_0x1dde('0x11')][_0x1dde('0x13')]);return _0x2f391e(_0xefc48[_0x1dde('0x11')]['message']);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x470baa,_0x1dde('0xd'));_0x2f391e(_0xefc48[_0x1dde('0x14')][_0x1dde('0x13')]);}})[_0x1dde('0x15')](function(_0x1b7b90){logger['error'](_0x1dde('0xc'),_0x470baa,_0x1b7b90);_0x432329(_0x1b7b90);});});}
\ No newline at end of file
index e24af7b..af83bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da7=['/:id','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','getFields','create','/:id/configurations','addConfiguration','put','delete'];(function(_0x3e834d,_0x57ea65){var _0x1ce3cc=function(_0x4a7a8c){while(--_0x4a7a8c){_0x3e834d['push'](_0x3e834d['shift']());}};_0x1ce3cc(++_0x57ea65);}(_0x0da7,0x112));var _0x70da=function(_0x1c6551,_0x3fbc2e){_0x1c6551=_0x1c6551-0x0;var _0x3f7434=_0x0da7[_0x1c6551];return _0x3f7434;};'use strict';var multer=require(_0x70da('0x0'));var util=require('util');var path=require(_0x70da('0x1'));var timeout=require(_0x70da('0x2'));var express=require(_0x70da('0x3'));var router=express[_0x70da('0x4')]();var fs_extra=require(_0x70da('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x70da('0x6'));var controller=require(_0x70da('0x7'));router[_0x70da('0x8')]('/',auth[_0x70da('0x9')](),controller[_0x70da('0xa')]);router[_0x70da('0x8')]('/:id',auth[_0x70da('0x9')](),controller[_0x70da('0xb')]);router[_0x70da('0x8')]('/:id/configurations',auth[_0x70da('0x9')](),controller[_0x70da('0xc')]);router['get'](_0x70da('0xd'),auth[_0x70da('0x9')](),controller[_0x70da('0xe')]);router['post']('/',auth[_0x70da('0x9')](),controller[_0x70da('0xf')]);router['post'](_0x70da('0x10'),auth[_0x70da('0x9')](),controller[_0x70da('0x11')]);router[_0x70da('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x70da('0x13')](_0x70da('0x14'),auth[_0x70da('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xfd05=['fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','get','/:id','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','exports','util','path','express','Router'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0xfd05,0x10d));var _0x5fd0=function(_0x2ad184,_0x53cb41){_0x2ad184=_0x2ad184-0x0;var _0x4a109a=_0xfd05[_0x2ad184];return _0x4a109a;};'use strict';var multer=require('multer');var util=require(_0x5fd0('0x0'));var path=require(_0x5fd0('0x1'));var timeout=require('connect-timeout');var express=require(_0x5fd0('0x2'));var router=express[_0x5fd0('0x3')]();var fs_extra=require(_0x5fd0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5fd0('0x5'));var config=require(_0x5fd0('0x6'));var controller=require(_0x5fd0('0x7'));router['get']('/',auth[_0x5fd0('0x8')](),controller['index']);router[_0x5fd0('0x9')](_0x5fd0('0xa'),auth[_0x5fd0('0x8')](),controller['show']);router[_0x5fd0('0x9')](_0x5fd0('0xb'),auth[_0x5fd0('0x8')](),controller['getConfigurations']);router[_0x5fd0('0x9')](_0x5fd0('0xc'),auth[_0x5fd0('0x8')](),controller[_0x5fd0('0xd')]);router[_0x5fd0('0xe')]('/',auth['isAuthenticated'](),controller[_0x5fd0('0xf')]);router[_0x5fd0('0xe')](_0x5fd0('0xb'),auth[_0x5fd0('0x8')](),controller[_0x5fd0('0x10')]);router['put'](_0x5fd0('0xa'),auth[_0x5fd0('0x8')](),controller[_0x5fd0('0x11')]);router[_0x5fd0('0x12')](_0x5fd0('0xa'),auth['isAuthenticated'](),controller[_0x5fd0('0x13')]);module[_0x5fd0('0x14')]=router;
\ No newline at end of file
index f205698..a4cc4aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['sequelize','exports','STRING','username'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x93e9,0xcc));var _0x993e=function(_0x50113b,_0x5b95f6){_0x50113b=_0x50113b-0x0;var _0xbadb16=_0x93e9[_0x50113b];return _0xbadb16;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'name':{'type':Sequelize[_0x993e('0x2')]},'description':{'type':Sequelize[_0x993e('0x2')]},'username':{'type':Sequelize[_0x993e('0x2')],'unique':_0x993e('0x3')},'apiKey':{'type':Sequelize[_0x993e('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x993e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x5c3c=['remoteUri','sequelize','exports','STRING','username'];(function(_0x4e55aa,_0x48bfd2){var _0x2f48d6=function(_0x29b734){while(--_0x29b734){_0x4e55aa['push'](_0x4e55aa['shift']());}};_0x2f48d6(++_0x48bfd2);}(_0x5c3c,0x132));var _0xc5c3=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5c3c[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require(_0xc5c3('0x0'));module[_0xc5c3('0x1')]={'name':{'type':Sequelize[_0xc5c3('0x2')]},'description':{'type':Sequelize[_0xc5c3('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xc5c3('0x3')},'apiKey':{'type':Sequelize[_0xc5c3('0x2')]},'remoteUri':{'type':Sequelize[_0xc5c3('0x2')],'unique':_0xc5c3('0x4')},'serverUrl':{'type':Sequelize[_0xc5c3('0x2')],'allowNull':![]}};
\ No newline at end of file
index 7880bce..db5adac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f8=['fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','order','sort','pick','merge','where','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','apiKey','remoteUri','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','subject','description','priority','source','ticket_type','company','remove','includes','default','custom_text','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x21f8,0x71));var _0x821f=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0x21f8[_0x5192de];return _0x4e287e;};'use strict';var emlformat=require(_0x821f('0x0'));var rimraf=require(_0x821f('0x1'));var zipdir=require(_0x821f('0x2'));var jsonpatch=require(_0x821f('0x3'));var rp=require(_0x821f('0x4'));var moment=require(_0x821f('0x5'));var BPromise=require(_0x821f('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x821f('0x7'));var csv=require(_0x821f('0x8'));var ejs=require(_0x821f('0x9'));var fs=require('fs');var fs_extra=require(_0x821f('0xa'));var _=require(_0x821f('0xb'));var squel=require(_0x821f('0xc'));var crypto=require(_0x821f('0xd'));var jsforce=require(_0x821f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x821f('0xf'));var Papa=require(_0x821f('0x10'));var Redis=require(_0x821f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x821f('0x12'));var as=require(_0x821f('0x13'));var hardwareService=require(_0x821f('0x14'));var logger=require(_0x821f('0x15'))(_0x821f('0x16'));var utils=require(_0x821f('0x17'));var config=require(_0x821f('0x18'));var licenseUtil=require(_0x821f('0x19'));var db=require(_0x821f('0x1a'))['db'];var integrations=require(_0x821f('0x1b'));function respondWithStatusCode(_0x4ba2e2,_0x4f9752){_0x4f9752=_0x4f9752||0xcc;return function(_0x22e1d5){if(_0x22e1d5){return _0x4ba2e2[_0x821f('0x1c')](_0x4f9752);}return _0x4ba2e2[_0x821f('0x1d')](_0x4f9752)[_0x821f('0x1e')]();};}function respondWithResult(_0x16145e,_0x42b2fa){_0x42b2fa=_0x42b2fa||0xc8;return function(_0x42f1a4){if(_0x42f1a4){return _0x16145e[_0x821f('0x1d')](_0x42b2fa)[_0x821f('0x1f')](_0x42f1a4);}};}function respondWithFilteredResult(_0x19d587,_0x4b746c){return function(_0x3419ab){if(_0x3419ab){var _0x594165=typeof _0x4b746c[_0x821f('0x20')]==='undefined'&&typeof _0x4b746c[_0x821f('0x21')]===_0x821f('0x22');var _0x2a5d72=_0x3419ab[_0x821f('0x23')];var _0x5e8c54=_0x594165?0x0:_0x4b746c[_0x821f('0x20')];var _0x34d89c=_0x594165?_0x3419ab['count']:_0x4b746c[_0x821f('0x20')]+_0x4b746c['limit'];var _0x4e0c99;if(_0x34d89c>=_0x2a5d72){_0x34d89c=_0x2a5d72;_0x4e0c99=0xc8;}else{_0x4e0c99=0xce;}_0x19d587['status'](_0x4e0c99);return _0x19d587[_0x821f('0x24')](_0x821f('0x25'),_0x5e8c54+'-'+_0x34d89c+'/'+_0x2a5d72)['json'](_0x3419ab);}return null;};}function patchUpdates(_0x4f3283){return function(_0x5caa12){try{jsonpatch[_0x821f('0x26')](_0x5caa12,_0x4f3283,!![]);}catch(_0x35103c){return BPromise['reject'](_0x35103c);}return _0x5caa12[_0x821f('0x27')]();};}function saveUpdates(_0xb5d07,_0x3dda74){return function(_0x5ca883){if(_0x5ca883){return _0x5ca883[_0x821f('0x28')](_0xb5d07)[_0x821f('0x29')](function(_0x4b2e35){return _0x4b2e35;});}return null;};}function removeEntity(_0x4ef246,_0x4ede29){return function(_0x59530c){if(_0x59530c){return _0x59530c[_0x821f('0x2a')]()['then'](function(){_0x4ef246['status'](0xcc)[_0x821f('0x1e')]();});}};}function handleEntityNotFound(_0x57f758,_0x57f5a2){return function(_0x3d7994){if(!_0x3d7994){_0x57f758[_0x821f('0x1c')](0x194);}return _0x3d7994;};}function handleError(_0x2a432c,_0x368a74){_0x368a74=_0x368a74||0x1f4;return function(_0x501374){logger[_0x821f('0x2b')](_0x501374[_0x821f('0x2c')]);if(_0x501374[_0x821f('0x2d')]){delete _0x501374[_0x821f('0x2d')];}_0x2a432c['status'](_0x368a74)[_0x821f('0x2e')](_0x501374);};}exports[_0x821f('0x2f')]=function(_0x130649,_0x31bb67){var _0x53d87e={},_0xceb073={},_0x48cd2a={'count':0x0,'rows':[]};var _0x51619e=_[_0x821f('0x30')](db[_0x821f('0x31')][_0x821f('0x32')],function(_0x41c12a){return{'name':_0x41c12a[_0x821f('0x33')],'type':_0x41c12a['type'][_0x821f('0x34')]};});_0xceb073[_0x821f('0x35')]=_[_0x821f('0x30')](_0x51619e,_0x821f('0x2d'));_0xceb073['query']=_[_0x821f('0x36')](_0x130649[_0x821f('0x37')]);_0xceb073[_0x821f('0x38')]=_[_0x821f('0x39')](_0xceb073[_0x821f('0x35')],_0xceb073[_0x821f('0x37')]);_0x53d87e['attributes']=_[_0x821f('0x39')](_0xceb073['model'],qs[_0x821f('0x3a')](_0x130649[_0x821f('0x37')]['fields']));_0x53d87e['attributes']=_0x53d87e[_0x821f('0x3b')][_0x821f('0x3c')]?_0x53d87e[_0x821f('0x3b')]:_0xceb073[_0x821f('0x35')];if(!_0x130649[_0x821f('0x37')]['hasOwnProperty']('nolimit')){_0x53d87e[_0x821f('0x21')]=qs[_0x821f('0x21')](_0x130649[_0x821f('0x37')]['limit']);_0x53d87e[_0x821f('0x20')]=qs[_0x821f('0x20')](_0x130649[_0x821f('0x37')][_0x821f('0x20')]);}_0x53d87e[_0x821f('0x3d')]=qs[_0x821f('0x3e')](_0x130649[_0x821f('0x37')]['sort']);_0x53d87e['where']=qs[_0x821f('0x38')](_[_0x821f('0x3f')](_0x130649[_0x821f('0x37')],_0xceb073[_0x821f('0x38')]),_0x51619e);if(_0x130649[_0x821f('0x37')]['filter']){_0x53d87e['where']=_[_0x821f('0x40')](_0x53d87e[_0x821f('0x41')],{'$or':_[_0x821f('0x30')](_0x51619e,function(_0x56df75){if(_0x56df75[_0x821f('0x42')]!==_0x821f('0x43')){var _0x3a6c84={};_0x3a6c84[_0x56df75['name']]={'$like':'%'+_0x130649[_0x821f('0x37')][_0x821f('0x44')]+'%'};return _0x3a6c84;}})});}_0x53d87e=_[_0x821f('0x40')]({},_0x53d87e,_0x130649[_0x821f('0x45')]);var _0x42162a={'where':_0x53d87e[_0x821f('0x41')]};return db['FreshdeskAccount'][_0x821f('0x23')](_0x42162a)['then'](function(_0x38c01b){_0x48cd2a[_0x821f('0x23')]=_0x38c01b;if(_0x130649[_0x821f('0x37')][_0x821f('0x46')]){_0x53d87e[_0x821f('0x47')]=[{'all':!![]}];}return db[_0x821f('0x31')][_0x821f('0x48')](_0x53d87e);})[_0x821f('0x29')](function(_0x5b2b6d){_0x48cd2a[_0x821f('0x49')]=_0x5b2b6d;return _0x48cd2a;})[_0x821f('0x29')](respondWithFilteredResult(_0x31bb67,_0x53d87e))[_0x821f('0x4a')](handleError(_0x31bb67,null));};exports[_0x821f('0x4b')]=function(_0x341a4f,_0x50d186){var _0x220e0b={'raw':![],'where':{'id':_0x341a4f[_0x821f('0x4c')]['id']}},_0x1e37a7={};_0x1e37a7[_0x821f('0x35')]=_[_0x821f('0x36')](db[_0x821f('0x31')][_0x821f('0x32')]);_0x1e37a7[_0x821f('0x37')]=_[_0x821f('0x36')](_0x341a4f['query']);_0x1e37a7[_0x821f('0x38')]=_['intersection'](_0x1e37a7[_0x821f('0x35')],_0x1e37a7['query']);_0x220e0b[_0x821f('0x3b')]=_['intersection'](_0x1e37a7[_0x821f('0x35')],qs[_0x821f('0x3a')](_0x341a4f['query'][_0x821f('0x3a')]));_0x220e0b['attributes']=_0x220e0b[_0x821f('0x3b')][_0x821f('0x3c')]?_0x220e0b['attributes']:_0x1e37a7[_0x821f('0x35')];if(_0x341a4f[_0x821f('0x37')]['includeAll']){_0x220e0b[_0x821f('0x47')]=[{'all':!![]}];}_0x220e0b=_['merge']({},_0x220e0b,_0x341a4f[_0x821f('0x45')]);return db[_0x821f('0x31')][_0x821f('0x4d')](_0x220e0b)['then'](handleEntityNotFound(_0x50d186,null))[_0x821f('0x29')](respondWithResult(_0x50d186,null))[_0x821f('0x4a')](handleError(_0x50d186,null));};exports['create']=function(_0x15497a,_0x4b8de4){return db[_0x821f('0x31')][_0x821f('0x4e')](_0x15497a[_0x821f('0x4f')],{})[_0x821f('0x29')](respondWithResult(_0x4b8de4,0xc9))[_0x821f('0x4a')](handleError(_0x4b8de4,null));};exports['update']=function(_0x314a47,_0xefb524){if(_0x314a47[_0x821f('0x4f')]['id']){delete _0x314a47[_0x821f('0x4f')]['id'];}return db['FreshdeskAccount']['find']({'where':{'id':_0x314a47[_0x821f('0x4c')]['id']}})['then'](handleEntityNotFound(_0xefb524,null))['then'](saveUpdates(_0x314a47[_0x821f('0x4f')],null))[_0x821f('0x29')](respondWithResult(_0xefb524,null))[_0x821f('0x4a')](handleError(_0xefb524,null));};exports[_0x821f('0x2a')]=function(_0x197dff,_0x4e9470){return db[_0x821f('0x31')]['find']({'where':{'id':_0x197dff[_0x821f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4e9470,null))[_0x821f('0x29')](removeEntity(_0x4e9470,null))[_0x821f('0x4a')](handleError(_0x4e9470,null));};exports[_0x821f('0x50')]=function(_0x57c3c9,_0x5f15ba,_0x43298d){var _0x347167={};var _0x2deb7d={};var _0x4e3da6;var _0x386093;return db[_0x821f('0x31')][_0x821f('0x51')]({'where':{'id':_0x57c3c9[_0x821f('0x4c')]['id']}})[_0x821f('0x29')](handleEntityNotFound(_0x5f15ba,null))['then'](function(_0x45fcbd){if(_0x45fcbd){_0x4e3da6=_0x45fcbd;_0x2deb7d[_0x821f('0x35')]=_[_0x821f('0x36')](db[_0x821f('0x52')]['rawAttributes']);_0x2deb7d[_0x821f('0x37')]=_[_0x821f('0x36')](_0x57c3c9[_0x821f('0x37')]);_0x2deb7d[_0x821f('0x38')]=_[_0x821f('0x39')](_0x2deb7d['model'],_0x2deb7d[_0x821f('0x37')]);_0x347167['attributes']=_['intersection'](_0x2deb7d['model'],qs['fields'](_0x57c3c9['query'][_0x821f('0x3a')]));_0x347167[_0x821f('0x3b')]=_0x347167[_0x821f('0x3b')][_0x821f('0x3c')]?_0x347167[_0x821f('0x3b')]:_0x2deb7d['model'];_0x347167[_0x821f('0x3d')]=qs[_0x821f('0x3e')](_0x57c3c9['query'][_0x821f('0x3e')]);_0x347167[_0x821f('0x41')]=qs[_0x821f('0x38')](_[_0x821f('0x3f')](_0x57c3c9['query'],_0x2deb7d[_0x821f('0x38')]));if(_0x57c3c9[_0x821f('0x37')]['filter']){_0x347167[_0x821f('0x41')]=_['merge'](_0x347167[_0x821f('0x41')],{'$or':_[_0x821f('0x30')](_0x347167[_0x821f('0x3b')],function(_0x20769d){var _0x30d8bd={};_0x30d8bd[_0x20769d]={'$like':'%'+_0x57c3c9[_0x821f('0x37')][_0x821f('0x44')]+'%'};return _0x30d8bd;})});}_0x347167=_[_0x821f('0x40')]({},_0x347167,_0x57c3c9[_0x821f('0x45')]);return _0x4e3da6['getConfigurations'](_0x347167);}})[_0x821f('0x29')](function(_0x29e6ff){if(_0x29e6ff){_0x386093=_0x29e6ff[_0x821f('0x3c')];if(!_0x57c3c9['query'][_0x821f('0x53')](_0x821f('0x54'))){_0x347167[_0x821f('0x21')]=qs[_0x821f('0x21')](_0x57c3c9['query'][_0x821f('0x21')]);_0x347167['offset']=qs[_0x821f('0x20')](_0x57c3c9[_0x821f('0x37')][_0x821f('0x20')]);}return _0x4e3da6[_0x821f('0x50')](_0x347167);}})[_0x821f('0x29')](function(_0x27df7c){if(_0x27df7c){return _0x27df7c?{'count':_0x386093,'rows':_0x27df7c}:null;}})[_0x821f('0x29')](respondWithResult(_0x5f15ba,null))['catch'](handleError(_0x5f15ba,null));};exports[_0x821f('0x55')]=function(_0x372e5c,_0x500ef9,_0xe71f4){if(_0x372e5c[_0x821f('0x4f')]['id']){delete _0x372e5c[_0x821f('0x4f')]['id'];}return db[_0x821f('0x31')]['findOne']({'where':{'id':_0x372e5c['params']['id']}})[_0x821f('0x29')](handleEntityNotFound(_0x500ef9,null))['then'](function(_0x1ccbc0){if(_0x1ccbc0){_0x372e5c[_0x821f('0x4f')][_0x821f('0x56')]=_0x1ccbc0['id'];_0x372e5c[_0x821f('0x4f')][_0x821f('0x57')]=integrations[_0x821f('0x58')](_0x372e5c[_0x821f('0x4f')][_0x821f('0x59')],_0x372e5c[_0x821f('0x4f')][_0x821f('0x42')]);_0x372e5c[_0x821f('0x4f')][_0x821f('0x5a')]=integrations[_0x821f('0x5b')](_0x372e5c[_0x821f('0x4f')][_0x821f('0x59')],_0x372e5c[_0x821f('0x4f')][_0x821f('0x42')]);return db[_0x821f('0x52')][_0x821f('0x4e')](_0x372e5c[_0x821f('0x4f')],{'include':[{'model':db[_0x821f('0x5c')],'as':_0x821f('0x57')},{'model':db[_0x821f('0x5c')],'as':_0x821f('0x5a')}]});}return null;})[_0x821f('0x29')](respondWithResult(_0x500ef9,null))[_0x821f('0x4a')](handleError(_0x500ef9,null));};exports[_0x821f('0x5d')]=function(_0x29dc0c,_0x5d5e5c,_0x17747d){var _0x19e3bd='';return db[_0x821f('0x31')][_0x821f('0x51')]({'where':{'id':_0x29dc0c[_0x821f('0x4c')]['id']},'attributes':['id','remoteUri',_0x821f('0x5e')]})[_0x821f('0x29')](handleEntityNotFound(_0x5d5e5c,null))[_0x821f('0x29')](function(_0x47fcab){if(_0x47fcab){_0x19e3bd=_0x47fcab[_0x821f('0x5f')];var _0x2794f0=_0x19e3bd['slice'](-0x1);if(_0x2794f0==='/'){_0x19e3bd=_0x19e3bd[_0x821f('0x60')](0x0,_0x19e3bd[_0x821f('0x61')](_0x2794f0));}return rp({'method':_0x821f('0x62'),'uri':util[_0x821f('0x63')](_0x821f('0x64'),_0x19e3bd,_0x821f('0x65')),'headers':{'Authorization':util[_0x821f('0x63')](_0x821f('0x66'),new Buffer(util[_0x821f('0x63')](_0x821f('0x67'),_0x47fcab[_0x821f('0x5e')]))[_0x821f('0x68')]('base64'))},'json':!![]});}})[_0x821f('0x29')](function(_0x1610fd){if(_0x1610fd){var _0x596bb9=[_0x821f('0x69'),_0x821f('0x6a'),'agent',_0x821f('0x6b'),_0x821f('0x1d'),_0x821f('0x6c'),'group',_0x821f('0x6d'),_0x821f('0x6e'),'group',_0x821f('0x6f')];_[_0x821f('0x70')](_0x1610fd,function(_0x1f50d4){return _0x596bb9[_0x821f('0x71')](_0x1f50d4[_0x821f('0x2d')])||!_0x1f50d4[_0x821f('0x72')]&&_0x1f50d4['type']!==_0x821f('0x73')&&_0x1f50d4['type']!=='custom_dropdown';});return{'count':_0x1610fd[_0x821f('0x3c')],'rows':_[_0x821f('0x30')](_0x1610fd,function(_0x59325f){return{'id':_0x59325f['name'],'name':_0x59325f[_0x821f('0x74')],'custom':!_0x59325f[_0x821f('0x72')],'options':_0x59325f[_0x821f('0x75')]?_[_0x821f('0x30')](_0x59325f['choices'],function(_0x1a7394){return{'name':_['capitalize'](_0x1a7394),'value':_0x1a7394};}):[]};})};}})['then'](respondWithResult(_0x5d5e5c,null))[_0x821f('0x4a')](function(_0x2ccae9){var _0xb8b31e=_0x29dc0c[_0x821f('0x37')][_0x821f('0x76')]?0x1f4:_0x2ccae9[_0x821f('0x77')]||0x1f4;logger[_0x821f('0x2b')](_0x821f('0x78'),_0x821f('0x5d'),_0xb8b31e,JSON[_0x821f('0x79')](_0x2ccae9));delete _0x2ccae9[_0x821f('0x2d')];if(_0xb8b31e===0x191){_0xb8b31e=0x190;}_0x5d5e5c[_0x821f('0x1d')](_0xb8b31e)['send'](_0x29dc0c[_0x821f('0x37')][_0x821f('0x76')]?{'message':_0x821f('0x7a'),'statusCode':_0x2ccae9[_0x821f('0x77')]}:_0x2ccae9);});};
\ No newline at end of file
+var _0x87ae=['substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','apiKey','toString','base64','requester','agent','description','priority','group','source','ticket_type','company','includes','default','custom_text','custom_dropdown','capitalize','test','statusCode','error','send','Wrong\x20credentials','zip-dir','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','update','then','sendStatus','stack','map','fieldName','type','key','model','name','keys','filters','intersection','query','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','FreshdeskAccount','includeAll','include','findAll','params','length','find','catch','create','body','destroy','getConfigurations','findOne','FreshdeskConfiguration','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','slice'];(function(_0x3ba772,_0x11d79a){var _0x30027a=function(_0x1ab9a9){while(--_0x1ab9a9){_0x3ba772['push'](_0x3ba772['shift']());}};_0x30027a(++_0x11d79a);}(_0x87ae,0xf5));var _0xe87a=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0x87ae[_0x1bbc08];return _0x5d825b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe87a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe87a('0x1'));var BPromise=require(_0xe87a('0x2'));var Mustache=require(_0xe87a('0x3'));var util=require('util');var path=require(_0xe87a('0x4'));var sox=require(_0xe87a('0x5'));var csv=require(_0xe87a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe87a('0x7'));var squel=require(_0xe87a('0x8'));var crypto=require('crypto');var jsforce=require(_0xe87a('0x9'));var deskjs=require(_0xe87a('0xa'));var toCsv=require('to-csv');var querystring=require(_0xe87a('0xb'));var Papa=require(_0xe87a('0xc'));var Redis=require('ioredis');var authService=require(_0xe87a('0xd'));var qs=require(_0xe87a('0xe'));var as=require(_0xe87a('0xf'));var hardwareService=require(_0xe87a('0x10'));var logger=require(_0xe87a('0x11'))(_0xe87a('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe87a('0x13'));var db=require(_0xe87a('0x14'))['db'];var integrations=require(_0xe87a('0x15'));function respondWithStatusCode(_0x4db185,_0x1a725a){_0x1a725a=_0x1a725a||0xcc;return function(_0x18d01d){if(_0x18d01d){return _0x4db185['sendStatus'](_0x1a725a);}return _0x4db185[_0xe87a('0x16')](_0x1a725a)[_0xe87a('0x17')]();};}function respondWithResult(_0x136340,_0x5032c5){_0x5032c5=_0x5032c5||0xc8;return function(_0x5d1374){if(_0x5d1374){return _0x136340['status'](_0x5032c5)['json'](_0x5d1374);}};}function respondWithFilteredResult(_0x44474f,_0x1fa2cd){return function(_0xd2ca53){if(_0xd2ca53){var _0x175626=typeof _0x1fa2cd['offset']===_0xe87a('0x18')&&typeof _0x1fa2cd[_0xe87a('0x19')]==='undefined';var _0x5f31e3=_0xd2ca53[_0xe87a('0x1a')];var _0x5c9acf=_0x175626?0x0:_0x1fa2cd[_0xe87a('0x1b')];var _0xac5b46=_0x175626?_0xd2ca53[_0xe87a('0x1a')]:_0x1fa2cd['offset']+_0x1fa2cd[_0xe87a('0x19')];var _0x58ecfa;if(_0xac5b46>=_0x5f31e3){_0xac5b46=_0x5f31e3;_0x58ecfa=0xc8;}else{_0x58ecfa=0xce;}_0x44474f[_0xe87a('0x16')](_0x58ecfa);return _0x44474f[_0xe87a('0x1c')](_0xe87a('0x1d'),_0x5c9acf+'-'+_0xac5b46+'/'+_0x5f31e3)[_0xe87a('0x1e')](_0xd2ca53);}return null;};}function patchUpdates(_0x104f67){return function(_0x5be8f6){try{jsonpatch[_0xe87a('0x1f')](_0x5be8f6,_0x104f67,!![]);}catch(_0x46e943){return BPromise['reject'](_0x46e943);}return _0x5be8f6['save']();};}function saveUpdates(_0x42ba03,_0x363c6a){return function(_0x13268e){if(_0x13268e){return _0x13268e[_0xe87a('0x20')](_0x42ba03)[_0xe87a('0x21')](function(_0x46731f){return _0x46731f;});}return null;};}function removeEntity(_0x56eba0,_0x59d9f7){return function(_0x54e386){if(_0x54e386){return _0x54e386['destroy']()[_0xe87a('0x21')](function(){_0x56eba0['status'](0xcc)[_0xe87a('0x17')]();});}};}function handleEntityNotFound(_0x59dc1a,_0x19f21e){return function(_0xfb831e){if(!_0xfb831e){_0x59dc1a[_0xe87a('0x22')](0x194);}return _0xfb831e;};}function handleError(_0x16ee69,_0x294d8b){_0x294d8b=_0x294d8b||0x1f4;return function(_0x3f5241){logger['error'](_0x3f5241[_0xe87a('0x23')]);if(_0x3f5241['name']){delete _0x3f5241['name'];}_0x16ee69[_0xe87a('0x16')](_0x294d8b)['send'](_0x3f5241);};}exports['index']=function(_0x58a2b8,_0x17c895){var _0x6feaf6={},_0x36d4cc={},_0x4eae3f={'count':0x0,'rows':[]};var _0x565d01=_[_0xe87a('0x24')](db['FreshdeskAccount']['rawAttributes'],function(_0x3a5dc4){return{'name':_0x3a5dc4[_0xe87a('0x25')],'type':_0x3a5dc4[_0xe87a('0x26')][_0xe87a('0x27')]};});_0x36d4cc[_0xe87a('0x28')]=_['map'](_0x565d01,_0xe87a('0x29'));_0x36d4cc['query']=_[_0xe87a('0x2a')](_0x58a2b8['query']);_0x36d4cc[_0xe87a('0x2b')]=_[_0xe87a('0x2c')](_0x36d4cc[_0xe87a('0x28')],_0x36d4cc[_0xe87a('0x2d')]);_0x6feaf6[_0xe87a('0x2e')]=_[_0xe87a('0x2c')](_0x36d4cc[_0xe87a('0x28')],qs[_0xe87a('0x2f')](_0x58a2b8[_0xe87a('0x2d')][_0xe87a('0x2f')]));_0x6feaf6['attributes']=_0x6feaf6['attributes']['length']?_0x6feaf6[_0xe87a('0x2e')]:_0x36d4cc['model'];if(!_0x58a2b8[_0xe87a('0x2d')][_0xe87a('0x30')]('nolimit')){_0x6feaf6[_0xe87a('0x19')]=qs['limit'](_0x58a2b8['query'][_0xe87a('0x19')]);_0x6feaf6[_0xe87a('0x1b')]=qs[_0xe87a('0x1b')](_0x58a2b8[_0xe87a('0x2d')]['offset']);}_0x6feaf6[_0xe87a('0x31')]=qs[_0xe87a('0x32')](_0x58a2b8['query'][_0xe87a('0x32')]);_0x6feaf6[_0xe87a('0x33')]=qs['filters'](_[_0xe87a('0x34')](_0x58a2b8[_0xe87a('0x2d')],_0x36d4cc[_0xe87a('0x2b')]),_0x565d01);if(_0x58a2b8[_0xe87a('0x2d')][_0xe87a('0x35')]){_0x6feaf6['where']=_[_0xe87a('0x36')](_0x6feaf6['where'],{'$or':_[_0xe87a('0x24')](_0x565d01,function(_0x4e66d1){if(_0x4e66d1['type']!==_0xe87a('0x37')){var _0x31963a={};_0x31963a[_0x4e66d1[_0xe87a('0x29')]]={'$like':'%'+_0x58a2b8[_0xe87a('0x2d')][_0xe87a('0x35')]+'%'};return _0x31963a;}})});}_0x6feaf6=_[_0xe87a('0x36')]({},_0x6feaf6,_0x58a2b8[_0xe87a('0x38')]);var _0x7448e7={'where':_0x6feaf6[_0xe87a('0x33')]};return db[_0xe87a('0x39')][_0xe87a('0x1a')](_0x7448e7)[_0xe87a('0x21')](function(_0x127694){_0x4eae3f[_0xe87a('0x1a')]=_0x127694;if(_0x58a2b8['query'][_0xe87a('0x3a')]){_0x6feaf6[_0xe87a('0x3b')]=[{'all':!![]}];}return db[_0xe87a('0x39')][_0xe87a('0x3c')](_0x6feaf6);})['then'](function(_0x590a49){_0x4eae3f['rows']=_0x590a49;return _0x4eae3f;})[_0xe87a('0x21')](respondWithFilteredResult(_0x17c895,_0x6feaf6))['catch'](handleError(_0x17c895,null));};exports['show']=function(_0x3bcee7,_0x5eb62e){var _0x5b1f55={'raw':![],'where':{'id':_0x3bcee7[_0xe87a('0x3d')]['id']}},_0x1450b3={};_0x1450b3['model']=_[_0xe87a('0x2a')](db['FreshdeskAccount']['rawAttributes']);_0x1450b3['query']=_[_0xe87a('0x2a')](_0x3bcee7[_0xe87a('0x2d')]);_0x1450b3['filters']=_[_0xe87a('0x2c')](_0x1450b3[_0xe87a('0x28')],_0x1450b3[_0xe87a('0x2d')]);_0x5b1f55['attributes']=_['intersection'](_0x1450b3['model'],qs['fields'](_0x3bcee7[_0xe87a('0x2d')]['fields']));_0x5b1f55[_0xe87a('0x2e')]=_0x5b1f55[_0xe87a('0x2e')][_0xe87a('0x3e')]?_0x5b1f55[_0xe87a('0x2e')]:_0x1450b3['model'];if(_0x3bcee7[_0xe87a('0x2d')][_0xe87a('0x3a')]){_0x5b1f55['include']=[{'all':!![]}];}_0x5b1f55=_[_0xe87a('0x36')]({},_0x5b1f55,_0x3bcee7[_0xe87a('0x38')]);return db[_0xe87a('0x39')][_0xe87a('0x3f')](_0x5b1f55)[_0xe87a('0x21')](handleEntityNotFound(_0x5eb62e,null))[_0xe87a('0x21')](respondWithResult(_0x5eb62e,null))[_0xe87a('0x40')](handleError(_0x5eb62e,null));};exports[_0xe87a('0x41')]=function(_0x2aa508,_0x5e25ce){return db[_0xe87a('0x39')][_0xe87a('0x41')](_0x2aa508[_0xe87a('0x42')],{})[_0xe87a('0x21')](respondWithResult(_0x5e25ce,0xc9))['catch'](handleError(_0x5e25ce,null));};exports[_0xe87a('0x20')]=function(_0x28c00b,_0x363050){if(_0x28c00b[_0xe87a('0x42')]['id']){delete _0x28c00b[_0xe87a('0x42')]['id'];}return db[_0xe87a('0x39')][_0xe87a('0x3f')]({'where':{'id':_0x28c00b[_0xe87a('0x3d')]['id']}})['then'](handleEntityNotFound(_0x363050,null))[_0xe87a('0x21')](saveUpdates(_0x28c00b[_0xe87a('0x42')],null))[_0xe87a('0x21')](respondWithResult(_0x363050,null))['catch'](handleError(_0x363050,null));};exports[_0xe87a('0x43')]=function(_0xc43c4a,_0xe032c8){return db[_0xe87a('0x39')][_0xe87a('0x3f')]({'where':{'id':_0xc43c4a[_0xe87a('0x3d')]['id']}})[_0xe87a('0x21')](handleEntityNotFound(_0xe032c8,null))[_0xe87a('0x21')](removeEntity(_0xe032c8,null))[_0xe87a('0x40')](handleError(_0xe032c8,null));};exports[_0xe87a('0x44')]=function(_0x1ec3f5,_0x1f4272,_0x59ef9d){var _0x369bec={};var _0x9c063a={};var _0x35e125;var _0x1bbd2e;return db[_0xe87a('0x39')][_0xe87a('0x45')]({'where':{'id':_0x1ec3f5[_0xe87a('0x3d')]['id']}})[_0xe87a('0x21')](handleEntityNotFound(_0x1f4272,null))[_0xe87a('0x21')](function(_0x5ee0b9){if(_0x5ee0b9){_0x35e125=_0x5ee0b9;_0x9c063a['model']=_[_0xe87a('0x2a')](db[_0xe87a('0x46')]['rawAttributes']);_0x9c063a[_0xe87a('0x2d')]=_[_0xe87a('0x2a')](_0x1ec3f5['query']);_0x9c063a[_0xe87a('0x2b')]=_[_0xe87a('0x2c')](_0x9c063a['model'],_0x9c063a[_0xe87a('0x2d')]);_0x369bec[_0xe87a('0x2e')]=_[_0xe87a('0x2c')](_0x9c063a[_0xe87a('0x28')],qs['fields'](_0x1ec3f5['query'][_0xe87a('0x2f')]));_0x369bec[_0xe87a('0x2e')]=_0x369bec['attributes'][_0xe87a('0x3e')]?_0x369bec['attributes']:_0x9c063a[_0xe87a('0x28')];_0x369bec['order']=qs[_0xe87a('0x32')](_0x1ec3f5['query'][_0xe87a('0x32')]);_0x369bec['where']=qs[_0xe87a('0x2b')](_[_0xe87a('0x34')](_0x1ec3f5[_0xe87a('0x2d')],_0x9c063a[_0xe87a('0x2b')]));if(_0x1ec3f5[_0xe87a('0x2d')][_0xe87a('0x35')]){_0x369bec[_0xe87a('0x33')]=_[_0xe87a('0x36')](_0x369bec[_0xe87a('0x33')],{'$or':_[_0xe87a('0x24')](_0x369bec[_0xe87a('0x2e')],function(_0x5947ba){var _0x228ba1={};_0x228ba1[_0x5947ba]={'$like':'%'+_0x1ec3f5[_0xe87a('0x2d')][_0xe87a('0x35')]+'%'};return _0x228ba1;})});}_0x369bec=_[_0xe87a('0x36')]({},_0x369bec,_0x1ec3f5[_0xe87a('0x38')]);return _0x35e125[_0xe87a('0x44')](_0x369bec);}})[_0xe87a('0x21')](function(_0xd847af){if(_0xd847af){_0x1bbd2e=_0xd847af[_0xe87a('0x3e')];if(!_0x1ec3f5[_0xe87a('0x2d')][_0xe87a('0x30')](_0xe87a('0x47'))){_0x369bec[_0xe87a('0x19')]=qs[_0xe87a('0x19')](_0x1ec3f5[_0xe87a('0x2d')][_0xe87a('0x19')]);_0x369bec['offset']=qs[_0xe87a('0x1b')](_0x1ec3f5['query'][_0xe87a('0x1b')]);}return _0x35e125['getConfigurations'](_0x369bec);}})[_0xe87a('0x21')](function(_0x537795){if(_0x537795){return _0x537795?{'count':_0x1bbd2e,'rows':_0x537795}:null;}})[_0xe87a('0x21')](respondWithResult(_0x1f4272,null))[_0xe87a('0x40')](handleError(_0x1f4272,null));};exports[_0xe87a('0x48')]=function(_0x1754f0,_0x4827b0,_0x46d400){if(_0x1754f0[_0xe87a('0x42')]['id']){delete _0x1754f0[_0xe87a('0x42')]['id'];}return db[_0xe87a('0x39')][_0xe87a('0x45')]({'where':{'id':_0x1754f0['params']['id']}})[_0xe87a('0x21')](handleEntityNotFound(_0x4827b0,null))[_0xe87a('0x21')](function(_0x2c0fe3){if(_0x2c0fe3){_0x1754f0[_0xe87a('0x42')][_0xe87a('0x49')]=_0x2c0fe3['id'];_0x1754f0['body'][_0xe87a('0x4a')]=integrations[_0xe87a('0x4b')](_0x1754f0[_0xe87a('0x42')][_0xe87a('0x4c')],_0x1754f0[_0xe87a('0x42')][_0xe87a('0x26')]);_0x1754f0[_0xe87a('0x42')][_0xe87a('0x4d')]=integrations['getDescriptions'](_0x1754f0[_0xe87a('0x42')][_0xe87a('0x4c')],_0x1754f0['body'][_0xe87a('0x26')]);return db[_0xe87a('0x46')]['create'](_0x1754f0['body'],{'include':[{'model':db[_0xe87a('0x4e')],'as':_0xe87a('0x4a')},{'model':db[_0xe87a('0x4e')],'as':_0xe87a('0x4d')}]});}return null;})['then'](respondWithResult(_0x4827b0,null))[_0xe87a('0x40')](handleError(_0x4827b0,null));};exports[_0xe87a('0x4f')]=function(_0x3c15bb,_0x5e93c0,_0x165aef){var _0x4d26fe='';return db[_0xe87a('0x39')][_0xe87a('0x45')]({'where':{'id':_0x3c15bb[_0xe87a('0x3d')]['id']},'attributes':['id',_0xe87a('0x50'),'apiKey']})[_0xe87a('0x21')](handleEntityNotFound(_0x5e93c0,null))['then'](function(_0x562ad7){if(_0x562ad7){_0x4d26fe=_0x562ad7[_0xe87a('0x50')];var _0x3903f7=_0x4d26fe[_0xe87a('0x51')](-0x1);if(_0x3903f7==='/'){_0x4d26fe=_0x4d26fe[_0xe87a('0x52')](0x0,_0x4d26fe[_0xe87a('0x53')](_0x3903f7));}return rp({'method':_0xe87a('0x54'),'uri':util[_0xe87a('0x55')](_0xe87a('0x56'),_0x4d26fe,_0xe87a('0x57')),'headers':{'Authorization':util[_0xe87a('0x55')]('Basic\x20%s',new Buffer(util[_0xe87a('0x55')]('%s:X',_0x562ad7[_0xe87a('0x58')]))[_0xe87a('0x59')](_0xe87a('0x5a')))},'json':!![]});}})[_0xe87a('0x21')](function(_0x39d749){if(_0x39d749){var _0xa39f55=[_0xe87a('0x5b'),'subject',_0xe87a('0x5c'),_0xe87a('0x5d'),_0xe87a('0x16'),_0xe87a('0x5e'),_0xe87a('0x5f'),_0xe87a('0x60'),_0xe87a('0x61'),_0xe87a('0x5f'),_0xe87a('0x62')];_['remove'](_0x39d749,function(_0xf16ceb){return _0xa39f55[_0xe87a('0x63')](_0xf16ceb[_0xe87a('0x29')])||!_0xf16ceb[_0xe87a('0x64')]&&_0xf16ceb[_0xe87a('0x26')]!==_0xe87a('0x65')&&_0xf16ceb[_0xe87a('0x26')]!==_0xe87a('0x66');});return{'count':_0x39d749[_0xe87a('0x3e')],'rows':_[_0xe87a('0x24')](_0x39d749,function(_0x3f45e7){return{'id':_0x3f45e7[_0xe87a('0x29')],'name':_0x3f45e7['label'],'custom':!_0x3f45e7[_0xe87a('0x64')],'options':_0x3f45e7['choices']?_[_0xe87a('0x24')](_0x3f45e7['choices'],function(_0x5a94b1){return{'name':_[_0xe87a('0x67')](_0x5a94b1),'value':_0x5a94b1};}):[]};})};}})[_0xe87a('0x21')](respondWithResult(_0x5e93c0,null))[_0xe87a('0x40')](function(_0x1a3d32){var _0x81a349=_0x3c15bb[_0xe87a('0x2d')][_0xe87a('0x68')]?0x1f4:_0x1a3d32[_0xe87a('0x69')]||0x1f4;logger[_0xe87a('0x6a')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x81a349,JSON['stringify'](_0x1a3d32));delete _0x1a3d32[_0xe87a('0x29')];if(_0x81a349===0x191){_0x81a349=0x190;}_0x5e93c0[_0xe87a('0x16')](_0x81a349)[_0xe87a('0x6b')](_0x3c15bb[_0xe87a('0x2d')][_0xe87a('0x68')]?{'message':_0xe87a('0x6c'),'statusCode':_0x1a3d32[_0xe87a('0x69')]}:_0x1a3d32);});};
\ No newline at end of file
index 87bb968..fd44c67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad3d=['util','api','moment','request-promise','path','../../config/environment','./intFreshdeskAccount.attributes','exports','define','FreshdeskAccount','lodash'];(function(_0x2aeab4,_0x40257d){var _0x8f07c4=function(_0x45aa49){while(--_0x45aa49){_0x2aeab4['push'](_0x2aeab4['shift']());}};_0x8f07c4(++_0x40257d);}(_0xad3d,0x149));var _0xdad3=function(_0xc42c7b,_0x58a57b){_0xc42c7b=_0xc42c7b-0x0;var _0x2f3aec=_0xad3d[_0xc42c7b];return _0x2f3aec;};'use strict';var _=require(_0xdad3('0x0'));var util=require(_0xdad3('0x1'));var logger=require('../../config/logger')(_0xdad3('0x2'));var moment=require(_0xdad3('0x3'));var BPromise=require('bluebird');var rp=require(_0xdad3('0x4'));var fs=require('fs');var path=require(_0xdad3('0x5'));var rimraf=require('rimraf');var config=require(_0xdad3('0x6'));var attributes=require(_0xdad3('0x7'));var integrations=require('../../components/integrations/configuration');module[_0xdad3('0x8')]=function(_0x2af9b7,_0x2a8a63){return _0x2af9b7[_0xdad3('0x9')](_0xdad3('0xa'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xecef=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','FreshdeskAccount','int_freshdesk_accounts','lodash','util','api','bluebird'];(function(_0x5b8426,_0x50745a){var _0x54431b=function(_0x3e27da){while(--_0x3e27da){_0x5b8426['push'](_0x5b8426['shift']());}};_0x54431b(++_0x50745a);}(_0xecef,0x8c));var _0xfece=function(_0x29eade,_0x4ca199){_0x29eade=_0x29eade-0x0;var _0x30cfdc=_0xecef[_0x29eade];return _0x30cfdc;};'use strict';var _=require(_0xfece('0x0'));var util=require(_0xfece('0x1'));var logger=require('../../config/logger')(_0xfece('0x2'));var moment=require('moment');var BPromise=require(_0xfece('0x3'));var rp=require(_0xfece('0x4'));var fs=require('fs');var path=require(_0xfece('0x5'));var rimraf=require(_0xfece('0x6'));var config=require(_0xfece('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xfece('0x8'));module[_0xfece('0x9')]=function(_0x3382c3,_0x26392f){return _0x3382c3['define'](_0xfece('0xa'),attributes,{'tableName':_0xfece('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 497c084..8e72823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04f5=['map','model','catch','find','ShowFreshdeskAccount','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','FreshdeskAccount,\x20%s,\x20%s','message','result','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','limit','include'];(function(_0x40d800,_0x5c4a47){var _0x22fb2f=function(_0x558ef0){while(--_0x558ef0){_0x40d800['push'](_0x40d800['shift']());}};_0x22fb2f(++_0x5c4a47);}(_0x04f5,0x1a9));var _0x504f=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0x04f5[_0x356e8d];return _0x39e65a;};'use strict';var _=require(_0x504f('0x0'));var util=require(_0x504f('0x1'));var moment=require(_0x504f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x504f('0x3'));var db=require(_0x504f('0x4'))['db'];var utils=require(_0x504f('0x5'));var logger=require(_0x504f('0x6'))(_0x504f('0x7'));var config=require(_0x504f('0x8'));var jayson=require(_0x504f('0x9'));var client=jayson[_0x504f('0xa')][_0x504f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40ea1e,_0x5ddbf2,_0x46b5bd){return new BPromise(function(_0x37fbe6,_0x3c75d3){return client[_0x504f('0xc')](_0x40ea1e,_0x46b5bd)[_0x504f('0xd')](function(_0x38974e){logger[_0x504f('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x5ddbf2,_0x504f('0xf'));logger[_0x504f('0x10')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x5ddbf2,_0x504f('0xf'),JSON[_0x504f('0x11')](_0x38974e));if(_0x38974e['error']){if(_0x38974e[_0x504f('0x12')]['code']===0x1f4){logger['error'](_0x504f('0x13'),_0x5ddbf2,_0x38974e[_0x504f('0x12')]['message']);return _0x3c75d3(_0x38974e['error'][_0x504f('0x14')]);}logger[_0x504f('0x12')](_0x504f('0x13'),_0x5ddbf2,_0x38974e[_0x504f('0x12')]['message']);return _0x37fbe6(_0x38974e[_0x504f('0x12')][_0x504f('0x14')]);}else{logger[_0x504f('0xe')](_0x504f('0x13'),_0x5ddbf2,'request\x20sent');_0x37fbe6(_0x38974e[_0x504f('0x15')]['message']);}})['catch'](function(_0x573889){logger[_0x504f('0x12')](_0x504f('0x13'),_0x5ddbf2,_0x573889);_0x3c75d3(_0x573889);});});}exports[_0x504f('0x16')]=function(_0xbde590){var _0x56e2e4=this;return new Promise(function(_0x39740f,_0x4646fa){return db[_0x504f('0x17')]['findAll']({'raw':_0xbde590[_0x504f('0x18')]?_0xbde590[_0x504f('0x18')][_0x504f('0x19')]===undefined?!![]:![]:!![],'where':_0xbde590[_0x504f('0x18')]?_0xbde590[_0x504f('0x18')][_0x504f('0x1a')]||null:null,'attributes':_0xbde590[_0x504f('0x18')]?_0xbde590['options'][_0x504f('0x1b')]||null:null,'limit':_0xbde590['options']?_0xbde590[_0x504f('0x18')][_0x504f('0x1c')]||null:null,'include':_0xbde590[_0x504f('0x18')]?_0xbde590[_0x504f('0x18')][_0x504f('0x1d')]?_[_0x504f('0x1e')](_0xbde590[_0x504f('0x18')]['include'],function(_0x32c7ef){return{'model':db[_0x32c7ef['model']],'as':_0x32c7ef['as'],'attributes':_0x32c7ef[_0x504f('0x1b')],'include':_0x32c7ef['include']?_['map'](_0x32c7ef[_0x504f('0x1d')],function(_0x95ddf2){return{'model':db[_0x95ddf2[_0x504f('0x1f')]],'as':_0x95ddf2['as'],'attributes':_0x95ddf2[_0x504f('0x1b')],'include':_0x95ddf2[_0x504f('0x1d')]?_[_0x504f('0x1e')](_0x95ddf2[_0x504f('0x1d')],function(_0x599492){return{'model':db[_0x599492[_0x504f('0x1f')]],'as':_0x599492['as'],'attributes':_0x599492[_0x504f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x504f('0xd')](function(_0x56bd57){logger['info']('GetFreshdeskAccount',_0xbde590);logger[_0x504f('0x10')](_0x504f('0x16'),_0xbde590,JSON[_0x504f('0x11')](_0x56bd57));_0x39740f(_0x56bd57);})[_0x504f('0x20')](function(_0x21fe66){logger[_0x504f('0x12')](_0x504f('0x16'),_0x21fe66[_0x504f('0x14')],_0xbde590);_0x4646fa(_0x56e2e4[_0x504f('0x12')](0x1f4,_0x21fe66[_0x504f('0x14')]));});});};exports['ShowFreshdeskAccount']=function(_0x589f00){var _0xb71697=this;return new Promise(function(_0x4f883d,_0x30550a){return db['FreshdeskAccount'][_0x504f('0x21')]({'raw':_0x589f00[_0x504f('0x18')]?_0x589f00[_0x504f('0x18')][_0x504f('0x19')]===undefined?!![]:![]:!![],'where':_0x589f00['options']?_0x589f00[_0x504f('0x18')][_0x504f('0x1a')]||null:null,'attributes':_0x589f00[_0x504f('0x18')]?_0x589f00[_0x504f('0x18')]['attributes']||null:null,'include':_0x589f00[_0x504f('0x18')]?_0x589f00[_0x504f('0x18')][_0x504f('0x1d')]?_['map'](_0x589f00[_0x504f('0x18')][_0x504f('0x1d')],function(_0x2facd3){return{'model':db[_0x2facd3[_0x504f('0x1f')]],'as':_0x2facd3['as'],'attributes':_0x2facd3[_0x504f('0x1b')],'include':_0x2facd3[_0x504f('0x1d')]?_[_0x504f('0x1e')](_0x2facd3['include'],function(_0x5cd2cd){return{'model':db[_0x5cd2cd[_0x504f('0x1f')]],'as':_0x5cd2cd['as'],'attributes':_0x5cd2cd[_0x504f('0x1b')],'include':_0x5cd2cd[_0x504f('0x1d')]?_['map'](_0x5cd2cd[_0x504f('0x1d')],function(_0x323c98){return{'model':db[_0x323c98['model']],'as':_0x323c98['as'],'attributes':_0x323c98[_0x504f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x504f('0xd')](function(_0x1f3250){logger[_0x504f('0xe')](_0x504f('0x22'),_0x589f00);logger[_0x504f('0x10')](_0x504f('0x22'),_0x589f00,JSON[_0x504f('0x11')](_0x1f3250));_0x4f883d(_0x1f3250);})[_0x504f('0x20')](function(_0x4ce1a6){logger[_0x504f('0x12')](_0x504f('0x22'),_0x4ce1a6[_0x504f('0x14')],_0x589f00);_0x30550a(_0xb71697['error'](0x1f4,_0x4ce1a6[_0x504f('0x14')]));});});};
\ No newline at end of file
+var _0x2b8e=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','model','find','map','ShowFreshdeskAccount'];(function(_0x358c86,_0x38a8a2){var _0x52edc5=function(_0x560096){while(--_0x560096){_0x358c86['push'](_0x358c86['shift']());}};_0x52edc5(++_0x38a8a2);}(_0x2b8e,0x18c));var _0xe2b8=function(_0x5c6eaf,_0x48190e){_0x5c6eaf=_0x5c6eaf-0x0;var _0x5ee663=_0x2b8e[_0x5c6eaf];return _0x5ee663;};'use strict';var _=require('lodash');var util=require(_0xe2b8('0x0'));var moment=require(_0xe2b8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe2b8('0x2'));var db=require(_0xe2b8('0x3'))['db'];var utils=require(_0xe2b8('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe2b8('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xe2b8('0x6')][_0xe2b8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x31ce2f,_0xc285a7,_0x11ec83){return new BPromise(function(_0x5f19c5,_0x18a880){return client[_0xe2b8('0x8')](_0x31ce2f,_0x11ec83)[_0xe2b8('0x9')](function(_0x312db6){logger[_0xe2b8('0xa')](_0xe2b8('0xb'),_0xc285a7,'request\x20sent');logger[_0xe2b8('0xc')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0xc285a7,'request\x20sent',JSON[_0xe2b8('0xd')](_0x312db6));if(_0x312db6[_0xe2b8('0xe')]){if(_0x312db6[_0xe2b8('0xe')][_0xe2b8('0xf')]===0x1f4){logger[_0xe2b8('0xe')](_0xe2b8('0xb'),_0xc285a7,_0x312db6[_0xe2b8('0xe')]['message']);return _0x18a880(_0x312db6['error'][_0xe2b8('0x10')]);}logger[_0xe2b8('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0xc285a7,_0x312db6[_0xe2b8('0xe')][_0xe2b8('0x10')]);return _0x5f19c5(_0x312db6[_0xe2b8('0xe')][_0xe2b8('0x10')]);}else{logger[_0xe2b8('0xa')](_0xe2b8('0xb'),_0xc285a7,_0xe2b8('0x11'));_0x5f19c5(_0x312db6[_0xe2b8('0x12')][_0xe2b8('0x10')]);}})[_0xe2b8('0x13')](function(_0x19cd4e){logger[_0xe2b8('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0xc285a7,_0x19cd4e);_0x18a880(_0x19cd4e);});});}exports[_0xe2b8('0x14')]=function(_0x3aac22){var _0x1abe74=this;return new Promise(function(_0x1c0bdc,_0x3fff6b){return db[_0xe2b8('0x15')][_0xe2b8('0x16')]({'raw':_0x3aac22[_0xe2b8('0x17')]?_0x3aac22[_0xe2b8('0x17')][_0xe2b8('0x18')]===undefined?!![]:![]:!![],'where':_0x3aac22[_0xe2b8('0x17')]?_0x3aac22[_0xe2b8('0x17')][_0xe2b8('0x19')]||null:null,'attributes':_0x3aac22[_0xe2b8('0x17')]?_0x3aac22[_0xe2b8('0x17')][_0xe2b8('0x1a')]||null:null,'limit':_0x3aac22[_0xe2b8('0x17')]?_0x3aac22[_0xe2b8('0x17')][_0xe2b8('0x1b')]||null:null,'include':_0x3aac22[_0xe2b8('0x17')]?_0x3aac22['options'][_0xe2b8('0x1c')]?_['map'](_0x3aac22[_0xe2b8('0x17')][_0xe2b8('0x1c')],function(_0x3aa3e3){return{'model':db[_0x3aa3e3[_0xe2b8('0x1d')]],'as':_0x3aa3e3['as'],'attributes':_0x3aa3e3[_0xe2b8('0x1a')],'include':_0x3aa3e3[_0xe2b8('0x1c')]?_['map'](_0x3aa3e3[_0xe2b8('0x1c')],function(_0x545611){return{'model':db[_0x545611['model']],'as':_0x545611['as'],'attributes':_0x545611['attributes'],'include':_0x545611[_0xe2b8('0x1c')]?_['map'](_0x545611[_0xe2b8('0x1c')],function(_0x353c12){return{'model':db[_0x353c12[_0xe2b8('0x1d')]],'as':_0x353c12['as'],'attributes':_0x353c12[_0xe2b8('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe2b8('0x9')](function(_0x2ed519){logger['info'](_0xe2b8('0x14'),_0x3aac22);logger[_0xe2b8('0xc')]('GetFreshdeskAccount',_0x3aac22,JSON['stringify'](_0x2ed519));_0x1c0bdc(_0x2ed519);})[_0xe2b8('0x13')](function(_0x16ff53){logger[_0xe2b8('0xe')](_0xe2b8('0x14'),_0x16ff53['message'],_0x3aac22);_0x3fff6b(_0x1abe74[_0xe2b8('0xe')](0x1f4,_0x16ff53[_0xe2b8('0x10')]));});});};exports['ShowFreshdeskAccount']=function(_0x3e5ad4){var _0x22a707=this;return new Promise(function(_0x163dcb,_0x494e7e){return db['FreshdeskAccount'][_0xe2b8('0x1e')]({'raw':_0x3e5ad4[_0xe2b8('0x17')]?_0x3e5ad4[_0xe2b8('0x17')][_0xe2b8('0x18')]===undefined?!![]:![]:!![],'where':_0x3e5ad4[_0xe2b8('0x17')]?_0x3e5ad4[_0xe2b8('0x17')][_0xe2b8('0x19')]||null:null,'attributes':_0x3e5ad4['options']?_0x3e5ad4['options'][_0xe2b8('0x1a')]||null:null,'include':_0x3e5ad4['options']?_0x3e5ad4[_0xe2b8('0x17')][_0xe2b8('0x1c')]?_[_0xe2b8('0x1f')](_0x3e5ad4[_0xe2b8('0x17')][_0xe2b8('0x1c')],function(_0x3c5ca9){return{'model':db[_0x3c5ca9['model']],'as':_0x3c5ca9['as'],'attributes':_0x3c5ca9[_0xe2b8('0x1a')],'include':_0x3c5ca9[_0xe2b8('0x1c')]?_['map'](_0x3c5ca9['include'],function(_0xacdc31){return{'model':db[_0xacdc31[_0xe2b8('0x1d')]],'as':_0xacdc31['as'],'attributes':_0xacdc31[_0xe2b8('0x1a')],'include':_0xacdc31[_0xe2b8('0x1c')]?_[_0xe2b8('0x1f')](_0xacdc31['include'],function(_0x4d1100){return{'model':db[_0x4d1100[_0xe2b8('0x1d')]],'as':_0x4d1100['as'],'attributes':_0x4d1100[_0xe2b8('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe2b8('0x9')](function(_0x3fe319){logger[_0xe2b8('0xa')](_0xe2b8('0x20'),_0x3e5ad4);logger[_0xe2b8('0xc')]('ShowFreshdeskAccount',_0x3e5ad4,JSON['stringify'](_0x3fe319));_0x163dcb(_0x3fe319);})[_0xe2b8('0x13')](function(_0x2dd859){logger[_0xe2b8('0xe')](_0xe2b8('0x20'),_0x2dd859[_0xe2b8('0x10')],_0x3e5ad4);_0x494e7e(_0x22a707[_0xe2b8('0xe')](0x1f4,_0x2dd859[_0xe2b8('0x10')]));});});};
\ No newline at end of file
index 71809b3..247741e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc35f=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intFreshdeskConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update'];(function(_0xe033e7,_0x561a6d){var _0x63031f=function(_0x246e1f){while(--_0x246e1f){_0xe033e7['push'](_0xe033e7['shift']());}};_0x63031f(++_0x561a6d);}(_0xc35f,0x84));var _0xfc35=function(_0x4c649a,_0x3b5658){_0x4c649a=_0x4c649a-0x0;var _0x32970f=_0xc35f[_0x4c649a];return _0x32970f;};'use strict';var multer=require(_0xfc35('0x0'));var util=require('util');var path=require(_0xfc35('0x1'));var timeout=require(_0xfc35('0x2'));var express=require(_0xfc35('0x3'));var router=express[_0xfc35('0x4')]();var fs_extra=require(_0xfc35('0x5'));var auth=require(_0xfc35('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfc35('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xfc35('0x8')]);router[_0xfc35('0x9')](_0xfc35('0xa'),auth[_0xfc35('0xb')](),controller[_0xfc35('0xc')]);router[_0xfc35('0x9')](_0xfc35('0xd'),auth[_0xfc35('0xb')](),controller['getFields']);router['get'](_0xfc35('0xe'),auth[_0xfc35('0xb')](),controller[_0xfc35('0xf')]);router[_0xfc35('0x9')]('/:id/descriptions',auth[_0xfc35('0xb')](),controller[_0xfc35('0x10')]);router[_0xfc35('0x9')](_0xfc35('0x11'),auth[_0xfc35('0xb')](),controller[_0xfc35('0x12')]);router[_0xfc35('0x13')]('/',auth[_0xfc35('0xb')](),controller[_0xfc35('0x14')]);router[_0xfc35('0x13')]('/:id/tags',auth[_0xfc35('0xb')](),controller[_0xfc35('0x15')]);router[_0xfc35('0x16')]('/:id',auth[_0xfc35('0xb')](),controller[_0xfc35('0x17')]);router['delete'](_0xfc35('0xa'),auth[_0xfc35('0xb')](),controller[_0xfc35('0x18')]);module[_0xfc35('0x19')]=router;
\ No newline at end of file
+var _0x8fdf=['delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update'];(function(_0x29733c,_0x2da30b){var _0x49e72f=function(_0x405c92){while(--_0x405c92){_0x29733c['push'](_0x29733c['shift']());}};_0x49e72f(++_0x2da30b);}(_0x8fdf,0x11a));var _0xf8fd=function(_0x48c537,_0x554aa3){_0x48c537=_0x48c537-0x0;var _0x42f5a5=_0x8fdf[_0x48c537];return _0x42f5a5;};'use strict';var multer=require(_0xf8fd('0x0'));var util=require('util');var path=require(_0xf8fd('0x1'));var timeout=require(_0xf8fd('0x2'));var express=require(_0xf8fd('0x3'));var router=express[_0xf8fd('0x4')]();var fs_extra=require(_0xf8fd('0x5'));var auth=require(_0xf8fd('0x6'));var interaction=require(_0xf8fd('0x7'));var config=require(_0xf8fd('0x8'));var controller=require(_0xf8fd('0x9'));router['get']('/',auth[_0xf8fd('0xa')](),controller[_0xf8fd('0xb')]);router[_0xf8fd('0xc')](_0xf8fd('0xd'),auth[_0xf8fd('0xa')](),controller['show']);router[_0xf8fd('0xc')](_0xf8fd('0xe'),auth[_0xf8fd('0xa')](),controller['getFields']);router[_0xf8fd('0xc')](_0xf8fd('0xf'),auth[_0xf8fd('0xa')](),controller[_0xf8fd('0x10')]);router[_0xf8fd('0xc')](_0xf8fd('0x11'),auth[_0xf8fd('0xa')](),controller[_0xf8fd('0x12')]);router[_0xf8fd('0xc')](_0xf8fd('0x13'),auth[_0xf8fd('0xa')](),controller[_0xf8fd('0x14')]);router[_0xf8fd('0x15')]('/',auth[_0xf8fd('0xa')](),controller[_0xf8fd('0x16')]);router[_0xf8fd('0x15')](_0xf8fd('0x13'),auth[_0xf8fd('0xa')](),controller[_0xf8fd('0x17')]);router[_0xf8fd('0x18')](_0xf8fd('0xd'),auth['isAuthenticated'](),controller[_0xf8fd('0x19')]);router[_0xf8fd('0x1a')](_0xf8fd('0xd'),auth[_0xf8fd('0xa')](),controller[_0xf8fd('0x1b')]);module['exports']=router;
\ No newline at end of file
index d8c60e7..b0e7efa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f2=['STRING'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x63f2,0x179));var _0x263f=function(_0x3f7814,_0x1f3f4e){_0x3f7814=_0x3f7814-0x0;var _0x4b8e17=_0x63f2[_0x3f7814];return _0x4b8e17;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x263f('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd1c7=['exports','STRING','sequelize'];(function(_0x19f55e,_0xd4ffc3){var _0x44cfee=function(_0x138a86){while(--_0x138a86){_0x19f55e['push'](_0x19f55e['shift']());}};_0x44cfee(++_0xd4ffc3);}(_0xd1c7,0x18b));var _0x7d1c=function(_0x437560,_0xc5d67f){_0x437560=_0x437560-0x0;var _0x278361=_0xd1c7[_0x437560];return _0x278361;};'use strict';var Sequelize=require(_0x7d1c('0x0'));module[_0x7d1c('0x1')]={'name':{'type':Sequelize[_0x7d1c('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b4980e1..0151ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a1=['rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','count','includeAll','include','rows','catch','show','params','options','find','create','body','getFields','findOne','FreshdeskField','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','limit','status','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration'];(function(_0x49cd48,_0x65614b){var _0x3cc58f=function(_0x39c6d8){while(--_0x39c6d8){_0x49cd48['push'](_0x49cd48['shift']());}};_0x3cc58f(++_0x65614b);}(_0x62a1,0xda));var _0x162a=function(_0x14fd56,_0x24de51){_0x14fd56=_0x14fd56-0x0;var _0x168d7d=_0x62a1[_0x14fd56];return _0x168d7d;};'use strict';var emlformat=require(_0x162a('0x0'));var rimraf=require(_0x162a('0x1'));var zipdir=require(_0x162a('0x2'));var jsonpatch=require(_0x162a('0x3'));var rp=require(_0x162a('0x4'));var moment=require(_0x162a('0x5'));var BPromise=require(_0x162a('0x6'));var Mustache=require('mustache');var util=require(_0x162a('0x7'));var path=require(_0x162a('0x8'));var sox=require(_0x162a('0x9'));var csv=require(_0x162a('0xa'));var ejs=require(_0x162a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x162a('0xc'));var crypto=require(_0x162a('0xd'));var jsforce=require(_0x162a('0xe'));var deskjs=require(_0x162a('0xf'));var toCsv=require(_0x162a('0xa'));var querystring=require(_0x162a('0x10'));var Papa=require(_0x162a('0x11'));var Redis=require(_0x162a('0x12'));var authService=require(_0x162a('0x13'));var qs=require(_0x162a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x162a('0x15'));var logger=require(_0x162a('0x16'))(_0x162a('0x17'));var utils=require(_0x162a('0x18'));var config=require(_0x162a('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x162a('0x1a'))['db'];function respondWithStatusCode(_0x3d24d8,_0x2b5ffe){_0x2b5ffe=_0x2b5ffe||0xcc;return function(_0x144eba){if(_0x144eba){return _0x3d24d8[_0x162a('0x1b')](_0x2b5ffe);}return _0x3d24d8['status'](_0x2b5ffe)[_0x162a('0x1c')]();};}function respondWithResult(_0x3a8989,_0x259b6b){_0x259b6b=_0x259b6b||0xc8;return function(_0x2efe0e){if(_0x2efe0e){return _0x3a8989['status'](_0x259b6b)['json'](_0x2efe0e);}};}function respondWithFilteredResult(_0x271314,_0x239065){return function(_0x14aa9c){if(_0x14aa9c){var _0x53fc91=typeof _0x239065[_0x162a('0x1d')]===_0x162a('0x1e')&&typeof _0x239065['limit']===_0x162a('0x1e');var _0x22830e=_0x14aa9c['count'];var _0xf6e640=_0x53fc91?0x0:_0x239065[_0x162a('0x1d')];var _0x2a7759=_0x53fc91?_0x14aa9c['count']:_0x239065[_0x162a('0x1d')]+_0x239065[_0x162a('0x1f')];var _0x33df1b;if(_0x2a7759>=_0x22830e){_0x2a7759=_0x22830e;_0x33df1b=0xc8;}else{_0x33df1b=0xce;}_0x271314[_0x162a('0x20')](_0x33df1b);return _0x271314[_0x162a('0x21')](_0x162a('0x22'),_0xf6e640+'-'+_0x2a7759+'/'+_0x22830e)[_0x162a('0x23')](_0x14aa9c);}return null;};}function patchUpdates(_0x3958ae){return function(_0x40a8b1){try{jsonpatch[_0x162a('0x24')](_0x40a8b1,_0x3958ae,!![]);}catch(_0x3e4317){return BPromise[_0x162a('0x25')](_0x3e4317);}return _0x40a8b1[_0x162a('0x26')]();};}function saveUpdates(_0x49b5ef,_0x2a6559){return function(_0x3040ce){if(_0x3040ce){return _0x3040ce[_0x162a('0x27')](_0x49b5ef)[_0x162a('0x28')](function(_0x3d04df){return _0x3d04df;});}return null;};}function removeEntity(_0x2be482,_0x5688e0){return function(_0x401eb4){if(_0x401eb4){return _0x401eb4[_0x162a('0x29')]()[_0x162a('0x28')](function(){_0x2be482['status'](0xcc)[_0x162a('0x1c')]();});}};}function handleEntityNotFound(_0xda636d,_0x568501){return function(_0x57d199){if(!_0x57d199){_0xda636d[_0x162a('0x1b')](0x194);}return _0x57d199;};}function handleError(_0x5c95a2,_0x80e590){_0x80e590=_0x80e590||0x1f4;return function(_0x3238c1){logger[_0x162a('0x2a')](_0x3238c1[_0x162a('0x2b')]);if(_0x3238c1[_0x162a('0x2c')]){delete _0x3238c1[_0x162a('0x2c')];}_0x5c95a2[_0x162a('0x20')](_0x80e590)[_0x162a('0x2d')](_0x3238c1);};}exports[_0x162a('0x2e')]=function(_0x25233c,_0x1884a6){var _0x86cc29={},_0x6357bb={},_0x522d83={'count':0x0,'rows':[]};var _0x4f59c3=_[_0x162a('0x2f')](db[_0x162a('0x30')][_0x162a('0x31')],function(_0x6d77b0){return{'name':_0x6d77b0[_0x162a('0x32')],'type':_0x6d77b0[_0x162a('0x33')][_0x162a('0x34')]};});_0x6357bb[_0x162a('0x35')]=_[_0x162a('0x2f')](_0x4f59c3,'name');_0x6357bb[_0x162a('0x36')]=_[_0x162a('0x37')](_0x25233c[_0x162a('0x36')]);_0x6357bb['filters']=_[_0x162a('0x38')](_0x6357bb[_0x162a('0x35')],_0x6357bb[_0x162a('0x36')]);_0x86cc29['attributes']=_[_0x162a('0x38')](_0x6357bb[_0x162a('0x35')],qs[_0x162a('0x39')](_0x25233c[_0x162a('0x36')][_0x162a('0x39')]));_0x86cc29['attributes']=_0x86cc29[_0x162a('0x3a')][_0x162a('0x3b')]?_0x86cc29[_0x162a('0x3a')]:_0x6357bb[_0x162a('0x35')];if(!_0x25233c['query'][_0x162a('0x3c')](_0x162a('0x3d'))){_0x86cc29[_0x162a('0x1f')]=qs[_0x162a('0x1f')](_0x25233c[_0x162a('0x36')][_0x162a('0x1f')]);_0x86cc29[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x25233c['query']['offset']);}_0x86cc29[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x25233c[_0x162a('0x36')][_0x162a('0x3f')]);_0x86cc29[_0x162a('0x40')]=qs[_0x162a('0x41')](_[_0x162a('0x42')](_0x25233c[_0x162a('0x36')],_0x6357bb[_0x162a('0x41')]),_0x4f59c3);if(_0x25233c[_0x162a('0x36')][_0x162a('0x43')]){_0x86cc29[_0x162a('0x40')]=_[_0x162a('0x44')](_0x86cc29[_0x162a('0x40')],{'$or':_[_0x162a('0x2f')](_0x4f59c3,function(_0x38b518){if(_0x38b518[_0x162a('0x33')]!==_0x162a('0x45')){var _0x2e4bcb={};_0x2e4bcb[_0x38b518[_0x162a('0x2c')]]={'$like':'%'+_0x25233c['query'][_0x162a('0x43')]+'%'};return _0x2e4bcb;}})});}_0x86cc29=_[_0x162a('0x44')]({},_0x86cc29,_0x25233c['options']);var _0x21d351={'where':_0x86cc29[_0x162a('0x40')]};return db[_0x162a('0x30')][_0x162a('0x46')](_0x21d351)[_0x162a('0x28')](function(_0x13442f){_0x522d83[_0x162a('0x46')]=_0x13442f;if(_0x25233c[_0x162a('0x36')][_0x162a('0x47')]){_0x86cc29[_0x162a('0x48')]=[{'all':!![]}];}return db[_0x162a('0x30')]['findAll'](_0x86cc29);})[_0x162a('0x28')](function(_0x3c1be4){_0x522d83[_0x162a('0x49')]=_0x3c1be4;return _0x522d83;})['then'](respondWithFilteredResult(_0x1884a6,_0x86cc29))[_0x162a('0x4a')](handleError(_0x1884a6,null));};exports[_0x162a('0x4b')]=function(_0xe512a1,_0x49ea35){var _0x413040={'raw':![],'where':{'id':_0xe512a1[_0x162a('0x4c')]['id']}},_0x2f611d={};_0x2f611d['model']=_[_0x162a('0x37')](db['FreshdeskConfiguration'][_0x162a('0x31')]);_0x2f611d[_0x162a('0x36')]=_[_0x162a('0x37')](_0xe512a1[_0x162a('0x36')]);_0x2f611d[_0x162a('0x41')]=_[_0x162a('0x38')](_0x2f611d['model'],_0x2f611d[_0x162a('0x36')]);_0x413040['attributes']=_[_0x162a('0x38')](_0x2f611d[_0x162a('0x35')],qs[_0x162a('0x39')](_0xe512a1['query'][_0x162a('0x39')]));_0x413040[_0x162a('0x3a')]=_0x413040[_0x162a('0x3a')][_0x162a('0x3b')]?_0x413040[_0x162a('0x3a')]:_0x2f611d['model'];if(_0xe512a1[_0x162a('0x36')][_0x162a('0x47')]){_0x413040[_0x162a('0x48')]=[{'all':!![]}];}_0x413040=_[_0x162a('0x44')]({},_0x413040,_0xe512a1[_0x162a('0x4d')]);return db[_0x162a('0x30')][_0x162a('0x4e')](_0x413040)[_0x162a('0x28')](handleEntityNotFound(_0x49ea35,null))[_0x162a('0x28')](respondWithResult(_0x49ea35,null))[_0x162a('0x4a')](handleError(_0x49ea35,null));};exports[_0x162a('0x4f')]=function(_0xf6a85b,_0x1f372e){return db[_0x162a('0x30')][_0x162a('0x4f')](_0xf6a85b[_0x162a('0x50')],{})['then'](respondWithResult(_0x1f372e,0xc9))[_0x162a('0x4a')](handleError(_0x1f372e,null));};exports[_0x162a('0x27')]=function(_0x5561d0,_0x2c05b6){if(_0x5561d0[_0x162a('0x50')]['id']){delete _0x5561d0['body']['id'];}return db[_0x162a('0x30')][_0x162a('0x4e')]({'where':{'id':_0x5561d0[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x2c05b6,null))[_0x162a('0x28')](saveUpdates(_0x5561d0[_0x162a('0x50')],null))['then'](respondWithResult(_0x2c05b6,null))['catch'](handleError(_0x2c05b6,null));};exports[_0x162a('0x29')]=function(_0x3310f7,_0x514a2d){return db['FreshdeskConfiguration'][_0x162a('0x4e')]({'where':{'id':_0x3310f7[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x514a2d,null))['then'](removeEntity(_0x514a2d,null))['catch'](handleError(_0x514a2d,null));};exports[_0x162a('0x51')]=function(_0x48c8b8,_0x4b904d,_0x45550e){var _0x1f5f78={};var _0x16b614={};var _0x2f615a;var _0x42dfea;return db[_0x162a('0x30')][_0x162a('0x52')]({'where':{'id':_0x48c8b8['params']['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x4b904d,null))['then'](function(_0xacde78){if(_0xacde78){_0x2f615a=_0xacde78;_0x16b614['model']=_[_0x162a('0x37')](db[_0x162a('0x53')]['rawAttributes']);_0x16b614['query']=_[_0x162a('0x37')](_0x48c8b8[_0x162a('0x36')]);_0x16b614[_0x162a('0x41')]=_[_0x162a('0x38')](_0x16b614['model'],_0x16b614[_0x162a('0x36')]);_0x1f5f78[_0x162a('0x3a')]=_[_0x162a('0x38')](_0x16b614['model'],qs[_0x162a('0x39')](_0x48c8b8[_0x162a('0x36')][_0x162a('0x39')]));_0x1f5f78['attributes']=_0x1f5f78['attributes'][_0x162a('0x3b')]?_0x1f5f78[_0x162a('0x3a')]:_0x16b614[_0x162a('0x35')];_0x1f5f78[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x48c8b8['query'][_0x162a('0x3f')]);_0x1f5f78[_0x162a('0x40')]=qs[_0x162a('0x41')](_[_0x162a('0x42')](_0x48c8b8[_0x162a('0x36')],_0x16b614[_0x162a('0x41')]));if(_0x48c8b8[_0x162a('0x36')][_0x162a('0x43')]){_0x1f5f78[_0x162a('0x40')]=_[_0x162a('0x44')](_0x1f5f78['where'],{'$or':_[_0x162a('0x2f')](_0x1f5f78[_0x162a('0x3a')],function(_0x3d70b5){var _0x1389bd={};_0x1389bd[_0x3d70b5]={'$like':'%'+_0x48c8b8['query'][_0x162a('0x43')]+'%'};return _0x1389bd;})});}_0x1f5f78=_[_0x162a('0x44')]({},_0x1f5f78,_0x48c8b8[_0x162a('0x4d')]);return _0x2f615a[_0x162a('0x51')](_0x1f5f78);}})['then'](function(_0x186e5d){if(_0x186e5d){_0x42dfea=_0x186e5d[_0x162a('0x3b')];if(!_0x48c8b8[_0x162a('0x36')][_0x162a('0x3c')](_0x162a('0x3d'))){_0x1f5f78[_0x162a('0x1f')]=qs[_0x162a('0x1f')](_0x48c8b8[_0x162a('0x36')][_0x162a('0x1f')]);_0x1f5f78['offset']=qs['offset'](_0x48c8b8['query'][_0x162a('0x1d')]);}return _0x2f615a['getFields'](_0x1f5f78);}})['then'](function(_0x2070d2){if(_0x2070d2){return _0x2070d2?{'count':_0x42dfea,'rows':_0x2070d2}:null;}})[_0x162a('0x28')](respondWithResult(_0x4b904d,null))['catch'](handleError(_0x4b904d,null));};exports[_0x162a('0x54')]=function(_0x3e83c6,_0x5d87c2,_0x16746b){var _0x4e2dbd={};var _0xfce6c5={};var _0x27ab09;var _0x4948d3;return db[_0x162a('0x30')][_0x162a('0x52')]({'where':{'id':_0x3e83c6['params']['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x5d87c2,null))[_0x162a('0x28')](function(_0x10431b){if(_0x10431b){_0x27ab09=_0x10431b;_0xfce6c5[_0x162a('0x35')]=_['keys'](db[_0x162a('0x53')]['rawAttributes']);_0xfce6c5[_0x162a('0x36')]=_[_0x162a('0x37')](_0x3e83c6[_0x162a('0x36')]);_0xfce6c5[_0x162a('0x41')]=_['intersection'](_0xfce6c5['model'],_0xfce6c5[_0x162a('0x36')]);_0x4e2dbd['attributes']=_[_0x162a('0x38')](_0xfce6c5[_0x162a('0x35')],qs[_0x162a('0x39')](_0x3e83c6[_0x162a('0x36')][_0x162a('0x39')]));_0x4e2dbd['attributes']=_0x4e2dbd['attributes'][_0x162a('0x3b')]?_0x4e2dbd['attributes']:_0xfce6c5[_0x162a('0x35')];_0x4e2dbd[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x3e83c6['query'][_0x162a('0x3f')]);_0x4e2dbd[_0x162a('0x40')]=qs[_0x162a('0x41')](_[_0x162a('0x42')](_0x3e83c6[_0x162a('0x36')],_0xfce6c5[_0x162a('0x41')]));if(_0x3e83c6['query'][_0x162a('0x43')]){_0x4e2dbd[_0x162a('0x40')]=_['merge'](_0x4e2dbd[_0x162a('0x40')],{'$or':_[_0x162a('0x2f')](_0x4e2dbd[_0x162a('0x3a')],function(_0x465c5e){var _0x4e0504={};_0x4e0504[_0x465c5e]={'$like':'%'+_0x3e83c6[_0x162a('0x36')]['filter']+'%'};return _0x4e0504;})});}_0x4e2dbd=_[_0x162a('0x44')]({},_0x4e2dbd,_0x3e83c6['options']);return _0x27ab09[_0x162a('0x54')](_0x4e2dbd);}})[_0x162a('0x28')](function(_0x2b01ee){if(_0x2b01ee){_0x4948d3=_0x2b01ee[_0x162a('0x3b')];if(!_0x3e83c6[_0x162a('0x36')]['hasOwnProperty'](_0x162a('0x3d'))){_0x4e2dbd['limit']=qs['limit'](_0x3e83c6[_0x162a('0x36')][_0x162a('0x1f')]);_0x4e2dbd[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x3e83c6['query'][_0x162a('0x1d')]);}return _0x27ab09['getSubjects'](_0x4e2dbd);}})['then'](function(_0x2b9e04){if(_0x2b9e04){return _0x2b9e04?{'count':_0x4948d3,'rows':_0x2b9e04}:null;}})['then'](respondWithResult(_0x5d87c2,null))[_0x162a('0x4a')](handleError(_0x5d87c2,null));};exports[_0x162a('0x55')]=function(_0x409e0d,_0x220ee3,_0x39bb05){var _0x1ccc3e={};var _0x447757={};var _0x5b2499;var _0xfd6077;return db[_0x162a('0x30')][_0x162a('0x52')]({'where':{'id':_0x409e0d[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x220ee3,null))['then'](function(_0x3493e5){if(_0x3493e5){_0x5b2499=_0x3493e5;_0x447757[_0x162a('0x35')]=_[_0x162a('0x37')](db[_0x162a('0x53')]['rawAttributes']);_0x447757[_0x162a('0x36')]=_[_0x162a('0x37')](_0x409e0d[_0x162a('0x36')]);_0x447757[_0x162a('0x41')]=_['intersection'](_0x447757['model'],_0x447757[_0x162a('0x36')]);_0x1ccc3e[_0x162a('0x3a')]=_[_0x162a('0x38')](_0x447757[_0x162a('0x35')],qs[_0x162a('0x39')](_0x409e0d['query'][_0x162a('0x39')]));_0x1ccc3e[_0x162a('0x3a')]=_0x1ccc3e['attributes'][_0x162a('0x3b')]?_0x1ccc3e['attributes']:_0x447757[_0x162a('0x35')];_0x1ccc3e[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x409e0d['query'][_0x162a('0x3f')]);_0x1ccc3e[_0x162a('0x40')]=qs['filters'](_[_0x162a('0x42')](_0x409e0d['query'],_0x447757[_0x162a('0x41')]));if(_0x409e0d[_0x162a('0x36')][_0x162a('0x43')]){_0x1ccc3e[_0x162a('0x40')]=_[_0x162a('0x44')](_0x1ccc3e['where'],{'$or':_[_0x162a('0x2f')](_0x1ccc3e[_0x162a('0x3a')],function(_0x2d2584){var _0x28dbf2={};_0x28dbf2[_0x2d2584]={'$like':'%'+_0x409e0d[_0x162a('0x36')][_0x162a('0x43')]+'%'};return _0x28dbf2;})});}_0x1ccc3e=_[_0x162a('0x44')]({},_0x1ccc3e,_0x409e0d['options']);return _0x5b2499[_0x162a('0x55')](_0x1ccc3e);}})[_0x162a('0x28')](function(_0x3de3c0){if(_0x3de3c0){_0xfd6077=_0x3de3c0[_0x162a('0x3b')];if(!_0x409e0d[_0x162a('0x36')]['hasOwnProperty'](_0x162a('0x3d'))){_0x1ccc3e[_0x162a('0x1f')]=qs[_0x162a('0x1f')](_0x409e0d[_0x162a('0x36')][_0x162a('0x1f')]);_0x1ccc3e[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x409e0d[_0x162a('0x36')][_0x162a('0x1d')]);}return _0x5b2499['getDescriptions'](_0x1ccc3e);}})[_0x162a('0x28')](function(_0x22212b){if(_0x22212b){return _0x22212b?{'count':_0xfd6077,'rows':_0x22212b}:null;}})[_0x162a('0x28')](respondWithResult(_0x220ee3,null))['catch'](handleError(_0x220ee3,null));};exports[_0x162a('0x56')]=function(_0x15b60f,_0x2ca870,_0x5675fb){var _0x56f256={};var _0x5714b3={};var _0x4d19f6;var _0x318a83;return db[_0x162a('0x30')]['findOne']({'where':{'id':_0x15b60f[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x2ca870,null))[_0x162a('0x28')](function(_0x1d55f1){if(_0x1d55f1){_0x4d19f6=_0x1d55f1;_0x5714b3[_0x162a('0x35')]=_[_0x162a('0x37')](db[_0x162a('0x57')][_0x162a('0x31')]);_0x5714b3[_0x162a('0x36')]=_[_0x162a('0x37')](_0x15b60f['query']);_0x5714b3['filters']=_['intersection'](_0x5714b3[_0x162a('0x35')],_0x5714b3['query']);_0x56f256[_0x162a('0x3a')]=_['intersection'](_0x5714b3['model'],qs['fields'](_0x15b60f['query'][_0x162a('0x39')]));_0x56f256[_0x162a('0x3a')]=_0x56f256[_0x162a('0x3a')]['length']?_0x56f256['attributes']:_0x5714b3['model'];_0x56f256[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x15b60f['query']['sort']);_0x56f256[_0x162a('0x40')]=qs['filters'](_['pick'](_0x15b60f[_0x162a('0x36')],_0x5714b3[_0x162a('0x41')]));if(_0x15b60f[_0x162a('0x36')][_0x162a('0x43')]){_0x56f256[_0x162a('0x40')]=_['merge'](_0x56f256[_0x162a('0x40')],{'$or':_[_0x162a('0x2f')](_0x56f256[_0x162a('0x3a')],function(_0x377679){var _0x165026={};_0x165026[_0x377679]={'$like':'%'+_0x15b60f[_0x162a('0x36')][_0x162a('0x43')]+'%'};return _0x165026;})});}_0x56f256=_[_0x162a('0x44')]({},_0x56f256,_0x15b60f[_0x162a('0x4d')]);return _0x4d19f6[_0x162a('0x56')](_0x56f256);}})[_0x162a('0x28')](function(_0x7f0d89){if(_0x7f0d89){_0x318a83=_0x7f0d89[_0x162a('0x3b')];if(!_0x15b60f[_0x162a('0x36')][_0x162a('0x3c')]('nolimit')){_0x56f256['limit']=qs[_0x162a('0x1f')](_0x15b60f[_0x162a('0x36')]['limit']);_0x56f256[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x15b60f['query']['offset']);}return _0x4d19f6['getTags'](_0x56f256);}})[_0x162a('0x28')](function(_0xc7dfa7){if(_0xc7dfa7){return _0xc7dfa7?{'count':_0x318a83,'rows':_0xc7dfa7}:null;}})[_0x162a('0x28')](respondWithResult(_0x2ca870,null))[_0x162a('0x4a')](handleError(_0x2ca870,null));};exports['setTags']=function(_0x1872d4,_0x3594b3,_0x4735a3){if(_0x1872d4['body']['id']){delete _0x1872d4[_0x162a('0x50')]['id'];}return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x1872d4[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x3594b3,null))[_0x162a('0x28')](function(_0x2a6c77){if(_0x2a6c77){return _0x2a6c77[_0x162a('0x58')](_0x1872d4['body']['ids']||[]);}return null;})[_0x162a('0x28')](respondWithResult(_0x3594b3,null))[_0x162a('0x4a')](handleError(_0x3594b3,null));};
\ No newline at end of file
+var _0x5e8e=['find','catch','create','body','update','getFields','FreshdeskField','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','show','params','rawAttributes','includeAll'];(function(_0x4d1f70,_0x3a6da3){var _0x3fcb26=function(_0x18a794){while(--_0x18a794){_0x4d1f70['push'](_0x4d1f70['shift']());}};_0x3fcb26(++_0x3a6da3);}(_0x5e8e,0x1b7));var _0xe5e8=function(_0x18395f,_0x264aee){_0x18395f=_0x18395f-0x0;var _0x2da2e1=_0x5e8e[_0x18395f];return _0x2da2e1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe5e8('0x0'));var zipdir=require(_0xe5e8('0x1'));var jsonpatch=require(_0xe5e8('0x2'));var rp=require(_0xe5e8('0x3'));var moment=require(_0xe5e8('0x4'));var BPromise=require(_0xe5e8('0x5'));var Mustache=require(_0xe5e8('0x6'));var util=require(_0xe5e8('0x7'));var path=require('path');var sox=require(_0xe5e8('0x8'));var csv=require(_0xe5e8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe5e8('0xa'));var _=require(_0xe5e8('0xb'));var squel=require('squel');var crypto=require(_0xe5e8('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe5e8('0xd'));var Papa=require(_0xe5e8('0xe'));var Redis=require(_0xe5e8('0xf'));var authService=require(_0xe5e8('0x10'));var qs=require(_0xe5e8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe5e8('0x12'));var logger=require(_0xe5e8('0x13'))('api');var utils=require(_0xe5e8('0x14'));var config=require(_0xe5e8('0x15'));var licenseUtil=require(_0xe5e8('0x16'));var db=require(_0xe5e8('0x17'))['db'];function respondWithStatusCode(_0x52b032,_0x3f96ba){_0x3f96ba=_0x3f96ba||0xcc;return function(_0x893755){if(_0x893755){return _0x52b032[_0xe5e8('0x18')](_0x3f96ba);}return _0x52b032['status'](_0x3f96ba)[_0xe5e8('0x19')]();};}function respondWithResult(_0x4e7a1f,_0x3db97e){_0x3db97e=_0x3db97e||0xc8;return function(_0x4e0fb2){if(_0x4e0fb2){return _0x4e7a1f['status'](_0x3db97e)[_0xe5e8('0x1a')](_0x4e0fb2);}};}function respondWithFilteredResult(_0x35abf8,_0x335088){return function(_0x2cb03b){if(_0x2cb03b){var _0x5a2acb=typeof _0x335088[_0xe5e8('0x1b')]===_0xe5e8('0x1c')&&typeof _0x335088[_0xe5e8('0x1d')]===_0xe5e8('0x1c');var _0x2bb7dd=_0x2cb03b['count'];var _0x1c29fa=_0x5a2acb?0x0:_0x335088[_0xe5e8('0x1b')];var _0x2525ea=_0x5a2acb?_0x2cb03b[_0xe5e8('0x1e')]:_0x335088[_0xe5e8('0x1b')]+_0x335088[_0xe5e8('0x1d')];var _0x2ded05;if(_0x2525ea>=_0x2bb7dd){_0x2525ea=_0x2bb7dd;_0x2ded05=0xc8;}else{_0x2ded05=0xce;}_0x35abf8[_0xe5e8('0x1f')](_0x2ded05);return _0x35abf8[_0xe5e8('0x20')]('Content-Range',_0x1c29fa+'-'+_0x2525ea+'/'+_0x2bb7dd)[_0xe5e8('0x1a')](_0x2cb03b);}return null;};}function patchUpdates(_0x51d4e8){return function(_0x3a6a20){try{jsonpatch[_0xe5e8('0x21')](_0x3a6a20,_0x51d4e8,!![]);}catch(_0x3bbf28){return BPromise[_0xe5e8('0x22')](_0x3bbf28);}return _0x3a6a20[_0xe5e8('0x23')]();};}function saveUpdates(_0x88b204,_0x2aeeab){return function(_0x26c760){if(_0x26c760){return _0x26c760['update'](_0x88b204)[_0xe5e8('0x24')](function(_0x1ce7a9){return _0x1ce7a9;});}return null;};}function removeEntity(_0x2cd746,_0x41d7bd){return function(_0x5d1ca0){if(_0x5d1ca0){return _0x5d1ca0[_0xe5e8('0x25')]()[_0xe5e8('0x24')](function(){_0x2cd746[_0xe5e8('0x1f')](0xcc)[_0xe5e8('0x19')]();});}};}function handleEntityNotFound(_0x376477,_0x58fd63){return function(_0x198860){if(!_0x198860){_0x376477[_0xe5e8('0x18')](0x194);}return _0x198860;};}function handleError(_0x41941c,_0x289a66){_0x289a66=_0x289a66||0x1f4;return function(_0x431371){logger[_0xe5e8('0x26')](_0x431371[_0xe5e8('0x27')]);if(_0x431371['name']){delete _0x431371[_0xe5e8('0x28')];}_0x41941c[_0xe5e8('0x1f')](_0x289a66)[_0xe5e8('0x29')](_0x431371);};}exports[_0xe5e8('0x2a')]=function(_0x3ecf0f,_0x52e700){var _0x2ce689={},_0x36366c={},_0x372ac5={'count':0x0,'rows':[]};var _0x14c913=_[_0xe5e8('0x2b')](db[_0xe5e8('0x2c')]['rawAttributes'],function(_0x55e466){return{'name':_0x55e466[_0xe5e8('0x2d')],'type':_0x55e466[_0xe5e8('0x2e')]['key']};});_0x36366c['model']=_['map'](_0x14c913,_0xe5e8('0x28'));_0x36366c[_0xe5e8('0x2f')]=_[_0xe5e8('0x30')](_0x3ecf0f['query']);_0x36366c[_0xe5e8('0x31')]=_[_0xe5e8('0x32')](_0x36366c['model'],_0x36366c['query']);_0x2ce689[_0xe5e8('0x33')]=_['intersection'](_0x36366c[_0xe5e8('0x34')],qs[_0xe5e8('0x35')](_0x3ecf0f[_0xe5e8('0x2f')][_0xe5e8('0x35')]));_0x2ce689[_0xe5e8('0x33')]=_0x2ce689[_0xe5e8('0x33')][_0xe5e8('0x36')]?_0x2ce689['attributes']:_0x36366c['model'];if(!_0x3ecf0f[_0xe5e8('0x2f')][_0xe5e8('0x37')](_0xe5e8('0x38'))){_0x2ce689['limit']=qs[_0xe5e8('0x1d')](_0x3ecf0f['query']['limit']);_0x2ce689['offset']=qs[_0xe5e8('0x1b')](_0x3ecf0f[_0xe5e8('0x2f')][_0xe5e8('0x1b')]);}_0x2ce689[_0xe5e8('0x39')]=qs[_0xe5e8('0x3a')](_0x3ecf0f['query'][_0xe5e8('0x3a')]);_0x2ce689[_0xe5e8('0x3b')]=qs[_0xe5e8('0x31')](_[_0xe5e8('0x3c')](_0x3ecf0f['query'],_0x36366c[_0xe5e8('0x31')]),_0x14c913);if(_0x3ecf0f[_0xe5e8('0x2f')][_0xe5e8('0x3d')]){_0x2ce689[_0xe5e8('0x3b')]=_[_0xe5e8('0x3e')](_0x2ce689[_0xe5e8('0x3b')],{'$or':_['map'](_0x14c913,function(_0x1e1bd4){if(_0x1e1bd4[_0xe5e8('0x2e')]!==_0xe5e8('0x3f')){var _0xdb2861={};_0xdb2861[_0x1e1bd4[_0xe5e8('0x28')]]={'$like':'%'+_0x3ecf0f['query'][_0xe5e8('0x3d')]+'%'};return _0xdb2861;}})});}_0x2ce689=_[_0xe5e8('0x3e')]({},_0x2ce689,_0x3ecf0f[_0xe5e8('0x40')]);var _0x34e096={'where':_0x2ce689['where']};return db['FreshdeskConfiguration'][_0xe5e8('0x1e')](_0x34e096)[_0xe5e8('0x24')](function(_0x1ac8f8){_0x372ac5[_0xe5e8('0x1e')]=_0x1ac8f8;if(_0x3ecf0f[_0xe5e8('0x2f')]['includeAll']){_0x2ce689[_0xe5e8('0x41')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0xe5e8('0x42')](_0x2ce689);})[_0xe5e8('0x24')](function(_0x100838){_0x372ac5['rows']=_0x100838;return _0x372ac5;})['then'](respondWithFilteredResult(_0x52e700,_0x2ce689))['catch'](handleError(_0x52e700,null));};exports[_0xe5e8('0x43')]=function(_0x3c89bf,_0x4868db){var _0x4368bb={'raw':![],'where':{'id':_0x3c89bf[_0xe5e8('0x44')]['id']}},_0x7d27e1={};_0x7d27e1[_0xe5e8('0x34')]=_[_0xe5e8('0x30')](db['FreshdeskConfiguration'][_0xe5e8('0x45')]);_0x7d27e1[_0xe5e8('0x2f')]=_['keys'](_0x3c89bf[_0xe5e8('0x2f')]);_0x7d27e1[_0xe5e8('0x31')]=_['intersection'](_0x7d27e1['model'],_0x7d27e1['query']);_0x4368bb[_0xe5e8('0x33')]=_[_0xe5e8('0x32')](_0x7d27e1[_0xe5e8('0x34')],qs['fields'](_0x3c89bf[_0xe5e8('0x2f')][_0xe5e8('0x35')]));_0x4368bb[_0xe5e8('0x33')]=_0x4368bb[_0xe5e8('0x33')][_0xe5e8('0x36')]?_0x4368bb[_0xe5e8('0x33')]:_0x7d27e1[_0xe5e8('0x34')];if(_0x3c89bf['query'][_0xe5e8('0x46')]){_0x4368bb[_0xe5e8('0x41')]=[{'all':!![]}];}_0x4368bb=_[_0xe5e8('0x3e')]({},_0x4368bb,_0x3c89bf[_0xe5e8('0x40')]);return db[_0xe5e8('0x2c')][_0xe5e8('0x47')](_0x4368bb)[_0xe5e8('0x24')](handleEntityNotFound(_0x4868db,null))[_0xe5e8('0x24')](respondWithResult(_0x4868db,null))[_0xe5e8('0x48')](handleError(_0x4868db,null));};exports[_0xe5e8('0x49')]=function(_0x5cd275,_0x40c7ac){return db[_0xe5e8('0x2c')][_0xe5e8('0x49')](_0x5cd275[_0xe5e8('0x4a')],{})['then'](respondWithResult(_0x40c7ac,0xc9))[_0xe5e8('0x48')](handleError(_0x40c7ac,null));};exports[_0xe5e8('0x4b')]=function(_0x48f5db,_0x1c3800){if(_0x48f5db[_0xe5e8('0x4a')]['id']){delete _0x48f5db[_0xe5e8('0x4a')]['id'];}return db['FreshdeskConfiguration'][_0xe5e8('0x47')]({'where':{'id':_0x48f5db['params']['id']}})['then'](handleEntityNotFound(_0x1c3800,null))['then'](saveUpdates(_0x48f5db[_0xe5e8('0x4a')],null))[_0xe5e8('0x24')](respondWithResult(_0x1c3800,null))[_0xe5e8('0x48')](handleError(_0x1c3800,null));};exports['destroy']=function(_0x10dae9,_0x884b21){return db[_0xe5e8('0x2c')]['find']({'where':{'id':_0x10dae9[_0xe5e8('0x44')]['id']}})[_0xe5e8('0x24')](handleEntityNotFound(_0x884b21,null))[_0xe5e8('0x24')](removeEntity(_0x884b21,null))[_0xe5e8('0x48')](handleError(_0x884b21,null));};exports[_0xe5e8('0x4c')]=function(_0x18eebf,_0x613fb4,_0x20e56a){var _0x2ea25f={};var _0x3c2cff={};var _0x44340a;var _0x9346aa;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x18eebf[_0xe5e8('0x44')]['id']}})['then'](handleEntityNotFound(_0x613fb4,null))[_0xe5e8('0x24')](function(_0x385232){if(_0x385232){_0x44340a=_0x385232;_0x3c2cff[_0xe5e8('0x34')]=_[_0xe5e8('0x30')](db[_0xe5e8('0x4d')][_0xe5e8('0x45')]);_0x3c2cff[_0xe5e8('0x2f')]=_['keys'](_0x18eebf[_0xe5e8('0x2f')]);_0x3c2cff[_0xe5e8('0x31')]=_[_0xe5e8('0x32')](_0x3c2cff[_0xe5e8('0x34')],_0x3c2cff[_0xe5e8('0x2f')]);_0x2ea25f[_0xe5e8('0x33')]=_[_0xe5e8('0x32')](_0x3c2cff[_0xe5e8('0x34')],qs['fields'](_0x18eebf[_0xe5e8('0x2f')]['fields']));_0x2ea25f[_0xe5e8('0x33')]=_0x2ea25f[_0xe5e8('0x33')]['length']?_0x2ea25f['attributes']:_0x3c2cff[_0xe5e8('0x34')];_0x2ea25f['order']=qs[_0xe5e8('0x3a')](_0x18eebf[_0xe5e8('0x2f')]['sort']);_0x2ea25f[_0xe5e8('0x3b')]=qs[_0xe5e8('0x31')](_['pick'](_0x18eebf[_0xe5e8('0x2f')],_0x3c2cff[_0xe5e8('0x31')]));if(_0x18eebf[_0xe5e8('0x2f')][_0xe5e8('0x3d')]){_0x2ea25f[_0xe5e8('0x3b')]=_[_0xe5e8('0x3e')](_0x2ea25f[_0xe5e8('0x3b')],{'$or':_['map'](_0x2ea25f[_0xe5e8('0x33')],function(_0x40eac3){var _0x526cfa={};_0x526cfa[_0x40eac3]={'$like':'%'+_0x18eebf[_0xe5e8('0x2f')]['filter']+'%'};return _0x526cfa;})});}_0x2ea25f=_[_0xe5e8('0x3e')]({},_0x2ea25f,_0x18eebf[_0xe5e8('0x40')]);return _0x44340a[_0xe5e8('0x4c')](_0x2ea25f);}})[_0xe5e8('0x24')](function(_0x26df1b){if(_0x26df1b){_0x9346aa=_0x26df1b[_0xe5e8('0x36')];if(!_0x18eebf['query'][_0xe5e8('0x37')](_0xe5e8('0x38'))){_0x2ea25f['limit']=qs[_0xe5e8('0x1d')](_0x18eebf[_0xe5e8('0x2f')][_0xe5e8('0x1d')]);_0x2ea25f[_0xe5e8('0x1b')]=qs['offset'](_0x18eebf['query'][_0xe5e8('0x1b')]);}return _0x44340a[_0xe5e8('0x4c')](_0x2ea25f);}})[_0xe5e8('0x24')](function(_0x3e7590){if(_0x3e7590){return _0x3e7590?{'count':_0x9346aa,'rows':_0x3e7590}:null;}})[_0xe5e8('0x24')](respondWithResult(_0x613fb4,null))['catch'](handleError(_0x613fb4,null));};exports[_0xe5e8('0x4e')]=function(_0x339649,_0x3473ed,_0x244119){var _0x5159ec={};var _0x3fa429={};var _0x15f6cf;var _0x565a04;return db[_0xe5e8('0x2c')][_0xe5e8('0x4f')]({'where':{'id':_0x339649['params']['id']}})['then'](handleEntityNotFound(_0x3473ed,null))[_0xe5e8('0x24')](function(_0x1e77b4){if(_0x1e77b4){_0x15f6cf=_0x1e77b4;_0x3fa429[_0xe5e8('0x34')]=_[_0xe5e8('0x30')](db[_0xe5e8('0x4d')]['rawAttributes']);_0x3fa429['query']=_[_0xe5e8('0x30')](_0x339649[_0xe5e8('0x2f')]);_0x3fa429[_0xe5e8('0x31')]=_[_0xe5e8('0x32')](_0x3fa429[_0xe5e8('0x34')],_0x3fa429[_0xe5e8('0x2f')]);_0x5159ec[_0xe5e8('0x33')]=_['intersection'](_0x3fa429[_0xe5e8('0x34')],qs[_0xe5e8('0x35')](_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x35')]));_0x5159ec[_0xe5e8('0x33')]=_0x5159ec[_0xe5e8('0x33')][_0xe5e8('0x36')]?_0x5159ec[_0xe5e8('0x33')]:_0x3fa429['model'];_0x5159ec[_0xe5e8('0x39')]=qs['sort'](_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x3a')]);_0x5159ec['where']=qs[_0xe5e8('0x31')](_[_0xe5e8('0x3c')](_0x339649[_0xe5e8('0x2f')],_0x3fa429[_0xe5e8('0x31')]));if(_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x3d')]){_0x5159ec['where']=_['merge'](_0x5159ec[_0xe5e8('0x3b')],{'$or':_[_0xe5e8('0x2b')](_0x5159ec[_0xe5e8('0x33')],function(_0x420e96){var _0x53660f={};_0x53660f[_0x420e96]={'$like':'%'+_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x3d')]+'%'};return _0x53660f;})});}_0x5159ec=_[_0xe5e8('0x3e')]({},_0x5159ec,_0x339649['options']);return _0x15f6cf[_0xe5e8('0x4e')](_0x5159ec);}})[_0xe5e8('0x24')](function(_0xe95ac){if(_0xe95ac){_0x565a04=_0xe95ac['length'];if(!_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x37')](_0xe5e8('0x38'))){_0x5159ec['limit']=qs[_0xe5e8('0x1d')](_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x1d')]);_0x5159ec['offset']=qs[_0xe5e8('0x1b')](_0x339649[_0xe5e8('0x2f')][_0xe5e8('0x1b')]);}return _0x15f6cf[_0xe5e8('0x4e')](_0x5159ec);}})[_0xe5e8('0x24')](function(_0x43bc67){if(_0x43bc67){return _0x43bc67?{'count':_0x565a04,'rows':_0x43bc67}:null;}})[_0xe5e8('0x24')](respondWithResult(_0x3473ed,null))[_0xe5e8('0x48')](handleError(_0x3473ed,null));};exports[_0xe5e8('0x50')]=function(_0x52b57a,_0x8056e6,_0x39bb51){var _0x418528={};var _0x1e200d={};var _0x498b73;var _0x385240;return db[_0xe5e8('0x2c')][_0xe5e8('0x4f')]({'where':{'id':_0x52b57a['params']['id']}})['then'](handleEntityNotFound(_0x8056e6,null))[_0xe5e8('0x24')](function(_0x18d0c2){if(_0x18d0c2){_0x498b73=_0x18d0c2;_0x1e200d[_0xe5e8('0x34')]=_[_0xe5e8('0x30')](db[_0xe5e8('0x4d')][_0xe5e8('0x45')]);_0x1e200d[_0xe5e8('0x2f')]=_[_0xe5e8('0x30')](_0x52b57a[_0xe5e8('0x2f')]);_0x1e200d[_0xe5e8('0x31')]=_[_0xe5e8('0x32')](_0x1e200d[_0xe5e8('0x34')],_0x1e200d[_0xe5e8('0x2f')]);_0x418528[_0xe5e8('0x33')]=_[_0xe5e8('0x32')](_0x1e200d[_0xe5e8('0x34')],qs[_0xe5e8('0x35')](_0x52b57a[_0xe5e8('0x2f')]['fields']));_0x418528[_0xe5e8('0x33')]=_0x418528['attributes'][_0xe5e8('0x36')]?_0x418528[_0xe5e8('0x33')]:_0x1e200d[_0xe5e8('0x34')];_0x418528['order']=qs['sort'](_0x52b57a[_0xe5e8('0x2f')][_0xe5e8('0x3a')]);_0x418528[_0xe5e8('0x3b')]=qs['filters'](_[_0xe5e8('0x3c')](_0x52b57a[_0xe5e8('0x2f')],_0x1e200d[_0xe5e8('0x31')]));if(_0x52b57a[_0xe5e8('0x2f')][_0xe5e8('0x3d')]){_0x418528[_0xe5e8('0x3b')]=_[_0xe5e8('0x3e')](_0x418528[_0xe5e8('0x3b')],{'$or':_[_0xe5e8('0x2b')](_0x418528[_0xe5e8('0x33')],function(_0x167318){var _0x21c47d={};_0x21c47d[_0x167318]={'$like':'%'+_0x52b57a[_0xe5e8('0x2f')][_0xe5e8('0x3d')]+'%'};return _0x21c47d;})});}_0x418528=_[_0xe5e8('0x3e')]({},_0x418528,_0x52b57a[_0xe5e8('0x40')]);return _0x498b73[_0xe5e8('0x50')](_0x418528);}})['then'](function(_0x2045c0){if(_0x2045c0){_0x385240=_0x2045c0[_0xe5e8('0x36')];if(!_0x52b57a[_0xe5e8('0x2f')][_0xe5e8('0x37')]('nolimit')){_0x418528['limit']=qs[_0xe5e8('0x1d')](_0x52b57a[_0xe5e8('0x2f')][_0xe5e8('0x1d')]);_0x418528['offset']=qs[_0xe5e8('0x1b')](_0x52b57a[_0xe5e8('0x2f')][_0xe5e8('0x1b')]);}return _0x498b73['getDescriptions'](_0x418528);}})[_0xe5e8('0x24')](function(_0x4e8cfc){if(_0x4e8cfc){return _0x4e8cfc?{'count':_0x385240,'rows':_0x4e8cfc}:null;}})['then'](respondWithResult(_0x8056e6,null))['catch'](handleError(_0x8056e6,null));};exports[_0xe5e8('0x51')]=function(_0x202f98,_0x4c22a3,_0x7f50bc){var _0x53fea6={};var _0x37d0a8={};var _0x4c8cfa;var _0xeb8dcc;return db[_0xe5e8('0x2c')][_0xe5e8('0x4f')]({'where':{'id':_0x202f98['params']['id']}})[_0xe5e8('0x24')](handleEntityNotFound(_0x4c22a3,null))[_0xe5e8('0x24')](function(_0x22f19d){if(_0x22f19d){_0x4c8cfa=_0x22f19d;_0x37d0a8[_0xe5e8('0x34')]=_[_0xe5e8('0x30')](db[_0xe5e8('0x52')][_0xe5e8('0x45')]);_0x37d0a8['query']=_[_0xe5e8('0x30')](_0x202f98[_0xe5e8('0x2f')]);_0x37d0a8[_0xe5e8('0x31')]=_[_0xe5e8('0x32')](_0x37d0a8[_0xe5e8('0x34')],_0x37d0a8[_0xe5e8('0x2f')]);_0x53fea6[_0xe5e8('0x33')]=_['intersection'](_0x37d0a8[_0xe5e8('0x34')],qs[_0xe5e8('0x35')](_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x35')]));_0x53fea6[_0xe5e8('0x33')]=_0x53fea6[_0xe5e8('0x33')][_0xe5e8('0x36')]?_0x53fea6['attributes']:_0x37d0a8['model'];_0x53fea6[_0xe5e8('0x39')]=qs[_0xe5e8('0x3a')](_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x3a')]);_0x53fea6[_0xe5e8('0x3b')]=qs[_0xe5e8('0x31')](_[_0xe5e8('0x3c')](_0x202f98[_0xe5e8('0x2f')],_0x37d0a8[_0xe5e8('0x31')]));if(_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x3d')]){_0x53fea6[_0xe5e8('0x3b')]=_['merge'](_0x53fea6[_0xe5e8('0x3b')],{'$or':_[_0xe5e8('0x2b')](_0x53fea6['attributes'],function(_0x3af04d){var _0x1ecffa={};_0x1ecffa[_0x3af04d]={'$like':'%'+_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x3d')]+'%'};return _0x1ecffa;})});}_0x53fea6=_[_0xe5e8('0x3e')]({},_0x53fea6,_0x202f98[_0xe5e8('0x40')]);return _0x4c8cfa[_0xe5e8('0x51')](_0x53fea6);}})[_0xe5e8('0x24')](function(_0x26f020){if(_0x26f020){_0xeb8dcc=_0x26f020[_0xe5e8('0x36')];if(!_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x37')](_0xe5e8('0x38'))){_0x53fea6[_0xe5e8('0x1d')]=qs[_0xe5e8('0x1d')](_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x1d')]);_0x53fea6[_0xe5e8('0x1b')]=qs[_0xe5e8('0x1b')](_0x202f98[_0xe5e8('0x2f')][_0xe5e8('0x1b')]);}return _0x4c8cfa['getTags'](_0x53fea6);}})[_0xe5e8('0x24')](function(_0x24a031){if(_0x24a031){return _0x24a031?{'count':_0xeb8dcc,'rows':_0x24a031}:null;}})['then'](respondWithResult(_0x4c22a3,null))[_0xe5e8('0x48')](handleError(_0x4c22a3,null));};exports[_0xe5e8('0x53')]=function(_0x272dc2,_0x152225,_0x2389b9){if(_0x272dc2[_0xe5e8('0x4a')]['id']){delete _0x272dc2[_0xe5e8('0x4a')]['id'];}return db[_0xe5e8('0x2c')][_0xe5e8('0x4f')]({'where':{'id':_0x272dc2[_0xe5e8('0x44')]['id']}})['then'](handleEntityNotFound(_0x152225,null))[_0xe5e8('0x24')](function(_0x1c76c2){if(_0x1c76c2){return _0x1c76c2['setTags'](_0x272dc2['body'][_0xe5e8('0x54')]||[]);}return null;})[_0xe5e8('0x24')](respondWithResult(_0x152225,null))[_0xe5e8('0x48')](handleError(_0x152225,null));};
\ No newline at end of file
index fe31f22..dddede2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x068b=['api','moment','bluebird','request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','../../config/logger'];(function(_0x46b938,_0x585ae3){var _0x30cc2e=function(_0x584a57){while(--_0x584a57){_0x46b938['push'](_0x46b938['shift']());}};_0x30cc2e(++_0x585ae3);}(_0x068b,0x1bb));var _0xb068=function(_0x5456f0,_0x3919aa){_0x5456f0=_0x5456f0-0x0;var _0xefec2d=_0x068b[_0x5456f0];return _0xefec2d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb068('0x0'))(_0xb068('0x1'));var moment=require(_0xb068('0x2'));var BPromise=require(_0xb068('0x3'));var rp=require(_0xb068('0x4'));var fs=require('fs');var path=require(_0xb068('0x5'));var rimraf=require(_0xb068('0x6'));var config=require('../../config/environment');var attributes=require(_0xb068('0x7'));module[_0xb068('0x8')]=function(_0x5994db,_0x3d936d){return _0x5994db[_0xb068('0x9')](_0xb068('0xa'),attributes,{'tableName':_0xb068('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x313e=['../../config/logger','api','bluebird','path','rimraf','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration','int_freshdesk_configurations','util'];(function(_0x4e1d3c,_0x4f9988){var _0x5177b2=function(_0x26109f){while(--_0x26109f){_0x4e1d3c['push'](_0x4e1d3c['shift']());}};_0x5177b2(++_0x4f9988);}(_0x313e,0xf9));var _0xe313=function(_0x1f7996,_0x299a14){_0x1f7996=_0x1f7996-0x0;var _0x584609=_0x313e[_0x1f7996];return _0x584609;};'use strict';var _=require('lodash');var util=require(_0xe313('0x0'));var logger=require(_0xe313('0x1'))(_0xe313('0x2'));var moment=require('moment');var BPromise=require(_0xe313('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe313('0x4'));var rimraf=require(_0xe313('0x5'));var config=require('../../config/environment');var attributes=require(_0xe313('0x6'));module['exports']=function(_0x3311da,_0x4b296e){return _0x3311da[_0xe313('0x7')](_0xe313('0x8'),attributes,{'tableName':_0xe313('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b071219..99acd24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7f=['message','catch','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x1794b7,_0x2e85b3){var _0x3bb3d2=function(_0x40f80e){while(--_0x40f80e){_0x1794b7['push'](_0x1794b7['shift']());}};_0x3bb3d2(++_0x2e85b3);}(_0xcc7f,0x13d));var _0xfcc7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcc7f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfcc7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfcc7('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcc7('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcc7('0x3'));var logger=require(_0xfcc7('0x4'))(_0xfcc7('0x5'));var config=require(_0xfcc7('0x6'));var jayson=require(_0xfcc7('0x7'));var client=jayson[_0xfcc7('0x8')][_0xfcc7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4e8d49,_0x1dc221,_0x342c08){return new BPromise(function(_0x5e0bb6,_0x12296c){return client[_0xfcc7('0xa')](_0x4e8d49,_0x342c08)[_0xfcc7('0xb')](function(_0x39f613){logger[_0xfcc7('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1dc221,_0xfcc7('0xd'));logger['debug'](_0xfcc7('0xe'),_0x1dc221,_0xfcc7('0xd'),JSON[_0xfcc7('0xf')](_0x39f613));if(_0x39f613[_0xfcc7('0x10')]){if(_0x39f613[_0xfcc7('0x10')][_0xfcc7('0x11')]===0x1f4){logger[_0xfcc7('0x10')](_0xfcc7('0x12'),_0x1dc221,_0x39f613['error'][_0xfcc7('0x13')]);return _0x12296c(_0x39f613[_0xfcc7('0x10')][_0xfcc7('0x13')]);}logger[_0xfcc7('0x10')](_0xfcc7('0x12'),_0x1dc221,_0x39f613[_0xfcc7('0x10')]['message']);return _0x5e0bb6(_0x39f613[_0xfcc7('0x10')][_0xfcc7('0x13')]);}else{logger[_0xfcc7('0xc')](_0xfcc7('0x12'),_0x1dc221,_0xfcc7('0xd'));_0x5e0bb6(_0x39f613['result'][_0xfcc7('0x13')]);}})[_0xfcc7('0x14')](function(_0x3f9a44){logger[_0xfcc7('0x10')](_0xfcc7('0x12'),_0x1dc221,_0x3f9a44);_0x12296c(_0x3f9a44);});});}
\ No newline at end of file
+var _0xbb7d=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x176d04,_0xacf3d0){var _0x448969=function(_0x15620d){while(--_0x15620d){_0x176d04['push'](_0x176d04['shift']());}};_0x448969(++_0xacf3d0);}(_0xbb7d,0xed));var _0xdbb7=function(_0x3db9b7,_0x3534a1){_0x3db9b7=_0x3db9b7-0x0;var _0x2db126=_0xbb7d[_0x3db9b7];return _0x2db126;};'use strict';var _=require('lodash');var util=require(_0xdbb7('0x0'));var moment=require(_0xdbb7('0x1'));var BPromise=require(_0xdbb7('0x2'));var rs=require(_0xdbb7('0x3'));var fs=require('fs');var Redis=require(_0xdbb7('0x4'));var db=require(_0xdbb7('0x5'))['db'];var utils=require(_0xdbb7('0x6'));var logger=require(_0xdbb7('0x7'))(_0xdbb7('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xdbb7('0x9')][_0xdbb7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28495a,_0x5f3d44,_0x141daf){return new BPromise(function(_0x219fbf,_0x1e7a80){return client[_0xdbb7('0xb')](_0x28495a,_0x141daf)[_0xdbb7('0xc')](function(_0xa97b06){logger[_0xdbb7('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x5f3d44,'request\x20sent');logger['debug'](_0xdbb7('0xe'),_0x5f3d44,_0xdbb7('0xf'),JSON['stringify'](_0xa97b06));if(_0xa97b06[_0xdbb7('0x10')]){if(_0xa97b06[_0xdbb7('0x10')][_0xdbb7('0x11')]===0x1f4){logger[_0xdbb7('0x10')](_0xdbb7('0x12'),_0x5f3d44,_0xa97b06['error'][_0xdbb7('0x13')]);return _0x1e7a80(_0xa97b06['error']['message']);}logger[_0xdbb7('0x10')](_0xdbb7('0x12'),_0x5f3d44,_0xa97b06[_0xdbb7('0x10')][_0xdbb7('0x13')]);return _0x219fbf(_0xa97b06[_0xdbb7('0x10')][_0xdbb7('0x13')]);}else{logger[_0xdbb7('0xd')](_0xdbb7('0x12'),_0x5f3d44,'request\x20sent');_0x219fbf(_0xa97b06[_0xdbb7('0x14')]['message']);}})[_0xdbb7('0x15')](function(_0x43196a){logger[_0xdbb7('0x10')](_0xdbb7('0x12'),_0x5f3d44,_0x43196a);_0x1e7a80(_0x43196a);});});}
\ No newline at end of file
index 5444c2b..2d2aa2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x532a=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x322ff3,_0x4c91bc){var _0x3e6830=function(_0x2786ac){while(--_0x2786ac){_0x322ff3['push'](_0x322ff3['shift']());}};_0x3e6830(++_0x4c91bc);}(_0x532a,0x7d));var _0xa532=function(_0x2db45e,_0x3c3b37){_0x2db45e=_0x2db45e-0x0;var _0x200a5=_0x532a[_0x2db45e];return _0x200a5;};'use strict';var multer=require(_0xa532('0x0'));var util=require(_0xa532('0x1'));var path=require(_0xa532('0x2'));var timeout=require(_0xa532('0x3'));var express=require(_0xa532('0x4'));var router=express[_0xa532('0x5')]();var fs_extra=require(_0xa532('0x6'));var auth=require(_0xa532('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xa532('0x8'));var controller=require('./intFreshdeskField.controller');router[_0xa532('0x9')]('/',auth[_0xa532('0xa')](),controller[_0xa532('0xb')]);router[_0xa532('0x9')](_0xa532('0xc'),auth[_0xa532('0xa')](),controller[_0xa532('0xd')]);router[_0xa532('0xe')]('/',auth['isAuthenticated'](),controller[_0xa532('0xf')]);router[_0xa532('0x10')](_0xa532('0xc'),auth[_0xa532('0xa')](),controller[_0xa532('0x11')]);router[_0xa532('0x12')](_0xa532('0xc'),auth[_0xa532('0xa')](),controller[_0xa532('0x13')]);module[_0xa532('0x14')]=router;
\ No newline at end of file
+var _0x0893=['get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskField.controller'];(function(_0x47ff40,_0x14e65b){var _0x10c0e0=function(_0x4eaab4){while(--_0x4eaab4){_0x47ff40['push'](_0x47ff40['shift']());}};_0x10c0e0(++_0x14e65b);}(_0x0893,0x13b));var _0x3089=function(_0x7ad7d4,_0x24b910){_0x7ad7d4=_0x7ad7d4-0x0;var _0x34e155=_0x0893[_0x7ad7d4];return _0x34e155;};'use strict';var multer=require(_0x3089('0x0'));var util=require(_0x3089('0x1'));var path=require('path');var timeout=require(_0x3089('0x2'));var express=require('express');var router=express[_0x3089('0x3')]();var fs_extra=require(_0x3089('0x4'));var auth=require(_0x3089('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3089('0x6'));var controller=require(_0x3089('0x7'));router[_0x3089('0x8')]('/',auth[_0x3089('0x9')](),controller[_0x3089('0xa')]);router[_0x3089('0x8')](_0x3089('0xb'),auth['isAuthenticated'](),controller[_0x3089('0xc')]);router[_0x3089('0xd')]('/',auth[_0x3089('0x9')](),controller[_0x3089('0xe')]);router['put'](_0x3089('0xb'),auth[_0x3089('0x9')](),controller[_0x3089('0xf')]);router[_0x3089('0x10')](_0x3089('0xb'),auth[_0x3089('0x9')](),controller[_0x3089('0x11')]);module[_0x3089('0x12')]=router;
\ No newline at end of file
index 47f01ce..15c7965 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeefa=['sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x5a0e1d,_0x261edc){var _0x320dc0=function(_0x2fef8a){while(--_0x2fef8a){_0x5a0e1d['push'](_0x5a0e1d['shift']());}};_0x320dc0(++_0x261edc);}(_0xeefa,0xfc));var _0xaeef=function(_0x1b2a7f,_0x5a4df3){_0x1b2a7f=_0x1b2a7f-0x0;var _0xd058f0=_0xeefa[_0x1b2a7f];return _0xd058f0;};'use strict';var Sequelize=require(_0xaeef('0x0'));module['exports']={'type':{'type':Sequelize[_0xaeef('0x1')](_0xaeef('0x2'),_0xaeef('0x3'),_0xaeef('0x4'),_0xaeef('0x5'),_0xaeef('0x6')),'defaultValue':_0xaeef('0x2')},'content':{'type':Sequelize[_0xaeef('0x7')]},'key':{'type':Sequelize[_0xaeef('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xaeef('0x2'),_0xaeef('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xaeef('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xaeef('0x7')]}};
\ No newline at end of file
+var _0x5581=['BOOLEAN','exports','ENUM','string','variable','keyValue','STRING','customVariable'];(function(_0x196192,_0x58189a){var _0x3fdb0f=function(_0x285ee6){while(--_0x285ee6){_0x196192['push'](_0x196192['shift']());}};_0x3fdb0f(++_0x58189a);}(_0x5581,0xa9));var _0x1558=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0x5581[_0x5ddaac];return _0x2a9c58;};'use strict';var Sequelize=require('sequelize');module[_0x1558('0x0')]={'type':{'type':Sequelize[_0x1558('0x1')](_0x1558('0x2'),_0x1558('0x3'),'customVariable',_0x1558('0x4'),'picklist'),'defaultValue':_0x1558('0x2')},'content':{'type':Sequelize[_0x1558('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x1558('0x1')]('string','variable',_0x1558('0x6'))},'keyContent':{'type':Sequelize[_0x1558('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1558('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1558('0x5')]}};
\ No newline at end of file
index 21838be..0f4f979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d2d=['where','pick','filter','merge','options','FreshdeskField','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x2b3b71,_0x52ea8f){var _0x2539a4=function(_0x2901fa){while(--_0x2901fa){_0x2b3b71['push'](_0x2b3b71['shift']());}};_0x2539a4(++_0x52ea8f);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x46956f,_0x2c07b1){_0x46956f=_0x46956f-0x0;var _0x56bece=_0x1d2d[_0x46956f];return _0x56bece;};'use strict';var emlformat=require(_0xd1d2('0x0'));var rimraf=require(_0xd1d2('0x1'));var zipdir=require(_0xd1d2('0x2'));var jsonpatch=require(_0xd1d2('0x3'));var rp=require(_0xd1d2('0x4'));var moment=require('moment');var BPromise=require(_0xd1d2('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd1d2('0x6'));var sox=require(_0xd1d2('0x7'));var csv=require(_0xd1d2('0x8'));var ejs=require(_0xd1d2('0x9'));var fs=require('fs');var fs_extra=require(_0xd1d2('0xa'));var _=require(_0xd1d2('0xb'));var squel=require('squel');var crypto=require(_0xd1d2('0xc'));var jsforce=require(_0xd1d2('0xd'));var deskjs=require(_0xd1d2('0xe'));var toCsv=require(_0xd1d2('0x8'));var querystring=require(_0xd1d2('0xf'));var Papa=require(_0xd1d2('0x10'));var Redis=require(_0xd1d2('0x11'));var authService=require(_0xd1d2('0x12'));var qs=require(_0xd1d2('0x13'));var as=require(_0xd1d2('0x14'));var hardwareService=require(_0xd1d2('0x15'));var logger=require(_0xd1d2('0x16'))(_0xd1d2('0x17'));var utils=require('../../config/utils');var config=require(_0xd1d2('0x18'));var licenseUtil=require(_0xd1d2('0x19'));var db=require(_0xd1d2('0x1a'))['db'];function respondWithStatusCode(_0x33f088,_0x129d8f){_0x129d8f=_0x129d8f||0xcc;return function(_0xc3ee82){if(_0xc3ee82){return _0x33f088[_0xd1d2('0x1b')](_0x129d8f);}return _0x33f088[_0xd1d2('0x1c')](_0x129d8f)[_0xd1d2('0x1d')]();};}function respondWithResult(_0x3f670f,_0x4cf702){_0x4cf702=_0x4cf702||0xc8;return function(_0x2e7fec){if(_0x2e7fec){return _0x3f670f[_0xd1d2('0x1c')](_0x4cf702)[_0xd1d2('0x1e')](_0x2e7fec);}};}function respondWithFilteredResult(_0x56de25,_0x35381b){return function(_0xc36ce){if(_0xc36ce){var _0x208425=typeof _0x35381b[_0xd1d2('0x1f')]===_0xd1d2('0x20')&&typeof _0x35381b[_0xd1d2('0x21')]===_0xd1d2('0x20');var _0x57f2f9=_0xc36ce['count'];var _0x3be186=_0x208425?0x0:_0x35381b['offset'];var _0x247b3a=_0x208425?_0xc36ce[_0xd1d2('0x22')]:_0x35381b[_0xd1d2('0x1f')]+_0x35381b[_0xd1d2('0x21')];var _0x4ab386;if(_0x247b3a>=_0x57f2f9){_0x247b3a=_0x57f2f9;_0x4ab386=0xc8;}else{_0x4ab386=0xce;}_0x56de25['status'](_0x4ab386);return _0x56de25[_0xd1d2('0x23')]('Content-Range',_0x3be186+'-'+_0x247b3a+'/'+_0x57f2f9)['json'](_0xc36ce);}return null;};}function patchUpdates(_0x1ab67c){return function(_0x27e26b){try{jsonpatch[_0xd1d2('0x24')](_0x27e26b,_0x1ab67c,!![]);}catch(_0x40170b){return BPromise['reject'](_0x40170b);}return _0x27e26b[_0xd1d2('0x25')]();};}function saveUpdates(_0xbb4d27,_0x24b8db){return function(_0x4eb082){if(_0x4eb082){return _0x4eb082['update'](_0xbb4d27)[_0xd1d2('0x26')](function(_0x3a1078){return _0x3a1078;});}return null;};}function removeEntity(_0x19d535,_0x2f92ee){return function(_0x3f229c){if(_0x3f229c){return _0x3f229c[_0xd1d2('0x27')]()[_0xd1d2('0x26')](function(){_0x19d535['status'](0xcc)[_0xd1d2('0x1d')]();});}};}function handleEntityNotFound(_0x42da6d,_0x41330f){return function(_0x2e1709){if(!_0x2e1709){_0x42da6d[_0xd1d2('0x1b')](0x194);}return _0x2e1709;};}function handleError(_0x39e991,_0x28b8be){_0x28b8be=_0x28b8be||0x1f4;return function(_0x34faf7){logger[_0xd1d2('0x28')](_0x34faf7[_0xd1d2('0x29')]);if(_0x34faf7[_0xd1d2('0x2a')]){delete _0x34faf7['name'];}_0x39e991['status'](_0x28b8be)[_0xd1d2('0x2b')](_0x34faf7);};}exports[_0xd1d2('0x2c')]=function(_0x1e6072,_0x2b4c1f){var _0xc815ea={},_0x48ade1={},_0x39d694={'count':0x0,'rows':[]};var _0x41171c=_[_0xd1d2('0x2d')](db['FreshdeskField'][_0xd1d2('0x2e')],function(_0x1db17f){return{'name':_0x1db17f[_0xd1d2('0x2f')],'type':_0x1db17f['type'][_0xd1d2('0x30')]};});_0x48ade1[_0xd1d2('0x31')]=_[_0xd1d2('0x2d')](_0x41171c,_0xd1d2('0x2a'));_0x48ade1[_0xd1d2('0x32')]=_[_0xd1d2('0x33')](_0x1e6072[_0xd1d2('0x32')]);_0x48ade1[_0xd1d2('0x34')]=_[_0xd1d2('0x35')](_0x48ade1[_0xd1d2('0x31')],_0x48ade1[_0xd1d2('0x32')]);_0xc815ea[_0xd1d2('0x36')]=_[_0xd1d2('0x35')](_0x48ade1[_0xd1d2('0x31')],qs[_0xd1d2('0x37')](_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x37')]));_0xc815ea[_0xd1d2('0x36')]=_0xc815ea['attributes'][_0xd1d2('0x38')]?_0xc815ea[_0xd1d2('0x36')]:_0x48ade1[_0xd1d2('0x31')];if(!_0x1e6072['query'][_0xd1d2('0x39')]('nolimit')){_0xc815ea['limit']=qs[_0xd1d2('0x21')](_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x21')]);_0xc815ea[_0xd1d2('0x1f')]=qs[_0xd1d2('0x1f')](_0x1e6072[_0xd1d2('0x32')]['offset']);}_0xc815ea[_0xd1d2('0x3a')]=qs[_0xd1d2('0x3b')](_0x1e6072['query'][_0xd1d2('0x3b')]);_0xc815ea[_0xd1d2('0x3c')]=qs[_0xd1d2('0x34')](_[_0xd1d2('0x3d')](_0x1e6072['query'],_0x48ade1['filters']),_0x41171c);if(_0x1e6072[_0xd1d2('0x32')]['filter']){_0xc815ea['where']=_['merge'](_0xc815ea[_0xd1d2('0x3c')],{'$or':_['map'](_0x41171c,function(_0x3f4fd7){if(_0x3f4fd7['type']!=='VIRTUAL'){var _0x4bcea4={};_0x4bcea4[_0x3f4fd7[_0xd1d2('0x2a')]]={'$like':'%'+_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x3e')]+'%'};return _0x4bcea4;}})});}_0xc815ea=_[_0xd1d2('0x3f')]({},_0xc815ea,_0x1e6072[_0xd1d2('0x40')]);var _0xb5bec2={'where':_0xc815ea[_0xd1d2('0x3c')]};return db[_0xd1d2('0x41')][_0xd1d2('0x22')](_0xb5bec2)[_0xd1d2('0x26')](function(_0x2cedb4){_0x39d694[_0xd1d2('0x22')]=_0x2cedb4;if(_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x42')]){_0xc815ea['include']=[{'all':!![]}];}return db['FreshdeskField'][_0xd1d2('0x43')](_0xc815ea);})[_0xd1d2('0x26')](function(_0x24fc93){_0x39d694['rows']=_0x24fc93;return _0x39d694;})['then'](respondWithFilteredResult(_0x2b4c1f,_0xc815ea))[_0xd1d2('0x44')](handleError(_0x2b4c1f,null));};exports[_0xd1d2('0x45')]=function(_0x4dc730,_0x2fe92a){var _0x4c5d49={'raw':!![],'where':{'id':_0x4dc730[_0xd1d2('0x46')]['id']}},_0x5a3790={};_0x5a3790['model']=_['keys'](db[_0xd1d2('0x41')][_0xd1d2('0x2e')]);_0x5a3790[_0xd1d2('0x32')]=_['keys'](_0x4dc730[_0xd1d2('0x32')]);_0x5a3790[_0xd1d2('0x34')]=_[_0xd1d2('0x35')](_0x5a3790[_0xd1d2('0x31')],_0x5a3790['query']);_0x4c5d49[_0xd1d2('0x36')]=_[_0xd1d2('0x35')](_0x5a3790['model'],qs[_0xd1d2('0x37')](_0x4dc730['query'][_0xd1d2('0x37')]));_0x4c5d49[_0xd1d2('0x36')]=_0x4c5d49[_0xd1d2('0x36')][_0xd1d2('0x38')]?_0x4c5d49[_0xd1d2('0x36')]:_0x5a3790['model'];if(_0x4dc730['query'][_0xd1d2('0x42')]){_0x4c5d49[_0xd1d2('0x47')]=[{'all':!![]}];}_0x4c5d49=_['merge']({},_0x4c5d49,_0x4dc730[_0xd1d2('0x40')]);return db[_0xd1d2('0x41')][_0xd1d2('0x48')](_0x4c5d49)[_0xd1d2('0x26')](handleEntityNotFound(_0x2fe92a,null))[_0xd1d2('0x26')](respondWithResult(_0x2fe92a,null))[_0xd1d2('0x44')](handleError(_0x2fe92a,null));};exports[_0xd1d2('0x49')]=function(_0x57c668,_0xed9e9){return db[_0xd1d2('0x41')]['create'](_0x57c668[_0xd1d2('0x4a')],{})[_0xd1d2('0x26')](respondWithResult(_0xed9e9,0xc9))['catch'](handleError(_0xed9e9,null));};exports['update']=function(_0x3d4fe3,_0x182ea8){if(_0x3d4fe3['body']['id']){delete _0x3d4fe3[_0xd1d2('0x4a')]['id'];}return db[_0xd1d2('0x41')][_0xd1d2('0x48')]({'where':{'id':_0x3d4fe3[_0xd1d2('0x46')]['id']}})[_0xd1d2('0x26')](handleEntityNotFound(_0x182ea8,null))['then'](saveUpdates(_0x3d4fe3['body'],null))[_0xd1d2('0x26')](respondWithResult(_0x182ea8,null))['catch'](handleError(_0x182ea8,null));};exports[_0xd1d2('0x27')]=function(_0xcd4b70,_0x4f4cb9){return db[_0xd1d2('0x41')][_0xd1d2('0x48')]({'where':{'id':_0xcd4b70['params']['id']}})['then'](handleEntityNotFound(_0x4f4cb9,null))[_0xd1d2('0x26')](removeEntity(_0x4f4cb9,null))[_0xd1d2('0x44')](handleError(_0x4f4cb9,null));};
\ No newline at end of file
+var _0xbfcc=['offset','count','set','Content-Range','json','reject','then','destroy','error','stack','name','send','index','map','FreshdeskField','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','findAll','rows','catch','show','params','rawAttributes','include','options','find','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','limit','undefined'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x308213,_0x224541){_0x308213=_0x308213-0x0;var _0x2e1619=_0xbfcc[_0x308213];return _0x2e1619;};'use strict';var emlformat=require(_0xcbfc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcbfc('0x1'));var rp=require(_0xcbfc('0x2'));var moment=require(_0xcbfc('0x3'));var BPromise=require(_0xcbfc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xcbfc('0x5'));var ejs=require(_0xcbfc('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcbfc('0x7'));var squel=require('squel');var crypto=require(_0xcbfc('0x8'));var jsforce=require(_0xcbfc('0x9'));var deskjs=require(_0xcbfc('0xa'));var toCsv=require(_0xcbfc('0x5'));var querystring=require('querystring');var Papa=require(_0xcbfc('0xb'));var Redis=require(_0xcbfc('0xc'));var authService=require(_0xcbfc('0xd'));var qs=require(_0xcbfc('0xe'));var as=require(_0xcbfc('0xf'));var hardwareService=require(_0xcbfc('0x10'));var logger=require('../../config/logger')(_0xcbfc('0x11'));var utils=require(_0xcbfc('0x12'));var config=require(_0xcbfc('0x13'));var licenseUtil=require(_0xcbfc('0x14'));var db=require(_0xcbfc('0x15'))['db'];function respondWithStatusCode(_0x4e8b34,_0x3bfd05){_0x3bfd05=_0x3bfd05||0xcc;return function(_0x86f67c){if(_0x86f67c){return _0x4e8b34[_0xcbfc('0x16')](_0x3bfd05);}return _0x4e8b34['status'](_0x3bfd05)[_0xcbfc('0x17')]();};}function respondWithResult(_0x3ec338,_0x2f2bdd){_0x2f2bdd=_0x2f2bdd||0xc8;return function(_0x45a5cc){if(_0x45a5cc){return _0x3ec338[_0xcbfc('0x18')](_0x2f2bdd)['json'](_0x45a5cc);}};}function respondWithFilteredResult(_0x3c69ed,_0x1963de){return function(_0x1ec8c4){if(_0x1ec8c4){var _0x4317e4=typeof _0x1963de['offset']==='undefined'&&typeof _0x1963de[_0xcbfc('0x19')]===_0xcbfc('0x1a');var _0xa65368=_0x1ec8c4['count'];var _0x5b078f=_0x4317e4?0x0:_0x1963de[_0xcbfc('0x1b')];var _0x99b59d=_0x4317e4?_0x1ec8c4[_0xcbfc('0x1c')]:_0x1963de['offset']+_0x1963de[_0xcbfc('0x19')];var _0x552777;if(_0x99b59d>=_0xa65368){_0x99b59d=_0xa65368;_0x552777=0xc8;}else{_0x552777=0xce;}_0x3c69ed[_0xcbfc('0x18')](_0x552777);return _0x3c69ed[_0xcbfc('0x1d')](_0xcbfc('0x1e'),_0x5b078f+'-'+_0x99b59d+'/'+_0xa65368)[_0xcbfc('0x1f')](_0x1ec8c4);}return null;};}function patchUpdates(_0x25c167){return function(_0x2653b1){try{jsonpatch['apply'](_0x2653b1,_0x25c167,!![]);}catch(_0x9c79da){return BPromise[_0xcbfc('0x20')](_0x9c79da);}return _0x2653b1['save']();};}function saveUpdates(_0x1da958,_0x5a449b){return function(_0x4cc8b3){if(_0x4cc8b3){return _0x4cc8b3['update'](_0x1da958)[_0xcbfc('0x21')](function(_0x4a0fcb){return _0x4a0fcb;});}return null;};}function removeEntity(_0x4a1915,_0x1b3e42){return function(_0x34cffa){if(_0x34cffa){return _0x34cffa[_0xcbfc('0x22')]()[_0xcbfc('0x21')](function(){_0x4a1915['status'](0xcc)[_0xcbfc('0x17')]();});}};}function handleEntityNotFound(_0x51284a,_0x280b78){return function(_0x75bca0){if(!_0x75bca0){_0x51284a['sendStatus'](0x194);}return _0x75bca0;};}function handleError(_0x28bdcf,_0x3b73a3){_0x3b73a3=_0x3b73a3||0x1f4;return function(_0x4ab48e){logger[_0xcbfc('0x23')](_0x4ab48e[_0xcbfc('0x24')]);if(_0x4ab48e[_0xcbfc('0x25')]){delete _0x4ab48e[_0xcbfc('0x25')];}_0x28bdcf['status'](_0x3b73a3)[_0xcbfc('0x26')](_0x4ab48e);};}exports[_0xcbfc('0x27')]=function(_0x4f632a,_0x1f6a14){var _0x26463f={},_0x7cbdfa={},_0x388d41={'count':0x0,'rows':[]};var _0x2b4286=_[_0xcbfc('0x28')](db[_0xcbfc('0x29')]['rawAttributes'],function(_0x41b68b){return{'name':_0x41b68b[_0xcbfc('0x2a')],'type':_0x41b68b[_0xcbfc('0x2b')][_0xcbfc('0x2c')]};});_0x7cbdfa['model']=_[_0xcbfc('0x28')](_0x2b4286,_0xcbfc('0x25'));_0x7cbdfa[_0xcbfc('0x2d')]=_[_0xcbfc('0x2e')](_0x4f632a[_0xcbfc('0x2d')]);_0x7cbdfa[_0xcbfc('0x2f')]=_[_0xcbfc('0x30')](_0x7cbdfa['model'],_0x7cbdfa[_0xcbfc('0x2d')]);_0x26463f[_0xcbfc('0x31')]=_['intersection'](_0x7cbdfa[_0xcbfc('0x32')],qs[_0xcbfc('0x33')](_0x4f632a[_0xcbfc('0x2d')]['fields']));_0x26463f['attributes']=_0x26463f['attributes'][_0xcbfc('0x34')]?_0x26463f[_0xcbfc('0x31')]:_0x7cbdfa[_0xcbfc('0x32')];if(!_0x4f632a[_0xcbfc('0x2d')][_0xcbfc('0x35')](_0xcbfc('0x36'))){_0x26463f[_0xcbfc('0x19')]=qs[_0xcbfc('0x19')](_0x4f632a['query'][_0xcbfc('0x19')]);_0x26463f[_0xcbfc('0x1b')]=qs['offset'](_0x4f632a[_0xcbfc('0x2d')]['offset']);}_0x26463f[_0xcbfc('0x37')]=qs[_0xcbfc('0x38')](_0x4f632a[_0xcbfc('0x2d')]['sort']);_0x26463f[_0xcbfc('0x39')]=qs['filters'](_['pick'](_0x4f632a[_0xcbfc('0x2d')],_0x7cbdfa[_0xcbfc('0x2f')]),_0x2b4286);if(_0x4f632a[_0xcbfc('0x2d')][_0xcbfc('0x3a')]){_0x26463f[_0xcbfc('0x39')]=_[_0xcbfc('0x3b')](_0x26463f[_0xcbfc('0x39')],{'$or':_[_0xcbfc('0x28')](_0x2b4286,function(_0x5cf4fa){if(_0x5cf4fa[_0xcbfc('0x2b')]!=='VIRTUAL'){var _0x15a5c4={};_0x15a5c4[_0x5cf4fa[_0xcbfc('0x25')]]={'$like':'%'+_0x4f632a[_0xcbfc('0x2d')][_0xcbfc('0x3a')]+'%'};return _0x15a5c4;}})});}_0x26463f=_['merge']({},_0x26463f,_0x4f632a['options']);var _0x236b66={'where':_0x26463f[_0xcbfc('0x39')]};return db[_0xcbfc('0x29')][_0xcbfc('0x1c')](_0x236b66)[_0xcbfc('0x21')](function(_0x4aa189){_0x388d41[_0xcbfc('0x1c')]=_0x4aa189;if(_0x4f632a[_0xcbfc('0x2d')][_0xcbfc('0x3c')]){_0x26463f['include']=[{'all':!![]}];}return db[_0xcbfc('0x29')][_0xcbfc('0x3d')](_0x26463f);})[_0xcbfc('0x21')](function(_0x4ca55c){_0x388d41[_0xcbfc('0x3e')]=_0x4ca55c;return _0x388d41;})[_0xcbfc('0x21')](respondWithFilteredResult(_0x1f6a14,_0x26463f))[_0xcbfc('0x3f')](handleError(_0x1f6a14,null));};exports[_0xcbfc('0x40')]=function(_0x102f4f,_0x28447a){var _0x1e14bb={'raw':!![],'where':{'id':_0x102f4f[_0xcbfc('0x41')]['id']}},_0x561544={};_0x561544[_0xcbfc('0x32')]=_['keys'](db[_0xcbfc('0x29')][_0xcbfc('0x42')]);_0x561544[_0xcbfc('0x2d')]=_[_0xcbfc('0x2e')](_0x102f4f[_0xcbfc('0x2d')]);_0x561544[_0xcbfc('0x2f')]=_[_0xcbfc('0x30')](_0x561544[_0xcbfc('0x32')],_0x561544['query']);_0x1e14bb[_0xcbfc('0x31')]=_[_0xcbfc('0x30')](_0x561544[_0xcbfc('0x32')],qs[_0xcbfc('0x33')](_0x102f4f[_0xcbfc('0x2d')][_0xcbfc('0x33')]));_0x1e14bb[_0xcbfc('0x31')]=_0x1e14bb['attributes'][_0xcbfc('0x34')]?_0x1e14bb[_0xcbfc('0x31')]:_0x561544['model'];if(_0x102f4f[_0xcbfc('0x2d')][_0xcbfc('0x3c')]){_0x1e14bb[_0xcbfc('0x43')]=[{'all':!![]}];}_0x1e14bb=_['merge']({},_0x1e14bb,_0x102f4f[_0xcbfc('0x44')]);return db[_0xcbfc('0x29')][_0xcbfc('0x45')](_0x1e14bb)[_0xcbfc('0x21')](handleEntityNotFound(_0x28447a,null))[_0xcbfc('0x21')](respondWithResult(_0x28447a,null))[_0xcbfc('0x3f')](handleError(_0x28447a,null));};exports[_0xcbfc('0x46')]=function(_0x55fc0b,_0x5a87b6){return db[_0xcbfc('0x29')][_0xcbfc('0x46')](_0x55fc0b[_0xcbfc('0x47')],{})[_0xcbfc('0x21')](respondWithResult(_0x5a87b6,0xc9))['catch'](handleError(_0x5a87b6,null));};exports['update']=function(_0x2e89bf,_0xe5c5ef){if(_0x2e89bf[_0xcbfc('0x47')]['id']){delete _0x2e89bf['body']['id'];}return db[_0xcbfc('0x29')][_0xcbfc('0x45')]({'where':{'id':_0x2e89bf[_0xcbfc('0x41')]['id']}})['then'](handleEntityNotFound(_0xe5c5ef,null))[_0xcbfc('0x21')](saveUpdates(_0x2e89bf[_0xcbfc('0x47')],null))[_0xcbfc('0x21')](respondWithResult(_0xe5c5ef,null))[_0xcbfc('0x3f')](handleError(_0xe5c5ef,null));};exports[_0xcbfc('0x22')]=function(_0xd9976d,_0x222b58){return db[_0xcbfc('0x29')][_0xcbfc('0x45')]({'where':{'id':_0xd9976d[_0xcbfc('0x41')]['id']}})['then'](handleEntityNotFound(_0x222b58,null))[_0xcbfc('0x21')](removeEntity(_0x222b58,null))[_0xcbfc('0x3f')](handleError(_0x222b58,null));};
\ No newline at end of file
index 844373b..eac618a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d3e=['FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','./intFreshdeskField.attributes','define'];(function(_0xc162f9,_0x5a739c){var _0x3c1941=function(_0x38e822){while(--_0x38e822){_0xc162f9['push'](_0xc162f9['shift']());}};_0x3c1941(++_0x5a739c);}(_0x3d3e,0x155));var _0xe3d3=function(_0x51eb85,_0x535fea){_0x51eb85=_0x51eb85-0x0;var _0x40dc48=_0x3d3e[_0x51eb85];return _0x40dc48;};'use strict';var _=require(_0xe3d3('0x0'));var util=require(_0xe3d3('0x1'));var logger=require(_0xe3d3('0x2'))('api');var moment=require(_0xe3d3('0x3'));var BPromise=require(_0xe3d3('0x4'));var rp=require(_0xe3d3('0x5'));var fs=require('fs');var path=require(_0xe3d3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe3d3('0x7'));module['exports']=function(_0x512389,_0x3a5d73){return _0x512389[_0xe3d3('0x8')](_0xe3d3('0x9'),attributes,{'tableName':_0xe3d3('0xa'),'paranoid':![],'indexes':[{'name':_0xe3d3('0xb'),'fields':[_0xe3d3('0xc'),_0xe3d3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e8d=['bluebird','request-promise','path','rimraf','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','FieldId','lodash','util','../../config/logger','api'];(function(_0x5db96a,_0x60039){var _0x13fdb0=function(_0x1efab0){while(--_0x1efab0){_0x5db96a['push'](_0x5db96a['shift']());}};_0x13fdb0(++_0x60039);}(_0x8e8d,0xa1));var _0xd8e8=function(_0x411566,_0x3d7917){_0x411566=_0x411566-0x0;var _0x3716f=_0x8e8d[_0x411566];return _0x3716f;};'use strict';var _=require(_0xd8e8('0x0'));var util=require(_0xd8e8('0x1'));var logger=require(_0xd8e8('0x2'))(_0xd8e8('0x3'));var moment=require('moment');var BPromise=require(_0xd8e8('0x4'));var rp=require(_0xd8e8('0x5'));var fs=require('fs');var path=require(_0xd8e8('0x6'));var rimraf=require(_0xd8e8('0x7'));var config=require('../../config/environment');var attributes=require(_0xd8e8('0x8'));module[_0xd8e8('0x9')]=function(_0x413221,_0x46f0bf){return _0x413221[_0xd8e8('0xa')](_0xd8e8('0xb'),attributes,{'tableName':_0xd8e8('0xc'),'paranoid':![],'indexes':[{'name':_0xd8e8('0xd'),'fields':['idField',_0xd8e8('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 40a6d04..5228b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1596=['then','info','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http'];(function(_0x1505e5,_0x5cc291){var _0x5b1dcd=function(_0x18bfe5){while(--_0x18bfe5){_0x1505e5['push'](_0x1505e5['shift']());}};_0x5b1dcd(++_0x5cc291);}(_0x1596,0x16f));var _0x6159=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x1596[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0x6159('0x0'));var util=require(_0x6159('0x1'));var moment=require(_0x6159('0x2'));var BPromise=require(_0x6159('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6159('0x4'));var db=require(_0x6159('0x5'))['db'];var utils=require(_0x6159('0x6'));var logger=require('../../config/logger')(_0x6159('0x7'));var config=require(_0x6159('0x8'));var jayson=require(_0x6159('0x9'));var client=jayson['client'][_0x6159('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28f030,_0xa325fe,_0x2d530e){return new BPromise(function(_0x1784b6,_0x2bf835){return client['request'](_0x28f030,_0x2d530e)[_0x6159('0xb')](function(_0x4e6cf6){logger[_0x6159('0xc')](_0x6159('0xd'),_0xa325fe,'request\x20sent');logger[_0x6159('0xe')](_0x6159('0xf'),_0xa325fe,_0x6159('0x10'),JSON['stringify'](_0x4e6cf6));if(_0x4e6cf6['error']){if(_0x4e6cf6[_0x6159('0x11')][_0x6159('0x12')]===0x1f4){logger[_0x6159('0x11')](_0x6159('0xd'),_0xa325fe,_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);return _0x2bf835(_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);}logger[_0x6159('0x11')](_0x6159('0xd'),_0xa325fe,_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);return _0x1784b6(_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);}else{logger[_0x6159('0xc')](_0x6159('0xd'),_0xa325fe,_0x6159('0x10'));_0x1784b6(_0x4e6cf6[_0x6159('0x14')]['message']);}})['catch'](function(_0x316630){logger[_0x6159('0x11')](_0x6159('0xd'),_0xa325fe,_0x316630);_0x2bf835(_0x316630);});});}
\ No newline at end of file
+var _0x2dd5=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','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','util','moment','bluebird'];(function(_0x262e99,_0x4fdaed){var _0x4424a9=function(_0x8c403){while(--_0x8c403){_0x262e99['push'](_0x262e99['shift']());}};_0x4424a9(++_0x4fdaed);}(_0x2dd5,0xe3));var _0x52dd=function(_0xead644,_0x11d7cd){_0xead644=_0xead644-0x0;var _0x24c055=_0x2dd5[_0xead644];return _0x24c055;};'use strict';var _=require('lodash');var util=require(_0x52dd('0x0'));var moment=require(_0x52dd('0x1'));var BPromise=require(_0x52dd('0x2'));var rs=require(_0x52dd('0x3'));var fs=require('fs');var Redis=require(_0x52dd('0x4'));var db=require(_0x52dd('0x5'))['db'];var utils=require(_0x52dd('0x6'));var logger=require(_0x52dd('0x7'))('rpc');var config=require(_0x52dd('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x52dd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x316438,_0x123c5a,_0x833e74){return new BPromise(function(_0x27a154,_0x376b39){return client[_0x52dd('0xa')](_0x316438,_0x833e74)[_0x52dd('0xb')](function(_0x2ebe38){logger[_0x52dd('0xc')](_0x52dd('0xd'),_0x123c5a,_0x52dd('0xe'));logger[_0x52dd('0xf')](_0x52dd('0x10'),_0x123c5a,_0x52dd('0xe'),JSON[_0x52dd('0x11')](_0x2ebe38));if(_0x2ebe38['error']){if(_0x2ebe38[_0x52dd('0x12')][_0x52dd('0x13')]===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x123c5a,_0x2ebe38[_0x52dd('0x12')][_0x52dd('0x14')]);return _0x376b39(_0x2ebe38['error'][_0x52dd('0x14')]);}logger['error'](_0x52dd('0xd'),_0x123c5a,_0x2ebe38[_0x52dd('0x12')][_0x52dd('0x14')]);return _0x27a154(_0x2ebe38[_0x52dd('0x12')][_0x52dd('0x14')]);}else{logger['info'](_0x52dd('0xd'),_0x123c5a,_0x52dd('0xe'));_0x27a154(_0x2ebe38[_0x52dd('0x15')][_0x52dd('0x14')]);}})[_0x52dd('0x16')](function(_0x14ab77){logger['error'](_0x52dd('0xd'),_0x123c5a,_0x14ab77);_0x376b39(_0x14ab77);});});}
\ No newline at end of file
index 36d069a..f236d13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd404=['/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show'];(function(_0x57ac05,_0x555b58){var _0x4c6700=function(_0x122c78){while(--_0x122c78){_0x57ac05['push'](_0x57ac05['shift']());}};_0x4c6700(++_0x555b58);}(_0xd404,0x15b));var _0x4d40=function(_0x1b50bd,_0x2f0b88){_0x1b50bd=_0x1b50bd-0x0;var _0x34b08c=_0xd404[_0x1b50bd];return _0x34b08c;};'use strict';var multer=require(_0x4d40('0x0'));var util=require(_0x4d40('0x1'));var path=require('path');var timeout=require(_0x4d40('0x2'));var express=require(_0x4d40('0x3'));var router=express['Router']();var fs_extra=require(_0x4d40('0x4'));var auth=require(_0x4d40('0x5'));var interaction=require(_0x4d40('0x6'));var config=require(_0x4d40('0x7'));var controller=require(_0x4d40('0x8'));router[_0x4d40('0x9')]('/',auth[_0x4d40('0xa')](),controller[_0x4d40('0xb')]);router[_0x4d40('0x9')]('/:id',auth[_0x4d40('0xa')](),controller[_0x4d40('0xc')]);router['get'](_0x4d40('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x4d40('0x9')](_0x4d40('0xe'),auth[_0x4d40('0xa')](),controller[_0x4d40('0xf')]);router[_0x4d40('0x10')]('/',auth[_0x4d40('0xa')](),controller[_0x4d40('0x11')]);router[_0x4d40('0x10')](_0x4d40('0xd'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x12')]);router[_0x4d40('0x13')](_0x4d40('0x14'),auth[_0x4d40('0xa')](),controller['update']);router[_0x4d40('0x15')](_0x4d40('0x14'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x16')]);module[_0x4d40('0x17')]=router;
\ No newline at end of file
+var _0x5eb8=['./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x452eac,_0x1f34d6){var _0x1aa167=function(_0x21df11){while(--_0x21df11){_0x452eac['push'](_0x452eac['shift']());}};_0x1aa167(++_0x1f34d6);}(_0x5eb8,0xb0));var _0x85eb=function(_0x1b68ba,_0x23687a){_0x1b68ba=_0x1b68ba-0x0;var _0xf49b11=_0x5eb8[_0x1b68ba];return _0xf49b11;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['get'](_0x85eb('0xe'),auth['isAuthenticated'](),controller[_0x85eb('0xf')]);router[_0x85eb('0x9')](_0x85eb('0x10'),auth[_0x85eb('0xa')](),controller[_0x85eb('0x11')]);router[_0x85eb('0x12')]('/',auth[_0x85eb('0xa')](),controller['create']);router[_0x85eb('0x12')](_0x85eb('0xe'),auth['isAuthenticated'](),controller[_0x85eb('0x13')]);router[_0x85eb('0x14')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller['update']);router['delete'](_0x85eb('0xc'),auth['isAuthenticated'](),controller[_0x85eb('0x15')]);module[_0x85eb('0x16')]=router;
\ No newline at end of file
index c6fac14..4fce1ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['remoteUri','exports','STRING','username'];(function(_0x141adc,_0x34b5d1){var _0x118692=function(_0x43361b){while(--_0x43361b){_0x141adc['push'](_0x141adc['shift']());}};_0x118692(++_0x34b5d1);}(_0x2032,0xd9));var _0x2203=function(_0x22dd57,_0x59f5d8){_0x22dd57=_0x22dd57-0x0;var _0x64c609=_0x2032[_0x22dd57];return _0x64c609;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')]},'description':{'type':Sequelize[_0x2203('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x2203('0x2')},'apiKey':{'type':Sequelize[_0x2203('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x2203('0x3')},'serverUrl':{'type':Sequelize[_0x2203('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xa456=['STRING','username','sequelize','exports'];(function(_0x29b057,_0x2a136f){var _0x3bf0a7=function(_0x21f0b1){while(--_0x21f0b1){_0x29b057['push'](_0x29b057['shift']());}};_0x3bf0a7(++_0x2a136f);}(_0xa456,0x142));var _0x6a45=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0xa456[_0x725b8e];return _0x43ac45;};'use strict';var Sequelize=require(_0x6a45('0x0'));module[_0x6a45('0x1')]={'name':{'type':Sequelize[_0x6a45('0x2')]},'description':{'type':Sequelize[_0x6a45('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x6a45('0x3')},'apiKey':{'type':Sequelize[_0x6a45('0x2')]},'remoteUri':{'type':Sequelize[_0x6a45('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x6a45('0x2')],'allowNull':![]}};
\ No newline at end of file
index db08f89..ff40775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42c7=['../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','update','destroy','then','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','length','find','create','body','params','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','apiKey','remoteUri','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0xfe2393,_0x110ad5){var _0x3239bd=function(_0x186ba8){while(--_0x186ba8){_0xfe2393['push'](_0xfe2393['shift']());}};_0x3239bd(++_0x110ad5);}(_0x42c7,0x12d));var _0x742c=function(_0x269d4d,_0x455885){_0x269d4d=_0x269d4d-0x0;var _0x5c8a83=_0x42c7[_0x269d4d];return _0x5c8a83;};'use strict';var emlformat=require(_0x742c('0x0'));var rimraf=require(_0x742c('0x1'));var zipdir=require(_0x742c('0x2'));var jsonpatch=require(_0x742c('0x3'));var rp=require(_0x742c('0x4'));var moment=require(_0x742c('0x5'));var BPromise=require(_0x742c('0x6'));var Mustache=require(_0x742c('0x7'));var util=require(_0x742c('0x8'));var path=require(_0x742c('0x9'));var sox=require(_0x742c('0xa'));var csv=require(_0x742c('0xb'));var ejs=require(_0x742c('0xc'));var fs=require('fs');var fs_extra=require(_0x742c('0xd'));var _=require(_0x742c('0xe'));var squel=require('squel');var crypto=require(_0x742c('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x742c('0x10'));var toCsv=require(_0x742c('0xb'));var querystring=require(_0x742c('0x11'));var Papa=require('papaparse');var Redis=require(_0x742c('0x12'));var authService=require(_0x742c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x742c('0x14'));var hardwareService=require(_0x742c('0x15'));var logger=require(_0x742c('0x16'))(_0x742c('0x17'));var utils=require(_0x742c('0x18'));var config=require(_0x742c('0x19'));var licenseUtil=require(_0x742c('0x1a'));var db=require(_0x742c('0x1b'))['db'];var integrations=require(_0x742c('0x1c'));function respondWithStatusCode(_0x59b761,_0x9f6654){_0x9f6654=_0x9f6654||0xcc;return function(_0x29f012){if(_0x29f012){return _0x59b761[_0x742c('0x1d')](_0x9f6654);}return _0x59b761['status'](_0x9f6654)[_0x742c('0x1e')]();};}function respondWithResult(_0x128d77,_0x40c906){_0x40c906=_0x40c906||0xc8;return function(_0x2167b8){if(_0x2167b8){return _0x128d77['status'](_0x40c906)[_0x742c('0x1f')](_0x2167b8);}};}function respondWithFilteredResult(_0x3d5cd3,_0x34a567){return function(_0x557e32){if(_0x557e32){var _0x510270=typeof _0x34a567['offset']===_0x742c('0x20')&&typeof _0x34a567[_0x742c('0x21')]===_0x742c('0x20');var _0x3c903c=_0x557e32[_0x742c('0x22')];var _0xe5d683=_0x510270?0x0:_0x34a567[_0x742c('0x23')];var _0x35145e=_0x510270?_0x557e32[_0x742c('0x22')]:_0x34a567['offset']+_0x34a567[_0x742c('0x21')];var _0x593ecb;if(_0x35145e>=_0x3c903c){_0x35145e=_0x3c903c;_0x593ecb=0xc8;}else{_0x593ecb=0xce;}_0x3d5cd3[_0x742c('0x24')](_0x593ecb);return _0x3d5cd3[_0x742c('0x25')](_0x742c('0x26'),_0xe5d683+'-'+_0x35145e+'/'+_0x3c903c)[_0x742c('0x1f')](_0x557e32);}return null;};}function patchUpdates(_0x482668){return function(_0x25c7fd){try{jsonpatch[_0x742c('0x27')](_0x25c7fd,_0x482668,!![]);}catch(_0x11c341){return BPromise[_0x742c('0x28')](_0x11c341);}return _0x25c7fd['save']();};}function saveUpdates(_0x2cd509,_0x4d32b0){return function(_0x366400){if(_0x366400){return _0x366400[_0x742c('0x29')](_0x2cd509)['then'](function(_0x5a0599){return _0x5a0599;});}return null;};}function removeEntity(_0x1ae640,_0x2d9bd0){return function(_0xbc7bf5){if(_0xbc7bf5){return _0xbc7bf5[_0x742c('0x2a')]()[_0x742c('0x2b')](function(){_0x1ae640[_0x742c('0x24')](0xcc)[_0x742c('0x1e')]();});}};}function handleEntityNotFound(_0x3ac43a,_0x163a3f){return function(_0x451f06){if(!_0x451f06){_0x3ac43a['sendStatus'](0x194);}return _0x451f06;};}function handleError(_0x9635c8,_0x53f6d6){_0x53f6d6=_0x53f6d6||0x1f4;return function(_0x5d874){logger['error'](_0x5d874[_0x742c('0x2c')]);if(_0x5d874[_0x742c('0x2d')]){delete _0x5d874['name'];}_0x9635c8[_0x742c('0x24')](_0x53f6d6)[_0x742c('0x2e')](_0x5d874);};}exports[_0x742c('0x2f')]=function(_0x175702,_0x1825c3){var _0x48d230={},_0x1cb6b6={},_0x3b648f={'count':0x0,'rows':[]};var _0x1b2c51=_[_0x742c('0x30')](db[_0x742c('0x31')][_0x742c('0x32')],function(_0x2594bf){return{'name':_0x2594bf[_0x742c('0x33')],'type':_0x2594bf[_0x742c('0x34')][_0x742c('0x35')]};});_0x1cb6b6[_0x742c('0x36')]=_['map'](_0x1b2c51,'name');_0x1cb6b6['query']=_[_0x742c('0x37')](_0x175702[_0x742c('0x38')]);_0x1cb6b6['filters']=_[_0x742c('0x39')](_0x1cb6b6[_0x742c('0x36')],_0x1cb6b6['query']);_0x48d230['attributes']=_[_0x742c('0x39')](_0x1cb6b6[_0x742c('0x36')],qs[_0x742c('0x3a')](_0x175702['query'][_0x742c('0x3a')]));_0x48d230[_0x742c('0x3b')]=_0x48d230[_0x742c('0x3b')]['length']?_0x48d230[_0x742c('0x3b')]:_0x1cb6b6['model'];if(!_0x175702['query'][_0x742c('0x3c')](_0x742c('0x3d'))){_0x48d230[_0x742c('0x21')]=qs[_0x742c('0x21')](_0x175702[_0x742c('0x38')]['limit']);_0x48d230[_0x742c('0x23')]=qs['offset'](_0x175702['query'][_0x742c('0x23')]);}_0x48d230[_0x742c('0x3e')]=qs[_0x742c('0x3f')](_0x175702[_0x742c('0x38')][_0x742c('0x3f')]);_0x48d230[_0x742c('0x40')]=qs[_0x742c('0x41')](_[_0x742c('0x42')](_0x175702[_0x742c('0x38')],_0x1cb6b6[_0x742c('0x41')]),_0x1b2c51);if(_0x175702['query'][_0x742c('0x43')]){_0x48d230[_0x742c('0x40')]=_[_0x742c('0x44')](_0x48d230[_0x742c('0x40')],{'$or':_[_0x742c('0x30')](_0x1b2c51,function(_0x243ff2){if(_0x243ff2['type']!==_0x742c('0x45')){var _0x38f317={};_0x38f317[_0x243ff2[_0x742c('0x2d')]]={'$like':'%'+_0x175702[_0x742c('0x38')][_0x742c('0x43')]+'%'};return _0x38f317;}})});}_0x48d230=_[_0x742c('0x44')]({},_0x48d230,_0x175702[_0x742c('0x46')]);var _0x46534b={'where':_0x48d230[_0x742c('0x40')]};return db[_0x742c('0x31')][_0x742c('0x22')](_0x46534b)['then'](function(_0x4eca9e){_0x3b648f['count']=_0x4eca9e;if(_0x175702['query'][_0x742c('0x47')]){_0x48d230[_0x742c('0x48')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x742c('0x49')](_0x48d230);})['then'](function(_0x38950f){_0x3b648f[_0x742c('0x4a')]=_0x38950f;return _0x3b648f;})[_0x742c('0x2b')](respondWithFilteredResult(_0x1825c3,_0x48d230))[_0x742c('0x4b')](handleError(_0x1825c3,null));};exports['show']=function(_0x2c6ed2,_0x108fb9){var _0x2ac19f={'raw':![],'where':{'id':_0x2c6ed2['params']['id']}},_0x5c98fa={};_0x5c98fa['model']=_[_0x742c('0x37')](db[_0x742c('0x31')][_0x742c('0x32')]);_0x5c98fa[_0x742c('0x38')]=_[_0x742c('0x37')](_0x2c6ed2[_0x742c('0x38')]);_0x5c98fa[_0x742c('0x41')]=_['intersection'](_0x5c98fa['model'],_0x5c98fa[_0x742c('0x38')]);_0x2ac19f[_0x742c('0x3b')]=_[_0x742c('0x39')](_0x5c98fa[_0x742c('0x36')],qs[_0x742c('0x3a')](_0x2c6ed2[_0x742c('0x38')]['fields']));_0x2ac19f[_0x742c('0x3b')]=_0x2ac19f[_0x742c('0x3b')][_0x742c('0x4c')]?_0x2ac19f['attributes']:_0x5c98fa[_0x742c('0x36')];if(_0x2c6ed2[_0x742c('0x38')][_0x742c('0x47')]){_0x2ac19f[_0x742c('0x48')]=[{'all':!![]}];}_0x2ac19f=_[_0x742c('0x44')]({},_0x2ac19f,_0x2c6ed2[_0x742c('0x46')]);return db[_0x742c('0x31')][_0x742c('0x4d')](_0x2ac19f)[_0x742c('0x2b')](handleEntityNotFound(_0x108fb9,null))[_0x742c('0x2b')](respondWithResult(_0x108fb9,null))[_0x742c('0x4b')](handleError(_0x108fb9,null));};exports[_0x742c('0x4e')]=function(_0x36c85f,_0x437593){return db[_0x742c('0x31')][_0x742c('0x4e')](_0x36c85f['body'],{})[_0x742c('0x2b')](respondWithResult(_0x437593,0xc9))[_0x742c('0x4b')](handleError(_0x437593,null));};exports[_0x742c('0x29')]=function(_0x299cae,_0x78db91){if(_0x299cae['body']['id']){delete _0x299cae[_0x742c('0x4f')]['id'];}return db['FreshsalesAccount'][_0x742c('0x4d')]({'where':{'id':_0x299cae[_0x742c('0x50')]['id']}})[_0x742c('0x2b')](handleEntityNotFound(_0x78db91,null))[_0x742c('0x2b')](saveUpdates(_0x299cae[_0x742c('0x4f')],null))[_0x742c('0x2b')](respondWithResult(_0x78db91,null))['catch'](handleError(_0x78db91,null));};exports[_0x742c('0x2a')]=function(_0x4ece3e,_0x121255){return db[_0x742c('0x31')][_0x742c('0x4d')]({'where':{'id':_0x4ece3e[_0x742c('0x50')]['id']}})[_0x742c('0x2b')](handleEntityNotFound(_0x121255,null))[_0x742c('0x2b')](removeEntity(_0x121255,null))[_0x742c('0x4b')](handleError(_0x121255,null));};exports[_0x742c('0x51')]=function(_0x4f23d3,_0x5ee5d8,_0x4f6450){var _0x48a73d={};var _0x5ece75={};var _0x3553a1;var _0x5af297;return db['FreshsalesAccount'][_0x742c('0x52')]({'where':{'id':_0x4f23d3['params']['id']}})[_0x742c('0x2b')](handleEntityNotFound(_0x5ee5d8,null))[_0x742c('0x2b')](function(_0xa70f9){if(_0xa70f9){_0x3553a1=_0xa70f9;_0x5ece75[_0x742c('0x36')]=_['keys'](db['FreshsalesConfiguration'][_0x742c('0x32')]);_0x5ece75[_0x742c('0x38')]=_[_0x742c('0x37')](_0x4f23d3['query']);_0x5ece75[_0x742c('0x41')]=_[_0x742c('0x39')](_0x5ece75[_0x742c('0x36')],_0x5ece75[_0x742c('0x38')]);_0x48a73d['attributes']=_[_0x742c('0x39')](_0x5ece75['model'],qs[_0x742c('0x3a')](_0x4f23d3[_0x742c('0x38')][_0x742c('0x3a')]));_0x48a73d[_0x742c('0x3b')]=_0x48a73d[_0x742c('0x3b')][_0x742c('0x4c')]?_0x48a73d['attributes']:_0x5ece75['model'];_0x48a73d['order']=qs[_0x742c('0x3f')](_0x4f23d3['query'][_0x742c('0x3f')]);_0x48a73d[_0x742c('0x40')]=qs[_0x742c('0x41')](_['pick'](_0x4f23d3['query'],_0x5ece75['filters']));if(_0x4f23d3['query'][_0x742c('0x43')]){_0x48a73d[_0x742c('0x40')]=_['merge'](_0x48a73d[_0x742c('0x40')],{'$or':_[_0x742c('0x30')](_0x48a73d['attributes'],function(_0x38d637){var _0xf9a0e3={};_0xf9a0e3[_0x38d637]={'$like':'%'+_0x4f23d3[_0x742c('0x38')][_0x742c('0x43')]+'%'};return _0xf9a0e3;})});}_0x48a73d=_[_0x742c('0x44')]({},_0x48a73d,_0x4f23d3['options']);return _0x3553a1[_0x742c('0x51')](_0x48a73d);}})[_0x742c('0x2b')](function(_0x2be8bd){if(_0x2be8bd){_0x5af297=_0x2be8bd[_0x742c('0x4c')];if(!_0x4f23d3[_0x742c('0x38')]['hasOwnProperty'](_0x742c('0x3d'))){_0x48a73d[_0x742c('0x21')]=qs[_0x742c('0x21')](_0x4f23d3[_0x742c('0x38')]['limit']);_0x48a73d[_0x742c('0x23')]=qs[_0x742c('0x23')](_0x4f23d3[_0x742c('0x38')]['offset']);}return _0x3553a1[_0x742c('0x51')](_0x48a73d);}})[_0x742c('0x2b')](function(_0x40c78e){if(_0x40c78e){return _0x40c78e?{'count':_0x5af297,'rows':_0x40c78e}:null;}})[_0x742c('0x2b')](respondWithResult(_0x5ee5d8,null))[_0x742c('0x4b')](handleError(_0x5ee5d8,null));};exports[_0x742c('0x53')]=function(_0x5a9bb1,_0x3a6bd7,_0x91b777){if(_0x5a9bb1[_0x742c('0x4f')]['id']){delete _0x5a9bb1[_0x742c('0x4f')]['id'];}return db[_0x742c('0x31')]['findOne']({'where':{'id':_0x5a9bb1['params']['id']}})['then'](handleEntityNotFound(_0x3a6bd7,null))['then'](function(_0x17e009){if(_0x17e009){_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x54')]=_0x17e009['id'];_0x5a9bb1['body'][_0x742c('0x55')]=integrations[_0x742c('0x56')](_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x57')],_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x34')]);_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x58')]=integrations[_0x742c('0x59')](_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x57')],_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x34')]);return db[_0x742c('0x5a')][_0x742c('0x4e')](_0x5a9bb1['body'],{'include':[{'model':db['FreshsalesField'],'as':'Subjects'},{'model':db[_0x742c('0x5b')],'as':_0x742c('0x58')}]});}return null;})['then'](respondWithResult(_0x3a6bd7,null))[_0x742c('0x4b')](handleError(_0x3a6bd7,null));};exports[_0x742c('0x5c')]=function(_0x4a848c,_0x40bf43,_0x3b4407){var _0x2c7d08='';var _0x590bac='';return db[_0x742c('0x31')][_0x742c('0x52')]({'where':{'id':_0x4a848c[_0x742c('0x50')]['id']},'attributes':['id',_0x742c('0x5d'),'remoteUri',_0x742c('0x5e')]})[_0x742c('0x2b')](handleEntityNotFound(_0x40bf43,null))['then'](function(_0x3c1083){if(_0x3c1083){_0x590bac=_0x3c1083[_0x742c('0x5d')];_0x2c7d08=_0x3c1083[_0x742c('0x5f')];var _0x38855e=_0x3c1083['remoteUri']['slice'](-0x1);if(_0x38855e==='/'){_0x2c7d08=_0x2c7d08[_0x742c('0x60')](0x0,_0x2c7d08['lastIndexOf'](_0x38855e));}return rp({'method':_0x742c('0x61'),'uri':util[_0x742c('0x62')](_0x742c('0x63'),_0x2c7d08,_0x742c('0x64')),'headers':{'Authorization':_0x742c('0x65')+_0x3c1083['apiKey']},'json':!![]});}})['then'](function(_0x5c630e){if(_0x5c630e){var _0x183a41=_0x5c630e[_0x742c('0x66')];var _0x47dd32=![];var _0x4c1619=null;for(_0x4c1619=0x0;_0x4c1619<_0x183a41[_0x742c('0x4c')];_0x4c1619++){if(_0x183a41[_0x4c1619]['email']===_0x590bac){_0x47dd32=!![];}}if(_0x47dd32){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x742c('0x67')});}}})[_0x742c('0x2b')](respondWithResult(_0x40bf43,null))[_0x742c('0x4b')](function(_0x225ce6){var _0x4c4ac0=_0x4a848c['query']['test']?0x1f4:_0x225ce6['statusCode']||0x1f4;logger[_0x742c('0x68')](_0x742c('0x69'),_0x742c('0x5c'),_0x4c4ac0,JSON[_0x742c('0x6a')](_0x225ce6));delete _0x225ce6['name'];if(_0x4c4ac0===0x191){_0x4c4ac0=0x190;}_0x40bf43[_0x742c('0x24')](_0x4c4ac0)[_0x742c('0x2e')](_0x4a848c['query']['test']?{'message':_0x742c('0x6b'),'statusCode':_0x225ce6[_0x742c('0x6c')]}:_0x225ce6);});};
\ No newline at end of file
+var _0xfc31=['show','params','keys','length','find','catch','create','body','getConfigurations','findOne','FreshsalesConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','username','remoteUri','slice','substring','lastIndexOf','GET','format','%s%s','apiKey','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','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','../../components/integrations/configuration','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','status','end','sendStatus','error','stack','index','map','FreshsalesAccount','rawAttributes','type','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows'];(function(_0x26f7f5,_0x3da6fd){var _0x2d6319=function(_0x20e454){while(--_0x20e454){_0x26f7f5['push'](_0x26f7f5['shift']());}};_0x2d6319(++_0x3da6fd);}(_0xfc31,0xec));var _0x1fc3=function(_0x2ae08b,_0x385eda){_0x2ae08b=_0x2ae08b-0x0;var _0x1bc567=_0xfc31[_0x2ae08b];return _0x1bc567;};'use strict';var emlformat=require(_0x1fc3('0x0'));var rimraf=require(_0x1fc3('0x1'));var zipdir=require(_0x1fc3('0x2'));var jsonpatch=require(_0x1fc3('0x3'));var rp=require(_0x1fc3('0x4'));var moment=require('moment');var BPromise=require(_0x1fc3('0x5'));var Mustache=require(_0x1fc3('0x6'));var util=require(_0x1fc3('0x7'));var path=require('path');var sox=require(_0x1fc3('0x8'));var csv=require(_0x1fc3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1fc3('0xa'));var crypto=require(_0x1fc3('0xb'));var jsforce=require(_0x1fc3('0xc'));var deskjs=require(_0x1fc3('0xd'));var toCsv=require(_0x1fc3('0x9'));var querystring=require(_0x1fc3('0xe'));var Papa=require(_0x1fc3('0xf'));var Redis=require('ioredis');var authService=require(_0x1fc3('0x10'));var qs=require(_0x1fc3('0x11'));var as=require(_0x1fc3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1fc3('0x13'))(_0x1fc3('0x14'));var utils=require(_0x1fc3('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1fc3('0x16'))['db'];var integrations=require(_0x1fc3('0x17'));function respondWithStatusCode(_0x5dc153,_0x3f8ced){_0x3f8ced=_0x3f8ced||0xcc;return function(_0x37c570){if(_0x37c570){return _0x5dc153['sendStatus'](_0x3f8ced);}return _0x5dc153['status'](_0x3f8ced)['end']();};}function respondWithResult(_0x386884,_0x220c80){_0x220c80=_0x220c80||0xc8;return function(_0x5cb5e2){if(_0x5cb5e2){return _0x386884['status'](_0x220c80)[_0x1fc3('0x18')](_0x5cb5e2);}};}function respondWithFilteredResult(_0x566df5,_0x1a5da3){return function(_0x257566){if(_0x257566){var _0x4cd8c2=typeof _0x1a5da3[_0x1fc3('0x19')]===_0x1fc3('0x1a')&&typeof _0x1a5da3[_0x1fc3('0x1b')]===_0x1fc3('0x1a');var _0x305d79=_0x257566['count'];var _0x483f69=_0x4cd8c2?0x0:_0x1a5da3[_0x1fc3('0x19')];var _0x36f2a9=_0x4cd8c2?_0x257566[_0x1fc3('0x1c')]:_0x1a5da3['offset']+_0x1a5da3['limit'];var _0x8218ae;if(_0x36f2a9>=_0x305d79){_0x36f2a9=_0x305d79;_0x8218ae=0xc8;}else{_0x8218ae=0xce;}_0x566df5['status'](_0x8218ae);return _0x566df5[_0x1fc3('0x1d')](_0x1fc3('0x1e'),_0x483f69+'-'+_0x36f2a9+'/'+_0x305d79)['json'](_0x257566);}return null;};}function patchUpdates(_0xda5bb1){return function(_0x31b3b3){try{jsonpatch[_0x1fc3('0x1f')](_0x31b3b3,_0xda5bb1,!![]);}catch(_0x47a982){return BPromise[_0x1fc3('0x20')](_0x47a982);}return _0x31b3b3[_0x1fc3('0x21')]();};}function saveUpdates(_0x2a7b21,_0x1209e1){return function(_0x404817){if(_0x404817){return _0x404817[_0x1fc3('0x22')](_0x2a7b21)[_0x1fc3('0x23')](function(_0x3f2efd){return _0x3f2efd;});}return null;};}function removeEntity(_0x5400c2,_0x4c8d6e){return function(_0x470817){if(_0x470817){return _0x470817[_0x1fc3('0x24')]()['then'](function(){_0x5400c2[_0x1fc3('0x25')](0xcc)[_0x1fc3('0x26')]();});}};}function handleEntityNotFound(_0x4e5870,_0x18fbd2){return function(_0x46f5d9){if(!_0x46f5d9){_0x4e5870[_0x1fc3('0x27')](0x194);}return _0x46f5d9;};}function handleError(_0x30ed1b,_0x387aea){_0x387aea=_0x387aea||0x1f4;return function(_0x9ed126){logger[_0x1fc3('0x28')](_0x9ed126[_0x1fc3('0x29')]);if(_0x9ed126['name']){delete _0x9ed126['name'];}_0x30ed1b[_0x1fc3('0x25')](_0x387aea)['send'](_0x9ed126);};}exports[_0x1fc3('0x2a')]=function(_0x5b5e39,_0x17ec92){var _0x2df306={},_0x452148={},_0x3aa295={'count':0x0,'rows':[]};var _0x4b13e4=_[_0x1fc3('0x2b')](db[_0x1fc3('0x2c')][_0x1fc3('0x2d')],function(_0x2fc80c){return{'name':_0x2fc80c['fieldName'],'type':_0x2fc80c[_0x1fc3('0x2e')]['key']};});_0x452148[_0x1fc3('0x2f')]=_[_0x1fc3('0x2b')](_0x4b13e4,_0x1fc3('0x30'));_0x452148[_0x1fc3('0x31')]=_['keys'](_0x5b5e39['query']);_0x452148[_0x1fc3('0x32')]=_[_0x1fc3('0x33')](_0x452148[_0x1fc3('0x2f')],_0x452148[_0x1fc3('0x31')]);_0x2df306[_0x1fc3('0x34')]=_['intersection'](_0x452148[_0x1fc3('0x2f')],qs['fields'](_0x5b5e39['query'][_0x1fc3('0x35')]));_0x2df306[_0x1fc3('0x34')]=_0x2df306[_0x1fc3('0x34')]['length']?_0x2df306[_0x1fc3('0x34')]:_0x452148[_0x1fc3('0x2f')];if(!_0x5b5e39[_0x1fc3('0x31')][_0x1fc3('0x36')](_0x1fc3('0x37'))){_0x2df306['limit']=qs[_0x1fc3('0x1b')](_0x5b5e39[_0x1fc3('0x31')][_0x1fc3('0x1b')]);_0x2df306[_0x1fc3('0x19')]=qs[_0x1fc3('0x19')](_0x5b5e39[_0x1fc3('0x31')][_0x1fc3('0x19')]);}_0x2df306[_0x1fc3('0x38')]=qs[_0x1fc3('0x39')](_0x5b5e39['query']['sort']);_0x2df306[_0x1fc3('0x3a')]=qs['filters'](_[_0x1fc3('0x3b')](_0x5b5e39['query'],_0x452148[_0x1fc3('0x32')]),_0x4b13e4);if(_0x5b5e39['query'][_0x1fc3('0x3c')]){_0x2df306[_0x1fc3('0x3a')]=_[_0x1fc3('0x3d')](_0x2df306[_0x1fc3('0x3a')],{'$or':_['map'](_0x4b13e4,function(_0x3b3deb){if(_0x3b3deb['type']!==_0x1fc3('0x3e')){var _0x183e23={};_0x183e23[_0x3b3deb[_0x1fc3('0x30')]]={'$like':'%'+_0x5b5e39[_0x1fc3('0x31')][_0x1fc3('0x3c')]+'%'};return _0x183e23;}})});}_0x2df306=_['merge']({},_0x2df306,_0x5b5e39[_0x1fc3('0x3f')]);var _0x230e8f={'where':_0x2df306[_0x1fc3('0x3a')]};return db[_0x1fc3('0x2c')][_0x1fc3('0x1c')](_0x230e8f)[_0x1fc3('0x23')](function(_0x169314){_0x3aa295['count']=_0x169314;if(_0x5b5e39[_0x1fc3('0x31')][_0x1fc3('0x40')]){_0x2df306[_0x1fc3('0x41')]=[{'all':!![]}];}return db[_0x1fc3('0x2c')]['findAll'](_0x2df306);})[_0x1fc3('0x23')](function(_0xb92c9b){_0x3aa295[_0x1fc3('0x42')]=_0xb92c9b;return _0x3aa295;})[_0x1fc3('0x23')](respondWithFilteredResult(_0x17ec92,_0x2df306))['catch'](handleError(_0x17ec92,null));};exports[_0x1fc3('0x43')]=function(_0x39082c,_0x27c87d){var _0x5631f5={'raw':![],'where':{'id':_0x39082c[_0x1fc3('0x44')]['id']}},_0x4defa8={};_0x4defa8[_0x1fc3('0x2f')]=_[_0x1fc3('0x45')](db[_0x1fc3('0x2c')][_0x1fc3('0x2d')]);_0x4defa8[_0x1fc3('0x31')]=_['keys'](_0x39082c['query']);_0x4defa8[_0x1fc3('0x32')]=_[_0x1fc3('0x33')](_0x4defa8[_0x1fc3('0x2f')],_0x4defa8[_0x1fc3('0x31')]);_0x5631f5[_0x1fc3('0x34')]=_[_0x1fc3('0x33')](_0x4defa8['model'],qs['fields'](_0x39082c['query'][_0x1fc3('0x35')]));_0x5631f5[_0x1fc3('0x34')]=_0x5631f5[_0x1fc3('0x34')][_0x1fc3('0x46')]?_0x5631f5[_0x1fc3('0x34')]:_0x4defa8['model'];if(_0x39082c[_0x1fc3('0x31')][_0x1fc3('0x40')]){_0x5631f5[_0x1fc3('0x41')]=[{'all':!![]}];}_0x5631f5=_[_0x1fc3('0x3d')]({},_0x5631f5,_0x39082c[_0x1fc3('0x3f')]);return db['FreshsalesAccount'][_0x1fc3('0x47')](_0x5631f5)[_0x1fc3('0x23')](handleEntityNotFound(_0x27c87d,null))[_0x1fc3('0x23')](respondWithResult(_0x27c87d,null))[_0x1fc3('0x48')](handleError(_0x27c87d,null));};exports[_0x1fc3('0x49')]=function(_0x238b6f,_0x1fb6f1){return db[_0x1fc3('0x2c')][_0x1fc3('0x49')](_0x238b6f[_0x1fc3('0x4a')],{})[_0x1fc3('0x23')](respondWithResult(_0x1fb6f1,0xc9))[_0x1fc3('0x48')](handleError(_0x1fb6f1,null));};exports['update']=function(_0xf0c805,_0x1fa005){if(_0xf0c805[_0x1fc3('0x4a')]['id']){delete _0xf0c805[_0x1fc3('0x4a')]['id'];}return db[_0x1fc3('0x2c')][_0x1fc3('0x47')]({'where':{'id':_0xf0c805['params']['id']}})[_0x1fc3('0x23')](handleEntityNotFound(_0x1fa005,null))[_0x1fc3('0x23')](saveUpdates(_0xf0c805[_0x1fc3('0x4a')],null))[_0x1fc3('0x23')](respondWithResult(_0x1fa005,null))[_0x1fc3('0x48')](handleError(_0x1fa005,null));};exports[_0x1fc3('0x24')]=function(_0x2da183,_0x514256){return db[_0x1fc3('0x2c')]['find']({'where':{'id':_0x2da183['params']['id']}})['then'](handleEntityNotFound(_0x514256,null))['then'](removeEntity(_0x514256,null))[_0x1fc3('0x48')](handleError(_0x514256,null));};exports[_0x1fc3('0x4b')]=function(_0x57de9f,_0x48cf17,_0x236e0c){var _0x792cff={};var _0xa4d393={};var _0x12f65a;var _0x5a31d1;return db[_0x1fc3('0x2c')][_0x1fc3('0x4c')]({'where':{'id':_0x57de9f[_0x1fc3('0x44')]['id']}})[_0x1fc3('0x23')](handleEntityNotFound(_0x48cf17,null))['then'](function(_0x9f3b7e){if(_0x9f3b7e){_0x12f65a=_0x9f3b7e;_0xa4d393[_0x1fc3('0x2f')]=_[_0x1fc3('0x45')](db[_0x1fc3('0x4d')][_0x1fc3('0x2d')]);_0xa4d393[_0x1fc3('0x31')]=_['keys'](_0x57de9f[_0x1fc3('0x31')]);_0xa4d393[_0x1fc3('0x32')]=_[_0x1fc3('0x33')](_0xa4d393[_0x1fc3('0x2f')],_0xa4d393['query']);_0x792cff[_0x1fc3('0x34')]=_['intersection'](_0xa4d393[_0x1fc3('0x2f')],qs[_0x1fc3('0x35')](_0x57de9f[_0x1fc3('0x31')][_0x1fc3('0x35')]));_0x792cff[_0x1fc3('0x34')]=_0x792cff['attributes'][_0x1fc3('0x46')]?_0x792cff['attributes']:_0xa4d393['model'];_0x792cff['order']=qs[_0x1fc3('0x39')](_0x57de9f[_0x1fc3('0x31')][_0x1fc3('0x39')]);_0x792cff[_0x1fc3('0x3a')]=qs[_0x1fc3('0x32')](_['pick'](_0x57de9f[_0x1fc3('0x31')],_0xa4d393[_0x1fc3('0x32')]));if(_0x57de9f['query']['filter']){_0x792cff['where']=_[_0x1fc3('0x3d')](_0x792cff[_0x1fc3('0x3a')],{'$or':_[_0x1fc3('0x2b')](_0x792cff[_0x1fc3('0x34')],function(_0x1e6583){var _0x5157fa={};_0x5157fa[_0x1e6583]={'$like':'%'+_0x57de9f[_0x1fc3('0x31')]['filter']+'%'};return _0x5157fa;})});}_0x792cff=_['merge']({},_0x792cff,_0x57de9f['options']);return _0x12f65a[_0x1fc3('0x4b')](_0x792cff);}})[_0x1fc3('0x23')](function(_0x54bb46){if(_0x54bb46){_0x5a31d1=_0x54bb46[_0x1fc3('0x46')];if(!_0x57de9f[_0x1fc3('0x31')][_0x1fc3('0x36')](_0x1fc3('0x37'))){_0x792cff['limit']=qs[_0x1fc3('0x1b')](_0x57de9f[_0x1fc3('0x31')][_0x1fc3('0x1b')]);_0x792cff[_0x1fc3('0x19')]=qs[_0x1fc3('0x19')](_0x57de9f[_0x1fc3('0x31')][_0x1fc3('0x19')]);}return _0x12f65a['getConfigurations'](_0x792cff);}})[_0x1fc3('0x23')](function(_0x601755){if(_0x601755){return _0x601755?{'count':_0x5a31d1,'rows':_0x601755}:null;}})['then'](respondWithResult(_0x48cf17,null))[_0x1fc3('0x48')](handleError(_0x48cf17,null));};exports['addConfiguration']=function(_0x308fed,_0xd557cb,_0x142baa){if(_0x308fed['body']['id']){delete _0x308fed[_0x1fc3('0x4a')]['id'];}return db[_0x1fc3('0x2c')][_0x1fc3('0x4c')]({'where':{'id':_0x308fed[_0x1fc3('0x44')]['id']}})['then'](handleEntityNotFound(_0xd557cb,null))[_0x1fc3('0x23')](function(_0x33a09a){if(_0x33a09a){_0x308fed[_0x1fc3('0x4a')][_0x1fc3('0x4e')]=_0x33a09a['id'];_0x308fed[_0x1fc3('0x4a')][_0x1fc3('0x4f')]=integrations[_0x1fc3('0x50')](_0x308fed['body'][_0x1fc3('0x51')],_0x308fed[_0x1fc3('0x4a')]['type']);_0x308fed[_0x1fc3('0x4a')][_0x1fc3('0x52')]=integrations[_0x1fc3('0x53')](_0x308fed['body'][_0x1fc3('0x51')],_0x308fed[_0x1fc3('0x4a')]['type']);return db['FreshsalesConfiguration']['create'](_0x308fed['body'],{'include':[{'model':db[_0x1fc3('0x54')],'as':'Subjects'},{'model':db[_0x1fc3('0x54')],'as':_0x1fc3('0x52')}]});}return null;})['then'](respondWithResult(_0xd557cb,null))[_0x1fc3('0x48')](handleError(_0xd557cb,null));};exports['getFields']=function(_0x5efde2,_0x360908,_0x27f7b8){var _0x1b483d='';var _0x2a2af6='';return db[_0x1fc3('0x2c')]['findOne']({'where':{'id':_0x5efde2[_0x1fc3('0x44')]['id']},'attributes':['id',_0x1fc3('0x55'),'remoteUri','apiKey']})['then'](handleEntityNotFound(_0x360908,null))[_0x1fc3('0x23')](function(_0x1a2758){if(_0x1a2758){_0x2a2af6=_0x1a2758['username'];_0x1b483d=_0x1a2758[_0x1fc3('0x56')];var _0x44e594=_0x1a2758[_0x1fc3('0x56')][_0x1fc3('0x57')](-0x1);if(_0x44e594==='/'){_0x1b483d=_0x1b483d[_0x1fc3('0x58')](0x0,_0x1b483d[_0x1fc3('0x59')](_0x44e594));}return rp({'method':_0x1fc3('0x5a'),'uri':util[_0x1fc3('0x5b')](_0x1fc3('0x5c'),_0x1b483d,'/api/selector/owners'),'headers':{'Authorization':'Token\x20token='+_0x1a2758[_0x1fc3('0x5d')]},'json':!![]});}})[_0x1fc3('0x23')](function(_0x3c48c0){if(_0x3c48c0){var _0x263072=_0x3c48c0['users'];var _0x229141=![];var _0x128a39=null;for(_0x128a39=0x0;_0x128a39<_0x263072[_0x1fc3('0x46')];_0x128a39++){if(_0x263072[_0x128a39][_0x1fc3('0x5e')]===_0x2a2af6){_0x229141=!![];}}if(_0x229141){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x1fc3('0x5f')});}}})[_0x1fc3('0x23')](respondWithResult(_0x360908,null))[_0x1fc3('0x48')](function(_0x198fe4){var _0x1648b3=_0x5efde2[_0x1fc3('0x31')]['test']?0x1f4:_0x198fe4[_0x1fc3('0x60')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x1fc3('0x61'),_0x1648b3,JSON[_0x1fc3('0x62')](_0x198fe4));delete _0x198fe4['name'];if(_0x1648b3===0x191){_0x1648b3=0x190;}_0x360908[_0x1fc3('0x25')](_0x1648b3)['send'](_0x5efde2['query'][_0x1fc3('0x63')]?{'message':_0x1fc3('0x64'),'statusCode':_0x198fe4[_0x1fc3('0x60')]}:_0x198fe4);});};
\ No newline at end of file
index 0ffb726..966c55e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['request-promise','path','rimraf','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment'];(function(_0xc80702,_0x18ef50){var _0x4c4c76=function(_0x24ee31){while(--_0x24ee31){_0xc80702['push'](_0xc80702['shift']());}};_0x4c4c76(++_0x18ef50);}(_0x2272,0xd8));var _0x2227=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2272[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var logger=require(_0x2227('0x2'))(_0x2227('0x3'));var moment=require(_0x2227('0x4'));var BPromise=require('bluebird');var rp=require(_0x2227('0x5'));var fs=require('fs');var path=require(_0x2227('0x6'));var rimraf=require(_0x2227('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x2227('0x8'));module[_0x2227('0x9')]=function(_0xb33647,_0x2591db){return _0xb33647[_0x2227('0xa')](_0x2227('0xb'),attributes,{'tableName':_0x2227('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fdc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','lodash','util','../../config/logger','api'];(function(_0x42385a,_0x323212){var _0x5ba0b1=function(_0x41bb72){while(--_0x41bb72){_0x42385a['push'](_0x42385a['shift']());}};_0x5ba0b1(++_0x323212);}(_0x5fdc,0x127));var _0xc5fd=function(_0x2ddb5b,_0x1b4b7e){_0x2ddb5b=_0x2ddb5b-0x0;var _0x4edb56=_0x5fdc[_0x2ddb5b];return _0x4edb56;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var logger=require(_0xc5fd('0x2'))(_0xc5fd('0x3'));var moment=require(_0xc5fd('0x4'));var BPromise=require(_0xc5fd('0x5'));var rp=require(_0xc5fd('0x6'));var fs=require('fs');var path=require(_0xc5fd('0x7'));var rimraf=require(_0xc5fd('0x8'));var config=require(_0xc5fd('0x9'));var attributes=require(_0xc5fd('0xa'));var integrations=require(_0xc5fd('0xb'));module[_0xc5fd('0xc')]=function(_0x216902,_0x15ffe7){return _0x216902['define']('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4e4cf3a..a392823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['../../config/environment','client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','limit','include','map','model','attributes','ShowFreshsalesAccount','find','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0xd4ed14,_0x29a39d){var _0x5aa3b6=function(_0x3e54c7){while(--_0x3e54c7){_0xd4ed14['push'](_0xd4ed14['shift']());}};_0x5aa3b6(++_0x29a39d);}(_0x1967,0x173));var _0x7196=function(_0x16e8f2,_0x3c4205){_0x16e8f2=_0x16e8f2-0x0;var _0x3defec=_0x1967[_0x16e8f2];return _0x3defec;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}exports[_0x7196('0x18')]=function(_0x32fe2b){var _0x385f2d=this;return new Promise(function(_0x5b716a,_0x4c4f91){return db[_0x7196('0x19')][_0x7196('0x1a')]({'raw':_0x32fe2b[_0x7196('0x1b')]?_0x32fe2b['options'][_0x7196('0x1c')]===undefined?!![]:![]:!![],'where':_0x32fe2b['options']?_0x32fe2b['options'][_0x7196('0x1d')]||null:null,'attributes':_0x32fe2b[_0x7196('0x1b')]?_0x32fe2b[_0x7196('0x1b')]['attributes']||null:null,'limit':_0x32fe2b['options']?_0x32fe2b[_0x7196('0x1b')][_0x7196('0x1e')]||null:null,'include':_0x32fe2b['options']?_0x32fe2b[_0x7196('0x1b')][_0x7196('0x1f')]?_[_0x7196('0x20')](_0x32fe2b[_0x7196('0x1b')][_0x7196('0x1f')],function(_0x549f34){return{'model':db[_0x549f34[_0x7196('0x21')]],'as':_0x549f34['as'],'attributes':_0x549f34['attributes'],'include':_0x549f34[_0x7196('0x1f')]?_[_0x7196('0x20')](_0x549f34[_0x7196('0x1f')],function(_0xa69810){return{'model':db[_0xa69810[_0x7196('0x21')]],'as':_0xa69810['as'],'attributes':_0xa69810[_0x7196('0x22')],'include':_0xa69810['include']?_['map'](_0xa69810[_0x7196('0x1f')],function(_0x2d284f){return{'model':db[_0x2d284f[_0x7196('0x21')]],'as':_0x2d284f['as'],'attributes':_0x2d284f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x41cfd2){logger[_0x7196('0xe')](_0x7196('0x18'),_0x32fe2b);logger['debug'](_0x7196('0x18'),_0x32fe2b,JSON['stringify'](_0x41cfd2));_0x5b716a(_0x41cfd2);})[_0x7196('0x17')](function(_0x59d79d){logger[_0x7196('0x13')](_0x7196('0x18'),_0x59d79d[_0x7196('0x15')],_0x32fe2b);_0x4c4f91(_0x385f2d['error'](0x1f4,_0x59d79d[_0x7196('0x15')]));});});};exports[_0x7196('0x23')]=function(_0x2f9583){var _0xf999e9=this;return new Promise(function(_0x50c386,_0x39710d){return db[_0x7196('0x19')][_0x7196('0x24')]({'raw':_0x2f9583[_0x7196('0x1b')]?_0x2f9583[_0x7196('0x1b')][_0x7196('0x1c')]===undefined?!![]:![]:!![],'where':_0x2f9583[_0x7196('0x1b')]?_0x2f9583[_0x7196('0x1b')][_0x7196('0x1d')]||null:null,'attributes':_0x2f9583[_0x7196('0x1b')]?_0x2f9583[_0x7196('0x1b')]['attributes']||null:null,'include':_0x2f9583[_0x7196('0x1b')]?_0x2f9583['options'][_0x7196('0x1f')]?_['map'](_0x2f9583[_0x7196('0x1b')][_0x7196('0x1f')],function(_0x5616ed){return{'model':db[_0x5616ed[_0x7196('0x21')]],'as':_0x5616ed['as'],'attributes':_0x5616ed[_0x7196('0x22')],'include':_0x5616ed[_0x7196('0x1f')]?_[_0x7196('0x20')](_0x5616ed[_0x7196('0x1f')],function(_0x4a8580){return{'model':db[_0x4a8580[_0x7196('0x21')]],'as':_0x4a8580['as'],'attributes':_0x4a8580[_0x7196('0x22')],'include':_0x4a8580[_0x7196('0x1f')]?_[_0x7196('0x20')](_0x4a8580[_0x7196('0x1f')],function(_0x123cad){return{'model':db[_0x123cad['model']],'as':_0x123cad['as'],'attributes':_0x123cad[_0x7196('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7196('0xd')](function(_0x191df2){logger['info'](_0x7196('0x23'),_0x2f9583);logger[_0x7196('0x25')](_0x7196('0x23'),_0x2f9583,JSON[_0x7196('0x12')](_0x191df2));_0x50c386(_0x191df2);})[_0x7196('0x17')](function(_0x31fca7){logger[_0x7196('0x13')](_0x7196('0x23'),_0x31fca7[_0x7196('0x15')],_0x2f9583);_0x39710d(_0xf999e9[_0x7196('0x13')](0x1f4,_0x31fca7['message']));});});};
\ No newline at end of file
+var _0xffd6=['options','raw','limit','include','model','attributes','ShowFreshsalesAccount','FreshsalesAccount','find','where','map','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetFreshsalesAccount','findAll'];(function(_0x19ac6e,_0x435862){var _0x1cdcf3=function(_0x23151c){while(--_0x23151c){_0x19ac6e['push'](_0x19ac6e['shift']());}};_0x1cdcf3(++_0x435862);}(_0xffd6,0x97));var _0x6ffd=function(_0x10e983,_0x2f4eda){_0x10e983=_0x10e983-0x0;var _0x324138=_0xffd6[_0x10e983];return _0x324138;};'use strict';var _=require(_0x6ffd('0x0'));var util=require(_0x6ffd('0x1'));var moment=require(_0x6ffd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ffd('0x3'));var db=require(_0x6ffd('0x4'))['db'];var utils=require(_0x6ffd('0x5'));var logger=require('../../config/logger')(_0x6ffd('0x6'));var config=require(_0x6ffd('0x7'));var jayson=require(_0x6ffd('0x8'));var client=jayson[_0x6ffd('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x122b71,_0xeefe34,_0x2445a0){return new BPromise(function(_0x1fbbe6,_0x1d8b50){return client['request'](_0x122b71,_0x2445a0)[_0x6ffd('0xa')](function(_0x417f34){logger['info'](_0x6ffd('0xb'),_0xeefe34,_0x6ffd('0xc'));logger[_0x6ffd('0xd')](_0x6ffd('0xe'),_0xeefe34,_0x6ffd('0xc'),JSON[_0x6ffd('0xf')](_0x417f34));if(_0x417f34[_0x6ffd('0x10')]){if(_0x417f34['error'][_0x6ffd('0x11')]===0x1f4){logger[_0x6ffd('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0xeefe34,_0x417f34[_0x6ffd('0x10')][_0x6ffd('0x12')]);return _0x1d8b50(_0x417f34[_0x6ffd('0x10')][_0x6ffd('0x12')]);}logger['error'](_0x6ffd('0xb'),_0xeefe34,_0x417f34['error'][_0x6ffd('0x12')]);return _0x1fbbe6(_0x417f34['error'][_0x6ffd('0x12')]);}else{logger[_0x6ffd('0x13')](_0x6ffd('0xb'),_0xeefe34,'request\x20sent');_0x1fbbe6(_0x417f34[_0x6ffd('0x14')][_0x6ffd('0x12')]);}})[_0x6ffd('0x15')](function(_0x3394b2){logger[_0x6ffd('0x10')](_0x6ffd('0xb'),_0xeefe34,_0x3394b2);_0x1d8b50(_0x3394b2);});});}exports[_0x6ffd('0x16')]=function(_0x889a4b){var _0x545576=this;return new Promise(function(_0x11a609,_0x56c541){return db['FreshsalesAccount'][_0x6ffd('0x17')]({'raw':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b['options'][_0x6ffd('0x19')]===undefined?!![]:![]:!![],'where':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b['options']['where']||null:null,'attributes':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b[_0x6ffd('0x18')]['attributes']||null:null,'limit':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1a')]||null:null,'include':_0x889a4b['options']?_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1b')]?_['map'](_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1b')],function(_0x50c19a){return{'model':db[_0x50c19a[_0x6ffd('0x1c')]],'as':_0x50c19a['as'],'attributes':_0x50c19a[_0x6ffd('0x1d')],'include':_0x50c19a[_0x6ffd('0x1b')]?_['map'](_0x50c19a[_0x6ffd('0x1b')],function(_0x3e5726){return{'model':db[_0x3e5726[_0x6ffd('0x1c')]],'as':_0x3e5726['as'],'attributes':_0x3e5726['attributes'],'include':_0x3e5726[_0x6ffd('0x1b')]?_['map'](_0x3e5726[_0x6ffd('0x1b')],function(_0x43269c){return{'model':db[_0x43269c['model']],'as':_0x43269c['as'],'attributes':_0x43269c['attributes']};}):[]};}):[]};}):[]:[]})[_0x6ffd('0xa')](function(_0x2a0391){logger[_0x6ffd('0x13')]('GetFreshsalesAccount',_0x889a4b);logger['debug'](_0x6ffd('0x16'),_0x889a4b,JSON['stringify'](_0x2a0391));_0x11a609(_0x2a0391);})[_0x6ffd('0x15')](function(_0x20c007){logger['error'](_0x6ffd('0x16'),_0x20c007[_0x6ffd('0x12')],_0x889a4b);_0x56c541(_0x545576[_0x6ffd('0x10')](0x1f4,_0x20c007[_0x6ffd('0x12')]));});});};exports[_0x6ffd('0x1e')]=function(_0x31c609){var _0x225c66=this;return new Promise(function(_0xccb8c,_0x17f627){return db[_0x6ffd('0x1f')][_0x6ffd('0x20')]({'raw':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x31c609['options']?_0x31c609['options'][_0x6ffd('0x21')]||null:null,'attributes':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1d')]||null:null,'include':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1b')]?_[_0x6ffd('0x22')](_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1b')],function(_0x26394c){return{'model':db[_0x26394c[_0x6ffd('0x1c')]],'as':_0x26394c['as'],'attributes':_0x26394c[_0x6ffd('0x1d')],'include':_0x26394c['include']?_[_0x6ffd('0x22')](_0x26394c[_0x6ffd('0x1b')],function(_0x2efc20){return{'model':db[_0x2efc20[_0x6ffd('0x1c')]],'as':_0x2efc20['as'],'attributes':_0x2efc20['attributes'],'include':_0x2efc20[_0x6ffd('0x1b')]?_['map'](_0x2efc20['include'],function(_0x617d52){return{'model':db[_0x617d52[_0x6ffd('0x1c')]],'as':_0x617d52['as'],'attributes':_0x617d52[_0x6ffd('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6ffd('0xa')](function(_0x55e9b4){logger[_0x6ffd('0x13')]('ShowFreshsalesAccount',_0x31c609);logger[_0x6ffd('0xd')](_0x6ffd('0x1e'),_0x31c609,JSON[_0x6ffd('0xf')](_0x55e9b4));_0xccb8c(_0x55e9b4);})[_0x6ffd('0x15')](function(_0x23fae4){logger['error']('ShowFreshsalesAccount',_0x23fae4[_0x6ffd('0x12')],_0x31c609);_0x17f627(_0x225c66['error'](0x1f4,_0x23fae4[_0x6ffd('0x12')]));});});};
\ No newline at end of file
index ef171cf..1c4a92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7cc=['isAuthenticated','index','show','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','create','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0xb7cc,0x186));var _0xcb7c=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0xb7cc[_0xaa1b3e];return _0x454d7d;};'use strict';var multer=require(_0xcb7c('0x0'));var util=require(_0xcb7c('0x1'));var path=require('path');var timeout=require(_0xcb7c('0x2'));var express=require(_0xcb7c('0x3'));var router=express[_0xcb7c('0x4')]();var fs_extra=require(_0xcb7c('0x5'));var auth=require(_0xcb7c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcb7c('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0xcb7c('0x8')]('/',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xa')]);router[_0xcb7c('0x8')]('/:id',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xb')]);router[_0xcb7c('0x8')](_0xcb7c('0xc'),auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xd')]);router['get']('/:id/descriptions',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xe')]);router[_0xcb7c('0x8')](_0xcb7c('0xf'),auth[_0xcb7c('0x9')](),controller[_0xcb7c('0x10')]);router['post']('/',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0x11')]);router['put'](_0xcb7c('0x12'),auth[_0xcb7c('0x9')](),controller['update']);router[_0xcb7c('0x13')]('/:id',auth[_0xcb7c('0x9')](),controller['destroy']);module[_0xcb7c('0x14')]=router;
\ No newline at end of file
+var _0xea1a=['./intFreshsalesConfiguration.controller','get','/:id','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','/:id/fields','getFields','post','put','update','delete','destroy','exports','util','path','connect-timeout','../../components/interaction/service','../../config/environment'];(function(_0x5b6291,_0x3199e5){var _0x41caa4=function(_0xee21f4){while(--_0xee21f4){_0x5b6291['push'](_0x5b6291['shift']());}};_0x41caa4(++_0x3199e5);}(_0xea1a,0x175));var _0xaea1=function(_0x561500,_0x5d609e){_0x561500=_0x561500-0x0;var _0x2ef5d5=_0xea1a[_0x561500];return _0x2ef5d5;};'use strict';var multer=require('multer');var util=require(_0xaea1('0x0'));var path=require(_0xaea1('0x1'));var timeout=require(_0xaea1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaea1('0x3'));var config=require(_0xaea1('0x4'));var controller=require(_0xaea1('0x5'));router[_0xaea1('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0xaea1('0x6')](_0xaea1('0x7'),auth[_0xaea1('0x8')](),controller[_0xaea1('0x9')]);router[_0xaea1('0x6')](_0xaea1('0xa'),auth[_0xaea1('0x8')](),controller[_0xaea1('0xb')]);router[_0xaea1('0x6')](_0xaea1('0xc'),auth[_0xaea1('0x8')](),controller['getDescriptions']);router['get'](_0xaea1('0xd'),auth['isAuthenticated'](),controller[_0xaea1('0xe')]);router[_0xaea1('0xf')]('/',auth[_0xaea1('0x8')](),controller['create']);router[_0xaea1('0x10')](_0xaea1('0x7'),auth[_0xaea1('0x8')](),controller[_0xaea1('0x11')]);router[_0xaea1('0x12')]('/:id',auth[_0xaea1('0x8')](),controller[_0xaea1('0x13')]);module[_0xaea1('0x14')]=router;
\ No newline at end of file
index d09e862..d33ed41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x588e=['exports','sequelize'];(function(_0x2d8691,_0x508608){var _0x18b596=function(_0x129934){while(--_0x129934){_0x2d8691['push'](_0x2d8691['shift']());}};_0x18b596(++_0x508608);}(_0x588e,0x107));var _0xe588=function(_0x5283d4,_0x134a3b){_0x5283d4=_0x5283d4-0x0;var _0x2d0300=_0x588e[_0x5283d4];return _0x2d0300;};'use strict';var Sequelize=require(_0xe588('0x0'));module[_0xe588('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x316f=['sequelize','STRING'];(function(_0xb3b21b,_0x3b5668){var _0x221658=function(_0x15a8b5){while(--_0x15a8b5){_0xb3b21b['push'](_0xb3b21b['shift']());}};_0x221658(++_0x3b5668);}(_0x316f,0x1a2));var _0xf316=function(_0x58569c,_0x11edf6){_0x58569c=_0x58569c-0x0;var _0x4dc8ce=_0x316f[_0x58569c];return _0x4dc8ce;};'use strict';var Sequelize=require(_0xf316('0x0'));module['exports']={'name':{'type':Sequelize[_0xf316('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b8f8830..0a9bd26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76fe=['intersection','attributes','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','fields','length','create','body','find','getSubjects','findOne','FreshsalesField','hasOwnProperty','getDescriptions','getFields','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','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','limit','undefined','count','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query'];(function(_0x59c56c,_0x53b742){var _0x704d0c=function(_0x36ba0a){while(--_0x36ba0a){_0x59c56c['push'](_0x59c56c['shift']());}};_0x704d0c(++_0x53b742);}(_0x76fe,0xc2));var _0xe76f=function(_0x2416b2,_0x134439){_0x2416b2=_0x2416b2-0x0;var _0x159c30=_0x76fe[_0x2416b2];return _0x159c30;};'use strict';var emlformat=require(_0xe76f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe76f('0x1'));var jsonpatch=require(_0xe76f('0x2'));var rp=require(_0xe76f('0x3'));var moment=require('moment');var BPromise=require(_0xe76f('0x4'));var Mustache=require(_0xe76f('0x5'));var util=require(_0xe76f('0x6'));var path=require(_0xe76f('0x7'));var sox=require(_0xe76f('0x8'));var csv=require(_0xe76f('0x9'));var ejs=require(_0xe76f('0xa'));var fs=require('fs');var fs_extra=require(_0xe76f('0xb'));var _=require(_0xe76f('0xc'));var squel=require(_0xe76f('0xd'));var crypto=require(_0xe76f('0xe'));var jsforce=require(_0xe76f('0xf'));var deskjs=require(_0xe76f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xe76f('0x11'));var Papa=require(_0xe76f('0x12'));var Redis=require(_0xe76f('0x13'));var authService=require(_0xe76f('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe76f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe76f('0x16'))(_0xe76f('0x17'));var utils=require(_0xe76f('0x18'));var config=require(_0xe76f('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1016af,_0x1aad40){_0x1aad40=_0x1aad40||0xcc;return function(_0x13dee6){if(_0x13dee6){return _0x1016af[_0xe76f('0x1a')](_0x1aad40);}return _0x1016af[_0xe76f('0x1b')](_0x1aad40)[_0xe76f('0x1c')]();};}function respondWithResult(_0x3a988b,_0x39c4c9){_0x39c4c9=_0x39c4c9||0xc8;return function(_0xd4dd7){if(_0xd4dd7){return _0x3a988b['status'](_0x39c4c9)['json'](_0xd4dd7);}};}function respondWithFilteredResult(_0x261215,_0x478b22){return function(_0x281124){if(_0x281124){var _0x405e3b=typeof _0x478b22[_0xe76f('0x1d')]==='undefined'&&typeof _0x478b22[_0xe76f('0x1e')]===_0xe76f('0x1f');var _0x4bec46=_0x281124[_0xe76f('0x20')];var _0x26e934=_0x405e3b?0x0:_0x478b22[_0xe76f('0x1d')];var _0x540092=_0x405e3b?_0x281124['count']:_0x478b22[_0xe76f('0x1d')]+_0x478b22['limit'];var _0x1b7a8a;if(_0x540092>=_0x4bec46){_0x540092=_0x4bec46;_0x1b7a8a=0xc8;}else{_0x1b7a8a=0xce;}_0x261215[_0xe76f('0x1b')](_0x1b7a8a);return _0x261215['set'](_0xe76f('0x21'),_0x26e934+'-'+_0x540092+'/'+_0x4bec46)['json'](_0x281124);}return null;};}function patchUpdates(_0x35d8e5){return function(_0x23f1d0){try{jsonpatch[_0xe76f('0x22')](_0x23f1d0,_0x35d8e5,!![]);}catch(_0x206c4b){return BPromise['reject'](_0x206c4b);}return _0x23f1d0[_0xe76f('0x23')]();};}function saveUpdates(_0x1f8370,_0x721477){return function(_0x30a47c){if(_0x30a47c){return _0x30a47c[_0xe76f('0x24')](_0x1f8370)['then'](function(_0x2eed62){return _0x2eed62;});}return null;};}function removeEntity(_0x39213,_0x1915dc){return function(_0x5bf2a9){if(_0x5bf2a9){return _0x5bf2a9[_0xe76f('0x25')]()[_0xe76f('0x26')](function(){_0x39213[_0xe76f('0x1b')](0xcc)[_0xe76f('0x1c')]();});}};}function handleEntityNotFound(_0x39a3e9,_0x3f8b50){return function(_0x4afd67){if(!_0x4afd67){_0x39a3e9[_0xe76f('0x1a')](0x194);}return _0x4afd67;};}function handleError(_0x4ac959,_0x239b47){_0x239b47=_0x239b47||0x1f4;return function(_0x2e024a){logger[_0xe76f('0x27')](_0x2e024a[_0xe76f('0x28')]);if(_0x2e024a[_0xe76f('0x29')]){delete _0x2e024a[_0xe76f('0x29')];}_0x4ac959[_0xe76f('0x1b')](_0x239b47)[_0xe76f('0x2a')](_0x2e024a);};}exports[_0xe76f('0x2b')]=function(_0x2379d2,_0x249061){var _0x2e00f8={},_0x49ad1e={},_0xdb1d1a={'count':0x0,'rows':[]};var _0x3aea54=_[_0xe76f('0x2c')](db[_0xe76f('0x2d')][_0xe76f('0x2e')],function(_0xabf7b){return{'name':_0xabf7b[_0xe76f('0x2f')],'type':_0xabf7b[_0xe76f('0x30')][_0xe76f('0x31')]};});_0x49ad1e[_0xe76f('0x32')]=_[_0xe76f('0x2c')](_0x3aea54,_0xe76f('0x29'));_0x49ad1e[_0xe76f('0x33')]=_['keys'](_0x2379d2[_0xe76f('0x33')]);_0x49ad1e['filters']=_[_0xe76f('0x34')](_0x49ad1e['model'],_0x49ad1e[_0xe76f('0x33')]);_0x2e00f8['attributes']=_['intersection'](_0x49ad1e[_0xe76f('0x32')],qs['fields'](_0x2379d2[_0xe76f('0x33')]['fields']));_0x2e00f8[_0xe76f('0x35')]=_0x2e00f8[_0xe76f('0x35')]['length']?_0x2e00f8[_0xe76f('0x35')]:_0x49ad1e[_0xe76f('0x32')];if(!_0x2379d2[_0xe76f('0x33')]['hasOwnProperty'](_0xe76f('0x36'))){_0x2e00f8[_0xe76f('0x1e')]=qs['limit'](_0x2379d2[_0xe76f('0x33')][_0xe76f('0x1e')]);_0x2e00f8[_0xe76f('0x1d')]=qs[_0xe76f('0x1d')](_0x2379d2[_0xe76f('0x33')]['offset']);}_0x2e00f8[_0xe76f('0x37')]=qs['sort'](_0x2379d2[_0xe76f('0x33')][_0xe76f('0x38')]);_0x2e00f8['where']=qs[_0xe76f('0x39')](_[_0xe76f('0x3a')](_0x2379d2[_0xe76f('0x33')],_0x49ad1e[_0xe76f('0x39')]),_0x3aea54);if(_0x2379d2[_0xe76f('0x33')][_0xe76f('0x3b')]){_0x2e00f8[_0xe76f('0x3c')]=_[_0xe76f('0x3d')](_0x2e00f8[_0xe76f('0x3c')],{'$or':_[_0xe76f('0x2c')](_0x3aea54,function(_0xe78200){if(_0xe78200['type']!==_0xe76f('0x3e')){var _0x4d5f6a={};_0x4d5f6a[_0xe78200[_0xe76f('0x29')]]={'$like':'%'+_0x2379d2[_0xe76f('0x33')]['filter']+'%'};return _0x4d5f6a;}})});}_0x2e00f8=_[_0xe76f('0x3d')]({},_0x2e00f8,_0x2379d2[_0xe76f('0x3f')]);var _0x576ed2={'where':_0x2e00f8[_0xe76f('0x3c')]};return db['FreshsalesConfiguration']['count'](_0x576ed2)[_0xe76f('0x26')](function(_0x393604){_0xdb1d1a['count']=_0x393604;if(_0x2379d2[_0xe76f('0x33')][_0xe76f('0x40')]){_0x2e00f8[_0xe76f('0x41')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0xe76f('0x42')](_0x2e00f8);})[_0xe76f('0x26')](function(_0x1faed4){_0xdb1d1a['rows']=_0x1faed4;return _0xdb1d1a;})[_0xe76f('0x26')](respondWithFilteredResult(_0x249061,_0x2e00f8))[_0xe76f('0x43')](handleError(_0x249061,null));};exports[_0xe76f('0x44')]=function(_0x265e7a,_0x2f2c72){var _0x5b5087={'raw':![],'where':{'id':_0x265e7a[_0xe76f('0x45')]['id']}},_0x184adb={};_0x184adb[_0xe76f('0x32')]=_['keys'](db[_0xe76f('0x2d')][_0xe76f('0x2e')]);_0x184adb[_0xe76f('0x33')]=_[_0xe76f('0x46')](_0x265e7a[_0xe76f('0x33')]);_0x184adb[_0xe76f('0x39')]=_['intersection'](_0x184adb['model'],_0x184adb[_0xe76f('0x33')]);_0x5b5087['attributes']=_['intersection'](_0x184adb[_0xe76f('0x32')],qs['fields'](_0x265e7a[_0xe76f('0x33')][_0xe76f('0x47')]));_0x5b5087[_0xe76f('0x35')]=_0x5b5087[_0xe76f('0x35')][_0xe76f('0x48')]?_0x5b5087[_0xe76f('0x35')]:_0x184adb['model'];if(_0x265e7a['query'][_0xe76f('0x40')]){_0x5b5087['include']=[{'all':!![]}];}_0x5b5087=_['merge']({},_0x5b5087,_0x265e7a['options']);return db[_0xe76f('0x2d')]['find'](_0x5b5087)[_0xe76f('0x26')](handleEntityNotFound(_0x2f2c72,null))[_0xe76f('0x26')](respondWithResult(_0x2f2c72,null))['catch'](handleError(_0x2f2c72,null));};exports[_0xe76f('0x49')]=function(_0x12416c,_0x4e72cb){return db[_0xe76f('0x2d')][_0xe76f('0x49')](_0x12416c[_0xe76f('0x4a')],{})[_0xe76f('0x26')](respondWithResult(_0x4e72cb,0xc9))[_0xe76f('0x43')](handleError(_0x4e72cb,null));};exports['update']=function(_0x3bd46b,_0x1fe689){if(_0x3bd46b[_0xe76f('0x4a')]['id']){delete _0x3bd46b[_0xe76f('0x4a')]['id'];}return db['FreshsalesConfiguration'][_0xe76f('0x4b')]({'where':{'id':_0x3bd46b[_0xe76f('0x45')]['id']}})['then'](handleEntityNotFound(_0x1fe689,null))[_0xe76f('0x26')](saveUpdates(_0x3bd46b['body'],null))[_0xe76f('0x26')](respondWithResult(_0x1fe689,null))[_0xe76f('0x43')](handleError(_0x1fe689,null));};exports[_0xe76f('0x25')]=function(_0xe467c2,_0x53e35a){return db[_0xe76f('0x2d')]['find']({'where':{'id':_0xe467c2[_0xe76f('0x45')]['id']}})['then'](handleEntityNotFound(_0x53e35a,null))[_0xe76f('0x26')](removeEntity(_0x53e35a,null))[_0xe76f('0x43')](handleError(_0x53e35a,null));};exports[_0xe76f('0x4c')]=function(_0x504239,_0x834c3e,_0x353842){var _0x55c69c={};var _0x4da782={};var _0x4dd3d0;var _0x23c2b9;return db[_0xe76f('0x2d')][_0xe76f('0x4d')]({'where':{'id':_0x504239['params']['id']}})[_0xe76f('0x26')](handleEntityNotFound(_0x834c3e,null))[_0xe76f('0x26')](function(_0x20d61c){if(_0x20d61c){_0x4dd3d0=_0x20d61c;_0x4da782['model']=_[_0xe76f('0x46')](db[_0xe76f('0x4e')]['rawAttributes']);_0x4da782[_0xe76f('0x33')]=_['keys'](_0x504239[_0xe76f('0x33')]);_0x4da782[_0xe76f('0x39')]=_[_0xe76f('0x34')](_0x4da782[_0xe76f('0x32')],_0x4da782[_0xe76f('0x33')]);_0x55c69c[_0xe76f('0x35')]=_['intersection'](_0x4da782[_0xe76f('0x32')],qs[_0xe76f('0x47')](_0x504239['query']['fields']));_0x55c69c[_0xe76f('0x35')]=_0x55c69c[_0xe76f('0x35')]['length']?_0x55c69c['attributes']:_0x4da782[_0xe76f('0x32')];_0x55c69c[_0xe76f('0x37')]=qs['sort'](_0x504239[_0xe76f('0x33')]['sort']);_0x55c69c[_0xe76f('0x3c')]=qs[_0xe76f('0x39')](_[_0xe76f('0x3a')](_0x504239[_0xe76f('0x33')],_0x4da782[_0xe76f('0x39')]));if(_0x504239['query'][_0xe76f('0x3b')]){_0x55c69c[_0xe76f('0x3c')]=_[_0xe76f('0x3d')](_0x55c69c['where'],{'$or':_[_0xe76f('0x2c')](_0x55c69c[_0xe76f('0x35')],function(_0x4fe7a2){var _0x5f317a={};_0x5f317a[_0x4fe7a2]={'$like':'%'+_0x504239[_0xe76f('0x33')][_0xe76f('0x3b')]+'%'};return _0x5f317a;})});}_0x55c69c=_['merge']({},_0x55c69c,_0x504239[_0xe76f('0x3f')]);return _0x4dd3d0['getSubjects'](_0x55c69c);}})['then'](function(_0x11b5cf){if(_0x11b5cf){_0x23c2b9=_0x11b5cf[_0xe76f('0x48')];if(!_0x504239['query'][_0xe76f('0x4f')](_0xe76f('0x36'))){_0x55c69c[_0xe76f('0x1e')]=qs[_0xe76f('0x1e')](_0x504239[_0xe76f('0x33')][_0xe76f('0x1e')]);_0x55c69c[_0xe76f('0x1d')]=qs['offset'](_0x504239[_0xe76f('0x33')][_0xe76f('0x1d')]);}return _0x4dd3d0[_0xe76f('0x4c')](_0x55c69c);}})['then'](function(_0x1e4e0e){if(_0x1e4e0e){return _0x1e4e0e?{'count':_0x23c2b9,'rows':_0x1e4e0e}:null;}})[_0xe76f('0x26')](respondWithResult(_0x834c3e,null))['catch'](handleError(_0x834c3e,null));};exports[_0xe76f('0x50')]=function(_0x384bd8,_0x466f18,_0x3650f3){var _0x30b708={};var _0x28a076={};var _0x41d747;var _0x5625c7;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x384bd8[_0xe76f('0x45')]['id']}})[_0xe76f('0x26')](handleEntityNotFound(_0x466f18,null))[_0xe76f('0x26')](function(_0x1196f4){if(_0x1196f4){_0x41d747=_0x1196f4;_0x28a076[_0xe76f('0x32')]=_[_0xe76f('0x46')](db[_0xe76f('0x4e')][_0xe76f('0x2e')]);_0x28a076[_0xe76f('0x33')]=_['keys'](_0x384bd8[_0xe76f('0x33')]);_0x28a076[_0xe76f('0x39')]=_[_0xe76f('0x34')](_0x28a076['model'],_0x28a076[_0xe76f('0x33')]);_0x30b708[_0xe76f('0x35')]=_[_0xe76f('0x34')](_0x28a076['model'],qs[_0xe76f('0x47')](_0x384bd8[_0xe76f('0x33')]['fields']));_0x30b708[_0xe76f('0x35')]=_0x30b708[_0xe76f('0x35')][_0xe76f('0x48')]?_0x30b708['attributes']:_0x28a076[_0xe76f('0x32')];_0x30b708[_0xe76f('0x37')]=qs[_0xe76f('0x38')](_0x384bd8[_0xe76f('0x33')][_0xe76f('0x38')]);_0x30b708[_0xe76f('0x3c')]=qs['filters'](_[_0xe76f('0x3a')](_0x384bd8[_0xe76f('0x33')],_0x28a076['filters']));if(_0x384bd8[_0xe76f('0x33')]['filter']){_0x30b708['where']=_[_0xe76f('0x3d')](_0x30b708[_0xe76f('0x3c')],{'$or':_[_0xe76f('0x2c')](_0x30b708[_0xe76f('0x35')],function(_0x51ce38){var _0x2a2eb9={};_0x2a2eb9[_0x51ce38]={'$like':'%'+_0x384bd8[_0xe76f('0x33')][_0xe76f('0x3b')]+'%'};return _0x2a2eb9;})});}_0x30b708=_[_0xe76f('0x3d')]({},_0x30b708,_0x384bd8[_0xe76f('0x3f')]);return _0x41d747['getDescriptions'](_0x30b708);}})[_0xe76f('0x26')](function(_0x465214){if(_0x465214){_0x5625c7=_0x465214[_0xe76f('0x48')];if(!_0x384bd8[_0xe76f('0x33')][_0xe76f('0x4f')](_0xe76f('0x36'))){_0x30b708[_0xe76f('0x1e')]=qs[_0xe76f('0x1e')](_0x384bd8[_0xe76f('0x33')]['limit']);_0x30b708[_0xe76f('0x1d')]=qs[_0xe76f('0x1d')](_0x384bd8[_0xe76f('0x33')][_0xe76f('0x1d')]);}return _0x41d747[_0xe76f('0x50')](_0x30b708);}})[_0xe76f('0x26')](function(_0x6ec2cf){if(_0x6ec2cf){return _0x6ec2cf?{'count':_0x5625c7,'rows':_0x6ec2cf}:null;}})[_0xe76f('0x26')](respondWithResult(_0x466f18,null))[_0xe76f('0x43')](handleError(_0x466f18,null));};exports[_0xe76f('0x51')]=function(_0x15cc7f,_0x4eb8b8,_0x159a5c){var _0x3dca63={};var _0x26b829={};var _0x26900a;var _0x411865;return db[_0xe76f('0x2d')][_0xe76f('0x4d')]({'where':{'id':_0x15cc7f[_0xe76f('0x45')]['id']}})[_0xe76f('0x26')](handleEntityNotFound(_0x4eb8b8,null))[_0xe76f('0x26')](function(_0x4ef564){if(_0x4ef564){_0x26900a=_0x4ef564;_0x26b829[_0xe76f('0x32')]=_['keys'](db[_0xe76f('0x4e')][_0xe76f('0x2e')]);_0x26b829['query']=_['keys'](_0x15cc7f[_0xe76f('0x33')]);_0x26b829[_0xe76f('0x39')]=_[_0xe76f('0x34')](_0x26b829[_0xe76f('0x32')],_0x26b829[_0xe76f('0x33')]);_0x3dca63['attributes']=_[_0xe76f('0x34')](_0x26b829[_0xe76f('0x32')],qs[_0xe76f('0x47')](_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x47')]));_0x3dca63['attributes']=_0x3dca63[_0xe76f('0x35')][_0xe76f('0x48')]?_0x3dca63[_0xe76f('0x35')]:_0x26b829[_0xe76f('0x32')];_0x3dca63['order']=qs[_0xe76f('0x38')](_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x38')]);_0x3dca63[_0xe76f('0x3c')]=qs[_0xe76f('0x39')](_[_0xe76f('0x3a')](_0x15cc7f[_0xe76f('0x33')],_0x26b829[_0xe76f('0x39')]));if(_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x3b')]){_0x3dca63[_0xe76f('0x3c')]=_[_0xe76f('0x3d')](_0x3dca63['where'],{'$or':_[_0xe76f('0x2c')](_0x3dca63[_0xe76f('0x35')],function(_0x3e5976){var _0x110414={};_0x110414[_0x3e5976]={'$like':'%'+_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x3b')]+'%'};return _0x110414;})});}_0x3dca63=_[_0xe76f('0x3d')]({},_0x3dca63,_0x15cc7f[_0xe76f('0x3f')]);return _0x26900a['getFields'](_0x3dca63);}})[_0xe76f('0x26')](function(_0x2b5b94){if(_0x2b5b94){_0x411865=_0x2b5b94['length'];if(!_0x15cc7f['query'][_0xe76f('0x4f')](_0xe76f('0x36'))){_0x3dca63[_0xe76f('0x1e')]=qs[_0xe76f('0x1e')](_0x15cc7f['query']['limit']);_0x3dca63[_0xe76f('0x1d')]=qs[_0xe76f('0x1d')](_0x15cc7f[_0xe76f('0x33')]['offset']);}return _0x26900a[_0xe76f('0x51')](_0x3dca63);}})['then'](function(_0x456e22){if(_0x456e22){return _0x456e22?{'count':_0x411865,'rows':_0x456e22}:null;}})[_0xe76f('0x26')](respondWithResult(_0x4eb8b8,null))[_0xe76f('0x43')](handleError(_0x4eb8b8,null));};
\ No newline at end of file
+var _0x049a=['name','send','map','FreshsalesConfiguration','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','options','includeAll','include','findAll','catch','params','create','body','update','find','getSubjects','findOne','FreshsalesField','merge','getDescriptions','nolimit','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','end','sendStatus','error','stack'];(function(_0x2bd211,_0x522300){var _0x5b963e=function(_0x553314){while(--_0x553314){_0x2bd211['push'](_0x2bd211['shift']());}};_0x5b963e(++_0x522300);}(_0x049a,0x116));var _0xa049=function(_0x558e45,_0x4f5e4f){_0x558e45=_0x558e45-0x0;var _0x3e9075=_0x049a[_0x558e45];return _0x3e9075;};'use strict';var emlformat=require(_0xa049('0x0'));var rimraf=require(_0xa049('0x1'));var zipdir=require(_0xa049('0x2'));var jsonpatch=require(_0xa049('0x3'));var rp=require(_0xa049('0x4'));var moment=require(_0xa049('0x5'));var BPromise=require(_0xa049('0x6'));var Mustache=require(_0xa049('0x7'));var util=require(_0xa049('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xa049('0x9'));var ejs=require(_0xa049('0xa'));var fs=require('fs');var fs_extra=require(_0xa049('0xb'));var _=require(_0xa049('0xc'));var squel=require('squel');var crypto=require(_0xa049('0xd'));var jsforce=require(_0xa049('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa049('0x9'));var querystring=require('querystring');var Papa=require(_0xa049('0xf'));var Redis=require(_0xa049('0x10'));var authService=require(_0xa049('0x11'));var qs=require(_0xa049('0x12'));var as=require(_0xa049('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa049('0x14'))(_0xa049('0x15'));var utils=require('../../config/utils');var config=require(_0xa049('0x16'));var licenseUtil=require(_0xa049('0x17'));var db=require(_0xa049('0x18'))['db'];function respondWithStatusCode(_0x329ce4,_0x456ba9){_0x456ba9=_0x456ba9||0xcc;return function(_0xc114cf){if(_0xc114cf){return _0x329ce4['sendStatus'](_0x456ba9);}return _0x329ce4[_0xa049('0x19')](_0x456ba9)['end']();};}function respondWithResult(_0x333eb4,_0x549b04){_0x549b04=_0x549b04||0xc8;return function(_0x347446){if(_0x347446){return _0x333eb4['status'](_0x549b04)[_0xa049('0x1a')](_0x347446);}};}function respondWithFilteredResult(_0x530da7,_0x18e523){return function(_0x20fab6){if(_0x20fab6){var _0x4c4380=typeof _0x18e523[_0xa049('0x1b')]===_0xa049('0x1c')&&typeof _0x18e523[_0xa049('0x1d')]==='undefined';var _0xf0f378=_0x20fab6[_0xa049('0x1e')];var _0x45d321=_0x4c4380?0x0:_0x18e523['offset'];var _0x5dc7f3=_0x4c4380?_0x20fab6['count']:_0x18e523[_0xa049('0x1b')]+_0x18e523[_0xa049('0x1d')];var _0x28f16d;if(_0x5dc7f3>=_0xf0f378){_0x5dc7f3=_0xf0f378;_0x28f16d=0xc8;}else{_0x28f16d=0xce;}_0x530da7[_0xa049('0x19')](_0x28f16d);return _0x530da7[_0xa049('0x1f')](_0xa049('0x20'),_0x45d321+'-'+_0x5dc7f3+'/'+_0xf0f378)[_0xa049('0x1a')](_0x20fab6);}return null;};}function patchUpdates(_0x16bd83){return function(_0x5009e5){try{jsonpatch[_0xa049('0x21')](_0x5009e5,_0x16bd83,!![]);}catch(_0x51b08a){return BPromise[_0xa049('0x22')](_0x51b08a);}return _0x5009e5[_0xa049('0x23')]();};}function saveUpdates(_0x1c7492,_0x536d0a){return function(_0x58f0e7){if(_0x58f0e7){return _0x58f0e7['update'](_0x1c7492)['then'](function(_0x200396){return _0x200396;});}return null;};}function removeEntity(_0x4dbe63,_0x10b12a){return function(_0x3e20d0){if(_0x3e20d0){return _0x3e20d0[_0xa049('0x24')]()[_0xa049('0x25')](function(){_0x4dbe63[_0xa049('0x19')](0xcc)[_0xa049('0x26')]();});}};}function handleEntityNotFound(_0x38145d,_0x531648){return function(_0x27339b){if(!_0x27339b){_0x38145d[_0xa049('0x27')](0x194);}return _0x27339b;};}function handleError(_0x16711b,_0x142a7c){_0x142a7c=_0x142a7c||0x1f4;return function(_0x480c1e){logger[_0xa049('0x28')](_0x480c1e[_0xa049('0x29')]);if(_0x480c1e[_0xa049('0x2a')]){delete _0x480c1e['name'];}_0x16711b[_0xa049('0x19')](_0x142a7c)[_0xa049('0x2b')](_0x480c1e);};}exports['index']=function(_0x5caa35,_0x3f17de){var _0x164c47={},_0x219e52={},_0x371f30={'count':0x0,'rows':[]};var _0x4fd642=_[_0xa049('0x2c')](db[_0xa049('0x2d')][_0xa049('0x2e')],function(_0x91042e){return{'name':_0x91042e['fieldName'],'type':_0x91042e[_0xa049('0x2f')][_0xa049('0x30')]};});_0x219e52[_0xa049('0x31')]=_['map'](_0x4fd642,_0xa049('0x2a'));_0x219e52[_0xa049('0x32')]=_[_0xa049('0x33')](_0x5caa35[_0xa049('0x32')]);_0x219e52[_0xa049('0x34')]=_['intersection'](_0x219e52[_0xa049('0x31')],_0x219e52[_0xa049('0x32')]);_0x164c47[_0xa049('0x35')]=_[_0xa049('0x36')](_0x219e52[_0xa049('0x31')],qs[_0xa049('0x37')](_0x5caa35[_0xa049('0x32')]['fields']));_0x164c47[_0xa049('0x35')]=_0x164c47[_0xa049('0x35')][_0xa049('0x38')]?_0x164c47[_0xa049('0x35')]:_0x219e52['model'];if(!_0x5caa35[_0xa049('0x32')][_0xa049('0x39')]('nolimit')){_0x164c47[_0xa049('0x1d')]=qs[_0xa049('0x1d')](_0x5caa35[_0xa049('0x32')][_0xa049('0x1d')]);_0x164c47['offset']=qs[_0xa049('0x1b')](_0x5caa35[_0xa049('0x32')][_0xa049('0x1b')]);}_0x164c47[_0xa049('0x3a')]=qs[_0xa049('0x3b')](_0x5caa35[_0xa049('0x32')][_0xa049('0x3b')]);_0x164c47['where']=qs[_0xa049('0x34')](_[_0xa049('0x3c')](_0x5caa35[_0xa049('0x32')],_0x219e52['filters']),_0x4fd642);if(_0x5caa35[_0xa049('0x32')][_0xa049('0x3d')]){_0x164c47[_0xa049('0x3e')]=_['merge'](_0x164c47['where'],{'$or':_[_0xa049('0x2c')](_0x4fd642,function(_0x11b8a7){if(_0x11b8a7[_0xa049('0x2f')]!=='VIRTUAL'){var _0x3b0a71={};_0x3b0a71[_0x11b8a7[_0xa049('0x2a')]]={'$like':'%'+_0x5caa35['query']['filter']+'%'};return _0x3b0a71;}})});}_0x164c47=_['merge']({},_0x164c47,_0x5caa35[_0xa049('0x3f')]);var _0x5a5ee5={'where':_0x164c47[_0xa049('0x3e')]};return db[_0xa049('0x2d')]['count'](_0x5a5ee5)[_0xa049('0x25')](function(_0xb1bd77){_0x371f30[_0xa049('0x1e')]=_0xb1bd77;if(_0x5caa35[_0xa049('0x32')][_0xa049('0x40')]){_0x164c47[_0xa049('0x41')]=[{'all':!![]}];}return db[_0xa049('0x2d')][_0xa049('0x42')](_0x164c47);})['then'](function(_0x201942){_0x371f30['rows']=_0x201942;return _0x371f30;})['then'](respondWithFilteredResult(_0x3f17de,_0x164c47))[_0xa049('0x43')](handleError(_0x3f17de,null));};exports['show']=function(_0x442ed8,_0x2503c8){var _0x82b47f={'raw':![],'where':{'id':_0x442ed8[_0xa049('0x44')]['id']}},_0xdbaacc={};_0xdbaacc[_0xa049('0x31')]=_[_0xa049('0x33')](db['FreshsalesConfiguration'][_0xa049('0x2e')]);_0xdbaacc['query']=_[_0xa049('0x33')](_0x442ed8[_0xa049('0x32')]);_0xdbaacc[_0xa049('0x34')]=_[_0xa049('0x36')](_0xdbaacc[_0xa049('0x31')],_0xdbaacc[_0xa049('0x32')]);_0x82b47f['attributes']=_[_0xa049('0x36')](_0xdbaacc[_0xa049('0x31')],qs[_0xa049('0x37')](_0x442ed8['query']['fields']));_0x82b47f['attributes']=_0x82b47f[_0xa049('0x35')]['length']?_0x82b47f[_0xa049('0x35')]:_0xdbaacc['model'];if(_0x442ed8['query']['includeAll']){_0x82b47f[_0xa049('0x41')]=[{'all':!![]}];}_0x82b47f=_['merge']({},_0x82b47f,_0x442ed8['options']);return db[_0xa049('0x2d')]['find'](_0x82b47f)['then'](handleEntityNotFound(_0x2503c8,null))[_0xa049('0x25')](respondWithResult(_0x2503c8,null))[_0xa049('0x43')](handleError(_0x2503c8,null));};exports[_0xa049('0x45')]=function(_0x32db5f,_0x3c4911){return db['FreshsalesConfiguration']['create'](_0x32db5f[_0xa049('0x46')],{})[_0xa049('0x25')](respondWithResult(_0x3c4911,0xc9))[_0xa049('0x43')](handleError(_0x3c4911,null));};exports[_0xa049('0x47')]=function(_0x2381f8,_0x3448b7){if(_0x2381f8[_0xa049('0x46')]['id']){delete _0x2381f8[_0xa049('0x46')]['id'];}return db[_0xa049('0x2d')][_0xa049('0x48')]({'where':{'id':_0x2381f8[_0xa049('0x44')]['id']}})[_0xa049('0x25')](handleEntityNotFound(_0x3448b7,null))['then'](saveUpdates(_0x2381f8['body'],null))['then'](respondWithResult(_0x3448b7,null))['catch'](handleError(_0x3448b7,null));};exports['destroy']=function(_0x33a404,_0x179133){return db[_0xa049('0x2d')][_0xa049('0x48')]({'where':{'id':_0x33a404['params']['id']}})[_0xa049('0x25')](handleEntityNotFound(_0x179133,null))[_0xa049('0x25')](removeEntity(_0x179133,null))['catch'](handleError(_0x179133,null));};exports[_0xa049('0x49')]=function(_0x368924,_0x7f7b17,_0x101549){var _0x59ba42={};var _0x4a4dbd={};var _0x8367db;var _0x507abd;return db['FreshsalesConfiguration'][_0xa049('0x4a')]({'where':{'id':_0x368924[_0xa049('0x44')]['id']}})[_0xa049('0x25')](handleEntityNotFound(_0x7f7b17,null))[_0xa049('0x25')](function(_0xe79e44){if(_0xe79e44){_0x8367db=_0xe79e44;_0x4a4dbd['model']=_[_0xa049('0x33')](db[_0xa049('0x4b')][_0xa049('0x2e')]);_0x4a4dbd[_0xa049('0x32')]=_[_0xa049('0x33')](_0x368924[_0xa049('0x32')]);_0x4a4dbd['filters']=_['intersection'](_0x4a4dbd[_0xa049('0x31')],_0x4a4dbd['query']);_0x59ba42[_0xa049('0x35')]=_[_0xa049('0x36')](_0x4a4dbd['model'],qs[_0xa049('0x37')](_0x368924[_0xa049('0x32')]['fields']));_0x59ba42[_0xa049('0x35')]=_0x59ba42['attributes'][_0xa049('0x38')]?_0x59ba42[_0xa049('0x35')]:_0x4a4dbd[_0xa049('0x31')];_0x59ba42[_0xa049('0x3a')]=qs[_0xa049('0x3b')](_0x368924[_0xa049('0x32')][_0xa049('0x3b')]);_0x59ba42[_0xa049('0x3e')]=qs['filters'](_[_0xa049('0x3c')](_0x368924[_0xa049('0x32')],_0x4a4dbd[_0xa049('0x34')]));if(_0x368924[_0xa049('0x32')][_0xa049('0x3d')]){_0x59ba42[_0xa049('0x3e')]=_[_0xa049('0x4c')](_0x59ba42['where'],{'$or':_[_0xa049('0x2c')](_0x59ba42['attributes'],function(_0x3ad67c){var _0x2ec8ca={};_0x2ec8ca[_0x3ad67c]={'$like':'%'+_0x368924[_0xa049('0x32')][_0xa049('0x3d')]+'%'};return _0x2ec8ca;})});}_0x59ba42=_['merge']({},_0x59ba42,_0x368924[_0xa049('0x3f')]);return _0x8367db[_0xa049('0x49')](_0x59ba42);}})[_0xa049('0x25')](function(_0x5e34ba){if(_0x5e34ba){_0x507abd=_0x5e34ba[_0xa049('0x38')];if(!_0x368924[_0xa049('0x32')][_0xa049('0x39')]('nolimit')){_0x59ba42[_0xa049('0x1d')]=qs[_0xa049('0x1d')](_0x368924['query'][_0xa049('0x1d')]);_0x59ba42[_0xa049('0x1b')]=qs['offset'](_0x368924[_0xa049('0x32')][_0xa049('0x1b')]);}return _0x8367db['getSubjects'](_0x59ba42);}})[_0xa049('0x25')](function(_0x148ea9){if(_0x148ea9){return _0x148ea9?{'count':_0x507abd,'rows':_0x148ea9}:null;}})[_0xa049('0x25')](respondWithResult(_0x7f7b17,null))[_0xa049('0x43')](handleError(_0x7f7b17,null));};exports[_0xa049('0x4d')]=function(_0x4a8e38,_0x3f0b29,_0x386ec4){var _0x2e399e={};var _0x3abef4={};var _0x5a2d0e;var _0x200ede;return db['FreshsalesConfiguration'][_0xa049('0x4a')]({'where':{'id':_0x4a8e38[_0xa049('0x44')]['id']}})['then'](handleEntityNotFound(_0x3f0b29,null))['then'](function(_0x23a74f){if(_0x23a74f){_0x5a2d0e=_0x23a74f;_0x3abef4[_0xa049('0x31')]=_[_0xa049('0x33')](db['FreshsalesField'][_0xa049('0x2e')]);_0x3abef4['query']=_[_0xa049('0x33')](_0x4a8e38[_0xa049('0x32')]);_0x3abef4['filters']=_[_0xa049('0x36')](_0x3abef4['model'],_0x3abef4[_0xa049('0x32')]);_0x2e399e[_0xa049('0x35')]=_[_0xa049('0x36')](_0x3abef4['model'],qs['fields'](_0x4a8e38[_0xa049('0x32')][_0xa049('0x37')]));_0x2e399e[_0xa049('0x35')]=_0x2e399e['attributes'][_0xa049('0x38')]?_0x2e399e[_0xa049('0x35')]:_0x3abef4['model'];_0x2e399e[_0xa049('0x3a')]=qs[_0xa049('0x3b')](_0x4a8e38['query']['sort']);_0x2e399e[_0xa049('0x3e')]=qs[_0xa049('0x34')](_[_0xa049('0x3c')](_0x4a8e38['query'],_0x3abef4[_0xa049('0x34')]));if(_0x4a8e38[_0xa049('0x32')]['filter']){_0x2e399e[_0xa049('0x3e')]=_[_0xa049('0x4c')](_0x2e399e[_0xa049('0x3e')],{'$or':_['map'](_0x2e399e[_0xa049('0x35')],function(_0x106471){var _0x293bc6={};_0x293bc6[_0x106471]={'$like':'%'+_0x4a8e38['query'][_0xa049('0x3d')]+'%'};return _0x293bc6;})});}_0x2e399e=_[_0xa049('0x4c')]({},_0x2e399e,_0x4a8e38[_0xa049('0x3f')]);return _0x5a2d0e['getDescriptions'](_0x2e399e);}})['then'](function(_0x124867){if(_0x124867){_0x200ede=_0x124867[_0xa049('0x38')];if(!_0x4a8e38[_0xa049('0x32')][_0xa049('0x39')](_0xa049('0x4e'))){_0x2e399e[_0xa049('0x1d')]=qs['limit'](_0x4a8e38[_0xa049('0x32')][_0xa049('0x1d')]);_0x2e399e[_0xa049('0x1b')]=qs[_0xa049('0x1b')](_0x4a8e38[_0xa049('0x32')][_0xa049('0x1b')]);}return _0x5a2d0e[_0xa049('0x4d')](_0x2e399e);}})[_0xa049('0x25')](function(_0x569568){if(_0x569568){return _0x569568?{'count':_0x200ede,'rows':_0x569568}:null;}})['then'](respondWithResult(_0x3f0b29,null))['catch'](handleError(_0x3f0b29,null));};exports['getFields']=function(_0x5590b6,_0x2e787d,_0x460e5c){var _0x1ebc0a={};var _0xe380fe={};var _0x69de18;var _0x1c0a1b;return db[_0xa049('0x2d')][_0xa049('0x4a')]({'where':{'id':_0x5590b6[_0xa049('0x44')]['id']}})[_0xa049('0x25')](handleEntityNotFound(_0x2e787d,null))['then'](function(_0x584fcd){if(_0x584fcd){_0x69de18=_0x584fcd;_0xe380fe[_0xa049('0x31')]=_[_0xa049('0x33')](db['FreshsalesField'][_0xa049('0x2e')]);_0xe380fe[_0xa049('0x32')]=_[_0xa049('0x33')](_0x5590b6[_0xa049('0x32')]);_0xe380fe[_0xa049('0x34')]=_[_0xa049('0x36')](_0xe380fe['model'],_0xe380fe[_0xa049('0x32')]);_0x1ebc0a['attributes']=_[_0xa049('0x36')](_0xe380fe[_0xa049('0x31')],qs[_0xa049('0x37')](_0x5590b6[_0xa049('0x32')][_0xa049('0x37')]));_0x1ebc0a['attributes']=_0x1ebc0a['attributes']['length']?_0x1ebc0a[_0xa049('0x35')]:_0xe380fe[_0xa049('0x31')];_0x1ebc0a[_0xa049('0x3a')]=qs['sort'](_0x5590b6[_0xa049('0x32')][_0xa049('0x3b')]);_0x1ebc0a[_0xa049('0x3e')]=qs['filters'](_[_0xa049('0x3c')](_0x5590b6['query'],_0xe380fe['filters']));if(_0x5590b6['query'][_0xa049('0x3d')]){_0x1ebc0a[_0xa049('0x3e')]=_[_0xa049('0x4c')](_0x1ebc0a['where'],{'$or':_[_0xa049('0x2c')](_0x1ebc0a['attributes'],function(_0x5db558){var _0x5ecc50={};_0x5ecc50[_0x5db558]={'$like':'%'+_0x5590b6[_0xa049('0x32')][_0xa049('0x3d')]+'%'};return _0x5ecc50;})});}_0x1ebc0a=_[_0xa049('0x4c')]({},_0x1ebc0a,_0x5590b6[_0xa049('0x3f')]);return _0x69de18[_0xa049('0x4f')](_0x1ebc0a);}})['then'](function(_0x2d8084){if(_0x2d8084){_0x1c0a1b=_0x2d8084['length'];if(!_0x5590b6[_0xa049('0x32')]['hasOwnProperty'](_0xa049('0x4e'))){_0x1ebc0a[_0xa049('0x1d')]=qs[_0xa049('0x1d')](_0x5590b6[_0xa049('0x32')][_0xa049('0x1d')]);_0x1ebc0a['offset']=qs[_0xa049('0x1b')](_0x5590b6[_0xa049('0x32')]['offset']);}return _0x69de18[_0xa049('0x4f')](_0x1ebc0a);}})[_0xa049('0x25')](function(_0x142208){if(_0x142208){return _0x142208?{'count':_0x1c0a1b,'rows':_0x142208}:null;}})['then'](respondWithResult(_0x2e787d,null))[_0xa049('0x43')](handleError(_0x2e787d,null));};
\ No newline at end of file
index 0570148..a3907c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3855=['int_freshsales_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0x3855,0xf1));var _0x5385=function(_0x298ff7,_0x29ca12){_0x298ff7=_0x298ff7-0x0;var _0x295feb=_0x3855[_0x298ff7];return _0x295feb;};'use strict';var _=require(_0x5385('0x0'));var util=require('util');var logger=require(_0x5385('0x1'))(_0x5385('0x2'));var moment=require(_0x5385('0x3'));var BPromise=require(_0x5385('0x4'));var rp=require(_0x5385('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5385('0x6'));var config=require('../../config/environment');var attributes=require(_0x5385('0x7'));module[_0x5385('0x8')]=function(_0x34d437,_0x2b7457){return _0x34d437[_0x5385('0x9')](_0x5385('0xa'),attributes,{'tableName':_0x5385('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdbf2=['define','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes'];(function(_0x2d3fbb,_0x299456){var _0xea45ae=function(_0x4b3b83){while(--_0x4b3b83){_0x2d3fbb['push'](_0x2d3fbb['shift']());}};_0xea45ae(++_0x299456);}(_0xdbf2,0x140));var _0x2dbf=function(_0x143ce0,_0x1045d7){_0x143ce0=_0x143ce0-0x0;var _0x4c063c=_0xdbf2[_0x143ce0];return _0x4c063c;};'use strict';var _=require('lodash');var util=require(_0x2dbf('0x0'));var logger=require(_0x2dbf('0x1'))(_0x2dbf('0x2'));var moment=require(_0x2dbf('0x3'));var BPromise=require(_0x2dbf('0x4'));var rp=require(_0x2dbf('0x5'));var fs=require('fs');var path=require(_0x2dbf('0x6'));var rimraf=require(_0x2dbf('0x7'));var config=require(_0x2dbf('0x8'));var attributes=require(_0x2dbf('0x9'));module['exports']=function(_0x46e634,_0x2d17a6){return _0x46e634[_0x2dbf('0xa')]('FreshsalesConfiguration',attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb6d185..8624aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8be=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2d3264,_0x1eb1c1){var _0x282c50=function(_0x391713){while(--_0x391713){_0x2d3264['push'](_0x2d3264['shift']());}};_0x282c50(++_0x1eb1c1);}(_0xf8be,0x165));var _0xef8b=function(_0x36ac9c,_0x4db81d){_0x36ac9c=_0x36ac9c-0x0;var _0x199ab3=_0xf8be[_0x36ac9c];return _0x199ab3;};'use strict';var _=require(_0xef8b('0x0'));var util=require(_0xef8b('0x1'));var moment=require(_0xef8b('0x2'));var BPromise=require(_0xef8b('0x3'));var rs=require(_0xef8b('0x4'));var fs=require('fs');var Redis=require(_0xef8b('0x5'));var db=require(_0xef8b('0x6'))['db'];var utils=require(_0xef8b('0x7'));var logger=require(_0xef8b('0x8'))(_0xef8b('0x9'));var config=require(_0xef8b('0xa'));var jayson=require(_0xef8b('0xb'));var client=jayson[_0xef8b('0xc')][_0xef8b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4d71c9,_0x514021,_0x48a7ff){return new BPromise(function(_0xfcddc0,_0x6389fc){return client[_0xef8b('0xe')](_0x4d71c9,_0x48a7ff)[_0xef8b('0xf')](function(_0x118eb7){logger['info'](_0xef8b('0x10'),_0x514021,_0xef8b('0x11'));logger['debug'](_0xef8b('0x12'),_0x514021,'request\x20sent',JSON[_0xef8b('0x13')](_0x118eb7));if(_0x118eb7[_0xef8b('0x14')]){if(_0x118eb7[_0xef8b('0x14')][_0xef8b('0x15')]===0x1f4){logger[_0xef8b('0x14')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x514021,_0x118eb7[_0xef8b('0x14')][_0xef8b('0x16')]);return _0x6389fc(_0x118eb7['error']['message']);}logger[_0xef8b('0x14')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x514021,_0x118eb7[_0xef8b('0x14')][_0xef8b('0x16')]);return _0xfcddc0(_0x118eb7[_0xef8b('0x14')][_0xef8b('0x16')]);}else{logger[_0xef8b('0x17')](_0xef8b('0x10'),_0x514021,'request\x20sent');_0xfcddc0(_0x118eb7[_0xef8b('0x18')][_0xef8b('0x16')]);}})[_0xef8b('0x19')](function(_0x4141ca){logger[_0xef8b('0x14')](_0xef8b('0x10'),_0x514021,_0x4141ca);_0x6389fc(_0x4141ca);});});}
\ No newline at end of file
+var _0x251e=['jayson/promise','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','../../config/utils','rpc'];(function(_0x495606,_0x24ed17){var _0x400ccf=function(_0x5b0ec1){while(--_0x5b0ec1){_0x495606['push'](_0x495606['shift']());}};_0x400ccf(++_0x24ed17);}(_0x251e,0x11b));var _0xe251=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x251e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe251('0x0'));var util=require(_0xe251('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe251('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe251('0x3'));var logger=require('../../config/logger')(_0xe251('0x4'));var config=require('../../config/environment');var jayson=require(_0xe251('0x5'));var client=jayson['client'][_0xe251('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x25e30e,_0x3e571b,_0x1db43a){return new BPromise(function(_0x31e632,_0x3345fe){return client[_0xe251('0x7')](_0x25e30e,_0x1db43a)[_0xe251('0x8')](function(_0xb5f6eb){logger[_0xe251('0x9')](_0xe251('0xa'),_0x3e571b,'request\x20sent');logger['debug']('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x3e571b,_0xe251('0xb'),JSON[_0xe251('0xc')](_0xb5f6eb));if(_0xb5f6eb[_0xe251('0xd')]){if(_0xb5f6eb[_0xe251('0xd')][_0xe251('0xe')]===0x1f4){logger[_0xe251('0xd')](_0xe251('0xa'),_0x3e571b,_0xb5f6eb['error'][_0xe251('0xf')]);return _0x3345fe(_0xb5f6eb[_0xe251('0xd')][_0xe251('0xf')]);}logger[_0xe251('0xd')](_0xe251('0xa'),_0x3e571b,_0xb5f6eb[_0xe251('0xd')][_0xe251('0xf')]);return _0x31e632(_0xb5f6eb['error'][_0xe251('0xf')]);}else{logger[_0xe251('0x9')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3e571b,_0xe251('0xb'));_0x31e632(_0xb5f6eb[_0xe251('0x10')]['message']);}})[_0xe251('0x11')](function(_0x33aee8){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x3e571b,_0x33aee8);_0x3345fe(_0x33aee8);});});}
\ No newline at end of file
index be31a2b..d9e65d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b05=['exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','put','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b05,0x91));var _0x57b0=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0x7b05[_0x20cb20];return _0x2fcf4b;};'use strict';var multer=require(_0x57b0('0x0'));var util=require(_0x57b0('0x1'));var path=require(_0x57b0('0x2'));var timeout=require(_0x57b0('0x3'));var express=require('express');var router=express[_0x57b0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x57b0('0x5'));var interaction=require(_0x57b0('0x6'));var config=require(_0x57b0('0x7'));var controller=require(_0x57b0('0x8'));router[_0x57b0('0x9')]('/',auth['isAuthenticated'](),controller[_0x57b0('0xa')]);router['get'](_0x57b0('0xb'),auth[_0x57b0('0xc')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x57b0('0xd')](_0x57b0('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x57b0('0xb'),auth[_0x57b0('0xc')](),controller[_0x57b0('0xe')]);module[_0x57b0('0xf')]=router;
\ No newline at end of file
+var _0x292b=['post','put','isAuthenticated','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','show'];(function(_0x12fd6d,_0x1eb2da){var _0x16e9c5=function(_0x4c9f99){while(--_0x4c9f99){_0x12fd6d['push'](_0x12fd6d['shift']());}};_0x16e9c5(++_0x1eb2da);}(_0x292b,0x64));var _0xb292=function(_0x279e6f,_0x566574){_0x279e6f=_0x279e6f-0x0;var _0x489a5f=_0x292b[_0x279e6f];return _0x489a5f;};'use strict';var multer=require(_0xb292('0x0'));var util=require(_0xb292('0x1'));var path=require(_0xb292('0x2'));var timeout=require(_0xb292('0x3'));var express=require(_0xb292('0x4'));var router=express[_0xb292('0x5')]();var fs_extra=require(_0xb292('0x6'));var auth=require(_0xb292('0x7'));var interaction=require(_0xb292('0x8'));var config=require(_0xb292('0x9'));var controller=require('./intFreshsalesField.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xb292('0xa')]);router[_0xb292('0xb')](_0xb292('0xc'),auth['isAuthenticated'](),controller[_0xb292('0xd')]);router[_0xb292('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb292('0xf')](_0xb292('0xc'),auth[_0xb292('0x10')](),controller['update']);router[_0xb292('0x11')](_0xb292('0xc'),auth[_0xb292('0x10')](),controller[_0xb292('0x12')]);module['exports']=router;
\ No newline at end of file
index 15020d1..25facea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c57=['variable','keyValue','picklist','STRING','customVariable','sequelize','ENUM','string'];(function(_0x4eaa18,_0x5d7dfa){var _0x5afbf3=function(_0x5d86cf){while(--_0x5d86cf){_0x4eaa18['push'](_0x4eaa18['shift']());}};_0x5afbf3(++_0x5d7dfa);}(_0x5c57,0xd5));var _0x75c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c57[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x75c5('0x0'));module['exports']={'type':{'type':Sequelize[_0x75c5('0x1')](_0x75c5('0x2'),_0x75c5('0x3'),'customVariable',_0x75c5('0x4'),_0x75c5('0x5')),'defaultValue':_0x75c5('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x75c5('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x75c5('0x3'),_0x75c5('0x7'))},'keyContent':{'type':Sequelize[_0x75c5('0x6')]},'idField':{'type':Sequelize[_0x75c5('0x6')]},'nameField':{'type':Sequelize[_0x75c5('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xac8b=['ENUM','string','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports'];(function(_0x30126c,_0x43a5a3){var _0x184d7f=function(_0x34f445){while(--_0x34f445){_0x30126c['push'](_0x30126c['shift']());}};_0x184d7f(++_0x43a5a3);}(_0xac8b,0x115));var _0xbac8=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0xac8b[_0x50aa2e];return _0x5e07f0;};'use strict';var Sequelize=require(_0xbac8('0x0'));module[_0xbac8('0x1')]={'type':{'type':Sequelize[_0xbac8('0x2')](_0xbac8('0x3'),'variable',_0xbac8('0x4'),_0xbac8('0x5'),_0xbac8('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xbac8('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xbac8('0x2')]('string','variable',_0xbac8('0x4'))},'keyContent':{'type':Sequelize[_0xbac8('0x7')]},'idField':{'type':Sequelize[_0xbac8('0x7')]},'nameField':{'type':Sequelize[_0xbac8('0x7')]},'customField':{'type':Sequelize[_0xbac8('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbac8('0x7')]}};
\ No newline at end of file
index 34aa0e7..7b86cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4d9=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','map','fieldName','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','FreshsalesField','rows','catch','show','rawAttributes','find','create','params','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto'];(function(_0x4c6e4c,_0x186178){var _0x137012=function(_0x354fa8){while(--_0x354fa8){_0x4c6e4c['push'](_0x4c6e4c['shift']());}};_0x137012(++_0x186178);}(_0xd4d9,0xd0));var _0x9d4d=function(_0x5bca5f,_0x3ed435){_0x5bca5f=_0x5bca5f-0x0;var _0x22cd63=_0xd4d9[_0x5bca5f];return _0x22cd63;};'use strict';var emlformat=require(_0x9d4d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9d4d('0x1'));var jsonpatch=require(_0x9d4d('0x2'));var rp=require(_0x9d4d('0x3'));var moment=require(_0x9d4d('0x4'));var BPromise=require(_0x9d4d('0x5'));var Mustache=require(_0x9d4d('0x6'));var util=require(_0x9d4d('0x7'));var path=require(_0x9d4d('0x8'));var sox=require(_0x9d4d('0x9'));var csv=require(_0x9d4d('0xa'));var ejs=require(_0x9d4d('0xb'));var fs=require('fs');var fs_extra=require(_0x9d4d('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9d4d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9d4d('0xe'));var toCsv=require(_0x9d4d('0xa'));var querystring=require(_0x9d4d('0xf'));var Papa=require(_0x9d4d('0x10'));var Redis=require(_0x9d4d('0x11'));var authService=require(_0x9d4d('0x12'));var qs=require(_0x9d4d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d4d('0x14'))(_0x9d4d('0x15'));var utils=require(_0x9d4d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9d4d('0x17'));var db=require(_0x9d4d('0x18'))['db'];function respondWithStatusCode(_0x1ceb18,_0x29e9cd){_0x29e9cd=_0x29e9cd||0xcc;return function(_0x2befb5){if(_0x2befb5){return _0x1ceb18['sendStatus'](_0x29e9cd);}return _0x1ceb18['status'](_0x29e9cd)['end']();};}function respondWithResult(_0x34d906,_0xec56cb){_0xec56cb=_0xec56cb||0xc8;return function(_0xdf4c0){if(_0xdf4c0){return _0x34d906[_0x9d4d('0x19')](_0xec56cb)[_0x9d4d('0x1a')](_0xdf4c0);}};}function respondWithFilteredResult(_0x409c88,_0x521cd0){return function(_0x90f837){if(_0x90f837){var _0x459bb8=typeof _0x521cd0[_0x9d4d('0x1b')]===_0x9d4d('0x1c')&&typeof _0x521cd0[_0x9d4d('0x1d')]===_0x9d4d('0x1c');var _0x2fe548=_0x90f837[_0x9d4d('0x1e')];var _0xc01b94=_0x459bb8?0x0:_0x521cd0['offset'];var _0x914006=_0x459bb8?_0x90f837['count']:_0x521cd0['offset']+_0x521cd0['limit'];var _0x4e7008;if(_0x914006>=_0x2fe548){_0x914006=_0x2fe548;_0x4e7008=0xc8;}else{_0x4e7008=0xce;}_0x409c88['status'](_0x4e7008);return _0x409c88[_0x9d4d('0x1f')](_0x9d4d('0x20'),_0xc01b94+'-'+_0x914006+'/'+_0x2fe548)['json'](_0x90f837);}return null;};}function patchUpdates(_0x3153fd){return function(_0x2cd266){try{jsonpatch['apply'](_0x2cd266,_0x3153fd,!![]);}catch(_0xdc5bf0){return BPromise[_0x9d4d('0x21')](_0xdc5bf0);}return _0x2cd266[_0x9d4d('0x22')]();};}function saveUpdates(_0x285cf1,_0x411dae){return function(_0x3060fa){if(_0x3060fa){return _0x3060fa[_0x9d4d('0x23')](_0x285cf1)[_0x9d4d('0x24')](function(_0x24421f){return _0x24421f;});}return null;};}function removeEntity(_0x4c9353,_0x43c14d){return function(_0x4767c2){if(_0x4767c2){return _0x4767c2[_0x9d4d('0x25')]()[_0x9d4d('0x24')](function(){_0x4c9353[_0x9d4d('0x19')](0xcc)[_0x9d4d('0x26')]();});}};}function handleEntityNotFound(_0x21f9fa,_0x5bf10e){return function(_0x5264b0){if(!_0x5264b0){_0x21f9fa[_0x9d4d('0x27')](0x194);}return _0x5264b0;};}function handleError(_0x1b32f0,_0x40701f){_0x40701f=_0x40701f||0x1f4;return function(_0x4a3a4a){logger['error'](_0x4a3a4a[_0x9d4d('0x28')]);if(_0x4a3a4a[_0x9d4d('0x29')]){delete _0x4a3a4a[_0x9d4d('0x29')];}_0x1b32f0['status'](_0x40701f)[_0x9d4d('0x2a')](_0x4a3a4a);};}exports[_0x9d4d('0x2b')]=function(_0x1e0adc,_0x775692){var _0x25015c={},_0x9baafd={},_0x2f65e6={'count':0x0,'rows':[]};var _0x29ff82=_[_0x9d4d('0x2c')](db['FreshsalesField']['rawAttributes'],function(_0x3e92d5){return{'name':_0x3e92d5[_0x9d4d('0x2d')],'type':_0x3e92d5['type'][_0x9d4d('0x2e')]};});_0x9baafd['model']=_['map'](_0x29ff82,_0x9d4d('0x29'));_0x9baafd[_0x9d4d('0x2f')]=_[_0x9d4d('0x30')](_0x1e0adc[_0x9d4d('0x2f')]);_0x9baafd['filters']=_[_0x9d4d('0x31')](_0x9baafd[_0x9d4d('0x32')],_0x9baafd[_0x9d4d('0x2f')]);_0x25015c[_0x9d4d('0x33')]=_['intersection'](_0x9baafd[_0x9d4d('0x32')],qs[_0x9d4d('0x34')](_0x1e0adc['query'][_0x9d4d('0x34')]));_0x25015c['attributes']=_0x25015c['attributes'][_0x9d4d('0x35')]?_0x25015c['attributes']:_0x9baafd[_0x9d4d('0x32')];if(!_0x1e0adc[_0x9d4d('0x2f')]['hasOwnProperty'](_0x9d4d('0x36'))){_0x25015c['limit']=qs[_0x9d4d('0x1d')](_0x1e0adc[_0x9d4d('0x2f')][_0x9d4d('0x1d')]);_0x25015c[_0x9d4d('0x1b')]=qs[_0x9d4d('0x1b')](_0x1e0adc[_0x9d4d('0x2f')][_0x9d4d('0x1b')]);}_0x25015c[_0x9d4d('0x37')]=qs['sort'](_0x1e0adc['query'][_0x9d4d('0x38')]);_0x25015c[_0x9d4d('0x39')]=qs[_0x9d4d('0x3a')](_[_0x9d4d('0x3b')](_0x1e0adc['query'],_0x9baafd['filters']),_0x29ff82);if(_0x1e0adc[_0x9d4d('0x2f')][_0x9d4d('0x3c')]){_0x25015c[_0x9d4d('0x39')]=_[_0x9d4d('0x3d')](_0x25015c['where'],{'$or':_[_0x9d4d('0x2c')](_0x29ff82,function(_0x4fe865){if(_0x4fe865['type']!=='VIRTUAL'){var _0x1f3a5d={};_0x1f3a5d[_0x4fe865[_0x9d4d('0x29')]]={'$like':'%'+_0x1e0adc['query'][_0x9d4d('0x3c')]+'%'};return _0x1f3a5d;}})});}_0x25015c=_[_0x9d4d('0x3d')]({},_0x25015c,_0x1e0adc[_0x9d4d('0x3e')]);var _0x177929={'where':_0x25015c['where']};return db['FreshsalesField']['count'](_0x177929)[_0x9d4d('0x24')](function(_0x4a1d4c){_0x2f65e6[_0x9d4d('0x1e')]=_0x4a1d4c;if(_0x1e0adc['query'][_0x9d4d('0x3f')]){_0x25015c[_0x9d4d('0x40')]=[{'all':!![]}];}return db[_0x9d4d('0x41')]['findAll'](_0x25015c);})[_0x9d4d('0x24')](function(_0x181622){_0x2f65e6[_0x9d4d('0x42')]=_0x181622;return _0x2f65e6;})['then'](respondWithFilteredResult(_0x775692,_0x25015c))[_0x9d4d('0x43')](handleError(_0x775692,null));};exports[_0x9d4d('0x44')]=function(_0xdcedda,_0x4d1062){var _0x54b0c2={'raw':!![],'where':{'id':_0xdcedda['params']['id']}},_0x548bb3={};_0x548bb3['model']=_['keys'](db[_0x9d4d('0x41')][_0x9d4d('0x45')]);_0x548bb3[_0x9d4d('0x2f')]=_[_0x9d4d('0x30')](_0xdcedda[_0x9d4d('0x2f')]);_0x548bb3[_0x9d4d('0x3a')]=_[_0x9d4d('0x31')](_0x548bb3[_0x9d4d('0x32')],_0x548bb3[_0x9d4d('0x2f')]);_0x54b0c2['attributes']=_[_0x9d4d('0x31')](_0x548bb3[_0x9d4d('0x32')],qs[_0x9d4d('0x34')](_0xdcedda[_0x9d4d('0x2f')][_0x9d4d('0x34')]));_0x54b0c2[_0x9d4d('0x33')]=_0x54b0c2[_0x9d4d('0x33')][_0x9d4d('0x35')]?_0x54b0c2[_0x9d4d('0x33')]:_0x548bb3[_0x9d4d('0x32')];if(_0xdcedda['query'][_0x9d4d('0x3f')]){_0x54b0c2['include']=[{'all':!![]}];}_0x54b0c2=_[_0x9d4d('0x3d')]({},_0x54b0c2,_0xdcedda['options']);return db[_0x9d4d('0x41')][_0x9d4d('0x46')](_0x54b0c2)[_0x9d4d('0x24')](handleEntityNotFound(_0x4d1062,null))[_0x9d4d('0x24')](respondWithResult(_0x4d1062,null))[_0x9d4d('0x43')](handleError(_0x4d1062,null));};exports[_0x9d4d('0x47')]=function(_0x2abccf,_0x1be80a){return db[_0x9d4d('0x41')][_0x9d4d('0x47')](_0x2abccf['body'],{})[_0x9d4d('0x24')](respondWithResult(_0x1be80a,0xc9))['catch'](handleError(_0x1be80a,null));};exports[_0x9d4d('0x23')]=function(_0x29bcfd,_0x52a7fa){if(_0x29bcfd['body']['id']){delete _0x29bcfd['body']['id'];}return db['FreshsalesField'][_0x9d4d('0x46')]({'where':{'id':_0x29bcfd[_0x9d4d('0x48')]['id']}})['then'](handleEntityNotFound(_0x52a7fa,null))[_0x9d4d('0x24')](saveUpdates(_0x29bcfd[_0x9d4d('0x49')],null))[_0x9d4d('0x24')](respondWithResult(_0x52a7fa,null))[_0x9d4d('0x43')](handleError(_0x52a7fa,null));};exports[_0x9d4d('0x25')]=function(_0x4d6750,_0x461906){return db[_0x9d4d('0x41')][_0x9d4d('0x46')]({'where':{'id':_0x4d6750[_0x9d4d('0x48')]['id']}})[_0x9d4d('0x24')](handleEntityNotFound(_0x461906,null))['then'](removeEntity(_0x461906,null))[_0x9d4d('0x43')](handleError(_0x461906,null));};
\ No newline at end of file
+var _0x1358=['moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','name','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','keys','includeAll','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x18f529,_0x544967){var _0x2cda25=function(_0xb6b9ed){while(--_0xb6b9ed){_0x18f529['push'](_0x18f529['shift']());}};_0x2cda25(++_0x544967);}(_0x1358,0xda));var _0x8135=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x1358[_0x4bb66f];return _0xf2772f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8135('0x0'));var zipdir=require(_0x8135('0x1'));var jsonpatch=require(_0x8135('0x2'));var rp=require(_0x8135('0x3'));var moment=require(_0x8135('0x4'));var BPromise=require(_0x8135('0x5'));var Mustache=require(_0x8135('0x6'));var util=require(_0x8135('0x7'));var path=require(_0x8135('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8135('0x9'));var fs=require('fs');var fs_extra=require(_0x8135('0xa'));var _=require('lodash');var squel=require(_0x8135('0xb'));var crypto=require(_0x8135('0xc'));var jsforce=require(_0x8135('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8135('0xe'));var querystring=require('querystring');var Papa=require(_0x8135('0xf'));var Redis=require(_0x8135('0x10'));var authService=require(_0x8135('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8135('0x12'));var hardwareService=require(_0x8135('0x13'));var logger=require(_0x8135('0x14'))('api');var utils=require(_0x8135('0x15'));var config=require(_0x8135('0x16'));var licenseUtil=require(_0x8135('0x17'));var db=require(_0x8135('0x18'))['db'];function respondWithStatusCode(_0xfda9b8,_0xcd0658){_0xcd0658=_0xcd0658||0xcc;return function(_0x36df25){if(_0x36df25){return _0xfda9b8[_0x8135('0x19')](_0xcd0658);}return _0xfda9b8[_0x8135('0x1a')](_0xcd0658)['end']();};}function respondWithResult(_0x49f998,_0x473d92){_0x473d92=_0x473d92||0xc8;return function(_0x45d45a){if(_0x45d45a){return _0x49f998['status'](_0x473d92)[_0x8135('0x1b')](_0x45d45a);}};}function respondWithFilteredResult(_0x4b969b,_0x210c10){return function(_0x4199ea){if(_0x4199ea){var _0x308a0a=typeof _0x210c10[_0x8135('0x1c')]===_0x8135('0x1d')&&typeof _0x210c10[_0x8135('0x1e')]==='undefined';var _0x5701af=_0x4199ea['count'];var _0x56a91c=_0x308a0a?0x0:_0x210c10[_0x8135('0x1c')];var _0x1f28ea=_0x308a0a?_0x4199ea[_0x8135('0x1f')]:_0x210c10[_0x8135('0x1c')]+_0x210c10[_0x8135('0x1e')];var _0x568baf;if(_0x1f28ea>=_0x5701af){_0x1f28ea=_0x5701af;_0x568baf=0xc8;}else{_0x568baf=0xce;}_0x4b969b[_0x8135('0x1a')](_0x568baf);return _0x4b969b['set']('Content-Range',_0x56a91c+'-'+_0x1f28ea+'/'+_0x5701af)[_0x8135('0x1b')](_0x4199ea);}return null;};}function patchUpdates(_0x58da9b){return function(_0x399c37){try{jsonpatch[_0x8135('0x20')](_0x399c37,_0x58da9b,!![]);}catch(_0x4f1e69){return BPromise[_0x8135('0x21')](_0x4f1e69);}return _0x399c37[_0x8135('0x22')]();};}function saveUpdates(_0x36768b,_0x2b80af){return function(_0x2a769e){if(_0x2a769e){return _0x2a769e[_0x8135('0x23')](_0x36768b)[_0x8135('0x24')](function(_0x43840c){return _0x43840c;});}return null;};}function removeEntity(_0x411112,_0x580862){return function(_0x48ef19){if(_0x48ef19){return _0x48ef19[_0x8135('0x25')]()['then'](function(){_0x411112['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fec8b,_0x13a3e3){return function(_0x51b66a){if(!_0x51b66a){_0x2fec8b['sendStatus'](0x194);}return _0x51b66a;};}function handleError(_0x14477b,_0x3aa75e){_0x3aa75e=_0x3aa75e||0x1f4;return function(_0x555c3d){logger[_0x8135('0x26')](_0x555c3d['stack']);if(_0x555c3d['name']){delete _0x555c3d['name'];}_0x14477b[_0x8135('0x1a')](_0x3aa75e)[_0x8135('0x27')](_0x555c3d);};}exports[_0x8135('0x28')]=function(_0x21040c,_0x343200){var _0x24a493={},_0x5b9587={},_0xfda346={'count':0x0,'rows':[]};var _0x5c690b=_[_0x8135('0x29')](db[_0x8135('0x2a')][_0x8135('0x2b')],function(_0x9a6e84){return{'name':_0x9a6e84[_0x8135('0x2c')],'type':_0x9a6e84[_0x8135('0x2d')][_0x8135('0x2e')]};});_0x5b9587[_0x8135('0x2f')]=_[_0x8135('0x29')](_0x5c690b,_0x8135('0x30'));_0x5b9587['query']=_['keys'](_0x21040c[_0x8135('0x31')]);_0x5b9587['filters']=_[_0x8135('0x32')](_0x5b9587['model'],_0x5b9587[_0x8135('0x31')]);_0x24a493['attributes']=_[_0x8135('0x32')](_0x5b9587[_0x8135('0x2f')],qs[_0x8135('0x33')](_0x21040c[_0x8135('0x31')][_0x8135('0x33')]));_0x24a493[_0x8135('0x34')]=_0x24a493[_0x8135('0x34')][_0x8135('0x35')]?_0x24a493[_0x8135('0x34')]:_0x5b9587[_0x8135('0x2f')];if(!_0x21040c['query'][_0x8135('0x36')]('nolimit')){_0x24a493[_0x8135('0x1e')]=qs[_0x8135('0x1e')](_0x21040c[_0x8135('0x31')][_0x8135('0x1e')]);_0x24a493[_0x8135('0x1c')]=qs[_0x8135('0x1c')](_0x21040c[_0x8135('0x31')][_0x8135('0x1c')]);}_0x24a493[_0x8135('0x37')]=qs[_0x8135('0x38')](_0x21040c[_0x8135('0x31')][_0x8135('0x38')]);_0x24a493[_0x8135('0x39')]=qs[_0x8135('0x3a')](_['pick'](_0x21040c['query'],_0x5b9587[_0x8135('0x3a')]),_0x5c690b);if(_0x21040c[_0x8135('0x31')][_0x8135('0x3b')]){_0x24a493[_0x8135('0x39')]=_[_0x8135('0x3c')](_0x24a493['where'],{'$or':_[_0x8135('0x29')](_0x5c690b,function(_0x2c5591){if(_0x2c5591[_0x8135('0x2d')]!==_0x8135('0x3d')){var _0x4d50bd={};_0x4d50bd[_0x2c5591[_0x8135('0x30')]]={'$like':'%'+_0x21040c[_0x8135('0x31')][_0x8135('0x3b')]+'%'};return _0x4d50bd;}})});}_0x24a493=_[_0x8135('0x3c')]({},_0x24a493,_0x21040c[_0x8135('0x3e')]);var _0x1a73b1={'where':_0x24a493[_0x8135('0x39')]};return db[_0x8135('0x2a')]['count'](_0x1a73b1)[_0x8135('0x24')](function(_0x481dfb){_0xfda346[_0x8135('0x1f')]=_0x481dfb;if(_0x21040c['query']['includeAll']){_0x24a493[_0x8135('0x3f')]=[{'all':!![]}];}return db[_0x8135('0x2a')][_0x8135('0x40')](_0x24a493);})[_0x8135('0x24')](function(_0x64aff5){_0xfda346[_0x8135('0x41')]=_0x64aff5;return _0xfda346;})[_0x8135('0x24')](respondWithFilteredResult(_0x343200,_0x24a493))[_0x8135('0x42')](handleError(_0x343200,null));};exports[_0x8135('0x43')]=function(_0x27af97,_0x27ff8d){var _0x24eb10={'raw':!![],'where':{'id':_0x27af97['params']['id']}},_0xebb5f5={};_0xebb5f5[_0x8135('0x2f')]=_[_0x8135('0x44')](db[_0x8135('0x2a')][_0x8135('0x2b')]);_0xebb5f5['query']=_[_0x8135('0x44')](_0x27af97[_0x8135('0x31')]);_0xebb5f5['filters']=_[_0x8135('0x32')](_0xebb5f5[_0x8135('0x2f')],_0xebb5f5[_0x8135('0x31')]);_0x24eb10[_0x8135('0x34')]=_[_0x8135('0x32')](_0xebb5f5[_0x8135('0x2f')],qs['fields'](_0x27af97[_0x8135('0x31')]['fields']));_0x24eb10['attributes']=_0x24eb10[_0x8135('0x34')][_0x8135('0x35')]?_0x24eb10[_0x8135('0x34')]:_0xebb5f5['model'];if(_0x27af97['query'][_0x8135('0x45')]){_0x24eb10[_0x8135('0x3f')]=[{'all':!![]}];}_0x24eb10=_[_0x8135('0x3c')]({},_0x24eb10,_0x27af97['options']);return db[_0x8135('0x2a')][_0x8135('0x46')](_0x24eb10)['then'](handleEntityNotFound(_0x27ff8d,null))[_0x8135('0x24')](respondWithResult(_0x27ff8d,null))[_0x8135('0x42')](handleError(_0x27ff8d,null));};exports[_0x8135('0x47')]=function(_0x50931d,_0x34f587){return db[_0x8135('0x2a')][_0x8135('0x47')](_0x50931d[_0x8135('0x48')],{})[_0x8135('0x24')](respondWithResult(_0x34f587,0xc9))[_0x8135('0x42')](handleError(_0x34f587,null));};exports['update']=function(_0x5c863a,_0x29a5c4){if(_0x5c863a['body']['id']){delete _0x5c863a['body']['id'];}return db[_0x8135('0x2a')][_0x8135('0x46')]({'where':{'id':_0x5c863a['params']['id']}})[_0x8135('0x24')](handleEntityNotFound(_0x29a5c4,null))['then'](saveUpdates(_0x5c863a[_0x8135('0x48')],null))[_0x8135('0x24')](respondWithResult(_0x29a5c4,null))[_0x8135('0x42')](handleError(_0x29a5c4,null));};exports[_0x8135('0x25')]=function(_0x1c7620,_0x96f1ff){return db[_0x8135('0x2a')][_0x8135('0x46')]({'where':{'id':_0x1c7620[_0x8135('0x49')]['id']}})[_0x8135('0x24')](handleEntityNotFound(_0x96f1ff,null))[_0x8135('0x24')](removeEntity(_0x96f1ff,null))['catch'](handleError(_0x96f1ff,null));};
\ No newline at end of file
index 836da93..0f3bf06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['util','api','moment','bluebird','request-promise','path','../../config/environment','exports','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId'];(function(_0x5432a8,_0xb7e7c9){var _0x5cb923=function(_0x5d6e1f){while(--_0x5d6e1f){_0x5432a8['push'](_0x5432a8['shift']());}};_0x5cb923(++_0xb7e7c9);}(_0x5f66,0x1a0));var _0x65f6=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5f66[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var logger=require('../../config/logger')(_0x65f6('0x1'));var moment=require(_0x65f6('0x2'));var BPromise=require(_0x65f6('0x3'));var rp=require(_0x65f6('0x4'));var fs=require('fs');var path=require(_0x65f6('0x5'));var rimraf=require('rimraf');var config=require(_0x65f6('0x6'));var attributes=require('./intFreshsalesField.attributes');module[_0x65f6('0x7')]=function(_0x22b017,_0x4ec221){return _0x22b017['define'](_0x65f6('0x8'),attributes,{'tableName':_0x65f6('0x9'),'paranoid':![],'indexes':[{'name':_0x65f6('0xa'),'fields':[_0x65f6('0xb'),_0x65f6('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c1a=['FieldId','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','idField'];(function(_0x3d089a,_0x3265a9){var _0x18db66=function(_0x546a84){while(--_0x546a84){_0x3d089a['push'](_0x3d089a['shift']());}};_0x18db66(++_0x3265a9);}(_0x0c1a,0x127));var _0xa0c1=function(_0x43191b,_0x52b02d){_0x43191b=_0x43191b-0x0;var _0x41e6e0=_0x0c1a[_0x43191b];return _0x41e6e0;};'use strict';var _=require(_0xa0c1('0x0'));var util=require(_0xa0c1('0x1'));var logger=require(_0xa0c1('0x2'))('api');var moment=require('moment');var BPromise=require(_0xa0c1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa0c1('0x4'));var rimraf=require(_0xa0c1('0x5'));var config=require(_0xa0c1('0x6'));var attributes=require(_0xa0c1('0x7'));module[_0xa0c1('0x8')]=function(_0x44538a,_0x199950){return _0x44538a[_0xa0c1('0x9')](_0xa0c1('0xa'),attributes,{'tableName':_0xa0c1('0xb'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xa0c1('0xc'),_0xa0c1('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0fb76c5..f1bf497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x374978,_0x4617a1){var _0x41fad8=function(_0x4cddf3){while(--_0x4cddf3){_0x374978['push'](_0x374978['shift']());}};_0x41fad8(++_0x4617a1);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x11606f,_0x536a7a){_0x11606f=_0x11606f-0x0;var _0x971fbd=_0xb4c7[_0x11606f];return _0x971fbd;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var moment=require(_0x7b4c('0x2'));var BPromise=require(_0x7b4c('0x3'));var rs=require(_0x7b4c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b4c('0x5'))['db'];var utils=require(_0x7b4c('0x6'));var logger=require(_0x7b4c('0x7'))(_0x7b4c('0x8'));var config=require(_0x7b4c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7b4c('0xa')][_0x7b4c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2dd5c7,_0x4bf85d,_0x2d7b7e){return new BPromise(function(_0x21687f,_0x570daa){return client[_0x7b4c('0xc')](_0x2dd5c7,_0x2d7b7e)[_0x7b4c('0xd')](function(_0x28e902){logger[_0x7b4c('0xe')](_0x7b4c('0xf'),_0x4bf85d,_0x7b4c('0x10'));logger[_0x7b4c('0x11')](_0x7b4c('0x12'),_0x4bf85d,_0x7b4c('0x10'),JSON[_0x7b4c('0x13')](_0x28e902));if(_0x28e902['error']){if(_0x28e902['error'][_0x7b4c('0x14')]===0x1f4){logger[_0x7b4c('0x15')](_0x7b4c('0xf'),_0x4bf85d,_0x28e902[_0x7b4c('0x15')][_0x7b4c('0x16')]);return _0x570daa(_0x28e902[_0x7b4c('0x15')][_0x7b4c('0x16')]);}logger[_0x7b4c('0x15')](_0x7b4c('0xf'),_0x4bf85d,_0x28e902[_0x7b4c('0x15')]['message']);return _0x21687f(_0x28e902[_0x7b4c('0x15')][_0x7b4c('0x16')]);}else{logger[_0x7b4c('0xe')](_0x7b4c('0xf'),_0x4bf85d,_0x7b4c('0x10'));_0x21687f(_0x28e902[_0x7b4c('0x17')][_0x7b4c('0x16')]);}})[_0x7b4c('0x18')](function(_0x4d3f5e){logger[_0x7b4c('0x15')](_0x7b4c('0xf'),_0x4bf85d,_0x4d3f5e);_0x570daa(_0x4d3f5e);});});}
\ No newline at end of file
+var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x2af160,_0x765b1){var _0x439d67=function(_0x4d26af){while(--_0x4d26af){_0x2af160['push'](_0x2af160['shift']());}};_0x439d67(++_0x765b1);}(_0x524e,0x15e));var _0xe524=function(_0x21e4cf,_0x38c9d4){_0x21e4cf=_0x21e4cf-0x0;var _0x4e860c=_0x524e[_0x21e4cf];return _0x4e860c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('FreshsalesField,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('FreshsalesField,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
index e4a73a9..615bdbe 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(_0x146faa,_0x114377){var _0x5b8f9e=function(_0x2c7602){while(--_0x2c7602){_0x146faa['push'](_0x146faa['shift']());}};_0x5b8f9e(++_0x114377);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _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(_0x470cba,_0x761e9c){var _0x542639=function(_0xfe3010){while(--_0xfe3010){_0x470cba['push'](_0x470cba['shift']());}};_0x542639(++_0x761e9c);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 6439faa..df40841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b3=['username','ENUM','integrationTab','sequelize','exports','STRING'];(function(_0x16ae9a,_0x474e98){var _0x40229e=function(_0x3eb4d6){while(--_0x3eb4d6){_0x16ae9a['push'](_0x16ae9a['shift']());}};_0x40229e(++_0x474e98);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x1a17f3,_0x27b161){_0x1a17f3=_0x1a17f3-0x0;var _0x2fbdb3=_0xe3b3[_0x1a17f3];return _0x2fbdb3;};'use strict';var Sequelize=require(_0x3e3b('0x0'));module[_0x3e3b('0x1')]={'name':{'type':Sequelize[_0x3e3b('0x2')]},'description':{'type':Sequelize[_0x3e3b('0x2')]},'username':{'type':Sequelize[_0x3e3b('0x2')],'unique':_0x3e3b('0x3')},'remoteUri':{'type':Sequelize[_0x3e3b('0x2')]},'password':{'type':Sequelize[_0x3e3b('0x2')]},'clientId':{'type':Sequelize[_0x3e3b('0x2')]},'clientSecret':{'type':Sequelize[_0x3e3b('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x3e3b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x3e3b('0x4')](_0x3e3b('0x5'),'newTab'),'defaultValue':_0x3e3b('0x5')}};
\ No newline at end of file
+var _0x1c63=['STRING','username','ENUM','integrationTab','sequelize','exports'];(function(_0x13f3a0,_0x186314){var _0x172b3c=function(_0xe9293b){while(--_0xe9293b){_0x13f3a0['push'](_0x13f3a0['shift']());}};_0x172b3c(++_0x186314);}(_0x1c63,0xdc));var _0x31c6=function(_0x5c7883,_0x2d0e2e){_0x5c7883=_0x5c7883-0x0;var _0x2e4777=_0x1c63[_0x5c7883];return _0x2e4777;};'use strict';var Sequelize=require(_0x31c6('0x0'));module[_0x31c6('0x1')]={'name':{'type':Sequelize[_0x31c6('0x2')]},'description':{'type':Sequelize[_0x31c6('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x31c6('0x3')},'remoteUri':{'type':Sequelize[_0x31c6('0x2')]},'password':{'type':Sequelize[_0x31c6('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x31c6('0x2')]},'securityToken':{'type':Sequelize[_0x31c6('0x2')]},'serverUrl':{'type':Sequelize[_0x31c6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x31c6('0x4')](_0x31c6('0x5'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
index ef85cbb..0db2d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5f=['json','save','then','destroy','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','sort','where','pick','filter','merge','options','include','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','SalesforceConfiguration','length','order','nolimit','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','SalesforceField','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','picklist','email','remove','includes','label','custom','picklistValues','boolean','True','true','False','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range'];(function(_0x8d0c67,_0x1c98ce){var _0x312d94=function(_0x2b070b){while(--_0x2b070b){_0x8d0c67['push'](_0x8d0c67['shift']());}};_0x312d94(++_0x1c98ce);}(_0x6d5f,0xcf));var _0xf6d5=function(_0x8afaa9,_0x4c3138){_0x8afaa9=_0x8afaa9-0x0;var _0x3c1ad0=_0x6d5f[_0x8afaa9];return _0x3c1ad0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6d5('0x0'));var zipdir=require(_0xf6d5('0x1'));var jsonpatch=require(_0xf6d5('0x2'));var rp=require('request-promise');var moment=require(_0xf6d5('0x3'));var BPromise=require(_0xf6d5('0x4'));var Mustache=require(_0xf6d5('0x5'));var util=require(_0xf6d5('0x6'));var path=require(_0xf6d5('0x7'));var sox=require(_0xf6d5('0x8'));var csv=require('to-csv');var ejs=require(_0xf6d5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6d5('0xa'));var squel=require(_0xf6d5('0xb'));var crypto=require('crypto');var jsforce=require(_0xf6d5('0xc'));var deskjs=require(_0xf6d5('0xd'));var toCsv=require(_0xf6d5('0xe'));var querystring=require(_0xf6d5('0xf'));var Papa=require(_0xf6d5('0x10'));var Redis=require('ioredis');var authService=require(_0xf6d5('0x11'));var qs=require(_0xf6d5('0x12'));var as=require(_0xf6d5('0x13'));var hardwareService=require(_0xf6d5('0x14'));var logger=require(_0xf6d5('0x15'))(_0xf6d5('0x16'));var utils=require(_0xf6d5('0x17'));var config=require(_0xf6d5('0x18'));var licenseUtil=require(_0xf6d5('0x19'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f1ea5,_0x4f6ed4){_0x4f6ed4=_0x4f6ed4||0xcc;return function(_0x2fc26a){if(_0x2fc26a){return _0x1f1ea5[_0xf6d5('0x1a')](_0x4f6ed4);}return _0x1f1ea5['status'](_0x4f6ed4)[_0xf6d5('0x1b')]();};}function respondWithResult(_0x9525f6,_0x48ce8d){_0x48ce8d=_0x48ce8d||0xc8;return function(_0x5b7b51){if(_0x5b7b51){return _0x9525f6[_0xf6d5('0x1c')](_0x48ce8d)['json'](_0x5b7b51);}};}function respondWithFilteredResult(_0x250c89,_0x2af9c7){return function(_0x183a39){if(_0x183a39){var _0x15b08d=typeof _0x2af9c7[_0xf6d5('0x1d')]===_0xf6d5('0x1e')&&typeof _0x2af9c7[_0xf6d5('0x1f')]===_0xf6d5('0x1e');var _0x256e58=_0x183a39['count'];var _0x3536b5=_0x15b08d?0x0:_0x2af9c7[_0xf6d5('0x1d')];var _0x3ac2ca=_0x15b08d?_0x183a39[_0xf6d5('0x20')]:_0x2af9c7[_0xf6d5('0x1d')]+_0x2af9c7['limit'];var _0x33a114;if(_0x3ac2ca>=_0x256e58){_0x3ac2ca=_0x256e58;_0x33a114=0xc8;}else{_0x33a114=0xce;}_0x250c89['status'](_0x33a114);return _0x250c89[_0xf6d5('0x21')](_0xf6d5('0x22'),_0x3536b5+'-'+_0x3ac2ca+'/'+_0x256e58)[_0xf6d5('0x23')](_0x183a39);}return null;};}function patchUpdates(_0x4c877f){return function(_0x24d066){try{jsonpatch['apply'](_0x24d066,_0x4c877f,!![]);}catch(_0x173be3){return BPromise['reject'](_0x173be3);}return _0x24d066[_0xf6d5('0x24')]();};}function saveUpdates(_0x10d1df,_0x5c36f9){return function(_0x1999a0){if(_0x1999a0){return _0x1999a0['update'](_0x10d1df)[_0xf6d5('0x25')](function(_0xcf7388){return _0xcf7388;});}return null;};}function removeEntity(_0x493245,_0x20985b){return function(_0x31d290){if(_0x31d290){return _0x31d290[_0xf6d5('0x26')]()['then'](function(){_0x493245['status'](0xcc)[_0xf6d5('0x1b')]();});}};}function handleEntityNotFound(_0x251c7f,_0x2b1c88){return function(_0x3362fb){if(!_0x3362fb){_0x251c7f[_0xf6d5('0x1a')](0x194);}return _0x3362fb;};}function handleError(_0x37d321,_0x3597e3){_0x3597e3=_0x3597e3||0x1f4;return function(_0x372088){logger[_0xf6d5('0x27')](_0x372088[_0xf6d5('0x28')]);if(_0x372088[_0xf6d5('0x29')]){delete _0x372088[_0xf6d5('0x29')];}_0x37d321[_0xf6d5('0x1c')](_0x3597e3)[_0xf6d5('0x2a')](_0x372088);};}exports[_0xf6d5('0x2b')]=function(_0x3b68b4,_0x52617f){var _0x44b985={},_0x2961a1={},_0x32c48a={'count':0x0,'rows':[]};var _0xd806d=_[_0xf6d5('0x2c')](db[_0xf6d5('0x2d')][_0xf6d5('0x2e')],function(_0x26644a){return{'name':_0x26644a[_0xf6d5('0x2f')],'type':_0x26644a[_0xf6d5('0x30')][_0xf6d5('0x31')]};});_0x2961a1['model']=_[_0xf6d5('0x2c')](_0xd806d,_0xf6d5('0x29'));_0x2961a1[_0xf6d5('0x32')]=_[_0xf6d5('0x33')](_0x3b68b4['query']);_0x2961a1[_0xf6d5('0x34')]=_[_0xf6d5('0x35')](_0x2961a1['model'],_0x2961a1[_0xf6d5('0x32')]);_0x44b985[_0xf6d5('0x36')]=_[_0xf6d5('0x35')](_0x2961a1[_0xf6d5('0x37')],qs['fields'](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x38')]));_0x44b985[_0xf6d5('0x36')]=_0x44b985[_0xf6d5('0x36')]['length']?_0x44b985[_0xf6d5('0x36')]:_0x2961a1[_0xf6d5('0x37')];if(!_0x3b68b4['query'][_0xf6d5('0x39')]('nolimit')){_0x44b985['limit']=qs[_0xf6d5('0x1f')](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x1f')]);_0x44b985[_0xf6d5('0x1d')]=qs[_0xf6d5('0x1d')](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x1d')]);}_0x44b985['order']=qs[_0xf6d5('0x3a')](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x3a')]);_0x44b985[_0xf6d5('0x3b')]=qs[_0xf6d5('0x34')](_[_0xf6d5('0x3c')](_0x3b68b4['query'],_0x2961a1['filters']),_0xd806d);if(_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x3d')]){_0x44b985['where']=_[_0xf6d5('0x3e')](_0x44b985[_0xf6d5('0x3b')],{'$or':_['map'](_0xd806d,function(_0x81dee5){if(_0x81dee5[_0xf6d5('0x30')]!=='VIRTUAL'){var _0x1f9812={};_0x1f9812[_0x81dee5[_0xf6d5('0x29')]]={'$like':'%'+_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x3d')]+'%'};return _0x1f9812;}})});}_0x44b985=_[_0xf6d5('0x3e')]({},_0x44b985,_0x3b68b4[_0xf6d5('0x3f')]);var _0x38634c={'where':_0x44b985['where']};return db[_0xf6d5('0x2d')][_0xf6d5('0x20')](_0x38634c)[_0xf6d5('0x25')](function(_0x12126f){_0x32c48a[_0xf6d5('0x20')]=_0x12126f;if(_0x3b68b4[_0xf6d5('0x32')]['includeAll']){_0x44b985[_0xf6d5('0x40')]=[{'all':!![]}];}return db[_0xf6d5('0x2d')]['findAll'](_0x44b985);})['then'](function(_0x57d783){_0x32c48a['rows']=_0x57d783;return _0x32c48a;})['then'](respondWithFilteredResult(_0x52617f,_0x44b985))[_0xf6d5('0x41')](handleError(_0x52617f,null));};exports[_0xf6d5('0x42')]=function(_0x3112de,_0x13227e){var _0x126de3={'raw':![],'where':{'id':_0x3112de[_0xf6d5('0x43')]['id']}},_0x2f45e5={};_0x2f45e5['model']=_[_0xf6d5('0x33')](db[_0xf6d5('0x2d')][_0xf6d5('0x2e')]);_0x2f45e5[_0xf6d5('0x32')]=_[_0xf6d5('0x33')](_0x3112de['query']);_0x2f45e5['filters']=_[_0xf6d5('0x35')](_0x2f45e5[_0xf6d5('0x37')],_0x2f45e5[_0xf6d5('0x32')]);_0x126de3[_0xf6d5('0x36')]=_[_0xf6d5('0x35')](_0x2f45e5[_0xf6d5('0x37')],qs[_0xf6d5('0x38')](_0x3112de[_0xf6d5('0x32')]['fields']));_0x126de3['attributes']=_0x126de3[_0xf6d5('0x36')]['length']?_0x126de3[_0xf6d5('0x36')]:_0x2f45e5[_0xf6d5('0x37')];if(_0x3112de[_0xf6d5('0x32')][_0xf6d5('0x44')]){_0x126de3[_0xf6d5('0x40')]=[{'all':!![]}];}_0x126de3=_[_0xf6d5('0x3e')]({},_0x126de3,_0x3112de[_0xf6d5('0x3f')]);return db[_0xf6d5('0x2d')][_0xf6d5('0x45')](_0x126de3)[_0xf6d5('0x25')](handleEntityNotFound(_0x13227e,null))[_0xf6d5('0x25')](respondWithResult(_0x13227e,null))[_0xf6d5('0x41')](handleError(_0x13227e,null));};exports[_0xf6d5('0x46')]=function(_0x4e5fcd,_0x97f124){return db[_0xf6d5('0x2d')][_0xf6d5('0x46')](_0x4e5fcd[_0xf6d5('0x47')],{})[_0xf6d5('0x25')](respondWithResult(_0x97f124,0xc9))[_0xf6d5('0x41')](handleError(_0x97f124,null));};exports['update']=function(_0x1a0c5a,_0x2d8d0a){if(_0x1a0c5a[_0xf6d5('0x47')]['id']){delete _0x1a0c5a[_0xf6d5('0x47')]['id'];}return db['SalesforceAccount'][_0xf6d5('0x45')]({'where':{'id':_0x1a0c5a[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0x2d8d0a,null))[_0xf6d5('0x25')](saveUpdates(_0x1a0c5a[_0xf6d5('0x47')],null))[_0xf6d5('0x25')](respondWithResult(_0x2d8d0a,null))[_0xf6d5('0x41')](handleError(_0x2d8d0a,null));};exports[_0xf6d5('0x26')]=function(_0x267569,_0xe370a9){return db['SalesforceAccount']['find']({'where':{'id':_0x267569[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0xe370a9,null))[_0xf6d5('0x25')](removeEntity(_0xe370a9,null))['catch'](handleError(_0xe370a9,null));};exports[_0xf6d5('0x48')]=function(_0x5dceb4,_0xc2ce02,_0x1512e3){var _0x496910={};var _0xa70e8a={};var _0x4e921e;var _0x4c7bc2;return db[_0xf6d5('0x2d')][_0xf6d5('0x49')]({'where':{'id':_0x5dceb4[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0xc2ce02,null))[_0xf6d5('0x25')](function(_0x22c126){if(_0x22c126){_0x4e921e=_0x22c126;_0xa70e8a[_0xf6d5('0x37')]=_[_0xf6d5('0x33')](db[_0xf6d5('0x4a')][_0xf6d5('0x2e')]);_0xa70e8a[_0xf6d5('0x32')]=_[_0xf6d5('0x33')](_0x5dceb4['query']);_0xa70e8a[_0xf6d5('0x34')]=_['intersection'](_0xa70e8a[_0xf6d5('0x37')],_0xa70e8a[_0xf6d5('0x32')]);_0x496910[_0xf6d5('0x36')]=_[_0xf6d5('0x35')](_0xa70e8a[_0xf6d5('0x37')],qs[_0xf6d5('0x38')](_0x5dceb4[_0xf6d5('0x32')]['fields']));_0x496910[_0xf6d5('0x36')]=_0x496910[_0xf6d5('0x36')][_0xf6d5('0x4b')]?_0x496910[_0xf6d5('0x36')]:_0xa70e8a[_0xf6d5('0x37')];_0x496910[_0xf6d5('0x4c')]=qs[_0xf6d5('0x3a')](_0x5dceb4[_0xf6d5('0x32')][_0xf6d5('0x3a')]);_0x496910[_0xf6d5('0x3b')]=qs['filters'](_[_0xf6d5('0x3c')](_0x5dceb4[_0xf6d5('0x32')],_0xa70e8a[_0xf6d5('0x34')]));if(_0x5dceb4[_0xf6d5('0x32')]['filter']){_0x496910[_0xf6d5('0x3b')]=_[_0xf6d5('0x3e')](_0x496910[_0xf6d5('0x3b')],{'$or':_[_0xf6d5('0x2c')](_0x496910[_0xf6d5('0x36')],function(_0x41815d){var _0x46f944={};_0x46f944[_0x41815d]={'$like':'%'+_0x5dceb4[_0xf6d5('0x32')][_0xf6d5('0x3d')]+'%'};return _0x46f944;})});}_0x496910=_[_0xf6d5('0x3e')]({},_0x496910,_0x5dceb4[_0xf6d5('0x3f')]);return _0x4e921e[_0xf6d5('0x48')](_0x496910);}})[_0xf6d5('0x25')](function(_0x3e8020){if(_0x3e8020){_0x4c7bc2=_0x3e8020['length'];if(!_0x5dceb4[_0xf6d5('0x32')]['hasOwnProperty'](_0xf6d5('0x4d'))){_0x496910[_0xf6d5('0x1f')]=qs[_0xf6d5('0x1f')](_0x5dceb4[_0xf6d5('0x32')]['limit']);_0x496910[_0xf6d5('0x1d')]=qs[_0xf6d5('0x1d')](_0x5dceb4[_0xf6d5('0x32')][_0xf6d5('0x1d')]);}return _0x4e921e[_0xf6d5('0x48')](_0x496910);}})[_0xf6d5('0x25')](function(_0x24c2c2){if(_0x24c2c2){return _0x24c2c2?{'count':_0x4c7bc2,'rows':_0x24c2c2}:null;}})[_0xf6d5('0x25')](respondWithResult(_0xc2ce02,null))[_0xf6d5('0x41')](handleError(_0xc2ce02,null));};exports[_0xf6d5('0x4e')]=function(_0x1e0f34,_0x5da875,_0xb3641){if(_0x1e0f34[_0xf6d5('0x47')]['id']){delete _0x1e0f34['body']['id'];}return db['SalesforceAccount'][_0xf6d5('0x49')]({'where':{'id':_0x1e0f34[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0x5da875,null))[_0xf6d5('0x25')](function(_0x4a3fc3){if(_0x4a3fc3){_0x1e0f34['body']['AccountId']=_0x4a3fc3['id'];_0x1e0f34[_0xf6d5('0x47')][_0xf6d5('0x4f')]=integrations[_0xf6d5('0x50')](_0x1e0f34[_0xf6d5('0x47')]['channel'],_0x1e0f34[_0xf6d5('0x47')]['type']);_0x1e0f34[_0xf6d5('0x47')][_0xf6d5('0x51')]=integrations[_0xf6d5('0x52')](_0x1e0f34[_0xf6d5('0x47')]['channel'],_0x1e0f34['body']['type']);return db['SalesforceConfiguration'][_0xf6d5('0x46')](_0x1e0f34[_0xf6d5('0x47')],{'include':[{'model':db['SalesforceField'],'as':_0xf6d5('0x4f')},{'model':db[_0xf6d5('0x53')],'as':'Descriptions'}]});}return null;})[_0xf6d5('0x25')](respondWithResult(_0x5da875,null))[_0xf6d5('0x41')](handleError(_0x5da875,null));};exports['getFields']=function(_0x46e3e4,_0x5cc009,_0x1ffb35){var _0x4ac37d;var _0x5db4f2='';var _0x3f086e='Task';return db['SalesforceAccount'][_0xf6d5('0x49')]({'where':{'id':_0x46e3e4[_0xf6d5('0x43')]['id']},'attributes':['id',_0xf6d5('0x54'),_0xf6d5('0x55'),_0xf6d5('0x56'),_0xf6d5('0x57'),_0xf6d5('0x58'),_0xf6d5('0x59')]})[_0xf6d5('0x25')](handleEntityNotFound(_0x5cc009,null))['then'](function(_0x20a750){if(_0x20a750){_0x5db4f2=_0x20a750[_0xf6d5('0x54')];var _0x1b32be=_0x5db4f2[_0xf6d5('0x5a')](-0x1);if(_0x1b32be==='/'){_0x5db4f2=_0x5db4f2[_0xf6d5('0x5b')](0x0,_0x5db4f2[_0xf6d5('0x5c')](_0x1b32be));}_0x4ac37d=new jsforce['Connection']({'oauth2':{'loginUrl':_0x5db4f2,'clientId':_0x20a750[_0xf6d5('0x55')],'clientSecret':_0x20a750[_0xf6d5('0x56')]}});return _0x4ac37d['login'](_0x20a750['username'],_0x20a750['password'][_0xf6d5('0x5d')](_0x20a750[_0xf6d5('0x59')]));}})[_0xf6d5('0x25')](function(_0x480d9a){if(_0x480d9a){if(!_[_0xf6d5('0x5e')](_0x46e3e4['query'][_0xf6d5('0x5f')])){_0x3f086e=_0x46e3e4['query'][_0xf6d5('0x5f')];}return _0x4ac37d[_0xf6d5('0x60')](_0x3f086e)[_0xf6d5('0x61')]();}})[_0xf6d5('0x25')](function(_0x170300){var _0x111185=[_0xf6d5('0x62'),_0xf6d5('0x63'),_0xf6d5('0x64'),_0xf6d5('0x65'),_0xf6d5('0x66'),_0xf6d5('0x67')];var _0x517294=['string','int',_0xf6d5('0x68'),'boolean',_0xf6d5('0x69'),'textarea','phone'];if(_0x170300){_[_0xf6d5('0x6a')](_0x170300['fields'],function(_0x263e86){return _0x111185[_0xf6d5('0x6b')](_0x263e86['name'])||!_0x517294[_0xf6d5('0x6b')](_0x263e86[_0xf6d5('0x30')]);});return{'count':_0x170300[_0xf6d5('0x38')][_0xf6d5('0x4b')],'rows':_['map'](_0x170300[_0xf6d5('0x38')],function(_0x23bee9){return{'id':_0x23bee9[_0xf6d5('0x29')],'name':_0x23bee9[_0xf6d5('0x6c')],'custom':_0x23bee9[_0xf6d5('0x6d')],'options':_0x23bee9[_0xf6d5('0x6e')][_0xf6d5('0x4b')]>0x0?_['map'](_0x23bee9[_0xf6d5('0x6e')],function(_0xddce16){return{'name':_0xddce16['label'],'value':_0xddce16['value']};}):_0x23bee9[_0xf6d5('0x30')]==_0xf6d5('0x6f')?[{'name':_0xf6d5('0x70'),'value':_0xf6d5('0x71')},{'name':_0xf6d5('0x72'),'value':'false'}]:[]};})};}})['then'](respondWithResult(_0x5cc009,null))[_0xf6d5('0x41')](function(_0x4806a4){var _0x2c1716=_0x46e3e4[_0xf6d5('0x32')][_0xf6d5('0x73')]?0x1f4:_0x4806a4[_0xf6d5('0x74')]||0x1f4;logger[_0xf6d5('0x27')](_0xf6d5('0x75'),_0xf6d5('0x76'),_0x2c1716,JSON[_0xf6d5('0x77')](_0x4806a4));delete _0x4806a4[_0xf6d5('0x29')];if(_0x2c1716===0x191){_0x2c1716=0x190;}_0x5cc009['status'](_0x2c1716)[_0xf6d5('0x2a')](_0x46e3e4[_0xf6d5('0x32')][_0xf6d5('0x73')]?{'message':_0xf6d5('0x78'),'statusCode':_0x4806a4[_0xf6d5('0x74')]}:_0x4806a4);});};
\ No newline at end of file
+var _0x4917=['offset','count','limit','status','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','SalesforceAccount','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','create','body','find','params','getConfigurations','SalesforceConfiguration','nolimit','findOne','Subjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','clientSecret','username','password','securityToken','substring','lastIndexOf','Connection','login','concat','isNil','ticketType','sobject','OwnerId','ActivityDate','IsReminderSet','Description','string','picklist','boolean','textarea','remove','includes','label','picklistValues','value','True','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','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','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json'];(function(_0x3ffe92,_0xfaaf86){var _0x192cdf=function(_0x3479e5){while(--_0x3479e5){_0x3ffe92['push'](_0x3ffe92['shift']());}};_0x192cdf(++_0xfaaf86);}(_0x4917,0x141));var _0x7491=function(_0x10ad71,_0x3054aa){_0x10ad71=_0x10ad71-0x0;var _0x812e9=_0x4917[_0x10ad71];return _0x812e9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7491('0x0'));var jsonpatch=require(_0x7491('0x1'));var rp=require(_0x7491('0x2'));var moment=require(_0x7491('0x3'));var BPromise=require(_0x7491('0x4'));var Mustache=require('mustache');var util=require(_0x7491('0x5'));var path=require(_0x7491('0x6'));var sox=require(_0x7491('0x7'));var csv=require(_0x7491('0x8'));var ejs=require(_0x7491('0x9'));var fs=require('fs');var fs_extra=require(_0x7491('0xa'));var _=require(_0x7491('0xb'));var squel=require(_0x7491('0xc'));var crypto=require(_0x7491('0xd'));var jsforce=require(_0x7491('0xe'));var deskjs=require(_0x7491('0xf'));var toCsv=require(_0x7491('0x8'));var querystring=require('querystring');var Papa=require(_0x7491('0x10'));var Redis=require(_0x7491('0x11'));var authService=require(_0x7491('0x12'));var qs=require(_0x7491('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7491('0x14'));var logger=require(_0x7491('0x15'))('api');var utils=require(_0x7491('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7491('0x17'));var db=require(_0x7491('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x16eec5,_0x3b6167){_0x3b6167=_0x3b6167||0xcc;return function(_0x4955de){if(_0x4955de){return _0x16eec5[_0x7491('0x19')](_0x3b6167);}return _0x16eec5['status'](_0x3b6167)['end']();};}function respondWithResult(_0x36de23,_0x4a5918){_0x4a5918=_0x4a5918||0xc8;return function(_0x135b86){if(_0x135b86){return _0x36de23['status'](_0x4a5918)[_0x7491('0x1a')](_0x135b86);}};}function respondWithFilteredResult(_0x38077a,_0x528fc9){return function(_0x435c83){if(_0x435c83){var _0xfb183f=typeof _0x528fc9[_0x7491('0x1b')]==='undefined'&&typeof _0x528fc9['limit']==='undefined';var _0x3e88f2=_0x435c83['count'];var _0x45c6f1=_0xfb183f?0x0:_0x528fc9[_0x7491('0x1b')];var _0x847736=_0xfb183f?_0x435c83[_0x7491('0x1c')]:_0x528fc9[_0x7491('0x1b')]+_0x528fc9[_0x7491('0x1d')];var _0x4e99ce;if(_0x847736>=_0x3e88f2){_0x847736=_0x3e88f2;_0x4e99ce=0xc8;}else{_0x4e99ce=0xce;}_0x38077a[_0x7491('0x1e')](_0x4e99ce);return _0x38077a['set'](_0x7491('0x1f'),_0x45c6f1+'-'+_0x847736+'/'+_0x3e88f2)[_0x7491('0x1a')](_0x435c83);}return null;};}function patchUpdates(_0x1c55cc){return function(_0x1e0303){try{jsonpatch[_0x7491('0x20')](_0x1e0303,_0x1c55cc,!![]);}catch(_0x588a3f){return BPromise[_0x7491('0x21')](_0x588a3f);}return _0x1e0303[_0x7491('0x22')]();};}function saveUpdates(_0x560a2c,_0x1861bc){return function(_0x1a01ba){if(_0x1a01ba){return _0x1a01ba[_0x7491('0x23')](_0x560a2c)[_0x7491('0x24')](function(_0x462b8d){return _0x462b8d;});}return null;};}function removeEntity(_0x139b49,_0x26ca76){return function(_0x5caa77){if(_0x5caa77){return _0x5caa77[_0x7491('0x25')]()['then'](function(){_0x139b49[_0x7491('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x511ecd,_0x247c7d){return function(_0x43b628){if(!_0x43b628){_0x511ecd['sendStatus'](0x194);}return _0x43b628;};}function handleError(_0x4b9a8f,_0x171479){_0x171479=_0x171479||0x1f4;return function(_0x1a83cb){logger[_0x7491('0x26')](_0x1a83cb['stack']);if(_0x1a83cb[_0x7491('0x27')]){delete _0x1a83cb[_0x7491('0x27')];}_0x4b9a8f[_0x7491('0x1e')](_0x171479)['send'](_0x1a83cb);};}exports[_0x7491('0x28')]=function(_0x57cc62,_0x33d386){var _0x483678={},_0x26e210={},_0x24b78a={'count':0x0,'rows':[]};var _0x40e3a6=_[_0x7491('0x29')](db[_0x7491('0x2a')][_0x7491('0x2b')],function(_0x1f1b19){return{'name':_0x1f1b19['fieldName'],'type':_0x1f1b19[_0x7491('0x2c')][_0x7491('0x2d')]};});_0x26e210[_0x7491('0x2e')]=_[_0x7491('0x29')](_0x40e3a6,'name');_0x26e210[_0x7491('0x2f')]=_[_0x7491('0x30')](_0x57cc62[_0x7491('0x2f')]);_0x26e210[_0x7491('0x31')]=_[_0x7491('0x32')](_0x26e210[_0x7491('0x2e')],_0x26e210['query']);_0x483678['attributes']=_[_0x7491('0x32')](_0x26e210[_0x7491('0x2e')],qs[_0x7491('0x33')](_0x57cc62[_0x7491('0x2f')][_0x7491('0x33')]));_0x483678[_0x7491('0x34')]=_0x483678[_0x7491('0x34')][_0x7491('0x35')]?_0x483678[_0x7491('0x34')]:_0x26e210['model'];if(!_0x57cc62[_0x7491('0x2f')][_0x7491('0x36')]('nolimit')){_0x483678[_0x7491('0x1d')]=qs['limit'](_0x57cc62[_0x7491('0x2f')][_0x7491('0x1d')]);_0x483678[_0x7491('0x1b')]=qs[_0x7491('0x1b')](_0x57cc62[_0x7491('0x2f')][_0x7491('0x1b')]);}_0x483678[_0x7491('0x37')]=qs[_0x7491('0x38')](_0x57cc62[_0x7491('0x2f')][_0x7491('0x38')]);_0x483678[_0x7491('0x39')]=qs[_0x7491('0x31')](_[_0x7491('0x3a')](_0x57cc62['query'],_0x26e210['filters']),_0x40e3a6);if(_0x57cc62[_0x7491('0x2f')][_0x7491('0x3b')]){_0x483678['where']=_[_0x7491('0x3c')](_0x483678['where'],{'$or':_[_0x7491('0x29')](_0x40e3a6,function(_0x570921){if(_0x570921[_0x7491('0x2c')]!==_0x7491('0x3d')){var _0x485d89={};_0x485d89[_0x570921['name']]={'$like':'%'+_0x57cc62['query'][_0x7491('0x3b')]+'%'};return _0x485d89;}})});}_0x483678=_['merge']({},_0x483678,_0x57cc62[_0x7491('0x3e')]);var _0x4438cf={'where':_0x483678[_0x7491('0x39')]};return db[_0x7491('0x2a')][_0x7491('0x1c')](_0x4438cf)['then'](function(_0x108dd1){_0x24b78a[_0x7491('0x1c')]=_0x108dd1;if(_0x57cc62[_0x7491('0x2f')][_0x7491('0x3f')]){_0x483678[_0x7491('0x40')]=[{'all':!![]}];}return db['SalesforceAccount']['findAll'](_0x483678);})[_0x7491('0x24')](function(_0x4d563d){_0x24b78a['rows']=_0x4d563d;return _0x24b78a;})['then'](respondWithFilteredResult(_0x33d386,_0x483678))[_0x7491('0x41')](handleError(_0x33d386,null));};exports[_0x7491('0x42')]=function(_0x1c0631,_0x2de2e4){var _0xf5d858={'raw':![],'where':{'id':_0x1c0631['params']['id']}},_0x4af06e={};_0x4af06e[_0x7491('0x2e')]=_[_0x7491('0x30')](db[_0x7491('0x2a')][_0x7491('0x2b')]);_0x4af06e[_0x7491('0x2f')]=_['keys'](_0x1c0631[_0x7491('0x2f')]);_0x4af06e['filters']=_[_0x7491('0x32')](_0x4af06e[_0x7491('0x2e')],_0x4af06e[_0x7491('0x2f')]);_0xf5d858[_0x7491('0x34')]=_['intersection'](_0x4af06e[_0x7491('0x2e')],qs['fields'](_0x1c0631[_0x7491('0x2f')]['fields']));_0xf5d858['attributes']=_0xf5d858[_0x7491('0x34')][_0x7491('0x35')]?_0xf5d858['attributes']:_0x4af06e[_0x7491('0x2e')];if(_0x1c0631[_0x7491('0x2f')][_0x7491('0x3f')]){_0xf5d858[_0x7491('0x40')]=[{'all':!![]}];}_0xf5d858=_[_0x7491('0x3c')]({},_0xf5d858,_0x1c0631[_0x7491('0x3e')]);return db[_0x7491('0x2a')]['find'](_0xf5d858)[_0x7491('0x24')](handleEntityNotFound(_0x2de2e4,null))[_0x7491('0x24')](respondWithResult(_0x2de2e4,null))[_0x7491('0x41')](handleError(_0x2de2e4,null));};exports[_0x7491('0x43')]=function(_0x4099f4,_0x2f2948){return db[_0x7491('0x2a')][_0x7491('0x43')](_0x4099f4[_0x7491('0x44')],{})[_0x7491('0x24')](respondWithResult(_0x2f2948,0xc9))[_0x7491('0x41')](handleError(_0x2f2948,null));};exports[_0x7491('0x23')]=function(_0x25b7c1,_0x27303b){if(_0x25b7c1[_0x7491('0x44')]['id']){delete _0x25b7c1[_0x7491('0x44')]['id'];}return db['SalesforceAccount'][_0x7491('0x45')]({'where':{'id':_0x25b7c1[_0x7491('0x46')]['id']}})[_0x7491('0x24')](handleEntityNotFound(_0x27303b,null))['then'](saveUpdates(_0x25b7c1[_0x7491('0x44')],null))[_0x7491('0x24')](respondWithResult(_0x27303b,null))['catch'](handleError(_0x27303b,null));};exports[_0x7491('0x25')]=function(_0x190cf5,_0x8af9e7){return db[_0x7491('0x2a')][_0x7491('0x45')]({'where':{'id':_0x190cf5[_0x7491('0x46')]['id']}})[_0x7491('0x24')](handleEntityNotFound(_0x8af9e7,null))[_0x7491('0x24')](removeEntity(_0x8af9e7,null))[_0x7491('0x41')](handleError(_0x8af9e7,null));};exports[_0x7491('0x47')]=function(_0x51c944,_0x15fb1f,_0xbbaf24){var _0x40b421={};var _0x5d23d2={};var _0x9abd86;var _0x451ebe;return db[_0x7491('0x2a')]['findOne']({'where':{'id':_0x51c944['params']['id']}})[_0x7491('0x24')](handleEntityNotFound(_0x15fb1f,null))[_0x7491('0x24')](function(_0x2d4e0c){if(_0x2d4e0c){_0x9abd86=_0x2d4e0c;_0x5d23d2['model']=_['keys'](db[_0x7491('0x48')][_0x7491('0x2b')]);_0x5d23d2[_0x7491('0x2f')]=_[_0x7491('0x30')](_0x51c944[_0x7491('0x2f')]);_0x5d23d2['filters']=_['intersection'](_0x5d23d2[_0x7491('0x2e')],_0x5d23d2[_0x7491('0x2f')]);_0x40b421[_0x7491('0x34')]=_[_0x7491('0x32')](_0x5d23d2[_0x7491('0x2e')],qs[_0x7491('0x33')](_0x51c944[_0x7491('0x2f')]['fields']));_0x40b421['attributes']=_0x40b421[_0x7491('0x34')][_0x7491('0x35')]?_0x40b421['attributes']:_0x5d23d2['model'];_0x40b421[_0x7491('0x37')]=qs[_0x7491('0x38')](_0x51c944[_0x7491('0x2f')][_0x7491('0x38')]);_0x40b421[_0x7491('0x39')]=qs[_0x7491('0x31')](_[_0x7491('0x3a')](_0x51c944[_0x7491('0x2f')],_0x5d23d2['filters']));if(_0x51c944['query'][_0x7491('0x3b')]){_0x40b421['where']=_[_0x7491('0x3c')](_0x40b421[_0x7491('0x39')],{'$or':_['map'](_0x40b421[_0x7491('0x34')],function(_0x5a3a80){var _0x4cf876={};_0x4cf876[_0x5a3a80]={'$like':'%'+_0x51c944[_0x7491('0x2f')][_0x7491('0x3b')]+'%'};return _0x4cf876;})});}_0x40b421=_[_0x7491('0x3c')]({},_0x40b421,_0x51c944['options']);return _0x9abd86[_0x7491('0x47')](_0x40b421);}})['then'](function(_0x3fb129){if(_0x3fb129){_0x451ebe=_0x3fb129[_0x7491('0x35')];if(!_0x51c944['query']['hasOwnProperty'](_0x7491('0x49'))){_0x40b421[_0x7491('0x1d')]=qs[_0x7491('0x1d')](_0x51c944[_0x7491('0x2f')][_0x7491('0x1d')]);_0x40b421[_0x7491('0x1b')]=qs[_0x7491('0x1b')](_0x51c944['query'][_0x7491('0x1b')]);}return _0x9abd86[_0x7491('0x47')](_0x40b421);}})[_0x7491('0x24')](function(_0xb5d8bd){if(_0xb5d8bd){return _0xb5d8bd?{'count':_0x451ebe,'rows':_0xb5d8bd}:null;}})[_0x7491('0x24')](respondWithResult(_0x15fb1f,null))['catch'](handleError(_0x15fb1f,null));};exports['addConfiguration']=function(_0x3ed268,_0x3d8433,_0x1a235b){if(_0x3ed268['body']['id']){delete _0x3ed268[_0x7491('0x44')]['id'];}return db[_0x7491('0x2a')][_0x7491('0x4a')]({'where':{'id':_0x3ed268[_0x7491('0x46')]['id']}})[_0x7491('0x24')](handleEntityNotFound(_0x3d8433,null))[_0x7491('0x24')](function(_0x21e15f){if(_0x21e15f){_0x3ed268[_0x7491('0x44')]['AccountId']=_0x21e15f['id'];_0x3ed268[_0x7491('0x44')][_0x7491('0x4b')]=integrations['getSubjects'](_0x3ed268[_0x7491('0x44')][_0x7491('0x4c')],_0x3ed268[_0x7491('0x44')]['type']);_0x3ed268['body'][_0x7491('0x4d')]=integrations[_0x7491('0x4e')](_0x3ed268[_0x7491('0x44')][_0x7491('0x4c')],_0x3ed268[_0x7491('0x44')][_0x7491('0x2c')]);return db[_0x7491('0x48')]['create'](_0x3ed268[_0x7491('0x44')],{'include':[{'model':db[_0x7491('0x4f')],'as':_0x7491('0x4b')},{'model':db[_0x7491('0x4f')],'as':_0x7491('0x4d')}]});}return null;})[_0x7491('0x24')](respondWithResult(_0x3d8433,null))[_0x7491('0x41')](handleError(_0x3d8433,null));};exports['getFields']=function(_0x245d8b,_0x2ed800,_0x21d1b8){var _0x233048;var _0x3e2c46='';var _0x2e5b49=_0x7491('0x50');return db[_0x7491('0x2a')][_0x7491('0x4a')]({'where':{'id':_0x245d8b[_0x7491('0x46')]['id']},'attributes':['id',_0x7491('0x51'),_0x7491('0x52'),_0x7491('0x53'),_0x7491('0x54'),_0x7491('0x55'),_0x7491('0x56')]})[_0x7491('0x24')](handleEntityNotFound(_0x2ed800,null))[_0x7491('0x24')](function(_0x3efcae){if(_0x3efcae){_0x3e2c46=_0x3efcae['remoteUri'];var _0x31aa29=_0x3e2c46['slice'](-0x1);if(_0x31aa29==='/'){_0x3e2c46=_0x3e2c46[_0x7491('0x57')](0x0,_0x3e2c46[_0x7491('0x58')](_0x31aa29));}_0x233048=new jsforce[(_0x7491('0x59'))]({'oauth2':{'loginUrl':_0x3e2c46,'clientId':_0x3efcae[_0x7491('0x52')],'clientSecret':_0x3efcae['clientSecret']}});return _0x233048[_0x7491('0x5a')](_0x3efcae[_0x7491('0x54')],_0x3efcae[_0x7491('0x55')][_0x7491('0x5b')](_0x3efcae[_0x7491('0x56')]));}})[_0x7491('0x24')](function(_0x3074ac){if(_0x3074ac){if(!_[_0x7491('0x5c')](_0x245d8b[_0x7491('0x2f')][_0x7491('0x5d')])){_0x2e5b49=_0x245d8b[_0x7491('0x2f')][_0x7491('0x5d')];}return _0x233048[_0x7491('0x5e')](_0x2e5b49)['describe']();}})['then'](function(_0x57226d){var _0x3f03b5=[_0x7491('0x5f'),_0x7491('0x60'),_0x7491('0x61'),'IsRecurrence','Subject',_0x7491('0x62')];var _0x367c88=[_0x7491('0x63'),'int',_0x7491('0x64'),_0x7491('0x65'),'email',_0x7491('0x66'),'phone'];if(_0x57226d){_[_0x7491('0x67')](_0x57226d[_0x7491('0x33')],function(_0x95568c){return _0x3f03b5[_0x7491('0x68')](_0x95568c[_0x7491('0x27')])||!_0x367c88[_0x7491('0x68')](_0x95568c[_0x7491('0x2c')]);});return{'count':_0x57226d[_0x7491('0x33')]['length'],'rows':_[_0x7491('0x29')](_0x57226d[_0x7491('0x33')],function(_0x5a4a83){return{'id':_0x5a4a83[_0x7491('0x27')],'name':_0x5a4a83[_0x7491('0x69')],'custom':_0x5a4a83['custom'],'options':_0x5a4a83[_0x7491('0x6a')]['length']>0x0?_['map'](_0x5a4a83[_0x7491('0x6a')],function(_0x3795cb){return{'name':_0x3795cb['label'],'value':_0x3795cb[_0x7491('0x6b')]};}):_0x5a4a83[_0x7491('0x2c')]=='boolean'?[{'name':_0x7491('0x6c'),'value':'true'},{'name':'False','value':_0x7491('0x6d')}]:[]};})};}})[_0x7491('0x24')](respondWithResult(_0x2ed800,null))[_0x7491('0x41')](function(_0x408cef){var _0x45dc10=_0x245d8b[_0x7491('0x2f')][_0x7491('0x6e')]?0x1f4:_0x408cef[_0x7491('0x6f')]||0x1f4;logger[_0x7491('0x26')](_0x7491('0x70'),_0x7491('0x71'),_0x45dc10,JSON['stringify'](_0x408cef));delete _0x408cef[_0x7491('0x27')];if(_0x45dc10===0x191){_0x45dc10=0x190;}_0x2ed800[_0x7491('0x1e')](_0x45dc10)[_0x7491('0x72')](_0x245d8b[_0x7491('0x2f')]['test']?{'message':_0x7491('0x73'),'statusCode':_0x408cef['statusCode']}:_0x408cef);});};
\ No newline at end of file
index 9ee2580..2998dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb786=['bluebird','request-promise','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','moment'];(function(_0x8c3ede,_0x47192a){var _0x219373=function(_0x139085){while(--_0x139085){_0x8c3ede['push'](_0x8c3ede['shift']());}};_0x219373(++_0x47192a);}(_0xb786,0x1d8));var _0x6b78=function(_0x85d5a8,_0x1977be){_0x85d5a8=_0x85d5a8-0x0;var _0x20479b=_0xb786[_0x85d5a8];return _0x20479b;};'use strict';var _=require(_0x6b78('0x0'));var util=require(_0x6b78('0x1'));var logger=require(_0x6b78('0x2'))('api');var moment=require(_0x6b78('0x3'));var BPromise=require(_0x6b78('0x4'));var rp=require(_0x6b78('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6b78('0x6'));var config=require(_0x6b78('0x7'));var attributes=require(_0x6b78('0x8'));var integrations=require(_0x6b78('0x9'));module[_0x6b78('0xa')]=function(_0x5e69f2,_0x3c4c19){return _0x5e69f2[_0x6b78('0xb')](_0x6b78('0xc'),attributes,{'tableName':_0x6b78('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ce2=['request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','int_salesforce_accounts','util','api','moment','bluebird'];(function(_0x30597e,_0x25985d){var _0x4a601f=function(_0x5e696c){while(--_0x5e696c){_0x30597e['push'](_0x30597e['shift']());}};_0x4a601f(++_0x25985d);}(_0x5ce2,0x1b6));var _0x25ce=function(_0xd09db8,_0x2c9025){_0xd09db8=_0xd09db8-0x0;var _0x59f513=_0x5ce2[_0xd09db8];return _0x59f513;};'use strict';var _=require('lodash');var util=require(_0x25ce('0x0'));var logger=require('../../config/logger')(_0x25ce('0x1'));var moment=require(_0x25ce('0x2'));var BPromise=require(_0x25ce('0x3'));var rp=require(_0x25ce('0x4'));var fs=require('fs');var path=require(_0x25ce('0x5'));var rimraf=require(_0x25ce('0x6'));var config=require(_0x25ce('0x7'));var attributes=require(_0x25ce('0x8'));var integrations=require(_0x25ce('0x9'));module[_0x25ce('0xa')]=function(_0x5be3eb,_0x173ee4){return _0x5be3eb[_0x25ce('0xb')]('SalesforceAccount',attributes,{'tableName':_0x25ce('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2ec941..76ac64f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9954=['debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSalesforceAccount','options','raw','attributes','limit','include','map','model','info','SalesforceAccount','where','ShowSalesforceAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','SalesforceAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x46e0f0,_0x43a770){var _0x1d4798=function(_0x1ad97d){while(--_0x1ad97d){_0x46e0f0['push'](_0x46e0f0['shift']());}};_0x1d4798(++_0x43a770);}(_0x9954,0xe6));var _0x4995=function(_0x454165,_0x1f3e74){_0x454165=_0x454165-0x0;var _0x56db53=_0x9954[_0x454165];return _0x56db53;};'use strict';var _=require(_0x4995('0x0'));var util=require(_0x4995('0x1'));var moment=require('moment');var BPromise=require(_0x4995('0x2'));var rs=require(_0x4995('0x3'));var fs=require('fs');var Redis=require(_0x4995('0x4'));var db=require(_0x4995('0x5'))['db'];var utils=require(_0x4995('0x6'));var logger=require('../../config/logger')(_0x4995('0x7'));var config=require(_0x4995('0x8'));var jayson=require(_0x4995('0x9'));var client=jayson[_0x4995('0xa')][_0x4995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbd932,_0x319244,_0x4af2d9){return new BPromise(function(_0x18dac8,_0x282da4){return client['request'](_0xbd932,_0x4af2d9)[_0x4995('0xc')](function(_0x1c751c){logger['info'](_0x4995('0xd'),_0x319244,_0x4995('0xe'));logger[_0x4995('0xf')](_0x4995('0x10'),_0x319244,_0x4995('0xe'),JSON[_0x4995('0x11')](_0x1c751c));if(_0x1c751c[_0x4995('0x12')]){if(_0x1c751c['error'][_0x4995('0x13')]===0x1f4){logger[_0x4995('0x12')](_0x4995('0xd'),_0x319244,_0x1c751c[_0x4995('0x12')][_0x4995('0x14')]);return _0x282da4(_0x1c751c['error'][_0x4995('0x14')]);}logger[_0x4995('0x12')](_0x4995('0xd'),_0x319244,_0x1c751c[_0x4995('0x12')][_0x4995('0x14')]);return _0x18dac8(_0x1c751c[_0x4995('0x12')][_0x4995('0x14')]);}else{logger['info'](_0x4995('0xd'),_0x319244,_0x4995('0xe'));_0x18dac8(_0x1c751c[_0x4995('0x15')][_0x4995('0x14')]);}})[_0x4995('0x16')](function(_0x8dd0d1){logger[_0x4995('0x12')](_0x4995('0xd'),_0x319244,_0x8dd0d1);_0x282da4(_0x8dd0d1);});});}exports[_0x4995('0x17')]=function(_0x1e6fe5){var _0x296a75=this;return new Promise(function(_0x1aa5a8,_0x54275f){return db['SalesforceAccount']['findAll']({'raw':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x19')]===undefined?!![]:![]:!![],'where':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')]['where']||null:null,'attributes':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x1a')]||null:null,'limit':_0x1e6fe5[_0x4995('0x18')]?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x1b')]||null:null,'include':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x1c')]?_[_0x4995('0x1d')](_0x1e6fe5['options'][_0x4995('0x1c')],function(_0x4bac78){return{'model':db[_0x4bac78['model']],'as':_0x4bac78['as'],'attributes':_0x4bac78[_0x4995('0x1a')],'include':_0x4bac78[_0x4995('0x1c')]?_[_0x4995('0x1d')](_0x4bac78[_0x4995('0x1c')],function(_0x32de64){return{'model':db[_0x32de64[_0x4995('0x1e')]],'as':_0x32de64['as'],'attributes':_0x32de64[_0x4995('0x1a')],'include':_0x32de64['include']?_[_0x4995('0x1d')](_0x32de64[_0x4995('0x1c')],function(_0x25ad34){return{'model':db[_0x25ad34[_0x4995('0x1e')]],'as':_0x25ad34['as'],'attributes':_0x25ad34['attributes']};}):[]};}):[]};}):[]:[]})[_0x4995('0xc')](function(_0x4950c9){logger[_0x4995('0x1f')]('GetSalesforceAccount',_0x1e6fe5);logger['debug'](_0x4995('0x17'),_0x1e6fe5,JSON['stringify'](_0x4950c9));_0x1aa5a8(_0x4950c9);})['catch'](function(_0x2d51cc){logger['error'](_0x4995('0x17'),_0x2d51cc[_0x4995('0x14')],_0x1e6fe5);_0x54275f(_0x296a75[_0x4995('0x12')](0x1f4,_0x2d51cc[_0x4995('0x14')]));});});};exports['ShowSalesforceAccount']=function(_0x1b5853){var _0x15f452=this;return new Promise(function(_0x2a5a8b,_0x59b9e4){return db[_0x4995('0x20')]['find']({'raw':_0x1b5853[_0x4995('0x18')]?_0x1b5853[_0x4995('0x18')][_0x4995('0x19')]===undefined?!![]:![]:!![],'where':_0x1b5853[_0x4995('0x18')]?_0x1b5853[_0x4995('0x18')][_0x4995('0x21')]||null:null,'attributes':_0x1b5853['options']?_0x1b5853[_0x4995('0x18')][_0x4995('0x1a')]||null:null,'include':_0x1b5853[_0x4995('0x18')]?_0x1b5853[_0x4995('0x18')]['include']?_[_0x4995('0x1d')](_0x1b5853['options'][_0x4995('0x1c')],function(_0x362c79){return{'model':db[_0x362c79[_0x4995('0x1e')]],'as':_0x362c79['as'],'attributes':_0x362c79['attributes'],'include':_0x362c79[_0x4995('0x1c')]?_[_0x4995('0x1d')](_0x362c79[_0x4995('0x1c')],function(_0x3fdc70){return{'model':db[_0x3fdc70['model']],'as':_0x3fdc70['as'],'attributes':_0x3fdc70[_0x4995('0x1a')],'include':_0x3fdc70['include']?_[_0x4995('0x1d')](_0x3fdc70[_0x4995('0x1c')],function(_0x4569fe){return{'model':db[_0x4569fe[_0x4995('0x1e')]],'as':_0x4569fe['as'],'attributes':_0x4569fe[_0x4995('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4995('0xc')](function(_0x1c28c4){logger[_0x4995('0x1f')]('ShowSalesforceAccount',_0x1b5853);logger[_0x4995('0xf')](_0x4995('0x22'),_0x1b5853,JSON[_0x4995('0x11')](_0x1c28c4));_0x2a5a8b(_0x1c28c4);})['catch'](function(_0x46650f){logger['error'](_0x4995('0x22'),_0x46650f[_0x4995('0x14')],_0x1b5853);_0x59b9e4(_0x15f452[_0x4995('0x12')](0x1f4,_0x46650f[_0x4995('0x14')]));});});};
\ No newline at end of file
+var _0x9265=['stringify','error','code','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','include','map','model','ShowSalesforceAccount','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','SalesforceAccount,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x393164,_0x221ae6){var _0x31f975=function(_0x39796){while(--_0x39796){_0x393164['push'](_0x393164['shift']());}};_0x31f975(++_0x221ae6);}(_0x9265,0x1ee));var _0x5926=function(_0x535d78,_0x32a73d){_0x535d78=_0x535d78-0x0;var _0x144316=_0x9265[_0x535d78];return _0x144316;};'use strict';var _=require(_0x5926('0x0'));var util=require('util');var moment=require(_0x5926('0x1'));var BPromise=require(_0x5926('0x2'));var rs=require(_0x5926('0x3'));var fs=require('fs');var Redis=require(_0x5926('0x4'));var db=require(_0x5926('0x5'))['db'];var utils=require(_0x5926('0x6'));var logger=require(_0x5926('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5926('0x8'));var client=jayson[_0x5926('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x328cb1,_0x34ec48,_0x4431c3){return new BPromise(function(_0x3fcf56,_0xa28292){return client[_0x5926('0xa')](_0x328cb1,_0x4431c3)[_0x5926('0xb')](function(_0x1ecbff){logger[_0x5926('0xc')](_0x5926('0xd'),_0x34ec48,'request\x20sent');logger[_0x5926('0xe')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x34ec48,_0x5926('0xf'),JSON[_0x5926('0x10')](_0x1ecbff));if(_0x1ecbff[_0x5926('0x11')]){if(_0x1ecbff[_0x5926('0x11')][_0x5926('0x12')]===0x1f4){logger[_0x5926('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x34ec48,_0x1ecbff[_0x5926('0x11')]['message']);return _0xa28292(_0x1ecbff[_0x5926('0x11')]['message']);}logger[_0x5926('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x34ec48,_0x1ecbff['error'][_0x5926('0x13')]);return _0x3fcf56(_0x1ecbff[_0x5926('0x11')][_0x5926('0x13')]);}else{logger[_0x5926('0xc')](_0x5926('0xd'),_0x34ec48,_0x5926('0xf'));_0x3fcf56(_0x1ecbff[_0x5926('0x14')][_0x5926('0x13')]);}})[_0x5926('0x15')](function(_0x1b79a0){logger[_0x5926('0x11')](_0x5926('0xd'),_0x34ec48,_0x1b79a0);_0xa28292(_0x1b79a0);});});}exports[_0x5926('0x16')]=function(_0x1040c9){var _0x5b467d=this;return new Promise(function(_0x1b91e8,_0x57f60c){return db[_0x5926('0x17')][_0x5926('0x18')]({'raw':_0x1040c9[_0x5926('0x19')]?_0x1040c9[_0x5926('0x19')][_0x5926('0x1a')]===undefined?!![]:![]:!![],'where':_0x1040c9[_0x5926('0x19')]?_0x1040c9[_0x5926('0x19')][_0x5926('0x1b')]||null:null,'attributes':_0x1040c9[_0x5926('0x19')]?_0x1040c9[_0x5926('0x19')][_0x5926('0x1c')]||null:null,'limit':_0x1040c9[_0x5926('0x19')]?_0x1040c9[_0x5926('0x19')]['limit']||null:null,'include':_0x1040c9[_0x5926('0x19')]?_0x1040c9[_0x5926('0x19')][_0x5926('0x1d')]?_[_0x5926('0x1e')](_0x1040c9['options']['include'],function(_0x18a683){return{'model':db[_0x18a683['model']],'as':_0x18a683['as'],'attributes':_0x18a683[_0x5926('0x1c')],'include':_0x18a683['include']?_[_0x5926('0x1e')](_0x18a683['include'],function(_0xaccbb5){return{'model':db[_0xaccbb5[_0x5926('0x1f')]],'as':_0xaccbb5['as'],'attributes':_0xaccbb5[_0x5926('0x1c')],'include':_0xaccbb5[_0x5926('0x1d')]?_[_0x5926('0x1e')](_0xaccbb5[_0x5926('0x1d')],function(_0x3f1bc2){return{'model':db[_0x3f1bc2[_0x5926('0x1f')]],'as':_0x3f1bc2['as'],'attributes':_0x3f1bc2[_0x5926('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x5926('0xb')](function(_0x119981){logger['info'](_0x5926('0x16'),_0x1040c9);logger[_0x5926('0xe')](_0x5926('0x16'),_0x1040c9,JSON[_0x5926('0x10')](_0x119981));_0x1b91e8(_0x119981);})[_0x5926('0x15')](function(_0x3e3386){logger[_0x5926('0x11')](_0x5926('0x16'),_0x3e3386[_0x5926('0x13')],_0x1040c9);_0x57f60c(_0x5b467d[_0x5926('0x11')](0x1f4,_0x3e3386['message']));});});};exports[_0x5926('0x20')]=function(_0x121e28){var _0x74342b=this;return new Promise(function(_0x5892be,_0x4183fb){return db[_0x5926('0x17')][_0x5926('0x21')]({'raw':_0x121e28[_0x5926('0x19')]?_0x121e28['options'][_0x5926('0x1a')]===undefined?!![]:![]:!![],'where':_0x121e28['options']?_0x121e28[_0x5926('0x19')][_0x5926('0x1b')]||null:null,'attributes':_0x121e28['options']?_0x121e28[_0x5926('0x19')][_0x5926('0x1c')]||null:null,'include':_0x121e28[_0x5926('0x19')]?_0x121e28['options'][_0x5926('0x1d')]?_[_0x5926('0x1e')](_0x121e28[_0x5926('0x19')][_0x5926('0x1d')],function(_0x3801ea){return{'model':db[_0x3801ea[_0x5926('0x1f')]],'as':_0x3801ea['as'],'attributes':_0x3801ea[_0x5926('0x1c')],'include':_0x3801ea[_0x5926('0x1d')]?_[_0x5926('0x1e')](_0x3801ea['include'],function(_0x1db555){return{'model':db[_0x1db555[_0x5926('0x1f')]],'as':_0x1db555['as'],'attributes':_0x1db555['attributes'],'include':_0x1db555['include']?_[_0x5926('0x1e')](_0x1db555[_0x5926('0x1d')],function(_0xd3d4f3){return{'model':db[_0xd3d4f3[_0x5926('0x1f')]],'as':_0xd3d4f3['as'],'attributes':_0xd3d4f3[_0x5926('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2246af){logger[_0x5926('0xc')](_0x5926('0x20'),_0x121e28);logger[_0x5926('0xe')](_0x5926('0x20'),_0x121e28,JSON[_0x5926('0x10')](_0x2246af));_0x5892be(_0x2246af);})[_0x5926('0x15')](function(_0xd9d38f){logger[_0x5926('0x11')]('ShowSalesforceAccount',_0xd9d38f[_0x5926('0x13')],_0x121e28);_0x4183fb(_0x74342b[_0x5926('0x11')](0x1f4,_0xd9d38f[_0x5926('0x13')]));});});};
\ No newline at end of file
index 05c2fa9..7064602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x18a436,_0x1dbe06){var _0x5c2cf8=function(_0x4712d1){while(--_0x4712d1){_0x18a436['push'](_0x18a436['shift']());}};_0x5c2cf8(++_0x1dbe06);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5a7fbc,_0xa081de){_0x5a7fbc=_0x5a7fbc-0x0;var _0xcba0fc=_0x0b0e[_0x5a7fbc];return _0xcba0fc;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x38aad6,_0x4be600){var _0x535ccf=function(_0x4d06b7){while(--_0x4d06b7){_0x38aad6['push'](_0x38aad6['shift']());}};_0x535ccf(++_0x4be600);}(_0x7a54,0x106));var _0x47a5=function(_0x4988eb,_0x46bb27){_0x4988eb=_0x4988eb-0x0;var _0x5ed843=_0x7a54[_0x4988eb];return _0x5ed843;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index 702ac6a..e07b826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f0=['exports','STRING','ENUM','Case','Task','contact','lead','account','contact_lead','nothing','sequelize'];(function(_0x365d8e,_0x171a51){var _0x1ca50e=function(_0x2f5c45){while(--_0x2f5c45){_0x365d8e['push'](_0x365d8e['shift']());}};_0x1ca50e(++_0x171a51);}(_0xd2f0,0x18b));var _0x0d2f=function(_0x5f517e,_0x3b6dc4){_0x5f517e=_0x5f517e-0x0;var _0x23317e=_0xd2f0[_0x5f517e];return _0x23317e;};'use strict';var Sequelize=require(_0x0d2f('0x0'));module[_0x0d2f('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0d2f('0x2')]},'ticketType':{'type':Sequelize[_0x0d2f('0x3')]('Task',_0x0d2f('0x4')),'defaultValue':_0x0d2f('0x5')},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x0d2f('0x6'),_0x0d2f('0x7'),'account_contact_lead',_0x0d2f('0x8')),'defaultValue':_0x0d2f('0x9')},'moduleCreate':{'type':Sequelize[_0x0d2f('0x3')](_0x0d2f('0xa'),_0x0d2f('0x6'),_0x0d2f('0x7'),_0x0d2f('0x8')),'defaultValue':_0x0d2f('0x7')},'leadId':{'type':Sequelize[_0x0d2f('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x0d2f('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x0d2f('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x0d2f('0x2')]}};
\ No newline at end of file
+var _0x537a=['ENUM','Task','Case','contact_lead','contact','lead','account','nothing','exports','STRING'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x537a,0x1ac));var _0xa537=function(_0x509c13,_0x362187){_0x509c13=_0x509c13-0x0;var _0x3eeb3c=_0x537a[_0x509c13];return _0x3eeb3c;};'use strict';var Sequelize=require('sequelize');module[_0xa537('0x0')]={'name':{'type':Sequelize[_0xa537('0x1')]},'description':{'type':Sequelize[_0xa537('0x1')]},'ticketType':{'type':Sequelize[_0xa537('0x2')](_0xa537('0x3'),_0xa537('0x4')),'defaultValue':_0xa537('0x3')},'moduleSearch':{'type':Sequelize[_0xa537('0x2')](_0xa537('0x5'),_0xa537('0x6'),_0xa537('0x7'),'account_contact_lead',_0xa537('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xa537('0x2')](_0xa537('0x9'),'contact','lead',_0xa537('0x8')),'defaultValue':_0xa537('0x7')},'leadId':{'type':Sequelize[_0xa537('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xa537('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xa537('0x1')]},'additionalSearchLead':{'type':Sequelize[_0xa537('0x1')]}};
\ No newline at end of file
index 78e6db6..b704ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbccb=['catch','keys','rawAttributes','includeAll','find','create','body','params','findOne','filter','getFields','SalesforceField','getSubjects','map','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','SalesforceConfiguration','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','options','findAll','rows'];(function(_0xf1ec6a,_0x3d7139){var _0x4392ba=function(_0x3d9845){while(--_0x3d9845){_0xf1ec6a['push'](_0xf1ec6a['shift']());}};_0x4392ba(++_0x3d7139);}(_0xbccb,0x157));var _0xbbcc=function(_0x3504a0,_0x3f770f){_0x3504a0=_0x3504a0-0x0;var _0x3dfca3=_0xbccb[_0x3504a0];return _0x3dfca3;};'use strict';var emlformat=require(_0xbbcc('0x0'));var rimraf=require(_0xbbcc('0x1'));var zipdir=require(_0xbbcc('0x2'));var jsonpatch=require(_0xbbcc('0x3'));var rp=require('request-promise');var moment=require(_0xbbcc('0x4'));var BPromise=require(_0xbbcc('0x5'));var Mustache=require(_0xbbcc('0x6'));var util=require(_0xbbcc('0x7'));var path=require(_0xbbcc('0x8'));var sox=require(_0xbbcc('0x9'));var csv=require(_0xbbcc('0xa'));var ejs=require(_0xbbcc('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbbcc('0xc'));var squel=require(_0xbbcc('0xd'));var crypto=require(_0xbbcc('0xe'));var jsforce=require(_0xbbcc('0xf'));var deskjs=require(_0xbbcc('0x10'));var toCsv=require(_0xbbcc('0xa'));var querystring=require(_0xbbcc('0x11'));var Papa=require(_0xbbcc('0x12'));var Redis=require(_0xbbcc('0x13'));var authService=require(_0xbbcc('0x14'));var qs=require(_0xbbcc('0x15'));var as=require(_0xbbcc('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbbcc('0x17'))(_0xbbcc('0x18'));var utils=require(_0xbbcc('0x19'));var config=require(_0xbbcc('0x1a'));var licenseUtil=require(_0xbbcc('0x1b'));var db=require(_0xbbcc('0x1c'))['db'];function respondWithStatusCode(_0x1558f3,_0x39de34){_0x39de34=_0x39de34||0xcc;return function(_0xcc65b9){if(_0xcc65b9){return _0x1558f3[_0xbbcc('0x1d')](_0x39de34);}return _0x1558f3[_0xbbcc('0x1e')](_0x39de34)['end']();};}function respondWithResult(_0x1166ba,_0x240ee7){_0x240ee7=_0x240ee7||0xc8;return function(_0x1d1b2f){if(_0x1d1b2f){return _0x1166ba[_0xbbcc('0x1e')](_0x240ee7)['json'](_0x1d1b2f);}};}function respondWithFilteredResult(_0x44761e,_0x5acb78){return function(_0x26dccc){if(_0x26dccc){var _0x45226a=typeof _0x5acb78['offset']===_0xbbcc('0x1f')&&typeof _0x5acb78['limit']==='undefined';var _0x5e5573=_0x26dccc[_0xbbcc('0x20')];var _0x1456ac=_0x45226a?0x0:_0x5acb78[_0xbbcc('0x21')];var _0x2e8f29=_0x45226a?_0x26dccc[_0xbbcc('0x20')]:_0x5acb78[_0xbbcc('0x21')]+_0x5acb78['limit'];var _0x56a5c8;if(_0x2e8f29>=_0x5e5573){_0x2e8f29=_0x5e5573;_0x56a5c8=0xc8;}else{_0x56a5c8=0xce;}_0x44761e['status'](_0x56a5c8);return _0x44761e['set'](_0xbbcc('0x22'),_0x1456ac+'-'+_0x2e8f29+'/'+_0x5e5573)[_0xbbcc('0x23')](_0x26dccc);}return null;};}function patchUpdates(_0x439fb5){return function(_0x478f9c){try{jsonpatch['apply'](_0x478f9c,_0x439fb5,!![]);}catch(_0x3a2a8d){return BPromise[_0xbbcc('0x24')](_0x3a2a8d);}return _0x478f9c[_0xbbcc('0x25')]();};}function saveUpdates(_0x5a2aaf,_0x534985){return function(_0x89004c){if(_0x89004c){return _0x89004c[_0xbbcc('0x26')](_0x5a2aaf)[_0xbbcc('0x27')](function(_0x3af889){return _0x3af889;});}return null;};}function removeEntity(_0x489299,_0x1d6342){return function(_0x1d5d0e){if(_0x1d5d0e){return _0x1d5d0e[_0xbbcc('0x28')]()['then'](function(){_0x489299[_0xbbcc('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5107c3,_0x4f5dd1){return function(_0x3213af){if(!_0x3213af){_0x5107c3[_0xbbcc('0x1d')](0x194);}return _0x3213af;};}function handleError(_0x4c2f77,_0x2e4ea1){_0x2e4ea1=_0x2e4ea1||0x1f4;return function(_0x49b7ed){logger[_0xbbcc('0x29')](_0x49b7ed[_0xbbcc('0x2a')]);if(_0x49b7ed[_0xbbcc('0x2b')]){delete _0x49b7ed['name'];}_0x4c2f77['status'](_0x2e4ea1)[_0xbbcc('0x2c')](_0x49b7ed);};}exports['index']=function(_0x9e8a83,_0x5a8d4c){var _0x45e50e={},_0x5203c5={},_0x392deb={'count':0x0,'rows':[]};var _0x43e2ff=_['map'](db[_0xbbcc('0x2d')]['rawAttributes'],function(_0x38be0a){return{'name':_0x38be0a[_0xbbcc('0x2e')],'type':_0x38be0a[_0xbbcc('0x2f')]['key']};});_0x5203c5[_0xbbcc('0x30')]=_['map'](_0x43e2ff,_0xbbcc('0x2b'));_0x5203c5[_0xbbcc('0x31')]=_['keys'](_0x9e8a83[_0xbbcc('0x31')]);_0x5203c5[_0xbbcc('0x32')]=_[_0xbbcc('0x33')](_0x5203c5['model'],_0x5203c5[_0xbbcc('0x31')]);_0x45e50e[_0xbbcc('0x34')]=_[_0xbbcc('0x33')](_0x5203c5[_0xbbcc('0x30')],qs[_0xbbcc('0x35')](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x35')]));_0x45e50e[_0xbbcc('0x34')]=_0x45e50e[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x45e50e[_0xbbcc('0x34')]:_0x5203c5[_0xbbcc('0x30')];if(!_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x37')](_0xbbcc('0x38'))){_0x45e50e[_0xbbcc('0x39')]=qs['limit'](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x39')]);_0x45e50e[_0xbbcc('0x21')]=qs['offset'](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x21')]);}_0x45e50e[_0xbbcc('0x3a')]=qs[_0xbbcc('0x3b')](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x3b')]);_0x45e50e[_0xbbcc('0x3c')]=qs[_0xbbcc('0x32')](_[_0xbbcc('0x3d')](_0x9e8a83[_0xbbcc('0x31')],_0x5203c5[_0xbbcc('0x32')]),_0x43e2ff);if(_0x9e8a83['query']['filter']){_0x45e50e[_0xbbcc('0x3c')]=_[_0xbbcc('0x3e')](_0x45e50e[_0xbbcc('0x3c')],{'$or':_['map'](_0x43e2ff,function(_0x453324){if(_0x453324['type']!==_0xbbcc('0x3f')){var _0x2af399={};_0x2af399[_0x453324[_0xbbcc('0x2b')]]={'$like':'%'+_0x9e8a83['query']['filter']+'%'};return _0x2af399;}})});}_0x45e50e=_[_0xbbcc('0x3e')]({},_0x45e50e,_0x9e8a83[_0xbbcc('0x40')]);var _0x44b6ac={'where':_0x45e50e[_0xbbcc('0x3c')]};return db['SalesforceConfiguration'][_0xbbcc('0x20')](_0x44b6ac)[_0xbbcc('0x27')](function(_0xfd51f0){_0x392deb[_0xbbcc('0x20')]=_0xfd51f0;if(_0x9e8a83[_0xbbcc('0x31')]['includeAll']){_0x45e50e['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xbbcc('0x41')](_0x45e50e);})[_0xbbcc('0x27')](function(_0xa51757){_0x392deb[_0xbbcc('0x42')]=_0xa51757;return _0x392deb;})['then'](respondWithFilteredResult(_0x5a8d4c,_0x45e50e))[_0xbbcc('0x43')](handleError(_0x5a8d4c,null));};exports['show']=function(_0x7424c8,_0x2dc8f1){var _0x21e16c={'raw':![],'where':{'id':_0x7424c8['params']['id']}},_0xed0ad4={};_0xed0ad4[_0xbbcc('0x30')]=_[_0xbbcc('0x44')](db[_0xbbcc('0x2d')][_0xbbcc('0x45')]);_0xed0ad4[_0xbbcc('0x31')]=_[_0xbbcc('0x44')](_0x7424c8[_0xbbcc('0x31')]);_0xed0ad4[_0xbbcc('0x32')]=_['intersection'](_0xed0ad4[_0xbbcc('0x30')],_0xed0ad4[_0xbbcc('0x31')]);_0x21e16c[_0xbbcc('0x34')]=_[_0xbbcc('0x33')](_0xed0ad4['model'],qs[_0xbbcc('0x35')](_0x7424c8[_0xbbcc('0x31')]['fields']));_0x21e16c[_0xbbcc('0x34')]=_0x21e16c[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x21e16c['attributes']:_0xed0ad4[_0xbbcc('0x30')];if(_0x7424c8['query'][_0xbbcc('0x46')]){_0x21e16c['include']=[{'all':!![]}];}_0x21e16c=_[_0xbbcc('0x3e')]({},_0x21e16c,_0x7424c8[_0xbbcc('0x40')]);return db['SalesforceConfiguration'][_0xbbcc('0x47')](_0x21e16c)['then'](handleEntityNotFound(_0x2dc8f1,null))[_0xbbcc('0x27')](respondWithResult(_0x2dc8f1,null))[_0xbbcc('0x43')](handleError(_0x2dc8f1,null));};exports[_0xbbcc('0x48')]=function(_0x3b832b,_0x27ef0b){return db['SalesforceConfiguration'][_0xbbcc('0x48')](_0x3b832b['body'],{})['then'](respondWithResult(_0x27ef0b,0xc9))['catch'](handleError(_0x27ef0b,null));};exports['update']=function(_0x287cef,_0x4dc2de){if(_0x287cef['body']['id']){delete _0x287cef[_0xbbcc('0x49')]['id'];}return db[_0xbbcc('0x2d')][_0xbbcc('0x47')]({'where':{'id':_0x287cef[_0xbbcc('0x4a')]['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x4dc2de,null))[_0xbbcc('0x27')](saveUpdates(_0x287cef[_0xbbcc('0x49')],null))['then'](respondWithResult(_0x4dc2de,null))['catch'](handleError(_0x4dc2de,null));};exports['destroy']=function(_0x5b1be1,_0x2c5d34){return db[_0xbbcc('0x2d')][_0xbbcc('0x47')]({'where':{'id':_0x5b1be1['params']['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x2c5d34,null))[_0xbbcc('0x27')](removeEntity(_0x2c5d34,null))[_0xbbcc('0x43')](handleError(_0x2c5d34,null));};exports['getFields']=function(_0x498bf3,_0x4ed035,_0x534c41){var _0x49f623={};var _0x299307={};var _0x212a0c;var _0x47b412;return db[_0xbbcc('0x2d')][_0xbbcc('0x4b')]({'where':{'id':_0x498bf3[_0xbbcc('0x4a')]['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x4ed035,null))['then'](function(_0x264435){if(_0x264435){_0x212a0c=_0x264435;_0x299307[_0xbbcc('0x30')]=_[_0xbbcc('0x44')](db['SalesforceField']['rawAttributes']);_0x299307[_0xbbcc('0x31')]=_[_0xbbcc('0x44')](_0x498bf3['query']);_0x299307['filters']=_[_0xbbcc('0x33')](_0x299307[_0xbbcc('0x30')],_0x299307[_0xbbcc('0x31')]);_0x49f623[_0xbbcc('0x34')]=_['intersection'](_0x299307[_0xbbcc('0x30')],qs['fields'](_0x498bf3['query'][_0xbbcc('0x35')]));_0x49f623['attributes']=_0x49f623[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x49f623[_0xbbcc('0x34')]:_0x299307[_0xbbcc('0x30')];_0x49f623['order']=qs[_0xbbcc('0x3b')](_0x498bf3['query'][_0xbbcc('0x3b')]);_0x49f623[_0xbbcc('0x3c')]=qs['filters'](_[_0xbbcc('0x3d')](_0x498bf3[_0xbbcc('0x31')],_0x299307[_0xbbcc('0x32')]));if(_0x498bf3['query'][_0xbbcc('0x4c')]){_0x49f623[_0xbbcc('0x3c')]=_[_0xbbcc('0x3e')](_0x49f623['where'],{'$or':_['map'](_0x49f623[_0xbbcc('0x34')],function(_0x5962c5){var _0x183918={};_0x183918[_0x5962c5]={'$like':'%'+_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x4c')]+'%'};return _0x183918;})});}_0x49f623=_['merge']({},_0x49f623,_0x498bf3[_0xbbcc('0x40')]);return _0x212a0c['getFields'](_0x49f623);}})[_0xbbcc('0x27')](function(_0x1ab37e){if(_0x1ab37e){_0x47b412=_0x1ab37e[_0xbbcc('0x36')];if(!_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x37')]('nolimit')){_0x49f623[_0xbbcc('0x39')]=qs['limit'](_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x39')]);_0x49f623[_0xbbcc('0x21')]=qs[_0xbbcc('0x21')](_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x21')]);}return _0x212a0c[_0xbbcc('0x4d')](_0x49f623);}})[_0xbbcc('0x27')](function(_0x2a7820){if(_0x2a7820){return _0x2a7820?{'count':_0x47b412,'rows':_0x2a7820}:null;}})[_0xbbcc('0x27')](respondWithResult(_0x4ed035,null))[_0xbbcc('0x43')](handleError(_0x4ed035,null));};exports['getSubjects']=function(_0x5c97ee,_0x274188,_0x1a9813){var _0x6c5f8e={};var _0xdfaff1={};var _0x1a95ff;var _0x19d7cc;return db[_0xbbcc('0x2d')][_0xbbcc('0x4b')]({'where':{'id':_0x5c97ee['params']['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x274188,null))[_0xbbcc('0x27')](function(_0x4c3146){if(_0x4c3146){_0x1a95ff=_0x4c3146;_0xdfaff1['model']=_[_0xbbcc('0x44')](db[_0xbbcc('0x4e')][_0xbbcc('0x45')]);_0xdfaff1['query']=_[_0xbbcc('0x44')](_0x5c97ee['query']);_0xdfaff1['filters']=_[_0xbbcc('0x33')](_0xdfaff1[_0xbbcc('0x30')],_0xdfaff1[_0xbbcc('0x31')]);_0x6c5f8e[_0xbbcc('0x34')]=_['intersection'](_0xdfaff1[_0xbbcc('0x30')],qs[_0xbbcc('0x35')](_0x5c97ee['query'][_0xbbcc('0x35')]));_0x6c5f8e[_0xbbcc('0x34')]=_0x6c5f8e[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x6c5f8e[_0xbbcc('0x34')]:_0xdfaff1[_0xbbcc('0x30')];_0x6c5f8e[_0xbbcc('0x3a')]=qs[_0xbbcc('0x3b')](_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x3b')]);_0x6c5f8e[_0xbbcc('0x3c')]=qs[_0xbbcc('0x32')](_['pick'](_0x5c97ee[_0xbbcc('0x31')],_0xdfaff1['filters']));if(_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x4c')]){_0x6c5f8e['where']=_[_0xbbcc('0x3e')](_0x6c5f8e[_0xbbcc('0x3c')],{'$or':_['map'](_0x6c5f8e['attributes'],function(_0x1958c0){var _0x37b67e={};_0x37b67e[_0x1958c0]={'$like':'%'+_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x4c')]+'%'};return _0x37b67e;})});}_0x6c5f8e=_['merge']({},_0x6c5f8e,_0x5c97ee[_0xbbcc('0x40')]);return _0x1a95ff[_0xbbcc('0x4f')](_0x6c5f8e);}})['then'](function(_0x2174c1){if(_0x2174c1){_0x19d7cc=_0x2174c1[_0xbbcc('0x36')];if(!_0x5c97ee[_0xbbcc('0x31')]['hasOwnProperty']('nolimit')){_0x6c5f8e[_0xbbcc('0x39')]=qs['limit'](_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x39')]);_0x6c5f8e['offset']=qs[_0xbbcc('0x21')](_0x5c97ee[_0xbbcc('0x31')]['offset']);}return _0x1a95ff['getSubjects'](_0x6c5f8e);}})['then'](function(_0x6cb6ae){if(_0x6cb6ae){return _0x6cb6ae?{'count':_0x19d7cc,'rows':_0x6cb6ae}:null;}})[_0xbbcc('0x27')](respondWithResult(_0x274188,null))[_0xbbcc('0x43')](handleError(_0x274188,null));};exports['getDescriptions']=function(_0x14c8fb,_0x4f4686,_0x5107b2){var _0x18df7b={};var _0x3ecedd={};var _0x92fbb1;var _0x37f351;return db[_0xbbcc('0x2d')]['findOne']({'where':{'id':_0x14c8fb[_0xbbcc('0x4a')]['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x4f4686,null))[_0xbbcc('0x27')](function(_0xf0e70a){if(_0xf0e70a){_0x92fbb1=_0xf0e70a;_0x3ecedd[_0xbbcc('0x30')]=_['keys'](db['SalesforceField'][_0xbbcc('0x45')]);_0x3ecedd['query']=_[_0xbbcc('0x44')](_0x14c8fb[_0xbbcc('0x31')]);_0x3ecedd[_0xbbcc('0x32')]=_[_0xbbcc('0x33')](_0x3ecedd[_0xbbcc('0x30')],_0x3ecedd[_0xbbcc('0x31')]);_0x18df7b[_0xbbcc('0x34')]=_[_0xbbcc('0x33')](_0x3ecedd[_0xbbcc('0x30')],qs['fields'](_0x14c8fb['query'][_0xbbcc('0x35')]));_0x18df7b[_0xbbcc('0x34')]=_0x18df7b[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x18df7b['attributes']:_0x3ecedd[_0xbbcc('0x30')];_0x18df7b[_0xbbcc('0x3a')]=qs[_0xbbcc('0x3b')](_0x14c8fb[_0xbbcc('0x31')][_0xbbcc('0x3b')]);_0x18df7b[_0xbbcc('0x3c')]=qs[_0xbbcc('0x32')](_[_0xbbcc('0x3d')](_0x14c8fb[_0xbbcc('0x31')],_0x3ecedd[_0xbbcc('0x32')]));if(_0x14c8fb[_0xbbcc('0x31')][_0xbbcc('0x4c')]){_0x18df7b[_0xbbcc('0x3c')]=_[_0xbbcc('0x3e')](_0x18df7b['where'],{'$or':_[_0xbbcc('0x50')](_0x18df7b[_0xbbcc('0x34')],function(_0x4c8193){var _0x2c8d28={};_0x2c8d28[_0x4c8193]={'$like':'%'+_0x14c8fb[_0xbbcc('0x31')][_0xbbcc('0x4c')]+'%'};return _0x2c8d28;})});}_0x18df7b=_['merge']({},_0x18df7b,_0x14c8fb[_0xbbcc('0x40')]);return _0x92fbb1['getDescriptions'](_0x18df7b);}})[_0xbbcc('0x27')](function(_0x462e5c){if(_0x462e5c){_0x37f351=_0x462e5c[_0xbbcc('0x36')];if(!_0x14c8fb['query']['hasOwnProperty'](_0xbbcc('0x38'))){_0x18df7b['limit']=qs[_0xbbcc('0x39')](_0x14c8fb[_0xbbcc('0x31')]['limit']);_0x18df7b[_0xbbcc('0x21')]=qs['offset'](_0x14c8fb[_0xbbcc('0x31')]['offset']);}return _0x92fbb1[_0xbbcc('0x51')](_0x18df7b);}})[_0xbbcc('0x27')](function(_0xf36739){if(_0xf36739){return _0xf36739?{'count':_0x37f351,'rows':_0xf36739}:null;}})[_0xbbcc('0x27')](respondWithResult(_0x4f4686,null))[_0xbbcc('0x43')](handleError(_0x4f4686,null));};
\ No newline at end of file
+var _0x73f4=['crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','status','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','map','SalesforceConfiguration','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','count','includeAll','include','catch','show','params','options','create','find','getFields','SalesforceField','pick','getDescriptions','findOne','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash'];(function(_0x5092fa,_0x1e0171){var _0x41014e=function(_0x438875){while(--_0x438875){_0x5092fa['push'](_0x5092fa['shift']());}};_0x41014e(++_0x1e0171);}(_0x73f4,0xdc));var _0x473f=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0x73f4[_0x45bf86];return _0x1f02b7;};'use strict';var emlformat=require(_0x473f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x473f('0x1'));var jsonpatch=require(_0x473f('0x2'));var rp=require(_0x473f('0x3'));var moment=require('moment');var BPromise=require(_0x473f('0x4'));var Mustache=require(_0x473f('0x5'));var util=require(_0x473f('0x6'));var path=require('path');var sox=require(_0x473f('0x7'));var csv=require(_0x473f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x473f('0x9'));var _=require(_0x473f('0xa'));var squel=require('squel');var crypto=require(_0x473f('0xb'));var jsforce=require(_0x473f('0xc'));var deskjs=require(_0x473f('0xd'));var toCsv=require(_0x473f('0x8'));var querystring=require(_0x473f('0xe'));var Papa=require('papaparse');var Redis=require(_0x473f('0xf'));var authService=require(_0x473f('0x10'));var qs=require(_0x473f('0x11'));var as=require(_0x473f('0x12'));var hardwareService=require(_0x473f('0x13'));var logger=require(_0x473f('0x14'))(_0x473f('0x15'));var utils=require(_0x473f('0x16'));var config=require(_0x473f('0x17'));var licenseUtil=require(_0x473f('0x18'));var db=require(_0x473f('0x19'))['db'];function respondWithStatusCode(_0x434daa,_0x3617da){_0x3617da=_0x3617da||0xcc;return function(_0x325610){if(_0x325610){return _0x434daa[_0x473f('0x1a')](_0x3617da);}return _0x434daa['status'](_0x3617da)[_0x473f('0x1b')]();};}function respondWithResult(_0x13b334,_0x47ef96){_0x47ef96=_0x47ef96||0xc8;return function(_0x5a2e05){if(_0x5a2e05){return _0x13b334['status'](_0x47ef96)[_0x473f('0x1c')](_0x5a2e05);}};}function respondWithFilteredResult(_0x1f1aa8,_0x44c79a){return function(_0x4df9b0){if(_0x4df9b0){var _0x443c4c=typeof _0x44c79a[_0x473f('0x1d')]===_0x473f('0x1e')&&typeof _0x44c79a[_0x473f('0x1f')]===_0x473f('0x1e');var _0x532bfb=_0x4df9b0['count'];var _0x4e3c34=_0x443c4c?0x0:_0x44c79a[_0x473f('0x1d')];var _0x2fa6d9=_0x443c4c?_0x4df9b0['count']:_0x44c79a[_0x473f('0x1d')]+_0x44c79a['limit'];var _0x46bf43;if(_0x2fa6d9>=_0x532bfb){_0x2fa6d9=_0x532bfb;_0x46bf43=0xc8;}else{_0x46bf43=0xce;}_0x1f1aa8[_0x473f('0x20')](_0x46bf43);return _0x1f1aa8[_0x473f('0x21')](_0x473f('0x22'),_0x4e3c34+'-'+_0x2fa6d9+'/'+_0x532bfb)['json'](_0x4df9b0);}return null;};}function patchUpdates(_0xfee959){return function(_0x371697){try{jsonpatch[_0x473f('0x23')](_0x371697,_0xfee959,!![]);}catch(_0x56d8d0){return BPromise[_0x473f('0x24')](_0x56d8d0);}return _0x371697['save']();};}function saveUpdates(_0x7a0e5b,_0x13c1fc){return function(_0x58a0de){if(_0x58a0de){return _0x58a0de[_0x473f('0x25')](_0x7a0e5b)[_0x473f('0x26')](function(_0xee614e){return _0xee614e;});}return null;};}function removeEntity(_0x40a81f,_0x40c82c){return function(_0x55036c){if(_0x55036c){return _0x55036c[_0x473f('0x27')]()[_0x473f('0x26')](function(){_0x40a81f[_0x473f('0x20')](0xcc)[_0x473f('0x1b')]();});}};}function handleEntityNotFound(_0x31736d,_0x261a03){return function(_0x374817){if(!_0x374817){_0x31736d[_0x473f('0x1a')](0x194);}return _0x374817;};}function handleError(_0x3de295,_0x14350a){_0x14350a=_0x14350a||0x1f4;return function(_0xb24b2e){logger[_0x473f('0x28')](_0xb24b2e[_0x473f('0x29')]);if(_0xb24b2e[_0x473f('0x2a')]){delete _0xb24b2e[_0x473f('0x2a')];}_0x3de295['status'](_0x14350a)['send'](_0xb24b2e);};}exports['index']=function(_0xeae266,_0x31a050){var _0x2cff24={},_0x4c495b={},_0x377cd7={'count':0x0,'rows':[]};var _0x3aa81a=_[_0x473f('0x2b')](db[_0x473f('0x2c')][_0x473f('0x2d')],function(_0x49118f){return{'name':_0x49118f['fieldName'],'type':_0x49118f[_0x473f('0x2e')]['key']};});_0x4c495b[_0x473f('0x2f')]=_[_0x473f('0x2b')](_0x3aa81a,'name');_0x4c495b[_0x473f('0x30')]=_[_0x473f('0x31')](_0xeae266['query']);_0x4c495b[_0x473f('0x32')]=_['intersection'](_0x4c495b[_0x473f('0x2f')],_0x4c495b[_0x473f('0x30')]);_0x2cff24[_0x473f('0x33')]=_[_0x473f('0x34')](_0x4c495b[_0x473f('0x2f')],qs[_0x473f('0x35')](_0xeae266['query']['fields']));_0x2cff24[_0x473f('0x33')]=_0x2cff24[_0x473f('0x33')][_0x473f('0x36')]?_0x2cff24[_0x473f('0x33')]:_0x4c495b[_0x473f('0x2f')];if(!_0xeae266[_0x473f('0x30')][_0x473f('0x37')](_0x473f('0x38'))){_0x2cff24[_0x473f('0x1f')]=qs[_0x473f('0x1f')](_0xeae266[_0x473f('0x30')][_0x473f('0x1f')]);_0x2cff24['offset']=qs['offset'](_0xeae266[_0x473f('0x30')][_0x473f('0x1d')]);}_0x2cff24[_0x473f('0x39')]=qs[_0x473f('0x3a')](_0xeae266['query']['sort']);_0x2cff24[_0x473f('0x3b')]=qs[_0x473f('0x32')](_['pick'](_0xeae266['query'],_0x4c495b[_0x473f('0x32')]),_0x3aa81a);if(_0xeae266[_0x473f('0x30')][_0x473f('0x3c')]){_0x2cff24['where']=_[_0x473f('0x3d')](_0x2cff24[_0x473f('0x3b')],{'$or':_[_0x473f('0x2b')](_0x3aa81a,function(_0x1e74b6){if(_0x1e74b6[_0x473f('0x2e')]!==_0x473f('0x3e')){var _0x54a8ce={};_0x54a8ce[_0x1e74b6[_0x473f('0x2a')]]={'$like':'%'+_0xeae266[_0x473f('0x30')][_0x473f('0x3c')]+'%'};return _0x54a8ce;}})});}_0x2cff24=_[_0x473f('0x3d')]({},_0x2cff24,_0xeae266['options']);var _0x1077dd={'where':_0x2cff24['where']};return db[_0x473f('0x2c')][_0x473f('0x3f')](_0x1077dd)[_0x473f('0x26')](function(_0x71c7b6){_0x377cd7[_0x473f('0x3f')]=_0x71c7b6;if(_0xeae266[_0x473f('0x30')][_0x473f('0x40')]){_0x2cff24[_0x473f('0x41')]=[{'all':!![]}];}return db[_0x473f('0x2c')]['findAll'](_0x2cff24);})['then'](function(_0xe73f69){_0x377cd7['rows']=_0xe73f69;return _0x377cd7;})['then'](respondWithFilteredResult(_0x31a050,_0x2cff24))[_0x473f('0x42')](handleError(_0x31a050,null));};exports[_0x473f('0x43')]=function(_0xa6d3fa,_0x3e9b87){var _0x183a33={'raw':![],'where':{'id':_0xa6d3fa[_0x473f('0x44')]['id']}},_0x4dbbe0={};_0x4dbbe0[_0x473f('0x2f')]=_[_0x473f('0x31')](db[_0x473f('0x2c')][_0x473f('0x2d')]);_0x4dbbe0[_0x473f('0x30')]=_[_0x473f('0x31')](_0xa6d3fa['query']);_0x4dbbe0[_0x473f('0x32')]=_['intersection'](_0x4dbbe0[_0x473f('0x2f')],_0x4dbbe0[_0x473f('0x30')]);_0x183a33[_0x473f('0x33')]=_[_0x473f('0x34')](_0x4dbbe0[_0x473f('0x2f')],qs[_0x473f('0x35')](_0xa6d3fa[_0x473f('0x30')][_0x473f('0x35')]));_0x183a33[_0x473f('0x33')]=_0x183a33[_0x473f('0x33')][_0x473f('0x36')]?_0x183a33['attributes']:_0x4dbbe0[_0x473f('0x2f')];if(_0xa6d3fa[_0x473f('0x30')][_0x473f('0x40')]){_0x183a33[_0x473f('0x41')]=[{'all':!![]}];}_0x183a33=_[_0x473f('0x3d')]({},_0x183a33,_0xa6d3fa[_0x473f('0x45')]);return db[_0x473f('0x2c')]['find'](_0x183a33)['then'](handleEntityNotFound(_0x3e9b87,null))['then'](respondWithResult(_0x3e9b87,null))[_0x473f('0x42')](handleError(_0x3e9b87,null));};exports[_0x473f('0x46')]=function(_0x5df25f,_0x1a6377){return db['SalesforceConfiguration'][_0x473f('0x46')](_0x5df25f['body'],{})[_0x473f('0x26')](respondWithResult(_0x1a6377,0xc9))[_0x473f('0x42')](handleError(_0x1a6377,null));};exports[_0x473f('0x25')]=function(_0x2901c3,_0x2a5d01){if(_0x2901c3['body']['id']){delete _0x2901c3['body']['id'];}return db[_0x473f('0x2c')][_0x473f('0x47')]({'where':{'id':_0x2901c3['params']['id']}})[_0x473f('0x26')](handleEntityNotFound(_0x2a5d01,null))['then'](saveUpdates(_0x2901c3['body'],null))[_0x473f('0x26')](respondWithResult(_0x2a5d01,null))['catch'](handleError(_0x2a5d01,null));};exports[_0x473f('0x27')]=function(_0x144c23,_0x474d60){return db[_0x473f('0x2c')][_0x473f('0x47')]({'where':{'id':_0x144c23[_0x473f('0x44')]['id']}})[_0x473f('0x26')](handleEntityNotFound(_0x474d60,null))['then'](removeEntity(_0x474d60,null))[_0x473f('0x42')](handleError(_0x474d60,null));};exports[_0x473f('0x48')]=function(_0x431f32,_0x349733,_0x5b2705){var _0x5e597c={};var _0x47747e={};var _0x109f88;var _0x3d261d;return db[_0x473f('0x2c')]['findOne']({'where':{'id':_0x431f32[_0x473f('0x44')]['id']}})['then'](handleEntityNotFound(_0x349733,null))[_0x473f('0x26')](function(_0x2763f7){if(_0x2763f7){_0x109f88=_0x2763f7;_0x47747e[_0x473f('0x2f')]=_[_0x473f('0x31')](db[_0x473f('0x49')][_0x473f('0x2d')]);_0x47747e[_0x473f('0x30')]=_[_0x473f('0x31')](_0x431f32['query']);_0x47747e[_0x473f('0x32')]=_[_0x473f('0x34')](_0x47747e['model'],_0x47747e[_0x473f('0x30')]);_0x5e597c['attributes']=_[_0x473f('0x34')](_0x47747e[_0x473f('0x2f')],qs['fields'](_0x431f32[_0x473f('0x30')][_0x473f('0x35')]));_0x5e597c['attributes']=_0x5e597c['attributes']['length']?_0x5e597c[_0x473f('0x33')]:_0x47747e[_0x473f('0x2f')];_0x5e597c[_0x473f('0x39')]=qs['sort'](_0x431f32[_0x473f('0x30')]['sort']);_0x5e597c[_0x473f('0x3b')]=qs[_0x473f('0x32')](_[_0x473f('0x4a')](_0x431f32[_0x473f('0x30')],_0x47747e[_0x473f('0x32')]));if(_0x431f32[_0x473f('0x30')][_0x473f('0x3c')]){_0x5e597c[_0x473f('0x3b')]=_['merge'](_0x5e597c[_0x473f('0x3b')],{'$or':_[_0x473f('0x2b')](_0x5e597c[_0x473f('0x33')],function(_0x56b729){var _0x3136b={};_0x3136b[_0x56b729]={'$like':'%'+_0x431f32['query'][_0x473f('0x3c')]+'%'};return _0x3136b;})});}_0x5e597c=_[_0x473f('0x3d')]({},_0x5e597c,_0x431f32[_0x473f('0x45')]);return _0x109f88[_0x473f('0x48')](_0x5e597c);}})[_0x473f('0x26')](function(_0x200767){if(_0x200767){_0x3d261d=_0x200767[_0x473f('0x36')];if(!_0x431f32[_0x473f('0x30')]['hasOwnProperty'](_0x473f('0x38'))){_0x5e597c[_0x473f('0x1f')]=qs[_0x473f('0x1f')](_0x431f32[_0x473f('0x30')][_0x473f('0x1f')]);_0x5e597c[_0x473f('0x1d')]=qs[_0x473f('0x1d')](_0x431f32[_0x473f('0x30')][_0x473f('0x1d')]);}return _0x109f88[_0x473f('0x48')](_0x5e597c);}})[_0x473f('0x26')](function(_0x5f35de){if(_0x5f35de){return _0x5f35de?{'count':_0x3d261d,'rows':_0x5f35de}:null;}})['then'](respondWithResult(_0x349733,null))['catch'](handleError(_0x349733,null));};exports['getSubjects']=function(_0x46cece,_0x3342cf,_0x3815f7){var _0x5f3935={};var _0x20f78d={};var _0x880758;var _0x53fce7;return db[_0x473f('0x2c')]['findOne']({'where':{'id':_0x46cece[_0x473f('0x44')]['id']}})[_0x473f('0x26')](handleEntityNotFound(_0x3342cf,null))[_0x473f('0x26')](function(_0x43bd89){if(_0x43bd89){_0x880758=_0x43bd89;_0x20f78d['model']=_[_0x473f('0x31')](db[_0x473f('0x49')]['rawAttributes']);_0x20f78d[_0x473f('0x30')]=_['keys'](_0x46cece[_0x473f('0x30')]);_0x20f78d[_0x473f('0x32')]=_[_0x473f('0x34')](_0x20f78d[_0x473f('0x2f')],_0x20f78d['query']);_0x5f3935[_0x473f('0x33')]=_[_0x473f('0x34')](_0x20f78d[_0x473f('0x2f')],qs['fields'](_0x46cece[_0x473f('0x30')][_0x473f('0x35')]));_0x5f3935[_0x473f('0x33')]=_0x5f3935['attributes']['length']?_0x5f3935[_0x473f('0x33')]:_0x20f78d[_0x473f('0x2f')];_0x5f3935[_0x473f('0x39')]=qs[_0x473f('0x3a')](_0x46cece[_0x473f('0x30')][_0x473f('0x3a')]);_0x5f3935['where']=qs[_0x473f('0x32')](_[_0x473f('0x4a')](_0x46cece['query'],_0x20f78d[_0x473f('0x32')]));if(_0x46cece[_0x473f('0x30')][_0x473f('0x3c')]){_0x5f3935[_0x473f('0x3b')]=_[_0x473f('0x3d')](_0x5f3935[_0x473f('0x3b')],{'$or':_[_0x473f('0x2b')](_0x5f3935[_0x473f('0x33')],function(_0x649954){var _0x9a87a={};_0x9a87a[_0x649954]={'$like':'%'+_0x46cece[_0x473f('0x30')][_0x473f('0x3c')]+'%'};return _0x9a87a;})});}_0x5f3935=_[_0x473f('0x3d')]({},_0x5f3935,_0x46cece[_0x473f('0x45')]);return _0x880758['getSubjects'](_0x5f3935);}})[_0x473f('0x26')](function(_0x274be0){if(_0x274be0){_0x53fce7=_0x274be0[_0x473f('0x36')];if(!_0x46cece['query'][_0x473f('0x37')](_0x473f('0x38'))){_0x5f3935[_0x473f('0x1f')]=qs[_0x473f('0x1f')](_0x46cece[_0x473f('0x30')][_0x473f('0x1f')]);_0x5f3935['offset']=qs[_0x473f('0x1d')](_0x46cece['query'][_0x473f('0x1d')]);}return _0x880758['getSubjects'](_0x5f3935);}})[_0x473f('0x26')](function(_0x36dd4d){if(_0x36dd4d){return _0x36dd4d?{'count':_0x53fce7,'rows':_0x36dd4d}:null;}})[_0x473f('0x26')](respondWithResult(_0x3342cf,null))[_0x473f('0x42')](handleError(_0x3342cf,null));};exports[_0x473f('0x4b')]=function(_0x5bcefe,_0x54101b,_0x967e06){var _0x717715={};var _0x19af4f={};var _0x5e929d;var _0x5c6226;return db['SalesforceConfiguration'][_0x473f('0x4c')]({'where':{'id':_0x5bcefe[_0x473f('0x44')]['id']}})[_0x473f('0x26')](handleEntityNotFound(_0x54101b,null))[_0x473f('0x26')](function(_0x59fdc6){if(_0x59fdc6){_0x5e929d=_0x59fdc6;_0x19af4f[_0x473f('0x2f')]=_[_0x473f('0x31')](db[_0x473f('0x49')][_0x473f('0x2d')]);_0x19af4f[_0x473f('0x30')]=_[_0x473f('0x31')](_0x5bcefe['query']);_0x19af4f[_0x473f('0x32')]=_[_0x473f('0x34')](_0x19af4f[_0x473f('0x2f')],_0x19af4f['query']);_0x717715[_0x473f('0x33')]=_[_0x473f('0x34')](_0x19af4f['model'],qs['fields'](_0x5bcefe[_0x473f('0x30')][_0x473f('0x35')]));_0x717715[_0x473f('0x33')]=_0x717715['attributes'][_0x473f('0x36')]?_0x717715[_0x473f('0x33')]:_0x19af4f[_0x473f('0x2f')];_0x717715[_0x473f('0x39')]=qs['sort'](_0x5bcefe['query'][_0x473f('0x3a')]);_0x717715[_0x473f('0x3b')]=qs[_0x473f('0x32')](_['pick'](_0x5bcefe[_0x473f('0x30')],_0x19af4f[_0x473f('0x32')]));if(_0x5bcefe[_0x473f('0x30')][_0x473f('0x3c')]){_0x717715[_0x473f('0x3b')]=_['merge'](_0x717715['where'],{'$or':_[_0x473f('0x2b')](_0x717715['attributes'],function(_0x56f7b6){var _0x2e1307={};_0x2e1307[_0x56f7b6]={'$like':'%'+_0x5bcefe[_0x473f('0x30')]['filter']+'%'};return _0x2e1307;})});}_0x717715=_['merge']({},_0x717715,_0x5bcefe[_0x473f('0x45')]);return _0x5e929d['getDescriptions'](_0x717715);}})['then'](function(_0x1c13d5){if(_0x1c13d5){_0x5c6226=_0x1c13d5['length'];if(!_0x5bcefe[_0x473f('0x30')]['hasOwnProperty']('nolimit')){_0x717715[_0x473f('0x1f')]=qs[_0x473f('0x1f')](_0x5bcefe['query'][_0x473f('0x1f')]);_0x717715[_0x473f('0x1d')]=qs['offset'](_0x5bcefe['query'][_0x473f('0x1d')]);}return _0x5e929d[_0x473f('0x4b')](_0x717715);}})[_0x473f('0x26')](function(_0x530560){if(_0x530560){return _0x530560?{'count':_0x5c6226,'rows':_0x530560}:null;}})[_0x473f('0x26')](respondWithResult(_0x54101b,null))['catch'](handleError(_0x54101b,null));};
\ No newline at end of file
index 2d24ecc..7c2343d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe46=['../../config/environment','./intSalesforceConfiguration.attributes','exports','define','int_salesforce_configurations','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x577737,_0x1880fe){var _0x3e5491=function(_0x32a673){while(--_0x32a673){_0x577737['push'](_0x577737['shift']());}};_0x3e5491(++_0x1880fe);}(_0xbe46,0xcb));var _0x6be4=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xbe46[_0x34bc30];return _0x5706de;};'use strict';var _=require(_0x6be4('0x0'));var util=require(_0x6be4('0x1'));var logger=require(_0x6be4('0x2'))('api');var moment=require(_0x6be4('0x3'));var BPromise=require(_0x6be4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6be4('0x5'));var rimraf=require('rimraf');var config=require(_0x6be4('0x6'));var attributes=require(_0x6be4('0x7'));module[_0x6be4('0x8')]=function(_0x3b7fad,_0x561cb6){return _0x3b7fad[_0x6be4('0x9')]('SalesforceConfiguration',attributes,{'tableName':_0x6be4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8000=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','int_salesforce_configurations','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x913b85,_0x213182){var _0x1ce434=function(_0x4c9c8b){while(--_0x4c9c8b){_0x913b85['push'](_0x913b85['shift']());}};_0x1ce434(++_0x213182);}(_0x8000,0x156));var _0x0800=function(_0x122b5b,_0x42a4ac){_0x122b5b=_0x122b5b-0x0;var _0x30f7c2=_0x8000[_0x122b5b];return _0x30f7c2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0800('0x0'))(_0x0800('0x1'));var moment=require(_0x0800('0x2'));var BPromise=require(_0x0800('0x3'));var rp=require(_0x0800('0x4'));var fs=require('fs');var path=require(_0x0800('0x5'));var rimraf=require(_0x0800('0x6'));var config=require(_0x0800('0x7'));var attributes=require(_0x0800('0x8'));module[_0x0800('0x9')]=function(_0xb34f52,_0x8bd4e5){return _0xb34f52['define'](_0x0800('0xa'),attributes,{'tableName':_0x0800('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4ff441..4d1b559 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da4=['message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x1da4,0x1bb));var _0x41da=function(_0x4db9a6,_0x3ce1d7){_0x4db9a6=_0x4db9a6-0x0;var _0x153851=_0x1da4[_0x4db9a6];return _0x153851;};'use strict';var _=require(_0x41da('0x0'));var util=require('util');var moment=require(_0x41da('0x1'));var BPromise=require(_0x41da('0x2'));var rs=require(_0x41da('0x3'));var fs=require('fs');var Redis=require(_0x41da('0x4'));var db=require(_0x41da('0x5'))['db'];var utils=require(_0x41da('0x6'));var logger=require(_0x41da('0x7'))(_0x41da('0x8'));var config=require('../../config/environment');var jayson=require(_0x41da('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x18b404,_0x134070,_0x1e0053){return new BPromise(function(_0x3ab410,_0x4f8329){return client['request'](_0x18b404,_0x1e0053)[_0x41da('0xa')](function(_0x2e8f23){logger[_0x41da('0xb')](_0x41da('0xc'),_0x134070,_0x41da('0xd'));logger[_0x41da('0xe')](_0x41da('0xf'),_0x134070,_0x41da('0xd'),JSON[_0x41da('0x10')](_0x2e8f23));if(_0x2e8f23[_0x41da('0x11')]){if(_0x2e8f23[_0x41da('0x11')][_0x41da('0x12')]===0x1f4){logger[_0x41da('0x11')](_0x41da('0xc'),_0x134070,_0x2e8f23[_0x41da('0x11')][_0x41da('0x13')]);return _0x4f8329(_0x2e8f23[_0x41da('0x11')][_0x41da('0x13')]);}logger[_0x41da('0x11')](_0x41da('0xc'),_0x134070,_0x2e8f23['error'][_0x41da('0x13')]);return _0x3ab410(_0x2e8f23[_0x41da('0x11')][_0x41da('0x13')]);}else{logger[_0x41da('0xb')]('SalesforceConfiguration,\x20%s,\x20%s',_0x134070,_0x41da('0xd'));_0x3ab410(_0x2e8f23[_0x41da('0x14')]['message']);}})[_0x41da('0x15')](function(_0xd77dd4){logger[_0x41da('0x11')](_0x41da('0xc'),_0x134070,_0xd77dd4);_0x4f8329(_0xd77dd4);});});}
\ No newline at end of file
+var _0x6b15=['SalesforceConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','error'];(function(_0x525513,_0x44220c){var _0x17f77f=function(_0x28473e){while(--_0x28473e){_0x525513['push'](_0x525513['shift']());}};_0x17f77f(++_0x44220c);}(_0x6b15,0x8f));var _0x56b1=function(_0x5800ff,_0xb9160d){_0x5800ff=_0x5800ff-0x0;var _0x47ade8=_0x6b15[_0x5800ff];return _0x47ade8;};'use strict';var _=require(_0x56b1('0x0'));var util=require(_0x56b1('0x1'));var moment=require(_0x56b1('0x2'));var BPromise=require(_0x56b1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x56b1('0x4'));var db=require(_0x56b1('0x5'))['db'];var utils=require(_0x56b1('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x56b1('0x7'));var jayson=require(_0x56b1('0x8'));var client=jayson[_0x56b1('0x9')][_0x56b1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x351c5a,_0x5424aa,_0x4675b1){return new BPromise(function(_0x157bf1,_0x2e5c85){return client[_0x56b1('0xb')](_0x351c5a,_0x4675b1)[_0x56b1('0xc')](function(_0x2ddfd4){logger[_0x56b1('0xd')]('SalesforceConfiguration,\x20%s,\x20%s',_0x5424aa,_0x56b1('0xe'));logger[_0x56b1('0xf')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x5424aa,_0x56b1('0xe'),JSON['stringify'](_0x2ddfd4));if(_0x2ddfd4['error']){if(_0x2ddfd4[_0x56b1('0x10')]['code']===0x1f4){logger[_0x56b1('0x10')](_0x56b1('0x11'),_0x5424aa,_0x2ddfd4[_0x56b1('0x10')][_0x56b1('0x12')]);return _0x2e5c85(_0x2ddfd4['error'][_0x56b1('0x12')]);}logger['error'](_0x56b1('0x11'),_0x5424aa,_0x2ddfd4[_0x56b1('0x10')][_0x56b1('0x12')]);return _0x157bf1(_0x2ddfd4['error'][_0x56b1('0x12')]);}else{logger['info'](_0x56b1('0x11'),_0x5424aa,_0x56b1('0xe'));_0x157bf1(_0x2ddfd4[_0x56b1('0x13')][_0x56b1('0x12')]);}})['catch'](function(_0x26ab54){logger[_0x56b1('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x5424aa,_0x26ab54);_0x2e5c85(_0x26ab54);});});}
\ No newline at end of file
index 741f8fe..e1bd273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc29b=['delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','/:id','show','post','create','update'];(function(_0x291119,_0x3d08c9){var _0x20309f=function(_0x16f28d){while(--_0x16f28d){_0x291119['push'](_0x291119['shift']());}};_0x20309f(++_0x3d08c9);}(_0xc29b,0xa3));var _0xbc29=function(_0x5c9a5d,_0x345ea2){_0x5c9a5d=_0x5c9a5d-0x0;var _0x42881b=_0xc29b[_0x5c9a5d];return _0x42881b;};'use strict';var multer=require(_0xbc29('0x0'));var util=require(_0xbc29('0x1'));var path=require('path');var timeout=require(_0xbc29('0x2'));var express=require(_0xbc29('0x3'));var router=express['Router']();var fs_extra=require(_0xbc29('0x4'));var auth=require(_0xbc29('0x5'));var interaction=require(_0xbc29('0x6'));var config=require(_0xbc29('0x7'));var controller=require(_0xbc29('0x8'));router['get']('/',auth[_0xbc29('0x9')](),controller[_0xbc29('0xa')]);router[_0xbc29('0xb')](_0xbc29('0xc'),auth['isAuthenticated'](),controller[_0xbc29('0xd')]);router[_0xbc29('0xe')]('/',auth[_0xbc29('0x9')](),controller[_0xbc29('0xf')]);router['put'](_0xbc29('0xc'),auth[_0xbc29('0x9')](),controller[_0xbc29('0x10')]);router[_0xbc29('0x11')](_0xbc29('0xc'),auth[_0xbc29('0x9')](),controller[_0xbc29('0x12')]);module[_0xbc29('0x13')]=router;
\ No newline at end of file
+var _0x1a2f=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer','util'];(function(_0x20f542,_0x4b658c){var _0x40e071=function(_0x196e4d){while(--_0x196e4d){_0x20f542['push'](_0x20f542['shift']());}};_0x40e071(++_0x4b658c);}(_0x1a2f,0x1a2));var _0xf1a2=function(_0x40289d,_0x4501f9){_0x40289d=_0x40289d-0x0;var _0x292541=_0x1a2f[_0x40289d];return _0x292541;};'use strict';var multer=require(_0xf1a2('0x0'));var util=require(_0xf1a2('0x1'));var path=require(_0xf1a2('0x2'));var timeout=require(_0xf1a2('0x3'));var express=require(_0xf1a2('0x4'));var router=express[_0xf1a2('0x5')]();var fs_extra=require(_0xf1a2('0x6'));var auth=require(_0xf1a2('0x7'));var interaction=require(_0xf1a2('0x8'));var config=require(_0xf1a2('0x9'));var controller=require(_0xf1a2('0xa'));router['get']('/',auth[_0xf1a2('0xb')](),controller[_0xf1a2('0xc')]);router['get'](_0xf1a2('0xd'),auth[_0xf1a2('0xb')](),controller[_0xf1a2('0xe')]);router[_0xf1a2('0xf')]('/',auth[_0xf1a2('0xb')](),controller['create']);router[_0xf1a2('0x10')](_0xf1a2('0xd'),auth['isAuthenticated'](),controller[_0xf1a2('0x11')]);router[_0xf1a2('0x12')](_0xf1a2('0xd'),auth[_0xf1a2('0xb')](),controller['destroy']);module[_0xf1a2('0x13')]=router;
\ No newline at end of file
index 4e5f4a0..6fec2ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1acd=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','exports'];(function(_0x56c7f0,_0x297caf){var _0x4b27b5=function(_0x338d36){while(--_0x338d36){_0x56c7f0['push'](_0x56c7f0['shift']());}};_0x4b27b5(++_0x297caf);}(_0x1acd,0x15f));var _0xd1ac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1acd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xd1ac('0x0')]={'type':{'type':Sequelize[_0xd1ac('0x1')](_0xd1ac('0x2'),_0xd1ac('0x3'),_0xd1ac('0x4'),_0xd1ac('0x5'),_0xd1ac('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xd1ac('0x7')]},'key':{'type':Sequelize[_0xd1ac('0x7')]},'keyType':{'type':Sequelize[_0xd1ac('0x1')](_0xd1ac('0x2'),_0xd1ac('0x3'),_0xd1ac('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xd1ac('0x7')]}};
\ No newline at end of file
+var _0x1851=['string','customVariable','keyValue','picklist','STRING','variable','sequelize','ENUM'];(function(_0x15526f,_0x3bc639){var _0x7202cb=function(_0x2729f0){while(--_0x2729f0){_0x15526f['push'](_0x15526f['shift']());}};_0x7202cb(++_0x3bc639);}(_0x1851,0xa6));var _0x1185=function(_0x9a16ef,_0x164888){_0x9a16ef=_0x9a16ef-0x0;var _0xf73856=_0x1851[_0x9a16ef];return _0xf73856;};'use strict';var Sequelize=require(_0x1185('0x0'));module['exports']={'type':{'type':Sequelize[_0x1185('0x1')](_0x1185('0x2'),'variable',_0x1185('0x3'),_0x1185('0x4'),_0x1185('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1185('0x6')]},'keyType':{'type':Sequelize[_0x1185('0x1')](_0x1185('0x2'),_0x1185('0x7'),_0x1185('0x3'))},'keyContent':{'type':Sequelize[_0x1185('0x6')]},'idField':{'type':Sequelize[_0x1185('0x6')]},'variableName':{'type':Sequelize[_0x1185('0x6')]}};
\ No newline at end of file
index cd6121d..d8a633c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ec5=['stack','name','send','index','map','SalesforceField','rawAttributes','model','query','keys','attributes','intersection','fields','hasOwnProperty','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','includeAll','include','rows','catch','params','length','options','find','create','body','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','update','destroy','then','error'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0x1ec5,0x66));var _0x51ec=function(_0x108829,_0x115091){_0x108829=_0x108829-0x0;var _0x5ba665=_0x1ec5[_0x108829];return _0x5ba665;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x51ec('0x0'));var rp=require(_0x51ec('0x1'));var moment=require(_0x51ec('0x2'));var BPromise=require(_0x51ec('0x3'));var Mustache=require(_0x51ec('0x4'));var util=require('util');var path=require(_0x51ec('0x5'));var sox=require(_0x51ec('0x6'));var csv=require(_0x51ec('0x7'));var ejs=require(_0x51ec('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x51ec('0x9'));var crypto=require(_0x51ec('0xa'));var jsforce=require(_0x51ec('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x51ec('0x7'));var querystring=require(_0x51ec('0xc'));var Papa=require('papaparse');var Redis=require(_0x51ec('0xd'));var authService=require(_0x51ec('0xe'));var qs=require(_0x51ec('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x51ec('0x10'));var logger=require(_0x51ec('0x11'))(_0x51ec('0x12'));var utils=require(_0x51ec('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x51ec('0x14'));var db=require(_0x51ec('0x15'))['db'];function respondWithStatusCode(_0x398259,_0x399350){_0x399350=_0x399350||0xcc;return function(_0x3a5dc8){if(_0x3a5dc8){return _0x398259[_0x51ec('0x16')](_0x399350);}return _0x398259[_0x51ec('0x17')](_0x399350)[_0x51ec('0x18')]();};}function respondWithResult(_0x55cf0b,_0x3ec935){_0x3ec935=_0x3ec935||0xc8;return function(_0x298260){if(_0x298260){return _0x55cf0b['status'](_0x3ec935)[_0x51ec('0x19')](_0x298260);}};}function respondWithFilteredResult(_0x4b0681,_0x378940){return function(_0x2187e8){if(_0x2187e8){var _0x5977d9=typeof _0x378940[_0x51ec('0x1a')]===_0x51ec('0x1b')&&typeof _0x378940[_0x51ec('0x1c')]===_0x51ec('0x1b');var _0x508975=_0x2187e8[_0x51ec('0x1d')];var _0x174b11=_0x5977d9?0x0:_0x378940[_0x51ec('0x1a')];var _0xd5b64a=_0x5977d9?_0x2187e8[_0x51ec('0x1d')]:_0x378940[_0x51ec('0x1a')]+_0x378940['limit'];var _0x34cc1a;if(_0xd5b64a>=_0x508975){_0xd5b64a=_0x508975;_0x34cc1a=0xc8;}else{_0x34cc1a=0xce;}_0x4b0681['status'](_0x34cc1a);return _0x4b0681['set']('Content-Range',_0x174b11+'-'+_0xd5b64a+'/'+_0x508975)['json'](_0x2187e8);}return null;};}function patchUpdates(_0x8338f5){return function(_0x5779b7){try{jsonpatch[_0x51ec('0x1e')](_0x5779b7,_0x8338f5,!![]);}catch(_0x3dc122){return BPromise[_0x51ec('0x1f')](_0x3dc122);}return _0x5779b7['save']();};}function saveUpdates(_0x430a7e,_0x1de0fc){return function(_0x158cc1){if(_0x158cc1){return _0x158cc1[_0x51ec('0x20')](_0x430a7e)['then'](function(_0x1b1508){return _0x1b1508;});}return null;};}function removeEntity(_0x2eab8c,_0x1912ee){return function(_0x306294){if(_0x306294){return _0x306294[_0x51ec('0x21')]()[_0x51ec('0x22')](function(){_0x2eab8c[_0x51ec('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x383485,_0x38e060){return function(_0xa6a44a){if(!_0xa6a44a){_0x383485['sendStatus'](0x194);}return _0xa6a44a;};}function handleError(_0x29a773,_0x1c22cf){_0x1c22cf=_0x1c22cf||0x1f4;return function(_0xf56f37){logger[_0x51ec('0x23')](_0xf56f37[_0x51ec('0x24')]);if(_0xf56f37[_0x51ec('0x25')]){delete _0xf56f37[_0x51ec('0x25')];}_0x29a773[_0x51ec('0x17')](_0x1c22cf)[_0x51ec('0x26')](_0xf56f37);};}exports[_0x51ec('0x27')]=function(_0x4d796c,_0x4e9fa2){var _0x470578={},_0x110e10={},_0x139b57={'count':0x0,'rows':[]};var _0x405c6b=_[_0x51ec('0x28')](db[_0x51ec('0x29')][_0x51ec('0x2a')],function(_0x4cb951){return{'name':_0x4cb951['fieldName'],'type':_0x4cb951['type']['key']};});_0x110e10[_0x51ec('0x2b')]=_[_0x51ec('0x28')](_0x405c6b,'name');_0x110e10[_0x51ec('0x2c')]=_[_0x51ec('0x2d')](_0x4d796c['query']);_0x110e10['filters']=_['intersection'](_0x110e10[_0x51ec('0x2b')],_0x110e10[_0x51ec('0x2c')]);_0x470578[_0x51ec('0x2e')]=_[_0x51ec('0x2f')](_0x110e10[_0x51ec('0x2b')],qs[_0x51ec('0x30')](_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x30')]));_0x470578[_0x51ec('0x2e')]=_0x470578[_0x51ec('0x2e')]['length']?_0x470578[_0x51ec('0x2e')]:_0x110e10[_0x51ec('0x2b')];if(!_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x31')]('nolimit')){_0x470578['limit']=qs[_0x51ec('0x1c')](_0x4d796c[_0x51ec('0x2c')]['limit']);_0x470578[_0x51ec('0x1a')]=qs['offset'](_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x1a')]);}_0x470578[_0x51ec('0x32')]=qs[_0x51ec('0x33')](_0x4d796c[_0x51ec('0x2c')]['sort']);_0x470578[_0x51ec('0x34')]=qs[_0x51ec('0x35')](_[_0x51ec('0x36')](_0x4d796c[_0x51ec('0x2c')],_0x110e10[_0x51ec('0x35')]),_0x405c6b);if(_0x4d796c[_0x51ec('0x2c')]['filter']){_0x470578['where']=_[_0x51ec('0x37')](_0x470578['where'],{'$or':_[_0x51ec('0x28')](_0x405c6b,function(_0x3b9af0){if(_0x3b9af0[_0x51ec('0x38')]!==_0x51ec('0x39')){var _0x544140={};_0x544140[_0x3b9af0[_0x51ec('0x25')]]={'$like':'%'+_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x3a')]+'%'};return _0x544140;}})});}_0x470578=_['merge']({},_0x470578,_0x4d796c['options']);var _0xc88b9={'where':_0x470578['where']};return db[_0x51ec('0x29')][_0x51ec('0x1d')](_0xc88b9)[_0x51ec('0x22')](function(_0x5cff51){_0x139b57[_0x51ec('0x1d')]=_0x5cff51;if(_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x3b')]){_0x470578[_0x51ec('0x3c')]=[{'all':!![]}];}return db[_0x51ec('0x29')]['findAll'](_0x470578);})[_0x51ec('0x22')](function(_0x1f5458){_0x139b57[_0x51ec('0x3d')]=_0x1f5458;return _0x139b57;})[_0x51ec('0x22')](respondWithFilteredResult(_0x4e9fa2,_0x470578))[_0x51ec('0x3e')](handleError(_0x4e9fa2,null));};exports['show']=function(_0x55f98d,_0x4baa53){var _0x1c8b1d={'raw':!![],'where':{'id':_0x55f98d[_0x51ec('0x3f')]['id']}},_0x1c120e={};_0x1c120e[_0x51ec('0x2b')]=_['keys'](db['SalesforceField'][_0x51ec('0x2a')]);_0x1c120e[_0x51ec('0x2c')]=_['keys'](_0x55f98d[_0x51ec('0x2c')]);_0x1c120e[_0x51ec('0x35')]=_[_0x51ec('0x2f')](_0x1c120e[_0x51ec('0x2b')],_0x1c120e[_0x51ec('0x2c')]);_0x1c8b1d['attributes']=_[_0x51ec('0x2f')](_0x1c120e[_0x51ec('0x2b')],qs[_0x51ec('0x30')](_0x55f98d[_0x51ec('0x2c')][_0x51ec('0x30')]));_0x1c8b1d[_0x51ec('0x2e')]=_0x1c8b1d[_0x51ec('0x2e')][_0x51ec('0x40')]?_0x1c8b1d['attributes']:_0x1c120e['model'];if(_0x55f98d[_0x51ec('0x2c')][_0x51ec('0x3b')]){_0x1c8b1d['include']=[{'all':!![]}];}_0x1c8b1d=_[_0x51ec('0x37')]({},_0x1c8b1d,_0x55f98d[_0x51ec('0x41')]);return db['SalesforceField'][_0x51ec('0x42')](_0x1c8b1d)[_0x51ec('0x22')](handleEntityNotFound(_0x4baa53,null))['then'](respondWithResult(_0x4baa53,null))[_0x51ec('0x3e')](handleError(_0x4baa53,null));};exports[_0x51ec('0x43')]=function(_0x355b5d,_0x43ad4a){return db['SalesforceField'][_0x51ec('0x43')](_0x355b5d[_0x51ec('0x44')],{})[_0x51ec('0x22')](respondWithResult(_0x43ad4a,0xc9))[_0x51ec('0x3e')](handleError(_0x43ad4a,null));};exports['update']=function(_0x2fd7c9,_0x3e5278){if(_0x2fd7c9[_0x51ec('0x44')]['id']){delete _0x2fd7c9[_0x51ec('0x44')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0x2fd7c9[_0x51ec('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3e5278,null))[_0x51ec('0x22')](saveUpdates(_0x2fd7c9[_0x51ec('0x44')],null))[_0x51ec('0x22')](respondWithResult(_0x3e5278,null))[_0x51ec('0x3e')](handleError(_0x3e5278,null));};exports[_0x51ec('0x21')]=function(_0x56c273,_0x28ba49){return db[_0x51ec('0x29')][_0x51ec('0x42')]({'where':{'id':_0x56c273[_0x51ec('0x3f')]['id']}})[_0x51ec('0x22')](handleEntityNotFound(_0x28ba49,null))[_0x51ec('0x22')](removeEntity(_0x28ba49,null))['catch'](handleError(_0x28ba49,null));};
\ No newline at end of file
+var _0xe66c=['undefined','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','index','SalesforceField','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','find','create','body','params','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit'];(function(_0x5830df,_0x311506){var _0x5a8c20=function(_0x1144f8){while(--_0x1144f8){_0x5830df['push'](_0x5830df['shift']());}};_0x5a8c20(++_0x311506);}(_0xe66c,0x105));var _0xce66=function(_0x29d6b3,_0x5a7fd4){_0x29d6b3=_0x29d6b3-0x0;var _0x182c9c=_0xe66c[_0x29d6b3];return _0x182c9c;};'use strict';var emlformat=require(_0xce66('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xce66('0x1'));var rp=require(_0xce66('0x2'));var moment=require(_0xce66('0x3'));var BPromise=require(_0xce66('0x4'));var Mustache=require(_0xce66('0x5'));var util=require(_0xce66('0x6'));var path=require(_0xce66('0x7'));var sox=require(_0xce66('0x8'));var csv=require('to-csv');var ejs=require(_0xce66('0x9'));var fs=require('fs');var fs_extra=require(_0xce66('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xce66('0xb'));var deskjs=require(_0xce66('0xc'));var toCsv=require(_0xce66('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xce66('0xe'));var qs=require(_0xce66('0xf'));var as=require(_0xce66('0x10'));var hardwareService=require(_0xce66('0x11'));var logger=require('../../config/logger')(_0xce66('0x12'));var utils=require(_0xce66('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xce66('0x14'))['db'];function respondWithStatusCode(_0x13e631,_0x2b1afe){_0x2b1afe=_0x2b1afe||0xcc;return function(_0x30fddc){if(_0x30fddc){return _0x13e631[_0xce66('0x15')](_0x2b1afe);}return _0x13e631[_0xce66('0x16')](_0x2b1afe)[_0xce66('0x17')]();};}function respondWithResult(_0x1f0d47,_0x502ad0){_0x502ad0=_0x502ad0||0xc8;return function(_0x1fcc30){if(_0x1fcc30){return _0x1f0d47[_0xce66('0x16')](_0x502ad0)[_0xce66('0x18')](_0x1fcc30);}};}function respondWithFilteredResult(_0x23ed54,_0x2da66e){return function(_0x1a09d7){if(_0x1a09d7){var _0x118886=typeof _0x2da66e[_0xce66('0x19')]==='undefined'&&typeof _0x2da66e[_0xce66('0x1a')]===_0xce66('0x1b');var _0x423c67=_0x1a09d7['count'];var _0x2b9661=_0x118886?0x0:_0x2da66e[_0xce66('0x19')];var _0x50cb78=_0x118886?_0x1a09d7[_0xce66('0x1c')]:_0x2da66e[_0xce66('0x19')]+_0x2da66e['limit'];var _0x485d71;if(_0x50cb78>=_0x423c67){_0x50cb78=_0x423c67;_0x485d71=0xc8;}else{_0x485d71=0xce;}_0x23ed54[_0xce66('0x16')](_0x485d71);return _0x23ed54[_0xce66('0x1d')](_0xce66('0x1e'),_0x2b9661+'-'+_0x50cb78+'/'+_0x423c67)[_0xce66('0x18')](_0x1a09d7);}return null;};}function patchUpdates(_0x1d7ec8){return function(_0x49b528){try{jsonpatch['apply'](_0x49b528,_0x1d7ec8,!![]);}catch(_0x25784e){return BPromise[_0xce66('0x1f')](_0x25784e);}return _0x49b528[_0xce66('0x20')]();};}function saveUpdates(_0x158088,_0x27fe46){return function(_0x49ea83){if(_0x49ea83){return _0x49ea83[_0xce66('0x21')](_0x158088)[_0xce66('0x22')](function(_0x466709){return _0x466709;});}return null;};}function removeEntity(_0x538522,_0x1d7774){return function(_0x2e2e51){if(_0x2e2e51){return _0x2e2e51[_0xce66('0x23')]()[_0xce66('0x22')](function(){_0x538522['status'](0xcc)[_0xce66('0x17')]();});}};}function handleEntityNotFound(_0x58a05a,_0x37550a){return function(_0x115c52){if(!_0x115c52){_0x58a05a[_0xce66('0x15')](0x194);}return _0x115c52;};}function handleError(_0x453430,_0x2f6cc7){_0x2f6cc7=_0x2f6cc7||0x1f4;return function(_0x5a8b16){logger['error'](_0x5a8b16[_0xce66('0x24')]);if(_0x5a8b16[_0xce66('0x25')]){delete _0x5a8b16[_0xce66('0x25')];}_0x453430[_0xce66('0x16')](_0x2f6cc7)[_0xce66('0x26')](_0x5a8b16);};}exports[_0xce66('0x27')]=function(_0x57d9f7,_0x390b97){var _0x296e6c={},_0x156fa6={},_0x2ce6ef={'count':0x0,'rows':[]};var _0x2680aa=_['map'](db[_0xce66('0x28')][_0xce66('0x29')],function(_0x1a1063){return{'name':_0x1a1063[_0xce66('0x2a')],'type':_0x1a1063['type'][_0xce66('0x2b')]};});_0x156fa6[_0xce66('0x2c')]=_[_0xce66('0x2d')](_0x2680aa,_0xce66('0x25'));_0x156fa6['query']=_[_0xce66('0x2e')](_0x57d9f7[_0xce66('0x2f')]);_0x156fa6[_0xce66('0x30')]=_[_0xce66('0x31')](_0x156fa6[_0xce66('0x2c')],_0x156fa6[_0xce66('0x2f')]);_0x296e6c[_0xce66('0x32')]=_['intersection'](_0x156fa6['model'],qs[_0xce66('0x33')](_0x57d9f7[_0xce66('0x2f')][_0xce66('0x33')]));_0x296e6c[_0xce66('0x32')]=_0x296e6c[_0xce66('0x32')][_0xce66('0x34')]?_0x296e6c['attributes']:_0x156fa6[_0xce66('0x2c')];if(!_0x57d9f7['query'][_0xce66('0x35')](_0xce66('0x36'))){_0x296e6c[_0xce66('0x1a')]=qs[_0xce66('0x1a')](_0x57d9f7['query']['limit']);_0x296e6c['offset']=qs['offset'](_0x57d9f7['query'][_0xce66('0x19')]);}_0x296e6c[_0xce66('0x37')]=qs['sort'](_0x57d9f7[_0xce66('0x2f')]['sort']);_0x296e6c[_0xce66('0x38')]=qs[_0xce66('0x30')](_[_0xce66('0x39')](_0x57d9f7['query'],_0x156fa6[_0xce66('0x30')]),_0x2680aa);if(_0x57d9f7[_0xce66('0x2f')][_0xce66('0x3a')]){_0x296e6c[_0xce66('0x38')]=_[_0xce66('0x3b')](_0x296e6c['where'],{'$or':_[_0xce66('0x2d')](_0x2680aa,function(_0xc19fc0){if(_0xc19fc0[_0xce66('0x3c')]!==_0xce66('0x3d')){var _0x4526bc={};_0x4526bc[_0xc19fc0[_0xce66('0x25')]]={'$like':'%'+_0x57d9f7[_0xce66('0x2f')][_0xce66('0x3a')]+'%'};return _0x4526bc;}})});}_0x296e6c=_[_0xce66('0x3b')]({},_0x296e6c,_0x57d9f7[_0xce66('0x3e')]);var _0x3b3ab6={'where':_0x296e6c[_0xce66('0x38')]};return db['SalesforceField'][_0xce66('0x1c')](_0x3b3ab6)[_0xce66('0x22')](function(_0x3e5131){_0x2ce6ef['count']=_0x3e5131;if(_0x57d9f7[_0xce66('0x2f')][_0xce66('0x3f')]){_0x296e6c[_0xce66('0x40')]=[{'all':!![]}];}return db[_0xce66('0x28')]['findAll'](_0x296e6c);})[_0xce66('0x22')](function(_0x2087fe){_0x2ce6ef[_0xce66('0x41')]=_0x2087fe;return _0x2ce6ef;})[_0xce66('0x22')](respondWithFilteredResult(_0x390b97,_0x296e6c))[_0xce66('0x42')](handleError(_0x390b97,null));};exports[_0xce66('0x43')]=function(_0x5b44d7,_0x55b4dd){var _0x46989a={'raw':!![],'where':{'id':_0x5b44d7['params']['id']}},_0xc62438={};_0xc62438['model']=_[_0xce66('0x2e')](db[_0xce66('0x28')]['rawAttributes']);_0xc62438[_0xce66('0x2f')]=_['keys'](_0x5b44d7[_0xce66('0x2f')]);_0xc62438[_0xce66('0x30')]=_[_0xce66('0x31')](_0xc62438[_0xce66('0x2c')],_0xc62438[_0xce66('0x2f')]);_0x46989a[_0xce66('0x32')]=_[_0xce66('0x31')](_0xc62438[_0xce66('0x2c')],qs['fields'](_0x5b44d7[_0xce66('0x2f')][_0xce66('0x33')]));_0x46989a[_0xce66('0x32')]=_0x46989a[_0xce66('0x32')][_0xce66('0x34')]?_0x46989a[_0xce66('0x32')]:_0xc62438[_0xce66('0x2c')];if(_0x5b44d7[_0xce66('0x2f')][_0xce66('0x3f')]){_0x46989a[_0xce66('0x40')]=[{'all':!![]}];}_0x46989a=_[_0xce66('0x3b')]({},_0x46989a,_0x5b44d7[_0xce66('0x3e')]);return db['SalesforceField'][_0xce66('0x44')](_0x46989a)[_0xce66('0x22')](handleEntityNotFound(_0x55b4dd,null))[_0xce66('0x22')](respondWithResult(_0x55b4dd,null))[_0xce66('0x42')](handleError(_0x55b4dd,null));};exports[_0xce66('0x45')]=function(_0x592dfe,_0x59dda4){return db[_0xce66('0x28')][_0xce66('0x45')](_0x592dfe[_0xce66('0x46')],{})[_0xce66('0x22')](respondWithResult(_0x59dda4,0xc9))[_0xce66('0x42')](handleError(_0x59dda4,null));};exports['update']=function(_0x3e27d1,_0x5b2ce1){if(_0x3e27d1[_0xce66('0x46')]['id']){delete _0x3e27d1[_0xce66('0x46')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0x3e27d1['params']['id']}})[_0xce66('0x22')](handleEntityNotFound(_0x5b2ce1,null))[_0xce66('0x22')](saveUpdates(_0x3e27d1['body'],null))['then'](respondWithResult(_0x5b2ce1,null))['catch'](handleError(_0x5b2ce1,null));};exports['destroy']=function(_0x462760,_0x2a7d0d){return db['SalesforceField'][_0xce66('0x44')]({'where':{'id':_0x462760[_0xce66('0x47')]['id']}})[_0xce66('0x22')](handleEntityNotFound(_0x2a7d0d,null))[_0xce66('0x22')](removeEntity(_0x2a7d0d,null))[_0xce66('0x42')](handleError(_0x2a7d0d,null));};
\ No newline at end of file
index 90e4e2f..04f7378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb2c=['int_salesforce_fields','salesforce_unique_index','FieldId','util','moment','rimraf','./intSalesforceField.attributes','exports','SalesforceField'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xbb2c,0x1a1));var _0xcbb2=function(_0x5e6ebe,_0x373752){_0x5e6ebe=_0x5e6ebe-0x0;var _0x5d80a0=_0xbb2c[_0x5e6ebe];return _0x5d80a0;};'use strict';var _=require('lodash');var util=require(_0xcbb2('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xcbb2('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcbb2('0x2'));var config=require('../../config/environment');var attributes=require(_0xcbb2('0x3'));module[_0xcbb2('0x4')]=function(_0xf66da0,_0x5f4051){return _0xf66da0['define'](_0xcbb2('0x5'),attributes,{'tableName':_0xcbb2('0x6'),'paranoid':![],'indexes':[{'name':_0xcbb2('0x7'),'fields':['idField',_0xcbb2('0x8')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fb0=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','salesforce_unique_index','idField','FieldId'];(function(_0x4db341,_0xb12794){var _0x193cb0=function(_0x27666e){while(--_0x27666e){_0x4db341['push'](_0x4db341['shift']());}};_0x193cb0(++_0xb12794);}(_0x7fb0,0xa0));var _0x07fb=function(_0x1194cc,_0x1482b0){_0x1194cc=_0x1194cc-0x0;var _0x21bc04=_0x7fb0[_0x1194cc];return _0x21bc04;};'use strict';var _=require(_0x07fb('0x0'));var util=require(_0x07fb('0x1'));var logger=require(_0x07fb('0x2'))(_0x07fb('0x3'));var moment=require(_0x07fb('0x4'));var BPromise=require(_0x07fb('0x5'));var rp=require(_0x07fb('0x6'));var fs=require('fs');var path=require(_0x07fb('0x7'));var rimraf=require(_0x07fb('0x8'));var config=require(_0x07fb('0x9'));var attributes=require(_0x07fb('0xa'));module[_0x07fb('0xb')]=function(_0x27a199,_0x3fd42b){return _0x27a199[_0x07fb('0xc')]('SalesforceField',attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x07fb('0xd'),'fields':[_0x07fb('0xe'),_0x07fb('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 48ec288..87cdc70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2114=['result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3b4dfd,_0x46ea19){var _0x45d763=function(_0x1a472a){while(--_0x1a472a){_0x3b4dfd['push'](_0x3b4dfd['shift']());}};_0x45d763(++_0x46ea19);}(_0x2114,0xca));var _0x4211=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0x2114[_0x5ce8b9];return _0xe34be0;};'use strict';var _=require('lodash');var util=require(_0x4211('0x0'));var moment=require(_0x4211('0x1'));var BPromise=require(_0x4211('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4211('0x3'));var db=require(_0x4211('0x4'))['db'];var utils=require(_0x4211('0x5'));var logger=require('../../config/logger')(_0x4211('0x6'));var config=require('../../config/environment');var jayson=require(_0x4211('0x7'));var client=jayson['client'][_0x4211('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xf790fb,_0x418934,_0x51443a){return new BPromise(function(_0x228e6d,_0x4ebe8f){return client['request'](_0xf790fb,_0x51443a)[_0x4211('0x9')](function(_0x437394){logger[_0x4211('0xa')](_0x4211('0xb'),_0x418934,_0x4211('0xc'));logger['debug'](_0x4211('0xd'),_0x418934,_0x4211('0xc'),JSON[_0x4211('0xe')](_0x437394));if(_0x437394[_0x4211('0xf')]){if(_0x437394[_0x4211('0xf')][_0x4211('0x10')]===0x1f4){logger['error'](_0x4211('0xb'),_0x418934,_0x437394[_0x4211('0xf')]['message']);return _0x4ebe8f(_0x437394[_0x4211('0xf')]['message']);}logger[_0x4211('0xf')]('SalesforceField,\x20%s,\x20%s',_0x418934,_0x437394[_0x4211('0xf')][_0x4211('0x11')]);return _0x228e6d(_0x437394[_0x4211('0xf')][_0x4211('0x11')]);}else{logger[_0x4211('0xa')](_0x4211('0xb'),_0x418934,_0x4211('0xc'));_0x228e6d(_0x437394[_0x4211('0x12')][_0x4211('0x11')]);}})[_0x4211('0x13')](function(_0x2a1706){logger[_0x4211('0xf')](_0x4211('0xb'),_0x418934,_0x2a1706);_0x4ebe8f(_0x2a1706);});});}
\ No newline at end of file
+var _0x9c54=['moment','bluebird','../../mysqldb','../../config/utils','../../config/environment','client','http','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x51f17d,_0x21c612){var _0x387a4a=function(_0x949a9f){while(--_0x949a9f){_0x51f17d['push'](_0x51f17d['shift']());}};_0x387a4a(++_0x21c612);}(_0x9c54,0x1ca));var _0x49c5=function(_0x168ffb,_0x29b245){_0x168ffb=_0x168ffb-0x0;var _0x47e148=_0x9c54[_0x168ffb];return _0x47e148;};'use strict';var _=require(_0x49c5('0x0'));var util=require(_0x49c5('0x1'));var moment=require(_0x49c5('0x2'));var BPromise=require(_0x49c5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x49c5('0x4'))['db'];var utils=require(_0x49c5('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c5('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c5('0x7')][_0x49c5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c1075,_0x6fadc1,_0x2083a9){return new BPromise(function(_0x2a5262,_0x5dfdae){return client['request'](_0x3c1075,_0x2083a9)['then'](function(_0x59c071){logger[_0x49c5('0x9')](_0x49c5('0xa'),_0x6fadc1,'request\x20sent');logger[_0x49c5('0xb')](_0x49c5('0xc'),_0x6fadc1,_0x49c5('0xd'),JSON[_0x49c5('0xe')](_0x59c071));if(_0x59c071[_0x49c5('0xf')]){if(_0x59c071[_0x49c5('0xf')][_0x49c5('0x10')]===0x1f4){logger[_0x49c5('0xf')](_0x49c5('0xa'),_0x6fadc1,_0x59c071['error'][_0x49c5('0x11')]);return _0x5dfdae(_0x59c071[_0x49c5('0xf')][_0x49c5('0x11')]);}logger[_0x49c5('0xf')]('SalesforceField,\x20%s,\x20%s',_0x6fadc1,_0x59c071[_0x49c5('0xf')][_0x49c5('0x11')]);return _0x2a5262(_0x59c071[_0x49c5('0xf')]['message']);}else{logger[_0x49c5('0x9')](_0x49c5('0xa'),_0x6fadc1,_0x49c5('0xd'));_0x2a5262(_0x59c071[_0x49c5('0x12')]['message']);}})[_0x49c5('0x13')](function(_0x851fec){logger['error'](_0x49c5('0xa'),_0x6fadc1,_0x851fec);_0x5dfdae(_0x851fec);});});}
\ No newline at end of file
index 572dc10..0c61a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc16b=['update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0xc16b,0x76));var _0xbc16=function(_0x3d2c27,_0x5d78fd){_0x3d2c27=_0x3d2c27-0x0;var _0x655271=_0xc16b[_0x3d2c27];return _0x655271;};'use strict';var multer=require(_0xbc16('0x0'));var util=require(_0xbc16('0x1'));var path=require(_0xbc16('0x2'));var timeout=require(_0xbc16('0x3'));var express=require(_0xbc16('0x4'));var router=express[_0xbc16('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbc16('0x6'));var controller=require(_0xbc16('0x7'));router[_0xbc16('0x8')]('/',auth[_0xbc16('0x9')](),controller[_0xbc16('0xa')]);router[_0xbc16('0x8')]('/:id',auth[_0xbc16('0x9')](),controller[_0xbc16('0xb')]);router[_0xbc16('0x8')](_0xbc16('0xc'),auth['isAuthenticated'](),controller[_0xbc16('0xd')]);router[_0xbc16('0x8')](_0xbc16('0xe'),auth['isAuthenticated'](),controller[_0xbc16('0xf')]);router[_0xbc16('0x10')]('/',auth[_0xbc16('0x9')](),controller[_0xbc16('0x11')]);router[_0xbc16('0x10')](_0xbc16('0xc'),auth['isAuthenticated'](),controller[_0xbc16('0x12')]);router[_0xbc16('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xbc16('0x14')]);router[_0xbc16('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xbc16('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xc1f7=['getConfigurations','/:id/fields','isAuthenticated','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index','/:id','show','/:id/configurations'];(function(_0x1896d2,_0x38e977){var _0xd06e7=function(_0x2ef043){while(--_0x2ef043){_0x1896d2['push'](_0x1896d2['shift']());}};_0xd06e7(++_0x38e977);}(_0xc1f7,0x19b));var _0x7c1f=function(_0x6ecd80,_0x3b38af){_0x6ecd80=_0x6ecd80-0x0;var _0x164d41=_0xc1f7[_0x6ecd80];return _0x164d41;};'use strict';var multer=require(_0x7c1f('0x0'));var util=require(_0x7c1f('0x1'));var path=require('path');var timeout=require(_0x7c1f('0x2'));var express=require('express');var router=express[_0x7c1f('0x3')]();var fs_extra=require(_0x7c1f('0x4'));var auth=require(_0x7c1f('0x5'));var interaction=require(_0x7c1f('0x6'));var config=require(_0x7c1f('0x7'));var controller=require(_0x7c1f('0x8'));router[_0x7c1f('0x9')]('/',auth['isAuthenticated'](),controller[_0x7c1f('0xa')]);router[_0x7c1f('0x9')](_0x7c1f('0xb'),auth['isAuthenticated'](),controller[_0x7c1f('0xc')]);router[_0x7c1f('0x9')](_0x7c1f('0xd'),auth['isAuthenticated'](),controller[_0x7c1f('0xe')]);router['get'](_0x7c1f('0xf'),auth[_0x7c1f('0x10')](),controller['getFields']);router[_0x7c1f('0x11')]('/',auth['isAuthenticated'](),controller[_0x7c1f('0x12')]);router['post'](_0x7c1f('0xd'),auth['isAuthenticated'](),controller[_0x7c1f('0x13')]);router[_0x7c1f('0x14')](_0x7c1f('0xb'),auth[_0x7c1f('0x10')](),controller[_0x7c1f('0x15')]);router[_0x7c1f('0x16')](_0x7c1f('0xb'),auth['isAuthenticated'](),controller[_0x7c1f('0x17')]);module[_0x7c1f('0x18')]=router;
\ No newline at end of file
index 460c188..62c1cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd75=['sequelize','exports','STRING','username'];(function(_0x44714c,_0x2ac454){var _0x57d4d5=function(_0x5aca44){while(--_0x5aca44){_0x44714c['push'](_0x44714c['shift']());}};_0x57d4d5(++_0x2ac454);}(_0xcd75,0x148));var _0x5cd7=function(_0x5c8cf3,_0x408978){_0x5c8cf3=_0x5c8cf3-0x0;var _0x374c0f=_0xcd75[_0x5c8cf3];return _0x374c0f;};'use strict';var Sequelize=require(_0x5cd7('0x0'));module[_0x5cd7('0x1')]={'name':{'type':Sequelize[_0x5cd7('0x2')]},'description':{'type':Sequelize[_0x5cd7('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x5cd7('0x3')},'password':{'type':Sequelize[_0x5cd7('0x2')]},'email':{'type':Sequelize[_0x5cd7('0x2')]},'remoteUri':{'type':Sequelize[_0x5cd7('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xafbf=['username','remoteUri','sequelize','exports','STRING'];(function(_0x1f78cb,_0x58e9f3){var _0x2cf6b8=function(_0x5c753c){while(--_0x5c753c){_0x1f78cb['push'](_0x1f78cb['shift']());}};_0x2cf6b8(++_0x58e9f3);}(_0xafbf,0x1ec));var _0xfafb=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xafbf[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0xfafb('0x0'));module[_0xfafb('0x1')]={'name':{'type':Sequelize[_0xfafb('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfafb('0x2')],'unique':_0xfafb('0x3')},'password':{'type':Sequelize[_0xfafb('0x2')]},'email':{'type':Sequelize[_0xfafb('0x2')]},'remoteUri':{'type':Sequelize[_0xfafb('0x2')],'unique':_0xfafb('0x4')},'serverUrl':{'type':Sequelize[_0xfafb('0x2')],'allowNull':![]}};
\ No newline at end of file
index 45b02e4..c59a992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb806=['sys_id','contact_type','problem_id','activity_due','assigned_to','sla_due','approval','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','email','remoteUri','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','statusCode','error','test','Wrong\x20credentials','True','true','GET','value','rimraf','zip-dir','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','index','map','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','ServicenowAccount','findAll','rows','show','params','rawAttributes','fields','length','includeAll','include','find','create','body','catch','destroy','getConfigurations','findOne','ServicenowConfiguration','order','pick','nolimit','AccountId','Subjects','getSubjects','getDescriptions','channel','ServicenowField','getFields','made_sla','knowledge','subcategory','notify','severity','category','caused_by','upon_reject','sys_updated_on','child_incidents','hold_reason','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','active','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','approval_set','short_description','close_code','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident'];(function(_0x390b15,_0x30a9f2){var _0x2fe580=function(_0x15dfe1){while(--_0x15dfe1){_0x390b15['push'](_0x390b15['shift']());}};_0x2fe580(++_0x30a9f2);}(_0xb806,0x18b));var _0x6b80=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0xb806[_0x49d41c];return _0xb64c5f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6b80('0x0'));var zipdir=require(_0x6b80('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6b80('0x2'));var BPromise=require(_0x6b80('0x3'));var Mustache=require(_0x6b80('0x4'));var util=require('util');var path=require(_0x6b80('0x5'));var sox=require(_0x6b80('0x6'));var csv=require('to-csv');var ejs=require(_0x6b80('0x7'));var fs=require('fs');var fs_extra=require(_0x6b80('0x8'));var _=require('lodash');var squel=require(_0x6b80('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6b80('0xa'));var toCsv=require(_0x6b80('0xb'));var querystring=require('querystring');var Papa=require(_0x6b80('0xc'));var Redis=require(_0x6b80('0xd'));var authService=require(_0x6b80('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6b80('0xf'));var hardwareService=require(_0x6b80('0x10'));var logger=require(_0x6b80('0x11'))(_0x6b80('0x12'));var utils=require(_0x6b80('0x13'));var config=require(_0x6b80('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b80('0x15'))['db'];var integrations=require(_0x6b80('0x16'));function respondWithStatusCode(_0x699b24,_0x1d319b){_0x1d319b=_0x1d319b||0xcc;return function(_0x47d1f5){if(_0x47d1f5){return _0x699b24[_0x6b80('0x17')](_0x1d319b);}return _0x699b24[_0x6b80('0x18')](_0x1d319b)[_0x6b80('0x19')]();};}function respondWithResult(_0x3bf5d9,_0x4fa89b){_0x4fa89b=_0x4fa89b||0xc8;return function(_0x376469){if(_0x376469){return _0x3bf5d9[_0x6b80('0x18')](_0x4fa89b)[_0x6b80('0x1a')](_0x376469);}};}function respondWithFilteredResult(_0x307ba7,_0x4c9f54){return function(_0x35110a){if(_0x35110a){var _0x58b964=typeof _0x4c9f54[_0x6b80('0x1b')]===_0x6b80('0x1c')&&typeof _0x4c9f54[_0x6b80('0x1d')]===_0x6b80('0x1c');var _0x72d637=_0x35110a[_0x6b80('0x1e')];var _0x40c567=_0x58b964?0x0:_0x4c9f54['offset'];var _0x560ff2=_0x58b964?_0x35110a[_0x6b80('0x1e')]:_0x4c9f54['offset']+_0x4c9f54['limit'];var _0xd6b71e;if(_0x560ff2>=_0x72d637){_0x560ff2=_0x72d637;_0xd6b71e=0xc8;}else{_0xd6b71e=0xce;}_0x307ba7[_0x6b80('0x18')](_0xd6b71e);return _0x307ba7[_0x6b80('0x1f')](_0x6b80('0x20'),_0x40c567+'-'+_0x560ff2+'/'+_0x72d637)['json'](_0x35110a);}return null;};}function patchUpdates(_0x1dfae5){return function(_0x6a9134){try{jsonpatch[_0x6b80('0x21')](_0x6a9134,_0x1dfae5,!![]);}catch(_0x453df0){return BPromise['reject'](_0x453df0);}return _0x6a9134[_0x6b80('0x22')]();};}function saveUpdates(_0x500563,_0x1d2bfe){return function(_0x57f594){if(_0x57f594){return _0x57f594[_0x6b80('0x23')](_0x500563)['then'](function(_0x2392c9){return _0x2392c9;});}return null;};}function removeEntity(_0x3bd8c9,_0x4776e9){return function(_0x54050e){if(_0x54050e){return _0x54050e['destroy']()[_0x6b80('0x24')](function(){_0x3bd8c9[_0x6b80('0x18')](0xcc)[_0x6b80('0x19')]();});}};}function handleEntityNotFound(_0x184865,_0x5d3c98){return function(_0x416076){if(!_0x416076){_0x184865[_0x6b80('0x17')](0x194);}return _0x416076;};}function handleError(_0x21168f,_0x1c7a3c){_0x1c7a3c=_0x1c7a3c||0x1f4;return function(_0x347fe1){logger['error'](_0x347fe1[_0x6b80('0x25')]);if(_0x347fe1['name']){delete _0x347fe1[_0x6b80('0x26')];}_0x21168f['status'](_0x1c7a3c)['send'](_0x347fe1);};}exports[_0x6b80('0x27')]=function(_0xb67220,_0x20831d){var _0x364f6e={},_0x299040={},_0x3e66cf={'count':0x0,'rows':[]};var _0x1d5fab=_[_0x6b80('0x28')](db['ServicenowAccount']['rawAttributes'],function(_0x1ecd9b){return{'name':_0x1ecd9b['fieldName'],'type':_0x1ecd9b[_0x6b80('0x29')][_0x6b80('0x2a')]};});_0x299040[_0x6b80('0x2b')]=_[_0x6b80('0x28')](_0x1d5fab,_0x6b80('0x26'));_0x299040[_0x6b80('0x2c')]=_[_0x6b80('0x2d')](_0xb67220[_0x6b80('0x2c')]);_0x299040[_0x6b80('0x2e')]=_['intersection'](_0x299040[_0x6b80('0x2b')],_0x299040[_0x6b80('0x2c')]);_0x364f6e['attributes']=_[_0x6b80('0x2f')](_0x299040['model'],qs['fields'](_0xb67220[_0x6b80('0x2c')]['fields']));_0x364f6e[_0x6b80('0x30')]=_0x364f6e[_0x6b80('0x30')]['length']?_0x364f6e[_0x6b80('0x30')]:_0x299040[_0x6b80('0x2b')];if(!_0xb67220[_0x6b80('0x2c')][_0x6b80('0x31')]('nolimit')){_0x364f6e[_0x6b80('0x1d')]=qs['limit'](_0xb67220[_0x6b80('0x2c')]['limit']);_0x364f6e[_0x6b80('0x1b')]=qs[_0x6b80('0x1b')](_0xb67220['query']['offset']);}_0x364f6e['order']=qs['sort'](_0xb67220['query'][_0x6b80('0x32')]);_0x364f6e[_0x6b80('0x33')]=qs[_0x6b80('0x2e')](_['pick'](_0xb67220[_0x6b80('0x2c')],_0x299040[_0x6b80('0x2e')]),_0x1d5fab);if(_0xb67220[_0x6b80('0x2c')][_0x6b80('0x34')]){_0x364f6e['where']=_[_0x6b80('0x35')](_0x364f6e['where'],{'$or':_[_0x6b80('0x28')](_0x1d5fab,function(_0x42a306){if(_0x42a306[_0x6b80('0x29')]!==_0x6b80('0x36')){var _0x2f3693={};_0x2f3693[_0x42a306[_0x6b80('0x26')]]={'$like':'%'+_0xb67220[_0x6b80('0x2c')][_0x6b80('0x34')]+'%'};return _0x2f3693;}})});}_0x364f6e=_[_0x6b80('0x35')]({},_0x364f6e,_0xb67220[_0x6b80('0x37')]);var _0x302f4e={'where':_0x364f6e[_0x6b80('0x33')]};return db[_0x6b80('0x38')][_0x6b80('0x1e')](_0x302f4e)[_0x6b80('0x24')](function(_0x4216e9){_0x3e66cf[_0x6b80('0x1e')]=_0x4216e9;if(_0xb67220[_0x6b80('0x2c')]['includeAll']){_0x364f6e['include']=[{'all':!![]}];}return db[_0x6b80('0x38')][_0x6b80('0x39')](_0x364f6e);})['then'](function(_0x336879){_0x3e66cf[_0x6b80('0x3a')]=_0x336879;return _0x3e66cf;})[_0x6b80('0x24')](respondWithFilteredResult(_0x20831d,_0x364f6e))['catch'](handleError(_0x20831d,null));};exports[_0x6b80('0x3b')]=function(_0xda06b0,_0x16c4bd){var _0x31e106={'raw':![],'where':{'id':_0xda06b0[_0x6b80('0x3c')]['id']}},_0x3c0481={};_0x3c0481[_0x6b80('0x2b')]=_[_0x6b80('0x2d')](db['ServicenowAccount'][_0x6b80('0x3d')]);_0x3c0481[_0x6b80('0x2c')]=_[_0x6b80('0x2d')](_0xda06b0['query']);_0x3c0481[_0x6b80('0x2e')]=_[_0x6b80('0x2f')](_0x3c0481['model'],_0x3c0481['query']);_0x31e106['attributes']=_['intersection'](_0x3c0481[_0x6b80('0x2b')],qs[_0x6b80('0x3e')](_0xda06b0['query']['fields']));_0x31e106[_0x6b80('0x30')]=_0x31e106[_0x6b80('0x30')][_0x6b80('0x3f')]?_0x31e106['attributes']:_0x3c0481[_0x6b80('0x2b')];if(_0xda06b0['query'][_0x6b80('0x40')]){_0x31e106[_0x6b80('0x41')]=[{'all':!![]}];}_0x31e106=_[_0x6b80('0x35')]({},_0x31e106,_0xda06b0[_0x6b80('0x37')]);return db[_0x6b80('0x38')][_0x6b80('0x42')](_0x31e106)[_0x6b80('0x24')](handleEntityNotFound(_0x16c4bd,null))[_0x6b80('0x24')](respondWithResult(_0x16c4bd,null))['catch'](handleError(_0x16c4bd,null));};exports[_0x6b80('0x43')]=function(_0x4ca583,_0x1d2053){return db['ServicenowAccount'][_0x6b80('0x43')](_0x4ca583[_0x6b80('0x44')],{})[_0x6b80('0x24')](respondWithResult(_0x1d2053,0xc9))[_0x6b80('0x45')](handleError(_0x1d2053,null));};exports[_0x6b80('0x23')]=function(_0x2e3ff7,_0x5c1b91){if(_0x2e3ff7[_0x6b80('0x44')]['id']){delete _0x2e3ff7[_0x6b80('0x44')]['id'];}return db[_0x6b80('0x38')][_0x6b80('0x42')]({'where':{'id':_0x2e3ff7[_0x6b80('0x3c')]['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x5c1b91,null))[_0x6b80('0x24')](saveUpdates(_0x2e3ff7[_0x6b80('0x44')],null))[_0x6b80('0x24')](respondWithResult(_0x5c1b91,null))['catch'](handleError(_0x5c1b91,null));};exports[_0x6b80('0x46')]=function(_0x166fe1,_0x4ff320){return db[_0x6b80('0x38')]['find']({'where':{'id':_0x166fe1[_0x6b80('0x3c')]['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x4ff320,null))[_0x6b80('0x24')](removeEntity(_0x4ff320,null))[_0x6b80('0x45')](handleError(_0x4ff320,null));};exports[_0x6b80('0x47')]=function(_0x378c66,_0x4af3c0,_0x21ce33){var _0x27719f={};var _0x40b653={};var _0x103f8d;var _0x5f3881;return db[_0x6b80('0x38')][_0x6b80('0x48')]({'where':{'id':_0x378c66['params']['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x4af3c0,null))[_0x6b80('0x24')](function(_0xe8ad21){if(_0xe8ad21){_0x103f8d=_0xe8ad21;_0x40b653[_0x6b80('0x2b')]=_['keys'](db[_0x6b80('0x49')][_0x6b80('0x3d')]);_0x40b653[_0x6b80('0x2c')]=_[_0x6b80('0x2d')](_0x378c66[_0x6b80('0x2c')]);_0x40b653[_0x6b80('0x2e')]=_['intersection'](_0x40b653['model'],_0x40b653[_0x6b80('0x2c')]);_0x27719f[_0x6b80('0x30')]=_['intersection'](_0x40b653['model'],qs[_0x6b80('0x3e')](_0x378c66[_0x6b80('0x2c')][_0x6b80('0x3e')]));_0x27719f[_0x6b80('0x30')]=_0x27719f[_0x6b80('0x30')]['length']?_0x27719f[_0x6b80('0x30')]:_0x40b653['model'];_0x27719f[_0x6b80('0x4a')]=qs[_0x6b80('0x32')](_0x378c66[_0x6b80('0x2c')][_0x6b80('0x32')]);_0x27719f[_0x6b80('0x33')]=qs['filters'](_[_0x6b80('0x4b')](_0x378c66['query'],_0x40b653[_0x6b80('0x2e')]));if(_0x378c66[_0x6b80('0x2c')][_0x6b80('0x34')]){_0x27719f[_0x6b80('0x33')]=_[_0x6b80('0x35')](_0x27719f[_0x6b80('0x33')],{'$or':_[_0x6b80('0x28')](_0x27719f[_0x6b80('0x30')],function(_0x13fee6){var _0x1d251b={};_0x1d251b[_0x13fee6]={'$like':'%'+_0x378c66[_0x6b80('0x2c')][_0x6b80('0x34')]+'%'};return _0x1d251b;})});}_0x27719f=_[_0x6b80('0x35')]({},_0x27719f,_0x378c66[_0x6b80('0x37')]);return _0x103f8d['getConfigurations'](_0x27719f);}})[_0x6b80('0x24')](function(_0x5e1cbd){if(_0x5e1cbd){_0x5f3881=_0x5e1cbd[_0x6b80('0x3f')];if(!_0x378c66[_0x6b80('0x2c')][_0x6b80('0x31')](_0x6b80('0x4c'))){_0x27719f[_0x6b80('0x1d')]=qs[_0x6b80('0x1d')](_0x378c66['query']['limit']);_0x27719f[_0x6b80('0x1b')]=qs[_0x6b80('0x1b')](_0x378c66['query'][_0x6b80('0x1b')]);}return _0x103f8d['getConfigurations'](_0x27719f);}})[_0x6b80('0x24')](function(_0x5c490f){if(_0x5c490f){return _0x5c490f?{'count':_0x5f3881,'rows':_0x5c490f}:null;}})[_0x6b80('0x24')](respondWithResult(_0x4af3c0,null))[_0x6b80('0x45')](handleError(_0x4af3c0,null));};exports['addConfiguration']=function(_0x51f27c,_0x2a8c5d,_0x1f244c){if(_0x51f27c[_0x6b80('0x44')]['id']){delete _0x51f27c[_0x6b80('0x44')]['id'];}return db[_0x6b80('0x38')]['findOne']({'where':{'id':_0x51f27c[_0x6b80('0x3c')]['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x2a8c5d,null))['then'](function(_0x2e7043){if(_0x2e7043){_0x51f27c[_0x6b80('0x44')][_0x6b80('0x4d')]=_0x2e7043['id'];_0x51f27c[_0x6b80('0x44')][_0x6b80('0x4e')]=integrations[_0x6b80('0x4f')](_0x51f27c[_0x6b80('0x44')]['channel'],_0x51f27c[_0x6b80('0x44')]['type']);_0x51f27c[_0x6b80('0x44')]['Descriptions']=integrations[_0x6b80('0x50')](_0x51f27c['body'][_0x6b80('0x51')],_0x51f27c[_0x6b80('0x44')][_0x6b80('0x29')]);return db['ServicenowConfiguration'][_0x6b80('0x43')](_0x51f27c[_0x6b80('0x44')],{'include':[{'model':db[_0x6b80('0x52')],'as':_0x6b80('0x4e')},{'model':db[_0x6b80('0x52')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2a8c5d,null))['catch'](handleError(_0x2a8c5d,null));};exports[_0x6b80('0x53')]=function(_0x4772c4,_0x236c67,_0x546900){var _0x26bea5=[_0x6b80('0x54'),'hold_reason',_0x6b80('0x55'),_0x6b80('0x56'),'close_code',_0x6b80('0x57'),'incident_state',_0x6b80('0x58'),_0x6b80('0x59')];var _0x43b763=['parent',_0x6b80('0x54'),_0x6b80('0x5a'),'watch_list',_0x6b80('0x5b'),_0x6b80('0x5c'),_0x6b80('0x5d'),_0x6b80('0x5e'),_0x6b80('0x5f'),_0x6b80('0x60'),_0x6b80('0x61'),_0x6b80('0x62'),_0x6b80('0x63'),_0x6b80('0x64'),'sys_created_on','sys_domain','state',_0x6b80('0x65'),_0x6b80('0x55'),'order',_0x6b80('0x66'),_0x6b80('0x67'),'cmdb_ci',_0x6b80('0x68'),_0x6b80('0x69'),_0x6b80('0x6a'),'work_notes_list',_0x6b80('0x6b'),_0x6b80('0x6c'),_0x6b80('0x6d'),_0x6b80('0x6e'),_0x6b80('0x6f'),_0x6b80('0x70'),_0x6b80('0x71'),_0x6b80('0x72'),_0x6b80('0x73'),'work_end',_0x6b80('0x74'),_0x6b80('0x75'),'caller_id',_0x6b80('0x76'),_0x6b80('0x56'),'work_notes',_0x6b80('0x77'),_0x6b80('0x78'),_0x6b80('0x79'),_0x6b80('0x7a'),'work_start',_0x6b80('0x7b'),_0x6b80('0x7c'),_0x6b80('0x7d'),_0x6b80('0x7e'),_0x6b80('0x7f'),_0x6b80('0x57'),_0x6b80('0x80'),_0x6b80('0x81'),_0x6b80('0x82'),_0x6b80('0x83'),_0x6b80('0x84'),_0x6b80('0x85'),_0x6b80('0x86'),'reopened_by','incident_state','urgency',_0x6b80('0x87'),'company','reassignment_count',_0x6b80('0x88'),_0x6b80('0x89'),_0x6b80('0x58'),'comments',_0x6b80('0x8a'),_0x6b80('0x8b'),'comments_and_work_notes','due_date',_0x6b80('0x8c'),_0x6b80('0x8d'),_0x6b80('0x8e'),_0x6b80('0x8f'),_0x6b80('0x90'),_0x6b80('0x91'),'location',_0x6b80('0x59')];var _0x5ddfa9='';var _0x77c5d0='';var _0x11eb6f=[];var _0x546dc6='';var _0x5b365c='';var _0x3a3678=[];var _0x49a561='';var _0x1b4c60='';var _0x40e079={};var _0x524504='';return db['ServicenowAccount'][_0x6b80('0x48')]({'where':{'id':_0x4772c4['params']['id']},'attributes':['id',_0x6b80('0x92'),'password',_0x6b80('0x93'),_0x6b80('0x94'),'serverUrl']})['then'](handleEntityNotFound(_0x236c67,null))[_0x6b80('0x24')](function(_0x2d9836){if(_0x2d9836){_0x524504=_0x2d9836[_0x6b80('0x94')];var _0x1068e0=_0x524504['slice'](-0x1);if(_0x1068e0==='/'){_0x524504=_0x524504[_0x6b80('0x95')](0x0,_0x524504[_0x6b80('0x96')](_0x1068e0));}_0x1b4c60=util[_0x6b80('0x97')](_0x6b80('0x98'),_0x524504);_0x49a561=util['format'](_0x6b80('0x99'),_0x524504);_0x40e079={'user':_0x2d9836[_0x6b80('0x92')],'pass':_0x2d9836['password']};var _0x52a7a6={'method':'GET','uri':_0x1b4c60+'incident?sysparm_display_value=all','auth':_0x40e079,'json':!![]};return rp(_0x52a7a6);}})[_0x6b80('0x24')](function(_0x8d8a78){if(_0x8d8a78[_0x6b80('0x9a')][_0x6b80('0x3f')]>0x0){_0x5ddfa9=_0x8d8a78[_0x6b80('0x9a')];}console[_0x6b80('0x9b')](_0x6b80('0x9c'),_0x5ddfa9);_0x3a3678=[];_0x77c5d0=Object[_0x6b80('0x9d')]([],_0x5ddfa9);_[_0x6b80('0x9e')](_0x77c5d0,function(_0x814757){return!_0x26bea5[_0x6b80('0x9f')](_0x814757[_0x6b80('0x26')]);});_0x77c5d0[_0x6b80('0xa0')](function(_0x55abca){var _0x1bc226=createFieldObject(_0x49a561,_0x40e079,_0x55abca[_0x6b80('0xa1')],_0x55abca[_0x6b80('0x26')],_0x55abca[_0x6b80('0xa2')],![]);_0x3a3678[_0x6b80('0xa3')](_0x1bc226);});return Promise[_0x6b80('0xa4')](_0x3a3678);})[_0x6b80('0x24')](function(_0x939132){_0x11eb6f=_0x939132;_0x546dc6=Object[_0x6b80('0x9d')]([],_0x5ddfa9);console[_0x6b80('0x9b')]('TCL:\x20_object',_0x5ddfa9);_['remove'](_0x546dc6,function(_0x15c6a1){return _0x43b763[_0x6b80('0x9f')](_0x15c6a1[_0x6b80('0x26')]);});console[_0x6b80('0x9b')](_0x6b80('0xa5'),_0x546dc6);_0x3a3678=[];_0x546dc6[_0x6b80('0xa0')](function(_0x40923c){var _0x10508c=createFieldObject(_0x49a561,_0x40e079,_0x40923c[_0x6b80('0xa1')],_0x40923c['name'],_0x40923c['label'],!![]);_0x3a3678['push'](_0x10508c);});return Promise[_0x6b80('0xa4')](_0x3a3678);})[_0x6b80('0x24')](function(_0x5dc7d1){_0x5b365c=_0x5dc7d1;var _0x331f7c=_0x11eb6f[_0x6b80('0xa6')](_0x5b365c);return{'count':_0x331f7c[_0x6b80('0x3f')],'rows':_0x331f7c};})[_0x6b80('0x24')](respondWithResult(_0x236c67,null))['catch'](function(_0x328f54){console[_0x6b80('0x9b')](_0x6b80('0xa7')+_0x328f54);var _0x451623=_0x4772c4[_0x6b80('0x2c')]['test']?0x1f4:_0x328f54[_0x6b80('0xa8')]||0x1f4;logger[_0x6b80('0xa9')](_0x328f54[_0x6b80('0x25')]);delete _0x328f54[_0x6b80('0x26')];if(_0x451623===0x191){_0x451623=0x190;}_0x236c67['status'](_0x451623)['send'](_0x4772c4['query'][_0x6b80('0xaa')]?{'message':_0x6b80('0xab'),'statusCode':_0x328f54[_0x6b80('0xa8')]}:_0x328f54);});};function createFieldObject(_0x3f0a5e,_0x1d84d5,_0x1ec1b4,_0x3a47c3,_0x162a4d,_0x59b0f2){return new Promise(function(_0x4a2ba5,_0x5a765f){var _0x8c31e7={'id':_0x3a47c3,'name':_0x162a4d,'custom':_0x59b0f2};if(_0x1ec1b4==='boolean'){_0x8c31e7[_0x6b80('0x37')]=[{'name':_0x6b80('0xac'),'value':_0x6b80('0xad')},{'name':'False','value':'false'}];_0x4a2ba5(_0x8c31e7);}else{var _0x3ccd15={'method':_0x6b80('0xae'),'uri':_0x3f0a5e+'sys_choice?sysparm_query=name=incident^element='+_0x3a47c3,'auth':_0x1d84d5,'json':!![]};return rp(_0x3ccd15)[_0x6b80('0x24')](function(_0x1aa276){var _0x4c0840=[];if(_0x1aa276[_0x6b80('0x9a')][_0x6b80('0x3f')]>0x0){_0x1aa276['result'][_0x6b80('0xa0')](function(_0xb82551){if(_0xb82551['inactive']==='false'){var _0x1ebb13={'name':_0xb82551[_0x6b80('0xa2')],'value':_0xb82551[_0x6b80('0xaf')]};_0x4c0840[_0x6b80('0xa3')](_0x1ebb13);}});}_0x8c31e7[_0x6b80('0x37')]=_0x4c0840;if(_0x8c31e7[_0x6b80('0x37')][_0x6b80('0x3f')]>0x0){_0x4a2ba5(_0x8c31e7);}else{if(_0x59b0f2==![]){_0x4a2ba5();}else{_0x4a2ba5(_0x8c31e7);}}});}});}
\ No newline at end of file
+var _0x7009=['active','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','reopened_time','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','reopened_by','incident_state','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','upon_approval','correlation_id','location','username','email','remoteUri','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','password','GET','incident?sysparm_display_value=all','log','incident\x20table\x20objects','assign','remove','includes','internalType','label','push','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','concat','ServiceNow\x20error:\x20','statusCode','stack','test','Wrong\x20credentials','boolean','True','true','False','false','result','inactive','value','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','json','undefined','count','offset','limit','status','set','Content-Range','apply','reject','update','then','destroy','end','sendStatus','error','name','send','index','map','ServicenowAccount','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','where','merge','filter','options','includeAll','include','findAll','rows','show','params','create','body','catch','find','getConfigurations','findOne','ServicenowConfiguration','rawAttributes','addConfiguration','AccountId','Subjects','getSubjects','getDescriptions','channel','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','notify','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','sys_updated_by','user_input','sys_created_on','state','sys_created_by','order','calendar_stc','cmdb_ci','delivery_plan','impact'];(function(_0x5d6e80,_0xc7bfff){var _0x59facb=function(_0x2bda51){while(--_0x2bda51){_0x5d6e80['push'](_0x5d6e80['shift']());}};_0x59facb(++_0xc7bfff);}(_0x7009,0x112));var _0x9700=function(_0x1b9169,_0x40f904){_0x1b9169=_0x1b9169-0x0;var _0x59ea07=_0x7009[_0x1b9169];return _0x59ea07;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9700('0x0'));var zipdir=require(_0x9700('0x1'));var jsonpatch=require(_0x9700('0x2'));var rp=require(_0x9700('0x3'));var moment=require(_0x9700('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9700('0x5'));var util=require('util');var path=require(_0x9700('0x6'));var sox=require(_0x9700('0x7'));var csv=require(_0x9700('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9700('0x9'));var _=require(_0x9700('0xa'));var squel=require(_0x9700('0xb'));var crypto=require(_0x9700('0xc'));var jsforce=require(_0x9700('0xd'));var deskjs=require(_0x9700('0xe'));var toCsv=require(_0x9700('0x8'));var querystring=require(_0x9700('0xf'));var Papa=require(_0x9700('0x10'));var Redis=require('ioredis');var authService=require(_0x9700('0x11'));var qs=require(_0x9700('0x12'));var as=require(_0x9700('0x13'));var hardwareService=require(_0x9700('0x14'));var logger=require('../../config/logger')(_0x9700('0x15'));var utils=require(_0x9700('0x16'));var config=require(_0x9700('0x17'));var licenseUtil=require(_0x9700('0x18'));var db=require(_0x9700('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x17f3c3,_0x2f6d72){_0x2f6d72=_0x2f6d72||0xcc;return function(_0x3d4b7d){if(_0x3d4b7d){return _0x17f3c3['sendStatus'](_0x2f6d72);}return _0x17f3c3['status'](_0x2f6d72)['end']();};}function respondWithResult(_0x30ad6c,_0x546277){_0x546277=_0x546277||0xc8;return function(_0x248665){if(_0x248665){return _0x30ad6c['status'](_0x546277)[_0x9700('0x1a')](_0x248665);}};}function respondWithFilteredResult(_0x57eb06,_0x443ed7){return function(_0x61ebe8){if(_0x61ebe8){var _0x59c4ec=typeof _0x443ed7['offset']===_0x9700('0x1b')&&typeof _0x443ed7['limit']===_0x9700('0x1b');var _0x50cd02=_0x61ebe8[_0x9700('0x1c')];var _0x571f57=_0x59c4ec?0x0:_0x443ed7[_0x9700('0x1d')];var _0x41173e=_0x59c4ec?_0x61ebe8[_0x9700('0x1c')]:_0x443ed7['offset']+_0x443ed7[_0x9700('0x1e')];var _0xbc275c;if(_0x41173e>=_0x50cd02){_0x41173e=_0x50cd02;_0xbc275c=0xc8;}else{_0xbc275c=0xce;}_0x57eb06[_0x9700('0x1f')](_0xbc275c);return _0x57eb06[_0x9700('0x20')](_0x9700('0x21'),_0x571f57+'-'+_0x41173e+'/'+_0x50cd02)[_0x9700('0x1a')](_0x61ebe8);}return null;};}function patchUpdates(_0x10eb14){return function(_0x5836bd){try{jsonpatch[_0x9700('0x22')](_0x5836bd,_0x10eb14,!![]);}catch(_0x13dee1){return BPromise[_0x9700('0x23')](_0x13dee1);}return _0x5836bd['save']();};}function saveUpdates(_0x116eb1,_0x386a2a){return function(_0x330dc9){if(_0x330dc9){return _0x330dc9[_0x9700('0x24')](_0x116eb1)[_0x9700('0x25')](function(_0x361362){return _0x361362;});}return null;};}function removeEntity(_0x19514d,_0x445af0){return function(_0x32729b){if(_0x32729b){return _0x32729b[_0x9700('0x26')]()['then'](function(){_0x19514d[_0x9700('0x1f')](0xcc)[_0x9700('0x27')]();});}};}function handleEntityNotFound(_0x5b499f,_0x54c487){return function(_0x552503){if(!_0x552503){_0x5b499f[_0x9700('0x28')](0x194);}return _0x552503;};}function handleError(_0x479c67,_0x3dea63){_0x3dea63=_0x3dea63||0x1f4;return function(_0x54cf5d){logger[_0x9700('0x29')](_0x54cf5d['stack']);if(_0x54cf5d[_0x9700('0x2a')]){delete _0x54cf5d[_0x9700('0x2a')];}_0x479c67[_0x9700('0x1f')](_0x3dea63)[_0x9700('0x2b')](_0x54cf5d);};}exports[_0x9700('0x2c')]=function(_0x2deca1,_0x3559bc){var _0xf64725={},_0x3efab2={},_0x5791a5={'count':0x0,'rows':[]};var _0x4ea635=_[_0x9700('0x2d')](db[_0x9700('0x2e')]['rawAttributes'],function(_0x3cb60c){return{'name':_0x3cb60c[_0x9700('0x2f')],'type':_0x3cb60c[_0x9700('0x30')][_0x9700('0x31')]};});_0x3efab2[_0x9700('0x32')]=_[_0x9700('0x2d')](_0x4ea635,_0x9700('0x2a'));_0x3efab2[_0x9700('0x33')]=_[_0x9700('0x34')](_0x2deca1['query']);_0x3efab2['filters']=_[_0x9700('0x35')](_0x3efab2[_0x9700('0x32')],_0x3efab2[_0x9700('0x33')]);_0xf64725['attributes']=_['intersection'](_0x3efab2[_0x9700('0x32')],qs[_0x9700('0x36')](_0x2deca1[_0x9700('0x33')][_0x9700('0x36')]));_0xf64725[_0x9700('0x37')]=_0xf64725[_0x9700('0x37')][_0x9700('0x38')]?_0xf64725[_0x9700('0x37')]:_0x3efab2['model'];if(!_0x2deca1[_0x9700('0x33')][_0x9700('0x39')](_0x9700('0x3a'))){_0xf64725[_0x9700('0x1e')]=qs[_0x9700('0x1e')](_0x2deca1[_0x9700('0x33')][_0x9700('0x1e')]);_0xf64725['offset']=qs['offset'](_0x2deca1[_0x9700('0x33')][_0x9700('0x1d')]);}_0xf64725['order']=qs[_0x9700('0x3b')](_0x2deca1[_0x9700('0x33')][_0x9700('0x3b')]);_0xf64725['where']=qs[_0x9700('0x3c')](_[_0x9700('0x3d')](_0x2deca1[_0x9700('0x33')],_0x3efab2[_0x9700('0x3c')]),_0x4ea635);if(_0x2deca1[_0x9700('0x33')]['filter']){_0xf64725[_0x9700('0x3e')]=_[_0x9700('0x3f')](_0xf64725[_0x9700('0x3e')],{'$or':_[_0x9700('0x2d')](_0x4ea635,function(_0x4533cd){if(_0x4533cd[_0x9700('0x30')]!=='VIRTUAL'){var _0x30c8ad={};_0x30c8ad[_0x4533cd[_0x9700('0x2a')]]={'$like':'%'+_0x2deca1[_0x9700('0x33')][_0x9700('0x40')]+'%'};return _0x30c8ad;}})});}_0xf64725=_['merge']({},_0xf64725,_0x2deca1[_0x9700('0x41')]);var _0x59917a={'where':_0xf64725['where']};return db[_0x9700('0x2e')][_0x9700('0x1c')](_0x59917a)['then'](function(_0x517801){_0x5791a5[_0x9700('0x1c')]=_0x517801;if(_0x2deca1[_0x9700('0x33')][_0x9700('0x42')]){_0xf64725[_0x9700('0x43')]=[{'all':!![]}];}return db[_0x9700('0x2e')][_0x9700('0x44')](_0xf64725);})[_0x9700('0x25')](function(_0x1f6f02){_0x5791a5[_0x9700('0x45')]=_0x1f6f02;return _0x5791a5;})['then'](respondWithFilteredResult(_0x3559bc,_0xf64725))['catch'](handleError(_0x3559bc,null));};exports[_0x9700('0x46')]=function(_0x310870,_0x2bf103){var _0x437719={'raw':![],'where':{'id':_0x310870[_0x9700('0x47')]['id']}},_0x4e7195={};_0x4e7195[_0x9700('0x32')]=_[_0x9700('0x34')](db['ServicenowAccount']['rawAttributes']);_0x4e7195['query']=_[_0x9700('0x34')](_0x310870['query']);_0x4e7195[_0x9700('0x3c')]=_[_0x9700('0x35')](_0x4e7195[_0x9700('0x32')],_0x4e7195[_0x9700('0x33')]);_0x437719['attributes']=_['intersection'](_0x4e7195['model'],qs[_0x9700('0x36')](_0x310870[_0x9700('0x33')][_0x9700('0x36')]));_0x437719[_0x9700('0x37')]=_0x437719[_0x9700('0x37')][_0x9700('0x38')]?_0x437719[_0x9700('0x37')]:_0x4e7195[_0x9700('0x32')];if(_0x310870[_0x9700('0x33')][_0x9700('0x42')]){_0x437719[_0x9700('0x43')]=[{'all':!![]}];}_0x437719=_['merge']({},_0x437719,_0x310870[_0x9700('0x41')]);return db[_0x9700('0x2e')]['find'](_0x437719)[_0x9700('0x25')](handleEntityNotFound(_0x2bf103,null))[_0x9700('0x25')](respondWithResult(_0x2bf103,null))['catch'](handleError(_0x2bf103,null));};exports[_0x9700('0x48')]=function(_0x416ecb,_0x42e439){return db[_0x9700('0x2e')][_0x9700('0x48')](_0x416ecb[_0x9700('0x49')],{})[_0x9700('0x25')](respondWithResult(_0x42e439,0xc9))[_0x9700('0x4a')](handleError(_0x42e439,null));};exports[_0x9700('0x24')]=function(_0x196599,_0x469696){if(_0x196599['body']['id']){delete _0x196599['body']['id'];}return db[_0x9700('0x2e')][_0x9700('0x4b')]({'where':{'id':_0x196599[_0x9700('0x47')]['id']}})['then'](handleEntityNotFound(_0x469696,null))[_0x9700('0x25')](saveUpdates(_0x196599[_0x9700('0x49')],null))[_0x9700('0x25')](respondWithResult(_0x469696,null))[_0x9700('0x4a')](handleError(_0x469696,null));};exports[_0x9700('0x26')]=function(_0x55aa10,_0x13fff7){return db['ServicenowAccount'][_0x9700('0x4b')]({'where':{'id':_0x55aa10[_0x9700('0x47')]['id']}})[_0x9700('0x25')](handleEntityNotFound(_0x13fff7,null))[_0x9700('0x25')](removeEntity(_0x13fff7,null))[_0x9700('0x4a')](handleError(_0x13fff7,null));};exports[_0x9700('0x4c')]=function(_0x2683a4,_0x1ff74f,_0x39e434){var _0xe0ad08={};var _0x3c27b0={};var _0xdbec78;var _0x4b89e5;return db['ServicenowAccount'][_0x9700('0x4d')]({'where':{'id':_0x2683a4[_0x9700('0x47')]['id']}})['then'](handleEntityNotFound(_0x1ff74f,null))[_0x9700('0x25')](function(_0xb15056){if(_0xb15056){_0xdbec78=_0xb15056;_0x3c27b0[_0x9700('0x32')]=_[_0x9700('0x34')](db[_0x9700('0x4e')][_0x9700('0x4f')]);_0x3c27b0['query']=_[_0x9700('0x34')](_0x2683a4[_0x9700('0x33')]);_0x3c27b0[_0x9700('0x3c')]=_['intersection'](_0x3c27b0[_0x9700('0x32')],_0x3c27b0[_0x9700('0x33')]);_0xe0ad08[_0x9700('0x37')]=_[_0x9700('0x35')](_0x3c27b0[_0x9700('0x32')],qs['fields'](_0x2683a4[_0x9700('0x33')][_0x9700('0x36')]));_0xe0ad08[_0x9700('0x37')]=_0xe0ad08[_0x9700('0x37')]['length']?_0xe0ad08[_0x9700('0x37')]:_0x3c27b0[_0x9700('0x32')];_0xe0ad08['order']=qs[_0x9700('0x3b')](_0x2683a4['query'][_0x9700('0x3b')]);_0xe0ad08['where']=qs[_0x9700('0x3c')](_['pick'](_0x2683a4['query'],_0x3c27b0['filters']));if(_0x2683a4[_0x9700('0x33')]['filter']){_0xe0ad08['where']=_[_0x9700('0x3f')](_0xe0ad08[_0x9700('0x3e')],{'$or':_[_0x9700('0x2d')](_0xe0ad08[_0x9700('0x37')],function(_0x5f550b){var _0x1baece={};_0x1baece[_0x5f550b]={'$like':'%'+_0x2683a4['query'][_0x9700('0x40')]+'%'};return _0x1baece;})});}_0xe0ad08=_[_0x9700('0x3f')]({},_0xe0ad08,_0x2683a4[_0x9700('0x41')]);return _0xdbec78[_0x9700('0x4c')](_0xe0ad08);}})[_0x9700('0x25')](function(_0x27a27a){if(_0x27a27a){_0x4b89e5=_0x27a27a['length'];if(!_0x2683a4[_0x9700('0x33')]['hasOwnProperty'](_0x9700('0x3a'))){_0xe0ad08[_0x9700('0x1e')]=qs[_0x9700('0x1e')](_0x2683a4[_0x9700('0x33')][_0x9700('0x1e')]);_0xe0ad08[_0x9700('0x1d')]=qs[_0x9700('0x1d')](_0x2683a4[_0x9700('0x33')][_0x9700('0x1d')]);}return _0xdbec78[_0x9700('0x4c')](_0xe0ad08);}})[_0x9700('0x25')](function(_0x19d596){if(_0x19d596){return _0x19d596?{'count':_0x4b89e5,'rows':_0x19d596}:null;}})['then'](respondWithResult(_0x1ff74f,null))['catch'](handleError(_0x1ff74f,null));};exports[_0x9700('0x50')]=function(_0x52c731,_0x82cbc7,_0x3210c4){if(_0x52c731['body']['id']){delete _0x52c731[_0x9700('0x49')]['id'];}return db[_0x9700('0x2e')][_0x9700('0x4d')]({'where':{'id':_0x52c731[_0x9700('0x47')]['id']}})['then'](handleEntityNotFound(_0x82cbc7,null))[_0x9700('0x25')](function(_0x114056){if(_0x114056){_0x52c731[_0x9700('0x49')][_0x9700('0x51')]=_0x114056['id'];_0x52c731[_0x9700('0x49')][_0x9700('0x52')]=integrations[_0x9700('0x53')](_0x52c731[_0x9700('0x49')]['channel'],_0x52c731[_0x9700('0x49')]['type']);_0x52c731['body']['Descriptions']=integrations[_0x9700('0x54')](_0x52c731[_0x9700('0x49')][_0x9700('0x55')],_0x52c731[_0x9700('0x49')][_0x9700('0x30')]);return db[_0x9700('0x4e')][_0x9700('0x48')](_0x52c731[_0x9700('0x49')],{'include':[{'model':db[_0x9700('0x56')],'as':'Subjects'},{'model':db[_0x9700('0x56')],'as':_0x9700('0x57')}]});}return null;})['then'](respondWithResult(_0x82cbc7,null))[_0x9700('0x4a')](handleError(_0x82cbc7,null));};exports[_0x9700('0x58')]=function(_0x18d545,_0x2bf230,_0x15b1a2){var _0x46910d=[_0x9700('0x59'),_0x9700('0x5a'),_0x9700('0x5b'),_0x9700('0x5c'),'close_code',_0x9700('0x5d'),'incident_state',_0x9700('0x5e'),_0x9700('0x5f')];var _0x2e5be4=[_0x9700('0x60'),_0x9700('0x59'),_0x9700('0x61'),_0x9700('0x62'),_0x9700('0x63'),_0x9700('0x64'),_0x9700('0x65'),'hold_reason',_0x9700('0x66'),_0x9700('0x67'),'resolved_by',_0x9700('0x68'),'opened_by',_0x9700('0x69'),_0x9700('0x6a'),'sys_domain',_0x9700('0x6b'),_0x9700('0x6c'),_0x9700('0x5b'),_0x9700('0x6d'),_0x9700('0x6e'),'closed_at',_0x9700('0x6f'),_0x9700('0x70'),_0x9700('0x71'),_0x9700('0x72'),'work_notes_list','business_service',_0x9700('0x73'),_0x9700('0x74'),_0x9700('0x75'),_0x9700('0x76'),_0x9700('0x77'),_0x9700('0x78'),_0x9700('0x79'),'group_list','work_end',_0x9700('0x7a'),'resolved_at',_0x9700('0x7b'),_0x9700('0x7c'),_0x9700('0x5c'),_0x9700('0x7d'),_0x9700('0x7e'),'close_code',_0x9700('0x7f'),_0x9700('0x80'),_0x9700('0x81'),_0x9700('0x82'),'business_stc',_0x9700('0x83'),_0x9700('0x84'),_0x9700('0x85'),_0x9700('0x5d'),_0x9700('0x86'),_0x9700('0x87'),_0x9700('0x88'),_0x9700('0x89'),_0x9700('0x8a'),_0x9700('0x8b'),'contact_type',_0x9700('0x8c'),_0x9700('0x8d'),_0x9700('0x8e'),_0x9700('0x8f'),_0x9700('0x90'),_0x9700('0x91'),_0x9700('0x92'),_0x9700('0x93'),'severity',_0x9700('0x94'),'sla_due','approval',_0x9700('0x95'),_0x9700('0x96'),_0x9700('0x97'),_0x9700('0x98'),_0x9700('0x99'),'escalation',_0x9700('0x9a'),_0x9700('0x9b'),_0x9700('0x9c'),'category'];var _0x50f514='';var _0x1f1db5='';var _0x446cc6=[];var _0xe1a1a7='';var _0x22d7a2='';var _0xce2691=[];var _0x2ddb9a='';var _0x4e247b='';var _0x492f3e={};var _0x3c0bc9='';return db['ServicenowAccount'][_0x9700('0x4d')]({'where':{'id':_0x18d545['params']['id']},'attributes':['id',_0x9700('0x9d'),'password',_0x9700('0x9e'),_0x9700('0x9f'),'serverUrl']})['then'](handleEntityNotFound(_0x2bf230,null))[_0x9700('0x25')](function(_0x1c8136){if(_0x1c8136){_0x3c0bc9=_0x1c8136[_0x9700('0x9f')];var _0x8804de=_0x3c0bc9[_0x9700('0xa0')](-0x1);if(_0x8804de==='/'){_0x3c0bc9=_0x3c0bc9[_0x9700('0xa1')](0x0,_0x3c0bc9[_0x9700('0xa2')](_0x8804de));}_0x4e247b=util['format'](_0x9700('0xa3'),_0x3c0bc9);_0x2ddb9a=util[_0x9700('0xa4')](_0x9700('0xa5'),_0x3c0bc9);_0x492f3e={'user':_0x1c8136[_0x9700('0x9d')],'pass':_0x1c8136[_0x9700('0xa6')]};var _0x495f3e={'method':_0x9700('0xa7'),'uri':_0x4e247b+_0x9700('0xa8'),'auth':_0x492f3e,'json':!![]};return rp(_0x495f3e);}})[_0x9700('0x25')](function(_0x5dd11d){if(_0x5dd11d['result'][_0x9700('0x38')]>0x0){_0x50f514=_0x5dd11d['result'];}console[_0x9700('0xa9')](_0x9700('0xaa'),_0x50f514);_0xce2691=[];_0x1f1db5=Object[_0x9700('0xab')]([],_0x50f514);_[_0x9700('0xac')](_0x1f1db5,function(_0x2ebc87){return!_0x46910d[_0x9700('0xad')](_0x2ebc87[_0x9700('0x2a')]);});_0x1f1db5['forEach'](function(_0x5b4554){var _0x1c0d02=createFieldObject(_0x2ddb9a,_0x492f3e,_0x5b4554[_0x9700('0xae')],_0x5b4554[_0x9700('0x2a')],_0x5b4554[_0x9700('0xaf')],![]);_0xce2691[_0x9700('0xb0')](_0x1c0d02);});return Promise[_0x9700('0xb1')](_0xce2691);})['then'](function(_0x4a6fa4){_0x446cc6=_0x4a6fa4;_0xe1a1a7=Object[_0x9700('0xab')]([],_0x50f514);console[_0x9700('0xa9')]('TCL:\x20_object',_0x50f514);_[_0x9700('0xac')](_0xe1a1a7,function(_0x34d49c){return _0x2e5be4[_0x9700('0xad')](_0x34d49c[_0x9700('0x2a')]);});console[_0x9700('0xa9')](_0x9700('0xb2'),_0xe1a1a7);_0xce2691=[];_0xe1a1a7[_0x9700('0xb3')](function(_0x2e88b8){var _0x107acb=createFieldObject(_0x2ddb9a,_0x492f3e,_0x2e88b8['internalType'],_0x2e88b8['name'],_0x2e88b8[_0x9700('0xaf')],!![]);_0xce2691[_0x9700('0xb0')](_0x107acb);});return Promise[_0x9700('0xb1')](_0xce2691);})[_0x9700('0x25')](function(_0x4de503){_0x22d7a2=_0x4de503;var _0x1736bf=_0x446cc6[_0x9700('0xb4')](_0x22d7a2);return{'count':_0x1736bf[_0x9700('0x38')],'rows':_0x1736bf};})[_0x9700('0x25')](respondWithResult(_0x2bf230,null))['catch'](function(_0x40a7f3){console[_0x9700('0xa9')](_0x9700('0xb5')+_0x40a7f3);var _0x382cf8=_0x18d545['query']['test']?0x1f4:_0x40a7f3[_0x9700('0xb6')]||0x1f4;logger[_0x9700('0x29')](_0x40a7f3[_0x9700('0xb7')]);delete _0x40a7f3['name'];if(_0x382cf8===0x191){_0x382cf8=0x190;}_0x2bf230[_0x9700('0x1f')](_0x382cf8)[_0x9700('0x2b')](_0x18d545[_0x9700('0x33')][_0x9700('0xb8')]?{'message':_0x9700('0xb9'),'statusCode':_0x40a7f3[_0x9700('0xb6')]}:_0x40a7f3);});};function createFieldObject(_0x503d4a,_0xbacfe0,_0x1bfb57,_0x175cb6,_0x1fb6c9,_0x1f240c){return new Promise(function(_0x2500fe,_0x28f99e){var _0x733c3d={'id':_0x175cb6,'name':_0x1fb6c9,'custom':_0x1f240c};if(_0x1bfb57===_0x9700('0xba')){_0x733c3d['options']=[{'name':_0x9700('0xbb'),'value':_0x9700('0xbc')},{'name':_0x9700('0xbd'),'value':_0x9700('0xbe')}];_0x2500fe(_0x733c3d);}else{var _0x14883a={'method':_0x9700('0xa7'),'uri':_0x503d4a+'sys_choice?sysparm_query=name=incident^element='+_0x175cb6,'auth':_0xbacfe0,'json':!![]};return rp(_0x14883a)[_0x9700('0x25')](function(_0x2b2df3){var _0x5893f1=[];if(_0x2b2df3[_0x9700('0xbf')][_0x9700('0x38')]>0x0){_0x2b2df3[_0x9700('0xbf')][_0x9700('0xb3')](function(_0x177635){if(_0x177635[_0x9700('0xc0')]===_0x9700('0xbe')){var _0x2848ce={'name':_0x177635[_0x9700('0xaf')],'value':_0x177635[_0x9700('0xc1')]};_0x5893f1['push'](_0x2848ce);}});}_0x733c3d[_0x9700('0x41')]=_0x5893f1;if(_0x733c3d[_0x9700('0x41')][_0x9700('0x38')]>0x0){_0x2500fe(_0x733c3d);}else{if(_0x1f240c==![]){_0x2500fe();}else{_0x2500fe(_0x733c3d);}}});}});}
\ No newline at end of file
index 86466ee..c8ac19f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd51=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3d77db,_0x53511){var _0x273a73=function(_0x8bf0c2){while(--_0x8bf0c2){_0x3d77db['push'](_0x3d77db['shift']());}};_0x273a73(++_0x53511);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x2ea67e,_0x415c5b){_0x2ea67e=_0x2ea67e-0x0;var _0x23e254=_0xbd51[_0x2ea67e];return _0x23e254;};'use strict';var _=require(_0x1bd5('0x0'));var util=require('util');var logger=require(_0x1bd5('0x1'))(_0x1bd5('0x2'));var moment=require(_0x1bd5('0x3'));var BPromise=require(_0x1bd5('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(_0x1bd5('0x5'));var integrations=require(_0x1bd5('0x6'));module[_0x1bd5('0x7')]=function(_0x59ddfb,_0x29abea){return _0x59ddfb[_0x1bd5('0x8')](_0x1bd5('0x9'),attributes,{'tableName':_0x1bd5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','lodash','util'];(function(_0x1627ae,_0x2aaa24){var _0x34b38f=function(_0x5c4332){while(--_0x5c4332){_0x1627ae['push'](_0x1627ae['shift']());}};_0x34b38f(++_0x2aaa24);}(_0x7a54,0x106));var _0x47a5=function(_0x21076d,_0xffee16){_0x21076d=_0x21076d-0x0;var _0x2fb031=_0x7a54[_0x21076d];return _0x2fb031;};'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'));var integrations=require(_0x47a5('0x9'));module['exports']=function(_0x3d5629,_0x59199c){return _0x3d5629[_0x47a5('0xa')](_0x47a5('0xb'),attributes,{'tableName':'int_servicenow_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90ee51a..2a4da8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e8f=['stringify','error','code','message','ServicenowAccount,\x20%s,\x20%s','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','limit','include','model','attributes','map','debug','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x55e3d1,_0x5a8425){var _0x2ac29d=function(_0x21fbe2){while(--_0x21fbe2){_0x55e3d1['push'](_0x55e3d1['shift']());}};_0x2ac29d(++_0x5a8425);}(_0x6e8f,0x19b));var _0xf6e8=function(_0x205ade,_0x17ad97){_0x205ade=_0x205ade-0x0;var _0x2027a5=_0x6e8f[_0x205ade];return _0x2027a5;};'use strict';var _=require(_0xf6e8('0x0'));var util=require(_0xf6e8('0x1'));var moment=require(_0xf6e8('0x2'));var BPromise=require(_0xf6e8('0x3'));var rs=require(_0xf6e8('0x4'));var fs=require('fs');var Redis=require(_0xf6e8('0x5'));var db=require(_0xf6e8('0x6'))['db'];var utils=require(_0xf6e8('0x7'));var logger=require(_0xf6e8('0x8'))(_0xf6e8('0x9'));var config=require(_0xf6e8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xf6e8('0xb')][_0xf6e8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x25895e,_0x460d53,_0x3138d9){return new BPromise(function(_0x5624f4,_0x1ccc82){return client[_0xf6e8('0xd')](_0x25895e,_0x3138d9)[_0xf6e8('0xe')](function(_0x121803){logger[_0xf6e8('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0x460d53,'request\x20sent');logger['debug'](_0xf6e8('0x10'),_0x460d53,_0xf6e8('0x11'),JSON[_0xf6e8('0x12')](_0x121803));if(_0x121803[_0xf6e8('0x13')]){if(_0x121803[_0xf6e8('0x13')][_0xf6e8('0x14')]===0x1f4){logger[_0xf6e8('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x460d53,_0x121803['error'][_0xf6e8('0x15')]);return _0x1ccc82(_0x121803[_0xf6e8('0x13')][_0xf6e8('0x15')]);}logger[_0xf6e8('0x13')](_0xf6e8('0x16'),_0x460d53,_0x121803['error'][_0xf6e8('0x15')]);return _0x5624f4(_0x121803['error'][_0xf6e8('0x15')]);}else{logger[_0xf6e8('0xf')](_0xf6e8('0x16'),_0x460d53,_0xf6e8('0x11'));_0x5624f4(_0x121803[_0xf6e8('0x17')][_0xf6e8('0x15')]);}})[_0xf6e8('0x18')](function(_0x2d19c3){logger[_0xf6e8('0x13')](_0xf6e8('0x16'),_0x460d53,_0x2d19c3);_0x1ccc82(_0x2d19c3);});});}exports[_0xf6e8('0x19')]=function(_0x32b41e){var _0x5a81b3=this;return new Promise(function(_0x491deb,_0x29949c){return db[_0xf6e8('0x1a')][_0xf6e8('0x1b')]({'raw':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e['options'][_0xf6e8('0x1d')]===undefined?!![]:![]:!![],'where':_0x32b41e['options']?_0x32b41e[_0xf6e8('0x1c')][_0xf6e8('0x1e')]||null:null,'attributes':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e[_0xf6e8('0x1c')]['attributes']||null:null,'limit':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e[_0xf6e8('0x1c')][_0xf6e8('0x1f')]||null:null,'include':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e[_0xf6e8('0x1c')][_0xf6e8('0x20')]?_['map'](_0x32b41e['options']['include'],function(_0x18a7dc){return{'model':db[_0x18a7dc[_0xf6e8('0x21')]],'as':_0x18a7dc['as'],'attributes':_0x18a7dc[_0xf6e8('0x22')],'include':_0x18a7dc[_0xf6e8('0x20')]?_[_0xf6e8('0x23')](_0x18a7dc[_0xf6e8('0x20')],function(_0x12a20d){return{'model':db[_0x12a20d['model']],'as':_0x12a20d['as'],'attributes':_0x12a20d[_0xf6e8('0x22')],'include':_0x12a20d['include']?_[_0xf6e8('0x23')](_0x12a20d[_0xf6e8('0x20')],function(_0x4b2871){return{'model':db[_0x4b2871['model']],'as':_0x4b2871['as'],'attributes':_0x4b2871[_0xf6e8('0x22')]};}):[]};}):[]};}):[]:[]})[_0xf6e8('0xe')](function(_0x242f41){logger['info'](_0xf6e8('0x19'),_0x32b41e);logger[_0xf6e8('0x24')]('GetServicenowAccount',_0x32b41e,JSON['stringify'](_0x242f41));_0x491deb(_0x242f41);})[_0xf6e8('0x18')](function(_0x4725eb){logger[_0xf6e8('0x13')](_0xf6e8('0x19'),_0x4725eb[_0xf6e8('0x15')],_0x32b41e);_0x29949c(_0x5a81b3[_0xf6e8('0x13')](0x1f4,_0x4725eb[_0xf6e8('0x15')]));});});};exports[_0xf6e8('0x25')]=function(_0x15d2c5){var _0x552253=this;return new Promise(function(_0x4611a4,_0x47e65f){return db['ServicenowAccount'][_0xf6e8('0x26')]({'raw':_0x15d2c5['options']?_0x15d2c5[_0xf6e8('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x15d2c5['options']?_0x15d2c5['options'][_0xf6e8('0x1e')]||null:null,'attributes':_0x15d2c5['options']?_0x15d2c5['options'][_0xf6e8('0x22')]||null:null,'include':_0x15d2c5[_0xf6e8('0x1c')]?_0x15d2c5[_0xf6e8('0x1c')][_0xf6e8('0x20')]?_[_0xf6e8('0x23')](_0x15d2c5[_0xf6e8('0x1c')]['include'],function(_0x26a434){return{'model':db[_0x26a434[_0xf6e8('0x21')]],'as':_0x26a434['as'],'attributes':_0x26a434['attributes'],'include':_0x26a434['include']?_[_0xf6e8('0x23')](_0x26a434[_0xf6e8('0x20')],function(_0x265f00){return{'model':db[_0x265f00[_0xf6e8('0x21')]],'as':_0x265f00['as'],'attributes':_0x265f00[_0xf6e8('0x22')],'include':_0x265f00[_0xf6e8('0x20')]?_[_0xf6e8('0x23')](_0x265f00['include'],function(_0x5b5c33){return{'model':db[_0x5b5c33['model']],'as':_0x5b5c33['as'],'attributes':_0x5b5c33[_0xf6e8('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45be99){logger['info'](_0xf6e8('0x25'),_0x15d2c5);logger[_0xf6e8('0x24')](_0xf6e8('0x25'),_0x15d2c5,JSON[_0xf6e8('0x12')](_0x45be99));_0x4611a4(_0x45be99);})[_0xf6e8('0x18')](function(_0x30b3de){logger[_0xf6e8('0x13')]('ShowServicenowAccount',_0x30b3de[_0xf6e8('0x15')],_0x15d2c5);_0x47e65f(_0x552253[_0xf6e8('0x13')](0x1f4,_0x30b3de[_0xf6e8('0x15')]));});});};
\ No newline at end of file
+var _0x2a85=['include','map','model','catch','ShowServicenowAccount','ServicenowAccount','find','where','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','GetServicenowAccount','findAll','raw','options','attributes'];(function(_0x4a592d,_0x392a20){var _0x15e357=function(_0x4c9654){while(--_0x4c9654){_0x4a592d['push'](_0x4a592d['shift']());}};_0x15e357(++_0x392a20);}(_0x2a85,0xad));var _0x52a8=function(_0x58f42a,_0x582f5c){_0x58f42a=_0x58f42a-0x0;var _0x249e18=_0x2a85[_0x58f42a];return _0x249e18;};'use strict';var _=require(_0x52a8('0x0'));var util=require(_0x52a8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x52a8('0x2'));var fs=require('fs');var Redis=require(_0x52a8('0x3'));var db=require(_0x52a8('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x52a8('0x5'))('rpc');var config=require(_0x52a8('0x6'));var jayson=require(_0x52a8('0x7'));var client=jayson[_0x52a8('0x8')][_0x52a8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ec46f,_0x517c42,_0x52f139){return new BPromise(function(_0x42e9b0,_0x33a669){return client[_0x52a8('0xa')](_0x3ec46f,_0x52f139)[_0x52a8('0xb')](function(_0x4946bb){logger['info'](_0x52a8('0xc'),_0x517c42,_0x52a8('0xd'));logger[_0x52a8('0xe')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x517c42,_0x52a8('0xd'),JSON[_0x52a8('0xf')](_0x4946bb));if(_0x4946bb[_0x52a8('0x10')]){if(_0x4946bb['error'][_0x52a8('0x11')]===0x1f4){logger[_0x52a8('0x10')](_0x52a8('0xc'),_0x517c42,_0x4946bb['error'][_0x52a8('0x12')]);return _0x33a669(_0x4946bb['error'][_0x52a8('0x12')]);}logger[_0x52a8('0x10')](_0x52a8('0xc'),_0x517c42,_0x4946bb[_0x52a8('0x10')]['message']);return _0x42e9b0(_0x4946bb['error']['message']);}else{logger[_0x52a8('0x13')](_0x52a8('0xc'),_0x517c42,_0x52a8('0xd'));_0x42e9b0(_0x4946bb['result'][_0x52a8('0x12')]);}})['catch'](function(_0x248392){logger[_0x52a8('0x10')](_0x52a8('0xc'),_0x517c42,_0x248392);_0x33a669(_0x248392);});});}exports[_0x52a8('0x14')]=function(_0x3d0a18){var _0x50c522=this;return new Promise(function(_0x48fcc2,_0x1d2389){return db['ServicenowAccount'][_0x52a8('0x15')]({'raw':_0x3d0a18['options']?_0x3d0a18['options'][_0x52a8('0x16')]===undefined?!![]:![]:!![],'where':_0x3d0a18[_0x52a8('0x17')]?_0x3d0a18['options']['where']||null:null,'attributes':_0x3d0a18['options']?_0x3d0a18['options'][_0x52a8('0x18')]||null:null,'limit':_0x3d0a18[_0x52a8('0x17')]?_0x3d0a18['options']['limit']||null:null,'include':_0x3d0a18[_0x52a8('0x17')]?_0x3d0a18[_0x52a8('0x17')][_0x52a8('0x19')]?_[_0x52a8('0x1a')](_0x3d0a18['options'][_0x52a8('0x19')],function(_0x64cacc){return{'model':db[_0x64cacc[_0x52a8('0x1b')]],'as':_0x64cacc['as'],'attributes':_0x64cacc['attributes'],'include':_0x64cacc[_0x52a8('0x19')]?_[_0x52a8('0x1a')](_0x64cacc['include'],function(_0x44ff31){return{'model':db[_0x44ff31[_0x52a8('0x1b')]],'as':_0x44ff31['as'],'attributes':_0x44ff31[_0x52a8('0x18')],'include':_0x44ff31[_0x52a8('0x19')]?_[_0x52a8('0x1a')](_0x44ff31[_0x52a8('0x19')],function(_0x4769c3){return{'model':db[_0x4769c3[_0x52a8('0x1b')]],'as':_0x4769c3['as'],'attributes':_0x4769c3[_0x52a8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x52a8('0xb')](function(_0x29afe3){logger['info']('GetServicenowAccount',_0x3d0a18);logger[_0x52a8('0xe')](_0x52a8('0x14'),_0x3d0a18,JSON[_0x52a8('0xf')](_0x29afe3));_0x48fcc2(_0x29afe3);})[_0x52a8('0x1c')](function(_0x544f82){logger['error'](_0x52a8('0x14'),_0x544f82['message'],_0x3d0a18);_0x1d2389(_0x50c522[_0x52a8('0x10')](0x1f4,_0x544f82[_0x52a8('0x12')]));});});};exports[_0x52a8('0x1d')]=function(_0x261c82){var _0x3021c9=this;return new Promise(function(_0x4b0f87,_0x24022c){return db[_0x52a8('0x1e')][_0x52a8('0x1f')]({'raw':_0x261c82[_0x52a8('0x17')]?_0x261c82['options'][_0x52a8('0x16')]===undefined?!![]:![]:!![],'where':_0x261c82[_0x52a8('0x17')]?_0x261c82[_0x52a8('0x17')][_0x52a8('0x20')]||null:null,'attributes':_0x261c82[_0x52a8('0x17')]?_0x261c82[_0x52a8('0x17')]['attributes']||null:null,'include':_0x261c82['options']?_0x261c82[_0x52a8('0x17')][_0x52a8('0x19')]?_[_0x52a8('0x1a')](_0x261c82[_0x52a8('0x17')][_0x52a8('0x19')],function(_0x503d9d){return{'model':db[_0x503d9d[_0x52a8('0x1b')]],'as':_0x503d9d['as'],'attributes':_0x503d9d[_0x52a8('0x18')],'include':_0x503d9d[_0x52a8('0x19')]?_[_0x52a8('0x1a')](_0x503d9d[_0x52a8('0x19')],function(_0x7e09b){return{'model':db[_0x7e09b[_0x52a8('0x1b')]],'as':_0x7e09b['as'],'attributes':_0x7e09b[_0x52a8('0x18')],'include':_0x7e09b[_0x52a8('0x19')]?_[_0x52a8('0x1a')](_0x7e09b[_0x52a8('0x19')],function(_0x380db4){return{'model':db[_0x380db4['model']],'as':_0x380db4['as'],'attributes':_0x380db4[_0x52a8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x52a8('0xb')](function(_0x437268){logger['info'](_0x52a8('0x1d'),_0x261c82);logger['debug'](_0x52a8('0x1d'),_0x261c82,JSON[_0x52a8('0xf')](_0x437268));_0x4b0f87(_0x437268);})['catch'](function(_0x1e0ba3){logger[_0x52a8('0x10')]('ShowServicenowAccount',_0x1e0ba3[_0x52a8('0x12')],_0x261c82);_0x24022c(_0x3021c9[_0x52a8('0x10')](0x1f4,_0x1e0ba3[_0x52a8('0x12')]));});});};
\ No newline at end of file
index 1d6b16a..0fc4e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f6=['/:id/fields','getSubjects','/:id/descriptions','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated'];(function(_0x15ee41,_0x9275d8){var _0x2b2846=function(_0x88d0a4){while(--_0x88d0a4){_0x15ee41['push'](_0x15ee41['shift']());}};_0x2b2846(++_0x9275d8);}(_0x57f6,0x105));var _0x657f=function(_0x45dbe3,_0xd2bf96){_0x45dbe3=_0x45dbe3-0x0;var _0x1e71cf=_0x57f6[_0x45dbe3];return _0x1e71cf;};'use strict';var multer=require(_0x657f('0x0'));var util=require(_0x657f('0x1'));var path=require(_0x657f('0x2'));var timeout=require(_0x657f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x657f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x657f('0x5'));var config=require(_0x657f('0x6'));var controller=require(_0x657f('0x7'));router[_0x657f('0x8')]('/',auth['isAuthenticated'](),controller[_0x657f('0x9')]);router[_0x657f('0x8')](_0x657f('0xa'),auth[_0x657f('0xb')](),controller['show']);router[_0x657f('0x8')](_0x657f('0xc'),auth[_0x657f('0xb')](),controller['getFields']);router[_0x657f('0x8')]('/:id/subjects',auth[_0x657f('0xb')](),controller[_0x657f('0xd')]);router[_0x657f('0x8')](_0x657f('0xe'),auth[_0x657f('0xb')](),controller['getDescriptions']);router[_0x657f('0xf')]('/',auth[_0x657f('0xb')](),controller['create']);router[_0x657f('0x10')](_0x657f('0xa'),auth[_0x657f('0xb')](),controller[_0x657f('0x11')]);router[_0x657f('0x12')]('/:id',auth[_0x657f('0xb')](),controller[_0x657f('0x13')]);module[_0x657f('0x14')]=router;
\ No newline at end of file
+var _0x9cfb=['get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller'];(function(_0x365877,_0x428816){var _0x2ba9ce=function(_0x52af47){while(--_0x52af47){_0x365877['push'](_0x365877['shift']());}};_0x2ba9ce(++_0x428816);}(_0x9cfb,0x168));var _0xb9cf=function(_0x13fff1,_0x438022){_0x13fff1=_0x13fff1-0x0;var _0x7fb59b=_0x9cfb[_0x13fff1];return _0x7fb59b;};'use strict';var multer=require(_0xb9cf('0x0'));var util=require('util');var path=require(_0xb9cf('0x1'));var timeout=require(_0xb9cf('0x2'));var express=require(_0xb9cf('0x3'));var router=express[_0xb9cf('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb9cf('0x5'));var config=require(_0xb9cf('0x6'));var controller=require(_0xb9cf('0x7'));router[_0xb9cf('0x8')]('/',auth[_0xb9cf('0x9')](),controller[_0xb9cf('0xa')]);router[_0xb9cf('0x8')](_0xb9cf('0xb'),auth[_0xb9cf('0x9')](),controller[_0xb9cf('0xc')]);router[_0xb9cf('0x8')](_0xb9cf('0xd'),auth[_0xb9cf('0x9')](),controller[_0xb9cf('0xe')]);router[_0xb9cf('0x8')]('/:id/subjects',auth[_0xb9cf('0x9')](),controller[_0xb9cf('0xf')]);router[_0xb9cf('0x8')](_0xb9cf('0x10'),auth['isAuthenticated'](),controller[_0xb9cf('0x11')]);router[_0xb9cf('0x12')]('/',auth[_0xb9cf('0x9')](),controller['create']);router[_0xb9cf('0x13')](_0xb9cf('0xb'),auth[_0xb9cf('0x9')](),controller['update']);router[_0xb9cf('0x14')](_0xb9cf('0xb'),auth[_0xb9cf('0x9')](),controller[_0xb9cf('0x15')]);module[_0xb9cf('0x16')]=router;
\ No newline at end of file
index 86bb9d4..8ac474b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f7f=['exports','STRING','sequelize'];(function(_0x121ae6,_0x592e59){var _0x5665dd=function(_0x2dae72){while(--_0x2dae72){_0x121ae6['push'](_0x121ae6['shift']());}};_0x5665dd(++_0x592e59);}(_0x2f7f,0x9b));var _0xf2f7=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0x2f7f[_0x174ef5];return _0x1cc379;};'use strict';var Sequelize=require(_0xf2f7('0x0'));module[_0xf2f7('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf2f7('0x2')]}};
\ No newline at end of file
+var _0xed33=['exports','STRING'];(function(_0x34ba3b,_0x11fee4){var _0x334bc2=function(_0x784c40){while(--_0x784c40){_0x34ba3b['push'](_0x34ba3b['shift']());}};_0x334bc2(++_0x11fee4);}(_0xed33,0xfa));var _0x3ed3=function(_0x3f179a,_0x33e254){_0x3f179a=_0x3f179a-0x0;var _0x18b2ee=_0xed33[_0x3f179a];return _0x18b2ee;};'use strict';var Sequelize=require('sequelize');module[_0x3ed3('0x0')]={'name':{'type':Sequelize[_0x3ed3('0x1')]},'description':{'type':Sequelize[_0x3ed3('0x1')]}};
\ No newline at end of file
index 82e856b..6d0994e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb4b=['findOne','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','destroy','then','end','stack','name','send','index','map','ServicenowConfiguration','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','filter','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','rawAttributes','length','merge','options','find','create','body','update','getFields','ServicenowField','order','pick','hasOwnProperty','getSubjects'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xeb4b,0x9e));var _0xbeb4=function(_0x485835,_0x4a0708){_0x485835=_0x485835-0x0;var _0x3e079f=_0xeb4b[_0x485835];return _0x3e079f;};'use strict';var emlformat=require(_0xbeb4('0x0'));var rimraf=require(_0xbeb4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbeb4('0x2'));var rp=require(_0xbeb4('0x3'));var moment=require(_0xbeb4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbeb4('0x5'));var util=require(_0xbeb4('0x6'));var path=require(_0xbeb4('0x7'));var sox=require(_0xbeb4('0x8'));var csv=require('to-csv');var ejs=require(_0xbeb4('0x9'));var fs=require('fs');var fs_extra=require(_0xbeb4('0xa'));var _=require(_0xbeb4('0xb'));var squel=require('squel');var crypto=require(_0xbeb4('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbeb4('0xd'));var authService=require(_0xbeb4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xbeb4('0xf'));var hardwareService=require(_0xbeb4('0x10'));var logger=require(_0xbeb4('0x11'))(_0xbeb4('0x12'));var utils=require(_0xbeb4('0x13'));var config=require(_0xbeb4('0x14'));var licenseUtil=require(_0xbeb4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcb5451,_0x27372f){_0x27372f=_0x27372f||0xcc;return function(_0x148d5a){if(_0x148d5a){return _0xcb5451[_0xbeb4('0x16')](_0x27372f);}return _0xcb5451[_0xbeb4('0x17')](_0x27372f)['end']();};}function respondWithResult(_0x53778c,_0x4f6b46){_0x4f6b46=_0x4f6b46||0xc8;return function(_0x1b0d6b){if(_0x1b0d6b){return _0x53778c['status'](_0x4f6b46)[_0xbeb4('0x18')](_0x1b0d6b);}};}function respondWithFilteredResult(_0x385ecc,_0x3b9279){return function(_0x37f11b){if(_0x37f11b){var _0x4a973f=typeof _0x3b9279[_0xbeb4('0x19')]===_0xbeb4('0x1a')&&typeof _0x3b9279[_0xbeb4('0x1b')]===_0xbeb4('0x1a');var _0x1e3d34=_0x37f11b['count'];var _0x23fd45=_0x4a973f?0x0:_0x3b9279[_0xbeb4('0x19')];var _0xecce0a=_0x4a973f?_0x37f11b[_0xbeb4('0x1c')]:_0x3b9279[_0xbeb4('0x19')]+_0x3b9279[_0xbeb4('0x1b')];var _0x26ae3b;if(_0xecce0a>=_0x1e3d34){_0xecce0a=_0x1e3d34;_0x26ae3b=0xc8;}else{_0x26ae3b=0xce;}_0x385ecc['status'](_0x26ae3b);return _0x385ecc['set'](_0xbeb4('0x1d'),_0x23fd45+'-'+_0xecce0a+'/'+_0x1e3d34)[_0xbeb4('0x18')](_0x37f11b);}return null;};}function patchUpdates(_0x13cc46){return function(_0x262937){try{jsonpatch[_0xbeb4('0x1e')](_0x262937,_0x13cc46,!![]);}catch(_0x1a88b7){return BPromise['reject'](_0x1a88b7);}return _0x262937[_0xbeb4('0x1f')]();};}function saveUpdates(_0x52813d,_0x1d77df){return function(_0x5328e1){if(_0x5328e1){return _0x5328e1['update'](_0x52813d)['then'](function(_0x41c4ef){return _0x41c4ef;});}return null;};}function removeEntity(_0x5b36d8,_0xe6da3d){return function(_0x2d351b){if(_0x2d351b){return _0x2d351b[_0xbeb4('0x20')]()[_0xbeb4('0x21')](function(){_0x5b36d8[_0xbeb4('0x17')](0xcc)[_0xbeb4('0x22')]();});}};}function handleEntityNotFound(_0x244ec8,_0x358d72){return function(_0x49a493){if(!_0x49a493){_0x244ec8[_0xbeb4('0x16')](0x194);}return _0x49a493;};}function handleError(_0x3f3abd,_0x483c60){_0x483c60=_0x483c60||0x1f4;return function(_0x43f62e){logger['error'](_0x43f62e[_0xbeb4('0x23')]);if(_0x43f62e[_0xbeb4('0x24')]){delete _0x43f62e[_0xbeb4('0x24')];}_0x3f3abd['status'](_0x483c60)[_0xbeb4('0x25')](_0x43f62e);};}exports[_0xbeb4('0x26')]=function(_0x3976f9,_0x25530e){var _0x5d1a86={},_0x1b5524={},_0x1d8582={'count':0x0,'rows':[]};var _0x1969c6=_[_0xbeb4('0x27')](db[_0xbeb4('0x28')]['rawAttributes'],function(_0x457465){return{'name':_0x457465[_0xbeb4('0x29')],'type':_0x457465[_0xbeb4('0x2a')][_0xbeb4('0x2b')]};});_0x1b5524[_0xbeb4('0x2c')]=_[_0xbeb4('0x27')](_0x1969c6,'name');_0x1b5524[_0xbeb4('0x2d')]=_['keys'](_0x3976f9['query']);_0x1b5524[_0xbeb4('0x2e')]=_[_0xbeb4('0x2f')](_0x1b5524['model'],_0x1b5524[_0xbeb4('0x2d')]);_0x5d1a86[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x1b5524[_0xbeb4('0x2c')],qs['fields'](_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x5d1a86[_0xbeb4('0x30')]=_0x5d1a86[_0xbeb4('0x30')]['length']?_0x5d1a86[_0xbeb4('0x30')]:_0x1b5524['model'];if(!_0x3976f9[_0xbeb4('0x2d')]['hasOwnProperty'](_0xbeb4('0x32'))){_0x5d1a86[_0xbeb4('0x1b')]=qs[_0xbeb4('0x1b')](_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x1b')]);_0x5d1a86[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x3976f9['query'][_0xbeb4('0x19')]);}_0x5d1a86['order']=qs[_0xbeb4('0x33')](_0x3976f9['query'][_0xbeb4('0x33')]);_0x5d1a86[_0xbeb4('0x34')]=qs[_0xbeb4('0x2e')](_['pick'](_0x3976f9[_0xbeb4('0x2d')],_0x1b5524[_0xbeb4('0x2e')]),_0x1969c6);if(_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x35')]){_0x5d1a86[_0xbeb4('0x34')]=_['merge'](_0x5d1a86[_0xbeb4('0x34')],{'$or':_[_0xbeb4('0x27')](_0x1969c6,function(_0x4965e0){if(_0x4965e0[_0xbeb4('0x2a')]!==_0xbeb4('0x36')){var _0x38fd4e={};_0x38fd4e[_0x4965e0[_0xbeb4('0x24')]]={'$like':'%'+_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x35')]+'%'};return _0x38fd4e;}})});}_0x5d1a86=_['merge']({},_0x5d1a86,_0x3976f9['options']);var _0x2149e6={'where':_0x5d1a86[_0xbeb4('0x34')]};return db[_0xbeb4('0x28')][_0xbeb4('0x1c')](_0x2149e6)[_0xbeb4('0x21')](function(_0x1bd1fd){_0x1d8582[_0xbeb4('0x1c')]=_0x1bd1fd;if(_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x37')]){_0x5d1a86[_0xbeb4('0x38')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xbeb4('0x39')](_0x5d1a86);})[_0xbeb4('0x21')](function(_0x36f123){_0x1d8582['rows']=_0x36f123;return _0x1d8582;})[_0xbeb4('0x21')](respondWithFilteredResult(_0x25530e,_0x5d1a86))[_0xbeb4('0x3a')](handleError(_0x25530e,null));};exports[_0xbeb4('0x3b')]=function(_0x324ba2,_0x5cd2fd){var _0x1dd5ce={'raw':![],'where':{'id':_0x324ba2[_0xbeb4('0x3c')]['id']}},_0x5e0835={};_0x5e0835[_0xbeb4('0x2c')]=_[_0xbeb4('0x3d')](db['ServicenowConfiguration'][_0xbeb4('0x3e')]);_0x5e0835['query']=_['keys'](_0x324ba2[_0xbeb4('0x2d')]);_0x5e0835[_0xbeb4('0x2e')]=_[_0xbeb4('0x2f')](_0x5e0835[_0xbeb4('0x2c')],_0x5e0835['query']);_0x1dd5ce[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x5e0835['model'],qs['fields'](_0x324ba2['query'][_0xbeb4('0x31')]));_0x1dd5ce['attributes']=_0x1dd5ce[_0xbeb4('0x30')][_0xbeb4('0x3f')]?_0x1dd5ce[_0xbeb4('0x30')]:_0x5e0835[_0xbeb4('0x2c')];if(_0x324ba2[_0xbeb4('0x2d')]['includeAll']){_0x1dd5ce[_0xbeb4('0x38')]=[{'all':!![]}];}_0x1dd5ce=_[_0xbeb4('0x40')]({},_0x1dd5ce,_0x324ba2[_0xbeb4('0x41')]);return db[_0xbeb4('0x28')][_0xbeb4('0x42')](_0x1dd5ce)[_0xbeb4('0x21')](handleEntityNotFound(_0x5cd2fd,null))[_0xbeb4('0x21')](respondWithResult(_0x5cd2fd,null))[_0xbeb4('0x3a')](handleError(_0x5cd2fd,null));};exports['create']=function(_0x25fd7b,_0x191758){return db['ServicenowConfiguration'][_0xbeb4('0x43')](_0x25fd7b[_0xbeb4('0x44')],{})[_0xbeb4('0x21')](respondWithResult(_0x191758,0xc9))[_0xbeb4('0x3a')](handleError(_0x191758,null));};exports[_0xbeb4('0x45')]=function(_0x45d2c7,_0x527e9a){if(_0x45d2c7[_0xbeb4('0x44')]['id']){delete _0x45d2c7[_0xbeb4('0x44')]['id'];}return db[_0xbeb4('0x28')][_0xbeb4('0x42')]({'where':{'id':_0x45d2c7['params']['id']}})[_0xbeb4('0x21')](handleEntityNotFound(_0x527e9a,null))[_0xbeb4('0x21')](saveUpdates(_0x45d2c7[_0xbeb4('0x44')],null))[_0xbeb4('0x21')](respondWithResult(_0x527e9a,null))['catch'](handleError(_0x527e9a,null));};exports['destroy']=function(_0x7644cf,_0x4ec15d){return db[_0xbeb4('0x28')][_0xbeb4('0x42')]({'where':{'id':_0x7644cf[_0xbeb4('0x3c')]['id']}})[_0xbeb4('0x21')](handleEntityNotFound(_0x4ec15d,null))[_0xbeb4('0x21')](removeEntity(_0x4ec15d,null))[_0xbeb4('0x3a')](handleError(_0x4ec15d,null));};exports[_0xbeb4('0x46')]=function(_0x3ce0b0,_0x3046a0,_0xe3aa37){var _0x58495f={};var _0x17ac00={};var _0x2dd9c7;var _0x544acf;return db[_0xbeb4('0x28')]['findOne']({'where':{'id':_0x3ce0b0['params']['id']}})['then'](handleEntityNotFound(_0x3046a0,null))[_0xbeb4('0x21')](function(_0x11c120){if(_0x11c120){_0x2dd9c7=_0x11c120;_0x17ac00[_0xbeb4('0x2c')]=_[_0xbeb4('0x3d')](db[_0xbeb4('0x47')]['rawAttributes']);_0x17ac00['query']=_['keys'](_0x3ce0b0[_0xbeb4('0x2d')]);_0x17ac00['filters']=_[_0xbeb4('0x2f')](_0x17ac00[_0xbeb4('0x2c')],_0x17ac00[_0xbeb4('0x2d')]);_0x58495f[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x17ac00[_0xbeb4('0x2c')],qs['fields'](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x58495f[_0xbeb4('0x30')]=_0x58495f['attributes']['length']?_0x58495f[_0xbeb4('0x30')]:_0x17ac00[_0xbeb4('0x2c')];_0x58495f[_0xbeb4('0x48')]=qs['sort'](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x33')]);_0x58495f['where']=qs['filters'](_[_0xbeb4('0x49')](_0x3ce0b0[_0xbeb4('0x2d')],_0x17ac00[_0xbeb4('0x2e')]));if(_0x3ce0b0[_0xbeb4('0x2d')]['filter']){_0x58495f[_0xbeb4('0x34')]=_[_0xbeb4('0x40')](_0x58495f[_0xbeb4('0x34')],{'$or':_['map'](_0x58495f[_0xbeb4('0x30')],function(_0x26e1e7){var _0x4650fd={};_0x4650fd[_0x26e1e7]={'$like':'%'+_0x3ce0b0['query']['filter']+'%'};return _0x4650fd;})});}_0x58495f=_[_0xbeb4('0x40')]({},_0x58495f,_0x3ce0b0[_0xbeb4('0x41')]);return _0x2dd9c7[_0xbeb4('0x46')](_0x58495f);}})['then'](function(_0x1fe22e){if(_0x1fe22e){_0x544acf=_0x1fe22e[_0xbeb4('0x3f')];if(!_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x4a')]('nolimit')){_0x58495f['limit']=qs[_0xbeb4('0x1b')](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x1b')]);_0x58495f[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x19')]);}return _0x2dd9c7[_0xbeb4('0x46')](_0x58495f);}})['then'](function(_0x53b377){if(_0x53b377){return _0x53b377?{'count':_0x544acf,'rows':_0x53b377}:null;}})['then'](respondWithResult(_0x3046a0,null))['catch'](handleError(_0x3046a0,null));};exports[_0xbeb4('0x4b')]=function(_0x192ce6,_0x15663d,_0x3ee7d3){var _0x1ec950={};var _0x5ba20b={};var _0x1fcdf7;var _0x1a88e0;return db[_0xbeb4('0x28')][_0xbeb4('0x4c')]({'where':{'id':_0x192ce6[_0xbeb4('0x3c')]['id']}})[_0xbeb4('0x21')](handleEntityNotFound(_0x15663d,null))[_0xbeb4('0x21')](function(_0x403dbf){if(_0x403dbf){_0x1fcdf7=_0x403dbf;_0x5ba20b[_0xbeb4('0x2c')]=_['keys'](db[_0xbeb4('0x47')][_0xbeb4('0x3e')]);_0x5ba20b[_0xbeb4('0x2d')]=_['keys'](_0x192ce6[_0xbeb4('0x2d')]);_0x5ba20b['filters']=_['intersection'](_0x5ba20b[_0xbeb4('0x2c')],_0x5ba20b['query']);_0x1ec950[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x5ba20b[_0xbeb4('0x2c')],qs[_0xbeb4('0x31')](_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x1ec950[_0xbeb4('0x30')]=_0x1ec950[_0xbeb4('0x30')][_0xbeb4('0x3f')]?_0x1ec950[_0xbeb4('0x30')]:_0x5ba20b['model'];_0x1ec950['order']=qs['sort'](_0x192ce6[_0xbeb4('0x2d')]['sort']);_0x1ec950['where']=qs['filters'](_[_0xbeb4('0x49')](_0x192ce6[_0xbeb4('0x2d')],_0x5ba20b[_0xbeb4('0x2e')]));if(_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x35')]){_0x1ec950['where']=_[_0xbeb4('0x40')](_0x1ec950[_0xbeb4('0x34')],{'$or':_['map'](_0x1ec950['attributes'],function(_0x4d90c0){var _0x568f84={};_0x568f84[_0x4d90c0]={'$like':'%'+_0x192ce6['query'][_0xbeb4('0x35')]+'%'};return _0x568f84;})});}_0x1ec950=_[_0xbeb4('0x40')]({},_0x1ec950,_0x192ce6[_0xbeb4('0x41')]);return _0x1fcdf7[_0xbeb4('0x4b')](_0x1ec950);}})['then'](function(_0x5d6da5){if(_0x5d6da5){_0x1a88e0=_0x5d6da5[_0xbeb4('0x3f')];if(!_0x192ce6['query'][_0xbeb4('0x4a')](_0xbeb4('0x32'))){_0x1ec950['limit']=qs[_0xbeb4('0x1b')](_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x1b')]);_0x1ec950[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x19')]);}return _0x1fcdf7[_0xbeb4('0x4b')](_0x1ec950);}})[_0xbeb4('0x21')](function(_0x27d978){if(_0x27d978){return _0x27d978?{'count':_0x1a88e0,'rows':_0x27d978}:null;}})[_0xbeb4('0x21')](respondWithResult(_0x15663d,null))[_0xbeb4('0x3a')](handleError(_0x15663d,null));};exports['getDescriptions']=function(_0x3f632e,_0x6057cd,_0x115842){var _0x235730={};var _0x237320={};var _0x28ba57;var _0x5e9673;return db[_0xbeb4('0x28')][_0xbeb4('0x4c')]({'where':{'id':_0x3f632e['params']['id']}})['then'](handleEntityNotFound(_0x6057cd,null))[_0xbeb4('0x21')](function(_0x192bf9){if(_0x192bf9){_0x28ba57=_0x192bf9;_0x237320[_0xbeb4('0x2c')]=_[_0xbeb4('0x3d')](db[_0xbeb4('0x47')][_0xbeb4('0x3e')]);_0x237320[_0xbeb4('0x2d')]=_[_0xbeb4('0x3d')](_0x3f632e['query']);_0x237320[_0xbeb4('0x2e')]=_[_0xbeb4('0x2f')](_0x237320[_0xbeb4('0x2c')],_0x237320['query']);_0x235730['attributes']=_[_0xbeb4('0x2f')](_0x237320[_0xbeb4('0x2c')],qs[_0xbeb4('0x31')](_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x235730[_0xbeb4('0x30')]=_0x235730[_0xbeb4('0x30')][_0xbeb4('0x3f')]?_0x235730[_0xbeb4('0x30')]:_0x237320[_0xbeb4('0x2c')];_0x235730[_0xbeb4('0x48')]=qs['sort'](_0x3f632e[_0xbeb4('0x2d')]['sort']);_0x235730[_0xbeb4('0x34')]=qs['filters'](_['pick'](_0x3f632e['query'],_0x237320[_0xbeb4('0x2e')]));if(_0x3f632e[_0xbeb4('0x2d')]['filter']){_0x235730['where']=_[_0xbeb4('0x40')](_0x235730[_0xbeb4('0x34')],{'$or':_[_0xbeb4('0x27')](_0x235730['attributes'],function(_0x265c1e){var _0x460454={};_0x460454[_0x265c1e]={'$like':'%'+_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x35')]+'%'};return _0x460454;})});}_0x235730=_[_0xbeb4('0x40')]({},_0x235730,_0x3f632e[_0xbeb4('0x41')]);return _0x28ba57[_0xbeb4('0x4d')](_0x235730);}})[_0xbeb4('0x21')](function(_0x966993){if(_0x966993){_0x5e9673=_0x966993[_0xbeb4('0x3f')];if(!_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x4a')](_0xbeb4('0x32'))){_0x235730[_0xbeb4('0x1b')]=qs[_0xbeb4('0x1b')](_0x3f632e[_0xbeb4('0x2d')]['limit']);_0x235730[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x19')]);}return _0x28ba57[_0xbeb4('0x4d')](_0x235730);}})[_0xbeb4('0x21')](function(_0x101d27){if(_0x101d27){return _0x101d27?{'count':_0x5e9673,'rows':_0x101d27}:null;}})[_0xbeb4('0x21')](respondWithResult(_0x6057cd,null))[_0xbeb4('0x3a')](handleError(_0x6057cd,null));};
\ No newline at end of file
+var _0xfa76=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','find','catch','create','body','update','getFields','ServicenowField','getSubjects','findOne','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x1dd2cc,_0x36ddfe){var _0x305d8e=function(_0x27df09){while(--_0x27df09){_0x1dd2cc['push'](_0x1dd2cc['shift']());}};_0x305d8e(++_0x36ddfe);}(_0xfa76,0x132));var _0x6fa7=function(_0x52d10d,_0xc942f9){_0x52d10d=_0x52d10d-0x0;var _0x37c0b3=_0xfa76[_0x52d10d];return _0x37c0b3;};'use strict';var emlformat=require(_0x6fa7('0x0'));var rimraf=require(_0x6fa7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6fa7('0x2'));var rp=require(_0x6fa7('0x3'));var moment=require(_0x6fa7('0x4'));var BPromise=require(_0x6fa7('0x5'));var Mustache=require(_0x6fa7('0x6'));var util=require(_0x6fa7('0x7'));var path=require(_0x6fa7('0x8'));var sox=require('sox');var csv=require(_0x6fa7('0x9'));var ejs=require(_0x6fa7('0xa'));var fs=require('fs');var fs_extra=require(_0x6fa7('0xb'));var _=require(_0x6fa7('0xc'));var squel=require(_0x6fa7('0xd'));var crypto=require(_0x6fa7('0xe'));var jsforce=require(_0x6fa7('0xf'));var deskjs=require(_0x6fa7('0x10'));var toCsv=require(_0x6fa7('0x9'));var querystring=require(_0x6fa7('0x11'));var Papa=require('papaparse');var Redis=require(_0x6fa7('0x12'));var authService=require(_0x6fa7('0x13'));var qs=require(_0x6fa7('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6fa7('0x15'));var logger=require(_0x6fa7('0x16'))(_0x6fa7('0x17'));var utils=require(_0x6fa7('0x18'));var config=require(_0x6fa7('0x19'));var licenseUtil=require(_0x6fa7('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x164a0a,_0x129c30){_0x129c30=_0x129c30||0xcc;return function(_0x271452){if(_0x271452){return _0x164a0a[_0x6fa7('0x1b')](_0x129c30);}return _0x164a0a[_0x6fa7('0x1c')](_0x129c30)['end']();};}function respondWithResult(_0x3aba2d,_0x1e5034){_0x1e5034=_0x1e5034||0xc8;return function(_0x366355){if(_0x366355){return _0x3aba2d['status'](_0x1e5034)[_0x6fa7('0x1d')](_0x366355);}};}function respondWithFilteredResult(_0x17e1a5,_0x55f06d){return function(_0x325a44){if(_0x325a44){var _0x367bd4=typeof _0x55f06d[_0x6fa7('0x1e')]==='undefined'&&typeof _0x55f06d[_0x6fa7('0x1f')]==='undefined';var _0x4dc467=_0x325a44['count'];var _0x3cd092=_0x367bd4?0x0:_0x55f06d[_0x6fa7('0x1e')];var _0x266bee=_0x367bd4?_0x325a44[_0x6fa7('0x20')]:_0x55f06d[_0x6fa7('0x1e')]+_0x55f06d[_0x6fa7('0x1f')];var _0xded64c;if(_0x266bee>=_0x4dc467){_0x266bee=_0x4dc467;_0xded64c=0xc8;}else{_0xded64c=0xce;}_0x17e1a5[_0x6fa7('0x1c')](_0xded64c);return _0x17e1a5[_0x6fa7('0x21')](_0x6fa7('0x22'),_0x3cd092+'-'+_0x266bee+'/'+_0x4dc467)[_0x6fa7('0x1d')](_0x325a44);}return null;};}function patchUpdates(_0x5816a6){return function(_0x23c81e){try{jsonpatch[_0x6fa7('0x23')](_0x23c81e,_0x5816a6,!![]);}catch(_0x4220bc){return BPromise['reject'](_0x4220bc);}return _0x23c81e[_0x6fa7('0x24')]();};}function saveUpdates(_0x1669ac,_0x2a6cf3){return function(_0x5bd94f){if(_0x5bd94f){return _0x5bd94f['update'](_0x1669ac)['then'](function(_0x280926){return _0x280926;});}return null;};}function removeEntity(_0x10b982,_0x36edd5){return function(_0x3d406c){if(_0x3d406c){return _0x3d406c[_0x6fa7('0x25')]()[_0x6fa7('0x26')](function(){_0x10b982[_0x6fa7('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2256b2,_0x1ecf8e){return function(_0x43481a){if(!_0x43481a){_0x2256b2['sendStatus'](0x194);}return _0x43481a;};}function handleError(_0x203a9e,_0x45f94d){_0x45f94d=_0x45f94d||0x1f4;return function(_0x2718a2){logger[_0x6fa7('0x27')](_0x2718a2[_0x6fa7('0x28')]);if(_0x2718a2[_0x6fa7('0x29')]){delete _0x2718a2[_0x6fa7('0x29')];}_0x203a9e['status'](_0x45f94d)[_0x6fa7('0x2a')](_0x2718a2);};}exports[_0x6fa7('0x2b')]=function(_0x208646,_0x4cc7d0){var _0x589efa={},_0xbdf288={},_0x569855={'count':0x0,'rows':[]};var _0x2bcd51=_[_0x6fa7('0x2c')](db[_0x6fa7('0x2d')][_0x6fa7('0x2e')],function(_0x4fc9b6){return{'name':_0x4fc9b6[_0x6fa7('0x2f')],'type':_0x4fc9b6[_0x6fa7('0x30')][_0x6fa7('0x31')]};});_0xbdf288[_0x6fa7('0x32')]=_[_0x6fa7('0x2c')](_0x2bcd51,_0x6fa7('0x29'));_0xbdf288[_0x6fa7('0x33')]=_[_0x6fa7('0x34')](_0x208646[_0x6fa7('0x33')]);_0xbdf288[_0x6fa7('0x35')]=_['intersection'](_0xbdf288[_0x6fa7('0x32')],_0xbdf288[_0x6fa7('0x33')]);_0x589efa[_0x6fa7('0x36')]=_[_0x6fa7('0x37')](_0xbdf288['model'],qs[_0x6fa7('0x38')](_0x208646['query'][_0x6fa7('0x38')]));_0x589efa[_0x6fa7('0x36')]=_0x589efa[_0x6fa7('0x36')][_0x6fa7('0x39')]?_0x589efa[_0x6fa7('0x36')]:_0xbdf288[_0x6fa7('0x32')];if(!_0x208646['query'][_0x6fa7('0x3a')](_0x6fa7('0x3b'))){_0x589efa[_0x6fa7('0x1f')]=qs[_0x6fa7('0x1f')](_0x208646['query'][_0x6fa7('0x1f')]);_0x589efa[_0x6fa7('0x1e')]=qs[_0x6fa7('0x1e')](_0x208646[_0x6fa7('0x33')][_0x6fa7('0x1e')]);}_0x589efa[_0x6fa7('0x3c')]=qs[_0x6fa7('0x3d')](_0x208646['query'][_0x6fa7('0x3d')]);_0x589efa[_0x6fa7('0x3e')]=qs['filters'](_[_0x6fa7('0x3f')](_0x208646[_0x6fa7('0x33')],_0xbdf288[_0x6fa7('0x35')]),_0x2bcd51);if(_0x208646['query'][_0x6fa7('0x40')]){_0x589efa['where']=_['merge'](_0x589efa[_0x6fa7('0x3e')],{'$or':_[_0x6fa7('0x2c')](_0x2bcd51,function(_0x8f123d){if(_0x8f123d[_0x6fa7('0x30')]!=='VIRTUAL'){var _0x2e65d8={};_0x2e65d8[_0x8f123d[_0x6fa7('0x29')]]={'$like':'%'+_0x208646[_0x6fa7('0x33')][_0x6fa7('0x40')]+'%'};return _0x2e65d8;}})});}_0x589efa=_[_0x6fa7('0x41')]({},_0x589efa,_0x208646[_0x6fa7('0x42')]);var _0x170360={'where':_0x589efa[_0x6fa7('0x3e')]};return db[_0x6fa7('0x2d')][_0x6fa7('0x20')](_0x170360)[_0x6fa7('0x26')](function(_0x5aad69){_0x569855[_0x6fa7('0x20')]=_0x5aad69;if(_0x208646[_0x6fa7('0x33')][_0x6fa7('0x43')]){_0x589efa[_0x6fa7('0x44')]=[{'all':!![]}];}return db[_0x6fa7('0x2d')][_0x6fa7('0x45')](_0x589efa);})[_0x6fa7('0x26')](function(_0x2c1d7b){_0x569855[_0x6fa7('0x46')]=_0x2c1d7b;return _0x569855;})[_0x6fa7('0x26')](respondWithFilteredResult(_0x4cc7d0,_0x589efa))['catch'](handleError(_0x4cc7d0,null));};exports['show']=function(_0x2ab29b,_0x1d15f8){var _0x42050d={'raw':![],'where':{'id':_0x2ab29b[_0x6fa7('0x47')]['id']}},_0x402f69={};_0x402f69[_0x6fa7('0x32')]=_[_0x6fa7('0x34')](db[_0x6fa7('0x2d')][_0x6fa7('0x2e')]);_0x402f69[_0x6fa7('0x33')]=_[_0x6fa7('0x34')](_0x2ab29b['query']);_0x402f69[_0x6fa7('0x35')]=_[_0x6fa7('0x37')](_0x402f69[_0x6fa7('0x32')],_0x402f69[_0x6fa7('0x33')]);_0x42050d[_0x6fa7('0x36')]=_[_0x6fa7('0x37')](_0x402f69['model'],qs[_0x6fa7('0x38')](_0x2ab29b[_0x6fa7('0x33')][_0x6fa7('0x38')]));_0x42050d[_0x6fa7('0x36')]=_0x42050d['attributes'][_0x6fa7('0x39')]?_0x42050d[_0x6fa7('0x36')]:_0x402f69[_0x6fa7('0x32')];if(_0x2ab29b['query']['includeAll']){_0x42050d['include']=[{'all':!![]}];}_0x42050d=_[_0x6fa7('0x41')]({},_0x42050d,_0x2ab29b[_0x6fa7('0x42')]);return db[_0x6fa7('0x2d')][_0x6fa7('0x48')](_0x42050d)[_0x6fa7('0x26')](handleEntityNotFound(_0x1d15f8,null))[_0x6fa7('0x26')](respondWithResult(_0x1d15f8,null))[_0x6fa7('0x49')](handleError(_0x1d15f8,null));};exports[_0x6fa7('0x4a')]=function(_0x3f4b9e,_0x5da9df){return db[_0x6fa7('0x2d')][_0x6fa7('0x4a')](_0x3f4b9e[_0x6fa7('0x4b')],{})[_0x6fa7('0x26')](respondWithResult(_0x5da9df,0xc9))[_0x6fa7('0x49')](handleError(_0x5da9df,null));};exports[_0x6fa7('0x4c')]=function(_0x1b8e72,_0x3818c0){if(_0x1b8e72[_0x6fa7('0x4b')]['id']){delete _0x1b8e72[_0x6fa7('0x4b')]['id'];}return db[_0x6fa7('0x2d')]['find']({'where':{'id':_0x1b8e72[_0x6fa7('0x47')]['id']}})['then'](handleEntityNotFound(_0x3818c0,null))[_0x6fa7('0x26')](saveUpdates(_0x1b8e72[_0x6fa7('0x4b')],null))[_0x6fa7('0x26')](respondWithResult(_0x3818c0,null))['catch'](handleError(_0x3818c0,null));};exports[_0x6fa7('0x25')]=function(_0x2fe48e,_0x3fba34){return db[_0x6fa7('0x2d')][_0x6fa7('0x48')]({'where':{'id':_0x2fe48e[_0x6fa7('0x47')]['id']}})['then'](handleEntityNotFound(_0x3fba34,null))['then'](removeEntity(_0x3fba34,null))[_0x6fa7('0x49')](handleError(_0x3fba34,null));};exports[_0x6fa7('0x4d')]=function(_0x35f6f2,_0x4bb9ee,_0x2709b8){var _0x2d4372={};var _0x2800dc={};var _0x23bb5c;var _0x334382;return db[_0x6fa7('0x2d')]['findOne']({'where':{'id':_0x35f6f2[_0x6fa7('0x47')]['id']}})[_0x6fa7('0x26')](handleEntityNotFound(_0x4bb9ee,null))[_0x6fa7('0x26')](function(_0xc7b916){if(_0xc7b916){_0x23bb5c=_0xc7b916;_0x2800dc[_0x6fa7('0x32')]=_[_0x6fa7('0x34')](db[_0x6fa7('0x4e')][_0x6fa7('0x2e')]);_0x2800dc[_0x6fa7('0x33')]=_[_0x6fa7('0x34')](_0x35f6f2[_0x6fa7('0x33')]);_0x2800dc['filters']=_['intersection'](_0x2800dc[_0x6fa7('0x32')],_0x2800dc[_0x6fa7('0x33')]);_0x2d4372[_0x6fa7('0x36')]=_['intersection'](_0x2800dc[_0x6fa7('0x32')],qs[_0x6fa7('0x38')](_0x35f6f2['query'][_0x6fa7('0x38')]));_0x2d4372[_0x6fa7('0x36')]=_0x2d4372[_0x6fa7('0x36')][_0x6fa7('0x39')]?_0x2d4372['attributes']:_0x2800dc[_0x6fa7('0x32')];_0x2d4372[_0x6fa7('0x3c')]=qs[_0x6fa7('0x3d')](_0x35f6f2['query'][_0x6fa7('0x3d')]);_0x2d4372[_0x6fa7('0x3e')]=qs['filters'](_[_0x6fa7('0x3f')](_0x35f6f2[_0x6fa7('0x33')],_0x2800dc[_0x6fa7('0x35')]));if(_0x35f6f2[_0x6fa7('0x33')][_0x6fa7('0x40')]){_0x2d4372[_0x6fa7('0x3e')]=_['merge'](_0x2d4372[_0x6fa7('0x3e')],{'$or':_[_0x6fa7('0x2c')](_0x2d4372[_0x6fa7('0x36')],function(_0x4aa0f1){var _0x2aaa8e={};_0x2aaa8e[_0x4aa0f1]={'$like':'%'+_0x35f6f2[_0x6fa7('0x33')][_0x6fa7('0x40')]+'%'};return _0x2aaa8e;})});}_0x2d4372=_[_0x6fa7('0x41')]({},_0x2d4372,_0x35f6f2[_0x6fa7('0x42')]);return _0x23bb5c['getFields'](_0x2d4372);}})[_0x6fa7('0x26')](function(_0x1f186b){if(_0x1f186b){_0x334382=_0x1f186b[_0x6fa7('0x39')];if(!_0x35f6f2[_0x6fa7('0x33')][_0x6fa7('0x3a')](_0x6fa7('0x3b'))){_0x2d4372[_0x6fa7('0x1f')]=qs[_0x6fa7('0x1f')](_0x35f6f2[_0x6fa7('0x33')][_0x6fa7('0x1f')]);_0x2d4372[_0x6fa7('0x1e')]=qs[_0x6fa7('0x1e')](_0x35f6f2[_0x6fa7('0x33')][_0x6fa7('0x1e')]);}return _0x23bb5c[_0x6fa7('0x4d')](_0x2d4372);}})['then'](function(_0x3bfe16){if(_0x3bfe16){return _0x3bfe16?{'count':_0x334382,'rows':_0x3bfe16}:null;}})[_0x6fa7('0x26')](respondWithResult(_0x4bb9ee,null))[_0x6fa7('0x49')](handleError(_0x4bb9ee,null));};exports[_0x6fa7('0x4f')]=function(_0x1cb839,_0x57f0ed,_0x59b20f){var _0x2b8411={};var _0x40c81c={};var _0x3d8822;var _0x29fefb;return db[_0x6fa7('0x2d')][_0x6fa7('0x50')]({'where':{'id':_0x1cb839['params']['id']}})[_0x6fa7('0x26')](handleEntityNotFound(_0x57f0ed,null))[_0x6fa7('0x26')](function(_0x3fc3bc){if(_0x3fc3bc){_0x3d8822=_0x3fc3bc;_0x40c81c[_0x6fa7('0x32')]=_[_0x6fa7('0x34')](db['ServicenowField'][_0x6fa7('0x2e')]);_0x40c81c['query']=_[_0x6fa7('0x34')](_0x1cb839['query']);_0x40c81c[_0x6fa7('0x35')]=_[_0x6fa7('0x37')](_0x40c81c['model'],_0x40c81c[_0x6fa7('0x33')]);_0x2b8411['attributes']=_[_0x6fa7('0x37')](_0x40c81c[_0x6fa7('0x32')],qs[_0x6fa7('0x38')](_0x1cb839[_0x6fa7('0x33')][_0x6fa7('0x38')]));_0x2b8411[_0x6fa7('0x36')]=_0x2b8411['attributes'][_0x6fa7('0x39')]?_0x2b8411[_0x6fa7('0x36')]:_0x40c81c[_0x6fa7('0x32')];_0x2b8411['order']=qs[_0x6fa7('0x3d')](_0x1cb839[_0x6fa7('0x33')][_0x6fa7('0x3d')]);_0x2b8411[_0x6fa7('0x3e')]=qs[_0x6fa7('0x35')](_['pick'](_0x1cb839['query'],_0x40c81c[_0x6fa7('0x35')]));if(_0x1cb839[_0x6fa7('0x33')]['filter']){_0x2b8411[_0x6fa7('0x3e')]=_[_0x6fa7('0x41')](_0x2b8411[_0x6fa7('0x3e')],{'$or':_[_0x6fa7('0x2c')](_0x2b8411['attributes'],function(_0x25d382){var _0x243801={};_0x243801[_0x25d382]={'$like':'%'+_0x1cb839['query'][_0x6fa7('0x40')]+'%'};return _0x243801;})});}_0x2b8411=_[_0x6fa7('0x41')]({},_0x2b8411,_0x1cb839[_0x6fa7('0x42')]);return _0x3d8822['getSubjects'](_0x2b8411);}})['then'](function(_0x2ae2bc){if(_0x2ae2bc){_0x29fefb=_0x2ae2bc[_0x6fa7('0x39')];if(!_0x1cb839[_0x6fa7('0x33')][_0x6fa7('0x3a')](_0x6fa7('0x3b'))){_0x2b8411[_0x6fa7('0x1f')]=qs['limit'](_0x1cb839[_0x6fa7('0x33')][_0x6fa7('0x1f')]);_0x2b8411[_0x6fa7('0x1e')]=qs[_0x6fa7('0x1e')](_0x1cb839[_0x6fa7('0x33')][_0x6fa7('0x1e')]);}return _0x3d8822[_0x6fa7('0x4f')](_0x2b8411);}})[_0x6fa7('0x26')](function(_0x3d3bf4){if(_0x3d3bf4){return _0x3d3bf4?{'count':_0x29fefb,'rows':_0x3d3bf4}:null;}})[_0x6fa7('0x26')](respondWithResult(_0x57f0ed,null))[_0x6fa7('0x49')](handleError(_0x57f0ed,null));};exports['getDescriptions']=function(_0x11b324,_0x2f55a7,_0x24acd7){var _0x2260aa={};var _0xb253c8={};var _0x1b4375;var _0x496a91;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x11b324[_0x6fa7('0x47')]['id']}})[_0x6fa7('0x26')](handleEntityNotFound(_0x2f55a7,null))[_0x6fa7('0x26')](function(_0x4ead69){if(_0x4ead69){_0x1b4375=_0x4ead69;_0xb253c8['model']=_['keys'](db[_0x6fa7('0x4e')][_0x6fa7('0x2e')]);_0xb253c8['query']=_[_0x6fa7('0x34')](_0x11b324[_0x6fa7('0x33')]);_0xb253c8[_0x6fa7('0x35')]=_[_0x6fa7('0x37')](_0xb253c8['model'],_0xb253c8[_0x6fa7('0x33')]);_0x2260aa[_0x6fa7('0x36')]=_['intersection'](_0xb253c8[_0x6fa7('0x32')],qs[_0x6fa7('0x38')](_0x11b324[_0x6fa7('0x33')][_0x6fa7('0x38')]));_0x2260aa[_0x6fa7('0x36')]=_0x2260aa['attributes'][_0x6fa7('0x39')]?_0x2260aa[_0x6fa7('0x36')]:_0xb253c8[_0x6fa7('0x32')];_0x2260aa[_0x6fa7('0x3c')]=qs['sort'](_0x11b324[_0x6fa7('0x33')]['sort']);_0x2260aa[_0x6fa7('0x3e')]=qs[_0x6fa7('0x35')](_[_0x6fa7('0x3f')](_0x11b324[_0x6fa7('0x33')],_0xb253c8['filters']));if(_0x11b324['query'][_0x6fa7('0x40')]){_0x2260aa[_0x6fa7('0x3e')]=_[_0x6fa7('0x41')](_0x2260aa['where'],{'$or':_[_0x6fa7('0x2c')](_0x2260aa[_0x6fa7('0x36')],function(_0x3573ee){var _0x118c38={};_0x118c38[_0x3573ee]={'$like':'%'+_0x11b324[_0x6fa7('0x33')][_0x6fa7('0x40')]+'%'};return _0x118c38;})});}_0x2260aa=_[_0x6fa7('0x41')]({},_0x2260aa,_0x11b324['options']);return _0x1b4375[_0x6fa7('0x51')](_0x2260aa);}})[_0x6fa7('0x26')](function(_0x5a5c2b){if(_0x5a5c2b){_0x496a91=_0x5a5c2b[_0x6fa7('0x39')];if(!_0x11b324['query'][_0x6fa7('0x3a')](_0x6fa7('0x3b'))){_0x2260aa['limit']=qs[_0x6fa7('0x1f')](_0x11b324[_0x6fa7('0x33')][_0x6fa7('0x1f')]);_0x2260aa[_0x6fa7('0x1e')]=qs[_0x6fa7('0x1e')](_0x11b324[_0x6fa7('0x33')]['offset']);}return _0x1b4375[_0x6fa7('0x51')](_0x2260aa);}})[_0x6fa7('0x26')](function(_0x1649a1){if(_0x1649a1){return _0x1649a1?{'count':_0x496a91,'rows':_0x1649a1}:null;}})[_0x6fa7('0x26')](respondWithResult(_0x2f55a7,null))[_0x6fa7('0x49')](handleError(_0x2f55a7,null));};
\ No newline at end of file
index d50e857..f7206cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0x533528,_0x409d05){var _0x3189f1=function(_0x5e63d2){while(--_0x5e63d2){_0x533528['push'](_0x533528['shift']());}};_0x3189f1(++_0x409d05);}(_0x4e81,0x1bc));var _0x14e8=function(_0x4fdc46,_0x2a3759){_0x4fdc46=_0x4fdc46-0x0;var _0x2c178a=_0x4e81[_0x4fdc46];return _0x2c178a;};'use strict';var _=require(_0x14e8('0x0'));var util=require(_0x14e8('0x1'));var logger=require(_0x14e8('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x14e8('0x3'));var fs=require('fs');var path=require(_0x14e8('0x4'));var rimraf=require(_0x14e8('0x5'));var config=require(_0x14e8('0x6'));var attributes=require(_0x14e8('0x7'));module[_0x14e8('0x8')]=function(_0x56a266,_0x57c79b){return _0x56a266[_0x14e8('0x9')](_0x14e8('0xa'),attributes,{'tableName':_0x14e8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x68a5=['define','ServicenowConfiguration','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./intServicenowConfiguration.attributes'];(function(_0xdbe2de,_0x3bdc5a){var _0x2facd7=function(_0x50df58){while(--_0x50df58){_0xdbe2de['push'](_0xdbe2de['shift']());}};_0x2facd7(++_0x3bdc5a);}(_0x68a5,0xfc));var _0x568a=function(_0x56c05c,_0x28d03c){_0x56c05c=_0x56c05c-0x0;var _0x2b8e71=_0x68a5[_0x56c05c];return _0x2b8e71;};'use strict';var _=require(_0x568a('0x0'));var util=require('util');var logger=require(_0x568a('0x1'))(_0x568a('0x2'));var moment=require('moment');var BPromise=require(_0x568a('0x3'));var rp=require(_0x568a('0x4'));var fs=require('fs');var path=require(_0x568a('0x5'));var rimraf=require(_0x568a('0x6'));var config=require('../../config/environment');var attributes=require(_0x568a('0x7'));module['exports']=function(_0x26db0e,_0x467a4f){return _0x26db0e[_0x568a('0x8')](_0x568a('0x9'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c1b365..e981c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9f1=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x32d356,_0x2b7ba3){var _0x373967=function(_0x3cf1bc){while(--_0x3cf1bc){_0x32d356['push'](_0x32d356['shift']());}};_0x373967(++_0x2b7ba3);}(_0xb9f1,0xfc));var _0x1b9f=function(_0x4d9752,_0x460422){_0x4d9752=_0x4d9752-0x0;var _0xae32cd=_0xb9f1[_0x4d9752];return _0xae32cd;};'use strict';var _=require(_0x1b9f('0x0'));var util=require(_0x1b9f('0x1'));var moment=require(_0x1b9f('0x2'));var BPromise=require(_0x1b9f('0x3'));var rs=require(_0x1b9f('0x4'));var fs=require('fs');var Redis=require(_0x1b9f('0x5'));var db=require(_0x1b9f('0x6'))['db'];var utils=require(_0x1b9f('0x7'));var logger=require(_0x1b9f('0x8'))(_0x1b9f('0x9'));var config=require(_0x1b9f('0xa'));var jayson=require(_0x1b9f('0xb'));var client=jayson[_0x1b9f('0xc')][_0x1b9f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4303b6,_0x378f00,_0x223504){return new BPromise(function(_0xddc65c,_0x133a74){return client[_0x1b9f('0xe')](_0x4303b6,_0x223504)[_0x1b9f('0xf')](function(_0xdc7cdb){logger['info'](_0x1b9f('0x10'),_0x378f00,_0x1b9f('0x11'));logger[_0x1b9f('0x12')](_0x1b9f('0x13'),_0x378f00,_0x1b9f('0x11'),JSON[_0x1b9f('0x14')](_0xdc7cdb));if(_0xdc7cdb[_0x1b9f('0x15')]){if(_0xdc7cdb['error'][_0x1b9f('0x16')]===0x1f4){logger[_0x1b9f('0x15')](_0x1b9f('0x10'),_0x378f00,_0xdc7cdb[_0x1b9f('0x15')]['message']);return _0x133a74(_0xdc7cdb[_0x1b9f('0x15')][_0x1b9f('0x17')]);}logger[_0x1b9f('0x15')](_0x1b9f('0x10'),_0x378f00,_0xdc7cdb[_0x1b9f('0x15')]['message']);return _0xddc65c(_0xdc7cdb[_0x1b9f('0x15')]['message']);}else{logger[_0x1b9f('0x18')](_0x1b9f('0x10'),_0x378f00,_0x1b9f('0x11'));_0xddc65c(_0xdc7cdb['result'][_0x1b9f('0x17')]);}})[_0x1b9f('0x19')](function(_0x526959){logger[_0x1b9f('0x15')](_0x1b9f('0x10'),_0x378f00,_0x526959);_0x133a74(_0x526959);});});}
\ No newline at end of file
+var _0x5434=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','util','moment','bluebird'];(function(_0x441cb8,_0x3be75b){var _0x4d4ab4=function(_0x19448e){while(--_0x19448e){_0x441cb8['push'](_0x441cb8['shift']());}};_0x4d4ab4(++_0x3be75b);}(_0x5434,0x105));var _0x4543=function(_0x23e5f2,_0x21a11b){_0x23e5f2=_0x23e5f2-0x0;var _0x568fdb=_0x5434[_0x23e5f2];return _0x568fdb;};'use strict';var _=require('lodash');var util=require(_0x4543('0x0'));var moment=require(_0x4543('0x1'));var BPromise=require(_0x4543('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4543('0x3'));var db=require(_0x4543('0x4'))['db'];var utils=require(_0x4543('0x5'));var logger=require(_0x4543('0x6'))(_0x4543('0x7'));var config=require(_0x4543('0x8'));var jayson=require(_0x4543('0x9'));var client=jayson['client'][_0x4543('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x101db0,_0x44a653,_0xea67fa){return new BPromise(function(_0x318d48,_0x46c8ce){return client['request'](_0x101db0,_0xea67fa)[_0x4543('0xb')](function(_0x5264ce){logger['info'](_0x4543('0xc'),_0x44a653,'request\x20sent');logger[_0x4543('0xd')](_0x4543('0xe'),_0x44a653,_0x4543('0xf'),JSON[_0x4543('0x10')](_0x5264ce));if(_0x5264ce['error']){if(_0x5264ce[_0x4543('0x11')]['code']===0x1f4){logger[_0x4543('0x11')](_0x4543('0xc'),_0x44a653,_0x5264ce['error'][_0x4543('0x12')]);return _0x46c8ce(_0x5264ce[_0x4543('0x11')][_0x4543('0x12')]);}logger[_0x4543('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0x44a653,_0x5264ce[_0x4543('0x11')][_0x4543('0x12')]);return _0x318d48(_0x5264ce[_0x4543('0x11')][_0x4543('0x12')]);}else{logger[_0x4543('0x13')](_0x4543('0xc'),_0x44a653,_0x4543('0xf'));_0x318d48(_0x5264ce[_0x4543('0x14')][_0x4543('0x12')]);}})[_0x4543('0x15')](function(_0x3d6cb5){logger['error'](_0x4543('0xc'),_0x44a653,_0x3d6cb5);_0x46c8ce(_0x3d6cb5);});});}
\ No newline at end of file
index 013766a..8047843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba46=['delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','./intServicenowField.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xba46,0x11f));var _0x6ba4=function(_0xfb0845,_0x4b5f29){_0xfb0845=_0xfb0845-0x0;var _0x1aaab8=_0xba46[_0xfb0845];return _0x1aaab8;};'use strict';var multer=require(_0x6ba4('0x0'));var util=require(_0x6ba4('0x1'));var path=require('path');var timeout=require(_0x6ba4('0x2'));var express=require(_0x6ba4('0x3'));var router=express['Router']();var fs_extra=require(_0x6ba4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6ba4('0x5'));var config=require('../../config/environment');var controller=require(_0x6ba4('0x6'));router['get']('/',auth[_0x6ba4('0x7')](),controller[_0x6ba4('0x8')]);router[_0x6ba4('0x9')](_0x6ba4('0xa'),auth[_0x6ba4('0x7')](),controller[_0x6ba4('0xb')]);router[_0x6ba4('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6ba4('0xa'),auth[_0x6ba4('0x7')](),controller['update']);router[_0x6ba4('0xd')](_0x6ba4('0xa'),auth[_0x6ba4('0x7')](),controller['destroy']);module[_0x6ba4('0xe')]=router;
\ No newline at end of file
+var _0x834a=['/:id','isAuthenticated','post','put','delete','destroy','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index'];(function(_0x2bc671,_0x522e92){var _0x61dfdf=function(_0x155a6d){while(--_0x155a6d){_0x2bc671['push'](_0x2bc671['shift']());}};_0x61dfdf(++_0x522e92);}(_0x834a,0x15f));var _0xa834=function(_0x1e361d,_0x477e82){_0x1e361d=_0x1e361d-0x0;var _0x51befe=_0x834a[_0x1e361d];return _0x51befe;};'use strict';var multer=require(_0xa834('0x0'));var util=require('util');var path=require(_0xa834('0x1'));var timeout=require(_0xa834('0x2'));var express=require('express');var router=express[_0xa834('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa834('0x4'));var interaction=require(_0xa834('0x5'));var config=require(_0xa834('0x6'));var controller=require('./intServicenowField.controller');router[_0xa834('0x7')]('/',auth['isAuthenticated'](),controller[_0xa834('0x8')]);router[_0xa834('0x7')](_0xa834('0x9'),auth[_0xa834('0xa')](),controller['show']);router[_0xa834('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa834('0xc')](_0xa834('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xa834('0xd')](_0xa834('0x9'),auth[_0xa834('0xa')](),controller[_0xa834('0xe')]);module['exports']=router;
\ No newline at end of file
index a620acb..d016c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd581=['string','customVariable','picklist','STRING','ENUM','BOOLEAN','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd581,0x1cd));var _0x1d58=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xd581[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require('sequelize');module[_0x1d58('0x0')]={'type':{'type':Sequelize['ENUM'](_0x1d58('0x1'),'variable',_0x1d58('0x2'),'keyValue',_0x1d58('0x3')),'defaultValue':_0x1d58('0x1')},'content':{'type':Sequelize[_0x1d58('0x4')]},'key':{'type':Sequelize[_0x1d58('0x4')]},'keyType':{'type':Sequelize[_0x1d58('0x5')]('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x1d58('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1d58('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1d58('0x4')]}};
\ No newline at end of file
+var _0x9431=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x2e318b,_0x34388a){var _0x168abd=function(_0x1895f5){while(--_0x1895f5){_0x2e318b['push'](_0x2e318b['shift']());}};_0x168abd(++_0x34388a);}(_0x9431,0x10c));var _0x1943=function(_0x2f76d3,_0x24a0c1){_0x2f76d3=_0x2f76d3-0x0;var _0x1b22f3=_0x9431[_0x2f76d3];return _0x1b22f3;};'use strict';var Sequelize=require(_0x1943('0x0'));module[_0x1943('0x1')]={'type':{'type':Sequelize[_0x1943('0x2')](_0x1943('0x3'),_0x1943('0x4'),_0x1943('0x5'),_0x1943('0x6'),_0x1943('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x1943('0x8')]},'key':{'type':Sequelize[_0x1943('0x8')]},'keyType':{'type':Sequelize[_0x1943('0x2')](_0x1943('0x3'),_0x1943('0x4'),_0x1943('0x5'))},'keyContent':{'type':Sequelize[_0x1943('0x8')]},'idField':{'type':Sequelize[_0x1943('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1943('0x8')]}};
\ No newline at end of file
index c464a5b..479daae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4c=['then','destroy','stack','name','send','index','ServicenowField','fieldName','key','model','map','query','keys','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','params','rawAttributes','intersection','length','include','find','create','body','update','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','apply','reject'];(function(_0x22ba54,_0x3c105b){var _0x17af5b=function(_0x345a36){while(--_0x345a36){_0x22ba54['push'](_0x22ba54['shift']());}};_0x17af5b(++_0x3c105b);}(_0x6f4c,0x1ef));var _0xc6f4=function(_0x4132b8,_0x5bc281){_0x4132b8=_0x4132b8-0x0;var _0x235e1b=_0x6f4c[_0x4132b8];return _0x235e1b;};'use strict';var emlformat=require(_0xc6f4('0x0'));var rimraf=require(_0xc6f4('0x1'));var zipdir=require(_0xc6f4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc6f4('0x3'));var moment=require('moment');var BPromise=require(_0xc6f4('0x4'));var Mustache=require(_0xc6f4('0x5'));var util=require(_0xc6f4('0x6'));var path=require(_0xc6f4('0x7'));var sox=require(_0xc6f4('0x8'));var csv=require(_0xc6f4('0x9'));var ejs=require(_0xc6f4('0xa'));var fs=require('fs');var fs_extra=require(_0xc6f4('0xb'));var _=require(_0xc6f4('0xc'));var squel=require(_0xc6f4('0xd'));var crypto=require('crypto');var jsforce=require(_0xc6f4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc6f4('0x9'));var querystring=require(_0xc6f4('0xf'));var Papa=require(_0xc6f4('0x10'));var Redis=require(_0xc6f4('0x11'));var authService=require(_0xc6f4('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc6f4('0x13'));var hardwareService=require(_0xc6f4('0x14'));var logger=require(_0xc6f4('0x15'))('api');var utils=require(_0xc6f4('0x16'));var config=require(_0xc6f4('0x17'));var licenseUtil=require(_0xc6f4('0x18'));var db=require(_0xc6f4('0x19'))['db'];function respondWithStatusCode(_0x1579dc,_0x1d2fab){_0x1d2fab=_0x1d2fab||0xcc;return function(_0x340789){if(_0x340789){return _0x1579dc[_0xc6f4('0x1a')](_0x1d2fab);}return _0x1579dc[_0xc6f4('0x1b')](_0x1d2fab)[_0xc6f4('0x1c')]();};}function respondWithResult(_0x4cb8a2,_0x59e443){_0x59e443=_0x59e443||0xc8;return function(_0x1c897e){if(_0x1c897e){return _0x4cb8a2[_0xc6f4('0x1b')](_0x59e443)[_0xc6f4('0x1d')](_0x1c897e);}};}function respondWithFilteredResult(_0x2d1a63,_0x319f61){return function(_0x584438){if(_0x584438){var _0x4435d8=typeof _0x319f61['offset']===_0xc6f4('0x1e')&&typeof _0x319f61['limit']==='undefined';var _0xfdb536=_0x584438['count'];var _0x55dc5b=_0x4435d8?0x0:_0x319f61[_0xc6f4('0x1f')];var _0x1e1eb4=_0x4435d8?_0x584438[_0xc6f4('0x20')]:_0x319f61[_0xc6f4('0x1f')]+_0x319f61[_0xc6f4('0x21')];var _0xb93313;if(_0x1e1eb4>=_0xfdb536){_0x1e1eb4=_0xfdb536;_0xb93313=0xc8;}else{_0xb93313=0xce;}_0x2d1a63[_0xc6f4('0x1b')](_0xb93313);return _0x2d1a63[_0xc6f4('0x22')]('Content-Range',_0x55dc5b+'-'+_0x1e1eb4+'/'+_0xfdb536)[_0xc6f4('0x1d')](_0x584438);}return null;};}function patchUpdates(_0x61859){return function(_0x5deab0){try{jsonpatch[_0xc6f4('0x23')](_0x5deab0,_0x61859,!![]);}catch(_0x548383){return BPromise[_0xc6f4('0x24')](_0x548383);}return _0x5deab0['save']();};}function saveUpdates(_0x2310a7,_0x3aa797){return function(_0x1bf0ae){if(_0x1bf0ae){return _0x1bf0ae['update'](_0x2310a7)[_0xc6f4('0x25')](function(_0x4da32c){return _0x4da32c;});}return null;};}function removeEntity(_0x3f6858,_0x25a286){return function(_0x5204aa){if(_0x5204aa){return _0x5204aa[_0xc6f4('0x26')]()[_0xc6f4('0x25')](function(){_0x3f6858[_0xc6f4('0x1b')](0xcc)[_0xc6f4('0x1c')]();});}};}function handleEntityNotFound(_0x43ef23,_0xbefe44){return function(_0x773b58){if(!_0x773b58){_0x43ef23[_0xc6f4('0x1a')](0x194);}return _0x773b58;};}function handleError(_0x520c29,_0x35e5b2){_0x35e5b2=_0x35e5b2||0x1f4;return function(_0xb31932){logger['error'](_0xb31932[_0xc6f4('0x27')]);if(_0xb31932[_0xc6f4('0x28')]){delete _0xb31932['name'];}_0x520c29[_0xc6f4('0x1b')](_0x35e5b2)[_0xc6f4('0x29')](_0xb31932);};}exports[_0xc6f4('0x2a')]=function(_0x191758,_0xbb036d){var _0x2458e7={},_0x5e7b68={},_0x4b9b68={'count':0x0,'rows':[]};var _0x989a03=_['map'](db[_0xc6f4('0x2b')]['rawAttributes'],function(_0x4092ef){return{'name':_0x4092ef[_0xc6f4('0x2c')],'type':_0x4092ef['type'][_0xc6f4('0x2d')]};});_0x5e7b68[_0xc6f4('0x2e')]=_[_0xc6f4('0x2f')](_0x989a03,_0xc6f4('0x28'));_0x5e7b68[_0xc6f4('0x30')]=_[_0xc6f4('0x31')](_0x191758[_0xc6f4('0x30')]);_0x5e7b68['filters']=_['intersection'](_0x5e7b68[_0xc6f4('0x2e')],_0x5e7b68[_0xc6f4('0x30')]);_0x2458e7['attributes']=_['intersection'](_0x5e7b68[_0xc6f4('0x2e')],qs[_0xc6f4('0x32')](_0x191758['query'][_0xc6f4('0x32')]));_0x2458e7[_0xc6f4('0x33')]=_0x2458e7['attributes']['length']?_0x2458e7['attributes']:_0x5e7b68['model'];if(!_0x191758[_0xc6f4('0x30')][_0xc6f4('0x34')](_0xc6f4('0x35'))){_0x2458e7[_0xc6f4('0x21')]=qs[_0xc6f4('0x21')](_0x191758[_0xc6f4('0x30')][_0xc6f4('0x21')]);_0x2458e7[_0xc6f4('0x1f')]=qs[_0xc6f4('0x1f')](_0x191758['query'][_0xc6f4('0x1f')]);}_0x2458e7[_0xc6f4('0x36')]=qs[_0xc6f4('0x37')](_0x191758[_0xc6f4('0x30')][_0xc6f4('0x37')]);_0x2458e7[_0xc6f4('0x38')]=qs[_0xc6f4('0x39')](_[_0xc6f4('0x3a')](_0x191758[_0xc6f4('0x30')],_0x5e7b68[_0xc6f4('0x39')]),_0x989a03);if(_0x191758['query'][_0xc6f4('0x3b')]){_0x2458e7[_0xc6f4('0x38')]=_[_0xc6f4('0x3c')](_0x2458e7['where'],{'$or':_['map'](_0x989a03,function(_0x9cff7a){if(_0x9cff7a[_0xc6f4('0x3d')]!==_0xc6f4('0x3e')){var _0x5c46a3={};_0x5c46a3[_0x9cff7a[_0xc6f4('0x28')]]={'$like':'%'+_0x191758['query'][_0xc6f4('0x3b')]+'%'};return _0x5c46a3;}})});}_0x2458e7=_[_0xc6f4('0x3c')]({},_0x2458e7,_0x191758[_0xc6f4('0x3f')]);var _0x3322a9={'where':_0x2458e7['where']};return db[_0xc6f4('0x2b')][_0xc6f4('0x20')](_0x3322a9)[_0xc6f4('0x25')](function(_0x1c03ab){_0x4b9b68[_0xc6f4('0x20')]=_0x1c03ab;if(_0x191758[_0xc6f4('0x30')][_0xc6f4('0x40')]){_0x2458e7['include']=[{'all':!![]}];}return db[_0xc6f4('0x2b')]['findAll'](_0x2458e7);})['then'](function(_0x39deb4){_0x4b9b68[_0xc6f4('0x41')]=_0x39deb4;return _0x4b9b68;})[_0xc6f4('0x25')](respondWithFilteredResult(_0xbb036d,_0x2458e7))[_0xc6f4('0x42')](handleError(_0xbb036d,null));};exports['show']=function(_0x16cfcc,_0x1fa435){var _0x4203f6={'raw':!![],'where':{'id':_0x16cfcc[_0xc6f4('0x43')]['id']}},_0x58836f={};_0x58836f[_0xc6f4('0x2e')]=_['keys'](db[_0xc6f4('0x2b')][_0xc6f4('0x44')]);_0x58836f[_0xc6f4('0x30')]=_[_0xc6f4('0x31')](_0x16cfcc[_0xc6f4('0x30')]);_0x58836f['filters']=_[_0xc6f4('0x45')](_0x58836f[_0xc6f4('0x2e')],_0x58836f[_0xc6f4('0x30')]);_0x4203f6['attributes']=_[_0xc6f4('0x45')](_0x58836f['model'],qs[_0xc6f4('0x32')](_0x16cfcc[_0xc6f4('0x30')]['fields']));_0x4203f6['attributes']=_0x4203f6[_0xc6f4('0x33')][_0xc6f4('0x46')]?_0x4203f6[_0xc6f4('0x33')]:_0x58836f[_0xc6f4('0x2e')];if(_0x16cfcc[_0xc6f4('0x30')][_0xc6f4('0x40')]){_0x4203f6[_0xc6f4('0x47')]=[{'all':!![]}];}_0x4203f6=_['merge']({},_0x4203f6,_0x16cfcc[_0xc6f4('0x3f')]);return db[_0xc6f4('0x2b')][_0xc6f4('0x48')](_0x4203f6)[_0xc6f4('0x25')](handleEntityNotFound(_0x1fa435,null))[_0xc6f4('0x25')](respondWithResult(_0x1fa435,null))[_0xc6f4('0x42')](handleError(_0x1fa435,null));};exports[_0xc6f4('0x49')]=function(_0x443a19,_0x38e08f){return db['ServicenowField']['create'](_0x443a19[_0xc6f4('0x4a')],{})[_0xc6f4('0x25')](respondWithResult(_0x38e08f,0xc9))[_0xc6f4('0x42')](handleError(_0x38e08f,null));};exports[_0xc6f4('0x4b')]=function(_0x495a1e,_0x636de9){if(_0x495a1e[_0xc6f4('0x4a')]['id']){delete _0x495a1e[_0xc6f4('0x4a')]['id'];}return db[_0xc6f4('0x2b')][_0xc6f4('0x48')]({'where':{'id':_0x495a1e['params']['id']}})[_0xc6f4('0x25')](handleEntityNotFound(_0x636de9,null))[_0xc6f4('0x25')](saveUpdates(_0x495a1e['body'],null))[_0xc6f4('0x25')](respondWithResult(_0x636de9,null))[_0xc6f4('0x42')](handleError(_0x636de9,null));};exports[_0xc6f4('0x26')]=function(_0x37ebfb,_0x490295){return db[_0xc6f4('0x2b')]['find']({'where':{'id':_0x37ebfb[_0xc6f4('0x43')]['id']}})[_0xc6f4('0x25')](handleEntityNotFound(_0x490295,null))[_0xc6f4('0x25')](removeEntity(_0x490295,null))['catch'](handleError(_0x490295,null));};
\ No newline at end of file
+var _0x9ec7=['merge','type','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','json','reject','save','destroy','error','stack','name','send','map','ServicenowField','model','keys','filters','intersection','attributes','fields','length','query','hasOwnProperty','sort','where','pick'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x9ec7,0x14a));var _0x79ec=function(_0x2dc886,_0x4b618d){_0x2dc886=_0x2dc886-0x0;var _0x349f12=_0x9ec7[_0x2dc886];return _0x349f12;};'use strict';var emlformat=require(_0x79ec('0x0'));var rimraf=require(_0x79ec('0x1'));var zipdir=require(_0x79ec('0x2'));var jsonpatch=require(_0x79ec('0x3'));var rp=require(_0x79ec('0x4'));var moment=require(_0x79ec('0x5'));var BPromise=require(_0x79ec('0x6'));var Mustache=require(_0x79ec('0x7'));var util=require(_0x79ec('0x8'));var path=require(_0x79ec('0x9'));var sox=require(_0x79ec('0xa'));var csv=require(_0x79ec('0xb'));var ejs=require(_0x79ec('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x79ec('0xd'));var squel=require(_0x79ec('0xe'));var crypto=require(_0x79ec('0xf'));var jsforce=require(_0x79ec('0x10'));var deskjs=require(_0x79ec('0x11'));var toCsv=require(_0x79ec('0xb'));var querystring=require(_0x79ec('0x12'));var Papa=require(_0x79ec('0x13'));var Redis=require(_0x79ec('0x14'));var authService=require(_0x79ec('0x15'));var qs=require(_0x79ec('0x16'));var as=require(_0x79ec('0x17'));var hardwareService=require(_0x79ec('0x18'));var logger=require(_0x79ec('0x19'))(_0x79ec('0x1a'));var utils=require(_0x79ec('0x1b'));var config=require(_0x79ec('0x1c'));var licenseUtil=require(_0x79ec('0x1d'));var db=require(_0x79ec('0x1e'))['db'];function respondWithStatusCode(_0x48a488,_0x11a0b8){_0x11a0b8=_0x11a0b8||0xcc;return function(_0x2a6821){if(_0x2a6821){return _0x48a488[_0x79ec('0x1f')](_0x11a0b8);}return _0x48a488[_0x79ec('0x20')](_0x11a0b8)[_0x79ec('0x21')]();};}function respondWithResult(_0x33714b,_0x53654d){_0x53654d=_0x53654d||0xc8;return function(_0x546a0e){if(_0x546a0e){return _0x33714b[_0x79ec('0x20')](_0x53654d)['json'](_0x546a0e);}};}function respondWithFilteredResult(_0x1a9513,_0x3b94c2){return function(_0x5352c5){if(_0x5352c5){var _0x17253a=typeof _0x3b94c2[_0x79ec('0x22')]==='undefined'&&typeof _0x3b94c2[_0x79ec('0x23')]==='undefined';var _0x588ab5=_0x5352c5['count'];var _0x3f66f4=_0x17253a?0x0:_0x3b94c2[_0x79ec('0x22')];var _0x3908d0=_0x17253a?_0x5352c5[_0x79ec('0x24')]:_0x3b94c2[_0x79ec('0x22')]+_0x3b94c2['limit'];var _0x19f698;if(_0x3908d0>=_0x588ab5){_0x3908d0=_0x588ab5;_0x19f698=0xc8;}else{_0x19f698=0xce;}_0x1a9513[_0x79ec('0x20')](_0x19f698);return _0x1a9513[_0x79ec('0x25')]('Content-Range',_0x3f66f4+'-'+_0x3908d0+'/'+_0x588ab5)[_0x79ec('0x26')](_0x5352c5);}return null;};}function patchUpdates(_0x5912e9){return function(_0x246cce){try{jsonpatch['apply'](_0x246cce,_0x5912e9,!![]);}catch(_0x4db583){return BPromise[_0x79ec('0x27')](_0x4db583);}return _0x246cce[_0x79ec('0x28')]();};}function saveUpdates(_0x4ebc8e,_0x4aa884){return function(_0x2b4129){if(_0x2b4129){return _0x2b4129['update'](_0x4ebc8e)['then'](function(_0x1111f7){return _0x1111f7;});}return null;};}function removeEntity(_0x1b37ec,_0x245870){return function(_0x2bd282){if(_0x2bd282){return _0x2bd282[_0x79ec('0x29')]()['then'](function(){_0x1b37ec[_0x79ec('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fcb56,_0x16bf2c){return function(_0x25540f){if(!_0x25540f){_0x4fcb56[_0x79ec('0x1f')](0x194);}return _0x25540f;};}function handleError(_0x4cf4e7,_0x415eb9){_0x415eb9=_0x415eb9||0x1f4;return function(_0x3b4c4c){logger[_0x79ec('0x2a')](_0x3b4c4c[_0x79ec('0x2b')]);if(_0x3b4c4c[_0x79ec('0x2c')]){delete _0x3b4c4c[_0x79ec('0x2c')];}_0x4cf4e7[_0x79ec('0x20')](_0x415eb9)[_0x79ec('0x2d')](_0x3b4c4c);};}exports['index']=function(_0x651b05,_0x4e8b8c){var _0x4f717d={},_0x28ee49={},_0x20f885={'count':0x0,'rows':[]};var _0x1816b2=_[_0x79ec('0x2e')](db[_0x79ec('0x2f')]['rawAttributes'],function(_0x443a24){return{'name':_0x443a24['fieldName'],'type':_0x443a24['type']['key']};});_0x28ee49[_0x79ec('0x30')]=_[_0x79ec('0x2e')](_0x1816b2,_0x79ec('0x2c'));_0x28ee49['query']=_[_0x79ec('0x31')](_0x651b05['query']);_0x28ee49[_0x79ec('0x32')]=_[_0x79ec('0x33')](_0x28ee49[_0x79ec('0x30')],_0x28ee49['query']);_0x4f717d[_0x79ec('0x34')]=_['intersection'](_0x28ee49[_0x79ec('0x30')],qs[_0x79ec('0x35')](_0x651b05['query'][_0x79ec('0x35')]));_0x4f717d['attributes']=_0x4f717d[_0x79ec('0x34')][_0x79ec('0x36')]?_0x4f717d[_0x79ec('0x34')]:_0x28ee49[_0x79ec('0x30')];if(!_0x651b05[_0x79ec('0x37')][_0x79ec('0x38')]('nolimit')){_0x4f717d['limit']=qs[_0x79ec('0x23')](_0x651b05['query']['limit']);_0x4f717d[_0x79ec('0x22')]=qs[_0x79ec('0x22')](_0x651b05[_0x79ec('0x37')]['offset']);}_0x4f717d['order']=qs['sort'](_0x651b05[_0x79ec('0x37')][_0x79ec('0x39')]);_0x4f717d[_0x79ec('0x3a')]=qs[_0x79ec('0x32')](_[_0x79ec('0x3b')](_0x651b05[_0x79ec('0x37')],_0x28ee49['filters']),_0x1816b2);if(_0x651b05[_0x79ec('0x37')]['filter']){_0x4f717d['where']=_[_0x79ec('0x3c')](_0x4f717d[_0x79ec('0x3a')],{'$or':_['map'](_0x1816b2,function(_0x244c09){if(_0x244c09[_0x79ec('0x3d')]!==_0x79ec('0x3e')){var _0x36452e={};_0x36452e[_0x244c09[_0x79ec('0x2c')]]={'$like':'%'+_0x651b05[_0x79ec('0x37')][_0x79ec('0x3f')]+'%'};return _0x36452e;}})});}_0x4f717d=_['merge']({},_0x4f717d,_0x651b05[_0x79ec('0x40')]);var _0x36a2c6={'where':_0x4f717d[_0x79ec('0x3a')]};return db[_0x79ec('0x2f')][_0x79ec('0x24')](_0x36a2c6)[_0x79ec('0x41')](function(_0x2e67be){_0x20f885['count']=_0x2e67be;if(_0x651b05[_0x79ec('0x37')][_0x79ec('0x42')]){_0x4f717d[_0x79ec('0x43')]=[{'all':!![]}];}return db[_0x79ec('0x2f')][_0x79ec('0x44')](_0x4f717d);})[_0x79ec('0x41')](function(_0x10f0f2){_0x20f885[_0x79ec('0x45')]=_0x10f0f2;return _0x20f885;})[_0x79ec('0x41')](respondWithFilteredResult(_0x4e8b8c,_0x4f717d))[_0x79ec('0x46')](handleError(_0x4e8b8c,null));};exports[_0x79ec('0x47')]=function(_0x1f3be4,_0x330b45){var _0x4c914a={'raw':!![],'where':{'id':_0x1f3be4[_0x79ec('0x48')]['id']}},_0x399542={};_0x399542[_0x79ec('0x30')]=_['keys'](db[_0x79ec('0x2f')][_0x79ec('0x49')]);_0x399542[_0x79ec('0x37')]=_['keys'](_0x1f3be4[_0x79ec('0x37')]);_0x399542[_0x79ec('0x32')]=_['intersection'](_0x399542['model'],_0x399542['query']);_0x4c914a[_0x79ec('0x34')]=_['intersection'](_0x399542[_0x79ec('0x30')],qs[_0x79ec('0x35')](_0x1f3be4[_0x79ec('0x37')][_0x79ec('0x35')]));_0x4c914a[_0x79ec('0x34')]=_0x4c914a[_0x79ec('0x34')][_0x79ec('0x36')]?_0x4c914a[_0x79ec('0x34')]:_0x399542['model'];if(_0x1f3be4[_0x79ec('0x37')][_0x79ec('0x42')]){_0x4c914a[_0x79ec('0x43')]=[{'all':!![]}];}_0x4c914a=_['merge']({},_0x4c914a,_0x1f3be4['options']);return db[_0x79ec('0x2f')][_0x79ec('0x4a')](_0x4c914a)[_0x79ec('0x41')](handleEntityNotFound(_0x330b45,null))[_0x79ec('0x41')](respondWithResult(_0x330b45,null))[_0x79ec('0x46')](handleError(_0x330b45,null));};exports[_0x79ec('0x4b')]=function(_0x294042,_0xa6b75f){return db[_0x79ec('0x2f')]['create'](_0x294042[_0x79ec('0x4c')],{})[_0x79ec('0x41')](respondWithResult(_0xa6b75f,0xc9))[_0x79ec('0x46')](handleError(_0xa6b75f,null));};exports[_0x79ec('0x4d')]=function(_0x3db227,_0x4f608a){if(_0x3db227[_0x79ec('0x4c')]['id']){delete _0x3db227['body']['id'];}return db[_0x79ec('0x2f')][_0x79ec('0x4a')]({'where':{'id':_0x3db227[_0x79ec('0x48')]['id']}})[_0x79ec('0x41')](handleEntityNotFound(_0x4f608a,null))[_0x79ec('0x41')](saveUpdates(_0x3db227[_0x79ec('0x4c')],null))[_0x79ec('0x41')](respondWithResult(_0x4f608a,null))[_0x79ec('0x46')](handleError(_0x4f608a,null));};exports[_0x79ec('0x29')]=function(_0x29d780,_0x495625){return db[_0x79ec('0x2f')][_0x79ec('0x4a')]({'where':{'id':_0x29d780[_0x79ec('0x48')]['id']}})[_0x79ec('0x41')](handleEntityNotFound(_0x495625,null))['then'](removeEntity(_0x495625,null))[_0x79ec('0x46')](handleError(_0x495625,null));};
\ No newline at end of file
index 7629c58..f0b0249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf1=['FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x6cf1,0xd1));var _0x16cf=function(_0x1bb474,_0x4c993c){_0x1bb474=_0x1bb474-0x0;var _0x3eb834=_0x6cf1[_0x1bb474];return _0x3eb834;};'use strict';var _=require(_0x16cf('0x0'));var util=require(_0x16cf('0x1'));var logger=require(_0x16cf('0x2'))('api');var moment=require(_0x16cf('0x3'));var BPromise=require(_0x16cf('0x4'));var rp=require(_0x16cf('0x5'));var fs=require('fs');var path=require(_0x16cf('0x6'));var rimraf=require(_0x16cf('0x7'));var config=require(_0x16cf('0x8'));var attributes=require(_0x16cf('0x9'));module[_0x16cf('0xa')]=function(_0xb7a6ff,_0x5604f5){return _0xb7a6ff[_0x16cf('0xb')](_0x16cf('0xc'),attributes,{'tableName':_0x16cf('0xd'),'paranoid':![],'indexes':[{'name':_0x16cf('0xe'),'fields':['idField',_0x16cf('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe8e4=['int_servicenow_fields','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','ServicenowField'];(function(_0x456b57,_0x58691a){var _0x18f49f=function(_0x1dc195){while(--_0x1dc195){_0x456b57['push'](_0x456b57['shift']());}};_0x18f49f(++_0x58691a);}(_0xe8e4,0x8e));var _0x4e8e=function(_0x42d0f7,_0x11742e){_0x42d0f7=_0x42d0f7-0x0;var _0x9ddf83=_0xe8e4[_0x42d0f7];return _0x9ddf83;};'use strict';var _=require('lodash');var util=require(_0x4e8e('0x0'));var logger=require(_0x4e8e('0x1'))(_0x4e8e('0x2'));var moment=require(_0x4e8e('0x3'));var BPromise=require(_0x4e8e('0x4'));var rp=require(_0x4e8e('0x5'));var fs=require('fs');var path=require(_0x4e8e('0x6'));var rimraf=require(_0x4e8e('0x7'));var config=require(_0x4e8e('0x8'));var attributes=require(_0x4e8e('0x9'));module[_0x4e8e('0xa')]=function(_0x41b31e,_0x14a81e){return _0x41b31e['define'](_0x4e8e('0xb'),attributes,{'tableName':_0x4e8e('0xc'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':['idField',_0x4e8e('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9eb2604..a50ffd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1d9464,_0x43d7b8){var _0x5c222c=function(_0x11db03){while(--_0x11db03){_0x1d9464['push'](_0x1d9464['shift']());}};_0x5c222c(++_0x43d7b8);}(_0x70e0,0x17b));var _0x070e=function(_0xbe747b,_0x17e310){_0xbe747b=_0xbe747b-0x0;var _0x4c1608=_0x70e0[_0xbe747b];return _0x4c1608;};'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')]('ServicenowField,\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')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('ServicenowField,\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 _0x9ffd=['ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ServicenowField,\x20%s,\x20%s','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug'];(function(_0x6cc29a,_0x5a0a95){var _0x51c6c1=function(_0x2b0c06){while(--_0x2b0c06){_0x6cc29a['push'](_0x6cc29a['shift']());}};_0x51c6c1(++_0x5a0a95);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x36d4f7,_0x43f582){_0x36d4f7=_0x36d4f7-0x0;var _0x2e7896=_0x9ffd[_0x36d4f7];return _0x2e7896;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13ea8c,_0x270eb2,_0x45c60a){return new BPromise(function(_0x66282d,_0x13954e){return client[_0xd9ff('0xb')](_0x13ea8c,_0x45c60a)[_0xd9ff('0xc')](function(_0x58e728){logger['info']('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');logger[_0xd9ff('0xd')](_0xd9ff('0xe'),_0x270eb2,_0xd9ff('0xf'),JSON[_0xd9ff('0x10')](_0x58e728));if(_0x58e728[_0xd9ff('0x11')]){if(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x12')]===0x1f4){logger[_0xd9ff('0x11')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x13954e(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x13')]);}logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x66282d(_0x58e728[_0xd9ff('0x11')]['message']);}else{logger[_0xd9ff('0x15')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');_0x66282d(_0x58e728['result']['message']);}})[_0xd9ff('0x16')](function(_0x4f9d6d){logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x4f9d6d);_0x13954e(_0x4f9d6d);});});}
\ No newline at end of file
index 3303d8a..b6b0445 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(_0x2175b2,_0x1d206c){var _0x254d7c=function(_0x5ca39b){while(--_0x5ca39b){_0x2175b2['push'](_0x2175b2['shift']());}};_0x254d7c(++_0x1d206c);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x320050,_0x493bf4){var _0x34a441=function(_0x4bbae6){while(--_0x4bbae6){_0x320050['push'](_0x320050['shift']());}};_0x34a441(++_0x493bf4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 256636f..9ed310b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0xa421cc,_0x1e4732){var _0x287212=function(_0x41187c){while(--_0x41187c){_0xa421cc['push'](_0xa421cc['shift']());}};_0x287212(++_0x1e4732);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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(_0x3c2f0c,_0x58acf4){var _0x582b68=function(_0x2de734){while(--_0x2de734){_0x3c2f0c['push'](_0x3c2f0c['shift']());}};_0x582b68(++_0x58acf4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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 c56614b..30fe24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebbb=['filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','merge','create','body','params','destroy','findOne','SugarcrmConfiguration','rawAttributes','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','format','%s%s','/service/v4_1/rest.php','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','POST','get_module_fields','Calls','values','module_fields','label','endsWith','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','stack','name','send','map','SugarcrmAccount','type','model','keys','query'];(function(_0x26d034,_0x2c22db){var _0x3015aa=function(_0x282e96){while(--_0x282e96){_0x26d034['push'](_0x26d034['shift']());}};_0x3015aa(++_0x2c22db);}(_0xebbb,0x120));var _0xbebb=function(_0x4da873,_0x29b6c4){_0x4da873=_0x4da873-0x0;var _0x31bcf7=_0xebbb[_0x4da873];return _0x31bcf7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbebb('0x0'));var zipdir=require(_0xbebb('0x1'));var jsonpatch=require(_0xbebb('0x2'));var rp=require(_0xbebb('0x3'));var moment=require(_0xbebb('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xbebb('0x5'));var csv=require(_0xbebb('0x6'));var ejs=require(_0xbebb('0x7'));var fs=require('fs');var fs_extra=require(_0xbebb('0x8'));var _=require(_0xbebb('0x9'));var squel=require(_0xbebb('0xa'));var crypto=require('crypto');var jsforce=require(_0xbebb('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbebb('0xc'));var Papa=require('papaparse');var Redis=require(_0xbebb('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbebb('0xe'));var hardwareService=require(_0xbebb('0xf'));var logger=require(_0xbebb('0x10'))(_0xbebb('0x11'));var utils=require(_0xbebb('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5b35ae,_0x20a07b){_0x20a07b=_0x20a07b||0xcc;return function(_0x6275d2){if(_0x6275d2){return _0x5b35ae['sendStatus'](_0x20a07b);}return _0x5b35ae[_0xbebb('0x13')](_0x20a07b)['end']();};}function respondWithResult(_0x222933,_0x4dc6e0){_0x4dc6e0=_0x4dc6e0||0xc8;return function(_0x5503f8){if(_0x5503f8){return _0x222933['status'](_0x4dc6e0)[_0xbebb('0x14')](_0x5503f8);}};}function respondWithFilteredResult(_0x137128,_0x1122b0){return function(_0x2a91f5){if(_0x2a91f5){var _0x393712=typeof _0x1122b0[_0xbebb('0x15')]===_0xbebb('0x16')&&typeof _0x1122b0[_0xbebb('0x17')]===_0xbebb('0x16');var _0x4b36eb=_0x2a91f5[_0xbebb('0x18')];var _0x54ce91=_0x393712?0x0:_0x1122b0[_0xbebb('0x15')];var _0x23bdf2=_0x393712?_0x2a91f5[_0xbebb('0x18')]:_0x1122b0[_0xbebb('0x15')]+_0x1122b0['limit'];var _0x356ca5;if(_0x23bdf2>=_0x4b36eb){_0x23bdf2=_0x4b36eb;_0x356ca5=0xc8;}else{_0x356ca5=0xce;}_0x137128[_0xbebb('0x13')](_0x356ca5);return _0x137128[_0xbebb('0x19')](_0xbebb('0x1a'),_0x54ce91+'-'+_0x23bdf2+'/'+_0x4b36eb)['json'](_0x2a91f5);}return null;};}function patchUpdates(_0x334e70){return function(_0x394049){try{jsonpatch[_0xbebb('0x1b')](_0x394049,_0x334e70,!![]);}catch(_0x3aa326){return BPromise[_0xbebb('0x1c')](_0x3aa326);}return _0x394049[_0xbebb('0x1d')]();};}function saveUpdates(_0x54422b,_0x1c7bc6){return function(_0x2a0118){if(_0x2a0118){return _0x2a0118[_0xbebb('0x1e')](_0x54422b)[_0xbebb('0x1f')](function(_0x57d761){return _0x57d761;});}return null;};}function removeEntity(_0x3749fd,_0xac3584){return function(_0x328247){if(_0x328247){return _0x328247['destroy']()['then'](function(){_0x3749fd['status'](0xcc)[_0xbebb('0x20')]();});}};}function handleEntityNotFound(_0xaba781,_0x117663){return function(_0x31799f){if(!_0x31799f){_0xaba781['sendStatus'](0x194);}return _0x31799f;};}function handleError(_0x2415cc,_0x2e05b6){_0x2e05b6=_0x2e05b6||0x1f4;return function(_0x6ee55e){logger['error'](_0x6ee55e[_0xbebb('0x21')]);if(_0x6ee55e[_0xbebb('0x22')]){delete _0x6ee55e[_0xbebb('0x22')];}_0x2415cc[_0xbebb('0x13')](_0x2e05b6)[_0xbebb('0x23')](_0x6ee55e);};}exports['index']=function(_0x6fcff3,_0xed0488){var _0x2047a4={},_0x30ba34={},_0x242c14={'count':0x0,'rows':[]};var _0x1e0ac3=_[_0xbebb('0x24')](db[_0xbebb('0x25')]['rawAttributes'],function(_0x553bfe){return{'name':_0x553bfe['fieldName'],'type':_0x553bfe[_0xbebb('0x26')]['key']};});_0x30ba34[_0xbebb('0x27')]=_[_0xbebb('0x24')](_0x1e0ac3,_0xbebb('0x22'));_0x30ba34['query']=_[_0xbebb('0x28')](_0x6fcff3[_0xbebb('0x29')]);_0x30ba34[_0xbebb('0x2a')]=_[_0xbebb('0x2b')](_0x30ba34[_0xbebb('0x27')],_0x30ba34[_0xbebb('0x29')]);_0x2047a4[_0xbebb('0x2c')]=_['intersection'](_0x30ba34[_0xbebb('0x27')],qs[_0xbebb('0x2d')](_0x6fcff3[_0xbebb('0x29')]['fields']));_0x2047a4[_0xbebb('0x2c')]=_0x2047a4[_0xbebb('0x2c')][_0xbebb('0x2e')]?_0x2047a4[_0xbebb('0x2c')]:_0x30ba34[_0xbebb('0x27')];if(!_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x2f')]('nolimit')){_0x2047a4[_0xbebb('0x17')]=qs[_0xbebb('0x17')](_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x17')]);_0x2047a4[_0xbebb('0x15')]=qs[_0xbebb('0x15')](_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x15')]);}_0x2047a4[_0xbebb('0x30')]=qs['sort'](_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x31')]);_0x2047a4[_0xbebb('0x32')]=qs[_0xbebb('0x2a')](_[_0xbebb('0x33')](_0x6fcff3[_0xbebb('0x29')],_0x30ba34[_0xbebb('0x2a')]),_0x1e0ac3);if(_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x34')]){_0x2047a4[_0xbebb('0x32')]=_['merge'](_0x2047a4[_0xbebb('0x32')],{'$or':_['map'](_0x1e0ac3,function(_0x43551c){if(_0x43551c[_0xbebb('0x26')]!==_0xbebb('0x35')){var _0x316825={};_0x316825[_0x43551c[_0xbebb('0x22')]]={'$like':'%'+_0x6fcff3['query'][_0xbebb('0x34')]+'%'};return _0x316825;}})});}_0x2047a4=_['merge']({},_0x2047a4,_0x6fcff3[_0xbebb('0x36')]);var _0x4734b1={'where':_0x2047a4[_0xbebb('0x32')]};return db[_0xbebb('0x25')][_0xbebb('0x18')](_0x4734b1)['then'](function(_0xddcdfc){_0x242c14[_0xbebb('0x18')]=_0xddcdfc;if(_0x6fcff3['query'][_0xbebb('0x37')]){_0x2047a4[_0xbebb('0x38')]=[{'all':!![]}];}return db[_0xbebb('0x25')][_0xbebb('0x39')](_0x2047a4);})['then'](function(_0x1b70f8){_0x242c14[_0xbebb('0x3a')]=_0x1b70f8;return _0x242c14;})[_0xbebb('0x1f')](respondWithFilteredResult(_0xed0488,_0x2047a4))[_0xbebb('0x3b')](handleError(_0xed0488,null));};exports[_0xbebb('0x3c')]=function(_0x2f5511,_0x5735f1){var _0x1cfa26={'raw':![],'where':{'id':_0x2f5511['params']['id']}},_0x1cf752={};_0x1cf752['model']=_['keys'](db[_0xbebb('0x25')]['rawAttributes']);_0x1cf752[_0xbebb('0x29')]=_[_0xbebb('0x28')](_0x2f5511[_0xbebb('0x29')]);_0x1cf752[_0xbebb('0x2a')]=_[_0xbebb('0x2b')](_0x1cf752[_0xbebb('0x27')],_0x1cf752['query']);_0x1cfa26['attributes']=_[_0xbebb('0x2b')](_0x1cf752[_0xbebb('0x27')],qs['fields'](_0x2f5511[_0xbebb('0x29')][_0xbebb('0x2d')]));_0x1cfa26[_0xbebb('0x2c')]=_0x1cfa26[_0xbebb('0x2c')][_0xbebb('0x2e')]?_0x1cfa26[_0xbebb('0x2c')]:_0x1cf752['model'];if(_0x2f5511[_0xbebb('0x29')][_0xbebb('0x37')]){_0x1cfa26['include']=[{'all':!![]}];}_0x1cfa26=_[_0xbebb('0x3d')]({},_0x1cfa26,_0x2f5511['options']);return db[_0xbebb('0x25')]['find'](_0x1cfa26)['then'](handleEntityNotFound(_0x5735f1,null))[_0xbebb('0x1f')](respondWithResult(_0x5735f1,null))[_0xbebb('0x3b')](handleError(_0x5735f1,null));};exports[_0xbebb('0x3e')]=function(_0x107e20,_0x443b8d){return db[_0xbebb('0x25')]['create'](_0x107e20[_0xbebb('0x3f')],{})['then'](respondWithResult(_0x443b8d,0xc9))['catch'](handleError(_0x443b8d,null));};exports[_0xbebb('0x1e')]=function(_0x460635,_0x13be24){if(_0x460635[_0xbebb('0x3f')]['id']){delete _0x460635[_0xbebb('0x3f')]['id'];}return db[_0xbebb('0x25')]['find']({'where':{'id':_0x460635[_0xbebb('0x40')]['id']}})['then'](handleEntityNotFound(_0x13be24,null))[_0xbebb('0x1f')](saveUpdates(_0x460635[_0xbebb('0x3f')],null))['then'](respondWithResult(_0x13be24,null))[_0xbebb('0x3b')](handleError(_0x13be24,null));};exports[_0xbebb('0x41')]=function(_0x5a5bfb,_0x2db9b2){return db[_0xbebb('0x25')]['find']({'where':{'id':_0x5a5bfb['params']['id']}})[_0xbebb('0x1f')](handleEntityNotFound(_0x2db9b2,null))[_0xbebb('0x1f')](removeEntity(_0x2db9b2,null))['catch'](handleError(_0x2db9b2,null));};exports['getConfigurations']=function(_0x5e30c9,_0x5658a0,_0x472e3b){var _0x150890={};var _0x41cb5d={};var _0x38b0a8;var _0x430f9c;return db[_0xbebb('0x25')][_0xbebb('0x42')]({'where':{'id':_0x5e30c9[_0xbebb('0x40')]['id']}})['then'](handleEntityNotFound(_0x5658a0,null))[_0xbebb('0x1f')](function(_0x9689ef){if(_0x9689ef){_0x38b0a8=_0x9689ef;_0x41cb5d[_0xbebb('0x27')]=_[_0xbebb('0x28')](db[_0xbebb('0x43')][_0xbebb('0x44')]);_0x41cb5d['query']=_[_0xbebb('0x28')](_0x5e30c9['query']);_0x41cb5d[_0xbebb('0x2a')]=_[_0xbebb('0x2b')](_0x41cb5d['model'],_0x41cb5d[_0xbebb('0x29')]);_0x150890[_0xbebb('0x2c')]=_[_0xbebb('0x2b')](_0x41cb5d[_0xbebb('0x27')],qs[_0xbebb('0x2d')](_0x5e30c9[_0xbebb('0x29')][_0xbebb('0x2d')]));_0x150890[_0xbebb('0x2c')]=_0x150890[_0xbebb('0x2c')][_0xbebb('0x2e')]?_0x150890[_0xbebb('0x2c')]:_0x41cb5d[_0xbebb('0x27')];_0x150890['order']=qs[_0xbebb('0x31')](_0x5e30c9[_0xbebb('0x29')][_0xbebb('0x31')]);_0x150890['where']=qs['filters'](_['pick'](_0x5e30c9['query'],_0x41cb5d[_0xbebb('0x2a')]));if(_0x5e30c9['query']['filter']){_0x150890[_0xbebb('0x32')]=_[_0xbebb('0x3d')](_0x150890[_0xbebb('0x32')],{'$or':_[_0xbebb('0x24')](_0x150890[_0xbebb('0x2c')],function(_0x26b978){var _0x2357cc={};_0x2357cc[_0x26b978]={'$like':'%'+_0x5e30c9[_0xbebb('0x29')]['filter']+'%'};return _0x2357cc;})});}_0x150890=_[_0xbebb('0x3d')]({},_0x150890,_0x5e30c9['options']);return _0x38b0a8['getConfigurations'](_0x150890);}})[_0xbebb('0x1f')](function(_0x34e90e){if(_0x34e90e){_0x430f9c=_0x34e90e[_0xbebb('0x2e')];if(!_0x5e30c9[_0xbebb('0x29')]['hasOwnProperty']('nolimit')){_0x150890['limit']=qs[_0xbebb('0x17')](_0x5e30c9['query'][_0xbebb('0x17')]);_0x150890[_0xbebb('0x15')]=qs[_0xbebb('0x15')](_0x5e30c9[_0xbebb('0x29')][_0xbebb('0x15')]);}return _0x38b0a8[_0xbebb('0x45')](_0x150890);}})[_0xbebb('0x1f')](function(_0x250038){if(_0x250038){return _0x250038?{'count':_0x430f9c,'rows':_0x250038}:null;}})[_0xbebb('0x1f')](respondWithResult(_0x5658a0,null))[_0xbebb('0x3b')](handleError(_0x5658a0,null));};exports[_0xbebb('0x46')]=function(_0x1b9ed8,_0x32fee8,_0x149234){if(_0x1b9ed8[_0xbebb('0x3f')]['id']){delete _0x1b9ed8['body']['id'];}return db['SugarcrmAccount']['findOne']({'where':{'id':_0x1b9ed8[_0xbebb('0x40')]['id']}})[_0xbebb('0x1f')](handleEntityNotFound(_0x32fee8,null))[_0xbebb('0x1f')](function(_0x322c0b){if(_0x322c0b){_0x1b9ed8['body'][_0xbebb('0x47')]=_0x322c0b['id'];_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x48')]=integrations[_0xbebb('0x49')](_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x4a')],_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x26')]);_0x1b9ed8['body']['Descriptions']=integrations[_0xbebb('0x4b')](_0x1b9ed8['body'][_0xbebb('0x4a')],_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x26')]);return db[_0xbebb('0x43')][_0xbebb('0x3e')](_0x1b9ed8[_0xbebb('0x3f')],{'include':[{'model':db[_0xbebb('0x4c')],'as':_0xbebb('0x48')},{'model':db[_0xbebb('0x4c')],'as':_0xbebb('0x4d')}]});}return null;})[_0xbebb('0x1f')](respondWithResult(_0x32fee8,null))['catch'](handleError(_0x32fee8,null));};exports[_0xbebb('0x4e')]=function(_0x1cbd33,_0x4930c6,_0x448d6b){var _0x2333f1='';var _0x40f447=['id','name','assigned_user_id','created_by','description',_0xbebb('0x4f'),_0xbebb('0x50'),_0xbebb('0x51'),_0xbebb('0x52'),_0xbebb('0x53'),_0xbebb('0x54'),_0xbebb('0x55')];return db[_0xbebb('0x25')][_0xbebb('0x42')]({'where':{'id':_0x1cbd33['params']['id']},'attributes':['id',_0xbebb('0x56'),'password',_0xbebb('0x57')]})['then'](handleEntityNotFound(_0x4930c6,null))[_0xbebb('0x1f')](function(_0x245fb2){if(_0x245fb2){_0x2333f1=_0x245fb2[_0xbebb('0x57')];var _0x1589c3=_0x2333f1[_0xbebb('0x58')](-0x1);if(_0x1589c3==='/'){_0x2333f1=_0x2333f1['substring'](0x0,_0x2333f1['lastIndexOf'](_0x1589c3));}return rp({'method':'POST','uri':util[_0xbebb('0x59')](_0xbebb('0x5a'),_0x2333f1,_0xbebb('0x5b')),'json':!![],'form':{'method':'login','input_type':_0xbebb('0x5c'),'response_type':'JSON','rest_data':JSON[_0xbebb('0x5d')]({'user_auth':{'user_name':_0x245fb2['username'],'password':_0x245fb2[_0xbebb('0x5e')],'encryption':_0xbebb('0x5f')},'application':_0xbebb('0x60')})}});}})[_0xbebb('0x1f')](function(_0x404b6a){if(_0x404b6a&&_0x404b6a[_0xbebb('0x22')]!==_0xbebb('0x61')&&_0x404b6a['name']!=='Password\x20Expired'){return rp({'method':_0xbebb('0x62'),'uri':util[_0xbebb('0x59')](_0xbebb('0x5a'),_0x2333f1,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xbebb('0x63'),'input_type':_0xbebb('0x5c'),'response_type':_0xbebb('0x5c'),'rest_data':JSON[_0xbebb('0x5d')]({'session':_0x404b6a['id'],'module_name':_0xbebb('0x64')})}})[_0xbebb('0x1f')](function(_0x17474c){if(_0x17474c){var _0x541fac=_[_0xbebb('0x65')](_0x17474c[_0xbebb('0x66')]);_['remove'](_0x541fac,function(_0x3abd94){return _0x40f447['includes'](_0x3abd94['name']);});return{'count':_0x541fac['length'],'rows':_[_0xbebb('0x24')](_0x541fac,function(_0x172f93){return{'id':_0x172f93['name'],'name':_0x172f93[_0xbebb('0x67')],'custom':_[_0xbebb('0x68')](_0x172f93['name'],'_c')?!![]:![],'options':_0x172f93[_0xbebb('0x36')]?_[_0xbebb('0x24')](_[_0xbebb('0x65')](_0x172f93['options']),function(_0x16da08){return{'name':_0x16da08['value'],'value':_0x16da08[_0xbebb('0x22')]};}):[]};})};}})[_0xbebb('0x1f')](respondWithResult(_0x4930c6,null))['catch'](function(_0x1d6fbc){var _0x2345de=_0x1cbd33['query']['test']?0x1f4:_0x1d6fbc[_0xbebb('0x69')]||0x1f4;logger[_0xbebb('0x6a')](_0xbebb('0x6b'),_0xbebb('0x4e'),_0x2345de,JSON[_0xbebb('0x5d')](_0x1d6fbc));delete _0x1d6fbc[_0xbebb('0x22')];if(_0x2345de===0x191){_0x2345de=0x190;}_0x4930c6[_0xbebb('0x13')](_0x2345de)[_0xbebb('0x23')](_0x1cbd33[_0xbebb('0x29')][_0xbebb('0x6c')]?{'message':_0xbebb('0x6d'),'statusCode':_0x1d6fbc[_0xbebb('0x69')]}:_0x1d6fbc);});}else{var _0x132911=0x1f4;_0x4930c6['status'](_0x132911)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0x8921=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','type','VIRTUAL','merge','SugarcrmAccount','count','include','rows','show','params','keys','length','options','find','catch','create','body','destroy','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','SugarcrmField','Descriptions','getFields','description','date_start','duration_hours','duration_minutes','parent_type','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','login','JSON','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','format','get_module_fields','Calls','values','module_fields','includes','label','endsWith','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x11dc39,_0x491115){var _0x457277=function(_0x1d77cd){while(--_0x1d77cd){_0x11dc39['push'](_0x11dc39['shift']());}};_0x457277(++_0x491115);}(_0x8921,0x154));var _0x1892=function(_0x2717e2,_0x27ab63){_0x2717e2=_0x2717e2-0x0;var _0x4260bf=_0x8921[_0x2717e2];return _0x4260bf;};'use strict';var emlformat=require(_0x1892('0x0'));var rimraf=require(_0x1892('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1892('0x2'));var rp=require(_0x1892('0x3'));var moment=require(_0x1892('0x4'));var BPromise=require(_0x1892('0x5'));var Mustache=require(_0x1892('0x6'));var util=require(_0x1892('0x7'));var path=require(_0x1892('0x8'));var sox=require(_0x1892('0x9'));var csv=require(_0x1892('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1892('0xb'));var crypto=require(_0x1892('0xc'));var jsforce=require(_0x1892('0xd'));var deskjs=require(_0x1892('0xe'));var toCsv=require(_0x1892('0xa'));var querystring=require(_0x1892('0xf'));var Papa=require(_0x1892('0x10'));var Redis=require(_0x1892('0x11'));var authService=require(_0x1892('0x12'));var qs=require(_0x1892('0x13'));var as=require(_0x1892('0x14'));var hardwareService=require(_0x1892('0x15'));var logger=require(_0x1892('0x16'))('api');var utils=require(_0x1892('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1892('0x18'));var db=require(_0x1892('0x19'))['db'];var integrations=require(_0x1892('0x1a'));function respondWithStatusCode(_0xee8987,_0x4a7e7b){_0x4a7e7b=_0x4a7e7b||0xcc;return function(_0x3433f3){if(_0x3433f3){return _0xee8987[_0x1892('0x1b')](_0x4a7e7b);}return _0xee8987[_0x1892('0x1c')](_0x4a7e7b)[_0x1892('0x1d')]();};}function respondWithResult(_0xd3d1c7,_0xe99ef0){_0xe99ef0=_0xe99ef0||0xc8;return function(_0x3e4dbb){if(_0x3e4dbb){return _0xd3d1c7[_0x1892('0x1c')](_0xe99ef0)[_0x1892('0x1e')](_0x3e4dbb);}};}function respondWithFilteredResult(_0x41bc90,_0x140153){return function(_0x548ea2){if(_0x548ea2){var _0x24fda4=typeof _0x140153[_0x1892('0x1f')]===_0x1892('0x20')&&typeof _0x140153['limit']===_0x1892('0x20');var _0x99771a=_0x548ea2['count'];var _0x87c7a9=_0x24fda4?0x0:_0x140153[_0x1892('0x1f')];var _0x3287a9=_0x24fda4?_0x548ea2['count']:_0x140153[_0x1892('0x1f')]+_0x140153[_0x1892('0x21')];var _0x3309d9;if(_0x3287a9>=_0x99771a){_0x3287a9=_0x99771a;_0x3309d9=0xc8;}else{_0x3309d9=0xce;}_0x41bc90['status'](_0x3309d9);return _0x41bc90[_0x1892('0x22')](_0x1892('0x23'),_0x87c7a9+'-'+_0x3287a9+'/'+_0x99771a)['json'](_0x548ea2);}return null;};}function patchUpdates(_0xf2c401){return function(_0x99a6){try{jsonpatch['apply'](_0x99a6,_0xf2c401,!![]);}catch(_0x587069){return BPromise[_0x1892('0x24')](_0x587069);}return _0x99a6['save']();};}function saveUpdates(_0x3aec14,_0x5cb72f){return function(_0x33c0a0){if(_0x33c0a0){return _0x33c0a0[_0x1892('0x25')](_0x3aec14)[_0x1892('0x26')](function(_0x38fbfa){return _0x38fbfa;});}return null;};}function removeEntity(_0xfe645b,_0x50117a){return function(_0x38e604){if(_0x38e604){return _0x38e604['destroy']()[_0x1892('0x26')](function(){_0xfe645b[_0x1892('0x1c')](0xcc)[_0x1892('0x1d')]();});}};}function handleEntityNotFound(_0x5ea264,_0x98b849){return function(_0x2b1c2e){if(!_0x2b1c2e){_0x5ea264[_0x1892('0x1b')](0x194);}return _0x2b1c2e;};}function handleError(_0x3612aa,_0x31e146){_0x31e146=_0x31e146||0x1f4;return function(_0x282938){logger[_0x1892('0x27')](_0x282938[_0x1892('0x28')]);if(_0x282938['name']){delete _0x282938[_0x1892('0x29')];}_0x3612aa[_0x1892('0x1c')](_0x31e146)[_0x1892('0x2a')](_0x282938);};}exports[_0x1892('0x2b')]=function(_0x3c619e,_0x469fdf){var _0x5bc7ee={},_0x90ead7={},_0x3726ec={'count':0x0,'rows':[]};var _0x514d1b=_[_0x1892('0x2c')](db['SugarcrmAccount'][_0x1892('0x2d')],function(_0x2c72b5){return{'name':_0x2c72b5[_0x1892('0x2e')],'type':_0x2c72b5['type']['key']};});_0x90ead7[_0x1892('0x2f')]=_[_0x1892('0x2c')](_0x514d1b,_0x1892('0x29'));_0x90ead7[_0x1892('0x30')]=_['keys'](_0x3c619e[_0x1892('0x30')]);_0x90ead7['filters']=_[_0x1892('0x31')](_0x90ead7[_0x1892('0x2f')],_0x90ead7[_0x1892('0x30')]);_0x5bc7ee[_0x1892('0x32')]=_[_0x1892('0x31')](_0x90ead7['model'],qs[_0x1892('0x33')](_0x3c619e[_0x1892('0x30')][_0x1892('0x33')]));_0x5bc7ee[_0x1892('0x32')]=_0x5bc7ee[_0x1892('0x32')]['length']?_0x5bc7ee['attributes']:_0x90ead7[_0x1892('0x2f')];if(!_0x3c619e[_0x1892('0x30')][_0x1892('0x34')](_0x1892('0x35'))){_0x5bc7ee[_0x1892('0x21')]=qs['limit'](_0x3c619e[_0x1892('0x30')]['limit']);_0x5bc7ee[_0x1892('0x1f')]=qs['offset'](_0x3c619e[_0x1892('0x30')]['offset']);}_0x5bc7ee[_0x1892('0x36')]=qs['sort'](_0x3c619e['query'][_0x1892('0x37')]);_0x5bc7ee['where']=qs[_0x1892('0x38')](_[_0x1892('0x39')](_0x3c619e[_0x1892('0x30')],_0x90ead7[_0x1892('0x38')]),_0x514d1b);if(_0x3c619e[_0x1892('0x30')][_0x1892('0x3a')]){_0x5bc7ee[_0x1892('0x3b')]=_['merge'](_0x5bc7ee[_0x1892('0x3b')],{'$or':_[_0x1892('0x2c')](_0x514d1b,function(_0x1038d8){if(_0x1038d8[_0x1892('0x3c')]!==_0x1892('0x3d')){var _0x281be9={};_0x281be9[_0x1038d8[_0x1892('0x29')]]={'$like':'%'+_0x3c619e[_0x1892('0x30')]['filter']+'%'};return _0x281be9;}})});}_0x5bc7ee=_[_0x1892('0x3e')]({},_0x5bc7ee,_0x3c619e['options']);var _0x222ca6={'where':_0x5bc7ee[_0x1892('0x3b')]};return db[_0x1892('0x3f')][_0x1892('0x40')](_0x222ca6)['then'](function(_0x21ea93){_0x3726ec['count']=_0x21ea93;if(_0x3c619e[_0x1892('0x30')]['includeAll']){_0x5bc7ee[_0x1892('0x41')]=[{'all':!![]}];}return db[_0x1892('0x3f')]['findAll'](_0x5bc7ee);})[_0x1892('0x26')](function(_0x2604b9){_0x3726ec[_0x1892('0x42')]=_0x2604b9;return _0x3726ec;})[_0x1892('0x26')](respondWithFilteredResult(_0x469fdf,_0x5bc7ee))['catch'](handleError(_0x469fdf,null));};exports[_0x1892('0x43')]=function(_0x501f40,_0x144a85){var _0x15721d={'raw':![],'where':{'id':_0x501f40[_0x1892('0x44')]['id']}},_0x1364d9={};_0x1364d9[_0x1892('0x2f')]=_[_0x1892('0x45')](db['SugarcrmAccount'][_0x1892('0x2d')]);_0x1364d9[_0x1892('0x30')]=_[_0x1892('0x45')](_0x501f40[_0x1892('0x30')]);_0x1364d9[_0x1892('0x38')]=_[_0x1892('0x31')](_0x1364d9[_0x1892('0x2f')],_0x1364d9[_0x1892('0x30')]);_0x15721d[_0x1892('0x32')]=_['intersection'](_0x1364d9[_0x1892('0x2f')],qs[_0x1892('0x33')](_0x501f40[_0x1892('0x30')]['fields']));_0x15721d[_0x1892('0x32')]=_0x15721d[_0x1892('0x32')][_0x1892('0x46')]?_0x15721d[_0x1892('0x32')]:_0x1364d9['model'];if(_0x501f40[_0x1892('0x30')]['includeAll']){_0x15721d['include']=[{'all':!![]}];}_0x15721d=_['merge']({},_0x15721d,_0x501f40[_0x1892('0x47')]);return db[_0x1892('0x3f')][_0x1892('0x48')](_0x15721d)['then'](handleEntityNotFound(_0x144a85,null))[_0x1892('0x26')](respondWithResult(_0x144a85,null))[_0x1892('0x49')](handleError(_0x144a85,null));};exports[_0x1892('0x4a')]=function(_0x1f2070,_0x1e190b){return db['SugarcrmAccount']['create'](_0x1f2070[_0x1892('0x4b')],{})[_0x1892('0x26')](respondWithResult(_0x1e190b,0xc9))[_0x1892('0x49')](handleError(_0x1e190b,null));};exports['update']=function(_0x19fd22,_0xbeb035){if(_0x19fd22[_0x1892('0x4b')]['id']){delete _0x19fd22[_0x1892('0x4b')]['id'];}return db[_0x1892('0x3f')][_0x1892('0x48')]({'where':{'id':_0x19fd22[_0x1892('0x44')]['id']}})[_0x1892('0x26')](handleEntityNotFound(_0xbeb035,null))[_0x1892('0x26')](saveUpdates(_0x19fd22[_0x1892('0x4b')],null))[_0x1892('0x26')](respondWithResult(_0xbeb035,null))[_0x1892('0x49')](handleError(_0xbeb035,null));};exports[_0x1892('0x4c')]=function(_0x35a07d,_0x4ace71){return db[_0x1892('0x3f')][_0x1892('0x48')]({'where':{'id':_0x35a07d[_0x1892('0x44')]['id']}})[_0x1892('0x26')](handleEntityNotFound(_0x4ace71,null))['then'](removeEntity(_0x4ace71,null))[_0x1892('0x49')](handleError(_0x4ace71,null));};exports[_0x1892('0x4d')]=function(_0xf4c749,_0x590371,_0x526720){var _0x4471d6={};var _0x43104f={};var _0x4b8f38;var _0x3e19c5;return db[_0x1892('0x3f')][_0x1892('0x4e')]({'where':{'id':_0xf4c749[_0x1892('0x44')]['id']}})[_0x1892('0x26')](handleEntityNotFound(_0x590371,null))[_0x1892('0x26')](function(_0x446291){if(_0x446291){_0x4b8f38=_0x446291;_0x43104f[_0x1892('0x2f')]=_[_0x1892('0x45')](db[_0x1892('0x4f')][_0x1892('0x2d')]);_0x43104f['query']=_[_0x1892('0x45')](_0xf4c749[_0x1892('0x30')]);_0x43104f['filters']=_[_0x1892('0x31')](_0x43104f['model'],_0x43104f[_0x1892('0x30')]);_0x4471d6['attributes']=_[_0x1892('0x31')](_0x43104f['model'],qs[_0x1892('0x33')](_0xf4c749[_0x1892('0x30')][_0x1892('0x33')]));_0x4471d6[_0x1892('0x32')]=_0x4471d6['attributes']['length']?_0x4471d6[_0x1892('0x32')]:_0x43104f[_0x1892('0x2f')];_0x4471d6[_0x1892('0x36')]=qs[_0x1892('0x37')](_0xf4c749[_0x1892('0x30')][_0x1892('0x37')]);_0x4471d6[_0x1892('0x3b')]=qs[_0x1892('0x38')](_[_0x1892('0x39')](_0xf4c749[_0x1892('0x30')],_0x43104f[_0x1892('0x38')]));if(_0xf4c749['query'][_0x1892('0x3a')]){_0x4471d6[_0x1892('0x3b')]=_[_0x1892('0x3e')](_0x4471d6[_0x1892('0x3b')],{'$or':_['map'](_0x4471d6[_0x1892('0x32')],function(_0x5c17d8){var _0x389a27={};_0x389a27[_0x5c17d8]={'$like':'%'+_0xf4c749[_0x1892('0x30')][_0x1892('0x3a')]+'%'};return _0x389a27;})});}_0x4471d6=_['merge']({},_0x4471d6,_0xf4c749['options']);return _0x4b8f38[_0x1892('0x4d')](_0x4471d6);}})[_0x1892('0x26')](function(_0xee23e8){if(_0xee23e8){_0x3e19c5=_0xee23e8[_0x1892('0x46')];if(!_0xf4c749['query']['hasOwnProperty']('nolimit')){_0x4471d6['limit']=qs[_0x1892('0x21')](_0xf4c749[_0x1892('0x30')][_0x1892('0x21')]);_0x4471d6[_0x1892('0x1f')]=qs[_0x1892('0x1f')](_0xf4c749[_0x1892('0x30')][_0x1892('0x1f')]);}return _0x4b8f38['getConfigurations'](_0x4471d6);}})['then'](function(_0x52ead7){if(_0x52ead7){return _0x52ead7?{'count':_0x3e19c5,'rows':_0x52ead7}:null;}})['then'](respondWithResult(_0x590371,null))[_0x1892('0x49')](handleError(_0x590371,null));};exports[_0x1892('0x50')]=function(_0x28fab5,_0x331c17,_0x46cd1b){if(_0x28fab5[_0x1892('0x4b')]['id']){delete _0x28fab5[_0x1892('0x4b')]['id'];}return db[_0x1892('0x3f')][_0x1892('0x4e')]({'where':{'id':_0x28fab5[_0x1892('0x44')]['id']}})[_0x1892('0x26')](handleEntityNotFound(_0x331c17,null))[_0x1892('0x26')](function(_0x4da002){if(_0x4da002){_0x28fab5[_0x1892('0x4b')][_0x1892('0x51')]=_0x4da002['id'];_0x28fab5[_0x1892('0x4b')][_0x1892('0x52')]=integrations[_0x1892('0x53')](_0x28fab5['body'][_0x1892('0x54')],_0x28fab5[_0x1892('0x4b')][_0x1892('0x3c')]);_0x28fab5['body']['Descriptions']=integrations['getDescriptions'](_0x28fab5['body'][_0x1892('0x54')],_0x28fab5[_0x1892('0x4b')][_0x1892('0x3c')]);return db[_0x1892('0x4f')][_0x1892('0x4a')](_0x28fab5[_0x1892('0x4b')],{'include':[{'model':db[_0x1892('0x55')],'as':_0x1892('0x52')},{'model':db['SugarcrmField'],'as':_0x1892('0x56')}]});}return null;})['then'](respondWithResult(_0x331c17,null))[_0x1892('0x49')](handleError(_0x331c17,null));};exports[_0x1892('0x57')]=function(_0x239172,_0x4025df,_0x5179a3){var _0x51b0b1='';var _0x245e26=['id',_0x1892('0x29'),'assigned_user_id','created_by',_0x1892('0x58'),_0x1892('0x59'),_0x1892('0x5a'),_0x1892('0x5b'),'parent_id',_0x1892('0x5c'),'parent_name','direction'];return db['SugarcrmAccount'][_0x1892('0x4e')]({'where':{'id':_0x239172[_0x1892('0x44')]['id']},'attributes':['id','username',_0x1892('0x5d'),_0x1892('0x5e')]})['then'](handleEntityNotFound(_0x4025df,null))[_0x1892('0x26')](function(_0x24cf77){if(_0x24cf77){_0x51b0b1=_0x24cf77[_0x1892('0x5e')];var _0x42cc42=_0x51b0b1[_0x1892('0x5f')](-0x1);if(_0x42cc42==='/'){_0x51b0b1=_0x51b0b1[_0x1892('0x60')](0x0,_0x51b0b1[_0x1892('0x61')](_0x42cc42));}return rp({'method':_0x1892('0x62'),'uri':util['format'](_0x1892('0x63'),_0x51b0b1,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x1892('0x64'),'input_type':_0x1892('0x65'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x24cf77[_0x1892('0x66')],'password':_0x24cf77[_0x1892('0x5d')],'encryption':_0x1892('0x67')},'application':_0x1892('0x68')})}});}})[_0x1892('0x26')](function(_0x1e6ec2){if(_0x1e6ec2&&_0x1e6ec2[_0x1892('0x29')]!==_0x1892('0x69')&&_0x1e6ec2[_0x1892('0x29')]!==_0x1892('0x6a')){return rp({'method':'POST','uri':util[_0x1892('0x6b')](_0x1892('0x63'),_0x51b0b1,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x1892('0x6c'),'input_type':_0x1892('0x65'),'response_type':_0x1892('0x65'),'rest_data':JSON['stringify']({'session':_0x1e6ec2['id'],'module_name':_0x1892('0x6d')})}})[_0x1892('0x26')](function(_0x2369cf){if(_0x2369cf){var _0x3d9ef9=_[_0x1892('0x6e')](_0x2369cf[_0x1892('0x6f')]);_['remove'](_0x3d9ef9,function(_0xc03d6b){return _0x245e26[_0x1892('0x70')](_0xc03d6b['name']);});return{'count':_0x3d9ef9[_0x1892('0x46')],'rows':_[_0x1892('0x2c')](_0x3d9ef9,function(_0x219893){return{'id':_0x219893[_0x1892('0x29')],'name':_0x219893[_0x1892('0x71')],'custom':_[_0x1892('0x72')](_0x219893[_0x1892('0x29')],'_c')?!![]:![],'options':_0x219893['options']?_['map'](_[_0x1892('0x6e')](_0x219893[_0x1892('0x47')]),function(_0xba7914){return{'name':_0xba7914['value'],'value':_0xba7914[_0x1892('0x29')]};}):[]};})};}})[_0x1892('0x26')](respondWithResult(_0x4025df,null))['catch'](function(_0xf0cbaf){var _0x22f91a=_0x239172['query']['test']?0x1f4:_0xf0cbaf[_0x1892('0x73')]||0x1f4;logger[_0x1892('0x27')](_0x1892('0x74'),_0x1892('0x57'),_0x22f91a,JSON[_0x1892('0x75')](_0xf0cbaf));delete _0xf0cbaf['name'];if(_0x22f91a===0x191){_0x22f91a=0x190;}_0x4025df['status'](_0x22f91a)[_0x1892('0x2a')](_0x239172[_0x1892('0x30')][_0x1892('0x76')]?{'message':_0x1892('0x77'),'statusCode':_0xf0cbaf['statusCode']}:_0xf0cbaf);});}else{var _0x149142=0x1f4;_0x4025df[_0x1892('0x1c')](_0x149142)['send']({'message':_0x1892('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
index 56b802b..4940baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5baf=['rimraf','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','int_sugarcrm_accounts','lodash','api','moment','bluebird','request-promise','path'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x5baf,0xae));var _0xf5ba=function(_0x31ee01,_0x5e7d83){_0x31ee01=_0x31ee01-0x0;var _0x233870=_0x5baf[_0x31ee01];return _0x233870;};'use strict';var _=require(_0xf5ba('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf5ba('0x1'));var moment=require(_0xf5ba('0x2'));var BPromise=require(_0xf5ba('0x3'));var rp=require(_0xf5ba('0x4'));var fs=require('fs');var path=require(_0xf5ba('0x5'));var rimraf=require(_0xf5ba('0x6'));var config=require('../../config/environment');var attributes=require(_0xf5ba('0x7'));var integrations=require(_0xf5ba('0x8'));module[_0xf5ba('0x9')]=function(_0x5ef84e,_0x1a4db8){return _0x5ef84e[_0xf5ba('0xa')]('SugarcrmAccount',attributes,{'tableName':_0xf5ba('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb6a=['bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','SugarcrmAccount','int_sugarcrm_accounts','lodash','util'];(function(_0x1d6a82,_0x37c315){var _0x5834ac=function(_0x2402ba){while(--_0x2402ba){_0x1d6a82['push'](_0x1d6a82['shift']());}};_0x5834ac(++_0x37c315);}(_0xdb6a,0x102));var _0xadb6=function(_0x4c1072,_0x59cefd){_0x4c1072=_0x4c1072-0x0;var _0x317d26=_0xdb6a[_0x4c1072];return _0x317d26;};'use strict';var _=require(_0xadb6('0x0'));var util=require(_0xadb6('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xadb6('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xadb6('0x3'));var rimraf=require(_0xadb6('0x4'));var config=require(_0xadb6('0x5'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0xadb6('0x6'));module[_0xadb6('0x7')]=function(_0x5d4680,_0x5cd190){return _0x5d4680['define'](_0xadb6('0x8'),attributes,{'tableName':_0xadb6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8bf745c..6d5ce02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ea=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../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','code','message','result','SugarcrmAccount','raw','options','where','attributes','include','map','model','GetSugarcrmAccount','ShowSugarcrmAccount','find','catch'];(function(_0x2c3255,_0x4e00ae){var _0x282aba=function(_0x5721d5){while(--_0x5721d5){_0x2c3255['push'](_0x2c3255['shift']());}};_0x282aba(++_0x4e00ae);}(_0x95ea,0xb4));var _0xa95e=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0x95ea[_0x202c61];return _0x540691;};'use strict';var _=require(_0xa95e('0x0'));var util=require('util');var moment=require(_0xa95e('0x1'));var BPromise=require(_0xa95e('0x2'));var rs=require(_0xa95e('0x3'));var fs=require('fs');var Redis=require(_0xa95e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa95e('0x5'));var logger=require(_0xa95e('0x6'))(_0xa95e('0x7'));var config=require(_0xa95e('0x8'));var jayson=require(_0xa95e('0x9'));var client=jayson[_0xa95e('0xa')][_0xa95e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2166b5,_0x21ea9c,_0x1b1333){return new BPromise(function(_0x360100,_0x297d11){return client[_0xa95e('0xc')](_0x2166b5,_0x1b1333)[_0xa95e('0xd')](function(_0x1e6aae){logger[_0xa95e('0xe')](_0xa95e('0xf'),_0x21ea9c,_0xa95e('0x10'));logger[_0xa95e('0x11')](_0xa95e('0x12'),_0x21ea9c,'request\x20sent',JSON[_0xa95e('0x13')](_0x1e6aae));if(_0x1e6aae[_0xa95e('0x14')]){if(_0x1e6aae['error'][_0xa95e('0x15')]===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x21ea9c,_0x1e6aae[_0xa95e('0x14')]['message']);return _0x297d11(_0x1e6aae[_0xa95e('0x14')]['message']);}logger[_0xa95e('0x14')]('SugarcrmAccount,\x20%s,\x20%s',_0x21ea9c,_0x1e6aae['error'][_0xa95e('0x16')]);return _0x360100(_0x1e6aae['error'][_0xa95e('0x16')]);}else{logger[_0xa95e('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x21ea9c,_0xa95e('0x10'));_0x360100(_0x1e6aae[_0xa95e('0x17')][_0xa95e('0x16')]);}})['catch'](function(_0x48c10b){logger[_0xa95e('0x14')](_0xa95e('0xf'),_0x21ea9c,_0x48c10b);_0x297d11(_0x48c10b);});});}exports['GetSugarcrmAccount']=function(_0x5bdcb){var _0x2aafa5=this;return new Promise(function(_0x18dc25,_0x8098b2){return db[_0xa95e('0x18')]['findAll']({'raw':_0x5bdcb['options']?_0x5bdcb['options'][_0xa95e('0x19')]===undefined?!![]:![]:!![],'where':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb[_0xa95e('0x1a')][_0xa95e('0x1b')]||null:null,'attributes':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb[_0xa95e('0x1a')][_0xa95e('0x1c')]||null:null,'limit':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb['options']['limit']||null:null,'include':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb['options'][_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x5bdcb['options'][_0xa95e('0x1d')],function(_0x1a9f65){return{'model':db[_0x1a9f65[_0xa95e('0x1f')]],'as':_0x1a9f65['as'],'attributes':_0x1a9f65[_0xa95e('0x1c')],'include':_0x1a9f65[_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x1a9f65['include'],function(_0x2eaabd){return{'model':db[_0x2eaabd[_0xa95e('0x1f')]],'as':_0x2eaabd['as'],'attributes':_0x2eaabd[_0xa95e('0x1c')],'include':_0x2eaabd[_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x2eaabd[_0xa95e('0x1d')],function(_0x1f4096){return{'model':db[_0x1f4096['model']],'as':_0x1f4096['as'],'attributes':_0x1f4096[_0xa95e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa95e('0xd')](function(_0xa111f6){logger[_0xa95e('0xe')](_0xa95e('0x20'),_0x5bdcb);logger[_0xa95e('0x11')](_0xa95e('0x20'),_0x5bdcb,JSON[_0xa95e('0x13')](_0xa111f6));_0x18dc25(_0xa111f6);})['catch'](function(_0x52cf1c){logger[_0xa95e('0x14')](_0xa95e('0x20'),_0x52cf1c[_0xa95e('0x16')],_0x5bdcb);_0x8098b2(_0x2aafa5['error'](0x1f4,_0x52cf1c['message']));});});};exports[_0xa95e('0x21')]=function(_0x48effe){var _0x4170a7=this;return new Promise(function(_0x266554,_0x45a97a){return db[_0xa95e('0x18')][_0xa95e('0x22')]({'raw':_0x48effe[_0xa95e('0x1a')]?_0x48effe[_0xa95e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x48effe[_0xa95e('0x1a')]?_0x48effe[_0xa95e('0x1a')][_0xa95e('0x1b')]||null:null,'attributes':_0x48effe[_0xa95e('0x1a')]?_0x48effe[_0xa95e('0x1a')][_0xa95e('0x1c')]||null:null,'include':_0x48effe['options']?_0x48effe['options']['include']?_[_0xa95e('0x1e')](_0x48effe['options'][_0xa95e('0x1d')],function(_0x4789ce){return{'model':db[_0x4789ce[_0xa95e('0x1f')]],'as':_0x4789ce['as'],'attributes':_0x4789ce[_0xa95e('0x1c')],'include':_0x4789ce['include']?_['map'](_0x4789ce[_0xa95e('0x1d')],function(_0x4545e8){return{'model':db[_0x4545e8['model']],'as':_0x4545e8['as'],'attributes':_0x4545e8['attributes'],'include':_0x4545e8[_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x4545e8[_0xa95e('0x1d')],function(_0x4e9bbf){return{'model':db[_0x4e9bbf[_0xa95e('0x1f')]],'as':_0x4e9bbf['as'],'attributes':_0x4e9bbf[_0xa95e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa95e('0xd')](function(_0x52adba){logger[_0xa95e('0xe')](_0xa95e('0x21'),_0x48effe);logger['debug'](_0xa95e('0x21'),_0x48effe,JSON['stringify'](_0x52adba));_0x266554(_0x52adba);})[_0xa95e('0x23')](function(_0x2fece8){logger[_0xa95e('0x14')](_0xa95e('0x21'),_0x2fece8[_0xa95e('0x16')],_0x48effe);_0x45a97a(_0x4170a7[_0xa95e('0x14')](0x1f4,_0x2fece8['message']));});});};
\ No newline at end of file
+var _0x5a0c=['model','debug','ShowSugarcrmAccount','raw','where','lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','SugarcrmAccount,\x20%s,\x20%s','message','info','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','attributes','include','map'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x5a0c,0xaa));var _0xc5a0=function(_0x1dac3a,_0x43b028){_0x1dac3a=_0x1dac3a-0x0;var _0x1f60f5=_0x5a0c[_0x1dac3a];return _0x1f60f5;};'use strict';var _=require(_0xc5a0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc5a0('0x1'));var rs=require(_0xc5a0('0x2'));var fs=require('fs');var Redis=require(_0xc5a0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc5a0('0x4'));var logger=require('../../config/logger')(_0xc5a0('0x5'));var config=require(_0xc5a0('0x6'));var jayson=require(_0xc5a0('0x7'));var client=jayson[_0xc5a0('0x8')][_0xc5a0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x451390,_0x36cd3f,_0xf5f79c){return new BPromise(function(_0x2a2aa5,_0xc4b5cd){return client[_0xc5a0('0xa')](_0x451390,_0xf5f79c)[_0xc5a0('0xb')](function(_0x43b034){logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0x36cd3f,_0xc5a0('0xc'));logger['debug'](_0xc5a0('0xd'),_0x36cd3f,_0xc5a0('0xc'),JSON[_0xc5a0('0xe')](_0x43b034));if(_0x43b034[_0xc5a0('0xf')]){if(_0x43b034[_0xc5a0('0xf')]['code']===0x1f4){logger[_0xc5a0('0xf')](_0xc5a0('0x10'),_0x36cd3f,_0x43b034[_0xc5a0('0xf')]['message']);return _0xc4b5cd(_0x43b034[_0xc5a0('0xf')][_0xc5a0('0x11')]);}logger['error'](_0xc5a0('0x10'),_0x36cd3f,_0x43b034[_0xc5a0('0xf')][_0xc5a0('0x11')]);return _0x2a2aa5(_0x43b034[_0xc5a0('0xf')][_0xc5a0('0x11')]);}else{logger[_0xc5a0('0x12')](_0xc5a0('0x10'),_0x36cd3f,'request\x20sent');_0x2a2aa5(_0x43b034[_0xc5a0('0x13')]['message']);}})[_0xc5a0('0x14')](function(_0x321b28){logger[_0xc5a0('0xf')](_0xc5a0('0x10'),_0x36cd3f,_0x321b28);_0xc4b5cd(_0x321b28);});});}exports[_0xc5a0('0x15')]=function(_0x379fe4){var _0x415691=this;return new Promise(function(_0x1c6cc7,_0x22d4ce){return db[_0xc5a0('0x16')][_0xc5a0('0x17')]({'raw':_0x379fe4[_0xc5a0('0x18')]?_0x379fe4[_0xc5a0('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x379fe4[_0xc5a0('0x18')]?_0x379fe4[_0xc5a0('0x18')]['where']||null:null,'attributes':_0x379fe4[_0xc5a0('0x18')]?_0x379fe4[_0xc5a0('0x18')][_0xc5a0('0x19')]||null:null,'limit':_0x379fe4[_0xc5a0('0x18')]?_0x379fe4[_0xc5a0('0x18')]['limit']||null:null,'include':_0x379fe4[_0xc5a0('0x18')]?_0x379fe4['options']['include']?_['map'](_0x379fe4['options'][_0xc5a0('0x1a')],function(_0x60e687){return{'model':db[_0x60e687['model']],'as':_0x60e687['as'],'attributes':_0x60e687['attributes'],'include':_0x60e687['include']?_[_0xc5a0('0x1b')](_0x60e687['include'],function(_0x5c08b0){return{'model':db[_0x5c08b0[_0xc5a0('0x1c')]],'as':_0x5c08b0['as'],'attributes':_0x5c08b0[_0xc5a0('0x19')],'include':_0x5c08b0['include']?_[_0xc5a0('0x1b')](_0x5c08b0['include'],function(_0x409a9a){return{'model':db[_0x409a9a[_0xc5a0('0x1c')]],'as':_0x409a9a['as'],'attributes':_0x409a9a[_0xc5a0('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x319f15){logger[_0xc5a0('0x12')](_0xc5a0('0x15'),_0x379fe4);logger[_0xc5a0('0x1d')]('GetSugarcrmAccount',_0x379fe4,JSON[_0xc5a0('0xe')](_0x319f15));_0x1c6cc7(_0x319f15);})[_0xc5a0('0x14')](function(_0x15477){logger[_0xc5a0('0xf')](_0xc5a0('0x15'),_0x15477[_0xc5a0('0x11')],_0x379fe4);_0x22d4ce(_0x415691[_0xc5a0('0xf')](0x1f4,_0x15477[_0xc5a0('0x11')]));});});};exports[_0xc5a0('0x1e')]=function(_0x4b2032){var _0x3774ba=this;return new Promise(function(_0x4e0852,_0x1916eb){return db['SugarcrmAccount']['find']({'raw':_0x4b2032['options']?_0x4b2032[_0xc5a0('0x18')][_0xc5a0('0x1f')]===undefined?!![]:![]:!![],'where':_0x4b2032[_0xc5a0('0x18')]?_0x4b2032[_0xc5a0('0x18')][_0xc5a0('0x20')]||null:null,'attributes':_0x4b2032[_0xc5a0('0x18')]?_0x4b2032['options']['attributes']||null:null,'include':_0x4b2032[_0xc5a0('0x18')]?_0x4b2032[_0xc5a0('0x18')][_0xc5a0('0x1a')]?_[_0xc5a0('0x1b')](_0x4b2032[_0xc5a0('0x18')][_0xc5a0('0x1a')],function(_0x2e7105){return{'model':db[_0x2e7105[_0xc5a0('0x1c')]],'as':_0x2e7105['as'],'attributes':_0x2e7105[_0xc5a0('0x19')],'include':_0x2e7105[_0xc5a0('0x1a')]?_['map'](_0x2e7105['include'],function(_0x23e40e){return{'model':db[_0x23e40e[_0xc5a0('0x1c')]],'as':_0x23e40e['as'],'attributes':_0x23e40e['attributes'],'include':_0x23e40e[_0xc5a0('0x1a')]?_['map'](_0x23e40e[_0xc5a0('0x1a')],function(_0x382e1e){return{'model':db[_0x382e1e[_0xc5a0('0x1c')]],'as':_0x382e1e['as'],'attributes':_0x382e1e[_0xc5a0('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc5a0('0xb')](function(_0x3b9b8a){logger[_0xc5a0('0x12')](_0xc5a0('0x1e'),_0x4b2032);logger[_0xc5a0('0x1d')]('ShowSugarcrmAccount',_0x4b2032,JSON['stringify'](_0x3b9b8a));_0x4e0852(_0x3b9b8a);})[_0xc5a0('0x14')](function(_0x1e2e56){logger[_0xc5a0('0xf')]('ShowSugarcrmAccount',_0x1e2e56[_0xc5a0('0x11')],_0x4b2032);_0x1916eb(_0x3774ba['error'](0x1f4,_0x1e2e56[_0xc5a0('0x11')]));});});};
\ No newline at end of file
index 60cb76f..623ac28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x352c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x4507bd,_0x6c3799){var _0x4c37ae=function(_0x26df70){while(--_0x26df70){_0x4507bd['push'](_0x4507bd['shift']());}};_0x4c37ae(++_0x6c3799);}(_0x352c,0x11c));var _0xc352=function(_0x1b51a1,_0x36e565){_0x1b51a1=_0x1b51a1-0x0;var _0x3e48c8=_0x352c[_0x1b51a1];return _0x3e48c8;};'use strict';var multer=require(_0xc352('0x0'));var util=require(_0xc352('0x1'));var path=require('path');var timeout=require(_0xc352('0x2'));var express=require(_0xc352('0x3'));var router=express['Router']();var fs_extra=require(_0xc352('0x4'));var auth=require(_0xc352('0x5'));var interaction=require(_0xc352('0x6'));var config=require(_0xc352('0x7'));var controller=require('./intSugarcrmConfiguration.controller');router['get']('/',auth[_0xc352('0x8')](),controller[_0xc352('0x9')]);router[_0xc352('0xa')]('/:id',auth[_0xc352('0x8')](),controller['show']);router['get'](_0xc352('0xb'),auth[_0xc352('0x8')](),controller[_0xc352('0xc')]);router[_0xc352('0xa')](_0xc352('0xd'),auth[_0xc352('0x8')](),controller[_0xc352('0xe')]);router['get'](_0xc352('0xf'),auth['isAuthenticated'](),controller[_0xc352('0x10')]);router[_0xc352('0x11')]('/',auth[_0xc352('0x8')](),controller['create']);router[_0xc352('0x12')](_0xc352('0x13'),auth[_0xc352('0x8')](),controller[_0xc352('0x14')]);router[_0xc352('0x15')](_0xc352('0x13'),auth[_0xc352('0x8')](),controller[_0xc352('0x16')]);module[_0xc352('0x17')]=router;
\ No newline at end of file
+var _0xdcb5=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','/:id','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x426b0c,_0x29ed24){var _0x3723e0=function(_0x2b497a){while(--_0x2b497a){_0x426b0c['push'](_0x426b0c['shift']());}};_0x3723e0(++_0x29ed24);}(_0xdcb5,0x15a));var _0x5dcb=function(_0x216635,_0x4c5e33){_0x216635=_0x216635-0x0;var _0x18dab8=_0xdcb5[_0x216635];return _0x18dab8;};'use strict';var multer=require(_0x5dcb('0x0'));var util=require(_0x5dcb('0x1'));var path=require(_0x5dcb('0x2'));var timeout=require(_0x5dcb('0x3'));var express=require(_0x5dcb('0x4'));var router=express[_0x5dcb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5dcb('0x6'));var interaction=require(_0x5dcb('0x7'));var config=require(_0x5dcb('0x8'));var controller=require(_0x5dcb('0x9'));router[_0x5dcb('0xa')]('/',auth[_0x5dcb('0xb')](),controller[_0x5dcb('0xc')]);router[_0x5dcb('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5dcb('0xa')](_0x5dcb('0xd'),auth[_0x5dcb('0xb')](),controller[_0x5dcb('0xe')]);router[_0x5dcb('0xa')](_0x5dcb('0xf'),auth[_0x5dcb('0xb')](),controller[_0x5dcb('0x10')]);router[_0x5dcb('0xa')](_0x5dcb('0x11'),auth[_0x5dcb('0xb')](),controller[_0x5dcb('0x12')]);router[_0x5dcb('0x13')]('/',auth[_0x5dcb('0xb')](),controller[_0x5dcb('0x14')]);router['put'](_0x5dcb('0x15'),auth[_0x5dcb('0xb')](),controller[_0x5dcb('0x16')]);router[_0x5dcb('0x17')](_0x5dcb('0x15'),auth[_0x5dcb('0xb')](),controller[_0x5dcb('0x18')]);module['exports']=router;
\ No newline at end of file
index 0ae49cc..425947d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf62=['sequelize','STRING'];(function(_0x498334,_0x27b6fe){var _0x13bb70=function(_0x4087b1){while(--_0x4087b1){_0x498334['push'](_0x498334['shift']());}};_0x13bb70(++_0x27b6fe);}(_0xbf62,0x68));var _0x2bf6=function(_0x1fd84d,_0x386ebb){_0x1fd84d=_0x1fd84d-0x0;var _0xfe50df=_0xbf62[_0x1fd84d];return _0xfe50df;};'use strict';var Sequelize=require(_0x2bf6('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2bf6('0x1')]}};
\ No newline at end of file
+var _0x12aa=['sequelize','exports','STRING'];(function(_0x4fd7c7,_0xe4ee13){var _0x491fa0=function(_0x55b7f1){while(--_0x55b7f1){_0x4fd7c7['push'](_0x4fd7c7['shift']());}};_0x491fa0(++_0xe4ee13);}(_0x12aa,0x96));var _0xa12a=function(_0xc27bd7,_0x461c){_0xc27bd7=_0xc27bd7-0x0;var _0xf34f06=_0x12aa[_0xc27bd7];return _0xf34f06;};'use strict';var Sequelize=require(_0xa12a('0x0'));module[_0xa12a('0x1')]={'name':{'type':Sequelize[_0xa12a('0x2')]},'description':{'type':Sequelize[_0xa12a('0x2')]}};
\ No newline at end of file
index 89459ff..734a98f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01fb=['send','index','map','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','VIRTUAL','filter','options','SugarcrmConfiguration','includeAll','catch','show','params','length','include','merge','find','create','body','getFields','findOne','nolimit','SugarcrmField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','end','error','name'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x01fb,0x1c1));var _0xb01f=function(_0x29b8d6,_0x5976a7){_0x29b8d6=_0x29b8d6-0x0;var _0x22a503=_0x01fb[_0x29b8d6];return _0x22a503;};'use strict';var emlformat=require(_0xb01f('0x0'));var rimraf=require(_0xb01f('0x1'));var zipdir=require(_0xb01f('0x2'));var jsonpatch=require(_0xb01f('0x3'));var rp=require(_0xb01f('0x4'));var moment=require(_0xb01f('0x5'));var BPromise=require(_0xb01f('0x6'));var Mustache=require(_0xb01f('0x7'));var util=require('util');var path=require(_0xb01f('0x8'));var sox=require(_0xb01f('0x9'));var csv=require(_0xb01f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb01f('0xb'));var _=require(_0xb01f('0xc'));var squel=require(_0xb01f('0xd'));var crypto=require(_0xb01f('0xe'));var jsforce=require(_0xb01f('0xf'));var deskjs=require(_0xb01f('0x10'));var toCsv=require(_0xb01f('0xa'));var querystring=require('querystring');var Papa=require(_0xb01f('0x11'));var Redis=require(_0xb01f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb01f('0x13'));var as=require(_0xb01f('0x14'));var hardwareService=require(_0xb01f('0x15'));var logger=require(_0xb01f('0x16'))(_0xb01f('0x17'));var utils=require(_0xb01f('0x18'));var config=require(_0xb01f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xb01f('0x1a'))['db'];function respondWithStatusCode(_0x3601ce,_0x46d2f2){_0x46d2f2=_0x46d2f2||0xcc;return function(_0x4d5906){if(_0x4d5906){return _0x3601ce[_0xb01f('0x1b')](_0x46d2f2);}return _0x3601ce[_0xb01f('0x1c')](_0x46d2f2)['end']();};}function respondWithResult(_0x6da962,_0x5e486a){_0x5e486a=_0x5e486a||0xc8;return function(_0x33ed8a){if(_0x33ed8a){return _0x6da962[_0xb01f('0x1c')](_0x5e486a)[_0xb01f('0x1d')](_0x33ed8a);}};}function respondWithFilteredResult(_0x31d388,_0x18d113){return function(_0x3ee555){if(_0x3ee555){var _0x1510f6=typeof _0x18d113[_0xb01f('0x1e')]===_0xb01f('0x1f')&&typeof _0x18d113[_0xb01f('0x20')]===_0xb01f('0x1f');var _0x23c6c1=_0x3ee555[_0xb01f('0x21')];var _0x3c7b7c=_0x1510f6?0x0:_0x18d113[_0xb01f('0x1e')];var _0x455300=_0x1510f6?_0x3ee555['count']:_0x18d113[_0xb01f('0x1e')]+_0x18d113[_0xb01f('0x20')];var _0x4869ff;if(_0x455300>=_0x23c6c1){_0x455300=_0x23c6c1;_0x4869ff=0xc8;}else{_0x4869ff=0xce;}_0x31d388[_0xb01f('0x1c')](_0x4869ff);return _0x31d388[_0xb01f('0x22')]('Content-Range',_0x3c7b7c+'-'+_0x455300+'/'+_0x23c6c1)[_0xb01f('0x1d')](_0x3ee555);}return null;};}function patchUpdates(_0x3fbb8a){return function(_0xdb3992){try{jsonpatch[_0xb01f('0x23')](_0xdb3992,_0x3fbb8a,!![]);}catch(_0x2d3c57){return BPromise['reject'](_0x2d3c57);}return _0xdb3992[_0xb01f('0x24')]();};}function saveUpdates(_0x2ad310,_0x4f1cc4){return function(_0x14990a){if(_0x14990a){return _0x14990a[_0xb01f('0x25')](_0x2ad310)[_0xb01f('0x26')](function(_0x1e813a){return _0x1e813a;});}return null;};}function removeEntity(_0x3b743d,_0x4c8b99){return function(_0x1862e0){if(_0x1862e0){return _0x1862e0[_0xb01f('0x27')]()[_0xb01f('0x26')](function(){_0x3b743d[_0xb01f('0x1c')](0xcc)[_0xb01f('0x28')]();});}};}function handleEntityNotFound(_0x5929f2,_0x2a5881){return function(_0x26ef31){if(!_0x26ef31){_0x5929f2['sendStatus'](0x194);}return _0x26ef31;};}function handleError(_0x47d2b0,_0x5c60f2){_0x5c60f2=_0x5c60f2||0x1f4;return function(_0x1e6bc3){logger[_0xb01f('0x29')](_0x1e6bc3['stack']);if(_0x1e6bc3[_0xb01f('0x2a')]){delete _0x1e6bc3[_0xb01f('0x2a')];}_0x47d2b0[_0xb01f('0x1c')](_0x5c60f2)[_0xb01f('0x2b')](_0x1e6bc3);};}exports[_0xb01f('0x2c')]=function(_0x2f2229,_0x337304){var _0x3d24da={},_0x2c70f3={},_0x17f8ac={'count':0x0,'rows':[]};var _0x2c643a=_[_0xb01f('0x2d')](db['SugarcrmConfiguration'][_0xb01f('0x2e')],function(_0x23416d){return{'name':_0x23416d[_0xb01f('0x2f')],'type':_0x23416d[_0xb01f('0x30')][_0xb01f('0x31')]};});_0x2c70f3['model']=_[_0xb01f('0x2d')](_0x2c643a,_0xb01f('0x2a'));_0x2c70f3['query']=_[_0xb01f('0x32')](_0x2f2229[_0xb01f('0x33')]);_0x2c70f3['filters']=_[_0xb01f('0x34')](_0x2c70f3[_0xb01f('0x35')],_0x2c70f3[_0xb01f('0x33')]);_0x3d24da[_0xb01f('0x36')]=_[_0xb01f('0x34')](_0x2c70f3[_0xb01f('0x35')],qs[_0xb01f('0x37')](_0x2f2229[_0xb01f('0x33')]['fields']));_0x3d24da[_0xb01f('0x36')]=_0x3d24da[_0xb01f('0x36')]['length']?_0x3d24da['attributes']:_0x2c70f3['model'];if(!_0x2f2229[_0xb01f('0x33')][_0xb01f('0x38')]('nolimit')){_0x3d24da['limit']=qs[_0xb01f('0x20')](_0x2f2229['query'][_0xb01f('0x20')]);_0x3d24da['offset']=qs[_0xb01f('0x1e')](_0x2f2229['query'][_0xb01f('0x1e')]);}_0x3d24da[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x2f2229[_0xb01f('0x33')][_0xb01f('0x3a')]);_0x3d24da[_0xb01f('0x3b')]=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x2f2229[_0xb01f('0x33')],_0x2c70f3[_0xb01f('0x3c')]),_0x2c643a);if(_0x2f2229[_0xb01f('0x33')]['filter']){_0x3d24da[_0xb01f('0x3b')]=_['merge'](_0x3d24da['where'],{'$or':_[_0xb01f('0x2d')](_0x2c643a,function(_0x11b31e){if(_0x11b31e[_0xb01f('0x30')]!==_0xb01f('0x3e')){var _0x37c49b={};_0x37c49b[_0x11b31e[_0xb01f('0x2a')]]={'$like':'%'+_0x2f2229[_0xb01f('0x33')][_0xb01f('0x3f')]+'%'};return _0x37c49b;}})});}_0x3d24da=_['merge']({},_0x3d24da,_0x2f2229[_0xb01f('0x40')]);var _0x42eb9d={'where':_0x3d24da['where']};return db[_0xb01f('0x41')][_0xb01f('0x21')](_0x42eb9d)[_0xb01f('0x26')](function(_0x1e8ad2){_0x17f8ac['count']=_0x1e8ad2;if(_0x2f2229[_0xb01f('0x33')][_0xb01f('0x42')]){_0x3d24da['include']=[{'all':!![]}];}return db[_0xb01f('0x41')]['findAll'](_0x3d24da);})['then'](function(_0x1c080b){_0x17f8ac['rows']=_0x1c080b;return _0x17f8ac;})[_0xb01f('0x26')](respondWithFilteredResult(_0x337304,_0x3d24da))[_0xb01f('0x43')](handleError(_0x337304,null));};exports[_0xb01f('0x44')]=function(_0x1d864b,_0x2b251c){var _0x297648={'raw':![],'where':{'id':_0x1d864b[_0xb01f('0x45')]['id']}},_0x7198a3={};_0x7198a3['model']=_[_0xb01f('0x32')](db[_0xb01f('0x41')]['rawAttributes']);_0x7198a3[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x1d864b[_0xb01f('0x33')]);_0x7198a3[_0xb01f('0x3c')]=_[_0xb01f('0x34')](_0x7198a3[_0xb01f('0x35')],_0x7198a3[_0xb01f('0x33')]);_0x297648[_0xb01f('0x36')]=_['intersection'](_0x7198a3['model'],qs[_0xb01f('0x37')](_0x1d864b['query'][_0xb01f('0x37')]));_0x297648['attributes']=_0x297648['attributes'][_0xb01f('0x46')]?_0x297648['attributes']:_0x7198a3[_0xb01f('0x35')];if(_0x1d864b[_0xb01f('0x33')][_0xb01f('0x42')]){_0x297648[_0xb01f('0x47')]=[{'all':!![]}];}_0x297648=_[_0xb01f('0x48')]({},_0x297648,_0x1d864b[_0xb01f('0x40')]);return db[_0xb01f('0x41')][_0xb01f('0x49')](_0x297648)[_0xb01f('0x26')](handleEntityNotFound(_0x2b251c,null))[_0xb01f('0x26')](respondWithResult(_0x2b251c,null))[_0xb01f('0x43')](handleError(_0x2b251c,null));};exports[_0xb01f('0x4a')]=function(_0x1f50da,_0x11f32b){return db[_0xb01f('0x41')]['create'](_0x1f50da[_0xb01f('0x4b')],{})[_0xb01f('0x26')](respondWithResult(_0x11f32b,0xc9))[_0xb01f('0x43')](handleError(_0x11f32b,null));};exports[_0xb01f('0x25')]=function(_0x262add,_0x4b8c5b){if(_0x262add[_0xb01f('0x4b')]['id']){delete _0x262add[_0xb01f('0x4b')]['id'];}return db[_0xb01f('0x41')][_0xb01f('0x49')]({'where':{'id':_0x262add[_0xb01f('0x45')]['id']}})[_0xb01f('0x26')](handleEntityNotFound(_0x4b8c5b,null))[_0xb01f('0x26')](saveUpdates(_0x262add[_0xb01f('0x4b')],null))['then'](respondWithResult(_0x4b8c5b,null))[_0xb01f('0x43')](handleError(_0x4b8c5b,null));};exports[_0xb01f('0x27')]=function(_0x371b71,_0x379a43){return db[_0xb01f('0x41')]['find']({'where':{'id':_0x371b71['params']['id']}})['then'](handleEntityNotFound(_0x379a43,null))['then'](removeEntity(_0x379a43,null))['catch'](handleError(_0x379a43,null));};exports[_0xb01f('0x4c')]=function(_0x16304f,_0x1d5aa3,_0xd6e440){var _0x620b96={};var _0x10301e={};var _0x18a076;var _0x190f54;return db[_0xb01f('0x41')][_0xb01f('0x4d')]({'where':{'id':_0x16304f[_0xb01f('0x45')]['id']}})[_0xb01f('0x26')](handleEntityNotFound(_0x1d5aa3,null))[_0xb01f('0x26')](function(_0x538f1a){if(_0x538f1a){_0x18a076=_0x538f1a;_0x10301e[_0xb01f('0x35')]=_[_0xb01f('0x32')](db['SugarcrmField'][_0xb01f('0x2e')]);_0x10301e[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x16304f[_0xb01f('0x33')]);_0x10301e['filters']=_[_0xb01f('0x34')](_0x10301e['model'],_0x10301e[_0xb01f('0x33')]);_0x620b96['attributes']=_[_0xb01f('0x34')](_0x10301e['model'],qs[_0xb01f('0x37')](_0x16304f[_0xb01f('0x33')][_0xb01f('0x37')]));_0x620b96[_0xb01f('0x36')]=_0x620b96[_0xb01f('0x36')][_0xb01f('0x46')]?_0x620b96['attributes']:_0x10301e[_0xb01f('0x35')];_0x620b96[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x16304f['query'][_0xb01f('0x3a')]);_0x620b96['where']=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x16304f['query'],_0x10301e[_0xb01f('0x3c')]));if(_0x16304f['query'][_0xb01f('0x3f')]){_0x620b96[_0xb01f('0x3b')]=_[_0xb01f('0x48')](_0x620b96[_0xb01f('0x3b')],{'$or':_[_0xb01f('0x2d')](_0x620b96[_0xb01f('0x36')],function(_0x175540){var _0x47a60d={};_0x47a60d[_0x175540]={'$like':'%'+_0x16304f[_0xb01f('0x33')][_0xb01f('0x3f')]+'%'};return _0x47a60d;})});}_0x620b96=_[_0xb01f('0x48')]({},_0x620b96,_0x16304f[_0xb01f('0x40')]);return _0x18a076[_0xb01f('0x4c')](_0x620b96);}})[_0xb01f('0x26')](function(_0x52c3bc){if(_0x52c3bc){_0x190f54=_0x52c3bc[_0xb01f('0x46')];if(!_0x16304f['query'][_0xb01f('0x38')](_0xb01f('0x4e'))){_0x620b96[_0xb01f('0x20')]=qs[_0xb01f('0x20')](_0x16304f[_0xb01f('0x33')]['limit']);_0x620b96[_0xb01f('0x1e')]=qs['offset'](_0x16304f['query'][_0xb01f('0x1e')]);}return _0x18a076[_0xb01f('0x4c')](_0x620b96);}})[_0xb01f('0x26')](function(_0x789f88){if(_0x789f88){return _0x789f88?{'count':_0x190f54,'rows':_0x789f88}:null;}})[_0xb01f('0x26')](respondWithResult(_0x1d5aa3,null))[_0xb01f('0x43')](handleError(_0x1d5aa3,null));};exports['getSubjects']=function(_0x2dbe43,_0x7fc445,_0x1e57f8){var _0x371b41={};var _0x50fce4={};var _0x599f66;var _0x44d841;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x2dbe43[_0xb01f('0x45')]['id']}})['then'](handleEntityNotFound(_0x7fc445,null))['then'](function(_0x5aca10){if(_0x5aca10){_0x599f66=_0x5aca10;_0x50fce4['model']=_[_0xb01f('0x32')](db[_0xb01f('0x4f')][_0xb01f('0x2e')]);_0x50fce4[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x2dbe43[_0xb01f('0x33')]);_0x50fce4['filters']=_[_0xb01f('0x34')](_0x50fce4['model'],_0x50fce4[_0xb01f('0x33')]);_0x371b41[_0xb01f('0x36')]=_['intersection'](_0x50fce4[_0xb01f('0x35')],qs['fields'](_0x2dbe43['query'][_0xb01f('0x37')]));_0x371b41['attributes']=_0x371b41['attributes'][_0xb01f('0x46')]?_0x371b41['attributes']:_0x50fce4[_0xb01f('0x35')];_0x371b41[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x3a')]);_0x371b41[_0xb01f('0x3b')]=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x2dbe43[_0xb01f('0x33')],_0x50fce4[_0xb01f('0x3c')]));if(_0x2dbe43['query'][_0xb01f('0x3f')]){_0x371b41['where']=_[_0xb01f('0x48')](_0x371b41['where'],{'$or':_['map'](_0x371b41['attributes'],function(_0x2c4f99){var _0x4a16b7={};_0x4a16b7[_0x2c4f99]={'$like':'%'+_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x3f')]+'%'};return _0x4a16b7;})});}_0x371b41=_[_0xb01f('0x48')]({},_0x371b41,_0x2dbe43[_0xb01f('0x40')]);return _0x599f66[_0xb01f('0x50')](_0x371b41);}})[_0xb01f('0x26')](function(_0x5020e6){if(_0x5020e6){_0x44d841=_0x5020e6['length'];if(!_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x38')]('nolimit')){_0x371b41['limit']=qs['limit'](_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x20')]);_0x371b41[_0xb01f('0x1e')]=qs[_0xb01f('0x1e')](_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x1e')]);}return _0x599f66[_0xb01f('0x50')](_0x371b41);}})['then'](function(_0x55110e){if(_0x55110e){return _0x55110e?{'count':_0x44d841,'rows':_0x55110e}:null;}})[_0xb01f('0x26')](respondWithResult(_0x7fc445,null))['catch'](handleError(_0x7fc445,null));};exports['getDescriptions']=function(_0x38b68f,_0x36009a,_0x55f8d4){var _0xa1d4de={};var _0x4d38bd={};var _0x37faf2;var _0x2e628c;return db['SugarcrmConfiguration'][_0xb01f('0x4d')]({'where':{'id':_0x38b68f[_0xb01f('0x45')]['id']}})[_0xb01f('0x26')](handleEntityNotFound(_0x36009a,null))['then'](function(_0x2c4945){if(_0x2c4945){_0x37faf2=_0x2c4945;_0x4d38bd['model']=_[_0xb01f('0x32')](db[_0xb01f('0x4f')][_0xb01f('0x2e')]);_0x4d38bd[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x38b68f[_0xb01f('0x33')]);_0x4d38bd['filters']=_[_0xb01f('0x34')](_0x4d38bd[_0xb01f('0x35')],_0x4d38bd[_0xb01f('0x33')]);_0xa1d4de[_0xb01f('0x36')]=_[_0xb01f('0x34')](_0x4d38bd[_0xb01f('0x35')],qs['fields'](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x37')]));_0xa1d4de[_0xb01f('0x36')]=_0xa1d4de[_0xb01f('0x36')]['length']?_0xa1d4de['attributes']:_0x4d38bd[_0xb01f('0x35')];_0xa1d4de[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x3a')]);_0xa1d4de['where']=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x38b68f['query'],_0x4d38bd['filters']));if(_0x38b68f[_0xb01f('0x33')][_0xb01f('0x3f')]){_0xa1d4de[_0xb01f('0x3b')]=_['merge'](_0xa1d4de[_0xb01f('0x3b')],{'$or':_[_0xb01f('0x2d')](_0xa1d4de[_0xb01f('0x36')],function(_0x119110){var _0x41d5ab={};_0x41d5ab[_0x119110]={'$like':'%'+_0x38b68f['query']['filter']+'%'};return _0x41d5ab;})});}_0xa1d4de=_[_0xb01f('0x48')]({},_0xa1d4de,_0x38b68f[_0xb01f('0x40')]);return _0x37faf2['getDescriptions'](_0xa1d4de);}})[_0xb01f('0x26')](function(_0x1b1bea){if(_0x1b1bea){_0x2e628c=_0x1b1bea[_0xb01f('0x46')];if(!_0x38b68f[_0xb01f('0x33')][_0xb01f('0x38')]('nolimit')){_0xa1d4de[_0xb01f('0x20')]=qs[_0xb01f('0x20')](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x20')]);_0xa1d4de[_0xb01f('0x1e')]=qs[_0xb01f('0x1e')](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x1e')]);}return _0x37faf2[_0xb01f('0x51')](_0xa1d4de);}})[_0xb01f('0x26')](function(_0x528666){if(_0x528666){return _0x528666?{'count':_0x2e628c,'rows':_0x528666}:null;}})[_0xb01f('0x26')](respondWithResult(_0x36009a,null))['catch'](handleError(_0x36009a,null));};
\ No newline at end of file
+var _0x4c1a=['catch','create','body','getFields','SugarcrmField','sort','pick','hasOwnProperty','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','name','index','map','SugarcrmConfiguration','rawAttributes','fieldName','key','model','keys','query','filters','attributes','fields','nolimit','order','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','intersection','length','find'];(function(_0x184969,_0x4b1534){var _0x32ef98=function(_0x55f2c9){while(--_0x55f2c9){_0x184969['push'](_0x184969['shift']());}};_0x32ef98(++_0x4b1534);}(_0x4c1a,0x1df));var _0xa4c1=function(_0x3ae889,_0x2611a8){_0x3ae889=_0x3ae889-0x0;var _0x941421=_0x4c1a[_0x3ae889];return _0x941421;};'use strict';var emlformat=require(_0xa4c1('0x0'));var rimraf=require(_0xa4c1('0x1'));var zipdir=require(_0xa4c1('0x2'));var jsonpatch=require(_0xa4c1('0x3'));var rp=require('request-promise');var moment=require(_0xa4c1('0x4'));var BPromise=require(_0xa4c1('0x5'));var Mustache=require('mustache');var util=require(_0xa4c1('0x6'));var path=require(_0xa4c1('0x7'));var sox=require(_0xa4c1('0x8'));var csv=require(_0xa4c1('0x9'));var ejs=require(_0xa4c1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa4c1('0xb'));var squel=require(_0xa4c1('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa4c1('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa4c1('0xe'));var Papa=require(_0xa4c1('0xf'));var Redis=require(_0xa4c1('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa4c1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa4c1('0x12'));var logger=require(_0xa4c1('0x13'))('api');var utils=require(_0xa4c1('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa4c1('0x15'));var db=require(_0xa4c1('0x16'))['db'];function respondWithStatusCode(_0x551a84,_0x593abf){_0x593abf=_0x593abf||0xcc;return function(_0x30884f){if(_0x30884f){return _0x551a84[_0xa4c1('0x17')](_0x593abf);}return _0x551a84[_0xa4c1('0x18')](_0x593abf)[_0xa4c1('0x19')]();};}function respondWithResult(_0x3ad9b2,_0x11fa8c){_0x11fa8c=_0x11fa8c||0xc8;return function(_0x2806a6){if(_0x2806a6){return _0x3ad9b2[_0xa4c1('0x18')](_0x11fa8c)['json'](_0x2806a6);}};}function respondWithFilteredResult(_0x10b6a0,_0xcece96){return function(_0x43a661){if(_0x43a661){var _0x2e3226=typeof _0xcece96[_0xa4c1('0x1a')]===_0xa4c1('0x1b')&&typeof _0xcece96[_0xa4c1('0x1c')]===_0xa4c1('0x1b');var _0x490e5d=_0x43a661[_0xa4c1('0x1d')];var _0x2ce55d=_0x2e3226?0x0:_0xcece96[_0xa4c1('0x1a')];var _0x20479a=_0x2e3226?_0x43a661['count']:_0xcece96[_0xa4c1('0x1a')]+_0xcece96[_0xa4c1('0x1c')];var _0x21277e;if(_0x20479a>=_0x490e5d){_0x20479a=_0x490e5d;_0x21277e=0xc8;}else{_0x21277e=0xce;}_0x10b6a0[_0xa4c1('0x18')](_0x21277e);return _0x10b6a0[_0xa4c1('0x1e')](_0xa4c1('0x1f'),_0x2ce55d+'-'+_0x20479a+'/'+_0x490e5d)[_0xa4c1('0x20')](_0x43a661);}return null;};}function patchUpdates(_0x529e87){return function(_0xfe81ac){try{jsonpatch['apply'](_0xfe81ac,_0x529e87,!![]);}catch(_0x18a144){return BPromise[_0xa4c1('0x21')](_0x18a144);}return _0xfe81ac[_0xa4c1('0x22')]();};}function saveUpdates(_0x3f1f65,_0x64bf64){return function(_0x2ae0aa){if(_0x2ae0aa){return _0x2ae0aa[_0xa4c1('0x23')](_0x3f1f65)[_0xa4c1('0x24')](function(_0x592941){return _0x592941;});}return null;};}function removeEntity(_0x1167c2,_0x13e6e7){return function(_0x437d6f){if(_0x437d6f){return _0x437d6f[_0xa4c1('0x25')]()['then'](function(){_0x1167c2[_0xa4c1('0x18')](0xcc)[_0xa4c1('0x19')]();});}};}function handleEntityNotFound(_0x44081b,_0x7c3bea){return function(_0x553324){if(!_0x553324){_0x44081b[_0xa4c1('0x17')](0x194);}return _0x553324;};}function handleError(_0x5d4a5b,_0x440381){_0x440381=_0x440381||0x1f4;return function(_0x4288ea){logger[_0xa4c1('0x26')](_0x4288ea['stack']);if(_0x4288ea[_0xa4c1('0x27')]){delete _0x4288ea[_0xa4c1('0x27')];}_0x5d4a5b[_0xa4c1('0x18')](_0x440381)['send'](_0x4288ea);};}exports[_0xa4c1('0x28')]=function(_0xe18d16,_0x528f21){var _0x47916e={},_0x544726={},_0x4270ba={'count':0x0,'rows':[]};var _0x5c7e5a=_[_0xa4c1('0x29')](db[_0xa4c1('0x2a')][_0xa4c1('0x2b')],function(_0x29bc38){return{'name':_0x29bc38[_0xa4c1('0x2c')],'type':_0x29bc38['type'][_0xa4c1('0x2d')]};});_0x544726[_0xa4c1('0x2e')]=_[_0xa4c1('0x29')](_0x5c7e5a,_0xa4c1('0x27'));_0x544726['query']=_[_0xa4c1('0x2f')](_0xe18d16[_0xa4c1('0x30')]);_0x544726[_0xa4c1('0x31')]=_['intersection'](_0x544726[_0xa4c1('0x2e')],_0x544726['query']);_0x47916e[_0xa4c1('0x32')]=_['intersection'](_0x544726['model'],qs[_0xa4c1('0x33')](_0xe18d16[_0xa4c1('0x30')][_0xa4c1('0x33')]));_0x47916e[_0xa4c1('0x32')]=_0x47916e[_0xa4c1('0x32')]['length']?_0x47916e[_0xa4c1('0x32')]:_0x544726[_0xa4c1('0x2e')];if(!_0xe18d16[_0xa4c1('0x30')]['hasOwnProperty'](_0xa4c1('0x34'))){_0x47916e['limit']=qs[_0xa4c1('0x1c')](_0xe18d16[_0xa4c1('0x30')][_0xa4c1('0x1c')]);_0x47916e['offset']=qs[_0xa4c1('0x1a')](_0xe18d16[_0xa4c1('0x30')][_0xa4c1('0x1a')]);}_0x47916e[_0xa4c1('0x35')]=qs['sort'](_0xe18d16[_0xa4c1('0x30')]['sort']);_0x47916e[_0xa4c1('0x36')]=qs[_0xa4c1('0x31')](_['pick'](_0xe18d16[_0xa4c1('0x30')],_0x544726['filters']),_0x5c7e5a);if(_0xe18d16['query']['filter']){_0x47916e[_0xa4c1('0x36')]=_[_0xa4c1('0x37')](_0x47916e[_0xa4c1('0x36')],{'$or':_['map'](_0x5c7e5a,function(_0x1809e8){if(_0x1809e8['type']!==_0xa4c1('0x38')){var _0x2237f1={};_0x2237f1[_0x1809e8[_0xa4c1('0x27')]]={'$like':'%'+_0xe18d16[_0xa4c1('0x30')][_0xa4c1('0x39')]+'%'};return _0x2237f1;}})});}_0x47916e=_[_0xa4c1('0x37')]({},_0x47916e,_0xe18d16[_0xa4c1('0x3a')]);var _0x1cebac={'where':_0x47916e[_0xa4c1('0x36')]};return db[_0xa4c1('0x2a')][_0xa4c1('0x1d')](_0x1cebac)[_0xa4c1('0x24')](function(_0x554a67){_0x4270ba[_0xa4c1('0x1d')]=_0x554a67;if(_0xe18d16[_0xa4c1('0x30')][_0xa4c1('0x3b')]){_0x47916e[_0xa4c1('0x3c')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xa4c1('0x3d')](_0x47916e);})[_0xa4c1('0x24')](function(_0x102740){_0x4270ba['rows']=_0x102740;return _0x4270ba;})[_0xa4c1('0x24')](respondWithFilteredResult(_0x528f21,_0x47916e))['catch'](handleError(_0x528f21,null));};exports[_0xa4c1('0x3e')]=function(_0xdf6102,_0x1e20d8){var _0x5b2e88={'raw':![],'where':{'id':_0xdf6102[_0xa4c1('0x3f')]['id']}},_0x265e48={};_0x265e48[_0xa4c1('0x2e')]=_['keys'](db[_0xa4c1('0x2a')]['rawAttributes']);_0x265e48[_0xa4c1('0x30')]=_['keys'](_0xdf6102[_0xa4c1('0x30')]);_0x265e48[_0xa4c1('0x31')]=_[_0xa4c1('0x40')](_0x265e48[_0xa4c1('0x2e')],_0x265e48[_0xa4c1('0x30')]);_0x5b2e88['attributes']=_[_0xa4c1('0x40')](_0x265e48[_0xa4c1('0x2e')],qs[_0xa4c1('0x33')](_0xdf6102[_0xa4c1('0x30')][_0xa4c1('0x33')]));_0x5b2e88[_0xa4c1('0x32')]=_0x5b2e88[_0xa4c1('0x32')][_0xa4c1('0x41')]?_0x5b2e88[_0xa4c1('0x32')]:_0x265e48[_0xa4c1('0x2e')];if(_0xdf6102[_0xa4c1('0x30')]['includeAll']){_0x5b2e88[_0xa4c1('0x3c')]=[{'all':!![]}];}_0x5b2e88=_['merge']({},_0x5b2e88,_0xdf6102[_0xa4c1('0x3a')]);return db[_0xa4c1('0x2a')][_0xa4c1('0x42')](_0x5b2e88)[_0xa4c1('0x24')](handleEntityNotFound(_0x1e20d8,null))['then'](respondWithResult(_0x1e20d8,null))[_0xa4c1('0x43')](handleError(_0x1e20d8,null));};exports[_0xa4c1('0x44')]=function(_0x494e14,_0x1c8745){return db[_0xa4c1('0x2a')]['create'](_0x494e14[_0xa4c1('0x45')],{})[_0xa4c1('0x24')](respondWithResult(_0x1c8745,0xc9))[_0xa4c1('0x43')](handleError(_0x1c8745,null));};exports[_0xa4c1('0x23')]=function(_0x3f7d9a,_0x446d3e){if(_0x3f7d9a[_0xa4c1('0x45')]['id']){delete _0x3f7d9a['body']['id'];}return db['SugarcrmConfiguration'][_0xa4c1('0x42')]({'where':{'id':_0x3f7d9a['params']['id']}})[_0xa4c1('0x24')](handleEntityNotFound(_0x446d3e,null))[_0xa4c1('0x24')](saveUpdates(_0x3f7d9a[_0xa4c1('0x45')],null))[_0xa4c1('0x24')](respondWithResult(_0x446d3e,null))[_0xa4c1('0x43')](handleError(_0x446d3e,null));};exports['destroy']=function(_0x1f32f0,_0x343af0){return db[_0xa4c1('0x2a')][_0xa4c1('0x42')]({'where':{'id':_0x1f32f0['params']['id']}})[_0xa4c1('0x24')](handleEntityNotFound(_0x343af0,null))['then'](removeEntity(_0x343af0,null))[_0xa4c1('0x43')](handleError(_0x343af0,null));};exports[_0xa4c1('0x46')]=function(_0x567a87,_0x56e90f,_0x168505){var _0x4c1870={};var _0x634f46={};var _0x4913c6;var _0x58e8fd;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x567a87['params']['id']}})['then'](handleEntityNotFound(_0x56e90f,null))[_0xa4c1('0x24')](function(_0x31fed1){if(_0x31fed1){_0x4913c6=_0x31fed1;_0x634f46[_0xa4c1('0x2e')]=_[_0xa4c1('0x2f')](db[_0xa4c1('0x47')][_0xa4c1('0x2b')]);_0x634f46[_0xa4c1('0x30')]=_[_0xa4c1('0x2f')](_0x567a87['query']);_0x634f46[_0xa4c1('0x31')]=_['intersection'](_0x634f46[_0xa4c1('0x2e')],_0x634f46['query']);_0x4c1870[_0xa4c1('0x32')]=_[_0xa4c1('0x40')](_0x634f46[_0xa4c1('0x2e')],qs[_0xa4c1('0x33')](_0x567a87['query'][_0xa4c1('0x33')]));_0x4c1870[_0xa4c1('0x32')]=_0x4c1870['attributes']['length']?_0x4c1870['attributes']:_0x634f46['model'];_0x4c1870[_0xa4c1('0x35')]=qs[_0xa4c1('0x48')](_0x567a87[_0xa4c1('0x30')]['sort']);_0x4c1870[_0xa4c1('0x36')]=qs[_0xa4c1('0x31')](_[_0xa4c1('0x49')](_0x567a87[_0xa4c1('0x30')],_0x634f46[_0xa4c1('0x31')]));if(_0x567a87['query'][_0xa4c1('0x39')]){_0x4c1870[_0xa4c1('0x36')]=_[_0xa4c1('0x37')](_0x4c1870[_0xa4c1('0x36')],{'$or':_[_0xa4c1('0x29')](_0x4c1870[_0xa4c1('0x32')],function(_0x4ddefc){var _0x11ac30={};_0x11ac30[_0x4ddefc]={'$like':'%'+_0x567a87[_0xa4c1('0x30')]['filter']+'%'};return _0x11ac30;})});}_0x4c1870=_[_0xa4c1('0x37')]({},_0x4c1870,_0x567a87['options']);return _0x4913c6['getFields'](_0x4c1870);}})[_0xa4c1('0x24')](function(_0x47620d){if(_0x47620d){_0x58e8fd=_0x47620d[_0xa4c1('0x41')];if(!_0x567a87['query'][_0xa4c1('0x4a')](_0xa4c1('0x34'))){_0x4c1870[_0xa4c1('0x1c')]=qs[_0xa4c1('0x1c')](_0x567a87['query'][_0xa4c1('0x1c')]);_0x4c1870['offset']=qs[_0xa4c1('0x1a')](_0x567a87[_0xa4c1('0x30')]['offset']);}return _0x4913c6['getFields'](_0x4c1870);}})['then'](function(_0x4fc371){if(_0x4fc371){return _0x4fc371?{'count':_0x58e8fd,'rows':_0x4fc371}:null;}})[_0xa4c1('0x24')](respondWithResult(_0x56e90f,null))['catch'](handleError(_0x56e90f,null));};exports[_0xa4c1('0x4b')]=function(_0x1ffd82,_0x309927,_0x1d697a){var _0x537e3f={};var _0x570830={};var _0x19f93c;var _0x241cf7;return db[_0xa4c1('0x2a')][_0xa4c1('0x4c')]({'where':{'id':_0x1ffd82['params']['id']}})['then'](handleEntityNotFound(_0x309927,null))[_0xa4c1('0x24')](function(_0x24a7d5){if(_0x24a7d5){_0x19f93c=_0x24a7d5;_0x570830[_0xa4c1('0x2e')]=_[_0xa4c1('0x2f')](db['SugarcrmField'][_0xa4c1('0x2b')]);_0x570830['query']=_[_0xa4c1('0x2f')](_0x1ffd82[_0xa4c1('0x30')]);_0x570830[_0xa4c1('0x31')]=_[_0xa4c1('0x40')](_0x570830[_0xa4c1('0x2e')],_0x570830['query']);_0x537e3f[_0xa4c1('0x32')]=_[_0xa4c1('0x40')](_0x570830['model'],qs[_0xa4c1('0x33')](_0x1ffd82['query']['fields']));_0x537e3f[_0xa4c1('0x32')]=_0x537e3f[_0xa4c1('0x32')][_0xa4c1('0x41')]?_0x537e3f[_0xa4c1('0x32')]:_0x570830['model'];_0x537e3f['order']=qs[_0xa4c1('0x48')](_0x1ffd82[_0xa4c1('0x30')]['sort']);_0x537e3f[_0xa4c1('0x36')]=qs[_0xa4c1('0x31')](_['pick'](_0x1ffd82[_0xa4c1('0x30')],_0x570830[_0xa4c1('0x31')]));if(_0x1ffd82[_0xa4c1('0x30')][_0xa4c1('0x39')]){_0x537e3f[_0xa4c1('0x36')]=_[_0xa4c1('0x37')](_0x537e3f[_0xa4c1('0x36')],{'$or':_['map'](_0x537e3f[_0xa4c1('0x32')],function(_0x3f8d06){var _0x171096={};_0x171096[_0x3f8d06]={'$like':'%'+_0x1ffd82['query'][_0xa4c1('0x39')]+'%'};return _0x171096;})});}_0x537e3f=_[_0xa4c1('0x37')]({},_0x537e3f,_0x1ffd82[_0xa4c1('0x3a')]);return _0x19f93c[_0xa4c1('0x4b')](_0x537e3f);}})['then'](function(_0x394544){if(_0x394544){_0x241cf7=_0x394544[_0xa4c1('0x41')];if(!_0x1ffd82[_0xa4c1('0x30')]['hasOwnProperty'](_0xa4c1('0x34'))){_0x537e3f[_0xa4c1('0x1c')]=qs[_0xa4c1('0x1c')](_0x1ffd82[_0xa4c1('0x30')][_0xa4c1('0x1c')]);_0x537e3f[_0xa4c1('0x1a')]=qs[_0xa4c1('0x1a')](_0x1ffd82[_0xa4c1('0x30')][_0xa4c1('0x1a')]);}return _0x19f93c[_0xa4c1('0x4b')](_0x537e3f);}})[_0xa4c1('0x24')](function(_0x454c88){if(_0x454c88){return _0x454c88?{'count':_0x241cf7,'rows':_0x454c88}:null;}})[_0xa4c1('0x24')](respondWithResult(_0x309927,null))[_0xa4c1('0x43')](handleError(_0x309927,null));};exports[_0xa4c1('0x4d')]=function(_0x4057fd,_0xda9772,_0x1a606d){var _0x59afe9={};var _0x5e9df3={};var _0x447644;var _0x45435e;return db[_0xa4c1('0x2a')][_0xa4c1('0x4c')]({'where':{'id':_0x4057fd['params']['id']}})[_0xa4c1('0x24')](handleEntityNotFound(_0xda9772,null))[_0xa4c1('0x24')](function(_0x144ff3){if(_0x144ff3){_0x447644=_0x144ff3;_0x5e9df3['model']=_[_0xa4c1('0x2f')](db[_0xa4c1('0x47')][_0xa4c1('0x2b')]);_0x5e9df3[_0xa4c1('0x30')]=_['keys'](_0x4057fd[_0xa4c1('0x30')]);_0x5e9df3['filters']=_['intersection'](_0x5e9df3[_0xa4c1('0x2e')],_0x5e9df3[_0xa4c1('0x30')]);_0x59afe9['attributes']=_[_0xa4c1('0x40')](_0x5e9df3[_0xa4c1('0x2e')],qs[_0xa4c1('0x33')](_0x4057fd[_0xa4c1('0x30')]['fields']));_0x59afe9[_0xa4c1('0x32')]=_0x59afe9[_0xa4c1('0x32')][_0xa4c1('0x41')]?_0x59afe9['attributes']:_0x5e9df3[_0xa4c1('0x2e')];_0x59afe9[_0xa4c1('0x35')]=qs[_0xa4c1('0x48')](_0x4057fd[_0xa4c1('0x30')][_0xa4c1('0x48')]);_0x59afe9[_0xa4c1('0x36')]=qs['filters'](_[_0xa4c1('0x49')](_0x4057fd[_0xa4c1('0x30')],_0x5e9df3['filters']));if(_0x4057fd[_0xa4c1('0x30')][_0xa4c1('0x39')]){_0x59afe9['where']=_['merge'](_0x59afe9[_0xa4c1('0x36')],{'$or':_[_0xa4c1('0x29')](_0x59afe9['attributes'],function(_0x3a554d){var _0x53c93e={};_0x53c93e[_0x3a554d]={'$like':'%'+_0x4057fd[_0xa4c1('0x30')][_0xa4c1('0x39')]+'%'};return _0x53c93e;})});}_0x59afe9=_[_0xa4c1('0x37')]({},_0x59afe9,_0x4057fd[_0xa4c1('0x3a')]);return _0x447644[_0xa4c1('0x4d')](_0x59afe9);}})[_0xa4c1('0x24')](function(_0x5445ef){if(_0x5445ef){_0x45435e=_0x5445ef[_0xa4c1('0x41')];if(!_0x4057fd[_0xa4c1('0x30')]['hasOwnProperty']('nolimit')){_0x59afe9['limit']=qs[_0xa4c1('0x1c')](_0x4057fd['query'][_0xa4c1('0x1c')]);_0x59afe9[_0xa4c1('0x1a')]=qs[_0xa4c1('0x1a')](_0x4057fd[_0xa4c1('0x30')][_0xa4c1('0x1a')]);}return _0x447644['getDescriptions'](_0x59afe9);}})[_0xa4c1('0x24')](function(_0x93b619){if(_0x93b619){return _0x93b619?{'count':_0x45435e,'rows':_0x93b619}:null;}})[_0xa4c1('0x24')](respondWithResult(_0xda9772,null))['catch'](handleError(_0xda9772,null));};
\ No newline at end of file
index 1e4328f..8344685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6061=['bluebird','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','api'];(function(_0x2fcf18,_0x10009a){var _0x4c68cc=function(_0x444002){while(--_0x444002){_0x2fcf18['push'](_0x2fcf18['shift']());}};_0x4c68cc(++_0x10009a);}(_0x6061,0x159));var _0x1606=function(_0x46e731,_0x48ef3a){_0x46e731=_0x46e731-0x0;var _0x1cd609=_0x6061[_0x46e731];return _0x1cd609;};'use strict';var _=require(_0x1606('0x0'));var util=require(_0x1606('0x1'));var logger=require('../../config/logger')(_0x1606('0x2'));var moment=require('moment');var BPromise=require(_0x1606('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1606('0x4'));var rimraf=require(_0x1606('0x5'));var config=require(_0x1606('0x6'));var attributes=require(_0x1606('0x7'));module[_0x1606('0x8')]=function(_0x1aeb34,_0x48b025){return _0x1aeb34[_0x1606('0x9')](_0x1606('0xa'),attributes,{'tableName':_0x1606('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf175=['path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x55d383,_0x507f3d){var _0x1e4951=function(_0x169150){while(--_0x169150){_0x55d383['push'](_0x55d383['shift']());}};_0x1e4951(++_0x507f3d);}(_0xf175,0x73));var _0x5f17=function(_0x2aa7a0,_0x4648f5){_0x2aa7a0=_0x2aa7a0-0x0;var _0x5b1b70=_0xf175[_0x2aa7a0];return _0x5b1b70;};'use strict';var _=require(_0x5f17('0x0'));var util=require(_0x5f17('0x1'));var logger=require(_0x5f17('0x2'))(_0x5f17('0x3'));var moment=require(_0x5f17('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f17('0x5'));var rimraf=require(_0x5f17('0x6'));var config=require(_0x5f17('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x5f17('0x8')]=function(_0x448121,_0x17dc9f){return _0x448121[_0x5f17('0x9')](_0x5f17('0xa'),attributes,{'tableName':_0x5f17('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 874cc43..8070ab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f14=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','SugarcrmConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x5f14,0x13b));var _0x45f1=function(_0x4b7e4d,_0x82d2ab){_0x4b7e4d=_0x4b7e4d-0x0;var _0x38d6af=_0x5f14[_0x4b7e4d];return _0x38d6af;};'use strict';var _=require(_0x45f1('0x0'));var util=require(_0x45f1('0x1'));var moment=require(_0x45f1('0x2'));var BPromise=require(_0x45f1('0x3'));var rs=require(_0x45f1('0x4'));var fs=require('fs');var Redis=require(_0x45f1('0x5'));var db=require(_0x45f1('0x6'))['db'];var utils=require(_0x45f1('0x7'));var logger=require(_0x45f1('0x8'))(_0x45f1('0x9'));var config=require(_0x45f1('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x45f1('0xb')][_0x45f1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21be8e,_0x32e6da,_0x21257d){return new BPromise(function(_0x15e73f,_0x164ce3){return client[_0x45f1('0xd')](_0x21be8e,_0x21257d)['then'](function(_0x2ca9ac){logger['info'](_0x45f1('0xe'),_0x32e6da,'request\x20sent');logger[_0x45f1('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x32e6da,_0x45f1('0x10'),JSON[_0x45f1('0x11')](_0x2ca9ac));if(_0x2ca9ac[_0x45f1('0x12')]){if(_0x2ca9ac[_0x45f1('0x12')]['code']===0x1f4){logger[_0x45f1('0x12')](_0x45f1('0xe'),_0x32e6da,_0x2ca9ac[_0x45f1('0x12')][_0x45f1('0x13')]);return _0x164ce3(_0x2ca9ac[_0x45f1('0x12')][_0x45f1('0x13')]);}logger['error'](_0x45f1('0xe'),_0x32e6da,_0x2ca9ac[_0x45f1('0x12')][_0x45f1('0x13')]);return _0x15e73f(_0x2ca9ac['error']['message']);}else{logger[_0x45f1('0x14')](_0x45f1('0xe'),_0x32e6da,_0x45f1('0x10'));_0x15e73f(_0x2ca9ac[_0x45f1('0x15')][_0x45f1('0x13')]);}})[_0x45f1('0x16')](function(_0x41b2eb){logger[_0x45f1('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x32e6da,_0x41b2eb);_0x164ce3(_0x41b2eb);});});}
\ No newline at end of file
+var _0xbab7=['moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','SugarcrmConfiguration,\x20%s,\x20%s','message','request\x20sent','catch','lodash'];(function(_0x5b7c64,_0x5409e1){var _0x5704d0=function(_0x5f37f2){while(--_0x5f37f2){_0x5b7c64['push'](_0x5b7c64['shift']());}};_0x5704d0(++_0x5409e1);}(_0xbab7,0xe6));var _0x7bab=function(_0x42eb6c,_0x33d1ff){_0x42eb6c=_0x42eb6c-0x0;var _0x31cb05=_0xbab7[_0x42eb6c];return _0x31cb05;};'use strict';var _=require(_0x7bab('0x0'));var util=require('util');var moment=require(_0x7bab('0x1'));var BPromise=require('bluebird');var rs=require(_0x7bab('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7bab('0x3'))['db'];var utils=require(_0x7bab('0x4'));var logger=require(_0x7bab('0x5'))(_0x7bab('0x6'));var config=require(_0x7bab('0x7'));var jayson=require(_0x7bab('0x8'));var client=jayson[_0x7bab('0x9')][_0x7bab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b2493,_0x52d5f3,_0x35725e){return new BPromise(function(_0x344407,_0x2be41a){return client['request'](_0x1b2493,_0x35725e)[_0x7bab('0xb')](function(_0x5da4fa){logger[_0x7bab('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x52d5f3,'request\x20sent');logger[_0x7bab('0xd')](_0x7bab('0xe'),_0x52d5f3,'request\x20sent',JSON[_0x7bab('0xf')](_0x5da4fa));if(_0x5da4fa['error']){if(_0x5da4fa[_0x7bab('0x10')]['code']===0x1f4){logger['error'](_0x7bab('0x11'),_0x52d5f3,_0x5da4fa[_0x7bab('0x10')][_0x7bab('0x12')]);return _0x2be41a(_0x5da4fa['error'][_0x7bab('0x12')]);}logger[_0x7bab('0x10')](_0x7bab('0x11'),_0x52d5f3,_0x5da4fa['error'][_0x7bab('0x12')]);return _0x344407(_0x5da4fa[_0x7bab('0x10')][_0x7bab('0x12')]);}else{logger[_0x7bab('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x52d5f3,_0x7bab('0x13'));_0x344407(_0x5da4fa['result'][_0x7bab('0x12')]);}})[_0x7bab('0x14')](function(_0x579558){logger['error'](_0x7bab('0x11'),_0x52d5f3,_0x579558);_0x2be41a(_0x579558);});});}
\ No newline at end of file
index 58569fe..5587f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21b9=['fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','post','delete','exports','multer','util','path','connect-timeout','express'];(function(_0x2e884a,_0x36a798){var _0x3320e2=function(_0x1252fd){while(--_0x1252fd){_0x2e884a['push'](_0x2e884a['shift']());}};_0x3320e2(++_0x36a798);}(_0x21b9,0x1cb));var _0x921b=function(_0x13009f,_0x3dbed1){_0x13009f=_0x13009f-0x0;var _0x20f511=_0x21b9[_0x13009f];return _0x20f511;};'use strict';var multer=require(_0x921b('0x0'));var util=require(_0x921b('0x1'));var path=require(_0x921b('0x2'));var timeout=require(_0x921b('0x3'));var express=require(_0x921b('0x4'));var router=express['Router']();var fs_extra=require(_0x921b('0x5'));var auth=require(_0x921b('0x6'));var interaction=require(_0x921b('0x7'));var config=require('../../config/environment');var controller=require(_0x921b('0x8'));router[_0x921b('0x9')]('/',auth[_0x921b('0xa')](),controller['index']);router[_0x921b('0x9')](_0x921b('0xb'),auth['isAuthenticated'](),controller[_0x921b('0xc')]);router[_0x921b('0xd')]('/',auth[_0x921b('0xa')](),controller['create']);router['put'](_0x921b('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x921b('0xe')](_0x921b('0xb'),auth[_0x921b('0xa')](),controller['destroy']);module[_0x921b('0xf')]=router;
\ No newline at end of file
+var _0x50a3=['get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intSugarcrmField.controller'];(function(_0x13e7c0,_0x98d974){var _0x5d5218=function(_0x492dd5){while(--_0x492dd5){_0x13e7c0['push'](_0x13e7c0['shift']());}};_0x5d5218(++_0x98d974);}(_0x50a3,0x14c));var _0x350a=function(_0x4c2f30,_0xa91340){_0x4c2f30=_0x4c2f30-0x0;var _0xb8854d=_0x50a3[_0x4c2f30];return _0xb8854d;};'use strict';var multer=require('multer');var util=require(_0x350a('0x0'));var path=require(_0x350a('0x1'));var timeout=require(_0x350a('0x2'));var express=require(_0x350a('0x3'));var router=express[_0x350a('0x4')]();var fs_extra=require(_0x350a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x350a('0x6'));var config=require('../../config/environment');var controller=require(_0x350a('0x7'));router[_0x350a('0x8')]('/',auth[_0x350a('0x9')](),controller[_0x350a('0xa')]);router['get'](_0x350a('0xb'),auth[_0x350a('0x9')](),controller[_0x350a('0xc')]);router[_0x350a('0xd')]('/',auth[_0x350a('0x9')](),controller[_0x350a('0xe')]);router[_0x350a('0xf')]('/:id',auth[_0x350a('0x9')](),controller[_0x350a('0x10')]);router[_0x350a('0x11')]('/:id',auth[_0x350a('0x9')](),controller[_0x350a('0x12')]);module[_0x350a('0x13')]=router;
\ No newline at end of file
index e035db0..18c0cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['variable','customVariable','keyValue','STRING','string','BOOLEAN','sequelize','exports','ENUM'];(function(_0x5973cc,_0x24e091){var _0x54452d=function(_0x30e8f0){while(--_0x30e8f0){_0x5973cc['push'](_0x5973cc['shift']());}};_0x54452d(++_0x24e091);}(_0x66fa,0x19b));var _0xa66f=function(_0x5bba39,_0x5599f7){_0x5bba39=_0x5bba39-0x0;var _0x1c3ec9=_0x66fa[_0x5bba39];return _0x1c3ec9;};'use strict';var Sequelize=require(_0xa66f('0x0'));module[_0xa66f('0x1')]={'type':{'type':Sequelize[_0xa66f('0x2')]('string',_0xa66f('0x3'),_0xa66f('0x4'),_0xa66f('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xa66f('0x6')]},'key':{'type':Sequelize[_0xa66f('0x6')]},'keyType':{'type':Sequelize[_0xa66f('0x2')](_0xa66f('0x7'),_0xa66f('0x3'),_0xa66f('0x4'))},'keyContent':{'type':Sequelize[_0xa66f('0x6')]},'idField':{'type':Sequelize[_0xa66f('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xa66f('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa66f('0x6')]}};
\ No newline at end of file
+var _0xd3e5=['BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x59eb3b,_0x39a51d){var _0x339440=function(_0x4c1a63){while(--_0x4c1a63){_0x59eb3b['push'](_0x59eb3b['shift']());}};_0x339440(++_0x39a51d);}(_0xd3e5,0x172));var _0x5d3e=function(_0x5b50a6,_0x4fe428){_0x5b50a6=_0x5b50a6-0x0;var _0x4911d5=_0xd3e5[_0x5b50a6];return _0x4911d5;};'use strict';var Sequelize=require(_0x5d3e('0x0'));module[_0x5d3e('0x1')]={'type':{'type':Sequelize[_0x5d3e('0x2')](_0x5d3e('0x3'),_0x5d3e('0x4'),'customVariable',_0x5d3e('0x5'),_0x5d3e('0x6')),'defaultValue':_0x5d3e('0x3')},'content':{'type':Sequelize[_0x5d3e('0x7')]},'key':{'type':Sequelize[_0x5d3e('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0x5d3e('0x4'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x5d3e('0x7')]},'nameField':{'type':Sequelize[_0x5d3e('0x7')]},'customField':{'type':Sequelize[_0x5d3e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5d3e('0x7')]}};
\ No newline at end of file
index 68381a5..185776a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02e3=['filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','type','VIRTUAL','merge','options','SugarcrmField','includeAll','include','findAll','rows','catch','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys'];(function(_0xf5276f,_0x1387b7){var _0x4e7834=function(_0x25cb10){while(--_0x25cb10){_0xf5276f['push'](_0xf5276f['shift']());}};_0x4e7834(++_0x1387b7);}(_0x02e3,0x1d8));var _0x302e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x02e3[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x302e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x302e('0x1'));var jsonpatch=require(_0x302e('0x2'));var rp=require(_0x302e('0x3'));var moment=require(_0x302e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x302e('0x5'));var util=require('util');var path=require(_0x302e('0x6'));var sox=require(_0x302e('0x7'));var csv=require(_0x302e('0x8'));var ejs=require(_0x302e('0x9'));var fs=require('fs');var fs_extra=require(_0x302e('0xa'));var _=require(_0x302e('0xb'));var squel=require(_0x302e('0xc'));var crypto=require(_0x302e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x302e('0xe'));var toCsv=require(_0x302e('0x8'));var querystring=require(_0x302e('0xf'));var Papa=require(_0x302e('0x10'));var Redis=require(_0x302e('0x11'));var authService=require(_0x302e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x302e('0x13'));var hardwareService=require(_0x302e('0x14'));var logger=require(_0x302e('0x15'))(_0x302e('0x16'));var utils=require(_0x302e('0x17'));var config=require(_0x302e('0x18'));var licenseUtil=require(_0x302e('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ea6b0,_0x21df89){_0x21df89=_0x21df89||0xcc;return function(_0x3f26c8){if(_0x3f26c8){return _0x2ea6b0[_0x302e('0x1a')](_0x21df89);}return _0x2ea6b0['status'](_0x21df89)[_0x302e('0x1b')]();};}function respondWithResult(_0x1d3a77,_0x2e9a5c){_0x2e9a5c=_0x2e9a5c||0xc8;return function(_0x1f1d0e){if(_0x1f1d0e){return _0x1d3a77[_0x302e('0x1c')](_0x2e9a5c)[_0x302e('0x1d')](_0x1f1d0e);}};}function respondWithFilteredResult(_0x6512a3,_0xc695e4){return function(_0x3ec3a2){if(_0x3ec3a2){var _0x4023f3=typeof _0xc695e4[_0x302e('0x1e')]===_0x302e('0x1f')&&typeof _0xc695e4[_0x302e('0x20')]===_0x302e('0x1f');var _0x44ff71=_0x3ec3a2[_0x302e('0x21')];var _0x204f8c=_0x4023f3?0x0:_0xc695e4[_0x302e('0x1e')];var _0x9cb080=_0x4023f3?_0x3ec3a2[_0x302e('0x21')]:_0xc695e4[_0x302e('0x1e')]+_0xc695e4[_0x302e('0x20')];var _0x5c748c;if(_0x9cb080>=_0x44ff71){_0x9cb080=_0x44ff71;_0x5c748c=0xc8;}else{_0x5c748c=0xce;}_0x6512a3[_0x302e('0x1c')](_0x5c748c);return _0x6512a3['set'](_0x302e('0x22'),_0x204f8c+'-'+_0x9cb080+'/'+_0x44ff71)[_0x302e('0x1d')](_0x3ec3a2);}return null;};}function patchUpdates(_0x9a83a5){return function(_0x141171){try{jsonpatch[_0x302e('0x23')](_0x141171,_0x9a83a5,!![]);}catch(_0x514c3f){return BPromise[_0x302e('0x24')](_0x514c3f);}return _0x141171[_0x302e('0x25')]();};}function saveUpdates(_0x94972b,_0x1892a3){return function(_0x4cf5e1){if(_0x4cf5e1){return _0x4cf5e1[_0x302e('0x26')](_0x94972b)[_0x302e('0x27')](function(_0x363487){return _0x363487;});}return null;};}function removeEntity(_0x132307,_0x5b6f0e){return function(_0x158c75){if(_0x158c75){return _0x158c75[_0x302e('0x28')]()[_0x302e('0x27')](function(){_0x132307[_0x302e('0x1c')](0xcc)[_0x302e('0x1b')]();});}};}function handleEntityNotFound(_0x170be1,_0x5cb335){return function(_0x178a34){if(!_0x178a34){_0x170be1['sendStatus'](0x194);}return _0x178a34;};}function handleError(_0x131c91,_0x414859){_0x414859=_0x414859||0x1f4;return function(_0x4ac555){logger[_0x302e('0x29')](_0x4ac555[_0x302e('0x2a')]);if(_0x4ac555[_0x302e('0x2b')]){delete _0x4ac555[_0x302e('0x2b')];}_0x131c91[_0x302e('0x1c')](_0x414859)[_0x302e('0x2c')](_0x4ac555);};}exports[_0x302e('0x2d')]=function(_0x4c5acd,_0x49130e){var _0x4909fc={},_0x2227fe={},_0x76f6f0={'count':0x0,'rows':[]};var _0x4adbb8=_[_0x302e('0x2e')](db['SugarcrmField'][_0x302e('0x2f')],function(_0x41fe5b){return{'name':_0x41fe5b[_0x302e('0x30')],'type':_0x41fe5b['type'][_0x302e('0x31')]};});_0x2227fe[_0x302e('0x32')]=_[_0x302e('0x2e')](_0x4adbb8,'name');_0x2227fe[_0x302e('0x33')]=_[_0x302e('0x34')](_0x4c5acd[_0x302e('0x33')]);_0x2227fe[_0x302e('0x35')]=_[_0x302e('0x36')](_0x2227fe[_0x302e('0x32')],_0x2227fe[_0x302e('0x33')]);_0x4909fc[_0x302e('0x37')]=_['intersection'](_0x2227fe['model'],qs['fields'](_0x4c5acd['query'][_0x302e('0x38')]));_0x4909fc[_0x302e('0x37')]=_0x4909fc[_0x302e('0x37')][_0x302e('0x39')]?_0x4909fc[_0x302e('0x37')]:_0x2227fe[_0x302e('0x32')];if(!_0x4c5acd['query'][_0x302e('0x3a')]('nolimit')){_0x4909fc[_0x302e('0x20')]=qs['limit'](_0x4c5acd[_0x302e('0x33')]['limit']);_0x4909fc['offset']=qs[_0x302e('0x1e')](_0x4c5acd['query']['offset']);}_0x4909fc[_0x302e('0x3b')]=qs[_0x302e('0x3c')](_0x4c5acd[_0x302e('0x33')]['sort']);_0x4909fc[_0x302e('0x3d')]=qs[_0x302e('0x35')](_['pick'](_0x4c5acd[_0x302e('0x33')],_0x2227fe[_0x302e('0x35')]),_0x4adbb8);if(_0x4c5acd['query']['filter']){_0x4909fc[_0x302e('0x3d')]=_['merge'](_0x4909fc[_0x302e('0x3d')],{'$or':_[_0x302e('0x2e')](_0x4adbb8,function(_0x4e2b34){if(_0x4e2b34[_0x302e('0x3e')]!==_0x302e('0x3f')){var _0x3de17b={};_0x3de17b[_0x4e2b34[_0x302e('0x2b')]]={'$like':'%'+_0x4c5acd[_0x302e('0x33')]['filter']+'%'};return _0x3de17b;}})});}_0x4909fc=_[_0x302e('0x40')]({},_0x4909fc,_0x4c5acd[_0x302e('0x41')]);var _0x12bad6={'where':_0x4909fc[_0x302e('0x3d')]};return db[_0x302e('0x42')][_0x302e('0x21')](_0x12bad6)['then'](function(_0x29e4d6){_0x76f6f0[_0x302e('0x21')]=_0x29e4d6;if(_0x4c5acd[_0x302e('0x33')][_0x302e('0x43')]){_0x4909fc[_0x302e('0x44')]=[{'all':!![]}];}return db['SugarcrmField'][_0x302e('0x45')](_0x4909fc);})[_0x302e('0x27')](function(_0xb3d0eb){_0x76f6f0[_0x302e('0x46')]=_0xb3d0eb;return _0x76f6f0;})[_0x302e('0x27')](respondWithFilteredResult(_0x49130e,_0x4909fc))[_0x302e('0x47')](handleError(_0x49130e,null));};exports['show']=function(_0x438d86,_0x30d908){var _0x5cf58c={'raw':!![],'where':{'id':_0x438d86['params']['id']}},_0x47fbcb={};_0x47fbcb[_0x302e('0x32')]=_[_0x302e('0x34')](db[_0x302e('0x42')]['rawAttributes']);_0x47fbcb['query']=_[_0x302e('0x34')](_0x438d86[_0x302e('0x33')]);_0x47fbcb[_0x302e('0x35')]=_[_0x302e('0x36')](_0x47fbcb[_0x302e('0x32')],_0x47fbcb['query']);_0x5cf58c['attributes']=_[_0x302e('0x36')](_0x47fbcb[_0x302e('0x32')],qs[_0x302e('0x38')](_0x438d86[_0x302e('0x33')][_0x302e('0x38')]));_0x5cf58c[_0x302e('0x37')]=_0x5cf58c[_0x302e('0x37')][_0x302e('0x39')]?_0x5cf58c['attributes']:_0x47fbcb[_0x302e('0x32')];if(_0x438d86[_0x302e('0x33')][_0x302e('0x43')]){_0x5cf58c['include']=[{'all':!![]}];}_0x5cf58c=_['merge']({},_0x5cf58c,_0x438d86[_0x302e('0x41')]);return db[_0x302e('0x42')]['find'](_0x5cf58c)[_0x302e('0x27')](handleEntityNotFound(_0x30d908,null))['then'](respondWithResult(_0x30d908,null))[_0x302e('0x47')](handleError(_0x30d908,null));};exports[_0x302e('0x48')]=function(_0x59feed,_0x4a2725){return db[_0x302e('0x42')][_0x302e('0x48')](_0x59feed[_0x302e('0x49')],{})['then'](respondWithResult(_0x4a2725,0xc9))[_0x302e('0x47')](handleError(_0x4a2725,null));};exports[_0x302e('0x26')]=function(_0x5d26aa,_0x24235c){if(_0x5d26aa[_0x302e('0x49')]['id']){delete _0x5d26aa[_0x302e('0x49')]['id'];}return db[_0x302e('0x42')][_0x302e('0x4a')]({'where':{'id':_0x5d26aa['params']['id']}})[_0x302e('0x27')](handleEntityNotFound(_0x24235c,null))[_0x302e('0x27')](saveUpdates(_0x5d26aa['body'],null))[_0x302e('0x27')](respondWithResult(_0x24235c,null))[_0x302e('0x47')](handleError(_0x24235c,null));};exports[_0x302e('0x28')]=function(_0x27807d,_0x23e0d6){return db[_0x302e('0x42')][_0x302e('0x4a')]({'where':{'id':_0x27807d['params']['id']}})['then'](handleEntityNotFound(_0x23e0d6,null))[_0x302e('0x27')](removeEntity(_0x23e0d6,null))['catch'](handleError(_0x23e0d6,null));};
\ No newline at end of file
+var _0x0fc2=['moment','bluebird','mustache','sox','to-csv','lodash','squel','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','offset','undefined','limit','set','Content-Range','json','apply','save','update','destroy','then','end','error','name','send','index','map','SugarcrmField','fieldName','model','query','keys','filters','attributes','intersection','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','count','includeAll','include','findAll','rows','show','params','rawAttributes','fields','create','body','catch','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x8626f3,_0x284ca9){var _0x210d3c=function(_0x1c0884){while(--_0x1c0884){_0x8626f3['push'](_0x8626f3['shift']());}};_0x210d3c(++_0x284ca9);}(_0x0fc2,0x127));var _0x20fc=function(_0x5ef942,_0xf5c203){_0x5ef942=_0x5ef942-0x0;var _0x3149b8=_0x0fc2[_0x5ef942];return _0x3149b8;};'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(_0x20fc('0x4'));var moment=require(_0x20fc('0x5'));var BPromise=require(_0x20fc('0x6'));var Mustache=require(_0x20fc('0x7'));var util=require('util');var path=require('path');var sox=require(_0x20fc('0x8'));var csv=require(_0x20fc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x20fc('0xa'));var squel=require(_0x20fc('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x20fc('0xc'));var Papa=require(_0x20fc('0xd'));var Redis=require(_0x20fc('0xe'));var authService=require(_0x20fc('0xf'));var qs=require(_0x20fc('0x10'));var as=require(_0x20fc('0x11'));var hardwareService=require(_0x20fc('0x12'));var logger=require(_0x20fc('0x13'))(_0x20fc('0x14'));var utils=require(_0x20fc('0x15'));var config=require(_0x20fc('0x16'));var licenseUtil=require(_0x20fc('0x17'));var db=require(_0x20fc('0x18'))['db'];function respondWithStatusCode(_0x363bc0,_0x13f913){_0x13f913=_0x13f913||0xcc;return function(_0x425fed){if(_0x425fed){return _0x363bc0[_0x20fc('0x19')](_0x13f913);}return _0x363bc0[_0x20fc('0x1a')](_0x13f913)['end']();};}function respondWithResult(_0x5e230a,_0x20f989){_0x20f989=_0x20f989||0xc8;return function(_0x2e771e){if(_0x2e771e){return _0x5e230a[_0x20fc('0x1a')](_0x20f989)['json'](_0x2e771e);}};}function respondWithFilteredResult(_0x405403,_0x290c6e){return function(_0x343938){if(_0x343938){var _0x41e5c3=typeof _0x290c6e[_0x20fc('0x1b')]===_0x20fc('0x1c')&&typeof _0x290c6e['limit']===_0x20fc('0x1c');var _0x4a09bd=_0x343938['count'];var _0x518014=_0x41e5c3?0x0:_0x290c6e[_0x20fc('0x1b')];var _0x92756=_0x41e5c3?_0x343938['count']:_0x290c6e[_0x20fc('0x1b')]+_0x290c6e[_0x20fc('0x1d')];var _0x4fe9bb;if(_0x92756>=_0x4a09bd){_0x92756=_0x4a09bd;_0x4fe9bb=0xc8;}else{_0x4fe9bb=0xce;}_0x405403['status'](_0x4fe9bb);return _0x405403[_0x20fc('0x1e')](_0x20fc('0x1f'),_0x518014+'-'+_0x92756+'/'+_0x4a09bd)[_0x20fc('0x20')](_0x343938);}return null;};}function patchUpdates(_0x2ab411){return function(_0x335e08){try{jsonpatch[_0x20fc('0x21')](_0x335e08,_0x2ab411,!![]);}catch(_0x447b34){return BPromise['reject'](_0x447b34);}return _0x335e08[_0x20fc('0x22')]();};}function saveUpdates(_0x107a07,_0x3c2e04){return function(_0x5502bd){if(_0x5502bd){return _0x5502bd[_0x20fc('0x23')](_0x107a07)['then'](function(_0x5267ac){return _0x5267ac;});}return null;};}function removeEntity(_0x3fbd38,_0x265b14){return function(_0x2b7c6e){if(_0x2b7c6e){return _0x2b7c6e[_0x20fc('0x24')]()[_0x20fc('0x25')](function(){_0x3fbd38['status'](0xcc)[_0x20fc('0x26')]();});}};}function handleEntityNotFound(_0x318213,_0xdedb5c){return function(_0x1b6da8){if(!_0x1b6da8){_0x318213[_0x20fc('0x19')](0x194);}return _0x1b6da8;};}function handleError(_0x1d07e9,_0x3575bb){_0x3575bb=_0x3575bb||0x1f4;return function(_0x40da6d){logger[_0x20fc('0x27')](_0x40da6d['stack']);if(_0x40da6d[_0x20fc('0x28')]){delete _0x40da6d['name'];}_0x1d07e9[_0x20fc('0x1a')](_0x3575bb)[_0x20fc('0x29')](_0x40da6d);};}exports[_0x20fc('0x2a')]=function(_0x5620c9,_0x1db4a3){var _0x345140={},_0x5a23ab={},_0x5a7962={'count':0x0,'rows':[]};var _0x8f2f1b=_[_0x20fc('0x2b')](db[_0x20fc('0x2c')]['rawAttributes'],function(_0x5d17b2){return{'name':_0x5d17b2[_0x20fc('0x2d')],'type':_0x5d17b2['type']['key']};});_0x5a23ab[_0x20fc('0x2e')]=_[_0x20fc('0x2b')](_0x8f2f1b,_0x20fc('0x28'));_0x5a23ab[_0x20fc('0x2f')]=_[_0x20fc('0x30')](_0x5620c9[_0x20fc('0x2f')]);_0x5a23ab[_0x20fc('0x31')]=_['intersection'](_0x5a23ab['model'],_0x5a23ab[_0x20fc('0x2f')]);_0x345140[_0x20fc('0x32')]=_[_0x20fc('0x33')](_0x5a23ab[_0x20fc('0x2e')],qs['fields'](_0x5620c9['query']['fields']));_0x345140[_0x20fc('0x32')]=_0x345140[_0x20fc('0x32')][_0x20fc('0x34')]?_0x345140['attributes']:_0x5a23ab[_0x20fc('0x2e')];if(!_0x5620c9[_0x20fc('0x2f')]['hasOwnProperty'](_0x20fc('0x35'))){_0x345140[_0x20fc('0x1d')]=qs['limit'](_0x5620c9[_0x20fc('0x2f')][_0x20fc('0x1d')]);_0x345140[_0x20fc('0x1b')]=qs[_0x20fc('0x1b')](_0x5620c9[_0x20fc('0x2f')]['offset']);}_0x345140[_0x20fc('0x36')]=qs[_0x20fc('0x37')](_0x5620c9[_0x20fc('0x2f')][_0x20fc('0x37')]);_0x345140[_0x20fc('0x38')]=qs['filters'](_[_0x20fc('0x39')](_0x5620c9[_0x20fc('0x2f')],_0x5a23ab[_0x20fc('0x31')]),_0x8f2f1b);if(_0x5620c9[_0x20fc('0x2f')][_0x20fc('0x3a')]){_0x345140[_0x20fc('0x38')]=_[_0x20fc('0x3b')](_0x345140[_0x20fc('0x38')],{'$or':_[_0x20fc('0x2b')](_0x8f2f1b,function(_0x3eb601){if(_0x3eb601[_0x20fc('0x3c')]!==_0x20fc('0x3d')){var _0x3da366={};_0x3da366[_0x3eb601[_0x20fc('0x28')]]={'$like':'%'+_0x5620c9[_0x20fc('0x2f')][_0x20fc('0x3a')]+'%'};return _0x3da366;}})});}_0x345140=_[_0x20fc('0x3b')]({},_0x345140,_0x5620c9['options']);var _0x18332d={'where':_0x345140[_0x20fc('0x38')]};return db[_0x20fc('0x2c')][_0x20fc('0x3e')](_0x18332d)[_0x20fc('0x25')](function(_0x4c13df){_0x5a7962[_0x20fc('0x3e')]=_0x4c13df;if(_0x5620c9['query'][_0x20fc('0x3f')]){_0x345140[_0x20fc('0x40')]=[{'all':!![]}];}return db[_0x20fc('0x2c')][_0x20fc('0x41')](_0x345140);})[_0x20fc('0x25')](function(_0x4ef968){_0x5a7962[_0x20fc('0x42')]=_0x4ef968;return _0x5a7962;})['then'](respondWithFilteredResult(_0x1db4a3,_0x345140))['catch'](handleError(_0x1db4a3,null));};exports[_0x20fc('0x43')]=function(_0x2eaef8,_0x2c371c){var _0x4a2e01={'raw':!![],'where':{'id':_0x2eaef8[_0x20fc('0x44')]['id']}},_0x24d5d3={};_0x24d5d3[_0x20fc('0x2e')]=_[_0x20fc('0x30')](db['SugarcrmField'][_0x20fc('0x45')]);_0x24d5d3[_0x20fc('0x2f')]=_[_0x20fc('0x30')](_0x2eaef8['query']);_0x24d5d3['filters']=_['intersection'](_0x24d5d3[_0x20fc('0x2e')],_0x24d5d3['query']);_0x4a2e01[_0x20fc('0x32')]=_[_0x20fc('0x33')](_0x24d5d3[_0x20fc('0x2e')],qs[_0x20fc('0x46')](_0x2eaef8[_0x20fc('0x2f')]['fields']));_0x4a2e01[_0x20fc('0x32')]=_0x4a2e01['attributes'][_0x20fc('0x34')]?_0x4a2e01[_0x20fc('0x32')]:_0x24d5d3[_0x20fc('0x2e')];if(_0x2eaef8[_0x20fc('0x2f')][_0x20fc('0x3f')]){_0x4a2e01['include']=[{'all':!![]}];}_0x4a2e01=_[_0x20fc('0x3b')]({},_0x4a2e01,_0x2eaef8['options']);return db[_0x20fc('0x2c')]['find'](_0x4a2e01)[_0x20fc('0x25')](handleEntityNotFound(_0x2c371c,null))[_0x20fc('0x25')](respondWithResult(_0x2c371c,null))['catch'](handleError(_0x2c371c,null));};exports['create']=function(_0x39e62f,_0x18f62f){return db[_0x20fc('0x2c')][_0x20fc('0x47')](_0x39e62f[_0x20fc('0x48')],{})['then'](respondWithResult(_0x18f62f,0xc9))[_0x20fc('0x49')](handleError(_0x18f62f,null));};exports[_0x20fc('0x23')]=function(_0x37a441,_0x3254c9){if(_0x37a441[_0x20fc('0x48')]['id']){delete _0x37a441[_0x20fc('0x48')]['id'];}return db['SugarcrmField'][_0x20fc('0x4a')]({'where':{'id':_0x37a441[_0x20fc('0x44')]['id']}})[_0x20fc('0x25')](handleEntityNotFound(_0x3254c9,null))[_0x20fc('0x25')](saveUpdates(_0x37a441[_0x20fc('0x48')],null))[_0x20fc('0x25')](respondWithResult(_0x3254c9,null))['catch'](handleError(_0x3254c9,null));};exports[_0x20fc('0x24')]=function(_0x4a450e,_0x585224){return db[_0x20fc('0x2c')]['find']({'where':{'id':_0x4a450e['params']['id']}})['then'](handleEntityNotFound(_0x585224,null))['then'](removeEntity(_0x585224,null))[_0x20fc('0x49')](handleError(_0x585224,null));};
\ No newline at end of file
index c15832c..c818686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f6f=['./intSugarcrmField.attributes','define','sugarcrm_unique_index','FieldId','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xf8da35,_0x4b0060){var _0x497c3a=function(_0x33bc40){while(--_0x33bc40){_0xf8da35['push'](_0xf8da35['shift']());}};_0x497c3a(++_0x4b0060);}(_0x9f6f,0x101));var _0xf9f6=function(_0x18fe83,_0x586018){_0x18fe83=_0x18fe83-0x0;var _0x350c0e=_0x9f6f[_0x18fe83];return _0x350c0e;};'use strict';var _=require(_0xf9f6('0x0'));var util=require(_0xf9f6('0x1'));var logger=require(_0xf9f6('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf9f6('0x3'));var rp=require(_0xf9f6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf9f6('0x5'));var config=require(_0xf9f6('0x6'));var attributes=require(_0xf9f6('0x7'));module['exports']=function(_0x4be7ee,_0x36dbc1){return _0x4be7ee[_0xf9f6('0x8')]('SugarcrmField',attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0xf9f6('0x9'),'fields':['idField',_0xf9f6('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ae3=['bluebird','request-promise','path','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x21f313,_0x33b2cf){var _0x3beccc=function(_0x35ed61){while(--_0x35ed61){_0x21f313['push'](_0x21f313['shift']());}};_0x3beccc(++_0x33b2cf);}(_0x4ae3,0x10b));var _0x34ae=function(_0xc0754,_0x37f107){_0xc0754=_0xc0754-0x0;var _0x195498=_0x4ae3[_0xc0754];return _0x195498;};'use strict';var _=require(_0x34ae('0x0'));var util=require(_0x34ae('0x1'));var logger=require(_0x34ae('0x2'))(_0x34ae('0x3'));var moment=require(_0x34ae('0x4'));var BPromise=require(_0x34ae('0x5'));var rp=require(_0x34ae('0x6'));var fs=require('fs');var path=require(_0x34ae('0x7'));var rimraf=require('rimraf');var config=require(_0x34ae('0x8'));var attributes=require(_0x34ae('0x9'));module[_0x34ae('0xa')]=function(_0x58507c,_0x5e8523){return _0x58507c[_0x34ae('0xb')](_0x34ae('0xc'),attributes,{'tableName':_0x34ae('0xd'),'paranoid':![],'indexes':[{'name':_0x34ae('0xe'),'fields':[_0x34ae('0xf'),_0x34ae('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7cf9429..a42ef38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x849c=['request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x31b31b,_0x5f044e){var _0x2c8fc2=function(_0x5438aa){while(--_0x5438aa){_0x31b31b['push'](_0x31b31b['shift']());}};_0x2c8fc2(++_0x5f044e);}(_0x849c,0xdc));var _0xc849=function(_0x40a3a7,_0x22f3fa){_0x40a3a7=_0x40a3a7-0x0;var _0x102fa1=_0x849c[_0x40a3a7];return _0x102fa1;};'use strict';var _=require(_0xc849('0x0'));var util=require('util');var moment=require(_0xc849('0x1'));var BPromise=require(_0xc849('0x2'));var rs=require(_0xc849('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc849('0x4'))['db'];var utils=require(_0xc849('0x5'));var logger=require(_0xc849('0x6'))(_0xc849('0x7'));var config=require(_0xc849('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc849('0x9')][_0xc849('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cd52c,_0x4e60f8,_0x4f7e03){return new BPromise(function(_0x670353,_0x3c8d84){return client[_0xc849('0xb')](_0x3cd52c,_0x4f7e03)['then'](function(_0x4aa175){logger[_0xc849('0xc')](_0xc849('0xd'),_0x4e60f8,_0xc849('0xe'));logger[_0xc849('0xf')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x4e60f8,_0xc849('0xe'),JSON[_0xc849('0x10')](_0x4aa175));if(_0x4aa175[_0xc849('0x11')]){if(_0x4aa175['error']['code']===0x1f4){logger[_0xc849('0x11')](_0xc849('0xd'),_0x4e60f8,_0x4aa175['error'][_0xc849('0x12')]);return _0x3c8d84(_0x4aa175['error'][_0xc849('0x12')]);}logger['error'](_0xc849('0xd'),_0x4e60f8,_0x4aa175[_0xc849('0x11')][_0xc849('0x12')]);return _0x670353(_0x4aa175['error'][_0xc849('0x12')]);}else{logger[_0xc849('0xc')](_0xc849('0xd'),_0x4e60f8,_0xc849('0xe'));_0x670353(_0x4aa175[_0xc849('0x13')][_0xc849('0x12')]);}})[_0xc849('0x14')](function(_0x82d267){logger[_0xc849('0x11')](_0xc849('0xd'),_0x4e60f8,_0x82d267);_0x3c8d84(_0x82d267);});});}
\ No newline at end of file
+var _0x4d02=['info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x4d02,0x160));var _0x24d0=function(_0x3b9eca,_0x393414){_0x3b9eca=_0x3b9eca-0x0;var _0x1b34f5=_0x4d02[_0x3b9eca];return _0x1b34f5;};'use strict';var _=require('lodash');var util=require(_0x24d0('0x0'));var moment=require(_0x24d0('0x1'));var BPromise=require(_0x24d0('0x2'));var rs=require(_0x24d0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x24d0('0x4'))['db'];var utils=require(_0x24d0('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x24d0('0x6'));var jayson=require(_0x24d0('0x7'));var client=jayson['client'][_0x24d0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x232fb0,_0xf25135,_0x29cb9c){return new BPromise(function(_0x23acf8,_0x12f231){return client['request'](_0x232fb0,_0x29cb9c)['then'](function(_0x11a889){logger[_0x24d0('0x9')](_0x24d0('0xa'),_0xf25135,_0x24d0('0xb'));logger['debug'](_0x24d0('0xc'),_0xf25135,'request\x20sent',JSON[_0x24d0('0xd')](_0x11a889));if(_0x11a889[_0x24d0('0xe')]){if(_0x11a889[_0x24d0('0xe')][_0x24d0('0xf')]===0x1f4){logger['error'](_0x24d0('0xa'),_0xf25135,_0x11a889[_0x24d0('0xe')]['message']);return _0x12f231(_0x11a889[_0x24d0('0xe')][_0x24d0('0x10')]);}logger[_0x24d0('0xe')](_0x24d0('0xa'),_0xf25135,_0x11a889[_0x24d0('0xe')]['message']);return _0x23acf8(_0x11a889[_0x24d0('0xe')]['message']);}else{logger[_0x24d0('0x9')](_0x24d0('0xa'),_0xf25135,_0x24d0('0xb'));_0x23acf8(_0x11a889[_0x24d0('0x11')]['message']);}})[_0x24d0('0x12')](function(_0x17154b){logger['error'](_0x24d0('0xa'),_0xf25135,_0x17154b);_0x12f231(_0x17154b);});});}
\ No newline at end of file
index 305f165..cca850e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7d8=['getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations'];(function(_0x2bd805,_0x1112a1){var _0x11550c=function(_0x2b65ad){while(--_0x2b65ad){_0x2bd805['push'](_0x2bd805['shift']());}};_0x11550c(++_0x1112a1);}(_0xa7d8,0x94));var _0x8a7d=function(_0x699722,_0x196bb4){_0x699722=_0x699722-0x0;var _0x17705d=_0xa7d8[_0x699722];return _0x17705d;};'use strict';var multer=require(_0x8a7d('0x0'));var util=require('util');var path=require(_0x8a7d('0x1'));var timeout=require('connect-timeout');var express=require(_0x8a7d('0x2'));var router=express[_0x8a7d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8a7d('0x4'));var interaction=require(_0x8a7d('0x5'));var config=require(_0x8a7d('0x6'));var controller=require(_0x8a7d('0x7'));router[_0x8a7d('0x8')]('/',auth[_0x8a7d('0x9')](),controller['index']);router[_0x8a7d('0x8')](_0x8a7d('0xa'),auth['isAuthenticated'](),controller[_0x8a7d('0xb')]);router['get'](_0x8a7d('0xc'),auth[_0x8a7d('0x9')](),controller[_0x8a7d('0xd')]);router[_0x8a7d('0x8')](_0x8a7d('0xe'),auth['isAuthenticated'](),controller[_0x8a7d('0xf')]);router['post']('/',auth[_0x8a7d('0x9')](),controller[_0x8a7d('0x10')]);router[_0x8a7d('0x11')](_0x8a7d('0xc'),auth['isAuthenticated'](),controller[_0x8a7d('0x12')]);router[_0x8a7d('0x13')](_0x8a7d('0xa'),auth[_0x8a7d('0x9')](),controller['update']);router[_0x8a7d('0x14')](_0x8a7d('0xa'),auth[_0x8a7d('0x9')](),controller[_0x8a7d('0x15')]);module[_0x8a7d('0x16')]=router;
\ No newline at end of file
+var _0x97d5=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getFields','create','post','addConfiguration','put','update','delete','destroy'];(function(_0x3fc762,_0xad9651){var _0x1280b3=function(_0x44a4bf){while(--_0x44a4bf){_0x3fc762['push'](_0x3fc762['shift']());}};_0x1280b3(++_0xad9651);}(_0x97d5,0x199));var _0x597d=function(_0x459555,_0x8a9743){_0x459555=_0x459555-0x0;var _0x2b10db=_0x97d5[_0x459555];return _0x2b10db;};'use strict';var multer=require(_0x597d('0x0'));var util=require(_0x597d('0x1'));var path=require(_0x597d('0x2'));var timeout=require(_0x597d('0x3'));var express=require(_0x597d('0x4'));var router=express[_0x597d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x597d('0x6'));var interaction=require(_0x597d('0x7'));var config=require(_0x597d('0x8'));var controller=require('./intVtigerAccount.controller');router[_0x597d('0x9')]('/',auth[_0x597d('0xa')](),controller[_0x597d('0xb')]);router[_0x597d('0x9')](_0x597d('0xc'),auth[_0x597d('0xa')](),controller[_0x597d('0xd')]);router['get'](_0x597d('0xe'),auth[_0x597d('0xa')](),controller['getConfigurations']);router[_0x597d('0x9')]('/:id/fields',auth[_0x597d('0xa')](),controller[_0x597d('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x597d('0x10')]);router[_0x597d('0x11')](_0x597d('0xe'),auth['isAuthenticated'](),controller[_0x597d('0x12')]);router[_0x597d('0x13')](_0x597d('0xc'),auth[_0x597d('0xa')](),controller[_0x597d('0x14')]);router[_0x597d('0x15')](_0x597d('0xc'),auth[_0x597d('0xa')](),controller[_0x597d('0x16')]);module[_0x597d('0x17')]=router;
\ No newline at end of file
index 76e3aeb..19c232a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccab=['exports','STRING','sequelize'];(function(_0xa45395,_0x5579e6){var _0x3c83d2=function(_0x5d013c){while(--_0x5d013c){_0xa45395['push'](_0xa45395['shift']());}};_0x3c83d2(++_0x5579e6);}(_0xccab,0x125));var _0xbcca=function(_0x17770a,_0x5ccaed){_0x17770a=_0x17770a-0x0;var _0xaab088=_0xccab[_0x17770a];return _0xaab088;};'use strict';var Sequelize=require(_0xbcca('0x0'));module[_0xbcca('0x1')]={'name':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xbcca('0x2')]},'username':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x25fa=['sequelize','STRING','HelpDesk'];(function(_0x460150,_0x232949){var _0x340677=function(_0x5b7e32){while(--_0x5b7e32){_0x460150['push'](_0x460150['shift']());}};_0x340677(++_0x232949);}(_0x25fa,0xb7));var _0xa25f=function(_0x103e91,_0x562b8a){_0x103e91=_0x103e91-0x0;var _0x50e725=_0x25fa[_0x103e91];return _0x50e725;};'use strict';var Sequelize=require(_0xa25f('0x0'));module['exports']={'name':{'type':Sequelize[_0xa25f('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa25f('0x1')]},'username':{'type':Sequelize[_0xa25f('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa25f('0x2')},'remoteUri':{'type':Sequelize[_0xa25f('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xa25f('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xa25f('0x1')],'allowNull':![]}};
\ No newline at end of file
index aa61fcc..d2ba347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf872=['../../config/license/util','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','VtigerAccount','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','findAll','show','params','rawAttributes','length','includeAll','include','create','body','catch','find','destroy','getConfigurations','VtigerConfiguration','sort','addConfiguration','findOne','Subjects','getSubjects','channel','getDescriptions','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','serverUrl','slice','substring','format','GET','getchallenge','success','result','token','sessionName','autogenerated','reference','remove','includes','editable','startsWith','cf_','picklist','label','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x45f85d,_0x4db7b6){var _0x2161b6=function(_0x2bf63b){while(--_0x2bf63b){_0x45f85d['push'](_0x45f85d['shift']());}};_0x2161b6(++_0x4db7b6);}(_0xf872,0x14b));var _0x2f87=function(_0x40ddc0,_0x41c082){_0x40ddc0=_0x40ddc0-0x0;var _0x1aebf1=_0xf872[_0x40ddc0];return _0x1aebf1;};'use strict';var emlformat=require(_0x2f87('0x0'));var rimraf=require(_0x2f87('0x1'));var zipdir=require(_0x2f87('0x2'));var jsonpatch=require(_0x2f87('0x3'));var rp=require(_0x2f87('0x4'));var moment=require('moment');var BPromise=require(_0x2f87('0x5'));var Mustache=require(_0x2f87('0x6'));var util=require(_0x2f87('0x7'));var path=require('path');var sox=require(_0x2f87('0x8'));var csv=require(_0x2f87('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2f87('0xa'));var _=require(_0x2f87('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2f87('0xc'));var deskjs=require(_0x2f87('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2f87('0xe'));var Redis=require(_0x2f87('0xf'));var authService=require(_0x2f87('0x10'));var qs=require(_0x2f87('0x11'));var as=require(_0x2f87('0x12'));var hardwareService=require(_0x2f87('0x13'));var logger=require(_0x2f87('0x14'))(_0x2f87('0x15'));var utils=require(_0x2f87('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2f87('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2937b0,_0x109960){_0x109960=_0x109960||0xcc;return function(_0x4c050b){if(_0x4c050b){return _0x2937b0['sendStatus'](_0x109960);}return _0x2937b0[_0x2f87('0x18')](_0x109960)[_0x2f87('0x19')]();};}function respondWithResult(_0x1f1fe7,_0x37de7b){_0x37de7b=_0x37de7b||0xc8;return function(_0x4d7862){if(_0x4d7862){return _0x1f1fe7[_0x2f87('0x18')](_0x37de7b)['json'](_0x4d7862);}};}function respondWithFilteredResult(_0xafeae5,_0x29f464){return function(_0xc1935d){if(_0xc1935d){var _0x5b65ef=typeof _0x29f464['offset']===_0x2f87('0x1a')&&typeof _0x29f464[_0x2f87('0x1b')]===_0x2f87('0x1a');var _0x3fd2a2=_0xc1935d[_0x2f87('0x1c')];var _0x295e10=_0x5b65ef?0x0:_0x29f464[_0x2f87('0x1d')];var _0xd9f9e3=_0x5b65ef?_0xc1935d[_0x2f87('0x1c')]:_0x29f464[_0x2f87('0x1d')]+_0x29f464['limit'];var _0x56c326;if(_0xd9f9e3>=_0x3fd2a2){_0xd9f9e3=_0x3fd2a2;_0x56c326=0xc8;}else{_0x56c326=0xce;}_0xafeae5[_0x2f87('0x18')](_0x56c326);return _0xafeae5['set'](_0x2f87('0x1e'),_0x295e10+'-'+_0xd9f9e3+'/'+_0x3fd2a2)[_0x2f87('0x1f')](_0xc1935d);}return null;};}function patchUpdates(_0x2454f6){return function(_0x4dd40a){try{jsonpatch[_0x2f87('0x20')](_0x4dd40a,_0x2454f6,!![]);}catch(_0x235fca){return BPromise[_0x2f87('0x21')](_0x235fca);}return _0x4dd40a[_0x2f87('0x22')]();};}function saveUpdates(_0x4c5a13,_0x12ce41){return function(_0x1ff6ba){if(_0x1ff6ba){return _0x1ff6ba[_0x2f87('0x23')](_0x4c5a13)['then'](function(_0x8aa573){return _0x8aa573;});}return null;};}function removeEntity(_0x161211,_0x19fa8d){return function(_0x1cf8a2){if(_0x1cf8a2){return _0x1cf8a2['destroy']()[_0x2f87('0x24')](function(){_0x161211[_0x2f87('0x18')](0xcc)[_0x2f87('0x19')]();});}};}function handleEntityNotFound(_0x4a5885,_0x396997){return function(_0x2727b8){if(!_0x2727b8){_0x4a5885[_0x2f87('0x25')](0x194);}return _0x2727b8;};}function handleError(_0x206d2b,_0x1352b4){_0x1352b4=_0x1352b4||0x1f4;return function(_0x3b3213){logger[_0x2f87('0x26')](_0x3b3213[_0x2f87('0x27')]);if(_0x3b3213[_0x2f87('0x28')]){delete _0x3b3213[_0x2f87('0x28')];}_0x206d2b['status'](_0x1352b4)[_0x2f87('0x29')](_0x3b3213);};}exports[_0x2f87('0x2a')]=function(_0x280d52,_0x41df56){var _0x3caea6={},_0x4b1c57={},_0x1d940b={'count':0x0,'rows':[]};var _0x1d3d3d=_['map'](db[_0x2f87('0x2b')]['rawAttributes'],function(_0x22f6e6){return{'name':_0x22f6e6[_0x2f87('0x2c')],'type':_0x22f6e6[_0x2f87('0x2d')]['key']};});_0x4b1c57[_0x2f87('0x2e')]=_[_0x2f87('0x2f')](_0x1d3d3d,_0x2f87('0x28'));_0x4b1c57[_0x2f87('0x30')]=_[_0x2f87('0x31')](_0x280d52[_0x2f87('0x30')]);_0x4b1c57[_0x2f87('0x32')]=_[_0x2f87('0x33')](_0x4b1c57[_0x2f87('0x2e')],_0x4b1c57[_0x2f87('0x30')]);_0x3caea6[_0x2f87('0x34')]=_[_0x2f87('0x33')](_0x4b1c57[_0x2f87('0x2e')],qs[_0x2f87('0x35')](_0x280d52[_0x2f87('0x30')][_0x2f87('0x35')]));_0x3caea6[_0x2f87('0x34')]=_0x3caea6[_0x2f87('0x34')]['length']?_0x3caea6[_0x2f87('0x34')]:_0x4b1c57[_0x2f87('0x2e')];if(!_0x280d52[_0x2f87('0x30')][_0x2f87('0x36')](_0x2f87('0x37'))){_0x3caea6[_0x2f87('0x1b')]=qs[_0x2f87('0x1b')](_0x280d52['query'][_0x2f87('0x1b')]);_0x3caea6[_0x2f87('0x1d')]=qs[_0x2f87('0x1d')](_0x280d52[_0x2f87('0x30')][_0x2f87('0x1d')]);}_0x3caea6[_0x2f87('0x38')]=qs['sort'](_0x280d52[_0x2f87('0x30')]['sort']);_0x3caea6[_0x2f87('0x39')]=qs[_0x2f87('0x32')](_[_0x2f87('0x3a')](_0x280d52[_0x2f87('0x30')],_0x4b1c57['filters']),_0x1d3d3d);if(_0x280d52[_0x2f87('0x30')][_0x2f87('0x3b')]){_0x3caea6['where']=_[_0x2f87('0x3c')](_0x3caea6['where'],{'$or':_[_0x2f87('0x2f')](_0x1d3d3d,function(_0x1b0466){if(_0x1b0466[_0x2f87('0x2d')]!==_0x2f87('0x3d')){var _0x48f027={};_0x48f027[_0x1b0466['name']]={'$like':'%'+_0x280d52['query'][_0x2f87('0x3b')]+'%'};return _0x48f027;}})});}_0x3caea6=_['merge']({},_0x3caea6,_0x280d52[_0x2f87('0x3e')]);var _0x584df={'where':_0x3caea6[_0x2f87('0x39')]};return db[_0x2f87('0x2b')][_0x2f87('0x1c')](_0x584df)[_0x2f87('0x24')](function(_0xf66826){_0x1d940b[_0x2f87('0x1c')]=_0xf66826;if(_0x280d52[_0x2f87('0x30')]['includeAll']){_0x3caea6['include']=[{'all':!![]}];}return db[_0x2f87('0x2b')][_0x2f87('0x3f')](_0x3caea6);})[_0x2f87('0x24')](function(_0x49fe4b){_0x1d940b['rows']=_0x49fe4b;return _0x1d940b;})[_0x2f87('0x24')](respondWithFilteredResult(_0x41df56,_0x3caea6))['catch'](handleError(_0x41df56,null));};exports[_0x2f87('0x40')]=function(_0x1e5038,_0x37b2ec){var _0x2cca6d={'raw':![],'where':{'id':_0x1e5038[_0x2f87('0x41')]['id']}},_0x3d4ba5={};_0x3d4ba5[_0x2f87('0x2e')]=_[_0x2f87('0x31')](db[_0x2f87('0x2b')][_0x2f87('0x42')]);_0x3d4ba5[_0x2f87('0x30')]=_[_0x2f87('0x31')](_0x1e5038['query']);_0x3d4ba5[_0x2f87('0x32')]=_['intersection'](_0x3d4ba5['model'],_0x3d4ba5[_0x2f87('0x30')]);_0x2cca6d[_0x2f87('0x34')]=_['intersection'](_0x3d4ba5[_0x2f87('0x2e')],qs[_0x2f87('0x35')](_0x1e5038[_0x2f87('0x30')][_0x2f87('0x35')]));_0x2cca6d[_0x2f87('0x34')]=_0x2cca6d[_0x2f87('0x34')][_0x2f87('0x43')]?_0x2cca6d['attributes']:_0x3d4ba5[_0x2f87('0x2e')];if(_0x1e5038[_0x2f87('0x30')][_0x2f87('0x44')]){_0x2cca6d[_0x2f87('0x45')]=[{'all':!![]}];}_0x2cca6d=_[_0x2f87('0x3c')]({},_0x2cca6d,_0x1e5038['options']);return db[_0x2f87('0x2b')]['find'](_0x2cca6d)['then'](handleEntityNotFound(_0x37b2ec,null))[_0x2f87('0x24')](respondWithResult(_0x37b2ec,null))['catch'](handleError(_0x37b2ec,null));};exports['create']=function(_0x1bc8c3,_0xf03002){return db[_0x2f87('0x2b')][_0x2f87('0x46')](_0x1bc8c3[_0x2f87('0x47')],{})['then'](respondWithResult(_0xf03002,0xc9))[_0x2f87('0x48')](handleError(_0xf03002,null));};exports['update']=function(_0x2a8edb,_0x25f90f){if(_0x2a8edb[_0x2f87('0x47')]['id']){delete _0x2a8edb[_0x2f87('0x47')]['id'];}return db['VtigerAccount'][_0x2f87('0x49')]({'where':{'id':_0x2a8edb[_0x2f87('0x41')]['id']}})[_0x2f87('0x24')](handleEntityNotFound(_0x25f90f,null))[_0x2f87('0x24')](saveUpdates(_0x2a8edb[_0x2f87('0x47')],null))[_0x2f87('0x24')](respondWithResult(_0x25f90f,null))[_0x2f87('0x48')](handleError(_0x25f90f,null));};exports[_0x2f87('0x4a')]=function(_0x21a186,_0x76d262){return db[_0x2f87('0x2b')][_0x2f87('0x49')]({'where':{'id':_0x21a186[_0x2f87('0x41')]['id']}})['then'](handleEntityNotFound(_0x76d262,null))[_0x2f87('0x24')](removeEntity(_0x76d262,null))[_0x2f87('0x48')](handleError(_0x76d262,null));};exports[_0x2f87('0x4b')]=function(_0x24373d,_0x286aa7,_0x54f733){var _0x4ff656={};var _0x578165={};var _0x1e4529;var _0x18ef3d;return db[_0x2f87('0x2b')]['findOne']({'where':{'id':_0x24373d['params']['id']}})[_0x2f87('0x24')](handleEntityNotFound(_0x286aa7,null))[_0x2f87('0x24')](function(_0x187e8b){if(_0x187e8b){_0x1e4529=_0x187e8b;_0x578165[_0x2f87('0x2e')]=_['keys'](db[_0x2f87('0x4c')][_0x2f87('0x42')]);_0x578165['query']=_['keys'](_0x24373d[_0x2f87('0x30')]);_0x578165[_0x2f87('0x32')]=_[_0x2f87('0x33')](_0x578165[_0x2f87('0x2e')],_0x578165[_0x2f87('0x30')]);_0x4ff656[_0x2f87('0x34')]=_[_0x2f87('0x33')](_0x578165[_0x2f87('0x2e')],qs[_0x2f87('0x35')](_0x24373d['query'][_0x2f87('0x35')]));_0x4ff656['attributes']=_0x4ff656[_0x2f87('0x34')][_0x2f87('0x43')]?_0x4ff656[_0x2f87('0x34')]:_0x578165['model'];_0x4ff656[_0x2f87('0x38')]=qs[_0x2f87('0x4d')](_0x24373d['query'][_0x2f87('0x4d')]);_0x4ff656[_0x2f87('0x39')]=qs['filters'](_[_0x2f87('0x3a')](_0x24373d[_0x2f87('0x30')],_0x578165[_0x2f87('0x32')]));if(_0x24373d['query'][_0x2f87('0x3b')]){_0x4ff656[_0x2f87('0x39')]=_[_0x2f87('0x3c')](_0x4ff656['where'],{'$or':_[_0x2f87('0x2f')](_0x4ff656['attributes'],function(_0x2b5533){var _0x2f64a4={};_0x2f64a4[_0x2b5533]={'$like':'%'+_0x24373d['query'][_0x2f87('0x3b')]+'%'};return _0x2f64a4;})});}_0x4ff656=_['merge']({},_0x4ff656,_0x24373d['options']);return _0x1e4529['getConfigurations'](_0x4ff656);}})[_0x2f87('0x24')](function(_0x4284cc){if(_0x4284cc){_0x18ef3d=_0x4284cc[_0x2f87('0x43')];if(!_0x24373d[_0x2f87('0x30')]['hasOwnProperty'](_0x2f87('0x37'))){_0x4ff656[_0x2f87('0x1b')]=qs[_0x2f87('0x1b')](_0x24373d['query'][_0x2f87('0x1b')]);_0x4ff656[_0x2f87('0x1d')]=qs['offset'](_0x24373d[_0x2f87('0x30')][_0x2f87('0x1d')]);}return _0x1e4529[_0x2f87('0x4b')](_0x4ff656);}})[_0x2f87('0x24')](function(_0x26f8ce){if(_0x26f8ce){return _0x26f8ce?{'count':_0x18ef3d,'rows':_0x26f8ce}:null;}})['then'](respondWithResult(_0x286aa7,null))[_0x2f87('0x48')](handleError(_0x286aa7,null));};exports[_0x2f87('0x4e')]=function(_0x41468f,_0x426387,_0x2aec07){if(_0x41468f[_0x2f87('0x47')]['id']){delete _0x41468f['body']['id'];}return db[_0x2f87('0x2b')][_0x2f87('0x4f')]({'where':{'id':_0x41468f[_0x2f87('0x41')]['id']}})[_0x2f87('0x24')](handleEntityNotFound(_0x426387,null))['then'](function(_0x126b96){if(_0x126b96){_0x41468f[_0x2f87('0x47')]['AccountId']=_0x126b96['id'];_0x41468f[_0x2f87('0x47')][_0x2f87('0x50')]=integrations[_0x2f87('0x51')](_0x41468f['body'][_0x2f87('0x52')],_0x41468f[_0x2f87('0x47')][_0x2f87('0x2d')]);_0x41468f[_0x2f87('0x47')]['Descriptions']=integrations[_0x2f87('0x53')](_0x41468f[_0x2f87('0x47')][_0x2f87('0x52')],_0x41468f[_0x2f87('0x47')][_0x2f87('0x2d')]);return db[_0x2f87('0x4c')][_0x2f87('0x46')](_0x41468f['body'],{'include':[{'model':db['VtigerField'],'as':_0x2f87('0x50')},{'model':db[_0x2f87('0x54')],'as':_0x2f87('0x55')}]});}return null;})['then'](respondWithResult(_0x426387,null))[_0x2f87('0x48')](handleError(_0x426387,null));};var md5=require(_0x2f87('0x56'));exports[_0x2f87('0x57')]=function(_0x4a3d8a,_0x4cc1a1,_0x2577cb){var _0x3c5314=null;var _0x21fcdb=null;var _0x17e700=null;var _0x2bb5d9=null;var _0x495d89='';return db[_0x2f87('0x2b')]['findOne']({'where':{'id':_0x4a3d8a[_0x2f87('0x41')]['id']},'attributes':['id',_0x2f87('0x28'),_0x2f87('0x58'),_0x2f87('0x59'),_0x2f87('0x5a'),_0x2f87('0x5b'),_0x2f87('0x5c'),'accessKey']})['then'](handleEntityNotFound(_0x4cc1a1,null))['then'](function(_0x5e75b2){if(_0x5e75b2){_0x3c5314=_0x5e75b2[_0x2f87('0x58')];_0x21fcdb=_0x5e75b2['accessKey'];_0x17e700=_0x5e75b2['moduleName'];_0x495d89=_0x5e75b2[_0x2f87('0x5b')];var _0x39929f=_0x495d89[_0x2f87('0x5d')](-0x1);if(_0x39929f==='/'){_0x495d89=_0x495d89[_0x2f87('0x5e')](0x0,_0x495d89['lastIndexOf'](_0x39929f));}_0x2bb5d9=util[_0x2f87('0x5f')]('%s/webservice.php',_0x495d89);var _0x4e28b9={'method':_0x2f87('0x60'),'uri':_0x2bb5d9,'qs':{'operation':_0x2f87('0x61'),'username':_0x5e75b2['username']},'json':!![]};return rp(_0x4e28b9);}})[_0x2f87('0x24')](function(_0x487938){if(_0x487938[_0x2f87('0x62')]){var _0x4cc526={'method':'POST','uri':_0x2bb5d9,'form':{'operation':'login','username':_0x3c5314,'accessKey':md5(_0x487938[_0x2f87('0x63')][_0x2f87('0x64')]+_0x21fcdb)},'json':!![]};return rp(_0x4cc526);}})[_0x2f87('0x24')](function(_0x173d3d){if(_0x173d3d[_0x2f87('0x62')]){var _0x4ec5c4={'method':_0x2f87('0x60'),'uri':_0x2bb5d9,'qs':{'operation':'describe','username':_0x3c5314,'sessionName':_0x173d3d[_0x2f87('0x63')][_0x2f87('0x65')],'elementType':_0x17e700},'json':!![]};return rp(_0x4ec5c4);}})['then'](function(_0x1bcc99){if(_0x1bcc99[_0x2f87('0x62')]){var _0x53d610=[_0x2f87('0x66'),_0x2f87('0x67'),'owner'];_[_0x2f87('0x68')](_0x1bcc99[_0x2f87('0x63')][_0x2f87('0x35')],function(_0x1b003f){return _0x53d610[_0x2f87('0x69')](_0x1b003f[_0x2f87('0x2d')][_0x2f87('0x28')]);});_[_0x2f87('0x68')](_0x1bcc99[_0x2f87('0x63')]['fields'],function(_0x2e9d9c){return _0x2e9d9c[_0x2f87('0x6a')]==='false';});return{'count':_0x1bcc99['result']['fields'][_0x2f87('0x43')],'rows':_[_0x2f87('0x2f')](_0x1bcc99[_0x2f87('0x63')][_0x2f87('0x35')],function(_0x440dfd){return{'id':_0x440dfd[_0x2f87('0x28')],'name':_0x440dfd['label'],'custom':_[_0x2f87('0x6b')](_0x440dfd[_0x2f87('0x28')],_0x2f87('0x6c'))?!![]:![],'options':_0x440dfd[_0x2f87('0x2d')][_0x2f87('0x28')]===_0x2f87('0x6d')&&_0x440dfd[_0x2f87('0x2d')]['picklistValues'][_0x2f87('0x43')]>0x0?_[_0x2f87('0x2f')](_0x440dfd[_0x2f87('0x2d')]['picklistValues'],function(_0xbc03a7){return{'name':_0xbc03a7[_0x2f87('0x6e')],'value':_0xbc03a7['value']};}):[]};})};}})[_0x2f87('0x24')](respondWithResult(_0x4cc1a1,null))[_0x2f87('0x48')](function(_0x5e7e12){console[_0x2f87('0x6f')](_0x2f87('0x70')+_0x5e7e12);var _0x2cad25=_0x4a3d8a[_0x2f87('0x30')][_0x2f87('0x71')]?0x1f4:_0x5e7e12[_0x2f87('0x72')]||0x1f4;logger[_0x2f87('0x26')](_0x2f87('0x73'),_0x2f87('0x57'),_0x2cad25,JSON[_0x2f87('0x74')](_0x5e7e12));delete _0x5e7e12[_0x2f87('0x28')];if(_0x2cad25===0x191){_0x2cad25=0x190;}_0x4cc1a1[_0x2f87('0x18')](_0x2cad25)[_0x2f87('0x29')](_0x4a3d8a[_0x2f87('0x30')][_0x2f87('0x71')]?{'message':_0x2f87('0x75'),'statusCode':_0x5e7e12['statusCode']}:_0x5e7e12);});};
\ No newline at end of file
+var _0x6b42=['create','body','getConfigurations','findOne','VtigerConfiguration','order','addConfiguration','AccountId','Subjects','channel','type','Descriptions','getDescriptions','VtigerField','getFields','username','description','moduleName','remoteUri','serverUrl','slice','format','%s/webservice.php','getchallenge','success','POST','login','token','describe','result','sessionName','autogenerated','reference','owner','remove','includes','editable','false','label','startsWith','cf_','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','stack','name','send','index','map','VtigerAccount','fieldName','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','length','find','catch'];(function(_0x42b70c,_0x5c7579){var _0x3a1173=function(_0x382390){while(--_0x382390){_0x42b70c['push'](_0x42b70c['shift']());}};_0x3a1173(++_0x5c7579);}(_0x6b42,0x11b));var _0x26b4=function(_0x34fd67,_0x2ba5df){_0x34fd67=_0x34fd67-0x0;var _0x14ccfa=_0x6b42[_0x34fd67];return _0x14ccfa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x26b4('0x0'));var zipdir=require(_0x26b4('0x1'));var jsonpatch=require(_0x26b4('0x2'));var rp=require(_0x26b4('0x3'));var moment=require(_0x26b4('0x4'));var BPromise=require(_0x26b4('0x5'));var Mustache=require('mustache');var util=require(_0x26b4('0x6'));var path=require('path');var sox=require(_0x26b4('0x7'));var csv=require(_0x26b4('0x8'));var ejs=require(_0x26b4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26b4('0xa'));var squel=require(_0x26b4('0xb'));var crypto=require('crypto');var jsforce=require(_0x26b4('0xc'));var deskjs=require(_0x26b4('0xd'));var toCsv=require(_0x26b4('0x8'));var querystring=require(_0x26b4('0xe'));var Papa=require(_0x26b4('0xf'));var Redis=require('ioredis');var authService=require(_0x26b4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x26b4('0x11'));var hardwareService=require(_0x26b4('0x12'));var logger=require(_0x26b4('0x13'))(_0x26b4('0x14'));var utils=require(_0x26b4('0x15'));var config=require(_0x26b4('0x16'));var licenseUtil=require(_0x26b4('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x41fdbd,_0x1b250f){_0x1b250f=_0x1b250f||0xcc;return function(_0xac8ed0){if(_0xac8ed0){return _0x41fdbd[_0x26b4('0x18')](_0x1b250f);}return _0x41fdbd['status'](_0x1b250f)['end']();};}function respondWithResult(_0x4532eb,_0x3f2e7b){_0x3f2e7b=_0x3f2e7b||0xc8;return function(_0x129582){if(_0x129582){return _0x4532eb[_0x26b4('0x19')](_0x3f2e7b)[_0x26b4('0x1a')](_0x129582);}};}function respondWithFilteredResult(_0x5d7afd,_0x3aceda){return function(_0x21c4fc){if(_0x21c4fc){var _0x2b21c6=typeof _0x3aceda[_0x26b4('0x1b')]===_0x26b4('0x1c')&&typeof _0x3aceda[_0x26b4('0x1d')]===_0x26b4('0x1c');var _0xe77841=_0x21c4fc[_0x26b4('0x1e')];var _0x7ba313=_0x2b21c6?0x0:_0x3aceda[_0x26b4('0x1b')];var _0x24c0c1=_0x2b21c6?_0x21c4fc[_0x26b4('0x1e')]:_0x3aceda['offset']+_0x3aceda[_0x26b4('0x1d')];var _0x3f7bc4;if(_0x24c0c1>=_0xe77841){_0x24c0c1=_0xe77841;_0x3f7bc4=0xc8;}else{_0x3f7bc4=0xce;}_0x5d7afd['status'](_0x3f7bc4);return _0x5d7afd['set'](_0x26b4('0x1f'),_0x7ba313+'-'+_0x24c0c1+'/'+_0xe77841)[_0x26b4('0x1a')](_0x21c4fc);}return null;};}function patchUpdates(_0x530bf1){return function(_0x732c9b){try{jsonpatch['apply'](_0x732c9b,_0x530bf1,!![]);}catch(_0x1df5b3){return BPromise['reject'](_0x1df5b3);}return _0x732c9b['save']();};}function saveUpdates(_0x52494c,_0x23791a){return function(_0x27ab04){if(_0x27ab04){return _0x27ab04[_0x26b4('0x20')](_0x52494c)[_0x26b4('0x21')](function(_0x4fbbc0){return _0x4fbbc0;});}return null;};}function removeEntity(_0x535a88,_0x48b763){return function(_0x3ceb3c){if(_0x3ceb3c){return _0x3ceb3c[_0x26b4('0x22')]()[_0x26b4('0x21')](function(){_0x535a88[_0x26b4('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x594b5b,_0xd4365b){return function(_0x9f1025){if(!_0x9f1025){_0x594b5b[_0x26b4('0x18')](0x194);}return _0x9f1025;};}function handleError(_0x4bf18c,_0x385bc3){_0x385bc3=_0x385bc3||0x1f4;return function(_0x1b5377){logger['error'](_0x1b5377[_0x26b4('0x23')]);if(_0x1b5377['name']){delete _0x1b5377[_0x26b4('0x24')];}_0x4bf18c[_0x26b4('0x19')](_0x385bc3)[_0x26b4('0x25')](_0x1b5377);};}exports[_0x26b4('0x26')]=function(_0x4675a1,_0x4077c6){var _0x2e0a31={},_0x15ce7d={},_0x2ea13e={'count':0x0,'rows':[]};var _0x452f3c=_[_0x26b4('0x27')](db[_0x26b4('0x28')]['rawAttributes'],function(_0x10f277){return{'name':_0x10f277[_0x26b4('0x29')],'type':_0x10f277['type']['key']};});_0x15ce7d[_0x26b4('0x2a')]=_[_0x26b4('0x27')](_0x452f3c,_0x26b4('0x24'));_0x15ce7d[_0x26b4('0x2b')]=_[_0x26b4('0x2c')](_0x4675a1[_0x26b4('0x2b')]);_0x15ce7d['filters']=_['intersection'](_0x15ce7d[_0x26b4('0x2a')],_0x15ce7d[_0x26b4('0x2b')]);_0x2e0a31[_0x26b4('0x2d')]=_[_0x26b4('0x2e')](_0x15ce7d[_0x26b4('0x2a')],qs[_0x26b4('0x2f')](_0x4675a1[_0x26b4('0x2b')][_0x26b4('0x2f')]));_0x2e0a31[_0x26b4('0x2d')]=_0x2e0a31[_0x26b4('0x2d')]['length']?_0x2e0a31['attributes']:_0x15ce7d[_0x26b4('0x2a')];if(!_0x4675a1[_0x26b4('0x2b')][_0x26b4('0x30')](_0x26b4('0x31'))){_0x2e0a31[_0x26b4('0x1d')]=qs['limit'](_0x4675a1[_0x26b4('0x2b')][_0x26b4('0x1d')]);_0x2e0a31[_0x26b4('0x1b')]=qs[_0x26b4('0x1b')](_0x4675a1[_0x26b4('0x2b')][_0x26b4('0x1b')]);}_0x2e0a31['order']=qs[_0x26b4('0x32')](_0x4675a1['query']['sort']);_0x2e0a31[_0x26b4('0x33')]=qs[_0x26b4('0x34')](_[_0x26b4('0x35')](_0x4675a1[_0x26b4('0x2b')],_0x15ce7d[_0x26b4('0x34')]),_0x452f3c);if(_0x4675a1['query'][_0x26b4('0x36')]){_0x2e0a31['where']=_[_0x26b4('0x37')](_0x2e0a31[_0x26b4('0x33')],{'$or':_[_0x26b4('0x27')](_0x452f3c,function(_0x7de84a){if(_0x7de84a['type']!==_0x26b4('0x38')){var _0x10d933={};_0x10d933[_0x7de84a[_0x26b4('0x24')]]={'$like':'%'+_0x4675a1[_0x26b4('0x2b')][_0x26b4('0x36')]+'%'};return _0x10d933;}})});}_0x2e0a31=_[_0x26b4('0x37')]({},_0x2e0a31,_0x4675a1[_0x26b4('0x39')]);var _0x557d18={'where':_0x2e0a31[_0x26b4('0x33')]};return db[_0x26b4('0x28')]['count'](_0x557d18)[_0x26b4('0x21')](function(_0x3e017e){_0x2ea13e[_0x26b4('0x1e')]=_0x3e017e;if(_0x4675a1[_0x26b4('0x2b')][_0x26b4('0x3a')]){_0x2e0a31[_0x26b4('0x3b')]=[{'all':!![]}];}return db['VtigerAccount'][_0x26b4('0x3c')](_0x2e0a31);})[_0x26b4('0x21')](function(_0x580264){_0x2ea13e[_0x26b4('0x3d')]=_0x580264;return _0x2ea13e;})[_0x26b4('0x21')](respondWithFilteredResult(_0x4077c6,_0x2e0a31))['catch'](handleError(_0x4077c6,null));};exports[_0x26b4('0x3e')]=function(_0x5a5d60,_0x24513a){var _0x1c81a5={'raw':![],'where':{'id':_0x5a5d60[_0x26b4('0x3f')]['id']}},_0x1c76cd={};_0x1c76cd[_0x26b4('0x2a')]=_[_0x26b4('0x2c')](db[_0x26b4('0x28')][_0x26b4('0x40')]);_0x1c76cd[_0x26b4('0x2b')]=_['keys'](_0x5a5d60['query']);_0x1c76cd['filters']=_['intersection'](_0x1c76cd[_0x26b4('0x2a')],_0x1c76cd[_0x26b4('0x2b')]);_0x1c81a5['attributes']=_[_0x26b4('0x2e')](_0x1c76cd[_0x26b4('0x2a')],qs[_0x26b4('0x2f')](_0x5a5d60[_0x26b4('0x2b')][_0x26b4('0x2f')]));_0x1c81a5['attributes']=_0x1c81a5['attributes'][_0x26b4('0x41')]?_0x1c81a5[_0x26b4('0x2d')]:_0x1c76cd[_0x26b4('0x2a')];if(_0x5a5d60['query'][_0x26b4('0x3a')]){_0x1c81a5['include']=[{'all':!![]}];}_0x1c81a5=_[_0x26b4('0x37')]({},_0x1c81a5,_0x5a5d60[_0x26b4('0x39')]);return db['VtigerAccount'][_0x26b4('0x42')](_0x1c81a5)[_0x26b4('0x21')](handleEntityNotFound(_0x24513a,null))[_0x26b4('0x21')](respondWithResult(_0x24513a,null))[_0x26b4('0x43')](handleError(_0x24513a,null));};exports['create']=function(_0x5659c8,_0x4a10b2){return db['VtigerAccount'][_0x26b4('0x44')](_0x5659c8[_0x26b4('0x45')],{})[_0x26b4('0x21')](respondWithResult(_0x4a10b2,0xc9))['catch'](handleError(_0x4a10b2,null));};exports[_0x26b4('0x20')]=function(_0x3042a1,_0x31fe48){if(_0x3042a1[_0x26b4('0x45')]['id']){delete _0x3042a1['body']['id'];}return db[_0x26b4('0x28')][_0x26b4('0x42')]({'where':{'id':_0x3042a1[_0x26b4('0x3f')]['id']}})[_0x26b4('0x21')](handleEntityNotFound(_0x31fe48,null))[_0x26b4('0x21')](saveUpdates(_0x3042a1[_0x26b4('0x45')],null))[_0x26b4('0x21')](respondWithResult(_0x31fe48,null))['catch'](handleError(_0x31fe48,null));};exports[_0x26b4('0x22')]=function(_0x4feb84,_0x3861f7){return db[_0x26b4('0x28')]['find']({'where':{'id':_0x4feb84[_0x26b4('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3861f7,null))['then'](removeEntity(_0x3861f7,null))[_0x26b4('0x43')](handleError(_0x3861f7,null));};exports[_0x26b4('0x46')]=function(_0x1177c9,_0x4330e4,_0x59a745){var _0x29f33b={};var _0x5f583c={};var _0x227ed5;var _0x271aea;return db['VtigerAccount'][_0x26b4('0x47')]({'where':{'id':_0x1177c9[_0x26b4('0x3f')]['id']}})[_0x26b4('0x21')](handleEntityNotFound(_0x4330e4,null))[_0x26b4('0x21')](function(_0x9ba4ee){if(_0x9ba4ee){_0x227ed5=_0x9ba4ee;_0x5f583c[_0x26b4('0x2a')]=_['keys'](db[_0x26b4('0x48')][_0x26b4('0x40')]);_0x5f583c[_0x26b4('0x2b')]=_[_0x26b4('0x2c')](_0x1177c9[_0x26b4('0x2b')]);_0x5f583c[_0x26b4('0x34')]=_[_0x26b4('0x2e')](_0x5f583c[_0x26b4('0x2a')],_0x5f583c[_0x26b4('0x2b')]);_0x29f33b[_0x26b4('0x2d')]=_[_0x26b4('0x2e')](_0x5f583c[_0x26b4('0x2a')],qs['fields'](_0x1177c9[_0x26b4('0x2b')][_0x26b4('0x2f')]));_0x29f33b[_0x26b4('0x2d')]=_0x29f33b[_0x26b4('0x2d')][_0x26b4('0x41')]?_0x29f33b['attributes']:_0x5f583c[_0x26b4('0x2a')];_0x29f33b[_0x26b4('0x49')]=qs['sort'](_0x1177c9[_0x26b4('0x2b')][_0x26b4('0x32')]);_0x29f33b['where']=qs[_0x26b4('0x34')](_[_0x26b4('0x35')](_0x1177c9['query'],_0x5f583c[_0x26b4('0x34')]));if(_0x1177c9['query'][_0x26b4('0x36')]){_0x29f33b['where']=_['merge'](_0x29f33b[_0x26b4('0x33')],{'$or':_[_0x26b4('0x27')](_0x29f33b['attributes'],function(_0x42e59c){var _0x53b5bb={};_0x53b5bb[_0x42e59c]={'$like':'%'+_0x1177c9[_0x26b4('0x2b')][_0x26b4('0x36')]+'%'};return _0x53b5bb;})});}_0x29f33b=_['merge']({},_0x29f33b,_0x1177c9[_0x26b4('0x39')]);return _0x227ed5[_0x26b4('0x46')](_0x29f33b);}})[_0x26b4('0x21')](function(_0x15117b){if(_0x15117b){_0x271aea=_0x15117b['length'];if(!_0x1177c9[_0x26b4('0x2b')]['hasOwnProperty']('nolimit')){_0x29f33b['limit']=qs[_0x26b4('0x1d')](_0x1177c9['query'][_0x26b4('0x1d')]);_0x29f33b[_0x26b4('0x1b')]=qs[_0x26b4('0x1b')](_0x1177c9['query']['offset']);}return _0x227ed5[_0x26b4('0x46')](_0x29f33b);}})[_0x26b4('0x21')](function(_0xdb7c3d){if(_0xdb7c3d){return _0xdb7c3d?{'count':_0x271aea,'rows':_0xdb7c3d}:null;}})[_0x26b4('0x21')](respondWithResult(_0x4330e4,null))[_0x26b4('0x43')](handleError(_0x4330e4,null));};exports[_0x26b4('0x4a')]=function(_0x1baf62,_0x50a29b,_0x287bf5){if(_0x1baf62[_0x26b4('0x45')]['id']){delete _0x1baf62[_0x26b4('0x45')]['id'];}return db['VtigerAccount']['findOne']({'where':{'id':_0x1baf62[_0x26b4('0x3f')]['id']}})[_0x26b4('0x21')](handleEntityNotFound(_0x50a29b,null))[_0x26b4('0x21')](function(_0x612d8d){if(_0x612d8d){_0x1baf62[_0x26b4('0x45')][_0x26b4('0x4b')]=_0x612d8d['id'];_0x1baf62[_0x26b4('0x45')][_0x26b4('0x4c')]=integrations['getSubjects'](_0x1baf62['body'][_0x26b4('0x4d')],_0x1baf62[_0x26b4('0x45')][_0x26b4('0x4e')]);_0x1baf62[_0x26b4('0x45')][_0x26b4('0x4f')]=integrations[_0x26b4('0x50')](_0x1baf62[_0x26b4('0x45')][_0x26b4('0x4d')],_0x1baf62[_0x26b4('0x45')][_0x26b4('0x4e')]);return db['VtigerConfiguration'][_0x26b4('0x44')](_0x1baf62[_0x26b4('0x45')],{'include':[{'model':db[_0x26b4('0x51')],'as':'Subjects'},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})[_0x26b4('0x21')](respondWithResult(_0x50a29b,null))[_0x26b4('0x43')](handleError(_0x50a29b,null));};var md5=require('md5');exports[_0x26b4('0x52')]=function(_0x3de6f5,_0xbac051,_0x190a3b){var _0xe9bbe=null;var _0x1a394e=null;var _0x307750=null;var _0x337c46=null;var _0x3a903e='';return db[_0x26b4('0x28')][_0x26b4('0x47')]({'where':{'id':_0x3de6f5[_0x26b4('0x3f')]['id']},'attributes':['id','name',_0x26b4('0x53'),_0x26b4('0x54'),_0x26b4('0x55'),_0x26b4('0x56'),_0x26b4('0x57'),'accessKey']})[_0x26b4('0x21')](handleEntityNotFound(_0xbac051,null))[_0x26b4('0x21')](function(_0x1fe72b){if(_0x1fe72b){_0xe9bbe=_0x1fe72b['username'];_0x1a394e=_0x1fe72b['accessKey'];_0x307750=_0x1fe72b[_0x26b4('0x55')];_0x3a903e=_0x1fe72b[_0x26b4('0x56')];var _0xc60090=_0x3a903e[_0x26b4('0x58')](-0x1);if(_0xc60090==='/'){_0x3a903e=_0x3a903e['substring'](0x0,_0x3a903e['lastIndexOf'](_0xc60090));}_0x337c46=util[_0x26b4('0x59')](_0x26b4('0x5a'),_0x3a903e);var _0x4f1883={'method':'GET','uri':_0x337c46,'qs':{'operation':_0x26b4('0x5b'),'username':_0x1fe72b[_0x26b4('0x53')]},'json':!![]};return rp(_0x4f1883);}})['then'](function(_0x977952){if(_0x977952[_0x26b4('0x5c')]){var _0x349e45={'method':_0x26b4('0x5d'),'uri':_0x337c46,'form':{'operation':_0x26b4('0x5e'),'username':_0xe9bbe,'accessKey':md5(_0x977952['result'][_0x26b4('0x5f')]+_0x1a394e)},'json':!![]};return rp(_0x349e45);}})[_0x26b4('0x21')](function(_0x3002af){if(_0x3002af[_0x26b4('0x5c')]){var _0x27c98f={'method':'GET','uri':_0x337c46,'qs':{'operation':_0x26b4('0x60'),'username':_0xe9bbe,'sessionName':_0x3002af[_0x26b4('0x61')][_0x26b4('0x62')],'elementType':_0x307750},'json':!![]};return rp(_0x27c98f);}})[_0x26b4('0x21')](function(_0x291fbd){if(_0x291fbd['success']){var _0x25047a=[_0x26b4('0x63'),_0x26b4('0x64'),_0x26b4('0x65')];_[_0x26b4('0x66')](_0x291fbd[_0x26b4('0x61')][_0x26b4('0x2f')],function(_0x363928){return _0x25047a[_0x26b4('0x67')](_0x363928[_0x26b4('0x4e')]['name']);});_[_0x26b4('0x66')](_0x291fbd['result'][_0x26b4('0x2f')],function(_0x7a73b3){return _0x7a73b3[_0x26b4('0x68')]===_0x26b4('0x69');});return{'count':_0x291fbd[_0x26b4('0x61')][_0x26b4('0x2f')][_0x26b4('0x41')],'rows':_[_0x26b4('0x27')](_0x291fbd[_0x26b4('0x61')]['fields'],function(_0x4769e8){return{'id':_0x4769e8['name'],'name':_0x4769e8[_0x26b4('0x6a')],'custom':_[_0x26b4('0x6b')](_0x4769e8[_0x26b4('0x24')],_0x26b4('0x6c'))?!![]:![],'options':_0x4769e8[_0x26b4('0x4e')]['name']==='picklist'&&_0x4769e8[_0x26b4('0x4e')][_0x26b4('0x6d')]['length']>0x0?_[_0x26b4('0x27')](_0x4769e8[_0x26b4('0x4e')]['picklistValues'],function(_0x2a0208){return{'name':_0x2a0208[_0x26b4('0x6a')],'value':_0x2a0208[_0x26b4('0x6e')]};}):[]};})};}})[_0x26b4('0x21')](respondWithResult(_0xbac051,null))[_0x26b4('0x43')](function(_0x4d1d2b){console[_0x26b4('0x6f')](_0x26b4('0x70')+_0x4d1d2b);var _0x5a6e07=_0x3de6f5['query'][_0x26b4('0x71')]?0x1f4:_0x4d1d2b[_0x26b4('0x72')]||0x1f4;logger['error'](_0x26b4('0x73'),_0x26b4('0x52'),_0x5a6e07,JSON['stringify'](_0x4d1d2b));delete _0x4d1d2b[_0x26b4('0x24')];if(_0x5a6e07===0x191){_0x5a6e07=0x190;}_0xbac051[_0x26b4('0x19')](_0x5a6e07)['send'](_0x3de6f5[_0x26b4('0x2b')][_0x26b4('0x71')]?{'message':_0x26b4('0x74'),'statusCode':_0x4d1d2b[_0x26b4('0x72')]}:_0x4d1d2b);});};
\ No newline at end of file
index 4dbb3e3..a480f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9afe=['moment','bluebird','request-promise','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x182593,_0x48b37f){var _0x50c9a8=function(_0x556af9){while(--_0x556af9){_0x182593['push'](_0x182593['shift']());}};_0x50c9a8(++_0x48b37f);}(_0x9afe,0x14f));var _0xe9af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9afe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe9af('0x0'));var util=require(_0xe9af('0x1'));var logger=require(_0xe9af('0x2'))('api');var moment=require(_0xe9af('0x3'));var BPromise=require(_0xe9af('0x4'));var rp=require(_0xe9af('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe9af('0x6'));var attributes=require(_0xe9af('0x7'));var integrations=require(_0xe9af('0x8'));module[_0xe9af('0x9')]=function(_0xe6fd34,_0x44b70a){return _0xe6fd34[_0xe9af('0xa')](_0xe9af('0xb'),attributes,{'tableName':_0xe9af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7870=['../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x7870,0x92));var _0x0787=function(_0x249e36,_0x3e88b0){_0x249e36=_0x249e36-0x0;var _0x567097=_0x7870[_0x249e36];return _0x567097;};'use strict';var _=require(_0x0787('0x0'));var util=require('util');var logger=require(_0x0787('0x1'))(_0x0787('0x2'));var moment=require(_0x0787('0x3'));var BPromise=require(_0x0787('0x4'));var rp=require(_0x0787('0x5'));var fs=require('fs');var path=require(_0x0787('0x6'));var rimraf=require(_0x0787('0x7'));var config=require(_0x0787('0x8'));var attributes=require(_0x0787('0x9'));var integrations=require(_0x0787('0xa'));module[_0x0787('0xb')]=function(_0x3a933d,_0x1efd0b){return _0x3a933d['define'](_0x0787('0xc'),attributes,{'tableName':_0x0787('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1bb7e7..debe4ec 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(_0x1b15d4,_0xdb8718){var _0x418e68=function(_0x277aa9){while(--_0x277aa9){_0x1b15d4['push'](_0x1b15d4['shift']());}};_0x418e68(++_0xdb8718);}(_0xb10b,0x12a));var _0xbb10=function(_0x3d7f0e,_0x104d69){_0x3d7f0e=_0x3d7f0e-0x0;var _0x3e45dd=_0xb10b[_0x3d7f0e];return _0x3e45dd;};'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 _0xb7e7=['request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include','map','model','ShowVtigerAccount','find','where','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http'];(function(_0x517dd3,_0xa92da1){var _0x40c88e=function(_0x4f3cfe){while(--_0x4f3cfe){_0x517dd3['push'](_0x517dd3['shift']());}};_0x40c88e(++_0xa92da1);}(_0xb7e7,0x121));var _0x7b7e=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0xb7e7[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}exports[_0x7b7e('0x14')]=function(_0x242368){var _0x200ef7=this;return new Promise(function(_0x2acb8c,_0x429a0e){return db[_0x7b7e('0x15')][_0x7b7e('0x16')]({'raw':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x18')]===undefined?!![]:![]:!![],'where':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')]['where']||null:null,'attributes':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x19')]||null:null,'limit':_0x242368['options']?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x1a')]||null:null,'include':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x242368[_0x7b7e('0x17')][_0x7b7e('0x1b')],function(_0x53bbb3){return{'model':db[_0x53bbb3['model']],'as':_0x53bbb3['as'],'attributes':_0x53bbb3['attributes'],'include':_0x53bbb3[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x53bbb3[_0x7b7e('0x1b')],function(_0x483c6f){return{'model':db[_0x483c6f['model']],'as':_0x483c6f['as'],'attributes':_0x483c6f['attributes'],'include':_0x483c6f[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x483c6f[_0x7b7e('0x1b')],function(_0x7aa71){return{'model':db[_0x7aa71[_0x7b7e('0x1d')]],'as':_0x7aa71['as'],'attributes':_0x7aa71['attributes']};}):[]};}):[]};}):[]:[]})[_0x7b7e('0x9')](function(_0x21a15){logger['info']('GetVtigerAccount',_0x242368);logger['debug'](_0x7b7e('0x14'),_0x242368,JSON[_0x7b7e('0xf')](_0x21a15));_0x2acb8c(_0x21a15);})['catch'](function(_0x3db8c4){logger['error'](_0x7b7e('0x14'),_0x3db8c4[_0x7b7e('0x12')],_0x242368);_0x429a0e(_0x200ef7[_0x7b7e('0x10')](0x1f4,_0x3db8c4['message']));});});};exports[_0x7b7e('0x1e')]=function(_0xe31336){var _0x35602a=this;return new Promise(function(_0x326dd2,_0x33f9a1){return db['VtigerAccount'][_0x7b7e('0x1f')]({'raw':_0xe31336['options']?_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x18')]===undefined?!![]:![]:!![],'where':_0xe31336[_0x7b7e('0x17')]?_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x20')]||null:null,'attributes':_0xe31336[_0x7b7e('0x17')]?_0xe31336[_0x7b7e('0x17')]['attributes']||null:null,'include':_0xe31336['options']?_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x1b')]?_['map'](_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x1b')],function(_0x2ca366){return{'model':db[_0x2ca366['model']],'as':_0x2ca366['as'],'attributes':_0x2ca366[_0x7b7e('0x19')],'include':_0x2ca366[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x2ca366[_0x7b7e('0x1b')],function(_0x31043a){return{'model':db[_0x31043a[_0x7b7e('0x1d')]],'as':_0x31043a['as'],'attributes':_0x31043a[_0x7b7e('0x19')],'include':_0x31043a[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x31043a[_0x7b7e('0x1b')],function(_0xd5a64d){return{'model':db[_0xd5a64d[_0x7b7e('0x1d')]],'as':_0xd5a64d['as'],'attributes':_0xd5a64d[_0x7b7e('0x19')]};}):[]};}):[]};}):[]:[]})[_0x7b7e('0x9')](function(_0x116563){logger[_0x7b7e('0xa')]('ShowVtigerAccount',_0xe31336);logger[_0x7b7e('0xc')](_0x7b7e('0x1e'),_0xe31336,JSON[_0x7b7e('0xf')](_0x116563));_0x326dd2(_0x116563);})[_0x7b7e('0x13')](function(_0x36abfc){logger[_0x7b7e('0x10')](_0x7b7e('0x1e'),_0x36abfc[_0x7b7e('0x12')],_0xe31336);_0x33f9a1(_0x35602a[_0x7b7e('0x10')](0x1f4,_0x36abfc[_0x7b7e('0x12')]));});});};
\ No newline at end of file
index cfac9b3..78205cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce07=['get','/:id','show','getFields','getSubjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../config/environment','./intVtigerConfiguration.controller','isAuthenticated','index'];(function(_0x413713,_0x43ea67){var _0x16f6a5=function(_0xc28228){while(--_0xc28228){_0x413713['push'](_0x413713['shift']());}};_0x16f6a5(++_0x43ea67);}(_0xce07,0xa7));var _0x7ce0=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xce07[_0x5d6456];return _0x4d66c1;};'use strict';var multer=require(_0x7ce0('0x0'));var util=require(_0x7ce0('0x1'));var path=require(_0x7ce0('0x2'));var timeout=require(_0x7ce0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7ce0('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7ce0('0x5'));var controller=require(_0x7ce0('0x6'));router['get']('/',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0x8')]);router[_0x7ce0('0x9')](_0x7ce0('0xa'),auth[_0x7ce0('0x7')](),controller[_0x7ce0('0xb')]);router[_0x7ce0('0x9')]('/:id/fields',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0xc')]);router[_0x7ce0('0x9')]('/:id/subjects',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0xd')]);router[_0x7ce0('0x9')](_0x7ce0('0xe'),auth['isAuthenticated'](),controller[_0x7ce0('0xf')]);router['post']('/',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0x10')]);router[_0x7ce0('0x11')](_0x7ce0('0xa'),auth['isAuthenticated'](),controller[_0x7ce0('0x12')]);router[_0x7ce0('0x13')](_0x7ce0('0xa'),auth[_0x7ce0('0x7')](),controller[_0x7ce0('0x14')]);module[_0x7ce0('0x15')]=router;
\ No newline at end of file
+var _0x8efd=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','delete','destroy','exports','path','connect-timeout'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x8efd,0x157));var _0xd8ef=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x8efd[_0x199572];return _0x13cfa3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd8ef('0x0'));var timeout=require(_0xd8ef('0x1'));var express=require(_0xd8ef('0x2'));var router=express[_0xd8ef('0x3')]();var fs_extra=require(_0xd8ef('0x4'));var auth=require(_0xd8ef('0x5'));var interaction=require(_0xd8ef('0x6'));var config=require(_0xd8ef('0x7'));var controller=require(_0xd8ef('0x8'));router[_0xd8ef('0x9')]('/',auth[_0xd8ef('0xa')](),controller[_0xd8ef('0xb')]);router[_0xd8ef('0x9')](_0xd8ef('0xc'),auth[_0xd8ef('0xa')](),controller[_0xd8ef('0xd')]);router['get'](_0xd8ef('0xe'),auth[_0xd8ef('0xa')](),controller[_0xd8ef('0xf')]);router[_0xd8ef('0x9')]('/:id/subjects',auth[_0xd8ef('0xa')](),controller[_0xd8ef('0x10')]);router[_0xd8ef('0x9')](_0xd8ef('0x11'),auth['isAuthenticated'](),controller[_0xd8ef('0x12')]);router[_0xd8ef('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xd8ef('0xc'),auth[_0xd8ef('0xa')](),controller['update']);router[_0xd8ef('0x14')](_0xd8ef('0xc'),auth['isAuthenticated'](),controller[_0xd8ef('0x15')]);module[_0xd8ef('0x16')]=router;
\ No newline at end of file
index 248e54e..0774a3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08b5=['sequelize','exports'];(function(_0x334fe5,_0xf96f3b){var _0x510cb4=function(_0xe98e08){while(--_0xe98e08){_0x334fe5['push'](_0x334fe5['shift']());}};_0x510cb4(++_0xf96f3b);}(_0x08b5,0x124));var _0x508b=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x08b5[_0x2b7764];return _0x848dcb;};'use strict';var Sequelize=require(_0x508b('0x0'));module[_0x508b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8ea3=['sequelize','exports','STRING'];(function(_0x269061,_0xb7ebca){var _0x4649cc=function(_0x69316e){while(--_0x69316e){_0x269061['push'](_0x269061['shift']());}};_0x4649cc(++_0xb7ebca);}(_0x8ea3,0x18c));var _0x38ea=function(_0xf7cb5f,_0x3e97cb){_0xf7cb5f=_0xf7cb5f-0x0;var _0x906947=_0x8ea3[_0xf7cb5f];return _0x906947;};'use strict';var Sequelize=require(_0x38ea('0x0'));module[_0x38ea('0x1')]={'name':{'type':Sequelize[_0x38ea('0x2')]},'description':{'type':Sequelize[_0x38ea('0x2')]}};
\ No newline at end of file
index 38ebeaa..05f0eb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c7e=['papaparse','ioredis','../../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','stack','name','index','VtigerConfiguration','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','body','VtigerField','pick','getFields','nolimit','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring'];(function(_0x44774d,_0x27fe98){var _0x282b23=function(_0x3b05d4){while(--_0x3b05d4){_0x44774d['push'](_0x44774d['shift']());}};_0x282b23(++_0x27fe98);}(_0x5c7e,0x16e));var _0xe5c7=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x5c7e[_0x39e283];return _0x7de89f;};'use strict';var emlformat=require(_0xe5c7('0x0'));var rimraf=require(_0xe5c7('0x1'));var zipdir=require(_0xe5c7('0x2'));var jsonpatch=require(_0xe5c7('0x3'));var rp=require(_0xe5c7('0x4'));var moment=require('moment');var BPromise=require(_0xe5c7('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe5c7('0x6'));var sox=require(_0xe5c7('0x7'));var csv=require(_0xe5c7('0x8'));var ejs=require(_0xe5c7('0x9'));var fs=require('fs');var fs_extra=require(_0xe5c7('0xa'));var _=require(_0xe5c7('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe5c7('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe5c7('0x8'));var querystring=require(_0xe5c7('0xd'));var Papa=require(_0xe5c7('0xe'));var Redis=require(_0xe5c7('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe5c7('0x10'));var logger=require(_0xe5c7('0x11'))(_0xe5c7('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe5c7('0x13'));var db=require(_0xe5c7('0x14'))['db'];function respondWithStatusCode(_0x429cf9,_0x3d510e){_0x3d510e=_0x3d510e||0xcc;return function(_0x3cd062){if(_0x3cd062){return _0x429cf9[_0xe5c7('0x15')](_0x3d510e);}return _0x429cf9[_0xe5c7('0x16')](_0x3d510e)['end']();};}function respondWithResult(_0x5a4c2b,_0x19fdc0){_0x19fdc0=_0x19fdc0||0xc8;return function(_0x314e80){if(_0x314e80){return _0x5a4c2b['status'](_0x19fdc0)[_0xe5c7('0x17')](_0x314e80);}};}function respondWithFilteredResult(_0xdec4b5,_0x11f6ed){return function(_0x5dbd1b){if(_0x5dbd1b){var _0x5e2020=typeof _0x11f6ed[_0xe5c7('0x18')]===_0xe5c7('0x19')&&typeof _0x11f6ed[_0xe5c7('0x1a')]===_0xe5c7('0x19');var _0x2157df=_0x5dbd1b[_0xe5c7('0x1b')];var _0x22aee7=_0x5e2020?0x0:_0x11f6ed[_0xe5c7('0x18')];var _0x2a4b04=_0x5e2020?_0x5dbd1b[_0xe5c7('0x1b')]:_0x11f6ed[_0xe5c7('0x18')]+_0x11f6ed[_0xe5c7('0x1a')];var _0x4936bf;if(_0x2a4b04>=_0x2157df){_0x2a4b04=_0x2157df;_0x4936bf=0xc8;}else{_0x4936bf=0xce;}_0xdec4b5[_0xe5c7('0x16')](_0x4936bf);return _0xdec4b5[_0xe5c7('0x1c')](_0xe5c7('0x1d'),_0x22aee7+'-'+_0x2a4b04+'/'+_0x2157df)['json'](_0x5dbd1b);}return null;};}function patchUpdates(_0x23e8b2){return function(_0x32bc4b){try{jsonpatch[_0xe5c7('0x1e')](_0x32bc4b,_0x23e8b2,!![]);}catch(_0x34cde1){return BPromise[_0xe5c7('0x1f')](_0x34cde1);}return _0x32bc4b[_0xe5c7('0x20')]();};}function saveUpdates(_0x1890b0,_0x4cac76){return function(_0x3239b5){if(_0x3239b5){return _0x3239b5[_0xe5c7('0x21')](_0x1890b0)[_0xe5c7('0x22')](function(_0x59513b){return _0x59513b;});}return null;};}function removeEntity(_0x2078ad,_0x53c412){return function(_0x47aed2){if(_0x47aed2){return _0x47aed2[_0xe5c7('0x23')]()['then'](function(){_0x2078ad[_0xe5c7('0x16')](0xcc)[_0xe5c7('0x24')]();});}};}function handleEntityNotFound(_0x4b979b,_0xde06e3){return function(_0x327c88){if(!_0x327c88){_0x4b979b[_0xe5c7('0x15')](0x194);}return _0x327c88;};}function handleError(_0x77f77c,_0x4dac3c){_0x4dac3c=_0x4dac3c||0x1f4;return function(_0x268e02){logger['error'](_0x268e02[_0xe5c7('0x25')]);if(_0x268e02['name']){delete _0x268e02[_0xe5c7('0x26')];}_0x77f77c['status'](_0x4dac3c)['send'](_0x268e02);};}exports[_0xe5c7('0x27')]=function(_0x2ac0f3,_0x543667){var _0x33d010={},_0x6c9375={},_0x18fda8={'count':0x0,'rows':[]};var _0x5cadd6=_['map'](db[_0xe5c7('0x28')]['rawAttributes'],function(_0x32eef9){return{'name':_0x32eef9[_0xe5c7('0x29')],'type':_0x32eef9[_0xe5c7('0x2a')]['key']};});_0x6c9375[_0xe5c7('0x2b')]=_[_0xe5c7('0x2c')](_0x5cadd6,_0xe5c7('0x26'));_0x6c9375[_0xe5c7('0x2d')]=_[_0xe5c7('0x2e')](_0x2ac0f3['query']);_0x6c9375['filters']=_[_0xe5c7('0x2f')](_0x6c9375[_0xe5c7('0x2b')],_0x6c9375[_0xe5c7('0x2d')]);_0x33d010[_0xe5c7('0x30')]=_['intersection'](_0x6c9375['model'],qs[_0xe5c7('0x31')](_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0x33d010[_0xe5c7('0x30')]=_0x33d010[_0xe5c7('0x30')][_0xe5c7('0x32')]?_0x33d010[_0xe5c7('0x30')]:_0x6c9375[_0xe5c7('0x2b')];if(!_0x2ac0f3['query'][_0xe5c7('0x33')]('nolimit')){_0x33d010[_0xe5c7('0x1a')]=qs[_0xe5c7('0x1a')](_0x2ac0f3['query'][_0xe5c7('0x1a')]);_0x33d010[_0xe5c7('0x18')]=qs[_0xe5c7('0x18')](_0x2ac0f3[_0xe5c7('0x2d')]['offset']);}_0x33d010[_0xe5c7('0x34')]=qs['sort'](_0x2ac0f3['query'][_0xe5c7('0x35')]);_0x33d010[_0xe5c7('0x36')]=qs[_0xe5c7('0x37')](_['pick'](_0x2ac0f3['query'],_0x6c9375[_0xe5c7('0x37')]),_0x5cadd6);if(_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x38')]){_0x33d010[_0xe5c7('0x36')]=_['merge'](_0x33d010[_0xe5c7('0x36')],{'$or':_[_0xe5c7('0x2c')](_0x5cadd6,function(_0x5a939f){if(_0x5a939f[_0xe5c7('0x2a')]!=='VIRTUAL'){var _0x125a0c={};_0x125a0c[_0x5a939f[_0xe5c7('0x26')]]={'$like':'%'+_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x38')]+'%'};return _0x125a0c;}})});}_0x33d010=_[_0xe5c7('0x39')]({},_0x33d010,_0x2ac0f3[_0xe5c7('0x3a')]);var _0x5a7f22={'where':_0x33d010[_0xe5c7('0x36')]};return db[_0xe5c7('0x28')][_0xe5c7('0x1b')](_0x5a7f22)[_0xe5c7('0x22')](function(_0x406dd1){_0x18fda8[_0xe5c7('0x1b')]=_0x406dd1;if(_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x3b')]){_0x33d010['include']=[{'all':!![]}];}return db['VtigerConfiguration'][_0xe5c7('0x3c')](_0x33d010);})[_0xe5c7('0x22')](function(_0x4d32c2){_0x18fda8[_0xe5c7('0x3d')]=_0x4d32c2;return _0x18fda8;})[_0xe5c7('0x22')](respondWithFilteredResult(_0x543667,_0x33d010))[_0xe5c7('0x3e')](handleError(_0x543667,null));};exports[_0xe5c7('0x3f')]=function(_0x2059c1,_0x5ad79c){var _0x4c881c={'raw':![],'where':{'id':_0x2059c1[_0xe5c7('0x40')]['id']}},_0x1e2605={};_0x1e2605[_0xe5c7('0x2b')]=_[_0xe5c7('0x2e')](db[_0xe5c7('0x28')][_0xe5c7('0x41')]);_0x1e2605['query']=_['keys'](_0x2059c1['query']);_0x1e2605[_0xe5c7('0x37')]=_['intersection'](_0x1e2605[_0xe5c7('0x2b')],_0x1e2605[_0xe5c7('0x2d')]);_0x4c881c[_0xe5c7('0x30')]=_[_0xe5c7('0x2f')](_0x1e2605[_0xe5c7('0x2b')],qs[_0xe5c7('0x31')](_0x2059c1[_0xe5c7('0x2d')]['fields']));_0x4c881c['attributes']=_0x4c881c[_0xe5c7('0x30')]['length']?_0x4c881c[_0xe5c7('0x30')]:_0x1e2605[_0xe5c7('0x2b')];if(_0x2059c1[_0xe5c7('0x2d')][_0xe5c7('0x3b')]){_0x4c881c[_0xe5c7('0x42')]=[{'all':!![]}];}_0x4c881c=_[_0xe5c7('0x39')]({},_0x4c881c,_0x2059c1['options']);return db[_0xe5c7('0x28')][_0xe5c7('0x43')](_0x4c881c)['then'](handleEntityNotFound(_0x5ad79c,null))[_0xe5c7('0x22')](respondWithResult(_0x5ad79c,null))[_0xe5c7('0x3e')](handleError(_0x5ad79c,null));};exports['create']=function(_0x17940d,_0x79ca7e){return db['VtigerConfiguration']['create'](_0x17940d[_0xe5c7('0x44')],{})['then'](respondWithResult(_0x79ca7e,0xc9))[_0xe5c7('0x3e')](handleError(_0x79ca7e,null));};exports['update']=function(_0x4f40bb,_0x3adc3d){if(_0x4f40bb['body']['id']){delete _0x4f40bb['body']['id'];}return db['VtigerConfiguration']['find']({'where':{'id':_0x4f40bb[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x3adc3d,null))[_0xe5c7('0x22')](saveUpdates(_0x4f40bb[_0xe5c7('0x44')],null))[_0xe5c7('0x22')](respondWithResult(_0x3adc3d,null))[_0xe5c7('0x3e')](handleError(_0x3adc3d,null));};exports[_0xe5c7('0x23')]=function(_0x3f148f,_0x557347){return db[_0xe5c7('0x28')][_0xe5c7('0x43')]({'where':{'id':_0x3f148f[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x557347,null))[_0xe5c7('0x22')](removeEntity(_0x557347,null))[_0xe5c7('0x3e')](handleError(_0x557347,null));};exports['getFields']=function(_0x2e057c,_0x1a2a26,_0x7cccd){var _0x204b81={};var _0x59f6e8={};var _0x17b903;var _0x2cfd1d;return db[_0xe5c7('0x28')]['findOne']({'where':{'id':_0x2e057c[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x1a2a26,null))[_0xe5c7('0x22')](function(_0x144cae){if(_0x144cae){_0x17b903=_0x144cae;_0x59f6e8[_0xe5c7('0x2b')]=_[_0xe5c7('0x2e')](db[_0xe5c7('0x45')][_0xe5c7('0x41')]);_0x59f6e8['query']=_[_0xe5c7('0x2e')](_0x2e057c['query']);_0x59f6e8[_0xe5c7('0x37')]=_[_0xe5c7('0x2f')](_0x59f6e8[_0xe5c7('0x2b')],_0x59f6e8[_0xe5c7('0x2d')]);_0x204b81[_0xe5c7('0x30')]=_[_0xe5c7('0x2f')](_0x59f6e8[_0xe5c7('0x2b')],qs[_0xe5c7('0x31')](_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0x204b81['attributes']=_0x204b81[_0xe5c7('0x30')]['length']?_0x204b81['attributes']:_0x59f6e8[_0xe5c7('0x2b')];_0x204b81[_0xe5c7('0x34')]=qs[_0xe5c7('0x35')](_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x35')]);_0x204b81[_0xe5c7('0x36')]=qs[_0xe5c7('0x37')](_[_0xe5c7('0x46')](_0x2e057c['query'],_0x59f6e8[_0xe5c7('0x37')]));if(_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x38')]){_0x204b81[_0xe5c7('0x36')]=_[_0xe5c7('0x39')](_0x204b81['where'],{'$or':_[_0xe5c7('0x2c')](_0x204b81[_0xe5c7('0x30')],function(_0x5702cd){var _0x1005aa={};_0x1005aa[_0x5702cd]={'$like':'%'+_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x38')]+'%'};return _0x1005aa;})});}_0x204b81=_[_0xe5c7('0x39')]({},_0x204b81,_0x2e057c[_0xe5c7('0x3a')]);return _0x17b903[_0xe5c7('0x47')](_0x204b81);}})['then'](function(_0x44d899){if(_0x44d899){_0x2cfd1d=_0x44d899['length'];if(!_0x2e057c[_0xe5c7('0x2d')]['hasOwnProperty'](_0xe5c7('0x48'))){_0x204b81[_0xe5c7('0x1a')]=qs['limit'](_0x2e057c['query'][_0xe5c7('0x1a')]);_0x204b81[_0xe5c7('0x18')]=qs[_0xe5c7('0x18')](_0x2e057c['query'][_0xe5c7('0x18')]);}return _0x17b903[_0xe5c7('0x47')](_0x204b81);}})[_0xe5c7('0x22')](function(_0x637eca){if(_0x637eca){return _0x637eca?{'count':_0x2cfd1d,'rows':_0x637eca}:null;}})['then'](respondWithResult(_0x1a2a26,null))[_0xe5c7('0x3e')](handleError(_0x1a2a26,null));};exports[_0xe5c7('0x49')]=function(_0x12619a,_0x57cece,_0x2ef26a){var _0xbced15={};var _0x282745={};var _0x2edba2;var _0x4553ef;return db[_0xe5c7('0x28')][_0xe5c7('0x4a')]({'where':{'id':_0x12619a[_0xe5c7('0x40')]['id']}})['then'](handleEntityNotFound(_0x57cece,null))[_0xe5c7('0x22')](function(_0x5e66a2){if(_0x5e66a2){_0x2edba2=_0x5e66a2;_0x282745[_0xe5c7('0x2b')]=_[_0xe5c7('0x2e')](db[_0xe5c7('0x45')][_0xe5c7('0x41')]);_0x282745[_0xe5c7('0x2d')]=_[_0xe5c7('0x2e')](_0x12619a['query']);_0x282745[_0xe5c7('0x37')]=_[_0xe5c7('0x2f')](_0x282745[_0xe5c7('0x2b')],_0x282745['query']);_0xbced15['attributes']=_[_0xe5c7('0x2f')](_0x282745['model'],qs['fields'](_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0xbced15[_0xe5c7('0x30')]=_0xbced15['attributes'][_0xe5c7('0x32')]?_0xbced15['attributes']:_0x282745[_0xe5c7('0x2b')];_0xbced15[_0xe5c7('0x34')]=qs[_0xe5c7('0x35')](_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x35')]);_0xbced15[_0xe5c7('0x36')]=qs['filters'](_['pick'](_0x12619a[_0xe5c7('0x2d')],_0x282745['filters']));if(_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x38')]){_0xbced15[_0xe5c7('0x36')]=_[_0xe5c7('0x39')](_0xbced15[_0xe5c7('0x36')],{'$or':_[_0xe5c7('0x2c')](_0xbced15['attributes'],function(_0x42fcdf){var _0xfb7078={};_0xfb7078[_0x42fcdf]={'$like':'%'+_0x12619a[_0xe5c7('0x2d')]['filter']+'%'};return _0xfb7078;})});}_0xbced15=_[_0xe5c7('0x39')]({},_0xbced15,_0x12619a[_0xe5c7('0x3a')]);return _0x2edba2[_0xe5c7('0x49')](_0xbced15);}})[_0xe5c7('0x22')](function(_0x38fe5b){if(_0x38fe5b){_0x4553ef=_0x38fe5b['length'];if(!_0x12619a[_0xe5c7('0x2d')]['hasOwnProperty']('nolimit')){_0xbced15[_0xe5c7('0x1a')]=qs[_0xe5c7('0x1a')](_0x12619a['query']['limit']);_0xbced15[_0xe5c7('0x18')]=qs[_0xe5c7('0x18')](_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x18')]);}return _0x2edba2[_0xe5c7('0x49')](_0xbced15);}})[_0xe5c7('0x22')](function(_0x52ec93){if(_0x52ec93){return _0x52ec93?{'count':_0x4553ef,'rows':_0x52ec93}:null;}})['then'](respondWithResult(_0x57cece,null))[_0xe5c7('0x3e')](handleError(_0x57cece,null));};exports[_0xe5c7('0x4b')]=function(_0x5c597a,_0x41185a,_0xeebf04){var _0x14c1c7={};var _0x5dab3d={};var _0x539bfe;var _0x40c46d;return db[_0xe5c7('0x28')]['findOne']({'where':{'id':_0x5c597a[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x41185a,null))[_0xe5c7('0x22')](function(_0x3b7155){if(_0x3b7155){_0x539bfe=_0x3b7155;_0x5dab3d['model']=_['keys'](db['VtigerField'][_0xe5c7('0x41')]);_0x5dab3d[_0xe5c7('0x2d')]=_[_0xe5c7('0x2e')](_0x5c597a[_0xe5c7('0x2d')]);_0x5dab3d[_0xe5c7('0x37')]=_[_0xe5c7('0x2f')](_0x5dab3d[_0xe5c7('0x2b')],_0x5dab3d[_0xe5c7('0x2d')]);_0x14c1c7['attributes']=_['intersection'](_0x5dab3d['model'],qs[_0xe5c7('0x31')](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0x14c1c7[_0xe5c7('0x30')]=_0x14c1c7[_0xe5c7('0x30')][_0xe5c7('0x32')]?_0x14c1c7[_0xe5c7('0x30')]:_0x5dab3d[_0xe5c7('0x2b')];_0x14c1c7[_0xe5c7('0x34')]=qs[_0xe5c7('0x35')](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x35')]);_0x14c1c7[_0xe5c7('0x36')]=qs[_0xe5c7('0x37')](_[_0xe5c7('0x46')](_0x5c597a['query'],_0x5dab3d[_0xe5c7('0x37')]));if(_0x5c597a[_0xe5c7('0x2d')]['filter']){_0x14c1c7[_0xe5c7('0x36')]=_['merge'](_0x14c1c7[_0xe5c7('0x36')],{'$or':_[_0xe5c7('0x2c')](_0x14c1c7[_0xe5c7('0x30')],function(_0x565e81){var _0x16a157={};_0x16a157[_0x565e81]={'$like':'%'+_0x5c597a['query'][_0xe5c7('0x38')]+'%'};return _0x16a157;})});}_0x14c1c7=_[_0xe5c7('0x39')]({},_0x14c1c7,_0x5c597a['options']);return _0x539bfe[_0xe5c7('0x4b')](_0x14c1c7);}})[_0xe5c7('0x22')](function(_0x9d6e95){if(_0x9d6e95){_0x40c46d=_0x9d6e95[_0xe5c7('0x32')];if(!_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x33')]('nolimit')){_0x14c1c7[_0xe5c7('0x1a')]=qs['limit'](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x1a')]);_0x14c1c7['offset']=qs[_0xe5c7('0x18')](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x18')]);}return _0x539bfe[_0xe5c7('0x4b')](_0x14c1c7);}})[_0xe5c7('0x22')](function(_0x2f54ae){if(_0x2f54ae){return _0x2f54ae?{'count':_0x40c46d,'rows':_0x2f54ae}:null;}})[_0xe5c7('0x22')](respondWithResult(_0x41185a,null))[_0xe5c7('0x3e')](handleError(_0x41185a,null));};
\ No newline at end of file
+var _0x848a=['apply','reject','update','then','destroy','error','name','send','index','map','VtigerConfiguration','fieldName','key','query','keys','filters','model','intersection','fields','attributes','nolimit','order','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','length','find','create','body','catch','params','getFields','findOne','VtigerField','rawAttributes','sort','hasOwnProperty','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set'];(function(_0x220afa,_0xf5f6cc){var _0x1b79d1=function(_0x178a39){while(--_0x178a39){_0x220afa['push'](_0x220afa['shift']());}};_0x1b79d1(++_0xf5f6cc);}(_0x848a,0x16f));var _0xa848=function(_0x3b632f,_0x453380){_0x3b632f=_0x3b632f-0x0;var _0x10e788=_0x848a[_0x3b632f];return _0x10e788;};'use strict';var emlformat=require(_0xa848('0x0'));var rimraf=require(_0xa848('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa848('0x2'));var rp=require(_0xa848('0x3'));var moment=require(_0xa848('0x4'));var BPromise=require(_0xa848('0x5'));var Mustache=require(_0xa848('0x6'));var util=require(_0xa848('0x7'));var path=require('path');var sox=require(_0xa848('0x8'));var csv=require(_0xa848('0x9'));var ejs=require(_0xa848('0xa'));var fs=require('fs');var fs_extra=require(_0xa848('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa848('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa848('0x9'));var querystring=require('querystring');var Papa=require(_0xa848('0xd'));var Redis=require(_0xa848('0xe'));var authService=require(_0xa848('0xf'));var qs=require(_0xa848('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa848('0x11'));var logger=require(_0xa848('0x12'))(_0xa848('0x13'));var utils=require(_0xa848('0x14'));var config=require(_0xa848('0x15'));var licenseUtil=require(_0xa848('0x16'));var db=require(_0xa848('0x17'))['db'];function respondWithStatusCode(_0x3499c6,_0x36200e){_0x36200e=_0x36200e||0xcc;return function(_0x4e0130){if(_0x4e0130){return _0x3499c6[_0xa848('0x18')](_0x36200e);}return _0x3499c6[_0xa848('0x19')](_0x36200e)[_0xa848('0x1a')]();};}function respondWithResult(_0x4d92bd,_0x3b695e){_0x3b695e=_0x3b695e||0xc8;return function(_0x280de3){if(_0x280de3){return _0x4d92bd[_0xa848('0x19')](_0x3b695e)[_0xa848('0x1b')](_0x280de3);}};}function respondWithFilteredResult(_0xa5b8b5,_0x4c152f){return function(_0xa2fa76){if(_0xa2fa76){var _0x30c14c=typeof _0x4c152f['offset']===_0xa848('0x1c')&&typeof _0x4c152f[_0xa848('0x1d')]===_0xa848('0x1c');var _0x1cd083=_0xa2fa76[_0xa848('0x1e')];var _0xc2f329=_0x30c14c?0x0:_0x4c152f['offset'];var _0x40a9f8=_0x30c14c?_0xa2fa76[_0xa848('0x1e')]:_0x4c152f[_0xa848('0x1f')]+_0x4c152f[_0xa848('0x1d')];var _0x1503b1;if(_0x40a9f8>=_0x1cd083){_0x40a9f8=_0x1cd083;_0x1503b1=0xc8;}else{_0x1503b1=0xce;}_0xa5b8b5[_0xa848('0x19')](_0x1503b1);return _0xa5b8b5[_0xa848('0x20')]('Content-Range',_0xc2f329+'-'+_0x40a9f8+'/'+_0x1cd083)['json'](_0xa2fa76);}return null;};}function patchUpdates(_0x5b9801){return function(_0x47fda4){try{jsonpatch[_0xa848('0x21')](_0x47fda4,_0x5b9801,!![]);}catch(_0x22b5fe){return BPromise[_0xa848('0x22')](_0x22b5fe);}return _0x47fda4['save']();};}function saveUpdates(_0x3ed356,_0x5f1f7a){return function(_0x4363bf){if(_0x4363bf){return _0x4363bf[_0xa848('0x23')](_0x3ed356)[_0xa848('0x24')](function(_0x38edec){return _0x38edec;});}return null;};}function removeEntity(_0x470668,_0x14c9c1){return function(_0x577701){if(_0x577701){return _0x577701[_0xa848('0x25')]()[_0xa848('0x24')](function(){_0x470668[_0xa848('0x19')](0xcc)[_0xa848('0x1a')]();});}};}function handleEntityNotFound(_0x3a1b08,_0x35c75b){return function(_0x342d97){if(!_0x342d97){_0x3a1b08['sendStatus'](0x194);}return _0x342d97;};}function handleError(_0x4a2a85,_0x5742ec){_0x5742ec=_0x5742ec||0x1f4;return function(_0x6f119c){logger[_0xa848('0x26')](_0x6f119c['stack']);if(_0x6f119c[_0xa848('0x27')]){delete _0x6f119c[_0xa848('0x27')];}_0x4a2a85[_0xa848('0x19')](_0x5742ec)[_0xa848('0x28')](_0x6f119c);};}exports[_0xa848('0x29')]=function(_0x12b402,_0x46c3c9){var _0x48025a={},_0x4be1e9={},_0x1c9759={'count':0x0,'rows':[]};var _0x202087=_[_0xa848('0x2a')](db[_0xa848('0x2b')]['rawAttributes'],function(_0x5cd211){return{'name':_0x5cd211[_0xa848('0x2c')],'type':_0x5cd211['type'][_0xa848('0x2d')]};});_0x4be1e9['model']=_[_0xa848('0x2a')](_0x202087,_0xa848('0x27'));_0x4be1e9[_0xa848('0x2e')]=_[_0xa848('0x2f')](_0x12b402[_0xa848('0x2e')]);_0x4be1e9[_0xa848('0x30')]=_['intersection'](_0x4be1e9[_0xa848('0x31')],_0x4be1e9['query']);_0x48025a['attributes']=_[_0xa848('0x32')](_0x4be1e9['model'],qs[_0xa848('0x33')](_0x12b402[_0xa848('0x2e')][_0xa848('0x33')]));_0x48025a[_0xa848('0x34')]=_0x48025a['attributes']['length']?_0x48025a[_0xa848('0x34')]:_0x4be1e9[_0xa848('0x31')];if(!_0x12b402[_0xa848('0x2e')]['hasOwnProperty'](_0xa848('0x35'))){_0x48025a[_0xa848('0x1d')]=qs[_0xa848('0x1d')](_0x12b402[_0xa848('0x2e')]['limit']);_0x48025a['offset']=qs[_0xa848('0x1f')](_0x12b402[_0xa848('0x2e')][_0xa848('0x1f')]);}_0x48025a[_0xa848('0x36')]=qs['sort'](_0x12b402['query']['sort']);_0x48025a[_0xa848('0x37')]=qs[_0xa848('0x30')](_[_0xa848('0x38')](_0x12b402[_0xa848('0x2e')],_0x4be1e9[_0xa848('0x30')]),_0x202087);if(_0x12b402[_0xa848('0x2e')][_0xa848('0x39')]){_0x48025a[_0xa848('0x37')]=_[_0xa848('0x3a')](_0x48025a[_0xa848('0x37')],{'$or':_[_0xa848('0x2a')](_0x202087,function(_0x3fa922){if(_0x3fa922[_0xa848('0x3b')]!==_0xa848('0x3c')){var _0x1b2df6={};_0x1b2df6[_0x3fa922[_0xa848('0x27')]]={'$like':'%'+_0x12b402[_0xa848('0x2e')]['filter']+'%'};return _0x1b2df6;}})});}_0x48025a=_['merge']({},_0x48025a,_0x12b402[_0xa848('0x3d')]);var _0x3df586={'where':_0x48025a[_0xa848('0x37')]};return db[_0xa848('0x2b')][_0xa848('0x1e')](_0x3df586)['then'](function(_0x1f752a){_0x1c9759['count']=_0x1f752a;if(_0x12b402[_0xa848('0x2e')][_0xa848('0x3e')]){_0x48025a[_0xa848('0x3f')]=[{'all':!![]}];}return db[_0xa848('0x2b')][_0xa848('0x40')](_0x48025a);})[_0xa848('0x24')](function(_0x21e829){_0x1c9759[_0xa848('0x41')]=_0x21e829;return _0x1c9759;})['then'](respondWithFilteredResult(_0x46c3c9,_0x48025a))['catch'](handleError(_0x46c3c9,null));};exports[_0xa848('0x42')]=function(_0x2a0df9,_0x42010a){var _0x24e3ba={'raw':![],'where':{'id':_0x2a0df9['params']['id']}},_0x53793a={};_0x53793a[_0xa848('0x31')]=_['keys'](db['VtigerConfiguration']['rawAttributes']);_0x53793a['query']=_['keys'](_0x2a0df9['query']);_0x53793a[_0xa848('0x30')]=_[_0xa848('0x32')](_0x53793a['model'],_0x53793a[_0xa848('0x2e')]);_0x24e3ba[_0xa848('0x34')]=_[_0xa848('0x32')](_0x53793a[_0xa848('0x31')],qs['fields'](_0x2a0df9['query'][_0xa848('0x33')]));_0x24e3ba[_0xa848('0x34')]=_0x24e3ba[_0xa848('0x34')][_0xa848('0x43')]?_0x24e3ba[_0xa848('0x34')]:_0x53793a[_0xa848('0x31')];if(_0x2a0df9['query'][_0xa848('0x3e')]){_0x24e3ba[_0xa848('0x3f')]=[{'all':!![]}];}_0x24e3ba=_['merge']({},_0x24e3ba,_0x2a0df9[_0xa848('0x3d')]);return db[_0xa848('0x2b')][_0xa848('0x44')](_0x24e3ba)[_0xa848('0x24')](handleEntityNotFound(_0x42010a,null))[_0xa848('0x24')](respondWithResult(_0x42010a,null))['catch'](handleError(_0x42010a,null));};exports[_0xa848('0x45')]=function(_0x462d6c,_0x9b5e9){return db[_0xa848('0x2b')][_0xa848('0x45')](_0x462d6c[_0xa848('0x46')],{})[_0xa848('0x24')](respondWithResult(_0x9b5e9,0xc9))[_0xa848('0x47')](handleError(_0x9b5e9,null));};exports[_0xa848('0x23')]=function(_0x14925f,_0x19f124){if(_0x14925f['body']['id']){delete _0x14925f[_0xa848('0x46')]['id'];}return db[_0xa848('0x2b')][_0xa848('0x44')]({'where':{'id':_0x14925f[_0xa848('0x48')]['id']}})[_0xa848('0x24')](handleEntityNotFound(_0x19f124,null))[_0xa848('0x24')](saveUpdates(_0x14925f[_0xa848('0x46')],null))[_0xa848('0x24')](respondWithResult(_0x19f124,null))[_0xa848('0x47')](handleError(_0x19f124,null));};exports[_0xa848('0x25')]=function(_0x46abd9,_0x36acfd){return db[_0xa848('0x2b')][_0xa848('0x44')]({'where':{'id':_0x46abd9[_0xa848('0x48')]['id']}})[_0xa848('0x24')](handleEntityNotFound(_0x36acfd,null))['then'](removeEntity(_0x36acfd,null))[_0xa848('0x47')](handleError(_0x36acfd,null));};exports[_0xa848('0x49')]=function(_0x3a2562,_0x48b09e,_0x25a0a1){var _0x1f3bf1={};var _0x23dea8={};var _0x3bd89b;var _0x88c7f8;return db[_0xa848('0x2b')][_0xa848('0x4a')]({'where':{'id':_0x3a2562[_0xa848('0x48')]['id']}})[_0xa848('0x24')](handleEntityNotFound(_0x48b09e,null))['then'](function(_0x556961){if(_0x556961){_0x3bd89b=_0x556961;_0x23dea8[_0xa848('0x31')]=_[_0xa848('0x2f')](db[_0xa848('0x4b')][_0xa848('0x4c')]);_0x23dea8[_0xa848('0x2e')]=_[_0xa848('0x2f')](_0x3a2562[_0xa848('0x2e')]);_0x23dea8[_0xa848('0x30')]=_[_0xa848('0x32')](_0x23dea8[_0xa848('0x31')],_0x23dea8[_0xa848('0x2e')]);_0x1f3bf1[_0xa848('0x34')]=_['intersection'](_0x23dea8[_0xa848('0x31')],qs[_0xa848('0x33')](_0x3a2562[_0xa848('0x2e')][_0xa848('0x33')]));_0x1f3bf1['attributes']=_0x1f3bf1[_0xa848('0x34')]['length']?_0x1f3bf1[_0xa848('0x34')]:_0x23dea8[_0xa848('0x31')];_0x1f3bf1[_0xa848('0x36')]=qs[_0xa848('0x4d')](_0x3a2562[_0xa848('0x2e')]['sort']);_0x1f3bf1[_0xa848('0x37')]=qs[_0xa848('0x30')](_[_0xa848('0x38')](_0x3a2562[_0xa848('0x2e')],_0x23dea8[_0xa848('0x30')]));if(_0x3a2562['query']['filter']){_0x1f3bf1[_0xa848('0x37')]=_[_0xa848('0x3a')](_0x1f3bf1['where'],{'$or':_[_0xa848('0x2a')](_0x1f3bf1[_0xa848('0x34')],function(_0x42e2e3){var _0x2c156f={};_0x2c156f[_0x42e2e3]={'$like':'%'+_0x3a2562[_0xa848('0x2e')][_0xa848('0x39')]+'%'};return _0x2c156f;})});}_0x1f3bf1=_[_0xa848('0x3a')]({},_0x1f3bf1,_0x3a2562[_0xa848('0x3d')]);return _0x3bd89b[_0xa848('0x49')](_0x1f3bf1);}})[_0xa848('0x24')](function(_0x34f7d1){if(_0x34f7d1){_0x88c7f8=_0x34f7d1['length'];if(!_0x3a2562[_0xa848('0x2e')]['hasOwnProperty']('nolimit')){_0x1f3bf1['limit']=qs['limit'](_0x3a2562[_0xa848('0x2e')][_0xa848('0x1d')]);_0x1f3bf1[_0xa848('0x1f')]=qs[_0xa848('0x1f')](_0x3a2562[_0xa848('0x2e')][_0xa848('0x1f')]);}return _0x3bd89b['getFields'](_0x1f3bf1);}})[_0xa848('0x24')](function(_0x306d00){if(_0x306d00){return _0x306d00?{'count':_0x88c7f8,'rows':_0x306d00}:null;}})['then'](respondWithResult(_0x48b09e,null))[_0xa848('0x47')](handleError(_0x48b09e,null));};exports['getSubjects']=function(_0x4aaec3,_0x1a2932,_0x5e2a96){var _0x145801={};var _0x53030e={};var _0x2cce05;var _0x3aa08c;return db[_0xa848('0x2b')]['findOne']({'where':{'id':_0x4aaec3[_0xa848('0x48')]['id']}})['then'](handleEntityNotFound(_0x1a2932,null))[_0xa848('0x24')](function(_0x42fd55){if(_0x42fd55){_0x2cce05=_0x42fd55;_0x53030e[_0xa848('0x31')]=_[_0xa848('0x2f')](db[_0xa848('0x4b')][_0xa848('0x4c')]);_0x53030e[_0xa848('0x2e')]=_['keys'](_0x4aaec3['query']);_0x53030e[_0xa848('0x30')]=_['intersection'](_0x53030e[_0xa848('0x31')],_0x53030e[_0xa848('0x2e')]);_0x145801[_0xa848('0x34')]=_[_0xa848('0x32')](_0x53030e['model'],qs[_0xa848('0x33')](_0x4aaec3['query'][_0xa848('0x33')]));_0x145801[_0xa848('0x34')]=_0x145801[_0xa848('0x34')][_0xa848('0x43')]?_0x145801[_0xa848('0x34')]:_0x53030e[_0xa848('0x31')];_0x145801[_0xa848('0x36')]=qs[_0xa848('0x4d')](_0x4aaec3[_0xa848('0x2e')][_0xa848('0x4d')]);_0x145801['where']=qs[_0xa848('0x30')](_[_0xa848('0x38')](_0x4aaec3[_0xa848('0x2e')],_0x53030e['filters']));if(_0x4aaec3[_0xa848('0x2e')][_0xa848('0x39')]){_0x145801[_0xa848('0x37')]=_[_0xa848('0x3a')](_0x145801['where'],{'$or':_[_0xa848('0x2a')](_0x145801['attributes'],function(_0x2db39b){var _0x429d66={};_0x429d66[_0x2db39b]={'$like':'%'+_0x4aaec3[_0xa848('0x2e')][_0xa848('0x39')]+'%'};return _0x429d66;})});}_0x145801=_['merge']({},_0x145801,_0x4aaec3[_0xa848('0x3d')]);return _0x2cce05['getSubjects'](_0x145801);}})['then'](function(_0x6d555b){if(_0x6d555b){_0x3aa08c=_0x6d555b['length'];if(!_0x4aaec3[_0xa848('0x2e')][_0xa848('0x4e')]('nolimit')){_0x145801[_0xa848('0x1d')]=qs[_0xa848('0x1d')](_0x4aaec3[_0xa848('0x2e')][_0xa848('0x1d')]);_0x145801['offset']=qs[_0xa848('0x1f')](_0x4aaec3[_0xa848('0x2e')][_0xa848('0x1f')]);}return _0x2cce05['getSubjects'](_0x145801);}})['then'](function(_0x5e1b7a){if(_0x5e1b7a){return _0x5e1b7a?{'count':_0x3aa08c,'rows':_0x5e1b7a}:null;}})[_0xa848('0x24')](respondWithResult(_0x1a2932,null))[_0xa848('0x47')](handleError(_0x1a2932,null));};exports[_0xa848('0x4f')]=function(_0x550d02,_0x3d943e,_0x5bddd6){var _0x379b51={};var _0x3ad943={};var _0x5cb4a0;var _0x3ec1e3;return db['VtigerConfiguration'][_0xa848('0x4a')]({'where':{'id':_0x550d02[_0xa848('0x48')]['id']}})[_0xa848('0x24')](handleEntityNotFound(_0x3d943e,null))[_0xa848('0x24')](function(_0x70f713){if(_0x70f713){_0x5cb4a0=_0x70f713;_0x3ad943[_0xa848('0x31')]=_[_0xa848('0x2f')](db[_0xa848('0x4b')][_0xa848('0x4c')]);_0x3ad943[_0xa848('0x2e')]=_[_0xa848('0x2f')](_0x550d02[_0xa848('0x2e')]);_0x3ad943[_0xa848('0x30')]=_['intersection'](_0x3ad943[_0xa848('0x31')],_0x3ad943[_0xa848('0x2e')]);_0x379b51[_0xa848('0x34')]=_[_0xa848('0x32')](_0x3ad943['model'],qs[_0xa848('0x33')](_0x550d02['query'][_0xa848('0x33')]));_0x379b51[_0xa848('0x34')]=_0x379b51[_0xa848('0x34')][_0xa848('0x43')]?_0x379b51[_0xa848('0x34')]:_0x3ad943[_0xa848('0x31')];_0x379b51[_0xa848('0x36')]=qs[_0xa848('0x4d')](_0x550d02[_0xa848('0x2e')][_0xa848('0x4d')]);_0x379b51[_0xa848('0x37')]=qs[_0xa848('0x30')](_['pick'](_0x550d02[_0xa848('0x2e')],_0x3ad943[_0xa848('0x30')]));if(_0x550d02['query'][_0xa848('0x39')]){_0x379b51['where']=_[_0xa848('0x3a')](_0x379b51[_0xa848('0x37')],{'$or':_[_0xa848('0x2a')](_0x379b51[_0xa848('0x34')],function(_0x30ed1b){var _0x1a44ad={};_0x1a44ad[_0x30ed1b]={'$like':'%'+_0x550d02[_0xa848('0x2e')]['filter']+'%'};return _0x1a44ad;})});}_0x379b51=_[_0xa848('0x3a')]({},_0x379b51,_0x550d02[_0xa848('0x3d')]);return _0x5cb4a0[_0xa848('0x4f')](_0x379b51);}})[_0xa848('0x24')](function(_0x1706d8){if(_0x1706d8){_0x3ec1e3=_0x1706d8['length'];if(!_0x550d02['query']['hasOwnProperty']('nolimit')){_0x379b51[_0xa848('0x1d')]=qs['limit'](_0x550d02[_0xa848('0x2e')][_0xa848('0x1d')]);_0x379b51['offset']=qs[_0xa848('0x1f')](_0x550d02[_0xa848('0x2e')][_0xa848('0x1f')]);}return _0x5cb4a0[_0xa848('0x4f')](_0x379b51);}})['then'](function(_0x40190c){if(_0x40190c){return _0x40190c?{'count':_0x3ec1e3,'rows':_0x40190c}:null;}})[_0xa848('0x24')](respondWithResult(_0x3d943e,null))['catch'](handleError(_0x3d943e,null));};
\ No newline at end of file
index 774f339..3c8b04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd3=['VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x40c78f,_0x3b45ee){var _0xa7ea25=function(_0x19ecda){while(--_0x19ecda){_0x40c78f['push'](_0x40c78f['shift']());}};_0xa7ea25(++_0x3b45ee);}(_0x6dd3,0x17b));var _0x36dd=function(_0x20432d,_0x162aef){_0x20432d=_0x20432d-0x0;var _0x3d47db=_0x6dd3[_0x20432d];return _0x3d47db;};'use strict';var _=require(_0x36dd('0x0'));var util=require(_0x36dd('0x1'));var logger=require(_0x36dd('0x2'))('api');var moment=require(_0x36dd('0x3'));var BPromise=require(_0x36dd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x36dd('0x5'));var rimraf=require(_0x36dd('0x6'));var config=require(_0x36dd('0x7'));var attributes=require(_0x36dd('0x8'));module[_0x36dd('0x9')]=function(_0x115c53,_0x34bb10){return _0x115c53[_0x36dd('0xa')](_0x36dd('0xb'),attributes,{'tableName':_0x36dd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8f1=['int_vtiger_configurations','lodash','api','moment','request-promise','path','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration'];(function(_0x19331b,_0x2fc860){var _0x4b5427=function(_0x410748){while(--_0x410748){_0x19331b['push'](_0x19331b['shift']());}};_0x4b5427(++_0x2fc860);}(_0xd8f1,0x83));var _0x1d8f=function(_0x3d1e0f,_0x5a07c9){_0x3d1e0f=_0x3d1e0f-0x0;var _0x21101e=_0xd8f1[_0x3d1e0f];return _0x21101e;};'use strict';var _=require(_0x1d8f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1d8f('0x1'));var moment=require(_0x1d8f('0x2'));var BPromise=require('bluebird');var rp=require(_0x1d8f('0x3'));var fs=require('fs');var path=require(_0x1d8f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1d8f('0x5'));module[_0x1d8f('0x6')]=function(_0x190cc9,_0x16f530){return _0x190cc9[_0x1d8f('0x7')](_0x1d8f('0x8'),attributes,{'tableName':_0x1d8f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2aad72e..6350244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e4=['../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2d00fb,_0x254cb5){var _0x188cec=function(_0x23c65f){while(--_0x23c65f){_0x2d00fb['push'](_0x2d00fb['shift']());}};_0x188cec(++_0x254cb5);}(_0x24e4,0x1db));var _0x424e=function(_0x3a2a3c,_0x37bd31){_0x3a2a3c=_0x3a2a3c-0x0;var _0x50ac9a=_0x24e4[_0x3a2a3c];return _0x50ac9a;};'use strict';var _=require(_0x424e('0x0'));var util=require(_0x424e('0x1'));var moment=require('moment');var BPromise=require(_0x424e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x424e('0x3'));var db=require(_0x424e('0x4'))['db'];var utils=require(_0x424e('0x5'));var logger=require(_0x424e('0x6'))(_0x424e('0x7'));var config=require(_0x424e('0x8'));var jayson=require(_0x424e('0x9'));var client=jayson[_0x424e('0xa')][_0x424e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55b8f9,_0x293814,_0x5e03e1){return new BPromise(function(_0x502283,_0x1b1a05){return client[_0x424e('0xc')](_0x55b8f9,_0x5e03e1)[_0x424e('0xd')](function(_0x2423b7){logger[_0x424e('0xe')](_0x424e('0xf'),_0x293814,_0x424e('0x10'));logger[_0x424e('0x11')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x293814,_0x424e('0x10'),JSON['stringify'](_0x2423b7));if(_0x2423b7[_0x424e('0x12')]){if(_0x2423b7[_0x424e('0x12')][_0x424e('0x13')]===0x1f4){logger['error'](_0x424e('0xf'),_0x293814,_0x2423b7[_0x424e('0x12')][_0x424e('0x14')]);return _0x1b1a05(_0x2423b7[_0x424e('0x12')][_0x424e('0x14')]);}logger[_0x424e('0x12')](_0x424e('0xf'),_0x293814,_0x2423b7[_0x424e('0x12')][_0x424e('0x14')]);return _0x502283(_0x2423b7['error']['message']);}else{logger['info'](_0x424e('0xf'),_0x293814,_0x424e('0x10'));_0x502283(_0x2423b7[_0x424e('0x15')][_0x424e('0x14')]);}})[_0x424e('0x16')](function(_0xbb5dd3){logger[_0x424e('0x12')](_0x424e('0xf'),_0x293814,_0xbb5dd3);_0x1b1a05(_0xbb5dd3);});});}
\ No newline at end of file
+var _0xf744=['info','VtigerConfiguration,\x20%s,\x20%s','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','http','request'];(function(_0x41cdde,_0x4bd78c){var _0x2dec1e=function(_0xc4e978){while(--_0xc4e978){_0x41cdde['push'](_0x41cdde['shift']());}};_0x2dec1e(++_0x4bd78c);}(_0xf744,0x15f));var _0x4f74=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xf744[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0x4f74('0x0'));var util=require(_0x4f74('0x1'));var moment=require(_0x4f74('0x2'));var BPromise=require(_0x4f74('0x3'));var rs=require(_0x4f74('0x4'));var fs=require('fs');var Redis=require(_0x4f74('0x5'));var db=require(_0x4f74('0x6'))['db'];var utils=require(_0x4f74('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x4f74('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x236ace,_0x216514,_0x3c4ae2){return new BPromise(function(_0x375626,_0x12b76b){return client[_0x4f74('0x9')](_0x236ace,_0x3c4ae2)['then'](function(_0x410d21){logger[_0x4f74('0xa')](_0x4f74('0xb'),_0x216514,'request\x20sent');logger['debug'](_0x4f74('0xc'),_0x216514,_0x4f74('0xd'),JSON[_0x4f74('0xe')](_0x410d21));if(_0x410d21[_0x4f74('0xf')]){if(_0x410d21[_0x4f74('0xf')][_0x4f74('0x10')]===0x1f4){logger['error'](_0x4f74('0xb'),_0x216514,_0x410d21[_0x4f74('0xf')][_0x4f74('0x11')]);return _0x12b76b(_0x410d21[_0x4f74('0xf')]['message']);}logger['error'](_0x4f74('0xb'),_0x216514,_0x410d21[_0x4f74('0xf')][_0x4f74('0x11')]);return _0x375626(_0x410d21[_0x4f74('0xf')][_0x4f74('0x11')]);}else{logger[_0x4f74('0xa')](_0x4f74('0xb'),_0x216514,_0x4f74('0xd'));_0x375626(_0x410d21[_0x4f74('0x12')][_0x4f74('0x11')]);}})['catch'](function(_0x571615){logger[_0x4f74('0xf')](_0x4f74('0xb'),_0x216514,_0x571615);_0x12b76b(_0x571615);});});}
\ No newline at end of file
index ba0e71a..6eb07cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b5=['create','put','delete','exports','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','/:id','show','post'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa1b5,0x18a));var _0x5a1b=function(_0x24cb87,_0x116e9){_0x24cb87=_0x24cb87-0x0;var _0x4424c1=_0xa1b5[_0x24cb87];return _0x4424c1;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5a1b('0x0')]();var fs_extra=require(_0x5a1b('0x1'));var auth=require(_0x5a1b('0x2'));var interaction=require(_0x5a1b('0x3'));var config=require(_0x5a1b('0x4'));var controller=require(_0x5a1b('0x5'));router[_0x5a1b('0x6')]('/',auth[_0x5a1b('0x7')](),controller['index']);router[_0x5a1b('0x6')](_0x5a1b('0x8'),auth[_0x5a1b('0x7')](),controller[_0x5a1b('0x9')]);router[_0x5a1b('0xa')]('/',auth[_0x5a1b('0x7')](),controller[_0x5a1b('0xb')]);router[_0x5a1b('0xc')](_0x5a1b('0x8'),auth[_0x5a1b('0x7')](),controller['update']);router[_0x5a1b('0xd')]('/:id',auth[_0x5a1b('0x7')](),controller['destroy']);module[_0x5a1b('0xe')]=router;
\ No newline at end of file
+var _0xf3d6=['put','/:id','update','delete','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','show','post'];(function(_0x460150,_0x232949){var _0x340677=function(_0x5b7e32){while(--_0x5b7e32){_0x460150['push'](_0x460150['shift']());}};_0x340677(++_0x232949);}(_0xf3d6,0xc3));var _0x6f3d=function(_0x1521be,_0x34aa83){_0x1521be=_0x1521be-0x0;var _0x156a8e=_0xf3d6[_0x1521be];return _0x156a8e;};'use strict';var multer=require('multer');var util=require(_0x6f3d('0x0'));var path=require(_0x6f3d('0x1'));var timeout=require(_0x6f3d('0x2'));var express=require(_0x6f3d('0x3'));var router=express[_0x6f3d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6f3d('0x5'));var interaction=require(_0x6f3d('0x6'));var config=require(_0x6f3d('0x7'));var controller=require(_0x6f3d('0x8'));router[_0x6f3d('0x9')]('/',auth[_0x6f3d('0xa')](),controller[_0x6f3d('0xb')]);router[_0x6f3d('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6f3d('0xc')]);router[_0x6f3d('0xd')]('/',auth[_0x6f3d('0xa')](),controller['create']);router[_0x6f3d('0xe')](_0x6f3d('0xf'),auth[_0x6f3d('0xa')](),controller[_0x6f3d('0x10')]);router[_0x6f3d('0x11')](_0x6f3d('0xf'),auth[_0x6f3d('0xa')](),controller[_0x6f3d('0x12')]);module['exports']=router;
\ No newline at end of file
index eef20a3..ae15504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x110d=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x50cd41,_0x4874a7){var _0x399475=function(_0x1946da){while(--_0x1946da){_0x50cd41['push'](_0x50cd41['shift']());}};_0x399475(++_0x4874a7);}(_0x110d,0xf6));var _0xd110=function(_0x505f51,_0x1a3e1d){_0x505f51=_0x505f51-0x0;var _0x5468b3=_0x110d[_0x505f51];return _0x5468b3;};'use strict';var Sequelize=require(_0xd110('0x0'));module[_0xd110('0x1')]={'type':{'type':Sequelize[_0xd110('0x2')](_0xd110('0x3'),_0xd110('0x4'),_0xd110('0x5'),_0xd110('0x6'),_0xd110('0x7')),'defaultValue':_0xd110('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xd110('0x8')]},'keyType':{'type':Sequelize[_0xd110('0x2')]('string','variable',_0xd110('0x5'))},'keyContent':{'type':Sequelize[_0xd110('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xd110('0x8')]},'customField':{'type':Sequelize[_0xd110('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf32d=['variable','customVariable','BOOLEAN','sequelize','exports','ENUM','picklist','string','STRING'];(function(_0x520f50,_0x5ea144){var _0x25fe76=function(_0x1daf3f){while(--_0x1daf3f){_0x520f50['push'](_0x520f50['shift']());}};_0x25fe76(++_0x5ea144);}(_0xf32d,0x198));var _0xdf32=function(_0x168b6d,_0x13ce41){_0x168b6d=_0x168b6d-0x0;var _0x2d7a1f=_0xf32d[_0x168b6d];return _0x2d7a1f;};'use strict';var Sequelize=require(_0xdf32('0x0'));module[_0xdf32('0x1')]={'type':{'type':Sequelize[_0xdf32('0x2')]('string','variable','customVariable','keyValue',_0xdf32('0x3')),'defaultValue':_0xdf32('0x4')},'content':{'type':Sequelize[_0xdf32('0x5')]},'key':{'type':Sequelize[_0xdf32('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xdf32('0x4'),_0xdf32('0x6'),_0xdf32('0x7'))},'keyContent':{'type':Sequelize[_0xdf32('0x5')]},'idField':{'type':Sequelize[_0xdf32('0x5')]},'nameField':{'type':Sequelize[_0xdf32('0x5')]},'customField':{'type':Sequelize[_0xdf32('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdf32('0x5')]}};
\ No newline at end of file
index f938c63..4a23536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x993a=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','then','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','apply','save','update','destroy','error','name','send','index','VtigerField','rawAttributes','fieldName','type','model','map'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x993a,0xfe));var _0xa993=function(_0x2def89,_0x38f019){_0x2def89=_0x2def89-0x0;var _0x1376cf=_0x993a[_0x2def89];return _0x1376cf;};'use strict';var emlformat=require(_0xa993('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa993('0x1'));var jsonpatch=require(_0xa993('0x2'));var rp=require(_0xa993('0x3'));var moment=require(_0xa993('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa993('0x5'));var util=require(_0xa993('0x6'));var path=require(_0xa993('0x7'));var sox=require(_0xa993('0x8'));var csv=require('to-csv');var ejs=require(_0xa993('0x9'));var fs=require('fs');var fs_extra=require(_0xa993('0xa'));var _=require('lodash');var squel=require(_0xa993('0xb'));var crypto=require(_0xa993('0xc'));var jsforce=require(_0xa993('0xd'));var deskjs=require(_0xa993('0xe'));var toCsv=require(_0xa993('0xf'));var querystring=require(_0xa993('0x10'));var Papa=require(_0xa993('0x11'));var Redis=require(_0xa993('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa993('0x13'));var as=require(_0xa993('0x14'));var hardwareService=require(_0xa993('0x15'));var logger=require(_0xa993('0x16'))(_0xa993('0x17'));var utils=require(_0xa993('0x18'));var config=require(_0xa993('0x19'));var licenseUtil=require(_0xa993('0x1a'));var db=require(_0xa993('0x1b'))['db'];function respondWithStatusCode(_0x19a7a8,_0x5a5fe2){_0x5a5fe2=_0x5a5fe2||0xcc;return function(_0x5df15f){if(_0x5df15f){return _0x19a7a8[_0xa993('0x1c')](_0x5a5fe2);}return _0x19a7a8[_0xa993('0x1d')](_0x5a5fe2)['end']();};}function respondWithResult(_0x135e3e,_0x2c2b28){_0x2c2b28=_0x2c2b28||0xc8;return function(_0x199f97){if(_0x199f97){return _0x135e3e[_0xa993('0x1d')](_0x2c2b28)[_0xa993('0x1e')](_0x199f97);}};}function respondWithFilteredResult(_0x1524a6,_0x55a261){return function(_0x3d469f){if(_0x3d469f){var _0x3ff5a2=typeof _0x55a261['offset']==='undefined'&&typeof _0x55a261[_0xa993('0x1f')]===_0xa993('0x20');var _0x1408e5=_0x3d469f[_0xa993('0x21')];var _0x5ece70=_0x3ff5a2?0x0:_0x55a261[_0xa993('0x22')];var _0x578e0e=_0x3ff5a2?_0x3d469f[_0xa993('0x21')]:_0x55a261[_0xa993('0x22')]+_0x55a261['limit'];var _0x42ab1d;if(_0x578e0e>=_0x1408e5){_0x578e0e=_0x1408e5;_0x42ab1d=0xc8;}else{_0x42ab1d=0xce;}_0x1524a6[_0xa993('0x1d')](_0x42ab1d);return _0x1524a6[_0xa993('0x23')]('Content-Range',_0x5ece70+'-'+_0x578e0e+'/'+_0x1408e5)[_0xa993('0x1e')](_0x3d469f);}return null;};}function patchUpdates(_0x49ac69){return function(_0x2bb258){try{jsonpatch[_0xa993('0x24')](_0x2bb258,_0x49ac69,!![]);}catch(_0x2d8d25){return BPromise['reject'](_0x2d8d25);}return _0x2bb258[_0xa993('0x25')]();};}function saveUpdates(_0x3a1bfa,_0x9104de){return function(_0x206e57){if(_0x206e57){return _0x206e57[_0xa993('0x26')](_0x3a1bfa)['then'](function(_0x4db4b2){return _0x4db4b2;});}return null;};}function removeEntity(_0x1f006a,_0x5609e8){return function(_0x39f057){if(_0x39f057){return _0x39f057[_0xa993('0x27')]()['then'](function(){_0x1f006a[_0xa993('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41c3,_0x5242cb){return function(_0x48345e){if(!_0x48345e){_0x41c3['sendStatus'](0x194);}return _0x48345e;};}function handleError(_0x2b44f3,_0x4a925c){_0x4a925c=_0x4a925c||0x1f4;return function(_0x479d9d){logger[_0xa993('0x28')](_0x479d9d['stack']);if(_0x479d9d[_0xa993('0x29')]){delete _0x479d9d[_0xa993('0x29')];}_0x2b44f3['status'](_0x4a925c)[_0xa993('0x2a')](_0x479d9d);};}exports[_0xa993('0x2b')]=function(_0x419331,_0x3f9450){var _0x34c6d4={},_0x5d4936={},_0x1de27e={'count':0x0,'rows':[]};var _0x4daae2=_['map'](db[_0xa993('0x2c')][_0xa993('0x2d')],function(_0x5c7c98){return{'name':_0x5c7c98[_0xa993('0x2e')],'type':_0x5c7c98[_0xa993('0x2f')]['key']};});_0x5d4936[_0xa993('0x30')]=_[_0xa993('0x31')](_0x4daae2,'name');_0x5d4936[_0xa993('0x32')]=_[_0xa993('0x33')](_0x419331['query']);_0x5d4936[_0xa993('0x34')]=_[_0xa993('0x35')](_0x5d4936['model'],_0x5d4936['query']);_0x34c6d4[_0xa993('0x36')]=_[_0xa993('0x35')](_0x5d4936[_0xa993('0x30')],qs[_0xa993('0x37')](_0x419331[_0xa993('0x32')][_0xa993('0x37')]));_0x34c6d4[_0xa993('0x36')]=_0x34c6d4[_0xa993('0x36')][_0xa993('0x38')]?_0x34c6d4['attributes']:_0x5d4936[_0xa993('0x30')];if(!_0x419331[_0xa993('0x32')][_0xa993('0x39')](_0xa993('0x3a'))){_0x34c6d4[_0xa993('0x1f')]=qs[_0xa993('0x1f')](_0x419331[_0xa993('0x32')]['limit']);_0x34c6d4['offset']=qs[_0xa993('0x22')](_0x419331['query']['offset']);}_0x34c6d4['order']=qs[_0xa993('0x3b')](_0x419331[_0xa993('0x32')][_0xa993('0x3b')]);_0x34c6d4['where']=qs['filters'](_[_0xa993('0x3c')](_0x419331[_0xa993('0x32')],_0x5d4936[_0xa993('0x34')]),_0x4daae2);if(_0x419331[_0xa993('0x32')][_0xa993('0x3d')]){_0x34c6d4[_0xa993('0x3e')]=_[_0xa993('0x3f')](_0x34c6d4[_0xa993('0x3e')],{'$or':_[_0xa993('0x31')](_0x4daae2,function(_0x389ea8){if(_0x389ea8[_0xa993('0x2f')]!=='VIRTUAL'){var _0x30f0f5={};_0x30f0f5[_0x389ea8[_0xa993('0x29')]]={'$like':'%'+_0x419331['query'][_0xa993('0x3d')]+'%'};return _0x30f0f5;}})});}_0x34c6d4=_[_0xa993('0x3f')]({},_0x34c6d4,_0x419331['options']);var _0x21632b={'where':_0x34c6d4[_0xa993('0x3e')]};return db[_0xa993('0x2c')][_0xa993('0x21')](_0x21632b)[_0xa993('0x40')](function(_0x56024f){_0x1de27e['count']=_0x56024f;if(_0x419331['query'][_0xa993('0x41')]){_0x34c6d4['include']=[{'all':!![]}];}return db[_0xa993('0x2c')][_0xa993('0x42')](_0x34c6d4);})[_0xa993('0x40')](function(_0x215137){_0x1de27e[_0xa993('0x43')]=_0x215137;return _0x1de27e;})[_0xa993('0x40')](respondWithFilteredResult(_0x3f9450,_0x34c6d4))[_0xa993('0x44')](handleError(_0x3f9450,null));};exports[_0xa993('0x45')]=function(_0x261556,_0x37f7f9){var _0x535784={'raw':!![],'where':{'id':_0x261556[_0xa993('0x46')]['id']}},_0x501fce={};_0x501fce[_0xa993('0x30')]=_['keys'](db[_0xa993('0x2c')][_0xa993('0x2d')]);_0x501fce[_0xa993('0x32')]=_['keys'](_0x261556[_0xa993('0x32')]);_0x501fce[_0xa993('0x34')]=_[_0xa993('0x35')](_0x501fce[_0xa993('0x30')],_0x501fce[_0xa993('0x32')]);_0x535784[_0xa993('0x36')]=_[_0xa993('0x35')](_0x501fce['model'],qs['fields'](_0x261556[_0xa993('0x32')][_0xa993('0x37')]));_0x535784[_0xa993('0x36')]=_0x535784[_0xa993('0x36')][_0xa993('0x38')]?_0x535784[_0xa993('0x36')]:_0x501fce[_0xa993('0x30')];if(_0x261556[_0xa993('0x32')][_0xa993('0x41')]){_0x535784[_0xa993('0x47')]=[{'all':!![]}];}_0x535784=_[_0xa993('0x3f')]({},_0x535784,_0x261556[_0xa993('0x48')]);return db[_0xa993('0x2c')][_0xa993('0x49')](_0x535784)['then'](handleEntityNotFound(_0x37f7f9,null))[_0xa993('0x40')](respondWithResult(_0x37f7f9,null))['catch'](handleError(_0x37f7f9,null));};exports[_0xa993('0x4a')]=function(_0x489415,_0x5a823b){return db[_0xa993('0x2c')]['create'](_0x489415[_0xa993('0x4b')],{})['then'](respondWithResult(_0x5a823b,0xc9))[_0xa993('0x44')](handleError(_0x5a823b,null));};exports[_0xa993('0x26')]=function(_0x544261,_0xba8ab){if(_0x544261['body']['id']){delete _0x544261['body']['id'];}return db['VtigerField'][_0xa993('0x49')]({'where':{'id':_0x544261[_0xa993('0x46')]['id']}})[_0xa993('0x40')](handleEntityNotFound(_0xba8ab,null))[_0xa993('0x40')](saveUpdates(_0x544261[_0xa993('0x4b')],null))['then'](respondWithResult(_0xba8ab,null))['catch'](handleError(_0xba8ab,null));};exports[_0xa993('0x27')]=function(_0xa8f7a5,_0x14873d){return db['VtigerField']['find']({'where':{'id':_0xa8f7a5[_0xa993('0x46')]['id']}})[_0xa993('0x40')](handleEntityNotFound(_0x14873d,null))['then'](removeEntity(_0x14873d,null))[_0xa993('0x44')](handleError(_0x14873d,null));};
\ No newline at end of file
+var _0x35db=['merge','options','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','VtigerField','includeAll','include','findAll','catch','show','keys','length'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x35db,0x98));var _0xb35d=function(_0x228121,_0x45aa63){_0x228121=_0x228121-0x0;var _0x25a193=_0x35db[_0x228121];return _0x25a193;};'use strict';var emlformat=require(_0xb35d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb35d('0x1'));var jsonpatch=require(_0xb35d('0x2'));var rp=require(_0xb35d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb35d('0x4'));var util=require(_0xb35d('0x5'));var path=require(_0xb35d('0x6'));var sox=require('sox');var csv=require(_0xb35d('0x7'));var ejs=require(_0xb35d('0x8'));var fs=require('fs');var fs_extra=require(_0xb35d('0x9'));var _=require(_0xb35d('0xa'));var squel=require(_0xb35d('0xb'));var crypto=require(_0xb35d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb35d('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb35d('0xe'));var Papa=require(_0xb35d('0xf'));var Redis=require(_0xb35d('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb35d('0x11'));var logger=require(_0xb35d('0x12'))(_0xb35d('0x13'));var utils=require(_0xb35d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xb35d('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2e7c2c,_0xe12daf){_0xe12daf=_0xe12daf||0xcc;return function(_0x2f14ab){if(_0x2f14ab){return _0x2e7c2c['sendStatus'](_0xe12daf);}return _0x2e7c2c[_0xb35d('0x16')](_0xe12daf)['end']();};}function respondWithResult(_0xaff741,_0x364837){_0x364837=_0x364837||0xc8;return function(_0x18c9f2){if(_0x18c9f2){return _0xaff741['status'](_0x364837)['json'](_0x18c9f2);}};}function respondWithFilteredResult(_0x342bc0,_0x1f73b4){return function(_0x3f3316){if(_0x3f3316){var _0x4e1c86=typeof _0x1f73b4['offset']===_0xb35d('0x17')&&typeof _0x1f73b4[_0xb35d('0x18')]===_0xb35d('0x17');var _0x5016b2=_0x3f3316[_0xb35d('0x19')];var _0x413657=_0x4e1c86?0x0:_0x1f73b4['offset'];var _0x1c5d09=_0x4e1c86?_0x3f3316[_0xb35d('0x19')]:_0x1f73b4[_0xb35d('0x1a')]+_0x1f73b4[_0xb35d('0x18')];var _0x32b4bb;if(_0x1c5d09>=_0x5016b2){_0x1c5d09=_0x5016b2;_0x32b4bb=0xc8;}else{_0x32b4bb=0xce;}_0x342bc0[_0xb35d('0x16')](_0x32b4bb);return _0x342bc0['set'](_0xb35d('0x1b'),_0x413657+'-'+_0x1c5d09+'/'+_0x5016b2)[_0xb35d('0x1c')](_0x3f3316);}return null;};}function patchUpdates(_0x3e4972){return function(_0x5eca9c){try{jsonpatch[_0xb35d('0x1d')](_0x5eca9c,_0x3e4972,!![]);}catch(_0x44bea6){return BPromise[_0xb35d('0x1e')](_0x44bea6);}return _0x5eca9c[_0xb35d('0x1f')]();};}function saveUpdates(_0x290610,_0x53614d){return function(_0x4d9d75){if(_0x4d9d75){return _0x4d9d75[_0xb35d('0x20')](_0x290610)[_0xb35d('0x21')](function(_0x56ed01){return _0x56ed01;});}return null;};}function removeEntity(_0x4f458a,_0x1e67e9){return function(_0xec35f3){if(_0xec35f3){return _0xec35f3[_0xb35d('0x22')]()[_0xb35d('0x21')](function(){_0x4f458a['status'](0xcc)[_0xb35d('0x23')]();});}};}function handleEntityNotFound(_0x3c5907,_0x40ae21){return function(_0x320e22){if(!_0x320e22){_0x3c5907['sendStatus'](0x194);}return _0x320e22;};}function handleError(_0x50b387,_0x361a0d){_0x361a0d=_0x361a0d||0x1f4;return function(_0xa3c1df){logger[_0xb35d('0x24')](_0xa3c1df[_0xb35d('0x25')]);if(_0xa3c1df[_0xb35d('0x26')]){delete _0xa3c1df['name'];}_0x50b387[_0xb35d('0x16')](_0x361a0d)[_0xb35d('0x27')](_0xa3c1df);};}exports[_0xb35d('0x28')]=function(_0xf06403,_0x2f4e8c){var _0x3a5b5d={},_0x1c0e50={},_0x5e11c0={'count':0x0,'rows':[]};var _0x3cbf53=_[_0xb35d('0x29')](db['VtigerField'][_0xb35d('0x2a')],function(_0x650071){return{'name':_0x650071[_0xb35d('0x2b')],'type':_0x650071[_0xb35d('0x2c')][_0xb35d('0x2d')]};});_0x1c0e50[_0xb35d('0x2e')]=_['map'](_0x3cbf53,'name');_0x1c0e50[_0xb35d('0x2f')]=_['keys'](_0xf06403['query']);_0x1c0e50[_0xb35d('0x30')]=_[_0xb35d('0x31')](_0x1c0e50[_0xb35d('0x2e')],_0x1c0e50[_0xb35d('0x2f')]);_0x3a5b5d[_0xb35d('0x32')]=_['intersection'](_0x1c0e50['model'],qs[_0xb35d('0x33')](_0xf06403[_0xb35d('0x2f')][_0xb35d('0x33')]));_0x3a5b5d['attributes']=_0x3a5b5d[_0xb35d('0x32')]['length']?_0x3a5b5d[_0xb35d('0x32')]:_0x1c0e50[_0xb35d('0x2e')];if(!_0xf06403[_0xb35d('0x2f')]['hasOwnProperty'](_0xb35d('0x34'))){_0x3a5b5d['limit']=qs[_0xb35d('0x18')](_0xf06403[_0xb35d('0x2f')][_0xb35d('0x18')]);_0x3a5b5d[_0xb35d('0x1a')]=qs[_0xb35d('0x1a')](_0xf06403[_0xb35d('0x2f')][_0xb35d('0x1a')]);}_0x3a5b5d[_0xb35d('0x35')]=qs[_0xb35d('0x36')](_0xf06403[_0xb35d('0x2f')]['sort']);_0x3a5b5d[_0xb35d('0x37')]=qs[_0xb35d('0x30')](_[_0xb35d('0x38')](_0xf06403[_0xb35d('0x2f')],_0x1c0e50[_0xb35d('0x30')]),_0x3cbf53);if(_0xf06403[_0xb35d('0x2f')][_0xb35d('0x39')]){_0x3a5b5d[_0xb35d('0x37')]=_['merge'](_0x3a5b5d[_0xb35d('0x37')],{'$or':_[_0xb35d('0x29')](_0x3cbf53,function(_0x3b0e24){if(_0x3b0e24[_0xb35d('0x2c')]!==_0xb35d('0x3a')){var _0x1d3eea={};_0x1d3eea[_0x3b0e24[_0xb35d('0x26')]]={'$like':'%'+_0xf06403[_0xb35d('0x2f')][_0xb35d('0x39')]+'%'};return _0x1d3eea;}})});}_0x3a5b5d=_['merge']({},_0x3a5b5d,_0xf06403['options']);var _0x2e5612={'where':_0x3a5b5d[_0xb35d('0x37')]};return db[_0xb35d('0x3b')]['count'](_0x2e5612)[_0xb35d('0x21')](function(_0x32766c){_0x5e11c0[_0xb35d('0x19')]=_0x32766c;if(_0xf06403[_0xb35d('0x2f')][_0xb35d('0x3c')]){_0x3a5b5d[_0xb35d('0x3d')]=[{'all':!![]}];}return db['VtigerField'][_0xb35d('0x3e')](_0x3a5b5d);})[_0xb35d('0x21')](function(_0x32a063){_0x5e11c0['rows']=_0x32a063;return _0x5e11c0;})[_0xb35d('0x21')](respondWithFilteredResult(_0x2f4e8c,_0x3a5b5d))[_0xb35d('0x3f')](handleError(_0x2f4e8c,null));};exports[_0xb35d('0x40')]=function(_0x301cc4,_0x16ac0b){var _0x158ff9={'raw':!![],'where':{'id':_0x301cc4['params']['id']}},_0x33e4b4={};_0x33e4b4[_0xb35d('0x2e')]=_['keys'](db[_0xb35d('0x3b')][_0xb35d('0x2a')]);_0x33e4b4['query']=_[_0xb35d('0x41')](_0x301cc4[_0xb35d('0x2f')]);_0x33e4b4[_0xb35d('0x30')]=_[_0xb35d('0x31')](_0x33e4b4[_0xb35d('0x2e')],_0x33e4b4[_0xb35d('0x2f')]);_0x158ff9[_0xb35d('0x32')]=_[_0xb35d('0x31')](_0x33e4b4[_0xb35d('0x2e')],qs[_0xb35d('0x33')](_0x301cc4[_0xb35d('0x2f')][_0xb35d('0x33')]));_0x158ff9['attributes']=_0x158ff9[_0xb35d('0x32')][_0xb35d('0x42')]?_0x158ff9['attributes']:_0x33e4b4['model'];if(_0x301cc4[_0xb35d('0x2f')][_0xb35d('0x3c')]){_0x158ff9['include']=[{'all':!![]}];}_0x158ff9=_[_0xb35d('0x43')]({},_0x158ff9,_0x301cc4[_0xb35d('0x44')]);return db[_0xb35d('0x3b')][_0xb35d('0x45')](_0x158ff9)[_0xb35d('0x21')](handleEntityNotFound(_0x16ac0b,null))[_0xb35d('0x21')](respondWithResult(_0x16ac0b,null))[_0xb35d('0x3f')](handleError(_0x16ac0b,null));};exports[_0xb35d('0x46')]=function(_0x21932a,_0x11ce35){return db[_0xb35d('0x3b')][_0xb35d('0x46')](_0x21932a[_0xb35d('0x47')],{})[_0xb35d('0x21')](respondWithResult(_0x11ce35,0xc9))[_0xb35d('0x3f')](handleError(_0x11ce35,null));};exports['update']=function(_0x2a2c2c,_0x4f0a39){if(_0x2a2c2c[_0xb35d('0x47')]['id']){delete _0x2a2c2c['body']['id'];}return db[_0xb35d('0x3b')][_0xb35d('0x45')]({'where':{'id':_0x2a2c2c[_0xb35d('0x48')]['id']}})['then'](handleEntityNotFound(_0x4f0a39,null))['then'](saveUpdates(_0x2a2c2c[_0xb35d('0x47')],null))[_0xb35d('0x21')](respondWithResult(_0x4f0a39,null))[_0xb35d('0x3f')](handleError(_0x4f0a39,null));};exports['destroy']=function(_0x288c43,_0x4c5518){return db['VtigerField']['find']({'where':{'id':_0x288c43[_0xb35d('0x48')]['id']}})[_0xb35d('0x21')](handleEntityNotFound(_0x4c5518,null))[_0xb35d('0x21')](removeEntity(_0x4c5518,null))[_0xb35d('0x3f')](handleError(_0x4c5518,null));};
\ No newline at end of file
index f7131e5..a4fd506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e0=['define','VtigerField','int_vtiger_fields','idField','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports'];(function(_0x1a9c19,_0x164364){var _0x1970d3=function(_0x22d54d){while(--_0x22d54d){_0x1a9c19['push'](_0x1a9c19['shift']());}};_0x1970d3(++_0x164364);}(_0x25e0,0x74));var _0x025e=function(_0x2ecea0,_0x36a83d){_0x2ecea0=_0x2ecea0-0x0;var _0x17ab22=_0x25e0[_0x2ecea0];return _0x17ab22;};'use strict';var _=require(_0x025e('0x0'));var util=require(_0x025e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x025e('0x2'));var BPromise=require(_0x025e('0x3'));var rp=require(_0x025e('0x4'));var fs=require('fs');var path=require(_0x025e('0x5'));var rimraf=require(_0x025e('0x6'));var config=require(_0x025e('0x7'));var attributes=require(_0x025e('0x8'));module[_0x025e('0x9')]=function(_0x1f8344,_0x37971e){return _0x1f8344[_0x025e('0xa')](_0x025e('0xb'),attributes,{'tableName':_0x025e('0xc'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x025e('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe56e=['define','VtigerField','int_vtiger_fields','vtiger_unique_index','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports'];(function(_0x232e1d,_0xb6493e){var _0x547d8c=function(_0x1168f4){while(--_0x1168f4){_0x232e1d['push'](_0x232e1d['shift']());}};_0x547d8c(++_0xb6493e);}(_0xe56e,0xe4));var _0xee56=function(_0x1fdc3b,_0x43ef1e){_0x1fdc3b=_0x1fdc3b-0x0;var _0x460b83=_0xe56e[_0x1fdc3b];return _0x460b83;};'use strict';var _=require(_0xee56('0x0'));var util=require(_0xee56('0x1'));var logger=require(_0xee56('0x2'))(_0xee56('0x3'));var moment=require(_0xee56('0x4'));var BPromise=require(_0xee56('0x5'));var rp=require(_0xee56('0x6'));var fs=require('fs');var path=require(_0xee56('0x7'));var rimraf=require(_0xee56('0x8'));var config=require(_0xee56('0x9'));var attributes=require(_0xee56('0xa'));module[_0xee56('0xb')]=function(_0x406cfa,_0x32602c){return _0x406cfa[_0xee56('0xc')](_0xee56('0xd'),attributes,{'tableName':_0xee56('0xe'),'paranoid':![],'indexes':[{'name':_0xee56('0xf'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fbb9c0f..a1a6a48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x324f=['catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x2322a5,_0x46e265){var _0x54df42=function(_0x31694f){while(--_0x31694f){_0x2322a5['push'](_0x2322a5['shift']());}};_0x54df42(++_0x46e265);}(_0x324f,0x94));var _0xf324=function(_0x5d44d7,_0x1dcff5){_0x5d44d7=_0x5d44d7-0x0;var _0x4ac265=_0x324f[_0x5d44d7];return _0x4ac265;};'use strict';var _=require(_0xf324('0x0'));var util=require(_0xf324('0x1'));var moment=require(_0xf324('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf324('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf324('0x4'));var logger=require(_0xf324('0x5'))('rpc');var config=require(_0xf324('0x6'));var jayson=require(_0xf324('0x7'));var client=jayson['client'][_0xf324('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x390f7d,_0x1e3722,_0x2290b7){return new BPromise(function(_0x408b34,_0x3906da){return client[_0xf324('0x9')](_0x390f7d,_0x2290b7)[_0xf324('0xa')](function(_0x42fe29){logger['info'](_0xf324('0xb'),_0x1e3722,_0xf324('0xc'));logger[_0xf324('0xd')](_0xf324('0xe'),_0x1e3722,'request\x20sent',JSON[_0xf324('0xf')](_0x42fe29));if(_0x42fe29[_0xf324('0x10')]){if(_0x42fe29[_0xf324('0x10')][_0xf324('0x11')]===0x1f4){logger[_0xf324('0x10')](_0xf324('0xb'),_0x1e3722,_0x42fe29[_0xf324('0x10')][_0xf324('0x12')]);return _0x3906da(_0x42fe29[_0xf324('0x10')][_0xf324('0x12')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x1e3722,_0x42fe29['error']['message']);return _0x408b34(_0x42fe29[_0xf324('0x10')]['message']);}else{logger[_0xf324('0x13')]('VtigerField,\x20%s,\x20%s',_0x1e3722,_0xf324('0xc'));_0x408b34(_0x42fe29['result'][_0xf324('0x12')]);}})[_0xf324('0x14')](function(_0x1121bc){logger['error'](_0xf324('0xb'),_0x1e3722,_0x1121bc);_0x3906da(_0x1121bc);});});}
\ No newline at end of file
+var _0x0d2e=['stringify','error','message','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','VtigerField,\x20%s,\x20%s','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x0d2e,0x135));var _0xe0d2=function(_0xdfca8d,_0x377316){_0xdfca8d=_0xdfca8d-0x0;var _0x1cbe00=_0x0d2e[_0xdfca8d];return _0x1cbe00;};'use strict';var _=require(_0xe0d2('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe0d2('0x1'));var rs=require(_0xe0d2('0x2'));var fs=require('fs');var Redis=require(_0xe0d2('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe0d2('0x4'));var logger=require(_0xe0d2('0x5'))(_0xe0d2('0x6'));var config=require(_0xe0d2('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe0d2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57bbd7,_0x2698f5,_0x206691){return new BPromise(function(_0x160b2a,_0x52e150){return client[_0xe0d2('0x9')](_0x57bbd7,_0x206691)['then'](function(_0x1cc1e8){logger[_0xe0d2('0xa')](_0xe0d2('0xb'),_0x2698f5,_0xe0d2('0xc'));logger['debug'](_0xe0d2('0xd'),_0x2698f5,'request\x20sent',JSON[_0xe0d2('0xe')](_0x1cc1e8));if(_0x1cc1e8[_0xe0d2('0xf')]){if(_0x1cc1e8['error']['code']===0x1f4){logger[_0xe0d2('0xf')](_0xe0d2('0xb'),_0x2698f5,_0x1cc1e8[_0xe0d2('0xf')][_0xe0d2('0x10')]);return _0x52e150(_0x1cc1e8[_0xe0d2('0xf')]['message']);}logger['error']('VtigerField,\x20%s,\x20%s',_0x2698f5,_0x1cc1e8[_0xe0d2('0xf')][_0xe0d2('0x10')]);return _0x160b2a(_0x1cc1e8[_0xe0d2('0xf')][_0xe0d2('0x10')]);}else{logger[_0xe0d2('0xa')](_0xe0d2('0xb'),_0x2698f5,_0xe0d2('0xc'));_0x160b2a(_0x1cc1e8[_0xe0d2('0x11')][_0xe0d2('0x10')]);}})[_0xe0d2('0x12')](function(_0x1311ae){logger[_0xe0d2('0xf')]('VtigerField,\x20%s,\x20%s',_0x2698f5,_0x1311ae);_0x52e150(_0x1311ae);});});}
\ No newline at end of file
index 0e9905d..a11ef79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a21=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','update','exports','util','path','connect-timeout','express'];(function(_0x14426f,_0x15f439){var _0x50db69=function(_0x190b9d){while(--_0x190b9d){_0x14426f['push'](_0x14426f['shift']());}};_0x50db69(++_0x15f439);}(_0x0a21,0x1b4));var _0x10a2=function(_0x3301dc,_0x196f19){_0x3301dc=_0x3301dc-0x0;var _0x4a4d7d=_0x0a21[_0x3301dc];return _0x4a4d7d;};'use strict';var multer=require('multer');var util=require(_0x10a2('0x0'));var path=require(_0x10a2('0x1'));var timeout=require(_0x10a2('0x2'));var express=require(_0x10a2('0x3'));var router=express[_0x10a2('0x4')]();var fs_extra=require(_0x10a2('0x5'));var auth=require(_0x10a2('0x6'));var interaction=require(_0x10a2('0x7'));var config=require('../../config/environment');var controller=require(_0x10a2('0x8'));router[_0x10a2('0x9')]('/',auth[_0x10a2('0xa')](),controller['index']);router[_0x10a2('0x9')](_0x10a2('0xb'),auth[_0x10a2('0xa')](),controller[_0x10a2('0xc')]);router[_0x10a2('0x9')](_0x10a2('0xd'),auth[_0x10a2('0xa')](),controller['getConfigurations']);router['get'](_0x10a2('0xe'),auth['isAuthenticated'](),controller[_0x10a2('0xf')]);router[_0x10a2('0x10')]('/',auth[_0x10a2('0xa')](),controller['create']);router['post'](_0x10a2('0xd'),auth[_0x10a2('0xa')](),controller[_0x10a2('0x11')]);router['put'](_0x10a2('0xb'),auth['isAuthenticated'](),controller[_0x10a2('0x12')]);router['delete'](_0x10a2('0xb'),auth[_0x10a2('0xa')](),controller['destroy']);module[_0x10a2('0x13')]=router;
\ No newline at end of file
+var _0xe0eb=['delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','put'];(function(_0x18a035,_0x14dd45){var _0x87682e=function(_0x5a8212){while(--_0x5a8212){_0x18a035['push'](_0x18a035['shift']());}};_0x87682e(++_0x14dd45);}(_0xe0eb,0x142));var _0xbe0e=function(_0x3a607e,_0x54d530){_0x3a607e=_0x3a607e-0x0;var _0x37b106=_0xe0eb[_0x3a607e];return _0x37b106;};'use strict';var multer=require(_0xbe0e('0x0'));var util=require('util');var path=require(_0xbe0e('0x1'));var timeout=require('connect-timeout');var express=require(_0xbe0e('0x2'));var router=express[_0xbe0e('0x3')]();var fs_extra=require(_0xbe0e('0x4'));var auth=require(_0xbe0e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbe0e('0x6'));var controller=require('./intZendeskAccount.controller');router['get']('/',auth[_0xbe0e('0x7')](),controller[_0xbe0e('0x8')]);router[_0xbe0e('0x9')](_0xbe0e('0xa'),auth[_0xbe0e('0x7')](),controller[_0xbe0e('0xb')]);router[_0xbe0e('0x9')](_0xbe0e('0xc'),auth[_0xbe0e('0x7')](),controller['getConfigurations']);router['get'](_0xbe0e('0xd'),auth[_0xbe0e('0x7')](),controller[_0xbe0e('0xe')]);router[_0xbe0e('0xf')]('/',auth[_0xbe0e('0x7')](),controller['create']);router[_0xbe0e('0xf')](_0xbe0e('0xc'),auth[_0xbe0e('0x7')](),controller[_0xbe0e('0x10')]);router[_0xbe0e('0x11')]('/:id',auth[_0xbe0e('0x7')](),controller['update']);router[_0xbe0e('0x12')](_0xbe0e('0xa'),auth['isAuthenticated'](),controller[_0xbe0e('0x13')]);module['exports']=router;
\ No newline at end of file
index c141df1..589c6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab8=['token','integrationTab','newTab','sequelize','exports','STRING','username','ENUM','password'];(function(_0xfd7d4,_0x47da0f){var _0x471a59=function(_0xc94b6e){while(--_0xc94b6e){_0xfd7d4['push'](_0xfd7d4['shift']());}};_0x471a59(++_0x47da0f);}(_0x9ab8,0x81));var _0x89ab=function(_0x28e378,_0x33e25a){_0x28e378=_0x28e378-0x0;var _0x1a4d02=_0x9ab8[_0x28e378];return _0x1a4d02;};'use strict';var Sequelize=require(_0x89ab('0x0'));module[_0x89ab('0x1')]={'name':{'type':Sequelize[_0x89ab('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x89ab('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x89ab('0x2')]},'remoteUri':{'type':Sequelize[_0x89ab('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0x89ab('0x4')](_0x89ab('0x5'),_0x89ab('0x6')),'defaultValue':_0x89ab('0x5')},'serverUrl':{'type':Sequelize[_0x89ab('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x89ab('0x4')](_0x89ab('0x7'),_0x89ab('0x8')),'defaultValue':_0x89ab('0x7')}};
\ No newline at end of file
+var _0x8aad=['integrationTab','newTab','sequelize','exports','STRING','username','remoteUri','token','password'];(function(_0x4c7a34,_0x18023c){var _0x300a5e=function(_0x29a548){while(--_0x29a548){_0x4c7a34['push'](_0x4c7a34['shift']());}};_0x300a5e(++_0x18023c);}(_0x8aad,0x146));var _0xd8aa=function(_0x1760f7,_0x3c3704){_0x1760f7=_0x1760f7-0x0;var _0x1d769a=_0x8aad[_0x1760f7];return _0x1d769a;};'use strict';var Sequelize=require(_0xd8aa('0x0'));module[_0xd8aa('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd8aa('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xd8aa('0x3')},'password':{'type':Sequelize[_0xd8aa('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xd8aa('0x4')},'authType':{'type':Sequelize['ENUM']('password',_0xd8aa('0x5')),'defaultValue':_0xd8aa('0x6')},'serverUrl':{'type':Sequelize[_0xd8aa('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xd8aa('0x7'),_0xd8aa('0x8')),'defaultValue':_0xd8aa('0x7')}};
\ No newline at end of file
index da2cdb4..c8340d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9d=['merge','map','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','length','find','create','update','body','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','AccountId','getSubjects','channel','ZendeskField','Subjects','Descriptions','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','%s:%s','toString','base64','Basic\x20%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','send','index','ZendeskAccount','rawAttributes','type','key','name','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick'];(function(_0x2688d5,_0x45db72){var _0x372637=function(_0x51c20d){while(--_0x51c20d){_0x2688d5['push'](_0x2688d5['shift']());}};_0x372637(++_0x45db72);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x223a00,_0x1f1e9f){_0x223a00=_0x223a00-0x0;var _0x152f91=_0xbc9d[_0x223a00];return _0x152f91;};'use strict';var emlformat=require(_0xdbc9('0x0'));var rimraf=require(_0xdbc9('0x1'));var zipdir=require(_0xdbc9('0x2'));var jsonpatch=require(_0xdbc9('0x3'));var rp=require(_0xdbc9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdbc9('0x5'));var path=require(_0xdbc9('0x6'));var sox=require(_0xdbc9('0x7'));var csv=require(_0xdbc9('0x8'));var ejs=require(_0xdbc9('0x9'));var fs=require('fs');var fs_extra=require(_0xdbc9('0xa'));var _=require(_0xdbc9('0xb'));var squel=require('squel');var crypto=require(_0xdbc9('0xc'));var jsforce=require(_0xdbc9('0xd'));var deskjs=require(_0xdbc9('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdbc9('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbc9('0x10'));var qs=require(_0xdbc9('0x11'));var as=require(_0xdbc9('0x12'));var hardwareService=require(_0xdbc9('0x13'));var logger=require('../../config/logger')(_0xdbc9('0x14'));var utils=require(_0xdbc9('0x15'));var config=require(_0xdbc9('0x16'));var licenseUtil=require(_0xdbc9('0x17'));var db=require(_0xdbc9('0x18'))['db'];var integrations=require(_0xdbc9('0x19'));function respondWithStatusCode(_0x48bc83,_0x567e71){_0x567e71=_0x567e71||0xcc;return function(_0x3d0fdd){if(_0x3d0fdd){return _0x48bc83[_0xdbc9('0x1a')](_0x567e71);}return _0x48bc83[_0xdbc9('0x1b')](_0x567e71)[_0xdbc9('0x1c')]();};}function respondWithResult(_0x53495d,_0x4a9dcb){_0x4a9dcb=_0x4a9dcb||0xc8;return function(_0x2b7bd){if(_0x2b7bd){return _0x53495d[_0xdbc9('0x1b')](_0x4a9dcb)[_0xdbc9('0x1d')](_0x2b7bd);}};}function respondWithFilteredResult(_0x4c7b4f,_0x1b4616){return function(_0x1abee8){if(_0x1abee8){var _0x4fdb81=typeof _0x1b4616[_0xdbc9('0x1e')]===_0xdbc9('0x1f')&&typeof _0x1b4616[_0xdbc9('0x20')]===_0xdbc9('0x1f');var _0x1f22f4=_0x1abee8[_0xdbc9('0x21')];var _0x9f343d=_0x4fdb81?0x0:_0x1b4616[_0xdbc9('0x1e')];var _0x2ad952=_0x4fdb81?_0x1abee8[_0xdbc9('0x21')]:_0x1b4616['offset']+_0x1b4616[_0xdbc9('0x20')];var _0x497be2;if(_0x2ad952>=_0x1f22f4){_0x2ad952=_0x1f22f4;_0x497be2=0xc8;}else{_0x497be2=0xce;}_0x4c7b4f[_0xdbc9('0x1b')](_0x497be2);return _0x4c7b4f[_0xdbc9('0x22')]('Content-Range',_0x9f343d+'-'+_0x2ad952+'/'+_0x1f22f4)[_0xdbc9('0x1d')](_0x1abee8);}return null;};}function patchUpdates(_0x5367dc){return function(_0x569f32){try{jsonpatch['apply'](_0x569f32,_0x5367dc,!![]);}catch(_0x4f3b5d){return BPromise[_0xdbc9('0x23')](_0x4f3b5d);}return _0x569f32[_0xdbc9('0x24')]();};}function saveUpdates(_0x570ad9,_0x16dcf7){return function(_0x20563e){if(_0x20563e){return _0x20563e['update'](_0x570ad9)[_0xdbc9('0x25')](function(_0x6b788){return _0x6b788;});}return null;};}function removeEntity(_0x1b1c0d,_0x119230){return function(_0x3400e7){if(_0x3400e7){return _0x3400e7[_0xdbc9('0x26')]()[_0xdbc9('0x25')](function(){_0x1b1c0d[_0xdbc9('0x1b')](0xcc)[_0xdbc9('0x1c')]();});}};}function handleEntityNotFound(_0x4a868b,_0x550bef){return function(_0xe309ae){if(!_0xe309ae){_0x4a868b[_0xdbc9('0x1a')](0x194);}return _0xe309ae;};}function handleError(_0x1053ca,_0x24fdec){_0x24fdec=_0x24fdec||0x1f4;return function(_0x50c3ee){logger[_0xdbc9('0x27')](_0x50c3ee[_0xdbc9('0x28')]);if(_0x50c3ee['name']){delete _0x50c3ee['name'];}_0x1053ca[_0xdbc9('0x1b')](_0x24fdec)[_0xdbc9('0x29')](_0x50c3ee);};}exports[_0xdbc9('0x2a')]=function(_0x59bfd2,_0x13a432){var _0x539e57={},_0x561f8e={},_0x210a40={'count':0x0,'rows':[]};var _0x49da36=_['map'](db[_0xdbc9('0x2b')][_0xdbc9('0x2c')],function(_0x1cb557){return{'name':_0x1cb557['fieldName'],'type':_0x1cb557[_0xdbc9('0x2d')][_0xdbc9('0x2e')]};});_0x561f8e['model']=_['map'](_0x49da36,_0xdbc9('0x2f'));_0x561f8e[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x59bfd2[_0xdbc9('0x30')]);_0x561f8e[_0xdbc9('0x32')]=_[_0xdbc9('0x33')](_0x561f8e[_0xdbc9('0x34')],_0x561f8e['query']);_0x539e57[_0xdbc9('0x35')]=_[_0xdbc9('0x33')](_0x561f8e[_0xdbc9('0x34')],qs[_0xdbc9('0x36')](_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x36')]));_0x539e57['attributes']=_0x539e57[_0xdbc9('0x35')]['length']?_0x539e57['attributes']:_0x561f8e['model'];if(!_0x59bfd2['query']['hasOwnProperty'](_0xdbc9('0x37'))){_0x539e57[_0xdbc9('0x20')]=qs[_0xdbc9('0x20')](_0x59bfd2['query'][_0xdbc9('0x20')]);_0x539e57[_0xdbc9('0x1e')]=qs[_0xdbc9('0x1e')](_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x1e')]);}_0x539e57[_0xdbc9('0x38')]=qs['sort'](_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x39')]);_0x539e57[_0xdbc9('0x3a')]=qs['filters'](_[_0xdbc9('0x3b')](_0x59bfd2[_0xdbc9('0x30')],_0x561f8e[_0xdbc9('0x32')]),_0x49da36);if(_0x59bfd2[_0xdbc9('0x30')]['filter']){_0x539e57['where']=_[_0xdbc9('0x3c')](_0x539e57[_0xdbc9('0x3a')],{'$or':_[_0xdbc9('0x3d')](_0x49da36,function(_0x1ef970){if(_0x1ef970['type']!==_0xdbc9('0x3e')){var _0x3827be={};_0x3827be[_0x1ef970[_0xdbc9('0x2f')]]={'$like':'%'+_0x59bfd2['query'][_0xdbc9('0x3f')]+'%'};return _0x3827be;}})});}_0x539e57=_[_0xdbc9('0x3c')]({},_0x539e57,_0x59bfd2[_0xdbc9('0x40')]);var _0x523c79={'where':_0x539e57[_0xdbc9('0x3a')]};return db[_0xdbc9('0x2b')]['count'](_0x523c79)['then'](function(_0xfc34d5){_0x210a40[_0xdbc9('0x21')]=_0xfc34d5;if(_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x41')]){_0x539e57['include']=[{'all':!![]}];}return db[_0xdbc9('0x2b')][_0xdbc9('0x42')](_0x539e57);})['then'](function(_0x8445b8){_0x210a40[_0xdbc9('0x43')]=_0x8445b8;return _0x210a40;})['then'](respondWithFilteredResult(_0x13a432,_0x539e57))[_0xdbc9('0x44')](handleError(_0x13a432,null));};exports[_0xdbc9('0x45')]=function(_0x2adb23,_0x3415c3){var _0x3ed4de={'raw':![],'where':{'id':_0x2adb23[_0xdbc9('0x46')]['id']}},_0x1cd538={};_0x1cd538['model']=_['keys'](db[_0xdbc9('0x2b')][_0xdbc9('0x2c')]);_0x1cd538[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x2adb23[_0xdbc9('0x30')]);_0x1cd538[_0xdbc9('0x32')]=_[_0xdbc9('0x33')](_0x1cd538[_0xdbc9('0x34')],_0x1cd538[_0xdbc9('0x30')]);_0x3ed4de[_0xdbc9('0x35')]=_[_0xdbc9('0x33')](_0x1cd538['model'],qs['fields'](_0x2adb23[_0xdbc9('0x30')][_0xdbc9('0x36')]));_0x3ed4de[_0xdbc9('0x35')]=_0x3ed4de[_0xdbc9('0x35')][_0xdbc9('0x47')]?_0x3ed4de[_0xdbc9('0x35')]:_0x1cd538[_0xdbc9('0x34')];if(_0x2adb23[_0xdbc9('0x30')]['includeAll']){_0x3ed4de['include']=[{'all':!![]}];}_0x3ed4de=_[_0xdbc9('0x3c')]({},_0x3ed4de,_0x2adb23[_0xdbc9('0x40')]);return db[_0xdbc9('0x2b')][_0xdbc9('0x48')](_0x3ed4de)[_0xdbc9('0x25')](handleEntityNotFound(_0x3415c3,null))[_0xdbc9('0x25')](respondWithResult(_0x3415c3,null))[_0xdbc9('0x44')](handleError(_0x3415c3,null));};exports[_0xdbc9('0x49')]=function(_0x43e3ec,_0x589557){return db[_0xdbc9('0x2b')][_0xdbc9('0x49')](_0x43e3ec['body'],{})['then'](respondWithResult(_0x589557,0xc9))[_0xdbc9('0x44')](handleError(_0x589557,null));};exports[_0xdbc9('0x4a')]=function(_0x133a13,_0x49a55c){if(_0x133a13[_0xdbc9('0x4b')]['id']){delete _0x133a13[_0xdbc9('0x4b')]['id'];}return db[_0xdbc9('0x2b')][_0xdbc9('0x48')]({'where':{'id':_0x133a13['params']['id']}})[_0xdbc9('0x25')](handleEntityNotFound(_0x49a55c,null))[_0xdbc9('0x25')](saveUpdates(_0x133a13[_0xdbc9('0x4b')],null))[_0xdbc9('0x25')](respondWithResult(_0x49a55c,null))['catch'](handleError(_0x49a55c,null));};exports[_0xdbc9('0x26')]=function(_0x36c70e,_0x3f49b7){return db[_0xdbc9('0x2b')][_0xdbc9('0x48')]({'where':{'id':_0x36c70e[_0xdbc9('0x46')]['id']}})[_0xdbc9('0x25')](handleEntityNotFound(_0x3f49b7,null))[_0xdbc9('0x25')](removeEntity(_0x3f49b7,null))['catch'](handleError(_0x3f49b7,null));};exports[_0xdbc9('0x4c')]=function(_0x4d09e1,_0x3f493e,_0x4279bc){var _0x53771a={};var _0x561737={};var _0xc7335d;var _0x4b55df;return db[_0xdbc9('0x2b')][_0xdbc9('0x4d')]({'where':{'id':_0x4d09e1[_0xdbc9('0x46')]['id']}})['then'](handleEntityNotFound(_0x3f493e,null))[_0xdbc9('0x25')](function(_0x1c52e6){if(_0x1c52e6){_0xc7335d=_0x1c52e6;_0x561737[_0xdbc9('0x34')]=_[_0xdbc9('0x31')](db[_0xdbc9('0x4e')][_0xdbc9('0x2c')]);_0x561737[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x4d09e1['query']);_0x561737['filters']=_['intersection'](_0x561737[_0xdbc9('0x34')],_0x561737[_0xdbc9('0x30')]);_0x53771a[_0xdbc9('0x35')]=_['intersection'](_0x561737['model'],qs[_0xdbc9('0x36')](_0x4d09e1[_0xdbc9('0x30')]['fields']));_0x53771a['attributes']=_0x53771a[_0xdbc9('0x35')][_0xdbc9('0x47')]?_0x53771a[_0xdbc9('0x35')]:_0x561737[_0xdbc9('0x34')];_0x53771a[_0xdbc9('0x38')]=qs[_0xdbc9('0x39')](_0x4d09e1['query'][_0xdbc9('0x39')]);_0x53771a[_0xdbc9('0x3a')]=qs[_0xdbc9('0x32')](_['pick'](_0x4d09e1[_0xdbc9('0x30')],_0x561737[_0xdbc9('0x32')]));if(_0x4d09e1[_0xdbc9('0x30')]['filter']){_0x53771a[_0xdbc9('0x3a')]=_['merge'](_0x53771a[_0xdbc9('0x3a')],{'$or':_[_0xdbc9('0x3d')](_0x53771a[_0xdbc9('0x35')],function(_0x26ed1c){var _0x148061={};_0x148061[_0x26ed1c]={'$like':'%'+_0x4d09e1[_0xdbc9('0x30')]['filter']+'%'};return _0x148061;})});}_0x53771a=_[_0xdbc9('0x3c')]({},_0x53771a,_0x4d09e1['options']);return _0xc7335d[_0xdbc9('0x4c')](_0x53771a);}})[_0xdbc9('0x25')](function(_0x53fcd6){if(_0x53fcd6){_0x4b55df=_0x53fcd6[_0xdbc9('0x47')];if(!_0x4d09e1[_0xdbc9('0x30')]['hasOwnProperty']('nolimit')){_0x53771a[_0xdbc9('0x20')]=qs[_0xdbc9('0x20')](_0x4d09e1[_0xdbc9('0x30')]['limit']);_0x53771a[_0xdbc9('0x1e')]=qs[_0xdbc9('0x1e')](_0x4d09e1['query'][_0xdbc9('0x1e')]);}return _0xc7335d[_0xdbc9('0x4c')](_0x53771a);}})['then'](function(_0x4876f9){if(_0x4876f9){return _0x4876f9?{'count':_0x4b55df,'rows':_0x4876f9}:null;}})[_0xdbc9('0x25')](respondWithResult(_0x3f493e,null))[_0xdbc9('0x44')](handleError(_0x3f493e,null));};exports[_0xdbc9('0x4f')]=function(_0xa8b4d9,_0x3e93d3,_0x14cbf4){if(_0xa8b4d9[_0xdbc9('0x4b')]['id']){delete _0xa8b4d9[_0xdbc9('0x4b')]['id'];}return db['ZendeskAccount'][_0xdbc9('0x4d')]({'where':{'id':_0xa8b4d9[_0xdbc9('0x46')]['id']}})[_0xdbc9('0x25')](handleEntityNotFound(_0x3e93d3,null))[_0xdbc9('0x25')](function(_0x38f7da){if(_0x38f7da){_0xa8b4d9[_0xdbc9('0x4b')][_0xdbc9('0x50')]=_0x38f7da['id'];_0xa8b4d9[_0xdbc9('0x4b')]['Subjects']=integrations[_0xdbc9('0x51')](_0xa8b4d9['body'][_0xdbc9('0x52')],_0xa8b4d9['body'][_0xdbc9('0x2d')]);_0xa8b4d9[_0xdbc9('0x4b')]['Descriptions']=integrations['getDescriptions'](_0xa8b4d9['body'][_0xdbc9('0x52')],_0xa8b4d9[_0xdbc9('0x4b')][_0xdbc9('0x2d')]);return db['ZendeskConfiguration'][_0xdbc9('0x49')](_0xa8b4d9[_0xdbc9('0x4b')],{'include':[{'model':db[_0xdbc9('0x53')],'as':_0xdbc9('0x54')},{'model':db[_0xdbc9('0x53')],'as':_0xdbc9('0x55')}]});}return null;})[_0xdbc9('0x25')](respondWithResult(_0x3e93d3,null))[_0xdbc9('0x44')](handleError(_0x3e93d3,null));};exports[_0xdbc9('0x56')]=function(_0x5e6522,_0x2787d9,_0x2c3223){var _0x511778='';return db['ZendeskAccount'][_0xdbc9('0x4d')]({'where':{'id':_0x5e6522[_0xdbc9('0x46')]['id']},'attributes':['id',_0xdbc9('0x57'),_0xdbc9('0x58'),_0xdbc9('0x59'),_0xdbc9('0x5a'),_0xdbc9('0x5b')]})['then'](handleEntityNotFound(_0x2787d9,null))[_0xdbc9('0x25')](function(_0x19af46){if(_0x19af46){_0x511778=_0x19af46[_0xdbc9('0x5b')];var _0x4a412e=_0x511778[_0xdbc9('0x5c')](-0x1);if(_0x4a412e==='/'){_0x511778=_0x511778[_0xdbc9('0x5d')](0x0,_0x511778[_0xdbc9('0x5e')](_0x4a412e));}var _0x2b4905={'method':_0xdbc9('0x5f'),'uri':util[_0xdbc9('0x60')](_0xdbc9('0x61'),_0x511778,_0xdbc9('0x62')),'json':!![]};switch(_0x19af46[_0xdbc9('0x5a')]){case _0xdbc9('0x58'):_0x2b4905[_0xdbc9('0x63')]={'Authorization':util[_0xdbc9('0x60')]('Basic\x20%s',new Buffer(util['format'](_0xdbc9('0x64'),_0x19af46['username'],_0x19af46['password']))[_0xdbc9('0x65')](_0xdbc9('0x66')))};break;case _0xdbc9('0x59'):_0x2b4905['headers']={'Authorization':util[_0xdbc9('0x60')](_0xdbc9('0x67'),new Buffer(util[_0xdbc9('0x60')]('%s/token:%s',_0x19af46[_0xdbc9('0x57')],_0x19af46[_0xdbc9('0x59')]))['toString'](_0xdbc9('0x66')))};break;default:throw new db[(_0xdbc9('0x68'))][(_0xdbc9('0x69'))](_0xdbc9('0x6a'));}return rp(_0x2b4905);}})[_0xdbc9('0x25')](function(_0x501754){if(_0x501754){var _0x4f984b=[_0xdbc9('0x6b'),_0xdbc9('0x6c'),'group',_0xdbc9('0x6d')];_[_0xdbc9('0x6e')](_0x501754[_0xdbc9('0x62')],function(_0x5802fc){return _0x4f984b[_0xdbc9('0x6f')](_0x5802fc[_0xdbc9('0x2d')]);});return{'count':_0x501754[_0xdbc9('0x62')][_0xdbc9('0x47')],'rows':_[_0xdbc9('0x3d')](_0x501754[_0xdbc9('0x62')],function(_0x1b053a){return{'id':_0x1b053a['id'],'name':_0x1b053a[_0xdbc9('0x70')]>0x7?_0x1b053a['title']:_0x1b053a[_0xdbc9('0x2d')],'custom':_0x1b053a[_0xdbc9('0x70')]>0x7?!![]:![],'options':_0x1b053a[_0xdbc9('0x71')]?_0x1b053a[_0xdbc9('0x71')]:_0x1b053a['custom_field_options']?_0x1b053a[_0xdbc9('0x72')]:[]};})};}})['then'](respondWithResult(_0x2787d9,null))['catch'](function(_0x34ebeb){var _0x3400d0=_0x5e6522['query'][_0xdbc9('0x73')]?0x1f4:_0x34ebeb[_0xdbc9('0x74')]||0x1f4;logger[_0xdbc9('0x27')](_0xdbc9('0x75'),_0xdbc9('0x56'),_0x3400d0,JSON[_0xdbc9('0x76')](_0x34ebeb));delete _0x34ebeb[_0xdbc9('0x2f')];if(_0x3400d0===0x191){_0x3400d0=0x190;}_0x2787d9['status'](_0x3400d0)['send'](_0x5e6522[_0xdbc9('0x30')][_0xdbc9('0x73')]?{'message':_0xdbc9('0x77'),'statusCode':_0x34ebeb['statusCode']}:_0x34ebeb);});};
\ No newline at end of file
+var _0xa74f=['Subjects','getSubjects','channel','type','Descriptions','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','zip-dir','moment','bluebird','mustache','util','sox','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','../../config/license/util','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','then','destroy','sendStatus','stack','name','index','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','ZendeskAccount','findAll','rows','params','length','find','catch','create','body','findOne','getConfigurations','addConfiguration'];(function(_0x80f51a,_0x32e95e){var _0x327148=function(_0x16f788){while(--_0x16f788){_0x80f51a['push'](_0x80f51a['shift']());}};_0x327148(++_0x32e95e);}(_0xa74f,0x9a));var _0xfa74=function(_0x2c0ded,_0x3de22c){_0x2c0ded=_0x2c0ded-0x0;var _0x4473e5=_0xa74f[_0x2c0ded];return _0x4473e5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfa74('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xfa74('0x1'));var BPromise=require(_0xfa74('0x2'));var Mustache=require(_0xfa74('0x3'));var util=require(_0xfa74('0x4'));var path=require('path');var sox=require(_0xfa74('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfa74('0x6'));var _=require(_0xfa74('0x7'));var squel=require(_0xfa74('0x8'));var crypto=require(_0xfa74('0x9'));var jsforce=require(_0xfa74('0xa'));var deskjs=require(_0xfa74('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfa74('0xc'));var Papa=require(_0xfa74('0xd'));var Redis=require(_0xfa74('0xe'));var authService=require(_0xfa74('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfa74('0x10'));var hardwareService=require(_0xfa74('0x11'));var logger=require('../../config/logger')(_0xfa74('0x12'));var utils=require(_0xfa74('0x13'));var config=require(_0xfa74('0x14'));var licenseUtil=require(_0xfa74('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0xfa74('0x16'));function respondWithStatusCode(_0x998585,_0x78173f){_0x78173f=_0x78173f||0xcc;return function(_0x278e8b){if(_0x278e8b){return _0x998585['sendStatus'](_0x78173f);}return _0x998585[_0xfa74('0x17')](_0x78173f)[_0xfa74('0x18')]();};}function respondWithResult(_0x3eb49b,_0x3947ca){_0x3947ca=_0x3947ca||0xc8;return function(_0xe3c97e){if(_0xe3c97e){return _0x3eb49b['status'](_0x3947ca)[_0xfa74('0x19')](_0xe3c97e);}};}function respondWithFilteredResult(_0x13d911,_0x947da6){return function(_0x1f1de0){if(_0x1f1de0){var _0x3867f8=typeof _0x947da6[_0xfa74('0x1a')]===_0xfa74('0x1b')&&typeof _0x947da6['limit']===_0xfa74('0x1b');var _0xe0e33d=_0x1f1de0['count'];var _0x4928b6=_0x3867f8?0x0:_0x947da6[_0xfa74('0x1a')];var _0x25a36b=_0x3867f8?_0x1f1de0[_0xfa74('0x1c')]:_0x947da6['offset']+_0x947da6[_0xfa74('0x1d')];var _0x2edebb;if(_0x25a36b>=_0xe0e33d){_0x25a36b=_0xe0e33d;_0x2edebb=0xc8;}else{_0x2edebb=0xce;}_0x13d911[_0xfa74('0x17')](_0x2edebb);return _0x13d911['set'](_0xfa74('0x1e'),_0x4928b6+'-'+_0x25a36b+'/'+_0xe0e33d)[_0xfa74('0x19')](_0x1f1de0);}return null;};}function patchUpdates(_0x2e6c33){return function(_0x4a5ee4){try{jsonpatch['apply'](_0x4a5ee4,_0x2e6c33,!![]);}catch(_0x100851){return BPromise[_0xfa74('0x1f')](_0x100851);}return _0x4a5ee4[_0xfa74('0x20')]();};}function saveUpdates(_0xeaaa19,_0x1a453d){return function(_0x554e0e){if(_0x554e0e){return _0x554e0e['update'](_0xeaaa19)[_0xfa74('0x21')](function(_0x5aa8a7){return _0x5aa8a7;});}return null;};}function removeEntity(_0x48cbd3,_0x529810){return function(_0x42c439){if(_0x42c439){return _0x42c439[_0xfa74('0x22')]()[_0xfa74('0x21')](function(){_0x48cbd3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9eb68c,_0xeb6c11){return function(_0x5ed1c8){if(!_0x5ed1c8){_0x9eb68c[_0xfa74('0x23')](0x194);}return _0x5ed1c8;};}function handleError(_0x5d3b26,_0x1a8cf7){_0x1a8cf7=_0x1a8cf7||0x1f4;return function(_0x153b2a){logger['error'](_0x153b2a[_0xfa74('0x24')]);if(_0x153b2a[_0xfa74('0x25')]){delete _0x153b2a[_0xfa74('0x25')];}_0x5d3b26[_0xfa74('0x17')](_0x1a8cf7)['send'](_0x153b2a);};}exports[_0xfa74('0x26')]=function(_0x2f7cd7,_0x204e01){var _0x57d90e={},_0x4d4bed={},_0x1322a4={'count':0x0,'rows':[]};var _0x8b706e=_['map'](db['ZendeskAccount'][_0xfa74('0x27')],function(_0x564060){return{'name':_0x564060[_0xfa74('0x28')],'type':_0x564060['type'][_0xfa74('0x29')]};});_0x4d4bed[_0xfa74('0x2a')]=_[_0xfa74('0x2b')](_0x8b706e,_0xfa74('0x25'));_0x4d4bed['query']=_[_0xfa74('0x2c')](_0x2f7cd7[_0xfa74('0x2d')]);_0x4d4bed[_0xfa74('0x2e')]=_[_0xfa74('0x2f')](_0x4d4bed[_0xfa74('0x2a')],_0x4d4bed[_0xfa74('0x2d')]);_0x57d90e[_0xfa74('0x30')]=_['intersection'](_0x4d4bed[_0xfa74('0x2a')],qs['fields'](_0x2f7cd7[_0xfa74('0x2d')][_0xfa74('0x31')]));_0x57d90e[_0xfa74('0x30')]=_0x57d90e[_0xfa74('0x30')]['length']?_0x57d90e['attributes']:_0x4d4bed[_0xfa74('0x2a')];if(!_0x2f7cd7[_0xfa74('0x2d')][_0xfa74('0x32')](_0xfa74('0x33'))){_0x57d90e['limit']=qs[_0xfa74('0x1d')](_0x2f7cd7[_0xfa74('0x2d')]['limit']);_0x57d90e['offset']=qs['offset'](_0x2f7cd7['query']['offset']);}_0x57d90e[_0xfa74('0x34')]=qs[_0xfa74('0x35')](_0x2f7cd7[_0xfa74('0x2d')][_0xfa74('0x35')]);_0x57d90e[_0xfa74('0x36')]=qs[_0xfa74('0x2e')](_[_0xfa74('0x37')](_0x2f7cd7[_0xfa74('0x2d')],_0x4d4bed[_0xfa74('0x2e')]),_0x8b706e);if(_0x2f7cd7['query'][_0xfa74('0x38')]){_0x57d90e[_0xfa74('0x36')]=_[_0xfa74('0x39')](_0x57d90e[_0xfa74('0x36')],{'$or':_[_0xfa74('0x2b')](_0x8b706e,function(_0x186126){if(_0x186126['type']!==_0xfa74('0x3a')){var _0x1f0806={};_0x1f0806[_0x186126[_0xfa74('0x25')]]={'$like':'%'+_0x2f7cd7[_0xfa74('0x2d')]['filter']+'%'};return _0x1f0806;}})});}_0x57d90e=_[_0xfa74('0x39')]({},_0x57d90e,_0x2f7cd7[_0xfa74('0x3b')]);var _0xe8491b={'where':_0x57d90e[_0xfa74('0x36')]};return db['ZendeskAccount'][_0xfa74('0x1c')](_0xe8491b)[_0xfa74('0x21')](function(_0x3dacc2){_0x1322a4['count']=_0x3dacc2;if(_0x2f7cd7['query'][_0xfa74('0x3c')]){_0x57d90e[_0xfa74('0x3d')]=[{'all':!![]}];}return db[_0xfa74('0x3e')][_0xfa74('0x3f')](_0x57d90e);})['then'](function(_0x1ab026){_0x1322a4[_0xfa74('0x40')]=_0x1ab026;return _0x1322a4;})['then'](respondWithFilteredResult(_0x204e01,_0x57d90e))['catch'](handleError(_0x204e01,null));};exports['show']=function(_0x492c7d,_0x95c891){var _0x3098ca={'raw':![],'where':{'id':_0x492c7d[_0xfa74('0x41')]['id']}},_0x3f92b2={};_0x3f92b2[_0xfa74('0x2a')]=_[_0xfa74('0x2c')](db[_0xfa74('0x3e')]['rawAttributes']);_0x3f92b2[_0xfa74('0x2d')]=_[_0xfa74('0x2c')](_0x492c7d[_0xfa74('0x2d')]);_0x3f92b2[_0xfa74('0x2e')]=_[_0xfa74('0x2f')](_0x3f92b2['model'],_0x3f92b2[_0xfa74('0x2d')]);_0x3098ca[_0xfa74('0x30')]=_[_0xfa74('0x2f')](_0x3f92b2[_0xfa74('0x2a')],qs[_0xfa74('0x31')](_0x492c7d[_0xfa74('0x2d')][_0xfa74('0x31')]));_0x3098ca[_0xfa74('0x30')]=_0x3098ca[_0xfa74('0x30')][_0xfa74('0x42')]?_0x3098ca['attributes']:_0x3f92b2[_0xfa74('0x2a')];if(_0x492c7d['query'][_0xfa74('0x3c')]){_0x3098ca[_0xfa74('0x3d')]=[{'all':!![]}];}_0x3098ca=_[_0xfa74('0x39')]({},_0x3098ca,_0x492c7d[_0xfa74('0x3b')]);return db['ZendeskAccount'][_0xfa74('0x43')](_0x3098ca)[_0xfa74('0x21')](handleEntityNotFound(_0x95c891,null))['then'](respondWithResult(_0x95c891,null))[_0xfa74('0x44')](handleError(_0x95c891,null));};exports[_0xfa74('0x45')]=function(_0x5cbb70,_0x2be89f){return db[_0xfa74('0x3e')][_0xfa74('0x45')](_0x5cbb70[_0xfa74('0x46')],{})[_0xfa74('0x21')](respondWithResult(_0x2be89f,0xc9))['catch'](handleError(_0x2be89f,null));};exports['update']=function(_0x36f6ca,_0x91df44){if(_0x36f6ca['body']['id']){delete _0x36f6ca[_0xfa74('0x46')]['id'];}return db[_0xfa74('0x3e')][_0xfa74('0x43')]({'where':{'id':_0x36f6ca['params']['id']}})['then'](handleEntityNotFound(_0x91df44,null))[_0xfa74('0x21')](saveUpdates(_0x36f6ca[_0xfa74('0x46')],null))[_0xfa74('0x21')](respondWithResult(_0x91df44,null))[_0xfa74('0x44')](handleError(_0x91df44,null));};exports[_0xfa74('0x22')]=function(_0x3cb23d,_0x2d217d){return db[_0xfa74('0x3e')]['find']({'where':{'id':_0x3cb23d[_0xfa74('0x41')]['id']}})[_0xfa74('0x21')](handleEntityNotFound(_0x2d217d,null))[_0xfa74('0x21')](removeEntity(_0x2d217d,null))[_0xfa74('0x44')](handleError(_0x2d217d,null));};exports['getConfigurations']=function(_0x4ec218,_0x3146de,_0x5b3404){var _0x152eaa={};var _0x221dc7={};var _0x427469;var _0x33e31e;return db[_0xfa74('0x3e')][_0xfa74('0x47')]({'where':{'id':_0x4ec218[_0xfa74('0x41')]['id']}})['then'](handleEntityNotFound(_0x3146de,null))[_0xfa74('0x21')](function(_0x4bcee3){if(_0x4bcee3){_0x427469=_0x4bcee3;_0x221dc7[_0xfa74('0x2a')]=_['keys'](db['ZendeskConfiguration'][_0xfa74('0x27')]);_0x221dc7[_0xfa74('0x2d')]=_['keys'](_0x4ec218['query']);_0x221dc7[_0xfa74('0x2e')]=_[_0xfa74('0x2f')](_0x221dc7[_0xfa74('0x2a')],_0x221dc7[_0xfa74('0x2d')]);_0x152eaa[_0xfa74('0x30')]=_[_0xfa74('0x2f')](_0x221dc7[_0xfa74('0x2a')],qs[_0xfa74('0x31')](_0x4ec218[_0xfa74('0x2d')][_0xfa74('0x31')]));_0x152eaa['attributes']=_0x152eaa[_0xfa74('0x30')][_0xfa74('0x42')]?_0x152eaa['attributes']:_0x221dc7['model'];_0x152eaa[_0xfa74('0x34')]=qs[_0xfa74('0x35')](_0x4ec218[_0xfa74('0x2d')][_0xfa74('0x35')]);_0x152eaa[_0xfa74('0x36')]=qs['filters'](_[_0xfa74('0x37')](_0x4ec218['query'],_0x221dc7[_0xfa74('0x2e')]));if(_0x4ec218[_0xfa74('0x2d')][_0xfa74('0x38')]){_0x152eaa['where']=_['merge'](_0x152eaa[_0xfa74('0x36')],{'$or':_[_0xfa74('0x2b')](_0x152eaa[_0xfa74('0x30')],function(_0x1b3484){var _0x53eca4={};_0x53eca4[_0x1b3484]={'$like':'%'+_0x4ec218[_0xfa74('0x2d')][_0xfa74('0x38')]+'%'};return _0x53eca4;})});}_0x152eaa=_['merge']({},_0x152eaa,_0x4ec218[_0xfa74('0x3b')]);return _0x427469[_0xfa74('0x48')](_0x152eaa);}})[_0xfa74('0x21')](function(_0x1681e7){if(_0x1681e7){_0x33e31e=_0x1681e7['length'];if(!_0x4ec218[_0xfa74('0x2d')]['hasOwnProperty'](_0xfa74('0x33'))){_0x152eaa[_0xfa74('0x1d')]=qs[_0xfa74('0x1d')](_0x4ec218[_0xfa74('0x2d')][_0xfa74('0x1d')]);_0x152eaa[_0xfa74('0x1a')]=qs[_0xfa74('0x1a')](_0x4ec218[_0xfa74('0x2d')][_0xfa74('0x1a')]);}return _0x427469[_0xfa74('0x48')](_0x152eaa);}})[_0xfa74('0x21')](function(_0x930728){if(_0x930728){return _0x930728?{'count':_0x33e31e,'rows':_0x930728}:null;}})[_0xfa74('0x21')](respondWithResult(_0x3146de,null))[_0xfa74('0x44')](handleError(_0x3146de,null));};exports[_0xfa74('0x49')]=function(_0x512b58,_0x2361d2,_0x3b0dd5){if(_0x512b58['body']['id']){delete _0x512b58['body']['id'];}return db[_0xfa74('0x3e')]['findOne']({'where':{'id':_0x512b58[_0xfa74('0x41')]['id']}})[_0xfa74('0x21')](handleEntityNotFound(_0x2361d2,null))[_0xfa74('0x21')](function(_0x529921){if(_0x529921){_0x512b58[_0xfa74('0x46')]['AccountId']=_0x529921['id'];_0x512b58['body'][_0xfa74('0x4a')]=integrations[_0xfa74('0x4b')](_0x512b58[_0xfa74('0x46')][_0xfa74('0x4c')],_0x512b58[_0xfa74('0x46')][_0xfa74('0x4d')]);_0x512b58[_0xfa74('0x46')][_0xfa74('0x4e')]=integrations[_0xfa74('0x4f')](_0x512b58[_0xfa74('0x46')][_0xfa74('0x4c')],_0x512b58['body'][_0xfa74('0x4d')]);return db['ZendeskConfiguration'][_0xfa74('0x45')](_0x512b58[_0xfa74('0x46')],{'include':[{'model':db[_0xfa74('0x50')],'as':'Subjects'},{'model':db[_0xfa74('0x50')],'as':_0xfa74('0x4e')}]});}return null;})[_0xfa74('0x21')](respondWithResult(_0x2361d2,null))['catch'](handleError(_0x2361d2,null));};exports[_0xfa74('0x51')]=function(_0x34e772,_0x474462,_0x1105e5){var _0x10e5f5='';return db['ZendeskAccount'][_0xfa74('0x47')]({'where':{'id':_0x34e772[_0xfa74('0x41')]['id']},'attributes':['id',_0xfa74('0x52'),_0xfa74('0x53'),_0xfa74('0x54'),_0xfa74('0x55'),_0xfa74('0x56')]})[_0xfa74('0x21')](handleEntityNotFound(_0x474462,null))[_0xfa74('0x21')](function(_0x3526d7){if(_0x3526d7){_0x10e5f5=_0x3526d7[_0xfa74('0x56')];var _0x30aec7=_0x10e5f5['slice'](-0x1);if(_0x30aec7==='/'){_0x10e5f5=_0x10e5f5[_0xfa74('0x57')](0x0,_0x10e5f5[_0xfa74('0x58')](_0x30aec7));}var _0xdffc88={'method':_0xfa74('0x59'),'uri':util[_0xfa74('0x5a')](_0xfa74('0x5b'),_0x10e5f5,_0xfa74('0x5c')),'json':!![]};switch(_0x3526d7[_0xfa74('0x55')]){case'password':_0xdffc88[_0xfa74('0x5d')]={'Authorization':util[_0xfa74('0x5a')](_0xfa74('0x5e'),new Buffer(util[_0xfa74('0x5a')]('%s:%s',_0x3526d7[_0xfa74('0x52')],_0x3526d7[_0xfa74('0x53')]))[_0xfa74('0x5f')](_0xfa74('0x60')))};break;case'token':_0xdffc88[_0xfa74('0x5d')]={'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0xfa74('0x5a')]('%s/token:%s',_0x3526d7[_0xfa74('0x52')],_0x3526d7[_0xfa74('0x54')]))['toString']('base64'))};break;default:throw new db[(_0xfa74('0x61'))][(_0xfa74('0x62'))](_0xfa74('0x63'));}return rp(_0xdffc88);}})[_0xfa74('0x21')](function(_0x4f1acc){if(_0x4f1acc){var _0x5acb9b=['subject',_0xfa74('0x64'),_0xfa74('0x65'),_0xfa74('0x66')];_[_0xfa74('0x67')](_0x4f1acc[_0xfa74('0x5c')],function(_0x52e8ac){return _0x5acb9b[_0xfa74('0x68')](_0x52e8ac[_0xfa74('0x4d')]);});return{'count':_0x4f1acc[_0xfa74('0x5c')][_0xfa74('0x42')],'rows':_[_0xfa74('0x2b')](_0x4f1acc[_0xfa74('0x5c')],function(_0x358db2){return{'id':_0x358db2['id'],'name':_0x358db2[_0xfa74('0x69')]>0x7?_0x358db2[_0xfa74('0x6a')]:_0x358db2['type'],'custom':_0x358db2['position']>0x7?!![]:![],'options':_0x358db2['system_field_options']?_0x358db2[_0xfa74('0x6b')]:_0x358db2[_0xfa74('0x6c')]?_0x358db2[_0xfa74('0x6c')]:[]};})};}})[_0xfa74('0x21')](respondWithResult(_0x474462,null))[_0xfa74('0x44')](function(_0x533649){var _0x3e4323=_0x34e772[_0xfa74('0x2d')]['test']?0x1f4:_0x533649[_0xfa74('0x6d')]||0x1f4;logger['error'](_0xfa74('0x6e'),_0xfa74('0x51'),_0x3e4323,JSON[_0xfa74('0x6f')](_0x533649));delete _0x533649[_0xfa74('0x25')];if(_0x3e4323===0x191){_0x3e4323=0x190;}_0x474462[_0xfa74('0x17')](_0x3e4323)[_0xfa74('0x70')](_0x34e772[_0xfa74('0x2d')][_0xfa74('0x71')]?{'message':'Wrong\x20credentials','statusCode':_0x533649['statusCode']}:_0x533649);});};
\ No newline at end of file
index 1bb3039..b51cddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a39=['ZendeskAccount','int_zendesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x10f70d,_0x3c4f1f){var _0x4b62ea=function(_0x39a779){while(--_0x39a779){_0x10f70d['push'](_0x10f70d['shift']());}};_0x4b62ea(++_0x3c4f1f);}(_0x3a39,0x1ec));var _0x93a3=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3a39[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require(_0x93a3('0x0'));var logger=require(_0x93a3('0x1'))(_0x93a3('0x2'));var moment=require(_0x93a3('0x3'));var BPromise=require(_0x93a3('0x4'));var rp=require(_0x93a3('0x5'));var fs=require('fs');var path=require(_0x93a3('0x6'));var rimraf=require(_0x93a3('0x7'));var config=require(_0x93a3('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x93a3('0x9'));module[_0x93a3('0xa')]=function(_0x3b4b4c,_0x269df8){return _0x3b4b4c[_0x93a3('0xb')](_0x93a3('0xc'),attributes,{'tableName':_0x93a3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd797=['int_zendesk_accounts','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x1f7413,_0x3388c3){var _0x2d2775=function(_0x5e5b4){while(--_0x5e5b4){_0x1f7413['push'](_0x1f7413['shift']());}};_0x2d2775(++_0x3388c3);}(_0xd797,0xc9));var _0x7d79=function(_0x20e071,_0x1fd0e9){_0x20e071=_0x20e071-0x0;var _0x471ec4=_0xd797[_0x20e071];return _0x471ec4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7d79('0x0'))(_0x7d79('0x1'));var moment=require(_0x7d79('0x2'));var BPromise=require(_0x7d79('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7d79('0x4'));var config=require(_0x7d79('0x5'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x7d79('0x6'));module[_0x7d79('0x7')]=function(_0x77492b,_0x4b57bb){return _0x77492b[_0x7d79('0x8')]('ZendeskAccount',attributes,{'tableName':_0x7d79('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f4a6e5..f2d8586 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8631=['info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetZendeskAccount','findAll','options','raw','attributes','include','map','model','then','ShowZendeskAccount','ZendeskAccount','find','util','moment','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0xefd992,_0x3aa307){var _0x3b11d6=function(_0x16e42f){while(--_0x16e42f){_0xefd992['push'](_0xefd992['shift']());}};_0x3b11d6(++_0x3aa307);}(_0x8631,0x15f));var _0x1863=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x8631[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var util=require(_0x1863('0x0'));var moment=require(_0x1863('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1863('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x1863('0x3'));var logger=require(_0x1863('0x4'))(_0x1863('0x5'));var config=require('../../config/environment');var jayson=require(_0x1863('0x6'));var client=jayson[_0x1863('0x7')][_0x1863('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57cdd0,_0x269a72,_0x357d50){return new BPromise(function(_0x346ec1,_0x538c8f){return client['request'](_0x57cdd0,_0x357d50)['then'](function(_0x7f1586){logger[_0x1863('0x9')](_0x1863('0xa'),_0x269a72,_0x1863('0xb'));logger[_0x1863('0xc')](_0x1863('0xd'),_0x269a72,_0x1863('0xb'),JSON[_0x1863('0xe')](_0x7f1586));if(_0x7f1586[_0x1863('0xf')]){if(_0x7f1586[_0x1863('0xf')][_0x1863('0x10')]===0x1f4){logger['error'](_0x1863('0xa'),_0x269a72,_0x7f1586['error'][_0x1863('0x11')]);return _0x538c8f(_0x7f1586['error'][_0x1863('0x11')]);}logger[_0x1863('0xf')](_0x1863('0xa'),_0x269a72,_0x7f1586[_0x1863('0xf')]['message']);return _0x346ec1(_0x7f1586[_0x1863('0xf')][_0x1863('0x11')]);}else{logger[_0x1863('0x9')](_0x1863('0xa'),_0x269a72,'request\x20sent');_0x346ec1(_0x7f1586['result'][_0x1863('0x11')]);}})['catch'](function(_0x553e67){logger[_0x1863('0xf')](_0x1863('0xa'),_0x269a72,_0x553e67);_0x538c8f(_0x553e67);});});}exports[_0x1863('0x12')]=function(_0x29579f){var _0x27995a=this;return new Promise(function(_0x3d1dfd,_0x2a2034){return db['ZendeskAccount'][_0x1863('0x13')]({'raw':_0x29579f[_0x1863('0x14')]?_0x29579f[_0x1863('0x14')][_0x1863('0x15')]===undefined?!![]:![]:!![],'where':_0x29579f['options']?_0x29579f[_0x1863('0x14')]['where']||null:null,'attributes':_0x29579f[_0x1863('0x14')]?_0x29579f[_0x1863('0x14')][_0x1863('0x16')]||null:null,'limit':_0x29579f['options']?_0x29579f[_0x1863('0x14')]['limit']||null:null,'include':_0x29579f['options']?_0x29579f['options'][_0x1863('0x17')]?_[_0x1863('0x18')](_0x29579f[_0x1863('0x14')][_0x1863('0x17')],function(_0x326a60){return{'model':db[_0x326a60[_0x1863('0x19')]],'as':_0x326a60['as'],'attributes':_0x326a60['attributes'],'include':_0x326a60[_0x1863('0x17')]?_[_0x1863('0x18')](_0x326a60[_0x1863('0x17')],function(_0x536ea0){return{'model':db[_0x536ea0[_0x1863('0x19')]],'as':_0x536ea0['as'],'attributes':_0x536ea0[_0x1863('0x16')],'include':_0x536ea0[_0x1863('0x17')]?_[_0x1863('0x18')](_0x536ea0['include'],function(_0xacd8d6){return{'model':db[_0xacd8d6[_0x1863('0x19')]],'as':_0xacd8d6['as'],'attributes':_0xacd8d6[_0x1863('0x16')]};}):[]};}):[]};}):[]:[]})[_0x1863('0x1a')](function(_0x5aea63){logger['info'](_0x1863('0x12'),_0x29579f);logger[_0x1863('0xc')](_0x1863('0x12'),_0x29579f,JSON[_0x1863('0xe')](_0x5aea63));_0x3d1dfd(_0x5aea63);})['catch'](function(_0x340303){logger[_0x1863('0xf')]('GetZendeskAccount',_0x340303[_0x1863('0x11')],_0x29579f);_0x2a2034(_0x27995a[_0x1863('0xf')](0x1f4,_0x340303[_0x1863('0x11')]));});});};exports[_0x1863('0x1b')]=function(_0x26b829){var _0x1932f0=this;return new Promise(function(_0x22b866,_0x124d0f){return db[_0x1863('0x1c')][_0x1863('0x1d')]({'raw':_0x26b829[_0x1863('0x14')]?_0x26b829[_0x1863('0x14')][_0x1863('0x15')]===undefined?!![]:![]:!![],'where':_0x26b829[_0x1863('0x14')]?_0x26b829[_0x1863('0x14')]['where']||null:null,'attributes':_0x26b829[_0x1863('0x14')]?_0x26b829['options']['attributes']||null:null,'include':_0x26b829[_0x1863('0x14')]?_0x26b829[_0x1863('0x14')][_0x1863('0x17')]?_[_0x1863('0x18')](_0x26b829['options'][_0x1863('0x17')],function(_0x1dd780){return{'model':db[_0x1dd780[_0x1863('0x19')]],'as':_0x1dd780['as'],'attributes':_0x1dd780['attributes'],'include':_0x1dd780[_0x1863('0x17')]?_[_0x1863('0x18')](_0x1dd780[_0x1863('0x17')],function(_0x11264e){return{'model':db[_0x11264e[_0x1863('0x19')]],'as':_0x11264e['as'],'attributes':_0x11264e[_0x1863('0x16')],'include':_0x11264e[_0x1863('0x17')]?_[_0x1863('0x18')](_0x11264e[_0x1863('0x17')],function(_0x4de77e){return{'model':db[_0x4de77e[_0x1863('0x19')]],'as':_0x4de77e['as'],'attributes':_0x4de77e['attributes']};}):[]};}):[]};}):[]:[]})[_0x1863('0x1a')](function(_0x5151ee){logger[_0x1863('0x9')]('ShowZendeskAccount',_0x26b829);logger[_0x1863('0xc')](_0x1863('0x1b'),_0x26b829,JSON['stringify'](_0x5151ee));_0x22b866(_0x5151ee);})['catch'](function(_0x5f1134){logger[_0x1863('0xf')](_0x1863('0x1b'),_0x5f1134[_0x1863('0x11')],_0x26b829);_0x124d0f(_0x1932f0[_0x1863('0xf')](0x1f4,_0x5f1134[_0x1863('0x11')]));});});};
\ No newline at end of file
+var _0x59f2=['attributes','map','model','include','then','stringify','ShowZendeskAccount','find','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x59f2,0x118));var _0x259f=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x59f2[_0x49ca18];return _0x145d54;};'use strict';var _=require(_0x259f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x259f('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x259f('0x2'))['db'];var utils=require(_0x259f('0x3'));var logger=require(_0x259f('0x4'))(_0x259f('0x5'));var config=require(_0x259f('0x6'));var jayson=require(_0x259f('0x7'));var client=jayson[_0x259f('0x8')][_0x259f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ddebe,_0x59ada0,_0x11294c){return new BPromise(function(_0x529ecd,_0x5bdd5f){return client[_0x259f('0xa')](_0x4ddebe,_0x11294c)['then'](function(_0xc644e5){logger[_0x259f('0xb')](_0x259f('0xc'),_0x59ada0,_0x259f('0xd'));logger[_0x259f('0xe')](_0x259f('0xf'),_0x59ada0,_0x259f('0xd'),JSON['stringify'](_0xc644e5));if(_0xc644e5[_0x259f('0x10')]){if(_0xc644e5[_0x259f('0x10')][_0x259f('0x11')]===0x1f4){logger['error'](_0x259f('0xc'),_0x59ada0,_0xc644e5[_0x259f('0x10')]['message']);return _0x5bdd5f(_0xc644e5[_0x259f('0x10')][_0x259f('0x12')]);}logger[_0x259f('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x59ada0,_0xc644e5[_0x259f('0x10')][_0x259f('0x12')]);return _0x529ecd(_0xc644e5[_0x259f('0x10')]['message']);}else{logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x59ada0,_0x259f('0xd'));_0x529ecd(_0xc644e5['result'][_0x259f('0x12')]);}})[_0x259f('0x13')](function(_0x222779){logger[_0x259f('0x10')](_0x259f('0xc'),_0x59ada0,_0x222779);_0x5bdd5f(_0x222779);});});}exports[_0x259f('0x14')]=function(_0x3e1053){var _0x27b726=this;return new Promise(function(_0x1b3a3b,_0xe3b7ff){return db[_0x259f('0x15')][_0x259f('0x16')]({'raw':_0x3e1053[_0x259f('0x17')]?_0x3e1053[_0x259f('0x17')][_0x259f('0x18')]===undefined?!![]:![]:!![],'where':_0x3e1053[_0x259f('0x17')]?_0x3e1053['options'][_0x259f('0x19')]||null:null,'attributes':_0x3e1053['options']?_0x3e1053[_0x259f('0x17')][_0x259f('0x1a')]||null:null,'limit':_0x3e1053['options']?_0x3e1053[_0x259f('0x17')]['limit']||null:null,'include':_0x3e1053[_0x259f('0x17')]?_0x3e1053[_0x259f('0x17')]['include']?_[_0x259f('0x1b')](_0x3e1053[_0x259f('0x17')]['include'],function(_0x2e8392){return{'model':db[_0x2e8392[_0x259f('0x1c')]],'as':_0x2e8392['as'],'attributes':_0x2e8392['attributes'],'include':_0x2e8392['include']?_['map'](_0x2e8392['include'],function(_0x63230e){return{'model':db[_0x63230e[_0x259f('0x1c')]],'as':_0x63230e['as'],'attributes':_0x63230e[_0x259f('0x1a')],'include':_0x63230e[_0x259f('0x1d')]?_[_0x259f('0x1b')](_0x63230e[_0x259f('0x1d')],function(_0x44bdb4){return{'model':db[_0x44bdb4['model']],'as':_0x44bdb4['as'],'attributes':_0x44bdb4['attributes']};}):[]};}):[]};}):[]:[]})[_0x259f('0x1e')](function(_0x4330a2){logger[_0x259f('0xb')](_0x259f('0x14'),_0x3e1053);logger[_0x259f('0xe')](_0x259f('0x14'),_0x3e1053,JSON[_0x259f('0x1f')](_0x4330a2));_0x1b3a3b(_0x4330a2);})[_0x259f('0x13')](function(_0x6cbd77){logger[_0x259f('0x10')](_0x259f('0x14'),_0x6cbd77['message'],_0x3e1053);_0xe3b7ff(_0x27b726['error'](0x1f4,_0x6cbd77['message']));});});};exports[_0x259f('0x20')]=function(_0x4b40da){var _0x230c8e=this;return new Promise(function(_0x4cf909,_0x24be94){return db[_0x259f('0x15')][_0x259f('0x21')]({'raw':_0x4b40da[_0x259f('0x17')]?_0x4b40da[_0x259f('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4b40da[_0x259f('0x17')]?_0x4b40da[_0x259f('0x17')]['where']||null:null,'attributes':_0x4b40da['options']?_0x4b40da['options']['attributes']||null:null,'include':_0x4b40da[_0x259f('0x17')]?_0x4b40da[_0x259f('0x17')][_0x259f('0x1d')]?_[_0x259f('0x1b')](_0x4b40da[_0x259f('0x17')][_0x259f('0x1d')],function(_0x57efbc){return{'model':db[_0x57efbc['model']],'as':_0x57efbc['as'],'attributes':_0x57efbc[_0x259f('0x1a')],'include':_0x57efbc[_0x259f('0x1d')]?_[_0x259f('0x1b')](_0x57efbc[_0x259f('0x1d')],function(_0x5be048){return{'model':db[_0x5be048[_0x259f('0x1c')]],'as':_0x5be048['as'],'attributes':_0x5be048[_0x259f('0x1a')],'include':_0x5be048[_0x259f('0x1d')]?_['map'](_0x5be048[_0x259f('0x1d')],function(_0x27caed){return{'model':db[_0x27caed['model']],'as':_0x27caed['as'],'attributes':_0x27caed[_0x259f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x259f('0x1e')](function(_0x42f800){logger[_0x259f('0xb')](_0x259f('0x20'),_0x4b40da);logger[_0x259f('0xe')](_0x259f('0x20'),_0x4b40da,JSON[_0x259f('0x1f')](_0x42f800));_0x4cf909(_0x42f800);})[_0x259f('0x13')](function(_0x21502f){logger[_0x259f('0x10')](_0x259f('0x20'),_0x21502f[_0x259f('0x12')],_0x4b40da);_0x24be94(_0x230c8e[_0x259f('0x10')](0x1f4,_0x21502f[_0x259f('0x12')]));});});};
\ No newline at end of file
index 93357a5..3682b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['get','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskConfiguration.controller','isAuthenticated','index','/:id','show'];(function(_0x31de25,_0x3bcd63){var _0x276132=function(_0x53260a){while(--_0x53260a){_0x31de25['push'](_0x31de25['shift']());}};_0x276132(++_0x3bcd63);}(_0x4fc2,0x111));var _0x24fc=function(_0x3daf63,_0x25528a){_0x3daf63=_0x3daf63-0x0;var _0x558174=_0x4fc2[_0x3daf63];return _0x558174;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')](_0x24fc('0xe'),auth[_0x24fc('0x9')](),controller['getFields']);router[_0x24fc('0xd')](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x10')]);router[_0x24fc('0xd')](_0x24fc('0x11'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x12')]);router['get'](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['getTags']);router[_0x24fc('0x14')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0x15')]);router[_0x24fc('0x14')](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['setTags']);router[_0x24fc('0x16')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x17')]);router['delete'](_0x24fc('0xb'),auth['isAuthenticated'](),controller[_0x24fc('0x18')]);module[_0x24fc('0x19')]=router;
\ No newline at end of file
+var _0x750a=['getTags','post','setTags','put','update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','getSubjects','/:id/tags'];(function(_0x17e742,_0x371a08){var _0x1c7ace=function(_0x3498ab){while(--_0x3498ab){_0x17e742['push'](_0x17e742['shift']());}};_0x1c7ace(++_0x371a08);}(_0x750a,0x140));var _0xa750=function(_0x19909c,_0x5a654d){_0x19909c=_0x19909c-0x0;var _0x339de5=_0x750a[_0x19909c];return _0x339de5;};'use strict';var multer=require('multer');var util=require(_0xa750('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa750('0x1'));var router=express[_0xa750('0x2')]();var fs_extra=require(_0xa750('0x3'));var auth=require(_0xa750('0x4'));var interaction=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var controller=require(_0xa750('0x7'));router[_0xa750('0x8')]('/',auth[_0xa750('0x9')](),controller[_0xa750('0xa')]);router[_0xa750('0x8')](_0xa750('0xb'),auth[_0xa750('0x9')](),controller['show']);router['get'](_0xa750('0xc'),auth['isAuthenticated'](),controller[_0xa750('0xd')]);router[_0xa750('0x8')]('/:id/subjects',auth[_0xa750('0x9')](),controller[_0xa750('0xe')]);router['get']('/:id/descriptions',auth[_0xa750('0x9')](),controller['getDescriptions']);router[_0xa750('0x8')](_0xa750('0xf'),auth['isAuthenticated'](),controller[_0xa750('0x10')]);router[_0xa750('0x11')]('/',auth[_0xa750('0x9')](),controller['create']);router[_0xa750('0x11')](_0xa750('0xf'),auth[_0xa750('0x9')](),controller[_0xa750('0x12')]);router[_0xa750('0x13')](_0xa750('0xb'),auth['isAuthenticated'](),controller[_0xa750('0x14')]);router[_0xa750('0x15')](_0xa750('0xb'),auth['isAuthenticated'](),controller[_0xa750('0x16')]);module[_0xa750('0x17')]=router;
\ No newline at end of file
index ad603e5..1e9103b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6078=['sequelize','exports','STRING'];(function(_0x21528d,_0x342d06){var _0x12adac=function(_0x438a57){while(--_0x438a57){_0x21528d['push'](_0x21528d['shift']());}};_0x12adac(++_0x342d06);}(_0x6078,0x72));var _0x8607=function(_0x559dbf,_0x249d39){_0x559dbf=_0x559dbf-0x0;var _0x578eb7=_0x6078[_0x559dbf];return _0x578eb7;};'use strict';var Sequelize=require(_0x8607('0x0'));module[_0x8607('0x1')]={'name':{'type':Sequelize[_0x8607('0x2')]},'description':{'type':Sequelize[_0x8607('0x2')]}};
\ No newline at end of file
+var _0x161f=['sequelize','exports','STRING'];(function(_0x52a09e,_0x1c070a){var _0x1a8735=function(_0x2df02f){while(--_0x2df02f){_0x52a09e['push'](_0x52a09e['shift']());}};_0x1a8735(++_0x1c070a);}(_0x161f,0xd2));var _0xf161=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x161f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf161('0x0'));module[_0xf161('0x1')]={'name':{'type':Sequelize[_0xf161('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index fe08354..bdf9464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7c4=['destroy','getFields','ZendeskField','order','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','stack','name','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','merge','find','create','body','update'];(function(_0x3e315e,_0x30863b){var _0x4b5155=function(_0x131bd7){while(--_0x131bd7){_0x3e315e['push'](_0x3e315e['shift']());}};_0x4b5155(++_0x30863b);}(_0xf7c4,0xfe));var _0x4f7c=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0xf7c4[_0x2b5eae];return _0x5f3ac9;};'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(_0x4f7c('0x0'));var moment=require(_0x4f7c('0x1'));var BPromise=require(_0x4f7c('0x2'));var Mustache=require(_0x4f7c('0x3'));var util=require(_0x4f7c('0x4'));var path=require('path');var sox=require(_0x4f7c('0x5'));var csv=require(_0x4f7c('0x6'));var ejs=require(_0x4f7c('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f7c('0x8'));var squel=require(_0x4f7c('0x9'));var crypto=require(_0x4f7c('0xa'));var jsforce=require(_0x4f7c('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x4f7c('0x6'));var querystring=require('querystring');var Papa=require(_0x4f7c('0xc'));var Redis=require('ioredis');var authService=require(_0x4f7c('0xd'));var qs=require(_0x4f7c('0xe'));var as=require(_0x4f7c('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4f7c('0x10'));var config=require(_0x4f7c('0x11'));var licenseUtil=require(_0x4f7c('0x12'));var db=require(_0x4f7c('0x13'))['db'];function respondWithStatusCode(_0x5e482a,_0x5bca26){_0x5bca26=_0x5bca26||0xcc;return function(_0x586613){if(_0x586613){return _0x5e482a['sendStatus'](_0x5bca26);}return _0x5e482a[_0x4f7c('0x14')](_0x5bca26)[_0x4f7c('0x15')]();};}function respondWithResult(_0x3982fd,_0x1129cd){_0x1129cd=_0x1129cd||0xc8;return function(_0x56bf19){if(_0x56bf19){return _0x3982fd[_0x4f7c('0x14')](_0x1129cd)[_0x4f7c('0x16')](_0x56bf19);}};}function respondWithFilteredResult(_0xa6b8c,_0x3887a2){return function(_0x42e641){if(_0x42e641){var _0x5360be=typeof _0x3887a2[_0x4f7c('0x17')]==='undefined'&&typeof _0x3887a2[_0x4f7c('0x18')]==='undefined';var _0x3b1160=_0x42e641['count'];var _0x5417dd=_0x5360be?0x0:_0x3887a2[_0x4f7c('0x17')];var _0x18d21c=_0x5360be?_0x42e641[_0x4f7c('0x19')]:_0x3887a2[_0x4f7c('0x17')]+_0x3887a2[_0x4f7c('0x18')];var _0x345713;if(_0x18d21c>=_0x3b1160){_0x18d21c=_0x3b1160;_0x345713=0xc8;}else{_0x345713=0xce;}_0xa6b8c['status'](_0x345713);return _0xa6b8c[_0x4f7c('0x1a')](_0x4f7c('0x1b'),_0x5417dd+'-'+_0x18d21c+'/'+_0x3b1160)[_0x4f7c('0x16')](_0x42e641);}return null;};}function patchUpdates(_0x2cab8c){return function(_0x7f6f72){try{jsonpatch[_0x4f7c('0x1c')](_0x7f6f72,_0x2cab8c,!![]);}catch(_0x2344d1){return BPromise[_0x4f7c('0x1d')](_0x2344d1);}return _0x7f6f72[_0x4f7c('0x1e')]();};}function saveUpdates(_0x385eb8,_0x3fc963){return function(_0x5ec4fe){if(_0x5ec4fe){return _0x5ec4fe['update'](_0x385eb8)[_0x4f7c('0x1f')](function(_0x1e1d83){return _0x1e1d83;});}return null;};}function removeEntity(_0x57e3db,_0x19ea73){return function(_0x2cc3eb){if(_0x2cc3eb){return _0x2cc3eb['destroy']()[_0x4f7c('0x1f')](function(){_0x57e3db['status'](0xcc)[_0x4f7c('0x15')]();});}};}function handleEntityNotFound(_0x27c4f3,_0x30d8e6){return function(_0x2d6000){if(!_0x2d6000){_0x27c4f3[_0x4f7c('0x20')](0x194);}return _0x2d6000;};}function handleError(_0x148d80,_0x515de1){_0x515de1=_0x515de1||0x1f4;return function(_0x3150fa){logger['error'](_0x3150fa[_0x4f7c('0x21')]);if(_0x3150fa[_0x4f7c('0x22')]){delete _0x3150fa[_0x4f7c('0x22')];}_0x148d80[_0x4f7c('0x14')](_0x515de1)['send'](_0x3150fa);};}exports[_0x4f7c('0x23')]=function(_0x3d705c,_0x336992){var _0x20c521={},_0x5f25b2={},_0x4fe5c8={'count':0x0,'rows':[]};var _0x48d4a5=_[_0x4f7c('0x24')](db[_0x4f7c('0x25')][_0x4f7c('0x26')],function(_0x2f1759){return{'name':_0x2f1759[_0x4f7c('0x27')],'type':_0x2f1759[_0x4f7c('0x28')][_0x4f7c('0x29')]};});_0x5f25b2[_0x4f7c('0x2a')]=_[_0x4f7c('0x24')](_0x48d4a5,_0x4f7c('0x22'));_0x5f25b2[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x3d705c['query']);_0x5f25b2[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0x5f25b2[_0x4f7c('0x2a')],_0x5f25b2['query']);_0x20c521[_0x4f7c('0x2f')]=_[_0x4f7c('0x2e')](_0x5f25b2[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x20c521[_0x4f7c('0x2f')]=_0x20c521[_0x4f7c('0x2f')]['length']?_0x20c521[_0x4f7c('0x2f')]:_0x5f25b2['model'];if(!_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x20c521[_0x4f7c('0x18')]=qs[_0x4f7c('0x18')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x18')]);_0x20c521['offset']=qs[_0x4f7c('0x17')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x17')]);}_0x20c521['order']=qs[_0x4f7c('0x33')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x33')]);_0x20c521[_0x4f7c('0x34')]=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x3d705c[_0x4f7c('0x2b')],_0x5f25b2[_0x4f7c('0x2d')]),_0x48d4a5);if(_0x3d705c['query'][_0x4f7c('0x36')]){_0x20c521[_0x4f7c('0x34')]=_['merge'](_0x20c521['where'],{'$or':_[_0x4f7c('0x24')](_0x48d4a5,function(_0x2632d3){if(_0x2632d3[_0x4f7c('0x28')]!==_0x4f7c('0x37')){var _0x2261e2={};_0x2261e2[_0x2632d3['name']]={'$like':'%'+_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x2261e2;}})});}_0x20c521=_['merge']({},_0x20c521,_0x3d705c[_0x4f7c('0x38')]);var _0x412b7f={'where':_0x20c521[_0x4f7c('0x34')]};return db[_0x4f7c('0x25')][_0x4f7c('0x19')](_0x412b7f)[_0x4f7c('0x1f')](function(_0x47ac05){_0x4fe5c8[_0x4f7c('0x19')]=_0x47ac05;if(_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x39')]){_0x20c521['include']=[{'all':!![]}];}return db[_0x4f7c('0x25')][_0x4f7c('0x3a')](_0x20c521);})[_0x4f7c('0x1f')](function(_0x5d0f77){_0x4fe5c8[_0x4f7c('0x3b')]=_0x5d0f77;return _0x4fe5c8;})[_0x4f7c('0x1f')](respondWithFilteredResult(_0x336992,_0x20c521))[_0x4f7c('0x3c')](handleError(_0x336992,null));};exports[_0x4f7c('0x3d')]=function(_0x3c0a32,_0x1271ab){var _0x58bda2={'raw':![],'where':{'id':_0x3c0a32[_0x4f7c('0x3e')]['id']}},_0x408bab={};_0x408bab[_0x4f7c('0x2a')]=_['keys'](db[_0x4f7c('0x25')][_0x4f7c('0x26')]);_0x408bab['query']=_['keys'](_0x3c0a32[_0x4f7c('0x2b')]);_0x408bab[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0x408bab[_0x4f7c('0x2a')],_0x408bab[_0x4f7c('0x2b')]);_0x58bda2[_0x4f7c('0x2f')]=_[_0x4f7c('0x2e')](_0x408bab[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x3c0a32[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x58bda2[_0x4f7c('0x2f')]=_0x58bda2[_0x4f7c('0x2f')][_0x4f7c('0x3f')]?_0x58bda2[_0x4f7c('0x2f')]:_0x408bab['model'];if(_0x3c0a32[_0x4f7c('0x2b')][_0x4f7c('0x39')]){_0x58bda2[_0x4f7c('0x40')]=[{'all':!![]}];}_0x58bda2=_[_0x4f7c('0x41')]({},_0x58bda2,_0x3c0a32['options']);return db['ZendeskConfiguration'][_0x4f7c('0x42')](_0x58bda2)[_0x4f7c('0x1f')](handleEntityNotFound(_0x1271ab,null))[_0x4f7c('0x1f')](respondWithResult(_0x1271ab,null))['catch'](handleError(_0x1271ab,null));};exports[_0x4f7c('0x43')]=function(_0x55c74b,_0x1157c6){return db[_0x4f7c('0x25')][_0x4f7c('0x43')](_0x55c74b[_0x4f7c('0x44')],{})[_0x4f7c('0x1f')](respondWithResult(_0x1157c6,0xc9))['catch'](handleError(_0x1157c6,null));};exports[_0x4f7c('0x45')]=function(_0x4ce428,_0x4745b4){if(_0x4ce428['body']['id']){delete _0x4ce428[_0x4f7c('0x44')]['id'];}return db['ZendeskConfiguration'][_0x4f7c('0x42')]({'where':{'id':_0x4ce428[_0x4f7c('0x3e')]['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x4745b4,null))[_0x4f7c('0x1f')](saveUpdates(_0x4ce428[_0x4f7c('0x44')],null))[_0x4f7c('0x1f')](respondWithResult(_0x4745b4,null))[_0x4f7c('0x3c')](handleError(_0x4745b4,null));};exports[_0x4f7c('0x46')]=function(_0x22bcfa,_0x3a613f){return db['ZendeskConfiguration'][_0x4f7c('0x42')]({'where':{'id':_0x22bcfa['params']['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x3a613f,null))[_0x4f7c('0x1f')](removeEntity(_0x3a613f,null))[_0x4f7c('0x3c')](handleError(_0x3a613f,null));};exports[_0x4f7c('0x47')]=function(_0x6e2e5,_0x554151,_0x13b969){var _0x24962d={};var _0x3bed43={};var _0x17af9b;var _0x50f781;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x6e2e5[_0x4f7c('0x3e')]['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x554151,null))[_0x4f7c('0x1f')](function(_0x4cc5c4){if(_0x4cc5c4){_0x17af9b=_0x4cc5c4;_0x3bed43[_0x4f7c('0x2a')]=_[_0x4f7c('0x2c')](db[_0x4f7c('0x48')][_0x4f7c('0x26')]);_0x3bed43['query']=_[_0x4f7c('0x2c')](_0x6e2e5[_0x4f7c('0x2b')]);_0x3bed43[_0x4f7c('0x2d')]=_['intersection'](_0x3bed43[_0x4f7c('0x2a')],_0x3bed43[_0x4f7c('0x2b')]);_0x24962d['attributes']=_[_0x4f7c('0x2e')](_0x3bed43[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x24962d[_0x4f7c('0x2f')]=_0x24962d[_0x4f7c('0x2f')]['length']?_0x24962d[_0x4f7c('0x2f')]:_0x3bed43[_0x4f7c('0x2a')];_0x24962d[_0x4f7c('0x49')]=qs[_0x4f7c('0x33')](_0x6e2e5['query'][_0x4f7c('0x33')]);_0x24962d['where']=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x6e2e5[_0x4f7c('0x2b')],_0x3bed43[_0x4f7c('0x2d')]));if(_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x36')]){_0x24962d[_0x4f7c('0x34')]=_[_0x4f7c('0x41')](_0x24962d[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x24962d['attributes'],function(_0x4be489){var _0x37bf82={};_0x37bf82[_0x4be489]={'$like':'%'+_0x6e2e5[_0x4f7c('0x2b')]['filter']+'%'};return _0x37bf82;})});}_0x24962d=_['merge']({},_0x24962d,_0x6e2e5[_0x4f7c('0x38')]);return _0x17af9b[_0x4f7c('0x47')](_0x24962d);}})[_0x4f7c('0x1f')](function(_0x5e8233){if(_0x5e8233){_0x50f781=_0x5e8233[_0x4f7c('0x3f')];if(!_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x24962d[_0x4f7c('0x18')]=qs['limit'](_0x6e2e5[_0x4f7c('0x2b')]['limit']);_0x24962d[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x17')]);}return _0x17af9b[_0x4f7c('0x47')](_0x24962d);}})[_0x4f7c('0x1f')](function(_0xb09a14){if(_0xb09a14){return _0xb09a14?{'count':_0x50f781,'rows':_0xb09a14}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x554151,null))[_0x4f7c('0x3c')](handleError(_0x554151,null));};exports[_0x4f7c('0x4a')]=function(_0x2551c2,_0x493e69,_0x1e618e){var _0x154e7e={};var _0xff05fc={};var _0x5706b3;var _0x156b55;return db[_0x4f7c('0x25')][_0x4f7c('0x4b')]({'where':{'id':_0x2551c2[_0x4f7c('0x3e')]['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x493e69,null))[_0x4f7c('0x1f')](function(_0x16d218){if(_0x16d218){_0x5706b3=_0x16d218;_0xff05fc[_0x4f7c('0x2a')]=_[_0x4f7c('0x2c')](db[_0x4f7c('0x48')][_0x4f7c('0x26')]);_0xff05fc[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x2551c2[_0x4f7c('0x2b')]);_0xff05fc[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0xff05fc[_0x4f7c('0x2a')],_0xff05fc['query']);_0x154e7e['attributes']=_[_0x4f7c('0x2e')](_0xff05fc['model'],qs['fields'](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x154e7e[_0x4f7c('0x2f')]=_0x154e7e[_0x4f7c('0x2f')][_0x4f7c('0x3f')]?_0x154e7e[_0x4f7c('0x2f')]:_0xff05fc[_0x4f7c('0x2a')];_0x154e7e[_0x4f7c('0x49')]=qs['sort'](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x33')]);_0x154e7e[_0x4f7c('0x34')]=qs['filters'](_[_0x4f7c('0x35')](_0x2551c2['query'],_0xff05fc['filters']));if(_0x2551c2[_0x4f7c('0x2b')]['filter']){_0x154e7e[_0x4f7c('0x34')]=_[_0x4f7c('0x41')](_0x154e7e[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x154e7e[_0x4f7c('0x2f')],function(_0x3e7aa8){var _0x1cb4b6={};_0x1cb4b6[_0x3e7aa8]={'$like':'%'+_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x1cb4b6;})});}_0x154e7e=_[_0x4f7c('0x41')]({},_0x154e7e,_0x2551c2[_0x4f7c('0x38')]);return _0x5706b3[_0x4f7c('0x4a')](_0x154e7e);}})[_0x4f7c('0x1f')](function(_0x98eb4e){if(_0x98eb4e){_0x156b55=_0x98eb4e['length'];if(!_0x2551c2['query'][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x154e7e[_0x4f7c('0x18')]=qs[_0x4f7c('0x18')](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x18')]);_0x154e7e[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x17')]);}return _0x5706b3[_0x4f7c('0x4a')](_0x154e7e);}})[_0x4f7c('0x1f')](function(_0x4777c6){if(_0x4777c6){return _0x4777c6?{'count':_0x156b55,'rows':_0x4777c6}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x493e69,null))[_0x4f7c('0x3c')](handleError(_0x493e69,null));};exports[_0x4f7c('0x4c')]=function(_0x20cb13,_0x32d131,_0xab26dd){var _0x492e69={};var _0xb0dd24={};var _0x2622e8;var _0x53d1bc;return db['ZendeskConfiguration'][_0x4f7c('0x4b')]({'where':{'id':_0x20cb13[_0x4f7c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x32d131,null))[_0x4f7c('0x1f')](function(_0x439fa4){if(_0x439fa4){_0x2622e8=_0x439fa4;_0xb0dd24['model']=_['keys'](db['ZendeskField'][_0x4f7c('0x26')]);_0xb0dd24[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x20cb13[_0x4f7c('0x2b')]);_0xb0dd24[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0xb0dd24[_0x4f7c('0x2a')],_0xb0dd24[_0x4f7c('0x2b')]);_0x492e69[_0x4f7c('0x2f')]=_['intersection'](_0xb0dd24[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x20cb13[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x492e69['attributes']=_0x492e69[_0x4f7c('0x2f')]['length']?_0x492e69[_0x4f7c('0x2f')]:_0xb0dd24[_0x4f7c('0x2a')];_0x492e69[_0x4f7c('0x49')]=qs['sort'](_0x20cb13[_0x4f7c('0x2b')][_0x4f7c('0x33')]);_0x492e69[_0x4f7c('0x34')]=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x20cb13[_0x4f7c('0x2b')],_0xb0dd24[_0x4f7c('0x2d')]));if(_0x20cb13[_0x4f7c('0x2b')]['filter']){_0x492e69[_0x4f7c('0x34')]=_['merge'](_0x492e69[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x492e69['attributes'],function(_0x23e9e7){var _0x166ac8={};_0x166ac8[_0x23e9e7]={'$like':'%'+_0x20cb13[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x166ac8;})});}_0x492e69=_[_0x4f7c('0x41')]({},_0x492e69,_0x20cb13[_0x4f7c('0x38')]);return _0x2622e8[_0x4f7c('0x4c')](_0x492e69);}})['then'](function(_0x179f25){if(_0x179f25){_0x53d1bc=_0x179f25['length'];if(!_0x20cb13['query'][_0x4f7c('0x31')]('nolimit')){_0x492e69['limit']=qs[_0x4f7c('0x18')](_0x20cb13[_0x4f7c('0x2b')]['limit']);_0x492e69[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x20cb13['query']['offset']);}return _0x2622e8['getDescriptions'](_0x492e69);}})[_0x4f7c('0x1f')](function(_0x2ad0cd){if(_0x2ad0cd){return _0x2ad0cd?{'count':_0x53d1bc,'rows':_0x2ad0cd}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x32d131,null))[_0x4f7c('0x3c')](handleError(_0x32d131,null));};exports[_0x4f7c('0x4d')]=function(_0x537ee3,_0x52c788,_0x42dbbd){var _0x41d822={};var _0x4d0552={};var _0x384cf3;var _0x46356e;return db[_0x4f7c('0x25')][_0x4f7c('0x4b')]({'where':{'id':_0x537ee3['params']['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x52c788,null))[_0x4f7c('0x1f')](function(_0x222228){if(_0x222228){_0x384cf3=_0x222228;_0x4d0552[_0x4f7c('0x2a')]=_[_0x4f7c('0x2c')](db[_0x4f7c('0x4e')][_0x4f7c('0x26')]);_0x4d0552[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x537ee3[_0x4f7c('0x2b')]);_0x4d0552[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0x4d0552[_0x4f7c('0x2a')],_0x4d0552[_0x4f7c('0x2b')]);_0x41d822[_0x4f7c('0x2f')]=_[_0x4f7c('0x2e')](_0x4d0552[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x537ee3[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x41d822[_0x4f7c('0x2f')]=_0x41d822[_0x4f7c('0x2f')][_0x4f7c('0x3f')]?_0x41d822[_0x4f7c('0x2f')]:_0x4d0552[_0x4f7c('0x2a')];_0x41d822['order']=qs[_0x4f7c('0x33')](_0x537ee3[_0x4f7c('0x2b')]['sort']);_0x41d822[_0x4f7c('0x34')]=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x537ee3[_0x4f7c('0x2b')],_0x4d0552[_0x4f7c('0x2d')]));if(_0x537ee3['query'][_0x4f7c('0x36')]){_0x41d822['where']=_[_0x4f7c('0x41')](_0x41d822[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x41d822[_0x4f7c('0x2f')],function(_0x3ae1dc){var _0x3a184f={};_0x3a184f[_0x3ae1dc]={'$like':'%'+_0x537ee3[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x3a184f;})});}_0x41d822=_['merge']({},_0x41d822,_0x537ee3[_0x4f7c('0x38')]);return _0x384cf3['getTags'](_0x41d822);}})[_0x4f7c('0x1f')](function(_0x5dff5b){if(_0x5dff5b){_0x46356e=_0x5dff5b[_0x4f7c('0x3f')];if(!_0x537ee3['query'][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x41d822['limit']=qs[_0x4f7c('0x18')](_0x537ee3[_0x4f7c('0x2b')][_0x4f7c('0x18')]);_0x41d822[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x537ee3[_0x4f7c('0x2b')]['offset']);}return _0x384cf3[_0x4f7c('0x4d')](_0x41d822);}})['then'](function(_0x25b4ad){if(_0x25b4ad){return _0x25b4ad?{'count':_0x46356e,'rows':_0x25b4ad}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x52c788,null))[_0x4f7c('0x3c')](handleError(_0x52c788,null));};exports[_0x4f7c('0x4f')]=function(_0x33b412,_0x74111a,_0xd69820){if(_0x33b412[_0x4f7c('0x44')]['id']){delete _0x33b412[_0x4f7c('0x44')]['id'];}return db['ZendeskConfiguration'][_0x4f7c('0x4b')]({'where':{'id':_0x33b412['params']['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x74111a,null))[_0x4f7c('0x1f')](function(_0x469bf7){if(_0x469bf7){return _0x469bf7[_0x4f7c('0x4f')](_0x33b412[_0x4f7c('0x44')][_0x4f7c('0x50')]||[]);}return null;})[_0x4f7c('0x1f')](respondWithResult(_0x74111a,null))[_0x4f7c('0x3c')](handleError(_0x74111a,null));};
\ No newline at end of file
+var _0xc330=['ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','count','include','ZendeskConfiguration','findAll','show','keys','includeAll','options','catch','create','body','params','find','findOne','ZendeskField','sort','getFields','hasOwnProperty','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xc330,0x19b));var _0x0c33=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xc330[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x0c33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0c33('0x1'));var jsonpatch=require(_0x0c33('0x2'));var rp=require(_0x0c33('0x3'));var moment=require(_0x0c33('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0c33('0x5'));var util=require(_0x0c33('0x6'));var path=require('path');var sox=require(_0x0c33('0x7'));var csv=require(_0x0c33('0x8'));var ejs=require(_0x0c33('0x9'));var fs=require('fs');var fs_extra=require(_0x0c33('0xa'));var _=require(_0x0c33('0xb'));var squel=require(_0x0c33('0xc'));var crypto=require('crypto');var jsforce=require(_0x0c33('0xd'));var deskjs=require(_0x0c33('0xe'));var toCsv=require(_0x0c33('0x8'));var querystring=require('querystring');var Papa=require(_0x0c33('0xf'));var Redis=require(_0x0c33('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0c33('0x11'));var as=require(_0x0c33('0x12'));var hardwareService=require(_0x0c33('0x13'));var logger=require('../../config/logger')(_0x0c33('0x14'));var utils=require(_0x0c33('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x0c33('0x16'));var db=require(_0x0c33('0x17'))['db'];function respondWithStatusCode(_0x51421e,_0x66a281){_0x66a281=_0x66a281||0xcc;return function(_0x199c18){if(_0x199c18){return _0x51421e[_0x0c33('0x18')](_0x66a281);}return _0x51421e[_0x0c33('0x19')](_0x66a281)['end']();};}function respondWithResult(_0x3d9c1c,_0x502cff){_0x502cff=_0x502cff||0xc8;return function(_0x2106a8){if(_0x2106a8){return _0x3d9c1c['status'](_0x502cff)[_0x0c33('0x1a')](_0x2106a8);}};}function respondWithFilteredResult(_0x311b47,_0x1092e9){return function(_0x53aa9f){if(_0x53aa9f){var _0x1882f0=typeof _0x1092e9[_0x0c33('0x1b')]===_0x0c33('0x1c')&&typeof _0x1092e9[_0x0c33('0x1d')]==='undefined';var _0x1b300b=_0x53aa9f['count'];var _0x272e15=_0x1882f0?0x0:_0x1092e9[_0x0c33('0x1b')];var _0x2a35ac=_0x1882f0?_0x53aa9f['count']:_0x1092e9['offset']+_0x1092e9['limit'];var _0x4738ac;if(_0x2a35ac>=_0x1b300b){_0x2a35ac=_0x1b300b;_0x4738ac=0xc8;}else{_0x4738ac=0xce;}_0x311b47[_0x0c33('0x19')](_0x4738ac);return _0x311b47[_0x0c33('0x1e')]('Content-Range',_0x272e15+'-'+_0x2a35ac+'/'+_0x1b300b)[_0x0c33('0x1a')](_0x53aa9f);}return null;};}function patchUpdates(_0x5860c0){return function(_0x1585af){try{jsonpatch[_0x0c33('0x1f')](_0x1585af,_0x5860c0,!![]);}catch(_0x2c29b4){return BPromise[_0x0c33('0x20')](_0x2c29b4);}return _0x1585af[_0x0c33('0x21')]();};}function saveUpdates(_0x3077c4,_0x3afce3){return function(_0x22081a){if(_0x22081a){return _0x22081a[_0x0c33('0x22')](_0x3077c4)[_0x0c33('0x23')](function(_0x2fba89){return _0x2fba89;});}return null;};}function removeEntity(_0x280c6a,_0x4979a9){return function(_0x14d606){if(_0x14d606){return _0x14d606[_0x0c33('0x24')]()[_0x0c33('0x23')](function(){_0x280c6a['status'](0xcc)[_0x0c33('0x25')]();});}};}function handleEntityNotFound(_0x37d99d,_0x360d66){return function(_0x42253c){if(!_0x42253c){_0x37d99d[_0x0c33('0x18')](0x194);}return _0x42253c;};}function handleError(_0x52bc9c,_0x131d6f){_0x131d6f=_0x131d6f||0x1f4;return function(_0x2381c3){logger[_0x0c33('0x26')](_0x2381c3[_0x0c33('0x27')]);if(_0x2381c3[_0x0c33('0x28')]){delete _0x2381c3[_0x0c33('0x28')];}_0x52bc9c['status'](_0x131d6f)[_0x0c33('0x29')](_0x2381c3);};}exports[_0x0c33('0x2a')]=function(_0x51a31a,_0x193467){var _0x379a90={},_0x113299={},_0x14fd4f={'count':0x0,'rows':[]};var _0x218392=_[_0x0c33('0x2b')](db['ZendeskConfiguration'][_0x0c33('0x2c')],function(_0x112f8d){return{'name':_0x112f8d[_0x0c33('0x2d')],'type':_0x112f8d[_0x0c33('0x2e')]['key']};});_0x113299[_0x0c33('0x2f')]=_['map'](_0x218392,_0x0c33('0x28'));_0x113299[_0x0c33('0x30')]=_['keys'](_0x51a31a[_0x0c33('0x30')]);_0x113299[_0x0c33('0x31')]=_[_0x0c33('0x32')](_0x113299[_0x0c33('0x2f')],_0x113299[_0x0c33('0x30')]);_0x379a90[_0x0c33('0x33')]=_['intersection'](_0x113299[_0x0c33('0x2f')],qs[_0x0c33('0x34')](_0x51a31a['query'][_0x0c33('0x34')]));_0x379a90[_0x0c33('0x33')]=_0x379a90['attributes'][_0x0c33('0x35')]?_0x379a90[_0x0c33('0x33')]:_0x113299['model'];if(!_0x51a31a[_0x0c33('0x30')]['hasOwnProperty'](_0x0c33('0x36'))){_0x379a90[_0x0c33('0x1d')]=qs[_0x0c33('0x1d')](_0x51a31a[_0x0c33('0x30')][_0x0c33('0x1d')]);_0x379a90[_0x0c33('0x1b')]=qs['offset'](_0x51a31a[_0x0c33('0x30')]['offset']);}_0x379a90[_0x0c33('0x37')]=qs['sort'](_0x51a31a['query']['sort']);_0x379a90[_0x0c33('0x38')]=qs[_0x0c33('0x31')](_[_0x0c33('0x39')](_0x51a31a['query'],_0x113299[_0x0c33('0x31')]),_0x218392);if(_0x51a31a[_0x0c33('0x30')][_0x0c33('0x3a')]){_0x379a90[_0x0c33('0x38')]=_['merge'](_0x379a90['where'],{'$or':_['map'](_0x218392,function(_0x136788){if(_0x136788[_0x0c33('0x2e')]!=='VIRTUAL'){var _0x20a16a={};_0x20a16a[_0x136788['name']]={'$like':'%'+_0x51a31a[_0x0c33('0x30')]['filter']+'%'};return _0x20a16a;}})});}_0x379a90=_[_0x0c33('0x3b')]({},_0x379a90,_0x51a31a['options']);var _0x152706={'where':_0x379a90[_0x0c33('0x38')]};return db['ZendeskConfiguration'][_0x0c33('0x3c')](_0x152706)[_0x0c33('0x23')](function(_0xce4247){_0x14fd4f[_0x0c33('0x3c')]=_0xce4247;if(_0x51a31a[_0x0c33('0x30')]['includeAll']){_0x379a90[_0x0c33('0x3d')]=[{'all':!![]}];}return db[_0x0c33('0x3e')][_0x0c33('0x3f')](_0x379a90);})[_0x0c33('0x23')](function(_0x1f6491){_0x14fd4f['rows']=_0x1f6491;return _0x14fd4f;})[_0x0c33('0x23')](respondWithFilteredResult(_0x193467,_0x379a90))['catch'](handleError(_0x193467,null));};exports[_0x0c33('0x40')]=function(_0x398aad,_0x284926){var _0x4f5854={'raw':![],'where':{'id':_0x398aad['params']['id']}},_0x586c22={};_0x586c22[_0x0c33('0x2f')]=_[_0x0c33('0x41')](db[_0x0c33('0x3e')][_0x0c33('0x2c')]);_0x586c22[_0x0c33('0x30')]=_[_0x0c33('0x41')](_0x398aad[_0x0c33('0x30')]);_0x586c22[_0x0c33('0x31')]=_['intersection'](_0x586c22['model'],_0x586c22[_0x0c33('0x30')]);_0x4f5854[_0x0c33('0x33')]=_[_0x0c33('0x32')](_0x586c22[_0x0c33('0x2f')],qs[_0x0c33('0x34')](_0x398aad['query'][_0x0c33('0x34')]));_0x4f5854[_0x0c33('0x33')]=_0x4f5854['attributes']['length']?_0x4f5854['attributes']:_0x586c22['model'];if(_0x398aad[_0x0c33('0x30')][_0x0c33('0x42')]){_0x4f5854[_0x0c33('0x3d')]=[{'all':!![]}];}_0x4f5854=_['merge']({},_0x4f5854,_0x398aad[_0x0c33('0x43')]);return db[_0x0c33('0x3e')]['find'](_0x4f5854)[_0x0c33('0x23')](handleEntityNotFound(_0x284926,null))[_0x0c33('0x23')](respondWithResult(_0x284926,null))[_0x0c33('0x44')](handleError(_0x284926,null));};exports[_0x0c33('0x45')]=function(_0x30332c,_0x5f0276){return db[_0x0c33('0x3e')][_0x0c33('0x45')](_0x30332c[_0x0c33('0x46')],{})[_0x0c33('0x23')](respondWithResult(_0x5f0276,0xc9))['catch'](handleError(_0x5f0276,null));};exports[_0x0c33('0x22')]=function(_0x5b8398,_0xa97fb8){if(_0x5b8398['body']['id']){delete _0x5b8398[_0x0c33('0x46')]['id'];}return db[_0x0c33('0x3e')]['find']({'where':{'id':_0x5b8398[_0x0c33('0x47')]['id']}})[_0x0c33('0x23')](handleEntityNotFound(_0xa97fb8,null))[_0x0c33('0x23')](saveUpdates(_0x5b8398[_0x0c33('0x46')],null))[_0x0c33('0x23')](respondWithResult(_0xa97fb8,null))[_0x0c33('0x44')](handleError(_0xa97fb8,null));};exports[_0x0c33('0x24')]=function(_0xc35151,_0x2aa9af){return db[_0x0c33('0x3e')][_0x0c33('0x48')]({'where':{'id':_0xc35151[_0x0c33('0x47')]['id']}})[_0x0c33('0x23')](handleEntityNotFound(_0x2aa9af,null))[_0x0c33('0x23')](removeEntity(_0x2aa9af,null))[_0x0c33('0x44')](handleError(_0x2aa9af,null));};exports['getFields']=function(_0x4ca748,_0x2d70ff,_0x936961){var _0x236a09={};var _0x1cc780={};var _0x23b1ca;var _0x5c271a;return db[_0x0c33('0x3e')][_0x0c33('0x49')]({'where':{'id':_0x4ca748[_0x0c33('0x47')]['id']}})[_0x0c33('0x23')](handleEntityNotFound(_0x2d70ff,null))[_0x0c33('0x23')](function(_0x865d60){if(_0x865d60){_0x23b1ca=_0x865d60;_0x1cc780[_0x0c33('0x2f')]=_[_0x0c33('0x41')](db[_0x0c33('0x4a')][_0x0c33('0x2c')]);_0x1cc780['query']=_[_0x0c33('0x41')](_0x4ca748[_0x0c33('0x30')]);_0x1cc780['filters']=_[_0x0c33('0x32')](_0x1cc780['model'],_0x1cc780[_0x0c33('0x30')]);_0x236a09[_0x0c33('0x33')]=_[_0x0c33('0x32')](_0x1cc780['model'],qs[_0x0c33('0x34')](_0x4ca748[_0x0c33('0x30')][_0x0c33('0x34')]));_0x236a09[_0x0c33('0x33')]=_0x236a09[_0x0c33('0x33')][_0x0c33('0x35')]?_0x236a09[_0x0c33('0x33')]:_0x1cc780['model'];_0x236a09[_0x0c33('0x37')]=qs['sort'](_0x4ca748['query'][_0x0c33('0x4b')]);_0x236a09[_0x0c33('0x38')]=qs[_0x0c33('0x31')](_[_0x0c33('0x39')](_0x4ca748['query'],_0x1cc780[_0x0c33('0x31')]));if(_0x4ca748[_0x0c33('0x30')][_0x0c33('0x3a')]){_0x236a09[_0x0c33('0x38')]=_[_0x0c33('0x3b')](_0x236a09[_0x0c33('0x38')],{'$or':_['map'](_0x236a09[_0x0c33('0x33')],function(_0x3f8a4e){var _0x2e47be={};_0x2e47be[_0x3f8a4e]={'$like':'%'+_0x4ca748[_0x0c33('0x30')][_0x0c33('0x3a')]+'%'};return _0x2e47be;})});}_0x236a09=_[_0x0c33('0x3b')]({},_0x236a09,_0x4ca748[_0x0c33('0x43')]);return _0x23b1ca[_0x0c33('0x4c')](_0x236a09);}})[_0x0c33('0x23')](function(_0x31de03){if(_0x31de03){_0x5c271a=_0x31de03['length'];if(!_0x4ca748[_0x0c33('0x30')][_0x0c33('0x4d')](_0x0c33('0x36'))){_0x236a09[_0x0c33('0x1d')]=qs[_0x0c33('0x1d')](_0x4ca748['query'][_0x0c33('0x1d')]);_0x236a09[_0x0c33('0x1b')]=qs[_0x0c33('0x1b')](_0x4ca748[_0x0c33('0x30')][_0x0c33('0x1b')]);}return _0x23b1ca[_0x0c33('0x4c')](_0x236a09);}})[_0x0c33('0x23')](function(_0x346056){if(_0x346056){return _0x346056?{'count':_0x5c271a,'rows':_0x346056}:null;}})[_0x0c33('0x23')](respondWithResult(_0x2d70ff,null))[_0x0c33('0x44')](handleError(_0x2d70ff,null));};exports['getSubjects']=function(_0x3464e9,_0x3bb10d,_0x2a24b1){var _0x3154b7={};var _0x4318ee={};var _0x251788;var _0x50f9c4;return db[_0x0c33('0x3e')][_0x0c33('0x49')]({'where':{'id':_0x3464e9[_0x0c33('0x47')]['id']}})[_0x0c33('0x23')](handleEntityNotFound(_0x3bb10d,null))[_0x0c33('0x23')](function(_0x42a27c){if(_0x42a27c){_0x251788=_0x42a27c;_0x4318ee['model']=_[_0x0c33('0x41')](db[_0x0c33('0x4a')][_0x0c33('0x2c')]);_0x4318ee[_0x0c33('0x30')]=_[_0x0c33('0x41')](_0x3464e9[_0x0c33('0x30')]);_0x4318ee[_0x0c33('0x31')]=_[_0x0c33('0x32')](_0x4318ee['model'],_0x4318ee[_0x0c33('0x30')]);_0x3154b7[_0x0c33('0x33')]=_[_0x0c33('0x32')](_0x4318ee[_0x0c33('0x2f')],qs[_0x0c33('0x34')](_0x3464e9[_0x0c33('0x30')]['fields']));_0x3154b7[_0x0c33('0x33')]=_0x3154b7[_0x0c33('0x33')][_0x0c33('0x35')]?_0x3154b7['attributes']:_0x4318ee[_0x0c33('0x2f')];_0x3154b7[_0x0c33('0x37')]=qs[_0x0c33('0x4b')](_0x3464e9[_0x0c33('0x30')][_0x0c33('0x4b')]);_0x3154b7[_0x0c33('0x38')]=qs[_0x0c33('0x31')](_[_0x0c33('0x39')](_0x3464e9['query'],_0x4318ee['filters']));if(_0x3464e9[_0x0c33('0x30')][_0x0c33('0x3a')]){_0x3154b7[_0x0c33('0x38')]=_[_0x0c33('0x3b')](_0x3154b7[_0x0c33('0x38')],{'$or':_['map'](_0x3154b7[_0x0c33('0x33')],function(_0x57efb1){var _0x11663d={};_0x11663d[_0x57efb1]={'$like':'%'+_0x3464e9[_0x0c33('0x30')][_0x0c33('0x3a')]+'%'};return _0x11663d;})});}_0x3154b7=_[_0x0c33('0x3b')]({},_0x3154b7,_0x3464e9[_0x0c33('0x43')]);return _0x251788[_0x0c33('0x4e')](_0x3154b7);}})[_0x0c33('0x23')](function(_0x1aae58){if(_0x1aae58){_0x50f9c4=_0x1aae58[_0x0c33('0x35')];if(!_0x3464e9[_0x0c33('0x30')][_0x0c33('0x4d')](_0x0c33('0x36'))){_0x3154b7[_0x0c33('0x1d')]=qs[_0x0c33('0x1d')](_0x3464e9[_0x0c33('0x30')][_0x0c33('0x1d')]);_0x3154b7[_0x0c33('0x1b')]=qs[_0x0c33('0x1b')](_0x3464e9[_0x0c33('0x30')]['offset']);}return _0x251788[_0x0c33('0x4e')](_0x3154b7);}})[_0x0c33('0x23')](function(_0x4579ab){if(_0x4579ab){return _0x4579ab?{'count':_0x50f9c4,'rows':_0x4579ab}:null;}})[_0x0c33('0x23')](respondWithResult(_0x3bb10d,null))[_0x0c33('0x44')](handleError(_0x3bb10d,null));};exports[_0x0c33('0x4f')]=function(_0xd88713,_0x197f1a,_0x271ddf){var _0x2aeb49={};var _0x35d081={};var _0x5b9124;var _0x4108a7;return db[_0x0c33('0x3e')]['findOne']({'where':{'id':_0xd88713[_0x0c33('0x47')]['id']}})[_0x0c33('0x23')](handleEntityNotFound(_0x197f1a,null))[_0x0c33('0x23')](function(_0x3108cd){if(_0x3108cd){_0x5b9124=_0x3108cd;_0x35d081[_0x0c33('0x2f')]=_[_0x0c33('0x41')](db[_0x0c33('0x4a')][_0x0c33('0x2c')]);_0x35d081[_0x0c33('0x30')]=_[_0x0c33('0x41')](_0xd88713[_0x0c33('0x30')]);_0x35d081[_0x0c33('0x31')]=_[_0x0c33('0x32')](_0x35d081[_0x0c33('0x2f')],_0x35d081[_0x0c33('0x30')]);_0x2aeb49[_0x0c33('0x33')]=_[_0x0c33('0x32')](_0x35d081[_0x0c33('0x2f')],qs[_0x0c33('0x34')](_0xd88713[_0x0c33('0x30')][_0x0c33('0x34')]));_0x2aeb49[_0x0c33('0x33')]=_0x2aeb49[_0x0c33('0x33')][_0x0c33('0x35')]?_0x2aeb49[_0x0c33('0x33')]:_0x35d081['model'];_0x2aeb49[_0x0c33('0x37')]=qs[_0x0c33('0x4b')](_0xd88713[_0x0c33('0x30')][_0x0c33('0x4b')]);_0x2aeb49[_0x0c33('0x38')]=qs[_0x0c33('0x31')](_['pick'](_0xd88713[_0x0c33('0x30')],_0x35d081['filters']));if(_0xd88713[_0x0c33('0x30')]['filter']){_0x2aeb49['where']=_[_0x0c33('0x3b')](_0x2aeb49[_0x0c33('0x38')],{'$or':_['map'](_0x2aeb49['attributes'],function(_0x4bfdfa){var _0x326ac0={};_0x326ac0[_0x4bfdfa]={'$like':'%'+_0xd88713[_0x0c33('0x30')]['filter']+'%'};return _0x326ac0;})});}_0x2aeb49=_['merge']({},_0x2aeb49,_0xd88713[_0x0c33('0x43')]);return _0x5b9124[_0x0c33('0x4f')](_0x2aeb49);}})[_0x0c33('0x23')](function(_0x59ad93){if(_0x59ad93){_0x4108a7=_0x59ad93[_0x0c33('0x35')];if(!_0xd88713['query']['hasOwnProperty']('nolimit')){_0x2aeb49[_0x0c33('0x1d')]=qs[_0x0c33('0x1d')](_0xd88713[_0x0c33('0x30')][_0x0c33('0x1d')]);_0x2aeb49[_0x0c33('0x1b')]=qs[_0x0c33('0x1b')](_0xd88713[_0x0c33('0x30')][_0x0c33('0x1b')]);}return _0x5b9124[_0x0c33('0x4f')](_0x2aeb49);}})['then'](function(_0x241d84){if(_0x241d84){return _0x241d84?{'count':_0x4108a7,'rows':_0x241d84}:null;}})[_0x0c33('0x23')](respondWithResult(_0x197f1a,null))['catch'](handleError(_0x197f1a,null));};exports[_0x0c33('0x50')]=function(_0x322bd1,_0x593964,_0x50ee89){var _0x451b4c={};var _0x57626a={};var _0x5b1245;var _0x339786;return db[_0x0c33('0x3e')]['findOne']({'where':{'id':_0x322bd1['params']['id']}})[_0x0c33('0x23')](handleEntityNotFound(_0x593964,null))['then'](function(_0x1bf94b){if(_0x1bf94b){_0x5b1245=_0x1bf94b;_0x57626a['model']=_[_0x0c33('0x41')](db[_0x0c33('0x51')]['rawAttributes']);_0x57626a[_0x0c33('0x30')]=_[_0x0c33('0x41')](_0x322bd1['query']);_0x57626a[_0x0c33('0x31')]=_['intersection'](_0x57626a[_0x0c33('0x2f')],_0x57626a[_0x0c33('0x30')]);_0x451b4c[_0x0c33('0x33')]=_[_0x0c33('0x32')](_0x57626a[_0x0c33('0x2f')],qs[_0x0c33('0x34')](_0x322bd1['query'][_0x0c33('0x34')]));_0x451b4c[_0x0c33('0x33')]=_0x451b4c[_0x0c33('0x33')][_0x0c33('0x35')]?_0x451b4c[_0x0c33('0x33')]:_0x57626a[_0x0c33('0x2f')];_0x451b4c['order']=qs[_0x0c33('0x4b')](_0x322bd1[_0x0c33('0x30')][_0x0c33('0x4b')]);_0x451b4c[_0x0c33('0x38')]=qs[_0x0c33('0x31')](_[_0x0c33('0x39')](_0x322bd1[_0x0c33('0x30')],_0x57626a[_0x0c33('0x31')]));if(_0x322bd1[_0x0c33('0x30')]['filter']){_0x451b4c['where']=_[_0x0c33('0x3b')](_0x451b4c[_0x0c33('0x38')],{'$or':_[_0x0c33('0x2b')](_0x451b4c[_0x0c33('0x33')],function(_0x5c33ac){var _0x562954={};_0x562954[_0x5c33ac]={'$like':'%'+_0x322bd1['query'][_0x0c33('0x3a')]+'%'};return _0x562954;})});}_0x451b4c=_[_0x0c33('0x3b')]({},_0x451b4c,_0x322bd1['options']);return _0x5b1245[_0x0c33('0x50')](_0x451b4c);}})[_0x0c33('0x23')](function(_0x63e8dd){if(_0x63e8dd){_0x339786=_0x63e8dd[_0x0c33('0x35')];if(!_0x322bd1[_0x0c33('0x30')]['hasOwnProperty'](_0x0c33('0x36'))){_0x451b4c['limit']=qs[_0x0c33('0x1d')](_0x322bd1[_0x0c33('0x30')][_0x0c33('0x1d')]);_0x451b4c[_0x0c33('0x1b')]=qs[_0x0c33('0x1b')](_0x322bd1[_0x0c33('0x30')]['offset']);}return _0x5b1245['getTags'](_0x451b4c);}})[_0x0c33('0x23')](function(_0x179154){if(_0x179154){return _0x179154?{'count':_0x339786,'rows':_0x179154}:null;}})[_0x0c33('0x23')](respondWithResult(_0x593964,null))[_0x0c33('0x44')](handleError(_0x593964,null));};exports['setTags']=function(_0x42fc9e,_0x439f03,_0x2349e2){if(_0x42fc9e[_0x0c33('0x46')]['id']){delete _0x42fc9e[_0x0c33('0x46')]['id'];}return db[_0x0c33('0x3e')][_0x0c33('0x49')]({'where':{'id':_0x42fc9e[_0x0c33('0x47')]['id']}})['then'](handleEntityNotFound(_0x439f03,null))[_0x0c33('0x23')](function(_0x26b074){if(_0x26b074){return _0x26b074[_0x0c33('0x52')](_0x42fc9e[_0x0c33('0x46')][_0x0c33('0x53')]||[]);}return null;})[_0x0c33('0x23')](respondWithResult(_0x439f03,null))[_0x0c33('0x44')](handleError(_0x439f03,null));};
\ No newline at end of file
index fde23a7..0aab415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x4eec2f,_0x2231bf){var _0x1b7af5=function(_0x1f8eb5){while(--_0x1f8eb5){_0x4eec2f['push'](_0x4eec2f['shift']());}};_0x1b7af5(++_0x2231bf);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x53c8c8,_0xac50c6){_0x53c8c8=_0x53c8c8-0x0;var _0x4cedcb=_0xcf2f[_0x53c8c8];return _0x4cedcb;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var logger=require(_0xfcf2('0x2'))(_0xfcf2('0x3'));var moment=require(_0xfcf2('0x4'));var BPromise=require('bluebird');var rp=require(_0xfcf2('0x5'));var fs=require('fs');var path=require(_0xfcf2('0x6'));var rimraf=require(_0xfcf2('0x7'));var config=require(_0xfcf2('0x8'));var attributes=require(_0xfcf2('0x9'));module[_0xfcf2('0xa')]=function(_0x1e6d99,_0x3a4950){return _0x1e6d99[_0xfcf2('0xb')](_0xfcf2('0xc'),attributes,{'tableName':_0xfcf2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0102=['api','moment','./intZendeskConfiguration.attributes','exports','ZendeskConfiguration','util','../../config/logger'];(function(_0x298064,_0x1d2bfb){var _0x2512ea=function(_0x3e5b28){while(--_0x3e5b28){_0x298064['push'](_0x298064['shift']());}};_0x2512ea(++_0x1d2bfb);}(_0x0102,0x186));var _0x2010=function(_0x32a402,_0x1c4d59){_0x32a402=_0x32a402-0x0;var _0x34d10d=_0x0102[_0x32a402];return _0x34d10d;};'use strict';var _=require('lodash');var util=require(_0x2010('0x0'));var logger=require(_0x2010('0x1'))(_0x2010('0x2'));var moment=require(_0x2010('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2010('0x4'));module[_0x2010('0x5')]=function(_0x130725,_0x304264){return _0x130725['define'](_0x2010('0x6'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f17b912..9fd3687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1efb=['then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x1efb,0xa4));var _0xb1ef=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x1efb[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0xb1ef('0x0'));var util=require(_0xb1ef('0x1'));var moment=require('moment');var BPromise=require(_0xb1ef('0x2'));var rs=require(_0xb1ef('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb1ef('0x4'));var logger=require(_0xb1ef('0x5'))(_0xb1ef('0x6'));var config=require(_0xb1ef('0x7'));var jayson=require(_0xb1ef('0x8'));var client=jayson[_0xb1ef('0x9')][_0xb1ef('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41bde9,_0x15e40e,_0x3be31d){return new BPromise(function(_0x58b250,_0x1691be){return client[_0xb1ef('0xb')](_0x41bde9,_0x3be31d)[_0xb1ef('0xc')](function(_0x4db56d){logger[_0xb1ef('0xd')](_0xb1ef('0xe'),_0x15e40e,_0xb1ef('0xf'));logger[_0xb1ef('0x10')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x15e40e,_0xb1ef('0xf'),JSON['stringify'](_0x4db56d));if(_0x4db56d[_0xb1ef('0x11')]){if(_0x4db56d['error'][_0xb1ef('0x12')]===0x1f4){logger[_0xb1ef('0x11')](_0xb1ef('0xe'),_0x15e40e,_0x4db56d['error'][_0xb1ef('0x13')]);return _0x1691be(_0x4db56d[_0xb1ef('0x11')]['message']);}logger[_0xb1ef('0x11')](_0xb1ef('0xe'),_0x15e40e,_0x4db56d[_0xb1ef('0x11')][_0xb1ef('0x13')]);return _0x58b250(_0x4db56d[_0xb1ef('0x11')][_0xb1ef('0x13')]);}else{logger[_0xb1ef('0xd')](_0xb1ef('0xe'),_0x15e40e,'request\x20sent');_0x58b250(_0x4db56d[_0xb1ef('0x14')][_0xb1ef('0x13')]);}})[_0xb1ef('0x15')](function(_0x4668dd){logger[_0xb1ef('0x11')](_0xb1ef('0xe'),_0x15e40e,_0x4668dd);_0x1691be(_0x4668dd);});});}
\ No newline at end of file
+var _0x05dd=['rpc','../../config/environment','jayson/promise','client','request','then','info','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','request\x20sent','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1cb73e,_0xce62f4){var _0x5c1e4c=function(_0x5cf8e3){while(--_0x5cf8e3){_0x1cb73e['push'](_0x1cb73e['shift']());}};_0x5c1e4c(++_0xce62f4);}(_0x05dd,0x188));var _0xd05d=function(_0x20fee7,_0x4c6286){_0x20fee7=_0x20fee7-0x0;var _0x1b73d9=_0x05dd[_0x20fee7];return _0x1b73d9;};'use strict';var _=require(_0xd05d('0x0'));var util=require(_0xd05d('0x1'));var moment=require(_0xd05d('0x2'));var BPromise=require(_0xd05d('0x3'));var rs=require(_0xd05d('0x4'));var fs=require('fs');var Redis=require(_0xd05d('0x5'));var db=require(_0xd05d('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd05d('0x7'));var config=require(_0xd05d('0x8'));var jayson=require(_0xd05d('0x9'));var client=jayson[_0xd05d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40b61f,_0x43ae46,_0x5118ec){return new BPromise(function(_0x3c6323,_0x1c373f){return client[_0xd05d('0xb')](_0x40b61f,_0x5118ec)[_0xd05d('0xc')](function(_0x9487ce){logger[_0xd05d('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x43ae46,'request\x20sent');logger[_0xd05d('0xe')](_0xd05d('0xf'),_0x43ae46,'request\x20sent',JSON['stringify'](_0x9487ce));if(_0x9487ce[_0xd05d('0x10')]){if(_0x9487ce[_0xd05d('0x10')][_0xd05d('0x11')]===0x1f4){logger[_0xd05d('0x10')](_0xd05d('0x12'),_0x43ae46,_0x9487ce[_0xd05d('0x10')]['message']);return _0x1c373f(_0x9487ce['error'][_0xd05d('0x13')]);}logger[_0xd05d('0x10')](_0xd05d('0x12'),_0x43ae46,_0x9487ce['error'][_0xd05d('0x13')]);return _0x3c6323(_0x9487ce['error'][_0xd05d('0x13')]);}else{logger[_0xd05d('0xd')](_0xd05d('0x12'),_0x43ae46,_0xd05d('0x14'));_0x3c6323(_0x9487ce['result']['message']);}})['catch'](function(_0x21ebce){logger[_0xd05d('0x10')](_0xd05d('0x12'),_0x43ae46,_0x21ebce);_0x1c373f(_0x21ebce);});});}
\ No newline at end of file
index 673c68f..e21f5f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73a4=['Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','get','/:id','show','create','put','update','delete','exports','multer','util','connect-timeout'];(function(_0x3f83e2,_0x126913){var _0xb79ecb=function(_0x4ce498){while(--_0x4ce498){_0x3f83e2['push'](_0x3f83e2['shift']());}};_0xb79ecb(++_0x126913);}(_0x73a4,0x1ed));var _0x473a=function(_0x1c971b,_0x382343){_0x1c971b=_0x1c971b-0x0;var _0x5966d0=_0x73a4[_0x1c971b];return _0x5966d0;};'use strict';var multer=require(_0x473a('0x0'));var util=require(_0x473a('0x1'));var path=require('path');var timeout=require(_0x473a('0x2'));var express=require('express');var router=express[_0x473a('0x3')]();var fs_extra=require(_0x473a('0x4'));var auth=require(_0x473a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x473a('0x6'));var controller=require('./intZendeskField.controller');router['get']('/',auth[_0x473a('0x7')](),controller['index']);router[_0x473a('0x8')](_0x473a('0x9'),auth[_0x473a('0x7')](),controller[_0x473a('0xa')]);router['post']('/',auth[_0x473a('0x7')](),controller[_0x473a('0xb')]);router[_0x473a('0xc')](_0x473a('0x9'),auth['isAuthenticated'](),controller[_0x473a('0xd')]);router[_0x473a('0xe')](_0x473a('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x473a('0xf')]=router;
\ No newline at end of file
+var _0x2cbd=['multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','show','post','create','put','/:id','delete','destroy','exports'];(function(_0x4efd3d,_0x2b9694){var _0x1293f2=function(_0x14b90f){while(--_0x14b90f){_0x4efd3d['push'](_0x4efd3d['shift']());}};_0x1293f2(++_0x2b9694);}(_0x2cbd,0x130));var _0xd2cb=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0x2cbd[_0x521929];return _0x632436;};'use strict';var multer=require(_0xd2cb('0x0'));var util=require(_0xd2cb('0x1'));var path=require(_0xd2cb('0x2'));var timeout=require('connect-timeout');var express=require(_0xd2cb('0x3'));var router=express['Router']();var fs_extra=require(_0xd2cb('0x4'));var auth=require(_0xd2cb('0x5'));var interaction=require(_0xd2cb('0x6'));var config=require(_0xd2cb('0x7'));var controller=require(_0xd2cb('0x8'));router[_0xd2cb('0x9')]('/',auth[_0xd2cb('0xa')](),controller['index']);router[_0xd2cb('0x9')]('/:id',auth[_0xd2cb('0xa')](),controller[_0xd2cb('0xb')]);router[_0xd2cb('0xc')]('/',auth['isAuthenticated'](),controller[_0xd2cb('0xd')]);router[_0xd2cb('0xe')](_0xd2cb('0xf'),auth[_0xd2cb('0xa')](),controller['update']);router[_0xd2cb('0x10')]('/:id',auth[_0xd2cb('0xa')](),controller[_0xd2cb('0x11')]);module[_0xd2cb('0x12')]=router;
\ No newline at end of file
index 8322697..ea74e50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe00a=['sequelize','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x36ce49,_0x4c03e1){var _0x1d4698=function(_0x27144d){while(--_0x27144d){_0x36ce49['push'](_0x36ce49['shift']());}};_0x1d4698(++_0x4c03e1);}(_0xe00a,0x108));var _0xae00=function(_0x36134a,_0x1a540f){_0x36134a=_0x36134a-0x0;var _0x5d7420=_0xe00a[_0x36134a];return _0x5d7420;};'use strict';var Sequelize=require(_0xae00('0x0'));module[_0xae00('0x1')]={'type':{'type':Sequelize['ENUM'](_0xae00('0x2'),_0xae00('0x3'),_0xae00('0x4'),'keyValue',_0xae00('0x5')),'defaultValue':_0xae00('0x2')},'content':{'type':Sequelize[_0xae00('0x6')]},'key':{'type':Sequelize[_0xae00('0x6')]},'keyType':{'type':Sequelize[_0xae00('0x7')](_0xae00('0x2'),_0xae00('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xae00('0x6')]},'idField':{'type':Sequelize[_0xae00('0x6')]},'nameField':{'type':Sequelize[_0xae00('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x39a3=['variable','customVariable','picklist','STRING','BOOLEAN','exports','ENUM','string'];(function(_0x23a042,_0x169361){var _0x57543a=function(_0x1fccec){while(--_0x1fccec){_0x23a042['push'](_0x23a042['shift']());}};_0x57543a(++_0x169361);}(_0x39a3,0x175));var _0x339a=function(_0xdd82b4,_0x5cd8b8){_0xdd82b4=_0xdd82b4-0x0;var _0x549bb2=_0x39a3[_0xdd82b4];return _0x549bb2;};'use strict';var Sequelize=require('sequelize');module[_0x339a('0x0')]={'type':{'type':Sequelize[_0x339a('0x1')](_0x339a('0x2'),_0x339a('0x3'),_0x339a('0x4'),'keyValue',_0x339a('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x339a('0x1')](_0x339a('0x2'),'variable',_0x339a('0x4'))},'keyContent':{'type':Sequelize[_0x339a('0x6')]},'idField':{'type':Sequelize[_0x339a('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x339a('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x339a('0x6')]}};
\ No newline at end of file
index c0f2d7a..77751d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9b6=['sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','ZendeskField','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','destroy','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x49b6ce,_0x111cdc){var _0x9f2236=function(_0x46b75c){while(--_0x46b75c){_0x49b6ce['push'](_0x49b6ce['shift']());}};_0x9f2236(++_0x111cdc);}(_0xf9b6,0x114));var _0x6f9b=function(_0x2fb28c,_0x458fc5){_0x2fb28c=_0x2fb28c-0x0;var _0x22ee82=_0xf9b6[_0x2fb28c];return _0x22ee82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6f9b('0x0'));var zipdir=require(_0x6f9b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f9b('0x2'));var moment=require('moment');var BPromise=require(_0x6f9b('0x3'));var Mustache=require(_0x6f9b('0x4'));var util=require(_0x6f9b('0x5'));var path=require(_0x6f9b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6f9b('0x7'));var crypto=require('crypto');var jsforce=require(_0x6f9b('0x8'));var deskjs=require(_0x6f9b('0x9'));var toCsv=require(_0x6f9b('0xa'));var querystring=require(_0x6f9b('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6f9b('0xc'));var qs=require(_0x6f9b('0xd'));var as=require(_0x6f9b('0xe'));var hardwareService=require(_0x6f9b('0xf'));var logger=require('../../config/logger')(_0x6f9b('0x10'));var utils=require(_0x6f9b('0x11'));var config=require(_0x6f9b('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f9b('0x13'))['db'];function respondWithStatusCode(_0xcd6c08,_0x2966cd){_0x2966cd=_0x2966cd||0xcc;return function(_0x15274c){if(_0x15274c){return _0xcd6c08[_0x6f9b('0x14')](_0x2966cd);}return _0xcd6c08['status'](_0x2966cd)[_0x6f9b('0x15')]();};}function respondWithResult(_0x1abaa2,_0x37848d){_0x37848d=_0x37848d||0xc8;return function(_0x22318d){if(_0x22318d){return _0x1abaa2['status'](_0x37848d)[_0x6f9b('0x16')](_0x22318d);}};}function respondWithFilteredResult(_0x2db6b9,_0x3c5889){return function(_0x3ee1dd){if(_0x3ee1dd){var _0x2692cd=typeof _0x3c5889[_0x6f9b('0x17')]===_0x6f9b('0x18')&&typeof _0x3c5889[_0x6f9b('0x19')]==='undefined';var _0x208fa0=_0x3ee1dd['count'];var _0x1f5369=_0x2692cd?0x0:_0x3c5889[_0x6f9b('0x17')];var _0x26bf2d=_0x2692cd?_0x3ee1dd[_0x6f9b('0x1a')]:_0x3c5889[_0x6f9b('0x17')]+_0x3c5889['limit'];var _0x564a89;if(_0x26bf2d>=_0x208fa0){_0x26bf2d=_0x208fa0;_0x564a89=0xc8;}else{_0x564a89=0xce;}_0x2db6b9[_0x6f9b('0x1b')](_0x564a89);return _0x2db6b9[_0x6f9b('0x1c')](_0x6f9b('0x1d'),_0x1f5369+'-'+_0x26bf2d+'/'+_0x208fa0)[_0x6f9b('0x16')](_0x3ee1dd);}return null;};}function patchUpdates(_0x323807){return function(_0x2d39b9){try{jsonpatch[_0x6f9b('0x1e')](_0x2d39b9,_0x323807,!![]);}catch(_0x55e80c){return BPromise[_0x6f9b('0x1f')](_0x55e80c);}return _0x2d39b9[_0x6f9b('0x20')]();};}function saveUpdates(_0x5cf08c,_0x14dd07){return function(_0x5829f3){if(_0x5829f3){return _0x5829f3['update'](_0x5cf08c)[_0x6f9b('0x21')](function(_0x1020cb){return _0x1020cb;});}return null;};}function removeEntity(_0x5cd2e9,_0x38f31d){return function(_0x53c051){if(_0x53c051){return _0x53c051['destroy']()[_0x6f9b('0x21')](function(){_0x5cd2e9['status'](0xcc)[_0x6f9b('0x15')]();});}};}function handleEntityNotFound(_0x1ca142,_0x406bca){return function(_0x308a35){if(!_0x308a35){_0x1ca142[_0x6f9b('0x14')](0x194);}return _0x308a35;};}function handleError(_0x42862b,_0x162cb7){_0x162cb7=_0x162cb7||0x1f4;return function(_0xaa7aeb){logger[_0x6f9b('0x22')](_0xaa7aeb[_0x6f9b('0x23')]);if(_0xaa7aeb[_0x6f9b('0x24')]){delete _0xaa7aeb['name'];}_0x42862b[_0x6f9b('0x1b')](_0x162cb7)[_0x6f9b('0x25')](_0xaa7aeb);};}exports[_0x6f9b('0x26')]=function(_0x51b667,_0x49e49b){var _0x12dc51={},_0x335985={},_0x22ddfc={'count':0x0,'rows':[]};var _0x49c1fb=_[_0x6f9b('0x27')](db[_0x6f9b('0x28')]['rawAttributes'],function(_0x49655e){return{'name':_0x49655e[_0x6f9b('0x29')],'type':_0x49655e[_0x6f9b('0x2a')][_0x6f9b('0x2b')]};});_0x335985['model']=_[_0x6f9b('0x27')](_0x49c1fb,_0x6f9b('0x24'));_0x335985[_0x6f9b('0x2c')]=_[_0x6f9b('0x2d')](_0x51b667[_0x6f9b('0x2c')]);_0x335985[_0x6f9b('0x2e')]=_[_0x6f9b('0x2f')](_0x335985[_0x6f9b('0x30')],_0x335985[_0x6f9b('0x2c')]);_0x12dc51[_0x6f9b('0x31')]=_['intersection'](_0x335985[_0x6f9b('0x30')],qs[_0x6f9b('0x32')](_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x32')]));_0x12dc51['attributes']=_0x12dc51[_0x6f9b('0x31')][_0x6f9b('0x33')]?_0x12dc51['attributes']:_0x335985['model'];if(!_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x34')]('nolimit')){_0x12dc51[_0x6f9b('0x19')]=qs[_0x6f9b('0x19')](_0x51b667[_0x6f9b('0x2c')]['limit']);_0x12dc51[_0x6f9b('0x17')]=qs['offset'](_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x17')]);}_0x12dc51[_0x6f9b('0x35')]=qs[_0x6f9b('0x36')](_0x51b667['query'][_0x6f9b('0x36')]);_0x12dc51[_0x6f9b('0x37')]=qs['filters'](_[_0x6f9b('0x38')](_0x51b667[_0x6f9b('0x2c')],_0x335985[_0x6f9b('0x2e')]),_0x49c1fb);if(_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x39')]){_0x12dc51['where']=_['merge'](_0x12dc51['where'],{'$or':_['map'](_0x49c1fb,function(_0x129843){if(_0x129843[_0x6f9b('0x2a')]!==_0x6f9b('0x3a')){var _0x67a793={};_0x67a793[_0x129843[_0x6f9b('0x24')]]={'$like':'%'+_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x39')]+'%'};return _0x67a793;}})});}_0x12dc51=_[_0x6f9b('0x3b')]({},_0x12dc51,_0x51b667[_0x6f9b('0x3c')]);var _0x9fad01={'where':_0x12dc51[_0x6f9b('0x37')]};return db[_0x6f9b('0x28')][_0x6f9b('0x1a')](_0x9fad01)[_0x6f9b('0x21')](function(_0x413d66){_0x22ddfc[_0x6f9b('0x1a')]=_0x413d66;if(_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x3d')]){_0x12dc51[_0x6f9b('0x3e')]=[{'all':!![]}];}return db[_0x6f9b('0x28')][_0x6f9b('0x3f')](_0x12dc51);})['then'](function(_0x5d448f){_0x22ddfc[_0x6f9b('0x40')]=_0x5d448f;return _0x22ddfc;})['then'](respondWithFilteredResult(_0x49e49b,_0x12dc51))[_0x6f9b('0x41')](handleError(_0x49e49b,null));};exports[_0x6f9b('0x42')]=function(_0x49cda3,_0x54da53){var _0x39ec9a={'raw':!![],'where':{'id':_0x49cda3[_0x6f9b('0x43')]['id']}},_0x29c739={};_0x29c739[_0x6f9b('0x30')]=_['keys'](db['ZendeskField'][_0x6f9b('0x44')]);_0x29c739[_0x6f9b('0x2c')]=_[_0x6f9b('0x2d')](_0x49cda3[_0x6f9b('0x2c')]);_0x29c739[_0x6f9b('0x2e')]=_['intersection'](_0x29c739[_0x6f9b('0x30')],_0x29c739[_0x6f9b('0x2c')]);_0x39ec9a[_0x6f9b('0x31')]=_[_0x6f9b('0x2f')](_0x29c739['model'],qs['fields'](_0x49cda3[_0x6f9b('0x2c')][_0x6f9b('0x32')]));_0x39ec9a[_0x6f9b('0x31')]=_0x39ec9a[_0x6f9b('0x31')][_0x6f9b('0x33')]?_0x39ec9a[_0x6f9b('0x31')]:_0x29c739[_0x6f9b('0x30')];if(_0x49cda3[_0x6f9b('0x2c')]['includeAll']){_0x39ec9a[_0x6f9b('0x3e')]=[{'all':!![]}];}_0x39ec9a=_[_0x6f9b('0x3b')]({},_0x39ec9a,_0x49cda3[_0x6f9b('0x3c')]);return db[_0x6f9b('0x28')][_0x6f9b('0x45')](_0x39ec9a)[_0x6f9b('0x21')](handleEntityNotFound(_0x54da53,null))['then'](respondWithResult(_0x54da53,null))['catch'](handleError(_0x54da53,null));};exports[_0x6f9b('0x46')]=function(_0x25b4b2,_0x3efef8){return db['ZendeskField'][_0x6f9b('0x46')](_0x25b4b2[_0x6f9b('0x47')],{})[_0x6f9b('0x21')](respondWithResult(_0x3efef8,0xc9))[_0x6f9b('0x41')](handleError(_0x3efef8,null));};exports[_0x6f9b('0x48')]=function(_0x5a6cf2,_0xa66ed3){if(_0x5a6cf2[_0x6f9b('0x47')]['id']){delete _0x5a6cf2[_0x6f9b('0x47')]['id'];}return db[_0x6f9b('0x28')]['find']({'where':{'id':_0x5a6cf2[_0x6f9b('0x43')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0xa66ed3,null))['then'](saveUpdates(_0x5a6cf2['body'],null))[_0x6f9b('0x21')](respondWithResult(_0xa66ed3,null))[_0x6f9b('0x41')](handleError(_0xa66ed3,null));};exports[_0x6f9b('0x49')]=function(_0x355500,_0x1f3c2b){return db[_0x6f9b('0x28')]['find']({'where':{'id':_0x355500[_0x6f9b('0x43')]['id']}})['then'](handleEntityNotFound(_0x1f3c2b,null))[_0x6f9b('0x21')](removeEntity(_0x1f3c2b,null))[_0x6f9b('0x41')](handleError(_0x1f3c2b,null));};
\ No newline at end of file
+var _0x6822=['attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','include','rows','catch','show','params','keys','includeAll','merge','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields'];(function(_0x2769f7,_0x342975){var _0x45da1d=function(_0x56e034){while(--_0x56e034){_0x2769f7['push'](_0x2769f7['shift']());}};_0x45da1d(++_0x342975);}(_0x6822,0x18c));var _0x2682=function(_0x3bb869,_0x4abac4){_0x3bb869=_0x3bb869-0x0;var _0x39ab85=_0x6822[_0x3bb869];return _0x39ab85;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2682('0x0'));var zipdir=require(_0x2682('0x1'));var jsonpatch=require(_0x2682('0x2'));var rp=require(_0x2682('0x3'));var moment=require('moment');var BPromise=require(_0x2682('0x4'));var Mustache=require(_0x2682('0x5'));var util=require(_0x2682('0x6'));var path=require(_0x2682('0x7'));var sox=require(_0x2682('0x8'));var csv=require(_0x2682('0x9'));var ejs=require(_0x2682('0xa'));var fs=require('fs');var fs_extra=require(_0x2682('0xb'));var _=require(_0x2682('0xc'));var squel=require(_0x2682('0xd'));var crypto=require(_0x2682('0xe'));var jsforce=require(_0x2682('0xf'));var deskjs=require(_0x2682('0x10'));var toCsv=require(_0x2682('0x9'));var querystring=require('querystring');var Papa=require(_0x2682('0x11'));var Redis=require(_0x2682('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2682('0x13'));var logger=require(_0x2682('0x14'))('api');var utils=require(_0x2682('0x15'));var config=require(_0x2682('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2682('0x17'))['db'];function respondWithStatusCode(_0x2b29eb,_0x1feca6){_0x1feca6=_0x1feca6||0xcc;return function(_0x2cd01f){if(_0x2cd01f){return _0x2b29eb[_0x2682('0x18')](_0x1feca6);}return _0x2b29eb[_0x2682('0x19')](_0x1feca6)[_0x2682('0x1a')]();};}function respondWithResult(_0x41ec1c,_0xfb9e0c){_0xfb9e0c=_0xfb9e0c||0xc8;return function(_0x18dab9){if(_0x18dab9){return _0x41ec1c[_0x2682('0x19')](_0xfb9e0c)[_0x2682('0x1b')](_0x18dab9);}};}function respondWithFilteredResult(_0x412a0c,_0x1ac17b){return function(_0x212aaf){if(_0x212aaf){var _0x545ba8=typeof _0x1ac17b['offset']===_0x2682('0x1c')&&typeof _0x1ac17b[_0x2682('0x1d')]===_0x2682('0x1c');var _0x4df201=_0x212aaf[_0x2682('0x1e')];var _0x494946=_0x545ba8?0x0:_0x1ac17b[_0x2682('0x1f')];var _0x19391e=_0x545ba8?_0x212aaf[_0x2682('0x1e')]:_0x1ac17b[_0x2682('0x1f')]+_0x1ac17b[_0x2682('0x1d')];var _0x34cf1d;if(_0x19391e>=_0x4df201){_0x19391e=_0x4df201;_0x34cf1d=0xc8;}else{_0x34cf1d=0xce;}_0x412a0c['status'](_0x34cf1d);return _0x412a0c[_0x2682('0x20')]('Content-Range',_0x494946+'-'+_0x19391e+'/'+_0x4df201)[_0x2682('0x1b')](_0x212aaf);}return null;};}function patchUpdates(_0x2e03e6){return function(_0x348924){try{jsonpatch[_0x2682('0x21')](_0x348924,_0x2e03e6,!![]);}catch(_0x23641e){return BPromise[_0x2682('0x22')](_0x23641e);}return _0x348924[_0x2682('0x23')]();};}function saveUpdates(_0x49c98a,_0x57ae26){return function(_0x599726){if(_0x599726){return _0x599726[_0x2682('0x24')](_0x49c98a)[_0x2682('0x25')](function(_0x518c65){return _0x518c65;});}return null;};}function removeEntity(_0xa27b38,_0x35aa4c){return function(_0x2b2d81){if(_0x2b2d81){return _0x2b2d81[_0x2682('0x26')]()['then'](function(){_0xa27b38[_0x2682('0x19')](0xcc)[_0x2682('0x1a')]();});}};}function handleEntityNotFound(_0x361791,_0x1d541e){return function(_0x431fbd){if(!_0x431fbd){_0x361791[_0x2682('0x18')](0x194);}return _0x431fbd;};}function handleError(_0x5d325b,_0x4afd1d){_0x4afd1d=_0x4afd1d||0x1f4;return function(_0x48eee6){logger['error'](_0x48eee6[_0x2682('0x27')]);if(_0x48eee6[_0x2682('0x28')]){delete _0x48eee6[_0x2682('0x28')];}_0x5d325b[_0x2682('0x19')](_0x4afd1d)[_0x2682('0x29')](_0x48eee6);};}exports[_0x2682('0x2a')]=function(_0x893e02,_0x90f2ec){var _0x591660={},_0x9384b5={},_0x8b809b={'count':0x0,'rows':[]};var _0x545543=_[_0x2682('0x2b')](db[_0x2682('0x2c')][_0x2682('0x2d')],function(_0x226b98){return{'name':_0x226b98[_0x2682('0x2e')],'type':_0x226b98[_0x2682('0x2f')][_0x2682('0x30')]};});_0x9384b5[_0x2682('0x31')]=_[_0x2682('0x2b')](_0x545543,_0x2682('0x28'));_0x9384b5[_0x2682('0x32')]=_['keys'](_0x893e02[_0x2682('0x32')]);_0x9384b5[_0x2682('0x33')]=_[_0x2682('0x34')](_0x9384b5[_0x2682('0x31')],_0x9384b5[_0x2682('0x32')]);_0x591660['attributes']=_['intersection'](_0x9384b5[_0x2682('0x31')],qs[_0x2682('0x35')](_0x893e02[_0x2682('0x32')]['fields']));_0x591660[_0x2682('0x36')]=_0x591660[_0x2682('0x36')][_0x2682('0x37')]?_0x591660[_0x2682('0x36')]:_0x9384b5['model'];if(!_0x893e02['query'][_0x2682('0x38')]('nolimit')){_0x591660[_0x2682('0x1d')]=qs[_0x2682('0x1d')](_0x893e02[_0x2682('0x32')][_0x2682('0x1d')]);_0x591660[_0x2682('0x1f')]=qs[_0x2682('0x1f')](_0x893e02['query']['offset']);}_0x591660[_0x2682('0x39')]=qs['sort'](_0x893e02[_0x2682('0x32')][_0x2682('0x3a')]);_0x591660[_0x2682('0x3b')]=qs[_0x2682('0x33')](_[_0x2682('0x3c')](_0x893e02[_0x2682('0x32')],_0x9384b5[_0x2682('0x33')]),_0x545543);if(_0x893e02[_0x2682('0x32')][_0x2682('0x3d')]){_0x591660[_0x2682('0x3b')]=_['merge'](_0x591660[_0x2682('0x3b')],{'$or':_['map'](_0x545543,function(_0x5a812d){if(_0x5a812d[_0x2682('0x2f')]!==_0x2682('0x3e')){var _0x3ea618={};_0x3ea618[_0x5a812d[_0x2682('0x28')]]={'$like':'%'+_0x893e02[_0x2682('0x32')][_0x2682('0x3d')]+'%'};return _0x3ea618;}})});}_0x591660=_['merge']({},_0x591660,_0x893e02[_0x2682('0x3f')]);var _0x19099d={'where':_0x591660[_0x2682('0x3b')]};return db[_0x2682('0x2c')][_0x2682('0x1e')](_0x19099d)['then'](function(_0x1f46cf){_0x8b809b['count']=_0x1f46cf;if(_0x893e02[_0x2682('0x32')]['includeAll']){_0x591660[_0x2682('0x40')]=[{'all':!![]}];}return db[_0x2682('0x2c')]['findAll'](_0x591660);})[_0x2682('0x25')](function(_0x392c4b){_0x8b809b[_0x2682('0x41')]=_0x392c4b;return _0x8b809b;})[_0x2682('0x25')](respondWithFilteredResult(_0x90f2ec,_0x591660))[_0x2682('0x42')](handleError(_0x90f2ec,null));};exports[_0x2682('0x43')]=function(_0x34a6c3,_0x209da8){var _0x34adb0={'raw':!![],'where':{'id':_0x34a6c3[_0x2682('0x44')]['id']}},_0x16ba45={};_0x16ba45[_0x2682('0x31')]=_['keys'](db['ZendeskField'][_0x2682('0x2d')]);_0x16ba45[_0x2682('0x32')]=_[_0x2682('0x45')](_0x34a6c3[_0x2682('0x32')]);_0x16ba45[_0x2682('0x33')]=_[_0x2682('0x34')](_0x16ba45[_0x2682('0x31')],_0x16ba45['query']);_0x34adb0['attributes']=_[_0x2682('0x34')](_0x16ba45[_0x2682('0x31')],qs[_0x2682('0x35')](_0x34a6c3[_0x2682('0x32')][_0x2682('0x35')]));_0x34adb0['attributes']=_0x34adb0['attributes'][_0x2682('0x37')]?_0x34adb0[_0x2682('0x36')]:_0x16ba45[_0x2682('0x31')];if(_0x34a6c3[_0x2682('0x32')][_0x2682('0x46')]){_0x34adb0[_0x2682('0x40')]=[{'all':!![]}];}_0x34adb0=_[_0x2682('0x47')]({},_0x34adb0,_0x34a6c3[_0x2682('0x3f')]);return db[_0x2682('0x2c')]['find'](_0x34adb0)[_0x2682('0x25')](handleEntityNotFound(_0x209da8,null))['then'](respondWithResult(_0x209da8,null))['catch'](handleError(_0x209da8,null));};exports[_0x2682('0x48')]=function(_0x29243c,_0x487779){return db['ZendeskField'][_0x2682('0x48')](_0x29243c[_0x2682('0x49')],{})[_0x2682('0x25')](respondWithResult(_0x487779,0xc9))[_0x2682('0x42')](handleError(_0x487779,null));};exports[_0x2682('0x24')]=function(_0xf3cd03,_0x28805b){if(_0xf3cd03[_0x2682('0x49')]['id']){delete _0xf3cd03[_0x2682('0x49')]['id'];}return db[_0x2682('0x2c')]['find']({'where':{'id':_0xf3cd03[_0x2682('0x44')]['id']}})[_0x2682('0x25')](handleEntityNotFound(_0x28805b,null))['then'](saveUpdates(_0xf3cd03[_0x2682('0x49')],null))[_0x2682('0x25')](respondWithResult(_0x28805b,null))['catch'](handleError(_0x28805b,null));};exports['destroy']=function(_0x1d9c4e,_0x2379c3){return db[_0x2682('0x2c')][_0x2682('0x4a')]({'where':{'id':_0x1d9c4e[_0x2682('0x44')]['id']}})['then'](handleEntityNotFound(_0x2379c3,null))['then'](removeEntity(_0x2379c3,null))[_0x2682('0x42')](handleError(_0x2379c3,null));};
\ No newline at end of file
index ba9c86e..d131286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa48a=['moment','bluebird','request-promise','path','rimraf','exports','int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util','api'];(function(_0x3dfe54,_0xdeb5c){var _0x25c014=function(_0x5650dd){while(--_0x5650dd){_0x3dfe54['push'](_0x3dfe54['shift']());}};_0x25c014(++_0xdeb5c);}(_0xa48a,0x1ad));var _0xaa48=function(_0xd5118a,_0xcc448b){_0xd5118a=_0xd5118a-0x0;var _0xc57067=_0xa48a[_0xd5118a];return _0xc57067;};'use strict';var _=require(_0xaa48('0x0'));var util=require(_0xaa48('0x1'));var logger=require('../../config/logger')(_0xaa48('0x2'));var moment=require(_0xaa48('0x3'));var BPromise=require(_0xaa48('0x4'));var rp=require(_0xaa48('0x5'));var fs=require('fs');var path=require(_0xaa48('0x6'));var rimraf=require(_0xaa48('0x7'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0xaa48('0x8')]=function(_0xc33de5,_0xb0bbbf){return _0xc33de5['define']('ZendeskField',attributes,{'tableName':_0xaa48('0x9'),'paranoid':![],'indexes':[{'name':_0xaa48('0xa'),'fields':['idField',_0xaa48('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf36e=['idField','FieldId','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index'];(function(_0x500f13,_0x272dd6){var _0x2bb974=function(_0x2997ce){while(--_0x2997ce){_0x500f13['push'](_0x500f13['shift']());}};_0x2bb974(++_0x272dd6);}(_0xf36e,0xa7));var _0xef36=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xf36e[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xef36('0x0'))(_0xef36('0x1'));var moment=require(_0xef36('0x2'));var BPromise=require(_0xef36('0x3'));var rp=require(_0xef36('0x4'));var fs=require('fs');var path=require(_0xef36('0x5'));var rimraf=require('rimraf');var config=require(_0xef36('0x6'));var attributes=require(_0xef36('0x7'));module[_0xef36('0x8')]=function(_0x377583,_0x1f4da7){return _0x377583[_0xef36('0x9')](_0xef36('0xa'),attributes,{'tableName':_0xef36('0xb'),'paranoid':![],'indexes':[{'name':_0xef36('0xc'),'fields':[_0xef36('0xd'),_0xef36('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 56c79c8..31d8aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8582=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x8582,0xad));var _0x2858=function(_0x2bcf23,_0x300471){_0x2bcf23=_0x2bcf23-0x0;var _0x1fe322=_0x8582[_0x2bcf23];return _0x1fe322;};'use strict';var _=require(_0x2858('0x0'));var util=require(_0x2858('0x1'));var moment=require(_0x2858('0x2'));var BPromise=require(_0x2858('0x3'));var rs=require(_0x2858('0x4'));var fs=require('fs');var Redis=require(_0x2858('0x5'));var db=require(_0x2858('0x6'))['db'];var utils=require(_0x2858('0x7'));var logger=require(_0x2858('0x8'))(_0x2858('0x9'));var config=require(_0x2858('0xa'));var jayson=require(_0x2858('0xb'));var client=jayson[_0x2858('0xc')][_0x2858('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x37f41e,_0x153e9c,_0x2e9da6){return new BPromise(function(_0x2b2eca,_0x3aedf2){return client[_0x2858('0xe')](_0x37f41e,_0x2e9da6)[_0x2858('0xf')](function(_0x5bbc95){logger[_0x2858('0x10')](_0x2858('0x11'),_0x153e9c,_0x2858('0x12'));logger[_0x2858('0x13')](_0x2858('0x14'),_0x153e9c,_0x2858('0x12'),JSON['stringify'](_0x5bbc95));if(_0x5bbc95['error']){if(_0x5bbc95[_0x2858('0x15')][_0x2858('0x16')]===0x1f4){logger[_0x2858('0x15')](_0x2858('0x11'),_0x153e9c,_0x5bbc95['error'][_0x2858('0x17')]);return _0x3aedf2(_0x5bbc95[_0x2858('0x15')][_0x2858('0x17')]);}logger['error'](_0x2858('0x11'),_0x153e9c,_0x5bbc95['error'][_0x2858('0x17')]);return _0x2b2eca(_0x5bbc95[_0x2858('0x15')]['message']);}else{logger[_0x2858('0x10')]('ZendeskField,\x20%s,\x20%s',_0x153e9c,_0x2858('0x12'));_0x2b2eca(_0x5bbc95[_0x2858('0x18')][_0x2858('0x17')]);}})['catch'](function(_0x22ac4e){logger[_0x2858('0x15')](_0x2858('0x11'),_0x153e9c,_0x22ac4e);_0x3aedf2(_0x22ac4e);});});}
\ No newline at end of file
+var _0x2669=['debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent'];(function(_0xf7b572,_0x2a5ce2){var _0x59ceb2=function(_0x25d277){while(--_0x25d277){_0xf7b572['push'](_0xf7b572['shift']());}};_0x59ceb2(++_0x2a5ce2);}(_0x2669,0xa1));var _0x9266=function(_0x336486,_0x1573ee){_0x336486=_0x336486-0x0;var _0x7c8132=_0x2669[_0x336486];return _0x7c8132;};'use strict';var _=require('lodash');var util=require(_0x9266('0x0'));var moment=require(_0x9266('0x1'));var BPromise=require(_0x9266('0x2'));var rs=require(_0x9266('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9266('0x4'));var logger=require(_0x9266('0x5'))(_0x9266('0x6'));var config=require(_0x9266('0x7'));var jayson=require(_0x9266('0x8'));var client=jayson[_0x9266('0x9')][_0x9266('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29d5a0,_0x4f7cf7,_0x3c2093){return new BPromise(function(_0x45d56c,_0x5d3893){return client[_0x9266('0xb')](_0x29d5a0,_0x3c2093)[_0x9266('0xc')](function(_0x312651){logger['info'](_0x9266('0xd'),_0x4f7cf7,_0x9266('0xe'));logger[_0x9266('0xf')](_0x9266('0x10'),_0x4f7cf7,'request\x20sent',JSON['stringify'](_0x312651));if(_0x312651['error']){if(_0x312651[_0x9266('0x11')][_0x9266('0x12')]===0x1f4){logger[_0x9266('0x11')](_0x9266('0xd'),_0x4f7cf7,_0x312651['error'][_0x9266('0x13')]);return _0x5d3893(_0x312651['error']['message']);}logger[_0x9266('0x11')](_0x9266('0xd'),_0x4f7cf7,_0x312651[_0x9266('0x11')]['message']);return _0x45d56c(_0x312651['error'][_0x9266('0x13')]);}else{logger[_0x9266('0x14')](_0x9266('0xd'),_0x4f7cf7,'request\x20sent');_0x45d56c(_0x312651['result'][_0x9266('0x13')]);}})[_0x9266('0x15')](function(_0xd9279a){logger[_0x9266('0x11')]('ZendeskField,\x20%s,\x20%s',_0x4f7cf7,_0xd9279a);_0x5d3893(_0xd9279a);});});}
\ No newline at end of file
index 70d6903..a4daaad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78e7=['index','/:id','show','/:id/configurations','getConfigurations','create','post','addConfiguration','put','update','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intZohoAccount.controller','get','isAuthenticated'];(function(_0x861fd0,_0x49045a){var _0x20a70c=function(_0x39c947){while(--_0x39c947){_0x861fd0['push'](_0x861fd0['shift']());}};_0x20a70c(++_0x49045a);}(_0x78e7,0x170));var _0x778e=function(_0x2c897b,_0x2ce7e2){_0x2c897b=_0x2c897b-0x0;var _0x149a36=_0x78e7[_0x2c897b];return _0x149a36;};'use strict';var multer=require('multer');var util=require(_0x778e('0x0'));var path=require(_0x778e('0x1'));var timeout=require(_0x778e('0x2'));var express=require(_0x778e('0x3'));var router=express[_0x778e('0x4')]();var fs_extra=require(_0x778e('0x5'));var auth=require(_0x778e('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x778e('0x7'));router[_0x778e('0x8')]('/',auth[_0x778e('0x9')](),controller[_0x778e('0xa')]);router[_0x778e('0x8')](_0x778e('0xb'),auth[_0x778e('0x9')](),controller[_0x778e('0xc')]);router[_0x778e('0x8')](_0x778e('0xd'),auth['isAuthenticated'](),controller[_0x778e('0xe')]);router[_0x778e('0x8')]('/:id/fields',auth[_0x778e('0x9')](),controller['getFields']);router['post']('/',auth[_0x778e('0x9')](),controller[_0x778e('0xf')]);router[_0x778e('0x10')](_0x778e('0xd'),auth['isAuthenticated'](),controller[_0x778e('0x11')]);router[_0x778e('0x12')](_0x778e('0xb'),auth['isAuthenticated'](),controller[_0x778e('0x13')]);router['delete']('/:id',auth[_0x778e('0x9')](),controller[_0x778e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x09ad=['put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','get','index','/:id','isAuthenticated','show','getConfigurations','getFields','post','create','/:id/configurations','addConfiguration'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x09ad,0xd3));var _0xd09a=function(_0x3a079b,_0x48b79a){_0x3a079b=_0x3a079b-0x0;var _0x9a0ac3=_0x09ad[_0x3a079b];return _0x9a0ac3;};'use strict';var multer=require('multer');var util=require(_0xd09a('0x0'));var path=require(_0xd09a('0x1'));var timeout=require(_0xd09a('0x2'));var express=require(_0xd09a('0x3'));var router=express[_0xd09a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd09a('0x5'));var interaction=require(_0xd09a('0x6'));var config=require('../../config/environment');var controller=require(_0xd09a('0x7'));router[_0xd09a('0x8')]('/',auth['isAuthenticated'](),controller[_0xd09a('0x9')]);router[_0xd09a('0x8')](_0xd09a('0xa'),auth[_0xd09a('0xb')](),controller[_0xd09a('0xc')]);router[_0xd09a('0x8')]('/:id/configurations',auth[_0xd09a('0xb')](),controller[_0xd09a('0xd')]);router[_0xd09a('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xd09a('0xe')]);router[_0xd09a('0xf')]('/',auth[_0xd09a('0xb')](),controller[_0xd09a('0x10')]);router[_0xd09a('0xf')](_0xd09a('0x11'),auth[_0xd09a('0xb')](),controller[_0xd09a('0x12')]);router[_0xd09a('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xd09a('0x14')]);router[_0xd09a('0x15')]('/:id',auth[_0xd09a('0xb')](),controller['destroy']);module[_0xd09a('0x16')]=router;
\ No newline at end of file
index 2068242..4e66471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['STRING','exports'];(function(_0x38d666,_0x5d5663){var _0x2484e4=function(_0x4a0b52){while(--_0x4a0b52){_0x38d666['push'](_0x38d666['shift']());}};_0x2484e4(++_0x5d5663);}(_0xe5b3,0x133));var _0x3e5b=function(_0x2431d6,_0x25189a){_0x2431d6=_0x2431d6-0x0;var _0x4d0f9b=_0xe5b3[_0x2431d6];return _0x4d0f9b;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'name':{'type':Sequelize[_0x3e5b('0x1')]},'description':{'type':Sequelize[_0x3e5b('0x1')]},'host':{'type':Sequelize[_0x3e5b('0x1')]},'zone':{'type':Sequelize[_0x3e5b('0x1')]},'clientId':{'type':Sequelize[_0x3e5b('0x1')]},'clientSecret':{'type':Sequelize[_0x3e5b('0x1')]},'serverUrl':{'type':Sequelize[_0x3e5b('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0x3e5b('0x1')]},'refreshToken':{'type':Sequelize[_0x3e5b('0x1')]}};
\ No newline at end of file
+var _0xb43b=['exports','STRING','sequelize'];(function(_0x2d460c,_0x4f08c0){var _0xf6fc4c=function(_0x4fb81c){while(--_0x4fb81c){_0x2d460c['push'](_0x2d460c['shift']());}};_0xf6fc4c(++_0x4f08c0);}(_0xb43b,0x1b2));var _0xbb43=function(_0x53a047,_0x3bd6ad){_0x53a047=_0x53a047-0x0;var _0x40170a=_0xb43b[_0x53a047];return _0x40170a;};'use strict';var Sequelize=require(_0xbb43('0x0'));module[_0xbb43('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbb43('0x2')]},'host':{'type':Sequelize[_0xbb43('0x2')]},'zone':{'type':Sequelize[_0xbb43('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xbb43('0x2')]},'serverUrl':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xbb43('0x2')]},'refreshToken':{'type':Sequelize[_0xbb43('0x2')]}};
\ No newline at end of file
index 5f2736a..0259968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c00=['statusCode','getFields','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','count','apply','reject','save','update','then','destroy','stack','name','send','ZohoAccount','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','include','findAll','rows','show','params','fields','includeAll','find','catch','create','body','getConfigurations','findOne','ZohoConfiguration','order','options','addConfiguration','getSubjects','channel','getDescriptions','Subjects','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','zoho.eu','com','slice','substring','lastIndexOf','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','error','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test'];(function(_0x49c68e,_0x1c1673){var _0x33032b=function(_0x42ac31){while(--_0x42ac31){_0x49c68e['push'](_0x49c68e['shift']());}};_0x33032b(++_0x1c1673);}(_0x3c00,0x186));var _0x03c0=function(_0x5c46fc,_0x1a409b){_0x5c46fc=_0x5c46fc-0x0;var _0x2760ad=_0x3c00[_0x5c46fc];return _0x2760ad;};'use strict';var emlformat=require(_0x03c0('0x0'));var rimraf=require(_0x03c0('0x1'));var zipdir=require(_0x03c0('0x2'));var jsonpatch=require(_0x03c0('0x3'));var rp=require(_0x03c0('0x4'));var moment=require(_0x03c0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x03c0('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x03c0('0x7'));var ejs=require(_0x03c0('0x8'));var fs=require('fs');var fs_extra=require(_0x03c0('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x03c0('0xa'));var jsforce=require(_0x03c0('0xb'));var deskjs=require(_0x03c0('0xc'));var toCsv=require(_0x03c0('0x7'));var querystring=require(_0x03c0('0xd'));var Papa=require(_0x03c0('0xe'));var Redis=require(_0x03c0('0xf'));var authService=require(_0x03c0('0x10'));var qs=require(_0x03c0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x03c0('0x12'))(_0x03c0('0x13'));var utils=require('../../config/utils');var config=require(_0x03c0('0x14'));var licenseUtil=require(_0x03c0('0x15'));var db=require(_0x03c0('0x16'))['db'];var integrations=require(_0x03c0('0x17'));function respondWithStatusCode(_0x3392f5,_0x55403e){_0x55403e=_0x55403e||0xcc;return function(_0x12efd4){if(_0x12efd4){return _0x3392f5[_0x03c0('0x18')](_0x55403e);}return _0x3392f5[_0x03c0('0x19')](_0x55403e)[_0x03c0('0x1a')]();};}function respondWithResult(_0x1cc5f2,_0x4e1445){_0x4e1445=_0x4e1445||0xc8;return function(_0x95d008){if(_0x95d008){return _0x1cc5f2[_0x03c0('0x19')](_0x4e1445)[_0x03c0('0x1b')](_0x95d008);}};}function respondWithFilteredResult(_0x13750a,_0x103247){return function(_0x55fbd2){if(_0x55fbd2){var _0x1981fe=typeof _0x103247[_0x03c0('0x1c')]==='undefined'&&typeof _0x103247[_0x03c0('0x1d')]==='undefined';var _0x3893d5=_0x55fbd2[_0x03c0('0x1e')];var _0x5749ae=_0x1981fe?0x0:_0x103247['offset'];var _0x2627ce=_0x1981fe?_0x55fbd2[_0x03c0('0x1e')]:_0x103247[_0x03c0('0x1c')]+_0x103247['limit'];var _0x3d16cb;if(_0x2627ce>=_0x3893d5){_0x2627ce=_0x3893d5;_0x3d16cb=0xc8;}else{_0x3d16cb=0xce;}_0x13750a[_0x03c0('0x19')](_0x3d16cb);return _0x13750a['set']('Content-Range',_0x5749ae+'-'+_0x2627ce+'/'+_0x3893d5)['json'](_0x55fbd2);}return null;};}function patchUpdates(_0x1667b6){return function(_0x546fa5){try{jsonpatch[_0x03c0('0x1f')](_0x546fa5,_0x1667b6,!![]);}catch(_0x29aae6){return BPromise[_0x03c0('0x20')](_0x29aae6);}return _0x546fa5[_0x03c0('0x21')]();};}function saveUpdates(_0xf4f2ff,_0x569381){return function(_0x45561e){if(_0x45561e){return _0x45561e[_0x03c0('0x22')](_0xf4f2ff)[_0x03c0('0x23')](function(_0x3b00ad){return _0x3b00ad;});}return null;};}function removeEntity(_0xabc74f,_0x4717c9){return function(_0x581d77){if(_0x581d77){return _0x581d77[_0x03c0('0x24')]()[_0x03c0('0x23')](function(){_0xabc74f['status'](0xcc)[_0x03c0('0x1a')]();});}};}function handleEntityNotFound(_0x5518ff,_0x30683c){return function(_0x9117e7){if(!_0x9117e7){_0x5518ff[_0x03c0('0x18')](0x194);}return _0x9117e7;};}function handleError(_0x47fa9e,_0x20313f){_0x20313f=_0x20313f||0x1f4;return function(_0x9f5938){logger['error'](_0x9f5938[_0x03c0('0x25')]);if(_0x9f5938[_0x03c0('0x26')]){delete _0x9f5938[_0x03c0('0x26')];}_0x47fa9e[_0x03c0('0x19')](_0x20313f)[_0x03c0('0x27')](_0x9f5938);};}exports['index']=function(_0x19805b,_0x4eac92){var _0x2aa00c={},_0x454f74={},_0x40ebb7={'count':0x0,'rows':[]};var _0x218d19=_['map'](db[_0x03c0('0x28')][_0x03c0('0x29')],function(_0x3f9fad){return{'name':_0x3f9fad[_0x03c0('0x2a')],'type':_0x3f9fad[_0x03c0('0x2b')][_0x03c0('0x2c')]};});_0x454f74[_0x03c0('0x2d')]=_[_0x03c0('0x2e')](_0x218d19,_0x03c0('0x26'));_0x454f74['query']=_[_0x03c0('0x2f')](_0x19805b[_0x03c0('0x30')]);_0x454f74[_0x03c0('0x31')]=_[_0x03c0('0x32')](_0x454f74['model'],_0x454f74[_0x03c0('0x30')]);_0x2aa00c['attributes']=_[_0x03c0('0x32')](_0x454f74[_0x03c0('0x2d')],qs['fields'](_0x19805b['query']['fields']));_0x2aa00c[_0x03c0('0x33')]=_0x2aa00c['attributes'][_0x03c0('0x34')]?_0x2aa00c[_0x03c0('0x33')]:_0x454f74[_0x03c0('0x2d')];if(!_0x19805b[_0x03c0('0x30')][_0x03c0('0x35')](_0x03c0('0x36'))){_0x2aa00c['limit']=qs[_0x03c0('0x1d')](_0x19805b['query']['limit']);_0x2aa00c[_0x03c0('0x1c')]=qs[_0x03c0('0x1c')](_0x19805b[_0x03c0('0x30')][_0x03c0('0x1c')]);}_0x2aa00c['order']=qs[_0x03c0('0x37')](_0x19805b['query'][_0x03c0('0x37')]);_0x2aa00c[_0x03c0('0x38')]=qs['filters'](_[_0x03c0('0x39')](_0x19805b[_0x03c0('0x30')],_0x454f74['filters']),_0x218d19);if(_0x19805b[_0x03c0('0x30')]['filter']){_0x2aa00c[_0x03c0('0x38')]=_[_0x03c0('0x3a')](_0x2aa00c['where'],{'$or':_['map'](_0x218d19,function(_0x5e5b1e){if(_0x5e5b1e['type']!==_0x03c0('0x3b')){var _0x36ad60={};_0x36ad60[_0x5e5b1e['name']]={'$like':'%'+_0x19805b[_0x03c0('0x30')][_0x03c0('0x3c')]+'%'};return _0x36ad60;}})});}_0x2aa00c=_[_0x03c0('0x3a')]({},_0x2aa00c,_0x19805b['options']);var _0x33579a={'where':_0x2aa00c[_0x03c0('0x38')]};return db[_0x03c0('0x28')]['count'](_0x33579a)[_0x03c0('0x23')](function(_0x4a0ec5){_0x40ebb7[_0x03c0('0x1e')]=_0x4a0ec5;if(_0x19805b[_0x03c0('0x30')]['includeAll']){_0x2aa00c[_0x03c0('0x3d')]=[{'all':!![]}];}return db[_0x03c0('0x28')][_0x03c0('0x3e')](_0x2aa00c);})['then'](function(_0x5347d3){_0x40ebb7[_0x03c0('0x3f')]=_0x5347d3;return _0x40ebb7;})['then'](respondWithFilteredResult(_0x4eac92,_0x2aa00c))['catch'](handleError(_0x4eac92,null));};exports[_0x03c0('0x40')]=function(_0x1166eb,_0x916dc0){var _0x361ed8={'raw':![],'where':{'id':_0x1166eb[_0x03c0('0x41')]['id']}},_0x3f3a9d={};_0x3f3a9d[_0x03c0('0x2d')]=_[_0x03c0('0x2f')](db[_0x03c0('0x28')]['rawAttributes']);_0x3f3a9d[_0x03c0('0x30')]=_[_0x03c0('0x2f')](_0x1166eb['query']);_0x3f3a9d[_0x03c0('0x31')]=_[_0x03c0('0x32')](_0x3f3a9d['model'],_0x3f3a9d[_0x03c0('0x30')]);_0x361ed8[_0x03c0('0x33')]=_[_0x03c0('0x32')](_0x3f3a9d['model'],qs[_0x03c0('0x42')](_0x1166eb[_0x03c0('0x30')][_0x03c0('0x42')]));_0x361ed8[_0x03c0('0x33')]=_0x361ed8['attributes'][_0x03c0('0x34')]?_0x361ed8[_0x03c0('0x33')]:_0x3f3a9d[_0x03c0('0x2d')];if(_0x1166eb[_0x03c0('0x30')][_0x03c0('0x43')]){_0x361ed8[_0x03c0('0x3d')]=[{'all':!![]}];}_0x361ed8=_[_0x03c0('0x3a')]({},_0x361ed8,_0x1166eb['options']);return db[_0x03c0('0x28')][_0x03c0('0x44')](_0x361ed8)[_0x03c0('0x23')](handleEntityNotFound(_0x916dc0,null))[_0x03c0('0x23')](respondWithResult(_0x916dc0,null))[_0x03c0('0x45')](handleError(_0x916dc0,null));};exports[_0x03c0('0x46')]=function(_0x154b05,_0x111e26){return db[_0x03c0('0x28')]['create'](_0x154b05[_0x03c0('0x47')],{})[_0x03c0('0x23')](respondWithResult(_0x111e26,0xc9))[_0x03c0('0x45')](handleError(_0x111e26,null));};exports[_0x03c0('0x22')]=function(_0x29613e,_0xa86a62){if(_0x29613e[_0x03c0('0x47')]['id']){delete _0x29613e['body']['id'];}return db[_0x03c0('0x28')]['find']({'where':{'id':_0x29613e[_0x03c0('0x41')]['id']}})['then'](handleEntityNotFound(_0xa86a62,null))[_0x03c0('0x23')](saveUpdates(_0x29613e['body'],null))[_0x03c0('0x23')](respondWithResult(_0xa86a62,null))[_0x03c0('0x45')](handleError(_0xa86a62,null));};exports['destroy']=function(_0x3de79d,_0x309cc5){return db[_0x03c0('0x28')][_0x03c0('0x44')]({'where':{'id':_0x3de79d[_0x03c0('0x41')]['id']}})[_0x03c0('0x23')](handleEntityNotFound(_0x309cc5,null))['then'](removeEntity(_0x309cc5,null))[_0x03c0('0x45')](handleError(_0x309cc5,null));};exports[_0x03c0('0x48')]=function(_0x19d3e7,_0x50b881,_0x1e9237){var _0x15c579={};var _0x5668b9={};var _0xd4fdfa;var _0x121c8c;return db['ZohoAccount'][_0x03c0('0x49')]({'where':{'id':_0x19d3e7[_0x03c0('0x41')]['id']}})[_0x03c0('0x23')](handleEntityNotFound(_0x50b881,null))['then'](function(_0x4f136c){if(_0x4f136c){_0xd4fdfa=_0x4f136c;_0x5668b9['model']=_[_0x03c0('0x2f')](db[_0x03c0('0x4a')]['rawAttributes']);_0x5668b9[_0x03c0('0x30')]=_[_0x03c0('0x2f')](_0x19d3e7[_0x03c0('0x30')]);_0x5668b9[_0x03c0('0x31')]=_[_0x03c0('0x32')](_0x5668b9['model'],_0x5668b9[_0x03c0('0x30')]);_0x15c579[_0x03c0('0x33')]=_[_0x03c0('0x32')](_0x5668b9[_0x03c0('0x2d')],qs[_0x03c0('0x42')](_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x42')]));_0x15c579[_0x03c0('0x33')]=_0x15c579[_0x03c0('0x33')][_0x03c0('0x34')]?_0x15c579[_0x03c0('0x33')]:_0x5668b9[_0x03c0('0x2d')];_0x15c579[_0x03c0('0x4b')]=qs[_0x03c0('0x37')](_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x37')]);_0x15c579['where']=qs[_0x03c0('0x31')](_[_0x03c0('0x39')](_0x19d3e7[_0x03c0('0x30')],_0x5668b9['filters']));if(_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x3c')]){_0x15c579[_0x03c0('0x38')]=_['merge'](_0x15c579[_0x03c0('0x38')],{'$or':_[_0x03c0('0x2e')](_0x15c579[_0x03c0('0x33')],function(_0x49d148){var _0x1aed45={};_0x1aed45[_0x49d148]={'$like':'%'+_0x19d3e7['query'][_0x03c0('0x3c')]+'%'};return _0x1aed45;})});}_0x15c579=_[_0x03c0('0x3a')]({},_0x15c579,_0x19d3e7[_0x03c0('0x4c')]);return _0xd4fdfa[_0x03c0('0x48')](_0x15c579);}})[_0x03c0('0x23')](function(_0x4476e5){if(_0x4476e5){_0x121c8c=_0x4476e5['length'];if(!_0x19d3e7['query'][_0x03c0('0x35')](_0x03c0('0x36'))){_0x15c579[_0x03c0('0x1d')]=qs[_0x03c0('0x1d')](_0x19d3e7['query'][_0x03c0('0x1d')]);_0x15c579[_0x03c0('0x1c')]=qs['offset'](_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x1c')]);}return _0xd4fdfa[_0x03c0('0x48')](_0x15c579);}})['then'](function(_0x1d369f){if(_0x1d369f){return _0x1d369f?{'count':_0x121c8c,'rows':_0x1d369f}:null;}})[_0x03c0('0x23')](respondWithResult(_0x50b881,null))['catch'](handleError(_0x50b881,null));};exports[_0x03c0('0x4d')]=function(_0x256f2c,_0x34c15c,_0x5ddee2){if(_0x256f2c[_0x03c0('0x47')]['id']){delete _0x256f2c[_0x03c0('0x47')]['id'];}return db[_0x03c0('0x28')][_0x03c0('0x49')]({'where':{'id':_0x256f2c['params']['id']}})[_0x03c0('0x23')](handleEntityNotFound(_0x34c15c,null))[_0x03c0('0x23')](function(_0x1a9582){if(_0x1a9582){_0x256f2c[_0x03c0('0x47')]['AccountId']=_0x1a9582['id'];_0x256f2c[_0x03c0('0x47')]['Subjects']=integrations[_0x03c0('0x4e')](_0x256f2c[_0x03c0('0x47')][_0x03c0('0x4f')],_0x256f2c[_0x03c0('0x47')][_0x03c0('0x2b')]);_0x256f2c[_0x03c0('0x47')]['Descriptions']=integrations[_0x03c0('0x50')](_0x256f2c['body'][_0x03c0('0x4f')],_0x256f2c[_0x03c0('0x47')][_0x03c0('0x2b')]);return db[_0x03c0('0x4a')][_0x03c0('0x46')](_0x256f2c[_0x03c0('0x47')],{'include':[{'model':db['ZohoField'],'as':_0x03c0('0x51')},{'model':db[_0x03c0('0x52')],'as':_0x03c0('0x53')}]});}return null;})[_0x03c0('0x23')](respondWithResult(_0x34c15c,null))[_0x03c0('0x45')](handleError(_0x34c15c,null));};function getAccessToken(_0x2747a2){return new Promise(function(_0x2015ee,_0x12d1ef){var _0x43792b;switch(_0x2747a2[_0x03c0('0x54')]){case'US':_0x43792b=_0x03c0('0x55');break;case'AU':_0x43792b=_0x03c0('0x56');break;case'EU':_0x43792b=_0x03c0('0x57');break;case'IN':_0x43792b=_0x03c0('0x58');break;case'CN':_0x43792b=_0x03c0('0x59');break;default:_0x43792b=_0x03c0('0x57');break;}var _0xb42ae4={'method':_0x03c0('0x5a'),'uri':_0x43792b+_0x03c0('0x5b'),'qs':{'refresh_token':_0x2747a2[_0x03c0('0x5c')],'client_id':_0x2747a2[_0x03c0('0x5d')],'client_secret':_0x2747a2[_0x03c0('0x5e')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xb42ae4)[_0x03c0('0x23')](function(_0x207871){if(_0x207871[_0x03c0('0x5f')]){_0x2015ee(_0x207871[_0x03c0('0x5f')]);}else{_0x12d1ef(_0x03c0('0x60'));}})[_0x03c0('0x45')](function(_0x39e805){_0x12d1ef(_0x39e805);});});}exports['getFields']=function(_0x2204b8,_0x28646c,_0x432a49){var _0x135f9f,_0x515fd6,_0x183e01,_0x459bc6,_0x1a8e32;return db[_0x03c0('0x28')][_0x03c0('0x49')]({'where':{'id':_0x2204b8[_0x03c0('0x41')]['id']},'attributes':['id',_0x03c0('0x61'),'zone',_0x03c0('0x5d'),_0x03c0('0x5e'),_0x03c0('0x62'),'code',_0x03c0('0x5c')]})[_0x03c0('0x23')](handleEntityNotFound(_0x28646c,null))[_0x03c0('0x23')](function(_0x2a9098){_0x1a8e32=_0x2a9098;_0x135f9f=_0x1a8e32['host'];_0x515fd6=_0x135f9f===_0x03c0('0x63')?'eu':_0x03c0('0x64');_0x183e01=_0x1a8e32['serverUrl'];var _0x56e955=_0x183e01[_0x03c0('0x65')](-0x1);if(_0x56e955==='/'||_0x56e955==='\x5c'||_0x56e955===':'){_0x183e01=_0x183e01[_0x03c0('0x66')](0x0,_0x183e01[_0x03c0('0x67')](_0x56e955));}if(!_0x1a8e32[_0x03c0('0x5c')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x1a8e32);})['then'](function(_0x4ae19e){if(_0x4ae19e){return rp({'method':'GET','uri':util[_0x03c0('0x68')](_0x03c0('0x69'),_0x515fd6),'qs':{'module':_0x03c0('0x6a')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4ae19e},'json':!![]});}})['then'](function(_0x4b62fc){if(_0x4b62fc){if(_0x4b62fc[_0x03c0('0x6b')]&&_0x4b62fc[_0x03c0('0x6b')][_0x03c0('0x6c')]){throw new Error(_0x4b62fc[_0x03c0('0x6b')]['error']['message']);}var _0x3641ac=[];var _0x15dfca=[];var _0xd9e142=['Owner',_0x03c0('0x6d'),_0x03c0('0x6e'),_0x03c0('0x6f'),_0x03c0('0x70'),_0x03c0('0x71'),_0x03c0('0x72'),_0x03c0('0x73')];_0x15dfca=_[_0x03c0('0x74')](_0x4b62fc[_0x03c0('0x42')],function(_0x54a642){return _0xd9e142[_0x03c0('0x75')](_0x54a642[_0x03c0('0x76')]);});for(var _0x429c1=0x0;_0x429c1<_0x15dfca[_0x03c0('0x34')];_0x429c1++){if(_0x15dfca[_0x429c1][_0x03c0('0x77')]===![]){_0x3641ac['push']({'id':_0x15dfca[_0x429c1]['id'],'name':_0x15dfca[_0x429c1][_0x03c0('0x78')],'custom':_0x15dfca[_0x429c1][_0x03c0('0x79')],'options':_0x15dfca[_0x429c1][_0x03c0('0x7a')]===_0x03c0('0x7b')&&_0x15dfca[_0x429c1][_0x03c0('0x7c')][_0x03c0('0x34')]>-0x1?_[_0x03c0('0x2e')](_0x15dfca[_0x429c1][_0x03c0('0x7c')],function(_0x18fa22){return{'name':_0x18fa22,'value':_0x18fa22};}):[]});}}return{'count':_0x3641ac['length'],'rows':_0x3641ac};}else{return{'count':0x0,'rows':[]};}})[_0x03c0('0x23')](respondWithResult(_0x28646c,null))['catch'](function(_0x4d4864){var _0x2777b3=_0x2204b8[_0x03c0('0x30')][_0x03c0('0x7d')]?0x1f4:_0x4d4864[_0x03c0('0x7e')]||0x1f4;logger[_0x03c0('0x6c')]('getFields,\x20%s,\x20%s,\x20%s',_0x03c0('0x7f'),_0x2777b3,JSON['stringify'](_0x4d4864));delete _0x4d4864[_0x03c0('0x26')];if(_0x2777b3===0x191){_0x2777b3=0x190;}_0x28646c['status'](_0x2777b3)['send'](_0x2204b8[_0x03c0('0x30')][_0x03c0('0x7d')]?{'message':_0x03c0('0x80'),'statusCode':_0x4d4864['statusCode']}:_0x4d4864);});};
\ No newline at end of file
+var _0x76c4=['status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','length','create','body','getConfigurations','findOne','ZohoConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','getDescriptions','ZohoField','Subjects','Descriptions','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','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','clientId','clientSecret','code','zoho.eu','com','serverUrl','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Call_Result','Call_Start_Time','Call_Type','remove','api_name','push','display_label','custom_field','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration'];(function(_0x5eb9bb,_0x5c8956){var _0x33277a=function(_0xeadf16){while(--_0xeadf16){_0x5eb9bb['push'](_0x5eb9bb['shift']());}};_0x33277a(++_0x5c8956);}(_0x76c4,0x176));var _0x476c=function(_0x2c3cca,_0x45a962){_0x2c3cca=_0x2c3cca-0x0;var _0x3642f0=_0x76c4[_0x2c3cca];return _0x3642f0;};'use strict';var emlformat=require(_0x476c('0x0'));var rimraf=require(_0x476c('0x1'));var zipdir=require(_0x476c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x476c('0x3'));var BPromise=require(_0x476c('0x4'));var Mustache=require(_0x476c('0x5'));var util=require(_0x476c('0x6'));var path=require('path');var sox=require(_0x476c('0x7'));var csv=require('to-csv');var ejs=require(_0x476c('0x8'));var fs=require('fs');var fs_extra=require(_0x476c('0x9'));var _=require(_0x476c('0xa'));var squel=require(_0x476c('0xb'));var crypto=require(_0x476c('0xc'));var jsforce=require(_0x476c('0xd'));var deskjs=require(_0x476c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x476c('0xf'));var Papa=require(_0x476c('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x476c('0x11'));var as=require(_0x476c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x476c('0x13'))('api');var utils=require(_0x476c('0x14'));var config=require(_0x476c('0x15'));var licenseUtil=require(_0x476c('0x16'));var db=require(_0x476c('0x17'))['db'];var integrations=require(_0x476c('0x18'));function respondWithStatusCode(_0xb398c2,_0x2a7657){_0x2a7657=_0x2a7657||0xcc;return function(_0x188ff0){if(_0x188ff0){return _0xb398c2['sendStatus'](_0x2a7657);}return _0xb398c2[_0x476c('0x19')](_0x2a7657)[_0x476c('0x1a')]();};}function respondWithResult(_0x42cfd7,_0x4b5b5e){_0x4b5b5e=_0x4b5b5e||0xc8;return function(_0x409527){if(_0x409527){return _0x42cfd7[_0x476c('0x19')](_0x4b5b5e)['json'](_0x409527);}};}function respondWithFilteredResult(_0x292138,_0x50705){return function(_0x4b3e86){if(_0x4b3e86){var _0x5dac84=typeof _0x50705[_0x476c('0x1b')]===_0x476c('0x1c')&&typeof _0x50705[_0x476c('0x1d')]===_0x476c('0x1c');var _0x43e92c=_0x4b3e86[_0x476c('0x1e')];var _0x5b1065=_0x5dac84?0x0:_0x50705[_0x476c('0x1b')];var _0x4f7413=_0x5dac84?_0x4b3e86['count']:_0x50705[_0x476c('0x1b')]+_0x50705[_0x476c('0x1d')];var _0x2a385b;if(_0x4f7413>=_0x43e92c){_0x4f7413=_0x43e92c;_0x2a385b=0xc8;}else{_0x2a385b=0xce;}_0x292138[_0x476c('0x19')](_0x2a385b);return _0x292138[_0x476c('0x1f')](_0x476c('0x20'),_0x5b1065+'-'+_0x4f7413+'/'+_0x43e92c)[_0x476c('0x21')](_0x4b3e86);}return null;};}function patchUpdates(_0x447687){return function(_0x4b4ec1){try{jsonpatch['apply'](_0x4b4ec1,_0x447687,!![]);}catch(_0xfe35d4){return BPromise['reject'](_0xfe35d4);}return _0x4b4ec1[_0x476c('0x22')]();};}function saveUpdates(_0x424d30,_0x299af1){return function(_0x180e09){if(_0x180e09){return _0x180e09[_0x476c('0x23')](_0x424d30)['then'](function(_0x538e61){return _0x538e61;});}return null;};}function removeEntity(_0x243c31,_0x19aed5){return function(_0xecba7e){if(_0xecba7e){return _0xecba7e[_0x476c('0x24')]()[_0x476c('0x25')](function(){_0x243c31['status'](0xcc)[_0x476c('0x1a')]();});}};}function handleEntityNotFound(_0x46b704,_0x7135ff){return function(_0x3deb1e){if(!_0x3deb1e){_0x46b704[_0x476c('0x26')](0x194);}return _0x3deb1e;};}function handleError(_0x2f99be,_0x2489a5){_0x2489a5=_0x2489a5||0x1f4;return function(_0x54fabc){logger[_0x476c('0x27')](_0x54fabc[_0x476c('0x28')]);if(_0x54fabc[_0x476c('0x29')]){delete _0x54fabc[_0x476c('0x29')];}_0x2f99be[_0x476c('0x19')](_0x2489a5)[_0x476c('0x2a')](_0x54fabc);};}exports[_0x476c('0x2b')]=function(_0x1a15a2,_0x514eea){var _0x47a603={},_0x412a9f={},_0xd4d9b3={'count':0x0,'rows':[]};var _0x3d06e0=_[_0x476c('0x2c')](db[_0x476c('0x2d')][_0x476c('0x2e')],function(_0x34d17c){return{'name':_0x34d17c[_0x476c('0x2f')],'type':_0x34d17c[_0x476c('0x30')][_0x476c('0x31')]};});_0x412a9f[_0x476c('0x32')]=_['map'](_0x3d06e0,_0x476c('0x29'));_0x412a9f[_0x476c('0x33')]=_[_0x476c('0x34')](_0x1a15a2[_0x476c('0x33')]);_0x412a9f[_0x476c('0x35')]=_['intersection'](_0x412a9f[_0x476c('0x32')],_0x412a9f[_0x476c('0x33')]);_0x47a603[_0x476c('0x36')]=_['intersection'](_0x412a9f[_0x476c('0x32')],qs[_0x476c('0x37')](_0x1a15a2[_0x476c('0x33')][_0x476c('0x37')]));_0x47a603[_0x476c('0x36')]=_0x47a603[_0x476c('0x36')]['length']?_0x47a603[_0x476c('0x36')]:_0x412a9f[_0x476c('0x32')];if(!_0x1a15a2[_0x476c('0x33')]['hasOwnProperty'](_0x476c('0x38'))){_0x47a603[_0x476c('0x1d')]=qs['limit'](_0x1a15a2[_0x476c('0x33')][_0x476c('0x1d')]);_0x47a603[_0x476c('0x1b')]=qs[_0x476c('0x1b')](_0x1a15a2[_0x476c('0x33')][_0x476c('0x1b')]);}_0x47a603[_0x476c('0x39')]=qs[_0x476c('0x3a')](_0x1a15a2[_0x476c('0x33')][_0x476c('0x3a')]);_0x47a603[_0x476c('0x3b')]=qs[_0x476c('0x35')](_[_0x476c('0x3c')](_0x1a15a2[_0x476c('0x33')],_0x412a9f[_0x476c('0x35')]),_0x3d06e0);if(_0x1a15a2['query']['filter']){_0x47a603[_0x476c('0x3b')]=_['merge'](_0x47a603[_0x476c('0x3b')],{'$or':_[_0x476c('0x2c')](_0x3d06e0,function(_0x3854bd){if(_0x3854bd['type']!==_0x476c('0x3d')){var _0x3ab081={};_0x3ab081[_0x3854bd['name']]={'$like':'%'+_0x1a15a2['query'][_0x476c('0x3e')]+'%'};return _0x3ab081;}})});}_0x47a603=_[_0x476c('0x3f')]({},_0x47a603,_0x1a15a2[_0x476c('0x40')]);var _0x21e608={'where':_0x47a603['where']};return db[_0x476c('0x2d')][_0x476c('0x1e')](_0x21e608)['then'](function(_0x483df6){_0xd4d9b3[_0x476c('0x1e')]=_0x483df6;if(_0x1a15a2['query'][_0x476c('0x41')]){_0x47a603[_0x476c('0x42')]=[{'all':!![]}];}return db[_0x476c('0x2d')][_0x476c('0x43')](_0x47a603);})['then'](function(_0x44e6c2){_0xd4d9b3[_0x476c('0x44')]=_0x44e6c2;return _0xd4d9b3;})[_0x476c('0x25')](respondWithFilteredResult(_0x514eea,_0x47a603))[_0x476c('0x45')](handleError(_0x514eea,null));};exports[_0x476c('0x46')]=function(_0x446173,_0x1cfefc){var _0xf4030d={'raw':![],'where':{'id':_0x446173[_0x476c('0x47')]['id']}},_0x3082ba={};_0x3082ba[_0x476c('0x32')]=_[_0x476c('0x34')](db[_0x476c('0x2d')]['rawAttributes']);_0x3082ba[_0x476c('0x33')]=_['keys'](_0x446173[_0x476c('0x33')]);_0x3082ba[_0x476c('0x35')]=_[_0x476c('0x48')](_0x3082ba[_0x476c('0x32')],_0x3082ba[_0x476c('0x33')]);_0xf4030d[_0x476c('0x36')]=_[_0x476c('0x48')](_0x3082ba[_0x476c('0x32')],qs[_0x476c('0x37')](_0x446173[_0x476c('0x33')][_0x476c('0x37')]));_0xf4030d['attributes']=_0xf4030d[_0x476c('0x36')][_0x476c('0x49')]?_0xf4030d['attributes']:_0x3082ba['model'];if(_0x446173['query'][_0x476c('0x41')]){_0xf4030d['include']=[{'all':!![]}];}_0xf4030d=_[_0x476c('0x3f')]({},_0xf4030d,_0x446173[_0x476c('0x40')]);return db[_0x476c('0x2d')]['find'](_0xf4030d)[_0x476c('0x25')](handleEntityNotFound(_0x1cfefc,null))['then'](respondWithResult(_0x1cfefc,null))[_0x476c('0x45')](handleError(_0x1cfefc,null));};exports[_0x476c('0x4a')]=function(_0x49a140,_0xbff9e){return db[_0x476c('0x2d')]['create'](_0x49a140['body'],{})[_0x476c('0x25')](respondWithResult(_0xbff9e,0xc9))['catch'](handleError(_0xbff9e,null));};exports[_0x476c('0x23')]=function(_0x2c6373,_0x5bc3ac){if(_0x2c6373['body']['id']){delete _0x2c6373[_0x476c('0x4b')]['id'];}return db[_0x476c('0x2d')]['find']({'where':{'id':_0x2c6373[_0x476c('0x47')]['id']}})[_0x476c('0x25')](handleEntityNotFound(_0x5bc3ac,null))[_0x476c('0x25')](saveUpdates(_0x2c6373[_0x476c('0x4b')],null))[_0x476c('0x25')](respondWithResult(_0x5bc3ac,null))['catch'](handleError(_0x5bc3ac,null));};exports['destroy']=function(_0x4f2546,_0x19134b){return db[_0x476c('0x2d')]['find']({'where':{'id':_0x4f2546[_0x476c('0x47')]['id']}})[_0x476c('0x25')](handleEntityNotFound(_0x19134b,null))[_0x476c('0x25')](removeEntity(_0x19134b,null))[_0x476c('0x45')](handleError(_0x19134b,null));};exports[_0x476c('0x4c')]=function(_0x589234,_0x3a3872,_0x52433c){var _0x53144e={};var _0x4ff1ed={};var _0x448041;var _0x297e15;return db[_0x476c('0x2d')][_0x476c('0x4d')]({'where':{'id':_0x589234[_0x476c('0x47')]['id']}})[_0x476c('0x25')](handleEntityNotFound(_0x3a3872,null))[_0x476c('0x25')](function(_0x1ef773){if(_0x1ef773){_0x448041=_0x1ef773;_0x4ff1ed[_0x476c('0x32')]=_[_0x476c('0x34')](db[_0x476c('0x4e')][_0x476c('0x2e')]);_0x4ff1ed[_0x476c('0x33')]=_['keys'](_0x589234[_0x476c('0x33')]);_0x4ff1ed[_0x476c('0x35')]=_[_0x476c('0x48')](_0x4ff1ed[_0x476c('0x32')],_0x4ff1ed['query']);_0x53144e[_0x476c('0x36')]=_[_0x476c('0x48')](_0x4ff1ed[_0x476c('0x32')],qs[_0x476c('0x37')](_0x589234[_0x476c('0x33')]['fields']));_0x53144e['attributes']=_0x53144e[_0x476c('0x36')][_0x476c('0x49')]?_0x53144e[_0x476c('0x36')]:_0x4ff1ed[_0x476c('0x32')];_0x53144e[_0x476c('0x39')]=qs[_0x476c('0x3a')](_0x589234[_0x476c('0x33')][_0x476c('0x3a')]);_0x53144e[_0x476c('0x3b')]=qs[_0x476c('0x35')](_['pick'](_0x589234['query'],_0x4ff1ed[_0x476c('0x35')]));if(_0x589234[_0x476c('0x33')][_0x476c('0x3e')]){_0x53144e[_0x476c('0x3b')]=_[_0x476c('0x3f')](_0x53144e[_0x476c('0x3b')],{'$or':_[_0x476c('0x2c')](_0x53144e['attributes'],function(_0xcaa672){var _0x234c0b={};_0x234c0b[_0xcaa672]={'$like':'%'+_0x589234[_0x476c('0x33')][_0x476c('0x3e')]+'%'};return _0x234c0b;})});}_0x53144e=_[_0x476c('0x3f')]({},_0x53144e,_0x589234['options']);return _0x448041[_0x476c('0x4c')](_0x53144e);}})[_0x476c('0x25')](function(_0x1eef3e){if(_0x1eef3e){_0x297e15=_0x1eef3e[_0x476c('0x49')];if(!_0x589234[_0x476c('0x33')][_0x476c('0x4f')](_0x476c('0x38'))){_0x53144e[_0x476c('0x1d')]=qs[_0x476c('0x1d')](_0x589234[_0x476c('0x33')]['limit']);_0x53144e[_0x476c('0x1b')]=qs[_0x476c('0x1b')](_0x589234[_0x476c('0x33')][_0x476c('0x1b')]);}return _0x448041[_0x476c('0x4c')](_0x53144e);}})['then'](function(_0x1da5d4){if(_0x1da5d4){return _0x1da5d4?{'count':_0x297e15,'rows':_0x1da5d4}:null;}})[_0x476c('0x25')](respondWithResult(_0x3a3872,null))[_0x476c('0x45')](handleError(_0x3a3872,null));};exports[_0x476c('0x50')]=function(_0x39f6cf,_0x4092f5,_0x5314f8){if(_0x39f6cf[_0x476c('0x4b')]['id']){delete _0x39f6cf['body']['id'];}return db[_0x476c('0x2d')][_0x476c('0x4d')]({'where':{'id':_0x39f6cf[_0x476c('0x47')]['id']}})[_0x476c('0x25')](handleEntityNotFound(_0x4092f5,null))[_0x476c('0x25')](function(_0x3d6440){if(_0x3d6440){_0x39f6cf[_0x476c('0x4b')][_0x476c('0x51')]=_0x3d6440['id'];_0x39f6cf[_0x476c('0x4b')]['Subjects']=integrations['getSubjects'](_0x39f6cf['body'][_0x476c('0x52')],_0x39f6cf[_0x476c('0x4b')][_0x476c('0x30')]);_0x39f6cf[_0x476c('0x4b')]['Descriptions']=integrations[_0x476c('0x53')](_0x39f6cf[_0x476c('0x4b')][_0x476c('0x52')],_0x39f6cf['body'][_0x476c('0x30')]);return db[_0x476c('0x4e')]['create'](_0x39f6cf[_0x476c('0x4b')],{'include':[{'model':db[_0x476c('0x54')],'as':_0x476c('0x55')},{'model':db[_0x476c('0x54')],'as':_0x476c('0x56')}]});}return null;})[_0x476c('0x25')](respondWithResult(_0x4092f5,null))[_0x476c('0x45')](handleError(_0x4092f5,null));};function getAccessToken(_0x49b01b){return new Promise(function(_0x248a2c,_0xe646f){var _0x17f3fd;switch(_0x49b01b[_0x476c('0x57')]){case'US':_0x17f3fd=_0x476c('0x58');break;case'AU':_0x17f3fd=_0x476c('0x59');break;case'EU':_0x17f3fd='https://accounts.zoho.eu';break;case'IN':_0x17f3fd=_0x476c('0x5a');break;case'CN':_0x17f3fd=_0x476c('0x5b');break;default:_0x17f3fd=_0x476c('0x5c');break;}var _0x5adad4={'method':_0x476c('0x5d'),'uri':_0x17f3fd+_0x476c('0x5e'),'qs':{'refresh_token':_0x49b01b[_0x476c('0x5f')],'client_id':_0x49b01b['clientId'],'client_secret':_0x49b01b['clientSecret'],'grant_type':_0x476c('0x60')},'json':!![]};return rp(_0x5adad4)['then'](function(_0x18b512){if(_0x18b512[_0x476c('0x61')]){_0x248a2c(_0x18b512['access_token']);}else{_0xe646f(_0x476c('0x62'));}})['catch'](function(_0x3415b7){_0xe646f(_0x3415b7);});});}exports[_0x476c('0x63')]=function(_0x1364e3,_0x378a0c,_0x2341c5){var _0x378419,_0x570549,_0x56dbf3,_0x377447,_0x586314;return db['ZohoAccount']['findOne']({'where':{'id':_0x1364e3[_0x476c('0x47')]['id']},'attributes':['id','host',_0x476c('0x57'),_0x476c('0x64'),_0x476c('0x65'),'serverUrl',_0x476c('0x66'),_0x476c('0x5f')]})[_0x476c('0x25')](handleEntityNotFound(_0x378a0c,null))['then'](function(_0x5f441a){_0x586314=_0x5f441a;_0x378419=_0x586314['host'];_0x570549=_0x378419===_0x476c('0x67')?'eu':_0x476c('0x68');_0x56dbf3=_0x586314[_0x476c('0x69')];var _0x35a8ac=_0x56dbf3[_0x476c('0x6a')](-0x1);if(_0x35a8ac==='/'||_0x35a8ac==='\x5c'||_0x35a8ac===':'){_0x56dbf3=_0x56dbf3[_0x476c('0x6b')](0x0,_0x56dbf3[_0x476c('0x6c')](_0x35a8ac));}if(!_0x586314[_0x476c('0x5f')]){throw new Error(_0x476c('0x6d'));}return getAccessToken(_0x586314);})[_0x476c('0x25')](function(_0x3dd183){if(_0x3dd183){return rp({'method':_0x476c('0x6e'),'uri':util[_0x476c('0x6f')](_0x476c('0x70'),_0x570549),'qs':{'module':_0x476c('0x71')},'headers':{'Authorization':_0x476c('0x72')+_0x3dd183},'json':!![]});}})[_0x476c('0x25')](function(_0x3b12ea){if(_0x3b12ea){if(_0x3b12ea['response']&&_0x3b12ea[_0x476c('0x73')][_0x476c('0x27')]){throw new Error(_0x3b12ea[_0x476c('0x73')][_0x476c('0x27')][_0x476c('0x74')]);}var _0x592d60=[];var _0x284b7f=[];var _0x262820=[_0x476c('0x75'),_0x476c('0x76'),'Description','WhoId','Call_Duration',_0x476c('0x77'),_0x476c('0x78'),_0x476c('0x79')];_0x284b7f=_[_0x476c('0x7a')](_0x3b12ea[_0x476c('0x37')],function(_0xbca13a){return _0x262820['includes'](_0xbca13a[_0x476c('0x7b')]);});for(var _0x3d6588=0x0;_0x3d6588<_0x284b7f[_0x476c('0x49')];_0x3d6588++){if(_0x284b7f[_0x3d6588]['system_mandatory']===![]){_0x592d60[_0x476c('0x7c')]({'id':_0x284b7f[_0x3d6588]['id'],'name':_0x284b7f[_0x3d6588][_0x476c('0x7d')],'custom':_0x284b7f[_0x3d6588][_0x476c('0x7e')],'options':_0x284b7f[_0x3d6588]['data_type']==='picklist'&&_0x284b7f[_0x3d6588][_0x476c('0x7f')]['length']>-0x1?_[_0x476c('0x2c')](_0x284b7f[_0x3d6588][_0x476c('0x7f')],function(_0x2c4b91){return{'name':_0x2c4b91,'value':_0x2c4b91};}):[]});}}return{'count':_0x592d60[_0x476c('0x49')],'rows':_0x592d60};}else{return{'count':0x0,'rows':[]};}})[_0x476c('0x25')](respondWithResult(_0x378a0c,null))['catch'](function(_0x30632e){var _0x3b7ad5=_0x1364e3[_0x476c('0x33')]['test']?0x1f4:_0x30632e[_0x476c('0x80')]||0x1f4;logger[_0x476c('0x27')](_0x476c('0x81'),'getFields',_0x3b7ad5,JSON[_0x476c('0x82')](_0x30632e));delete _0x30632e[_0x476c('0x29')];if(_0x3b7ad5===0x191){_0x3b7ad5=0x190;}_0x378a0c[_0x476c('0x19')](_0x3b7ad5)[_0x476c('0x2a')](_0x1364e3[_0x476c('0x33')][_0x476c('0x83')]?{'message':_0x476c('0x84'),'statusCode':_0x30632e[_0x476c('0x80')]}:_0x30632e);});};
\ No newline at end of file
index 2d73cbf..39c1430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2895=['catch','error','info','name','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','changed','zone','serverUrl','clientId','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','authorization_code','clientSecret','code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x2895,0x82));var _0x5289=function(_0x59c108,_0x441d0a){_0x59c108=_0x59c108-0x0;var _0x3a2a09=_0x2895[_0x59c108];return _0x3a2a09;};'use strict';var _=require(_0x5289('0x0'));var util=require(_0x5289('0x1'));var logger=require(_0x5289('0x2'))('api');var moment=require(_0x5289('0x3'));var BPromise=require(_0x5289('0x4'));var rp=require(_0x5289('0x5'));var fs=require('fs');var path=require(_0x5289('0x6'));var rimraf=require('rimraf');var config=require(_0x5289('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x5289('0x8'));module[_0x5289('0x9')]=function(_0x172b41,_0x38bcf2){return _0x172b41[_0x5289('0xa')](_0x5289('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b8af6,_0x201e29,_0x1dc585){if(_0x2b8af6[_0x5289('0xc')](_0x5289('0xd'))||_0x2b8af6[_0x5289('0xc')](_0x5289('0xe'))||_0x2b8af6['changed'](_0x5289('0xf'))||_0x2b8af6[_0x5289('0xc')]('clientSecret')||_0x2b8af6[_0x5289('0xc')]('code')||_0x2b8af6['changed'](_0x5289('0x10'))){var _0x5c71e3,_0x4c2b68;_0x5c71e3=_0x2b8af6[_0x5289('0xe')];var _0x343191=_0x5c71e3[_0x5289('0x11')](-0x1);if(_0x343191==='/'||_0x343191==='\x5c'||_0x343191===':'){_0x5c71e3=_0x5c71e3[_0x5289('0x12')](0x0,_0x5c71e3[_0x5289('0x13')](_0x343191));}switch(_0x2b8af6['zone']){case'US':_0x4c2b68=_0x5289('0x14');break;case'AU':_0x4c2b68=_0x5289('0x15');break;case'IN':_0x4c2b68=_0x5289('0x16');break;case'CN':_0x4c2b68=_0x5289('0x17');break;default:_0x4c2b68='https://accounts.zoho.eu';break;}var _0x11ec93={'method':_0x5289('0x18'),'uri':_0x4c2b68+_0x5289('0x19'),'form':{'grant_type':_0x5289('0x1a'),'client_id':_0x2b8af6[_0x5289('0xf')],'client_secret':_0x2b8af6[_0x5289('0x1b')],'redirect_uri':_0x2b8af6['serverUrl'],'code':_0x2b8af6[_0x5289('0x1c')]},'headers':{'Content-Type':_0x5289('0x1d')}};return rp(_0x11ec93)[_0x5289('0x1e')](function(_0xb64ea4){var _0x1a213e=JSON[_0x5289('0x1f')](_0xb64ea4);if(_0x1a213e[_0x5289('0x20')]){_0x2b8af6[_0x5289('0x21')]=_0x1a213e[_0x5289('0x20')];logger['info'](util[_0x5289('0x22')](_0x5289('0x23'),_0x2b8af6['name'],_0x2b8af6['id']));}else{logger['error'](util[_0x5289('0x22')](_0x5289('0x24'),_0x2b8af6['name'],_0x2b8af6['id']),util[_0x5289('0x25')](_0x1a213e,{'showHidden':![],'depth':null}));}return _0x1dc585(null,_0x201e29);})[_0x5289('0x26')](function(_0x459828){logger[_0x5289('0x27')](util[_0x5289('0x22')](_0x5289('0x24'),_0x2b8af6['name'],_0x2b8af6['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x1dc585(_0x459828);});}else{return _0x1dc585(null,_0x201e29);}},'beforeUpdate':function(_0x2215a8,_0x2b0b33,_0x15cae1){if(_0x2215a8['changed'](_0x5289('0xd'))||_0x2215a8['changed'](_0x5289('0xe'))||_0x2215a8[_0x5289('0xc')]('clientId')||_0x2215a8[_0x5289('0xc')]('clientSecret')||_0x2215a8[_0x5289('0xc')](_0x5289('0x1c'))||_0x2215a8[_0x5289('0xc')](_0x5289('0x10'))){var _0xd65dc1,_0x21a210;_0xd65dc1=_0x2215a8[_0x5289('0xe')];var _0x425312=_0xd65dc1[_0x5289('0x11')](-0x1);if(_0x425312==='/'||_0x425312==='\x5c'||_0x425312===':'){_0xd65dc1=_0xd65dc1[_0x5289('0x12')](0x0,_0xd65dc1['lastIndexOf'](_0x425312));}switch(_0x2215a8[_0x5289('0xd')]){case'US':_0x21a210=_0x5289('0x14');break;case'AU':_0x21a210='https://accounts.zoho.com.au';break;case'IN':_0x21a210=_0x5289('0x16');break;case'CN':_0x21a210='https://accounts.zoho.com.cn';break;default:_0x21a210='https://accounts.zoho.eu';break;}var _0x1cd200={'method':'POST','uri':_0x21a210+_0x5289('0x19'),'form':{'grant_type':_0x5289('0x1a'),'client_id':_0x2215a8['clientId'],'client_secret':_0x2215a8[_0x5289('0x1b')],'redirect_uri':_0x2215a8[_0x5289('0xe')],'code':_0x2215a8[_0x5289('0x1c')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x1cd200)[_0x5289('0x1e')](function(_0x253d9a){var _0x165efd=JSON['parse'](_0x253d9a);if(_0x165efd[_0x5289('0x20')]){_0x2215a8[_0x5289('0x21')]=_0x165efd[_0x5289('0x20')];logger[_0x5289('0x28')](util[_0x5289('0x22')](_0x5289('0x23'),_0x2215a8[_0x5289('0x29')],_0x2215a8['id']));}else{logger[_0x5289('0x27')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2215a8[_0x5289('0x29')],_0x2215a8['id']),util[_0x5289('0x25')](_0x165efd,{'showHidden':![],'depth':null}));}return _0x15cae1(null,_0x2b0b33);})[_0x5289('0x26')](function(_0x23b1e6){logger[_0x5289('0x27')](util[_0x5289('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2215a8['name'],_0x2215a8['id']),util[_0x5289('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x15cae1(_0x23b1e6);});}else{return _0x15cae1(null,_0x2b0b33);}}}});};
\ No newline at end of file
+var _0x1f33=['bluebird','request-promise','path','../../config/environment','./intZohoAccount.attributes','exports','define','ZohoAccount','changed','zone','clientId','code','slice','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','serverUrl','application/x-www-form-urlencoded','then','parse','refresh_token','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','clientSecret','host','substring','https://accounts.zoho.com.au','lodash','util','api','moment'];(function(_0x5dc6f6,_0x6de541){var _0x3ef619=function(_0x5ace84){while(--_0x5ace84){_0x5dc6f6['push'](_0x5dc6f6['shift']());}};_0x3ef619(++_0x6de541);}(_0x1f33,0x1ca));var _0x31f3=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x1f33[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0x31f3('0x0'));var util=require(_0x31f3('0x1'));var logger=require('../../config/logger')(_0x31f3('0x2'));var moment=require(_0x31f3('0x3'));var BPromise=require(_0x31f3('0x4'));var rp=require(_0x31f3('0x5'));var fs=require('fs');var path=require(_0x31f3('0x6'));var rimraf=require('rimraf');var config=require(_0x31f3('0x7'));var attributes=require(_0x31f3('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x31f3('0x9')]=function(_0x2a4186,_0x269762){return _0x2a4186[_0x31f3('0xa')](_0x31f3('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2d7d8b,_0x4ec4ac,_0xc25cd8){if(_0x2d7d8b[_0x31f3('0xc')](_0x31f3('0xd'))||_0x2d7d8b[_0x31f3('0xc')]('serverUrl')||_0x2d7d8b[_0x31f3('0xc')](_0x31f3('0xe'))||_0x2d7d8b[_0x31f3('0xc')]('clientSecret')||_0x2d7d8b[_0x31f3('0xc')](_0x31f3('0xf'))||_0x2d7d8b['changed']('host')){var _0x2e5c42,_0x3738e9;_0x2e5c42=_0x2d7d8b['serverUrl'];var _0x2eca7a=_0x2e5c42[_0x31f3('0x10')](-0x1);if(_0x2eca7a==='/'||_0x2eca7a==='\x5c'||_0x2eca7a===':'){_0x2e5c42=_0x2e5c42['substring'](0x0,_0x2e5c42[_0x31f3('0x11')](_0x2eca7a));}switch(_0x2d7d8b[_0x31f3('0xd')]){case'US':_0x3738e9=_0x31f3('0x12');break;case'AU':_0x3738e9='https://accounts.zoho.com.au';break;case'IN':_0x3738e9=_0x31f3('0x13');break;case'CN':_0x3738e9=_0x31f3('0x14');break;default:_0x3738e9=_0x31f3('0x15');break;}var _0x21438e={'method':_0x31f3('0x16'),'uri':_0x3738e9+_0x31f3('0x17'),'form':{'grant_type':_0x31f3('0x18'),'client_id':_0x2d7d8b[_0x31f3('0xe')],'client_secret':_0x2d7d8b['clientSecret'],'redirect_uri':_0x2d7d8b[_0x31f3('0x19')],'code':_0x2d7d8b[_0x31f3('0xf')]},'headers':{'Content-Type':_0x31f3('0x1a')}};return rp(_0x21438e)[_0x31f3('0x1b')](function(_0x1a4bd5){var _0x458a81=JSON[_0x31f3('0x1c')](_0x1a4bd5);if(_0x458a81['refresh_token']){_0x2d7d8b['refreshToken']=_0x458a81[_0x31f3('0x1d')];logger[_0x31f3('0x1e')](util['format'](_0x31f3('0x1f'),_0x2d7d8b[_0x31f3('0x20')],_0x2d7d8b['id']));}else{logger[_0x31f3('0x21')](util[_0x31f3('0x22')](_0x31f3('0x23'),_0x2d7d8b[_0x31f3('0x20')],_0x2d7d8b['id']),util[_0x31f3('0x24')](_0x458a81,{'showHidden':![],'depth':null}));}return _0xc25cd8(null,_0x4ec4ac);})[_0x31f3('0x25')](function(_0x4e18d2){logger[_0x31f3('0x21')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2d7d8b[_0x31f3('0x20')],_0x2d7d8b['id']),util[_0x31f3('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0xc25cd8(_0x4e18d2);});}else{return _0xc25cd8(null,_0x4ec4ac);}},'beforeUpdate':function(_0x3ba254,_0xf1aacf,_0x4a05ab){if(_0x3ba254[_0x31f3('0xc')](_0x31f3('0xd'))||_0x3ba254[_0x31f3('0xc')](_0x31f3('0x19'))||_0x3ba254[_0x31f3('0xc')](_0x31f3('0xe'))||_0x3ba254[_0x31f3('0xc')](_0x31f3('0x26'))||_0x3ba254['changed']('code')||_0x3ba254[_0x31f3('0xc')](_0x31f3('0x27'))){var _0xcabef5,_0x44b7bc;_0xcabef5=_0x3ba254[_0x31f3('0x19')];var _0x1e30f1=_0xcabef5[_0x31f3('0x10')](-0x1);if(_0x1e30f1==='/'||_0x1e30f1==='\x5c'||_0x1e30f1===':'){_0xcabef5=_0xcabef5[_0x31f3('0x28')](0x0,_0xcabef5[_0x31f3('0x11')](_0x1e30f1));}switch(_0x3ba254[_0x31f3('0xd')]){case'US':_0x44b7bc=_0x31f3('0x12');break;case'AU':_0x44b7bc=_0x31f3('0x29');break;case'IN':_0x44b7bc=_0x31f3('0x13');break;case'CN':_0x44b7bc=_0x31f3('0x14');break;default:_0x44b7bc='https://accounts.zoho.eu';break;}var _0x372299={'method':_0x31f3('0x16'),'uri':_0x44b7bc+_0x31f3('0x17'),'form':{'grant_type':_0x31f3('0x18'),'client_id':_0x3ba254[_0x31f3('0xe')],'client_secret':_0x3ba254['clientSecret'],'redirect_uri':_0x3ba254[_0x31f3('0x19')],'code':_0x3ba254[_0x31f3('0xf')]},'headers':{'Content-Type':_0x31f3('0x1a')}};return rp(_0x372299)[_0x31f3('0x1b')](function(_0x34c242){var _0x4d6453=JSON[_0x31f3('0x1c')](_0x34c242);if(_0x4d6453['refresh_token']){_0x3ba254['refreshToken']=_0x4d6453[_0x31f3('0x1d')];logger['info'](util[_0x31f3('0x22')](_0x31f3('0x1f'),_0x3ba254[_0x31f3('0x20')],_0x3ba254['id']));}else{logger[_0x31f3('0x21')](util[_0x31f3('0x22')](_0x31f3('0x23'),_0x3ba254[_0x31f3('0x20')],_0x3ba254['id']),util[_0x31f3('0x24')](_0x4d6453,{'showHidden':![],'depth':null}));}return _0x4a05ab(null,_0xf1aacf);})[_0x31f3('0x25')](function(_0x2cc1fc){logger['error'](util[_0x31f3('0x22')](_0x31f3('0x23'),_0x3ba254['name'],_0x3ba254['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x4a05ab(_0x2cc1fc);});}else{return _0x4a05ab(null,_0xf1aacf);}}}});};
\ No newline at end of file
index 74959d5..416e695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd070=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','findAll','raw','options','limit','include','model','map','attributes','GetZohoAccount','ShowZohoAccount','ZohoAccount','find','lodash','moment'];(function(_0x334651,_0x6e99f6){var _0x29657c=function(_0x420a94){while(--_0x420a94){_0x334651['push'](_0x334651['shift']());}};_0x29657c(++_0x6e99f6);}(_0xd070,0x8e));var _0x0d07=function(_0x13b659,_0x34ff84){_0x13b659=_0x13b659-0x0;var _0x3f6364=_0xd070[_0x13b659];return _0x3f6364;};'use strict';var _=require(_0x0d07('0x0'));var util=require('util');var moment=require(_0x0d07('0x1'));var BPromise=require(_0x0d07('0x2'));var rs=require(_0x0d07('0x3'));var fs=require('fs');var Redis=require(_0x0d07('0x4'));var db=require(_0x0d07('0x5'))['db'];var utils=require(_0x0d07('0x6'));var logger=require(_0x0d07('0x7'))(_0x0d07('0x8'));var config=require(_0x0d07('0x9'));var jayson=require(_0x0d07('0xa'));var client=jayson[_0x0d07('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13d75a,_0x5a4366,_0x20fd56){return new BPromise(function(_0x8c16d8,_0x1f989e){return client[_0x0d07('0xc')](_0x13d75a,_0x20fd56)[_0x0d07('0xd')](function(_0xc5b04d){logger[_0x0d07('0xe')](_0x0d07('0xf'),_0x5a4366,_0x0d07('0x10'));logger[_0x0d07('0x11')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x5a4366,'request\x20sent',JSON[_0x0d07('0x12')](_0xc5b04d));if(_0xc5b04d[_0x0d07('0x13')]){if(_0xc5b04d['error'][_0x0d07('0x14')]===0x1f4){logger['error'](_0x0d07('0xf'),_0x5a4366,_0xc5b04d[_0x0d07('0x13')]['message']);return _0x1f989e(_0xc5b04d[_0x0d07('0x13')][_0x0d07('0x15')]);}logger[_0x0d07('0x13')](_0x0d07('0xf'),_0x5a4366,_0xc5b04d[_0x0d07('0x13')][_0x0d07('0x15')]);return _0x8c16d8(_0xc5b04d['error'][_0x0d07('0x15')]);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0x5a4366,_0x0d07('0x10'));_0x8c16d8(_0xc5b04d[_0x0d07('0x16')][_0x0d07('0x15')]);}})[_0x0d07('0x17')](function(_0x220203){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x5a4366,_0x220203);_0x1f989e(_0x220203);});});}exports['GetZohoAccount']=function(_0x187df2){var _0x312015=this;return new Promise(function(_0x52cb4b,_0x410ad2){return db['ZohoAccount'][_0x0d07('0x18')]({'raw':_0x187df2['options']?_0x187df2['options'][_0x0d07('0x19')]===undefined?!![]:![]:!![],'where':_0x187df2['options']?_0x187df2[_0x0d07('0x1a')]['where']||null:null,'attributes':_0x187df2[_0x0d07('0x1a')]?_0x187df2['options']['attributes']||null:null,'limit':_0x187df2[_0x0d07('0x1a')]?_0x187df2[_0x0d07('0x1a')][_0x0d07('0x1b')]||null:null,'include':_0x187df2['options']?_0x187df2[_0x0d07('0x1a')]['include']?_['map'](_0x187df2[_0x0d07('0x1a')][_0x0d07('0x1c')],function(_0xd42245){return{'model':db[_0xd42245[_0x0d07('0x1d')]],'as':_0xd42245['as'],'attributes':_0xd42245['attributes'],'include':_0xd42245['include']?_[_0x0d07('0x1e')](_0xd42245['include'],function(_0x43c7ac){return{'model':db[_0x43c7ac[_0x0d07('0x1d')]],'as':_0x43c7ac['as'],'attributes':_0x43c7ac['attributes'],'include':_0x43c7ac[_0x0d07('0x1c')]?_['map'](_0x43c7ac['include'],function(_0x5da34f){return{'model':db[_0x5da34f[_0x0d07('0x1d')]],'as':_0x5da34f['as'],'attributes':_0x5da34f[_0x0d07('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0d07('0xd')](function(_0x25633b){logger[_0x0d07('0xe')](_0x0d07('0x20'),_0x187df2);logger[_0x0d07('0x11')](_0x0d07('0x20'),_0x187df2,JSON['stringify'](_0x25633b));_0x52cb4b(_0x25633b);})['catch'](function(_0x282468){logger[_0x0d07('0x13')](_0x0d07('0x20'),_0x282468[_0x0d07('0x15')],_0x187df2);_0x410ad2(_0x312015[_0x0d07('0x13')](0x1f4,_0x282468[_0x0d07('0x15')]));});});};exports[_0x0d07('0x21')]=function(_0x314916){var _0x240dc0=this;return new Promise(function(_0xa0c281,_0x3d0663){return db[_0x0d07('0x22')][_0x0d07('0x23')]({'raw':_0x314916[_0x0d07('0x1a')]?_0x314916[_0x0d07('0x1a')][_0x0d07('0x19')]===undefined?!![]:![]:!![],'where':_0x314916[_0x0d07('0x1a')]?_0x314916[_0x0d07('0x1a')]['where']||null:null,'attributes':_0x314916['options']?_0x314916['options'][_0x0d07('0x1f')]||null:null,'include':_0x314916[_0x0d07('0x1a')]?_0x314916['options'][_0x0d07('0x1c')]?_[_0x0d07('0x1e')](_0x314916[_0x0d07('0x1a')][_0x0d07('0x1c')],function(_0x5e847a){return{'model':db[_0x5e847a[_0x0d07('0x1d')]],'as':_0x5e847a['as'],'attributes':_0x5e847a['attributes'],'include':_0x5e847a[_0x0d07('0x1c')]?_['map'](_0x5e847a['include'],function(_0x63f32c){return{'model':db[_0x63f32c['model']],'as':_0x63f32c['as'],'attributes':_0x63f32c['attributes'],'include':_0x63f32c[_0x0d07('0x1c')]?_[_0x0d07('0x1e')](_0x63f32c[_0x0d07('0x1c')],function(_0x3b6af9){return{'model':db[_0x3b6af9[_0x0d07('0x1d')]],'as':_0x3b6af9['as'],'attributes':_0x3b6af9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5547bb){logger[_0x0d07('0xe')](_0x0d07('0x21'),_0x314916);logger[_0x0d07('0x11')](_0x0d07('0x21'),_0x314916,JSON[_0x0d07('0x12')](_0x5547bb));_0xa0c281(_0x5547bb);})[_0x0d07('0x17')](function(_0x3ab9d6){logger[_0x0d07('0x13')](_0x0d07('0x21'),_0x3ab9d6['message'],_0x314916);_0x3d0663(_0x240dc0['error'](0x1f4,_0x3ab9d6[_0x0d07('0x15')]));});});};
\ No newline at end of file
+var _0x0137=['model','ShowZohoAccount','find','where','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetZohoAccount','ZohoAccount','findAll','raw','options','attributes','limit','include','map'];(function(_0xb5f7fe,_0x24f5a1){var _0x428c24=function(_0x5c6172){while(--_0x5c6172){_0xb5f7fe['push'](_0xb5f7fe['shift']());}};_0x428c24(++_0x24f5a1);}(_0x0137,0x1d8));var _0x7013=function(_0x357702,_0x203968){_0x357702=_0x357702-0x0;var _0x4dd94a=_0x0137[_0x357702];return _0x4dd94a;};'use strict';var _=require(_0x7013('0x0'));var util=require(_0x7013('0x1'));var moment=require(_0x7013('0x2'));var BPromise=require(_0x7013('0x3'));var rs=require(_0x7013('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7013('0x5'))['db'];var utils=require(_0x7013('0x6'));var logger=require(_0x7013('0x7'))(_0x7013('0x8'));var config=require(_0x7013('0x9'));var jayson=require(_0x7013('0xa'));var client=jayson['client'][_0x7013('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x346a4d,_0x4e2460,_0x16c0c8){return new BPromise(function(_0x16dae3,_0x1b748c){return client['request'](_0x346a4d,_0x16c0c8)[_0x7013('0xc')](function(_0x551b8a){logger[_0x7013('0xd')](_0x7013('0xe'),_0x4e2460,'request\x20sent');logger[_0x7013('0xf')](_0x7013('0x10'),_0x4e2460,_0x7013('0x11'),JSON[_0x7013('0x12')](_0x551b8a));if(_0x551b8a[_0x7013('0x13')]){if(_0x551b8a[_0x7013('0x13')]['code']===0x1f4){logger[_0x7013('0x13')](_0x7013('0xe'),_0x4e2460,_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);return _0x1b748c(_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);}logger[_0x7013('0x13')](_0x7013('0xe'),_0x4e2460,_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);return _0x16dae3(_0x551b8a[_0x7013('0x13')]['message']);}else{logger['info'](_0x7013('0xe'),_0x4e2460,_0x7013('0x11'));_0x16dae3(_0x551b8a[_0x7013('0x15')][_0x7013('0x14')]);}})[_0x7013('0x16')](function(_0x48614e){logger['error'](_0x7013('0xe'),_0x4e2460,_0x48614e);_0x1b748c(_0x48614e);});});}exports[_0x7013('0x17')]=function(_0x161a19){var _0x1b68b0=this;return new Promise(function(_0x363cbc,_0x4eee5e){return db[_0x7013('0x18')][_0x7013('0x19')]({'raw':_0x161a19['options']?_0x161a19['options'][_0x7013('0x1a')]===undefined?!![]:![]:!![],'where':_0x161a19[_0x7013('0x1b')]?_0x161a19[_0x7013('0x1b')]['where']||null:null,'attributes':_0x161a19[_0x7013('0x1b')]?_0x161a19['options'][_0x7013('0x1c')]||null:null,'limit':_0x161a19[_0x7013('0x1b')]?_0x161a19[_0x7013('0x1b')][_0x7013('0x1d')]||null:null,'include':_0x161a19[_0x7013('0x1b')]?_0x161a19[_0x7013('0x1b')][_0x7013('0x1e')]?_[_0x7013('0x1f')](_0x161a19[_0x7013('0x1b')][_0x7013('0x1e')],function(_0x2e6e3d){return{'model':db[_0x2e6e3d[_0x7013('0x20')]],'as':_0x2e6e3d['as'],'attributes':_0x2e6e3d[_0x7013('0x1c')],'include':_0x2e6e3d[_0x7013('0x1e')]?_[_0x7013('0x1f')](_0x2e6e3d[_0x7013('0x1e')],function(_0x1c11bf){return{'model':db[_0x1c11bf[_0x7013('0x20')]],'as':_0x1c11bf['as'],'attributes':_0x1c11bf[_0x7013('0x1c')],'include':_0x1c11bf[_0x7013('0x1e')]?_[_0x7013('0x1f')](_0x1c11bf['include'],function(_0x270e78){return{'model':db[_0x270e78[_0x7013('0x20')]],'as':_0x270e78['as'],'attributes':_0x270e78[_0x7013('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x15c3eb){logger['info'](_0x7013('0x17'),_0x161a19);logger[_0x7013('0xf')]('GetZohoAccount',_0x161a19,JSON[_0x7013('0x12')](_0x15c3eb));_0x363cbc(_0x15c3eb);})['catch'](function(_0xeb8cd5){logger[_0x7013('0x13')](_0x7013('0x17'),_0xeb8cd5['message'],_0x161a19);_0x4eee5e(_0x1b68b0[_0x7013('0x13')](0x1f4,_0xeb8cd5[_0x7013('0x14')]));});});};exports[_0x7013('0x21')]=function(_0xe8090){var _0x5ef79c=this;return new Promise(function(_0x44ab0b,_0x4764df){return db[_0x7013('0x18')][_0x7013('0x22')]({'raw':_0xe8090['options']?_0xe8090['options'][_0x7013('0x1a')]===undefined?!![]:![]:!![],'where':_0xe8090[_0x7013('0x1b')]?_0xe8090['options'][_0x7013('0x23')]||null:null,'attributes':_0xe8090[_0x7013('0x1b')]?_0xe8090[_0x7013('0x1b')][_0x7013('0x1c')]||null:null,'include':_0xe8090[_0x7013('0x1b')]?_0xe8090[_0x7013('0x1b')]['include']?_['map'](_0xe8090[_0x7013('0x1b')][_0x7013('0x1e')],function(_0x15ed20){return{'model':db[_0x15ed20[_0x7013('0x20')]],'as':_0x15ed20['as'],'attributes':_0x15ed20[_0x7013('0x1c')],'include':_0x15ed20['include']?_[_0x7013('0x1f')](_0x15ed20['include'],function(_0x53e2ff){return{'model':db[_0x53e2ff['model']],'as':_0x53e2ff['as'],'attributes':_0x53e2ff['attributes'],'include':_0x53e2ff[_0x7013('0x1e')]?_['map'](_0x53e2ff[_0x7013('0x1e')],function(_0x56a133){return{'model':db[_0x56a133[_0x7013('0x20')]],'as':_0x56a133['as'],'attributes':_0x56a133[_0x7013('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7013('0xc')](function(_0x4bfa50){logger[_0x7013('0xd')](_0x7013('0x21'),_0xe8090);logger[_0x7013('0xf')](_0x7013('0x21'),_0xe8090,JSON[_0x7013('0x12')](_0x4bfa50));_0x44ab0b(_0x4bfa50);})[_0x7013('0x16')](function(_0x36dc43){logger[_0x7013('0x13')](_0x7013('0x21'),_0x36dc43['message'],_0xe8090);_0x4764df(_0x5ef79c['error'](0x1f4,_0x36dc43[_0x7013('0x14')]));});});};
\ No newline at end of file
index 7998e51..fa74118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7066=['/:id','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_0x7066,0x1ad));var _0x6706=function(_0x5b9e87,_0x29ba74){_0x5b9e87=_0x5b9e87-0x0;var _0x7a30c5=_0x7066[_0x5b9e87];return _0x7a30c5;};'use strict';var multer=require('multer');var util=require(_0x6706('0x0'));var path=require(_0x6706('0x1'));var timeout=require(_0x6706('0x2'));var express=require(_0x6706('0x3'));var router=express[_0x6706('0x4')]();var fs_extra=require(_0x6706('0x5'));var auth=require(_0x6706('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6706('0x7'));var controller=require(_0x6706('0x8'));router[_0x6706('0x9')]('/',auth[_0x6706('0xa')](),controller['index']);router[_0x6706('0x9')](_0x6706('0xb'),auth[_0x6706('0xa')](),controller[_0x6706('0xc')]);router['get'](_0x6706('0xd'),auth[_0x6706('0xa')](),controller['getFields']);router[_0x6706('0x9')](_0x6706('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router['get'](_0x6706('0xf'),auth[_0x6706('0xa')](),controller[_0x6706('0x10')]);router['post']('/',auth[_0x6706('0xa')](),controller[_0x6706('0x11')]);router[_0x6706('0x12')](_0x6706('0xb'),auth[_0x6706('0xa')](),controller[_0x6706('0x13')]);router[_0x6706('0x14')](_0x6706('0xb'),auth[_0x6706('0xa')](),controller[_0x6706('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd1d9=['express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','/:id','update','delete','destroy','exports','util','path'];(function(_0x3634bd,_0x4d8d91){var _0x4fe85f=function(_0x454962){while(--_0x454962){_0x3634bd['push'](_0x3634bd['shift']());}};_0x4fe85f(++_0x4d8d91);}(_0xd1d9,0x178));var _0x9d1d=function(_0x33fbfd,_0x547b70){_0x33fbfd=_0x33fbfd-0x0;var _0x520785=_0xd1d9[_0x33fbfd];return _0x520785;};'use strict';var multer=require('multer');var util=require(_0x9d1d('0x0'));var path=require(_0x9d1d('0x1'));var timeout=require('connect-timeout');var express=require(_0x9d1d('0x2'));var router=express[_0x9d1d('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9d1d('0x4'));var config=require(_0x9d1d('0x5'));var controller=require('./intZohoConfiguration.controller');router[_0x9d1d('0x6')]('/',auth[_0x9d1d('0x7')](),controller['index']);router[_0x9d1d('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x9d1d('0x8')]);router[_0x9d1d('0x6')]('/:id/fields',auth[_0x9d1d('0x7')](),controller[_0x9d1d('0x9')]);router[_0x9d1d('0x6')](_0x9d1d('0xa'),auth[_0x9d1d('0x7')](),controller[_0x9d1d('0xb')]);router[_0x9d1d('0x6')](_0x9d1d('0xc'),auth[_0x9d1d('0x7')](),controller['getDescriptions']);router[_0x9d1d('0xd')]('/',auth[_0x9d1d('0x7')](),controller[_0x9d1d('0xe')]);router[_0x9d1d('0xf')](_0x9d1d('0x10'),auth[_0x9d1d('0x7')](),controller[_0x9d1d('0x11')]);router[_0x9d1d('0x12')](_0x9d1d('0x10'),auth['isAuthenticated'](),controller[_0x9d1d('0x13')]);module[_0x9d1d('0x14')]=router;
\ No newline at end of file
index 160708d..84f29d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d8c=['ENUM','contact_lead','contact','sequelize','exports','lead'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5d8c,0x87));var _0xc5d8=function(_0xe5cb9a,_0x5c4772){_0xe5cb9a=_0xe5cb9a-0x0;var _0x4c67c6=_0x5d8c[_0xe5cb9a];return _0x4c67c6;};'use strict';var Sequelize=require(_0xc5d8('0x0'));module[_0xc5d8('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize['ENUM'](_0xc5d8('0x2'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xc5d8('0x3')](_0xc5d8('0x4'),_0xc5d8('0x5'),'lead'),'defaultValue':_0xc5d8('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0048=['contact','ENUM','contact_lead','exports','STRING','lead'];(function(_0x12ffe1,_0x2b90be){var _0x1c2440=function(_0x54bca8){while(--_0x54bca8){_0x12ffe1['push'](_0x12ffe1['shift']());}};_0x1c2440(++_0x2b90be);}(_0x0048,0x129));var _0x8004=function(_0x56a715,_0x1ba2c3){_0x56a715=_0x56a715-0x0;var _0x12e87b=_0x0048[_0x56a715];return _0x12e87b;};'use strict';var Sequelize=require('sequelize');module[_0x8004('0x0')]={'name':{'type':Sequelize[_0x8004('0x1')]},'moduleCreate':{'type':Sequelize['ENUM'](_0x8004('0x2'),_0x8004('0x3'),'nothing'),'defaultValue':_0x8004('0x2')},'moduleSearch':{'type':Sequelize[_0x8004('0x4')](_0x8004('0x5'),_0x8004('0x3'),'lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x8004('0x1')]}};
\ No newline at end of file
index 2942001..d77c173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd37e=['sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','body','getFields','ZohoField','nolimit','getSubjects','findOne','getDescriptions','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','update','then','destroy','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order'];(function(_0x46261b,_0xd68542){var _0x31e36f=function(_0xf5ed2b){while(--_0xf5ed2b){_0x46261b['push'](_0x46261b['shift']());}};_0x31e36f(++_0xd68542);}(_0xd37e,0x1de));var _0xed37=function(_0x56857c,_0x4868cb){_0x56857c=_0x56857c-0x0;var _0x4027e7=_0xd37e[_0x56857c];return _0x4027e7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xed37('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed37('0x1'));var rp=require('request-promise');var moment=require(_0xed37('0x2'));var BPromise=require(_0xed37('0x3'));var Mustache=require(_0xed37('0x4'));var util=require(_0xed37('0x5'));var path=require(_0xed37('0x6'));var sox=require('sox');var csv=require(_0xed37('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed37('0x8'));var _=require(_0xed37('0x9'));var squel=require(_0xed37('0xa'));var crypto=require('crypto');var jsforce=require(_0xed37('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xed37('0x7'));var querystring=require(_0xed37('0xc'));var Papa=require(_0xed37('0xd'));var Redis=require('ioredis');var authService=require(_0xed37('0xe'));var qs=require(_0xed37('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed37('0x10'));var logger=require(_0xed37('0x11'))(_0xed37('0x12'));var utils=require(_0xed37('0x13'));var config=require(_0xed37('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xed37('0x15'))['db'];function respondWithStatusCode(_0x5bae6b,_0x116160){_0x116160=_0x116160||0xcc;return function(_0xf6eb1e){if(_0xf6eb1e){return _0x5bae6b[_0xed37('0x16')](_0x116160);}return _0x5bae6b['status'](_0x116160)[_0xed37('0x17')]();};}function respondWithResult(_0x250dca,_0x322d5e){_0x322d5e=_0x322d5e||0xc8;return function(_0x497bfc){if(_0x497bfc){return _0x250dca[_0xed37('0x18')](_0x322d5e)[_0xed37('0x19')](_0x497bfc);}};}function respondWithFilteredResult(_0x514646,_0x74fa54){return function(_0x471f04){if(_0x471f04){var _0x18cfef=typeof _0x74fa54[_0xed37('0x1a')]===_0xed37('0x1b')&&typeof _0x74fa54[_0xed37('0x1c')]===_0xed37('0x1b');var _0x22a0fb=_0x471f04[_0xed37('0x1d')];var _0x3b8998=_0x18cfef?0x0:_0x74fa54[_0xed37('0x1a')];var _0x5b01a4=_0x18cfef?_0x471f04[_0xed37('0x1d')]:_0x74fa54['offset']+_0x74fa54[_0xed37('0x1c')];var _0x483546;if(_0x5b01a4>=_0x22a0fb){_0x5b01a4=_0x22a0fb;_0x483546=0xc8;}else{_0x483546=0xce;}_0x514646[_0xed37('0x18')](_0x483546);return _0x514646[_0xed37('0x1e')]('Content-Range',_0x3b8998+'-'+_0x5b01a4+'/'+_0x22a0fb)['json'](_0x471f04);}return null;};}function patchUpdates(_0xb26045){return function(_0x2bd033){try{jsonpatch['apply'](_0x2bd033,_0xb26045,!![]);}catch(_0x290a9b){return BPromise[_0xed37('0x1f')](_0x290a9b);}return _0x2bd033['save']();};}function saveUpdates(_0x531d6a,_0x3b3ef0){return function(_0x120887){if(_0x120887){return _0x120887[_0xed37('0x20')](_0x531d6a)[_0xed37('0x21')](function(_0x254c71){return _0x254c71;});}return null;};}function removeEntity(_0x527c13,_0x549a99){return function(_0x322a55){if(_0x322a55){return _0x322a55[_0xed37('0x22')]()[_0xed37('0x21')](function(){_0x527c13['status'](0xcc)[_0xed37('0x17')]();});}};}function handleEntityNotFound(_0x59b9f3,_0x1d81cb){return function(_0x2e9d49){if(!_0x2e9d49){_0x59b9f3[_0xed37('0x16')](0x194);}return _0x2e9d49;};}function handleError(_0x4d4929,_0x542be9){_0x542be9=_0x542be9||0x1f4;return function(_0x71af4e){logger[_0xed37('0x23')](_0x71af4e[_0xed37('0x24')]);if(_0x71af4e[_0xed37('0x25')]){delete _0x71af4e[_0xed37('0x25')];}_0x4d4929[_0xed37('0x18')](_0x542be9)[_0xed37('0x26')](_0x71af4e);};}exports[_0xed37('0x27')]=function(_0x2a3974,_0x5df17e){var _0x32a166={},_0x50dac1={},_0x4f9d0a={'count':0x0,'rows':[]};var _0x27be80=_[_0xed37('0x28')](db[_0xed37('0x29')][_0xed37('0x2a')],function(_0x231329){return{'name':_0x231329[_0xed37('0x2b')],'type':_0x231329['type']['key']};});_0x50dac1[_0xed37('0x2c')]=_['map'](_0x27be80,'name');_0x50dac1['query']=_[_0xed37('0x2d')](_0x2a3974[_0xed37('0x2e')]);_0x50dac1[_0xed37('0x2f')]=_['intersection'](_0x50dac1[_0xed37('0x2c')],_0x50dac1[_0xed37('0x2e')]);_0x32a166[_0xed37('0x30')]=_[_0xed37('0x31')](_0x50dac1[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x2a3974[_0xed37('0x2e')][_0xed37('0x32')]));_0x32a166[_0xed37('0x30')]=_0x32a166[_0xed37('0x30')][_0xed37('0x33')]?_0x32a166['attributes']:_0x50dac1[_0xed37('0x2c')];if(!_0x2a3974[_0xed37('0x2e')][_0xed37('0x34')]('nolimit')){_0x32a166[_0xed37('0x1c')]=qs[_0xed37('0x1c')](_0x2a3974[_0xed37('0x2e')]['limit']);_0x32a166[_0xed37('0x1a')]=qs[_0xed37('0x1a')](_0x2a3974[_0xed37('0x2e')][_0xed37('0x1a')]);}_0x32a166[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x2a3974[_0xed37('0x2e')]['sort']);_0x32a166[_0xed37('0x37')]=qs[_0xed37('0x2f')](_[_0xed37('0x38')](_0x2a3974[_0xed37('0x2e')],_0x50dac1[_0xed37('0x2f')]),_0x27be80);if(_0x2a3974[_0xed37('0x2e')][_0xed37('0x39')]){_0x32a166['where']=_['merge'](_0x32a166[_0xed37('0x37')],{'$or':_[_0xed37('0x28')](_0x27be80,function(_0x5bedfe){if(_0x5bedfe[_0xed37('0x3a')]!==_0xed37('0x3b')){var _0x108090={};_0x108090[_0x5bedfe[_0xed37('0x25')]]={'$like':'%'+_0x2a3974[_0xed37('0x2e')][_0xed37('0x39')]+'%'};return _0x108090;}})});}_0x32a166=_[_0xed37('0x3c')]({},_0x32a166,_0x2a3974[_0xed37('0x3d')]);var _0x2ab65a={'where':_0x32a166[_0xed37('0x37')]};return db[_0xed37('0x29')][_0xed37('0x1d')](_0x2ab65a)[_0xed37('0x21')](function(_0x5bac09){_0x4f9d0a[_0xed37('0x1d')]=_0x5bac09;if(_0x2a3974[_0xed37('0x2e')]['includeAll']){_0x32a166[_0xed37('0x3e')]=[{'all':!![]}];}return db[_0xed37('0x29')][_0xed37('0x3f')](_0x32a166);})[_0xed37('0x21')](function(_0x2789f4){_0x4f9d0a[_0xed37('0x40')]=_0x2789f4;return _0x4f9d0a;})[_0xed37('0x21')](respondWithFilteredResult(_0x5df17e,_0x32a166))[_0xed37('0x41')](handleError(_0x5df17e,null));};exports[_0xed37('0x42')]=function(_0x47710c,_0x4fdbfc){var _0x2b7b13={'raw':![],'where':{'id':_0x47710c[_0xed37('0x43')]['id']}},_0xe152ad={};_0xe152ad['model']=_[_0xed37('0x2d')](db['ZohoConfiguration']['rawAttributes']);_0xe152ad[_0xed37('0x2e')]=_[_0xed37('0x2d')](_0x47710c[_0xed37('0x2e')]);_0xe152ad['filters']=_[_0xed37('0x31')](_0xe152ad['model'],_0xe152ad['query']);_0x2b7b13[_0xed37('0x30')]=_[_0xed37('0x31')](_0xe152ad[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x47710c[_0xed37('0x2e')][_0xed37('0x32')]));_0x2b7b13['attributes']=_0x2b7b13[_0xed37('0x30')][_0xed37('0x33')]?_0x2b7b13[_0xed37('0x30')]:_0xe152ad['model'];if(_0x47710c[_0xed37('0x2e')][_0xed37('0x44')]){_0x2b7b13[_0xed37('0x3e')]=[{'all':!![]}];}_0x2b7b13=_[_0xed37('0x3c')]({},_0x2b7b13,_0x47710c[_0xed37('0x3d')]);return db[_0xed37('0x29')]['find'](_0x2b7b13)[_0xed37('0x21')](handleEntityNotFound(_0x4fdbfc,null))[_0xed37('0x21')](respondWithResult(_0x4fdbfc,null))[_0xed37('0x41')](handleError(_0x4fdbfc,null));};exports['create']=function(_0x132532,_0x52d73b){return db['ZohoConfiguration']['create'](_0x132532[_0xed37('0x45')],{})['then'](respondWithResult(_0x52d73b,0xc9))[_0xed37('0x41')](handleError(_0x52d73b,null));};exports[_0xed37('0x20')]=function(_0x350134,_0x16a1a8){if(_0x350134['body']['id']){delete _0x350134[_0xed37('0x45')]['id'];}return db[_0xed37('0x29')]['find']({'where':{'id':_0x350134[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x16a1a8,null))[_0xed37('0x21')](saveUpdates(_0x350134[_0xed37('0x45')],null))['then'](respondWithResult(_0x16a1a8,null))[_0xed37('0x41')](handleError(_0x16a1a8,null));};exports[_0xed37('0x22')]=function(_0xbe0166,_0x38b644){return db[_0xed37('0x29')]['find']({'where':{'id':_0xbe0166[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x38b644,null))[_0xed37('0x21')](removeEntity(_0x38b644,null))[_0xed37('0x41')](handleError(_0x38b644,null));};exports[_0xed37('0x46')]=function(_0x1bcf51,_0x17bd75,_0x2d0307){var _0xfcbd94={};var _0x5a970f={};var _0x4901f4;var _0x32db17;return db[_0xed37('0x29')]['findOne']({'where':{'id':_0x1bcf51[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x17bd75,null))['then'](function(_0x36dcf5){if(_0x36dcf5){_0x4901f4=_0x36dcf5;_0x5a970f[_0xed37('0x2c')]=_[_0xed37('0x2d')](db[_0xed37('0x47')][_0xed37('0x2a')]);_0x5a970f['query']=_[_0xed37('0x2d')](_0x1bcf51[_0xed37('0x2e')]);_0x5a970f['filters']=_[_0xed37('0x31')](_0x5a970f[_0xed37('0x2c')],_0x5a970f[_0xed37('0x2e')]);_0xfcbd94['attributes']=_[_0xed37('0x31')](_0x5a970f[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x1bcf51[_0xed37('0x2e')][_0xed37('0x32')]));_0xfcbd94[_0xed37('0x30')]=_0xfcbd94['attributes'][_0xed37('0x33')]?_0xfcbd94[_0xed37('0x30')]:_0x5a970f['model'];_0xfcbd94[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x1bcf51[_0xed37('0x2e')]['sort']);_0xfcbd94[_0xed37('0x37')]=qs['filters'](_[_0xed37('0x38')](_0x1bcf51[_0xed37('0x2e')],_0x5a970f[_0xed37('0x2f')]));if(_0x1bcf51[_0xed37('0x2e')][_0xed37('0x39')]){_0xfcbd94['where']=_['merge'](_0xfcbd94['where'],{'$or':_['map'](_0xfcbd94[_0xed37('0x30')],function(_0x403697){var _0x759370={};_0x759370[_0x403697]={'$like':'%'+_0x1bcf51[_0xed37('0x2e')][_0xed37('0x39')]+'%'};return _0x759370;})});}_0xfcbd94=_[_0xed37('0x3c')]({},_0xfcbd94,_0x1bcf51[_0xed37('0x3d')]);return _0x4901f4[_0xed37('0x46')](_0xfcbd94);}})[_0xed37('0x21')](function(_0x45c18e){if(_0x45c18e){_0x32db17=_0x45c18e[_0xed37('0x33')];if(!_0x1bcf51['query'][_0xed37('0x34')](_0xed37('0x48'))){_0xfcbd94[_0xed37('0x1c')]=qs[_0xed37('0x1c')](_0x1bcf51[_0xed37('0x2e')]['limit']);_0xfcbd94['offset']=qs[_0xed37('0x1a')](_0x1bcf51['query'][_0xed37('0x1a')]);}return _0x4901f4['getFields'](_0xfcbd94);}})[_0xed37('0x21')](function(_0x59e8ba){if(_0x59e8ba){return _0x59e8ba?{'count':_0x32db17,'rows':_0x59e8ba}:null;}})[_0xed37('0x21')](respondWithResult(_0x17bd75,null))[_0xed37('0x41')](handleError(_0x17bd75,null));};exports[_0xed37('0x49')]=function(_0x3a5f3c,_0x12f75e,_0x3cf857){var _0x428038={};var _0x585f78={};var _0x573286;var _0x46c016;return db[_0xed37('0x29')][_0xed37('0x4a')]({'where':{'id':_0x3a5f3c[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x12f75e,null))[_0xed37('0x21')](function(_0x15f456){if(_0x15f456){_0x573286=_0x15f456;_0x585f78['model']=_[_0xed37('0x2d')](db[_0xed37('0x47')]['rawAttributes']);_0x585f78[_0xed37('0x2e')]=_[_0xed37('0x2d')](_0x3a5f3c[_0xed37('0x2e')]);_0x585f78[_0xed37('0x2f')]=_[_0xed37('0x31')](_0x585f78[_0xed37('0x2c')],_0x585f78[_0xed37('0x2e')]);_0x428038[_0xed37('0x30')]=_['intersection'](_0x585f78[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x3a5f3c[_0xed37('0x2e')]['fields']));_0x428038[_0xed37('0x30')]=_0x428038[_0xed37('0x30')]['length']?_0x428038[_0xed37('0x30')]:_0x585f78[_0xed37('0x2c')];_0x428038[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x36')]);_0x428038['where']=qs[_0xed37('0x2f')](_['pick'](_0x3a5f3c[_0xed37('0x2e')],_0x585f78[_0xed37('0x2f')]));if(_0x3a5f3c['query'][_0xed37('0x39')]){_0x428038['where']=_[_0xed37('0x3c')](_0x428038[_0xed37('0x37')],{'$or':_[_0xed37('0x28')](_0x428038[_0xed37('0x30')],function(_0x244ec4){var _0x96d817={};_0x96d817[_0x244ec4]={'$like':'%'+_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x39')]+'%'};return _0x96d817;})});}_0x428038=_[_0xed37('0x3c')]({},_0x428038,_0x3a5f3c[_0xed37('0x3d')]);return _0x573286['getSubjects'](_0x428038);}})['then'](function(_0x23f920){if(_0x23f920){_0x46c016=_0x23f920['length'];if(!_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x34')](_0xed37('0x48'))){_0x428038['limit']=qs[_0xed37('0x1c')](_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x1c')]);_0x428038['offset']=qs[_0xed37('0x1a')](_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x1a')]);}return _0x573286['getSubjects'](_0x428038);}})[_0xed37('0x21')](function(_0x275f7d){if(_0x275f7d){return _0x275f7d?{'count':_0x46c016,'rows':_0x275f7d}:null;}})[_0xed37('0x21')](respondWithResult(_0x12f75e,null))[_0xed37('0x41')](handleError(_0x12f75e,null));};exports[_0xed37('0x4b')]=function(_0x25d11d,_0x4c9ebc,_0x1d652d){var _0x203f29={};var _0x1714b4={};var _0x272c46;var _0x412558;return db[_0xed37('0x29')]['findOne']({'where':{'id':_0x25d11d[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x4c9ebc,null))['then'](function(_0x593fc4){if(_0x593fc4){_0x272c46=_0x593fc4;_0x1714b4['model']=_[_0xed37('0x2d')](db[_0xed37('0x47')][_0xed37('0x2a')]);_0x1714b4['query']=_['keys'](_0x25d11d['query']);_0x1714b4['filters']=_[_0xed37('0x31')](_0x1714b4[_0xed37('0x2c')],_0x1714b4[_0xed37('0x2e')]);_0x203f29['attributes']=_[_0xed37('0x31')](_0x1714b4['model'],qs['fields'](_0x25d11d[_0xed37('0x2e')][_0xed37('0x32')]));_0x203f29['attributes']=_0x203f29[_0xed37('0x30')][_0xed37('0x33')]?_0x203f29[_0xed37('0x30')]:_0x1714b4[_0xed37('0x2c')];_0x203f29[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x25d11d['query']['sort']);_0x203f29['where']=qs[_0xed37('0x2f')](_[_0xed37('0x38')](_0x25d11d['query'],_0x1714b4[_0xed37('0x2f')]));if(_0x25d11d[_0xed37('0x2e')][_0xed37('0x39')]){_0x203f29['where']=_[_0xed37('0x3c')](_0x203f29[_0xed37('0x37')],{'$or':_[_0xed37('0x28')](_0x203f29[_0xed37('0x30')],function(_0x55b2f3){var _0x156fe6={};_0x156fe6[_0x55b2f3]={'$like':'%'+_0x25d11d[_0xed37('0x2e')]['filter']+'%'};return _0x156fe6;})});}_0x203f29=_[_0xed37('0x3c')]({},_0x203f29,_0x25d11d[_0xed37('0x3d')]);return _0x272c46['getDescriptions'](_0x203f29);}})['then'](function(_0x1652ec){if(_0x1652ec){_0x412558=_0x1652ec[_0xed37('0x33')];if(!_0x25d11d['query'][_0xed37('0x34')](_0xed37('0x48'))){_0x203f29[_0xed37('0x1c')]=qs[_0xed37('0x1c')](_0x25d11d[_0xed37('0x2e')][_0xed37('0x1c')]);_0x203f29[_0xed37('0x1a')]=qs[_0xed37('0x1a')](_0x25d11d[_0xed37('0x2e')]['offset']);}return _0x272c46['getDescriptions'](_0x203f29);}})[_0xed37('0x21')](function(_0x520174){if(_0x520174){return _0x520174?{'count':_0x412558,'rows':_0x520174}:null;}})['then'](respondWithResult(_0x4c9ebc,null))['catch'](handleError(_0x4c9ebc,null));};
\ No newline at end of file
+var _0x2a39=['fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','apply','save','update','destroy','then','error','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','key','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','options','find','create','body','params','getFields','findOne','ZohoField','keys','hasOwnProperty','getSubjects','getDescriptions','rimraf','zip-dir'];(function(_0x423a50,_0x7a748e){var _0x4329b9=function(_0xf6d21){while(--_0xf6d21){_0x423a50['push'](_0x423a50['shift']());}};_0x4329b9(++_0x7a748e);}(_0x2a39,0xa0));var _0x92a3=function(_0x38c908,_0x5b07c4){_0x38c908=_0x38c908-0x0;var _0x4f6ffd=_0x2a39[_0x38c908];return _0x4f6ffd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x92a3('0x0'));var zipdir=require(_0x92a3('0x1'));var jsonpatch=require(_0x92a3('0x2'));var rp=require(_0x92a3('0x3'));var moment=require(_0x92a3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x92a3('0x5'));var util=require(_0x92a3('0x6'));var path=require(_0x92a3('0x7'));var sox=require(_0x92a3('0x8'));var csv=require(_0x92a3('0x9'));var ejs=require(_0x92a3('0xa'));var fs=require('fs');var fs_extra=require(_0x92a3('0xb'));var _=require(_0x92a3('0xc'));var squel=require('squel');var crypto=require(_0x92a3('0xd'));var jsforce=require(_0x92a3('0xe'));var deskjs=require(_0x92a3('0xf'));var toCsv=require(_0x92a3('0x9'));var querystring=require('querystring');var Papa=require(_0x92a3('0x10'));var Redis=require(_0x92a3('0x11'));var authService=require(_0x92a3('0x12'));var qs=require(_0x92a3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x92a3('0x14'));var logger=require('../../config/logger')(_0x92a3('0x15'));var utils=require(_0x92a3('0x16'));var config=require(_0x92a3('0x17'));var licenseUtil=require(_0x92a3('0x18'));var db=require(_0x92a3('0x19'))['db'];function respondWithStatusCode(_0x21296b,_0x3d823a){_0x3d823a=_0x3d823a||0xcc;return function(_0x3ac830){if(_0x3ac830){return _0x21296b[_0x92a3('0x1a')](_0x3d823a);}return _0x21296b[_0x92a3('0x1b')](_0x3d823a)[_0x92a3('0x1c')]();};}function respondWithResult(_0x47f2ef,_0x4382e6){_0x4382e6=_0x4382e6||0xc8;return function(_0x5bfe4d){if(_0x5bfe4d){return _0x47f2ef[_0x92a3('0x1b')](_0x4382e6)[_0x92a3('0x1d')](_0x5bfe4d);}};}function respondWithFilteredResult(_0x22dbb2,_0x5ef6a5){return function(_0x106b4b){if(_0x106b4b){var _0x1d8a6c=typeof _0x5ef6a5[_0x92a3('0x1e')]==='undefined'&&typeof _0x5ef6a5[_0x92a3('0x1f')]===_0x92a3('0x20');var _0x130f05=_0x106b4b['count'];var _0x4c850c=_0x1d8a6c?0x0:_0x5ef6a5[_0x92a3('0x1e')];var _0x45cdbf=_0x1d8a6c?_0x106b4b[_0x92a3('0x21')]:_0x5ef6a5[_0x92a3('0x1e')]+_0x5ef6a5[_0x92a3('0x1f')];var _0xeac3ba;if(_0x45cdbf>=_0x130f05){_0x45cdbf=_0x130f05;_0xeac3ba=0xc8;}else{_0xeac3ba=0xce;}_0x22dbb2[_0x92a3('0x1b')](_0xeac3ba);return _0x22dbb2['set']('Content-Range',_0x4c850c+'-'+_0x45cdbf+'/'+_0x130f05)[_0x92a3('0x1d')](_0x106b4b);}return null;};}function patchUpdates(_0x581214){return function(_0x309e78){try{jsonpatch[_0x92a3('0x22')](_0x309e78,_0x581214,!![]);}catch(_0x154d66){return BPromise['reject'](_0x154d66);}return _0x309e78[_0x92a3('0x23')]();};}function saveUpdates(_0x3cf0dd,_0x23e89b){return function(_0x554c8b){if(_0x554c8b){return _0x554c8b[_0x92a3('0x24')](_0x3cf0dd)['then'](function(_0x408867){return _0x408867;});}return null;};}function removeEntity(_0x5afcd3,_0x3744f9){return function(_0x1bc521){if(_0x1bc521){return _0x1bc521[_0x92a3('0x25')]()[_0x92a3('0x26')](function(){_0x5afcd3[_0x92a3('0x1b')](0xcc)[_0x92a3('0x1c')]();});}};}function handleEntityNotFound(_0x2be5e4,_0x4d9fec){return function(_0x4aacc0){if(!_0x4aacc0){_0x2be5e4[_0x92a3('0x1a')](0x194);}return _0x4aacc0;};}function handleError(_0x346c4b,_0x4b1539){_0x4b1539=_0x4b1539||0x1f4;return function(_0x22a67c){logger[_0x92a3('0x27')](_0x22a67c['stack']);if(_0x22a67c[_0x92a3('0x28')]){delete _0x22a67c[_0x92a3('0x28')];}_0x346c4b['status'](_0x4b1539)[_0x92a3('0x29')](_0x22a67c);};}exports[_0x92a3('0x2a')]=function(_0x193c40,_0x55e8b8){var _0x13bb4f={},_0x5ec0b5={},_0x1accfe={'count':0x0,'rows':[]};var _0x2512da=_[_0x92a3('0x2b')](db[_0x92a3('0x2c')][_0x92a3('0x2d')],function(_0xf217c8){return{'name':_0xf217c8[_0x92a3('0x2e')],'type':_0xf217c8['type'][_0x92a3('0x2f')]};});_0x5ec0b5['model']=_['map'](_0x2512da,_0x92a3('0x28'));_0x5ec0b5[_0x92a3('0x30')]=_['keys'](_0x193c40[_0x92a3('0x30')]);_0x5ec0b5[_0x92a3('0x31')]=_['intersection'](_0x5ec0b5[_0x92a3('0x32')],_0x5ec0b5[_0x92a3('0x30')]);_0x13bb4f[_0x92a3('0x33')]=_[_0x92a3('0x34')](_0x5ec0b5[_0x92a3('0x32')],qs[_0x92a3('0x35')](_0x193c40[_0x92a3('0x30')][_0x92a3('0x35')]));_0x13bb4f['attributes']=_0x13bb4f[_0x92a3('0x33')][_0x92a3('0x36')]?_0x13bb4f[_0x92a3('0x33')]:_0x5ec0b5['model'];if(!_0x193c40[_0x92a3('0x30')]['hasOwnProperty'](_0x92a3('0x37'))){_0x13bb4f[_0x92a3('0x1f')]=qs[_0x92a3('0x1f')](_0x193c40[_0x92a3('0x30')][_0x92a3('0x1f')]);_0x13bb4f[_0x92a3('0x1e')]=qs[_0x92a3('0x1e')](_0x193c40[_0x92a3('0x30')][_0x92a3('0x1e')]);}_0x13bb4f[_0x92a3('0x38')]=qs[_0x92a3('0x39')](_0x193c40['query'][_0x92a3('0x39')]);_0x13bb4f[_0x92a3('0x3a')]=qs[_0x92a3('0x31')](_[_0x92a3('0x3b')](_0x193c40[_0x92a3('0x30')],_0x5ec0b5['filters']),_0x2512da);if(_0x193c40[_0x92a3('0x30')][_0x92a3('0x3c')]){_0x13bb4f[_0x92a3('0x3a')]=_[_0x92a3('0x3d')](_0x13bb4f['where'],{'$or':_['map'](_0x2512da,function(_0x41b0b0){if(_0x41b0b0[_0x92a3('0x3e')]!==_0x92a3('0x3f')){var _0x1d1832={};_0x1d1832[_0x41b0b0['name']]={'$like':'%'+_0x193c40[_0x92a3('0x30')]['filter']+'%'};return _0x1d1832;}})});}_0x13bb4f=_['merge']({},_0x13bb4f,_0x193c40['options']);var _0x2e7b93={'where':_0x13bb4f[_0x92a3('0x3a')]};return db[_0x92a3('0x2c')][_0x92a3('0x21')](_0x2e7b93)[_0x92a3('0x26')](function(_0x49d4b8){_0x1accfe['count']=_0x49d4b8;if(_0x193c40[_0x92a3('0x30')][_0x92a3('0x40')]){_0x13bb4f[_0x92a3('0x41')]=[{'all':!![]}];}return db[_0x92a3('0x2c')][_0x92a3('0x42')](_0x13bb4f);})[_0x92a3('0x26')](function(_0x8a66d6){_0x1accfe[_0x92a3('0x43')]=_0x8a66d6;return _0x1accfe;})['then'](respondWithFilteredResult(_0x55e8b8,_0x13bb4f))[_0x92a3('0x44')](handleError(_0x55e8b8,null));};exports['show']=function(_0x5b1068,_0x510470){var _0x4c8cfa={'raw':![],'where':{'id':_0x5b1068['params']['id']}},_0x1c93fe={};_0x1c93fe[_0x92a3('0x32')]=_['keys'](db[_0x92a3('0x2c')][_0x92a3('0x2d')]);_0x1c93fe['query']=_['keys'](_0x5b1068[_0x92a3('0x30')]);_0x1c93fe[_0x92a3('0x31')]=_[_0x92a3('0x34')](_0x1c93fe[_0x92a3('0x32')],_0x1c93fe[_0x92a3('0x30')]);_0x4c8cfa['attributes']=_['intersection'](_0x1c93fe['model'],qs[_0x92a3('0x35')](_0x5b1068['query'][_0x92a3('0x35')]));_0x4c8cfa['attributes']=_0x4c8cfa[_0x92a3('0x33')][_0x92a3('0x36')]?_0x4c8cfa[_0x92a3('0x33')]:_0x1c93fe['model'];if(_0x5b1068['query'][_0x92a3('0x40')]){_0x4c8cfa['include']=[{'all':!![]}];}_0x4c8cfa=_['merge']({},_0x4c8cfa,_0x5b1068[_0x92a3('0x45')]);return db[_0x92a3('0x2c')][_0x92a3('0x46')](_0x4c8cfa)['then'](handleEntityNotFound(_0x510470,null))[_0x92a3('0x26')](respondWithResult(_0x510470,null))[_0x92a3('0x44')](handleError(_0x510470,null));};exports[_0x92a3('0x47')]=function(_0x5c6203,_0x1c5eb0){return db[_0x92a3('0x2c')][_0x92a3('0x47')](_0x5c6203['body'],{})[_0x92a3('0x26')](respondWithResult(_0x1c5eb0,0xc9))[_0x92a3('0x44')](handleError(_0x1c5eb0,null));};exports[_0x92a3('0x24')]=function(_0x3f2472,_0x34550d){if(_0x3f2472[_0x92a3('0x48')]['id']){delete _0x3f2472[_0x92a3('0x48')]['id'];}return db['ZohoConfiguration'][_0x92a3('0x46')]({'where':{'id':_0x3f2472[_0x92a3('0x49')]['id']}})[_0x92a3('0x26')](handleEntityNotFound(_0x34550d,null))[_0x92a3('0x26')](saveUpdates(_0x3f2472[_0x92a3('0x48')],null))['then'](respondWithResult(_0x34550d,null))['catch'](handleError(_0x34550d,null));};exports[_0x92a3('0x25')]=function(_0x2fbe3e,_0x1cd44b){return db[_0x92a3('0x2c')][_0x92a3('0x46')]({'where':{'id':_0x2fbe3e['params']['id']}})[_0x92a3('0x26')](handleEntityNotFound(_0x1cd44b,null))[_0x92a3('0x26')](removeEntity(_0x1cd44b,null))['catch'](handleError(_0x1cd44b,null));};exports[_0x92a3('0x4a')]=function(_0x4998fa,_0x204570,_0x2e8116){var _0x4adec5={};var _0x28fbf9={};var _0xae76e9;var _0x259648;return db[_0x92a3('0x2c')][_0x92a3('0x4b')]({'where':{'id':_0x4998fa['params']['id']}})[_0x92a3('0x26')](handleEntityNotFound(_0x204570,null))['then'](function(_0x200f94){if(_0x200f94){_0xae76e9=_0x200f94;_0x28fbf9[_0x92a3('0x32')]=_['keys'](db[_0x92a3('0x4c')][_0x92a3('0x2d')]);_0x28fbf9[_0x92a3('0x30')]=_[_0x92a3('0x4d')](_0x4998fa['query']);_0x28fbf9[_0x92a3('0x31')]=_[_0x92a3('0x34')](_0x28fbf9[_0x92a3('0x32')],_0x28fbf9[_0x92a3('0x30')]);_0x4adec5[_0x92a3('0x33')]=_[_0x92a3('0x34')](_0x28fbf9[_0x92a3('0x32')],qs[_0x92a3('0x35')](_0x4998fa['query']['fields']));_0x4adec5[_0x92a3('0x33')]=_0x4adec5[_0x92a3('0x33')][_0x92a3('0x36')]?_0x4adec5[_0x92a3('0x33')]:_0x28fbf9['model'];_0x4adec5[_0x92a3('0x38')]=qs[_0x92a3('0x39')](_0x4998fa[_0x92a3('0x30')][_0x92a3('0x39')]);_0x4adec5[_0x92a3('0x3a')]=qs[_0x92a3('0x31')](_[_0x92a3('0x3b')](_0x4998fa[_0x92a3('0x30')],_0x28fbf9[_0x92a3('0x31')]));if(_0x4998fa[_0x92a3('0x30')]['filter']){_0x4adec5['where']=_[_0x92a3('0x3d')](_0x4adec5['where'],{'$or':_[_0x92a3('0x2b')](_0x4adec5['attributes'],function(_0x424399){var _0xd229be={};_0xd229be[_0x424399]={'$like':'%'+_0x4998fa[_0x92a3('0x30')][_0x92a3('0x3c')]+'%'};return _0xd229be;})});}_0x4adec5=_['merge']({},_0x4adec5,_0x4998fa[_0x92a3('0x45')]);return _0xae76e9[_0x92a3('0x4a')](_0x4adec5);}})[_0x92a3('0x26')](function(_0x2f8537){if(_0x2f8537){_0x259648=_0x2f8537[_0x92a3('0x36')];if(!_0x4998fa[_0x92a3('0x30')][_0x92a3('0x4e')](_0x92a3('0x37'))){_0x4adec5[_0x92a3('0x1f')]=qs[_0x92a3('0x1f')](_0x4998fa[_0x92a3('0x30')]['limit']);_0x4adec5[_0x92a3('0x1e')]=qs[_0x92a3('0x1e')](_0x4998fa[_0x92a3('0x30')][_0x92a3('0x1e')]);}return _0xae76e9[_0x92a3('0x4a')](_0x4adec5);}})[_0x92a3('0x26')](function(_0x4fd514){if(_0x4fd514){return _0x4fd514?{'count':_0x259648,'rows':_0x4fd514}:null;}})[_0x92a3('0x26')](respondWithResult(_0x204570,null))[_0x92a3('0x44')](handleError(_0x204570,null));};exports[_0x92a3('0x4f')]=function(_0xdac0ee,_0x3c3809,_0x3a7a69){var _0x67fd58={};var _0x4a3829={};var _0x4c8b7e;var _0x5a3e55;return db[_0x92a3('0x2c')]['findOne']({'where':{'id':_0xdac0ee[_0x92a3('0x49')]['id']}})[_0x92a3('0x26')](handleEntityNotFound(_0x3c3809,null))['then'](function(_0x22a3be){if(_0x22a3be){_0x4c8b7e=_0x22a3be;_0x4a3829[_0x92a3('0x32')]=_[_0x92a3('0x4d')](db[_0x92a3('0x4c')][_0x92a3('0x2d')]);_0x4a3829[_0x92a3('0x30')]=_[_0x92a3('0x4d')](_0xdac0ee[_0x92a3('0x30')]);_0x4a3829[_0x92a3('0x31')]=_[_0x92a3('0x34')](_0x4a3829[_0x92a3('0x32')],_0x4a3829['query']);_0x67fd58[_0x92a3('0x33')]=_['intersection'](_0x4a3829[_0x92a3('0x32')],qs[_0x92a3('0x35')](_0xdac0ee['query'][_0x92a3('0x35')]));_0x67fd58['attributes']=_0x67fd58[_0x92a3('0x33')][_0x92a3('0x36')]?_0x67fd58[_0x92a3('0x33')]:_0x4a3829[_0x92a3('0x32')];_0x67fd58[_0x92a3('0x38')]=qs[_0x92a3('0x39')](_0xdac0ee['query'][_0x92a3('0x39')]);_0x67fd58[_0x92a3('0x3a')]=qs[_0x92a3('0x31')](_[_0x92a3('0x3b')](_0xdac0ee[_0x92a3('0x30')],_0x4a3829[_0x92a3('0x31')]));if(_0xdac0ee['query']['filter']){_0x67fd58[_0x92a3('0x3a')]=_[_0x92a3('0x3d')](_0x67fd58[_0x92a3('0x3a')],{'$or':_[_0x92a3('0x2b')](_0x67fd58[_0x92a3('0x33')],function(_0x3b94b2){var _0x5f0fba={};_0x5f0fba[_0x3b94b2]={'$like':'%'+_0xdac0ee[_0x92a3('0x30')][_0x92a3('0x3c')]+'%'};return _0x5f0fba;})});}_0x67fd58=_[_0x92a3('0x3d')]({},_0x67fd58,_0xdac0ee[_0x92a3('0x45')]);return _0x4c8b7e[_0x92a3('0x4f')](_0x67fd58);}})['then'](function(_0x35c123){if(_0x35c123){_0x5a3e55=_0x35c123['length'];if(!_0xdac0ee[_0x92a3('0x30')][_0x92a3('0x4e')](_0x92a3('0x37'))){_0x67fd58[_0x92a3('0x1f')]=qs[_0x92a3('0x1f')](_0xdac0ee[_0x92a3('0x30')][_0x92a3('0x1f')]);_0x67fd58[_0x92a3('0x1e')]=qs[_0x92a3('0x1e')](_0xdac0ee['query']['offset']);}return _0x4c8b7e[_0x92a3('0x4f')](_0x67fd58);}})[_0x92a3('0x26')](function(_0x53c067){if(_0x53c067){return _0x53c067?{'count':_0x5a3e55,'rows':_0x53c067}:null;}})[_0x92a3('0x26')](respondWithResult(_0x3c3809,null))[_0x92a3('0x44')](handleError(_0x3c3809,null));};exports[_0x92a3('0x50')]=function(_0x390c2c,_0x31660a,_0x5af445){var _0x1d76e8={};var _0x182c37={};var _0x158f9b;var _0x5d1dc5;return db[_0x92a3('0x2c')]['findOne']({'where':{'id':_0x390c2c[_0x92a3('0x49')]['id']}})[_0x92a3('0x26')](handleEntityNotFound(_0x31660a,null))['then'](function(_0x4341dc){if(_0x4341dc){_0x158f9b=_0x4341dc;_0x182c37['model']=_[_0x92a3('0x4d')](db[_0x92a3('0x4c')][_0x92a3('0x2d')]);_0x182c37[_0x92a3('0x30')]=_['keys'](_0x390c2c[_0x92a3('0x30')]);_0x182c37['filters']=_['intersection'](_0x182c37[_0x92a3('0x32')],_0x182c37[_0x92a3('0x30')]);_0x1d76e8[_0x92a3('0x33')]=_[_0x92a3('0x34')](_0x182c37[_0x92a3('0x32')],qs[_0x92a3('0x35')](_0x390c2c[_0x92a3('0x30')][_0x92a3('0x35')]));_0x1d76e8[_0x92a3('0x33')]=_0x1d76e8[_0x92a3('0x33')][_0x92a3('0x36')]?_0x1d76e8[_0x92a3('0x33')]:_0x182c37[_0x92a3('0x32')];_0x1d76e8['order']=qs['sort'](_0x390c2c['query'][_0x92a3('0x39')]);_0x1d76e8[_0x92a3('0x3a')]=qs[_0x92a3('0x31')](_[_0x92a3('0x3b')](_0x390c2c[_0x92a3('0x30')],_0x182c37[_0x92a3('0x31')]));if(_0x390c2c[_0x92a3('0x30')][_0x92a3('0x3c')]){_0x1d76e8['where']=_[_0x92a3('0x3d')](_0x1d76e8[_0x92a3('0x3a')],{'$or':_[_0x92a3('0x2b')](_0x1d76e8[_0x92a3('0x33')],function(_0x155247){var _0x56fd09={};_0x56fd09[_0x155247]={'$like':'%'+_0x390c2c[_0x92a3('0x30')]['filter']+'%'};return _0x56fd09;})});}_0x1d76e8=_['merge']({},_0x1d76e8,_0x390c2c[_0x92a3('0x45')]);return _0x158f9b[_0x92a3('0x50')](_0x1d76e8);}})[_0x92a3('0x26')](function(_0x412375){if(_0x412375){_0x5d1dc5=_0x412375[_0x92a3('0x36')];if(!_0x390c2c[_0x92a3('0x30')]['hasOwnProperty'](_0x92a3('0x37'))){_0x1d76e8[_0x92a3('0x1f')]=qs[_0x92a3('0x1f')](_0x390c2c[_0x92a3('0x30')][_0x92a3('0x1f')]);_0x1d76e8[_0x92a3('0x1e')]=qs[_0x92a3('0x1e')](_0x390c2c[_0x92a3('0x30')][_0x92a3('0x1e')]);}return _0x158f9b['getDescriptions'](_0x1d76e8);}})['then'](function(_0x5c3c77){if(_0x5c3c77){return _0x5c3c77?{'count':_0x5d1dc5,'rows':_0x5c3c77}:null;}})['then'](respondWithResult(_0x31660a,null))['catch'](handleError(_0x31660a,null));};
\ No newline at end of file
index bd4ab6a..eb4c6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c73=['lodash','util','../../config/logger','api','path','rimraf','./intZohoConfiguration.attributes','exports','int_zoho_configurations'];(function(_0xccc25a,_0x38733b){var _0xade983=function(_0x21954d){while(--_0x21954d){_0xccc25a['push'](_0xccc25a['shift']());}};_0xade983(++_0x38733b);}(_0x3c73,0xab));var _0x33c7=function(_0x17ed68,_0x54bce9){_0x17ed68=_0x17ed68-0x0;var _0xa289a5=_0x3c73[_0x17ed68];return _0xa289a5;};'use strict';var _=require(_0x33c7('0x0'));var util=require(_0x33c7('0x1'));var logger=require(_0x33c7('0x2'))(_0x33c7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x33c7('0x4'));var rimraf=require(_0x33c7('0x5'));var config=require('../../config/environment');var attributes=require(_0x33c7('0x6'));module[_0x33c7('0x7')]=function(_0x4f8793,_0x3a5014){return _0x4f8793['define']('ZohoConfiguration',attributes,{'tableName':_0x33c7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x509d=['exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x509d,0x7c));var _0xd509=function(_0x1b8ad9,_0x301373){_0x1b8ad9=_0x1b8ad9-0x0;var _0x279227=_0x509d[_0x1b8ad9];return _0x279227;};'use strict';var _=require(_0xd509('0x0'));var util=require(_0xd509('0x1'));var logger=require(_0xd509('0x2'))(_0xd509('0x3'));var moment=require(_0xd509('0x4'));var BPromise=require(_0xd509('0x5'));var rp=require(_0xd509('0x6'));var fs=require('fs');var path=require(_0xd509('0x7'));var rimraf=require(_0xd509('0x8'));var config=require(_0xd509('0x9'));var attributes=require(_0xd509('0xa'));module[_0xd509('0xb')]=function(_0xecfa8c,_0x5859ee){return _0xecfa8c[_0xd509('0xc')](_0xd509('0xd'),attributes,{'tableName':_0xd509('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b6a1414..71c6767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd344=['rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x20a3e8,_0x26d368){var _0x4890dc=function(_0x330409){while(--_0x330409){_0x20a3e8['push'](_0x20a3e8['shift']());}};_0x4890dc(++_0x26d368);}(_0xd344,0x93));var _0x4d34=function(_0x3c6e48,_0x666a08){_0x3c6e48=_0x3c6e48-0x0;var _0x4ce8ba=_0xd344[_0x3c6e48];return _0x4ce8ba;};'use strict';var _=require(_0x4d34('0x0'));var util=require('util');var moment=require(_0x4d34('0x1'));var BPromise=require(_0x4d34('0x2'));var rs=require(_0x4d34('0x3'));var fs=require('fs');var Redis=require(_0x4d34('0x4'));var db=require(_0x4d34('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4d34('0x6'))(_0x4d34('0x7'));var config=require(_0x4d34('0x8'));var jayson=require(_0x4d34('0x9'));var client=jayson[_0x4d34('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x121ffd,_0x1e64b6,_0xc030b0){return new BPromise(function(_0xa8de8e,_0x120074){return client['request'](_0x121ffd,_0xc030b0)[_0x4d34('0xb')](function(_0x40ec13){logger[_0x4d34('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x1e64b6,_0x4d34('0xd'));logger[_0x4d34('0xe')](_0x4d34('0xf'),_0x1e64b6,'request\x20sent',JSON[_0x4d34('0x10')](_0x40ec13));if(_0x40ec13[_0x4d34('0x11')]){if(_0x40ec13[_0x4d34('0x11')][_0x4d34('0x12')]===0x1f4){logger[_0x4d34('0x11')](_0x4d34('0x13'),_0x1e64b6,_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);return _0x120074(_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);}logger[_0x4d34('0x11')](_0x4d34('0x13'),_0x1e64b6,_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);return _0xa8de8e(_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);}else{logger[_0x4d34('0xc')](_0x4d34('0x13'),_0x1e64b6,_0x4d34('0xd'));_0xa8de8e(_0x40ec13[_0x4d34('0x15')][_0x4d34('0x14')]);}})['catch'](function(_0x300305){logger[_0x4d34('0x11')](_0x4d34('0x13'),_0x1e64b6,_0x300305);_0x120074(_0x300305);});});}
\ No newline at end of file
+var _0xab46=['moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','lodash','util'];(function(_0xd1e280,_0x100074){var _0x3d0e58=function(_0x5ba63e){while(--_0x5ba63e){_0xd1e280['push'](_0xd1e280['shift']());}};_0x3d0e58(++_0x100074);}(_0xab46,0x1ca));var _0x6ab4=function(_0x11cd17,_0x489e02){_0x11cd17=_0x11cd17-0x0;var _0x3343ad=_0xab46[_0x11cd17];return _0x3343ad;};'use strict';var _=require(_0x6ab4('0x0'));var util=require(_0x6ab4('0x1'));var moment=require(_0x6ab4('0x2'));var BPromise=require(_0x6ab4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ab4('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6ab4('0x5'));var logger=require(_0x6ab4('0x6'))(_0x6ab4('0x7'));var config=require(_0x6ab4('0x8'));var jayson=require(_0x6ab4('0x9'));var client=jayson[_0x6ab4('0xa')][_0x6ab4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6b33a0,_0x42a41b,_0x7621a5){return new BPromise(function(_0x3d6e37,_0x2de45e){return client[_0x6ab4('0xc')](_0x6b33a0,_0x7621a5)[_0x6ab4('0xd')](function(_0x216146){logger[_0x6ab4('0xe')](_0x6ab4('0xf'),_0x42a41b,'request\x20sent');logger[_0x6ab4('0x10')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x42a41b,_0x6ab4('0x11'),JSON[_0x6ab4('0x12')](_0x216146));if(_0x216146[_0x6ab4('0x13')]){if(_0x216146[_0x6ab4('0x13')]['code']===0x1f4){logger[_0x6ab4('0x13')]('ZohoConfiguration,\x20%s,\x20%s',_0x42a41b,_0x216146[_0x6ab4('0x13')][_0x6ab4('0x14')]);return _0x2de45e(_0x216146[_0x6ab4('0x13')][_0x6ab4('0x14')]);}logger[_0x6ab4('0x13')](_0x6ab4('0xf'),_0x42a41b,_0x216146[_0x6ab4('0x13')][_0x6ab4('0x14')]);return _0x3d6e37(_0x216146[_0x6ab4('0x13')][_0x6ab4('0x14')]);}else{logger[_0x6ab4('0xe')](_0x6ab4('0xf'),_0x42a41b,'request\x20sent');_0x3d6e37(_0x216146[_0x6ab4('0x15')][_0x6ab4('0x14')]);}})[_0x6ab4('0x16')](function(_0x2d9c6c){logger[_0x6ab4('0x13')](_0x6ab4('0xf'),_0x42a41b,_0x2d9c6c);_0x2de45e(_0x2d9c6c);});});}
\ No newline at end of file
index eec061d..596b850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fd7=['../../components/interaction/service','./intZohoField.controller','isAuthenticated','index','get','/:id','post','create','put','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x199d4f,_0x49ede1){var _0x202d75=function(_0x3e56d9){while(--_0x3e56d9){_0x199d4f['push'](_0x199d4f['shift']());}};_0x202d75(++_0x49ede1);}(_0x3fd7,0x1e0));var _0x73fd=function(_0x126a46,_0x2fcfcd){_0x126a46=_0x126a46-0x0;var _0xbe5786=_0x3fd7[_0x126a46];return _0xbe5786;};'use strict';var multer=require(_0x73fd('0x0'));var util=require('util');var path=require(_0x73fd('0x1'));var timeout=require('connect-timeout');var express=require(_0x73fd('0x2'));var router=express[_0x73fd('0x3')]();var fs_extra=require(_0x73fd('0x4'));var auth=require(_0x73fd('0x5'));var interaction=require(_0x73fd('0x6'));var config=require('../../config/environment');var controller=require(_0x73fd('0x7'));router['get']('/',auth[_0x73fd('0x8')](),controller[_0x73fd('0x9')]);router[_0x73fd('0xa')](_0x73fd('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x73fd('0xc')]('/',auth[_0x73fd('0x8')](),controller[_0x73fd('0xd')]);router[_0x73fd('0xe')]('/:id',auth[_0x73fd('0x8')](),controller[_0x73fd('0xf')]);router['delete']('/:id',auth[_0x73fd('0x8')](),controller[_0x73fd('0x10')]);module[_0x73fd('0x11')]=router;
\ No newline at end of file
+var _0x8861=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','put','update','delete','destroy'];(function(_0x18144d,_0x3caf11){var _0x5caaee=function(_0x22c1d7){while(--_0x22c1d7){_0x18144d['push'](_0x18144d['shift']());}};_0x5caaee(++_0x3caf11);}(_0x8861,0xd2));var _0x1886=function(_0x8a7970,_0x5ad9b2){_0x8a7970=_0x8a7970-0x0;var _0x4225ea=_0x8861[_0x8a7970];return _0x4225ea;};'use strict';var multer=require(_0x1886('0x0'));var util=require(_0x1886('0x1'));var path=require(_0x1886('0x2'));var timeout=require(_0x1886('0x3'));var express=require(_0x1886('0x4'));var router=express[_0x1886('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1886('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1886('0x7'));var controller=require('./intZohoField.controller');router['get']('/',auth[_0x1886('0x8')](),controller[_0x1886('0x9')]);router[_0x1886('0xa')](_0x1886('0xb'),auth[_0x1886('0x8')](),controller[_0x1886('0xc')]);router[_0x1886('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1886('0xe')](_0x1886('0xb'),auth[_0x1886('0x8')](),controller[_0x1886('0xf')]);router[_0x1886('0x10')](_0x1886('0xb'),auth[_0x1886('0x8')](),controller[_0x1886('0x11')]);module[_0x1886('0x12')]=router;
\ No newline at end of file
index 8bea105..e32719c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x946b=['exports','ENUM','string','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize'];(function(_0x14090e,_0x30c2f7){var _0x554da7=function(_0x165d16){while(--_0x165d16){_0x14090e['push'](_0x14090e['shift']());}};_0x554da7(++_0x30c2f7);}(_0x946b,0x1ee));var _0xb946=function(_0x336bf1,_0x12e1b3){_0x336bf1=_0x336bf1-0x0;var _0x56811d=_0x946b[_0x336bf1];return _0x56811d;};'use strict';var Sequelize=require(_0xb946('0x0'));module[_0xb946('0x1')]={'type':{'type':Sequelize[_0xb946('0x2')](_0xb946('0x3'),'variable','customVariable',_0xb946('0x4'),_0xb946('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xb946('0x6')]},'key':{'type':Sequelize[_0xb946('0x6')]},'keyType':{'type':Sequelize[_0xb946('0x2')]('string','variable',_0xb946('0x7'))},'keyContent':{'type':Sequelize[_0xb946('0x6')]},'idField':{'type':Sequelize[_0xb946('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xb946('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb946('0x6')]}};
\ No newline at end of file
+var _0xe1f5=['BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING','variable'];(function(_0xed9af6,_0x119e3b){var _0x313a55=function(_0x3d871a){while(--_0x3d871a){_0xed9af6['push'](_0xed9af6['shift']());}};_0x313a55(++_0x119e3b);}(_0xe1f5,0xf1));var _0x5e1f=function(_0x53fc98,_0x56b620){_0x53fc98=_0x53fc98-0x0;var _0x22e248=_0xe1f5[_0x53fc98];return _0x22e248;};'use strict';var Sequelize=require(_0x5e1f('0x0'));module[_0x5e1f('0x1')]={'type':{'type':Sequelize[_0x5e1f('0x2')](_0x5e1f('0x3'),'variable',_0x5e1f('0x4'),_0x5e1f('0x5'),_0x5e1f('0x6')),'defaultValue':_0x5e1f('0x3')},'content':{'type':Sequelize[_0x5e1f('0x7')]},'key':{'type':Sequelize[_0x5e1f('0x7')]},'keyType':{'type':Sequelize[_0x5e1f('0x2')](_0x5e1f('0x3'),_0x5e1f('0x8'),'customVariable')},'keyContent':{'type':Sequelize[_0x5e1f('0x7')]},'idField':{'type':Sequelize[_0x5e1f('0x7')]},'nameField':{'type':Sequelize[_0x5e1f('0x7')]},'customField':{'type':Sequelize[_0x5e1f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5e1f('0x7')]}};
\ No newline at end of file
index aadf1a9..6bc52d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19b7=['util','sox','to-csv','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','set','Content-Range','apply','reject','update','then','destroy','name','index','map','ZohoField','rawAttributes','fieldName','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','intersection','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x16bb0e,_0x343132){var _0x102b8b=function(_0x17a62b){while(--_0x17a62b){_0x16bb0e['push'](_0x16bb0e['shift']());}};_0x102b8b(++_0x343132);}(_0x19b7,0x157));var _0x719b=function(_0x4c9f7f,_0x191da9){_0x4c9f7f=_0x4c9f7f-0x0;var _0x1a3fea=_0x19b7[_0x4c9f7f];return _0x1a3fea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x719b('0x0'));var zipdir=require(_0x719b('0x1'));var jsonpatch=require(_0x719b('0x2'));var rp=require(_0x719b('0x3'));var moment=require(_0x719b('0x4'));var BPromise=require(_0x719b('0x5'));var Mustache=require(_0x719b('0x6'));var util=require(_0x719b('0x7'));var path=require('path');var sox=require(_0x719b('0x8'));var csv=require(_0x719b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x719b('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x719b('0xb'));var toCsv=require(_0x719b('0x9'));var querystring=require(_0x719b('0xc'));var Papa=require('papaparse');var Redis=require(_0x719b('0xd'));var authService=require(_0x719b('0xe'));var qs=require(_0x719b('0xf'));var as=require(_0x719b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x719b('0x11'))(_0x719b('0x12'));var utils=require(_0x719b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x719b('0x14'));var db=require(_0x719b('0x15'))['db'];function respondWithStatusCode(_0x4aa65a,_0x4067df){_0x4067df=_0x4067df||0xcc;return function(_0x2f69d0){if(_0x2f69d0){return _0x4aa65a[_0x719b('0x16')](_0x4067df);}return _0x4aa65a[_0x719b('0x17')](_0x4067df)[_0x719b('0x18')]();};}function respondWithResult(_0x597cbf,_0x3f6277){_0x3f6277=_0x3f6277||0xc8;return function(_0x118517){if(_0x118517){return _0x597cbf[_0x719b('0x17')](_0x3f6277)[_0x719b('0x19')](_0x118517);}};}function respondWithFilteredResult(_0x3f1b45,_0x13ce8a){return function(_0xee962){if(_0xee962){var _0x21017c=typeof _0x13ce8a['offset']===_0x719b('0x1a')&&typeof _0x13ce8a['limit']==='undefined';var _0x380a86=_0xee962['count'];var _0x4940f6=_0x21017c?0x0:_0x13ce8a[_0x719b('0x1b')];var _0x1af0ba=_0x21017c?_0xee962[_0x719b('0x1c')]:_0x13ce8a['offset']+_0x13ce8a['limit'];var _0x296c80;if(_0x1af0ba>=_0x380a86){_0x1af0ba=_0x380a86;_0x296c80=0xc8;}else{_0x296c80=0xce;}_0x3f1b45[_0x719b('0x17')](_0x296c80);return _0x3f1b45[_0x719b('0x1d')](_0x719b('0x1e'),_0x4940f6+'-'+_0x1af0ba+'/'+_0x380a86)[_0x719b('0x19')](_0xee962);}return null;};}function patchUpdates(_0x3a8fd3){return function(_0x2da8e3){try{jsonpatch[_0x719b('0x1f')](_0x2da8e3,_0x3a8fd3,!![]);}catch(_0xcae0a0){return BPromise[_0x719b('0x20')](_0xcae0a0);}return _0x2da8e3['save']();};}function saveUpdates(_0x1f239f,_0x232f27){return function(_0x5e2a41){if(_0x5e2a41){return _0x5e2a41[_0x719b('0x21')](_0x1f239f)[_0x719b('0x22')](function(_0x556185){return _0x556185;});}return null;};}function removeEntity(_0x18c0ae,_0x33f3d1){return function(_0x1b6082){if(_0x1b6082){return _0x1b6082[_0x719b('0x23')]()[_0x719b('0x22')](function(){_0x18c0ae['status'](0xcc)[_0x719b('0x18')]();});}};}function handleEntityNotFound(_0x629486,_0x14968a){return function(_0x4059d2){if(!_0x4059d2){_0x629486[_0x719b('0x16')](0x194);}return _0x4059d2;};}function handleError(_0x399f89,_0x18ee62){_0x18ee62=_0x18ee62||0x1f4;return function(_0x545301){logger['error'](_0x545301['stack']);if(_0x545301[_0x719b('0x24')]){delete _0x545301[_0x719b('0x24')];}_0x399f89[_0x719b('0x17')](_0x18ee62)['send'](_0x545301);};}exports[_0x719b('0x25')]=function(_0x3d7a25,_0x3aad95){var _0x4686be={},_0x277362={},_0x1e9736={'count':0x0,'rows':[]};var _0x4fd5c3=_[_0x719b('0x26')](db[_0x719b('0x27')][_0x719b('0x28')],function(_0x12dcca){return{'name':_0x12dcca[_0x719b('0x29')],'type':_0x12dcca['type'][_0x719b('0x2a')]};});_0x277362[_0x719b('0x2b')]=_[_0x719b('0x26')](_0x4fd5c3,'name');_0x277362['query']=_[_0x719b('0x2c')](_0x3d7a25[_0x719b('0x2d')]);_0x277362[_0x719b('0x2e')]=_['intersection'](_0x277362['model'],_0x277362[_0x719b('0x2d')]);_0x4686be[_0x719b('0x2f')]=_['intersection'](_0x277362[_0x719b('0x2b')],qs[_0x719b('0x30')](_0x3d7a25[_0x719b('0x2d')][_0x719b('0x30')]));_0x4686be[_0x719b('0x2f')]=_0x4686be[_0x719b('0x2f')][_0x719b('0x31')]?_0x4686be[_0x719b('0x2f')]:_0x277362['model'];if(!_0x3d7a25[_0x719b('0x2d')][_0x719b('0x32')](_0x719b('0x33'))){_0x4686be[_0x719b('0x34')]=qs['limit'](_0x3d7a25['query'][_0x719b('0x34')]);_0x4686be[_0x719b('0x1b')]=qs[_0x719b('0x1b')](_0x3d7a25[_0x719b('0x2d')][_0x719b('0x1b')]);}_0x4686be['order']=qs[_0x719b('0x35')](_0x3d7a25[_0x719b('0x2d')][_0x719b('0x35')]);_0x4686be[_0x719b('0x36')]=qs[_0x719b('0x2e')](_[_0x719b('0x37')](_0x3d7a25[_0x719b('0x2d')],_0x277362[_0x719b('0x2e')]),_0x4fd5c3);if(_0x3d7a25[_0x719b('0x2d')]['filter']){_0x4686be[_0x719b('0x36')]=_[_0x719b('0x38')](_0x4686be[_0x719b('0x36')],{'$or':_[_0x719b('0x26')](_0x4fd5c3,function(_0x440c88){if(_0x440c88['type']!==_0x719b('0x39')){var _0x5837ec={};_0x5837ec[_0x440c88[_0x719b('0x24')]]={'$like':'%'+_0x3d7a25[_0x719b('0x2d')][_0x719b('0x3a')]+'%'};return _0x5837ec;}})});}_0x4686be=_[_0x719b('0x38')]({},_0x4686be,_0x3d7a25[_0x719b('0x3b')]);var _0x3c5456={'where':_0x4686be[_0x719b('0x36')]};return db[_0x719b('0x27')][_0x719b('0x1c')](_0x3c5456)['then'](function(_0x576c9b){_0x1e9736[_0x719b('0x1c')]=_0x576c9b;if(_0x3d7a25[_0x719b('0x2d')][_0x719b('0x3c')]){_0x4686be[_0x719b('0x3d')]=[{'all':!![]}];}return db[_0x719b('0x27')][_0x719b('0x3e')](_0x4686be);})[_0x719b('0x22')](function(_0x2670b8){_0x1e9736[_0x719b('0x3f')]=_0x2670b8;return _0x1e9736;})[_0x719b('0x22')](respondWithFilteredResult(_0x3aad95,_0x4686be))[_0x719b('0x40')](handleError(_0x3aad95,null));};exports['show']=function(_0x43e753,_0x2eabc7){var _0x45acb8={'raw':!![],'where':{'id':_0x43e753['params']['id']}},_0x292b27={};_0x292b27[_0x719b('0x2b')]=_[_0x719b('0x2c')](db['ZohoField'][_0x719b('0x28')]);_0x292b27[_0x719b('0x2d')]=_[_0x719b('0x2c')](_0x43e753[_0x719b('0x2d')]);_0x292b27['filters']=_[_0x719b('0x41')](_0x292b27[_0x719b('0x2b')],_0x292b27['query']);_0x45acb8[_0x719b('0x2f')]=_[_0x719b('0x41')](_0x292b27['model'],qs[_0x719b('0x30')](_0x43e753[_0x719b('0x2d')][_0x719b('0x30')]));_0x45acb8[_0x719b('0x2f')]=_0x45acb8[_0x719b('0x2f')][_0x719b('0x31')]?_0x45acb8[_0x719b('0x2f')]:_0x292b27[_0x719b('0x2b')];if(_0x43e753['query']['includeAll']){_0x45acb8['include']=[{'all':!![]}];}_0x45acb8=_[_0x719b('0x38')]({},_0x45acb8,_0x43e753[_0x719b('0x3b')]);return db[_0x719b('0x27')][_0x719b('0x42')](_0x45acb8)[_0x719b('0x22')](handleEntityNotFound(_0x2eabc7,null))[_0x719b('0x22')](respondWithResult(_0x2eabc7,null))['catch'](handleError(_0x2eabc7,null));};exports[_0x719b('0x43')]=function(_0x548481,_0x119061){return db['ZohoField'][_0x719b('0x43')](_0x548481[_0x719b('0x44')],{})[_0x719b('0x22')](respondWithResult(_0x119061,0xc9))[_0x719b('0x40')](handleError(_0x119061,null));};exports[_0x719b('0x21')]=function(_0x360d4c,_0x4d444d){if(_0x360d4c[_0x719b('0x44')]['id']){delete _0x360d4c[_0x719b('0x44')]['id'];}return db[_0x719b('0x27')][_0x719b('0x42')]({'where':{'id':_0x360d4c[_0x719b('0x45')]['id']}})[_0x719b('0x22')](handleEntityNotFound(_0x4d444d,null))['then'](saveUpdates(_0x360d4c[_0x719b('0x44')],null))[_0x719b('0x22')](respondWithResult(_0x4d444d,null))[_0x719b('0x40')](handleError(_0x4d444d,null));};exports['destroy']=function(_0x1e2b6f,_0x3557a3){return db[_0x719b('0x27')][_0x719b('0x42')]({'where':{'id':_0x1e2b6f[_0x719b('0x45')]['id']}})[_0x719b('0x22')](handleEntityNotFound(_0x3557a3,null))[_0x719b('0x22')](removeEntity(_0x3557a3,null))[_0x719b('0x40')](handleError(_0x3557a3,null));};
\ No newline at end of file
+var _0xb5d7=['type','model','map','name','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','length','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','sendStatus','stack','index','ZohoField'];(function(_0x54e631,_0x3b8396){var _0x3c6b6a=function(_0x48cea6){while(--_0x48cea6){_0x54e631['push'](_0x54e631['shift']());}};_0x3c6b6a(++_0x3b8396);}(_0xb5d7,0x1da));var _0x7b5d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb5d7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7b5d('0x0'));var rimraf=require(_0x7b5d('0x1'));var zipdir=require(_0x7b5d('0x2'));var jsonpatch=require(_0x7b5d('0x3'));var rp=require('request-promise');var moment=require(_0x7b5d('0x4'));var BPromise=require(_0x7b5d('0x5'));var Mustache=require(_0x7b5d('0x6'));var util=require(_0x7b5d('0x7'));var path=require(_0x7b5d('0x8'));var sox=require(_0x7b5d('0x9'));var csv=require(_0x7b5d('0xa'));var ejs=require(_0x7b5d('0xb'));var fs=require('fs');var fs_extra=require(_0x7b5d('0xc'));var _=require('lodash');var squel=require(_0x7b5d('0xd'));var crypto=require('crypto');var jsforce=require(_0x7b5d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7b5d('0xa'));var querystring=require(_0x7b5d('0xf'));var Papa=require('papaparse');var Redis=require(_0x7b5d('0x10'));var authService=require(_0x7b5d('0x11'));var qs=require(_0x7b5d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b5d('0x13'));var logger=require(_0x7b5d('0x14'))(_0x7b5d('0x15'));var utils=require(_0x7b5d('0x16'));var config=require(_0x7b5d('0x17'));var licenseUtil=require(_0x7b5d('0x18'));var db=require(_0x7b5d('0x19'))['db'];function respondWithStatusCode(_0x4061f2,_0x2faf74){_0x2faf74=_0x2faf74||0xcc;return function(_0x3afb89){if(_0x3afb89){return _0x4061f2['sendStatus'](_0x2faf74);}return _0x4061f2['status'](_0x2faf74)[_0x7b5d('0x1a')]();};}function respondWithResult(_0x5af448,_0x539e27){_0x539e27=_0x539e27||0xc8;return function(_0x49d37d){if(_0x49d37d){return _0x5af448[_0x7b5d('0x1b')](_0x539e27)[_0x7b5d('0x1c')](_0x49d37d);}};}function respondWithFilteredResult(_0x2b277b,_0xc8ed40){return function(_0x39f01c){if(_0x39f01c){var _0x38dfa2=typeof _0xc8ed40['offset']===_0x7b5d('0x1d')&&typeof _0xc8ed40[_0x7b5d('0x1e')]===_0x7b5d('0x1d');var _0x1dbbc2=_0x39f01c[_0x7b5d('0x1f')];var _0x56add9=_0x38dfa2?0x0:_0xc8ed40[_0x7b5d('0x20')];var _0x281eff=_0x38dfa2?_0x39f01c[_0x7b5d('0x1f')]:_0xc8ed40['offset']+_0xc8ed40['limit'];var _0x1a101d;if(_0x281eff>=_0x1dbbc2){_0x281eff=_0x1dbbc2;_0x1a101d=0xc8;}else{_0x1a101d=0xce;}_0x2b277b[_0x7b5d('0x1b')](_0x1a101d);return _0x2b277b[_0x7b5d('0x21')](_0x7b5d('0x22'),_0x56add9+'-'+_0x281eff+'/'+_0x1dbbc2)['json'](_0x39f01c);}return null;};}function patchUpdates(_0x3bfcb5){return function(_0x544c1e){try{jsonpatch['apply'](_0x544c1e,_0x3bfcb5,!![]);}catch(_0x514e8){return BPromise[_0x7b5d('0x23')](_0x514e8);}return _0x544c1e[_0x7b5d('0x24')]();};}function saveUpdates(_0x48ef07,_0x25c102){return function(_0x4259ef){if(_0x4259ef){return _0x4259ef[_0x7b5d('0x25')](_0x48ef07)[_0x7b5d('0x26')](function(_0x31c79d){return _0x31c79d;});}return null;};}function removeEntity(_0x105193,_0x2eff10){return function(_0x1a4352){if(_0x1a4352){return _0x1a4352[_0x7b5d('0x27')]()[_0x7b5d('0x26')](function(){_0x105193[_0x7b5d('0x1b')](0xcc)[_0x7b5d('0x1a')]();});}};}function handleEntityNotFound(_0x37dcbe,_0x44225e){return function(_0x5e5c72){if(!_0x5e5c72){_0x37dcbe[_0x7b5d('0x28')](0x194);}return _0x5e5c72;};}function handleError(_0x3cd322,_0x39cbdf){_0x39cbdf=_0x39cbdf||0x1f4;return function(_0x209b13){logger['error'](_0x209b13[_0x7b5d('0x29')]);if(_0x209b13['name']){delete _0x209b13['name'];}_0x3cd322[_0x7b5d('0x1b')](_0x39cbdf)['send'](_0x209b13);};}exports[_0x7b5d('0x2a')]=function(_0x114f10,_0x5496a2){var _0x2d6b72={},_0x2a73e8={},_0x255303={'count':0x0,'rows':[]};var _0x18c3ae=_['map'](db[_0x7b5d('0x2b')]['rawAttributes'],function(_0x4954bd){return{'name':_0x4954bd['fieldName'],'type':_0x4954bd[_0x7b5d('0x2c')]['key']};});_0x2a73e8[_0x7b5d('0x2d')]=_[_0x7b5d('0x2e')](_0x18c3ae,_0x7b5d('0x2f'));_0x2a73e8['query']=_[_0x7b5d('0x30')](_0x114f10[_0x7b5d('0x31')]);_0x2a73e8[_0x7b5d('0x32')]=_['intersection'](_0x2a73e8[_0x7b5d('0x2d')],_0x2a73e8[_0x7b5d('0x31')]);_0x2d6b72[_0x7b5d('0x33')]=_[_0x7b5d('0x34')](_0x2a73e8[_0x7b5d('0x2d')],qs['fields'](_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x35')]));_0x2d6b72[_0x7b5d('0x33')]=_0x2d6b72[_0x7b5d('0x33')]['length']?_0x2d6b72[_0x7b5d('0x33')]:_0x2a73e8[_0x7b5d('0x2d')];if(!_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x36')](_0x7b5d('0x37'))){_0x2d6b72['limit']=qs[_0x7b5d('0x1e')](_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x1e')]);_0x2d6b72[_0x7b5d('0x20')]=qs[_0x7b5d('0x20')](_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x20')]);}_0x2d6b72[_0x7b5d('0x38')]=qs[_0x7b5d('0x39')](_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x39')]);_0x2d6b72[_0x7b5d('0x3a')]=qs[_0x7b5d('0x32')](_[_0x7b5d('0x3b')](_0x114f10[_0x7b5d('0x31')],_0x2a73e8[_0x7b5d('0x32')]),_0x18c3ae);if(_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x3c')]){_0x2d6b72['where']=_[_0x7b5d('0x3d')](_0x2d6b72[_0x7b5d('0x3a')],{'$or':_['map'](_0x18c3ae,function(_0x3aa1ea){if(_0x3aa1ea['type']!=='VIRTUAL'){var _0x34ae49={};_0x34ae49[_0x3aa1ea['name']]={'$like':'%'+_0x114f10[_0x7b5d('0x31')]['filter']+'%'};return _0x34ae49;}})});}_0x2d6b72=_['merge']({},_0x2d6b72,_0x114f10[_0x7b5d('0x3e')]);var _0x28dfc1={'where':_0x2d6b72[_0x7b5d('0x3a')]};return db['ZohoField'][_0x7b5d('0x1f')](_0x28dfc1)[_0x7b5d('0x26')](function(_0x1c64b9){_0x255303[_0x7b5d('0x1f')]=_0x1c64b9;if(_0x114f10[_0x7b5d('0x31')][_0x7b5d('0x3f')]){_0x2d6b72[_0x7b5d('0x40')]=[{'all':!![]}];}return db[_0x7b5d('0x2b')][_0x7b5d('0x41')](_0x2d6b72);})[_0x7b5d('0x26')](function(_0x11ee20){_0x255303[_0x7b5d('0x42')]=_0x11ee20;return _0x255303;})[_0x7b5d('0x26')](respondWithFilteredResult(_0x5496a2,_0x2d6b72))[_0x7b5d('0x43')](handleError(_0x5496a2,null));};exports['show']=function(_0x99c7ef,_0x3daf9a){var _0x4b035c={'raw':!![],'where':{'id':_0x99c7ef[_0x7b5d('0x44')]['id']}},_0x39f17b={};_0x39f17b[_0x7b5d('0x2d')]=_[_0x7b5d('0x30')](db[_0x7b5d('0x2b')][_0x7b5d('0x45')]);_0x39f17b[_0x7b5d('0x31')]=_[_0x7b5d('0x30')](_0x99c7ef[_0x7b5d('0x31')]);_0x39f17b[_0x7b5d('0x32')]=_[_0x7b5d('0x34')](_0x39f17b[_0x7b5d('0x2d')],_0x39f17b[_0x7b5d('0x31')]);_0x4b035c[_0x7b5d('0x33')]=_[_0x7b5d('0x34')](_0x39f17b[_0x7b5d('0x2d')],qs[_0x7b5d('0x35')](_0x99c7ef[_0x7b5d('0x31')][_0x7b5d('0x35')]));_0x4b035c['attributes']=_0x4b035c['attributes'][_0x7b5d('0x46')]?_0x4b035c[_0x7b5d('0x33')]:_0x39f17b[_0x7b5d('0x2d')];if(_0x99c7ef[_0x7b5d('0x31')][_0x7b5d('0x3f')]){_0x4b035c[_0x7b5d('0x40')]=[{'all':!![]}];}_0x4b035c=_['merge']({},_0x4b035c,_0x99c7ef[_0x7b5d('0x3e')]);return db[_0x7b5d('0x2b')]['find'](_0x4b035c)[_0x7b5d('0x26')](handleEntityNotFound(_0x3daf9a,null))['then'](respondWithResult(_0x3daf9a,null))[_0x7b5d('0x43')](handleError(_0x3daf9a,null));};exports[_0x7b5d('0x47')]=function(_0x59713c,_0x58c128){return db[_0x7b5d('0x2b')][_0x7b5d('0x47')](_0x59713c[_0x7b5d('0x48')],{})[_0x7b5d('0x26')](respondWithResult(_0x58c128,0xc9))['catch'](handleError(_0x58c128,null));};exports[_0x7b5d('0x25')]=function(_0x36866f,_0x42b71a){if(_0x36866f[_0x7b5d('0x48')]['id']){delete _0x36866f[_0x7b5d('0x48')]['id'];}return db['ZohoField'][_0x7b5d('0x49')]({'where':{'id':_0x36866f['params']['id']}})[_0x7b5d('0x26')](handleEntityNotFound(_0x42b71a,null))[_0x7b5d('0x26')](saveUpdates(_0x36866f[_0x7b5d('0x48')],null))[_0x7b5d('0x26')](respondWithResult(_0x42b71a,null))['catch'](handleError(_0x42b71a,null));};exports[_0x7b5d('0x27')]=function(_0x3479d6,_0x3bfd2c){return db[_0x7b5d('0x2b')][_0x7b5d('0x49')]({'where':{'id':_0x3479d6[_0x7b5d('0x44')]['id']}})[_0x7b5d('0x26')](handleEntityNotFound(_0x3bfd2c,null))[_0x7b5d('0x26')](removeEntity(_0x3bfd2c,null))[_0x7b5d('0x43')](handleError(_0x3bfd2c,null));};
\ No newline at end of file
index 67714ef..53ca89e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['moment','bluebird','request-promise','path','rimraf','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','util','../../config/logger'];(function(_0x20a40a,_0x5967cd){var _0x9ac362=function(_0x212639){while(--_0x212639){_0x20a40a['push'](_0x20a40a['shift']());}};_0x9ac362(++_0x5967cd);}(_0x57ca,0x108));var _0xa57c=function(_0x857289,_0x4db9d7){_0x857289=_0x857289-0x0;var _0x65d330=_0x57ca[_0x857289];return _0x65d330;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var fs=require('fs');var path=require(_0xa57c('0x5'));var rimraf=require(_0xa57c('0x6'));var config=require('../../config/environment');var attributes=require(_0xa57c('0x7'));module[_0xa57c('0x8')]=function(_0x113dcf,_0x19473f){return _0x113dcf[_0xa57c('0x9')](_0xa57c('0xa'),attributes,{'tableName':_0xa57c('0xb'),'paranoid':![],'indexes':[{'name':_0xa57c('0xc'),'fields':['idField',_0xa57c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9582=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','FieldId','lodash'];(function(_0x3950fa,_0x3b4a85){var _0x2abe16=function(_0x478250){while(--_0x478250){_0x3950fa['push'](_0x3950fa['shift']());}};_0x2abe16(++_0x3b4a85);}(_0x9582,0x95));var _0x2958=function(_0x12b998,_0xcc3da1){_0x12b998=_0x12b998-0x0;var _0x19528a=_0x9582[_0x12b998];return _0x19528a;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var logger=require(_0x2958('0x2'))(_0x2958('0x3'));var moment=require(_0x2958('0x4'));var BPromise=require(_0x2958('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2958('0x6'));var rimraf=require(_0x2958('0x7'));var config=require(_0x2958('0x8'));var attributes=require(_0x2958('0x9'));module[_0x2958('0xa')]=function(_0xbde128,_0x88ffaa){return _0xbde128[_0x2958('0xb')](_0x2958('0xc'),attributes,{'tableName':_0x2958('0xd'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':['idField',_0x2958('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index cbe8458..1838491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae3=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x22bf34,_0x39b747){var _0x284714=function(_0x14dd96){while(--_0x14dd96){_0x22bf34['push'](_0x22bf34['shift']());}};_0x284714(++_0x39b747);}(_0xeae3,0x6f));var _0x3eae=function(_0x34ab65,_0x356d84){_0x34ab65=_0x34ab65-0x0;var _0x31532c=_0xeae3[_0x34ab65];return _0x31532c;};'use strict';var _=require(_0x3eae('0x0'));var util=require(_0x3eae('0x1'));var moment=require(_0x3eae('0x2'));var BPromise=require(_0x3eae('0x3'));var rs=require(_0x3eae('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3eae('0x5'))['db'];var utils=require(_0x3eae('0x6'));var logger=require(_0x3eae('0x7'))(_0x3eae('0x8'));var config=require(_0x3eae('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3eae('0xa')][_0x3eae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2e36b3,_0x3c1caa,_0x34c6eb){return new BPromise(function(_0x5a0e9f,_0xbe017d){return client[_0x3eae('0xc')](_0x2e36b3,_0x34c6eb)['then'](function(_0x34c87d){logger[_0x3eae('0xd')](_0x3eae('0xe'),_0x3c1caa,_0x3eae('0xf'));logger['debug']('ZohoField,\x20%s,\x20%s,\x20%s',_0x3c1caa,'request\x20sent',JSON[_0x3eae('0x10')](_0x34c87d));if(_0x34c87d[_0x3eae('0x11')]){if(_0x34c87d[_0x3eae('0x11')][_0x3eae('0x12')]===0x1f4){logger[_0x3eae('0x11')](_0x3eae('0xe'),_0x3c1caa,_0x34c87d['error']['message']);return _0xbe017d(_0x34c87d[_0x3eae('0x11')][_0x3eae('0x13')]);}logger['error']('ZohoField,\x20%s,\x20%s',_0x3c1caa,_0x34c87d[_0x3eae('0x11')][_0x3eae('0x13')]);return _0x5a0e9f(_0x34c87d[_0x3eae('0x11')]['message']);}else{logger[_0x3eae('0xd')]('ZohoField,\x20%s,\x20%s',_0x3c1caa,'request\x20sent');_0x5a0e9f(_0x34c87d[_0x3eae('0x14')][_0x3eae('0x13')]);}})[_0x3eae('0x15')](function(_0x4ed6f3){logger[_0x3eae('0x11')](_0x3eae('0xe'),_0x3c1caa,_0x4ed6f3);_0xbe017d(_0x4ed6f3);});});}
\ No newline at end of file
+var _0xb98a=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2e8893,_0x5f09de){var _0x21bdea=function(_0x37ba01){while(--_0x37ba01){_0x2e8893['push'](_0x2e8893['shift']());}};_0x21bdea(++_0x5f09de);}(_0xb98a,0x189));var _0xab98=function(_0x514835,_0x95fcdf){_0x514835=_0x514835-0x0;var _0x44c151=_0xb98a[_0x514835];return _0x44c151;};'use strict';var _=require(_0xab98('0x0'));var util=require(_0xab98('0x1'));var moment=require(_0xab98('0x2'));var BPromise=require(_0xab98('0x3'));var rs=require(_0xab98('0x4'));var fs=require('fs');var Redis=require(_0xab98('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xab98('0x6'));var logger=require('../../config/logger')(_0xab98('0x7'));var config=require(_0xab98('0x8'));var jayson=require(_0xab98('0x9'));var client=jayson[_0xab98('0xa')][_0xab98('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5327cb,_0x4aafc7,_0x1ad25d){return new BPromise(function(_0x502ec3,_0x3c1051){return client[_0xab98('0xc')](_0x5327cb,_0x1ad25d)['then'](function(_0x3cef9b){logger[_0xab98('0xd')](_0xab98('0xe'),_0x4aafc7,_0xab98('0xf'));logger[_0xab98('0x10')](_0xab98('0x11'),_0x4aafc7,'request\x20sent',JSON[_0xab98('0x12')](_0x3cef9b));if(_0x3cef9b[_0xab98('0x13')]){if(_0x3cef9b['error'][_0xab98('0x14')]===0x1f4){logger[_0xab98('0x13')](_0xab98('0xe'),_0x4aafc7,_0x3cef9b[_0xab98('0x13')]['message']);return _0x3c1051(_0x3cef9b[_0xab98('0x13')]['message']);}logger[_0xab98('0x13')]('ZohoField,\x20%s,\x20%s',_0x4aafc7,_0x3cef9b[_0xab98('0x13')][_0xab98('0x15')]);return _0x502ec3(_0x3cef9b[_0xab98('0x13')][_0xab98('0x15')]);}else{logger[_0xab98('0xd')](_0xab98('0xe'),_0x4aafc7,_0xab98('0xf'));_0x502ec3(_0x3cef9b['result'][_0xab98('0x15')]);}})[_0xab98('0x16')](function(_0x32bf21){logger[_0xab98('0x13')](_0xab98('0xe'),_0x4aafc7,_0x32bf21);_0x3c1051(_0x32bf21);});});}
\ No newline at end of file
index 63bad24..cfb628c 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(_0x475d06,_0x11d6e0){var _0xff53a7=function(_0x56ed80){while(--_0x56ed80){_0x475d06['push'](_0x475d06['shift']());}};_0xff53a7(++_0x11d6e0);}(_0xedd9,0xfc));var _0x9edd=function(_0x7ab269,_0x2dbdfa){_0x7ab269=_0x7ab269-0x0;var _0x30decb=_0xedd9[_0x7ab269];return _0x30decb;};'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(_0x3f9602,_0x132175){var _0x5133ea=function(_0x3cecd2){while(--_0x3cecd2){_0x3f9602['push'](_0x3f9602['shift']());}};_0x5133ea(++_0x132175);}(_0x9c44,0x178));var _0x49c4=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x9c44[_0x255d5b];return _0x3e141a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 90bccaf..dba37c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e8=['INTEGER','BOOLEAN','state','exports','STRING','unique_name_and_version','app.js'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0x27e8,0x1a7));var _0x827e=function(_0x395b84,_0x550bbe){_0x395b84=_0x395b84-0x0;var _0x533163=_0x27e8[_0x395b84];return _0x533163;};'use strict';var Sequelize=require('sequelize');module[_0x827e('0x0')]={'name':{'type':Sequelize[_0x827e('0x1')],'allowNull':![],'unique':_0x827e('0x2')},'version':{'type':Sequelize[_0x827e('0x1')],'allowNull':![],'unique':_0x827e('0x2')},'main':{'type':Sequelize[_0x827e('0x1')],'defaultValue':_0x827e('0x3')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x827e('0x1')]},'size':{'type':Sequelize[_0x827e('0x4')]},'active':{'type':Sequelize[_0x827e('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x827e('0x1')]},'logo':{'type':Sequelize[_0x827e('0x1')]},'state':{'type':Sequelize[_0x827e('0x1')],'unique':_0x827e('0x6')},'description':{'type':Sequelize[_0x827e('0x1')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x827e('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xe4f6=['app.js','state','STRING','unique_name_and_version'];(function(_0x562e86,_0x5cd242){var _0x1ed3f1=function(_0x4e0830){while(--_0x4e0830){_0x562e86['push'](_0x562e86['shift']());}};_0x1ed3f1(++_0x5cd242);}(_0xe4f6,0x19a));var _0x6e4f=function(_0x2f9dff,_0x265749){_0x2f9dff=_0x2f9dff-0x0;var _0x5424fe=_0xe4f6[_0x2f9dff];return _0x5424fe;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6e4f('0x0')],'allowNull':![],'unique':_0x6e4f('0x1')},'version':{'type':Sequelize[_0x6e4f('0x0')],'allowNull':![],'unique':_0x6e4f('0x1')},'main':{'type':Sequelize['STRING'],'defaultValue':_0x6e4f('0x2')},'filename':{'type':Sequelize[_0x6e4f('0x0')]},'path':{'type':Sequelize[_0x6e4f('0x0')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x6e4f('0x0')]},'state':{'type':Sequelize[_0x6e4f('0x0')],'unique':_0x6e4f('0x3')},'description':{'type':Sequelize[_0x6e4f('0x0')]},'title':{'type':Sequelize[_0x6e4f('0x0')]},'remoteUri':{'type':Sequelize[_0x6e4f('0x0')]},'link':{'type':Sequelize[_0x6e4f('0x0')],'defaultValue':'#'}};
\ No newline at end of file
index 90d9ca2..93a452f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['intersection','fields','attributes','length','hasOwnProperty','order','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','create','update','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','status','error','stack','name','send','index','map','Integration','rawAttributes','key','model','query','keys','filters'];(function(_0x489c95,_0x53159c){var _0x10e7a7=function(_0xcb4342){while(--_0xcb4342){_0x489c95['push'](_0x489c95['shift']());}};_0x10e7a7(++_0x53159c);}(_0xf61e,0x191));var _0xef61=function(_0x102085,_0x41b474){_0x102085=_0x102085-0x0;var _0x52ce0b=_0xf61e[_0x102085];return _0x52ce0b;};'use strict';var emlformat=require(_0xef61('0x0'));var rimraf=require(_0xef61('0x1'));var zipdir=require(_0xef61('0x2'));var jsonpatch=require(_0xef61('0x3'));var rp=require(_0xef61('0x4'));var moment=require(_0xef61('0x5'));var BPromise=require(_0xef61('0x6'));var Mustache=require(_0xef61('0x7'));var util=require(_0xef61('0x8'));var path=require(_0xef61('0x9'));var sox=require(_0xef61('0xa'));var csv=require(_0xef61('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef61('0xc'));var _=require(_0xef61('0xd'));var squel=require('squel');var crypto=require(_0xef61('0xe'));var jsforce=require(_0xef61('0xf'));var deskjs=require(_0xef61('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef61('0x11'));var Redis=require(_0xef61('0x12'));var authService=require(_0xef61('0x13'));var qs=require(_0xef61('0x14'));var as=require(_0xef61('0x15'));var hardwareService=require(_0xef61('0x16'));var logger=require(_0xef61('0x17'))(_0xef61('0x18'));var utils=require(_0xef61('0x19'));var config=require(_0xef61('0x1a'));var licenseUtil=require(_0xef61('0x1b'));var db=require(_0xef61('0x1c'))['db'];function respondWithStatusCode(_0x114e1f,_0x318f1c){_0x318f1c=_0x318f1c||0xcc;return function(_0x5de159){if(_0x5de159){return _0x114e1f[_0xef61('0x1d')](_0x318f1c);}return _0x114e1f['status'](_0x318f1c)[_0xef61('0x1e')]();};}function respondWithResult(_0x1db2a9,_0x370ee0){_0x370ee0=_0x370ee0||0xc8;return function(_0x76ef9b){if(_0x76ef9b){return _0x1db2a9['status'](_0x370ee0)[_0xef61('0x1f')](_0x76ef9b);}};}function respondWithFilteredResult(_0x435beb,_0x1224c2){return function(_0x78ff22){if(_0x78ff22){var _0x588a61=typeof _0x1224c2[_0xef61('0x20')]===_0xef61('0x21')&&typeof _0x1224c2['limit']===_0xef61('0x21');var _0x408541=_0x78ff22[_0xef61('0x22')];var _0x22dc1b=_0x588a61?0x0:_0x1224c2[_0xef61('0x20')];var _0x28315a=_0x588a61?_0x78ff22[_0xef61('0x22')]:_0x1224c2['offset']+_0x1224c2[_0xef61('0x23')];var _0x2c8dad;if(_0x28315a>=_0x408541){_0x28315a=_0x408541;_0x2c8dad=0xc8;}else{_0x2c8dad=0xce;}_0x435beb['status'](_0x2c8dad);return _0x435beb[_0xef61('0x24')](_0xef61('0x25'),_0x22dc1b+'-'+_0x28315a+'/'+_0x408541)[_0xef61('0x1f')](_0x78ff22);}return null;};}function patchUpdates(_0x26cf42){return function(_0xb0d7a4){try{jsonpatch[_0xef61('0x26')](_0xb0d7a4,_0x26cf42,!![]);}catch(_0x92ea33){return BPromise['reject'](_0x92ea33);}return _0xb0d7a4['save']();};}function saveUpdates(_0x3d31c1,_0x58bd7d){return function(_0x389d6d){if(_0x389d6d){return _0x389d6d['update'](_0x3d31c1)['then'](function(_0x2f0569){return _0x2f0569;});}return null;};}function removeEntity(_0x5ce99d,_0x53181b){return function(_0xfbee94){if(_0xfbee94){return _0xfbee94[_0xef61('0x27')]()[_0xef61('0x28')](function(){_0x5ce99d[_0xef61('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16b144,_0x4e738f){return function(_0x2a6832){if(!_0x2a6832){_0x16b144[_0xef61('0x1d')](0x194);}return _0x2a6832;};}function handleError(_0x2419a9,_0xf4c7c9){_0xf4c7c9=_0xf4c7c9||0x1f4;return function(_0x2155f1){logger[_0xef61('0x2a')](_0x2155f1[_0xef61('0x2b')]);if(_0x2155f1[_0xef61('0x2c')]){delete _0x2155f1[_0xef61('0x2c')];}_0x2419a9[_0xef61('0x29')](_0xf4c7c9)[_0xef61('0x2d')](_0x2155f1);};}exports[_0xef61('0x2e')]=function(_0xeb9a62,_0x63edd4){var _0x1f3572={},_0x85978={},_0x39c15e={'count':0x0,'rows':[]};var _0x393ea9=_[_0xef61('0x2f')](db[_0xef61('0x30')][_0xef61('0x31')],function(_0x53fa3b){return{'name':_0x53fa3b['fieldName'],'type':_0x53fa3b['type'][_0xef61('0x32')]};});_0x85978[_0xef61('0x33')]=_[_0xef61('0x2f')](_0x393ea9,'name');_0x85978[_0xef61('0x34')]=_[_0xef61('0x35')](_0xeb9a62['query']);_0x85978[_0xef61('0x36')]=_['intersection'](_0x85978['model'],_0x85978[_0xef61('0x34')]);_0x1f3572['attributes']=_[_0xef61('0x37')](_0x85978['model'],qs[_0xef61('0x38')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x38')]));_0x1f3572[_0xef61('0x39')]=_0x1f3572[_0xef61('0x39')][_0xef61('0x3a')]?_0x1f3572[_0xef61('0x39')]:_0x85978[_0xef61('0x33')];if(!_0xeb9a62[_0xef61('0x34')][_0xef61('0x3b')]('nolimit')){_0x1f3572[_0xef61('0x23')]=qs[_0xef61('0x23')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x23')]);_0x1f3572[_0xef61('0x20')]=qs['offset'](_0xeb9a62[_0xef61('0x34')][_0xef61('0x20')]);}_0x1f3572[_0xef61('0x3c')]=qs['sort'](_0xeb9a62['query']['sort']);_0x1f3572[_0xef61('0x3d')]=qs['filters'](_['pick'](_0xeb9a62['query'],_0x85978[_0xef61('0x36')]),_0x393ea9);if(_0xeb9a62[_0xef61('0x34')][_0xef61('0x3e')]){_0x1f3572['where']=_['merge'](_0x1f3572['where'],{'$or':_[_0xef61('0x2f')](_0x393ea9,function(_0x32ad44){if(_0x32ad44['type']!==_0xef61('0x3f')){var _0x12f442={};_0x12f442[_0x32ad44[_0xef61('0x2c')]]={'$like':'%'+_0xeb9a62[_0xef61('0x34')]['filter']+'%'};return _0x12f442;}})});}_0x1f3572=_[_0xef61('0x40')]({},_0x1f3572,_0xeb9a62[_0xef61('0x41')]);var _0x3103d4={'where':_0x1f3572[_0xef61('0x3d')]};return db['Integration']['count'](_0x3103d4)[_0xef61('0x28')](function(_0x462972){_0x39c15e[_0xef61('0x22')]=_0x462972;if(_0xeb9a62['query'][_0xef61('0x42')]){_0x1f3572[_0xef61('0x43')]=[{'all':!![]}];}return db[_0xef61('0x30')][_0xef61('0x44')](_0x1f3572);})['then'](function(_0x545597){_0x39c15e['rows']=_0x545597;return _0x39c15e;})[_0xef61('0x28')](respondWithFilteredResult(_0x63edd4,_0x1f3572))[_0xef61('0x45')](handleError(_0x63edd4,null));};exports[_0xef61('0x46')]=function(_0xe40d,_0x3f81a1){var _0x272143={'raw':![],'where':{'id':_0xe40d['params']['id']}},_0xc9b467={};_0xc9b467[_0xef61('0x33')]=_[_0xef61('0x35')](db[_0xef61('0x30')][_0xef61('0x31')]);_0xc9b467['query']=_[_0xef61('0x35')](_0xe40d[_0xef61('0x34')]);_0xc9b467[_0xef61('0x36')]=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],_0xc9b467[_0xef61('0x34')]);_0x272143['attributes']=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],qs[_0xef61('0x38')](_0xe40d['query'][_0xef61('0x38')]));_0x272143[_0xef61('0x39')]=_0x272143[_0xef61('0x39')][_0xef61('0x3a')]?_0x272143[_0xef61('0x39')]:_0xc9b467[_0xef61('0x33')];if(_0xe40d['query'][_0xef61('0x42')]){_0x272143[_0xef61('0x43')]=[{'all':!![]}];}_0x272143=_['merge']({},_0x272143,_0xe40d[_0xef61('0x41')]);return db[_0xef61('0x30')][_0xef61('0x47')](_0x272143)[_0xef61('0x28')](handleEntityNotFound(_0x3f81a1,null))['then'](respondWithResult(_0x3f81a1,null))[_0xef61('0x45')](handleError(_0x3f81a1,null));};exports[_0xef61('0x48')]=function(_0x5e614b,_0x47b09d){return db[_0xef61('0x30')][_0xef61('0x48')](_0x5e614b['body'],{})[_0xef61('0x28')](respondWithResult(_0x47b09d,0xc9))[_0xef61('0x45')](handleError(_0x47b09d,null));};exports[_0xef61('0x49')]=function(_0x2904e0,_0x13bb20){if(_0x2904e0[_0xef61('0x4a')]['id']){delete _0x2904e0[_0xef61('0x4a')]['id'];}return db['Integration'][_0xef61('0x47')]({'where':{'id':_0x2904e0['params']['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x13bb20,null))[_0xef61('0x28')](saveUpdates(_0x2904e0[_0xef61('0x4a')],null))[_0xef61('0x28')](respondWithResult(_0x13bb20,null))[_0xef61('0x45')](handleError(_0x13bb20,null));};exports[_0xef61('0x27')]=function(_0x3e23eb,_0x1565c7){return db[_0xef61('0x30')]['find']({'where':{'id':_0x3e23eb[_0xef61('0x4b')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x1565c7,null))['then'](removeEntity(_0x1565c7,null))['catch'](handleError(_0x1565c7,null));};
\ No newline at end of file
+var _0x5c3c=['VIRTUAL','options','Integration','includeAll','include','findAll','rows','params','merge','catch','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','stack','name','send','index','map','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type'];(function(_0x3d6084,_0x4b738b){var _0x342378=function(_0x394e5b){while(--_0x394e5b){_0x3d6084['push'](_0x3d6084['shift']());}};_0x342378(++_0x4b738b);}(_0x5c3c,0x132));var _0xc5c3=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0x5c3c[_0x298ed3];return _0x5aad28;};'use strict';var emlformat=require(_0xc5c3('0x0'));var rimraf=require(_0xc5c3('0x1'));var zipdir=require(_0xc5c3('0x2'));var jsonpatch=require(_0xc5c3('0x3'));var rp=require('request-promise');var moment=require(_0xc5c3('0x4'));var BPromise=require(_0xc5c3('0x5'));var Mustache=require(_0xc5c3('0x6'));var util=require(_0xc5c3('0x7'));var path=require(_0xc5c3('0x8'));var sox=require(_0xc5c3('0x9'));var csv=require(_0xc5c3('0xa'));var ejs=require(_0xc5c3('0xb'));var fs=require('fs');var fs_extra=require(_0xc5c3('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc5c3('0xd'));var deskjs=require(_0xc5c3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc5c3('0xf'));var Papa=require(_0xc5c3('0x10'));var Redis=require('ioredis');var authService=require(_0xc5c3('0x11'));var qs=require(_0xc5c3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc5c3('0x13'));var logger=require(_0xc5c3('0x14'))(_0xc5c3('0x15'));var utils=require('../../config/utils');var config=require(_0xc5c3('0x16'));var licenseUtil=require(_0xc5c3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b56e6,_0x44d2b9){_0x44d2b9=_0x44d2b9||0xcc;return function(_0x3f0f45){if(_0x3f0f45){return _0x2b56e6['sendStatus'](_0x44d2b9);}return _0x2b56e6[_0xc5c3('0x18')](_0x44d2b9)[_0xc5c3('0x19')]();};}function respondWithResult(_0x1488ab,_0x13a740){_0x13a740=_0x13a740||0xc8;return function(_0xc8a636){if(_0xc8a636){return _0x1488ab['status'](_0x13a740)['json'](_0xc8a636);}};}function respondWithFilteredResult(_0x4445ea,_0x577e1a){return function(_0x1bae87){if(_0x1bae87){var _0xef8b21=typeof _0x577e1a['offset']==='undefined'&&typeof _0x577e1a[_0xc5c3('0x1a')]==='undefined';var _0xa9bc84=_0x1bae87[_0xc5c3('0x1b')];var _0x2ff158=_0xef8b21?0x0:_0x577e1a[_0xc5c3('0x1c')];var _0x28bae6=_0xef8b21?_0x1bae87['count']:_0x577e1a[_0xc5c3('0x1c')]+_0x577e1a[_0xc5c3('0x1a')];var _0x123dba;if(_0x28bae6>=_0xa9bc84){_0x28bae6=_0xa9bc84;_0x123dba=0xc8;}else{_0x123dba=0xce;}_0x4445ea[_0xc5c3('0x18')](_0x123dba);return _0x4445ea['set'](_0xc5c3('0x1d'),_0x2ff158+'-'+_0x28bae6+'/'+_0xa9bc84)[_0xc5c3('0x1e')](_0x1bae87);}return null;};}function patchUpdates(_0x3cc612){return function(_0x3ca20a){try{jsonpatch[_0xc5c3('0x1f')](_0x3ca20a,_0x3cc612,!![]);}catch(_0x564815){return BPromise[_0xc5c3('0x20')](_0x564815);}return _0x3ca20a[_0xc5c3('0x21')]();};}function saveUpdates(_0x370254,_0x2de266){return function(_0x1c5793){if(_0x1c5793){return _0x1c5793[_0xc5c3('0x22')](_0x370254)[_0xc5c3('0x23')](function(_0x5996a0){return _0x5996a0;});}return null;};}function removeEntity(_0x52d638,_0x45affe){return function(_0x38dd9e){if(_0x38dd9e){return _0x38dd9e['destroy']()['then'](function(){_0x52d638[_0xc5c3('0x18')](0xcc)[_0xc5c3('0x19')]();});}};}function handleEntityNotFound(_0x38a3df,_0x52e54a){return function(_0x4af067){if(!_0x4af067){_0x38a3df[_0xc5c3('0x24')](0x194);}return _0x4af067;};}function handleError(_0x22f607,_0x20c506){_0x20c506=_0x20c506||0x1f4;return function(_0x29791c){logger['error'](_0x29791c[_0xc5c3('0x25')]);if(_0x29791c['name']){delete _0x29791c[_0xc5c3('0x26')];}_0x22f607['status'](_0x20c506)[_0xc5c3('0x27')](_0x29791c);};}exports[_0xc5c3('0x28')]=function(_0x4269eb,_0x4773c5){var _0x15361c={},_0x2d07e1={},_0x35a397={'count':0x0,'rows':[]};var _0x4b5a0c=_[_0xc5c3('0x29')](db['Integration'][_0xc5c3('0x2a')],function(_0x43ebfc){return{'name':_0x43ebfc['fieldName'],'type':_0x43ebfc['type'][_0xc5c3('0x2b')]};});_0x2d07e1[_0xc5c3('0x2c')]=_[_0xc5c3('0x29')](_0x4b5a0c,_0xc5c3('0x26'));_0x2d07e1['query']=_[_0xc5c3('0x2d')](_0x4269eb[_0xc5c3('0x2e')]);_0x2d07e1[_0xc5c3('0x2f')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],_0x2d07e1[_0xc5c3('0x2e')]);_0x15361c[_0xc5c3('0x31')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],qs['fields'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x32')]));_0x15361c[_0xc5c3('0x31')]=_0x15361c[_0xc5c3('0x31')][_0xc5c3('0x33')]?_0x15361c[_0xc5c3('0x31')]:_0x2d07e1[_0xc5c3('0x2c')];if(!_0x4269eb['query']['hasOwnProperty'](_0xc5c3('0x34'))){_0x15361c['limit']=qs[_0xc5c3('0x1a')](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x1a')]);_0x15361c[_0xc5c3('0x1c')]=qs[_0xc5c3('0x1c')](_0x4269eb['query'][_0xc5c3('0x1c')]);}_0x15361c[_0xc5c3('0x35')]=qs['sort'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x36')]);_0x15361c[_0xc5c3('0x37')]=qs[_0xc5c3('0x2f')](_[_0xc5c3('0x38')](_0x4269eb[_0xc5c3('0x2e')],_0x2d07e1[_0xc5c3('0x2f')]),_0x4b5a0c);if(_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x39')]){_0x15361c[_0xc5c3('0x37')]=_['merge'](_0x15361c[_0xc5c3('0x37')],{'$or':_['map'](_0x4b5a0c,function(_0x4fdbe6){if(_0x4fdbe6[_0xc5c3('0x3a')]!==_0xc5c3('0x3b')){var _0x1b546e={};_0x1b546e[_0x4fdbe6[_0xc5c3('0x26')]]={'$like':'%'+_0x4269eb[_0xc5c3('0x2e')]['filter']+'%'};return _0x1b546e;}})});}_0x15361c=_['merge']({},_0x15361c,_0x4269eb[_0xc5c3('0x3c')]);var _0xa7cb91={'where':_0x15361c['where']};return db[_0xc5c3('0x3d')]['count'](_0xa7cb91)[_0xc5c3('0x23')](function(_0x2dfd19){_0x35a397[_0xc5c3('0x1b')]=_0x2dfd19;if(_0x4269eb['query'][_0xc5c3('0x3e')]){_0x15361c[_0xc5c3('0x3f')]=[{'all':!![]}];}return db['Integration'][_0xc5c3('0x40')](_0x15361c);})['then'](function(_0x33936c){_0x35a397[_0xc5c3('0x41')]=_0x33936c;return _0x35a397;})['then'](respondWithFilteredResult(_0x4773c5,_0x15361c))['catch'](handleError(_0x4773c5,null));};exports['show']=function(_0xfb64bb,_0x2f02ab){var _0x49b1fc={'raw':![],'where':{'id':_0xfb64bb[_0xc5c3('0x42')]['id']}},_0x1a8490={};_0x1a8490[_0xc5c3('0x2c')]=_[_0xc5c3('0x2d')](db['Integration'][_0xc5c3('0x2a')]);_0x1a8490['query']=_['keys'](_0xfb64bb[_0xc5c3('0x2e')]);_0x1a8490[_0xc5c3('0x2f')]=_['intersection'](_0x1a8490[_0xc5c3('0x2c')],_0x1a8490[_0xc5c3('0x2e')]);_0x49b1fc['attributes']=_[_0xc5c3('0x30')](_0x1a8490['model'],qs[_0xc5c3('0x32')](_0xfb64bb[_0xc5c3('0x2e')]['fields']));_0x49b1fc[_0xc5c3('0x31')]=_0x49b1fc['attributes'][_0xc5c3('0x33')]?_0x49b1fc[_0xc5c3('0x31')]:_0x1a8490['model'];if(_0xfb64bb[_0xc5c3('0x2e')][_0xc5c3('0x3e')]){_0x49b1fc[_0xc5c3('0x3f')]=[{'all':!![]}];}_0x49b1fc=_[_0xc5c3('0x43')]({},_0x49b1fc,_0xfb64bb[_0xc5c3('0x3c')]);return db[_0xc5c3('0x3d')]['find'](_0x49b1fc)[_0xc5c3('0x23')](handleEntityNotFound(_0x2f02ab,null))[_0xc5c3('0x23')](respondWithResult(_0x2f02ab,null))[_0xc5c3('0x44')](handleError(_0x2f02ab,null));};exports[_0xc5c3('0x45')]=function(_0x23002b,_0x4a7330){return db['Integration'][_0xc5c3('0x45')](_0x23002b[_0xc5c3('0x46')],{})[_0xc5c3('0x23')](respondWithResult(_0x4a7330,0xc9))['catch'](handleError(_0x4a7330,null));};exports[_0xc5c3('0x22')]=function(_0x65f720,_0x3a901f){if(_0x65f720[_0xc5c3('0x46')]['id']){delete _0x65f720[_0xc5c3('0x46')]['id'];}return db[_0xc5c3('0x3d')][_0xc5c3('0x47')]({'where':{'id':_0x65f720['params']['id']}})[_0xc5c3('0x23')](handleEntityNotFound(_0x3a901f,null))[_0xc5c3('0x23')](saveUpdates(_0x65f720[_0xc5c3('0x46')],null))['then'](respondWithResult(_0x3a901f,null))[_0xc5c3('0x44')](handleError(_0x3a901f,null));};exports[_0xc5c3('0x48')]=function(_0x3b1bc2,_0x103bde){return db[_0xc5c3('0x3d')]['find']({'where':{'id':_0x3b1bc2[_0xc5c3('0x42')]['id']}})['then'](handleEntityNotFound(_0x103bde,null))[_0xc5c3('0x23')](removeEntity(_0x103bde,null))['catch'](handleError(_0x103bde,null));};
\ No newline at end of file
index eeda26c..aa0c95a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa941=['moment','request-promise','path','../../config/environment','exports','define','integrations','util','../../config/logger','api'];(function(_0x5cf59f,_0x3ef736){var _0x21a3ad=function(_0x302524){while(--_0x302524){_0x5cf59f['push'](_0x5cf59f['shift']());}};_0x21a3ad(++_0x3ef736);}(_0xa941,0x10b));var _0x1a94=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa941[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x1a94('0x0'));var logger=require(_0x1a94('0x1'))(_0x1a94('0x2'));var moment=require(_0x1a94('0x3'));var BPromise=require('bluebird');var rp=require(_0x1a94('0x4'));var fs=require('fs');var path=require(_0x1a94('0x5'));var rimraf=require('rimraf');var config=require(_0x1a94('0x6'));var attributes=require('./integration.attributes');module[_0x1a94('0x7')]=function(_0x242450,_0x1b20a3){return _0x242450[_0x1a94('0x8')]('Integration',attributes,{'tableName':_0x1a94('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f23=['define','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports'];(function(_0x5cd395,_0x507285){var _0x141227=function(_0x5893fe){while(--_0x5893fe){_0x5cd395['push'](_0x5cd395['shift']());}};_0x141227(++_0x507285);}(_0x8f23,0x10f));var _0x38f2=function(_0x4deae3,_0x531d6a){_0x4deae3=_0x4deae3-0x0;var _0x54de2f=_0x8f23[_0x4deae3];return _0x54de2f;};'use strict';var _=require(_0x38f2('0x0'));var util=require('util');var logger=require(_0x38f2('0x1'))(_0x38f2('0x2'));var moment=require(_0x38f2('0x3'));var BPromise=require(_0x38f2('0x4'));var rp=require(_0x38f2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x38f2('0x6'));var config=require('../../config/environment');var attributes=require('./integration.attributes');module[_0x38f2('0x7')]=function(_0x12bd1e,_0x1721ee){return _0x12bd1e[_0x38f2('0x8')]('Integration',attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22e89aa..6504d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Integration,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x9403d,_0xfeb1ad){_0x9403d=_0x9403d-0x0;var _0x4cfe51=_0x7a54[_0x9403d];return _0x4cfe51;};'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')]('Integration,\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 _0xc6ac=['http','request','then','info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1a358d,_0x541b5d){var _0x111e97=function(_0x42453b){while(--_0x42453b){_0x1a358d['push'](_0x1a358d['shift']());}};_0x111e97(++_0x541b5d);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x7bf0e3,_0x22f404){_0x7bf0e3=_0x7bf0e3-0x0;var _0x1bc1c6=_0xc6ac[_0x7bf0e3];return _0x1bc1c6;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}
\ No newline at end of file
index a53eb6d..f76bed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['index','get','/describe','post','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x77b525,_0xd4dc1e){var _0xa83673=function(_0x133b1f){while(--_0x133b1f){_0x77b525['push'](_0x77b525['shift']());}};_0xa83673(++_0xd4dc1e);}(_0x66fa,0x117));var _0xa66f=function(_0x1b5ff7,_0x1705dd){_0x1b5ff7=_0x1b5ff7-0x0;var _0x14096a=_0x66fa[_0x1b5ff7];return _0x14096a;};'use strict';var multer=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var path=require('path');var timeout=require(_0xa66f('0x2'));var express=require(_0xa66f('0x3'));var router=express[_0xa66f('0x4')]();var fs_extra=require(_0xa66f('0x5'));var auth=require(_0xa66f('0x6'));var interaction=require(_0xa66f('0x7'));var config=require(_0xa66f('0x8'));var controller=require('./integrationReport.controller');router['get']('/',auth[_0xa66f('0x9')](),controller[_0xa66f('0xa')]);router[_0xa66f('0xb')](_0xa66f('0xc'),auth[_0xa66f('0x9')](),controller['describe']);router[_0xa66f('0xb')]('/:id',auth[_0xa66f('0x9')](),controller['show']);router[_0xa66f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa66f('0xe'),auth[_0xa66f('0x9')](),controller['update']);router[_0xa66f('0xf')]('/:id',auth[_0xa66f('0x9')](),controller['destroy']);module[_0xa66f('0x10')]=router;
\ No newline at end of file
+var _0x57ca=['create','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x5ae60a,_0x36806f){var _0x5c29c8=function(_0x17a6b5){while(--_0x17a6b5){_0x5ae60a['push'](_0x5ae60a['shift']());}};_0x5c29c8(++_0x36806f);}(_0x57ca,0x108));var _0xa57c=function(_0x48a20a,_0x1f3fc3){_0x48a20a=_0x48a20a-0x0;var _0x431f47=_0x57ca[_0x48a20a];return _0x431f47;};'use strict';var multer=require('multer');var util=require(_0xa57c('0x0'));var path=require(_0xa57c('0x1'));var timeout=require('connect-timeout');var express=require(_0xa57c('0x2'));var router=express[_0xa57c('0x3')]();var fs_extra=require(_0xa57c('0x4'));var auth=require(_0xa57c('0x5'));var interaction=require(_0xa57c('0x6'));var config=require('../../config/environment');var controller=require(_0xa57c('0x7'));router[_0xa57c('0x8')]('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0xa')]);router[_0xa57c('0x8')](_0xa57c('0xb'),auth[_0xa57c('0x9')](),controller[_0xa57c('0xc')]);router['get'](_0xa57c('0xd'),auth['isAuthenticated'](),controller[_0xa57c('0xe')]);router[_0xa57c('0xf')]('/',auth['isAuthenticated'](),controller[_0xa57c('0x10')]);router['put'](_0xa57c('0xd'),auth[_0xa57c('0x9')](),controller['update']);router[_0xa57c('0x11')]('/:id',auth[_0xa57c('0x9')](),controller[_0xa57c('0x12')]);module[_0xa57c('0x13')]=router;
\ No newline at end of file
index 3cbc730..1d0a417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718d=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED'];(function(_0x36f8c5,_0x173213){var _0x3dee1a=function(_0x575953){while(--_0x575953){_0x36f8c5['push'](_0x36f8c5['shift']());}};_0x3dee1a(++_0x173213);}(_0x718d,0x9c));var _0xd718=function(_0x13a49b,_0x55d918){_0x13a49b=_0x13a49b-0x0;var _0x76ec7e=_0x718d[_0x13a49b];return _0x76ec7e;};'use strict';var Sequelize=require(_0xd718('0x0'));module[_0xd718('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0xd718('0x2')]},'ticketId':{'type':Sequelize[_0xd718('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xd718('0x2')]},'uniqueid':{'type':Sequelize[_0xd718('0x2')]},'calleridnum':{'type':Sequelize[_0xd718('0x2')]},'calleridname':{'type':Sequelize[_0xd718('0x2')]},'queue':{'type':Sequelize[_0xd718('0x2')]},'interface':{'type':Sequelize[_0xd718('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xd718('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xd718('0x4')]},'agentcomplete':{'type':Sequelize[_0xd718('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xd718('0x4')]},'agentacw':{'type':Sequelize[_0xd718('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xd718('0x4')]},'reason':{'type':Sequelize[_0xd718('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xd718('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xd718('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xd718('0x3')]},'lastevent':{'type':Sequelize[_0xd718('0x2')]},'channel':{'type':Sequelize[_0xd718('0x2')]},'channelstate':{'type':Sequelize[_0xd718('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd718('0x2')]},'connectedlinename':{'type':Sequelize[_0xd718('0x2')]},'language':{'type':Sequelize[_0xd718('0x2')]},'accountcode':{'type':Sequelize[_0xd718('0x2')]},'context':{'type':Sequelize[_0xd718('0x2')]},'exten':{'type':Sequelize[_0xd718('0x2')]},'priority':{'type':Sequelize[_0xd718('0x2')]},'destchannel':{'type':Sequelize[_0xd718('0x2')]},'destchannelstate':{'type':Sequelize[_0xd718('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xd718('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xd718('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xd718('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd718('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xd718('0x2')]},'destcontext':{'type':Sequelize[_0xd718('0x2')]},'destexten':{'type':Sequelize[_0xd718('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xd718('0x2')]},'messageId':{'type':Sequelize[_0xd718('0x2')]},'inReplyTo':{'type':Sequelize[_0xd718('0x2')]},'subject':{'type':Sequelize[_0xd718('0x2')]},'from':{'type':Sequelize[_0xd718('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xd718('0x6')]},'html':{'type':Sequelize[_0xd718('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0xd718('0x7')](_0xd718('0x8'),_0xd718('0x9'),_0xd718('0xa'),_0xd718('0xb'))},'url':{'type':Sequelize[_0xd718('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xd718('0x2')]},'projectId':{'type':Sequelize[_0xd718('0x4')]}};
\ No newline at end of file
+var _0xbe7e=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize'];(function(_0x400825,_0x2e8768){var _0x18bd6e=function(_0x45d44a){while(--_0x45d44a){_0x400825['push'](_0x400825['shift']());}};_0x18bd6e(++_0x2e8768);}(_0xbe7e,0x15b));var _0xebe7=function(_0x3149f4,_0x4e9c3f){_0x3149f4=_0x3149f4-0x0;var _0x3c762c=_0xbe7e[_0x3149f4];return _0x3c762c;};'use strict';var Sequelize=require(_0xebe7('0x0'));module[_0xebe7('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xebe7('0x2')]},'exitStatus':{'type':Sequelize[_0xebe7('0x2')]},'ticketId':{'type':Sequelize[_0xebe7('0x2')]},'integrationId':{'type':Sequelize[_0xebe7('0x3')]},'contacts':{'type':Sequelize[_0xebe7('0x2')]},'uniqueid':{'type':Sequelize[_0xebe7('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xebe7('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xebe7('0x4')]},'agentconnectAt':{'type':Sequelize[_0xebe7('0x4')]},'holdtime':{'type':Sequelize[_0xebe7('0x3')]},'agentcomplete':{'type':Sequelize[_0xebe7('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xebe7('0x4')]},'talktime':{'type':Sequelize[_0xebe7('0x3')]},'agentacw':{'type':Sequelize[_0xebe7('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xebe7('0x3')]},'reason':{'type':Sequelize[_0xebe7('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xebe7('0x4')]},'agentdump':{'type':Sequelize[_0xebe7('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xebe7('0x2')]},'channel':{'type':Sequelize[_0xebe7('0x2')]},'channelstate':{'type':Sequelize[_0xebe7('0x3')]},'channelstatedesc':{'type':Sequelize[_0xebe7('0x2')]},'connectedlinenum':{'type':Sequelize[_0xebe7('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xebe7('0x2')]},'accountcode':{'type':Sequelize[_0xebe7('0x2')]},'context':{'type':Sequelize[_0xebe7('0x2')]},'exten':{'type':Sequelize[_0xebe7('0x2')]},'priority':{'type':Sequelize[_0xebe7('0x2')]},'destchannel':{'type':Sequelize[_0xebe7('0x2')]},'destchannelstate':{'type':Sequelize[_0xebe7('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xebe7('0x2')]},'destcalleridnum':{'type':Sequelize[_0xebe7('0x2')]},'destcalleridname':{'type':Sequelize[_0xebe7('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xebe7('0x2')]},'destlanguage':{'type':Sequelize[_0xebe7('0x2')]},'destaccountcode':{'type':Sequelize[_0xebe7('0x2')]},'destcontext':{'type':Sequelize[_0xebe7('0x2')]},'destexten':{'type':Sequelize[_0xebe7('0x2')]},'destpriority':{'type':Sequelize[_0xebe7('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xebe7('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xebe7('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xebe7('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0xebe7('0x6')]},'status':{'type':Sequelize[_0xebe7('0x7')](_0xebe7('0x8'),_0xebe7('0x9'),_0xebe7('0xa'),_0xebe7('0xb'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0xebe7('0x2')]},'appdata':{'type':Sequelize[_0xebe7('0x2')]},'projectId':{'type':Sequelize[_0xebe7('0x3')]}};
\ No newline at end of file
index f0c100d..e92fd07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9054=['show','params','include','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','limit','undefined','count','offset','status','set','apply','then','destroy','sendStatus','error','name','send','IntegrationReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','merge','map','options','includeAll','findAll','rows','catch'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x9054,0x9e));var _0x4905=function(_0x517ae4,_0x413e18){_0x517ae4=_0x517ae4-0x0;var _0x54569e=_0x9054[_0x517ae4];return _0x54569e;};'use strict';var emlformat=require(_0x4905('0x0'));var rimraf=require(_0x4905('0x1'));var zipdir=require(_0x4905('0x2'));var jsonpatch=require(_0x4905('0x3'));var rp=require(_0x4905('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4905('0x5'));var util=require(_0x4905('0x6'));var path=require(_0x4905('0x7'));var sox=require('sox');var csv=require(_0x4905('0x8'));var ejs=require(_0x4905('0x9'));var fs=require('fs');var fs_extra=require(_0x4905('0xa'));var _=require(_0x4905('0xb'));var squel=require(_0x4905('0xc'));var crypto=require(_0x4905('0xd'));var jsforce=require(_0x4905('0xe'));var deskjs=require(_0x4905('0xf'));var toCsv=require(_0x4905('0x8'));var querystring=require(_0x4905('0x10'));var Papa=require('papaparse');var Redis=require(_0x4905('0x11'));var authService=require(_0x4905('0x12'));var qs=require(_0x4905('0x13'));var as=require(_0x4905('0x14'));var hardwareService=require(_0x4905('0x15'));var logger=require(_0x4905('0x16'))(_0x4905('0x17'));var utils=require(_0x4905('0x18'));var config=require(_0x4905('0x19'));var licenseUtil=require(_0x4905('0x1a'));var db=require(_0x4905('0x1b'))['db'];function respondWithStatusCode(_0x20df69,_0x30f529){_0x30f529=_0x30f529||0xcc;return function(_0x28835e){if(_0x28835e){return _0x20df69['sendStatus'](_0x30f529);}return _0x20df69['status'](_0x30f529)[_0x4905('0x1c')]();};}function respondWithResult(_0x303400,_0x861434){_0x861434=_0x861434||0xc8;return function(_0x59751f){if(_0x59751f){return _0x303400['status'](_0x861434)[_0x4905('0x1d')](_0x59751f);}};}function respondWithFilteredResult(_0x3dea66,_0x410bd6){return function(_0x1bd176){if(_0x1bd176){var _0x4e0b0e=typeof _0x410bd6['offset']==='undefined'&&typeof _0x410bd6[_0x4905('0x1e')]===_0x4905('0x1f');var _0x5c6b28=_0x1bd176[_0x4905('0x20')];var _0x568eee=_0x4e0b0e?0x0:_0x410bd6[_0x4905('0x21')];var _0x2384f5=_0x4e0b0e?_0x1bd176[_0x4905('0x20')]:_0x410bd6[_0x4905('0x21')]+_0x410bd6['limit'];var _0x599fea;if(_0x2384f5>=_0x5c6b28){_0x2384f5=_0x5c6b28;_0x599fea=0xc8;}else{_0x599fea=0xce;}_0x3dea66[_0x4905('0x22')](_0x599fea);return _0x3dea66[_0x4905('0x23')]('Content-Range',_0x568eee+'-'+_0x2384f5+'/'+_0x5c6b28)[_0x4905('0x1d')](_0x1bd176);}return null;};}function patchUpdates(_0x234a0d){return function(_0x480b00){try{jsonpatch[_0x4905('0x24')](_0x480b00,_0x234a0d,!![]);}catch(_0x30cb41){return BPromise['reject'](_0x30cb41);}return _0x480b00['save']();};}function saveUpdates(_0x3925d8,_0x43be14){return function(_0x5d43c0){if(_0x5d43c0){return _0x5d43c0['update'](_0x3925d8)[_0x4905('0x25')](function(_0x4240ba){return _0x4240ba;});}return null;};}function removeEntity(_0x19c37b,_0x184e03){return function(_0x2b7b82){if(_0x2b7b82){return _0x2b7b82[_0x4905('0x26')]()[_0x4905('0x25')](function(){_0x19c37b['status'](0xcc)[_0x4905('0x1c')]();});}};}function handleEntityNotFound(_0x4f241f,_0x455888){return function(_0x45a654){if(!_0x45a654){_0x4f241f[_0x4905('0x27')](0x194);}return _0x45a654;};}function handleError(_0xaf1b15,_0x3a4686){_0x3a4686=_0x3a4686||0x1f4;return function(_0x465d00){logger[_0x4905('0x28')](_0x465d00['stack']);if(_0x465d00[_0x4905('0x29')]){delete _0x465d00[_0x4905('0x29')];}_0xaf1b15['status'](_0x3a4686)[_0x4905('0x2a')](_0x465d00);};}exports['index']=function(_0x37a257,_0x34c5f4){var _0xf48fae={},_0x1344cd={},_0x4f64c9={'count':0x0,'rows':[]};var _0x2debf3=_['map'](db[_0x4905('0x2b')][_0x4905('0x2c')],function(_0x36bc27){return{'name':_0x36bc27[_0x4905('0x2d')],'type':_0x36bc27[_0x4905('0x2e')][_0x4905('0x2f')]};});_0x1344cd['model']=_['map'](_0x2debf3,_0x4905('0x29'));_0x1344cd[_0x4905('0x30')]=_[_0x4905('0x31')](_0x37a257['query']);_0x1344cd[_0x4905('0x32')]=_[_0x4905('0x33')](_0x1344cd['model'],_0x1344cd['query']);_0xf48fae[_0x4905('0x34')]=_['intersection'](_0x1344cd['model'],qs[_0x4905('0x35')](_0x37a257[_0x4905('0x30')][_0x4905('0x35')]));_0xf48fae[_0x4905('0x34')]=_0xf48fae['attributes'][_0x4905('0x36')]?_0xf48fae[_0x4905('0x34')]:_0x1344cd[_0x4905('0x37')];if(!_0x37a257[_0x4905('0x30')][_0x4905('0x38')](_0x4905('0x39'))){_0xf48fae[_0x4905('0x1e')]=qs[_0x4905('0x1e')](_0x37a257[_0x4905('0x30')][_0x4905('0x1e')]);_0xf48fae['offset']=qs[_0x4905('0x21')](_0x37a257[_0x4905('0x30')][_0x4905('0x21')]);}_0xf48fae['order']=qs[_0x4905('0x3a')](_0x37a257[_0x4905('0x30')]['sort']);_0xf48fae[_0x4905('0x3b')]=qs[_0x4905('0x32')](_['pick'](_0x37a257['query'],_0x1344cd['filters']),_0x2debf3);if(_0x37a257[_0x4905('0x30')]['filter']){_0xf48fae[_0x4905('0x3b')]=_[_0x4905('0x3c')](_0xf48fae[_0x4905('0x3b')],{'$or':_[_0x4905('0x3d')](_0x2debf3,function(_0x1e29a5){if(_0x1e29a5[_0x4905('0x2e')]!=='VIRTUAL'){var _0x3eb8ee={};_0x3eb8ee[_0x1e29a5[_0x4905('0x29')]]={'$like':'%'+_0x37a257[_0x4905('0x30')]['filter']+'%'};return _0x3eb8ee;}})});}_0xf48fae=_[_0x4905('0x3c')]({},_0xf48fae,_0x37a257[_0x4905('0x3e')]);var _0x4e6609={'where':_0xf48fae['where']};return db[_0x4905('0x2b')]['count'](_0x4e6609)['then'](function(_0x128961){_0x4f64c9['count']=_0x128961;if(_0x37a257['query'][_0x4905('0x3f')]){_0xf48fae['include']=[{'all':!![]}];}return db['IntegrationReport'][_0x4905('0x40')](_0xf48fae);})[_0x4905('0x25')](function(_0x5e04f8){_0x4f64c9[_0x4905('0x41')]=_0x5e04f8;return _0x4f64c9;})[_0x4905('0x25')](respondWithFilteredResult(_0x34c5f4,_0xf48fae))[_0x4905('0x42')](handleError(_0x34c5f4,null));};exports[_0x4905('0x43')]=function(_0x4444e9,_0x305050){var _0x31bad8={'raw':![],'where':{'id':_0x4444e9[_0x4905('0x44')]['id']}},_0x1ae346={};_0x1ae346[_0x4905('0x37')]=_[_0x4905('0x31')](db[_0x4905('0x2b')][_0x4905('0x2c')]);_0x1ae346[_0x4905('0x30')]=_[_0x4905('0x31')](_0x4444e9[_0x4905('0x30')]);_0x1ae346[_0x4905('0x32')]=_[_0x4905('0x33')](_0x1ae346[_0x4905('0x37')],_0x1ae346['query']);_0x31bad8['attributes']=_[_0x4905('0x33')](_0x1ae346[_0x4905('0x37')],qs[_0x4905('0x35')](_0x4444e9['query'][_0x4905('0x35')]));_0x31bad8[_0x4905('0x34')]=_0x31bad8['attributes'][_0x4905('0x36')]?_0x31bad8['attributes']:_0x1ae346[_0x4905('0x37')];if(_0x4444e9[_0x4905('0x30')][_0x4905('0x3f')]){_0x31bad8[_0x4905('0x45')]=[{'all':!![]}];}_0x31bad8=_['merge']({},_0x31bad8,_0x4444e9[_0x4905('0x3e')]);return db['IntegrationReport'][_0x4905('0x46')](_0x31bad8)[_0x4905('0x25')](handleEntityNotFound(_0x305050,null))[_0x4905('0x25')](respondWithResult(_0x305050,null))['catch'](handleError(_0x305050,null));};exports[_0x4905('0x47')]=function(_0x4f66c3,_0x13a1d9){return db[_0x4905('0x2b')][_0x4905('0x47')](_0x4f66c3['body'],{})[_0x4905('0x25')](respondWithResult(_0x13a1d9,0xc9))[_0x4905('0x42')](handleError(_0x13a1d9,null));};exports[_0x4905('0x48')]=function(_0x597227,_0x8b23ec){if(_0x597227[_0x4905('0x49')]['id']){delete _0x597227[_0x4905('0x49')]['id'];}return db[_0x4905('0x2b')][_0x4905('0x46')]({'where':{'id':_0x597227[_0x4905('0x44')]['id']}})['then'](handleEntityNotFound(_0x8b23ec,null))[_0x4905('0x25')](saveUpdates(_0x597227[_0x4905('0x49')],null))[_0x4905('0x25')](respondWithResult(_0x8b23ec,null))[_0x4905('0x42')](handleError(_0x8b23ec,null));};exports[_0x4905('0x26')]=function(_0x2094be,_0x2fdf7c){return db['IntegrationReport'][_0x4905('0x46')]({'where':{'id':_0x2094be[_0x4905('0x44')]['id']}})['then'](handleEntityNotFound(_0x2fdf7c,null))[_0x4905('0x25')](removeEntity(_0x2fdf7c,null))[_0x4905('0x42')](handleError(_0x2fdf7c,null));};exports[_0x4905('0x4a')]=function(_0x3b93c2,_0x56d90e){return db[_0x4905('0x2b')]['describe']()[_0x4905('0x25')](respondWithResult(_0x56d90e,null))[_0x4905('0x42')](handleError(_0x56d90e,null));};
\ No newline at end of file
+var _0xf6ee=['rimraf','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','rows','show','params','find','create','catch','body','destroy','describe','eml-format'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0xf6ee,0x93));var _0xef6e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf6ee[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xef6e('0x0'));var rimraf=require(_0xef6e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xef6e('0x2'));var rp=require(_0xef6e('0x3'));var moment=require(_0xef6e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xef6e('0x5'));var sox=require(_0xef6e('0x6'));var csv=require(_0xef6e('0x7'));var ejs=require(_0xef6e('0x8'));var fs=require('fs');var fs_extra=require(_0xef6e('0x9'));var _=require(_0xef6e('0xa'));var squel=require('squel');var crypto=require(_0xef6e('0xb'));var jsforce=require(_0xef6e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xef6e('0x7'));var querystring=require(_0xef6e('0xd'));var Papa=require(_0xef6e('0xe'));var Redis=require(_0xef6e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xef6e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xef6e('0x11'));var logger=require(_0xef6e('0x12'))(_0xef6e('0x13'));var utils=require(_0xef6e('0x14'));var config=require(_0xef6e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xef6e('0x16'))['db'];function respondWithStatusCode(_0x599b68,_0x1cc66a){_0x1cc66a=_0x1cc66a||0xcc;return function(_0x46b933){if(_0x46b933){return _0x599b68[_0xef6e('0x17')](_0x1cc66a);}return _0x599b68[_0xef6e('0x18')](_0x1cc66a)[_0xef6e('0x19')]();};}function respondWithResult(_0x34f00c,_0x30c23f){_0x30c23f=_0x30c23f||0xc8;return function(_0x4c20ce){if(_0x4c20ce){return _0x34f00c[_0xef6e('0x18')](_0x30c23f)[_0xef6e('0x1a')](_0x4c20ce);}};}function respondWithFilteredResult(_0x461dd2,_0x33609a){return function(_0xaee56a){if(_0xaee56a){var _0x257d47=typeof _0x33609a[_0xef6e('0x1b')]==='undefined'&&typeof _0x33609a[_0xef6e('0x1c')]===_0xef6e('0x1d');var _0x46d629=_0xaee56a[_0xef6e('0x1e')];var _0x52a243=_0x257d47?0x0:_0x33609a[_0xef6e('0x1b')];var _0x3c9105=_0x257d47?_0xaee56a[_0xef6e('0x1e')]:_0x33609a[_0xef6e('0x1b')]+_0x33609a[_0xef6e('0x1c')];var _0x1bea5e;if(_0x3c9105>=_0x46d629){_0x3c9105=_0x46d629;_0x1bea5e=0xc8;}else{_0x1bea5e=0xce;}_0x461dd2[_0xef6e('0x18')](_0x1bea5e);return _0x461dd2[_0xef6e('0x1f')](_0xef6e('0x20'),_0x52a243+'-'+_0x3c9105+'/'+_0x46d629)[_0xef6e('0x1a')](_0xaee56a);}return null;};}function patchUpdates(_0x1e3fb7){return function(_0x86264e){try{jsonpatch['apply'](_0x86264e,_0x1e3fb7,!![]);}catch(_0x57f0c7){return BPromise[_0xef6e('0x21')](_0x57f0c7);}return _0x86264e[_0xef6e('0x22')]();};}function saveUpdates(_0x1dd12a,_0x2109a4){return function(_0x54fe91){if(_0x54fe91){return _0x54fe91[_0xef6e('0x23')](_0x1dd12a)[_0xef6e('0x24')](function(_0x31bd44){return _0x31bd44;});}return null;};}function removeEntity(_0x2c51f8,_0x262515){return function(_0x4990f5){if(_0x4990f5){return _0x4990f5['destroy']()['then'](function(){_0x2c51f8[_0xef6e('0x18')](0xcc)[_0xef6e('0x19')]();});}};}function handleEntityNotFound(_0x5b6c29,_0x951b3a){return function(_0x8244b8){if(!_0x8244b8){_0x5b6c29['sendStatus'](0x194);}return _0x8244b8;};}function handleError(_0x565a27,_0x5754c1){_0x5754c1=_0x5754c1||0x1f4;return function(_0x3d5840){logger['error'](_0x3d5840[_0xef6e('0x25')]);if(_0x3d5840['name']){delete _0x3d5840[_0xef6e('0x26')];}_0x565a27[_0xef6e('0x18')](_0x5754c1)[_0xef6e('0x27')](_0x3d5840);};}exports[_0xef6e('0x28')]=function(_0x2581b6,_0x25cc87){var _0xe0f2a3={},_0x492ac7={},_0x57a70d={'count':0x0,'rows':[]};var _0x39606a=_[_0xef6e('0x29')](db[_0xef6e('0x2a')][_0xef6e('0x2b')],function(_0x3e8fc6){return{'name':_0x3e8fc6[_0xef6e('0x2c')],'type':_0x3e8fc6[_0xef6e('0x2d')]['key']};});_0x492ac7[_0xef6e('0x2e')]=_[_0xef6e('0x29')](_0x39606a,_0xef6e('0x26'));_0x492ac7[_0xef6e('0x2f')]=_[_0xef6e('0x30')](_0x2581b6[_0xef6e('0x2f')]);_0x492ac7[_0xef6e('0x31')]=_[_0xef6e('0x32')](_0x492ac7[_0xef6e('0x2e')],_0x492ac7[_0xef6e('0x2f')]);_0xe0f2a3[_0xef6e('0x33')]=_['intersection'](_0x492ac7[_0xef6e('0x2e')],qs[_0xef6e('0x34')](_0x2581b6[_0xef6e('0x2f')][_0xef6e('0x34')]));_0xe0f2a3[_0xef6e('0x33')]=_0xe0f2a3[_0xef6e('0x33')][_0xef6e('0x35')]?_0xe0f2a3[_0xef6e('0x33')]:_0x492ac7[_0xef6e('0x2e')];if(!_0x2581b6['query'][_0xef6e('0x36')](_0xef6e('0x37'))){_0xe0f2a3[_0xef6e('0x1c')]=qs[_0xef6e('0x1c')](_0x2581b6[_0xef6e('0x2f')]['limit']);_0xe0f2a3[_0xef6e('0x1b')]=qs[_0xef6e('0x1b')](_0x2581b6['query'][_0xef6e('0x1b')]);}_0xe0f2a3[_0xef6e('0x38')]=qs[_0xef6e('0x39')](_0x2581b6[_0xef6e('0x2f')]['sort']);_0xe0f2a3[_0xef6e('0x3a')]=qs['filters'](_[_0xef6e('0x3b')](_0x2581b6[_0xef6e('0x2f')],_0x492ac7['filters']),_0x39606a);if(_0x2581b6['query']['filter']){_0xe0f2a3[_0xef6e('0x3a')]=_[_0xef6e('0x3c')](_0xe0f2a3['where'],{'$or':_['map'](_0x39606a,function(_0x1105dc){if(_0x1105dc[_0xef6e('0x2d')]!=='VIRTUAL'){var _0x59fbda={};_0x59fbda[_0x1105dc[_0xef6e('0x26')]]={'$like':'%'+_0x2581b6[_0xef6e('0x2f')][_0xef6e('0x3d')]+'%'};return _0x59fbda;}})});}_0xe0f2a3=_[_0xef6e('0x3c')]({},_0xe0f2a3,_0x2581b6[_0xef6e('0x3e')]);var _0x374bc1={'where':_0xe0f2a3['where']};return db[_0xef6e('0x2a')][_0xef6e('0x1e')](_0x374bc1)[_0xef6e('0x24')](function(_0x357211){_0x57a70d[_0xef6e('0x1e')]=_0x357211;if(_0x2581b6[_0xef6e('0x2f')][_0xef6e('0x3f')]){_0xe0f2a3[_0xef6e('0x40')]=[{'all':!![]}];}return db[_0xef6e('0x2a')]['findAll'](_0xe0f2a3);})[_0xef6e('0x24')](function(_0x1678db){_0x57a70d[_0xef6e('0x41')]=_0x1678db;return _0x57a70d;})[_0xef6e('0x24')](respondWithFilteredResult(_0x25cc87,_0xe0f2a3))['catch'](handleError(_0x25cc87,null));};exports[_0xef6e('0x42')]=function(_0x2c2386,_0x71d770){var _0x109831={'raw':![],'where':{'id':_0x2c2386[_0xef6e('0x43')]['id']}},_0x1c5bd7={};_0x1c5bd7[_0xef6e('0x2e')]=_[_0xef6e('0x30')](db['IntegrationReport'][_0xef6e('0x2b')]);_0x1c5bd7[_0xef6e('0x2f')]=_[_0xef6e('0x30')](_0x2c2386[_0xef6e('0x2f')]);_0x1c5bd7[_0xef6e('0x31')]=_[_0xef6e('0x32')](_0x1c5bd7[_0xef6e('0x2e')],_0x1c5bd7[_0xef6e('0x2f')]);_0x109831['attributes']=_[_0xef6e('0x32')](_0x1c5bd7['model'],qs['fields'](_0x2c2386[_0xef6e('0x2f')][_0xef6e('0x34')]));_0x109831[_0xef6e('0x33')]=_0x109831['attributes'][_0xef6e('0x35')]?_0x109831[_0xef6e('0x33')]:_0x1c5bd7[_0xef6e('0x2e')];if(_0x2c2386[_0xef6e('0x2f')][_0xef6e('0x3f')]){_0x109831[_0xef6e('0x40')]=[{'all':!![]}];}_0x109831=_['merge']({},_0x109831,_0x2c2386[_0xef6e('0x3e')]);return db[_0xef6e('0x2a')][_0xef6e('0x44')](_0x109831)[_0xef6e('0x24')](handleEntityNotFound(_0x71d770,null))['then'](respondWithResult(_0x71d770,null))['catch'](handleError(_0x71d770,null));};exports[_0xef6e('0x45')]=function(_0xb786b9,_0x4f55c0){return db[_0xef6e('0x2a')][_0xef6e('0x45')](_0xb786b9['body'],{})[_0xef6e('0x24')](respondWithResult(_0x4f55c0,0xc9))[_0xef6e('0x46')](handleError(_0x4f55c0,null));};exports['update']=function(_0x5110d9,_0x1f943f){if(_0x5110d9[_0xef6e('0x47')]['id']){delete _0x5110d9[_0xef6e('0x47')]['id'];}return db[_0xef6e('0x2a')]['find']({'where':{'id':_0x5110d9[_0xef6e('0x43')]['id']}})[_0xef6e('0x24')](handleEntityNotFound(_0x1f943f,null))[_0xef6e('0x24')](saveUpdates(_0x5110d9[_0xef6e('0x47')],null))[_0xef6e('0x24')](respondWithResult(_0x1f943f,null))[_0xef6e('0x46')](handleError(_0x1f943f,null));};exports[_0xef6e('0x48')]=function(_0x357767,_0x3398f5){return db[_0xef6e('0x2a')][_0xef6e('0x44')]({'where':{'id':_0x357767[_0xef6e('0x43')]['id']}})[_0xef6e('0x24')](handleEntityNotFound(_0x3398f5,null))[_0xef6e('0x24')](removeEntity(_0x3398f5,null))['catch'](handleError(_0x3398f5,null));};exports[_0xef6e('0x49')]=function(_0x4b2f34,_0x2e30ab){return db[_0xef6e('0x2a')]['describe']()[_0xef6e('0x24')](respondWithResult(_0x2e30ab,null))[_0xef6e('0x46')](handleError(_0x2e30ab,null));};
\ No newline at end of file
index ff36ce2..0c968ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aef=['lodash','../../config/logger','api','moment','request-promise','path','./integrationReport.attributes','exports','define','IntegrationReport','report_integration'];(function(_0x278e67,_0x4029e9){var _0x34e665=function(_0x4eeaa3){while(--_0x4eeaa3){_0x278e67['push'](_0x278e67['shift']());}};_0x34e665(++_0x4029e9);}(_0x4aef,0x1b8));var _0xf4ae=function(_0x5b74ef,_0x351870){_0x5b74ef=_0x5b74ef-0x0;var _0x295416=_0x4aef[_0x5b74ef];return _0x295416;};'use strict';var _=require(_0xf4ae('0x0'));var util=require('util');var logger=require(_0xf4ae('0x1'))(_0xf4ae('0x2'));var moment=require(_0xf4ae('0x3'));var BPromise=require('bluebird');var rp=require(_0xf4ae('0x4'));var fs=require('fs');var path=require(_0xf4ae('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf4ae('0x6'));module[_0xf4ae('0x7')]=function(_0x53d978,_0x7408ee){return _0x53d978[_0xf4ae('0x8')](_0xf4ae('0x9'),attributes,{'tableName':_0xf4ae('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf825=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','define','report_integration','lodash','util'];(function(_0x471615,_0x474390){var _0x2f7ce2=function(_0x395ef8){while(--_0x395ef8){_0x471615['push'](_0x471615['shift']());}};_0x2f7ce2(++_0x474390);}(_0xf825,0x82));var _0x5f82=function(_0x189371,_0x14e547){_0x189371=_0x189371-0x0;var _0x4a8117=_0xf825[_0x189371];return _0x4a8117;};'use strict';var _=require(_0x5f82('0x0'));var util=require(_0x5f82('0x1'));var logger=require(_0x5f82('0x2'))('api');var moment=require(_0x5f82('0x3'));var BPromise=require(_0x5f82('0x4'));var rp=require(_0x5f82('0x5'));var fs=require('fs');var path=require(_0x5f82('0x6'));var rimraf=require(_0x5f82('0x7'));var config=require(_0x5f82('0x8'));var attributes=require(_0x5f82('0x9'));module['exports']=function(_0x25e0c1,_0x2e35b4){return _0x25e0c1[_0x5f82('0xa')]('IntegrationReport',attributes,{'tableName':_0x5f82('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4087d3..725301f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x4b2059,_0x376d62){var _0x8c62fa=function(_0x4d735c){while(--_0x4d735c){_0x4b2059['push'](_0x4b2059['shift']());}};_0x8c62fa(++_0x376d62);}(_0x57ca,0x108));var _0xa57c=function(_0x18ad86,_0x47263c){_0x18ad86=_0x18ad86-0x0;var _0x4bf220=_0x57ca[_0x18ad86];return _0x4bf220;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
+var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x4c0e2b,_0x4596fd){var _0x46557b=function(_0x25cb9a){while(--_0x25cb9a){_0x4c0e2b['push'](_0x4c0e2b['shift']());}};_0x46557b(++_0x4596fd);}(_0x57ca,0x108));var _0xa57c=function(_0x4c3810,_0x3e957e){_0x4c3810=_0x4c3810-0x0;var _0x5ee80f=_0x57ca[_0x4c3810];return _0x5ee80f;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
index 19c6c3b..891831f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x744c=['addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','/:id','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','getIntervals','post','create','/:id/sub_intervals'];(function(_0x338f73,_0x1945c8){var _0x163fdf=function(_0x4cd033){while(--_0x4cd033){_0x338f73['push'](_0x338f73['shift']());}};_0x163fdf(++_0x1945c8);}(_0x744c,0xa0));var _0xc744=function(_0x143ea6,_0x3c9999){_0x143ea6=_0x143ea6-0x0;var _0xfb14d=_0x744c[_0x143ea6];return _0xfb14d;};'use strict';var multer=require(_0xc744('0x0'));var util=require(_0xc744('0x1'));var path=require(_0xc744('0x2'));var timeout=require(_0xc744('0x3'));var express=require('express');var router=express[_0xc744('0x4')]();var fs_extra=require(_0xc744('0x5'));var auth=require(_0xc744('0x6'));var interaction=require(_0xc744('0x7'));var config=require('../../config/environment');var controller=require('./interval.controller');router[_0xc744('0x8')]('/',auth[_0xc744('0x9')](),controller[_0xc744('0xa')]);router[_0xc744('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xc744('0xb')]);router[_0xc744('0x8')]('/:id/sub_intervals',auth[_0xc744('0x9')](),controller[_0xc744('0xc')]);router[_0xc744('0xd')]('/',auth[_0xc744('0x9')](),controller[_0xc744('0xe')]);router[_0xc744('0xd')](_0xc744('0xf'),auth['isAuthenticated'](),controller[_0xc744('0x10')]);router[_0xc744('0xd')](_0xc744('0x11'),auth[_0xc744('0x9')](),controller[_0xc744('0x12')]);router[_0xc744('0x13')]('/:id',auth[_0xc744('0x9')](),controller['update']);router[_0xc744('0x14')](_0xc744('0x15'),auth[_0xc744('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf88f=['getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','isAuthenticated','index','get','/:id','show','/:id/sub_intervals'];(function(_0x20cae0,_0x32e6d7){var _0x34ef7b=function(_0x1ace32){while(--_0x1ace32){_0x20cae0['push'](_0x20cae0['shift']());}};_0x34ef7b(++_0x32e6d7);}(_0xf88f,0x1bb));var _0xff88=function(_0x3656f0,_0x46f116){_0x3656f0=_0x3656f0-0x0;var _0x5ba666=_0xf88f[_0x3656f0];return _0x5ba666;};'use strict';var multer=require(_0xff88('0x0'));var util=require(_0xff88('0x1'));var path=require(_0xff88('0x2'));var timeout=require(_0xff88('0x3'));var express=require(_0xff88('0x4'));var router=express[_0xff88('0x5')]();var fs_extra=require(_0xff88('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xff88('0x7'));var config=require(_0xff88('0x8'));var controller=require(_0xff88('0x9'));router['get']('/',auth[_0xff88('0xa')](),controller[_0xff88('0xb')]);router[_0xff88('0xc')](_0xff88('0xd'),auth[_0xff88('0xa')](),controller[_0xff88('0xe')]);router['get'](_0xff88('0xf'),auth[_0xff88('0xa')](),controller[_0xff88('0x10')]);router[_0xff88('0x11')]('/',auth[_0xff88('0xa')](),controller[_0xff88('0x12')]);router[_0xff88('0x11')](_0xff88('0xf'),auth[_0xff88('0xa')](),controller[_0xff88('0x13')]);router[_0xff88('0x11')](_0xff88('0x14'),auth[_0xff88('0xa')](),controller[_0xff88('0x15')]);router[_0xff88('0x16')]('/:id',auth[_0xff88('0xa')](),controller[_0xff88('0x17')]);router[_0xff88('0x18')]('/:id',auth[_0xff88('0xa')](),controller[_0xff88('0x19')]);module[_0xff88('0x1a')]=router;
\ No newline at end of file
index 43fa368..9d19001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee43=['STRING','exports'];(function(_0x3a483c,_0x182dde){var _0x5ce622=function(_0x4b6240){while(--_0x4b6240){_0x3a483c['push'](_0x3a483c['shift']());}};_0x5ce622(++_0x182dde);}(_0xee43,0x179));var _0x3ee4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xee43[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x3ee4('0x0')]={'name':{'type':Sequelize[_0x3ee4('0x1')]},'description':{'type':Sequelize[_0x3ee4('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x835b=['STRING','sequelize','exports'];(function(_0x17becc,_0x265d36){var _0x2f4b9f=function(_0x554090){while(--_0x554090){_0x17becc['push'](_0x17becc['shift']());}};_0x2f4b9f(++_0x265d36);}(_0x835b,0x1cf));var _0xb835=function(_0x57ff59,_0x4b9327){_0x57ff59=_0x57ff59-0x0;var _0x58e63f=_0x835b[_0x57ff59];return _0x58e63f;};'use strict';var Sequelize=require(_0xb835('0x0'));module[_0xb835('0x1')]={'name':{'type':Sequelize[_0xb835('0x2')]},'description':{'type':Sequelize[_0xb835('0x2')]},'interval':{'type':Sequelize[_0xb835('0x2')],'allowNull':!![]}};
\ No newline at end of file
index a81a37a..ebd24ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb420=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','sendStatus','error','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','Interval','findAll','rows','catch','params','keys','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','getIntervals','findOne','addIntervals','sequelize','transaction','IntervalId','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined'];(function(_0xa3e0f7,_0x1b06db){var _0x4ce604=function(_0x29df1e){while(--_0x29df1e){_0xa3e0f7['push'](_0xa3e0f7['shift']());}};_0x4ce604(++_0x1b06db);}(_0xb420,0x1b0));var _0x0b42=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb420[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0b42('0x0'));var zipdir=require(_0x0b42('0x1'));var jsonpatch=require(_0x0b42('0x2'));var rp=require(_0x0b42('0x3'));var moment=require('moment');var BPromise=require(_0x0b42('0x4'));var Mustache=require(_0x0b42('0x5'));var util=require(_0x0b42('0x6'));var path=require(_0x0b42('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0b42('0x8'));var fs=require('fs');var fs_extra=require(_0x0b42('0x9'));var _=require('lodash');var squel=require(_0x0b42('0xa'));var crypto=require(_0x0b42('0xb'));var jsforce=require(_0x0b42('0xc'));var deskjs=require(_0x0b42('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0b42('0xe'));var Redis=require('ioredis');var authService=require(_0x0b42('0xf'));var qs=require(_0x0b42('0x10'));var as=require(_0x0b42('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0b42('0x12'))(_0x0b42('0x13'));var utils=require(_0x0b42('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0b42('0x15'));var db=require(_0x0b42('0x16'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x5e3f0c,_0x3efd71){_0x3efd71=_0x3efd71||0xcc;return function(_0x537d0f){if(_0x537d0f){return _0x5e3f0c['sendStatus'](_0x3efd71);}return _0x5e3f0c[_0x0b42('0x17')](_0x3efd71)[_0x0b42('0x18')]();};}function respondWithResult(_0x16d69c,_0x1ea665){_0x1ea665=_0x1ea665||0xc8;return function(_0x17f3a8){if(_0x17f3a8){return _0x16d69c[_0x0b42('0x17')](_0x1ea665)[_0x0b42('0x19')](_0x17f3a8);}};}function respondWithFilteredResult(_0x43b03c,_0x1052df){return function(_0xb762df){if(_0xb762df){var _0x3a2876=typeof _0x1052df[_0x0b42('0x1a')]===_0x0b42('0x1b')&&typeof _0x1052df[_0x0b42('0x1c')]===_0x0b42('0x1b');var _0x5598cb=_0xb762df[_0x0b42('0x1d')];var _0x25e0e0=_0x3a2876?0x0:_0x1052df[_0x0b42('0x1a')];var _0x36c95c=_0x3a2876?_0xb762df['count']:_0x1052df[_0x0b42('0x1a')]+_0x1052df[_0x0b42('0x1c')];var _0x3f4f10;if(_0x36c95c>=_0x5598cb){_0x36c95c=_0x5598cb;_0x3f4f10=0xc8;}else{_0x3f4f10=0xce;}_0x43b03c[_0x0b42('0x17')](_0x3f4f10);return _0x43b03c[_0x0b42('0x1e')](_0x0b42('0x1f'),_0x25e0e0+'-'+_0x36c95c+'/'+_0x5598cb)['json'](_0xb762df);}return null;};}function patchUpdates(_0x468762){return function(_0x5d2b99){try{jsonpatch[_0x0b42('0x20')](_0x5d2b99,_0x468762,!![]);}catch(_0x19034f){return BPromise[_0x0b42('0x21')](_0x19034f);}return _0x5d2b99[_0x0b42('0x22')]();};}function saveUpdates(_0x527944,_0x340ff3){return function(_0x4f1e77){if(_0x4f1e77){return _0x4f1e77[_0x0b42('0x23')](_0x527944)[_0x0b42('0x24')](function(_0x2c1f0f){return _0x2c1f0f;});}return null;};}function removeEntity(_0x15700a,_0x16974d){return function(_0x1def8a){if(_0x1def8a){return _0x1def8a[_0x0b42('0x25')]()[_0x0b42('0x24')](function(){var _0x1953d2=_0x1def8a[_0x0b42('0x26')]({'plain':!![]});var _0x2bff0e=_0x0b42('0x27');return db[_0x0b42('0x28')]['destroy']({'where':{'type':_0x2bff0e,'resourceId':_0x1953d2['id']}})[_0x0b42('0x24')](function(){return _0x1def8a;});})['then'](function(){_0x15700a[_0x0b42('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5643e3,_0x4cbe05){return function(_0x3b0c3e){if(!_0x3b0c3e){_0x5643e3[_0x0b42('0x29')](0x194);}return _0x3b0c3e;};}function handleError(_0x3372ee,_0x19a804){_0x19a804=_0x19a804||0x1f4;return function(_0x172fd3){logger[_0x0b42('0x2a')](_0x172fd3['stack']);if(_0x172fd3[_0x0b42('0x2b')]){delete _0x172fd3[_0x0b42('0x2b')];}_0x3372ee[_0x0b42('0x17')](_0x19a804)[_0x0b42('0x2c')](_0x172fd3);};}exports['index']=function(_0x3b5013,_0x5e2260){var _0x581626={},_0x56536b={},_0x188493={'count':0x0,'rows':[]};var _0x2bd2f1=_[_0x0b42('0x2d')](db['Interval'][_0x0b42('0x2e')],function(_0x13718){return{'name':_0x13718[_0x0b42('0x2f')],'type':_0x13718[_0x0b42('0x30')][_0x0b42('0x31')]};});_0x56536b[_0x0b42('0x32')]=_['map'](_0x2bd2f1,'name');_0x56536b['query']=_['keys'](_0x3b5013[_0x0b42('0x33')]);_0x56536b[_0x0b42('0x34')]=_['intersection'](_0x56536b[_0x0b42('0x32')],_0x56536b[_0x0b42('0x33')]);_0x581626[_0x0b42('0x35')]=_['intersection'](_0x56536b[_0x0b42('0x32')],qs[_0x0b42('0x36')](_0x3b5013['query'][_0x0b42('0x36')]));_0x581626['attributes']=_0x581626[_0x0b42('0x35')][_0x0b42('0x37')]?_0x581626['attributes']:_0x56536b[_0x0b42('0x32')];if(!_0x3b5013[_0x0b42('0x33')][_0x0b42('0x38')](_0x0b42('0x39'))){_0x581626[_0x0b42('0x1c')]=qs[_0x0b42('0x1c')](_0x3b5013[_0x0b42('0x33')][_0x0b42('0x1c')]);_0x581626[_0x0b42('0x1a')]=qs[_0x0b42('0x1a')](_0x3b5013[_0x0b42('0x33')][_0x0b42('0x1a')]);}_0x581626[_0x0b42('0x3a')]=qs[_0x0b42('0x3b')](_0x3b5013[_0x0b42('0x33')][_0x0b42('0x3b')]);_0x581626[_0x0b42('0x3c')]=qs[_0x0b42('0x34')](_[_0x0b42('0x3d')](_0x3b5013[_0x0b42('0x33')],_0x56536b[_0x0b42('0x34')]),_0x2bd2f1);if(_0x3b5013[_0x0b42('0x33')][_0x0b42('0x3e')]){_0x581626[_0x0b42('0x3c')]=_[_0x0b42('0x3f')](_0x581626[_0x0b42('0x3c')],{'$or':_[_0x0b42('0x2d')](_0x2bd2f1,function(_0x31636){if(_0x31636[_0x0b42('0x30')]!==_0x0b42('0x40')){var _0x11ef51={};_0x11ef51[_0x31636['name']]={'$like':'%'+_0x3b5013[_0x0b42('0x33')][_0x0b42('0x3e')]+'%'};return _0x11ef51;}})});}_0x581626=_[_0x0b42('0x3f')]({},_0x581626,_0x3b5013[_0x0b42('0x41')]);var _0x69671d={'where':_0x581626[_0x0b42('0x3c')]};return db['Interval'][_0x0b42('0x1d')](_0x69671d)[_0x0b42('0x24')](function(_0x46c9f6){_0x188493[_0x0b42('0x1d')]=_0x46c9f6;if(_0x3b5013['query'][_0x0b42('0x42')]){_0x581626[_0x0b42('0x43')]=[{'all':!![]}];}return db[_0x0b42('0x44')][_0x0b42('0x45')](_0x581626);})[_0x0b42('0x24')](function(_0x20b84d){_0x188493[_0x0b42('0x46')]=_0x20b84d;return _0x188493;})['then'](respondWithFilteredResult(_0x5e2260,_0x581626))[_0x0b42('0x47')](handleError(_0x5e2260,null));};exports['show']=function(_0x56e5ad,_0x4d507d){var _0x2ac6b5={'raw':!![],'where':{'id':_0x56e5ad[_0x0b42('0x48')]['id']}},_0x26633a={};_0x26633a[_0x0b42('0x32')]=_[_0x0b42('0x49')](db[_0x0b42('0x44')][_0x0b42('0x2e')]);_0x26633a['query']=_[_0x0b42('0x49')](_0x56e5ad[_0x0b42('0x33')]);_0x26633a[_0x0b42('0x34')]=_[_0x0b42('0x4a')](_0x26633a[_0x0b42('0x32')],_0x26633a['query']);_0x2ac6b5[_0x0b42('0x35')]=_[_0x0b42('0x4a')](_0x26633a['model'],qs[_0x0b42('0x36')](_0x56e5ad[_0x0b42('0x33')][_0x0b42('0x36')]));_0x2ac6b5[_0x0b42('0x35')]=_0x2ac6b5[_0x0b42('0x35')][_0x0b42('0x37')]?_0x2ac6b5[_0x0b42('0x35')]:_0x26633a['model'];if(_0x56e5ad[_0x0b42('0x33')][_0x0b42('0x42')]){_0x2ac6b5[_0x0b42('0x43')]=[{'all':!![]}];}_0x2ac6b5=_['merge']({},_0x2ac6b5,_0x56e5ad['options']);return db[_0x0b42('0x44')][_0x0b42('0x4b')](_0x2ac6b5)[_0x0b42('0x24')](handleEntityNotFound(_0x4d507d,null))[_0x0b42('0x24')](respondWithResult(_0x4d507d,null))[_0x0b42('0x47')](handleError(_0x4d507d,null));};exports[_0x0b42('0x4c')]=function(_0x438a5e,_0xd433de){return db['Interval'][_0x0b42('0x4c')](_0x438a5e[_0x0b42('0x4d')],{})[_0x0b42('0x24')](function(_0x125a9c){var _0x14aa24=_0x438a5e[_0x0b42('0x4e')][_0x0b42('0x26')]({'plain':!![]});if(!_0x14aa24)throw new Error(_0x0b42('0x4f'));if(_0x14aa24[_0x0b42('0x50')]==='user'){var _0x162c2c=_0x125a9c[_0x0b42('0x26')]({'plain':!![]});var _0x25de1c=_0x0b42('0x27');return db[_0x0b42('0x51')][_0x0b42('0x4b')]({'where':{'name':_0x25de1c,'userProfileId':_0x14aa24[_0x0b42('0x52')]},'raw':!![]})[_0x0b42('0x24')](function(_0x3f1b4d){if(_0x3f1b4d&&_0x3f1b4d['autoAssociation']===0x0){return db[_0x0b42('0x28')][_0x0b42('0x4c')]({'name':_0x162c2c[_0x0b42('0x2b')],'resourceId':_0x162c2c['id'],'type':_0x3f1b4d[_0x0b42('0x2b')],'sectionId':_0x3f1b4d['id']},{})[_0x0b42('0x24')](function(){return _0x125a9c;});}else{return _0x125a9c;}})[_0x0b42('0x47')](function(_0x12e7f0){logger['error'](_0x0b42('0x53'),_0x12e7f0);throw _0x12e7f0;});}return _0x125a9c;})[_0x0b42('0x24')](respondWithResult(_0xd433de,0xc9))[_0x0b42('0x47')](handleError(_0xd433de,null));};exports['update']=function(_0x2c003d,_0x4d4c4c){if(_0x2c003d[_0x0b42('0x4d')]['id']){delete _0x2c003d[_0x0b42('0x4d')]['id'];}return db[_0x0b42('0x44')][_0x0b42('0x4b')]({'where':{'id':_0x2c003d[_0x0b42('0x48')]['id']}})['then'](handleEntityNotFound(_0x4d4c4c,null))[_0x0b42('0x24')](saveUpdates(_0x2c003d['body'],null))[_0x0b42('0x24')](respondWithResult(_0x4d4c4c,null))['catch'](handleError(_0x4d4c4c,null));};exports['destroy']=function(_0x2ccd5a,_0x5acbdd){return db[_0x0b42('0x44')]['find']({'where':{'id':_0x2ccd5a[_0x0b42('0x48')]['id']}})[_0x0b42('0x24')](handleEntityNotFound(_0x5acbdd,null))[_0x0b42('0x24')](removeEntity(_0x5acbdd,null))[_0x0b42('0x47')](handleError(_0x5acbdd,null));};exports[_0x0b42('0x54')]=function(_0x30aba0,_0x1f287e,_0x3ebf89){if(_0x30aba0[_0x0b42('0x4d')]['id']){delete _0x30aba0[_0x0b42('0x4d')]['id'];}return db[_0x0b42('0x44')][_0x0b42('0x4b')]({'where':{'id':_0x30aba0['params']['id']}})[_0x0b42('0x24')](handleEntityNotFound(_0x1f287e,null))[_0x0b42('0x24')](function(_0xd6a7fa){if(_0xd6a7fa){_0x30aba0[_0x0b42('0x4d')]['IntervalId']=_0xd6a7fa['id'];return db[_0x0b42('0x44')][_0x0b42('0x4c')](_0x30aba0['body']);}})['then'](respondWithResult(_0x1f287e,null))['catch'](handleError(_0x1f287e,null));};exports[_0x0b42('0x55')]=function(_0x488c46,_0x5fddd2,_0x271091){var _0x407ab6={};var _0x15fafa={};var _0x213966;var _0x11d439;return db['Interval'][_0x0b42('0x56')]({'where':{'id':_0x488c46['params']['id']}})['then'](handleEntityNotFound(_0x5fddd2,null))[_0x0b42('0x24')](function(_0x4c5b25){if(_0x4c5b25){_0x213966=_0x4c5b25;_0x15fafa['model']=_[_0x0b42('0x49')](db[_0x0b42('0x44')][_0x0b42('0x2e')]);_0x15fafa['query']=_[_0x0b42('0x49')](_0x488c46['query']);_0x15fafa['filters']=_['intersection'](_0x15fafa['model'],_0x15fafa[_0x0b42('0x33')]);_0x407ab6['attributes']=_[_0x0b42('0x4a')](_0x15fafa[_0x0b42('0x32')],qs[_0x0b42('0x36')](_0x488c46[_0x0b42('0x33')][_0x0b42('0x36')]));_0x407ab6[_0x0b42('0x35')]=_0x407ab6[_0x0b42('0x35')][_0x0b42('0x37')]?_0x407ab6[_0x0b42('0x35')]:_0x15fafa['model'];_0x407ab6[_0x0b42('0x3a')]=qs[_0x0b42('0x3b')](_0x488c46[_0x0b42('0x33')][_0x0b42('0x3b')]);_0x407ab6['where']=qs[_0x0b42('0x34')](_[_0x0b42('0x3d')](_0x488c46[_0x0b42('0x33')],_0x15fafa['filters']));if(_0x488c46[_0x0b42('0x33')]['filter']){_0x407ab6[_0x0b42('0x3c')]=_[_0x0b42('0x3f')](_0x407ab6[_0x0b42('0x3c')],{'$or':_[_0x0b42('0x2d')](_0x407ab6[_0x0b42('0x35')],function(_0x3b5808){var _0x30e4df={};_0x30e4df[_0x3b5808]={'$like':'%'+_0x488c46[_0x0b42('0x33')]['filter']+'%'};return _0x30e4df;})});}_0x407ab6=_['merge']({},_0x407ab6,_0x488c46['options']);return _0x213966[_0x0b42('0x55')](_0x407ab6);}})[_0x0b42('0x24')](function(_0x515e5e){if(_0x515e5e){_0x11d439=_0x515e5e[_0x0b42('0x37')];if(!_0x488c46[_0x0b42('0x33')][_0x0b42('0x38')](_0x0b42('0x39'))){_0x407ab6[_0x0b42('0x1c')]=qs[_0x0b42('0x1c')](_0x488c46['query'][_0x0b42('0x1c')]);_0x407ab6[_0x0b42('0x1a')]=qs['offset'](_0x488c46[_0x0b42('0x33')][_0x0b42('0x1a')]);}return _0x213966[_0x0b42('0x55')](_0x407ab6);}})[_0x0b42('0x24')](function(_0x1812fb){if(_0x1812fb){return _0x1812fb?{'count':_0x11d439,'rows':_0x1812fb}:null;}})[_0x0b42('0x24')](respondWithResult(_0x5fddd2,null))['catch'](handleError(_0x5fddd2,null));};exports[_0x0b42('0x57')]=function(_0x59e236,_0x1f43fa,_0x19e3a2){return db[_0x0b42('0x44')]['findOne']({'where':{'id':_0x59e236[_0x0b42('0x48')]['id']}})[_0x0b42('0x24')](handleEntityNotFound(_0x1f43fa,null))[_0x0b42('0x24')](function(_0x45dd8d){if(_0x45dd8d){return db[_0x0b42('0x58')][_0x0b42('0x59')](function(_0x23f31e){return db[_0x0b42('0x44')][_0x0b42('0x25')]({'where':{'IntervalId':_0x59e236[_0x0b42('0x48')]['id']},'transaction':_0x23f31e})['then'](function(_0x411437){var _0x31dd9c=_[_0x0b42('0x2d')](_0x59e236[_0x0b42('0x4d')],function(_0xae7c7c){delete _0xae7c7c['id'];_0xae7c7c[_0x0b42('0x5a')]=_0x59e236['params']['id'];return _0xae7c7c;});return db[_0x0b42('0x44')][_0x0b42('0x5b')](_0x31dd9c,{'transaction':_0x23f31e});});})['then'](function(){return db[_0x0b42('0x44')][_0x0b42('0x45')]({'where':{'IntervalId':_0x59e236[_0x0b42('0x48')]['id']}});});}})[_0x0b42('0x24')](respondWithResult(_0x1f43fa,null))[_0x0b42('0x47')](handleError(_0x1f43fa,null));};
\ No newline at end of file
+var _0x9485=['user','role','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','getIntervals','findOne','addIntervals','sequelize','transaction','IntervalId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../components/extensions/rewrite','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','destroy','then','get','Intervals','UserProfileResource','name','send','index','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','Interval','includeAll','include','findAll','catch','show','params','keys','create','body'];(function(_0x5a30fc,_0x20da0f){var _0x504781=function(_0x30f5bd){while(--_0x30f5bd){_0x5a30fc['push'](_0x5a30fc['shift']());}};_0x504781(++_0x20da0f);}(_0x9485,0x166));var _0x5948=function(_0x35beff,_0x26451e){_0x35beff=_0x35beff-0x0;var _0x4a9967=_0x9485[_0x35beff];return _0x4a9967;};'use strict';var emlformat=require(_0x5948('0x0'));var rimraf=require(_0x5948('0x1'));var zipdir=require(_0x5948('0x2'));var jsonpatch=require(_0x5948('0x3'));var rp=require(_0x5948('0x4'));var moment=require('moment');var BPromise=require(_0x5948('0x5'));var Mustache=require(_0x5948('0x6'));var util=require('util');var path=require('path');var sox=require(_0x5948('0x7'));var csv=require(_0x5948('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5948('0x9'));var _=require(_0x5948('0xa'));var squel=require('squel');var crypto=require(_0x5948('0xb'));var jsforce=require(_0x5948('0xc'));var deskjs=require(_0x5948('0xd'));var toCsv=require(_0x5948('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5948('0xe'));var authService=require(_0x5948('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5948('0x10'));var logger=require(_0x5948('0x11'))(_0x5948('0x12'));var utils=require(_0x5948('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x5948('0x14'));var db=require('../../mysqldb')['db'];var extensions=require(_0x5948('0x15'));function respondWithStatusCode(_0x43f7ec,_0x1f9cca){_0x1f9cca=_0x1f9cca||0xcc;return function(_0x188a54){if(_0x188a54){return _0x43f7ec[_0x5948('0x16')](_0x1f9cca);}return _0x43f7ec['status'](_0x1f9cca)[_0x5948('0x17')]();};}function respondWithResult(_0x3d17e4,_0x1335ca){_0x1335ca=_0x1335ca||0xc8;return function(_0x3b013e){if(_0x3b013e){return _0x3d17e4[_0x5948('0x18')](_0x1335ca)[_0x5948('0x19')](_0x3b013e);}};}function respondWithFilteredResult(_0x5a0a7d,_0xfea607){return function(_0x5431d7){if(_0x5431d7){var _0x183026=typeof _0xfea607[_0x5948('0x1a')]===_0x5948('0x1b')&&typeof _0xfea607[_0x5948('0x1c')]===_0x5948('0x1b');var _0x2ac485=_0x5431d7[_0x5948('0x1d')];var _0x12e45f=_0x183026?0x0:_0xfea607[_0x5948('0x1a')];var _0x6a4b16=_0x183026?_0x5431d7[_0x5948('0x1d')]:_0xfea607['offset']+_0xfea607[_0x5948('0x1c')];var _0x532988;if(_0x6a4b16>=_0x2ac485){_0x6a4b16=_0x2ac485;_0x532988=0xc8;}else{_0x532988=0xce;}_0x5a0a7d[_0x5948('0x18')](_0x532988);return _0x5a0a7d['set']('Content-Range',_0x12e45f+'-'+_0x6a4b16+'/'+_0x2ac485)[_0x5948('0x19')](_0x5431d7);}return null;};}function patchUpdates(_0x101572){return function(_0x14fec5){try{jsonpatch[_0x5948('0x1e')](_0x14fec5,_0x101572,!![]);}catch(_0x3713a0){return BPromise[_0x5948('0x1f')](_0x3713a0);}return _0x14fec5['save']();};}function saveUpdates(_0x1417d8,_0x2f576f){return function(_0x190e70){if(_0x190e70){return _0x190e70['update'](_0x1417d8)['then'](function(_0x42c85c){return _0x42c85c;});}return null;};}function removeEntity(_0x2b62d5,_0x279e1f){return function(_0x152189){if(_0x152189){return _0x152189[_0x5948('0x20')]()[_0x5948('0x21')](function(){var _0x2acb93=_0x152189[_0x5948('0x22')]({'plain':!![]});var _0x29907a=_0x5948('0x23');return db[_0x5948('0x24')][_0x5948('0x20')]({'where':{'type':_0x29907a,'resourceId':_0x2acb93['id']}})[_0x5948('0x21')](function(){return _0x152189;});})[_0x5948('0x21')](function(){_0x2b62d5[_0x5948('0x18')](0xcc)[_0x5948('0x17')]();});}};}function handleEntityNotFound(_0x1dcb67,_0xb0e853){return function(_0x2022fc){if(!_0x2022fc){_0x1dcb67[_0x5948('0x16')](0x194);}return _0x2022fc;};}function handleError(_0x8c3f15,_0x4f89a9){_0x4f89a9=_0x4f89a9||0x1f4;return function(_0xe9d35){logger['error'](_0xe9d35['stack']);if(_0xe9d35[_0x5948('0x25')]){delete _0xe9d35[_0x5948('0x25')];}_0x8c3f15['status'](_0x4f89a9)[_0x5948('0x26')](_0xe9d35);};}exports[_0x5948('0x27')]=function(_0x4ea023,_0x3b3edc){var _0x3ef15d={},_0x4cf312={},_0x452762={'count':0x0,'rows':[]};var _0x439554=_['map'](db['Interval'][_0x5948('0x28')],function(_0x3a562e){return{'name':_0x3a562e[_0x5948('0x29')],'type':_0x3a562e[_0x5948('0x2a')][_0x5948('0x2b')]};});_0x4cf312[_0x5948('0x2c')]=_[_0x5948('0x2d')](_0x439554,'name');_0x4cf312['query']=_['keys'](_0x4ea023[_0x5948('0x2e')]);_0x4cf312['filters']=_[_0x5948('0x2f')](_0x4cf312[_0x5948('0x2c')],_0x4cf312['query']);_0x3ef15d[_0x5948('0x30')]=_[_0x5948('0x2f')](_0x4cf312['model'],qs[_0x5948('0x31')](_0x4ea023[_0x5948('0x2e')][_0x5948('0x31')]));_0x3ef15d[_0x5948('0x30')]=_0x3ef15d['attributes'][_0x5948('0x32')]?_0x3ef15d[_0x5948('0x30')]:_0x4cf312[_0x5948('0x2c')];if(!_0x4ea023[_0x5948('0x2e')][_0x5948('0x33')](_0x5948('0x34'))){_0x3ef15d[_0x5948('0x1c')]=qs[_0x5948('0x1c')](_0x4ea023[_0x5948('0x2e')][_0x5948('0x1c')]);_0x3ef15d[_0x5948('0x1a')]=qs[_0x5948('0x1a')](_0x4ea023[_0x5948('0x2e')][_0x5948('0x1a')]);}_0x3ef15d[_0x5948('0x35')]=qs[_0x5948('0x36')](_0x4ea023[_0x5948('0x2e')][_0x5948('0x36')]);_0x3ef15d[_0x5948('0x37')]=qs[_0x5948('0x38')](_[_0x5948('0x39')](_0x4ea023[_0x5948('0x2e')],_0x4cf312[_0x5948('0x38')]),_0x439554);if(_0x4ea023[_0x5948('0x2e')][_0x5948('0x3a')]){_0x3ef15d['where']=_[_0x5948('0x3b')](_0x3ef15d[_0x5948('0x37')],{'$or':_[_0x5948('0x2d')](_0x439554,function(_0x199634){if(_0x199634['type']!==_0x5948('0x3c')){var _0x97d010={};_0x97d010[_0x199634[_0x5948('0x25')]]={'$like':'%'+_0x4ea023['query'][_0x5948('0x3a')]+'%'};return _0x97d010;}})});}_0x3ef15d=_['merge']({},_0x3ef15d,_0x4ea023[_0x5948('0x3d')]);var _0x413df4={'where':_0x3ef15d[_0x5948('0x37')]};return db[_0x5948('0x3e')][_0x5948('0x1d')](_0x413df4)[_0x5948('0x21')](function(_0xeebdc9){_0x452762[_0x5948('0x1d')]=_0xeebdc9;if(_0x4ea023[_0x5948('0x2e')][_0x5948('0x3f')]){_0x3ef15d[_0x5948('0x40')]=[{'all':!![]}];}return db[_0x5948('0x3e')][_0x5948('0x41')](_0x3ef15d);})['then'](function(_0x4de76a){_0x452762['rows']=_0x4de76a;return _0x452762;})[_0x5948('0x21')](respondWithFilteredResult(_0x3b3edc,_0x3ef15d))[_0x5948('0x42')](handleError(_0x3b3edc,null));};exports[_0x5948('0x43')]=function(_0x4957dd,_0x25bb53){var _0x707539={'raw':!![],'where':{'id':_0x4957dd[_0x5948('0x44')]['id']}},_0xa85b0b={};_0xa85b0b[_0x5948('0x2c')]=_['keys'](db[_0x5948('0x3e')][_0x5948('0x28')]);_0xa85b0b['query']=_[_0x5948('0x45')](_0x4957dd[_0x5948('0x2e')]);_0xa85b0b[_0x5948('0x38')]=_[_0x5948('0x2f')](_0xa85b0b['model'],_0xa85b0b['query']);_0x707539[_0x5948('0x30')]=_[_0x5948('0x2f')](_0xa85b0b['model'],qs['fields'](_0x4957dd[_0x5948('0x2e')]['fields']));_0x707539[_0x5948('0x30')]=_0x707539['attributes'][_0x5948('0x32')]?_0x707539[_0x5948('0x30')]:_0xa85b0b[_0x5948('0x2c')];if(_0x4957dd[_0x5948('0x2e')][_0x5948('0x3f')]){_0x707539['include']=[{'all':!![]}];}_0x707539=_[_0x5948('0x3b')]({},_0x707539,_0x4957dd[_0x5948('0x3d')]);return db[_0x5948('0x3e')]['find'](_0x707539)['then'](handleEntityNotFound(_0x25bb53,null))['then'](respondWithResult(_0x25bb53,null))[_0x5948('0x42')](handleError(_0x25bb53,null));};exports['create']=function(_0x4eee5d,_0x58456f){return db[_0x5948('0x3e')][_0x5948('0x46')](_0x4eee5d[_0x5948('0x47')],{})[_0x5948('0x21')](function(_0xb304ee){var _0x140462=_0x4eee5d[_0x5948('0x48')][_0x5948('0x22')]({'plain':!![]});if(!_0x140462)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x140462[_0x5948('0x49')]===_0x5948('0x48')){var _0x21df40=_0xb304ee[_0x5948('0x22')]({'plain':!![]});var _0x27a1a3=_0x5948('0x23');return db[_0x5948('0x4a')][_0x5948('0x4b')]({'where':{'name':_0x27a1a3,'userProfileId':_0x140462['userProfileId']},'raw':!![]})['then'](function(_0x2be0c1){if(_0x2be0c1&&_0x2be0c1[_0x5948('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0x21df40[_0x5948('0x25')],'resourceId':_0x21df40['id'],'type':_0x2be0c1[_0x5948('0x25')],'sectionId':_0x2be0c1['id']},{})[_0x5948('0x21')](function(){return _0xb304ee;});}else{return _0xb304ee;}})['catch'](function(_0x4900f3){logger[_0x5948('0x4d')](_0x5948('0x4e'),_0x4900f3);throw _0x4900f3;});}return _0xb304ee;})[_0x5948('0x21')](respondWithResult(_0x58456f,0xc9))[_0x5948('0x42')](handleError(_0x58456f,null));};exports['update']=function(_0x1539e9,_0x1c473a){if(_0x1539e9[_0x5948('0x47')]['id']){delete _0x1539e9[_0x5948('0x47')]['id'];}return db[_0x5948('0x3e')][_0x5948('0x4b')]({'where':{'id':_0x1539e9['params']['id']}})[_0x5948('0x21')](handleEntityNotFound(_0x1c473a,null))[_0x5948('0x21')](saveUpdates(_0x1539e9[_0x5948('0x47')],null))[_0x5948('0x21')](respondWithResult(_0x1c473a,null))[_0x5948('0x42')](handleError(_0x1c473a,null));};exports[_0x5948('0x20')]=function(_0x4ebbd8,_0x32f94a){return db['Interval']['find']({'where':{'id':_0x4ebbd8[_0x5948('0x44')]['id']}})[_0x5948('0x21')](handleEntityNotFound(_0x32f94a,null))[_0x5948('0x21')](removeEntity(_0x32f94a,null))[_0x5948('0x42')](handleError(_0x32f94a,null));};exports[_0x5948('0x4f')]=function(_0x591d22,_0x186a46,_0xf83e10){if(_0x591d22['body']['id']){delete _0x591d22[_0x5948('0x47')]['id'];}return db[_0x5948('0x3e')][_0x5948('0x4b')]({'where':{'id':_0x591d22[_0x5948('0x44')]['id']}})[_0x5948('0x21')](handleEntityNotFound(_0x186a46,null))[_0x5948('0x21')](function(_0x7d4c25){if(_0x7d4c25){_0x591d22[_0x5948('0x47')]['IntervalId']=_0x7d4c25['id'];return db[_0x5948('0x3e')]['create'](_0x591d22[_0x5948('0x47')]);}})[_0x5948('0x21')](respondWithResult(_0x186a46,null))['catch'](handleError(_0x186a46,null));};exports[_0x5948('0x50')]=function(_0xb91697,_0xc6859e,_0x250750){var _0x51e8d4={};var _0x227e02={};var _0x38bcd5;var _0x23568a;return db['Interval'][_0x5948('0x51')]({'where':{'id':_0xb91697[_0x5948('0x44')]['id']}})['then'](handleEntityNotFound(_0xc6859e,null))[_0x5948('0x21')](function(_0x2bf91c){if(_0x2bf91c){_0x38bcd5=_0x2bf91c;_0x227e02[_0x5948('0x2c')]=_[_0x5948('0x45')](db[_0x5948('0x3e')][_0x5948('0x28')]);_0x227e02['query']=_[_0x5948('0x45')](_0xb91697[_0x5948('0x2e')]);_0x227e02[_0x5948('0x38')]=_[_0x5948('0x2f')](_0x227e02[_0x5948('0x2c')],_0x227e02[_0x5948('0x2e')]);_0x51e8d4[_0x5948('0x30')]=_[_0x5948('0x2f')](_0x227e02[_0x5948('0x2c')],qs[_0x5948('0x31')](_0xb91697[_0x5948('0x2e')]['fields']));_0x51e8d4['attributes']=_0x51e8d4[_0x5948('0x30')][_0x5948('0x32')]?_0x51e8d4[_0x5948('0x30')]:_0x227e02[_0x5948('0x2c')];_0x51e8d4[_0x5948('0x35')]=qs['sort'](_0xb91697[_0x5948('0x2e')][_0x5948('0x36')]);_0x51e8d4['where']=qs[_0x5948('0x38')](_[_0x5948('0x39')](_0xb91697['query'],_0x227e02['filters']));if(_0xb91697['query']['filter']){_0x51e8d4[_0x5948('0x37')]=_['merge'](_0x51e8d4[_0x5948('0x37')],{'$or':_[_0x5948('0x2d')](_0x51e8d4['attributes'],function(_0x57ef7c){var _0x4a1e3b={};_0x4a1e3b[_0x57ef7c]={'$like':'%'+_0xb91697[_0x5948('0x2e')]['filter']+'%'};return _0x4a1e3b;})});}_0x51e8d4=_[_0x5948('0x3b')]({},_0x51e8d4,_0xb91697[_0x5948('0x3d')]);return _0x38bcd5[_0x5948('0x50')](_0x51e8d4);}})[_0x5948('0x21')](function(_0x1d49b){if(_0x1d49b){_0x23568a=_0x1d49b['length'];if(!_0xb91697[_0x5948('0x2e')]['hasOwnProperty']('nolimit')){_0x51e8d4[_0x5948('0x1c')]=qs[_0x5948('0x1c')](_0xb91697['query']['limit']);_0x51e8d4[_0x5948('0x1a')]=qs[_0x5948('0x1a')](_0xb91697[_0x5948('0x2e')]['offset']);}return _0x38bcd5[_0x5948('0x50')](_0x51e8d4);}})['then'](function(_0x5f5954){if(_0x5f5954){return _0x5f5954?{'count':_0x23568a,'rows':_0x5f5954}:null;}})[_0x5948('0x21')](respondWithResult(_0xc6859e,null))[_0x5948('0x42')](handleError(_0xc6859e,null));};exports[_0x5948('0x52')]=function(_0x309534,_0x4771c7,_0x5c42e4){return db[_0x5948('0x3e')][_0x5948('0x51')]({'where':{'id':_0x309534[_0x5948('0x44')]['id']}})['then'](handleEntityNotFound(_0x4771c7,null))['then'](function(_0xf75d2){if(_0xf75d2){return db[_0x5948('0x53')][_0x5948('0x54')](function(_0x3ee965){return db[_0x5948('0x3e')][_0x5948('0x20')]({'where':{'IntervalId':_0x309534['params']['id']},'transaction':_0x3ee965})[_0x5948('0x21')](function(_0x3bbcfd){var _0x16d0e7=_['map'](_0x309534[_0x5948('0x47')],function(_0x358d20){delete _0x358d20['id'];_0x358d20[_0x5948('0x55')]=_0x309534[_0x5948('0x44')]['id'];return _0x358d20;});return db['Interval']['bulkCreate'](_0x16d0e7,{'transaction':_0x3ee965});});})['then'](function(){return db['Interval'][_0x5948('0x41')]({'where':{'IntervalId':_0x309534[_0x5948('0x44')]['id']}});});}})[_0x5948('0x21')](respondWithResult(_0x4771c7,null))[_0x5948('0x42')](handleError(_0x4771c7,null));};
\ No newline at end of file
index 11e771c..94c6b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a49=['tools_intervals','rewrite','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x352651,_0x172d3c){var _0x1cdde2=function(_0x18229e){while(--_0x18229e){_0x352651['push'](_0x352651['shift']());}};_0x1cdde2(++_0x172d3c);}(_0x4a49,0x18e));var _0x94a4=function(_0x5b0821,_0x2f135f){_0x5b0821=_0x5b0821-0x0;var _0x14b236=_0x4a49[_0x5b0821];return _0x14b236;};'use strict';var _=require('lodash');var util=require(_0x94a4('0x0'));var logger=require(_0x94a4('0x1'))(_0x94a4('0x2'));var moment=require(_0x94a4('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x94a4('0x4'));var rimraf=require(_0x94a4('0x5'));var config=require(_0x94a4('0x6'));var attributes=require('./interval.attributes');var extensions=require('../../components/extensions/rewrite');module[_0x94a4('0x7')]=function(_0x1d314b,_0x1c6a0b){return _0x1d314b[_0x94a4('0x8')]('Interval',attributes,{'tableName':_0x94a4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x755d8f,_0x14b46d){extensions['rewrite'](_0x1d314b,_0x755d8f);},'afterBulkCreate':function(_0x425e04,_0x1cc226,_0x526314){_0x526314();extensions[_0x94a4('0xa')](_0x1d314b,_0x425e04[0x0]);},'afterUpdate':function(_0x57844e,_0xba2b33){extensions[_0x94a4('0xa')](_0x1d314b,_0x57844e);},'afterDestroy':function(_0x53ddea,_0x314eaa){extensions[_0x94a4('0xa')](_0x1d314b,_0x53ddea);}}});};
\ No newline at end of file
+var _0x4c79=['api','moment','bluebird','request-promise','path','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger'];(function(_0x5a93f0,_0x172b1b){var _0x53844d=function(_0x19ba69){while(--_0x19ba69){_0x5a93f0['push'](_0x5a93f0['shift']());}};_0x53844d(++_0x172b1b);}(_0x4c79,0xf9));var _0x94c7=function(_0x10346c,_0x183ce6){_0x10346c=_0x10346c-0x0;var _0x262bd4=_0x4c79[_0x10346c];return _0x262bd4;};'use strict';var _=require(_0x94c7('0x0'));var util=require(_0x94c7('0x1'));var logger=require(_0x94c7('0x2'))(_0x94c7('0x3'));var moment=require(_0x94c7('0x4'));var BPromise=require(_0x94c7('0x5'));var rp=require(_0x94c7('0x6'));var fs=require('fs');var path=require(_0x94c7('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x94c7('0x8'));module[_0x94c7('0x9')]=function(_0x30ff46,_0x152467){return _0x30ff46[_0x94c7('0xa')](_0x94c7('0xb'),attributes,{'tableName':_0x94c7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x332b91,_0xed5aa3){extensions[_0x94c7('0xd')](_0x30ff46,_0x332b91);},'afterBulkCreate':function(_0xf8a91e,_0x2b517c,_0x3642ec){_0x3642ec();extensions[_0x94c7('0xd')](_0x30ff46,_0xf8a91e[0x0]);},'afterUpdate':function(_0x3438dc,_0x4df3c7){extensions[_0x94c7('0xd')](_0x30ff46,_0x3438dc);},'afterDestroy':function(_0x15059e,_0x597fe1){extensions[_0x94c7('0xd')](_0x30ff46,_0x15059e);}}});};
\ No newline at end of file
index 77dcccd..ee40a1d 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(_0x3e531a,_0x28a82a){var _0x3c2574=function(_0x4a0c98){while(--_0x4a0c98){_0x3e531a['push'](_0x3e531a['shift']());}};_0x3c2574(++_0x28a82a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x21af3a,_0x386e1d){var _0x268a49=function(_0x41a650){while(--_0x41a650){_0x21af3a['push'](_0x21af3a['shift']());}};_0x268a49(++_0x386e1d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}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 b1ddcd3..4c01817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x2c65dd,_0x292324){var _0x49533e=function(_0x21404f){while(--_0x21404f){_0x2c65dd['push'](_0x2c65dd['shift']());}};_0x49533e(++_0x292324);}(_0x2ef3,0xba));var _0x32ef=function(_0x24f79a,_0x12e81e){_0x24f79a=_0x24f79a-0x0;var _0x505eef=_0x2ef3[_0x24f79a];return _0x505eef;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
+var _0x0b0e=['exports','express','../../components/auth/service','post','isAuthenticated','send'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x0b0e,0x187));var _0xe0b0=function(_0x3f94f9,_0x42774b){_0x3f94f9=_0x3f94f9-0x0;var _0x46f84f=_0x0b0e[_0x3f94f9];return _0x46f84f;};'use strict';var express=require(_0xe0b0('0x0'));var router=express['Router']();var auth=require(_0xe0b0('0x1'));var controller=require('./jira.controller');router[_0xe0b0('0x2')]('/',auth[_0xe0b0('0x3')](),controller[_0xe0b0('0x4')]);module[_0xe0b0('0x5')]=router;
\ No newline at end of file
index e819da6..13e48fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4ec=['parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','send','body','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','stringify','issuetype','fields','oldToken','customfield_11502','name','customfield_11504','reason','track.xcallymotion.com','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','status','json'];(function(_0x2bee75,_0x1b1b36){var _0x3b9b12=function(_0x3bb699){while(--_0x3bb699){_0x2bee75['push'](_0x2bee75['shift']());}};_0x3b9b12(++_0x1b1b36);}(_0xb4ec,0x8d));var _0xcb4e=function(_0x217cf1,_0x310905){_0x217cf1=_0x217cf1-0x0;var _0x46dd12=_0xb4ec[_0x217cf1];return _0x46dd12;};'use strict';var BPromise=require(_0xcb4e('0x0'));var https=require(_0xcb4e('0x1'));var logger=require(_0xcb4e('0x2'))(_0xcb4e('0x3'));var USERNAME=_0xcb4e('0x4');var PASSWORD=_0xcb4e('0x5');function openIssue(_0x5d662d,_0x1f34dc){var _0x2fc050={'fields':{'project':{'key':_0x5d662d[_0xcb4e('0x6')]||'MOTGUI'},'summary':(_0x5d662d[_0xcb4e('0x7')]||_0xcb4e('0x8'))+_0xcb4e('0x9')+_0x5d662d['ip'],'description':_0x5d662d[_0xcb4e('0xa')]||JSON[_0xcb4e('0xb')](_0x5d662d),'issuetype':{'name':_0x5d662d[_0xcb4e('0xc')]||'Bug'}}};_0x2fc050['fields']['customfield_11500']=_0x5d662d['email'];_0x2fc050[_0xcb4e('0xd')]['customfield_11501']=_0x5d662d[_0xcb4e('0xe')];_0x2fc050[_0xcb4e('0xd')][_0xcb4e('0xf')]=_0x5d662d['newToken'];_0x2fc050['fields']['customfield_11503']=_0x5d662d[_0xcb4e('0x10')];_0x2fc050[_0xcb4e('0xd')][_0xcb4e('0x11')]=_0x5d662d[_0xcb4e('0x12')];_0x2fc050[_0xcb4e('0xd')]['customfield_10102']=_0x5d662d['ip'];var _0x2957e5={'host':_0xcb4e('0x13'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xcb4e('0x14'),'timeout':0x4e20,'headers':{'Content-Type':_0xcb4e('0x15'),'Authorization':_0xcb4e('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0xcb4e('0x17')](_0xcb4e('0x18'))}};var _0x3f8b13=JSON['stringify'](_0x2fc050);var _0x5c0c4a=https[_0xcb4e('0x19')](_0x2957e5,function(_0x1ea0dc){_0x1ea0dc[_0xcb4e('0x1a')](_0xcb4e('0x1b'));var _0x161ca0='';_0x1ea0dc['on'](_0xcb4e('0x1c'),function(_0x11c18f){_0x161ca0+=_0x11c18f;});_0x1ea0dc['on']('end',function(){if(_0x1f34dc){return _0x1f34dc[_0xcb4e('0x1d')](_0x1ea0dc['statusCode'])[_0xcb4e('0x1e')](JSON[_0xcb4e('0x1f')](_0x161ca0));}});});_0x5c0c4a['on'](_0xcb4e('0x20'),function(_0x21630d){if(_0x1f34dc){return _0x1f34dc[_0xcb4e('0x1d')](0x1f4)['json']({'errors':[{'message':_0xcb4e('0x21'),'type':_0xcb4e('0x22')}]});}});_0x5c0c4a[_0xcb4e('0x23')](_0x3f8b13);_0x5c0c4a[_0xcb4e('0x24')]();}exports['openIssue']=openIssue;exports[_0xcb4e('0x25')]=function(_0x5a8ea6,_0x5420cc){_0x5a8ea6[_0xcb4e('0x26')]['ip']=_0x5a8ea6['headers'][_0xcb4e('0x27')]||_0x5a8ea6[_0xcb4e('0x28')][_0xcb4e('0x29')]||_0x5a8ea6[_0xcb4e('0x2a')][_0xcb4e('0x29')]||_0x5a8ea6['connection']['socket'][_0xcb4e('0x29')];return openIssue(_0x5a8ea6[_0xcb4e('0x26')],_0x5420cc);};
\ No newline at end of file
+var _0xfa79=['https','../../config/logger','api','3eAmWpBVP0','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','fields','customfield_11500','customfield_11501','oldToken','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','request','setEncoding','utf8','data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','openIssue','send','headers','x-forwarded-for','connection','remoteAddress','socket','body','bluebird'];(function(_0x27fc9d,_0x20c1d1){var _0x2fd4bf=function(_0x274ba3){while(--_0x274ba3){_0x27fc9d['push'](_0x27fc9d['shift']());}};_0x2fd4bf(++_0x20c1d1);}(_0xfa79,0x1c1));var _0x9fa7=function(_0x32c4c6,_0x29980f){_0x32c4c6=_0x32c4c6-0x0;var _0x352be0=_0xfa79[_0x32c4c6];return _0x352be0;};'use strict';var BPromise=require(_0x9fa7('0x0'));var https=require(_0x9fa7('0x1'));var logger=require(_0x9fa7('0x2'))(_0x9fa7('0x3'));var USERNAME='support';var PASSWORD=_0x9fa7('0x4');function openIssue(_0x113844,_0x58e629){var _0x554b15={'fields':{'project':{'key':_0x113844['key']||_0x9fa7('0x5')},'summary':(_0x113844[_0x9fa7('0x6')]||_0x9fa7('0x7'))+_0x9fa7('0x8')+_0x113844['ip'],'description':_0x113844[_0x9fa7('0x9')]||JSON[_0x9fa7('0xa')](_0x113844),'issuetype':{'name':_0x113844[_0x9fa7('0xb')]||'Bug'}}};_0x554b15[_0x9fa7('0xc')][_0x9fa7('0xd')]=_0x113844['email'];_0x554b15[_0x9fa7('0xc')][_0x9fa7('0xe')]=_0x113844[_0x9fa7('0xf')];_0x554b15['fields']['customfield_11502']=_0x113844[_0x9fa7('0x10')];_0x554b15[_0x9fa7('0xc')][_0x9fa7('0x11')]=_0x113844[_0x9fa7('0x12')];_0x554b15[_0x9fa7('0xc')][_0x9fa7('0x13')]=_0x113844[_0x9fa7('0x14')];_0x554b15[_0x9fa7('0xc')][_0x9fa7('0x15')]=_0x113844['ip'];var _0x94f8f={'host':_0x9fa7('0x16'),'port':0x1bb,'path':_0x9fa7('0x17'),'method':_0x9fa7('0x18'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x9fa7('0x19')+new Buffer(USERNAME+':'+PASSWORD)['toString']('base64')}};var _0x1c6ebb=JSON['stringify'](_0x554b15);var _0x5777fe=https[_0x9fa7('0x1a')](_0x94f8f,function(_0x4a98c6){_0x4a98c6[_0x9fa7('0x1b')](_0x9fa7('0x1c'));var _0x5f36a9='';_0x4a98c6['on'](_0x9fa7('0x1d'),function(_0x45c568){_0x5f36a9+=_0x45c568;});_0x4a98c6['on'](_0x9fa7('0x1e'),function(){if(_0x58e629){return _0x58e629[_0x9fa7('0x1f')](_0x4a98c6[_0x9fa7('0x20')])[_0x9fa7('0x21')](JSON[_0x9fa7('0x22')](_0x5f36a9));}});});_0x5777fe['on'](_0x9fa7('0x23'),function(_0x24c388){if(_0x58e629){return _0x58e629['status'](0x1f4)['json']({'errors':[{'message':_0x9fa7('0x24'),'type':'api.jira'}]});}});_0x5777fe['write'](_0x1c6ebb);_0x5777fe['end']();}exports[_0x9fa7('0x25')]=openIssue;exports[_0x9fa7('0x26')]=function(_0xe4316e,_0x6ad1d8){_0xe4316e['body']['ip']=_0xe4316e[_0x9fa7('0x27')][_0x9fa7('0x28')]||_0xe4316e[_0x9fa7('0x29')][_0x9fa7('0x2a')]||_0xe4316e['socket'][_0x9fa7('0x2a')]||_0xe4316e[_0x9fa7('0x29')][_0x9fa7('0x2b')][_0x9fa7('0x2a')];return openIssue(_0xe4316e[_0x9fa7('0x2c')],_0x6ad1d8);};
\ No newline at end of file
index 71496e1..8cc65a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated'];(function(_0x4d3dfe,_0xb5c2b3){var _0x22206e=function(_0x7d4c19){while(--_0x7d4c19){_0x4d3dfe['push'](_0x4d3dfe['shift']());}};_0x22206e(++_0xb5c2b3);}(_0xbec5,0xe5));var _0x5bec=function(_0x4991d6,_0x348deb){_0x4991d6=_0x4991d6-0x0;var _0x50faf7=_0xbec5[_0x4991d6];return _0x50faf7;};'use strict';var multer=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var path=require('path');var timeout=require(_0x5bec('0x2'));var express=require(_0x5bec('0x3'));var router=express[_0x5bec('0x4')]();var fs_extra=require(_0x5bec('0x5'));var auth=require(_0x5bec('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5bec('0x7'));var controller=require(_0x5bec('0x8'));router[_0x5bec('0x9')]('/',auth['isAuthenticated'](),controller[_0x5bec('0xa')]);router[_0x5bec('0x9')](_0x5bec('0xb'),auth[_0x5bec('0xc')](),controller[_0x5bec('0xd')]);router[_0x5bec('0x9')](_0x5bec('0xe'),auth[_0x5bec('0xc')](),controller['show']);router[_0x5bec('0xf')]('/',auth['isAuthenticated'](),controller[_0x5bec('0x10')]);router[_0x5bec('0x11')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x12')]);router[_0x5bec('0x13')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x14')]);module[_0x5bec('0x15')]=router;
\ No newline at end of file
+var _0xda55=['../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','multer','util','express','Router','fs-extra'];(function(_0x2c6120,_0x1f3e60){var _0x5fb114=function(_0x45a72d){while(--_0x45a72d){_0x2c6120['push'](_0x2c6120['shift']());}};_0x5fb114(++_0x1f3e60);}(_0xda55,0x6d));var _0x5da5=function(_0x3f679e,_0x165aa4){_0x3f679e=_0x3f679e-0x0;var _0x3a6382=_0xda55[_0x3f679e];return _0x3a6382;};'use strict';var multer=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5da5('0x2'));var router=express[_0x5da5('0x3')]();var fs_extra=require(_0x5da5('0x4'));var auth=require(_0x5da5('0x5'));var interaction=require(_0x5da5('0x6'));var config=require('../../config/environment');var controller=require(_0x5da5('0x7'));router['get']('/',auth[_0x5da5('0x8')](),controller['index']);router[_0x5da5('0x9')](_0x5da5('0xa'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xb')]);router[_0x5da5('0x9')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xd')]);router['post']('/',auth[_0x5da5('0x8')](),controller[_0x5da5('0xe')]);router[_0x5da5('0xf')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x10')]);router[_0x5da5('0x11')]('/:id',auth[_0x5da5('0x8')](),controller[_0x5da5('0x12')]);module['exports']=router;
\ No newline at end of file
index b161f8e..3046d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x7a54,0x106));var _0x47a5=function(_0x2af5b5,_0x578c58){_0x2af5b5=_0x2af5b5-0x0;var _0x3be819=_0x7a54[_0x2af5b5];return _0x3be819;};'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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7a54,0x106));var _0x47a5=function(_0xd1c015,_0x4493aa){_0xd1c015=_0xd1c015-0x0;var _0x58060a=_0x7a54[_0xd1c015];return _0x58060a;};'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 00933bd..2f51aa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ec=['merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','JscriptyAnswerReport','include','create','body','find','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where'];(function(_0x43cc24,_0x40ee48){var _0xfc2ffc=function(_0x4f21f1){while(--_0x4f21f1){_0x43cc24['push'](_0x43cc24['shift']());}};_0xfc2ffc(++_0x40ee48);}(_0x41ec,0x143));var _0xc41e=function(_0x1c570f,_0x25e9b9){_0x1c570f=_0x1c570f-0x0;var _0xc3a9fc=_0x41ec[_0x1c570f];return _0xc3a9fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc41e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc41e('0x1'));var rp=require(_0xc41e('0x2'));var moment=require('moment');var BPromise=require(_0xc41e('0x3'));var Mustache=require(_0xc41e('0x4'));var util=require(_0xc41e('0x5'));var path=require(_0xc41e('0x6'));var sox=require(_0xc41e('0x7'));var csv=require(_0xc41e('0x8'));var ejs=require(_0xc41e('0x9'));var fs=require('fs');var fs_extra=require(_0xc41e('0xa'));var _=require(_0xc41e('0xb'));var squel=require(_0xc41e('0xc'));var crypto=require(_0xc41e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc41e('0xe'));var toCsv=require(_0xc41e('0x8'));var querystring=require(_0xc41e('0xf'));var Papa=require(_0xc41e('0x10'));var Redis=require(_0xc41e('0x11'));var authService=require(_0xc41e('0x12'));var qs=require(_0xc41e('0x13'));var as=require(_0xc41e('0x14'));var hardwareService=require(_0xc41e('0x15'));var logger=require(_0xc41e('0x16'))(_0xc41e('0x17'));var utils=require('../../config/utils');var config=require(_0xc41e('0x18'));var licenseUtil=require(_0xc41e('0x19'));var db=require(_0xc41e('0x1a'))['db'];function respondWithStatusCode(_0x3d7280,_0x11a117){_0x11a117=_0x11a117||0xcc;return function(_0x433ca9){if(_0x433ca9){return _0x3d7280[_0xc41e('0x1b')](_0x11a117);}return _0x3d7280[_0xc41e('0x1c')](_0x11a117)['end']();};}function respondWithResult(_0x3b3900,_0x6b614a){_0x6b614a=_0x6b614a||0xc8;return function(_0xcd58a0){if(_0xcd58a0){return _0x3b3900[_0xc41e('0x1c')](_0x6b614a)['json'](_0xcd58a0);}};}function respondWithFilteredResult(_0x5c705e,_0x4f960d){return function(_0x28eb53){if(_0x28eb53){var _0x4293a5=typeof _0x4f960d['offset']===_0xc41e('0x1d')&&typeof _0x4f960d[_0xc41e('0x1e')]==='undefined';var _0x4e7aa3=_0x28eb53[_0xc41e('0x1f')];var _0x5c0517=_0x4293a5?0x0:_0x4f960d[_0xc41e('0x20')];var _0x23c9b6=_0x4293a5?_0x28eb53['count']:_0x4f960d[_0xc41e('0x20')]+_0x4f960d[_0xc41e('0x1e')];var _0xee0f01;if(_0x23c9b6>=_0x4e7aa3){_0x23c9b6=_0x4e7aa3;_0xee0f01=0xc8;}else{_0xee0f01=0xce;}_0x5c705e[_0xc41e('0x1c')](_0xee0f01);return _0x5c705e[_0xc41e('0x21')](_0xc41e('0x22'),_0x5c0517+'-'+_0x23c9b6+'/'+_0x4e7aa3)[_0xc41e('0x23')](_0x28eb53);}return null;};}function patchUpdates(_0x57e0c4){return function(_0x239c25){try{jsonpatch[_0xc41e('0x24')](_0x239c25,_0x57e0c4,!![]);}catch(_0x3f26d5){return BPromise['reject'](_0x3f26d5);}return _0x239c25[_0xc41e('0x25')]();};}function saveUpdates(_0x408d27,_0x814a72){return function(_0x490cc3){if(_0x490cc3){return _0x490cc3[_0xc41e('0x26')](_0x408d27)[_0xc41e('0x27')](function(_0x602bd7){return _0x602bd7;});}return null;};}function removeEntity(_0x4adaad,_0x5a06dd){return function(_0x4c20b1){if(_0x4c20b1){return _0x4c20b1[_0xc41e('0x28')]()[_0xc41e('0x27')](function(){_0x4adaad['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a3e0d,_0x1c33a6){return function(_0x1ad4c7){if(!_0x1ad4c7){_0x5a3e0d[_0xc41e('0x1b')](0x194);}return _0x1ad4c7;};}function handleError(_0x467672,_0x1c6a2a){_0x1c6a2a=_0x1c6a2a||0x1f4;return function(_0x580b9e){logger[_0xc41e('0x29')](_0x580b9e[_0xc41e('0x2a')]);if(_0x580b9e[_0xc41e('0x2b')]){delete _0x580b9e['name'];}_0x467672[_0xc41e('0x1c')](_0x1c6a2a)[_0xc41e('0x2c')](_0x580b9e);};}exports['index']=function(_0x25b319,_0x12536e){var _0x5c2c62={},_0xcb3a15={},_0x2fa98a={'count':0x0,'rows':[]};var _0x17246e=_[_0xc41e('0x2d')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x541ac4){return{'name':_0x541ac4[_0xc41e('0x2e')],'type':_0x541ac4[_0xc41e('0x2f')][_0xc41e('0x30')]};});_0xcb3a15[_0xc41e('0x31')]=_[_0xc41e('0x2d')](_0x17246e,_0xc41e('0x2b'));_0xcb3a15[_0xc41e('0x32')]=_['keys'](_0x25b319[_0xc41e('0x32')]);_0xcb3a15[_0xc41e('0x33')]=_[_0xc41e('0x34')](_0xcb3a15['model'],_0xcb3a15[_0xc41e('0x32')]);_0x5c2c62['attributes']=_[_0xc41e('0x34')](_0xcb3a15[_0xc41e('0x31')],qs[_0xc41e('0x35')](_0x25b319[_0xc41e('0x32')]['fields']));_0x5c2c62['attributes']=_0x5c2c62[_0xc41e('0x36')][_0xc41e('0x37')]?_0x5c2c62[_0xc41e('0x36')]:_0xcb3a15[_0xc41e('0x31')];if(!_0x25b319[_0xc41e('0x32')][_0xc41e('0x38')]('nolimit')){_0x5c2c62[_0xc41e('0x1e')]=qs[_0xc41e('0x1e')](_0x25b319[_0xc41e('0x32')]['limit']);_0x5c2c62[_0xc41e('0x20')]=qs[_0xc41e('0x20')](_0x25b319['query'][_0xc41e('0x20')]);}_0x5c2c62[_0xc41e('0x39')]=qs[_0xc41e('0x3a')](_0x25b319[_0xc41e('0x32')][_0xc41e('0x3a')]);_0x5c2c62['where']=qs['filters'](_[_0xc41e('0x3b')](_0x25b319[_0xc41e('0x32')],_0xcb3a15[_0xc41e('0x33')]),_0x17246e);if(_0x25b319[_0xc41e('0x32')][_0xc41e('0x3c')]){_0x5c2c62[_0xc41e('0x3d')]=_[_0xc41e('0x3e')](_0x5c2c62[_0xc41e('0x3d')],{'$or':_[_0xc41e('0x2d')](_0x17246e,function(_0x4de59a){if(_0x4de59a['type']!==_0xc41e('0x3f')){var _0xfd6ff6={};_0xfd6ff6[_0x4de59a[_0xc41e('0x2b')]]={'$like':'%'+_0x25b319[_0xc41e('0x32')][_0xc41e('0x3c')]+'%'};return _0xfd6ff6;}})});}_0x5c2c62=_[_0xc41e('0x3e')]({},_0x5c2c62,_0x25b319[_0xc41e('0x40')]);var _0x150f30={'where':_0x5c2c62['where']};return db['JscriptyAnswerReport'][_0xc41e('0x1f')](_0x150f30)[_0xc41e('0x27')](function(_0x10cfed){_0x2fa98a['count']=_0x10cfed;if(_0x25b319['query'][_0xc41e('0x41')]){_0x5c2c62['include']=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x5c2c62);})['then'](function(_0x3c30e2){_0x2fa98a[_0xc41e('0x42')]=_0x3c30e2;return _0x2fa98a;})[_0xc41e('0x27')](respondWithFilteredResult(_0x12536e,_0x5c2c62))[_0xc41e('0x43')](handleError(_0x12536e,null));};exports[_0xc41e('0x44')]=function(_0x206aa1,_0x4bb1f6){var _0x28d15d={'raw':!![],'where':{'id':_0x206aa1[_0xc41e('0x45')]['id']}},_0x1a3e67={};_0x1a3e67[_0xc41e('0x31')]=_[_0xc41e('0x46')](db[_0xc41e('0x47')]['rawAttributes']);_0x1a3e67[_0xc41e('0x32')]=_[_0xc41e('0x46')](_0x206aa1['query']);_0x1a3e67[_0xc41e('0x33')]=_[_0xc41e('0x34')](_0x1a3e67['model'],_0x1a3e67[_0xc41e('0x32')]);_0x28d15d['attributes']=_[_0xc41e('0x34')](_0x1a3e67[_0xc41e('0x31')],qs[_0xc41e('0x35')](_0x206aa1['query'][_0xc41e('0x35')]));_0x28d15d[_0xc41e('0x36')]=_0x28d15d['attributes']['length']?_0x28d15d['attributes']:_0x1a3e67['model'];if(_0x206aa1[_0xc41e('0x32')]['includeAll']){_0x28d15d[_0xc41e('0x48')]=[{'all':!![]}];}_0x28d15d=_['merge']({},_0x28d15d,_0x206aa1['options']);return db[_0xc41e('0x47')]['find'](_0x28d15d)[_0xc41e('0x27')](handleEntityNotFound(_0x4bb1f6,null))[_0xc41e('0x27')](respondWithResult(_0x4bb1f6,null))[_0xc41e('0x43')](handleError(_0x4bb1f6,null));};exports[_0xc41e('0x49')]=function(_0x46aef6,_0x31b393){return db[_0xc41e('0x47')][_0xc41e('0x49')](_0x46aef6[_0xc41e('0x4a')],{})[_0xc41e('0x27')](respondWithResult(_0x31b393,0xc9))[_0xc41e('0x43')](handleError(_0x31b393,null));};exports['update']=function(_0x4b67d4,_0x1cdf49){if(_0x4b67d4[_0xc41e('0x4a')]['id']){delete _0x4b67d4[_0xc41e('0x4a')]['id'];}return db['JscriptyAnswerReport'][_0xc41e('0x4b')]({'where':{'id':_0x4b67d4[_0xc41e('0x45')]['id']}})[_0xc41e('0x27')](handleEntityNotFound(_0x1cdf49,null))[_0xc41e('0x27')](saveUpdates(_0x4b67d4[_0xc41e('0x4a')],null))[_0xc41e('0x27')](respondWithResult(_0x1cdf49,null))[_0xc41e('0x43')](handleError(_0x1cdf49,null));};exports['destroy']=function(_0x3c867a,_0x317eba){return db['JscriptyAnswerReport']['find']({'where':{'id':_0x3c867a[_0xc41e('0x45')]['id']}})[_0xc41e('0x27')](handleEntityNotFound(_0x317eba,null))[_0xc41e('0x27')](removeEntity(_0x317eba,null))[_0xc41e('0x43')](handleError(_0x317eba,null));};exports[_0xc41e('0x4c')]=function(_0x53a799,_0x576831){return db[_0xc41e('0x47')]['describe']()[_0xc41e('0x27')](respondWithResult(_0x576831,null))['catch'](handleError(_0x576831,null));};
\ No newline at end of file
+var _0xf006=['fieldName','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','destroy','describe','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes'];(function(_0xc7348b,_0x145880){var _0x307cec=function(_0x4f1554){while(--_0x4f1554){_0xc7348b['push'](_0xc7348b['shift']());}};_0x307cec(++_0x145880);}(_0xf006,0x146));var _0x6f00=function(_0x2f16dd,_0x388be1){_0x2f16dd=_0x2f16dd-0x0;var _0x3cd553=_0xf006[_0x2f16dd];return _0x3cd553;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6f00('0x0'));var jsonpatch=require(_0x6f00('0x1'));var rp=require('request-promise');var moment=require(_0x6f00('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x6f00('0x3'));var util=require('util');var path=require('path');var sox=require(_0x6f00('0x4'));var csv=require(_0x6f00('0x5'));var ejs=require(_0x6f00('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6f00('0x7'));var squel=require('squel');var crypto=require(_0x6f00('0x8'));var jsforce=require(_0x6f00('0x9'));var deskjs=require(_0x6f00('0xa'));var toCsv=require(_0x6f00('0x5'));var querystring=require(_0x6f00('0xb'));var Papa=require(_0x6f00('0xc'));var Redis=require(_0x6f00('0xd'));var authService=require(_0x6f00('0xe'));var qs=require(_0x6f00('0xf'));var as=require(_0x6f00('0x10'));var hardwareService=require(_0x6f00('0x11'));var logger=require(_0x6f00('0x12'))(_0x6f00('0x13'));var utils=require('../../config/utils');var config=require(_0x6f00('0x14'));var licenseUtil=require(_0x6f00('0x15'));var db=require(_0x6f00('0x16'))['db'];function respondWithStatusCode(_0x36a2ec,_0x289fe9){_0x289fe9=_0x289fe9||0xcc;return function(_0x5e3264){if(_0x5e3264){return _0x36a2ec[_0x6f00('0x17')](_0x289fe9);}return _0x36a2ec['status'](_0x289fe9)[_0x6f00('0x18')]();};}function respondWithResult(_0x5047f5,_0x324e67){_0x324e67=_0x324e67||0xc8;return function(_0x220e68){if(_0x220e68){return _0x5047f5[_0x6f00('0x19')](_0x324e67)[_0x6f00('0x1a')](_0x220e68);}};}function respondWithFilteredResult(_0xa6e7a1,_0x411203){return function(_0x46bc2c){if(_0x46bc2c){var _0x4d8aee=typeof _0x411203[_0x6f00('0x1b')]==='undefined'&&typeof _0x411203[_0x6f00('0x1c')]==='undefined';var _0x534275=_0x46bc2c[_0x6f00('0x1d')];var _0x6cf83f=_0x4d8aee?0x0:_0x411203[_0x6f00('0x1b')];var _0x340f78=_0x4d8aee?_0x46bc2c[_0x6f00('0x1d')]:_0x411203[_0x6f00('0x1b')]+_0x411203[_0x6f00('0x1c')];var _0x295640;if(_0x340f78>=_0x534275){_0x340f78=_0x534275;_0x295640=0xc8;}else{_0x295640=0xce;}_0xa6e7a1[_0x6f00('0x19')](_0x295640);return _0xa6e7a1[_0x6f00('0x1e')](_0x6f00('0x1f'),_0x6cf83f+'-'+_0x340f78+'/'+_0x534275)[_0x6f00('0x1a')](_0x46bc2c);}return null;};}function patchUpdates(_0x4e11de){return function(_0x4f3031){try{jsonpatch['apply'](_0x4f3031,_0x4e11de,!![]);}catch(_0x2a5286){return BPromise[_0x6f00('0x20')](_0x2a5286);}return _0x4f3031[_0x6f00('0x21')]();};}function saveUpdates(_0x57340f,_0xe301e5){return function(_0x9066ff){if(_0x9066ff){return _0x9066ff[_0x6f00('0x22')](_0x57340f)[_0x6f00('0x23')](function(_0x388983){return _0x388983;});}return null;};}function removeEntity(_0x1cbf1c,_0x90d74c){return function(_0x1ea061){if(_0x1ea061){return _0x1ea061['destroy']()[_0x6f00('0x23')](function(){_0x1cbf1c[_0x6f00('0x19')](0xcc)[_0x6f00('0x18')]();});}};}function handleEntityNotFound(_0x4d41ef,_0x37f062){return function(_0x4f7e29){if(!_0x4f7e29){_0x4d41ef[_0x6f00('0x17')](0x194);}return _0x4f7e29;};}function handleError(_0x511293,_0x434735){_0x434735=_0x434735||0x1f4;return function(_0x39375d){logger[_0x6f00('0x24')](_0x39375d[_0x6f00('0x25')]);if(_0x39375d[_0x6f00('0x26')]){delete _0x39375d['name'];}_0x511293[_0x6f00('0x19')](_0x434735)[_0x6f00('0x27')](_0x39375d);};}exports[_0x6f00('0x28')]=function(_0x4366a4,_0x2671fe){var _0x235a86={},_0xff36ce={},_0x451849={'count':0x0,'rows':[]};var _0x22f107=_[_0x6f00('0x29')](db[_0x6f00('0x2a')][_0x6f00('0x2b')],function(_0x29555d){return{'name':_0x29555d[_0x6f00('0x2c')],'type':_0x29555d['type']['key']};});_0xff36ce['model']=_['map'](_0x22f107,'name');_0xff36ce['query']=_[_0x6f00('0x2d')](_0x4366a4['query']);_0xff36ce[_0x6f00('0x2e')]=_[_0x6f00('0x2f')](_0xff36ce[_0x6f00('0x30')],_0xff36ce[_0x6f00('0x31')]);_0x235a86[_0x6f00('0x32')]=_[_0x6f00('0x2f')](_0xff36ce['model'],qs[_0x6f00('0x33')](_0x4366a4[_0x6f00('0x31')][_0x6f00('0x33')]));_0x235a86[_0x6f00('0x32')]=_0x235a86[_0x6f00('0x32')]['length']?_0x235a86['attributes']:_0xff36ce['model'];if(!_0x4366a4[_0x6f00('0x31')][_0x6f00('0x34')](_0x6f00('0x35'))){_0x235a86[_0x6f00('0x1c')]=qs[_0x6f00('0x1c')](_0x4366a4['query'][_0x6f00('0x1c')]);_0x235a86[_0x6f00('0x1b')]=qs[_0x6f00('0x1b')](_0x4366a4[_0x6f00('0x31')][_0x6f00('0x1b')]);}_0x235a86[_0x6f00('0x36')]=qs[_0x6f00('0x37')](_0x4366a4['query'][_0x6f00('0x37')]);_0x235a86[_0x6f00('0x38')]=qs[_0x6f00('0x2e')](_['pick'](_0x4366a4[_0x6f00('0x31')],_0xff36ce[_0x6f00('0x2e')]),_0x22f107);if(_0x4366a4[_0x6f00('0x31')]['filter']){_0x235a86[_0x6f00('0x38')]=_['merge'](_0x235a86[_0x6f00('0x38')],{'$or':_['map'](_0x22f107,function(_0x3dc8e3){if(_0x3dc8e3[_0x6f00('0x39')]!==_0x6f00('0x3a')){var _0x896b3f={};_0x896b3f[_0x3dc8e3['name']]={'$like':'%'+_0x4366a4[_0x6f00('0x31')]['filter']+'%'};return _0x896b3f;}})});}_0x235a86=_[_0x6f00('0x3b')]({},_0x235a86,_0x4366a4['options']);var _0x7785e1={'where':_0x235a86[_0x6f00('0x38')]};return db[_0x6f00('0x2a')][_0x6f00('0x1d')](_0x7785e1)['then'](function(_0x53dc8c){_0x451849[_0x6f00('0x1d')]=_0x53dc8c;if(_0x4366a4['query'][_0x6f00('0x3c')]){_0x235a86[_0x6f00('0x3d')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x6f00('0x3e')](_0x235a86);})['then'](function(_0x4cac2c){_0x451849[_0x6f00('0x3f')]=_0x4cac2c;return _0x451849;})[_0x6f00('0x23')](respondWithFilteredResult(_0x2671fe,_0x235a86))[_0x6f00('0x40')](handleError(_0x2671fe,null));};exports[_0x6f00('0x41')]=function(_0x56399a,_0x38ee25){var _0x4523f2={'raw':!![],'where':{'id':_0x56399a[_0x6f00('0x42')]['id']}},_0x2bb5aa={};_0x2bb5aa[_0x6f00('0x30')]=_[_0x6f00('0x2d')](db['JscriptyAnswerReport'][_0x6f00('0x2b')]);_0x2bb5aa[_0x6f00('0x31')]=_[_0x6f00('0x2d')](_0x56399a[_0x6f00('0x31')]);_0x2bb5aa[_0x6f00('0x2e')]=_[_0x6f00('0x2f')](_0x2bb5aa['model'],_0x2bb5aa[_0x6f00('0x31')]);_0x4523f2[_0x6f00('0x32')]=_[_0x6f00('0x2f')](_0x2bb5aa['model'],qs[_0x6f00('0x33')](_0x56399a['query'][_0x6f00('0x33')]));_0x4523f2[_0x6f00('0x32')]=_0x4523f2['attributes'][_0x6f00('0x43')]?_0x4523f2['attributes']:_0x2bb5aa[_0x6f00('0x30')];if(_0x56399a[_0x6f00('0x31')][_0x6f00('0x3c')]){_0x4523f2[_0x6f00('0x3d')]=[{'all':!![]}];}_0x4523f2=_['merge']({},_0x4523f2,_0x56399a[_0x6f00('0x44')]);return db['JscriptyAnswerReport'][_0x6f00('0x45')](_0x4523f2)['then'](handleEntityNotFound(_0x38ee25,null))[_0x6f00('0x23')](respondWithResult(_0x38ee25,null))[_0x6f00('0x40')](handleError(_0x38ee25,null));};exports[_0x6f00('0x46')]=function(_0x9b003,_0x470ff3){return db[_0x6f00('0x2a')][_0x6f00('0x46')](_0x9b003[_0x6f00('0x47')],{})['then'](respondWithResult(_0x470ff3,0xc9))[_0x6f00('0x40')](handleError(_0x470ff3,null));};exports['update']=function(_0x265666,_0x31fb17){if(_0x265666[_0x6f00('0x47')]['id']){delete _0x265666['body']['id'];}return db['JscriptyAnswerReport'][_0x6f00('0x45')]({'where':{'id':_0x265666[_0x6f00('0x42')]['id']}})['then'](handleEntityNotFound(_0x31fb17,null))[_0x6f00('0x23')](saveUpdates(_0x265666['body'],null))[_0x6f00('0x23')](respondWithResult(_0x31fb17,null))['catch'](handleError(_0x31fb17,null));};exports[_0x6f00('0x48')]=function(_0x222b4c,_0x4c6e06){return db['JscriptyAnswerReport'][_0x6f00('0x45')]({'where':{'id':_0x222b4c[_0x6f00('0x42')]['id']}})['then'](handleEntityNotFound(_0x4c6e06,null))[_0x6f00('0x23')](removeEntity(_0x4c6e06,null))['catch'](handleError(_0x4c6e06,null));};exports[_0x6f00('0x49')]=function(_0x7f80ed,_0x3100ee){return db[_0x6f00('0x2a')][_0x6f00('0x49')]()[_0x6f00('0x23')](respondWithResult(_0x3100ee,null))[_0x6f00('0x40')](handleError(_0x3100ee,null));};
\ No newline at end of file
index a2c72c8..49aba18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223b=['bluebird','request-promise','path','../../config/environment','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger'];(function(_0x29bc4a,_0x9a63f1){var _0x251386=function(_0x5f0521){while(--_0x5f0521){_0x29bc4a['push'](_0x29bc4a['shift']());}};_0x251386(++_0x9a63f1);}(_0x223b,0x94));var _0xb223=function(_0x178c13,_0xfa0dc5){_0x178c13=_0x178c13-0x0;var _0x45fd90=_0x223b[_0x178c13];return _0x45fd90;};'use strict';var _=require(_0xb223('0x0'));var util=require('util');var logger=require(_0xb223('0x1'))('api');var moment=require('moment');var BPromise=require(_0xb223('0x2'));var rp=require(_0xb223('0x3'));var fs=require('fs');var path=require(_0xb223('0x4'));var rimraf=require('rimraf');var config=require(_0xb223('0x5'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xb223('0x6')]=function(_0x59733e,_0x133957){return _0x59733e[_0xb223('0x7')](_0xb223('0x8'),attributes,{'tableName':_0xb223('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfaa7=['request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','bluebird'];(function(_0x3727ae,_0x165f88){var _0x1c3f01=function(_0x5cd5a5){while(--_0x5cd5a5){_0x3727ae['push'](_0x3727ae['shift']());}};_0x1c3f01(++_0x165f88);}(_0xfaa7,0x105));var _0x7faa=function(_0x18550d,_0xa36822){_0x18550d=_0x18550d-0x0;var _0x186788=_0xfaa7[_0x18550d];return _0x186788;};'use strict';var _=require(_0x7faa('0x0'));var util=require(_0x7faa('0x1'));var logger=require(_0x7faa('0x2'))(_0x7faa('0x3'));var moment=require('moment');var BPromise=require(_0x7faa('0x4'));var rp=require(_0x7faa('0x5'));var fs=require('fs');var path=require(_0x7faa('0x6'));var rimraf=require(_0x7faa('0x7'));var config=require(_0x7faa('0x8'));var attributes=require(_0x7faa('0x9'));module[_0x7faa('0xa')]=function(_0x30f0b6,_0x520dc8){return _0x30f0b6[_0x7faa('0xb')](_0x7faa('0xc'),attributes,{'tableName':_0x7faa('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58db251..fb58feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc20c=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x259613,_0x21a6a5){var _0x381af3=function(_0x1e3860){while(--_0x1e3860){_0x259613['push'](_0x259613['shift']());}};_0x381af3(++_0x21a6a5);}(_0xc20c,0xa3));var _0xcc20=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0xc20c[_0x40a825];return _0x273a54;};'use strict';var _=require('lodash');var util=require(_0xcc20('0x0'));var moment=require(_0xcc20('0x1'));var BPromise=require(_0xcc20('0x2'));var rs=require(_0xcc20('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcc20('0x4'))['db'];var utils=require(_0xcc20('0x5'));var logger=require(_0xcc20('0x6'))(_0xcc20('0x7'));var config=require('../../config/environment');var jayson=require(_0xcc20('0x8'));var client=jayson[_0xcc20('0x9')][_0xcc20('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4db63c,_0x4b5dcb,_0xc80515){return new BPromise(function(_0x170db1,_0x1f5df5){return client[_0xcc20('0xb')](_0x4db63c,_0xc80515)[_0xcc20('0xc')](function(_0x41477e){logger[_0xcc20('0xd')](_0xcc20('0xe'),_0x4b5dcb,_0xcc20('0xf'));logger['debug'](_0xcc20('0x10'),_0x4b5dcb,_0xcc20('0xf'),JSON[_0xcc20('0x11')](_0x41477e));if(_0x41477e[_0xcc20('0x12')]){if(_0x41477e[_0xcc20('0x12')]['code']===0x1f4){logger[_0xcc20('0x12')](_0xcc20('0xe'),_0x4b5dcb,_0x41477e[_0xcc20('0x12')][_0xcc20('0x13')]);return _0x1f5df5(_0x41477e['error'][_0xcc20('0x13')]);}logger[_0xcc20('0x12')](_0xcc20('0xe'),_0x4b5dcb,_0x41477e[_0xcc20('0x12')][_0xcc20('0x13')]);return _0x170db1(_0x41477e['error'][_0xcc20('0x13')]);}else{logger[_0xcc20('0xd')](_0xcc20('0xe'),_0x4b5dcb,'request\x20sent');_0x170db1(_0x41477e[_0xcc20('0x14')][_0xcc20('0x13')]);}})[_0xcc20('0x15')](function(_0x11bc2f){logger[_0xcc20('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x4b5dcb,_0x11bc2f);_0x1f5df5(_0x11bc2f);});});}
\ No newline at end of file
+var _0xd2f3=['JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x54a480,_0x67620c){var _0x560919=function(_0x3f436b){while(--_0x3f436b){_0x54a480['push'](_0x54a480['shift']());}};_0x560919(++_0x67620c);}(_0xd2f3,0x169));var _0x3d2f=function(_0x15a18a,_0x5677e9){_0x15a18a=_0x15a18a-0x0;var _0x56a007=_0xd2f3[_0x15a18a];return _0x56a007;};'use strict';var _=require('lodash');var util=require(_0x3d2f('0x0'));var moment=require(_0x3d2f('0x1'));var BPromise=require(_0x3d2f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d2f('0x3'));var db=require(_0x3d2f('0x4'))['db'];var utils=require(_0x3d2f('0x5'));var logger=require(_0x3d2f('0x6'))('rpc');var config=require(_0x3d2f('0x7'));var jayson=require(_0x3d2f('0x8'));var client=jayson['client'][_0x3d2f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x49c075,_0x579e41,_0x4a66b7){return new BPromise(function(_0x479e39,_0x57e73d){return client[_0x3d2f('0xa')](_0x49c075,_0x4a66b7)[_0x3d2f('0xb')](function(_0x53cb46){logger[_0x3d2f('0xc')](_0x3d2f('0xd'),_0x579e41,_0x3d2f('0xe'));logger[_0x3d2f('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x579e41,_0x3d2f('0xe'),JSON[_0x3d2f('0x10')](_0x53cb46));if(_0x53cb46[_0x3d2f('0x11')]){if(_0x53cb46[_0x3d2f('0x11')][_0x3d2f('0x12')]===0x1f4){logger[_0x3d2f('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x579e41,_0x53cb46[_0x3d2f('0x11')][_0x3d2f('0x13')]);return _0x57e73d(_0x53cb46['error'][_0x3d2f('0x13')]);}logger[_0x3d2f('0x11')](_0x3d2f('0xd'),_0x579e41,_0x53cb46[_0x3d2f('0x11')][_0x3d2f('0x13')]);return _0x479e39(_0x53cb46[_0x3d2f('0x11')][_0x3d2f('0x13')]);}else{logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x579e41,_0x3d2f('0xe'));_0x479e39(_0x53cb46[_0x3d2f('0x14')][_0x3d2f('0x13')]);}})[_0x3d2f('0x15')](function(_0x239991){logger[_0x3d2f('0x11')](_0x3d2f('0xd'),_0x579e41,_0x239991);_0x57e73d(_0x239991);});});}
\ No newline at end of file
index 8dbf3a8..bbbbfdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7276=['isAuthenticated','index','/:id','/:id/sessions','getSessions','/:id/answers','getAnswers','30s','getSummary','post','create','clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x678e33,_0x3dda98){var _0x133cdb=function(_0x430700){while(--_0x430700){_0x678e33['push'](_0x678e33['shift']());}};_0x133cdb(++_0x3dda98);}(_0x7276,0x10d));var _0x6727=function(_0x1886d0,_0x36d4b4){_0x1886d0=_0x1886d0-0x0;var _0x152689=_0x7276[_0x1886d0];return _0x152689;};'use strict';var multer=require(_0x6727('0x0'));var util=require(_0x6727('0x1'));var path=require(_0x6727('0x2'));var timeout=require(_0x6727('0x3'));var express=require(_0x6727('0x4'));var router=express[_0x6727('0x5')]();var fs_extra=require(_0x6727('0x6'));var auth=require(_0x6727('0x7'));var interaction=require(_0x6727('0x8'));var config=require(_0x6727('0x9'));var controller=require('./jscriptyProject.controller');router[_0x6727('0xa')]('/',auth[_0x6727('0xb')](),controller[_0x6727('0xc')]);router[_0x6727('0xa')](_0x6727('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x6727('0xa')](_0x6727('0xe'),auth['isAuthenticated'](),controller[_0x6727('0xf')]);router[_0x6727('0xa')](_0x6727('0x10'),auth[_0x6727('0xb')](),controller[_0x6727('0x11')]);router['get']('/:id/summary',auth[_0x6727('0xb')](),timeout(_0x6727('0x12')),controller[_0x6727('0x13')]);router[_0x6727('0x14')]('/',auth[_0x6727('0xb')](),controller[_0x6727('0x15')]);router[_0x6727('0x14')]('/:id/clone',auth[_0x6727('0xb')](),controller[_0x6727('0x16')]);router[_0x6727('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x6727('0x18')]);router[_0x6727('0x19')](_0x6727('0xd'),auth[_0x6727('0xb')](),controller[_0x6727('0x1a')]);module[_0x6727('0x1b')]=router;
\ No newline at end of file
+var _0xcd6f=['delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','/:id/sessions','getAnswers','getSummary','post','clone','put','/:id','update'];(function(_0x27739a,_0x3dc54e){var _0x5f1758=function(_0x18cb46){while(--_0x18cb46){_0x27739a['push'](_0x27739a['shift']());}};_0x5f1758(++_0x3dc54e);}(_0xcd6f,0xb3));var _0xfcd6=function(_0xad61b5,_0x48e93c){_0xad61b5=_0xad61b5-0x0;var _0x1852ff=_0xcd6f[_0xad61b5];return _0x1852ff;};'use strict';var multer=require(_0xfcd6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfcd6('0x1'));var express=require(_0xfcd6('0x2'));var router=express[_0xfcd6('0x3')]();var fs_extra=require(_0xfcd6('0x4'));var auth=require(_0xfcd6('0x5'));var interaction=require(_0xfcd6('0x6'));var config=require(_0xfcd6('0x7'));var controller=require('./jscriptyProject.controller');router[_0xfcd6('0x8')]('/',auth[_0xfcd6('0x9')](),controller['index']);router[_0xfcd6('0x8')]('/:id',auth[_0xfcd6('0x9')](),controller[_0xfcd6('0xa')]);router[_0xfcd6('0x8')](_0xfcd6('0xb'),auth[_0xfcd6('0x9')](),controller['getSessions']);router[_0xfcd6('0x8')]('/:id/answers',auth['isAuthenticated'](),controller[_0xfcd6('0xc')]);router[_0xfcd6('0x8')]('/:id/summary',auth[_0xfcd6('0x9')](),timeout('30s'),controller[_0xfcd6('0xd')]);router[_0xfcd6('0xe')]('/',auth[_0xfcd6('0x9')](),controller['create']);router[_0xfcd6('0xe')]('/:id/clone',auth[_0xfcd6('0x9')](),controller[_0xfcd6('0xf')]);router[_0xfcd6('0x10')](_0xfcd6('0x11'),auth[_0xfcd6('0x9')](),controller[_0xfcd6('0x12')]);router[_0xfcd6('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xfcd6('0x14')]);module[_0xfcd6('0x15')]=router;
\ No newline at end of file
index 07ca6bd..4a813e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe83b=['long','isObjectLike','formData','stringify','isString','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','exports','STRING','name','TEXT'];(function(_0x2dc8af,_0x4fbf03){var _0x3eed5f=function(_0x31b0b8){while(--_0x31b0b8){_0x2dc8af['push'](_0x2dc8af['shift']());}};_0x3eed5f(++_0x4fbf03);}(_0xe83b,0x15a));var _0xbe83=function(_0x82536f,_0x34d356){_0x82536f=_0x82536f-0x0;var _0x246861=_0xe83b[_0x82536f];return _0x246861;};'use strict';var Sequelize=require(_0xbe83('0x0'));var _=require(_0xbe83('0x1'));var util=require('util');module[_0xbe83('0x2')]={'name':{'type':Sequelize[_0xbe83('0x3')],'unique':_0xbe83('0x4')},'description':{'type':Sequelize[_0xbe83('0x3')]},'formData':{'type':Sequelize[_0xbe83('0x5')](_0xbe83('0x6')),'set':function(_0x148662){if(_[_0xbe83('0x7')](_0x148662)){this['setDataValue'](_0xbe83('0x8'),JSON[_0xbe83('0x9')](_0x148662));}else if(_[_0xbe83('0xa')](_0x148662)){this['setDataValue'](_0xbe83('0x8'),_0x148662);}else{this[_0xbe83('0xb')](_0xbe83('0x8'),util[_0xbe83('0xc')](_0xbe83('0xd'),this[_0xbe83('0xe')]('name')||'',this[_0xbe83('0xe')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xbe83('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0xa8c4=['description','BOOLEAN','sequelize','lodash','exports','STRING','name','TEXT','long','setDataValue','formData','stringify','isString','format','getDataValue'];(function(_0x415956,_0x1fd33a){var _0x245143=function(_0x33c1c1){while(--_0x33c1c1){_0x415956['push'](_0x415956['shift']());}};_0x245143(++_0x1fd33a);}(_0xa8c4,0x13d));var _0x4a8c=function(_0x52fe81,_0x56ecd9){_0x52fe81=_0x52fe81-0x0;var _0x44fc94=_0xa8c4[_0x52fe81];return _0x44fc94;};'use strict';var Sequelize=require(_0x4a8c('0x0'));var _=require(_0x4a8c('0x1'));var util=require('util');module[_0x4a8c('0x2')]={'name':{'type':Sequelize[_0x4a8c('0x3')],'unique':_0x4a8c('0x4')},'description':{'type':Sequelize[_0x4a8c('0x3')]},'formData':{'type':Sequelize[_0x4a8c('0x5')](_0x4a8c('0x6')),'set':function(_0xded0a){if(_['isObjectLike'](_0xded0a)){this[_0x4a8c('0x7')](_0x4a8c('0x8'),JSON[_0x4a8c('0x9')](_0xded0a));}else if(_[_0x4a8c('0xa')](_0xded0a)){this[_0x4a8c('0x7')]('formData',_0xded0a);}else{this[_0x4a8c('0x7')]('formData',util[_0x4a8c('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x4a8c('0xc')](_0x4a8c('0x4'))||'',this[_0x4a8c('0xc')](_0x4a8c('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x4a8c('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x4a8c('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 741db3c..950ba72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2e=['findAll','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','hasOwnProperty','questionId','question','YYYY-MM-DD\x20HH:mm:ss','answer','push','isEmpty','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','Content-type','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','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','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Projects','UserProfileResource','error','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','getSessions','findOne','JscriptySessionReport','order','pick','ProjectId','getAnswers','JscriptyAnswerReport'];(function(_0x499cb8,_0x1d97f4){var _0x436de9=function(_0x44c06e){while(--_0x44c06e){_0x499cb8['push'](_0x499cb8['shift']());}};_0x436de9(++_0x1d97f4);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x2c99d0,_0x25ea43){_0x2c99d0=_0x2c99d0-0x0;var _0x38e98c=_0x4e2e[_0x2c99d0];return _0x38e98c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe4e2('0x0'));var zipdir=require(_0xe4e2('0x1'));var jsonpatch=require(_0xe4e2('0x2'));var rp=require(_0xe4e2('0x3'));var moment=require(_0xe4e2('0x4'));var BPromise=require(_0xe4e2('0x5'));var Mustache=require('mustache');var util=require(_0xe4e2('0x6'));var path=require(_0xe4e2('0x7'));var sox=require(_0xe4e2('0x8'));var csv=require(_0xe4e2('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4e2('0xa'));var _=require(_0xe4e2('0xb'));var squel=require(_0xe4e2('0xc'));var crypto=require(_0xe4e2('0xd'));var jsforce=require(_0xe4e2('0xe'));var deskjs=require(_0xe4e2('0xf'));var toCsv=require(_0xe4e2('0x9'));var querystring=require(_0xe4e2('0x10'));var Papa=require('papaparse');var Redis=require(_0xe4e2('0x11'));var authService=require(_0xe4e2('0x12'));var qs=require(_0xe4e2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe4e2('0x14'));var logger=require(_0xe4e2('0x15'))(_0xe4e2('0x16'));var utils=require(_0xe4e2('0x17'));var config=require(_0xe4e2('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe4e2('0x19'))['db'];function respondWithStatusCode(_0x20d34e,_0x19c6ef){_0x19c6ef=_0x19c6ef||0xcc;return function(_0x13657c){if(_0x13657c){return _0x20d34e['sendStatus'](_0x19c6ef);}return _0x20d34e[_0xe4e2('0x1a')](_0x19c6ef)[_0xe4e2('0x1b')]();};}function respondWithResult(_0xb45217,_0x4e0bc2){_0x4e0bc2=_0x4e0bc2||0xc8;return function(_0x202486){if(_0x202486){return _0xb45217['status'](_0x4e0bc2)['json'](_0x202486);}};}function respondWithFilteredResult(_0x117a2a,_0x2d2018){return function(_0x1f9b2d){if(_0x1f9b2d){var _0x28ee12=typeof _0x2d2018[_0xe4e2('0x1c')]==='undefined'&&typeof _0x2d2018[_0xe4e2('0x1d')]===_0xe4e2('0x1e');var _0x340935=_0x1f9b2d['count'];var _0x196f16=_0x28ee12?0x0:_0x2d2018['offset'];var _0x1d5e9d=_0x28ee12?_0x1f9b2d[_0xe4e2('0x1f')]:_0x2d2018[_0xe4e2('0x1c')]+_0x2d2018[_0xe4e2('0x1d')];var _0x3dfbdf;if(_0x1d5e9d>=_0x340935){_0x1d5e9d=_0x340935;_0x3dfbdf=0xc8;}else{_0x3dfbdf=0xce;}_0x117a2a[_0xe4e2('0x1a')](_0x3dfbdf);return _0x117a2a[_0xe4e2('0x20')](_0xe4e2('0x21'),_0x196f16+'-'+_0x1d5e9d+'/'+_0x340935)[_0xe4e2('0x22')](_0x1f9b2d);}return null;};}function patchUpdates(_0x362741){return function(_0x5a84c5){try{jsonpatch[_0xe4e2('0x23')](_0x5a84c5,_0x362741,!![]);}catch(_0x2e7ecd){return BPromise[_0xe4e2('0x24')](_0x2e7ecd);}return _0x5a84c5[_0xe4e2('0x25')]();};}function saveUpdates(_0xbdf1ad,_0x23b466){return function(_0x16f14b){if(_0x16f14b){return _0x16f14b['update'](_0xbdf1ad)[_0xe4e2('0x26')](function(_0x2ab435){return _0x2ab435;});}return null;};}function removeEntity(_0x2088b9,_0x5373c0){return function(_0x353030){if(_0x353030){return _0x353030[_0xe4e2('0x27')]()['then'](function(){var _0xcba85a=_0x353030[_0xe4e2('0x28')]({'plain':!![]});var _0x29143c=_0xe4e2('0x29');return db[_0xe4e2('0x2a')]['destroy']({'where':{'type':_0x29143c,'resourceId':_0xcba85a['id']}})[_0xe4e2('0x26')](function(){return _0x353030;});})[_0xe4e2('0x26')](function(){_0x2088b9[_0xe4e2('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a31b8,_0x41cfd9){return function(_0x31f651){if(!_0x31f651){_0x3a31b8['sendStatus'](0x194);}return _0x31f651;};}function handleError(_0x2e5a65,_0x50b4d9){_0x50b4d9=_0x50b4d9||0x1f4;return function(_0x477b5c){logger[_0xe4e2('0x2b')](_0x477b5c['stack']);if(_0x477b5c[_0xe4e2('0x2c')]){delete _0x477b5c[_0xe4e2('0x2c')];}_0x2e5a65[_0xe4e2('0x1a')](_0x50b4d9)[_0xe4e2('0x2d')](_0x477b5c);};}exports[_0xe4e2('0x2e')]=function(_0x4d33de,_0x5f30dc){var _0x2cb235={},_0x2fe075={},_0x12848d={'count':0x0,'rows':[]};var _0x26fb97=_[_0xe4e2('0x2f')](db[_0xe4e2('0x30')][_0xe4e2('0x31')],function(_0x40569e){return{'name':_0x40569e[_0xe4e2('0x32')],'type':_0x40569e[_0xe4e2('0x33')][_0xe4e2('0x34')]};});_0x2fe075[_0xe4e2('0x35')]=_['map'](_0x26fb97,_0xe4e2('0x2c'));_0x2fe075[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x4d33de[_0xe4e2('0x36')]);_0x2fe075[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x2fe075['model'],_0x2fe075[_0xe4e2('0x36')]);_0x2cb235[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x2fe075[_0xe4e2('0x35')],qs[_0xe4e2('0x3b')](_0x4d33de[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0x2cb235[_0xe4e2('0x3a')]=_0x2cb235[_0xe4e2('0x3a')][_0xe4e2('0x3c')]?_0x2cb235[_0xe4e2('0x3a')]:_0x2fe075['model'];if(!_0x4d33de[_0xe4e2('0x36')]['hasOwnProperty'](_0xe4e2('0x3d'))){_0x2cb235[_0xe4e2('0x1d')]=qs['limit'](_0x4d33de[_0xe4e2('0x36')][_0xe4e2('0x1d')]);_0x2cb235[_0xe4e2('0x1c')]=qs[_0xe4e2('0x1c')](_0x4d33de['query'][_0xe4e2('0x1c')]);}_0x2cb235['order']=qs[_0xe4e2('0x3e')](_0x4d33de['query'][_0xe4e2('0x3e')]);_0x2cb235[_0xe4e2('0x3f')]=qs[_0xe4e2('0x38')](_['pick'](_0x4d33de[_0xe4e2('0x36')],_0x2fe075[_0xe4e2('0x38')]),_0x26fb97);if(_0x4d33de['query'][_0xe4e2('0x40')]){_0x2cb235[_0xe4e2('0x3f')]=_[_0xe4e2('0x41')](_0x2cb235[_0xe4e2('0x3f')],{'$or':_[_0xe4e2('0x2f')](_0x26fb97,function(_0x242435){if(_0x242435[_0xe4e2('0x33')]!==_0xe4e2('0x42')){var _0xc07ff5={};_0xc07ff5[_0x242435['name']]={'$like':'%'+_0x4d33de['query'][_0xe4e2('0x40')]+'%'};return _0xc07ff5;}})});}_0x2cb235=_[_0xe4e2('0x41')]({},_0x2cb235,_0x4d33de[_0xe4e2('0x43')]);var _0x3e1ae5={'where':_0x2cb235['where']};return db['JscriptyProject'][_0xe4e2('0x1f')](_0x3e1ae5)[_0xe4e2('0x26')](function(_0x3080d5){_0x12848d[_0xe4e2('0x1f')]=_0x3080d5;if(_0x4d33de['query'][_0xe4e2('0x44')]){_0x2cb235[_0xe4e2('0x45')]=[{'all':!![]}];}return db[_0xe4e2('0x30')]['findAll'](_0x2cb235);})[_0xe4e2('0x26')](function(_0x4789cf){_0x12848d[_0xe4e2('0x46')]=_0x4789cf;return _0x12848d;})[_0xe4e2('0x26')](respondWithFilteredResult(_0x5f30dc,_0x2cb235))['catch'](handleError(_0x5f30dc,null));};exports['show']=function(_0x41f16c,_0x87eb2d){var _0x39fff5={'raw':![],'where':{'id':_0x41f16c[_0xe4e2('0x47')]['id']}},_0x5c29c3={};_0x5c29c3[_0xe4e2('0x35')]=_['keys'](db[_0xe4e2('0x30')][_0xe4e2('0x31')]);_0x5c29c3[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x41f16c[_0xe4e2('0x36')]);_0x5c29c3[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x5c29c3[_0xe4e2('0x35')],_0x5c29c3['query']);_0x39fff5[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x5c29c3['model'],qs['fields'](_0x41f16c[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0x39fff5[_0xe4e2('0x3a')]=_0x39fff5['attributes'][_0xe4e2('0x3c')]?_0x39fff5[_0xe4e2('0x3a')]:_0x5c29c3[_0xe4e2('0x35')];if(_0x41f16c[_0xe4e2('0x36')]['includeAll']){_0x39fff5[_0xe4e2('0x45')]=[{'all':!![]}];}_0x39fff5=_[_0xe4e2('0x41')]({},_0x39fff5,_0x41f16c[_0xe4e2('0x43')]);return db[_0xe4e2('0x30')]['find'](_0x39fff5)[_0xe4e2('0x26')](handleEntityNotFound(_0x87eb2d,null))[_0xe4e2('0x26')](respondWithResult(_0x87eb2d,null))['catch'](handleError(_0x87eb2d,null));};exports[_0xe4e2('0x48')]=function(_0xedcd86,_0x21e5d7){return db['JscriptyProject'][_0xe4e2('0x48')](_0xedcd86[_0xe4e2('0x49')],{})[_0xe4e2('0x26')](function(_0x599978){var _0x5edd7e=_0xedcd86[_0xe4e2('0x4a')]['get']({'plain':!![]});if(!_0x5edd7e)throw new Error(_0xe4e2('0x4b'));if(_0x5edd7e['role']===_0xe4e2('0x4a')){var _0x2125df=_0x599978[_0xe4e2('0x28')]({'plain':!![]});var _0x553817=_0xe4e2('0x29');return db['UserProfileSection'][_0xe4e2('0x4c')]({'where':{'name':_0x553817,'userProfileId':_0x5edd7e[_0xe4e2('0x4d')]},'raw':!![]})['then'](function(_0x9d00fb){if(_0x9d00fb&&_0x9d00fb['autoAssociation']===0x0){return db[_0xe4e2('0x2a')][_0xe4e2('0x48')]({'name':_0x2125df['name'],'resourceId':_0x2125df['id'],'type':_0x9d00fb[_0xe4e2('0x2c')],'sectionId':_0x9d00fb['id']},{})[_0xe4e2('0x26')](function(){return _0x599978;});}else{return _0x599978;}})[_0xe4e2('0x4e')](function(_0x3e540d){logger[_0xe4e2('0x2b')](_0xe4e2('0x4f'),_0x3e540d);throw _0x3e540d;});}return _0x599978;})[_0xe4e2('0x26')](respondWithResult(_0x21e5d7,0xc9))[_0xe4e2('0x4e')](handleError(_0x21e5d7,null));};exports[_0xe4e2('0x50')]=function(_0x503b77,_0x3e65df){var _0x172747={'where':{'id':_0x503b77[_0xe4e2('0x47')]['id']}},_0x2c1b83={};_0x2c1b83[_0xe4e2('0x35')]=_[_0xe4e2('0x37')](db[_0xe4e2('0x30')][_0xe4e2('0x31')]);_0x172747[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x2c1b83[_0xe4e2('0x35')],qs['fields'](_0x503b77[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0x172747[_0xe4e2('0x3a')]=_0x172747[_0xe4e2('0x3a')]['length']?_0x172747[_0xe4e2('0x3a')]:_0x2c1b83[_0xe4e2('0x35')];if(_0x503b77['query'][_0xe4e2('0x44')]){_0x172747[_0xe4e2('0x45')]=[{'all':!![]}];}_0x172747=_[_0xe4e2('0x41')]({},_0x172747,_0x503b77[_0xe4e2('0x43')]);return db['JscriptyProject'][_0xe4e2('0x4c')](_0x172747)['then'](handleEntityNotFound(_0x3e65df,null))[_0xe4e2('0x26')](function(_0x26847){if(_0x26847){var _0x1f22fb=_0x26847[_0xe4e2('0x28')]({'plain':!![]});_0x1f22fb=qs[_0xe4e2('0x51')](_0x1f22fb,['id',_0xe4e2('0x52'),_0xe4e2('0x53')]);_0x503b77[_0xe4e2('0x49')]=_[_0xe4e2('0x51')](_0x503b77[_0xe4e2('0x49')],['id',_0xe4e2('0x52'),_0xe4e2('0x53')]);return db['JscriptyProject'][_0xe4e2('0x48')](_['merge'](_0x1f22fb,_0x503b77['body']),{'include':_0x503b77[_0xe4e2('0x36')][_0xe4e2('0x44')]?[{'all':!![]}]:undefined})[_0xe4e2('0x26')](function(_0x5e4e16){var _0x477acd=_0x503b77['user'][_0xe4e2('0x28')]({'plain':!![]});if(!_0x477acd)throw new Error(_0xe4e2('0x4b'));if(_0x477acd['role']===_0xe4e2('0x4a')){var _0x14f7da=_0x5e4e16['get']({'plain':!![]});var _0x3f2b39=_0xe4e2('0x29');return db['UserProfileSection'][_0xe4e2('0x4c')]({'where':{'name':_0x3f2b39,'userProfileId':_0x477acd[_0xe4e2('0x4d')]},'raw':!![]})[_0xe4e2('0x26')](function(_0x3f7be9){if(_0x3f7be9&&_0x3f7be9['autoAssociation']===0x0){return db[_0xe4e2('0x2a')][_0xe4e2('0x48')]({'name':_0x14f7da[_0xe4e2('0x2c')],'resourceId':_0x14f7da['id'],'type':_0x3f7be9[_0xe4e2('0x2c')],'sectionId':_0x3f7be9['id']},{})[_0xe4e2('0x26')](function(){return _0x5e4e16;});}else{return _0x5e4e16;}})[_0xe4e2('0x4e')](function(_0x1ef7f8){logger[_0xe4e2('0x2b')](_0xe4e2('0x4f'),_0x1ef7f8);throw _0x1ef7f8;});}return _0x5e4e16;});}})['then'](respondWithResult(_0x3e65df,0xc9))['catch'](handleError(_0x3e65df,null));};exports['update']=function(_0x39f59c,_0x17d904){if(_0x39f59c[_0xe4e2('0x49')]['id']){delete _0x39f59c[_0xe4e2('0x49')]['id'];}return db[_0xe4e2('0x30')][_0xe4e2('0x4c')]({'where':{'id':_0x39f59c[_0xe4e2('0x47')]['id']}})['then'](handleEntityNotFound(_0x17d904,null))[_0xe4e2('0x26')](saveUpdates(_0x39f59c[_0xe4e2('0x49')],null))[_0xe4e2('0x26')](respondWithResult(_0x17d904,null))[_0xe4e2('0x4e')](handleError(_0x17d904,null));};exports[_0xe4e2('0x27')]=function(_0x3ec540,_0x272d13){return db[_0xe4e2('0x30')][_0xe4e2('0x4c')]({'where':{'id':_0x3ec540[_0xe4e2('0x47')]['id']}})[_0xe4e2('0x26')](handleEntityNotFound(_0x272d13,null))[_0xe4e2('0x26')](removeEntity(_0x272d13,null))[_0xe4e2('0x4e')](handleError(_0x272d13,null));};exports[_0xe4e2('0x54')]=function(_0x3dde87,_0x51d58d,_0x4434c9){var _0xdeb76a={'raw':!![],'where':{}};var _0x32185b={};var _0x46d17a={'count':0x0,'rows':[]};return db[_0xe4e2('0x30')][_0xe4e2('0x55')]({'where':{'id':_0x3dde87[_0xe4e2('0x47')]['id']}})[_0xe4e2('0x26')](handleEntityNotFound(_0x51d58d,null))[_0xe4e2('0x26')](function(_0x23e014){if(_0x23e014){_0x32185b['model']=_[_0xe4e2('0x37')](db[_0xe4e2('0x56')][_0xe4e2('0x31')]);_0x32185b[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x3dde87[_0xe4e2('0x36')]);_0x32185b[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x32185b['model'],_0x32185b[_0xe4e2('0x36')]);_0xdeb76a[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x32185b[_0xe4e2('0x35')],qs[_0xe4e2('0x3b')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0xdeb76a[_0xe4e2('0x3a')]=_0xdeb76a[_0xe4e2('0x3a')][_0xe4e2('0x3c')]?_0xdeb76a['attributes']:_0x32185b[_0xe4e2('0x35')];if(!_0x3dde87[_0xe4e2('0x36')]['hasOwnProperty'](_0xe4e2('0x3d'))){_0xdeb76a[_0xe4e2('0x1d')]=qs[_0xe4e2('0x1d')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x1d')]);_0xdeb76a['offset']=qs[_0xe4e2('0x1c')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x1c')]);}_0xdeb76a[_0xe4e2('0x57')]=qs[_0xe4e2('0x3e')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x3e')]);_0xdeb76a[_0xe4e2('0x3f')]=qs['filters'](_[_0xe4e2('0x58')](_0x3dde87[_0xe4e2('0x36')],_0x32185b[_0xe4e2('0x38')]));_0xdeb76a[_0xe4e2('0x3f')][_0xe4e2('0x59')]=_0x23e014['id'];if(_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x40')]){_0xdeb76a[_0xe4e2('0x3f')]=_[_0xe4e2('0x41')](_0xdeb76a['where'],{'$or':_[_0xe4e2('0x2f')](_0xdeb76a[_0xe4e2('0x3a')],function(_0x3244d6){var _0x40fa3c={};_0x40fa3c[_0x3244d6]={'$like':'%'+_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x40')]+'%'};return _0x40fa3c;})});}_0xdeb76a=_[_0xe4e2('0x41')]({},_0xdeb76a,_0x3dde87[_0xe4e2('0x43')]);return db[_0xe4e2('0x56')][_0xe4e2('0x1f')]({'where':_0xdeb76a[_0xe4e2('0x3f')]})[_0xe4e2('0x26')](function(_0x3fe76c){_0x46d17a['count']=_0x3fe76c;if(_0x3dde87[_0xe4e2('0x36')]['includeAll']){_0xdeb76a[_0xe4e2('0x45')]=[{'all':!![]}];}return db[_0xe4e2('0x56')]['findAll'](_0xdeb76a);})[_0xe4e2('0x26')](function(_0xd829a8){_0x46d17a[_0xe4e2('0x46')]=_0xd829a8;return _0x46d17a;});}})[_0xe4e2('0x26')](respondWithFilteredResult(_0x51d58d,_0xdeb76a))[_0xe4e2('0x4e')](handleError(_0x51d58d,null));};exports[_0xe4e2('0x5a')]=function(_0x20d12,_0x536057,_0x181d9e){var _0x355953={'raw':!![],'where':{}};var _0x5b0168={};var _0x4a8f87={'count':0x0,'rows':[]};return db[_0xe4e2('0x30')][_0xe4e2('0x55')]({'where':{'id':_0x20d12[_0xe4e2('0x47')]['id']}})['then'](handleEntityNotFound(_0x536057,null))[_0xe4e2('0x26')](function(_0x5b0948){if(_0x5b0948){_0x5b0168[_0xe4e2('0x35')]=_[_0xe4e2('0x37')](db['JscriptyAnswerReport'][_0xe4e2('0x31')]);_0x5b0168[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x20d12[_0xe4e2('0x36')]);_0x5b0168[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x5b0168[_0xe4e2('0x35')],_0x5b0168[_0xe4e2('0x36')]);_0x355953[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x5b0168['model'],qs[_0xe4e2('0x3b')](_0x20d12[_0xe4e2('0x36')]['fields']));_0x355953[_0xe4e2('0x3a')]=_0x355953['attributes'][_0xe4e2('0x3c')]?_0x355953[_0xe4e2('0x3a')]:_0x5b0168[_0xe4e2('0x35')];if(!_0x20d12[_0xe4e2('0x36')]['hasOwnProperty'](_0xe4e2('0x3d'))){_0x355953[_0xe4e2('0x1d')]=qs[_0xe4e2('0x1d')](_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x1d')]);_0x355953[_0xe4e2('0x1c')]=qs[_0xe4e2('0x1c')](_0x20d12['query']['offset']);}_0x355953[_0xe4e2('0x57')]=qs[_0xe4e2('0x3e')](_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x3e')]);_0x355953[_0xe4e2('0x3f')]=qs[_0xe4e2('0x38')](_[_0xe4e2('0x58')](_0x20d12[_0xe4e2('0x36')],_0x5b0168[_0xe4e2('0x38')]));_0x355953[_0xe4e2('0x3f')][_0xe4e2('0x59')]=_0x5b0948['id'];if(_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x40')]){_0x355953[_0xe4e2('0x3f')]=_[_0xe4e2('0x41')](_0x355953[_0xe4e2('0x3f')],{'$or':_[_0xe4e2('0x2f')](_0x355953[_0xe4e2('0x3a')],function(_0x1930b9){var _0x536922={};_0x536922[_0x1930b9]={'$like':'%'+_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x40')]+'%'};return _0x536922;})});}_0x355953=_[_0xe4e2('0x41')]({},_0x355953,_0x20d12['options']);return db['JscriptyAnswerReport'][_0xe4e2('0x1f')]({'where':_0x355953['where']})[_0xe4e2('0x26')](function(_0x30bbb5){_0x4a8f87[_0xe4e2('0x1f')]=_0x30bbb5;if(_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x44')]){_0x355953[_0xe4e2('0x45')]=[{'all':!![]}];}return db[_0xe4e2('0x5b')][_0xe4e2('0x5c')](_0x355953);})[_0xe4e2('0x26')](function(_0x4a53fb){_0x4a8f87[_0xe4e2('0x46')]=_0x4a53fb;return _0x4a8f87;});}})[_0xe4e2('0x26')](respondWithFilteredResult(_0x536057,_0x355953))['catch'](handleError(_0x536057,null));};function char(_0x4ab01e){return _0xe4e2('0x5d')===typeof _0x4ab01e?String[_0xe4e2('0x5e')][_0xe4e2('0x23')](null,arguments):_0x4ab01e;}function needsEncapsulation(_0x10c166){return!!_0x10c166&&(_0x10c166[_0xe4e2('0x5f')]()[_0xe4e2('0x60')](char(0xd))>=0x0||_0x10c166[_0xe4e2('0x5f')]()[_0xe4e2('0x60')](char(0xa))>=0x0||_0x10c166[_0xe4e2('0x5f')]()[_0xe4e2('0x60')](char(0x2c))>=0x0||_0x10c166['toString']()[_0xe4e2('0x60')](char(0x22))>=0x0);}function encapsulate(_0x466aa2){var _0x174994=char(0x22),_0xb4355d='\x5c'+char(0x22),_0x46d566=_0x466aa2[_0xe4e2('0x5f')]()[_0xe4e2('0x61')](new RegExp(_0x174994,'g'),_0xb4355d);return _0x174994+_0x46d566+_0x174994;}exports['getSummary']=function(_0xceeaed,_0x3f329e,_0x256b6d){var _0x7d7592,_0x2a6e25;var _0x108f5a={'where':{'ProjectId':_0xceeaed[_0xe4e2('0x47')]['id']}};if(_0xceeaed[_0xe4e2('0x36')][_0xe4e2('0x62')]){_0x108f5a['where'][_0xe4e2('0x63')]=JSON[_0xe4e2('0x64')](_0xceeaed[_0xe4e2('0x36')]['startTime']);}return db[_0xe4e2('0x56')][_0xe4e2('0x5c')](_0x108f5a)[_0xe4e2('0x26')](handleEntityNotFound(_0x3f329e,null))[_0xe4e2('0x26')](function(_0x12d8e5){if(_0x12d8e5){_0x7d7592=_0x12d8e5;return db[_0xe4e2('0x65')]['findAll']({'where':{'SessionId':{'$in':_[_0xe4e2('0x2f')](_0x7d7592,'id')},'ProjectId':_0xceeaed[_0xe4e2('0x47')]['id']},'order':_0xe4e2('0x66')});}})['then'](handleEntityNotFound(_0x3f329e,null))[_0xe4e2('0x26')](function(_0x2b0b25){if(_0x2b0b25){_0x2a6e25=_0x2b0b25;var _0xeed072={};for(var _0x2c0751=0x0,_0x39c8f4=_0x2a6e25[_0xe4e2('0x3c')];_0x2c0751<_0x39c8f4;_0x2c0751++){if(!_0xeed072[_0xe4e2('0x67')](_0x2a6e25[_0x2c0751][_0xe4e2('0x68')])){_0xeed072[_0x2a6e25[_0x2c0751][_0xe4e2('0x68')]]=needsEncapsulation(_0x2a6e25[_0x2c0751][_0xe4e2('0x69')])?encapsulate(_0x2a6e25[_0x2c0751][_0xe4e2('0x69')]):_0x2a6e25[_0x2c0751][_0xe4e2('0x69')];}}var _0x321658=[],_0x46437f={};for(var _0x31bd18=0x0,_0x52cb24=_0x7d7592['length'];_0x31bd18<_0x52cb24;_0x31bd18++){_0x46437f={'ProjectId':_0xceeaed[_0xe4e2('0x47')]['id'],'SessionId':_0x7d7592[_0x31bd18]['id'],'StartTime':moment(_0x7d7592[_0x31bd18]['starttime'])['format'](_0xe4e2('0x6a'))};for(var _0x203fbc=0x0,_0x41c3a1=_0x2a6e25[_0xe4e2('0x3c')];_0x203fbc<_0x41c3a1;_0x203fbc++){if(_0x2a6e25[_0x203fbc]['SessionId']==_0x7d7592[_0x31bd18]['id']&&_0xeed072[_0xe4e2('0x67')](_0x2a6e25[_0x203fbc]['questionId'])){_0x46437f[_0xeed072[_0x2a6e25[_0x203fbc]['questionId']]]=_0x2a6e25[_0x203fbc][_0xe4e2('0x6b')];}}for(var _0x527d24 in _0xeed072){if(!_0x46437f[_0xe4e2('0x67')](_0xeed072[_0x527d24])){_0x46437f[_0xeed072[_0x527d24]]=null;}}_0x321658[_0xe4e2('0x6c')](_0x46437f);}return _0x321658;}})[_0xe4e2('0x26')](function(_0x4e6552){if(!_[_0xe4e2('0x6d')](_0x4e6552)){var _0x3c5048=toCsv(_0x4e6552);var _0x305988=Date['now']();fs[_0xe4e2('0x6e')](util[_0xe4e2('0x6f')](_0xe4e2('0x70'),_0xceeaed[_0xe4e2('0x47')]['id'],_0x305988),_0x3c5048);_0x3f329e['setHeader'](_0xe4e2('0x71'),_0xe4e2('0x72')+util[_0xe4e2('0x6f')]('Jscripty_Project_%d_Summary_%s.csv',_0xceeaed['params']['id'],_0x305988));_0x3f329e[_0xe4e2('0x73')](_0xe4e2('0x74'),'text/csv');return _0x3f329e[_0xe4e2('0x75')](util['format'](_0xe4e2('0x70'),_0xceeaed[_0xe4e2('0x47')]['id'],_0x305988));}else{return _0x3f329e['sendStatus'](0xcc);}})[_0xe4e2('0x4e')](handleError(_0x3f329e,null));};
\ No newline at end of file
+var _0x8165=['status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Projects','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll','include','JscriptyProject','findAll','rows','show','keys','find','catch','create','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','updatedAt','body','createdAt','user','userProfileId','autoAssociation','update','getSessions','findOne','params','JscriptySessionReport','ProjectId','getAnswers','JscriptyAnswerReport','pick','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus'];(function(_0x490098,_0x279a7a){var _0xb645eb=function(_0x15fb15){while(--_0x15fb15){_0x490098['push'](_0x490098['shift']());}};_0xb645eb(++_0x279a7a);}(_0x8165,0x1c3));var _0x5816=function(_0x15cf11,_0x5a3678){_0x15cf11=_0x15cf11-0x0;var _0x3ed63f=_0x8165[_0x15cf11];return _0x3ed63f;};'use strict';var emlformat=require(_0x5816('0x0'));var rimraf=require(_0x5816('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5816('0x2'));var rp=require(_0x5816('0x3'));var moment=require('moment');var BPromise=require(_0x5816('0x4'));var Mustache=require(_0x5816('0x5'));var util=require(_0x5816('0x6'));var path=require('path');var sox=require(_0x5816('0x7'));var csv=require('to-csv');var ejs=require(_0x5816('0x8'));var fs=require('fs');var fs_extra=require(_0x5816('0x9'));var _=require(_0x5816('0xa'));var squel=require(_0x5816('0xb'));var crypto=require(_0x5816('0xc'));var jsforce=require(_0x5816('0xd'));var deskjs=require(_0x5816('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5816('0xf'));var Redis=require(_0x5816('0x10'));var authService=require(_0x5816('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5816('0x12'));var hardwareService=require(_0x5816('0x13'));var logger=require(_0x5816('0x14'))('api');var utils=require(_0x5816('0x15'));var config=require(_0x5816('0x16'));var licenseUtil=require(_0x5816('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17b2a3,_0x18d267){_0x18d267=_0x18d267||0xcc;return function(_0x2c8da8){if(_0x2c8da8){return _0x17b2a3[_0x5816('0x18')](_0x18d267);}return _0x17b2a3[_0x5816('0x19')](_0x18d267)[_0x5816('0x1a')]();};}function respondWithResult(_0x2c8d5f,_0x958937){_0x958937=_0x958937||0xc8;return function(_0x14f111){if(_0x14f111){return _0x2c8d5f[_0x5816('0x19')](_0x958937)['json'](_0x14f111);}};}function respondWithFilteredResult(_0x135581,_0x5ded88){return function(_0x3a9619){if(_0x3a9619){var _0x1711a3=typeof _0x5ded88[_0x5816('0x1b')]==='undefined'&&typeof _0x5ded88[_0x5816('0x1c')]===_0x5816('0x1d');var _0x10a899=_0x3a9619[_0x5816('0x1e')];var _0xc4937d=_0x1711a3?0x0:_0x5ded88['offset'];var _0x4b9714=_0x1711a3?_0x3a9619[_0x5816('0x1e')]:_0x5ded88['offset']+_0x5ded88[_0x5816('0x1c')];var _0x57c99d;if(_0x4b9714>=_0x10a899){_0x4b9714=_0x10a899;_0x57c99d=0xc8;}else{_0x57c99d=0xce;}_0x135581[_0x5816('0x19')](_0x57c99d);return _0x135581[_0x5816('0x1f')](_0x5816('0x20'),_0xc4937d+'-'+_0x4b9714+'/'+_0x10a899)[_0x5816('0x21')](_0x3a9619);}return null;};}function patchUpdates(_0x244b75){return function(_0x390acf){try{jsonpatch[_0x5816('0x22')](_0x390acf,_0x244b75,!![]);}catch(_0x5d32b9){return BPromise[_0x5816('0x23')](_0x5d32b9);}return _0x390acf[_0x5816('0x24')]();};}function saveUpdates(_0x207a4a,_0x2e6396){return function(_0x20e88b){if(_0x20e88b){return _0x20e88b['update'](_0x207a4a)[_0x5816('0x25')](function(_0x593ac1){return _0x593ac1;});}return null;};}function removeEntity(_0x59b97d,_0x12934b){return function(_0x35b0cb){if(_0x35b0cb){return _0x35b0cb[_0x5816('0x26')]()['then'](function(){var _0x82a63d=_0x35b0cb[_0x5816('0x27')]({'plain':!![]});var _0x104156=_0x5816('0x28');return db['UserProfileResource'][_0x5816('0x26')]({'where':{'type':_0x104156,'resourceId':_0x82a63d['id']}})[_0x5816('0x25')](function(){return _0x35b0cb;});})['then'](function(){_0x59b97d[_0x5816('0x19')](0xcc)[_0x5816('0x1a')]();});}};}function handleEntityNotFound(_0x4f0311,_0x1d4337){return function(_0x4efbcf){if(!_0x4efbcf){_0x4f0311[_0x5816('0x18')](0x194);}return _0x4efbcf;};}function handleError(_0x1674d1,_0x264901){_0x264901=_0x264901||0x1f4;return function(_0x4b0092){logger[_0x5816('0x29')](_0x4b0092[_0x5816('0x2a')]);if(_0x4b0092[_0x5816('0x2b')]){delete _0x4b0092[_0x5816('0x2b')];}_0x1674d1[_0x5816('0x19')](_0x264901)['send'](_0x4b0092);};}exports['index']=function(_0x544d26,_0x54f140){var _0x5584c3={},_0x3be1e4={},_0x4a5335={'count':0x0,'rows':[]};var _0x35b548=_[_0x5816('0x2c')](db['JscriptyProject'][_0x5816('0x2d')],function(_0x265e5a){return{'name':_0x265e5a[_0x5816('0x2e')],'type':_0x265e5a[_0x5816('0x2f')][_0x5816('0x30')]};});_0x3be1e4[_0x5816('0x31')]=_[_0x5816('0x2c')](_0x35b548,_0x5816('0x2b'));_0x3be1e4[_0x5816('0x32')]=_['keys'](_0x544d26['query']);_0x3be1e4[_0x5816('0x33')]=_[_0x5816('0x34')](_0x3be1e4[_0x5816('0x31')],_0x3be1e4[_0x5816('0x32')]);_0x5584c3['attributes']=_[_0x5816('0x34')](_0x3be1e4[_0x5816('0x31')],qs[_0x5816('0x35')](_0x544d26[_0x5816('0x32')][_0x5816('0x35')]));_0x5584c3[_0x5816('0x36')]=_0x5584c3[_0x5816('0x36')][_0x5816('0x37')]?_0x5584c3[_0x5816('0x36')]:_0x3be1e4['model'];if(!_0x544d26[_0x5816('0x32')][_0x5816('0x38')](_0x5816('0x39'))){_0x5584c3[_0x5816('0x1c')]=qs[_0x5816('0x1c')](_0x544d26['query']['limit']);_0x5584c3[_0x5816('0x1b')]=qs[_0x5816('0x1b')](_0x544d26[_0x5816('0x32')]['offset']);}_0x5584c3[_0x5816('0x3a')]=qs[_0x5816('0x3b')](_0x544d26[_0x5816('0x32')]['sort']);_0x5584c3[_0x5816('0x3c')]=qs[_0x5816('0x33')](_['pick'](_0x544d26['query'],_0x3be1e4[_0x5816('0x33')]),_0x35b548);if(_0x544d26[_0x5816('0x32')]['filter']){_0x5584c3[_0x5816('0x3c')]=_[_0x5816('0x3d')](_0x5584c3[_0x5816('0x3c')],{'$or':_[_0x5816('0x2c')](_0x35b548,function(_0x52984c){if(_0x52984c[_0x5816('0x2f')]!=='VIRTUAL'){var _0x3e1318={};_0x3e1318[_0x52984c[_0x5816('0x2b')]]={'$like':'%'+_0x544d26[_0x5816('0x32')][_0x5816('0x3e')]+'%'};return _0x3e1318;}})});}_0x5584c3=_[_0x5816('0x3d')]({},_0x5584c3,_0x544d26[_0x5816('0x3f')]);var _0x3c932b={'where':_0x5584c3[_0x5816('0x3c')]};return db['JscriptyProject'][_0x5816('0x1e')](_0x3c932b)['then'](function(_0x5f3c0a){_0x4a5335[_0x5816('0x1e')]=_0x5f3c0a;if(_0x544d26[_0x5816('0x32')][_0x5816('0x40')]){_0x5584c3[_0x5816('0x41')]=[{'all':!![]}];}return db[_0x5816('0x42')][_0x5816('0x43')](_0x5584c3);})[_0x5816('0x25')](function(_0x238523){_0x4a5335[_0x5816('0x44')]=_0x238523;return _0x4a5335;})[_0x5816('0x25')](respondWithFilteredResult(_0x54f140,_0x5584c3))['catch'](handleError(_0x54f140,null));};exports[_0x5816('0x45')]=function(_0xf7406a,_0x26582c){var _0x58dbfe={'raw':![],'where':{'id':_0xf7406a['params']['id']}},_0x38d380={};_0x38d380['model']=_['keys'](db[_0x5816('0x42')][_0x5816('0x2d')]);_0x38d380['query']=_[_0x5816('0x46')](_0xf7406a[_0x5816('0x32')]);_0x38d380[_0x5816('0x33')]=_['intersection'](_0x38d380[_0x5816('0x31')],_0x38d380[_0x5816('0x32')]);_0x58dbfe[_0x5816('0x36')]=_['intersection'](_0x38d380[_0x5816('0x31')],qs[_0x5816('0x35')](_0xf7406a[_0x5816('0x32')][_0x5816('0x35')]));_0x58dbfe[_0x5816('0x36')]=_0x58dbfe[_0x5816('0x36')]['length']?_0x58dbfe['attributes']:_0x38d380['model'];if(_0xf7406a['query']['includeAll']){_0x58dbfe[_0x5816('0x41')]=[{'all':!![]}];}_0x58dbfe=_[_0x5816('0x3d')]({},_0x58dbfe,_0xf7406a[_0x5816('0x3f')]);return db[_0x5816('0x42')][_0x5816('0x47')](_0x58dbfe)[_0x5816('0x25')](handleEntityNotFound(_0x26582c,null))[_0x5816('0x25')](respondWithResult(_0x26582c,null))[_0x5816('0x48')](handleError(_0x26582c,null));};exports[_0x5816('0x49')]=function(_0x5bae4e,_0x5771df){return db['JscriptyProject'][_0x5816('0x49')](_0x5bae4e['body'],{})[_0x5816('0x25')](function(_0x4b7c30){var _0x14491d=_0x5bae4e['user']['get']({'plain':!![]});if(!_0x14491d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x14491d['role']==='user'){var _0x79bc22=_0x4b7c30[_0x5816('0x27')]({'plain':!![]});var _0x245e26='Projects';return db[_0x5816('0x4a')][_0x5816('0x47')]({'where':{'name':_0x245e26,'userProfileId':_0x14491d['userProfileId']},'raw':!![]})['then'](function(_0x265a0f){if(_0x265a0f&&_0x265a0f['autoAssociation']===0x0){return db[_0x5816('0x4b')][_0x5816('0x49')]({'name':_0x79bc22['name'],'resourceId':_0x79bc22['id'],'type':_0x265a0f['name'],'sectionId':_0x265a0f['id']},{})[_0x5816('0x25')](function(){return _0x4b7c30;});}else{return _0x4b7c30;}})[_0x5816('0x48')](function(_0x2c7006){logger[_0x5816('0x29')](_0x5816('0x4c'),_0x2c7006);throw _0x2c7006;});}return _0x4b7c30;})[_0x5816('0x25')](respondWithResult(_0x5771df,0xc9))[_0x5816('0x48')](handleError(_0x5771df,null));};exports['clone']=function(_0x106f1b,_0x2ccb2e){var _0x29c3d0={'where':{'id':_0x106f1b['params']['id']}},_0x1c9c90={};_0x1c9c90['model']=_[_0x5816('0x46')](db['JscriptyProject'][_0x5816('0x2d')]);_0x29c3d0[_0x5816('0x36')]=_[_0x5816('0x34')](_0x1c9c90[_0x5816('0x31')],qs['fields'](_0x106f1b[_0x5816('0x32')][_0x5816('0x35')]));_0x29c3d0['attributes']=_0x29c3d0[_0x5816('0x36')]['length']?_0x29c3d0[_0x5816('0x36')]:_0x1c9c90[_0x5816('0x31')];if(_0x106f1b[_0x5816('0x32')]['includeAll']){_0x29c3d0['include']=[{'all':!![]}];}_0x29c3d0=_[_0x5816('0x3d')]({},_0x29c3d0,_0x106f1b[_0x5816('0x3f')]);return db[_0x5816('0x42')][_0x5816('0x47')](_0x29c3d0)[_0x5816('0x25')](handleEntityNotFound(_0x2ccb2e,null))['then'](function(_0x587e2c){if(_0x587e2c){var _0x2c9aa1=_0x587e2c[_0x5816('0x27')]({'plain':!![]});_0x2c9aa1=qs[_0x5816('0x4d')](_0x2c9aa1,['id','createdAt',_0x5816('0x4e')]);_0x106f1b[_0x5816('0x4f')]=_[_0x5816('0x4d')](_0x106f1b[_0x5816('0x4f')],['id',_0x5816('0x50'),_0x5816('0x4e')]);return db[_0x5816('0x42')][_0x5816('0x49')](_[_0x5816('0x3d')](_0x2c9aa1,_0x106f1b[_0x5816('0x4f')]),{'include':_0x106f1b[_0x5816('0x32')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x1dbe02){var _0x5205a5=_0x106f1b[_0x5816('0x51')][_0x5816('0x27')]({'plain':!![]});if(!_0x5205a5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5205a5['role']==='user'){var _0x45c37a=_0x1dbe02[_0x5816('0x27')]({'plain':!![]});var _0x9f002b=_0x5816('0x28');return db[_0x5816('0x4a')]['find']({'where':{'name':_0x9f002b,'userProfileId':_0x5205a5[_0x5816('0x52')]},'raw':!![]})[_0x5816('0x25')](function(_0x572506){if(_0x572506&&_0x572506[_0x5816('0x53')]===0x0){return db['UserProfileResource']['create']({'name':_0x45c37a[_0x5816('0x2b')],'resourceId':_0x45c37a['id'],'type':_0x572506[_0x5816('0x2b')],'sectionId':_0x572506['id']},{})['then'](function(){return _0x1dbe02;});}else{return _0x1dbe02;}})['catch'](function(_0x106920){logger[_0x5816('0x29')](_0x5816('0x4c'),_0x106920);throw _0x106920;});}return _0x1dbe02;});}})['then'](respondWithResult(_0x2ccb2e,0xc9))[_0x5816('0x48')](handleError(_0x2ccb2e,null));};exports[_0x5816('0x54')]=function(_0x17baef,_0x455469){if(_0x17baef[_0x5816('0x4f')]['id']){delete _0x17baef['body']['id'];}return db['JscriptyProject'][_0x5816('0x47')]({'where':{'id':_0x17baef['params']['id']}})[_0x5816('0x25')](handleEntityNotFound(_0x455469,null))[_0x5816('0x25')](saveUpdates(_0x17baef[_0x5816('0x4f')],null))['then'](respondWithResult(_0x455469,null))[_0x5816('0x48')](handleError(_0x455469,null));};exports['destroy']=function(_0x4b6e17,_0x143c4b){return db[_0x5816('0x42')][_0x5816('0x47')]({'where':{'id':_0x4b6e17['params']['id']}})[_0x5816('0x25')](handleEntityNotFound(_0x143c4b,null))['then'](removeEntity(_0x143c4b,null))[_0x5816('0x48')](handleError(_0x143c4b,null));};exports[_0x5816('0x55')]=function(_0x52e4e2,_0x3d0c80,_0x1e4949){var _0x1b6778={'raw':!![],'where':{}};var _0x405055={};var _0x3d1247={'count':0x0,'rows':[]};return db[_0x5816('0x42')][_0x5816('0x56')]({'where':{'id':_0x52e4e2[_0x5816('0x57')]['id']}})['then'](handleEntityNotFound(_0x3d0c80,null))['then'](function(_0x14aad1){if(_0x14aad1){_0x405055['model']=_[_0x5816('0x46')](db[_0x5816('0x58')][_0x5816('0x2d')]);_0x405055['query']=_[_0x5816('0x46')](_0x52e4e2[_0x5816('0x32')]);_0x405055[_0x5816('0x33')]=_['intersection'](_0x405055[_0x5816('0x31')],_0x405055[_0x5816('0x32')]);_0x1b6778[_0x5816('0x36')]=_[_0x5816('0x34')](_0x405055[_0x5816('0x31')],qs[_0x5816('0x35')](_0x52e4e2[_0x5816('0x32')][_0x5816('0x35')]));_0x1b6778['attributes']=_0x1b6778[_0x5816('0x36')][_0x5816('0x37')]?_0x1b6778[_0x5816('0x36')]:_0x405055[_0x5816('0x31')];if(!_0x52e4e2['query'][_0x5816('0x38')](_0x5816('0x39'))){_0x1b6778[_0x5816('0x1c')]=qs[_0x5816('0x1c')](_0x52e4e2['query'][_0x5816('0x1c')]);_0x1b6778[_0x5816('0x1b')]=qs[_0x5816('0x1b')](_0x52e4e2[_0x5816('0x32')]['offset']);}_0x1b6778[_0x5816('0x3a')]=qs[_0x5816('0x3b')](_0x52e4e2[_0x5816('0x32')][_0x5816('0x3b')]);_0x1b6778[_0x5816('0x3c')]=qs[_0x5816('0x33')](_['pick'](_0x52e4e2['query'],_0x405055['filters']));_0x1b6778[_0x5816('0x3c')][_0x5816('0x59')]=_0x14aad1['id'];if(_0x52e4e2[_0x5816('0x32')][_0x5816('0x3e')]){_0x1b6778[_0x5816('0x3c')]=_[_0x5816('0x3d')](_0x1b6778[_0x5816('0x3c')],{'$or':_[_0x5816('0x2c')](_0x1b6778[_0x5816('0x36')],function(_0x336e7d){var _0x1e53f1={};_0x1e53f1[_0x336e7d]={'$like':'%'+_0x52e4e2[_0x5816('0x32')][_0x5816('0x3e')]+'%'};return _0x1e53f1;})});}_0x1b6778=_[_0x5816('0x3d')]({},_0x1b6778,_0x52e4e2['options']);return db[_0x5816('0x58')][_0x5816('0x1e')]({'where':_0x1b6778[_0x5816('0x3c')]})[_0x5816('0x25')](function(_0x452bac){_0x3d1247[_0x5816('0x1e')]=_0x452bac;if(_0x52e4e2[_0x5816('0x32')][_0x5816('0x40')]){_0x1b6778[_0x5816('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x1b6778);})[_0x5816('0x25')](function(_0xebf964){_0x3d1247[_0x5816('0x44')]=_0xebf964;return _0x3d1247;});}})[_0x5816('0x25')](respondWithFilteredResult(_0x3d0c80,_0x1b6778))[_0x5816('0x48')](handleError(_0x3d0c80,null));};exports[_0x5816('0x5a')]=function(_0x5a8df9,_0x567b6f,_0x45fe38){var _0x731935={'raw':!![],'where':{}};var _0x4855ca={};var _0x2abcb8={'count':0x0,'rows':[]};return db[_0x5816('0x42')][_0x5816('0x56')]({'where':{'id':_0x5a8df9[_0x5816('0x57')]['id']}})[_0x5816('0x25')](handleEntityNotFound(_0x567b6f,null))[_0x5816('0x25')](function(_0x552ae5){if(_0x552ae5){_0x4855ca[_0x5816('0x31')]=_['keys'](db[_0x5816('0x5b')]['rawAttributes']);_0x4855ca[_0x5816('0x32')]=_['keys'](_0x5a8df9[_0x5816('0x32')]);_0x4855ca['filters']=_['intersection'](_0x4855ca['model'],_0x4855ca[_0x5816('0x32')]);_0x731935[_0x5816('0x36')]=_[_0x5816('0x34')](_0x4855ca[_0x5816('0x31')],qs['fields'](_0x5a8df9[_0x5816('0x32')][_0x5816('0x35')]));_0x731935[_0x5816('0x36')]=_0x731935['attributes'][_0x5816('0x37')]?_0x731935['attributes']:_0x4855ca['model'];if(!_0x5a8df9[_0x5816('0x32')][_0x5816('0x38')](_0x5816('0x39'))){_0x731935[_0x5816('0x1c')]=qs[_0x5816('0x1c')](_0x5a8df9[_0x5816('0x32')][_0x5816('0x1c')]);_0x731935[_0x5816('0x1b')]=qs[_0x5816('0x1b')](_0x5a8df9[_0x5816('0x32')][_0x5816('0x1b')]);}_0x731935[_0x5816('0x3a')]=qs[_0x5816('0x3b')](_0x5a8df9[_0x5816('0x32')][_0x5816('0x3b')]);_0x731935['where']=qs[_0x5816('0x33')](_[_0x5816('0x5c')](_0x5a8df9[_0x5816('0x32')],_0x4855ca['filters']));_0x731935[_0x5816('0x3c')]['ProjectId']=_0x552ae5['id'];if(_0x5a8df9[_0x5816('0x32')][_0x5816('0x3e')]){_0x731935[_0x5816('0x3c')]=_['merge'](_0x731935[_0x5816('0x3c')],{'$or':_[_0x5816('0x2c')](_0x731935[_0x5816('0x36')],function(_0x5c95fc){var _0x2c7c9d={};_0x2c7c9d[_0x5c95fc]={'$like':'%'+_0x5a8df9[_0x5816('0x32')][_0x5816('0x3e')]+'%'};return _0x2c7c9d;})});}_0x731935=_[_0x5816('0x3d')]({},_0x731935,_0x5a8df9[_0x5816('0x3f')]);return db[_0x5816('0x5b')]['count']({'where':_0x731935['where']})[_0x5816('0x25')](function(_0x27dc16){_0x2abcb8['count']=_0x27dc16;if(_0x5a8df9[_0x5816('0x32')][_0x5816('0x40')]){_0x731935['include']=[{'all':!![]}];}return db[_0x5816('0x5b')][_0x5816('0x43')](_0x731935);})[_0x5816('0x25')](function(_0x2ee891){_0x2abcb8[_0x5816('0x44')]=_0x2ee891;return _0x2abcb8;});}})[_0x5816('0x25')](respondWithFilteredResult(_0x567b6f,_0x731935))[_0x5816('0x48')](handleError(_0x567b6f,null));};function char(_0x5c8d46){return _0x5816('0x5d')===typeof _0x5c8d46?String[_0x5816('0x5e')]['apply'](null,arguments):_0x5c8d46;}function needsEncapsulation(_0x3ef465){return!!_0x3ef465&&(_0x3ef465[_0x5816('0x5f')]()[_0x5816('0x60')](char(0xd))>=0x0||_0x3ef465[_0x5816('0x5f')]()['indexOf'](char(0xa))>=0x0||_0x3ef465[_0x5816('0x5f')]()[_0x5816('0x60')](char(0x2c))>=0x0||_0x3ef465[_0x5816('0x5f')]()[_0x5816('0x60')](char(0x22))>=0x0);}function encapsulate(_0x152617){var _0xd4bb21=char(0x22),_0x22ed42='\x5c'+char(0x22),_0xb37a67=_0x152617['toString']()[_0x5816('0x61')](new RegExp(_0xd4bb21,'g'),_0x22ed42);return _0xd4bb21+_0xb37a67+_0xd4bb21;}exports['getSummary']=function(_0x1f5de6,_0x4a52ba,_0x5da801){var _0x45b31c,_0x458e02;var _0x501f35={'where':{'ProjectId':_0x1f5de6['params']['id']}};if(_0x1f5de6[_0x5816('0x32')][_0x5816('0x62')]){_0x501f35[_0x5816('0x3c')][_0x5816('0x63')]=JSON[_0x5816('0x64')](_0x1f5de6['query'][_0x5816('0x62')]);}return db[_0x5816('0x58')]['findAll'](_0x501f35)[_0x5816('0x25')](handleEntityNotFound(_0x4a52ba,null))[_0x5816('0x25')](function(_0x20f150){if(_0x20f150){_0x45b31c=_0x20f150;return db[_0x5816('0x65')][_0x5816('0x43')]({'where':{'SessionId':{'$in':_[_0x5816('0x2c')](_0x45b31c,'id')},'ProjectId':_0x1f5de6['params']['id']},'order':'-createdAt'});}})[_0x5816('0x25')](handleEntityNotFound(_0x4a52ba,null))[_0x5816('0x25')](function(_0x154db5){if(_0x154db5){_0x458e02=_0x154db5;var _0x50b5ca={};for(var _0x5d58ac=0x0,_0x4908ac=_0x458e02['length'];_0x5d58ac<_0x4908ac;_0x5d58ac++){if(!_0x50b5ca['hasOwnProperty'](_0x458e02[_0x5d58ac][_0x5816('0x66')])){_0x50b5ca[_0x458e02[_0x5d58ac][_0x5816('0x66')]]=needsEncapsulation(_0x458e02[_0x5d58ac][_0x5816('0x67')])?encapsulate(_0x458e02[_0x5d58ac][_0x5816('0x67')]):_0x458e02[_0x5d58ac][_0x5816('0x67')];}}var _0x57a2a3=[],_0x1b29df={};for(var _0x508fba=0x0,_0x22e68c=_0x45b31c[_0x5816('0x37')];_0x508fba<_0x22e68c;_0x508fba++){_0x1b29df={'ProjectId':_0x1f5de6[_0x5816('0x57')]['id'],'SessionId':_0x45b31c[_0x508fba]['id'],'StartTime':moment(_0x45b31c[_0x508fba][_0x5816('0x63')])[_0x5816('0x68')](_0x5816('0x69'))};for(var _0x58b0ae=0x0,_0x4fd51a=_0x458e02[_0x5816('0x37')];_0x58b0ae<_0x4fd51a;_0x58b0ae++){if(_0x458e02[_0x58b0ae][_0x5816('0x6a')]==_0x45b31c[_0x508fba]['id']&&_0x50b5ca[_0x5816('0x38')](_0x458e02[_0x58b0ae][_0x5816('0x66')])){_0x1b29df[_0x50b5ca[_0x458e02[_0x58b0ae][_0x5816('0x66')]]]=_0x458e02[_0x58b0ae][_0x5816('0x6b')];}}for(var _0x55148e in _0x50b5ca){if(!_0x1b29df[_0x5816('0x38')](_0x50b5ca[_0x55148e])){_0x1b29df[_0x50b5ca[_0x55148e]]=null;}}_0x57a2a3[_0x5816('0x6c')](_0x1b29df);}return _0x57a2a3;}})[_0x5816('0x25')](function(_0x1bdf7d){if(!_[_0x5816('0x6d')](_0x1bdf7d)){var _0x4b5cb2=toCsv(_0x1bdf7d);var _0x585735=Date[_0x5816('0x6e')]();fs[_0x5816('0x6f')](util[_0x5816('0x68')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1f5de6[_0x5816('0x57')]['id'],_0x585735),_0x4b5cb2);_0x4a52ba[_0x5816('0x70')](_0x5816('0x71'),_0x5816('0x72')+util[_0x5816('0x68')](_0x5816('0x73'),_0x1f5de6[_0x5816('0x57')]['id'],_0x585735));_0x4a52ba[_0x5816('0x70')](_0x5816('0x74'),_0x5816('0x75'));return _0x4a52ba[_0x5816('0x76')](util[_0x5816('0x68')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1f5de6['params']['id'],_0x585735));}else{return _0x4a52ba[_0x5816('0x18')](0xcc);}})[_0x5816('0x48')](handleError(_0x4a52ba,null));};
\ No newline at end of file
index b7928e2..d80ee02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b20=['../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x4ded97,_0x327411){var _0x1e6b1c=function(_0x4458b6){while(--_0x4458b6){_0x4ded97['push'](_0x4ded97['shift']());}};_0x1e6b1c(++_0x327411);}(_0x1b20,0x66));var _0x01b2=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1b20[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0x01b2('0x0'));var logger=require(_0x01b2('0x1'))('api');var moment=require('moment');var BPromise=require(_0x01b2('0x2'));var rp=require(_0x01b2('0x3'));var fs=require('fs');var path=require(_0x01b2('0x4'));var rimraf=require(_0x01b2('0x5'));var config=require(_0x01b2('0x6'));var attributes=require(_0x01b2('0x7'));module[_0x01b2('0x8')]=function(_0x28de4a,_0x46e745){return _0x28de4a[_0x01b2('0x9')](_0x01b2('0xa'),attributes,{'tableName':_0x01b2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac4f=['lodash','../../config/logger','moment','path','rimraf','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects'];(function(_0x26b308,_0x397dfc){var _0x59478d=function(_0x20b4c4){while(--_0x20b4c4){_0x26b308['push'](_0x26b308['shift']());}};_0x59478d(++_0x397dfc);}(_0xac4f,0x122));var _0xfac4=function(_0x1a0c59,_0x3b4dcc){_0x1a0c59=_0x1a0c59-0x0;var _0xed67c9=_0xac4f[_0x1a0c59];return _0xed67c9;};'use strict';var _=require(_0xfac4('0x0'));var util=require('util');var logger=require(_0xfac4('0x1'))('api');var moment=require(_0xfac4('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfac4('0x3'));var rimraf=require(_0xfac4('0x4'));var config=require('../../config/environment');var attributes=require(_0xfac4('0x5'));module[_0xfac4('0x6')]=function(_0x1aae1c,_0x48f014){return _0x1aae1c[_0xfac4('0x7')](_0xfac4('0x8'),attributes,{'tableName':_0xfac4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc064d1..733d5dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0xa9baf0,_0x326446){var _0xa42da1=function(_0x211615){while(--_0x211615){_0xa9baf0['push'](_0xa9baf0['shift']());}};_0xa42da1(++_0x326446);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x21af3a,_0x386e1d){_0x21af3a=_0x21af3a-0x0;var _0x268a49=_0xcb91[_0x21af3a];return _0x268a49;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xac4a=['JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xac4a,0x13f));var _0xaac4=function(_0x5be1d8,_0x23d058){_0x5be1d8=_0x5be1d8-0x0;var _0x3b4c22=_0xac4a[_0x5be1d8];return _0x3b4c22;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index c643bdd..e9e0ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee5=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x10e699,_0x1f9d3d){var _0x8eb28c=function(_0x2f9e4f){while(--_0x2f9e4f){_0x10e699['push'](_0x10e699['shift']());}};_0x8eb28c(++_0x1f9d3d);}(_0x7ee5,0x121));var _0x57ee=function(_0x57b38f,_0xc26f33){_0x57b38f=_0x57b38f-0x0;var _0x6aa12c=_0x7ee5[_0x57b38f];return _0x6aa12c;};'use strict';var multer=require(_0x57ee('0x0'));var util=require(_0x57ee('0x1'));var path=require(_0x57ee('0x2'));var timeout=require(_0x57ee('0x3'));var express=require(_0x57ee('0x4'));var router=express['Router']();var fs_extra=require(_0x57ee('0x5'));var auth=require(_0x57ee('0x6'));var interaction=require(_0x57ee('0x7'));var config=require(_0x57ee('0x8'));var controller=require(_0x57ee('0x9'));router['get']('/',auth[_0x57ee('0xa')](),controller[_0x57ee('0xb')]);router[_0x57ee('0xc')](_0x57ee('0xd'),auth['isAuthenticated'](),controller[_0x57ee('0xe')]);router['get'](_0x57ee('0xf'),auth[_0x57ee('0xa')](),controller[_0x57ee('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x57ee('0x11')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x57ee('0x12')](_0x57ee('0xf'),auth[_0x57ee('0xa')](),controller[_0x57ee('0x13')]);module[_0x57ee('0x14')]=router;
\ No newline at end of file
+var _0x993a=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller','get','/describe','isAuthenticated','/:id','post','create','destroy','exports','util','path','connect-timeout'];(function(_0x25689f,_0x37a6fb){var _0x364094=function(_0x29b5d8){while(--_0x29b5d8){_0x25689f['push'](_0x25689f['shift']());}};_0x364094(++_0x37a6fb);}(_0x993a,0x1b7));var _0xa993=function(_0x17bb86,_0x396ed4){_0x17bb86=_0x17bb86-0x0;var _0x1dff9b=_0x993a[_0x17bb86];return _0x1dff9b;};'use strict';var multer=require('multer');var util=require(_0xa993('0x0'));var path=require(_0xa993('0x1'));var timeout=require(_0xa993('0x2'));var express=require(_0xa993('0x3'));var router=express[_0xa993('0x4')]();var fs_extra=require(_0xa993('0x5'));var auth=require(_0xa993('0x6'));var interaction=require(_0xa993('0x7'));var config=require('../../config/environment');var controller=require(_0xa993('0x8'));router[_0xa993('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa993('0x9')](_0xa993('0xa'),auth[_0xa993('0xb')](),controller['describe']);router['get'](_0xa993('0xc'),auth[_0xa993('0xb')](),controller['show']);router[_0xa993('0xd')]('/',auth[_0xa993('0xb')](),controller[_0xa993('0xe')]);router['put']('/:id',auth[_0xa993('0xb')](),controller['update']);router['delete'](_0xa993('0xc'),auth['isAuthenticated'](),controller[_0xa993('0xf')]);module[_0xa993('0x10')]=router;
\ No newline at end of file
index 6de97c0..ff0c235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7a54,0x106));var _0x47a5=function(_0x1ad47a,_0x11c060){_0x1ad47a=_0x1ad47a-0x0;var _0x2bc912=_0x7a54[_0x1ad47a];return _0x2bc912;};'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(_0x298e47,_0x42121e){_0x298e47=_0x298e47-0x0;var _0x226f19=_0x7a54[_0x298e47];return _0x226f19;};'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 d77a2f5..b340db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafaf=['../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','error','stack','name','send','index','JscriptyQuestionReport','fieldName','type','key','model','map','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','catch','params','keys','options','find','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xafaf,0x198));var _0xfafa=function(_0x27c4cb,_0x46a69c){_0x27c4cb=_0x27c4cb-0x0;var _0x180a12=_0xafaf[_0x27c4cb];return _0x180a12;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfafa('0x0'));var zipdir=require(_0xfafa('0x1'));var jsonpatch=require(_0xfafa('0x2'));var rp=require(_0xfafa('0x3'));var moment=require(_0xfafa('0x4'));var BPromise=require(_0xfafa('0x5'));var Mustache=require(_0xfafa('0x6'));var util=require(_0xfafa('0x7'));var path=require('path');var sox=require(_0xfafa('0x8'));var csv=require(_0xfafa('0x9'));var ejs=require(_0xfafa('0xa'));var fs=require('fs');var fs_extra=require(_0xfafa('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfafa('0xc'));var jsforce=require(_0xfafa('0xd'));var deskjs=require(_0xfafa('0xe'));var toCsv=require('to-csv');var querystring=require(_0xfafa('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfafa('0x10'));var as=require(_0xfafa('0x11'));var hardwareService=require(_0xfafa('0x12'));var logger=require(_0xfafa('0x13'))(_0xfafa('0x14'));var utils=require('../../config/utils');var config=require(_0xfafa('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xfafa('0x16'))['db'];function respondWithStatusCode(_0x5b9ff4,_0xf991ff){_0xf991ff=_0xf991ff||0xcc;return function(_0x39a963){if(_0x39a963){return _0x5b9ff4[_0xfafa('0x17')](_0xf991ff);}return _0x5b9ff4[_0xfafa('0x18')](_0xf991ff)[_0xfafa('0x19')]();};}function respondWithResult(_0xb80670,_0x481861){_0x481861=_0x481861||0xc8;return function(_0x151668){if(_0x151668){return _0xb80670['status'](_0x481861)[_0xfafa('0x1a')](_0x151668);}};}function respondWithFilteredResult(_0x5eaf73,_0x596ea1){return function(_0x1ef199){if(_0x1ef199){var _0x5068e3=typeof _0x596ea1[_0xfafa('0x1b')]===_0xfafa('0x1c')&&typeof _0x596ea1[_0xfafa('0x1d')]===_0xfafa('0x1c');var _0x1b136b=_0x1ef199[_0xfafa('0x1e')];var _0x56b294=_0x5068e3?0x0:_0x596ea1[_0xfafa('0x1b')];var _0x2d0906=_0x5068e3?_0x1ef199['count']:_0x596ea1[_0xfafa('0x1b')]+_0x596ea1[_0xfafa('0x1d')];var _0x5669c5;if(_0x2d0906>=_0x1b136b){_0x2d0906=_0x1b136b;_0x5669c5=0xc8;}else{_0x5669c5=0xce;}_0x5eaf73['status'](_0x5669c5);return _0x5eaf73['set'](_0xfafa('0x1f'),_0x56b294+'-'+_0x2d0906+'/'+_0x1b136b)[_0xfafa('0x1a')](_0x1ef199);}return null;};}function patchUpdates(_0x123758){return function(_0x3fa536){try{jsonpatch['apply'](_0x3fa536,_0x123758,!![]);}catch(_0x2b5ca7){return BPromise[_0xfafa('0x20')](_0x2b5ca7);}return _0x3fa536[_0xfafa('0x21')]();};}function saveUpdates(_0x3e522a,_0x5c8f6f){return function(_0x2c6ff7){if(_0x2c6ff7){return _0x2c6ff7[_0xfafa('0x22')](_0x3e522a)[_0xfafa('0x23')](function(_0x6d673a){return _0x6d673a;});}return null;};}function removeEntity(_0x4b110e,_0xf3f3d1){return function(_0x1d21a9){if(_0x1d21a9){return _0x1d21a9['destroy']()['then'](function(){_0x4b110e[_0xfafa('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14203d,_0x5482ef){return function(_0x44d399){if(!_0x44d399){_0x14203d['sendStatus'](0x194);}return _0x44d399;};}function handleError(_0x3dab2e,_0x77a77a){_0x77a77a=_0x77a77a||0x1f4;return function(_0x42f157){logger[_0xfafa('0x24')](_0x42f157[_0xfafa('0x25')]);if(_0x42f157['name']){delete _0x42f157[_0xfafa('0x26')];}_0x3dab2e[_0xfafa('0x18')](_0x77a77a)[_0xfafa('0x27')](_0x42f157);};}exports[_0xfafa('0x28')]=function(_0x4c6f68,_0x12b562){var _0x465c14={},_0x4cb919={},_0x42d1e8={'count':0x0,'rows':[]};var _0x1761b3=_['map'](db[_0xfafa('0x29')]['rawAttributes'],function(_0x23e81d){return{'name':_0x23e81d[_0xfafa('0x2a')],'type':_0x23e81d[_0xfafa('0x2b')][_0xfafa('0x2c')]};});_0x4cb919[_0xfafa('0x2d')]=_[_0xfafa('0x2e')](_0x1761b3,'name');_0x4cb919[_0xfafa('0x2f')]=_['keys'](_0x4c6f68['query']);_0x4cb919['filters']=_[_0xfafa('0x30')](_0x4cb919[_0xfafa('0x2d')],_0x4cb919[_0xfafa('0x2f')]);_0x465c14['attributes']=_[_0xfafa('0x30')](_0x4cb919[_0xfafa('0x2d')],qs['fields'](_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x31')]));_0x465c14['attributes']=_0x465c14[_0xfafa('0x32')][_0xfafa('0x33')]?_0x465c14['attributes']:_0x4cb919['model'];if(!_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x34')](_0xfafa('0x35'))){_0x465c14['limit']=qs[_0xfafa('0x1d')](_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x1d')]);_0x465c14[_0xfafa('0x1b')]=qs[_0xfafa('0x1b')](_0x4c6f68[_0xfafa('0x2f')]['offset']);}_0x465c14['order']=qs[_0xfafa('0x36')](_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x36')]);_0x465c14['where']=qs[_0xfafa('0x37')](_[_0xfafa('0x38')](_0x4c6f68['query'],_0x4cb919[_0xfafa('0x37')]),_0x1761b3);if(_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x39')]){_0x465c14[_0xfafa('0x3a')]=_['merge'](_0x465c14[_0xfafa('0x3a')],{'$or':_[_0xfafa('0x2e')](_0x1761b3,function(_0x19fd64){if(_0x19fd64[_0xfafa('0x2b')]!==_0xfafa('0x3b')){var _0x59798e={};_0x59798e[_0x19fd64[_0xfafa('0x26')]]={'$like':'%'+_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x39')]+'%'};return _0x59798e;}})});}_0x465c14=_[_0xfafa('0x3c')]({},_0x465c14,_0x4c6f68['options']);var _0x3b0c9e={'where':_0x465c14['where']};return db['JscriptyQuestionReport'][_0xfafa('0x1e')](_0x3b0c9e)[_0xfafa('0x23')](function(_0x3d5913){_0x42d1e8[_0xfafa('0x1e')]=_0x3d5913;if(_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x3d')]){_0x465c14[_0xfafa('0x3e')]=[{'all':!![]}];}return db[_0xfafa('0x29')][_0xfafa('0x3f')](_0x465c14);})[_0xfafa('0x23')](function(_0x10e298){_0x42d1e8['rows']=_0x10e298;return _0x42d1e8;})[_0xfafa('0x23')](respondWithFilteredResult(_0x12b562,_0x465c14))[_0xfafa('0x40')](handleError(_0x12b562,null));};exports['show']=function(_0x200d0b,_0x43e28a){var _0x29cb99={'raw':!![],'where':{'id':_0x200d0b[_0xfafa('0x41')]['id']}},_0x10359b={};_0x10359b['model']=_[_0xfafa('0x42')](db['JscriptyQuestionReport']['rawAttributes']);_0x10359b[_0xfafa('0x2f')]=_[_0xfafa('0x42')](_0x200d0b[_0xfafa('0x2f')]);_0x10359b['filters']=_[_0xfafa('0x30')](_0x10359b[_0xfafa('0x2d')],_0x10359b[_0xfafa('0x2f')]);_0x29cb99[_0xfafa('0x32')]=_[_0xfafa('0x30')](_0x10359b[_0xfafa('0x2d')],qs['fields'](_0x200d0b['query'][_0xfafa('0x31')]));_0x29cb99[_0xfafa('0x32')]=_0x29cb99['attributes']['length']?_0x29cb99[_0xfafa('0x32')]:_0x10359b[_0xfafa('0x2d')];if(_0x200d0b[_0xfafa('0x2f')][_0xfafa('0x3d')]){_0x29cb99[_0xfafa('0x3e')]=[{'all':!![]}];}_0x29cb99=_[_0xfafa('0x3c')]({},_0x29cb99,_0x200d0b[_0xfafa('0x43')]);return db[_0xfafa('0x29')][_0xfafa('0x44')](_0x29cb99)[_0xfafa('0x23')](handleEntityNotFound(_0x43e28a,null))[_0xfafa('0x23')](respondWithResult(_0x43e28a,null))[_0xfafa('0x40')](handleError(_0x43e28a,null));};exports['create']=function(_0x17bac8,_0x3b87ce){return db[_0xfafa('0x29')]['create'](_0x17bac8[_0xfafa('0x45')],{})[_0xfafa('0x23')](respondWithResult(_0x3b87ce,0xc9))[_0xfafa('0x40')](handleError(_0x3b87ce,null));};exports[_0xfafa('0x22')]=function(_0x17c365,_0x51ea0b){if(_0x17c365[_0xfafa('0x45')]['id']){delete _0x17c365[_0xfafa('0x45')]['id'];}return db[_0xfafa('0x29')][_0xfafa('0x44')]({'where':{'id':_0x17c365[_0xfafa('0x41')]['id']}})[_0xfafa('0x23')](handleEntityNotFound(_0x51ea0b,null))[_0xfafa('0x23')](saveUpdates(_0x17c365[_0xfafa('0x45')],null))[_0xfafa('0x23')](respondWithResult(_0x51ea0b,null))[_0xfafa('0x40')](handleError(_0x51ea0b,null));};exports['destroy']=function(_0x85578c,_0xc41da3){return db[_0xfafa('0x29')]['find']({'where':{'id':_0x85578c[_0xfafa('0x41')]['id']}})[_0xfafa('0x23')](handleEntityNotFound(_0xc41da3,null))[_0xfafa('0x23')](removeEntity(_0xc41da3,null))['catch'](handleError(_0xc41da3,null));};exports['describe']=function(_0xeb4caf,_0x46a245){return db['JscriptyQuestionReport'][_0xfafa('0x46')]()['then'](respondWithResult(_0x46a245,null))[_0xfafa('0x40')](handleError(_0x46a245,null));};
\ No newline at end of file
+var _0xed33=['send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','JscriptyQuestionReport','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','update','destroy','then','error','stack','name'];(function(_0x1d8d6d,_0x4e353c){var _0x482726=function(_0x1c8fdf){while(--_0x1c8fdf){_0x1d8d6d['push'](_0x1d8d6d['shift']());}};_0x482726(++_0x4e353c);}(_0xed33,0x14d));var _0x3ed3=function(_0x2efbdb,_0xbcbc03){_0x2efbdb=_0x2efbdb-0x0;var _0x51c523=_0xed33[_0x2efbdb];return _0x51c523;};'use strict';var emlformat=require(_0x3ed3('0x0'));var rimraf=require(_0x3ed3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3ed3('0x2'));var rp=require(_0x3ed3('0x3'));var moment=require(_0x3ed3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3ed3('0x5'));var util=require(_0x3ed3('0x6'));var path=require(_0x3ed3('0x7'));var sox=require(_0x3ed3('0x8'));var csv=require('to-csv');var ejs=require(_0x3ed3('0x9'));var fs=require('fs');var fs_extra=require(_0x3ed3('0xa'));var _=require(_0x3ed3('0xb'));var squel=require(_0x3ed3('0xc'));var crypto=require(_0x3ed3('0xd'));var jsforce=require(_0x3ed3('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3ed3('0xf'));var Papa=require(_0x3ed3('0x10'));var Redis=require(_0x3ed3('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3ed3('0x12'));var as=require(_0x3ed3('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ed3('0x14'))(_0x3ed3('0x15'));var utils=require('../../config/utils');var config=require(_0x3ed3('0x16'));var licenseUtil=require(_0x3ed3('0x17'));var db=require(_0x3ed3('0x18'))['db'];function respondWithStatusCode(_0x297101,_0x110f4e){_0x110f4e=_0x110f4e||0xcc;return function(_0x4fbf0d){if(_0x4fbf0d){return _0x297101[_0x3ed3('0x19')](_0x110f4e);}return _0x297101['status'](_0x110f4e)[_0x3ed3('0x1a')]();};}function respondWithResult(_0x114309,_0x146ff1){_0x146ff1=_0x146ff1||0xc8;return function(_0x5f3484){if(_0x5f3484){return _0x114309['status'](_0x146ff1)[_0x3ed3('0x1b')](_0x5f3484);}};}function respondWithFilteredResult(_0x509ffb,_0x212082){return function(_0x1cbe63){if(_0x1cbe63){var _0x1520cd=typeof _0x212082[_0x3ed3('0x1c')]===_0x3ed3('0x1d')&&typeof _0x212082[_0x3ed3('0x1e')]===_0x3ed3('0x1d');var _0x518d78=_0x1cbe63[_0x3ed3('0x1f')];var _0x2dac2e=_0x1520cd?0x0:_0x212082[_0x3ed3('0x1c')];var _0x4f95cc=_0x1520cd?_0x1cbe63[_0x3ed3('0x1f')]:_0x212082['offset']+_0x212082['limit'];var _0x190554;if(_0x4f95cc>=_0x518d78){_0x4f95cc=_0x518d78;_0x190554=0xc8;}else{_0x190554=0xce;}_0x509ffb[_0x3ed3('0x20')](_0x190554);return _0x509ffb['set'](_0x3ed3('0x21'),_0x2dac2e+'-'+_0x4f95cc+'/'+_0x518d78)[_0x3ed3('0x1b')](_0x1cbe63);}return null;};}function patchUpdates(_0x51cf4d){return function(_0x571d0b){try{jsonpatch[_0x3ed3('0x22')](_0x571d0b,_0x51cf4d,!![]);}catch(_0x44cb38){return BPromise[_0x3ed3('0x23')](_0x44cb38);}return _0x571d0b['save']();};}function saveUpdates(_0x1b6a72,_0x5daac7){return function(_0x354411){if(_0x354411){return _0x354411[_0x3ed3('0x24')](_0x1b6a72)['then'](function(_0x4d973e){return _0x4d973e;});}return null;};}function removeEntity(_0x1ebdac,_0x3b0853){return function(_0x3ea1dd){if(_0x3ea1dd){return _0x3ea1dd[_0x3ed3('0x25')]()[_0x3ed3('0x26')](function(){_0x1ebdac['status'](0xcc)[_0x3ed3('0x1a')]();});}};}function handleEntityNotFound(_0x4a8def,_0x36ae1a){return function(_0x424b25){if(!_0x424b25){_0x4a8def[_0x3ed3('0x19')](0x194);}return _0x424b25;};}function handleError(_0x4058b5,_0x12b95c){_0x12b95c=_0x12b95c||0x1f4;return function(_0x10b7fd){logger[_0x3ed3('0x27')](_0x10b7fd[_0x3ed3('0x28')]);if(_0x10b7fd[_0x3ed3('0x29')]){delete _0x10b7fd[_0x3ed3('0x29')];}_0x4058b5[_0x3ed3('0x20')](_0x12b95c)[_0x3ed3('0x2a')](_0x10b7fd);};}exports[_0x3ed3('0x2b')]=function(_0x2078a6,_0x140646){var _0x5c8928={},_0x42e2df={},_0x2ee4b1={'count':0x0,'rows':[]};var _0x3b95e0=_[_0x3ed3('0x2c')](db['JscriptyQuestionReport'][_0x3ed3('0x2d')],function(_0x1ca3c9){return{'name':_0x1ca3c9[_0x3ed3('0x2e')],'type':_0x1ca3c9[_0x3ed3('0x2f')]['key']};});_0x42e2df[_0x3ed3('0x30')]=_[_0x3ed3('0x2c')](_0x3b95e0,'name');_0x42e2df[_0x3ed3('0x31')]=_[_0x3ed3('0x32')](_0x2078a6[_0x3ed3('0x31')]);_0x42e2df[_0x3ed3('0x33')]=_[_0x3ed3('0x34')](_0x42e2df['model'],_0x42e2df[_0x3ed3('0x31')]);_0x5c8928[_0x3ed3('0x35')]=_[_0x3ed3('0x34')](_0x42e2df[_0x3ed3('0x30')],qs[_0x3ed3('0x36')](_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x36')]));_0x5c8928['attributes']=_0x5c8928['attributes'][_0x3ed3('0x37')]?_0x5c8928[_0x3ed3('0x35')]:_0x42e2df['model'];if(!_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x38')](_0x3ed3('0x39'))){_0x5c8928[_0x3ed3('0x1e')]=qs[_0x3ed3('0x1e')](_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x1e')]);_0x5c8928[_0x3ed3('0x1c')]=qs[_0x3ed3('0x1c')](_0x2078a6['query'][_0x3ed3('0x1c')]);}_0x5c8928['order']=qs[_0x3ed3('0x3a')](_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x3a')]);_0x5c8928[_0x3ed3('0x3b')]=qs['filters'](_['pick'](_0x2078a6[_0x3ed3('0x31')],_0x42e2df[_0x3ed3('0x33')]),_0x3b95e0);if(_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x3c')]){_0x5c8928['where']=_[_0x3ed3('0x3d')](_0x5c8928['where'],{'$or':_[_0x3ed3('0x2c')](_0x3b95e0,function(_0x319cf4){if(_0x319cf4[_0x3ed3('0x2f')]!==_0x3ed3('0x3e')){var _0x5c2157={};_0x5c2157[_0x319cf4[_0x3ed3('0x29')]]={'$like':'%'+_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x3c')]+'%'};return _0x5c2157;}})});}_0x5c8928=_[_0x3ed3('0x3d')]({},_0x5c8928,_0x2078a6['options']);var _0x2943ff={'where':_0x5c8928[_0x3ed3('0x3b')]};return db[_0x3ed3('0x3f')][_0x3ed3('0x1f')](_0x2943ff)['then'](function(_0x5e2fcb){_0x2ee4b1['count']=_0x5e2fcb;if(_0x2078a6[_0x3ed3('0x31')][_0x3ed3('0x40')]){_0x5c8928['include']=[{'all':!![]}];}return db[_0x3ed3('0x3f')][_0x3ed3('0x41')](_0x5c8928);})[_0x3ed3('0x26')](function(_0x353885){_0x2ee4b1[_0x3ed3('0x42')]=_0x353885;return _0x2ee4b1;})[_0x3ed3('0x26')](respondWithFilteredResult(_0x140646,_0x5c8928))[_0x3ed3('0x43')](handleError(_0x140646,null));};exports[_0x3ed3('0x44')]=function(_0x5ab1a8,_0x364af9){var _0x5c3736={'raw':!![],'where':{'id':_0x5ab1a8[_0x3ed3('0x45')]['id']}},_0x56b388={};_0x56b388[_0x3ed3('0x30')]=_[_0x3ed3('0x32')](db['JscriptyQuestionReport'][_0x3ed3('0x2d')]);_0x56b388[_0x3ed3('0x31')]=_[_0x3ed3('0x32')](_0x5ab1a8[_0x3ed3('0x31')]);_0x56b388[_0x3ed3('0x33')]=_[_0x3ed3('0x34')](_0x56b388[_0x3ed3('0x30')],_0x56b388[_0x3ed3('0x31')]);_0x5c3736['attributes']=_[_0x3ed3('0x34')](_0x56b388[_0x3ed3('0x30')],qs[_0x3ed3('0x36')](_0x5ab1a8['query'][_0x3ed3('0x36')]));_0x5c3736[_0x3ed3('0x35')]=_0x5c3736[_0x3ed3('0x35')][_0x3ed3('0x37')]?_0x5c3736[_0x3ed3('0x35')]:_0x56b388[_0x3ed3('0x30')];if(_0x5ab1a8[_0x3ed3('0x31')][_0x3ed3('0x40')]){_0x5c3736[_0x3ed3('0x46')]=[{'all':!![]}];}_0x5c3736=_[_0x3ed3('0x3d')]({},_0x5c3736,_0x5ab1a8[_0x3ed3('0x47')]);return db[_0x3ed3('0x3f')][_0x3ed3('0x48')](_0x5c3736)[_0x3ed3('0x26')](handleEntityNotFound(_0x364af9,null))['then'](respondWithResult(_0x364af9,null))[_0x3ed3('0x43')](handleError(_0x364af9,null));};exports[_0x3ed3('0x49')]=function(_0x455e5b,_0x1751cb){return db[_0x3ed3('0x3f')][_0x3ed3('0x49')](_0x455e5b[_0x3ed3('0x4a')],{})['then'](respondWithResult(_0x1751cb,0xc9))['catch'](handleError(_0x1751cb,null));};exports[_0x3ed3('0x24')]=function(_0x3f9ea4,_0x4db013){if(_0x3f9ea4[_0x3ed3('0x4a')]['id']){delete _0x3f9ea4[_0x3ed3('0x4a')]['id'];}return db[_0x3ed3('0x3f')]['find']({'where':{'id':_0x3f9ea4[_0x3ed3('0x45')]['id']}})[_0x3ed3('0x26')](handleEntityNotFound(_0x4db013,null))[_0x3ed3('0x26')](saveUpdates(_0x3f9ea4['body'],null))[_0x3ed3('0x26')](respondWithResult(_0x4db013,null))[_0x3ed3('0x43')](handleError(_0x4db013,null));};exports[_0x3ed3('0x25')]=function(_0x53a687,_0x4dc416){return db['JscriptyQuestionReport'][_0x3ed3('0x48')]({'where':{'id':_0x53a687[_0x3ed3('0x45')]['id']}})['then'](handleEntityNotFound(_0x4dc416,null))[_0x3ed3('0x26')](removeEntity(_0x4dc416,null))['catch'](handleError(_0x4dc416,null));};exports['describe']=function(_0x427334,_0x44d9b9){return db['JscriptyQuestionReport']['describe']()['then'](respondWithResult(_0x44d9b9,null))[_0x3ed3('0x43')](handleError(_0x44d9b9,null));};
\ No newline at end of file
index 3080d5d..e5142d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x281c=['request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','lodash','util','api','moment','bluebird'];(function(_0x38c0b2,_0x6a67a5){var _0x283c00=function(_0x259f03){while(--_0x259f03){_0x38c0b2['push'](_0x38c0b2['shift']());}};_0x283c00(++_0x6a67a5);}(_0x281c,0x97));var _0xc281=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x281c[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xc281('0x0'));var util=require(_0xc281('0x1'));var logger=require('../../config/logger')(_0xc281('0x2'));var moment=require(_0xc281('0x3'));var BPromise=require(_0xc281('0x4'));var rp=require(_0xc281('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc281('0x6'));var config=require(_0xc281('0x7'));var attributes=require(_0xc281('0x8'));module[_0xc281('0x9')]=function(_0x104c9b,_0x334f7b){return _0x104c9b[_0xc281('0xa')](_0xc281('0xb'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc848=['./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x172133,_0x10246b){var _0x2460e5=function(_0x3c4918){while(--_0x3c4918){_0x172133['push'](_0x172133['shift']());}};_0x2460e5(++_0x10246b);}(_0xc848,0x154));var _0x8c84=function(_0x3b2041,_0x26ab14){_0x3b2041=_0x3b2041-0x0;var _0x499dd4=_0xc848[_0x3b2041];return _0x499dd4;};'use strict';var _=require(_0x8c84('0x0'));var util=require('util');var logger=require(_0x8c84('0x1'))(_0x8c84('0x2'));var moment=require('moment');var BPromise=require(_0x8c84('0x3'));var rp=require(_0x8c84('0x4'));var fs=require('fs');var path=require(_0x8c84('0x5'));var rimraf=require(_0x8c84('0x6'));var config=require(_0x8c84('0x7'));var attributes=require(_0x8c84('0x8'));module[_0x8c84('0x9')]=function(_0x52a6a0,_0x303512){return _0x52a6a0[_0x8c84('0xa')](_0x8c84('0xb'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 25a6d5f..f6290c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4c=['request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client'];(function(_0x5ee0ee,_0x3ce413){var _0x198093=function(_0x29dcc9){while(--_0x29dcc9){_0x5ee0ee['push'](_0x5ee0ee['shift']());}};_0x198093(++_0x3ce413);}(_0x1c4c,0x19b));var _0xc1c4=function(_0x810025,_0x34bb04){_0x810025=_0x810025-0x0;var _0x4dbc81=_0x1c4c[_0x810025];return _0x4dbc81;};'use strict';var _=require(_0xc1c4('0x0'));var util=require(_0xc1c4('0x1'));var moment=require(_0xc1c4('0x2'));var BPromise=require('bluebird');var rs=require(_0xc1c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc1c4('0x4'))['db'];var utils=require(_0xc1c4('0x5'));var logger=require('../../config/logger')(_0xc1c4('0x6'));var config=require(_0xc1c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc1c4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x78d38d,_0x22749d,_0x4518c9){return new BPromise(function(_0x5021b6,_0x294988){return client[_0xc1c4('0x9')](_0x78d38d,_0x4518c9)[_0xc1c4('0xa')](function(_0x18f11b){logger[_0xc1c4('0xb')](_0xc1c4('0xc'),_0x22749d,'request\x20sent');logger[_0xc1c4('0xd')](_0xc1c4('0xe'),_0x22749d,_0xc1c4('0xf'),JSON[_0xc1c4('0x10')](_0x18f11b));if(_0x18f11b[_0xc1c4('0x11')]){if(_0x18f11b['error']['code']===0x1f4){logger[_0xc1c4('0x11')](_0xc1c4('0xc'),_0x22749d,_0x18f11b[_0xc1c4('0x11')][_0xc1c4('0x12')]);return _0x294988(_0x18f11b[_0xc1c4('0x11')][_0xc1c4('0x12')]);}logger[_0xc1c4('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x22749d,_0x18f11b['error'][_0xc1c4('0x12')]);return _0x5021b6(_0x18f11b[_0xc1c4('0x11')][_0xc1c4('0x12')]);}else{logger['info'](_0xc1c4('0xc'),_0x22749d,'request\x20sent');_0x5021b6(_0x18f11b['result'][_0xc1c4('0x12')]);}})[_0xc1c4('0x13')](function(_0x49ee06){logger[_0xc1c4('0x11')](_0xc1c4('0xc'),_0x22749d,_0x49ee06);_0x294988(_0x49ee06);});});}
\ No newline at end of file
+var _0x6e01=['request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','info','JscriptyQuestionReport,\x20%s,\x20%s'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x6e01,0xa3));var _0x16e0=function(_0x218994,_0x2cf487){_0x218994=_0x218994-0x0;var _0x3f350b=_0x6e01[_0x218994];return _0x3f350b;};'use strict';var _=require(_0x16e0('0x0'));var util=require(_0x16e0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x16e0('0x2'));var fs=require('fs');var Redis=require(_0x16e0('0x3'));var db=require(_0x16e0('0x4'))['db'];var utils=require(_0x16e0('0x5'));var logger=require('../../config/logger')(_0x16e0('0x6'));var config=require(_0x16e0('0x7'));var jayson=require(_0x16e0('0x8'));var client=jayson[_0x16e0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4344cc,_0x112710,_0x538f96){return new BPromise(function(_0x2659c4,_0x7f5482){return client[_0x16e0('0xa')](_0x4344cc,_0x538f96)['then'](function(_0xbaa932){logger[_0x16e0('0xb')](_0x16e0('0xc'),_0x112710,_0x16e0('0xd'));logger[_0x16e0('0xe')](_0x16e0('0xf'),_0x112710,_0x16e0('0xd'),JSON[_0x16e0('0x10')](_0xbaa932));if(_0xbaa932[_0x16e0('0x11')]){if(_0xbaa932[_0x16e0('0x11')][_0x16e0('0x12')]===0x1f4){logger['error'](_0x16e0('0xc'),_0x112710,_0xbaa932[_0x16e0('0x11')][_0x16e0('0x13')]);return _0x7f5482(_0xbaa932[_0x16e0('0x11')][_0x16e0('0x13')]);}logger[_0x16e0('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x112710,_0xbaa932[_0x16e0('0x11')][_0x16e0('0x13')]);return _0x2659c4(_0xbaa932[_0x16e0('0x11')][_0x16e0('0x13')]);}else{logger['info'](_0x16e0('0xc'),_0x112710,'request\x20sent');_0x2659c4(_0xbaa932[_0x16e0('0x14')][_0x16e0('0x13')]);}})[_0x16e0('0x15')](function(_0x3ebe2a){logger[_0x16e0('0x11')](_0x16e0('0xc'),_0x112710,_0x3ebe2a);_0x7f5482(_0x3ebe2a);});});}
\ No newline at end of file
index a9478b1..63df7ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb39=['./jscriptySessionReport.controller','get','describe','isAuthenticated','/:id/questions','getQuestions','post','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x17b4c1,_0x2377a5){var _0xf38f21=function(_0x4b1f4d){while(--_0x4b1f4d){_0x17b4c1['push'](_0x17b4c1['shift']());}};_0xf38f21(++_0x2377a5);}(_0xfb39,0x1d9));var _0x9fb3=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xfb39[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0x9fb3('0x0'));var util=require(_0x9fb3('0x1'));var path=require('path');var timeout=require(_0x9fb3('0x2'));var express=require(_0x9fb3('0x3'));var router=express[_0x9fb3('0x4')]();var fs_extra=require(_0x9fb3('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9fb3('0x6'));var controller=require(_0x9fb3('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x9fb3('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x9fb3('0x9')]);router[_0x9fb3('0x8')]('/:id',auth[_0x9fb3('0xa')](),controller['show']);router[_0x9fb3('0x8')](_0x9fb3('0xb'),auth[_0x9fb3('0xa')](),controller[_0x9fb3('0xc')]);router[_0x9fb3('0xd')]('/',auth['isAuthenticated'](),controller[_0x9fb3('0xe')]);router['put'](_0x9fb3('0xf'),auth[_0x9fb3('0xa')](),controller[_0x9fb3('0x10')]);router[_0x9fb3('0x11')](_0x9fb3('0xf'),auth[_0x9fb3('0xa')](),controller[_0x9fb3('0x12')]);module[_0x9fb3('0x13')]=router;
\ No newline at end of file
+var _0xbc3f=['./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id/questions','getQuestions','/:id','update','delete','exports','util','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x496738,_0x3f1a9f){var _0xee1381=function(_0x4dc50c){while(--_0x4dc50c){_0x496738['push'](_0x496738['shift']());}};_0xee1381(++_0x3f1a9f);}(_0xbc3f,0x72));var _0xfbc3=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xbc3f[_0x5c3c0b];return _0x52ecd2;};'use strict';var multer=require('multer');var util=require(_0xfbc3('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfbc3('0x1')]();var fs_extra=require(_0xfbc3('0x2'));var auth=require(_0xfbc3('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xfbc3('0x4'));var controller=require(_0xfbc3('0x5'));router[_0xfbc3('0x6')]('/',auth[_0xfbc3('0x7')](),controller[_0xfbc3('0x8')]);router[_0xfbc3('0x6')](_0xfbc3('0x9'),auth[_0xfbc3('0x7')](),controller[_0xfbc3('0xa')]);router[_0xfbc3('0x6')]('/:id',auth[_0xfbc3('0x7')](),controller['show']);router[_0xfbc3('0x6')](_0xfbc3('0xb'),auth[_0xfbc3('0x7')](),controller[_0xfbc3('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xfbc3('0xd'),auth['isAuthenticated'](),controller[_0xfbc3('0xe')]);router[_0xfbc3('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xfbc3('0x10')]=router;
\ No newline at end of file
index 763e1a6..ff704d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf13d=['exports','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize'];(function(_0x115cdc,_0x2533b9){var _0x43259f=function(_0x3a621b){while(--_0x3a621b){_0x115cdc['push'](_0x115cdc['shift']());}};_0x43259f(++_0x2533b9);}(_0xf13d,0x174));var _0xdf13=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xf13d[_0x57b54c];return _0x59cc19;};'use strict';var moment=require(_0xdf13('0x0'));var Sequelize=require(_0xdf13('0x1'));module[_0xdf13('0x2')]={'starttime':{'type':Sequelize[_0xdf13('0x3')],'set':function(_0x785372){this[_0xdf13('0x4')](_0xdf13('0x5'),_0x785372);this[_0xdf13('0x4')](_0xdf13('0x6'),moment()[_0xdf13('0x7')](_0xdf13('0x8')));}},'endtime':{'type':Sequelize[_0xdf13('0x3')]},'membername':{'type':Sequelize[_0xdf13('0x9')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xdf13('0x9')]},'uniqueid':{'type':Sequelize[_0xdf13('0x9')]},'calleridname':{'type':Sequelize[_0xdf13('0x9')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xdf13('0xa')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7f6c=['sequelize','exports','DATE','setDataValue','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN'];(function(_0x1a004,_0x46b6f6){var _0x326dc7=function(_0x326003){while(--_0x326003){_0x1a004['push'](_0x1a004['shift']());}};_0x326dc7(++_0x46b6f6);}(_0x7f6c,0x1b8));var _0xc7f6=function(_0x3d48cb,_0x4275d0){_0x3d48cb=_0x3d48cb-0x0;var _0x1b095c=_0x7f6c[_0x3d48cb];return _0x1b095c;};'use strict';var moment=require('moment');var Sequelize=require(_0xc7f6('0x0'));module[_0xc7f6('0x1')]={'starttime':{'type':Sequelize[_0xc7f6('0x2')],'set':function(_0x122438){this[_0xc7f6('0x3')]('starttime',_0x122438);this[_0xc7f6('0x3')]('endtime',moment()[_0xc7f6('0x4')](_0xc7f6('0x5')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xc7f6('0x6')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xc7f6('0x6')]},'uniqueid':{'type':Sequelize[_0xc7f6('0x6')]},'calleridname':{'type':Sequelize[_0xc7f6('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xc7f6('0x7')],'defaultValue':![]}};
\ No newline at end of file
index a52ed20..dd88734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3c=['destroy','describe','getQuestions','findOne','JscriptyQuestionReport','keys','order','SessionId','count','rows','eml-format','zip-dir','request-promise','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/logger','api','../../config/license/util','status','end','json','undefined','limit','offset','set','apply','then','sendStatus','error','name','index','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','JscriptySessionReport','findAll','catch','show','params','rawAttributes','find','create','body','update'];(function(_0x3ae218,_0xf3addd){var _0x127e5e=function(_0x2457f9){while(--_0x2457f9){_0x3ae218['push'](_0x3ae218['shift']());}};_0x127e5e(++_0xf3addd);}(_0xcf3c,0x1e4));var _0xccf3=function(_0x2b835c,_0x60bf44){_0x2b835c=_0x2b835c-0x0;var _0x3e9bbd=_0xcf3c[_0x2b835c];return _0x3e9bbd;};'use strict';var emlformat=require(_0xccf3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xccf3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xccf3('0x2'));var moment=require(_0xccf3('0x3'));var BPromise=require(_0xccf3('0x4'));var Mustache=require(_0xccf3('0x5'));var util=require('util');var path=require(_0xccf3('0x6'));var sox=require(_0xccf3('0x7'));var csv=require(_0xccf3('0x8'));var ejs=require(_0xccf3('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xccf3('0xa'));var squel=require(_0xccf3('0xb'));var crypto=require(_0xccf3('0xc'));var jsforce=require(_0xccf3('0xd'));var deskjs=require(_0xccf3('0xe'));var toCsv=require(_0xccf3('0x8'));var querystring=require(_0xccf3('0xf'));var Papa=require('papaparse');var Redis=require(_0xccf3('0x10'));var authService=require(_0xccf3('0x11'));var qs=require(_0xccf3('0x12'));var as=require(_0xccf3('0x13'));var hardwareService=require(_0xccf3('0x14'));var logger=require(_0xccf3('0x15'))(_0xccf3('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xccf3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49afb9,_0x407a34){_0x407a34=_0x407a34||0xcc;return function(_0x4c7f69){if(_0x4c7f69){return _0x49afb9['sendStatus'](_0x407a34);}return _0x49afb9[_0xccf3('0x18')](_0x407a34)[_0xccf3('0x19')]();};}function respondWithResult(_0x18ff98,_0x505e90){_0x505e90=_0x505e90||0xc8;return function(_0xf81469){if(_0xf81469){return _0x18ff98[_0xccf3('0x18')](_0x505e90)[_0xccf3('0x1a')](_0xf81469);}};}function respondWithFilteredResult(_0x4911ae,_0x3c00f3){return function(_0x3559d3){if(_0x3559d3){var _0xfaa48c=typeof _0x3c00f3['offset']===_0xccf3('0x1b')&&typeof _0x3c00f3[_0xccf3('0x1c')]==='undefined';var _0x331e9a=_0x3559d3['count'];var _0xbdfe8b=_0xfaa48c?0x0:_0x3c00f3[_0xccf3('0x1d')];var _0x340728=_0xfaa48c?_0x3559d3['count']:_0x3c00f3['offset']+_0x3c00f3[_0xccf3('0x1c')];var _0x384671;if(_0x340728>=_0x331e9a){_0x340728=_0x331e9a;_0x384671=0xc8;}else{_0x384671=0xce;}_0x4911ae[_0xccf3('0x18')](_0x384671);return _0x4911ae[_0xccf3('0x1e')]('Content-Range',_0xbdfe8b+'-'+_0x340728+'/'+_0x331e9a)['json'](_0x3559d3);}return null;};}function patchUpdates(_0x59a0a3){return function(_0x335772){try{jsonpatch[_0xccf3('0x1f')](_0x335772,_0x59a0a3,!![]);}catch(_0xb821ed){return BPromise['reject'](_0xb821ed);}return _0x335772['save']();};}function saveUpdates(_0x514e52,_0x3a1f17){return function(_0x3cd947){if(_0x3cd947){return _0x3cd947['update'](_0x514e52)['then'](function(_0x3f2da2){return _0x3f2da2;});}return null;};}function removeEntity(_0x2b5ddf,_0x4c9495){return function(_0x4cfc37){if(_0x4cfc37){return _0x4cfc37['destroy']()[_0xccf3('0x20')](function(){_0x2b5ddf['status'](0xcc)[_0xccf3('0x19')]();});}};}function handleEntityNotFound(_0x5de29b,_0x1af1c0){return function(_0x41c11e){if(!_0x41c11e){_0x5de29b[_0xccf3('0x21')](0x194);}return _0x41c11e;};}function handleError(_0xc537a2,_0x4b8a41){_0x4b8a41=_0x4b8a41||0x1f4;return function(_0x2cb103){logger[_0xccf3('0x22')](_0x2cb103['stack']);if(_0x2cb103[_0xccf3('0x23')]){delete _0x2cb103[_0xccf3('0x23')];}_0xc537a2[_0xccf3('0x18')](_0x4b8a41)['send'](_0x2cb103);};}exports[_0xccf3('0x24')]=function(_0x468a39,_0x2ee583){var _0x100cbc={},_0x5a9294={},_0x5f5add={'count':0x0,'rows':[]};var _0x3ddeb3=_['map'](db['JscriptySessionReport']['rawAttributes'],function(_0x46d1d5){return{'name':_0x46d1d5[_0xccf3('0x25')],'type':_0x46d1d5[_0xccf3('0x26')][_0xccf3('0x27')]};});_0x5a9294[_0xccf3('0x28')]=_[_0xccf3('0x29')](_0x3ddeb3,_0xccf3('0x23'));_0x5a9294[_0xccf3('0x2a')]=_['keys'](_0x468a39[_0xccf3('0x2a')]);_0x5a9294[_0xccf3('0x2b')]=_['intersection'](_0x5a9294[_0xccf3('0x28')],_0x5a9294[_0xccf3('0x2a')]);_0x100cbc[_0xccf3('0x2c')]=_[_0xccf3('0x2d')](_0x5a9294['model'],qs['fields'](_0x468a39[_0xccf3('0x2a')][_0xccf3('0x2e')]));_0x100cbc[_0xccf3('0x2c')]=_0x100cbc[_0xccf3('0x2c')][_0xccf3('0x2f')]?_0x100cbc[_0xccf3('0x2c')]:_0x5a9294[_0xccf3('0x28')];if(!_0x468a39['query'][_0xccf3('0x30')](_0xccf3('0x31'))){_0x100cbc[_0xccf3('0x1c')]=qs[_0xccf3('0x1c')](_0x468a39[_0xccf3('0x2a')][_0xccf3('0x1c')]);_0x100cbc[_0xccf3('0x1d')]=qs[_0xccf3('0x1d')](_0x468a39[_0xccf3('0x2a')][_0xccf3('0x1d')]);}_0x100cbc['order']=qs[_0xccf3('0x32')](_0x468a39['query'][_0xccf3('0x32')]);_0x100cbc[_0xccf3('0x33')]=qs[_0xccf3('0x2b')](_[_0xccf3('0x34')](_0x468a39[_0xccf3('0x2a')],_0x5a9294[_0xccf3('0x2b')]),_0x3ddeb3);if(_0x468a39['query'][_0xccf3('0x35')]){_0x100cbc[_0xccf3('0x33')]=_['merge'](_0x100cbc[_0xccf3('0x33')],{'$or':_[_0xccf3('0x29')](_0x3ddeb3,function(_0x1c8341){if(_0x1c8341[_0xccf3('0x26')]!==_0xccf3('0x36')){var _0xa03b4a={};_0xa03b4a[_0x1c8341[_0xccf3('0x23')]]={'$like':'%'+_0x468a39[_0xccf3('0x2a')][_0xccf3('0x35')]+'%'};return _0xa03b4a;}})});}_0x100cbc=_[_0xccf3('0x37')]({},_0x100cbc,_0x468a39[_0xccf3('0x38')]);var _0xaf128b={'where':_0x100cbc[_0xccf3('0x33')]};return db['JscriptySessionReport']['count'](_0xaf128b)[_0xccf3('0x20')](function(_0x3b3fc1){_0x5f5add['count']=_0x3b3fc1;if(_0x468a39[_0xccf3('0x2a')][_0xccf3('0x39')]){_0x100cbc[_0xccf3('0x3a')]=[{'all':!![]}];}return db[_0xccf3('0x3b')][_0xccf3('0x3c')](_0x100cbc);})[_0xccf3('0x20')](function(_0x2eddb2){_0x5f5add['rows']=_0x2eddb2;return _0x5f5add;})[_0xccf3('0x20')](respondWithFilteredResult(_0x2ee583,_0x100cbc))[_0xccf3('0x3d')](handleError(_0x2ee583,null));};exports[_0xccf3('0x3e')]=function(_0x16cf49,_0x50ea76){var _0x57031c={'raw':!![],'where':{'id':_0x16cf49[_0xccf3('0x3f')]['id']}},_0x5630b8={};_0x5630b8[_0xccf3('0x28')]=_['keys'](db['JscriptySessionReport'][_0xccf3('0x40')]);_0x5630b8[_0xccf3('0x2a')]=_['keys'](_0x16cf49['query']);_0x5630b8['filters']=_[_0xccf3('0x2d')](_0x5630b8[_0xccf3('0x28')],_0x5630b8['query']);_0x57031c[_0xccf3('0x2c')]=_[_0xccf3('0x2d')](_0x5630b8[_0xccf3('0x28')],qs[_0xccf3('0x2e')](_0x16cf49['query'][_0xccf3('0x2e')]));_0x57031c['attributes']=_0x57031c['attributes'][_0xccf3('0x2f')]?_0x57031c[_0xccf3('0x2c')]:_0x5630b8[_0xccf3('0x28')];if(_0x16cf49[_0xccf3('0x2a')]['includeAll']){_0x57031c[_0xccf3('0x3a')]=[{'all':!![]}];}_0x57031c=_[_0xccf3('0x37')]({},_0x57031c,_0x16cf49[_0xccf3('0x38')]);return db[_0xccf3('0x3b')][_0xccf3('0x41')](_0x57031c)[_0xccf3('0x20')](handleEntityNotFound(_0x50ea76,null))[_0xccf3('0x20')](respondWithResult(_0x50ea76,null))[_0xccf3('0x3d')](handleError(_0x50ea76,null));};exports[_0xccf3('0x42')]=function(_0xe55f2c,_0x514d24){return db[_0xccf3('0x3b')][_0xccf3('0x42')](_0xe55f2c[_0xccf3('0x43')],{})['then'](respondWithResult(_0x514d24,0xc9))[_0xccf3('0x3d')](handleError(_0x514d24,null));};exports[_0xccf3('0x44')]=function(_0x555483,_0x3013ef){if(_0x555483[_0xccf3('0x43')]['id']){delete _0x555483[_0xccf3('0x43')]['id'];}return db[_0xccf3('0x3b')][_0xccf3('0x41')]({'where':{'id':_0x555483['params']['id']}})[_0xccf3('0x20')](handleEntityNotFound(_0x3013ef,null))[_0xccf3('0x20')](saveUpdates(_0x555483['body'],null))['then'](respondWithResult(_0x3013ef,null))['catch'](handleError(_0x3013ef,null));};exports[_0xccf3('0x45')]=function(_0x587140,_0x497ed6){return db[_0xccf3('0x3b')]['find']({'where':{'id':_0x587140[_0xccf3('0x3f')]['id']}})[_0xccf3('0x20')](handleEntityNotFound(_0x497ed6,null))[_0xccf3('0x20')](removeEntity(_0x497ed6,null))['catch'](handleError(_0x497ed6,null));};exports[_0xccf3('0x46')]=function(_0xa4ddcd,_0x2cd095){return db[_0xccf3('0x3b')][_0xccf3('0x46')]()[_0xccf3('0x20')](respondWithResult(_0x2cd095,null))[_0xccf3('0x3d')](handleError(_0x2cd095,null));};exports[_0xccf3('0x47')]=function(_0xe56662,_0xb51e9a,_0x8b4f43){var _0x57d69f={'raw':!![],'where':{}};var _0x5dd7ca={};var _0x5482eb={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xccf3('0x48')]({'where':{'id':_0xe56662[_0xccf3('0x3f')]['id']}})[_0xccf3('0x20')](handleEntityNotFound(_0xb51e9a,null))[_0xccf3('0x20')](function(_0x50ac24){if(_0x50ac24){_0x5dd7ca[_0xccf3('0x28')]=_['keys'](db[_0xccf3('0x49')]['rawAttributes']);_0x5dd7ca[_0xccf3('0x2a')]=_[_0xccf3('0x4a')](_0xe56662[_0xccf3('0x2a')]);_0x5dd7ca[_0xccf3('0x2b')]=_[_0xccf3('0x2d')](_0x5dd7ca['model'],_0x5dd7ca[_0xccf3('0x2a')]);_0x57d69f['attributes']=_[_0xccf3('0x2d')](_0x5dd7ca['model'],qs[_0xccf3('0x2e')](_0xe56662['query'][_0xccf3('0x2e')]));_0x57d69f['attributes']=_0x57d69f[_0xccf3('0x2c')][_0xccf3('0x2f')]?_0x57d69f['attributes']:_0x5dd7ca[_0xccf3('0x28')];if(!_0xe56662[_0xccf3('0x2a')]['hasOwnProperty'](_0xccf3('0x31'))){_0x57d69f[_0xccf3('0x1c')]=qs[_0xccf3('0x1c')](_0xe56662[_0xccf3('0x2a')]['limit']);_0x57d69f[_0xccf3('0x1d')]=qs['offset'](_0xe56662[_0xccf3('0x2a')][_0xccf3('0x1d')]);}_0x57d69f[_0xccf3('0x4b')]=qs[_0xccf3('0x32')](_0xe56662[_0xccf3('0x2a')][_0xccf3('0x32')]);_0x57d69f['where']=qs[_0xccf3('0x2b')](_[_0xccf3('0x34')](_0xe56662['query'],_0x5dd7ca[_0xccf3('0x2b')]));_0x57d69f[_0xccf3('0x33')][_0xccf3('0x4c')]=_0x50ac24['id'];if(_0xe56662['query']['filter']){_0x57d69f['where']=_[_0xccf3('0x37')](_0x57d69f['where'],{'$or':_['map'](_0x57d69f[_0xccf3('0x2c')],function(_0x1e45f9){var _0x3f81b7={};_0x3f81b7[_0x1e45f9]={'$like':'%'+_0xe56662[_0xccf3('0x2a')]['filter']+'%'};return _0x3f81b7;})});}_0x57d69f=_[_0xccf3('0x37')]({},_0x57d69f,_0xe56662['options']);return db[_0xccf3('0x49')][_0xccf3('0x4d')]({'where':_0x57d69f[_0xccf3('0x33')]})[_0xccf3('0x20')](function(_0x2432a8){_0x5482eb[_0xccf3('0x4d')]=_0x2432a8;if(_0xe56662['query'][_0xccf3('0x39')]){_0x57d69f[_0xccf3('0x3a')]=[{'all':!![]}];}return db[_0xccf3('0x49')][_0xccf3('0x3c')](_0x57d69f);})['then'](function(_0x2a969a){_0x5482eb[_0xccf3('0x4e')]=_0x2a969a;return _0x5482eb;});}})[_0xccf3('0x20')](respondWithFilteredResult(_0xb51e9a,_0x57d69f))[_0xccf3('0x3d')](handleError(_0xb51e9a,null));};
\ No newline at end of file
+var _0xb287=['stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','merge','VIRTUAL','filter','options','JscriptySessionReport','then','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','getQuestions','JscriptyQuestionReport','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','destroy','sendStatus','error'];(function(_0x2f77d6,_0x815a1d){var _0x5bf9eb=function(_0xb05bb5){while(--_0xb05bb5){_0x2f77d6['push'](_0x2f77d6['shift']());}};_0x5bf9eb(++_0x815a1d);}(_0xb287,0xc6));var _0x7b28=function(_0x226031,_0xf9eb1){_0x226031=_0x226031-0x0;var _0x54a359=_0xb287[_0x226031];return _0x54a359;};'use strict';var emlformat=require(_0x7b28('0x0'));var rimraf=require(_0x7b28('0x1'));var zipdir=require(_0x7b28('0x2'));var jsonpatch=require(_0x7b28('0x3'));var rp=require(_0x7b28('0x4'));var moment=require(_0x7b28('0x5'));var BPromise=require(_0x7b28('0x6'));var Mustache=require(_0x7b28('0x7'));var util=require(_0x7b28('0x8'));var path=require(_0x7b28('0x9'));var sox=require(_0x7b28('0xa'));var csv=require(_0x7b28('0xb'));var ejs=require(_0x7b28('0xc'));var fs=require('fs');var fs_extra=require(_0x7b28('0xd'));var _=require('lodash');var squel=require(_0x7b28('0xe'));var crypto=require(_0x7b28('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7b28('0x10'));var toCsv=require(_0x7b28('0xb'));var querystring=require(_0x7b28('0x11'));var Papa=require('papaparse');var Redis=require(_0x7b28('0x12'));var authService=require(_0x7b28('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b28('0x14'));var logger=require(_0x7b28('0x15'))(_0x7b28('0x16'));var utils=require('../../config/utils');var config=require(_0x7b28('0x17'));var licenseUtil=require(_0x7b28('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3eec30,_0x40e131){_0x40e131=_0x40e131||0xcc;return function(_0x5c611c){if(_0x5c611c){return _0x3eec30['sendStatus'](_0x40e131);}return _0x3eec30[_0x7b28('0x19')](_0x40e131)[_0x7b28('0x1a')]();};}function respondWithResult(_0xd74338,_0x150db0){_0x150db0=_0x150db0||0xc8;return function(_0x535bed){if(_0x535bed){return _0xd74338['status'](_0x150db0)[_0x7b28('0x1b')](_0x535bed);}};}function respondWithFilteredResult(_0x242877,_0x48afd7){return function(_0x54bb00){if(_0x54bb00){var _0x425129=typeof _0x48afd7[_0x7b28('0x1c')]==='undefined'&&typeof _0x48afd7[_0x7b28('0x1d')]===_0x7b28('0x1e');var _0x235f9e=_0x54bb00[_0x7b28('0x1f')];var _0x19260d=_0x425129?0x0:_0x48afd7['offset'];var _0x3c79ab=_0x425129?_0x54bb00[_0x7b28('0x1f')]:_0x48afd7[_0x7b28('0x1c')]+_0x48afd7[_0x7b28('0x1d')];var _0x3d27cb;if(_0x3c79ab>=_0x235f9e){_0x3c79ab=_0x235f9e;_0x3d27cb=0xc8;}else{_0x3d27cb=0xce;}_0x242877['status'](_0x3d27cb);return _0x242877[_0x7b28('0x20')](_0x7b28('0x21'),_0x19260d+'-'+_0x3c79ab+'/'+_0x235f9e)[_0x7b28('0x1b')](_0x54bb00);}return null;};}function patchUpdates(_0x16810b){return function(_0x40d623){try{jsonpatch[_0x7b28('0x22')](_0x40d623,_0x16810b,!![]);}catch(_0x450ba4){return BPromise['reject'](_0x450ba4);}return _0x40d623[_0x7b28('0x23')]();};}function saveUpdates(_0x1fb697,_0x550681){return function(_0x20d64f){if(_0x20d64f){return _0x20d64f['update'](_0x1fb697)['then'](function(_0xa90909){return _0xa90909;});}return null;};}function removeEntity(_0x10c478,_0x4c56ce){return function(_0x300605){if(_0x300605){return _0x300605[_0x7b28('0x24')]()['then'](function(){_0x10c478[_0x7b28('0x19')](0xcc)[_0x7b28('0x1a')]();});}};}function handleEntityNotFound(_0x349b17,_0x29cdb2){return function(_0xedcf88){if(!_0xedcf88){_0x349b17[_0x7b28('0x25')](0x194);}return _0xedcf88;};}function handleError(_0x208bfa,_0x3e075d){_0x3e075d=_0x3e075d||0x1f4;return function(_0xfa3fe3){logger[_0x7b28('0x26')](_0xfa3fe3[_0x7b28('0x27')]);if(_0xfa3fe3[_0x7b28('0x28')]){delete _0xfa3fe3['name'];}_0x208bfa['status'](_0x3e075d)[_0x7b28('0x29')](_0xfa3fe3);};}exports[_0x7b28('0x2a')]=function(_0x12cf4f,_0x4d3874){var _0x5f401b={},_0x5944b5={},_0x212d40={'count':0x0,'rows':[]};var _0x1a8b30=_[_0x7b28('0x2b')](db['JscriptySessionReport'][_0x7b28('0x2c')],function(_0x466231){return{'name':_0x466231[_0x7b28('0x2d')],'type':_0x466231['type'][_0x7b28('0x2e')]};});_0x5944b5[_0x7b28('0x2f')]=_['map'](_0x1a8b30,_0x7b28('0x28'));_0x5944b5[_0x7b28('0x30')]=_['keys'](_0x12cf4f[_0x7b28('0x30')]);_0x5944b5[_0x7b28('0x31')]=_[_0x7b28('0x32')](_0x5944b5[_0x7b28('0x2f')],_0x5944b5[_0x7b28('0x30')]);_0x5f401b[_0x7b28('0x33')]=_[_0x7b28('0x32')](_0x5944b5[_0x7b28('0x2f')],qs['fields'](_0x12cf4f['query'][_0x7b28('0x34')]));_0x5f401b[_0x7b28('0x33')]=_0x5f401b['attributes']['length']?_0x5f401b[_0x7b28('0x33')]:_0x5944b5[_0x7b28('0x2f')];if(!_0x12cf4f['query']['hasOwnProperty'](_0x7b28('0x35'))){_0x5f401b['limit']=qs[_0x7b28('0x1d')](_0x12cf4f[_0x7b28('0x30')]['limit']);_0x5f401b[_0x7b28('0x1c')]=qs[_0x7b28('0x1c')](_0x12cf4f[_0x7b28('0x30')][_0x7b28('0x1c')]);}_0x5f401b[_0x7b28('0x36')]=qs[_0x7b28('0x37')](_0x12cf4f[_0x7b28('0x30')][_0x7b28('0x37')]);_0x5f401b[_0x7b28('0x38')]=qs[_0x7b28('0x31')](_['pick'](_0x12cf4f[_0x7b28('0x30')],_0x5944b5[_0x7b28('0x31')]),_0x1a8b30);if(_0x12cf4f[_0x7b28('0x30')]['filter']){_0x5f401b[_0x7b28('0x38')]=_[_0x7b28('0x39')](_0x5f401b[_0x7b28('0x38')],{'$or':_['map'](_0x1a8b30,function(_0x2a5479){if(_0x2a5479['type']!==_0x7b28('0x3a')){var _0x1ea5db={};_0x1ea5db[_0x2a5479['name']]={'$like':'%'+_0x12cf4f[_0x7b28('0x30')][_0x7b28('0x3b')]+'%'};return _0x1ea5db;}})});}_0x5f401b=_[_0x7b28('0x39')]({},_0x5f401b,_0x12cf4f[_0x7b28('0x3c')]);var _0x404cfa={'where':_0x5f401b[_0x7b28('0x38')]};return db[_0x7b28('0x3d')]['count'](_0x404cfa)[_0x7b28('0x3e')](function(_0x95ebc3){_0x212d40[_0x7b28('0x1f')]=_0x95ebc3;if(_0x12cf4f[_0x7b28('0x30')][_0x7b28('0x3f')]){_0x5f401b[_0x7b28('0x40')]=[{'all':!![]}];}return db[_0x7b28('0x3d')][_0x7b28('0x41')](_0x5f401b);})[_0x7b28('0x3e')](function(_0x3d6ea3){_0x212d40[_0x7b28('0x42')]=_0x3d6ea3;return _0x212d40;})['then'](respondWithFilteredResult(_0x4d3874,_0x5f401b))[_0x7b28('0x43')](handleError(_0x4d3874,null));};exports[_0x7b28('0x44')]=function(_0x1aae3c,_0x3c8f9b){var _0x16325a={'raw':!![],'where':{'id':_0x1aae3c[_0x7b28('0x45')]['id']}},_0x4eeb41={};_0x4eeb41[_0x7b28('0x2f')]=_[_0x7b28('0x46')](db[_0x7b28('0x3d')][_0x7b28('0x2c')]);_0x4eeb41[_0x7b28('0x30')]=_[_0x7b28('0x46')](_0x1aae3c[_0x7b28('0x30')]);_0x4eeb41[_0x7b28('0x31')]=_['intersection'](_0x4eeb41['model'],_0x4eeb41[_0x7b28('0x30')]);_0x16325a[_0x7b28('0x33')]=_[_0x7b28('0x32')](_0x4eeb41[_0x7b28('0x2f')],qs['fields'](_0x1aae3c['query'][_0x7b28('0x34')]));_0x16325a[_0x7b28('0x33')]=_0x16325a['attributes'][_0x7b28('0x47')]?_0x16325a[_0x7b28('0x33')]:_0x4eeb41['model'];if(_0x1aae3c[_0x7b28('0x30')][_0x7b28('0x3f')]){_0x16325a[_0x7b28('0x40')]=[{'all':!![]}];}_0x16325a=_['merge']({},_0x16325a,_0x1aae3c['options']);return db[_0x7b28('0x3d')][_0x7b28('0x48')](_0x16325a)['then'](handleEntityNotFound(_0x3c8f9b,null))[_0x7b28('0x3e')](respondWithResult(_0x3c8f9b,null))['catch'](handleError(_0x3c8f9b,null));};exports[_0x7b28('0x49')]=function(_0x2fe782,_0x199493){return db[_0x7b28('0x3d')][_0x7b28('0x49')](_0x2fe782['body'],{})[_0x7b28('0x3e')](respondWithResult(_0x199493,0xc9))[_0x7b28('0x43')](handleError(_0x199493,null));};exports['update']=function(_0x3ca246,_0x20dbd4){if(_0x3ca246[_0x7b28('0x4a')]['id']){delete _0x3ca246[_0x7b28('0x4a')]['id'];}return db[_0x7b28('0x3d')][_0x7b28('0x48')]({'where':{'id':_0x3ca246[_0x7b28('0x45')]['id']}})[_0x7b28('0x3e')](handleEntityNotFound(_0x20dbd4,null))[_0x7b28('0x3e')](saveUpdates(_0x3ca246[_0x7b28('0x4a')],null))[_0x7b28('0x3e')](respondWithResult(_0x20dbd4,null))[_0x7b28('0x43')](handleError(_0x20dbd4,null));};exports[_0x7b28('0x24')]=function(_0x47d1fe,_0x266d5b){return db[_0x7b28('0x3d')][_0x7b28('0x48')]({'where':{'id':_0x47d1fe[_0x7b28('0x45')]['id']}})['then'](handleEntityNotFound(_0x266d5b,null))[_0x7b28('0x3e')](removeEntity(_0x266d5b,null))[_0x7b28('0x43')](handleError(_0x266d5b,null));};exports['describe']=function(_0x122959,_0x27cbbe){return db[_0x7b28('0x3d')][_0x7b28('0x4b')]()['then'](respondWithResult(_0x27cbbe,null))[_0x7b28('0x43')](handleError(_0x27cbbe,null));};exports[_0x7b28('0x4c')]=function(_0x116a67,_0x34f66c,_0xd19752){var _0x39696e={'raw':!![],'where':{}};var _0x1d9484={};var _0x3acb6f={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0x116a67[_0x7b28('0x45')]['id']}})[_0x7b28('0x3e')](handleEntityNotFound(_0x34f66c,null))[_0x7b28('0x3e')](function(_0x555534){if(_0x555534){_0x1d9484[_0x7b28('0x2f')]=_['keys'](db[_0x7b28('0x4d')]['rawAttributes']);_0x1d9484[_0x7b28('0x30')]=_['keys'](_0x116a67[_0x7b28('0x30')]);_0x1d9484[_0x7b28('0x31')]=_[_0x7b28('0x32')](_0x1d9484[_0x7b28('0x2f')],_0x1d9484[_0x7b28('0x30')]);_0x39696e[_0x7b28('0x33')]=_[_0x7b28('0x32')](_0x1d9484[_0x7b28('0x2f')],qs['fields'](_0x116a67['query'][_0x7b28('0x34')]));_0x39696e[_0x7b28('0x33')]=_0x39696e['attributes'][_0x7b28('0x47')]?_0x39696e['attributes']:_0x1d9484['model'];if(!_0x116a67[_0x7b28('0x30')]['hasOwnProperty'](_0x7b28('0x35'))){_0x39696e[_0x7b28('0x1d')]=qs[_0x7b28('0x1d')](_0x116a67[_0x7b28('0x30')][_0x7b28('0x1d')]);_0x39696e[_0x7b28('0x1c')]=qs[_0x7b28('0x1c')](_0x116a67[_0x7b28('0x30')][_0x7b28('0x1c')]);}_0x39696e['order']=qs['sort'](_0x116a67['query'][_0x7b28('0x37')]);_0x39696e[_0x7b28('0x38')]=qs['filters'](_[_0x7b28('0x4e')](_0x116a67[_0x7b28('0x30')],_0x1d9484[_0x7b28('0x31')]));_0x39696e[_0x7b28('0x38')]['SessionId']=_0x555534['id'];if(_0x116a67[_0x7b28('0x30')][_0x7b28('0x3b')]){_0x39696e[_0x7b28('0x38')]=_['merge'](_0x39696e[_0x7b28('0x38')],{'$or':_[_0x7b28('0x2b')](_0x39696e[_0x7b28('0x33')],function(_0x2834ad){var _0x56ab1={};_0x56ab1[_0x2834ad]={'$like':'%'+_0x116a67[_0x7b28('0x30')]['filter']+'%'};return _0x56ab1;})});}_0x39696e=_['merge']({},_0x39696e,_0x116a67['options']);return db[_0x7b28('0x4d')][_0x7b28('0x1f')]({'where':_0x39696e[_0x7b28('0x38')]})[_0x7b28('0x3e')](function(_0x1f0467){_0x3acb6f[_0x7b28('0x1f')]=_0x1f0467;if(_0x116a67['query'][_0x7b28('0x3f')]){_0x39696e[_0x7b28('0x40')]=[{'all':!![]}];}return db[_0x7b28('0x4d')][_0x7b28('0x41')](_0x39696e);})['then'](function(_0x581a7e){_0x3acb6f[_0x7b28('0x42')]=_0x581a7e;return _0x3acb6f;});}})[_0x7b28('0x3e')](respondWithFilteredResult(_0x34f66c,_0x39696e))[_0x7b28('0x43')](handleError(_0x34f66c,null));};
\ No newline at end of file
index dfd63cf..77873c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['report_jscripty_sessions','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x41015c,_0x5aa973){var _0x44bb9f=function(_0x1e28c5){while(--_0x1e28c5){_0x41015c['push'](_0x41015c['shift']());}};_0x44bb9f(++_0x5aa973);}(_0x326f,0xd1));var _0xf326=function(_0x2caf5e,_0x3a91db){_0x2caf5e=_0x2caf5e-0x0;var _0x37afbe=_0x326f[_0x2caf5e];return _0x37afbe;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7da7=['util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','exports','define','report_jscripty_sessions','lodash'];(function(_0x1372f4,_0x33647d){var _0x16b369=function(_0x537887){while(--_0x537887){_0x1372f4['push'](_0x1372f4['shift']());}};_0x16b369(++_0x33647d);}(_0x7da7,0x10d));var _0x77da=function(_0x77d310,_0x2b2fe7){_0x77d310=_0x77d310-0x0;var _0x2cdce4=_0x7da7[_0x77d310];return _0x2cdce4;};'use strict';var _=require(_0x77da('0x0'));var util=require(_0x77da('0x1'));var logger=require(_0x77da('0x2'))('api');var moment=require('moment');var BPromise=require(_0x77da('0x3'));var rp=require(_0x77da('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77da('0x5'));var config=require(_0x77da('0x6'));var attributes=require('./jscriptySessionReport.attributes');module[_0x77da('0x7')]=function(_0xc54a12,_0x47da81){return _0xc54a12[_0x77da('0x8')]('JscriptySessionReport',attributes,{'tableName':_0x77da('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b6cf96..83764c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x461b52,_0x20b9ed){var _0x2c3811=function(_0xba555c){while(--_0xba555c){_0x461b52['push'](_0x461b52['shift']());}};_0x2c3811(++_0x20b9ed);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x4d3e97,_0x749913){_0x4d3e97=_0x4d3e97-0x0;var _0x3147d7=_0xbbbc[_0x4d3e97];return _0x3147d7;};'use strict';var _=require(_0xcbbb('0x0'));var util=require(_0xcbbb('0x1'));var moment=require(_0xcbbb('0x2'));var BPromise=require(_0xcbbb('0x3'));var rs=require(_0xcbbb('0x4'));var fs=require('fs');var Redis=require(_0xcbbb('0x5'));var db=require(_0xcbbb('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xcbbb('0x7'))(_0xcbbb('0x8'));var config=require(_0xcbbb('0x9'));var jayson=require(_0xcbbb('0xa'));var client=jayson[_0xcbbb('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x388197,_0x1796b4,_0x32ec9c){return new BPromise(function(_0x6f4fd8,_0x356249){return client[_0xcbbb('0xc')](_0x388197,_0x32ec9c)[_0xcbbb('0xd')](function(_0x4ec90a){logger[_0xcbbb('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,'request\x20sent');logger[_0xcbbb('0xf')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x1796b4,_0xcbbb('0x10'),JSON['stringify'](_0x4ec90a));if(_0x4ec90a[_0xcbbb('0x11')]){if(_0x4ec90a[_0xcbbb('0x11')]['code']===0x1f4){logger[_0xcbbb('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0x4ec90a[_0xcbbb('0x11')]['message']);return _0x356249(_0x4ec90a[_0xcbbb('0x11')][_0xcbbb('0x12')]);}logger[_0xcbbb('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0x4ec90a[_0xcbbb('0x11')][_0xcbbb('0x12')]);return _0x6f4fd8(_0x4ec90a[_0xcbbb('0x11')][_0xcbbb('0x12')]);}else{logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0xcbbb('0x10'));_0x6f4fd8(_0x4ec90a[_0xcbbb('0x13')][_0xcbbb('0x12')]);}})[_0xcbbb('0x14')](function(_0x5e25ca){logger[_0xcbbb('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0x5e25ca);_0x356249(_0x5e25ca);});});}
\ No newline at end of file
+var _0xb091=['JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','then','info'];(function(_0x2d368f,_0x2e6752){var _0x1c5ef3=function(_0xdbcaae){while(--_0xdbcaae){_0x2d368f['push'](_0x2d368f['shift']());}};_0x1c5ef3(++_0x2e6752);}(_0xb091,0x16e));var _0x1b09=function(_0x3e4770,_0x2992d8){_0x3e4770=_0x3e4770-0x0;var _0x424fba=_0xb091[_0x3e4770];return _0x424fba;};'use strict';var _=require('lodash');var util=require(_0x1b09('0x0'));var moment=require(_0x1b09('0x1'));var BPromise=require(_0x1b09('0x2'));var rs=require(_0x1b09('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b09('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1b09('0x5'));var config=require(_0x1b09('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1b09('0x7')][_0x1b09('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2bf4f6,_0x5ce726,_0x142c33){return new BPromise(function(_0x8c26a5,_0x2f359f){return client[_0x1b09('0x9')](_0x2bf4f6,_0x142c33)[_0x1b09('0xa')](function(_0x3362e4){logger[_0x1b09('0xb')](_0x1b09('0xc'),_0x5ce726,_0x1b09('0xd'));logger[_0x1b09('0xe')](_0x1b09('0xf'),_0x5ce726,'request\x20sent',JSON[_0x1b09('0x10')](_0x3362e4));if(_0x3362e4[_0x1b09('0x11')]){if(_0x3362e4['error']['code']===0x1f4){logger[_0x1b09('0x11')](_0x1b09('0xc'),_0x5ce726,_0x3362e4[_0x1b09('0x11')][_0x1b09('0x12')]);return _0x2f359f(_0x3362e4[_0x1b09('0x11')][_0x1b09('0x12')]);}logger[_0x1b09('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x5ce726,_0x3362e4[_0x1b09('0x11')]['message']);return _0x8c26a5(_0x3362e4[_0x1b09('0x11')][_0x1b09('0x12')]);}else{logger[_0x1b09('0xb')](_0x1b09('0xc'),_0x5ce726,_0x1b09('0xd'));_0x8c26a5(_0x3362e4[_0x1b09('0x13')][_0x1b09('0x12')]);}})[_0x1b09('0x14')](function(_0x1196b2){logger[_0x1b09('0x11')](_0x1b09('0xc'),_0x5ce726,_0x1196b2);_0x2f359f(_0x1196b2);});});}
\ No newline at end of file
index 7ce44a8..d3e52ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74a=['put','/:id','isAuthenticated','update','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index'];(function(_0x1e4063,_0x1dee7f){var _0x5e9ddb=function(_0x35569e){while(--_0x35569e){_0x1e4063['push'](_0x1e4063['shift']());}};_0x5e9ddb(++_0x1dee7f);}(_0xa74a,0x66));var _0xaa74=function(_0x33f993,_0x12556a){_0x33f993=_0x33f993-0x0;var _0x4a87e5=_0xa74a[_0x33f993];return _0x4a87e5;};'use strict';var multer=require(_0xaa74('0x0'));var util=require(_0xaa74('0x1'));var path=require(_0xaa74('0x2'));var timeout=require(_0xaa74('0x3'));var express=require(_0xaa74('0x4'));var router=express[_0xaa74('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaa74('0x6'));var interaction=require(_0xaa74('0x7'));var config=require(_0xaa74('0x8'));var controller=require('./license.controller');router['get']('/',controller[_0xaa74('0x9')]);router[_0xaa74('0xa')](_0xaa74('0xb'),auth[_0xaa74('0xc')](),controller[_0xaa74('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x67d1=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','index','put','/:id','isAuthenticated','update','exports','multer'];(function(_0x4236d9,_0x973ca3){var _0xc38575=function(_0x4226c4){while(--_0x4226c4){_0x4236d9['push'](_0x4236d9['shift']());}};_0xc38575(++_0x973ca3);}(_0x67d1,0xdf));var _0x167d=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x67d1[_0x4b2436];return _0x4f5ab2;};'use strict';var multer=require(_0x167d('0x0'));var util=require(_0x167d('0x1'));var path=require(_0x167d('0x2'));var timeout=require(_0x167d('0x3'));var express=require('express');var router=express[_0x167d('0x4')]();var fs_extra=require(_0x167d('0x5'));var auth=require(_0x167d('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./license.controller');router[_0x167d('0x7')]('/',controller[_0x167d('0x8')]);router[_0x167d('0x9')](_0x167d('0xa'),auth[_0x167d('0xb')](),controller[_0x167d('0xc')]);module[_0x167d('0xd')]=router;
\ No newline at end of file
index 87822bd..3907fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cef=['STRING','INTEGER','sequelize','exports'];(function(_0x55471c,_0x2b33fa){var _0x202a6f=function(_0x14ac48){while(--_0x14ac48){_0x55471c['push'](_0x55471c['shift']());}};_0x202a6f(++_0x2b33fa);}(_0x5cef,0x1ee));var _0xf5ce=function(_0x1eefb6,_0x5143f7){_0x1eefb6=_0x1eefb6-0x0;var _0x43c4c0=_0x5cef[_0x1eefb6];return _0x43c4c0;};'use strict';var Sequelize=require(_0xf5ce('0x0'));module[_0xf5ce('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0xf5ce('0x2')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xf5ce('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7d5d=['sequelize','STRING','INTEGER'];(function(_0x34eb31,_0x8f0f70){var _0x254994=function(_0xbec9a3){while(--_0xbec9a3){_0x34eb31['push'](_0x34eb31['shift']());}};_0x254994(++_0x8f0f70);}(_0x7d5d,0x165));var _0xd7d5=function(_0x405712,_0x19af2c){_0x405712=_0x405712-0x0;var _0x51ee95=_0x7d5d[_0x405712];return _0x51ee95;};'use strict';var Sequelize=require(_0xd7d5('0x0'));module['exports']={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0xd7d5('0x1')]},'data2':{'type':Sequelize[_0xd7d5('0x1')]},'chatLicenseExceeded':{'type':Sequelize[_0xd7d5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 8bd7df5..407c789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','model','License','query','keys','intersection','attributes','fields','length','options','getLicense','body','find','checkLicense','key','demo','catch','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'];(function(_0x5cfa6a,_0x4d69e8){var _0x204e10=function(_0x364f3a){while(--_0x364f3a){_0x5cfa6a['push'](_0x5cfa6a['shift']());}};_0x204e10(++_0x4d69e8);}(_0x7a54,0x106));var _0x47a5=function(_0x10a631,_0x9a24ef){_0x10a631=_0x10a631-0x0;var _0x207a1e=_0x7a54[_0x10a631];return _0x207a1e;};'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);};}var utilLicense=require(_0x47a5('0x14'));exports[_0x47a5('0x29')]=function(_0x16631f,_0x361bfa){var _0x1127f8={'raw':!![],'where':{'id':0x1}},_0x11a4fa={};_0x11a4fa[_0x47a5('0x2a')]=_['keys'](db[_0x47a5('0x2b')]['rawAttributes']);_0x11a4fa[_0x47a5('0x2c')]=_[_0x47a5('0x2d')](_0x16631f[_0x47a5('0x2c')]);_0x11a4fa['filters']=_[_0x47a5('0x2e')](_0x11a4fa[_0x47a5('0x2a')],_0x11a4fa[_0x47a5('0x2c')]);_0x1127f8[_0x47a5('0x2f')]=_['intersection'](_0x11a4fa['model'],qs[_0x47a5('0x30')](_0x16631f[_0x47a5('0x2c')]['fields']));_0x1127f8['attributes']=_0x1127f8[_0x47a5('0x2f')][_0x47a5('0x31')]?_0x1127f8['attributes']:_0x11a4fa[_0x47a5('0x2a')];_0x1127f8=_['merge']({},_0x1127f8,_0x16631f[_0x47a5('0x32')]);return utilLicense[_0x47a5('0x33')](_0x1127f8)['then'](respondWithResult(_0x361bfa,null))['catch'](handleError(_0x361bfa,null));};exports[_0x47a5('0x22')]=function(_0x5910bb,_0x403028){if(_0x5910bb[_0x47a5('0x34')]['id']){delete _0x5910bb[_0x47a5('0x34')]['id'];}return db['License'][_0x47a5('0x35')]({'where':{'id':_0x5910bb['params']['id']}})['then'](handleEntityNotFound(_0x403028,null))[_0x47a5('0x23')](function(_0x5a8a7c){var _0x25cce0=_0x5a8a7c['get']({'plain':!![]});return utilLicense[_0x47a5('0x36')](_0x25cce0,_0x5910bb[_0x47a5('0x34')][_0x47a5('0x37')]);})[_0x47a5('0x23')](function(_0x36add5){if(!_0x36add5[_0x47a5('0x38')]){return saveUpdates(_0x5910bb[_0x47a5('0x34')],null);}return _0x36add5;})[_0x47a5('0x23')](respondWithResult(_0x403028,null))[_0x47a5('0x39')](handleError(_0x403028,null));};
\ No newline at end of file
+var _0xadb5=['query','filters','intersection','attributes','merge','getLicense','body','find','params','key','catch','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','model','keys','License'];(function(_0x232433,_0x1db251){var _0x1bb72d=function(_0x41b298){while(--_0x41b298){_0x232433['push'](_0x232433['shift']());}};_0x1bb72d(++_0x1db251);}(_0xadb5,0xad));var _0x5adb=function(_0x3afdbd,_0x2e66b6){_0x3afdbd=_0x3afdbd-0x0;var _0x5b2e16=_0xadb5[_0x3afdbd];return _0x5b2e16;};'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);};}var utilLicense=require(_0x5adb('0x17'));exports['index']=function(_0x49992e,_0x5d457e){var _0x39bddd={'raw':!![],'where':{'id':0x1}},_0x1eac55={};_0x1eac55[_0x5adb('0x28')]=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes']);_0x1eac55[_0x5adb('0x2b')]=_[_0x5adb('0x29')](_0x49992e[_0x5adb('0x2b')]);_0x1eac55[_0x5adb('0x2c')]=_[_0x5adb('0x2d')](_0x1eac55[_0x5adb('0x28')],_0x1eac55[_0x5adb('0x2b')]);_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x2d')](_0x1eac55[_0x5adb('0x28')],qs['fields'](_0x49992e[_0x5adb('0x2b')]['fields']));_0x39bddd[_0x5adb('0x2e')]=_0x39bddd[_0x5adb('0x2e')]['length']?_0x39bddd[_0x5adb('0x2e')]:_0x1eac55[_0x5adb('0x28')];_0x39bddd=_[_0x5adb('0x2f')]({},_0x39bddd,_0x49992e['options']);return utilLicense[_0x5adb('0x30')](_0x39bddd)[_0x5adb('0x22')](respondWithResult(_0x5d457e,null))['catch'](handleError(_0x5d457e,null));};exports['update']=function(_0x1ed9ea,_0x49dd03){if(_0x1ed9ea[_0x5adb('0x31')]['id']){delete _0x1ed9ea[_0x5adb('0x31')]['id'];}return db[_0x5adb('0x2a')][_0x5adb('0x32')]({'where':{'id':_0x1ed9ea[_0x5adb('0x33')]['id']}})['then'](handleEntityNotFound(_0x49dd03,null))[_0x5adb('0x22')](function(_0x215b88){var _0x1c3a5c=_0x215b88['get']({'plain':!![]});return utilLicense['checkLicense'](_0x1c3a5c,_0x1ed9ea[_0x5adb('0x31')][_0x5adb('0x34')]);})['then'](function(_0x2355bc){if(!_0x2355bc['demo']){return saveUpdates(_0x1ed9ea[_0x5adb('0x31')],null);}return _0x2355bc;})['then'](respondWithResult(_0x49dd03,null))[_0x5adb('0x35')](handleError(_0x49dd03,null));};
\ No newline at end of file
index 93af0fe..1440a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f5=['rimraf','./license.attributes','exports','define','License','license','util','api','moment','bluebird','path'];(function(_0x5ceb6f,_0x1bbcaa){var _0x52850a=function(_0xf41f2){while(--_0xf41f2){_0x5ceb6f['push'](_0x5ceb6f['shift']());}};_0x52850a(++_0x1bbcaa);}(_0x88f5,0xa0));var _0x588f=function(_0x1f55ed,_0x5d0748){_0x1f55ed=_0x1f55ed-0x0;var _0x251467=_0x88f5[_0x1f55ed];return _0x251467;};'use strict';var _=require('lodash');var util=require(_0x588f('0x0'));var logger=require('../../config/logger')(_0x588f('0x1'));var moment=require(_0x588f('0x2'));var BPromise=require(_0x588f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x588f('0x4'));var rimraf=require(_0x588f('0x5'));var config=require('../../config/environment');var attributes=require(_0x588f('0x6'));module[_0x588f('0x7')]=function(_0x5dd132,_0x780e6a){return _0x5dd132[_0x588f('0x8')](_0x588f('0x9'),attributes,{'tableName':_0x588f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff1d=['path','rimraf','../../config/environment','./license.attributes','define','License','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x54471c,_0x248015){var _0x4894f4=function(_0xae0dcb){while(--_0xae0dcb){_0x54471c['push'](_0x54471c['shift']());}};_0x4894f4(++_0x248015);}(_0xff1d,0x96));var _0xdff1=function(_0x14e198,_0x5312c8){_0x14e198=_0x14e198-0x0;var _0x4b2d63=_0xff1d[_0x14e198];return _0x4b2d63;};'use strict';var _=require(_0xdff1('0x0'));var util=require(_0xdff1('0x1'));var logger=require(_0xdff1('0x2'))(_0xdff1('0x3'));var moment=require('moment');var BPromise=require(_0xdff1('0x4'));var rp=require(_0xdff1('0x5'));var fs=require('fs');var path=require(_0xdff1('0x6'));var rimraf=require(_0xdff1('0x7'));var config=require(_0xdff1('0x8'));var attributes=require(_0xdff1('0x9'));module['exports']=function(_0xe64cae,_0x164d74){return _0xe64cae[_0xdff1('0xa')](_0xdff1('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9ba2a5..3418c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74bf=['catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','result'];(function(_0x33c61f,_0x3c2c7a){var _0x387396=function(_0x545c34){while(--_0x545c34){_0x33c61f['push'](_0x33c61f['shift']());}};_0x387396(++_0x3c2c7a);}(_0x74bf,0xeb));var _0xf74b=function(_0x12faa4,_0x180e3f){_0x12faa4=_0x12faa4-0x0;var _0x57de5f=_0x74bf[_0x12faa4];return _0x57de5f;};'use strict';var _=require(_0xf74b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf74b('0x1'));var rs=require(_0xf74b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf74b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf74b('0x4'))(_0xf74b('0x5'));var config=require('../../config/environment');var jayson=require(_0xf74b('0x6'));var client=jayson['client'][_0xf74b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1a1d42,_0x4fa31c,_0x56e4c0){return new BPromise(function(_0x7ced6d,_0xb50028){return client[_0xf74b('0x8')](_0x1a1d42,_0x56e4c0)[_0xf74b('0x9')](function(_0x353564){logger[_0xf74b('0xa')](_0xf74b('0xb'),_0x4fa31c,_0xf74b('0xc'));logger[_0xf74b('0xd')](_0xf74b('0xe'),_0x4fa31c,'request\x20sent',JSON['stringify'](_0x353564));if(_0x353564[_0xf74b('0xf')]){if(_0x353564[_0xf74b('0xf')]['code']===0x1f4){logger[_0xf74b('0xf')](_0xf74b('0xb'),_0x4fa31c,_0x353564[_0xf74b('0xf')]['message']);return _0xb50028(_0x353564[_0xf74b('0xf')]['message']);}logger[_0xf74b('0xf')]('License,\x20%s,\x20%s',_0x4fa31c,_0x353564[_0xf74b('0xf')]['message']);return _0x7ced6d(_0x353564[_0xf74b('0xf')]['message']);}else{logger[_0xf74b('0xa')](_0xf74b('0xb'),_0x4fa31c,'request\x20sent');_0x7ced6d(_0x353564[_0xf74b('0x10')]['message']);}})[_0xf74b('0x11')](function(_0x3def19){logger[_0xf74b('0xf')]('License,\x20%s,\x20%s',_0x4fa31c,_0x3def19);_0xb50028(_0x3def19);});});}
\ No newline at end of file
+var _0x7a9a=['http','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','License,\x20%s,\x20%s','message','result','catch','util','moment','ioredis','rpc','../../config/environment'];(function(_0x2808d0,_0x221a9f){var _0x3aef7c=function(_0x331dc1){while(--_0x331dc1){_0x2808d0['push'](_0x2808d0['shift']());}};_0x3aef7c(++_0x221a9f);}(_0x7a9a,0x1bd));var _0xa7a9=function(_0x88799a,_0x313908){_0x88799a=_0x88799a-0x0;var _0x30d518=_0x7a9a[_0x88799a];return _0x30d518;};'use strict';var _=require('lodash');var util=require(_0xa7a9('0x0'));var moment=require(_0xa7a9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa7a9('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa7a9('0x3'));var config=require(_0xa7a9('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa7a9('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x4afa88,_0x526061,_0x7aa4db){return new BPromise(function(_0x27550a,_0x87268a){return client['request'](_0x4afa88,_0x7aa4db)['then'](function(_0x3156f2){logger[_0xa7a9('0x6')]('License,\x20%s,\x20%s',_0x526061,_0xa7a9('0x7'));logger[_0xa7a9('0x8')](_0xa7a9('0x9'),_0x526061,_0xa7a9('0x7'),JSON['stringify'](_0x3156f2));if(_0x3156f2[_0xa7a9('0xa')]){if(_0x3156f2[_0xa7a9('0xa')]['code']===0x1f4){logger[_0xa7a9('0xa')](_0xa7a9('0xb'),_0x526061,_0x3156f2['error'][_0xa7a9('0xc')]);return _0x87268a(_0x3156f2[_0xa7a9('0xa')]['message']);}logger[_0xa7a9('0xa')]('License,\x20%s,\x20%s',_0x526061,_0x3156f2[_0xa7a9('0xa')][_0xa7a9('0xc')]);return _0x27550a(_0x3156f2[_0xa7a9('0xa')][_0xa7a9('0xc')]);}else{logger[_0xa7a9('0x6')](_0xa7a9('0xb'),_0x526061,'request\x20sent');_0x27550a(_0x3156f2[_0xa7a9('0xd')][_0xa7a9('0xc')]);}})[_0xa7a9('0xe')](function(_0x262007){logger[_0xa7a9('0xa')](_0xa7a9('0xb'),_0x526061,_0x262007);_0x87268a(_0x262007);});});}
\ No newline at end of file
index e8f423c..df0aeb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c07=['getInteractions','/:id/applications','/:id/messages','getMessages','/:id/verify','/:id/users','post','addAnswer','create','addImap','/:id/out_servers','addSmtp','/:id/send','send','addAgents','put','removeDispositions','delete','removeImap','destroy','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','getSmtp','/:id/interactions'];(function(_0x468809,_0x323975){var _0x52abcf=function(_0x27693d){while(--_0x27693d){_0x468809['push'](_0x468809['shift']());}};_0x52abcf(++_0x323975);}(_0x9c07,0x1ef));var _0x79c0=function(_0x17ced7,_0x4e7908){_0x17ced7=_0x17ced7-0x0;var _0xa6f3c=_0x9c07[_0x17ced7];return _0xa6f3c;};'use strict';var multer=require(_0x79c0('0x0'));var util=require(_0x79c0('0x1'));var path=require('path');var timeout=require(_0x79c0('0x2'));var express=require(_0x79c0('0x3'));var router=express[_0x79c0('0x4')]();var fs_extra=require(_0x79c0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x79c0('0x6'));var config=require('../../config/environment');var controller=require(_0x79c0('0x7'));router[_0x79c0('0x8')]('/',auth[_0x79c0('0x9')](),controller[_0x79c0('0xa')]);router[_0x79c0('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x79c0('0xb')]);router['get'](_0x79c0('0xc'),auth[_0x79c0('0x9')](),controller[_0x79c0('0xd')]);router[_0x79c0('0x8')](_0x79c0('0xe'),auth[_0x79c0('0x9')](),controller[_0x79c0('0xf')]);router[_0x79c0('0x8')](_0x79c0('0x10'),auth[_0x79c0('0x9')](),controller['getAnswers']);router[_0x79c0('0x8')](_0x79c0('0x11'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x12')]);router[_0x79c0('0x8')]('/:id/out_servers',auth[_0x79c0('0x9')](),controller[_0x79c0('0x13')]);router[_0x79c0('0x8')](_0x79c0('0x14'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x15')]);router[_0x79c0('0x8')](_0x79c0('0x16'),auth[_0x79c0('0x9')](),controller['getApplications']);router[_0x79c0('0x8')](_0x79c0('0x17'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x18')]);router[_0x79c0('0x8')](_0x79c0('0x19'),auth[_0x79c0('0x9')](),controller['verifySmtp']);router[_0x79c0('0x8')](_0x79c0('0x1a'),auth[_0x79c0('0x9')](),controller['getAgents']);router[_0x79c0('0x1b')](_0x79c0('0xe'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0x79c0('0x10'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x1c')]);router[_0x79c0('0x1b')]('/',auth[_0x79c0('0x9')](),controller[_0x79c0('0x1d')]);router[_0x79c0('0x1b')](_0x79c0('0x11'),auth['isAuthenticated'](),controller[_0x79c0('0x1e')]);router[_0x79c0('0x1b')](_0x79c0('0x1f'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x20')]);router[_0x79c0('0x1b')]('/:id/interactions',auth[_0x79c0('0x9')](),controller['addInteraction']);router[_0x79c0('0x1b')](_0x79c0('0x16'),auth[_0x79c0('0x9')](),controller['addApplications']);router[_0x79c0('0x1b')](_0x79c0('0x21'),auth['isAuthenticated'](),controller[_0x79c0('0x22')]);router[_0x79c0('0x1b')](_0x79c0('0x1a'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x23')]);router[_0x79c0('0x24')](_0x79c0('0xc'),auth[_0x79c0('0x9')](),controller['update']);router['delete'](_0x79c0('0xe'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x25')]);router[_0x79c0('0x26')](_0x79c0('0x10'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x79c0('0x26')](_0x79c0('0x11'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x27')]);router['delete'](_0x79c0('0x1f'),auth[_0x79c0('0x9')](),controller['removeSmtp']);router[_0x79c0('0x26')](_0x79c0('0xc'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x28')]);router[_0x79c0('0x26')]('/:id/users',auth[_0x79c0('0x9')](),controller[_0x79c0('0x29')]);module[_0x79c0('0x2a')]=router;
\ No newline at end of file
+var _0x1a8d=['getImap','/:id/out_servers','getSmtp','/:id/interactions','/:id/applications','/:id/messages','getMessages','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer','create','/:id/in_servers','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','put','update','delete','removeAnswers','removeImap','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers'];(function(_0x3ed2ef,_0x296c36){var _0x3f231f=function(_0x423f2e){while(--_0x423f2e){_0x3ed2ef['push'](_0x3ed2ef['shift']());}};_0x3f231f(++_0x296c36);}(_0x1a8d,0x1cd));var _0xd1a8=function(_0x55e03c,_0x3bc3a5){_0x55e03c=_0x55e03c-0x0;var _0x579f96=_0x1a8d[_0x55e03c];return _0x579f96;};'use strict';var multer=require(_0xd1a8('0x0'));var util=require(_0xd1a8('0x1'));var path=require(_0xd1a8('0x2'));var timeout=require(_0xd1a8('0x3'));var express=require(_0xd1a8('0x4'));var router=express[_0xd1a8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd1a8('0x6'));var interaction=require(_0xd1a8('0x7'));var config=require('../../config/environment');var controller=require(_0xd1a8('0x8'));router[_0xd1a8('0x9')]('/',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0xb')]);router['get'](_0xd1a8('0xc'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0xd')]);router[_0xd1a8('0x9')](_0xd1a8('0xe'),auth[_0xd1a8('0xa')](),controller['show']);router[_0xd1a8('0x9')](_0xd1a8('0xf'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x10')]);router['get'](_0xd1a8('0x11'),auth['isAuthenticated'](),controller[_0xd1a8('0x12')]);router[_0xd1a8('0x9')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0xd1a8('0x13')]);router[_0xd1a8('0x9')](_0xd1a8('0x14'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x15')]);router['get'](_0xd1a8('0x16'),auth[_0xd1a8('0xa')](),controller['getInteractions']);router[_0xd1a8('0x9')](_0xd1a8('0x17'),auth['isAuthenticated'](),controller['getApplications']);router[_0xd1a8('0x9')](_0xd1a8('0x18'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x19')]);router['get']('/:id/verify',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x1a')]);router[_0xd1a8('0x9')](_0xd1a8('0x1b'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x1c')]);router[_0xd1a8('0x1d')]('/:id/dispositions',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x1e')]);router[_0xd1a8('0x1d')](_0xd1a8('0x11'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x1f')]);router['post']('/',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x20')]);router['post'](_0xd1a8('0x21'),auth[_0xd1a8('0xa')](),controller['addImap']);router['post'](_0xd1a8('0x14'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x22')]);router[_0xd1a8('0x1d')](_0xd1a8('0x16'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x23')]);router[_0xd1a8('0x1d')]('/:id/applications',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x24')]);router[_0xd1a8('0x1d')](_0xd1a8('0x25'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x26')]);router['post']('/:id/users',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x27')]);router[_0xd1a8('0x28')](_0xd1a8('0xe'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x29')]);router[_0xd1a8('0x2a')](_0xd1a8('0xf'),auth[_0xd1a8('0xa')](),controller['removeDispositions']);router[_0xd1a8('0x2a')](_0xd1a8('0x11'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x2b')]);router[_0xd1a8('0x2a')](_0xd1a8('0x21'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x2c')]);router[_0xd1a8('0x2a')](_0xd1a8('0x14'),auth[_0xd1a8('0xa')](),controller['removeSmtp']);router[_0xd1a8('0x2a')](_0xd1a8('0xe'),auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x2d')]);router['delete']('/:id/users',auth[_0xd1a8('0xa')](),controller[_0xd1a8('0x2e')]);module[_0xd1a8('0x2f')]=router;
\ No newline at end of file
index 424009d..18a970e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f8=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','BOOLEAN','INTEGER','UNSIGNED','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x37f8,0xd2));var _0x837f=function(_0x2d0259,_0x4f6259){_0x2d0259=_0x2d0259-0x0;var _0x18a31c=_0x37f8[_0x2d0259];return _0x18a31c;};'use strict';var Sequelize=require('sequelize');module[_0x837f('0x0')]={'description':{'type':Sequelize[_0x837f('0x1')]},'name':{'type':Sequelize[_0x837f('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x837f('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x837f('0x3')](0x2)[_0x837f('0x4')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x837f('0x5')],'defaultValue':function(){return _0x837f('0x6');}},'notificationSound':{'type':Sequelize[_0x837f('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x837f('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x837f('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x837f('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x837f('0x3')],'allowNull':!![],'defaultValue':null,'comment':_0x837f('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![],'comment':_0x837f('0x8'),'set':function(_0x50b133){if(!_0x50b133)this[_0x837f('0x9')](_0x837f('0xa'),null);this[_0x837f('0x9')](_0x837f('0xb'),_0x50b133);}}};
\ No newline at end of file
+var _0xaa5c=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','BOOLEAN'];(function(_0x3b81f8,_0x13fea8){var _0x218d06=function(_0x3542c3){while(--_0x3542c3){_0x3b81f8['push'](_0x3b81f8['shift']());}};_0x218d06(++_0x13fea8);}(_0xaa5c,0x1f2));var _0xcaa5=function(_0x427f59,_0x3fa218){_0x427f59=_0x427f59-0x0;var _0x2747ea=_0xaa5c[_0x427f59];return _0x2747ea;};'use strict';var Sequelize=require(_0xcaa5('0x0'));module[_0xcaa5('0x1')]={'description':{'type':Sequelize[_0xcaa5('0x2')]},'name':{'type':Sequelize[_0xcaa5('0x2')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xcaa5('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcaa5('0x4')},'fontSize':{'type':Sequelize[_0xcaa5('0x5')](0x2)[_0xcaa5('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xcaa5('0x7');}},'notificationSound':{'type':Sequelize[_0xcaa5('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcaa5('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcaa5('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xcaa5('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcaa5('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xcaa5('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xcaa5('0x8')],'defaultValue':![],'comment':_0xcaa5('0xa'),'set':function(_0x52481f){if(!_0x52481f)this[_0xcaa5('0xb')]('mandatoryDispositionPauseId',null);this[_0xcaa5('0xb')](_0xcaa5('0xc'),_0x52481f);}}};
\ No newline at end of file
index 2c15181..9b219fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89ba=['Tag','Tags','color','tag','transaction','MailApplication','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','Contacts','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','List','defaults','out','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','jayson/promise','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','undefined','count','apply','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','MailServerIn','Imap','MailServerOut','Pause','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','MailAccount','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','find','body','Smtp','describe','addDisposition','MailAccountId','create','getDispositions','Disposition','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','ids','email','ListId','active','description','isNil','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','internal'];(function(_0x517921,_0x3c7a4d){var _0x4172fc=function(_0x388b7e){while(--_0x388b7e){_0x517921['push'](_0x517921['shift']());}};_0x4172fc(++_0x3c7a4d);}(_0x89ba,0x1b8));var _0xa89b=function(_0x369e54,_0x17530a){_0x369e54=_0x369e54-0x0;var _0x3b5b5b=_0x89ba[_0x369e54];return _0x3b5b5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa89b('0x0'));var zipdir=require(_0xa89b('0x1'));var jsonpatch=require(_0xa89b('0x2'));var rp=require(_0xa89b('0x3'));var moment=require(_0xa89b('0x4'));var BPromise=require(_0xa89b('0x5'));var Mustache=require(_0xa89b('0x6'));var util=require('util');var path=require(_0xa89b('0x7'));var sox=require('sox');var csv=require(_0xa89b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa89b('0x9'));var _=require(_0xa89b('0xa'));var squel=require(_0xa89b('0xb'));var crypto=require(_0xa89b('0xc'));var jsforce=require(_0xa89b('0xd'));var deskjs=require(_0xa89b('0xe'));var toCsv=require(_0xa89b('0x8'));var querystring=require(_0xa89b('0xf'));var Papa=require(_0xa89b('0x10'));var htmlToText=require(_0xa89b('0x11'));var juice=require('juice');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa89b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa89b('0x13'));var logger=require(_0xa89b('0x14'))(_0xa89b('0x15'));var utils=require(_0xa89b('0x16'));var config=require(_0xa89b('0x17'));var licenseUtil=require(_0xa89b('0x18'));var db=require(_0xa89b('0x19'))['db'];config[_0xa89b('0x1a')]=_['defaults'](config[_0xa89b('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xa89b('0x1b'))(new Redis(config[_0xa89b('0x1a')]));require('./mailAccount.socket')[_0xa89b('0x1c')](socket);var jayson=require(_0xa89b('0x1d'));var client=jayson[_0xa89b('0x1e')][_0xa89b('0x1f')]({'port':0x232b});function respondWithRpcPromise(_0x540868,_0x130209,_0x263ccb,_0xb3baff){return new BPromise(function(_0x2804c5,_0x25caed){var _0x5ce5eb=_0xb3baff||client;return _0x5ce5eb[_0xa89b('0x20')](_0x540868,_0x263ccb)['then'](function(_0x28417e){logger[_0xa89b('0x21')](_0xa89b('0x22'),_0x130209,_0xa89b('0x23'));logger[_0xa89b('0x24')](_0xa89b('0x25'),_0x130209,_0xa89b('0x23'),JSON[_0xa89b('0x26')](_0x28417e));if(_0x28417e[_0xa89b('0x27')]){if(_0x28417e['error'][_0xa89b('0x28')]===0x1f4){logger[_0xa89b('0x27')](_0xa89b('0x22'),_0x130209,_0x28417e[_0xa89b('0x27')][_0xa89b('0x29')]);return _0x25caed(_0x28417e[_0xa89b('0x27')]['message']);}logger['error'](_0xa89b('0x22'),_0x130209,_0x28417e[_0xa89b('0x27')][_0xa89b('0x29')]);return _0x2804c5(_0x28417e['error'][_0xa89b('0x29')]);}else{logger['info'](_0xa89b('0x22'),_0x130209,_0xa89b('0x23'));_0x2804c5(_0x28417e['result'][_0xa89b('0x29')]);}})[_0xa89b('0x2a')](function(_0x99221c){logger['error'](_0xa89b('0x22'),_0x130209,_0x99221c);_0x25caed(_0x99221c);});});}function respondWithStatusCode(_0x4796d5,_0x2bf425){_0x2bf425=_0x2bf425||0xcc;return function(_0x27acd3){if(_0x27acd3){return _0x4796d5[_0xa89b('0x2b')](_0x2bf425);}return _0x4796d5['status'](_0x2bf425)['end']();};}function respondWithResult(_0x3b7aa3,_0x5d14fd){_0x5d14fd=_0x5d14fd||0xc8;return function(_0x1892ab){if(_0x1892ab){return _0x3b7aa3[_0xa89b('0x2c')](_0x5d14fd)['json'](_0x1892ab);}};}function respondWithFilteredResult(_0x45559a,_0x55a0e9){return function(_0x595b5c){if(_0x595b5c){var _0x2dd10c=typeof _0x55a0e9[_0xa89b('0x2d')]===_0xa89b('0x2e')&&typeof _0x55a0e9['limit']==='undefined';var _0x2af565=_0x595b5c[_0xa89b('0x2f')];var _0x253023=_0x2dd10c?0x0:_0x55a0e9[_0xa89b('0x2d')];var _0x286a3a=_0x2dd10c?_0x595b5c[_0xa89b('0x2f')]:_0x55a0e9[_0xa89b('0x2d')]+_0x55a0e9['limit'];var _0x2ecd25;if(_0x286a3a>=_0x2af565){_0x286a3a=_0x2af565;_0x2ecd25=0xc8;}else{_0x2ecd25=0xce;}_0x45559a[_0xa89b('0x2c')](_0x2ecd25);return _0x45559a['set']('Content-Range',_0x253023+'-'+_0x286a3a+'/'+_0x2af565)['json'](_0x595b5c);}return null;};}function patchUpdates(_0x3547d9){return function(_0x4a0e6c){try{jsonpatch[_0xa89b('0x30')](_0x4a0e6c,_0x3547d9,!![]);}catch(_0x167845){return BPromise[_0xa89b('0x31')](_0x167845);}return _0x4a0e6c[_0xa89b('0x32')]();};}function saveUpdates(_0x2b2e8e,_0x34dde9){return function(_0x44f6da){if(_0x44f6da){return _0x44f6da[_0xa89b('0x33')](_0x2b2e8e)[_0xa89b('0x34')](function(_0x31c097){return _0x31c097;});}return null;};}function removeEntity(_0x311712,_0x1a0375){return function(_0x35f4b2){if(_0x35f4b2){return _0x35f4b2[_0xa89b('0x35')]()[_0xa89b('0x34')](function(){var _0xfd596d=_0x35f4b2[_0xa89b('0x36')]({'plain':!![]});var _0x218e94='MailAccounts';return db[_0xa89b('0x37')][_0xa89b('0x35')]({'where':{'type':_0x218e94,'resourceId':_0xfd596d['id']}})[_0xa89b('0x34')](function(){return _0x35f4b2;});})[_0xa89b('0x34')](function(){_0x311712[_0xa89b('0x2c')](0xcc)[_0xa89b('0x38')]();});}};}function handleEntityNotFound(_0x144d2a,_0x3a10ce){return function(_0x548441){if(!_0x548441){_0x144d2a[_0xa89b('0x2b')](0x194);}return _0x548441;};}function handleError(_0x1863d5,_0x1aee64){_0x1aee64=_0x1aee64||0x1f4;return function(_0x59ee94){logger['error'](_0x59ee94[_0xa89b('0x39')]);if(_0x59ee94[_0xa89b('0x3a')]){delete _0x59ee94[_0xa89b('0x3a')];}_0x1863d5[_0xa89b('0x2c')](_0x1aee64)[_0xa89b('0x3b')](_0x59ee94);};}exports[_0xa89b('0x3c')]=function(_0x54529a,_0x11caf9){var _0x104f2e={'include':[{'model':db[_0xa89b('0x3d')],'as':_0xa89b('0x3e')},{'model':db[_0xa89b('0x3f')],'as':'Smtp'},{'model':db[_0xa89b('0x40')],'as':'mandatoryDispositionPause'}]},_0x231743={},_0x65611d={'count':0x0,'rows':[]};var _0xbba5=_[_0xa89b('0x41')](db['MailAccount'][_0xa89b('0x42')],function(_0xa2a0bd){return{'name':_0xa2a0bd[_0xa89b('0x43')],'type':_0xa2a0bd[_0xa89b('0x44')][_0xa89b('0x45')]};});_0x231743[_0xa89b('0x46')]=_[_0xa89b('0x41')](_0xbba5,'name');_0x231743['query']=_[_0xa89b('0x47')](_0x54529a[_0xa89b('0x48')]);_0x231743['filters']=_[_0xa89b('0x49')](_0x231743[_0xa89b('0x46')],_0x231743[_0xa89b('0x48')]);_0x104f2e[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x231743[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x54529a[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x104f2e[_0xa89b('0x4a')]=_0x104f2e[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x104f2e['attributes']:_0x231743[_0xa89b('0x46')];if(!_0x54529a['query'][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x104f2e[_0xa89b('0x4f')]=qs['limit'](_0x54529a[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x104f2e[_0xa89b('0x2d')]=qs['offset'](_0x54529a[_0xa89b('0x48')][_0xa89b('0x2d')]);}_0x104f2e[_0xa89b('0x50')]=qs['sort'](_0x54529a['query'][_0xa89b('0x51')]);_0x104f2e[_0xa89b('0x52')]=qs['filters'](_[_0xa89b('0x53')](_0x54529a['query'],_0x231743[_0xa89b('0x54')]),_0xbba5);if(_0x54529a[_0xa89b('0x48')][_0xa89b('0x55')]){_0x104f2e['where']=_['merge'](_0x104f2e[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0xbba5,function(_0x30e71e){if(_0x30e71e[_0xa89b('0x44')]!==_0xa89b('0x56')){var _0x6cd4ba={};_0x6cd4ba[_0x30e71e[_0xa89b('0x3a')]]={'$like':'%'+_0x54529a[_0xa89b('0x48')][_0xa89b('0x55')]+'%'};return _0x6cd4ba;}})});}_0x104f2e=_[_0xa89b('0x57')]({},_0x104f2e,_0x54529a[_0xa89b('0x58')]);var _0x4aa1a4={'where':_0x104f2e['where']};return db[_0xa89b('0x59')][_0xa89b('0x2f')](_0x4aa1a4)['then'](function(_0x1e9d62){_0x65611d[_0xa89b('0x2f')]=_0x1e9d62;if(_0x54529a['query'][_0xa89b('0x5a')]){_0x104f2e[_0xa89b('0x5b')]=[{'all':!![]}];}return db[_0xa89b('0x59')][_0xa89b('0x5c')](_0x104f2e);})['then'](function(_0x3a0d05){_0x65611d[_0xa89b('0x5d')]=_0x3a0d05;return _0x65611d;})['then'](respondWithFilteredResult(_0x11caf9,_0x104f2e))['catch'](handleError(_0x11caf9,null));};exports[_0xa89b('0x5e')]=function(_0x27ecc2,_0x56daca){var _0xced475={'raw':![],'where':{'id':_0x27ecc2[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0x3d')],'as':_0xa89b('0x3e')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xa89b('0x40')],'as':_0xa89b('0x60')}]},_0x1dbf1b={};_0x1dbf1b[_0xa89b('0x46')]=_[_0xa89b('0x47')](db[_0xa89b('0x59')][_0xa89b('0x42')]);_0x1dbf1b['query']=_[_0xa89b('0x47')](_0x27ecc2[_0xa89b('0x48')]);_0x1dbf1b['filters']=_[_0xa89b('0x49')](_0x1dbf1b[_0xa89b('0x46')],_0x1dbf1b[_0xa89b('0x48')]);_0xced475['attributes']=_[_0xa89b('0x49')](_0x1dbf1b[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x27ecc2['query']['fields']));_0xced475[_0xa89b('0x4a')]=_0xced475[_0xa89b('0x4a')]['length']?_0xced475[_0xa89b('0x4a')]:_0x1dbf1b['model'];if(_0x27ecc2[_0xa89b('0x48')]['includeAll']){_0xced475['include']=[{'all':!![]}];}_0xced475=_[_0xa89b('0x57')]({},_0xced475,_0x27ecc2[_0xa89b('0x58')]);return db[_0xa89b('0x59')][_0xa89b('0x61')](_0xced475)[_0xa89b('0x34')](handleEntityNotFound(_0x56daca,null))[_0xa89b('0x34')](respondWithResult(_0x56daca,null))[_0xa89b('0x2a')](handleError(_0x56daca,null));};exports[_0xa89b('0x33')]=function(_0x539e97,_0x267357){if(_0x539e97[_0xa89b('0x62')]['id']){delete _0x539e97[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x539e97[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0x3d')],'as':'Imap'},{'model':db[_0xa89b('0x3f')],'as':'Smtp'},{'model':db[_0xa89b('0x40')],'as':_0xa89b('0x60')}]})[_0xa89b('0x34')](handleEntityNotFound(_0x267357,null))['then'](saveUpdates(_0x539e97['body'],null))[_0xa89b('0x34')](function(_0x501c98){if(_0x501c98&&_0x539e97['body'][_0xa89b('0x3e')]){return db[_0xa89b('0x3d')][_0xa89b('0x33')](_0x539e97[_0xa89b('0x62')][_0xa89b('0x3e')],{'where':{'MailAccountId':_0x501c98['id']}})[_0xa89b('0x34')](function(){return _0x501c98;});}return _0x501c98;})[_0xa89b('0x34')](function(_0x57e86c){if(_0x57e86c&&_0x539e97['body'][_0xa89b('0x63')]){return db[_0xa89b('0x3f')][_0xa89b('0x33')](_0x539e97[_0xa89b('0x62')][_0xa89b('0x63')],{'where':{'MailAccountId':_0x57e86c['id']}})['then'](function(){return _0x57e86c;});}return _0x57e86c;})[_0xa89b('0x34')](respondWithResult(_0x267357,null))[_0xa89b('0x2a')](handleError(_0x267357,null));};exports[_0xa89b('0x64')]=function(_0x5a1642,_0x5461d8){return db[_0xa89b('0x59')][_0xa89b('0x64')]()[_0xa89b('0x34')](respondWithResult(_0x5461d8,null))[_0xa89b('0x2a')](handleError(_0x5461d8,null));};exports[_0xa89b('0x65')]=function(_0x2cc9ea,_0x390c1f,_0x56c579){if(_0x2cc9ea[_0xa89b('0x62')]['id']){delete _0x2cc9ea[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x2cc9ea[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x390c1f,null))['then'](function(_0x382101){if(_0x382101){_0x2cc9ea[_0xa89b('0x62')][_0xa89b('0x66')]=_0x382101['id'];return db['Disposition'][_0xa89b('0x67')](_0x2cc9ea['body']);}})[_0xa89b('0x34')](respondWithResult(_0x390c1f,null))['catch'](handleError(_0x390c1f,null));};exports[_0xa89b('0x68')]=function(_0xb0b6f1,_0x3d0341,_0x327430){var _0x178573={'raw':![],'where':{}};var _0x2b970a={};var _0x232cfd={'count':0x0,'rows':[]};return db[_0xa89b('0x59')]['findOne']({'where':{'id':_0xb0b6f1[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x3d0341,null))[_0xa89b('0x34')](function(_0x404181){if(_0x404181){_0x2b970a[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['Disposition'][_0xa89b('0x42')]);_0x2b970a[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0xb0b6f1['query']);_0x2b970a[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x2b970a['model'],_0x2b970a['query']);_0x178573[_0xa89b('0x4a')]=_['intersection'](_0x2b970a['model'],qs[_0xa89b('0x4b')](_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x178573[_0xa89b('0x4a')]=_0x178573[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x178573[_0xa89b('0x4a')]:_0x2b970a['model'];if(!_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x178573[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0xb0b6f1[_0xa89b('0x48')]['limit']);_0x178573[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0xb0b6f1['query'][_0xa89b('0x2d')]);}_0x178573[_0xa89b('0x50')]=qs[_0xa89b('0x51')](_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x51')]);_0x178573[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_[_0xa89b('0x53')](_0xb0b6f1[_0xa89b('0x48')],_0x2b970a[_0xa89b('0x54')]));_0x178573[_0xa89b('0x52')][_0xa89b('0x66')]=_0x404181['id'];if(_0xb0b6f1['query']['filter']){_0x178573['where']=_[_0xa89b('0x57')](_0x178573['where'],{'$or':_[_0xa89b('0x41')](_0x178573[_0xa89b('0x4a')],function(_0x1983d8){var _0x516408={};_0x516408[_0x1983d8]={'$like':'%'+_0xb0b6f1['query'][_0xa89b('0x55')]+'%'};return _0x516408;})});}_0x178573=_[_0xa89b('0x57')]({},_0x178573,_0xb0b6f1['options']);return db[_0xa89b('0x69')][_0xa89b('0x2f')]({'where':_0x178573[_0xa89b('0x52')]})[_0xa89b('0x34')](function(_0x183e32){_0x232cfd[_0xa89b('0x2f')]=_0x183e32;if(_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x5a')]){_0x178573['include']=[{'all':!![]}];}return db[_0xa89b('0x69')]['findAll'](_0x178573);})[_0xa89b('0x34')](function(_0x318558){_0x232cfd[_0xa89b('0x5d')]=_0x318558;return _0x232cfd;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x3d0341,_0x178573))[_0xa89b('0x2a')](handleError(_0x3d0341,null));};exports[_0xa89b('0x6a')]=function(_0x55a979,_0x34a54b,_0x27cd5f){return db[_0xa89b('0x59')]['find']({'where':{'id':_0x55a979[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x34a54b,null))['then'](function(_0x4e2b44){if(_0x4e2b44){return _0x4e2b44['removeDispositions'](_0x55a979[_0xa89b('0x48')]['ids']);}})[_0xa89b('0x34')](respondWithStatusCode(_0x34a54b,null))[_0xa89b('0x2a')](handleError(_0x34a54b,null));};exports[_0xa89b('0x6b')]=function(_0x21c3c,_0x5c2f28,_0xe09d6b){if(_0x21c3c['body']['id']){delete _0x21c3c[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')]['find']({'where':{'id':_0x21c3c[_0xa89b('0x5f')]['id']}})['then'](handleEntityNotFound(_0x5c2f28,null))['then'](function(_0x176c9b){if(_0x176c9b){_0x21c3c[_0xa89b('0x62')][_0xa89b('0x66')]=_0x176c9b['id'];return db[_0xa89b('0x6c')][_0xa89b('0x67')](_0x21c3c[_0xa89b('0x62')]);}})['then'](respondWithResult(_0x5c2f28,null))['catch'](handleError(_0x5c2f28,null));};exports[_0xa89b('0x6d')]=function(_0x12c2d8,_0x3ad525,_0xb3eea0){var _0x359ed3={'raw':![],'where':{}};var _0x1f49aa={};var _0x17d5e5={'count':0x0,'rows':[]};return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x12c2d8[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x3ad525,null))[_0xa89b('0x34')](function(_0x541352){if(_0x541352){_0x1f49aa[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['CannedAnswer'][_0xa89b('0x42')]);_0x1f49aa['query']=_[_0xa89b('0x47')](_0x12c2d8[_0xa89b('0x48')]);_0x1f49aa[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x1f49aa[_0xa89b('0x46')],_0x1f49aa[_0xa89b('0x48')]);_0x359ed3[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x1f49aa[_0xa89b('0x46')],qs['fields'](_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x359ed3[_0xa89b('0x4a')]=_0x359ed3[_0xa89b('0x4a')]['length']?_0x359ed3[_0xa89b('0x4a')]:_0x1f49aa[_0xa89b('0x46')];if(!_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x4d')]('nolimit')){_0x359ed3[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x359ed3['offset']=qs['offset'](_0x12c2d8[_0xa89b('0x48')]['offset']);}_0x359ed3['order']=qs['sort'](_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x51')]);_0x359ed3[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_[_0xa89b('0x53')](_0x12c2d8[_0xa89b('0x48')],_0x1f49aa[_0xa89b('0x54')]));_0x359ed3[_0xa89b('0x52')][_0xa89b('0x66')]=_0x541352['id'];if(_0x12c2d8['query'][_0xa89b('0x55')]){_0x359ed3[_0xa89b('0x52')]=_['merge'](_0x359ed3['where'],{'$or':_[_0xa89b('0x41')](_0x359ed3[_0xa89b('0x4a')],function(_0x23711b){var _0x27d93b={};_0x27d93b[_0x23711b]={'$like':'%'+_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x55')]+'%'};return _0x27d93b;})});}_0x359ed3=_[_0xa89b('0x57')]({},_0x359ed3,_0x12c2d8[_0xa89b('0x58')]);return db[_0xa89b('0x6c')][_0xa89b('0x2f')]({'where':_0x359ed3[_0xa89b('0x52')]})['then'](function(_0x541a1f){_0x17d5e5[_0xa89b('0x2f')]=_0x541a1f;if(_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x5a')]){_0x359ed3['include']=[{'all':!![]}];}return db[_0xa89b('0x6c')]['findAll'](_0x359ed3);})[_0xa89b('0x34')](function(_0x42e32d){_0x17d5e5[_0xa89b('0x5d')]=_0x42e32d;return _0x17d5e5;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x3ad525,_0x359ed3))[_0xa89b('0x2a')](handleError(_0x3ad525,null));};exports['removeAnswers']=function(_0xb26b73,_0x371218,_0x1249b6){return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0xb26b73[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x371218,null))['then'](function(_0x15065b){if(_0x15065b){return _0x15065b['removeAnswers'](_0xb26b73['query'][_0xa89b('0x6f')]);}})['then'](respondWithStatusCode(_0x371218,null))[_0xa89b('0x2a')](handleError(_0x371218,null));};exports[_0xa89b('0x67')]=function(_0x4d7100,_0x2afee0){var _0x298875={'name':_0x4d7100['body'][_0xa89b('0x3a')],'key':_0x4d7100[_0xa89b('0x62')]['key'],'email':_0x4d7100[_0xa89b('0x62')][_0xa89b('0x70')],'ListId':_0x4d7100[_0xa89b('0x62')][_0xa89b('0x71')],'active':!_['isNil'](_0x4d7100[_0xa89b('0x62')][_0xa89b('0x72')])?_0x4d7100['body'][_0xa89b('0x72')]:!![],'description':_0x4d7100[_0xa89b('0x62')][_0xa89b('0x73')]||null,'Imap':{},'Smtp':{}};if(_[_0xa89b('0x74')](_0x4d7100['body'][_0xa89b('0x75')])){if(_0x4d7100[_0xa89b('0x62')][_0xa89b('0x76')]){_0x298875['Imap']['user']=_0x298875[_0xa89b('0x63')][_0xa89b('0x77')]=_0x4d7100['body'][_0xa89b('0x78')];_0x298875[_0xa89b('0x3e')][_0xa89b('0x79')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x7a')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x7b')];}else{_0x298875['Imap'][_0xa89b('0x7c')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x7c')]=![];}_0x298875[_0xa89b('0x3e')][_0xa89b('0x7d')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x3e')]['host'];_0x298875[_0xa89b('0x3e')][_0xa89b('0x7e')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x3e')][_0xa89b('0x7e')];_0x298875[_0xa89b('0x63')][_0xa89b('0x7d')]=_0x4d7100['body'][_0xa89b('0x63')][_0xa89b('0x7d')];_0x298875[_0xa89b('0x63')]['port']=_0x4d7100['body'][_0xa89b('0x63')][_0xa89b('0x7e')];}else{_0x298875[_0xa89b('0x3e')][_0xa89b('0x7f')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x7f')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x75')];_0x298875[_0xa89b('0x3e')][_0xa89b('0x77')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x77')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x78')];_0x298875['Imap'][_0xa89b('0x79')]=_0x298875['Smtp'][_0xa89b('0x7a')]=_0x4d7100['body'][_0xa89b('0x7b')];}return db['MailAccount'][_0xa89b('0x67')](_0x298875,{'include':[{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xa89b('0x3d')],'as':_0xa89b('0x3e')}]})[_0xa89b('0x34')](function(_0x39ebaa){var _0x403cfa=_0x4d7100[_0xa89b('0x77')][_0xa89b('0x36')]({'plain':!![]});if(!_0x403cfa)throw new Error(_0xa89b('0x80'));if(_0x403cfa[_0xa89b('0x81')]===_0xa89b('0x77')){var _0x581136=_0x39ebaa[_0xa89b('0x36')]({'plain':!![]});return db[_0xa89b('0x82')]['find']({'where':{'name':_0xa89b('0x83'),'userProfileId':_0x403cfa[_0xa89b('0x84')]},'raw':!![]})[_0xa89b('0x34')](function(_0x49f7a2){if(_0x49f7a2&&_0x49f7a2[_0xa89b('0x85')]===0x0){return db[_0xa89b('0x37')][_0xa89b('0x67')]({'name':_0x581136[_0xa89b('0x3a')],'resourceId':_0x581136['id'],'type':_0x49f7a2[_0xa89b('0x3a')],'sectionId':_0x49f7a2['id']},{})['then'](function(){return _0x39ebaa;});}else{return _0x39ebaa;}})['catch'](function(_0x47c7c2){logger[_0xa89b('0x27')](_0xa89b('0x86'),_0x47c7c2);throw _0x47c7c2;});}return _0x39ebaa;})[_0xa89b('0x34')](respondWithResult(_0x2afee0,0xc9))['catch'](handleError(_0x2afee0,null));};exports['getImap']=function(_0x4ba1d4,_0x1f3d7f,_0x35737a){return db[_0xa89b('0x59')]['findOne']({'where':{'id':_0x4ba1d4[_0xa89b('0x5f')]['id']}})['then'](handleEntityNotFound(_0x1f3d7f,null))[_0xa89b('0x34')](function(_0x2023b9){if(_0x2023b9){return _0x2023b9[_0xa89b('0x87')]();}return null;})[_0xa89b('0x34')](respondWithResult(_0x1f3d7f,null))[_0xa89b('0x2a')](handleError(_0x1f3d7f,null));};exports['addImap']=function(_0x16dd04,_0x2a1f64,_0x78c246){if(_0x16dd04[_0xa89b('0x62')]['id']){delete _0x16dd04[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')]['find']({'where':{'id':_0x16dd04['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x2a1f64,null))['then'](function(_0x57c976){if(_0x57c976){_0x16dd04[_0xa89b('0x62')][_0xa89b('0x66')]=_0x57c976['id'];return db[_0xa89b('0x3d')][_0xa89b('0x67')](_0x16dd04[_0xa89b('0x62')]);}})[_0xa89b('0x34')](respondWithResult(_0x2a1f64,null))['catch'](handleError(_0x2a1f64,null));};exports[_0xa89b('0x88')]=function(_0x2587f7,_0x49502a,_0x1c1ff1){return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x2587f7[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x49502a,null))[_0xa89b('0x34')](function(_0x26fc7a){if(_0x26fc7a){return _0x26fc7a[_0xa89b('0x89')](null);}return null;})[_0xa89b('0x34')](respondWithStatusCode(_0x49502a,null))[_0xa89b('0x2a')](handleError(_0x49502a,null));};exports[_0xa89b('0x8a')]=function(_0x5437e3,_0x3bf7fb,_0x193a00){return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x5437e3['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x3bf7fb,null))['then'](function(_0x5520c3){if(_0x5520c3){return _0x5520c3['getSmtp']();}return null;})[_0xa89b('0x34')](respondWithResult(_0x3bf7fb,null))[_0xa89b('0x2a')](handleError(_0x3bf7fb,null));};exports[_0xa89b('0x8b')]=function(_0x47683f,_0x43c921,_0x1d9816){if(_0x47683f['body']['id']){delete _0x47683f[_0xa89b('0x62')]['id'];}return db['MailAccount'][_0xa89b('0x61')]({'where':{'id':_0x47683f['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x43c921,null))[_0xa89b('0x34')](function(_0x119ed6){if(_0x119ed6){_0x47683f[_0xa89b('0x62')][_0xa89b('0x66')]=_0x119ed6['id'];return db[_0xa89b('0x3f')][_0xa89b('0x67')](_0x47683f[_0xa89b('0x62')]);}})[_0xa89b('0x34')](respondWithResult(_0x43c921,null))[_0xa89b('0x2a')](handleError(_0x43c921,null));};exports[_0xa89b('0x8c')]=function(_0x13dbf2,_0x2e39db,_0x802d9c){return db['MailAccount'][_0xa89b('0x6e')]({'where':{'id':_0x13dbf2[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x2e39db,null))['then'](function(_0x579dcc){if(_0x579dcc){return _0x579dcc[_0xa89b('0x8d')](null);}return null;})[_0xa89b('0x34')](respondWithStatusCode(_0x2e39db,null))[_0xa89b('0x2a')](handleError(_0x2e39db,null));};exports[_0xa89b('0x8e')]=function(_0x3d5892,_0x4a9af2,_0x51a3dd){return db[_0xa89b('0x8f')][_0xa89b('0x61')]({'where':{'id':_0x3d5892[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x4a9af2,null))[_0xa89b('0x34')](function(_0x2a75d1){if(_0x2a75d1){return _0x2a75d1[_0xa89b('0x8e')](_0x3d5892[_0xa89b('0x62')][_0xa89b('0x6f')],_[_0xa89b('0x90')](_0x3d5892[_0xa89b('0x62')],[_0xa89b('0x6f'),'id'])||{});}})[_0xa89b('0x34')](respondWithResult(_0x4a9af2,null))['catch'](handleError(_0x4a9af2,null));};exports[_0xa89b('0x91')]=function(_0xe70550,_0x430231,_0x2d917e){var _0x36385d={'raw':![],'where':{}};var _0x39d4d2={};var _0x15b314={'count':0x0,'rows':[]};return db['MailAccount'][_0xa89b('0x6e')]({'where':{'id':_0xe70550['params']['id']}})['then'](handleEntityNotFound(_0x430231,null))[_0xa89b('0x34')](function(_0x28a784){if(_0x28a784){_0x39d4d2[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['MailInteraction'][_0xa89b('0x42')]);_0x39d4d2[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0xe70550['query']);_0x39d4d2[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x39d4d2[_0xa89b('0x46')],_0x39d4d2['query']);_0x36385d[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x39d4d2[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0xe70550[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x36385d['attributes']=_0x36385d[_0xa89b('0x4a')]['length']?_0x36385d[_0xa89b('0x4a')]:_0x39d4d2[_0xa89b('0x46')];if(!_0xe70550[_0xa89b('0x48')][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x36385d[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0xe70550[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x36385d[_0xa89b('0x2d')]=qs['offset'](_0xe70550[_0xa89b('0x48')]['offset']);}_0x36385d[_0xa89b('0x50')]=qs['sort'](_0xe70550['query'][_0xa89b('0x51')]);_0x36385d[_0xa89b('0x52')]=qs['filters'](_[_0xa89b('0x53')](_0xe70550[_0xa89b('0x48')],_0x39d4d2['filters']));_0x36385d[_0xa89b('0x52')]['MailAccountId']=_0x28a784['id'];if(_0xe70550[_0xa89b('0x48')][_0xa89b('0x55')]){_0x36385d[_0xa89b('0x52')]=_[_0xa89b('0x57')](_0x36385d['where'],{'$or':_[_0xa89b('0x41')](_0x36385d[_0xa89b('0x4a')],function(_0x31a2a9){var _0x5638ed={};_0x5638ed[_0x31a2a9]={'$like':'%'+_0xe70550[_0xa89b('0x48')]['filter']+'%'};return _0x5638ed;})});}_0x36385d=_[_0xa89b('0x57')]({},_0x36385d,_0xe70550[_0xa89b('0x58')]);return db[_0xa89b('0x8f')][_0xa89b('0x2f')]({'where':_0x36385d[_0xa89b('0x52')]})['then'](function(_0x43d6af){_0x15b314['count']=_0x43d6af;if(_0xe70550[_0xa89b('0x48')][_0xa89b('0x5a')]){_0x36385d[_0xa89b('0x5b')]=[{'model':db[_0xa89b('0x92')],'as':_0xa89b('0x93'),'required':![]},{'model':db[_0xa89b('0x94')],'as':_0xa89b('0x95'),'attributes':['name','fullname',_0xa89b('0x96')],'required':![]},{'model':db[_0xa89b('0x97')],'as':_0xa89b('0x98'),'attributes':['id',_0xa89b('0x3a'),_0xa89b('0x99')],'where':_0xe70550[_0xa89b('0x48')][_0xa89b('0x9a')]?{'id':_0xe70550[_0xa89b('0x48')][_0xa89b('0x9a')]}:undefined,'required':_0xe70550['query']['tag']?!![]:![]}];}return db[_0xa89b('0x8f')][_0xa89b('0x5c')](_0x36385d);})[_0xa89b('0x34')](function(_0x4819d2){_0x15b314['rows']=_0x4819d2;return _0x15b314;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x430231,_0x36385d))[_0xa89b('0x2a')](handleError(_0x430231,null));};exports['addApplications']=function(_0x3e01de,_0x33274f,_0x2647e8){return db[_0xa89b('0x59')]['findOne']({'where':{'id':_0x3e01de[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x33274f,null))[_0xa89b('0x34')](function(_0x3d372b){if(_0x3d372b){return db['sequelize'][_0xa89b('0x9b')](function(_0x282290){return db[_0xa89b('0x9c')][_0xa89b('0x35')]({'where':{'MailAccountId':_0x3e01de[_0xa89b('0x5f')]['id']},'transaction':_0x282290})[_0xa89b('0x34')](function(_0x421fd1){var _0x14bffe=_[_0xa89b('0x41')](_0x3e01de[_0xa89b('0x62')],function(_0x367b05){_0x367b05[_0xa89b('0x66')]=_0x3e01de[_0xa89b('0x5f')]['id'];return _0x367b05;});return db['MailApplication']['bulkCreate'](_0x14bffe,{'transaction':_0x282290});});})['then'](function(){return db[_0xa89b('0x9c')]['findAndCountAll']({'where':{'MailAccountId':_0x3e01de[_0xa89b('0x5f')]['id']},'order':_0xa89b('0x9d')});});}})[_0xa89b('0x34')](respondWithResult(_0x33274f,null))[_0xa89b('0x2a')](handleError(_0x33274f,null));};exports[_0xa89b('0x9e')]=function(_0x578633,_0x53c9e8,_0x5e27c4){var _0x17ece2={};var _0x1f9982={};var _0xdee2b3;var _0x592aca;return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x578633['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x53c9e8,null))['then'](function(_0x47368){if(_0x47368){_0xdee2b3=_0x47368;_0x1f9982[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['MailApplication'][_0xa89b('0x42')]);_0x1f9982[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0x578633['query']);_0x1f9982[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x1f9982[_0xa89b('0x46')],_0x1f9982[_0xa89b('0x48')]);_0x17ece2[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x1f9982[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x578633[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x17ece2[_0xa89b('0x4a')]=_0x17ece2[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x17ece2[_0xa89b('0x4a')]:_0x1f9982[_0xa89b('0x46')];_0x17ece2[_0xa89b('0x50')]=qs['sort'](_0x578633[_0xa89b('0x48')]['sort']);_0x17ece2[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_[_0xa89b('0x53')](_0x578633[_0xa89b('0x48')],_0x1f9982['filters']));if(_0x578633['query']['filter']){_0x17ece2[_0xa89b('0x52')]=_[_0xa89b('0x57')](_0x17ece2[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0x17ece2[_0xa89b('0x4a')],function(_0x1c9f7a){var _0x2d2be8={};_0x2d2be8[_0x1c9f7a]={'$like':'%'+_0x578633['query']['filter']+'%'};return _0x2d2be8;})});}_0x17ece2=_['merge']({},_0x17ece2,_0x578633[_0xa89b('0x58')]);return _0xdee2b3['getApplications'](_0x17ece2);}})[_0xa89b('0x34')](function(_0x4b3a31){if(_0x4b3a31){_0x592aca=_0x4b3a31[_0xa89b('0x4c')];if(!_0x578633['query'][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x17ece2[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x578633[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x17ece2[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0x578633['query'][_0xa89b('0x2d')]);}return _0xdee2b3[_0xa89b('0x9e')](_0x17ece2);}})[_0xa89b('0x34')](function(_0x1c6ee3){if(_0x1c6ee3){return _0x1c6ee3?{'count':_0x592aca,'rows':_0x1c6ee3}:null;}})[_0xa89b('0x34')](respondWithResult(_0x53c9e8,null))['catch'](handleError(_0x53c9e8,null));};exports['getMessages']=function(_0x241bf6,_0x229114,_0x3af430){var _0x3fab3f={'raw':!![],'where':{}};var _0x42ac24={};var _0xaab886={'count':0x0,'rows':[]};return db['MailAccount'][_0xa89b('0x6e')]({'where':{'id':_0x241bf6['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x229114,null))[_0xa89b('0x34')](function(_0x2a471c){if(_0x2a471c){_0x42ac24[_0xa89b('0x46')]=_['keys'](db[_0xa89b('0x9f')][_0xa89b('0x42')]);_0x42ac24[_0xa89b('0x48')]=_['keys'](_0x241bf6[_0xa89b('0x48')]);_0x42ac24[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x42ac24['model'],_0x42ac24[_0xa89b('0x48')]);_0x3fab3f['attributes']=_['intersection'](_0x42ac24['model'],qs[_0xa89b('0x4b')](_0x241bf6['query'][_0xa89b('0x4b')]));_0x3fab3f[_0xa89b('0x4a')]=_0x3fab3f[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x3fab3f[_0xa89b('0x4a')]:_0x42ac24[_0xa89b('0x46')];if(!_0x241bf6[_0xa89b('0x48')]['hasOwnProperty'](_0xa89b('0x4e'))){_0x3fab3f[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x241bf6[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x3fab3f[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0x241bf6[_0xa89b('0x48')][_0xa89b('0x2d')]);}_0x3fab3f['order']=qs[_0xa89b('0x51')](_0x241bf6[_0xa89b('0x48')]['sort']);_0x3fab3f[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_['pick'](_0x241bf6[_0xa89b('0x48')],_0x42ac24[_0xa89b('0x54')]));_0x3fab3f[_0xa89b('0x52')][_0xa89b('0x66')]=_0x2a471c['id'];if(_0x241bf6[_0xa89b('0x48')][_0xa89b('0x55')]){_0x3fab3f[_0xa89b('0x52')]=_[_0xa89b('0x57')](_0x3fab3f[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0x3fab3f[_0xa89b('0x4a')],function(_0x4a87fc){var _0x20d5fd={};_0x20d5fd[_0x4a87fc]={'$like':'%'+_0x241bf6[_0xa89b('0x48')][_0xa89b('0x55')]+'%'};return _0x20d5fd;})});}if(_0x241bf6['query'][_0xa89b('0xa0')]){var _0x3e25f4=_0x241bf6[_0xa89b('0x48')][_0xa89b('0xa0')][_0xa89b('0xa1')](',');var _0x11497e={};_0x11497e[_0x3e25f4[0x0]]={'$gte':moment(_0x3e25f4[0x1])[_0xa89b('0xa2')](_0xa89b('0xa3'))};_0x3fab3f['where']=_['merge'](_0x3fab3f[_0xa89b('0x52')],_0x11497e);}_0x3fab3f=_[_0xa89b('0x57')]({},_0x3fab3f,_0x241bf6[_0xa89b('0x58')]);return db['MailMessage']['count']({'where':_0x3fab3f['where']})[_0xa89b('0x34')](function(_0x41b207){_0xaab886['count']=_0x41b207;if(_0x241bf6[_0xa89b('0x48')]['includeAll']){_0x3fab3f[_0xa89b('0x5b')]=[{'all':!![]}];}return db[_0xa89b('0x9f')]['findAll'](_0x3fab3f);})[_0xa89b('0x34')](function(_0x2b9ece){if(_0x241bf6['query'][_0xa89b('0xa4')]===_0xa89b('0xa5')){for(var _0x1f154f=0x0;_0x1f154f<_0x2b9ece[_0xa89b('0x4c')];_0x1f154f++){_0x2b9ece[_0x1f154f][_0xa89b('0x62')]=juice(_0x2b9ece[_0x1f154f][_0xa89b('0x62')]);}}_0xaab886[_0xa89b('0x5d')]=_0x2b9ece;return _0xaab886;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x229114,_0x3fab3f))[_0xa89b('0x2a')](handleError(_0x229114,null));};exports['send']=function(_0x3147b6,_0x33bee2,_0x30dfca){var _0x955722,_0x29a37a={},_0x8aa45a;if(_0x3147b6['body']['to']){_0x8aa45a=_0x3147b6[_0xa89b('0x62')]['to'][_0xa89b('0xa1')](',')[0x0];}return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x3147b6[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0xa6')],'as':'List','include':[{'model':db[_0xa89b('0x92')],'as':_0xa89b('0xa7'),'where':{'email':_0x8aa45a},'limit':0x1,'order':[['updatedAt',_0xa89b('0xa8')]]}]},{'model':db[_0xa89b('0x3f')],'as':_0xa89b('0x63'),'raw':!![]}]})[_0xa89b('0x34')](handleEntityNotFound(_0x33bee2,null))['then'](function(_0x295b01){if(_0x295b01){_0x955722=_0x295b01;if(_0x295b01[_0xa89b('0x63')]){if(_[_0xa89b('0x74')](_0x3147b6[_0xa89b('0x62')][_0xa89b('0xa9')])){_0x3147b6[_0xa89b('0x62')][_0xa89b('0xa9')]=util[_0xa89b('0xa2')](_0xa89b('0xaa'),_0x295b01['name'],_0x295b01['email']||_0x295b01[_0xa89b('0x63')]['user']);}if(_0x3147b6[_0xa89b('0x62')]['attachments']&&_0x3147b6['body']['attachments']['length']){for(var _0x69cda5=0x0;_0x69cda5<_0x3147b6[_0xa89b('0x62')][_0xa89b('0xab')][_0xa89b('0x4c')];_0x69cda5+=0x1){_0x3147b6['body'][_0xa89b('0xab')][_0x69cda5]={'filename':_0x3147b6[_0xa89b('0x62')][_0xa89b('0xab')][_0x69cda5][_0xa89b('0x3a')],'path':path[_0xa89b('0xac')](config[_0xa89b('0xad')],_0xa89b('0xae'),_0x3147b6['body']['attachments'][_0x69cda5][_0xa89b('0xaf')])};}}var _0x321cd4={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x295b01['Smtp']['service'])){if(_0x295b01[_0xa89b('0x63')]['authentication']){_0x321cd4[_0xa89b('0xb0')]={'user':_0x295b01[_0xa89b('0x63')][_0xa89b('0x77')],'pass':_0x295b01[_0xa89b('0x63')][_0xa89b('0x7a')]};}_0x321cd4[_0xa89b('0x7d')]=_0x295b01[_0xa89b('0x63')][_0xa89b('0x7d')];_0x321cd4[_0xa89b('0x7e')]=_0x295b01[_0xa89b('0x63')][_0xa89b('0x7e')];_0x321cd4[_0xa89b('0xb1')]=_0x295b01['Smtp'][_0xa89b('0xb1')];}else{_0x321cd4[_0xa89b('0x7f')]=_0x295b01['Smtp'][_0xa89b('0x7f')];_0x321cd4[_0xa89b('0xb0')]={'user':_0x295b01[_0xa89b('0x63')][_0xa89b('0x77')],'pass':_0x295b01[_0xa89b('0x63')][_0xa89b('0x7a')]};}return respondWithRpcPromise(_0xa89b('0xb2'),_0xa89b('0xb3'),{'account':_0x321cd4,'message':_0x3147b6[_0xa89b('0x62')]});}else{throw new Error(_0xa89b('0xb4'));}}})[_0xa89b('0x34')](function(_0x1f5e2e){if(_0x1f5e2e){_0x29a37a=_0x1f5e2e;if(_0x955722['List']){if(_0x955722[_0xa89b('0xb5')][_0xa89b('0xa7')][_0xa89b('0x4c')]){return _0x955722[_0xa89b('0xb5')][_0xa89b('0xa7')][0x0];}else{return db[_0xa89b('0x92')][_0xa89b('0x67')](_[_0xa89b('0xb6')](_0x3147b6[_0xa89b('0x62')],{'firstName':_0x3147b6[_0xa89b('0x62')]['to'],'email':_0x3147b6[_0xa89b('0x62')]['to'],'phone':_0x3147b6[_0xa89b('0x62')]['to'],'ListId':_0x955722[_0xa89b('0x71')]}));}}else{throw new Error(_0xa89b('0xb4'));}}})[_0xa89b('0x34')](function(_0x4315ed){if(_0x4315ed){var _0x3281bb={'UserId':_0x3147b6['user']['id'],'ContactId':_0x4315ed['id'],'MailAccountId':_0x955722['id'],'inReplyTo':_0x29a37a['messageId'],'to':_0x3147b6[_0xa89b('0x62')][_0xa89b('0xa9')],'cc':_0x3147b6[_0xa89b('0x62')]['cc'],'subject':_0x3147b6[_0xa89b('0x62')]['subject'],'attach':_0x3147b6[_0xa89b('0x62')]['attach'],'firstMsgDirection':_0xa89b('0xb7'),'lastMsgAt':moment()[_0xa89b('0xa2')](_0xa89b('0xa3')),'lastMsgDirection':'out','Messages':[_[_0xa89b('0x57')](_0x3147b6[_0xa89b('0x62')],{'messageId':_0x29a37a['messageId'],'sentAt':moment()['format'](_0xa89b('0xa3')),'read':!![],'MailAccountId':_0x955722['id'],'UserId':_0x3147b6['user']['id'],'ContactId':_0x4315ed['id']})]};if(_0x3147b6['body'][_0xa89b('0xb8')]){_0x3281bb=_[_0xa89b('0x57')](_0x3281bb,_0x3147b6[_0xa89b('0x62')][_0xa89b('0xb8')]);}return db['MailInteraction'][_0xa89b('0x67')](_0x3281bb,{'include':[{'model':db[_0xa89b('0x9f')],'as':'Messages'}]});}})[_0xa89b('0x34')](respondWithResult(_0x33bee2,null))[_0xa89b('0x2a')](handleError(_0x33bee2,null));};exports[_0xa89b('0xb9')]=function(_0x49b921,_0x1cd702,_0x3a6d0c){return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x49b921[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0x3f')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x1cd702,null))[_0xa89b('0x34')](function(_0x48dc7e){if(_0x48dc7e&&_0x48dc7e[_0xa89b('0x63')]){var _0x2c46ae={'id':_0x48dc7e['id'],'tls':{'rejectUnauthorized':![]}};if(_0x48dc7e['Smtp'][_0xa89b('0x7f')]){_0x2c46ae[_0xa89b('0x7f')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7f')];}else{_0x2c46ae[_0xa89b('0x7d')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7d')];_0x2c46ae[_0xa89b('0x7e')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7e')];_0x2c46ae[_0xa89b('0xb1')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0xb1')];}if(_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7c')]){_0x2c46ae[_0xa89b('0xb0')]={'user':_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x77')],'pass':_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7a')]};}return respondWithRpcPromise(_0xa89b('0xba'),_0xa89b('0xb9'),{'account':_0x2c46ae});}})['then'](respondWithResult(_0x1cd702,null))['catch'](handleError(_0x1cd702,null));};exports['destroy']=function(_0xf2e3bf,_0x48bf44){return db['MailAccount'][_0xa89b('0x61')]({'where':{'id':_0xf2e3bf[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x48bf44,null))['then'](function(_0x3072e2){if(_0x3072e2&&_0x3072e2[_0xa89b('0x7f')]){throw new db[(_0xa89b('0xbb'))][(_0xa89b('0xbc'))](_0xa89b('0xbd'));}return _0x3072e2;})[_0xa89b('0x34')](removeEntity(_0x48bf44,null))[_0xa89b('0x2a')](handleError(_0x48bf44,null));};exports[_0xa89b('0xbe')]=function(_0x5c50e4,_0x4802ee,_0x4069e0){return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x5c50e4[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x4802ee,null))['then'](function(_0x14f569){if(_0x14f569){return _0x14f569[_0xa89b('0xbe')](_0x5c50e4[_0xa89b('0x62')][_0xa89b('0x6f')],_[_0xa89b('0x90')](_0x5c50e4[_0xa89b('0x62')],[_0xa89b('0x6f'),'id'])||{})[_0xa89b('0xbf')](function(_0x7b0daa){for(var _0x5ea2c7=0x0;_0x5ea2c7<_0x5c50e4[_0xa89b('0x62')][_0xa89b('0x6f')][_0xa89b('0x4c')];_0x5ea2c7+=0x1){socket[_0xa89b('0xc0')](_0xa89b('0xc1'),{'UserId':Number(_0x5c50e4[_0xa89b('0x62')][_0xa89b('0x6f')][_0x5ea2c7]),'MailAccountId':Number(_0x5c50e4[_0xa89b('0x5f')]['id'])});}return _0x7b0daa;});}})['then'](respondWithResult(_0x4802ee,null))['catch'](handleError(_0x4802ee,null));};exports[_0xa89b('0xc2')]=function(_0x88c520,_0xa3db14,_0x14fcf7){return db[_0xa89b('0x59')]['find']({'where':{'id':_0x88c520[_0xa89b('0x5f')]['id']}})['then'](handleEntityNotFound(_0xa3db14,null))[_0xa89b('0x34')](function(_0x4d148d){if(_0x4d148d){return _0x4d148d[_0xa89b('0xc2')](_0x88c520[_0xa89b('0x48')][_0xa89b('0x6f')])['then'](function(){if(_['isArray'](_0x88c520[_0xa89b('0x48')]['ids'])){for(var _0x9afdc3=0x0;_0x9afdc3<_0x88c520[_0xa89b('0x48')][_0xa89b('0x6f')][_0xa89b('0x4c')];_0x9afdc3+=0x1){socket[_0xa89b('0xc0')]('userMailAccount:remove',{'UserId':Number(_0x88c520[_0xa89b('0x48')]['ids'][_0x9afdc3]),'MailAccountId':Number(_0x88c520[_0xa89b('0x5f')]['id'])});}}else{socket[_0xa89b('0xc0')](_0xa89b('0xc3'),{'UserId':Number(_0x88c520['query'][_0xa89b('0x6f')]),'MailAccountId':Number(_0x88c520[_0xa89b('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0xa3db14,null))[_0xa89b('0x2a')](handleError(_0xa3db14,null));};exports[_0xa89b('0xc4')]=function(_0x331cf6,_0x1696c7,_0x36498a){var _0x2d8977={};var _0x1f0228={};var _0xc5e8c7;var _0x163b76;return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x331cf6[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x1696c7,null))[_0xa89b('0x34')](function(_0x3afc1f){if(_0x3afc1f){_0xc5e8c7=_0x3afc1f;_0x1f0228[_0xa89b('0x46')]=_['keys'](db[_0xa89b('0x94')][_0xa89b('0x42')]);_0x1f0228[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0x331cf6[_0xa89b('0x48')]);_0x1f0228['filters']=_[_0xa89b('0x49')](_0x1f0228['model'],_0x1f0228[_0xa89b('0x48')]);_0x2d8977['attributes']=_['intersection'](_0x1f0228[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x331cf6[_0xa89b('0x48')]['fields']));_0x2d8977[_0xa89b('0x4a')]=_0x2d8977[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x2d8977['attributes']:_0x1f0228[_0xa89b('0x46')];_0x2d8977[_0xa89b('0x50')]=qs[_0xa89b('0x51')](_0x331cf6[_0xa89b('0x48')][_0xa89b('0x51')]);_0x2d8977[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_['pick'](_0x331cf6[_0xa89b('0x48')],_0x1f0228['filters']));if(_0x331cf6[_0xa89b('0x48')]['filter']){_0x2d8977['where']=_[_0xa89b('0x57')](_0x2d8977[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0x2d8977[_0xa89b('0x4a')],function(_0x42ec8c){var _0x8cd946={};_0x8cd946[_0x42ec8c]={'$like':'%'+_0x331cf6['query']['filter']+'%'};return _0x8cd946;})});}_0x2d8977=_[_0xa89b('0x57')]({},_0x2d8977,_0x331cf6[_0xa89b('0x58')]);return _0xc5e8c7['getAgents'](_0x2d8977);}})[_0xa89b('0x34')](function(_0x319af1){if(_0x319af1){_0x163b76=_0x319af1[_0xa89b('0x4c')];if(!_0x331cf6[_0xa89b('0x48')]['hasOwnProperty'](_0xa89b('0x4e'))){_0x2d8977[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x331cf6[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x2d8977[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0x331cf6[_0xa89b('0x48')][_0xa89b('0x2d')]);}return _0xc5e8c7[_0xa89b('0xc4')](_0x2d8977);}})['then'](function(_0x222926){if(_0x222926){return _0x222926?{'count':_0x163b76,'rows':_0x222926}:null;}})[_0xa89b('0x34')](respondWithResult(_0x1696c7,null))[_0xa89b('0x2a')](handleError(_0x1696c7,null));};
\ No newline at end of file
+var _0xeb7c=['SendMail','sendMail','List\x20not\x20found','messageId','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code','message','MailAccount,\x20%s,\x20%s','result','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','get','UserProfileResource','sendStatus','stack','name','send','index','MailServerIn','Imap','MailServerOut','Pause','mandatoryDispositionPause','MailAccount','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','find','body','Smtp','describe','addDisposition','MailAccountId','create','findOne','Disposition','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','pick','removeAnswers','email','ListId','isNil','active','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','getSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','User','fullname','internal','Tags','tag','addApplications','sequelize','transaction','MailApplication','getApplications','getMessages','MailMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','CmContact','Contacts','updatedAt','from','format','%s\x20<%s>','attachments','join','server/files/attachments','basename','auth','secure'];(function(_0x1a0c59,_0x3b4dcc){var _0xed67c9=function(_0x247698){while(--_0x247698){_0x1a0c59['push'](_0x1a0c59['shift']());}};_0xed67c9(++_0x3b4dcc);}(_0xeb7c,0xd2));var _0xceb7=function(_0x3a216e,_0x3c5c51){_0x3a216e=_0x3a216e-0x0;var _0x30fa1a=_0xeb7c[_0x3a216e];return _0x30fa1a;};'use strict';var emlformat=require(_0xceb7('0x0'));var rimraf=require(_0xceb7('0x1'));var zipdir=require(_0xceb7('0x2'));var jsonpatch=require(_0xceb7('0x3'));var rp=require('request-promise');var moment=require(_0xceb7('0x4'));var BPromise=require(_0xceb7('0x5'));var Mustache=require(_0xceb7('0x6'));var util=require(_0xceb7('0x7'));var path=require(_0xceb7('0x8'));var sox=require('sox');var csv=require(_0xceb7('0x9'));var ejs=require(_0xceb7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xceb7('0xb'));var jsforce=require(_0xceb7('0xc'));var deskjs=require(_0xceb7('0xd'));var toCsv=require('to-csv');var querystring=require(_0xceb7('0xe'));var Papa=require(_0xceb7('0xf'));var htmlToText=require(_0xceb7('0x10'));var juice=require(_0xceb7('0x11'));var Redis=require(_0xceb7('0x12'));var authService=require(_0xceb7('0x13'));var qs=require(_0xceb7('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xceb7('0x15'));var logger=require(_0xceb7('0x16'))(_0xceb7('0x17'));var utils=require(_0xceb7('0x18'));var config=require(_0xceb7('0x19'));var licenseUtil=require(_0xceb7('0x1a'));var db=require(_0xceb7('0x1b'))['db'];config[_0xceb7('0x1c')]=_[_0xceb7('0x1d')](config[_0xceb7('0x1c')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xceb7('0x1c')]));require(_0xceb7('0x1e'))[_0xceb7('0x1f')](socket);var jayson=require(_0xceb7('0x20'));var client=jayson[_0xceb7('0x21')][_0xceb7('0x22')]({'port':0x232b});function respondWithRpcPromise(_0x8e370d,_0x47a75d,_0x399989,_0xefd7fc){return new BPromise(function(_0x3e3e5d,_0xdd577f){var _0x4b3ce0=_0xefd7fc||client;return _0x4b3ce0[_0xceb7('0x23')](_0x8e370d,_0x399989)[_0xceb7('0x24')](function(_0x33210e){logger[_0xceb7('0x25')]('MailAccount,\x20%s,\x20%s',_0x47a75d,_0xceb7('0x26'));logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x47a75d,'request\x20sent',JSON[_0xceb7('0x27')](_0x33210e));if(_0x33210e[_0xceb7('0x28')]){if(_0x33210e['error'][_0xceb7('0x29')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x47a75d,_0x33210e[_0xceb7('0x28')][_0xceb7('0x2a')]);return _0xdd577f(_0x33210e[_0xceb7('0x28')]['message']);}logger[_0xceb7('0x28')](_0xceb7('0x2b'),_0x47a75d,_0x33210e[_0xceb7('0x28')]['message']);return _0x3e3e5d(_0x33210e[_0xceb7('0x28')]['message']);}else{logger['info'](_0xceb7('0x2b'),_0x47a75d,_0xceb7('0x26'));_0x3e3e5d(_0x33210e[_0xceb7('0x2c')][_0xceb7('0x2a')]);}})['catch'](function(_0x12bb55){logger['error'](_0xceb7('0x2b'),_0x47a75d,_0x12bb55);_0xdd577f(_0x12bb55);});});}function respondWithStatusCode(_0x521a8c,_0x376728){_0x376728=_0x376728||0xcc;return function(_0x340f21){if(_0x340f21){return _0x521a8c['sendStatus'](_0x376728);}return _0x521a8c[_0xceb7('0x2d')](_0x376728)[_0xceb7('0x2e')]();};}function respondWithResult(_0x5d814d,_0x206f70){_0x206f70=_0x206f70||0xc8;return function(_0xc58e37){if(_0xc58e37){return _0x5d814d[_0xceb7('0x2d')](_0x206f70)[_0xceb7('0x2f')](_0xc58e37);}};}function respondWithFilteredResult(_0x5914e2,_0x2016bc){return function(_0x7a0747){if(_0x7a0747){var _0x540045=typeof _0x2016bc[_0xceb7('0x30')]==='undefined'&&typeof _0x2016bc[_0xceb7('0x31')]===_0xceb7('0x32');var _0x23765a=_0x7a0747['count'];var _0x6c6aaf=_0x540045?0x0:_0x2016bc['offset'];var _0x147f44=_0x540045?_0x7a0747[_0xceb7('0x33')]:_0x2016bc[_0xceb7('0x30')]+_0x2016bc[_0xceb7('0x31')];var _0x41438a;if(_0x147f44>=_0x23765a){_0x147f44=_0x23765a;_0x41438a=0xc8;}else{_0x41438a=0xce;}_0x5914e2[_0xceb7('0x2d')](_0x41438a);return _0x5914e2[_0xceb7('0x34')]('Content-Range',_0x6c6aaf+'-'+_0x147f44+'/'+_0x23765a)['json'](_0x7a0747);}return null;};}function patchUpdates(_0x1b4dbe){return function(_0x58fd27){try{jsonpatch[_0xceb7('0x35')](_0x58fd27,_0x1b4dbe,!![]);}catch(_0x3ee114){return BPromise[_0xceb7('0x36')](_0x3ee114);}return _0x58fd27[_0xceb7('0x37')]();};}function saveUpdates(_0x4f1952,_0x5d9001){return function(_0x1a27c8){if(_0x1a27c8){return _0x1a27c8[_0xceb7('0x38')](_0x4f1952)[_0xceb7('0x24')](function(_0x5b0f77){return _0x5b0f77;});}return null;};}function removeEntity(_0x222c09,_0x2a78f3){return function(_0x1a8684){if(_0x1a8684){return _0x1a8684[_0xceb7('0x39')]()[_0xceb7('0x24')](function(){var _0x10f64e=_0x1a8684[_0xceb7('0x3a')]({'plain':!![]});var _0x3e9643='MailAccounts';return db[_0xceb7('0x3b')]['destroy']({'where':{'type':_0x3e9643,'resourceId':_0x10f64e['id']}})[_0xceb7('0x24')](function(){return _0x1a8684;});})[_0xceb7('0x24')](function(){_0x222c09['status'](0xcc)[_0xceb7('0x2e')]();});}};}function handleEntityNotFound(_0xa36f1,_0x3c02cd){return function(_0x310743){if(!_0x310743){_0xa36f1[_0xceb7('0x3c')](0x194);}return _0x310743;};}function handleError(_0xb1b517,_0x691a51){_0x691a51=_0x691a51||0x1f4;return function(_0x1284d1){logger[_0xceb7('0x28')](_0x1284d1[_0xceb7('0x3d')]);if(_0x1284d1['name']){delete _0x1284d1[_0xceb7('0x3e')];}_0xb1b517[_0xceb7('0x2d')](_0x691a51)[_0xceb7('0x3f')](_0x1284d1);};}exports[_0xceb7('0x40')]=function(_0x2a2302,_0xa1dc94){var _0x526b05={'include':[{'model':db[_0xceb7('0x41')],'as':_0xceb7('0x42')},{'model':db[_0xceb7('0x43')],'as':'Smtp'},{'model':db[_0xceb7('0x44')],'as':_0xceb7('0x45')}]},_0x406901={},_0x31d58e={'count':0x0,'rows':[]};var _0x170889=_['map'](db[_0xceb7('0x46')][_0xceb7('0x47')],function(_0x533395){return{'name':_0x533395[_0xceb7('0x48')],'type':_0x533395[_0xceb7('0x49')][_0xceb7('0x4a')]};});_0x406901['model']=_[_0xceb7('0x4b')](_0x170889,_0xceb7('0x3e'));_0x406901[_0xceb7('0x4c')]=_[_0xceb7('0x4d')](_0x2a2302[_0xceb7('0x4c')]);_0x406901[_0xceb7('0x4e')]=_[_0xceb7('0x4f')](_0x406901['model'],_0x406901['query']);_0x526b05[_0xceb7('0x50')]=_[_0xceb7('0x4f')](_0x406901[_0xceb7('0x51')],qs[_0xceb7('0x52')](_0x2a2302[_0xceb7('0x4c')][_0xceb7('0x52')]));_0x526b05['attributes']=_0x526b05[_0xceb7('0x50')][_0xceb7('0x53')]?_0x526b05[_0xceb7('0x50')]:_0x406901['model'];if(!_0x2a2302[_0xceb7('0x4c')][_0xceb7('0x54')](_0xceb7('0x55'))){_0x526b05['limit']=qs[_0xceb7('0x31')](_0x2a2302['query'][_0xceb7('0x31')]);_0x526b05['offset']=qs[_0xceb7('0x30')](_0x2a2302[_0xceb7('0x4c')][_0xceb7('0x30')]);}_0x526b05[_0xceb7('0x56')]=qs[_0xceb7('0x57')](_0x2a2302[_0xceb7('0x4c')][_0xceb7('0x57')]);_0x526b05[_0xceb7('0x58')]=qs[_0xceb7('0x4e')](_['pick'](_0x2a2302[_0xceb7('0x4c')],_0x406901[_0xceb7('0x4e')]),_0x170889);if(_0x2a2302[_0xceb7('0x4c')][_0xceb7('0x59')]){_0x526b05[_0xceb7('0x58')]=_[_0xceb7('0x5a')](_0x526b05['where'],{'$or':_[_0xceb7('0x4b')](_0x170889,function(_0x5307f4){if(_0x5307f4[_0xceb7('0x49')]!==_0xceb7('0x5b')){var _0x5ddedd={};_0x5ddedd[_0x5307f4[_0xceb7('0x3e')]]={'$like':'%'+_0x2a2302['query'][_0xceb7('0x59')]+'%'};return _0x5ddedd;}})});}_0x526b05=_['merge']({},_0x526b05,_0x2a2302['options']);var _0x17edc7={'where':_0x526b05[_0xceb7('0x58')]};return db[_0xceb7('0x46')][_0xceb7('0x33')](_0x17edc7)[_0xceb7('0x24')](function(_0x59aecf){_0x31d58e[_0xceb7('0x33')]=_0x59aecf;if(_0x2a2302[_0xceb7('0x4c')]['includeAll']){_0x526b05[_0xceb7('0x5c')]=[{'all':!![]}];}return db[_0xceb7('0x46')][_0xceb7('0x5d')](_0x526b05);})[_0xceb7('0x24')](function(_0x1cf666){_0x31d58e[_0xceb7('0x5e')]=_0x1cf666;return _0x31d58e;})[_0xceb7('0x24')](respondWithFilteredResult(_0xa1dc94,_0x526b05))[_0xceb7('0x5f')](handleError(_0xa1dc94,null));};exports[_0xceb7('0x60')]=function(_0x1ff8c3,_0x54ebb1){var _0x527387={'raw':![],'where':{'id':_0x1ff8c3[_0xceb7('0x61')]['id']},'include':[{'model':db[_0xceb7('0x41')],'as':_0xceb7('0x42')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x595160={};_0x595160[_0xceb7('0x51')]=_['keys'](db[_0xceb7('0x46')][_0xceb7('0x47')]);_0x595160['query']=_['keys'](_0x1ff8c3['query']);_0x595160[_0xceb7('0x4e')]=_[_0xceb7('0x4f')](_0x595160[_0xceb7('0x51')],_0x595160[_0xceb7('0x4c')]);_0x527387['attributes']=_[_0xceb7('0x4f')](_0x595160[_0xceb7('0x51')],qs['fields'](_0x1ff8c3[_0xceb7('0x4c')][_0xceb7('0x52')]));_0x527387[_0xceb7('0x50')]=_0x527387[_0xceb7('0x50')][_0xceb7('0x53')]?_0x527387[_0xceb7('0x50')]:_0x595160[_0xceb7('0x51')];if(_0x1ff8c3['query'][_0xceb7('0x62')]){_0x527387[_0xceb7('0x5c')]=[{'all':!![]}];}_0x527387=_[_0xceb7('0x5a')]({},_0x527387,_0x1ff8c3['options']);return db['MailAccount'][_0xceb7('0x63')](_0x527387)['then'](handleEntityNotFound(_0x54ebb1,null))[_0xceb7('0x24')](respondWithResult(_0x54ebb1,null))[_0xceb7('0x5f')](handleError(_0x54ebb1,null));};exports[_0xceb7('0x38')]=function(_0x57ec7c,_0x57fbd6){if(_0x57ec7c[_0xceb7('0x64')]['id']){delete _0x57ec7c[_0xceb7('0x64')]['id'];}return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x57ec7c['params']['id']},'include':[{'model':db[_0xceb7('0x41')],'as':_0xceb7('0x42')},{'model':db[_0xceb7('0x43')],'as':_0xceb7('0x65')},{'model':db[_0xceb7('0x44')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x57fbd6,null))[_0xceb7('0x24')](saveUpdates(_0x57ec7c[_0xceb7('0x64')],null))[_0xceb7('0x24')](function(_0x1cf937){if(_0x1cf937&&_0x57ec7c[_0xceb7('0x64')][_0xceb7('0x42')]){return db[_0xceb7('0x41')]['update'](_0x57ec7c[_0xceb7('0x64')][_0xceb7('0x42')],{'where':{'MailAccountId':_0x1cf937['id']}})[_0xceb7('0x24')](function(){return _0x1cf937;});}return _0x1cf937;})[_0xceb7('0x24')](function(_0x496c8e){if(_0x496c8e&&_0x57ec7c[_0xceb7('0x64')][_0xceb7('0x65')]){return db[_0xceb7('0x43')]['update'](_0x57ec7c[_0xceb7('0x64')]['Smtp'],{'where':{'MailAccountId':_0x496c8e['id']}})['then'](function(){return _0x496c8e;});}return _0x496c8e;})[_0xceb7('0x24')](respondWithResult(_0x57fbd6,null))[_0xceb7('0x5f')](handleError(_0x57fbd6,null));};exports[_0xceb7('0x66')]=function(_0x59251e,_0x5b0257){return db['MailAccount'][_0xceb7('0x66')]()[_0xceb7('0x24')](respondWithResult(_0x5b0257,null))[_0xceb7('0x5f')](handleError(_0x5b0257,null));};exports[_0xceb7('0x67')]=function(_0x3b8b42,_0x4466e6,_0x469001){if(_0x3b8b42[_0xceb7('0x64')]['id']){delete _0x3b8b42[_0xceb7('0x64')]['id'];}return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x3b8b42[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x4466e6,null))[_0xceb7('0x24')](function(_0x1aa0ab){if(_0x1aa0ab){_0x3b8b42[_0xceb7('0x64')][_0xceb7('0x68')]=_0x1aa0ab['id'];return db['Disposition'][_0xceb7('0x69')](_0x3b8b42[_0xceb7('0x64')]);}})[_0xceb7('0x24')](respondWithResult(_0x4466e6,null))[_0xceb7('0x5f')](handleError(_0x4466e6,null));};exports['getDispositions']=function(_0xbf0706,_0x431680,_0x277607){var _0xeb36ac={'raw':![],'where':{}};var _0x39eee7={};var _0x2c5400={'count':0x0,'rows':[]};return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0xbf0706[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x431680,null))['then'](function(_0x55d400){if(_0x55d400){_0x39eee7[_0xceb7('0x51')]=_['keys'](db[_0xceb7('0x6b')][_0xceb7('0x47')]);_0x39eee7[_0xceb7('0x4c')]=_[_0xceb7('0x4d')](_0xbf0706[_0xceb7('0x4c')]);_0x39eee7[_0xceb7('0x4e')]=_[_0xceb7('0x4f')](_0x39eee7[_0xceb7('0x51')],_0x39eee7[_0xceb7('0x4c')]);_0xeb36ac[_0xceb7('0x50')]=_[_0xceb7('0x4f')](_0x39eee7[_0xceb7('0x51')],qs[_0xceb7('0x52')](_0xbf0706['query'][_0xceb7('0x52')]));_0xeb36ac[_0xceb7('0x50')]=_0xeb36ac[_0xceb7('0x50')][_0xceb7('0x53')]?_0xeb36ac['attributes']:_0x39eee7['model'];if(!_0xbf0706[_0xceb7('0x4c')]['hasOwnProperty'](_0xceb7('0x55'))){_0xeb36ac[_0xceb7('0x31')]=qs[_0xceb7('0x31')](_0xbf0706['query']['limit']);_0xeb36ac[_0xceb7('0x30')]=qs['offset'](_0xbf0706[_0xceb7('0x4c')][_0xceb7('0x30')]);}_0xeb36ac[_0xceb7('0x56')]=qs['sort'](_0xbf0706[_0xceb7('0x4c')][_0xceb7('0x57')]);_0xeb36ac['where']=qs[_0xceb7('0x4e')](_['pick'](_0xbf0706[_0xceb7('0x4c')],_0x39eee7[_0xceb7('0x4e')]));_0xeb36ac[_0xceb7('0x58')][_0xceb7('0x68')]=_0x55d400['id'];if(_0xbf0706[_0xceb7('0x4c')]['filter']){_0xeb36ac[_0xceb7('0x58')]=_[_0xceb7('0x5a')](_0xeb36ac[_0xceb7('0x58')],{'$or':_['map'](_0xeb36ac[_0xceb7('0x50')],function(_0x3b60ff){var _0x490883={};_0x490883[_0x3b60ff]={'$like':'%'+_0xbf0706['query']['filter']+'%'};return _0x490883;})});}_0xeb36ac=_[_0xceb7('0x5a')]({},_0xeb36ac,_0xbf0706[_0xceb7('0x6c')]);return db['Disposition'][_0xceb7('0x33')]({'where':_0xeb36ac[_0xceb7('0x58')]})[_0xceb7('0x24')](function(_0x1a9430){_0x2c5400[_0xceb7('0x33')]=_0x1a9430;if(_0xbf0706[_0xceb7('0x4c')][_0xceb7('0x62')]){_0xeb36ac[_0xceb7('0x5c')]=[{'all':!![]}];}return db[_0xceb7('0x6b')][_0xceb7('0x5d')](_0xeb36ac);})[_0xceb7('0x24')](function(_0x52db38){_0x2c5400[_0xceb7('0x5e')]=_0x52db38;return _0x2c5400;});}})[_0xceb7('0x24')](respondWithFilteredResult(_0x431680,_0xeb36ac))[_0xceb7('0x5f')](handleError(_0x431680,null));};exports['removeDispositions']=function(_0x1dc182,_0x47198e,_0x3f377c){return db['MailAccount'][_0xceb7('0x63')]({'where':{'id':_0x1dc182[_0xceb7('0x61')]['id']}})['then'](handleEntityNotFound(_0x47198e,null))['then'](function(_0x1c3eaf){if(_0x1c3eaf){return _0x1c3eaf[_0xceb7('0x6d')](_0x1dc182['query'][_0xceb7('0x6e')]);}})[_0xceb7('0x24')](respondWithStatusCode(_0x47198e,null))[_0xceb7('0x5f')](handleError(_0x47198e,null));};exports[_0xceb7('0x6f')]=function(_0x3c71f8,_0x28a518,_0x367aff){if(_0x3c71f8[_0xceb7('0x64')]['id']){delete _0x3c71f8[_0xceb7('0x64')]['id'];}return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x3c71f8[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x28a518,null))['then'](function(_0x3ce970){if(_0x3ce970){_0x3c71f8[_0xceb7('0x64')][_0xceb7('0x68')]=_0x3ce970['id'];return db[_0xceb7('0x70')][_0xceb7('0x69')](_0x3c71f8[_0xceb7('0x64')]);}})[_0xceb7('0x24')](respondWithResult(_0x28a518,null))[_0xceb7('0x5f')](handleError(_0x28a518,null));};exports[_0xceb7('0x71')]=function(_0x3023f9,_0x124cfc,_0x41d23b){var _0x484e32={'raw':![],'where':{}};var _0x4876cb={};var _0x35bdaa={'count':0x0,'rows':[]};return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0x3023f9['params']['id']}})['then'](handleEntityNotFound(_0x124cfc,null))[_0xceb7('0x24')](function(_0x48f013){if(_0x48f013){_0x4876cb[_0xceb7('0x51')]=_[_0xceb7('0x4d')](db[_0xceb7('0x70')][_0xceb7('0x47')]);_0x4876cb['query']=_[_0xceb7('0x4d')](_0x3023f9[_0xceb7('0x4c')]);_0x4876cb['filters']=_[_0xceb7('0x4f')](_0x4876cb[_0xceb7('0x51')],_0x4876cb['query']);_0x484e32[_0xceb7('0x50')]=_[_0xceb7('0x4f')](_0x4876cb[_0xceb7('0x51')],qs[_0xceb7('0x52')](_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x52')]));_0x484e32[_0xceb7('0x50')]=_0x484e32['attributes'][_0xceb7('0x53')]?_0x484e32[_0xceb7('0x50')]:_0x4876cb[_0xceb7('0x51')];if(!_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x54')](_0xceb7('0x55'))){_0x484e32['limit']=qs['limit'](_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x31')]);_0x484e32[_0xceb7('0x30')]=qs['offset'](_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x30')]);}_0x484e32['order']=qs[_0xceb7('0x57')](_0x3023f9['query']['sort']);_0x484e32['where']=qs[_0xceb7('0x4e')](_[_0xceb7('0x72')](_0x3023f9[_0xceb7('0x4c')],_0x4876cb[_0xceb7('0x4e')]));_0x484e32[_0xceb7('0x58')][_0xceb7('0x68')]=_0x48f013['id'];if(_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x59')]){_0x484e32[_0xceb7('0x58')]=_['merge'](_0x484e32[_0xceb7('0x58')],{'$or':_['map'](_0x484e32[_0xceb7('0x50')],function(_0x3c210d){var _0x1df9a7={};_0x1df9a7[_0x3c210d]={'$like':'%'+_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x59')]+'%'};return _0x1df9a7;})});}_0x484e32=_[_0xceb7('0x5a')]({},_0x484e32,_0x3023f9[_0xceb7('0x6c')]);return db[_0xceb7('0x70')][_0xceb7('0x33')]({'where':_0x484e32[_0xceb7('0x58')]})[_0xceb7('0x24')](function(_0x19f7bd){_0x35bdaa[_0xceb7('0x33')]=_0x19f7bd;if(_0x3023f9[_0xceb7('0x4c')][_0xceb7('0x62')]){_0x484e32['include']=[{'all':!![]}];}return db[_0xceb7('0x70')][_0xceb7('0x5d')](_0x484e32);})['then'](function(_0x2e8cb6){_0x35bdaa[_0xceb7('0x5e')]=_0x2e8cb6;return _0x35bdaa;});}})[_0xceb7('0x24')](respondWithFilteredResult(_0x124cfc,_0x484e32))[_0xceb7('0x5f')](handleError(_0x124cfc,null));};exports[_0xceb7('0x73')]=function(_0x46d46f,_0x44b7ef,_0x395aed){return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x46d46f[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x44b7ef,null))[_0xceb7('0x24')](function(_0x4f5a32){if(_0x4f5a32){return _0x4f5a32[_0xceb7('0x73')](_0x46d46f['query'][_0xceb7('0x6e')]);}})[_0xceb7('0x24')](respondWithStatusCode(_0x44b7ef,null))[_0xceb7('0x5f')](handleError(_0x44b7ef,null));};exports[_0xceb7('0x69')]=function(_0x529b5f,_0x5bf48f){var _0x118bf0={'name':_0x529b5f['body'][_0xceb7('0x3e')],'key':_0x529b5f[_0xceb7('0x64')]['key'],'email':_0x529b5f[_0xceb7('0x64')][_0xceb7('0x74')],'ListId':_0x529b5f['body'][_0xceb7('0x75')],'active':!_[_0xceb7('0x76')](_0x529b5f[_0xceb7('0x64')]['active'])?_0x529b5f[_0xceb7('0x64')][_0xceb7('0x77')]:!![],'description':_0x529b5f[_0xceb7('0x64')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0xceb7('0x76')](_0x529b5f['body'][_0xceb7('0x78')])){if(_0x529b5f[_0xceb7('0x64')][_0xceb7('0x79')]){_0x118bf0[_0xceb7('0x42')][_0xceb7('0x7a')]=_0x118bf0[_0xceb7('0x65')][_0xceb7('0x7a')]=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x7b')];_0x118bf0[_0xceb7('0x42')][_0xceb7('0x7c')]=_0x118bf0[_0xceb7('0x65')][_0xceb7('0x7d')]=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x7e')];}else{_0x118bf0['Imap']['authentication']=_0x118bf0[_0xceb7('0x65')][_0xceb7('0x7f')]=![];}_0x118bf0[_0xceb7('0x42')]['host']=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x42')]['host'];_0x118bf0[_0xceb7('0x42')]['port']=_0x529b5f[_0xceb7('0x64')]['Imap']['port'];_0x118bf0['Smtp'][_0xceb7('0x80')]=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x65')][_0xceb7('0x80')];_0x118bf0[_0xceb7('0x65')]['port']=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x65')][_0xceb7('0x81')];}else{_0x118bf0['Imap'][_0xceb7('0x82')]=_0x118bf0[_0xceb7('0x65')][_0xceb7('0x82')]=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x78')];_0x118bf0[_0xceb7('0x42')][_0xceb7('0x7a')]=_0x118bf0[_0xceb7('0x65')]['user']=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x7b')];_0x118bf0[_0xceb7('0x42')][_0xceb7('0x7c')]=_0x118bf0['Smtp'][_0xceb7('0x7d')]=_0x529b5f[_0xceb7('0x64')][_0xceb7('0x7e')];}return db[_0xceb7('0x46')][_0xceb7('0x69')](_0x118bf0,{'include':[{'model':db[_0xceb7('0x43')],'as':_0xceb7('0x65')},{'model':db[_0xceb7('0x41')],'as':_0xceb7('0x42')}]})[_0xceb7('0x24')](function(_0x307817){var _0x55c688=_0x529b5f['user'][_0xceb7('0x3a')]({'plain':!![]});if(!_0x55c688)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55c688['role']===_0xceb7('0x7a')){var _0x3f76d6=_0x307817['get']({'plain':!![]});return db[_0xceb7('0x83')][_0xceb7('0x63')]({'where':{'name':'MailAccounts','userProfileId':_0x55c688[_0xceb7('0x84')]},'raw':!![]})[_0xceb7('0x24')](function(_0x46f499){if(_0x46f499&&_0x46f499['autoAssociation']===0x0){return db[_0xceb7('0x3b')][_0xceb7('0x69')]({'name':_0x3f76d6[_0xceb7('0x3e')],'resourceId':_0x3f76d6['id'],'type':_0x46f499['name'],'sectionId':_0x46f499['id']},{})['then'](function(){return _0x307817;});}else{return _0x307817;}})[_0xceb7('0x5f')](function(_0x43f0ed){logger[_0xceb7('0x28')](_0xceb7('0x85'),_0x43f0ed);throw _0x43f0ed;});}return _0x307817;})['then'](respondWithResult(_0x5bf48f,0xc9))[_0xceb7('0x5f')](handleError(_0x5bf48f,null));};exports[_0xceb7('0x86')]=function(_0x1d40d0,_0x31d4ff,_0x2c30d8){return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0x1d40d0['params']['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x31d4ff,null))[_0xceb7('0x24')](function(_0x3315bd){if(_0x3315bd){return _0x3315bd[_0xceb7('0x86')]();}return null;})[_0xceb7('0x24')](respondWithResult(_0x31d4ff,null))[_0xceb7('0x5f')](handleError(_0x31d4ff,null));};exports[_0xceb7('0x87')]=function(_0x473211,_0x27ee73,_0x5eb79e){if(_0x473211[_0xceb7('0x64')]['id']){delete _0x473211[_0xceb7('0x64')]['id'];}return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x473211[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x27ee73,null))[_0xceb7('0x24')](function(_0x566b10){if(_0x566b10){_0x473211[_0xceb7('0x64')]['MailAccountId']=_0x566b10['id'];return db[_0xceb7('0x41')]['create'](_0x473211[_0xceb7('0x64')]);}})[_0xceb7('0x24')](respondWithResult(_0x27ee73,null))['catch'](handleError(_0x27ee73,null));};exports['removeImap']=function(_0x59f634,_0x4f4f2d,_0x306c7a){return db['MailAccount'][_0xceb7('0x6a')]({'where':{'id':_0x59f634[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x4f4f2d,null))['then'](function(_0x211a23){if(_0x211a23){return _0x211a23['setImap'](null);}return null;})[_0xceb7('0x24')](respondWithStatusCode(_0x4f4f2d,null))[_0xceb7('0x5f')](handleError(_0x4f4f2d,null));};exports[_0xceb7('0x88')]=function(_0x5df8d6,_0x28e7b7,_0x2d8ee9){return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0x5df8d6[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x28e7b7,null))[_0xceb7('0x24')](function(_0x3e79be){if(_0x3e79be){return _0x3e79be[_0xceb7('0x88')]();}return null;})[_0xceb7('0x24')](respondWithResult(_0x28e7b7,null))['catch'](handleError(_0x28e7b7,null));};exports['addSmtp']=function(_0x154e65,_0x22f866,_0xaa9b3e){if(_0x154e65[_0xceb7('0x64')]['id']){delete _0x154e65['body']['id'];}return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x154e65[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x22f866,null))[_0xceb7('0x24')](function(_0x16700d){if(_0x16700d){_0x154e65[_0xceb7('0x64')]['MailAccountId']=_0x16700d['id'];return db[_0xceb7('0x43')][_0xceb7('0x69')](_0x154e65[_0xceb7('0x64')]);}})[_0xceb7('0x24')](respondWithResult(_0x22f866,null))[_0xceb7('0x5f')](handleError(_0x22f866,null));};exports['removeSmtp']=function(_0x286d5d,_0x517eb3,_0x1716cb){return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0x286d5d[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x517eb3,null))[_0xceb7('0x24')](function(_0xa3af36){if(_0xa3af36){return _0xa3af36[_0xceb7('0x89')](null);}return null;})[_0xceb7('0x24')](respondWithStatusCode(_0x517eb3,null))[_0xceb7('0x5f')](handleError(_0x517eb3,null));};exports[_0xceb7('0x8a')]=function(_0x106736,_0x5239c7,_0x168917){return db[_0xceb7('0x8b')]['find']({'where':{'id':_0x106736[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x5239c7,null))[_0xceb7('0x24')](function(_0x424f15){if(_0x424f15){return _0x424f15[_0xceb7('0x8a')](_0x106736[_0xceb7('0x64')][_0xceb7('0x6e')],_[_0xceb7('0x8c')](_0x106736['body'],[_0xceb7('0x6e'),'id'])||{});}})[_0xceb7('0x24')](respondWithResult(_0x5239c7,null))[_0xceb7('0x5f')](handleError(_0x5239c7,null));};exports[_0xceb7('0x8d')]=function(_0x37a6a3,_0x176b30,_0x507f5e){var _0x7022f={'raw':![],'where':{}};var _0xb7f50e={};var _0x364d92={'count':0x0,'rows':[]};return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0x37a6a3[_0xceb7('0x61')]['id']}})['then'](handleEntityNotFound(_0x176b30,null))[_0xceb7('0x24')](function(_0x3c2b15){if(_0x3c2b15){_0xb7f50e['model']=_[_0xceb7('0x4d')](db[_0xceb7('0x8b')]['rawAttributes']);_0xb7f50e[_0xceb7('0x4c')]=_[_0xceb7('0x4d')](_0x37a6a3[_0xceb7('0x4c')]);_0xb7f50e[_0xceb7('0x4e')]=_[_0xceb7('0x4f')](_0xb7f50e['model'],_0xb7f50e['query']);_0x7022f['attributes']=_[_0xceb7('0x4f')](_0xb7f50e[_0xceb7('0x51')],qs[_0xceb7('0x52')](_0x37a6a3[_0xceb7('0x4c')][_0xceb7('0x52')]));_0x7022f[_0xceb7('0x50')]=_0x7022f[_0xceb7('0x50')][_0xceb7('0x53')]?_0x7022f['attributes']:_0xb7f50e[_0xceb7('0x51')];if(!_0x37a6a3[_0xceb7('0x4c')][_0xceb7('0x54')](_0xceb7('0x55'))){_0x7022f[_0xceb7('0x31')]=qs[_0xceb7('0x31')](_0x37a6a3['query']['limit']);_0x7022f[_0xceb7('0x30')]=qs['offset'](_0x37a6a3[_0xceb7('0x4c')][_0xceb7('0x30')]);}_0x7022f[_0xceb7('0x56')]=qs[_0xceb7('0x57')](_0x37a6a3['query'][_0xceb7('0x57')]);_0x7022f[_0xceb7('0x58')]=qs[_0xceb7('0x4e')](_[_0xceb7('0x72')](_0x37a6a3[_0xceb7('0x4c')],_0xb7f50e['filters']));_0x7022f[_0xceb7('0x58')][_0xceb7('0x68')]=_0x3c2b15['id'];if(_0x37a6a3['query']['filter']){_0x7022f['where']=_[_0xceb7('0x5a')](_0x7022f[_0xceb7('0x58')],{'$or':_[_0xceb7('0x4b')](_0x7022f[_0xceb7('0x50')],function(_0x4a0a9b){var _0x2e6e6b={};_0x2e6e6b[_0x4a0a9b]={'$like':'%'+_0x37a6a3['query'][_0xceb7('0x59')]+'%'};return _0x2e6e6b;})});}_0x7022f=_['merge']({},_0x7022f,_0x37a6a3['options']);return db[_0xceb7('0x8b')][_0xceb7('0x33')]({'where':_0x7022f['where']})['then'](function(_0x3f0677){_0x364d92['count']=_0x3f0677;if(_0x37a6a3['query'][_0xceb7('0x62')]){_0x7022f[_0xceb7('0x5c')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xceb7('0x8e')],'as':'Owner','attributes':['name',_0xceb7('0x8f'),_0xceb7('0x90')],'required':![]},{'model':db['Tag'],'as':_0xceb7('0x91'),'attributes':['id',_0xceb7('0x3e'),'color'],'where':_0x37a6a3[_0xceb7('0x4c')][_0xceb7('0x92')]?{'id':_0x37a6a3[_0xceb7('0x4c')][_0xceb7('0x92')]}:undefined,'required':_0x37a6a3[_0xceb7('0x4c')][_0xceb7('0x92')]?!![]:![]}];}return db['MailInteraction'][_0xceb7('0x5d')](_0x7022f);})['then'](function(_0x3e94fb){_0x364d92['rows']=_0x3e94fb;return _0x364d92;});}})[_0xceb7('0x24')](respondWithFilteredResult(_0x176b30,_0x7022f))[_0xceb7('0x5f')](handleError(_0x176b30,null));};exports[_0xceb7('0x93')]=function(_0x151f86,_0x460c36,_0x970c1f){return db[_0xceb7('0x46')][_0xceb7('0x6a')]({'where':{'id':_0x151f86['params']['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x460c36,null))[_0xceb7('0x24')](function(_0x1092fa){if(_0x1092fa){return db[_0xceb7('0x94')][_0xceb7('0x95')](function(_0x4a5b98){return db[_0xceb7('0x96')]['destroy']({'where':{'MailAccountId':_0x151f86[_0xceb7('0x61')]['id']},'transaction':_0x4a5b98})[_0xceb7('0x24')](function(_0xb3f890){var _0x4b54f1=_[_0xceb7('0x4b')](_0x151f86[_0xceb7('0x64')],function(_0x40da11){_0x40da11[_0xceb7('0x68')]=_0x151f86[_0xceb7('0x61')]['id'];return _0x40da11;});return db[_0xceb7('0x96')]['bulkCreate'](_0x4b54f1,{'transaction':_0x4a5b98});});})[_0xceb7('0x24')](function(){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x151f86[_0xceb7('0x61')]['id']},'order':'priority'});});}})[_0xceb7('0x24')](respondWithResult(_0x460c36,null))[_0xceb7('0x5f')](handleError(_0x460c36,null));};exports[_0xceb7('0x97')]=function(_0x15d855,_0x2bab92,_0x3779c6){var _0x533b8c={};var _0x580e90={};var _0x105f99;var _0x368af1;return db['MailAccount'][_0xceb7('0x6a')]({'where':{'id':_0x15d855['params']['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x2bab92,null))[_0xceb7('0x24')](function(_0x4b6034){if(_0x4b6034){_0x105f99=_0x4b6034;_0x580e90['model']=_['keys'](db[_0xceb7('0x96')][_0xceb7('0x47')]);_0x580e90[_0xceb7('0x4c')]=_['keys'](_0x15d855[_0xceb7('0x4c')]);_0x580e90[_0xceb7('0x4e')]=_['intersection'](_0x580e90[_0xceb7('0x51')],_0x580e90['query']);_0x533b8c[_0xceb7('0x50')]=_[_0xceb7('0x4f')](_0x580e90[_0xceb7('0x51')],qs['fields'](_0x15d855['query']['fields']));_0x533b8c[_0xceb7('0x50')]=_0x533b8c[_0xceb7('0x50')][_0xceb7('0x53')]?_0x533b8c[_0xceb7('0x50')]:_0x580e90['model'];_0x533b8c['order']=qs[_0xceb7('0x57')](_0x15d855[_0xceb7('0x4c')][_0xceb7('0x57')]);_0x533b8c[_0xceb7('0x58')]=qs[_0xceb7('0x4e')](_[_0xceb7('0x72')](_0x15d855[_0xceb7('0x4c')],_0x580e90[_0xceb7('0x4e')]));if(_0x15d855[_0xceb7('0x4c')]['filter']){_0x533b8c[_0xceb7('0x58')]=_[_0xceb7('0x5a')](_0x533b8c['where'],{'$or':_['map'](_0x533b8c[_0xceb7('0x50')],function(_0x5c21e7){var _0x506e77={};_0x506e77[_0x5c21e7]={'$like':'%'+_0x15d855[_0xceb7('0x4c')][_0xceb7('0x59')]+'%'};return _0x506e77;})});}_0x533b8c=_[_0xceb7('0x5a')]({},_0x533b8c,_0x15d855[_0xceb7('0x6c')]);return _0x105f99['getApplications'](_0x533b8c);}})[_0xceb7('0x24')](function(_0x5aa56a){if(_0x5aa56a){_0x368af1=_0x5aa56a[_0xceb7('0x53')];if(!_0x15d855[_0xceb7('0x4c')][_0xceb7('0x54')](_0xceb7('0x55'))){_0x533b8c['limit']=qs[_0xceb7('0x31')](_0x15d855[_0xceb7('0x4c')][_0xceb7('0x31')]);_0x533b8c[_0xceb7('0x30')]=qs[_0xceb7('0x30')](_0x15d855[_0xceb7('0x4c')][_0xceb7('0x30')]);}return _0x105f99['getApplications'](_0x533b8c);}})[_0xceb7('0x24')](function(_0x44f474){if(_0x44f474){return _0x44f474?{'count':_0x368af1,'rows':_0x44f474}:null;}})[_0xceb7('0x24')](respondWithResult(_0x2bab92,null))['catch'](handleError(_0x2bab92,null));};exports[_0xceb7('0x98')]=function(_0x54c027,_0x3fc554,_0x32d0db){var _0x2fb0f0={'raw':!![],'where':{}};var _0x3d5354={};var _0x23f4ac={'count':0x0,'rows':[]};return db[_0xceb7('0x46')]['findOne']({'where':{'id':_0x54c027[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x3fc554,null))[_0xceb7('0x24')](function(_0x395f86){if(_0x395f86){_0x3d5354[_0xceb7('0x51')]=_[_0xceb7('0x4d')](db[_0xceb7('0x99')][_0xceb7('0x47')]);_0x3d5354[_0xceb7('0x4c')]=_['keys'](_0x54c027[_0xceb7('0x4c')]);_0x3d5354[_0xceb7('0x4e')]=_[_0xceb7('0x4f')](_0x3d5354[_0xceb7('0x51')],_0x3d5354[_0xceb7('0x4c')]);_0x2fb0f0['attributes']=_[_0xceb7('0x4f')](_0x3d5354['model'],qs[_0xceb7('0x52')](_0x54c027[_0xceb7('0x4c')]['fields']));_0x2fb0f0['attributes']=_0x2fb0f0['attributes'][_0xceb7('0x53')]?_0x2fb0f0[_0xceb7('0x50')]:_0x3d5354[_0xceb7('0x51')];if(!_0x54c027[_0xceb7('0x4c')][_0xceb7('0x54')]('nolimit')){_0x2fb0f0[_0xceb7('0x31')]=qs[_0xceb7('0x31')](_0x54c027[_0xceb7('0x4c')][_0xceb7('0x31')]);_0x2fb0f0[_0xceb7('0x30')]=qs['offset'](_0x54c027[_0xceb7('0x4c')][_0xceb7('0x30')]);}_0x2fb0f0['order']=qs[_0xceb7('0x57')](_0x54c027[_0xceb7('0x4c')][_0xceb7('0x57')]);_0x2fb0f0[_0xceb7('0x58')]=qs[_0xceb7('0x4e')](_['pick'](_0x54c027['query'],_0x3d5354[_0xceb7('0x4e')]));_0x2fb0f0[_0xceb7('0x58')][_0xceb7('0x68')]=_0x395f86['id'];if(_0x54c027['query'][_0xceb7('0x59')]){_0x2fb0f0[_0xceb7('0x58')]=_['merge'](_0x2fb0f0['where'],{'$or':_[_0xceb7('0x4b')](_0x2fb0f0[_0xceb7('0x50')],function(_0x5de7a3){var _0x5377ad={};_0x5377ad[_0x5de7a3]={'$like':'%'+_0x54c027[_0xceb7('0x4c')][_0xceb7('0x59')]+'%'};return _0x5377ad;})});}if(_0x54c027[_0xceb7('0x4c')][_0xceb7('0x9a')]){var _0x51535e=_0x54c027[_0xceb7('0x4c')][_0xceb7('0x9a')]['split'](',');var _0x37ab94={};_0x37ab94[_0x51535e[0x0]]={'$gte':moment(_0x51535e[0x1])['format'](_0xceb7('0x9b'))};_0x2fb0f0[_0xceb7('0x58')]=_[_0xceb7('0x5a')](_0x2fb0f0['where'],_0x37ab94);}_0x2fb0f0=_[_0xceb7('0x5a')]({},_0x2fb0f0,_0x54c027[_0xceb7('0x6c')]);return db[_0xceb7('0x99')][_0xceb7('0x33')]({'where':_0x2fb0f0[_0xceb7('0x58')]})[_0xceb7('0x24')](function(_0x181ff3){_0x23f4ac['count']=_0x181ff3;if(_0x54c027[_0xceb7('0x4c')][_0xceb7('0x62')]){_0x2fb0f0[_0xceb7('0x5c')]=[{'all':!![]}];}return db[_0xceb7('0x99')][_0xceb7('0x5d')](_0x2fb0f0);})['then'](function(_0x40007c){if(_0x54c027[_0xceb7('0x4c')][_0xceb7('0x9c')]===_0xceb7('0x9d')){for(var _0xae49a1=0x0;_0xae49a1<_0x40007c[_0xceb7('0x53')];_0xae49a1++){_0x40007c[_0xae49a1][_0xceb7('0x64')]=juice(_0x40007c[_0xae49a1][_0xceb7('0x64')]);}}_0x23f4ac[_0xceb7('0x5e')]=_0x40007c;return _0x23f4ac;});}})[_0xceb7('0x24')](respondWithFilteredResult(_0x3fc554,_0x2fb0f0))['catch'](handleError(_0x3fc554,null));};exports[_0xceb7('0x3f')]=function(_0x44452d,_0x457e7d,_0x376f02){var _0x1b7b99,_0x300863={},_0x137295;if(_0x44452d[_0xceb7('0x64')]['to']){_0x137295=_0x44452d[_0xceb7('0x64')]['to']['split'](',')[0x0];}return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x44452d[_0xceb7('0x61')]['id']},'include':[{'model':db[_0xceb7('0x9e')],'as':_0xceb7('0x9f'),'include':[{'model':db[_0xceb7('0xa0')],'as':_0xceb7('0xa1'),'where':{'email':_0x137295},'limit':0x1,'order':[[_0xceb7('0xa2'),'DESC']]}]},{'model':db[_0xceb7('0x43')],'as':_0xceb7('0x65'),'raw':!![]}]})['then'](handleEntityNotFound(_0x457e7d,null))[_0xceb7('0x24')](function(_0x8ffb40){if(_0x8ffb40){_0x1b7b99=_0x8ffb40;if(_0x8ffb40[_0xceb7('0x65')]){if(_[_0xceb7('0x76')](_0x44452d['body'][_0xceb7('0xa3')])){_0x44452d[_0xceb7('0x64')][_0xceb7('0xa3')]=util[_0xceb7('0xa4')](_0xceb7('0xa5'),_0x8ffb40['name'],_0x8ffb40[_0xceb7('0x74')]||_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x7a')]);}if(_0x44452d[_0xceb7('0x64')][_0xceb7('0xa6')]&&_0x44452d['body'][_0xceb7('0xa6')][_0xceb7('0x53')]){for(var _0x18137c=0x0;_0x18137c<_0x44452d[_0xceb7('0x64')]['attachments']['length'];_0x18137c+=0x1){_0x44452d['body'][_0xceb7('0xa6')][_0x18137c]={'filename':_0x44452d[_0xceb7('0x64')][_0xceb7('0xa6')][_0x18137c][_0xceb7('0x3e')],'path':path[_0xceb7('0xa7')](config['root'],_0xceb7('0xa8'),_0x44452d[_0xceb7('0x64')]['attachments'][_0x18137c][_0xceb7('0xa9')])};}}var _0x52d755={'tls':{'rejectUnauthorized':![]}};if(_[_0xceb7('0x76')](_0x8ffb40[_0xceb7('0x65')]['service'])){if(_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x7f')]){_0x52d755[_0xceb7('0xaa')]={'user':_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x7a')],'pass':_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x7d')]};}_0x52d755[_0xceb7('0x80')]=_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x80')];_0x52d755[_0xceb7('0x81')]=_0x8ffb40['Smtp']['port'];_0x52d755[_0xceb7('0xab')]=_0x8ffb40[_0xceb7('0x65')]['secure'];}else{_0x52d755[_0xceb7('0x82')]=_0x8ffb40['Smtp'][_0xceb7('0x82')];_0x52d755[_0xceb7('0xaa')]={'user':_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x7a')],'pass':_0x8ffb40[_0xceb7('0x65')][_0xceb7('0x7d')]};}return respondWithRpcPromise(_0xceb7('0xac'),_0xceb7('0xad'),{'account':_0x52d755,'message':_0x44452d[_0xceb7('0x64')]});}else{throw new Error(_0xceb7('0xae'));}}})[_0xceb7('0x24')](function(_0x3b8ca4){if(_0x3b8ca4){_0x300863=_0x3b8ca4;if(_0x1b7b99['List']){if(_0x1b7b99[_0xceb7('0x9f')][_0xceb7('0xa1')][_0xceb7('0x53')]){return _0x1b7b99[_0xceb7('0x9f')][_0xceb7('0xa1')][0x0];}else{return db[_0xceb7('0xa0')][_0xceb7('0x69')](_[_0xceb7('0x1d')](_0x44452d['body'],{'firstName':_0x44452d[_0xceb7('0x64')]['to'],'email':_0x44452d['body']['to'],'phone':_0x44452d[_0xceb7('0x64')]['to'],'ListId':_0x1b7b99[_0xceb7('0x75')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0xceb7('0x24')](function(_0x26179e){if(_0x26179e){var _0x4f6d91={'UserId':_0x44452d[_0xceb7('0x7a')]['id'],'ContactId':_0x26179e['id'],'MailAccountId':_0x1b7b99['id'],'inReplyTo':_0x300863[_0xceb7('0xaf')],'to':_0x44452d[_0xceb7('0x64')][_0xceb7('0xa3')],'cc':_0x44452d[_0xceb7('0x64')]['cc'],'subject':_0x44452d[_0xceb7('0x64')]['subject'],'attach':_0x44452d[_0xceb7('0x64')]['attach'],'firstMsgDirection':'out','lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xceb7('0xb0'),'Messages':[_[_0xceb7('0x5a')](_0x44452d[_0xceb7('0x64')],{'messageId':_0x300863[_0xceb7('0xaf')],'sentAt':moment()['format'](_0xceb7('0x9b')),'read':!![],'MailAccountId':_0x1b7b99['id'],'UserId':_0x44452d[_0xceb7('0x7a')]['id'],'ContactId':_0x26179e['id']})]};if(_0x44452d[_0xceb7('0x64')][_0xceb7('0xb1')]){_0x4f6d91=_['merge'](_0x4f6d91,_0x44452d[_0xceb7('0x64')][_0xceb7('0xb1')]);}return db['MailInteraction'][_0xceb7('0x69')](_0x4f6d91,{'include':[{'model':db[_0xceb7('0x99')],'as':_0xceb7('0xb2')}]});}})[_0xceb7('0x24')](respondWithResult(_0x457e7d,null))['catch'](handleError(_0x457e7d,null));};exports[_0xceb7('0xb3')]=function(_0x25ecf1,_0x15dc9d,_0x57b8fb){return db['MailAccount']['find']({'where':{'id':_0x25ecf1['params']['id']},'include':[{'model':db[_0xceb7('0x43')],'as':_0xceb7('0x65'),'raw':!![]}]})[_0xceb7('0x24')](handleEntityNotFound(_0x15dc9d,null))[_0xceb7('0x24')](function(_0x104678){if(_0x104678&&_0x104678['Smtp']){var _0x117400={'id':_0x104678['id'],'tls':{'rejectUnauthorized':![]}};if(_0x104678['Smtp'][_0xceb7('0x82')]){_0x117400[_0xceb7('0x82')]=_0x104678[_0xceb7('0x65')][_0xceb7('0x82')];}else{_0x117400[_0xceb7('0x80')]=_0x104678[_0xceb7('0x65')]['host'];_0x117400[_0xceb7('0x81')]=_0x104678['Smtp'][_0xceb7('0x81')];_0x117400[_0xceb7('0xab')]=_0x104678['Smtp'][_0xceb7('0xab')];}if(_0x104678[_0xceb7('0x65')][_0xceb7('0x7f')]){_0x117400[_0xceb7('0xaa')]={'user':_0x104678[_0xceb7('0x65')][_0xceb7('0x7a')],'pass':_0x104678[_0xceb7('0x65')][_0xceb7('0x7d')]};}return respondWithRpcPromise(_0xceb7('0xb4'),'verifySmtp',{'account':_0x117400});}})['then'](respondWithResult(_0x15dc9d,null))[_0xceb7('0x5f')](handleError(_0x15dc9d,null));};exports[_0xceb7('0x39')]=function(_0x3918ce,_0x5dcd47){return db[_0xceb7('0x46')][_0xceb7('0x63')]({'where':{'id':_0x3918ce[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x5dcd47,null))[_0xceb7('0x24')](function(_0x582603){if(_0x582603&&_0x582603[_0xceb7('0x82')]){throw new db[(_0xceb7('0xb5'))][(_0xceb7('0xb6'))](_0xceb7('0xb7'));}return _0x582603;})[_0xceb7('0x24')](removeEntity(_0x5dcd47,null))['catch'](handleError(_0x5dcd47,null));};exports['addAgents']=function(_0x487f8d,_0x56257f,_0x41f29d){return db[_0xceb7('0x46')]['find']({'where':{'id':_0x487f8d[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x56257f,null))[_0xceb7('0x24')](function(_0x367a19){if(_0x367a19){return _0x367a19['addAgents'](_0x487f8d[_0xceb7('0x64')][_0xceb7('0x6e')],_[_0xceb7('0x8c')](_0x487f8d[_0xceb7('0x64')],[_0xceb7('0x6e'),'id'])||{})[_0xceb7('0xb8')](function(_0x291ab9){for(var _0x57cded=0x0;_0x57cded<_0x487f8d[_0xceb7('0x64')]['ids'][_0xceb7('0x53')];_0x57cded+=0x1){socket[_0xceb7('0xb9')](_0xceb7('0xba'),{'UserId':Number(_0x487f8d[_0xceb7('0x64')][_0xceb7('0x6e')][_0x57cded]),'MailAccountId':Number(_0x487f8d[_0xceb7('0x61')]['id'])});}return _0x291ab9;});}})['then'](respondWithResult(_0x56257f,null))[_0xceb7('0x5f')](handleError(_0x56257f,null));};exports['removeAgents']=function(_0x3c112b,_0x593245,_0x5d84f7){return db['MailAccount'][_0xceb7('0x63')]({'where':{'id':_0x3c112b['params']['id']}})['then'](handleEntityNotFound(_0x593245,null))[_0xceb7('0x24')](function(_0x36bbfb){if(_0x36bbfb){return _0x36bbfb[_0xceb7('0xbb')](_0x3c112b['query'][_0xceb7('0x6e')])[_0xceb7('0x24')](function(){if(_[_0xceb7('0xbc')](_0x3c112b['query'][_0xceb7('0x6e')])){for(var _0x1597d0=0x0;_0x1597d0<_0x3c112b[_0xceb7('0x4c')][_0xceb7('0x6e')][_0xceb7('0x53')];_0x1597d0+=0x1){socket[_0xceb7('0xb9')]('userMailAccount:remove',{'UserId':Number(_0x3c112b['query'][_0xceb7('0x6e')][_0x1597d0]),'MailAccountId':Number(_0x3c112b[_0xceb7('0x61')]['id'])});}}else{socket[_0xceb7('0xb9')](_0xceb7('0xbd'),{'UserId':Number(_0x3c112b[_0xceb7('0x4c')][_0xceb7('0x6e')]),'MailAccountId':Number(_0x3c112b[_0xceb7('0x61')]['id'])});}});}})['then'](respondWithStatusCode(_0x593245,null))[_0xceb7('0x5f')](handleError(_0x593245,null));};exports[_0xceb7('0xbe')]=function(_0x20c1ba,_0x58845a,_0x1d7109){var _0x1ffbc4={};var _0x2a45bf={};var _0x268798;var _0x2385b5;return db['MailAccount']['findOne']({'where':{'id':_0x20c1ba[_0xceb7('0x61')]['id']}})[_0xceb7('0x24')](handleEntityNotFound(_0x58845a,null))[_0xceb7('0x24')](function(_0x2d27d2){if(_0x2d27d2){_0x268798=_0x2d27d2;_0x2a45bf[_0xceb7('0x51')]=_[_0xceb7('0x4d')](db[_0xceb7('0x8e')][_0xceb7('0x47')]);_0x2a45bf[_0xceb7('0x4c')]=_[_0xceb7('0x4d')](_0x20c1ba[_0xceb7('0x4c')]);_0x2a45bf[_0xceb7('0x4e')]=_[_0xceb7('0x4f')](_0x2a45bf['model'],_0x2a45bf[_0xceb7('0x4c')]);_0x1ffbc4['attributes']=_[_0xceb7('0x4f')](_0x2a45bf[_0xceb7('0x51')],qs['fields'](_0x20c1ba['query']['fields']));_0x1ffbc4['attributes']=_0x1ffbc4[_0xceb7('0x50')]['length']?_0x1ffbc4[_0xceb7('0x50')]:_0x2a45bf[_0xceb7('0x51')];_0x1ffbc4[_0xceb7('0x56')]=qs[_0xceb7('0x57')](_0x20c1ba[_0xceb7('0x4c')][_0xceb7('0x57')]);_0x1ffbc4[_0xceb7('0x58')]=qs['filters'](_[_0xceb7('0x72')](_0x20c1ba[_0xceb7('0x4c')],_0x2a45bf[_0xceb7('0x4e')]));if(_0x20c1ba['query'][_0xceb7('0x59')]){_0x1ffbc4[_0xceb7('0x58')]=_[_0xceb7('0x5a')](_0x1ffbc4[_0xceb7('0x58')],{'$or':_[_0xceb7('0x4b')](_0x1ffbc4['attributes'],function(_0x5a057f){var _0x874a80={};_0x874a80[_0x5a057f]={'$like':'%'+_0x20c1ba[_0xceb7('0x4c')][_0xceb7('0x59')]+'%'};return _0x874a80;})});}_0x1ffbc4=_['merge']({},_0x1ffbc4,_0x20c1ba['options']);return _0x268798['getAgents'](_0x1ffbc4);}})[_0xceb7('0x24')](function(_0x2994f7){if(_0x2994f7){_0x2385b5=_0x2994f7['length'];if(!_0x20c1ba[_0xceb7('0x4c')][_0xceb7('0x54')]('nolimit')){_0x1ffbc4[_0xceb7('0x31')]=qs['limit'](_0x20c1ba[_0xceb7('0x4c')][_0xceb7('0x31')]);_0x1ffbc4[_0xceb7('0x30')]=qs[_0xceb7('0x30')](_0x20c1ba[_0xceb7('0x4c')][_0xceb7('0x30')]);}return _0x268798[_0xceb7('0xbe')](_0x1ffbc4);}})[_0xceb7('0x24')](function(_0x376cdc){if(_0x376cdc){return _0x376cdc?{'count':_0x2385b5,'rows':_0x376cdc}:null;}})[_0xceb7('0x24')](respondWithResult(_0x58845a,null))[_0xceb7('0x5f')](handleError(_0x58845a,null));};
\ No newline at end of file
index d8651ec..ca49fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2431=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x303bdb,_0x263efa){var _0x1ecc6c=function(_0x2d4b44){while(--_0x2d4b44){_0x303bdb['push'](_0x303bdb['shift']());}};_0x1ecc6c(++_0x263efa);}(_0x2431,0xc9));var _0x1243=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x2431[_0x4e676e];return _0x336a3c;};'use strict';var EventEmitter=require(_0x1243('0x0'));var MailAccount=require(_0x1243('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x1243('0x2')](0x0);var events={'afterCreate':_0x1243('0x3'),'afterUpdate':'update','afterDestroy':_0x1243('0x4')};function emitEvent(_0x309b51){return function(_0x3d5f6b,_0x1ce471,_0x4007fd){MailAccountEvents[_0x1243('0x5')](_0x309b51+':'+_0x3d5f6b['id'],_0x3d5f6b);MailAccountEvents[_0x1243('0x5')](_0x309b51,_0x3d5f6b);_0x4007fd(null);};}for(var e in events){if(events[_0x1243('0x6')](e)){var event=events[e];MailAccount[_0x1243('0x7')](e,emitEvent(event));}}module[_0x1243('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0xed5c=['remove','emit','exports','events','../../mysqldb','MailAccount','setMaxListeners','save','update'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0xed5c,0x81));var _0xced5=function(_0x574396,_0x1880bd){_0x574396=_0x574396-0x0;var _0x1fe696=_0xed5c[_0x574396];return _0x1fe696;};'use strict';var EventEmitter=require(_0xced5('0x0'));var MailAccount=require(_0xced5('0x1'))['db'][_0xced5('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xced5('0x3')](0x0);var events={'afterCreate':_0xced5('0x4'),'afterUpdate':_0xced5('0x5'),'afterDestroy':_0xced5('0x6')};function emitEvent(_0x395c27){return function(_0x2b8184,_0x2ec4f9,_0x583a62){MailAccountEvents[_0xced5('0x7')](_0x395c27+':'+_0x2b8184['id'],_0x2b8184);MailAccountEvents[_0xced5('0x7')](_0x395c27,_0x2b8184);_0x583a62(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0xced5('0x8')]=MailAccountEvents;
\ No newline at end of file
index e7fed91..f6e6378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc3=['MailAccount','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./mailAccount.attributes','exports','define'];(function(_0x43d96f,_0x2d28eb){var _0x1a1b4e=function(_0x35cf62){while(--_0x35cf62){_0x43d96f['push'](_0x43d96f['shift']());}};_0x1a1b4e(++_0x2d28eb);}(_0xbcc3,0x199));var _0x3bcc=function(_0x335e20,_0x3b998c){_0x335e20=_0x335e20-0x0;var _0x410b0f=_0xbcc3[_0x335e20];return _0x410b0f;};'use strict';var _=require(_0x3bcc('0x0'));var util=require(_0x3bcc('0x1'));var logger=require(_0x3bcc('0x2'))(_0x3bcc('0x3'));var moment=require(_0x3bcc('0x4'));var BPromise=require(_0x3bcc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3bcc('0x6'));var rimraf=require(_0x3bcc('0x7'));var config=require('../../config/environment');var attributes=require(_0x3bcc('0x8'));module[_0x3bcc('0x9')]=function(_0x28d83e,_0x1ee644){return _0x28d83e[_0x3bcc('0xa')](_0x3bcc('0xb'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6862=['moment','bluebird','path','rimraf','../../config/environment','./mailAccount.attributes','exports','define','mail_accounts','lodash','util','api'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6862,0x17d));var _0x2686=function(_0x1ddebc,_0x5b3b10){_0x1ddebc=_0x1ddebc-0x0;var _0x1092e3=_0x6862[_0x1ddebc];return _0x1092e3;};'use strict';var _=require(_0x2686('0x0'));var util=require(_0x2686('0x1'));var logger=require('../../config/logger')(_0x2686('0x2'));var moment=require(_0x2686('0x3'));var BPromise=require(_0x2686('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2686('0x5'));var rimraf=require(_0x2686('0x6'));var config=require(_0x2686('0x7'));var attributes=require(_0x2686('0x8'));module[_0x2686('0x9')]=function(_0x13f011,_0x20b6e6){return _0x13f011[_0x2686('0xa')]('MailAccount',attributes,{'tableName':_0x2686('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7330b86..a5e969a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcef6=['where','attributes','limit','map','include','model','GetMailAccount','catch','ShowMailAccount','find','raw','NotifyMailAccount','body','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','MailApplication','MailServerOut','get','account','Applications','applications','list','orderBy','priority','autoclose','push','length','close','*,*,*,*','Contacts','defaults','create','messageId','generate','subject','attach','format','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','YYYY-MM-DD\x20HH:mm:ss','interaction','created','MailMessage','contact','originTo','originCc','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','name','agent','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','MailAccount,\x20%s,\x20%s','message','info','result','MailAccount','options'];(function(_0xcf5436,_0x4632c3){var _0xc4f5c8=function(_0x567528){while(--_0x567528){_0xcf5436['push'](_0xcf5436['shift']());}};_0xc4f5c8(++_0x4632c3);}(_0xcef6,0x116));var _0x6cef=function(_0x3e3064,_0x3dd6f5){_0x3e3064=_0x3e3064-0x0;var _0x4547e1=_0xcef6[_0x3e3064];return _0x4547e1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6cef('0x0'));var BPromise=require(_0x6cef('0x1'));var rs=require(_0x6cef('0x2'));var fs=require('fs');var Redis=require(_0x6cef('0x3'));var db=require(_0x6cef('0x4'))['db'];var utils=require(_0x6cef('0x5'));var logger=require(_0x6cef('0x6'))(_0x6cef('0x7'));var config=require(_0x6cef('0x8'));var jayson=require(_0x6cef('0x9'));var client=jayson[_0x6cef('0xa')]['http']({'port':0x232c});config[_0x6cef('0xb')]=_['defaults'](config['redis'],{'host':_0x6cef('0xc'),'port':0x18eb});var socket=require(_0x6cef('0xd'))(new Redis(config[_0x6cef('0xb')]));require('./mailAccount.socket')[_0x6cef('0xe')](socket);function respondWithRpcPromise(_0x34812e,_0x3de115,_0x9d17d){return new BPromise(function(_0x4f110c,_0x195225){return client[_0x6cef('0xf')](_0x34812e,_0x9d17d)[_0x6cef('0x10')](function(_0x20b953){logger['info']('MailAccount,\x20%s,\x20%s',_0x3de115,'request\x20sent');logger[_0x6cef('0x11')](_0x6cef('0x12'),_0x3de115,_0x6cef('0x13'),JSON['stringify'](_0x20b953));if(_0x20b953[_0x6cef('0x14')]){if(_0x20b953[_0x6cef('0x14')][_0x6cef('0x15')]===0x1f4){logger['error'](_0x6cef('0x16'),_0x3de115,_0x20b953[_0x6cef('0x14')][_0x6cef('0x17')]);return _0x195225(_0x20b953[_0x6cef('0x14')][_0x6cef('0x17')]);}logger[_0x6cef('0x14')]('MailAccount,\x20%s,\x20%s',_0x3de115,_0x20b953['error'][_0x6cef('0x17')]);return _0x4f110c(_0x20b953[_0x6cef('0x14')][_0x6cef('0x17')]);}else{logger[_0x6cef('0x18')](_0x6cef('0x16'),_0x3de115,_0x6cef('0x13'));_0x4f110c(_0x20b953[_0x6cef('0x19')][_0x6cef('0x17')]);}})['catch'](function(_0x288cb6){logger[_0x6cef('0x14')](_0x6cef('0x16'),_0x3de115,_0x288cb6);_0x195225(_0x288cb6);});});}exports['GetMailAccount']=function(_0x3b6b04){var _0x267ca9=this;return new Promise(function(_0x78868a,_0x4e3cbc){return db[_0x6cef('0x1a')]['findAll']({'raw':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04[_0x6cef('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04['options'][_0x6cef('0x1c')]||null:null,'attributes':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04[_0x6cef('0x1b')][_0x6cef('0x1d')]||null:null,'limit':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04['options'][_0x6cef('0x1e')]||null:null,'include':_0x3b6b04['options']?_0x3b6b04['options']['include']?_[_0x6cef('0x1f')](_0x3b6b04[_0x6cef('0x1b')][_0x6cef('0x20')],function(_0x3e160b){return{'model':db[_0x3e160b['model']],'as':_0x3e160b['as'],'attributes':_0x3e160b['attributes'],'include':_0x3e160b['include']?_[_0x6cef('0x1f')](_0x3e160b[_0x6cef('0x20')],function(_0x5d31e6){return{'model':db[_0x5d31e6[_0x6cef('0x21')]],'as':_0x5d31e6['as'],'attributes':_0x5d31e6[_0x6cef('0x1d')],'include':_0x5d31e6[_0x6cef('0x20')]?_['map'](_0x5d31e6[_0x6cef('0x20')],function(_0x2552b4){return{'model':db[_0x2552b4[_0x6cef('0x21')]],'as':_0x2552b4['as'],'attributes':_0x2552b4[_0x6cef('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6cef('0x10')](function(_0x2f84d9){logger['info'](_0x6cef('0x22'),_0x3b6b04);logger[_0x6cef('0x11')](_0x6cef('0x22'),_0x3b6b04,JSON['stringify'](_0x2f84d9));_0x78868a(_0x2f84d9);})[_0x6cef('0x23')](function(_0x5819ff){logger[_0x6cef('0x14')](_0x6cef('0x22'),_0x5819ff[_0x6cef('0x17')],_0x3b6b04);_0x4e3cbc(_0x267ca9[_0x6cef('0x14')](0x1f4,_0x5819ff['message']));});});};exports[_0x6cef('0x24')]=function(_0x4b1335){var _0x5f3dd2=this;return new Promise(function(_0x10b3b0,_0x2a7568){return db[_0x6cef('0x1a')][_0x6cef('0x25')]({'raw':_0x4b1335[_0x6cef('0x1b')]?_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x26')]===undefined?!![]:![]:!![],'where':_0x4b1335[_0x6cef('0x1b')]?_0x4b1335['options'][_0x6cef('0x1c')]||null:null,'attributes':_0x4b1335['options']?_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x1d')]||null:null,'include':_0x4b1335[_0x6cef('0x1b')]?_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x20')]?_[_0x6cef('0x1f')](_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x20')],function(_0xdb97ef){return{'model':db[_0xdb97ef[_0x6cef('0x21')]],'as':_0xdb97ef['as'],'attributes':_0xdb97ef['attributes'],'include':_0xdb97ef[_0x6cef('0x20')]?_['map'](_0xdb97ef[_0x6cef('0x20')],function(_0x26e418){return{'model':db[_0x26e418[_0x6cef('0x21')]],'as':_0x26e418['as'],'attributes':_0x26e418[_0x6cef('0x1d')],'include':_0x26e418[_0x6cef('0x20')]?_[_0x6cef('0x1f')](_0x26e418[_0x6cef('0x20')],function(_0x2f7884){return{'model':db[_0x2f7884[_0x6cef('0x21')]],'as':_0x2f7884['as'],'attributes':_0x2f7884[_0x6cef('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6cef('0x10')](function(_0x3b333f){logger[_0x6cef('0x18')](_0x6cef('0x24'),_0x4b1335);logger[_0x6cef('0x11')]('ShowMailAccount',_0x4b1335,JSON['stringify'](_0x3b333f));_0x10b3b0(_0x3b333f);})[_0x6cef('0x23')](function(_0xeb2dca){logger[_0x6cef('0x14')](_0x6cef('0x24'),_0xeb2dca['message'],_0x4b1335);_0x2a7568(_0x5f3dd2[_0x6cef('0x14')](0x1f4,_0xeb2dca[_0x6cef('0x17')]));});});};exports[_0x6cef('0x27')]=function(_0x2cebc9){var _0x4100e8=this;return new Promise(function(_0x5222bd,_0x2bd018){var _0x2586fe={'body':_0x2cebc9[_0x6cef('0x28')],'channel':'mail'};var _0x4cf99a=_[_0x6cef('0x29')](_[_0x6cef('0x2a')](db[_0x6cef('0x2b')][_0x6cef('0x2c')]),[_0x6cef('0x2d'),_0x6cef('0x2e'),_0x6cef('0x2f'),'ListId']);var _0x181a1d=![];if(_0x2cebc9['body']['id']){delete _0x2cebc9['body']['id'];}if(_[_0x6cef('0x30')](_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x31')])){return _0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x6cef('0x32')));}if(_[_0x6cef('0x30')](_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x28')])||_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x28')]===''){return _0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x6cef('0x33')));}if(_[_0x6cef('0x30')](_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x34')])){return _0x2bd018(_0x4100e8['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4cf99a));}if(!_['includes'](_0x4cf99a,_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x34')])){return _0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x6cef('0x35')+_0x4cf99a));}var _0x348233={};_0x348233[_0x2cebc9['body'][_0x6cef('0x34')]]=_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x31')];return db['MailAccount']['find']({'where':{'id':_0x2cebc9['account']['id']},'include':[{'model':db['CmList'],'as':_0x6cef('0x36'),'include':[{'model':db[_0x6cef('0x2b')],'as':'Contacts','where':_0x348233,'limit':0x1,'order':[[_0x6cef('0x2e'),_0x6cef('0x37')]]}]},{'model':db[_0x6cef('0x38')],'as':'Applications'},{'model':db[_0x6cef('0x39')],'as':'Smtp'}]})[_0x6cef('0x10')](function(_0x37c3d7){if(_0x37c3d7&&_0x37c3d7[_0x6cef('0x36')]){var _0x18f4a=_0x37c3d7[_0x6cef('0x3a')]({'plain':!![]});_0x2586fe[_0x6cef('0x3b')]=_['omit'](_0x18f4a,[_0x6cef('0x3c'),_0x6cef('0x36')]);_0x2586fe[_0x6cef('0x3d')]=_0x18f4a[_0x6cef('0x3c')];_0x2586fe[_0x6cef('0x3e')]=_0x18f4a[_0x6cef('0x36')];_0x2586fe[_0x6cef('0x3d')]=_[_0x6cef('0x3f')](_0x2586fe[_0x6cef('0x3d')],[_0x6cef('0x40')],['asc']);if(_0x2586fe[_0x6cef('0x3b')]&&_0x2586fe[_0x6cef('0x3b')][_0x6cef('0x41')]){_0x2586fe['applications'][_0x6cef('0x42')]({'id':0x0,'priority':_0x2586fe[_0x6cef('0x3d')][_0x6cef('0x43')]+0x1,'app':_0x6cef('0x44'),'appdata':_0x6cef('0x41'),'interval':_0x6cef('0x45')});}if(_0x2586fe['account']['Applications']){delete _0x2586fe['account'][_0x6cef('0x3c')];}if(_0x2586fe[_0x6cef('0x3b')][_0x6cef('0x36')]){delete _0x2586fe['account'][_0x6cef('0x36')];}if(_0x18f4a[_0x6cef('0x36')][_0x6cef('0x46')][_0x6cef('0x43')]){return _0x18f4a['List'][_0x6cef('0x46')][0x0];}var _0x37835e=_[_0x6cef('0x47')](_0x2cebc9['body'],{'firstName':_0x2cebc9['body']['from'],'ListId':_0x18f4a['ListId']});_0x37835e[_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x34')]]=_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x31')];return db[_0x6cef('0x2b')][_0x6cef('0x48')](_0x37835e);}else{throw new Error('List\x20not\x20found');}})[_0x6cef('0x10')](function(_0xb7802e){_0x2586fe['contact']=_0xb7802e;if(_0xb7802e){if(!_0x2cebc9['body'][_0x6cef('0x17')][_0x6cef('0x49')]){_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x49')]=rs[_0x6cef('0x4a')]()+'\x20'+_0x2cebc9['body'][_0x6cef('0x17')][_0x6cef('0x31')];}var _0x5c6aae={'ContactId':_0xb7802e['id'],'MailAccountId':_0x2cebc9[_0x6cef('0x3b')]['id'],'inReplyTo':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x49')],'to':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x31')],'cc':_0x2cebc9['body'][_0x6cef('0x17')]['cc'],'subject':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x4b')],'attach':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x4c')],'lastMsgAt':moment()[_0x6cef('0x4d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x6cef('0x4e')][_0x6cef('0x25')]({'where':{'closed':![],'MailAccountId':_0x2cebc9[_0x6cef('0x3b')]['id']},'include':[{'model':db['MailMessage'],'as':_0x6cef('0x4f'),'attributes':['messageId'],'where':{'messageId':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x50')]}}]})[_0x6cef('0x10')](function(_0x5494ed){if(_0x5494ed){return[_0x5494ed,![]];}return db['MailInteraction'][_0x6cef('0x48')](_0x5c6aae)['then'](function(_0x12e5ea){return[_0x12e5ea,!![]];});});}else{throw new Error(_0x6cef('0x51'));}})[_0x6cef('0x52')](function(_0x511cfe,_0x39b411){if(_0x511cfe){_0x181a1d=_0x39b411;if(!_0x39b411){return _0x511cfe['update']({'inReplyTo':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x49')],'to':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x31')],'cc':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')]['cc'],'subject':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x4b')],'attach':_0x511cfe['attach']?_0x511cfe[_0x6cef('0x4c')]:_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x4c')],'substatus':null,'substatusAt':moment()[_0x6cef('0x4d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x6cef('0x4d')](_0x6cef('0x53')),'lastMsgDirection':'in'});}else{return _0x511cfe;}}})[_0x6cef('0x10')](function(_0x13152c){_0x2586fe[_0x6cef('0x54')]=_0x13152c[_0x6cef('0x3a')]({'plain':!![]});_0x2586fe[_0x6cef('0x54')][_0x6cef('0x55')]=_0x181a1d;return db[_0x6cef('0x56')]['create']({'body':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x28')],'MailAccountId':_0x2cebc9[_0x6cef('0x3b')]['id'],'MailInteractionId':_0x13152c['id'],'direction':'in','ContactId':_0x2586fe[_0x6cef('0x57')]['id'],'messageId':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x49')],'from':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x31')],'to':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')]['to'],'cc':_0x2cebc9[_0x6cef('0x28')]['message']['cc'],'subject':_0x2cebc9['body'][_0x6cef('0x17')][_0x6cef('0x4b')],'attach':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x4c')],'Attachments':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')]['attachments'],'originTo':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x58')],'originCc':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x59')],'bcc':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x5a')],'ChatWebsiteId':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x5b')]||null,'originChannel':_0x2cebc9['body']['message']['originChannel']||_0x6cef('0x5c'),'ChatOfflineMessageId':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x5d')]||null},{'include':[{'model':db[_0x6cef('0x5e')],'as':_0x6cef('0x5f')}]});})[_0x6cef('0x10')](function(_0x38f664){_0x2586fe[_0x6cef('0x17')]=_0x38f664;if(_0x2586fe[_0x6cef('0x54')][_0x6cef('0x60')]){return db['User']['find']({'attributes':['id',_0x6cef('0x61')],'where':{'id':_0x2586fe[_0x6cef('0x54')][_0x6cef('0x60')]}})['then'](function(_0x227264){if(_0x227264){_0x2586fe[_0x6cef('0x3d')]['unshift']({'id':0x0,'priority':0x0,'app':_0x6cef('0x62'),'appdata':_0x227264[_0x6cef('0x61')]+','+(_0x2586fe[_0x6cef('0x3b')][_0x6cef('0x63')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x6cef('0x64'),_0x6cef('0x65'),_0x2586fe);});}return respondWithRpcPromise(_0x6cef('0x64'),'startRouting',_0x2586fe);})[_0x6cef('0x10')](function(_0x16d552){_0x5222bd(_0x16d552);})[_0x6cef('0x23')](function(_0x5c2337){_0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x5c2337[_0x6cef('0x17')]));});});};
\ No newline at end of file
+var _0xc0fe=['List','Contacts','updatedAt','DESC','MailApplication','MailServerOut','Smtp','get','omit','Applications','applications','list','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','create','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','interaction','attachments','originCc','bcc','originChannel','Email','Attachment','Attachments','UserId','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetMailAccount','MailAccount','findAll','options','raw','where','limit','map','include','attributes','model','catch','ShowMailAccount','find','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList'];(function(_0x57e098,_0x29f6e6){var _0x144829=function(_0x1de4f2){while(--_0x1de4f2){_0x57e098['push'](_0x57e098['shift']());}};_0x144829(++_0x29f6e6);}(_0xc0fe,0x100));var _0xec0f=function(_0x254092,_0xcd3e2){_0x254092=_0x254092-0x0;var _0x2cf53d=_0xc0fe[_0x254092];return _0x2cf53d;};'use strict';var _=require(_0xec0f('0x0'));var util=require(_0xec0f('0x1'));var moment=require(_0xec0f('0x2'));var BPromise=require(_0xec0f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec0f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xec0f('0x5'));var logger=require('../../config/logger')(_0xec0f('0x6'));var config=require(_0xec0f('0x7'));var jayson=require(_0xec0f('0x8'));var client=jayson[_0xec0f('0x9')][_0xec0f('0xa')]({'port':0x232c});config['redis']=_[_0xec0f('0xb')](config[_0xec0f('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xec0f('0xd'))(new Redis(config['redis']));require(_0xec0f('0xe'))[_0xec0f('0xf')](socket);function respondWithRpcPromise(_0x202ff7,_0x51f9ed,_0x16f89e){return new BPromise(function(_0xf9b54b,_0x53c677){return client[_0xec0f('0x10')](_0x202ff7,_0x16f89e)[_0xec0f('0x11')](function(_0x71cdb2){logger[_0xec0f('0x12')](_0xec0f('0x13'),_0x51f9ed,_0xec0f('0x14'));logger[_0xec0f('0x15')](_0xec0f('0x16'),_0x51f9ed,_0xec0f('0x14'),JSON[_0xec0f('0x17')](_0x71cdb2));if(_0x71cdb2['error']){if(_0x71cdb2[_0xec0f('0x18')][_0xec0f('0x19')]===0x1f4){logger['error'](_0xec0f('0x13'),_0x51f9ed,_0x71cdb2[_0xec0f('0x18')][_0xec0f('0x1a')]);return _0x53c677(_0x71cdb2['error'][_0xec0f('0x1a')]);}logger[_0xec0f('0x18')](_0xec0f('0x13'),_0x51f9ed,_0x71cdb2[_0xec0f('0x18')][_0xec0f('0x1a')]);return _0xf9b54b(_0x71cdb2[_0xec0f('0x18')]['message']);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x51f9ed,_0xec0f('0x14'));_0xf9b54b(_0x71cdb2['result']['message']);}})['catch'](function(_0x32edea){logger[_0xec0f('0x18')]('MailAccount,\x20%s,\x20%s',_0x51f9ed,_0x32edea);_0x53c677(_0x32edea);});});}exports[_0xec0f('0x1b')]=function(_0x3014bc){var _0x4fea1f=this;return new Promise(function(_0x555ab2,_0x559a7f){return db[_0xec0f('0x1c')][_0xec0f('0x1d')]({'raw':_0x3014bc[_0xec0f('0x1e')]?_0x3014bc[_0xec0f('0x1e')][_0xec0f('0x1f')]===undefined?!![]:![]:!![],'where':_0x3014bc['options']?_0x3014bc[_0xec0f('0x1e')][_0xec0f('0x20')]||null:null,'attributes':_0x3014bc[_0xec0f('0x1e')]?_0x3014bc['options']['attributes']||null:null,'limit':_0x3014bc[_0xec0f('0x1e')]?_0x3014bc[_0xec0f('0x1e')][_0xec0f('0x21')]||null:null,'include':_0x3014bc['options']?_0x3014bc[_0xec0f('0x1e')]['include']?_[_0xec0f('0x22')](_0x3014bc[_0xec0f('0x1e')][_0xec0f('0x23')],function(_0x161fe4){return{'model':db[_0x161fe4['model']],'as':_0x161fe4['as'],'attributes':_0x161fe4[_0xec0f('0x24')],'include':_0x161fe4[_0xec0f('0x23')]?_[_0xec0f('0x22')](_0x161fe4[_0xec0f('0x23')],function(_0x3fdb36){return{'model':db[_0x3fdb36[_0xec0f('0x25')]],'as':_0x3fdb36['as'],'attributes':_0x3fdb36['attributes'],'include':_0x3fdb36['include']?_['map'](_0x3fdb36['include'],function(_0x33fa2c){return{'model':db[_0x33fa2c[_0xec0f('0x25')]],'as':_0x33fa2c['as'],'attributes':_0x33fa2c['attributes']};}):[]};}):[]};}):[]:[]})[_0xec0f('0x11')](function(_0x16bcef){logger[_0xec0f('0x12')]('GetMailAccount',_0x3014bc);logger[_0xec0f('0x15')](_0xec0f('0x1b'),_0x3014bc,JSON[_0xec0f('0x17')](_0x16bcef));_0x555ab2(_0x16bcef);})[_0xec0f('0x26')](function(_0x227b38){logger[_0xec0f('0x18')](_0xec0f('0x1b'),_0x227b38['message'],_0x3014bc);_0x559a7f(_0x4fea1f[_0xec0f('0x18')](0x1f4,_0x227b38[_0xec0f('0x1a')]));});});};exports[_0xec0f('0x27')]=function(_0x2175f4){var _0x37ee5d=this;return new Promise(function(_0x590692,_0x3a34c1){return db[_0xec0f('0x1c')][_0xec0f('0x28')]({'raw':_0x2175f4[_0xec0f('0x1e')]?_0x2175f4[_0xec0f('0x1e')][_0xec0f('0x1f')]===undefined?!![]:![]:!![],'where':_0x2175f4['options']?_0x2175f4['options']['where']||null:null,'attributes':_0x2175f4[_0xec0f('0x1e')]?_0x2175f4['options'][_0xec0f('0x24')]||null:null,'include':_0x2175f4[_0xec0f('0x1e')]?_0x2175f4[_0xec0f('0x1e')][_0xec0f('0x23')]?_[_0xec0f('0x22')](_0x2175f4[_0xec0f('0x1e')][_0xec0f('0x23')],function(_0x58d5ee){return{'model':db[_0x58d5ee[_0xec0f('0x25')]],'as':_0x58d5ee['as'],'attributes':_0x58d5ee[_0xec0f('0x24')],'include':_0x58d5ee['include']?_[_0xec0f('0x22')](_0x58d5ee[_0xec0f('0x23')],function(_0x55bd05){return{'model':db[_0x55bd05[_0xec0f('0x25')]],'as':_0x55bd05['as'],'attributes':_0x55bd05[_0xec0f('0x24')],'include':_0x55bd05[_0xec0f('0x23')]?_[_0xec0f('0x22')](_0x55bd05[_0xec0f('0x23')],function(_0x2b8cbb){return{'model':db[_0x2b8cbb['model']],'as':_0x2b8cbb['as'],'attributes':_0x2b8cbb[_0xec0f('0x24')]};}):[]};}):[]};}):[]:[]})[_0xec0f('0x11')](function(_0x1121bb){logger[_0xec0f('0x12')]('ShowMailAccount',_0x2175f4);logger['debug']('ShowMailAccount',_0x2175f4,JSON[_0xec0f('0x17')](_0x1121bb));_0x590692(_0x1121bb);})[_0xec0f('0x26')](function(_0x17bdf6){logger[_0xec0f('0x18')]('ShowMailAccount',_0x17bdf6['message'],_0x2175f4);_0x3a34c1(_0x37ee5d['error'](0x1f4,_0x17bdf6[_0xec0f('0x1a')]));});});};exports['NotifyMailAccount']=function(_0x3024b1){var _0x338a2a=this;return new Promise(function(_0x506041,_0x4fef87){var _0x2515af={'body':_0x3024b1[_0xec0f('0x29')],'channel':_0xec0f('0x2a')};var _0x1f1c33=_[_0xec0f('0x2b')](_[_0xec0f('0x2c')](db[_0xec0f('0x2d')][_0xec0f('0x2e')]),[_0xec0f('0x2f'),'updatedAt',_0xec0f('0x30'),_0xec0f('0x31')]);var _0x829f88=![];if(_0x3024b1[_0xec0f('0x29')]['id']){delete _0x3024b1[_0xec0f('0x29')]['id'];}if(_['isNil'](_0x3024b1[_0xec0f('0x29')][_0xec0f('0x32')])){return _0x4fef87(_0x338a2a[_0xec0f('0x18')](0x1f4,_0xec0f('0x33')));}if(_[_0xec0f('0x34')](_0x3024b1[_0xec0f('0x29')][_0xec0f('0x29')])||_0x3024b1[_0xec0f('0x29')][_0xec0f('0x29')]===''){return _0x4fef87(_0x338a2a[_0xec0f('0x18')](0x1f4,_0xec0f('0x35')));}if(_[_0xec0f('0x34')](_0x3024b1[_0xec0f('0x29')][_0xec0f('0x36')])){return _0x4fef87(_0x338a2a[_0xec0f('0x18')](0x1f4,_0xec0f('0x37')+_0x1f1c33));}if(!_['includes'](_0x1f1c33,_0x3024b1['body']['mapKey'])){return _0x4fef87(_0x338a2a[_0xec0f('0x18')](0x1f4,_0xec0f('0x38')+_0x1f1c33));}var _0x2961d1={};_0x2961d1[_0x3024b1[_0xec0f('0x29')]['mapKey']]=_0x3024b1[_0xec0f('0x29')]['from'];return db[_0xec0f('0x1c')][_0xec0f('0x28')]({'where':{'id':_0x3024b1[_0xec0f('0x39')]['id']},'include':[{'model':db[_0xec0f('0x3a')],'as':_0xec0f('0x3b'),'include':[{'model':db['CmContact'],'as':_0xec0f('0x3c'),'where':_0x2961d1,'limit':0x1,'order':[[_0xec0f('0x3d'),_0xec0f('0x3e')]]}]},{'model':db[_0xec0f('0x3f')],'as':'Applications'},{'model':db[_0xec0f('0x40')],'as':_0xec0f('0x41')}]})[_0xec0f('0x11')](function(_0x402416){if(_0x402416&&_0x402416[_0xec0f('0x3b')]){var _0x23d4ae=_0x402416[_0xec0f('0x42')]({'plain':!![]});_0x2515af[_0xec0f('0x39')]=_[_0xec0f('0x43')](_0x23d4ae,[_0xec0f('0x44'),_0xec0f('0x3b')]);_0x2515af[_0xec0f('0x45')]=_0x23d4ae[_0xec0f('0x44')];_0x2515af[_0xec0f('0x46')]=_0x23d4ae['List'];_0x2515af[_0xec0f('0x45')]=_[_0xec0f('0x47')](_0x2515af['applications'],[_0xec0f('0x48')],[_0xec0f('0x49')]);if(_0x2515af['account']&&_0x2515af['account'][_0xec0f('0x4a')]){_0x2515af[_0xec0f('0x45')][_0xec0f('0x4b')]({'id':0x0,'priority':_0x2515af[_0xec0f('0x45')][_0xec0f('0x4c')]+0x1,'app':_0xec0f('0x4d'),'appdata':'autoclose','interval':_0xec0f('0x4e')});}if(_0x2515af[_0xec0f('0x39')][_0xec0f('0x44')]){delete _0x2515af[_0xec0f('0x39')][_0xec0f('0x44')];}if(_0x2515af[_0xec0f('0x39')][_0xec0f('0x3b')]){delete _0x2515af[_0xec0f('0x39')]['List'];}if(_0x23d4ae[_0xec0f('0x3b')][_0xec0f('0x3c')]['length']){return _0x23d4ae['List'][_0xec0f('0x3c')][0x0];}var _0xbf62af=_['defaults'](_0x3024b1[_0xec0f('0x29')],{'firstName':_0x3024b1[_0xec0f('0x29')]['from'],'ListId':_0x23d4ae['ListId']});_0xbf62af[_0x3024b1['body'][_0xec0f('0x36')]]=_0x3024b1[_0xec0f('0x29')]['from'];return db['CmContact'][_0xec0f('0x4f')](_0xbf62af);}else{throw new Error('List\x20not\x20found');}})[_0xec0f('0x11')](function(_0x461b44){_0x2515af[_0xec0f('0x50')]=_0x461b44;if(_0x461b44){if(!_0x3024b1['body']['message']['messageId']){_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x51')]=rs[_0xec0f('0x52')]()+'\x20'+_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x32')];}var _0x7da09d={'ContactId':_0x461b44['id'],'MailAccountId':_0x3024b1['account']['id'],'inReplyTo':_0x3024b1[_0xec0f('0x29')]['message'][_0xec0f('0x51')],'to':_0x3024b1[_0xec0f('0x29')]['message']['from'],'cc':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')]['cc'],'subject':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x53')],'attach':_0x3024b1['body']['message'][_0xec0f('0x54')],'lastMsgAt':moment()[_0xec0f('0x55')](_0xec0f('0x56')),'lastMsgDirection':'in'};return db[_0xec0f('0x57')][_0xec0f('0x28')]({'where':{'closed':![],'MailAccountId':_0x3024b1[_0xec0f('0x39')]['id']},'include':[{'model':db[_0xec0f('0x58')],'as':'Messages','attributes':['messageId'],'where':{'messageId':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x59')]}}]})[_0xec0f('0x11')](function(_0x7c4633){if(_0x7c4633){return[_0x7c4633,![]];}return db[_0xec0f('0x57')][_0xec0f('0x4f')](_0x7da09d)[_0xec0f('0x11')](function(_0x1125a8){return[_0x1125a8,!![]];});});}else{throw new Error(_0xec0f('0x5a'));}})['spread'](function(_0x58ff7c,_0x518678){if(_0x58ff7c){_0x829f88=_0x518678;if(!_0x518678){return _0x58ff7c['update']({'inReplyTo':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x51')],'to':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x32')],'cc':_0x3024b1['body']['message']['cc'],'subject':_0x3024b1[_0xec0f('0x29')]['message'][_0xec0f('0x53')],'attach':_0x58ff7c[_0xec0f('0x54')]?_0x58ff7c[_0xec0f('0x54')]:_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')]['attach'],'substatus':null,'substatusAt':moment()['format'](_0xec0f('0x56')),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x58ff7c;}}})[_0xec0f('0x11')](function(_0x2a6d93){_0x2515af[_0xec0f('0x5b')]=_0x2a6d93[_0xec0f('0x42')]({'plain':!![]});_0x2515af[_0xec0f('0x5b')]['created']=_0x829f88;return db['MailMessage'][_0xec0f('0x4f')]({'body':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x29')],'MailAccountId':_0x3024b1[_0xec0f('0x39')]['id'],'MailInteractionId':_0x2a6d93['id'],'direction':'in','ContactId':_0x2515af[_0xec0f('0x50')]['id'],'messageId':_0x3024b1[_0xec0f('0x29')]['message'][_0xec0f('0x51')],'from':_0x3024b1[_0xec0f('0x29')]['message']['from'],'to':_0x3024b1[_0xec0f('0x29')]['message']['to'],'cc':_0x3024b1[_0xec0f('0x29')]['message']['cc'],'subject':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x53')],'attach':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')]['attach'],'Attachments':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')][_0xec0f('0x5c')],'originTo':_0x3024b1['body']['message']['originTo'],'originCc':_0x3024b1[_0xec0f('0x29')]['message'][_0xec0f('0x5d')],'bcc':_0x3024b1['body'][_0xec0f('0x1a')][_0xec0f('0x5e')],'ChatWebsiteId':_0x3024b1['body'][_0xec0f('0x1a')]['ChatWebsiteId']||null,'originChannel':_0x3024b1['body'][_0xec0f('0x1a')][_0xec0f('0x5f')]||_0xec0f('0x60'),'ChatOfflineMessageId':_0x3024b1[_0xec0f('0x29')][_0xec0f('0x1a')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xec0f('0x61')],'as':_0xec0f('0x62')}]});})[_0xec0f('0x11')](function(_0x1599c4){_0x2515af['message']=_0x1599c4;if(_0x2515af[_0xec0f('0x5b')][_0xec0f('0x63')]){return db['User'][_0xec0f('0x28')]({'attributes':['id',_0xec0f('0x64')],'where':{'id':_0x2515af['interaction']['UserId']}})['then'](function(_0x455330){if(_0x455330){_0x2515af['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xec0f('0x65'),'appdata':_0x455330[_0xec0f('0x64')]+','+(_0x2515af[_0xec0f('0x39')][_0xec0f('0x66')]||0xa),'interval':_0xec0f('0x4e')});}return respondWithRpcPromise(_0xec0f('0x67'),_0xec0f('0x68'),_0x2515af);});}return respondWithRpcPromise(_0xec0f('0x67'),_0xec0f('0x68'),_0x2515af);})['then'](function(_0x2b856f){_0x506041(_0x2b856f);})['catch'](function(_0x48882d){_0x4fef87(_0x338a2a[_0xec0f('0x18')](0x1f4,_0x48882d[_0xec0f('0x1a')]));});});};
\ No newline at end of file
index c6671c2..51575e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d1=['length','mailAccount:','./mailAccount.events','save','remove','update'];(function(_0x3eec6e,_0x2b2f56){var _0x4b4b28=function(_0x6055d1){while(--_0x6055d1){_0x3eec6e['push'](_0x3eec6e['shift']());}};_0x4b4b28(++_0x2b2f56);}(_0x38d1,0xf2));var _0x138d=function(_0x42494c,_0x1b2e83){_0x42494c=_0x42494c-0x0;var _0x2a6a9c=_0x38d1[_0x42494c];return _0x2a6a9c;};'use strict';var MailAccountEvents=require(_0x138d('0x0'));var events=[_0x138d('0x1'),_0x138d('0x2'),_0x138d('0x3')];function createListener(_0x501cbd,_0x38ebf2){return function(_0x9caebb){_0x38ebf2['emit'](_0x501cbd,_0x9caebb);};}function removeListener(_0x343281,_0x538364){return function(){MailAccountEvents['removeListener'](_0x343281,_0x538364);};}exports['register']=function(_0x4af869){for(var _0x2d1942=0x0,_0x1008ee=events[_0x138d('0x4')];_0x2d1942<_0x1008ee;_0x2d1942++){var _0xda5e7b=events[_0x2d1942];var _0x249cad=createListener(_0x138d('0x5')+_0xda5e7b,_0x4af869);MailAccountEvents['on'](_0xda5e7b,_0x249cad);}};
\ No newline at end of file
+var _0x32b6=['mailAccount:','./mailAccount.events','save','update','emit','removeListener','register','length'];(function(_0x5f0ac4,_0x2c781d){var _0x5186de=function(_0x2a3b99){while(--_0x2a3b99){_0x5f0ac4['push'](_0x5f0ac4['shift']());}};_0x5186de(++_0x2c781d);}(_0x32b6,0x1d1));var _0x632b=function(_0x45f22f,_0x512fde){_0x45f22f=_0x45f22f-0x0;var _0x44d614=_0x32b6[_0x45f22f];return _0x44d614;};'use strict';var MailAccountEvents=require(_0x632b('0x0'));var events=[_0x632b('0x1'),'remove',_0x632b('0x2')];function createListener(_0x1d100a,_0x51c210){return function(_0x5ad871){_0x51c210[_0x632b('0x3')](_0x1d100a,_0x5ad871);};}function removeListener(_0x3435e8,_0x3ba3a7){return function(){MailAccountEvents[_0x632b('0x4')](_0x3435e8,_0x3ba3a7);};}exports[_0x632b('0x5')]=function(_0x122768){for(var _0x24ceab=0x0,_0x10458a=events[_0x632b('0x6')];_0x24ceab<_0x10458a;_0x24ceab++){var _0x43d6c7=events[_0x24ceab];var _0x5128f5=createListener(_0x632b('0x7')+_0x43d6c7,_0x122768);MailAccountEvents['on'](_0x43d6c7,_0x5128f5);}};
\ No newline at end of file
index dc21d1d..216d9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabdc=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','/:id','isAuthenticated','show','put','update','destroy','exports','util'];(function(_0x42509b,_0x5e36e5){var _0x549670=function(_0x199458){while(--_0x199458){_0x42509b['push'](_0x42509b['shift']());}};_0x549670(++_0x5e36e5);}(_0xabdc,0x1db));var _0xcabd=function(_0x453dad,_0x375ca9){_0x453dad=_0x453dad-0x0;var _0x57197b=_0xabdc[_0x453dad];return _0x57197b;};'use strict';var multer=require('multer');var util=require(_0xcabd('0x0'));var path=require(_0xcabd('0x1'));var timeout=require(_0xcabd('0x2'));var express=require(_0xcabd('0x3'));var router=express[_0xcabd('0x4')]();var fs_extra=require(_0xcabd('0x5'));var auth=require(_0xcabd('0x6'));var interaction=require(_0xcabd('0x7'));var config=require(_0xcabd('0x8'));var controller=require(_0xcabd('0x9'));router['get'](_0xcabd('0xa'),auth[_0xcabd('0xb')](),controller[_0xcabd('0xc')]);router[_0xcabd('0xd')](_0xcabd('0xa'),auth['isAuthenticated'](),controller[_0xcabd('0xe')]);router['delete'](_0xcabd('0xa'),auth[_0xcabd('0xb')](),controller[_0xcabd('0xf')]);module[_0xcabd('0x10')]=router;
\ No newline at end of file
+var _0x99d6=['isAuthenticated','show','update','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','./mailApplication.controller','get','/:id'];(function(_0x57f60c,_0xcc4d07){var _0x101846=function(_0x197463){while(--_0x197463){_0x57f60c['push'](_0x57f60c['shift']());}};_0x101846(++_0xcc4d07);}(_0x99d6,0xd4));var _0x699d=function(_0x40be86,_0x68fe5d){_0x40be86=_0x40be86-0x0;var _0xda3c3b=_0x99d6[_0x40be86];return _0xda3c3b;};'use strict';var multer=require(_0x699d('0x0'));var util=require('util');var path=require(_0x699d('0x1'));var timeout=require('connect-timeout');var express=require(_0x699d('0x2'));var router=express[_0x699d('0x3')]();var fs_extra=require(_0x699d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x699d('0x5'));var config=require('../../config/environment');var controller=require(_0x699d('0x6'));router[_0x699d('0x7')](_0x699d('0x8'),auth[_0x699d('0x9')](),controller[_0x699d('0xa')]);router['put'](_0x699d('0x8'),auth[_0x699d('0x9')](),controller[_0x699d('0xb')]);router['delete'](_0x699d('0x8'),auth[_0x699d('0x9')](),controller['destroy']);module[_0x699d('0xc')]=router;
\ No newline at end of file
index f7f001f..059045e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63c5=['noop','TEXT','STRING','*,*,*,*','sequelize','INTEGER'];(function(_0xc1a7d3,_0x6ac180){var _0x576e8d=function(_0x46d9cb){while(--_0x46d9cb){_0xc1a7d3['push'](_0xc1a7d3['shift']());}};_0x576e8d(++_0x6ac180);}(_0x63c5,0x8e));var _0x563c=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x63c5[_0x15bc81];return _0x59440e;};'use strict';var Sequelize=require(_0x563c('0x0'));module['exports']={'priority':{'type':Sequelize[_0x563c('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x563c('0x2')},'appdata':{'type':Sequelize[_0x563c('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x563c('0x4')],'defaultValue':_0x563c('0x5')}};
\ No newline at end of file
+var _0x8263=['exports','INTEGER','noop','TEXT','STRING','sequelize'];(function(_0x223461,_0x2bca70){var _0x4dbe0a=function(_0x3c3cb6){while(--_0x3c3cb6){_0x223461['push'](_0x223461['shift']());}};_0x4dbe0a(++_0x2bca70);}(_0x8263,0x191));var _0x3826=function(_0x45a402,_0x5ac0b8){_0x45a402=_0x45a402-0x0;var _0x554074=_0x8263[_0x45a402];return _0x554074;};'use strict';var Sequelize=require(_0x3826('0x0'));module[_0x3826('0x1')]={'priority':{'type':Sequelize[_0x3826('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3826('0x3')},'appdata':{'type':Sequelize[_0x3826('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x3826('0x5')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index ffa4bdd..076d0d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x268916,_0x1c27e1){var _0x38f8a4=function(_0x5e9ea6){while(--_0x5e9ea6){_0x268916['push'](_0x268916['shift']());}};_0x38f8a4(++_0x1c27e1);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
+var _0xda3f=['includeAll','include','merge','find','catch','body','MailApplication','destroy','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','params','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x50a8b5,_0x396584){var _0x2628da=function(_0x4dbb58){while(--_0x4dbb58){_0x50a8b5['push'](_0x50a8b5['shift']());}};_0x2628da(++_0x396584);}(_0xda3f,0xec));var _0xfda3=function(_0xd1c2fd,_0x42bb68){_0xd1c2fd=_0xd1c2fd-0x0;var _0x37def5=_0xda3f[_0xd1c2fd];return _0x37def5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['show']=function(_0x3c1549,_0x4101b1){var _0x301509={'raw':!![],'where':{'id':_0x3c1549[_0xfda3('0x28')]['id']}},_0x474992={};_0x474992[_0xfda3('0x29')]=_[_0xfda3('0x2a')](db['MailApplication']['rawAttributes']);_0x474992[_0xfda3('0x2b')]=_['keys'](_0x3c1549['query']);_0x474992[_0xfda3('0x2c')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2e')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],qs[_0xfda3('0x2f')](_0x3c1549[_0xfda3('0x2b')]['fields']));_0x301509[_0xfda3('0x2e')]=_0x301509[_0xfda3('0x2e')][_0xfda3('0x30')]?_0x301509[_0xfda3('0x2e')]:_0x474992[_0xfda3('0x29')];if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x31')]){_0x301509[_0xfda3('0x32')]=[{'all':!![]}];}_0x301509=_[_0xfda3('0x33')]({},_0x301509,_0x3c1549['options']);return db['MailApplication'][_0xfda3('0x34')](_0x301509)[_0xfda3('0x23')](handleEntityNotFound(_0x4101b1,null))['then'](respondWithResult(_0x4101b1,null))[_0xfda3('0x35')](handleError(_0x4101b1,null));};exports[_0xfda3('0x22')]=function(_0x28ca96,_0x52ee98){if(_0x28ca96[_0xfda3('0x36')]['id']){delete _0x28ca96[_0xfda3('0x36')]['id'];}return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x28ca96[_0xfda3('0x28')]['id']}})['then'](handleEntityNotFound(_0x52ee98,null))[_0xfda3('0x23')](saveUpdates(_0x28ca96[_0xfda3('0x36')],null))[_0xfda3('0x23')](respondWithResult(_0x52ee98,null))['catch'](handleError(_0x52ee98,null));};exports[_0xfda3('0x38')]=function(_0x4854b1,_0x2d9a3f){return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x4854b1[_0xfda3('0x28')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2d9a3f,null))[_0xfda3('0x23')](removeEntity(_0x2d9a3f,null))[_0xfda3('0x35')](handleError(_0x2d9a3f,null));};
\ No newline at end of file
index b17dcb6..aa965b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e14=['request-promise','path','rimraf','../../config/environment','exports','define','MailApplication','mail_applications','lodash','util','api','moment','bluebird'];(function(_0x2dff24,_0x2c18ef){var _0x597ec0=function(_0x482c63){while(--_0x482c63){_0x2dff24['push'](_0x2dff24['shift']());}};_0x597ec0(++_0x2c18ef);}(_0x1e14,0x14d));var _0x41e1=function(_0x19d11d,_0x8fa4ab){_0x19d11d=_0x19d11d-0x0;var _0x4806a7=_0x1e14[_0x19d11d];return _0x4806a7;};'use strict';var _=require(_0x41e1('0x0'));var util=require(_0x41e1('0x1'));var logger=require('../../config/logger')(_0x41e1('0x2'));var moment=require(_0x41e1('0x3'));var BPromise=require(_0x41e1('0x4'));var rp=require(_0x41e1('0x5'));var fs=require('fs');var path=require(_0x41e1('0x6'));var rimraf=require(_0x41e1('0x7'));var config=require(_0x41e1('0x8'));var attributes=require('./mailApplication.attributes');module[_0x41e1('0x9')]=function(_0x2608eb,_0x2270b6){return _0x2608eb[_0x41e1('0xa')](_0x41e1('0xb'),attributes,{'tableName':_0x41e1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5bf5=['../../config/environment','./mailApplication.attributes','define','MailApplication','utf8mb4','utf8mb4_unicode_ci','lodash','api','bluebird','request-promise'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x5bf5,0xba));var _0x55bf=function(_0x448809,_0x15e113){_0x448809=_0x448809-0x0;var _0x2ea4ad=_0x5bf5[_0x448809];return _0x2ea4ad;};'use strict';var _=require(_0x55bf('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x55bf('0x1'));var moment=require('moment');var BPromise=require(_0x55bf('0x2'));var rp=require(_0x55bf('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x55bf('0x4'));var attributes=require(_0x55bf('0x5'));module['exports']=function(_0x2cfac5,_0x379a3e){return _0x2cfac5[_0x55bf('0x6')](_0x55bf('0x7'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x55bf('0x8'),'collate':_0x55bf('0x9')});};
\ No newline at end of file
index bf4b6b7..f71ee48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ee0=['MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','info','result','MailApplication','update','options','raw','where','attributes','limit','then','UpdateMailApplication','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','MailApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x3ee0,0x196));var _0x03ee=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3ee0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x03ee('0x0'));var util=require(_0x03ee('0x1'));var moment=require('moment');var BPromise=require(_0x03ee('0x2'));var rs=require(_0x03ee('0x3'));var fs=require('fs');var Redis=require(_0x03ee('0x4'));var db=require(_0x03ee('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x03ee('0x6'))(_0x03ee('0x7'));var config=require('../../config/environment');var jayson=require(_0x03ee('0x8'));var client=jayson[_0x03ee('0x9')][_0x03ee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x269d90,_0x356cd2,_0x14f601){return new BPromise(function(_0x627f1c,_0x53ff55){return client['request'](_0x269d90,_0x14f601)['then'](function(_0x74f726){logger['info'](_0x03ee('0xb'),_0x356cd2,_0x03ee('0xc'));logger[_0x03ee('0xd')](_0x03ee('0xe'),_0x356cd2,_0x03ee('0xc'),JSON['stringify'](_0x74f726));if(_0x74f726[_0x03ee('0xf')]){if(_0x74f726[_0x03ee('0xf')][_0x03ee('0x10')]===0x1f4){logger['error'](_0x03ee('0xb'),_0x356cd2,_0x74f726[_0x03ee('0xf')][_0x03ee('0x11')]);return _0x53ff55(_0x74f726['error'][_0x03ee('0x11')]);}logger[_0x03ee('0xf')](_0x03ee('0xb'),_0x356cd2,_0x74f726['error'][_0x03ee('0x11')]);return _0x627f1c(_0x74f726[_0x03ee('0xf')][_0x03ee('0x11')]);}else{logger[_0x03ee('0x12')](_0x03ee('0xb'),_0x356cd2,_0x03ee('0xc'));_0x627f1c(_0x74f726[_0x03ee('0x13')][_0x03ee('0x11')]);}})['catch'](function(_0x54ead0){logger[_0x03ee('0xf')](_0x03ee('0xb'),_0x356cd2,_0x54ead0);_0x53ff55(_0x54ead0);});});}exports['UpdateMailApplication']=function(_0x483935){var _0x2cb698=this;return new Promise(function(_0x2da621,_0x4945e7){return db[_0x03ee('0x14')][_0x03ee('0x15')](_0x483935['body'],{'raw':_0x483935[_0x03ee('0x16')]?_0x483935['options'][_0x03ee('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x483935[_0x03ee('0x16')]?_0x483935[_0x03ee('0x16')][_0x03ee('0x18')]||null:null,'attributes':_0x483935[_0x03ee('0x16')]?_0x483935[_0x03ee('0x16')][_0x03ee('0x19')]||null:null,'limit':_0x483935[_0x03ee('0x16')]?_0x483935['options'][_0x03ee('0x1a')]||null:null})[_0x03ee('0x1b')](function(_0x1eb700){logger['info'](_0x03ee('0x1c'),_0x483935);logger[_0x03ee('0xd')](_0x03ee('0x1c'),_0x483935,JSON[_0x03ee('0x1d')](_0x1eb700));_0x2da621(_0x1eb700);})['catch'](function(_0x46c1f7){logger[_0x03ee('0xf')](_0x03ee('0x1c'),_0x46c1f7[_0x03ee('0x11')],_0x483935);_0x4945e7(_0x2cb698[_0x03ee('0xf')](0x1f4,_0x46c1f7['message']));});});};
\ No newline at end of file
+var _0x6ecb=['info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UpdateMailApplication','MailApplication','body','options','raw','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x38b844,_0x89e75d){var _0x1514e1=function(_0x5db9da){while(--_0x5db9da){_0x38b844['push'](_0x38b844['shift']());}};_0x1514e1(++_0x89e75d);}(_0x6ecb,0x14f));var _0xb6ec=function(_0x2034e2,_0x147430){_0x2034e2=_0x2034e2-0x0;var _0x3e7c6d=_0x6ecb[_0x2034e2];return _0x3e7c6d;};'use strict';var _=require(_0xb6ec('0x0'));var util=require(_0xb6ec('0x1'));var moment=require(_0xb6ec('0x2'));var BPromise=require(_0xb6ec('0x3'));var rs=require(_0xb6ec('0x4'));var fs=require('fs');var Redis=require(_0xb6ec('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb6ec('0x6'))('rpc');var config=require(_0xb6ec('0x7'));var jayson=require(_0xb6ec('0x8'));var client=jayson[_0xb6ec('0x9')][_0xb6ec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34db6b,_0x2dfd31,_0x1d3fb6){return new BPromise(function(_0x1210fc,_0x5c0d12){return client[_0xb6ec('0xb')](_0x34db6b,_0x1d3fb6)[_0xb6ec('0xc')](function(_0x40c10f){logger[_0xb6ec('0xd')](_0xb6ec('0xe'),_0x2dfd31,_0xb6ec('0xf'));logger[_0xb6ec('0x10')](_0xb6ec('0x11'),_0x2dfd31,_0xb6ec('0xf'),JSON[_0xb6ec('0x12')](_0x40c10f));if(_0x40c10f['error']){if(_0x40c10f[_0xb6ec('0x13')]['code']===0x1f4){logger[_0xb6ec('0x13')](_0xb6ec('0xe'),_0x2dfd31,_0x40c10f[_0xb6ec('0x13')][_0xb6ec('0x14')]);return _0x5c0d12(_0x40c10f[_0xb6ec('0x13')][_0xb6ec('0x14')]);}logger[_0xb6ec('0x13')](_0xb6ec('0xe'),_0x2dfd31,_0x40c10f[_0xb6ec('0x13')]['message']);return _0x1210fc(_0x40c10f[_0xb6ec('0x13')][_0xb6ec('0x14')]);}else{logger['info'](_0xb6ec('0xe'),_0x2dfd31,_0xb6ec('0xf'));_0x1210fc(_0x40c10f['result'][_0xb6ec('0x14')]);}})[_0xb6ec('0x15')](function(_0x39bf22){logger[_0xb6ec('0x13')](_0xb6ec('0xe'),_0x2dfd31,_0x39bf22);_0x5c0d12(_0x39bf22);});});}exports[_0xb6ec('0x16')]=function(_0x2a9013){var _0x4374b9=this;return new Promise(function(_0x25b058,_0x77e072){return db[_0xb6ec('0x17')]['update'](_0x2a9013[_0xb6ec('0x18')],{'raw':_0x2a9013[_0xb6ec('0x19')]?_0x2a9013[_0xb6ec('0x19')][_0xb6ec('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a9013[_0xb6ec('0x19')]?_0x2a9013[_0xb6ec('0x19')][_0xb6ec('0x1b')]||null:null,'attributes':_0x2a9013['options']?_0x2a9013[_0xb6ec('0x19')][_0xb6ec('0x1c')]||null:null,'limit':_0x2a9013[_0xb6ec('0x19')]?_0x2a9013['options']['limit']||null:null})[_0xb6ec('0xc')](function(_0x37877c){logger[_0xb6ec('0xd')](_0xb6ec('0x16'),_0x2a9013);logger['debug'](_0xb6ec('0x16'),_0x2a9013,JSON[_0xb6ec('0x12')](_0x37877c));_0x25b058(_0x37877c);})[_0xb6ec('0x15')](function(_0x533e2b){logger[_0xb6ec('0x13')](_0xb6ec('0x16'),_0x533e2b[_0xb6ec('0x14')],_0x2a9013);_0x77e072(_0x4374b9[_0xb6ec('0x13')](0x1f4,_0x533e2b['message']));});});};
\ No newline at end of file
index a9cdcc0..2efe090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd7a=['create','/:id/messages','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','/:id','update','mailinteraction:destroy','delete','removeTags','exports','express','Router','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','describe','show','getMessages','/:id/download','download','post'];(function(_0x226ee0,_0x27f43b){var _0x4d8f67=function(_0x649db9){while(--_0x649db9){_0x226ee0['push'](_0x226ee0['shift']());}};_0x4d8f67(++_0x27f43b);}(_0xbd7a,0x10b));var _0xabd7=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xbd7a[_0x1da04e];return _0xdd8c41;};'use strict';var express=require(_0xabd7('0x0'));var router=express[_0xabd7('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0xabd7('0x2'));var controller=require(_0xabd7('0x3'));router[_0xabd7('0x4')]('/',auth[_0xabd7('0x5')](),controller[_0xabd7('0x6')]);router[_0xabd7('0x4')]('/describe',auth['isAuthenticated'](),controller[_0xabd7('0x7')]);router[_0xabd7('0x4')]('/:id',auth[_0xabd7('0x5')](),controller[_0xabd7('0x8')]);router['get']('/:id/messages',auth[_0xabd7('0x5')](),controller[_0xabd7('0x9')]);router[_0xabd7('0x4')](_0xabd7('0xa'),auth[_0xabd7('0x5')](),controller[_0xabd7('0xb')]);router[_0xabd7('0xc')]('/',auth['isAuthenticated'](),controller[_0xabd7('0xd')]);router[_0xabd7('0xc')](_0xabd7('0xe'),auth[_0xabd7('0x5')](),controller[_0xabd7('0xf')]);router['post'](_0xabd7('0x10'),auth[_0xabd7('0x5')](),interaction[_0xabd7('0x11')](_0xabd7('0x12'),_0xabd7('0x13')),controller[_0xabd7('0x14')]);router[_0xabd7('0x15')](_0xabd7('0x16'),auth[_0xabd7('0x5')](),interaction[_0xabd7('0x11')](_0xabd7('0x12'),'mailinteraction:update'),controller[_0xabd7('0x17')]);router['delete'](_0xabd7('0x16'),auth[_0xabd7('0x5')](),interaction[_0xabd7('0x11')](_0xabd7('0x12'),_0xabd7('0x18')),controller['destroy']);router[_0xabd7('0x19')](_0xabd7('0x10'),auth[_0xabd7('0x5')](),controller[_0xabd7('0x1a')]);module[_0xabd7('0x1b')]=router;
\ No newline at end of file
+var _0x8383=['express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','tracked','mail','mailinteraction:addtags','put','mailinteraction:update','delete','mailinteraction:destroy','destroy','/:id/tags'];(function(_0xeb2b95,_0x3f3f1b){var _0x1a61ba=function(_0x577fa5){while(--_0x577fa5){_0xeb2b95['push'](_0xeb2b95['shift']());}};_0x1a61ba(++_0x3f3f1b);}(_0x8383,0x1a9));var _0x3838=function(_0x3e00c9,_0x1f1a2e){_0x3e00c9=_0x3e00c9-0x0;var _0x1ef0bd=_0x8383[_0x3e00c9];return _0x1ef0bd;};'use strict';var express=require(_0x3838('0x0'));var router=express[_0x3838('0x1')]();var auth=require(_0x3838('0x2'));var interaction=require(_0x3838('0x3'));var controller=require(_0x3838('0x4'));router[_0x3838('0x5')]('/',auth[_0x3838('0x6')](),controller[_0x3838('0x7')]);router[_0x3838('0x5')](_0x3838('0x8'),auth[_0x3838('0x6')](),controller[_0x3838('0x9')]);router['get'](_0x3838('0xa'),auth[_0x3838('0x6')](),controller[_0x3838('0xb')]);router[_0x3838('0x5')](_0x3838('0xc'),auth[_0x3838('0x6')](),controller[_0x3838('0xd')]);router[_0x3838('0x5')](_0x3838('0xe'),auth[_0x3838('0x6')](),controller['download']);router[_0x3838('0xf')]('/',auth[_0x3838('0x6')](),controller['create']);router[_0x3838('0xf')](_0x3838('0xc'),auth['isAuthenticated'](),controller['addMessage']);router['post']('/:id/tags',auth[_0x3838('0x6')](),interaction[_0x3838('0x10')](_0x3838('0x11'),_0x3838('0x12')),controller['addTags']);router[_0x3838('0x13')]('/:id',auth[_0x3838('0x6')](),interaction[_0x3838('0x10')](_0x3838('0x11'),_0x3838('0x14')),controller['update']);router[_0x3838('0x15')](_0x3838('0xa'),auth[_0x3838('0x6')](),interaction[_0x3838('0x10')](_0x3838('0x11'),_0x3838('0x16')),controller[_0x3838('0x17')]);router['delete'](_0x3838('0x18'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index d3c7d7c..3381b33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f5=['BOOLEAN','STRING','long','TEXT','DATE','out','ENUM','sequelize','iconv','exports'];(function(_0x1d84c9,_0x38ca68){var _0x1312c5=function(_0x3de15a){while(--_0x3de15a){_0x1d84c9['push'](_0x1d84c9['shift']());}};_0x1312c5(++_0x38ca68);}(_0x06f5,0x1a1));var _0x506f=function(_0x1420ce,_0x437d99){_0x1420ce=_0x1420ce-0x0;var _0x3637ff=_0x06f5[_0x1420ce];return _0x3637ff;};'use strict';var Sequelize=require(_0x506f('0x0'));var iconv=require(_0x506f('0x1'));module[_0x506f('0x2')]={'closed':{'type':Sequelize[_0x506f('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x506f('0x4')]},'secondDisposition':{'type':Sequelize[_0x506f('0x4')]},'thirdDisposition':{'type':Sequelize[_0x506f('0x4')]},'note':{'type':Sequelize[_0x506f('0x4')]},'inReplyTo':{'type':Sequelize[_0x506f('0x4')](0x1fe)},'to':{'type':Sequelize[_0x506f('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x506f('0x5'))},'subject':{'type':Sequelize[_0x506f('0x6')]()},'attach':{'type':Sequelize[_0x506f('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x506f('0x7')]},'substatus':{'type':Sequelize[_0x506f('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x506f('0x7')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x506f('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x506f('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x506f('0x9')]('in',_0x506f('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x506f('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2b99=['long','TEXT','BOOLEAN','out','ENUM','sequelize','iconv','exports','DATE','STRING'];(function(_0x364eb3,_0x2190a8){var _0x1765c9=function(_0xb9f700){while(--_0xb9f700){_0x364eb3['push'](_0x364eb3['shift']());}};_0x1765c9(++_0x2190a8);}(_0x2b99,0x1b3));var _0x92b9=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x2b99[_0xaa0309];return _0x5de7ce;};'use strict';var Sequelize=require(_0x92b9('0x0'));var iconv=require(_0x92b9('0x1'));module[_0x92b9('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x92b9('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x92b9('0x4')]},'thirdDisposition':{'type':Sequelize[_0x92b9('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x92b9('0x4')](0x1fe)},'to':{'type':Sequelize[_0x92b9('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x92b9('0x5'))},'subject':{'type':Sequelize[_0x92b9('0x6')]()},'attach':{'type':Sequelize[_0x92b9('0x7')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x92b9('0x3')]},'substatus':{'type':Sequelize[_0x92b9('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x92b9('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x92b9('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x92b9('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x92b9('0x9')]('in',_0x92b9('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index d976995..f80660e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0xdc06ca,_0x3950c5){var _0x4fea82=function(_0x40b470){while(--_0x40b470){_0xdc06ca['push'](_0xdc06ca['shift']());}};_0x4fea82(++_0x3950c5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_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');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
+var _0xb10b=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','show','params','rawAttributes','includeAll','include','merge','options','create','body','describe','addMessage','ids','omit','getMessages','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','stack','name','send','fullname','TagIds','Tags','split','forEach','push','MailMessage','out','-id','trimStart','plainBody','catch','index','map','MailInteraction','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','field','color','tools_tags','u.id','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','Contact.firstName','c.email'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0xb10b,0x12a));var _0xbb10=function(_0x84a85,_0x54e55c){_0x84a85=_0x84a85-0x0;var _0x1c2943=_0xb10b[_0x84a85];return _0x1c2943;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var BPromise=require(_0xbb10('0x3'));var util=require('util');var path=require(_0xbb10('0x4'));var fs=require('fs');var _=require(_0xbb10('0x5'));var squel=require(_0xbb10('0x6'));var juice=require(_0xbb10('0x7'));var Redis=require(_0xbb10('0x8'));var qs=require(_0xbb10('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbb10('0xa'))(_0xbb10('0xb'));var config=require('../../config/environment');var db=require(_0xbb10('0xc'))['db'];config[_0xbb10('0xd')]=_[_0xbb10('0xe')](config[_0xbb10('0xd')],{'host':_0xbb10('0xf'),'port':0x18eb});var socket=require(_0xbb10('0x10'))(new Redis(config[_0xbb10('0xd')]));require(_0xbb10('0x11'))['register'](socket);function respondWithStatusCode(_0x4e47f8,_0x20bd61){_0x20bd61=_0x20bd61||0xcc;return function(_0x118a74){if(_0x118a74){return _0x4e47f8[_0xbb10('0x12')](_0x20bd61);}return _0x4e47f8['status'](_0x20bd61)[_0xbb10('0x13')]();};}function respondWithResult(_0x5be7e0,_0x44fb19){_0x44fb19=_0x44fb19||0xc8;return function(_0x916a32){if(_0x916a32){return _0x5be7e0[_0xbb10('0x14')](_0x44fb19)[_0xbb10('0x15')](_0x916a32);}};}function respondWithFilteredResult(_0x442548,_0x147230){return function(_0x58a612){if(_0x58a612){var _0x26e021=typeof _0x147230[_0xbb10('0x16')]===_0xbb10('0x17')&&typeof _0x147230[_0xbb10('0x18')]===_0xbb10('0x17');var _0x2f2ebf=_0x58a612[_0xbb10('0x19')];var _0x36b5e8=_0x26e021?0x0:_0x147230[_0xbb10('0x16')];var _0x2b184e=_0x26e021?_0x58a612['count']:_0x147230[_0xbb10('0x16')]+_0x147230[_0xbb10('0x18')];var _0x133ac2;if(_0x2b184e>=_0x2f2ebf){_0x2b184e=_0x2f2ebf;_0x133ac2=0xc8;}else{_0x133ac2=0xce;}_0x442548[_0xbb10('0x14')](_0x133ac2);return _0x442548[_0xbb10('0x1a')](_0xbb10('0x1b'),_0x36b5e8+'-'+_0x2b184e+'/'+_0x2f2ebf)[_0xbb10('0x15')](_0x58a612);}return null;};}function saveUpdates(_0x30efc6){return function(_0xbf2906){if(_0xbf2906){return _0xbf2906[_0xbb10('0x1c')](_0x30efc6)['then'](function(_0x5ff0cf){return _0x5ff0cf;});}return null;};}function removeEntity(_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x1d')]()[_0xbb10('0x1e')](function(){_0x19f48d[_0xbb10('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12f888){return function(_0x12ef77){if(!_0x12ef77){_0x12f888['sendStatus'](0x194);}return _0x12ef77;};}function handleError(_0x4c4b0d,_0x8e2b97){_0x8e2b97=_0x8e2b97||0x1f4;return function(_0x311abe){logger[_0xbb10('0x1f')](_0x311abe[_0xbb10('0x20')]);if(_0x311abe[_0xbb10('0x21')]){delete _0x311abe[_0xbb10('0x21')];}_0x4c4b0d[_0xbb10('0x14')](_0x8e2b97)[_0xbb10('0x22')](_0x311abe);};}function getInteractionUsers(_0x7f2377,_0x395404){return new BPromise(function(_0x3ba6cd,_0x26ad93){try{if(_0x395404[_0x7f2377['id']]){_0x7f2377['Users']=_['map'](_0x395404[_0x7f2377['id']],function(_0x4fb5e0){return{'id':_0x4fb5e0['id'],'fullname':_0x4fb5e0[_0xbb10('0x23')]};});}}catch(_0x3c5ae7){_0x26ad93(_0x3c5ae7);}_0x3ba6cd(_0x7f2377);});}function getInteractionTags(_0x2c89b9,_0x4e25ff){return new BPromise(function(_0x2fdde9,_0x24d586){try{if(_0x2c89b9[_0xbb10('0x24')]){_0x2c89b9[_0xbb10('0x25')]=[];_0x2c89b9[_0xbb10('0x24')][_0xbb10('0x26')](',')[_0xbb10('0x27')](function(_0x4aabb9){_0x2c89b9[_0xbb10('0x25')][_0xbb10('0x28')](_0x4e25ff[_0x4aabb9]);});}delete _0x2c89b9[_0xbb10('0x24')];}catch(_0x2e0249){_0x24d586(_0x2e0249);}_0x2fdde9(_0x2c89b9);});}function getLastMessageText(_0x1d30aa){return new BPromise(function(_0x2ff4c1,_0x5d5c80){return db[_0xbb10('0x29')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d30aa['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb10('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xbb10('0x2b'),'raw':!![]})[_0xbb10('0x1e')](function(_0x1b59f9){if(_0x1b59f9&&_0x1b59f9['plainBody']){_0x1d30aa['lastMsgText']=_[_0xbb10('0x2c')](_0x1b59f9[_0xbb10('0x2d')]);}_0x2ff4c1(_0x1d30aa);})['catch'](function(_0x359ad4){_0x5d5c80(_0x359ad4);});});}function updateMailInteraction(_0x37dde7,_0x2f653f,_0x1c0b57,_0x37a83f){return new BPromise(function(_0x138bc6,_0xf85197){return getInteractionUsers(_0x37dde7,_0x1c0b57)['then'](function(_0x25acb3){return getInteractionTags(_0x25acb3,_0x2f653f);})[_0xbb10('0x1e')](function(_0x441d15){if(_0x37a83f){_0x138bc6(getLastMessageText(_0x441d15));}else{_0x138bc6(_0x441d15);}})[_0xbb10('0x2e')](function(_0xfb2c5e){_0xf85197(_0xfb2c5e);});});}exports[_0xbb10('0x2f')]=function(_0x188cbd,_0x10202c){var _0x3c8d7d={},_0x56943c={},_0x2b5352={'count':0x0,'rows':[]};var _0x150107=_[_0xbb10('0x30')](db[_0xbb10('0x31')]['rawAttributes'],function(_0x111762){return{'name':_0x111762['fieldName'],'type':_0x111762['type'][_0xbb10('0x32')]};});_0x56943c[_0xbb10('0x33')]=_[_0xbb10('0x30')](_0x150107,_0xbb10('0x21'));_0x56943c[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x188cbd['query']);_0x56943c[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x56943c['model'],_0x56943c['query']);_0x3c8d7d['attributes']=_[_0xbb10('0x37')](_0x56943c[_0xbb10('0x33')],qs[_0xbb10('0x38')](_0x188cbd['query'][_0xbb10('0x38')]));_0x3c8d7d[_0xbb10('0x39')]=_0x3c8d7d[_0xbb10('0x39')]['length']?_0x3c8d7d[_0xbb10('0x39')]:_0x56943c[_0xbb10('0x33')];if(!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3a')]('nolimit')){_0x3c8d7d[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0x188cbd['query'][_0xbb10('0x18')]);_0x3c8d7d[_0xbb10('0x16')]=qs[_0xbb10('0x16')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x16')]);}_0x3c8d7d[_0xbb10('0x3b')]=qs['sort'](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x3c8d7d[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_['pick'](_0x188cbd[_0xbb10('0x34')],_0x56943c[_0xbb10('0x36')]),_0x150107);var _0x23dc18=[];var _0x403beb=squel['select']()[_0xbb10('0x3e')]('id')[_0xbb10('0x3e')]('name')['field'](_0xbb10('0x3f'))['from'](_0xbb10('0x40'));var _0x180933=squel['select']()[_0xbb10('0x3e')](_0xbb10('0x41'))[_0xbb10('0x3e')]('u.fullname')[_0xbb10('0x3e')](_0xbb10('0x42'))[_0xbb10('0x43')](_0xbb10('0x44'),'ui')[_0xbb10('0x45')](_0xbb10('0x46'),'u',_0xbb10('0x47'));var _0x3efa96=squel[_0xbb10('0x48')]()[_0xbb10('0x43')](_0xbb10('0x49'),'i')[_0xbb10('0x45')]('cm_contacts','c',_0xbb10('0x4a'))[_0xbb10('0x45')]('users','o',_0xbb10('0x4b'))[_0xbb10('0x45')](_0xbb10('0x4c'),'a',_0xbb10('0x4d'))[_0xbb10('0x45')](_0xbb10('0x4e'),'me',_0xbb10('0x4f'))['left_join']('mail_interaction_has_tags','it',_0xbb10('0x50'))[_0xbb10('0x45')](_0xbb10('0x40'),'t','t.id\x20=\x20it.TagId');var _0x5f0c12=squel[_0xbb10('0x51')]();var _0x34cf4e=[];var _0x1bd054=squel[_0xbb10('0x51')]();var _0x10159b;if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]){_0x10159b=as[_0xbb10('0x53')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]);var _0x550111=_0x10159b['sqlOperator'];for(var _0x412e13=0x0;_0x412e13<_0x10159b[_0xbb10('0x54')][_0xbb10('0x55')];_0x412e13++){var _0xb014b0=_0x10159b[_0xbb10('0x54')][_0x412e13];var _0x440f9e='i';var _0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),_0xb014b0[_0xbb10('0x3e')]]);if(!_0x358e7e){switch(_0xb014b0[_0xbb10('0x3e')]){case _0xbb10('0x57'):if(_0xb014b0[_0xbb10('0x58')]==0x1){_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0[_0xbb10('0x3e')]+'`\x20=\x200');}else{_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0['field']+_0xbb10('0x5a'));}break;case _0xbb10('0x5b'):if(_0xb014b0[_0xbb10('0x5c')]===_0xbb10('0x5d')){if(_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')]('\x20')[_0xbb10('0x55')]>0x1){_0x5f0c12[_0x550111](_0xbb10('0x5e'),qs[_0xbb10('0x5f')](_0xb014b0[_0xbb10('0x58')]),null);}else{var _0x44a056='%'+_0xb014b0[_0xbb10('0x58')]+'%';_0x5f0c12[_0x550111](_0xbb10('0x60'),_0x44a056,_0x44a056,_0x44a056);}}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'ContactId']);_0xb014b0[_0xbb10('0x3e')]=_0xbb10('0x61');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')]['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);}break;case _0xbb10('0x65'):var _0x14fed3=_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')](',')[_0xbb10('0x30')](function(_0x12ec18){return Number(_0x12ec18);});_0x14fed3[_0xbb10('0x27')](function(_0x40c4fb){_0x1bd054['or'](_0xbb10('0x66'),'%,'+_0x40c4fb+',%');});_0x34cf4e=_[_0xbb10('0x67')](_0x34cf4e,_0x14fed3);break;case _0xbb10('0x68'):if(_0xb014b0['operator']==='$substring'){_0x5f0c12[_0x550111](_0xbb10('0x69'),'%'+_0xb014b0[_0xbb10('0x58')]+'%',null);}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'UserId']);_0xb014b0['field']=_0xbb10('0x6a');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}break;case _0xbb10('0x2d'):_0x155dc5=as[_0xbb10('0x62')]('me',null,_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5['value']['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);break;}}else{var _0x155dc5=as['buildExpression'](_0x440f9e,_0x358e7e['type'],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}}}else{var _0xa1bbd9=_(_0x188cbd[_0xbb10('0x34')])['keys']()['map'](function(_0x27d7b9){return _[_0xbb10('0x6c')](_0x150107,[_0xbb10('0x21'),_0x27d7b9])?_0x27d7b9:undefined;})[_0xbb10('0x6d')]()['value']();if(!_[_0xbb10('0x6e')](_0xa1bbd9)){_0xa1bbd9[_0xbb10('0x27')](function(_0xa7179d){if(_0xa7179d==='MailAccountId'){_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),[][_0xbb10('0x70')](_0x188cbd['query'][_0xa7179d]));}else if(_0xa7179d===_0xbb10('0x71')){var _0x31e85e=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])['$gte'];var _0x251417=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])[_0xbb10('0x73')];_0x3efa96['where'](_0xbb10('0x74'),_0x31e85e,_0x251417);}else{if(_0x188cbd[_0xbb10('0x34')][_0xa7179d]===_0xbb10('0x75')){_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x76'));}else{_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x77'),_0x188cbd['query'][_0xa7179d]);}}});}if(_0x188cbd['query']['read']){if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x78')]==0x1){_0x3efa96[_0xbb10('0x59')]('`unreadMessages`\x20=\x200');}else{_0x3efa96['having'](_0xbb10('0x79'));}}if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]){_0x34cf4e=_[_0xbb10('0x7b')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')])?_0x188cbd['query'][_0xbb10('0x7a')]:new Array(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]);_0x34cf4e[_0xbb10('0x27')](function(_0x2aaaa6){_0x1bd054['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2aaaa6+',%');});}if(_0x188cbd['query']['filter']){var _0x329da7=_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7c')][_0xbb10('0x7d')]('\x5c','\x5c\x5c')[_0xbb10('0x7d')](/'/g,'\x27\x27');if(qs[_0xbb10('0x7e')](_0x329da7)){_0x5f0c12['or']('i.id\x20LIKE\x20?',_0x329da7+'%');}else if(qs[_0xbb10('0x7f')](_0x329da7)){_0x5f0c12['or']('c.email\x20LIKE\x20?',_0x329da7+'%');}else{_0x5f0c12['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x329da7))['or'](_0xbb10('0x80'),qs[_0xbb10('0x5f')](_0x329da7));}}}_0x3efa96[_0xbb10('0x3d')](_0x5f0c12);_0x3efa96[_0xbb10('0x81')]('i.id');var _0x122d38={'type':db['Sequelize']['QueryTypes'][_0xbb10('0x82')],'raw':!![]};var _0xfe3db0=_0x3efa96[_0xbb10('0x83')]();_0xfe3db0[_0xbb10('0x3e')](_0xbb10('0x84'));_0xfe3db0['field'](_0xbb10('0x85'),_0xbb10('0x57'));if(_0x3c8d7d[_0xbb10('0x3b')]){_0x3c8d7d[_0xbb10('0x3b')][_0xbb10('0x27')](function(_0x27f42f){var _0x174395=_0x27f42f[0x0]==='contactName'?_0x27f42f[0x0]:'i.'+_0x27f42f[0x0];_0x3efa96[_0xbb10('0x3b')](_0x174395,_0x27f42f[0x1]===_0xbb10('0x86')?![]:!![]);});}if(!_[_0xbb10('0x6e')](_0x34cf4e)){_0x3efa96[_0xbb10('0x59')](_0x1bd054);_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x87'),_0x34cf4e);}BPromise[_0xbb10('0x88')]()[_0xbb10('0x1e')](function(){if(!_0x10159b){if(_0x188cbd['query'][_0xbb10('0x89')])return;_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8a'));_0x3efa96['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x188cbd['user'][_0xbb10('0x8b')]!=='agent')return;return _0x188cbd['user'][_0xbb10('0x8c')]({'attributes':['id'],'raw':!![]})[_0xbb10('0x1e')](function(_0x33ff06){if(_[_0xbb10('0x6e')](_0x33ff06)){_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8d'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x8d'));}else{_0xfe3db0[_0xbb10('0x3d')]('i.MailAccountId\x20IN\x20?',_[_0xbb10('0x30')](_0x33ff06,'id'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),_[_0xbb10('0x30')](_0x33ff06,'id'));}});})['then'](function(){if(_0x188cbd['user'][_0xbb10('0x8b')]===_0xbb10('0x8e')&&!_0x10159b&&!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x89')])return[];return db['sequelize'][_0xbb10('0x34')](_0xfe3db0[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0xf7b3e1){_0x2b5352[_0xbb10('0x19')]=_0xf7b3e1['length'];if(_0x2b5352['count']===0x0)return[];return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x403beb[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x256b35){_0x23dc18=_[_0xbb10('0x91')](_0x256b35,'id');_0x122d38=_['merge'](_0x122d38,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x38')]){_0x3c8d7d[_0xbb10('0x39')]['forEach'](function(_0x32d5a5){_0x3efa96[_0xbb10('0x3e')]('i.'+_0x32d5a5);});}else{_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x85'),_0xbb10('0x57'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x92'),_0xbb10('0x93'));_0x3efa96[_0xbb10('0x3e')]('a.mandatoryDisposition',_0xbb10('0x94'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x95'),_0xbb10('0x96'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x84'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x97'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x98'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x99'));_0x3efa96['field']('i.closedAt');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9a'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9b'));_0x3efa96[_0xbb10('0x3e')]('i.lastMsgDirection');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9c'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9d'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9e'));_0x3efa96['field'](_0xbb10('0x9f'));_0x3efa96[_0xbb10('0x3e')]('i.substatus');_0x3efa96[_0xbb10('0x3e')]('i.to');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa0'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa1'));_0x3efa96[_0xbb10('0x3e')]('i.UserId');_0x3efa96[_0xbb10('0x3e')]('c.firstName',_0xbb10('0xa2'));_0x3efa96[_0xbb10('0x3e')]('c.lastName','Contact.lastName');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa3'),_0xbb10('0xa4'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa5'),_0xbb10('0xa6'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa7'),_0xbb10('0xa8'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa9'),'Contact.fax');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xaa'),_0xbb10('0xab'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xac'),_0xbb10('0xad'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xae'),_0xbb10('0x24'));}if(_0x3c8d7d[_0xbb10('0x18')])_0x3efa96[_0xbb10('0x18')](_0x3c8d7d[_0xbb10('0x18')]);if(_0x3c8d7d['offset'])_0x3efa96[_0xbb10('0x16')](_0x3c8d7d['offset']);return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x3efa96[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0x38d369){if(_0x38d369['length']>0x0)_0x180933[_0xbb10('0x3d')](_0xbb10('0xaf'),_[_0xbb10('0x30')](_0x38d369,'id'));return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x180933[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x4bd470){var _0x5cc9d7=_[_0xbb10('0xb0')](_0x4bd470,_0xbb10('0xb1'));var _0x57d5a1=[];return db[_0xbb10('0xb2')][_0xbb10('0xb3')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xbb10('0x1e')](function(_0xaede56){var _0x5642c3=_0xaede56[_0xbb10('0xb4')];_0x38d369['forEach'](function(_0x34cec7){_0x57d5a1[_0xbb10('0x28')](updateMailInteraction(_0x34cec7,_0x23dc18,_0x5cc9d7,_0x5642c3));});return BPromise['all'](_0x57d5a1);});});});})[_0xbb10('0x1e')](function(_0x28cc74){_0x2b5352['rows']=_0x28cc74;return _0x2b5352;})['then'](respondWithFilteredResult(_0x10202c,_0x3c8d7d))[_0xbb10('0x2e')](handleError(_0x10202c,null));};exports[_0xbb10('0xb5')]=function(_0x3e0e34,_0x3299bc){var _0x3ceb77={'raw':![],'where':{'id':_0x3e0e34[_0xbb10('0xb6')]['id']}},_0x4c3bdc={};_0x4c3bdc[_0xbb10('0x33')]=_[_0xbb10('0x35')](db['MailInteraction'][_0xbb10('0xb7')]);_0x4c3bdc[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x3e0e34[_0xbb10('0x34')]);_0x4c3bdc[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x4c3bdc[_0xbb10('0x33')],_0x4c3bdc[_0xbb10('0x34')]);_0x3ceb77[_0xbb10('0x39')]=_['intersection'](_0x4c3bdc['model'],qs[_0xbb10('0x38')](_0x3e0e34[_0xbb10('0x34')][_0xbb10('0x38')]));_0x3ceb77[_0xbb10('0x39')]=_0x3ceb77[_0xbb10('0x39')][_0xbb10('0x55')]?_0x3ceb77[_0xbb10('0x39')]:_0x4c3bdc[_0xbb10('0x33')];if(_0x3e0e34[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x3ceb77[_0xbb10('0xb9')]=[{'all':!![]}];}_0x3ceb77=_[_0xbb10('0xba')]({},_0x3ceb77,_0x3e0e34[_0xbb10('0xbb')]);return db['MailInteraction'][_0xbb10('0x56')](_0x3ceb77)[_0xbb10('0x1e')](handleEntityNotFound(_0x3299bc,null))[_0xbb10('0x1e')](respondWithResult(_0x3299bc,null))[_0xbb10('0x2e')](handleError(_0x3299bc,null));};exports[_0xbb10('0xbc')]=function(_0xd9284e,_0x4258fc){return db[_0xbb10('0x31')][_0xbb10('0xbc')](_0xd9284e[_0xbb10('0xbd')],{})[_0xbb10('0x1e')](respondWithResult(_0x4258fc,0xc9))['catch'](handleError(_0x4258fc,null));};exports[_0xbb10('0x1c')]=function(_0x5e1ac5,_0x3faaca){if(_0x5e1ac5[_0xbb10('0xbd')]['id']){delete _0x5e1ac5[_0xbb10('0xbd')]['id'];}return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x5e1ac5[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x3faaca,null))[_0xbb10('0x1e')](saveUpdates(_0x5e1ac5['body'],null))[_0xbb10('0x1e')](respondWithResult(_0x3faaca,null))[_0xbb10('0x2e')](handleError(_0x3faaca,null));};exports[_0xbb10('0x1d')]=function(_0x576bb6,_0x2b652c){return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x576bb6[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x2b652c,null))[_0xbb10('0x1e')](removeEntity(_0x2b652c,null))[_0xbb10('0x2e')](handleError(_0x2b652c,null));};exports[_0xbb10('0xbe')]=function(_0x589565,_0x3696b3){return db['MailInteraction'][_0xbb10('0xbe')]()[_0xbb10('0x1e')](respondWithResult(_0x3696b3,null))[_0xbb10('0x2e')](handleError(_0x3696b3,null));};exports[_0xbb10('0xbf')]=function(_0x44c229,_0x40271f){return db[_0xbb10('0x29')]['find']({'where':{'id':_0x44c229[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x40271f,null))['then'](function(_0x1513e0){if(_0x1513e0){return _0x1513e0[_0xbb10('0xbf')](_0x44c229[_0xbb10('0xbd')][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x44c229[_0xbb10('0xbd')],['ids','id'])||{});}})[_0xbb10('0x1e')](respondWithResult(_0x40271f,null))[_0xbb10('0x2e')](handleError(_0x40271f,null));};exports[_0xbb10('0xc2')]=function(_0xb1b7c8,_0x136520){var _0x28127c={'raw':![],'where':{}};var _0x528aff={};var _0xdfdc42={'count':0x0,'rows':[]};return db[_0xbb10('0x31')][_0xbb10('0xb3')]({'where':{'id':_0xb1b7c8[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x136520,null))[_0xbb10('0x1e')](function(_0x2764e1){if(_0x2764e1){_0x528aff['model']=_[_0xbb10('0x35')](db['MailMessage'][_0xbb10('0xb7')]);_0x528aff['query']=_['keys'](_0xb1b7c8[_0xbb10('0x34')]);_0x528aff[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x528aff[_0xbb10('0x33')],_0x528aff[_0xbb10('0x34')]);_0x28127c['attributes']=_[_0xbb10('0x37')](_0x528aff['model'],qs['fields'](_0xb1b7c8['query'][_0xbb10('0x38')]));_0x28127c[_0xbb10('0x39')]=_0x28127c[_0xbb10('0x39')][_0xbb10('0x55')]?_0x28127c[_0xbb10('0x39')]:_0x528aff['model'];if(!_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3a')](_0xbb10('0xc3'))){_0x28127c[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x18')]);_0x28127c['offset']=qs['offset'](_0xb1b7c8['query'][_0xbb10('0x16')]);}_0x28127c[_0xbb10('0x3b')]=qs[_0xbb10('0x3c')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x28127c[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_[_0xbb10('0xc4')](_0xb1b7c8[_0xbb10('0x34')],_0x528aff[_0xbb10('0x36')]));_0x28127c['where']['MailInteractionId']=_0x2764e1['id'];if(_0xb1b7c8['query'][_0xbb10('0x7c')]){_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c['where'],{'$or':_[_0xbb10('0x30')](_0x28127c[_0xbb10('0x39')],function(_0x2c638d){var _0x290280={};_0x290280[_0x2c638d]={'$like':'%'+_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x7c')]+'%'};return _0x290280;})});}if(_0xb1b7c8['query']['$gte']){var _0x356660=_0xb1b7c8['query'][_0xbb10('0xc5')][_0xbb10('0x26')](',');var _0x152ca9={};_0x152ca9[_0x356660[0x0]]={'$gte':moment(_0x356660[0x1])[_0xbb10('0xc6')](_0xbb10('0xc7'))};_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c[_0xbb10('0x3d')],_0x152ca9);}_0x28127c=_[_0xbb10('0xba')]({},_0x28127c,_0xb1b7c8[_0xbb10('0xbb')]);return db['MailMessage'][_0xbb10('0x19')]({'where':_0x28127c['where']})[_0xbb10('0x1e')](function(_0x5547fa){_0xdfdc42[_0xbb10('0x19')]=_0x5547fa;if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x28127c[_0xbb10('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0xbb10('0xc8')](_0x28127c);})['then'](function(_0xfe1154){if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xc9')]==='true'){for(var _0x298167=0x0;_0x298167<_0xfe1154[_0xbb10('0x55')];_0x298167++){_0xfe1154[_0x298167][_0xbb10('0xbd')]=juice(_0xfe1154[_0x298167][_0xbb10('0xbd')]);}}_0xdfdc42[_0xbb10('0xca')]=_0xfe1154;return _0xdfdc42;});}})[_0xbb10('0x1e')](respondWithFilteredResult(_0x136520,_0x28127c))['catch'](handleError(_0x136520,null));};exports['addTags']=function(_0x522a88,_0x26a752){return db['MailInteraction'][_0xbb10('0x56')]({'where':{'id':_0x522a88['params']['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x26a752,null))[_0xbb10('0x1e')](function(_0x385ad3){if(_0x385ad3){return _0x385ad3['setTags'](_0x522a88['body'][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x522a88[_0xbb10('0xbd')],['ids','id'])||{})[_0xbb10('0xcb')](function(){return db[_0xbb10('0x65')][_0xbb10('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x522a88['body'][_0xbb10('0xc0')]}});})['then'](function(_0x3dfbcd){socket[_0xbb10('0xcc')](_0xbb10('0xcd'),{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]});return{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]};});}})[_0xbb10('0x1e')](respondWithResult(_0x26a752,null))[_0xbb10('0x2e')](handleError(_0x26a752,null));};exports[_0xbb10('0xce')]=function(_0x2746eb,_0x431792){return db[_0xbb10('0x31')]['find']({'where':{'id':_0x2746eb[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x431792,null))['then'](function(_0x14ef50){if(_0x14ef50){return _0x14ef50['removeTags'](_0x2746eb['query'][_0xbb10('0xc0')]);}})[_0xbb10('0x1e')](respondWithStatusCode(_0x431792,null))[_0xbb10('0x2e')](handleError(_0x431792,null));};exports[_0xbb10('0xcf')]=function(_0x99c4,_0x4ca4ce){var _0x161171=moment()[_0xbb10('0xd0')]()['toString']();var _0xa45726=path[_0xbb10('0xd1')](config['root'],_0xbb10('0xd2'),'files',_0xbb10('0xd3'));var _0x8e8049=path[_0xbb10('0xd1')](config[_0xbb10('0xd4')],_0xbb10('0xd2'),_0xbb10('0xd5'),_0xbb10('0xd6'));var _0x56f902=path[_0xbb10('0xd1')](_0xa45726,_0x161171);var _0x4720a1=util[_0xbb10('0xc6')](_0xbb10('0xd7'),_0x99c4[_0xbb10('0xb6')]['id'],_0x161171);var _0x1301e3=path['join'](_0xa45726,_0x4720a1);var _0x550301=[];if(_0x99c4['query'][_0xbb10('0xd6')]){_0x550301[_0xbb10('0x28')]({'model':db[_0xbb10('0xd8')],'as':_0xbb10('0xd9'),'raw':!![]});}var _0x57700b=[{'model':db[_0xbb10('0x29')],'as':_0xbb10('0xda'),'attributes':['id',_0xbb10('0xbd'),'from','to','cc','bcc',_0xbb10('0xdb'),'createdAt'],'where':{'secret':![]},'order':qs[_0xbb10('0x3c')]('id'),'include':_0x550301}];return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x99c4[_0xbb10('0xb6')]['id']},'include':_0x57700b})[_0xbb10('0x1e')](handleEntityNotFound(_0x4ca4ce,null))[_0xbb10('0x1e')](function(_0x1fe250){if(_0x1fe250&&_0x1fe250['Messages']){var _0x424371=_0x1fe250[_0xbb10('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x56f902);return BPromise[_0xbb10('0xdd')](_0x424371[_0xbb10('0xda')],function(_0x32f261,_0x5b11a2){var _0x4b490a={'from':_0x32f261['from'],'to':_0x32f261['to'],'subject':_0x32f261[_0xbb10('0xdb')],'html':_0x32f261[_0xbb10('0xbd')],'headers':{'Date':moment(_0x32f261['createdAt'])[_0xbb10('0xc6')](_0xbb10('0xde'))},'attachments':[]};if(_0x32f261['cc']){_0x4b490a[_0xbb10('0xdf')]['Cc']=_0x32f261['cc'];}if(_0x32f261[_0xbb10('0xe0')]){_0x4b490a[_0xbb10('0xdf')][_0xbb10('0xe1')]=_0x32f261[_0xbb10('0xe0')];}return new BPromise(function(_0x48f0eb,_0x304603){if(_0x32f261['Attachments']){for(var _0x5a7c4e=0x0;_0x5a7c4e<_0x32f261['Attachments'][_0xbb10('0x55')];_0x5a7c4e++){var _0x572d73=_0x32f261['Attachments'][_0x5a7c4e];var _0x1f09f1=path['join'](_0x8e8049,_0x572d73[_0xbb10('0xe2')]);if(fs[_0xbb10('0xe3')](_0x1f09f1)){_0x4b490a[_0xbb10('0xd6')]['push']({'name':_0x572d73['name'],'contentType':_0x572d73[_0xbb10('0x63')],'data':fs['readFileSync'](_0x1f09f1)});}}}emlformat[_0xbb10('0xe4')](_0x4b490a,function(_0x211172,_0x589ecb){if(_0x211172)return _0x304603(_0x211172);fs['writeFileSync'](path[_0xbb10('0xd1')](_0x56f902,util[_0xbb10('0xc6')](_0xbb10('0xe5'),_0x5b11a2)),_0x589ecb);return _0x48f0eb(_0x589ecb);});});})['then'](function(){return new BPromise(function(_0x4f4aa8,_0x426a4f){zipdir(_0x56f902,{'saveTo':_0x1301e3},function(_0x22f153,_0x4d47cc){if(_0x22f153)return _0x426a4f(_0x22f153);return _0x4f4aa8(_0x4d47cc);});})[_0xbb10('0x1e')](function(){return new BPromise(function(_0x203e5a,_0xe88e90){rimraf(_0x56f902,function(_0x4845b5){if(_0x4845b5)_0xe88e90(_0x4845b5);return _0x203e5a();});});})[_0xbb10('0x1e')](function(){return _0x4ca4ce[_0xbb10('0xcf')](_0x1301e3,_0x4720a1,function(_0x166f4f){if(!_0x166f4f)fs[_0xbb10('0xe6')](_0x1301e3);});});});}else{return _0x4ca4ce[_0xbb10('0x12')](0xc8);}})[_0xbb10('0x2e')](handleError(_0x4ca4ce,null));};
\ No newline at end of file
index 280212c..b483d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fe4=['hasOwnProperty','hook','MailInteraction','../../mysqldb','setMaxListeners','save','remove','getUsers','Users','then','setDataValue','emit','catch'];(function(_0x173113,_0x316a7c){var _0x3bea89=function(_0xd33ac1){while(--_0xd33ac1){_0x173113['push'](_0x173113['shift']());}};_0x3bea89(++_0x316a7c);}(_0x7fe4,0x188));var _0x47fe=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x7fe4[_0x525c7b];return _0x27b33e;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0x47fe('0x0')];var MailMessage=require(_0x47fe('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x47fe('0x2')](0x0);var events={'afterCreate':_0x47fe('0x3'),'afterUpdate':'update','afterDestroy':_0x47fe('0x4')};function emitEvent(_0x3c1b22){return function(_0x4c0bf9,_0xb0854d,_0x30a72b){_0x4c0bf9[_0x47fe('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x46e0a1){_0x4c0bf9['setDataValue'](_0x47fe('0x6'),_0x46e0a1['map'](function(_0x8abdf5){return{'id':_0x8abdf5['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x4c0bf9['id'],'direction':'in','read':![]},'raw':!![]});})[_0x47fe('0x7')](function(_0x2017b1){_0x4c0bf9[_0x47fe('0x8')]('unreadMessages',_0x2017b1['length']);MailInteractionEvents[_0x47fe('0x9')](_0x3c1b22+':'+_0x4c0bf9['id'],_0x4c0bf9);MailInteractionEvents[_0x47fe('0x9')](_0x3c1b22,_0x4c0bf9);_0x30a72b(null);})[_0x47fe('0xa')](_0x30a72b(null));};}for(var e in events){if(events[_0x47fe('0xb')](e)){var event=events[e];MailInteraction[_0x47fe('0xc')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0xf44d=['setMaxListeners','save','update','remove','getUsers','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','MailMessage'];(function(_0x1acf4d,_0x271e6b){var _0x2880a0=function(_0x448f12){while(--_0x448f12){_0x1acf4d['push'](_0x1acf4d['shift']());}};_0x2880a0(++_0x271e6b);}(_0xf44d,0x88));var _0xdf44=function(_0x3635e9,_0x1eff09){_0x3635e9=_0x3635e9-0x0;var _0xccc591=_0xf44d[_0x3635e9];return _0xccc591;};'use strict';var EventEmitter=require(_0xdf44('0x0'));var MailInteraction=require(_0xdf44('0x1'))['db'][_0xdf44('0x2')];var MailMessage=require(_0xdf44('0x1'))['db'][_0xdf44('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xdf44('0x4')](0x0);var events={'afterCreate':_0xdf44('0x5'),'afterUpdate':_0xdf44('0x6'),'afterDestroy':_0xdf44('0x7')};function emitEvent(_0x31420d){return function(_0x106a93,_0x348d1e,_0x5be0cc){_0x106a93[_0xdf44('0x8')]({'attributes':['id'],'raw':!![]})['then'](function(_0x423b29){_0x106a93[_0xdf44('0x9')](_0xdf44('0xa'),_0x423b29[_0xdf44('0xb')](function(_0x195902){return{'id':_0x195902['id']};}));return MailMessage[_0xdf44('0xc')]({'where':{'MailInteractionId':_0x106a93['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x49a4c6){_0x106a93[_0xdf44('0x9')](_0xdf44('0xd'),_0x49a4c6[_0xdf44('0xe')]);MailInteractionEvents[_0xdf44('0xf')](_0x31420d+':'+_0x106a93['id'],_0x106a93);MailInteractionEvents[_0xdf44('0xf')](_0x31420d,_0x106a93);_0x5be0cc(null);})[_0xdf44('0x10')](_0x5be0cc(null));};}for(var e in events){if(events[_0xdf44('0x11')](e)){var event=events[e];MailInteraction[_0xdf44('0x12')](e,emitEvent(event));}}module[_0xdf44('0x13')]=MailInteractionEvents;
\ No newline at end of file
index 3440d3c..3a9a5b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e8=['format','changed','models','get','MailMessage','then','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x27e8,0x173));var _0x827e=function(_0x11a4cf,_0xba423){_0x11a4cf=_0x11a4cf-0x0;var _0x1be912=_0x27e8[_0x11a4cf];return _0x1be912;};'use strict';var _=require(_0x827e('0x0'));var util=require(_0x827e('0x1'));var logger=require(_0x827e('0x2'))('api');var moment=require(_0x827e('0x3'));var BPromise=require(_0x827e('0x4'));var rp=require(_0x827e('0x5'));var fs=require('fs');var path=require(_0x827e('0x6'));var rimraf=require(_0x827e('0x7'));var config=require(_0x827e('0x8'));var attributes=require(_0x827e('0x9'));module[_0x827e('0xa')]=function(_0x5d2d34,_0x199073){return _0x5d2d34[_0x827e('0xb')]('MailInteraction',attributes,{'tableName':_0x827e('0xc'),'paranoid':![],'indexes':[{'name':_0x827e('0xd'),'fields':[_0x827e('0xe'),'to'],'type':_0x827e('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5498fc,_0x19505b,_0x45eb9d){if(_0x5498fc[_0x827e('0x10')]){_0x5498fc[_0x827e('0x11')]=moment()['format'](_0x827e('0x12'));}if(_0x5498fc[_0x827e('0x13')]){_0x5498fc[_0x827e('0x14')]=moment()[_0x827e('0x15')](_0x827e('0x12'));}_0x45eb9d(null,_0x19505b);},'beforeUpdate':function(_0x326d2b,_0xee2bfb,_0xb9480e){if(_0x326d2b[_0x827e('0x16')]('substatus')){_0x326d2b['substatusAt']=_0x326d2b[_0x827e('0x10')]?moment()[_0x827e('0x15')](_0x827e('0x12')):null;}if(_0x326d2b[_0x827e('0x16')](_0x827e('0x13'))){_0x326d2b[_0x827e('0x14')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x326d2b[_0x827e('0x10')]=null;_0x326d2b[_0x827e('0x11')]=null;}_0xb9480e(null,_0x326d2b);},'afterUpdate':function(_0xc60fd8,_0x325646,_0x44c2d0){var _0x37643a=_0x5d2d34[_0x827e('0x17')];var _0x4753d7=_0xc60fd8[_0x827e('0x18')]({'plain':!![]});if(_0x4753d7[_0x827e('0x13')]){return _0x37643a[_0x827e('0x19')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x4753d7['id']}})[_0x827e('0x1a')](function(){_0x44c2d0();})['catch'](function(_0xe26860){_0x44c2d0(_0xe26860);});}else{_0x44c2d0();}}},'charset':_0x827e('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf45e=['changed','closedAt','models','get','MailMessage','update','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','path','rimraf','../../config/environment','exports','define','MailInteraction','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','format'];(function(_0x41f191,_0x1b8cf0){var _0x3a9aaa=function(_0xe2187e){while(--_0xe2187e){_0x41f191['push'](_0x41f191['shift']());}};_0x3a9aaa(++_0x1b8cf0);}(_0xf45e,0x1a8));var _0xef45=function(_0x2c094e,_0x2c7043){_0x2c094e=_0x2c094e-0x0;var _0xa43640=_0xf45e[_0x2c094e];return _0xa43640;};'use strict';var _=require(_0xef45('0x0'));var util=require(_0xef45('0x1'));var logger=require('../../config/logger')(_0xef45('0x2'));var moment=require('moment');var BPromise=require(_0xef45('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef45('0x4'));var rimraf=require(_0xef45('0x5'));var config=require(_0xef45('0x6'));var attributes=require('./mailInteraction.attributes');module[_0xef45('0x7')]=function(_0x554b07,_0x1ee46a){return _0x554b07[_0xef45('0x8')](_0xef45('0x9'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xef45('0xa'),'fields':[_0xef45('0xb'),'to'],'type':_0xef45('0xc')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x36b59f,_0x214c7b,_0x30c0df){if(_0x36b59f[_0xef45('0xd')]){_0x36b59f[_0xef45('0xe')]=moment()['format'](_0xef45('0xf'));}if(_0x36b59f[_0xef45('0x10')]){_0x36b59f['closedAt']=moment()[_0xef45('0x11')](_0xef45('0xf'));}_0x30c0df(null,_0x214c7b);},'beforeUpdate':function(_0x5a3534,_0x48604c,_0x17014d){if(_0x5a3534[_0xef45('0x12')](_0xef45('0xd'))){_0x5a3534[_0xef45('0xe')]=_0x5a3534[_0xef45('0xd')]?moment()[_0xef45('0x11')](_0xef45('0xf')):null;}if(_0x5a3534[_0xef45('0x12')](_0xef45('0x10'))){_0x5a3534[_0xef45('0x13')]=moment()[_0xef45('0x11')](_0xef45('0xf'));_0x5a3534[_0xef45('0xd')]=null;_0x5a3534['substatusAt']=null;}_0x17014d(null,_0x5a3534);},'afterUpdate':function(_0x352a17,_0x23ae15,_0x5ec254){var _0xc569d4=_0x554b07[_0xef45('0x14')];var _0x45caea=_0x352a17[_0xef45('0x15')]({'plain':!![]});if(_0x45caea[_0xef45('0x10')]){return _0xc569d4[_0xef45('0x16')][_0xef45('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x45caea['id']}})['then'](function(){_0x5ec254();})['catch'](function(_0x4af239){_0x5ec254(_0x4af239);});}else{_0x5ec254();}}},'charset':_0xef45('0x18'),'collate':_0xef45('0x19')});};
\ No newline at end of file
index 5bcb9a1..6f0c524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x347a=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','localhost','socket.io-emitter','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','AddTagsToMailInteraction','addTags','body','omit','ids','spread','AddTags','lodash'];(function(_0x3ff5ee,_0x48d6ef){var _0xc41683=function(_0x4ee0ff){while(--_0x4ee0ff){_0x3ff5ee['push'](_0x3ff5ee['shift']());}};_0xc41683(++_0x48d6ef);}(_0x347a,0x12f));var _0xa347=function(_0x1ccb95,_0x1b3be8){_0x1ccb95=_0x1ccb95-0x0;var _0x1a9725=_0x347a[_0x1ccb95];return _0x1a9725;};'use strict';var _=require(_0xa347('0x0'));var util=require(_0xa347('0x1'));var moment=require(_0xa347('0x2'));var BPromise=require(_0xa347('0x3'));var rs=require(_0xa347('0x4'));var fs=require('fs');var Redis=require(_0xa347('0x5'));var db=require(_0xa347('0x6'))['db'];var utils=require(_0xa347('0x7'));var logger=require(_0xa347('0x8'))(_0xa347('0x9'));var config=require(_0xa347('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xa347('0xb')]=_['defaults'](config[_0xa347('0xb')],{'host':_0xa347('0xc'),'port':0x18eb});var socket=require(_0xa347('0xd'))(new Redis(config[_0xa347('0xb')]));require('./mailInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x4a1c11,_0x5d8cbf,_0x159dbc){return new BPromise(function(_0xd29acd,_0x581e3d){return client['request'](_0x4a1c11,_0x159dbc)[_0xa347('0xe')](function(_0x3549e3){logger[_0xa347('0xf')](_0xa347('0x10'),_0x5d8cbf,_0xa347('0x11'));logger[_0xa347('0x12')](_0xa347('0x13'),_0x5d8cbf,'request\x20sent',JSON[_0xa347('0x14')](_0x3549e3));if(_0x3549e3[_0xa347('0x15')]){if(_0x3549e3[_0xa347('0x15')]['code']===0x1f4){logger[_0xa347('0x15')](_0xa347('0x10'),_0x5d8cbf,_0x3549e3['error'][_0xa347('0x16')]);return _0x581e3d(_0x3549e3[_0xa347('0x15')][_0xa347('0x16')]);}logger[_0xa347('0x15')](_0xa347('0x10'),_0x5d8cbf,_0x3549e3['error']['message']);return _0xd29acd(_0x3549e3[_0xa347('0x15')][_0xa347('0x16')]);}else{logger[_0xa347('0xf')](_0xa347('0x10'),_0x5d8cbf,'request\x20sent');_0xd29acd(_0x3549e3['result'][_0xa347('0x16')]);}})[_0xa347('0x17')](function(_0x146eff){logger[_0xa347('0x15')](_0xa347('0x10'),_0x5d8cbf,_0x146eff);_0x581e3d(_0x146eff);});});}exports[_0xa347('0x18')]=function(_0x3854c6){var _0x13a635=this;return new Promise(function(_0x2da51a,_0x2d6e2a){return db[_0xa347('0x19')][_0xa347('0x1a')](_0x3854c6['body'],{'raw':_0x3854c6[_0xa347('0x1b')]?_0x3854c6[_0xa347('0x1b')][_0xa347('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3854c6[_0xa347('0x1b')]?_0x3854c6[_0xa347('0x1b')][_0xa347('0x1d')]||null:null,'attributes':_0x3854c6['options']?_0x3854c6[_0xa347('0x1b')][_0xa347('0x1e')]||null:null,'limit':_0x3854c6['options']?_0x3854c6['options']['limit']||null:null})['then'](function(_0x48588e){logger[_0xa347('0xf')](_0xa347('0x18'),_0x3854c6);logger['debug'](_0xa347('0x18'),_0x3854c6,JSON['stringify'](_0x48588e));_0x2da51a(_0x48588e);})[_0xa347('0x17')](function(_0x496358){logger[_0xa347('0x15')](_0xa347('0x18'),_0x496358[_0xa347('0x16')],_0x3854c6);_0x2d6e2a(_0x13a635['error'](0x1f4,_0x496358['message']));});});};exports[_0xa347('0x1f')]=function(_0x1186e7){return new Promise(function(_0x473168,_0x83f097){return db['MailInteraction']['find']({'where':_0x1186e7[_0xa347('0x1b')]?_0x1186e7[_0xa347('0x1b')][_0xa347('0x1d')]||null:null})[_0xa347('0xe')](function(_0x2778a7){if(_0x2778a7){return _0x2778a7[_0xa347('0x20')](_0x1186e7[_0xa347('0x21')]['ids'],_[_0xa347('0x22')](_0x1186e7[_0xa347('0x21')],[_0xa347('0x23'),'id'])||{});}})[_0xa347('0x24')](function(_0x2270ed){logger[_0xa347('0xf')](_0xa347('0x25'),_0x1186e7);logger[_0xa347('0x12')](_0xa347('0x25'),_0x1186e7,JSON['stringify'](_0x2270ed));_0x473168(_0x2270ed);})['catch'](function(_0x9ae78a){logger[_0xa347('0x15')]('AddTags',_0x9ae78a[_0xa347('0x16')],_0x1186e7);_0x83f097(_this[_0xa347('0x15')](0x1f4,_0x9ae78a[_0xa347('0x16')]));});});};
\ No newline at end of file
+var _0xef94=['rpc','../../config/environment','jayson/promise','redis','defaults','localhost','request','then','debug','request\x20sent','stringify','error','code','MailInteraction,\x20%s,\x20%s','message','info','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','find','addTags','ids','omit','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xef94,0x1b5));var _0x4ef9=function(_0x443f7d,_0x281222){_0x443f7d=_0x443f7d-0x0;var _0x4ce699=_0xef94[_0x443f7d];return _0x4ce699;};'use strict';var _=require(_0x4ef9('0x0'));var util=require(_0x4ef9('0x1'));var moment=require('moment');var BPromise=require(_0x4ef9('0x2'));var rs=require(_0x4ef9('0x3'));var fs=require('fs');var Redis=require(_0x4ef9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ef9('0x5'));var logger=require(_0x4ef9('0x6'))(_0x4ef9('0x7'));var config=require(_0x4ef9('0x8'));var jayson=require(_0x4ef9('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x4ef9('0xa')]=_[_0x4ef9('0xb')](config[_0x4ef9('0xa')],{'host':_0x4ef9('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4ef9('0xa')]));require('./mailInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x15b9f0,_0x7d54c,_0x4fb698){return new BPromise(function(_0x2f15dd,_0x2f5ba8){return client[_0x4ef9('0xd')](_0x15b9f0,_0x4fb698)[_0x4ef9('0xe')](function(_0x283aca){logger['info']('MailInteraction,\x20%s,\x20%s',_0x7d54c,'request\x20sent');logger[_0x4ef9('0xf')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x7d54c,_0x4ef9('0x10'),JSON[_0x4ef9('0x11')](_0x283aca));if(_0x283aca[_0x4ef9('0x12')]){if(_0x283aca['error'][_0x4ef9('0x13')]===0x1f4){logger[_0x4ef9('0x12')](_0x4ef9('0x14'),_0x7d54c,_0x283aca[_0x4ef9('0x12')][_0x4ef9('0x15')]);return _0x2f5ba8(_0x283aca[_0x4ef9('0x12')][_0x4ef9('0x15')]);}logger[_0x4ef9('0x12')]('MailInteraction,\x20%s,\x20%s',_0x7d54c,_0x283aca['error'][_0x4ef9('0x15')]);return _0x2f15dd(_0x283aca[_0x4ef9('0x12')]['message']);}else{logger[_0x4ef9('0x16')](_0x4ef9('0x14'),_0x7d54c,_0x4ef9('0x10'));_0x2f15dd(_0x283aca[_0x4ef9('0x17')][_0x4ef9('0x15')]);}})[_0x4ef9('0x18')](function(_0x156264){logger[_0x4ef9('0x12')](_0x4ef9('0x14'),_0x7d54c,_0x156264);_0x2f5ba8(_0x156264);});});}exports[_0x4ef9('0x19')]=function(_0x4db83c){var _0x332bd8=this;return new Promise(function(_0x46fb94,_0x5cf9cd){return db[_0x4ef9('0x1a')][_0x4ef9('0x1b')](_0x4db83c[_0x4ef9('0x1c')],{'raw':_0x4db83c[_0x4ef9('0x1d')]?_0x4db83c[_0x4ef9('0x1d')][_0x4ef9('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db83c[_0x4ef9('0x1d')]?_0x4db83c[_0x4ef9('0x1d')][_0x4ef9('0x1f')]||null:null,'attributes':_0x4db83c[_0x4ef9('0x1d')]?_0x4db83c[_0x4ef9('0x1d')]['attributes']||null:null,'limit':_0x4db83c['options']?_0x4db83c[_0x4ef9('0x1d')]['limit']||null:null})['then'](function(_0x2abd25){logger[_0x4ef9('0x16')](_0x4ef9('0x19'),_0x4db83c);logger[_0x4ef9('0xf')](_0x4ef9('0x19'),_0x4db83c,JSON[_0x4ef9('0x11')](_0x2abd25));_0x46fb94(_0x2abd25);})[_0x4ef9('0x18')](function(_0x1893c9){logger['error']('UpdateMailInteraction',_0x1893c9[_0x4ef9('0x15')],_0x4db83c);_0x5cf9cd(_0x332bd8[_0x4ef9('0x12')](0x1f4,_0x1893c9['message']));});});};exports['AddTagsToMailInteraction']=function(_0x585f0d){return new Promise(function(_0x27bf7c,_0x4db21e){return db[_0x4ef9('0x1a')][_0x4ef9('0x20')]({'where':_0x585f0d[_0x4ef9('0x1d')]?_0x585f0d[_0x4ef9('0x1d')][_0x4ef9('0x1f')]||null:null})[_0x4ef9('0xe')](function(_0x455aaf){if(_0x455aaf){return _0x455aaf[_0x4ef9('0x21')](_0x585f0d[_0x4ef9('0x1c')][_0x4ef9('0x22')],_[_0x4ef9('0x23')](_0x585f0d[_0x4ef9('0x1c')],[_0x4ef9('0x22'),'id'])||{});}})['spread'](function(_0x18feaa){logger[_0x4ef9('0x16')](_0x4ef9('0x24'),_0x585f0d);logger[_0x4ef9('0xf')](_0x4ef9('0x24'),_0x585f0d,JSON['stringify'](_0x18feaa));_0x27bf7c(_0x18feaa);})['catch'](function(_0x16ad40){logger[_0x4ef9('0x12')](_0x4ef9('0x24'),_0x16ad40[_0x4ef9('0x15')],_0x585f0d);_0x4db21e(_this[_0x4ef9('0x12')](0x1f4,_0x16ad40[_0x4ef9('0x15')]));});});};
\ No newline at end of file
index 16d7be2..ec7838e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d20=['length','./mailInteraction.events','save','remove','emit','register'];(function(_0xcedaf5,_0x20e447){var _0x17456f=function(_0x399268){while(--_0x399268){_0xcedaf5['push'](_0xcedaf5['shift']());}};_0x17456f(++_0x20e447);}(_0x1d20,0x133));var _0x01d2=function(_0x23efe3,_0x4fbb00){_0x23efe3=_0x23efe3-0x0;var _0x34b03f=_0x1d20[_0x23efe3];return _0x34b03f;};'use strict';var MailInteractionEvents=require(_0x01d2('0x0'));var events=[_0x01d2('0x1'),_0x01d2('0x2'),'update'];function createListener(_0x340668,_0x113c0e){return function(_0x4c5c00){_0x113c0e[_0x01d2('0x3')](_0x340668,_0x4c5c00);};}function removeListener(_0x1550b1,_0x3fea96){return function(){MailInteractionEvents['removeListener'](_0x1550b1,_0x3fea96);};}exports[_0x01d2('0x4')]=function(_0x504e23){for(var _0x6d7651=0x0,_0x505601=events[_0x01d2('0x5')];_0x6d7651<_0x505601;_0x6d7651++){var _0x152883=events[_0x6d7651];var _0x4beab4=createListener('mailInteraction:'+_0x152883,_0x504e23);MailInteractionEvents['on'](_0x152883,_0x4beab4);}};
\ No newline at end of file
+var _0x32d5=['./mailInteraction.events','save','remove','update','emit','removeListener','length','mailInteraction:'];(function(_0x4dbfe8,_0x1ce992){var _0x5d11bf=function(_0x4e333f){while(--_0x4e333f){_0x4dbfe8['push'](_0x4dbfe8['shift']());}};_0x5d11bf(++_0x1ce992);}(_0x32d5,0xe0));var _0x532d=function(_0x1338e0,_0x183d91){_0x1338e0=_0x1338e0-0x0;var _0x568352=_0x32d5[_0x1338e0];return _0x568352;};'use strict';var MailInteractionEvents=require(_0x532d('0x0'));var events=[_0x532d('0x1'),_0x532d('0x2'),_0x532d('0x3')];function createListener(_0x57ba7e,_0x4d10a6){return function(_0x19095d){_0x4d10a6[_0x532d('0x4')](_0x57ba7e,_0x19095d);};}function removeListener(_0xf35211,_0x9e6a10){return function(){MailInteractionEvents[_0x532d('0x5')](_0xf35211,_0x9e6a10);};}exports['register']=function(_0x28377c){for(var _0x1b5081=0x0,_0x34213a=events[_0x532d('0x6')];_0x1b5081<_0x34213a;_0x1b5081++){var _0x17f762=events[_0x1b5081];var _0xdda5d1=createListener(_0x532d('0x7')+_0x17f762,_0x28377c);MailInteractionEvents['on'](_0x17f762,_0xdda5d1);}};
\ No newline at end of file
index 33b43cc..1329cb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5fd=['get','/describe','describe','/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','create','update','put','/:id/reject','reject','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','isAuthenticated','index'];(function(_0x8014d8,_0x134a36){var _0x581b7b=function(_0x45c7ce){while(--_0x45c7ce){_0x8014d8['push'](_0x8014d8['shift']());}};_0x581b7b(++_0x134a36);}(_0xb5fd,0x82));var _0xdb5f=function(_0x10c52d,_0x508e20){_0x10c52d=_0x10c52d-0x0;var _0x4df380=_0xb5fd[_0x10c52d];return _0x4df380;};'use strict';var multer=require(_0xdb5f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdb5f('0x1'));var express=require(_0xdb5f('0x2'));var router=express[_0xdb5f('0x3')]();var fs_extra=require(_0xdb5f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdb5f('0x5'));var config=require(_0xdb5f('0x6'));var controller=require(_0xdb5f('0x7'));router['get']('/',auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x9')]);router[_0xdb5f('0xa')](_0xdb5f('0xb'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0xc')]);router[_0xdb5f('0xa')](_0xdb5f('0xd'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0xe')]);router[_0xdb5f('0xa')](_0xdb5f('0xf'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x10')]);router[_0xdb5f('0x11')]('/',auth['isAuthenticated'](),interaction[_0xdb5f('0x12')](_0xdb5f('0x13'),_0xdb5f('0x14')),controller[_0xdb5f('0x15')]);router['put']('/:id',auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x16')]);router[_0xdb5f('0x17')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router['put'](_0xdb5f('0x18'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x19')]);router[_0xdb5f('0x1a')](_0xdb5f('0xd'),auth['isAuthenticated'](),controller[_0xdb5f('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xb75c=['delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','index','get','/describe','/:id','isAuthenticated','show','/:id/download','download','mail','mailmessage:create','create','put','update','/:id/accept','accept','/:id/reject'];(function(_0x4ae328,_0x4e595c){var _0xc25a42=function(_0x24fe88){while(--_0x24fe88){_0x4ae328['push'](_0x4ae328['shift']());}};_0xc25a42(++_0x4e595c);}(_0xb75c,0x1ce));var _0xcb75=function(_0x297110,_0x33cdd8){_0x297110=_0x297110-0x0;var _0x83122a=_0xb75c[_0x297110];return _0x83122a;};'use strict';var multer=require(_0xcb75('0x0'));var util=require(_0xcb75('0x1'));var path=require(_0xcb75('0x2'));var timeout=require('connect-timeout');var express=require(_0xcb75('0x3'));var router=express['Router']();var fs_extra=require(_0xcb75('0x4'));var auth=require(_0xcb75('0x5'));var interaction=require(_0xcb75('0x6'));var config=require('../../config/environment');var controller=require(_0xcb75('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xcb75('0x8')]);router[_0xcb75('0x9')](_0xcb75('0xa'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xcb75('0xb'),auth[_0xcb75('0xc')](),controller[_0xcb75('0xd')]);router['get'](_0xcb75('0xe'),auth['isAuthenticated'](),controller[_0xcb75('0xf')]);router['post']('/',auth[_0xcb75('0xc')](),interaction['tracked'](_0xcb75('0x10'),_0xcb75('0x11')),controller[_0xcb75('0x12')]);router[_0xcb75('0x13')]('/:id',auth[_0xcb75('0xc')](),controller[_0xcb75('0x14')]);router[_0xcb75('0x13')](_0xcb75('0x15'),auth[_0xcb75('0xc')](),controller[_0xcb75('0x16')]);router[_0xcb75('0x13')](_0xcb75('0x17'),auth['isAuthenticated'](),controller['reject']);router[_0xcb75('0x18')](_0xcb75('0xb'),auth['isAuthenticated'](),controller[_0xcb75('0x19')]);module[_0xcb75('0x1a')]=router;
\ No newline at end of file
index 3e34b62..245084f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86dc=['TEXT','long','medium','ENUM','out','STRING','BOOLEAN','DATE','Email','Chat','sequelize'];(function(_0x2e65c8,_0x7a63cd){var _0x4b52e2=function(_0x3a5bd1){while(--_0x3a5bd1){_0x2e65c8['push'](_0x2e65c8['shift']());}};_0x4b52e2(++_0x7a63cd);}(_0x86dc,0x13e));var _0xc86d=function(_0x530e17,_0x3308bd){_0x530e17=_0x530e17-0x0;var _0xda04da=_0x86dc[_0x530e17];return _0xda04da;};'use strict';var Sequelize=require(_0xc86d('0x0'));var _=require('lodash');module['exports']={'body':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x3'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xc86d('0x4')]('in','out'),'defaultValue':_0xc86d('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xc86d('0x6')]},'to':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x2'))},'cc':{'type':Sequelize['TEXT'](_0xc86d('0x2'))},'bcc':{'type':Sequelize['TEXT'](_0xc86d('0x2'))},'subject':{'type':Sequelize[_0xc86d('0x1')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xc86d('0x7')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xc86d('0x8')]},'originTo':{'type':Sequelize['TEXT'](_0xc86d('0x2'))},'originCc':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x2'))},'originChannel':{'type':Sequelize[_0xc86d('0x4')](_0xc86d('0x9'),_0xc86d('0xa')),'defaultValue':_0xc86d('0x9'),'allowNull':![]}};
\ No newline at end of file
+var _0xbc8c=['medium','BOOLEAN','ENUM','out','STRING','long','DATE','INTEGER','Email','Chat','sequelize','lodash','exports','TEXT'];(function(_0xc747cb,_0x4e06ce){var _0x27de2a=function(_0x3e1bda){while(--_0x3e1bda){_0xc747cb['push'](_0xc747cb['shift']());}};_0x27de2a(++_0x4e06ce);}(_0xbc8c,0x14c));var _0xcbc8=function(_0x3b150c,_0x2f93f8){_0x3b150c=_0x3b150c-0x0;var _0x5cd414=_0xbc8c[_0x3b150c];return _0x5cd414;};'use strict';var Sequelize=require(_0xcbc8('0x0'));var _=require(_0xcbc8('0x1'));module[_0xcbc8('0x2')]={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xcbc8('0x3')](_0xcbc8('0x4'))},'read':{'type':Sequelize[_0xcbc8('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcbc8('0x6')]('in',_0xcbc8('0x7')),'defaultValue':_0xcbc8('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0xcbc8('0x8')](0x1fe)},'from':{'type':Sequelize[_0xcbc8('0x8')]},'to':{'type':Sequelize[_0xcbc8('0x3')](_0xcbc8('0x9'))},'cc':{'type':Sequelize[_0xcbc8('0x3')](_0xcbc8('0x9'))},'bcc':{'type':Sequelize[_0xcbc8('0x3')](_0xcbc8('0x9'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0xcbc8('0xa')]},'attach':{'type':Sequelize[_0xcbc8('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xcbc8('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xcbc8('0xa')]},'originTo':{'type':Sequelize[_0xcbc8('0x3')](_0xcbc8('0x9'))},'originCc':{'type':Sequelize['TEXT'](_0xcbc8('0x9'))},'originChannel':{'type':Sequelize['ENUM'](_0xcbc8('0xc'),_0xcbc8('0xd')),'defaultValue':_0xcbc8('0xc'),'allowNull':![]}};
\ No newline at end of file
index d829b4e..382be76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['params','describe','create','secret','split','MailAccount','MailAccountId','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','isNil','port','secure','authentication','auth','service','user','pass','attachments','join','server/files/attachments','defaults','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','agent','UserId','MailInteraction','MailInteractionId','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','reject','fromString','rejectmessage','unix','toString','root','server','files','tmp','message-%s.eml','from','subject','createdAt','headers','bcc','Bcc','Attachments','basename','existsSync','readFileSync','build','download','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','redis','localhost','socket.io-emitter','register','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','json','undefined','limit','count','offset','Content-Range','update','then','destroy','status','end','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','filters','find','body'];(function(_0x1931a3,_0x475f06){var _0x418ed4=function(_0x1c4db1){while(--_0x1c4db1){_0x1931a3['push'](_0x1931a3['shift']());}};_0x418ed4(++_0x475f06);}(_0xedd9,0xfc));var _0x9edd=function(_0x2ba760,_0x5eaceb){_0x2ba760=_0x2ba760-0x0;var _0x32438a=_0xedd9[_0x2ba760];return _0x32438a;};'use strict';var emlformat=require('eml-format');var moment=require(_0x9edd('0x0'));var BPromise=require(_0x9edd('0x1'));var util=require(_0x9edd('0x2'));var path=require(_0x9edd('0x3'));var fs=require('fs');var _=require(_0x9edd('0x4'));var Redis=require(_0x9edd('0x5'));var htmlToText=require(_0x9edd('0x6'));var qs=require(_0x9edd('0x7'));var logger=require('../../config/logger')(_0x9edd('0x8'));var interaction_log=require(_0x9edd('0x9'))(_0x9edd('0xa'));var config=require(_0x9edd('0xb'));var db=require('../../mysqldb')['db'];config[_0x9edd('0xc')]=_['defaults'](config[_0x9edd('0xc')],{'host':_0x9edd('0xd'),'port':0x18eb});var socket=require(_0x9edd('0xe'))(new Redis(config[_0x9edd('0xc')]));require('./mailMessage.socket')[_0x9edd('0xf')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9edd('0x10')][_0x9edd('0x11')]({'port':0x232c});var client9003=jayson['client'][_0x9edd('0x11')]({'port':0x232b});var client9002=jayson[_0x9edd('0x10')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30c0d7,_0x1b73d1,_0x25e64c,_0xfd544a){return new BPromise(function(_0x287ddd,_0x3a7b84){var _0xfca576=_0xfd544a||client;return _0xfca576[_0x9edd('0x12')](_0x30c0d7,_0x25e64c)['then'](function(_0x176bfa){logger[_0x9edd('0x13')](_0x9edd('0x14'),_0x1b73d1,_0x9edd('0x15'));logger[_0x9edd('0x16')](_0x9edd('0x17'),_0x1b73d1,_0x9edd('0x15'),JSON[_0x9edd('0x18')](_0x176bfa));if(_0x176bfa['error']){if(_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1a')]===0x1f4){logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x3a7b84(_0x176bfa[_0x9edd('0x19')]['message']);}logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x287ddd(_0x176bfa['error']['message']);}else{logger[_0x9edd('0x13')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x9edd('0x15'));_0x287ddd(_0x176bfa['result']['message']);}})[_0x9edd('0x1c')](function(_0x1c46a8){logger['error']('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x1c46a8);_0x3a7b84(_0x1c46a8);});});}function respondWithResult(_0x341d67,_0x186186){_0x186186=_0x186186||0xc8;return function(_0x477878){if(_0x477878){return _0x341d67['status'](_0x186186)[_0x9edd('0x1d')](_0x477878);}};}function respondWithFilteredResult(_0x1dca43,_0x44a6c1){return function(_0x2ca65f){if(_0x2ca65f){var _0x339a0d=typeof _0x44a6c1['offset']===_0x9edd('0x1e')&&typeof _0x44a6c1[_0x9edd('0x1f')]===_0x9edd('0x1e');var _0x2f9f86=_0x2ca65f[_0x9edd('0x20')];var _0x4d507f=_0x339a0d?0x0:_0x44a6c1['offset'];var _0x3276ee=_0x339a0d?_0x2ca65f[_0x9edd('0x20')]:_0x44a6c1[_0x9edd('0x21')]+_0x44a6c1[_0x9edd('0x1f')];var _0x3c2227;if(_0x3276ee>=_0x2f9f86){_0x3276ee=_0x2f9f86;_0x3c2227=0xc8;}else{_0x3c2227=0xce;}_0x1dca43['status'](_0x3c2227);return _0x1dca43['set'](_0x9edd('0x22'),_0x4d507f+'-'+_0x3276ee+'/'+_0x2f9f86)[_0x9edd('0x1d')](_0x2ca65f);}return null;};}function saveUpdates(_0x1c762c){return function(_0x52746a){if(_0x52746a){return _0x52746a[_0x9edd('0x23')](_0x1c762c)[_0x9edd('0x24')](function(_0x2ae8dd){return _0x2ae8dd;});}return null;};}function removeEntity(_0x41af53){return function(_0x5eccfb){if(_0x5eccfb){return _0x5eccfb[_0x9edd('0x25')]()[_0x9edd('0x24')](function(){_0x41af53[_0x9edd('0x26')](0xcc)[_0x9edd('0x27')]();});}};}function handleEntityNotFound(_0xbbf08f){return function(_0x42e664){if(!_0x42e664){_0xbbf08f[_0x9edd('0x28')](0x194);}return _0x42e664;};}function handleError(_0x1fba7b,_0x19b6c1){_0x19b6c1=_0x19b6c1||0x1f4;return function(_0x1c2e2b){logger[_0x9edd('0x19')](_0x1c2e2b[_0x9edd('0x29')]);if(_0x1c2e2b[_0x9edd('0x2a')]){delete _0x1c2e2b[_0x9edd('0x2a')];}_0x1fba7b[_0x9edd('0x26')](_0x19b6c1)['send'](_0x1c2e2b);};}exports[_0x9edd('0x2b')]=function(_0x259259,_0x267c74){var _0x5d1707={},_0x2d2f88={},_0x3990fb={'count':0x0,'rows':[]};var _0xde9b13=_[_0x9edd('0x2c')](db[_0x9edd('0x2d')][_0x9edd('0x2e')],function(_0x473068){return{'name':_0x473068[_0x9edd('0x2f')],'type':_0x473068[_0x9edd('0x30')][_0x9edd('0x31')]};});_0x2d2f88[_0x9edd('0x32')]=_[_0x9edd('0x2c')](_0xde9b13,_0x9edd('0x2a'));_0x2d2f88[_0x9edd('0x33')]=_['keys'](_0x259259[_0x9edd('0x33')]);_0x2d2f88['filters']=_[_0x9edd('0x34')](_0x2d2f88[_0x9edd('0x32')],_0x2d2f88[_0x9edd('0x33')]);_0x5d1707[_0x9edd('0x35')]=_[_0x9edd('0x34')](_0x2d2f88['model'],qs[_0x9edd('0x36')](_0x259259[_0x9edd('0x33')][_0x9edd('0x36')]));_0x5d1707[_0x9edd('0x35')]=_0x5d1707[_0x9edd('0x35')][_0x9edd('0x37')]?_0x5d1707[_0x9edd('0x35')]:_0x2d2f88[_0x9edd('0x32')];if(!_0x259259[_0x9edd('0x33')][_0x9edd('0x38')]('nolimit')){_0x5d1707[_0x9edd('0x1f')]=qs['limit'](_0x259259[_0x9edd('0x33')]['limit']);_0x5d1707[_0x9edd('0x21')]=qs[_0x9edd('0x21')](_0x259259[_0x9edd('0x33')]['offset']);}_0x5d1707[_0x9edd('0x39')]=qs[_0x9edd('0x3a')](_0x259259[_0x9edd('0x33')]['sort']);_0x5d1707[_0x9edd('0x3b')]=qs['filters'](_[_0x9edd('0x3c')](_0x259259[_0x9edd('0x33')],_0x2d2f88['filters']),_0xde9b13);if(_0x259259[_0x9edd('0x33')][_0x9edd('0x3d')]){_0x5d1707[_0x9edd('0x3b')]=_[_0x9edd('0x3e')](_0x5d1707['where'],{'$or':_[_0x9edd('0x2c')](_0xde9b13,function(_0x5bbdf8){if(_0x5bbdf8[_0x9edd('0x30')]!==_0x9edd('0x3f')){var _0x587d74={};_0x587d74[_0x5bbdf8[_0x9edd('0x2a')]]={'$like':'%'+_0x259259['query']['filter']+'%'};return _0x587d74;}})});}_0x5d1707=_[_0x9edd('0x3e')]({},_0x5d1707,_0x259259[_0x9edd('0x40')]);var _0x1f276b={'where':_0x5d1707[_0x9edd('0x3b')]};return db[_0x9edd('0x2d')][_0x9edd('0x20')](_0x1f276b)[_0x9edd('0x24')](function(_0x75efbe){_0x3990fb[_0x9edd('0x20')]=_0x75efbe;if(_0x259259[_0x9edd('0x33')][_0x9edd('0x41')]){_0x5d1707[_0x9edd('0x42')]=[{'all':!![]}];}return db[_0x9edd('0x2d')][_0x9edd('0x43')](_0x5d1707);})[_0x9edd('0x24')](function(_0x5416f8){_0x3990fb[_0x9edd('0x44')]=_0x5416f8;return _0x3990fb;})[_0x9edd('0x24')](respondWithFilteredResult(_0x267c74,_0x5d1707))[_0x9edd('0x1c')](handleError(_0x267c74,null));};exports[_0x9edd('0x45')]=function(_0x241929,_0x3ecdfd){var _0x10d41e={'raw':!![],'where':{'id':_0x241929['params']['id']}},_0x4e9ad1={};_0x4e9ad1['model']=_[_0x9edd('0x46')](db['MailMessage'][_0x9edd('0x2e')]);_0x4e9ad1[_0x9edd('0x33')]=_[_0x9edd('0x46')](_0x241929[_0x9edd('0x33')]);_0x4e9ad1[_0x9edd('0x47')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],_0x4e9ad1[_0x9edd('0x33')]);_0x10d41e[_0x9edd('0x35')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],qs[_0x9edd('0x36')](_0x241929[_0x9edd('0x33')][_0x9edd('0x36')]));_0x10d41e[_0x9edd('0x35')]=_0x10d41e[_0x9edd('0x35')]['length']?_0x10d41e[_0x9edd('0x35')]:_0x4e9ad1[_0x9edd('0x32')];if(_0x241929['query'][_0x9edd('0x41')]){_0x10d41e[_0x9edd('0x42')]=[{'all':!![]}];}_0x10d41e=_['merge']({},_0x10d41e,_0x241929[_0x9edd('0x40')]);return db[_0x9edd('0x2d')][_0x9edd('0x48')](_0x10d41e)['then'](handleEntityNotFound(_0x3ecdfd,null))[_0x9edd('0x24')](respondWithResult(_0x3ecdfd,null))[_0x9edd('0x1c')](handleError(_0x3ecdfd,null));};exports[_0x9edd('0x23')]=function(_0x28c7bd,_0x53f6e3){if(_0x28c7bd[_0x9edd('0x49')]['id']){delete _0x28c7bd[_0x9edd('0x49')]['id'];}return db[_0x9edd('0x2d')]['find']({'where':{'id':_0x28c7bd[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x53f6e3,null))['then'](saveUpdates(_0x28c7bd[_0x9edd('0x49')],null))['then'](respondWithResult(_0x53f6e3,null))[_0x9edd('0x1c')](handleError(_0x53f6e3,null));};exports[_0x9edd('0x25')]=function(_0x24245f,_0x3fcdf5){return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x24245f[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x3fcdf5,null))[_0x9edd('0x24')](removeEntity(_0x3fcdf5,null))[_0x9edd('0x1c')](handleError(_0x3fcdf5,null));};exports[_0x9edd('0x4b')]=function(_0x5a3b1d,_0x161bea){return db[_0x9edd('0x2d')][_0x9edd('0x4b')]()['then'](respondWithResult(_0x161bea,null))[_0x9edd('0x1c')](handleError(_0x161bea,null));};exports['create']=function(_0x54d83d,_0x54ecfa){return db[_0x9edd('0x2d')][_0x9edd('0x4c')](_0x54d83d[_0x9edd('0x49')])[_0x9edd('0x24')](function(_0x48a900){if(_0x48a900){if(_0x48a900['direction']==='out'&&!_0x48a900[_0x9edd('0x4d')]){var _0x5f666b,_0xd5090a,_0x1091ff;if(_0x54d83d[_0x9edd('0x49')]['to']){_0xd5090a=_0x54d83d[_0x9edd('0x49')]['to'][_0x9edd('0x4e')](',')[0x0];}return db[_0x9edd('0x4f')]['findOne']({'where':{'id':_0x48a900[_0x9edd('0x50')]},'include':[{'model':db['CmList'],'as':_0x9edd('0x51'),'include':[{'model':db[_0x9edd('0x52')],'as':'Contacts','where':{'email':_0xd5090a},'limit':0x1,'order':[[_0x9edd('0x53'),_0x9edd('0x54')]]}]},{'model':db[_0x9edd('0x55')],'as':'Smtp','raw':!![]}]})[_0x9edd('0x24')](function(_0x2e1ce3){_0x5f666b=_0x2e1ce3;if(_0x5f666b&&_0x5f666b[_0x9edd('0x56')]){var _0x15ebfa={'tls':{'rejectUnauthorized':![]}};if(_[_0x9edd('0x57')](_0x5f666b[_0x9edd('0x56')]['service'])){_0x15ebfa['host']=_0x5f666b[_0x9edd('0x56')]['host'];_0x15ebfa[_0x9edd('0x58')]=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x58')];_0x15ebfa[_0x9edd('0x59')]=_0x5f666b['Smtp'][_0x9edd('0x59')];if(_0x5f666b['Smtp'][_0x9edd('0x5a')]){_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b[_0x9edd('0x56')]['user'],'pass':_0x5f666b[_0x9edd('0x56')]['pass']};}}else{_0x15ebfa[_0x9edd('0x5c')]=_0x5f666b[_0x9edd('0x56')]['service'];_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b['Smtp'][_0x9edd('0x5d')],'pass':_0x5f666b[_0x9edd('0x56')][_0x9edd('0x5e')]};_0x15ebfa['secure']=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x59')];}if(_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')]&&_0x54d83d[_0x9edd('0x49')]['attachments']['length']){for(var _0x2e1a96=0x0;_0x2e1a96<_0x54d83d[_0x9edd('0x49')]['attachments']['length'];_0x2e1a96+=0x1){_0x54d83d['body'][_0x9edd('0x5f')][_0x2e1a96]={'filename':_0x54d83d['body']['attachments'][_0x2e1a96][_0x9edd('0x2a')],'path':path[_0x9edd('0x60')](config['root'],_0x9edd('0x61'),_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')][_0x2e1a96]['basename'])};}}_0x1091ff={'account':_0x15ebfa,'message':_0x54d83d[_0x9edd('0x49')]};return;}})['then'](function(){if(_0x5f666b[_0x9edd('0x51')]){if(_0x5f666b[_0x9edd('0x51')]['Contacts'][_0x9edd('0x37')]){return _0x5f666b[_0x9edd('0x51')]['Contacts'][0x0];}else{return db[_0x9edd('0x52')][_0x9edd('0x4c')](_[_0x9edd('0x62')](_0x54d83d[_0x9edd('0x49')],{'firstName':_0x54d83d['body']['to'],'email':_0x54d83d[_0x9edd('0x49')]['to'],'phone':_0x54d83d['body']['to'],'ListId':_0x5f666b[_0x9edd('0x63')]}));}}else{throw new Error(_0x9edd('0x64'));}})[_0x9edd('0x24')](function(){if(_0x1091ff){return respondWithRpcPromise('SendMail',_0x9edd('0x65'),_0x1091ff,client9003)[_0x9edd('0x24')](function(_0x130dba){return _0x48a900[_0x9edd('0x23')]({'read':!![],'messageId':_0x130dba[_0x9edd('0x66')],'sentAt':moment()[_0x9edd('0x67')](_0x9edd('0x68'))});})['catch'](function(_0x5e29d0){logger[_0x9edd('0x19')]('%s',JSON[_0x9edd('0x18')](_0x5e29d0));return _0x48a900;});}return _0x48a900;});}return _0x48a900;}})[_0x9edd('0x24')](respondWithResult(_0x54ecfa,0xc9))[_0x9edd('0x1c')](handleError(_0x54ecfa,null));};exports[_0x9edd('0x69')]=function(_0x52f6f3,_0x2e40c8){var _0x5d56a={'agent':{},'channel':_0x9edd('0x6a')};if(_0x52f6f3['body']['id']){delete _0x52f6f3[_0x9edd('0x49')]['id'];}_0x52f6f3[_0x9edd('0x49')]['read']=!![];_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6b')]=moment()['format'](_0x9edd('0x68'));_0x52f6f3[_0x9edd('0x49')]['UserId']=_0x52f6f3[_0x9edd('0x49')]['UserId']||_0x52f6f3['user']['id'];_0x5d56a[_0x9edd('0x6c')]['id']=_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')];return db['MailMessage'][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x4a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](saveUpdates(_0x52f6f3[_0x9edd('0x49')],null))[_0x9edd('0x24')](function(_0x1ad198){if(_0x1ad198){_0x5d56a['message']=_0x1ad198['get']({'plain':!![]});return db[_0x9edd('0x6e')]['find']({'where':{'id':_0x1ad198[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](function(_0x3cfd35){if(_0x3cfd35){return _0x3cfd35[_0x9edd('0x23')]({'UserId':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'read1stAt':_[_0x9edd('0x57')](_0x3cfd35[_0x9edd('0x70')])?moment()['format'](_0x9edd('0x68')):undefined});}return null;})[_0x9edd('0x24')](function(_0x2c7562){if(_0x2c7562){_0x5d56a[_0x9edd('0x71')]=_0x2c7562[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x73'),_0x52f6f3['user']['id'],_0x52f6f3[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x52f6f3['user'][_0x9edd('0x74')],_0x5d56a[_0x9edd('0x71')]['id'],_0x52f6f3['body']?JSON[_0x9edd('0x18')](_0x52f6f3[_0x9edd('0x49')]):_0x9edd('0x75'));return respondWithRpcPromise('AcceptMessage',_0x9edd('0x76'),_0x5d56a);}return null;})[_0x9edd('0x24')](function(_0x3f04d3){var _0x5a7de3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3f04d3['message']['ContactId'];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x5a7de3,{'type':db[_0x9edd('0x78')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x56d794){return _0x56d794;});})[_0x9edd('0x24')](function(_0x20762d){if(_0x20762d){_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x79')]=_0x20762d[0x0];if(!_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')])return;return db[_0x9edd('0x7a')][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id','name',_0x9edd('0x7b'),_0x9edd('0x7c'),_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x104afc){if(!_0x104afc)return null;_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x104afc;return _0x5d56a;})[_0x9edd('0x24')](function(_0x4a7889){if(_0x4a7889){if(_0x52f6f3['body'][_0x9edd('0x7e')]){_0x5d56a['message'][_0x9edd('0x7f')]=util['format'](_0x9edd('0x80'),_0x52f6f3[_0x9edd('0x5d')]['name']);_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x5d56a['channel'];_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x69');_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText['fromString'](_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]);return respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x84'),'message':_0x5d56a['message']},client9002)['then'](function(){return _0x5d56a;});}return _0x5d56a;}return null;})['then'](respondWithResult(_0x2e40c8,null))['catch'](handleError(_0x2e40c8,null));};exports['reject']=function(_0x2da088,_0x5d566e){var _0x58cb3f={'agent':{},'channel':_0x9edd('0x6a')};if(_0x2da088[_0x9edd('0x49')]['id']){delete _0x2da088[_0x9edd('0x49')]['id'];}_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]=_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]||_0x2da088[_0x9edd('0x5d')]['id'];_0x58cb3f[_0x9edd('0x6c')]['id']=_0x2da088[_0x9edd('0x49')]['UserId'];return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x4a')]['id'],'UserId':null}})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x23e925){if(_0x23e925){_0x58cb3f[_0x9edd('0x1b')]=_0x23e925[_0x9edd('0x72')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x23e925[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x120d0f){if(_0x120d0f){_0x58cb3f[_0x9edd('0x71')]=_0x120d0f[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x85'),_0x2da088[_0x9edd('0x5d')]['id'],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x74')],_0x58cb3f[_0x9edd('0x71')]['id'],_0x2da088['body']?JSON[_0x9edd('0x18')](_0x2da088[_0x9edd('0x49')]):'null');return respondWithRpcPromise(_0x9edd('0x86'),_0x9edd('0x87'),_0x58cb3f);}return null;})[_0x9edd('0x24')](function(_0x2b4d4c){var _0x559503=_0x9edd('0x88')+_0x2b4d4c[_0x9edd('0x1b')][_0x9edd('0x89')];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x559503,{'type':db['Sequelize'][_0x9edd('0x8a')][_0x9edd('0x8b')],'raw':!![]})[_0x9edd('0x24')](function(_0x4633eb){return _0x4633eb;});})[_0x9edd('0x24')](function(_0x59927d){if(_0x59927d){_0x58cb3f['message'][_0x9edd('0x79')]=_0x59927d[0x0];if(!_0x2da088['body'][_0x9edd('0x6d')])return;return db['User'][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id',_0x9edd('0x2a'),_0x9edd('0x7b'),'email',_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x3aae72){if(!_0x3aae72)return null;_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x3aae72;return _0x58cb3f;})[_0x9edd('0x24')](function(_0x2f8fb6){if(_0x2f8fb6){_0x2f8fb6[_0x9edd('0x1b')]['interface']=util[_0x9edd('0x67')](_0x9edd('0x80'),_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')]);_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x58cb3f[_0x9edd('0x81')];_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x8c');_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText[_0x9edd('0x8d')](_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x49')]);respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x8e'),'message':_0x2f8fb6[_0x9edd('0x1b')]},client9002);return _0x58cb3f;}return null;})[_0x9edd('0x24')](respondWithResult(_0x5d566e,null))[_0x9edd('0x1c')](handleError(_0x5d566e,null));};exports['download']=function(_0xa704eb,_0x553018){var _0x4ca7e4=moment()[_0x9edd('0x8f')]()[_0x9edd('0x90')]();var _0x220c00=path[_0x9edd('0x60')](config[_0x9edd('0x91')],_0x9edd('0x92'),_0x9edd('0x93'),_0x9edd('0x94'));var _0x3e5a45=path[_0x9edd('0x60')](config['root'],_0x9edd('0x92'),_0x9edd('0x93'),'attachments');var _0x568067=util[_0x9edd('0x67')](_0x9edd('0x95'),_0x4ca7e4);return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0xa704eb['params']['id']},'attributes':['id','body',_0x9edd('0x96'),'to','cc','bcc',_0x9edd('0x97'),_0x9edd('0x98')],'include':_0xa704eb[_0x9edd('0x33')]['attachments']?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0x9edd('0x24')](handleEntityNotFound(_0x553018,null))[_0x9edd('0x24')](function(_0x7b0fc8){if(_0x7b0fc8){var _0x5bfbfd=_0x7b0fc8;var _0xb2e72={'from':_0x5bfbfd[_0x9edd('0x96')],'to':_0x5bfbfd['to'],'subject':_0x5bfbfd['subject'],'html':_0x5bfbfd[_0x9edd('0x49')],'headers':{'Date':moment(_0x5bfbfd[_0x9edd('0x98')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x7b0fc8['cc']){_0xb2e72[_0x9edd('0x99')]['Cc']=_0x7b0fc8['cc'];}if(_0x7b0fc8[_0x9edd('0x9a')]){_0xb2e72['headers'][_0x9edd('0x9b')]=_0x7b0fc8[_0x9edd('0x9a')];}return new BPromise(function(_0x54c6a0,_0x201d76){if(_0x7b0fc8['Attachments']){for(var _0x308a0f=0x0;_0x308a0f<_0x7b0fc8[_0x9edd('0x9c')][_0x9edd('0x37')];_0x308a0f++){var _0x742e13=_0x7b0fc8[_0x9edd('0x9c')][_0x308a0f];var _0x3e6426=path['join'](_0x3e5a45,_0x742e13[_0x9edd('0x9d')]);if(fs[_0x9edd('0x9e')](_0x3e6426)){_0xb2e72[_0x9edd('0x5f')]['push']({'name':_0x742e13[_0x9edd('0x2a')],'contentType':_0x742e13['type'],'data':fs[_0x9edd('0x9f')](_0x3e6426)});}}}emlformat[_0x9edd('0xa0')](_0xb2e72,function(_0x25da04,_0x41b0ea){if(_0x25da04)return _0x201d76(_0x25da04);fs['writeFileSync'](path['join'](_0x220c00,_0x568067),_0x41b0ea);return _0x54c6a0(_0x41b0ea);});});}})['then'](function(_0x12dcfa){if(_0x12dcfa){return _0x553018[_0x9edd('0xa1')](path[_0x9edd('0x60')](_0x220c00,_0x568067),_0x568067,function(_0x50af78){if(!_0x50af78)fs[_0x9edd('0xa2')](path[_0x9edd('0x60')](_0x220c00,_0x568067));});}})[_0x9edd('0x1c')](handleError(_0x553018,null));};
\ No newline at end of file
+var _0xeae4=['stack','name','send','index','map','MailMessage','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','find','body','params','describe','create','direction','split','MailAccount','findOne','MailAccountId','CmList','CmContact','updatedAt','DESC','Smtp','host','port','secure','auth','user','pass','service','attachments','join','root','server/files/attachments','basename','List','Contacts','List\x20not\x20found','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','format','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','motionChannel','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','channel','rejectmessage','download','unix','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','undefined','limit','count','offset','set','Content-Range','json','update','destroy','end','sendStatus'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeae4,0x1c6));var _0x4eae=function(_0x49f18c,_0x3fb4e9){_0x49f18c=_0x49f18c-0x0;var _0x506fe1=_0xeae4[_0x49f18c];return _0x506fe1;};'use strict';var emlformat=require(_0x4eae('0x0'));var moment=require(_0x4eae('0x1'));var BPromise=require(_0x4eae('0x2'));var util=require(_0x4eae('0x3'));var path=require(_0x4eae('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x4eae('0x5'));var htmlToText=require(_0x4eae('0x6'));var qs=require(_0x4eae('0x7'));var logger=require(_0x4eae('0x8'))(_0x4eae('0x9'));var interaction_log=require(_0x4eae('0x8'))(_0x4eae('0xa'));var config=require(_0x4eae('0xb'));var db=require(_0x4eae('0xc'))['db'];config[_0x4eae('0xd')]=_[_0x4eae('0xe')](config[_0x4eae('0xd')],{'host':_0x4eae('0xf'),'port':0x18eb});var socket=require(_0x4eae('0x10'))(new Redis(config[_0x4eae('0xd')]));require(_0x4eae('0x11'))[_0x4eae('0x12')](socket);var jayson=require(_0x4eae('0x13'));var client=jayson[_0x4eae('0x14')][_0x4eae('0x15')]({'port':0x232c});var client9003=jayson[_0x4eae('0x14')][_0x4eae('0x15')]({'port':0x232b});var client9002=jayson[_0x4eae('0x14')]['http']({'port':0x232a});function respondWithRpcPromise(_0x382de0,_0x24cb11,_0x3c1f57,_0x44bd46){return new BPromise(function(_0x40bf2f,_0x1f73d2){var _0x5805aa=_0x44bd46||client;return _0x5805aa[_0x4eae('0x16')](_0x382de0,_0x3c1f57)[_0x4eae('0x17')](function(_0x36ed1d){logger[_0x4eae('0x18')](_0x4eae('0x19'),_0x24cb11,_0x4eae('0x1a'));logger[_0x4eae('0x1b')](_0x4eae('0x1c'),_0x24cb11,_0x4eae('0x1a'),JSON[_0x4eae('0x1d')](_0x36ed1d));if(_0x36ed1d['error']){if(_0x36ed1d[_0x4eae('0x1e')][_0x4eae('0x1f')]===0x1f4){logger['error'](_0x4eae('0x19'),_0x24cb11,_0x36ed1d[_0x4eae('0x1e')]['message']);return _0x1f73d2(_0x36ed1d[_0x4eae('0x1e')][_0x4eae('0x20')]);}logger[_0x4eae('0x1e')](_0x4eae('0x19'),_0x24cb11,_0x36ed1d['error']['message']);return _0x40bf2f(_0x36ed1d['error'][_0x4eae('0x20')]);}else{logger[_0x4eae('0x18')](_0x4eae('0x19'),_0x24cb11,'request\x20sent');_0x40bf2f(_0x36ed1d[_0x4eae('0x21')]['message']);}})[_0x4eae('0x22')](function(_0xb90d22){logger[_0x4eae('0x1e')](_0x4eae('0x19'),_0x24cb11,_0xb90d22);_0x1f73d2(_0xb90d22);});});}function respondWithResult(_0x594587,_0x15ccc1){_0x15ccc1=_0x15ccc1||0xc8;return function(_0x2ec33f){if(_0x2ec33f){return _0x594587[_0x4eae('0x23')](_0x15ccc1)['json'](_0x2ec33f);}};}function respondWithFilteredResult(_0x31b62c,_0x38bb48){return function(_0x383338){if(_0x383338){var _0x421554=typeof _0x38bb48['offset']===_0x4eae('0x24')&&typeof _0x38bb48[_0x4eae('0x25')]===_0x4eae('0x24');var _0x53a236=_0x383338['count'];var _0x38ae71=_0x421554?0x0:_0x38bb48['offset'];var _0x5b1c4e=_0x421554?_0x383338[_0x4eae('0x26')]:_0x38bb48[_0x4eae('0x27')]+_0x38bb48['limit'];var _0x24ddaf;if(_0x5b1c4e>=_0x53a236){_0x5b1c4e=_0x53a236;_0x24ddaf=0xc8;}else{_0x24ddaf=0xce;}_0x31b62c[_0x4eae('0x23')](_0x24ddaf);return _0x31b62c[_0x4eae('0x28')](_0x4eae('0x29'),_0x38ae71+'-'+_0x5b1c4e+'/'+_0x53a236)[_0x4eae('0x2a')](_0x383338);}return null;};}function saveUpdates(_0x2f0d28){return function(_0x5d6693){if(_0x5d6693){return _0x5d6693[_0x4eae('0x2b')](_0x2f0d28)[_0x4eae('0x17')](function(_0x4582ca){return _0x4582ca;});}return null;};}function removeEntity(_0x1f18e0){return function(_0x4ea794){if(_0x4ea794){return _0x4ea794[_0x4eae('0x2c')]()[_0x4eae('0x17')](function(){_0x1f18e0[_0x4eae('0x23')](0xcc)[_0x4eae('0x2d')]();});}};}function handleEntityNotFound(_0xb8e8e6){return function(_0x5cfa4c){if(!_0x5cfa4c){_0xb8e8e6[_0x4eae('0x2e')](0x194);}return _0x5cfa4c;};}function handleError(_0x5e3ddc,_0x259e5b){_0x259e5b=_0x259e5b||0x1f4;return function(_0x40da8){logger[_0x4eae('0x1e')](_0x40da8[_0x4eae('0x2f')]);if(_0x40da8[_0x4eae('0x30')]){delete _0x40da8[_0x4eae('0x30')];}_0x5e3ddc[_0x4eae('0x23')](_0x259e5b)[_0x4eae('0x31')](_0x40da8);};}exports[_0x4eae('0x32')]=function(_0x51ffab,_0x148dab){var _0x44edca={},_0x50b8ff={},_0x57a052={'count':0x0,'rows':[]};var _0x1b543c=_[_0x4eae('0x33')](db[_0x4eae('0x34')]['rawAttributes'],function(_0x355c23){return{'name':_0x355c23[_0x4eae('0x35')],'type':_0x355c23[_0x4eae('0x36')]['key']};});_0x50b8ff['model']=_[_0x4eae('0x33')](_0x1b543c,'name');_0x50b8ff[_0x4eae('0x37')]=_['keys'](_0x51ffab[_0x4eae('0x37')]);_0x50b8ff[_0x4eae('0x38')]=_[_0x4eae('0x39')](_0x50b8ff[_0x4eae('0x3a')],_0x50b8ff[_0x4eae('0x37')]);_0x44edca[_0x4eae('0x3b')]=_[_0x4eae('0x39')](_0x50b8ff[_0x4eae('0x3a')],qs[_0x4eae('0x3c')](_0x51ffab['query'][_0x4eae('0x3c')]));_0x44edca['attributes']=_0x44edca[_0x4eae('0x3b')][_0x4eae('0x3d')]?_0x44edca[_0x4eae('0x3b')]:_0x50b8ff[_0x4eae('0x3a')];if(!_0x51ffab['query'][_0x4eae('0x3e')](_0x4eae('0x3f'))){_0x44edca[_0x4eae('0x25')]=qs[_0x4eae('0x25')](_0x51ffab[_0x4eae('0x37')][_0x4eae('0x25')]);_0x44edca[_0x4eae('0x27')]=qs[_0x4eae('0x27')](_0x51ffab[_0x4eae('0x37')][_0x4eae('0x27')]);}_0x44edca[_0x4eae('0x40')]=qs[_0x4eae('0x41')](_0x51ffab[_0x4eae('0x37')][_0x4eae('0x41')]);_0x44edca[_0x4eae('0x42')]=qs[_0x4eae('0x38')](_['pick'](_0x51ffab['query'],_0x50b8ff[_0x4eae('0x38')]),_0x1b543c);if(_0x51ffab[_0x4eae('0x37')][_0x4eae('0x43')]){_0x44edca['where']=_[_0x4eae('0x44')](_0x44edca['where'],{'$or':_[_0x4eae('0x33')](_0x1b543c,function(_0x3efc72){if(_0x3efc72[_0x4eae('0x36')]!==_0x4eae('0x45')){var _0x538161={};_0x538161[_0x3efc72['name']]={'$like':'%'+_0x51ffab[_0x4eae('0x37')][_0x4eae('0x43')]+'%'};return _0x538161;}})});}_0x44edca=_['merge']({},_0x44edca,_0x51ffab[_0x4eae('0x46')]);var _0x3270f1={'where':_0x44edca['where']};return db[_0x4eae('0x34')][_0x4eae('0x26')](_0x3270f1)['then'](function(_0x3a3314){_0x57a052[_0x4eae('0x26')]=_0x3a3314;if(_0x51ffab[_0x4eae('0x37')][_0x4eae('0x47')]){_0x44edca[_0x4eae('0x48')]=[{'all':!![]}];}return db['MailMessage'][_0x4eae('0x49')](_0x44edca);})[_0x4eae('0x17')](function(_0x4a07fc){_0x57a052[_0x4eae('0x4a')]=_0x4a07fc;return _0x57a052;})['then'](respondWithFilteredResult(_0x148dab,_0x44edca))[_0x4eae('0x22')](handleError(_0x148dab,null));};exports[_0x4eae('0x4b')]=function(_0x192acd,_0x49829a){var _0x5a5ec0={'raw':!![],'where':{'id':_0x192acd['params']['id']}},_0x42d385={};_0x42d385[_0x4eae('0x3a')]=_[_0x4eae('0x4c')](db[_0x4eae('0x34')]['rawAttributes']);_0x42d385[_0x4eae('0x37')]=_[_0x4eae('0x4c')](_0x192acd[_0x4eae('0x37')]);_0x42d385[_0x4eae('0x38')]=_['intersection'](_0x42d385[_0x4eae('0x3a')],_0x42d385[_0x4eae('0x37')]);_0x5a5ec0[_0x4eae('0x3b')]=_[_0x4eae('0x39')](_0x42d385[_0x4eae('0x3a')],qs[_0x4eae('0x3c')](_0x192acd[_0x4eae('0x37')][_0x4eae('0x3c')]));_0x5a5ec0[_0x4eae('0x3b')]=_0x5a5ec0[_0x4eae('0x3b')][_0x4eae('0x3d')]?_0x5a5ec0[_0x4eae('0x3b')]:_0x42d385[_0x4eae('0x3a')];if(_0x192acd[_0x4eae('0x37')][_0x4eae('0x47')]){_0x5a5ec0[_0x4eae('0x48')]=[{'all':!![]}];}_0x5a5ec0=_['merge']({},_0x5a5ec0,_0x192acd[_0x4eae('0x46')]);return db[_0x4eae('0x34')][_0x4eae('0x4d')](_0x5a5ec0)[_0x4eae('0x17')](handleEntityNotFound(_0x49829a,null))['then'](respondWithResult(_0x49829a,null))['catch'](handleError(_0x49829a,null));};exports[_0x4eae('0x2b')]=function(_0x4f03ec,_0x2bf382){if(_0x4f03ec[_0x4eae('0x4e')]['id']){delete _0x4f03ec[_0x4eae('0x4e')]['id'];}return db[_0x4eae('0x34')][_0x4eae('0x4d')]({'where':{'id':_0x4f03ec['params']['id']}})['then'](handleEntityNotFound(_0x2bf382,null))[_0x4eae('0x17')](saveUpdates(_0x4f03ec[_0x4eae('0x4e')],null))[_0x4eae('0x17')](respondWithResult(_0x2bf382,null))['catch'](handleError(_0x2bf382,null));};exports['destroy']=function(_0x2d49be,_0x190bb0){return db[_0x4eae('0x34')][_0x4eae('0x4d')]({'where':{'id':_0x2d49be[_0x4eae('0x4f')]['id']}})['then'](handleEntityNotFound(_0x190bb0,null))[_0x4eae('0x17')](removeEntity(_0x190bb0,null))['catch'](handleError(_0x190bb0,null));};exports[_0x4eae('0x50')]=function(_0xca50f3,_0x5cb113){return db['MailMessage']['describe']()['then'](respondWithResult(_0x5cb113,null))[_0x4eae('0x22')](handleError(_0x5cb113,null));};exports[_0x4eae('0x51')]=function(_0x2e18e4,_0xbc6faf){return db['MailMessage'][_0x4eae('0x51')](_0x2e18e4[_0x4eae('0x4e')])[_0x4eae('0x17')](function(_0x5e9c99){if(_0x5e9c99){if(_0x5e9c99[_0x4eae('0x52')]==='out'&&!_0x5e9c99['secret']){var _0xc5ef12,_0x1b4a07,_0x21ee77;if(_0x2e18e4[_0x4eae('0x4e')]['to']){_0x1b4a07=_0x2e18e4[_0x4eae('0x4e')]['to'][_0x4eae('0x53')](',')[0x0];}return db[_0x4eae('0x54')][_0x4eae('0x55')]({'where':{'id':_0x5e9c99[_0x4eae('0x56')]},'include':[{'model':db[_0x4eae('0x57')],'as':'List','include':[{'model':db[_0x4eae('0x58')],'as':'Contacts','where':{'email':_0x1b4a07},'limit':0x1,'order':[[_0x4eae('0x59'),_0x4eae('0x5a')]]}]},{'model':db['MailServerOut'],'as':_0x4eae('0x5b'),'raw':!![]}]})[_0x4eae('0x17')](function(_0x4eb916){_0xc5ef12=_0x4eb916;if(_0xc5ef12&&_0xc5ef12['Smtp']){var _0xda5dcc={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0xc5ef12[_0x4eae('0x5b')]['service'])){_0xda5dcc[_0x4eae('0x5c')]=_0xc5ef12[_0x4eae('0x5b')]['host'];_0xda5dcc[_0x4eae('0x5d')]=_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x5d')];_0xda5dcc[_0x4eae('0x5e')]=_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x5e')];if(_0xc5ef12[_0x4eae('0x5b')]['authentication']){_0xda5dcc[_0x4eae('0x5f')]={'user':_0xc5ef12['Smtp'][_0x4eae('0x60')],'pass':_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x61')]};}}else{_0xda5dcc['service']=_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x62')];_0xda5dcc['auth']={'user':_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x60')],'pass':_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x61')]};_0xda5dcc[_0x4eae('0x5e')]=_0xc5ef12[_0x4eae('0x5b')][_0x4eae('0x5e')];}if(_0x2e18e4[_0x4eae('0x4e')][_0x4eae('0x63')]&&_0x2e18e4[_0x4eae('0x4e')][_0x4eae('0x63')][_0x4eae('0x3d')]){for(var _0x7d520d=0x0;_0x7d520d<_0x2e18e4[_0x4eae('0x4e')][_0x4eae('0x63')][_0x4eae('0x3d')];_0x7d520d+=0x1){_0x2e18e4[_0x4eae('0x4e')][_0x4eae('0x63')][_0x7d520d]={'filename':_0x2e18e4['body']['attachments'][_0x7d520d][_0x4eae('0x30')],'path':path[_0x4eae('0x64')](config[_0x4eae('0x65')],_0x4eae('0x66'),_0x2e18e4[_0x4eae('0x4e')][_0x4eae('0x63')][_0x7d520d][_0x4eae('0x67')])};}}_0x21ee77={'account':_0xda5dcc,'message':_0x2e18e4[_0x4eae('0x4e')]};return;}})[_0x4eae('0x17')](function(){if(_0xc5ef12['List']){if(_0xc5ef12[_0x4eae('0x68')][_0x4eae('0x69')][_0x4eae('0x3d')]){return _0xc5ef12[_0x4eae('0x68')][_0x4eae('0x69')][0x0];}else{return db[_0x4eae('0x58')][_0x4eae('0x51')](_[_0x4eae('0xe')](_0x2e18e4[_0x4eae('0x4e')],{'firstName':_0x2e18e4[_0x4eae('0x4e')]['to'],'email':_0x2e18e4['body']['to'],'phone':_0x2e18e4[_0x4eae('0x4e')]['to'],'ListId':_0xc5ef12['ListId']}));}}else{throw new Error(_0x4eae('0x6a'));}})['then'](function(){if(_0x21ee77){return respondWithRpcPromise('SendMail','sendMail',_0x21ee77,client9003)[_0x4eae('0x17')](function(_0x38c176){return _0x5e9c99[_0x4eae('0x2b')]({'read':!![],'messageId':_0x38c176[_0x4eae('0x6b')],'sentAt':moment()['format'](_0x4eae('0x6c'))});})['catch'](function(_0xa430c7){logger[_0x4eae('0x1e')]('%s',JSON[_0x4eae('0x1d')](_0xa430c7));return _0x5e9c99;});}return _0x5e9c99;});}return _0x5e9c99;}})[_0x4eae('0x17')](respondWithResult(_0xbc6faf,0xc9))[_0x4eae('0x22')](handleError(_0xbc6faf,null));};exports[_0x4eae('0x6d')]=function(_0xb86272,_0xc0fe9){var _0x3084d2={'agent':{},'channel':_0x4eae('0x6e')};if(_0xb86272[_0x4eae('0x4e')]['id']){delete _0xb86272[_0x4eae('0x4e')]['id'];}_0xb86272[_0x4eae('0x4e')][_0x4eae('0x6f')]=!![];_0xb86272['body']['readAt']=moment()['format'](_0x4eae('0x6c'));_0xb86272[_0x4eae('0x4e')][_0x4eae('0x70')]=_0xb86272[_0x4eae('0x4e')][_0x4eae('0x70')]||_0xb86272[_0x4eae('0x60')]['id'];_0x3084d2[_0x4eae('0x71')]['id']=_0xb86272[_0x4eae('0x4e')][_0x4eae('0x70')];return db['MailMessage'][_0x4eae('0x4d')]({'where':{'id':_0xb86272[_0x4eae('0x4f')]['id'],'UserId':null}})[_0x4eae('0x17')](handleEntityNotFound(_0xc0fe9,null))[_0x4eae('0x17')](saveUpdates(_0xb86272['body'],null))[_0x4eae('0x17')](function(_0x25c9dc){if(_0x25c9dc){_0x3084d2[_0x4eae('0x20')]=_0x25c9dc[_0x4eae('0x72')]({'plain':!![]});return db[_0x4eae('0x73')][_0x4eae('0x4d')]({'where':{'id':_0x25c9dc[_0x4eae('0x74')]}});}return null;})[_0x4eae('0x17')](handleEntityNotFound(_0xc0fe9,null))['then'](function(_0x46bff3){if(_0x46bff3){return _0x46bff3[_0x4eae('0x2b')]({'UserId':_0xb86272['body'][_0x4eae('0x70')],'read1stAt':_['isNil'](_0x46bff3[_0x4eae('0x75')])?moment()[_0x4eae('0x76')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x4eae('0x17')](function(_0x13af44){if(_0x13af44){_0x3084d2[_0x4eae('0x77')]=_0x13af44[_0x4eae('0x72')]({'plain':!![]});interaction_log[_0x4eae('0x18')](_0x4eae('0x78'),_0xb86272[_0x4eae('0x60')]['id'],_0xb86272[_0x4eae('0x60')][_0x4eae('0x30')],_0xb86272[_0x4eae('0x60')][_0x4eae('0x79')],_0x3084d2[_0x4eae('0x77')]['id'],_0xb86272['body']?JSON[_0x4eae('0x1d')](_0xb86272[_0x4eae('0x4e')]):_0x4eae('0x7a'));return respondWithRpcPromise(_0x4eae('0x7b'),'acceptMessage',_0x3084d2);}return null;})[_0x4eae('0x17')](function(_0x32d3b7){var _0x50024b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x32d3b7[_0x4eae('0x20')]['ContactId'];return db[_0x4eae('0x7c')][_0x4eae('0x37')](_0x50024b,{'type':db[_0x4eae('0x7d')][_0x4eae('0x7e')]['SELECT'],'raw':!![]})[_0x4eae('0x17')](function(_0x1e2536){return _0x1e2536;});})['then'](function(_0x3adcb8){if(_0x3adcb8){_0x3084d2['message'][_0x4eae('0x7f')]=_0x3adcb8[0x0];if(!_0xb86272[_0x4eae('0x4e')]['UserId'])return;return db[_0x4eae('0x80')]['find']({'where':{'id':_0xb86272[_0x4eae('0x4e')]['UserId'],'role':_0x4eae('0x71')},'attributes':['id',_0x4eae('0x30'),_0x4eae('0x81'),_0x4eae('0x82'),_0x4eae('0x83')],'raw':!![]});}return null;})['then'](function(_0x16859f){if(!_0x16859f)return null;_0x3084d2[_0x4eae('0x20')][_0x4eae('0x71')]=_0x16859f;return _0x3084d2;})['then'](function(_0x101a54){if(_0x101a54){if(_0xb86272[_0x4eae('0x4e')][_0x4eae('0x84')]){_0x3084d2[_0x4eae('0x20')][_0x4eae('0x85')]=util['format'](_0x4eae('0x86'),_0xb86272['user']['name']);_0x3084d2['message']['channel']=_0x3084d2['channel'];_0x3084d2[_0x4eae('0x20')][_0x4eae('0x87')]=_0x3084d2['channel'];_0x3084d2[_0x4eae('0x20')]['event']=_0x4eae('0x6d');_0x3084d2[_0x4eae('0x20')][_0x4eae('0x4e')]=htmlToText[_0x4eae('0x88')](_0x3084d2['message'][_0x4eae('0x4e')]);return respondWithRpcPromise(_0x4eae('0x89'),'EventManager',{'event':_0x4eae('0x8a'),'message':_0x3084d2['message']},client9002)[_0x4eae('0x17')](function(){return _0x3084d2;});}return _0x3084d2;}return null;})[_0x4eae('0x17')](respondWithResult(_0xc0fe9,null))[_0x4eae('0x22')](handleError(_0xc0fe9,null));};exports[_0x4eae('0x8b')]=function(_0x417da4,_0x333aa0){var _0x1c3b06={'agent':{},'channel':_0x4eae('0x6e')};if(_0x417da4[_0x4eae('0x4e')]['id']){delete _0x417da4[_0x4eae('0x4e')]['id'];}_0x417da4[_0x4eae('0x4e')][_0x4eae('0x70')]=_0x417da4[_0x4eae('0x4e')]['UserId']||_0x417da4[_0x4eae('0x60')]['id'];_0x1c3b06[_0x4eae('0x71')]['id']=_0x417da4[_0x4eae('0x4e')][_0x4eae('0x70')];return db['MailMessage'][_0x4eae('0x4d')]({'where':{'id':_0x417da4[_0x4eae('0x4f')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x333aa0,null))[_0x4eae('0x17')](function(_0x446f65){if(_0x446f65){_0x1c3b06[_0x4eae('0x20')]=_0x446f65[_0x4eae('0x72')]({'plain':!![]});return db[_0x4eae('0x73')][_0x4eae('0x4d')]({'where':{'id':_0x446f65['MailInteractionId']}});}return null;})[_0x4eae('0x17')](handleEntityNotFound(_0x333aa0,null))[_0x4eae('0x17')](function(_0x380680){if(_0x380680){_0x1c3b06['interaction']=_0x380680[_0x4eae('0x72')]({'plain':!![]});interaction_log[_0x4eae('0x18')](_0x4eae('0x8c'),_0x417da4[_0x4eae('0x60')]['id'],_0x417da4[_0x4eae('0x60')][_0x4eae('0x30')],_0x417da4['user']['role'],_0x1c3b06[_0x4eae('0x77')]['id'],_0x417da4[_0x4eae('0x4e')]?JSON['stringify'](_0x417da4['body']):'null');return respondWithRpcPromise(_0x4eae('0x8d'),'rejectMessage',_0x1c3b06);}return null;})[_0x4eae('0x17')](function(_0x52629a){var _0x1b0e67=_0x4eae('0x8e')+_0x52629a[_0x4eae('0x20')][_0x4eae('0x8f')];return db[_0x4eae('0x7c')][_0x4eae('0x37')](_0x1b0e67,{'type':db[_0x4eae('0x7d')][_0x4eae('0x7e')][_0x4eae('0x90')],'raw':!![]})[_0x4eae('0x17')](function(_0x4e1e8e){return _0x4e1e8e;});})[_0x4eae('0x17')](function(_0x41f0c1){if(_0x41f0c1){_0x1c3b06['message'][_0x4eae('0x7f')]=_0x41f0c1[0x0];if(!_0x417da4['body'][_0x4eae('0x70')])return;return db[_0x4eae('0x80')][_0x4eae('0x4d')]({'where':{'id':_0x417da4[_0x4eae('0x4e')]['UserId'],'role':'agent'},'attributes':['id',_0x4eae('0x30'),_0x4eae('0x81'),_0x4eae('0x82'),'internal'],'raw':!![]});}return null;})[_0x4eae('0x17')](function(_0x57bf36){if(!_0x57bf36)return null;_0x1c3b06['message'][_0x4eae('0x71')]=_0x57bf36;return _0x1c3b06;})[_0x4eae('0x17')](function(_0x31172a){if(_0x31172a){_0x31172a[_0x4eae('0x20')][_0x4eae('0x85')]=util['format'](_0x4eae('0x86'),_0x417da4['user'][_0x4eae('0x30')]);_0x31172a[_0x4eae('0x20')][_0x4eae('0x91')]=_0x1c3b06[_0x4eae('0x91')];_0x31172a['message'][_0x4eae('0x87')]=_0x1c3b06[_0x4eae('0x91')];_0x31172a[_0x4eae('0x20')]['event']=_0x4eae('0x8b');_0x31172a['message']['body']=htmlToText[_0x4eae('0x88')](_0x1c3b06[_0x4eae('0x20')][_0x4eae('0x4e')]);respondWithRpcPromise(_0x4eae('0x89'),_0x4eae('0x89'),{'event':_0x4eae('0x92'),'message':_0x31172a[_0x4eae('0x20')]},client9002);return _0x1c3b06;}return null;})[_0x4eae('0x17')](respondWithResult(_0x333aa0,null))[_0x4eae('0x22')](handleError(_0x333aa0,null));};exports[_0x4eae('0x93')]=function(_0x2bffab,_0x300b89){var _0x2d86c7=moment()[_0x4eae('0x94')]()['toString']();var _0x2a1498=path[_0x4eae('0x64')](config[_0x4eae('0x65')],_0x4eae('0x95'),_0x4eae('0x96'),_0x4eae('0x97'));var _0x4ccb76=path[_0x4eae('0x64')](config[_0x4eae('0x65')],_0x4eae('0x95'),_0x4eae('0x96'),_0x4eae('0x63'));var _0x278437=util[_0x4eae('0x76')](_0x4eae('0x98'),_0x2d86c7);return db[_0x4eae('0x34')][_0x4eae('0x4d')]({'where':{'id':_0x2bffab[_0x4eae('0x4f')]['id']},'attributes':['id',_0x4eae('0x4e'),_0x4eae('0x99'),'to','cc',_0x4eae('0x9a'),_0x4eae('0x9b'),_0x4eae('0x9c')],'include':_0x2bffab[_0x4eae('0x37')][_0x4eae('0x63')]?[{'model':db['Attachment'],'as':_0x4eae('0x9d')}]:undefined})[_0x4eae('0x17')](handleEntityNotFound(_0x300b89,null))[_0x4eae('0x17')](function(_0x437aa2){if(_0x437aa2){var _0x1a422d=_0x437aa2;var _0x385f80={'from':_0x1a422d[_0x4eae('0x99')],'to':_0x1a422d['to'],'subject':_0x1a422d[_0x4eae('0x9b')],'html':_0x1a422d[_0x4eae('0x4e')],'headers':{'Date':moment(_0x1a422d[_0x4eae('0x9c')])['format'](_0x4eae('0x9e'))},'attachments':[]};if(_0x437aa2['cc']){_0x385f80[_0x4eae('0x9f')]['Cc']=_0x437aa2['cc'];}if(_0x437aa2['bcc']){_0x385f80['headers'][_0x4eae('0xa0')]=_0x437aa2['bcc'];}return new BPromise(function(_0x4852e8,_0x187f57){if(_0x437aa2[_0x4eae('0x9d')]){for(var _0x28fcc6=0x0;_0x28fcc6<_0x437aa2['Attachments'][_0x4eae('0x3d')];_0x28fcc6++){var _0x4b6d03=_0x437aa2['Attachments'][_0x28fcc6];var _0xc55375=path[_0x4eae('0x64')](_0x4ccb76,_0x4b6d03[_0x4eae('0x67')]);if(fs[_0x4eae('0xa1')](_0xc55375)){_0x385f80[_0x4eae('0x63')][_0x4eae('0xa2')]({'name':_0x4b6d03[_0x4eae('0x30')],'contentType':_0x4b6d03[_0x4eae('0x36')],'data':fs[_0x4eae('0xa3')](_0xc55375)});}}}emlformat[_0x4eae('0xa4')](_0x385f80,function(_0x40a111,_0x5f0f3c){if(_0x40a111)return _0x187f57(_0x40a111);fs[_0x4eae('0xa5')](path[_0x4eae('0x64')](_0x2a1498,_0x278437),_0x5f0f3c);return _0x4852e8(_0x5f0f3c);});});}})[_0x4eae('0x17')](function(_0x4cf283){if(_0x4cf283){return _0x300b89[_0x4eae('0x93')](path[_0x4eae('0x64')](_0x2a1498,_0x278437),_0x278437,function(_0x16d25d){if(!_0x16d25d)fs[_0x4eae('0xa6')](path[_0x4eae('0x64')](_0x2a1498,_0x278437));});}})[_0x4eae('0x22')](handleError(_0x300b89,null));};
\ No newline at end of file
index 996815d..aa36f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d0=['remove','emit','hasOwnProperty','exports','setMaxListeners','save'];(function(_0xbf2586,_0x5dd118){var _0xec3b0b=function(_0x39f7eb){while(--_0x39f7eb){_0xbf2586['push'](_0xbf2586['shift']());}};_0xec3b0b(++_0x5dd118);}(_0x23d0,0xbe));var _0x023d=function(_0x4ba964,_0x525a2b){_0x4ba964=_0x4ba964-0x0;var _0x428196=_0x23d0[_0x4ba964];return _0x428196;};'use strict';var EventEmitter=require('events');var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x023d('0x0')](0x0);var events={'afterCreate':_0x023d('0x1'),'afterUpdate':'update','afterDestroy':_0x023d('0x2')};function emitEvent(_0x5ab36a){return function(_0x15bc83,_0x37a51e,_0x2ab90){MailMessageEvents[_0x023d('0x3')](_0x5ab36a+':'+_0x15bc83['id'],_0x15bc83);MailMessageEvents[_0x023d('0x3')](_0x5ab36a,_0x15bc83);_0x2ab90(null);};}for(var e in events){if(events[_0x023d('0x4')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x023d('0x5')]=MailMessageEvents;
\ No newline at end of file
+var _0xb476=['emit','hook','exports','events','save','update','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb476,0x11b));var _0x6b47=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xb476[_0x2d8fc2];return _0x3a9e53;};'use strict';var EventEmitter=require(_0x6b47('0x0'));var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6b47('0x1'),'afterUpdate':_0x6b47('0x2'),'afterDestroy':_0x6b47('0x3')};function emitEvent(_0x24d63e){return function(_0x53c6cc,_0x1896e4,_0x144f74){MailMessageEvents['emit'](_0x24d63e+':'+_0x53c6cc['id'],_0x53c6cc);MailMessageEvents[_0x6b47('0x4')](_0x24d63e,_0x53c6cc);_0x144f74(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0x6b47('0x5')](e,emitEvent(event));}}module[_0x6b47('0x6')]=MailMessageEvents;
\ No newline at end of file
index 15b1034..1c8d5ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa92f=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','exports','define','MailMessage','messageId','fti_mail_messages','subject','body','plainBody','fromString','models','get','direction','toLowerCase','out','MailInteraction','findOne','then','createdAt','catch','error','utf8mb4_unicode_ci'];(function(_0x2b9db9,_0xe912f8){var _0x291402=function(_0x10aaee){while(--_0x10aaee){_0x2b9db9['push'](_0x2b9db9['shift']());}};_0x291402(++_0xe912f8);}(_0xa92f,0x1e0));var _0xfa92=function(_0x317d8c,_0x172a05){_0x317d8c=_0x317d8c-0x0;var _0xb9bcf=_0xa92f[_0x317d8c];return _0xb9bcf;};'use strict';var _=require(_0xfa92('0x0'));var util=require(_0xfa92('0x1'));var logger=require(_0xfa92('0x2'))(_0xfa92('0x3'));var moment=require(_0xfa92('0x4'));var BPromise=require(_0xfa92('0x5'));var rp=require(_0xfa92('0x6'));var htmlToText=require(_0xfa92('0x7'));var fs=require('fs');var path=require(_0xfa92('0x8'));var rimraf=require(_0xfa92('0x9'));var config=require(_0xfa92('0xa'));var attributes=require('./mailMessage.attributes');module[_0xfa92('0xb')]=function(_0x5f2f5a,_0x2af94b){return _0x5f2f5a[_0xfa92('0xc')](_0xfa92('0xd'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xfa92('0xe'),'fields':[_0xfa92('0xe')]},{'name':_0xfa92('0xf'),'fields':['plainBody',_0xfa92('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1b3060,_0x184896,_0x10d4f4){if(_0x1b3060[_0xfa92('0x11')]){_0x1b3060[_0xfa92('0x12')]=htmlToText[_0xfa92('0x13')](_0x1b3060[_0xfa92('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x10d4f4(null,_0x184896);},'afterCreate':function(_0x54ed5b,_0x18a69e,_0x501e0d){var _0x132928=_0x5f2f5a[_0xfa92('0x14')];var _0x54e566=_0x54ed5b[_0xfa92('0x15')]({'plain':!![]});if(_0x54e566[_0xfa92('0x16')][_0xfa92('0x17')]()==='in'||_0x54e566[_0xfa92('0x16')][_0xfa92('0x17')]()===_0xfa92('0x18')&&!_0x54e566['secret']&&!_['isNil'](_0x54e566['UserId'])){_0x132928[_0xfa92('0x19')][_0xfa92('0x1a')]({'where':{'id':_0x54e566['MailInteractionId']}})[_0xfa92('0x1b')](function(_0x49acf2){if(_0x49acf2){_0x49acf2['update']({'lastMsgAt':_0x54e566[_0xfa92('0x1c')],'lastMsgDirection':_0x54e566[_0xfa92('0x16')][_0xfa92('0x17')]()});}})[_0xfa92('0x1d')](function(_0x186070){console[_0xfa92('0x1e')](_0x186070);});}_0x501e0d();}},'charset':'utf8mb4','collate':_0xfa92('0x1f')});};
\ No newline at end of file
+var _0xc4ff=['mail_messages','messageId','fti_mail_messages','subject','plainBody','body','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','findOne','MailInteractionId','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define'];(function(_0x5ad3f9,_0xaa5fc2){var _0x185061=function(_0x50bbb1){while(--_0x50bbb1){_0x5ad3f9['push'](_0x5ad3f9['shift']());}};_0x185061(++_0xaa5fc2);}(_0xc4ff,0x114));var _0xfc4f=function(_0x30d6f2,_0x1a205d){_0x30d6f2=_0x30d6f2-0x0;var _0x19700c=_0xc4ff[_0x30d6f2];return _0x19700c;};'use strict';var _=require('lodash');var util=require(_0xfc4f('0x0'));var logger=require(_0xfc4f('0x1'))(_0xfc4f('0x2'));var moment=require(_0xfc4f('0x3'));var BPromise=require(_0xfc4f('0x4'));var rp=require(_0xfc4f('0x5'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0xfc4f('0x6'));var rimraf=require(_0xfc4f('0x7'));var config=require(_0xfc4f('0x8'));var attributes=require(_0xfc4f('0x9'));module[_0xfc4f('0xa')]=function(_0x3b7680,_0x8f8506){return _0x3b7680[_0xfc4f('0xb')]('MailMessage',attributes,{'tableName':_0xfc4f('0xc'),'paranoid':![],'indexes':[{'name':_0xfc4f('0xd'),'fields':['messageId']},{'name':_0xfc4f('0xe'),'fields':['plainBody',_0xfc4f('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x51fcf1,_0x23ccd0,_0x36c933){if(_0x51fcf1['body']){_0x51fcf1[_0xfc4f('0x10')]=htmlToText['fromString'](_0x51fcf1[_0xfc4f('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x36c933(null,_0x23ccd0);},'afterCreate':function(_0x3ee222,_0x466188,_0x2e3cd3){var _0xd25215=_0x3b7680['models'];var _0x32efb1=_0x3ee222[_0xfc4f('0x12')]({'plain':!![]});if(_0x32efb1[_0xfc4f('0x13')][_0xfc4f('0x14')]()==='in'||_0x32efb1['direction'][_0xfc4f('0x14')]()===_0xfc4f('0x15')&&!_0x32efb1['secret']&&!_[_0xfc4f('0x16')](_0x32efb1[_0xfc4f('0x17')])){_0xd25215[_0xfc4f('0x18')][_0xfc4f('0x19')]({'where':{'id':_0x32efb1[_0xfc4f('0x1a')]}})['then'](function(_0x32b4bd){if(_0x32b4bd){_0x32b4bd[_0xfc4f('0x1b')]({'lastMsgAt':_0x32efb1[_0xfc4f('0x1c')],'lastMsgDirection':_0x32efb1[_0xfc4f('0x13')][_0xfc4f('0x14')]()});}})['catch'](function(_0xe2896e){console[_0xfc4f('0x1d')](_0xe2896e);});}_0x2e3cd3();}},'charset':_0xfc4f('0x1e'),'collate':_0xfc4f('0x1f')});};
\ No newline at end of file
index 7e24bf4..fb88952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['redis','localhost','socket.io-emitter','./mailMessage.socket','request','then','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','MailMessage,\x20%s,\x20%s','info','catch','CreateMailMessage','MailMessage','body','options','raw','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','defaults'];(function(_0x1ddbe9,_0x2e99b0){var _0x11aeb7=function(_0x4bc253){while(--_0x4bc253){_0x1ddbe9['push'](_0x1ddbe9['shift']());}};_0x11aeb7(++_0x2e99b0);}(_0xcf66,0x71));var _0x6cf6=function(_0x2ba1b2,_0x284f79){_0x2ba1b2=_0x2ba1b2-0x0;var _0x7ec07f=_0xcf66[_0x2ba1b2];return _0x7ec07f;};'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});config['redis']=_[_0x6cf6('0xa')](config[_0x6cf6('0xb')],{'host':_0x6cf6('0xc'),'port':0x18eb});var socket=require(_0x6cf6('0xd'))(new Redis(config[_0x6cf6('0xb')]));require(_0x6cf6('0xe'))['register'](socket);function respondWithRpcPromise(_0x58378c,_0x5b7f4e,_0x8e90e){return new BPromise(function(_0x504c98,_0x1fdf80){return client[_0x6cf6('0xf')](_0x58378c,_0x8e90e)[_0x6cf6('0x10')](function(_0x3f7fc1){logger['info']('MailMessage,\x20%s,\x20%s',_0x5b7f4e,'request\x20sent');logger[_0x6cf6('0x11')](_0x6cf6('0x12'),_0x5b7f4e,_0x6cf6('0x13'),JSON[_0x6cf6('0x14')](_0x3f7fc1));if(_0x3f7fc1[_0x6cf6('0x15')]){if(_0x3f7fc1[_0x6cf6('0x15')]['code']===0x1f4){logger[_0x6cf6('0x15')]('MailMessage,\x20%s,\x20%s',_0x5b7f4e,_0x3f7fc1[_0x6cf6('0x15')][_0x6cf6('0x16')]);return _0x1fdf80(_0x3f7fc1['error'][_0x6cf6('0x16')]);}logger[_0x6cf6('0x15')](_0x6cf6('0x17'),_0x5b7f4e,_0x3f7fc1[_0x6cf6('0x15')][_0x6cf6('0x16')]);return _0x504c98(_0x3f7fc1[_0x6cf6('0x15')][_0x6cf6('0x16')]);}else{logger[_0x6cf6('0x18')](_0x6cf6('0x17'),_0x5b7f4e,_0x6cf6('0x13'));_0x504c98(_0x3f7fc1['result'][_0x6cf6('0x16')]);}})[_0x6cf6('0x19')](function(_0x22ab0){logger['error'](_0x6cf6('0x17'),_0x5b7f4e,_0x22ab0);_0x1fdf80(_0x22ab0);});});}exports[_0x6cf6('0x1a')]=function(_0x101e39){var _0x2995b3=this;return new Promise(function(_0x440634,_0x21e903){return db[_0x6cf6('0x1b')]['create'](_0x101e39[_0x6cf6('0x1c')],{'raw':_0x101e39[_0x6cf6('0x1d')]?_0x101e39[_0x6cf6('0x1d')][_0x6cf6('0x1e')]===undefined?!![]:![]:!![]})[_0x6cf6('0x10')](function(_0x470ea4){logger[_0x6cf6('0x18')](_0x6cf6('0x1a'),_0x101e39);logger['debug']('CreateMailMessage',_0x101e39,JSON[_0x6cf6('0x14')](_0x470ea4));_0x440634(_0x470ea4);})['catch'](function(_0x45ce6e){logger[_0x6cf6('0x15')](_0x6cf6('0x1a'),_0x45ce6e[_0x6cf6('0x16')],_0x101e39);_0x21e903(_0x2995b3[_0x6cf6('0x15')](0x1f4,_0x45ce6e[_0x6cf6('0x16')]));});});};
\ No newline at end of file
+var _0x282b=['MailMessage','body','options','CreateMailMessage','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result'];(function(_0x1239d2,_0x3af5c4){var _0x1bbba4=function(_0x36de1b){while(--_0x36de1b){_0x1239d2['push'](_0x1239d2['shift']());}};_0x1bbba4(++_0x3af5c4);}(_0x282b,0xec));var _0xb282=function(_0x1875f9,_0x57f287){_0x1875f9=_0x1875f9-0x0;var _0x136046=_0x282b[_0x1875f9];return _0x136046;};'use strict';var _=require(_0xb282('0x0'));var util=require(_0xb282('0x1'));var moment=require(_0xb282('0x2'));var BPromise=require(_0xb282('0x3'));var rs=require(_0xb282('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb282('0x5'));var logger=require('../../config/logger')(_0xb282('0x6'));var config=require(_0xb282('0x7'));var jayson=require(_0xb282('0x8'));var client=jayson[_0xb282('0x9')][_0xb282('0xa')]({'port':0x232a});config[_0xb282('0xb')]=_['defaults'](config['redis'],{'host':_0xb282('0xc'),'port':0x18eb});var socket=require(_0xb282('0xd'))(new Redis(config['redis']));require(_0xb282('0xe'))[_0xb282('0xf')](socket);function respondWithRpcPromise(_0x3435fc,_0x2d86ba,_0x56caf2){return new BPromise(function(_0x47e62e,_0x36b984){return client[_0xb282('0x10')](_0x3435fc,_0x56caf2)[_0xb282('0x11')](function(_0x1cbe28){logger[_0xb282('0x12')]('MailMessage,\x20%s,\x20%s',_0x2d86ba,'request\x20sent');logger[_0xb282('0x13')](_0xb282('0x14'),_0x2d86ba,_0xb282('0x15'),JSON[_0xb282('0x16')](_0x1cbe28));if(_0x1cbe28[_0xb282('0x17')]){if(_0x1cbe28['error'][_0xb282('0x18')]===0x1f4){logger['error'](_0xb282('0x19'),_0x2d86ba,_0x1cbe28[_0xb282('0x17')]['message']);return _0x36b984(_0x1cbe28['error']['message']);}logger[_0xb282('0x17')](_0xb282('0x19'),_0x2d86ba,_0x1cbe28[_0xb282('0x17')][_0xb282('0x1a')]);return _0x47e62e(_0x1cbe28[_0xb282('0x17')]['message']);}else{logger[_0xb282('0x12')](_0xb282('0x19'),_0x2d86ba,_0xb282('0x15'));_0x47e62e(_0x1cbe28[_0xb282('0x1b')][_0xb282('0x1a')]);}})['catch'](function(_0x52e305){logger[_0xb282('0x17')](_0xb282('0x19'),_0x2d86ba,_0x52e305);_0x36b984(_0x52e305);});});}exports['CreateMailMessage']=function(_0x89543a){var _0x34b6c7=this;return new Promise(function(_0x2e3928,_0x438dbe){return db[_0xb282('0x1c')]['create'](_0x89543a[_0xb282('0x1d')],{'raw':_0x89543a[_0xb282('0x1e')]?_0x89543a[_0xb282('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xb282('0x11')](function(_0x2a7ef8){logger[_0xb282('0x12')](_0xb282('0x1f'),_0x89543a);logger[_0xb282('0x13')]('CreateMailMessage',_0x89543a,JSON['stringify'](_0x2a7ef8));_0x2e3928(_0x2a7ef8);})[_0xb282('0x20')](function(_0x3c7f1f){logger['error']('CreateMailMessage',_0x3c7f1f[_0xb282('0x1a')],_0x89543a);_0x438dbe(_0x34b6c7[_0xb282('0x17')](0x1f4,_0x3c7f1f[_0xb282('0x1a')]));});});};
\ No newline at end of file
index c611770..c3a4935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf474=['removeListener','length','mailMessage:','./mailMessage.events','remove','update','emit'];(function(_0x140f2b,_0x1c8ba9){var _0x37eb18=function(_0x1f1f43){while(--_0x1f1f43){_0x140f2b['push'](_0x140f2b['shift']());}};_0x37eb18(++_0x1c8ba9);}(_0xf474,0x13e));var _0x4f47=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0xf474[_0x1203f];return _0x365f0a;};'use strict';var MailMessageEvents=require(_0x4f47('0x0'));var events=['save',_0x4f47('0x1'),_0x4f47('0x2')];function createListener(_0x21dbfa,_0x1d3580){return function(_0x481f29){_0x1d3580[_0x4f47('0x3')](_0x21dbfa,_0x481f29);};}function removeListener(_0x3e557d,_0x394d6a){return function(){MailMessageEvents[_0x4f47('0x4')](_0x3e557d,_0x394d6a);};}exports['register']=function(_0x1d2896){for(var _0x59b844=0x0,_0x35d270=events[_0x4f47('0x5')];_0x59b844<_0x35d270;_0x59b844++){var _0x278ce2=events[_0x59b844];var _0x194360=createListener(_0x4f47('0x6')+_0x278ce2,_0x1d2896);MailMessageEvents['on'](_0x278ce2,_0x194360);}};
\ No newline at end of file
+var _0x18f2=['emit','removeListener','register','length','mailMessage:','./mailMessage.events','save','update'];(function(_0x17de7a,_0x315a51){var _0x4fe8b4=function(_0x677192){while(--_0x677192){_0x17de7a['push'](_0x17de7a['shift']());}};_0x4fe8b4(++_0x315a51);}(_0x18f2,0x13d));var _0x218f=function(_0x1ed237,_0x4a6f71){_0x1ed237=_0x1ed237-0x0;var _0x5ef46e=_0x18f2[_0x1ed237];return _0x5ef46e;};'use strict';var MailMessageEvents=require(_0x218f('0x0'));var events=[_0x218f('0x1'),'remove',_0x218f('0x2')];function createListener(_0x214d90,_0x35aff8){return function(_0x17e7c4){_0x35aff8[_0x218f('0x3')](_0x214d90,_0x17e7c4);};}function removeListener(_0x5499f9,_0x63e5d9){return function(){MailMessageEvents[_0x218f('0x4')](_0x5499f9,_0x63e5d9);};}exports[_0x218f('0x5')]=function(_0x3cabbf){for(var _0x2fb2ca=0x0,_0xa428b8=events[_0x218f('0x6')];_0x2fb2ca<_0xa428b8;_0x2fb2ca++){var _0x451e14=events[_0x2fb2ca];var _0x229584=createListener(_0x218f('0x7')+_0x451e14,_0x3cabbf);MailMessageEvents['on'](_0x451e14,_0x229584);}};
\ No newline at end of file
index 12e8bc2..a1b5480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf049=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','getAgents','post','create','addAgents','put','update','delete','/:id/users','removeAgents','exports'];(function(_0x121b8e,_0x60d065){var _0x2822a6=function(_0x3653a6){while(--_0x3653a6){_0x121b8e['push'](_0x121b8e['shift']());}};_0x2822a6(++_0x60d065);}(_0xf049,0x1c2));var _0x9f04=function(_0x2bc67e,_0x37364f){_0x2bc67e=_0x2bc67e-0x0;var _0x1cfa13=_0xf049[_0x2bc67e];return _0x1cfa13;};'use strict';var multer=require('multer');var util=require(_0x9f04('0x0'));var path=require(_0x9f04('0x1'));var timeout=require('connect-timeout');var express=require(_0x9f04('0x2'));var router=express[_0x9f04('0x3')]();var fs_extra=require(_0x9f04('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9f04('0x5'));var config=require(_0x9f04('0x6'));var controller=require('./mailQueue.controller');router[_0x9f04('0x7')]('/',auth[_0x9f04('0x8')](),controller[_0x9f04('0x9')]);router[_0x9f04('0x7')]('/describe',auth[_0x9f04('0x8')](),controller['describe']);router[_0x9f04('0x7')](_0x9f04('0xa'),auth[_0x9f04('0x8')](),controller[_0x9f04('0xb')]);router[_0x9f04('0x7')](_0x9f04('0xc'),auth[_0x9f04('0x8')](),controller[_0x9f04('0xd')]);router[_0x9f04('0x7')](_0x9f04('0xe'),auth[_0x9f04('0x8')](),controller['getTeams']);router[_0x9f04('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0x9f04('0xf')]);router[_0x9f04('0x10')]('/',auth[_0x9f04('0x8')](),controller[_0x9f04('0x11')]);router[_0x9f04('0x10')](_0x9f04('0xe'),auth[_0x9f04('0x8')](),controller['addTeams']);router[_0x9f04('0x10')]('/:id/users',auth[_0x9f04('0x8')](),controller[_0x9f04('0x12')]);router[_0x9f04('0x13')](_0x9f04('0xa'),auth[_0x9f04('0x8')](),controller[_0x9f04('0x14')]);router[_0x9f04('0x15')](_0x9f04('0xa'),auth[_0x9f04('0x8')](),controller['destroy']);router[_0x9f04('0x15')](_0x9f04('0xe'),auth['isAuthenticated'](),controller['removeTeams']);router['delete'](_0x9f04('0x16'),auth[_0x9f04('0x8')](),controller[_0x9f04('0x17')]);module[_0x9f04('0x18')]=router;
\ No newline at end of file
+var _0xa63e=['/describe','isAuthenticated','describe','get','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','/:id','update','destroy','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./mailQueue.controller','index'];(function(_0x2b4c73,_0x4f309b){var _0x42c9ba=function(_0x3adf97){while(--_0x3adf97){_0x2b4c73['push'](_0x2b4c73['shift']());}};_0x42c9ba(++_0x4f309b);}(_0xa63e,0x1b6));var _0xea63=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa63e[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xea63('0x0'));var util=require(_0xea63('0x1'));var path=require(_0xea63('0x2'));var timeout=require(_0xea63('0x3'));var express=require(_0xea63('0x4'));var router=express[_0xea63('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xea63('0x6'));var interaction=require(_0xea63('0x7'));var config=require('../../config/environment');var controller=require(_0xea63('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xea63('0x9')]);router['get'](_0xea63('0xa'),auth[_0xea63('0xb')](),controller[_0xea63('0xc')]);router[_0xea63('0xd')]('/:id',auth[_0xea63('0xb')](),controller[_0xea63('0xe')]);router[_0xea63('0xd')](_0xea63('0xf'),auth['isAuthenticated'](),controller[_0xea63('0x10')]);router[_0xea63('0xd')](_0xea63('0x11'),auth[_0xea63('0xb')](),controller[_0xea63('0x12')]);router[_0xea63('0xd')](_0xea63('0x13'),auth['isAuthenticated'](),controller[_0xea63('0x14')]);router[_0xea63('0x15')]('/',auth[_0xea63('0xb')](),controller[_0xea63('0x16')]);router[_0xea63('0x15')](_0xea63('0x11'),auth['isAuthenticated'](),controller[_0xea63('0x17')]);router[_0xea63('0x15')](_0xea63('0x13'),auth[_0xea63('0xb')](),controller[_0xea63('0x18')]);router['put'](_0xea63('0x19'),auth['isAuthenticated'](),controller[_0xea63('0x1a')]);router['delete'](_0xea63('0x19'),auth['isAuthenticated'](),controller[_0xea63('0x1b')]);router[_0xea63('0x1c')](_0xea63('0x11'),auth[_0xea63('0xb')](),controller[_0xea63('0x1d')]);router[_0xea63('0x1c')](_0xea63('0x13'),auth[_0xea63('0xb')](),controller[_0xea63('0x1e')]);module[_0xea63('0x1f')]=router;
\ No newline at end of file
index c4da748..b4d8c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x085d=['beepall','roundrobin','sequelize','STRING','INTEGER','ENUM','rrmemory'];(function(_0x2d1a89,_0x519cc5){var _0x47c3fd=function(_0x1e3477){while(--_0x1e3477){_0x2d1a89['push'](_0x2d1a89['shift']());}};_0x47c3fd(++_0x519cc5);}(_0x085d,0x1ad));var _0xd085=function(_0x318256,_0xa773f3){_0x318256=_0x318256-0x0;var _0xb1e352=_0x085d[_0x318256];return _0xb1e352;};'use strict';var Sequelize=require(_0xd085('0x0'));module['exports']={'name':{'type':Sequelize[_0xd085('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd085('0x1')]},'timeout':{'type':Sequelize[_0xd085('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd085('0x3')](_0xd085('0x4'),_0xd085('0x5'),_0xd085('0x6'))}};
\ No newline at end of file
+var _0xaab9=['INTEGER','ENUM','rrmemory','sequelize','name','STRING'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xaab9,0x9f));var _0x9aab=function(_0x4f95fe,_0x3aaa4f){_0x4f95fe=_0x4f95fe-0x0;var _0x51e328=_0xaab9[_0x4f95fe];return _0x51e328;};'use strict';var Sequelize=require(_0x9aab('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x9aab('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9aab('0x2')]},'timeout':{'type':Sequelize[_0x9aab('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9aab('0x4')](_0x9aab('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
index ef40930..30644a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['Content-Range','apply','reject','save','update','destroy','then','MailQueues','UserProfileResource','error','stack','name','send','index','map','MailQueue','rawAttributes','type','query','keys','filters','intersection','model','attributes','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','include','catch','show','params','fields','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','length','nolimit','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','Team','addTeams','ids','findAll','User','Agents','online','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','all','compact','value','isEmpty','userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','redis','register','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x532af7,_0x34f52a){var _0x15fa83=function(_0xdf3fbc){while(--_0xdf3fbc){_0x532af7['push'](_0x532af7['shift']());}};_0x15fa83(++_0x34f52a);}(_0x524a,0xf5));var _0xa524=function(_0x270e2e,_0x5ca53e){_0x270e2e=_0x270e2e-0x0;var _0x5582a1=_0x524a[_0x270e2e];return _0x5582a1;};'use strict';var emlformat=require(_0xa524('0x0'));var rimraf=require(_0xa524('0x1'));var zipdir=require(_0xa524('0x2'));var jsonpatch=require(_0xa524('0x3'));var rp=require('request-promise');var moment=require(_0xa524('0x4'));var BPromise=require(_0xa524('0x5'));var Mustache=require(_0xa524('0x6'));var util=require('util');var path=require('path');var sox=require(_0xa524('0x7'));var csv=require(_0xa524('0x8'));var ejs=require(_0xa524('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa524('0xa'));var squel=require('squel');var crypto=require(_0xa524('0xb'));var jsforce=require(_0xa524('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa524('0x8'));var querystring=require(_0xa524('0xd'));var Papa=require(_0xa524('0xe'));var Redis=require(_0xa524('0xf'));var authService=require(_0xa524('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa524('0x11'));var hardwareService=require(_0xa524('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xa524('0x13'));var config=require(_0xa524('0x14'));var licenseUtil=require(_0xa524('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xa524('0x16')](config['redis'],{'host':_0xa524('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa524('0x18')]));require('./mailQueue.socket')[_0xa524('0x19')](socket);function respondWithStatusCode(_0x281137,_0x59620d){_0x59620d=_0x59620d||0xcc;return function(_0x2d8bdb){if(_0x2d8bdb){return _0x281137[_0xa524('0x1a')](_0x59620d);}return _0x281137[_0xa524('0x1b')](_0x59620d)[_0xa524('0x1c')]();};}function respondWithResult(_0x45347f,_0x433c8a){_0x433c8a=_0x433c8a||0xc8;return function(_0x371385){if(_0x371385){return _0x45347f['status'](_0x433c8a)[_0xa524('0x1d')](_0x371385);}};}function respondWithFilteredResult(_0x3d8494,_0x1fd8f5){return function(_0x3d6a0d){if(_0x3d6a0d){var _0x375277=typeof _0x1fd8f5[_0xa524('0x1e')]===_0xa524('0x1f')&&typeof _0x1fd8f5[_0xa524('0x20')]==='undefined';var _0x304dea=_0x3d6a0d[_0xa524('0x21')];var _0xb31e2d=_0x375277?0x0:_0x1fd8f5[_0xa524('0x1e')];var _0x5f4cd1=_0x375277?_0x3d6a0d['count']:_0x1fd8f5[_0xa524('0x1e')]+_0x1fd8f5[_0xa524('0x20')];var _0x21e114;if(_0x5f4cd1>=_0x304dea){_0x5f4cd1=_0x304dea;_0x21e114=0xc8;}else{_0x21e114=0xce;}_0x3d8494[_0xa524('0x1b')](_0x21e114);return _0x3d8494[_0xa524('0x22')](_0xa524('0x23'),_0xb31e2d+'-'+_0x5f4cd1+'/'+_0x304dea)['json'](_0x3d6a0d);}return null;};}function patchUpdates(_0x262eac){return function(_0x18c2bb){try{jsonpatch[_0xa524('0x24')](_0x18c2bb,_0x262eac,!![]);}catch(_0x40fb4b){return BPromise[_0xa524('0x25')](_0x40fb4b);}return _0x18c2bb[_0xa524('0x26')]();};}function saveUpdates(_0x26e931,_0x4babac){return function(_0x1c65fa){if(_0x1c65fa){return _0x1c65fa[_0xa524('0x27')](_0x26e931)['then'](function(_0x47efb3){return _0x47efb3;});}return null;};}function removeEntity(_0x24d1bc,_0x2ed3b0){return function(_0x156b8b){if(_0x156b8b){return _0x156b8b[_0xa524('0x28')]()[_0xa524('0x29')](function(){var _0x546060=_0x156b8b['get']({'plain':!![]});var _0x1aeabc=_0xa524('0x2a');return db[_0xa524('0x2b')][_0xa524('0x28')]({'where':{'type':_0x1aeabc,'resourceId':_0x546060['id']}})['then'](function(){return _0x156b8b;});})[_0xa524('0x29')](function(){_0x24d1bc[_0xa524('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27f53a,_0x147094){return function(_0x4c587b){if(!_0x4c587b){_0x27f53a[_0xa524('0x1a')](0x194);}return _0x4c587b;};}function handleError(_0x5f03ad,_0x24005e){_0x24005e=_0x24005e||0x1f4;return function(_0x38e051){logger[_0xa524('0x2c')](_0x38e051[_0xa524('0x2d')]);if(_0x38e051[_0xa524('0x2e')]){delete _0x38e051[_0xa524('0x2e')];}_0x5f03ad[_0xa524('0x1b')](_0x24005e)[_0xa524('0x2f')](_0x38e051);};}exports[_0xa524('0x30')]=function(_0x5b6a54,_0x535e41){var _0x1b39f1={},_0x52dd9f={},_0x4a9e32={'count':0x0,'rows':[]};var _0x46af1b=_[_0xa524('0x31')](db[_0xa524('0x32')][_0xa524('0x33')],function(_0x541ad2){return{'name':_0x541ad2['fieldName'],'type':_0x541ad2[_0xa524('0x34')]['key']};});_0x52dd9f['model']=_[_0xa524('0x31')](_0x46af1b,_0xa524('0x2e'));_0x52dd9f[_0xa524('0x35')]=_[_0xa524('0x36')](_0x5b6a54[_0xa524('0x35')]);_0x52dd9f[_0xa524('0x37')]=_[_0xa524('0x38')](_0x52dd9f[_0xa524('0x39')],_0x52dd9f[_0xa524('0x35')]);_0x1b39f1[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x52dd9f[_0xa524('0x39')],qs['fields'](_0x5b6a54['query']['fields']));_0x1b39f1[_0xa524('0x3a')]=_0x1b39f1[_0xa524('0x3a')]['length']?_0x1b39f1[_0xa524('0x3a')]:_0x52dd9f['model'];if(!_0x5b6a54[_0xa524('0x35')][_0xa524('0x3b')]('nolimit')){_0x1b39f1[_0xa524('0x20')]=qs[_0xa524('0x20')](_0x5b6a54[_0xa524('0x35')]['limit']);_0x1b39f1[_0xa524('0x1e')]=qs[_0xa524('0x1e')](_0x5b6a54['query'][_0xa524('0x1e')]);}_0x1b39f1[_0xa524('0x3c')]=qs['sort'](_0x5b6a54[_0xa524('0x35')][_0xa524('0x3d')]);_0x1b39f1['where']=qs[_0xa524('0x37')](_[_0xa524('0x3e')](_0x5b6a54[_0xa524('0x35')],_0x52dd9f[_0xa524('0x37')]),_0x46af1b);if(_0x5b6a54[_0xa524('0x35')][_0xa524('0x3f')]){_0x1b39f1[_0xa524('0x40')]=_[_0xa524('0x41')](_0x1b39f1[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0x46af1b,function(_0x38e745){if(_0x38e745['type']!==_0xa524('0x42')){var _0x52d281={};_0x52d281[_0x38e745[_0xa524('0x2e')]]={'$like':'%'+_0x5b6a54[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x52d281;}})});}_0x1b39f1=_[_0xa524('0x41')]({},_0x1b39f1,_0x5b6a54[_0xa524('0x43')]);var _0x3ba597={'where':_0x1b39f1[_0xa524('0x40')]};return db[_0xa524('0x32')][_0xa524('0x21')](_0x3ba597)[_0xa524('0x29')](function(_0x4a87d4){_0x4a9e32[_0xa524('0x21')]=_0x4a87d4;if(_0x5b6a54[_0xa524('0x35')]['includeAll']){_0x1b39f1[_0xa524('0x44')]=[{'all':!![]}];}return db[_0xa524('0x32')]['findAll'](_0x1b39f1);})['then'](function(_0x4dff4b){_0x4a9e32['rows']=_0x4dff4b;return _0x4a9e32;})['then'](respondWithFilteredResult(_0x535e41,_0x1b39f1))[_0xa524('0x45')](handleError(_0x535e41,null));};exports[_0xa524('0x46')]=function(_0x381f23,_0x16c6db){var _0x479aee={'raw':!![],'where':{'id':_0x381f23[_0xa524('0x47')]['id']}},_0x382232={};_0x382232[_0xa524('0x39')]=_[_0xa524('0x36')](db['MailQueue'][_0xa524('0x33')]);_0x382232[_0xa524('0x35')]=_[_0xa524('0x36')](_0x381f23[_0xa524('0x35')]);_0x382232[_0xa524('0x37')]=_['intersection'](_0x382232[_0xa524('0x39')],_0x382232[_0xa524('0x35')]);_0x479aee[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x382232[_0xa524('0x39')],qs[_0xa524('0x48')](_0x381f23[_0xa524('0x35')][_0xa524('0x48')]));_0x479aee[_0xa524('0x3a')]=_0x479aee['attributes']['length']?_0x479aee[_0xa524('0x3a')]:_0x382232[_0xa524('0x39')];if(_0x381f23[_0xa524('0x35')][_0xa524('0x49')]){_0x479aee[_0xa524('0x44')]=[{'all':!![]}];}_0x479aee=_[_0xa524('0x41')]({},_0x479aee,_0x381f23['options']);return db[_0xa524('0x32')][_0xa524('0x4a')](_0x479aee)[_0xa524('0x29')](handleEntityNotFound(_0x16c6db,null))[_0xa524('0x29')](respondWithResult(_0x16c6db,null))[_0xa524('0x45')](handleError(_0x16c6db,null));};exports[_0xa524('0x4b')]=function(_0x550415,_0x39ba9c){return db[_0xa524('0x32')][_0xa524('0x4b')](_0x550415[_0xa524('0x4c')],{})[_0xa524('0x29')](function(_0x244efa){var _0xef18b7=_0x550415[_0xa524('0x4d')][_0xa524('0x4e')]({'plain':!![]});if(!_0xef18b7)throw new Error(_0xa524('0x4f'));if(_0xef18b7[_0xa524('0x50')]===_0xa524('0x4d')){var _0x3a374f=_0x244efa[_0xa524('0x4e')]({'plain':!![]});var _0x25e04b='MailQueues';return db[_0xa524('0x51')][_0xa524('0x4a')]({'where':{'name':_0x25e04b,'userProfileId':_0xef18b7['userProfileId']},'raw':!![]})['then'](function(_0x32844c){if(_0x32844c&&_0x32844c[_0xa524('0x52')]===0x0){return db[_0xa524('0x2b')][_0xa524('0x4b')]({'name':_0x3a374f[_0xa524('0x2e')],'resourceId':_0x3a374f['id'],'type':_0x32844c[_0xa524('0x2e')],'sectionId':_0x32844c['id']},{})[_0xa524('0x29')](function(){return _0x244efa;});}else{return _0x244efa;}})['catch'](function(_0x1d9552){logger[_0xa524('0x2c')](_0xa524('0x53'),_0x1d9552);throw _0x1d9552;});}return _0x244efa;})[_0xa524('0x29')](respondWithResult(_0x39ba9c,0xc9))[_0xa524('0x45')](handleError(_0x39ba9c,null));};exports['update']=function(_0x1c017d,_0x4f7531){if(_0x1c017d[_0xa524('0x4c')]['id']){delete _0x1c017d[_0xa524('0x4c')]['id'];}return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0x1c017d[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x4f7531,null))[_0xa524('0x29')](saveUpdates(_0x1c017d['body'],null))['then'](respondWithResult(_0x4f7531,null))[_0xa524('0x45')](handleError(_0x4f7531,null));};exports[_0xa524('0x28')]=function(_0x322feb,_0x4f354d){return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0x322feb['params']['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x4f354d,null))[_0xa524('0x29')](removeEntity(_0x4f354d,null))[_0xa524('0x45')](handleError(_0x4f354d,null));};exports[_0xa524('0x54')]=function(_0x6aad5c,_0x248ba2){return db[_0xa524('0x32')]['describe']()[_0xa524('0x29')](respondWithResult(_0x248ba2,null))[_0xa524('0x45')](handleError(_0x248ba2,null));};exports[_0xa524('0x55')]=function(_0x1ef1aa,_0x5f2de3,_0x4fdca0){var _0x25e68f={'raw':!![],'where':{}},_0x5cd707={},_0x1d5df2;return db[_0xa524('0x32')][_0xa524('0x56')]({'where':{'id':_0x1ef1aa[_0xa524('0x47')]['id']}})['then'](handleEntityNotFound(_0x5f2de3,null))['then'](function(_0x1f19f6){if(_0x1f19f6){_0x1d5df2=_0x1f19f6['get']({'plain':!![]});_0x5cd707['model']=_['keys'](db[_0xa524('0x57')]['rawAttributes']);_0x5cd707['query']=_[_0xa524('0x36')](_0x1ef1aa[_0xa524('0x35')]);_0x5cd707[_0xa524('0x37')]=_[_0xa524('0x38')](_0x5cd707['model'],_0x5cd707[_0xa524('0x35')]);_0x25e68f[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x5cd707['model'],qs[_0xa524('0x48')](_0x1ef1aa[_0xa524('0x35')]['fields']));_0x25e68f['attributes']=_0x25e68f[_0xa524('0x3a')][_0xa524('0x58')]?_0x25e68f[_0xa524('0x3a')]:_0x5cd707[_0xa524('0x39')];if(!_0x1ef1aa['query']['hasOwnProperty'](_0xa524('0x59'))){_0x25e68f[_0xa524('0x20')]=qs[_0xa524('0x20')](_0x1ef1aa['query']['limit']);_0x25e68f[_0xa524('0x1e')]=qs['offset'](_0x1ef1aa['query']['offset']);}_0x25e68f['order']=qs[_0xa524('0x3d')](_0x1ef1aa[_0xa524('0x35')]['sort']);_0x25e68f['where']=qs[_0xa524('0x37')](_[_0xa524('0x3e')](_0x1ef1aa['query'],_0x5cd707[_0xa524('0x37')]));_0x25e68f[_0xa524('0x40')][_0xa524('0x5a')]=_0x1f19f6['id'];if(_0x1ef1aa[_0xa524('0x35')][_0xa524('0x3f')]){_0x25e68f[_0xa524('0x40')]=_[_0xa524('0x41')](_0x25e68f[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0x25e68f[_0xa524('0x3a')],function(_0x57e7d8){var _0x2695e0={};_0x2695e0[_0x57e7d8]={'$like':'%'+_0x1ef1aa[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x2695e0;})});}_0x25e68f=_[_0xa524('0x41')]({},_0x25e68f,_0x1ef1aa[_0xa524('0x43')]);return db[_0xa524('0x57')]['findAll'](_0x25e68f);}})['then'](function(_0x1e25e7){if(_0x1e25e7){return db['User'][_0xa524('0x5b')]({'where':{'id':_[_0xa524('0x31')](_0x1e25e7,_0xa524('0x5c')),'role':_0xa524('0x5d')},'attributes':['id',_0xa524('0x2e'),_0xa524('0x5e'),_0xa524('0x5f'),_0xa524('0x60')]});}})[_0xa524('0x29')](function(_0x106168){if(_0x106168){return{'count':_0x106168[_0xa524('0x21')],'rows':_['map'](_0x106168[_0xa524('0x61')],function(_0x2c52fa){return{'membername':_0x2c52fa[_0xa524('0x2e')],'UserId':_0x2c52fa['id'],'queue_name':_0x1d5df2[_0xa524('0x2e')],'MailQueueId':_0x1d5df2['id'],'interface':util[_0xa524('0x62')](_0xa524('0x63'),'SIP',_0x2c52fa[_0xa524('0x2e')]),'penalty':0x0,'paused':_0x2c52fa[_0xa524('0x5e')],'createdAt':_0x2c52fa[_0xa524('0x60')],'updatedAt':_0x2c52fa['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5f2de3,_0x25e68f))[_0xa524('0x45')](handleError(_0x5f2de3,null));};exports[_0xa524('0x64')]=function(_0x162254,_0x1a8887,_0x25d559){var _0xf934dc={};var _0x780cf7={};var _0x21c9e0;var _0x1da85f;return db['MailQueue'][_0xa524('0x56')]({'where':{'id':_0x162254[_0xa524('0x47')]['id']}})['then'](handleEntityNotFound(_0x1a8887,null))[_0xa524('0x29')](function(_0x2f06cb){if(_0x2f06cb){_0x21c9e0=_0x2f06cb;_0x780cf7[_0xa524('0x39')]=_[_0xa524('0x36')](db[_0xa524('0x65')][_0xa524('0x33')]);_0x780cf7['query']=_['keys'](_0x162254['query']);_0x780cf7[_0xa524('0x37')]=_['intersection'](_0x780cf7['model'],_0x780cf7[_0xa524('0x35')]);_0xf934dc[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x780cf7[_0xa524('0x39')],qs[_0xa524('0x48')](_0x162254[_0xa524('0x35')]['fields']));_0xf934dc[_0xa524('0x3a')]=_0xf934dc[_0xa524('0x3a')]['length']?_0xf934dc[_0xa524('0x3a')]:_0x780cf7['model'];_0xf934dc[_0xa524('0x3c')]=qs[_0xa524('0x3d')](_0x162254['query'][_0xa524('0x3d')]);_0xf934dc['where']=qs['filters'](_[_0xa524('0x3e')](_0x162254[_0xa524('0x35')],_0x780cf7[_0xa524('0x37')]));if(_0x162254[_0xa524('0x35')][_0xa524('0x3f')]){_0xf934dc[_0xa524('0x40')]=_[_0xa524('0x41')](_0xf934dc[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0xf934dc[_0xa524('0x3a')],function(_0x50d6d4){var _0x38d878={};_0x38d878[_0x50d6d4]={'$like':'%'+_0x162254[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x38d878;})});}_0xf934dc=_[_0xa524('0x41')]({},_0xf934dc,_0x162254[_0xa524('0x43')]);return _0x21c9e0[_0xa524('0x64')](_0xf934dc);}})[_0xa524('0x29')](function(_0x44eb67){if(_0x44eb67){_0x1da85f=_0x44eb67[_0xa524('0x58')];if(!_0x162254['query'][_0xa524('0x3b')]('nolimit')){_0xf934dc[_0xa524('0x20')]=qs[_0xa524('0x20')](_0x162254[_0xa524('0x35')][_0xa524('0x20')]);_0xf934dc[_0xa524('0x1e')]=qs['offset'](_0x162254['query']['offset']);}return _0x21c9e0['getTeams'](_0xf934dc);}})[_0xa524('0x29')](function(_0x2c9fda){if(_0x2c9fda){return _0x2c9fda?{'count':_0x1da85f,'rows':_0x2c9fda}:null;}})[_0xa524('0x29')](respondWithResult(_0x1a8887,null))[_0xa524('0x45')](handleError(_0x1a8887,null));};exports[_0xa524('0x66')]=function(_0x15ec5b,_0x552ef8,_0x5c5f36){var _0x39b3bf=_0x15ec5b[_0xa524('0x4c')][_0xa524('0x67')];return db[_0xa524('0x65')][_0xa524('0x68')]({'where':{'id':_0x39b3bf},'attributes':['id'],'include':[{'model':db[_0xa524('0x69')],'as':_0xa524('0x6a'),'attributes':['id',_0xa524('0x2e'),_0xa524('0x6b'),'voicePause','interface'],'raw':!![]}]})[_0xa524('0x29')](function(_0x1d0d43){if(_0x1d0d43){var _0x46b7ba=_[_0xa524('0x6c')](_0x1d0d43,function(_0x20c5e4){var _0x4a660a=_0x20c5e4['get']({'plain':!![]});return _0x4a660a[_0xa524('0x6a')];});return db['MailQueue'][_0xa524('0x4a')]({'where':{'id':_0x15ec5b[_0xa524('0x47')]['id']}})[_0xa524('0x29')](function(_0x4eb4a4){return db[_0xa524('0x6d')][_0xa524('0x6e')](function(_0x49d607){return _0x4eb4a4[_0xa524('0x66')](_0x39b3bf,{'transaction':_0x49d607})[_0xa524('0x29')](function(){return BPromise[_0xa524('0x6f')](_0x46b7ba,function(_0x51dcd0){return db['UserMailQueue'][_0xa524('0x70')]({'where':{'UserId':_0x51dcd0['id'],'MailQueueId':_0x15ec5b['params']['id']},'transaction':_0x49d607});});})[_0xa524('0x29')](function(){_0x46b7ba[_0xa524('0x71')](function(_0x3bd8fc){socket[_0xa524('0x72')](_0xa524('0x73'),{'UserId':_0x3bd8fc['id'],'MailQueueId':_0x4eb4a4['id']});});});});});}})[_0xa524('0x29')](respondWithStatusCode(_0x552ef8,null))[_0xa524('0x45')](handleError(_0x552ef8,null));};exports[_0xa524('0x74')]=function(_0xd9b867,_0x977047,_0x443363){return db['Team'][_0xa524('0x68')]({'where':{'id':_0xd9b867[_0xa524('0x35')][_0xa524('0x67')]},'attributes':['id'],'include':[{'model':db[_0xa524('0x69')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x977047,null))['then'](function(_0xbcd1b9){var _0x1c411d=_[_0xa524('0x31')](_0xbcd1b9,'id');var _0x22f7f7=[];var _0x3d6905=[];var _0x2d7d2d=squel['select']();_0x2d7d2d[_0xa524('0x75')](_0xa524('0x76'))[_0xa524('0x77')](_0xa524('0x78'),'tq')[_0xa524('0x79')]('user_has_teams','ut',_0xa524('0x7a'))[_0xa524('0x40')]('MailQueueId\x20=\x20?',_0xd9b867[_0xa524('0x47')]['id']);for(var _0x527622=0x0;_0x527622<_0xbcd1b9[_0xa524('0x58')];_0x527622+=0x1){let _0x3e9e09=_0xbcd1b9[_0x527622];for(var _0x15e4e5=0x0;_0x15e4e5<_0x3e9e09[_0xa524('0x6a')][_0xa524('0x58')];_0x15e4e5+=0x1){let _0x56b0a4=_0x3e9e09[_0xa524('0x6a')][_0x15e4e5];var _0x2d47c5=_0x2d7d2d[_0xa524('0x7b')]();_0x2d47c5['where'](_0xa524('0x7c'),_0x56b0a4['id']);_0x3d6905[_0xa524('0x7d')](db[_0xa524('0x6d')][_0xa524('0x35')](_0x2d47c5[_0xa524('0x7e')](),{'type':db[_0xa524('0x6d')]['QueryTypes'][_0xa524('0x7f')]})[_0xa524('0x29')](function(_0x4f1240){if(_0x4f1240[_0xa524('0x58')]===0x1){return _0x56b0a4['id'];}else{var _0x3231c3=_[_0xa524('0x80')](_[_0xa524('0x31')](_0x4f1240,'TeamId'),function(_0x4cb373){return _['includes'](_0x1c411d,_0x4cb373);});if(_0x3231c3){return _0x56b0a4['id'];}}}));}}return BPromise[_0xa524('0x81')](_0x3d6905)[_0xa524('0x29')](function(_0x144cdb){_0x22f7f7=_(_0x22f7f7)['union'](_0x144cdb)[_0xa524('0x82')]()[_0xa524('0x83')]();return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0xd9b867[_0xa524('0x47')]['id']}})[_0xa524('0x29')](function(_0x31ad4c){return db[_0xa524('0x6d')]['transaction'](function(_0x2d7d79){return _0x31ad4c[_0xa524('0x74')](_0xd9b867[_0xa524('0x35')][_0xa524('0x67')],{'transaction':_0x2d7d79})['then'](function(){if(!_[_0xa524('0x84')](_0x22f7f7)){return _0x31ad4c['removeAgents'](_0x22f7f7,{'transaction':_0x2d7d79});}})[_0xa524('0x29')](function(){_0x22f7f7['forEach'](function(_0x54423a){socket[_0xa524('0x72')](_0xa524('0x85'),{'UserId':_0x54423a,'MailQueueId':_0x31ad4c['id']});});});});});});})[_0xa524('0x29')](respondWithStatusCode(_0x977047,null))[_0xa524('0x45')](handleError(_0x977047,null));};exports['addAgents']=function(_0x20a1bd,_0x8bea9a,_0x463cdb){return db['MailQueue'][_0xa524('0x4a')]({'where':{'id':_0x20a1bd[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x8bea9a,null))[_0xa524('0x29')](function(_0x2aff6d){if(_0x2aff6d){return _0x2aff6d[_0xa524('0x86')](_0x20a1bd[_0xa524('0x4c')][_0xa524('0x67')],_[_0xa524('0x87')](_0x20a1bd[_0xa524('0x4c')],[_0xa524('0x67'),'id'])||{})[_0xa524('0x88')](function(_0x143402){for(var _0x4eecd7=0x0;_0x4eecd7<_0x20a1bd[_0xa524('0x4c')]['ids']['length'];_0x4eecd7+=0x1){socket[_0xa524('0x72')](_0xa524('0x73'),{'UserId':Number(_0x20a1bd[_0xa524('0x4c')][_0xa524('0x67')][_0x4eecd7]),'MailQueueId':Number(_0x20a1bd[_0xa524('0x47')]['id'])});}return _0x143402;});}})['then'](respondWithResult(_0x8bea9a,null))[_0xa524('0x45')](handleError(_0x8bea9a,null));};exports[_0xa524('0x89')]=function(_0x3e4068,_0x131679,_0x13a6e1){return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0x3e4068[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x131679,null))['then'](function(_0x48ee70){if(_0x48ee70){return _0x48ee70[_0xa524('0x89')](_0x3e4068[_0xa524('0x35')]['ids'])[_0xa524('0x29')](function(){if(_[_0xa524('0x8a')](_0x3e4068['query']['ids'])){for(var _0x73e29b=0x0;_0x73e29b<_0x3e4068[_0xa524('0x35')][_0xa524('0x67')][_0xa524('0x58')];_0x73e29b+=0x1){socket[_0xa524('0x72')](_0xa524('0x85'),{'UserId':Number(_0x3e4068['query']['ids'][_0x73e29b]),'MailQueueId':Number(_0x3e4068[_0xa524('0x47')]['id'])});}}else{socket['emit'](_0xa524('0x85'),{'UserId':Number(_0x3e4068[_0xa524('0x35')]['ids']),'MailQueueId':Number(_0x3e4068[_0xa524('0x47')]['id'])});}});}})[_0xa524('0x29')](respondWithStatusCode(_0x131679,null))[_0xa524('0x45')](handleError(_0x131679,null));};exports[_0xa524('0x8b')]=function(_0x1a0663,_0x1244dc,_0x181f56){var _0x1ad7e7={};var _0x1f1954={};var _0x5b0206;var _0x49652b;return db['MailQueue'][_0xa524('0x56')]({'where':{'id':_0x1a0663[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x1244dc,null))['then'](function(_0xa41296){if(_0xa41296){_0x5b0206=_0xa41296;_0x1f1954['model']=_[_0xa524('0x36')](db[_0xa524('0x69')][_0xa524('0x33')]);_0x1f1954['query']=_[_0xa524('0x36')](_0x1a0663[_0xa524('0x35')]);_0x1f1954['filters']=_[_0xa524('0x38')](_0x1f1954['model'],_0x1f1954[_0xa524('0x35')]);_0x1ad7e7[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x1f1954[_0xa524('0x39')],qs[_0xa524('0x48')](_0x1a0663[_0xa524('0x35')][_0xa524('0x48')]));_0x1ad7e7[_0xa524('0x3a')]=_0x1ad7e7['attributes'][_0xa524('0x58')]?_0x1ad7e7['attributes']:_0x1f1954['model'];_0x1ad7e7[_0xa524('0x3c')]=qs[_0xa524('0x3d')](_0x1a0663[_0xa524('0x35')][_0xa524('0x3d')]);_0x1ad7e7[_0xa524('0x40')]=qs[_0xa524('0x37')](_[_0xa524('0x3e')](_0x1a0663[_0xa524('0x35')],_0x1f1954[_0xa524('0x37')]));if(_0x1a0663[_0xa524('0x35')][_0xa524('0x3f')]){_0x1ad7e7[_0xa524('0x40')]=_[_0xa524('0x41')](_0x1ad7e7[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0x1ad7e7[_0xa524('0x3a')],function(_0x5be057){var _0x27909b={};_0x27909b[_0x5be057]={'$like':'%'+_0x1a0663[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x27909b;})});}_0x1ad7e7=_[_0xa524('0x41')]({},_0x1ad7e7,_0x1a0663['options']);return _0x5b0206['getAgents'](_0x1ad7e7);}})[_0xa524('0x29')](function(_0x10203f){if(_0x10203f){_0x49652b=_0x10203f['length'];if(!_0x1a0663[_0xa524('0x35')][_0xa524('0x3b')](_0xa524('0x59'))){_0x1ad7e7[_0xa524('0x20')]=qs['limit'](_0x1a0663[_0xa524('0x35')][_0xa524('0x20')]);_0x1ad7e7[_0xa524('0x1e')]=qs['offset'](_0x1a0663[_0xa524('0x35')][_0xa524('0x1e')]);}return _0x5b0206[_0xa524('0x8b')](_0x1ad7e7);}})['then'](function(_0x312482){if(_0x312482){return _0x312482?{'count':_0x49652b,'rows':_0x312482}:null;}})[_0xa524('0x29')](respondWithResult(_0x1244dc,null))[_0xa524('0x45')](handleError(_0x1244dc,null));};
\ No newline at end of file
+var _0x8c4a=['forEach','emit','userMailQueue:save','removeTeams','User','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','isArray','userMailQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','get','stack','name','index','map','MailQueue','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','type','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','length','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','UserMailQueue','pick','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','format','SIP','createdAt','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','findOrCreate'];(function(_0xbf44a1,_0x2e62bc){var _0x42aec7=function(_0x2ff288){while(--_0x2ff288){_0xbf44a1['push'](_0xbf44a1['shift']());}};_0x42aec7(++_0x2e62bc);}(_0x8c4a,0xb0));var _0xa8c4=function(_0x301eca,_0x2a7322){_0x301eca=_0x301eca-0x0;var _0x46fed6=_0x8c4a[_0x301eca];return _0x46fed6;};'use strict';var emlformat=require(_0xa8c4('0x0'));var rimraf=require(_0xa8c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8c4('0x2'));var rp=require('request-promise');var moment=require(_0xa8c4('0x3'));var BPromise=require(_0xa8c4('0x4'));var Mustache=require(_0xa8c4('0x5'));var util=require(_0xa8c4('0x6'));var path=require(_0xa8c4('0x7'));var sox=require(_0xa8c4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa8c4('0x9'));var _=require(_0xa8c4('0xa'));var squel=require(_0xa8c4('0xb'));var crypto=require(_0xa8c4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa8c4('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa8c4('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa8c4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xa8c4('0x10'));var hardwareService=require(_0xa8c4('0x11'));var logger=require(_0xa8c4('0x12'))(_0xa8c4('0x13'));var utils=require(_0xa8c4('0x14'));var config=require(_0xa8c4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8c4('0x16'))['db'];config['redis']=_['defaults'](config[_0xa8c4('0x17')],{'host':_0xa8c4('0x18'),'port':0x18eb});var socket=require(_0xa8c4('0x19'))(new Redis(config[_0xa8c4('0x17')]));require(_0xa8c4('0x1a'))[_0xa8c4('0x1b')](socket);function respondWithStatusCode(_0x3a9f54,_0x1fb118){_0x1fb118=_0x1fb118||0xcc;return function(_0x1e764c){if(_0x1e764c){return _0x3a9f54[_0xa8c4('0x1c')](_0x1fb118);}return _0x3a9f54[_0xa8c4('0x1d')](_0x1fb118)[_0xa8c4('0x1e')]();};}function respondWithResult(_0x2e7c0b,_0x32d379){_0x32d379=_0x32d379||0xc8;return function(_0x256412){if(_0x256412){return _0x2e7c0b['status'](_0x32d379)[_0xa8c4('0x1f')](_0x256412);}};}function respondWithFilteredResult(_0x27543a,_0x3c09e1){return function(_0x1ee1bb){if(_0x1ee1bb){var _0x3557ae=typeof _0x3c09e1[_0xa8c4('0x20')]==='undefined'&&typeof _0x3c09e1[_0xa8c4('0x21')]===_0xa8c4('0x22');var _0x57dd85=_0x1ee1bb['count'];var _0x1c7aaa=_0x3557ae?0x0:_0x3c09e1[_0xa8c4('0x20')];var _0x2a4f14=_0x3557ae?_0x1ee1bb[_0xa8c4('0x23')]:_0x3c09e1[_0xa8c4('0x20')]+_0x3c09e1[_0xa8c4('0x21')];var _0x42609e;if(_0x2a4f14>=_0x57dd85){_0x2a4f14=_0x57dd85;_0x42609e=0xc8;}else{_0x42609e=0xce;}_0x27543a[_0xa8c4('0x1d')](_0x42609e);return _0x27543a[_0xa8c4('0x24')](_0xa8c4('0x25'),_0x1c7aaa+'-'+_0x2a4f14+'/'+_0x57dd85)[_0xa8c4('0x1f')](_0x1ee1bb);}return null;};}function patchUpdates(_0x32161d){return function(_0xf204dc){try{jsonpatch['apply'](_0xf204dc,_0x32161d,!![]);}catch(_0x313eda){return BPromise['reject'](_0x313eda);}return _0xf204dc[_0xa8c4('0x26')]();};}function saveUpdates(_0x1125e5,_0x2dceaa){return function(_0x2dcc2f){if(_0x2dcc2f){return _0x2dcc2f[_0xa8c4('0x27')](_0x1125e5)[_0xa8c4('0x28')](function(_0x288d79){return _0x288d79;});}return null;};}function removeEntity(_0x9522bd,_0x12779c){return function(_0xc02d90){if(_0xc02d90){return _0xc02d90[_0xa8c4('0x29')]()[_0xa8c4('0x28')](function(){var _0x530c6b=_0xc02d90[_0xa8c4('0x2a')]({'plain':!![]});var _0x113c03='MailQueues';return db['UserProfileResource'][_0xa8c4('0x29')]({'where':{'type':_0x113c03,'resourceId':_0x530c6b['id']}})[_0xa8c4('0x28')](function(){return _0xc02d90;});})[_0xa8c4('0x28')](function(){_0x9522bd[_0xa8c4('0x1d')](0xcc)[_0xa8c4('0x1e')]();});}};}function handleEntityNotFound(_0x755c52,_0xd2b2f){return function(_0x34da82){if(!_0x34da82){_0x755c52[_0xa8c4('0x1c')](0x194);}return _0x34da82;};}function handleError(_0x41e67d,_0x3726c7){_0x3726c7=_0x3726c7||0x1f4;return function(_0x5ba4fb){logger['error'](_0x5ba4fb[_0xa8c4('0x2b')]);if(_0x5ba4fb[_0xa8c4('0x2c')]){delete _0x5ba4fb['name'];}_0x41e67d[_0xa8c4('0x1d')](_0x3726c7)['send'](_0x5ba4fb);};}exports[_0xa8c4('0x2d')]=function(_0x10b16f,_0x5048ef){var _0x46dfea={},_0x14cda8={},_0x594bca={'count':0x0,'rows':[]};var _0x212fe1=_[_0xa8c4('0x2e')](db[_0xa8c4('0x2f')][_0xa8c4('0x30')],function(_0x30761a){return{'name':_0x30761a['fieldName'],'type':_0x30761a['type'][_0xa8c4('0x31')]};});_0x14cda8[_0xa8c4('0x32')]=_[_0xa8c4('0x2e')](_0x212fe1,_0xa8c4('0x2c'));_0x14cda8[_0xa8c4('0x33')]=_[_0xa8c4('0x34')](_0x10b16f[_0xa8c4('0x33')]);_0x14cda8[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x14cda8[_0xa8c4('0x32')],_0x14cda8[_0xa8c4('0x33')]);_0x46dfea['attributes']=_[_0xa8c4('0x36')](_0x14cda8[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0x10b16f[_0xa8c4('0x33')][_0xa8c4('0x37')]));_0x46dfea[_0xa8c4('0x38')]=_0x46dfea[_0xa8c4('0x38')]['length']?_0x46dfea[_0xa8c4('0x38')]:_0x14cda8['model'];if(!_0x10b16f['query'][_0xa8c4('0x39')](_0xa8c4('0x3a'))){_0x46dfea[_0xa8c4('0x21')]=qs[_0xa8c4('0x21')](_0x10b16f['query'][_0xa8c4('0x21')]);_0x46dfea[_0xa8c4('0x20')]=qs['offset'](_0x10b16f[_0xa8c4('0x33')][_0xa8c4('0x20')]);}_0x46dfea[_0xa8c4('0x3b')]=qs[_0xa8c4('0x3c')](_0x10b16f[_0xa8c4('0x33')]['sort']);_0x46dfea['where']=qs['filters'](_['pick'](_0x10b16f['query'],_0x14cda8['filters']),_0x212fe1);if(_0x10b16f[_0xa8c4('0x33')]['filter']){_0x46dfea[_0xa8c4('0x3d')]=_['merge'](_0x46dfea[_0xa8c4('0x3d')],{'$or':_[_0xa8c4('0x2e')](_0x212fe1,function(_0x2ac2b3){if(_0x2ac2b3[_0xa8c4('0x3e')]!==_0xa8c4('0x3f')){var _0x38f0e7={};_0x38f0e7[_0x2ac2b3[_0xa8c4('0x2c')]]={'$like':'%'+_0x10b16f[_0xa8c4('0x33')][_0xa8c4('0x40')]+'%'};return _0x38f0e7;}})});}_0x46dfea=_[_0xa8c4('0x41')]({},_0x46dfea,_0x10b16f[_0xa8c4('0x42')]);var _0xb901f2={'where':_0x46dfea[_0xa8c4('0x3d')]};return db[_0xa8c4('0x2f')][_0xa8c4('0x23')](_0xb901f2)['then'](function(_0x3f79e0){_0x594bca['count']=_0x3f79e0;if(_0x10b16f['query'][_0xa8c4('0x43')]){_0x46dfea['include']=[{'all':!![]}];}return db[_0xa8c4('0x2f')][_0xa8c4('0x44')](_0x46dfea);})['then'](function(_0x5d6c94){_0x594bca[_0xa8c4('0x45')]=_0x5d6c94;return _0x594bca;})[_0xa8c4('0x28')](respondWithFilteredResult(_0x5048ef,_0x46dfea))[_0xa8c4('0x46')](handleError(_0x5048ef,null));};exports[_0xa8c4('0x47')]=function(_0x4bbff1,_0x5ec9a6){var _0x301a58={'raw':!![],'where':{'id':_0x4bbff1['params']['id']}},_0x45ed56={};_0x45ed56[_0xa8c4('0x32')]=_[_0xa8c4('0x34')](db[_0xa8c4('0x2f')][_0xa8c4('0x30')]);_0x45ed56['query']=_['keys'](_0x4bbff1[_0xa8c4('0x33')]);_0x45ed56[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x45ed56['model'],_0x45ed56[_0xa8c4('0x33')]);_0x301a58[_0xa8c4('0x38')]=_['intersection'](_0x45ed56[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0x4bbff1[_0xa8c4('0x33')][_0xa8c4('0x37')]));_0x301a58[_0xa8c4('0x38')]=_0x301a58[_0xa8c4('0x38')][_0xa8c4('0x48')]?_0x301a58['attributes']:_0x45ed56[_0xa8c4('0x32')];if(_0x4bbff1[_0xa8c4('0x33')]['includeAll']){_0x301a58[_0xa8c4('0x49')]=[{'all':!![]}];}_0x301a58=_[_0xa8c4('0x41')]({},_0x301a58,_0x4bbff1['options']);return db['MailQueue'][_0xa8c4('0x4a')](_0x301a58)[_0xa8c4('0x28')](handleEntityNotFound(_0x5ec9a6,null))[_0xa8c4('0x28')](respondWithResult(_0x5ec9a6,null))['catch'](handleError(_0x5ec9a6,null));};exports[_0xa8c4('0x4b')]=function(_0x13b598,_0x4d1048){return db[_0xa8c4('0x2f')][_0xa8c4('0x4b')](_0x13b598['body'],{})[_0xa8c4('0x28')](function(_0x3eeec7){var _0x4e7523=_0x13b598[_0xa8c4('0x4c')][_0xa8c4('0x2a')]({'plain':!![]});if(!_0x4e7523)throw new Error(_0xa8c4('0x4d'));if(_0x4e7523[_0xa8c4('0x4e')]==='user'){var _0x47b4e5=_0x3eeec7['get']({'plain':!![]});var _0x206330=_0xa8c4('0x4f');return db[_0xa8c4('0x50')][_0xa8c4('0x4a')]({'where':{'name':_0x206330,'userProfileId':_0x4e7523[_0xa8c4('0x51')]},'raw':!![]})[_0xa8c4('0x28')](function(_0x15cf63){if(_0x15cf63&&_0x15cf63[_0xa8c4('0x52')]===0x0){return db[_0xa8c4('0x53')][_0xa8c4('0x4b')]({'name':_0x47b4e5[_0xa8c4('0x2c')],'resourceId':_0x47b4e5['id'],'type':_0x15cf63[_0xa8c4('0x2c')],'sectionId':_0x15cf63['id']},{})[_0xa8c4('0x28')](function(){return _0x3eeec7;});}else{return _0x3eeec7;}})[_0xa8c4('0x46')](function(_0x45454f){logger[_0xa8c4('0x54')](_0xa8c4('0x55'),_0x45454f);throw _0x45454f;});}return _0x3eeec7;})[_0xa8c4('0x28')](respondWithResult(_0x4d1048,0xc9))[_0xa8c4('0x46')](handleError(_0x4d1048,null));};exports['update']=function(_0x318a62,_0x559cfa){if(_0x318a62[_0xa8c4('0x56')]['id']){delete _0x318a62[_0xa8c4('0x56')]['id'];}return db[_0xa8c4('0x2f')][_0xa8c4('0x4a')]({'where':{'id':_0x318a62[_0xa8c4('0x57')]['id']}})['then'](handleEntityNotFound(_0x559cfa,null))[_0xa8c4('0x28')](saveUpdates(_0x318a62[_0xa8c4('0x56')],null))[_0xa8c4('0x28')](respondWithResult(_0x559cfa,null))[_0xa8c4('0x46')](handleError(_0x559cfa,null));};exports[_0xa8c4('0x29')]=function(_0x14944d,_0x437645){return db[_0xa8c4('0x2f')][_0xa8c4('0x4a')]({'where':{'id':_0x14944d[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x437645,null))[_0xa8c4('0x28')](removeEntity(_0x437645,null))[_0xa8c4('0x46')](handleError(_0x437645,null));};exports[_0xa8c4('0x58')]=function(_0x12868c,_0x2df253){return db[_0xa8c4('0x2f')][_0xa8c4('0x58')]()[_0xa8c4('0x28')](respondWithResult(_0x2df253,null))['catch'](handleError(_0x2df253,null));};exports[_0xa8c4('0x59')]=function(_0x26a281,_0x58a6a1,_0xe9e0ca){var _0x22c8e4={'raw':!![],'where':{}},_0x5186a8={},_0x847279;return db[_0xa8c4('0x2f')][_0xa8c4('0x5a')]({'where':{'id':_0x26a281[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x58a6a1,null))[_0xa8c4('0x28')](function(_0x526f28){if(_0x526f28){_0x847279=_0x526f28[_0xa8c4('0x2a')]({'plain':!![]});_0x5186a8[_0xa8c4('0x32')]=_[_0xa8c4('0x34')](db[_0xa8c4('0x5b')][_0xa8c4('0x30')]);_0x5186a8[_0xa8c4('0x33')]=_[_0xa8c4('0x34')](_0x26a281[_0xa8c4('0x33')]);_0x5186a8['filters']=_[_0xa8c4('0x36')](_0x5186a8[_0xa8c4('0x32')],_0x5186a8[_0xa8c4('0x33')]);_0x22c8e4['attributes']=_[_0xa8c4('0x36')](_0x5186a8['model'],qs['fields'](_0x26a281[_0xa8c4('0x33')]['fields']));_0x22c8e4['attributes']=_0x22c8e4[_0xa8c4('0x38')]['length']?_0x22c8e4[_0xa8c4('0x38')]:_0x5186a8[_0xa8c4('0x32')];if(!_0x26a281['query']['hasOwnProperty'](_0xa8c4('0x3a'))){_0x22c8e4[_0xa8c4('0x21')]=qs[_0xa8c4('0x21')](_0x26a281['query']['limit']);_0x22c8e4['offset']=qs[_0xa8c4('0x20')](_0x26a281[_0xa8c4('0x33')]['offset']);}_0x22c8e4[_0xa8c4('0x3b')]=qs[_0xa8c4('0x3c')](_0x26a281[_0xa8c4('0x33')][_0xa8c4('0x3c')]);_0x22c8e4[_0xa8c4('0x3d')]=qs[_0xa8c4('0x35')](_[_0xa8c4('0x5c')](_0x26a281[_0xa8c4('0x33')],_0x5186a8['filters']));_0x22c8e4[_0xa8c4('0x3d')][_0xa8c4('0x5d')]=_0x526f28['id'];if(_0x26a281[_0xa8c4('0x33')]['filter']){_0x22c8e4[_0xa8c4('0x3d')]=_[_0xa8c4('0x41')](_0x22c8e4[_0xa8c4('0x3d')],{'$or':_[_0xa8c4('0x2e')](_0x22c8e4[_0xa8c4('0x38')],function(_0x4028ac){var _0x28053b={};_0x28053b[_0x4028ac]={'$like':'%'+_0x26a281['query'][_0xa8c4('0x40')]+'%'};return _0x28053b;})});}_0x22c8e4=_[_0xa8c4('0x41')]({},_0x22c8e4,_0x26a281[_0xa8c4('0x42')]);return db[_0xa8c4('0x5b')][_0xa8c4('0x44')](_0x22c8e4);}})[_0xa8c4('0x28')](function(_0x2ca7fa){if(_0x2ca7fa){return db['User'][_0xa8c4('0x5e')]({'where':{'id':_['map'](_0x2ca7fa,_0xa8c4('0x5f')),'role':_0xa8c4('0x60')},'attributes':['id',_0xa8c4('0x2c'),_0xa8c4('0x61'),_0xa8c4('0x62'),'createdAt']});}})[_0xa8c4('0x28')](function(_0x45f543){if(_0x45f543){return{'count':_0x45f543[_0xa8c4('0x23')],'rows':_[_0xa8c4('0x2e')](_0x45f543[_0xa8c4('0x45')],function(_0x344e55){return{'membername':_0x344e55[_0xa8c4('0x2c')],'UserId':_0x344e55['id'],'queue_name':_0x847279[_0xa8c4('0x2c')],'MailQueueId':_0x847279['id'],'interface':util[_0xa8c4('0x63')]('%s/%s',_0xa8c4('0x64'),_0x344e55[_0xa8c4('0x2c')]),'penalty':0x0,'paused':_0x344e55['mailPause'],'createdAt':_0x344e55[_0xa8c4('0x65')],'updatedAt':_0x344e55['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xa8c4('0x28')](respondWithFilteredResult(_0x58a6a1,_0x22c8e4))['catch'](handleError(_0x58a6a1,null));};exports[_0xa8c4('0x66')]=function(_0xa3c653,_0xc3ac17,_0x2d522e){var _0x453d3f={};var _0x203440={};var _0x29d2dd;var _0x4d28cc;return db['MailQueue'][_0xa8c4('0x5a')]({'where':{'id':_0xa3c653[_0xa8c4('0x57')]['id']}})['then'](handleEntityNotFound(_0xc3ac17,null))[_0xa8c4('0x28')](function(_0x41706d){if(_0x41706d){_0x29d2dd=_0x41706d;_0x203440[_0xa8c4('0x32')]=_['keys'](db[_0xa8c4('0x67')][_0xa8c4('0x30')]);_0x203440['query']=_[_0xa8c4('0x34')](_0xa3c653[_0xa8c4('0x33')]);_0x203440[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x203440[_0xa8c4('0x32')],_0x203440[_0xa8c4('0x33')]);_0x453d3f[_0xa8c4('0x38')]=_['intersection'](_0x203440[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x37')]));_0x453d3f[_0xa8c4('0x38')]=_0x453d3f['attributes'][_0xa8c4('0x48')]?_0x453d3f['attributes']:_0x203440[_0xa8c4('0x32')];_0x453d3f['order']=qs[_0xa8c4('0x3c')](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x3c')]);_0x453d3f[_0xa8c4('0x3d')]=qs[_0xa8c4('0x35')](_[_0xa8c4('0x5c')](_0xa3c653[_0xa8c4('0x33')],_0x203440[_0xa8c4('0x35')]));if(_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x40')]){_0x453d3f[_0xa8c4('0x3d')]=_[_0xa8c4('0x41')](_0x453d3f[_0xa8c4('0x3d')],{'$or':_['map'](_0x453d3f['attributes'],function(_0x13f4b5){var _0x5eb538={};_0x5eb538[_0x13f4b5]={'$like':'%'+_0xa3c653[_0xa8c4('0x33')]['filter']+'%'};return _0x5eb538;})});}_0x453d3f=_[_0xa8c4('0x41')]({},_0x453d3f,_0xa3c653[_0xa8c4('0x42')]);return _0x29d2dd['getTeams'](_0x453d3f);}})[_0xa8c4('0x28')](function(_0x5da079){if(_0x5da079){_0x4d28cc=_0x5da079[_0xa8c4('0x48')];if(!_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x39')](_0xa8c4('0x3a'))){_0x453d3f[_0xa8c4('0x21')]=qs['limit'](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x21')]);_0x453d3f[_0xa8c4('0x20')]=qs['offset'](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x20')]);}return _0x29d2dd['getTeams'](_0x453d3f);}})[_0xa8c4('0x28')](function(_0xdc8640){if(_0xdc8640){return _0xdc8640?{'count':_0x4d28cc,'rows':_0xdc8640}:null;}})[_0xa8c4('0x28')](respondWithResult(_0xc3ac17,null))[_0xa8c4('0x46')](handleError(_0xc3ac17,null));};exports[_0xa8c4('0x68')]=function(_0x299f12,_0x4ecca,_0x5fb4d1){var _0x3698af=_0x299f12[_0xa8c4('0x56')][_0xa8c4('0x69')];return db[_0xa8c4('0x67')][_0xa8c4('0x44')]({'where':{'id':_0x3698af},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xa8c4('0x2c'),_0xa8c4('0x6a'),_0xa8c4('0x6b'),_0xa8c4('0x6c')],'raw':!![]}]})[_0xa8c4('0x28')](function(_0x2d9bb8){if(_0x2d9bb8){var _0x20556c=_[_0xa8c4('0x6d')](_0x2d9bb8,function(_0x596414){var _0x155680=_0x596414['get']({'plain':!![]});return _0x155680[_0xa8c4('0x6e')];});return db[_0xa8c4('0x2f')]['find']({'where':{'id':_0x299f12[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](function(_0x3178e7){return db['sequelize']['transaction'](function(_0x14dae2){return _0x3178e7[_0xa8c4('0x68')](_0x3698af,{'transaction':_0x14dae2})[_0xa8c4('0x28')](function(){return BPromise['each'](_0x20556c,function(_0x179894){return db['UserMailQueue'][_0xa8c4('0x6f')]({'where':{'UserId':_0x179894['id'],'MailQueueId':_0x299f12['params']['id']},'transaction':_0x14dae2});});})[_0xa8c4('0x28')](function(){_0x20556c[_0xa8c4('0x70')](function(_0xea79ca){socket[_0xa8c4('0x71')](_0xa8c4('0x72'),{'UserId':_0xea79ca['id'],'MailQueueId':_0x3178e7['id']});});});});});}})['then'](respondWithStatusCode(_0x4ecca,null))['catch'](handleError(_0x4ecca,null));};exports[_0xa8c4('0x73')]=function(_0xb7e8ab,_0x236af8,_0x238edd){return db['Team']['findAll']({'where':{'id':_0xb7e8ab['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xa8c4('0x74')],'as':_0xa8c4('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xa8c4('0x28')](handleEntityNotFound(_0x236af8,null))[_0xa8c4('0x28')](function(_0xadca40){var _0x297980=_[_0xa8c4('0x2e')](_0xadca40,'id');var _0x41e3d5=[];var _0x1c0824=[];var _0x3ce190=squel[_0xa8c4('0x75')]();_0x3ce190[_0xa8c4('0x76')](_0xa8c4('0x77'))[_0xa8c4('0x78')]('team_has_mail_queues','tq')['join'](_0xa8c4('0x79'),'ut',_0xa8c4('0x7a'))[_0xa8c4('0x3d')](_0xa8c4('0x7b'),_0xb7e8ab[_0xa8c4('0x57')]['id']);for(var _0x48a2c8=0x0;_0x48a2c8<_0xadca40[_0xa8c4('0x48')];_0x48a2c8+=0x1){let _0x12eb0a=_0xadca40[_0x48a2c8];for(var _0x9734=0x0;_0x9734<_0x12eb0a['Agents']['length'];_0x9734+=0x1){let _0x57fe50=_0x12eb0a[_0xa8c4('0x6e')][_0x9734];var _0x5c0ded=_0x3ce190[_0xa8c4('0x7c')]();_0x5c0ded[_0xa8c4('0x3d')](_0xa8c4('0x7d'),_0x57fe50['id']);_0x1c0824[_0xa8c4('0x7e')](db[_0xa8c4('0x7f')][_0xa8c4('0x33')](_0x5c0ded[_0xa8c4('0x80')](),{'type':db[_0xa8c4('0x7f')]['QueryTypes'][_0xa8c4('0x81')]})[_0xa8c4('0x28')](function(_0x3a4120){if(_0x3a4120['length']===0x1){return _0x57fe50['id'];}else{var _0x2acc0c=_[_0xa8c4('0x82')](_[_0xa8c4('0x2e')](_0x3a4120,_0xa8c4('0x83')),function(_0x77770f){return _['includes'](_0x297980,_0x77770f);});if(_0x2acc0c){return _0x57fe50['id'];}}}));}}return BPromise[_0xa8c4('0x84')](_0x1c0824)[_0xa8c4('0x28')](function(_0x5b80c5){_0x41e3d5=_(_0x41e3d5)[_0xa8c4('0x85')](_0x5b80c5)[_0xa8c4('0x86')]()[_0xa8c4('0x87')]();return db['MailQueue'][_0xa8c4('0x4a')]({'where':{'id':_0xb7e8ab[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](function(_0x5c126c){return db[_0xa8c4('0x7f')]['transaction'](function(_0x4171c3){return _0x5c126c['removeTeams'](_0xb7e8ab[_0xa8c4('0x33')][_0xa8c4('0x69')],{'transaction':_0x4171c3})[_0xa8c4('0x28')](function(){if(!_[_0xa8c4('0x88')](_0x41e3d5)){return _0x5c126c[_0xa8c4('0x89')](_0x41e3d5,{'transaction':_0x4171c3});}})[_0xa8c4('0x28')](function(){_0x41e3d5[_0xa8c4('0x70')](function(_0x30a210){socket[_0xa8c4('0x71')]('userMailQueue:remove',{'UserId':_0x30a210,'MailQueueId':_0x5c126c['id']});});});});});});})[_0xa8c4('0x28')](respondWithStatusCode(_0x236af8,null))[_0xa8c4('0x46')](handleError(_0x236af8,null));};exports[_0xa8c4('0x8a')]=function(_0xfebcae,_0x1249d4,_0x4c6422){return db[_0xa8c4('0x2f')][_0xa8c4('0x4a')]({'where':{'id':_0xfebcae[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x1249d4,null))[_0xa8c4('0x28')](function(_0xe310ff){if(_0xe310ff){return _0xe310ff[_0xa8c4('0x8a')](_0xfebcae['body']['ids'],_[_0xa8c4('0x8b')](_0xfebcae[_0xa8c4('0x56')],[_0xa8c4('0x69'),'id'])||{})[_0xa8c4('0x8c')](function(_0x2efb24){for(var _0x2a4c24=0x0;_0x2a4c24<_0xfebcae[_0xa8c4('0x56')]['ids'][_0xa8c4('0x48')];_0x2a4c24+=0x1){socket[_0xa8c4('0x71')](_0xa8c4('0x72'),{'UserId':Number(_0xfebcae[_0xa8c4('0x56')][_0xa8c4('0x69')][_0x2a4c24]),'MailQueueId':Number(_0xfebcae['params']['id'])});}return _0x2efb24;});}})[_0xa8c4('0x28')](respondWithResult(_0x1249d4,null))[_0xa8c4('0x46')](handleError(_0x1249d4,null));};exports[_0xa8c4('0x89')]=function(_0x284481,_0x4d7a6d,_0x5d1a53){return db['MailQueue'][_0xa8c4('0x4a')]({'where':{'id':_0x284481['params']['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x4d7a6d,null))[_0xa8c4('0x28')](function(_0x22d3f6){if(_0x22d3f6){return _0x22d3f6[_0xa8c4('0x89')](_0x284481[_0xa8c4('0x33')][_0xa8c4('0x69')])[_0xa8c4('0x28')](function(){if(_[_0xa8c4('0x8d')](_0x284481[_0xa8c4('0x33')][_0xa8c4('0x69')])){for(var _0x1c2927=0x0;_0x1c2927<_0x284481['query']['ids'][_0xa8c4('0x48')];_0x1c2927+=0x1){socket[_0xa8c4('0x71')](_0xa8c4('0x8e'),{'UserId':Number(_0x284481[_0xa8c4('0x33')]['ids'][_0x1c2927]),'MailQueueId':Number(_0x284481[_0xa8c4('0x57')]['id'])});}}else{socket[_0xa8c4('0x71')](_0xa8c4('0x8e'),{'UserId':Number(_0x284481[_0xa8c4('0x33')][_0xa8c4('0x69')]),'MailQueueId':Number(_0x284481['params']['id'])});}});}})[_0xa8c4('0x28')](respondWithStatusCode(_0x4d7a6d,null))['catch'](handleError(_0x4d7a6d,null));};exports[_0xa8c4('0x8f')]=function(_0x37e7b4,_0x5bda5a,_0x53bb22){var _0x1596f8={};var _0x34b80d={};var _0x8278b2;var _0x2f7aa8;return db[_0xa8c4('0x2f')][_0xa8c4('0x5a')]({'where':{'id':_0x37e7b4['params']['id']}})['then'](handleEntityNotFound(_0x5bda5a,null))[_0xa8c4('0x28')](function(_0x54e479){if(_0x54e479){_0x8278b2=_0x54e479;_0x34b80d[_0xa8c4('0x32')]=_['keys'](db[_0xa8c4('0x74')][_0xa8c4('0x30')]);_0x34b80d[_0xa8c4('0x33')]=_['keys'](_0x37e7b4[_0xa8c4('0x33')]);_0x34b80d[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x34b80d[_0xa8c4('0x32')],_0x34b80d[_0xa8c4('0x33')]);_0x1596f8['attributes']=_['intersection'](_0x34b80d[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0x37e7b4['query'][_0xa8c4('0x37')]));_0x1596f8[_0xa8c4('0x38')]=_0x1596f8[_0xa8c4('0x38')][_0xa8c4('0x48')]?_0x1596f8[_0xa8c4('0x38')]:_0x34b80d['model'];_0x1596f8[_0xa8c4('0x3b')]=qs[_0xa8c4('0x3c')](_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x3c')]);_0x1596f8[_0xa8c4('0x3d')]=qs[_0xa8c4('0x35')](_['pick'](_0x37e7b4[_0xa8c4('0x33')],_0x34b80d[_0xa8c4('0x35')]));if(_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x40')]){_0x1596f8[_0xa8c4('0x3d')]=_[_0xa8c4('0x41')](_0x1596f8[_0xa8c4('0x3d')],{'$or':_[_0xa8c4('0x2e')](_0x1596f8[_0xa8c4('0x38')],function(_0x3660db){var _0x2e4ae7={};_0x2e4ae7[_0x3660db]={'$like':'%'+_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x40')]+'%'};return _0x2e4ae7;})});}_0x1596f8=_[_0xa8c4('0x41')]({},_0x1596f8,_0x37e7b4[_0xa8c4('0x42')]);return _0x8278b2[_0xa8c4('0x8f')](_0x1596f8);}})['then'](function(_0x30902a){if(_0x30902a){_0x2f7aa8=_0x30902a[_0xa8c4('0x48')];if(!_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x39')](_0xa8c4('0x3a'))){_0x1596f8['limit']=qs[_0xa8c4('0x21')](_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x21')]);_0x1596f8[_0xa8c4('0x20')]=qs['offset'](_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x20')]);}return _0x8278b2[_0xa8c4('0x8f')](_0x1596f8);}})['then'](function(_0x5688d6){if(_0x5688d6){return _0x5688d6?{'count':_0x2f7aa8,'rows':_0x5688d6}:null;}})[_0xa8c4('0x28')](respondWithResult(_0x5bda5a,null))[_0xa8c4('0x46')](handleError(_0x5bda5a,null));};
\ No newline at end of file
index c60623c..b931fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ea=['emit','hasOwnProperty','hook','events','MailQueue','setMaxListeners','save','update','remove'];(function(_0x9175cf,_0x320237){var _0x5cb757=function(_0x4c8ca4){while(--_0x4c8ca4){_0x9175cf['push'](_0x9175cf['shift']());}};_0x5cb757(++_0x320237);}(_0x10ea,0x1d7));var _0xa10e=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x10ea[_0x5f309e];return _0x487b5e;};'use strict';var EventEmitter=require(_0xa10e('0x0'));var MailQueue=require('../../mysqldb')['db'][_0xa10e('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xa10e('0x2')](0x0);var events={'afterCreate':_0xa10e('0x3'),'afterUpdate':_0xa10e('0x4'),'afterDestroy':_0xa10e('0x5')};function emitEvent(_0x8f6b5b){return function(_0x129ea7,_0x116d35,_0x3c93f6){MailQueueEvents[_0xa10e('0x6')](_0x8f6b5b+':'+_0x129ea7['id'],_0x129ea7);MailQueueEvents[_0xa10e('0x6')](_0x8f6b5b,_0x129ea7);_0x3c93f6(null);};}for(var e in events){if(events[_0xa10e('0x7')](e)){var event=events[e];MailQueue[_0xa10e('0x8')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0xd7ae=['MailQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4696fe,_0x59652e){var _0x364f9f=function(_0x561d8b){while(--_0x561d8b){_0x4696fe['push'](_0x4696fe['shift']());}};_0x364f9f(++_0x59652e);}(_0xd7ae,0xa0));var _0xed7a=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xd7ae[_0x2be8c2];return _0x97f531;};'use strict';var EventEmitter=require('events');var MailQueue=require('../../mysqldb')['db'][_0xed7a('0x0')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xed7a('0x1')](0x0);var events={'afterCreate':_0xed7a('0x2'),'afterUpdate':'update','afterDestroy':_0xed7a('0x3')};function emitEvent(_0x57cb36){return function(_0x1a5c5e,_0x41f84f,_0x17cd71){MailQueueEvents[_0xed7a('0x4')](_0x57cb36+':'+_0x1a5c5e['id'],_0x1a5c5e);MailQueueEvents[_0xed7a('0x4')](_0x57cb36,_0x1a5c5e);_0x17cd71(null);};}for(var e in events){if(events[_0xed7a('0x5')](e)){var event=events[e];MailQueue[_0xed7a('0x6')](e,emitEvent(event));}}module[_0xed7a('0x7')]=MailQueueEvents;
\ No newline at end of file
index a39c822..c1e42d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5d5=['../../config/logger','moment','bluebird','request-promise','rimraf','./mailQueue.attributes','exports','define','mail_queues','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc5d5,0x6c));var _0x5c5d=function(_0x52ff6b,_0x4e8414){_0x52ff6b=_0x52ff6b-0x0;var _0x2a273f=_0xc5d5[_0x52ff6b];return _0x2a273f;};'use strict';var _=require(_0x5c5d('0x0'));var util=require(_0x5c5d('0x1'));var logger=require(_0x5c5d('0x2'))('api');var moment=require(_0x5c5d('0x3'));var BPromise=require(_0x5c5d('0x4'));var rp=require(_0x5c5d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5c5d('0x6'));var config=require('../../config/environment');var attributes=require(_0x5c5d('0x7'));module[_0x5c5d('0x8')]=function(_0xfbdf9d,_0x2eb536){return _0xfbdf9d[_0x5c5d('0x9')]('MailQueue',attributes,{'tableName':_0x5c5d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x887a=['rimraf','../../config/environment','exports','define','MailQueue','mail_queues','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x4fc80b,_0xfe1b3d){var _0x119dba=function(_0x16ed12){while(--_0x16ed12){_0x4fc80b['push'](_0x4fc80b['shift']());}};_0x119dba(++_0xfe1b3d);}(_0x887a,0x19e));var _0xa887=function(_0x4f656a,_0x3039fd){_0x4f656a=_0x4f656a-0x0;var _0x6c84d8=_0x887a[_0x4f656a];return _0x6c84d8;};'use strict';var _=require(_0xa887('0x0'));var util=require('util');var logger=require(_0xa887('0x1'))(_0xa887('0x2'));var moment=require(_0xa887('0x3'));var BPromise=require(_0xa887('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa887('0x5'));var rimraf=require(_0xa887('0x6'));var config=require(_0xa887('0x7'));var attributes=require('./mailQueue.attributes');module[_0xa887('0x8')]=function(_0x46cba8,_0x4286e6){return _0x46cba8[_0xa887('0x9')](_0xa887('0xa'),attributes,{'tableName':_0xa887('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbce628..0413f70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a77=['request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','MailQueue,\x20%s,\x20%s','message','info','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','include','map','model','ShowMailQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','request','then'];(function(_0x3e1b2c,_0x271716){var _0x6a2001=function(_0x793917){while(--_0x793917){_0x3e1b2c['push'](_0x3e1b2c['shift']());}};_0x6a2001(++_0x271716);}(_0x9a77,0x100));var _0x79a7=function(_0x2e3203,_0x192a4e){_0x2e3203=_0x2e3203-0x0;var _0x155971=_0x9a77[_0x2e3203];return _0x155971;};'use strict';var _=require(_0x79a7('0x0'));var util=require(_0x79a7('0x1'));var moment=require(_0x79a7('0x2'));var BPromise=require('bluebird');var rs=require(_0x79a7('0x3'));var fs=require('fs');var Redis=require(_0x79a7('0x4'));var db=require(_0x79a7('0x5'))['db'];var utils=require(_0x79a7('0x6'));var logger=require(_0x79a7('0x7'))('rpc');var config=require(_0x79a7('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x79a7('0x9')][_0x79a7('0xa')]({'port':0x232a});config[_0x79a7('0xb')]=_[_0x79a7('0xc')](config[_0x79a7('0xb')],{'host':_0x79a7('0xd'),'port':0x18eb});var socket=require(_0x79a7('0xe'))(new Redis(config[_0x79a7('0xb')]));require('./mailQueue.socket')['register'](socket);function respondWithRpcPromise(_0x5d0be1,_0x219c03,_0x529c){return new BPromise(function(_0x1815b2,_0x254138){return client[_0x79a7('0xf')](_0x5d0be1,_0x529c)[_0x79a7('0x10')](function(_0x73cf89){logger['info']('MailQueue,\x20%s,\x20%s',_0x219c03,_0x79a7('0x11'));logger[_0x79a7('0x12')](_0x79a7('0x13'),_0x219c03,_0x79a7('0x11'),JSON[_0x79a7('0x14')](_0x73cf89));if(_0x73cf89['error']){if(_0x73cf89[_0x79a7('0x15')][_0x79a7('0x16')]===0x1f4){logger['error'](_0x79a7('0x17'),_0x219c03,_0x73cf89[_0x79a7('0x15')][_0x79a7('0x18')]);return _0x254138(_0x73cf89[_0x79a7('0x15')][_0x79a7('0x18')]);}logger['error'](_0x79a7('0x17'),_0x219c03,_0x73cf89[_0x79a7('0x15')]['message']);return _0x1815b2(_0x73cf89['error']['message']);}else{logger[_0x79a7('0x19')](_0x79a7('0x17'),_0x219c03,_0x79a7('0x11'));_0x1815b2(_0x73cf89[_0x79a7('0x1a')][_0x79a7('0x18')]);}})[_0x79a7('0x1b')](function(_0x225f65){logger['error'](_0x79a7('0x17'),_0x219c03,_0x225f65);_0x254138(_0x225f65);});});}exports[_0x79a7('0x1c')]=function(_0x2ffbbd){var _0x5cb8ac=this;return new Promise(function(_0x2a1586,_0xbbea6c){return db[_0x79a7('0x1d')]['findAll']({'raw':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd['options'][_0x79a7('0x1f')]===undefined?!![]:![]:!![],'where':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x20')]||null:null,'attributes':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x21')]||null:null,'limit':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')]['limit']||null:null,'include':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x22')],function(_0x2f6bc2){return{'model':db[_0x2f6bc2[_0x79a7('0x24')]],'as':_0x2f6bc2['as'],'attributes':_0x2f6bc2[_0x79a7('0x21')],'include':_0x2f6bc2['include']?_['map'](_0x2f6bc2[_0x79a7('0x22')],function(_0x4e39ef){return{'model':db[_0x4e39ef[_0x79a7('0x24')]],'as':_0x4e39ef['as'],'attributes':_0x4e39ef[_0x79a7('0x21')],'include':_0x4e39ef[_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x4e39ef[_0x79a7('0x22')],function(_0x1e5b7c){return{'model':db[_0x1e5b7c[_0x79a7('0x24')]],'as':_0x1e5b7c['as'],'attributes':_0x1e5b7c['attributes']};}):[]};}):[]};}):[]:[]})[_0x79a7('0x10')](function(_0x6e3815){logger['info'](_0x79a7('0x1c'),_0x2ffbbd);logger[_0x79a7('0x12')](_0x79a7('0x1c'),_0x2ffbbd,JSON['stringify'](_0x6e3815));_0x2a1586(_0x6e3815);})[_0x79a7('0x1b')](function(_0x25a7d1){logger[_0x79a7('0x15')](_0x79a7('0x1c'),_0x25a7d1[_0x79a7('0x18')],_0x2ffbbd);_0xbbea6c(_0x5cb8ac[_0x79a7('0x15')](0x1f4,_0x25a7d1[_0x79a7('0x18')]));});});};exports[_0x79a7('0x25')]=function(_0x17b9ca){var _0x1d3748=this;return new Promise(function(_0x175bfa,_0xc30f82){return db[_0x79a7('0x1d')][_0x79a7('0x26')]({'raw':_0x17b9ca[_0x79a7('0x1e')]?_0x17b9ca['options'][_0x79a7('0x1f')]===undefined?!![]:![]:!![],'where':_0x17b9ca['options']?_0x17b9ca[_0x79a7('0x1e')][_0x79a7('0x20')]||null:null,'attributes':_0x17b9ca[_0x79a7('0x1e')]?_0x17b9ca[_0x79a7('0x1e')][_0x79a7('0x21')]||null:null,'include':_0x17b9ca[_0x79a7('0x1e')]?_0x17b9ca['options'][_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x17b9ca[_0x79a7('0x1e')][_0x79a7('0x22')],function(_0x108ebc){return{'model':db[_0x108ebc[_0x79a7('0x24')]],'as':_0x108ebc['as'],'attributes':_0x108ebc[_0x79a7('0x21')],'include':_0x108ebc[_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x108ebc['include'],function(_0x2e0a34){return{'model':db[_0x2e0a34[_0x79a7('0x24')]],'as':_0x2e0a34['as'],'attributes':_0x2e0a34[_0x79a7('0x21')],'include':_0x2e0a34[_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x2e0a34[_0x79a7('0x22')],function(_0x33d579){return{'model':db[_0x33d579[_0x79a7('0x24')]],'as':_0x33d579['as'],'attributes':_0x33d579['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x34b379){logger[_0x79a7('0x19')](_0x79a7('0x25'),_0x17b9ca);logger[_0x79a7('0x12')](_0x79a7('0x25'),_0x17b9ca,JSON['stringify'](_0x34b379));_0x175bfa(_0x34b379);})[_0x79a7('0x1b')](function(_0x3424de){logger[_0x79a7('0x15')](_0x79a7('0x25'),_0x3424de[_0x79a7('0x18')],_0x17b9ca);_0xc30f82(_0x1d3748[_0x79a7('0x15')](0x1f4,_0x3424de[_0x79a7('0x18')]));});});};
\ No newline at end of file
+var _0xc9d9=['stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./mailQueue.socket','register','request','then','info','request\x20sent','error','code','message','MailQueue,\x20%s,\x20%s','result','catch','MailQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetMailQueue','ShowMailQueue','find','debug'];(function(_0x14ff48,_0x234f7e){var _0x5bccad=function(_0x2a3cd2){while(--_0x2a3cd2){_0x14ff48['push'](_0x14ff48['shift']());}};_0x5bccad(++_0x234f7e);}(_0xc9d9,0x141));var _0x9c9d=function(_0x461ce6,_0x13ae64){_0x461ce6=_0x461ce6-0x0;var _0x4bd163=_0xc9d9[_0x461ce6];return _0x4bd163;};'use strict';var _=require(_0x9c9d('0x0'));var util=require(_0x9c9d('0x1'));var moment=require(_0x9c9d('0x2'));var BPromise=require('bluebird');var rs=require(_0x9c9d('0x3'));var fs=require('fs');var Redis=require(_0x9c9d('0x4'));var db=require(_0x9c9d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9c9d('0x6'))(_0x9c9d('0x7'));var config=require(_0x9c9d('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9c9d('0x9')]({'port':0x232a});config[_0x9c9d('0xa')]=_[_0x9c9d('0xb')](config[_0x9c9d('0xa')],{'host':_0x9c9d('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9c9d('0xa')]));require(_0x9c9d('0xd'))[_0x9c9d('0xe')](socket);function respondWithRpcPromise(_0x75139d,_0x1921d6,_0x3e5eac){return new BPromise(function(_0x3c9223,_0xc4adbd){return client[_0x9c9d('0xf')](_0x75139d,_0x3e5eac)[_0x9c9d('0x10')](function(_0x3d52c8){logger[_0x9c9d('0x11')]('MailQueue,\x20%s,\x20%s',_0x1921d6,_0x9c9d('0x12'));logger['debug']('MailQueue,\x20%s,\x20%s,\x20%s',_0x1921d6,_0x9c9d('0x12'),JSON['stringify'](_0x3d52c8));if(_0x3d52c8[_0x9c9d('0x13')]){if(_0x3d52c8[_0x9c9d('0x13')][_0x9c9d('0x14')]===0x1f4){logger[_0x9c9d('0x13')]('MailQueue,\x20%s,\x20%s',_0x1921d6,_0x3d52c8[_0x9c9d('0x13')][_0x9c9d('0x15')]);return _0xc4adbd(_0x3d52c8[_0x9c9d('0x13')][_0x9c9d('0x15')]);}logger[_0x9c9d('0x13')](_0x9c9d('0x16'),_0x1921d6,_0x3d52c8[_0x9c9d('0x13')]['message']);return _0x3c9223(_0x3d52c8['error']['message']);}else{logger[_0x9c9d('0x11')]('MailQueue,\x20%s,\x20%s',_0x1921d6,_0x9c9d('0x12'));_0x3c9223(_0x3d52c8[_0x9c9d('0x17')][_0x9c9d('0x15')]);}})[_0x9c9d('0x18')](function(_0x10dc73){logger[_0x9c9d('0x13')](_0x9c9d('0x16'),_0x1921d6,_0x10dc73);_0xc4adbd(_0x10dc73);});});}exports['GetMailQueue']=function(_0x1f647d){var _0x521b6c=this;return new Promise(function(_0x1bac08,_0x32ca16){return db[_0x9c9d('0x19')][_0x9c9d('0x1a')]({'raw':_0x1f647d['options']?_0x1f647d[_0x9c9d('0x1b')][_0x9c9d('0x1c')]===undefined?!![]:![]:!![],'where':_0x1f647d[_0x9c9d('0x1b')]?_0x1f647d[_0x9c9d('0x1b')][_0x9c9d('0x1d')]||null:null,'attributes':_0x1f647d[_0x9c9d('0x1b')]?_0x1f647d[_0x9c9d('0x1b')][_0x9c9d('0x1e')]||null:null,'limit':_0x1f647d[_0x9c9d('0x1b')]?_0x1f647d[_0x9c9d('0x1b')][_0x9c9d('0x1f')]||null:null,'include':_0x1f647d[_0x9c9d('0x1b')]?_0x1f647d[_0x9c9d('0x1b')][_0x9c9d('0x20')]?_[_0x9c9d('0x21')](_0x1f647d[_0x9c9d('0x1b')]['include'],function(_0xf0a9c8){return{'model':db[_0xf0a9c8[_0x9c9d('0x22')]],'as':_0xf0a9c8['as'],'attributes':_0xf0a9c8[_0x9c9d('0x1e')],'include':_0xf0a9c8[_0x9c9d('0x20')]?_[_0x9c9d('0x21')](_0xf0a9c8[_0x9c9d('0x20')],function(_0x333307){return{'model':db[_0x333307[_0x9c9d('0x22')]],'as':_0x333307['as'],'attributes':_0x333307[_0x9c9d('0x1e')],'include':_0x333307[_0x9c9d('0x20')]?_[_0x9c9d('0x21')](_0x333307[_0x9c9d('0x20')],function(_0x3648b3){return{'model':db[_0x3648b3[_0x9c9d('0x22')]],'as':_0x3648b3['as'],'attributes':_0x3648b3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4e5724){logger[_0x9c9d('0x11')](_0x9c9d('0x23'),_0x1f647d);logger['debug'](_0x9c9d('0x23'),_0x1f647d,JSON['stringify'](_0x4e5724));_0x1bac08(_0x4e5724);})['catch'](function(_0x33556c){logger['error'](_0x9c9d('0x23'),_0x33556c[_0x9c9d('0x15')],_0x1f647d);_0x32ca16(_0x521b6c[_0x9c9d('0x13')](0x1f4,_0x33556c[_0x9c9d('0x15')]));});});};exports[_0x9c9d('0x24')]=function(_0x259f4f){var _0x3ee128=this;return new Promise(function(_0x3018b8,_0x2d5174){return db[_0x9c9d('0x19')][_0x9c9d('0x25')]({'raw':_0x259f4f[_0x9c9d('0x1b')]?_0x259f4f['options'][_0x9c9d('0x1c')]===undefined?!![]:![]:!![],'where':_0x259f4f[_0x9c9d('0x1b')]?_0x259f4f[_0x9c9d('0x1b')][_0x9c9d('0x1d')]||null:null,'attributes':_0x259f4f[_0x9c9d('0x1b')]?_0x259f4f[_0x9c9d('0x1b')][_0x9c9d('0x1e')]||null:null,'include':_0x259f4f[_0x9c9d('0x1b')]?_0x259f4f['options'][_0x9c9d('0x20')]?_['map'](_0x259f4f[_0x9c9d('0x1b')]['include'],function(_0x2dfced){return{'model':db[_0x2dfced['model']],'as':_0x2dfced['as'],'attributes':_0x2dfced[_0x9c9d('0x1e')],'include':_0x2dfced['include']?_['map'](_0x2dfced[_0x9c9d('0x20')],function(_0x4b4b8c){return{'model':db[_0x4b4b8c[_0x9c9d('0x22')]],'as':_0x4b4b8c['as'],'attributes':_0x4b4b8c[_0x9c9d('0x1e')],'include':_0x4b4b8c['include']?_['map'](_0x4b4b8c[_0x9c9d('0x20')],function(_0x178667){return{'model':db[_0x178667[_0x9c9d('0x22')]],'as':_0x178667['as'],'attributes':_0x178667[_0x9c9d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9c9d('0x10')](function(_0x423ca4){logger[_0x9c9d('0x11')]('ShowMailQueue',_0x259f4f);logger[_0x9c9d('0x26')]('ShowMailQueue',_0x259f4f,JSON[_0x9c9d('0x27')](_0x423ca4));_0x3018b8(_0x423ca4);})['catch'](function(_0x57ace3){logger[_0x9c9d('0x13')](_0x9c9d('0x24'),_0x57ace3[_0x9c9d('0x15')],_0x259f4f);_0x2d5174(_0x3ee128[_0x9c9d('0x13')](0x1f4,_0x57ace3[_0x9c9d('0x15')]));});});};
\ No newline at end of file
index e489ddd..1a9dbb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b79=['save','remove','update','emit','removeListener','register','length','mailQueue:'];(function(_0x4e4061,_0x26503b){var _0x371dbd=function(_0x31a31f){while(--_0x31a31f){_0x4e4061['push'](_0x4e4061['shift']());}};_0x371dbd(++_0x26503b);}(_0x2b79,0x138));var _0x92b7=function(_0x56500a,_0x5953c7){_0x56500a=_0x56500a-0x0;var _0x333977=_0x2b79[_0x56500a];return _0x333977;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x92b7('0x0'),_0x92b7('0x1'),_0x92b7('0x2')];function createListener(_0x810cd1,_0x31072b){return function(_0x45bfae){_0x31072b[_0x92b7('0x3')](_0x810cd1,_0x45bfae);};}function removeListener(_0x36fe,_0xfed1){return function(){MailQueueEvents[_0x92b7('0x4')](_0x36fe,_0xfed1);};}exports[_0x92b7('0x5')]=function(_0x510a54){for(var _0x2c1628=0x0,_0x55817e=events[_0x92b7('0x6')];_0x2c1628<_0x55817e;_0x2c1628++){var _0x321707=events[_0x2c1628];var _0x5969b3=createListener(_0x92b7('0x7')+_0x321707,_0x510a54);MailQueueEvents['on'](_0x321707,_0x5969b3);}};
\ No newline at end of file
+var _0x8292=['register','length','mailQueue:','./mailQueue.events','remove','update','emit','removeListener'];(function(_0x3137f0,_0x509d52){var _0x4c12c4=function(_0x4b9be3){while(--_0x4b9be3){_0x3137f0['push'](_0x3137f0['shift']());}};_0x4c12c4(++_0x509d52);}(_0x8292,0x19b));var _0x2829=function(_0x32e9e9,_0x3df5aa){_0x32e9e9=_0x32e9e9-0x0;var _0x400b63=_0x8292[_0x32e9e9];return _0x400b63;};'use strict';var MailQueueEvents=require(_0x2829('0x0'));var events=['save',_0x2829('0x1'),_0x2829('0x2')];function createListener(_0x4502b3,_0x4c2bf0){return function(_0xa8d73f){_0x4c2bf0[_0x2829('0x3')](_0x4502b3,_0xa8d73f);};}function removeListener(_0x142525,_0x4bd76f){return function(){MailQueueEvents[_0x2829('0x4')](_0x142525,_0x4bd76f);};}exports[_0x2829('0x5')]=function(_0xd9cfdf){for(var _0x19472f=0x0,_0x36735f=events[_0x2829('0x6')];_0x19472f<_0x36735f;_0x19472f++){var _0x39f092=events[_0x19472f];var _0x1146ee=createListener(_0x2829('0x7')+_0x39f092,_0xd9cfdf);MailQueueEvents['on'](_0x39f092,_0x1146ee);}};
\ No newline at end of file
index 629db13..b56a858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd300=['../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x21b359,_0x4dc80e){var _0x57b8e7=function(_0x135adb){while(--_0x135adb){_0x21b359['push'](_0x21b359['shift']());}};_0x57b8e7(++_0x4dc80e);}(_0xd300,0xb8));var _0x0d30=function(_0x48881c,_0x2e5317){_0x48881c=_0x48881c-0x0;var _0x443406=_0xd300[_0x48881c];return _0x443406;};'use strict';var multer=require(_0x0d30('0x0'));var util=require(_0x0d30('0x1'));var path=require(_0x0d30('0x2'));var timeout=require(_0x0d30('0x3'));var express=require('express');var router=express[_0x0d30('0x4')]();var fs_extra=require(_0x0d30('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0d30('0x6'));var config=require(_0x0d30('0x7'));var controller=require(_0x0d30('0x8'));router[_0x0d30('0x9')]('/',auth[_0x0d30('0xa')](),controller[_0x0d30('0xb')]);router[_0x0d30('0x9')](_0x0d30('0xc'),auth[_0x0d30('0xa')](),controller['describe']);router[_0x0d30('0x9')](_0x0d30('0xd'),auth['isAuthenticated'](),controller[_0x0d30('0xe')]);router[_0x0d30('0xf')]('/',auth[_0x0d30('0xa')](),controller[_0x0d30('0x10')]);router[_0x0d30('0x11')](_0x0d30('0xd'),auth[_0x0d30('0xa')](),controller['update']);router[_0x0d30('0x12')](_0x0d30('0xd'),auth[_0x0d30('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x64b3=['fs-extra','../../components/auth/service','../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x64b3,0xa4));var _0x364b=function(_0xa068ee,_0x2833d1){_0xa068ee=_0xa068ee-0x0;var _0x4e4a27=_0x64b3[_0xa068ee];return _0x4e4a27;};'use strict';var multer=require(_0x364b('0x0'));var util=require(_0x364b('0x1'));var path=require('path');var timeout=require(_0x364b('0x2'));var express=require(_0x364b('0x3'));var router=express['Router']();var fs_extra=require(_0x364b('0x4'));var auth=require(_0x364b('0x5'));var interaction=require(_0x364b('0x6'));var config=require('../../config/environment');var controller=require(_0x364b('0x7'));router[_0x364b('0x8')]('/',auth[_0x364b('0x9')](),controller[_0x364b('0xa')]);router[_0x364b('0x8')](_0x364b('0xb'),auth['isAuthenticated'](),controller[_0x364b('0xc')]);router['get']('/:id',auth[_0x364b('0x9')](),controller[_0x364b('0xd')]);router['post']('/',auth[_0x364b('0x9')](),controller[_0x364b('0xe')]);router[_0x364b('0xf')](_0x364b('0x10'),auth['isAuthenticated'](),controller[_0x364b('0x11')]);router[_0x364b('0x12')](_0x364b('0x10'),auth['isAuthenticated'](),controller[_0x364b('0x13')]);module[_0x364b('0x14')]=router;
\ No newline at end of file
index 62f7f71..9c6b773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec96=['DATE','moment','sequelize','exports','STRING'];(function(_0x5a1987,_0x140afa){var _0x5c5a82=function(_0x3290a0){while(--_0x3290a0){_0x5a1987['push'](_0x5a1987['shift']());}};_0x5c5a82(++_0x140afa);}(_0xec96,0x119));var _0x6ec9=function(_0x5e1893,_0x5395dd){_0x5e1893=_0x5e1893-0x0;var _0x3eb998=_0xec96[_0x5e1893];return _0x3eb998;};'use strict';var moment=require(_0x6ec9('0x0'));var Sequelize=require(_0x6ec9('0x1'));module[_0x6ec9('0x2')]={'uniqueid':{'type':Sequelize[_0x6ec9('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x6ec9('0x3')]},'joinAt':{'type':Sequelize[_0x6ec9('0x4')]},'leaveAt':{'type':Sequelize[_0x6ec9('0x4')]},'acceptAt':{'type':Sequelize[_0x6ec9('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6ec9('0x3')]}};
\ No newline at end of file
+var _0x71b4=['DATE','moment','STRING'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x71b4,0xd6));var _0x471b=function(_0x269538,_0x5d953a){_0x269538=_0x269538-0x0;var _0x3bdf70=_0x71b4[_0x269538];return _0x3bdf70;};'use strict';var moment=require(_0x471b('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x471b('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x471b('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x471b('0x2')]},'acceptAt':{'type':Sequelize[_0x471b('0x2')]},'exitAt':{'type':Sequelize[_0x471b('0x2')]},'reason':{'type':Sequelize[_0x471b('0x1')]}};
\ No newline at end of file
index b869eb0..bdfbb60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6050=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','name','send','index','map','MailQueueReport','rawAttributes','type','key','model','query','keys'];(function(_0x4ca8a3,_0xa834be){var _0x27d6c2=function(_0xc60844){while(--_0xc60844){_0x4ca8a3['push'](_0x4ca8a3['shift']());}};_0x27d6c2(++_0xa834be);}(_0x6050,0x196));var _0x0605=function(_0x5d5871,_0x1275d0){_0x5d5871=_0x5d5871-0x0;var _0x40f7c8=_0x6050[_0x5d5871];return _0x40f7c8;};'use strict';var emlformat=require(_0x0605('0x0'));var rimraf=require(_0x0605('0x1'));var zipdir=require(_0x0605('0x2'));var jsonpatch=require(_0x0605('0x3'));var rp=require(_0x0605('0x4'));var moment=require(_0x0605('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0605('0x6'));var util=require(_0x0605('0x7'));var path=require(_0x0605('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0605('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0605('0xa'));var deskjs=require(_0x0605('0xb'));var toCsv=require(_0x0605('0xc'));var querystring=require(_0x0605('0xd'));var Papa=require(_0x0605('0xe'));var Redis=require('ioredis');var authService=require(_0x0605('0xf'));var qs=require(_0x0605('0x10'));var as=require(_0x0605('0x11'));var hardwareService=require(_0x0605('0x12'));var logger=require(_0x0605('0x13'))(_0x0605('0x14'));var utils=require(_0x0605('0x15'));var config=require(_0x0605('0x16'));var licenseUtil=require(_0x0605('0x17'));var db=require(_0x0605('0x18'))['db'];function respondWithStatusCode(_0xd22e35,_0x39e288){_0x39e288=_0x39e288||0xcc;return function(_0x34c9e6){if(_0x34c9e6){return _0xd22e35[_0x0605('0x19')](_0x39e288);}return _0xd22e35[_0x0605('0x1a')](_0x39e288)[_0x0605('0x1b')]();};}function respondWithResult(_0x169a70,_0x65a20b){_0x65a20b=_0x65a20b||0xc8;return function(_0x1b944f){if(_0x1b944f){return _0x169a70['status'](_0x65a20b)[_0x0605('0x1c')](_0x1b944f);}};}function respondWithFilteredResult(_0x1a802b,_0x4993ab){return function(_0x5ce56a){if(_0x5ce56a){var _0x4eefe9=typeof _0x4993ab[_0x0605('0x1d')]===_0x0605('0x1e')&&typeof _0x4993ab[_0x0605('0x1f')]===_0x0605('0x1e');var _0xefc557=_0x5ce56a[_0x0605('0x20')];var _0x2b7b5a=_0x4eefe9?0x0:_0x4993ab[_0x0605('0x1d')];var _0x193520=_0x4eefe9?_0x5ce56a[_0x0605('0x20')]:_0x4993ab[_0x0605('0x1d')]+_0x4993ab[_0x0605('0x1f')];var _0x2e2204;if(_0x193520>=_0xefc557){_0x193520=_0xefc557;_0x2e2204=0xc8;}else{_0x2e2204=0xce;}_0x1a802b[_0x0605('0x1a')](_0x2e2204);return _0x1a802b['set'](_0x0605('0x21'),_0x2b7b5a+'-'+_0x193520+'/'+_0xefc557)[_0x0605('0x1c')](_0x5ce56a);}return null;};}function patchUpdates(_0x430f28){return function(_0x443326){try{jsonpatch[_0x0605('0x22')](_0x443326,_0x430f28,!![]);}catch(_0x90b2e1){return BPromise[_0x0605('0x23')](_0x90b2e1);}return _0x443326[_0x0605('0x24')]();};}function saveUpdates(_0x226ef5,_0x5b0d44){return function(_0xc334b8){if(_0xc334b8){return _0xc334b8['update'](_0x226ef5)[_0x0605('0x25')](function(_0x118e9c){return _0x118e9c;});}return null;};}function removeEntity(_0x110098,_0xf182c4){return function(_0x10c575){if(_0x10c575){return _0x10c575[_0x0605('0x26')]()[_0x0605('0x25')](function(){_0x110098[_0x0605('0x1a')](0xcc)[_0x0605('0x1b')]();});}};}function handleEntityNotFound(_0x2896d7,_0x9f2833){return function(_0x1c3722){if(!_0x1c3722){_0x2896d7['sendStatus'](0x194);}return _0x1c3722;};}function handleError(_0x6bc204,_0x3c8e36){_0x3c8e36=_0x3c8e36||0x1f4;return function(_0x4b1e0c){logger['error'](_0x4b1e0c['stack']);if(_0x4b1e0c[_0x0605('0x27')]){delete _0x4b1e0c[_0x0605('0x27')];}_0x6bc204[_0x0605('0x1a')](_0x3c8e36)[_0x0605('0x28')](_0x4b1e0c);};}exports[_0x0605('0x29')]=function(_0x4554df,_0x4e32ef){var _0x34f25d={},_0x5daef6={},_0xa836f2={'count':0x0,'rows':[]};var _0x3640b9=_[_0x0605('0x2a')](db[_0x0605('0x2b')][_0x0605('0x2c')],function(_0x352dd6){return{'name':_0x352dd6['fieldName'],'type':_0x352dd6[_0x0605('0x2d')][_0x0605('0x2e')]};});_0x5daef6[_0x0605('0x2f')]=_[_0x0605('0x2a')](_0x3640b9,_0x0605('0x27'));_0x5daef6[_0x0605('0x30')]=_[_0x0605('0x31')](_0x4554df[_0x0605('0x30')]);_0x5daef6[_0x0605('0x32')]=_[_0x0605('0x33')](_0x5daef6[_0x0605('0x2f')],_0x5daef6[_0x0605('0x30')]);_0x34f25d[_0x0605('0x34')]=_[_0x0605('0x33')](_0x5daef6[_0x0605('0x2f')],qs[_0x0605('0x35')](_0x4554df[_0x0605('0x30')][_0x0605('0x35')]));_0x34f25d[_0x0605('0x34')]=_0x34f25d[_0x0605('0x34')][_0x0605('0x36')]?_0x34f25d[_0x0605('0x34')]:_0x5daef6[_0x0605('0x2f')];if(!_0x4554df[_0x0605('0x30')][_0x0605('0x37')](_0x0605('0x38'))){_0x34f25d[_0x0605('0x1f')]=qs['limit'](_0x4554df[_0x0605('0x30')][_0x0605('0x1f')]);_0x34f25d['offset']=qs[_0x0605('0x1d')](_0x4554df[_0x0605('0x30')]['offset']);}_0x34f25d[_0x0605('0x39')]=qs[_0x0605('0x3a')](_0x4554df[_0x0605('0x30')][_0x0605('0x3a')]);_0x34f25d[_0x0605('0x3b')]=qs[_0x0605('0x32')](_['pick'](_0x4554df['query'],_0x5daef6[_0x0605('0x32')]),_0x3640b9);if(_0x4554df[_0x0605('0x30')][_0x0605('0x3c')]){_0x34f25d['where']=_[_0x0605('0x3d')](_0x34f25d['where'],{'$or':_[_0x0605('0x2a')](_0x3640b9,function(_0x1e98f6){if(_0x1e98f6[_0x0605('0x2d')]!==_0x0605('0x3e')){var _0x42f7ce={};_0x42f7ce[_0x1e98f6[_0x0605('0x27')]]={'$like':'%'+_0x4554df[_0x0605('0x30')][_0x0605('0x3c')]+'%'};return _0x42f7ce;}})});}_0x34f25d=_[_0x0605('0x3d')]({},_0x34f25d,_0x4554df[_0x0605('0x3f')]);var _0x57aa15={'where':_0x34f25d[_0x0605('0x3b')]};return db['MailQueueReport'][_0x0605('0x20')](_0x57aa15)[_0x0605('0x25')](function(_0x45787e){_0xa836f2['count']=_0x45787e;if(_0x4554df['query'][_0x0605('0x40')]){_0x34f25d['include']=[{'all':!![]}];}return db[_0x0605('0x2b')][_0x0605('0x41')](_0x34f25d);})[_0x0605('0x25')](function(_0x3de34a){_0xa836f2[_0x0605('0x42')]=_0x3de34a;return _0xa836f2;})[_0x0605('0x25')](respondWithFilteredResult(_0x4e32ef,_0x34f25d))[_0x0605('0x43')](handleError(_0x4e32ef,null));};exports[_0x0605('0x44')]=function(_0x3fa553,_0x10bb36){var _0x18d3ce={'raw':!![],'where':{'id':_0x3fa553[_0x0605('0x45')]['id']}},_0x3616a3={};_0x3616a3['model']=_['keys'](db[_0x0605('0x2b')]['rawAttributes']);_0x3616a3[_0x0605('0x30')]=_[_0x0605('0x31')](_0x3fa553['query']);_0x3616a3[_0x0605('0x32')]=_[_0x0605('0x33')](_0x3616a3['model'],_0x3616a3[_0x0605('0x30')]);_0x18d3ce[_0x0605('0x34')]=_['intersection'](_0x3616a3[_0x0605('0x2f')],qs[_0x0605('0x35')](_0x3fa553['query'][_0x0605('0x35')]));_0x18d3ce['attributes']=_0x18d3ce['attributes'][_0x0605('0x36')]?_0x18d3ce[_0x0605('0x34')]:_0x3616a3[_0x0605('0x2f')];if(_0x3fa553[_0x0605('0x30')][_0x0605('0x40')]){_0x18d3ce[_0x0605('0x46')]=[{'all':!![]}];}_0x18d3ce=_[_0x0605('0x3d')]({},_0x18d3ce,_0x3fa553[_0x0605('0x3f')]);return db['MailQueueReport'][_0x0605('0x47')](_0x18d3ce)[_0x0605('0x25')](handleEntityNotFound(_0x10bb36,null))[_0x0605('0x25')](respondWithResult(_0x10bb36,null))['catch'](handleError(_0x10bb36,null));};exports[_0x0605('0x48')]=function(_0x1fb70b,_0x45cc1a){return db[_0x0605('0x2b')][_0x0605('0x48')](_0x1fb70b[_0x0605('0x49')],{})[_0x0605('0x25')](respondWithResult(_0x45cc1a,0xc9))[_0x0605('0x43')](handleError(_0x45cc1a,null));};exports[_0x0605('0x4a')]=function(_0x4bc55e,_0x3c597c){if(_0x4bc55e[_0x0605('0x49')]['id']){delete _0x4bc55e[_0x0605('0x49')]['id'];}return db[_0x0605('0x2b')][_0x0605('0x47')]({'where':{'id':_0x4bc55e[_0x0605('0x45')]['id']}})[_0x0605('0x25')](handleEntityNotFound(_0x3c597c,null))[_0x0605('0x25')](saveUpdates(_0x4bc55e[_0x0605('0x49')],null))[_0x0605('0x25')](respondWithResult(_0x3c597c,null))['catch'](handleError(_0x3c597c,null));};exports['destroy']=function(_0x4876c7,_0x2687a8){return db[_0x0605('0x2b')][_0x0605('0x47')]({'where':{'id':_0x4876c7[_0x0605('0x45')]['id']}})[_0x0605('0x25')](handleEntityNotFound(_0x2687a8,null))[_0x0605('0x25')](removeEntity(_0x2687a8,null))['catch'](handleError(_0x2687a8,null));};exports[_0x0605('0x4b')]=function(_0x286485,_0x184232){return db[_0x0605('0x2b')]['describe']()[_0x0605('0x25')](respondWithResult(_0x184232,null))[_0x0605('0x43')](handleError(_0x184232,null));};
\ No newline at end of file
+var _0xaebd=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','stack','send','index','map','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','include','findAll','catch','params','MailQueueReport','options','create','body','find','describe','eml-format'];(function(_0x9dd431,_0x389313){var _0x1aa903=function(_0x564021){while(--_0x564021){_0x9dd431['push'](_0x9dd431['shift']());}};_0x1aa903(++_0x389313);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x21bd61,_0x17a5b8){_0x21bd61=_0x21bd61-0x0;var _0x2cd2f2=_0xaebd[_0x21bd61];return _0x2cd2f2;};'use strict';var emlformat=require(_0xdaeb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdaeb('0x1'));var jsonpatch=require(_0xdaeb('0x2'));var rp=require(_0xdaeb('0x3'));var moment=require(_0xdaeb('0x4'));var BPromise=require(_0xdaeb('0x5'));var Mustache=require('mustache');var util=require(_0xdaeb('0x6'));var path=require(_0xdaeb('0x7'));var sox=require(_0xdaeb('0x8'));var csv=require(_0xdaeb('0x9'));var ejs=require(_0xdaeb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdaeb('0xb'));var squel=require(_0xdaeb('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdaeb('0xd'));var toCsv=require(_0xdaeb('0x9'));var querystring=require(_0xdaeb('0xe'));var Papa=require('papaparse');var Redis=require(_0xdaeb('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xdaeb('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdaeb('0x11'));var logger=require('../../config/logger')(_0xdaeb('0x12'));var utils=require(_0xdaeb('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdaeb('0x14'))['db'];function respondWithStatusCode(_0x5aedaa,_0x4ee3cc){_0x4ee3cc=_0x4ee3cc||0xcc;return function(_0x2673db){if(_0x2673db){return _0x5aedaa[_0xdaeb('0x15')](_0x4ee3cc);}return _0x5aedaa[_0xdaeb('0x16')](_0x4ee3cc)[_0xdaeb('0x17')]();};}function respondWithResult(_0x1f31be,_0xc6c611){_0xc6c611=_0xc6c611||0xc8;return function(_0x49ba9a){if(_0x49ba9a){return _0x1f31be['status'](_0xc6c611)[_0xdaeb('0x18')](_0x49ba9a);}};}function respondWithFilteredResult(_0x306bdb,_0x34b2fe){return function(_0x18ec4e){if(_0x18ec4e){var _0x538a25=typeof _0x34b2fe['offset']===_0xdaeb('0x19')&&typeof _0x34b2fe['limit']==='undefined';var _0x42e509=_0x18ec4e[_0xdaeb('0x1a')];var _0x1b5243=_0x538a25?0x0:_0x34b2fe[_0xdaeb('0x1b')];var _0x2d8f11=_0x538a25?_0x18ec4e[_0xdaeb('0x1a')]:_0x34b2fe['offset']+_0x34b2fe[_0xdaeb('0x1c')];var _0x5ccf66;if(_0x2d8f11>=_0x42e509){_0x2d8f11=_0x42e509;_0x5ccf66=0xc8;}else{_0x5ccf66=0xce;}_0x306bdb[_0xdaeb('0x16')](_0x5ccf66);return _0x306bdb[_0xdaeb('0x1d')](_0xdaeb('0x1e'),_0x1b5243+'-'+_0x2d8f11+'/'+_0x42e509)['json'](_0x18ec4e);}return null;};}function patchUpdates(_0x4e97e0){return function(_0x13563c){try{jsonpatch[_0xdaeb('0x1f')](_0x13563c,_0x4e97e0,!![]);}catch(_0x23fccb){return BPromise[_0xdaeb('0x20')](_0x23fccb);}return _0x13563c[_0xdaeb('0x21')]();};}function saveUpdates(_0x536aae,_0x597bb7){return function(_0x2c969d){if(_0x2c969d){return _0x2c969d[_0xdaeb('0x22')](_0x536aae)[_0xdaeb('0x23')](function(_0x1d919a){return _0x1d919a;});}return null;};}function removeEntity(_0x39dfae,_0x55c825){return function(_0x254c3b){if(_0x254c3b){return _0x254c3b['destroy']()[_0xdaeb('0x23')](function(){_0x39dfae[_0xdaeb('0x16')](0xcc)[_0xdaeb('0x17')]();});}};}function handleEntityNotFound(_0x3b0770,_0x32c2c1){return function(_0x4fc3e2){if(!_0x4fc3e2){_0x3b0770[_0xdaeb('0x15')](0x194);}return _0x4fc3e2;};}function handleError(_0x34fa21,_0x338687){_0x338687=_0x338687||0x1f4;return function(_0x4eb719){logger['error'](_0x4eb719[_0xdaeb('0x24')]);if(_0x4eb719['name']){delete _0x4eb719['name'];}_0x34fa21[_0xdaeb('0x16')](_0x338687)[_0xdaeb('0x25')](_0x4eb719);};}exports[_0xdaeb('0x26')]=function(_0x5eb7b5,_0x5e6f97){var _0x32966f={},_0x440022={},_0x37f468={'count':0x0,'rows':[]};var _0x596c19=_[_0xdaeb('0x27')](db['MailQueueReport']['rawAttributes'],function(_0x28812c){return{'name':_0x28812c[_0xdaeb('0x28')],'type':_0x28812c[_0xdaeb('0x29')][_0xdaeb('0x2a')]};});_0x440022[_0xdaeb('0x2b')]=_[_0xdaeb('0x27')](_0x596c19,_0xdaeb('0x2c'));_0x440022['query']=_[_0xdaeb('0x2d')](_0x5eb7b5[_0xdaeb('0x2e')]);_0x440022[_0xdaeb('0x2f')]=_[_0xdaeb('0x30')](_0x440022[_0xdaeb('0x2b')],_0x440022['query']);_0x32966f[_0xdaeb('0x31')]=_[_0xdaeb('0x30')](_0x440022['model'],qs[_0xdaeb('0x32')](_0x5eb7b5[_0xdaeb('0x2e')][_0xdaeb('0x32')]));_0x32966f[_0xdaeb('0x31')]=_0x32966f[_0xdaeb('0x31')][_0xdaeb('0x33')]?_0x32966f[_0xdaeb('0x31')]:_0x440022[_0xdaeb('0x2b')];if(!_0x5eb7b5[_0xdaeb('0x2e')][_0xdaeb('0x34')]('nolimit')){_0x32966f['limit']=qs[_0xdaeb('0x1c')](_0x5eb7b5['query'][_0xdaeb('0x1c')]);_0x32966f[_0xdaeb('0x1b')]=qs[_0xdaeb('0x1b')](_0x5eb7b5[_0xdaeb('0x2e')][_0xdaeb('0x1b')]);}_0x32966f[_0xdaeb('0x35')]=qs['sort'](_0x5eb7b5[_0xdaeb('0x2e')][_0xdaeb('0x36')]);_0x32966f[_0xdaeb('0x37')]=qs['filters'](_[_0xdaeb('0x38')](_0x5eb7b5[_0xdaeb('0x2e')],_0x440022[_0xdaeb('0x2f')]),_0x596c19);if(_0x5eb7b5[_0xdaeb('0x2e')][_0xdaeb('0x39')]){_0x32966f[_0xdaeb('0x37')]=_[_0xdaeb('0x3a')](_0x32966f['where'],{'$or':_[_0xdaeb('0x27')](_0x596c19,function(_0x170009){if(_0x170009['type']!=='VIRTUAL'){var _0x2ef310={};_0x2ef310[_0x170009[_0xdaeb('0x2c')]]={'$like':'%'+_0x5eb7b5['query'][_0xdaeb('0x39')]+'%'};return _0x2ef310;}})});}_0x32966f=_[_0xdaeb('0x3a')]({},_0x32966f,_0x5eb7b5['options']);var _0x151cc4={'where':_0x32966f[_0xdaeb('0x37')]};return db['MailQueueReport']['count'](_0x151cc4)[_0xdaeb('0x23')](function(_0x11dce7){_0x37f468[_0xdaeb('0x1a')]=_0x11dce7;if(_0x5eb7b5[_0xdaeb('0x2e')][_0xdaeb('0x3b')]){_0x32966f[_0xdaeb('0x3c')]=[{'all':!![]}];}return db['MailQueueReport'][_0xdaeb('0x3d')](_0x32966f);})['then'](function(_0x46aa44){_0x37f468['rows']=_0x46aa44;return _0x37f468;})['then'](respondWithFilteredResult(_0x5e6f97,_0x32966f))[_0xdaeb('0x3e')](handleError(_0x5e6f97,null));};exports['show']=function(_0x5a42a6,_0x4efd96){var _0x45c3fc={'raw':!![],'where':{'id':_0x5a42a6[_0xdaeb('0x3f')]['id']}},_0x244369={};_0x244369[_0xdaeb('0x2b')]=_['keys'](db[_0xdaeb('0x40')]['rawAttributes']);_0x244369[_0xdaeb('0x2e')]=_[_0xdaeb('0x2d')](_0x5a42a6[_0xdaeb('0x2e')]);_0x244369['filters']=_[_0xdaeb('0x30')](_0x244369[_0xdaeb('0x2b')],_0x244369[_0xdaeb('0x2e')]);_0x45c3fc[_0xdaeb('0x31')]=_[_0xdaeb('0x30')](_0x244369[_0xdaeb('0x2b')],qs[_0xdaeb('0x32')](_0x5a42a6[_0xdaeb('0x2e')][_0xdaeb('0x32')]));_0x45c3fc[_0xdaeb('0x31')]=_0x45c3fc[_0xdaeb('0x31')][_0xdaeb('0x33')]?_0x45c3fc['attributes']:_0x244369[_0xdaeb('0x2b')];if(_0x5a42a6[_0xdaeb('0x2e')]['includeAll']){_0x45c3fc['include']=[{'all':!![]}];}_0x45c3fc=_[_0xdaeb('0x3a')]({},_0x45c3fc,_0x5a42a6[_0xdaeb('0x41')]);return db[_0xdaeb('0x40')]['find'](_0x45c3fc)[_0xdaeb('0x23')](handleEntityNotFound(_0x4efd96,null))[_0xdaeb('0x23')](respondWithResult(_0x4efd96,null))[_0xdaeb('0x3e')](handleError(_0x4efd96,null));};exports[_0xdaeb('0x42')]=function(_0x266d6b,_0x45344b){return db[_0xdaeb('0x40')][_0xdaeb('0x42')](_0x266d6b['body'],{})[_0xdaeb('0x23')](respondWithResult(_0x45344b,0xc9))[_0xdaeb('0x3e')](handleError(_0x45344b,null));};exports['update']=function(_0x38d2ee,_0x4dd70c){if(_0x38d2ee[_0xdaeb('0x43')]['id']){delete _0x38d2ee[_0xdaeb('0x43')]['id'];}return db[_0xdaeb('0x40')][_0xdaeb('0x44')]({'where':{'id':_0x38d2ee[_0xdaeb('0x3f')]['id']}})[_0xdaeb('0x23')](handleEntityNotFound(_0x4dd70c,null))[_0xdaeb('0x23')](saveUpdates(_0x38d2ee[_0xdaeb('0x43')],null))[_0xdaeb('0x23')](respondWithResult(_0x4dd70c,null))['catch'](handleError(_0x4dd70c,null));};exports['destroy']=function(_0x1403c8,_0x3112d2){return db[_0xdaeb('0x40')][_0xdaeb('0x44')]({'where':{'id':_0x1403c8[_0xdaeb('0x3f')]['id']}})[_0xdaeb('0x23')](handleEntityNotFound(_0x3112d2,null))['then'](removeEntity(_0x3112d2,null))[_0xdaeb('0x3e')](handleError(_0x3112d2,null));};exports[_0xdaeb('0x45')]=function(_0x3f6a88,_0x589442){return db[_0xdaeb('0x40')]['describe']()[_0xdaeb('0x23')](respondWithResult(_0x589442,null))[_0xdaeb('0x3e')](handleError(_0x589442,null));};
\ No newline at end of file
index b443e48..c60b13a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddbb=['../../config/environment','define','MailQueueReport','report_mail_queue','uniqueid','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xca1e29,_0x342ade){var _0x20f476=function(_0x329272){while(--_0x329272){_0xca1e29['push'](_0xca1e29['shift']());}};_0x20f476(++_0x342ade);}(_0xddbb,0x9f));var _0xbddb=function(_0x5a86e1,_0x21bc27){_0x5a86e1=_0x5a86e1-0x0;var _0x207c6a=_0xddbb[_0x5a86e1];return _0x207c6a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbddb('0x0'))(_0xbddb('0x1'));var moment=require(_0xbddb('0x2'));var BPromise=require(_0xbddb('0x3'));var rp=require(_0xbddb('0x4'));var fs=require('fs');var path=require(_0xbddb('0x5'));var rimraf=require('rimraf');var config=require(_0xbddb('0x6'));var attributes=require('./mailQueueReport.attributes');module['exports']=function(_0x8fc4b3,_0xbe8dda){return _0x8fc4b3[_0xbddb('0x7')](_0xbddb('0x8'),attributes,{'tableName':_0xbddb('0x9'),'paranoid':![],'indexes':[{'name':_0xbddb('0xa'),'fields':[_0xbddb('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b7b=['bluebird','request-promise','path','rimraf','../../config/environment','exports','MailQueueReport','uniqueid','lodash','util','../../config/logger','api'];(function(_0x2bfd4f,_0x1bbf2c){var _0x341849=function(_0x4c246e){while(--_0x4c246e){_0x2bfd4f['push'](_0x2bfd4f['shift']());}};_0x341849(++_0x1bbf2c);}(_0x1b7b,0x104));var _0xb1b7=function(_0x4a0f3c,_0x3e6771){_0x4a0f3c=_0x4a0f3c-0x0;var _0x41eced=_0x1b7b[_0x4a0f3c];return _0x41eced;};'use strict';var _=require(_0xb1b7('0x0'));var util=require(_0xb1b7('0x1'));var logger=require(_0xb1b7('0x2'))(_0xb1b7('0x3'));var moment=require('moment');var BPromise=require(_0xb1b7('0x4'));var rp=require(_0xb1b7('0x5'));var fs=require('fs');var path=require(_0xb1b7('0x6'));var rimraf=require(_0xb1b7('0x7'));var config=require(_0xb1b7('0x8'));var attributes=require('./mailQueueReport.attributes');module[_0xb1b7('0x9')]=function(_0x488686,_0x275b8b){return _0x488686['define'](_0xb1b7('0xa'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0xb1b7('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5ad61cb..c2bcc10 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(_0x359fa6,_0x5deaec){var _0xaee281=function(_0x2f7db6){while(--_0x2f7db6){_0x359fa6['push'](_0x359fa6['shift']());}};_0xaee281(++_0x5deaec);}(_0x7a54,0x106));var _0x47a5=function(_0x6981f2,_0x2eb232){_0x6981f2=_0x6981f2-0x0;var _0x4887ba=_0x7a54[_0x6981f2];return _0x4887ba;};'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(_0x27a638,_0x18c8fe){var _0x3d3cc2=function(_0x42fb6c){while(--_0x42fb6c){_0x27a638['push'](_0x27a638['shift']());}};_0x3d3cc2(++_0x18c8fe);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xc4aa[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var 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 555a025..ef5f322 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(_0x190ff6,_0x515cfd){var _0x5356d2=function(_0x2cf77c){while(--_0x2cf77c){_0x190ff6['push'](_0x190ff6['shift']());}};_0x5356d2(++_0x515cfd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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(_0x3680a2,_0x2599fc){var _0x1af909=function(_0x45549b){while(--_0x45549b){_0x3680a2['push'](_0x3680a2['shift']());}};_0x1af909(++_0x2599fc);}(_0x70e0,0x17b));var _0x070e=function(_0x472753,_0x7e1ae9){_0x472753=_0x472753-0x0;var _0x5d3365=_0x70e0[_0x472753];return _0x5d3365;};'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 5db6bf1..2da2716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['INTEGER','exports','BOOLEAN','STRING'];(function(_0x150999,_0x5f357b){var _0x2cdc8c=function(_0x392240){while(--_0x392240){_0x150999['push'](_0x150999['shift']());}};_0x2cdc8c(++_0x5f357b);}(_0xbee3,0xd5));var _0x3bee=function(_0x744fd2,_0x393b40){_0x744fd2=_0x744fd2-0x0;var _0x742cc5=_0xbee3[_0x744fd2];return _0x742cc5;};'use strict';var Sequelize=require('sequelize');module[_0x3bee('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x3bee('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3bee('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x3bee('0x3')]},'tls':{'type':Sequelize[_0x3bee('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x3bee('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3bee('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xeffd=['INTEGER','INBOX','sequelize','STRING','BOOLEAN'];(function(_0x35ebbb,_0xe862ef){var _0x29d9b=function(_0x4fee98){while(--_0x4fee98){_0x35ebbb['push'](_0x35ebbb['shift']());}};_0x29d9b(++_0xe862ef);}(_0xeffd,0x6b));var _0xdeff=function(_0x109828,_0x46f032){_0x109828=_0x109828-0x0;var _0x5a4a02=_0xeffd[_0x109828];return _0x5a4a02;};'use strict';var Sequelize=require(_0xdeff('0x0'));module['exports']={'description':{'type':Sequelize[_0xdeff('0x1')]},'host':{'type':Sequelize[_0xdeff('0x1')]},'authentication':{'type':Sequelize[_0xdeff('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0xdeff('0x1')]},'password':{'type':Sequelize[_0xdeff('0x1')]},'port':{'type':Sequelize[_0xdeff('0x3')]},'tls':{'type':Sequelize[_0xdeff('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xdeff('0x1')],'defaultValue':_0xdeff('0x4')},'connTimeout':{'type':Sequelize[_0xdeff('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xdeff('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xdeff('0x1')]}};
\ No newline at end of file
index 7862441..9baea36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd2a=['exports','define','MailServerIn','mail_servers_in','lodash','moment','../../config/environment','./mailServerIn.attributes'];(function(_0x284256,_0x521e47){var _0x280df5=function(_0x441ed5){while(--_0x441ed5){_0x284256['push'](_0x284256['shift']());}};_0x280df5(++_0x521e47);}(_0xbd2a,0x7c));var _0xabd2=function(_0x55e101,_0x11d2c2){_0x55e101=_0x55e101-0x0;var _0x1f4e27=_0xbd2a[_0x55e101];return _0x1f4e27;};'use strict';var _=require(_0xabd2('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xabd2('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xabd2('0x2'));var attributes=require(_0xabd2('0x3'));module[_0xabd2('0x4')]=function(_0x532c6e,_0x1d3cb7){return _0x532c6e[_0xabd2('0x5')](_0xabd2('0x6'),attributes,{'tableName':_0xabd2('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x42dc=['define','mail_servers_in','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports'];(function(_0xdba102,_0x415b5f){var _0x5a0586=function(_0x535be){while(--_0x535be){_0xdba102['push'](_0xdba102['shift']());}};_0x5a0586(++_0x415b5f);}(_0x42dc,0x17c));var _0xc42d=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x42dc[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xc42d('0x0'));var util=require(_0xc42d('0x1'));var logger=require(_0xc42d('0x2'))(_0xc42d('0x3'));var moment=require(_0xc42d('0x4'));var BPromise=require(_0xc42d('0x5'));var rp=require(_0xc42d('0x6'));var fs=require('fs');var path=require(_0xc42d('0x7'));var rimraf=require(_0xc42d('0x8'));var config=require(_0xc42d('0x9'));var attributes=require(_0xc42d('0xa'));module[_0xc42d('0xb')]=function(_0x4fb9bb,_0x2a8ea0){return _0x4fb9bb[_0xc42d('0xc')]('MailServerIn',attributes,{'tableName':_0xc42d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b047f8b..77edefa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9532=['model','map','then','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','limit','include'];(function(_0x2dd628,_0x3c22e4){var _0x2e138c=function(_0x12c4d){while(--_0x12c4d){_0x2dd628['push'](_0x2dd628['shift']());}};_0x2e138c(++_0x3c22e4);}(_0x9532,0x8c));var _0x2953=function(_0xf25177,_0x31c860){_0xf25177=_0xf25177-0x0;var _0x5525e1=_0x9532[_0xf25177];return _0x5525e1;};'use strict';var _=require(_0x2953('0x0'));var util=require(_0x2953('0x1'));var moment=require(_0x2953('0x2'));var BPromise=require(_0x2953('0x3'));var rs=require(_0x2953('0x4'));var fs=require('fs');var Redis=require(_0x2953('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2953('0x6'));var logger=require(_0x2953('0x7'))('rpc');var config=require(_0x2953('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2953('0x9')][_0x2953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b2aea,_0x53566f,_0x21a76a){return new BPromise(function(_0x5cbdaa,_0x49f180){return client[_0x2953('0xb')](_0x5b2aea,_0x21a76a)['then'](function(_0xc5c60f){logger[_0x2953('0xc')](_0x2953('0xd'),_0x53566f,_0x2953('0xe'));logger['debug'](_0x2953('0xf'),_0x53566f,_0x2953('0xe'),JSON[_0x2953('0x10')](_0xc5c60f));if(_0xc5c60f[_0x2953('0x11')]){if(_0xc5c60f[_0x2953('0x11')][_0x2953('0x12')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x53566f,_0xc5c60f[_0x2953('0x11')][_0x2953('0x13')]);return _0x49f180(_0xc5c60f['error'][_0x2953('0x13')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x53566f,_0xc5c60f['error']['message']);return _0x5cbdaa(_0xc5c60f[_0x2953('0x11')][_0x2953('0x13')]);}else{logger[_0x2953('0xc')](_0x2953('0xd'),_0x53566f,_0x2953('0xe'));_0x5cbdaa(_0xc5c60f['result'][_0x2953('0x13')]);}})[_0x2953('0x14')](function(_0x341e73){logger[_0x2953('0x11')](_0x2953('0xd'),_0x53566f,_0x341e73);_0x49f180(_0x341e73);});});}exports[_0x2953('0x15')]=function(_0x359e81){var _0x4253e0=this;return new Promise(function(_0x52e292,_0x2b9c97){return db[_0x2953('0x16')][_0x2953('0x17')]({'raw':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x19')]===undefined?!![]:![]:!![],'where':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x1a')]||null:null,'attributes':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x1b')]||null:null,'limit':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x1c')]||null:null,'include':_0x359e81['options']?_0x359e81[_0x2953('0x18')][_0x2953('0x1d')]?_['map'](_0x359e81[_0x2953('0x18')][_0x2953('0x1d')],function(_0x236694){return{'model':db[_0x236694[_0x2953('0x1e')]],'as':_0x236694['as'],'attributes':_0x236694[_0x2953('0x1b')],'include':_0x236694[_0x2953('0x1d')]?_[_0x2953('0x1f')](_0x236694[_0x2953('0x1d')],function(_0x3a7ae5){return{'model':db[_0x3a7ae5[_0x2953('0x1e')]],'as':_0x3a7ae5['as'],'attributes':_0x3a7ae5[_0x2953('0x1b')],'include':_0x3a7ae5['include']?_[_0x2953('0x1f')](_0x3a7ae5['include'],function(_0x21e221){return{'model':db[_0x21e221[_0x2953('0x1e')]],'as':_0x21e221['as'],'attributes':_0x21e221[_0x2953('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2953('0x20')](function(_0x5100c3){logger['info'](_0x2953('0x15'),_0x359e81);logger[_0x2953('0x21')](_0x2953('0x15'),_0x359e81,JSON[_0x2953('0x10')](_0x5100c3));_0x52e292(_0x5100c3);})[_0x2953('0x14')](function(_0xbbcead){logger[_0x2953('0x11')]('GetMailServerIn',_0xbbcead['message'],_0x359e81);_0x2b9c97(_0x4253e0['error'](0x1f4,_0xbbcead[_0x2953('0x13')]));});});};
\ No newline at end of file
+var _0xb133=['rpc','../../config/environment','jayson/promise','client','http','request','info','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailServerIn,\x20%s,\x20%s','message','result','catch','GetMailServerIn','findAll','options','raw','where','attributes','limit','map','include','model','then','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5956d8,_0x1482aa){var _0xfd0531=function(_0x46f4fb){while(--_0x46f4fb){_0x5956d8['push'](_0x5956d8['shift']());}};_0xfd0531(++_0x1482aa);}(_0xb133,0x134));var _0x3b13=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xb133[_0x1b6186];return _0x186121;};'use strict';var _=require(_0x3b13('0x0'));var util=require(_0x3b13('0x1'));var moment=require('moment');var BPromise=require(_0x3b13('0x2'));var rs=require(_0x3b13('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3b13('0x4'))['db'];var utils=require(_0x3b13('0x5'));var logger=require(_0x3b13('0x6'))(_0x3b13('0x7'));var config=require(_0x3b13('0x8'));var jayson=require(_0x3b13('0x9'));var client=jayson[_0x3b13('0xa')][_0x3b13('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f5dde,_0x5d9b5d,_0x57f66e){return new BPromise(function(_0x1999b0,_0x4bcf24){return client[_0x3b13('0xc')](_0x1f5dde,_0x57f66e)['then'](function(_0x4203d2){logger[_0x3b13('0xd')]('MailServerIn,\x20%s,\x20%s',_0x5d9b5d,'request\x20sent');logger[_0x3b13('0xe')](_0x3b13('0xf'),_0x5d9b5d,_0x3b13('0x10'),JSON[_0x3b13('0x11')](_0x4203d2));if(_0x4203d2[_0x3b13('0x12')]){if(_0x4203d2[_0x3b13('0x12')][_0x3b13('0x13')]===0x1f4){logger['error'](_0x3b13('0x14'),_0x5d9b5d,_0x4203d2[_0x3b13('0x12')]['message']);return _0x4bcf24(_0x4203d2[_0x3b13('0x12')][_0x3b13('0x15')]);}logger['error'](_0x3b13('0x14'),_0x5d9b5d,_0x4203d2['error'][_0x3b13('0x15')]);return _0x1999b0(_0x4203d2[_0x3b13('0x12')][_0x3b13('0x15')]);}else{logger['info']('MailServerIn,\x20%s,\x20%s',_0x5d9b5d,_0x3b13('0x10'));_0x1999b0(_0x4203d2[_0x3b13('0x16')]['message']);}})[_0x3b13('0x17')](function(_0x2ca8f0){logger[_0x3b13('0x12')](_0x3b13('0x14'),_0x5d9b5d,_0x2ca8f0);_0x4bcf24(_0x2ca8f0);});});}exports[_0x3b13('0x18')]=function(_0x2d744b){var _0x3bd4b7=this;return new Promise(function(_0x2305fe,_0x186920){return db['MailServerIn'][_0x3b13('0x19')]({'raw':_0x2d744b[_0x3b13('0x1a')]?_0x2d744b[_0x3b13('0x1a')][_0x3b13('0x1b')]===undefined?!![]:![]:!![],'where':_0x2d744b[_0x3b13('0x1a')]?_0x2d744b[_0x3b13('0x1a')][_0x3b13('0x1c')]||null:null,'attributes':_0x2d744b[_0x3b13('0x1a')]?_0x2d744b[_0x3b13('0x1a')][_0x3b13('0x1d')]||null:null,'limit':_0x2d744b[_0x3b13('0x1a')]?_0x2d744b[_0x3b13('0x1a')][_0x3b13('0x1e')]||null:null,'include':_0x2d744b[_0x3b13('0x1a')]?_0x2d744b[_0x3b13('0x1a')]['include']?_[_0x3b13('0x1f')](_0x2d744b[_0x3b13('0x1a')]['include'],function(_0x2ffc3a){return{'model':db[_0x2ffc3a['model']],'as':_0x2ffc3a['as'],'attributes':_0x2ffc3a[_0x3b13('0x1d')],'include':_0x2ffc3a[_0x3b13('0x20')]?_[_0x3b13('0x1f')](_0x2ffc3a[_0x3b13('0x20')],function(_0x1ce4e6){return{'model':db[_0x1ce4e6[_0x3b13('0x21')]],'as':_0x1ce4e6['as'],'attributes':_0x1ce4e6['attributes'],'include':_0x1ce4e6[_0x3b13('0x20')]?_[_0x3b13('0x1f')](_0x1ce4e6['include'],function(_0x5a5182){return{'model':db[_0x5a5182[_0x3b13('0x21')]],'as':_0x5a5182['as'],'attributes':_0x5a5182['attributes']};}):[]};}):[]};}):[]:[]})[_0x3b13('0x22')](function(_0x215c83){logger[_0x3b13('0xd')](_0x3b13('0x18'),_0x2d744b);logger[_0x3b13('0xe')](_0x3b13('0x18'),_0x2d744b,JSON[_0x3b13('0x11')](_0x215c83));_0x2305fe(_0x215c83);})[_0x3b13('0x17')](function(_0xc932ca){logger[_0x3b13('0x12')](_0x3b13('0x18'),_0xc932ca[_0x3b13('0x15')],_0x2d744b);_0x186920(_0x3bd4b7['error'](0x1f4,_0xc932ca[_0x3b13('0x15')]));});});};
\ No newline at end of file
index 40c1588..b6b3ccc 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(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x7a54,0x106));var _0x47a5=function(_0x136d9d,_0x52d270){_0x136d9d=_0x136d9d-0x0;var _0x1040c9=_0x7a54[_0x136d9d];return _0x1040c9;};'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(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x7a54,0x106));var _0x47a5=function(_0x412030,_0x3326a6){_0x412030=_0x412030-0x0;var _0x103d9d=_0x7a54[_0x412030];return _0x103d9d;};'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 7cfc4ff..eae0911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6403=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x53924b,_0x131f1d){var _0x5d33f8=function(_0x53b662){while(--_0x53b662){_0x53924b['push'](_0x53924b['shift']());}};_0x5d33f8(++_0x131f1d);}(_0x6403,0xf0));var _0x3640=function(_0x8aefa8,_0x496a23){_0x8aefa8=_0x8aefa8-0x0;var _0x1ba137=_0x6403[_0x8aefa8];return _0x1ba137;};'use strict';var Sequelize=require('sequelize');module[_0x3640('0x0')]={'description':{'type':Sequelize[_0x3640('0x1')]},'host':{'type':Sequelize[_0x3640('0x1')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x3640('0x1')]},'port':{'type':Sequelize[_0x3640('0x2')]},'secure':{'type':Sequelize[_0x3640('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x3640('0x1')]},'authentication':{'type':Sequelize[_0x3640('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x030a=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0xb03c3,_0x46c612){var _0x21501f=function(_0x40fbe4){while(--_0x40fbe4){_0xb03c3['push'](_0xb03c3['shift']());}};_0x21501f(++_0x46c612);}(_0x030a,0xdb));var _0xa030=function(_0x323d87,_0x4ef3f9){_0x323d87=_0x323d87-0x0;var _0x5e8f74=_0x030a[_0x323d87];return _0x5e8f74;};'use strict';var Sequelize=require(_0xa030('0x0'));module[_0xa030('0x1')]={'description':{'type':Sequelize[_0xa030('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0xa030('0x2')]},'pass':{'type':Sequelize[_0xa030('0x2')]},'port':{'type':Sequelize[_0xa030('0x3')]},'secure':{'type':Sequelize[_0xa030('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xa030('0x2')]},'authentication':{'type':Sequelize[_0xa030('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index 4aa8979..d937e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29ea=['MailServerOut','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','length','nolimit','order','sort','where','filter','merge','VIRTUAL','then','includeAll','catch','params','fields','options','find','create','update','body','rimraf','zip-dir','fast-json-patch','request-promise','util','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','reject','save','destroy','name','index','map'];(function(_0x4bb2b9,_0x459c78){var _0x40e2a2=function(_0x19a26c){while(--_0x19a26c){_0x4bb2b9['push'](_0x4bb2b9['shift']());}};_0x40e2a2(++_0x459c78);}(_0x29ea,0x162));var _0xa29e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x29ea[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa29e('0x0'));var zipdir=require(_0xa29e('0x1'));var jsonpatch=require(_0xa29e('0x2'));var rp=require(_0xa29e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa29e('0x4'));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(_0xa29e('0x5'));var _=require(_0xa29e('0x6'));var squel=require('squel');var crypto=require(_0xa29e('0x7'));var jsforce=require(_0xa29e('0x8'));var deskjs=require(_0xa29e('0x9'));var toCsv=require('to-csv');var querystring=require(_0xa29e('0xa'));var Papa=require(_0xa29e('0xb'));var Redis=require(_0xa29e('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xa29e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa29e('0xe'))(_0xa29e('0xf'));var utils=require(_0xa29e('0x10'));var config=require(_0xa29e('0x11'));var licenseUtil=require(_0xa29e('0x12'));var db=require(_0xa29e('0x13'))['db'];function respondWithStatusCode(_0x4f79e2,_0x1f6b5d){_0x1f6b5d=_0x1f6b5d||0xcc;return function(_0x440578){if(_0x440578){return _0x4f79e2[_0xa29e('0x14')](_0x1f6b5d);}return _0x4f79e2[_0xa29e('0x15')](_0x1f6b5d)[_0xa29e('0x16')]();};}function respondWithResult(_0x338127,_0x386dd0){_0x386dd0=_0x386dd0||0xc8;return function(_0x191778){if(_0x191778){return _0x338127['status'](_0x386dd0)['json'](_0x191778);}};}function respondWithFilteredResult(_0x40d27f,_0x51c264){return function(_0x4dd0d2){if(_0x4dd0d2){var _0x1cda4c=typeof _0x51c264['offset']===_0xa29e('0x17')&&typeof _0x51c264[_0xa29e('0x18')]===_0xa29e('0x17');var _0x21c4c5=_0x4dd0d2[_0xa29e('0x19')];var _0x432075=_0x1cda4c?0x0:_0x51c264[_0xa29e('0x1a')];var _0x2cbf13=_0x1cda4c?_0x4dd0d2[_0xa29e('0x19')]:_0x51c264[_0xa29e('0x1a')]+_0x51c264['limit'];var _0x23456d;if(_0x2cbf13>=_0x21c4c5){_0x2cbf13=_0x21c4c5;_0x23456d=0xc8;}else{_0x23456d=0xce;}_0x40d27f[_0xa29e('0x15')](_0x23456d);return _0x40d27f[_0xa29e('0x1b')]('Content-Range',_0x432075+'-'+_0x2cbf13+'/'+_0x21c4c5)[_0xa29e('0x1c')](_0x4dd0d2);}return null;};}function patchUpdates(_0x1b22fb){return function(_0x3ec88f){try{jsonpatch[_0xa29e('0x1d')](_0x3ec88f,_0x1b22fb,!![]);}catch(_0x112c15){return BPromise[_0xa29e('0x1e')](_0x112c15);}return _0x3ec88f[_0xa29e('0x1f')]();};}function saveUpdates(_0x235bea,_0x46305d){return function(_0x4c7102){if(_0x4c7102){return _0x4c7102['update'](_0x235bea)['then'](function(_0x3ca541){return _0x3ca541;});}return null;};}function removeEntity(_0x533647,_0xf375ba){return function(_0xe98623){if(_0xe98623){return _0xe98623[_0xa29e('0x20')]()['then'](function(){_0x533647[_0xa29e('0x15')](0xcc)[_0xa29e('0x16')]();});}};}function handleEntityNotFound(_0x4d7d81,_0xca9f39){return function(_0x53c6b1){if(!_0x53c6b1){_0x4d7d81[_0xa29e('0x14')](0x194);}return _0x53c6b1;};}function handleError(_0x4b7987,_0x3c7675){_0x3c7675=_0x3c7675||0x1f4;return function(_0x386514){logger['error'](_0x386514['stack']);if(_0x386514[_0xa29e('0x21')]){delete _0x386514['name'];}_0x4b7987[_0xa29e('0x15')](_0x3c7675)['send'](_0x386514);};}exports[_0xa29e('0x22')]=function(_0x3d49f9,_0x53e7a6){var _0xdd2083={},_0x1b25c1={},_0x9abec0={'count':0x0,'rows':[]};var _0x5f2ee7=_[_0xa29e('0x23')](db[_0xa29e('0x24')][_0xa29e('0x25')],function(_0x19fbc7){return{'name':_0x19fbc7[_0xa29e('0x26')],'type':_0x19fbc7[_0xa29e('0x27')][_0xa29e('0x28')]};});_0x1b25c1['model']=_[_0xa29e('0x23')](_0x5f2ee7,'name');_0x1b25c1[_0xa29e('0x29')]=_[_0xa29e('0x2a')](_0x3d49f9[_0xa29e('0x29')]);_0x1b25c1[_0xa29e('0x2b')]=_[_0xa29e('0x2c')](_0x1b25c1['model'],_0x1b25c1['query']);_0xdd2083[_0xa29e('0x2d')]=_['intersection'](_0x1b25c1[_0xa29e('0x2e')],qs['fields'](_0x3d49f9['query']['fields']));_0xdd2083[_0xa29e('0x2d')]=_0xdd2083[_0xa29e('0x2d')][_0xa29e('0x2f')]?_0xdd2083[_0xa29e('0x2d')]:_0x1b25c1[_0xa29e('0x2e')];if(!_0x3d49f9[_0xa29e('0x29')]['hasOwnProperty'](_0xa29e('0x30'))){_0xdd2083[_0xa29e('0x18')]=qs['limit'](_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x18')]);_0xdd2083[_0xa29e('0x1a')]=qs['offset'](_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x1a')]);}_0xdd2083[_0xa29e('0x31')]=qs[_0xa29e('0x32')](_0x3d49f9[_0xa29e('0x29')]['sort']);_0xdd2083[_0xa29e('0x33')]=qs[_0xa29e('0x2b')](_['pick'](_0x3d49f9[_0xa29e('0x29')],_0x1b25c1[_0xa29e('0x2b')]),_0x5f2ee7);if(_0x3d49f9['query'][_0xa29e('0x34')]){_0xdd2083[_0xa29e('0x33')]=_[_0xa29e('0x35')](_0xdd2083[_0xa29e('0x33')],{'$or':_['map'](_0x5f2ee7,function(_0x3902e8){if(_0x3902e8[_0xa29e('0x27')]!==_0xa29e('0x36')){var _0x3e603d={};_0x3e603d[_0x3902e8[_0xa29e('0x21')]]={'$like':'%'+_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x34')]+'%'};return _0x3e603d;}})});}_0xdd2083=_['merge']({},_0xdd2083,_0x3d49f9['options']);var _0x1ae87d={'where':_0xdd2083[_0xa29e('0x33')]};return db[_0xa29e('0x24')][_0xa29e('0x19')](_0x1ae87d)[_0xa29e('0x37')](function(_0xdde802){_0x9abec0[_0xa29e('0x19')]=_0xdde802;if(_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x38')]){_0xdd2083['include']=[{'all':!![]}];}return db[_0xa29e('0x24')]['findAll'](_0xdd2083);})['then'](function(_0x1b3fa9){_0x9abec0['rows']=_0x1b3fa9;return _0x9abec0;})[_0xa29e('0x37')](respondWithFilteredResult(_0x53e7a6,_0xdd2083))[_0xa29e('0x39')](handleError(_0x53e7a6,null));};exports['show']=function(_0x2b1a82,_0x1a05ce){var _0x72b863={'raw':!![],'where':{'id':_0x2b1a82[_0xa29e('0x3a')]['id']}},_0x42e47b={};_0x42e47b[_0xa29e('0x2e')]=_[_0xa29e('0x2a')](db[_0xa29e('0x24')]['rawAttributes']);_0x42e47b[_0xa29e('0x29')]=_[_0xa29e('0x2a')](_0x2b1a82[_0xa29e('0x29')]);_0x42e47b[_0xa29e('0x2b')]=_['intersection'](_0x42e47b['model'],_0x42e47b[_0xa29e('0x29')]);_0x72b863['attributes']=_['intersection'](_0x42e47b[_0xa29e('0x2e')],qs[_0xa29e('0x3b')](_0x2b1a82[_0xa29e('0x29')][_0xa29e('0x3b')]));_0x72b863[_0xa29e('0x2d')]=_0x72b863[_0xa29e('0x2d')][_0xa29e('0x2f')]?_0x72b863[_0xa29e('0x2d')]:_0x42e47b[_0xa29e('0x2e')];if(_0x2b1a82[_0xa29e('0x29')][_0xa29e('0x38')]){_0x72b863['include']=[{'all':!![]}];}_0x72b863=_[_0xa29e('0x35')]({},_0x72b863,_0x2b1a82[_0xa29e('0x3c')]);return db[_0xa29e('0x24')][_0xa29e('0x3d')](_0x72b863)['then'](handleEntityNotFound(_0x1a05ce,null))[_0xa29e('0x37')](respondWithResult(_0x1a05ce,null))['catch'](handleError(_0x1a05ce,null));};exports[_0xa29e('0x3e')]=function(_0x29cf2f,_0x51540a){return db['MailServerOut'][_0xa29e('0x3e')](_0x29cf2f['body'],{})[_0xa29e('0x37')](respondWithResult(_0x51540a,0xc9))['catch'](handleError(_0x51540a,null));};exports[_0xa29e('0x3f')]=function(_0x39de9d,_0x277142){if(_0x39de9d['body']['id']){delete _0x39de9d[_0xa29e('0x40')]['id'];}return db[_0xa29e('0x24')]['find']({'where':{'id':_0x39de9d[_0xa29e('0x3a')]['id']}})[_0xa29e('0x37')](handleEntityNotFound(_0x277142,null))['then'](saveUpdates(_0x39de9d[_0xa29e('0x40')],null))['then'](respondWithResult(_0x277142,null))[_0xa29e('0x39')](handleError(_0x277142,null));};exports[_0xa29e('0x20')]=function(_0x49f992,_0x1bd463){return db[_0xa29e('0x24')][_0xa29e('0x3d')]({'where':{'id':_0x49f992[_0xa29e('0x3a')]['id']}})[_0xa29e('0x37')](handleEntityNotFound(_0x1bd463,null))['then'](removeEntity(_0x1bd463,null))[_0xa29e('0x39')](handleError(_0x1bd463,null));};
\ No newline at end of file
+var _0xa05d=['params','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','map','rawAttributes','type','key','query','keys','intersection','model','fields','attributes','length','nolimit','order','where','filters','filter','merge','VIRTUAL','options','MailServerOut','count','include','findAll','rows','catch','show','find','create','body'];(function(_0x1c6238,_0x1fe065){var _0x28b1e0=function(_0x37e527){while(--_0x37e527){_0x1c6238['push'](_0x1c6238['shift']());}};_0x28b1e0(++_0x1fe065);}(_0xa05d,0x16e));var _0xda05=function(_0x5b89a0,_0x315a2a){_0x5b89a0=_0x5b89a0-0x0;var _0x44d81a=_0xa05d[_0x5b89a0];return _0x44d81a;};'use strict';var emlformat=require(_0xda05('0x0'));var rimraf=require(_0xda05('0x1'));var zipdir=require(_0xda05('0x2'));var jsonpatch=require(_0xda05('0x3'));var rp=require('request-promise');var moment=require(_0xda05('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xda05('0x5'));var util=require(_0xda05('0x6'));var path=require('path');var sox=require(_0xda05('0x7'));var csv=require(_0xda05('0x8'));var ejs=require(_0xda05('0x9'));var fs=require('fs');var fs_extra=require(_0xda05('0xa'));var _=require(_0xda05('0xb'));var squel=require('squel');var crypto=require(_0xda05('0xc'));var jsforce=require(_0xda05('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xda05('0x8'));var querystring=require(_0xda05('0xe'));var Papa=require(_0xda05('0xf'));var Redis=require('ioredis');var authService=require(_0xda05('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xda05('0x11'));var hardwareService=require(_0xda05('0x12'));var logger=require(_0xda05('0x13'))(_0xda05('0x14'));var utils=require(_0xda05('0x15'));var config=require(_0xda05('0x16'));var licenseUtil=require(_0xda05('0x17'));var db=require(_0xda05('0x18'))['db'];function respondWithStatusCode(_0x43422f,_0x5c3b33){_0x5c3b33=_0x5c3b33||0xcc;return function(_0x44adcf){if(_0x44adcf){return _0x43422f['sendStatus'](_0x5c3b33);}return _0x43422f[_0xda05('0x19')](_0x5c3b33)[_0xda05('0x1a')]();};}function respondWithResult(_0x3f102b,_0x819cfe){_0x819cfe=_0x819cfe||0xc8;return function(_0x34b593){if(_0x34b593){return _0x3f102b[_0xda05('0x19')](_0x819cfe)[_0xda05('0x1b')](_0x34b593);}};}function respondWithFilteredResult(_0x5001f7,_0x3e5688){return function(_0x11e790){if(_0x11e790){var _0xd2d403=typeof _0x3e5688[_0xda05('0x1c')]===_0xda05('0x1d')&&typeof _0x3e5688[_0xda05('0x1e')]==='undefined';var _0x3061cc=_0x11e790['count'];var _0x1ba201=_0xd2d403?0x0:_0x3e5688[_0xda05('0x1c')];var _0x23d46f=_0xd2d403?_0x11e790['count']:_0x3e5688[_0xda05('0x1c')]+_0x3e5688[_0xda05('0x1e')];var _0x2b907e;if(_0x23d46f>=_0x3061cc){_0x23d46f=_0x3061cc;_0x2b907e=0xc8;}else{_0x2b907e=0xce;}_0x5001f7['status'](_0x2b907e);return _0x5001f7[_0xda05('0x1f')](_0xda05('0x20'),_0x1ba201+'-'+_0x23d46f+'/'+_0x3061cc)[_0xda05('0x1b')](_0x11e790);}return null;};}function patchUpdates(_0x587da4){return function(_0x4af12c){try{jsonpatch[_0xda05('0x21')](_0x4af12c,_0x587da4,!![]);}catch(_0x3b4968){return BPromise[_0xda05('0x22')](_0x3b4968);}return _0x4af12c[_0xda05('0x23')]();};}function saveUpdates(_0x4a5d81,_0x2828ae){return function(_0x1ab90a){if(_0x1ab90a){return _0x1ab90a[_0xda05('0x24')](_0x4a5d81)['then'](function(_0x11941b){return _0x11941b;});}return null;};}function removeEntity(_0x4213f9,_0xb5091){return function(_0x2fee48){if(_0x2fee48){return _0x2fee48[_0xda05('0x25')]()[_0xda05('0x26')](function(){_0x4213f9[_0xda05('0x19')](0xcc)[_0xda05('0x1a')]();});}};}function handleEntityNotFound(_0x25bf3c,_0x2048af){return function(_0x65e12){if(!_0x65e12){_0x25bf3c[_0xda05('0x27')](0x194);}return _0x65e12;};}function handleError(_0xa61d70,_0xceee){_0xceee=_0xceee||0x1f4;return function(_0x335890){logger[_0xda05('0x28')](_0x335890[_0xda05('0x29')]);if(_0x335890[_0xda05('0x2a')]){delete _0x335890[_0xda05('0x2a')];}_0xa61d70[_0xda05('0x19')](_0xceee)['send'](_0x335890);};}exports['index']=function(_0x19e8ec,_0x4151dd){var _0x5d8865={},_0x59efbd={},_0x25a6f2={'count':0x0,'rows':[]};var _0x2e2098=_[_0xda05('0x2b')](db['MailServerOut'][_0xda05('0x2c')],function(_0x5735a0){return{'name':_0x5735a0['fieldName'],'type':_0x5735a0[_0xda05('0x2d')][_0xda05('0x2e')]};});_0x59efbd['model']=_[_0xda05('0x2b')](_0x2e2098,'name');_0x59efbd[_0xda05('0x2f')]=_[_0xda05('0x30')](_0x19e8ec['query']);_0x59efbd['filters']=_[_0xda05('0x31')](_0x59efbd[_0xda05('0x32')],_0x59efbd[_0xda05('0x2f')]);_0x5d8865['attributes']=_[_0xda05('0x31')](_0x59efbd[_0xda05('0x32')],qs[_0xda05('0x33')](_0x19e8ec[_0xda05('0x2f')][_0xda05('0x33')]));_0x5d8865[_0xda05('0x34')]=_0x5d8865['attributes'][_0xda05('0x35')]?_0x5d8865[_0xda05('0x34')]:_0x59efbd[_0xda05('0x32')];if(!_0x19e8ec[_0xda05('0x2f')]['hasOwnProperty'](_0xda05('0x36'))){_0x5d8865[_0xda05('0x1e')]=qs['limit'](_0x19e8ec[_0xda05('0x2f')][_0xda05('0x1e')]);_0x5d8865[_0xda05('0x1c')]=qs[_0xda05('0x1c')](_0x19e8ec[_0xda05('0x2f')][_0xda05('0x1c')]);}_0x5d8865[_0xda05('0x37')]=qs['sort'](_0x19e8ec[_0xda05('0x2f')]['sort']);_0x5d8865[_0xda05('0x38')]=qs['filters'](_['pick'](_0x19e8ec[_0xda05('0x2f')],_0x59efbd[_0xda05('0x39')]),_0x2e2098);if(_0x19e8ec['query'][_0xda05('0x3a')]){_0x5d8865[_0xda05('0x38')]=_[_0xda05('0x3b')](_0x5d8865['where'],{'$or':_[_0xda05('0x2b')](_0x2e2098,function(_0x7da66b){if(_0x7da66b[_0xda05('0x2d')]!==_0xda05('0x3c')){var _0x30b738={};_0x30b738[_0x7da66b[_0xda05('0x2a')]]={'$like':'%'+_0x19e8ec[_0xda05('0x2f')][_0xda05('0x3a')]+'%'};return _0x30b738;}})});}_0x5d8865=_['merge']({},_0x5d8865,_0x19e8ec[_0xda05('0x3d')]);var _0x535ebb={'where':_0x5d8865[_0xda05('0x38')]};return db[_0xda05('0x3e')][_0xda05('0x3f')](_0x535ebb)[_0xda05('0x26')](function(_0x34cedc){_0x25a6f2['count']=_0x34cedc;if(_0x19e8ec['query']['includeAll']){_0x5d8865[_0xda05('0x40')]=[{'all':!![]}];}return db['MailServerOut'][_0xda05('0x41')](_0x5d8865);})[_0xda05('0x26')](function(_0xe2c7eb){_0x25a6f2[_0xda05('0x42')]=_0xe2c7eb;return _0x25a6f2;})[_0xda05('0x26')](respondWithFilteredResult(_0x4151dd,_0x5d8865))[_0xda05('0x43')](handleError(_0x4151dd,null));};exports[_0xda05('0x44')]=function(_0x488ad8,_0x5a6b65){var _0x4c0778={'raw':!![],'where':{'id':_0x488ad8['params']['id']}},_0x13052e={};_0x13052e[_0xda05('0x32')]=_['keys'](db[_0xda05('0x3e')][_0xda05('0x2c')]);_0x13052e[_0xda05('0x2f')]=_[_0xda05('0x30')](_0x488ad8[_0xda05('0x2f')]);_0x13052e[_0xda05('0x39')]=_[_0xda05('0x31')](_0x13052e[_0xda05('0x32')],_0x13052e[_0xda05('0x2f')]);_0x4c0778['attributes']=_[_0xda05('0x31')](_0x13052e[_0xda05('0x32')],qs[_0xda05('0x33')](_0x488ad8['query']['fields']));_0x4c0778['attributes']=_0x4c0778[_0xda05('0x34')]['length']?_0x4c0778[_0xda05('0x34')]:_0x13052e[_0xda05('0x32')];if(_0x488ad8['query']['includeAll']){_0x4c0778[_0xda05('0x40')]=[{'all':!![]}];}_0x4c0778=_[_0xda05('0x3b')]({},_0x4c0778,_0x488ad8['options']);return db[_0xda05('0x3e')][_0xda05('0x45')](_0x4c0778)['then'](handleEntityNotFound(_0x5a6b65,null))['then'](respondWithResult(_0x5a6b65,null))[_0xda05('0x43')](handleError(_0x5a6b65,null));};exports[_0xda05('0x46')]=function(_0x52172c,_0x14fec2){return db[_0xda05('0x3e')][_0xda05('0x46')](_0x52172c[_0xda05('0x47')],{})[_0xda05('0x26')](respondWithResult(_0x14fec2,0xc9))[_0xda05('0x43')](handleError(_0x14fec2,null));};exports[_0xda05('0x24')]=function(_0x11d7f7,_0x336d4a){if(_0x11d7f7[_0xda05('0x47')]['id']){delete _0x11d7f7[_0xda05('0x47')]['id'];}return db['MailServerOut'][_0xda05('0x45')]({'where':{'id':_0x11d7f7['params']['id']}})[_0xda05('0x26')](handleEntityNotFound(_0x336d4a,null))[_0xda05('0x26')](saveUpdates(_0x11d7f7['body'],null))['then'](respondWithResult(_0x336d4a,null))['catch'](handleError(_0x336d4a,null));};exports['destroy']=function(_0x478afd,_0x23566f){return db[_0xda05('0x3e')]['find']({'where':{'id':_0x478afd[_0xda05('0x48')]['id']}})[_0xda05('0x26')](handleEntityNotFound(_0x23566f,null))['then'](removeEntity(_0x23566f,null))[_0xda05('0x43')](handleError(_0x23566f,null));};
\ No newline at end of file
index ba35c0e..6c199ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9084=['util','../../config/logger','api','path','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash'];(function(_0x1406ae,_0x292395){var _0x23a076=function(_0x5e147a){while(--_0x5e147a){_0x1406ae['push'](_0x1406ae['shift']());}};_0x23a076(++_0x292395);}(_0x9084,0xba));var _0x4908=function(_0x409111,_0x51b1c4){_0x409111=_0x409111-0x0;var _0x367bbf=_0x9084[_0x409111];return _0x367bbf;};'use strict';var _=require(_0x4908('0x0'));var util=require(_0x4908('0x1'));var logger=require(_0x4908('0x2'))(_0x4908('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4908('0x4'));var rimraf=require('rimraf');var config=require(_0x4908('0x5'));var attributes=require(_0x4908('0x6'));module[_0x4908('0x7')]=function(_0x1509c6,_0x184ac9){return _0x1509c6[_0x4908('0x8')](_0x4908('0x9'),attributes,{'tableName':_0x4908('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ac9=['MailServerOut','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define'];(function(_0xf10e5e,_0x172096){var _0x1d79a8=function(_0x1f6f9d){while(--_0x1f6f9d){_0xf10e5e['push'](_0xf10e5e['shift']());}};_0x1d79a8(++_0x172096);}(_0x9ac9,0x153));var _0x99ac=function(_0x28448c,_0x5b24bd){_0x28448c=_0x28448c-0x0;var _0x4614fa=_0x9ac9[_0x28448c];return _0x4614fa;};'use strict';var _=require(_0x99ac('0x0'));var util=require(_0x99ac('0x1'));var logger=require(_0x99ac('0x2'))(_0x99ac('0x3'));var moment=require(_0x99ac('0x4'));var BPromise=require(_0x99ac('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99ac('0x6'));var rimraf=require(_0x99ac('0x7'));var config=require(_0x99ac('0x8'));var attributes=require(_0x99ac('0x9'));module[_0x99ac('0xa')]=function(_0x35da81,_0x53530){return _0x35da81[_0x99ac('0xb')](_0x99ac('0xc'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3f18e9..5b4409c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0xf40bc2,_0x3f2311){_0xf40bc2=_0xf40bc2-0x0;var _0x122085=_0x7a54[_0xf40bc2];return _0x122085;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x1976b6,_0x5442d1){var _0x1064bb=function(_0x12135e){while(--_0x12135e){_0x1976b6['push'](_0x1976b6['shift']());}};_0x1064bb(++_0x5442d1);}(_0x5f66,0x1a0));var _0x65f6=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x5f66[_0x36eaaa];return _0x461349;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
index 2de5a5f..7882cf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5083=['./mailSubstatus.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x55eb4f,_0x455b8b){var _0x24aec9=function(_0x4fc0e3){while(--_0x4fc0e3){_0x55eb4f['push'](_0x55eb4f['shift']());}};_0x24aec9(++_0x455b8b);}(_0x5083,0x76));var _0x3508=function(_0x1fcded,_0x4b18e0){_0x1fcded=_0x1fcded-0x0;var _0x3e5f90=_0x5083[_0x1fcded];return _0x3e5f90;};'use strict';var multer=require(_0x3508('0x0'));var util=require(_0x3508('0x1'));var path=require(_0x3508('0x2'));var timeout=require(_0x3508('0x3'));var express=require(_0x3508('0x4'));var router=express['Router']();var fs_extra=require(_0x3508('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3508('0x6'));var config=require(_0x3508('0x7'));var controller=require(_0x3508('0x8'));router[_0x3508('0x9')]('/',auth[_0x3508('0xa')](),controller[_0x3508('0xb')]);router[_0x3508('0x9')](_0x3508('0xc'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x3508('0xd'),auth[_0x3508('0xa')](),controller[_0x3508('0xe')]);router[_0x3508('0xf')]('/',auth[_0x3508('0xa')](),controller[_0x3508('0x10')]);router[_0x3508('0x11')](_0x3508('0xd'),auth['isAuthenticated'](),controller[_0x3508('0x12')]);router[_0x3508('0x13')]('/:id',auth[_0x3508('0xa')](),controller['destroy']);module[_0x3508('0x14')]=router;
\ No newline at end of file
+var _0x302f=['fs-extra','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete','exports','multer','path','connect-timeout','express'];(function(_0x1ae1e1,_0x4a2cbe){var _0x21baca=function(_0x5e8f5a){while(--_0x5e8f5a){_0x1ae1e1['push'](_0x1ae1e1['shift']());}};_0x21baca(++_0x4a2cbe);}(_0x302f,0xe3));var _0xf302=function(_0x3372bf,_0x4d7419){_0x3372bf=_0x3372bf-0x0;var _0x42a970=_0x302f[_0x3372bf];return _0x42a970;};'use strict';var multer=require(_0xf302('0x0'));var util=require('util');var path=require(_0xf302('0x1'));var timeout=require(_0xf302('0x2'));var express=require(_0xf302('0x3'));var router=express['Router']();var fs_extra=require(_0xf302('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf302('0x5'));var config=require(_0xf302('0x6'));var controller=require(_0xf302('0x7'));router[_0xf302('0x8')]('/',auth[_0xf302('0x9')](),controller[_0xf302('0xa')]);router[_0xf302('0x8')](_0xf302('0xb'),auth[_0xf302('0x9')](),controller[_0xf302('0xc')]);router[_0xf302('0x8')]('/:id',auth[_0xf302('0x9')](),controller[_0xf302('0xd')]);router[_0xf302('0xe')]('/',auth[_0xf302('0x9')](),controller[_0xf302('0xf')]);router[_0xf302('0x10')](_0xf302('0x11'),auth[_0xf302('0x9')](),controller[_0xf302('0x12')]);router[_0xf302('0x13')](_0xf302('0x11'),auth[_0xf302('0x9')](),controller['destroy']);module[_0xf302('0x14')]=router;
\ No newline at end of file
index e96caa7..78d6152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25fa=['name','sequelize','STRING'];(function(_0x3e46ce,_0x7f8ed0){var _0x2c86c1=function(_0x338ab2){while(--_0x338ab2){_0x3e46ce['push'](_0x3e46ce['shift']());}};_0x2c86c1(++_0x7f8ed0);}(_0x25fa,0x109));var _0xa25f=function(_0x443981,_0x5ed548){_0x443981=_0x443981-0x0;var _0x27ae0e=_0x25fa[_0x443981];return _0x27ae0e;};'use strict';var Sequelize=require(_0xa25f('0x0'));module['exports']={'name':{'type':Sequelize[_0xa25f('0x1')],'unique':_0xa25f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8b8e=['sequelize','STRING'];(function(_0x4d99f1,_0x799dec){var _0x3908da=function(_0x3e258b){while(--_0x3e258b){_0x4d99f1['push'](_0x4d99f1['shift']());}};_0x3908da(++_0x799dec);}(_0x8b8e,0x108));var _0xe8b8=function(_0x5ecda3,_0x958008){_0x5ecda3=_0x5ecda3-0x0;var _0x11506b=_0x8b8e[_0x5ecda3];return _0x11506b;};'use strict';var Sequelize=require(_0xe8b8('0x0'));module['exports']={'name':{'type':Sequelize[_0xe8b8('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe8b8('0x1')]}};
\ No newline at end of file
index 387aea3..8725f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x664b=['update','then','end','error','stack','name','send','index','map','MailSubstatus','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','params','options','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','set','reject'];(function(_0xd02fa3,_0x6b84e3){var _0x38dfd9=function(_0x14b796){while(--_0x14b796){_0xd02fa3['push'](_0xd02fa3['shift']());}};_0x38dfd9(++_0x6b84e3);}(_0x664b,0x101));var _0xb664=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x664b[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xb664('0x0'));var rimraf=require(_0xb664('0x1'));var zipdir=require(_0xb664('0x2'));var jsonpatch=require(_0xb664('0x3'));var rp=require(_0xb664('0x4'));var moment=require(_0xb664('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb664('0x6'));var util=require('util');var path=require('path');var sox=require(_0xb664('0x7'));var csv=require('to-csv');var ejs=require(_0xb664('0x8'));var fs=require('fs');var fs_extra=require(_0xb664('0x9'));var _=require(_0xb664('0xa'));var squel=require(_0xb664('0xb'));var crypto=require(_0xb664('0xc'));var jsforce=require(_0xb664('0xd'));var deskjs=require(_0xb664('0xe'));var toCsv=require(_0xb664('0xf'));var querystring=require(_0xb664('0x10'));var Papa=require('papaparse');var Redis=require(_0xb664('0x11'));var authService=require(_0xb664('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb664('0x13'));var hardwareService=require(_0xb664('0x14'));var logger=require(_0xb664('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb664('0x16'));var db=require(_0xb664('0x17'))['db'];function respondWithStatusCode(_0x5223e8,_0x3ad267){_0x3ad267=_0x3ad267||0xcc;return function(_0x3d5383){if(_0x3d5383){return _0x5223e8[_0xb664('0x18')](_0x3ad267);}return _0x5223e8[_0xb664('0x19')](_0x3ad267)['end']();};}function respondWithResult(_0x3925da,_0xc82c8c){_0xc82c8c=_0xc82c8c||0xc8;return function(_0x59f12e){if(_0x59f12e){return _0x3925da['status'](_0xc82c8c)['json'](_0x59f12e);}};}function respondWithFilteredResult(_0x1e2bbf,_0x51ff35){return function(_0x3ae108){if(_0x3ae108){var _0x2ce52b=typeof _0x51ff35['offset']===_0xb664('0x1a')&&typeof _0x51ff35[_0xb664('0x1b')]===_0xb664('0x1a');var _0x22f415=_0x3ae108[_0xb664('0x1c')];var _0x33fe3d=_0x2ce52b?0x0:_0x51ff35['offset'];var _0x16368b=_0x2ce52b?_0x3ae108[_0xb664('0x1c')]:_0x51ff35['offset']+_0x51ff35['limit'];var _0x47c76b;if(_0x16368b>=_0x22f415){_0x16368b=_0x22f415;_0x47c76b=0xc8;}else{_0x47c76b=0xce;}_0x1e2bbf[_0xb664('0x19')](_0x47c76b);return _0x1e2bbf[_0xb664('0x1d')]('Content-Range',_0x33fe3d+'-'+_0x16368b+'/'+_0x22f415)['json'](_0x3ae108);}return null;};}function patchUpdates(_0x4fb122){return function(_0x1c6eba){try{jsonpatch['apply'](_0x1c6eba,_0x4fb122,!![]);}catch(_0x4466d5){return BPromise[_0xb664('0x1e')](_0x4466d5);}return _0x1c6eba['save']();};}function saveUpdates(_0x3e2825,_0x4941a5){return function(_0xb3586f){if(_0xb3586f){return _0xb3586f[_0xb664('0x1f')](_0x3e2825)[_0xb664('0x20')](function(_0x12e667){return _0x12e667;});}return null;};}function removeEntity(_0x3ffa01,_0x24f728){return function(_0x514850){if(_0x514850){return _0x514850['destroy']()['then'](function(){_0x3ffa01[_0xb664('0x19')](0xcc)[_0xb664('0x21')]();});}};}function handleEntityNotFound(_0x33e915,_0x329fe9){return function(_0x5bf017){if(!_0x5bf017){_0x33e915[_0xb664('0x18')](0x194);}return _0x5bf017;};}function handleError(_0x2dc807,_0x3b6a79){_0x3b6a79=_0x3b6a79||0x1f4;return function(_0x330627){logger[_0xb664('0x22')](_0x330627[_0xb664('0x23')]);if(_0x330627[_0xb664('0x24')]){delete _0x330627[_0xb664('0x24')];}_0x2dc807['status'](_0x3b6a79)[_0xb664('0x25')](_0x330627);};}exports[_0xb664('0x26')]=function(_0x28c0bb,_0x386f8f){var _0x1065be={},_0x4cc677={},_0x5cc385={'count':0x0,'rows':[]};var _0x4ffca2=_[_0xb664('0x27')](db[_0xb664('0x28')][_0xb664('0x29')],function(_0x1e3d3f){return{'name':_0x1e3d3f[_0xb664('0x2a')],'type':_0x1e3d3f[_0xb664('0x2b')]['key']};});_0x4cc677['model']=_[_0xb664('0x27')](_0x4ffca2,'name');_0x4cc677[_0xb664('0x2c')]=_[_0xb664('0x2d')](_0x28c0bb[_0xb664('0x2c')]);_0x4cc677[_0xb664('0x2e')]=_[_0xb664('0x2f')](_0x4cc677[_0xb664('0x30')],_0x4cc677[_0xb664('0x2c')]);_0x1065be['attributes']=_[_0xb664('0x2f')](_0x4cc677[_0xb664('0x30')],qs[_0xb664('0x31')](_0x28c0bb['query'][_0xb664('0x31')]));_0x1065be[_0xb664('0x32')]=_0x1065be['attributes'][_0xb664('0x33')]?_0x1065be[_0xb664('0x32')]:_0x4cc677[_0xb664('0x30')];if(!_0x28c0bb[_0xb664('0x2c')][_0xb664('0x34')](_0xb664('0x35'))){_0x1065be[_0xb664('0x1b')]=qs[_0xb664('0x1b')](_0x28c0bb['query'][_0xb664('0x1b')]);_0x1065be[_0xb664('0x36')]=qs[_0xb664('0x36')](_0x28c0bb[_0xb664('0x2c')][_0xb664('0x36')]);}_0x1065be[_0xb664('0x37')]=qs[_0xb664('0x38')](_0x28c0bb['query'][_0xb664('0x38')]);_0x1065be[_0xb664('0x39')]=qs['filters'](_[_0xb664('0x3a')](_0x28c0bb[_0xb664('0x2c')],_0x4cc677[_0xb664('0x2e')]),_0x4ffca2);if(_0x28c0bb[_0xb664('0x2c')][_0xb664('0x3b')]){_0x1065be['where']=_[_0xb664('0x3c')](_0x1065be[_0xb664('0x39')],{'$or':_[_0xb664('0x27')](_0x4ffca2,function(_0x1b574e){if(_0x1b574e['type']!=='VIRTUAL'){var _0x446ea2={};_0x446ea2[_0x1b574e[_0xb664('0x24')]]={'$like':'%'+_0x28c0bb[_0xb664('0x2c')][_0xb664('0x3b')]+'%'};return _0x446ea2;}})});}_0x1065be=_[_0xb664('0x3c')]({},_0x1065be,_0x28c0bb['options']);var _0x33e54c={'where':_0x1065be[_0xb664('0x39')]};return db[_0xb664('0x28')][_0xb664('0x1c')](_0x33e54c)[_0xb664('0x20')](function(_0x8fd821){_0x5cc385[_0xb664('0x1c')]=_0x8fd821;if(_0x28c0bb[_0xb664('0x2c')]['includeAll']){_0x1065be[_0xb664('0x3d')]=[{'all':!![]}];}return db['MailSubstatus'][_0xb664('0x3e')](_0x1065be);})[_0xb664('0x20')](function(_0x4a5f6e){_0x5cc385[_0xb664('0x3f')]=_0x4a5f6e;return _0x5cc385;})[_0xb664('0x20')](respondWithFilteredResult(_0x386f8f,_0x1065be))[_0xb664('0x40')](handleError(_0x386f8f,null));};exports[_0xb664('0x41')]=function(_0x2c728a,_0x433cfb){var _0x357ed4={'raw':!![],'where':{'id':_0x2c728a[_0xb664('0x42')]['id']}},_0x39aca2={};_0x39aca2['model']=_['keys'](db[_0xb664('0x28')][_0xb664('0x29')]);_0x39aca2[_0xb664('0x2c')]=_[_0xb664('0x2d')](_0x2c728a['query']);_0x39aca2['filters']=_[_0xb664('0x2f')](_0x39aca2[_0xb664('0x30')],_0x39aca2['query']);_0x357ed4[_0xb664('0x32')]=_[_0xb664('0x2f')](_0x39aca2[_0xb664('0x30')],qs[_0xb664('0x31')](_0x2c728a[_0xb664('0x2c')][_0xb664('0x31')]));_0x357ed4[_0xb664('0x32')]=_0x357ed4[_0xb664('0x32')][_0xb664('0x33')]?_0x357ed4[_0xb664('0x32')]:_0x39aca2[_0xb664('0x30')];if(_0x2c728a['query']['includeAll']){_0x357ed4['include']=[{'all':!![]}];}_0x357ed4=_[_0xb664('0x3c')]({},_0x357ed4,_0x2c728a[_0xb664('0x43')]);return db[_0xb664('0x28')][_0xb664('0x44')](_0x357ed4)['then'](handleEntityNotFound(_0x433cfb,null))[_0xb664('0x20')](respondWithResult(_0x433cfb,null))[_0xb664('0x40')](handleError(_0x433cfb,null));};exports[_0xb664('0x45')]=function(_0x160f7e,_0x25a9cb){return db[_0xb664('0x28')][_0xb664('0x45')](_0x160f7e[_0xb664('0x46')],{})[_0xb664('0x20')](respondWithResult(_0x25a9cb,0xc9))['catch'](handleError(_0x25a9cb,null));};exports[_0xb664('0x1f')]=function(_0x25dc2a,_0xd45610){if(_0x25dc2a[_0xb664('0x46')]['id']){delete _0x25dc2a[_0xb664('0x46')]['id'];}return db[_0xb664('0x28')]['find']({'where':{'id':_0x25dc2a[_0xb664('0x42')]['id']}})['then'](handleEntityNotFound(_0xd45610,null))[_0xb664('0x20')](saveUpdates(_0x25dc2a[_0xb664('0x46')],null))['then'](respondWithResult(_0xd45610,null))[_0xb664('0x40')](handleError(_0xd45610,null));};exports[_0xb664('0x47')]=function(_0x7d6972,_0x372b7d){return db['MailSubstatus'][_0xb664('0x44')]({'where':{'id':_0x7d6972[_0xb664('0x42')]['id']}})[_0xb664('0x20')](handleEntityNotFound(_0x372b7d,null))[_0xb664('0x20')](removeEntity(_0x372b7d,null))[_0xb664('0x40')](handleError(_0x372b7d,null));};exports['describe']=function(_0x3625e6,_0x5604c2){return db['MailSubstatus']['describe']()[_0xb664('0x20')](respondWithResult(_0x5604c2,null))['catch'](handleError(_0x5604c2,null));};
\ No newline at end of file
+var _0xf779=['merge','options','MailSubstatus','includeAll','include','findAll','rows','catch','show','params','length','find','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','end','error','stack','index','map','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter'];(function(_0x31a938,_0x4daec6){var _0x1bf341=function(_0x514261){while(--_0x514261){_0x31a938['push'](_0x31a938['shift']());}};_0x1bf341(++_0x4daec6);}(_0xf779,0x1d0));var _0x9f77=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf779[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9f77('0x0'));var jsonpatch=require(_0x9f77('0x1'));var rp=require(_0x9f77('0x2'));var moment=require(_0x9f77('0x3'));var BPromise=require(_0x9f77('0x4'));var Mustache=require(_0x9f77('0x5'));var util=require(_0x9f77('0x6'));var path=require(_0x9f77('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9f77('0x8'));var crypto=require(_0x9f77('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x9f77('0xa'));var toCsv=require('to-csv');var querystring=require(_0x9f77('0xb'));var Papa=require('papaparse');var Redis=require(_0x9f77('0xc'));var authService=require(_0x9f77('0xd'));var qs=require(_0x9f77('0xe'));var as=require(_0x9f77('0xf'));var hardwareService=require(_0x9f77('0x10'));var logger=require(_0x9f77('0x11'))(_0x9f77('0x12'));var utils=require(_0x9f77('0x13'));var config=require(_0x9f77('0x14'));var licenseUtil=require(_0x9f77('0x15'));var db=require(_0x9f77('0x16'))['db'];function respondWithStatusCode(_0x54bb00,_0x259726){_0x259726=_0x259726||0xcc;return function(_0x5901b9){if(_0x5901b9){return _0x54bb00[_0x9f77('0x17')](_0x259726);}return _0x54bb00[_0x9f77('0x18')](_0x259726)['end']();};}function respondWithResult(_0x201b5b,_0x2877c4){_0x2877c4=_0x2877c4||0xc8;return function(_0x3db858){if(_0x3db858){return _0x201b5b['status'](_0x2877c4)[_0x9f77('0x19')](_0x3db858);}};}function respondWithFilteredResult(_0x5d7f9b,_0x4ada01){return function(_0xa4e421){if(_0xa4e421){var _0x583ccf=typeof _0x4ada01[_0x9f77('0x1a')]===_0x9f77('0x1b')&&typeof _0x4ada01[_0x9f77('0x1c')]===_0x9f77('0x1b');var _0x218702=_0xa4e421[_0x9f77('0x1d')];var _0x4c1365=_0x583ccf?0x0:_0x4ada01[_0x9f77('0x1a')];var _0x11502e=_0x583ccf?_0xa4e421[_0x9f77('0x1d')]:_0x4ada01[_0x9f77('0x1a')]+_0x4ada01[_0x9f77('0x1c')];var _0x25a0be;if(_0x11502e>=_0x218702){_0x11502e=_0x218702;_0x25a0be=0xc8;}else{_0x25a0be=0xce;}_0x5d7f9b[_0x9f77('0x18')](_0x25a0be);return _0x5d7f9b['set'](_0x9f77('0x1e'),_0x4c1365+'-'+_0x11502e+'/'+_0x218702)[_0x9f77('0x19')](_0xa4e421);}return null;};}function patchUpdates(_0x5095fa){return function(_0x9d49e5){try{jsonpatch[_0x9f77('0x1f')](_0x9d49e5,_0x5095fa,!![]);}catch(_0x411089){return BPromise[_0x9f77('0x20')](_0x411089);}return _0x9d49e5['save']();};}function saveUpdates(_0x525085,_0x10d1bf){return function(_0x1d929f){if(_0x1d929f){return _0x1d929f[_0x9f77('0x21')](_0x525085)[_0x9f77('0x22')](function(_0x4a3880){return _0x4a3880;});}return null;};}function removeEntity(_0x217c8a,_0x1f3be3){return function(_0x51f300){if(_0x51f300){return _0x51f300[_0x9f77('0x23')]()[_0x9f77('0x22')](function(){_0x217c8a[_0x9f77('0x18')](0xcc)[_0x9f77('0x24')]();});}};}function handleEntityNotFound(_0x1aca46,_0x45a40d){return function(_0x57ccbe){if(!_0x57ccbe){_0x1aca46[_0x9f77('0x17')](0x194);}return _0x57ccbe;};}function handleError(_0x48bda9,_0x32468e){_0x32468e=_0x32468e||0x1f4;return function(_0x457b9c){logger[_0x9f77('0x25')](_0x457b9c[_0x9f77('0x26')]);if(_0x457b9c['name']){delete _0x457b9c['name'];}_0x48bda9[_0x9f77('0x18')](_0x32468e)['send'](_0x457b9c);};}exports[_0x9f77('0x27')]=function(_0x1a10d5,_0x114d7f){var _0x39f3bf={},_0x99419={},_0x143c82={'count':0x0,'rows':[]};var _0x582e7b=_[_0x9f77('0x28')](db['MailSubstatus'][_0x9f77('0x29')],function(_0x15021d){return{'name':_0x15021d[_0x9f77('0x2a')],'type':_0x15021d[_0x9f77('0x2b')][_0x9f77('0x2c')]};});_0x99419['model']=_['map'](_0x582e7b,_0x9f77('0x2d'));_0x99419[_0x9f77('0x2e')]=_[_0x9f77('0x2f')](_0x1a10d5['query']);_0x99419[_0x9f77('0x30')]=_[_0x9f77('0x31')](_0x99419[_0x9f77('0x32')],_0x99419[_0x9f77('0x2e')]);_0x39f3bf[_0x9f77('0x33')]=_['intersection'](_0x99419[_0x9f77('0x32')],qs[_0x9f77('0x34')](_0x1a10d5[_0x9f77('0x2e')]['fields']));_0x39f3bf['attributes']=_0x39f3bf['attributes']['length']?_0x39f3bf[_0x9f77('0x33')]:_0x99419[_0x9f77('0x32')];if(!_0x1a10d5[_0x9f77('0x2e')][_0x9f77('0x35')](_0x9f77('0x36'))){_0x39f3bf[_0x9f77('0x1c')]=qs[_0x9f77('0x1c')](_0x1a10d5['query'][_0x9f77('0x1c')]);_0x39f3bf['offset']=qs[_0x9f77('0x1a')](_0x1a10d5[_0x9f77('0x2e')][_0x9f77('0x1a')]);}_0x39f3bf[_0x9f77('0x37')]=qs[_0x9f77('0x38')](_0x1a10d5['query'][_0x9f77('0x38')]);_0x39f3bf[_0x9f77('0x39')]=qs['filters'](_[_0x9f77('0x3a')](_0x1a10d5[_0x9f77('0x2e')],_0x99419[_0x9f77('0x30')]),_0x582e7b);if(_0x1a10d5[_0x9f77('0x2e')]['filter']){_0x39f3bf[_0x9f77('0x39')]=_['merge'](_0x39f3bf[_0x9f77('0x39')],{'$or':_['map'](_0x582e7b,function(_0x54fa75){if(_0x54fa75[_0x9f77('0x2b')]!==_0x9f77('0x3b')){var _0x41d0c2={};_0x41d0c2[_0x54fa75['name']]={'$like':'%'+_0x1a10d5[_0x9f77('0x2e')][_0x9f77('0x3c')]+'%'};return _0x41d0c2;}})});}_0x39f3bf=_[_0x9f77('0x3d')]({},_0x39f3bf,_0x1a10d5[_0x9f77('0x3e')]);var _0x52317f={'where':_0x39f3bf['where']};return db[_0x9f77('0x3f')]['count'](_0x52317f)[_0x9f77('0x22')](function(_0x90a4a2){_0x143c82[_0x9f77('0x1d')]=_0x90a4a2;if(_0x1a10d5[_0x9f77('0x2e')][_0x9f77('0x40')]){_0x39f3bf[_0x9f77('0x41')]=[{'all':!![]}];}return db[_0x9f77('0x3f')][_0x9f77('0x42')](_0x39f3bf);})[_0x9f77('0x22')](function(_0x782104){_0x143c82[_0x9f77('0x43')]=_0x782104;return _0x143c82;})[_0x9f77('0x22')](respondWithFilteredResult(_0x114d7f,_0x39f3bf))[_0x9f77('0x44')](handleError(_0x114d7f,null));};exports[_0x9f77('0x45')]=function(_0x2d00cf,_0x20b50d){var _0x2268ca={'raw':!![],'where':{'id':_0x2d00cf[_0x9f77('0x46')]['id']}},_0x6a103c={};_0x6a103c[_0x9f77('0x32')]=_[_0x9f77('0x2f')](db[_0x9f77('0x3f')][_0x9f77('0x29')]);_0x6a103c[_0x9f77('0x2e')]=_[_0x9f77('0x2f')](_0x2d00cf[_0x9f77('0x2e')]);_0x6a103c[_0x9f77('0x30')]=_[_0x9f77('0x31')](_0x6a103c['model'],_0x6a103c[_0x9f77('0x2e')]);_0x2268ca['attributes']=_[_0x9f77('0x31')](_0x6a103c[_0x9f77('0x32')],qs['fields'](_0x2d00cf[_0x9f77('0x2e')][_0x9f77('0x34')]));_0x2268ca[_0x9f77('0x33')]=_0x2268ca['attributes'][_0x9f77('0x47')]?_0x2268ca[_0x9f77('0x33')]:_0x6a103c['model'];if(_0x2d00cf['query'][_0x9f77('0x40')]){_0x2268ca[_0x9f77('0x41')]=[{'all':!![]}];}_0x2268ca=_[_0x9f77('0x3d')]({},_0x2268ca,_0x2d00cf[_0x9f77('0x3e')]);return db['MailSubstatus'][_0x9f77('0x48')](_0x2268ca)[_0x9f77('0x22')](handleEntityNotFound(_0x20b50d,null))[_0x9f77('0x22')](respondWithResult(_0x20b50d,null))[_0x9f77('0x44')](handleError(_0x20b50d,null));};exports['create']=function(_0x255d7f,_0x567af6){return db[_0x9f77('0x3f')]['create'](_0x255d7f[_0x9f77('0x49')],{})['then'](respondWithResult(_0x567af6,0xc9))[_0x9f77('0x44')](handleError(_0x567af6,null));};exports[_0x9f77('0x21')]=function(_0x133cce,_0x53307e){if(_0x133cce[_0x9f77('0x49')]['id']){delete _0x133cce[_0x9f77('0x49')]['id'];}return db[_0x9f77('0x3f')][_0x9f77('0x48')]({'where':{'id':_0x133cce[_0x9f77('0x46')]['id']}})[_0x9f77('0x22')](handleEntityNotFound(_0x53307e,null))[_0x9f77('0x22')](saveUpdates(_0x133cce[_0x9f77('0x49')],null))[_0x9f77('0x22')](respondWithResult(_0x53307e,null))['catch'](handleError(_0x53307e,null));};exports['destroy']=function(_0x678688,_0x39a22e){return db[_0x9f77('0x3f')][_0x9f77('0x48')]({'where':{'id':_0x678688[_0x9f77('0x46')]['id']}})[_0x9f77('0x22')](handleEntityNotFound(_0x39a22e,null))[_0x9f77('0x22')](removeEntity(_0x39a22e,null))[_0x9f77('0x44')](handleError(_0x39a22e,null));};exports[_0x9f77('0x4a')]=function(_0x1642f4,_0x586281){return db['MailSubstatus'][_0x9f77('0x4a')]()[_0x9f77('0x22')](respondWithResult(_0x586281,null))[_0x9f77('0x44')](handleError(_0x586281,null));};
\ No newline at end of file
index e27d270..bba6f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5de0=['request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','exports','MailSubstatus','lodash','../../config/logger','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5de0,0x16f));var _0x05de=function(_0x5bd5c2,_0x357457){_0x5bd5c2=_0x5bd5c2-0x0;var _0x5ab0a0=_0x5de0[_0x5bd5c2];return _0x5ab0a0;};'use strict';var _=require(_0x05de('0x0'));var util=require('util');var logger=require(_0x05de('0x1'))('api');var moment=require('moment');var BPromise=require(_0x05de('0x2'));var rp=require(_0x05de('0x3'));var fs=require('fs');var path=require(_0x05de('0x4'));var rimraf=require(_0x05de('0x5'));var config=require(_0x05de('0x6'));var attributes=require(_0x05de('0x7'));module[_0x05de('0x8')]=function(_0x30e71b,_0x204363){return _0x30e71b['define'](_0x05de('0x9'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9dcb=['./mailSubstatus.attributes','exports','define','MailSubstatus','mail_substatuses','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x1c6eea,_0x5164a6){var _0x2e9ee0=function(_0x308efc){while(--_0x308efc){_0x1c6eea['push'](_0x1c6eea['shift']());}};_0x2e9ee0(++_0x5164a6);}(_0x9dcb,0x94));var _0xb9dc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9dcb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb9dc('0x0'));var util=require(_0xb9dc('0x1'));var logger=require(_0xb9dc('0x2'))(_0xb9dc('0x3'));var moment=require(_0xb9dc('0x4'));var BPromise=require('bluebird');var rp=require(_0xb9dc('0x5'));var fs=require('fs');var path=require(_0xb9dc('0x6'));var rimraf=require('rimraf');var config=require(_0xb9dc('0x7'));var attributes=require(_0xb9dc('0x8'));module[_0xb9dc('0x9')]=function(_0x26bacf,_0x278f4f){return _0x26bacf[_0xb9dc('0xa')](_0xb9dc('0xb'),attributes,{'tableName':_0xb9dc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dfabad..bb822e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17a8=['request','then','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http'];(function(_0xfffaef,_0x421f87){var _0x16e578=function(_0x3a8363){while(--_0x3a8363){_0xfffaef['push'](_0xfffaef['shift']());}};_0x16e578(++_0x421f87);}(_0x17a8,0x64));var _0x817a=function(_0x20e81e,_0x2ad41f){_0x20e81e=_0x20e81e-0x0;var _0x3e6654=_0x17a8[_0x20e81e];return _0x3e6654;};'use strict';var _=require(_0x817a('0x0'));var util=require(_0x817a('0x1'));var moment=require(_0x817a('0x2'));var BPromise=require(_0x817a('0x3'));var rs=require(_0x817a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x817a('0x5'))['db'];var utils=require(_0x817a('0x6'));var logger=require(_0x817a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x817a('0x8')][_0x817a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x303b45,_0x3d94e3,_0x4e2e8c){return new BPromise(function(_0x5e4c82,_0x3f76b1){return client[_0x817a('0xa')](_0x303b45,_0x4e2e8c)[_0x817a('0xb')](function(_0x3e483d){logger['info'](_0x817a('0xc'),_0x3d94e3,'request\x20sent');logger[_0x817a('0xd')](_0x817a('0xe'),_0x3d94e3,_0x817a('0xf'),JSON[_0x817a('0x10')](_0x3e483d));if(_0x3e483d[_0x817a('0x11')]){if(_0x3e483d[_0x817a('0x11')][_0x817a('0x12')]===0x1f4){logger[_0x817a('0x11')](_0x817a('0xc'),_0x3d94e3,_0x3e483d['error'][_0x817a('0x13')]);return _0x3f76b1(_0x3e483d[_0x817a('0x11')][_0x817a('0x13')]);}logger[_0x817a('0x11')]('MailSubstatus,\x20%s,\x20%s',_0x3d94e3,_0x3e483d[_0x817a('0x11')][_0x817a('0x13')]);return _0x5e4c82(_0x3e483d[_0x817a('0x11')][_0x817a('0x13')]);}else{logger[_0x817a('0x14')](_0x817a('0xc'),_0x3d94e3,'request\x20sent');_0x5e4c82(_0x3e483d['result']['message']);}})[_0x817a('0x15')](function(_0x4a7a14){logger['error'](_0x817a('0xc'),_0x3d94e3,_0x4a7a14);_0x3f76b1(_0x4a7a14);});});}
\ No newline at end of file
+var _0x77fd=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x77fd,0xdc));var _0xd77f=function(_0x5e8b64,_0x3b0ad7){_0x5e8b64=_0x5e8b64-0x0;var _0x57cf34=_0x77fd[_0x5e8b64];return _0x57cf34;};'use strict';var _=require(_0xd77f('0x0'));var util=require(_0xd77f('0x1'));var moment=require(_0xd77f('0x2'));var BPromise=require(_0xd77f('0x3'));var rs=require(_0xd77f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd77f('0x5'))['db'];var utils=require(_0xd77f('0x6'));var logger=require('../../config/logger')(_0xd77f('0x7'));var config=require(_0xd77f('0x8'));var jayson=require(_0xd77f('0x9'));var client=jayson[_0xd77f('0xa')][_0xd77f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e22e4,_0x1d1f83,_0x4b5d3a){return new BPromise(function(_0x34e310,_0x40e2cd){return client[_0xd77f('0xc')](_0x5e22e4,_0x4b5d3a)['then'](function(_0x217da0){logger[_0xd77f('0xd')](_0xd77f('0xe'),_0x1d1f83,'request\x20sent');logger[_0xd77f('0xf')](_0xd77f('0x10'),_0x1d1f83,_0xd77f('0x11'),JSON[_0xd77f('0x12')](_0x217da0));if(_0x217da0['error']){if(_0x217da0[_0xd77f('0x13')][_0xd77f('0x14')]===0x1f4){logger[_0xd77f('0x13')](_0xd77f('0xe'),_0x1d1f83,_0x217da0[_0xd77f('0x13')]['message']);return _0x40e2cd(_0x217da0[_0xd77f('0x13')][_0xd77f('0x15')]);}logger[_0xd77f('0x13')](_0xd77f('0xe'),_0x1d1f83,_0x217da0[_0xd77f('0x13')]['message']);return _0x34e310(_0x217da0[_0xd77f('0x13')][_0xd77f('0x15')]);}else{logger[_0xd77f('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x1d1f83,_0xd77f('0x11'));_0x34e310(_0x217da0[_0xd77f('0x16')][_0xd77f('0x15')]);}})[_0xd77f('0x17')](function(_0x4b88ae){logger['error'](_0xd77f('0xe'),_0x1d1f83,_0x4b88ae);_0x40e2cd(_0x4b88ae);});});}
\ No newline at end of file
index d23576d..e4b59f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6943=['path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x34ec96,_0x18c868){var _0x3c1b34=function(_0x4a1596){while(--_0x4a1596){_0x34ec96['push'](_0x34ec96['shift']());}};_0x3c1b34(++_0x18c868);}(_0x6943,0x1b3));var _0x3694=function(_0x151721,_0x20d5bc){_0x151721=_0x151721-0x0;var _0x2deaa7=_0x6943[_0x151721];return _0x2deaa7;};'use strict';var multer=require(_0x3694('0x0'));var util=require(_0x3694('0x1'));var path=require(_0x3694('0x2'));var timeout=require(_0x3694('0x3'));var express=require('express');var router=express[_0x3694('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3694('0x5'));var config=require(_0x3694('0x6'));var controller=require(_0x3694('0x7'));router['get']('/',auth[_0x3694('0x8')](),controller['index']);router[_0x3694('0x9')]('/describe',auth[_0x3694('0x8')](),controller['describe']);router['get'](_0x3694('0xa'),auth[_0x3694('0x8')](),controller[_0x3694('0xb')]);router[_0x3694('0xc')]('/',auth[_0x3694('0x8')](),controller[_0x3694('0xd')]);router[_0x3694('0xe')](_0x3694('0xa'),auth[_0x3694('0x8')](),controller[_0x3694('0xf')]);router[_0x3694('0x10')](_0x3694('0xa'),auth[_0x3694('0x8')](),controller[_0x3694('0x11')]);module[_0x3694('0x12')]=router;
\ No newline at end of file
+var _0x660b=['describe','show','post','put','/:id','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe'];(function(_0x561098,_0xdd1933){var _0x42701a=function(_0x2ab50f){while(--_0x2ab50f){_0x561098['push'](_0x561098['shift']());}};_0x42701a(++_0xdd1933);}(_0x660b,0x159));var _0xb660=function(_0xf9a4f7,_0x12371e){_0xf9a4f7=_0xf9a4f7-0x0;var _0x13dee7=_0x660b[_0xf9a4f7];return _0x13dee7;};'use strict';var multer=require(_0xb660('0x0'));var util=require(_0xb660('0x1'));var path=require(_0xb660('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb660('0x3')]();var fs_extra=require(_0xb660('0x4'));var auth=require(_0xb660('0x5'));var interaction=require(_0xb660('0x6'));var config=require(_0xb660('0x7'));var controller=require('./mailTransferReport.controller');router[_0xb660('0x8')]('/',auth[_0xb660('0x9')](),controller[_0xb660('0xa')]);router[_0xb660('0x8')](_0xb660('0xb'),auth['isAuthenticated'](),controller[_0xb660('0xc')]);router[_0xb660('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb660('0xd')]);router[_0xb660('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb660('0xf')](_0xb660('0x10'),auth[_0xb660('0x9')](),controller[_0xb660('0x11')]);router[_0xb660('0x12')](_0xb660('0x10'),auth[_0xb660('0x9')](),controller[_0xb660('0x13')]);module[_0xb660('0x14')]=router;
\ No newline at end of file
index 91a6122..10ae888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x32a161,_0x568df3){var _0x1f8c09=function(_0x1aa7b5){while(--_0x1aa7b5){_0x32a161['push'](_0x32a161['shift']());}};_0x1f8c09(++_0x568df3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x21bfab,_0x2fee48){_0x21bfab=_0x21bfab-0x0;var _0x4db318=_0xcb91[_0x21bfab];return _0x4db318;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
+var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x5693f5,_0x3fb264){var _0x3ecb72=function(_0x432dae){while(--_0x432dae){_0x5693f5['push'](_0x5693f5['shift']());}};_0x3ecb72(++_0x3fb264);}(_0x70e0,0x17b));var _0x070e=function(_0x953abc,_0x496d0e){_0x953abc=_0x953abc-0x0;var _0x562ce3=_0x70e0[_0x953abc];return _0x562ce3;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
index 8636678..e2de914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae91=['key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','filters','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type'];(function(_0x585a0b,_0x1583f0){var _0x5e9d47=function(_0x5b3598){while(--_0x5b3598){_0x585a0b['push'](_0x585a0b['shift']());}};_0x5e9d47(++_0x1583f0);}(_0xae91,0x1bd));var _0x1ae9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xae91[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x1ae9('0x0'));var rimraf=require(_0x1ae9('0x1'));var zipdir=require(_0x1ae9('0x2'));var jsonpatch=require(_0x1ae9('0x3'));var rp=require(_0x1ae9('0x4'));var moment=require(_0x1ae9('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1ae9('0x6'));var util=require(_0x1ae9('0x7'));var path=require(_0x1ae9('0x8'));var sox=require(_0x1ae9('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ae9('0xa'));var _=require(_0x1ae9('0xb'));var squel=require(_0x1ae9('0xc'));var crypto=require(_0x1ae9('0xd'));var jsforce=require(_0x1ae9('0xe'));var deskjs=require(_0x1ae9('0xf'));var toCsv=require(_0x1ae9('0x10'));var querystring=require(_0x1ae9('0x11'));var Papa=require(_0x1ae9('0x12'));var Redis=require(_0x1ae9('0x13'));var authService=require(_0x1ae9('0x14'));var qs=require(_0x1ae9('0x15'));var as=require(_0x1ae9('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1ae9('0x17'));var utils=require('../../config/utils');var config=require(_0x1ae9('0x18'));var licenseUtil=require(_0x1ae9('0x19'));var db=require(_0x1ae9('0x1a'))['db'];function respondWithStatusCode(_0x473e3c,_0x55864a){_0x55864a=_0x55864a||0xcc;return function(_0x528e7c){if(_0x528e7c){return _0x473e3c['sendStatus'](_0x55864a);}return _0x473e3c['status'](_0x55864a)['end']();};}function respondWithResult(_0xa4a074,_0xe1e82e){_0xe1e82e=_0xe1e82e||0xc8;return function(_0x581bf4){if(_0x581bf4){return _0xa4a074[_0x1ae9('0x1b')](_0xe1e82e)[_0x1ae9('0x1c')](_0x581bf4);}};}function respondWithFilteredResult(_0x446dab,_0xee593f){return function(_0xcf3389){if(_0xcf3389){var _0x154022=typeof _0xee593f[_0x1ae9('0x1d')]==='undefined'&&typeof _0xee593f['limit']===_0x1ae9('0x1e');var _0x2d396c=_0xcf3389[_0x1ae9('0x1f')];var _0x5115d3=_0x154022?0x0:_0xee593f[_0x1ae9('0x1d')];var _0x50d03e=_0x154022?_0xcf3389[_0x1ae9('0x1f')]:_0xee593f[_0x1ae9('0x1d')]+_0xee593f[_0x1ae9('0x20')];var _0x1302c4;if(_0x50d03e>=_0x2d396c){_0x50d03e=_0x2d396c;_0x1302c4=0xc8;}else{_0x1302c4=0xce;}_0x446dab[_0x1ae9('0x1b')](_0x1302c4);return _0x446dab[_0x1ae9('0x21')](_0x1ae9('0x22'),_0x5115d3+'-'+_0x50d03e+'/'+_0x2d396c)[_0x1ae9('0x1c')](_0xcf3389);}return null;};}function patchUpdates(_0x5845d1){return function(_0x27616d){try{jsonpatch[_0x1ae9('0x23')](_0x27616d,_0x5845d1,!![]);}catch(_0x382ce6){return BPromise[_0x1ae9('0x24')](_0x382ce6);}return _0x27616d[_0x1ae9('0x25')]();};}function saveUpdates(_0x36c641,_0x414612){return function(_0x4b2160){if(_0x4b2160){return _0x4b2160[_0x1ae9('0x26')](_0x36c641)[_0x1ae9('0x27')](function(_0x321bc){return _0x321bc;});}return null;};}function removeEntity(_0x5e5c09,_0x281985){return function(_0x55426e){if(_0x55426e){return _0x55426e[_0x1ae9('0x28')]()['then'](function(){_0x5e5c09[_0x1ae9('0x1b')](0xcc)[_0x1ae9('0x29')]();});}};}function handleEntityNotFound(_0x41de37,_0x4f63a0){return function(_0x381b8b){if(!_0x381b8b){_0x41de37[_0x1ae9('0x2a')](0x194);}return _0x381b8b;};}function handleError(_0x4936ff,_0x10c74b){_0x10c74b=_0x10c74b||0x1f4;return function(_0x6c685c){logger[_0x1ae9('0x2b')](_0x6c685c[_0x1ae9('0x2c')]);if(_0x6c685c['name']){delete _0x6c685c[_0x1ae9('0x2d')];}_0x4936ff[_0x1ae9('0x1b')](_0x10c74b)[_0x1ae9('0x2e')](_0x6c685c);};}exports[_0x1ae9('0x2f')]=function(_0x49384d,_0x39c4ff){var _0x43f1b2={},_0x3adfaf={},_0x3fb677={'count':0x0,'rows':[]};var _0x514b84=_[_0x1ae9('0x30')](db[_0x1ae9('0x31')][_0x1ae9('0x32')],function(_0x255f32){return{'name':_0x255f32[_0x1ae9('0x33')],'type':_0x255f32[_0x1ae9('0x34')][_0x1ae9('0x35')]};});_0x3adfaf[_0x1ae9('0x36')]=_[_0x1ae9('0x30')](_0x514b84,'name');_0x3adfaf['query']=_[_0x1ae9('0x37')](_0x49384d['query']);_0x3adfaf['filters']=_[_0x1ae9('0x38')](_0x3adfaf['model'],_0x3adfaf[_0x1ae9('0x39')]);_0x43f1b2[_0x1ae9('0x3a')]=_['intersection'](_0x3adfaf['model'],qs[_0x1ae9('0x3b')](_0x49384d['query']['fields']));_0x43f1b2[_0x1ae9('0x3a')]=_0x43f1b2[_0x1ae9('0x3a')][_0x1ae9('0x3c')]?_0x43f1b2[_0x1ae9('0x3a')]:_0x3adfaf[_0x1ae9('0x36')];if(!_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x3d')](_0x1ae9('0x3e'))){_0x43f1b2[_0x1ae9('0x20')]=qs['limit'](_0x49384d['query']['limit']);_0x43f1b2[_0x1ae9('0x1d')]=qs[_0x1ae9('0x1d')](_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x1d')]);}_0x43f1b2[_0x1ae9('0x3f')]=qs[_0x1ae9('0x40')](_0x49384d[_0x1ae9('0x39')]['sort']);_0x43f1b2[_0x1ae9('0x41')]=qs['filters'](_[_0x1ae9('0x42')](_0x49384d[_0x1ae9('0x39')],_0x3adfaf['filters']),_0x514b84);if(_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x43')]){_0x43f1b2[_0x1ae9('0x41')]=_[_0x1ae9('0x44')](_0x43f1b2[_0x1ae9('0x41')],{'$or':_[_0x1ae9('0x30')](_0x514b84,function(_0x5275a7){if(_0x5275a7['type']!==_0x1ae9('0x45')){var _0xe8f9ab={};_0xe8f9ab[_0x5275a7[_0x1ae9('0x2d')]]={'$like':'%'+_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x43')]+'%'};return _0xe8f9ab;}})});}_0x43f1b2=_['merge']({},_0x43f1b2,_0x49384d[_0x1ae9('0x46')]);var _0x1567c4={'where':_0x43f1b2[_0x1ae9('0x41')]};return db[_0x1ae9('0x31')]['count'](_0x1567c4)['then'](function(_0x5c1a2b){_0x3fb677[_0x1ae9('0x1f')]=_0x5c1a2b;if(_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x47')]){_0x43f1b2[_0x1ae9('0x48')]=[{'all':!![]}];}return db[_0x1ae9('0x31')][_0x1ae9('0x49')](_0x43f1b2);})[_0x1ae9('0x27')](function(_0xc68276){_0x3fb677[_0x1ae9('0x4a')]=_0xc68276;return _0x3fb677;})['then'](respondWithFilteredResult(_0x39c4ff,_0x43f1b2))[_0x1ae9('0x4b')](handleError(_0x39c4ff,null));};exports[_0x1ae9('0x4c')]=function(_0x598a2f,_0x1690b5){var _0x47de87={'raw':!![],'where':{'id':_0x598a2f[_0x1ae9('0x4d')]['id']}},_0x357538={};_0x357538[_0x1ae9('0x36')]=_[_0x1ae9('0x37')](db[_0x1ae9('0x31')]['rawAttributes']);_0x357538['query']=_[_0x1ae9('0x37')](_0x598a2f[_0x1ae9('0x39')]);_0x357538[_0x1ae9('0x4e')]=_[_0x1ae9('0x38')](_0x357538[_0x1ae9('0x36')],_0x357538[_0x1ae9('0x39')]);_0x47de87[_0x1ae9('0x3a')]=_[_0x1ae9('0x38')](_0x357538[_0x1ae9('0x36')],qs[_0x1ae9('0x3b')](_0x598a2f['query'][_0x1ae9('0x3b')]));_0x47de87[_0x1ae9('0x3a')]=_0x47de87['attributes'][_0x1ae9('0x3c')]?_0x47de87[_0x1ae9('0x3a')]:_0x357538[_0x1ae9('0x36')];if(_0x598a2f[_0x1ae9('0x39')]['includeAll']){_0x47de87['include']=[{'all':!![]}];}_0x47de87=_[_0x1ae9('0x44')]({},_0x47de87,_0x598a2f[_0x1ae9('0x46')]);return db['MailTransferReport'][_0x1ae9('0x4f')](_0x47de87)['then'](handleEntityNotFound(_0x1690b5,null))['then'](respondWithResult(_0x1690b5,null))['catch'](handleError(_0x1690b5,null));};exports[_0x1ae9('0x50')]=function(_0x50e925,_0x4ac593){return db[_0x1ae9('0x31')]['create'](_0x50e925[_0x1ae9('0x51')],{})['then'](respondWithResult(_0x4ac593,0xc9))[_0x1ae9('0x4b')](handleError(_0x4ac593,null));};exports['update']=function(_0x3db8d1,_0x4222d9){if(_0x3db8d1[_0x1ae9('0x51')]['id']){delete _0x3db8d1[_0x1ae9('0x51')]['id'];}return db['MailTransferReport'][_0x1ae9('0x4f')]({'where':{'id':_0x3db8d1['params']['id']}})[_0x1ae9('0x27')](handleEntityNotFound(_0x4222d9,null))[_0x1ae9('0x27')](saveUpdates(_0x3db8d1[_0x1ae9('0x51')],null))['then'](respondWithResult(_0x4222d9,null))[_0x1ae9('0x4b')](handleError(_0x4222d9,null));};exports[_0x1ae9('0x28')]=function(_0x3e0296,_0xbf5b62){return db['MailTransferReport'][_0x1ae9('0x4f')]({'where':{'id':_0x3e0296[_0x1ae9('0x4d')]['id']}})[_0x1ae9('0x27')](handleEntityNotFound(_0xbf5b62,null))[_0x1ae9('0x27')](removeEntity(_0xbf5b62,null))['catch'](handleError(_0xbf5b62,null));};exports[_0x1ae9('0x52')]=function(_0x3f4651,_0x2e240e){return db['MailTransferReport'][_0x1ae9('0x52')]()['then'](respondWithResult(_0x2e240e,null))[_0x1ae9('0x4b')](handleError(_0x2e240e,null));};
\ No newline at end of file
+var _0x6f00=['merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','length','options','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','name','index','MailTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','sort','where','filter'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x6f00,0x179));var _0x06f0=function(_0x4d180c,_0x45c68e){_0x4d180c=_0x4d180c-0x0;var _0x49b57e=_0x6f00[_0x4d180c];return _0x49b57e;};'use strict';var emlformat=require(_0x06f0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x06f0('0x1'));var jsonpatch=require(_0x06f0('0x2'));var rp=require(_0x06f0('0x3'));var moment=require('moment');var BPromise=require(_0x06f0('0x4'));var Mustache=require(_0x06f0('0x5'));var util=require('util');var path=require(_0x06f0('0x6'));var sox=require(_0x06f0('0x7'));var csv=require(_0x06f0('0x8'));var ejs=require(_0x06f0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x06f0('0xa'));var squel=require('squel');var crypto=require(_0x06f0('0xb'));var jsforce=require(_0x06f0('0xc'));var deskjs=require(_0x06f0('0xd'));var toCsv=require(_0x06f0('0x8'));var querystring=require(_0x06f0('0xe'));var Papa=require(_0x06f0('0xf'));var Redis=require('ioredis');var authService=require(_0x06f0('0x10'));var qs=require(_0x06f0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x06f0('0x12'));var logger=require(_0x06f0('0x13'))(_0x06f0('0x14'));var utils=require('../../config/utils');var config=require(_0x06f0('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x388d14,_0x561857){_0x561857=_0x561857||0xcc;return function(_0x2d94ca){if(_0x2d94ca){return _0x388d14[_0x06f0('0x16')](_0x561857);}return _0x388d14['status'](_0x561857)[_0x06f0('0x17')]();};}function respondWithResult(_0x401d7c,_0xf44f43){_0xf44f43=_0xf44f43||0xc8;return function(_0xc9a228){if(_0xc9a228){return _0x401d7c[_0x06f0('0x18')](_0xf44f43)['json'](_0xc9a228);}};}function respondWithFilteredResult(_0x32cc8a,_0x166077){return function(_0x551e7c){if(_0x551e7c){var _0x25aa18=typeof _0x166077[_0x06f0('0x19')]===_0x06f0('0x1a')&&typeof _0x166077[_0x06f0('0x1b')]===_0x06f0('0x1a');var _0x5f112e=_0x551e7c['count'];var _0xd32447=_0x25aa18?0x0:_0x166077[_0x06f0('0x19')];var _0x92ba1=_0x25aa18?_0x551e7c[_0x06f0('0x1c')]:_0x166077[_0x06f0('0x19')]+_0x166077[_0x06f0('0x1b')];var _0x212277;if(_0x92ba1>=_0x5f112e){_0x92ba1=_0x5f112e;_0x212277=0xc8;}else{_0x212277=0xce;}_0x32cc8a['status'](_0x212277);return _0x32cc8a[_0x06f0('0x1d')](_0x06f0('0x1e'),_0xd32447+'-'+_0x92ba1+'/'+_0x5f112e)[_0x06f0('0x1f')](_0x551e7c);}return null;};}function patchUpdates(_0xe0630){return function(_0x20e32e){try{jsonpatch[_0x06f0('0x20')](_0x20e32e,_0xe0630,!![]);}catch(_0x535644){return BPromise[_0x06f0('0x21')](_0x535644);}return _0x20e32e['save']();};}function saveUpdates(_0x425f84,_0x2adbcb){return function(_0x5a9b74){if(_0x5a9b74){return _0x5a9b74[_0x06f0('0x22')](_0x425f84)[_0x06f0('0x23')](function(_0x3cda50){return _0x3cda50;});}return null;};}function removeEntity(_0x5118cd,_0x452814){return function(_0x286d78){if(_0x286d78){return _0x286d78[_0x06f0('0x24')]()[_0x06f0('0x23')](function(){_0x5118cd[_0x06f0('0x18')](0xcc)[_0x06f0('0x17')]();});}};}function handleEntityNotFound(_0x203664,_0x3e5746){return function(_0x4ca0fa){if(!_0x4ca0fa){_0x203664[_0x06f0('0x16')](0x194);}return _0x4ca0fa;};}function handleError(_0x11466d,_0x4fc819){_0x4fc819=_0x4fc819||0x1f4;return function(_0x24e33a){logger['error'](_0x24e33a['stack']);if(_0x24e33a[_0x06f0('0x25')]){delete _0x24e33a['name'];}_0x11466d[_0x06f0('0x18')](_0x4fc819)['send'](_0x24e33a);};}exports[_0x06f0('0x26')]=function(_0x8351f0,_0x4adfbb){var _0x4d4142={},_0x5c9164={},_0x4027d1={'count':0x0,'rows':[]};var _0x23c991=_['map'](db[_0x06f0('0x27')][_0x06f0('0x28')],function(_0x51047c){return{'name':_0x51047c[_0x06f0('0x29')],'type':_0x51047c[_0x06f0('0x2a')][_0x06f0('0x2b')]};});_0x5c9164[_0x06f0('0x2c')]=_['map'](_0x23c991,_0x06f0('0x25'));_0x5c9164['query']=_[_0x06f0('0x2d')](_0x8351f0[_0x06f0('0x2e')]);_0x5c9164[_0x06f0('0x2f')]=_['intersection'](_0x5c9164[_0x06f0('0x2c')],_0x5c9164['query']);_0x4d4142[_0x06f0('0x30')]=_['intersection'](_0x5c9164[_0x06f0('0x2c')],qs[_0x06f0('0x31')](_0x8351f0['query'][_0x06f0('0x31')]));_0x4d4142[_0x06f0('0x30')]=_0x4d4142[_0x06f0('0x30')]['length']?_0x4d4142[_0x06f0('0x30')]:_0x5c9164[_0x06f0('0x2c')];if(!_0x8351f0['query'][_0x06f0('0x32')](_0x06f0('0x33'))){_0x4d4142[_0x06f0('0x1b')]=qs[_0x06f0('0x1b')](_0x8351f0[_0x06f0('0x2e')][_0x06f0('0x1b')]);_0x4d4142[_0x06f0('0x19')]=qs[_0x06f0('0x19')](_0x8351f0[_0x06f0('0x2e')][_0x06f0('0x19')]);}_0x4d4142['order']=qs[_0x06f0('0x34')](_0x8351f0['query']['sort']);_0x4d4142[_0x06f0('0x35')]=qs['filters'](_['pick'](_0x8351f0[_0x06f0('0x2e')],_0x5c9164[_0x06f0('0x2f')]),_0x23c991);if(_0x8351f0[_0x06f0('0x2e')][_0x06f0('0x36')]){_0x4d4142[_0x06f0('0x35')]=_[_0x06f0('0x37')](_0x4d4142[_0x06f0('0x35')],{'$or':_[_0x06f0('0x38')](_0x23c991,function(_0x3885e2){if(_0x3885e2['type']!==_0x06f0('0x39')){var _0x4792fb={};_0x4792fb[_0x3885e2[_0x06f0('0x25')]]={'$like':'%'+_0x8351f0['query'][_0x06f0('0x36')]+'%'};return _0x4792fb;}})});}_0x4d4142=_['merge']({},_0x4d4142,_0x8351f0['options']);var _0x23e0f6={'where':_0x4d4142['where']};return db[_0x06f0('0x27')][_0x06f0('0x1c')](_0x23e0f6)['then'](function(_0x5643e8){_0x4027d1['count']=_0x5643e8;if(_0x8351f0[_0x06f0('0x2e')][_0x06f0('0x3a')]){_0x4d4142[_0x06f0('0x3b')]=[{'all':!![]}];}return db[_0x06f0('0x27')][_0x06f0('0x3c')](_0x4d4142);})['then'](function(_0x31666b){_0x4027d1[_0x06f0('0x3d')]=_0x31666b;return _0x4027d1;})[_0x06f0('0x23')](respondWithFilteredResult(_0x4adfbb,_0x4d4142))[_0x06f0('0x3e')](handleError(_0x4adfbb,null));};exports[_0x06f0('0x3f')]=function(_0x582ece,_0x9cb42){var _0x1bcdce={'raw':!![],'where':{'id':_0x582ece[_0x06f0('0x40')]['id']}},_0x361545={};_0x361545[_0x06f0('0x2c')]=_[_0x06f0('0x2d')](db[_0x06f0('0x27')][_0x06f0('0x28')]);_0x361545[_0x06f0('0x2e')]=_['keys'](_0x582ece[_0x06f0('0x2e')]);_0x361545[_0x06f0('0x2f')]=_[_0x06f0('0x41')](_0x361545['model'],_0x361545[_0x06f0('0x2e')]);_0x1bcdce[_0x06f0('0x30')]=_[_0x06f0('0x41')](_0x361545[_0x06f0('0x2c')],qs['fields'](_0x582ece['query'][_0x06f0('0x31')]));_0x1bcdce[_0x06f0('0x30')]=_0x1bcdce[_0x06f0('0x30')][_0x06f0('0x42')]?_0x1bcdce[_0x06f0('0x30')]:_0x361545[_0x06f0('0x2c')];if(_0x582ece[_0x06f0('0x2e')][_0x06f0('0x3a')]){_0x1bcdce[_0x06f0('0x3b')]=[{'all':!![]}];}_0x1bcdce=_['merge']({},_0x1bcdce,_0x582ece[_0x06f0('0x43')]);return db[_0x06f0('0x27')]['find'](_0x1bcdce)['then'](handleEntityNotFound(_0x9cb42,null))['then'](respondWithResult(_0x9cb42,null))[_0x06f0('0x3e')](handleError(_0x9cb42,null));};exports[_0x06f0('0x44')]=function(_0x44d13b,_0x2e30d7){return db[_0x06f0('0x27')][_0x06f0('0x44')](_0x44d13b[_0x06f0('0x45')],{})[_0x06f0('0x23')](respondWithResult(_0x2e30d7,0xc9))['catch'](handleError(_0x2e30d7,null));};exports[_0x06f0('0x22')]=function(_0x2e340c,_0x3c5e80){if(_0x2e340c[_0x06f0('0x45')]['id']){delete _0x2e340c['body']['id'];}return db[_0x06f0('0x27')][_0x06f0('0x46')]({'where':{'id':_0x2e340c[_0x06f0('0x40')]['id']}})['then'](handleEntityNotFound(_0x3c5e80,null))['then'](saveUpdates(_0x2e340c[_0x06f0('0x45')],null))['then'](respondWithResult(_0x3c5e80,null))[_0x06f0('0x3e')](handleError(_0x3c5e80,null));};exports[_0x06f0('0x24')]=function(_0x3e952b,_0x50f0cd){return db['MailTransferReport'][_0x06f0('0x46')]({'where':{'id':_0x3e952b[_0x06f0('0x40')]['id']}})[_0x06f0('0x23')](handleEntityNotFound(_0x50f0cd,null))[_0x06f0('0x23')](removeEntity(_0x50f0cd,null))['catch'](handleError(_0x50f0cd,null));};exports['describe']=function(_0x49d14f,_0x5d69f1){return db['MailTransferReport'][_0x06f0('0x47')]()['then'](respondWithResult(_0x5d69f1,null))[_0x06f0('0x3e')](handleError(_0x5d69f1,null));};
\ No newline at end of file
index e860153..1655dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0851=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','lodash','util'];(function(_0x290694,_0x281935){var _0x5a0f2e=function(_0x58d7d4){while(--_0x58d7d4){_0x290694['push'](_0x290694['shift']());}};_0x5a0f2e(++_0x281935);}(_0x0851,0x8a));var _0x1085=function(_0x5a8323,_0x172f3f){_0x5a8323=_0x5a8323-0x0;var _0xbd7886=_0x0851[_0x5a8323];return _0xbd7886;};'use strict';var _=require(_0x1085('0x0'));var util=require(_0x1085('0x1'));var logger=require(_0x1085('0x2'))(_0x1085('0x3'));var moment=require('moment');var BPromise=require(_0x1085('0x4'));var rp=require(_0x1085('0x5'));var fs=require('fs');var path=require(_0x1085('0x6'));var rimraf=require(_0x1085('0x7'));var config=require(_0x1085('0x8'));var attributes=require(_0x1085('0x9'));module[_0x1085('0xa')]=function(_0x1c9e36,_0x152eeb){return _0x1c9e36[_0x1085('0xb')](_0x1085('0xc'),attributes,{'tableName':_0x1085('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe6c1=['path','rimraf','define','MailTransferReport','report_mail_transfer','uniqueid','util','../../config/logger','api','request-promise'];(function(_0x2f0373,_0x1f65ca){var _0x1084f6=function(_0x35de70){while(--_0x35de70){_0x2f0373['push'](_0x2f0373['shift']());}};_0x1084f6(++_0x1f65ca);}(_0xe6c1,0xd8));var _0x1e6c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe6c1[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x1e6c('0x0'));var logger=require(_0x1e6c('0x1'))(_0x1e6c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1e6c('0x3'));var fs=require('fs');var path=require(_0x1e6c('0x4'));var rimraf=require(_0x1e6c('0x5'));var config=require('../../config/environment');var attributes=require('./mailTransferReport.attributes');module['exports']=function(_0x59b172,_0x45e724){return _0x59b172[_0x1e6c('0x6')](_0x1e6c('0x7'),attributes,{'tableName':_0x1e6c('0x8'),'paranoid':![],'indexes':[{'name':_0x1e6c('0x9'),'fields':[_0x1e6c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 38d4c7a..fe2e921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73b1=['code','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2fb356,_0x567092){var _0x27fb4b=function(_0x11c996){while(--_0x11c996){_0x2fb356['push'](_0x2fb356['shift']());}};_0x27fb4b(++_0x567092);}(_0x73b1,0x13d));var _0x173b=function(_0x1576c5,_0x3fe275){_0x1576c5=_0x1576c5-0x0;var _0xdeacb7=_0x73b1[_0x1576c5];return _0xdeacb7;};'use strict';var _=require(_0x173b('0x0'));var util=require(_0x173b('0x1'));var moment=require(_0x173b('0x2'));var BPromise=require(_0x173b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x173b('0x4'));var db=require(_0x173b('0x5'))['db'];var utils=require(_0x173b('0x6'));var logger=require(_0x173b('0x7'))(_0x173b('0x8'));var config=require(_0x173b('0x9'));var jayson=require(_0x173b('0xa'));var client=jayson['client'][_0x173b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3afd8a,_0x360fb5,_0x171fcf){return new BPromise(function(_0x44ba03,_0xea9f12){return client[_0x173b('0xc')](_0x3afd8a,_0x171fcf)[_0x173b('0xd')](function(_0x581947){logger[_0x173b('0xe')](_0x173b('0xf'),_0x360fb5,'request\x20sent');logger[_0x173b('0x10')](_0x173b('0x11'),_0x360fb5,_0x173b('0x12'),JSON['stringify'](_0x581947));if(_0x581947['error']){if(_0x581947['error'][_0x173b('0x13')]===0x1f4){logger[_0x173b('0x14')](_0x173b('0xf'),_0x360fb5,_0x581947[_0x173b('0x14')][_0x173b('0x15')]);return _0xea9f12(_0x581947[_0x173b('0x14')][_0x173b('0x15')]);}logger[_0x173b('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x360fb5,_0x581947[_0x173b('0x14')][_0x173b('0x15')]);return _0x44ba03(_0x581947[_0x173b('0x14')][_0x173b('0x15')]);}else{logger['info'](_0x173b('0xf'),_0x360fb5,_0x173b('0x12'));_0x44ba03(_0x581947[_0x173b('0x16')][_0x173b('0x15')]);}})[_0x173b('0x17')](function(_0x276b46){logger['error'](_0x173b('0xf'),_0x360fb5,_0x276b46);_0xea9f12(_0x276b46);});});}
\ No newline at end of file
+var _0xa0ae=['rpc','../../config/environment','request','then','info','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','MailTransferReport,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x5512fd,_0x3eeb2b){var _0x445fc1=function(_0x2fb514){while(--_0x2fb514){_0x5512fd['push'](_0x5512fd['shift']());}};_0x445fc1(++_0x3eeb2b);}(_0xa0ae,0x19d));var _0xea0a=function(_0x25fc41,_0x250864){_0x25fc41=_0x25fc41-0x0;var _0x1371d1=_0xa0ae[_0x25fc41];return _0x1371d1;};'use strict';var _=require(_0xea0a('0x0'));var util=require(_0xea0a('0x1'));var moment=require(_0xea0a('0x2'));var BPromise=require('bluebird');var rs=require(_0xea0a('0x3'));var fs=require('fs');var Redis=require(_0xea0a('0x4'));var db=require(_0xea0a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xea0a('0x6'))(_0xea0a('0x7'));var config=require(_0xea0a('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3d5fb0,_0x39f313,_0xce7cf9){return new BPromise(function(_0x29238b,_0x2996ed){return client[_0xea0a('0x9')](_0x3d5fb0,_0xce7cf9)[_0xea0a('0xa')](function(_0x4d9377){logger[_0xea0a('0xb')]('MailTransferReport,\x20%s,\x20%s',_0x39f313,_0xea0a('0xc'));logger[_0xea0a('0xd')](_0xea0a('0xe'),_0x39f313,_0xea0a('0xc'),JSON[_0xea0a('0xf')](_0x4d9377));if(_0x4d9377['error']){if(_0x4d9377['error'][_0xea0a('0x10')]===0x1f4){logger[_0xea0a('0x11')](_0xea0a('0x12'),_0x39f313,_0x4d9377[_0xea0a('0x11')]['message']);return _0x2996ed(_0x4d9377[_0xea0a('0x11')][_0xea0a('0x13')]);}logger[_0xea0a('0x11')](_0xea0a('0x12'),_0x39f313,_0x4d9377[_0xea0a('0x11')]['message']);return _0x29238b(_0x4d9377[_0xea0a('0x11')][_0xea0a('0x13')]);}else{logger[_0xea0a('0xb')](_0xea0a('0x12'),_0x39f313,_0xea0a('0xc'));_0x29238b(_0x4d9377[_0xea0a('0x14')][_0xea0a('0x13')]);}})['catch'](function(_0x7000fd){logger['error'](_0xea0a('0x12'),_0x39f313,_0x7000fd);_0x2996ed(_0x7000fd);});});}
\ No newline at end of file
index 1cb0b51..3872df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb408=['express','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','index','isAuthenticated','show','post','put','update','delete','multer','util','connect-timeout'];(function(_0x14fde4,_0x379908){var _0x3c2852=function(_0x58543e){while(--_0x58543e){_0x14fde4['push'](_0x14fde4['shift']());}};_0x3c2852(++_0x379908);}(_0xb408,0x9d));var _0x8b40=function(_0xf19b15,_0x4f36ca){_0xf19b15=_0xf19b15-0x0;var _0x112420=_0xb408[_0xf19b15];return _0x112420;};'use strict';var multer=require(_0x8b40('0x0'));var util=require(_0x8b40('0x1'));var path=require('path');var timeout=require(_0x8b40('0x2'));var express=require(_0x8b40('0x3'));var router=express['Router']();var fs_extra=require(_0x8b40('0x4'));var auth=require(_0x8b40('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8b40('0x6'));var controller=require(_0x8b40('0x7'));router[_0x8b40('0x8')]('/',auth['isAuthenticated'](),controller[_0x8b40('0x9')]);router['get']('/describe',auth[_0x8b40('0xa')](),controller['describe']);router[_0x8b40('0x8')]('/:id',auth[_0x8b40('0xa')](),controller[_0x8b40('0xb')]);router[_0x8b40('0xc')]('/',auth[_0x8b40('0xa')](),controller['create']);router[_0x8b40('0xd')]('/:id',auth[_0x8b40('0xa')](),controller[_0x8b40('0xe')]);router[_0x8b40('0xf')]('/:id',auth[_0x8b40('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x697d=['destroy','exports','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','put','update'];(function(_0x37e265,_0x528da4){var _0x2b8d8a=function(_0x19cc04){while(--_0x19cc04){_0x37e265['push'](_0x37e265['shift']());}};_0x2b8d8a(++_0x528da4);}(_0x697d,0x158));var _0xd697=function(_0x4aee8a,_0x3198e2){_0x4aee8a=_0x4aee8a-0x0;var _0x51fddb=_0x697d[_0x4aee8a];return _0x51fddb;};'use strict';var multer=require(_0xd697('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd697('0x1'));var router=express['Router']();var fs_extra=require(_0xd697('0x2'));var auth=require(_0xd697('0x3'));var interaction=require(_0xd697('0x4'));var config=require(_0xd697('0x5'));var controller=require(_0xd697('0x6'));router['get']('/',auth[_0xd697('0x7')](),controller['index']);router[_0xd697('0x8')](_0xd697('0x9'),auth[_0xd697('0x7')](),controller[_0xd697('0xa')]);router['get'](_0xd697('0xb'),auth[_0xd697('0x7')](),controller[_0xd697('0xc')]);router[_0xd697('0xd')]('/',auth[_0xd697('0x7')](),controller['create']);router[_0xd697('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xd697('0xf')]);router['delete'](_0xd697('0xb'),auth[_0xd697('0x7')](),controller[_0xd697('0x10')]);module[_0xd697('0x11')]=router;
\ No newline at end of file
index 92ca2f8..6cff81c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2821=['talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','exitAt','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]'];(function(_0x3947b1,_0x1b2450){var _0x48866e=function(_0xc929f9){while(--_0xc929f9){_0x3947b1['push'](_0x3947b1['shift']());}};_0x48866e(++_0x1b2450);}(_0x2821,0x87));var _0x1282=function(_0xe7587e,_0x405ae7){_0xe7587e=_0xe7587e-0x0;var _0x1710e5=_0x2821[_0xe7587e];return _0x1710e5;};'use strict';var Sequelize=require(_0x1282('0x0'));var moment=require(_0x1282('0x1'));module[_0x1282('0x2')]={'channel':{'type':Sequelize[_0x1282('0x3')]},'membername':{'type':Sequelize[_0x1282('0x3')]},'interface':{'type':Sequelize[_0x1282('0x3')]},'type':{'type':Sequelize[_0x1282('0x3')],'defaultValue':_0x1282('0x4'),'comment':_0x1282('0x5')},'duration':{'type':Sequelize[_0x1282('0x6')]},'enterAt':{'type':Sequelize[_0x1282('0x7')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x31e0cf){var _0x1843f2=moment(_0x31e0cf);var _0x293947=moment(this[_0x1282('0x8')](_0x1282('0x9')));var _0x1a8666=_0x1843f2[_0x1282('0xa')](_0x293947,_0x1282('0xb'));this['setDataValue'](_0x1282('0xc'),_0x31e0cf);this[_0x1282('0xd')](_0x1282('0xe'),_0x1a8666||null);}},'data1':{'type':Sequelize[_0x1282('0x3')],'comment':_0x1282('0xf')},'data2':{'type':Sequelize['STRING'],'comment':_0x1282('0x10')},'data3':{'type':Sequelize[_0x1282('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x1282('0x3')],'comment':_0x1282('0x11')},'data5':{'type':Sequelize['STRING'],'comment':_0x1282('0x12')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x1282('0x3')]}};
\ No newline at end of file
+var _0x2821=['talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','exitAt','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]'];(function(_0x2bf3d,_0x381ee9){var _0x13e0cf=function(_0x39c0f1){while(--_0x39c0f1){_0x2bf3d['push'](_0x2bf3d['shift']());}};_0x13e0cf(++_0x381ee9);}(_0x2821,0x87));var _0x1282=function(_0x3d5e2a,_0x115143){_0x3d5e2a=_0x3d5e2a-0x0;var _0x29a815=_0x2821[_0x3d5e2a];return _0x29a815;};'use strict';var Sequelize=require(_0x1282('0x0'));var moment=require(_0x1282('0x1'));module[_0x1282('0x2')]={'channel':{'type':Sequelize[_0x1282('0x3')]},'membername':{'type':Sequelize[_0x1282('0x3')]},'interface':{'type':Sequelize[_0x1282('0x3')]},'type':{'type':Sequelize[_0x1282('0x3')],'defaultValue':_0x1282('0x4'),'comment':_0x1282('0x5')},'duration':{'type':Sequelize[_0x1282('0x6')]},'enterAt':{'type':Sequelize[_0x1282('0x7')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x31e0cf){var _0x1843f2=moment(_0x31e0cf);var _0x293947=moment(this[_0x1282('0x8')](_0x1282('0x9')));var _0x1a8666=_0x1843f2[_0x1282('0xa')](_0x293947,_0x1282('0xb'));this['setDataValue'](_0x1282('0xc'),_0x31e0cf);this[_0x1282('0xd')](_0x1282('0xe'),_0x1a8666||null);}},'data1':{'type':Sequelize[_0x1282('0x3')],'comment':_0x1282('0xf')},'data2':{'type':Sequelize['STRING'],'comment':_0x1282('0x10')},'data3':{'type':Sequelize[_0x1282('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x1282('0x3')],'comment':_0x1282('0x11')},'data5':{'type':Sequelize['STRING'],'comment':_0x1282('0x12')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x1282('0x3')]}};
\ No newline at end of file
index 571ba26..46d82de 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(_0x41cdde,_0x4bd78c){var _0x2dec1e=function(_0xc4e978){while(--_0xc4e978){_0x41cdde['push'](_0x41cdde['shift']());}};_0x2dec1e(++_0x4bd78c);}(_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){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 _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(_0x329a5d,_0x4a886d){var _0x56d83d=function(_0x310cbc){while(--_0x310cbc){_0x329a5d['push'](_0x329a5d['shift']());}};_0x56d83d(++_0x4a886d);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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
index e3e0f90..bb3309e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa99d=['membername_interface','membername','interface','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','report_member'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xa99d,0xb3));var _0xda99=function(_0x39780c,_0x5782c9){_0x39780c=_0x39780c-0x0;var _0x53c19b=_0xa99d[_0x39780c];return _0x53c19b;};'use strict';var _=require(_0xda99('0x0'));var util=require(_0xda99('0x1'));var logger=require(_0xda99('0x2'))(_0xda99('0x3'));var moment=require('moment');var BPromise=require(_0xda99('0x4'));var rp=require(_0xda99('0x5'));var fs=require('fs');var path=require(_0xda99('0x6'));var rimraf=require(_0xda99('0x7'));var config=require(_0xda99('0x8'));var attributes=require(_0xda99('0x9'));module[_0xda99('0xa')]=function(_0x417bc8,_0x5f1a30){return _0x417bc8[_0xda99('0xb')]('MemberReport',attributes,{'tableName':_0xda99('0xc'),'paranoid':![],'indexes':[{'name':_0xda99('0xd'),'fields':[_0xda99('0xe'),_0xda99('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4139=['api','moment','bluebird','path','rimraf','../../config/environment','exports','define','MemberReport','report_member','membername_interface','interface','util','../../config/logger'];(function(_0x551506,_0x1e0d87){var _0x177fb8=function(_0x13b430){while(--_0x13b430){_0x551506['push'](_0x551506['shift']());}};_0x177fb8(++_0x1e0d87);}(_0x4139,0x140));var _0x9413=function(_0xe5edc6,_0x474b09){_0xe5edc6=_0xe5edc6-0x0;var _0x428277=_0x4139[_0xe5edc6];return _0x428277;};'use strict';var _=require('lodash');var util=require(_0x9413('0x0'));var logger=require(_0x9413('0x1'))(_0x9413('0x2'));var moment=require(_0x9413('0x3'));var BPromise=require(_0x9413('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9413('0x5'));var rimraf=require(_0x9413('0x6'));var config=require(_0x9413('0x7'));var attributes=require('./memberReport.attributes');module[_0x9413('0x8')]=function(_0x8c4ea5,_0x79c4f4){return _0x8c4ea5[_0x9413('0x9')](_0x9413('0xa'),attributes,{'tableName':_0x9413('0xb'),'paranoid':![],'indexes':[{'name':_0x9413('0xc'),'fields':['membername',_0x9413('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 69b2689..3da8d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed54=['debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','include','model','map','CreateMemberReport','create','body','UpdateMemberReport','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x1d81bf,_0x29d29f){var _0x2f8b37=function(_0x59f241){while(--_0x59f241){_0x1d81bf['push'](_0x1d81bf['shift']());}};_0x2f8b37(++_0x29d29f);}(_0xed54,0xfc));var _0x4ed5=function(_0x238501,_0x3adab5){_0x238501=_0x238501-0x0;var _0x36eb0f=_0xed54[_0x238501];return _0x36eb0f;};'use strict';var _=require('lodash');var util=require(_0x4ed5('0x0'));var moment=require(_0x4ed5('0x1'));var BPromise=require(_0x4ed5('0x2'));var rs=require(_0x4ed5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ed5('0x4'))['db'];var utils=require(_0x4ed5('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x4ed5('0x6'));var jayson=require(_0x4ed5('0x7'));var client=jayson[_0x4ed5('0x8')][_0x4ed5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32b0b3,_0x406871,_0x499db9){return new BPromise(function(_0x487945,_0x3993ac){return client[_0x4ed5('0xa')](_0x32b0b3,_0x499db9)[_0x4ed5('0xb')](function(_0xb74766){logger[_0x4ed5('0xc')]('MemberReport,\x20%s,\x20%s',_0x406871,_0x4ed5('0xd'));logger[_0x4ed5('0xe')](_0x4ed5('0xf'),_0x406871,_0x4ed5('0xd'),JSON[_0x4ed5('0x10')](_0xb74766));if(_0xb74766['error']){if(_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x12')]===0x1f4){logger[_0x4ed5('0x11')](_0x4ed5('0x13'),_0x406871,_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);return _0x3993ac(_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x406871,_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);return _0x487945(_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);}else{logger[_0x4ed5('0xc')](_0x4ed5('0x13'),_0x406871,_0x4ed5('0xd'));_0x487945(_0xb74766[_0x4ed5('0x15')][_0x4ed5('0x14')]);}})[_0x4ed5('0x16')](function(_0x168916){logger[_0x4ed5('0x11')](_0x4ed5('0x13'),_0x406871,_0x168916);_0x3993ac(_0x168916);});});}exports[_0x4ed5('0x17')]=function(_0x16a940){var _0x38c405=this;return new Promise(function(_0x584745,_0x1a9962){return db[_0x4ed5('0x18')][_0x4ed5('0x19')]({'raw':_0x16a940['options']?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1b')]===undefined?!![]:![]:!![],'where':_0x16a940[_0x4ed5('0x1a')]?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1c')]||null:null,'attributes':_0x16a940[_0x4ed5('0x1a')]?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1d')]||null:null,'limit':_0x16a940['options']?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1e')]||null:null,'include':_0x16a940['options']?_0x16a940[_0x4ed5('0x1a')]['include']?_['map'](_0x16a940['options'][_0x4ed5('0x1f')],function(_0x506906){return{'model':db[_0x506906[_0x4ed5('0x20')]],'as':_0x506906['as'],'attributes':_0x506906[_0x4ed5('0x1d')],'include':_0x506906[_0x4ed5('0x1f')]?_[_0x4ed5('0x21')](_0x506906[_0x4ed5('0x1f')],function(_0x28667a){return{'model':db[_0x28667a[_0x4ed5('0x20')]],'as':_0x28667a['as'],'attributes':_0x28667a['attributes'],'include':_0x28667a[_0x4ed5('0x1f')]?_[_0x4ed5('0x21')](_0x28667a[_0x4ed5('0x1f')],function(_0x3a60bc){return{'model':db[_0x3a60bc[_0x4ed5('0x20')]],'as':_0x3a60bc['as'],'attributes':_0x3a60bc['attributes']};}):[]};}):[]};}):[]:[]})[_0x4ed5('0xb')](function(_0x204be7){logger[_0x4ed5('0xc')]('GetMemberReport',_0x16a940);logger[_0x4ed5('0xe')]('GetMemberReport',_0x16a940,JSON['stringify'](_0x204be7));_0x584745(_0x204be7);})[_0x4ed5('0x16')](function(_0x18d3d0){logger['error'](_0x4ed5('0x17'),_0x18d3d0[_0x4ed5('0x14')],_0x16a940);_0x1a9962(_0x38c405['error'](0x1f4,_0x18d3d0['message']));});});};exports[_0x4ed5('0x22')]=function(_0x34b359){var _0x46fb07=this;return new Promise(function(_0x2f0690,_0x5ee3b2){return db[_0x4ed5('0x18')][_0x4ed5('0x23')](_0x34b359[_0x4ed5('0x24')],{'raw':_0x34b359[_0x4ed5('0x1a')]?_0x34b359['options'][_0x4ed5('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x48ad4f){logger[_0x4ed5('0xc')](_0x4ed5('0x22'),_0x34b359);logger['debug']('CreateMemberReport',_0x34b359,JSON[_0x4ed5('0x10')](_0x48ad4f));_0x2f0690(_0x48ad4f);})[_0x4ed5('0x16')](function(_0x2d97d8){logger['error'](_0x4ed5('0x22'),_0x2d97d8[_0x4ed5('0x14')],_0x34b359);_0x5ee3b2(_0x46fb07[_0x4ed5('0x11')](0x1f4,_0x2d97d8['message']));});});};exports['UpdateMemberReport']=function(_0x5e0f98){var _0x38f0ff=this;return new Promise(function(_0x2764b2,_0x4e8c36){return db[_0x4ed5('0x18')]['update'](_0x5e0f98['body'],{'raw':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98['options'][_0x4ed5('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98[_0x4ed5('0x1a')][_0x4ed5('0x1c')]||null:null,'attributes':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98[_0x4ed5('0x1a')][_0x4ed5('0x1d')]||null:null,'limit':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98[_0x4ed5('0x1a')]['limit']||null:null})[_0x4ed5('0xb')](function(_0x16e677){logger[_0x4ed5('0xc')]('UpdateMemberReport',_0x5e0f98);logger['debug']('UpdateMemberReport',_0x5e0f98,JSON[_0x4ed5('0x10')](_0x16e677));_0x2764b2(_0x16e677);})['catch'](function(_0x4e33b1){logger[_0x4ed5('0x11')](_0x4ed5('0x25'),_0x4e33b1[_0x4ed5('0x14')],_0x5e0f98);_0x4e8c36(_0x38f0ff[_0x4ed5('0x11')](0x1f4,_0x4e33b1[_0x4ed5('0x14')]));});});};
\ No newline at end of file
+var _0xfb8f=['GetMemberReport','MemberReport','findAll','options','where','include','map','attributes','CreateMemberReport','create','body','raw','stringify','UpdateMemberReport','update','limit','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch'];(function(_0x253586,_0x17ad59){var _0x4cc695=function(_0xa37fc7){while(--_0xa37fc7){_0x253586['push'](_0x253586['shift']());}};_0x4cc695(++_0x17ad59);}(_0xfb8f,0x18c));var _0xffb8=function(_0x14b49d,_0x1d6a8){_0x14b49d=_0x14b49d-0x0;var _0x1b4260=_0xfb8f[_0x14b49d];return _0x1b4260;};'use strict';var _=require('lodash');var util=require(_0xffb8('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xffb8('0x1'));var fs=require('fs');var Redis=require(_0xffb8('0x2'));var db=require(_0xffb8('0x3'))['db'];var utils=require(_0xffb8('0x4'));var logger=require(_0xffb8('0x5'))('rpc');var config=require(_0xffb8('0x6'));var jayson=require(_0xffb8('0x7'));var client=jayson[_0xffb8('0x8')][_0xffb8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5a70ab,_0x57a38f,_0x33495b){return new BPromise(function(_0xb71c21,_0x2b892a){return client[_0xffb8('0xa')](_0x5a70ab,_0x33495b)[_0xffb8('0xb')](function(_0x487759){logger['info'](_0xffb8('0xc'),_0x57a38f,_0xffb8('0xd'));logger[_0xffb8('0xe')](_0xffb8('0xf'),_0x57a38f,_0xffb8('0xd'),JSON['stringify'](_0x487759));if(_0x487759[_0xffb8('0x10')]){if(_0x487759[_0xffb8('0x10')][_0xffb8('0x11')]===0x1f4){logger[_0xffb8('0x10')](_0xffb8('0xc'),_0x57a38f,_0x487759['error'][_0xffb8('0x12')]);return _0x2b892a(_0x487759[_0xffb8('0x10')][_0xffb8('0x12')]);}logger['error'](_0xffb8('0xc'),_0x57a38f,_0x487759['error']['message']);return _0xb71c21(_0x487759[_0xffb8('0x10')][_0xffb8('0x12')]);}else{logger[_0xffb8('0x13')](_0xffb8('0xc'),_0x57a38f,_0xffb8('0xd'));_0xb71c21(_0x487759[_0xffb8('0x14')][_0xffb8('0x12')]);}})[_0xffb8('0x15')](function(_0x1a310e){logger['error']('MemberReport,\x20%s,\x20%s',_0x57a38f,_0x1a310e);_0x2b892a(_0x1a310e);});});}exports[_0xffb8('0x16')]=function(_0x514cba){var _0x568512=this;return new Promise(function(_0x506284,_0x50754f){return db[_0xffb8('0x17')][_0xffb8('0x18')]({'raw':_0x514cba[_0xffb8('0x19')]?_0x514cba[_0xffb8('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x514cba[_0xffb8('0x19')]?_0x514cba[_0xffb8('0x19')][_0xffb8('0x1a')]||null:null,'attributes':_0x514cba['options']?_0x514cba[_0xffb8('0x19')]['attributes']||null:null,'limit':_0x514cba[_0xffb8('0x19')]?_0x514cba[_0xffb8('0x19')]['limit']||null:null,'include':_0x514cba[_0xffb8('0x19')]?_0x514cba[_0xffb8('0x19')][_0xffb8('0x1b')]?_[_0xffb8('0x1c')](_0x514cba[_0xffb8('0x19')][_0xffb8('0x1b')],function(_0x237726){return{'model':db[_0x237726['model']],'as':_0x237726['as'],'attributes':_0x237726[_0xffb8('0x1d')],'include':_0x237726['include']?_[_0xffb8('0x1c')](_0x237726[_0xffb8('0x1b')],function(_0x59fa17){return{'model':db[_0x59fa17['model']],'as':_0x59fa17['as'],'attributes':_0x59fa17[_0xffb8('0x1d')],'include':_0x59fa17[_0xffb8('0x1b')]?_['map'](_0x59fa17[_0xffb8('0x1b')],function(_0x457bfa){return{'model':db[_0x457bfa['model']],'as':_0x457bfa['as'],'attributes':_0x457bfa[_0xffb8('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5eeba5){logger[_0xffb8('0x13')](_0xffb8('0x16'),_0x514cba);logger[_0xffb8('0xe')]('GetMemberReport',_0x514cba,JSON['stringify'](_0x5eeba5));_0x506284(_0x5eeba5);})[_0xffb8('0x15')](function(_0x2562fa){logger[_0xffb8('0x10')](_0xffb8('0x16'),_0x2562fa[_0xffb8('0x12')],_0x514cba);_0x50754f(_0x568512[_0xffb8('0x10')](0x1f4,_0x2562fa['message']));});});};exports[_0xffb8('0x1e')]=function(_0x4eb894){var _0x14680d=this;return new Promise(function(_0x20986b,_0x5ce2ca){return db[_0xffb8('0x17')][_0xffb8('0x1f')](_0x4eb894[_0xffb8('0x20')],{'raw':_0x4eb894[_0xffb8('0x19')]?_0x4eb894[_0xffb8('0x19')][_0xffb8('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x23eea3){logger[_0xffb8('0x13')](_0xffb8('0x1e'),_0x4eb894);logger[_0xffb8('0xe')](_0xffb8('0x1e'),_0x4eb894,JSON[_0xffb8('0x22')](_0x23eea3));_0x20986b(_0x23eea3);})[_0xffb8('0x15')](function(_0x359c84){logger['error']('CreateMemberReport',_0x359c84['message'],_0x4eb894);_0x5ce2ca(_0x14680d[_0xffb8('0x10')](0x1f4,_0x359c84[_0xffb8('0x12')]));});});};exports[_0xffb8('0x23')]=function(_0x4828e4){var _0x3461fc=this;return new Promise(function(_0x1b9191,_0x4eb022){return db[_0xffb8('0x17')][_0xffb8('0x24')](_0x4828e4['body'],{'raw':_0x4828e4['options']?_0x4828e4[_0xffb8('0x19')][_0xffb8('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4828e4['options']?_0x4828e4[_0xffb8('0x19')][_0xffb8('0x1a')]||null:null,'attributes':_0x4828e4['options']?_0x4828e4[_0xffb8('0x19')][_0xffb8('0x1d')]||null:null,'limit':_0x4828e4[_0xffb8('0x19')]?_0x4828e4[_0xffb8('0x19')][_0xffb8('0x25')]||null:null})[_0xffb8('0xb')](function(_0x265735){logger['info']('UpdateMemberReport',_0x4828e4);logger[_0xffb8('0xe')](_0xffb8('0x23'),_0x4828e4,JSON['stringify'](_0x265735));_0x1b9191(_0x265735);})['catch'](function(_0x214d18){logger[_0xffb8('0x10')]('UpdateMemberReport',_0x214d18[_0xffb8('0x12')],_0x4828e4);_0x4eb022(_0x3461fc[_0xffb8('0x10')](0x1f4,_0x214d18[_0xffb8('0x12')]));});});};
\ No newline at end of file
index 400a56f..f8b3583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x442e=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./migration.controller','get','index','exports','util'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x442e,0x133));var _0xe442=function(_0x31620d,_0x5cd3b1){_0x31620d=_0x31620d-0x0;var _0x72072a=_0x442e[_0x31620d];return _0x72072a;};'use strict';var multer=require('multer');var util=require(_0xe442('0x0'));var path=require('path');var timeout=require(_0xe442('0x1'));var express=require(_0xe442('0x2'));var router=express[_0xe442('0x3')]();var fs_extra=require(_0xe442('0x4'));var auth=require(_0xe442('0x5'));var interaction=require(_0xe442('0x6'));var config=require('../../config/environment');var controller=require(_0xe442('0x7'));router[_0xe442('0x8')]('/',controller[_0xe442('0x9')]);module[_0xe442('0xa')]=router;
\ No newline at end of file
+var _0x0f50=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get'];(function(_0x50e1b1,_0xd6510b){var _0x446881=function(_0x1070f5){while(--_0x1070f5){_0x50e1b1['push'](_0x50e1b1['shift']());}};_0x446881(++_0xd6510b);}(_0x0f50,0x6f));var _0x00f5=function(_0x185911,_0x123fd6){_0x185911=_0x185911-0x0;var _0x146e3b=_0x0f50[_0x185911];return _0x146e3b;};'use strict';var multer=require('multer');var util=require(_0x00f5('0x0'));var path=require(_0x00f5('0x1'));var timeout=require(_0x00f5('0x2'));var express=require(_0x00f5('0x3'));var router=express[_0x00f5('0x4')]();var fs_extra=require(_0x00f5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x00f5('0x6'));var config=require(_0x00f5('0x7'));var controller=require(_0x00f5('0x8'));router[_0x00f5('0x9')]('/',controller['index']);module[_0x00f5('0xa')]=router;
\ No newline at end of file
index aae10cf..419c3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583a=['exports','STRING','version'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x583a,0x117));var _0xa583=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0x583a[_0x4c1ec2];return _0x3f6f1c;};'use strict';var Sequelize=require('sequelize');module[_0xa583('0x0')]={'version':{'type':Sequelize[_0xa583('0x1')],'unique':_0xa583('0x2')}};
\ No newline at end of file
+var _0x9c22=['STRING','version'];(function(_0x28656f,_0x31fc90){var _0x4546b9=function(_0x3600d9){while(--_0x3600d9){_0x28656f['push'](_0x28656f['shift']());}};_0x4546b9(++_0x31fc90);}(_0x9c22,0x1ea));var _0x29c2=function(_0x3245f7,_0x26bfad){_0x3245f7=_0x3245f7-0x0;var _0x472f77=_0x9c22[_0x3245f7];return _0x472f77;};'use strict';var Sequelize=require('sequelize');module['exports']={'version':{'type':Sequelize[_0x29c2('0x0')],'unique':_0x29c2('0x1')}};
\ No newline at end of file
index 7246f2f..662f3e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52a=['squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','Migration','type','key','model','map','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd52a,0x182));var _0xad52=function(_0x382ee2,_0x49038a){_0x382ee2=_0x382ee2-0x0;var _0x225b32=_0xd52a[_0x382ee2];return _0x225b32;};'use strict';var emlformat=require(_0xad52('0x0'));var rimraf=require(_0xad52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xad52('0x2'));var rp=require(_0xad52('0x3'));var moment=require(_0xad52('0x4'));var BPromise=require(_0xad52('0x5'));var Mustache=require('mustache');var util=require(_0xad52('0x6'));var path=require(_0xad52('0x7'));var sox=require('sox');var csv=require(_0xad52('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xad52('0x9'));var _=require('lodash');var squel=require(_0xad52('0xa'));var crypto=require(_0xad52('0xb'));var jsforce=require(_0xad52('0xc'));var deskjs=require(_0xad52('0xd'));var toCsv=require('to-csv');var querystring=require(_0xad52('0xe'));var Papa=require(_0xad52('0xf'));var Redis=require('ioredis');var authService=require(_0xad52('0x10'));var qs=require(_0xad52('0x11'));var as=require(_0xad52('0x12'));var hardwareService=require(_0xad52('0x13'));var logger=require(_0xad52('0x14'))(_0xad52('0x15'));var utils=require(_0xad52('0x16'));var config=require(_0xad52('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xad52('0x18'))['db'];function respondWithStatusCode(_0x264fbe,_0x64fbcb){_0x64fbcb=_0x64fbcb||0xcc;return function(_0xad5098){if(_0xad5098){return _0x264fbe[_0xad52('0x19')](_0x64fbcb);}return _0x264fbe[_0xad52('0x1a')](_0x64fbcb)[_0xad52('0x1b')]();};}function respondWithResult(_0x5688cc,_0x565136){_0x565136=_0x565136||0xc8;return function(_0x234f11){if(_0x234f11){return _0x5688cc['status'](_0x565136)['json'](_0x234f11);}};}function respondWithFilteredResult(_0xbb3b9,_0x3edde0){return function(_0x534c61){if(_0x534c61){var _0x5515d6=typeof _0x3edde0['offset']===_0xad52('0x1c')&&typeof _0x3edde0[_0xad52('0x1d')]===_0xad52('0x1c');var _0x1846eb=_0x534c61[_0xad52('0x1e')];var _0xa946a7=_0x5515d6?0x0:_0x3edde0['offset'];var _0x1c72de=_0x5515d6?_0x534c61[_0xad52('0x1e')]:_0x3edde0[_0xad52('0x1f')]+_0x3edde0[_0xad52('0x1d')];var _0x3fc17c;if(_0x1c72de>=_0x1846eb){_0x1c72de=_0x1846eb;_0x3fc17c=0xc8;}else{_0x3fc17c=0xce;}_0xbb3b9[_0xad52('0x1a')](_0x3fc17c);return _0xbb3b9[_0xad52('0x20')](_0xad52('0x21'),_0xa946a7+'-'+_0x1c72de+'/'+_0x1846eb)['json'](_0x534c61);}return null;};}function patchUpdates(_0x5af152){return function(_0x4d0be3){try{jsonpatch[_0xad52('0x22')](_0x4d0be3,_0x5af152,!![]);}catch(_0x2ea547){return BPromise[_0xad52('0x23')](_0x2ea547);}return _0x4d0be3[_0xad52('0x24')]();};}function saveUpdates(_0x159078,_0x38c329){return function(_0x490e48){if(_0x490e48){return _0x490e48[_0xad52('0x25')](_0x159078)[_0xad52('0x26')](function(_0x169682){return _0x169682;});}return null;};}function removeEntity(_0x252ab7,_0x5a441c){return function(_0x2cfb8e){if(_0x2cfb8e){return _0x2cfb8e[_0xad52('0x27')]()[_0xad52('0x26')](function(){_0x252ab7['status'](0xcc)[_0xad52('0x1b')]();});}};}function handleEntityNotFound(_0x3cdd8f,_0x4c4520){return function(_0x4ab4ca){if(!_0x4ab4ca){_0x3cdd8f[_0xad52('0x19')](0x194);}return _0x4ab4ca;};}function handleError(_0x5c1f60,_0x72cc93){_0x72cc93=_0x72cc93||0x1f4;return function(_0x5e63d8){logger[_0xad52('0x28')](_0x5e63d8['stack']);if(_0x5e63d8['name']){delete _0x5e63d8[_0xad52('0x29')];}_0x5c1f60[_0xad52('0x1a')](_0x72cc93)[_0xad52('0x2a')](_0x5e63d8);};}exports[_0xad52('0x2b')]=function(_0x2fc995,_0x3980fe){var _0x2a6041={},_0x209949={},_0x32fc22={'count':0x0,'rows':[]};var _0x5bd54b=_['map'](db[_0xad52('0x2c')]['rawAttributes'],function(_0x49f222){return{'name':_0x49f222['fieldName'],'type':_0x49f222[_0xad52('0x2d')][_0xad52('0x2e')]};});_0x209949[_0xad52('0x2f')]=_[_0xad52('0x30')](_0x5bd54b,_0xad52('0x29'));_0x209949['query']=_[_0xad52('0x31')](_0x2fc995[_0xad52('0x32')]);_0x209949[_0xad52('0x33')]=_[_0xad52('0x34')](_0x209949[_0xad52('0x2f')],_0x209949[_0xad52('0x32')]);_0x2a6041['attributes']=_[_0xad52('0x34')](_0x209949[_0xad52('0x2f')],qs['fields'](_0x2fc995[_0xad52('0x32')]['fields']));_0x2a6041[_0xad52('0x35')]=_0x2a6041[_0xad52('0x35')]['length']?_0x2a6041['attributes']:_0x209949[_0xad52('0x2f')];if(!_0x2fc995['query'][_0xad52('0x36')](_0xad52('0x37'))){_0x2a6041[_0xad52('0x1d')]=qs[_0xad52('0x1d')](_0x2fc995['query'][_0xad52('0x1d')]);_0x2a6041['offset']=qs['offset'](_0x2fc995[_0xad52('0x32')][_0xad52('0x1f')]);}_0x2a6041[_0xad52('0x38')]=qs[_0xad52('0x39')](_0x2fc995[_0xad52('0x32')][_0xad52('0x39')]);_0x2a6041[_0xad52('0x3a')]=qs['filters'](_[_0xad52('0x3b')](_0x2fc995[_0xad52('0x32')],_0x209949['filters']),_0x5bd54b);if(_0x2fc995['query'][_0xad52('0x3c')]){_0x2a6041[_0xad52('0x3a')]=_[_0xad52('0x3d')](_0x2a6041[_0xad52('0x3a')],{'$or':_['map'](_0x5bd54b,function(_0x27a361){if(_0x27a361[_0xad52('0x2d')]!==_0xad52('0x3e')){var _0x3f6cde={};_0x3f6cde[_0x27a361[_0xad52('0x29')]]={'$like':'%'+_0x2fc995['query'][_0xad52('0x3c')]+'%'};return _0x3f6cde;}})});}_0x2a6041=_[_0xad52('0x3d')]({},_0x2a6041,_0x2fc995[_0xad52('0x3f')]);var _0x3649d2={'where':_0x2a6041[_0xad52('0x3a')]};return db[_0xad52('0x2c')]['count'](_0x3649d2)[_0xad52('0x26')](function(_0x3d30b9){_0x32fc22[_0xad52('0x1e')]=_0x3d30b9;if(_0x2fc995['query'][_0xad52('0x40')]){_0x2a6041['include']=[{'all':!![]}];}return db[_0xad52('0x2c')]['findAll'](_0x2a6041);})[_0xad52('0x26')](function(_0x558f8b){_0x32fc22[_0xad52('0x41')]=_0x558f8b;return _0x32fc22;})[_0xad52('0x26')](respondWithFilteredResult(_0x3980fe,_0x2a6041))['catch'](handleError(_0x3980fe,null));};
\ No newline at end of file
+var _0xefe9=['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','api','../../config/utils','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','map','Migration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','eml-format','zip-dir','request-promise','moment','mustache'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xefe9,0x83));var _0x9efe=function(_0x54859a,_0x19c645){_0x54859a=_0x54859a-0x0;var _0x58c213=_0xefe9[_0x54859a];return _0x58c213;};'use strict';var emlformat=require(_0x9efe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9efe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9efe('0x2'));var moment=require(_0x9efe('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9efe('0x4'));var util=require('util');var path=require(_0x9efe('0x5'));var sox=require(_0x9efe('0x6'));var csv=require(_0x9efe('0x7'));var ejs=require(_0x9efe('0x8'));var fs=require('fs');var fs_extra=require(_0x9efe('0x9'));var _=require(_0x9efe('0xa'));var squel=require(_0x9efe('0xb'));var crypto=require('crypto');var jsforce=require(_0x9efe('0xc'));var deskjs=require(_0x9efe('0xd'));var toCsv=require(_0x9efe('0x7'));var querystring=require(_0x9efe('0xe'));var Papa=require(_0x9efe('0xf'));var Redis=require(_0x9efe('0x10'));var authService=require(_0x9efe('0x11'));var qs=require(_0x9efe('0x12'));var as=require(_0x9efe('0x13'));var hardwareService=require(_0x9efe('0x14'));var logger=require('../../config/logger')(_0x9efe('0x15'));var utils=require(_0x9efe('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a7dad,_0x412582){_0x412582=_0x412582||0xcc;return function(_0x249453){if(_0x249453){return _0x2a7dad[_0x9efe('0x17')](_0x412582);}return _0x2a7dad[_0x9efe('0x18')](_0x412582)[_0x9efe('0x19')]();};}function respondWithResult(_0x548b7f,_0xc0c734){_0xc0c734=_0xc0c734||0xc8;return function(_0x54df74){if(_0x54df74){return _0x548b7f[_0x9efe('0x18')](_0xc0c734)[_0x9efe('0x1a')](_0x54df74);}};}function respondWithFilteredResult(_0x34cf83,_0x577595){return function(_0x46d54b){if(_0x46d54b){var _0x31e30b=typeof _0x577595[_0x9efe('0x1b')]===_0x9efe('0x1c')&&typeof _0x577595['limit']==='undefined';var _0x1eacf6=_0x46d54b[_0x9efe('0x1d')];var _0x5ad3fa=_0x31e30b?0x0:_0x577595['offset'];var _0x505eff=_0x31e30b?_0x46d54b[_0x9efe('0x1d')]:_0x577595['offset']+_0x577595['limit'];var _0x2f00cd;if(_0x505eff>=_0x1eacf6){_0x505eff=_0x1eacf6;_0x2f00cd=0xc8;}else{_0x2f00cd=0xce;}_0x34cf83[_0x9efe('0x18')](_0x2f00cd);return _0x34cf83[_0x9efe('0x1e')](_0x9efe('0x1f'),_0x5ad3fa+'-'+_0x505eff+'/'+_0x1eacf6)[_0x9efe('0x1a')](_0x46d54b);}return null;};}function patchUpdates(_0x3a1f41){return function(_0x24d1be){try{jsonpatch[_0x9efe('0x20')](_0x24d1be,_0x3a1f41,!![]);}catch(_0x5841d3){return BPromise[_0x9efe('0x21')](_0x5841d3);}return _0x24d1be[_0x9efe('0x22')]();};}function saveUpdates(_0x262570,_0x99f380){return function(_0x406ea2){if(_0x406ea2){return _0x406ea2[_0x9efe('0x23')](_0x262570)[_0x9efe('0x24')](function(_0x5db70a){return _0x5db70a;});}return null;};}function removeEntity(_0x9051f,_0x15a511){return function(_0x2ec151){if(_0x2ec151){return _0x2ec151['destroy']()[_0x9efe('0x24')](function(){_0x9051f['status'](0xcc)[_0x9efe('0x19')]();});}};}function handleEntityNotFound(_0x52ed6e,_0x37ade3){return function(_0x4a733a){if(!_0x4a733a){_0x52ed6e[_0x9efe('0x17')](0x194);}return _0x4a733a;};}function handleError(_0x36e81e,_0x9fd63b){_0x9fd63b=_0x9fd63b||0x1f4;return function(_0x3311ad){logger['error'](_0x3311ad[_0x9efe('0x25')]);if(_0x3311ad[_0x9efe('0x26')]){delete _0x3311ad[_0x9efe('0x26')];}_0x36e81e['status'](_0x9fd63b)[_0x9efe('0x27')](_0x3311ad);};}exports['index']=function(_0x3d0f6c,_0x537419){var _0x5e07cb={},_0x160869={},_0x43f07f={'count':0x0,'rows':[]};var _0x424a72=_[_0x9efe('0x28')](db[_0x9efe('0x29')][_0x9efe('0x2a')],function(_0x387fb4){return{'name':_0x387fb4[_0x9efe('0x2b')],'type':_0x387fb4[_0x9efe('0x2c')][_0x9efe('0x2d')]};});_0x160869[_0x9efe('0x2e')]=_[_0x9efe('0x28')](_0x424a72,_0x9efe('0x26'));_0x160869[_0x9efe('0x2f')]=_[_0x9efe('0x30')](_0x3d0f6c[_0x9efe('0x2f')]);_0x160869[_0x9efe('0x31')]=_[_0x9efe('0x32')](_0x160869[_0x9efe('0x2e')],_0x160869[_0x9efe('0x2f')]);_0x5e07cb['attributes']=_[_0x9efe('0x32')](_0x160869[_0x9efe('0x2e')],qs[_0x9efe('0x33')](_0x3d0f6c[_0x9efe('0x2f')][_0x9efe('0x33')]));_0x5e07cb[_0x9efe('0x34')]=_0x5e07cb[_0x9efe('0x34')][_0x9efe('0x35')]?_0x5e07cb[_0x9efe('0x34')]:_0x160869[_0x9efe('0x2e')];if(!_0x3d0f6c[_0x9efe('0x2f')][_0x9efe('0x36')](_0x9efe('0x37'))){_0x5e07cb[_0x9efe('0x38')]=qs[_0x9efe('0x38')](_0x3d0f6c[_0x9efe('0x2f')][_0x9efe('0x38')]);_0x5e07cb[_0x9efe('0x1b')]=qs['offset'](_0x3d0f6c['query'][_0x9efe('0x1b')]);}_0x5e07cb[_0x9efe('0x39')]=qs['sort'](_0x3d0f6c[_0x9efe('0x2f')][_0x9efe('0x3a')]);_0x5e07cb[_0x9efe('0x3b')]=qs[_0x9efe('0x31')](_[_0x9efe('0x3c')](_0x3d0f6c[_0x9efe('0x2f')],_0x160869['filters']),_0x424a72);if(_0x3d0f6c[_0x9efe('0x2f')][_0x9efe('0x3d')]){_0x5e07cb[_0x9efe('0x3b')]=_[_0x9efe('0x3e')](_0x5e07cb[_0x9efe('0x3b')],{'$or':_[_0x9efe('0x28')](_0x424a72,function(_0x2f557a){if(_0x2f557a['type']!=='VIRTUAL'){var _0x546b88={};_0x546b88[_0x2f557a[_0x9efe('0x26')]]={'$like':'%'+_0x3d0f6c[_0x9efe('0x2f')][_0x9efe('0x3d')]+'%'};return _0x546b88;}})});}_0x5e07cb=_['merge']({},_0x5e07cb,_0x3d0f6c[_0x9efe('0x3f')]);var _0x18afe9={'where':_0x5e07cb['where']};return db['Migration'][_0x9efe('0x1d')](_0x18afe9)[_0x9efe('0x24')](function(_0x7f007){_0x43f07f[_0x9efe('0x1d')]=_0x7f007;if(_0x3d0f6c['query'][_0x9efe('0x40')]){_0x5e07cb[_0x9efe('0x41')]=[{'all':!![]}];}return db[_0x9efe('0x29')][_0x9efe('0x42')](_0x5e07cb);})[_0x9efe('0x24')](function(_0xc1910d){_0x43f07f['rows']=_0xc1910d;return _0x43f07f;})[_0x9efe('0x24')](respondWithFilteredResult(_0x537419,_0x5e07cb))[_0x9efe('0x43')](handleError(_0x537419,null));};
\ No newline at end of file
index a43b884..b37a6e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd410=['Migration','lodash','api','bluebird','path','rimraf','../../config/environment','./migration.attributes','exports','define'];(function(_0x40b086,_0x582c4d){var _0x468e43=function(_0x409298){while(--_0x409298){_0x40b086['push'](_0x40b086['shift']());}};_0x468e43(++_0x582c4d);}(_0xd410,0x123));var _0x0d41=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xd410[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0x0d41('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0d41('0x1'));var moment=require('moment');var BPromise=require(_0x0d41('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d41('0x3'));var rimraf=require(_0x0d41('0x4'));var config=require(_0x0d41('0x5'));var attributes=require(_0x0d41('0x6'));module[_0x0d41('0x7')]=function(_0x352c77,_0x5c93ed){return _0x352c77[_0x0d41('0x8')](_0x0d41('0x9'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd073=['Migration','lodash','../../config/logger','api','moment','bluebird','path','rimraf','exports','define'];(function(_0x301064,_0x1b5aa3){var _0x294f02=function(_0x39f98b){while(--_0x39f98b){_0x301064['push'](_0x301064['shift']());}};_0x294f02(++_0x1b5aa3);}(_0xd073,0x191));var _0x3d07=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xd073[_0x432682];return _0x463d05;};'use strict';var _=require(_0x3d07('0x0'));var util=require('util');var logger=require(_0x3d07('0x1'))(_0x3d07('0x2'));var moment=require(_0x3d07('0x3'));var BPromise=require(_0x3d07('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3d07('0x5'));var rimraf=require(_0x3d07('0x6'));var config=require('../../config/environment');var attributes=require('./migration.attributes');module[_0x3d07('0x7')]=function(_0xee0d5d,_0x2b4237){return _0xee0d5d[_0x3d07('0x8')](_0x3d07('0x9'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5cf76e8..675a109 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','Migration,\x20%s,\x20%s','message','request\x20sent','result','catch','util','moment'];(function(_0x13e241,_0x391629){var _0x3fb33e=function(_0x5d4560){while(--_0x5d4560){_0x13e241['push'](_0x13e241['shift']());}};_0x3fb33e(++_0x391629);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x2bd8cb,_0x29815b){_0x2bd8cb=_0x2bd8cb-0x0;var _0x245b03=_0xa5fa[_0x2bd8cb];return _0x245b03;};'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')]('Migration,\x20%s,\x20%s',_0x302138,'request\x20sent');logger[_0xaa5f('0xd')]('Migration,\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 _0xe9f9=['jayson/promise','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xe9f9,0x174));var _0x9e9f=function(_0x48e3e0,_0x4ffba4){_0x48e3e0=_0x48e3e0-0x0;var _0x28dd04=_0xe9f9[_0x48e3e0];return _0x28dd04;};'use strict';var _=require(_0x9e9f('0x0'));var util=require('util');var moment=require(_0x9e9f('0x1'));var BPromise=require(_0x9e9f('0x2'));var rs=require(_0x9e9f('0x3'));var fs=require('fs');var Redis=require(_0x9e9f('0x4'));var db=require(_0x9e9f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9e9f('0x6'))('rpc');var config=require(_0x9e9f('0x7'));var jayson=require(_0x9e9f('0x8'));var client=jayson['client'][_0x9e9f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x54f87c,_0x310be8,_0x661886){return new BPromise(function(_0x10d43b,_0x5256b3){return client[_0x9e9f('0xa')](_0x54f87c,_0x661886)[_0x9e9f('0xb')](function(_0x2e1e8e){logger[_0x9e9f('0xc')](_0x9e9f('0xd'),_0x310be8,_0x9e9f('0xe'));logger['debug'](_0x9e9f('0xf'),_0x310be8,_0x9e9f('0xe'),JSON[_0x9e9f('0x10')](_0x2e1e8e));if(_0x2e1e8e['error']){if(_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x12')]===0x1f4){logger[_0x9e9f('0x11')](_0x9e9f('0xd'),_0x310be8,_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x13')]);return _0x5256b3(_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x13')]);}logger[_0x9e9f('0x11')]('Migration,\x20%s,\x20%s',_0x310be8,_0x2e1e8e['error'][_0x9e9f('0x13')]);return _0x10d43b(_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x13')]);}else{logger[_0x9e9f('0xc')](_0x9e9f('0xd'),_0x310be8,_0x9e9f('0xe'));_0x10d43b(_0x2e1e8e['result'][_0x9e9f('0x13')]);}})['catch'](function(_0x38897c){logger['error']('Migration,\x20%s,\x20%s',_0x310be8,_0x38897c);_0x5256b3(_0x38897c);});});}
\ No newline at end of file
index 208fd78..9ee155a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a2a=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy'];(function(_0x457062,_0x1893df){var _0x4df1a9=function(_0x5b9652){while(--_0x5b9652){_0x457062['push'](_0x457062['shift']());}};_0x4df1a9(++_0x1893df);}(_0x1a2a,0xd3));var _0xa1a2=function(_0x49bf38,_0x42c116){_0x49bf38=_0x49bf38-0x0;var _0xb76377=_0x1a2a[_0x49bf38];return _0xb76377;};'use strict';var multer=require(_0xa1a2('0x0'));var util=require(_0xa1a2('0x1'));var path=require(_0xa1a2('0x2'));var timeout=require(_0xa1a2('0x3'));var express=require('express');var router=express[_0xa1a2('0x4')]();var fs_extra=require(_0xa1a2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa1a2('0x6'));var config=require(_0xa1a2('0x7'));var controller=require(_0xa1a2('0x8'));router[_0xa1a2('0x9')]('/',auth['isAuthenticated'](),controller[_0xa1a2('0xa')]);router['get'](_0xa1a2('0xb'),auth['isAuthenticated'](),controller[_0xa1a2('0xc')]);router[_0xa1a2('0xd')]('/',auth[_0xa1a2('0xe')](),controller[_0xa1a2('0xf')]);router[_0xa1a2('0x10')](_0xa1a2('0xb'),auth['isAuthenticated'](),controller[_0xa1a2('0x11')]);router[_0xa1a2('0x12')](_0xa1a2('0xb'),auth[_0xa1a2('0xe')](),controller[_0xa1a2('0x13')]);module[_0xa1a2('0x14')]=router;
\ No newline at end of file
+var _0x20de=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','post','create','/:id','delete'];(function(_0x15e91a,_0x470f80){var _0x3129b6=function(_0x406a39){while(--_0x406a39){_0x15e91a['push'](_0x15e91a['shift']());}};_0x3129b6(++_0x470f80);}(_0x20de,0x134));var _0xe20d=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0x20de[_0x20589d];return _0x422de9;};'use strict';var multer=require(_0xe20d('0x0'));var util=require('util');var path=require(_0xe20d('0x1'));var timeout=require(_0xe20d('0x2'));var express=require(_0xe20d('0x3'));var router=express[_0xe20d('0x4')]();var fs_extra=require(_0xe20d('0x5'));var auth=require(_0xe20d('0x6'));var interaction=require(_0xe20d('0x7'));var config=require(_0xe20d('0x8'));var controller=require(_0xe20d('0x9'));router[_0xe20d('0xa')]('/',auth[_0xe20d('0xb')](),controller['index']);router[_0xe20d('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe20d('0xc')]('/',auth[_0xe20d('0xb')](),controller[_0xe20d('0xd')]);router['put'](_0xe20d('0xe'),auth[_0xe20d('0xb')](),controller['update']);router[_0xe20d('0xf')](_0xe20d('0xe'),auth['isAuthenticated'](),controller[_0xe20d('0x10')]);module[_0xe20d('0x11')]=router;
\ No newline at end of file
index 490948d..6fe097b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3078=['externip','stun','turn','STRING','sequelize','exports','localnet'];(function(_0x42c66d,_0x3feb6d){var _0x4f2b5f=function(_0x401103){while(--_0x401103){_0x42c66d['push'](_0x42c66d['shift']());}};_0x4f2b5f(++_0x3feb6d);}(_0x3078,0x66));var _0x8307=function(_0xa599e2,_0x3046be){_0xa599e2=_0xa599e2-0x0;var _0x122f49=_0x3078[_0xa599e2];return _0x122f49;};'use strict';var Sequelize=require(_0x8307('0x0'));module[_0x8307('0x1')]={'type':{'type':Sequelize['ENUM'](_0x8307('0x2'),_0x8307('0x3'),_0x8307('0x4'),_0x8307('0x5'))},'value':{'type':Sequelize[_0x8307('0x6')]},'username':{'type':Sequelize[_0x8307('0x6')]},'password':{'type':Sequelize[_0x8307('0x6')]}};
\ No newline at end of file
+var _0x1b51=['turn','STRING','sequelize','exports','ENUM','localnet','externip','stun'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x1b51,0xea));var _0x11b5=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x1b51[_0x199572];return _0x13cfa3;};'use strict';var Sequelize=require(_0x11b5('0x0'));module[_0x11b5('0x1')]={'type':{'type':Sequelize[_0x11b5('0x2')](_0x11b5('0x3'),_0x11b5('0x4'),_0x11b5('0x5'),_0x11b5('0x6'))},'value':{'type':Sequelize[_0x11b5('0x7')]},'username':{'type':Sequelize[_0x11b5('0x7')]},'password':{'type':Sequelize[_0x11b5('0x7')]}};
\ No newline at end of file
index 794a012..6304694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4986=['destroy','server/files/templates/stun_multiple.ejs','/etc/asterisk/stun_xcally.conf','toLowerCase','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','end','stack','name','send','map','Network','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','include','findAll','rows','params','intersection','find','create','body','toUpperCase','STUN','readFileSync','root','utf8','Reload','join','server/files/templates/turn_multiple.ejs','render','writeFileSync','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','chan_sip.so','update','sequelize','transaction','TURN','format','/etc/asterisk/sip_xcally_%s.conf'];(function(_0x2bdbe0,_0x1a8198){var _0x397717=function(_0x4e525e){while(--_0x4e525e){_0x2bdbe0['push'](_0x2bdbe0['shift']());}};_0x397717(++_0x1a8198);}(_0x4986,0x6e));var _0x6498=function(_0xf7619f,_0x3c860a){_0xf7619f=_0xf7619f-0x0;var _0x398712=_0x4986[_0xf7619f];return _0x398712;};'use strict';var emlformat=require(_0x6498('0x0'));var rimraf=require(_0x6498('0x1'));var zipdir=require(_0x6498('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6498('0x3'));var BPromise=require(_0x6498('0x4'));var Mustache=require('mustache');var util=require(_0x6498('0x5'));var path=require(_0x6498('0x6'));var sox=require(_0x6498('0x7'));var csv=require(_0x6498('0x8'));var ejs=require(_0x6498('0x9'));var fs=require('fs');var fs_extra=require(_0x6498('0xa'));var _=require(_0x6498('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6498('0xc'));var deskjs=require(_0x6498('0xd'));var toCsv=require(_0x6498('0x8'));var querystring=require(_0x6498('0xe'));var Papa=require(_0x6498('0xf'));var Redis=require('ioredis');var authService=require(_0x6498('0x10'));var qs=require(_0x6498('0x11'));var as=require(_0x6498('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6498('0x13'));var utils=require('../../config/utils');var config=require(_0x6498('0x14'));var licenseUtil=require(_0x6498('0x15'));var db=require(_0x6498('0x16'))['db'];var jayson=require(_0x6498('0x17'));var client=jayson[_0x6498('0x18')][_0x6498('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x45b86e,_0x4eaf5d,_0x5e1e56,_0x4769ab){return new BPromise(function(_0xfde02b,_0x3ae8e5){var _0x3a076f=_0x4769ab||client;return _0x3a076f[_0x6498('0x1a')](_0x45b86e,_0x5e1e56)['then'](function(_0x318b75){logger[_0x6498('0x1b')](_0x6498('0x1c'),_0x4eaf5d,_0x6498('0x1d'));logger[_0x6498('0x1e')](_0x6498('0x1f'),_0x4eaf5d,_0x6498('0x1d'),JSON['stringify'](_0x318b75));if(_0x318b75[_0x6498('0x20')]){if(_0x318b75[_0x6498('0x20')][_0x6498('0x21')]===0x1f4){logger[_0x6498('0x20')](_0x6498('0x1c'),_0x4eaf5d,_0x318b75['error']['message']);return _0x3ae8e5(_0x318b75[_0x6498('0x20')][_0x6498('0x22')]);}logger[_0x6498('0x20')](_0x6498('0x1c'),_0x4eaf5d,_0x318b75[_0x6498('0x20')][_0x6498('0x22')]);return _0xfde02b(_0x318b75[_0x6498('0x20')][_0x6498('0x22')]);}else{logger[_0x6498('0x1b')](_0x6498('0x1c'),_0x4eaf5d,_0x6498('0x1d'));_0xfde02b(_0x318b75[_0x6498('0x23')][_0x6498('0x22')]);}})[_0x6498('0x24')](function(_0x554ed4){logger['error'](_0x6498('0x1c'),_0x4eaf5d,_0x554ed4);_0x3ae8e5(_0x554ed4);});});}function respondWithStatusCode(_0x514544,_0x46c3f7){_0x46c3f7=_0x46c3f7||0xcc;return function(_0x30d261){if(_0x30d261){return _0x514544[_0x6498('0x25')](_0x46c3f7);}return _0x514544[_0x6498('0x26')](_0x46c3f7)['end']();};}function respondWithResult(_0x5b6007,_0x43b1d2){_0x43b1d2=_0x43b1d2||0xc8;return function(_0x4f9d95){if(_0x4f9d95){return _0x5b6007[_0x6498('0x26')](_0x43b1d2)[_0x6498('0x27')](_0x4f9d95);}};}function respondWithFilteredResult(_0x41d43f,_0x271048){return function(_0x1ce28d){if(_0x1ce28d){var _0x3a976e=typeof _0x271048[_0x6498('0x28')]===_0x6498('0x29')&&typeof _0x271048[_0x6498('0x2a')]===_0x6498('0x29');var _0x660782=_0x1ce28d[_0x6498('0x2b')];var _0x64df19=_0x3a976e?0x0:_0x271048['offset'];var _0x12c9d2=_0x3a976e?_0x1ce28d[_0x6498('0x2b')]:_0x271048['offset']+_0x271048['limit'];var _0x4e93d1;if(_0x12c9d2>=_0x660782){_0x12c9d2=_0x660782;_0x4e93d1=0xc8;}else{_0x4e93d1=0xce;}_0x41d43f['status'](_0x4e93d1);return _0x41d43f[_0x6498('0x2c')](_0x6498('0x2d'),_0x64df19+'-'+_0x12c9d2+'/'+_0x660782)[_0x6498('0x27')](_0x1ce28d);}return null;};}function patchUpdates(_0x2696f9){return function(_0x576ab2){try{jsonpatch[_0x6498('0x2e')](_0x576ab2,_0x2696f9,!![]);}catch(_0x49a065){return BPromise['reject'](_0x49a065);}return _0x576ab2['save']();};}function saveUpdates(_0x565975,_0x28bac3){return function(_0x3e11bb){if(_0x3e11bb){return _0x3e11bb['update'](_0x565975)[_0x6498('0x2f')](function(_0x541271){return _0x541271;});}return null;};}function removeEntity(_0x420bb3,_0x23c651){return function(_0x4c5a32){if(_0x4c5a32){return _0x4c5a32['destroy']()[_0x6498('0x2f')](function(){_0x420bb3['status'](0xcc)[_0x6498('0x30')]();});}};}function handleEntityNotFound(_0x12fdb6,_0x5d3de5){return function(_0x45eb4f){if(!_0x45eb4f){_0x12fdb6['sendStatus'](0x194);}return _0x45eb4f;};}function handleError(_0xd0b96d,_0x340827){_0x340827=_0x340827||0x1f4;return function(_0x56739d){logger[_0x6498('0x20')](_0x56739d[_0x6498('0x31')]);if(_0x56739d[_0x6498('0x32')]){delete _0x56739d[_0x6498('0x32')];}_0xd0b96d['status'](_0x340827)[_0x6498('0x33')](_0x56739d);};}exports['index']=function(_0x2548b8,_0x5b5089){var _0x12c2c4={},_0x50179d={},_0x2411ee={'count':0x0,'rows':[]};var _0x231964=_[_0x6498('0x34')](db[_0x6498('0x35')][_0x6498('0x36')],function(_0x2b5e2d){return{'name':_0x2b5e2d[_0x6498('0x37')],'type':_0x2b5e2d['type'][_0x6498('0x38')]};});_0x50179d[_0x6498('0x39')]=_[_0x6498('0x34')](_0x231964,_0x6498('0x32'));_0x50179d[_0x6498('0x3a')]=_[_0x6498('0x3b')](_0x2548b8[_0x6498('0x3a')]);_0x50179d[_0x6498('0x3c')]=_['intersection'](_0x50179d[_0x6498('0x39')],_0x50179d[_0x6498('0x3a')]);_0x12c2c4[_0x6498('0x3d')]=_['intersection'](_0x50179d[_0x6498('0x39')],qs[_0x6498('0x3e')](_0x2548b8[_0x6498('0x3a')][_0x6498('0x3e')]));_0x12c2c4[_0x6498('0x3d')]=_0x12c2c4[_0x6498('0x3d')][_0x6498('0x3f')]?_0x12c2c4[_0x6498('0x3d')]:_0x50179d[_0x6498('0x39')];if(!_0x2548b8[_0x6498('0x3a')][_0x6498('0x40')](_0x6498('0x41'))){_0x12c2c4['limit']=qs['limit'](_0x2548b8['query'][_0x6498('0x2a')]);_0x12c2c4[_0x6498('0x28')]=qs[_0x6498('0x28')](_0x2548b8[_0x6498('0x3a')][_0x6498('0x28')]);}_0x12c2c4[_0x6498('0x42')]=qs[_0x6498('0x43')](_0x2548b8['query'][_0x6498('0x43')]);_0x12c2c4[_0x6498('0x44')]=qs[_0x6498('0x3c')](_[_0x6498('0x45')](_0x2548b8[_0x6498('0x3a')],_0x50179d[_0x6498('0x3c')]),_0x231964);if(_0x2548b8['query'][_0x6498('0x46')]){_0x12c2c4[_0x6498('0x44')]=_['merge'](_0x12c2c4['where'],{'$or':_[_0x6498('0x34')](_0x231964,function(_0x3d22bf){if(_0x3d22bf[_0x6498('0x47')]!=='VIRTUAL'){var _0x4fb005={};_0x4fb005[_0x3d22bf[_0x6498('0x32')]]={'$like':'%'+_0x2548b8['query'][_0x6498('0x46')]+'%'};return _0x4fb005;}})});}_0x12c2c4=_[_0x6498('0x48')]({},_0x12c2c4,_0x2548b8[_0x6498('0x49')]);var _0xc117ff={'where':_0x12c2c4[_0x6498('0x44')]};return db[_0x6498('0x35')]['count'](_0xc117ff)[_0x6498('0x2f')](function(_0x1e358c){_0x2411ee[_0x6498('0x2b')]=_0x1e358c;if(_0x2548b8[_0x6498('0x3a')]['includeAll']){_0x12c2c4[_0x6498('0x4a')]=[{'all':!![]}];}return db[_0x6498('0x35')][_0x6498('0x4b')](_0x12c2c4);})[_0x6498('0x2f')](function(_0x172076){_0x2411ee[_0x6498('0x4c')]=_0x172076;return _0x2411ee;})[_0x6498('0x2f')](respondWithFilteredResult(_0x5b5089,_0x12c2c4))[_0x6498('0x24')](handleError(_0x5b5089,null));};exports['show']=function(_0x299d23,_0x1bbb6f){var _0x1a1065={'raw':!![],'where':{'id':_0x299d23[_0x6498('0x4d')]['id']}},_0x30d30b={};_0x30d30b[_0x6498('0x39')]=_[_0x6498('0x3b')](db[_0x6498('0x35')][_0x6498('0x36')]);_0x30d30b[_0x6498('0x3a')]=_[_0x6498('0x3b')](_0x299d23[_0x6498('0x3a')]);_0x30d30b[_0x6498('0x3c')]=_[_0x6498('0x4e')](_0x30d30b[_0x6498('0x39')],_0x30d30b[_0x6498('0x3a')]);_0x1a1065[_0x6498('0x3d')]=_[_0x6498('0x4e')](_0x30d30b[_0x6498('0x39')],qs[_0x6498('0x3e')](_0x299d23[_0x6498('0x3a')]['fields']));_0x1a1065[_0x6498('0x3d')]=_0x1a1065[_0x6498('0x3d')][_0x6498('0x3f')]?_0x1a1065[_0x6498('0x3d')]:_0x30d30b[_0x6498('0x39')];if(_0x299d23[_0x6498('0x3a')]['includeAll']){_0x1a1065['include']=[{'all':!![]}];}_0x1a1065=_[_0x6498('0x48')]({},_0x1a1065,_0x299d23['options']);return db[_0x6498('0x35')][_0x6498('0x4f')](_0x1a1065)[_0x6498('0x2f')](handleEntityNotFound(_0x1bbb6f,null))[_0x6498('0x2f')](respondWithResult(_0x1bbb6f,null))[_0x6498('0x24')](handleError(_0x1bbb6f,null));};exports['create']=function(_0x3b0dc0,_0x2d6b56,_0x3ed025){var _0x1bf245;return db['sequelize']['transaction'](function(_0x20ab15){return db['Network'][_0x6498('0x50')](_0x3b0dc0[_0x6498('0x51')],{'raw':!![]})[_0x6498('0x2f')](function(_0x12f448){_0x1bf245=_0x12f448;return db[_0x6498('0x35')][_0x6498('0x4b')]({'where':{'type':_0x3b0dc0[_0x6498('0x51')][_0x6498('0x47')]},'raw':!![]});})['then'](function(_0x2a4130){if(_0x1bf245[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x53')){var _0x5c25b3=fs[_0x6498('0x54')](path['join'](config[_0x6498('0x55')],'server/files/templates/stun_multiple.ejs'),_0x6498('0x56'));var _0x1cd0d4=ejs['render'](_0x5c25b3,{'networks':_0x2a4130||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x1cd0d4);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x50'),{'module':'res_stun_monitor.so'});}else if(_0x1bf245[_0x6498('0x47')][_0x6498('0x52')]()=='TURN'){var _0x5eccb8=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x59')),_0x6498('0x56'));var _0x33c930=ejs[_0x6498('0x5a')](_0x5eccb8,{'networks':_0x2a4130||[]});fs[_0x6498('0x5b')](_0x6498('0x5c'),_0x33c930);return respondWithRpcPromise('Reload','create',{'module':_0x6498('0x5d')});}else{var _0x112e7f=fs['readFileSync'](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x5e')),_0x6498('0x56'));var _0x3d49a4=ejs[_0x6498('0x5a')](_0x112e7f,{'networks':_0x2a4130||[]});fs['writeFileSync'](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x3b0dc0[_0x6498('0x51')][_0x6498('0x47')]['toLowerCase']()),_0x3d49a4);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x50'),{'module':_0x6498('0x5f')});}return null;})[_0x6498('0x2f')](function(){return _0x1bf245;});})[_0x6498('0x2f')](respondWithResult(_0x2d6b56,0xc9))[_0x6498('0x24')](handleError(_0x2d6b56,null));};exports[_0x6498('0x60')]=function(_0x178085,_0x1af28f,_0x11080a){var _0x4c2abb;return db[_0x6498('0x61')][_0x6498('0x62')](function(_0x525208){return db['Network']['find']({'where':{'id':_0x178085['params']['id']}})[_0x6498('0x2f')](handleEntityNotFound(_0x1af28f,null))[_0x6498('0x2f')](saveUpdates(_0x178085[_0x6498('0x51')],null))[_0x6498('0x2f')](function(_0x5897cf){if(_0x5897cf){_0x4c2abb=_0x5897cf;return db[_0x6498('0x35')]['findAll']({'where':{'type':_0x4c2abb[_0x6498('0x47')]},'raw':!![]});}return null;})[_0x6498('0x2f')](function(_0x467472){if(_0x4c2abb[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x53')){var _0x1cea93=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],'server/files/templates/stun_multiple.ejs'),_0x6498('0x56'));var _0x4304fb=ejs['render'](_0x1cea93,{'networks':_0x467472||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x4304fb);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x60'),{'module':'res_stun_monitor.so'});}else if(_0x4c2abb['type'][_0x6498('0x52')]()==_0x6498('0x63')){var _0x42c894=fs['readFileSync'](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x59')),_0x6498('0x56'));var _0x3f0e36=ejs[_0x6498('0x5a')](_0x42c894,{'networks':_0x467472||[]});fs[_0x6498('0x5b')](_0x6498('0x5c'),_0x3f0e36);return respondWithRpcPromise('Reload',_0x6498('0x60'),{'module':_0x6498('0x5d')});}else{var _0x349cfe=fs[_0x6498('0x54')](path['join'](config[_0x6498('0x55')],_0x6498('0x5e')),_0x6498('0x56'));var _0x4d5988=ejs[_0x6498('0x5a')](_0x349cfe,{'networks':_0x467472||[]});fs[_0x6498('0x5b')](util[_0x6498('0x64')](_0x6498('0x65'),_0x178085[_0x6498('0x51')][_0x6498('0x47')]['toLowerCase']()),_0x4d5988);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x60'),{'module':_0x6498('0x5f')});}return null;})['then'](function(_0x154b28){if(_0x154b28){return _0x4c2abb;}return null;});})[_0x6498('0x2f')](respondWithResult(_0x1af28f,null))['catch'](handleError(_0x1af28f,null));};exports[_0x6498('0x66')]=function(_0x1d995c,_0x3728d5,_0x3ea69b){var _0x5c041c;return db[_0x6498('0x35')][_0x6498('0x4f')]({'where':{'id':_0x1d995c[_0x6498('0x4d')]['id']}})[_0x6498('0x2f')](function(_0x26a737){_0x5c041c=_0x26a737;return _0x26a737;})[_0x6498('0x2f')](handleEntityNotFound(_0x3728d5,null))[_0x6498('0x2f')](removeEntity(_0x3728d5,null))[_0x6498('0x2f')](function(){if(_0x5c041c){return db[_0x6498('0x35')]['findAll']({'where':{'type':_0x5c041c[_0x6498('0x47')]},'raw':!![]});}})[_0x6498('0x2f')](function(_0x2503f3){if(_0x5c041c[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x53')){var _0x24a58f=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x67')),_0x6498('0x56'));var _0x278b5d=ejs[_0x6498('0x5a')](_0x24a58f,{'networks':_0x2503f3||[]});fs[_0x6498('0x5b')](_0x6498('0x68'),_0x278b5d);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x66'),{'module':_0x6498('0x5d')});}else if(_0x5c041c[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x63')){var _0x3525e6=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x59')),'utf8');var _0x5791b3=ejs[_0x6498('0x5a')](_0x3525e6,{'networks':_0x2503f3||[]});fs[_0x6498('0x5b')](_0x6498('0x5c'),_0x5791b3);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x66'),{'module':_0x6498('0x5d')});}else{var _0x1422a4=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],'server/files/templates/network.ejs'),_0x6498('0x56'));var _0x3f9563=ejs[_0x6498('0x5a')](_0x1422a4,{'networks':_0x2503f3||[]});fs[_0x6498('0x5b')](util['format'](_0x6498('0x65'),_0x1d995c[_0x6498('0x51')][_0x6498('0x47')][_0x6498('0x69')]()),_0x3f9563);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x66'),{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x3728d5,null));};
\ No newline at end of file
+var _0x9da8=['rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','where','VIRTUAL','merge','Network','includeAll','findAll','rows','catch','show','params','length','options','find','create','transaction','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','writeFileSync','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/network.ejs','destroy','TURN','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','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','jayson/promise','client','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','stack','name','send','index','map'];(function(_0x2ca61f,_0x234f51){var _0x3aaa33=function(_0x402704){while(--_0x402704){_0x2ca61f['push'](_0x2ca61f['shift']());}};_0x3aaa33(++_0x234f51);}(_0x9da8,0x10c));var _0x89da=function(_0x2c42a5,_0x2d1b8f){_0x2c42a5=_0x2c42a5-0x0;var _0x50ef99=_0x9da8[_0x2c42a5];return _0x50ef99;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x89da('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x89da('0x1'));var rp=require(_0x89da('0x2'));var moment=require(_0x89da('0x3'));var BPromise=require(_0x89da('0x4'));var Mustache=require('mustache');var util=require(_0x89da('0x5'));var path=require(_0x89da('0x6'));var sox=require(_0x89da('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x89da('0x8'));var _=require(_0x89da('0x9'));var squel=require(_0x89da('0xa'));var crypto=require(_0x89da('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x89da('0xc'));var querystring=require(_0x89da('0xd'));var Papa=require(_0x89da('0xe'));var Redis=require(_0x89da('0xf'));var authService=require(_0x89da('0x10'));var qs=require(_0x89da('0x11'));var as=require(_0x89da('0x12'));var hardwareService=require(_0x89da('0x13'));var logger=require(_0x89da('0x14'))(_0x89da('0x15'));var utils=require(_0x89da('0x16'));var config=require(_0x89da('0x17'));var licenseUtil=require(_0x89da('0x18'));var db=require(_0x89da('0x19'))['db'];var jayson=require(_0x89da('0x1a'));var client=jayson[_0x89da('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5aa716,_0x43254c,_0x4b2cbd,_0xf23b1c){return new BPromise(function(_0x3bf081,_0x4cd9d7){var _0x41a619=_0xf23b1c||client;return _0x41a619[_0x89da('0x1c')](_0x5aa716,_0x4b2cbd)['then'](function(_0x152a3a){logger[_0x89da('0x1d')](_0x89da('0x1e'),_0x43254c,_0x89da('0x1f'));logger[_0x89da('0x20')](_0x89da('0x21'),_0x43254c,_0x89da('0x1f'),JSON[_0x89da('0x22')](_0x152a3a));if(_0x152a3a[_0x89da('0x23')]){if(_0x152a3a[_0x89da('0x23')][_0x89da('0x24')]===0x1f4){logger[_0x89da('0x23')](_0x89da('0x1e'),_0x43254c,_0x152a3a[_0x89da('0x23')][_0x89da('0x25')]);return _0x4cd9d7(_0x152a3a[_0x89da('0x23')][_0x89da('0x25')]);}logger[_0x89da('0x23')](_0x89da('0x1e'),_0x43254c,_0x152a3a[_0x89da('0x23')][_0x89da('0x25')]);return _0x3bf081(_0x152a3a['error'][_0x89da('0x25')]);}else{logger[_0x89da('0x1d')](_0x89da('0x1e'),_0x43254c,_0x89da('0x1f'));_0x3bf081(_0x152a3a['result']['message']);}})['catch'](function(_0x5126ac){logger[_0x89da('0x23')](_0x89da('0x1e'),_0x43254c,_0x5126ac);_0x4cd9d7(_0x5126ac);});});}function respondWithStatusCode(_0x199fb3,_0x43e167){_0x43e167=_0x43e167||0xcc;return function(_0x1d366e){if(_0x1d366e){return _0x199fb3[_0x89da('0x26')](_0x43e167);}return _0x199fb3[_0x89da('0x27')](_0x43e167)[_0x89da('0x28')]();};}function respondWithResult(_0x2fe43e,_0x38737b){_0x38737b=_0x38737b||0xc8;return function(_0x408253){if(_0x408253){return _0x2fe43e[_0x89da('0x27')](_0x38737b)[_0x89da('0x29')](_0x408253);}};}function respondWithFilteredResult(_0x34f623,_0x393156){return function(_0x1b281a){if(_0x1b281a){var _0x25a8fa=typeof _0x393156[_0x89da('0x2a')]==='undefined'&&typeof _0x393156['limit']===_0x89da('0x2b');var _0x107766=_0x1b281a[_0x89da('0x2c')];var _0x5c317c=_0x25a8fa?0x0:_0x393156[_0x89da('0x2a')];var _0xc9189b=_0x25a8fa?_0x1b281a[_0x89da('0x2c')]:_0x393156[_0x89da('0x2a')]+_0x393156['limit'];var _0x1fe6f7;if(_0xc9189b>=_0x107766){_0xc9189b=_0x107766;_0x1fe6f7=0xc8;}else{_0x1fe6f7=0xce;}_0x34f623[_0x89da('0x27')](_0x1fe6f7);return _0x34f623[_0x89da('0x2d')](_0x89da('0x2e'),_0x5c317c+'-'+_0xc9189b+'/'+_0x107766)[_0x89da('0x29')](_0x1b281a);}return null;};}function patchUpdates(_0x226a8a){return function(_0x4b5d7f){try{jsonpatch['apply'](_0x4b5d7f,_0x226a8a,!![]);}catch(_0x3d7353){return BPromise[_0x89da('0x2f')](_0x3d7353);}return _0x4b5d7f[_0x89da('0x30')]();};}function saveUpdates(_0x5a2fca,_0x55b7e2){return function(_0x2621c2){if(_0x2621c2){return _0x2621c2[_0x89da('0x31')](_0x5a2fca)[_0x89da('0x32')](function(_0x40d989){return _0x40d989;});}return null;};}function removeEntity(_0x32cd90,_0x40c304){return function(_0xd9136d){if(_0xd9136d){return _0xd9136d['destroy']()[_0x89da('0x32')](function(){_0x32cd90[_0x89da('0x27')](0xcc)[_0x89da('0x28')]();});}};}function handleEntityNotFound(_0x5d9438,_0x59ba24){return function(_0x151869){if(!_0x151869){_0x5d9438[_0x89da('0x26')](0x194);}return _0x151869;};}function handleError(_0xe90669,_0x13f141){_0x13f141=_0x13f141||0x1f4;return function(_0x28de37){logger['error'](_0x28de37[_0x89da('0x33')]);if(_0x28de37['name']){delete _0x28de37[_0x89da('0x34')];}_0xe90669[_0x89da('0x27')](_0x13f141)[_0x89da('0x35')](_0x28de37);};}exports[_0x89da('0x36')]=function(_0x23db16,_0x2db546){var _0x181515={},_0x5529a0={},_0x267608={'count':0x0,'rows':[]};var _0x1d792e=_[_0x89da('0x37')](db['Network'][_0x89da('0x38')],function(_0x55a080){return{'name':_0x55a080['fieldName'],'type':_0x55a080[_0x89da('0x39')]['key']};});_0x5529a0[_0x89da('0x3a')]=_['map'](_0x1d792e,'name');_0x5529a0[_0x89da('0x3b')]=_[_0x89da('0x3c')](_0x23db16[_0x89da('0x3b')]);_0x5529a0[_0x89da('0x3d')]=_[_0x89da('0x3e')](_0x5529a0[_0x89da('0x3a')],_0x5529a0[_0x89da('0x3b')]);_0x181515[_0x89da('0x3f')]=_[_0x89da('0x3e')](_0x5529a0['model'],qs[_0x89da('0x40')](_0x23db16[_0x89da('0x3b')]['fields']));_0x181515[_0x89da('0x3f')]=_0x181515['attributes']['length']?_0x181515[_0x89da('0x3f')]:_0x5529a0[_0x89da('0x3a')];if(!_0x23db16['query'][_0x89da('0x41')](_0x89da('0x42'))){_0x181515[_0x89da('0x43')]=qs[_0x89da('0x43')](_0x23db16['query']['limit']);_0x181515['offset']=qs[_0x89da('0x2a')](_0x23db16[_0x89da('0x3b')][_0x89da('0x2a')]);}_0x181515[_0x89da('0x44')]=qs[_0x89da('0x45')](_0x23db16['query'][_0x89da('0x45')]);_0x181515['where']=qs['filters'](_[_0x89da('0x46')](_0x23db16['query'],_0x5529a0[_0x89da('0x3d')]),_0x1d792e);if(_0x23db16['query']['filter']){_0x181515[_0x89da('0x47')]=_['merge'](_0x181515[_0x89da('0x47')],{'$or':_[_0x89da('0x37')](_0x1d792e,function(_0x4dda7d){if(_0x4dda7d[_0x89da('0x39')]!==_0x89da('0x48')){var _0x4b49ea={};_0x4b49ea[_0x4dda7d[_0x89da('0x34')]]={'$like':'%'+_0x23db16['query']['filter']+'%'};return _0x4b49ea;}})});}_0x181515=_[_0x89da('0x49')]({},_0x181515,_0x23db16['options']);var _0x52f838={'where':_0x181515[_0x89da('0x47')]};return db[_0x89da('0x4a')]['count'](_0x52f838)[_0x89da('0x32')](function(_0x55222b){_0x267608[_0x89da('0x2c')]=_0x55222b;if(_0x23db16[_0x89da('0x3b')][_0x89da('0x4b')]){_0x181515['include']=[{'all':!![]}];}return db[_0x89da('0x4a')][_0x89da('0x4c')](_0x181515);})[_0x89da('0x32')](function(_0x1a2de0){_0x267608[_0x89da('0x4d')]=_0x1a2de0;return _0x267608;})[_0x89da('0x32')](respondWithFilteredResult(_0x2db546,_0x181515))[_0x89da('0x4e')](handleError(_0x2db546,null));};exports[_0x89da('0x4f')]=function(_0x468a6d,_0x17656d){var _0x27af3b={'raw':!![],'where':{'id':_0x468a6d[_0x89da('0x50')]['id']}},_0x2bb2ed={};_0x2bb2ed[_0x89da('0x3a')]=_[_0x89da('0x3c')](db['Network'][_0x89da('0x38')]);_0x2bb2ed[_0x89da('0x3b')]=_['keys'](_0x468a6d[_0x89da('0x3b')]);_0x2bb2ed['filters']=_[_0x89da('0x3e')](_0x2bb2ed[_0x89da('0x3a')],_0x2bb2ed[_0x89da('0x3b')]);_0x27af3b[_0x89da('0x3f')]=_[_0x89da('0x3e')](_0x2bb2ed[_0x89da('0x3a')],qs[_0x89da('0x40')](_0x468a6d[_0x89da('0x3b')]['fields']));_0x27af3b[_0x89da('0x3f')]=_0x27af3b[_0x89da('0x3f')][_0x89da('0x51')]?_0x27af3b['attributes']:_0x2bb2ed['model'];if(_0x468a6d['query'][_0x89da('0x4b')]){_0x27af3b['include']=[{'all':!![]}];}_0x27af3b=_['merge']({},_0x27af3b,_0x468a6d[_0x89da('0x52')]);return db[_0x89da('0x4a')][_0x89da('0x53')](_0x27af3b)[_0x89da('0x32')](handleEntityNotFound(_0x17656d,null))[_0x89da('0x32')](respondWithResult(_0x17656d,null))[_0x89da('0x4e')](handleError(_0x17656d,null));};exports[_0x89da('0x54')]=function(_0x5db1e8,_0x2363a6,_0x22bfcf){var _0x77f7f5;return db['sequelize'][_0x89da('0x55')](function(_0x47581b){return db['Network'][_0x89da('0x54')](_0x5db1e8[_0x89da('0x56')],{'raw':!![]})[_0x89da('0x32')](function(_0x519f7e){_0x77f7f5=_0x519f7e;return db['Network'][_0x89da('0x4c')]({'where':{'type':_0x5db1e8[_0x89da('0x56')]['type']},'raw':!![]});})[_0x89da('0x32')](function(_0x54a9a9){if(_0x77f7f5[_0x89da('0x39')][_0x89da('0x57')]()==_0x89da('0x58')){var _0x460fa5=fs[_0x89da('0x59')](path[_0x89da('0x5a')](config['root'],_0x89da('0x5b')),_0x89da('0x5c'));var _0x59118e=ejs[_0x89da('0x5d')](_0x460fa5,{'networks':_0x54a9a9||[]});fs['writeFileSync'](_0x89da('0x5e'),_0x59118e);return respondWithRpcPromise(_0x89da('0x5f'),_0x89da('0x54'),{'module':_0x89da('0x60')});}else if(_0x77f7f5['type'][_0x89da('0x57')]()=='TURN'){var _0x259001=fs['readFileSync'](path[_0x89da('0x5a')](config[_0x89da('0x61')],_0x89da('0x62')),_0x89da('0x5c'));var _0x2afd4e=ejs[_0x89da('0x5d')](_0x259001,{'networks':_0x54a9a9||[]});fs['writeFileSync'](_0x89da('0x63'),_0x2afd4e);return respondWithRpcPromise(_0x89da('0x5f'),_0x89da('0x54'),{'module':'res_stun_monitor.so'});}else{var _0x43cfad=fs['readFileSync'](path[_0x89da('0x5a')](config['root'],'server/files/templates/network.ejs'),_0x89da('0x5c'));var _0x48ee09=ejs['render'](_0x43cfad,{'networks':_0x54a9a9||[]});fs[_0x89da('0x64')](util[_0x89da('0x65')](_0x89da('0x66'),_0x5db1e8['body'][_0x89da('0x39')][_0x89da('0x67')]()),_0x48ee09);return respondWithRpcPromise('Reload',_0x89da('0x54'),{'module':_0x89da('0x68')});}return null;})['then'](function(){return _0x77f7f5;});})[_0x89da('0x32')](respondWithResult(_0x2363a6,0xc9))['catch'](handleError(_0x2363a6,null));};exports['update']=function(_0x4276a1,_0x31154f,_0x2ef8e0){var _0xb164ae;return db['sequelize'][_0x89da('0x55')](function(_0x4f1ba2){return db[_0x89da('0x4a')][_0x89da('0x53')]({'where':{'id':_0x4276a1['params']['id']}})[_0x89da('0x32')](handleEntityNotFound(_0x31154f,null))[_0x89da('0x32')](saveUpdates(_0x4276a1['body'],null))[_0x89da('0x32')](function(_0x31c0b6){if(_0x31c0b6){_0xb164ae=_0x31c0b6;return db['Network']['findAll']({'where':{'type':_0xb164ae['type']},'raw':!![]});}return null;})[_0x89da('0x32')](function(_0xf0671b){if(_0xb164ae[_0x89da('0x39')][_0x89da('0x57')]()=='STUN'){var _0x4aaca2=fs[_0x89da('0x59')](path[_0x89da('0x5a')](config[_0x89da('0x61')],_0x89da('0x5b')),_0x89da('0x5c'));var _0x1d909a=ejs['render'](_0x4aaca2,{'networks':_0xf0671b||[]});fs[_0x89da('0x64')](_0x89da('0x5e'),_0x1d909a);return respondWithRpcPromise(_0x89da('0x5f'),'update',{'module':_0x89da('0x60')});}else if(_0xb164ae[_0x89da('0x39')]['toUpperCase']()=='TURN'){var _0x2604c9=fs['readFileSync'](path[_0x89da('0x5a')](config['root'],_0x89da('0x62')),_0x89da('0x5c'));var _0x4f4a06=ejs[_0x89da('0x5d')](_0x2604c9,{'networks':_0xf0671b||[]});fs[_0x89da('0x64')](_0x89da('0x63'),_0x4f4a06);return respondWithRpcPromise(_0x89da('0x5f'),_0x89da('0x31'),{'module':'res_stun_monitor.so'});}else{var _0x3b0788=fs[_0x89da('0x59')](path[_0x89da('0x5a')](config[_0x89da('0x61')],_0x89da('0x69')),_0x89da('0x5c'));var _0x58d8ac=ejs['render'](_0x3b0788,{'networks':_0xf0671b||[]});fs[_0x89da('0x64')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x4276a1[_0x89da('0x56')]['type'][_0x89da('0x67')]()),_0x58d8ac);return respondWithRpcPromise(_0x89da('0x5f'),_0x89da('0x31'),{'module':_0x89da('0x68')});}return null;})['then'](function(_0xb9650c){if(_0xb9650c){return _0xb164ae;}return null;});})[_0x89da('0x32')](respondWithResult(_0x31154f,null))['catch'](handleError(_0x31154f,null));};exports[_0x89da('0x6a')]=function(_0x29c4fc,_0xfb695d,_0x13adf7){var _0x5d0b9c;return db[_0x89da('0x4a')][_0x89da('0x53')]({'where':{'id':_0x29c4fc[_0x89da('0x50')]['id']}})[_0x89da('0x32')](function(_0x203725){_0x5d0b9c=_0x203725;return _0x203725;})['then'](handleEntityNotFound(_0xfb695d,null))[_0x89da('0x32')](removeEntity(_0xfb695d,null))['then'](function(){if(_0x5d0b9c){return db[_0x89da('0x4a')]['findAll']({'where':{'type':_0x5d0b9c[_0x89da('0x39')]},'raw':!![]});}})[_0x89da('0x32')](function(_0x549a64){if(_0x5d0b9c[_0x89da('0x39')][_0x89da('0x57')]()==_0x89da('0x58')){var _0x7e3d7d=fs[_0x89da('0x59')](path[_0x89da('0x5a')](config[_0x89da('0x61')],_0x89da('0x5b')),'utf8');var _0x3c78c2=ejs[_0x89da('0x5d')](_0x7e3d7d,{'networks':_0x549a64||[]});fs[_0x89da('0x64')](_0x89da('0x5e'),_0x3c78c2);return respondWithRpcPromise(_0x89da('0x5f'),_0x89da('0x6a'),{'module':_0x89da('0x60')});}else if(_0x5d0b9c[_0x89da('0x39')][_0x89da('0x57')]()==_0x89da('0x6b')){var _0x5baf97=fs[_0x89da('0x59')](path[_0x89da('0x5a')](config[_0x89da('0x61')],_0x89da('0x62')),_0x89da('0x5c'));var _0xa1fe62=ejs[_0x89da('0x5d')](_0x5baf97,{'networks':_0x549a64||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0xa1fe62);return respondWithRpcPromise(_0x89da('0x5f'),'destroy',{'module':'res_stun_monitor.so'});}else{var _0x4b6dea=fs['readFileSync'](path[_0x89da('0x5a')](config['root'],_0x89da('0x69')),_0x89da('0x5c'));var _0x4521cf=ejs['render'](_0x4b6dea,{'networks':_0x549a64||[]});fs['writeFileSync'](util['format'](_0x89da('0x66'),_0x29c4fc['body'][_0x89da('0x39')][_0x89da('0x67')]()),_0x4521cf);return respondWithRpcPromise(_0x89da('0x5f'),_0x89da('0x6a'),{'module':_0x89da('0x68')});}return null;})[_0x89da('0x4e')](handleError(_0xfb695d,null));};
\ No newline at end of file
index 2d41e77..5a8c464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','../../config/logger','moment','bluebird'];(function(_0xa9f50a,_0x1d3836){var _0x48d268=function(_0x41629d){while(--_0x41629d){_0xa9f50a['push'](_0xa9f50a['shift']());}};_0x48d268(++_0x1d3836);}(_0x705f,0x75));var _0xf705=function(_0x50b750,_0xe5817b){_0x50b750=_0x50b750-0x0;var _0x1b60a8=_0x705f[_0x50b750];return _0x1b60a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf705('0x0'))('api');var moment=require(_0xf705('0x1'));var BPromise=require(_0xf705('0x2'));var rp=require(_0xf705('0x3'));var fs=require('fs');var path=require(_0xf705('0x4'));var rimraf=require(_0xf705('0x5'));var config=require(_0xf705('0x6'));var attributes=require(_0xf705('0x7'));module[_0xf705('0x8')]=function(_0x10214c,_0x991602){return _0x10214c[_0xf705('0x9')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5712=['bluebird','request-promise','path','rimraf','../../config/environment','define','Network','network','lodash','util','../../config/logger','api','moment'];(function(_0x306855,_0x31a51e){var _0x579dfa=function(_0x29e5e7){while(--_0x29e5e7){_0x306855['push'](_0x306855['shift']());}};_0x579dfa(++_0x31a51e);}(_0x5712,0x140));var _0x2571=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x5712[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x2571('0x0'));var util=require(_0x2571('0x1'));var logger=require(_0x2571('0x2'))(_0x2571('0x3'));var moment=require(_0x2571('0x4'));var BPromise=require(_0x2571('0x5'));var rp=require(_0x2571('0x6'));var fs=require('fs');var path=require(_0x2571('0x7'));var rimraf=require(_0x2571('0x8'));var config=require(_0x2571('0x9'));var attributes=require('./network.attributes');module['exports']=function(_0x4713ad,_0x50fc72){return _0x4713ad[_0x2571('0xa')](_0x2571('0xb'),attributes,{'tableName':_0x2571('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58f3588..9d0f439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3792e8,_0x3a9dd8){var _0x29cd99=function(_0x5aa8c5){while(--_0x5aa8c5){_0x3792e8['push'](_0x3792e8['shift']());}};_0x29cd99(++_0x3a9dd8);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0xc0a776,_0x1fe9f1){_0xc0a776=_0xc0a776-0x0;var _0x3b37f0=_0x7a54[_0xc0a776];return _0x3b37f0;};'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 2f00bf2..93ead0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6529=['/:id/dispositions','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','destroy','delete','removeDispositions','removeAnswers','exports','multer','util','path','express','Router','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','/:id/users','getAgents','post','create'];(function(_0x3373a2,_0x17949f){var _0x565017=function(_0x16e732){while(--_0x16e732){_0x3373a2['push'](_0x3373a2['shift']());}};_0x565017(++_0x17949f);}(_0x6529,0x1e3));var _0x9652=function(_0x196a6f,_0x348ee1){_0x196a6f=_0x196a6f-0x0;var _0x41e47c=_0x6529[_0x196a6f];return _0x41e47c;};'use strict';var multer=require(_0x9652('0x0'));var util=require(_0x9652('0x1'));var path=require(_0x9652('0x2'));var timeout=require('connect-timeout');var express=require(_0x9652('0x3'));var router=express[_0x9652('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9652('0x5'));var controller=require(_0x9652('0x6'));router[_0x9652('0x7')]('/',auth[_0x9652('0x8')](),controller['index']);router['get']('/describe',auth[_0x9652('0x8')](),controller['describe']);router['get'](_0x9652('0x9'),auth[_0x9652('0x8')](),controller[_0x9652('0xa')]);router[_0x9652('0x7')]('/:id/dispositions',auth[_0x9652('0x8')](),controller[_0x9652('0xb')]);router['get'](_0x9652('0xc'),auth['isAuthenticated'](),controller[_0x9652('0xd')]);router[_0x9652('0x7')](_0x9652('0xe'),auth[_0x9652('0x8')](),controller[_0x9652('0xf')]);router['get'](_0x9652('0x10'),auth[_0x9652('0x8')](),controller['getInteractions']);router[_0x9652('0x7')](_0x9652('0x11'),auth[_0x9652('0x8')](),controller[_0x9652('0x12')]);router[_0x9652('0x13')]('/',auth['isAuthenticated'](),controller[_0x9652('0x14')]);router['post'](_0x9652('0x15'),auth[_0x9652('0x8')](),controller[_0x9652('0x16')]);router[_0x9652('0x13')]('/:id/canned_answers',auth[_0x9652('0x8')](),controller[_0x9652('0x17')]);router[_0x9652('0x13')](_0x9652('0x18'),controller[_0x9652('0x19')]);router[_0x9652('0x13')](_0x9652('0xe'),auth[_0x9652('0x8')](),controller[_0x9652('0x1a')]);router[_0x9652('0x13')](_0x9652('0x11'),auth[_0x9652('0x8')](),controller[_0x9652('0x1b')]);router[_0x9652('0x13')](_0x9652('0x1c'),auth['isAuthenticated'](),controller[_0x9652('0x1d')]);router[_0x9652('0x1e')]('/:id',auth[_0x9652('0x8')](),controller['update']);router['delete'](_0x9652('0x9'),auth[_0x9652('0x8')](),controller[_0x9652('0x1f')]);router[_0x9652('0x20')](_0x9652('0x15'),auth[_0x9652('0x8')](),controller[_0x9652('0x21')]);router[_0x9652('0x20')](_0x9652('0xc'),auth['isAuthenticated'](),controller[_0x9652('0x22')]);router[_0x9652('0x20')](_0x9652('0x11'),auth[_0x9652('0x8')](),controller['removeAgents']);module[_0x9652('0x23')]=router;
\ No newline at end of file
+var _0x6ad4=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','getAnswers','/:id/applications','getApplications','getInteractions','/:id/users','create','post','/:id/dispositions','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','update','delete','destroy','removeDispositions','exports','util','path','connect-timeout','Router','fs-extra'];(function(_0x489f7e,_0x277272){var _0x497dbe=function(_0x10a489){while(--_0x10a489){_0x489f7e['push'](_0x489f7e['shift']());}};_0x497dbe(++_0x277272);}(_0x6ad4,0xb4));var _0x46ad=function(_0x2cdfbb,_0x536e04){_0x2cdfbb=_0x2cdfbb-0x0;var _0x4c67a3=_0x6ad4[_0x2cdfbb];return _0x4c67a3;};'use strict';var multer=require('multer');var util=require(_0x46ad('0x0'));var path=require(_0x46ad('0x1'));var timeout=require(_0x46ad('0x2'));var express=require('express');var router=express[_0x46ad('0x3')]();var fs_extra=require(_0x46ad('0x4'));var auth=require(_0x46ad('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x46ad('0x6'));var controller=require('./openchannelAccount.controller');router[_0x46ad('0x7')]('/',auth[_0x46ad('0x8')](),controller[_0x46ad('0x9')]);router[_0x46ad('0x7')](_0x46ad('0xa'),auth[_0x46ad('0x8')](),controller[_0x46ad('0xb')]);router[_0x46ad('0x7')](_0x46ad('0xc'),auth['isAuthenticated'](),controller[_0x46ad('0xd')]);router[_0x46ad('0x7')]('/:id/dispositions',auth[_0x46ad('0x8')](),controller[_0x46ad('0xe')]);router[_0x46ad('0x7')]('/:id/canned_answers',auth[_0x46ad('0x8')](),controller[_0x46ad('0xf')]);router[_0x46ad('0x7')](_0x46ad('0x10'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x11')]);router[_0x46ad('0x7')]('/:id/interactions',auth[_0x46ad('0x8')](),controller[_0x46ad('0x12')]);router['get'](_0x46ad('0x13'),auth[_0x46ad('0x8')](),controller['getAgents']);router['post']('/',auth[_0x46ad('0x8')](),controller[_0x46ad('0x14')]);router[_0x46ad('0x15')](_0x46ad('0x16'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x17')]);router[_0x46ad('0x15')](_0x46ad('0x18'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x19')]);router[_0x46ad('0x15')](_0x46ad('0x1a'),controller[_0x46ad('0x1b')]);router[_0x46ad('0x15')](_0x46ad('0x10'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x1c')]);router['post'](_0x46ad('0x13'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x1d')]);router['post'](_0x46ad('0x1e'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x1f')]);router['put'](_0x46ad('0xc'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x20')]);router[_0x46ad('0x21')]('/:id',auth[_0x46ad('0x8')](),controller[_0x46ad('0x22')]);router[_0x46ad('0x21')](_0x46ad('0x16'),auth[_0x46ad('0x8')](),controller[_0x46ad('0x23')]);router[_0x46ad('0x21')](_0x46ad('0x18'),auth[_0x46ad('0x8')](),controller['removeAnswers']);router[_0x46ad('0x21')]('/:id/users',auth[_0x46ad('0x8')](),controller['removeAgents']);module[_0x46ad('0x24')]=router;
\ No newline at end of file
index 48fb255..3a55ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc202=['mandatoryDispositionPauseId','sequelize','name','STRING','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x1e129a,_0x4bfa91){var _0x595d15=function(_0x116179){while(--_0x116179){_0x1e129a['push'](_0x1e129a['shift']());}};_0x595d15(++_0x4bfa91);}(_0xc202,0x8d));var _0x2c20=function(_0x3d71ea,_0x292819){_0x3d71ea=_0x3d71ea-0x0;var _0x2d5a84=_0xc202[_0x3d71ea];return _0x2d5a84;};'use strict';var Sequelize=require(_0x2c20('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x2c20('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x2c20('0x2')]},'token':{'type':Sequelize[_0x2c20('0x2')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x2c20('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x2c20('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2c20('0x3')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x2c20('0x2')]},'queueTransfer':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2c20('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2c20('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x2c20('0x6')},'mandatoryDisposition':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![],'comment':_0x2c20('0x7'),'set':function(_0x365384){if(!_0x365384)this[_0x2c20('0x8')](_0x2c20('0x9'),null);this[_0x2c20('0x8')]('mandatoryDisposition',_0x365384);}}};
\ No newline at end of file
+var _0xe670=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','generate','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(_0x30526e,_0x35e06a){var _0x104073=function(_0x3991dc){while(--_0x3991dc){_0x30526e['push'](_0x30526e['shift']());}};_0x104073(++_0x35e06a);}(_0xe670,0x13b));var _0x0e67=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0xe670[_0x4bb581];return _0x316bf5;};'use strict';var Sequelize=require(_0x0e67('0x0'));var rs=require('randomstring');module[_0x0e67('0x1')]={'name':{'type':Sequelize[_0x0e67('0x2')],'unique':_0x0e67('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x0e67('0x2')]},'token':{'type':Sequelize[_0x0e67('0x2')],'defaultValue':function(){return rs[_0x0e67('0x4')]();}},'replyUri':{'type':Sequelize[_0x0e67('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x0e67('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0e67('0x5')],'defaultValue':function(){return _0x0e67('0x6');}},'notificationSound':{'type':Sequelize[_0x0e67('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0e67('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0e67('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x0e67('0x2')]},'queueTransfer':{'type':Sequelize[_0x0e67('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0e67('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0e67('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0e67('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x0e67('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x0e67('0xa'),'set':function(_0x3a70bc){if(!_0x3a70bc)this['setDataValue'](_0x0e67('0xb'),null);this['setDataValue'](_0x0e67('0xc'),_0x3a70bc);}}};
\ No newline at end of file
index c62f144..5e5cea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf42f=['Owner','fullname','Tags','color','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','CmList','CmContact','out','OpenchannelMessage','Messages','dataValues','eml-format','zip-dir','request-promise','moment','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','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','destroy','UserProfileResource','stack','name','send','index','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','Pause','length','options','find','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','Contacts','DESC','Applications','List','orderBy','account','defaults','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','autoclose','applications','push','close','*,*,*,*','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','OpenchannelApplication','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Contact'];(function(_0x4ad9aa,_0xfa4ab3){var _0x270198=function(_0x51a191){while(--_0x51a191){_0x4ad9aa['push'](_0x4ad9aa['shift']());}};_0x270198(++_0xfa4ab3);}(_0xf42f,0x194));var _0xff42=function(_0x26e8f6,_0x5baebc){_0x26e8f6=_0x26e8f6-0x0;var _0x53e0fa=_0xf42f[_0x26e8f6];return _0x53e0fa;};'use strict';var emlformat=require(_0xff42('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff42('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff42('0x2'));var moment=require(_0xff42('0x3'));var BPromise=require(_0xff42('0x4'));var Mustache=require('mustache');var util=require(_0xff42('0x5'));var path=require(_0xff42('0x6'));var sox=require(_0xff42('0x7'));var csv=require(_0xff42('0x8'));var ejs=require(_0xff42('0x9'));var fs=require('fs');var fs_extra=require(_0xff42('0xa'));var _=require(_0xff42('0xb'));var squel=require(_0xff42('0xc'));var crypto=require(_0xff42('0xd'));var jsforce=require(_0xff42('0xe'));var deskjs=require(_0xff42('0xf'));var toCsv=require('to-csv');var querystring=require(_0xff42('0x10'));var Papa=require('papaparse');var Redis=require(_0xff42('0x11'));var authService=require(_0xff42('0x12'));var qs=require(_0xff42('0x13'));var as=require(_0xff42('0x14'));var hardwareService=require(_0xff42('0x15'));var logger=require('../../config/logger')(_0xff42('0x16'));var utils=require(_0xff42('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xff42('0x18'));var db=require(_0xff42('0x19'))['db'];config[_0xff42('0x1a')]=_['defaults'](config[_0xff42('0x1a')],{'host':_0xff42('0x1b'),'port':0x18eb});var socket=require(_0xff42('0x1c'))(new Redis(config['redis']));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xff42('0x1d'));var client=jayson[_0xff42('0x1e')][_0xff42('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0xff42('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x50939f,_0x4c96a9,_0x49d721,_0x7fa2f3){return new BPromise(function(_0x2cc562,_0x58ef87){var _0x57cfff=_0x7fa2f3||client;return _0x57cfff[_0xff42('0x20')](_0x50939f,_0x49d721)[_0xff42('0x21')](function(_0xd3b4ad){logger[_0xff42('0x22')](_0xff42('0x23'),_0x4c96a9,_0xff42('0x24'));logger[_0xff42('0x25')](_0xff42('0x26'),_0x4c96a9,_0xff42('0x24'),JSON['stringify'](_0xd3b4ad));if(_0xd3b4ad['error']){if(_0xd3b4ad[_0xff42('0x27')][_0xff42('0x28')]===0x1f4){logger[_0xff42('0x27')](_0xff42('0x23'),_0x4c96a9,_0xd3b4ad['error']['message']);return _0x58ef87(_0xd3b4ad[_0xff42('0x27')][_0xff42('0x29')]);}logger[_0xff42('0x27')](_0xff42('0x23'),_0x4c96a9,_0xd3b4ad[_0xff42('0x27')][_0xff42('0x29')]);return _0x2cc562(_0xd3b4ad[_0xff42('0x27')]['message']);}else{logger['info'](_0xff42('0x23'),_0x4c96a9,_0xff42('0x24'));_0x2cc562(_0xd3b4ad[_0xff42('0x2a')][_0xff42('0x29')]);}})['catch'](function(_0x1b7fb6){logger[_0xff42('0x27')](_0xff42('0x23'),_0x4c96a9,_0x1b7fb6);_0x58ef87(_0x1b7fb6);});});}function respondWithStatusCode(_0x129ab5,_0x2244e){_0x2244e=_0x2244e||0xcc;return function(_0x51c52c){if(_0x51c52c){return _0x129ab5[_0xff42('0x2b')](_0x2244e);}return _0x129ab5['status'](_0x2244e)['end']();};}function respondWithResult(_0x47b149,_0x13dd32){_0x13dd32=_0x13dd32||0xc8;return function(_0x4fb0f7){if(_0x4fb0f7){return _0x47b149[_0xff42('0x2c')](_0x13dd32)[_0xff42('0x2d')](_0x4fb0f7);}};}function respondWithFilteredResult(_0x5521d0,_0x17bc34){return function(_0x40bba9){if(_0x40bba9){var _0x346a5d=typeof _0x17bc34[_0xff42('0x2e')]===_0xff42('0x2f')&&typeof _0x17bc34['limit']===_0xff42('0x2f');var _0x5eac06=_0x40bba9[_0xff42('0x30')];var _0xee0fa5=_0x346a5d?0x0:_0x17bc34[_0xff42('0x2e')];var _0xfe8efc=_0x346a5d?_0x40bba9['count']:_0x17bc34[_0xff42('0x2e')]+_0x17bc34[_0xff42('0x31')];var _0x165e03;if(_0xfe8efc>=_0x5eac06){_0xfe8efc=_0x5eac06;_0x165e03=0xc8;}else{_0x165e03=0xce;}_0x5521d0['status'](_0x165e03);return _0x5521d0[_0xff42('0x32')]('Content-Range',_0xee0fa5+'-'+_0xfe8efc+'/'+_0x5eac06)[_0xff42('0x2d')](_0x40bba9);}return null;};}function patchUpdates(_0x480733){return function(_0x40fd9f){try{jsonpatch[_0xff42('0x33')](_0x40fd9f,_0x480733,!![]);}catch(_0x4f8159){return BPromise[_0xff42('0x34')](_0x4f8159);}return _0x40fd9f['save']();};}function saveUpdates(_0x5bcb66,_0x5b8831){return function(_0x3d108a){if(_0x3d108a){return _0x3d108a['update'](_0x5bcb66)[_0xff42('0x21')](function(_0x4787a6){return _0x4787a6;});}return null;};}function removeEntity(_0x3c8edb,_0x5d957d){return function(_0x38d381){if(_0x38d381){return _0x38d381[_0xff42('0x35')]()[_0xff42('0x21')](function(){var _0x216ccf=_0x38d381['get']({'plain':!![]});var _0x362c73='OpenchannelAccounts';return db[_0xff42('0x36')]['destroy']({'where':{'type':_0x362c73,'resourceId':_0x216ccf['id']}})[_0xff42('0x21')](function(){return _0x38d381;});})['then'](function(){_0x3c8edb[_0xff42('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4336a3,_0x1e1212){return function(_0xdd0e8a){if(!_0xdd0e8a){_0x4336a3['sendStatus'](0x194);}return _0xdd0e8a;};}function handleError(_0x2f2c17,_0x3c94e6){_0x3c94e6=_0x3c94e6||0x1f4;return function(_0x77c597){logger['error'](_0x77c597[_0xff42('0x37')]);if(_0x77c597['name']){delete _0x77c597[_0xff42('0x38')];}_0x2f2c17[_0xff42('0x2c')](_0x3c94e6)[_0xff42('0x39')](_0x77c597);};}exports[_0xff42('0x3a')]=function(_0x227b8b,_0x55409a){var _0x19c8a5={'include':[{'model':db['Pause'],'as':_0xff42('0x3b')}]},_0x565e3e={},_0x496cc6={'count':0x0,'rows':[]};var _0x244156=_[_0xff42('0x3c')](db[_0xff42('0x3d')][_0xff42('0x3e')],function(_0x2376dc){return{'name':_0x2376dc[_0xff42('0x3f')],'type':_0x2376dc[_0xff42('0x40')][_0xff42('0x41')]};});_0x565e3e[_0xff42('0x42')]=_[_0xff42('0x3c')](_0x244156,_0xff42('0x38'));_0x565e3e['query']=_[_0xff42('0x43')](_0x227b8b[_0xff42('0x44')]);_0x565e3e['filters']=_[_0xff42('0x45')](_0x565e3e[_0xff42('0x42')],_0x565e3e[_0xff42('0x44')]);_0x19c8a5[_0xff42('0x46')]=_[_0xff42('0x45')](_0x565e3e['model'],qs[_0xff42('0x47')](_0x227b8b[_0xff42('0x44')][_0xff42('0x47')]));_0x19c8a5[_0xff42('0x46')]=_0x19c8a5[_0xff42('0x46')]['length']?_0x19c8a5[_0xff42('0x46')]:_0x565e3e[_0xff42('0x42')];if(!_0x227b8b[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0x19c8a5[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x227b8b[_0xff42('0x44')]['limit']);_0x19c8a5[_0xff42('0x2e')]=qs['offset'](_0x227b8b[_0xff42('0x44')][_0xff42('0x2e')]);}_0x19c8a5[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x227b8b['query'][_0xff42('0x4b')]);_0x19c8a5[_0xff42('0x4c')]=qs[_0xff42('0x4d')](_[_0xff42('0x4e')](_0x227b8b[_0xff42('0x44')],_0x565e3e[_0xff42('0x4d')]),_0x244156);if(_0x227b8b[_0xff42('0x44')]['filter']){_0x19c8a5['where']=_[_0xff42('0x4f')](_0x19c8a5['where'],{'$or':_['map'](_0x244156,function(_0x17a067){if(_0x17a067['type']!==_0xff42('0x50')){var _0x31f4fa={};_0x31f4fa[_0x17a067[_0xff42('0x38')]]={'$like':'%'+_0x227b8b['query'][_0xff42('0x51')]+'%'};return _0x31f4fa;}})});}_0x19c8a5=_[_0xff42('0x4f')]({},_0x19c8a5,_0x227b8b['options']);var _0x1772e7={'where':_0x19c8a5[_0xff42('0x4c')]};return db[_0xff42('0x3d')][_0xff42('0x30')](_0x1772e7)[_0xff42('0x21')](function(_0x1edbc2){_0x496cc6[_0xff42('0x30')]=_0x1edbc2;if(_0x227b8b['query'][_0xff42('0x52')]){_0x19c8a5[_0xff42('0x53')]=[{'all':!![]}];}return db[_0xff42('0x3d')][_0xff42('0x54')](_0x19c8a5);})[_0xff42('0x21')](function(_0x37a3e1){_0x496cc6[_0xff42('0x55')]=_0x37a3e1;return _0x496cc6;})[_0xff42('0x21')](respondWithFilteredResult(_0x55409a,_0x19c8a5))[_0xff42('0x56')](handleError(_0x55409a,null));};exports['show']=function(_0x2216cb,_0x3fd996){var _0x2d4842={'raw':![],'where':{'id':_0x2216cb[_0xff42('0x57')]['id']},'include':[{'model':db[_0xff42('0x58')],'as':_0xff42('0x3b')}]},_0x3bdbcb={};_0x3bdbcb[_0xff42('0x42')]=_[_0xff42('0x43')](db['OpenchannelAccount'][_0xff42('0x3e')]);_0x3bdbcb[_0xff42('0x44')]=_[_0xff42('0x43')](_0x2216cb[_0xff42('0x44')]);_0x3bdbcb[_0xff42('0x4d')]=_[_0xff42('0x45')](_0x3bdbcb[_0xff42('0x42')],_0x3bdbcb[_0xff42('0x44')]);_0x2d4842[_0xff42('0x46')]=_[_0xff42('0x45')](_0x3bdbcb[_0xff42('0x42')],qs[_0xff42('0x47')](_0x2216cb[_0xff42('0x44')][_0xff42('0x47')]));_0x2d4842[_0xff42('0x46')]=_0x2d4842[_0xff42('0x46')][_0xff42('0x59')]?_0x2d4842[_0xff42('0x46')]:_0x3bdbcb[_0xff42('0x42')];if(_0x2216cb[_0xff42('0x44')][_0xff42('0x52')]){_0x2d4842['include']=[{'all':!![]}];}_0x2d4842=_['merge']({},_0x2d4842,_0x2216cb[_0xff42('0x5a')]);return db[_0xff42('0x3d')][_0xff42('0x5b')](_0x2d4842)[_0xff42('0x21')](handleEntityNotFound(_0x3fd996,null))[_0xff42('0x21')](respondWithResult(_0x3fd996,null))[_0xff42('0x56')](handleError(_0x3fd996,null));};exports['create']=function(_0x40041b,_0x30044a){return db[_0xff42('0x3d')]['create'](_0x40041b['body'],{})[_0xff42('0x21')](function(_0x3bf4da){var _0x5e1c98=_0x40041b['user']['get']({'plain':!![]});if(!_0x5e1c98)throw new Error(_0xff42('0x5c'));if(_0x5e1c98[_0xff42('0x5d')]===_0xff42('0x5e')){var _0x57be0d=_0x3bf4da[_0xff42('0x5f')]({'plain':!![]});var _0x5a5f19=_0xff42('0x60');return db[_0xff42('0x61')][_0xff42('0x5b')]({'where':{'name':_0x5a5f19,'userProfileId':_0x5e1c98[_0xff42('0x62')]},'raw':!![]})['then'](function(_0x5a4997){if(_0x5a4997&&_0x5a4997[_0xff42('0x63')]===0x0){return db[_0xff42('0x36')][_0xff42('0x64')]({'name':_0x57be0d['name'],'resourceId':_0x57be0d['id'],'type':_0x5a4997[_0xff42('0x38')],'sectionId':_0x5a4997['id']},{})[_0xff42('0x21')](function(){return _0x3bf4da;});}else{return _0x3bf4da;}})[_0xff42('0x56')](function(_0x1aa8a5){logger[_0xff42('0x27')](_0xff42('0x65'),_0x1aa8a5);throw _0x1aa8a5;});}return _0x3bf4da;})['then'](respondWithResult(_0x30044a,0xc9))[_0xff42('0x56')](handleError(_0x30044a,null));};exports[_0xff42('0x66')]=function(_0x4777e8,_0x1a40ae){if(_0x4777e8['body']['id']){delete _0x4777e8[_0xff42('0x67')]['id'];}return db['OpenchannelAccount'][_0xff42('0x5b')]({'where':{'id':_0x4777e8[_0xff42('0x57')]['id']},'include':[{'model':db[_0xff42('0x58')],'as':_0xff42('0x3b')}]})[_0xff42('0x21')](handleEntityNotFound(_0x1a40ae,null))[_0xff42('0x21')](saveUpdates(_0x4777e8['body'],null))[_0xff42('0x21')](respondWithResult(_0x1a40ae,null))[_0xff42('0x56')](handleError(_0x1a40ae,null));};exports[_0xff42('0x35')]=function(_0x5f1e52,_0x146e71){return db['OpenchannelAccount'][_0xff42('0x5b')]({'where':{'id':_0x5f1e52[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x146e71,null))[_0xff42('0x21')](removeEntity(_0x146e71,null))[_0xff42('0x56')](handleError(_0x146e71,null));};exports[_0xff42('0x68')]=function(_0x32399c,_0x56fe6c){return db[_0xff42('0x3d')][_0xff42('0x68')]()['then'](respondWithResult(_0x56fe6c,null))[_0xff42('0x56')](handleError(_0x56fe6c,null));};exports[_0xff42('0x69')]=function(_0x3b87d4,_0x46588c,_0x4ca863){if(_0x3b87d4['body']['id']){delete _0x3b87d4[_0xff42('0x67')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3b87d4['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x46588c,null))['then'](function(_0x4eb5f9){if(_0x4eb5f9){_0x3b87d4['body'][_0xff42('0x6a')]=_0x4eb5f9['id'];return db['Disposition']['create'](_0x3b87d4[_0xff42('0x67')]);}})[_0xff42('0x21')](respondWithResult(_0x46588c,null))[_0xff42('0x56')](handleError(_0x46588c,null));};exports[_0xff42('0x6b')]=function(_0x1f7145,_0x4a3417,_0x2f19b1){var _0xf4b226={'raw':![],'where':{}};var _0x5e41b3={};var _0x215321={'count':0x0,'rows':[]};return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x1f7145[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x4a3417,null))[_0xff42('0x21')](function(_0x20fd57){if(_0x20fd57){_0x5e41b3[_0xff42('0x42')]=_[_0xff42('0x43')](db['Disposition'][_0xff42('0x3e')]);_0x5e41b3[_0xff42('0x44')]=_[_0xff42('0x43')](_0x1f7145[_0xff42('0x44')]);_0x5e41b3['filters']=_[_0xff42('0x45')](_0x5e41b3[_0xff42('0x42')],_0x5e41b3[_0xff42('0x44')]);_0xf4b226[_0xff42('0x46')]=_[_0xff42('0x45')](_0x5e41b3[_0xff42('0x42')],qs[_0xff42('0x47')](_0x1f7145[_0xff42('0x44')][_0xff42('0x47')]));_0xf4b226[_0xff42('0x46')]=_0xf4b226['attributes'][_0xff42('0x59')]?_0xf4b226[_0xff42('0x46')]:_0x5e41b3['model'];if(!_0x1f7145[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0xf4b226['limit']=qs[_0xff42('0x31')](_0x1f7145[_0xff42('0x44')][_0xff42('0x31')]);_0xf4b226[_0xff42('0x2e')]=qs[_0xff42('0x2e')](_0x1f7145[_0xff42('0x44')][_0xff42('0x2e')]);}_0xf4b226[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x1f7145[_0xff42('0x44')][_0xff42('0x4b')]);_0xf4b226[_0xff42('0x4c')]=qs['filters'](_[_0xff42('0x4e')](_0x1f7145['query'],_0x5e41b3[_0xff42('0x4d')]));_0xf4b226['where'][_0xff42('0x6a')]=_0x20fd57['id'];if(_0x1f7145[_0xff42('0x44')][_0xff42('0x51')]){_0xf4b226[_0xff42('0x4c')]=_[_0xff42('0x4f')](_0xf4b226['where'],{'$or':_[_0xff42('0x3c')](_0xf4b226[_0xff42('0x46')],function(_0x4849f2){var _0x214614={};_0x214614[_0x4849f2]={'$like':'%'+_0x1f7145[_0xff42('0x44')][_0xff42('0x51')]+'%'};return _0x214614;})});}_0xf4b226=_[_0xff42('0x4f')]({},_0xf4b226,_0x1f7145[_0xff42('0x5a')]);return db[_0xff42('0x6d')][_0xff42('0x30')]({'where':_0xf4b226[_0xff42('0x4c')]})[_0xff42('0x21')](function(_0x4fa58e){_0x215321[_0xff42('0x30')]=_0x4fa58e;if(_0x1f7145['query']['includeAll']){_0xf4b226[_0xff42('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xff42('0x54')](_0xf4b226);})['then'](function(_0x1be45b){_0x215321['rows']=_0x1be45b;return _0x215321;});}})[_0xff42('0x21')](respondWithFilteredResult(_0x4a3417,_0xf4b226))[_0xff42('0x56')](handleError(_0x4a3417,null));};exports[_0xff42('0x6e')]=function(_0x594613,_0x1b4a55,_0x23262f){return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0x594613[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x1b4a55,null))[_0xff42('0x21')](function(_0xbee7ea){if(_0xbee7ea){return _0xbee7ea['removeDispositions'](_0x594613[_0xff42('0x44')][_0xff42('0x6f')]);}})[_0xff42('0x21')](respondWithStatusCode(_0x1b4a55,null))['catch'](handleError(_0x1b4a55,null));};exports[_0xff42('0x70')]=function(_0x14f547,_0x481cf7,_0x2b7dec){if(_0x14f547['body']['id']){delete _0x14f547['body']['id'];}return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0x14f547[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x481cf7,null))['then'](function(_0x2ae19f){if(_0x2ae19f){_0x14f547[_0xff42('0x67')][_0xff42('0x6a')]=_0x2ae19f['id'];return db[_0xff42('0x71')]['create'](_0x14f547[_0xff42('0x67')]);}})[_0xff42('0x21')](respondWithResult(_0x481cf7,null))['catch'](handleError(_0x481cf7,null));};exports[_0xff42('0x72')]=function(_0x51f11c,_0x51853b,_0xb955d3){var _0x1c1bf0={'raw':![],'where':{}};var _0x4148fd={};var _0x58b5d4={'count':0x0,'rows':[]};return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x51f11c['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x51853b,null))[_0xff42('0x21')](function(_0x1455e7){if(_0x1455e7){_0x4148fd[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0x71')]['rawAttributes']);_0x4148fd[_0xff42('0x44')]=_[_0xff42('0x43')](_0x51f11c[_0xff42('0x44')]);_0x4148fd[_0xff42('0x4d')]=_[_0xff42('0x45')](_0x4148fd[_0xff42('0x42')],_0x4148fd['query']);_0x1c1bf0[_0xff42('0x46')]=_['intersection'](_0x4148fd[_0xff42('0x42')],qs['fields'](_0x51f11c[_0xff42('0x44')][_0xff42('0x47')]));_0x1c1bf0[_0xff42('0x46')]=_0x1c1bf0['attributes'][_0xff42('0x59')]?_0x1c1bf0['attributes']:_0x4148fd[_0xff42('0x42')];if(!_0x51f11c[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0x1c1bf0[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x51f11c[_0xff42('0x44')]['limit']);_0x1c1bf0[_0xff42('0x2e')]=qs[_0xff42('0x2e')](_0x51f11c['query'][_0xff42('0x2e')]);}_0x1c1bf0[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x51f11c['query'][_0xff42('0x4b')]);_0x1c1bf0['where']=qs[_0xff42('0x4d')](_[_0xff42('0x4e')](_0x51f11c['query'],_0x4148fd['filters']));_0x1c1bf0[_0xff42('0x4c')][_0xff42('0x6a')]=_0x1455e7['id'];if(_0x51f11c[_0xff42('0x44')][_0xff42('0x51')]){_0x1c1bf0['where']=_['merge'](_0x1c1bf0[_0xff42('0x4c')],{'$or':_[_0xff42('0x3c')](_0x1c1bf0[_0xff42('0x46')],function(_0x255f6){var _0xb0a153={};_0xb0a153[_0x255f6]={'$like':'%'+_0x51f11c['query'][_0xff42('0x51')]+'%'};return _0xb0a153;})});}_0x1c1bf0=_['merge']({},_0x1c1bf0,_0x51f11c[_0xff42('0x5a')]);return db['CannedAnswer'][_0xff42('0x30')]({'where':_0x1c1bf0[_0xff42('0x4c')]})['then'](function(_0x3ff122){_0x58b5d4[_0xff42('0x30')]=_0x3ff122;if(_0x51f11c[_0xff42('0x44')][_0xff42('0x52')]){_0x1c1bf0[_0xff42('0x53')]=[{'all':!![]}];}return db[_0xff42('0x71')]['findAll'](_0x1c1bf0);})[_0xff42('0x21')](function(_0x105ff1){_0x58b5d4[_0xff42('0x55')]=_0x105ff1;return _0x58b5d4;});}})[_0xff42('0x21')](respondWithFilteredResult(_0x51853b,_0x1c1bf0))[_0xff42('0x56')](handleError(_0x51853b,null));};exports[_0xff42('0x73')]=function(_0x309ea0,_0x7e4f9f,_0x366a63){return db[_0xff42('0x3d')]['find']({'where':{'id':_0x309ea0['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x7e4f9f,null))[_0xff42('0x21')](function(_0x5dbaaa){if(_0x5dbaaa){return _0x5dbaaa[_0xff42('0x73')](_0x309ea0[_0xff42('0x44')][_0xff42('0x6f')]);}})[_0xff42('0x21')](respondWithStatusCode(_0x7e4f9f,null))[_0xff42('0x56')](handleError(_0x7e4f9f,null));};exports[_0xff42('0x74')]=function(_0x9a51cd,_0x1e30ee,_0x1df673){var _0x2519f1={'body':_0x9a51cd[_0xff42('0x67')],'channel':_0xff42('0x75')};var _0x46badc=[];var _0x4a4519=[];var _0x1b2341={};var _0x266300=![];return db['CmContact'][_0xff42('0x68')]()['then'](function(_0x127d9f){if(!_0x127d9f){throw new db[(_0xff42('0x76'))][(_0xff42('0x77'))](_0xff42('0x78'));}_0x46badc=_[_0xff42('0x79')](_[_0xff42('0x43')](_0x127d9f),['createdAt',_0xff42('0x7a')]);_0x4a4519=_[_0xff42('0x79')](_[_0xff42('0x43')](_0x127d9f),[_0xff42('0x7b'),_0xff42('0x7a'),_0xff42('0x7c'),_0xff42('0x7d')]);if(_0x9a51cd[_0xff42('0x67')]['id']){delete _0x9a51cd[_0xff42('0x67')]['id'];}if(_[_0xff42('0x7e')](_0x9a51cd[_0xff42('0x67')][_0xff42('0x7f')])){throw new db[(_0xff42('0x76'))]['ValidationError'](_0xff42('0x80'));}if(_['isNil'](_0x9a51cd[_0xff42('0x67')][_0xff42('0x67')])||_0x9a51cd[_0xff42('0x67')]['body']===''){throw new db['Sequelize'][(_0xff42('0x77'))](_0xff42('0x81'));}if(_[_0xff42('0x7e')](_0x9a51cd[_0xff42('0x67')]['mapKey'])){throw new db[(_0xff42('0x76'))][(_0xff42('0x77'))](_0xff42('0x82')+_0x4a4519);}if(!_[_0xff42('0x83')](_0x4a4519,_0x9a51cd['body'][_0xff42('0x84')])){throw new db['Sequelize'][(_0xff42('0x77'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a4519);}_0x1b2341[_0x9a51cd[_0xff42('0x67')]['mapKey']]=_0x9a51cd[_0xff42('0x67')][_0xff42('0x7f')];})[_0xff42('0x21')](function(){return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0x9a51cd[_0xff42('0x57')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0xff42('0x85'),'where':_0x1b2341,'limit':0x1,'order':[[_0xff42('0x7a'),_0xff42('0x86')]]}]},{'model':db['OpenchannelApplication'],'as':_0xff42('0x87')}]});})[_0xff42('0x21')](handleEntityNotFound(_0x1e30ee,null))['then'](function(_0x1ab935){if(_0x1ab935&&_0x1ab935[_0xff42('0x88')]){_0x2519f1['account']=_0x1ab935;_0x2519f1['applications']=_0x1ab935[_0xff42('0x87')];_0x2519f1['list']=_0x1ab935[_0xff42('0x88')];_0x2519f1['applications']=_[_0xff42('0x89')](_0x2519f1['applications'],['priority'],['asc']);if(_0x2519f1['account'][_0xff42('0x87')]){delete _0x2519f1['account'][_0xff42('0x87')];}if(_0x2519f1[_0xff42('0x8a')]['List']&&_0x2519f1[_0xff42('0x8a')]['List']['Contacts'][_0xff42('0x59')]){return _0x2519f1[_0xff42('0x8a')]['List']['Contacts'][0x0];}var _0x1480c1=_[_0xff42('0x8b')](_0x9a51cd[_0xff42('0x67')],{'firstName':_0x9a51cd[_0xff42('0x67')][_0xff42('0x7f')],'ListId':_0x1ab935[_0xff42('0x7d')]});_0x1480c1[_0x9a51cd['body'][_0xff42('0x84')]]=_0x9a51cd['body']['from'];return db['CmContact']['create'](_0x1480c1,{'fields':_0x46badc,'raw':!![]});}})[_0xff42('0x21')](handleEntityNotFound(_0x1e30ee,null))[_0xff42('0x21')](function(_0x3979b2){_0x2519f1[_0xff42('0x8c')]=_0x3979b2;if(_0x3979b2){var _0x37c5e8={'ContactId':_0x3979b2['id'],'OpenchannelAccountId':_0x9a51cd['params']['id'],'from':(_0x3979b2[_0xff42('0x8d')]||'')+'\x20'+(_0x3979b2[_0xff42('0x8e')]||'')};var _0xe2fc7a={'OpenchannelAccountId':_0x9a51cd[_0xff42('0x57')]['id'],'closed':![]};if(_0x9a51cd['body'][_0xff42('0x8f')]){_0xe2fc7a[_0xff42('0x8f')]=_0x9a51cd[_0xff42('0x67')][_0xff42('0x8f')];return db[_0xff42('0x90')][_0xff42('0x5b')]({'where':_0xe2fc7a})['then'](function(_0x33e3c2){if(_0x33e3c2){return[_0x33e3c2,![]];}_0x37c5e8[_0xff42('0x8f')]=_0x9a51cd[_0xff42('0x67')]['threadId'];_0x37c5e8[_0xff42('0x91')]=_0x9a51cd['body'][_0xff42('0x91')];return db[_0xff42('0x90')]['create'](_0x37c5e8)[_0xff42('0x21')](function(_0x5503cf){return[_0x5503cf,!![]];});});}else{_0xe2fc7a['threadId']=null;}_0xe2fc7a[_0xff42('0x92')]=_0x3979b2['id'];return db[_0xff42('0x90')][_0xff42('0x5b')]({'where':_0xe2fc7a})[_0xff42('0x21')](function(_0x4c8826){if(_0x4c8826){return[_0x4c8826,![]];}return db[_0xff42('0x90')]['create'](_0x37c5e8)[_0xff42('0x21')](function(_0x62f5fb){return[_0x62f5fb,!![]];});});}})[_0xff42('0x93')](function(_0x57be36,_0x15395a){if(_0x57be36){_0x266300=_0x15395a;if(!_0x15395a){var _0x45369e={'from':(_0x2519f1[_0xff42('0x8c')][_0xff42('0x8d')]||'')+'\x20'+(_0x2519f1[_0xff42('0x8c')][_0xff42('0x8e')]||'')};if(_0x9a51cd['body'][_0xff42('0x8f')]&&_0x9a51cd['body']['messageId']&&_0x9a51cd[_0xff42('0x67')][_0xff42('0x8f')]!=_0x9a51cd['body'][_0xff42('0x94')]){_0x45369e[_0xff42('0x8f')]=_0x9a51cd[_0xff42('0x67')][_0xff42('0x94')];}return _0x57be36['update'](_0x45369e);}else{return _0x57be36;}}})['then'](function(_0x4e31cc){_0x2519f1[_0xff42('0x95')]=_0x4e31cc['get']({'plain':!![]});_0x2519f1['interaction']['created']=_0x266300;if(_0x2519f1[_0xff42('0x95')][_0xff42('0x96')]){if(_0x2519f1[_0xff42('0x8a')][_0xff42('0x97')]){_0x2519f1[_0xff42('0x98')][_0xff42('0x99')]({'id':0x0,'priority':_0x2519f1['applications']['length']+0x1,'app':_0xff42('0x9a'),'appdata':'unmanaged','interval':_0xff42('0x9b')});}}return db['OpenchannelMessage'][_0xff42('0x64')]({'body':_0x9a51cd[_0xff42('0x67')][_0xff42('0x67')],'OpenchannelAccountId':_0x9a51cd[_0xff42('0x57')]['id'],'OpenchannelInteractionId':_0x4e31cc['id'],'direction':'in','ContactId':_0x2519f1['contact']['id'],'AttachmentId':_0x9a51cd['body']['AttachmentId']});})['then'](function(_0x19ec6d){_0x2519f1['message']=_0x19ec6d;if(_0x2519f1[_0xff42('0x95')][_0xff42('0x9c')]){return db[_0xff42('0x9d')][_0xff42('0x5b')]({'attributes':['id','name'],'where':{'id':_0x2519f1[_0xff42('0x95')]['UserId']}})['then'](function(_0x38c66d){if(_0x38c66d){_0x2519f1['applications'][_0xff42('0x9e')]({'id':0x0,'priority':0x0,'app':_0xff42('0x9f'),'appdata':_0x38c66d[_0xff42('0x38')]+','+(_0x2519f1[_0xff42('0x8a')][_0xff42('0xa0')]||0xa),'interval':_0xff42('0x9b')});_0x2519f1[_0xff42('0xa1')]=![];}return respondWithRpcPromise(_0xff42('0xa2'),'startRouting',_0x2519f1);});}return respondWithRpcPromise('Start',_0xff42('0xa3'),_0x2519f1);})[_0xff42('0x21')](function(_0x54e6f8){respondWithRpcPromise(_0xff42('0xa4'),_0xff42('0xa4'),{'event':_0xff42('0x74'),'message':_0x54e6f8},client9002);return _0x54e6f8;})[_0xff42('0x21')](respondWithResult(_0x1e30ee,null))['catch'](handleError(_0x1e30ee,null));};exports[_0xff42('0xa5')]=function(_0x488a7e,_0x5abe79,_0x1dc2cd){return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x488a7e[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x5abe79,null))[_0xff42('0x21')](function(_0x512514){if(_0x512514){return db[_0xff42('0xa6')][_0xff42('0xa7')](function(_0x41d496){return db[_0xff42('0xa8')]['destroy']({'where':{'OpenchannelAccountId':_0x488a7e[_0xff42('0x57')]['id']},'transaction':_0x41d496})[_0xff42('0x21')](function(_0x1b7e41){var _0x31381c=_[_0xff42('0x3c')](_0x488a7e[_0xff42('0x67')],function(_0x5f085a){_0x5f085a[_0xff42('0x6a')]=_0x488a7e[_0xff42('0x57')]['id'];return _0x5f085a;});return db[_0xff42('0xa8')][_0xff42('0xa9')](_0x31381c,{'transaction':_0x41d496});});})[_0xff42('0x21')](function(){return db[_0xff42('0xa8')][_0xff42('0xaa')]({'where':{'OpenchannelAccountId':_0x488a7e['params']['id']},'order':_0xff42('0xab')});});}})[_0xff42('0x21')](respondWithResult(_0x5abe79,null))[_0xff42('0x56')](handleError(_0x5abe79,null));};exports[_0xff42('0xac')]=function(_0x2bba1a,_0x42a823,_0x22c6f7){var _0x50672e={};var _0x3e18a1={};var _0x415370;var _0x531d2f;return db[_0xff42('0x3d')]['findOne']({'where':{'id':_0x2bba1a[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x42a823,null))['then'](function(_0x19cf71){if(_0x19cf71){_0x415370=_0x19cf71;_0x3e18a1[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0xa8')][_0xff42('0x3e')]);_0x3e18a1['query']=_[_0xff42('0x43')](_0x2bba1a[_0xff42('0x44')]);_0x3e18a1['filters']=_['intersection'](_0x3e18a1[_0xff42('0x42')],_0x3e18a1[_0xff42('0x44')]);_0x50672e[_0xff42('0x46')]=_['intersection'](_0x3e18a1[_0xff42('0x42')],qs[_0xff42('0x47')](_0x2bba1a[_0xff42('0x44')][_0xff42('0x47')]));_0x50672e[_0xff42('0x46')]=_0x50672e['attributes']['length']?_0x50672e[_0xff42('0x46')]:_0x3e18a1[_0xff42('0x42')];_0x50672e[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x2bba1a[_0xff42('0x44')][_0xff42('0x4b')]);_0x50672e[_0xff42('0x4c')]=qs[_0xff42('0x4d')](_[_0xff42('0x4e')](_0x2bba1a[_0xff42('0x44')],_0x3e18a1[_0xff42('0x4d')]));if(_0x2bba1a[_0xff42('0x44')][_0xff42('0x51')]){_0x50672e[_0xff42('0x4c')]=_[_0xff42('0x4f')](_0x50672e[_0xff42('0x4c')],{'$or':_['map'](_0x50672e[_0xff42('0x46')],function(_0x355a21){var _0x1ddc75={};_0x1ddc75[_0x355a21]={'$like':'%'+_0x2bba1a['query'][_0xff42('0x51')]+'%'};return _0x1ddc75;})});}_0x50672e=_['merge']({},_0x50672e,_0x2bba1a[_0xff42('0x5a')]);return _0x415370['getApplications'](_0x50672e);}})[_0xff42('0x21')](function(_0x2f2d31){if(_0x2f2d31){_0x531d2f=_0x2f2d31[_0xff42('0x59')];if(!_0x2bba1a[_0xff42('0x44')][_0xff42('0x48')]('nolimit')){_0x50672e['limit']=qs[_0xff42('0x31')](_0x2bba1a[_0xff42('0x44')]['limit']);_0x50672e['offset']=qs[_0xff42('0x2e')](_0x2bba1a[_0xff42('0x44')][_0xff42('0x2e')]);}return _0x415370[_0xff42('0xac')](_0x50672e);}})['then'](function(_0x5c5906){if(_0x5c5906){return _0x5c5906?{'count':_0x531d2f,'rows':_0x5c5906}:null;}})[_0xff42('0x21')](respondWithResult(_0x42a823,null))['catch'](handleError(_0x42a823,null));};exports[_0xff42('0xad')]=function(_0x23af2d,_0x3c8803,_0x2a523e){var _0x41988b={'raw':![],'where':{}};var _0x2f3429={};var _0x1095fa={'count':0x0,'rows':[]};return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x23af2d[_0xff42('0x57')]['id']}})['then'](handleEntityNotFound(_0x3c8803,null))['then'](function(_0x21df36){if(_0x21df36){_0x2f3429[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0x90')][_0xff42('0x3e')]);_0x2f3429[_0xff42('0x44')]=_['keys'](_0x23af2d[_0xff42('0x44')]);_0x2f3429[_0xff42('0x4d')]=_[_0xff42('0x45')](_0x2f3429[_0xff42('0x42')],_0x2f3429['query']);_0x41988b[_0xff42('0x46')]=_['intersection'](_0x2f3429['model'],qs[_0xff42('0x47')](_0x23af2d[_0xff42('0x44')][_0xff42('0x47')]));_0x41988b['attributes']=_0x41988b[_0xff42('0x46')]['length']?_0x41988b[_0xff42('0x46')]:_0x2f3429['model'];if(!_0x23af2d[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0x41988b[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x23af2d[_0xff42('0x44')]['limit']);_0x41988b[_0xff42('0x2e')]=qs[_0xff42('0x2e')](_0x23af2d['query'][_0xff42('0x2e')]);}_0x41988b[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x23af2d[_0xff42('0x44')][_0xff42('0x4b')]);_0x41988b[_0xff42('0x4c')]=qs[_0xff42('0x4d')](_['pick'](_0x23af2d[_0xff42('0x44')],_0x2f3429[_0xff42('0x4d')]));_0x41988b['where']['OpenchannelAccountId']=_0x21df36['id'];if(_0x23af2d[_0xff42('0x44')][_0xff42('0x51')]){_0x41988b[_0xff42('0x4c')]=_['merge'](_0x41988b[_0xff42('0x4c')],{'$or':_[_0xff42('0x3c')](_0x41988b[_0xff42('0x46')],function(_0x45edad){var _0x317ec3={};_0x317ec3[_0x45edad]={'$like':'%'+_0x23af2d[_0xff42('0x44')][_0xff42('0x51')]+'%'};return _0x317ec3;})});}_0x41988b=_[_0xff42('0x4f')]({},_0x41988b,_0x23af2d[_0xff42('0x5a')]);return db[_0xff42('0x90')][_0xff42('0x30')]({'where':_0x41988b[_0xff42('0x4c')]})[_0xff42('0x21')](function(_0x4b2274){_0x1095fa[_0xff42('0x30')]=_0x4b2274;if(_0x23af2d['query'][_0xff42('0x52')]){_0x41988b[_0xff42('0x53')]=[{'model':db['CmContact'],'as':_0xff42('0xae'),'required':![]},{'model':db[_0xff42('0x9d')],'as':_0xff42('0xaf'),'attributes':['name',_0xff42('0xb0'),'internal'],'required':![]},{'model':db['Tag'],'as':_0xff42('0xb1'),'attributes':['id','name',_0xff42('0xb2')],'where':_0x23af2d[_0xff42('0x44')][_0xff42('0xb3')]?{'id':_0x23af2d[_0xff42('0x44')][_0xff42('0xb3')]}:undefined,'required':_0x23af2d[_0xff42('0x44')][_0xff42('0xb3')]?!![]:![]}];}return db[_0xff42('0x90')][_0xff42('0x54')](_0x41988b);})[_0xff42('0x21')](function(_0x216522){_0x1095fa[_0xff42('0x55')]=_0x216522;return _0x1095fa;});}})['then'](respondWithFilteredResult(_0x3c8803,_0x41988b))[_0xff42('0x56')](handleError(_0x3c8803,null));};exports[_0xff42('0xb4')]=function(_0x32f8af,_0x3cdc72,_0x567431){return db[_0xff42('0x3d')]['find']({'where':{'id':_0x32f8af[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x3cdc72,null))[_0xff42('0x21')](function(_0x54efab){if(_0x54efab){return _0x54efab[_0xff42('0xb4')](_0x32f8af[_0xff42('0x67')][_0xff42('0x6f')],_['omit'](_0x32f8af[_0xff42('0x67')],[_0xff42('0x6f'),'id'])||{})[_0xff42('0x93')](function(_0x4af4f7){for(var _0x3a9fce=0x0;_0x3a9fce<_0x32f8af['body'][_0xff42('0x6f')][_0xff42('0x59')];_0x3a9fce+=0x1){socket[_0xff42('0xb5')](_0xff42('0xb6'),{'UserId':Number(_0x32f8af[_0xff42('0x67')][_0xff42('0x6f')][_0x3a9fce]),'OpenchannelAccountId':Number(_0x32f8af[_0xff42('0x57')]['id'])});}return _0x4af4f7;});}})[_0xff42('0x21')](respondWithResult(_0x3cdc72,null))[_0xff42('0x56')](handleError(_0x3cdc72,null));};exports[_0xff42('0xb7')]=function(_0x22cfaa,_0x303627,_0x594c67){return db[_0xff42('0x3d')]['find']({'where':{'id':_0x22cfaa[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x303627,null))[_0xff42('0x21')](function(_0x5c409d){if(_0x5c409d){return _0x5c409d[_0xff42('0xb7')](_0x22cfaa['query'][_0xff42('0x6f')])['then'](function(){if(_[_0xff42('0xb8')](_0x22cfaa[_0xff42('0x44')][_0xff42('0x6f')])){for(var _0x44f5c5=0x0;_0x44f5c5<_0x22cfaa[_0xff42('0x44')]['ids'][_0xff42('0x59')];_0x44f5c5+=0x1){socket[_0xff42('0xb5')](_0xff42('0xb9'),{'UserId':Number(_0x22cfaa[_0xff42('0x44')]['ids'][_0x44f5c5]),'OpenchannelAccountId':Number(_0x22cfaa[_0xff42('0x57')]['id'])});}}else{socket[_0xff42('0xb5')](_0xff42('0xb9'),{'UserId':Number(_0x22cfaa[_0xff42('0x44')][_0xff42('0x6f')]),'OpenchannelAccountId':Number(_0x22cfaa[_0xff42('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x303627,null))[_0xff42('0x56')](handleError(_0x303627,null));};exports[_0xff42('0xba')]=function(_0x26c7ef,_0x2a214b,_0x4b1a81){var _0x12136f={};var _0x5a3515={};var _0x427e1d;var _0x25f148;return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x26c7ef['params']['id']}})['then'](handleEntityNotFound(_0x2a214b,null))[_0xff42('0x21')](function(_0x259909){if(_0x259909){_0x427e1d=_0x259909;_0x5a3515[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0x9d')][_0xff42('0x3e')]);_0x5a3515[_0xff42('0x44')]=_['keys'](_0x26c7ef[_0xff42('0x44')]);_0x5a3515[_0xff42('0x4d')]=_['intersection'](_0x5a3515[_0xff42('0x42')],_0x5a3515[_0xff42('0x44')]);_0x12136f['attributes']=_['intersection'](_0x5a3515[_0xff42('0x42')],qs['fields'](_0x26c7ef[_0xff42('0x44')][_0xff42('0x47')]));_0x12136f[_0xff42('0x46')]=_0x12136f[_0xff42('0x46')][_0xff42('0x59')]?_0x12136f[_0xff42('0x46')]:_0x5a3515['model'];_0x12136f[_0xff42('0x4a')]=qs['sort'](_0x26c7ef[_0xff42('0x44')][_0xff42('0x4b')]);_0x12136f['where']=qs['filters'](_[_0xff42('0x4e')](_0x26c7ef['query'],_0x5a3515['filters']));if(_0x26c7ef['query'][_0xff42('0x51')]){_0x12136f[_0xff42('0x4c')]=_[_0xff42('0x4f')](_0x12136f[_0xff42('0x4c')],{'$or':_['map'](_0x12136f[_0xff42('0x46')],function(_0x1f716d){var _0x285c75={};_0x285c75[_0x1f716d]={'$like':'%'+_0x26c7ef[_0xff42('0x44')][_0xff42('0x51')]+'%'};return _0x285c75;})});}_0x12136f=_[_0xff42('0x4f')]({},_0x12136f,_0x26c7ef[_0xff42('0x5a')]);return _0x427e1d[_0xff42('0xba')](_0x12136f);}})[_0xff42('0x21')](function(_0x41f3c8){if(_0x41f3c8){_0x25f148=_0x41f3c8[_0xff42('0x59')];if(!_0x26c7ef[_0xff42('0x44')][_0xff42('0x48')]('nolimit')){_0x12136f[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x26c7ef['query']['limit']);_0x12136f['offset']=qs[_0xff42('0x2e')](_0x26c7ef['query']['offset']);}return _0x427e1d[_0xff42('0xba')](_0x12136f);}})['then'](function(_0x57d28c){if(_0x57d28c){return _0x57d28c?{'count':_0x25f148,'rows':_0x57d28c}:null;}})[_0xff42('0x21')](respondWithResult(_0x2a214b,null))[_0xff42('0x56')](handleError(_0x2a214b,null));};exports[_0xff42('0x39')]=function(_0x4368ef,_0x1f0893,_0x427e7d){var _0x56a7d9,_0x5ee8b0,_0x39ba6c;if(_[_0xff42('0x7e')](_0x4368ef[_0xff42('0x67')]['body'])||_0x4368ef[_0xff42('0x67')]['body']===''){throw new db[(_0xff42('0x76'))][(_0xff42('0x77'))](_0xff42('0x81'));}if(_[_0xff42('0x7e')](_0x4368ef[_0xff42('0x67')]['to'])){}_0x56a7d9=_0x4368ef[_0xff42('0x67')]['to'];return db['OpenchannelAccount'][_0xff42('0x6c')]({'where':{'id':_0x4368ef['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x1f0893,null))['then'](function(_0xa419fe){if(_0xa419fe){return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0xa419fe['id']},'include':[{'model':db[_0xff42('0xbb')],'as':_0xff42('0x88'),'include':[{'model':db[_0xff42('0xbc')],'as':_0xff42('0x85'),'where':{[_0xa419fe[_0xff42('0x84')]]:_0x56a7d9},'limit':0x1,'order':[[_0xff42('0x7a'),_0xff42('0x86')]]}]}]})[_0xff42('0x21')](handleEntityNotFound(_0x1f0893,null))['then'](function(_0x801d85){if(_0x801d85&&_0x801d85[_0xff42('0x88')]){_0x5ee8b0=_0x801d85[_0xff42('0x5f')]({'plain':!![]});if(_0x5ee8b0[_0xff42('0x88')]&&_0x5ee8b0[_0xff42('0x88')]['Contacts'][_0xff42('0x59')]){return _0x5ee8b0['List'][_0xff42('0x85')][0x0];}return db['CmContact'][_0xff42('0x64')](_[_0xff42('0x8b')](_0x4368ef['body'],{'firstName':_0x56a7d9,[_0x801d85['mapKey']]:_0x56a7d9,'phone':_0x56a7d9,'ListId':_0x5ee8b0[_0xff42('0x7d')]}));}})[_0xff42('0x21')](handleEntityNotFound(_0x1f0893,null))[_0xff42('0x21')](function(_0x5ead30){if(_0x5ead30){_0x39ba6c=_0x5ead30;return db[_0xff42('0x90')]['find']({'where':{'ContactId':_0x39ba6c['id'],'closed':![],'OpenchannelAccountId':_0x5ee8b0['id']}})[_0xff42('0x21')](function(_0x372cbd){if(_0x372cbd){return[_0x372cbd,![]];}return db[_0xff42('0x90')][_0xff42('0x64')]({'UserId':_0x4368ef[_0xff42('0x5e')]['id'],'ContactId':_0x39ba6c['id'],'OpenchannelAccountId':_0x5ee8b0['id'],'lastMsgDirection':_0xff42('0xbd'),'Messages':[_[_0xff42('0x4f')](_0x4368ef[_0xff42('0x67')],{'read':![],'body':_0x4368ef[_0xff42('0x67')][_0xff42('0x67')],'OpenchannelAccountId':_0x5ee8b0['id'],'UserId':_0x4368ef[_0xff42('0x5e')]['id'],'ContactId':_0x39ba6c['id']})]},{'include':[{'model':db[_0xff42('0xbe')],'as':_0xff42('0xbf')}]})[_0xff42('0x21')](function(_0x41d701){return[_0x41d701,!![]];});});}})['spread'](function(_0x3bf67d,_0x28dd64){if(_0x28dd64){return _0x3bf67d;}return db['OpenchannelMessage'][_0xff42('0x64')](_['merge'](_0x4368ef[_0xff42('0x67')],{'read':![],'body':_0x4368ef['body'][_0xff42('0x67')],'OpenchannelAccountId':_0x5ee8b0['id'],'OpenchannelInteractionId':_0x3bf67d['id'],'UserId':_0x4368ef[_0xff42('0x5e')]['id'],'ContactId':_0x39ba6c['id']}))['then'](function(_0x28a13d){_0x3bf67d[_0xff42('0xc0')][_0xff42('0xbf')]=[];_0x3bf67d[_0xff42('0xc0')][_0xff42('0xbf')][_0xff42('0x99')](_0x28a13d[_0xff42('0xc0')]);return _0x3bf67d;});});}})[_0xff42('0x21')](respondWithResult(_0x1f0893,null))['catch'](handleError(_0x1f0893,null));};
\ No newline at end of file
+var _0xeb2d=['lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','destroy','OpenchannelAccounts','stack','name','send','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','filters','where','merge','VIRTUAL','filter','include','show','params','includeAll','options','find','create','body','user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','OpenchannelAccountId','Disposition','findOne','hasOwnProperty','order','pick','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','notify','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','DESC','OpenchannelApplication','Applications','List','account','list','applications','orderBy','priority','asc','Contacts','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','messageId','interaction','created','autoclose','push','close','unmanaged','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','startRouting','Start','addApplications','sequelize','findAndCountAll','getApplications','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','spread','userOpenchannelAccount:save','removeAgents','emit','userOpenchannelAccount:remove','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','CmList','OpenchannelMessage','dataValues','Messages','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x11a220,_0x4e470a){var _0x20d8fe=function(_0xbedfd){while(--_0xbedfd){_0x11a220['push'](_0x11a220['shift']());}};_0x20d8fe(++_0x4e470a);}(_0xeb2d,0xb7));var _0xdeb2=function(_0x3188ab,_0x250502){_0x3188ab=_0x3188ab-0x0;var _0x4c56c1=_0xeb2d[_0x3188ab];return _0x4c56c1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdeb2('0x0'));var zipdir=require(_0xdeb2('0x1'));var jsonpatch=require(_0xdeb2('0x2'));var rp=require(_0xdeb2('0x3'));var moment=require(_0xdeb2('0x4'));var BPromise=require(_0xdeb2('0x5'));var Mustache=require(_0xdeb2('0x6'));var util=require(_0xdeb2('0x7'));var path=require(_0xdeb2('0x8'));var sox=require(_0xdeb2('0x9'));var csv=require(_0xdeb2('0xa'));var ejs=require(_0xdeb2('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdeb2('0xc'));var squel=require(_0xdeb2('0xd'));var crypto=require('crypto');var jsforce=require(_0xdeb2('0xe'));var deskjs=require(_0xdeb2('0xf'));var toCsv=require(_0xdeb2('0xa'));var querystring=require(_0xdeb2('0x10'));var Papa=require(_0xdeb2('0x11'));var Redis=require(_0xdeb2('0x12'));var authService=require(_0xdeb2('0x13'));var qs=require(_0xdeb2('0x14'));var as=require(_0xdeb2('0x15'));var hardwareService=require(_0xdeb2('0x16'));var logger=require(_0xdeb2('0x17'))(_0xdeb2('0x18'));var utils=require('../../config/utils');var config=require(_0xdeb2('0x19'));var licenseUtil=require(_0xdeb2('0x1a'));var db=require(_0xdeb2('0x1b'))['db'];config[_0xdeb2('0x1c')]=_[_0xdeb2('0x1d')](config[_0xdeb2('0x1c')],{'host':_0xdeb2('0x1e'),'port':0x18eb});var socket=require(_0xdeb2('0x1f'))(new Redis(config[_0xdeb2('0x1c')]));require('./openchannelAccount.socket')[_0xdeb2('0x20')](socket);var jayson=require(_0xdeb2('0x21'));var client=jayson[_0xdeb2('0x22')]['http']({'port':0x232c});var client9002=jayson[_0xdeb2('0x22')][_0xdeb2('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x3f6231,_0x5524d3,_0x3cc650,_0x304ed4){return new BPromise(function(_0x4106a4,_0x27628f){var _0x4c1de5=_0x304ed4||client;return _0x4c1de5['request'](_0x3f6231,_0x3cc650)[_0xdeb2('0x24')](function(_0xfc991e){logger[_0xdeb2('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x5524d3,_0xdeb2('0x26'));logger[_0xdeb2('0x27')](_0xdeb2('0x28'),_0x5524d3,_0xdeb2('0x26'),JSON[_0xdeb2('0x29')](_0xfc991e));if(_0xfc991e[_0xdeb2('0x2a')]){if(_0xfc991e[_0xdeb2('0x2a')][_0xdeb2('0x2b')]===0x1f4){logger[_0xdeb2('0x2a')](_0xdeb2('0x2c'),_0x5524d3,_0xfc991e[_0xdeb2('0x2a')][_0xdeb2('0x2d')]);return _0x27628f(_0xfc991e[_0xdeb2('0x2a')][_0xdeb2('0x2d')]);}logger['error'](_0xdeb2('0x2c'),_0x5524d3,_0xfc991e[_0xdeb2('0x2a')][_0xdeb2('0x2d')]);return _0x4106a4(_0xfc991e[_0xdeb2('0x2a')][_0xdeb2('0x2d')]);}else{logger[_0xdeb2('0x25')](_0xdeb2('0x2c'),_0x5524d3,_0xdeb2('0x26'));_0x4106a4(_0xfc991e[_0xdeb2('0x2e')][_0xdeb2('0x2d')]);}})[_0xdeb2('0x2f')](function(_0x5da8f6){logger[_0xdeb2('0x2a')]('OpenchannelAccount,\x20%s,\x20%s',_0x5524d3,_0x5da8f6);_0x27628f(_0x5da8f6);});});}function respondWithStatusCode(_0xa323e0,_0x13dc8f){_0x13dc8f=_0x13dc8f||0xcc;return function(_0x2ebea4){if(_0x2ebea4){return _0xa323e0[_0xdeb2('0x30')](_0x13dc8f);}return _0xa323e0['status'](_0x13dc8f)[_0xdeb2('0x31')]();};}function respondWithResult(_0x14126d,_0x59e974){_0x59e974=_0x59e974||0xc8;return function(_0x504284){if(_0x504284){return _0x14126d['status'](_0x59e974)[_0xdeb2('0x32')](_0x504284);}};}function respondWithFilteredResult(_0x3e7aa5,_0x2dc65b){return function(_0x507d3d){if(_0x507d3d){var _0x140eb7=typeof _0x2dc65b['offset']===_0xdeb2('0x33')&&typeof _0x2dc65b[_0xdeb2('0x34')]===_0xdeb2('0x33');var _0x4dc5cb=_0x507d3d[_0xdeb2('0x35')];var _0x87b6a3=_0x140eb7?0x0:_0x2dc65b[_0xdeb2('0x36')];var _0x189c68=_0x140eb7?_0x507d3d[_0xdeb2('0x35')]:_0x2dc65b[_0xdeb2('0x36')]+_0x2dc65b[_0xdeb2('0x34')];var _0x3872a2;if(_0x189c68>=_0x4dc5cb){_0x189c68=_0x4dc5cb;_0x3872a2=0xc8;}else{_0x3872a2=0xce;}_0x3e7aa5[_0xdeb2('0x37')](_0x3872a2);return _0x3e7aa5[_0xdeb2('0x38')](_0xdeb2('0x39'),_0x87b6a3+'-'+_0x189c68+'/'+_0x4dc5cb)['json'](_0x507d3d);}return null;};}function patchUpdates(_0x4a876b){return function(_0x223447){try{jsonpatch[_0xdeb2('0x3a')](_0x223447,_0x4a876b,!![]);}catch(_0x16617e){return BPromise[_0xdeb2('0x3b')](_0x16617e);}return _0x223447['save']();};}function saveUpdates(_0xf5a7aa,_0x3a9fea){return function(_0x4f0b77){if(_0x4f0b77){return _0x4f0b77['update'](_0xf5a7aa)[_0xdeb2('0x24')](function(_0x1f95ca){return _0x1f95ca;});}return null;};}function removeEntity(_0x1ccd4d,_0x327576){return function(_0x3ed54f){if(_0x3ed54f){return _0x3ed54f[_0xdeb2('0x3c')]()[_0xdeb2('0x24')](function(){var _0x411e30=_0x3ed54f['get']({'plain':!![]});var _0x5ba433=_0xdeb2('0x3d');return db['UserProfileResource'][_0xdeb2('0x3c')]({'where':{'type':_0x5ba433,'resourceId':_0x411e30['id']}})[_0xdeb2('0x24')](function(){return _0x3ed54f;});})['then'](function(){_0x1ccd4d[_0xdeb2('0x37')](0xcc)['end']();});}};}function handleEntityNotFound(_0xac39cd,_0x1cc2e2){return function(_0x2ab21c){if(!_0x2ab21c){_0xac39cd['sendStatus'](0x194);}return _0x2ab21c;};}function handleError(_0x22db7c,_0x41a849){_0x41a849=_0x41a849||0x1f4;return function(_0x383041){logger[_0xdeb2('0x2a')](_0x383041[_0xdeb2('0x3e')]);if(_0x383041['name']){delete _0x383041[_0xdeb2('0x3f')];}_0x22db7c[_0xdeb2('0x37')](_0x41a849)[_0xdeb2('0x40')](_0x383041);};}exports['index']=function(_0x3bcf4b,_0x8180dc){var _0x37ecac={'include':[{'model':db[_0xdeb2('0x41')],'as':_0xdeb2('0x42')}]},_0x4c4729={},_0x405481={'count':0x0,'rows':[]};var _0x1cff9a=_[_0xdeb2('0x43')](db[_0xdeb2('0x44')][_0xdeb2('0x45')],function(_0x2fbff2){return{'name':_0x2fbff2[_0xdeb2('0x46')],'type':_0x2fbff2[_0xdeb2('0x47')][_0xdeb2('0x48')]};});_0x4c4729['model']=_[_0xdeb2('0x43')](_0x1cff9a,'name');_0x4c4729[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0x3bcf4b[_0xdeb2('0x49')]);_0x4c4729['filters']=_[_0xdeb2('0x4b')](_0x4c4729[_0xdeb2('0x4c')],_0x4c4729['query']);_0x37ecac[_0xdeb2('0x4d')]=_[_0xdeb2('0x4b')](_0x4c4729['model'],qs[_0xdeb2('0x4e')](_0x3bcf4b[_0xdeb2('0x49')][_0xdeb2('0x4e')]));_0x37ecac[_0xdeb2('0x4d')]=_0x37ecac[_0xdeb2('0x4d')][_0xdeb2('0x4f')]?_0x37ecac[_0xdeb2('0x4d')]:_0x4c4729[_0xdeb2('0x4c')];if(!_0x3bcf4b[_0xdeb2('0x49')]['hasOwnProperty'](_0xdeb2('0x50'))){_0x37ecac[_0xdeb2('0x34')]=qs[_0xdeb2('0x34')](_0x3bcf4b[_0xdeb2('0x49')][_0xdeb2('0x34')]);_0x37ecac[_0xdeb2('0x36')]=qs[_0xdeb2('0x36')](_0x3bcf4b[_0xdeb2('0x49')]['offset']);}_0x37ecac['order']=qs['sort'](_0x3bcf4b[_0xdeb2('0x49')][_0xdeb2('0x51')]);_0x37ecac['where']=qs[_0xdeb2('0x52')](_['pick'](_0x3bcf4b[_0xdeb2('0x49')],_0x4c4729[_0xdeb2('0x52')]),_0x1cff9a);if(_0x3bcf4b[_0xdeb2('0x49')]['filter']){_0x37ecac[_0xdeb2('0x53')]=_[_0xdeb2('0x54')](_0x37ecac[_0xdeb2('0x53')],{'$or':_[_0xdeb2('0x43')](_0x1cff9a,function(_0x5279a4){if(_0x5279a4['type']!==_0xdeb2('0x55')){var _0x5cca83={};_0x5cca83[_0x5279a4['name']]={'$like':'%'+_0x3bcf4b[_0xdeb2('0x49')][_0xdeb2('0x56')]+'%'};return _0x5cca83;}})});}_0x37ecac=_[_0xdeb2('0x54')]({},_0x37ecac,_0x3bcf4b['options']);var _0x14db29={'where':_0x37ecac[_0xdeb2('0x53')]};return db[_0xdeb2('0x44')]['count'](_0x14db29)['then'](function(_0x583d54){_0x405481[_0xdeb2('0x35')]=_0x583d54;if(_0x3bcf4b[_0xdeb2('0x49')]['includeAll']){_0x37ecac[_0xdeb2('0x57')]=[{'all':!![]}];}return db['OpenchannelAccount']['findAll'](_0x37ecac);})['then'](function(_0x1603e7){_0x405481['rows']=_0x1603e7;return _0x405481;})[_0xdeb2('0x24')](respondWithFilteredResult(_0x8180dc,_0x37ecac))[_0xdeb2('0x2f')](handleError(_0x8180dc,null));};exports[_0xdeb2('0x58')]=function(_0x556d8c,_0xa062ed){var _0x3e6006={'raw':![],'where':{'id':_0x556d8c[_0xdeb2('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0xdeb2('0x42')}]},_0x4315cb={};_0x4315cb['model']=_['keys'](db[_0xdeb2('0x44')][_0xdeb2('0x45')]);_0x4315cb[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0x556d8c['query']);_0x4315cb[_0xdeb2('0x52')]=_[_0xdeb2('0x4b')](_0x4315cb[_0xdeb2('0x4c')],_0x4315cb[_0xdeb2('0x49')]);_0x3e6006[_0xdeb2('0x4d')]=_['intersection'](_0x4315cb['model'],qs[_0xdeb2('0x4e')](_0x556d8c[_0xdeb2('0x49')][_0xdeb2('0x4e')]));_0x3e6006[_0xdeb2('0x4d')]=_0x3e6006[_0xdeb2('0x4d')][_0xdeb2('0x4f')]?_0x3e6006[_0xdeb2('0x4d')]:_0x4315cb['model'];if(_0x556d8c[_0xdeb2('0x49')][_0xdeb2('0x5a')]){_0x3e6006[_0xdeb2('0x57')]=[{'all':!![]}];}_0x3e6006=_['merge']({},_0x3e6006,_0x556d8c[_0xdeb2('0x5b')]);return db['OpenchannelAccount'][_0xdeb2('0x5c')](_0x3e6006)[_0xdeb2('0x24')](handleEntityNotFound(_0xa062ed,null))[_0xdeb2('0x24')](respondWithResult(_0xa062ed,null))['catch'](handleError(_0xa062ed,null));};exports[_0xdeb2('0x5d')]=function(_0x4f3d93,_0x515330){return db[_0xdeb2('0x44')][_0xdeb2('0x5d')](_0x4f3d93[_0xdeb2('0x5e')],{})[_0xdeb2('0x24')](function(_0x27b97b){var _0x4e126d=_0x4f3d93[_0xdeb2('0x5f')]['get']({'plain':!![]});if(!_0x4e126d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e126d[_0xdeb2('0x60')]==='user'){var _0x276832=_0x27b97b[_0xdeb2('0x61')]({'plain':!![]});var _0x20105b=_0xdeb2('0x3d');return db['UserProfileSection'][_0xdeb2('0x5c')]({'where':{'name':_0x20105b,'userProfileId':_0x4e126d[_0xdeb2('0x62')]},'raw':!![]})[_0xdeb2('0x24')](function(_0x1fefa1){if(_0x1fefa1&&_0x1fefa1[_0xdeb2('0x63')]===0x0){return db['UserProfileResource'][_0xdeb2('0x5d')]({'name':_0x276832['name'],'resourceId':_0x276832['id'],'type':_0x1fefa1[_0xdeb2('0x3f')],'sectionId':_0x1fefa1['id']},{})[_0xdeb2('0x24')](function(){return _0x27b97b;});}else{return _0x27b97b;}})[_0xdeb2('0x2f')](function(_0x5acf91){logger[_0xdeb2('0x2a')](_0xdeb2('0x64'),_0x5acf91);throw _0x5acf91;});}return _0x27b97b;})['then'](respondWithResult(_0x515330,0xc9))[_0xdeb2('0x2f')](handleError(_0x515330,null));};exports[_0xdeb2('0x65')]=function(_0x2614f9,_0x5e1414){if(_0x2614f9[_0xdeb2('0x5e')]['id']){delete _0x2614f9[_0xdeb2('0x5e')]['id'];}return db['OpenchannelAccount'][_0xdeb2('0x5c')]({'where':{'id':_0x2614f9['params']['id']},'include':[{'model':db[_0xdeb2('0x41')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x5e1414,null))[_0xdeb2('0x24')](saveUpdates(_0x2614f9[_0xdeb2('0x5e')],null))[_0xdeb2('0x24')](respondWithResult(_0x5e1414,null))[_0xdeb2('0x2f')](handleError(_0x5e1414,null));};exports['destroy']=function(_0x18d2ac,_0x9a52f7){return db[_0xdeb2('0x44')]['find']({'where':{'id':_0x18d2ac[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x9a52f7,null))[_0xdeb2('0x24')](removeEntity(_0x9a52f7,null))[_0xdeb2('0x2f')](handleError(_0x9a52f7,null));};exports['describe']=function(_0x3efc00,_0x1fa466){return db[_0xdeb2('0x44')][_0xdeb2('0x66')]()[_0xdeb2('0x24')](respondWithResult(_0x1fa466,null))[_0xdeb2('0x2f')](handleError(_0x1fa466,null));};exports['addDisposition']=function(_0x55e5db,_0x5a3769,_0x378f2e){if(_0x55e5db['body']['id']){delete _0x55e5db['body']['id'];}return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x55e5db[_0xdeb2('0x59')]['id']}})['then'](handleEntityNotFound(_0x5a3769,null))[_0xdeb2('0x24')](function(_0x571b5d){if(_0x571b5d){_0x55e5db['body'][_0xdeb2('0x67')]=_0x571b5d['id'];return db[_0xdeb2('0x68')]['create'](_0x55e5db[_0xdeb2('0x5e')]);}})['then'](respondWithResult(_0x5a3769,null))[_0xdeb2('0x2f')](handleError(_0x5a3769,null));};exports['getDispositions']=function(_0x19be10,_0x2a7bac,_0x52db48){var _0x250e97={'raw':![],'where':{}};var _0x5dc9dc={};var _0x287295={'count':0x0,'rows':[]};return db[_0xdeb2('0x44')][_0xdeb2('0x69')]({'where':{'id':_0x19be10[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x2a7bac,null))[_0xdeb2('0x24')](function(_0x29f466){if(_0x29f466){_0x5dc9dc[_0xdeb2('0x4c')]=_[_0xdeb2('0x4a')](db[_0xdeb2('0x68')][_0xdeb2('0x45')]);_0x5dc9dc[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0x19be10[_0xdeb2('0x49')]);_0x5dc9dc[_0xdeb2('0x52')]=_[_0xdeb2('0x4b')](_0x5dc9dc[_0xdeb2('0x4c')],_0x5dc9dc[_0xdeb2('0x49')]);_0x250e97[_0xdeb2('0x4d')]=_[_0xdeb2('0x4b')](_0x5dc9dc[_0xdeb2('0x4c')],qs[_0xdeb2('0x4e')](_0x19be10[_0xdeb2('0x49')][_0xdeb2('0x4e')]));_0x250e97['attributes']=_0x250e97[_0xdeb2('0x4d')][_0xdeb2('0x4f')]?_0x250e97['attributes']:_0x5dc9dc[_0xdeb2('0x4c')];if(!_0x19be10['query'][_0xdeb2('0x6a')](_0xdeb2('0x50'))){_0x250e97[_0xdeb2('0x34')]=qs[_0xdeb2('0x34')](_0x19be10['query'][_0xdeb2('0x34')]);_0x250e97[_0xdeb2('0x36')]=qs[_0xdeb2('0x36')](_0x19be10[_0xdeb2('0x49')][_0xdeb2('0x36')]);}_0x250e97[_0xdeb2('0x6b')]=qs[_0xdeb2('0x51')](_0x19be10['query'][_0xdeb2('0x51')]);_0x250e97['where']=qs['filters'](_[_0xdeb2('0x6c')](_0x19be10[_0xdeb2('0x49')],_0x5dc9dc[_0xdeb2('0x52')]));_0x250e97['where']['OpenchannelAccountId']=_0x29f466['id'];if(_0x19be10[_0xdeb2('0x49')][_0xdeb2('0x56')]){_0x250e97[_0xdeb2('0x53')]=_[_0xdeb2('0x54')](_0x250e97['where'],{'$or':_[_0xdeb2('0x43')](_0x250e97[_0xdeb2('0x4d')],function(_0x1f34ca){var _0x41e680={};_0x41e680[_0x1f34ca]={'$like':'%'+_0x19be10[_0xdeb2('0x49')][_0xdeb2('0x56')]+'%'};return _0x41e680;})});}_0x250e97=_[_0xdeb2('0x54')]({},_0x250e97,_0x19be10[_0xdeb2('0x5b')]);return db['Disposition'][_0xdeb2('0x35')]({'where':_0x250e97[_0xdeb2('0x53')]})[_0xdeb2('0x24')](function(_0x3ec0e0){_0x287295[_0xdeb2('0x35')]=_0x3ec0e0;if(_0x19be10[_0xdeb2('0x49')]['includeAll']){_0x250e97[_0xdeb2('0x57')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x250e97);})[_0xdeb2('0x24')](function(_0x5781bc){_0x287295[_0xdeb2('0x6d')]=_0x5781bc;return _0x287295;});}})[_0xdeb2('0x24')](respondWithFilteredResult(_0x2a7bac,_0x250e97))[_0xdeb2('0x2f')](handleError(_0x2a7bac,null));};exports['removeDispositions']=function(_0x2fe950,_0x287f6a,_0x1135f3){return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x2fe950[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x287f6a,null))[_0xdeb2('0x24')](function(_0x370bf8){if(_0x370bf8){return _0x370bf8[_0xdeb2('0x6e')](_0x2fe950[_0xdeb2('0x49')][_0xdeb2('0x6f')]);}})[_0xdeb2('0x24')](respondWithStatusCode(_0x287f6a,null))[_0xdeb2('0x2f')](handleError(_0x287f6a,null));};exports[_0xdeb2('0x70')]=function(_0x2b56cd,_0x82e870,_0x15d33b){if(_0x2b56cd[_0xdeb2('0x5e')]['id']){delete _0x2b56cd['body']['id'];}return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x2b56cd['params']['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x82e870,null))[_0xdeb2('0x24')](function(_0x3b6f08){if(_0x3b6f08){_0x2b56cd['body'][_0xdeb2('0x67')]=_0x3b6f08['id'];return db[_0xdeb2('0x71')][_0xdeb2('0x5d')](_0x2b56cd[_0xdeb2('0x5e')]);}})['then'](respondWithResult(_0x82e870,null))[_0xdeb2('0x2f')](handleError(_0x82e870,null));};exports[_0xdeb2('0x72')]=function(_0xa9e111,_0x855534,_0x5d4b04){var _0x137ce1={'raw':![],'where':{}};var _0x50a10d={};var _0x4a697c={'count':0x0,'rows':[]};return db[_0xdeb2('0x44')][_0xdeb2('0x69')]({'where':{'id':_0xa9e111['params']['id']}})['then'](handleEntityNotFound(_0x855534,null))[_0xdeb2('0x24')](function(_0x1a76fd){if(_0x1a76fd){_0x50a10d['model']=_[_0xdeb2('0x4a')](db[_0xdeb2('0x71')][_0xdeb2('0x45')]);_0x50a10d[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0xa9e111[_0xdeb2('0x49')]);_0x50a10d[_0xdeb2('0x52')]=_[_0xdeb2('0x4b')](_0x50a10d['model'],_0x50a10d['query']);_0x137ce1[_0xdeb2('0x4d')]=_[_0xdeb2('0x4b')](_0x50a10d['model'],qs[_0xdeb2('0x4e')](_0xa9e111['query'][_0xdeb2('0x4e')]));_0x137ce1[_0xdeb2('0x4d')]=_0x137ce1[_0xdeb2('0x4d')][_0xdeb2('0x4f')]?_0x137ce1['attributes']:_0x50a10d['model'];if(!_0xa9e111['query'][_0xdeb2('0x6a')](_0xdeb2('0x50'))){_0x137ce1[_0xdeb2('0x34')]=qs[_0xdeb2('0x34')](_0xa9e111[_0xdeb2('0x49')][_0xdeb2('0x34')]);_0x137ce1[_0xdeb2('0x36')]=qs[_0xdeb2('0x36')](_0xa9e111[_0xdeb2('0x49')]['offset']);}_0x137ce1[_0xdeb2('0x6b')]=qs['sort'](_0xa9e111['query'][_0xdeb2('0x51')]);_0x137ce1[_0xdeb2('0x53')]=qs[_0xdeb2('0x52')](_['pick'](_0xa9e111['query'],_0x50a10d['filters']));_0x137ce1[_0xdeb2('0x53')][_0xdeb2('0x67')]=_0x1a76fd['id'];if(_0xa9e111[_0xdeb2('0x49')][_0xdeb2('0x56')]){_0x137ce1[_0xdeb2('0x53')]=_[_0xdeb2('0x54')](_0x137ce1[_0xdeb2('0x53')],{'$or':_['map'](_0x137ce1[_0xdeb2('0x4d')],function(_0x495a84){var _0x5aab6f={};_0x5aab6f[_0x495a84]={'$like':'%'+_0xa9e111[_0xdeb2('0x49')]['filter']+'%'};return _0x5aab6f;})});}_0x137ce1=_['merge']({},_0x137ce1,_0xa9e111['options']);return db[_0xdeb2('0x71')]['count']({'where':_0x137ce1[_0xdeb2('0x53')]})[_0xdeb2('0x24')](function(_0x2795d5){_0x4a697c[_0xdeb2('0x35')]=_0x2795d5;if(_0xa9e111[_0xdeb2('0x49')][_0xdeb2('0x5a')]){_0x137ce1['include']=[{'all':!![]}];}return db[_0xdeb2('0x71')][_0xdeb2('0x73')](_0x137ce1);})['then'](function(_0x132b88){_0x4a697c[_0xdeb2('0x6d')]=_0x132b88;return _0x4a697c;});}})[_0xdeb2('0x24')](respondWithFilteredResult(_0x855534,_0x137ce1))[_0xdeb2('0x2f')](handleError(_0x855534,null));};exports['removeAnswers']=function(_0x3b2404,_0x490ca7,_0x32d1e6){return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x3b2404['params']['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x490ca7,null))[_0xdeb2('0x24')](function(_0x1feb4f){if(_0x1feb4f){return _0x1feb4f[_0xdeb2('0x74')](_0x3b2404[_0xdeb2('0x49')][_0xdeb2('0x6f')]);}})[_0xdeb2('0x24')](respondWithStatusCode(_0x490ca7,null))[_0xdeb2('0x2f')](handleError(_0x490ca7,null));};exports[_0xdeb2('0x75')]=function(_0x14a595,_0x5f4e85,_0x328fe5){var _0x1b7107={'body':_0x14a595[_0xdeb2('0x5e')],'channel':'openchannel'};var _0x1851e4=[];var _0x207d22=[];var _0x4b85e9={};var _0x466608=![];return db[_0xdeb2('0x76')][_0xdeb2('0x66')]()[_0xdeb2('0x24')](function(_0x5c77a3){if(!_0x5c77a3){throw new db[(_0xdeb2('0x77'))][(_0xdeb2('0x78'))](_0xdeb2('0x79'));}_0x1851e4=_['difference'](_['keys'](_0x5c77a3),[_0xdeb2('0x7a'),_0xdeb2('0x7b')]);_0x207d22=_[_0xdeb2('0x7c')](_[_0xdeb2('0x4a')](_0x5c77a3),['createdAt',_0xdeb2('0x7b'),_0xdeb2('0x7d'),_0xdeb2('0x7e')]);if(_0x14a595[_0xdeb2('0x5e')]['id']){delete _0x14a595[_0xdeb2('0x5e')]['id'];}if(_[_0xdeb2('0x7f')](_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x80')])){throw new db[(_0xdeb2('0x77'))][(_0xdeb2('0x78'))](_0xdeb2('0x81'));}if(_['isNil'](_0x14a595['body'][_0xdeb2('0x5e')])||_0x14a595[_0xdeb2('0x5e')]['body']===''){throw new db[(_0xdeb2('0x77'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xdeb2('0x7f')](_0x14a595['body'][_0xdeb2('0x82')])){throw new db['Sequelize'][(_0xdeb2('0x78'))](_0xdeb2('0x83')+_0x207d22);}if(!_[_0xdeb2('0x84')](_0x207d22,_0x14a595['body'][_0xdeb2('0x82')])){throw new db['Sequelize'][(_0xdeb2('0x78'))](_0xdeb2('0x85')+_0x207d22);}_0x4b85e9[_0x14a595['body'][_0xdeb2('0x82')]]=_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x80')];})['then'](function(){return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x14a595[_0xdeb2('0x59')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xdeb2('0x76')],'as':'Contacts','where':_0x4b85e9,'limit':0x1,'order':[[_0xdeb2('0x7b'),_0xdeb2('0x86')]]}]},{'model':db[_0xdeb2('0x87')],'as':_0xdeb2('0x88')}]});})['then'](handleEntityNotFound(_0x5f4e85,null))[_0xdeb2('0x24')](function(_0x45658a){if(_0x45658a&&_0x45658a[_0xdeb2('0x89')]){_0x1b7107[_0xdeb2('0x8a')]=_0x45658a;_0x1b7107['applications']=_0x45658a[_0xdeb2('0x88')];_0x1b7107[_0xdeb2('0x8b')]=_0x45658a[_0xdeb2('0x89')];_0x1b7107[_0xdeb2('0x8c')]=_[_0xdeb2('0x8d')](_0x1b7107[_0xdeb2('0x8c')],[_0xdeb2('0x8e')],[_0xdeb2('0x8f')]);if(_0x1b7107[_0xdeb2('0x8a')][_0xdeb2('0x88')]){delete _0x1b7107[_0xdeb2('0x8a')]['Applications'];}if(_0x1b7107[_0xdeb2('0x8a')][_0xdeb2('0x89')]&&_0x1b7107['account'][_0xdeb2('0x89')][_0xdeb2('0x90')][_0xdeb2('0x4f')]){return _0x1b7107[_0xdeb2('0x8a')][_0xdeb2('0x89')]['Contacts'][0x0];}var _0x126921=_[_0xdeb2('0x1d')](_0x14a595[_0xdeb2('0x5e')],{'firstName':_0x14a595[_0xdeb2('0x5e')]['from'],'ListId':_0x45658a[_0xdeb2('0x7e')]});_0x126921[_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x82')]]=_0x14a595[_0xdeb2('0x5e')]['from'];return db[_0xdeb2('0x76')]['create'](_0x126921,{'fields':_0x1851e4,'raw':!![]});}})[_0xdeb2('0x24')](handleEntityNotFound(_0x5f4e85,null))[_0xdeb2('0x24')](function(_0xaeeeb6){_0x1b7107[_0xdeb2('0x91')]=_0xaeeeb6;if(_0xaeeeb6){var _0x12aa75={'ContactId':_0xaeeeb6['id'],'OpenchannelAccountId':_0x14a595[_0xdeb2('0x59')]['id'],'from':(_0xaeeeb6[_0xdeb2('0x92')]||'')+'\x20'+(_0xaeeeb6[_0xdeb2('0x93')]||'')};var _0x5cac60={'OpenchannelAccountId':_0x14a595['params']['id'],'closed':![]};if(_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x94')]){_0x5cac60[_0xdeb2('0x94')]=_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x94')];return db[_0xdeb2('0x95')]['find']({'where':_0x5cac60})[_0xdeb2('0x24')](function(_0x4863e5){if(_0x4863e5){return[_0x4863e5,![]];}_0x12aa75[_0xdeb2('0x94')]=_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x94')];_0x12aa75[_0xdeb2('0x96')]=_0x14a595[_0xdeb2('0x5e')]['externalUrl'];return db[_0xdeb2('0x95')][_0xdeb2('0x5d')](_0x12aa75)[_0xdeb2('0x24')](function(_0x2e86e1){return[_0x2e86e1,!![]];});});}else{_0x5cac60['threadId']=null;}_0x5cac60[_0xdeb2('0x97')]=_0xaeeeb6['id'];return db['OpenchannelInteraction'][_0xdeb2('0x5c')]({'where':_0x5cac60})['then'](function(_0x46e6e1){if(_0x46e6e1){return[_0x46e6e1,![]];}return db[_0xdeb2('0x95')][_0xdeb2('0x5d')](_0x12aa75)['then'](function(_0x425678){return[_0x425678,!![]];});});}})['spread'](function(_0xde008a,_0x35864c){if(_0xde008a){_0x466608=_0x35864c;if(!_0x35864c){var _0x48f585={'from':(_0x1b7107[_0xdeb2('0x91')][_0xdeb2('0x92')]||'')+'\x20'+(_0x1b7107[_0xdeb2('0x91')][_0xdeb2('0x93')]||'')};if(_0x14a595[_0xdeb2('0x5e')]['threadId']&&_0x14a595[_0xdeb2('0x5e')]['messageId']&&_0x14a595['body'][_0xdeb2('0x94')]!=_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x98')]){_0x48f585['threadId']=_0x14a595[_0xdeb2('0x5e')]['messageId'];}return _0xde008a[_0xdeb2('0x65')](_0x48f585);}else{return _0xde008a;}}})[_0xdeb2('0x24')](function(_0x246999){_0x1b7107[_0xdeb2('0x99')]=_0x246999[_0xdeb2('0x61')]({'plain':!![]});_0x1b7107[_0xdeb2('0x99')]['created']=_0x466608;if(_0x1b7107[_0xdeb2('0x99')][_0xdeb2('0x9a')]){if(_0x1b7107[_0xdeb2('0x8a')][_0xdeb2('0x9b')]){_0x1b7107['applications'][_0xdeb2('0x9c')]({'id':0x0,'priority':_0x1b7107[_0xdeb2('0x8c')]['length']+0x1,'app':_0xdeb2('0x9d'),'appdata':_0xdeb2('0x9e'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0xdeb2('0x5d')]({'body':_0x14a595['body'][_0xdeb2('0x5e')],'OpenchannelAccountId':_0x14a595['params']['id'],'OpenchannelInteractionId':_0x246999['id'],'direction':'in','ContactId':_0x1b7107['contact']['id'],'AttachmentId':_0x14a595[_0xdeb2('0x5e')][_0xdeb2('0x9f')]});})[_0xdeb2('0x24')](function(_0x2e9444){_0x1b7107[_0xdeb2('0x2d')]=_0x2e9444;if(_0x1b7107[_0xdeb2('0x99')]['UserId']){return db['User'][_0xdeb2('0x5c')]({'attributes':['id',_0xdeb2('0x3f')],'where':{'id':_0x1b7107['interaction'][_0xdeb2('0xa0')]}})[_0xdeb2('0x24')](function(_0x3836db){if(_0x3836db){_0x1b7107[_0xdeb2('0x8c')][_0xdeb2('0xa1')]({'id':0x0,'priority':0x0,'app':_0xdeb2('0xa2'),'appdata':_0x3836db['name']+','+(_0x1b7107[_0xdeb2('0x8a')][_0xdeb2('0xa3')]||0xa),'interval':_0xdeb2('0xa4')});_0x1b7107[_0xdeb2('0xa5')]=![];}return respondWithRpcPromise('Start',_0xdeb2('0xa6'),_0x1b7107);});}return respondWithRpcPromise(_0xdeb2('0xa7'),'startRouting',_0x1b7107);})[_0xdeb2('0x24')](function(_0x340d7b){respondWithRpcPromise('EventManager','EventManager',{'event':'notify','message':_0x340d7b},client9002);return _0x340d7b;})[_0xdeb2('0x24')](respondWithResult(_0x5f4e85,null))[_0xdeb2('0x2f')](handleError(_0x5f4e85,null));};exports[_0xdeb2('0xa8')]=function(_0x2b17d6,_0x4e1eb1,_0x22fc56){return db[_0xdeb2('0x44')][_0xdeb2('0x69')]({'where':{'id':_0x2b17d6[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x4e1eb1,null))['then'](function(_0x3d59a3){if(_0x3d59a3){return db[_0xdeb2('0xa9')]['transaction'](function(_0x52e662){return db[_0xdeb2('0x87')]['destroy']({'where':{'OpenchannelAccountId':_0x2b17d6[_0xdeb2('0x59')]['id']},'transaction':_0x52e662})[_0xdeb2('0x24')](function(_0x33f948){var _0x47a628=_[_0xdeb2('0x43')](_0x2b17d6[_0xdeb2('0x5e')],function(_0x173642){_0x173642[_0xdeb2('0x67')]=_0x2b17d6['params']['id'];return _0x173642;});return db[_0xdeb2('0x87')]['bulkCreate'](_0x47a628,{'transaction':_0x52e662});});})[_0xdeb2('0x24')](function(){return db[_0xdeb2('0x87')][_0xdeb2('0xaa')]({'where':{'OpenchannelAccountId':_0x2b17d6[_0xdeb2('0x59')]['id']},'order':'priority'});});}})[_0xdeb2('0x24')](respondWithResult(_0x4e1eb1,null))[_0xdeb2('0x2f')](handleError(_0x4e1eb1,null));};exports[_0xdeb2('0xab')]=function(_0x5e57a5,_0x13bad1,_0x1503ca){var _0x145a91={};var _0x4d52fd={};var _0x116964;var _0x59b622;return db[_0xdeb2('0x44')][_0xdeb2('0x69')]({'where':{'id':_0x5e57a5[_0xdeb2('0x59')]['id']}})['then'](handleEntityNotFound(_0x13bad1,null))[_0xdeb2('0x24')](function(_0x255328){if(_0x255328){_0x116964=_0x255328;_0x4d52fd['model']=_[_0xdeb2('0x4a')](db[_0xdeb2('0x87')][_0xdeb2('0x45')]);_0x4d52fd[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0x5e57a5['query']);_0x4d52fd[_0xdeb2('0x52')]=_[_0xdeb2('0x4b')](_0x4d52fd['model'],_0x4d52fd[_0xdeb2('0x49')]);_0x145a91[_0xdeb2('0x4d')]=_[_0xdeb2('0x4b')](_0x4d52fd['model'],qs[_0xdeb2('0x4e')](_0x5e57a5['query']['fields']));_0x145a91['attributes']=_0x145a91[_0xdeb2('0x4d')][_0xdeb2('0x4f')]?_0x145a91[_0xdeb2('0x4d')]:_0x4d52fd[_0xdeb2('0x4c')];_0x145a91['order']=qs[_0xdeb2('0x51')](_0x5e57a5['query'][_0xdeb2('0x51')]);_0x145a91[_0xdeb2('0x53')]=qs[_0xdeb2('0x52')](_[_0xdeb2('0x6c')](_0x5e57a5[_0xdeb2('0x49')],_0x4d52fd['filters']));if(_0x5e57a5[_0xdeb2('0x49')]['filter']){_0x145a91[_0xdeb2('0x53')]=_[_0xdeb2('0x54')](_0x145a91[_0xdeb2('0x53')],{'$or':_['map'](_0x145a91[_0xdeb2('0x4d')],function(_0x5bcf01){var _0x12461f={};_0x12461f[_0x5bcf01]={'$like':'%'+_0x5e57a5['query']['filter']+'%'};return _0x12461f;})});}_0x145a91=_['merge']({},_0x145a91,_0x5e57a5['options']);return _0x116964[_0xdeb2('0xab')](_0x145a91);}})['then'](function(_0x256cbb){if(_0x256cbb){_0x59b622=_0x256cbb[_0xdeb2('0x4f')];if(!_0x5e57a5[_0xdeb2('0x49')][_0xdeb2('0x6a')]('nolimit')){_0x145a91[_0xdeb2('0x34')]=qs['limit'](_0x5e57a5[_0xdeb2('0x49')][_0xdeb2('0x34')]);_0x145a91['offset']=qs['offset'](_0x5e57a5[_0xdeb2('0x49')]['offset']);}return _0x116964['getApplications'](_0x145a91);}})[_0xdeb2('0x24')](function(_0x366fc9){if(_0x366fc9){return _0x366fc9?{'count':_0x59b622,'rows':_0x366fc9}:null;}})[_0xdeb2('0x24')](respondWithResult(_0x13bad1,null))[_0xdeb2('0x2f')](handleError(_0x13bad1,null));};exports[_0xdeb2('0xac')]=function(_0x4201b7,_0x5616ee,_0x2b8177){var _0x3b838a={'raw':![],'where':{}};var _0x359e18={};var _0x2f93ea={'count':0x0,'rows':[]};return db[_0xdeb2('0x44')]['findOne']({'where':{'id':_0x4201b7[_0xdeb2('0x59')]['id']}})['then'](handleEntityNotFound(_0x5616ee,null))[_0xdeb2('0x24')](function(_0x96feac){if(_0x96feac){_0x359e18[_0xdeb2('0x4c')]=_[_0xdeb2('0x4a')](db[_0xdeb2('0x95')][_0xdeb2('0x45')]);_0x359e18[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0x4201b7[_0xdeb2('0x49')]);_0x359e18[_0xdeb2('0x52')]=_['intersection'](_0x359e18[_0xdeb2('0x4c')],_0x359e18[_0xdeb2('0x49')]);_0x3b838a[_0xdeb2('0x4d')]=_[_0xdeb2('0x4b')](_0x359e18[_0xdeb2('0x4c')],qs[_0xdeb2('0x4e')](_0x4201b7[_0xdeb2('0x49')]['fields']));_0x3b838a[_0xdeb2('0x4d')]=_0x3b838a[_0xdeb2('0x4d')][_0xdeb2('0x4f')]?_0x3b838a[_0xdeb2('0x4d')]:_0x359e18[_0xdeb2('0x4c')];if(!_0x4201b7[_0xdeb2('0x49')][_0xdeb2('0x6a')](_0xdeb2('0x50'))){_0x3b838a['limit']=qs[_0xdeb2('0x34')](_0x4201b7[_0xdeb2('0x49')][_0xdeb2('0x34')]);_0x3b838a[_0xdeb2('0x36')]=qs['offset'](_0x4201b7[_0xdeb2('0x49')]['offset']);}_0x3b838a[_0xdeb2('0x6b')]=qs['sort'](_0x4201b7[_0xdeb2('0x49')]['sort']);_0x3b838a[_0xdeb2('0x53')]=qs[_0xdeb2('0x52')](_[_0xdeb2('0x6c')](_0x4201b7[_0xdeb2('0x49')],_0x359e18[_0xdeb2('0x52')]));_0x3b838a[_0xdeb2('0x53')]['OpenchannelAccountId']=_0x96feac['id'];if(_0x4201b7[_0xdeb2('0x49')][_0xdeb2('0x56')]){_0x3b838a[_0xdeb2('0x53')]=_[_0xdeb2('0x54')](_0x3b838a[_0xdeb2('0x53')],{'$or':_[_0xdeb2('0x43')](_0x3b838a[_0xdeb2('0x4d')],function(_0x83d7cb){var _0x370563={};_0x370563[_0x83d7cb]={'$like':'%'+_0x4201b7['query']['filter']+'%'};return _0x370563;})});}_0x3b838a=_[_0xdeb2('0x54')]({},_0x3b838a,_0x4201b7[_0xdeb2('0x5b')]);return db[_0xdeb2('0x95')][_0xdeb2('0x35')]({'where':_0x3b838a[_0xdeb2('0x53')]})[_0xdeb2('0x24')](function(_0xba6466){_0x2f93ea[_0xdeb2('0x35')]=_0xba6466;if(_0x4201b7[_0xdeb2('0x49')]['includeAll']){_0x3b838a[_0xdeb2('0x57')]=[{'model':db[_0xdeb2('0x76')],'as':_0xdeb2('0xad'),'required':![]},{'model':db[_0xdeb2('0xae')],'as':_0xdeb2('0xaf'),'attributes':[_0xdeb2('0x3f'),_0xdeb2('0xb0'),_0xdeb2('0xb1')],'required':![]},{'model':db[_0xdeb2('0xb2')],'as':_0xdeb2('0xb3'),'attributes':['id',_0xdeb2('0x3f'),_0xdeb2('0xb4')],'where':_0x4201b7[_0xdeb2('0x49')][_0xdeb2('0xb5')]?{'id':_0x4201b7[_0xdeb2('0x49')][_0xdeb2('0xb5')]}:undefined,'required':_0x4201b7[_0xdeb2('0x49')][_0xdeb2('0xb5')]?!![]:![]}];}return db['OpenchannelInteraction']['findAll'](_0x3b838a);})[_0xdeb2('0x24')](function(_0x3f97f8){_0x2f93ea[_0xdeb2('0x6d')]=_0x3f97f8;return _0x2f93ea;});}})[_0xdeb2('0x24')](respondWithFilteredResult(_0x5616ee,_0x3b838a))[_0xdeb2('0x2f')](handleError(_0x5616ee,null));};exports[_0xdeb2('0xb6')]=function(_0x3d9c04,_0x305c89,_0x3aba90){return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x3d9c04[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x305c89,null))[_0xdeb2('0x24')](function(_0x33eb9a){if(_0x33eb9a){return _0x33eb9a[_0xdeb2('0xb6')](_0x3d9c04['body'][_0xdeb2('0x6f')],_[_0xdeb2('0xb7')](_0x3d9c04[_0xdeb2('0x5e')],[_0xdeb2('0x6f'),'id'])||{})[_0xdeb2('0xb8')](function(_0x1c2a2a){for(var _0x4c39ae=0x0;_0x4c39ae<_0x3d9c04[_0xdeb2('0x5e')]['ids'][_0xdeb2('0x4f')];_0x4c39ae+=0x1){socket['emit'](_0xdeb2('0xb9'),{'UserId':Number(_0x3d9c04[_0xdeb2('0x5e')][_0xdeb2('0x6f')][_0x4c39ae]),'OpenchannelAccountId':Number(_0x3d9c04['params']['id'])});}return _0x1c2a2a;});}})['then'](respondWithResult(_0x305c89,null))[_0xdeb2('0x2f')](handleError(_0x305c89,null));};exports[_0xdeb2('0xba')]=function(_0x1d3cd1,_0x48f425,_0x3adc1f){return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x1d3cd1[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x48f425,null))['then'](function(_0x2f7fb2){if(_0x2f7fb2){return _0x2f7fb2[_0xdeb2('0xba')](_0x1d3cd1['query'][_0xdeb2('0x6f')])[_0xdeb2('0x24')](function(){if(_['isArray'](_0x1d3cd1[_0xdeb2('0x49')][_0xdeb2('0x6f')])){for(var _0x1e9488=0x0;_0x1e9488<_0x1d3cd1[_0xdeb2('0x49')][_0xdeb2('0x6f')][_0xdeb2('0x4f')];_0x1e9488+=0x1){socket[_0xdeb2('0xbb')](_0xdeb2('0xbc'),{'UserId':Number(_0x1d3cd1[_0xdeb2('0x49')][_0xdeb2('0x6f')][_0x1e9488]),'OpenchannelAccountId':Number(_0x1d3cd1['params']['id'])});}}else{socket[_0xdeb2('0xbb')]('userOpenchannelAccount:remove',{'UserId':Number(_0x1d3cd1[_0xdeb2('0x49')][_0xdeb2('0x6f')]),'OpenchannelAccountId':Number(_0x1d3cd1['params']['id'])});}});}})[_0xdeb2('0x24')](respondWithStatusCode(_0x48f425,null))[_0xdeb2('0x2f')](handleError(_0x48f425,null));};exports[_0xdeb2('0xbd')]=function(_0x48b150,_0x38e720,_0x25e7f9){var _0x5ca155={};var _0x146b87={};var _0x4fe07a;var _0x9b4ead;return db['OpenchannelAccount'][_0xdeb2('0x69')]({'where':{'id':_0x48b150[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x38e720,null))[_0xdeb2('0x24')](function(_0x518622){if(_0x518622){_0x4fe07a=_0x518622;_0x146b87[_0xdeb2('0x4c')]=_[_0xdeb2('0x4a')](db[_0xdeb2('0xae')][_0xdeb2('0x45')]);_0x146b87[_0xdeb2('0x49')]=_[_0xdeb2('0x4a')](_0x48b150[_0xdeb2('0x49')]);_0x146b87['filters']=_[_0xdeb2('0x4b')](_0x146b87[_0xdeb2('0x4c')],_0x146b87[_0xdeb2('0x49')]);_0x5ca155[_0xdeb2('0x4d')]=_[_0xdeb2('0x4b')](_0x146b87[_0xdeb2('0x4c')],qs[_0xdeb2('0x4e')](_0x48b150['query']['fields']));_0x5ca155['attributes']=_0x5ca155['attributes'][_0xdeb2('0x4f')]?_0x5ca155['attributes']:_0x146b87[_0xdeb2('0x4c')];_0x5ca155[_0xdeb2('0x6b')]=qs[_0xdeb2('0x51')](_0x48b150[_0xdeb2('0x49')][_0xdeb2('0x51')]);_0x5ca155[_0xdeb2('0x53')]=qs[_0xdeb2('0x52')](_['pick'](_0x48b150['query'],_0x146b87[_0xdeb2('0x52')]));if(_0x48b150[_0xdeb2('0x49')][_0xdeb2('0x56')]){_0x5ca155[_0xdeb2('0x53')]=_[_0xdeb2('0x54')](_0x5ca155[_0xdeb2('0x53')],{'$or':_[_0xdeb2('0x43')](_0x5ca155[_0xdeb2('0x4d')],function(_0x546ecd){var _0x3cafba={};_0x3cafba[_0x546ecd]={'$like':'%'+_0x48b150[_0xdeb2('0x49')]['filter']+'%'};return _0x3cafba;})});}_0x5ca155=_[_0xdeb2('0x54')]({},_0x5ca155,_0x48b150[_0xdeb2('0x5b')]);return _0x4fe07a[_0xdeb2('0xbd')](_0x5ca155);}})[_0xdeb2('0x24')](function(_0x4a0a8c){if(_0x4a0a8c){_0x9b4ead=_0x4a0a8c[_0xdeb2('0x4f')];if(!_0x48b150[_0xdeb2('0x49')][_0xdeb2('0x6a')](_0xdeb2('0x50'))){_0x5ca155['limit']=qs[_0xdeb2('0x34')](_0x48b150[_0xdeb2('0x49')][_0xdeb2('0x34')]);_0x5ca155[_0xdeb2('0x36')]=qs['offset'](_0x48b150[_0xdeb2('0x49')][_0xdeb2('0x36')]);}return _0x4fe07a[_0xdeb2('0xbd')](_0x5ca155);}})['then'](function(_0x4f1f80){if(_0x4f1f80){return _0x4f1f80?{'count':_0x9b4ead,'rows':_0x4f1f80}:null;}})['then'](respondWithResult(_0x38e720,null))['catch'](handleError(_0x38e720,null));};exports[_0xdeb2('0x40')]=function(_0x2ad4d4,_0x3f54c0,_0x657c15){var _0x52a849,_0x263775,_0x2cb3b2;if(_['isNil'](_0x2ad4d4['body'][_0xdeb2('0x5e')])||_0x2ad4d4[_0xdeb2('0x5e')][_0xdeb2('0x5e')]===''){throw new db[(_0xdeb2('0x77'))][(_0xdeb2('0x78'))](_0xdeb2('0xbe'));}if(_[_0xdeb2('0x7f')](_0x2ad4d4[_0xdeb2('0x5e')]['to'])){}_0x52a849=_0x2ad4d4[_0xdeb2('0x5e')]['to'];return db[_0xdeb2('0x44')][_0xdeb2('0x69')]({'where':{'id':_0x2ad4d4[_0xdeb2('0x59')]['id']}})[_0xdeb2('0x24')](handleEntityNotFound(_0x3f54c0,null))[_0xdeb2('0x24')](function(_0x5acfe2){if(_0x5acfe2){return db[_0xdeb2('0x44')][_0xdeb2('0x5c')]({'where':{'id':_0x5acfe2['id']},'include':[{'model':db[_0xdeb2('0xbf')],'as':'List','include':[{'model':db[_0xdeb2('0x76')],'as':_0xdeb2('0x90'),'where':{[_0x5acfe2[_0xdeb2('0x82')]]:_0x52a849},'limit':0x1,'order':[[_0xdeb2('0x7b'),_0xdeb2('0x86')]]}]}]})[_0xdeb2('0x24')](handleEntityNotFound(_0x3f54c0,null))[_0xdeb2('0x24')](function(_0x468f71){if(_0x468f71&&_0x468f71[_0xdeb2('0x89')]){_0x263775=_0x468f71[_0xdeb2('0x61')]({'plain':!![]});if(_0x263775['List']&&_0x263775[_0xdeb2('0x89')][_0xdeb2('0x90')]['length']){return _0x263775['List'][_0xdeb2('0x90')][0x0];}return db[_0xdeb2('0x76')][_0xdeb2('0x5d')](_[_0xdeb2('0x1d')](_0x2ad4d4[_0xdeb2('0x5e')],{'firstName':_0x52a849,[_0x468f71[_0xdeb2('0x82')]]:_0x52a849,'phone':_0x52a849,'ListId':_0x263775['ListId']}));}})[_0xdeb2('0x24')](handleEntityNotFound(_0x3f54c0,null))[_0xdeb2('0x24')](function(_0x148954){if(_0x148954){_0x2cb3b2=_0x148954;return db[_0xdeb2('0x95')]['find']({'where':{'ContactId':_0x2cb3b2['id'],'closed':![],'OpenchannelAccountId':_0x263775['id']}})['then'](function(_0x411937){if(_0x411937){return[_0x411937,![]];}return db[_0xdeb2('0x95')][_0xdeb2('0x5d')]({'UserId':_0x2ad4d4[_0xdeb2('0x5f')]['id'],'ContactId':_0x2cb3b2['id'],'OpenchannelAccountId':_0x263775['id'],'lastMsgDirection':'out','Messages':[_['merge'](_0x2ad4d4['body'],{'read':![],'body':_0x2ad4d4['body'][_0xdeb2('0x5e')],'OpenchannelAccountId':_0x263775['id'],'UserId':_0x2ad4d4['user']['id'],'ContactId':_0x2cb3b2['id']})]},{'include':[{'model':db[_0xdeb2('0xc0')],'as':'Messages'}]})[_0xdeb2('0x24')](function(_0x5a343d){return[_0x5a343d,!![]];});});}})[_0xdeb2('0xb8')](function(_0x444691,_0x31f650){if(_0x31f650){return _0x444691;}return db[_0xdeb2('0xc0')][_0xdeb2('0x5d')](_['merge'](_0x2ad4d4['body'],{'read':![],'body':_0x2ad4d4['body'][_0xdeb2('0x5e')],'OpenchannelAccountId':_0x263775['id'],'OpenchannelInteractionId':_0x444691['id'],'UserId':_0x2ad4d4[_0xdeb2('0x5f')]['id'],'ContactId':_0x2cb3b2['id']}))['then'](function(_0x13006b){_0x444691[_0xdeb2('0xc1')][_0xdeb2('0xc2')]=[];_0x444691[_0xdeb2('0xc1')][_0xdeb2('0xc2')]['push'](_0x13006b[_0xdeb2('0xc1')]);return _0x444691;});});}})['then'](respondWithResult(_0x3f54c0,null))['catch'](handleError(_0x3f54c0,null));};
\ No newline at end of file
index 8f50cfe..74a0641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['save','remove','emit','hasOwnProperty','exports','events','OpenchannelAccount','setMaxListeners'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0xdace,0xc5));var _0xedac=function(_0xb1cf84,_0x813740){_0xb1cf84=_0xb1cf84-0x0;var _0x4bad2e=_0xdace[_0xb1cf84];return _0x4bad2e;};'use strict';var EventEmitter=require(_0xedac('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xedac('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xedac('0x2')](0x0);var events={'afterCreate':_0xedac('0x3'),'afterUpdate':'update','afterDestroy':_0xedac('0x4')};function emitEvent(_0x36bcd2){return function(_0x15d3bd,_0xefb142,_0x5a97c0){OpenchannelAccountEvents[_0xedac('0x5')](_0x36bcd2+':'+_0x15d3bd['id'],_0x15d3bd);OpenchannelAccountEvents[_0xedac('0x5')](_0x36bcd2,_0x15d3bd);_0x5a97c0(null);};}for(var e in events){if(events[_0xedac('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0xedac('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xcb91=['save','update','emit','hasOwnProperty','hook','OpenchannelAccount','setMaxListeners'];(function(_0x1624f6,_0x36ae14){var _0x35db53=function(_0x3ca0f4){while(--_0x3ca0f4){_0x1624f6['push'](_0x1624f6['shift']());}};_0x35db53(++_0x36ae14);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x34df4a,_0x209d10){_0x34df4a=_0x34df4a-0x0;var _0x145c69=_0xcb91[_0x34df4a];return _0x145c69;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x1cb9('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x1cb9('0x1')](0x0);var events={'afterCreate':_0x1cb9('0x2'),'afterUpdate':_0x1cb9('0x3'),'afterDestroy':'remove'};function emitEvent(_0x8c392f){return function(_0x2c17b8,_0x545a34,_0x13d5fd){OpenchannelAccountEvents[_0x1cb9('0x4')](_0x8c392f+':'+_0x2c17b8['id'],_0x2c17b8);OpenchannelAccountEvents['emit'](_0x8c392f,_0x2c17b8);_0x13d5fd(null);};}for(var e in events){if(events[_0x1cb9('0x5')](e)){var event=events[e];OpenchannelAccount[_0x1cb9('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 9e31865..bacba4c 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(_0x1e9991,_0x286f13){var _0x13a4dd=function(_0xd45d91){while(--_0xd45d91){_0x1e9991['push'](_0x1e9991['shift']());}};_0x13a4dd(++_0x286f13);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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(_0x3edd6c,_0x4f4245){var _0x960776=function(_0x588f79){while(--_0x588f79){_0x3edd6c['push'](_0x3edd6c['shift']());}};_0x960776(++_0x4f4245);}(_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 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 7bfd77b..3622729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x54c9cd,_0x5bef1e){var _0x5ccb6=function(_0x3c480c){while(--_0x3c480c){_0x54c9cd['push'](_0x54c9cd['shift']());}};_0x5ccb6(++_0x5bef1e);}(_0xe706,0xa3));var _0x6e70=function(_0x41d67e,_0x336a28){_0x41d67e=_0x41d67e-0x0;var _0x100cb2=_0xe706[_0x41d67e];return _0x100cb2;};'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});config[_0x6e70('0xd')]=_[_0x6e70('0xe')](config[_0x6e70('0xd')],{'host':_0x6e70('0xf'),'port':0x18eb});var socket=require(_0x6e70('0x10'))(new Redis(config[_0x6e70('0xd')]));require(_0x6e70('0x11'))[_0x6e70('0x12')](socket);function respondWithRpcPromise(_0x100eb7,_0x463853,_0x743eb5){return new BPromise(function(_0x3f474a,_0x37b3e0){return client[_0x6e70('0x13')](_0x100eb7,_0x743eb5)['then'](function(_0x47f6b2){logger[_0x6e70('0x14')](_0x6e70('0x15'),_0x463853,_0x6e70('0x16'));logger[_0x6e70('0x17')](_0x6e70('0x18'),_0x463853,_0x6e70('0x16'),JSON[_0x6e70('0x19')](_0x47f6b2));if(_0x47f6b2[_0x6e70('0x1a')]){if(_0x47f6b2['error']['code']===0x1f4){logger['error'](_0x6e70('0x15'),_0x463853,_0x47f6b2['error']['message']);return _0x37b3e0(_0x47f6b2[_0x6e70('0x1a')][_0x6e70('0x1b')]);}logger['error'](_0x6e70('0x15'),_0x463853,_0x47f6b2['error'][_0x6e70('0x1b')]);return _0x3f474a(_0x47f6b2[_0x6e70('0x1a')]['message']);}else{logger['info'](_0x6e70('0x15'),_0x463853,'request\x20sent');_0x3f474a(_0x47f6b2[_0x6e70('0x1c')][_0x6e70('0x1b')]);}})['catch'](function(_0x497d61){logger[_0x6e70('0x1a')](_0x6e70('0x15'),_0x463853,_0x497d61);_0x37b3e0(_0x497d61);});});}
\ 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(_0xc8d357,_0x5b8927){var _0x3d9b3a=function(_0x426058){while(--_0x426058){_0xc8d357['push'](_0xc8d357['shift']());}};_0x3d9b3a(++_0x5b8927);}(_0x6599,0xb0));var _0x9659=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0x6599[_0x25d386];return _0x857f4a;};'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 96e1262..5a0ea3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf14=['openchannelAccount:','./openchannelAccount.events','remove','update','emit','removeListener','register','length'];(function(_0x54dc2,_0xa77a2f){var _0x1ca1b4=function(_0x169cce){while(--_0x169cce){_0x54dc2['push'](_0x54dc2['shift']());}};_0x1ca1b4(++_0xa77a2f);}(_0xcf14,0xa1));var _0x4cf1=function(_0x18e170,_0x450f42){_0x18e170=_0x18e170-0x0;var _0x508a52=_0xcf14[_0x18e170];return _0x508a52;};'use strict';var OpenchannelAccountEvents=require(_0x4cf1('0x0'));var events=['save',_0x4cf1('0x1'),_0x4cf1('0x2')];function createListener(_0x55e5b6,_0x3401df){return function(_0x15f9b9){_0x3401df[_0x4cf1('0x3')](_0x55e5b6,_0x15f9b9);};}function removeListener(_0xc34979,_0x5de7f1){return function(){OpenchannelAccountEvents[_0x4cf1('0x4')](_0xc34979,_0x5de7f1);};}exports[_0x4cf1('0x5')]=function(_0x11a184){for(var _0x12076f=0x0,_0x32ad8c=events[_0x4cf1('0x6')];_0x12076f<_0x32ad8c;_0x12076f++){var _0x9efe60=events[_0x12076f];var _0x50273f=createListener(_0x4cf1('0x7')+_0x9efe60,_0x11a184);OpenchannelAccountEvents['on'](_0x9efe60,_0x50273f);}};
\ No newline at end of file
+var _0xa9e5=['length','openchannelAccount:','./openchannelAccount.events','save','update','emit','removeListener','register'];(function(_0x39fd7e,_0x17607d){var _0x1d5746=function(_0x11791a){while(--_0x11791a){_0x39fd7e['push'](_0x39fd7e['shift']());}};_0x1d5746(++_0x17607d);}(_0xa9e5,0x8a));var _0x5a9e=function(_0x438a40,_0x44b307){_0x438a40=_0x438a40-0x0;var _0x3d7219=_0xa9e5[_0x438a40];return _0x3d7219;};'use strict';var OpenchannelAccountEvents=require(_0x5a9e('0x0'));var events=[_0x5a9e('0x1'),'remove',_0x5a9e('0x2')];function createListener(_0x4153cc,_0x31f045){return function(_0x1dc619){_0x31f045[_0x5a9e('0x3')](_0x4153cc,_0x1dc619);};}function removeListener(_0x2fdfab,_0x3ce605){return function(){OpenchannelAccountEvents[_0x5a9e('0x4')](_0x2fdfab,_0x3ce605);};}exports[_0x5a9e('0x5')]=function(_0x34a9ed){for(var _0x1fb122=0x0,_0x36831b=events[_0x5a9e('0x6')];_0x1fb122<_0x36831b;_0x1fb122++){var _0xa3e37b=events[_0x1fb122];var _0x4e1213=createListener(_0x5a9e('0x7')+_0xa3e37b,_0x34a9ed);OpenchannelAccountEvents['on'](_0xa3e37b,_0x4e1213);}};
\ No newline at end of file
index a36b308..5254a66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb07=['index','/:id','show','post','put','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated'];(function(_0x3f6ece,_0x530c18){var _0x3ecfa2=function(_0x55717e){while(--_0x55717e){_0x3f6ece['push'](_0x3f6ece['shift']());}};_0x3ecfa2(++_0x530c18);}(_0xbb07,0xd9));var _0x7bb0=function(_0x2d94c7,_0x301784){_0x2d94c7=_0x2d94c7-0x0;var _0x488540=_0xbb07[_0x2d94c7];return _0x488540;};'use strict';var multer=require('multer');var util=require(_0x7bb0('0x0'));var path=require(_0x7bb0('0x1'));var timeout=require(_0x7bb0('0x2'));var express=require(_0x7bb0('0x3'));var router=express['Router']();var fs_extra=require(_0x7bb0('0x4'));var auth=require(_0x7bb0('0x5'));var interaction=require(_0x7bb0('0x6'));var config=require(_0x7bb0('0x7'));var controller=require(_0x7bb0('0x8'));router[_0x7bb0('0x9')]('/',auth[_0x7bb0('0xa')](),controller[_0x7bb0('0xb')]);router[_0x7bb0('0x9')](_0x7bb0('0xc'),auth['isAuthenticated'](),controller[_0x7bb0('0xd')]);router[_0x7bb0('0xe')]('/',auth[_0x7bb0('0xa')](),controller['create']);router[_0x7bb0('0xf')](_0x7bb0('0xc'),auth['isAuthenticated'](),controller[_0x7bb0('0x10')]);router['delete'](_0x7bb0('0xc'),auth[_0x7bb0('0xa')](),controller[_0x7bb0('0x11')]);module[_0x7bb0('0x12')]=router;
\ No newline at end of file
+var _0xd1c8=['./openchannelApplication.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','multer','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4eae55,_0x88be5d){var _0xd3110c=function(_0x50a596){while(--_0x50a596){_0x4eae55['push'](_0x4eae55['shift']());}};_0xd3110c(++_0x88be5d);}(_0xd1c8,0x1d6));var _0x8d1c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd1c8[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x8d1c('0x0'));var util=require(_0x8d1c('0x1'));var path=require(_0x8d1c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8d1c('0x3'));var interaction=require(_0x8d1c('0x4'));var config=require(_0x8d1c('0x5'));var controller=require(_0x8d1c('0x6'));router[_0x8d1c('0x7')]('/',auth[_0x8d1c('0x8')](),controller[_0x8d1c('0x9')]);router[_0x8d1c('0x7')](_0x8d1c('0xa'),auth[_0x8d1c('0x8')](),controller[_0x8d1c('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8d1c('0xc')]);router[_0x8d1c('0xd')](_0x8d1c('0xa'),auth['isAuthenticated'](),controller[_0x8d1c('0xe')]);router[_0x8d1c('0xf')]('/:id',auth[_0x8d1c('0x8')](),controller[_0x8d1c('0x10')]);module['exports']=router;
\ No newline at end of file
index d7aba5a..70248aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0edc=['STRING','sequelize','exports','INTEGER','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0edc,0x114));var _0xc0ed=function(_0x1be1ec,_0x47132f){_0x1be1ec=_0x1be1ec-0x0;var _0xd3297a=_0x0edc[_0x1be1ec];return _0xd3297a;};'use strict';var Sequelize=require(_0xc0ed('0x0'));module[_0xc0ed('0x1')]={'priority':{'type':Sequelize[_0xc0ed('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc0ed('0x3')]()},'description':{'type':Sequelize[_0xc0ed('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xb676=['sequelize','exports','INTEGER','noop','TEXT','STRING'];(function(_0x26057d,_0x98e7d6){var _0x1dd270=function(_0x448632){while(--_0x448632){_0x26057d['push'](_0x26057d['shift']());}};_0x1dd270(++_0x98e7d6);}(_0xb676,0x1f2));var _0x6b67=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xb676[_0xa148b7];return _0x51efd3;};'use strict';var Sequelize=require(_0x6b67('0x0'));module[_0x6b67('0x1')]={'priority':{'type':Sequelize[_0x6b67('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6b67('0x3')},'appdata':{'type':Sequelize[_0x6b67('0x4')]()},'description':{'type':Sequelize[_0x6b67('0x5')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 7e76c36..c8ac2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ff=['then','error','name','send','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','OpenchannelApplication','includeAll','include','findAll','rows','catch','show','params','keys','fields','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','destroy'];(function(_0x42dcbb,_0x3bab87){var _0x597f5d=function(_0x3c93c6){while(--_0x3c93c6){_0x42dcbb['push'](_0x42dcbb['shift']());}};_0x597f5d(++_0x3bab87);}(_0xc4ff,0x76));var _0xfc4f=function(_0x37bb09,_0x241085){_0x37bb09=_0x37bb09-0x0;var _0x423559=_0xc4ff[_0x37bb09];return _0x423559;};'use strict';var emlformat=require(_0xfc4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc4f('0x1'));var jsonpatch=require(_0xfc4f('0x2'));var rp=require(_0xfc4f('0x3'));var moment=require(_0xfc4f('0x4'));var BPromise=require(_0xfc4f('0x5'));var Mustache=require(_0xfc4f('0x6'));var util=require(_0xfc4f('0x7'));var path=require(_0xfc4f('0x8'));var sox=require(_0xfc4f('0x9'));var csv=require(_0xfc4f('0xa'));var ejs=require(_0xfc4f('0xb'));var fs=require('fs');var fs_extra=require(_0xfc4f('0xc'));var _=require('lodash');var squel=require(_0xfc4f('0xd'));var crypto=require(_0xfc4f('0xe'));var jsforce=require(_0xfc4f('0xf'));var deskjs=require(_0xfc4f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xfc4f('0x11'));var Papa=require('papaparse');var Redis=require(_0xfc4f('0x12'));var authService=require(_0xfc4f('0x13'));var qs=require(_0xfc4f('0x14'));var as=require(_0xfc4f('0x15'));var hardwareService=require(_0xfc4f('0x16'));var logger=require(_0xfc4f('0x17'))(_0xfc4f('0x18'));var utils=require(_0xfc4f('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xfc4f('0x1a'));var db=require(_0xfc4f('0x1b'))['db'];function respondWithStatusCode(_0x14e04a,_0xd323bb){_0xd323bb=_0xd323bb||0xcc;return function(_0x5c1737){if(_0x5c1737){return _0x14e04a[_0xfc4f('0x1c')](_0xd323bb);}return _0x14e04a[_0xfc4f('0x1d')](_0xd323bb)[_0xfc4f('0x1e')]();};}function respondWithResult(_0x280d10,_0x4ae91c){_0x4ae91c=_0x4ae91c||0xc8;return function(_0x193c1d){if(_0x193c1d){return _0x280d10[_0xfc4f('0x1d')](_0x4ae91c)[_0xfc4f('0x1f')](_0x193c1d);}};}function respondWithFilteredResult(_0x3b6816,_0x55dfd3){return function(_0x4548af){if(_0x4548af){var _0x41de15=typeof _0x55dfd3[_0xfc4f('0x20')]===_0xfc4f('0x21')&&typeof _0x55dfd3[_0xfc4f('0x22')]===_0xfc4f('0x21');var _0xa68723=_0x4548af[_0xfc4f('0x23')];var _0x530f68=_0x41de15?0x0:_0x55dfd3[_0xfc4f('0x20')];var _0x534d3f=_0x41de15?_0x4548af[_0xfc4f('0x23')]:_0x55dfd3[_0xfc4f('0x20')]+_0x55dfd3[_0xfc4f('0x22')];var _0x2b145a;if(_0x534d3f>=_0xa68723){_0x534d3f=_0xa68723;_0x2b145a=0xc8;}else{_0x2b145a=0xce;}_0x3b6816['status'](_0x2b145a);return _0x3b6816[_0xfc4f('0x24')]('Content-Range',_0x530f68+'-'+_0x534d3f+'/'+_0xa68723)[_0xfc4f('0x1f')](_0x4548af);}return null;};}function patchUpdates(_0x26ab07){return function(_0x52cdeb){try{jsonpatch[_0xfc4f('0x25')](_0x52cdeb,_0x26ab07,!![]);}catch(_0x1426a2){return BPromise['reject'](_0x1426a2);}return _0x52cdeb['save']();};}function saveUpdates(_0x1f8575,_0x4e4cb0){return function(_0x59bbd6){if(_0x59bbd6){return _0x59bbd6[_0xfc4f('0x26')](_0x1f8575)['then'](function(_0x93ea1d){return _0x93ea1d;});}return null;};}function removeEntity(_0x437afc,_0x458fce){return function(_0x7e6653){if(_0x7e6653){return _0x7e6653[_0xfc4f('0x27')]()[_0xfc4f('0x28')](function(){_0x437afc['status'](0xcc)[_0xfc4f('0x1e')]();});}};}function handleEntityNotFound(_0x2d3188,_0x3b6754){return function(_0x58c10e){if(!_0x58c10e){_0x2d3188[_0xfc4f('0x1c')](0x194);}return _0x58c10e;};}function handleError(_0x27d720,_0x2756e2){_0x2756e2=_0x2756e2||0x1f4;return function(_0x538339){logger[_0xfc4f('0x29')](_0x538339['stack']);if(_0x538339[_0xfc4f('0x2a')]){delete _0x538339['name'];}_0x27d720[_0xfc4f('0x1d')](_0x2756e2)[_0xfc4f('0x2b')](_0x538339);};}exports[_0xfc4f('0x2c')]=function(_0x284172,_0x53665e){var _0x15a232={},_0x13d27c={},_0xea356f={'count':0x0,'rows':[]};var _0xe28bdd=_['map'](db['OpenchannelApplication'][_0xfc4f('0x2d')],function(_0x4ab0b3){return{'name':_0x4ab0b3[_0xfc4f('0x2e')],'type':_0x4ab0b3[_0xfc4f('0x2f')][_0xfc4f('0x30')]};});_0x13d27c[_0xfc4f('0x31')]=_['map'](_0xe28bdd,'name');_0x13d27c['query']=_['keys'](_0x284172[_0xfc4f('0x32')]);_0x13d27c[_0xfc4f('0x33')]=_[_0xfc4f('0x34')](_0x13d27c[_0xfc4f('0x31')],_0x13d27c['query']);_0x15a232['attributes']=_[_0xfc4f('0x34')](_0x13d27c[_0xfc4f('0x31')],qs['fields'](_0x284172[_0xfc4f('0x32')]['fields']));_0x15a232[_0xfc4f('0x35')]=_0x15a232[_0xfc4f('0x35')][_0xfc4f('0x36')]?_0x15a232[_0xfc4f('0x35')]:_0x13d27c['model'];if(!_0x284172[_0xfc4f('0x32')][_0xfc4f('0x37')](_0xfc4f('0x38'))){_0x15a232['limit']=qs[_0xfc4f('0x22')](_0x284172['query'][_0xfc4f('0x22')]);_0x15a232[_0xfc4f('0x20')]=qs['offset'](_0x284172[_0xfc4f('0x32')][_0xfc4f('0x20')]);}_0x15a232[_0xfc4f('0x39')]=qs[_0xfc4f('0x3a')](_0x284172[_0xfc4f('0x32')]['sort']);_0x15a232[_0xfc4f('0x3b')]=qs[_0xfc4f('0x33')](_[_0xfc4f('0x3c')](_0x284172[_0xfc4f('0x32')],_0x13d27c['filters']),_0xe28bdd);if(_0x284172['query'][_0xfc4f('0x3d')]){_0x15a232[_0xfc4f('0x3b')]=_[_0xfc4f('0x3e')](_0x15a232[_0xfc4f('0x3b')],{'$or':_[_0xfc4f('0x3f')](_0xe28bdd,function(_0x4b7ced){if(_0x4b7ced[_0xfc4f('0x2f')]!==_0xfc4f('0x40')){var _0x455d43={};_0x455d43[_0x4b7ced['name']]={'$like':'%'+_0x284172[_0xfc4f('0x32')][_0xfc4f('0x3d')]+'%'};return _0x455d43;}})});}_0x15a232=_[_0xfc4f('0x3e')]({},_0x15a232,_0x284172['options']);var _0x51ec2e={'where':_0x15a232[_0xfc4f('0x3b')]};return db[_0xfc4f('0x41')][_0xfc4f('0x23')](_0x51ec2e)['then'](function(_0x5b967b){_0xea356f[_0xfc4f('0x23')]=_0x5b967b;if(_0x284172['query'][_0xfc4f('0x42')]){_0x15a232[_0xfc4f('0x43')]=[{'all':!![]}];}return db[_0xfc4f('0x41')][_0xfc4f('0x44')](_0x15a232);})['then'](function(_0x52aaae){_0xea356f[_0xfc4f('0x45')]=_0x52aaae;return _0xea356f;})[_0xfc4f('0x28')](respondWithFilteredResult(_0x53665e,_0x15a232))[_0xfc4f('0x46')](handleError(_0x53665e,null));};exports[_0xfc4f('0x47')]=function(_0x299ffa,_0x1cd44c){var _0x38b436={'raw':!![],'where':{'id':_0x299ffa[_0xfc4f('0x48')]['id']}},_0x7f9501={};_0x7f9501[_0xfc4f('0x31')]=_['keys'](db[_0xfc4f('0x41')][_0xfc4f('0x2d')]);_0x7f9501[_0xfc4f('0x32')]=_[_0xfc4f('0x49')](_0x299ffa['query']);_0x7f9501[_0xfc4f('0x33')]=_['intersection'](_0x7f9501[_0xfc4f('0x31')],_0x7f9501[_0xfc4f('0x32')]);_0x38b436[_0xfc4f('0x35')]=_[_0xfc4f('0x34')](_0x7f9501[_0xfc4f('0x31')],qs['fields'](_0x299ffa[_0xfc4f('0x32')][_0xfc4f('0x4a')]));_0x38b436[_0xfc4f('0x35')]=_0x38b436[_0xfc4f('0x35')][_0xfc4f('0x36')]?_0x38b436[_0xfc4f('0x35')]:_0x7f9501[_0xfc4f('0x31')];if(_0x299ffa[_0xfc4f('0x32')][_0xfc4f('0x42')]){_0x38b436[_0xfc4f('0x43')]=[{'all':!![]}];}_0x38b436=_['merge']({},_0x38b436,_0x299ffa[_0xfc4f('0x4b')]);return db[_0xfc4f('0x41')]['find'](_0x38b436)['then'](handleEntityNotFound(_0x1cd44c,null))[_0xfc4f('0x28')](respondWithResult(_0x1cd44c,null))[_0xfc4f('0x46')](handleError(_0x1cd44c,null));};exports['create']=function(_0x2b7d36,_0x3b636b){return db['OpenchannelApplication'][_0xfc4f('0x4c')](_0x2b7d36['body'],{})[_0xfc4f('0x28')](respondWithResult(_0x3b636b,0xc9))[_0xfc4f('0x46')](handleError(_0x3b636b,null));};exports[_0xfc4f('0x26')]=function(_0x21050d,_0x3df1c3){if(_0x21050d[_0xfc4f('0x4d')]['id']){delete _0x21050d[_0xfc4f('0x4d')]['id'];}return db['OpenchannelApplication'][_0xfc4f('0x4e')]({'where':{'id':_0x21050d['params']['id']}})[_0xfc4f('0x28')](handleEntityNotFound(_0x3df1c3,null))[_0xfc4f('0x28')](saveUpdates(_0x21050d[_0xfc4f('0x4d')],null))['then'](respondWithResult(_0x3df1c3,null))[_0xfc4f('0x46')](handleError(_0x3df1c3,null));};exports[_0xfc4f('0x27')]=function(_0x50ec7d,_0x3fe0b2){return db[_0xfc4f('0x41')][_0xfc4f('0x4e')]({'where':{'id':_0x50ec7d['params']['id']}})[_0xfc4f('0x28')](handleEntityNotFound(_0x3fe0b2,null))[_0xfc4f('0x28')](removeEntity(_0x3fe0b2,null))[_0xfc4f('0x46')](handleError(_0x3fe0b2,null));};
\ No newline at end of file
+var _0x1283=['lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','name','send','index','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','create','body','update','params','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x1283,0x1db));var _0x3128=function(_0xe4c712,_0x1e26d5){_0xe4c712=_0xe4c712-0x0;var _0x101962=_0x1283[_0xe4c712];return _0x101962;};'use strict';var emlformat=require(_0x3128('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3128('0x1'));var jsonpatch=require(_0x3128('0x2'));var rp=require(_0x3128('0x3'));var moment=require(_0x3128('0x4'));var BPromise=require(_0x3128('0x5'));var Mustache=require(_0x3128('0x6'));var util=require(_0x3128('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x3128('0x8'));var ejs=require(_0x3128('0x9'));var fs=require('fs');var fs_extra=require(_0x3128('0xa'));var _=require(_0x3128('0xb'));var squel=require(_0x3128('0xc'));var crypto=require(_0x3128('0xd'));var jsforce=require(_0x3128('0xe'));var deskjs=require(_0x3128('0xf'));var toCsv=require(_0x3128('0x8'));var querystring=require(_0x3128('0x10'));var Papa=require(_0x3128('0x11'));var Redis=require(_0x3128('0x12'));var authService=require(_0x3128('0x13'));var qs=require(_0x3128('0x14'));var as=require(_0x3128('0x15'));var hardwareService=require(_0x3128('0x16'));var logger=require(_0x3128('0x17'))(_0x3128('0x18'));var utils=require(_0x3128('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x3128('0x1a'));var db=require(_0x3128('0x1b'))['db'];function respondWithStatusCode(_0x13d0e6,_0x389d58){_0x389d58=_0x389d58||0xcc;return function(_0x56acf4){if(_0x56acf4){return _0x13d0e6[_0x3128('0x1c')](_0x389d58);}return _0x13d0e6[_0x3128('0x1d')](_0x389d58)[_0x3128('0x1e')]();};}function respondWithResult(_0x50839f,_0x1ca200){_0x1ca200=_0x1ca200||0xc8;return function(_0x342e43){if(_0x342e43){return _0x50839f['status'](_0x1ca200)[_0x3128('0x1f')](_0x342e43);}};}function respondWithFilteredResult(_0x3e5988,_0x519666){return function(_0x768925){if(_0x768925){var _0x231fdb=typeof _0x519666['offset']===_0x3128('0x20')&&typeof _0x519666[_0x3128('0x21')]===_0x3128('0x20');var _0x140dd8=_0x768925[_0x3128('0x22')];var _0xf61e75=_0x231fdb?0x0:_0x519666[_0x3128('0x23')];var _0x55c8c4=_0x231fdb?_0x768925[_0x3128('0x22')]:_0x519666[_0x3128('0x23')]+_0x519666[_0x3128('0x21')];var _0x51f5d6;if(_0x55c8c4>=_0x140dd8){_0x55c8c4=_0x140dd8;_0x51f5d6=0xc8;}else{_0x51f5d6=0xce;}_0x3e5988[_0x3128('0x1d')](_0x51f5d6);return _0x3e5988[_0x3128('0x24')](_0x3128('0x25'),_0xf61e75+'-'+_0x55c8c4+'/'+_0x140dd8)[_0x3128('0x1f')](_0x768925);}return null;};}function patchUpdates(_0x4d5b15){return function(_0x575fbd){try{jsonpatch[_0x3128('0x26')](_0x575fbd,_0x4d5b15,!![]);}catch(_0x177cb7){return BPromise[_0x3128('0x27')](_0x177cb7);}return _0x575fbd[_0x3128('0x28')]();};}function saveUpdates(_0x54be6a,_0x3473e2){return function(_0x191fd5){if(_0x191fd5){return _0x191fd5['update'](_0x54be6a)[_0x3128('0x29')](function(_0x54342f){return _0x54342f;});}return null;};}function removeEntity(_0x50a9b9,_0x428248){return function(_0x4f9d00){if(_0x4f9d00){return _0x4f9d00[_0x3128('0x2a')]()['then'](function(){_0x50a9b9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b398d,_0x12d939){return function(_0x3cbcd8){if(!_0x3cbcd8){_0x5b398d[_0x3128('0x1c')](0x194);}return _0x3cbcd8;};}function handleError(_0x580a59,_0x434572){_0x434572=_0x434572||0x1f4;return function(_0x1fdc31){logger['error'](_0x1fdc31['stack']);if(_0x1fdc31[_0x3128('0x2b')]){delete _0x1fdc31[_0x3128('0x2b')];}_0x580a59[_0x3128('0x1d')](_0x434572)[_0x3128('0x2c')](_0x1fdc31);};}exports[_0x3128('0x2d')]=function(_0xaafa2,_0x11bb0e){var _0x140865={},_0x81a7fd={},_0x29aedc={'count':0x0,'rows':[]};var _0x15325a=_['map'](db[_0x3128('0x2e')][_0x3128('0x2f')],function(_0x5d1691){return{'name':_0x5d1691[_0x3128('0x30')],'type':_0x5d1691[_0x3128('0x31')][_0x3128('0x32')]};});_0x81a7fd[_0x3128('0x33')]=_['map'](_0x15325a,'name');_0x81a7fd[_0x3128('0x34')]=_[_0x3128('0x35')](_0xaafa2[_0x3128('0x34')]);_0x81a7fd['filters']=_['intersection'](_0x81a7fd[_0x3128('0x33')],_0x81a7fd[_0x3128('0x34')]);_0x140865[_0x3128('0x36')]=_[_0x3128('0x37')](_0x81a7fd[_0x3128('0x33')],qs[_0x3128('0x38')](_0xaafa2[_0x3128('0x34')]['fields']));_0x140865[_0x3128('0x36')]=_0x140865[_0x3128('0x36')][_0x3128('0x39')]?_0x140865[_0x3128('0x36')]:_0x81a7fd[_0x3128('0x33')];if(!_0xaafa2[_0x3128('0x34')][_0x3128('0x3a')](_0x3128('0x3b'))){_0x140865['limit']=qs[_0x3128('0x21')](_0xaafa2[_0x3128('0x34')][_0x3128('0x21')]);_0x140865['offset']=qs[_0x3128('0x23')](_0xaafa2[_0x3128('0x34')][_0x3128('0x23')]);}_0x140865[_0x3128('0x3c')]=qs[_0x3128('0x3d')](_0xaafa2['query'][_0x3128('0x3d')]);_0x140865[_0x3128('0x3e')]=qs[_0x3128('0x3f')](_[_0x3128('0x40')](_0xaafa2[_0x3128('0x34')],_0x81a7fd['filters']),_0x15325a);if(_0xaafa2[_0x3128('0x34')][_0x3128('0x41')]){_0x140865[_0x3128('0x3e')]=_[_0x3128('0x42')](_0x140865[_0x3128('0x3e')],{'$or':_[_0x3128('0x43')](_0x15325a,function(_0x164a9b){if(_0x164a9b[_0x3128('0x31')]!==_0x3128('0x44')){var _0x4faebe={};_0x4faebe[_0x164a9b[_0x3128('0x2b')]]={'$like':'%'+_0xaafa2[_0x3128('0x34')][_0x3128('0x41')]+'%'};return _0x4faebe;}})});}_0x140865=_[_0x3128('0x42')]({},_0x140865,_0xaafa2[_0x3128('0x45')]);var _0x1b7f68={'where':_0x140865[_0x3128('0x3e')]};return db[_0x3128('0x2e')]['count'](_0x1b7f68)[_0x3128('0x29')](function(_0x597704){_0x29aedc[_0x3128('0x22')]=_0x597704;if(_0xaafa2[_0x3128('0x34')][_0x3128('0x46')]){_0x140865[_0x3128('0x47')]=[{'all':!![]}];}return db[_0x3128('0x2e')][_0x3128('0x48')](_0x140865);})[_0x3128('0x29')](function(_0x3c25e6){_0x29aedc[_0x3128('0x49')]=_0x3c25e6;return _0x29aedc;})['then'](respondWithFilteredResult(_0x11bb0e,_0x140865))[_0x3128('0x4a')](handleError(_0x11bb0e,null));};exports[_0x3128('0x4b')]=function(_0x1e1c39,_0x12319b){var _0x4d2189={'raw':!![],'where':{'id':_0x1e1c39['params']['id']}},_0x1d59a0={};_0x1d59a0[_0x3128('0x33')]=_[_0x3128('0x35')](db[_0x3128('0x2e')][_0x3128('0x2f')]);_0x1d59a0[_0x3128('0x34')]=_[_0x3128('0x35')](_0x1e1c39[_0x3128('0x34')]);_0x1d59a0['filters']=_[_0x3128('0x37')](_0x1d59a0[_0x3128('0x33')],_0x1d59a0[_0x3128('0x34')]);_0x4d2189['attributes']=_['intersection'](_0x1d59a0[_0x3128('0x33')],qs[_0x3128('0x38')](_0x1e1c39[_0x3128('0x34')]['fields']));_0x4d2189['attributes']=_0x4d2189['attributes'][_0x3128('0x39')]?_0x4d2189[_0x3128('0x36')]:_0x1d59a0['model'];if(_0x1e1c39[_0x3128('0x34')][_0x3128('0x46')]){_0x4d2189[_0x3128('0x47')]=[{'all':!![]}];}_0x4d2189=_['merge']({},_0x4d2189,_0x1e1c39[_0x3128('0x45')]);return db[_0x3128('0x2e')]['find'](_0x4d2189)[_0x3128('0x29')](handleEntityNotFound(_0x12319b,null))[_0x3128('0x29')](respondWithResult(_0x12319b,null))[_0x3128('0x4a')](handleError(_0x12319b,null));};exports['create']=function(_0x45aeba,_0x26c331){return db[_0x3128('0x2e')][_0x3128('0x4c')](_0x45aeba[_0x3128('0x4d')],{})[_0x3128('0x29')](respondWithResult(_0x26c331,0xc9))[_0x3128('0x4a')](handleError(_0x26c331,null));};exports[_0x3128('0x4e')]=function(_0x130fac,_0x44c516){if(_0x130fac['body']['id']){delete _0x130fac[_0x3128('0x4d')]['id'];}return db[_0x3128('0x2e')]['find']({'where':{'id':_0x130fac[_0x3128('0x4f')]['id']}})[_0x3128('0x29')](handleEntityNotFound(_0x44c516,null))[_0x3128('0x29')](saveUpdates(_0x130fac[_0x3128('0x4d')],null))['then'](respondWithResult(_0x44c516,null))['catch'](handleError(_0x44c516,null));};exports['destroy']=function(_0x534090,_0x4937d5){return db[_0x3128('0x2e')][_0x3128('0x50')]({'where':{'id':_0x534090[_0x3128('0x4f')]['id']}})[_0x3128('0x29')](handleEntityNotFound(_0x4937d5,null))['then'](removeEntity(_0x4937d5,null))[_0x3128('0x4a')](handleError(_0x4937d5,null));};
\ No newline at end of file
index f30484d..6c2c30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b63=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0xf4df8c,_0x23d381){var _0x44e012=function(_0x3a6e51){while(--_0x3a6e51){_0xf4df8c['push'](_0xf4df8c['shift']());}};_0x44e012(++_0x23d381);}(_0x8b63,0xea));var _0x38b6=function(_0x2c7143,_0x93037e){_0x2c7143=_0x2c7143-0x0;var _0x58c565=_0x8b63[_0x2c7143];return _0x58c565;};'use strict';var _=require('lodash');var util=require(_0x38b6('0x0'));var logger=require(_0x38b6('0x1'))('api');var moment=require(_0x38b6('0x2'));var BPromise=require(_0x38b6('0x3'));var rp=require(_0x38b6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x38b6('0x5'));var config=require(_0x38b6('0x6'));var attributes=require(_0x38b6('0x7'));module['exports']=function(_0x2b3fa7,_0x1e6a69){return _0x2b3fa7[_0x38b6('0x8')](_0x38b6('0x9'),attributes,{'tableName':_0x38b6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x38b6('0xb'),'collate':_0x38b6('0xc')});};
\ No newline at end of file
+var _0xdfae=['./openchannelApplication.attributes','exports','OpenchannelApplication','openchannel_applications','utf8mb4','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x3aaf0a,_0x450970){var _0x33e6bc=function(_0x1db54d){while(--_0x1db54d){_0x3aaf0a['push'](_0x3aaf0a['shift']());}};_0x33e6bc(++_0x450970);}(_0xdfae,0x125));var _0xedfa=function(_0x34bd34,_0x1444f7){_0x34bd34=_0x34bd34-0x0;var _0x4e36d6=_0xdfae[_0x34bd34];return _0x4e36d6;};'use strict';var _=require('lodash');var util=require(_0xedfa('0x0'));var logger=require(_0xedfa('0x1'))(_0xedfa('0x2'));var moment=require(_0xedfa('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xedfa('0x4'));var rimraf=require(_0xedfa('0x5'));var config=require(_0xedfa('0x6'));var attributes=require(_0xedfa('0x7'));module[_0xedfa('0x8')]=function(_0x417b5d,_0x23eb2d){return _0x417b5d['define'](_0xedfa('0x9'),attributes,{'tableName':_0xedfa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xedfa('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index b3d6e23..3aeea7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9810=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','update','body','options','raw','where','attributes','then','catch','moment'];(function(_0x1465dc,_0x4d684d){var _0x226206=function(_0x2db59e){while(--_0x2db59e){_0x1465dc['push'](_0x1465dc['shift']());}};_0x226206(++_0x4d684d);}(_0x9810,0xc3));var _0x0981=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x9810[_0x352e09];return _0x1b7094;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0981('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0981('0x1'));var db=require(_0x0981('0x2'))['db'];var utils=require(_0x0981('0x3'));var logger=require(_0x0981('0x4'))(_0x0981('0x5'));var config=require(_0x0981('0x6'));var jayson=require(_0x0981('0x7'));var client=jayson[_0x0981('0x8')][_0x0981('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x231a8d,_0x40e716,_0x3eb981){return new BPromise(function(_0x36b5bb,_0x2431e0){return client['request'](_0x231a8d,_0x3eb981)['then'](function(_0x1bf5da){logger[_0x0981('0xa')](_0x0981('0xb'),_0x40e716,_0x0981('0xc'));logger[_0x0981('0xd')](_0x0981('0xe'),_0x40e716,'request\x20sent',JSON[_0x0981('0xf')](_0x1bf5da));if(_0x1bf5da[_0x0981('0x10')]){if(_0x1bf5da['error'][_0x0981('0x11')]===0x1f4){logger['error'](_0x0981('0xb'),_0x40e716,_0x1bf5da['error']['message']);return _0x2431e0(_0x1bf5da[_0x0981('0x10')][_0x0981('0x12')]);}logger['error'](_0x0981('0xb'),_0x40e716,_0x1bf5da[_0x0981('0x10')][_0x0981('0x12')]);return _0x36b5bb(_0x1bf5da[_0x0981('0x10')]['message']);}else{logger[_0x0981('0xa')]('OpenchannelApplication,\x20%s,\x20%s',_0x40e716,_0x0981('0xc'));_0x36b5bb(_0x1bf5da[_0x0981('0x13')][_0x0981('0x12')]);}})['catch'](function(_0x38ee79){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x40e716,_0x38ee79);_0x2431e0(_0x38ee79);});});}exports['UpdateOpenchannelApplication']=function(_0x4369d7){var _0x4f5b88=this;return new Promise(function(_0x54d8c0,_0x5ce8e1){return db['OpenchannelApplication'][_0x0981('0x14')](_0x4369d7[_0x0981('0x15')],{'raw':_0x4369d7['options']?_0x4369d7[_0x0981('0x16')][_0x0981('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4369d7[_0x0981('0x16')]?_0x4369d7[_0x0981('0x16')][_0x0981('0x18')]||null:null,'attributes':_0x4369d7['options']?_0x4369d7[_0x0981('0x16')][_0x0981('0x19')]||null:null,'limit':_0x4369d7['options']?_0x4369d7[_0x0981('0x16')]['limit']||null:null})[_0x0981('0x1a')](function(_0x1beed2){logger[_0x0981('0xa')]('UpdateOpenchannelApplication',_0x4369d7);logger['debug']('UpdateOpenchannelApplication',_0x4369d7,JSON['stringify'](_0x1beed2));_0x54d8c0(_0x1beed2);})[_0x0981('0x1b')](function(_0x1de9fc){logger[_0x0981('0x10')]('UpdateOpenchannelApplication',_0x1de9fc['message'],_0x4369d7);_0x5ce8e1(_0x4f5b88[_0x0981('0x10')](0x1f4,_0x1de9fc[_0x0981('0x12')]));});});};
\ No newline at end of file
+var _0xf3ac=['error','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','attributes','limit','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s'];(function(_0x2c602e,_0x1d26f5){var _0x1a2650=function(_0x2370d1){while(--_0x2370d1){_0x2c602e['push'](_0x2c602e['shift']());}};_0x1a2650(++_0x1d26f5);}(_0xf3ac,0x1b2));var _0xcf3a=function(_0xdbd1f9,_0x9ef94e){_0xdbd1f9=_0xdbd1f9-0x0;var _0x43d48c=_0xf3ac[_0xdbd1f9];return _0x43d48c;};'use strict';var _=require(_0xcf3a('0x0'));var util=require('util');var moment=require(_0xcf3a('0x1'));var BPromise=require(_0xcf3a('0x2'));var rs=require(_0xcf3a('0x3'));var fs=require('fs');var Redis=require(_0xcf3a('0x4'));var db=require(_0xcf3a('0x5'))['db'];var utils=require(_0xcf3a('0x6'));var logger=require(_0xcf3a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xcf3a('0x8'));var client=jayson[_0xcf3a('0x9')][_0xcf3a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3fb95e,_0x1711b3,_0x2b543f){return new BPromise(function(_0x24166e,_0x37774b){return client[_0xcf3a('0xb')](_0x3fb95e,_0x2b543f)['then'](function(_0x563338){logger[_0xcf3a('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x1711b3,_0xcf3a('0xd'));logger[_0xcf3a('0xe')](_0xcf3a('0xf'),_0x1711b3,_0xcf3a('0xd'),JSON['stringify'](_0x563338));if(_0x563338[_0xcf3a('0x10')]){if(_0x563338[_0xcf3a('0x10')]['code']===0x1f4){logger[_0xcf3a('0x10')](_0xcf3a('0x11'),_0x1711b3,_0x563338[_0xcf3a('0x10')][_0xcf3a('0x12')]);return _0x37774b(_0x563338[_0xcf3a('0x10')][_0xcf3a('0x12')]);}logger[_0xcf3a('0x10')](_0xcf3a('0x11'),_0x1711b3,_0x563338['error'][_0xcf3a('0x12')]);return _0x24166e(_0x563338[_0xcf3a('0x10')]['message']);}else{logger[_0xcf3a('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x1711b3,_0xcf3a('0xd'));_0x24166e(_0x563338[_0xcf3a('0x13')][_0xcf3a('0x12')]);}})[_0xcf3a('0x14')](function(_0x77b15c){logger[_0xcf3a('0x10')](_0xcf3a('0x11'),_0x1711b3,_0x77b15c);_0x37774b(_0x77b15c);});});}exports[_0xcf3a('0x15')]=function(_0x56ade1){var _0x254e3e=this;return new Promise(function(_0x48a72f,_0x4af09c){return db[_0xcf3a('0x16')][_0xcf3a('0x17')](_0x56ade1[_0xcf3a('0x18')],{'raw':_0x56ade1['options']?_0x56ade1[_0xcf3a('0x19')][_0xcf3a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56ade1['options']?_0x56ade1[_0xcf3a('0x19')]['where']||null:null,'attributes':_0x56ade1['options']?_0x56ade1[_0xcf3a('0x19')][_0xcf3a('0x1b')]||null:null,'limit':_0x56ade1['options']?_0x56ade1[_0xcf3a('0x19')][_0xcf3a('0x1c')]||null:null})[_0xcf3a('0x1d')](function(_0x2b88d7){logger[_0xcf3a('0xc')]('UpdateOpenchannelApplication',_0x56ade1);logger[_0xcf3a('0xe')](_0xcf3a('0x15'),_0x56ade1,JSON['stringify'](_0x2b88d7));_0x48a72f(_0x2b88d7);})['catch'](function(_0x13ae99){logger[_0xcf3a('0x10')](_0xcf3a('0x15'),_0x13ae99[_0xcf3a('0x12')],_0x56ade1);_0x4af09c(_0x254e3e[_0xcf3a('0x10')](0x1f4,_0x13ae99['message']));});});};
\ No newline at end of file
index afc59db..f60d826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25f8=['getMessages','/:id/download','create','addMessage','post','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','/:id','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','express','Router','../../config/environment','./openchannelInteraction.controller','get','/describe','isAuthenticated','describe','show','/:id/messages'];(function(_0x195577,_0x5de53a){var _0x13c367=function(_0x583022){while(--_0x583022){_0x195577['push'](_0x195577['shift']());}};_0x13c367(++_0x5de53a);}(_0x25f8,0x133));var _0x825f=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x25f8[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x825f('0x0'));var util=require(_0x825f('0x1'));var path=require('path');var timeout=require(_0x825f('0x2'));var express=require(_0x825f('0x3'));var router=express[_0x825f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x825f('0x5'));var controller=require(_0x825f('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x825f('0x7')](_0x825f('0x8'),auth[_0x825f('0x9')](),controller[_0x825f('0xa')]);router[_0x825f('0x7')]('/:id',auth[_0x825f('0x9')](),controller[_0x825f('0xb')]);router[_0x825f('0x7')](_0x825f('0xc'),auth[_0x825f('0x9')](),controller[_0x825f('0xd')]);router['get'](_0x825f('0xe'),auth[_0x825f('0x9')](),controller['download']);router['post']('/',auth[_0x825f('0x9')](),controller[_0x825f('0xf')]);router['post'](_0x825f('0xc'),auth['isAuthenticated'](),controller[_0x825f('0x10')]);router[_0x825f('0x11')](_0x825f('0x12'),auth[_0x825f('0x9')](),interaction[_0x825f('0x13')](_0x825f('0x14'),_0x825f('0x15')),controller[_0x825f('0x16')]);router[_0x825f('0x17')](_0x825f('0x18'),auth[_0x825f('0x9')](),interaction[_0x825f('0x13')]('openchannel',_0x825f('0x19')),controller[_0x825f('0x1a')]);router[_0x825f('0x1b')]('/:id',auth[_0x825f('0x9')](),interaction[_0x825f('0x13')](_0x825f('0x14'),_0x825f('0x1c')),controller[_0x825f('0x1d')]);router[_0x825f('0x1b')](_0x825f('0x12'),auth[_0x825f('0x9')](),controller[_0x825f('0x1e')]);module[_0x825f('0x1f')]=router;
\ No newline at end of file
+var _0xf188=['put','delete','openchannelinteraction:destroy','destroy','/:id/tags','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','/describe','isAuthenticated','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','openchannel','openchannelinteraction:addtags','addTags'];(function(_0xc106b0,_0x3f3921){var _0x47f59c=function(_0x2bca0e){while(--_0x2bca0e){_0xc106b0['push'](_0xc106b0['shift']());}};_0x47f59c(++_0x3f3921);}(_0xf188,0x171));var _0x8f18=function(_0x2a2780,_0x374a34){_0x2a2780=_0x2a2780-0x0;var _0xa74858=_0xf188[_0x2a2780];return _0xa74858;};'use strict';var multer=require(_0x8f18('0x0'));var util=require(_0x8f18('0x1'));var path=require(_0x8f18('0x2'));var timeout=require(_0x8f18('0x3'));var express=require(_0x8f18('0x4'));var router=express[_0x8f18('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8f18('0x6'));var interaction=require(_0x8f18('0x7'));var config=require('../../config/environment');var controller=require(_0x8f18('0x8'));router[_0x8f18('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x8f18('0x9')](_0x8f18('0xa'),auth[_0x8f18('0xb')](),controller['describe']);router[_0x8f18('0x9')](_0x8f18('0xc'),auth[_0x8f18('0xb')](),controller['show']);router[_0x8f18('0x9')](_0x8f18('0xd'),auth[_0x8f18('0xb')](),controller[_0x8f18('0xe')]);router[_0x8f18('0x9')](_0x8f18('0xf'),auth[_0x8f18('0xb')](),controller[_0x8f18('0x10')]);router[_0x8f18('0x11')]('/',auth['isAuthenticated'](),controller[_0x8f18('0x12')]);router[_0x8f18('0x11')](_0x8f18('0xd'),auth[_0x8f18('0xb')](),controller[_0x8f18('0x13')]);router[_0x8f18('0x11')]('/:id/tags',auth[_0x8f18('0xb')](),interaction['tracked'](_0x8f18('0x14'),_0x8f18('0x15')),controller[_0x8f18('0x16')]);router[_0x8f18('0x17')](_0x8f18('0xc'),auth[_0x8f18('0xb')](),interaction['tracked'](_0x8f18('0x14'),'openchannelinteraction:update'),controller['update']);router[_0x8f18('0x18')](_0x8f18('0xc'),auth[_0x8f18('0xb')](),interaction['tracked'](_0x8f18('0x14'),_0x8f18('0x19')),controller[_0x8f18('0x1a')]);router[_0x8f18('0x18')](_0x8f18('0x1b'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index 3657a20..cd07eca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcddd=['DATE','STRING','out','sequelize','exports','BOOLEAN'];(function(_0x20f7aa,_0x2aa014){var _0x43e44c=function(_0x284e51){while(--_0x284e51){_0x20f7aa['push'](_0x20f7aa['shift']());}};_0x43e44c(++_0x2aa014);}(_0xcddd,0x1a1));var _0xdcdd=function(_0x51e0c2,_0x5828ce){_0x51e0c2=_0x51e0c2-0x0;var _0x156a1a=_0xcddd[_0x51e0c2];return _0x156a1a;};'use strict';var Sequelize=require(_0xdcdd('0x0'));module[_0xdcdd('0x1')]={'closed':{'type':Sequelize[_0xdcdd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xdcdd('0x3')]},'disposition':{'type':Sequelize[_0xdcdd('0x4')]},'secondDisposition':{'type':Sequelize[_0xdcdd('0x4')]},'thirdDisposition':{'type':Sequelize[_0xdcdd('0x4')]},'note':{'type':Sequelize[_0xdcdd('0x4')]},'read1stAt':{'type':Sequelize[_0xdcdd('0x3')]},'threadId':{'type':Sequelize[_0xdcdd('0x4')]},'externalUrl':{'type':Sequelize[_0xdcdd('0x4')]},'lastMsgAt':{'type':Sequelize[_0xdcdd('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xdcdd('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xdcdd('0x4')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xcee0=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','exports'];(function(_0x46884f,_0x2b5c5a){var _0x78c6c0=function(_0x43ba0a){while(--_0x43ba0a){_0x46884f['push'](_0x46884f['shift']());}};_0x78c6c0(++_0x2b5c5a);}(_0xcee0,0x1e1));var _0x0cee=function(_0x5e3701,_0x596265){_0x5e3701=_0x5e3701-0x0;var _0x345dcf=_0xcee0[_0x5e3701];return _0x345dcf;};'use strict';var Sequelize=require(_0x0cee('0x0'));module[_0x0cee('0x1')]={'closed':{'type':Sequelize[_0x0cee('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0cee('0x3')]},'disposition':{'type':Sequelize[_0x0cee('0x4')]},'secondDisposition':{'type':Sequelize[_0x0cee('0x4')]},'thirdDisposition':{'type':Sequelize[_0x0cee('0x4')]},'note':{'type':Sequelize[_0x0cee('0x4')]},'read1stAt':{'type':Sequelize[_0x0cee('0x3')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x0cee('0x4')]},'lastMsgAt':{'type':Sequelize[_0x0cee('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x0cee('0x5')]('in',_0x0cee('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x0cee('0x4')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index a17d9fd..b0992a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0274=['join','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','Attachment','Messages','createdAt','direction','Account','Owner','get','N.A.','closedAt','disposition','Public','Private','basename','createReadStream','pipe','createWriteStream','out','secret','downloadInteraction.ejs','.pdf','Openchannel','createPdfFromHTML','log','err','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','Users','map','TagIds','Tags','split','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filters','field','from','tools_tags','select','u.id','u.fullname','user_has_openchannel_interactions','left_join','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','type','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','UserId','body','some','compact','isEmpty','OpenchannelAccountId','where','i.OpenchannelAccountId\x20IN\x20?','concat','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.OpenchannelAccountId\x20IS\x20NULL','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','sequelize','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','include','options','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','nolimit','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','color','emit','removeTags','download','unix','root','server','files','attachments'];(function(_0x2476ad,_0x161b25){var _0x3dcc3c=function(_0x547bd0){while(--_0x547bd0){_0x2476ad['push'](_0x2476ad['shift']());}};_0x3dcc3c(++_0x161b25);}(_0x0274,0x10d));var _0x4027=function(_0x4f7afd,_0x4afa83){_0x4f7afd=_0x4f7afd-0x0;var _0xcf0138=_0x0274[_0x4f7afd];return _0xcf0138;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4027('0x0'));var zipdir=require(_0x4027('0x1'));var jsonpatch=require(_0x4027('0x2'));var rp=require('request-promise');var moment=require(_0x4027('0x3'));var BPromise=require(_0x4027('0x4'));var Mustache=require(_0x4027('0x5'));var util=require(_0x4027('0x6'));var path=require('path');var sox=require(_0x4027('0x7'));var csv=require(_0x4027('0x8'));var ejs=require(_0x4027('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4027('0xa'));var squel=require(_0x4027('0xb'));var crypto=require('crypto');var jsforce=require(_0x4027('0xc'));var deskjs=require(_0x4027('0xd'));var toCsv=require(_0x4027('0x8'));var querystring=require(_0x4027('0xe'));var Papa=require(_0x4027('0xf'));var Redis=require('ioredis');var authService=require(_0x4027('0x10'));var qs=require(_0x4027('0x11'));var as=require(_0x4027('0x12'));var pdf=require(_0x4027('0x13'));var hardwareService=require(_0x4027('0x14'));var logger=require(_0x4027('0x15'))(_0x4027('0x16'));var utils=require('../../config/utils');var config=require(_0x4027('0x17'));var licenseUtil=require(_0x4027('0x18'));var db=require(_0x4027('0x19'))['db'];config[_0x4027('0x1a')]=_[_0x4027('0x1b')](config[_0x4027('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x4027('0x1c'))(new Redis(config[_0x4027('0x1a')]));require(_0x4027('0x1d'))[_0x4027('0x1e')](socket);function respondWithStatusCode(_0x233cf7,_0x3643a8){_0x3643a8=_0x3643a8||0xcc;return function(_0x2771fb){if(_0x2771fb){return _0x233cf7['sendStatus'](_0x3643a8);}return _0x233cf7[_0x4027('0x1f')](_0x3643a8)[_0x4027('0x20')]();};}function respondWithResult(_0x375a17,_0x497e5e){_0x497e5e=_0x497e5e||0xc8;return function(_0x225919){if(_0x225919){return _0x375a17['status'](_0x497e5e)['json'](_0x225919);}};}function respondWithFilteredResult(_0x2856a4,_0x487343){return function(_0x71d4fa){if(_0x71d4fa){var _0x4057bf=typeof _0x487343[_0x4027('0x21')]==='undefined'&&typeof _0x487343[_0x4027('0x22')]===_0x4027('0x23');var _0x38196a=_0x71d4fa['count'];var _0x34d7c2=_0x4057bf?0x0:_0x487343[_0x4027('0x21')];var _0x5e87ed=_0x4057bf?_0x71d4fa[_0x4027('0x24')]:_0x487343[_0x4027('0x21')]+_0x487343[_0x4027('0x22')];var _0x597c4d;if(_0x5e87ed>=_0x38196a){_0x5e87ed=_0x38196a;_0x597c4d=0xc8;}else{_0x597c4d=0xce;}_0x2856a4[_0x4027('0x1f')](_0x597c4d);return _0x2856a4['set'](_0x4027('0x25'),_0x34d7c2+'-'+_0x5e87ed+'/'+_0x38196a)[_0x4027('0x26')](_0x71d4fa);}return null;};}function patchUpdates(_0x530c34){return function(_0x19647b){try{jsonpatch[_0x4027('0x27')](_0x19647b,_0x530c34,!![]);}catch(_0x1be59c){return BPromise[_0x4027('0x28')](_0x1be59c);}return _0x19647b[_0x4027('0x29')]();};}function saveUpdates(_0x2faa9c,_0x4ed75a){return function(_0xbb5825){if(_0xbb5825){return _0xbb5825[_0x4027('0x2a')](_0x2faa9c)[_0x4027('0x2b')](function(_0x5293f7){return _0x5293f7;});}return null;};}function removeEntity(_0x36d3d6,_0x47120e){return function(_0x3304a1){if(_0x3304a1){return _0x3304a1['destroy']()[_0x4027('0x2b')](function(){_0x36d3d6[_0x4027('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x181cce,_0x5ae221){return function(_0x3e6f72){if(!_0x3e6f72){_0x181cce[_0x4027('0x2c')](0x194);}return _0x3e6f72;};}function handleError(_0x1ff202,_0x5b895b){_0x5b895b=_0x5b895b||0x1f4;return function(_0x2bf861){logger[_0x4027('0x2d')](_0x2bf861[_0x4027('0x2e')]);if(_0x2bf861[_0x4027('0x2f')]){delete _0x2bf861[_0x4027('0x2f')];}_0x1ff202[_0x4027('0x1f')](_0x5b895b)['send'](_0x2bf861);};}function getInteractionUsers(_0x223cec,_0x4351e3){return new BPromise(function(_0x4a2e7d,_0x49993a){try{if(_0x4351e3[_0x223cec['id']]){_0x223cec[_0x4027('0x30')]=_[_0x4027('0x31')](_0x4351e3[_0x223cec['id']],function(_0x1677f1){return{'id':_0x1677f1['id'],'fullname':_0x1677f1['fullname']};});}}catch(_0x2a2d10){_0x49993a(_0x2a2d10);}_0x4a2e7d(_0x223cec);});}function getInteractionTags(_0x574d1c,_0x1878c9){return new BPromise(function(_0x445212,_0x56623a){try{if(_0x574d1c[_0x4027('0x32')]){_0x574d1c[_0x4027('0x33')]=[];_0x574d1c['TagIds'][_0x4027('0x34')](',')[_0x4027('0x35')](function(_0x239507){_0x574d1c[_0x4027('0x33')][_0x4027('0x36')](_0x1878c9[_0x239507]);});}delete _0x574d1c['TagIds'];}catch(_0x198ed9){_0x56623a(_0x198ed9);}_0x445212(_0x574d1c);});}function updateOpenchannelInteraction(_0x31b59e,_0x48ad53,_0x3675d1){return new BPromise(function(_0x2335c9,_0x3f7155){return getInteractionUsers(_0x31b59e,_0x3675d1)[_0x4027('0x2b')](function(_0x2f4a8f){return getInteractionTags(_0x2f4a8f,_0x48ad53);})[_0x4027('0x2b')](function(_0x1e39d9){_0x2335c9(_0x1e39d9);})[_0x4027('0x37')](function(_0x2dbe63){_0x3f7155(_0x2dbe63);});});}exports[_0x4027('0x38')]=function(_0x35504c,_0x3183a2){var _0x18b4c8={},_0x2cf046={},_0x4bd811={'count':0x0,'rows':[]};var _0x2ec5be=_[_0x4027('0x31')](db[_0x4027('0x39')][_0x4027('0x3a')],function(_0x2729d2){return{'name':_0x2729d2[_0x4027('0x3b')],'type':_0x2729d2['type'][_0x4027('0x3c')]};});_0x2cf046[_0x4027('0x3d')]=_[_0x4027('0x31')](_0x2ec5be,'name');_0x2cf046[_0x4027('0x3e')]=_[_0x4027('0x3f')](_0x35504c[_0x4027('0x3e')]);_0x2cf046['filters']=_['intersection'](_0x2cf046['model'],_0x2cf046[_0x4027('0x3e')]);_0x18b4c8[_0x4027('0x40')]=_[_0x4027('0x41')](_0x2cf046['model'],qs[_0x4027('0x42')](_0x35504c[_0x4027('0x3e')][_0x4027('0x42')]));_0x18b4c8[_0x4027('0x40')]=_0x18b4c8['attributes'][_0x4027('0x43')]?_0x18b4c8[_0x4027('0x40')]:_0x2cf046[_0x4027('0x3d')];if(!_0x35504c[_0x4027('0x3e')][_0x4027('0x44')]('nolimit')){_0x18b4c8[_0x4027('0x22')]=qs[_0x4027('0x22')](_0x35504c[_0x4027('0x3e')][_0x4027('0x22')]);_0x18b4c8[_0x4027('0x21')]=qs[_0x4027('0x21')](_0x35504c['query'][_0x4027('0x21')]);}_0x18b4c8[_0x4027('0x45')]=qs[_0x4027('0x46')](_0x35504c[_0x4027('0x3e')][_0x4027('0x46')]);_0x18b4c8['where']=qs['filters'](_[_0x4027('0x47')](_0x35504c['query'],_0x2cf046[_0x4027('0x48')]),_0x2ec5be);var _0x5a6100=[];var _0x5e6d9a=squel['select']()[_0x4027('0x49')]('id')[_0x4027('0x49')](_0x4027('0x2f'))['field']('color')[_0x4027('0x4a')](_0x4027('0x4b'));var _0x1fb632=squel[_0x4027('0x4c')]()[_0x4027('0x49')](_0x4027('0x4d'))[_0x4027('0x49')](_0x4027('0x4e'))[_0x4027('0x49')]('ui.OpenchannelInteractionId')[_0x4027('0x4a')](_0x4027('0x4f'),'ui')[_0x4027('0x50')]('users','u',_0x4027('0x51'));var _0x106c62=squel[_0x4027('0x4c')]()['from'](_0x4027('0x52'),'i')['left_join'](_0x4027('0x53'),'c',_0x4027('0x54'))[_0x4027('0x50')](_0x4027('0x55'),'o',_0x4027('0x56'))[_0x4027('0x50')](_0x4027('0x57'),'a',_0x4027('0x58'))[_0x4027('0x50')](_0x4027('0x59'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x4027('0x50')](_0x4027('0x5a'),'it',_0x4027('0x5b'))['left_join']('tools_tags','t','t.id\x20=\x20it.TagId');var _0x4a3a17=squel[_0x4027('0x5c')]();var _0x42aeef=[];var _0x5bf1c7=squel[_0x4027('0x5c')]();var _0x5b474e;if(_0x35504c[_0x4027('0x3e')][_0x4027('0x5d')]){_0x5b474e=as['parseSearch'](_0x35504c[_0x4027('0x3e')][_0x4027('0x5d')]);var _0x3f64af=_0x5b474e[_0x4027('0x5e')];for(var _0x4d0369=0x0;_0x4d0369<_0x5b474e[_0x4027('0x5f')][_0x4027('0x43')];_0x4d0369++){var _0x320f04=_0x5b474e[_0x4027('0x5f')][_0x4d0369];var _0x2f0ff8='i';var _0x57290a=_['find'](_0x2ec5be,[_0x4027('0x2f'),_0x320f04[_0x4027('0x49')]]);if(!_0x57290a){switch(_0x320f04[_0x4027('0x49')]){case'unreadMessages':if(_0x320f04[_0x4027('0x60')]==0x1){_0x106c62[_0x4027('0x61')]('`'+_0x320f04[_0x4027('0x49')]+_0x4027('0x62'));}else{_0x106c62[_0x4027('0x61')]('`'+_0x320f04['field']+_0x4027('0x63'));}break;case _0x4027('0x64'):if(_0x320f04['operator']===_0x4027('0x65')){if(_0x320f04[_0x4027('0x60')][_0x4027('0x34')]('\x20')['length']>0x1){_0x4a3a17[_0x3f64af](_0x4027('0x66'),qs[_0x4027('0x67')](_0x320f04['value']),null);}else{var _0x111dfd='%'+_0x320f04[_0x4027('0x60')]+'%';_0x4a3a17[_0x3f64af](_0x4027('0x68'),_0x111dfd,_0x111dfd,_0x111dfd);}}else{_0x57290a=_[_0x4027('0x69')](_0x2ec5be,[_0x4027('0x2f'),_0x4027('0x6a')]);_0x320f04[_0x4027('0x49')]='ContactId';_0x5edcb2=as[_0x4027('0x6b')](_0x2f0ff8,_0x57290a[_0x4027('0x6c')],_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2[_0x4027('0x6d')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x6e')],_0x5edcb2['value'][_0x4027('0x20')]);}break;case _0x4027('0x6f'):var _0x4dadb4=_0x320f04[_0x4027('0x60')][_0x4027('0x34')](',')[_0x4027('0x31')](function(_0x39b864){return Number(_0x39b864);});_0x4dadb4[_0x4027('0x35')](function(_0x3a68e4){_0x5bf1c7['or'](_0x4027('0x70'),'%,'+_0x3a68e4+',%');});_0x42aeef=_[_0x4027('0x71')](_0x42aeef,_0x4dadb4);break;case _0x4027('0x72'):if(_0x320f04[_0x4027('0x73')]===_0x4027('0x65')){_0x4a3a17[_0x3f64af]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x320f04[_0x4027('0x60')]+'%',null);}else{_0x57290a=_['find'](_0x2ec5be,[_0x4027('0x2f'),_0x4027('0x74')]);_0x320f04[_0x4027('0x49')]=_0x4027('0x74');_0x5edcb2=as[_0x4027('0x6b')](_0x2f0ff8,_0x57290a[_0x4027('0x6c')],_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2['text'],_0x5edcb2[_0x4027('0x60')][_0x4027('0x6e')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x20')]);}break;case _0x4027('0x75'):_0x5edcb2=as[_0x4027('0x6b')]('me',null,_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2[_0x4027('0x6d')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x6e')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x20')]);break;}}else{var _0x5edcb2=as[_0x4027('0x6b')](_0x2f0ff8,_0x57290a[_0x4027('0x6c')],_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2[_0x4027('0x6d')],_0x5edcb2['value'][_0x4027('0x6e')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x20')]);}}}else{var _0x4ef109=_(_0x35504c[_0x4027('0x3e')])[_0x4027('0x3f')]()[_0x4027('0x31')](function(_0x2d9054){return _[_0x4027('0x76')](_0x2ec5be,[_0x4027('0x2f'),_0x2d9054])?_0x2d9054:undefined;})[_0x4027('0x77')]()[_0x4027('0x60')]();if(!_[_0x4027('0x78')](_0x4ef109)){_0x4ef109[_0x4027('0x35')](function(_0x2974c5){if(_0x2974c5===_0x4027('0x79')){_0x106c62[_0x4027('0x7a')](_0x4027('0x7b'),[][_0x4027('0x7c')](_0x35504c[_0x4027('0x3e')][_0x2974c5]));}else if(_0x2974c5==='createdAt'){var _0x44dc39=JSON[_0x4027('0x7d')](_0x35504c['query'][_0x2974c5])['$gte'];var _0x30b715=JSON['parse'](_0x35504c[_0x4027('0x3e')][_0x2974c5])['$lte'];_0x106c62[_0x4027('0x7a')](_0x4027('0x7e'),_0x44dc39,_0x30b715);}else{if(_0x35504c[_0x4027('0x3e')][_0x2974c5]===_0x4027('0x7f')){_0x106c62[_0x4027('0x7a')]('i.'+_0x2974c5+_0x4027('0x80'));}else{_0x106c62['where']('i.'+_0x2974c5+_0x4027('0x81'),_0x35504c['query'][_0x2974c5]);}}});}if(_0x35504c[_0x4027('0x3e')][_0x4027('0x82')]){if(_0x35504c[_0x4027('0x3e')][_0x4027('0x82')]==0x1){_0x106c62[_0x4027('0x61')]('`unreadMessages`\x20=\x200');}else{_0x106c62[_0x4027('0x61')]('`unreadMessages`\x20>\x200');}}if(_0x35504c[_0x4027('0x3e')][_0x4027('0x83')]){_0x42aeef=_[_0x4027('0x84')](_0x35504c['query'][_0x4027('0x83')])?_0x35504c[_0x4027('0x3e')]['tag']:new Array(_0x35504c[_0x4027('0x3e')][_0x4027('0x83')]);_0x42aeef[_0x4027('0x35')](function(_0x2d677e){_0x5bf1c7['or'](_0x4027('0x70'),'%,'+_0x2d677e+',%');});}if(_0x35504c[_0x4027('0x3e')][_0x4027('0x85')]){var _0x4bfdfa=_0x35504c['query'][_0x4027('0x85')][_0x4027('0x86')]('\x5c','\x5c\x5c')[_0x4027('0x86')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4bfdfa)){_0x4a3a17['or']('i.id\x20LIKE\x20?',_0x4bfdfa+'%');}else{_0x4a3a17['or'](_0x4027('0x87'),qs['getFullTextValue'](_0x4bfdfa))['or']('i.from\x20LIKE\x20?',_0x4bfdfa+'%')['or'](_0x4027('0x88'),_0x4bfdfa+'%');}}}_0x106c62[_0x4027('0x7a')](_0x4a3a17);_0x106c62[_0x4027('0x89')]('i.id');var _0x111318={'type':db[_0x4027('0x8a')][_0x4027('0x8b')][_0x4027('0x8c')],'raw':!![]};var _0x336437=_0x106c62[_0x4027('0x8d')]();_0x336437[_0x4027('0x49')](_0x4027('0x8e'));_0x336437['field'](_0x4027('0x8f'),_0x4027('0x90'));if(_0x18b4c8[_0x4027('0x45')]){_0x18b4c8[_0x4027('0x45')][_0x4027('0x35')](function(_0x3147e0){var _0x1ea7dc=_0x3147e0[0x0]===_0x4027('0x91')?_0x3147e0[0x0]:'i.'+_0x3147e0[0x0];_0x106c62[_0x4027('0x45')](_0x1ea7dc,_0x3147e0[0x1]===_0x4027('0x92')?![]:!![]);});}if(!_['isEmpty'](_0x42aeef)){_0x106c62[_0x4027('0x61')](_0x5bf1c7);_0x336437['where'](_0x4027('0x93'),_0x42aeef);}BPromise[_0x4027('0x94')]()[_0x4027('0x2b')](function(){if(!_0x5b474e){if(_0x35504c[_0x4027('0x3e')]['OpenchannelAccountId'])return;_0x336437[_0x4027('0x7a')](_0x4027('0x95'));_0x106c62[_0x4027('0x7a')](_0x4027('0x95'));return;}if(_0x35504c['user'][_0x4027('0x96')]!==_0x4027('0x97'))return;return _0x35504c[_0x4027('0x98')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0x4027('0x2b')](function(_0x300878){if(_[_0x4027('0x78')](_0x300878)){_0x336437['where'](_0x4027('0x99'));_0x106c62[_0x4027('0x7a')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x336437[_0x4027('0x7a')](_0x4027('0x7b'),_[_0x4027('0x31')](_0x300878,'id'));_0x106c62[_0x4027('0x7a')](_0x4027('0x7b'),_[_0x4027('0x31')](_0x300878,'id'));}});})[_0x4027('0x2b')](function(){if(_0x35504c[_0x4027('0x98')][_0x4027('0x96')]==='agent'&&!_0x5b474e&&!_0x35504c[_0x4027('0x3e')][_0x4027('0x79')])return[];return db['sequelize'][_0x4027('0x3e')](_0x336437[_0x4027('0x9a')](),_0x111318);})['then'](function(_0xdf3da7){_0x4bd811[_0x4027('0x24')]=_0xdf3da7[_0x4027('0x43')];if(_0x4bd811[_0x4027('0x24')]===0x0)return[];return db['sequelize'][_0x4027('0x3e')](_0x5e6d9a['toString'](),_0x111318)['then'](function(_0x34c19f){_0x5a6100=_[_0x4027('0x9b')](_0x34c19f,'id');_0x111318=_[_0x4027('0x9c')](_0x111318,{'model':db[_0x4027('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x35504c['query'][_0x4027('0x42')]){_0x18b4c8[_0x4027('0x40')]['forEach'](function(_0x27559d){_0x106c62['field']('i.'+_0x27559d);});}else{_0x106c62[_0x4027('0x49')](_0x4027('0x8f'),_0x4027('0x90'));_0x106c62['field'](_0x4027('0x9d'),_0x4027('0x9e'));_0x106c62[_0x4027('0x49')](_0x4027('0x9f'),_0x4027('0xa0'));_0x106c62['field']('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',_0x4027('0x91'));_0x106c62['field']('i.*');_0x106c62[_0x4027('0x49')]('c.firstName','Contact.firstName');_0x106c62[_0x4027('0x49')](_0x4027('0xa1'),_0x4027('0xa2'));_0x106c62[_0x4027('0x49')]('c.email',_0x4027('0xa3'));_0x106c62[_0x4027('0x49')](_0x4027('0xa4'),_0x4027('0xa5'));_0x106c62[_0x4027('0x49')](_0x4027('0xa6'),_0x4027('0xa7'));_0x106c62[_0x4027('0x49')](_0x4027('0xa8'),_0x4027('0xa9'));_0x106c62[_0x4027('0x49')](_0x4027('0xaa'),'Owner.fullname');_0x106c62[_0x4027('0x49')](_0x4027('0xab'),'Owner.internal');_0x106c62['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x4027('0x32'));}if(_0x18b4c8['limit'])_0x106c62[_0x4027('0x22')](_0x18b4c8[_0x4027('0x22')]);if(_0x18b4c8['offset'])_0x106c62[_0x4027('0x21')](_0x18b4c8[_0x4027('0x21')]);return db[_0x4027('0xac')][_0x4027('0x3e')](_0x106c62[_0x4027('0x9a')](),_0x111318);})[_0x4027('0x2b')](function(_0x200683){if(_0x200683['length']>0x0)_0x1fb632[_0x4027('0x7a')](_0x4027('0xad'),_['map'](_0x200683,'id'));return db[_0x4027('0xac')][_0x4027('0x3e')](_0x1fb632[_0x4027('0x9a')](),_0x111318)[_0x4027('0x2b')](function(_0x37ff0a){var _0xb83a50=_[_0x4027('0xae')](_0x37ff0a,_0x4027('0xaf'));var _0x401540=[];_0x200683[_0x4027('0x35')](function(_0xe3fdf9){_0x401540['push'](updateOpenchannelInteraction(_0xe3fdf9,_0x5a6100,_0xb83a50));});return BPromise[_0x4027('0xb0')](_0x401540);});});})['then'](function(_0x56b8d4){_0x4bd811[_0x4027('0xb1')]=_0x56b8d4;return _0x4bd811;})[_0x4027('0x2b')](respondWithFilteredResult(_0x3183a2,_0x18b4c8))[_0x4027('0x37')](handleError(_0x3183a2,null));};exports[_0x4027('0xb2')]=function(_0x327b38,_0x28d77d){var _0x3d809d={};if(_0x327b38[_0x4027('0x3e')][_0x4027('0x6c')]&&_0x327b38[_0x4027('0x3e')]['type']===_0x4027('0x4a')){_0x3d809d[_0x4027('0x4a')]=_0x327b38[_0x4027('0xb3')]['id'];}else{_0x3d809d['id']=_0x327b38[_0x4027('0xb3')]['id'];}var _0x4dfc4c={'raw':![],'where':_0x3d809d},_0x2d06f4={};_0x2d06f4[_0x4027('0x3d')]=_[_0x4027('0x3f')](db[_0x4027('0x39')]['rawAttributes']);_0x2d06f4[_0x4027('0x3e')]=_[_0x4027('0x3f')](_0x327b38['query']);_0x2d06f4[_0x4027('0x48')]=_[_0x4027('0x41')](_0x2d06f4[_0x4027('0x3d')],_0x2d06f4[_0x4027('0x3e')]);_0x4dfc4c[_0x4027('0x40')]=_[_0x4027('0x41')](_0x2d06f4[_0x4027('0x3d')],qs['fields'](_0x327b38[_0x4027('0x3e')][_0x4027('0x42')]));_0x4dfc4c[_0x4027('0x40')]=_0x4dfc4c[_0x4027('0x40')]['length']?_0x4dfc4c[_0x4027('0x40')]:_0x2d06f4[_0x4027('0x3d')];if(_0x327b38[_0x4027('0x3e')][_0x4027('0xb4')]){_0x4dfc4c[_0x4027('0xb5')]=[{'all':!![]}];}_0x4dfc4c=_['merge']({},_0x4dfc4c,_0x327b38[_0x4027('0xb6')]);return db[_0x4027('0x39')]['find'](_0x4dfc4c)[_0x4027('0x2b')](handleEntityNotFound(_0x28d77d,null))['then'](respondWithResult(_0x28d77d,null))[_0x4027('0x37')](handleError(_0x28d77d,null));};exports[_0x4027('0xb7')]=function(_0xf88bbd,_0x35721a){return db['OpenchannelInteraction'][_0x4027('0xb7')](_0xf88bbd['body'],{})['then'](respondWithResult(_0x35721a,0xc9))[_0x4027('0x37')](handleError(_0x35721a,null));};exports['update']=function(_0x4c79d8,_0x190f76){if(_0x4c79d8[_0x4027('0x75')]['id']){delete _0x4c79d8[_0x4027('0x75')]['id'];}return db['OpenchannelInteraction'][_0x4027('0x69')]({'where':{'id':_0x4c79d8[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x190f76,null))[_0x4027('0x2b')](saveUpdates(_0x4c79d8[_0x4027('0x75')],null))[_0x4027('0x2b')](respondWithResult(_0x190f76,null))[_0x4027('0x37')](handleError(_0x190f76,null));};exports[_0x4027('0xb8')]=function(_0xf362ac,_0x19cb6f){return db[_0x4027('0x39')][_0x4027('0x69')]({'where':{'id':_0xf362ac[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x19cb6f,null))['then'](removeEntity(_0x19cb6f,null))['catch'](handleError(_0x19cb6f,null));};exports[_0x4027('0xb9')]=function(_0x460a39,_0x4674f6){return db[_0x4027('0x39')][_0x4027('0xb9')]()[_0x4027('0x2b')](respondWithResult(_0x4674f6,null))['catch'](handleError(_0x4674f6,null));};exports[_0x4027('0xba')]=function(_0x3de419,_0x205b81,_0x3afdba){return db[_0x4027('0xbb')][_0x4027('0x69')]({'where':{'id':_0x3de419[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x205b81,null))['then'](function(_0x3fb5e7){if(_0x3fb5e7){return _0x3fb5e7[_0x4027('0xba')](_0x3de419['body'][_0x4027('0xbc')],_[_0x4027('0xbd')](_0x3de419[_0x4027('0x75')],[_0x4027('0xbc'),'id'])||{});}})['then'](respondWithResult(_0x205b81,null))['catch'](handleError(_0x205b81,null));};exports[_0x4027('0xbe')]=function(_0x5a57e3,_0x2e3e79,_0x18fbf6){var _0x57c3df={'raw':![],'where':{}};var _0x7f0963={};var _0x57223c={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x4027('0xbf')]({'where':{'id':_0x5a57e3[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x2e3e79,null))['then'](function(_0x509136){if(_0x509136){_0x7f0963[_0x4027('0x3d')]=_[_0x4027('0x3f')](db[_0x4027('0xbb')][_0x4027('0x3a')]);_0x7f0963[_0x4027('0x3e')]=_['keys'](_0x5a57e3['query']);_0x7f0963[_0x4027('0x48')]=_[_0x4027('0x41')](_0x7f0963[_0x4027('0x3d')],_0x7f0963[_0x4027('0x3e')]);_0x57c3df[_0x4027('0x40')]=_[_0x4027('0x41')](_0x7f0963[_0x4027('0x3d')],qs['fields'](_0x5a57e3[_0x4027('0x3e')]['fields']));_0x57c3df[_0x4027('0x40')]=_0x57c3df['attributes'][_0x4027('0x43')]?_0x57c3df[_0x4027('0x40')]:_0x7f0963['model'];if(!_0x5a57e3[_0x4027('0x3e')]['hasOwnProperty'](_0x4027('0xc0'))){_0x57c3df[_0x4027('0x22')]=qs[_0x4027('0x22')](_0x5a57e3[_0x4027('0x3e')]['limit']);_0x57c3df[_0x4027('0x21')]=qs['offset'](_0x5a57e3[_0x4027('0x3e')]['offset']);}_0x57c3df[_0x4027('0x45')]=qs['sort'](_0x5a57e3[_0x4027('0x3e')]['sort']);_0x57c3df[_0x4027('0x7a')]=qs['filters'](_[_0x4027('0x47')](_0x5a57e3[_0x4027('0x3e')],_0x7f0963[_0x4027('0x48')]));_0x57c3df['where'][_0x4027('0xaf')]=_0x509136['id'];if(_0x5a57e3[_0x4027('0x3e')][_0x4027('0x85')]){_0x57c3df['where']=_[_0x4027('0x9c')](_0x57c3df[_0x4027('0x7a')],{'$or':_[_0x4027('0x31')](_0x57c3df['attributes'],function(_0x1cd7ff){var _0x4358d9={};_0x4358d9[_0x1cd7ff]={'$like':'%'+_0x5a57e3['query'][_0x4027('0x85')]+'%'};return _0x4358d9;})});}if(_0x5a57e3[_0x4027('0x3e')][_0x4027('0xc1')]){var _0x4e1329=_0x5a57e3[_0x4027('0x3e')][_0x4027('0xc1')][_0x4027('0x34')](',');var _0x124d5c={};_0x124d5c[_0x4e1329[0x0]]={'$gte':moment(_0x4e1329[0x1])[_0x4027('0xc2')](_0x4027('0xc3'))};_0x57c3df[_0x4027('0x7a')]=_[_0x4027('0x9c')](_0x57c3df[_0x4027('0x7a')],_0x124d5c);}_0x57c3df=_['merge']({},_0x57c3df,_0x5a57e3[_0x4027('0xb6')]);return db['OpenchannelMessage'][_0x4027('0x24')]({'where':_0x57c3df[_0x4027('0x7a')]})[_0x4027('0x2b')](function(_0x1f5fda){_0x57223c['count']=_0x1f5fda;if(_0x5a57e3[_0x4027('0x3e')][_0x4027('0xb4')]){_0x57c3df['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0x4027('0xc4')](_0x57c3df);})[_0x4027('0x2b')](function(_0x20e6d8){_0x57223c['rows']=_0x20e6d8;return _0x57223c;});}})[_0x4027('0x2b')](respondWithFilteredResult(_0x2e3e79,_0x57c3df))[_0x4027('0x37')](handleError(_0x2e3e79,null));};exports[_0x4027('0xc5')]=function(_0x15f527,_0x5055bd,_0x438cab){return db[_0x4027('0x39')][_0x4027('0x69')]({'where':{'id':_0x15f527[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x5055bd,null))[_0x4027('0x2b')](function(_0x538db0){if(_0x538db0){return _0x538db0[_0x4027('0xc6')](_0x15f527[_0x4027('0x75')]['ids'],_['omit'](_0x15f527[_0x4027('0x75')],['ids','id'])||{})[_0x4027('0xc7')](function(){return db[_0x4027('0x6f')]['findAll']({'attributes':['id',_0x4027('0x2f'),_0x4027('0xc8')],'where':{'id':_0x15f527['body']['ids']}});})[_0x4027('0x2b')](function(_0x4b9e53){socket[_0x4027('0xc9')]('openchannelInteractionTags:save',{'id':Number(_0x15f527['params']['id']),'tags':_0x4b9e53||[]});return{'id':Number(_0x15f527[_0x4027('0xb3')]['id']),'tags':_0x4b9e53||[]};});}})[_0x4027('0x2b')](respondWithResult(_0x5055bd,null))[_0x4027('0x37')](handleError(_0x5055bd,null));};exports[_0x4027('0xca')]=function(_0x56377b,_0x4df0cf,_0x3e25bd){return db[_0x4027('0x39')]['find']({'where':{'id':_0x56377b['params']['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x4df0cf,null))[_0x4027('0x2b')](function(_0xee122e){if(_0xee122e){return _0xee122e['removeTags'](_0x56377b['query']['ids']);}})[_0x4027('0x2b')](respondWithStatusCode(_0x4df0cf,null))[_0x4027('0x37')](handleError(_0x4df0cf,null));};exports[_0x4027('0xcb')]=function(_0x3e1020,_0x4d7ccf){var _0xb22b56=moment()[_0x4027('0xcc')]()[_0x4027('0x9a')]();var _0x23af5f=path['join'](config[_0x4027('0xcd')],_0x4027('0xce'),'files','tmp');var _0x57a16e=path['join'](config[_0x4027('0xcd')],'server',_0x4027('0xcf'),_0x4027('0xd0'));var _0x22d0c4=path[_0x4027('0xd1')](_0x23af5f,_0xb22b56);var _0x25e7e8=util['format'](_0x4027('0xd2'),_0x3e1020['params']['id'],_0xb22b56);var _0x3d0a4d=path['join'](_0x23af5f,_0x25e7e8);var _0x11d583=[];_0x11d583[_0x4027('0x36')]({'model':db[_0x4027('0x72')],'as':_0x4027('0x72'),'attributes':['id',_0x4027('0xd3')],'raw':!![]});_0x11d583[_0x4027('0x36')]({'model':db[_0x4027('0xd4')],'as':'Contact','attributes':['id',_0x4027('0xd5'),_0x4027('0xd6')],'raw':!![]});if(_0x3e1020[_0x4027('0x3e')][_0x4027('0xd0')]){_0x11d583[_0x4027('0x36')]({'model':db[_0x4027('0xd7')],'as':_0x4027('0xd7'),'raw':!![]});}var _0x5b5b1a=[{'model':db['OpenchannelMessage'],'as':_0x4027('0xd8'),'attributes':['id',_0x4027('0x75'),_0x4027('0xd9'),_0x4027('0xda'),'secret',_0x4027('0x82')],'include':_0x11d583}];_0x5b5b1a[_0x4027('0x36')]({'model':db['OpenchannelAccount'],'as':_0x4027('0xdb'),'attributes':['id',_0x4027('0x2f')]});_0x5b5b1a['push']({'model':db['User'],'as':_0x4027('0xdc'),'attributes':['id','fullname']});return db[_0x4027('0x39')]['find']({'where':{'id':_0x3e1020['params']['id']},'include':_0x5b5b1a})[_0x4027('0x2b')](handleEntityNotFound(_0x4d7ccf,null))['then'](function(_0x1cf226){if(_0x1cf226){var _0x4f246d=_0x1cf226[_0x4027('0xdd')]({'plain':!![]});fs['mkdirSync'](_0x22d0c4);var _0x6967e5={'channel':'Openchannel','account':_0x4f246d['Account'][_0x4027('0x2f')],'agent':_0x4f246d['Owner']?_0x4f246d['Owner'][_0x4027('0xd3')]:_0x4027('0xde'),'createdAt':moment(_0x4f246d[_0x4027('0xd9')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x4027('0x9a')](),'closedAt':_0x4f246d['closed']?moment(_0x4f246d[_0x4027('0xdf')])['format'](_0x4027('0xc3'))[_0x4027('0x9a')]():'','disposition':_0x4f246d[_0x4027('0xe0')],'visibility':_0x4f246d['threadId']?_0x4027('0xe1'):_0x4027('0xe2'),'messages':_(_0x4f246d['Messages'])[_0x4027('0x85')]({'secret':![]})[_0x4027('0x31')](function(_0x8e0ee5){if(_0x8e0ee5['Attachment']){var _0x186869=path[_0x4027('0xd1')](_0x57a16e,_0x8e0ee5['Attachment'][_0x4027('0xe3')]);if(fs['existsSync'](_0x186869)){fs[_0x4027('0xe4')](_0x186869)[_0x4027('0xe5')](fs[_0x4027('0xe6')](path[_0x4027('0xd1')](_0x22d0c4,_0x8e0ee5['Attachment']['basename'])));}}return{'date':moment(_0x8e0ee5[_0x4027('0xd9')])[_0x4027('0xc2')](_0x4027('0xc3'))[_0x4027('0x9a')](),'sender':_0x8e0ee5[_0x4027('0xda')]===_0x4027('0xe7')?_0x8e0ee5[_0x4027('0x72')]?_0x8e0ee5[_0x4027('0x72')][_0x4027('0xd3')]:'System':_0x8e0ee5[_0x4027('0x64')][_0x4027('0xd5')]+(_0x8e0ee5[_0x4027('0x64')]['lastName']?'\x20'+_0x8e0ee5[_0x4027('0x64')][_0x4027('0xd6')]:''),'body':_0x8e0ee5['Attachment']?_0x8e0ee5[_0x4027('0xd7')][_0x4027('0xe3')]:_0x8e0ee5[_0x4027('0x75')],'direction':_0x8e0ee5[_0x4027('0xda')]===_0x4027('0xe7')?'A':'C','secret':_0x8e0ee5[_0x4027('0xe8')],'read':_0x8e0ee5[_0x4027('0x82')],'attachment':_0x8e0ee5['Attachment']};})[_0x4027('0x60')]()};return ejs['renderFile'](path[_0x4027('0xd1')](config[_0x4027('0xcd')],_0x4027('0xce'),'views',_0x4027('0xe9')),{'interaction':_0x6967e5})['then'](function(_0x48cd65){var _0x17a203=path[_0x4027('0xd1')](_0x22d0c4,'transcript-'+_0x4f246d['id']+'-'+_0xb22b56+_0x4027('0xea'));var _0x562c8a={'path':_0x17a203,'channel':_0x4027('0xeb'),'interactionId':_0x4f246d['id']};return pdf[_0x4027('0xec')](_0x48cd65,_0x562c8a);})[_0x4027('0x2b')](function(){return new BPromise(function(_0x54f4c4,_0x219286){zipdir(_0x22d0c4,{'saveTo':_0x3d0a4d},function(_0x311d3c,_0x564b09){if(_0x311d3c)return _0x219286(_0x311d3c);return _0x54f4c4(_0x564b09);});})[_0x4027('0x2b')](function(){return new BPromise(function(_0x9866fc,_0x2af71f){rimraf(_0x22d0c4,function(_0x58b3e1){if(_0x58b3e1)_0x2af71f(_0x58b3e1);return _0x9866fc();});});})['then'](function(){return _0x4d7ccf[_0x4027('0xcb')](_0x3d0a4d,_0x25e7e8,function(_0x5329ec){if(_0x5329ec){console[_0x4027('0xed')](_0x4027('0xee'),_0x5329ec);}else{fs['unlinkSync'](_0x3d0a4d);}});});});}else{return _0x4d7ccf[_0x4027('0x2c')](0xc8);}})['catch'](handleError(_0x4d7ccf,null));};
\ No newline at end of file
+var _0x8392=['filters','intersection','attributes','nolimit','order','sort','where','select','field','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','length','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','type','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','body','compact','isEmpty','OpenchannelAccountId','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','fields','a.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','all','rows','params','includeAll','include','options','describe','addMessage','OpenchannelMessage','ids','getMessages','findOne','hasOwnProperty','OpenchannelInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','omit','spread','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','CmContact','Contact','firstName','lastName','direction','secret','OpenchannelAccount','User','Owner','get','mkdirSync','Openchannel','Account','N.A.','closed','disposition','threadId','Private','Messages','Attachment','basename','createReadStream','pipe','createWriteStream','out','System','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','register','sendStatus','status','offset','undefined','count','limit','Content-Range','reject','update','then','destroy','end','error','stack','name','send','Users','fullname','TagIds','Tags','split','forEach','push','catch','map','OpenchannelInteraction','rawAttributes','fieldName','key','model','query','keys'];(function(_0x36f5e5,_0x57ffbb){var _0x2a4376=function(_0x117737){while(--_0x117737){_0x36f5e5['push'](_0x36f5e5['shift']());}};_0x2a4376(++_0x57ffbb);}(_0x8392,0xb4));var _0x2839=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8392[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x2839('0x0'));var rimraf=require(_0x2839('0x1'));var zipdir=require(_0x2839('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2839('0x3'));var moment=require(_0x2839('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2839('0x5'));var util=require(_0x2839('0x6'));var path=require(_0x2839('0x7'));var sox=require(_0x2839('0x8'));var csv=require('to-csv');var ejs=require(_0x2839('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2839('0xa'));var squel=require('squel');var crypto=require(_0x2839('0xb'));var jsforce=require(_0x2839('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2839('0xd'));var querystring=require(_0x2839('0xe'));var Papa=require(_0x2839('0xf'));var Redis=require(_0x2839('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2839('0x11'));var as=require(_0x2839('0x12'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x2839('0x13'));var logger=require(_0x2839('0x14'))(_0x2839('0x15'));var utils=require(_0x2839('0x16'));var config=require(_0x2839('0x17'));var licenseUtil=require(_0x2839('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2839('0x19')](config[_0x2839('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x2839('0x1b'))(new Redis(config[_0x2839('0x1a')]));require('./openchannelInteraction.socket')[_0x2839('0x1c')](socket);function respondWithStatusCode(_0x5a2421,_0x1939d5){_0x1939d5=_0x1939d5||0xcc;return function(_0x29baca){if(_0x29baca){return _0x5a2421[_0x2839('0x1d')](_0x1939d5);}return _0x5a2421['status'](_0x1939d5)['end']();};}function respondWithResult(_0x6160f9,_0xae18e1){_0xae18e1=_0xae18e1||0xc8;return function(_0x3629b5){if(_0x3629b5){return _0x6160f9[_0x2839('0x1e')](_0xae18e1)['json'](_0x3629b5);}};}function respondWithFilteredResult(_0x4cfd82,_0x742997){return function(_0x575060){if(_0x575060){var _0x47438f=typeof _0x742997[_0x2839('0x1f')]===_0x2839('0x20')&&typeof _0x742997['limit']===_0x2839('0x20');var _0xd8e7c3=_0x575060[_0x2839('0x21')];var _0x273023=_0x47438f?0x0:_0x742997['offset'];var _0x8e398e=_0x47438f?_0x575060[_0x2839('0x21')]:_0x742997[_0x2839('0x1f')]+_0x742997[_0x2839('0x22')];var _0xd6106;if(_0x8e398e>=_0xd8e7c3){_0x8e398e=_0xd8e7c3;_0xd6106=0xc8;}else{_0xd6106=0xce;}_0x4cfd82[_0x2839('0x1e')](_0xd6106);return _0x4cfd82['set'](_0x2839('0x23'),_0x273023+'-'+_0x8e398e+'/'+_0xd8e7c3)['json'](_0x575060);}return null;};}function patchUpdates(_0xcc76b0){return function(_0x263317){try{jsonpatch['apply'](_0x263317,_0xcc76b0,!![]);}catch(_0xe560dd){return BPromise[_0x2839('0x24')](_0xe560dd);}return _0x263317['save']();};}function saveUpdates(_0x1b147b,_0x515ede){return function(_0x2fbaa3){if(_0x2fbaa3){return _0x2fbaa3[_0x2839('0x25')](_0x1b147b)[_0x2839('0x26')](function(_0x2bdcdd){return _0x2bdcdd;});}return null;};}function removeEntity(_0x68817,_0x468832){return function(_0x8751c3){if(_0x8751c3){return _0x8751c3[_0x2839('0x27')]()[_0x2839('0x26')](function(){_0x68817[_0x2839('0x1e')](0xcc)[_0x2839('0x28')]();});}};}function handleEntityNotFound(_0x37e361,_0x280d1c){return function(_0x289929){if(!_0x289929){_0x37e361[_0x2839('0x1d')](0x194);}return _0x289929;};}function handleError(_0x1c5a83,_0xb9cc8a){_0xb9cc8a=_0xb9cc8a||0x1f4;return function(_0x4639ab){logger[_0x2839('0x29')](_0x4639ab[_0x2839('0x2a')]);if(_0x4639ab[_0x2839('0x2b')]){delete _0x4639ab[_0x2839('0x2b')];}_0x1c5a83[_0x2839('0x1e')](_0xb9cc8a)[_0x2839('0x2c')](_0x4639ab);};}function getInteractionUsers(_0x2ef649,_0x58c89c){return new BPromise(function(_0x4d5ae1,_0x13b108){try{if(_0x58c89c[_0x2ef649['id']]){_0x2ef649[_0x2839('0x2d')]=_['map'](_0x58c89c[_0x2ef649['id']],function(_0x3a87ac){return{'id':_0x3a87ac['id'],'fullname':_0x3a87ac[_0x2839('0x2e')]};});}}catch(_0xa2051d){_0x13b108(_0xa2051d);}_0x4d5ae1(_0x2ef649);});}function getInteractionTags(_0x5edf69,_0x404294){return new BPromise(function(_0x27129c,_0x54520a){try{if(_0x5edf69[_0x2839('0x2f')]){_0x5edf69[_0x2839('0x30')]=[];_0x5edf69['TagIds'][_0x2839('0x31')](',')[_0x2839('0x32')](function(_0x2c486e){_0x5edf69['Tags'][_0x2839('0x33')](_0x404294[_0x2c486e]);});}delete _0x5edf69[_0x2839('0x2f')];}catch(_0x474569){_0x54520a(_0x474569);}_0x27129c(_0x5edf69);});}function updateOpenchannelInteraction(_0x33f089,_0x1553af,_0x1e7aab){return new BPromise(function(_0x586705,_0x1b087c){return getInteractionUsers(_0x33f089,_0x1e7aab)[_0x2839('0x26')](function(_0x4c19e5){return getInteractionTags(_0x4c19e5,_0x1553af);})[_0x2839('0x26')](function(_0x30a5e8){_0x586705(_0x30a5e8);})[_0x2839('0x34')](function(_0x3dd6c0){_0x1b087c(_0x3dd6c0);});});}exports['index']=function(_0xaf7ad1,_0x1cf4b4){var _0x49b582={},_0x4a14c6={},_0x187ca9={'count':0x0,'rows':[]};var _0x15299e=_[_0x2839('0x35')](db[_0x2839('0x36')][_0x2839('0x37')],function(_0x31f012){return{'name':_0x31f012[_0x2839('0x38')],'type':_0x31f012['type'][_0x2839('0x39')]};});_0x4a14c6[_0x2839('0x3a')]=_[_0x2839('0x35')](_0x15299e,_0x2839('0x2b'));_0x4a14c6[_0x2839('0x3b')]=_[_0x2839('0x3c')](_0xaf7ad1['query']);_0x4a14c6[_0x2839('0x3d')]=_[_0x2839('0x3e')](_0x4a14c6[_0x2839('0x3a')],_0x4a14c6[_0x2839('0x3b')]);_0x49b582['attributes']=_[_0x2839('0x3e')](_0x4a14c6[_0x2839('0x3a')],qs['fields'](_0xaf7ad1['query']['fields']));_0x49b582[_0x2839('0x3f')]=_0x49b582[_0x2839('0x3f')]['length']?_0x49b582[_0x2839('0x3f')]:_0x4a14c6['model'];if(!_0xaf7ad1[_0x2839('0x3b')]['hasOwnProperty'](_0x2839('0x40'))){_0x49b582[_0x2839('0x22')]=qs[_0x2839('0x22')](_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x22')]);_0x49b582['offset']=qs[_0x2839('0x1f')](_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x1f')]);}_0x49b582[_0x2839('0x41')]=qs[_0x2839('0x42')](_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x42')]);_0x49b582[_0x2839('0x43')]=qs[_0x2839('0x3d')](_['pick'](_0xaf7ad1['query'],_0x4a14c6[_0x2839('0x3d')]),_0x15299e);var _0x256fad=[];var _0xb00beb=squel[_0x2839('0x44')]()['field']('id')[_0x2839('0x45')]('name')['field']('color')[_0x2839('0x46')](_0x2839('0x47'));var _0x5af7e7=squel[_0x2839('0x44')]()[_0x2839('0x45')](_0x2839('0x48'))[_0x2839('0x45')](_0x2839('0x49'))[_0x2839('0x45')](_0x2839('0x4a'))[_0x2839('0x46')](_0x2839('0x4b'),'ui')[_0x2839('0x4c')](_0x2839('0x4d'),'u','u.id\x20=\x20ui.UserId');var _0x4ecd70=squel[_0x2839('0x44')]()[_0x2839('0x46')]('openchannel_interactions','i')[_0x2839('0x4c')](_0x2839('0x4e'),'c',_0x2839('0x4f'))[_0x2839('0x4c')](_0x2839('0x4d'),'o',_0x2839('0x50'))[_0x2839('0x4c')]('openchannel_accounts','a','a.id\x20=\x20i.OpenchannelAccountId')[_0x2839('0x4c')]('openchannel_messages','me',_0x2839('0x51'))[_0x2839('0x4c')](_0x2839('0x52'),'it',_0x2839('0x53'))[_0x2839('0x4c')](_0x2839('0x47'),'t',_0x2839('0x54'));var _0x3177bf=squel[_0x2839('0x55')]();var _0x328967=[];var _0x2f93f8=squel[_0x2839('0x55')]();var _0x1888c4;if(_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x56')]){_0x1888c4=as[_0x2839('0x57')](_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x56')]);var _0x371581=_0x1888c4['sqlOperator'];for(var _0x21a5a0=0x0;_0x21a5a0<_0x1888c4[_0x2839('0x58')][_0x2839('0x59')];_0x21a5a0++){var _0x2b945a=_0x1888c4[_0x2839('0x58')][_0x21a5a0];var _0x1c767f='i';var _0x3cd8a=_['find'](_0x15299e,[_0x2839('0x2b'),_0x2b945a['field']]);if(!_0x3cd8a){switch(_0x2b945a['field']){case _0x2839('0x5a'):if(_0x2b945a[_0x2839('0x5b')]==0x1){_0x4ecd70['having']('`'+_0x2b945a[_0x2839('0x45')]+_0x2839('0x5c'));}else{_0x4ecd70[_0x2839('0x5d')]('`'+_0x2b945a[_0x2839('0x45')]+_0x2839('0x5e'));}break;case'Contact':if(_0x2b945a[_0x2839('0x5f')]===_0x2839('0x60')){if(_0x2b945a[_0x2839('0x5b')][_0x2839('0x31')]('\x20')[_0x2839('0x59')]>0x1){_0x3177bf[_0x371581](_0x2839('0x61'),qs[_0x2839('0x62')](_0x2b945a[_0x2839('0x5b')]),null);}else{var _0x248ff9='%'+_0x2b945a['value']+'%';_0x3177bf[_0x371581]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x248ff9,_0x248ff9,_0x248ff9);}}else{_0x3cd8a=_['find'](_0x15299e,['name',_0x2839('0x63')]);_0x2b945a[_0x2839('0x45')]=_0x2839('0x63');_0x7a0d33=as[_0x2839('0x64')](_0x1c767f,_0x3cd8a[_0x2839('0x65')],_0x2b945a);_0x3177bf[_0x371581](_0x7a0d33[_0x2839('0x66')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x67')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x28')]);}break;case _0x2839('0x68'):var _0x2443c7=_0x2b945a[_0x2839('0x5b')][_0x2839('0x31')](',')[_0x2839('0x35')](function(_0x5dd98a){return Number(_0x5dd98a);});_0x2443c7['forEach'](function(_0x31e5cb){_0x2f93f8['or'](_0x2839('0x69'),'%,'+_0x31e5cb+',%');});_0x328967=_[_0x2839('0x6a')](_0x328967,_0x2443c7);break;case'User':if(_0x2b945a[_0x2839('0x5f')]===_0x2839('0x60')){_0x3177bf[_0x371581](_0x2839('0x6b'),'%'+_0x2b945a[_0x2839('0x5b')]+'%',null);}else{_0x3cd8a=_[_0x2839('0x6c')](_0x15299e,[_0x2839('0x2b'),'UserId']);_0x2b945a[_0x2839('0x45')]=_0x2839('0x6d');_0x7a0d33=as[_0x2839('0x64')](_0x1c767f,_0x3cd8a[_0x2839('0x65')],_0x2b945a);_0x3177bf[_0x371581](_0x7a0d33[_0x2839('0x66')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x67')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x28')]);}break;case _0x2839('0x6e'):_0x7a0d33=as[_0x2839('0x64')]('me',null,_0x2b945a);_0x3177bf[_0x371581](_0x7a0d33[_0x2839('0x66')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x67')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x28')]);break;}}else{var _0x7a0d33=as[_0x2839('0x64')](_0x1c767f,_0x3cd8a[_0x2839('0x65')],_0x2b945a);_0x3177bf[_0x371581](_0x7a0d33[_0x2839('0x66')],_0x7a0d33['value'][_0x2839('0x67')],_0x7a0d33[_0x2839('0x5b')][_0x2839('0x28')]);}}}else{var _0x339b0e=_(_0xaf7ad1['query'])[_0x2839('0x3c')]()[_0x2839('0x35')](function(_0x15bb6c){return _['some'](_0x15299e,[_0x2839('0x2b'),_0x15bb6c])?_0x15bb6c:undefined;})[_0x2839('0x6f')]()[_0x2839('0x5b')]();if(!_[_0x2839('0x70')](_0x339b0e)){_0x339b0e['forEach'](function(_0x448310){if(_0x448310===_0x2839('0x71')){_0x4ecd70['where']('i.OpenchannelAccountId\x20IN\x20?',[][_0x2839('0x72')](_0xaf7ad1[_0x2839('0x3b')][_0x448310]));}else if(_0x448310===_0x2839('0x73')){var _0x598a9c=JSON['parse'](_0xaf7ad1[_0x2839('0x3b')][_0x448310])[_0x2839('0x74')];var _0x42dd88=JSON[_0x2839('0x75')](_0xaf7ad1['query'][_0x448310])[_0x2839('0x76')];_0x4ecd70[_0x2839('0x43')](_0x2839('0x77'),_0x598a9c,_0x42dd88);}else{if(_0xaf7ad1[_0x2839('0x3b')][_0x448310]===_0x2839('0x78')){_0x4ecd70['where']('i.'+_0x448310+'\x20IS\x20NULL');}else{_0x4ecd70[_0x2839('0x43')]('i.'+_0x448310+_0x2839('0x79'),_0xaf7ad1[_0x2839('0x3b')][_0x448310]);}}});}if(_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x7a')]){if(_0xaf7ad1['query'][_0x2839('0x7a')]==0x1){_0x4ecd70[_0x2839('0x5d')](_0x2839('0x7b'));}else{_0x4ecd70[_0x2839('0x5d')](_0x2839('0x7c'));}}if(_0xaf7ad1['query']['tag']){_0x328967=_['isArray'](_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x7d')])?_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x7d')]:new Array(_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x7d')]);_0x328967[_0x2839('0x32')](function(_0x17bf0c){_0x2f93f8['or'](_0x2839('0x69'),'%,'+_0x17bf0c+',%');});}if(_0xaf7ad1['query'][_0x2839('0x7e')]){var _0x2989ac=_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x7e')][_0x2839('0x7f')]('\x5c','\x5c\x5c')[_0x2839('0x7f')](/'/g,'\x27\x27');if(qs[_0x2839('0x80')](_0x2989ac)){_0x3177bf['or'](_0x2839('0x81'),_0x2989ac+'%');}else{_0x3177bf['or'](_0x2839('0x82'),qs[_0x2839('0x62')](_0x2989ac))['or'](_0x2839('0x83'),_0x2989ac+'%')['or'](_0x2839('0x84'),_0x2989ac+'%');}}}_0x4ecd70['where'](_0x3177bf);_0x4ecd70['group']('i.id');var _0xec2501={'type':db[_0x2839('0x85')][_0x2839('0x86')]['SELECT'],'raw':!![]};var _0x19387b=_0x4ecd70[_0x2839('0x87')]();_0x19387b[_0x2839('0x45')]('i.id');_0x19387b[_0x2839('0x45')](_0x2839('0x88'),_0x2839('0x5a'));if(_0x49b582['order']){_0x49b582[_0x2839('0x41')]['forEach'](function(_0x3b10dd){var _0xe7e9ae=_0x3b10dd[0x0]===_0x2839('0x89')?_0x3b10dd[0x0]:'i.'+_0x3b10dd[0x0];_0x4ecd70['order'](_0xe7e9ae,_0x3b10dd[0x1]===_0x2839('0x8a')?![]:!![]);});}if(!_[_0x2839('0x70')](_0x328967)){_0x4ecd70[_0x2839('0x5d')](_0x2f93f8);_0x19387b[_0x2839('0x43')](_0x2839('0x8b'),_0x328967);}BPromise[_0x2839('0x8c')]()[_0x2839('0x26')](function(){if(!_0x1888c4){if(_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x71')])return;_0x19387b[_0x2839('0x43')](_0x2839('0x8d'));_0x4ecd70[_0x2839('0x43')](_0x2839('0x8d'));return;}if(_0xaf7ad1[_0x2839('0x8e')][_0x2839('0x8f')]!==_0x2839('0x90'))return;return _0xaf7ad1[_0x2839('0x8e')][_0x2839('0x91')]({'attributes':['id'],'raw':!![]})[_0x2839('0x26')](function(_0x454b05){if(_[_0x2839('0x70')](_0x454b05)){_0x19387b['where'](_0x2839('0x92'));_0x4ecd70[_0x2839('0x43')](_0x2839('0x92'));}else{_0x19387b[_0x2839('0x43')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x454b05,'id'));_0x4ecd70[_0x2839('0x43')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x2839('0x35')](_0x454b05,'id'));}});})[_0x2839('0x26')](function(){if(_0xaf7ad1[_0x2839('0x8e')][_0x2839('0x8f')]===_0x2839('0x90')&&!_0x1888c4&&!_0xaf7ad1[_0x2839('0x3b')][_0x2839('0x71')])return[];return db[_0x2839('0x93')][_0x2839('0x3b')](_0x19387b[_0x2839('0x94')](),_0xec2501);})['then'](function(_0x8f1f1e){_0x187ca9[_0x2839('0x21')]=_0x8f1f1e['length'];if(_0x187ca9[_0x2839('0x21')]===0x0)return[];return db['sequelize']['query'](_0xb00beb[_0x2839('0x94')](),_0xec2501)['then'](function(_0xf95be0){_0x256fad=_[_0x2839('0x95')](_0xf95be0,'id');_0xec2501=_[_0x2839('0x96')](_0xec2501,{'model':db[_0x2839('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xaf7ad1['query'][_0x2839('0x97')]){_0x49b582[_0x2839('0x3f')][_0x2839('0x32')](function(_0x162a89){_0x4ecd70[_0x2839('0x45')]('i.'+_0x162a89);});}else{_0x4ecd70['field'](_0x2839('0x88'),_0x2839('0x5a'));_0x4ecd70[_0x2839('0x45')](_0x2839('0x98'),'Account.key');_0x4ecd70[_0x2839('0x45')]('a.mandatoryDisposition',_0x2839('0x99'));_0x4ecd70['field'](_0x2839('0x9a'),_0x2839('0x89'));_0x4ecd70[_0x2839('0x45')](_0x2839('0x9b'));_0x4ecd70[_0x2839('0x45')](_0x2839('0x9c'),_0x2839('0x9d'));_0x4ecd70[_0x2839('0x45')](_0x2839('0x9e'),_0x2839('0x9f'));_0x4ecd70[_0x2839('0x45')](_0x2839('0xa0'),_0x2839('0xa1'));_0x4ecd70[_0x2839('0x45')](_0x2839('0xa2'),'Contact.phone');_0x4ecd70['field'](_0x2839('0xa3'),_0x2839('0xa4'));_0x4ecd70[_0x2839('0x45')](_0x2839('0xa5'),_0x2839('0xa6'));_0x4ecd70['field'](_0x2839('0xa7'),_0x2839('0xa8'));_0x4ecd70['field'](_0x2839('0xa9'),_0x2839('0xaa'));_0x4ecd70['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x2839('0x2f'));}if(_0x49b582['limit'])_0x4ecd70[_0x2839('0x22')](_0x49b582[_0x2839('0x22')]);if(_0x49b582[_0x2839('0x1f')])_0x4ecd70[_0x2839('0x1f')](_0x49b582[_0x2839('0x1f')]);return db[_0x2839('0x93')][_0x2839('0x3b')](_0x4ecd70[_0x2839('0x94')](),_0xec2501);})[_0x2839('0x26')](function(_0x5247e7){if(_0x5247e7[_0x2839('0x59')]>0x0)_0x5af7e7[_0x2839('0x43')](_0x2839('0xab'),_[_0x2839('0x35')](_0x5247e7,'id'));return db[_0x2839('0x93')][_0x2839('0x3b')](_0x5af7e7[_0x2839('0x94')](),_0xec2501)[_0x2839('0x26')](function(_0x426978){var _0x59293a=_[_0x2839('0xac')](_0x426978,'OpenchannelInteractionId');var _0x44582a=[];_0x5247e7[_0x2839('0x32')](function(_0x5e5dc6){_0x44582a[_0x2839('0x33')](updateOpenchannelInteraction(_0x5e5dc6,_0x256fad,_0x59293a));});return BPromise[_0x2839('0xad')](_0x44582a);});});})[_0x2839('0x26')](function(_0x56b1fa){_0x187ca9[_0x2839('0xae')]=_0x56b1fa;return _0x187ca9;})[_0x2839('0x26')](respondWithFilteredResult(_0x1cf4b4,_0x49b582))[_0x2839('0x34')](handleError(_0x1cf4b4,null));};exports['show']=function(_0x8e1291,_0x450679){var _0x266007={};if(_0x8e1291['query']['type']&&_0x8e1291['query'][_0x2839('0x65')]===_0x2839('0x46')){_0x266007[_0x2839('0x46')]=_0x8e1291[_0x2839('0xaf')]['id'];}else{_0x266007['id']=_0x8e1291['params']['id'];}var _0x1855b3={'raw':![],'where':_0x266007},_0x4e5ced={};_0x4e5ced[_0x2839('0x3a')]=_[_0x2839('0x3c')](db[_0x2839('0x36')][_0x2839('0x37')]);_0x4e5ced[_0x2839('0x3b')]=_['keys'](_0x8e1291[_0x2839('0x3b')]);_0x4e5ced[_0x2839('0x3d')]=_['intersection'](_0x4e5ced['model'],_0x4e5ced[_0x2839('0x3b')]);_0x1855b3[_0x2839('0x3f')]=_['intersection'](_0x4e5ced['model'],qs[_0x2839('0x97')](_0x8e1291[_0x2839('0x3b')]['fields']));_0x1855b3[_0x2839('0x3f')]=_0x1855b3[_0x2839('0x3f')]['length']?_0x1855b3['attributes']:_0x4e5ced['model'];if(_0x8e1291[_0x2839('0x3b')][_0x2839('0xb0')]){_0x1855b3[_0x2839('0xb1')]=[{'all':!![]}];}_0x1855b3=_[_0x2839('0x96')]({},_0x1855b3,_0x8e1291[_0x2839('0xb2')]);return db[_0x2839('0x36')][_0x2839('0x6c')](_0x1855b3)[_0x2839('0x26')](handleEntityNotFound(_0x450679,null))[_0x2839('0x26')](respondWithResult(_0x450679,null))[_0x2839('0x34')](handleError(_0x450679,null));};exports['create']=function(_0x5756b6,_0x556475){return db[_0x2839('0x36')]['create'](_0x5756b6['body'],{})[_0x2839('0x26')](respondWithResult(_0x556475,0xc9))['catch'](handleError(_0x556475,null));};exports['update']=function(_0xb05655,_0x5f34d8){if(_0xb05655[_0x2839('0x6e')]['id']){delete _0xb05655[_0x2839('0x6e')]['id'];}return db['OpenchannelInteraction'][_0x2839('0x6c')]({'where':{'id':_0xb05655[_0x2839('0xaf')]['id']}})['then'](handleEntityNotFound(_0x5f34d8,null))['then'](saveUpdates(_0xb05655[_0x2839('0x6e')],null))[_0x2839('0x26')](respondWithResult(_0x5f34d8,null))['catch'](handleError(_0x5f34d8,null));};exports[_0x2839('0x27')]=function(_0x46d84d,_0x1c9e0f){return db['OpenchannelInteraction'][_0x2839('0x6c')]({'where':{'id':_0x46d84d[_0x2839('0xaf')]['id']}})[_0x2839('0x26')](handleEntityNotFound(_0x1c9e0f,null))[_0x2839('0x26')](removeEntity(_0x1c9e0f,null))[_0x2839('0x34')](handleError(_0x1c9e0f,null));};exports[_0x2839('0xb3')]=function(_0x1247ba,_0x4d4569){return db[_0x2839('0x36')][_0x2839('0xb3')]()[_0x2839('0x26')](respondWithResult(_0x4d4569,null))[_0x2839('0x34')](handleError(_0x4d4569,null));};exports[_0x2839('0xb4')]=function(_0x2900c4,_0x26acba,_0x30c9cf){return db[_0x2839('0xb5')]['find']({'where':{'id':_0x2900c4[_0x2839('0xaf')]['id']}})[_0x2839('0x26')](handleEntityNotFound(_0x26acba,null))[_0x2839('0x26')](function(_0x585c3e){if(_0x585c3e){return _0x585c3e[_0x2839('0xb4')](_0x2900c4['body'][_0x2839('0xb6')],_['omit'](_0x2900c4[_0x2839('0x6e')],['ids','id'])||{});}})[_0x2839('0x26')](respondWithResult(_0x26acba,null))[_0x2839('0x34')](handleError(_0x26acba,null));};exports[_0x2839('0xb7')]=function(_0x24b04a,_0x16792b,_0x59122e){var _0x29862c={'raw':![],'where':{}};var _0x3e6c2a={};var _0x4a4302={'count':0x0,'rows':[]};return db[_0x2839('0x36')][_0x2839('0xb8')]({'where':{'id':_0x24b04a[_0x2839('0xaf')]['id']}})[_0x2839('0x26')](handleEntityNotFound(_0x16792b,null))[_0x2839('0x26')](function(_0x5b262f){if(_0x5b262f){_0x3e6c2a[_0x2839('0x3a')]=_['keys'](db[_0x2839('0xb5')][_0x2839('0x37')]);_0x3e6c2a[_0x2839('0x3b')]=_[_0x2839('0x3c')](_0x24b04a[_0x2839('0x3b')]);_0x3e6c2a[_0x2839('0x3d')]=_[_0x2839('0x3e')](_0x3e6c2a[_0x2839('0x3a')],_0x3e6c2a[_0x2839('0x3b')]);_0x29862c[_0x2839('0x3f')]=_[_0x2839('0x3e')](_0x3e6c2a['model'],qs['fields'](_0x24b04a[_0x2839('0x3b')][_0x2839('0x97')]));_0x29862c[_0x2839('0x3f')]=_0x29862c[_0x2839('0x3f')][_0x2839('0x59')]?_0x29862c[_0x2839('0x3f')]:_0x3e6c2a['model'];if(!_0x24b04a[_0x2839('0x3b')][_0x2839('0xb9')](_0x2839('0x40'))){_0x29862c['limit']=qs[_0x2839('0x22')](_0x24b04a[_0x2839('0x3b')][_0x2839('0x22')]);_0x29862c[_0x2839('0x1f')]=qs[_0x2839('0x1f')](_0x24b04a['query'][_0x2839('0x1f')]);}_0x29862c['order']=qs[_0x2839('0x42')](_0x24b04a['query'][_0x2839('0x42')]);_0x29862c[_0x2839('0x43')]=qs[_0x2839('0x3d')](_['pick'](_0x24b04a[_0x2839('0x3b')],_0x3e6c2a['filters']));_0x29862c['where'][_0x2839('0xba')]=_0x5b262f['id'];if(_0x24b04a[_0x2839('0x3b')][_0x2839('0x7e')]){_0x29862c[_0x2839('0x43')]=_[_0x2839('0x96')](_0x29862c[_0x2839('0x43')],{'$or':_['map'](_0x29862c[_0x2839('0x3f')],function(_0xffa5fc){var _0x2f884e={};_0x2f884e[_0xffa5fc]={'$like':'%'+_0x24b04a['query'][_0x2839('0x7e')]+'%'};return _0x2f884e;})});}if(_0x24b04a[_0x2839('0x3b')][_0x2839('0x74')]){var _0x499a4e=_0x24b04a[_0x2839('0x3b')][_0x2839('0x74')][_0x2839('0x31')](',');var _0x1b84a4={};_0x1b84a4[_0x499a4e[0x0]]={'$gte':moment(_0x499a4e[0x1])[_0x2839('0xbb')](_0x2839('0xbc'))};_0x29862c[_0x2839('0x43')]=_['merge'](_0x29862c[_0x2839('0x43')],_0x1b84a4);}_0x29862c=_[_0x2839('0x96')]({},_0x29862c,_0x24b04a['options']);return db[_0x2839('0xb5')][_0x2839('0x21')]({'where':_0x29862c[_0x2839('0x43')]})[_0x2839('0x26')](function(_0x363683){_0x4a4302[_0x2839('0x21')]=_0x363683;if(_0x24b04a[_0x2839('0x3b')][_0x2839('0xb0')]){_0x29862c[_0x2839('0xb1')]=[{'all':!![]}];}return db[_0x2839('0xb5')][_0x2839('0xbd')](_0x29862c);})[_0x2839('0x26')](function(_0x28f9f1){_0x4a4302[_0x2839('0xae')]=_0x28f9f1;return _0x4a4302;});}})['then'](respondWithFilteredResult(_0x16792b,_0x29862c))[_0x2839('0x34')](handleError(_0x16792b,null));};exports[_0x2839('0xbe')]=function(_0x4728f1,_0x342a62,_0x1759ec){return db[_0x2839('0x36')][_0x2839('0x6c')]({'where':{'id':_0x4728f1[_0x2839('0xaf')]['id']}})[_0x2839('0x26')](handleEntityNotFound(_0x342a62,null))['then'](function(_0x2baaed){if(_0x2baaed){return _0x2baaed[_0x2839('0xbf')](_0x4728f1[_0x2839('0x6e')]['ids'],_[_0x2839('0xc0')](_0x4728f1[_0x2839('0x6e')],[_0x2839('0xb6'),'id'])||{})[_0x2839('0xc1')](function(){return db[_0x2839('0x68')]['findAll']({'attributes':['id',_0x2839('0x2b'),_0x2839('0xc2')],'where':{'id':_0x4728f1['body'][_0x2839('0xb6')]}});})['then'](function(_0xb8bf91){socket[_0x2839('0xc3')](_0x2839('0xc4'),{'id':Number(_0x4728f1[_0x2839('0xaf')]['id']),'tags':_0xb8bf91||[]});return{'id':Number(_0x4728f1[_0x2839('0xaf')]['id']),'tags':_0xb8bf91||[]};});}})['then'](respondWithResult(_0x342a62,null))[_0x2839('0x34')](handleError(_0x342a62,null));};exports['removeTags']=function(_0x5b458a,_0x572c54,_0x21fc8c){return db[_0x2839('0x36')]['find']({'where':{'id':_0x5b458a[_0x2839('0xaf')]['id']}})[_0x2839('0x26')](handleEntityNotFound(_0x572c54,null))['then'](function(_0x3850e1){if(_0x3850e1){return _0x3850e1[_0x2839('0xc5')](_0x5b458a[_0x2839('0x3b')][_0x2839('0xb6')]);}})[_0x2839('0x26')](respondWithStatusCode(_0x572c54,null))[_0x2839('0x34')](handleError(_0x572c54,null));};exports[_0x2839('0xc6')]=function(_0x51c92f,_0x2def41){var _0x13eb0a=moment()[_0x2839('0xc7')]()[_0x2839('0x94')]();var _0x3c0a34=path[_0x2839('0xc8')](config['root'],_0x2839('0xc9'),_0x2839('0xca'),_0x2839('0xcb'));var _0x2fa83a=path[_0x2839('0xc8')](config[_0x2839('0xcc')],'server',_0x2839('0xca'),_0x2839('0xcd'));var _0x3a00ad=path[_0x2839('0xc8')](_0x3c0a34,_0x13eb0a);var _0x39930e=util['format']('transcript-%d-%s.zip',_0x51c92f[_0x2839('0xaf')]['id'],_0x13eb0a);var _0x427fee=path[_0x2839('0xc8')](_0x3c0a34,_0x39930e);var _0x52595f=[];_0x52595f[_0x2839('0x33')]({'model':db['User'],'as':'User','attributes':['id',_0x2839('0x2e')],'raw':!![]});_0x52595f['push']({'model':db[_0x2839('0xce')],'as':_0x2839('0xcf'),'attributes':['id',_0x2839('0xd0'),_0x2839('0xd1')],'raw':!![]});if(_0x51c92f[_0x2839('0x3b')][_0x2839('0xcd')]){_0x52595f[_0x2839('0x33')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x15993c=[{'model':db[_0x2839('0xb5')],'as':'Messages','attributes':['id',_0x2839('0x6e'),'createdAt',_0x2839('0xd2'),_0x2839('0xd3'),_0x2839('0x7a')],'include':_0x52595f}];_0x15993c[_0x2839('0x33')]({'model':db[_0x2839('0xd4')],'as':'Account','attributes':['id',_0x2839('0x2b')]});_0x15993c[_0x2839('0x33')]({'model':db[_0x2839('0xd5')],'as':_0x2839('0xd6'),'attributes':['id',_0x2839('0x2e')]});return db['OpenchannelInteraction'][_0x2839('0x6c')]({'where':{'id':_0x51c92f[_0x2839('0xaf')]['id']},'include':_0x15993c})[_0x2839('0x26')](handleEntityNotFound(_0x2def41,null))[_0x2839('0x26')](function(_0x50f4a8){if(_0x50f4a8){var _0x3ae933=_0x50f4a8[_0x2839('0xd7')]({'plain':!![]});fs[_0x2839('0xd8')](_0x3a00ad);var _0x3436bc={'channel':_0x2839('0xd9'),'account':_0x3ae933[_0x2839('0xda')][_0x2839('0x2b')],'agent':_0x3ae933[_0x2839('0xd6')]?_0x3ae933['Owner'][_0x2839('0x2e')]:_0x2839('0xdb'),'createdAt':moment(_0x3ae933['createdAt'])['format'](_0x2839('0xbc'))['toString'](),'closedAt':_0x3ae933[_0x2839('0xdc')]?moment(_0x3ae933['closedAt'])[_0x2839('0xbb')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2839('0x94')]():'','disposition':_0x3ae933[_0x2839('0xdd')],'visibility':_0x3ae933[_0x2839('0xde')]?'Public':_0x2839('0xdf'),'messages':_(_0x3ae933[_0x2839('0xe0')])[_0x2839('0x7e')]({'secret':![]})[_0x2839('0x35')](function(_0xa030b3){if(_0xa030b3['Attachment']){var _0x5f589c=path[_0x2839('0xc8')](_0x2fa83a,_0xa030b3[_0x2839('0xe1')][_0x2839('0xe2')]);if(fs['existsSync'](_0x5f589c)){fs[_0x2839('0xe3')](_0x5f589c)[_0x2839('0xe4')](fs[_0x2839('0xe5')](path[_0x2839('0xc8')](_0x3a00ad,_0xa030b3['Attachment'][_0x2839('0xe2')])));}}return{'date':moment(_0xa030b3['createdAt'])[_0x2839('0xbb')](_0x2839('0xbc'))[_0x2839('0x94')](),'sender':_0xa030b3[_0x2839('0xd2')]===_0x2839('0xe6')?_0xa030b3[_0x2839('0xd5')]?_0xa030b3[_0x2839('0xd5')]['fullname']:_0x2839('0xe7'):_0xa030b3[_0x2839('0xcf')]['firstName']+(_0xa030b3[_0x2839('0xcf')][_0x2839('0xd1')]?'\x20'+_0xa030b3[_0x2839('0xcf')][_0x2839('0xd1')]:''),'body':_0xa030b3[_0x2839('0xe1')]?_0xa030b3[_0x2839('0xe1')][_0x2839('0xe2')]:_0xa030b3[_0x2839('0x6e')],'direction':_0xa030b3['direction']===_0x2839('0xe6')?'A':'C','secret':_0xa030b3[_0x2839('0xd3')],'read':_0xa030b3[_0x2839('0x7a')],'attachment':_0xa030b3['Attachment']};})['value']()};return ejs[_0x2839('0xe8')](path['join'](config[_0x2839('0xcc')],_0x2839('0xc9'),_0x2839('0xe9'),_0x2839('0xea')),{'interaction':_0x3436bc})['then'](function(_0x58722d){var _0x667e09=path[_0x2839('0xc8')](_0x3a00ad,_0x2839('0xeb')+_0x3ae933['id']+'-'+_0x13eb0a+_0x2839('0xec'));var _0x449f42={'path':_0x667e09,'channel':_0x2839('0xd9'),'interactionId':_0x3ae933['id']};return pdf[_0x2839('0xed')](_0x58722d,_0x449f42);})[_0x2839('0x26')](function(){return new BPromise(function(_0x3b0d51,_0x532067){zipdir(_0x3a00ad,{'saveTo':_0x427fee},function(_0x486bfc,_0x379270){if(_0x486bfc)return _0x532067(_0x486bfc);return _0x3b0d51(_0x379270);});})[_0x2839('0x26')](function(){return new BPromise(function(_0x4ce29d,_0x16a034){rimraf(_0x3a00ad,function(_0x4312c0){if(_0x4312c0)_0x16a034(_0x4312c0);return _0x4ce29d();});});})[_0x2839('0x26')](function(){return _0x2def41['download'](_0x427fee,_0x39930e,function(_0x5b722f){if(_0x5b722f){console[_0x2839('0xee')](_0x2839('0xef'),_0x5b722f);}else{fs[_0x2839('0xf0')](_0x427fee);}});});});}else{return _0x2def41[_0x2839('0x1d')](0xc8);}})[_0x2839('0x34')](handleError(_0x2def41,null));};
\ No newline at end of file
index cb1c320..151602c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa512=['emit','catch','hook','exports','events','OpenchannelInteraction','../../mysqldb','OpenchannelMessage','save','update','remove','map','then','setDataValue','unreadMessages','length'];(function(_0x34b87f,_0x28aef2){var _0x449805=function(_0x3735b7){while(--_0x3735b7){_0x34b87f['push'](_0x34b87f['shift']());}};_0x449805(++_0x28aef2);}(_0xa512,0x194));var _0x2a51=function(_0x4eeca4,_0x5901c9){_0x4eeca4=_0x4eeca4-0x0;var _0x430031=_0xa512[_0x4eeca4];return _0x430031;};'use strict';var EventEmitter=require(_0x2a51('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0x2a51('0x1')];var OpenchannelMessage=require(_0x2a51('0x2'))['db'][_0x2a51('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2a51('0x4'),'afterUpdate':_0x2a51('0x5'),'afterDestroy':_0x2a51('0x6')};function emitEvent(_0x49d17a){return function(_0x589efa,_0x486418,_0x594199){_0x589efa['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x1c4ba3){_0x589efa['setDataValue']('Users',_0x1c4ba3[_0x2a51('0x7')](function(_0x453005){return{'id':_0x453005['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x589efa['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2a51('0x8')](function(_0x3df45d){_0x589efa[_0x2a51('0x9')](_0x2a51('0xa'),_0x3df45d[_0x2a51('0xb')]);OpenchannelInteractionEvents[_0x2a51('0xc')](_0x49d17a+':'+_0x589efa['id'],_0x589efa);OpenchannelInteractionEvents[_0x2a51('0xc')](_0x49d17a,_0x589efa);_0x594199(null);})[_0x2a51('0xd')](_0x594199(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x2a51('0xe')](e,emitEvent(event));}}module[_0x2a51('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x1958=['save','remove','then','map','length','emit','catch','hasOwnProperty','events','../../mysqldb','OpenchannelInteraction','setMaxListeners'];(function(_0x13c41e,_0x4d281f){var _0x3028fd=function(_0x112f8d){while(--_0x112f8d){_0x13c41e['push'](_0x13c41e['shift']());}};_0x3028fd(++_0x4d281f);}(_0x1958,0x1c4));var _0x8195=function(_0x25483f,_0x43852f){_0x25483f=_0x25483f-0x0;var _0x220d13=_0x1958[_0x25483f];return _0x220d13;};'use strict';var EventEmitter=require(_0x8195('0x0'));var OpenchannelInteraction=require(_0x8195('0x1'))['db'][_0x8195('0x2')];var OpenchannelMessage=require(_0x8195('0x1'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x8195('0x3')](0x0);var events={'afterCreate':_0x8195('0x4'),'afterUpdate':'update','afterDestroy':_0x8195('0x5')};function emitEvent(_0x9c2d53){return function(_0x502c3d,_0xd93680,_0xf7bef1){_0x502c3d['getUsers']({'attributes':['id'],'raw':!![]})[_0x8195('0x6')](function(_0xa01f05){_0x502c3d['setDataValue']('Users',_0xa01f05[_0x8195('0x7')](function(_0x48818a){return{'id':_0x48818a['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x502c3d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8195('0x6')](function(_0x1b5a71){_0x502c3d['setDataValue']('unreadMessages',_0x1b5a71[_0x8195('0x8')]);OpenchannelInteractionEvents[_0x8195('0x9')](_0x9c2d53+':'+_0x502c3d['id'],_0x502c3d);OpenchannelInteractionEvents[_0x8195('0x9')](_0x9c2d53,_0x502c3d);_0xf7bef1(null);})[_0x8195('0xa')](_0xf7bef1(null));};}for(var e in events){if(events[_0x8195('0xb')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index 3fa5efd..1c96999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c8f=['./openchannelInteraction.attributes','exports','define','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','bluebird','request-promise','path'];(function(_0x3ffd40,_0x4c65b8){var _0x14309d=function(_0x48886e){while(--_0x48886e){_0x3ffd40['push'](_0x3ffd40['shift']());}};_0x14309d(++_0x4c65b8);}(_0x2c8f,0x192));var _0xf2c8=function(_0x58111a,_0x3e9c06){_0x58111a=_0x58111a-0x0;var _0x114f95=_0x2c8f[_0x58111a];return _0x114f95;};'use strict';var _=require('lodash');var util=require(_0xf2c8('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf2c8('0x1'));var rp=require(_0xf2c8('0x2'));var fs=require('fs');var path=require(_0xf2c8('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf2c8('0x4'));module[_0xf2c8('0x5')]=function(_0x182b73,_0x3ad7a0){return _0x182b73[_0xf2c8('0x6')]('OpenchannelInteraction',attributes,{'tableName':_0xf2c8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf2c8('0x8'),'collate':_0xf2c8('0x9'),'hooks':{'beforeUpdate':function(_0x450f1e,_0x3e220d,_0x2112fc){if(_0x450f1e['changed'](_0xf2c8('0xa'))){_0x450f1e[_0xf2c8('0xb')]=moment()[_0xf2c8('0xc')](_0xf2c8('0xd'));}_0x2112fc(null,_0x450f1e);}}});};
\ No newline at end of file
+var _0x618a=['OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./openchannelInteraction.attributes','exports','define'];(function(_0x36b92f,_0x4b12c3){var _0x25f990=function(_0x1da8d4){while(--_0x1da8d4){_0x36b92f['push'](_0x36b92f['shift']());}};_0x25f990(++_0x4b12c3);}(_0x618a,0xe3));var _0xa618=function(_0x416468,_0x2e7a72){_0x416468=_0x416468-0x0;var _0x2ee9b7=_0x618a[_0x416468];return _0x2ee9b7;};'use strict';var _=require(_0xa618('0x0'));var util=require(_0xa618('0x1'));var logger=require(_0xa618('0x2'))(_0xa618('0x3'));var moment=require(_0xa618('0x4'));var BPromise=require('bluebird');var rp=require(_0xa618('0x5'));var fs=require('fs');var path=require(_0xa618('0x6'));var rimraf=require(_0xa618('0x7'));var config=require('../../config/environment');var attributes=require(_0xa618('0x8'));module[_0xa618('0x9')]=function(_0xaf9a59,_0x2ca93b){return _0xaf9a59[_0xa618('0xa')](_0xa618('0xb'),attributes,{'tableName':_0xa618('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa618('0xd'),'collate':_0xa618('0xe'),'hooks':{'beforeUpdate':function(_0x1bc5c2,_0x54a812,_0x45c8e8){if(_0x1bc5c2[_0xa618('0xf')]('closed')){_0x1bc5c2[_0xa618('0x10')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x45c8e8(null,_0x1bc5c2);}}});};
\ No newline at end of file
index d73b391..933a284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51f9=['error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','limit','debug','find','addTags','ids','omit','AddTags','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x25ca33,_0x539349){var _0x21834e=function(_0x47e33b){while(--_0x47e33b){_0x25ca33['push'](_0x25ca33['shift']());}};_0x21834e(++_0x539349);}(_0x51f9,0x8e));var _0x951f=function(_0x5d8018,_0x588592){_0x5d8018=_0x5d8018-0x0;var _0x151ac4=_0x51f9[_0x5d8018];return _0x151ac4;};'use strict';var _=require(_0x951f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x951f('0x1'));var rs=require(_0x951f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x951f('0x3'))['db'];var utils=require(_0x951f('0x4'));var logger=require(_0x951f('0x5'))(_0x951f('0x6'));var config=require(_0x951f('0x7'));var jayson=require(_0x951f('0x8'));var client=jayson[_0x951f('0x9')][_0x951f('0xa')]({'port':0x232a});config['redis']=_[_0x951f('0xb')](config[_0x951f('0xc')],{'host':_0x951f('0xd'),'port':0x18eb});var socket=require(_0x951f('0xe'))(new Redis(config[_0x951f('0xc')]));require(_0x951f('0xf'))[_0x951f('0x10')](socket);function respondWithRpcPromise(_0x33ab57,_0x599dbe,_0x52592c){return new BPromise(function(_0x321cd8,_0x4c67ae){return client['request'](_0x33ab57,_0x52592c)[_0x951f('0x11')](function(_0x566b30){logger[_0x951f('0x12')](_0x951f('0x13'),_0x599dbe,_0x951f('0x14'));logger['debug']('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x599dbe,_0x951f('0x14'),JSON[_0x951f('0x15')](_0x566b30));if(_0x566b30[_0x951f('0x16')]){if(_0x566b30[_0x951f('0x16')][_0x951f('0x17')]===0x1f4){logger[_0x951f('0x16')](_0x951f('0x13'),_0x599dbe,_0x566b30[_0x951f('0x16')][_0x951f('0x18')]);return _0x4c67ae(_0x566b30['error'][_0x951f('0x18')]);}logger['error'](_0x951f('0x13'),_0x599dbe,_0x566b30[_0x951f('0x16')]['message']);return _0x321cd8(_0x566b30[_0x951f('0x16')][_0x951f('0x18')]);}else{logger['info'](_0x951f('0x13'),_0x599dbe,_0x951f('0x14'));_0x321cd8(_0x566b30[_0x951f('0x19')][_0x951f('0x18')]);}})[_0x951f('0x1a')](function(_0x5d8124){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x599dbe,_0x5d8124);_0x4c67ae(_0x5d8124);});});}exports[_0x951f('0x1b')]=function(_0x5d859b){var _0x2cfe22=this;return new Promise(function(_0x3648b4,_0x37e347){return db[_0x951f('0x1c')][_0x951f('0x1d')](_0x5d859b[_0x951f('0x1e')],{'raw':_0x5d859b[_0x951f('0x1f')]?_0x5d859b['options'][_0x951f('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d859b[_0x951f('0x1f')]?_0x5d859b[_0x951f('0x1f')][_0x951f('0x21')]||null:null,'attributes':_0x5d859b[_0x951f('0x1f')]?_0x5d859b[_0x951f('0x1f')]['attributes']||null:null,'limit':_0x5d859b[_0x951f('0x1f')]?_0x5d859b[_0x951f('0x1f')][_0x951f('0x22')]||null:null})[_0x951f('0x11')](function(_0x1b1942){logger[_0x951f('0x12')](_0x951f('0x1b'),_0x5d859b);logger[_0x951f('0x23')](_0x951f('0x1b'),_0x5d859b,JSON['stringify'](_0x1b1942));_0x3648b4(_0x1b1942);})[_0x951f('0x1a')](function(_0x52ed54){logger['error']('UpdateOpenchannelInteraction',_0x52ed54[_0x951f('0x18')],_0x5d859b);_0x37e347(_0x2cfe22['error'](0x1f4,_0x52ed54['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x30414f){return new Promise(function(_0x3cc3fc,_0x5308c5){return db[_0x951f('0x1c')][_0x951f('0x24')]({'where':_0x30414f[_0x951f('0x1f')]?_0x30414f[_0x951f('0x1f')][_0x951f('0x21')]||null:null})[_0x951f('0x11')](function(_0x3e1e58){if(_0x3e1e58){return _0x3e1e58[_0x951f('0x25')](_0x30414f['body'][_0x951f('0x26')],_[_0x951f('0x27')](_0x30414f[_0x951f('0x1e')],[_0x951f('0x26'),'id'])||{});}})['spread'](function(_0x3c3901){logger['info'](_0x951f('0x28'),_0x30414f);logger[_0x951f('0x23')](_0x951f('0x28'),_0x30414f,JSON[_0x951f('0x15')](_0x3c3901));_0x3cc3fc(_0x3c3901);})[_0x951f('0x1a')](function(_0x1508eb){logger['error'](_0x951f('0x28'),_0x1508eb[_0x951f('0x18')],_0x30414f);_0x5308c5(_this[_0x951f('0x16')](0x1f4,_0x1508eb[_0x951f('0x18')]));});});};
\ No newline at end of file
+var _0x5fff=['AddTags','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','register','request','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','raw','options','where','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','spread','debug'];(function(_0x250a37,_0x4ad11d){var _0x3efd4e=function(_0x12eea4){while(--_0x12eea4){_0x250a37['push'](_0x250a37['shift']());}};_0x3efd4e(++_0x4ad11d);}(_0x5fff,0x99));var _0xf5ff=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x5fff[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xf5ff('0x0'));var util=require(_0xf5ff('0x1'));var moment=require('moment');var BPromise=require(_0xf5ff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf5ff('0x3'))['db'];var utils=require(_0xf5ff('0x4'));var logger=require(_0xf5ff('0x5'))(_0xf5ff('0x6'));var config=require('../../config/environment');var jayson=require(_0xf5ff('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xf5ff('0x8')]=_[_0xf5ff('0x9')](config[_0xf5ff('0x8')],{'host':_0xf5ff('0xa'),'port':0x18eb});var socket=require(_0xf5ff('0xb'))(new Redis(config[_0xf5ff('0x8')]));require('./openchannelInteraction.socket')[_0xf5ff('0xc')](socket);function respondWithRpcPromise(_0x184af4,_0x490111,_0x3158a2){return new BPromise(function(_0x1cc737,_0xf6488a){return client[_0xf5ff('0xd')](_0x184af4,_0x3158a2)['then'](function(_0x33118e){logger['info'](_0xf5ff('0xe'),_0x490111,_0xf5ff('0xf'));logger['debug'](_0xf5ff('0x10'),_0x490111,_0xf5ff('0xf'),JSON[_0xf5ff('0x11')](_0x33118e));if(_0x33118e['error']){if(_0x33118e['error']['code']===0x1f4){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x490111,_0x33118e[_0xf5ff('0x12')][_0xf5ff('0x13')]);return _0xf6488a(_0x33118e[_0xf5ff('0x12')][_0xf5ff('0x13')]);}logger['error'](_0xf5ff('0xe'),_0x490111,_0x33118e[_0xf5ff('0x12')][_0xf5ff('0x13')]);return _0x1cc737(_0x33118e[_0xf5ff('0x12')][_0xf5ff('0x13')]);}else{logger[_0xf5ff('0x14')](_0xf5ff('0xe'),_0x490111,_0xf5ff('0xf'));_0x1cc737(_0x33118e[_0xf5ff('0x15')]['message']);}})[_0xf5ff('0x16')](function(_0x12d102){logger[_0xf5ff('0x12')](_0xf5ff('0xe'),_0x490111,_0x12d102);_0xf6488a(_0x12d102);});});}exports[_0xf5ff('0x17')]=function(_0x178475){var _0x2f0328=this;return new Promise(function(_0x43f3aa,_0x524ff8){return db[_0xf5ff('0x18')][_0xf5ff('0x19')](_0x178475[_0xf5ff('0x1a')],{'raw':_0x178475['options']?_0x178475['options'][_0xf5ff('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x178475[_0xf5ff('0x1c')]?_0x178475['options'][_0xf5ff('0x1d')]||null:null,'attributes':_0x178475[_0xf5ff('0x1c')]?_0x178475[_0xf5ff('0x1c')]['attributes']||null:null,'limit':_0x178475[_0xf5ff('0x1c')]?_0x178475[_0xf5ff('0x1c')]['limit']||null:null})['then'](function(_0x3994c7){logger[_0xf5ff('0x14')](_0xf5ff('0x17'),_0x178475);logger['debug'](_0xf5ff('0x17'),_0x178475,JSON[_0xf5ff('0x11')](_0x3994c7));_0x43f3aa(_0x3994c7);})['catch'](function(_0x10ac14){logger[_0xf5ff('0x12')](_0xf5ff('0x17'),_0x10ac14[_0xf5ff('0x13')],_0x178475);_0x524ff8(_0x2f0328[_0xf5ff('0x12')](0x1f4,_0x10ac14[_0xf5ff('0x13')]));});});};exports[_0xf5ff('0x1e')]=function(_0x430228){return new Promise(function(_0x324b31,_0x46e879){return db['OpenchannelInteraction'][_0xf5ff('0x1f')]({'where':_0x430228[_0xf5ff('0x1c')]?_0x430228[_0xf5ff('0x1c')][_0xf5ff('0x1d')]||null:null})['then'](function(_0x29835e){if(_0x29835e){return _0x29835e[_0xf5ff('0x20')](_0x430228['body'][_0xf5ff('0x21')],_[_0xf5ff('0x22')](_0x430228[_0xf5ff('0x1a')],['ids','id'])||{});}})[_0xf5ff('0x23')](function(_0x5a2869){logger[_0xf5ff('0x14')]('AddTags',_0x430228);logger[_0xf5ff('0x24')](_0xf5ff('0x25'),_0x430228,JSON[_0xf5ff('0x11')](_0x5a2869));_0x324b31(_0x5a2869);})[_0xf5ff('0x16')](function(_0xb3e0be){logger['error'](_0xf5ff('0x25'),_0xb3e0be[_0xf5ff('0x13')],_0x430228);_0x46e879(_this['error'](0x1f4,_0xb3e0be[_0xf5ff('0x13')]));});});};
\ No newline at end of file
index e58ff89..b1de302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b1e=['register','./openchannelInteraction.events','save','update','emit','removeListener'];(function(_0x4b2251,_0x393f10){var _0x5d22fb=function(_0x10992c){while(--_0x10992c){_0x4b2251['push'](_0x4b2251['shift']());}};_0x5d22fb(++_0x393f10);}(_0x1b1e,0xfd));var _0xe1b1=function(_0x228540,_0x31248d){_0x228540=_0x228540-0x0;var _0x6e8c86=_0x1b1e[_0x228540];return _0x6e8c86;};'use strict';var OpenchannelInteractionEvents=require(_0xe1b1('0x0'));var events=[_0xe1b1('0x1'),'remove',_0xe1b1('0x2')];function createListener(_0x55826,_0x3f29a6){return function(_0x4bf229){_0x3f29a6[_0xe1b1('0x3')](_0x55826,_0x4bf229);};}function removeListener(_0x3ff38d,_0x3dad2c){return function(){OpenchannelInteractionEvents[_0xe1b1('0x4')](_0x3ff38d,_0x3dad2c);};}exports[_0xe1b1('0x5')]=function(_0x42e78a){for(var _0x34b726=0x0,_0xca2d81=events['length'];_0x34b726<_0xca2d81;_0x34b726++){var _0x13e49e=events[_0x34b726];var _0x268d2f=createListener('openchannelInteraction:'+_0x13e49e,_0x42e78a);OpenchannelInteractionEvents['on'](_0x13e49e,_0x268d2f);}};
\ No newline at end of file
+var _0x37b7=['register','length','openchannelInteraction:','./openchannelInteraction.events','save','remove','update','emit','removeListener'];(function(_0x375745,_0x1e5cfc){var _0x267f50=function(_0x5153a1){while(--_0x5153a1){_0x375745['push'](_0x375745['shift']());}};_0x267f50(++_0x1e5cfc);}(_0x37b7,0x1ce));var _0x737b=function(_0x3c22e0,_0x1dc6ea){_0x3c22e0=_0x3c22e0-0x0;var _0x215811=_0x37b7[_0x3c22e0];return _0x215811;};'use strict';var OpenchannelInteractionEvents=require(_0x737b('0x0'));var events=[_0x737b('0x1'),_0x737b('0x2'),_0x737b('0x3')];function createListener(_0x45f22b,_0x5977e3){return function(_0x4aaa6d){_0x5977e3[_0x737b('0x4')](_0x45f22b,_0x4aaa6d);};}function removeListener(_0x2609b3,_0x3a7b38){return function(){OpenchannelInteractionEvents[_0x737b('0x5')](_0x2609b3,_0x3a7b38);};}exports[_0x737b('0x6')]=function(_0x4ccef5){for(var _0x5ed983=0x0,_0x1a6eda=events[_0x737b('0x7')];_0x5ed983<_0x1a6eda;_0x5ed983++){var _0x40d67d=events[_0x5ed983];var _0x10cac4=createListener(_0x737b('0x8')+_0x40d67d,_0x4ccef5);OpenchannelInteractionEvents['on'](_0x40d67d,_0x10cac4);}};
\ No newline at end of file
index 9e9d6f2..c743dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x38176e,_0x536a40){var _0x37f34d=function(_0x1bee14){while(--_0x1bee14){_0x38176e['push'](_0x38176e['shift']());}};_0x37f34d(++_0x536a40);}(_0x9c44,0x178));var _0x49c4=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x9c44[_0x17b6e3];return _0x3906f3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
+var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x25b5f2,_0x1fab33){var _0x3733b0=function(_0x47aa87){while(--_0x47aa87){_0x25b5f2['push'](_0x25b5f2['shift']());}};_0x3733b0(++_0x1fab33);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
index c668ae7..b463f50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7708=['DATE','TEXT','sequelize','exports','medium','out'];(function(_0x3a7f0d,_0x3187a2){var _0x337e29=function(_0xd9da59){while(--_0xd9da59){_0x3a7f0d['push'](_0x3a7f0d['shift']());}};_0x337e29(++_0x3187a2);}(_0x7708,0x188));var _0x8770=function(_0x256684,_0x529c1e){_0x256684=_0x256684-0x0;var _0x37a0c9=_0x7708[_0x256684];return _0x37a0c9;};'use strict';var Sequelize=require(_0x8770('0x0'));module[_0x8770('0x1')]={'body':{'type':Sequelize['TEXT'](_0x8770('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x8770('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x8770('0x4')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x8770('0x5')]}};
\ No newline at end of file
+var _0x6f3e=['exports','TEXT','medium','BOOLEAN','ENUM','out','DATE','sequelize'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f3e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe6f3('0x0'));module[_0xe6f3('0x1')]={'body':{'type':Sequelize[_0xe6f3('0x2')](_0xe6f3('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe6f3('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xe6f3('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe6f3('0x5')]('in','out'),'defaultValue':_0xe6f3('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xe6f3('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xe6f3('0x2')]}};
\ No newline at end of file
index 455ab72..b664dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c4f=['QueryTypes','contact','User','fullname','email','manual','SIP/%s','channel','EventManager','openchannel-interactions','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','sequelize','Sequelize','internal','interface','event','rejectmessage','eml-format','rimraf','zip-dir','mustache','path','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','end','stack','name','send','map','OpenchannelMessage','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','show','params','options','create','body','find','describe','openchannel','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','info','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId'];(function(_0x24dc31,_0x268d9e){var _0x17ecd5=function(_0x14b9bc){while(--_0x14b9bc){_0x24dc31['push'](_0x24dc31['shift']());}};_0x17ecd5(++_0x268d9e);}(_0x2c4f,0x18a));var _0xf2c4=function(_0x1f7584,_0x114b68){_0x1f7584=_0x1f7584-0x0;var _0x501b34=_0x2c4f[_0x1f7584];return _0x501b34;};'use strict';var emlformat=require(_0xf2c4('0x0'));var rimraf=require(_0xf2c4('0x1'));var zipdir=require(_0xf2c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf2c4('0x3'));var util=require('util');var path=require(_0xf2c4('0x4'));var sox=require('sox');var csv=require(_0xf2c4('0x5'));var ejs=require(_0xf2c4('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2c4('0x7'));var squel=require(_0xf2c4('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf2c4('0x9'));var toCsv=require('to-csv');var querystring=require(_0xf2c4('0xa'));var Papa=require('papaparse');var Redis=require(_0xf2c4('0xb'));var authService=require(_0xf2c4('0xc'));var qs=require(_0xf2c4('0xd'));var as=require(_0xf2c4('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2c4('0xf'))(_0xf2c4('0x10'));var utils=require('../../config/utils');var config=require(_0xf2c4('0x11'));var licenseUtil=require(_0xf2c4('0x12'));var db=require(_0xf2c4('0x13'))['db'];config[_0xf2c4('0x14')]=_[_0xf2c4('0x15')](config[_0xf2c4('0x14')],{'host':_0xf2c4('0x16'),'port':0x18eb});var socket=require(_0xf2c4('0x17'))(new Redis(config[_0xf2c4('0x14')]));require(_0xf2c4('0x18'))[_0xf2c4('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf2c4('0x1a')][_0xf2c4('0x1b')]({'port':0x232c});var client9002=jayson[_0xf2c4('0x1a')][_0xf2c4('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x1ac00f,_0x19ad79,_0x1ef46c,_0x39cf1d){return new BPromise(function(_0x33d1f4,_0x23c4ad){var _0x2977a7=_0x39cf1d||client;return _0x2977a7[_0xf2c4('0x1c')](_0x1ac00f,_0x1ef46c)[_0xf2c4('0x1d')](function(_0x82ba77){logger['info'](_0xf2c4('0x1e'),_0x19ad79,_0xf2c4('0x1f'));logger[_0xf2c4('0x20')](_0xf2c4('0x21'),_0x19ad79,_0xf2c4('0x1f'),JSON[_0xf2c4('0x22')](_0x82ba77));if(_0x82ba77[_0xf2c4('0x23')]){if(_0x82ba77['error'][_0xf2c4('0x24')]===0x1f4){logger[_0xf2c4('0x23')](_0xf2c4('0x1e'),_0x19ad79,_0x82ba77['error'][_0xf2c4('0x25')]);return _0x23c4ad(_0x82ba77[_0xf2c4('0x23')]['message']);}logger[_0xf2c4('0x23')](_0xf2c4('0x1e'),_0x19ad79,_0x82ba77[_0xf2c4('0x23')][_0xf2c4('0x25')]);return _0x33d1f4(_0x82ba77[_0xf2c4('0x23')][_0xf2c4('0x25')]);}else{logger['info'](_0xf2c4('0x1e'),_0x19ad79,_0xf2c4('0x1f'));_0x33d1f4(_0x82ba77[_0xf2c4('0x26')][_0xf2c4('0x25')]);}})[_0xf2c4('0x27')](function(_0x2dfa74){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x19ad79,_0x2dfa74);_0x23c4ad(_0x2dfa74);});});}function respondWithStatusCode(_0x5e6a16,_0x2cb507){_0x2cb507=_0x2cb507||0xcc;return function(_0x4d8727){if(_0x4d8727){return _0x5e6a16[_0xf2c4('0x28')](_0x2cb507);}return _0x5e6a16[_0xf2c4('0x29')](_0x2cb507)['end']();};}function respondWithResult(_0x260187,_0x4a0bd5){_0x4a0bd5=_0x4a0bd5||0xc8;return function(_0x1850f0){if(_0x1850f0){return _0x260187[_0xf2c4('0x29')](_0x4a0bd5)['json'](_0x1850f0);}};}function respondWithFilteredResult(_0x5a1c25,_0x4db86e){return function(_0x26d1e2){if(_0x26d1e2){var _0x3b4701=typeof _0x4db86e[_0xf2c4('0x2a')]===_0xf2c4('0x2b')&&typeof _0x4db86e[_0xf2c4('0x2c')]==='undefined';var _0x168f72=_0x26d1e2[_0xf2c4('0x2d')];var _0x5dc518=_0x3b4701?0x0:_0x4db86e[_0xf2c4('0x2a')];var _0x3e102a=_0x3b4701?_0x26d1e2[_0xf2c4('0x2d')]:_0x4db86e['offset']+_0x4db86e[_0xf2c4('0x2c')];var _0x317b41;if(_0x3e102a>=_0x168f72){_0x3e102a=_0x168f72;_0x317b41=0xc8;}else{_0x317b41=0xce;}_0x5a1c25[_0xf2c4('0x29')](_0x317b41);return _0x5a1c25[_0xf2c4('0x2e')](_0xf2c4('0x2f'),_0x5dc518+'-'+_0x3e102a+'/'+_0x168f72)['json'](_0x26d1e2);}return null;};}function patchUpdates(_0x19a4c9){return function(_0x4ad308){try{jsonpatch['apply'](_0x4ad308,_0x19a4c9,!![]);}catch(_0x42bd89){return BPromise[_0xf2c4('0x30')](_0x42bd89);}return _0x4ad308[_0xf2c4('0x31')]();};}function saveUpdates(_0x39d209,_0x3b6bf3){return function(_0x5e003b){if(_0x5e003b){return _0x5e003b[_0xf2c4('0x32')](_0x39d209)['then'](function(_0x5d744e){return _0x5d744e;});}return null;};}function removeEntity(_0x257291,_0x2a2983){return function(_0x24a8b5){if(_0x24a8b5){return _0x24a8b5[_0xf2c4('0x33')]()[_0xf2c4('0x1d')](function(){_0x257291['status'](0xcc)[_0xf2c4('0x34')]();});}};}function handleEntityNotFound(_0x5e1591,_0x24d6d3){return function(_0x2a0c5f){if(!_0x2a0c5f){_0x5e1591[_0xf2c4('0x28')](0x194);}return _0x2a0c5f;};}function handleError(_0x591511,_0x424078){_0x424078=_0x424078||0x1f4;return function(_0x6d1830){logger[_0xf2c4('0x23')](_0x6d1830[_0xf2c4('0x35')]);if(_0x6d1830['name']){delete _0x6d1830[_0xf2c4('0x36')];}_0x591511[_0xf2c4('0x29')](_0x424078)[_0xf2c4('0x37')](_0x6d1830);};}exports['index']=function(_0x440e01,_0x3c792c){var _0x1e8e15={},_0x46fba9={},_0x486a4f={'count':0x0,'rows':[]};var _0x2423bc=_[_0xf2c4('0x38')](db[_0xf2c4('0x39')][_0xf2c4('0x3a')],function(_0x4fe30a){return{'name':_0x4fe30a[_0xf2c4('0x3b')],'type':_0x4fe30a['type']['key']};});_0x46fba9[_0xf2c4('0x3c')]=_[_0xf2c4('0x38')](_0x2423bc,_0xf2c4('0x36'));_0x46fba9[_0xf2c4('0x3d')]=_[_0xf2c4('0x3e')](_0x440e01[_0xf2c4('0x3d')]);_0x46fba9[_0xf2c4('0x3f')]=_['intersection'](_0x46fba9[_0xf2c4('0x3c')],_0x46fba9[_0xf2c4('0x3d')]);_0x1e8e15['attributes']=_[_0xf2c4('0x40')](_0x46fba9[_0xf2c4('0x3c')],qs['fields'](_0x440e01['query'][_0xf2c4('0x41')]));_0x1e8e15['attributes']=_0x1e8e15[_0xf2c4('0x42')][_0xf2c4('0x43')]?_0x1e8e15[_0xf2c4('0x42')]:_0x46fba9[_0xf2c4('0x3c')];if(!_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x44')](_0xf2c4('0x45'))){_0x1e8e15[_0xf2c4('0x2c')]=qs[_0xf2c4('0x2c')](_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x2c')]);_0x1e8e15[_0xf2c4('0x2a')]=qs['offset'](_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x2a')]);}_0x1e8e15[_0xf2c4('0x46')]=qs[_0xf2c4('0x47')](_0x440e01['query'][_0xf2c4('0x47')]);_0x1e8e15[_0xf2c4('0x48')]=qs[_0xf2c4('0x3f')](_[_0xf2c4('0x49')](_0x440e01['query'],_0x46fba9[_0xf2c4('0x3f')]),_0x2423bc);if(_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x4a')]){_0x1e8e15[_0xf2c4('0x48')]=_[_0xf2c4('0x4b')](_0x1e8e15[_0xf2c4('0x48')],{'$or':_['map'](_0x2423bc,function(_0x352f87){if(_0x352f87['type']!==_0xf2c4('0x4c')){var _0x202f34={};_0x202f34[_0x352f87['name']]={'$like':'%'+_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x4a')]+'%'};return _0x202f34;}})});}_0x1e8e15=_[_0xf2c4('0x4b')]({},_0x1e8e15,_0x440e01['options']);var _0x1ad0ba={'where':_0x1e8e15['where']};return db[_0xf2c4('0x39')][_0xf2c4('0x2d')](_0x1ad0ba)[_0xf2c4('0x1d')](function(_0x522c87){_0x486a4f[_0xf2c4('0x2d')]=_0x522c87;if(_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x4d')]){_0x1e8e15[_0xf2c4('0x4e')]=[{'all':!![]}];}return db[_0xf2c4('0x39')]['findAll'](_0x1e8e15);})[_0xf2c4('0x1d')](function(_0x2c9fc1){_0x486a4f[_0xf2c4('0x4f')]=_0x2c9fc1;return _0x486a4f;})[_0xf2c4('0x1d')](respondWithFilteredResult(_0x3c792c,_0x1e8e15))['catch'](handleError(_0x3c792c,null));};exports[_0xf2c4('0x50')]=function(_0x1119b1,_0x575be8){var _0x5b5010={'raw':!![],'where':{'id':_0x1119b1[_0xf2c4('0x51')]['id']}},_0x524b8b={};_0x524b8b[_0xf2c4('0x3c')]=_['keys'](db[_0xf2c4('0x39')][_0xf2c4('0x3a')]);_0x524b8b[_0xf2c4('0x3d')]=_[_0xf2c4('0x3e')](_0x1119b1[_0xf2c4('0x3d')]);_0x524b8b[_0xf2c4('0x3f')]=_[_0xf2c4('0x40')](_0x524b8b['model'],_0x524b8b[_0xf2c4('0x3d')]);_0x5b5010['attributes']=_['intersection'](_0x524b8b[_0xf2c4('0x3c')],qs[_0xf2c4('0x41')](_0x1119b1['query']['fields']));_0x5b5010['attributes']=_0x5b5010[_0xf2c4('0x42')][_0xf2c4('0x43')]?_0x5b5010['attributes']:_0x524b8b[_0xf2c4('0x3c')];if(_0x1119b1['query'][_0xf2c4('0x4d')]){_0x5b5010[_0xf2c4('0x4e')]=[{'all':!![]}];}_0x5b5010=_[_0xf2c4('0x4b')]({},_0x5b5010,_0x1119b1[_0xf2c4('0x52')]);return db[_0xf2c4('0x39')]['find'](_0x5b5010)[_0xf2c4('0x1d')](handleEntityNotFound(_0x575be8,null))[_0xf2c4('0x1d')](respondWithResult(_0x575be8,null))[_0xf2c4('0x27')](handleError(_0x575be8,null));};exports[_0xf2c4('0x53')]=function(_0x4b552d,_0x49fe00){return db[_0xf2c4('0x39')]['create'](_0x4b552d[_0xf2c4('0x54')],{})[_0xf2c4('0x1d')](respondWithResult(_0x49fe00,0xc9))[_0xf2c4('0x27')](handleError(_0x49fe00,null));};exports['update']=function(_0x4eb2ec,_0x1bc89f){if(_0x4eb2ec[_0xf2c4('0x54')]['id']){delete _0x4eb2ec[_0xf2c4('0x54')]['id'];}return db[_0xf2c4('0x39')][_0xf2c4('0x55')]({'where':{'id':_0x4eb2ec[_0xf2c4('0x51')]['id']}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1bc89f,null))[_0xf2c4('0x1d')](saveUpdates(_0x4eb2ec[_0xf2c4('0x54')],null))[_0xf2c4('0x1d')](respondWithResult(_0x1bc89f,null))[_0xf2c4('0x27')](handleError(_0x1bc89f,null));};exports[_0xf2c4('0x33')]=function(_0x1ac939,_0x1e6953){return db['OpenchannelMessage']['find']({'where':{'id':_0x1ac939['params']['id']}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1e6953,null))[_0xf2c4('0x1d')](removeEntity(_0x1e6953,null))[_0xf2c4('0x27')](handleError(_0x1e6953,null));};exports[_0xf2c4('0x56')]=function(_0x27d1e6,_0x16dc76){return db[_0xf2c4('0x39')][_0xf2c4('0x56')]()[_0xf2c4('0x1d')](respondWithResult(_0x16dc76,null))[_0xf2c4('0x27')](handleError(_0x16dc76,null));};var interaction_log=require(_0xf2c4('0xf'))('openchannel-interactions');exports['accept']=function(_0x3c36d0,_0x1a3c5f,_0x59db18){var _0x1c27dd={'agent':{},'channel':_0xf2c4('0x57')};if(_0x3c36d0[_0xf2c4('0x54')]['id']){delete _0x3c36d0[_0xf2c4('0x54')]['id'];}_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x58')]=!![];_0x3c36d0[_0xf2c4('0x54')]['readAt']=moment()[_0xf2c4('0x59')](_0xf2c4('0x5a'));_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x5b')]=_0x3c36d0['body'][_0xf2c4('0x5b')]||_0x3c36d0[_0xf2c4('0x5c')]['id'];_0x1c27dd[_0xf2c4('0x5d')]['id']=_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x5b')];return db[_0xf2c4('0x39')][_0xf2c4('0x55')]({'where':{'id':_0x3c36d0[_0xf2c4('0x51')]['id'],'UserId':null}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1a3c5f,null))['then'](saveUpdates(_0x3c36d0[_0xf2c4('0x54')],null))[_0xf2c4('0x1d')](function(_0x3d2ccd){if(_0x3d2ccd){_0x1c27dd[_0xf2c4('0x25')]=_0x3d2ccd[_0xf2c4('0x5e')]({'plain':!![]});return db[_0xf2c4('0x5f')]['find']({'where':{'id':_0x3d2ccd[_0xf2c4('0x60')]}});}return null;})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1a3c5f,null))[_0xf2c4('0x1d')](function(_0x419ea3){if(_0x419ea3){return _0x419ea3[_0xf2c4('0x32')]({'UserId':_0x3c36d0[_0xf2c4('0x54')]['UserId'],'read1stAt':_[_0xf2c4('0x61')](_0x419ea3[_0xf2c4('0x62')])?moment()[_0xf2c4('0x59')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x6499fb){if(_0x6499fb){_0x1c27dd['interaction']=_0x6499fb[_0xf2c4('0x5e')]({'plain':!![]});interaction_log[_0xf2c4('0x63')](_0xf2c4('0x64'),_0x3c36d0['user']['id'],_0x3c36d0[_0xf2c4('0x5c')][_0xf2c4('0x36')],_0x3c36d0[_0xf2c4('0x5c')]['role'],_0x1c27dd[_0xf2c4('0x65')]['id'],_0x3c36d0[_0xf2c4('0x54')]?JSON[_0xf2c4('0x22')](_0x3c36d0['body']):'null');return respondWithRpcPromise(_0xf2c4('0x66'),_0xf2c4('0x67'),_0x1c27dd);}return null;})['then'](function(_0x51e814){var _0x53f4e0=_0xf2c4('0x68')+_0x51e814['message'][_0xf2c4('0x69')];return db['sequelize'][_0xf2c4('0x3d')](_0x53f4e0,{'type':db['Sequelize'][_0xf2c4('0x6a')]['SELECT'],'raw':!![]})['then'](function(_0x538d0e){return _0x538d0e;});})[_0xf2c4('0x1d')](function(_0xf9c221){if(_0xf9c221){_0x1c27dd[_0xf2c4('0x25')][_0xf2c4('0x6b')]=_0xf9c221[0x0];if(!_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x5b')])return;return db[_0xf2c4('0x6c')][_0xf2c4('0x55')]({'where':{'id':_0x3c36d0['body'][_0xf2c4('0x5b')],'role':'agent'},'attributes':['id',_0xf2c4('0x36'),_0xf2c4('0x6d'),_0xf2c4('0x6e'),'internal'],'raw':!![]});}return null;})[_0xf2c4('0x1d')](function(_0x5b2a59){if(!_0x5b2a59)return null;_0x1c27dd['message'][_0xf2c4('0x5d')]=_0x5b2a59;return _0x1c27dd;})[_0xf2c4('0x1d')](function(_0xfc88e9){if(_0xfc88e9){if(_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x6f')]){_0x1c27dd[_0xf2c4('0x25')]['interface']=util[_0xf2c4('0x59')](_0xf2c4('0x70'),_0x3c36d0[_0xf2c4('0x5c')][_0xf2c4('0x36')]);_0x1c27dd[_0xf2c4('0x25')][_0xf2c4('0x71')]=_0x1c27dd['channel'];_0x1c27dd[_0xf2c4('0x25')]['event']='accept';return respondWithRpcPromise(_0xf2c4('0x72'),'EventManager',{'event':'acceptmessage','message':_0x1c27dd[_0xf2c4('0x25')]},client9002)[_0xf2c4('0x1d')](function(){return _0x1c27dd;});}return _0x1c27dd;}return null;})[_0xf2c4('0x1d')](respondWithResult(_0x1a3c5f,null))[_0xf2c4('0x27')](handleError(_0x1a3c5f,null));};var interaction_log=require(_0xf2c4('0xf'))(_0xf2c4('0x73'));exports[_0xf2c4('0x30')]=function(_0x6065dd,_0x8a87eb,_0x57ce69){var _0x853d7d={'agent':{},'channel':'openchannel'};if(_0x6065dd[_0xf2c4('0x54')]['id']){delete _0x6065dd['body']['id'];}_0x6065dd[_0xf2c4('0x54')]['UserId']=_0x6065dd['body'][_0xf2c4('0x5b')]||_0x6065dd[_0xf2c4('0x5c')]['id'];_0x853d7d[_0xf2c4('0x5d')]['id']=_0x6065dd[_0xf2c4('0x54')]['UserId'];return db[_0xf2c4('0x39')][_0xf2c4('0x55')]({'where':{'id':_0x6065dd[_0xf2c4('0x51')]['id'],'UserId':null}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x8a87eb,null))['then'](function(_0x4bc82e){if(_0x4bc82e){_0x853d7d[_0xf2c4('0x25')]=_0x4bc82e[_0xf2c4('0x5e')]({'plain':!![]});return db['OpenchannelInteraction'][_0xf2c4('0x55')]({'where':{'id':_0x4bc82e[_0xf2c4('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x8a87eb,null))[_0xf2c4('0x1d')](function(_0x565b00){if(_0x565b00){_0x853d7d[_0xf2c4('0x65')]=_0x565b00[_0xf2c4('0x5e')]({'plain':!![]});interaction_log['info'](_0xf2c4('0x74'),_0x6065dd[_0xf2c4('0x5c')]['id'],_0x6065dd[_0xf2c4('0x5c')][_0xf2c4('0x36')],_0x6065dd[_0xf2c4('0x5c')][_0xf2c4('0x75')],_0x853d7d[_0xf2c4('0x65')]['id'],_0x6065dd[_0xf2c4('0x54')]?JSON[_0xf2c4('0x22')](_0x6065dd[_0xf2c4('0x54')]):'null');return respondWithRpcPromise('RejectMessage',_0xf2c4('0x76'),_0x853d7d);}return null;})[_0xf2c4('0x1d')](function(_0x206748){var _0x3924ba=_0xf2c4('0x68')+_0x206748[_0xf2c4('0x25')][_0xf2c4('0x69')];return db[_0xf2c4('0x77')][_0xf2c4('0x3d')](_0x3924ba,{'type':db[_0xf2c4('0x78')][_0xf2c4('0x6a')]['SELECT'],'raw':!![]})['then'](function(_0x47737b){return _0x47737b;});})[_0xf2c4('0x1d')](function(_0x3fc185){if(_0x3fc185){_0x853d7d['message'][_0xf2c4('0x6b')]=_0x3fc185[0x0];if(!_0x6065dd[_0xf2c4('0x54')][_0xf2c4('0x5b')])return;return db[_0xf2c4('0x6c')]['find']({'where':{'id':_0x6065dd[_0xf2c4('0x54')][_0xf2c4('0x5b')],'role':_0xf2c4('0x5d')},'attributes':['id',_0xf2c4('0x36'),_0xf2c4('0x6d'),_0xf2c4('0x6e'),_0xf2c4('0x79')],'raw':!![]});}return null;})[_0xf2c4('0x1d')](function(_0x23a6f8){if(!_0x23a6f8)return null;_0x853d7d[_0xf2c4('0x25')][_0xf2c4('0x5d')]=_0x23a6f8;return _0x853d7d;})[_0xf2c4('0x1d')](function(_0x8f150a){if(_0x8f150a){_0x8f150a['message'][_0xf2c4('0x7a')]=util[_0xf2c4('0x59')](_0xf2c4('0x70'),_0x6065dd[_0xf2c4('0x5c')][_0xf2c4('0x36')]);_0x8f150a[_0xf2c4('0x25')]['channel']=_0x853d7d['channel'];_0x8f150a['message'][_0xf2c4('0x7b')]=_0xf2c4('0x30');respondWithRpcPromise('EventManager',_0xf2c4('0x72'),{'event':_0xf2c4('0x7c'),'message':_0x8f150a['message']},client9002);return _0x853d7d;}return null;})[_0xf2c4('0x1d')](respondWithResult(_0x8a87eb,null))['catch'](handleError(_0x8a87eb,null));};
\ No newline at end of file
+var _0x9030=['user','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','reject','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','ContactId','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','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/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelMessage.socket','client','http','request','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','index','map','OpenchannelMessage','rawAttributes','type','key','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','length','find','create','body','params','destroy','describe','openchannel-interactions','accept','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s'];(function(_0x473bd8,_0x248764){var _0x1eb569=function(_0x1f1e80){while(--_0x1f1e80){_0x473bd8['push'](_0x473bd8['shift']());}};_0x1eb569(++_0x248764);}(_0x9030,0x121));var _0x0903=function(_0x5d6176,_0x557ccb){_0x5d6176=_0x5d6176-0x0;var _0x2e1275=_0x9030[_0x5d6176];return _0x2e1275;};'use strict';var emlformat=require(_0x0903('0x0'));var rimraf=require(_0x0903('0x1'));var zipdir=require(_0x0903('0x2'));var jsonpatch=require(_0x0903('0x3'));var rp=require('request-promise');var moment=require(_0x0903('0x4'));var BPromise=require(_0x0903('0x5'));var Mustache=require(_0x0903('0x6'));var util=require(_0x0903('0x7'));var path=require(_0x0903('0x8'));var sox=require(_0x0903('0x9'));var csv=require(_0x0903('0xa'));var ejs=require(_0x0903('0xb'));var fs=require('fs');var fs_extra=require(_0x0903('0xc'));var _=require(_0x0903('0xd'));var squel=require('squel');var crypto=require(_0x0903('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0903('0xf'));var toCsv=require(_0x0903('0xa'));var querystring=require('querystring');var Papa=require(_0x0903('0x10'));var Redis=require(_0x0903('0x11'));var authService=require(_0x0903('0x12'));var qs=require(_0x0903('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0903('0x14'));var logger=require(_0x0903('0x15'))(_0x0903('0x16'));var utils=require('../../config/utils');var config=require(_0x0903('0x17'));var licenseUtil=require(_0x0903('0x18'));var db=require(_0x0903('0x19'))['db'];config[_0x0903('0x1a')]=_[_0x0903('0x1b')](config[_0x0903('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x0903('0x1c'))(new Redis(config[_0x0903('0x1a')]));require(_0x0903('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x0903('0x1e')][_0x0903('0x1f')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2a0a4b,_0x35d957,_0x23efdb,_0xefaca3){return new BPromise(function(_0x27f87a,_0x381e22){var _0x508bee=_0xefaca3||client;return _0x508bee[_0x0903('0x20')](_0x2a0a4b,_0x23efdb)['then'](function(_0x443e14){logger['info'](_0x0903('0x21'),_0x35d957,'request\x20sent');logger[_0x0903('0x22')](_0x0903('0x23'),_0x35d957,_0x0903('0x24'),JSON[_0x0903('0x25')](_0x443e14));if(_0x443e14[_0x0903('0x26')]){if(_0x443e14[_0x0903('0x26')][_0x0903('0x27')]===0x1f4){logger[_0x0903('0x26')](_0x0903('0x21'),_0x35d957,_0x443e14[_0x0903('0x26')][_0x0903('0x28')]);return _0x381e22(_0x443e14[_0x0903('0x26')]['message']);}logger[_0x0903('0x26')](_0x0903('0x21'),_0x35d957,_0x443e14[_0x0903('0x26')][_0x0903('0x28')]);return _0x27f87a(_0x443e14[_0x0903('0x26')][_0x0903('0x28')]);}else{logger[_0x0903('0x29')](_0x0903('0x21'),_0x35d957,_0x0903('0x24'));_0x27f87a(_0x443e14['result'][_0x0903('0x28')]);}})[_0x0903('0x2a')](function(_0x4b9d87){logger[_0x0903('0x26')](_0x0903('0x21'),_0x35d957,_0x4b9d87);_0x381e22(_0x4b9d87);});});}function respondWithStatusCode(_0x801fd6,_0xf64fed){_0xf64fed=_0xf64fed||0xcc;return function(_0x3cb247){if(_0x3cb247){return _0x801fd6[_0x0903('0x2b')](_0xf64fed);}return _0x801fd6[_0x0903('0x2c')](_0xf64fed)[_0x0903('0x2d')]();};}function respondWithResult(_0x559a51,_0x2f41be){_0x2f41be=_0x2f41be||0xc8;return function(_0x58480f){if(_0x58480f){return _0x559a51[_0x0903('0x2c')](_0x2f41be)[_0x0903('0x2e')](_0x58480f);}};}function respondWithFilteredResult(_0x1e3752,_0x11817c){return function(_0x22b9c3){if(_0x22b9c3){var _0x5a8eb5=typeof _0x11817c[_0x0903('0x2f')]===_0x0903('0x30')&&typeof _0x11817c[_0x0903('0x31')]===_0x0903('0x30');var _0x5ec319=_0x22b9c3[_0x0903('0x32')];var _0x288e4d=_0x5a8eb5?0x0:_0x11817c[_0x0903('0x2f')];var _0x20beda=_0x5a8eb5?_0x22b9c3['count']:_0x11817c[_0x0903('0x2f')]+_0x11817c[_0x0903('0x31')];var _0x484011;if(_0x20beda>=_0x5ec319){_0x20beda=_0x5ec319;_0x484011=0xc8;}else{_0x484011=0xce;}_0x1e3752[_0x0903('0x2c')](_0x484011);return _0x1e3752[_0x0903('0x33')](_0x0903('0x34'),_0x288e4d+'-'+_0x20beda+'/'+_0x5ec319)['json'](_0x22b9c3);}return null;};}function patchUpdates(_0x3564e9){return function(_0x179a25){try{jsonpatch[_0x0903('0x35')](_0x179a25,_0x3564e9,!![]);}catch(_0x1377e1){return BPromise['reject'](_0x1377e1);}return _0x179a25[_0x0903('0x36')]();};}function saveUpdates(_0xabbf3f,_0xccaa03){return function(_0x46bb44){if(_0x46bb44){return _0x46bb44[_0x0903('0x37')](_0xabbf3f)['then'](function(_0x55c064){return _0x55c064;});}return null;};}function removeEntity(_0x523303,_0x2f76a5){return function(_0x3701b2){if(_0x3701b2){return _0x3701b2['destroy']()[_0x0903('0x38')](function(){_0x523303[_0x0903('0x2c')](0xcc)[_0x0903('0x2d')]();});}};}function handleEntityNotFound(_0x49524d,_0x557b9e){return function(_0x3d31cc){if(!_0x3d31cc){_0x49524d[_0x0903('0x2b')](0x194);}return _0x3d31cc;};}function handleError(_0x1d9a04,_0x491a4d){_0x491a4d=_0x491a4d||0x1f4;return function(_0x44e5cd){logger[_0x0903('0x26')](_0x44e5cd[_0x0903('0x39')]);if(_0x44e5cd[_0x0903('0x3a')]){delete _0x44e5cd[_0x0903('0x3a')];}_0x1d9a04[_0x0903('0x2c')](_0x491a4d)['send'](_0x44e5cd);};}exports[_0x0903('0x3b')]=function(_0x3c7837,_0x118b8e){var _0x5be2eb={},_0x580442={},_0x1f2fdd={'count':0x0,'rows':[]};var _0x4daf15=_[_0x0903('0x3c')](db[_0x0903('0x3d')][_0x0903('0x3e')],function(_0x5b79fe){return{'name':_0x5b79fe['fieldName'],'type':_0x5b79fe[_0x0903('0x3f')][_0x0903('0x40')]};});_0x580442[_0x0903('0x41')]=_[_0x0903('0x3c')](_0x4daf15,_0x0903('0x3a'));_0x580442['query']=_[_0x0903('0x42')](_0x3c7837['query']);_0x580442[_0x0903('0x43')]=_[_0x0903('0x44')](_0x580442[_0x0903('0x41')],_0x580442[_0x0903('0x45')]);_0x5be2eb['attributes']=_[_0x0903('0x44')](_0x580442['model'],qs[_0x0903('0x46')](_0x3c7837[_0x0903('0x45')][_0x0903('0x46')]));_0x5be2eb[_0x0903('0x47')]=_0x5be2eb[_0x0903('0x47')]['length']?_0x5be2eb[_0x0903('0x47')]:_0x580442[_0x0903('0x41')];if(!_0x3c7837[_0x0903('0x45')][_0x0903('0x48')]('nolimit')){_0x5be2eb[_0x0903('0x31')]=qs['limit'](_0x3c7837[_0x0903('0x45')][_0x0903('0x31')]);_0x5be2eb['offset']=qs[_0x0903('0x2f')](_0x3c7837['query'][_0x0903('0x2f')]);}_0x5be2eb[_0x0903('0x49')]=qs[_0x0903('0x4a')](_0x3c7837[_0x0903('0x45')]['sort']);_0x5be2eb[_0x0903('0x4b')]=qs[_0x0903('0x43')](_[_0x0903('0x4c')](_0x3c7837[_0x0903('0x45')],_0x580442[_0x0903('0x43')]),_0x4daf15);if(_0x3c7837[_0x0903('0x45')][_0x0903('0x4d')]){_0x5be2eb['where']=_[_0x0903('0x4e')](_0x5be2eb[_0x0903('0x4b')],{'$or':_['map'](_0x4daf15,function(_0x309670){if(_0x309670[_0x0903('0x3f')]!==_0x0903('0x4f')){var _0x4e1e45={};_0x4e1e45[_0x309670['name']]={'$like':'%'+_0x3c7837[_0x0903('0x45')][_0x0903('0x4d')]+'%'};return _0x4e1e45;}})});}_0x5be2eb=_[_0x0903('0x4e')]({},_0x5be2eb,_0x3c7837[_0x0903('0x50')]);var _0x191f78={'where':_0x5be2eb[_0x0903('0x4b')]};return db[_0x0903('0x3d')]['count'](_0x191f78)[_0x0903('0x38')](function(_0x181d23){_0x1f2fdd[_0x0903('0x32')]=_0x181d23;if(_0x3c7837[_0x0903('0x45')][_0x0903('0x51')]){_0x5be2eb[_0x0903('0x52')]=[{'all':!![]}];}return db[_0x0903('0x3d')]['findAll'](_0x5be2eb);})[_0x0903('0x38')](function(_0x4ab82d){_0x1f2fdd[_0x0903('0x53')]=_0x4ab82d;return _0x1f2fdd;})[_0x0903('0x38')](respondWithFilteredResult(_0x118b8e,_0x5be2eb))[_0x0903('0x2a')](handleError(_0x118b8e,null));};exports[_0x0903('0x54')]=function(_0x5aaac6,_0x2bd9e1){var _0x193390={'raw':!![],'where':{'id':_0x5aaac6['params']['id']}},_0x3d6659={};_0x3d6659[_0x0903('0x41')]=_['keys'](db[_0x0903('0x3d')][_0x0903('0x3e')]);_0x3d6659[_0x0903('0x45')]=_[_0x0903('0x42')](_0x5aaac6[_0x0903('0x45')]);_0x3d6659[_0x0903('0x43')]=_['intersection'](_0x3d6659['model'],_0x3d6659[_0x0903('0x45')]);_0x193390['attributes']=_[_0x0903('0x44')](_0x3d6659['model'],qs[_0x0903('0x46')](_0x5aaac6[_0x0903('0x45')][_0x0903('0x46')]));_0x193390[_0x0903('0x47')]=_0x193390['attributes'][_0x0903('0x55')]?_0x193390[_0x0903('0x47')]:_0x3d6659[_0x0903('0x41')];if(_0x5aaac6['query'][_0x0903('0x51')]){_0x193390['include']=[{'all':!![]}];}_0x193390=_[_0x0903('0x4e')]({},_0x193390,_0x5aaac6[_0x0903('0x50')]);return db[_0x0903('0x3d')][_0x0903('0x56')](_0x193390)[_0x0903('0x38')](handleEntityNotFound(_0x2bd9e1,null))['then'](respondWithResult(_0x2bd9e1,null))[_0x0903('0x2a')](handleError(_0x2bd9e1,null));};exports[_0x0903('0x57')]=function(_0x7bb73,_0x13e79e){return db[_0x0903('0x3d')][_0x0903('0x57')](_0x7bb73[_0x0903('0x58')],{})[_0x0903('0x38')](respondWithResult(_0x13e79e,0xc9))['catch'](handleError(_0x13e79e,null));};exports[_0x0903('0x37')]=function(_0x586f05,_0x43c51c){if(_0x586f05[_0x0903('0x58')]['id']){delete _0x586f05['body']['id'];}return db['OpenchannelMessage'][_0x0903('0x56')]({'where':{'id':_0x586f05[_0x0903('0x59')]['id']}})[_0x0903('0x38')](handleEntityNotFound(_0x43c51c,null))[_0x0903('0x38')](saveUpdates(_0x586f05[_0x0903('0x58')],null))['then'](respondWithResult(_0x43c51c,null))['catch'](handleError(_0x43c51c,null));};exports[_0x0903('0x5a')]=function(_0x1fe708,_0x143e73){return db[_0x0903('0x3d')][_0x0903('0x56')]({'where':{'id':_0x1fe708['params']['id']}})[_0x0903('0x38')](handleEntityNotFound(_0x143e73,null))[_0x0903('0x38')](removeEntity(_0x143e73,null))[_0x0903('0x2a')](handleError(_0x143e73,null));};exports['describe']=function(_0x9e614e,_0x5a8416){return db[_0x0903('0x3d')][_0x0903('0x5b')]()[_0x0903('0x38')](respondWithResult(_0x5a8416,null))['catch'](handleError(_0x5a8416,null));};var interaction_log=require(_0x0903('0x15'))(_0x0903('0x5c'));exports[_0x0903('0x5d')]=function(_0x498538,_0x42f1cc,_0x4528f7){var _0x447079={'agent':{},'channel':'openchannel'};if(_0x498538[_0x0903('0x58')]['id']){delete _0x498538[_0x0903('0x58')]['id'];}_0x498538[_0x0903('0x58')]['read']=!![];_0x498538[_0x0903('0x58')]['readAt']=moment()[_0x0903('0x5e')](_0x0903('0x5f'));_0x498538['body'][_0x0903('0x60')]=_0x498538[_0x0903('0x58')][_0x0903('0x60')]||_0x498538['user']['id'];_0x447079[_0x0903('0x61')]['id']=_0x498538[_0x0903('0x58')]['UserId'];return db[_0x0903('0x3d')][_0x0903('0x56')]({'where':{'id':_0x498538['params']['id'],'UserId':null}})[_0x0903('0x38')](handleEntityNotFound(_0x42f1cc,null))[_0x0903('0x38')](saveUpdates(_0x498538['body'],null))[_0x0903('0x38')](function(_0x5a25c7){if(_0x5a25c7){_0x447079[_0x0903('0x28')]=_0x5a25c7[_0x0903('0x62')]({'plain':!![]});return db[_0x0903('0x63')]['find']({'where':{'id':_0x5a25c7[_0x0903('0x64')]}});}return null;})[_0x0903('0x38')](handleEntityNotFound(_0x42f1cc,null))[_0x0903('0x38')](function(_0x3997f7){if(_0x3997f7){return _0x3997f7[_0x0903('0x37')]({'UserId':_0x498538[_0x0903('0x58')]['UserId'],'read1stAt':_['isNil'](_0x3997f7[_0x0903('0x65')])?moment()[_0x0903('0x5e')](_0x0903('0x5f')):undefined});}return null;})[_0x0903('0x38')](function(_0x447476){if(_0x447476){_0x447079[_0x0903('0x66')]=_0x447476['get']({'plain':!![]});interaction_log[_0x0903('0x29')](_0x0903('0x67'),_0x498538[_0x0903('0x68')]['id'],_0x498538[_0x0903('0x68')][_0x0903('0x3a')],_0x498538[_0x0903('0x68')]['role'],_0x447079[_0x0903('0x66')]['id'],_0x498538['body']?JSON['stringify'](_0x498538[_0x0903('0x58')]):_0x0903('0x69'));return respondWithRpcPromise(_0x0903('0x6a'),'acceptMessage',_0x447079);}return null;})[_0x0903('0x38')](function(_0xd8b3ae){var _0x4e0252=_0x0903('0x6b')+_0xd8b3ae[_0x0903('0x28')]['ContactId'];return db[_0x0903('0x6c')]['query'](_0x4e0252,{'type':db[_0x0903('0x6d')][_0x0903('0x6e')][_0x0903('0x6f')],'raw':!![]})[_0x0903('0x38')](function(_0x421768){return _0x421768;});})[_0x0903('0x38')](function(_0x4b922f){if(_0x4b922f){_0x447079['message'][_0x0903('0x70')]=_0x4b922f[0x0];if(!_0x498538[_0x0903('0x58')][_0x0903('0x60')])return;return db[_0x0903('0x71')][_0x0903('0x56')]({'where':{'id':_0x498538['body']['UserId'],'role':_0x0903('0x61')},'attributes':['id',_0x0903('0x3a'),_0x0903('0x72'),_0x0903('0x73'),_0x0903('0x74')],'raw':!![]});}return null;})['then'](function(_0xe6a9cd){if(!_0xe6a9cd)return null;_0x447079['message'][_0x0903('0x61')]=_0xe6a9cd;return _0x447079;})[_0x0903('0x38')](function(_0x329831){if(_0x329831){if(_0x498538['body'][_0x0903('0x75')]){_0x447079['message'][_0x0903('0x76')]=util[_0x0903('0x5e')](_0x0903('0x77'),_0x498538['user'][_0x0903('0x3a')]);_0x447079[_0x0903('0x28')][_0x0903('0x78')]=_0x447079[_0x0903('0x78')];_0x447079[_0x0903('0x28')][_0x0903('0x79')]=_0x447079[_0x0903('0x78')];_0x447079[_0x0903('0x28')][_0x0903('0x7a')]=_0x0903('0x5d');return respondWithRpcPromise('EventManager',_0x0903('0x7b'),{'event':'acceptmessage','message':_0x447079[_0x0903('0x28')]},client9002)[_0x0903('0x38')](function(){return _0x447079;});}return _0x447079;}return null;})[_0x0903('0x38')](respondWithResult(_0x42f1cc,null))['catch'](handleError(_0x42f1cc,null));};var interaction_log=require('../../config/logger')(_0x0903('0x5c'));exports[_0x0903('0x7c')]=function(_0xcfb176,_0x1658b5,_0xf9dc75){var _0x3d8da1={'agent':{},'channel':_0x0903('0x7d')};if(_0xcfb176[_0x0903('0x58')]['id']){delete _0xcfb176[_0x0903('0x58')]['id'];}_0xcfb176[_0x0903('0x58')][_0x0903('0x60')]=_0xcfb176[_0x0903('0x58')][_0x0903('0x60')]||_0xcfb176[_0x0903('0x68')]['id'];_0x3d8da1['agent']['id']=_0xcfb176[_0x0903('0x58')][_0x0903('0x60')];return db[_0x0903('0x3d')][_0x0903('0x56')]({'where':{'id':_0xcfb176[_0x0903('0x59')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1658b5,null))['then'](function(_0x42c9ba){if(_0x42c9ba){_0x3d8da1['message']=_0x42c9ba[_0x0903('0x62')]({'plain':!![]});return db[_0x0903('0x63')]['find']({'where':{'id':_0x42c9ba[_0x0903('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x1658b5,null))[_0x0903('0x38')](function(_0x42f87e){if(_0x42f87e){_0x3d8da1[_0x0903('0x66')]=_0x42f87e[_0x0903('0x62')]({'plain':!![]});interaction_log[_0x0903('0x29')](_0x0903('0x7e'),_0xcfb176[_0x0903('0x68')]['id'],_0xcfb176['user'][_0x0903('0x3a')],_0xcfb176[_0x0903('0x68')][_0x0903('0x7f')],_0x3d8da1['interaction']['id'],_0xcfb176[_0x0903('0x58')]?JSON[_0x0903('0x25')](_0xcfb176[_0x0903('0x58')]):_0x0903('0x69'));return respondWithRpcPromise('RejectMessage',_0x0903('0x80'),_0x3d8da1);}return null;})[_0x0903('0x38')](function(_0x1e7858){var _0x4c0d4a=_0x0903('0x6b')+_0x1e7858[_0x0903('0x28')][_0x0903('0x81')];return db[_0x0903('0x6c')][_0x0903('0x45')](_0x4c0d4a,{'type':db[_0x0903('0x6d')]['QueryTypes'][_0x0903('0x6f')],'raw':!![]})[_0x0903('0x38')](function(_0x29ce5e){return _0x29ce5e;});})[_0x0903('0x38')](function(_0x205dfd){if(_0x205dfd){_0x3d8da1['message'][_0x0903('0x70')]=_0x205dfd[0x0];if(!_0xcfb176[_0x0903('0x58')][_0x0903('0x60')])return;return db[_0x0903('0x71')]['find']({'where':{'id':_0xcfb176[_0x0903('0x58')][_0x0903('0x60')],'role':_0x0903('0x61')},'attributes':['id','name','fullname','email',_0x0903('0x74')],'raw':!![]});}return null;})[_0x0903('0x38')](function(_0x244555){if(!_0x244555)return null;_0x3d8da1[_0x0903('0x28')][_0x0903('0x61')]=_0x244555;return _0x3d8da1;})[_0x0903('0x38')](function(_0x4a3fd9){if(_0x4a3fd9){_0x4a3fd9[_0x0903('0x28')][_0x0903('0x76')]=util[_0x0903('0x5e')](_0x0903('0x77'),_0xcfb176[_0x0903('0x68')][_0x0903('0x3a')]);_0x4a3fd9[_0x0903('0x28')]['channel']=_0x3d8da1[_0x0903('0x78')];_0x4a3fd9[_0x0903('0x28')][_0x0903('0x79')]=_0x3d8da1[_0x0903('0x78')];_0x4a3fd9[_0x0903('0x28')][_0x0903('0x7a')]=_0x0903('0x7c');respondWithRpcPromise(_0x0903('0x7b'),_0x0903('0x7b'),{'event':_0x0903('0x82'),'message':_0x4a3fd9[_0x0903('0x28')]},client9002);return _0x3d8da1;}return null;})[_0x0903('0x38')](respondWithResult(_0x1658b5,null))['catch'](handleError(_0x1658b5,null));};
\ No newline at end of file
index ded2003..bcaca55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bed=['setMaxListeners','update','remove','hasOwnProperty','hook','../../mysqldb','OpenchannelMessage'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5bed,0x17f));var _0xd5be=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5bed[_0x164eca];return _0x2ce562;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0xd5be('0x0'))['db'][_0xd5be('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xd5be('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd5be('0x3'),'afterDestroy':_0xd5be('0x4')};function emitEvent(_0x4a278b){return function(_0x51cebf,_0x1fcb65,_0x47608d){OpenchannelMessageEvents['emit'](_0x4a278b+':'+_0x51cebf['id'],_0x51cebf);OpenchannelMessageEvents['emit'](_0x4a278b,_0x51cebf);_0x47608d(null);};}for(var e in events){if(events[_0xd5be('0x5')](e)){var event=events[e];OpenchannelMessage[_0xd5be('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xd35f=['emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x308ddd,_0x3a8401){var _0x3224c3=function(_0x230424){while(--_0x230424){_0x308ddd['push'](_0x308ddd['shift']());}};_0x3224c3(++_0x3a8401);}(_0xd35f,0x1c6));var _0xfd35=function(_0x2bb66c,_0x36c6c6){_0x2bb66c=_0x2bb66c-0x0;var _0x1e0f98=_0xd35f[_0x2bb66c];return _0x1e0f98;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0xfd35('0x0'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xfd35('0x1')](0x0);var events={'afterCreate':_0xfd35('0x2'),'afterUpdate':_0xfd35('0x3'),'afterDestroy':_0xfd35('0x4')};function emitEvent(_0x52fe9b){return function(_0x4edae4,_0x475bb5,_0x1685a3){OpenchannelMessageEvents[_0xfd35('0x5')](_0x52fe9b+':'+_0x4edae4['id'],_0x4edae4);OpenchannelMessageEvents[_0xfd35('0x5')](_0x52fe9b,_0x4edae4);_0x1685a3(null);};}for(var e in events){if(events[_0xfd35('0x6')](e)){var event=events[e];OpenchannelMessage[_0xfd35('0x7')](e,emitEvent(event));}}module[_0xfd35('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index 5c8ce20..a7fff36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','CmContact','describe','find','OpenchannelAccountId','Interactions','Contact','keys','info','OpenchannelMessage,\x20%s,\x20%s','format','replyUri','length','Interaction','omit','POST','method','GET','afterCreate','Message\x20%d\x20forwarded\x20to\x20%s','threadId','error','finally','utf8mb4','utf8mb4_unicode_ci','util','api','bluebird','request-promise'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x0972,0x64));var _0x2097=function(_0x7cef20,_0x45de2e){_0x7cef20=_0x7cef20-0x0;var _0x1940e3=_0x0972[_0x7cef20];return _0x1940e3;};'use strict';var _=require('lodash');var util=require(_0x2097('0x0'));var logger=require('../../config/logger')(_0x2097('0x1'));var moment=require('moment');var BPromise=require(_0x2097('0x2'));var rp=require(_0x2097('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2097('0x4'));var config=require(_0x2097('0x5'));var attributes=require(_0x2097('0x6'));module[_0x2097('0x7')]=function(_0x2f84d8,_0x11ed13){return _0x2f84d8[_0x2097('0x8')]('OpenchannelMessage',attributes,{'tableName':_0x2097('0x9'),'paranoid':![],'indexes':[{'name':_0x2097('0xa'),'fields':[_0x2097('0xb')],'type':_0x2097('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b8fac,_0x59d947,_0x2e0024){var _0x3b8b76=_0x2f84d8[_0x2097('0xd')];var _0x430754=_0x3b8fac[_0x2097('0xe')]({'plain':!![]});if(_0x430754[_0x2097('0xf')][_0x2097('0x10')]()==='in'||_0x430754[_0x2097('0xf')][_0x2097('0x10')]()===_0x2097('0x11')&&!_0x430754[_0x2097('0x12')]&&!_[_0x2097('0x13')](_0x430754[_0x2097('0x14')])){_0x3b8b76[_0x2097('0x15')][_0x2097('0x16')]({'where':{'id':_0x430754[_0x2097('0x17')]}})[_0x2097('0x18')](function(_0x1c9ef9){if(_0x1c9ef9){_0x1c9ef9[_0x2097('0x19')]({'lastMsgAt':_0x430754[_0x2097('0x1a')],'lastMsgDirection':_0x430754['direction'][_0x2097('0x10')]()});}})[_0x2097('0x1b')](function(_0x4d31bc){console['error'](_0x4d31bc);});}if(_0x430754['direction']===_0x2097('0x11')&&!_0x430754['secret']){var _0x28c35c;_0x3b8b76[_0x2097('0x1c')][_0x2097('0x1d')]()[_0x2097('0x18')](function(_0x44c584){return _0x3b8b76['OpenchannelAccount'][_0x2097('0x1e')]({'where':{'id':_0x430754[_0x2097('0x1f')]},'include':[{'model':_0x3b8b76[_0x2097('0x15')],'as':_0x2097('0x20'),'where':{'id':_0x430754[_0x2097('0x17')]},'limit':0x1,'include':[{'model':_0x3b8b76[_0x2097('0x1c')],'as':_0x2097('0x21'),'attributes':_[_0x2097('0x22')](_0x44c584)}]}]});})['then'](function(_0x4d957e){_0x28c35c=_0x4d957e[_0x2097('0xe')]({'plain':!![]});if(_0x28c35c&&_0x28c35c['replyUri']){logger[_0x2097('0x23')](_0x2097('0x24'),'afterCreate',util[_0x2097('0x25')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x430754['id'],_0x28c35c[_0x2097('0x26')]));if(_0x28c35c[_0x2097('0x20')]&&_0x28c35c[_0x2097('0x20')][_0x2097('0x27')]){_0x430754[_0x2097('0x28')]=_[_0x2097('0x29')](_0x28c35c['Interactions'][0x0],_0x2097('0x21'));_0x430754['Contact']=_0x28c35c[_0x2097('0x20')][0x0][_0x2097('0x21')];}var _0x59d947={'method':_0x2097('0x2a'),'uri':encodeURI(_0x28c35c['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x59d947[_0x2097('0x2b')]){case _0x2097('0x2c'):_0x59d947['qs']=_0x430754;break;case'POST':_0x59d947[_0x2097('0xb')]=_0x430754;break;}return rp(_0x59d947)['then'](function(_0x29b879){logger['info'](_0x2097('0x24'),_0x2097('0x2d'),util[_0x2097('0x25')](_0x2097('0x2e'),_0x430754['id'],_0x28c35c[_0x2097('0x26')]));if(_0x29b879[_0x2097('0xb')][_0x2097('0x2f')]&&_0x29b879['body'][_0x2097('0x2f')]!=_0x430754[_0x2097('0x28')]['threadId']){return _0x3b8b76[_0x2097('0x15')][_0x2097('0x19')]({'threadId':_0x29b879['body']['threadId']},{'logging':!![],'where':{'id':_0x430754[_0x2097('0x28')]['id']}});}else{return;}})[_0x2097('0x18')](function(){return _0x3b8fac[_0x2097('0x19')]({'read':!![]});})[_0x2097('0x1b')](function(_0x74ccdc){logger[_0x2097('0x30')]('OpenchannelMessage,\x20%s,\x20%s',_0x2097('0x2d'),util['inspect'](_0x74ccdc,{'showHidden':![],'depth':null}));_0x2e0024();});}else{_0x2e0024();}})[_0x2097('0x31')](function(){_0x2e0024();});}else{_0x2e0024();}}},'charset':_0x2097('0x32'),'collate':_0x2097('0x33')});};
\ No newline at end of file
+var _0x896e=['OpenchannelAccountId','Interactions','Contact','keys','get','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','replyUri','method','body','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','direction','toLowerCase','out','secret','isNil','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','catch','CmContact','then','OpenchannelAccount'];(function(_0x51fd35,_0x4fd379){var _0xb51df1=function(_0x5f596a){while(--_0x5f596a){_0x51fd35['push'](_0x51fd35['shift']());}};_0xb51df1(++_0x4fd379);}(_0x896e,0x1e9));var _0xe896=function(_0x49595b,_0x486b6a){_0x49595b=_0x49595b-0x0;var _0x320c3d=_0x896e[_0x49595b];return _0x320c3d;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var logger=require(_0xe896('0x2'))(_0xe896('0x3'));var moment=require(_0xe896('0x4'));var BPromise=require(_0xe896('0x5'));var rp=require(_0xe896('0x6'));var fs=require('fs');var path=require(_0xe896('0x7'));var rimraf=require(_0xe896('0x8'));var config=require(_0xe896('0x9'));var attributes=require(_0xe896('0xa'));module[_0xe896('0xb')]=function(_0x52ac80,_0x24c430){return _0x52ac80[_0xe896('0xc')](_0xe896('0xd'),attributes,{'tableName':_0xe896('0xe'),'paranoid':![],'indexes':[{'name':_0xe896('0xf'),'fields':['body'],'type':_0xe896('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x14b7e4,_0x37a90d,_0x4afd3f){var _0x305616=_0x52ac80['models'];var _0x45b15b=_0x14b7e4['get']({'plain':!![]});if(_0x45b15b[_0xe896('0x11')][_0xe896('0x12')]()==='in'||_0x45b15b[_0xe896('0x11')]['toLowerCase']()===_0xe896('0x13')&&!_0x45b15b[_0xe896('0x14')]&&!_[_0xe896('0x15')](_0x45b15b['UserId'])){_0x305616[_0xe896('0x16')][_0xe896('0x17')]({'where':{'id':_0x45b15b[_0xe896('0x18')]}})['then'](function(_0x2d0e46){if(_0x2d0e46){_0x2d0e46[_0xe896('0x19')]({'lastMsgAt':_0x45b15b[_0xe896('0x1a')],'lastMsgDirection':_0x45b15b['direction']['toLowerCase']()});}})[_0xe896('0x1b')](function(_0x25606b){console['error'](_0x25606b);});}if(_0x45b15b['direction']===_0xe896('0x13')&&!_0x45b15b[_0xe896('0x14')]){var _0x57f04b;_0x305616[_0xe896('0x1c')]['describe']()[_0xe896('0x1d')](function(_0x32f86d){return _0x305616[_0xe896('0x1e')]['find']({'where':{'id':_0x45b15b[_0xe896('0x1f')]},'include':[{'model':_0x305616[_0xe896('0x16')],'as':_0xe896('0x20'),'where':{'id':_0x45b15b[_0xe896('0x18')]},'limit':0x1,'include':[{'model':_0x305616[_0xe896('0x1c')],'as':_0xe896('0x21'),'attributes':_[_0xe896('0x22')](_0x32f86d)}]}]});})[_0xe896('0x1d')](function(_0x49547b){_0x57f04b=_0x49547b[_0xe896('0x23')]({'plain':!![]});if(_0x57f04b&&_0x57f04b['replyUri']){logger['info'](_0xe896('0x24'),_0xe896('0x25'),util[_0xe896('0x26')](_0xe896('0x27'),_0x45b15b['id'],_0x57f04b['replyUri']));if(_0x57f04b[_0xe896('0x20')]&&_0x57f04b['Interactions']['length']){_0x45b15b[_0xe896('0x28')]=_[_0xe896('0x29')](_0x57f04b[_0xe896('0x20')][0x0],_0xe896('0x21'));_0x45b15b[_0xe896('0x21')]=_0x57f04b[_0xe896('0x20')][0x0][_0xe896('0x21')];}var _0x37a90d={'method':_0xe896('0x2a'),'uri':encodeURI(_0x57f04b[_0xe896('0x2b')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x37a90d[_0xe896('0x2c')]){case'GET':_0x37a90d['qs']=_0x45b15b;break;case _0xe896('0x2a'):_0x37a90d[_0xe896('0x2d')]=_0x45b15b;break;}return rp(_0x37a90d)[_0xe896('0x1d')](function(_0xe93aa0){logger[_0xe896('0x2e')](_0xe896('0x24'),'afterCreate',util[_0xe896('0x26')](_0xe896('0x2f'),_0x45b15b['id'],_0x57f04b[_0xe896('0x2b')]));if(_0xe93aa0[_0xe896('0x2d')][_0xe896('0x30')]&&_0xe93aa0['body']['threadId']!=_0x45b15b['Interaction']['threadId']){return _0x305616['OpenchannelInteraction'][_0xe896('0x19')]({'threadId':_0xe93aa0[_0xe896('0x2d')][_0xe896('0x30')]},{'logging':!![],'where':{'id':_0x45b15b[_0xe896('0x28')]['id']}});}else{return;}})[_0xe896('0x1d')](function(){return _0x14b7e4[_0xe896('0x19')]({'read':!![]});})[_0xe896('0x1b')](function(_0x45c6d3){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0xe896('0x25'),util[_0xe896('0x31')](_0x45c6d3,{'showHidden':![],'depth':null}));_0x4afd3f();});}else{_0x4afd3f();}})[_0xe896('0x32')](function(){_0x4afd3f();});}else{_0x4afd3f();}}},'charset':_0xe896('0x33'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 30b75a6..9dc5571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x3af22d,_0x5ac369){var _0x4a595b=function(_0x199dd9){while(--_0x199dd9){_0x3af22d['push'](_0x3af22d['shift']());}};_0x4a595b(++_0x5ac369);}(_0x2ef3,0xba));var _0x32ef=function(_0x3ee743,_0x6fecea){_0x3ee743=_0x3ee743-0x0;var _0x50c785=_0x2ef3[_0x3ee743];return _0x50c785;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
+var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x26f4ab,_0x203885){var _0x535db8=function(_0x214fd1){while(--_0x214fd1){_0x26f4ab['push'](_0x26f4ab['shift']());}};_0x535db8(++_0x203885);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1b8bda,_0x43ad31){_0x1b8bda=_0x1b8bda-0x0;var _0x1f7050=_0x0b0e[_0x1b8bda];return _0x1f7050;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
index 8cc6cf7..cc9db32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbd=['save','remove','update','emit','removeListener','register','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x2c8112,_0x180029){var _0x10f5a8=function(_0x5152ad){while(--_0x5152ad){_0x2c8112['push'](_0x2c8112['shift']());}};_0x10f5a8(++_0x180029);}(_0xbbbd,0x86));var _0xdbbb=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xbbbd[_0x4a9fb1];return _0x348672;};'use strict';var OpenchannelMessageEvents=require(_0xdbbb('0x0'));var events=[_0xdbbb('0x1'),_0xdbbb('0x2'),_0xdbbb('0x3')];function createListener(_0x364f2b,_0x21cb13){return function(_0x2f4a15){_0x21cb13[_0xdbbb('0x4')](_0x364f2b,_0x2f4a15);};}function removeListener(_0x3b665d,_0x114d3a){return function(){OpenchannelMessageEvents[_0xdbbb('0x5')](_0x3b665d,_0x114d3a);};}exports[_0xdbbb('0x6')]=function(_0x4e9523){for(var _0xa5399d=0x0,_0x42ea38=events[_0xdbbb('0x7')];_0xa5399d<_0x42ea38;_0xa5399d++){var _0x478756=events[_0xa5399d];var _0x463ea6=createListener(_0xdbbb('0x8')+_0x478756,_0x4e9523);OpenchannelMessageEvents['on'](_0x478756,_0x463ea6);}};
\ No newline at end of file
+var _0x421f=['./openchannelMessage.events','save','remove','update','removeListener','register','length','openchannelMessage:'];(function(_0x1cf318,_0x527ff2){var _0x2ff5ba=function(_0x1496f6){while(--_0x1496f6){_0x1cf318['push'](_0x1cf318['shift']());}};_0x2ff5ba(++_0x527ff2);}(_0x421f,0x160));var _0xf421=function(_0x4f1ee6,_0x3a0ac1){_0x4f1ee6=_0x4f1ee6-0x0;var _0x331ef3=_0x421f[_0x4f1ee6];return _0x331ef3;};'use strict';var OpenchannelMessageEvents=require(_0xf421('0x0'));var events=[_0xf421('0x1'),_0xf421('0x2'),_0xf421('0x3')];function createListener(_0x1060ab,_0xddf443){return function(_0x4f5951){_0xddf443['emit'](_0x1060ab,_0x4f5951);};}function removeListener(_0x507168,_0xe92454){return function(){OpenchannelMessageEvents[_0xf421('0x4')](_0x507168,_0xe92454);};}exports[_0xf421('0x5')]=function(_0x1daaa4){for(var _0x49c082=0x0,_0x3a2a31=events[_0xf421('0x6')];_0x49c082<_0x3a2a31;_0x49c082++){var _0x2f0299=events[_0x49c082];var _0x1521fa=createListener(_0xf421('0x7')+_0x2f0299,_0x1daaa4);OpenchannelMessageEvents['on'](_0x2f0299,_0x1521fa);}};
\ No newline at end of file
index e01da11..de2ceaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f67=['getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/members','/:id/teams','getTeams'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x3f67,0x1cd));var _0x73f6=function(_0x57171b,_0xfe67c6){_0x57171b=_0x57171b-0x0;var _0x33a2c8=_0x3f67[_0x57171b];return _0x33a2c8;};'use strict';var multer=require(_0x73f6('0x0'));var util=require(_0x73f6('0x1'));var path=require(_0x73f6('0x2'));var timeout=require(_0x73f6('0x3'));var express=require(_0x73f6('0x4'));var router=express['Router']();var fs_extra=require(_0x73f6('0x5'));var auth=require(_0x73f6('0x6'));var interaction=require(_0x73f6('0x7'));var config=require(_0x73f6('0x8'));var controller=require(_0x73f6('0x9'));router[_0x73f6('0xa')]('/',auth[_0x73f6('0xb')](),controller[_0x73f6('0xc')]);router['get'](_0x73f6('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x73f6('0xa')](_0x73f6('0xe'),auth['isAuthenticated'](),controller[_0x73f6('0xf')]);router['get'](_0x73f6('0x10'),auth[_0x73f6('0xb')](),controller['getMembers']);router[_0x73f6('0xa')](_0x73f6('0x11'),auth[_0x73f6('0xb')](),controller[_0x73f6('0x12')]);router[_0x73f6('0xa')]('/:id/users',auth[_0x73f6('0xb')](),controller[_0x73f6('0x13')]);router[_0x73f6('0x14')]('/',auth[_0x73f6('0xb')](),controller[_0x73f6('0x15')]);router['post'](_0x73f6('0x11'),auth[_0x73f6('0xb')](),controller[_0x73f6('0x16')]);router[_0x73f6('0x14')]('/:id/users',auth['isAuthenticated'](),controller[_0x73f6('0x17')]);router[_0x73f6('0x18')](_0x73f6('0xe'),auth[_0x73f6('0xb')](),controller[_0x73f6('0x19')]);router[_0x73f6('0x1a')]('/:id',auth[_0x73f6('0xb')](),controller[_0x73f6('0x1b')]);router['delete'](_0x73f6('0x11'),auth['isAuthenticated'](),controller[_0x73f6('0x1c')]);router[_0x73f6('0x1a')]('/:id/users',auth[_0x73f6('0xb')](),controller['removeAgents']);module[_0x73f6('0x1d')]=router;
\ No newline at end of file
+var _0x85d5=['/:id/users','addAgents','put','update','destroy','delete','removeTeams','removeAgents','express','Router','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','/describe','/:id','show','isAuthenticated','getMembers','/:id/teams','getTeams','getAgents','post','create'];(function(_0x5e9396,_0x161fdd){var _0x4172e3=function(_0x4acd42){while(--_0x4acd42){_0x5e9396['push'](_0x5e9396['shift']());}};_0x4172e3(++_0x161fdd);}(_0x85d5,0x158));var _0x585d=function(_0x452770,_0x3cfcd6){_0x452770=_0x452770-0x0;var _0x265e07=_0x85d5[_0x452770];return _0x265e07;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x585d('0x0'));var router=express[_0x585d('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x585d('0x2'));var config=require(_0x585d('0x3'));var controller=require(_0x585d('0x4'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x585d('0x5')](_0x585d('0x6'),auth['isAuthenticated'](),controller['describe']);router[_0x585d('0x5')](_0x585d('0x7'),auth['isAuthenticated'](),controller[_0x585d('0x8')]);router['get']('/:id/members',auth[_0x585d('0x9')](),controller[_0x585d('0xa')]);router['get'](_0x585d('0xb'),auth[_0x585d('0x9')](),controller[_0x585d('0xc')]);router[_0x585d('0x5')]('/:id/users',auth[_0x585d('0x9')](),controller[_0x585d('0xd')]);router[_0x585d('0xe')]('/',auth['isAuthenticated'](),controller[_0x585d('0xf')]);router[_0x585d('0xe')]('/:id/teams',auth[_0x585d('0x9')](),controller['addTeams']);router[_0x585d('0xe')](_0x585d('0x10'),auth[_0x585d('0x9')](),controller[_0x585d('0x11')]);router[_0x585d('0x12')](_0x585d('0x7'),auth['isAuthenticated'](),controller[_0x585d('0x13')]);router['delete'](_0x585d('0x7'),auth['isAuthenticated'](),controller[_0x585d('0x14')]);router[_0x585d('0x15')](_0x585d('0xb'),auth[_0x585d('0x9')](),controller[_0x585d('0x16')]);router['delete'](_0x585d('0x10'),auth[_0x585d('0x9')](),controller[_0x585d('0x17')]);module['exports']=router;
\ No newline at end of file
index 90b8ffb..f527f38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb14=['roundrobin','sequelize','exports','STRING','INTEGER','ENUM','beepall'];(function(_0x38fab4,_0x394f9e){var _0x3dd70f=function(_0x3e203f){while(--_0x3e203f){_0x38fab4['push'](_0x38fab4['shift']());}};_0x3dd70f(++_0x394f9e);}(_0xcb14,0x1dd));var _0x4cb1=function(_0x1afedc,_0x17ee2f){_0x1afedc=_0x1afedc-0x0;var _0x3520db=_0xcb14[_0x1afedc];return _0x3520db;};'use strict';var Sequelize=require(_0x4cb1('0x0'));module[_0x4cb1('0x1')]={'name':{'type':Sequelize[_0x4cb1('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4cb1('0x2')]},'timeout':{'type':Sequelize[_0x4cb1('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4cb1('0x4')]('rrmemory',_0x4cb1('0x5'),_0x4cb1('0x6'))}};
\ No newline at end of file
+var _0xc367=['ENUM','rrmemory','sequelize','STRING','INTEGER'];(function(_0x54776b,_0x2653d3){var _0x362a84=function(_0x4124d){while(--_0x4124d){_0x54776b['push'](_0x54776b['shift']());}};_0x362a84(++_0x2653d3);}(_0xc367,0x11a));var _0x7c36=function(_0x2c1657,_0x2e8605){_0x2c1657=_0x2c1657-0x0;var _0x2ca4c1=_0xc367[_0x2c1657];return _0x2ca4c1;};'use strict';var Sequelize=require(_0x7c36('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7c36('0x1')]},'timeout':{'type':Sequelize[_0x7c36('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7c36('0x3')](_0x7c36('0x4'),'beepall','roundrobin')}};
\ No newline at end of file
index e8af9e0..4c885f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd245=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./openchannelQueue.socket','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','end','error','stack','send','index','map','OpenchannelQueue','rawAttributes','fieldName','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','rows','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','params','describe','getMembers','findOne','pick','OpenchannelQueueId','options','UserOpenchannelQueue','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','format','createdAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','userOpenchannelQueue:remove','addAgents','omit','spread','emit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x2136d5,_0x4b0479){var _0x3bee2e=function(_0x119e88){while(--_0x119e88){_0x2136d5['push'](_0x2136d5['shift']());}};_0x3bee2e(++_0x4b0479);}(_0xd245,0x110));var _0x5d24=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xd245[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require(_0x5d24('0x0'));var rimraf=require(_0x5d24('0x1'));var zipdir=require(_0x5d24('0x2'));var jsonpatch=require(_0x5d24('0x3'));var rp=require(_0x5d24('0x4'));var moment=require(_0x5d24('0x5'));var BPromise=require(_0x5d24('0x6'));var Mustache=require('mustache');var util=require(_0x5d24('0x7'));var path=require(_0x5d24('0x8'));var sox=require(_0x5d24('0x9'));var csv=require(_0x5d24('0xa'));var ejs=require(_0x5d24('0xb'));var fs=require('fs');var fs_extra=require(_0x5d24('0xc'));var _=require(_0x5d24('0xd'));var squel=require('squel');var crypto=require(_0x5d24('0xe'));var jsforce=require(_0x5d24('0xf'));var deskjs=require(_0x5d24('0x10'));var toCsv=require(_0x5d24('0xa'));var querystring=require(_0x5d24('0x11'));var Papa=require(_0x5d24('0x12'));var Redis=require(_0x5d24('0x13'));var authService=require(_0x5d24('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x5d24('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5d24('0x16'))(_0x5d24('0x17'));var utils=require(_0x5d24('0x18'));var config=require(_0x5d24('0x19'));var licenseUtil=require(_0x5d24('0x1a'));var db=require(_0x5d24('0x1b'))['db'];config['redis']=_[_0x5d24('0x1c')](config[_0x5d24('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5d24('0x1e'))['register'](socket);function respondWithStatusCode(_0x8848c0,_0x598a3b){_0x598a3b=_0x598a3b||0xcc;return function(_0x4240a2){if(_0x4240a2){return _0x8848c0[_0x5d24('0x1f')](_0x598a3b);}return _0x8848c0[_0x5d24('0x20')](_0x598a3b)['end']();};}function respondWithResult(_0x3e3291,_0x4ff5ff){_0x4ff5ff=_0x4ff5ff||0xc8;return function(_0x38ac37){if(_0x38ac37){return _0x3e3291[_0x5d24('0x20')](_0x4ff5ff)[_0x5d24('0x21')](_0x38ac37);}};}function respondWithFilteredResult(_0x306c4c,_0x24355c){return function(_0x39c45b){if(_0x39c45b){var _0x1e601f=typeof _0x24355c[_0x5d24('0x22')]===_0x5d24('0x23')&&typeof _0x24355c[_0x5d24('0x24')]===_0x5d24('0x23');var _0x5ce8f2=_0x39c45b[_0x5d24('0x25')];var _0x1b2968=_0x1e601f?0x0:_0x24355c[_0x5d24('0x22')];var _0x466671=_0x1e601f?_0x39c45b[_0x5d24('0x25')]:_0x24355c['offset']+_0x24355c[_0x5d24('0x24')];var _0x5d6889;if(_0x466671>=_0x5ce8f2){_0x466671=_0x5ce8f2;_0x5d6889=0xc8;}else{_0x5d6889=0xce;}_0x306c4c[_0x5d24('0x20')](_0x5d6889);return _0x306c4c['set'](_0x5d24('0x26'),_0x1b2968+'-'+_0x466671+'/'+_0x5ce8f2)[_0x5d24('0x21')](_0x39c45b);}return null;};}function patchUpdates(_0x5fcb06){return function(_0x1962c9){try{jsonpatch['apply'](_0x1962c9,_0x5fcb06,!![]);}catch(_0xd41608){return BPromise[_0x5d24('0x27')](_0xd41608);}return _0x1962c9[_0x5d24('0x28')]();};}function saveUpdates(_0xabe7c,_0x41475c){return function(_0x6796d5){if(_0x6796d5){return _0x6796d5[_0x5d24('0x29')](_0xabe7c)[_0x5d24('0x2a')](function(_0x127887){return _0x127887;});}return null;};}function removeEntity(_0x13ebe5,_0x2fde02){return function(_0x97ce98){if(_0x97ce98){return _0x97ce98[_0x5d24('0x2b')]()[_0x5d24('0x2a')](function(){var _0x138902=_0x97ce98[_0x5d24('0x2c')]({'plain':!![]});var _0x2dc666=_0x5d24('0x2d');return db[_0x5d24('0x2e')]['destroy']({'where':{'type':_0x2dc666,'resourceId':_0x138902['id']}})[_0x5d24('0x2a')](function(){return _0x97ce98;});})['then'](function(){_0x13ebe5[_0x5d24('0x20')](0xcc)[_0x5d24('0x2f')]();});}};}function handleEntityNotFound(_0x228013,_0x27393e){return function(_0x207e72){if(!_0x207e72){_0x228013[_0x5d24('0x1f')](0x194);}return _0x207e72;};}function handleError(_0x99f0c4,_0x8060f2){_0x8060f2=_0x8060f2||0x1f4;return function(_0x30e180){logger[_0x5d24('0x30')](_0x30e180[_0x5d24('0x31')]);if(_0x30e180['name']){delete _0x30e180['name'];}_0x99f0c4[_0x5d24('0x20')](_0x8060f2)[_0x5d24('0x32')](_0x30e180);};}exports[_0x5d24('0x33')]=function(_0x51aa86,_0x3db14a){var _0x5a0641={},_0x44df59={},_0xd222a6={'count':0x0,'rows':[]};var _0x42748d=_[_0x5d24('0x34')](db[_0x5d24('0x35')][_0x5d24('0x36')],function(_0x33bc63){return{'name':_0x33bc63[_0x5d24('0x37')],'type':_0x33bc63['type'][_0x5d24('0x38')]};});_0x44df59[_0x5d24('0x39')]=_[_0x5d24('0x34')](_0x42748d,_0x5d24('0x3a'));_0x44df59['query']=_[_0x5d24('0x3b')](_0x51aa86[_0x5d24('0x3c')]);_0x44df59[_0x5d24('0x3d')]=_[_0x5d24('0x3e')](_0x44df59[_0x5d24('0x39')],_0x44df59[_0x5d24('0x3c')]);_0x5a0641['attributes']=_['intersection'](_0x44df59['model'],qs[_0x5d24('0x3f')](_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x5a0641['attributes']=_0x5a0641[_0x5d24('0x40')][_0x5d24('0x41')]?_0x5a0641[_0x5d24('0x40')]:_0x44df59['model'];if(!_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x42')](_0x5d24('0x43'))){_0x5a0641[_0x5d24('0x24')]=qs['limit'](_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x24')]);_0x5a0641[_0x5d24('0x22')]=qs[_0x5d24('0x22')](_0x51aa86[_0x5d24('0x3c')]['offset']);}_0x5a0641[_0x5d24('0x44')]=qs['sort'](_0x51aa86['query'][_0x5d24('0x45')]);_0x5a0641[_0x5d24('0x46')]=qs[_0x5d24('0x3d')](_['pick'](_0x51aa86[_0x5d24('0x3c')],_0x44df59[_0x5d24('0x3d')]),_0x42748d);if(_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x47')]){_0x5a0641[_0x5d24('0x46')]=_[_0x5d24('0x48')](_0x5a0641[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x42748d,function(_0x5bab86){if(_0x5bab86['type']!==_0x5d24('0x49')){var _0x55b515={};_0x55b515[_0x5bab86[_0x5d24('0x3a')]]={'$like':'%'+_0x51aa86['query']['filter']+'%'};return _0x55b515;}})});}_0x5a0641=_[_0x5d24('0x48')]({},_0x5a0641,_0x51aa86['options']);var _0xef94c0={'where':_0x5a0641[_0x5d24('0x46')]};return db[_0x5d24('0x35')][_0x5d24('0x25')](_0xef94c0)['then'](function(_0x5a91d1){_0xd222a6[_0x5d24('0x25')]=_0x5a91d1;if(_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x4a')]){_0x5a0641[_0x5d24('0x4b')]=[{'all':!![]}];}return db['OpenchannelQueue']['findAll'](_0x5a0641);})[_0x5d24('0x2a')](function(_0x452aef){_0xd222a6[_0x5d24('0x4c')]=_0x452aef;return _0xd222a6;})[_0x5d24('0x2a')](respondWithFilteredResult(_0x3db14a,_0x5a0641))[_0x5d24('0x4d')](handleError(_0x3db14a,null));};exports['show']=function(_0x191d65,_0x3a5f6d){var _0x538a38={'raw':!![],'where':{'id':_0x191d65['params']['id']}},_0x524cac={};_0x524cac[_0x5d24('0x39')]=_['keys'](db['OpenchannelQueue'][_0x5d24('0x36')]);_0x524cac['query']=_[_0x5d24('0x3b')](_0x191d65['query']);_0x524cac[_0x5d24('0x3d')]=_['intersection'](_0x524cac[_0x5d24('0x39')],_0x524cac[_0x5d24('0x3c')]);_0x538a38[_0x5d24('0x40')]=_[_0x5d24('0x3e')](_0x524cac[_0x5d24('0x39')],qs[_0x5d24('0x3f')](_0x191d65[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x538a38[_0x5d24('0x40')]=_0x538a38[_0x5d24('0x40')]['length']?_0x538a38[_0x5d24('0x40')]:_0x524cac['model'];if(_0x191d65['query'][_0x5d24('0x4a')]){_0x538a38[_0x5d24('0x4b')]=[{'all':!![]}];}_0x538a38=_[_0x5d24('0x48')]({},_0x538a38,_0x191d65['options']);return db['OpenchannelQueue'][_0x5d24('0x4e')](_0x538a38)[_0x5d24('0x2a')](handleEntityNotFound(_0x3a5f6d,null))[_0x5d24('0x2a')](respondWithResult(_0x3a5f6d,null))[_0x5d24('0x4d')](handleError(_0x3a5f6d,null));};exports[_0x5d24('0x4f')]=function(_0x4d1ddd,_0x5abaa9){return db[_0x5d24('0x35')][_0x5d24('0x4f')](_0x4d1ddd[_0x5d24('0x50')],{})['then'](function(_0x3e7e29){var _0x54b012=_0x4d1ddd[_0x5d24('0x51')][_0x5d24('0x2c')]({'plain':!![]});if(!_0x54b012)throw new Error(_0x5d24('0x52'));if(_0x54b012['role']===_0x5d24('0x51')){var _0x3c95cc=_0x3e7e29[_0x5d24('0x2c')]({'plain':!![]});var _0x3c2051='OpenchannelQueues';return db[_0x5d24('0x53')][_0x5d24('0x4e')]({'where':{'name':_0x3c2051,'userProfileId':_0x54b012[_0x5d24('0x54')]},'raw':!![]})[_0x5d24('0x2a')](function(_0x4ed138){if(_0x4ed138&&_0x4ed138[_0x5d24('0x55')]===0x0){return db[_0x5d24('0x2e')]['create']({'name':_0x3c95cc[_0x5d24('0x3a')],'resourceId':_0x3c95cc['id'],'type':_0x4ed138[_0x5d24('0x3a')],'sectionId':_0x4ed138['id']},{})[_0x5d24('0x2a')](function(){return _0x3e7e29;});}else{return _0x3e7e29;}})[_0x5d24('0x4d')](function(_0x31d643){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31d643);throw _0x31d643;});}return _0x3e7e29;})[_0x5d24('0x2a')](respondWithResult(_0x5abaa9,0xc9))[_0x5d24('0x4d')](handleError(_0x5abaa9,null));};exports[_0x5d24('0x29')]=function(_0x2aee17,_0x8f6a92){if(_0x2aee17[_0x5d24('0x50')]['id']){delete _0x2aee17[_0x5d24('0x50')]['id'];}return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x2aee17['params']['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x8f6a92,null))[_0x5d24('0x2a')](saveUpdates(_0x2aee17[_0x5d24('0x50')],null))[_0x5d24('0x2a')](respondWithResult(_0x8f6a92,null))['catch'](handleError(_0x8f6a92,null));};exports[_0x5d24('0x2b')]=function(_0x4ed07c,_0x33bbfe){return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x4ed07c[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x33bbfe,null))[_0x5d24('0x2a')](removeEntity(_0x33bbfe,null))[_0x5d24('0x4d')](handleError(_0x33bbfe,null));};exports[_0x5d24('0x57')]=function(_0x148040,_0x270ec9){return db[_0x5d24('0x35')][_0x5d24('0x57')]()[_0x5d24('0x2a')](respondWithResult(_0x270ec9,null))['catch'](handleError(_0x270ec9,null));};exports[_0x5d24('0x58')]=function(_0xbb7a8e,_0x19b512,_0x4a8859){var _0x54980c={'raw':!![],'where':{}},_0x249463={},_0x3e314e;return db[_0x5d24('0x35')][_0x5d24('0x59')]({'where':{'id':_0xbb7a8e['params']['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x19b512,null))[_0x5d24('0x2a')](function(_0x151270){if(_0x151270){_0x3e314e=_0x151270[_0x5d24('0x2c')]({'plain':!![]});_0x249463['model']=_[_0x5d24('0x3b')](db['UserOpenchannelQueue'][_0x5d24('0x36')]);_0x249463[_0x5d24('0x3c')]=_[_0x5d24('0x3b')](_0xbb7a8e['query']);_0x249463[_0x5d24('0x3d')]=_['intersection'](_0x249463[_0x5d24('0x39')],_0x249463[_0x5d24('0x3c')]);_0x54980c['attributes']=_[_0x5d24('0x3e')](_0x249463[_0x5d24('0x39')],qs['fields'](_0xbb7a8e[_0x5d24('0x3c')]['fields']));_0x54980c[_0x5d24('0x40')]=_0x54980c[_0x5d24('0x40')][_0x5d24('0x41')]?_0x54980c[_0x5d24('0x40')]:_0x249463[_0x5d24('0x39')];if(!_0xbb7a8e[_0x5d24('0x3c')][_0x5d24('0x42')]('nolimit')){_0x54980c['limit']=qs[_0x5d24('0x24')](_0xbb7a8e[_0x5d24('0x3c')]['limit']);_0x54980c[_0x5d24('0x22')]=qs[_0x5d24('0x22')](_0xbb7a8e['query'][_0x5d24('0x22')]);}_0x54980c[_0x5d24('0x44')]=qs[_0x5d24('0x45')](_0xbb7a8e['query'][_0x5d24('0x45')]);_0x54980c['where']=qs[_0x5d24('0x3d')](_[_0x5d24('0x5a')](_0xbb7a8e['query'],_0x249463[_0x5d24('0x3d')]));_0x54980c[_0x5d24('0x46')][_0x5d24('0x5b')]=_0x151270['id'];if(_0xbb7a8e[_0x5d24('0x3c')]['filter']){_0x54980c[_0x5d24('0x46')]=_['merge'](_0x54980c[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x54980c[_0x5d24('0x40')],function(_0x271fe9){var _0x586214={};_0x586214[_0x271fe9]={'$like':'%'+_0xbb7a8e['query'][_0x5d24('0x47')]+'%'};return _0x586214;})});}_0x54980c=_['merge']({},_0x54980c,_0xbb7a8e[_0x5d24('0x5c')]);return db[_0x5d24('0x5d')][_0x5d24('0x5e')](_0x54980c);}})['then'](function(_0x2e82f9){if(_0x2e82f9){return db[_0x5d24('0x5f')][_0x5d24('0x60')]({'where':{'id':_[_0x5d24('0x34')](_0x2e82f9,_0x5d24('0x61')),'role':_0x5d24('0x62')},'attributes':['id',_0x5d24('0x3a'),_0x5d24('0x63'),_0x5d24('0x64'),'createdAt']});}})[_0x5d24('0x2a')](function(_0x2929f8){if(_0x2929f8){return{'count':_0x2929f8[_0x5d24('0x25')],'rows':_[_0x5d24('0x34')](_0x2929f8[_0x5d24('0x4c')],function(_0x2b365a){return{'membername':_0x2b365a[_0x5d24('0x3a')],'UserId':_0x2b365a['id'],'queue_name':_0x3e314e[_0x5d24('0x3a')],'OpenchannelQueueId':_0x3e314e['id'],'interface':util[_0x5d24('0x65')]('%s/%s','SIP',_0x2b365a['name']),'penalty':0x0,'paused':_0x2b365a['openchannelPause'],'createdAt':_0x2b365a[_0x5d24('0x66')],'updatedAt':_0x2b365a['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x5d24('0x2a')](respondWithFilteredResult(_0x19b512,_0x54980c))[_0x5d24('0x4d')](handleError(_0x19b512,null));};exports[_0x5d24('0x67')]=function(_0x25a62a,_0x24e380,_0x3d0fc8){var _0x5285ec={};var _0x3bdbba={};var _0x23627d;var _0x5ba01f;return db[_0x5d24('0x35')]['findOne']({'where':{'id':_0x25a62a[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x24e380,null))[_0x5d24('0x2a')](function(_0x92a552){if(_0x92a552){_0x23627d=_0x92a552;_0x3bdbba[_0x5d24('0x39')]=_['keys'](db[_0x5d24('0x68')][_0x5d24('0x36')]);_0x3bdbba['query']=_[_0x5d24('0x3b')](_0x25a62a[_0x5d24('0x3c')]);_0x3bdbba[_0x5d24('0x3d')]=_[_0x5d24('0x3e')](_0x3bdbba[_0x5d24('0x39')],_0x3bdbba[_0x5d24('0x3c')]);_0x5285ec['attributes']=_['intersection'](_0x3bdbba['model'],qs[_0x5d24('0x3f')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x5285ec[_0x5d24('0x40')]=_0x5285ec[_0x5d24('0x40')][_0x5d24('0x41')]?_0x5285ec['attributes']:_0x3bdbba[_0x5d24('0x39')];_0x5285ec[_0x5d24('0x44')]=qs[_0x5d24('0x45')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x45')]);_0x5285ec[_0x5d24('0x46')]=qs[_0x5d24('0x3d')](_[_0x5d24('0x5a')](_0x25a62a[_0x5d24('0x3c')],_0x3bdbba[_0x5d24('0x3d')]));if(_0x25a62a['query'][_0x5d24('0x47')]){_0x5285ec[_0x5d24('0x46')]=_[_0x5d24('0x48')](_0x5285ec[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x5285ec[_0x5d24('0x40')],function(_0x265ae2){var _0x2dc4f2={};_0x2dc4f2[_0x265ae2]={'$like':'%'+_0x25a62a[_0x5d24('0x3c')]['filter']+'%'};return _0x2dc4f2;})});}_0x5285ec=_[_0x5d24('0x48')]({},_0x5285ec,_0x25a62a[_0x5d24('0x5c')]);return _0x23627d[_0x5d24('0x67')](_0x5285ec);}})[_0x5d24('0x2a')](function(_0x55e14d){if(_0x55e14d){_0x5ba01f=_0x55e14d[_0x5d24('0x41')];if(!_0x25a62a['query'][_0x5d24('0x42')](_0x5d24('0x43'))){_0x5285ec['limit']=qs[_0x5d24('0x24')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x24')]);_0x5285ec[_0x5d24('0x22')]=qs[_0x5d24('0x22')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x22')]);}return _0x23627d[_0x5d24('0x67')](_0x5285ec);}})[_0x5d24('0x2a')](function(_0x378bb9){if(_0x378bb9){return _0x378bb9?{'count':_0x5ba01f,'rows':_0x378bb9}:null;}})[_0x5d24('0x2a')](respondWithResult(_0x24e380,null))[_0x5d24('0x4d')](handleError(_0x24e380,null));};exports[_0x5d24('0x69')]=function(_0x409fcc,_0x39c9c9,_0x50bac0){var _0xa25c41=_0x409fcc[_0x5d24('0x50')][_0x5d24('0x6a')];return db[_0x5d24('0x68')][_0x5d24('0x5e')]({'where':{'id':_0xa25c41},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5d24('0x6b'),'attributes':['id',_0x5d24('0x3a'),_0x5d24('0x6c'),_0x5d24('0x6d'),_0x5d24('0x6e')],'raw':!![]}]})[_0x5d24('0x2a')](function(_0x2967a3){if(_0x2967a3){var _0x62b1f3=_[_0x5d24('0x6f')](_0x2967a3,function(_0x22f33e){var _0x1a1047=_0x22f33e[_0x5d24('0x2c')]({'plain':!![]});return _0x1a1047[_0x5d24('0x6b')];});return db[_0x5d24('0x35')][_0x5d24('0x4e')]({'where':{'id':_0x409fcc['params']['id']}})['then'](function(_0x5b4a31){return db[_0x5d24('0x70')][_0x5d24('0x71')](function(_0x883bba){return _0x5b4a31[_0x5d24('0x69')](_0xa25c41,{'transaction':_0x883bba})[_0x5d24('0x2a')](function(){return BPromise[_0x5d24('0x72')](_0x62b1f3,function(_0x355000){return db[_0x5d24('0x5d')][_0x5d24('0x73')]({'where':{'UserId':_0x355000['id'],'OpenchannelQueueId':_0x409fcc['params']['id']},'transaction':_0x883bba});});})[_0x5d24('0x2a')](function(){_0x62b1f3[_0x5d24('0x74')](function(_0x1e04b5){socket['emit'](_0x5d24('0x75'),{'UserId':_0x1e04b5['id'],'OpenchannelQueueId':_0x5b4a31['id']});});});});});}})[_0x5d24('0x2a')](respondWithStatusCode(_0x39c9c9,null))[_0x5d24('0x4d')](handleError(_0x39c9c9,null));};exports[_0x5d24('0x76')]=function(_0x1ce6a0,_0x1b9a1e,_0x4e54d6){return db[_0x5d24('0x68')][_0x5d24('0x5e')]({'where':{'id':_0x1ce6a0[_0x5d24('0x3c')][_0x5d24('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5d24('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1b9a1e,null))[_0x5d24('0x2a')](function(_0x47b85f){var _0x54bf27=_[_0x5d24('0x34')](_0x47b85f,'id');var _0x15daa2=[];var _0x362215=[];var _0x464c68=squel[_0x5d24('0x77')]();_0x464c68[_0x5d24('0x78')](_0x5d24('0x79'))[_0x5d24('0x7a')]('team_has_openchannel_queues','tq')[_0x5d24('0x7b')](_0x5d24('0x7c'),'ut',_0x5d24('0x7d'))[_0x5d24('0x46')](_0x5d24('0x7e'),_0x1ce6a0[_0x5d24('0x56')]['id']);for(var _0x829460=0x0;_0x829460<_0x47b85f[_0x5d24('0x41')];_0x829460+=0x1){let _0x55b76c=_0x47b85f[_0x829460];for(var _0x450277=0x0;_0x450277<_0x55b76c[_0x5d24('0x6b')]['length'];_0x450277+=0x1){let _0x4f6129=_0x55b76c[_0x5d24('0x6b')][_0x450277];var _0x43fcdf=_0x464c68[_0x5d24('0x7f')]();_0x43fcdf[_0x5d24('0x46')](_0x5d24('0x80'),_0x4f6129['id']);_0x362215[_0x5d24('0x81')](db[_0x5d24('0x70')]['query'](_0x43fcdf[_0x5d24('0x82')](),{'type':db[_0x5d24('0x70')][_0x5d24('0x83')][_0x5d24('0x84')]})[_0x5d24('0x2a')](function(_0x4f8967){if(_0x4f8967['length']===0x1){return _0x4f6129['id'];}else{var _0x226caa=_[_0x5d24('0x85')](_[_0x5d24('0x34')](_0x4f8967,_0x5d24('0x86')),function(_0x32deac){return _[_0x5d24('0x87')](_0x54bf27,_0x32deac);});if(_0x226caa){return _0x4f6129['id'];}}}));}}return BPromise['all'](_0x362215)[_0x5d24('0x2a')](function(_0x22ae71){_0x15daa2=_(_0x15daa2)[_0x5d24('0x88')](_0x22ae71)[_0x5d24('0x89')]()[_0x5d24('0x8a')]();return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x1ce6a0[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](function(_0xcc2d52){return db[_0x5d24('0x70')][_0x5d24('0x71')](function(_0x3e83b1){return _0xcc2d52[_0x5d24('0x76')](_0x1ce6a0[_0x5d24('0x3c')]['ids'],{'transaction':_0x3e83b1})['then'](function(){if(!_['isEmpty'](_0x15daa2)){return _0xcc2d52['removeAgents'](_0x15daa2,{'transaction':_0x3e83b1});}})[_0x5d24('0x2a')](function(){_0x15daa2['forEach'](function(_0x2f3d6b){socket['emit'](_0x5d24('0x8b'),{'UserId':_0x2f3d6b,'OpenchannelQueueId':_0xcc2d52['id']});});});});});});})[_0x5d24('0x2a')](respondWithStatusCode(_0x1b9a1e,null))['catch'](handleError(_0x1b9a1e,null));};exports[_0x5d24('0x8c')]=function(_0x5616a8,_0x5ccc1a,_0x3cc8db){return db[_0x5d24('0x35')]['find']({'where':{'id':_0x5616a8[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x5ccc1a,null))[_0x5d24('0x2a')](function(_0x6c107d){if(_0x6c107d){return _0x6c107d[_0x5d24('0x8c')](_0x5616a8[_0x5d24('0x50')]['ids'],_[_0x5d24('0x8d')](_0x5616a8[_0x5d24('0x50')],[_0x5d24('0x6a'),'id'])||{})[_0x5d24('0x8e')](function(_0x44a61a){for(var _0xb8e78c=0x0;_0xb8e78c<_0x5616a8[_0x5d24('0x50')][_0x5d24('0x6a')][_0x5d24('0x41')];_0xb8e78c+=0x1){socket[_0x5d24('0x8f')](_0x5d24('0x75'),{'UserId':Number(_0x5616a8['body'][_0x5d24('0x6a')][_0xb8e78c]),'OpenchannelQueueId':Number(_0x5616a8[_0x5d24('0x56')]['id'])});}return _0x44a61a;});}})['then'](respondWithResult(_0x5ccc1a,null))[_0x5d24('0x4d')](handleError(_0x5ccc1a,null));};exports['removeAgents']=function(_0x1928f2,_0x242797,_0x59f9b2){return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x1928f2[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x242797,null))[_0x5d24('0x2a')](function(_0x55db7c){if(_0x55db7c){return _0x55db7c['removeAgents'](_0x1928f2[_0x5d24('0x3c')][_0x5d24('0x6a')])[_0x5d24('0x2a')](function(){if(_[_0x5d24('0x90')](_0x1928f2[_0x5d24('0x3c')][_0x5d24('0x6a')])){for(var _0x37f732=0x0;_0x37f732<_0x1928f2[_0x5d24('0x3c')]['ids'][_0x5d24('0x41')];_0x37f732+=0x1){socket['emit'](_0x5d24('0x8b'),{'UserId':Number(_0x1928f2[_0x5d24('0x3c')]['ids'][_0x37f732]),'OpenchannelQueueId':Number(_0x1928f2[_0x5d24('0x56')]['id'])});}}else{socket['emit'](_0x5d24('0x8b'),{'UserId':Number(_0x1928f2[_0x5d24('0x3c')][_0x5d24('0x6a')]),'OpenchannelQueueId':Number(_0x1928f2[_0x5d24('0x56')]['id'])});}});}})[_0x5d24('0x2a')](respondWithStatusCode(_0x242797,null))[_0x5d24('0x4d')](handleError(_0x242797,null));};exports[_0x5d24('0x91')]=function(_0x530a42,_0x1b79d9,_0x2685b4){var _0x2dfe3a={};var _0x142b1d={};var _0x5c9f7e;var _0x348db7;return db[_0x5d24('0x35')][_0x5d24('0x59')]({'where':{'id':_0x530a42[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x1b79d9,null))[_0x5d24('0x2a')](function(_0x1ddcfa){if(_0x1ddcfa){_0x5c9f7e=_0x1ddcfa;_0x142b1d[_0x5d24('0x39')]=_[_0x5d24('0x3b')](db[_0x5d24('0x5f')][_0x5d24('0x36')]);_0x142b1d[_0x5d24('0x3c')]=_['keys'](_0x530a42[_0x5d24('0x3c')]);_0x142b1d['filters']=_[_0x5d24('0x3e')](_0x142b1d[_0x5d24('0x39')],_0x142b1d['query']);_0x2dfe3a['attributes']=_[_0x5d24('0x3e')](_0x142b1d[_0x5d24('0x39')],qs[_0x5d24('0x3f')](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x2dfe3a['attributes']=_0x2dfe3a[_0x5d24('0x40')][_0x5d24('0x41')]?_0x2dfe3a['attributes']:_0x142b1d[_0x5d24('0x39')];_0x2dfe3a[_0x5d24('0x44')]=qs['sort'](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x45')]);_0x2dfe3a[_0x5d24('0x46')]=qs[_0x5d24('0x3d')](_['pick'](_0x530a42['query'],_0x142b1d[_0x5d24('0x3d')]));if(_0x530a42[_0x5d24('0x3c')][_0x5d24('0x47')]){_0x2dfe3a[_0x5d24('0x46')]=_[_0x5d24('0x48')](_0x2dfe3a[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x2dfe3a[_0x5d24('0x40')],function(_0x2b4268){var _0x4a43df={};_0x4a43df[_0x2b4268]={'$like':'%'+_0x530a42[_0x5d24('0x3c')][_0x5d24('0x47')]+'%'};return _0x4a43df;})});}_0x2dfe3a=_[_0x5d24('0x48')]({},_0x2dfe3a,_0x530a42[_0x5d24('0x5c')]);return _0x5c9f7e[_0x5d24('0x91')](_0x2dfe3a);}})['then'](function(_0x1c7719){if(_0x1c7719){_0x348db7=_0x1c7719['length'];if(!_0x530a42[_0x5d24('0x3c')][_0x5d24('0x42')](_0x5d24('0x43'))){_0x2dfe3a[_0x5d24('0x24')]=qs[_0x5d24('0x24')](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x24')]);_0x2dfe3a[_0x5d24('0x22')]=qs['offset'](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x22')]);}return _0x5c9f7e[_0x5d24('0x91')](_0x2dfe3a);}})['then'](function(_0x2eb709){if(_0x2eb709){return _0x2eb709?{'count':_0x348db7,'rows':_0x2eb709}:null;}})[_0x5d24('0x2a')](respondWithResult(_0x1b79d9,null))[_0x5d24('0x4d')](handleError(_0x1b79d9,null));};
\ No newline at end of file
+var _0x0e3e=['save','update','get','OpenchannelQueues','UserProfileResource','destroy','then','error','stack','send','index','map','OpenchannelQueue','rawAttributes','fieldName','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','keys','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMembers','findOne','OpenchannelQueueId','options','UserOpenchannelQueue','User','UserId','agent','openchannelPause','updatedAt','createdAt','format','SIP','Team','getTeams','ids','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','join','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','includes','all','compact','value','isEmpty','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','nolimit','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','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','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject'];(function(_0x2f4748,_0x24af55){var _0x18eece=function(_0x489dd6){while(--_0x489dd6){_0x2f4748['push'](_0x2f4748['shift']());}};_0x18eece(++_0x24af55);}(_0x0e3e,0x64));var _0xe0e3=function(_0x20aa31,_0x24253d){_0x20aa31=_0x20aa31-0x0;var _0x4a3831=_0x0e3e[_0x20aa31];return _0x4a3831;};'use strict';var emlformat=require(_0xe0e3('0x0'));var rimraf=require(_0xe0e3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe0e3('0x2'));var rp=require(_0xe0e3('0x3'));var moment=require('moment');var BPromise=require(_0xe0e3('0x4'));var Mustache=require(_0xe0e3('0x5'));var util=require(_0xe0e3('0x6'));var path=require(_0xe0e3('0x7'));var sox=require(_0xe0e3('0x8'));var csv=require(_0xe0e3('0x9'));var ejs=require(_0xe0e3('0xa'));var fs=require('fs');var fs_extra=require(_0xe0e3('0xb'));var _=require(_0xe0e3('0xc'));var squel=require(_0xe0e3('0xd'));var crypto=require(_0xe0e3('0xe'));var jsforce=require(_0xe0e3('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe0e3('0x10'));var Papa=require(_0xe0e3('0x11'));var Redis=require(_0xe0e3('0x12'));var authService=require(_0xe0e3('0x13'));var qs=require(_0xe0e3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe0e3('0x15'));var logger=require('../../config/logger')(_0xe0e3('0x16'));var utils=require(_0xe0e3('0x17'));var config=require(_0xe0e3('0x18'));var licenseUtil=require(_0xe0e3('0x19'));var db=require(_0xe0e3('0x1a'))['db'];config[_0xe0e3('0x1b')]=_[_0xe0e3('0x1c')](config[_0xe0e3('0x1b')],{'host':_0xe0e3('0x1d'),'port':0x18eb});var socket=require(_0xe0e3('0x1e'))(new Redis(config['redis']));require(_0xe0e3('0x1f'))[_0xe0e3('0x20')](socket);function respondWithStatusCode(_0x139b81,_0x43606d){_0x43606d=_0x43606d||0xcc;return function(_0x972295){if(_0x972295){return _0x139b81[_0xe0e3('0x21')](_0x43606d);}return _0x139b81[_0xe0e3('0x22')](_0x43606d)[_0xe0e3('0x23')]();};}function respondWithResult(_0x4f6588,_0x5968a4){_0x5968a4=_0x5968a4||0xc8;return function(_0x4775c0){if(_0x4775c0){return _0x4f6588['status'](_0x5968a4)[_0xe0e3('0x24')](_0x4775c0);}};}function respondWithFilteredResult(_0x287829,_0x3a19b8){return function(_0x10970b){if(_0x10970b){var _0x140720=typeof _0x3a19b8[_0xe0e3('0x25')]==='undefined'&&typeof _0x3a19b8[_0xe0e3('0x26')]===_0xe0e3('0x27');var _0x3ffd8b=_0x10970b[_0xe0e3('0x28')];var _0x3ed3d8=_0x140720?0x0:_0x3a19b8[_0xe0e3('0x25')];var _0xea672e=_0x140720?_0x10970b[_0xe0e3('0x28')]:_0x3a19b8[_0xe0e3('0x25')]+_0x3a19b8['limit'];var _0x2b4ad9;if(_0xea672e>=_0x3ffd8b){_0xea672e=_0x3ffd8b;_0x2b4ad9=0xc8;}else{_0x2b4ad9=0xce;}_0x287829[_0xe0e3('0x22')](_0x2b4ad9);return _0x287829[_0xe0e3('0x29')](_0xe0e3('0x2a'),_0x3ed3d8+'-'+_0xea672e+'/'+_0x3ffd8b)[_0xe0e3('0x24')](_0x10970b);}return null;};}function patchUpdates(_0x1369dd){return function(_0x3e4251){try{jsonpatch['apply'](_0x3e4251,_0x1369dd,!![]);}catch(_0x4c6191){return BPromise[_0xe0e3('0x2b')](_0x4c6191);}return _0x3e4251[_0xe0e3('0x2c')]();};}function saveUpdates(_0x4407da,_0x5431ca){return function(_0x325e2a){if(_0x325e2a){return _0x325e2a[_0xe0e3('0x2d')](_0x4407da)['then'](function(_0x19ac3a){return _0x19ac3a;});}return null;};}function removeEntity(_0x3cbdbb,_0x4dff07){return function(_0x2138f6){if(_0x2138f6){return _0x2138f6['destroy']()['then'](function(){var _0x2e9cc1=_0x2138f6[_0xe0e3('0x2e')]({'plain':!![]});var _0x41e860=_0xe0e3('0x2f');return db[_0xe0e3('0x30')][_0xe0e3('0x31')]({'where':{'type':_0x41e860,'resourceId':_0x2e9cc1['id']}})[_0xe0e3('0x32')](function(){return _0x2138f6;});})['then'](function(){_0x3cbdbb[_0xe0e3('0x22')](0xcc)[_0xe0e3('0x23')]();});}};}function handleEntityNotFound(_0x28cc71,_0x302095){return function(_0x3bcd80){if(!_0x3bcd80){_0x28cc71['sendStatus'](0x194);}return _0x3bcd80;};}function handleError(_0x2edb2d,_0x54b44f){_0x54b44f=_0x54b44f||0x1f4;return function(_0x2acda3){logger[_0xe0e3('0x33')](_0x2acda3[_0xe0e3('0x34')]);if(_0x2acda3['name']){delete _0x2acda3['name'];}_0x2edb2d[_0xe0e3('0x22')](_0x54b44f)[_0xe0e3('0x35')](_0x2acda3);};}exports[_0xe0e3('0x36')]=function(_0x333da7,_0x56e411){var _0x33d547={},_0x205bb2={},_0x347c6d={'count':0x0,'rows':[]};var _0x4cf740=_[_0xe0e3('0x37')](db[_0xe0e3('0x38')][_0xe0e3('0x39')],function(_0x2619f1){return{'name':_0x2619f1[_0xe0e3('0x3a')],'type':_0x2619f1['type']['key']};});_0x205bb2[_0xe0e3('0x3b')]=_['map'](_0x4cf740,_0xe0e3('0x3c'));_0x205bb2[_0xe0e3('0x3d')]=_['keys'](_0x333da7[_0xe0e3('0x3d')]);_0x205bb2[_0xe0e3('0x3e')]=_[_0xe0e3('0x3f')](_0x205bb2[_0xe0e3('0x3b')],_0x205bb2[_0xe0e3('0x3d')]);_0x33d547[_0xe0e3('0x40')]=_[_0xe0e3('0x3f')](_0x205bb2['model'],qs[_0xe0e3('0x41')](_0x333da7[_0xe0e3('0x3d')][_0xe0e3('0x41')]));_0x33d547[_0xe0e3('0x40')]=_0x33d547[_0xe0e3('0x40')][_0xe0e3('0x42')]?_0x33d547[_0xe0e3('0x40')]:_0x205bb2[_0xe0e3('0x3b')];if(!_0x333da7['query'][_0xe0e3('0x43')]('nolimit')){_0x33d547[_0xe0e3('0x26')]=qs['limit'](_0x333da7[_0xe0e3('0x3d')][_0xe0e3('0x26')]);_0x33d547[_0xe0e3('0x25')]=qs['offset'](_0x333da7[_0xe0e3('0x3d')]['offset']);}_0x33d547[_0xe0e3('0x44')]=qs[_0xe0e3('0x45')](_0x333da7['query'][_0xe0e3('0x45')]);_0x33d547[_0xe0e3('0x46')]=qs[_0xe0e3('0x3e')](_[_0xe0e3('0x47')](_0x333da7['query'],_0x205bb2['filters']),_0x4cf740);if(_0x333da7[_0xe0e3('0x3d')][_0xe0e3('0x48')]){_0x33d547[_0xe0e3('0x46')]=_[_0xe0e3('0x49')](_0x33d547[_0xe0e3('0x46')],{'$or':_[_0xe0e3('0x37')](_0x4cf740,function(_0x3fae41){if(_0x3fae41[_0xe0e3('0x4a')]!==_0xe0e3('0x4b')){var _0x30b80c={};_0x30b80c[_0x3fae41[_0xe0e3('0x3c')]]={'$like':'%'+_0x333da7['query'][_0xe0e3('0x48')]+'%'};return _0x30b80c;}})});}_0x33d547=_[_0xe0e3('0x49')]({},_0x33d547,_0x333da7['options']);var _0x2c6cd2={'where':_0x33d547[_0xe0e3('0x46')]};return db[_0xe0e3('0x38')][_0xe0e3('0x28')](_0x2c6cd2)[_0xe0e3('0x32')](function(_0x575bb1){_0x347c6d['count']=_0x575bb1;if(_0x333da7[_0xe0e3('0x3d')][_0xe0e3('0x4c')]){_0x33d547[_0xe0e3('0x4d')]=[{'all':!![]}];}return db[_0xe0e3('0x38')][_0xe0e3('0x4e')](_0x33d547);})[_0xe0e3('0x32')](function(_0x3651e9){_0x347c6d[_0xe0e3('0x4f')]=_0x3651e9;return _0x347c6d;})[_0xe0e3('0x32')](respondWithFilteredResult(_0x56e411,_0x33d547))[_0xe0e3('0x50')](handleError(_0x56e411,null));};exports['show']=function(_0x539bf4,_0x177d11){var _0x2a64f0={'raw':!![],'where':{'id':_0x539bf4['params']['id']}},_0x5a234e={};_0x5a234e[_0xe0e3('0x3b')]=_[_0xe0e3('0x51')](db[_0xe0e3('0x38')][_0xe0e3('0x39')]);_0x5a234e[_0xe0e3('0x3d')]=_['keys'](_0x539bf4[_0xe0e3('0x3d')]);_0x5a234e[_0xe0e3('0x3e')]=_[_0xe0e3('0x3f')](_0x5a234e[_0xe0e3('0x3b')],_0x5a234e[_0xe0e3('0x3d')]);_0x2a64f0['attributes']=_[_0xe0e3('0x3f')](_0x5a234e[_0xe0e3('0x3b')],qs['fields'](_0x539bf4[_0xe0e3('0x3d')][_0xe0e3('0x41')]));_0x2a64f0[_0xe0e3('0x40')]=_0x2a64f0[_0xe0e3('0x40')][_0xe0e3('0x42')]?_0x2a64f0['attributes']:_0x5a234e[_0xe0e3('0x3b')];if(_0x539bf4[_0xe0e3('0x3d')][_0xe0e3('0x4c')]){_0x2a64f0['include']=[{'all':!![]}];}_0x2a64f0=_[_0xe0e3('0x49')]({},_0x2a64f0,_0x539bf4['options']);return db[_0xe0e3('0x38')][_0xe0e3('0x52')](_0x2a64f0)[_0xe0e3('0x32')](handleEntityNotFound(_0x177d11,null))[_0xe0e3('0x32')](respondWithResult(_0x177d11,null))[_0xe0e3('0x50')](handleError(_0x177d11,null));};exports[_0xe0e3('0x53')]=function(_0x369c0e,_0x48e1b0){return db[_0xe0e3('0x38')]['create'](_0x369c0e[_0xe0e3('0x54')],{})[_0xe0e3('0x32')](function(_0x30ea19){var _0x5ae9a7=_0x369c0e['user']['get']({'plain':!![]});if(!_0x5ae9a7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5ae9a7[_0xe0e3('0x55')]===_0xe0e3('0x56')){var _0x848683=_0x30ea19['get']({'plain':!![]});var _0x367d57='OpenchannelQueues';return db[_0xe0e3('0x57')]['find']({'where':{'name':_0x367d57,'userProfileId':_0x5ae9a7[_0xe0e3('0x58')]},'raw':!![]})[_0xe0e3('0x32')](function(_0x41277b){if(_0x41277b&&_0x41277b[_0xe0e3('0x59')]===0x0){return db['UserProfileResource'][_0xe0e3('0x53')]({'name':_0x848683[_0xe0e3('0x3c')],'resourceId':_0x848683['id'],'type':_0x41277b['name'],'sectionId':_0x41277b['id']},{})[_0xe0e3('0x32')](function(){return _0x30ea19;});}else{return _0x30ea19;}})['catch'](function(_0x31d8ec){logger['error'](_0xe0e3('0x5a'),_0x31d8ec);throw _0x31d8ec;});}return _0x30ea19;})[_0xe0e3('0x32')](respondWithResult(_0x48e1b0,0xc9))[_0xe0e3('0x50')](handleError(_0x48e1b0,null));};exports[_0xe0e3('0x2d')]=function(_0x1a8980,_0x253302){if(_0x1a8980[_0xe0e3('0x54')]['id']){delete _0x1a8980[_0xe0e3('0x54')]['id'];}return db[_0xe0e3('0x38')][_0xe0e3('0x52')]({'where':{'id':_0x1a8980[_0xe0e3('0x5b')]['id']}})[_0xe0e3('0x32')](handleEntityNotFound(_0x253302,null))[_0xe0e3('0x32')](saveUpdates(_0x1a8980[_0xe0e3('0x54')],null))[_0xe0e3('0x32')](respondWithResult(_0x253302,null))[_0xe0e3('0x50')](handleError(_0x253302,null));};exports[_0xe0e3('0x31')]=function(_0x1b07df,_0x215153){return db[_0xe0e3('0x38')][_0xe0e3('0x52')]({'where':{'id':_0x1b07df['params']['id']}})['then'](handleEntityNotFound(_0x215153,null))[_0xe0e3('0x32')](removeEntity(_0x215153,null))[_0xe0e3('0x50')](handleError(_0x215153,null));};exports['describe']=function(_0x758b3f,_0x203430){return db['OpenchannelQueue']['describe']()[_0xe0e3('0x32')](respondWithResult(_0x203430,null))[_0xe0e3('0x50')](handleError(_0x203430,null));};exports[_0xe0e3('0x5c')]=function(_0x4b64b1,_0x48655e,_0x29aabf){var _0x339989={'raw':!![],'where':{}},_0x52dbd4={},_0x18710b;return db[_0xe0e3('0x38')][_0xe0e3('0x5d')]({'where':{'id':_0x4b64b1['params']['id']}})[_0xe0e3('0x32')](handleEntityNotFound(_0x48655e,null))[_0xe0e3('0x32')](function(_0x3af397){if(_0x3af397){_0x18710b=_0x3af397['get']({'plain':!![]});_0x52dbd4[_0xe0e3('0x3b')]=_['keys'](db['UserOpenchannelQueue'][_0xe0e3('0x39')]);_0x52dbd4[_0xe0e3('0x3d')]=_[_0xe0e3('0x51')](_0x4b64b1[_0xe0e3('0x3d')]);_0x52dbd4[_0xe0e3('0x3e')]=_[_0xe0e3('0x3f')](_0x52dbd4[_0xe0e3('0x3b')],_0x52dbd4[_0xe0e3('0x3d')]);_0x339989[_0xe0e3('0x40')]=_[_0xe0e3('0x3f')](_0x52dbd4[_0xe0e3('0x3b')],qs[_0xe0e3('0x41')](_0x4b64b1['query'][_0xe0e3('0x41')]));_0x339989[_0xe0e3('0x40')]=_0x339989['attributes'][_0xe0e3('0x42')]?_0x339989[_0xe0e3('0x40')]:_0x52dbd4[_0xe0e3('0x3b')];if(!_0x4b64b1[_0xe0e3('0x3d')]['hasOwnProperty']('nolimit')){_0x339989[_0xe0e3('0x26')]=qs['limit'](_0x4b64b1[_0xe0e3('0x3d')][_0xe0e3('0x26')]);_0x339989['offset']=qs[_0xe0e3('0x25')](_0x4b64b1['query'][_0xe0e3('0x25')]);}_0x339989[_0xe0e3('0x44')]=qs[_0xe0e3('0x45')](_0x4b64b1[_0xe0e3('0x3d')]['sort']);_0x339989[_0xe0e3('0x46')]=qs[_0xe0e3('0x3e')](_[_0xe0e3('0x47')](_0x4b64b1[_0xe0e3('0x3d')],_0x52dbd4['filters']));_0x339989['where'][_0xe0e3('0x5e')]=_0x3af397['id'];if(_0x4b64b1[_0xe0e3('0x3d')][_0xe0e3('0x48')]){_0x339989[_0xe0e3('0x46')]=_[_0xe0e3('0x49')](_0x339989[_0xe0e3('0x46')],{'$or':_['map'](_0x339989[_0xe0e3('0x40')],function(_0x44aa6c){var _0x2f7411={};_0x2f7411[_0x44aa6c]={'$like':'%'+_0x4b64b1['query'][_0xe0e3('0x48')]+'%'};return _0x2f7411;})});}_0x339989=_[_0xe0e3('0x49')]({},_0x339989,_0x4b64b1[_0xe0e3('0x5f')]);return db[_0xe0e3('0x60')][_0xe0e3('0x4e')](_0x339989);}})[_0xe0e3('0x32')](function(_0x870105){if(_0x870105){return db[_0xe0e3('0x61')]['findAndCountAll']({'where':{'id':_[_0xe0e3('0x37')](_0x870105,_0xe0e3('0x62')),'role':_0xe0e3('0x63')},'attributes':['id','name',_0xe0e3('0x64'),_0xe0e3('0x65'),_0xe0e3('0x66')]});}})[_0xe0e3('0x32')](function(_0x58361b){if(_0x58361b){return{'count':_0x58361b[_0xe0e3('0x28')],'rows':_[_0xe0e3('0x37')](_0x58361b['rows'],function(_0x26e1d0){return{'membername':_0x26e1d0[_0xe0e3('0x3c')],'UserId':_0x26e1d0['id'],'queue_name':_0x18710b['name'],'OpenchannelQueueId':_0x18710b['id'],'interface':util[_0xe0e3('0x67')]('%s/%s',_0xe0e3('0x68'),_0x26e1d0[_0xe0e3('0x3c')]),'penalty':0x0,'paused':_0x26e1d0['openchannelPause'],'createdAt':_0x26e1d0[_0xe0e3('0x66')],'updatedAt':_0x26e1d0[_0xe0e3('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe0e3('0x32')](respondWithFilteredResult(_0x48655e,_0x339989))[_0xe0e3('0x50')](handleError(_0x48655e,null));};exports['getTeams']=function(_0x261865,_0x190a9e,_0x111f0c){var _0x234463={};var _0x19aa68={};var _0x46bcf1;var _0x5340ec;return db['OpenchannelQueue'][_0xe0e3('0x5d')]({'where':{'id':_0x261865[_0xe0e3('0x5b')]['id']}})['then'](handleEntityNotFound(_0x190a9e,null))[_0xe0e3('0x32')](function(_0x5510d1){if(_0x5510d1){_0x46bcf1=_0x5510d1;_0x19aa68[_0xe0e3('0x3b')]=_['keys'](db[_0xe0e3('0x69')][_0xe0e3('0x39')]);_0x19aa68[_0xe0e3('0x3d')]=_[_0xe0e3('0x51')](_0x261865[_0xe0e3('0x3d')]);_0x19aa68['filters']=_[_0xe0e3('0x3f')](_0x19aa68[_0xe0e3('0x3b')],_0x19aa68[_0xe0e3('0x3d')]);_0x234463['attributes']=_[_0xe0e3('0x3f')](_0x19aa68[_0xe0e3('0x3b')],qs['fields'](_0x261865[_0xe0e3('0x3d')][_0xe0e3('0x41')]));_0x234463['attributes']=_0x234463[_0xe0e3('0x40')][_0xe0e3('0x42')]?_0x234463['attributes']:_0x19aa68[_0xe0e3('0x3b')];_0x234463[_0xe0e3('0x44')]=qs[_0xe0e3('0x45')](_0x261865[_0xe0e3('0x3d')][_0xe0e3('0x45')]);_0x234463[_0xe0e3('0x46')]=qs[_0xe0e3('0x3e')](_[_0xe0e3('0x47')](_0x261865[_0xe0e3('0x3d')],_0x19aa68[_0xe0e3('0x3e')]));if(_0x261865['query'][_0xe0e3('0x48')]){_0x234463[_0xe0e3('0x46')]=_['merge'](_0x234463[_0xe0e3('0x46')],{'$or':_['map'](_0x234463['attributes'],function(_0x5c4ff5){var _0x41f220={};_0x41f220[_0x5c4ff5]={'$like':'%'+_0x261865[_0xe0e3('0x3d')][_0xe0e3('0x48')]+'%'};return _0x41f220;})});}_0x234463=_[_0xe0e3('0x49')]({},_0x234463,_0x261865[_0xe0e3('0x5f')]);return _0x46bcf1['getTeams'](_0x234463);}})[_0xe0e3('0x32')](function(_0x1922bd){if(_0x1922bd){_0x5340ec=_0x1922bd[_0xe0e3('0x42')];if(!_0x261865['query']['hasOwnProperty']('nolimit')){_0x234463[_0xe0e3('0x26')]=qs[_0xe0e3('0x26')](_0x261865[_0xe0e3('0x3d')]['limit']);_0x234463[_0xe0e3('0x25')]=qs[_0xe0e3('0x25')](_0x261865[_0xe0e3('0x3d')]['offset']);}return _0x46bcf1[_0xe0e3('0x6a')](_0x234463);}})[_0xe0e3('0x32')](function(_0x5bf063){if(_0x5bf063){return _0x5bf063?{'count':_0x5340ec,'rows':_0x5bf063}:null;}})[_0xe0e3('0x32')](respondWithResult(_0x190a9e,null))[_0xe0e3('0x50')](handleError(_0x190a9e,null));};exports['addTeams']=function(_0x5f4aa8,_0x48464b,_0x4b580){var _0x5427e7=_0x5f4aa8[_0xe0e3('0x54')][_0xe0e3('0x6b')];return db[_0xe0e3('0x69')][_0xe0e3('0x4e')]({'where':{'id':_0x5427e7},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0xe0e3('0x6c'),_0xe0e3('0x6d'),_0xe0e3('0x6e')],'raw':!![]}]})[_0xe0e3('0x32')](function(_0x7da0fe){if(_0x7da0fe){var _0x3b34d9=_[_0xe0e3('0x6f')](_0x7da0fe,function(_0x455f3d){var _0x315bb8=_0x455f3d[_0xe0e3('0x2e')]({'plain':!![]});return _0x315bb8['Agents'];});return db[_0xe0e3('0x38')]['find']({'where':{'id':_0x5f4aa8[_0xe0e3('0x5b')]['id']}})['then'](function(_0x39e72f){return db[_0xe0e3('0x70')][_0xe0e3('0x71')](function(_0x55b095){return _0x39e72f['addTeams'](_0x5427e7,{'transaction':_0x55b095})['then'](function(){return BPromise[_0xe0e3('0x72')](_0x3b34d9,function(_0x2668d9){return db['UserOpenchannelQueue'][_0xe0e3('0x73')]({'where':{'UserId':_0x2668d9['id'],'OpenchannelQueueId':_0x5f4aa8[_0xe0e3('0x5b')]['id']},'transaction':_0x55b095});});})[_0xe0e3('0x32')](function(){_0x3b34d9['forEach'](function(_0x5be4df){socket[_0xe0e3('0x74')](_0xe0e3('0x75'),{'UserId':_0x5be4df['id'],'OpenchannelQueueId':_0x39e72f['id']});});});});});}})[_0xe0e3('0x32')](respondWithStatusCode(_0x48464b,null))[_0xe0e3('0x50')](handleError(_0x48464b,null));};exports[_0xe0e3('0x76')]=function(_0x55e855,_0x569e64,_0x294d8b){return db[_0xe0e3('0x69')]['findAll']({'where':{'id':_0x55e855['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xe0e3('0x61')],'as':_0xe0e3('0x77'),'attributes':['id'],'raw':!![]}]})[_0xe0e3('0x32')](handleEntityNotFound(_0x569e64,null))[_0xe0e3('0x32')](function(_0x28873b){var _0x4fb3c5=_[_0xe0e3('0x37')](_0x28873b,'id');var _0x3a6b9b=[];var _0x5439c8=[];var _0x3fb852=squel[_0xe0e3('0x78')]();_0x3fb852[_0xe0e3('0x79')](_0xe0e3('0x7a'))[_0xe0e3('0x7b')]('team_has_openchannel_queues','tq')[_0xe0e3('0x7c')](_0xe0e3('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xe0e3('0x7e'),_0x55e855[_0xe0e3('0x5b')]['id']);for(var _0x5c2641=0x0;_0x5c2641<_0x28873b[_0xe0e3('0x42')];_0x5c2641+=0x1){let _0x3f4863=_0x28873b[_0x5c2641];for(var _0x25114e=0x0;_0x25114e<_0x3f4863[_0xe0e3('0x77')][_0xe0e3('0x42')];_0x25114e+=0x1){let _0x450ab0=_0x3f4863[_0xe0e3('0x77')][_0x25114e];var _0x7a225a=_0x3fb852[_0xe0e3('0x7f')]();_0x7a225a[_0xe0e3('0x46')](_0xe0e3('0x80'),_0x450ab0['id']);_0x5439c8[_0xe0e3('0x81')](db[_0xe0e3('0x70')]['query'](_0x7a225a['toString'](),{'type':db[_0xe0e3('0x70')]['QueryTypes']['SELECT']})[_0xe0e3('0x32')](function(_0x12b6e8){if(_0x12b6e8[_0xe0e3('0x42')]===0x1){return _0x450ab0['id'];}else{var _0x2daf67=_['every'](_[_0xe0e3('0x37')](_0x12b6e8,'TeamId'),function(_0x167f77){return _[_0xe0e3('0x82')](_0x4fb3c5,_0x167f77);});if(_0x2daf67){return _0x450ab0['id'];}}}));}}return BPromise[_0xe0e3('0x83')](_0x5439c8)[_0xe0e3('0x32')](function(_0x3c8769){_0x3a6b9b=_(_0x3a6b9b)['union'](_0x3c8769)[_0xe0e3('0x84')]()[_0xe0e3('0x85')]();return db[_0xe0e3('0x38')][_0xe0e3('0x52')]({'where':{'id':_0x55e855[_0xe0e3('0x5b')]['id']}})[_0xe0e3('0x32')](function(_0x2db36d){return db[_0xe0e3('0x70')][_0xe0e3('0x71')](function(_0x1a1718){return _0x2db36d[_0xe0e3('0x76')](_0x55e855[_0xe0e3('0x3d')][_0xe0e3('0x6b')],{'transaction':_0x1a1718})[_0xe0e3('0x32')](function(){if(!_[_0xe0e3('0x86')](_0x3a6b9b)){return _0x2db36d['removeAgents'](_0x3a6b9b,{'transaction':_0x1a1718});}})[_0xe0e3('0x32')](function(){_0x3a6b9b[_0xe0e3('0x87')](function(_0x1cfc9c){socket[_0xe0e3('0x74')](_0xe0e3('0x88'),{'UserId':_0x1cfc9c,'OpenchannelQueueId':_0x2db36d['id']});});});});});});})[_0xe0e3('0x32')](respondWithStatusCode(_0x569e64,null))[_0xe0e3('0x50')](handleError(_0x569e64,null));};exports[_0xe0e3('0x89')]=function(_0x41e3b6,_0x1f4949,_0x8e805e){return db[_0xe0e3('0x38')][_0xe0e3('0x52')]({'where':{'id':_0x41e3b6[_0xe0e3('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1f4949,null))[_0xe0e3('0x32')](function(_0x1b7f30){if(_0x1b7f30){return _0x1b7f30[_0xe0e3('0x89')](_0x41e3b6[_0xe0e3('0x54')]['ids'],_[_0xe0e3('0x8a')](_0x41e3b6[_0xe0e3('0x54')],[_0xe0e3('0x6b'),'id'])||{})[_0xe0e3('0x8b')](function(_0x6a9bf1){for(var _0x57afa2=0x0;_0x57afa2<_0x41e3b6['body'][_0xe0e3('0x6b')]['length'];_0x57afa2+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x41e3b6['body'][_0xe0e3('0x6b')][_0x57afa2]),'OpenchannelQueueId':Number(_0x41e3b6[_0xe0e3('0x5b')]['id'])});}return _0x6a9bf1;});}})[_0xe0e3('0x32')](respondWithResult(_0x1f4949,null))[_0xe0e3('0x50')](handleError(_0x1f4949,null));};exports['removeAgents']=function(_0x4815bf,_0x240bbd,_0x2bcc5d){return db['OpenchannelQueue'][_0xe0e3('0x52')]({'where':{'id':_0x4815bf[_0xe0e3('0x5b')]['id']}})[_0xe0e3('0x32')](handleEntityNotFound(_0x240bbd,null))[_0xe0e3('0x32')](function(_0x4a87de){if(_0x4a87de){return _0x4a87de[_0xe0e3('0x8c')](_0x4815bf[_0xe0e3('0x3d')]['ids'])[_0xe0e3('0x32')](function(){if(_[_0xe0e3('0x8d')](_0x4815bf[_0xe0e3('0x3d')][_0xe0e3('0x6b')])){for(var _0x33dce9=0x0;_0x33dce9<_0x4815bf[_0xe0e3('0x3d')]['ids'][_0xe0e3('0x42')];_0x33dce9+=0x1){socket[_0xe0e3('0x74')](_0xe0e3('0x88'),{'UserId':Number(_0x4815bf['query'][_0xe0e3('0x6b')][_0x33dce9]),'OpenchannelQueueId':Number(_0x4815bf[_0xe0e3('0x5b')]['id'])});}}else{socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x4815bf[_0xe0e3('0x3d')]['ids']),'OpenchannelQueueId':Number(_0x4815bf[_0xe0e3('0x5b')]['id'])});}});}})[_0xe0e3('0x32')](respondWithStatusCode(_0x240bbd,null))['catch'](handleError(_0x240bbd,null));};exports[_0xe0e3('0x8e')]=function(_0x399d68,_0xe5eaaa,_0x4c7814){var _0x383466={};var _0xe99cae={};var _0x3352d7;var _0x482d07;return db[_0xe0e3('0x38')][_0xe0e3('0x5d')]({'where':{'id':_0x399d68[_0xe0e3('0x5b')]['id']}})['then'](handleEntityNotFound(_0xe5eaaa,null))[_0xe0e3('0x32')](function(_0x5ee2e6){if(_0x5ee2e6){_0x3352d7=_0x5ee2e6;_0xe99cae[_0xe0e3('0x3b')]=_[_0xe0e3('0x51')](db[_0xe0e3('0x61')][_0xe0e3('0x39')]);_0xe99cae[_0xe0e3('0x3d')]=_[_0xe0e3('0x51')](_0x399d68[_0xe0e3('0x3d')]);_0xe99cae[_0xe0e3('0x3e')]=_[_0xe0e3('0x3f')](_0xe99cae[_0xe0e3('0x3b')],_0xe99cae[_0xe0e3('0x3d')]);_0x383466[_0xe0e3('0x40')]=_[_0xe0e3('0x3f')](_0xe99cae[_0xe0e3('0x3b')],qs[_0xe0e3('0x41')](_0x399d68[_0xe0e3('0x3d')][_0xe0e3('0x41')]));_0x383466[_0xe0e3('0x40')]=_0x383466[_0xe0e3('0x40')][_0xe0e3('0x42')]?_0x383466[_0xe0e3('0x40')]:_0xe99cae[_0xe0e3('0x3b')];_0x383466[_0xe0e3('0x44')]=qs[_0xe0e3('0x45')](_0x399d68[_0xe0e3('0x3d')]['sort']);_0x383466[_0xe0e3('0x46')]=qs[_0xe0e3('0x3e')](_[_0xe0e3('0x47')](_0x399d68['query'],_0xe99cae[_0xe0e3('0x3e')]));if(_0x399d68[_0xe0e3('0x3d')][_0xe0e3('0x48')]){_0x383466[_0xe0e3('0x46')]=_[_0xe0e3('0x49')](_0x383466[_0xe0e3('0x46')],{'$or':_['map'](_0x383466[_0xe0e3('0x40')],function(_0x3d5408){var _0x59445c={};_0x59445c[_0x3d5408]={'$like':'%'+_0x399d68['query']['filter']+'%'};return _0x59445c;})});}_0x383466=_[_0xe0e3('0x49')]({},_0x383466,_0x399d68[_0xe0e3('0x5f')]);return _0x3352d7['getAgents'](_0x383466);}})['then'](function(_0x438408){if(_0x438408){_0x482d07=_0x438408['length'];if(!_0x399d68[_0xe0e3('0x3d')][_0xe0e3('0x43')](_0xe0e3('0x8f'))){_0x383466['limit']=qs[_0xe0e3('0x26')](_0x399d68[_0xe0e3('0x3d')][_0xe0e3('0x26')]);_0x383466['offset']=qs[_0xe0e3('0x25')](_0x399d68[_0xe0e3('0x3d')][_0xe0e3('0x25')]);}return _0x3352d7['getAgents'](_0x383466);}})[_0xe0e3('0x32')](function(_0x16f8d9){if(_0x16f8d9){return _0x16f8d9?{'count':_0x482d07,'rows':_0x16f8d9}:null;}})[_0xe0e3('0x32')](respondWithResult(_0xe5eaaa,null))[_0xe0e3('0x50')](handleError(_0xe5eaaa,null));};
\ No newline at end of file
index c12652f..e346742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef56=['../../mysqldb','OpenchannelQueue','emit','hasOwnProperty','exports'];(function(_0x2378ef,_0x1b182e){var _0x9dc6fb=function(_0x4ce9e0){while(--_0x4ce9e0){_0x2378ef['push'](_0x2378ef['shift']());}};_0x9dc6fb(++_0x1b182e);}(_0xef56,0x140));var _0x6ef5=function(_0x119cd8,_0x556b73){_0x119cd8=_0x119cd8-0x0;var _0x7072a3=_0xef56[_0x119cd8];return _0x7072a3;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x6ef5('0x0'))['db'][_0x6ef5('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x57b71e){return function(_0x3e9844,_0x3d9a82,_0x48e260){OpenchannelQueueEvents[_0x6ef5('0x2')](_0x57b71e+':'+_0x3e9844['id'],_0x3e9844);OpenchannelQueueEvents[_0x6ef5('0x2')](_0x57b71e,_0x3e9844);_0x48e260(null);};}for(var e in events){if(events[_0x6ef5('0x3')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x6ef5('0x4')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xdbac=['OpenchannelQueue','update','remove','emit','exports','events'];(function(_0x51355f,_0x568d8b){var _0x27dbcc=function(_0x33c54e){while(--_0x33c54e){_0x51355f['push'](_0x51355f['shift']());}};_0x27dbcc(++_0x568d8b);}(_0xdbac,0x1cd));var _0xcdba=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0xdbac[_0x422905];return _0x33dc6c;};'use strict';var EventEmitter=require(_0xcdba('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0xcdba('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xcdba('0x2'),'afterDestroy':_0xcdba('0x3')};function emitEvent(_0x4b959c){return function(_0x2341e4,_0x2285a6,_0xcbaece){OpenchannelQueueEvents[_0xcdba('0x4')](_0x4b959c+':'+_0x2341e4['id'],_0x2341e4);OpenchannelQueueEvents['emit'](_0x4b959c,_0x2341e4);_0xcbaece(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0xcdba('0x5')]=OpenchannelQueueEvents;
\ No newline at end of file
index 9c14d40..98d53a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3607=['path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','lodash','api','moment','request-promise'];(function(_0x57241c,_0x4ee049){var _0x5c18f2=function(_0x4cab6a){while(--_0x4cab6a){_0x57241c['push'](_0x57241c['shift']());}};_0x5c18f2(++_0x4ee049);}(_0x3607,0xc2));var _0x7360=function(_0xbf399f,_0x5ddc2a){_0xbf399f=_0xbf399f-0x0;var _0x1f41e5=_0x3607[_0xbf399f];return _0x1f41e5;};'use strict';var _=require(_0x7360('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7360('0x1'));var moment=require(_0x7360('0x2'));var BPromise=require('bluebird');var rp=require(_0x7360('0x3'));var fs=require('fs');var path=require(_0x7360('0x4'));var rimraf=require(_0x7360('0x5'));var config=require(_0x7360('0x6'));var attributes=require(_0x7360('0x7'));module[_0x7360('0x8')]=function(_0x566cb3,_0x34516d){return _0x566cb3['define']('OpenchannelQueue',attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2667=['exports','define','OpenchannelQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes'];(function(_0x115a4d,_0x184cfe){var _0x4d6d62=function(_0x59f9da){while(--_0x59f9da){_0x115a4d['push'](_0x115a4d['shift']());}};_0x4d6d62(++_0x184cfe);}(_0x2667,0xb9));var _0x7266=function(_0x29df70,_0x3614b1){_0x29df70=_0x29df70-0x0;var _0x522f34=_0x2667[_0x29df70];return _0x522f34;};'use strict';var _=require(_0x7266('0x0'));var util=require(_0x7266('0x1'));var logger=require(_0x7266('0x2'))('api');var moment=require(_0x7266('0x3'));var BPromise=require(_0x7266('0x4'));var rp=require(_0x7266('0x5'));var fs=require('fs');var path=require(_0x7266('0x6'));var rimraf=require(_0x7266('0x7'));var config=require(_0x7266('0x8'));var attributes=require(_0x7266('0x9'));module[_0x7266('0xa')]=function(_0x5a8a18,_0x371ea3){return _0x5a8a18[_0x7266('0xb')](_0x7266('0xc'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e1036ff..7243b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2286=['redis','./openchannelQueue.socket','register','request','info','request\x20sent','stringify','error','OpenchannelQueue,\x20%s,\x20%s','message','catch','GetOpenchannelQueue','findAll','options','raw','where','attributes','include','map','model','debug','ShowOpenchannelQueue','OpenchannelQueue','find','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','localhost'];(function(_0x40176b,_0x168e9f){var _0x874f78=function(_0x241b18){while(--_0x241b18){_0x40176b['push'](_0x40176b['shift']());}};_0x874f78(++_0x168e9f);}(_0x2286,0xf7));var _0x6228=function(_0x30414a,_0x3c8ed5){_0x30414a=_0x30414a-0x0;var _0x77ca87=_0x2286[_0x30414a];return _0x77ca87;};'use strict';var _=require(_0x6228('0x0'));var util=require(_0x6228('0x1'));var moment=require('moment');var BPromise=require(_0x6228('0x2'));var rs=require(_0x6228('0x3'));var fs=require('fs');var Redis=require(_0x6228('0x4'));var db=require(_0x6228('0x5'))['db'];var utils=require(_0x6228('0x6'));var logger=require('../../config/logger')(_0x6228('0x7'));var config=require(_0x6228('0x8'));var jayson=require(_0x6228('0x9'));var client=jayson['client'][_0x6228('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x6228('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6228('0xc')]));require(_0x6228('0xd'))[_0x6228('0xe')](socket);function respondWithRpcPromise(_0x2d6c40,_0x8c3dfa,_0x117cc3){return new BPromise(function(_0x216b83,_0x41d3d7){return client[_0x6228('0xf')](_0x2d6c40,_0x117cc3)['then'](function(_0x12839b){logger[_0x6228('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x8c3dfa,_0x6228('0x11'));logger['debug']('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x8c3dfa,_0x6228('0x11'),JSON[_0x6228('0x12')](_0x12839b));if(_0x12839b[_0x6228('0x13')]){if(_0x12839b[_0x6228('0x13')]['code']===0x1f4){logger[_0x6228('0x13')](_0x6228('0x14'),_0x8c3dfa,_0x12839b['error']['message']);return _0x41d3d7(_0x12839b['error'][_0x6228('0x15')]);}logger[_0x6228('0x13')](_0x6228('0x14'),_0x8c3dfa,_0x12839b[_0x6228('0x13')][_0x6228('0x15')]);return _0x216b83(_0x12839b['error']['message']);}else{logger[_0x6228('0x10')](_0x6228('0x14'),_0x8c3dfa,'request\x20sent');_0x216b83(_0x12839b['result'][_0x6228('0x15')]);}})[_0x6228('0x16')](function(_0x538710){logger[_0x6228('0x13')](_0x6228('0x14'),_0x8c3dfa,_0x538710);_0x41d3d7(_0x538710);});});}exports[_0x6228('0x17')]=function(_0x13625a){var _0x24b876=this;return new Promise(function(_0x56dc70,_0x2a1ad4){return db['OpenchannelQueue'][_0x6228('0x18')]({'raw':_0x13625a[_0x6228('0x19')]?_0x13625a[_0x6228('0x19')][_0x6228('0x1a')]===undefined?!![]:![]:!![],'where':_0x13625a[_0x6228('0x19')]?_0x13625a[_0x6228('0x19')][_0x6228('0x1b')]||null:null,'attributes':_0x13625a[_0x6228('0x19')]?_0x13625a[_0x6228('0x19')][_0x6228('0x1c')]||null:null,'limit':_0x13625a[_0x6228('0x19')]?_0x13625a['options']['limit']||null:null,'include':_0x13625a[_0x6228('0x19')]?_0x13625a['options'][_0x6228('0x1d')]?_[_0x6228('0x1e')](_0x13625a[_0x6228('0x19')][_0x6228('0x1d')],function(_0x525a85){return{'model':db[_0x525a85[_0x6228('0x1f')]],'as':_0x525a85['as'],'attributes':_0x525a85[_0x6228('0x1c')],'include':_0x525a85[_0x6228('0x1d')]?_['map'](_0x525a85[_0x6228('0x1d')],function(_0x3945a6){return{'model':db[_0x3945a6['model']],'as':_0x3945a6['as'],'attributes':_0x3945a6[_0x6228('0x1c')],'include':_0x3945a6[_0x6228('0x1d')]?_[_0x6228('0x1e')](_0x3945a6[_0x6228('0x1d')],function(_0x3d3957){return{'model':db[_0x3d3957[_0x6228('0x1f')]],'as':_0x3d3957['as'],'attributes':_0x3d3957['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2c1559){logger[_0x6228('0x10')](_0x6228('0x17'),_0x13625a);logger[_0x6228('0x20')](_0x6228('0x17'),_0x13625a,JSON['stringify'](_0x2c1559));_0x56dc70(_0x2c1559);})['catch'](function(_0x59780f){logger[_0x6228('0x13')](_0x6228('0x17'),_0x59780f[_0x6228('0x15')],_0x13625a);_0x2a1ad4(_0x24b876[_0x6228('0x13')](0x1f4,_0x59780f[_0x6228('0x15')]));});});};exports[_0x6228('0x21')]=function(_0xdec93){var _0x39dd8b=this;return new Promise(function(_0x5f33c9,_0x12d8cc){return db[_0x6228('0x22')][_0x6228('0x23')]({'raw':_0xdec93['options']?_0xdec93[_0x6228('0x19')][_0x6228('0x1a')]===undefined?!![]:![]:!![],'where':_0xdec93[_0x6228('0x19')]?_0xdec93[_0x6228('0x19')][_0x6228('0x1b')]||null:null,'attributes':_0xdec93[_0x6228('0x19')]?_0xdec93['options']['attributes']||null:null,'include':_0xdec93[_0x6228('0x19')]?_0xdec93[_0x6228('0x19')]['include']?_[_0x6228('0x1e')](_0xdec93[_0x6228('0x19')][_0x6228('0x1d')],function(_0x5c33bc){return{'model':db[_0x5c33bc[_0x6228('0x1f')]],'as':_0x5c33bc['as'],'attributes':_0x5c33bc[_0x6228('0x1c')],'include':_0x5c33bc[_0x6228('0x1d')]?_[_0x6228('0x1e')](_0x5c33bc[_0x6228('0x1d')],function(_0x31b238){return{'model':db[_0x31b238[_0x6228('0x1f')]],'as':_0x31b238['as'],'attributes':_0x31b238[_0x6228('0x1c')],'include':_0x31b238[_0x6228('0x1d')]?_['map'](_0x31b238[_0x6228('0x1d')],function(_0x3efb6a){return{'model':db[_0x3efb6a['model']],'as':_0x3efb6a['as'],'attributes':_0x3efb6a[_0x6228('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6228('0x24')](function(_0x5034e4){logger[_0x6228('0x10')](_0x6228('0x21'),_0xdec93);logger[_0x6228('0x20')]('ShowOpenchannelQueue',_0xdec93,JSON[_0x6228('0x12')](_0x5034e4));_0x5f33c9(_0x5034e4);})[_0x6228('0x16')](function(_0x4e8ad8){logger[_0x6228('0x13')](_0x6228('0x21'),_0x4e8ad8[_0x6228('0x15')],_0xdec93);_0x12d8cc(_0x39dd8b[_0x6228('0x13')](0x1f4,_0x4e8ad8[_0x6228('0x15')]));});});};
\ No newline at end of file
+var _0xd258=['socket.io-emitter','./openchannelQueue.socket','register','request','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetOpenchannelQueue','findAll','options','raw','where','attributes','limit','map','include','model','then','stringify','ShowOpenchannelQueue','OpenchannelQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','localhost'];(function(_0x28a46e,_0x13af40){var _0x15f830=function(_0x2058c5){while(--_0x2058c5){_0x28a46e['push'](_0x28a46e['shift']());}};_0x15f830(++_0x13af40);}(_0xd258,0xc0));var _0x8d25=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xd258[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x8d25('0x0'));var util=require(_0x8d25('0x1'));var moment=require(_0x8d25('0x2'));var BPromise=require(_0x8d25('0x3'));var rs=require(_0x8d25('0x4'));var fs=require('fs');var Redis=require(_0x8d25('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8d25('0x6'));var logger=require('../../config/logger')(_0x8d25('0x7'));var config=require(_0x8d25('0x8'));var jayson=require(_0x8d25('0x9'));var client=jayson[_0x8d25('0xa')]['http']({'port':0x232a});config[_0x8d25('0xb')]=_['defaults'](config[_0x8d25('0xb')],{'host':_0x8d25('0xc'),'port':0x18eb});var socket=require(_0x8d25('0xd'))(new Redis(config[_0x8d25('0xb')]));require(_0x8d25('0xe'))[_0x8d25('0xf')](socket);function respondWithRpcPromise(_0x4f6fec,_0x222f7e,_0x18cb0b){return new BPromise(function(_0x2d5585,_0x2d6273){return client[_0x8d25('0x10')](_0x4f6fec,_0x18cb0b)['then'](function(_0x28b9a3){logger[_0x8d25('0x11')](_0x8d25('0x12'),_0x222f7e,_0x8d25('0x13'));logger[_0x8d25('0x14')](_0x8d25('0x15'),_0x222f7e,_0x8d25('0x13'),JSON['stringify'](_0x28b9a3));if(_0x28b9a3[_0x8d25('0x16')]){if(_0x28b9a3['error'][_0x8d25('0x17')]===0x1f4){logger[_0x8d25('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x222f7e,_0x28b9a3[_0x8d25('0x16')]['message']);return _0x2d6273(_0x28b9a3['error'][_0x8d25('0x18')]);}logger[_0x8d25('0x16')](_0x8d25('0x12'),_0x222f7e,_0x28b9a3[_0x8d25('0x16')][_0x8d25('0x18')]);return _0x2d5585(_0x28b9a3[_0x8d25('0x16')][_0x8d25('0x18')]);}else{logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x222f7e,_0x8d25('0x13'));_0x2d5585(_0x28b9a3['result'][_0x8d25('0x18')]);}})[_0x8d25('0x19')](function(_0x46e70d){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x222f7e,_0x46e70d);_0x2d6273(_0x46e70d);});});}exports[_0x8d25('0x1a')]=function(_0x283140){var _0x13783f=this;return new Promise(function(_0x1f3a16,_0x4208e8){return db['OpenchannelQueue'][_0x8d25('0x1b')]({'raw':_0x283140[_0x8d25('0x1c')]?_0x283140['options'][_0x8d25('0x1d')]===undefined?!![]:![]:!![],'where':_0x283140[_0x8d25('0x1c')]?_0x283140[_0x8d25('0x1c')][_0x8d25('0x1e')]||null:null,'attributes':_0x283140[_0x8d25('0x1c')]?_0x283140[_0x8d25('0x1c')][_0x8d25('0x1f')]||null:null,'limit':_0x283140[_0x8d25('0x1c')]?_0x283140[_0x8d25('0x1c')][_0x8d25('0x20')]||null:null,'include':_0x283140[_0x8d25('0x1c')]?_0x283140[_0x8d25('0x1c')]['include']?_[_0x8d25('0x21')](_0x283140[_0x8d25('0x1c')][_0x8d25('0x22')],function(_0x3a2f7c){return{'model':db[_0x3a2f7c[_0x8d25('0x23')]],'as':_0x3a2f7c['as'],'attributes':_0x3a2f7c[_0x8d25('0x1f')],'include':_0x3a2f7c[_0x8d25('0x22')]?_[_0x8d25('0x21')](_0x3a2f7c[_0x8d25('0x22')],function(_0x4eb669){return{'model':db[_0x4eb669[_0x8d25('0x23')]],'as':_0x4eb669['as'],'attributes':_0x4eb669[_0x8d25('0x1f')],'include':_0x4eb669[_0x8d25('0x22')]?_[_0x8d25('0x21')](_0x4eb669[_0x8d25('0x22')],function(_0x28f8b6){return{'model':db[_0x28f8b6[_0x8d25('0x23')]],'as':_0x28f8b6['as'],'attributes':_0x28f8b6[_0x8d25('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x8d25('0x24')](function(_0x431dbf){logger[_0x8d25('0x11')](_0x8d25('0x1a'),_0x283140);logger[_0x8d25('0x14')](_0x8d25('0x1a'),_0x283140,JSON[_0x8d25('0x25')](_0x431dbf));_0x1f3a16(_0x431dbf);})[_0x8d25('0x19')](function(_0x5a2367){logger[_0x8d25('0x16')](_0x8d25('0x1a'),_0x5a2367[_0x8d25('0x18')],_0x283140);_0x4208e8(_0x13783f[_0x8d25('0x16')](0x1f4,_0x5a2367[_0x8d25('0x18')]));});});};exports[_0x8d25('0x26')]=function(_0x1b5d02){var _0x9aefeb=this;return new Promise(function(_0x4581f9,_0x43add4){return db[_0x8d25('0x27')][_0x8d25('0x28')]({'raw':_0x1b5d02[_0x8d25('0x1c')]?_0x1b5d02['options']['raw']===undefined?!![]:![]:!![],'where':_0x1b5d02[_0x8d25('0x1c')]?_0x1b5d02[_0x8d25('0x1c')][_0x8d25('0x1e')]||null:null,'attributes':_0x1b5d02['options']?_0x1b5d02[_0x8d25('0x1c')][_0x8d25('0x1f')]||null:null,'include':_0x1b5d02[_0x8d25('0x1c')]?_0x1b5d02[_0x8d25('0x1c')][_0x8d25('0x22')]?_[_0x8d25('0x21')](_0x1b5d02[_0x8d25('0x1c')][_0x8d25('0x22')],function(_0x1ddd14){return{'model':db[_0x1ddd14[_0x8d25('0x23')]],'as':_0x1ddd14['as'],'attributes':_0x1ddd14['attributes'],'include':_0x1ddd14[_0x8d25('0x22')]?_[_0x8d25('0x21')](_0x1ddd14['include'],function(_0x416b39){return{'model':db[_0x416b39[_0x8d25('0x23')]],'as':_0x416b39['as'],'attributes':_0x416b39['attributes'],'include':_0x416b39[_0x8d25('0x22')]?_[_0x8d25('0x21')](_0x416b39[_0x8d25('0x22')],function(_0x4ccb11){return{'model':db[_0x4ccb11[_0x8d25('0x23')]],'as':_0x4ccb11['as'],'attributes':_0x4ccb11[_0x8d25('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x8d25('0x24')](function(_0x2baf30){logger[_0x8d25('0x11')]('ShowOpenchannelQueue',_0x1b5d02);logger[_0x8d25('0x14')](_0x8d25('0x26'),_0x1b5d02,JSON[_0x8d25('0x25')](_0x2baf30));_0x4581f9(_0x2baf30);})[_0x8d25('0x19')](function(_0x7eecdb){logger[_0x8d25('0x16')](_0x8d25('0x26'),_0x7eecdb[_0x8d25('0x18')],_0x1b5d02);_0x43add4(_0x9aefeb[_0x8d25('0x16')](0x1f4,_0x7eecdb[_0x8d25('0x18')]));});});};
\ No newline at end of file
index 93af5b8..dcf4e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ec=['register','./openchannelQueue.events','save','remove','update','removeListener'];(function(_0x5ad0a6,_0x35e612){var _0x2d55b4=function(_0x383c7e){while(--_0x383c7e){_0x5ad0a6['push'](_0x5ad0a6['shift']());}};_0x2d55b4(++_0x35e612);}(_0xd4ec,0x1c9));var _0xcd4e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd4ec[_0x3dd15e];return _0x231fd0;};'use strict';var OpenchannelQueueEvents=require(_0xcd4e('0x0'));var events=[_0xcd4e('0x1'),_0xcd4e('0x2'),_0xcd4e('0x3')];function createListener(_0xc981d,_0x141a4a){return function(_0x34baf9){_0x141a4a['emit'](_0xc981d,_0x34baf9);};}function removeListener(_0x5a801f,_0x126992){return function(){OpenchannelQueueEvents[_0xcd4e('0x4')](_0x5a801f,_0x126992);};}exports[_0xcd4e('0x5')]=function(_0x55212e){for(var _0x286889=0x0,_0x7636a0=events['length'];_0x286889<_0x7636a0;_0x286889++){var _0x1977c3=events[_0x286889];var _0x4ebc62=createListener('openchannelQueue:'+_0x1977c3,_0x55212e);OpenchannelQueueEvents['on'](_0x1977c3,_0x4ebc62);}};
\ No newline at end of file
+var _0x5ccb=['register','length','openchannelQueue:','./openchannelQueue.events','emit','removeListener'];(function(_0x1ffdb0,_0x1e4925){var _0x42afba=function(_0x161a4e){while(--_0x161a4e){_0x1ffdb0['push'](_0x1ffdb0['shift']());}};_0x42afba(++_0x1e4925);}(_0x5ccb,0xed));var _0xb5cc=function(_0x3e7e96,_0x5683ca){_0x3e7e96=_0x3e7e96-0x0;var _0x13f6f0=_0x5ccb[_0x3e7e96];return _0x13f6f0;};'use strict';var OpenchannelQueueEvents=require(_0xb5cc('0x0'));var events=['save','remove','update'];function createListener(_0x34f8bf,_0x325926){return function(_0x43d575){_0x325926[_0xb5cc('0x1')](_0x34f8bf,_0x43d575);};}function removeListener(_0x56cef7,_0x5f20b3){return function(){OpenchannelQueueEvents[_0xb5cc('0x2')](_0x56cef7,_0x5f20b3);};}exports[_0xb5cc('0x3')]=function(_0x279161){for(var _0x5dbf0e=0x0,_0x594442=events[_0xb5cc('0x4')];_0x5dbf0e<_0x594442;_0x5dbf0e++){var _0x5ec075=events[_0x5dbf0e];var _0x3d1894=createListener(_0xb5cc('0x5')+_0x5ec075,_0x279161);OpenchannelQueueEvents['on'](_0x5ec075,_0x3d1894);}};
\ No newline at end of file
index 6a1c195..683e6b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7403=['/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','isAuthenticated','index','get','/describe'];(function(_0x3ccb63,_0x2c8e9b){var _0x161241=function(_0x11e6a9){while(--_0x11e6a9){_0x3ccb63['push'](_0x3ccb63['shift']());}};_0x161241(++_0x2c8e9b);}(_0x7403,0x181));var _0x3740=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7403[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3740('0x0'));var util=require(_0x3740('0x1'));var path=require(_0x3740('0x2'));var timeout=require(_0x3740('0x3'));var express=require(_0x3740('0x4'));var router=express['Router']();var fs_extra=require(_0x3740('0x5'));var auth=require(_0x3740('0x6'));var interaction=require(_0x3740('0x7'));var config=require(_0x3740('0x8'));var controller=require(_0x3740('0x9'));router['get']('/',auth[_0x3740('0xa')](),controller[_0x3740('0xb')]);router[_0x3740('0xc')](_0x3740('0xd'),auth[_0x3740('0xa')](),controller['describe']);router[_0x3740('0xc')](_0x3740('0xe'),auth[_0x3740('0xa')](),controller[_0x3740('0xf')]);router['post']('/',auth[_0x3740('0xa')](),controller['create']);router[_0x3740('0x10')]('/:id',auth[_0x3740('0xa')](),controller[_0x3740('0x11')]);router[_0x3740('0x12')](_0x3740('0xe'),auth[_0x3740('0xa')](),controller[_0x3740('0x13')]);module[_0x3740('0x14')]=router;
\ No newline at end of file
+var _0x89e0=['show','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/:id'];(function(_0x3ce0d5,_0x203024){var _0x2e5731=function(_0x4be620){while(--_0x4be620){_0x3ce0d5['push'](_0x3ce0d5['shift']());}};_0x2e5731(++_0x203024);}(_0x89e0,0x117));var _0x089e=function(_0x5f746f,_0x5b05ab){_0x5f746f=_0x5f746f-0x0;var _0x198d15=_0x89e0[_0x5f746f];return _0x198d15;};'use strict';var multer=require('multer');var util=require(_0x089e('0x0'));var path=require(_0x089e('0x1'));var timeout=require(_0x089e('0x2'));var express=require('express');var router=express[_0x089e('0x3')]();var fs_extra=require(_0x089e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x089e('0x5'));var config=require('../../config/environment');var controller=require('./openchannelQueueReport.controller');router[_0x089e('0x6')]('/',auth[_0x089e('0x7')](),controller[_0x089e('0x8')]);router[_0x089e('0x6')]('/describe',auth[_0x089e('0x7')](),controller['describe']);router[_0x089e('0x6')](_0x089e('0x9'),auth[_0x089e('0x7')](),controller[_0x089e('0xa')]);router['post']('/',auth[_0x089e('0x7')](),controller[_0x089e('0xb')]);router[_0x089e('0xc')](_0x089e('0x9'),auth[_0x089e('0x7')](),controller[_0x089e('0xd')]);router[_0x089e('0xe')]('/:id',auth[_0x089e('0x7')](),controller[_0x089e('0xf')]);module[_0x089e('0x10')]=router;
\ No newline at end of file
index e6ceb8c..b7394c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7612=['STRING','DATE','moment','sequelize','exports'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x7612,0x192));var _0x2761=function(_0x21d0c3,_0x16c71c){_0x21d0c3=_0x21d0c3-0x0;var _0x4df18e=_0x7612[_0x21d0c3];return _0x4df18e;};'use strict';var moment=require(_0x2761('0x0'));var Sequelize=require(_0x2761('0x1'));module[_0x2761('0x2')]={'uniqueid':{'type':Sequelize[_0x2761('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x2761('0x3')]},'joinAt':{'type':Sequelize[_0x2761('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2761('0x4')]},'exitAt':{'type':Sequelize[_0x2761('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc69e=['STRING','DATE','sequelize','exports'];(function(_0x2c1dba,_0x622bb8){var _0x4f17c2=function(_0x28e229){while(--_0x28e229){_0x2c1dba['push'](_0x2c1dba['shift']());}};_0x4f17c2(++_0x622bb8);}(_0xc69e,0x1d6));var _0xec69=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc69e[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require('moment');var Sequelize=require(_0xec69('0x0'));module[_0xec69('0x1')]={'uniqueid':{'type':Sequelize[_0xec69('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xec69('0x2')]},'joinAt':{'type':Sequelize[_0xec69('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xec69('0x3')]},'exitAt':{'type':Sequelize[_0xec69('0x3')]},'reason':{'type':Sequelize[_0xec69('0x2')]}};
\ No newline at end of file
index 4ed13df..c572ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6035=['status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','index','OpenchannelQueueReport','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','filter','where','merge','map','VIRTUAL','options','show','params','includeAll','include','find','create','body','catch','describe','eml-format','rimraf','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/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x1f857f,_0xbd6eb2){var _0x268793=function(_0x40ce1b){while(--_0x40ce1b){_0x1f857f['push'](_0x1f857f['shift']());}};_0x268793(++_0xbd6eb2);}(_0x6035,0xc0));var _0x5603=function(_0x1a3634,_0x3a5fe7){_0x1a3634=_0x1a3634-0x0;var _0x2338c7=_0x6035[_0x1a3634];return _0x2338c7;};'use strict';var emlformat=require(_0x5603('0x0'));var rimraf=require(_0x5603('0x1'));var zipdir=require(_0x5603('0x2'));var jsonpatch=require(_0x5603('0x3'));var rp=require(_0x5603('0x4'));var moment=require(_0x5603('0x5'));var BPromise=require(_0x5603('0x6'));var Mustache=require(_0x5603('0x7'));var util=require(_0x5603('0x8'));var path=require('path');var sox=require(_0x5603('0x9'));var csv=require(_0x5603('0xa'));var ejs=require(_0x5603('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5603('0xc'));var squel=require(_0x5603('0xd'));var crypto=require(_0x5603('0xe'));var jsforce=require(_0x5603('0xf'));var deskjs=require(_0x5603('0x10'));var toCsv=require('to-csv');var querystring=require(_0x5603('0x11'));var Papa=require(_0x5603('0x12'));var Redis=require(_0x5603('0x13'));var authService=require(_0x5603('0x14'));var qs=require(_0x5603('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5603('0x16'));var logger=require(_0x5603('0x17'))('api');var utils=require(_0x5603('0x18'));var config=require(_0x5603('0x19'));var licenseUtil=require(_0x5603('0x1a'));var db=require(_0x5603('0x1b'))['db'];function respondWithStatusCode(_0x387ca9,_0x52500d){_0x52500d=_0x52500d||0xcc;return function(_0x59dbca){if(_0x59dbca){return _0x387ca9[_0x5603('0x1c')](_0x52500d);}return _0x387ca9['status'](_0x52500d)[_0x5603('0x1d')]();};}function respondWithResult(_0x518412,_0x2094de){_0x2094de=_0x2094de||0xc8;return function(_0x2f38f2){if(_0x2f38f2){return _0x518412[_0x5603('0x1e')](_0x2094de)[_0x5603('0x1f')](_0x2f38f2);}};}function respondWithFilteredResult(_0x28b5eb,_0x1eb5ea){return function(_0x2dfca8){if(_0x2dfca8){var _0x2d8dd8=typeof _0x1eb5ea[_0x5603('0x20')]===_0x5603('0x21')&&typeof _0x1eb5ea[_0x5603('0x22')]===_0x5603('0x21');var _0x3a9212=_0x2dfca8[_0x5603('0x23')];var _0x38bf3a=_0x2d8dd8?0x0:_0x1eb5ea['offset'];var _0x4575dc=_0x2d8dd8?_0x2dfca8[_0x5603('0x23')]:_0x1eb5ea[_0x5603('0x20')]+_0x1eb5ea[_0x5603('0x22')];var _0x2df97b;if(_0x4575dc>=_0x3a9212){_0x4575dc=_0x3a9212;_0x2df97b=0xc8;}else{_0x2df97b=0xce;}_0x28b5eb['status'](_0x2df97b);return _0x28b5eb[_0x5603('0x24')](_0x5603('0x25'),_0x38bf3a+'-'+_0x4575dc+'/'+_0x3a9212)[_0x5603('0x1f')](_0x2dfca8);}return null;};}function patchUpdates(_0x23eb5d){return function(_0x467390){try{jsonpatch['apply'](_0x467390,_0x23eb5d,!![]);}catch(_0x53fa5e){return BPromise[_0x5603('0x26')](_0x53fa5e);}return _0x467390[_0x5603('0x27')]();};}function saveUpdates(_0x9456db,_0x2dea2e){return function(_0x18ace9){if(_0x18ace9){return _0x18ace9[_0x5603('0x28')](_0x9456db)[_0x5603('0x29')](function(_0x400df1){return _0x400df1;});}return null;};}function removeEntity(_0x4fc2ef,_0x583b70){return function(_0x16d007){if(_0x16d007){return _0x16d007[_0x5603('0x2a')]()['then'](function(){_0x4fc2ef['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x26a530,_0x3ecb6e){return function(_0x116595){if(!_0x116595){_0x26a530[_0x5603('0x1c')](0x194);}return _0x116595;};}function handleError(_0x4436f4,_0x3428b6){_0x3428b6=_0x3428b6||0x1f4;return function(_0x500820){logger['error'](_0x500820[_0x5603('0x2b')]);if(_0x500820[_0x5603('0x2c')]){delete _0x500820['name'];}_0x4436f4['status'](_0x3428b6)['send'](_0x500820);};}exports[_0x5603('0x2d')]=function(_0x2e5c9f,_0x5d0299){var _0x3cf4d3={},_0x39b8fa={},_0x3c4241={'count':0x0,'rows':[]};var _0xc9f306=_['map'](db[_0x5603('0x2e')]['rawAttributes'],function(_0x2a97b8){return{'name':_0x2a97b8['fieldName'],'type':_0x2a97b8[_0x5603('0x2f')][_0x5603('0x30')]};});_0x39b8fa[_0x5603('0x31')]=_['map'](_0xc9f306,_0x5603('0x2c'));_0x39b8fa[_0x5603('0x32')]=_[_0x5603('0x33')](_0x2e5c9f[_0x5603('0x32')]);_0x39b8fa['filters']=_[_0x5603('0x34')](_0x39b8fa[_0x5603('0x31')],_0x39b8fa[_0x5603('0x32')]);_0x3cf4d3[_0x5603('0x35')]=_[_0x5603('0x34')](_0x39b8fa[_0x5603('0x31')],qs[_0x5603('0x36')](_0x2e5c9f[_0x5603('0x32')][_0x5603('0x36')]));_0x3cf4d3[_0x5603('0x35')]=_0x3cf4d3['attributes'][_0x5603('0x37')]?_0x3cf4d3[_0x5603('0x35')]:_0x39b8fa[_0x5603('0x31')];if(!_0x2e5c9f[_0x5603('0x32')]['hasOwnProperty'](_0x5603('0x38'))){_0x3cf4d3[_0x5603('0x22')]=qs['limit'](_0x2e5c9f['query'][_0x5603('0x22')]);_0x3cf4d3[_0x5603('0x20')]=qs[_0x5603('0x20')](_0x2e5c9f[_0x5603('0x32')][_0x5603('0x20')]);}_0x3cf4d3['order']=qs[_0x5603('0x39')](_0x2e5c9f[_0x5603('0x32')][_0x5603('0x39')]);_0x3cf4d3['where']=qs[_0x5603('0x3a')](_['pick'](_0x2e5c9f['query'],_0x39b8fa[_0x5603('0x3a')]),_0xc9f306);if(_0x2e5c9f[_0x5603('0x32')][_0x5603('0x3b')]){_0x3cf4d3[_0x5603('0x3c')]=_[_0x5603('0x3d')](_0x3cf4d3[_0x5603('0x3c')],{'$or':_[_0x5603('0x3e')](_0xc9f306,function(_0xffdd4a){if(_0xffdd4a[_0x5603('0x2f')]!==_0x5603('0x3f')){var _0x538650={};_0x538650[_0xffdd4a[_0x5603('0x2c')]]={'$like':'%'+_0x2e5c9f[_0x5603('0x32')]['filter']+'%'};return _0x538650;}})});}_0x3cf4d3=_[_0x5603('0x3d')]({},_0x3cf4d3,_0x2e5c9f[_0x5603('0x40')]);var _0x378f68={'where':_0x3cf4d3[_0x5603('0x3c')]};return db[_0x5603('0x2e')][_0x5603('0x23')](_0x378f68)[_0x5603('0x29')](function(_0x51d079){_0x3c4241[_0x5603('0x23')]=_0x51d079;if(_0x2e5c9f[_0x5603('0x32')]['includeAll']){_0x3cf4d3['include']=[{'all':!![]}];}return db[_0x5603('0x2e')]['findAll'](_0x3cf4d3);})['then'](function(_0x4000aa){_0x3c4241['rows']=_0x4000aa;return _0x3c4241;})[_0x5603('0x29')](respondWithFilteredResult(_0x5d0299,_0x3cf4d3))['catch'](handleError(_0x5d0299,null));};exports[_0x5603('0x41')]=function(_0x1ba82f,_0x471933){var _0x20dbf9={'raw':!![],'where':{'id':_0x1ba82f[_0x5603('0x42')]['id']}},_0x4c2fe4={};_0x4c2fe4[_0x5603('0x31')]=_[_0x5603('0x33')](db[_0x5603('0x2e')]['rawAttributes']);_0x4c2fe4[_0x5603('0x32')]=_[_0x5603('0x33')](_0x1ba82f[_0x5603('0x32')]);_0x4c2fe4[_0x5603('0x3a')]=_[_0x5603('0x34')](_0x4c2fe4[_0x5603('0x31')],_0x4c2fe4[_0x5603('0x32')]);_0x20dbf9[_0x5603('0x35')]=_['intersection'](_0x4c2fe4['model'],qs[_0x5603('0x36')](_0x1ba82f[_0x5603('0x32')][_0x5603('0x36')]));_0x20dbf9[_0x5603('0x35')]=_0x20dbf9['attributes']['length']?_0x20dbf9[_0x5603('0x35')]:_0x4c2fe4[_0x5603('0x31')];if(_0x1ba82f['query'][_0x5603('0x43')]){_0x20dbf9[_0x5603('0x44')]=[{'all':!![]}];}_0x20dbf9=_[_0x5603('0x3d')]({},_0x20dbf9,_0x1ba82f[_0x5603('0x40')]);return db[_0x5603('0x2e')][_0x5603('0x45')](_0x20dbf9)[_0x5603('0x29')](handleEntityNotFound(_0x471933,null))['then'](respondWithResult(_0x471933,null))['catch'](handleError(_0x471933,null));};exports[_0x5603('0x46')]=function(_0x2eadaa,_0x2b261d){return db[_0x5603('0x2e')][_0x5603('0x46')](_0x2eadaa['body'],{})[_0x5603('0x29')](respondWithResult(_0x2b261d,0xc9))['catch'](handleError(_0x2b261d,null));};exports['update']=function(_0x40d0b7,_0x2b5fbf){if(_0x40d0b7[_0x5603('0x47')]['id']){delete _0x40d0b7[_0x5603('0x47')]['id'];}return db[_0x5603('0x2e')][_0x5603('0x45')]({'where':{'id':_0x40d0b7[_0x5603('0x42')]['id']}})[_0x5603('0x29')](handleEntityNotFound(_0x2b5fbf,null))[_0x5603('0x29')](saveUpdates(_0x40d0b7[_0x5603('0x47')],null))[_0x5603('0x29')](respondWithResult(_0x2b5fbf,null))[_0x5603('0x48')](handleError(_0x2b5fbf,null));};exports[_0x5603('0x2a')]=function(_0x33b326,_0x18db7f){return db['OpenchannelQueueReport']['find']({'where':{'id':_0x33b326[_0x5603('0x42')]['id']}})['then'](handleEntityNotFound(_0x18db7f,null))[_0x5603('0x29')](removeEntity(_0x18db7f,null))['catch'](handleError(_0x18db7f,null));};exports['describe']=function(_0x2cf3a7,_0x33f795){return db[_0x5603('0x2e')][_0x5603('0x49')]()[_0x5603('0x29')](respondWithResult(_0x33f795,null))[_0x5603('0x48')](handleError(_0x33f795,null));};
\ No newline at end of file
+var _0x40d0=['includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','destroy','then','error','name','send','map','OpenchannelQueueReport','rawAttributes','type','key','model','query','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','include','findAll','rows','catch','params','keys','intersection','fields'];(function(_0x50fdd4,_0x47ff26){var _0x31faab=function(_0x51402f){while(--_0x51402f){_0x50fdd4['push'](_0x50fdd4['shift']());}};_0x31faab(++_0x47ff26);}(_0x40d0,0xe6));var _0x040d=function(_0xd42933,_0x42dc08){_0xd42933=_0xd42933-0x0;var _0xd7cfba=_0x40d0[_0xd42933];return _0xd7cfba;};'use strict';var emlformat=require(_0x040d('0x0'));var rimraf=require(_0x040d('0x1'));var zipdir=require(_0x040d('0x2'));var jsonpatch=require(_0x040d('0x3'));var rp=require(_0x040d('0x4'));var moment=require(_0x040d('0x5'));var BPromise=require(_0x040d('0x6'));var Mustache=require(_0x040d('0x7'));var util=require('util');var path=require(_0x040d('0x8'));var sox=require(_0x040d('0x9'));var csv=require(_0x040d('0xa'));var ejs=require(_0x040d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x040d('0xc'));var squel=require(_0x040d('0xd'));var crypto=require(_0x040d('0xe'));var jsforce=require(_0x040d('0xf'));var deskjs=require(_0x040d('0x10'));var toCsv=require(_0x040d('0xa'));var querystring=require(_0x040d('0x11'));var Papa=require('papaparse');var Redis=require(_0x040d('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x040d('0x13'));var as=require(_0x040d('0x14'));var hardwareService=require(_0x040d('0x15'));var logger=require(_0x040d('0x16'))(_0x040d('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x040d('0x18'));var db=require(_0x040d('0x19'))['db'];function respondWithStatusCode(_0x547f02,_0x4da55b){_0x4da55b=_0x4da55b||0xcc;return function(_0x5a9fc9){if(_0x5a9fc9){return _0x547f02[_0x040d('0x1a')](_0x4da55b);}return _0x547f02[_0x040d('0x1b')](_0x4da55b)[_0x040d('0x1c')]();};}function respondWithResult(_0x4b3cce,_0x5bef9d){_0x5bef9d=_0x5bef9d||0xc8;return function(_0x3a2c99){if(_0x3a2c99){return _0x4b3cce[_0x040d('0x1b')](_0x5bef9d)[_0x040d('0x1d')](_0x3a2c99);}};}function respondWithFilteredResult(_0x186529,_0x24832a){return function(_0x23f0ef){if(_0x23f0ef){var _0xc9c8d2=typeof _0x24832a['offset']==='undefined'&&typeof _0x24832a[_0x040d('0x1e')]===_0x040d('0x1f');var _0x19d398=_0x23f0ef[_0x040d('0x20')];var _0x97a5d7=_0xc9c8d2?0x0:_0x24832a[_0x040d('0x21')];var _0x1f2351=_0xc9c8d2?_0x23f0ef[_0x040d('0x20')]:_0x24832a[_0x040d('0x21')]+_0x24832a[_0x040d('0x1e')];var _0x6086c1;if(_0x1f2351>=_0x19d398){_0x1f2351=_0x19d398;_0x6086c1=0xc8;}else{_0x6086c1=0xce;}_0x186529[_0x040d('0x1b')](_0x6086c1);return _0x186529[_0x040d('0x22')](_0x040d('0x23'),_0x97a5d7+'-'+_0x1f2351+'/'+_0x19d398)['json'](_0x23f0ef);}return null;};}function patchUpdates(_0x486c83){return function(_0x422a0e){try{jsonpatch[_0x040d('0x24')](_0x422a0e,_0x486c83,!![]);}catch(_0x2bacdf){return BPromise['reject'](_0x2bacdf);}return _0x422a0e[_0x040d('0x25')]();};}function saveUpdates(_0x299b95,_0x1e0827){return function(_0x87ab32){if(_0x87ab32){return _0x87ab32[_0x040d('0x26')](_0x299b95)['then'](function(_0x3b8797){return _0x3b8797;});}return null;};}function removeEntity(_0x39f351,_0x415186){return function(_0x1ff4d0){if(_0x1ff4d0){return _0x1ff4d0[_0x040d('0x27')]()[_0x040d('0x28')](function(){_0x39f351[_0x040d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x56ca18,_0x190a4c){return function(_0x241842){if(!_0x241842){_0x56ca18['sendStatus'](0x194);}return _0x241842;};}function handleError(_0x54b08b,_0x1e94ef){_0x1e94ef=_0x1e94ef||0x1f4;return function(_0x24d9a2){logger[_0x040d('0x29')](_0x24d9a2['stack']);if(_0x24d9a2['name']){delete _0x24d9a2[_0x040d('0x2a')];}_0x54b08b[_0x040d('0x1b')](_0x1e94ef)[_0x040d('0x2b')](_0x24d9a2);};}exports['index']=function(_0x34e8ac,_0x44707b){var _0x18451e={},_0x3dd2c2={},_0x25f4dd={'count':0x0,'rows':[]};var _0x2aa77a=_[_0x040d('0x2c')](db[_0x040d('0x2d')][_0x040d('0x2e')],function(_0x4336ed){return{'name':_0x4336ed['fieldName'],'type':_0x4336ed[_0x040d('0x2f')][_0x040d('0x30')]};});_0x3dd2c2[_0x040d('0x31')]=_['map'](_0x2aa77a,_0x040d('0x2a'));_0x3dd2c2['query']=_['keys'](_0x34e8ac[_0x040d('0x32')]);_0x3dd2c2[_0x040d('0x33')]=_['intersection'](_0x3dd2c2[_0x040d('0x31')],_0x3dd2c2[_0x040d('0x32')]);_0x18451e[_0x040d('0x34')]=_['intersection'](_0x3dd2c2['model'],qs['fields'](_0x34e8ac[_0x040d('0x32')]['fields']));_0x18451e[_0x040d('0x34')]=_0x18451e[_0x040d('0x34')][_0x040d('0x35')]?_0x18451e[_0x040d('0x34')]:_0x3dd2c2[_0x040d('0x31')];if(!_0x34e8ac['query'][_0x040d('0x36')](_0x040d('0x37'))){_0x18451e[_0x040d('0x1e')]=qs['limit'](_0x34e8ac['query'][_0x040d('0x1e')]);_0x18451e['offset']=qs[_0x040d('0x21')](_0x34e8ac[_0x040d('0x32')][_0x040d('0x21')]);}_0x18451e[_0x040d('0x38')]=qs[_0x040d('0x39')](_0x34e8ac[_0x040d('0x32')]['sort']);_0x18451e[_0x040d('0x3a')]=qs[_0x040d('0x33')](_['pick'](_0x34e8ac[_0x040d('0x32')],_0x3dd2c2[_0x040d('0x33')]),_0x2aa77a);if(_0x34e8ac[_0x040d('0x32')][_0x040d('0x3b')]){_0x18451e[_0x040d('0x3a')]=_[_0x040d('0x3c')](_0x18451e[_0x040d('0x3a')],{'$or':_[_0x040d('0x2c')](_0x2aa77a,function(_0x7aad48){if(_0x7aad48[_0x040d('0x2f')]!==_0x040d('0x3d')){var _0x104fbb={};_0x104fbb[_0x7aad48[_0x040d('0x2a')]]={'$like':'%'+_0x34e8ac[_0x040d('0x32')][_0x040d('0x3b')]+'%'};return _0x104fbb;}})});}_0x18451e=_['merge']({},_0x18451e,_0x34e8ac['options']);var _0x49d4aa={'where':_0x18451e[_0x040d('0x3a')]};return db[_0x040d('0x2d')]['count'](_0x49d4aa)[_0x040d('0x28')](function(_0x44a117){_0x25f4dd[_0x040d('0x20')]=_0x44a117;if(_0x34e8ac[_0x040d('0x32')]['includeAll']){_0x18451e[_0x040d('0x3e')]=[{'all':!![]}];}return db[_0x040d('0x2d')][_0x040d('0x3f')](_0x18451e);})['then'](function(_0x1660c5){_0x25f4dd[_0x040d('0x40')]=_0x1660c5;return _0x25f4dd;})[_0x040d('0x28')](respondWithFilteredResult(_0x44707b,_0x18451e))[_0x040d('0x41')](handleError(_0x44707b,null));};exports['show']=function(_0x501ed1,_0xb73c45){var _0x6dfcd9={'raw':!![],'where':{'id':_0x501ed1[_0x040d('0x42')]['id']}},_0x407fd1={};_0x407fd1['model']=_[_0x040d('0x43')](db['OpenchannelQueueReport']['rawAttributes']);_0x407fd1[_0x040d('0x32')]=_[_0x040d('0x43')](_0x501ed1[_0x040d('0x32')]);_0x407fd1[_0x040d('0x33')]=_[_0x040d('0x44')](_0x407fd1[_0x040d('0x31')],_0x407fd1[_0x040d('0x32')]);_0x6dfcd9['attributes']=_[_0x040d('0x44')](_0x407fd1[_0x040d('0x31')],qs[_0x040d('0x45')](_0x501ed1['query'][_0x040d('0x45')]));_0x6dfcd9[_0x040d('0x34')]=_0x6dfcd9[_0x040d('0x34')][_0x040d('0x35')]?_0x6dfcd9[_0x040d('0x34')]:_0x407fd1[_0x040d('0x31')];if(_0x501ed1[_0x040d('0x32')][_0x040d('0x46')]){_0x6dfcd9[_0x040d('0x3e')]=[{'all':!![]}];}_0x6dfcd9=_[_0x040d('0x3c')]({},_0x6dfcd9,_0x501ed1['options']);return db[_0x040d('0x2d')][_0x040d('0x47')](_0x6dfcd9)[_0x040d('0x28')](handleEntityNotFound(_0xb73c45,null))['then'](respondWithResult(_0xb73c45,null))[_0x040d('0x41')](handleError(_0xb73c45,null));};exports[_0x040d('0x48')]=function(_0x5b312c,_0x5b23d3){return db[_0x040d('0x2d')][_0x040d('0x48')](_0x5b312c[_0x040d('0x49')],{})[_0x040d('0x28')](respondWithResult(_0x5b23d3,0xc9))['catch'](handleError(_0x5b23d3,null));};exports['update']=function(_0x35ca21,_0x360adf){if(_0x35ca21['body']['id']){delete _0x35ca21['body']['id'];}return db[_0x040d('0x2d')][_0x040d('0x47')]({'where':{'id':_0x35ca21[_0x040d('0x42')]['id']}})['then'](handleEntityNotFound(_0x360adf,null))['then'](saveUpdates(_0x35ca21[_0x040d('0x49')],null))[_0x040d('0x28')](respondWithResult(_0x360adf,null))[_0x040d('0x41')](handleError(_0x360adf,null));};exports['destroy']=function(_0x99398c,_0x3c0326){return db['OpenchannelQueueReport'][_0x040d('0x47')]({'where':{'id':_0x99398c['params']['id']}})[_0x040d('0x28')](handleEntityNotFound(_0x3c0326,null))[_0x040d('0x28')](removeEntity(_0x3c0326,null))[_0x040d('0x41')](handleError(_0x3c0326,null));};exports[_0x040d('0x4a')]=function(_0xc4c502,_0x268d51){return db['OpenchannelQueueReport']['describe']()[_0x040d('0x28')](respondWithResult(_0x268d51,null))['catch'](handleError(_0x268d51,null));};
\ No newline at end of file
index 7c394bd..557bc09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x349148,_0x31eabb){var _0x2f2b0f=function(_0x44726e){while(--_0x44726e){_0x349148['push'](_0x349148['shift']());}};_0x2f2b0f(++_0x31eabb);}(_0x814b,0x1a2));var _0xb814=function(_0x1ed034,_0x5d495d){_0x1ed034=_0x1ed034-0x0;var _0x4a82b7=_0x814b[_0x1ed034];return _0x4a82b7;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x537f4a,_0x57246f){var _0x50c9ac=function(_0x4c0a3e){while(--_0x4c0a3e){_0x537f4a['push'](_0x537f4a['shift']());}};_0x50c9ac(++_0x57246f);}(_0x7a54,0x106));var _0x47a5=function(_0x2cccfe,_0x12a644){_0x2cccfe=_0x2cccfe-0x0;var _0x132dc0=_0x7a54[_0x2cccfe];return _0x132dc0;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 0a8d59c..8680bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','raw','debug','stringify','UpdateOpenchannelQueueReport','update','options','where','attributes','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x20e5c3,_0x41470c){_0x20e5c3=_0x20e5c3-0x0;var _0x401520=_0xeb3b[_0x20e5c3];return _0x401520;};'use strict';var _=require(_0xbeb3('0x0'));var util=require(_0xbeb3('0x1'));var moment=require(_0xbeb3('0x2'));var BPromise=require(_0xbeb3('0x3'));var rs=require(_0xbeb3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbeb3('0x5'));var logger=require('../../config/logger')(_0xbeb3('0x6'));var config=require('../../config/environment');var jayson=require(_0xbeb3('0x7'));var client=jayson[_0xbeb3('0x8')][_0xbeb3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x294cc9,_0x406927,_0x143255){return new BPromise(function(_0x5a6a06,_0x241dbb){return client[_0xbeb3('0xa')](_0x294cc9,_0x143255)[_0xbeb3('0xb')](function(_0x3b61ac){logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,_0xbeb3('0xe'));logger['debug'](_0xbeb3('0xf'),_0x406927,_0xbeb3('0xe'),JSON['stringify'](_0x3b61ac));if(_0x3b61ac[_0xbeb3('0x10')]){if(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x11')]===0x1f4){logger[_0xbeb3('0x10')](_0xbeb3('0xd'),_0x406927,_0x3b61ac[_0xbeb3('0x10')]['message']);return _0x241dbb(_0x3b61ac['error'][_0xbeb3('0x12')]);}logger[_0xbeb3('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x406927,_0x3b61ac['error'][_0xbeb3('0x12')]);return _0x5a6a06(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x12')]);}else{logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,'request\x20sent');_0x5a6a06(_0x3b61ac[_0xbeb3('0x13')]['message']);}})[_0xbeb3('0x14')](function(_0x4e7d99){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x406927,_0x4e7d99);_0x241dbb(_0x4e7d99);});});}exports[_0xbeb3('0x15')]=function(_0x44a4bb){var _0x32275b=this;return new Promise(function(_0x10b15d,_0x5d0689){return db[_0xbeb3('0x16')][_0xbeb3('0x17')](_0x44a4bb[_0xbeb3('0x18')],{'raw':_0x44a4bb['options']?_0x44a4bb['options'][_0xbeb3('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1d917b){logger['info']('CreateOpenchannelQueueReport',_0x44a4bb);logger[_0xbeb3('0x1a')](_0xbeb3('0x15'),_0x44a4bb,JSON[_0xbeb3('0x1b')](_0x1d917b));_0x10b15d(_0x1d917b);})['catch'](function(_0x301899){logger[_0xbeb3('0x10')]('CreateOpenchannelQueueReport',_0x301899[_0xbeb3('0x12')],_0x44a4bb);_0x5d0689(_0x32275b[_0xbeb3('0x10')](0x1f4,_0x301899['message']));});});};exports[_0xbeb3('0x1c')]=function(_0x278fe4){var _0x16b079=this;return new Promise(function(_0x42c6c3,_0x2bc188){return db[_0xbeb3('0x16')][_0xbeb3('0x1d')](_0x278fe4[_0xbeb3('0x18')],{'raw':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4['options'][_0xbeb3('0x1f')]||null:null,'attributes':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4[_0xbeb3('0x1e')][_0xbeb3('0x20')]||null:null,'limit':_0x278fe4['options']?_0x278fe4[_0xbeb3('0x1e')]['limit']||null:null})[_0xbeb3('0xb')](function(_0xab301c){logger['info']('UpdateOpenchannelQueueReport',_0x278fe4);logger[_0xbeb3('0x1a')]('UpdateOpenchannelQueueReport',_0x278fe4,JSON['stringify'](_0xab301c));_0x42c6c3(_0xab301c);})['catch'](function(_0x5bfef7){logger[_0xbeb3('0x10')]('UpdateOpenchannelQueueReport',_0x5bfef7[_0xbeb3('0x12')],_0x278fe4);_0x2bc188(_0x16b079[_0xbeb3('0x10')](0x1f4,_0x5bfef7[_0xbeb3('0x12')]));});});};
\ No newline at end of file
+var _0xaa56=['code','message','result','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','raw','catch','UpdateOpenchannelQueueReport','body','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xda0faa,_0x4d2e2c){var _0x294f27=function(_0x3a9152){while(--_0x3a9152){_0xda0faa['push'](_0xda0faa['shift']());}};_0x294f27(++_0x4d2e2c);}(_0xaa56,0xc6));var _0x6aa5=function(_0x28b4da,_0x4823b7){_0x28b4da=_0x28b4da-0x0;var _0xf69efb=_0xaa56[_0x28b4da];return _0xf69efb;};'use strict';var _=require('lodash');var util=require(_0x6aa5('0x0'));var moment=require(_0x6aa5('0x1'));var BPromise=require(_0x6aa5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6aa5('0x3'));var db=require(_0x6aa5('0x4'))['db'];var utils=require(_0x6aa5('0x5'));var logger=require(_0x6aa5('0x6'))(_0x6aa5('0x7'));var config=require('../../config/environment');var jayson=require(_0x6aa5('0x8'));var client=jayson['client'][_0x6aa5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20f6ba,_0x5764dc,_0x26fbf5){return new BPromise(function(_0x35dbbc,_0x3a77bb){return client[_0x6aa5('0xa')](_0x20f6ba,_0x26fbf5)[_0x6aa5('0xb')](function(_0x3d50a0){logger[_0x6aa5('0xc')](_0x6aa5('0xd'),_0x5764dc,_0x6aa5('0xe'));logger[_0x6aa5('0xf')](_0x6aa5('0x10'),_0x5764dc,_0x6aa5('0xe'),JSON[_0x6aa5('0x11')](_0x3d50a0));if(_0x3d50a0[_0x6aa5('0x12')]){if(_0x3d50a0['error'][_0x6aa5('0x13')]===0x1f4){logger[_0x6aa5('0x12')](_0x6aa5('0xd'),_0x5764dc,_0x3d50a0[_0x6aa5('0x12')]['message']);return _0x3a77bb(_0x3d50a0['error']['message']);}logger[_0x6aa5('0x12')](_0x6aa5('0xd'),_0x5764dc,_0x3d50a0[_0x6aa5('0x12')]['message']);return _0x35dbbc(_0x3d50a0[_0x6aa5('0x12')][_0x6aa5('0x14')]);}else{logger['info'](_0x6aa5('0xd'),_0x5764dc,_0x6aa5('0xe'));_0x35dbbc(_0x3d50a0[_0x6aa5('0x15')][_0x6aa5('0x14')]);}})['catch'](function(_0x5e5951){logger[_0x6aa5('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x5764dc,_0x5e5951);_0x3a77bb(_0x5e5951);});});}exports[_0x6aa5('0x16')]=function(_0xea319d){var _0x5714da=this;return new Promise(function(_0x556494,_0x1444de){return db[_0x6aa5('0x17')][_0x6aa5('0x18')](_0xea319d['body'],{'raw':_0xea319d[_0x6aa5('0x19')]?_0xea319d['options'][_0x6aa5('0x1a')]===undefined?!![]:![]:!![]})[_0x6aa5('0xb')](function(_0x161dc8){logger[_0x6aa5('0xc')]('CreateOpenchannelQueueReport',_0xea319d);logger[_0x6aa5('0xf')](_0x6aa5('0x16'),_0xea319d,JSON[_0x6aa5('0x11')](_0x161dc8));_0x556494(_0x161dc8);})[_0x6aa5('0x1b')](function(_0x16234b){logger['error'](_0x6aa5('0x16'),_0x16234b['message'],_0xea319d);_0x1444de(_0x5714da[_0x6aa5('0x12')](0x1f4,_0x16234b['message']));});});};exports[_0x6aa5('0x1c')]=function(_0x2e347f){var _0x4c13f9=this;return new Promise(function(_0x4b0137,_0x1dc4df){return db[_0x6aa5('0x17')]['update'](_0x2e347f[_0x6aa5('0x1d')],{'raw':_0x2e347f[_0x6aa5('0x19')]?_0x2e347f[_0x6aa5('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2e347f[_0x6aa5('0x19')]?_0x2e347f[_0x6aa5('0x19')]['where']||null:null,'attributes':_0x2e347f[_0x6aa5('0x19')]?_0x2e347f['options']['attributes']||null:null,'limit':_0x2e347f[_0x6aa5('0x19')]?_0x2e347f[_0x6aa5('0x19')][_0x6aa5('0x1e')]||null:null})['then'](function(_0x36127c){logger['info'](_0x6aa5('0x1c'),_0x2e347f);logger['debug']('UpdateOpenchannelQueueReport',_0x2e347f,JSON[_0x6aa5('0x11')](_0x36127c));_0x4b0137(_0x36127c);})[_0x6aa5('0x1b')](function(_0x5be5ab){logger[_0x6aa5('0x12')](_0x6aa5('0x1c'),_0x5be5ab[_0x6aa5('0x14')],_0x2e347f);_0x1dc4df(_0x4c13f9[_0x6aa5('0x12')](0x1f4,_0x5be5ab[_0x6aa5('0x14')]));});});};
\ No newline at end of file
index 99d1989..0716dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd1=['get','isAuthenticated','index','/describe','describe','post','create','put','/:id','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x8fd1,0x6c));var _0x18fd=function(_0x54a9e3,_0x4a3813){_0x54a9e3=_0x54a9e3-0x0;var _0x247cce=_0x8fd1[_0x54a9e3];return _0x247cce;};'use strict';var multer=require(_0x18fd('0x0'));var util=require('util');var path=require(_0x18fd('0x1'));var timeout=require('connect-timeout');var express=require(_0x18fd('0x2'));var router=express[_0x18fd('0x3')]();var fs_extra=require(_0x18fd('0x4'));var auth=require(_0x18fd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelTransferReport.controller');router[_0x18fd('0x6')]('/',auth[_0x18fd('0x7')](),controller[_0x18fd('0x8')]);router[_0x18fd('0x6')](_0x18fd('0x9'),auth[_0x18fd('0x7')](),controller[_0x18fd('0xa')]);router[_0x18fd('0x6')]('/:id',auth[_0x18fd('0x7')](),controller['show']);router[_0x18fd('0xb')]('/',auth[_0x18fd('0x7')](),controller[_0x18fd('0xc')]);router[_0x18fd('0xd')](_0x18fd('0xe'),auth[_0x18fd('0x7')](),controller[_0x18fd('0xf')]);router[_0x18fd('0x10')](_0x18fd('0xe'),auth[_0x18fd('0x7')](),controller[_0x18fd('0x11')]);module[_0x18fd('0x12')]=router;
\ No newline at end of file
+var _0xdbd4=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','post','create','put','update','destroy','exports','path','connect-timeout','express'];(function(_0x5a8e55,_0x2394a5){var _0x3999f0=function(_0xbabeb7){while(--_0xbabeb7){_0x5a8e55['push'](_0x5a8e55['shift']());}};_0x3999f0(++_0x2394a5);}(_0xdbd4,0x6f));var _0x4dbd=function(_0x377512,_0x1ec12c){_0x377512=_0x377512-0x0;var _0x2b9ce6=_0xdbd4[_0x377512];return _0x2b9ce6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4dbd('0x0'));var timeout=require(_0x4dbd('0x1'));var express=require(_0x4dbd('0x2'));var router=express[_0x4dbd('0x3')]();var fs_extra=require(_0x4dbd('0x4'));var auth=require(_0x4dbd('0x5'));var interaction=require(_0x4dbd('0x6'));var config=require('../../config/environment');var controller=require(_0x4dbd('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x4dbd('0x8')](_0x4dbd('0x9'),auth[_0x4dbd('0xa')](),controller[_0x4dbd('0xb')]);router['get'](_0x4dbd('0xc'),auth[_0x4dbd('0xa')](),controller['show']);router[_0x4dbd('0xd')]('/',auth[_0x4dbd('0xa')](),controller[_0x4dbd('0xe')]);router[_0x4dbd('0xf')](_0x4dbd('0xc'),auth[_0x4dbd('0xa')](),controller[_0x4dbd('0x10')]);router['delete'](_0x4dbd('0xc'),auth['isAuthenticated'](),controller[_0x4dbd('0x11')]);module[_0x4dbd('0x12')]=router;
\ No newline at end of file
index f2896ff..1b8073b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x258fb0,_0x5362dc){var _0x4d1afe=function(_0x1c8f24){while(--_0x1c8f24){_0x258fb0['push'](_0x258fb0['shift']());}};_0x4d1afe(++_0x5362dc);}(_0x34e8,0x12c));var _0x834e=function(_0x4d81c5,_0x2da663){_0x4d81c5=_0x4d81c5-0x0;var _0x349041=_0x34e8[_0x4d81c5];return _0x349041;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x185560,_0x3e7b92){var _0x202b0f=function(_0x2e20b0){while(--_0x2e20b0){_0x185560['push'](_0x185560['shift']());}};_0x202b0f(++_0x3e7b92);}(_0xaa88,0x137));var _0x8aa8=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xaa88[_0x68ee8b];return _0x5148f7;};'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 d533130..f9f00ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf286=['then','rows','show','intersection','include','options','find','catch','create','body','update','params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','reject','save','destroy','error','name','send','index','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll'];(function(_0x257bf8,_0x3f1866){var _0x22e5ed=function(_0x5cd98e){while(--_0x5cd98e){_0x257bf8['push'](_0x257bf8['shift']());}};_0x22e5ed(++_0x3f1866);}(_0xf286,0xe8));var _0x6f28=function(_0x25662e,_0x4cec68){_0x25662e=_0x25662e-0x0;var _0x59b7bc=_0xf286[_0x25662e];return _0x59b7bc;};'use strict';var emlformat=require(_0x6f28('0x0'));var rimraf=require(_0x6f28('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6f28('0x2'));var rp=require(_0x6f28('0x3'));var moment=require('moment');var BPromise=require(_0x6f28('0x4'));var Mustache=require(_0x6f28('0x5'));var util=require(_0x6f28('0x6'));var path=require('path');var sox=require(_0x6f28('0x7'));var csv=require(_0x6f28('0x8'));var ejs=require(_0x6f28('0x9'));var fs=require('fs');var fs_extra=require(_0x6f28('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6f28('0xb'));var deskjs=require(_0x6f28('0xc'));var toCsv=require(_0x6f28('0x8'));var querystring=require(_0x6f28('0xd'));var Papa=require(_0x6f28('0xe'));var Redis=require(_0x6f28('0xf'));var authService=require(_0x6f28('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6f28('0x11'));var hardwareService=require(_0x6f28('0x12'));var logger=require(_0x6f28('0x13'))('api');var utils=require(_0x6f28('0x14'));var config=require(_0x6f28('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f28('0x16'))['db'];function respondWithStatusCode(_0x5a93e3,_0x1251c3){_0x1251c3=_0x1251c3||0xcc;return function(_0xdc0802){if(_0xdc0802){return _0x5a93e3[_0x6f28('0x17')](_0x1251c3);}return _0x5a93e3[_0x6f28('0x18')](_0x1251c3)[_0x6f28('0x19')]();};}function respondWithResult(_0x4d06cd,_0x36d42a){_0x36d42a=_0x36d42a||0xc8;return function(_0x2f8522){if(_0x2f8522){return _0x4d06cd[_0x6f28('0x18')](_0x36d42a)[_0x6f28('0x1a')](_0x2f8522);}};}function respondWithFilteredResult(_0x1a3d77,_0xaf214b){return function(_0x2da3ae){if(_0x2da3ae){var _0x549e4c=typeof _0xaf214b[_0x6f28('0x1b')]==='undefined'&&typeof _0xaf214b[_0x6f28('0x1c')]===_0x6f28('0x1d');var _0x411c50=_0x2da3ae[_0x6f28('0x1e')];var _0x441c66=_0x549e4c?0x0:_0xaf214b[_0x6f28('0x1b')];var _0x2ffa61=_0x549e4c?_0x2da3ae['count']:_0xaf214b[_0x6f28('0x1b')]+_0xaf214b[_0x6f28('0x1c')];var _0x17c469;if(_0x2ffa61>=_0x411c50){_0x2ffa61=_0x411c50;_0x17c469=0xc8;}else{_0x17c469=0xce;}_0x1a3d77['status'](_0x17c469);return _0x1a3d77['set']('Content-Range',_0x441c66+'-'+_0x2ffa61+'/'+_0x411c50)['json'](_0x2da3ae);}return null;};}function patchUpdates(_0x24580a){return function(_0x1ed863){try{jsonpatch['apply'](_0x1ed863,_0x24580a,!![]);}catch(_0x3f519c){return BPromise[_0x6f28('0x1f')](_0x3f519c);}return _0x1ed863[_0x6f28('0x20')]();};}function saveUpdates(_0x3754a1,_0xdda7c0){return function(_0x295632){if(_0x295632){return _0x295632['update'](_0x3754a1)['then'](function(_0xe20e02){return _0xe20e02;});}return null;};}function removeEntity(_0x38bd24,_0x2bd216){return function(_0x1f0a76){if(_0x1f0a76){return _0x1f0a76[_0x6f28('0x21')]()['then'](function(){_0x38bd24[_0x6f28('0x18')](0xcc)[_0x6f28('0x19')]();});}};}function handleEntityNotFound(_0x5604dc,_0xbdfd34){return function(_0xe9f423){if(!_0xe9f423){_0x5604dc[_0x6f28('0x17')](0x194);}return _0xe9f423;};}function handleError(_0x461b8b,_0x53d512){_0x53d512=_0x53d512||0x1f4;return function(_0x353a0b){logger[_0x6f28('0x22')](_0x353a0b['stack']);if(_0x353a0b['name']){delete _0x353a0b[_0x6f28('0x23')];}_0x461b8b[_0x6f28('0x18')](_0x53d512)[_0x6f28('0x24')](_0x353a0b);};}exports[_0x6f28('0x25')]=function(_0x2bf488,_0x64ad79){var _0x279969={},_0x4d3111={},_0x1db946={'count':0x0,'rows':[]};var _0x35da57=_[_0x6f28('0x26')](db[_0x6f28('0x27')][_0x6f28('0x28')],function(_0x45402c){return{'name':_0x45402c[_0x6f28('0x29')],'type':_0x45402c[_0x6f28('0x2a')][_0x6f28('0x2b')]};});_0x4d3111[_0x6f28('0x2c')]=_[_0x6f28('0x26')](_0x35da57,_0x6f28('0x23'));_0x4d3111[_0x6f28('0x2d')]=_[_0x6f28('0x2e')](_0x2bf488[_0x6f28('0x2d')]);_0x4d3111[_0x6f28('0x2f')]=_['intersection'](_0x4d3111[_0x6f28('0x2c')],_0x4d3111[_0x6f28('0x2d')]);_0x279969[_0x6f28('0x30')]=_['intersection'](_0x4d3111[_0x6f28('0x2c')],qs[_0x6f28('0x31')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x31')]));_0x279969[_0x6f28('0x30')]=_0x279969['attributes'][_0x6f28('0x32')]?_0x279969[_0x6f28('0x30')]:_0x4d3111[_0x6f28('0x2c')];if(!_0x2bf488['query']['hasOwnProperty'](_0x6f28('0x33'))){_0x279969[_0x6f28('0x1c')]=qs[_0x6f28('0x1c')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x1c')]);_0x279969[_0x6f28('0x1b')]=qs[_0x6f28('0x1b')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x1b')]);}_0x279969[_0x6f28('0x34')]=qs[_0x6f28('0x35')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x35')]);_0x279969[_0x6f28('0x36')]=qs[_0x6f28('0x2f')](_['pick'](_0x2bf488['query'],_0x4d3111['filters']),_0x35da57);if(_0x2bf488['query'][_0x6f28('0x37')]){_0x279969[_0x6f28('0x36')]=_[_0x6f28('0x38')](_0x279969[_0x6f28('0x36')],{'$or':_[_0x6f28('0x26')](_0x35da57,function(_0x3070ae){if(_0x3070ae[_0x6f28('0x2a')]!==_0x6f28('0x39')){var _0x4775d7={};_0x4775d7[_0x3070ae[_0x6f28('0x23')]]={'$like':'%'+_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x37')]+'%'};return _0x4775d7;}})});}_0x279969=_[_0x6f28('0x38')]({},_0x279969,_0x2bf488['options']);var _0x5a84f5={'where':_0x279969['where']};return db[_0x6f28('0x27')]['count'](_0x5a84f5)['then'](function(_0xad259d){_0x1db946[_0x6f28('0x1e')]=_0xad259d;if(_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x3a')]){_0x279969['include']=[{'all':!![]}];}return db[_0x6f28('0x27')][_0x6f28('0x3b')](_0x279969);})[_0x6f28('0x3c')](function(_0x4fc547){_0x1db946[_0x6f28('0x3d')]=_0x4fc547;return _0x1db946;})[_0x6f28('0x3c')](respondWithFilteredResult(_0x64ad79,_0x279969))['catch'](handleError(_0x64ad79,null));};exports[_0x6f28('0x3e')]=function(_0x4aa381,_0x4b26fa){var _0x12e614={'raw':!![],'where':{'id':_0x4aa381['params']['id']}},_0x1aba46={};_0x1aba46[_0x6f28('0x2c')]=_['keys'](db['OpenchannelTransferReport']['rawAttributes']);_0x1aba46[_0x6f28('0x2d')]=_[_0x6f28('0x2e')](_0x4aa381[_0x6f28('0x2d')]);_0x1aba46[_0x6f28('0x2f')]=_[_0x6f28('0x3f')](_0x1aba46[_0x6f28('0x2c')],_0x1aba46['query']);_0x12e614['attributes']=_[_0x6f28('0x3f')](_0x1aba46[_0x6f28('0x2c')],qs[_0x6f28('0x31')](_0x4aa381[_0x6f28('0x2d')][_0x6f28('0x31')]));_0x12e614['attributes']=_0x12e614[_0x6f28('0x30')][_0x6f28('0x32')]?_0x12e614[_0x6f28('0x30')]:_0x1aba46[_0x6f28('0x2c')];if(_0x4aa381['query'][_0x6f28('0x3a')]){_0x12e614[_0x6f28('0x40')]=[{'all':!![]}];}_0x12e614=_[_0x6f28('0x38')]({},_0x12e614,_0x4aa381[_0x6f28('0x41')]);return db[_0x6f28('0x27')][_0x6f28('0x42')](_0x12e614)[_0x6f28('0x3c')](handleEntityNotFound(_0x4b26fa,null))['then'](respondWithResult(_0x4b26fa,null))[_0x6f28('0x43')](handleError(_0x4b26fa,null));};exports[_0x6f28('0x44')]=function(_0x49e54e,_0x3994c1){return db['OpenchannelTransferReport'][_0x6f28('0x44')](_0x49e54e[_0x6f28('0x45')],{})[_0x6f28('0x3c')](respondWithResult(_0x3994c1,0xc9))['catch'](handleError(_0x3994c1,null));};exports[_0x6f28('0x46')]=function(_0x59276c,_0x3bffaf){if(_0x59276c[_0x6f28('0x45')]['id']){delete _0x59276c[_0x6f28('0x45')]['id'];}return db[_0x6f28('0x27')][_0x6f28('0x42')]({'where':{'id':_0x59276c[_0x6f28('0x47')]['id']}})[_0x6f28('0x3c')](handleEntityNotFound(_0x3bffaf,null))[_0x6f28('0x3c')](saveUpdates(_0x59276c['body'],null))[_0x6f28('0x3c')](respondWithResult(_0x3bffaf,null))['catch'](handleError(_0x3bffaf,null));};exports['destroy']=function(_0x5b0033,_0x34aeb0){return db[_0x6f28('0x27')][_0x6f28('0x42')]({'where':{'id':_0x5b0033[_0x6f28('0x47')]['id']}})[_0x6f28('0x3c')](handleEntityNotFound(_0x34aeb0,null))[_0x6f28('0x3c')](removeEntity(_0x34aeb0,null))['catch'](handleError(_0x34aeb0,null));};exports[_0x6f28('0x48')]=function(_0x336401,_0x206c11){return db[_0x6f28('0x27')][_0x6f28('0x48')]()[_0x6f28('0x3c')](respondWithResult(_0x206c11,null))[_0x6f28('0x43')](handleError(_0x206c11,null));};
\ No newline at end of file
+var _0x49b7=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','include','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','index','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x49b7,0xab));var _0x749b=function(_0x193e28,_0x3dac1d){_0x193e28=_0x193e28-0x0;var _0x20ef59=_0x49b7[_0x193e28];return _0x20ef59;};'use strict';var emlformat=require(_0x749b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x749b('0x1'));var jsonpatch=require(_0x749b('0x2'));var rp=require(_0x749b('0x3'));var moment=require(_0x749b('0x4'));var BPromise=require(_0x749b('0x5'));var Mustache=require(_0x749b('0x6'));var util=require(_0x749b('0x7'));var path=require('path');var sox=require(_0x749b('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x749b('0x9'));var squel=require('squel');var crypto=require(_0x749b('0xa'));var jsforce=require(_0x749b('0xb'));var deskjs=require(_0x749b('0xc'));var toCsv=require(_0x749b('0xd'));var querystring=require(_0x749b('0xe'));var Papa=require(_0x749b('0xf'));var Redis=require('ioredis');var authService=require(_0x749b('0x10'));var qs=require(_0x749b('0x11'));var as=require(_0x749b('0x12'));var hardwareService=require(_0x749b('0x13'));var logger=require(_0x749b('0x14'))('api');var utils=require(_0x749b('0x15'));var config=require(_0x749b('0x16'));var licenseUtil=require(_0x749b('0x17'));var db=require(_0x749b('0x18'))['db'];function respondWithStatusCode(_0x12368d,_0x12c152){_0x12c152=_0x12c152||0xcc;return function(_0x583ced){if(_0x583ced){return _0x12368d['sendStatus'](_0x12c152);}return _0x12368d[_0x749b('0x19')](_0x12c152)['end']();};}function respondWithResult(_0x97766c,_0x371b50){_0x371b50=_0x371b50||0xc8;return function(_0x7b5696){if(_0x7b5696){return _0x97766c['status'](_0x371b50)[_0x749b('0x1a')](_0x7b5696);}};}function respondWithFilteredResult(_0xdc462,_0xe992fb){return function(_0x30a6f3){if(_0x30a6f3){var _0x241c99=typeof _0xe992fb['offset']===_0x749b('0x1b')&&typeof _0xe992fb[_0x749b('0x1c')]===_0x749b('0x1b');var _0xe6c743=_0x30a6f3[_0x749b('0x1d')];var _0x4ec7a9=_0x241c99?0x0:_0xe992fb[_0x749b('0x1e')];var _0x445eff=_0x241c99?_0x30a6f3[_0x749b('0x1d')]:_0xe992fb[_0x749b('0x1e')]+_0xe992fb[_0x749b('0x1c')];var _0x2481a5;if(_0x445eff>=_0xe6c743){_0x445eff=_0xe6c743;_0x2481a5=0xc8;}else{_0x2481a5=0xce;}_0xdc462['status'](_0x2481a5);return _0xdc462[_0x749b('0x1f')](_0x749b('0x20'),_0x4ec7a9+'-'+_0x445eff+'/'+_0xe6c743)[_0x749b('0x1a')](_0x30a6f3);}return null;};}function patchUpdates(_0x16211d){return function(_0x5e74e8){try{jsonpatch[_0x749b('0x21')](_0x5e74e8,_0x16211d,!![]);}catch(_0x38681f){return BPromise['reject'](_0x38681f);}return _0x5e74e8[_0x749b('0x22')]();};}function saveUpdates(_0x5d360f,_0x59a43f){return function(_0x43a103){if(_0x43a103){return _0x43a103[_0x749b('0x23')](_0x5d360f)[_0x749b('0x24')](function(_0x28a76b){return _0x28a76b;});}return null;};}function removeEntity(_0x5a8b73,_0x3c1d31){return function(_0x585b99){if(_0x585b99){return _0x585b99[_0x749b('0x25')]()[_0x749b('0x24')](function(){_0x5a8b73[_0x749b('0x19')](0xcc)[_0x749b('0x26')]();});}};}function handleEntityNotFound(_0x48a12a,_0x783c2e){return function(_0xd7e865){if(!_0xd7e865){_0x48a12a['sendStatus'](0x194);}return _0xd7e865;};}function handleError(_0x401630,_0x258570){_0x258570=_0x258570||0x1f4;return function(_0x1b851d){logger[_0x749b('0x27')](_0x1b851d[_0x749b('0x28')]);if(_0x1b851d[_0x749b('0x29')]){delete _0x1b851d[_0x749b('0x29')];}_0x401630[_0x749b('0x19')](_0x258570)['send'](_0x1b851d);};}exports[_0x749b('0x2a')]=function(_0x5adde0,_0x2a86ab){var _0xfd23cc={},_0x29c59f={},_0x525210={'count':0x0,'rows':[]};var _0x27e0d6=_['map'](db[_0x749b('0x2b')][_0x749b('0x2c')],function(_0xbb5d95){return{'name':_0xbb5d95[_0x749b('0x2d')],'type':_0xbb5d95[_0x749b('0x2e')][_0x749b('0x2f')]};});_0x29c59f[_0x749b('0x30')]=_['map'](_0x27e0d6,_0x749b('0x29'));_0x29c59f[_0x749b('0x31')]=_[_0x749b('0x32')](_0x5adde0[_0x749b('0x31')]);_0x29c59f[_0x749b('0x33')]=_[_0x749b('0x34')](_0x29c59f['model'],_0x29c59f['query']);_0xfd23cc[_0x749b('0x35')]=_[_0x749b('0x34')](_0x29c59f['model'],qs['fields'](_0x5adde0[_0x749b('0x31')][_0x749b('0x36')]));_0xfd23cc[_0x749b('0x35')]=_0xfd23cc[_0x749b('0x35')][_0x749b('0x37')]?_0xfd23cc[_0x749b('0x35')]:_0x29c59f[_0x749b('0x30')];if(!_0x5adde0[_0x749b('0x31')][_0x749b('0x38')](_0x749b('0x39'))){_0xfd23cc[_0x749b('0x1c')]=qs[_0x749b('0x1c')](_0x5adde0['query']['limit']);_0xfd23cc[_0x749b('0x1e')]=qs[_0x749b('0x1e')](_0x5adde0[_0x749b('0x31')][_0x749b('0x1e')]);}_0xfd23cc[_0x749b('0x3a')]=qs[_0x749b('0x3b')](_0x5adde0[_0x749b('0x31')][_0x749b('0x3b')]);_0xfd23cc[_0x749b('0x3c')]=qs[_0x749b('0x33')](_[_0x749b('0x3d')](_0x5adde0[_0x749b('0x31')],_0x29c59f[_0x749b('0x33')]),_0x27e0d6);if(_0x5adde0[_0x749b('0x31')][_0x749b('0x3e')]){_0xfd23cc[_0x749b('0x3c')]=_[_0x749b('0x3f')](_0xfd23cc[_0x749b('0x3c')],{'$or':_[_0x749b('0x40')](_0x27e0d6,function(_0x16d03b){if(_0x16d03b[_0x749b('0x2e')]!=='VIRTUAL'){var _0xf88509={};_0xf88509[_0x16d03b[_0x749b('0x29')]]={'$like':'%'+_0x5adde0[_0x749b('0x31')]['filter']+'%'};return _0xf88509;}})});}_0xfd23cc=_[_0x749b('0x3f')]({},_0xfd23cc,_0x5adde0[_0x749b('0x41')]);var _0x49bac5={'where':_0xfd23cc[_0x749b('0x3c')]};return db[_0x749b('0x2b')]['count'](_0x49bac5)[_0x749b('0x24')](function(_0x199104){_0x525210[_0x749b('0x1d')]=_0x199104;if(_0x5adde0[_0x749b('0x31')][_0x749b('0x42')]){_0xfd23cc[_0x749b('0x43')]=[{'all':!![]}];}return db['OpenchannelTransferReport']['findAll'](_0xfd23cc);})[_0x749b('0x24')](function(_0x2ffef5){_0x525210['rows']=_0x2ffef5;return _0x525210;})['then'](respondWithFilteredResult(_0x2a86ab,_0xfd23cc))[_0x749b('0x44')](handleError(_0x2a86ab,null));};exports[_0x749b('0x45')]=function(_0x506279,_0x3608e8){var _0x4c82ef={'raw':!![],'where':{'id':_0x506279[_0x749b('0x46')]['id']}},_0x25dcb8={};_0x25dcb8[_0x749b('0x30')]=_['keys'](db['OpenchannelTransferReport'][_0x749b('0x2c')]);_0x25dcb8[_0x749b('0x31')]=_['keys'](_0x506279[_0x749b('0x31')]);_0x25dcb8[_0x749b('0x33')]=_[_0x749b('0x34')](_0x25dcb8['model'],_0x25dcb8['query']);_0x4c82ef[_0x749b('0x35')]=_['intersection'](_0x25dcb8['model'],qs['fields'](_0x506279[_0x749b('0x31')][_0x749b('0x36')]));_0x4c82ef['attributes']=_0x4c82ef[_0x749b('0x35')]['length']?_0x4c82ef[_0x749b('0x35')]:_0x25dcb8['model'];if(_0x506279[_0x749b('0x31')][_0x749b('0x42')]){_0x4c82ef[_0x749b('0x43')]=[{'all':!![]}];}_0x4c82ef=_[_0x749b('0x3f')]({},_0x4c82ef,_0x506279[_0x749b('0x41')]);return db[_0x749b('0x2b')][_0x749b('0x47')](_0x4c82ef)[_0x749b('0x24')](handleEntityNotFound(_0x3608e8,null))[_0x749b('0x24')](respondWithResult(_0x3608e8,null))[_0x749b('0x44')](handleError(_0x3608e8,null));};exports[_0x749b('0x48')]=function(_0x51245c,_0x1e23a2){return db[_0x749b('0x2b')][_0x749b('0x48')](_0x51245c['body'],{})[_0x749b('0x24')](respondWithResult(_0x1e23a2,0xc9))[_0x749b('0x44')](handleError(_0x1e23a2,null));};exports[_0x749b('0x23')]=function(_0x108fff,_0x17ca82){if(_0x108fff[_0x749b('0x49')]['id']){delete _0x108fff[_0x749b('0x49')]['id'];}return db['OpenchannelTransferReport'][_0x749b('0x47')]({'where':{'id':_0x108fff[_0x749b('0x46')]['id']}})['then'](handleEntityNotFound(_0x17ca82,null))[_0x749b('0x24')](saveUpdates(_0x108fff[_0x749b('0x49')],null))[_0x749b('0x24')](respondWithResult(_0x17ca82,null))[_0x749b('0x44')](handleError(_0x17ca82,null));};exports['destroy']=function(_0x1fcc75,_0x23970e){return db[_0x749b('0x2b')][_0x749b('0x47')]({'where':{'id':_0x1fcc75[_0x749b('0x46')]['id']}})['then'](handleEntityNotFound(_0x23970e,null))[_0x749b('0x24')](removeEntity(_0x23970e,null))[_0x749b('0x44')](handleError(_0x23970e,null));};exports[_0x749b('0x4a')]=function(_0x3aa638,_0x3bd913){return db['OpenchannelTransferReport'][_0x749b('0x4a')]()[_0x749b('0x24')](respondWithResult(_0x3bd913,null))[_0x749b('0x44')](handleError(_0x3bd913,null));};
\ No newline at end of file
index 526dca2..801267c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0393=['moment','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x1eef40,_0x3fb65d){var _0x5effdb=function(_0x2db17a){while(--_0x2db17a){_0x1eef40['push'](_0x1eef40['shift']());}};_0x5effdb(++_0x3fb65d);}(_0x0393,0xf8));var _0x3039=function(_0x338640,_0x3321c9){_0x338640=_0x338640-0x0;var _0x1698ea=_0x0393[_0x338640];return _0x1698ea;};'use strict';var _=require(_0x3039('0x0'));var util=require(_0x3039('0x1'));var logger=require(_0x3039('0x2'))(_0x3039('0x3'));var moment=require(_0x3039('0x4'));var BPromise=require('bluebird');var rp=require(_0x3039('0x5'));var fs=require('fs');var path=require(_0x3039('0x6'));var rimraf=require(_0x3039('0x7'));var config=require(_0x3039('0x8'));var attributes=require(_0x3039('0x9'));module['exports']=function(_0x4bda6f,_0x3c4486){return _0x4bda6f[_0x3039('0xa')](_0x3039('0xb'),attributes,{'tableName':_0x3039('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x3039('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a6e=['request-promise','rimraf','../../config/environment','./openchannelTransferReport.attributes','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','util','../../config/logger'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x6a6e,0xa9));var _0xe6a6=function(_0x349915,_0x124261){_0x349915=_0x349915-0x0;var _0x8be4f3=_0x6a6e[_0x349915];return _0x8be4f3;};'use strict';var _=require('lodash');var util=require(_0xe6a6('0x0'));var logger=require(_0xe6a6('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe6a6('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe6a6('0x3'));var config=require(_0xe6a6('0x4'));var attributes=require(_0xe6a6('0x5'));module['exports']=function(_0x452cc2,_0x232b47){return _0x452cc2['define'](_0xe6a6('0x6'),attributes,{'tableName':_0xe6a6('0x7'),'paranoid':![],'indexes':[{'name':_0xe6a6('0x8'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 98be80c..4f97b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5301=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x2b9e8a,_0x7b21d4){var _0x520e67=function(_0x22bce8){while(--_0x22bce8){_0x2b9e8a['push'](_0x2b9e8a['shift']());}};_0x520e67(++_0x7b21d4);}(_0x5301,0x157));var _0x1530=function(_0xa007d7,_0x1468b5){_0xa007d7=_0xa007d7-0x0;var _0x3f2544=_0x5301[_0xa007d7];return _0x3f2544;};'use strict';var _=require('lodash');var util=require(_0x1530('0x0'));var moment=require(_0x1530('0x1'));var BPromise=require(_0x1530('0x2'));var rs=require(_0x1530('0x3'));var fs=require('fs');var Redis=require(_0x1530('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1530('0x5'));var logger=require(_0x1530('0x6'))(_0x1530('0x7'));var config=require(_0x1530('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1530('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17f435,_0x4c8496,_0xd9ff84){return new BPromise(function(_0x2c7135,_0x319d53){return client[_0x1530('0xa')](_0x17f435,_0xd9ff84)[_0x1530('0xb')](function(_0x59c4d6){logger['info'](_0x1530('0xc'),_0x4c8496,_0x1530('0xd'));logger[_0x1530('0xe')](_0x1530('0xf'),_0x4c8496,'request\x20sent',JSON[_0x1530('0x10')](_0x59c4d6));if(_0x59c4d6[_0x1530('0x11')]){if(_0x59c4d6[_0x1530('0x11')][_0x1530('0x12')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c8496,_0x59c4d6[_0x1530('0x11')][_0x1530('0x13')]);return _0x319d53(_0x59c4d6['error'][_0x1530('0x13')]);}logger[_0x1530('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c8496,_0x59c4d6[_0x1530('0x11')][_0x1530('0x13')]);return _0x2c7135(_0x59c4d6[_0x1530('0x11')][_0x1530('0x13')]);}else{logger[_0x1530('0x14')](_0x1530('0xc'),_0x4c8496,_0x1530('0xd'));_0x2c7135(_0x59c4d6[_0x1530('0x15')][_0x1530('0x13')]);}})[_0x1530('0x16')](function(_0x3c5eb3){logger[_0x1530('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c8496,_0x3c5eb3);_0x319d53(_0x3c5eb3);});});}
\ No newline at end of file
+var _0x6657=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash'];(function(_0x260163,_0x491373){var _0x592a70=function(_0x18bf7e){while(--_0x18bf7e){_0x260163['push'](_0x260163['shift']());}};_0x592a70(++_0x491373);}(_0x6657,0x17f));var _0x7665=function(_0x4f9589,_0x508341){_0x4f9589=_0x4f9589-0x0;var _0x461484=_0x6657[_0x4f9589];return _0x461484;};'use strict';var _=require(_0x7665('0x0'));var util=require('util');var moment=require(_0x7665('0x1'));var BPromise=require(_0x7665('0x2'));var rs=require(_0x7665('0x3'));var fs=require('fs');var Redis=require(_0x7665('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7665('0x5'));var logger=require(_0x7665('0x6'))(_0x7665('0x7'));var config=require(_0x7665('0x8'));var jayson=require(_0x7665('0x9'));var client=jayson[_0x7665('0xa')][_0x7665('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3387d8,_0x4c0b5c,_0x31da89){return new BPromise(function(_0x464ec1,_0x24e6aa){return client[_0x7665('0xc')](_0x3387d8,_0x31da89)[_0x7665('0xd')](function(_0x3f3a65){logger[_0x7665('0xe')](_0x7665('0xf'),_0x4c0b5c,'request\x20sent');logger[_0x7665('0x10')](_0x7665('0x11'),_0x4c0b5c,_0x7665('0x12'),JSON['stringify'](_0x3f3a65));if(_0x3f3a65[_0x7665('0x13')]){if(_0x3f3a65['error'][_0x7665('0x14')]===0x1f4){logger[_0x7665('0x13')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c0b5c,_0x3f3a65[_0x7665('0x13')][_0x7665('0x15')]);return _0x24e6aa(_0x3f3a65['error'][_0x7665('0x15')]);}logger[_0x7665('0x13')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c0b5c,_0x3f3a65[_0x7665('0x13')][_0x7665('0x15')]);return _0x464ec1(_0x3f3a65[_0x7665('0x13')][_0x7665('0x15')]);}else{logger[_0x7665('0xe')](_0x7665('0xf'),_0x4c0b5c,_0x7665('0x12'));_0x464ec1(_0x3f3a65[_0x7665('0x16')][_0x7665('0x15')]);}})[_0x7665('0x17')](function(_0x365469){logger[_0x7665('0x13')](_0x7665('0xf'),_0x4c0b5c,_0x365469);_0x24e6aa(_0x365469);});});}
\ No newline at end of file
index 2ed1a91..aad2cbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bee=['destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','update'];(function(_0x2bfe52,_0x43946e){var _0x1cf649=function(_0xc8300c){while(--_0xc8300c){_0x2bfe52['push'](_0x2bfe52['shift']());}};_0x1cf649(++_0x43946e);}(_0x5bee,0x1c3));var _0xe5be=function(_0x2d8c90,_0xebac28){_0x2d8c90=_0x2d8c90-0x0;var _0x118c87=_0x5bee[_0x2d8c90];return _0x118c87;};'use strict';var multer=require(_0xe5be('0x0'));var util=require(_0xe5be('0x1'));var path=require(_0xe5be('0x2'));var timeout=require('connect-timeout');var express=require(_0xe5be('0x3'));var router=express[_0xe5be('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe5be('0x5'));var interaction=require(_0xe5be('0x6'));var config=require(_0xe5be('0x7'));var controller=require(_0xe5be('0x8'));router[_0xe5be('0x9')]('/',auth[_0xe5be('0xa')](),controller[_0xe5be('0xb')]);router[_0xe5be('0x9')](_0xe5be('0xc'),auth[_0xe5be('0xa')](),controller[_0xe5be('0xd')]);router[_0xe5be('0xe')]('/',auth[_0xe5be('0xa')](),controller[_0xe5be('0xf')]);router['put'](_0xe5be('0xc'),auth[_0xe5be('0xa')](),controller[_0xe5be('0x10')]);router['delete'](_0xe5be('0xc'),auth[_0xe5be('0xa')](),controller[_0xe5be('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x4edf=['post','create','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','index','/:id','isAuthenticated','show'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4edf,0x196));var _0xf4ed=function(_0x5aef17,_0x592cd4){_0x5aef17=_0x5aef17-0x0;var _0x43f9d0=_0x4edf[_0x5aef17];return _0x43f9d0;};'use strict';var multer=require(_0xf4ed('0x0'));var util=require(_0xf4ed('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf4ed('0x2'));var router=express[_0xf4ed('0x3')]();var fs_extra=require(_0xf4ed('0x4'));var auth=require(_0xf4ed('0x5'));var interaction=require(_0xf4ed('0x6'));var config=require(_0xf4ed('0x7'));var controller=require(_0xf4ed('0x8'));router[_0xf4ed('0x9')]('/',auth['isAuthenticated'](),controller[_0xf4ed('0xa')]);router[_0xf4ed('0x9')](_0xf4ed('0xb'),auth[_0xf4ed('0xc')](),controller[_0xf4ed('0xd')]);router[_0xf4ed('0xe')]('/',auth[_0xf4ed('0xc')](),controller[_0xf4ed('0xf')]);router['put'](_0xf4ed('0xb'),auth['isAuthenticated'](),controller[_0xf4ed('0x10')]);router[_0xf4ed('0x11')](_0xf4ed('0xb'),auth[_0xf4ed('0xc')](),controller[_0xf4ed('0x12')]);module[_0xf4ed('0x13')]=router;
\ No newline at end of file
index d90c575..d31c707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x045e=['sequelize','exports','name','STRING'];(function(_0x6ca1c1,_0x390eb5){var _0x5a7a23=function(_0x4c783d){while(--_0x4c783d){_0x6ca1c1['push'](_0x6ca1c1['shift']());}};_0x5a7a23(++_0x390eb5);}(_0x045e,0x1cc));var _0xe045=function(_0x581d90,_0x40fa2a){_0x581d90=_0x581d90-0x0;var _0x39247f=_0x045e[_0x581d90];return _0x39247f;};'use strict';var Sequelize=require(_0xe045('0x0'));module[_0xe045('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe045('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xe045('0x3')]}};
\ No newline at end of file
+var _0xf916=['STRING','name','sequelize'];(function(_0x1e3c02,_0x5c07a2){var _0x4d26d7=function(_0x367ed9){while(--_0x367ed9){_0x1e3c02['push'](_0x1e3c02['shift']());}};_0x4d26d7(++_0x5c07a2);}(_0xf916,0xf5));var _0x6f91=function(_0xd8b239,_0xf9ccf3){_0xd8b239=_0xd8b239-0x0;var _0x3ea0da=_0xf916[_0xd8b239];return _0x3ea0da;};'use strict';var Sequelize=require(_0x6f91('0x0'));module['exports']={'name':{'type':Sequelize[_0x6f91('0x1')],'unique':_0x6f91('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d0d4df1..bdd46a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ae=['to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','status','set','apply','update','then','destroy','get','Pauses','UserProfileResource','stack','name','send','map','Pause','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','limit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','length','include','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','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x3b646b,_0x201783){var _0x2dd071=function(_0x5d4b83){while(--_0x5d4b83){_0x3b646b['push'](_0x3b646b['shift']());}};_0x2dd071(++_0x201783);}(_0x41ae,0x1f4));var _0xe41a=function(_0x1a8dc3,_0x395536){_0x1a8dc3=_0x1a8dc3-0x0;var _0x2a9c1e=_0x41ae[_0x1a8dc3];return _0x2a9c1e;};'use strict';var emlformat=require(_0xe41a('0x0'));var rimraf=require(_0xe41a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe41a('0x2'));var rp=require(_0xe41a('0x3'));var moment=require(_0xe41a('0x4'));var BPromise=require(_0xe41a('0x5'));var Mustache=require(_0xe41a('0x6'));var util=require(_0xe41a('0x7'));var path=require(_0xe41a('0x8'));var sox=require(_0xe41a('0x9'));var csv=require(_0xe41a('0xa'));var ejs=require(_0xe41a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe41a('0xc'));var squel=require(_0xe41a('0xd'));var crypto=require(_0xe41a('0xe'));var jsforce=require(_0xe41a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe41a('0xa'));var querystring=require('querystring');var Papa=require(_0xe41a('0x10'));var Redis=require(_0xe41a('0x11'));var authService=require(_0xe41a('0x12'));var qs=require(_0xe41a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe41a('0x14'));var logger=require(_0xe41a('0x15'))(_0xe41a('0x16'));var utils=require(_0xe41a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xe41a('0x18'));var db=require(_0xe41a('0x19'))['db'];function respondWithStatusCode(_0x4af003,_0x358bc0){_0x358bc0=_0x358bc0||0xcc;return function(_0x21a14f){if(_0x21a14f){return _0x4af003[_0xe41a('0x1a')](_0x358bc0);}return _0x4af003['status'](_0x358bc0)[_0xe41a('0x1b')]();};}function respondWithResult(_0x31e6f8,_0x13aa3a){_0x13aa3a=_0x13aa3a||0xc8;return function(_0x51a529){if(_0x51a529){return _0x31e6f8['status'](_0x13aa3a)[_0xe41a('0x1c')](_0x51a529);}};}function respondWithFilteredResult(_0xd8ce4e,_0x2f2653){return function(_0x44ea1c){if(_0x44ea1c){var _0x248f1d=typeof _0x2f2653[_0xe41a('0x1d')]===_0xe41a('0x1e')&&typeof _0x2f2653['limit']===_0xe41a('0x1e');var _0x5c7af8=_0x44ea1c[_0xe41a('0x1f')];var _0x47d6c7=_0x248f1d?0x0:_0x2f2653[_0xe41a('0x1d')];var _0x184ac2=_0x248f1d?_0x44ea1c[_0xe41a('0x1f')]:_0x2f2653[_0xe41a('0x1d')]+_0x2f2653['limit'];var _0x5a8307;if(_0x184ac2>=_0x5c7af8){_0x184ac2=_0x5c7af8;_0x5a8307=0xc8;}else{_0x5a8307=0xce;}_0xd8ce4e[_0xe41a('0x20')](_0x5a8307);return _0xd8ce4e[_0xe41a('0x21')]('Content-Range',_0x47d6c7+'-'+_0x184ac2+'/'+_0x5c7af8)[_0xe41a('0x1c')](_0x44ea1c);}return null;};}function patchUpdates(_0x54f959){return function(_0x2dfc2c){try{jsonpatch[_0xe41a('0x22')](_0x2dfc2c,_0x54f959,!![]);}catch(_0x8d7b7d){return BPromise['reject'](_0x8d7b7d);}return _0x2dfc2c['save']();};}function saveUpdates(_0x343a57,_0x85e79){return function(_0x2fcd13){if(_0x2fcd13){return _0x2fcd13[_0xe41a('0x23')](_0x343a57)[_0xe41a('0x24')](function(_0x5a27b0){return _0x5a27b0;});}return null;};}function removeEntity(_0x573cd7,_0x4c5690){return function(_0x73bb3d){if(_0x73bb3d){return _0x73bb3d[_0xe41a('0x25')]()['then'](function(){var _0x549039=_0x73bb3d[_0xe41a('0x26')]({'plain':!![]});var _0x5758df=_0xe41a('0x27');return db[_0xe41a('0x28')]['destroy']({'where':{'type':_0x5758df,'resourceId':_0x549039['id']}})[_0xe41a('0x24')](function(){return _0x73bb3d;});})[_0xe41a('0x24')](function(){_0x573cd7['status'](0xcc)[_0xe41a('0x1b')]();});}};}function handleEntityNotFound(_0x2e7b06,_0x47cfdb){return function(_0x23e67e){if(!_0x23e67e){_0x2e7b06[_0xe41a('0x1a')](0x194);}return _0x23e67e;};}function handleError(_0x5cc46e,_0x24e7af){_0x24e7af=_0x24e7af||0x1f4;return function(_0x1d6bbb){logger['error'](_0x1d6bbb[_0xe41a('0x29')]);if(_0x1d6bbb['name']){delete _0x1d6bbb[_0xe41a('0x2a')];}_0x5cc46e[_0xe41a('0x20')](_0x24e7af)[_0xe41a('0x2b')](_0x1d6bbb);};}exports['index']=function(_0x447a42,_0x7c34ca){var _0x10e692={},_0x449b5f={},_0x2217ab={'count':0x0,'rows':[]};var _0x48d68c=_[_0xe41a('0x2c')](db[_0xe41a('0x2d')]['rawAttributes'],function(_0x46b082){return{'name':_0x46b082[_0xe41a('0x2e')],'type':_0x46b082['type'][_0xe41a('0x2f')]};});_0x449b5f[_0xe41a('0x30')]=_[_0xe41a('0x2c')](_0x48d68c,_0xe41a('0x2a'));_0x449b5f[_0xe41a('0x31')]=_[_0xe41a('0x32')](_0x447a42[_0xe41a('0x31')]);_0x449b5f[_0xe41a('0x33')]=_[_0xe41a('0x34')](_0x449b5f[_0xe41a('0x30')],_0x449b5f[_0xe41a('0x31')]);_0x10e692[_0xe41a('0x35')]=_['intersection'](_0x449b5f['model'],qs[_0xe41a('0x36')](_0x447a42[_0xe41a('0x31')]['fields']));_0x10e692[_0xe41a('0x35')]=_0x10e692[_0xe41a('0x35')]['length']?_0x10e692[_0xe41a('0x35')]:_0x449b5f[_0xe41a('0x30')];if(!_0x447a42[_0xe41a('0x31')]['hasOwnProperty'](_0xe41a('0x37'))){_0x10e692[_0xe41a('0x38')]=qs[_0xe41a('0x38')](_0x447a42['query'][_0xe41a('0x38')]);_0x10e692[_0xe41a('0x1d')]=qs[_0xe41a('0x1d')](_0x447a42['query'][_0xe41a('0x1d')]);}_0x10e692[_0xe41a('0x39')]=qs[_0xe41a('0x3a')](_0x447a42[_0xe41a('0x31')][_0xe41a('0x3a')]);_0x10e692[_0xe41a('0x3b')]=qs[_0xe41a('0x33')](_['pick'](_0x447a42['query'],_0x449b5f['filters']),_0x48d68c);if(_0x447a42['query'][_0xe41a('0x3c')]){_0x10e692[_0xe41a('0x3b')]=_[_0xe41a('0x3d')](_0x10e692['where'],{'$or':_['map'](_0x48d68c,function(_0x50e05a){if(_0x50e05a[_0xe41a('0x3e')]!==_0xe41a('0x3f')){var _0x4ef551={};_0x4ef551[_0x50e05a['name']]={'$like':'%'+_0x447a42[_0xe41a('0x31')][_0xe41a('0x3c')]+'%'};return _0x4ef551;}})});}_0x10e692=_[_0xe41a('0x3d')]({},_0x10e692,_0x447a42[_0xe41a('0x40')]);var _0x199be9={'where':_0x10e692[_0xe41a('0x3b')]};return db['Pause'][_0xe41a('0x1f')](_0x199be9)[_0xe41a('0x24')](function(_0xc8f63){_0x2217ab[_0xe41a('0x1f')]=_0xc8f63;if(_0x447a42[_0xe41a('0x31')][_0xe41a('0x41')]){_0x10e692['include']=[{'all':!![]}];}return db['Pause'][_0xe41a('0x42')](_0x10e692);})[_0xe41a('0x24')](function(_0x20c479){_0x2217ab[_0xe41a('0x43')]=_0x20c479;return _0x2217ab;})['then'](respondWithFilteredResult(_0x7c34ca,_0x10e692))[_0xe41a('0x44')](handleError(_0x7c34ca,null));};exports[_0xe41a('0x45')]=function(_0x4ddf39,_0x30d82d){var _0x2e9792={'raw':!![],'where':{'id':_0x4ddf39['params']['id']}},_0x5c9f5e={};_0x5c9f5e[_0xe41a('0x30')]=_[_0xe41a('0x32')](db[_0xe41a('0x2d')][_0xe41a('0x46')]);_0x5c9f5e['query']=_[_0xe41a('0x32')](_0x4ddf39[_0xe41a('0x31')]);_0x5c9f5e['filters']=_[_0xe41a('0x34')](_0x5c9f5e[_0xe41a('0x30')],_0x5c9f5e['query']);_0x2e9792[_0xe41a('0x35')]=_['intersection'](_0x5c9f5e[_0xe41a('0x30')],qs[_0xe41a('0x36')](_0x4ddf39[_0xe41a('0x31')][_0xe41a('0x36')]));_0x2e9792[_0xe41a('0x35')]=_0x2e9792['attributes'][_0xe41a('0x47')]?_0x2e9792[_0xe41a('0x35')]:_0x5c9f5e[_0xe41a('0x30')];if(_0x4ddf39[_0xe41a('0x31')][_0xe41a('0x41')]){_0x2e9792[_0xe41a('0x48')]=[{'all':!![]}];}_0x2e9792=_[_0xe41a('0x3d')]({},_0x2e9792,_0x4ddf39[_0xe41a('0x40')]);return db[_0xe41a('0x2d')][_0xe41a('0x49')](_0x2e9792)['then'](handleEntityNotFound(_0x30d82d,null))[_0xe41a('0x24')](respondWithResult(_0x30d82d,null))[_0xe41a('0x44')](handleError(_0x30d82d,null));};exports[_0xe41a('0x4a')]=function(_0x40031e,_0x3e456f){return db[_0xe41a('0x2d')]['create'](_0x40031e[_0xe41a('0x4b')],{})[_0xe41a('0x24')](function(_0x423a1c){var _0x1c3bbb=_0x40031e[_0xe41a('0x4c')]['get']({'plain':!![]});if(!_0x1c3bbb)throw new Error(_0xe41a('0x4d'));if(_0x1c3bbb[_0xe41a('0x4e')]==='user'){var _0x23fc49=_0x423a1c[_0xe41a('0x26')]({'plain':!![]});var _0x2be2a3=_0xe41a('0x27');return db[_0xe41a('0x4f')]['find']({'where':{'name':_0x2be2a3,'userProfileId':_0x1c3bbb[_0xe41a('0x50')]},'raw':!![]})['then'](function(_0x5c830f){if(_0x5c830f&&_0x5c830f[_0xe41a('0x51')]===0x0){return db[_0xe41a('0x28')][_0xe41a('0x4a')]({'name':_0x23fc49[_0xe41a('0x2a')],'resourceId':_0x23fc49['id'],'type':_0x5c830f['name'],'sectionId':_0x5c830f['id']},{})['then'](function(){return _0x423a1c;});}else{return _0x423a1c;}})[_0xe41a('0x44')](function(_0x495df2){logger[_0xe41a('0x52')](_0xe41a('0x53'),_0x495df2);throw _0x495df2;});}return _0x423a1c;})[_0xe41a('0x24')](respondWithResult(_0x3e456f,0xc9))[_0xe41a('0x44')](handleError(_0x3e456f,null));};exports[_0xe41a('0x23')]=function(_0x2cd8bb,_0x52cfea){if(_0x2cd8bb['body']['id']){delete _0x2cd8bb['body']['id'];}return db[_0xe41a('0x2d')][_0xe41a('0x49')]({'where':{'id':_0x2cd8bb['params']['id']}})[_0xe41a('0x24')](handleEntityNotFound(_0x52cfea,null))[_0xe41a('0x24')](saveUpdates(_0x2cd8bb[_0xe41a('0x4b')],null))[_0xe41a('0x24')](respondWithResult(_0x52cfea,null))[_0xe41a('0x44')](handleError(_0x52cfea,null));};exports[_0xe41a('0x25')]=function(_0x4a6e82,_0x38bd80){return db[_0xe41a('0x2d')][_0xe41a('0x49')]({'where':{'id':_0x4a6e82[_0xe41a('0x54')]['id']}})[_0xe41a('0x24')](handleEntityNotFound(_0x38bd80,null))[_0xe41a('0x24')](removeEntity(_0x38bd80,null))[_0xe41a('0x44')](handleError(_0x38bd80,null));};
\ No newline at end of file
+var _0x4d46=['util','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','then','get','Pauses','UserProfileResource','destroy','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','Pause','includeAll','include','findAll','rows','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','params','rimraf','zip-dir','fast-json-patch','moment','mustache'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x4d46,0x181));var _0x64d4=function(_0x5677e9,_0x57f221){_0x5677e9=_0x5677e9-0x0;var _0x8ee425=_0x4d46[_0x5677e9];return _0x8ee425;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x64d4('0x0'));var zipdir=require(_0x64d4('0x1'));var jsonpatch=require(_0x64d4('0x2'));var rp=require('request-promise');var moment=require(_0x64d4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x64d4('0x4'));var util=require(_0x64d4('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x64d4('0x6'));var fs=require('fs');var fs_extra=require(_0x64d4('0x7'));var _=require(_0x64d4('0x8'));var squel=require(_0x64d4('0x9'));var crypto=require(_0x64d4('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x64d4('0xb'));var toCsv=require(_0x64d4('0xc'));var querystring=require(_0x64d4('0xd'));var Papa=require(_0x64d4('0xe'));var Redis=require('ioredis');var authService=require(_0x64d4('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x64d4('0x10'));var logger=require(_0x64d4('0x11'))(_0x64d4('0x12'));var utils=require(_0x64d4('0x13'));var config=require(_0x64d4('0x14'));var licenseUtil=require(_0x64d4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x496b9b,_0x47abca){_0x47abca=_0x47abca||0xcc;return function(_0xec90dc){if(_0xec90dc){return _0x496b9b[_0x64d4('0x16')](_0x47abca);}return _0x496b9b[_0x64d4('0x17')](_0x47abca)[_0x64d4('0x18')]();};}function respondWithResult(_0x4732c0,_0x1aa884){_0x1aa884=_0x1aa884||0xc8;return function(_0x2889f3){if(_0x2889f3){return _0x4732c0[_0x64d4('0x17')](_0x1aa884)['json'](_0x2889f3);}};}function respondWithFilteredResult(_0x1c859f,_0x3a28c1){return function(_0x8ff0db){if(_0x8ff0db){var _0x1a6892=typeof _0x3a28c1[_0x64d4('0x19')]===_0x64d4('0x1a')&&typeof _0x3a28c1[_0x64d4('0x1b')]===_0x64d4('0x1a');var _0x360c31=_0x8ff0db[_0x64d4('0x1c')];var _0x53ff4a=_0x1a6892?0x0:_0x3a28c1[_0x64d4('0x19')];var _0x5b28a=_0x1a6892?_0x8ff0db[_0x64d4('0x1c')]:_0x3a28c1['offset']+_0x3a28c1['limit'];var _0x36dc1c;if(_0x5b28a>=_0x360c31){_0x5b28a=_0x360c31;_0x36dc1c=0xc8;}else{_0x36dc1c=0xce;}_0x1c859f[_0x64d4('0x17')](_0x36dc1c);return _0x1c859f[_0x64d4('0x1d')]('Content-Range',_0x53ff4a+'-'+_0x5b28a+'/'+_0x360c31)[_0x64d4('0x1e')](_0x8ff0db);}return null;};}function patchUpdates(_0x2f7ad6){return function(_0x59127c){try{jsonpatch['apply'](_0x59127c,_0x2f7ad6,!![]);}catch(_0x590bfb){return BPromise[_0x64d4('0x1f')](_0x590bfb);}return _0x59127c[_0x64d4('0x20')]();};}function saveUpdates(_0x2f3d0c,_0x27d1c8){return function(_0x47f341){if(_0x47f341){return _0x47f341[_0x64d4('0x21')](_0x2f3d0c)['then'](function(_0x323f77){return _0x323f77;});}return null;};}function removeEntity(_0x5ec80b,_0x408d1d){return function(_0x6f9845){if(_0x6f9845){return _0x6f9845['destroy']()[_0x64d4('0x22')](function(){var _0x57f013=_0x6f9845[_0x64d4('0x23')]({'plain':!![]});var _0x2f3e17=_0x64d4('0x24');return db[_0x64d4('0x25')][_0x64d4('0x26')]({'where':{'type':_0x2f3e17,'resourceId':_0x57f013['id']}})[_0x64d4('0x22')](function(){return _0x6f9845;});})['then'](function(){_0x5ec80b['status'](0xcc)[_0x64d4('0x18')]();});}};}function handleEntityNotFound(_0x51b0f0,_0x396df5){return function(_0x3959a1){if(!_0x3959a1){_0x51b0f0['sendStatus'](0x194);}return _0x3959a1;};}function handleError(_0x317683,_0x626053){_0x626053=_0x626053||0x1f4;return function(_0x4aab9b){logger['error'](_0x4aab9b[_0x64d4('0x27')]);if(_0x4aab9b['name']){delete _0x4aab9b[_0x64d4('0x28')];}_0x317683[_0x64d4('0x17')](_0x626053)[_0x64d4('0x29')](_0x4aab9b);};}exports['index']=function(_0x16ec0d,_0x269b92){var _0x571029={},_0x1f8e15={},_0x30382a={'count':0x0,'rows':[]};var _0x59b902=_[_0x64d4('0x2a')](db['Pause'][_0x64d4('0x2b')],function(_0x19d611){return{'name':_0x19d611[_0x64d4('0x2c')],'type':_0x19d611['type'][_0x64d4('0x2d')]};});_0x1f8e15[_0x64d4('0x2e')]=_[_0x64d4('0x2a')](_0x59b902,'name');_0x1f8e15[_0x64d4('0x2f')]=_[_0x64d4('0x30')](_0x16ec0d[_0x64d4('0x2f')]);_0x1f8e15[_0x64d4('0x31')]=_['intersection'](_0x1f8e15[_0x64d4('0x2e')],_0x1f8e15['query']);_0x571029['attributes']=_[_0x64d4('0x32')](_0x1f8e15[_0x64d4('0x2e')],qs[_0x64d4('0x33')](_0x16ec0d[_0x64d4('0x2f')]['fields']));_0x571029[_0x64d4('0x34')]=_0x571029[_0x64d4('0x34')]['length']?_0x571029['attributes']:_0x1f8e15[_0x64d4('0x2e')];if(!_0x16ec0d[_0x64d4('0x2f')][_0x64d4('0x35')](_0x64d4('0x36'))){_0x571029['limit']=qs['limit'](_0x16ec0d[_0x64d4('0x2f')][_0x64d4('0x1b')]);_0x571029['offset']=qs[_0x64d4('0x19')](_0x16ec0d[_0x64d4('0x2f')]['offset']);}_0x571029[_0x64d4('0x37')]=qs[_0x64d4('0x38')](_0x16ec0d['query'][_0x64d4('0x38')]);_0x571029[_0x64d4('0x39')]=qs[_0x64d4('0x31')](_['pick'](_0x16ec0d[_0x64d4('0x2f')],_0x1f8e15[_0x64d4('0x31')]),_0x59b902);if(_0x16ec0d['query']['filter']){_0x571029[_0x64d4('0x39')]=_[_0x64d4('0x3a')](_0x571029[_0x64d4('0x39')],{'$or':_[_0x64d4('0x2a')](_0x59b902,function(_0xe1065f){if(_0xe1065f[_0x64d4('0x3b')]!=='VIRTUAL'){var _0x1b42cb={};_0x1b42cb[_0xe1065f[_0x64d4('0x28')]]={'$like':'%'+_0x16ec0d[_0x64d4('0x2f')][_0x64d4('0x3c')]+'%'};return _0x1b42cb;}})});}_0x571029=_[_0x64d4('0x3a')]({},_0x571029,_0x16ec0d[_0x64d4('0x3d')]);var _0x2e5f12={'where':_0x571029[_0x64d4('0x39')]};return db[_0x64d4('0x3e')]['count'](_0x2e5f12)[_0x64d4('0x22')](function(_0x3f1059){_0x30382a[_0x64d4('0x1c')]=_0x3f1059;if(_0x16ec0d[_0x64d4('0x2f')][_0x64d4('0x3f')]){_0x571029[_0x64d4('0x40')]=[{'all':!![]}];}return db[_0x64d4('0x3e')][_0x64d4('0x41')](_0x571029);})[_0x64d4('0x22')](function(_0x486421){_0x30382a[_0x64d4('0x42')]=_0x486421;return _0x30382a;})[_0x64d4('0x22')](respondWithFilteredResult(_0x269b92,_0x571029))['catch'](handleError(_0x269b92,null));};exports[_0x64d4('0x43')]=function(_0x33edcd,_0x3f495f){var _0x11756b={'raw':!![],'where':{'id':_0x33edcd['params']['id']}},_0x50568e={};_0x50568e[_0x64d4('0x2e')]=_[_0x64d4('0x30')](db['Pause']['rawAttributes']);_0x50568e[_0x64d4('0x2f')]=_[_0x64d4('0x30')](_0x33edcd[_0x64d4('0x2f')]);_0x50568e[_0x64d4('0x31')]=_[_0x64d4('0x32')](_0x50568e[_0x64d4('0x2e')],_0x50568e[_0x64d4('0x2f')]);_0x11756b[_0x64d4('0x34')]=_[_0x64d4('0x32')](_0x50568e['model'],qs[_0x64d4('0x33')](_0x33edcd[_0x64d4('0x2f')]['fields']));_0x11756b[_0x64d4('0x34')]=_0x11756b['attributes']['length']?_0x11756b['attributes']:_0x50568e[_0x64d4('0x2e')];if(_0x33edcd[_0x64d4('0x2f')][_0x64d4('0x3f')]){_0x11756b['include']=[{'all':!![]}];}_0x11756b=_[_0x64d4('0x3a')]({},_0x11756b,_0x33edcd['options']);return db[_0x64d4('0x3e')][_0x64d4('0x44')](_0x11756b)['then'](handleEntityNotFound(_0x3f495f,null))[_0x64d4('0x22')](respondWithResult(_0x3f495f,null))['catch'](handleError(_0x3f495f,null));};exports[_0x64d4('0x45')]=function(_0x5aa235,_0x34924d){return db[_0x64d4('0x3e')][_0x64d4('0x45')](_0x5aa235[_0x64d4('0x46')],{})[_0x64d4('0x22')](function(_0xb63e5){var _0x3e7282=_0x5aa235[_0x64d4('0x47')]['get']({'plain':!![]});if(!_0x3e7282)throw new Error(_0x64d4('0x48'));if(_0x3e7282['role']===_0x64d4('0x47')){var _0xc8b9c0=_0xb63e5[_0x64d4('0x23')]({'plain':!![]});var _0x74de3e=_0x64d4('0x24');return db[_0x64d4('0x49')][_0x64d4('0x44')]({'where':{'name':_0x74de3e,'userProfileId':_0x3e7282[_0x64d4('0x4a')]},'raw':!![]})['then'](function(_0xa5e104){if(_0xa5e104&&_0xa5e104['autoAssociation']===0x0){return db['UserProfileResource'][_0x64d4('0x45')]({'name':_0xc8b9c0['name'],'resourceId':_0xc8b9c0['id'],'type':_0xa5e104[_0x64d4('0x28')],'sectionId':_0xa5e104['id']},{})[_0x64d4('0x22')](function(){return _0xb63e5;});}else{return _0xb63e5;}})['catch'](function(_0x583162){logger['error'](_0x64d4('0x4b'),_0x583162);throw _0x583162;});}return _0xb63e5;})[_0x64d4('0x22')](respondWithResult(_0x34924d,0xc9))[_0x64d4('0x4c')](handleError(_0x34924d,null));};exports['update']=function(_0x55556f,_0x55b40){if(_0x55556f[_0x64d4('0x46')]['id']){delete _0x55556f[_0x64d4('0x46')]['id'];}return db['Pause'][_0x64d4('0x44')]({'where':{'id':_0x55556f[_0x64d4('0x4d')]['id']}})[_0x64d4('0x22')](handleEntityNotFound(_0x55b40,null))['then'](saveUpdates(_0x55556f[_0x64d4('0x46')],null))[_0x64d4('0x22')](respondWithResult(_0x55b40,null))['catch'](handleError(_0x55b40,null));};exports[_0x64d4('0x26')]=function(_0x459b5b,_0x529376){return db[_0x64d4('0x3e')][_0x64d4('0x44')]({'where':{'id':_0x459b5b[_0x64d4('0x4d')]['id']}})[_0x64d4('0x22')](handleEntityNotFound(_0x529376,null))['then'](removeEntity(_0x529376,null))[_0x64d4('0x4c')](handleError(_0x529376,null));};
\ No newline at end of file
index 248a315..3cd6c9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0x1d154b,_0x5297fd){var _0xbe73c7=function(_0x38bc24){while(--_0x38bc24){_0x1d154b['push'](_0x1d154b['shift']());}};_0xbe73c7(++_0x5297fd);}(_0xf494,0x1c6));var _0x4f49=function(_0x34b35b,_0x4bd1f9){_0x34b35b=_0x34b35b-0x0;var _0x4929d4=_0xf494[_0x34b35b];return _0x4929d4;};'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
+var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_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':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f96621..52dba6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x564116,_0xddb5ab){var _0x244c2e=function(_0x362b9f){while(--_0x362b9f){_0x564116['push'](_0x564116['shift']());}};_0x244c2e(++_0xddb5ab);}(_0xb10b,0x12a));var _0xbb10=function(_0x292102,_0x427efa){_0x292102=_0x292102-0x0;var _0x54c775=_0xb10b[_0x292102];return _0x54c775;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x6cfc91,_0x18693d){var _0x5420c9=function(_0x5c6622){while(--_0x5c6622){_0x6cfc91['push'](_0x6cfc91['shift']());}};_0x5420c9(++_0x18693d);}(_0x7a54,0x106));var _0x47a5=function(_0x213f73,_0x563122){_0x213f73=_0x213f73-0x0;var _0x230f59=_0x7a54[_0x213f73];return _0x230f59;};'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 b75f972..2cba90d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222f=['index','webhookGet','isAuthenticated','show','/:id/download','download','join','server/files/plugins','originalname','replace','format','extname','now','post','single','file','upload','/webhook','webhookPost','put','/:id','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x393d69,_0x3a8c83){var _0x3cee37=function(_0x462682){while(--_0x462682){_0x393d69['push'](_0x393d69['shift']());}};_0x3cee37(++_0x3a8c83);}(_0x222f,0x1a4));var _0xf222=function(_0x3b4455,_0x3e4395){_0x3b4455=_0x3b4455-0x0;var _0x34dd09=_0x222f[_0x3b4455];return _0x34dd09;};'use strict';var multer=require(_0xf222('0x0'));var util=require(_0xf222('0x1'));var path=require(_0xf222('0x2'));var timeout=require(_0xf222('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf222('0x4'));var auth=require(_0xf222('0x5'));var interaction=require(_0xf222('0x6'));var config=require(_0xf222('0x7'));var controller=require('./plugin.controller');router[_0xf222('0x8')]('/',auth['isAuthenticated'](),controller[_0xf222('0x9')]);router[_0xf222('0x8')]('/webhook',controller[_0xf222('0xa')]);router[_0xf222('0x8')]('/:id',auth[_0xf222('0xb')](),controller[_0xf222('0xc')]);router[_0xf222('0x8')](_0xf222('0xd'),auth[_0xf222('0xb')](),controller[_0xf222('0xe')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2e29ad,_0x405080,_0x226dbd){_0x226dbd(null,path[_0xf222('0xf')](config['root'],_0xf222('0x10')));},'filename':function(_0x2850c7,_0x2a6965,_0x3d3d29){_0x2a6965[_0xf222('0x11')]=_0x2a6965[_0xf222('0x11')][_0xf222('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3d3d29(null,util[_0xf222('0x13')]('%s-%s%s',path['basename'](_0x2a6965[_0xf222('0x11')],path[_0xf222('0x14')](_0x2a6965['originalname'])),Date[_0xf222('0x15')](),path[_0xf222('0x14')](_0x2a6965[_0xf222('0x11')])));}})});router[_0xf222('0x16')]('/',upload[_0xf222('0x17')](_0xf222('0x18')),controller[_0xf222('0x19')]);router['post'](_0xf222('0x1a'),controller[_0xf222('0x1b')]);router[_0xf222('0x1c')](_0xf222('0x1d'),auth[_0xf222('0xb')](),controller[_0xf222('0x1e')]);router[_0xf222('0x1f')]('/:id',auth[_0xf222('0xb')](),controller[_0xf222('0x1f')]);module[_0xf222('0x20')]=router;
\ No newline at end of file
+var _0xaba6=['get','webhookGet','isAuthenticated','show','/:id/download','download','diskStorage','root','server/files/plugins','originalname','format','%s-%s%s','basename','extname','now','post','single','file','upload','/webhook','put','/:id','delete','multer','util','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller'];(function(_0x4d20c3,_0x1b4eaf){var _0xf0e05b=function(_0x34da67){while(--_0x34da67){_0x4d20c3['push'](_0x4d20c3['shift']());}};_0xf0e05b(++_0x1b4eaf);}(_0xaba6,0xe2));var _0x6aba=function(_0x3ea7f7,_0x58d463){_0x3ea7f7=_0x3ea7f7-0x0;var _0x36831a=_0xaba6[_0x3ea7f7];return _0x36831a;};'use strict';var multer=require(_0x6aba('0x0'));var util=require(_0x6aba('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6aba('0x2'));var auth=require(_0x6aba('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x6aba('0x4'));var controller=require(_0x6aba('0x5'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6aba('0x6')]('/webhook',controller[_0x6aba('0x7')]);router[_0x6aba('0x6')]('/:id',auth[_0x6aba('0x8')](),controller[_0x6aba('0x9')]);router['get'](_0x6aba('0xa'),auth[_0x6aba('0x8')](),controller[_0x6aba('0xb')]);var upload=multer({'storage':multer[_0x6aba('0xc')]({'destination':function(_0xdbc119,_0x4089c6,_0x181426){_0x181426(null,path['join'](config[_0x6aba('0xd')],_0x6aba('0xe')));},'filename':function(_0x43867b,_0x254007,_0x53e604){_0x254007[_0x6aba('0xf')]=_0x254007[_0x6aba('0xf')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x53e604(null,util[_0x6aba('0x10')](_0x6aba('0x11'),path[_0x6aba('0x12')](_0x254007['originalname'],path[_0x6aba('0x13')](_0x254007[_0x6aba('0xf')])),Date[_0x6aba('0x14')](),path['extname'](_0x254007[_0x6aba('0xf')])));}})});router[_0x6aba('0x15')]('/',upload[_0x6aba('0x16')](_0x6aba('0x17')),controller[_0x6aba('0x18')]);router[_0x6aba('0x15')](_0x6aba('0x19'),controller['webhookPost']);router[_0x6aba('0x1a')](_0x6aba('0x1b'),auth[_0x6aba('0x8')](),controller['update']);router[_0x6aba('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x6aba('0x1c')]);module['exports']=router;
\ No newline at end of file
index 237dc7b..e7d3bfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5159=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x37170e,_0x28c7ae){var _0x4820dd=function(_0x146ba1){while(--_0x146ba1){_0x37170e['push'](_0x37170e['shift']());}};_0x4820dd(++_0x28c7ae);}(_0x5159,0xfd));var _0x9515=function(_0x211402,_0xc34f8e){_0x211402=_0x211402-0x0;var _0xacd9d2=_0x5159[_0x211402];return _0xacd9d2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9515('0x0')]},'type':{'type':Sequelize[_0x9515('0x1')](_0x9515('0x2'),_0x9515('0x3'))},'description':{'type':Sequelize[_0x9515('0x4')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x9515('0x0')],'comment':_0x9515('0x5')},'active':{'type':Sequelize[_0x9515('0x6')],'defaultValue':0x0,'comment':_0x9515('0x7')},'sidebar':{'type':Sequelize[_0x9515('0x1')](_0x9515('0x8'),_0x9515('0x9'),_0x9515('0xa'),_0x9515('0xb')),'defaultValue':'always','comment':_0x9515('0xc')},'icon':{'type':Sequelize[_0x9515('0x0')]},'adminUrl':{'type':Sequelize[_0x9515('0x0')]},'agentUrl':{'type':Sequelize[_0x9515('0x0')]},'scriptName':{'type':Sequelize[_0x9515('0x0')]},'scriptPath':{'type':Sequelize[_0x9515('0x0')]}};
\ No newline at end of file
+var _0xdf13=['TEXT','STRING','BOOLEAN','adminOnly','agentOnly','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','ENUM','html','script'];(function(_0x545262,_0x37382a){var _0x368866=function(_0xbfc841){while(--_0xbfc841){_0x545262['push'](_0x545262['shift']());}};_0x368866(++_0x37382a);}(_0xdf13,0x11b));var _0x3df1=function(_0x29fba8,_0x2b16f2){_0x29fba8=_0x29fba8-0x0;var _0x42f260=_0xdf13[_0x29fba8];return _0x42f260;};'use strict';var Sequelize=require(_0x3df1('0x0'));module[_0x3df1('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x3df1('0x2')](_0x3df1('0x3'),_0x3df1('0x4'))},'description':{'type':Sequelize[_0x3df1('0x5')]},'version':{'type':Sequelize[_0x3df1('0x5')]},'path':{'type':Sequelize[_0x3df1('0x6')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x3df1('0x7')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM'](_0x3df1('0x8'),_0x3df1('0x9'),_0x3df1('0xa'),'never'),'defaultValue':_0x3df1('0xa'),'comment':_0x3df1('0xb')},'icon':{'type':Sequelize[_0x3df1('0x6')]},'adminUrl':{'type':Sequelize[_0x3df1('0x6')]},'agentUrl':{'type':Sequelize[_0x3df1('0x6')]},'scriptName':{'type':Sequelize[_0x3df1('0x6')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 11efec1..235e6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3226=['filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','params','include','find','download','join','format','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','dirname','attachments/**/*','finalize','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','filename','extname','file','server/files/plugins','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','Invalid\x20manifest:\x20views\x20missing','views','admin','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','Warning:\x20admin\x20view\x20not\x20specified','agent','Warning:\x20agent\x20view\x20not\x20specified','create','role','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','root','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','port','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','zip-dir','request-promise','mustache','util','path','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','extract-zip','rimraf','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Plugins','UserProfileResource','end','error','stack','name','send','index','map','Plugin','rawAttributes','type','model','query','keys'];(function(_0x95632e,_0x4c8bc0){var _0x2635dd=function(_0x3f2d39){while(--_0x3f2d39){_0x95632e['push'](_0x95632e['shift']());}};_0x2635dd(++_0x4c8bc0);}(_0x3226,0x1cc));var _0x6322=function(_0x30370a,_0x1eca24){_0x30370a=_0x30370a-0x0;var _0x3638d7=_0x3226[_0x30370a];return _0x3638d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6322('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6322('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6322('0x2'));var util=require(_0x6322('0x3'));var path=require(_0x6322('0x4'));var sox=require('sox');var csv=require(_0x6322('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6322('0x6'));var _=require('lodash');var squel=require(_0x6322('0x7'));var crypto=require('crypto');var jsforce=require(_0x6322('0x8'));var deskjs=require(_0x6322('0x9'));var toCsv=require('to-csv');var querystring=require(_0x6322('0xa'));var Papa=require(_0x6322('0xb'));var extract=require(_0x6322('0xc'));var rimraf=require(_0x6322('0xd'));var archiver=require('archiver');var Redis=require('ioredis');var authService=require(_0x6322('0xe'));var qs=require(_0x6322('0xf'));var as=require(_0x6322('0x10'));var hardwareService=require(_0x6322('0x11'));var logger=require(_0x6322('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x6322('0x13'));var licenseUtil=require(_0x6322('0x14'));var db=require(_0x6322('0x15'))['db'];config[_0x6322('0x16')]=_[_0x6322('0x17')](config[_0x6322('0x16')],{'host':_0x6322('0x18'),'port':0x18eb});var socket=require(_0x6322('0x19'))(new Redis(config[_0x6322('0x16')]));require(_0x6322('0x1a'))[_0x6322('0x1b')](socket);function respondWithStatusCode(_0xdd8236,_0x1075b3){_0x1075b3=_0x1075b3||0xcc;return function(_0x571b46){if(_0x571b46){return _0xdd8236[_0x6322('0x1c')](_0x1075b3);}return _0xdd8236[_0x6322('0x1d')](_0x1075b3)['end']();};}function respondWithResult(_0x36ced7,_0x3c70cc){_0x3c70cc=_0x3c70cc||0xc8;return function(_0x66dd13){if(_0x66dd13){return _0x36ced7[_0x6322('0x1d')](_0x3c70cc)[_0x6322('0x1e')](_0x66dd13);}};}function respondWithFilteredResult(_0x10e638,_0x1116ef){return function(_0x1df451){if(_0x1df451){var _0x15ca6a=typeof _0x1116ef[_0x6322('0x1f')]===_0x6322('0x20')&&typeof _0x1116ef[_0x6322('0x21')]==='undefined';var _0x59f9d0=_0x1df451[_0x6322('0x22')];var _0x25c1b8=_0x15ca6a?0x0:_0x1116ef[_0x6322('0x1f')];var _0x24495d=_0x15ca6a?_0x1df451[_0x6322('0x22')]:_0x1116ef['offset']+_0x1116ef[_0x6322('0x21')];var _0x2b508e;if(_0x24495d>=_0x59f9d0){_0x24495d=_0x59f9d0;_0x2b508e=0xc8;}else{_0x2b508e=0xce;}_0x10e638['status'](_0x2b508e);return _0x10e638[_0x6322('0x23')](_0x6322('0x24'),_0x25c1b8+'-'+_0x24495d+'/'+_0x59f9d0)[_0x6322('0x1e')](_0x1df451);}return null;};}function patchUpdates(_0x439f30){return function(_0x323d8b){try{jsonpatch[_0x6322('0x25')](_0x323d8b,_0x439f30,!![]);}catch(_0x17209a){return BPromise[_0x6322('0x26')](_0x17209a);}return _0x323d8b[_0x6322('0x27')]();};}function saveUpdates(_0x5241fe,_0x187ecb){return function(_0x542d05){if(_0x542d05){return _0x542d05[_0x6322('0x28')](_0x5241fe)[_0x6322('0x29')](function(_0x2a18b7){return _0x2a18b7;});}return null;};}function removeEntity(_0x5a919c,_0xe648e4){return function(_0x14ebc5){if(_0x14ebc5){return _0x14ebc5[_0x6322('0x2a')]()['then'](function(){var _0x33dee6=_0x14ebc5[_0x6322('0x2b')]({'plain':!![]});var _0x3892d4=_0x6322('0x2c');return db[_0x6322('0x2d')][_0x6322('0x2a')]({'where':{'type':_0x3892d4,'resourceId':_0x33dee6['id']}})[_0x6322('0x29')](function(){return _0x14ebc5;});})[_0x6322('0x29')](function(){_0x5a919c['status'](0xcc)[_0x6322('0x2e')]();});}};}function handleEntityNotFound(_0x542e76,_0x19c485){return function(_0x16f3ba){if(!_0x16f3ba){_0x542e76[_0x6322('0x1c')](0x194);}return _0x16f3ba;};}function handleError(_0x29006c,_0x4fce65){_0x4fce65=_0x4fce65||0x1f4;return function(_0x48aa60){logger[_0x6322('0x2f')](_0x48aa60[_0x6322('0x30')]);if(_0x48aa60[_0x6322('0x31')]){delete _0x48aa60[_0x6322('0x31')];}_0x29006c[_0x6322('0x1d')](_0x4fce65)[_0x6322('0x32')](_0x48aa60);};}exports[_0x6322('0x33')]=function(_0x3673b4,_0x598742){var _0x3c6352={},_0x551a0c={},_0x275592={'count':0x0,'rows':[]};var _0x1803bb=_[_0x6322('0x34')](db[_0x6322('0x35')][_0x6322('0x36')],function(_0x4404a3){return{'name':_0x4404a3['fieldName'],'type':_0x4404a3[_0x6322('0x37')]['key']};});_0x551a0c[_0x6322('0x38')]=_[_0x6322('0x34')](_0x1803bb,_0x6322('0x31'));_0x551a0c[_0x6322('0x39')]=_[_0x6322('0x3a')](_0x3673b4[_0x6322('0x39')]);_0x551a0c[_0x6322('0x3b')]=_['intersection'](_0x551a0c['model'],_0x551a0c[_0x6322('0x39')]);_0x3c6352[_0x6322('0x3c')]=_[_0x6322('0x3d')](_0x551a0c[_0x6322('0x38')],qs[_0x6322('0x3e')](_0x3673b4['query'][_0x6322('0x3e')]));_0x3c6352[_0x6322('0x3c')]=_0x3c6352['attributes'][_0x6322('0x3f')]?_0x3c6352['attributes']:_0x551a0c[_0x6322('0x38')];if(!_0x3673b4['query'][_0x6322('0x40')](_0x6322('0x41'))){_0x3c6352[_0x6322('0x21')]=qs[_0x6322('0x21')](_0x3673b4['query'][_0x6322('0x21')]);_0x3c6352[_0x6322('0x1f')]=qs['offset'](_0x3673b4[_0x6322('0x39')][_0x6322('0x1f')]);}_0x3c6352['order']=qs[_0x6322('0x42')](_0x3673b4[_0x6322('0x39')][_0x6322('0x42')]);_0x3c6352['where']=qs['filters'](_[_0x6322('0x43')](_0x3673b4[_0x6322('0x39')],_0x551a0c['filters']),_0x1803bb);if(_0x3673b4[_0x6322('0x39')][_0x6322('0x44')]){_0x3c6352[_0x6322('0x45')]=_[_0x6322('0x46')](_0x3c6352[_0x6322('0x45')],{'$or':_[_0x6322('0x34')](_0x1803bb,function(_0x184b74){if(_0x184b74['type']!=='VIRTUAL'){var _0x432ea8={};_0x432ea8[_0x184b74[_0x6322('0x31')]]={'$like':'%'+_0x3673b4['query'][_0x6322('0x44')]+'%'};return _0x432ea8;}})});}_0x3c6352=_['merge']({},_0x3c6352,_0x3673b4[_0x6322('0x47')]);var _0x53202c={'where':_0x3c6352[_0x6322('0x45')]};return db[_0x6322('0x35')]['count'](_0x53202c)[_0x6322('0x29')](function(_0xc7f6a1){_0x275592[_0x6322('0x22')]=_0xc7f6a1;if(_0x3673b4['query'][_0x6322('0x48')]){_0x3c6352['include']=[{'all':!![]}];}return db[_0x6322('0x35')][_0x6322('0x49')](_0x3c6352);})[_0x6322('0x29')](function(_0x46a560){_0x275592[_0x6322('0x4a')]=_0x46a560;return _0x275592;})[_0x6322('0x29')](respondWithFilteredResult(_0x598742,_0x3c6352))[_0x6322('0x4b')](handleError(_0x598742,null));};exports['show']=function(_0x15ecea,_0x3c7106){var _0x112140={'raw':!![],'where':{'id':_0x15ecea[_0x6322('0x4c')]['id']}},_0x443c46={};_0x443c46['model']=_[_0x6322('0x3a')](db[_0x6322('0x35')][_0x6322('0x36')]);_0x443c46[_0x6322('0x39')]=_[_0x6322('0x3a')](_0x15ecea[_0x6322('0x39')]);_0x443c46[_0x6322('0x3b')]=_[_0x6322('0x3d')](_0x443c46[_0x6322('0x38')],_0x443c46[_0x6322('0x39')]);_0x112140[_0x6322('0x3c')]=_[_0x6322('0x3d')](_0x443c46[_0x6322('0x38')],qs[_0x6322('0x3e')](_0x15ecea[_0x6322('0x39')][_0x6322('0x3e')]));_0x112140[_0x6322('0x3c')]=_0x112140['attributes'][_0x6322('0x3f')]?_0x112140[_0x6322('0x3c')]:_0x443c46[_0x6322('0x38')];if(_0x15ecea[_0x6322('0x39')][_0x6322('0x48')]){_0x112140[_0x6322('0x4d')]=[{'all':!![]}];}_0x112140=_['merge']({},_0x112140,_0x15ecea['options']);return db[_0x6322('0x35')][_0x6322('0x4e')](_0x112140)[_0x6322('0x29')](handleEntityNotFound(_0x3c7106,null))['then'](respondWithResult(_0x3c7106,null))['catch'](handleError(_0x3c7106,null));};exports[_0x6322('0x4f')]=function(_0x369863,_0x3bcaa9,_0x286d31){return db['Plugin'][_0x6322('0x4e')]({'where':{'id':_0x369863[_0x6322('0x4c')]['id']},'attributes':[_0x6322('0x31'),_0x6322('0x4')],'raw':!![]})[_0x6322('0x29')](handleEntityNotFound(_0x3bcaa9,null))['then'](function(_0xf3d256){if(_0xf3d256){var _0xddd377=path[_0x6322('0x50')](config['root'],'server/files/plugins',util[_0x6322('0x51')]('%s.zip',path[_0x6322('0x52')](_0xf3d256[_0x6322('0x4')])));var _0x33fa17=fs[_0x6322('0x53')](_0xddd377);var _0x1b4b5a=archiver(_0x6322('0x54'),{'zlib':{'level':0x9}});_0x1b4b5a['on'](_0x6322('0x55'),function(_0x209cf0){if(_0x209cf0[_0x6322('0x56')]===_0x6322('0x57')){logger['error'](_0x209cf0);}else{throw new db[(_0x6322('0x58'))]['Error'](_0x6322('0x59'));}});_0x1b4b5a['on']('error',function(_0x20c0b0){throw new db[(_0x6322('0x58'))][(_0x6322('0x5a'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x1b4b5a[_0x6322('0x5b')](_0x33fa17);_0x1b4b5a[_0x6322('0x5c')](_0x6322('0x5d'),{'cwd':path[_0x6322('0x50')](config['root'],'server/files/plugins',path[_0x6322('0x5e')](_0xf3d256['path'])),'ignore':[path['join'](path[_0x6322('0x52')](_0xf3d256[_0x6322('0x4')]),'node_modules/**/*'),path[_0x6322('0x50')](path[_0x6322('0x52')](_0xf3d256[_0x6322('0x4')]),_0x6322('0x5f'))],'nodir':!![]})[_0x6322('0x60')]();_0x33fa17['on']('close',function(){if(!fs['existsSync'](_0xddd377)){throw new db['Sequelize'][(_0x6322('0x5a'))](_0x6322('0x61'));}return _0x3bcaa9[_0x6322('0x4f')](_0xddd377,util[_0x6322('0x51')](_0x6322('0x62'),path[_0x6322('0x52')](_0xf3d256['path'])),function(_0x2684f9){if(_0x2684f9){throw new db[(_0x6322('0x58'))][(_0x6322('0x5a'))](_0x6322('0x63'));}fs[_0x6322('0x64')](_0xddd377);logger[_0x6322('0x65')](_0x6322('0x66'));logger['info']('Temporary\x20file\x20removed');});});}return null;})[_0x6322('0x4b')](handleError(_0x3bcaa9,null));};exports['upload']=function(_0x190bec,_0x28f246,_0x3511b5){var _0x2275e7=path[_0x6322('0x52')](_0x190bec['file'][_0x6322('0x67')],path[_0x6322('0x68')](_0x190bec[_0x6322('0x69')][_0x6322('0x67')]));var _0x3707dd=path[_0x6322('0x50')](config['root'],'server/files/plugins',_0x190bec[_0x6322('0x69')]['filename']);var _0x1a03e6=path[_0x6322('0x50')](config['root'],_0x6322('0x6a'),_0x2275e7);logger[_0x6322('0x65')]('Plugin\x20upload\x20filepath:\x20%s',_0x3707dd);logger['info'](_0x6322('0x6b'),_0x1a03e6);try{fs[_0x6322('0x6c')](_0x3707dd,parseInt(_0x6322('0x6d'),0x8));extract(_0x3707dd,{'dir':_0x1a03e6},function(_0x58ecb7){if(_0x58ecb7){logger['error'](_0x58ecb7);handleError(_0x58ecb7,!![]);};var _0x5eca0b=fs[_0x6322('0x6e')](_0x1a03e6);if(_0x5eca0b[_0x6322('0x3f')]>0x1){removeReferences(_0x3707dd,_0x1a03e6);logger[_0x6322('0x2f')](_0x6322('0x6f'));return _0x3511b5(new Error(_0x6322('0x6f')));}var _0x40f094=fs[_0x6322('0x70')](path[_0x6322('0x50')](_0x1a03e6,_0x5eca0b[0x0]));if(_0x40f094[_0x6322('0x71')]()){removeReferences(_0x3707dd,_0x1a03e6);logger['error'](_0x6322('0x6f'));return _0x3511b5(new Error(_0x6322('0x6f')));}if(_0x40f094[_0x6322('0x72')]()){var _0x1936fc=fs[_0x6322('0x6e')](path[_0x6322('0x50')](_0x1a03e6,_0x5eca0b[0x0]));if(_0x1936fc[_0x6322('0x3f')]===0x0){removeReferences(_0x3707dd,_0x1a03e6);logger[_0x6322('0x2f')](_0x6322('0x6f'));return _0x3511b5(new Error(_0x6322('0x6f')));}var _0x32e4d3=_0x1936fc[_0x6322('0x73')](function(_0x4ea227){return _0x4ea227===_0x6322('0x74');});if(!_0x32e4d3){return _0x3511b5(new Error(_0x6322('0x75')));}var _0x117a9e=fs[_0x6322('0x76')](path[_0x6322('0x50')](_0x1a03e6,_0x5eca0b[0x0],_0x6322('0x74')));var _0x1bb3e8=JSON[_0x6322('0x77')](_0x117a9e);if(_0x6322('0x20')==typeof _0x1bb3e8['name']){return _0x3511b5(new Error(_0x6322('0x78')));}if(_0x6322('0x20')==typeof _0x1bb3e8['type']){return _0x3511b5(new Error(_0x6322('0x79')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7a')]){return _0x3511b5(new Error(_0x6322('0x7b')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')]){return _0x3511b5(new Error(_0x6322('0x7d')));}if(_0x1bb3e8[_0x6322('0x37')]===_0x6322('0x7e')){if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')]['views']){return _0x3511b5(new Error(_0x6322('0x7f')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x81')]&&_0x6322('0x20')==typeof _0x1bb3e8['parameters'][_0x6322('0x80')]['agent']){return _0x3511b5(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x1bb3e8[_0x6322('0x37')]===_0x6322('0x82')){if('undefined'==typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x83')]){return _0x3511b5(new Error(_0x6322('0x84')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x85')]){return _0x3511b5(new Error(_0x6322('0x86')));}}else{return _0x3511b5(new Error(_0x6322('0x87')));}var _0x605650=_0x1bb3e8['name'];var _0x5a6044=_0x1bb3e8[_0x6322('0x88')];var _0x4a558b=_0x1bb3e8[_0x6322('0x37')];var _0x5ce7db=_0x1bb3e8[_0x6322('0x89')]?_0x1bb3e8[_0x6322('0x89')]:_0x6322('0x8a');var _0x2aedcb=_0x1bb3e8['icon']?_0x1bb3e8[_0x6322('0x8b')]:_0x6322('0x8c');var _0x10855c='';var _0x364411='';var _0x4d1c9c='';var _0x5a4fc5='';var _0x2beb94=_0x1bb3e8['version'];if(_0x4a558b==='html'){if('undefined'!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x81')]){var _0x2f8073=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x2f8073)){_0x10855c=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x2f8073);}else{_0x10855c=_0x2f8073;}}else{logger[_0x6322('0x65')](_0x6322('0x8e'));}if(_0x6322('0x20')!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x8f')]){var _0x241d0b=_0x1bb3e8['parameters'][_0x6322('0x80')][_0x6322('0x8f')];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x241d0b)){_0x364411=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x241d0b);}else{_0x364411=_0x241d0b;}}else{logger['info'](_0x6322('0x90'));}}else if(_0x4a558b===_0x6322('0x82')){_0x4d1c9c=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x83')];_0x5a4fc5=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x85')];if(_0x6322('0x20')!=typeof _0x1bb3e8['parameters']['views']){if('undefined'!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')]['admin']){var _0x2f8073=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x2f8073)){_0x10855c=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x2f8073);}else{_0x10855c=_0x2f8073;}}if(_0x6322('0x20')!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')]['agent']){var _0x241d0b=_0x1bb3e8['parameters'][_0x6322('0x80')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x241d0b)){_0x364411=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x241d0b);}else{_0x364411=_0x241d0b;}}}}var _0x1a9df7={'name':_0x605650,'description':_0x5a6044,'path':path[_0x6322('0x50')](_0x2275e7,_0x5eca0b[0x0]),'type':_0x4a558b,'sidebar':_0x5ce7db,'icon':_0x2aedcb,'adminUrl':_0x10855c,'agentUrl':_0x364411,'scriptName':_0x4d1c9c,'scriptPath':_0x5a4fc5,'version':_0x2beb94};removeReferences(_0x3707dd,null);return db[_0x6322('0x35')][_0x6322('0x91')](_0x1a9df7)[_0x6322('0x29')](function(_0x12ee83){var _0x50f1a4={'role':_0x190bec['body'][_0x6322('0x92')],'userProfileId':_0x190bec[_0x6322('0x93')]['userProfileId']};if(!_0x50f1a4)throw new Error(_0x6322('0x94'));if(_0x50f1a4[_0x6322('0x92')]===_0x6322('0x95')){var _0x35d9e4=_0x12ee83[_0x6322('0x2b')]({'plain':!![]});return db[_0x6322('0x96')][_0x6322('0x4e')]({'where':{'name':_0x6322('0x2c'),'userProfileId':_0x50f1a4[_0x6322('0x97')]},'raw':!![]})[_0x6322('0x29')](function(_0x333303){if(_0x333303&&_0x333303[_0x6322('0x98')]===0x0){return db[_0x6322('0x2d')][_0x6322('0x91')]({'name':_0x35d9e4[_0x6322('0x31')],'resourceId':_0x35d9e4['id'],'type':_0x333303[_0x6322('0x31')],'sectionId':_0x333303['id']},{})['then'](function(){return _0x12ee83;});}else{return _0x12ee83;}})[_0x6322('0x4b')](function(_0x4673e5){logger[_0x6322('0x2f')](_0x6322('0x99'),_0x4673e5);throw _0x4673e5;});}return _0x12ee83;})[_0x6322('0x29')](respondWithResult(_0x28f246,null))[_0x6322('0x4b')](handleError(_0x28f246,null));}});}catch(_0x15c294){_0x28f246[_0x6322('0x1d')](0x1f4)[_0x6322('0x32')](_0x15c294);}};function removeReferences(_0x1e0211,_0x34d550){try{if(_0x1e0211){fs['unlinkSync'](_0x1e0211);logger['info'](_0x6322('0x9a'));}if(_0x34d550){rimraf(_0x34d550,function(){});logger['info'](_0x6322('0x9b'));}}catch(_0x478dd2){logger[_0x6322('0x2f')](_0x478dd2);}}exports[_0x6322('0x28')]=function(_0xf4df77,_0x5dfc68,_0x4ea247){return db['Plugin'][_0x6322('0x4e')]({'where':{'id':_0xf4df77[_0x6322('0x4c')]['id']}})[_0x6322('0x29')](handleEntityNotFound(_0x5dfc68,null))[_0x6322('0x29')](saveUpdates(_0xf4df77['body'],null))['then'](respondWithResult(_0x5dfc68,null))[_0x6322('0x4b')](handleError(_0x5dfc68,null));};exports[_0x6322('0x9c')]=function(_0xb1593f,_0x205daa,_0x4e5ac7){return db[_0x6322('0x35')][_0x6322('0x4e')]({'where':{'id':_0xb1593f[_0x6322('0x4c')]['id']}})[_0x6322('0x29')](function(_0x804b3d){if(_0x804b3d){return _0x804b3d[_0x6322('0x2a')]();}})[_0x6322('0x29')](function(_0x484bc8){rimraf(path[_0x6322('0x50')](config[_0x6322('0x9d')],'server/files/plugins',path['dirname'](_0x484bc8[_0x6322('0x4')])),function(){});return _0x484bc8;})[_0x6322('0x29')](handleEntityNotFound(_0x205daa,null))[_0x6322('0x29')](respondWithStatusCode(_0x205daa,null))[_0x6322('0x4b')](handleError(_0x205daa,null));};exports['webhookGet']=function(_0x4d0f1f,_0x4eef2b,_0x43ca46){return BPromise[_0x6322('0x9e')]()['then'](function(){if(!_0x4d0f1f[_0x6322('0x39')]['path']){throw new Error(_0x6322('0x9f'));}if(!_0x4d0f1f['query']['port']){throw new Error(_0x6322('0xa0'));}var _0x3cbf34=_0x4d0f1f['query'][_0x6322('0xa1')]?_0x4d0f1f[_0x6322('0x39')][_0x6322('0xa1')]+':'+_0x4d0f1f[_0x6322('0x39')]['port']:_0x6322('0xa2')+_0x4d0f1f[_0x6322('0x39')][_0x6322('0xa3')];var _0x49fd9e=_0x4d0f1f[_0x6322('0x39')]['json']?_0x4d0f1f[_0x6322('0x39')]['json']:!![];var _0x343a75=_0x4d0f1f[_0x6322('0x39')]['encoding']?_0x4d0f1f[_0x6322('0x39')][_0x6322('0xa4')]:null;var _0x373069={'method':_0x4d0f1f[_0x6322('0xa5')],'uri':util[_0x6322('0x51')](_0x6322('0xa6'),_0x3cbf34,_0x4d0f1f[_0x6322('0x39')][_0x6322('0x4')]),'json':_0x49fd9e,'resolveWithFullResponse':!![],'encoding':_0x343a75,'qs':_0x4d0f1f[_0x6322('0x39')]};if(_0x4d0f1f[_0x6322('0xa7')]){_0x373069['headers']=_0x4d0f1f[_0x6322('0xa7')];if(_0x373069[_0x6322('0xa7')]['content-length']){delete _0x373069[_0x6322('0xa7')][_0x6322('0xa8')];}}if(_0x373069[_0x6322('0xa7')][_0x6322('0xa9')]){delete _0x373069['headers'][_0x6322('0xa9')];}return rp(_0x373069);})[_0x6322('0x29')](function(_0x62647f){if(_0x62647f){_0x4eef2b['set'](_0x62647f[_0x6322('0xa7')]);logger[_0x6322('0x65')](_0x62647f['body']);if(_[_0x6322('0xaa')](_0x4d0f1f['query'][_0x6322('0x4')],_0x6322('0x4f'))&&_0x62647f['statusCode']==0x1f4){return _0x4eef2b['sendStatus'](_0x62647f['statusCode']);}else{return _0x4eef2b[_0x6322('0x1d')](_0x62647f[_0x6322('0xab')])['send'](_0x62647f[_0x6322('0x93')]);}}else{return _0x4eef2b['sendStatus'](0xc8);}})[_0x6322('0x4b')](handleError(_0x4eef2b,null));};exports[_0x6322('0xac')]=function(_0x1f8239,_0x36d048,_0x584bab){return BPromise['resolve']()[_0x6322('0x29')](function(){if(!_0x1f8239[_0x6322('0x39')][_0x6322('0x4')]){throw new Error(_0x6322('0x9f'));}if(!_0x1f8239[_0x6322('0x39')][_0x6322('0xa3')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x49a3e7=_0x1f8239['query'][_0x6322('0xa1')]?_0x1f8239[_0x6322('0x39')]['hostname']+':'+_0x1f8239[_0x6322('0x39')]['port']:'http://localhost:'+_0x1f8239[_0x6322('0x39')]['port'];var _0x3b4981=_0x1f8239['query']['json']?_0x1f8239[_0x6322('0x39')][_0x6322('0x1e')]:!![];var _0x34e5d6=_0x1f8239[_0x6322('0x39')]['encoding']?_0x1f8239[_0x6322('0x39')][_0x6322('0xa4')]:null;var _0x37e51f={'method':_0x1f8239[_0x6322('0xa5')],'uri':util[_0x6322('0x51')](_0x6322('0xa6'),_0x49a3e7,_0x1f8239['query'][_0x6322('0x4')]),'json':_0x3b4981,'resolveWithFullResponse':!![],'encoding':_0x34e5d6,'body':_0x1f8239[_0x6322('0x93')]};if(_0x1f8239['headers']){_0x37e51f[_0x6322('0xa7')]=_0x1f8239['headers'];if(_0x37e51f[_0x6322('0xa7')][_0x6322('0xa8')]){delete _0x37e51f[_0x6322('0xa7')][_0x6322('0xa8')];}}if(_0x37e51f[_0x6322('0xa7')][_0x6322('0xa9')]){delete _0x37e51f[_0x6322('0xa7')][_0x6322('0xa9')];}return rp(_0x37e51f);})[_0x6322('0x29')](function(_0x20b83d){if(_0x20b83d){_0x36d048[_0x6322('0x23')](_0x20b83d['headers']);logger[_0x6322('0x65')](_0x20b83d[_0x6322('0x93')]);return _0x36d048[_0x6322('0x1d')](_0x20b83d[_0x6322('0xab')])['send'](_0x20b83d[_0x6322('0x93')]);}else{return _0x36d048[_0x6322('0x1c')](0xc8);}})[_0x6322('0x4b')](handleError(_0x36d048,null));};
\ No newline at end of file
+var _0x9717=['name','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','includeAll','rows','show','params','find','catch','download','join','root','format','basename','createWriteStream','zip','warning','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','server/files/plugins','node_modules/**/*','attachments/**/*','close','existsSync','Error','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','readdirSync','manifest.json','Plugin\x20manifest\x20missing','parse','version','Invalid\x20manifest:\x20parameters\x20missing','parameters','views','admin','agent','scriptName','scriptPath','description','sidebar','always','icon','icon-apps','html','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','test','create','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','send','Zip\x20archive\x20removed','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','http://localhost:','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','squel','jsforce','papaparse','archiver','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','index','map','Plugin','rawAttributes','fieldName','key'];(function(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0x9717,0x69));var _0x7971=function(_0x29c41f,_0x268697){_0x29c41f=_0x29c41f-0x0;var _0x44d5f6=_0x9717[_0x29c41f];return _0x44d5f6;};'use strict';var emlformat=require(_0x7971('0x0'));var rimraf=require(_0x7971('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7971('0x2'));var rp=require(_0x7971('0x3'));var moment=require(_0x7971('0x4'));var BPromise=require(_0x7971('0x5'));var Mustache=require('mustache');var util=require(_0x7971('0x6'));var path=require(_0x7971('0x7'));var sox=require(_0x7971('0x8'));var csv=require(_0x7971('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7971('0xa'));var crypto=require('crypto');var jsforce=require(_0x7971('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x7971('0x9'));var querystring=require('querystring');var Papa=require(_0x7971('0xc'));var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0x7971('0xd'));var Redis=require(_0x7971('0xe'));var authService=require(_0x7971('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x7971('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7971('0x11'))(_0x7971('0x12'));var utils=require('../../config/utils');var config=require(_0x7971('0x13'));var licenseUtil=require(_0x7971('0x14'));var db=require(_0x7971('0x15'))['db'];config['redis']=_[_0x7971('0x16')](config[_0x7971('0x17')],{'host':_0x7971('0x18'),'port':0x18eb});var socket=require(_0x7971('0x19'))(new Redis(config['redis']));require(_0x7971('0x1a'))[_0x7971('0x1b')](socket);function respondWithStatusCode(_0x14bae0,_0x2a6ed2){_0x2a6ed2=_0x2a6ed2||0xcc;return function(_0x5e2668){if(_0x5e2668){return _0x14bae0[_0x7971('0x1c')](_0x2a6ed2);}return _0x14bae0['status'](_0x2a6ed2)[_0x7971('0x1d')]();};}function respondWithResult(_0x269066,_0x805bfa){_0x805bfa=_0x805bfa||0xc8;return function(_0x14cef9){if(_0x14cef9){return _0x269066[_0x7971('0x1e')](_0x805bfa)['json'](_0x14cef9);}};}function respondWithFilteredResult(_0x455e61,_0x4b2c77){return function(_0x140e89){if(_0x140e89){var _0x5265b4=typeof _0x4b2c77[_0x7971('0x1f')]===_0x7971('0x20')&&typeof _0x4b2c77[_0x7971('0x21')]===_0x7971('0x20');var _0x316016=_0x140e89[_0x7971('0x22')];var _0x218b28=_0x5265b4?0x0:_0x4b2c77[_0x7971('0x1f')];var _0x16f8a9=_0x5265b4?_0x140e89['count']:_0x4b2c77[_0x7971('0x1f')]+_0x4b2c77['limit'];var _0x2188e4;if(_0x16f8a9>=_0x316016){_0x16f8a9=_0x316016;_0x2188e4=0xc8;}else{_0x2188e4=0xce;}_0x455e61[_0x7971('0x1e')](_0x2188e4);return _0x455e61[_0x7971('0x23')](_0x7971('0x24'),_0x218b28+'-'+_0x16f8a9+'/'+_0x316016)[_0x7971('0x25')](_0x140e89);}return null;};}function patchUpdates(_0x32a4d7){return function(_0x1067e1){try{jsonpatch[_0x7971('0x26')](_0x1067e1,_0x32a4d7,!![]);}catch(_0x19666a){return BPromise[_0x7971('0x27')](_0x19666a);}return _0x1067e1[_0x7971('0x28')]();};}function saveUpdates(_0x6e7631,_0x34e6ef){return function(_0x409c4d){if(_0x409c4d){return _0x409c4d[_0x7971('0x29')](_0x6e7631)[_0x7971('0x2a')](function(_0x130c50){return _0x130c50;});}return null;};}function removeEntity(_0x39d3f4,_0x2515a9){return function(_0x10d635){if(_0x10d635){return _0x10d635[_0x7971('0x2b')]()[_0x7971('0x2a')](function(){var _0x2d84e7=_0x10d635[_0x7971('0x2c')]({'plain':!![]});var _0xe51663='Plugins';return db[_0x7971('0x2d')][_0x7971('0x2b')]({'where':{'type':_0xe51663,'resourceId':_0x2d84e7['id']}})[_0x7971('0x2a')](function(){return _0x10d635;});})[_0x7971('0x2a')](function(){_0x39d3f4[_0x7971('0x1e')](0xcc)[_0x7971('0x1d')]();});}};}function handleEntityNotFound(_0x95b217,_0x51f4cb){return function(_0x587d39){if(!_0x587d39){_0x95b217['sendStatus'](0x194);}return _0x587d39;};}function handleError(_0x554860,_0x1e7eb0){_0x1e7eb0=_0x1e7eb0||0x1f4;return function(_0x226caf){logger[_0x7971('0x2e')](_0x226caf[_0x7971('0x2f')]);if(_0x226caf['name']){delete _0x226caf['name'];}_0x554860[_0x7971('0x1e')](_0x1e7eb0)['send'](_0x226caf);};}exports[_0x7971('0x30')]=function(_0x5c4e04,_0x5d7411){var _0x9cd3d5={},_0xfc69f9={},_0x4c4ab0={'count':0x0,'rows':[]};var _0x3ce74d=_[_0x7971('0x31')](db[_0x7971('0x32')][_0x7971('0x33')],function(_0x1c4291){return{'name':_0x1c4291[_0x7971('0x34')],'type':_0x1c4291['type'][_0x7971('0x35')]};});_0xfc69f9['model']=_[_0x7971('0x31')](_0x3ce74d,_0x7971('0x36'));_0xfc69f9['query']=_[_0x7971('0x37')](_0x5c4e04[_0x7971('0x38')]);_0xfc69f9[_0x7971('0x39')]=_[_0x7971('0x3a')](_0xfc69f9[_0x7971('0x3b')],_0xfc69f9[_0x7971('0x38')]);_0x9cd3d5[_0x7971('0x3c')]=_['intersection'](_0xfc69f9['model'],qs[_0x7971('0x3d')](_0x5c4e04[_0x7971('0x38')]['fields']));_0x9cd3d5[_0x7971('0x3c')]=_0x9cd3d5[_0x7971('0x3c')]['length']?_0x9cd3d5[_0x7971('0x3c')]:_0xfc69f9['model'];if(!_0x5c4e04['query'][_0x7971('0x3e')](_0x7971('0x3f'))){_0x9cd3d5['limit']=qs[_0x7971('0x21')](_0x5c4e04[_0x7971('0x38')][_0x7971('0x21')]);_0x9cd3d5[_0x7971('0x1f')]=qs[_0x7971('0x1f')](_0x5c4e04[_0x7971('0x38')][_0x7971('0x1f')]);}_0x9cd3d5[_0x7971('0x40')]=qs[_0x7971('0x41')](_0x5c4e04[_0x7971('0x38')][_0x7971('0x41')]);_0x9cd3d5['where']=qs[_0x7971('0x39')](_['pick'](_0x5c4e04[_0x7971('0x38')],_0xfc69f9[_0x7971('0x39')]),_0x3ce74d);if(_0x5c4e04['query'][_0x7971('0x42')]){_0x9cd3d5[_0x7971('0x43')]=_[_0x7971('0x44')](_0x9cd3d5['where'],{'$or':_[_0x7971('0x31')](_0x3ce74d,function(_0x60b282){if(_0x60b282[_0x7971('0x45')]!==_0x7971('0x46')){var _0x572765={};_0x572765[_0x60b282[_0x7971('0x36')]]={'$like':'%'+_0x5c4e04[_0x7971('0x38')][_0x7971('0x42')]+'%'};return _0x572765;}})});}_0x9cd3d5=_['merge']({},_0x9cd3d5,_0x5c4e04[_0x7971('0x47')]);var _0x2c6eb7={'where':_0x9cd3d5[_0x7971('0x43')]};return db['Plugin'][_0x7971('0x22')](_0x2c6eb7)[_0x7971('0x2a')](function(_0x509414){_0x4c4ab0[_0x7971('0x22')]=_0x509414;if(_0x5c4e04['query'][_0x7971('0x48')]){_0x9cd3d5['include']=[{'all':!![]}];}return db[_0x7971('0x32')]['findAll'](_0x9cd3d5);})[_0x7971('0x2a')](function(_0x2e6408){_0x4c4ab0[_0x7971('0x49')]=_0x2e6408;return _0x4c4ab0;})[_0x7971('0x2a')](respondWithFilteredResult(_0x5d7411,_0x9cd3d5))['catch'](handleError(_0x5d7411,null));};exports[_0x7971('0x4a')]=function(_0x56b0b0,_0x328bc9){var _0x4fdd3a={'raw':!![],'where':{'id':_0x56b0b0[_0x7971('0x4b')]['id']}},_0x728baa={};_0x728baa[_0x7971('0x3b')]=_[_0x7971('0x37')](db[_0x7971('0x32')][_0x7971('0x33')]);_0x728baa['query']=_['keys'](_0x56b0b0[_0x7971('0x38')]);_0x728baa['filters']=_[_0x7971('0x3a')](_0x728baa[_0x7971('0x3b')],_0x728baa[_0x7971('0x38')]);_0x4fdd3a[_0x7971('0x3c')]=_['intersection'](_0x728baa[_0x7971('0x3b')],qs[_0x7971('0x3d')](_0x56b0b0[_0x7971('0x38')]['fields']));_0x4fdd3a[_0x7971('0x3c')]=_0x4fdd3a[_0x7971('0x3c')]['length']?_0x4fdd3a[_0x7971('0x3c')]:_0x728baa['model'];if(_0x56b0b0[_0x7971('0x38')]['includeAll']){_0x4fdd3a['include']=[{'all':!![]}];}_0x4fdd3a=_[_0x7971('0x44')]({},_0x4fdd3a,_0x56b0b0[_0x7971('0x47')]);return db[_0x7971('0x32')][_0x7971('0x4c')](_0x4fdd3a)['then'](handleEntityNotFound(_0x328bc9,null))['then'](respondWithResult(_0x328bc9,null))[_0x7971('0x4d')](handleError(_0x328bc9,null));};exports[_0x7971('0x4e')]=function(_0x8b5b46,_0x507617,_0xa8c9f7){return db[_0x7971('0x32')][_0x7971('0x4c')]({'where':{'id':_0x8b5b46[_0x7971('0x4b')]['id']},'attributes':[_0x7971('0x36'),_0x7971('0x7')],'raw':!![]})[_0x7971('0x2a')](handleEntityNotFound(_0x507617,null))[_0x7971('0x2a')](function(_0x18a698){if(_0x18a698){var _0x380aaf=path[_0x7971('0x4f')](config[_0x7971('0x50')],'server/files/plugins',util[_0x7971('0x51')]('%s.zip',path[_0x7971('0x52')](_0x18a698[_0x7971('0x7')])));var _0x25812b=fs[_0x7971('0x53')](_0x380aaf);var _0x660fd4=archiver(_0x7971('0x54'),{'zlib':{'level':0x9}});_0x660fd4['on'](_0x7971('0x55'),function(_0x483b22){if(_0x483b22['code']===_0x7971('0x56')){logger['error'](_0x483b22);}else{throw new db[(_0x7971('0x57'))]['Error'](_0x7971('0x58'));}});_0x660fd4['on']('error',function(_0x26a760){throw new db[(_0x7971('0x57'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x660fd4[_0x7971('0x59')](_0x25812b);_0x660fd4[_0x7971('0x5a')](_0x7971('0x5b'),{'cwd':path[_0x7971('0x4f')](config[_0x7971('0x50')],_0x7971('0x5c'),path['dirname'](_0x18a698[_0x7971('0x7')])),'ignore':[path[_0x7971('0x4f')](path['basename'](_0x18a698[_0x7971('0x7')]),_0x7971('0x5d')),path[_0x7971('0x4f')](path[_0x7971('0x52')](_0x18a698[_0x7971('0x7')]),_0x7971('0x5e'))],'nodir':!![]})['finalize']();_0x25812b['on'](_0x7971('0x5f'),function(){if(!fs[_0x7971('0x60')](_0x380aaf)){throw new db[(_0x7971('0x57'))][(_0x7971('0x61'))](_0x7971('0x62'));}return _0x507617['download'](_0x380aaf,util[_0x7971('0x51')]('%s.zip',path[_0x7971('0x52')](_0x18a698[_0x7971('0x7')])),function(_0xfc051a){if(_0xfc051a){throw new db['Sequelize'][(_0x7971('0x61'))](_0x7971('0x63'));}fs[_0x7971('0x64')](_0x380aaf);logger['info'](_0x7971('0x65'));logger[_0x7971('0x66')]('Temporary\x20file\x20removed');});});}return null;})[_0x7971('0x4d')](handleError(_0x507617,null));};exports[_0x7971('0x67')]=function(_0x59d866,_0x588a88,_0x1ba9c4){var _0x597133=path['basename'](_0x59d866[_0x7971('0x68')][_0x7971('0x69')],path[_0x7971('0x6a')](_0x59d866[_0x7971('0x68')][_0x7971('0x69')]));var _0x227ad5=path[_0x7971('0x4f')](config['root'],'server/files/plugins',_0x59d866[_0x7971('0x68')][_0x7971('0x69')]);var _0x234f74=path[_0x7971('0x4f')](config['root'],_0x7971('0x5c'),_0x597133);logger[_0x7971('0x66')](_0x7971('0x6b'),_0x227ad5);logger[_0x7971('0x66')](_0x7971('0x6c'),_0x234f74);try{fs[_0x7971('0x6d')](_0x227ad5,parseInt(_0x7971('0x6e'),0x8));extract(_0x227ad5,{'dir':_0x234f74},function(_0x4dc763){if(_0x4dc763){logger[_0x7971('0x2e')](_0x4dc763);handleError(_0x4dc763,!![]);};var _0x5db850=fs['readdirSync'](_0x234f74);if(_0x5db850['length']>0x1){removeReferences(_0x227ad5,_0x234f74);logger[_0x7971('0x2e')]('Invalid\x20plugin\x20structure');return _0x1ba9c4(new Error(_0x7971('0x6f')));}var _0x3101e7=fs[_0x7971('0x70')](path['join'](_0x234f74,_0x5db850[0x0]));if(_0x3101e7[_0x7971('0x71')]()){removeReferences(_0x227ad5,_0x234f74);logger[_0x7971('0x2e')]('Invalid\x20plugin\x20structure');return _0x1ba9c4(new Error(_0x7971('0x6f')));}if(_0x3101e7['isDirectory']()){var _0x23840b=fs[_0x7971('0x72')](path[_0x7971('0x4f')](_0x234f74,_0x5db850[0x0]));if(_0x23840b['length']===0x0){removeReferences(_0x227ad5,_0x234f74);logger[_0x7971('0x2e')](_0x7971('0x6f'));return _0x1ba9c4(new Error(_0x7971('0x6f')));}var _0x2bd21c=_0x23840b['some'](function(_0x2620e4){return _0x2620e4===_0x7971('0x73');});if(!_0x2bd21c){return _0x1ba9c4(new Error(_0x7971('0x74')));}var _0x3c9f51=fs['readFileSync'](path['join'](_0x234f74,_0x5db850[0x0],_0x7971('0x73')));var _0x19ca4c=JSON[_0x7971('0x75')](_0x3c9f51);if(_0x7971('0x20')==typeof _0x19ca4c[_0x7971('0x36')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x7971('0x20')==typeof _0x19ca4c[_0x7971('0x45')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20type\x20missing'));}if('undefined'==typeof _0x19ca4c[_0x7971('0x76')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x7971('0x20')==typeof _0x19ca4c['parameters']){return _0x1ba9c4(new Error(_0x7971('0x77')));}if(_0x19ca4c['type']==='html'){if(_0x7971('0x20')==typeof _0x19ca4c[_0x7971('0x78')][_0x7971('0x79')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x7971('0x20')==typeof _0x19ca4c['parameters'][_0x7971('0x79')][_0x7971('0x7a')]&&_0x7971('0x20')==typeof _0x19ca4c['parameters'][_0x7971('0x79')][_0x7971('0x7b')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x19ca4c[_0x7971('0x45')]==='script'){if('undefined'==typeof _0x19ca4c[_0x7971('0x78')][_0x7971('0x7c')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x7971('0x20')==typeof _0x19ca4c[_0x7971('0x78')][_0x7971('0x7d')]){return _0x1ba9c4(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x1ba9c4(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x3e224a=_0x19ca4c[_0x7971('0x36')];var _0x30df57=_0x19ca4c[_0x7971('0x7e')];var _0x332b23=_0x19ca4c[_0x7971('0x45')];var _0x4cc3ba=_0x19ca4c[_0x7971('0x7f')]?_0x19ca4c['sidebar']:_0x7971('0x80');var _0x427274=_0x19ca4c[_0x7971('0x81')]?_0x19ca4c[_0x7971('0x81')]:_0x7971('0x82');var _0x4ce193='';var _0x3ede0f='';var _0x474dcf='';var _0x269dd8='';var _0x3e01ac=_0x19ca4c[_0x7971('0x76')];if(_0x332b23===_0x7971('0x83')){if(_0x7971('0x20')!=typeof _0x19ca4c['parameters']['views'][_0x7971('0x7a')]){var _0x257d59=_0x19ca4c['parameters'][_0x7971('0x79')][_0x7971('0x7a')];if(!/^(f|ht)tps?:\/\//i['test'](_0x257d59)){_0x4ce193=path[_0x7971('0x4f')](_0x7971('0x84'),_0x597133,_0x5db850[0x0],_0x257d59);}else{_0x4ce193=_0x257d59;}}else{logger[_0x7971('0x66')](_0x7971('0x85'));}if(_0x7971('0x20')!=typeof _0x19ca4c[_0x7971('0x78')][_0x7971('0x79')][_0x7971('0x7b')]){var _0x564d4b=_0x19ca4c[_0x7971('0x78')][_0x7971('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x564d4b)){_0x3ede0f=path[_0x7971('0x4f')]('plugins',_0x597133,_0x5db850[0x0],_0x564d4b);}else{_0x3ede0f=_0x564d4b;}}else{logger[_0x7971('0x66')](_0x7971('0x86'));}}else if(_0x332b23==='script'){_0x474dcf=_0x19ca4c['parameters'][_0x7971('0x7c')];_0x269dd8=_0x19ca4c['parameters']['scriptPath'];if(_0x7971('0x20')!=typeof _0x19ca4c['parameters'][_0x7971('0x79')]){if('undefined'!=typeof _0x19ca4c[_0x7971('0x78')]['views']['admin']){var _0x257d59=_0x19ca4c[_0x7971('0x78')][_0x7971('0x79')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x7971('0x87')](_0x257d59)){_0x4ce193=path[_0x7971('0x4f')](_0x7971('0x84'),_0x597133,_0x5db850[0x0],_0x257d59);}else{_0x4ce193=_0x257d59;}}if(_0x7971('0x20')!=typeof _0x19ca4c[_0x7971('0x78')][_0x7971('0x79')][_0x7971('0x7b')]){var _0x564d4b=_0x19ca4c[_0x7971('0x78')][_0x7971('0x79')][_0x7971('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x7971('0x87')](_0x564d4b)){_0x3ede0f=path[_0x7971('0x4f')]('plugins',_0x597133,_0x5db850[0x0],_0x564d4b);}else{_0x3ede0f=_0x564d4b;}}}}var _0x20db07={'name':_0x3e224a,'description':_0x30df57,'path':path['join'](_0x597133,_0x5db850[0x0]),'type':_0x332b23,'sidebar':_0x4cc3ba,'icon':_0x427274,'adminUrl':_0x4ce193,'agentUrl':_0x3ede0f,'scriptName':_0x474dcf,'scriptPath':_0x269dd8,'version':_0x3e01ac};removeReferences(_0x227ad5,null);return db['Plugin'][_0x7971('0x88')](_0x20db07)['then'](function(_0x4e9439){var _0xe368b={'role':_0x59d866['body'][_0x7971('0x89')],'userProfileId':_0x59d866[_0x7971('0x8a')][_0x7971('0x8b')]};if(!_0xe368b)throw new Error(_0x7971('0x8c'));if(_0xe368b[_0x7971('0x89')]==='user'){var _0x3812d8=_0x4e9439[_0x7971('0x2c')]({'plain':!![]});return db['UserProfileSection'][_0x7971('0x4c')]({'where':{'name':'Plugins','userProfileId':_0xe368b[_0x7971('0x8b')]},'raw':!![]})[_0x7971('0x2a')](function(_0x3b054a){if(_0x3b054a&&_0x3b054a['autoAssociation']===0x0){return db[_0x7971('0x2d')][_0x7971('0x88')]({'name':_0x3812d8[_0x7971('0x36')],'resourceId':_0x3812d8['id'],'type':_0x3b054a[_0x7971('0x36')],'sectionId':_0x3b054a['id']},{})[_0x7971('0x2a')](function(){return _0x4e9439;});}else{return _0x4e9439;}})[_0x7971('0x4d')](function(_0x928a76){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x928a76);throw _0x928a76;});}return _0x4e9439;})['then'](respondWithResult(_0x588a88,null))[_0x7971('0x4d')](handleError(_0x588a88,null));}});}catch(_0x840e13){_0x588a88['status'](0x1f4)[_0x7971('0x8d')](_0x840e13);}};function removeReferences(_0x5ccf68,_0x169100){try{if(_0x5ccf68){fs[_0x7971('0x64')](_0x5ccf68);logger[_0x7971('0x66')](_0x7971('0x8e'));}if(_0x169100){rimraf(_0x169100,function(){});logger[_0x7971('0x66')]('Extracted\x20folder\x20removed');}}catch(_0x3677c0){logger[_0x7971('0x2e')](_0x3677c0);}}exports['update']=function(_0x3ecb81,_0x43f391,_0x1cc876){return db['Plugin'][_0x7971('0x4c')]({'where':{'id':_0x3ecb81[_0x7971('0x4b')]['id']}})['then'](handleEntityNotFound(_0x43f391,null))[_0x7971('0x2a')](saveUpdates(_0x3ecb81[_0x7971('0x8a')],null))[_0x7971('0x2a')](respondWithResult(_0x43f391,null))[_0x7971('0x4d')](handleError(_0x43f391,null));};exports['delete']=function(_0x5ad2b1,_0x231921,_0x26d162){return db[_0x7971('0x32')][_0x7971('0x4c')]({'where':{'id':_0x5ad2b1[_0x7971('0x4b')]['id']}})[_0x7971('0x2a')](function(_0x191508){if(_0x191508){return _0x191508[_0x7971('0x2b')]();}})[_0x7971('0x2a')](function(_0x399dfc){rimraf(path[_0x7971('0x4f')](config[_0x7971('0x50')],_0x7971('0x5c'),path[_0x7971('0x8f')](_0x399dfc[_0x7971('0x7')])),function(){});return _0x399dfc;})[_0x7971('0x2a')](handleEntityNotFound(_0x231921,null))[_0x7971('0x2a')](respondWithStatusCode(_0x231921,null))[_0x7971('0x4d')](handleError(_0x231921,null));};exports[_0x7971('0x90')]=function(_0x1ee6bf,_0x3f385b,_0x177e63){return BPromise[_0x7971('0x91')]()[_0x7971('0x2a')](function(){if(!_0x1ee6bf['query'][_0x7971('0x7')]){throw new Error(_0x7971('0x92'));}if(!_0x1ee6bf[_0x7971('0x38')][_0x7971('0x93')]){throw new Error(_0x7971('0x94'));}var _0x362390=_0x1ee6bf['query'][_0x7971('0x95')]?_0x1ee6bf[_0x7971('0x38')][_0x7971('0x95')]+':'+_0x1ee6bf[_0x7971('0x38')]['port']:'http://localhost:'+_0x1ee6bf[_0x7971('0x38')][_0x7971('0x93')];var _0x4ec8a9=_0x1ee6bf['query'][_0x7971('0x25')]?_0x1ee6bf[_0x7971('0x38')][_0x7971('0x25')]:!![];var _0x27b2c4=_0x1ee6bf[_0x7971('0x38')][_0x7971('0x96')]?_0x1ee6bf[_0x7971('0x38')]['encoding']:null;var _0x632a51={'method':_0x1ee6bf[_0x7971('0x97')],'uri':util[_0x7971('0x51')](_0x7971('0x98'),_0x362390,_0x1ee6bf['query'][_0x7971('0x7')]),'json':_0x4ec8a9,'resolveWithFullResponse':!![],'encoding':_0x27b2c4,'qs':_0x1ee6bf['query']};if(_0x1ee6bf[_0x7971('0x99')]){_0x632a51[_0x7971('0x99')]=_0x1ee6bf[_0x7971('0x99')];if(_0x632a51['headers']['content-length']){delete _0x632a51[_0x7971('0x99')][_0x7971('0x9a')];}}if(_0x632a51[_0x7971('0x99')]['content-type']){delete _0x632a51[_0x7971('0x99')][_0x7971('0x9b')];}return rp(_0x632a51);})['then'](function(_0x43783a){if(_0x43783a){_0x3f385b[_0x7971('0x23')](_0x43783a['headers']);logger['info'](_0x43783a[_0x7971('0x8a')]);if(_[_0x7971('0x9c')](_0x1ee6bf[_0x7971('0x38')][_0x7971('0x7')],_0x7971('0x4e'))&&_0x43783a['statusCode']==0x1f4){return _0x3f385b[_0x7971('0x1c')](_0x43783a[_0x7971('0x9d')]);}else{return _0x3f385b['status'](_0x43783a['statusCode'])['send'](_0x43783a[_0x7971('0x8a')]);}}else{return _0x3f385b[_0x7971('0x1c')](0xc8);}})[_0x7971('0x4d')](handleError(_0x3f385b,null));};exports['webhookPost']=function(_0x2d1de5,_0x27d5b2,_0x54d947){return BPromise['resolve']()[_0x7971('0x2a')](function(){if(!_0x2d1de5[_0x7971('0x38')][_0x7971('0x7')]){throw new Error(_0x7971('0x92'));}if(!_0x2d1de5[_0x7971('0x38')][_0x7971('0x93')]){throw new Error(_0x7971('0x94'));}var _0x5df513=_0x2d1de5['query']['hostname']?_0x2d1de5['query'][_0x7971('0x95')]+':'+_0x2d1de5['query'][_0x7971('0x93')]:_0x7971('0x9e')+_0x2d1de5[_0x7971('0x38')][_0x7971('0x93')];var _0x3d6b28=_0x2d1de5[_0x7971('0x38')][_0x7971('0x25')]?_0x2d1de5[_0x7971('0x38')]['json']:!![];var _0xc81139=_0x2d1de5[_0x7971('0x38')][_0x7971('0x96')]?_0x2d1de5[_0x7971('0x38')][_0x7971('0x96')]:null;var _0x3c28c7={'method':_0x2d1de5[_0x7971('0x97')],'uri':util[_0x7971('0x51')](_0x7971('0x98'),_0x5df513,_0x2d1de5['query'][_0x7971('0x7')]),'json':_0x3d6b28,'resolveWithFullResponse':!![],'encoding':_0xc81139,'body':_0x2d1de5['body']};if(_0x2d1de5[_0x7971('0x99')]){_0x3c28c7[_0x7971('0x99')]=_0x2d1de5[_0x7971('0x99')];if(_0x3c28c7[_0x7971('0x99')][_0x7971('0x9a')]){delete _0x3c28c7[_0x7971('0x99')][_0x7971('0x9a')];}}if(_0x3c28c7['headers']['content-type']){delete _0x3c28c7[_0x7971('0x99')][_0x7971('0x9b')];}return rp(_0x3c28c7);})['then'](function(_0x4514f6){if(_0x4514f6){_0x27d5b2[_0x7971('0x23')](_0x4514f6[_0x7971('0x99')]);logger[_0x7971('0x66')](_0x4514f6[_0x7971('0x8a')]);return _0x27d5b2[_0x7971('0x1e')](_0x4514f6['statusCode'])[_0x7971('0x8d')](_0x4514f6[_0x7971('0x8a')]);}else{return _0x27d5b2['sendStatus'](0xc8);}})[_0x7971('0x4d')](handleError(_0x27d5b2,null));};
\ No newline at end of file
index 4e83563..12116e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f1=['hasOwnProperty','hook','events','../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit'];(function(_0x4947dc,_0x176f85){var _0x1a2f0b=function(_0x32f29f){while(--_0x32f29f){_0x4947dc['push'](_0x4947dc['shift']());}};_0x1a2f0b(++_0x176f85);}(_0x96f1,0x19c));var _0x196f=function(_0x39a1cf,_0x4f1244){_0x39a1cf=_0x39a1cf-0x0;var _0xd2c0a5=_0x96f1[_0x39a1cf];return _0xd2c0a5;};'use strict';var EventEmitter=require(_0x196f('0x0'));var Plugin=require(_0x196f('0x1'))['db'][_0x196f('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x196f('0x3')](0x0);var events={'afterCreate':_0x196f('0x4'),'afterUpdate':_0x196f('0x5'),'afterDestroy':_0x196f('0x6')};function emitEvent(_0x3461f4){return function(_0x5b8eb5,_0x56fc61,_0x2ebc4e){PluginEvents[_0x196f('0x7')](_0x3461f4+':'+_0x5b8eb5['id'],_0x5b8eb5);PluginEvents[_0x196f('0x7')](_0x3461f4,_0x5b8eb5);_0x2ebc4e(null);};}for(var e in events){if(events[_0x196f('0x8')](e)){var event=events[e];Plugin[_0x196f('0x9')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x524e=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','Plugin'];(function(_0x36064b,_0x15c6b0){var _0x5b1035=function(_0x2fdae4){while(--_0x2fdae4){_0x36064b['push'](_0x36064b['shift']());}};_0x5b1035(++_0x15c6b0);}(_0x524e,0x15e));var _0xe524=function(_0xfa53fc,_0x5e8349){_0xfa53fc=_0xfa53fc-0x0;var _0x19637e=_0x524e[_0xfa53fc];return _0x19637e;};'use strict';var EventEmitter=require('events');var Plugin=require('../../mysqldb')['db'][_0xe524('0x0')];var PluginEvents=new EventEmitter();PluginEvents[_0xe524('0x1')](0x0);var events={'afterCreate':_0xe524('0x2'),'afterUpdate':_0xe524('0x3'),'afterDestroy':_0xe524('0x4')};function emitEvent(_0x379eb1){return function(_0xabd694,_0x32c90b,_0x10d37a){PluginEvents[_0xe524('0x5')](_0x379eb1+':'+_0xabd694['id'],_0xabd694);PluginEvents['emit'](_0x379eb1,_0xabd694);_0x10d37a(null);};}for(var e in events){if(events[_0xe524('0x6')](e)){var event=events[e];Plugin[_0xe524('0x7')](e,emitEvent(event));}}module[_0xe524('0x8')]=PluginEvents;
\ No newline at end of file
index cb9b099..42491d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6033=['request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash','../../config/logger','api'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6033,0xe1));var _0x3603=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x6033[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x3603('0x0'));var util=require('util');var logger=require(_0x3603('0x1'))(_0x3603('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3603('0x3'));var fs=require('fs');var path=require(_0x3603('0x4'));var rimraf=require(_0x3603('0x5'));var config=require(_0x3603('0x6'));var attributes=require(_0x3603('0x7'));module[_0x3603('0x8')]=function(_0x45d0f9,_0x40cf61){return _0x45d0f9[_0x3603('0x9')](_0x3603('0xa'),attributes,{'tableName':_0x3603('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f83=['define','Plugin','plugins','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4eaf72,_0x306e55){var _0x595136=function(_0x72a57b){while(--_0x72a57b){_0x4eaf72['push'](_0x4eaf72['shift']());}};_0x595136(++_0x306e55);}(_0x0f83,0x66));var _0x30f8=function(_0x3d4cdd,_0x2c96ad){_0x3d4cdd=_0x3d4cdd-0x0;var _0x33b5d7=_0x0f83[_0x3d4cdd];return _0x33b5d7;};'use strict';var _=require('lodash');var util=require(_0x30f8('0x0'));var logger=require(_0x30f8('0x1'))('api');var moment=require('moment');var BPromise=require(_0x30f8('0x2'));var rp=require(_0x30f8('0x3'));var fs=require('fs');var path=require(_0x30f8('0x4'));var rimraf=require(_0x30f8('0x5'));var config=require(_0x30f8('0x6'));var attributes=require('./plugin.attributes');module[_0x30f8('0x7')]=function(_0x19f1c5,_0x160e2b){return _0x19f1c5[_0x30f8('0x8')](_0x30f8('0x9'),attributes,{'tableName':_0x30f8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17d2ac7..2894a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e7b=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','create','body','options','raw','CreatePlugin','lodash','util','bluebird','randomstring','../../mysqldb'];(function(_0x124728,_0x463dca){var _0x8eb20f=function(_0x49d9de){while(--_0x49d9de){_0x124728['push'](_0x124728['shift']());}};_0x8eb20f(++_0x463dca);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x573f83,_0x1f3cd3){_0x573f83=_0x573f83-0x0;var _0xe89cd1=_0x1e7b[_0x573f83];return _0xe89cd1;};'use strict';var _=require(_0xb1e7('0x0'));var util=require(_0xb1e7('0x1'));var moment=require('moment');var BPromise=require(_0xb1e7('0x2'));var rs=require(_0xb1e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb1e7('0x4'))['db'];var utils=require(_0xb1e7('0x5'));var logger=require(_0xb1e7('0x6'))(_0xb1e7('0x7'));var config=require('../../config/environment');var jayson=require(_0xb1e7('0x8'));var client=jayson[_0xb1e7('0x9')][_0xb1e7('0xa')]({'port':0x232a});config[_0xb1e7('0xb')]=_[_0xb1e7('0xc')](config['redis'],{'host':_0xb1e7('0xd'),'port':0x18eb});var socket=require(_0xb1e7('0xe'))(new Redis(config[_0xb1e7('0xb')]));require(_0xb1e7('0xf'))[_0xb1e7('0x10')](socket);function respondWithRpcPromise(_0x1c27e8,_0x842e0a,_0x400ad9){return new BPromise(function(_0x13af76,_0x2521e9){return client[_0xb1e7('0x11')](_0x1c27e8,_0x400ad9)[_0xb1e7('0x12')](function(_0xc7eea1){logger[_0xb1e7('0x13')](_0xb1e7('0x14'),_0x842e0a,'request\x20sent');logger['debug'](_0xb1e7('0x15'),_0x842e0a,_0xb1e7('0x16'),JSON[_0xb1e7('0x17')](_0xc7eea1));if(_0xc7eea1['error']){if(_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x19')]===0x1f4){logger[_0xb1e7('0x18')]('Plugin,\x20%s,\x20%s',_0x842e0a,_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x1a')]);return _0x2521e9(_0xc7eea1[_0xb1e7('0x18')]['message']);}logger[_0xb1e7('0x18')](_0xb1e7('0x14'),_0x842e0a,_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x1a')]);return _0x13af76(_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x1a')]);}else{logger[_0xb1e7('0x13')](_0xb1e7('0x14'),_0x842e0a,_0xb1e7('0x16'));_0x13af76(_0xc7eea1[_0xb1e7('0x1b')][_0xb1e7('0x1a')]);}})[_0xb1e7('0x1c')](function(_0xa1ddc){logger[_0xb1e7('0x18')](_0xb1e7('0x14'),_0x842e0a,_0xa1ddc);_0x2521e9(_0xa1ddc);});});}exports['CreatePlugin']=function(_0x30f3d2){var _0x39b2d8=this;return new Promise(function(_0x51b0e3,_0x2fbd93){return db['Plugin'][_0xb1e7('0x1d')](_0x30f3d2[_0xb1e7('0x1e')],{'raw':_0x30f3d2[_0xb1e7('0x1f')]?_0x30f3d2[_0xb1e7('0x1f')][_0xb1e7('0x20')]===undefined?!![]:![]:!![]})[_0xb1e7('0x12')](function(_0x4d43dc){logger[_0xb1e7('0x13')](_0xb1e7('0x21'),_0x30f3d2);logger['debug']('CreatePlugin',_0x30f3d2,JSON[_0xb1e7('0x17')](_0x4d43dc));_0x51b0e3(_0x4d43dc);})[_0xb1e7('0x1c')](function(_0x163148){logger['error'](_0xb1e7('0x21'),_0x163148[_0xb1e7('0x1a')],_0x30f3d2);_0x2fbd93(_0x39b2d8[_0xb1e7('0x18')](0x1f4,_0x163148[_0xb1e7('0x1a')]));});});};
\ No newline at end of file
+var _0x207a=['request','then','debug','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','Plugin,\x20%s,\x20%s','info','catch','Plugin','create','CreatePlugin','stringify','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','defaults','localhost','redis','./plugin.socket','register'];(function(_0x5a8f34,_0x11c27b){var _0x497614=function(_0x2089e3){while(--_0x2089e3){_0x5a8f34['push'](_0x5a8f34['shift']());}};_0x497614(++_0x11c27b);}(_0x207a,0x83));var _0xa207=function(_0x20e7da,_0x222d78){_0x20e7da=_0x20e7da-0x0;var _0x103767=_0x207a[_0x20e7da];return _0x103767;};'use strict';var _=require(_0xa207('0x0'));var util=require(_0xa207('0x1'));var moment=require('moment');var BPromise=require(_0xa207('0x2'));var rs=require(_0xa207('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa207('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa207('0x5'))('rpc');var config=require(_0xa207('0x6'));var jayson=require(_0xa207('0x7'));var client=jayson[_0xa207('0x8')]['http']({'port':0x232a});config['redis']=_[_0xa207('0x9')](config['redis'],{'host':_0xa207('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa207('0xb')]));require(_0xa207('0xc'))[_0xa207('0xd')](socket);function respondWithRpcPromise(_0x256990,_0x5ca59a,_0x59c998){return new BPromise(function(_0x50d9d9,_0x4f5261){return client[_0xa207('0xe')](_0x256990,_0x59c998)[_0xa207('0xf')](function(_0x128f05){logger['info']('Plugin,\x20%s,\x20%s',_0x5ca59a,'request\x20sent');logger[_0xa207('0x10')](_0xa207('0x11'),_0x5ca59a,_0xa207('0x12'),JSON['stringify'](_0x128f05));if(_0x128f05[_0xa207('0x13')]){if(_0x128f05[_0xa207('0x13')][_0xa207('0x14')]===0x1f4){logger[_0xa207('0x13')]('Plugin,\x20%s,\x20%s',_0x5ca59a,_0x128f05['error'][_0xa207('0x15')]);return _0x4f5261(_0x128f05[_0xa207('0x13')][_0xa207('0x15')]);}logger[_0xa207('0x13')](_0xa207('0x16'),_0x5ca59a,_0x128f05[_0xa207('0x13')][_0xa207('0x15')]);return _0x50d9d9(_0x128f05[_0xa207('0x13')][_0xa207('0x15')]);}else{logger[_0xa207('0x17')](_0xa207('0x16'),_0x5ca59a,'request\x20sent');_0x50d9d9(_0x128f05['result']['message']);}})[_0xa207('0x18')](function(_0x617ae9){logger[_0xa207('0x13')](_0xa207('0x16'),_0x5ca59a,_0x617ae9);_0x4f5261(_0x617ae9);});});}exports['CreatePlugin']=function(_0x34bef9){var _0x45527e=this;return new Promise(function(_0x34c11a,_0x5881d2){return db[_0xa207('0x19')][_0xa207('0x1a')](_0x34bef9['body'],{'raw':_0x34bef9['options']?_0x34bef9['options']['raw']===undefined?!![]:![]:!![]})[_0xa207('0xf')](function(_0x41d1d1){logger[_0xa207('0x17')]('CreatePlugin',_0x34bef9);logger[_0xa207('0x10')](_0xa207('0x1b'),_0x34bef9,JSON[_0xa207('0x1c')](_0x41d1d1));_0x34c11a(_0x41d1d1);})['catch'](function(_0x41ee38){logger['error']('CreatePlugin',_0x41ee38[_0xa207('0x15')],_0x34bef9);_0x5881d2(_0x45527e[_0xa207('0x13')](0x1f4,_0x41ee38[_0xa207('0x15')]));});});};
\ No newline at end of file
index 4aebd3f..32f0f64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2c=['update','removeListener','register','length','plugin:','./plugin.events','save','remove'];(function(_0x3bc298,_0x583d14){var _0x31bf58=function(_0x24563b){while(--_0x24563b){_0x3bc298['push'](_0x3bc298['shift']());}};_0x31bf58(++_0x583d14);}(_0x3d2c,0xad));var _0xc3d2=function(_0x3f21c9,_0x5dd6c1){_0x3f21c9=_0x3f21c9-0x0;var _0xdde7e9=_0x3d2c[_0x3f21c9];return _0xdde7e9;};'use strict';var PluginEvents=require(_0xc3d2('0x0'));var events=[_0xc3d2('0x1'),_0xc3d2('0x2'),_0xc3d2('0x3')];function createListener(_0x3264b2,_0x2435bc){return function(_0x5e9cbd){_0x2435bc['emit'](_0x3264b2,_0x5e9cbd);};}function removeListener(_0x2b5c1e,_0x3ddbc2){return function(){PluginEvents[_0xc3d2('0x4')](_0x2b5c1e,_0x3ddbc2);};}exports[_0xc3d2('0x5')]=function(_0x3b85fd){for(var _0x179869=0x0,_0x59470a=events[_0xc3d2('0x6')];_0x179869<_0x59470a;_0x179869++){var _0x5329a9=events[_0x179869];var _0x42f84a=createListener(_0xc3d2('0x7')+_0x5329a9,_0x3b85fd);PluginEvents['on'](_0x5329a9,_0x42f84a);}};
\ No newline at end of file
+var _0xf59c=['./plugin.events','save','remove','update','emit','register','length','plugin:'];(function(_0x452f3c,_0x23a6c4){var _0x2aa78f=function(_0x367d18){while(--_0x367d18){_0x452f3c['push'](_0x452f3c['shift']());}};_0x2aa78f(++_0x23a6c4);}(_0xf59c,0x1e0));var _0xcf59=function(_0x421f64,_0x5f748a){_0x421f64=_0x421f64-0x0;var _0x533360=_0xf59c[_0x421f64];return _0x533360;};'use strict';var PluginEvents=require(_0xcf59('0x0'));var events=[_0xcf59('0x1'),_0xcf59('0x2'),_0xcf59('0x3')];function createListener(_0x47902a,_0x3b026f){return function(_0x2cecf4){_0x3b026f[_0xcf59('0x4')](_0x47902a,_0x2cecf4);};}function removeListener(_0x2b6006,_0x37f95d){return function(){PluginEvents['removeListener'](_0x2b6006,_0x37f95d);};}exports[_0xcf59('0x5')]=function(_0x3542f7){for(var _0x477064=0x0,_0x4517dd=events[_0xcf59('0x6')];_0x477064<_0x4517dd;_0x477064++){var _0x25515b=events[_0x477064];var _0x273246=createListener(_0xcf59('0x7')+_0x25515b,_0x3542f7);PluginEvents['on'](_0x25515b,_0x273246);}};
\ No newline at end of file
index 9ca00fb..23f7ccf 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(_0x32ce5b,_0x2d6bdd){var _0x2fd0f0=function(_0x7991f3){while(--_0x7991f3){_0x32ce5b['push'](_0x32ce5b['shift']());}};_0x2fd0f0(++_0x2d6bdd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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(_0x319b02,_0x1be26d){var _0x2a5ec4=function(_0x37e477){while(--_0x37e477){_0x319b02['push'](_0x319b02['shift']());}};_0x2a5ec4(++_0x1be26d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 ac145db..83b27e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['../../config/pm2','../../config/logger','api','path','exec','bluebird','status','error','stack','name','send','npm\x20install','info','index','list','then','motion2','length','catch','show','params','create','body','script','join','../../files/plugins','cwd','chdir','dump','Missing\x20name\x20and/or\x20path','update','hasOwnProperty','Unknown\x20status','destroy','delete','Unknown\x20id'];(function(_0xf37f96,_0xa1f1ae){var _0x48acac=function(_0x531b7e){while(--_0x531b7e){_0xf37f96['push'](_0xf37f96['shift']());}};_0x48acac(++_0xa1f1ae);}(_0x99e9,0xb4));var _0x999e=function(_0x1c08f6,_0x14c077){_0x1c08f6=_0x1c08f6-0x0;var _0xbc156a=_0x99e9[_0x1c08f6];return _0xbc156a;};'use strict';var _=require('lodash');var pm2=require(_0x999e('0x0'));var logger=require(_0x999e('0x1'))(_0x999e('0x2'));var path=require(_0x999e('0x3'));var exec=require('child_process')[_0x999e('0x4')];var BPromise=require(_0x999e('0x5'));function handleEntityNotFound(_0x3aac27,_0x4e2112){return function(_0x296411){if(!_0x296411){_0x3aac27['sendStatus'](0x194);;}return _0x296411;};}function respondWithResult(_0x25421f,_0x1bda0a){_0x1bda0a=_0x1bda0a||0xc8;return function(_0x100330){if(_0x100330){return _0x25421f[_0x999e('0x6')](_0x1bda0a)['json'](_0x100330);}return null;};}function handleError(_0x46aeae,_0x38a692){_0x38a692=_0x38a692||0x1f4;return function(_0x343a12){logger[_0x999e('0x7')](_0x343a12[_0x999e('0x8')]);if(_0x343a12[_0x999e('0x9')]){delete _0x343a12[_0x999e('0x9')];}_0x46aeae[_0x999e('0x6')](_0x38a692)[_0x999e('0xa')](_0x343a12);};}function execChildProcess(){return new BPromise(function(_0xf40130,_0x9368cf){exec(_0x999e('0xb'),function(_0x4246b1,_0x188d02,_0x3dfe2d){logger[_0x999e('0xc')](_0x188d02);logger[_0x999e('0xc')](_0x3dfe2d);if(_0x4246b1){logger['error'](_0x4246b1);return _0x9368cf(_0x4246b1);}return _0xf40130(_0x188d02);});});}exports[_0x999e('0xd')]=function(_0x54afad,_0x3e6f5a){return pm2[_0x999e('0xe')]()[_0x999e('0xf')](function(_0x538a92){if(_0x538a92){var _0x28bdd1=_['reject'](_0x538a92,function(_0xa44e4c){return _0xa44e4c['name']==='express'||_0xa44e4c[_0x999e('0x9')]===_0x999e('0x10');});return{'rows':_0x28bdd1,'count':_0x28bdd1[_0x999e('0x11')]};}return null;})[_0x999e('0xf')](respondWithResult(_0x3e6f5a,null))[_0x999e('0x12')](handleError(_0x3e6f5a,null));};exports[_0x999e('0x13')]=function(_0x4aac66,_0x5bb27e){return pm2['describe'](_0x4aac66[_0x999e('0x14')]['id'])[_0x999e('0xf')](respondWithResult(_0x5bb27e,null))[_0x999e('0xf')](handleEntityNotFound(_0x5bb27e,null))[_0x999e('0x12')](handleError(_0x5bb27e,null));};exports[_0x999e('0x15')]=function(_0x3ece5e,_0x5af4c3){if(_0x3ece5e['body'][_0x999e('0x9')]&&_0x3ece5e[_0x999e('0x16')][_0x999e('0x17')]){var _0x510fa2=path[_0x999e('0x18')](__dirname,_0x999e('0x19'),_0x3ece5e[_0x999e('0x16')][_0x999e('0x17')]);var _0x373b80=process[_0x999e('0x1a')]();process[_0x999e('0x1b')](path['dirname'](_0x510fa2));return execChildProcess()['then'](function(_0x11a6bf){process[_0x999e('0x1b')](_0x373b80);return pm2['start']({'name':_0x3ece5e[_0x999e('0x16')][_0x999e('0x9')],'script':_0x510fa2});})[_0x999e('0xf')](function(_0x13027c){pm2[_0x999e('0x1c')]();return _0x13027c[0x0];})[_0x999e('0xf')](respondWithResult(_0x5af4c3,0xc9))['catch'](handleError(_0x5af4c3,null));}else{return _0x5af4c3[_0x999e('0x6')](0x1f4)[_0x999e('0xa')]({'message':_0x999e('0x1d')});}};exports[_0x999e('0x1e')]=function(_0x1b7adb,_0x1d2dc6){if(_0x1b7adb[_0x999e('0x16')]['id']){delete _0x1b7adb['body']['id'];}var _0x28f803={'online':'restart','stopped':'stop'};if(_0x28f803[_0x999e('0x1f')](_0x1b7adb[_0x999e('0x16')][_0x999e('0x6')])){return pm2[_0x28f803[_0x1b7adb['body'][_0x999e('0x6')]]](_0x1b7adb[_0x999e('0x14')]['id'])[_0x999e('0xf')](respondWithResult(_0x1d2dc6,0xc8))[_0x999e('0x12')](handleError(_0x1d2dc6,null));}else{return _0x1d2dc6[_0x999e('0x6')](0x1f4)[_0x999e('0xa')]({'message':_0x999e('0x20')});}};exports[_0x999e('0x21')]=function(_0x27102b,_0x3ddacb){if(_0x27102b['body']['id']){delete _0x27102b[_0x999e('0x16')]['id'];}if(_0x27102b[_0x999e('0x14')]['id']){return pm2[_0x999e('0x22')](_0x27102b['params']['id'])[_0x999e('0xf')](function(_0x5af72c){pm2['dump']();return _0x5af72c[0x0];})[_0x999e('0xf')](respondWithResult(_0x3ddacb,null))[_0x999e('0x12')](handleError(_0x3ddacb,null));}else{return _0x3ddacb['status'](0x1f4)['send']({'message':_0x999e('0x23')});}};
\ No newline at end of file
+var _0xee5b=['exec','bluebird','sendStatus','error','stack','name','send','npm\x20install','info','index','list','then','reject','motion2','length','catch','show','describe','params','create','body','script','join','cwd','chdir','dirname','start','status','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','lodash','../../config/logger','api','child_process'];(function(_0x5c5d58,_0x46c90f){var _0x3211d6=function(_0x4dce89){while(--_0x4dce89){_0x5c5d58['push'](_0x5c5d58['shift']());}};_0x3211d6(++_0x46c90f);}(_0xee5b,0x1f4));var _0xbee5=function(_0x2f4d87,_0x5a65d8){_0x2f4d87=_0x2f4d87-0x0;var _0x314a68=_0xee5b[_0x2f4d87];return _0x314a68;};'use strict';var _=require(_0xbee5('0x0'));var pm2=require('../../config/pm2');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var path=require('path');var exec=require(_0xbee5('0x3'))[_0xbee5('0x4')];var BPromise=require(_0xbee5('0x5'));function handleEntityNotFound(_0x210159,_0x4bd202){return function(_0x5200b1){if(!_0x5200b1){_0x210159[_0xbee5('0x6')](0x194);;}return _0x5200b1;};}function respondWithResult(_0x2c0bde,_0xab6e4d){_0xab6e4d=_0xab6e4d||0xc8;return function(_0x804ab8){if(_0x804ab8){return _0x2c0bde['status'](_0xab6e4d)['json'](_0x804ab8);}return null;};}function handleError(_0x53d5b9,_0x5baf5c){_0x5baf5c=_0x5baf5c||0x1f4;return function(_0x5536bd){logger[_0xbee5('0x7')](_0x5536bd[_0xbee5('0x8')]);if(_0x5536bd[_0xbee5('0x9')]){delete _0x5536bd[_0xbee5('0x9')];}_0x53d5b9['status'](_0x5baf5c)[_0xbee5('0xa')](_0x5536bd);};}function execChildProcess(){return new BPromise(function(_0x305921,_0x9b3d3b){exec(_0xbee5('0xb'),function(_0x16377d,_0x1509c7,_0x105e16){logger[_0xbee5('0xc')](_0x1509c7);logger[_0xbee5('0xc')](_0x105e16);if(_0x16377d){logger['error'](_0x16377d);return _0x9b3d3b(_0x16377d);}return _0x305921(_0x1509c7);});});}exports[_0xbee5('0xd')]=function(_0x532a78,_0x183877){return pm2[_0xbee5('0xe')]()[_0xbee5('0xf')](function(_0x593ecb){if(_0x593ecb){var _0x5092f2=_[_0xbee5('0x10')](_0x593ecb,function(_0x4cf5a8){return _0x4cf5a8[_0xbee5('0x9')]==='express'||_0x4cf5a8[_0xbee5('0x9')]===_0xbee5('0x11');});return{'rows':_0x5092f2,'count':_0x5092f2[_0xbee5('0x12')]};}return null;})['then'](respondWithResult(_0x183877,null))[_0xbee5('0x13')](handleError(_0x183877,null));};exports[_0xbee5('0x14')]=function(_0x5a0ae5,_0x254dd3){return pm2[_0xbee5('0x15')](_0x5a0ae5[_0xbee5('0x16')]['id'])[_0xbee5('0xf')](respondWithResult(_0x254dd3,null))[_0xbee5('0xf')](handleEntityNotFound(_0x254dd3,null))[_0xbee5('0x13')](handleError(_0x254dd3,null));};exports[_0xbee5('0x17')]=function(_0xa50ec9,_0x20cf52){if(_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x9')]&&_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x19')]){var _0x40a06=path[_0xbee5('0x1a')](__dirname,'../../files/plugins',_0xa50ec9['body'][_0xbee5('0x19')]);var _0x48bfb5=process[_0xbee5('0x1b')]();process[_0xbee5('0x1c')](path[_0xbee5('0x1d')](_0x40a06));return execChildProcess()[_0xbee5('0xf')](function(_0x3f23c5){process[_0xbee5('0x1c')](_0x48bfb5);return pm2[_0xbee5('0x1e')]({'name':_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x9')],'script':_0x40a06});})['then'](function(_0x5b43b3){pm2['dump']();return _0x5b43b3[0x0];})['then'](respondWithResult(_0x20cf52,0xc9))['catch'](handleError(_0x20cf52,null));}else{return _0x20cf52[_0xbee5('0x1f')](0x1f4)[_0xbee5('0xa')]({'message':_0xbee5('0x20')});}};exports[_0xbee5('0x21')]=function(_0x169042,_0x20e7e8){if(_0x169042[_0xbee5('0x18')]['id']){delete _0x169042['body']['id'];}var _0x36b50f={'online':_0xbee5('0x22'),'stopped':_0xbee5('0x23')};if(_0x36b50f[_0xbee5('0x24')](_0x169042[_0xbee5('0x18')]['status'])){return pm2[_0x36b50f[_0x169042[_0xbee5('0x18')][_0xbee5('0x1f')]]](_0x169042[_0xbee5('0x16')]['id'])[_0xbee5('0xf')](respondWithResult(_0x20e7e8,0xc8))[_0xbee5('0x13')](handleError(_0x20e7e8,null));}else{return _0x20e7e8[_0xbee5('0x1f')](0x1f4)[_0xbee5('0xa')]({'message':_0xbee5('0x25')});}};exports[_0xbee5('0x26')]=function(_0x59c2e4,_0x22df5f){if(_0x59c2e4['body']['id']){delete _0x59c2e4[_0xbee5('0x18')]['id'];}if(_0x59c2e4['params']['id']){return pm2[_0xbee5('0x27')](_0x59c2e4['params']['id'])[_0xbee5('0xf')](function(_0x5c1109){pm2[_0xbee5('0x28')]();return _0x5c1109[0x0];})[_0xbee5('0xf')](respondWithResult(_0x22df5f,null))[_0xbee5('0x13')](handleError(_0x22df5f,null));}else{return _0x22df5f[_0xbee5('0x1f')](0x1f4)['send']({'message':_0xbee5('0x29')});}};
\ No newline at end of file
index f122b0b..041ad2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3946=['express','Router','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','getQueues','exports'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x3946,0x10e));var _0x6394=function(_0x22cf16,_0x374f3c){_0x22cf16=_0x22cf16-0x0;var _0x532b30=_0x3946[_0x22cf16];return _0x532b30;};'use strict';var express=require(_0x6394('0x0'));var router=express[_0x6394('0x1')]();var auth=require(_0x6394('0x2'));var controller=require(_0x6394('0x3'));router[_0x6394('0x4')](_0x6394('0x5'),auth[_0x6394('0x6')](),controller[_0x6394('0x7')]);module[_0x6394('0x8')]=router;
\ No newline at end of file
+var _0xb43c=['/queues','isAuthenticated','getQueues','exports','express','Router','../../components/auth/service','./realtime.controller','get'];(function(_0x3d391b,_0x139db6){var _0x34adb6=function(_0x464b1e){while(--_0x464b1e){_0x3d391b['push'](_0x3d391b['shift']());}};_0x34adb6(++_0x139db6);}(_0xb43c,0x1ea));var _0xcb43=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb43c[_0x2dafbe];return _0x58a45a;};'use strict';var express=require(_0xcb43('0x0'));var router=express[_0xcb43('0x1')]();var auth=require(_0xcb43('0x2'));var controller=require(_0xcb43('0x3'));router[_0xcb43('0x4')](_0xcb43('0x5'),auth[_0xcb43('0x6')](),controller[_0xcb43('0x7')]);module[_0xcb43('0x8')]=router;
\ No newline at end of file
index 104d377..13d4fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['findAll','QueueId','User','catch','util','lodash','jayson/promise','../../components/parsers/qs','api','../../mysqldb','http','client','offset','undefined','count','limit','status','Content-Range','json','stack','name','send','getQueues','chat','sms','openchannel','fax','voice','resolve','then','channel','query','toLowerCase','Invalid\x20channel','startCase','Queue','map','fieldName','key','user','role','userProfileId','type','QueueCampaigns','Queues','UserProfile','findAndCountAll','request','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','paused','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','erlangCalls','erlangCallToSecond','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','waiting','talking','agents','find','merge','pick','online','getMembers','length','UserId','Pause'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x32f4,0x154));var _0x432f=function(_0x40f354,_0x2248d3){_0x40f354=_0x40f354-0x0;var _0x569b6a=_0x32f4[_0x40f354];return _0x569b6a;};'use strict';var util=require(_0x432f('0x0'));var _=require(_0x432f('0x1'));var jayson=require(_0x432f('0x2'));var qs=require(_0x432f('0x3'));var logger=require('../../config/logger')(_0x432f('0x4'));var db=require(_0x432f('0x5'))['db'];var client=jayson['client'][_0x432f('0x6')]({'port':0x232a});var routingClient=jayson[_0x432f('0x7')][_0x432f('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x355b02,_0x2f5f03){return function(_0x5d8cc0){if(_0x5d8cc0){var _0x5b5f08=typeof _0x2f5f03[_0x432f('0x8')]===_0x432f('0x9')&&typeof _0x2f5f03['limit']===_0x432f('0x9');var _0x5aaf1a=_0x5d8cc0[_0x432f('0xa')];var _0x340fe9=_0x5b5f08?0x0:_0x2f5f03[_0x432f('0x8')];var _0x13369a=_0x5b5f08?_0x5d8cc0[_0x432f('0xa')]:_0x2f5f03['offset']+_0x2f5f03[_0x432f('0xb')];var _0x5758d7;if(_0x13369a>=_0x5aaf1a){_0x13369a=_0x5aaf1a;_0x5758d7=0xc8;}else{_0x5758d7=0xce;}_0x355b02[_0x432f('0xc')](_0x5758d7);return _0x355b02['set'](_0x432f('0xd'),_0x340fe9+'-'+_0x13369a+'/'+_0x5aaf1a)[_0x432f('0xe')](_0x5d8cc0);}return null;};}function handleError(_0x53459c,_0x457389){_0x457389=_0x457389||0x1f4;return function(_0x29f7d2){logger['error'](_0x29f7d2[_0x432f('0xf')]);if(_0x29f7d2[_0x432f('0x10')]){delete _0x29f7d2['name'];}_0x53459c['status'](_0x457389)[_0x432f('0x11')](_0x29f7d2);};}exports[_0x432f('0x12')]=function(_0x34add6,_0x453725){var _0x419bfe=['mail',_0x432f('0x13'),_0x432f('0x14'),_0x432f('0x15'),_0x432f('0x16'),'whatsapp',_0x432f('0x17')];var _0x30f231={'count':0x0,'rows':[]},_0x42c2d2={},_0x243cf;Promise[_0x432f('0x18')]()[_0x432f('0x19')](function(){if(_0x34add6['query'][_0x432f('0x1a')]){if(!_['includes'](_0x419bfe,_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]()))throw new Error(_0x432f('0x1d'));_0x243cf=_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]();}var _0x1899e6=_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x40176d=_[_0x432f('0x20')](db[_0x1899e6]['rawAttributes'],function(_0x5940bd){return{'name':_0x5940bd[_0x432f('0x21')],'type':_0x5940bd['type'][_0x432f('0x22')]};});_0x42c2d2=qs['getOptions'](_0x40176d,_0x34add6);if(_0x34add6[_0x432f('0x23')][_0x432f('0x24')]===_0x432f('0x23')){var _0x89ea50={'params':{'id':_0x34add6[_0x432f('0x23')][_0x432f('0x25')]},'query':{'section':_0x243cf==='voice'&&_0x34add6[_0x432f('0x1b')][_0x432f('0x26')]==='outbound'?_0x432f('0x27'):_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x28'),'type':_0x34add6[_0x432f('0x1b')][_0x432f('0x26')],'nolimit':!![],'sort':_0x432f('0x10'),'filter':_0x34add6[_0x432f('0x1b')]['filter']}};return db[_0x432f('0x29')]['getResources'](_0x89ea50);}return db[_0x1899e6][_0x432f('0x2a')](_0x42c2d2);})['then'](function(_0x20404d){_0x30f231['count']=_0x20404d[_0x432f('0xa')];var _0x489ba6=_0x243cf===_0x432f('0x17')?client:routingClient;return _0x489ba6[_0x432f('0x2b')](_[_0x432f('0x1e')](_0x243cf)+'Queues',_0x34add6)[_0x432f('0x19')](function(_0x24406a){if(_0x24406a['error'])throw new Error(util['format'](_0x432f('0x2c'),_0x243cf));var _0x39dbcb=_0x24406a[_0x432f('0x2d')];var _0x3581c2=[_0x432f('0x2e'),_0x432f('0x2f'),'waiting','talking',_0x432f('0x30')];if(_0x243cf===_0x432f('0x17')&&_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x3581c2[_0x432f('0x32')](_0x432f('0x33'),_0x432f('0x34'),_0x432f('0x35'),_0x432f('0x36'),_0x432f('0x37'),_0x432f('0x38'),'startPredictive','startProgressive',_0x432f('0x39'),_0x432f('0x3a'),'erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval',_0x432f('0x3b'),_0x432f('0x3c'),'predictiveIntervalAvailable',_0x432f('0x3d'),_0x432f('0x3e'),_0x432f('0x3f'),'predictiveIntervalDroppedCallsCallersExit',_0x432f('0x40'),_0x432f('0x41'));}var _0x499e58=_0x20404d[_0x432f('0x42')][_0x432f('0x20')](function(_0x59e111){var _0x28da2e=_0x59e111[_0x432f('0x43')]({'plain':!![]});_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x44')]=0x0;_0x28da2e[_0x432f('0x2e')]=0x0;_0x28da2e[_0x432f('0x2f')]=0x0;_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x45')]=0x0;if(_0x243cf===_0x432f('0x17')){_0x28da2e[_0x432f('0x46')]=0x0;if(_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x28da2e['pTalking']=0x0;_0x28da2e[_0x432f('0x34')]=0x0;}}_0x28da2e[_0x432f('0x47')]=[];var _0x4f38e5=_[_0x432f('0x48')](_0x39dbcb['rows'],['id',_0x28da2e['id']]);if(_0x4f38e5)_[_0x432f('0x49')](_0x28da2e,_[_0x432f('0x4a')](_0x4f38e5,_0x3581c2));if(_0x243cf==='voice'){return _0x59e111['getAgents']({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b')],'joinTableAttributes':[],'raw':!![]})[_0x432f('0x19')](function(_0x121687){return _0x59e111[_0x432f('0x4c')]({'raw':!![]})['then'](function(_0x5dade1){for(var _0x53516d=0x0;_0x53516d<_0x121687[_0x432f('0x4d')];_0x53516d++){var _0x2c1bd1=_['find'](_0x5dade1,[_0x432f('0x4e'),_0x121687[_0x53516d]['id']]);var _0x841572={'id':_0x121687[_0x53516d]['id'],'name':_0x121687[_0x53516d][_0x432f('0x10')],'online':Boolean(_0x121687[_0x53516d][_0x432f('0x4b')]),'paused':_0x2c1bd1?Boolean(_0x2c1bd1[_0x432f('0x30')]):![]};if(_0x841572[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x841572[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e['agents'][_0x432f('0x32')](_0x841572);}return _0x28da2e;});});}else{var _0xd8264f='User'+_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x12b7a8=_0x243cf+_0x432f('0x4f');return db[_0xd8264f][_0x432f('0x50')]({'where':{[_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x51')]:_0x59e111['id']},'raw':!![]})[_0x432f('0x19')](function(_0x42022d){return db[_0x432f('0x52')][_0x432f('0x50')]({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b'),_0x12b7a8],'where':{'id':_[_0x432f('0x20')](_0x42022d,'UserId'),'role':'agent'},'raw':!![]});})[_0x432f('0x19')](function(_0x34dca6){for(var _0xcbdcc0=0x0;_0xcbdcc0<_0x34dca6[_0x432f('0x4d')];_0xcbdcc0++){var _0x12fd92={'id':_0x34dca6[_0xcbdcc0]['id'],'name':_0x34dca6[_0xcbdcc0]['name'],'online':Boolean(_0x34dca6[_0xcbdcc0][_0x432f('0x4b')]),'paused':Boolean(_0x34dca6[_0xcbdcc0][_0x12b7a8])};if(_0x12fd92[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x12fd92[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e[_0x432f('0x47')][_0x432f('0x32')](_0x12fd92);}return _0x28da2e;});}});return Promise['all'](_0x499e58);});})[_0x432f('0x19')](function(_0x2dd9c2){_0x30f231[_0x432f('0x42')]=_0x2dd9c2;return _0x30f231;})['then'](respondWithFilteredResult(_0x453725,_0x42c2d2))[_0x432f('0x53')](handleError(_0x453725,null));};
\ No newline at end of file
+var _0xadb5=['api','client','http','offset','undefined','limit','count','status','set','json','error','stack','name','send','getQueues','mail','chat','sms','openchannel','fax','whatsapp','voice','resolve','query','includes','toLowerCase','Invalid\x20channel','channel','startCase','map','rawAttributes','fieldName','type','key','getOptions','role','user','userProfileId','QueueCampaigns','Queues','filter','UserProfile','getResources','request','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','waiting','paused','outbound','push','originated','message','Trunk','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','rows','get','pTalking','merge','pick','getAgents','online','length','find','UserId','loggedInDb','agents','User','Queue','QueueId','agent','all','catch','lodash','../../components/parsers/qs','../../config/logger'];(function(_0x5bbc4a,_0x2a7277){var _0x358f78=function(_0x5e346e){while(--_0x5e346e){_0x5bbc4a['push'](_0x5bbc4a['shift']());}};_0x358f78(++_0x2a7277);}(_0xadb5,0xad));var _0x5adb=function(_0x4e3c44,_0xc31901){_0x4e3c44=_0x4e3c44-0x0;var _0x587160=_0xadb5[_0x4e3c44];return _0x587160;};'use strict';var util=require('util');var _=require(_0x5adb('0x0'));var jayson=require('jayson/promise');var qs=require(_0x5adb('0x1'));var logger=require(_0x5adb('0x2'))(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var client=jayson[_0x5adb('0x4')][_0x5adb('0x5')]({'port':0x232a});var routingClient=jayson[_0x5adb('0x4')]['http']({'port':0x232c});function respondWithFilteredResult(_0x35a5d3,_0x168d89){return function(_0x3e2555){if(_0x3e2555){var _0x3213e8=typeof _0x168d89[_0x5adb('0x6')]===_0x5adb('0x7')&&typeof _0x168d89[_0x5adb('0x8')]===_0x5adb('0x7');var _0x41261c=_0x3e2555[_0x5adb('0x9')];var _0x34f59d=_0x3213e8?0x0:_0x168d89[_0x5adb('0x6')];var _0x129f5a=_0x3213e8?_0x3e2555[_0x5adb('0x9')]:_0x168d89['offset']+_0x168d89['limit'];var _0x1a8f66;if(_0x129f5a>=_0x41261c){_0x129f5a=_0x41261c;_0x1a8f66=0xc8;}else{_0x1a8f66=0xce;}_0x35a5d3[_0x5adb('0xa')](_0x1a8f66);return _0x35a5d3[_0x5adb('0xb')]('Content-Range',_0x34f59d+'-'+_0x129f5a+'/'+_0x41261c)[_0x5adb('0xc')](_0x3e2555);}return null;};}function handleError(_0x56012f,_0x2a0b70){_0x2a0b70=_0x2a0b70||0x1f4;return function(_0x5433bf){logger[_0x5adb('0xd')](_0x5433bf[_0x5adb('0xe')]);if(_0x5433bf[_0x5adb('0xf')]){delete _0x5433bf['name'];}_0x56012f[_0x5adb('0xa')](_0x2a0b70)[_0x5adb('0x10')](_0x5433bf);};}exports[_0x5adb('0x11')]=function(_0x5263ec,_0x2312de){var _0x518823=[_0x5adb('0x12'),_0x5adb('0x13'),_0x5adb('0x14'),_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0x17'),_0x5adb('0x18')];var _0x42f4c6={'count':0x0,'rows':[]},_0xb953a6={},_0x529b65;Promise[_0x5adb('0x19')]()['then'](function(){if(_0x5263ec[_0x5adb('0x1a')]['channel']){if(!_[_0x5adb('0x1b')](_0x518823,_0x5263ec['query']['channel'][_0x5adb('0x1c')]()))throw new Error(_0x5adb('0x1d'));_0x529b65=_0x5263ec[_0x5adb('0x1a')][_0x5adb('0x1e')][_0x5adb('0x1c')]();}var _0x5af69d=_[_0x5adb('0x1f')](_0x529b65)+'Queue';var _0x4e9f16=_[_0x5adb('0x20')](db[_0x5af69d][_0x5adb('0x21')],function(_0x1a38d3){return{'name':_0x1a38d3[_0x5adb('0x22')],'type':_0x1a38d3[_0x5adb('0x23')][_0x5adb('0x24')]};});_0xb953a6=qs[_0x5adb('0x25')](_0x4e9f16,_0x5263ec);if(_0x5263ec['user'][_0x5adb('0x26')]===_0x5adb('0x27')){var _0x3220cd={'params':{'id':_0x5263ec[_0x5adb('0x27')][_0x5adb('0x28')]},'query':{'section':_0x529b65==='voice'&&_0x5263ec[_0x5adb('0x1a')][_0x5adb('0x23')]==='outbound'?_0x5adb('0x29'):_[_0x5adb('0x1f')](_0x529b65)+_0x5adb('0x2a'),'type':_0x5263ec['query'][_0x5adb('0x23')],'nolimit':!![],'sort':_0x5adb('0xf'),'filter':_0x5263ec[_0x5adb('0x1a')][_0x5adb('0x2b')]}};return db[_0x5adb('0x2c')][_0x5adb('0x2d')](_0x3220cd);}return db[_0x5af69d]['findAndCountAll'](_0xb953a6);})['then'](function(_0x5d457e){_0x42f4c6[_0x5adb('0x9')]=_0x5d457e[_0x5adb('0x9')];var _0x60a672=_0x529b65===_0x5adb('0x18')?client:routingClient;return _0x60a672[_0x5adb('0x2e')](_['startCase'](_0x529b65)+_0x5adb('0x2a'),_0x5263ec)[_0x5adb('0x2f')](function(_0x372da1){if(_0x372da1[_0x5adb('0xd')])throw new Error(util[_0x5adb('0x30')](_0x5adb('0x31'),_0x529b65));var _0x28190d=_0x372da1[_0x5adb('0x32')];var _0x138bf6=[_0x5adb('0x33'),'available',_0x5adb('0x34'),'talking',_0x5adb('0x35')];if(_0x529b65===_0x5adb('0x18')&&_0x5263ec['query'][_0x5adb('0x23')]===_0x5adb('0x36')){_0x138bf6[_0x5adb('0x37')]('pTalking',_0x5adb('0x38'),_0x5adb('0x39'),'dialActive','dialMethod',_0x5adb('0x3a'),'startPredictive',_0x5adb('0x3b'),_0x5adb('0x3c'),_0x5adb('0x3d'),_0x5adb('0x3e'),_0x5adb('0x3f'),'dialPredictiveInterval',_0x5adb('0x40'),_0x5adb('0x41'),_0x5adb('0x42'),'predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls',_0x5adb('0x43'),_0x5adb('0x44'),'predictiveIntervalAvgHoldtime',_0x5adb('0x45'));}var _0x4a4260=_0x5d457e[_0x5adb('0x46')]['map'](function(_0x11cb37){var _0x4d052f=_0x11cb37[_0x5adb('0x47')]({'plain':!![]});_0x4d052f[_0x5adb('0x35')]=0x0;_0x4d052f['loggedInDb']=0x0;_0x4d052f[_0x5adb('0x33')]=0x0;_0x4d052f['available']=0x0;_0x4d052f[_0x5adb('0x35')]=0x0;_0x4d052f[_0x5adb('0x34')]=0x0;if(_0x529b65===_0x5adb('0x18')){_0x4d052f['talking']=0x0;if(_0x5263ec[_0x5adb('0x1a')][_0x5adb('0x23')]===_0x5adb('0x36')){_0x4d052f[_0x5adb('0x48')]=0x0;_0x4d052f[_0x5adb('0x38')]=0x0;}}_0x4d052f['agents']=[];var _0x50fe99=_['find'](_0x28190d['rows'],['id',_0x4d052f['id']]);if(_0x50fe99)_[_0x5adb('0x49')](_0x4d052f,_[_0x5adb('0x4a')](_0x50fe99,_0x138bf6));if(_0x529b65===_0x5adb('0x18')){return _0x11cb37[_0x5adb('0x4b')]({'attributes':['id',_0x5adb('0xf'),_0x5adb('0x4c')],'joinTableAttributes':[],'raw':!![]})[_0x5adb('0x2f')](function(_0x3bf282){return _0x11cb37['getMembers']({'raw':!![]})['then'](function(_0x27dbb7){for(var _0x48eb26=0x0;_0x48eb26<_0x3bf282[_0x5adb('0x4d')];_0x48eb26++){var _0x3300ae=_[_0x5adb('0x4e')](_0x27dbb7,[_0x5adb('0x4f'),_0x3bf282[_0x48eb26]['id']]);var _0xdfecfd={'id':_0x3bf282[_0x48eb26]['id'],'name':_0x3bf282[_0x48eb26]['name'],'online':Boolean(_0x3bf282[_0x48eb26][_0x5adb('0x4c')]),'paused':_0x3300ae?Boolean(_0x3300ae[_0x5adb('0x35')]):![]};if(_0xdfecfd['online'])_0x4d052f[_0x5adb('0x50')]++;if(_0xdfecfd[_0x5adb('0x35')])_0x4d052f['paused']++;_0x4d052f[_0x5adb('0x51')][_0x5adb('0x37')](_0xdfecfd);}return _0x4d052f;});});}else{var _0x1d6bef=_0x5adb('0x52')+_[_0x5adb('0x1f')](_0x529b65)+_0x5adb('0x53');var _0x33ef58=_0x529b65+'Pause';return db[_0x1d6bef]['findAll']({'where':{[_[_0x5adb('0x1f')](_0x529b65)+_0x5adb('0x54')]:_0x11cb37['id']},'raw':!![]})[_0x5adb('0x2f')](function(_0xb79d85){return db['User']['findAll']({'attributes':['id',_0x5adb('0xf'),_0x5adb('0x4c'),_0x33ef58],'where':{'id':_[_0x5adb('0x20')](_0xb79d85,_0x5adb('0x4f')),'role':_0x5adb('0x55')},'raw':!![]});})['then'](function(_0x182cbc){for(var _0x437f52=0x0;_0x437f52<_0x182cbc['length'];_0x437f52++){var _0x7786c4={'id':_0x182cbc[_0x437f52]['id'],'name':_0x182cbc[_0x437f52][_0x5adb('0xf')],'online':Boolean(_0x182cbc[_0x437f52][_0x5adb('0x4c')]),'paused':Boolean(_0x182cbc[_0x437f52][_0x33ef58])};if(_0x7786c4[_0x5adb('0x4c')])_0x4d052f[_0x5adb('0x50')]++;if(_0x7786c4[_0x5adb('0x35')])_0x4d052f[_0x5adb('0x35')]++;_0x4d052f[_0x5adb('0x51')]['push'](_0x7786c4);}return _0x4d052f;});}});return Promise[_0x5adb('0x56')](_0x4a4260);});})['then'](function(_0x51bc49){_0x42f4c6['rows']=_0x51bc49;return _0x42f4c6;})[_0x5adb('0x2f')](respondWithFilteredResult(_0x2312de,_0xb953a6))[_0x5adb('0x57')](handleError(_0x2312de,null));};
\ No newline at end of file
index 04ab11b..bc688c5 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(_0x2142c8,_0x3001eb){var _0x4286e9=function(_0x43d768){while(--_0x43d768){_0x2142c8['push'](_0x2142c8['shift']());}};_0x4286e9(++_0x3001eb);}(_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
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xeca45b,_0x400b85){var _0xccf975=function(_0x308044){while(--_0x308044){_0xeca45b['push'](_0xeca45b['shift']());}};_0xccf975(++_0x400b85);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x152449,_0x49f41d){_0x152449=_0x152449-0x0;var _0x5b58b2=_0xcb91[_0x152449];return _0x5b58b2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 0e27a9b..5eaf64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16ce=['INTEGER','STRING','DATE','exports'];(function(_0x2bdb97,_0x107b7d){var _0x5c6fe4=function(_0xdf876d){while(--_0xdf876d){_0x2bdb97['push'](_0x2bdb97['shift']());}};_0x5c6fe4(++_0x107b7d);}(_0x16ce,0xfb));var _0xe16c=function(_0x45be21,_0x1541a0){_0x45be21=_0x45be21-0x0;var _0x36e131=_0x16ce[_0x45be21];return _0x36e131;};'use strict';var Sequelize=require('sequelize');module[_0xe16c('0x0')]={'state':{'type':Sequelize[_0xe16c('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xe16c('0x2')]},'scheduledat':{'type':Sequelize[_0xe16c('0x3')]},'uniqueid':{'type':Sequelize[_0xe16c('0x2')]},'starttime':{'type':Sequelize[_0xe16c('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xe16c('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa899=['STRING','sequelize','exports','INTEGER','DATE'];(function(_0x287439,_0x1a3c46){var _0x2cfc83=function(_0x2ecff4){while(--_0x2ecff4){_0x287439['push'](_0x287439['shift']());}};_0x2cfc83(++_0x1a3c46);}(_0xa899,0x155));var _0x9a89=function(_0x3de873,_0x174b5f){_0x3de873=_0x3de873-0x0;var _0x380b8c=_0xa899[_0x3de873];return _0x380b8c;};'use strict';var Sequelize=require(_0x9a89('0x0'));module[_0x9a89('0x1')]={'state':{'type':Sequelize[_0x9a89('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x9a89('0x3')]},'uniqueid':{'type':Sequelize[_0x9a89('0x4')]},'starttime':{'type':Sequelize[_0x9a89('0x3')]},'responsetime':{'type':Sequelize[_0x9a89('0x3')]},'ringtime':{'type':Sequelize[_0x9a89('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x9a89('0x4')]},'campaigntype':{'type':Sequelize[_0x9a89('0x4')]},'membername':{'type':Sequelize[_0x9a89('0x4')]}};
\ No newline at end of file
index 8553eff..2be3b18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc383=['exports','define','report_agent_preview','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2c4656,_0x2517f9){var _0x5ea39b=function(_0x2efb8f){while(--_0x2efb8f){_0x2c4656['push'](_0x2c4656['shift']());}};_0x5ea39b(++_0x2517f9);}(_0xc383,0x93));var _0x3c38=function(_0x4314b3,_0x5e0fca){_0x4314b3=_0x4314b3-0x0;var _0x4491bc=_0xc383[_0x4314b3];return _0x4491bc;};'use strict';var _=require('lodash');var util=require(_0x3c38('0x0'));var logger=require(_0x3c38('0x1'))(_0x3c38('0x2'));var moment=require(_0x3c38('0x3'));var BPromise=require(_0x3c38('0x4'));var rp=require(_0x3c38('0x5'));var fs=require('fs');var path=require(_0x3c38('0x6'));var rimraf=require(_0x3c38('0x7'));var config=require(_0x3c38('0x8'));var attributes=require('./reportAgentPreview.attributes');module[_0x3c38('0x9')]=function(_0x1277b4,_0x334350){return _0x1277b4[_0x3c38('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x3c38('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1dd4=['path','rimraf','../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','api','moment','bluebird','request-promise'];(function(_0x363501,_0x26e122){var _0x4fe039=function(_0xb64106){while(--_0xb64106){_0x363501['push'](_0x363501['shift']());}};_0x4fe039(++_0x26e122);}(_0x1dd4,0x1a9));var _0x41dd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1dd4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x41dd('0x0'));var moment=require(_0x41dd('0x1'));var BPromise=require(_0x41dd('0x2'));var rp=require(_0x41dd('0x3'));var fs=require('fs');var path=require(_0x41dd('0x4'));var rimraf=require(_0x41dd('0x5'));var config=require(_0x41dd('0x6'));var attributes=require('./reportAgentPreview.attributes');module[_0x41dd('0x7')]=function(_0x3fc171,_0x30fc3c){return _0x3fc171[_0x41dd('0x8')](_0x41dd('0x9'),attributes,{'tableName':_0x41dd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc79246..748ccb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3858=['debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent'];(function(_0x1e0b29,_0x1f4633){var _0x18f4d9=function(_0x32eb93){while(--_0x32eb93){_0x1e0b29['push'](_0x1e0b29['shift']());}};_0x18f4d9(++_0x1f4633);}(_0x3858,0x17a));var _0x8385=function(_0x1d9530,_0x47d0d0){_0x1d9530=_0x1d9530-0x0;var _0x1d91eb=_0x3858[_0x1d9530];return _0x1d91eb;};'use strict';var _=require('lodash');var util=require(_0x8385('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8385('0x1'));var db=require(_0x8385('0x2'))['db'];var utils=require(_0x8385('0x3'));var logger=require(_0x8385('0x4'))(_0x8385('0x5'));var config=require(_0x8385('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8385('0x7')][_0x8385('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4acfe9,_0x1c9d2f,_0x6074ad){return new BPromise(function(_0x1d894c,_0x24f401){return client[_0x8385('0x9')](_0x4acfe9,_0x6074ad)[_0x8385('0xa')](function(_0x14e7e4){logger[_0x8385('0xb')](_0x8385('0xc'),_0x1c9d2f,_0x8385('0xd'));logger[_0x8385('0xe')](_0x8385('0xf'),_0x1c9d2f,_0x8385('0xd'),JSON[_0x8385('0x10')](_0x14e7e4));if(_0x14e7e4[_0x8385('0x11')]){if(_0x14e7e4[_0x8385('0x11')][_0x8385('0x12')]===0x1f4){logger[_0x8385('0x11')](_0x8385('0xc'),_0x1c9d2f,_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);return _0x24f401(_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);}logger[_0x8385('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x1c9d2f,_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);return _0x1d894c(_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);}else{logger[_0x8385('0xb')](_0x8385('0xc'),_0x1c9d2f,_0x8385('0xd'));_0x1d894c(_0x14e7e4[_0x8385('0x14')][_0x8385('0x13')]);}})[_0x8385('0x15')](function(_0x59580e){logger[_0x8385('0x11')](_0x8385('0xc'),_0x1c9d2f,_0x59580e);_0x24f401(_0x59580e);});});}exports['CreateReportAgentPreview']=function(_0x372141){var _0x3645bd=this;return new Promise(function(_0x32c75c,_0x5cfe45){return db[_0x8385('0x16')][_0x8385('0x17')](_0x372141[_0x8385('0x18')],{'raw':_0x372141['options']?_0x372141[_0x8385('0x19')][_0x8385('0x1a')]===undefined?!![]:![]:!![]})[_0x8385('0xa')](function(_0x15b115){logger[_0x8385('0xb')]('CreateReportAgentPreview',_0x372141);logger[_0x8385('0xe')](_0x8385('0x1b'),_0x372141,JSON[_0x8385('0x10')](_0x15b115));_0x32c75c(_0x15b115);})[_0x8385('0x15')](function(_0x45076e){logger[_0x8385('0x11')](_0x8385('0x1b'),_0x45076e[_0x8385('0x13')],_0x372141);_0x5cfe45(_0x3645bd[_0x8385('0x11')](0x1f4,_0x45076e[_0x8385('0x13')]));});});};
\ No newline at end of file
+var _0x889c=['code','message','result','catch','ReportAgentPreview','options','raw','then','CreateReportAgentPreview','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x37e1fe,_0x18fc02){var _0x5d4ce0=function(_0x4c57ac){while(--_0x4c57ac){_0x37e1fe['push'](_0x37e1fe['shift']());}};_0x5d4ce0(++_0x18fc02);}(_0x889c,0x1cb));var _0xc889=function(_0x49319a,_0x1059cf){_0x49319a=_0x49319a-0x0;var _0x42c021=_0x889c[_0x49319a];return _0x42c021;};'use strict';var _=require(_0xc889('0x0'));var util=require('util');var moment=require(_0xc889('0x1'));var BPromise=require(_0xc889('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc889('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc889('0x4'));var logger=require(_0xc889('0x5'))(_0xc889('0x6'));var config=require(_0xc889('0x7'));var jayson=require(_0xc889('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4367b8,_0x15b97c,_0x22b22e){return new BPromise(function(_0xca1fd2,_0x14c0d9){return client['request'](_0x4367b8,_0x22b22e)['then'](function(_0x255a36){logger[_0xc889('0x9')](_0xc889('0xa'),_0x15b97c,_0xc889('0xb'));logger[_0xc889('0xc')](_0xc889('0xd'),_0x15b97c,_0xc889('0xb'),JSON[_0xc889('0xe')](_0x255a36));if(_0x255a36[_0xc889('0xf')]){if(_0x255a36[_0xc889('0xf')][_0xc889('0x10')]===0x1f4){logger['error'](_0xc889('0xa'),_0x15b97c,_0x255a36[_0xc889('0xf')][_0xc889('0x11')]);return _0x14c0d9(_0x255a36[_0xc889('0xf')][_0xc889('0x11')]);}logger[_0xc889('0xf')](_0xc889('0xa'),_0x15b97c,_0x255a36[_0xc889('0xf')][_0xc889('0x11')]);return _0xca1fd2(_0x255a36['error'][_0xc889('0x11')]);}else{logger[_0xc889('0x9')](_0xc889('0xa'),_0x15b97c,_0xc889('0xb'));_0xca1fd2(_0x255a36[_0xc889('0x12')][_0xc889('0x11')]);}})[_0xc889('0x13')](function(_0x34aa5f){logger[_0xc889('0xf')]('ReportAgentPreview,\x20%s,\x20%s',_0x15b97c,_0x34aa5f);_0x14c0d9(_0x34aa5f);});});}exports['CreateReportAgentPreview']=function(_0x209a91){var _0x930506=this;return new Promise(function(_0x43ccf5,_0x4845ee){return db[_0xc889('0x14')]['create'](_0x209a91['body'],{'raw':_0x209a91[_0xc889('0x15')]?_0x209a91[_0xc889('0x15')][_0xc889('0x16')]===undefined?!![]:![]:!![]})[_0xc889('0x17')](function(_0x2c388a){logger['info'](_0xc889('0x18'),_0x209a91);logger[_0xc889('0xc')]('CreateReportAgentPreview',_0x209a91,JSON[_0xc889('0xe')](_0x2c388a));_0x43ccf5(_0x2c388a);})['catch'](function(_0x41e198){logger[_0xc889('0xf')](_0xc889('0x18'),_0x41e198[_0xc889('0x11')],_0x209a91);_0x4845ee(_0x930506['error'](0x1f4,_0x41e198[_0xc889('0x11')]));});});};
\ No newline at end of file
index 7b991c9..e6f47ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9b9=['get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/:id','/outbound','/outbound/channels','outboundChannels','/agents','put','agentCapacity','telephones','/trunks','trunks','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','chat','/chat/queues/:id','fax','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','util','path','express','../../components/auth/service','/voice/channels','isAuthenticated','voiceChannels'];(function(_0x6b95ff,_0x35167){var _0x360a35=function(_0x51d654){while(--_0x51d654){_0x6b95ff['push'](_0x6b95ff['shift']());}};_0x360a35(++_0x35167);}(_0xd9b9,0x111));var _0x9d9b=function(_0x5c3a74,_0x1de19f){_0x5c3a74=_0x5c3a74-0x0;var _0x5d3f11=_0xd9b9[_0x5c3a74];return _0x5d3f11;};'use strict';var multer=require('multer');var util=require(_0x9d9b('0x0'));var path=require(_0x9d9b('0x1'));var express=require(_0x9d9b('0x2'));var router=express['Router']();var auth=require(_0x9d9b('0x3'));var controller=require('./rpc.controller');router['get'](_0x9d9b('0x4'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x6')]);router[_0x9d9b('0x7')](_0x9d9b('0x8'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x9')]);router['get']('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0x9d9b('0xa')]);router[_0x9d9b('0x7')](_0x9d9b('0xb'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0xc')]);router[_0x9d9b('0x7')](_0x9d9b('0xd'),auth['isAuthenticated'](),controller[_0x9d9b('0xe')]);router[_0x9d9b('0x7')](_0x9d9b('0xf'),auth[_0x9d9b('0x5')](),controller['mailQueues']);router[_0x9d9b('0x7')]('/mail/accounts',auth['isAuthenticated'](),controller['mailAccounts']);router[_0x9d9b('0x7')]('/openchannel/queues',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x10')]);router[_0x9d9b('0x7')]('/sms/queues',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x11')]);router[_0x9d9b('0x7')](_0x9d9b('0x12'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x13')]);router[_0x9d9b('0x7')]('/fax/queues',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x14')]);router[_0x9d9b('0x7')]('/voice/queues/preview/:id',auth['isAuthenticated'](),controller[_0x9d9b('0x15')]);router['get'](_0x9d9b('0x16'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x17')]);router[_0x9d9b('0x7')](_0x9d9b('0x18'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x19')]);router[_0x9d9b('0x7')](_0x9d9b('0x1a'),auth[_0x9d9b('0x5')](),controller['voiceQueuesChannelHangup']);router[_0x9d9b('0x7')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x9d9b('0x5')](),controller['voiceQueuesChannelRedirect']);router[_0x9d9b('0x7')](_0x9d9b('0x1b'),auth[_0x9d9b('0x5')](),controller['showVoiceQueues']);router['put'](_0x9d9b('0x1b'),auth[_0x9d9b('0x5')](),controller['updateVoiceQueue']);router[_0x9d9b('0x7')](_0x9d9b('0x1c'),auth[_0x9d9b('0x5')](),controller['outbound']);router[_0x9d9b('0x7')](_0x9d9b('0x1d'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x1e')]);router[_0x9d9b('0x7')](_0x9d9b('0x1f'),auth[_0x9d9b('0x5')](),controller['agents']);router[_0x9d9b('0x20')]('/agents/:id/capacity',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x21')]);router[_0x9d9b('0x7')]('/telephones',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x22')]);router[_0x9d9b('0x7')](_0x9d9b('0x23'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x24')]);router['get']('/campaigns',auth[_0x9d9b('0x5')](),controller['campaigns']);router[_0x9d9b('0x7')](_0x9d9b('0x25'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x26')]);router[_0x9d9b('0x7')](_0x9d9b('0x27'),auth[_0x9d9b('0x5')](),controller['chatQueuesWaitingInteractions']);router[_0x9d9b('0x7')](_0x9d9b('0x28'),auth['isAuthenticated'](),controller[_0x9d9b('0x29')]);router[_0x9d9b('0x7')](_0x9d9b('0x2a'),auth['isAuthenticated'](),controller[_0x9d9b('0x2b')]);router['get'](_0x9d9b('0x2c'),auth['isAuthenticated'](),controller[_0x9d9b('0x2d')]);router[_0x9d9b('0x7')](_0x9d9b('0x2e'),auth[_0x9d9b('0x5')](),controller['smsQueuesWaitingInteractions']);router[_0x9d9b('0x7')](_0x9d9b('0x2f'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x30')]);router[_0x9d9b('0x7')]('/fax/queues/waitinginteractions',auth[_0x9d9b('0x5')](),controller['faxQueuesWaitingInteractions']);router[_0x9d9b('0x31')](_0x9d9b('0x32'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')]('mail'));router[_0x9d9b('0x7')](_0x9d9b('0x34'),auth[_0x9d9b('0x5')](),controller['showMailQueues']);router[_0x9d9b('0x31')]('/chat/queues/:id/notify',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')](_0x9d9b('0x35')));router['get'](_0x9d9b('0x36'),auth[_0x9d9b('0x5')](),controller['showChatQueues']);router['post']('/fax/queues/:id/notify',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')](_0x9d9b('0x37')));router[_0x9d9b('0x7')]('/fax/queues/:id',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x38')]);router[_0x9d9b('0x31')](_0x9d9b('0x39'),auth['isAuthenticated'](),controller[_0x9d9b('0x33')]('openchannel'));router['get'](_0x9d9b('0x3a'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x3b')]);router[_0x9d9b('0x31')](_0x9d9b('0x3c'),auth['isAuthenticated'](),controller[_0x9d9b('0x33')](_0x9d9b('0x3d')));router[_0x9d9b('0x31')]('/whatsapp/queues/:id/notify',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')](_0x9d9b('0x3e')));router[_0x9d9b('0x7')](_0x9d9b('0x3f'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x40')]);router[_0x9d9b('0x7')](_0x9d9b('0x41'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x42')]);router[_0x9d9b('0x31')](_0x9d9b('0x43'),auth['isAuthenticated'](),controller[_0x9d9b('0x44')]);module[_0x9d9b('0x45')]=router;
\ No newline at end of file
+var _0xaf90=['chatQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','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','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','/chat/queues/:id/notify','showChatQueues','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','express','Router','../../components/auth/service','./rpc.controller','/voice/channels','isAuthenticated','voiceChannels','get','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues'];(function(_0x7c70f6,_0x15d0ba){var _0x6e0ffc=function(_0x27d997){while(--_0x27d997){_0x7c70f6['push'](_0x7c70f6['shift']());}};_0x6e0ffc(++_0x15d0ba);}(_0xaf90,0x1e3));var _0x0af9=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xaf90[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x0af9('0x0'));var util=require('util');var path=require('path');var express=require(_0x0af9('0x1'));var router=express[_0x0af9('0x2')]();var auth=require(_0x0af9('0x3'));var controller=require(_0x0af9('0x4'));router['get'](_0x0af9('0x5'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x7')]);router[_0x0af9('0x8')]('/voice/channels/:uniqueid/mixmonitor',auth[_0x0af9('0x6')](),controller[_0x0af9('0x9')]);router['get'](_0x0af9('0xa'),auth[_0x0af9('0x6')](),controller[_0x0af9('0xb')]);router[_0x0af9('0x8')](_0x0af9('0xc'),auth['isAuthenticated'](),controller[_0x0af9('0xd')]);router['get'](_0x0af9('0xe'),auth[_0x0af9('0x6')](),controller[_0x0af9('0xf')]);router[_0x0af9('0x8')]('/mail/queues',auth[_0x0af9('0x6')](),controller['mailQueues']);router[_0x0af9('0x8')](_0x0af9('0x10'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x11')]);router['get'](_0x0af9('0x12'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x13')]);router[_0x0af9('0x8')](_0x0af9('0x14'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x15')]);router[_0x0af9('0x8')](_0x0af9('0x16'),auth['isAuthenticated'](),controller[_0x0af9('0x17')]);router['get'](_0x0af9('0x18'),auth['isAuthenticated'](),controller[_0x0af9('0x19')]);router[_0x0af9('0x8')]('/voice/queues/preview/:id',auth[_0x0af9('0x6')](),controller[_0x0af9('0x1a')]);router[_0x0af9('0x8')](_0x0af9('0x1b'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x1c')]);router[_0x0af9('0x8')](_0x0af9('0x1d'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x1e')]);router[_0x0af9('0x8')](_0x0af9('0x1f'),auth[_0x0af9('0x6')](),controller['voiceQueuesChannelHangup']);router[_0x0af9('0x8')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x0af9('0x6')](),controller[_0x0af9('0x20')]);router[_0x0af9('0x8')](_0x0af9('0x21'),auth['isAuthenticated'](),controller[_0x0af9('0x22')]);router[_0x0af9('0x23')](_0x0af9('0x21'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x24')]);router[_0x0af9('0x8')](_0x0af9('0x25'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x26')]);router[_0x0af9('0x8')](_0x0af9('0x27'),auth['isAuthenticated'](),controller[_0x0af9('0x28')]);router[_0x0af9('0x8')](_0x0af9('0x29'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x2a')]);router[_0x0af9('0x23')](_0x0af9('0x2b'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x2c')]);router[_0x0af9('0x8')](_0x0af9('0x2d'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x2e')]);router[_0x0af9('0x8')](_0x0af9('0x2f'),auth['isAuthenticated'](),controller[_0x0af9('0x30')]);router[_0x0af9('0x8')](_0x0af9('0x31'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x32')]);router[_0x0af9('0x8')](_0x0af9('0x33'),auth['isAuthenticated'](),controller[_0x0af9('0x34')]);router[_0x0af9('0x8')](_0x0af9('0x35'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x36')]);router[_0x0af9('0x8')]('/mail/queues/waitinginteractions',auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router['get'](_0x0af9('0x37'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x38')]);router[_0x0af9('0x8')](_0x0af9('0x39'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x3a')]);router[_0x0af9('0x8')](_0x0af9('0x3b'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x3c')]);router['get'](_0x0af9('0x3d'),auth['isAuthenticated'](),controller[_0x0af9('0x3e')]);router[_0x0af9('0x8')]('/fax/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x0af9('0x3f')]);router[_0x0af9('0x40')](_0x0af9('0x41'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x42')](_0x0af9('0x43')));router[_0x0af9('0x8')](_0x0af9('0x44'),auth[_0x0af9('0x6')](),controller['showMailQueues']);router[_0x0af9('0x40')](_0x0af9('0x45'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x42')]('chat'));router['get']('/chat/queues/:id',auth['isAuthenticated'](),controller[_0x0af9('0x46')]);router[_0x0af9('0x40')]('/fax/queues/:id/notify',auth[_0x0af9('0x6')](),controller[_0x0af9('0x42')]('fax'));router[_0x0af9('0x8')](_0x0af9('0x47'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x48')]);router[_0x0af9('0x40')](_0x0af9('0x49'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x42')]('openchannel'));router[_0x0af9('0x8')](_0x0af9('0x4a'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x4b')]);router[_0x0af9('0x40')](_0x0af9('0x4c'),auth['isAuthenticated'](),controller[_0x0af9('0x42')]('sms'));router[_0x0af9('0x40')](_0x0af9('0x4d'),auth[_0x0af9('0x6')](),controller['queueNotify']('whatsapp'));router[_0x0af9('0x8')](_0x0af9('0x4e'),auth['isAuthenticated'](),controller[_0x0af9('0x4f')]);router[_0x0af9('0x8')]('/whatsapp/queues/:id',auth[_0x0af9('0x6')](),controller[_0x0af9('0x50')]);router[_0x0af9('0x40')](_0x0af9('0x51'),auth[_0x0af9('0x6')](),controller[_0x0af9('0x52')]);module['exports']=router;
\ No newline at end of file
index 5b0ff33..2cf377c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','ChatQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','capitalize','Queue','findOne','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','InteractionId','From','Account','QueueId','TransferReport','create','agentNotify','Website','Agent\x20not\x20found','MessageId','Start','moment','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','then','error','code','catch','status','json','stack','name','send','isNil','rows','find','voiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','query','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','Agents','interaction','user','MemberReport','findAll','INTERACTION','length','findOrCreate','SIP/%s','format','YYYY-MM-DD\x20HH:mm:ss','agent','internal','capacity','telephones','Telephones','trunks','Trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x1f6c07,_0x15246f){_0x1f6c07=_0x1f6c07-0x0;var _0x1f3db8=_0xdbf5[_0x1f6c07];return _0x1f3db8;};'use strict';var BPromise=require('bluebird');var moment=require(_0x5dbf('0x0'));var _=require('lodash');var util=require('util');var db=require(_0x5dbf('0x1'))['db'];var logger=require(_0x5dbf('0x2'))(_0x5dbf('0x3'));var jayson=require(_0x5dbf('0x4'));var amiClient=jayson[_0x5dbf('0x5')][_0x5dbf('0x6')]({'port':0x232a});var mailClient=jayson[_0x5dbf('0x5')][_0x5dbf('0x6')]({'port':0x232b});var routingClient=jayson[_0x5dbf('0x5')][_0x5dbf('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x209b7d,_0x88128e,_0x93e657){return new BPromise(function(_0x52b039,_0x134810){var _0x501cb1=_0x93e657?_0x93e657:amiClient;return _0x501cb1[_0x5dbf('0x7')](_0x209b7d,_0x88128e)[_0x5dbf('0x8')](function(_0x264007){if(_0x264007[_0x5dbf('0x9')]){if(_0x264007['error'][_0x5dbf('0xa')]===0x1f4){return _0x134810(_0x264007['error']['message']);}return _0x52b039(_0x264007[_0x5dbf('0x9')]['message']);}else{_0x52b039(_0x264007['result']);}})[_0x5dbf('0xb')](function(_0x490b38){_0x134810(_0x490b38);});});}function respondWithResult(_0x182cec,_0x2bb7ed){_0x2bb7ed=_0x2bb7ed||0xc8;return function(_0x1453a9){if(_0x1453a9){return _0x182cec[_0x5dbf('0xc')](_0x2bb7ed)[_0x5dbf('0xd')](_0x1453a9);}return _0x182cec['sendStatus'](0x194);};}function handleError(_0x4803ca,_0x2b4e1c){_0x2b4e1c=_0x2b4e1c||0x1f4;return function(_0x3480c8){logger['error'](_0x3480c8[_0x5dbf('0xe')]);if(_0x3480c8[_0x5dbf('0xf')]){delete _0x3480c8[_0x5dbf('0xf')];}_0x4803ca[_0x5dbf('0xc')](_0x2b4e1c)[_0x5dbf('0x10')](_0x3480c8);};}function findById(_0x472eb9){return function(_0x2d32cc){if(!_['isNil'](_0x472eb9)&&!_['isNil'](_0x2d32cc)&&!_[_0x5dbf('0x11')](_0x2d32cc[_0x5dbf('0x12')])){return _[_0x5dbf('0x13')](_0x2d32cc[_0x5dbf('0x12')],function(_0x20c2b0){return _0x20c2b0['id']==_0x472eb9;});}return null;};}exports['voiceChannels']=function(_0x11cd00,_0x4dd03c){return respondWithRpcPromise('VoiceChannels',_0x11cd00['query'])[_0x5dbf('0x8')](respondWithResult(_0x4dd03c,null))[_0x5dbf('0xb')](handleError(_0x4dd03c,null));};exports[_0x5dbf('0x14')]=function(_0x2ab57c,_0x1e3cce){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x5dbf('0x15')](_0x2ab57c['query'],_0x2ab57c[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x1e3cce,null))[_0x5dbf('0xb')](handleError(_0x1e3cce,null));};exports[_0x5dbf('0x17')]=function(_0x3b763c,_0x2f154e){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x5dbf('0x15')](_0x3b763c[_0x5dbf('0x18')],_0x3b763c[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x2f154e,null))[_0x5dbf('0xb')](handleError(_0x2f154e,null));};exports[_0x5dbf('0x19')]=function(_0x290456,_0x20ab1b){return respondWithRpcPromise(_0x5dbf('0x1a'),_0x290456[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x20ab1b,null))[_0x5dbf('0xb')](handleError(_0x20ab1b,null));};exports[_0x5dbf('0x1b')]=function(_0x407741,_0x729d8f){return respondWithRpcPromise(_0x5dbf('0x1a'),_0x407741[_0x5dbf('0x18')])[_0x5dbf('0x8')](findById(_0x407741[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x729d8f,null))[_0x5dbf('0xb')](handleError(_0x729d8f,null));};exports[_0x5dbf('0x1c')]=function(_0x21cd00,_0x5768b7){return respondWithRpcPromise(_0x5dbf('0x1d'),_[_0x5dbf('0x15')](_0x21cd00[_0x5dbf('0x1e')],_0x21cd00[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x5768b7,null))[_0x5dbf('0xb')](handleError(_0x5768b7,null));};exports[_0x5dbf('0x1f')]=function(_0x31d57a,_0x406ce6){return respondWithRpcPromise(_0x5dbf('0x20'),_[_0x5dbf('0x15')](_0x31d57a['query'],_0x31d57a['params']))[_0x5dbf('0x8')](respondWithResult(_0x406ce6,null))[_0x5dbf('0xb')](handleError(_0x406ce6,null));};exports[_0x5dbf('0x21')]=function(_0x3b73ad,_0x37cf25){return respondWithRpcPromise('VoiceQueuesChannels',_0x3b73ad['query'])[_0x5dbf('0x8')](respondWithResult(_0x37cf25,null))[_0x5dbf('0xb')](handleError(_0x37cf25,null));};exports['voiceQueuesChannel']=function(_0x3531a2,_0x2a0491){return respondWithRpcPromise(_0x5dbf('0x22'),_[_0x5dbf('0x15')](_0x3531a2[_0x5dbf('0x18')],_0x3531a2['params']))[_0x5dbf('0x8')](respondWithResult(_0x2a0491,null))[_0x5dbf('0xb')](handleError(_0x2a0491,null));};exports[_0x5dbf('0x23')]=function(_0x273577,_0x3a8196){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x5dbf('0x15')](_0x273577[_0x5dbf('0x18')],_0x273577[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x3a8196,null))['catch'](handleError(_0x3a8196,null));};exports[_0x5dbf('0x24')]=function(_0x1e9a4e,_0x302dda){return respondWithRpcPromise(_0x5dbf('0x25'),_[_0x5dbf('0x15')](_0x1e9a4e[_0x5dbf('0x18')],_0x1e9a4e[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x302dda,null))[_0x5dbf('0xb')](handleError(_0x302dda,null));};exports[_0x5dbf('0x26')]=function(_0x1ba835,_0x51c667){return respondWithRpcPromise(_0x5dbf('0x27'),_0x1ba835[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x51c667,null))['catch'](handleError(_0x51c667,null));};exports[_0x5dbf('0x28')]=function(_0x43954b,_0x2e4e67){return respondWithRpcPromise('OutboundChannels',_0x43954b[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x2e4e67,null))[_0x5dbf('0xb')](handleError(_0x2e4e67,null));};exports['agents']=function(_0x4527fb,_0x29a62d){var _0x2ac162;return respondWithRpcPromise(_0x5dbf('0x29'),_0x4527fb[_0x5dbf('0x18')])[_0x5dbf('0x8')](function(_0x321ae3){_0x2ac162=_0x321ae3;return respondWithRpcPromise(_0x5dbf('0x29'),_0x4527fb['query'],routingClient);})['then'](function(_0x57ee72){return _['merge']({},_0x57ee72,_0x2ac162);})[_0x5dbf('0x8')](respondWithResult(_0x29a62d,null))[_0x5dbf('0xb')](handleError(_0x29a62d,null));};exports['agentCapacity']=function(_0x3ef0eb,_0x229abf){if(_0x3ef0eb['body']&&_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')]&&_0x3ef0eb[_0x5dbf('0x2b')]&&_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0xf')]){for(var _0x7c390d in _0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')]){if(_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')]['hasOwnProperty'](_0x7c390d)){db[_0x5dbf('0x2c')][_0x5dbf('0x2d')]({'where':{'channel':_0x7c390d,'membername':_0x3ef0eb[_0x5dbf('0x2b')]['name'],'type':_0x5dbf('0x2e'),'exitAt':null,'uniqueid':_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')][_0x7c390d]&&_0x3ef0eb[_0x5dbf('0x1e')]['interaction'][_0x7c390d][_0x5dbf('0x2f')]?{'$notIn':_0x3ef0eb['body'][_0x5dbf('0x2a')][_0x7c390d]}:{'$ne':null}}})[_0x5dbf('0x8')](function(_0x2d046b){var _0xcc1815=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x118ae6=0x0,_0x43f5e8=_0x2d046b[_0x5dbf('0x2f')];_0x118ae6<_0x43f5e8;_0x118ae6+=0x1){_0x2d046b[_0x118ae6]['updateAttributes']({'exitAt':_0xcc1815});}});for(var _0x2e241d=0x0;_0x2e241d<_0x3ef0eb['body']['interaction'][_0x7c390d]['length'];_0x2e241d+=0x1){db['MemberReport'][_0x5dbf('0x30')]({'where':{'channel':_0x7c390d,'membername':_0x3ef0eb[_0x5dbf('0x2b')]['name'],'type':_0x5dbf('0x2e'),'uniqueid':_0x3ef0eb[_0x5dbf('0x1e')]['interaction'][_0x7c390d][_0x2e241d],'exitAt':null},'defaults':{'channel':_0x7c390d,'membername':_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0xf')],'interface':_['isNil'](_0x3ef0eb[_0x5dbf('0x2b')]['interface'])?util['format'](_0x5dbf('0x31'),_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0xf')]):_0x3ef0eb['user']['interface'],'type':_0x5dbf('0x2e'),'enterAt':moment()[_0x5dbf('0x32')](_0x5dbf('0x33')),'role':_0x5dbf('0x34'),'internal':_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0x35')],'uniqueid':_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')][_0x7c390d][_0x2e241d]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x3ef0eb[_0x5dbf('0x16')]['id'],'capacity':_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x36')]},routingClient)[_0x5dbf('0x8')](respondWithResult(_0x229abf,null))[_0x5dbf('0xb')](handleError(_0x229abf,null));};exports[_0x5dbf('0x37')]=function(_0x328dc5,_0x59f825){return respondWithRpcPromise(_0x5dbf('0x38'),_0x328dc5['query'])[_0x5dbf('0x8')](respondWithResult(_0x59f825,null))[_0x5dbf('0xb')](handleError(_0x59f825,null));};exports[_0x5dbf('0x39')]=function(_0x770c54,_0x78ab84){return respondWithRpcPromise(_0x5dbf('0x3a'),_0x770c54[_0x5dbf('0x18')])['then'](respondWithResult(_0x78ab84,null))['catch'](handleError(_0x78ab84,null));};exports['campaigns']=function(_0x1e1876,_0xfdacc7){return respondWithRpcPromise(_0x5dbf('0x3b'),_0x1e1876['query'])['then'](respondWithResult(_0xfdacc7,null))[_0x5dbf('0xb')](handleError(_0xfdacc7,null));};exports[_0x5dbf('0x3c')]=function(_0x344df5,_0x5d70cc){return respondWithRpcPromise(_0x5dbf('0x3d'),_0x344df5['query'],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x5d70cc,null))[_0x5dbf('0xb')](handleError(_0x5d70cc,null));};exports[_0x5dbf('0x3e')]=function(_0x5da14b,_0x55fd51){return respondWithRpcPromise(_0x5dbf('0x3d'),_0x5da14b[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x5da14b[_0x5dbf('0x16')]['id']))['then'](respondWithResult(_0x55fd51,null))[_0x5dbf('0xb')](handleError(_0x55fd51,null));};exports[_0x5dbf('0x3f')]=function(_0x478cc1,_0x5485f3){return respondWithRpcPromise(_0x5dbf('0x40'),_0x478cc1[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x5485f3,null))[_0x5dbf('0xb')](handleError(_0x5485f3,null));};exports[_0x5dbf('0x41')]=function(_0x4711d5,_0x50a029){return respondWithRpcPromise(_0x5dbf('0x40'),_0x4711d5['query'],routingClient)['then'](findById(_0x4711d5['params']['id']))[_0x5dbf('0x8')](respondWithResult(_0x50a029,null))['catch'](handleError(_0x50a029,null));};exports[_0x5dbf('0x42')]=function(_0x275c1d,_0x1c60ac){return respondWithRpcPromise(_0x5dbf('0x43'),_0x275c1d[_0x5dbf('0x18')],mailClient)[_0x5dbf('0x8')](respondWithResult(_0x1c60ac,null))[_0x5dbf('0xb')](handleError(_0x1c60ac,null));};exports[_0x5dbf('0x44')]=function(_0x2c84d6,_0x1d91de){return respondWithRpcPromise(_0x5dbf('0x45'),_0x2c84d6[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x1d91de,null))[_0x5dbf('0xb')](handleError(_0x1d91de,null));};exports[_0x5dbf('0x46')]=function(_0x53ab1a,_0x3fbc3d){return respondWithRpcPromise('OpenchannelQueues',_0x53ab1a[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x53ab1a[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x3fbc3d,null))['catch'](handleError(_0x3fbc3d,null));};exports[_0x5dbf('0x47')]=function(_0x1ade34,_0x4362c6){return respondWithRpcPromise(_0x5dbf('0x48'),_0x1ade34[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x4362c6,null))['catch'](handleError(_0x4362c6,null));};exports[_0x5dbf('0x49')]=function(_0x3e5a96,_0x3b0465){return respondWithRpcPromise(_0x5dbf('0x48'),_0x3e5a96[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x3e5a96[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x3b0465,null))[_0x5dbf('0xb')](handleError(_0x3b0465,null));};exports[_0x5dbf('0x4a')]=function(_0x13c8ab,_0x2997a8){return respondWithRpcPromise('WhatsappQueues',_0x13c8ab['query'],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x2997a8,null))[_0x5dbf('0xb')](handleError(_0x2997a8,null));};exports[_0x5dbf('0x4b')]=function(_0x110713,_0xc000ee){return respondWithRpcPromise(_0x5dbf('0x4c'),_0x110713[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x110713[_0x5dbf('0x16')]['id']))['then'](respondWithResult(_0xc000ee,null))['catch'](handleError(_0xc000ee,null));};exports['faxQueues']=function(_0x4f4aa3,_0x408b51){return respondWithRpcPromise(_0x5dbf('0x4d'),_0x4f4aa3[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x408b51,null))[_0x5dbf('0xb')](handleError(_0x408b51,null));};exports[_0x5dbf('0x4e')]=function(_0x5331ff,_0x5bb990){return respondWithRpcPromise(_0x5dbf('0x4d'),_0x5331ff[_0x5dbf('0x18')],routingClient)['then'](findById(_0x5331ff[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x5bb990,null))[_0x5dbf('0xb')](handleError(_0x5bb990,null));};exports[_0x5dbf('0x4f')]=function(_0x569d9c,_0x431f08){return respondWithRpcPromise(_0x5dbf('0x50'),_0x569d9c[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x431f08,null))[_0x5dbf('0xb')](handleError(_0x431f08,null));};exports['chatQueuesWaitingInteractions']=function(_0x42478c,_0x3fce29){return respondWithRpcPromise(_0x5dbf('0x51'),_0x42478c[_0x5dbf('0x18')],routingClient)['then'](respondWithResult(_0x3fce29,null))[_0x5dbf('0xb')](handleError(_0x3fce29,null));};exports['mailQueuesWaitingInteractions']=function(_0x2ba37f,_0x118e56){return respondWithRpcPromise(_0x5dbf('0x52'),_0x2ba37f['query'],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x118e56,null))[_0x5dbf('0xb')](handleError(_0x118e56,null));};exports[_0x5dbf('0x53')]=function(_0x1270f3,_0x50db0b){return respondWithRpcPromise(_0x5dbf('0x54'),_0x1270f3[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x50db0b,null))[_0x5dbf('0xb')](handleError(_0x50db0b,null));};exports[_0x5dbf('0x55')]=function(_0xf84095,_0x560d62){return respondWithRpcPromise(_0x5dbf('0x54'),_0xf84095[_0x5dbf('0x18')],routingClient)['then'](function(_0x30469c){if(_0xf84095[_0x5dbf('0x18')][_0x5dbf('0x56')]!==undefined){var _0x3457de=_(_0x30469c[_0x5dbf('0x12')])[_0x5dbf('0x57')]([_0xf84095[_0x5dbf('0x18')][_0x5dbf('0x56')],_0xf84095[_0x5dbf('0x16')]['id']])[_0x5dbf('0x58')](_0x5dbf('0x59'))[_0x5dbf('0x5a')]()[_0x5dbf('0x5b')]();return _0x30469c[_0x5dbf('0x12')][_0x5dbf('0x57')](function(_0x37c1a3){return _0x3457de['indexOf'](_0x37c1a3[_0x5dbf('0x59')])>-0x1;});}else{return _0x30469c[_0x5dbf('0x12')][_0x5dbf('0x57')](function(_0x2e7115){return _0x2e7115['queue_id']===parseInt(_0xf84095[_0x5dbf('0x16')]['id']);});}})[_0x5dbf('0x8')](respondWithResult(_0x560d62,null))[_0x5dbf('0xb')](handleError(_0x560d62,null));};exports[_0x5dbf('0x5c')]=function(_0x1ccdae,_0x525930){return respondWithRpcPromise(_0x5dbf('0x5d'),_0x1ccdae[_0x5dbf('0x18')],routingClient)['then'](respondWithResult(_0x525930,null))['catch'](handleError(_0x525930,null));};exports[_0x5dbf('0x5e')]=function(_0x39c0a7,_0x1efe3f){return respondWithRpcPromise(_0x5dbf('0x5f'),_0x39c0a7[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x1efe3f,null))[_0x5dbf('0xb')](handleError(_0x1efe3f,null));};exports['faxQueuesWaitingInteractions']=function(_0x310078,_0x3b01c0){return respondWithRpcPromise(_0x5dbf('0x60'),_0x310078[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x3b01c0,null))[_0x5dbf('0xb')](handleError(_0x3b01c0,null));};exports['queueNotify']=function(_0x625875){return function(_0x2a0c11,_0x43ca42){var _0x2c5a6e,_0x255ab0;var _0x5a27d2=_[_0x5dbf('0x61')](_0x625875);var _0x550bd1=_0x625875==='chat'?'Website':'Account';return db[_0x5a27d2+_0x5dbf('0x62')][_0x5dbf('0x63')]({'raw':!![],'where':{'id':_0x2a0c11[_0x5dbf('0x16')]['id']}})[_0x5dbf('0x8')](function(_0x4333db){if(_['isNil'](_0x4333db)){throw new Error(_0x5a27d2+'\x20Queue\x20not\x20found');}_0x2c5a6e=_0x4333db;return db[_0x5a27d2+_0x5dbf('0x64')]['findOne']({'where':{'id':_0x2a0c11[_0x5dbf('0x1e')][_0x5dbf('0x65')]},'include':[{'model':db[_0x5a27d2+'Interaction'],'as':_0x5dbf('0x66')},{'model':db[_0x5a27d2+_0x550bd1],'as':'Account'}]});})[_0x5dbf('0x8')](function(_0x24d90a){if(_[_0x5dbf('0x11')](_0x24d90a)){throw new Error(_0x5a27d2+_0x5dbf('0x67'));}_0x255ab0=_0x24d90a;return _0x24d90a[_0x5dbf('0x68')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x22b520={'uniqueid':_0x625875+'.'+_0x255ab0['id']+'.'+_0x255ab0[_0x5dbf('0x66')]['id'],'FromUserId':_0x2a0c11[_0x5dbf('0x2b')]['id'],'type':_0x5dbf('0x69')};_0x22b520[_0x5a27d2+'MessageId']=_0x255ab0['id'];_0x22b520[_0x5a27d2+_0x5dbf('0x6a')]=_0x255ab0[_0x5dbf('0x66')]['id'];_0x22b520[_0x5dbf('0x6b')+_0x5a27d2+_0x550bd1+'Id']=_0x255ab0[_0x5dbf('0x6c')]['id'];_0x22b520['To'+_0x5a27d2+_0x5dbf('0x6d')]=_0x2c5a6e['id'];return db[_0x5a27d2+_0x5dbf('0x6e')][_0x5dbf('0x6f')](_0x22b520);})[_0x5dbf('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x625875,'interaction':_0x255ab0['Interaction'],'message':_0x255ab0,'account':_0x255ab0[_0x5dbf('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5dbf('0x69'),'appdata':_0x2c5a6e[_0x5dbf('0xf')]+','+(_0x255ab0['Account']['queueTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x5dbf('0x8')](respondWithResult(_0x43ca42,null))[_0x5dbf('0xb')](handleError(_0x43ca42,null));};};exports[_0x5dbf('0x70')]=function(_0x4713b4,_0x12757d){var _0x13fcf5,_0x5ba5bb;if(_[_0x5dbf('0x11')](_0x4713b4[_0x5dbf('0x1e')]['channel'])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x289cc1=_0x4713b4['body']['channel'];var _0x3a27c4=_[_0x5dbf('0x61')](_0x289cc1);var _0x3722b9=_0x289cc1==='chat'?_0x5dbf('0x71'):_0x5dbf('0x6c');return db['User'][_0x5dbf('0x63')]({'raw':!![],'where':{'id':_0x4713b4[_0x5dbf('0x16')]['id'],'role':_0x5dbf('0x34')}})[_0x5dbf('0x8')](function(_0x7957cb){if(_[_0x5dbf('0x11')](_0x7957cb)){throw new Error(_0x5dbf('0x72'));}_0x13fcf5=_0x7957cb;return db[_0x3a27c4+_0x5dbf('0x64')]['findOne']({'where':{'id':_0x4713b4['body']['messageId']},'include':[{'model':db[_0x3a27c4+_0x5dbf('0x66')],'as':_0x5dbf('0x66')},{'model':db[_0x3a27c4+_0x3722b9],'as':_0x5dbf('0x6c')}]});})[_0x5dbf('0x8')](function(_0x400d98){if(_[_0x5dbf('0x11')](_0x400d98)){throw new Error(_0x3a27c4+_0x5dbf('0x67'));}_0x5ba5bb=_0x400d98;return _0x400d98[_0x5dbf('0x68')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5dbf('0x8')](function(){var _0x990814={'uniqueid':_0x289cc1+'.'+_0x5ba5bb['id']+'.'+_0x5ba5bb['Interaction']['id'],'FromUserId':_0x4713b4[_0x5dbf('0x2b')]['id'],'type':_0x5dbf('0x69'),'ToUserId':_0x13fcf5['id']};_0x990814[_0x3a27c4+_0x5dbf('0x73')]=_0x5ba5bb['id'];_0x990814[_0x3a27c4+_0x5dbf('0x6a')]=_0x5ba5bb[_0x5dbf('0x66')]['id'];_0x990814[_0x5dbf('0x6b')+_0x3a27c4+_0x3722b9+'Id']=_0x5ba5bb[_0x5dbf('0x6c')]['id'];return db[_0x3a27c4+_0x5dbf('0x6e')]['create'](_0x990814);})['then'](function(){return respondWithRpcPromise(_0x5dbf('0x74'),{'channel':_0x289cc1,'interaction':_0x5ba5bb['Interaction'],'message':_0x5ba5bb,'account':_0x5ba5bb['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x5dbf('0x34'),'appdata':_0x13fcf5['name']+','+(_0x5ba5bb['Account']['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x5dbf('0x8')](respondWithResult(_0x12757d,null))['catch'](handleError(_0x12757d,null));};
\ No newline at end of file
+var _0x7dfd=['interface','format','SIP/%s','agent','internal','capacity','Telephones','trunks','Trunks','campaigns','Campaigns','showChatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','showSmsQueues','SmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','queue_id','uniq','filter','indexOf','SmsQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','findOne','InteractionId','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','then','error','code','message','result','catch','status','json','sendStatus','stack','name','isNil','rows','voiceChannels','VoiceChannels','query','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','body','user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes'];(function(_0x23da7e,_0xa83279){var _0x4a07b5=function(_0x48e800){while(--_0x48e800){_0x23da7e['push'](_0x23da7e['shift']());}};_0x4a07b5(++_0xa83279);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xd7df('0x0'));var moment=require(_0xd7df('0x1'));var _=require(_0xd7df('0x2'));var util=require(_0xd7df('0x3'));var db=require(_0xd7df('0x4'))['db'];var logger=require(_0xd7df('0x5'))(_0xd7df('0x6'));var jayson=require(_0xd7df('0x7'));var amiClient=jayson[_0xd7df('0x8')][_0xd7df('0x9')]({'port':0x232a});var mailClient=jayson[_0xd7df('0x8')][_0xd7df('0x9')]({'port':0x232b});var routingClient=jayson[_0xd7df('0x8')][_0xd7df('0x9')]({'port':0x232c});function respondWithRpcPromise(_0x354ea7,_0x16e50,_0x2c48a4){return new BPromise(function(_0x5c220a,_0xab6742){var _0xb3557a=_0x2c48a4?_0x2c48a4:amiClient;return _0xb3557a[_0xd7df('0xa')](_0x354ea7,_0x16e50)[_0xd7df('0xb')](function(_0x5e59c3){if(_0x5e59c3[_0xd7df('0xc')]){if(_0x5e59c3['error'][_0xd7df('0xd')]===0x1f4){return _0xab6742(_0x5e59c3['error'][_0xd7df('0xe')]);}return _0x5c220a(_0x5e59c3[_0xd7df('0xc')][_0xd7df('0xe')]);}else{_0x5c220a(_0x5e59c3[_0xd7df('0xf')]);}})[_0xd7df('0x10')](function(_0x174c88){_0xab6742(_0x174c88);});});}function respondWithResult(_0x2e8187,_0x3da618){_0x3da618=_0x3da618||0xc8;return function(_0x7ba3c){if(_0x7ba3c){return _0x2e8187[_0xd7df('0x11')](_0x3da618)[_0xd7df('0x12')](_0x7ba3c);}return _0x2e8187[_0xd7df('0x13')](0x194);};}function handleError(_0xe1595f,_0x196632){_0x196632=_0x196632||0x1f4;return function(_0x3b2559){logger[_0xd7df('0xc')](_0x3b2559[_0xd7df('0x14')]);if(_0x3b2559['name']){delete _0x3b2559[_0xd7df('0x15')];}_0xe1595f[_0xd7df('0x11')](_0x196632)['send'](_0x3b2559);};}function findById(_0x18d38f){return function(_0xbe1c5e){if(!_['isNil'](_0x18d38f)&&!_[_0xd7df('0x16')](_0xbe1c5e)&&!_[_0xd7df('0x16')](_0xbe1c5e[_0xd7df('0x17')])){return _['find'](_0xbe1c5e[_0xd7df('0x17')],function(_0x471621){return _0x471621['id']==_0x18d38f;});}return null;};}exports[_0xd7df('0x18')]=function(_0x5ba653,_0x96d86e){return respondWithRpcPromise(_0xd7df('0x19'),_0x5ba653[_0xd7df('0x1a')])['then'](respondWithResult(_0x96d86e,null))[_0xd7df('0x10')](handleError(_0x96d86e,null));};exports['voiceChannelMixMonitor']=function(_0x225e33,_0x5ab737){return respondWithRpcPromise(_0xd7df('0x1b'),_[_0xd7df('0x1c')](_0x225e33[_0xd7df('0x1a')],_0x225e33['params']))[_0xd7df('0xb')](respondWithResult(_0x5ab737,null))['catch'](handleError(_0x5ab737,null));};exports[_0xd7df('0x1d')]=function(_0x379e4a,_0x40e7af){return respondWithRpcPromise(_0xd7df('0x1e'),_[_0xd7df('0x1c')](_0x379e4a[_0xd7df('0x1a')],_0x379e4a[_0xd7df('0x1f')]))['then'](respondWithResult(_0x40e7af,null))['catch'](handleError(_0x40e7af,null));};exports[_0xd7df('0x20')]=function(_0x38db14,_0x26047f){return respondWithRpcPromise(_0xd7df('0x21'),_0x38db14[_0xd7df('0x1a')])[_0xd7df('0xb')](respondWithResult(_0x26047f,null))[_0xd7df('0x10')](handleError(_0x26047f,null));};exports[_0xd7df('0x22')]=function(_0x163904,_0x5c4d17){return respondWithRpcPromise(_0xd7df('0x21'),_0x163904[_0xd7df('0x1a')])[_0xd7df('0xb')](findById(_0x163904[_0xd7df('0x1f')]['id']))[_0xd7df('0xb')](respondWithResult(_0x5c4d17,null))[_0xd7df('0x10')](handleError(_0x5c4d17,null));};exports[_0xd7df('0x23')]=function(_0x36de76,_0x5195cf){return respondWithRpcPromise('UpdateVoiceQueue',_['merge'](_0x36de76['body'],_0x36de76['params']))[_0xd7df('0xb')](respondWithResult(_0x5195cf,null))['catch'](handleError(_0x5195cf,null));};exports[_0xd7df('0x24')]=function(_0x156612,_0x503a90){return respondWithRpcPromise(_0xd7df('0x25'),_[_0xd7df('0x1c')](_0x156612['query'],_0x156612[_0xd7df('0x1f')]))[_0xd7df('0xb')](respondWithResult(_0x503a90,null))[_0xd7df('0x10')](handleError(_0x503a90,null));};exports[_0xd7df('0x26')]=function(_0x40f965,_0x3304c4){return respondWithRpcPromise('VoiceQueuesChannels',_0x40f965[_0xd7df('0x1a')])[_0xd7df('0xb')](respondWithResult(_0x3304c4,null))[_0xd7df('0x10')](handleError(_0x3304c4,null));};exports[_0xd7df('0x27')]=function(_0x363f2d,_0x4cecf2){return respondWithRpcPromise(_0xd7df('0x28'),_[_0xd7df('0x1c')](_0x363f2d[_0xd7df('0x1a')],_0x363f2d[_0xd7df('0x1f')]))[_0xd7df('0xb')](respondWithResult(_0x4cecf2,null))['catch'](handleError(_0x4cecf2,null));};exports['voiceQueuesChannelHangup']=function(_0x4051fb,_0x564562){return respondWithRpcPromise(_0xd7df('0x29'),_[_0xd7df('0x1c')](_0x4051fb[_0xd7df('0x1a')],_0x4051fb[_0xd7df('0x1f')]))['then'](respondWithResult(_0x564562,null))['catch'](handleError(_0x564562,null));};exports['voiceQueuesChannelRedirect']=function(_0x2a96e3,_0x15e682){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xd7df('0x1c')](_0x2a96e3[_0xd7df('0x1a')],_0x2a96e3[_0xd7df('0x1f')]))[_0xd7df('0xb')](respondWithResult(_0x15e682,null))['catch'](handleError(_0x15e682,null));};exports[_0xd7df('0x2a')]=function(_0x45642c,_0x5f0a6d){return respondWithRpcPromise(_0xd7df('0x2b'),_0x45642c['query'])[_0xd7df('0xb')](respondWithResult(_0x5f0a6d,null))[_0xd7df('0x10')](handleError(_0x5f0a6d,null));};exports[_0xd7df('0x2c')]=function(_0x59c755,_0x138391){return respondWithRpcPromise(_0xd7df('0x2d'),_0x59c755[_0xd7df('0x1a')])[_0xd7df('0xb')](respondWithResult(_0x138391,null))['catch'](handleError(_0x138391,null));};exports[_0xd7df('0x2e')]=function(_0x230857,_0x2314e6){var _0x4f6286;return respondWithRpcPromise(_0xd7df('0x2f'),_0x230857[_0xd7df('0x1a')])[_0xd7df('0xb')](function(_0x517824){_0x4f6286=_0x517824;return respondWithRpcPromise(_0xd7df('0x2f'),_0x230857[_0xd7df('0x1a')],routingClient);})['then'](function(_0x4b2561){return _[_0xd7df('0x1c')]({},_0x4b2561,_0x4f6286);})[_0xd7df('0xb')](respondWithResult(_0x2314e6,null))[_0xd7df('0x10')](handleError(_0x2314e6,null));};exports['agentCapacity']=function(_0x5e8cd0,_0x2c149e){if(_0x5e8cd0['body']&&_0x5e8cd0[_0xd7df('0x30')]['interaction']&&_0x5e8cd0['user']&&_0x5e8cd0[_0xd7df('0x31')]['name']){for(var _0x18ef10 in _0x5e8cd0[_0xd7df('0x30')][_0xd7df('0x32')]){if(_0x5e8cd0[_0xd7df('0x30')][_0xd7df('0x32')][_0xd7df('0x33')](_0x18ef10)){db[_0xd7df('0x34')][_0xd7df('0x35')]({'where':{'channel':_0x18ef10,'membername':_0x5e8cd0[_0xd7df('0x31')]['name'],'type':_0xd7df('0x36'),'exitAt':null,'uniqueid':_0x5e8cd0['body'][_0xd7df('0x32')][_0x18ef10]&&_0x5e8cd0[_0xd7df('0x30')][_0xd7df('0x32')][_0x18ef10][_0xd7df('0x37')]?{'$notIn':_0x5e8cd0[_0xd7df('0x30')][_0xd7df('0x32')][_0x18ef10]}:{'$ne':null}}})[_0xd7df('0xb')](function(_0x38056b){var _0x3a3c1a=moment()['format'](_0xd7df('0x38'));for(var _0x563f90=0x0,_0x49085b=_0x38056b['length'];_0x563f90<_0x49085b;_0x563f90+=0x1){_0x38056b[_0x563f90][_0xd7df('0x39')]({'exitAt':_0x3a3c1a});}});for(var _0x162900=0x0;_0x162900<_0x5e8cd0[_0xd7df('0x30')]['interaction'][_0x18ef10]['length'];_0x162900+=0x1){db[_0xd7df('0x34')]['findOrCreate']({'where':{'channel':_0x18ef10,'membername':_0x5e8cd0[_0xd7df('0x31')][_0xd7df('0x15')],'type':_0xd7df('0x36'),'uniqueid':_0x5e8cd0[_0xd7df('0x30')][_0xd7df('0x32')][_0x18ef10][_0x162900],'exitAt':null},'defaults':{'channel':_0x18ef10,'membername':_0x5e8cd0[_0xd7df('0x31')][_0xd7df('0x15')],'interface':_[_0xd7df('0x16')](_0x5e8cd0[_0xd7df('0x31')][_0xd7df('0x3a')])?util[_0xd7df('0x3b')](_0xd7df('0x3c'),_0x5e8cd0['user'][_0xd7df('0x15')]):_0x5e8cd0[_0xd7df('0x31')][_0xd7df('0x3a')],'type':_0xd7df('0x36'),'enterAt':moment()[_0xd7df('0x3b')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xd7df('0x3d'),'internal':_0x5e8cd0[_0xd7df('0x31')][_0xd7df('0x3e')],'uniqueid':_0x5e8cd0['body'][_0xd7df('0x32')][_0x18ef10][_0x162900]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x5e8cd0[_0xd7df('0x1f')]['id'],'capacity':_0x5e8cd0[_0xd7df('0x30')][_0xd7df('0x3f')]},routingClient)[_0xd7df('0xb')](respondWithResult(_0x2c149e,null))[_0xd7df('0x10')](handleError(_0x2c149e,null));};exports['telephones']=function(_0x4abe81,_0x53ec02){return respondWithRpcPromise(_0xd7df('0x40'),_0x4abe81['query'])[_0xd7df('0xb')](respondWithResult(_0x53ec02,null))[_0xd7df('0x10')](handleError(_0x53ec02,null));};exports[_0xd7df('0x41')]=function(_0xdf3046,_0x275af9){return respondWithRpcPromise(_0xd7df('0x42'),_0xdf3046[_0xd7df('0x1a')])[_0xd7df('0xb')](respondWithResult(_0x275af9,null))[_0xd7df('0x10')](handleError(_0x275af9,null));};exports[_0xd7df('0x43')]=function(_0x382d11,_0x327365){return respondWithRpcPromise(_0xd7df('0x44'),_0x382d11[_0xd7df('0x1a')])[_0xd7df('0xb')](respondWithResult(_0x327365,null))[_0xd7df('0x10')](handleError(_0x327365,null));};exports['chatQueues']=function(_0x332db5,_0x28c9b7){return respondWithRpcPromise('ChatQueues',_0x332db5['query'],routingClient)[_0xd7df('0xb')](respondWithResult(_0x28c9b7,null))['catch'](handleError(_0x28c9b7,null));};exports[_0xd7df('0x45')]=function(_0x4fb55a,_0x1f34c2){return respondWithRpcPromise(_0xd7df('0x46'),_0x4fb55a[_0xd7df('0x1a')],routingClient)['then'](findById(_0x4fb55a['params']['id']))['then'](respondWithResult(_0x1f34c2,null))[_0xd7df('0x10')](handleError(_0x1f34c2,null));};exports[_0xd7df('0x47')]=function(_0x19c387,_0x527b6f){return respondWithRpcPromise(_0xd7df('0x48'),_0x19c387[_0xd7df('0x1a')],routingClient)['then'](respondWithResult(_0x527b6f,null))[_0xd7df('0x10')](handleError(_0x527b6f,null));};exports[_0xd7df('0x49')]=function(_0x35204f,_0x25d187){return respondWithRpcPromise(_0xd7df('0x48'),_0x35204f[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](findById(_0x35204f[_0xd7df('0x1f')]['id']))[_0xd7df('0xb')](respondWithResult(_0x25d187,null))[_0xd7df('0x10')](handleError(_0x25d187,null));};exports[_0xd7df('0x4a')]=function(_0x398e43,_0x3dba78){return respondWithRpcPromise(_0xd7df('0x4b'),_0x398e43[_0xd7df('0x1a')],mailClient)[_0xd7df('0xb')](respondWithResult(_0x3dba78,null))[_0xd7df('0x10')](handleError(_0x3dba78,null));};exports[_0xd7df('0x4c')]=function(_0x3f2775,_0x1e6277){return respondWithRpcPromise(_0xd7df('0x4d'),_0x3f2775[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x1e6277,null))[_0xd7df('0x10')](handleError(_0x1e6277,null));};exports[_0xd7df('0x4e')]=function(_0x3912d6,_0x51ae2b){return respondWithRpcPromise('OpenchannelQueues',_0x3912d6[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](findById(_0x3912d6[_0xd7df('0x1f')]['id']))['then'](respondWithResult(_0x51ae2b,null))[_0xd7df('0x10')](handleError(_0x51ae2b,null));};exports[_0xd7df('0x4f')]=function(_0x1e87aa,_0x2786a6){return respondWithRpcPromise('SmsQueues',_0x1e87aa[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x2786a6,null))[_0xd7df('0x10')](handleError(_0x2786a6,null));};exports[_0xd7df('0x50')]=function(_0x19a25b,_0x2fbc53){return respondWithRpcPromise(_0xd7df('0x51'),_0x19a25b[_0xd7df('0x1a')],routingClient)['then'](findById(_0x19a25b[_0xd7df('0x1f')]['id']))[_0xd7df('0xb')](respondWithResult(_0x2fbc53,null))['catch'](handleError(_0x2fbc53,null));};exports['whatsappQueues']=function(_0x481fa5,_0x264c5b){return respondWithRpcPromise(_0xd7df('0x52'),_0x481fa5[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x264c5b,null))['catch'](handleError(_0x264c5b,null));};exports[_0xd7df('0x53')]=function(_0x3d45cf,_0x19df03){return respondWithRpcPromise(_0xd7df('0x52'),_0x3d45cf[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](findById(_0x3d45cf[_0xd7df('0x1f')]['id']))['then'](respondWithResult(_0x19df03,null))['catch'](handleError(_0x19df03,null));};exports[_0xd7df('0x54')]=function(_0x5c1e68,_0x588537){return respondWithRpcPromise(_0xd7df('0x55'),_0x5c1e68[_0xd7df('0x1a')],routingClient)['then'](respondWithResult(_0x588537,null))['catch'](handleError(_0x588537,null));};exports[_0xd7df('0x56')]=function(_0x44d824,_0x49bf7e){return respondWithRpcPromise(_0xd7df('0x55'),_0x44d824[_0xd7df('0x1a')],routingClient)['then'](findById(_0x44d824[_0xd7df('0x1f')]['id']))[_0xd7df('0xb')](respondWithResult(_0x49bf7e,null))['catch'](handleError(_0x49bf7e,null));};exports[_0xd7df('0x57')]=function(_0x519f72,_0x56f55d){return respondWithRpcPromise(_0xd7df('0x58'),_0x519f72[_0xd7df('0x1a')])[_0xd7df('0xb')](respondWithResult(_0x56f55d,null))[_0xd7df('0x10')](handleError(_0x56f55d,null));};exports[_0xd7df('0x59')]=function(_0x40b2a1,_0x5831c1){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x40b2a1[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x5831c1,null))[_0xd7df('0x10')](handleError(_0x5831c1,null));};exports[_0xd7df('0x5a')]=function(_0x19b0e6,_0x31f681){return respondWithRpcPromise(_0xd7df('0x5b'),_0x19b0e6[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x31f681,null))['catch'](handleError(_0x31f681,null));};exports[_0xd7df('0x5c')]=function(_0x1682ca,_0x4e9806){return respondWithRpcPromise(_0xd7df('0x5d'),_0x1682ca[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x4e9806,null))[_0xd7df('0x10')](handleError(_0x4e9806,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x4e5363,_0x5628ed){return respondWithRpcPromise(_0xd7df('0x5d'),_0x4e5363['query'],routingClient)[_0xd7df('0xb')](function(_0x2b1b30){if(_0x4e5363[_0xd7df('0x1a')][_0xd7df('0x5e')]!==undefined){var _0x2d8a31=_(_0x2b1b30[_0xd7df('0x17')])['filter']([_0x4e5363[_0xd7df('0x1a')][_0xd7df('0x5e')],_0x4e5363[_0xd7df('0x1f')]['id']])['map'](_0xd7df('0x5f'))[_0xd7df('0x60')]()['value']();return _0x2b1b30[_0xd7df('0x17')][_0xd7df('0x61')](function(_0x157290){return _0x2d8a31[_0xd7df('0x62')](_0x157290[_0xd7df('0x5f')])>-0x1;});}else{return _0x2b1b30[_0xd7df('0x17')][_0xd7df('0x61')](function(_0x5e93cc){return _0x5e93cc[_0xd7df('0x5f')]===parseInt(_0x4e5363[_0xd7df('0x1f')]['id']);});}})[_0xd7df('0xb')](respondWithResult(_0x5628ed,null))[_0xd7df('0x10')](handleError(_0x5628ed,null));};exports['smsQueuesWaitingInteractions']=function(_0x531a07,_0x2e1e96){return respondWithRpcPromise(_0xd7df('0x63'),_0x531a07[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x2e1e96,null))[_0xd7df('0x10')](handleError(_0x2e1e96,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x2329ce,_0x4f739b){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x2329ce[_0xd7df('0x1a')],routingClient)[_0xd7df('0xb')](respondWithResult(_0x4f739b,null))[_0xd7df('0x10')](handleError(_0x4f739b,null));};exports[_0xd7df('0x64')]=function(_0x30c401,_0x3ece24){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x30c401['query'],routingClient)[_0xd7df('0xb')](respondWithResult(_0x3ece24,null))[_0xd7df('0x10')](handleError(_0x3ece24,null));};exports[_0xd7df('0x65')]=function(_0x175a36){return function(_0x5cb2b0,_0xac3b73){var _0x5df36d,_0x158bd9;var _0x5b73e5=_[_0xd7df('0x66')](_0x175a36);var _0x1ed032=_0x175a36===_0xd7df('0x67')?_0xd7df('0x68'):_0xd7df('0x69');return db[_0x5b73e5+_0xd7df('0x6a')]['findOne']({'raw':!![],'where':{'id':_0x5cb2b0[_0xd7df('0x1f')]['id']}})['then'](function(_0x1e2355){if(_[_0xd7df('0x16')](_0x1e2355)){throw new Error(_0x5b73e5+_0xd7df('0x6b'));}_0x5df36d=_0x1e2355;return db[_0x5b73e5+_0xd7df('0x6c')]['findOne']({'where':{'id':_0x5cb2b0[_0xd7df('0x30')][_0xd7df('0x6d')]},'include':[{'model':db[_0x5b73e5+_0xd7df('0x6e')],'as':_0xd7df('0x6e')},{'model':db[_0x5b73e5+_0x1ed032],'as':_0xd7df('0x69')}]});})[_0xd7df('0xb')](function(_0x40a665){if(_[_0xd7df('0x16')](_0x40a665)){throw new Error(_0x5b73e5+_0xd7df('0x6f'));}_0x158bd9=_0x40a665;return _0x40a665[_0xd7df('0x70')]({'read':0x0,'readAt':null,'UserId':null});})[_0xd7df('0xb')](function(){var _0x15bd27={'uniqueid':_0x175a36+'.'+_0x158bd9['id']+'.'+_0x158bd9['Interaction']['id'],'FromUserId':_0x5cb2b0[_0xd7df('0x31')]['id'],'type':_0xd7df('0x71')};_0x15bd27[_0x5b73e5+_0xd7df('0x72')]=_0x158bd9['id'];_0x15bd27[_0x5b73e5+'InteractionId']=_0x158bd9['Interaction']['id'];_0x15bd27[_0xd7df('0x73')+_0x5b73e5+_0x1ed032+'Id']=_0x158bd9[_0xd7df('0x69')]['id'];_0x15bd27['To'+_0x5b73e5+_0xd7df('0x74')]=_0x5df36d['id'];return db[_0x5b73e5+_0xd7df('0x75')][_0xd7df('0x76')](_0x15bd27);})[_0xd7df('0xb')](function(){return respondWithRpcPromise(_0xd7df('0x77'),{'channel':_0x175a36,'interaction':_0x158bd9[_0xd7df('0x6e')],'message':_0x158bd9,'account':_0x158bd9[_0xd7df('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd7df('0x71'),'appdata':_0x5df36d['name']+','+(_0x158bd9[_0xd7df('0x69')][_0xd7df('0x78')]||0x12c),'interval':_0xd7df('0x79')}]},routingClient);})[_0xd7df('0xb')](respondWithResult(_0xac3b73,null))[_0xd7df('0x10')](handleError(_0xac3b73,null));};};exports[_0xd7df('0x7a')]=function(_0x50c5b9,_0x518092){var _0xa3ae43,_0x31b159;if(_[_0xd7df('0x16')](_0x50c5b9[_0xd7df('0x30')][_0xd7df('0x7b')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x1a888c=_0x50c5b9[_0xd7df('0x30')][_0xd7df('0x7b')];var _0x3d9fba=_[_0xd7df('0x66')](_0x1a888c);var _0x2861e3=_0x1a888c===_0xd7df('0x67')?'Website':_0xd7df('0x69');return db['User']['findOne']({'raw':!![],'where':{'id':_0x50c5b9[_0xd7df('0x1f')]['id'],'role':_0xd7df('0x3d')}})[_0xd7df('0xb')](function(_0x5092d2){if(_[_0xd7df('0x16')](_0x5092d2)){throw new Error('Agent\x20not\x20found');}_0xa3ae43=_0x5092d2;return db[_0x3d9fba+'Message'][_0xd7df('0x7c')]({'where':{'id':_0x50c5b9[_0xd7df('0x30')][_0xd7df('0x6d')]},'include':[{'model':db[_0x3d9fba+_0xd7df('0x6e')],'as':_0xd7df('0x6e')},{'model':db[_0x3d9fba+_0x2861e3],'as':'Account'}]});})['then'](function(_0x3f2ecd){if(_[_0xd7df('0x16')](_0x3f2ecd)){throw new Error(_0x3d9fba+_0xd7df('0x6f'));}_0x31b159=_0x3f2ecd;return _0x3f2ecd[_0xd7df('0x70')]({'read':0x0,'readAt':null,'UserId':null});})[_0xd7df('0xb')](function(){var _0xc447e8={'uniqueid':_0x1a888c+'.'+_0x31b159['id']+'.'+_0x31b159[_0xd7df('0x6e')]['id'],'FromUserId':_0x50c5b9[_0xd7df('0x31')]['id'],'type':_0xd7df('0x71'),'ToUserId':_0xa3ae43['id']};_0xc447e8[_0x3d9fba+_0xd7df('0x72')]=_0x31b159['id'];_0xc447e8[_0x3d9fba+_0xd7df('0x7d')]=_0x31b159[_0xd7df('0x6e')]['id'];_0xc447e8[_0xd7df('0x73')+_0x3d9fba+_0x2861e3+'Id']=_0x31b159['Account']['id'];return db[_0x3d9fba+_0xd7df('0x75')][_0xd7df('0x76')](_0xc447e8);})[_0xd7df('0xb')](function(){return respondWithRpcPromise('Start',{'channel':_0x1a888c,'interaction':_0x31b159[_0xd7df('0x6e')],'message':_0x31b159,'account':_0x31b159['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0xd7df('0x3d'),'appdata':_0xa3ae43[_0xd7df('0x15')]+','+(_0x31b159['Account'][_0xd7df('0x7e')]||0x12c),'interval':_0xd7df('0x79')}]},routingClient);})[_0xd7df('0xb')](respondWithResult(_0x518092,null))[_0xd7df('0x10')](handleError(_0x518092,null));};
\ No newline at end of file
index a34080b..67f558b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a68=['get','isAuthenticated','index','/:id/run','run','post','create','put','/:id','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x35b195,_0x8893d5){var _0x2433bf=function(_0x22be07){while(--_0x22be07){_0x35b195['push'](_0x35b195['shift']());}};_0x2433bf(++_0x8893d5);}(_0x1a68,0xf0));var _0x81a6=function(_0x53bbe9,_0x2d592d){_0x53bbe9=_0x53bbe9-0x0;var _0x3ae82d=_0x1a68[_0x53bbe9];return _0x3ae82d;};'use strict';var multer=require('multer');var util=require(_0x81a6('0x0'));var path=require('path');var timeout=require(_0x81a6('0x1'));var express=require('express');var router=express[_0x81a6('0x2')]();var fs_extra=require(_0x81a6('0x3'));var auth=require(_0x81a6('0x4'));var interaction=require(_0x81a6('0x5'));var config=require(_0x81a6('0x6'));var controller=require('./schedule.controller');router[_0x81a6('0x7')]('/',auth[_0x81a6('0x8')](),controller[_0x81a6('0x9')]);router[_0x81a6('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x81a6('0xa'),auth[_0x81a6('0x8')](),controller[_0x81a6('0xb')]);router[_0x81a6('0xc')]('/',auth[_0x81a6('0x8')](),controller[_0x81a6('0xd')]);router[_0x81a6('0xe')](_0x81a6('0xf'),auth[_0x81a6('0x8')](),controller['update']);router[_0x81a6('0x10')](_0x81a6('0xf'),auth['isAuthenticated'](),controller[_0x81a6('0x11')]);module[_0x81a6('0x12')]=router;
\ No newline at end of file
+var _0x18ab=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','index','isAuthenticated','show','/:id/run','run','create','put','/:id','delete','destroy','exports','multer','util'];(function(_0x10baeb,_0x1f83cf){var _0x54493e=function(_0x14cb8c){while(--_0x14cb8c){_0x10baeb['push'](_0x10baeb['shift']());}};_0x54493e(++_0x1f83cf);}(_0x18ab,0x71));var _0xb18a=function(_0xf6e747,_0x1d527b){_0xf6e747=_0xf6e747-0x0;var _0x49a55c=_0x18ab[_0xf6e747];return _0x49a55c;};'use strict';var multer=require(_0xb18a('0x0'));var util=require(_0xb18a('0x1'));var path=require(_0xb18a('0x2'));var timeout=require(_0xb18a('0x3'));var express=require(_0xb18a('0x4'));var router=express[_0xb18a('0x5')]();var fs_extra=require(_0xb18a('0x6'));var auth=require(_0xb18a('0x7'));var interaction=require(_0xb18a('0x8'));var config=require(_0xb18a('0x9'));var controller=require(_0xb18a('0xa'));router[_0xb18a('0xb')]('/',auth['isAuthenticated'](),controller[_0xb18a('0xc')]);router[_0xb18a('0xb')]('/:id',auth[_0xb18a('0xd')](),controller[_0xb18a('0xe')]);router['get'](_0xb18a('0xf'),auth[_0xb18a('0xd')](),controller[_0xb18a('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb18a('0x11')]);router[_0xb18a('0x12')](_0xb18a('0x13'),auth['isAuthenticated'](),controller['update']);router[_0xb18a('0x14')]('/:id',auth[_0xb18a('0xd')](),controller[_0xb18a('0x15')]);module[_0xb18a('0x16')]=router;
\ No newline at end of file
index 533ac5d..cac0003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x362f=['hours','csv','xlsx','ENUM','default','custom','TEXT','sequelize','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters','months','weeks','days'];(function(_0x5d4dda,_0x34d040){var _0x2018e7=function(_0x500e25){while(--_0x500e25){_0x5d4dda['push'](_0x5d4dda['shift']());}};_0x2018e7(++_0x34d040);}(_0x362f,0x139));var _0xf362=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x362f[_0xb0f7c3];return _0x28ea68;};'use strict';var Sequelize=require(_0xf362('0x0'));module['exports']={'name':{'type':Sequelize[_0xf362('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xf362('0x1')]},'active':{'type':Sequelize[_0xf362('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xf362('0x1')],'allowNull':![],'defaultValue':_0xf362('0x3')},'startAt':{'type':Sequelize[_0xf362('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xf362('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xf362('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xf362('0x6'),_0xf362('0x7'),_0xf362('0x8'),_0xf362('0x9'),_0xf362('0xa'),_0xf362('0xb'),'minutes'),'allowNull':![],'defaultValue':_0xf362('0xa')},'output':{'type':Sequelize['ENUM'](_0xf362('0xc'),'pdf',_0xf362('0xd')),'allowNull':![],'defaultValue':_0xf362('0xc')},'type':{'type':Sequelize[_0xf362('0xe')]('custom',_0xf362('0xf')),'allowNull':![],'defaultValue':_0xf362('0x10')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xf362('0x1')]},'cc':{'type':Sequelize[_0xf362('0x11')]},'bcc':{'type':Sequelize[_0xf362('0x11')]},'sendIfEmpty':{'type':Sequelize[_0xf362('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x37aa=['ENUM','pdf','xlsx','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','months','weeks','days','hours','minutes'];(function(_0x1f34d3,_0x3e2bb7){var _0x42313a=function(_0x582bf8){while(--_0x582bf8){_0x1f34d3['push'](_0x1f34d3['shift']());}};_0x42313a(++_0x3e2bb7);}(_0x37aa,0x110));var _0xa37a=function(_0x10a904,_0x2bf292){_0x10a904=_0x10a904-0x0;var _0x53815a=_0x37aa[_0x10a904];return _0x53815a;};'use strict';var Sequelize=require(_0xa37a('0x0'));module[_0xa37a('0x1')]={'name':{'type':Sequelize[_0xa37a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xa37a('0x2')]},'active':{'type':Sequelize[_0xa37a('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa37a('0x4')},'startAt':{'type':Sequelize[_0xa37a('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xa37a('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xa37a('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xa37a('0x7'),'quarters',_0xa37a('0x8'),_0xa37a('0x9'),_0xa37a('0xa'),_0xa37a('0xb'),_0xa37a('0xc')),'allowNull':![],'defaultValue':_0xa37a('0xa')},'output':{'type':Sequelize[_0xa37a('0xd')]('csv',_0xa37a('0xe'),_0xa37a('0xf')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0xa37a('0xd')](_0xa37a('0x10'),_0xa37a('0x11')),'allowNull':![],'defaultValue':_0xa37a('0x10')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xa37a('0x2')]},'cc':{'type':Sequelize[_0xa37a('0x12')]},'bcc':{'type':Sequelize[_0xa37a('0x12')]},'sendIfEmpty':{'type':Sequelize[_0xa37a('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 662e5f8..29b0cac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d2=['merge','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','run','../../config/schedule','eml-format','rimraf','request-promise','moment','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','Scheduler','UserProfileResource','destroy','error','stack','name','send','map','Schedule','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x47d2,0x66));var _0x247d=function(_0x1e5a4c,_0x4edd68){_0x1e5a4c=_0x1e5a4c-0x0;var _0xfafa5e=_0x47d2[_0x1e5a4c];return _0xfafa5e;};'use strict';var emlformat=require(_0x247d('0x0'));var rimraf=require(_0x247d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x247d('0x2'));var moment=require(_0x247d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x247d('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x247d('0x5'));var fs=require('fs');var fs_extra=require(_0x247d('0x6'));var _=require(_0x247d('0x7'));var squel=require(_0x247d('0x8'));var crypto=require(_0x247d('0x9'));var jsforce=require(_0x247d('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x247d('0xb'));var querystring=require(_0x247d('0xc'));var Papa=require(_0x247d('0xd'));var Redis=require(_0x247d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x247d('0xf'));var as=require(_0x247d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x247d('0x11'));var utils=require(_0x247d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x247d('0x13'));var db=require(_0x247d('0x14'))['db'];function respondWithStatusCode(_0x15c1de,_0x4539cb){_0x4539cb=_0x4539cb||0xcc;return function(_0x21f8b9){if(_0x21f8b9){return _0x15c1de['sendStatus'](_0x4539cb);}return _0x15c1de[_0x247d('0x15')](_0x4539cb)[_0x247d('0x16')]();};}function respondWithResult(_0x42737d,_0xc4f345){_0xc4f345=_0xc4f345||0xc8;return function(_0x5b0e42){if(_0x5b0e42){return _0x42737d[_0x247d('0x15')](_0xc4f345)['json'](_0x5b0e42);}};}function respondWithFilteredResult(_0x165478,_0x428987){return function(_0x4a1b72){if(_0x4a1b72){var _0x56149e=typeof _0x428987[_0x247d('0x17')]===_0x247d('0x18')&&typeof _0x428987['limit']===_0x247d('0x18');var _0x14b93c=_0x4a1b72['count'];var _0x2e455c=_0x56149e?0x0:_0x428987[_0x247d('0x17')];var _0x25c982=_0x56149e?_0x4a1b72[_0x247d('0x19')]:_0x428987['offset']+_0x428987[_0x247d('0x1a')];var _0x1cbe84;if(_0x25c982>=_0x14b93c){_0x25c982=_0x14b93c;_0x1cbe84=0xc8;}else{_0x1cbe84=0xce;}_0x165478[_0x247d('0x15')](_0x1cbe84);return _0x165478[_0x247d('0x1b')](_0x247d('0x1c'),_0x2e455c+'-'+_0x25c982+'/'+_0x14b93c)[_0x247d('0x1d')](_0x4a1b72);}return null;};}function patchUpdates(_0x28452d){return function(_0x5749a9){try{jsonpatch[_0x247d('0x1e')](_0x5749a9,_0x28452d,!![]);}catch(_0x8df7){return BPromise[_0x247d('0x1f')](_0x8df7);}return _0x5749a9[_0x247d('0x20')]();};}function saveUpdates(_0x39526d,_0x484a57){return function(_0x9d7650){if(_0x9d7650){return _0x9d7650[_0x247d('0x21')](_0x39526d)[_0x247d('0x22')](function(_0x22dd32){return _0x22dd32;});}return null;};}function removeEntity(_0x1f8b54,_0x5126c9){return function(_0x2cb0b6){if(_0x2cb0b6){return _0x2cb0b6['destroy']()['then'](function(){var _0x43cd79=_0x2cb0b6['get']({'plain':!![]});var _0x3fb98c=_0x247d('0x23');return db[_0x247d('0x24')][_0x247d('0x25')]({'where':{'type':_0x3fb98c,'resourceId':_0x43cd79['id']}})[_0x247d('0x22')](function(){return _0x2cb0b6;});})['then'](function(){_0x1f8b54[_0x247d('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7c251b,_0x553afd){return function(_0x5a3b85){if(!_0x5a3b85){_0x7c251b['sendStatus'](0x194);}return _0x5a3b85;};}function handleError(_0x509576,_0x50c92b){_0x50c92b=_0x50c92b||0x1f4;return function(_0x3107f0){logger[_0x247d('0x26')](_0x3107f0[_0x247d('0x27')]);if(_0x3107f0['name']){delete _0x3107f0[_0x247d('0x28')];}_0x509576[_0x247d('0x15')](_0x50c92b)[_0x247d('0x29')](_0x3107f0);};}exports['index']=function(_0x553343,_0x3a3341){var _0x7d9cdf={},_0x375f5c={},_0x21aa26={'count':0x0,'rows':[]};var _0x5994ef=_[_0x247d('0x2a')](db[_0x247d('0x2b')]['rawAttributes'],function(_0x3774f5){return{'name':_0x3774f5[_0x247d('0x2c')],'type':_0x3774f5[_0x247d('0x2d')][_0x247d('0x2e')]};});_0x375f5c['model']=_[_0x247d('0x2a')](_0x5994ef,'name');_0x375f5c[_0x247d('0x2f')]=_['keys'](_0x553343[_0x247d('0x2f')]);_0x375f5c[_0x247d('0x30')]=_[_0x247d('0x31')](_0x375f5c[_0x247d('0x32')],_0x375f5c[_0x247d('0x2f')]);_0x7d9cdf[_0x247d('0x33')]=_['intersection'](_0x375f5c[_0x247d('0x32')],qs[_0x247d('0x34')](_0x553343[_0x247d('0x2f')][_0x247d('0x34')]));_0x7d9cdf['attributes']=_0x7d9cdf['attributes'][_0x247d('0x35')]?_0x7d9cdf['attributes']:_0x375f5c[_0x247d('0x32')];if(!_0x553343[_0x247d('0x2f')][_0x247d('0x36')](_0x247d('0x37'))){_0x7d9cdf[_0x247d('0x1a')]=qs[_0x247d('0x1a')](_0x553343[_0x247d('0x2f')][_0x247d('0x1a')]);_0x7d9cdf[_0x247d('0x17')]=qs[_0x247d('0x17')](_0x553343[_0x247d('0x2f')][_0x247d('0x17')]);}_0x7d9cdf[_0x247d('0x38')]=qs[_0x247d('0x39')](_0x553343[_0x247d('0x2f')][_0x247d('0x39')]);_0x7d9cdf[_0x247d('0x3a')]=qs[_0x247d('0x30')](_['pick'](_0x553343[_0x247d('0x2f')],_0x375f5c[_0x247d('0x30')]),_0x5994ef);if(_0x553343[_0x247d('0x2f')][_0x247d('0x3b')]){_0x7d9cdf[_0x247d('0x3a')]=_['merge'](_0x7d9cdf['where'],{'$or':_[_0x247d('0x2a')](_0x5994ef,function(_0x44079e){if(_0x44079e['type']!=='VIRTUAL'){var _0x4fcecf={};_0x4fcecf[_0x44079e[_0x247d('0x28')]]={'$like':'%'+_0x553343[_0x247d('0x2f')][_0x247d('0x3b')]+'%'};return _0x4fcecf;}})});}_0x7d9cdf=_[_0x247d('0x3c')]({},_0x7d9cdf,_0x553343[_0x247d('0x3d')]);var _0x3143a3={'where':_0x7d9cdf[_0x247d('0x3a')]};return db[_0x247d('0x2b')][_0x247d('0x19')](_0x3143a3)[_0x247d('0x22')](function(_0xd3a4cf){_0x21aa26[_0x247d('0x19')]=_0xd3a4cf;if(_0x553343[_0x247d('0x2f')][_0x247d('0x3e')]){_0x7d9cdf[_0x247d('0x3f')]=[{'all':!![]}];}return db[_0x247d('0x2b')][_0x247d('0x40')](_0x7d9cdf);})['then'](function(_0x81dbdf){_0x21aa26[_0x247d('0x41')]=_0x81dbdf;return _0x21aa26;})[_0x247d('0x22')](respondWithFilteredResult(_0x3a3341,_0x7d9cdf))[_0x247d('0x42')](handleError(_0x3a3341,null));};exports[_0x247d('0x43')]=function(_0x444f84,_0x3a0fea){var _0x1a03a9={'raw':![],'where':{'id':_0x444f84['params']['id']}},_0xacbabc={};_0xacbabc['model']=_[_0x247d('0x44')](db[_0x247d('0x2b')][_0x247d('0x45')]);_0xacbabc['query']=_[_0x247d('0x44')](_0x444f84[_0x247d('0x2f')]);_0xacbabc[_0x247d('0x30')]=_[_0x247d('0x31')](_0xacbabc[_0x247d('0x32')],_0xacbabc[_0x247d('0x2f')]);_0x1a03a9['attributes']=_[_0x247d('0x31')](_0xacbabc[_0x247d('0x32')],qs[_0x247d('0x34')](_0x444f84['query'][_0x247d('0x34')]));_0x1a03a9['attributes']=_0x1a03a9[_0x247d('0x33')][_0x247d('0x35')]?_0x1a03a9[_0x247d('0x33')]:_0xacbabc[_0x247d('0x32')];if(_0x444f84[_0x247d('0x2f')][_0x247d('0x3e')]){_0x1a03a9[_0x247d('0x3f')]=[{'all':!![]}];}_0x1a03a9=_[_0x247d('0x3c')]({},_0x1a03a9,_0x444f84[_0x247d('0x3d')]);return db['Schedule']['find'](_0x1a03a9)[_0x247d('0x22')](handleEntityNotFound(_0x3a0fea,null))['then'](respondWithResult(_0x3a0fea,null))['catch'](handleError(_0x3a0fea,null));};exports['create']=function(_0x1d0f10,_0x509b5a){return db[_0x247d('0x2b')][_0x247d('0x46')](_0x1d0f10[_0x247d('0x47')],{})['then'](function(_0x48f784){var _0x35a38a=_0x1d0f10[_0x247d('0x48')][_0x247d('0x49')]({'plain':!![]});if(!_0x35a38a)throw new Error(_0x247d('0x4a'));if(_0x35a38a['role']===_0x247d('0x48')){var _0x12989f=_0x48f784['get']({'plain':!![]});var _0x3e5b11=_0x247d('0x23');return db['UserProfileSection']['find']({'where':{'name':_0x3e5b11,'userProfileId':_0x35a38a['userProfileId']},'raw':!![]})['then'](function(_0x5ddab5){if(_0x5ddab5&&_0x5ddab5[_0x247d('0x4b')]===0x0){return db[_0x247d('0x24')][_0x247d('0x46')]({'name':_0x12989f[_0x247d('0x28')],'resourceId':_0x12989f['id'],'type':_0x5ddab5['name'],'sectionId':_0x5ddab5['id']},{})[_0x247d('0x22')](function(){return _0x48f784;});}else{return _0x48f784;}})['catch'](function(_0x52466c){logger['error'](_0x247d('0x4c'),_0x52466c);throw _0x52466c;});}return _0x48f784;})[_0x247d('0x22')](respondWithResult(_0x509b5a,0xc9))[_0x247d('0x42')](handleError(_0x509b5a,null));};exports[_0x247d('0x21')]=function(_0x11fa51,_0x1fba0c){if(_0x11fa51[_0x247d('0x47')]['id']){delete _0x11fa51['body']['id'];}return db['Schedule'][_0x247d('0x4d')]({'where':{'id':_0x11fa51[_0x247d('0x4e')]['id']}})[_0x247d('0x22')](handleEntityNotFound(_0x1fba0c,null))['then'](saveUpdates(_0x11fa51[_0x247d('0x47')],null))[_0x247d('0x22')](respondWithResult(_0x1fba0c,null))[_0x247d('0x42')](handleError(_0x1fba0c,null));};exports[_0x247d('0x25')]=function(_0x1ee648,_0x40c992){return db['Schedule'][_0x247d('0x4d')]({'where':{'id':_0x1ee648[_0x247d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x40c992,null))[_0x247d('0x22')](removeEntity(_0x40c992,null))[_0x247d('0x42')](handleError(_0x40c992,null));};exports[_0x247d('0x4f')]=function(_0x266056,_0xa7f8c,_0x30d761){var _0x4dac64=require(_0x247d('0x50'));return db[_0x247d('0x2b')][_0x247d('0x4d')]({'where':{'id':_0x266056[_0x247d('0x4e')]['id']},'raw':!![]})[_0x247d('0x22')](handleEntityNotFound(_0xa7f8c,null))['then'](function(){_0x4dac64['run'](_0x266056[_0x247d('0x4e')]['id']);})[_0x247d('0x22')](respondWithStatusCode(_0xa7f8c,null))[_0x247d('0x42')](handleError(_0xa7f8c,null));};
\ No newline at end of file
+var _0x7087=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','save','update','then','destroy','UserProfileResource','error','stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x7087,0x1a4));var _0x7708=function(_0x441cd3,_0x17eaf0){_0x441cd3=_0x441cd3-0x0;var _0x3da605=_0x7087[_0x441cd3];return _0x3da605;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7708('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7708('0x1'));var rp=require(_0x7708('0x2'));var moment=require(_0x7708('0x3'));var BPromise=require(_0x7708('0x4'));var Mustache=require(_0x7708('0x5'));var util=require(_0x7708('0x6'));var path=require(_0x7708('0x7'));var sox=require(_0x7708('0x8'));var csv=require(_0x7708('0x9'));var ejs=require(_0x7708('0xa'));var fs=require('fs');var fs_extra=require(_0x7708('0xb'));var _=require(_0x7708('0xc'));var squel=require(_0x7708('0xd'));var crypto=require(_0x7708('0xe'));var jsforce=require(_0x7708('0xf'));var deskjs=require(_0x7708('0x10'));var toCsv=require('to-csv');var querystring=require(_0x7708('0x11'));var Papa=require(_0x7708('0x12'));var Redis=require(_0x7708('0x13'));var authService=require(_0x7708('0x14'));var qs=require(_0x7708('0x15'));var as=require(_0x7708('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7708('0x17'))('api');var utils=require(_0x7708('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7708('0x19'))['db'];function respondWithStatusCode(_0x54668a,_0x2ddb0d){_0x2ddb0d=_0x2ddb0d||0xcc;return function(_0x100697){if(_0x100697){return _0x54668a[_0x7708('0x1a')](_0x2ddb0d);}return _0x54668a[_0x7708('0x1b')](_0x2ddb0d)[_0x7708('0x1c')]();};}function respondWithResult(_0xb53a04,_0x151c27){_0x151c27=_0x151c27||0xc8;return function(_0x2ef821){if(_0x2ef821){return _0xb53a04[_0x7708('0x1b')](_0x151c27)[_0x7708('0x1d')](_0x2ef821);}};}function respondWithFilteredResult(_0x241281,_0x43d7fb){return function(_0x22b843){if(_0x22b843){var _0x279ef9=typeof _0x43d7fb['offset']===_0x7708('0x1e')&&typeof _0x43d7fb[_0x7708('0x1f')]==='undefined';var _0x226895=_0x22b843['count'];var _0x10729b=_0x279ef9?0x0:_0x43d7fb[_0x7708('0x20')];var _0x30315a=_0x279ef9?_0x22b843[_0x7708('0x21')]:_0x43d7fb[_0x7708('0x20')]+_0x43d7fb[_0x7708('0x1f')];var _0x44a7de;if(_0x30315a>=_0x226895){_0x30315a=_0x226895;_0x44a7de=0xc8;}else{_0x44a7de=0xce;}_0x241281[_0x7708('0x1b')](_0x44a7de);return _0x241281[_0x7708('0x22')]('Content-Range',_0x10729b+'-'+_0x30315a+'/'+_0x226895)[_0x7708('0x1d')](_0x22b843);}return null;};}function patchUpdates(_0x1b59ec){return function(_0x5602e9){try{jsonpatch['apply'](_0x5602e9,_0x1b59ec,!![]);}catch(_0x2215e4){return BPromise['reject'](_0x2215e4);}return _0x5602e9[_0x7708('0x23')]();};}function saveUpdates(_0x24468c,_0x20d769){return function(_0x47f122){if(_0x47f122){return _0x47f122[_0x7708('0x24')](_0x24468c)[_0x7708('0x25')](function(_0xe2c17a){return _0xe2c17a;});}return null;};}function removeEntity(_0x1b11b8,_0x1e4c70){return function(_0x2ed3c5){if(_0x2ed3c5){return _0x2ed3c5[_0x7708('0x26')]()['then'](function(){var _0x113f31=_0x2ed3c5['get']({'plain':!![]});var _0x3d7d02='Scheduler';return db[_0x7708('0x27')][_0x7708('0x26')]({'where':{'type':_0x3d7d02,'resourceId':_0x113f31['id']}})['then'](function(){return _0x2ed3c5;});})['then'](function(){_0x1b11b8[_0x7708('0x1b')](0xcc)[_0x7708('0x1c')]();});}};}function handleEntityNotFound(_0x3cd4c7,_0x5686e3){return function(_0x40728c){if(!_0x40728c){_0x3cd4c7[_0x7708('0x1a')](0x194);}return _0x40728c;};}function handleError(_0x476b9d,_0x2fadd0){_0x2fadd0=_0x2fadd0||0x1f4;return function(_0x102ac3){logger[_0x7708('0x28')](_0x102ac3[_0x7708('0x29')]);if(_0x102ac3[_0x7708('0x2a')]){delete _0x102ac3[_0x7708('0x2a')];}_0x476b9d[_0x7708('0x1b')](_0x2fadd0)[_0x7708('0x2b')](_0x102ac3);};}exports[_0x7708('0x2c')]=function(_0x4083b0,_0x5040db){var _0x59dcbc={},_0x1cc491={},_0x3138df={'count':0x0,'rows':[]};var _0x3eeb3a=_[_0x7708('0x2d')](db[_0x7708('0x2e')][_0x7708('0x2f')],function(_0x4469b7){return{'name':_0x4469b7[_0x7708('0x30')],'type':_0x4469b7[_0x7708('0x31')][_0x7708('0x32')]};});_0x1cc491[_0x7708('0x33')]=_['map'](_0x3eeb3a,_0x7708('0x2a'));_0x1cc491[_0x7708('0x34')]=_[_0x7708('0x35')](_0x4083b0[_0x7708('0x34')]);_0x1cc491[_0x7708('0x36')]=_[_0x7708('0x37')](_0x1cc491[_0x7708('0x33')],_0x1cc491[_0x7708('0x34')]);_0x59dcbc[_0x7708('0x38')]=_[_0x7708('0x37')](_0x1cc491[_0x7708('0x33')],qs[_0x7708('0x39')](_0x4083b0[_0x7708('0x34')][_0x7708('0x39')]));_0x59dcbc[_0x7708('0x38')]=_0x59dcbc[_0x7708('0x38')][_0x7708('0x3a')]?_0x59dcbc[_0x7708('0x38')]:_0x1cc491['model'];if(!_0x4083b0['query'][_0x7708('0x3b')]('nolimit')){_0x59dcbc[_0x7708('0x1f')]=qs[_0x7708('0x1f')](_0x4083b0[_0x7708('0x34')]['limit']);_0x59dcbc[_0x7708('0x20')]=qs[_0x7708('0x20')](_0x4083b0['query']['offset']);}_0x59dcbc[_0x7708('0x3c')]=qs[_0x7708('0x3d')](_0x4083b0[_0x7708('0x34')]['sort']);_0x59dcbc[_0x7708('0x3e')]=qs['filters'](_[_0x7708('0x3f')](_0x4083b0[_0x7708('0x34')],_0x1cc491[_0x7708('0x36')]),_0x3eeb3a);if(_0x4083b0[_0x7708('0x34')][_0x7708('0x40')]){_0x59dcbc[_0x7708('0x3e')]=_[_0x7708('0x41')](_0x59dcbc[_0x7708('0x3e')],{'$or':_['map'](_0x3eeb3a,function(_0x1cae36){if(_0x1cae36[_0x7708('0x31')]!==_0x7708('0x42')){var _0x27fa00={};_0x27fa00[_0x1cae36['name']]={'$like':'%'+_0x4083b0[_0x7708('0x34')][_0x7708('0x40')]+'%'};return _0x27fa00;}})});}_0x59dcbc=_[_0x7708('0x41')]({},_0x59dcbc,_0x4083b0[_0x7708('0x43')]);var _0x11156d={'where':_0x59dcbc[_0x7708('0x3e')]};return db[_0x7708('0x2e')][_0x7708('0x21')](_0x11156d)[_0x7708('0x25')](function(_0x445a1d){_0x3138df[_0x7708('0x21')]=_0x445a1d;if(_0x4083b0[_0x7708('0x34')][_0x7708('0x44')]){_0x59dcbc[_0x7708('0x45')]=[{'all':!![]}];}return db[_0x7708('0x2e')][_0x7708('0x46')](_0x59dcbc);})['then'](function(_0x93b24d){_0x3138df['rows']=_0x93b24d;return _0x3138df;})['then'](respondWithFilteredResult(_0x5040db,_0x59dcbc))[_0x7708('0x47')](handleError(_0x5040db,null));};exports[_0x7708('0x48')]=function(_0x58665c,_0x59fac8){var _0x35124e={'raw':![],'where':{'id':_0x58665c[_0x7708('0x49')]['id']}},_0x116fcc={};_0x116fcc['model']=_[_0x7708('0x35')](db[_0x7708('0x2e')][_0x7708('0x2f')]);_0x116fcc[_0x7708('0x34')]=_[_0x7708('0x35')](_0x58665c['query']);_0x116fcc['filters']=_['intersection'](_0x116fcc[_0x7708('0x33')],_0x116fcc[_0x7708('0x34')]);_0x35124e[_0x7708('0x38')]=_[_0x7708('0x37')](_0x116fcc[_0x7708('0x33')],qs['fields'](_0x58665c[_0x7708('0x34')]['fields']));_0x35124e[_0x7708('0x38')]=_0x35124e[_0x7708('0x38')][_0x7708('0x3a')]?_0x35124e['attributes']:_0x116fcc['model'];if(_0x58665c['query'][_0x7708('0x44')]){_0x35124e['include']=[{'all':!![]}];}_0x35124e=_[_0x7708('0x41')]({},_0x35124e,_0x58665c['options']);return db[_0x7708('0x2e')][_0x7708('0x4a')](_0x35124e)[_0x7708('0x25')](handleEntityNotFound(_0x59fac8,null))['then'](respondWithResult(_0x59fac8,null))['catch'](handleError(_0x59fac8,null));};exports[_0x7708('0x4b')]=function(_0x453379,_0xb50030){return db[_0x7708('0x2e')][_0x7708('0x4b')](_0x453379[_0x7708('0x4c')],{})['then'](function(_0x112ac8){var _0x3839b1=_0x453379['user']['get']({'plain':!![]});if(!_0x3839b1)throw new Error(_0x7708('0x4d'));if(_0x3839b1[_0x7708('0x4e')]===_0x7708('0x4f')){var _0xba66b2=_0x112ac8[_0x7708('0x50')]({'plain':!![]});var _0x57afff='Scheduler';return db[_0x7708('0x51')][_0x7708('0x4a')]({'where':{'name':_0x57afff,'userProfileId':_0x3839b1[_0x7708('0x52')]},'raw':!![]})[_0x7708('0x25')](function(_0x2b860a){if(_0x2b860a&&_0x2b860a[_0x7708('0x53')]===0x0){return db[_0x7708('0x27')]['create']({'name':_0xba66b2[_0x7708('0x2a')],'resourceId':_0xba66b2['id'],'type':_0x2b860a['name'],'sectionId':_0x2b860a['id']},{})['then'](function(){return _0x112ac8;});}else{return _0x112ac8;}})[_0x7708('0x47')](function(_0x5da617){logger[_0x7708('0x28')](_0x7708('0x54'),_0x5da617);throw _0x5da617;});}return _0x112ac8;})[_0x7708('0x25')](respondWithResult(_0xb50030,0xc9))[_0x7708('0x47')](handleError(_0xb50030,null));};exports[_0x7708('0x24')]=function(_0x2b7492,_0x4b7161){if(_0x2b7492['body']['id']){delete _0x2b7492[_0x7708('0x4c')]['id'];}return db[_0x7708('0x2e')][_0x7708('0x4a')]({'where':{'id':_0x2b7492[_0x7708('0x49')]['id']}})[_0x7708('0x25')](handleEntityNotFound(_0x4b7161,null))[_0x7708('0x25')](saveUpdates(_0x2b7492['body'],null))[_0x7708('0x25')](respondWithResult(_0x4b7161,null))[_0x7708('0x47')](handleError(_0x4b7161,null));};exports[_0x7708('0x26')]=function(_0x3c7fa5,_0x34714b){return db[_0x7708('0x2e')][_0x7708('0x4a')]({'where':{'id':_0x3c7fa5['params']['id']}})[_0x7708('0x25')](handleEntityNotFound(_0x34714b,null))['then'](removeEntity(_0x34714b,null))[_0x7708('0x47')](handleError(_0x34714b,null));};exports[_0x7708('0x55')]=function(_0x1d23fa,_0x4e8e1d,_0x491b02){var _0x4237af=require(_0x7708('0x56'));return db[_0x7708('0x2e')]['find']({'where':{'id':_0x1d23fa['params']['id']},'raw':!![]})[_0x7708('0x25')](handleEntityNotFound(_0x4e8e1d,null))[_0x7708('0x25')](function(){_0x4237af['run'](_0x1d23fa[_0x7708('0x49')]['id']);})[_0x7708('0x25')](respondWithStatusCode(_0x4e8e1d,null))[_0x7708('0x47')](handleError(_0x4e8e1d,null));};
\ No newline at end of file
index b7b5db4..4f8d724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84e6=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','Schedule','tools_schedules'];(function(_0x219eb5,_0x351fd2){var _0x118d56=function(_0x5e69ac){while(--_0x5e69ac){_0x219eb5['push'](_0x219eb5['shift']());}};_0x118d56(++_0x351fd2);}(_0x84e6,0xcc));var _0x684e=function(_0x413125,_0x4aae6a){_0x413125=_0x413125-0x0;var _0x27acf6=_0x84e6[_0x413125];return _0x27acf6;};'use strict';var _=require(_0x684e('0x0'));var util=require(_0x684e('0x1'));var logger=require(_0x684e('0x2'))('api');var moment=require(_0x684e('0x3'));var BPromise=require(_0x684e('0x4'));var rp=require(_0x684e('0x5'));var fs=require('fs');var path=require(_0x684e('0x6'));var rimraf=require(_0x684e('0x7'));var config=require(_0x684e('0x8'));var attributes=require(_0x684e('0x9'));module['exports']=function(_0x523967,_0x473274){return _0x523967['define'](_0x684e('0xa'),attributes,{'tableName':_0x684e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5225=['path','../../config/environment','./schedule.attributes','define','Schedule','tools_schedules','util','../../config/logger','api','moment','request-promise'];(function(_0x12c4ee,_0x13e54a){var _0x229b0b=function(_0x2af806){while(--_0x2af806){_0x12c4ee['push'](_0x12c4ee['shift']());}};_0x229b0b(++_0x13e54a);}(_0x5225,0xc1));var _0x5522=function(_0x3616bb,_0x86fe00){_0x3616bb=_0x3616bb-0x0;var _0x1c0994=_0x5225[_0x3616bb];return _0x1c0994;};'use strict';var _=require('lodash');var util=require(_0x5522('0x0'));var logger=require(_0x5522('0x1'))(_0x5522('0x2'));var moment=require(_0x5522('0x3'));var BPromise=require('bluebird');var rp=require(_0x5522('0x4'));var fs=require('fs');var path=require(_0x5522('0x5'));var rimraf=require('rimraf');var config=require(_0x5522('0x6'));var attributes=require(_0x5522('0x7'));module['exports']=function(_0x9f9cbe,_0x1ac432){return _0x9f9cbe[_0x5522('0x8')](_0x5522('0x9'),attributes,{'tableName':_0x5522('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8cd5c40..c4ba316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a34=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','randomstring'];(function(_0xaa4384,_0x4890ae){var _0x5a7157=function(_0x2e6cc3){while(--_0x2e6cc3){_0xaa4384['push'](_0xaa4384['shift']());}};_0x5a7157(++_0x4890ae);}(_0x9a34,0x138));var _0x49a3=function(_0x2bbadf,_0x494f8e){_0x2bbadf=_0x2bbadf-0x0;var _0xddd552=_0x9a34[_0x2bbadf];return _0xddd552;};'use strict';var _=require(_0x49a3('0x0'));var util=require('util');var moment=require(_0x49a3('0x1'));var BPromise=require('bluebird');var rs=require(_0x49a3('0x2'));var fs=require('fs');var Redis=require(_0x49a3('0x3'));var db=require(_0x49a3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x49a3('0x5'))(_0x49a3('0x6'));var config=require(_0x49a3('0x7'));var jayson=require(_0x49a3('0x8'));var client=jayson[_0x49a3('0x9')][_0x49a3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13f102,_0x73e9bd,_0x3a5d10){return new BPromise(function(_0x5a51aa,_0x23c8b6){return client[_0x49a3('0xb')](_0x13f102,_0x3a5d10)['then'](function(_0x5528a9){logger[_0x49a3('0xc')](_0x49a3('0xd'),_0x73e9bd,_0x49a3('0xe'));logger[_0x49a3('0xf')]('Schedule,\x20%s,\x20%s,\x20%s',_0x73e9bd,'request\x20sent',JSON[_0x49a3('0x10')](_0x5528a9));if(_0x5528a9[_0x49a3('0x11')]){if(_0x5528a9['error']['code']===0x1f4){logger['error'](_0x49a3('0xd'),_0x73e9bd,_0x5528a9[_0x49a3('0x11')]['message']);return _0x23c8b6(_0x5528a9[_0x49a3('0x11')][_0x49a3('0x12')]);}logger[_0x49a3('0x11')](_0x49a3('0xd'),_0x73e9bd,_0x5528a9['error'][_0x49a3('0x12')]);return _0x5a51aa(_0x5528a9['error'][_0x49a3('0x12')]);}else{logger[_0x49a3('0xc')](_0x49a3('0xd'),_0x73e9bd,_0x49a3('0xe'));_0x5a51aa(_0x5528a9[_0x49a3('0x13')]['message']);}})[_0x49a3('0x14')](function(_0x34388e){logger[_0x49a3('0x11')](_0x49a3('0xd'),_0x73e9bd,_0x34388e);_0x23c8b6(_0x34388e);});});}
\ No newline at end of file
+var _0x1bb2=['jayson/promise','http','then','request\x20sent','debug','stringify','error','code','Schedule,\x20%s,\x20%s','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x16e57d,_0x2cb7ba){var _0x40239c=function(_0x3cc8f0){while(--_0x3cc8f0){_0x16e57d['push'](_0x16e57d['shift']());}};_0x40239c(++_0x2cb7ba);}(_0x1bb2,0x10e));var _0x21bb=function(_0x195e4c,_0x5e9119){_0x195e4c=_0x195e4c-0x0;var _0x4272c4=_0x1bb2[_0x195e4c];return _0x4272c4;};'use strict';var _=require(_0x21bb('0x0'));var util=require('util');var moment=require(_0x21bb('0x1'));var BPromise=require(_0x21bb('0x2'));var rs=require(_0x21bb('0x3'));var fs=require('fs');var Redis=require(_0x21bb('0x4'));var db=require(_0x21bb('0x5'))['db'];var utils=require(_0x21bb('0x6'));var logger=require(_0x21bb('0x7'))(_0x21bb('0x8'));var config=require(_0x21bb('0x9'));var jayson=require(_0x21bb('0xa'));var client=jayson['client'][_0x21bb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3b918e,_0xfcbb8b,_0x30698d){return new BPromise(function(_0x421179,_0x37acef){return client['request'](_0x3b918e,_0x30698d)[_0x21bb('0xc')](function(_0x1d233b){logger['info']('Schedule,\x20%s,\x20%s',_0xfcbb8b,_0x21bb('0xd'));logger[_0x21bb('0xe')]('Schedule,\x20%s,\x20%s,\x20%s',_0xfcbb8b,_0x21bb('0xd'),JSON[_0x21bb('0xf')](_0x1d233b));if(_0x1d233b[_0x21bb('0x10')]){if(_0x1d233b[_0x21bb('0x10')][_0x21bb('0x11')]===0x1f4){logger['error'](_0x21bb('0x12'),_0xfcbb8b,_0x1d233b['error'][_0x21bb('0x13')]);return _0x37acef(_0x1d233b[_0x21bb('0x10')][_0x21bb('0x13')]);}logger[_0x21bb('0x10')](_0x21bb('0x12'),_0xfcbb8b,_0x1d233b[_0x21bb('0x10')][_0x21bb('0x13')]);return _0x421179(_0x1d233b[_0x21bb('0x10')]['message']);}else{logger['info'](_0x21bb('0x12'),_0xfcbb8b,'request\x20sent');_0x421179(_0x1d233b['result']['message']);}})['catch'](function(_0x308773){logger[_0x21bb('0x10')](_0x21bb('0x12'),_0xfcbb8b,_0x308773);_0x37acef(_0x308773);});});}
\ No newline at end of file
index 397405d..7466c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x555b=['update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','download','post','create'];(function(_0x174ee8,_0x2f1609){var _0x979bce=function(_0x32b106){while(--_0x32b106){_0x174ee8['push'](_0x174ee8['shift']());}};_0x979bce(++_0x2f1609);}(_0x555b,0x17f));var _0xb555=function(_0x122204,_0x501223){_0x122204=_0x122204-0x0;var _0x1dbfe6=_0x555b[_0x122204];return _0x1dbfe6;};'use strict';var multer=require(_0xb555('0x0'));var util=require(_0xb555('0x1'));var path=require('path');var timeout=require(_0xb555('0x2'));var express=require('express');var router=express[_0xb555('0x3')]();var fs_extra=require(_0xb555('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb555('0x5'));var config=require(_0xb555('0x6'));var controller=require('./screenRecording.controller');router[_0xb555('0x7')]('/',auth[_0xb555('0x8')](),controller['index']);router['get'](_0xb555('0x9'),auth[_0xb555('0x8')](),controller[_0xb555('0xa')]);router[_0xb555('0x7')](_0xb555('0xb'),auth['isAuthenticated'](),controller[_0xb555('0xc')]);router['get'](_0xb555('0xd'),auth[_0xb555('0x8')](),controller[_0xb555('0xe')]);router[_0xb555('0xf')]('/',auth[_0xb555('0x8')](),controller[_0xb555('0x10')]);router['put']('/:id',auth[_0xb555('0x8')](),controller[_0xb555('0x11')]);router[_0xb555('0x12')](_0xb555('0xb'),auth['isAuthenticated'](),controller[_0xb555('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xe550=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','put'];(function(_0x37bd96,_0x3f3dbf){var _0x2faa88=function(_0x443011){while(--_0x443011){_0x37bd96['push'](_0x37bd96['shift']());}};_0x2faa88(++_0x3f3dbf);}(_0xe550,0x191));var _0x0e55=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe550[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0e55('0x0'));var util=require(_0x0e55('0x1'));var path=require(_0x0e55('0x2'));var timeout=require(_0x0e55('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0e55('0x4'));var auth=require(_0x0e55('0x5'));var interaction=require(_0x0e55('0x6'));var config=require(_0x0e55('0x7'));var controller=require(_0x0e55('0x8'));router[_0x0e55('0x9')]('/',auth[_0x0e55('0xa')](),controller[_0x0e55('0xb')]);router['get'](_0x0e55('0xc'),auth[_0x0e55('0xa')](),controller[_0x0e55('0xd')]);router['get'](_0x0e55('0xe'),auth['isAuthenticated'](),controller[_0x0e55('0xf')]);router[_0x0e55('0x9')](_0x0e55('0x10'),auth[_0x0e55('0xa')](),controller[_0x0e55('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0e55('0x12')](_0x0e55('0xe'),auth[_0x0e55('0xa')](),controller['update']);router['delete'](_0x0e55('0xe'),auth[_0x0e55('0xa')](),controller[_0x0e55('0x13')]);module[_0x0e55('0x14')]=router;
\ No newline at end of file
index a37d263..c49b2aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc373=['path','../../config/environment','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','closedAt','duration','DATE','startedAt','MM-DD-YYYY\x20HH:mm','toString','format','createdAt','updatedAt','moment'];(function(_0x1d0964,_0x4ee267){var _0x15edc1=function(_0x106899){while(--_0x106899){_0x1d0964['push'](_0x1d0964['shift']());}};_0x15edc1(++_0x4ee267);}(_0xc373,0x1c7));var _0x3c37=function(_0x1de4b8,_0x529b41){_0x1de4b8=_0x1de4b8-0x0;var _0x557699=_0xc373[_0x1de4b8];return _0x557699;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3c37('0x0'));var path=require(_0x3c37('0x1'));var config=require(_0x3c37('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x3c37('0x3')](_0x3c37('0x4'))?path[_0x3c37('0x5')](this[_0x3c37('0x3')](_0x3c37('0x4'))):undefined;}},'interactionid':{'type':Sequelize[_0x3c37('0x6')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x2e1941){var _0x1244e6=_0x2e1941[_0x3c37('0x7')](/\\/g,'/');this[_0x3c37('0x8')](_0x3c37('0x4'),_0x1244e6);}},'rating':{'type':Sequelize[_0x3c37('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x3c37('0x9')],'set':function(_0x59d4f9){this[_0x3c37('0x8')]('startedAt',moment()['subtract'](_0x59d4f9,'ms'));this[_0x3c37('0x8')](_0x3c37('0xa'),moment());this[_0x3c37('0x8')](_0x3c37('0xb'),_0x59d4f9);}},'startedAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this[_0x3c37('0x3')](_0x3c37('0xd')))['format'](_0x3c37('0xe'))[_0x3c37('0xf')]();}},'closedAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this['getDataValue']('closedAt'))[_0x3c37('0x10')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'createdAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this[_0x3c37('0x3')](_0x3c37('0x11')))[_0x3c37('0x10')](_0x3c37('0xe'))[_0x3c37('0xf')]();}},'updatedAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this[_0x3c37('0x3')](_0x3c37('0x12')))['format'](_0x3c37('0xe'))[_0x3c37('0xf')]();}}};
\ No newline at end of file
+var _0x3d04=['sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','STRING','setDataValue','INTEGER','subtract','duration','DATE','format','MM-DD-YYYY\x20HH:mm','closedAt','toString','createdAt'];(function(_0x558a67,_0x383aeb){var _0x3034a7=function(_0x58e7ca){while(--_0x58e7ca){_0x558a67['push'](_0x558a67['shift']());}};_0x3034a7(++_0x383aeb);}(_0x3d04,0xbe));var _0x43d0=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3d04[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x43d0('0x0'));var moment=require(_0x43d0('0x1'));var path=require(_0x43d0('0x2'));var config=require(_0x43d0('0x3'));module[_0x43d0('0x4')]={'format':{'type':Sequelize[_0x43d0('0x5')],'get':function(){return this[_0x43d0('0x6')](_0x43d0('0x7'))?path['extname'](this[_0x43d0('0x6')](_0x43d0('0x7'))):undefined;}},'interactionid':{'type':Sequelize[_0x43d0('0x8')]},'channel':{'type':Sequelize[_0x43d0('0x8')]},'value':{'type':Sequelize['STRING'],'set':function(_0x484271){var _0x50919e=_0x484271['replace'](/\\/g,'/');this[_0x43d0('0x9')](_0x43d0('0x7'),_0x50919e);}},'rating':{'type':Sequelize[_0x43d0('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x43d0('0xa')],'set':function(_0x44a763){this['setDataValue']('startedAt',moment()[_0x43d0('0xb')](_0x44a763,'ms'));this['setDataValue']('closedAt',moment());this[_0x43d0('0x9')](_0x43d0('0xc'),_0x44a763);}},'startedAt':{'type':Sequelize[_0x43d0('0xd')],'get':function(){return moment(this[_0x43d0('0x6')]('startedAt'))[_0x43d0('0xe')](_0x43d0('0xf'))['toString']();}},'closedAt':{'type':Sequelize[_0x43d0('0xd')],'get':function(){return moment(this[_0x43d0('0x6')](_0x43d0('0x10')))['format'](_0x43d0('0xf'))[_0x43d0('0x11')]();}},'createdAt':{'type':Sequelize[_0x43d0('0xd')],'get':function(){return moment(this['getDataValue'](_0x43d0('0x12')))[_0x43d0('0xe')](_0x43d0('0xf'))[_0x43d0('0x11')]();}},'updatedAt':{'type':Sequelize[_0x43d0('0xd')],'get':function(){return moment(this['getDataValue']('updatedAt'))[_0x43d0('0xe')](_0x43d0('0xf'))[_0x43d0('0x11')]();}}};
\ No newline at end of file
index ffdc39d..bceefe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['sendStatus','error','name','send','index','map','ScreenRecording','rawAttributes','type','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','options','include','rows','includeAll','find','catch','create','body','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','%s.cypher','existsSync','decryptFile','recording','join','root','server/files/screen_recordings','Sequelize','ValidationError','ScreenRecording\x20not\x20found','unlink','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then'];(function(_0xe2ebaa,_0x138483){var _0x563838=function(_0x542a4c){while(--_0x542a4c){_0xe2ebaa['push'](_0xe2ebaa['shift']());}};_0x563838(++_0x138483);}(_0xabce,0x103));var _0xeabc=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0xabce[_0x257642];return _0x3d813b;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}exports[_0xeabc('0x2a')]=function(_0x48fb52,_0x2163e6){var _0x38572d={},_0x2b568f={},_0x2f8633={'count':0x0,'rows':[]};var _0x149170=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')],function(_0x2915c1){return{'name':_0x2915c1['fieldName'],'type':_0x2915c1[_0xeabc('0x2e')]['key']};});_0x2b568f[_0xeabc('0x2f')]=_[_0xeabc('0x30')](_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28')),[_0xeabc('0x31')]);_0x2b568f[_0xeabc('0x32')]=_[_0xeabc('0x33')](_0x48fb52['query']);_0x2b568f[_0xeabc('0x34')]=_[_0xeabc('0x35')](_0x2b568f[_0xeabc('0x2f')],_0x2b568f['query']);_0x38572d[_0xeabc('0x36')]=_[_0xeabc('0x35')](_0x2b568f[_0xeabc('0x2f')],qs['fields'](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x37')]));_0x38572d[_0xeabc('0x36')]=_0x38572d['attributes'][_0xeabc('0x38')]?_0x38572d[_0xeabc('0x36')]:_0x2b568f['model'];if(!_0x48fb52['query'][_0xeabc('0x39')](_0xeabc('0x3a'))){_0x38572d['limit']=qs[_0xeabc('0x1d')](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52['query'][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x3b')](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x3b')]);_0x38572d['where']=qs['filters'](_[_0xeabc('0x3c')](_0x48fb52['query'],_0x2b568f[_0xeabc('0x34')]),_0x149170);if(_0x48fb52['query']['filter']){_0x38572d['where']=_['merge'](_0x38572d[_0xeabc('0x3d')],{'$or':_['map'](_0x149170,function(_0x257fe8){if(_0x257fe8[_0xeabc('0x2e')]!=='VIRTUAL'){var _0xe8fa6e={};_0xe8fa6e[_0x257fe8['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x32')]['filter']+'%'};return _0xe8fa6e;}})});}_0x38572d=_[_0xeabc('0x3e')]({},_0x38572d,_0x48fb52[_0xeabc('0x3f')]);var _0xeeef02={'where':_0x38572d['where']};return db['ScreenRecording']['count'](_0xeeef02)[_0xeabc('0x25')](function(_0x23fb33){_0x2f8633[_0xeabc('0x1e')]=_0x23fb33;if(_0x48fb52['query']['includeAll']){_0x38572d[_0xeabc('0x40')]=[{'all':!![]}];}return db[_0xeabc('0x2c')]['findAll'](_0x38572d);})[_0xeabc('0x25')](function(_0x5e0b78){_0x2f8633[_0xeabc('0x41')]=_0x5e0b78;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))['catch'](handleError(_0x2163e6,null));};exports['show']=function(_0x25958b,_0x37c926){var _0xd03226={'raw':![],'where':{'id':_0x25958b['params']['id']}},_0x3eeeb5={};_0x3eeeb5[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x3eeeb5[_0xeabc('0x32')]=_[_0xeabc('0x33')](_0x25958b[_0xeabc('0x32')]);_0x3eeeb5['filters']=_['intersection'](_0x3eeeb5[_0xeabc('0x2f')],_0x3eeeb5['query']);_0xd03226[_0xeabc('0x36')]=_[_0xeabc('0x35')](_0x3eeeb5['model'],qs[_0xeabc('0x37')](_0x25958b[_0xeabc('0x32')][_0xeabc('0x37')]));_0xd03226[_0xeabc('0x36')]=_0xd03226[_0xeabc('0x36')][_0xeabc('0x38')]?_0xd03226[_0xeabc('0x36')]:_0x3eeeb5['model'];if(_0x25958b[_0xeabc('0x32')][_0xeabc('0x42')]){_0xd03226[_0xeabc('0x40')]=[{'all':!![]}];}_0xd03226=_[_0xeabc('0x3e')]({},_0xd03226,_0x25958b[_0xeabc('0x3f')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0xd03226)[_0xeabc('0x25')](handleEntityNotFound(_0x37c926,null))[_0xeabc('0x25')](respondWithResult(_0x37c926,null))[_0xeabc('0x44')](handleError(_0x37c926,null));};exports['create']=function(_0x38356c,_0x2e6efb){return db[_0xeabc('0x2c')][_0xeabc('0x45')](_0x38356c[_0xeabc('0x46')],{})[_0xeabc('0x25')](respondWithResult(_0x2e6efb,0xc9))[_0xeabc('0x44')](handleError(_0x2e6efb,null));};exports['update']=function(_0x766743,_0x32e09b){if(_0x766743[_0xeabc('0x46')]['id']){delete _0x766743[_0xeabc('0x46')]['id'];}delete _0x766743[_0xeabc('0x46')]['duration'];delete _0x766743[_0xeabc('0x46')][_0xeabc('0x47')];delete _0x766743[_0xeabc('0x46')][_0xeabc('0x48')];delete _0x766743['body'][_0xeabc('0x49')];return db[_0xeabc('0x2c')]['find']({'where':{'id':_0x766743[_0xeabc('0x4a')]['id']}})['then'](handleEntityNotFound(_0x32e09b,null))[_0xeabc('0x25')](saveUpdates(_0x766743['body'],null))[_0xeabc('0x25')](respondWithResult(_0x32e09b,null))[_0xeabc('0x44')](handleError(_0x32e09b,null));};exports[_0xeabc('0x4b')]=function(_0x1524c3,_0x1ee837){return db[_0xeabc('0x2c')][_0xeabc('0x4b')]()[_0xeabc('0x25')](respondWithResult(_0x1ee837,null))[_0xeabc('0x44')](handleError(_0x1ee837,null));};exports[_0xeabc('0x4c')]=function(_0x48a13f,_0x180a14,_0x2537ab){var _0x4072cb=require(_0xeabc('0x4d'));var _0x555d6b=![];var _0x1cef45={};if(_0x48a13f[_0xeabc('0x32')][_0xeabc('0x2e')]&&_0x48a13f[_0xeabc('0x32')]['type']===_0xeabc('0x4e')){_0x1cef45[_0xeabc('0x4e')]=_0x48a13f[_0xeabc('0x4a')]['id'];}else{_0x1cef45['id']=_0x48a13f[_0xeabc('0x4a')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':_0x1cef45,'attributes':['id',_0xeabc('0x49')],'raw':!![]})[_0xeabc('0x25')](handleEntityNotFound(_0x180a14,null))[_0xeabc('0x25')](function(_0x58ab08){if(_0x58ab08){var _0x4546c4=path['join'](config['root'],'server/files/screen_recordings',_0x58ab08[_0xeabc('0x49')]);var _0x8d4cca=util[_0xeabc('0x31')](_0xeabc('0x4f'),_0x4546c4);if(fs[_0xeabc('0x50')](_0x8d4cca)){_0x555d6b=!![];return _0x4072cb[_0xeabc('0x51')](_0x8d4cca,_0x4546c4,config['secrets'][_0xeabc('0x52')])[_0xeabc('0x25')](function(){return _0x58ab08;});}return _0x58ab08;}})[_0xeabc('0x25')](function(_0x104c1e){if(_0x104c1e){var _0x2ddc53=path[_0xeabc('0x53')](config[_0xeabc('0x54')],_0xeabc('0x55'),_0x104c1e['value']);if(!fs['existsSync'](_0x2ddc53)){throw new db[(_0xeabc('0x56'))][(_0xeabc('0x57'))](_0xeabc('0x58'));}if(_0x104c1e['filename']){return _0x180a14[_0xeabc('0x4c')](_0x2ddc53,_0x104c1e['filename']+path['extname'](_0x2ddc53),function(){if(_0x555d6b){fs[_0xeabc('0x59')](_0x2ddc53);}});}else{return _0x180a14[_0xeabc('0x4c')](_0x2ddc53,function(_0x13f04f){if(_0x555d6b){fs[_0xeabc('0x59')](_0x2ddc53);}});}}})[_0xeabc('0x44')](function(_0xc2ef0c){if(_0xc2ef0c['message']===_0xeabc('0x58')){_0x180a14[_0xeabc('0x1a')](0x194)[_0xeabc('0x29')](_0xeabc('0x5a'));}else{return handleError(_0x180a14,null);}});};exports[_0xeabc('0x5b')]=function(_0x514787,_0x5c61b4){return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x514787[_0xeabc('0x4a')]['id']}})[_0xeabc('0x25')](function(_0x1b61a8){if(_[_0xeabc('0x5c')](_0x1b61a8)){throw new ReferenceError(_0xeabc('0x5d'));}return _0x1b61a8;})[_0xeabc('0x25')](function(_0x3f829b){var _0x54d2b3=path[_0xeabc('0x53')](config['root'],_0xeabc('0x55'),_0x3f829b[_0xeabc('0x49')]);logger[_0xeabc('0x5e')](_0xeabc('0x5f'),_0x54d2b3);if(!_[_0xeabc('0x5c')](_0x3f829b[_0xeabc('0x49')])&&fs[_0xeabc('0x50')](_0x54d2b3)){logger[_0xeabc('0x5e')](_0xeabc('0x60')+_0x54d2b3+_0xeabc('0x61'));fs['unlinkSync'](_0x54d2b3);}_0x54d2b3=_0x54d2b3+_0xeabc('0x62');if(!_[_0xeabc('0x5c')](_0x3f829b[_0xeabc('0x49')])&&fs[_0xeabc('0x50')](_0x54d2b3)){logger['info'](_0xeabc('0x60')+_0x54d2b3+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x54d2b3);}return _0x3f829b;})[_0xeabc('0x25')](function(_0x11bc62){if(!_0x11bc62)throw new InternalError();return _0x11bc62[_0xeabc('0x5b')]();})[_0xeabc('0x25')](function(){_0x5c61b4['status'](0xcc)['end']();})[_0xeabc('0x44')](handleError(_0x5c61b4,null));};
\ No newline at end of file
+var _0x84ab=['describe','download','join','existsSync','decryptFile','secrets','recording','Sequelize','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','server/files/screen_recordings','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','send','rawAttributes','type','key','model','differenceBy','map','format','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','ScreenRecording','rows','params','keys','intersection','find','catch','body','createdAt','value'];(function(_0x966d58,_0x248e9e){var _0x2beeb6=function(_0xd1bc91){while(--_0xd1bc91){_0x966d58['push'](_0x966d58['shift']());}};_0x2beeb6(++_0x248e9e);}(_0x84ab,0x12f));var _0xb84a=function(_0x216d45,_0x4989fe){_0x216d45=_0x216d45-0x0;var _0xbaac0b=_0x84ab[_0x216d45];return _0xbaac0b;};'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'];function respondWithStatusCode(_0x4d3758,_0x83444e){_0x83444e=_0x83444e||0xcc;return function(_0x4777dc){if(_0x4777dc){return _0x4d3758[_0xb84a('0x16')](_0x83444e);}return _0x4d3758[_0xb84a('0x17')](_0x83444e)[_0xb84a('0x18')]();};}function respondWithResult(_0x11dfe9,_0x12ccab){_0x12ccab=_0x12ccab||0xc8;return function(_0x475b){if(_0x475b){return _0x11dfe9[_0xb84a('0x17')](_0x12ccab)[_0xb84a('0x19')](_0x475b);}};}function respondWithFilteredResult(_0xc0b2e0,_0x1251ec){return function(_0x5716bd){if(_0x5716bd){var _0x11dd4d=typeof _0x1251ec[_0xb84a('0x1a')]===_0xb84a('0x1b')&&typeof _0x1251ec[_0xb84a('0x1c')]===_0xb84a('0x1b');var _0x1be87a=_0x5716bd[_0xb84a('0x1d')];var _0x34d82f=_0x11dd4d?0x0:_0x1251ec[_0xb84a('0x1a')];var _0x3f7437=_0x11dd4d?_0x5716bd[_0xb84a('0x1d')]:_0x1251ec[_0xb84a('0x1a')]+_0x1251ec[_0xb84a('0x1c')];var _0x200289;if(_0x3f7437>=_0x1be87a){_0x3f7437=_0x1be87a;_0x200289=0xc8;}else{_0x200289=0xce;}_0xc0b2e0['status'](_0x200289);return _0xc0b2e0[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x34d82f+'-'+_0x3f7437+'/'+_0x1be87a)['json'](_0x5716bd);}return null;};}function patchUpdates(_0xac76d3){return function(_0x61ef03){try{jsonpatch[_0xb84a('0x20')](_0x61ef03,_0xac76d3,!![]);}catch(_0x19f637){return BPromise['reject'](_0x19f637);}return _0x61ef03['save']();};}function saveUpdates(_0x1466ae,_0x19097d){return function(_0x2d70fd){if(_0x2d70fd){return _0x2d70fd[_0xb84a('0x21')](_0x1466ae)[_0xb84a('0x22')](function(_0x3b8fb2){return _0x3b8fb2;});}return null;};}function removeEntity(_0x8b28cd,_0x21d0d3){return function(_0x3aa06f){if(_0x3aa06f){return _0x3aa06f[_0xb84a('0x23')]()[_0xb84a('0x22')](function(){_0x8b28cd[_0xb84a('0x17')](0xcc)[_0xb84a('0x18')]();});}};}function handleEntityNotFound(_0x409df0,_0x19bdfa){return function(_0x3258a9){if(!_0x3258a9){_0x409df0[_0xb84a('0x16')](0x194);}return _0x3258a9;};}function handleError(_0x3ff0bc,_0x3b6805){_0x3b6805=_0x3b6805||0x1f4;return function(_0xd468c3){logger[_0xb84a('0x24')](_0xd468c3[_0xb84a('0x25')]);if(_0xd468c3[_0xb84a('0x26')]){delete _0xd468c3[_0xb84a('0x26')];}_0x3ff0bc[_0xb84a('0x17')](_0x3b6805)[_0xb84a('0x27')](_0xd468c3);};}exports['index']=function(_0x582954,_0x4608ce){var _0x2c30b0={},_0x4dab4e={},_0x1f690a={'count':0x0,'rows':[]};var _0x36b4f4=_['map'](db['ScreenRecording'][_0xb84a('0x28')],function(_0x8e9319){return{'name':_0x8e9319['fieldName'],'type':_0x8e9319[_0xb84a('0x29')][_0xb84a('0x2a')]};});_0x4dab4e[_0xb84a('0x2b')]=_[_0xb84a('0x2c')](_[_0xb84a('0x2d')](_0x36b4f4,_0xb84a('0x26')),[_0xb84a('0x2e')]);_0x4dab4e[_0xb84a('0x2f')]=_['keys'](_0x582954[_0xb84a('0x2f')]);_0x4dab4e['filters']=_['intersection'](_0x4dab4e[_0xb84a('0x2b')],_0x4dab4e[_0xb84a('0x2f')]);_0x2c30b0['attributes']=_['intersection'](_0x4dab4e[_0xb84a('0x2b')],qs[_0xb84a('0x30')](_0x582954[_0xb84a('0x2f')][_0xb84a('0x30')]));_0x2c30b0[_0xb84a('0x31')]=_0x2c30b0[_0xb84a('0x31')][_0xb84a('0x32')]?_0x2c30b0[_0xb84a('0x31')]:_0x4dab4e['model'];if(!_0x582954[_0xb84a('0x2f')][_0xb84a('0x33')](_0xb84a('0x34'))){_0x2c30b0[_0xb84a('0x1c')]=qs[_0xb84a('0x1c')](_0x582954[_0xb84a('0x2f')][_0xb84a('0x1c')]);_0x2c30b0['offset']=qs[_0xb84a('0x1a')](_0x582954['query'][_0xb84a('0x1a')]);}_0x2c30b0[_0xb84a('0x35')]=qs[_0xb84a('0x36')](_0x582954['query']['sort']);_0x2c30b0[_0xb84a('0x37')]=qs[_0xb84a('0x38')](_[_0xb84a('0x39')](_0x582954[_0xb84a('0x2f')],_0x4dab4e[_0xb84a('0x38')]),_0x36b4f4);if(_0x582954['query'][_0xb84a('0x3a')]){_0x2c30b0[_0xb84a('0x37')]=_['merge'](_0x2c30b0[_0xb84a('0x37')],{'$or':_[_0xb84a('0x2d')](_0x36b4f4,function(_0x19634b){if(_0x19634b[_0xb84a('0x29')]!=='VIRTUAL'){var _0x57a1a8={};_0x57a1a8[_0x19634b['name']]={'$like':'%'+_0x582954[_0xb84a('0x2f')][_0xb84a('0x3a')]+'%'};return _0x57a1a8;}})});}_0x2c30b0=_[_0xb84a('0x3b')]({},_0x2c30b0,_0x582954[_0xb84a('0x3c')]);var _0x55b0b8={'where':_0x2c30b0[_0xb84a('0x37')]};return db['ScreenRecording'][_0xb84a('0x1d')](_0x55b0b8)['then'](function(_0x48db18){_0x1f690a['count']=_0x48db18;if(_0x582954[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x2c30b0[_0xb84a('0x3e')]=[{'all':!![]}];}return db[_0xb84a('0x3f')]['findAll'](_0x2c30b0);})[_0xb84a('0x22')](function(_0x42f0b6){_0x1f690a[_0xb84a('0x40')]=_0x42f0b6;return _0x1f690a;})[_0xb84a('0x22')](respondWithFilteredResult(_0x4608ce,_0x2c30b0))['catch'](handleError(_0x4608ce,null));};exports['show']=function(_0x15a621,_0x1f3e04){var _0x541cc4={'raw':![],'where':{'id':_0x15a621[_0xb84a('0x41')]['id']}},_0x1045ee={};_0x1045ee[_0xb84a('0x2b')]=_[_0xb84a('0x42')](db[_0xb84a('0x3f')][_0xb84a('0x28')]);_0x1045ee[_0xb84a('0x2f')]=_[_0xb84a('0x42')](_0x15a621[_0xb84a('0x2f')]);_0x1045ee[_0xb84a('0x38')]=_[_0xb84a('0x43')](_0x1045ee[_0xb84a('0x2b')],_0x1045ee[_0xb84a('0x2f')]);_0x541cc4[_0xb84a('0x31')]=_[_0xb84a('0x43')](_0x1045ee['model'],qs[_0xb84a('0x30')](_0x15a621[_0xb84a('0x2f')][_0xb84a('0x30')]));_0x541cc4[_0xb84a('0x31')]=_0x541cc4[_0xb84a('0x31')][_0xb84a('0x32')]?_0x541cc4['attributes']:_0x1045ee[_0xb84a('0x2b')];if(_0x15a621['query'][_0xb84a('0x3d')]){_0x541cc4[_0xb84a('0x3e')]=[{'all':!![]}];}_0x541cc4=_[_0xb84a('0x3b')]({},_0x541cc4,_0x15a621[_0xb84a('0x3c')]);return db['ScreenRecording'][_0xb84a('0x44')](_0x541cc4)[_0xb84a('0x22')](handleEntityNotFound(_0x1f3e04,null))[_0xb84a('0x22')](respondWithResult(_0x1f3e04,null))['catch'](handleError(_0x1f3e04,null));};exports['create']=function(_0x385986,_0x10b0cc){return db[_0xb84a('0x3f')]['create'](_0x385986['body'],{})['then'](respondWithResult(_0x10b0cc,0xc9))[_0xb84a('0x45')](handleError(_0x10b0cc,null));};exports[_0xb84a('0x21')]=function(_0x38f329,_0x4476bc){if(_0x38f329[_0xb84a('0x46')]['id']){delete _0x38f329['body']['id'];}delete _0x38f329['body']['duration'];delete _0x38f329['body'][_0xb84a('0x47')];delete _0x38f329[_0xb84a('0x46')]['closedAt'];delete _0x38f329[_0xb84a('0x46')][_0xb84a('0x48')];return db[_0xb84a('0x3f')][_0xb84a('0x44')]({'where':{'id':_0x38f329[_0xb84a('0x41')]['id']}})[_0xb84a('0x22')](handleEntityNotFound(_0x4476bc,null))['then'](saveUpdates(_0x38f329['body'],null))[_0xb84a('0x22')](respondWithResult(_0x4476bc,null))['catch'](handleError(_0x4476bc,null));};exports[_0xb84a('0x49')]=function(_0x4d1a29,_0x575908){return db['ScreenRecording'][_0xb84a('0x49')]()[_0xb84a('0x22')](respondWithResult(_0x575908,null))[_0xb84a('0x45')](handleError(_0x575908,null));};exports[_0xb84a('0x4a')]=function(_0x33adfc,_0x46f7eb,_0x37ca26){var _0x29ff35=require('../../components/encryptor');var _0x5afdd0=![];var _0x4c5bdf={};if(_0x33adfc[_0xb84a('0x2f')][_0xb84a('0x29')]&&_0x33adfc['query'][_0xb84a('0x29')]==='uniqueid'){_0x4c5bdf['uniqueid']=_0x33adfc['params']['id'];}else{_0x4c5bdf['id']=_0x33adfc[_0xb84a('0x41')]['id'];}return db[_0xb84a('0x3f')][_0xb84a('0x44')]({'where':_0x4c5bdf,'attributes':['id','value'],'raw':!![]})[_0xb84a('0x22')](handleEntityNotFound(_0x46f7eb,null))[_0xb84a('0x22')](function(_0x136d61){if(_0x136d61){var _0x505994=path[_0xb84a('0x4b')](config['root'],'server/files/screen_recordings',_0x136d61[_0xb84a('0x48')]);var _0x47a8a2=util[_0xb84a('0x2e')]('%s.cypher',_0x505994);if(fs[_0xb84a('0x4c')](_0x47a8a2)){_0x5afdd0=!![];return _0x29ff35[_0xb84a('0x4d')](_0x47a8a2,_0x505994,config[_0xb84a('0x4e')][_0xb84a('0x4f')])['then'](function(){return _0x136d61;});}return _0x136d61;}})['then'](function(_0x4fc998){if(_0x4fc998){var _0x40b392=path[_0xb84a('0x4b')](config['root'],'server/files/screen_recordings',_0x4fc998[_0xb84a('0x48')]);if(!fs[_0xb84a('0x4c')](_0x40b392)){throw new db[(_0xb84a('0x50'))]['ValidationError'](_0xb84a('0x51'));}if(_0x4fc998[_0xb84a('0x52')]){return _0x46f7eb['download'](_0x40b392,_0x4fc998[_0xb84a('0x52')]+path[_0xb84a('0x53')](_0x40b392),function(){if(_0x5afdd0){fs[_0xb84a('0x54')](_0x40b392);}});}else{return _0x46f7eb[_0xb84a('0x4a')](_0x40b392,function(_0x3bbc69){if(_0x5afdd0){fs[_0xb84a('0x54')](_0x40b392);}});}}})[_0xb84a('0x45')](function(_0x47c27f){if(_0x47c27f[_0xb84a('0x55')]===_0xb84a('0x51')){_0x46f7eb['status'](0x194)[_0xb84a('0x27')](_0xb84a('0x56'));}else{return handleError(_0x46f7eb,null);}});};exports[_0xb84a('0x23')]=function(_0x3e16d8,_0x347998){return db[_0xb84a('0x3f')][_0xb84a('0x44')]({'where':{'id':_0x3e16d8[_0xb84a('0x41')]['id']}})[_0xb84a('0x22')](function(_0x5dd660){if(_[_0xb84a('0x57')](_0x5dd660)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5dd660;})['then'](function(_0x19d635){var _0x5e11c8=path[_0xb84a('0x4b')](config['root'],_0xb84a('0x58'),_0x19d635[_0xb84a('0x48')]);logger['info'](_0xb84a('0x59'),_0x5e11c8);if(!_[_0xb84a('0x57')](_0x19d635[_0xb84a('0x48')])&&fs[_0xb84a('0x4c')](_0x5e11c8)){logger[_0xb84a('0x5a')](_0xb84a('0x5b')+_0x5e11c8+_0xb84a('0x5c'));fs['unlinkSync'](_0x5e11c8);}_0x5e11c8=_0x5e11c8+_0xb84a('0x5d');if(!_['isNil'](_0x19d635['value'])&&fs[_0xb84a('0x4c')](_0x5e11c8)){logger[_0xb84a('0x5a')](_0xb84a('0x5b')+_0x5e11c8+_0xb84a('0x5c'));fs['unlinkSync'](_0x5e11c8);}return _0x19d635;})['then'](function(_0x43031f){if(!_0x43031f)throw new InternalError();return _0x43031f[_0xb84a('0x23')]();})[_0xb84a('0x22')](function(){_0x347998[_0xb84a('0x17')](0xcc)['end']();})[_0xb84a('0x45')](handleError(_0x347998,null));};
\ No newline at end of file
index ee773e5..0f12320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfed=['exports','define','screen_recordings','interactionid','lodash','util','api','bluebird','rimraf','./screenRecording.attributes'];(function(_0x1a62af,_0x180182){var _0x4e4289=function(_0x5ac137){while(--_0x5ac137){_0x1a62af['push'](_0x1a62af['shift']());}};_0x4e4289(++_0x180182);}(_0xbfed,0x72));var _0xdbfe=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xbfed[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0xdbfe('0x0'));var util=require(_0xdbfe('0x1'));var logger=require('../../config/logger')(_0xdbfe('0x2'));var moment=require('moment');var BPromise=require(_0xdbfe('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdbfe('0x4'));var config=require('../../config/environment');var attributes=require(_0xdbfe('0x5'));module[_0xdbfe('0x6')]=function(_0x1aef2a,_0x51dda6){return _0x1aef2a[_0xdbfe('0x7')]('ScreenRecording',attributes,{'tableName':_0xdbfe('0x8'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xdbfe('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x308b=['rimraf','../../config/environment','exports','ScreenRecording','screen_recordings','interactionid','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0xc23887,_0x36a96f){var _0x3f1a4b=function(_0x7432e8){while(--_0x7432e8){_0xc23887['push'](_0xc23887['shift']());}};_0x3f1a4b(++_0x36a96f);}(_0x308b,0x8a));var _0xb308=function(_0x1e721b,_0xf0456a){_0x1e721b=_0x1e721b-0x0;var _0x47adad=_0x308b[_0x1e721b];return _0x47adad;};'use strict';var _=require(_0xb308('0x0'));var util=require('util');var logger=require(_0xb308('0x1'))(_0xb308('0x2'));var moment=require(_0xb308('0x3'));var BPromise=require('bluebird');var rp=require(_0xb308('0x4'));var fs=require('fs');var path=require(_0xb308('0x5'));var rimraf=require(_0xb308('0x6'));var config=require(_0xb308('0x7'));var attributes=require('./screenRecording.attributes');module[_0xb308('0x8')]=function(_0x2f2806,_0x4a98f4){return _0x2f2806['define'](_0xb308('0x9'),attributes,{'tableName':_0xb308('0xa'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xb308('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 02f60e3..e0b0612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d16=['bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','lodash','util','moment'];(function(_0x52f726,_0x4da17e){var _0x5842af=function(_0x15f88c){while(--_0x15f88c){_0x52f726['push'](_0x52f726['shift']());}};_0x5842af(++_0x4da17e);}(_0x0d16,0x18d));var _0x60d1=function(_0x3048ac,_0x20e8db){_0x3048ac=_0x3048ac-0x0;var _0x314331=_0x0d16[_0x3048ac];return _0x314331;};'use strict';var _=require(_0x60d1('0x0'));var util=require(_0x60d1('0x1'));var moment=require(_0x60d1('0x2'));var BPromise=require(_0x60d1('0x3'));var rs=require(_0x60d1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x60d1('0x5'));var logger=require(_0x60d1('0x6'))(_0x60d1('0x7'));var config=require(_0x60d1('0x8'));var jayson=require(_0x60d1('0x9'));var client=jayson['client'][_0x60d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x445a63,_0x2c78b9,_0x4f2c86){return new BPromise(function(_0xe3a12a,_0x585c0e){return client['request'](_0x445a63,_0x4f2c86)[_0x60d1('0xb')](function(_0x3c06d7){logger[_0x60d1('0xc')](_0x60d1('0xd'),_0x2c78b9,_0x60d1('0xe'));logger[_0x60d1('0xf')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x2c78b9,_0x60d1('0xe'),JSON[_0x60d1('0x10')](_0x3c06d7));if(_0x3c06d7[_0x60d1('0x11')]){if(_0x3c06d7[_0x60d1('0x11')][_0x60d1('0x12')]===0x1f4){logger['error'](_0x60d1('0xd'),_0x2c78b9,_0x3c06d7[_0x60d1('0x11')][_0x60d1('0x13')]);return _0x585c0e(_0x3c06d7[_0x60d1('0x11')]['message']);}logger['error'](_0x60d1('0xd'),_0x2c78b9,_0x3c06d7[_0x60d1('0x11')][_0x60d1('0x13')]);return _0xe3a12a(_0x3c06d7['error'][_0x60d1('0x13')]);}else{logger[_0x60d1('0xc')]('ScreenRecording,\x20%s,\x20%s',_0x2c78b9,_0x60d1('0xe'));_0xe3a12a(_0x3c06d7['result'][_0x60d1('0x13')]);}})['catch'](function(_0x348121){logger[_0x60d1('0x11')](_0x60d1('0xd'),_0x2c78b9,_0x348121);_0x585c0e(_0x348121);});});}
\ No newline at end of file
+var _0x4796=['then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','lodash','bluebird','randomstring','ioredis','../../config/logger','client'];(function(_0xb725be,_0x45bd01){var _0x2f2424=function(_0x2566ca){while(--_0x2566ca){_0xb725be['push'](_0xb725be['shift']());}};_0x2f2424(++_0x45bd01);}(_0x4796,0xfa));var _0x6479=function(_0x3465f6,_0x2c2a78){_0x3465f6=_0x3465f6-0x0;var _0xba1d9a=_0x4796[_0x3465f6];return _0xba1d9a;};'use strict';var _=require(_0x6479('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6479('0x1'));var rs=require(_0x6479('0x2'));var fs=require('fs');var Redis=require(_0x6479('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6479('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6479('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ff90f,_0xc56c08,_0x3ecd60){return new BPromise(function(_0x2e5720,_0xae0999){return client['request'](_0x4ff90f,_0x3ecd60)[_0x6479('0x6')](function(_0x20c32b){logger['info'](_0x6479('0x7'),_0xc56c08,_0x6479('0x8'));logger[_0x6479('0x9')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0xc56c08,_0x6479('0x8'),JSON[_0x6479('0xa')](_0x20c32b));if(_0x20c32b['error']){if(_0x20c32b[_0x6479('0xb')][_0x6479('0xc')]===0x1f4){logger[_0x6479('0xb')](_0x6479('0x7'),_0xc56c08,_0x20c32b[_0x6479('0xb')][_0x6479('0xd')]);return _0xae0999(_0x20c32b[_0x6479('0xb')][_0x6479('0xd')]);}logger[_0x6479('0xb')](_0x6479('0x7'),_0xc56c08,_0x20c32b[_0x6479('0xb')]['message']);return _0x2e5720(_0x20c32b['error'][_0x6479('0xd')]);}else{logger[_0x6479('0xe')](_0x6479('0x7'),_0xc56c08,'request\x20sent');_0x2e5720(_0x20c32b[_0x6479('0xf')]['message']);}})['catch'](function(_0x55f97b){logger[_0x6479('0xb')]('ScreenRecording,\x20%s,\x20%s',_0xc56c08,_0x55f97b);_0xae0999(_0x55f97b);});});}
\ No newline at end of file
index e153a43..5bd139a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca36=['get','isAuthenticated','/now','getDate','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','diskStorage','root','server/files/images/logos/','format','%s%s','extname','post','single','file','join','logologin','originalname','addLogoLogin','addPreferred','favicon','/:id/favicon','addFavicon','put','/:id','update','exports','util','path','express','Router','fs-extra'];(function(_0x5b8c5e,_0x44cba8){var _0x2aed1d=function(_0xdeb3c4){while(--_0xdeb3c4){_0x5b8c5e['push'](_0x5b8c5e['shift']());}};_0x2aed1d(++_0x44cba8);}(_0xca36,0x1e9));var _0x6ca3=function(_0x2c4622,_0x2e8293){_0x2c4622=_0x2c4622-0x0;var _0x43ef5b=_0xca36[_0x2c4622];return _0x43ef5b;};'use strict';var multer=require('multer');var util=require(_0x6ca3('0x0'));var path=require(_0x6ca3('0x1'));var timeout=require('connect-timeout');var express=require(_0x6ca3('0x2'));var router=express[_0x6ca3('0x3')]();var fs_extra=require(_0x6ca3('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./setting.controller');router[_0x6ca3('0x5')]('/',auth[_0x6ca3('0x6')](),controller['index']);router[_0x6ca3('0x5')](_0x6ca3('0x7'),controller[_0x6ca3('0x8')]);router['get']('/:id',controller[_0x6ca3('0x9')]);router['get'](_0x6ca3('0xa'),controller[_0x6ca3('0xb')]);router[_0x6ca3('0x5')](_0x6ca3('0xc'),controller[_0x6ca3('0xd')]);router[_0x6ca3('0x5')](_0x6ca3('0xe'),controller[_0x6ca3('0xf')]);router['get'](_0x6ca3('0x10'),controller['getPreferred']);router['get']('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer[_0x6ca3('0x11')]({'destination':function(_0x255bbc,_0x5204cb,_0x56954f){_0x56954f(null,path['join'](config[_0x6ca3('0x12')],_0x6ca3('0x13')));},'filename':function(_0x53d130,_0x5f1a42,_0x55d289){_0x55d289(null,util[_0x6ca3('0x14')](_0x6ca3('0x15'),'logo',path[_0x6ca3('0x16')](_0x5f1a42['originalname'])));}})});router[_0x6ca3('0x17')]('/:id/logo',upload[_0x6ca3('0x18')](_0x6ca3('0x19')),controller['addLogo']);var upload=multer({'storage':multer[_0x6ca3('0x11')]({'destination':function(_0x232e76,_0x5e6e14,_0x3494a5){_0x3494a5(null,path[_0x6ca3('0x1a')](config[_0x6ca3('0x12')],'server/files/images/logos/'));},'filename':function(_0x42cc4c,_0x41b28b,_0x73ece2){_0x73ece2(null,util['format'](_0x6ca3('0x15'),_0x6ca3('0x1b'),path[_0x6ca3('0x16')](_0x41b28b[_0x6ca3('0x1c')])));}})});router[_0x6ca3('0x17')]('/:id/logo_login',upload[_0x6ca3('0x18')](_0x6ca3('0x19')),controller[_0x6ca3('0x1d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2295ea,_0x42791c,_0x466778){_0x466778(null,path['join'](config[_0x6ca3('0x12')],_0x6ca3('0x13')));},'filename':function(_0x17d3de,_0x3e4c64,_0x3a9974){_0x3a9974(null,util[_0x6ca3('0x14')](_0x6ca3('0x15'),'preferred',path[_0x6ca3('0x16')](_0x3e4c64[_0x6ca3('0x1c')])));}})});router[_0x6ca3('0x17')](_0x6ca3('0x10'),upload[_0x6ca3('0x18')]('file'),controller[_0x6ca3('0x1e')]);var upload=multer({'storage':multer[_0x6ca3('0x11')]({'destination':function(_0x12c435,_0x4f936d,_0x3d0f3d){_0x3d0f3d(null,path[_0x6ca3('0x1a')](config[_0x6ca3('0x12')],'server/files/images/logos/'));},'filename':function(_0x30edb7,_0x33f695,_0xbadfb3){_0xbadfb3(null,util[_0x6ca3('0x14')](_0x6ca3('0x15'),_0x6ca3('0x1f'),path['extname'](_0x33f695[_0x6ca3('0x1c')])));}})});router[_0x6ca3('0x17')](_0x6ca3('0x20'),upload['single'](_0x6ca3('0x19')),controller[_0x6ca3('0x21')]);router[_0x6ca3('0x22')](_0x6ca3('0x23'),auth[_0x6ca3('0x6')](),controller[_0x6ca3('0x24')]);module[_0x6ca3('0x25')]=router;
\ No newline at end of file
+var _0x91cb=['/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','single','file','logologin','addLogoLogin','preferred','addPreferred','isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./setting.controller','index','/now','get','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin'];(function(_0x42cf04,_0x58f534){var _0xf65c8=function(_0x328f02){while(--_0x328f02){_0x42cf04['push'](_0x42cf04['shift']());}};_0xf65c8(++_0x58f534);}(_0x91cb,0xc9));var _0xb91c=function(_0x2b04c7,_0x544682){_0x2b04c7=_0x2b04c7-0x0;var _0x279f78=_0x91cb[_0x2b04c7];return _0x279f78;};'use strict';var multer=require(_0xb91c('0x0'));var util=require(_0xb91c('0x1'));var path=require(_0xb91c('0x2'));var timeout=require(_0xb91c('0x3'));var express=require(_0xb91c('0x4'));var router=express[_0xb91c('0x5')]();var fs_extra=require(_0xb91c('0x6'));var auth=require(_0xb91c('0x7'));var interaction=require(_0xb91c('0x8'));var config=require('../../config/environment');var controller=require(_0xb91c('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xb91c('0xa')]);router['get'](_0xb91c('0xb'),controller['getDate']);router[_0xb91c('0xc')](_0xb91c('0xd'),controller[_0xb91c('0xe')]);router['get'](_0xb91c('0xf'),controller[_0xb91c('0x10')]);router[_0xb91c('0xc')](_0xb91c('0x11'),controller[_0xb91c('0x12')]);router[_0xb91c('0xc')](_0xb91c('0x13'),controller[_0xb91c('0x14')]);router['get'](_0xb91c('0x15'),controller[_0xb91c('0x16')]);router[_0xb91c('0xc')](_0xb91c('0x17'),controller[_0xb91c('0x18')]);var upload=multer({'storage':multer[_0xb91c('0x19')]({'destination':function(_0x4f18a1,_0x30555f,_0x746695){_0x746695(null,path[_0xb91c('0x1a')](config[_0xb91c('0x1b')],_0xb91c('0x1c')));},'filename':function(_0x9d3a30,_0x44eb53,_0x4c2640){_0x4c2640(null,util[_0xb91c('0x1d')](_0xb91c('0x1e'),_0xb91c('0x1f'),path[_0xb91c('0x20')](_0x44eb53[_0xb91c('0x21')])));}})});router[_0xb91c('0x22')](_0xb91c('0xf'),upload[_0xb91c('0x23')](_0xb91c('0x24')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x40e00e,_0x21a416,_0x521f7b){_0x521f7b(null,path['join'](config[_0xb91c('0x1b')],'server/files/images/logos/'));},'filename':function(_0xea9baa,_0x1bc4e0,_0x573059){_0x573059(null,util['format'](_0xb91c('0x1e'),_0xb91c('0x25'),path[_0xb91c('0x20')](_0x1bc4e0['originalname'])));}})});router[_0xb91c('0x22')](_0xb91c('0x11'),upload[_0xb91c('0x23')](_0xb91c('0x24')),controller[_0xb91c('0x26')]);var upload=multer({'storage':multer[_0xb91c('0x19')]({'destination':function(_0xc15d51,_0x495d31,_0x202069){_0x202069(null,path[_0xb91c('0x1a')](config[_0xb91c('0x1b')],'server/files/images/logos/'));},'filename':function(_0x33b371,_0x36abec,_0x18ec10){_0x18ec10(null,util[_0xb91c('0x1d')](_0xb91c('0x1e'),_0xb91c('0x27'),path['extname'](_0x36abec[_0xb91c('0x21')])));}})});router['post'](_0xb91c('0x15'),upload[_0xb91c('0x23')](_0xb91c('0x24')),controller[_0xb91c('0x28')]);var upload=multer({'storage':multer[_0xb91c('0x19')]({'destination':function(_0x3bd17f,_0x42c195,_0x55ce26){_0x55ce26(null,path[_0xb91c('0x1a')](config['root'],'server/files/images/logos/'));},'filename':function(_0x162aa4,_0x2618cb,_0x199215){_0x199215(null,util['format'](_0xb91c('0x1e'),'favicon',path[_0xb91c('0x20')](_0x2618cb[_0xb91c('0x21')])));}})});router['post'](_0xb91c('0x17'),upload[_0xb91c('0x23')]('file'),controller['addFavicon']);router['put'](_0xb91c('0xd'),auth[_0xb91c('0x29')](),controller[_0xb91c('0x2a')]);module[_0xb91c('0x2b')]=router;
\ No newline at end of file
index c4d787a..6a9ec45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate'];(function(_0x5b3213,_0x280483){var _0x18aca9=function(_0x5dfa9b){while(--_0x5dfa9b){_0x5b3213['push'](_0x5b3213['shift']());}};_0x18aca9(++_0x280483);}(_0x7a54,0x106));var _0x47a5=function(_0x41a7c7,_0x585ee3){_0x41a7c7=_0x41a7c7-0x0;var _0x36f987=_0x7a54[_0x41a7c7];return _0x36f987;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'min_internal':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':_0x47a5('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x5')},'logo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLogo':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x47a5('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x47a5('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x47a5('0x4')]},'defaultPreferred':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x47a5('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x47a5('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x47a5('0x2')]},'transcribeRegion':{'type':Sequelize[_0x47a5('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x47a5('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x47a5('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5f66=['STRING','BOOLEAN','UNSIGNED','exports','min_internal','INTEGER','min_mailbox'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x65f6('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x65f6('0x2')](0xb),'unique':_0x65f6('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x65f6('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x65f6('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x65f6('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x65f6('0x4')]},'turnaddr':{'type':Sequelize[_0x65f6('0x4')]},'turnusername':{'type':Sequelize[_0x65f6('0x4')]},'turnpassword':{'type':Sequelize[_0x65f6('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x65f6('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x65f6('0x4')]},'defaultPreferred':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x65f6('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x65f6('0x4')]},'defaultFavicon':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x65f6('0x4')]},'sentiment':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x65f6('0x2')]},'sentimentRegion':{'type':Sequelize[_0x65f6('0x4')]},'language':{'type':Sequelize[_0x65f6('0x4')]},'bucket':{'type':Sequelize[_0x65f6('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x65f6('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x65f6('0x6')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x65f6('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index f092a49..e17cd01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b8=['getPreferred','server/files/images/logos','default_preferred.png','getFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','Setting,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','limit','count','set','apply','save','destroy','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','Setting','includeAll','rows','catch','show','length','find','body','params','addLogo','file','filename','logo','loginLogo','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','default','upperFirst','custom','getLogoLogin','ValidationError','\x20not\x20found','download','gdpr','securePassword','addPreferred'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x18b8,0xff));var _0x818b=function(_0x47967e,_0x139c14){_0x47967e=_0x47967e-0x0;var _0x36811a=_0x18b8[_0x47967e];return _0x36811a;};'use strict';var emlformat=require(_0x818b('0x0'));var rimraf=require(_0x818b('0x1'));var zipdir=require(_0x818b('0x2'));var jsonpatch=require(_0x818b('0x3'));var rp=require(_0x818b('0x4'));var moment=require(_0x818b('0x5'));var BPromise=require(_0x818b('0x6'));var Mustache=require(_0x818b('0x7'));var util=require(_0x818b('0x8'));var path=require(_0x818b('0x9'));var sox=require('sox');var csv=require(_0x818b('0xa'));var ejs=require(_0x818b('0xb'));var fs=require('fs');var fs_extra=require(_0x818b('0xc'));var _=require(_0x818b('0xd'));var squel=require(_0x818b('0xe'));var crypto=require(_0x818b('0xf'));var jsforce=require(_0x818b('0x10'));var deskjs=require(_0x818b('0x11'));var toCsv=require('to-csv');var querystring=require(_0x818b('0x12'));var Papa=require(_0x818b('0x13'));var Redis=require(_0x818b('0x14'));var authService=require(_0x818b('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x818b('0x16'));var hardwareService=require(_0x818b('0x17'));var logger=require(_0x818b('0x18'))(_0x818b('0x19'));var utils=require(_0x818b('0x1a'));var config=require(_0x818b('0x1b'));var licenseUtil=require(_0x818b('0x1c'));var db=require(_0x818b('0x1d'))['db'];var jayson=require(_0x818b('0x1e'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4d5de2,_0x3fe489,_0x3517b7,_0x3ca607){return new BPromise(function(_0x3130f1,_0xb7b77b){var _0x226e8c=_0x3ca607||client;return _0x226e8c[_0x818b('0x1f')](_0x4d5de2,_0x3517b7)[_0x818b('0x20')](function(_0x38da28){logger[_0x818b('0x21')]('Setting,\x20%s,\x20%s',_0x3fe489,_0x818b('0x22'));logger[_0x818b('0x23')](_0x818b('0x24'),_0x3fe489,_0x818b('0x22'),JSON[_0x818b('0x25')](_0x38da28));if(_0x38da28['error']){if(_0x38da28[_0x818b('0x26')][_0x818b('0x27')]===0x1f4){logger[_0x818b('0x26')](_0x818b('0x28'),_0x3fe489,_0x38da28[_0x818b('0x26')][_0x818b('0x29')]);return _0xb7b77b(_0x38da28[_0x818b('0x26')][_0x818b('0x29')]);}logger[_0x818b('0x26')](_0x818b('0x28'),_0x3fe489,_0x38da28[_0x818b('0x26')]['message']);return _0x3130f1(_0x38da28[_0x818b('0x26')][_0x818b('0x29')]);}else{logger[_0x818b('0x21')]('Setting,\x20%s,\x20%s',_0x3fe489,_0x818b('0x22'));_0x3130f1(_0x38da28[_0x818b('0x2a')][_0x818b('0x29')]);}})['catch'](function(_0x26aa40){logger[_0x818b('0x26')](_0x818b('0x28'),_0x3fe489,_0x26aa40);_0xb7b77b(_0x26aa40);});});}function respondWithStatusCode(_0x43577d,_0x3967ef){_0x3967ef=_0x3967ef||0xcc;return function(_0x63ff3a){if(_0x63ff3a){return _0x43577d[_0x818b('0x2b')](_0x3967ef);}return _0x43577d[_0x818b('0x2c')](_0x3967ef)[_0x818b('0x2d')]();};}function respondWithResult(_0x51ce44,_0x415c89){_0x415c89=_0x415c89||0xc8;return function(_0x275bf3){if(_0x275bf3){return _0x51ce44[_0x818b('0x2c')](_0x415c89)[_0x818b('0x2e')](_0x275bf3);}};}function respondWithFilteredResult(_0x5e4cd9,_0x2e6335){return function(_0x1cb1c8){if(_0x1cb1c8){var _0x1f1829=typeof _0x2e6335[_0x818b('0x2f')]==='undefined'&&typeof _0x2e6335[_0x818b('0x30')]==='undefined';var _0xeab10b=_0x1cb1c8['count'];var _0x736c3b=_0x1f1829?0x0:_0x2e6335['offset'];var _0x2e37e4=_0x1f1829?_0x1cb1c8[_0x818b('0x31')]:_0x2e6335[_0x818b('0x2f')]+_0x2e6335[_0x818b('0x30')];var _0x1a9b5b;if(_0x2e37e4>=_0xeab10b){_0x2e37e4=_0xeab10b;_0x1a9b5b=0xc8;}else{_0x1a9b5b=0xce;}_0x5e4cd9['status'](_0x1a9b5b);return _0x5e4cd9[_0x818b('0x32')]('Content-Range',_0x736c3b+'-'+_0x2e37e4+'/'+_0xeab10b)[_0x818b('0x2e')](_0x1cb1c8);}return null;};}function patchUpdates(_0x42e665){return function(_0x5786ed){try{jsonpatch[_0x818b('0x33')](_0x5786ed,_0x42e665,!![]);}catch(_0x25dc80){return BPromise['reject'](_0x25dc80);}return _0x5786ed[_0x818b('0x34')]();};}function saveUpdates(_0x136ef3,_0x27d777){return function(_0x231b32){if(_0x231b32){return _0x231b32['update'](_0x136ef3)[_0x818b('0x20')](function(_0x478afd){return _0x478afd;});}return null;};}function removeEntity(_0x43720e,_0x5e4ade){return function(_0x6bbeaf){if(_0x6bbeaf){return _0x6bbeaf[_0x818b('0x35')]()['then'](function(){_0x43720e['status'](0xcc)[_0x818b('0x2d')]();});}};}function handleEntityNotFound(_0x319ad9,_0x2f1fef){return function(_0x5dbf81){if(!_0x5dbf81){_0x319ad9[_0x818b('0x2b')](0x194);}return _0x5dbf81;};}function handleError(_0x4cd7cf,_0x3deefa){_0x3deefa=_0x3deefa||0x1f4;return function(_0x417950){logger[_0x818b('0x26')](_0x417950[_0x818b('0x36')]);if(_0x417950['name']){delete _0x417950[_0x818b('0x37')];}_0x4cd7cf[_0x818b('0x2c')](_0x3deefa)['send'](_0x417950);};}exports[_0x818b('0x38')]=function(_0x2771b0,_0x1cebc9){var _0x598bea={},_0x4df1bf={},_0x5823e3={'count':0x0,'rows':[]};var _0x53bf9a=_[_0x818b('0x39')](db['Setting'][_0x818b('0x3a')],function(_0x41e04b){return{'name':_0x41e04b[_0x818b('0x3b')],'type':_0x41e04b[_0x818b('0x3c')][_0x818b('0x3d')]};});_0x4df1bf[_0x818b('0x3e')]=_[_0x818b('0x39')](_0x53bf9a,'name');_0x4df1bf['query']=_[_0x818b('0x3f')](_0x2771b0['query']);_0x4df1bf[_0x818b('0x40')]=_[_0x818b('0x41')](_0x4df1bf[_0x818b('0x3e')],_0x4df1bf[_0x818b('0x42')]);_0x598bea[_0x818b('0x43')]=_['intersection'](_0x4df1bf['model'],qs[_0x818b('0x44')](_0x2771b0[_0x818b('0x42')][_0x818b('0x44')]));_0x598bea[_0x818b('0x43')]=_0x598bea['attributes']['length']?_0x598bea[_0x818b('0x43')]:_0x4df1bf[_0x818b('0x3e')];if(!_0x2771b0[_0x818b('0x42')][_0x818b('0x45')](_0x818b('0x46'))){_0x598bea['limit']=qs[_0x818b('0x30')](_0x2771b0[_0x818b('0x42')][_0x818b('0x30')]);_0x598bea[_0x818b('0x2f')]=qs[_0x818b('0x2f')](_0x2771b0[_0x818b('0x42')][_0x818b('0x2f')]);}_0x598bea[_0x818b('0x47')]=qs[_0x818b('0x48')](_0x2771b0['query'][_0x818b('0x48')]);_0x598bea['where']=qs['filters'](_[_0x818b('0x49')](_0x2771b0['query'],_0x4df1bf[_0x818b('0x40')]),_0x53bf9a);if(_0x2771b0[_0x818b('0x42')][_0x818b('0x4a')]){_0x598bea[_0x818b('0x4b')]=_['merge'](_0x598bea[_0x818b('0x4b')],{'$or':_['map'](_0x53bf9a,function(_0x4f1548){if(_0x4f1548[_0x818b('0x3c')]!=='VIRTUAL'){var _0x263e94={};_0x263e94[_0x4f1548[_0x818b('0x37')]]={'$like':'%'+_0x2771b0[_0x818b('0x42')]['filter']+'%'};return _0x263e94;}})});}_0x598bea=_[_0x818b('0x4c')]({},_0x598bea,_0x2771b0[_0x818b('0x4d')]);var _0x44de77={'where':_0x598bea[_0x818b('0x4b')]};return db[_0x818b('0x4e')][_0x818b('0x31')](_0x44de77)['then'](function(_0x3e109a){_0x5823e3[_0x818b('0x31')]=_0x3e109a;if(_0x2771b0[_0x818b('0x42')][_0x818b('0x4f')]){_0x598bea['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0x598bea);})[_0x818b('0x20')](function(_0x4ce0cf){_0x5823e3[_0x818b('0x50')]=_0x4ce0cf;return _0x5823e3;})[_0x818b('0x20')](respondWithFilteredResult(_0x1cebc9,_0x598bea))[_0x818b('0x51')](handleError(_0x1cebc9,null));};exports[_0x818b('0x52')]=function(_0x39adc0,_0x115a98){var _0x136955={'raw':![],'where':{'id':_0x39adc0['params']['id']}},_0x235ef7={};_0x235ef7[_0x818b('0x3e')]=_[_0x818b('0x3f')](db[_0x818b('0x4e')][_0x818b('0x3a')]);_0x235ef7[_0x818b('0x42')]=_[_0x818b('0x3f')](_0x39adc0[_0x818b('0x42')]);_0x235ef7[_0x818b('0x40')]=_[_0x818b('0x41')](_0x235ef7[_0x818b('0x3e')],_0x235ef7[_0x818b('0x42')]);_0x136955[_0x818b('0x43')]=_[_0x818b('0x41')](_0x235ef7['model'],qs['fields'](_0x39adc0['query'][_0x818b('0x44')]));_0x136955[_0x818b('0x43')]=_0x136955[_0x818b('0x43')][_0x818b('0x53')]?_0x136955[_0x818b('0x43')]:_0x235ef7[_0x818b('0x3e')];if(_0x39adc0[_0x818b('0x42')]['includeAll']){_0x136955['include']=[{'all':!![]}];}_0x136955=_['merge']({},_0x136955,_0x39adc0['options']);return db['Setting'][_0x818b('0x54')](_0x136955)[_0x818b('0x20')](handleEntityNotFound(_0x115a98,null))[_0x818b('0x20')](respondWithResult(_0x115a98,null))['catch'](handleError(_0x115a98,null));};exports['update']=function(_0x614f61,_0x13a29b){if(_0x614f61[_0x818b('0x55')]['id']){delete _0x614f61[_0x818b('0x55')]['id'];}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x614f61[_0x818b('0x56')]['id']}})['then'](handleEntityNotFound(_0x13a29b,null))['then'](saveUpdates(_0x614f61['body'],null))[_0x818b('0x20')](respondWithResult(_0x13a29b,null))['catch'](handleError(_0x13a29b,null));};exports[_0x818b('0x57')]=function(_0x419987,_0x8c8dca,_0x5b9fec){if(_0x419987[_0x818b('0x58')]&&_0x419987[_0x818b('0x58')][_0x818b('0x59')]){_0x419987[_0x818b('0x55')][_0x818b('0x5a')]=_0x419987[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x419987[_0x818b('0x56')]['id']}})[_0x818b('0x20')](handleEntityNotFound(_0x8c8dca,null))[_0x818b('0x20')](saveUpdates(_0x419987[_0x818b('0x55')],null))[_0x818b('0x20')](respondWithResult(_0x8c8dca,null))[_0x818b('0x51')](handleError(_0x8c8dca,null));};exports['addLogoLogin']=function(_0x9b40e8,_0x596f66,_0x5cf6f0){if(_0x9b40e8[_0x818b('0x58')]&&_0x9b40e8[_0x818b('0x58')][_0x818b('0x59')]){_0x9b40e8[_0x818b('0x55')][_0x818b('0x5b')]=_0x9b40e8[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')]['find']({'where':{'id':_0x9b40e8['params']['id']}})['then'](handleEntityNotFound(_0x596f66,null))['then'](saveUpdates(_0x9b40e8['body'],null))[_0x818b('0x20')](respondWithResult(_0x596f66,null))[_0x818b('0x51')](handleError(_0x596f66,null));};var utilLicense=require(_0x818b('0x1c'));exports['getLogo']=function(_0x4f4e8b,_0x2a3501,_0x344540){var _0x23bc4c='server/files/images/logos';var _0x3aadf0={'custom':![]};return utilLicense[_0x818b('0x5c')]()['then'](function(_0x331f73){if(_0x331f73){_0x3aadf0=_0x331f73;}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x4f4e8b['params']['id']},'attributes':[_0x818b('0x5a'),_0x818b('0x5b'),_0x818b('0x5d'),_0x818b('0x5e'),_0x818b('0x5f'),_0x818b('0x60'),_0x818b('0x61'),_0x818b('0x62')],'raw':!![]});})[_0x818b('0x20')](handleEntityNotFound(_0x2a3501,null))[_0x818b('0x20')](function(_0x1a68a0){if(_0x1a68a0){var _0xdde359=_0x1a68a0['logo']&&fs[_0x818b('0x63')](path['join'](config[_0x818b('0x64')],_0x23bc4c,_[_0x818b('0x65')](_0x1a68a0['logo'])))?path[_0x818b('0x66')](config['root'],_0x23bc4c,_[_0x818b('0x65')](_0x1a68a0[_0x818b('0x5a')])):path['join'](config[_0x818b('0x64')],_0x23bc4c,_['toLower'](_0x818b('0x67')));var _0xee55b4=_0x818b('0x68')+_[_0x818b('0x69')]('logo');if(_0x1a68a0[_0xee55b4]||!_0x3aadf0[_0x818b('0x6a')]){_0xdde359=path[_0x818b('0x66')](config[_0x818b('0x64')],_0x23bc4c,_['toLower'](_0x818b('0x67')));}if(!fs[_0x818b('0x63')](_0xdde359)){throw new db['Sequelize']['ValidationError'](_[_0x818b('0x69')](_0x818b('0x5a'))+'\x20not\x20found');}return _0x2a3501['download'](_0xdde359);}})[_0x818b('0x51')](handleError(_0x2a3501,null));};var utilLicense=require(_0x818b('0x1c'));exports[_0x818b('0x6b')]=function(_0xcdd775,_0x68906,_0x5c9d82){var _0x4e00ee='server/files/images/logos';var _0x488754={'custom':![]};return utilLicense[_0x818b('0x5c')]()[_0x818b('0x20')](function(_0x2c463b){if(_0x2c463b){_0x488754=_0x2c463b;}return db[_0x818b('0x4e')]['find']({'where':{'id':_0xcdd775[_0x818b('0x56')]['id']},'attributes':[_0x818b('0x5a'),'loginLogo',_0x818b('0x5d'),'favicon',_0x818b('0x5f'),_0x818b('0x60'),_0x818b('0x61'),_0x818b('0x62')],'raw':!![]});})[_0x818b('0x20')](handleEntityNotFound(_0x68906,null))[_0x818b('0x20')](function(_0x1ffe67){if(_0x1ffe67){var _0x5c304c=_0x1ffe67[_0x818b('0x5b')]&&fs[_0x818b('0x63')](path[_0x818b('0x66')](config[_0x818b('0x64')],_0x4e00ee,_[_0x818b('0x65')](_0x1ffe67['loginLogo'])))?path['join'](config[_0x818b('0x64')],_0x4e00ee,_[_0x818b('0x65')](_0x1ffe67[_0x818b('0x5b')])):path[_0x818b('0x66')](config[_0x818b('0x64')],_0x4e00ee,_['toLower']('default_loginLogo.svg'));var _0x3a7b53=_0x818b('0x68')+_['upperFirst']('loginLogo');if(_0x1ffe67[_0x3a7b53]||!_0x488754[_0x818b('0x6a')]){_0x5c304c=path[_0x818b('0x66')](config[_0x818b('0x64')],_0x4e00ee,_['toLower']('default_loginLogo.svg'));}if(!fs[_0x818b('0x63')](_0x5c304c)){throw new db['Sequelize'][(_0x818b('0x6c'))](_[_0x818b('0x69')](_0x818b('0x5b'))+_0x818b('0x6d'));}return _0x68906[_0x818b('0x6e')](_0x5c304c);}})[_0x818b('0x51')](handleError(_0x68906,null));};exports[_0x818b('0x6f')]=function(_0xf08cff,_0x1e9b24){return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0xf08cff[_0x818b('0x56')]['id']},'attributes':[_0x818b('0x70')]})[_0x818b('0x20')](respondWithResult(_0x1e9b24,null))[_0x818b('0x51')](handleError(_0x1e9b24,null));};exports[_0x818b('0x71')]=function(_0xef6c08,_0x337ebd,_0x564ec7){if(_0xef6c08[_0x818b('0x58')]&&_0xef6c08[_0x818b('0x58')][_0x818b('0x59')]){_0xef6c08[_0x818b('0x55')][_0x818b('0x5d')]=_0xef6c08[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')]['find']({'where':{'id':_0xef6c08[_0x818b('0x56')]['id']}})[_0x818b('0x20')](handleEntityNotFound(_0x337ebd,null))['then'](saveUpdates(_0xef6c08[_0x818b('0x55')],null))[_0x818b('0x20')](respondWithResult(_0x337ebd,null))[_0x818b('0x51')](handleError(_0x337ebd,null));};var utilLicense=require(_0x818b('0x1c'));exports[_0x818b('0x72')]=function(_0x239eaf,_0x3ad6bf,_0x590597){var _0xf5b7a0=_0x818b('0x73');var _0x233603={'custom':![]};return utilLicense[_0x818b('0x5c')]()[_0x818b('0x20')](function(_0x142c79){if(_0x142c79){_0x233603=_0x142c79;}return db['Setting'][_0x818b('0x54')]({'where':{'id':_0x239eaf[_0x818b('0x56')]['id']},'attributes':[_0x818b('0x5a'),_0x818b('0x5b'),_0x818b('0x5d'),_0x818b('0x5e'),_0x818b('0x5f'),'defaultLoginLogo','defaultPreferred',_0x818b('0x62')],'raw':!![]});})['then'](handleEntityNotFound(_0x3ad6bf,null))[_0x818b('0x20')](function(_0xef81){if(_0xef81){var _0x2ef57a=_0xef81['preferred']&&fs[_0x818b('0x63')](path[_0x818b('0x66')](config['root'],_0xf5b7a0,_[_0x818b('0x65')](_0xef81[_0x818b('0x5d')])))?path['join'](config[_0x818b('0x64')],_0xf5b7a0,_[_0x818b('0x65')](_0xef81['preferred'])):path[_0x818b('0x66')](config[_0x818b('0x64')],_0xf5b7a0,_[_0x818b('0x65')](_0x818b('0x74')));var _0x19dfd6='default'+_[_0x818b('0x69')](_0x818b('0x5d'));if(_0xef81[_0x19dfd6]||!_0x233603[_0x818b('0x6a')]||!_0x233603[_0x818b('0x5d')]){_0x2ef57a=path[_0x818b('0x66')](config[_0x818b('0x64')],_0xf5b7a0,_[_0x818b('0x65')](_0x818b('0x74')));}if(!fs['existsSync'](_0x2ef57a)){throw new db['Sequelize'][(_0x818b('0x6c'))](_[_0x818b('0x69')](_0x818b('0x5d'))+'\x20not\x20found');}return _0x3ad6bf[_0x818b('0x6e')](_0x2ef57a);}})[_0x818b('0x51')](handleError(_0x3ad6bf,null));};exports['addFavicon']=function(_0xaabb1,_0x24e103,_0x55c2ca){if(_0xaabb1[_0x818b('0x58')]&&_0xaabb1[_0x818b('0x58')][_0x818b('0x59')]){_0xaabb1['body'][_0x818b('0x5e')]=_0xaabb1[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0xaabb1[_0x818b('0x56')]['id']}})[_0x818b('0x20')](handleEntityNotFound(_0x24e103,null))[_0x818b('0x20')](saveUpdates(_0xaabb1[_0x818b('0x55')],null))[_0x818b('0x20')](respondWithResult(_0x24e103,null))['catch'](handleError(_0x24e103,null));};var utilLicense=require(_0x818b('0x1c'));exports[_0x818b('0x75')]=function(_0x4de9a9,_0x18cb66,_0x413321){var _0x1b22bb=_0x818b('0x73');var _0x4f92fc={'custom':![]};return utilLicense[_0x818b('0x5c')]()[_0x818b('0x20')](function(_0x108e98){if(_0x108e98){_0x4f92fc=_0x108e98;}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x4de9a9['params']['id']},'attributes':[_0x818b('0x5a'),_0x818b('0x5b'),'preferred',_0x818b('0x5e'),'defaultLogo',_0x818b('0x60'),_0x818b('0x61'),'defaultFavicon'],'raw':!![]});})[_0x818b('0x20')](handleEntityNotFound(_0x18cb66,null))[_0x818b('0x20')](function(_0x3b3e3c){if(_0x3b3e3c){var _0x44b7db=_0x3b3e3c[_0x818b('0x5e')]&&fs[_0x818b('0x63')](path[_0x818b('0x66')](config[_0x818b('0x64')],_0x1b22bb,_[_0x818b('0x65')](_0x3b3e3c[_0x818b('0x5e')])))?path[_0x818b('0x66')](config[_0x818b('0x64')],_0x1b22bb,_[_0x818b('0x65')](_0x3b3e3c[_0x818b('0x5e')])):path[_0x818b('0x66')](config['root'],_0x1b22bb,_['toLower'](_0x818b('0x76')));var _0x39416a=_0x818b('0x68')+_[_0x818b('0x69')](_0x818b('0x5e'));if(_0x3b3e3c[_0x39416a]||!_0x4f92fc[_0x818b('0x6a')]){_0x44b7db=path[_0x818b('0x66')](config[_0x818b('0x64')],_0x1b22bb,_[_0x818b('0x65')]('default_favicon.ico'));}if(!fs[_0x818b('0x63')](_0x44b7db)){throw new db['Sequelize'][(_0x818b('0x6c'))](_[_0x818b('0x69')](_0x818b('0x5e'))+_0x818b('0x6d'));}return _0x18cb66['download'](_0x44b7db);}})[_0x818b('0x51')](handleError(_0x18cb66,null));};exports[_0x818b('0x77')]=function(_0x1cbcf4,_0x3c7222){var _0x52cf86={'offset':moment()[_0x818b('0x78')]()};_0x52cf86[_0x818b('0x79')]=moment()[_0x818b('0x78')](_0x52cf86[_0x818b('0x2f')])['format'](_0x818b('0x7a'));return _0x3c7222['status'](0xc8)['send'](_0x52cf86);};
\ No newline at end of file
+var _0x20a8=['body','addLogo','file','filename','logo','addLogoLogin','loginLogo','getLogo','getLicense','preferred','favicon','defaultLogo','defaultPreferred','existsSync','join','toLower','root','default_logo.svg','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','server/files/images/logos','defaultFavicon','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','default','addFavicon','../../config/license/util','defaultLoginLogo','default_favicon.ico','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','stack','name','send','map','Setting','type','model','query','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','params','keys','includeAll','find'];(function(_0x289e64,_0x5adb3c){var _0x30246c=function(_0x1bf7f6){while(--_0x1bf7f6){_0x289e64['push'](_0x289e64['shift']());}};_0x30246c(++_0x5adb3c);}(_0x20a8,0x115));var _0x820a=function(_0x3969b9,_0x3a7a62){_0x3969b9=_0x3969b9-0x0;var _0x374f21=_0x20a8[_0x3969b9];return _0x374f21;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x820a('0x0'));var rp=require(_0x820a('0x1'));var moment=require(_0x820a('0x2'));var BPromise=require(_0x820a('0x3'));var Mustache=require('mustache');var util=require(_0x820a('0x4'));var path=require(_0x820a('0x5'));var sox=require('sox');var csv=require(_0x820a('0x6'));var ejs=require(_0x820a('0x7'));var fs=require('fs');var fs_extra=require(_0x820a('0x8'));var _=require(_0x820a('0x9'));var squel=require(_0x820a('0xa'));var crypto=require(_0x820a('0xb'));var jsforce=require(_0x820a('0xc'));var deskjs=require(_0x820a('0xd'));var toCsv=require('to-csv');var querystring=require(_0x820a('0xe'));var Papa=require(_0x820a('0xf'));var Redis=require(_0x820a('0x10'));var authService=require(_0x820a('0x11'));var qs=require(_0x820a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x820a('0x13'))(_0x820a('0x14'));var utils=require('../../config/utils');var config=require(_0x820a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x820a('0x16'))['db'];var jayson=require(_0x820a('0x17'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x195f18,_0x4af93e,_0x4176f0,_0x5f05ac){return new BPromise(function(_0x490956,_0x4e3314){var _0x2ad20c=_0x5f05ac||client;return _0x2ad20c['request'](_0x195f18,_0x4176f0)['then'](function(_0x41f55c){logger[_0x820a('0x18')](_0x820a('0x19'),_0x4af93e,'request\x20sent');logger[_0x820a('0x1a')](_0x820a('0x1b'),_0x4af93e,'request\x20sent',JSON[_0x820a('0x1c')](_0x41f55c));if(_0x41f55c[_0x820a('0x1d')]){if(_0x41f55c[_0x820a('0x1d')][_0x820a('0x1e')]===0x1f4){logger[_0x820a('0x1d')](_0x820a('0x19'),_0x4af93e,_0x41f55c['error']['message']);return _0x4e3314(_0x41f55c[_0x820a('0x1d')]['message']);}logger[_0x820a('0x1d')](_0x820a('0x19'),_0x4af93e,_0x41f55c[_0x820a('0x1d')][_0x820a('0x1f')]);return _0x490956(_0x41f55c['error'][_0x820a('0x1f')]);}else{logger[_0x820a('0x18')](_0x820a('0x19'),_0x4af93e,_0x820a('0x20'));_0x490956(_0x41f55c[_0x820a('0x21')][_0x820a('0x1f')]);}})[_0x820a('0x22')](function(_0x24ef35){logger[_0x820a('0x1d')](_0x820a('0x19'),_0x4af93e,_0x24ef35);_0x4e3314(_0x24ef35);});});}function respondWithStatusCode(_0x8c80d5,_0x5daea8){_0x5daea8=_0x5daea8||0xcc;return function(_0x2a509a){if(_0x2a509a){return _0x8c80d5[_0x820a('0x23')](_0x5daea8);}return _0x8c80d5['status'](_0x5daea8)[_0x820a('0x24')]();};}function respondWithResult(_0x34dcda,_0x70cace){_0x70cace=_0x70cace||0xc8;return function(_0x2169c0){if(_0x2169c0){return _0x34dcda[_0x820a('0x25')](_0x70cace)[_0x820a('0x26')](_0x2169c0);}};}function respondWithFilteredResult(_0x3063f4,_0x2bb0a9){return function(_0x268741){if(_0x268741){var _0x4ef0eb=typeof _0x2bb0a9[_0x820a('0x27')]==='undefined'&&typeof _0x2bb0a9[_0x820a('0x28')]===_0x820a('0x29');var _0x430f61=_0x268741[_0x820a('0x2a')];var _0x4293f7=_0x4ef0eb?0x0:_0x2bb0a9[_0x820a('0x27')];var _0x1ff836=_0x4ef0eb?_0x268741['count']:_0x2bb0a9[_0x820a('0x27')]+_0x2bb0a9['limit'];var _0x5362b7;if(_0x1ff836>=_0x430f61){_0x1ff836=_0x430f61;_0x5362b7=0xc8;}else{_0x5362b7=0xce;}_0x3063f4['status'](_0x5362b7);return _0x3063f4['set'](_0x820a('0x2b'),_0x4293f7+'-'+_0x1ff836+'/'+_0x430f61)[_0x820a('0x26')](_0x268741);}return null;};}function patchUpdates(_0xfc09f1){return function(_0xb67fe8){try{jsonpatch[_0x820a('0x2c')](_0xb67fe8,_0xfc09f1,!![]);}catch(_0x7383e4){return BPromise[_0x820a('0x2d')](_0x7383e4);}return _0xb67fe8[_0x820a('0x2e')]();};}function saveUpdates(_0x41b11a,_0x1cacc1){return function(_0x52ffb2){if(_0x52ffb2){return _0x52ffb2[_0x820a('0x2f')](_0x41b11a)[_0x820a('0x30')](function(_0x437e14){return _0x437e14;});}return null;};}function removeEntity(_0x8dcdea,_0x2b0cc6){return function(_0xbec609){if(_0xbec609){return _0xbec609['destroy']()['then'](function(){_0x8dcdea[_0x820a('0x25')](0xcc)[_0x820a('0x24')]();});}};}function handleEntityNotFound(_0x51ec04,_0x4e11eb){return function(_0x1a1c9a){if(!_0x1a1c9a){_0x51ec04[_0x820a('0x23')](0x194);}return _0x1a1c9a;};}function handleError(_0x182a4a,_0x293042){_0x293042=_0x293042||0x1f4;return function(_0x5f678a){logger['error'](_0x5f678a[_0x820a('0x31')]);if(_0x5f678a[_0x820a('0x32')]){delete _0x5f678a[_0x820a('0x32')];}_0x182a4a[_0x820a('0x25')](_0x293042)[_0x820a('0x33')](_0x5f678a);};}exports['index']=function(_0x20f66b,_0x21c41c){var _0x5a6c4b={},_0x51466d={},_0x35ac01={'count':0x0,'rows':[]};var _0x180e22=_[_0x820a('0x34')](db[_0x820a('0x35')]['rawAttributes'],function(_0x5d7850){return{'name':_0x5d7850['fieldName'],'type':_0x5d7850[_0x820a('0x36')]['key']};});_0x51466d[_0x820a('0x37')]=_['map'](_0x180e22,'name');_0x51466d[_0x820a('0x38')]=_['keys'](_0x20f66b['query']);_0x51466d[_0x820a('0x39')]=_[_0x820a('0x3a')](_0x51466d[_0x820a('0x37')],_0x51466d[_0x820a('0x38')]);_0x5a6c4b['attributes']=_[_0x820a('0x3a')](_0x51466d[_0x820a('0x37')],qs[_0x820a('0x3b')](_0x20f66b['query'][_0x820a('0x3b')]));_0x5a6c4b[_0x820a('0x3c')]=_0x5a6c4b[_0x820a('0x3c')][_0x820a('0x3d')]?_0x5a6c4b[_0x820a('0x3c')]:_0x51466d['model'];if(!_0x20f66b[_0x820a('0x38')]['hasOwnProperty'](_0x820a('0x3e'))){_0x5a6c4b[_0x820a('0x28')]=qs[_0x820a('0x28')](_0x20f66b[_0x820a('0x38')][_0x820a('0x28')]);_0x5a6c4b[_0x820a('0x27')]=qs[_0x820a('0x27')](_0x20f66b[_0x820a('0x38')][_0x820a('0x27')]);}_0x5a6c4b['order']=qs[_0x820a('0x3f')](_0x20f66b[_0x820a('0x38')][_0x820a('0x3f')]);_0x5a6c4b[_0x820a('0x40')]=qs[_0x820a('0x39')](_[_0x820a('0x41')](_0x20f66b[_0x820a('0x38')],_0x51466d[_0x820a('0x39')]),_0x180e22);if(_0x20f66b['query'][_0x820a('0x42')]){_0x5a6c4b[_0x820a('0x40')]=_[_0x820a('0x43')](_0x5a6c4b['where'],{'$or':_[_0x820a('0x34')](_0x180e22,function(_0x3d276e){if(_0x3d276e[_0x820a('0x36')]!==_0x820a('0x44')){var _0x82bd6b={};_0x82bd6b[_0x3d276e[_0x820a('0x32')]]={'$like':'%'+_0x20f66b['query']['filter']+'%'};return _0x82bd6b;}})});}_0x5a6c4b=_[_0x820a('0x43')]({},_0x5a6c4b,_0x20f66b[_0x820a('0x45')]);var _0x40f76b={'where':_0x5a6c4b[_0x820a('0x40')]};return db[_0x820a('0x35')][_0x820a('0x2a')](_0x40f76b)['then'](function(_0x3a75ae){_0x35ac01[_0x820a('0x2a')]=_0x3a75ae;if(_0x20f66b[_0x820a('0x38')]['includeAll']){_0x5a6c4b[_0x820a('0x46')]=[{'all':!![]}];}return db[_0x820a('0x35')][_0x820a('0x47')](_0x5a6c4b);})[_0x820a('0x30')](function(_0xd8bf95){_0x35ac01[_0x820a('0x48')]=_0xd8bf95;return _0x35ac01;})['then'](respondWithFilteredResult(_0x21c41c,_0x5a6c4b))[_0x820a('0x22')](handleError(_0x21c41c,null));};exports['show']=function(_0xdf04bb,_0x54649c){var _0x416bc2={'raw':![],'where':{'id':_0xdf04bb[_0x820a('0x49')]['id']}},_0xeade90={};_0xeade90[_0x820a('0x37')]=_[_0x820a('0x4a')](db[_0x820a('0x35')]['rawAttributes']);_0xeade90['query']=_[_0x820a('0x4a')](_0xdf04bb[_0x820a('0x38')]);_0xeade90['filters']=_[_0x820a('0x3a')](_0xeade90['model'],_0xeade90[_0x820a('0x38')]);_0x416bc2[_0x820a('0x3c')]=_[_0x820a('0x3a')](_0xeade90[_0x820a('0x37')],qs[_0x820a('0x3b')](_0xdf04bb[_0x820a('0x38')][_0x820a('0x3b')]));_0x416bc2[_0x820a('0x3c')]=_0x416bc2[_0x820a('0x3c')]['length']?_0x416bc2['attributes']:_0xeade90[_0x820a('0x37')];if(_0xdf04bb[_0x820a('0x38')][_0x820a('0x4b')]){_0x416bc2[_0x820a('0x46')]=[{'all':!![]}];}_0x416bc2=_['merge']({},_0x416bc2,_0xdf04bb[_0x820a('0x45')]);return db[_0x820a('0x35')][_0x820a('0x4c')](_0x416bc2)[_0x820a('0x30')](handleEntityNotFound(_0x54649c,null))[_0x820a('0x30')](respondWithResult(_0x54649c,null))['catch'](handleError(_0x54649c,null));};exports[_0x820a('0x2f')]=function(_0x39dfeb,_0x28aca3){if(_0x39dfeb[_0x820a('0x4d')]['id']){delete _0x39dfeb['body']['id'];}return db[_0x820a('0x35')]['find']({'where':{'id':_0x39dfeb['params']['id']}})[_0x820a('0x30')](handleEntityNotFound(_0x28aca3,null))[_0x820a('0x30')](saveUpdates(_0x39dfeb['body'],null))[_0x820a('0x30')](respondWithResult(_0x28aca3,null))[_0x820a('0x22')](handleError(_0x28aca3,null));};exports[_0x820a('0x4e')]=function(_0x34c4a7,_0x400146,_0x33ba89){if(_0x34c4a7[_0x820a('0x4f')]&&_0x34c4a7[_0x820a('0x4f')][_0x820a('0x50')]){_0x34c4a7[_0x820a('0x4d')][_0x820a('0x51')]=_0x34c4a7[_0x820a('0x4f')][_0x820a('0x50')];}return db['Setting'][_0x820a('0x4c')]({'where':{'id':_0x34c4a7[_0x820a('0x49')]['id']}})['then'](handleEntityNotFound(_0x400146,null))[_0x820a('0x30')](saveUpdates(_0x34c4a7[_0x820a('0x4d')],null))['then'](respondWithResult(_0x400146,null))['catch'](handleError(_0x400146,null));};exports[_0x820a('0x52')]=function(_0x54c7a2,_0x12fe3b,_0x27f6fe){if(_0x54c7a2['file']&&_0x54c7a2['file']['filename']){_0x54c7a2[_0x820a('0x4d')][_0x820a('0x53')]=_0x54c7a2['file'][_0x820a('0x50')];}return db[_0x820a('0x35')][_0x820a('0x4c')]({'where':{'id':_0x54c7a2['params']['id']}})['then'](handleEntityNotFound(_0x12fe3b,null))['then'](saveUpdates(_0x54c7a2[_0x820a('0x4d')],null))['then'](respondWithResult(_0x12fe3b,null))[_0x820a('0x22')](handleError(_0x12fe3b,null));};var utilLicense=require('../../config/license/util');exports[_0x820a('0x54')]=function(_0x552007,_0xd4fe1b,_0x410e12){var _0x2e6546='server/files/images/logos';var _0xcbb99f={'custom':![]};return utilLicense[_0x820a('0x55')]()['then'](function(_0x4465cb){if(_0x4465cb){_0xcbb99f=_0x4465cb;}return db[_0x820a('0x35')][_0x820a('0x4c')]({'where':{'id':_0x552007['params']['id']},'attributes':[_0x820a('0x51'),_0x820a('0x53'),_0x820a('0x56'),_0x820a('0x57'),_0x820a('0x58'),'defaultLoginLogo',_0x820a('0x59'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0xd4fe1b,null))['then'](function(_0x3f6de3){if(_0x3f6de3){var _0x274efc=_0x3f6de3[_0x820a('0x51')]&&fs[_0x820a('0x5a')](path[_0x820a('0x5b')](config['root'],_0x2e6546,_[_0x820a('0x5c')](_0x3f6de3['logo'])))?path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x2e6546,_['toLower'](_0x3f6de3[_0x820a('0x51')])):path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x2e6546,_[_0x820a('0x5c')](_0x820a('0x5e')));var _0x2f96fb='default'+_[_0x820a('0x5f')](_0x820a('0x51'));if(_0x3f6de3[_0x2f96fb]||!_0xcbb99f[_0x820a('0x60')]){_0x274efc=path[_0x820a('0x5b')](config['root'],_0x2e6546,_[_0x820a('0x5c')]('default_logo.svg'));}if(!fs['existsSync'](_0x274efc)){throw new db[(_0x820a('0x61'))][(_0x820a('0x62'))](_[_0x820a('0x5f')](_0x820a('0x51'))+_0x820a('0x63'));}return _0xd4fe1b[_0x820a('0x64')](_0x274efc);}})[_0x820a('0x22')](handleError(_0xd4fe1b,null));};var utilLicense=require('../../config/license/util');exports[_0x820a('0x65')]=function(_0x49231e,_0x497f95,_0x13c901){var _0x4c4672=_0x820a('0x66');var _0x490653={'custom':![]};return utilLicense['getLicense']()[_0x820a('0x30')](function(_0x543224){if(_0x543224){_0x490653=_0x543224;}return db[_0x820a('0x35')][_0x820a('0x4c')]({'where':{'id':_0x49231e[_0x820a('0x49')]['id']},'attributes':['logo','loginLogo',_0x820a('0x56'),_0x820a('0x57'),_0x820a('0x58'),'defaultLoginLogo',_0x820a('0x59'),_0x820a('0x67')],'raw':!![]});})[_0x820a('0x30')](handleEntityNotFound(_0x497f95,null))['then'](function(_0x360f57){if(_0x360f57){var _0x413f05=_0x360f57[_0x820a('0x53')]&&fs[_0x820a('0x5a')](path['join'](config['root'],_0x4c4672,_[_0x820a('0x5c')](_0x360f57[_0x820a('0x53')])))?path['join'](config['root'],_0x4c4672,_['toLower'](_0x360f57[_0x820a('0x53')])):path['join'](config['root'],_0x4c4672,_[_0x820a('0x5c')](_0x820a('0x68')));var _0x15404d='default'+_['upperFirst'](_0x820a('0x53'));if(_0x360f57[_0x15404d]||!_0x490653[_0x820a('0x60')]){_0x413f05=path['join'](config[_0x820a('0x5d')],_0x4c4672,_[_0x820a('0x5c')](_0x820a('0x68')));}if(!fs[_0x820a('0x5a')](_0x413f05)){throw new db[(_0x820a('0x61'))][(_0x820a('0x62'))](_[_0x820a('0x5f')](_0x820a('0x53'))+_0x820a('0x63'));}return _0x497f95[_0x820a('0x64')](_0x413f05);}})['catch'](handleError(_0x497f95,null));};exports[_0x820a('0x69')]=function(_0x3b86c2,_0x5b2cbb){return db[_0x820a('0x35')]['find']({'where':{'id':_0x3b86c2[_0x820a('0x49')]['id']},'attributes':[_0x820a('0x6a')]})['then'](respondWithResult(_0x5b2cbb,null))[_0x820a('0x22')](handleError(_0x5b2cbb,null));};exports[_0x820a('0x6b')]=function(_0x1434b1,_0x3ecb63,_0x467e50){if(_0x1434b1[_0x820a('0x4f')]&&_0x1434b1[_0x820a('0x4f')][_0x820a('0x50')]){_0x1434b1[_0x820a('0x4d')][_0x820a('0x56')]=_0x1434b1[_0x820a('0x4f')][_0x820a('0x50')];}return db[_0x820a('0x35')]['find']({'where':{'id':_0x1434b1['params']['id']}})['then'](handleEntityNotFound(_0x3ecb63,null))[_0x820a('0x30')](saveUpdates(_0x1434b1['body'],null))[_0x820a('0x30')](respondWithResult(_0x3ecb63,null))[_0x820a('0x22')](handleError(_0x3ecb63,null));};var utilLicense=require('../../config/license/util');exports[_0x820a('0x6c')]=function(_0x427ee0,_0x14aaa0,_0xef26ab){var _0x3ef030='server/files/images/logos';var _0x2e8002={'custom':![]};return utilLicense[_0x820a('0x55')]()[_0x820a('0x30')](function(_0x139e51){if(_0x139e51){_0x2e8002=_0x139e51;}return db[_0x820a('0x35')]['find']({'where':{'id':_0x427ee0[_0x820a('0x49')]['id']},'attributes':[_0x820a('0x51'),_0x820a('0x53'),_0x820a('0x56'),_0x820a('0x57'),_0x820a('0x58'),'defaultLoginLogo',_0x820a('0x59'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x14aaa0,null))['then'](function(_0x3b6ff7){if(_0x3b6ff7){var _0x56a497=_0x3b6ff7[_0x820a('0x56')]&&fs[_0x820a('0x5a')](path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x3ef030,_[_0x820a('0x5c')](_0x3b6ff7[_0x820a('0x56')])))?path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x3ef030,_['toLower'](_0x3b6ff7[_0x820a('0x56')])):path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x3ef030,_[_0x820a('0x5c')](_0x820a('0x6d')));var _0x51982e=_0x820a('0x6e')+_['upperFirst'](_0x820a('0x56'));if(_0x3b6ff7[_0x51982e]||!_0x2e8002[_0x820a('0x60')]||!_0x2e8002[_0x820a('0x56')]){_0x56a497=path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x3ef030,_[_0x820a('0x5c')]('default_preferred.png'));}if(!fs[_0x820a('0x5a')](_0x56a497)){throw new db[(_0x820a('0x61'))][(_0x820a('0x62'))](_[_0x820a('0x5f')]('preferred')+_0x820a('0x63'));}return _0x14aaa0[_0x820a('0x64')](_0x56a497);}})[_0x820a('0x22')](handleError(_0x14aaa0,null));};exports[_0x820a('0x6f')]=function(_0x1720b2,_0x31f3da,_0x2a76e0){if(_0x1720b2[_0x820a('0x4f')]&&_0x1720b2[_0x820a('0x4f')][_0x820a('0x50')]){_0x1720b2[_0x820a('0x4d')][_0x820a('0x57')]=_0x1720b2[_0x820a('0x4f')][_0x820a('0x50')];}return db[_0x820a('0x35')][_0x820a('0x4c')]({'where':{'id':_0x1720b2['params']['id']}})[_0x820a('0x30')](handleEntityNotFound(_0x31f3da,null))[_0x820a('0x30')](saveUpdates(_0x1720b2['body'],null))[_0x820a('0x30')](respondWithResult(_0x31f3da,null))[_0x820a('0x22')](handleError(_0x31f3da,null));};var utilLicense=require(_0x820a('0x70'));exports['getFavicon']=function(_0x5ce3f5,_0xa5307,_0x363de7){var _0x429a0b=_0x820a('0x66');var _0x320f68={'custom':![]};return utilLicense[_0x820a('0x55')]()[_0x820a('0x30')](function(_0x207a75){if(_0x207a75){_0x320f68=_0x207a75;}return db['Setting'][_0x820a('0x4c')]({'where':{'id':_0x5ce3f5[_0x820a('0x49')]['id']},'attributes':[_0x820a('0x51'),'loginLogo',_0x820a('0x56'),'favicon','defaultLogo',_0x820a('0x71'),_0x820a('0x59'),_0x820a('0x67')],'raw':!![]});})['then'](handleEntityNotFound(_0xa5307,null))[_0x820a('0x30')](function(_0x453c1b){if(_0x453c1b){var _0x56e1cd=_0x453c1b['favicon']&&fs[_0x820a('0x5a')](path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x429a0b,_[_0x820a('0x5c')](_0x453c1b[_0x820a('0x57')])))?path[_0x820a('0x5b')](config[_0x820a('0x5d')],_0x429a0b,_[_0x820a('0x5c')](_0x453c1b[_0x820a('0x57')])):path['join'](config[_0x820a('0x5d')],_0x429a0b,_[_0x820a('0x5c')](_0x820a('0x72')));var _0x4ad594=_0x820a('0x6e')+_[_0x820a('0x5f')]('favicon');if(_0x453c1b[_0x4ad594]||!_0x320f68[_0x820a('0x60')]){_0x56e1cd=path['join'](config[_0x820a('0x5d')],_0x429a0b,_[_0x820a('0x5c')](_0x820a('0x72')));}if(!fs[_0x820a('0x5a')](_0x56e1cd)){throw new db[(_0x820a('0x61'))][(_0x820a('0x62'))](_[_0x820a('0x5f')](_0x820a('0x57'))+_0x820a('0x63'));}return _0xa5307[_0x820a('0x64')](_0x56e1cd);}})[_0x820a('0x22')](handleError(_0xa5307,null));};exports['getDate']=function(_0x3c8eb3,_0x4c5823){var _0x4e2dd2={'offset':moment()[_0x820a('0x73')]()};_0x4e2dd2[_0x820a('0x74')]=moment()[_0x820a('0x73')](_0x4e2dd2[_0x820a('0x27')])['format'](_0x820a('0x75'));return _0x4c5823[_0x820a('0x25')](0xc8)[_0x820a('0x33')](_0x4e2dd2);};
\ No newline at end of file
index e32dfdf..78366cc 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(_0x23b3fb,_0x282fce){var _0x5de051=function(_0x443992){while(--_0x443992){_0x23b3fb['push'](_0x23b3fb['shift']());}};_0x5de051(++_0x282fce);}(_0x34e8,0x12c));var _0x834e=function(_0x13c242,_0x2d0b95){_0x13c242=_0x13c242-0x0;var _0x24626f=_0x34e8[_0x13c242];return _0x24626f;};'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 _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x37ae26,_0x2ecd70){var _0x1b1902=function(_0x5a6ae0){while(--_0x5a6ae0){_0x37ae26['push'](_0x37ae26['shift']());}};_0x1b1902(++_0x2ecd70);}(_0x3e74,0x175));var _0x43e7=function(_0x1f9ca9,_0x4d809c){_0x1f9ca9=_0x1f9ca9-0x0;var _0x373ddd=_0x3e74[_0x1f9ca9];return _0x373ddd;};'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
index b301405..18056f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efa=['options','raw','where','include','map','model','attributes','message','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','request\x20sent','result','catch','ShowSetting','Setting','find'];(function(_0x39c9a6,_0xf97005){var _0xde09e=function(_0x3d081d){while(--_0x3d081d){_0x39c9a6['push'](_0x39c9a6['shift']());}};_0xde09e(++_0xf97005);}(_0x8efa,0xf6));var _0xa8ef=function(_0x4bb284,_0x4846eb){_0x4bb284=_0x4bb284-0x0;var _0x35504d=_0x8efa[_0x4bb284];return _0x35504d;};'use strict';var _=require(_0xa8ef('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa8ef('0x1'));var rs=require(_0xa8ef('0x2'));var fs=require('fs');var Redis=require(_0xa8ef('0x3'));var db=require(_0xa8ef('0x4'))['db'];var utils=require(_0xa8ef('0x5'));var logger=require(_0xa8ef('0x6'))(_0xa8ef('0x7'));var config=require(_0xa8ef('0x8'));var jayson=require(_0xa8ef('0x9'));var client=jayson[_0xa8ef('0xa')][_0xa8ef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1feb2c,_0x40bed4,_0x436f05){return new BPromise(function(_0x1d5cbf,_0x48fade){return client[_0xa8ef('0xc')](_0x1feb2c,_0x436f05)[_0xa8ef('0xd')](function(_0x395af7){logger[_0xa8ef('0xe')](_0xa8ef('0xf'),_0x40bed4,'request\x20sent');logger[_0xa8ef('0x10')](_0xa8ef('0x11'),_0x40bed4,'request\x20sent',JSON[_0xa8ef('0x12')](_0x395af7));if(_0x395af7[_0xa8ef('0x13')]){if(_0x395af7['error']['code']===0x1f4){logger[_0xa8ef('0x13')]('Setting,\x20%s,\x20%s',_0x40bed4,_0x395af7[_0xa8ef('0x13')]['message']);return _0x48fade(_0x395af7['error']['message']);}logger['error']('Setting,\x20%s,\x20%s',_0x40bed4,_0x395af7[_0xa8ef('0x13')]['message']);return _0x1d5cbf(_0x395af7[_0xa8ef('0x13')]['message']);}else{logger['info'](_0xa8ef('0xf'),_0x40bed4,_0xa8ef('0x14'));_0x1d5cbf(_0x395af7[_0xa8ef('0x15')]['message']);}})[_0xa8ef('0x16')](function(_0x2420f3){logger[_0xa8ef('0x13')](_0xa8ef('0xf'),_0x40bed4,_0x2420f3);_0x48fade(_0x2420f3);});});}exports[_0xa8ef('0x17')]=function(_0x5d444f){var _0x5d8ef0=this;return new Promise(function(_0x46441,_0x2b6af3){return db[_0xa8ef('0x18')][_0xa8ef('0x19')]({'raw':_0x5d444f[_0xa8ef('0x1a')]?_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d444f['options']?_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1c')]||null:null,'attributes':_0x5d444f[_0xa8ef('0x1a')]?_0x5d444f[_0xa8ef('0x1a')]['attributes']||null:null,'include':_0x5d444f[_0xa8ef('0x1a')]?_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1d')]?_[_0xa8ef('0x1e')](_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1d')],function(_0x5ef329){return{'model':db[_0x5ef329[_0xa8ef('0x1f')]],'as':_0x5ef329['as'],'attributes':_0x5ef329[_0xa8ef('0x20')],'include':_0x5ef329[_0xa8ef('0x1d')]?_['map'](_0x5ef329[_0xa8ef('0x1d')],function(_0x1c591e){return{'model':db[_0x1c591e[_0xa8ef('0x1f')]],'as':_0x1c591e['as'],'attributes':_0x1c591e[_0xa8ef('0x20')],'include':_0x1c591e[_0xa8ef('0x1d')]?_[_0xa8ef('0x1e')](_0x1c591e['include'],function(_0x344799){return{'model':db[_0x344799[_0xa8ef('0x1f')]],'as':_0x344799['as'],'attributes':_0x344799[_0xa8ef('0x20')]};}):[]};}):[]};}):[]:[]})[_0xa8ef('0xd')](function(_0x1f8997){logger[_0xa8ef('0xe')](_0xa8ef('0x17'),_0x5d444f);logger[_0xa8ef('0x10')](_0xa8ef('0x17'),_0x5d444f,JSON['stringify'](_0x1f8997));_0x46441(_0x1f8997);})['catch'](function(_0x3bd5c0){logger[_0xa8ef('0x13')]('ShowSetting',_0x3bd5c0[_0xa8ef('0x21')],_0x5d444f);_0x2b6af3(_0x5d8ef0['error'](0x1f4,_0x3bd5c0[_0xa8ef('0x21')]));});});};
\ No newline at end of file
+var _0xc536=['result','ShowSetting','Setting','find','options','where','attributes','include','map','model','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','Setting,\x20%s,\x20%s','message','info'];(function(_0x413f17,_0x3afc6d){var _0x49f961=function(_0x342bb0){while(--_0x342bb0){_0x413f17['push'](_0x413f17['shift']());}};_0x49f961(++_0x3afc6d);}(_0xc536,0x9b));var _0x6c53=function(_0x44a9b5,_0x4bc4c3){_0x44a9b5=_0x44a9b5-0x0;var _0x304a8f=_0xc536[_0x44a9b5];return _0x304a8f;};'use strict';var _=require(_0x6c53('0x0'));var util=require(_0x6c53('0x1'));var moment=require(_0x6c53('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6c53('0x3'));var db=require(_0x6c53('0x4'))['db'];var utils=require(_0x6c53('0x5'));var logger=require(_0x6c53('0x6'))(_0x6c53('0x7'));var config=require('../../config/environment');var jayson=require(_0x6c53('0x8'));var client=jayson['client'][_0x6c53('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x343cc0,_0x35ad2d,_0x148b80){return new BPromise(function(_0x239ba8,_0x1512b9){return client['request'](_0x343cc0,_0x148b80)[_0x6c53('0xa')](function(_0x9c0b2b){logger['info']('Setting,\x20%s,\x20%s',_0x35ad2d,_0x6c53('0xb'));logger[_0x6c53('0xc')](_0x6c53('0xd'),_0x35ad2d,_0x6c53('0xb'),JSON[_0x6c53('0xe')](_0x9c0b2b));if(_0x9c0b2b[_0x6c53('0xf')]){if(_0x9c0b2b[_0x6c53('0xf')]['code']===0x1f4){logger[_0x6c53('0xf')](_0x6c53('0x10'),_0x35ad2d,_0x9c0b2b[_0x6c53('0xf')][_0x6c53('0x11')]);return _0x1512b9(_0x9c0b2b[_0x6c53('0xf')]['message']);}logger['error']('Setting,\x20%s,\x20%s',_0x35ad2d,_0x9c0b2b['error'][_0x6c53('0x11')]);return _0x239ba8(_0x9c0b2b['error'][_0x6c53('0x11')]);}else{logger[_0x6c53('0x12')](_0x6c53('0x10'),_0x35ad2d,'request\x20sent');_0x239ba8(_0x9c0b2b[_0x6c53('0x13')][_0x6c53('0x11')]);}})['catch'](function(_0x1abb91){logger[_0x6c53('0xf')]('Setting,\x20%s,\x20%s',_0x35ad2d,_0x1abb91);_0x1512b9(_0x1abb91);});});}exports[_0x6c53('0x14')]=function(_0x5bc58d){var _0x8803c0=this;return new Promise(function(_0x29955,_0x2a2ecc){return db[_0x6c53('0x15')][_0x6c53('0x16')]({'raw':_0x5bc58d[_0x6c53('0x17')]?_0x5bc58d[_0x6c53('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5bc58d[_0x6c53('0x17')]?_0x5bc58d[_0x6c53('0x17')][_0x6c53('0x18')]||null:null,'attributes':_0x5bc58d[_0x6c53('0x17')]?_0x5bc58d[_0x6c53('0x17')][_0x6c53('0x19')]||null:null,'include':_0x5bc58d[_0x6c53('0x17')]?_0x5bc58d[_0x6c53('0x17')][_0x6c53('0x1a')]?_[_0x6c53('0x1b')](_0x5bc58d[_0x6c53('0x17')][_0x6c53('0x1a')],function(_0x425735){return{'model':db[_0x425735[_0x6c53('0x1c')]],'as':_0x425735['as'],'attributes':_0x425735[_0x6c53('0x19')],'include':_0x425735[_0x6c53('0x1a')]?_[_0x6c53('0x1b')](_0x425735[_0x6c53('0x1a')],function(_0x19d6ed){return{'model':db[_0x19d6ed['model']],'as':_0x19d6ed['as'],'attributes':_0x19d6ed[_0x6c53('0x19')],'include':_0x19d6ed[_0x6c53('0x1a')]?_['map'](_0x19d6ed[_0x6c53('0x1a')],function(_0x576434){return{'model':db[_0x576434['model']],'as':_0x576434['as'],'attributes':_0x576434[_0x6c53('0x19')]};}):[]};}):[]};}):[]:[]})[_0x6c53('0xa')](function(_0x3c34be){logger[_0x6c53('0x12')](_0x6c53('0x14'),_0x5bc58d);logger[_0x6c53('0xc')](_0x6c53('0x14'),_0x5bc58d,JSON[_0x6c53('0xe')](_0x3c34be));_0x29955(_0x3c34be);})['catch'](function(_0x4fa06c){logger['error']('ShowSetting',_0x4fa06c['message'],_0x5bc58d);_0x2a2ecc(_0x8803c0[_0x6c53('0xf')](0x1f4,_0x4fa06c['message']));});});};
\ No newline at end of file
index 1edf34d..c85350f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x31a774,_0x4f70cb){var _0x5aeccb=function(_0x5b1c03){while(--_0x5b1c03){_0x31a774['push'](_0x31a774['shift']());}};_0x5aeccb(++_0x4f70cb);}(_0x53ec,0x192));var _0xc53e=function(_0x48dfc7,_0x28410f){_0x48dfc7=_0x48dfc7-0x0;var _0x553cbf=_0x53ec[_0x48dfc7];return _0x553cbf;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
+var _0xf494=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','getAgents','post','/:id/applications','addApplications','/:id/send','send','/:id/users','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf494,0x1c6));var _0x4f49=function(_0x573808,_0x4e67cd){_0x573808=_0x573808-0x0;var _0x429448=_0xf494[_0x573808];return _0x429448;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0xa')](_0x4f49('0x10'),auth[_0x4f49('0xb')](),controller['getDispositions']);router[_0x4f49('0xa')](_0x4f49('0x11'),auth['isAuthenticated'](),controller[_0x4f49('0x12')]);router['get']('/:id/applications',auth[_0x4f49('0xb')](),controller[_0x4f49('0x13')]);router['get'](_0x4f49('0x14'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x15')]);router[_0x4f49('0xa')](_0x4f49('0x16'),controller[_0x4f49('0x17')]);router[_0x4f49('0xa')]('/:id/users',auth[_0x4f49('0xb')](),controller[_0x4f49('0x18')]);router[_0x4f49('0x19')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4f49('0x19')](_0x4f49('0x10'),auth[_0x4f49('0xb')](),controller['addDisposition']);router[_0x4f49('0x19')](_0x4f49('0x11'),auth[_0x4f49('0xb')](),controller['addAnswer']);router['post']('/:id/notify',controller['notify']);router[_0x4f49('0x19')](_0x4f49('0x1a'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x1b')]);router['post'](_0x4f49('0x1c'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x1d')]);router[_0x4f49('0x19')](_0x4f49('0x16'),controller['status']);router[_0x4f49('0x19')](_0x4f49('0x1e'),auth[_0x4f49('0xb')](),controller['addAgents']);router[_0x4f49('0x1f')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x20')]);router[_0x4f49('0x21')](_0x4f49('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0x4f49('0x21')](_0x4f49('0x10'),auth['isAuthenticated'](),controller[_0x4f49('0x22')]);router[_0x4f49('0x21')](_0x4f49('0x11'),auth['isAuthenticated'](),controller[_0x4f49('0x23')]);router[_0x4f49('0x21')](_0x4f49('0x1e'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x24')]);module[_0x4f49('0x25')]=router;
\ No newline at end of file
index 35f89c0..c672364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9af=['ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','skebby','clicksend','plivo','clickatell','bandwidth','intelepeer'];(function(_0xa970f7,_0x1ff9d6){var _0x47f18f=function(_0xf3e5c8){while(--_0xf3e5c8){_0xa970f7['push'](_0xa970f7['shift']());}};_0x47f18f(++_0x1ff9d6);}(_0xf9af,0x75));var _0xff9a=function(_0x54dc4d,_0x4df406){_0x54dc4d=_0x54dc4d-0x0;var _0x1f8f55=_0xf9af[_0x54dc4d];return _0x1f8f55;};'use strict';var Sequelize=require(_0xff9a('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0xff9a('0x1')],'unique':_0xff9a('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xff9a('0x1')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xff9a('0x1')]},'type':{'type':Sequelize['ENUM']('twilio',_0xff9a('0x3'),'connectel',_0xff9a('0x4'),_0xff9a('0x5'),_0xff9a('0x6'),_0xff9a('0x7'),'csc','infobip',_0xff9a('0x8'))},'accountSid':{'type':Sequelize[_0xff9a('0x1')]},'authId':{'type':Sequelize[_0xff9a('0x1')]},'authToken':{'type':Sequelize[_0xff9a('0x1')]},'smsMethod':{'type':Sequelize[_0xff9a('0x9')]('SI','TI','GP')},'username':{'type':Sequelize[_0xff9a('0x1')]},'password':{'type':Sequelize[_0xff9a('0x1')]},'apiKey':{'type':Sequelize[_0xff9a('0x1')]},'applicationId':{'type':Sequelize[_0xff9a('0x1')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0xff9a('0x1')]},'deliveryReport':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'description':{'type':Sequelize[_0xff9a('0x1')]},'notificationTemplate':{'type':Sequelize[_0xff9a('0xb')],'defaultValue':function(){return _0xff9a('0xc');}},'notificationSound':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xff9a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xff9a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xff9a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xff9a('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xff9a('0xd')],'comment':_0xff9a('0xe')},'mandatoryDisposition':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xb59937){if(!_0xb59937)this[_0xff9a('0xf')](_0xff9a('0x10'),null);this['setDataValue'](_0xff9a('0x11'),_0xb59937);}}};
\ No newline at end of file
+var _0xc248=['csc','infobip','intelepeer','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','ENUM','twilio','connectel','clicksend','plivo','clickatell','bandwidth'];(function(_0x545b64,_0x31d015){var _0x4a282e=function(_0x38ec28){while(--_0x38ec28){_0x545b64['push'](_0x545b64['shift']());}};_0x4a282e(++_0x31d015);}(_0xc248,0x196));var _0x8c24=function(_0x11f226,_0x491e30){_0x11f226=_0x11f226-0x0;var _0x30be77=_0xc248[_0x11f226];return _0x30be77;};'use strict';var Sequelize=require(_0x8c24('0x0'));var rs=require(_0x8c24('0x1'));module[_0x8c24('0x2')]={'name':{'type':Sequelize[_0x8c24('0x3')],'unique':_0x8c24('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x8c24('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x8c24('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x8c24('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x8c24('0x5')](_0x8c24('0x6'),'skebby',_0x8c24('0x7'),_0x8c24('0x8'),_0x8c24('0x9'),_0x8c24('0xa'),_0x8c24('0xb'),_0x8c24('0xc'),_0x8c24('0xd'),_0x8c24('0xe'))},'accountSid':{'type':Sequelize[_0x8c24('0x3')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x8c24('0x3')]},'password':{'type':Sequelize[_0x8c24('0x3')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x8c24('0x3')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x8c24('0x3')]},'notificationTemplate':{'type':Sequelize[_0x8c24('0xf')],'defaultValue':function(){return _0x8c24('0x10');}},'notificationSound':{'type':Sequelize[_0x8c24('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x8c24('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8c24('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8c24('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8c24('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8c24('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8c24('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8c24('0x12')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x8c24('0x11')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x3985de){if(!_0x3985de)this[_0x8c24('0x13')](_0x8c24('0x14'),null);this[_0x8c24('0x13')](_0x8c24('0x15'),_0x3985de);}}};
\ No newline at end of file
index 4234458..e516fa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3511=['ACCEPTD','csc','message-id','state','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','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','./smsAccount.socket','register','client','http','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','map','SmsAccount','fieldName','type','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','mandatoryDispositionPause','length','options','create','body','user','role','UserProfileSection','find','autoAssociation','Pause','describe','getDispositions','Disposition','rawAttributes','SmsAccountId','addAnswer','findOne','CannedAnswer','removeAnswers','ids','notify','SmsApplication','Applications','account','applications','orderBy','priority','asc','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','twilio','from','From','Body','messageId','MessageSid','skebby','sender','connectel','message_id','Text','MessageUUID','results','originatingAddress','segmentedMessage','clickatell','fromNumber','text','bandwidth','refid','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','omit','Contacts','CmContact','SmsInteraction','spread','interaction','autoclose','close','unmanaged','*,*,*,*','created','SmsMessage','ContactId','AttachmentId','User','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','addApplications','sequelize','bulkCreate','findAndCountAll','getApplications','getInteractions','fullname','internal','Tag','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','infobip','groupName','intelepeer','redif','DELIVERED','clicksend','DELIVRD'];(function(_0x4cf8f4,_0x190ca4){var _0x566552=function(_0x52ae7e){while(--_0x52ae7e){_0x4cf8f4['push'](_0x4cf8f4['shift']());}};_0x566552(++_0x190ca4);}(_0x3511,0x1be));var _0x1351=function(_0x204fbf,_0x27e8ce){_0x204fbf=_0x204fbf-0x0;var _0x415a60=_0x3511[_0x204fbf];return _0x415a60;};'use strict';var emlformat=require(_0x1351('0x0'));var rimraf=require(_0x1351('0x1'));var zipdir=require(_0x1351('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1351('0x3'));var moment=require(_0x1351('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1351('0x5'));var util=require(_0x1351('0x6'));var path=require(_0x1351('0x7'));var sox=require(_0x1351('0x8'));var csv=require(_0x1351('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1351('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1351('0xb'));var jsforce=require(_0x1351('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1351('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1351('0xd'));var authService=require(_0x1351('0xe'));var qs=require(_0x1351('0xf'));var as=require(_0x1351('0x10'));var hardwareService=require(_0x1351('0x11'));var logger=require(_0x1351('0x12'))(_0x1351('0x13'));var utils=require(_0x1351('0x14'));var config=require(_0x1351('0x15'));var licenseUtil=require(_0x1351('0x16'));var db=require(_0x1351('0x17'))['db'];config[_0x1351('0x18')]=_[_0x1351('0x19')](config[_0x1351('0x18')],{'host':_0x1351('0x1a'),'port':0x18eb});var socket=require(_0x1351('0x1b'))(new Redis(config[_0x1351('0x18')]));require(_0x1351('0x1c'))[_0x1351('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1351('0x1e')][_0x1351('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x34e74a,_0xc86f01,_0x2803b9,_0x226b89){return new BPromise(function(_0x41f420,_0x461101){var _0x287519=_0x226b89||client;return _0x287519['request'](_0x34e74a,_0x2803b9)[_0x1351('0x20')](function(_0x485a2e){logger[_0x1351('0x21')](_0x1351('0x22'),_0xc86f01,_0x1351('0x23'));logger[_0x1351('0x24')](_0x1351('0x25'),_0xc86f01,_0x1351('0x23'),JSON[_0x1351('0x26')](_0x485a2e));if(_0x485a2e[_0x1351('0x27')]){if(_0x485a2e['error'][_0x1351('0x28')]===0x1f4){logger[_0x1351('0x27')](_0x1351('0x22'),_0xc86f01,_0x485a2e[_0x1351('0x27')][_0x1351('0x29')]);return _0x461101(_0x485a2e[_0x1351('0x27')][_0x1351('0x29')]);}logger[_0x1351('0x27')](_0x1351('0x22'),_0xc86f01,_0x485a2e[_0x1351('0x27')][_0x1351('0x29')]);return _0x41f420(_0x485a2e['error'][_0x1351('0x29')]);}else{logger[_0x1351('0x21')](_0x1351('0x22'),_0xc86f01,_0x1351('0x23'));_0x41f420(_0x485a2e[_0x1351('0x2a')]['message']);}})['catch'](function(_0x2c99c0){logger[_0x1351('0x27')](_0x1351('0x22'),_0xc86f01,_0x2c99c0);_0x461101(_0x2c99c0);});});}function respondWithStatusCode(_0x126991,_0x235ad4){_0x235ad4=_0x235ad4||0xcc;return function(_0x18190f){if(_0x18190f){return _0x126991[_0x1351('0x2b')](_0x235ad4);}return _0x126991[_0x1351('0x2c')](_0x235ad4)[_0x1351('0x2d')]();};}function respondWithResult(_0x2d7a2c,_0x4cce27){_0x4cce27=_0x4cce27||0xc8;return function(_0x42f5c8){if(_0x42f5c8){return _0x2d7a2c[_0x1351('0x2c')](_0x4cce27)['json'](_0x42f5c8);}};}function respondWithFilteredResult(_0x38637d,_0x2f2311){return function(_0x221198){if(_0x221198){var _0x4b9e5a=typeof _0x2f2311[_0x1351('0x2e')]==='undefined'&&typeof _0x2f2311[_0x1351('0x2f')]===_0x1351('0x30');var _0x4afb3=_0x221198[_0x1351('0x31')];var _0x2c1a1a=_0x4b9e5a?0x0:_0x2f2311[_0x1351('0x2e')];var _0x3a03a7=_0x4b9e5a?_0x221198['count']:_0x2f2311[_0x1351('0x2e')]+_0x2f2311[_0x1351('0x2f')];var _0x2aee89;if(_0x3a03a7>=_0x4afb3){_0x3a03a7=_0x4afb3;_0x2aee89=0xc8;}else{_0x2aee89=0xce;}_0x38637d[_0x1351('0x2c')](_0x2aee89);return _0x38637d[_0x1351('0x32')](_0x1351('0x33'),_0x2c1a1a+'-'+_0x3a03a7+'/'+_0x4afb3)[_0x1351('0x34')](_0x221198);}return null;};}function patchUpdates(_0x47009c){return function(_0x3917d6){try{jsonpatch['apply'](_0x3917d6,_0x47009c,!![]);}catch(_0xdda8c2){return BPromise[_0x1351('0x35')](_0xdda8c2);}return _0x3917d6[_0x1351('0x36')]();};}function saveUpdates(_0x11dfcf,_0x1ee9d2){return function(_0x279111){if(_0x279111){return _0x279111[_0x1351('0x37')](_0x11dfcf)[_0x1351('0x20')](function(_0x47ca0e){return _0x47ca0e;});}return null;};}function removeEntity(_0x1c885c,_0x1e4126){return function(_0x3488a1){if(_0x3488a1){return _0x3488a1[_0x1351('0x38')]()[_0x1351('0x20')](function(){var _0x3f74fa=_0x3488a1[_0x1351('0x39')]({'plain':!![]});var _0xc32679='SmsAccounts';return db[_0x1351('0x3a')][_0x1351('0x38')]({'where':{'type':_0xc32679,'resourceId':_0x3f74fa['id']}})[_0x1351('0x20')](function(){return _0x3488a1;});})['then'](function(){_0x1c885c[_0x1351('0x2c')](0xcc)[_0x1351('0x2d')]();});}};}function handleEntityNotFound(_0x56f95f,_0x24eb74){return function(_0x376154){if(!_0x376154){_0x56f95f[_0x1351('0x2b')](0x194);}return _0x376154;};}function handleError(_0x5f3760,_0x3c4ca8){_0x3c4ca8=_0x3c4ca8||0x1f4;return function(_0x2b9a48){logger[_0x1351('0x27')](_0x2b9a48[_0x1351('0x3b')]);if(_0x2b9a48[_0x1351('0x3c')]){delete _0x2b9a48[_0x1351('0x3c')];}_0x5f3760[_0x1351('0x2c')](_0x3c4ca8)[_0x1351('0x3d')](_0x2b9a48);};}exports[_0x1351('0x3e')]=function(_0x58f312,_0x35d302){var _0x2dc053={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x3c505b={},_0x363125={'count':0x0,'rows':[]};var _0x358c70=_[_0x1351('0x3f')](db[_0x1351('0x40')]['rawAttributes'],function(_0x435440){return{'name':_0x435440[_0x1351('0x41')],'type':_0x435440[_0x1351('0x42')]['key']};});_0x3c505b['model']=_[_0x1351('0x3f')](_0x358c70,_0x1351('0x3c'));_0x3c505b['query']=_[_0x1351('0x43')](_0x58f312[_0x1351('0x44')]);_0x3c505b['filters']=_[_0x1351('0x45')](_0x3c505b[_0x1351('0x46')],_0x3c505b[_0x1351('0x44')]);_0x2dc053[_0x1351('0x47')]=_['intersection'](_0x3c505b['model'],qs[_0x1351('0x48')](_0x58f312[_0x1351('0x44')]['fields']));_0x2dc053[_0x1351('0x47')]=_0x2dc053[_0x1351('0x47')]['length']?_0x2dc053[_0x1351('0x47')]:_0x3c505b[_0x1351('0x46')];if(!_0x58f312[_0x1351('0x44')][_0x1351('0x49')](_0x1351('0x4a'))){_0x2dc053[_0x1351('0x2f')]=qs[_0x1351('0x2f')](_0x58f312[_0x1351('0x44')]['limit']);_0x2dc053['offset']=qs[_0x1351('0x2e')](_0x58f312[_0x1351('0x44')][_0x1351('0x2e')]);}_0x2dc053[_0x1351('0x4b')]=qs[_0x1351('0x4c')](_0x58f312[_0x1351('0x44')][_0x1351('0x4c')]);_0x2dc053[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0x58f312[_0x1351('0x44')],_0x3c505b['filters']),_0x358c70);if(_0x58f312[_0x1351('0x44')][_0x1351('0x50')]){_0x2dc053[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x2dc053[_0x1351('0x4d')],{'$or':_[_0x1351('0x3f')](_0x358c70,function(_0x1bae10){if(_0x1bae10['type']!==_0x1351('0x52')){var _0x273003={};_0x273003[_0x1bae10[_0x1351('0x3c')]]={'$like':'%'+_0x58f312[_0x1351('0x44')]['filter']+'%'};return _0x273003;}})});}_0x2dc053=_[_0x1351('0x51')]({},_0x2dc053,_0x58f312['options']);var _0x904c57={'where':_0x2dc053[_0x1351('0x4d')]};return db['SmsAccount'][_0x1351('0x31')](_0x904c57)[_0x1351('0x20')](function(_0x2d886d){_0x363125[_0x1351('0x31')]=_0x2d886d;if(_0x58f312[_0x1351('0x44')][_0x1351('0x53')]){_0x2dc053[_0x1351('0x54')]=[{'all':!![]}];}return db[_0x1351('0x40')][_0x1351('0x55')](_0x2dc053);})[_0x1351('0x20')](function(_0x2bb8b3){_0x363125[_0x1351('0x56')]=_0x2bb8b3;return _0x363125;})['then'](respondWithFilteredResult(_0x35d302,_0x2dc053))[_0x1351('0x57')](handleError(_0x35d302,null));};exports[_0x1351('0x58')]=function(_0x4c8ccc,_0x245e7b){var _0x449bf5={'raw':![],'where':{'id':_0x4c8ccc[_0x1351('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0x1351('0x5a')}]},_0x275626={};_0x275626['model']=_[_0x1351('0x43')](db[_0x1351('0x40')]['rawAttributes']);_0x275626['query']=_[_0x1351('0x43')](_0x4c8ccc['query']);_0x275626['filters']=_['intersection'](_0x275626[_0x1351('0x46')],_0x275626[_0x1351('0x44')]);_0x449bf5['attributes']=_[_0x1351('0x45')](_0x275626[_0x1351('0x46')],qs['fields'](_0x4c8ccc[_0x1351('0x44')]['fields']));_0x449bf5[_0x1351('0x47')]=_0x449bf5[_0x1351('0x47')][_0x1351('0x5b')]?_0x449bf5['attributes']:_0x275626[_0x1351('0x46')];if(_0x4c8ccc[_0x1351('0x44')][_0x1351('0x53')]){_0x449bf5[_0x1351('0x54')]=[{'all':!![]}];}_0x449bf5=_[_0x1351('0x51')]({},_0x449bf5,_0x4c8ccc[_0x1351('0x5c')]);return db[_0x1351('0x40')]['find'](_0x449bf5)[_0x1351('0x20')](handleEntityNotFound(_0x245e7b,null))[_0x1351('0x20')](respondWithResult(_0x245e7b,null))[_0x1351('0x57')](handleError(_0x245e7b,null));};exports[_0x1351('0x5d')]=function(_0x4a45a3,_0x15eb30){return db[_0x1351('0x40')][_0x1351('0x5d')](_0x4a45a3[_0x1351('0x5e')],{})[_0x1351('0x20')](function(_0x199a2b){var _0x476bd4=_0x4a45a3[_0x1351('0x5f')][_0x1351('0x39')]({'plain':!![]});if(!_0x476bd4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x476bd4[_0x1351('0x60')]===_0x1351('0x5f')){var _0x5acabc=_0x199a2b['get']({'plain':!![]});var _0x3e47dc='SmsAccounts';return db[_0x1351('0x61')][_0x1351('0x62')]({'where':{'name':_0x3e47dc,'userProfileId':_0x476bd4['userProfileId']},'raw':!![]})['then'](function(_0x1c4273){if(_0x1c4273&&_0x1c4273[_0x1351('0x63')]===0x0){return db[_0x1351('0x3a')][_0x1351('0x5d')]({'name':_0x5acabc[_0x1351('0x3c')],'resourceId':_0x5acabc['id'],'type':_0x1c4273[_0x1351('0x3c')],'sectionId':_0x1c4273['id']},{})[_0x1351('0x20')](function(){return _0x199a2b;});}else{return _0x199a2b;}})[_0x1351('0x57')](function(_0x917809){logger[_0x1351('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x917809);throw _0x917809;});}return _0x199a2b;})[_0x1351('0x20')](respondWithResult(_0x15eb30,0xc9))[_0x1351('0x57')](handleError(_0x15eb30,null));};exports['update']=function(_0x547f55,_0x2d9001){if(_0x547f55[_0x1351('0x5e')]['id']){delete _0x547f55[_0x1351('0x5e')]['id'];}return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x547f55[_0x1351('0x59')]['id']},'include':[{'model':db[_0x1351('0x64')],'as':_0x1351('0x5a')}]})[_0x1351('0x20')](handleEntityNotFound(_0x2d9001,null))[_0x1351('0x20')](saveUpdates(_0x547f55[_0x1351('0x5e')],null))['then'](respondWithResult(_0x2d9001,null))[_0x1351('0x57')](handleError(_0x2d9001,null));};exports[_0x1351('0x38')]=function(_0x3b7f11,_0x493dd1){return db[_0x1351('0x40')]['find']({'where':{'id':_0x3b7f11['params']['id']}})['then'](handleEntityNotFound(_0x493dd1,null))[_0x1351('0x20')](removeEntity(_0x493dd1,null))['catch'](handleError(_0x493dd1,null));};exports[_0x1351('0x65')]=function(_0x49fdf0,_0x2041e6){return db[_0x1351('0x40')]['describe']()[_0x1351('0x20')](respondWithResult(_0x2041e6,null))[_0x1351('0x57')](handleError(_0x2041e6,null));};exports['addDisposition']=function(_0x49bee2,_0x2f5477,_0x4b0992){if(_0x49bee2[_0x1351('0x5e')]['id']){delete _0x49bee2['body']['id'];}return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x49bee2['params']['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x2f5477,null))['then'](function(_0x2fe68f){if(_0x2fe68f){_0x49bee2[_0x1351('0x5e')]['SmsAccountId']=_0x2fe68f['id'];return db['Disposition'][_0x1351('0x5d')](_0x49bee2[_0x1351('0x5e')]);}})[_0x1351('0x20')](respondWithResult(_0x2f5477,null))[_0x1351('0x57')](handleError(_0x2f5477,null));};exports[_0x1351('0x66')]=function(_0x207635,_0x5a96c1,_0x3d7ff3){var _0x516902={'raw':![],'where':{}};var _0x212897={};var _0x3fbc8a={'count':0x0,'rows':[]};return db[_0x1351('0x40')]['findOne']({'where':{'id':_0x207635[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x5a96c1,null))[_0x1351('0x20')](function(_0x5ba197){if(_0x5ba197){_0x212897[_0x1351('0x46')]=_[_0x1351('0x43')](db[_0x1351('0x67')][_0x1351('0x68')]);_0x212897[_0x1351('0x44')]=_[_0x1351('0x43')](_0x207635[_0x1351('0x44')]);_0x212897['filters']=_[_0x1351('0x45')](_0x212897[_0x1351('0x46')],_0x212897[_0x1351('0x44')]);_0x516902[_0x1351('0x47')]=_[_0x1351('0x45')](_0x212897[_0x1351('0x46')],qs[_0x1351('0x48')](_0x207635[_0x1351('0x44')][_0x1351('0x48')]));_0x516902[_0x1351('0x47')]=_0x516902[_0x1351('0x47')][_0x1351('0x5b')]?_0x516902['attributes']:_0x212897[_0x1351('0x46')];if(!_0x207635['query'][_0x1351('0x49')](_0x1351('0x4a'))){_0x516902[_0x1351('0x2f')]=qs[_0x1351('0x2f')](_0x207635['query']['limit']);_0x516902[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0x207635[_0x1351('0x44')]['offset']);}_0x516902[_0x1351('0x4b')]=qs[_0x1351('0x4c')](_0x207635[_0x1351('0x44')][_0x1351('0x4c')]);_0x516902[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0x207635['query'],_0x212897[_0x1351('0x4e')]));_0x516902[_0x1351('0x4d')][_0x1351('0x69')]=_0x5ba197['id'];if(_0x207635[_0x1351('0x44')][_0x1351('0x50')]){_0x516902[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x516902[_0x1351('0x4d')],{'$or':_[_0x1351('0x3f')](_0x516902[_0x1351('0x47')],function(_0x4331f2){var _0x3d49a8={};_0x3d49a8[_0x4331f2]={'$like':'%'+_0x207635[_0x1351('0x44')][_0x1351('0x50')]+'%'};return _0x3d49a8;})});}_0x516902=_[_0x1351('0x51')]({},_0x516902,_0x207635[_0x1351('0x5c')]);return db[_0x1351('0x67')][_0x1351('0x31')]({'where':_0x516902[_0x1351('0x4d')]})[_0x1351('0x20')](function(_0x5e64ca){_0x3fbc8a[_0x1351('0x31')]=_0x5e64ca;if(_0x207635[_0x1351('0x44')][_0x1351('0x53')]){_0x516902['include']=[{'all':!![]}];}return db[_0x1351('0x67')][_0x1351('0x55')](_0x516902);})[_0x1351('0x20')](function(_0x2ca641){_0x3fbc8a['rows']=_0x2ca641;return _0x3fbc8a;});}})[_0x1351('0x20')](respondWithFilteredResult(_0x5a96c1,_0x516902))[_0x1351('0x57')](handleError(_0x5a96c1,null));};exports['removeDispositions']=function(_0x411db7,_0x32d050,_0x729ef8){return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x411db7[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x32d050,null))['then'](function(_0x256262){if(_0x256262){return _0x256262['removeDispositions'](_0x411db7[_0x1351('0x44')]['ids']);}})[_0x1351('0x20')](respondWithStatusCode(_0x32d050,null))[_0x1351('0x57')](handleError(_0x32d050,null));};exports[_0x1351('0x6a')]=function(_0xdf5f7b,_0x29703c,_0x37d92d){if(_0xdf5f7b[_0x1351('0x5e')]['id']){delete _0xdf5f7b[_0x1351('0x5e')]['id'];}return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0xdf5f7b[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x29703c,null))[_0x1351('0x20')](function(_0x440093){if(_0x440093){_0xdf5f7b[_0x1351('0x5e')]['SmsAccountId']=_0x440093['id'];return db['CannedAnswer'][_0x1351('0x5d')](_0xdf5f7b[_0x1351('0x5e')]);}})[_0x1351('0x20')](respondWithResult(_0x29703c,null))[_0x1351('0x57')](handleError(_0x29703c,null));};exports['getAnswers']=function(_0x3d3e6a,_0x11d4e5,_0x44efdc){var _0x5d1bd3={'raw':![],'where':{}};var _0x3d660a={};var _0x4a1b64={'count':0x0,'rows':[]};return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0x3d3e6a[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x11d4e5,null))[_0x1351('0x20')](function(_0x4b7be1){if(_0x4b7be1){_0x3d660a['model']=_[_0x1351('0x43')](db[_0x1351('0x6c')][_0x1351('0x68')]);_0x3d660a[_0x1351('0x44')]=_[_0x1351('0x43')](_0x3d3e6a['query']);_0x3d660a[_0x1351('0x4e')]=_[_0x1351('0x45')](_0x3d660a[_0x1351('0x46')],_0x3d660a[_0x1351('0x44')]);_0x5d1bd3[_0x1351('0x47')]=_['intersection'](_0x3d660a[_0x1351('0x46')],qs['fields'](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x48')]));_0x5d1bd3['attributes']=_0x5d1bd3[_0x1351('0x47')][_0x1351('0x5b')]?_0x5d1bd3['attributes']:_0x3d660a['model'];if(!_0x3d3e6a[_0x1351('0x44')][_0x1351('0x49')](_0x1351('0x4a'))){_0x5d1bd3[_0x1351('0x2f')]=qs['limit'](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x2f')]);_0x5d1bd3['offset']=qs[_0x1351('0x2e')](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x2e')]);}_0x5d1bd3[_0x1351('0x4b')]=qs[_0x1351('0x4c')](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x4c')]);_0x5d1bd3[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_['pick'](_0x3d3e6a[_0x1351('0x44')],_0x3d660a[_0x1351('0x4e')]));_0x5d1bd3['where'][_0x1351('0x69')]=_0x4b7be1['id'];if(_0x3d3e6a[_0x1351('0x44')][_0x1351('0x50')]){_0x5d1bd3['where']=_['merge'](_0x5d1bd3['where'],{'$or':_['map'](_0x5d1bd3[_0x1351('0x47')],function(_0x206a8a){var _0x4ff4c2={};_0x4ff4c2[_0x206a8a]={'$like':'%'+_0x3d3e6a[_0x1351('0x44')][_0x1351('0x50')]+'%'};return _0x4ff4c2;})});}_0x5d1bd3=_[_0x1351('0x51')]({},_0x5d1bd3,_0x3d3e6a[_0x1351('0x5c')]);return db['CannedAnswer'][_0x1351('0x31')]({'where':_0x5d1bd3[_0x1351('0x4d')]})[_0x1351('0x20')](function(_0x573726){_0x4a1b64[_0x1351('0x31')]=_0x573726;if(_0x3d3e6a['query']['includeAll']){_0x5d1bd3[_0x1351('0x54')]=[{'all':!![]}];}return db[_0x1351('0x6c')][_0x1351('0x55')](_0x5d1bd3);})[_0x1351('0x20')](function(_0x31414a){_0x4a1b64['rows']=_0x31414a;return _0x4a1b64;});}})[_0x1351('0x20')](respondWithFilteredResult(_0x11d4e5,_0x5d1bd3))[_0x1351('0x57')](handleError(_0x11d4e5,null));};exports['removeAnswers']=function(_0x2adef9,_0x5532a7,_0x5760d0){return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x2adef9['params']['id']}})['then'](handleEntityNotFound(_0x5532a7,null))[_0x1351('0x20')](function(_0x44abd8){if(_0x44abd8){return _0x44abd8[_0x1351('0x6d')](_0x2adef9[_0x1351('0x44')][_0x1351('0x6e')]);}})['then'](respondWithStatusCode(_0x5532a7,null))[_0x1351('0x57')](handleError(_0x5532a7,null));};exports[_0x1351('0x6f')]=function(_0x5a1c4a,_0x365c82,_0x4bfec0){var _0x20dd52={'channel':'sms'};var _0x216314=[];var _0x4b2656=[];var _0x279f76={};return db[_0x1351('0x40')]['find']({'where':{'id':_0x5a1c4a[_0x1351('0x59')]['id']},'include':[{'model':db[_0x1351('0x70')],'as':_0x1351('0x71')}]})[_0x1351('0x20')](handleEntityNotFound(_0x365c82,null))[_0x1351('0x20')](function(_0x1ecd73){_0x20dd52[_0x1351('0x72')]=_0x1ecd73;_0x20dd52[_0x1351('0x73')]=_[_0x1351('0x74')](_0x1ecd73[_0x1351('0x71')],[_0x1351('0x75')],[_0x1351('0x76')]);if(_0x20dd52['account'][_0x1351('0x71')]){delete _0x20dd52['account']['Applications'];}return db['CmContact'][_0x1351('0x65')]();})[_0x1351('0x20')](function(_0x505c63){if(!_0x505c63){throw new db[(_0x1351('0x77'))][(_0x1351('0x78'))](_0x1351('0x79'));}_0x216314=_[_0x1351('0x7a')](_[_0x1351('0x43')](_0x505c63),[_0x1351('0x7b'),_0x1351('0x7c')]);_0x4b2656=_['difference'](_[_0x1351('0x43')](_0x505c63),[_0x1351('0x7b'),_0x1351('0x7c'),_0x1351('0x7d'),_0x1351('0x7e')]);_0x20dd52['body']={'mapKey':'mobile'};if(_0x20dd52['account'][_0x1351('0x42')]){switch(_0x20dd52['account'][_0x1351('0x42')]){case _0x1351('0x7f'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x81')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x82')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x84')];break;case _0x1351('0x85'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]='+'+_0x5a1c4a['body'][_0x1351('0x86')];_0x20dd52[_0x1351('0x5e')]['body']=_0x5a1c4a[_0x1351('0x5e')]['text'];break;case _0x1351('0x87'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')]['from'];_0x20dd52['body'][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x29')];break;case'clicksend':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x80')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x5e')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a['body'][_0x1351('0x88')];break;case'plivo':_0x20dd52['body'][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x81')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x89')];_0x20dd52['body']['messageId']=_0x5a1c4a['body'][_0x1351('0x8a')];break;case'infobip':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]='+'+_0x5a1c4a['body']['results'][0x0][_0x1351('0x80')];_0x20dd52[_0x1351('0x5e')]['body']=_0x5a1c4a['body'][_0x1351('0x8b')][0x0]['text'];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')]['results'][0x0][_0x1351('0x83')];break;case'csc':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x8c')];_0x20dd52['body'][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x8d')][_0x1351('0x29')];break;case _0x1351('0x8e'):_0x20dd52[_0x1351('0x5e')]['from']=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x8f')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a['body'][_0x1351('0x90')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')]['replyMessageId'];break;case _0x1351('0x91'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')][0x0][_0x1351('0x29')]['id'];_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][0x0][_0x1351('0x29')][_0x1351('0x80')];_0x20dd52['body'][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][0x0][_0x1351('0x29')][_0x1351('0x90')];break;case'intelepeer':_0x20dd52[_0x1351('0x5e')]['from']=_0x5a1c4a['body'][_0x1351('0x80')];_0x20dd52[_0x1351('0x5e')]['body']=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x29')];_0x20dd52[_0x1351('0x5e')]['messageId']=_0x5a1c4a['body'][_0x1351('0x92')];break;}}if(_0x20dd52[_0x1351('0x5e')]['id']){delete _0x20dd52[_0x1351('0x5e')]['id'];}if(_['isNil'](_0x20dd52[_0x1351('0x5e')]['from'])){throw new db['Sequelize'][(_0x1351('0x78'))](_0x1351('0x93'));}if(_['isNil'](_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')])||_0x20dd52['body'][_0x1351('0x5e')]===''){throw new db[(_0x1351('0x77'))][(_0x1351('0x78'))](_0x1351('0x94'));}if(_[_0x1351('0x95')](_0x20dd52['body'][_0x1351('0x96')])){throw new db[(_0x1351('0x77'))][(_0x1351('0x78'))](_0x1351('0x97')+_0x4b2656);}if(!_['includes'](_0x4b2656,_0x20dd52[_0x1351('0x5e')][_0x1351('0x96')])){throw new db[(_0x1351('0x77'))]['ValidationError'](_0x1351('0x98')+_0x4b2656);}_0x279f76[_0x20dd52[_0x1351('0x5e')][_0x1351('0x96')]]=_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')];return db[_0x1351('0x99')][_0x1351('0x62')]({'where':{'id':_0x20dd52[_0x1351('0x72')][_0x1351('0x7e')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x279f76,'limit':0x1,'order':[['updatedAt',_0x1351('0x9a')]]}]});})[_0x1351('0x20')](handleEntityNotFound(_0x365c82,null))['then'](function(_0x5b3782){if(_0x5b3782){_0x20dd52['list']=_[_0x1351('0x9b')](_0x5b3782,['Contacts']);if(_0x5b3782[_0x1351('0x9c')][_0x1351('0x5b')]){return _0x5b3782['Contacts'][0x0];}var _0x3c2ac8=_['defaults'](_0x20dd52[_0x1351('0x5e')],{'firstName':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')],'ListId':_0x5b3782['id']});_0x3c2ac8[_0x20dd52[_0x1351('0x5e')][_0x1351('0x96')]]=_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')];return db[_0x1351('0x9d')][_0x1351('0x5d')](_0x3c2ac8,{'fields':_0x216314,'raw':!![]});}})[_0x1351('0x20')](handleEntityNotFound(_0x365c82,null))[_0x1351('0x20')](function(_0xfca27d){if(_0xfca27d){_0x20dd52['contact']=_0xfca27d;var _0x37248b={'ContactId':_0xfca27d['id'],'phone':_0x20dd52['body']['from'],'SmsAccountId':_0x5a1c4a[_0x1351('0x59')]['id']};var _0x138979={'ContactId':_0xfca27d['id'],'SmsAccountId':_0x5a1c4a[_0x1351('0x59')]['id'],'closed':![]};return db[_0x1351('0x9e')]['find']({'where':_0x138979})['then'](function(_0x25d5cc){if(_0x25d5cc){return[_0x25d5cc,![]];}return db[_0x1351('0x9e')][_0x1351('0x5d')](_0x37248b)[_0x1351('0x20')](function(_0x43d7b0){return[_0x43d7b0,!![]];});});}})[_0x1351('0x9f')](function(_0x3ca038,_0xc3cafc){_0x20dd52[_0x1351('0xa0')]=_0x3ca038[_0x1351('0x39')]({'plain':!![]});_0x20dd52[_0x1351('0xa0')]['created']=![];if(_0xc3cafc){if(_0x20dd52['account'][_0x1351('0xa1')]){_0x20dd52['applications']['push']({'id':0x0,'priority':_0x20dd52[_0x1351('0x73')]['length']+0x1,'app':_0x1351('0xa2'),'appdata':_0x1351('0xa3'),'interval':_0x1351('0xa4')});}_0x20dd52[_0x1351('0xa0')][_0x1351('0xa5')]=!![];}return db[_0x1351('0xa6')][_0x1351('0x5d')]({'phone':_0x20dd52['body'][_0x1351('0x80')],'messageId':_0x20dd52['body']['messageId'],'body':_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')],'SmsAccountId':_0x5a1c4a['params']['id'],'SmsInteractionId':_0x3ca038['id'],'direction':'in','ContactId':_0x3ca038[_0x1351('0xa7')],'AttachmentId':_0x20dd52[_0x1351('0x5e')][_0x1351('0xa8')]});})[_0x1351('0x20')](function(_0x1acfda){_0x20dd52[_0x1351('0x29')]=_0x1acfda;if(_0x20dd52[_0x1351('0xa0')]['UserId']){return db[_0x1351('0xa9')][_0x1351('0x62')]({'attributes':['id',_0x1351('0x3c')],'where':{'id':_0x20dd52[_0x1351('0xa0')][_0x1351('0xaa')]}})[_0x1351('0x20')](function(_0x16408f){if(_0x16408f){_0x20dd52[_0x1351('0x73')][_0x1351('0xab')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x16408f[_0x1351('0x3c')]+','+(_0x20dd52['account'][_0x1351('0xac')]||0xa),'interval':_0x1351('0xa4')});}return respondWithRpcPromise(_0x1351('0xad'),_0x1351('0xae'),_0x20dd52);});}return respondWithRpcPromise(_0x1351('0xad'),_0x1351('0xae'),_0x20dd52);})[_0x1351('0x20')](function(_0x13b0a5){if(_0x13b0a5){var _0x2c35bf=0xc8;var _0x3e57af='receiveMessage';logger[_0x1351('0x21')](_0x1351('0x25'),_0x3e57af,_0x2c35bf,'entity\x20found');logger[_0x1351('0x24')](_0x1351('0xaf'),_0x3e57af,_0x2c35bf,'entity\x20found',JSON[_0x1351('0x26')](_0x13b0a5));if(_0x20dd52['account'][_0x1351('0x42')]===_0x1351('0x7f')){return _0x365c82[_0x1351('0x2c')](_0x2c35bf)[_0x1351('0x32')](_0x1351('0xb0'),_0x1351('0xb1'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x365c82[_0x1351('0x2c')](_0x2c35bf)[_0x1351('0x34')](_0x13b0a5);}}})[_0x1351('0x57')](handleError(_0x365c82,null));};exports[_0x1351('0xb2')]=function(_0x308219,_0x50eed0,_0x51b53f){return db[_0x1351('0x40')]['findOne']({'where':{'id':_0x308219[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x50eed0,null))['then'](function(_0x28c639){if(_0x28c639){return db[_0x1351('0xb3')]['transaction'](function(_0x456375){return db['SmsApplication'][_0x1351('0x38')]({'where':{'SmsAccountId':_0x308219[_0x1351('0x59')]['id']},'transaction':_0x456375})['then'](function(_0x398f82){var _0x1797bc=_['map'](_0x308219[_0x1351('0x5e')],function(_0x86b5db){_0x86b5db[_0x1351('0x69')]=_0x308219[_0x1351('0x59')]['id'];return _0x86b5db;});return db[_0x1351('0x70')][_0x1351('0xb4')](_0x1797bc,{'transaction':_0x456375});});})[_0x1351('0x20')](function(){return db[_0x1351('0x70')][_0x1351('0xb5')]({'where':{'SmsAccountId':_0x308219['params']['id']},'order':_0x1351('0x75')});});}})['then'](respondWithResult(_0x50eed0,null))[_0x1351('0x57')](handleError(_0x50eed0,null));};exports[_0x1351('0xb6')]=function(_0x274ab2,_0x5d4e17,_0x2d5dcd){var _0x522d6f={};var _0x222906={};var _0x462391;var _0x49156d;return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0x274ab2[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x5d4e17,null))[_0x1351('0x20')](function(_0x49651e){if(_0x49651e){_0x462391=_0x49651e;_0x222906[_0x1351('0x46')]=_['keys'](db[_0x1351('0x70')][_0x1351('0x68')]);_0x222906[_0x1351('0x44')]=_[_0x1351('0x43')](_0x274ab2[_0x1351('0x44')]);_0x222906[_0x1351('0x4e')]=_[_0x1351('0x45')](_0x222906[_0x1351('0x46')],_0x222906[_0x1351('0x44')]);_0x522d6f[_0x1351('0x47')]=_['intersection'](_0x222906['model'],qs['fields'](_0x274ab2['query'][_0x1351('0x48')]));_0x522d6f['attributes']=_0x522d6f[_0x1351('0x47')][_0x1351('0x5b')]?_0x522d6f['attributes']:_0x222906[_0x1351('0x46')];_0x522d6f[_0x1351('0x4b')]=qs['sort'](_0x274ab2[_0x1351('0x44')]['sort']);_0x522d6f[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_['pick'](_0x274ab2[_0x1351('0x44')],_0x222906['filters']));if(_0x274ab2[_0x1351('0x44')][_0x1351('0x50')]){_0x522d6f['where']=_[_0x1351('0x51')](_0x522d6f[_0x1351('0x4d')],{'$or':_['map'](_0x522d6f[_0x1351('0x47')],function(_0x2b1cd8){var _0x43a8ca={};_0x43a8ca[_0x2b1cd8]={'$like':'%'+_0x274ab2['query'][_0x1351('0x50')]+'%'};return _0x43a8ca;})});}_0x522d6f=_[_0x1351('0x51')]({},_0x522d6f,_0x274ab2[_0x1351('0x5c')]);return _0x462391['getApplications'](_0x522d6f);}})[_0x1351('0x20')](function(_0x2432a5){if(_0x2432a5){_0x49156d=_0x2432a5[_0x1351('0x5b')];if(!_0x274ab2['query'][_0x1351('0x49')](_0x1351('0x4a'))){_0x522d6f[_0x1351('0x2f')]=qs['limit'](_0x274ab2[_0x1351('0x44')][_0x1351('0x2f')]);_0x522d6f[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0x274ab2[_0x1351('0x44')][_0x1351('0x2e')]);}return _0x462391['getApplications'](_0x522d6f);}})[_0x1351('0x20')](function(_0x539f02){if(_0x539f02){return _0x539f02?{'count':_0x49156d,'rows':_0x539f02}:null;}})[_0x1351('0x20')](respondWithResult(_0x5d4e17,null))['catch'](handleError(_0x5d4e17,null));};exports[_0x1351('0xb7')]=function(_0xa7c0d0,_0x30f399,_0x20a3e0){var _0x55cc5d={'raw':![],'where':{}};var _0x5a78a6={};var _0x1af9b4={'count':0x0,'rows':[]};return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0xa7c0d0[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x30f399,null))[_0x1351('0x20')](function(_0xd4d2be){if(_0xd4d2be){_0x5a78a6['model']=_[_0x1351('0x43')](db[_0x1351('0x9e')][_0x1351('0x68')]);_0x5a78a6[_0x1351('0x44')]=_[_0x1351('0x43')](_0xa7c0d0['query']);_0x5a78a6[_0x1351('0x4e')]=_[_0x1351('0x45')](_0x5a78a6[_0x1351('0x46')],_0x5a78a6[_0x1351('0x44')]);_0x55cc5d[_0x1351('0x47')]=_[_0x1351('0x45')](_0x5a78a6['model'],qs[_0x1351('0x48')](_0xa7c0d0[_0x1351('0x44')][_0x1351('0x48')]));_0x55cc5d[_0x1351('0x47')]=_0x55cc5d[_0x1351('0x47')][_0x1351('0x5b')]?_0x55cc5d[_0x1351('0x47')]:_0x5a78a6[_0x1351('0x46')];if(!_0xa7c0d0['query'][_0x1351('0x49')](_0x1351('0x4a'))){_0x55cc5d[_0x1351('0x2f')]=qs['limit'](_0xa7c0d0['query']['limit']);_0x55cc5d[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0xa7c0d0[_0x1351('0x44')][_0x1351('0x2e')]);}_0x55cc5d['order']=qs[_0x1351('0x4c')](_0xa7c0d0[_0x1351('0x44')][_0x1351('0x4c')]);_0x55cc5d['where']=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0xa7c0d0[_0x1351('0x44')],_0x5a78a6[_0x1351('0x4e')]));_0x55cc5d['where'][_0x1351('0x69')]=_0xd4d2be['id'];if(_0xa7c0d0[_0x1351('0x44')][_0x1351('0x50')]){_0x55cc5d[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x55cc5d[_0x1351('0x4d')],{'$or':_[_0x1351('0x3f')](_0x55cc5d[_0x1351('0x47')],function(_0x128140){var _0x3bbbcb={};_0x3bbbcb[_0x128140]={'$like':'%'+_0xa7c0d0[_0x1351('0x44')]['filter']+'%'};return _0x3bbbcb;})});}_0x55cc5d=_[_0x1351('0x51')]({},_0x55cc5d,_0xa7c0d0[_0x1351('0x5c')]);return db[_0x1351('0x9e')][_0x1351('0x31')]({'where':_0x55cc5d[_0x1351('0x4d')]})['then'](function(_0x29361b){_0x1af9b4[_0x1351('0x31')]=_0x29361b;if(_0xa7c0d0[_0x1351('0x44')][_0x1351('0x53')]){_0x55cc5d[_0x1351('0x54')]=[{'model':db[_0x1351('0x9d')],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x1351('0x3c'),_0x1351('0xb8'),_0x1351('0xb9')],'required':![]},{'model':db[_0x1351('0xba')],'as':'Tags','attributes':['id',_0x1351('0x3c'),_0x1351('0xbb')],'where':_0xa7c0d0['query'][_0x1351('0xbc')]?{'id':_0xa7c0d0[_0x1351('0x44')][_0x1351('0xbc')]}:undefined,'required':_0xa7c0d0[_0x1351('0x44')]['tag']?!![]:![]}];}return db[_0x1351('0x9e')][_0x1351('0x55')](_0x55cc5d);})['then'](function(_0x54db43){_0x1af9b4[_0x1351('0x56')]=_0x54db43;return _0x1af9b4;});}})[_0x1351('0x20')](respondWithFilteredResult(_0x30f399,_0x55cc5d))['catch'](handleError(_0x30f399,null));};exports[_0x1351('0x3d')]=function(_0x2e844d,_0x20edec,_0x29f5d4){var _0x23b530,_0x33dc4c,_0x5e3adc;if(_[_0x1351('0x95')](_0x2e844d[_0x1351('0x5e')][_0x1351('0x5e')])||_0x2e844d[_0x1351('0x5e')][_0x1351('0x5e')]===''){throw new db['Sequelize'][(_0x1351('0x78'))](_0x1351('0x94'));}if(_['isNil'](_0x2e844d[_0x1351('0x5e')]['to'])){throw new db['Sequelize'][(_0x1351('0x78'))](_0x1351('0xbd'));}_0x23b530=_0x2e844d[_0x1351('0x5e')]['to'];return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x2e844d['params']['id']},'include':[{'model':db[_0x1351('0x99')],'as':_0x1351('0xbe'),'include':[{'model':db[_0x1351('0x9d')],'as':_0x1351('0x9c'),'where':{'mobile':_0x23b530},'limit':0x1,'order':[[_0x1351('0x7c'),_0x1351('0x9a')]]}]}]})['then'](handleEntityNotFound(_0x20edec,null))[_0x1351('0x20')](function(_0x4fa7c1){if(_0x4fa7c1&&_0x4fa7c1[_0x1351('0xbe')]){_0x33dc4c=_0x4fa7c1[_0x1351('0x39')]({'plain':!![]});if(_0x33dc4c['List']&&_0x33dc4c[_0x1351('0xbe')][_0x1351('0x9c')][_0x1351('0x5b')]){return _0x33dc4c[_0x1351('0xbe')]['Contacts'][0x0];}return db['CmContact'][_0x1351('0x5d')](_[_0x1351('0x19')](_0x2e844d[_0x1351('0x5e')],{'firstName':_0x23b530,'mobile':_0x23b530,'phone':_0x23b530,'ListId':_0x33dc4c['ListId']}));}})[_0x1351('0x20')](handleEntityNotFound(_0x20edec,null))[_0x1351('0x20')](function(_0x31a83e){if(_0x31a83e){_0x5e3adc=_0x31a83e;return db[_0x1351('0x9e')]['find']({'where':{'ContactId':_0x5e3adc['id'],'closed':![],'SmsAccountId':_0x33dc4c['id']}})[_0x1351('0x20')](function(_0x1f1f0b){if(_0x1f1f0b){return[_0x1f1f0b,![]];}return db[_0x1351('0x9e')][_0x1351('0x5d')]({'UserId':_0x2e844d['user']['id'],'ContactId':_0x5e3adc['id'],'SmsAccountId':_0x33dc4c['id'],'phone':_0x23b530,'firstMsgDirection':_0x1351('0xbf'),'Messages':[_[_0x1351('0x51')](_0x2e844d[_0x1351('0x5e')],{'read':![],'body':_0x2e844d[_0x1351('0x5e')]['body'],'phone':_0x23b530,'SmsAccountId':_0x33dc4c['id'],'UserId':_0x2e844d['user']['id'],'ContactId':_0x5e3adc['id']})]},{'include':[{'model':db[_0x1351('0xa6')],'as':_0x1351('0xc0')}]})[_0x1351('0x20')](function(_0x595e4f){return[_0x595e4f,!![]];});});}})[_0x1351('0x9f')](function(_0x4e326f,_0x5d7f51){if(_0x5d7f51){return _0x4e326f;}return db[_0x1351('0xa6')]['create'](_[_0x1351('0x51')](_0x2e844d[_0x1351('0x5e')],{'read':![],'body':_0x2e844d[_0x1351('0x5e')][_0x1351('0x5e')],'phone':_0x23b530,'SmsAccountId':_0x33dc4c['id'],'SmsInteractionId':_0x4e326f['id'],'UserId':_0x2e844d[_0x1351('0x5f')]['id'],'ContactId':_0x5e3adc['id']}))[_0x1351('0x20')](function(_0x17da9e){_0x4e326f[_0x1351('0xc1')][_0x1351('0xc0')]=[];_0x4e326f[_0x1351('0xc1')][_0x1351('0xc0')][_0x1351('0xc2')](_0x17da9e['dataValues']);return _0x4e326f;});})[_0x1351('0x20')](respondWithResult(_0x20edec,null))[_0x1351('0x57')](handleError(_0x20edec,null));};exports['status']=function(_0x3e188a,_0x21042f,_0x255725){if(_0x3e188a[_0x1351('0x5e')]['id']){delete _0x3e188a['body']['id'];}var _0x36ef94,_0x4750ca,_0x462871;return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x3e188a[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x21042f,null))[_0x1351('0x20')](function(_0x24e3a7){if(_0x24e3a7){_0x462871=_0x24e3a7;logger[_0x1351('0x24')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0xc3'),_0x24e3a7[_0x1351('0x42')],util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));switch(_0x24e3a7['type']){case _0x1351('0x85'):if(_0x3e188a['body'][_0x1351('0xc5')]&&_0x3e188a['body'][_0x1351('0x2c')]){_0x4750ca=_0x3e188a['body'][_0x1351('0x2c')];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][_0x1351('0xc5')]}});}break;case _0x1351('0x87'):if(_0x3e188a[_0x1351('0x5e')][_0x1351('0xc6')]&&_0x3e188a[_0x1351('0x5e')][_0x1351('0xc7')]){_0x4750ca=_0x3e188a[_0x1351('0x5e')][_0x1351('0xc7')];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][_0x1351('0xc6')]}});}break;case'clicksend':if(_0x3e188a[_0x1351('0x5e')][_0x1351('0x88')]&&_0x3e188a[_0x1351('0x5e')][_0x1351('0xc8')]){_0x4750ca=_0x3e188a[_0x1351('0x5e')][_0x1351('0xc8')];return db['SmsMessage']['find']({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][_0x1351('0x88')]}});}break;case _0x1351('0xc9'):var _0x4d0b21=_0x3e188a['body'][_0x1351('0x8b')][0x0];if(_0x4d0b21[_0x1351('0x83')]&&_0x4d0b21[_0x1351('0x2c')]['groupName']==='DELIVERED'){_0x4750ca=_0x4d0b21[_0x1351('0x2c')][_0x1351('0xca')];return db['SmsMessage'][_0x1351('0x62')]({'where':{'messageId':_0x4d0b21[_0x1351('0x83')]}});}break;case _0x1351('0x8e'):if(_0x3e188a[_0x1351('0x5e')]['messageId']&&_0x3e188a[_0x1351('0x5e')][_0x1351('0x2c')]){_0x4750ca=_0x3e188a[_0x1351('0x5e')]['status'];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a['body']['messageId']}});}break;case _0x1351('0x91'):if(_0x3e188a[_0x1351('0x5e')][0x0][_0x1351('0x29')]['id']){_0x4750ca=_0x3e188a[_0x1351('0x5e')][0x0][_0x1351('0x42')];return db['SmsMessage'][_0x1351('0x62')]({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][0x0][_0x1351('0x29')]['id']}});}break;case _0x1351('0xcb'):if(_0x3e188a[_0x1351('0x5e')][_0x1351('0xcc')]&&_0x3e188a[_0x1351('0x5e')][_0x1351('0x2c')]){_0x4750ca=_0x3e188a['body'][_0x1351('0x2c')];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a['body']['redif']}});}break;}}})[_0x1351('0x20')](handleEntityNotFound(_0x21042f,null))[_0x1351('0x20')](function(_0x92fa26){if(_0x92fa26){_0x36ef94=_0x92fa26;switch(_0x462871['type']){case _0x1351('0x85'):if(_0x4750ca===_0x1351('0xcd')){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x85'),util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x1351('0x87'):if(_0x4750ca==='1'){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger['error'](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x85'),util['inspect'](_0x3e188a['body'],{'showHidden':![],'depth':null}));}break;case _0x1351('0xce'):if(!_0x3e188a[_0x1351('0x5e')]['error_code']&&_0x4750ca>=0xc8&&_0x4750ca<=0xce){return _0x36ef94['update']({'read':!![]});}else{logger[_0x1351('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1351('0x2c'),_0x1351('0xce'),util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x1351('0xc9'):var _0x520cc9=_0x3e188a['body']['results'][0x0];if(_0x520cc9[_0x1351('0x2c')][_0x1351('0xca')]===_0x1351('0xcd')){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),'status',_0x1351('0xc9'),util[_0x1351('0xc4')](_0x3e188a['body'],{'showHidden':![],'depth':null}));}break;case _0x1351('0x8e'):if(_0x4750ca=='DELIVERED_TO_GATEWAY'||_0x4750ca=='RECEIVED_BY_RECIPIENT'){return _0x36ef94['update']({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x8e'),util[_0x1351('0xc4')](_0x3e188a['body'],{'showHidden':![],'depth':null}));}break;case _0x1351('0x91'):if(_0x4750ca=='message-delivered'){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger['error'](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x91'),util['inspect'](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x1351('0xcb'):if(_0x4750ca===_0x1351('0xcf')||_0x4750ca===_0x1351('0xd0')){return _0x36ef94['update']({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),_0x1351('0x2c'),'intelepeer',util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x36ef94;}})['then'](respondWithResult(_0x21042f,null))['catch'](handleError(_0x21042f,null));};exports['statusGet']=function(_0x24e2df,_0x52dc7b,_0x535208){var _0x4fe922,_0x38c135,_0x1a7974;return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x24e2df[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x52dc7b,null))[_0x1351('0x20')](function(_0x8163d){if(_0x8163d){_0x1a7974=_0x8163d;logger[_0x1351('0x24')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0xc3'),_0x8163d[_0x1351('0x42')],util[_0x1351('0xc4')](_0x24e2df[_0x1351('0x44')],{'showHidden':![],'depth':null}));switch(_0x8163d[_0x1351('0x42')]){case _0x1351('0xd1'):if(_0x24e2df[_0x1351('0x44')][_0x1351('0xd2')]&&_0x24e2df[_0x1351('0x44')][_0x1351('0xd3')]){_0x38c135=_0x24e2df[_0x1351('0x44')][_0x1351('0xd3')];return db[_0x1351('0xa6')]['find']({'where':{'messageId':_0x24e2df[_0x1351('0x44')][_0x1351('0xd2')]}});}break;}}})['then'](handleEntityNotFound(_0x52dc7b,null))[_0x1351('0x20')](function(_0x3cc7c3){if(_0x3cc7c3){_0x4fe922=_0x3cc7c3;switch(_0x1a7974[_0x1351('0x42')]){case _0x1351('0xd1'):if(_0x38c135==='2'||_0x38c135==='6'){return _0x4fe922[_0x1351('0x37')]({'read':!![]});}else{logger['error'](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0xd1'),util['inspect'](_0x24e2df[_0x1351('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x4fe922;}})['then'](respondWithResult(_0x52dc7b,null))[_0x1351('0x57')](handleError(_0x52dc7b,null));};exports['addAgents']=function(_0x4abc0c,_0x150e96,_0x198c95){return db['SmsAccount'][_0x1351('0x62')]({'where':{'id':_0x4abc0c[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x150e96,null))[_0x1351('0x20')](function(_0x38255d){if(_0x38255d){return _0x38255d['addAgents'](_0x4abc0c[_0x1351('0x5e')][_0x1351('0x6e')],_[_0x1351('0x9b')](_0x4abc0c[_0x1351('0x5e')],[_0x1351('0x6e'),'id'])||{})[_0x1351('0x9f')](function(_0x4a908c){for(var _0x1a52f2=0x0;_0x1a52f2<_0x4abc0c[_0x1351('0x5e')][_0x1351('0x6e')]['length'];_0x1a52f2+=0x1){socket[_0x1351('0xd4')](_0x1351('0xd5'),{'UserId':Number(_0x4abc0c[_0x1351('0x5e')]['ids'][_0x1a52f2]),'SmsAccountId':Number(_0x4abc0c['params']['id'])});}return _0x4a908c;});}})[_0x1351('0x20')](respondWithResult(_0x150e96,null))[_0x1351('0x57')](handleError(_0x150e96,null));};exports['removeAgents']=function(_0xa7a763,_0x52ef08,_0x66f612){return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0xa7a763[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x52ef08,null))[_0x1351('0x20')](function(_0x13f9f6){if(_0x13f9f6){return _0x13f9f6[_0x1351('0xd6')](_0xa7a763[_0x1351('0x44')]['ids'])[_0x1351('0x20')](function(){if(_[_0x1351('0xd7')](_0xa7a763['query']['ids'])){for(var _0x5d34e8=0x0;_0x5d34e8<_0xa7a763[_0x1351('0x44')][_0x1351('0x6e')][_0x1351('0x5b')];_0x5d34e8+=0x1){socket[_0x1351('0xd4')]('userSmsAccount:remove',{'UserId':Number(_0xa7a763[_0x1351('0x44')][_0x1351('0x6e')][_0x5d34e8]),'SmsAccountId':Number(_0xa7a763[_0x1351('0x59')]['id'])});}}else{socket[_0x1351('0xd4')](_0x1351('0xd8'),{'UserId':Number(_0xa7a763['query'][_0x1351('0x6e')]),'SmsAccountId':Number(_0xa7a763['params']['id'])});}});}})[_0x1351('0x20')](respondWithStatusCode(_0x52ef08,null))['catch'](handleError(_0x52ef08,null));};exports[_0x1351('0xd9')]=function(_0x2237d3,_0x57ddf7,_0x546d15){var _0x4f71dd={};var _0x49ce3b={};var _0x8631b0;var _0x579049;return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0x2237d3[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x57ddf7,null))['then'](function(_0x41cb8a){if(_0x41cb8a){_0x8631b0=_0x41cb8a;_0x49ce3b['model']=_[_0x1351('0x43')](db[_0x1351('0xa9')]['rawAttributes']);_0x49ce3b['query']=_['keys'](_0x2237d3[_0x1351('0x44')]);_0x49ce3b['filters']=_['intersection'](_0x49ce3b['model'],_0x49ce3b[_0x1351('0x44')]);_0x4f71dd[_0x1351('0x47')]=_['intersection'](_0x49ce3b[_0x1351('0x46')],qs['fields'](_0x2237d3[_0x1351('0x44')][_0x1351('0x48')]));_0x4f71dd[_0x1351('0x47')]=_0x4f71dd[_0x1351('0x47')][_0x1351('0x5b')]?_0x4f71dd[_0x1351('0x47')]:_0x49ce3b[_0x1351('0x46')];_0x4f71dd['order']=qs['sort'](_0x2237d3[_0x1351('0x44')][_0x1351('0x4c')]);_0x4f71dd[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0x2237d3[_0x1351('0x44')],_0x49ce3b[_0x1351('0x4e')]));if(_0x2237d3[_0x1351('0x44')]['filter']){_0x4f71dd[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x4f71dd['where'],{'$or':_[_0x1351('0x3f')](_0x4f71dd[_0x1351('0x47')],function(_0xb839c1){var _0x123c10={};_0x123c10[_0xb839c1]={'$like':'%'+_0x2237d3[_0x1351('0x44')][_0x1351('0x50')]+'%'};return _0x123c10;})});}_0x4f71dd=_[_0x1351('0x51')]({},_0x4f71dd,_0x2237d3[_0x1351('0x5c')]);return _0x8631b0['getAgents'](_0x4f71dd);}})['then'](function(_0x49402c){if(_0x49402c){_0x579049=_0x49402c['length'];if(!_0x2237d3[_0x1351('0x44')][_0x1351('0x49')](_0x1351('0x4a'))){_0x4f71dd[_0x1351('0x2f')]=qs[_0x1351('0x2f')](_0x2237d3[_0x1351('0x44')]['limit']);_0x4f71dd[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0x2237d3[_0x1351('0x44')][_0x1351('0x2e')]);}return _0x8631b0[_0x1351('0xd9')](_0x4f71dd);}})[_0x1351('0x20')](function(_0x5c785d){if(_0x5c785d){return _0x5c785d?{'count':_0x579049,'rows':_0x5c785d}:null;}})[_0x1351('0x20')](respondWithResult(_0x57ddf7,null))[_0x1351('0x57')](handleError(_0x57ddf7,null));};
\ No newline at end of file
+var _0x716d=['order','sort','where','pick','merge','map','VIRTUAL','filter','options','SmsAccount','includeAll','include','findAll','rows','show','params','fields','create','body','UserProfileSection','find','describe','addDisposition','Disposition','getDispositions','findOne','keys','removeDispositions','ids','addAnswer','SmsAccountId','CannedAnswer','getAnswers','removeAnswers','notify','sms','SmsApplication','Applications','account','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','messageId','skebby','text','connectel','message_id','plivo','MessageUUID','infobip','results','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','omit','defaults','contact','SmsInteraction','interaction','created','applications','push','close','unmanaged','*,*,*,*','ContactId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','Start','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','transaction','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Owner','fullname','internal','Tags','color','tag','to\x20is\x20mandatory','List','user','SmsMessage','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','clicksend','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','spread','emit','removeAgents','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','mustache','util','path','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','SmsAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','undefined','limit','count','offset','set','json','apply','reject','save','update','destroy','get','SmsAccounts','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit'];(function(_0x3e5027,_0x1c7ee4){var _0x1f1b5a=function(_0x3faec1){while(--_0x3faec1){_0x3e5027['push'](_0x3e5027['shift']());}};_0x1f1b5a(++_0x1c7ee4);}(_0x716d,0x93));var _0xd716=function(_0x5659a7,_0x4cb327){_0x5659a7=_0x5659a7-0x0;var _0x1472fc=_0x716d[_0x5659a7];return _0x1472fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd716('0x0'));var zipdir=require(_0xd716('0x1'));var jsonpatch=require(_0xd716('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd716('0x3'));var util=require(_0xd716('0x4'));var path=require(_0xd716('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd716('0x6'));var fs=require('fs');var fs_extra=require(_0xd716('0x7'));var _=require('lodash');var squel=require(_0xd716('0x8'));var crypto=require('crypto');var jsforce=require(_0xd716('0x9'));var deskjs=require(_0xd716('0xa'));var toCsv=require(_0xd716('0xb'));var querystring=require(_0xd716('0xc'));var Papa=require(_0xd716('0xd'));var Redis=require(_0xd716('0xe'));var authService=require(_0xd716('0xf'));var qs=require(_0xd716('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd716('0x11'));var logger=require(_0xd716('0x12'))(_0xd716('0x13'));var utils=require(_0xd716('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd716('0x15'));var db=require(_0xd716('0x16'))['db'];config[_0xd716('0x17')]=_['defaults'](config[_0xd716('0x17')],{'host':_0xd716('0x18'),'port':0x18eb});var socket=require(_0xd716('0x19'))(new Redis(config[_0xd716('0x17')]));require(_0xd716('0x1a'))[_0xd716('0x1b')](socket);var jayson=require(_0xd716('0x1c'));var client=jayson[_0xd716('0x1d')][_0xd716('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x21a901,_0x165cc6,_0x902876,_0x12ba7b){return new BPromise(function(_0x457662,_0x50cae0){var _0x508e23=_0x12ba7b||client;return _0x508e23[_0xd716('0x1f')](_0x21a901,_0x902876)[_0xd716('0x20')](function(_0x3fbea7){logger[_0xd716('0x21')]('SmsAccount,\x20%s,\x20%s',_0x165cc6,'request\x20sent');logger[_0xd716('0x22')](_0xd716('0x23'),_0x165cc6,_0xd716('0x24'),JSON['stringify'](_0x3fbea7));if(_0x3fbea7['error']){if(_0x3fbea7['error'][_0xd716('0x25')]===0x1f4){logger[_0xd716('0x26')](_0xd716('0x27'),_0x165cc6,_0x3fbea7[_0xd716('0x26')][_0xd716('0x28')]);return _0x50cae0(_0x3fbea7[_0xd716('0x26')][_0xd716('0x28')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x165cc6,_0x3fbea7['error'][_0xd716('0x28')]);return _0x457662(_0x3fbea7[_0xd716('0x26')][_0xd716('0x28')]);}else{logger[_0xd716('0x21')](_0xd716('0x27'),_0x165cc6,_0xd716('0x24'));_0x457662(_0x3fbea7[_0xd716('0x29')][_0xd716('0x28')]);}})[_0xd716('0x2a')](function(_0x54ea48){logger['error'](_0xd716('0x27'),_0x165cc6,_0x54ea48);_0x50cae0(_0x54ea48);});});}function respondWithStatusCode(_0x34ce93,_0x40f8a3){_0x40f8a3=_0x40f8a3||0xcc;return function(_0x313980){if(_0x313980){return _0x34ce93[_0xd716('0x2b')](_0x40f8a3);}return _0x34ce93[_0xd716('0x2c')](_0x40f8a3)['end']();};}function respondWithResult(_0x2a227e,_0x20323b){_0x20323b=_0x20323b||0xc8;return function(_0x3a2117){if(_0x3a2117){return _0x2a227e[_0xd716('0x2c')](_0x20323b)['json'](_0x3a2117);}};}function respondWithFilteredResult(_0x3dd045,_0x1fe41e){return function(_0x2c6edd){if(_0x2c6edd){var _0x27fda0=typeof _0x1fe41e['offset']===_0xd716('0x2d')&&typeof _0x1fe41e[_0xd716('0x2e')]==='undefined';var _0x38a7eb=_0x2c6edd[_0xd716('0x2f')];var _0x37fbb3=_0x27fda0?0x0:_0x1fe41e[_0xd716('0x30')];var _0x57b696=_0x27fda0?_0x2c6edd[_0xd716('0x2f')]:_0x1fe41e[_0xd716('0x30')]+_0x1fe41e[_0xd716('0x2e')];var _0x26f1ec;if(_0x57b696>=_0x38a7eb){_0x57b696=_0x38a7eb;_0x26f1ec=0xc8;}else{_0x26f1ec=0xce;}_0x3dd045[_0xd716('0x2c')](_0x26f1ec);return _0x3dd045[_0xd716('0x31')]('Content-Range',_0x37fbb3+'-'+_0x57b696+'/'+_0x38a7eb)[_0xd716('0x32')](_0x2c6edd);}return null;};}function patchUpdates(_0x16cec3){return function(_0x523030){try{jsonpatch[_0xd716('0x33')](_0x523030,_0x16cec3,!![]);}catch(_0x140650){return BPromise[_0xd716('0x34')](_0x140650);}return _0x523030[_0xd716('0x35')]();};}function saveUpdates(_0x5a4100,_0x11cf2a){return function(_0x282de9){if(_0x282de9){return _0x282de9[_0xd716('0x36')](_0x5a4100)[_0xd716('0x20')](function(_0x5b2c41){return _0x5b2c41;});}return null;};}function removeEntity(_0x4309f8,_0x5cc884){return function(_0x213455){if(_0x213455){return _0x213455[_0xd716('0x37')]()['then'](function(){var _0x4cdd56=_0x213455[_0xd716('0x38')]({'plain':!![]});var _0x104b26=_0xd716('0x39');return db[_0xd716('0x3a')]['destroy']({'where':{'type':_0x104b26,'resourceId':_0x4cdd56['id']}})[_0xd716('0x20')](function(){return _0x213455;});})[_0xd716('0x20')](function(){_0x4309f8['status'](0xcc)[_0xd716('0x3b')]();});}};}function handleEntityNotFound(_0x207a6f,_0x538ead){return function(_0x3a3e1f){if(!_0x3a3e1f){_0x207a6f[_0xd716('0x2b')](0x194);}return _0x3a3e1f;};}function handleError(_0x35f14d,_0x26a8cd){_0x26a8cd=_0x26a8cd||0x1f4;return function(_0x2b0b79){logger[_0xd716('0x26')](_0x2b0b79[_0xd716('0x3c')]);if(_0x2b0b79[_0xd716('0x3d')]){delete _0x2b0b79['name'];}_0x35f14d[_0xd716('0x2c')](_0x26a8cd)[_0xd716('0x3e')](_0x2b0b79);};}exports[_0xd716('0x3f')]=function(_0x15802a,_0x1ce442){var _0x408764={'include':[{'model':db[_0xd716('0x40')],'as':_0xd716('0x41')}]},_0x26d1da={},_0x4be6bb={'count':0x0,'rows':[]};var _0x53ea22=_['map'](db['SmsAccount'][_0xd716('0x42')],function(_0x4b107f){return{'name':_0x4b107f['fieldName'],'type':_0x4b107f[_0xd716('0x43')][_0xd716('0x44')]};});_0x26d1da[_0xd716('0x45')]=_['map'](_0x53ea22,'name');_0x26d1da['query']=_['keys'](_0x15802a[_0xd716('0x46')]);_0x26d1da[_0xd716('0x47')]=_[_0xd716('0x48')](_0x26d1da[_0xd716('0x45')],_0x26d1da[_0xd716('0x46')]);_0x408764[_0xd716('0x49')]=_[_0xd716('0x48')](_0x26d1da[_0xd716('0x45')],qs['fields'](_0x15802a['query']['fields']));_0x408764[_0xd716('0x49')]=_0x408764[_0xd716('0x49')][_0xd716('0x4a')]?_0x408764[_0xd716('0x49')]:_0x26d1da['model'];if(!_0x15802a[_0xd716('0x46')][_0xd716('0x4b')](_0xd716('0x4c'))){_0x408764[_0xd716('0x2e')]=qs[_0xd716('0x2e')](_0x15802a[_0xd716('0x46')][_0xd716('0x2e')]);_0x408764[_0xd716('0x30')]=qs[_0xd716('0x30')](_0x15802a[_0xd716('0x46')][_0xd716('0x30')]);}_0x408764[_0xd716('0x4d')]=qs['sort'](_0x15802a[_0xd716('0x46')][_0xd716('0x4e')]);_0x408764[_0xd716('0x4f')]=qs[_0xd716('0x47')](_[_0xd716('0x50')](_0x15802a[_0xd716('0x46')],_0x26d1da[_0xd716('0x47')]),_0x53ea22);if(_0x15802a[_0xd716('0x46')]['filter']){_0x408764[_0xd716('0x4f')]=_[_0xd716('0x51')](_0x408764['where'],{'$or':_[_0xd716('0x52')](_0x53ea22,function(_0x1a5f7d){if(_0x1a5f7d[_0xd716('0x43')]!==_0xd716('0x53')){var _0x325c00={};_0x325c00[_0x1a5f7d['name']]={'$like':'%'+_0x15802a[_0xd716('0x46')][_0xd716('0x54')]+'%'};return _0x325c00;}})});}_0x408764=_[_0xd716('0x51')]({},_0x408764,_0x15802a[_0xd716('0x55')]);var _0x2dddf9={'where':_0x408764['where']};return db[_0xd716('0x56')][_0xd716('0x2f')](_0x2dddf9)[_0xd716('0x20')](function(_0x3d96df){_0x4be6bb[_0xd716('0x2f')]=_0x3d96df;if(_0x15802a[_0xd716('0x46')][_0xd716('0x57')]){_0x408764[_0xd716('0x58')]=[{'all':!![]}];}return db[_0xd716('0x56')][_0xd716('0x59')](_0x408764);})[_0xd716('0x20')](function(_0x56ecd7){_0x4be6bb[_0xd716('0x5a')]=_0x56ecd7;return _0x4be6bb;})[_0xd716('0x20')](respondWithFilteredResult(_0x1ce442,_0x408764))[_0xd716('0x2a')](handleError(_0x1ce442,null));};exports[_0xd716('0x5b')]=function(_0x3699ed,_0x450959){var _0x2a3ee2={'raw':![],'where':{'id':_0x3699ed[_0xd716('0x5c')]['id']},'include':[{'model':db['Pause'],'as':_0xd716('0x41')}]},_0x13b39c={};_0x13b39c[_0xd716('0x45')]=_['keys'](db[_0xd716('0x56')][_0xd716('0x42')]);_0x13b39c[_0xd716('0x46')]=_['keys'](_0x3699ed['query']);_0x13b39c[_0xd716('0x47')]=_[_0xd716('0x48')](_0x13b39c['model'],_0x13b39c[_0xd716('0x46')]);_0x2a3ee2[_0xd716('0x49')]=_['intersection'](_0x13b39c[_0xd716('0x45')],qs['fields'](_0x3699ed[_0xd716('0x46')][_0xd716('0x5d')]));_0x2a3ee2[_0xd716('0x49')]=_0x2a3ee2[_0xd716('0x49')][_0xd716('0x4a')]?_0x2a3ee2[_0xd716('0x49')]:_0x13b39c['model'];if(_0x3699ed[_0xd716('0x46')][_0xd716('0x57')]){_0x2a3ee2[_0xd716('0x58')]=[{'all':!![]}];}_0x2a3ee2=_[_0xd716('0x51')]({},_0x2a3ee2,_0x3699ed[_0xd716('0x55')]);return db['SmsAccount']['find'](_0x2a3ee2)[_0xd716('0x20')](handleEntityNotFound(_0x450959,null))[_0xd716('0x20')](respondWithResult(_0x450959,null))['catch'](handleError(_0x450959,null));};exports[_0xd716('0x5e')]=function(_0xa8007,_0x3a6d70){return db[_0xd716('0x56')][_0xd716('0x5e')](_0xa8007[_0xd716('0x5f')],{})[_0xd716('0x20')](function(_0x1fcc9f){var _0x32cf04=_0xa8007['user'][_0xd716('0x38')]({'plain':!![]});if(!_0x32cf04)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x32cf04['role']==='user'){var _0x2a53c2=_0x1fcc9f[_0xd716('0x38')]({'plain':!![]});var _0x2943ba=_0xd716('0x39');return db[_0xd716('0x60')][_0xd716('0x61')]({'where':{'name':_0x2943ba,'userProfileId':_0x32cf04['userProfileId']},'raw':!![]})[_0xd716('0x20')](function(_0x213ce6){if(_0x213ce6&&_0x213ce6['autoAssociation']===0x0){return db[_0xd716('0x3a')][_0xd716('0x5e')]({'name':_0x2a53c2[_0xd716('0x3d')],'resourceId':_0x2a53c2['id'],'type':_0x213ce6[_0xd716('0x3d')],'sectionId':_0x213ce6['id']},{})[_0xd716('0x20')](function(){return _0x1fcc9f;});}else{return _0x1fcc9f;}})[_0xd716('0x2a')](function(_0x1c88cc){logger[_0xd716('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1c88cc);throw _0x1c88cc;});}return _0x1fcc9f;})['then'](respondWithResult(_0x3a6d70,0xc9))[_0xd716('0x2a')](handleError(_0x3a6d70,null));};exports[_0xd716('0x36')]=function(_0x405ee6,_0x57046d){if(_0x405ee6[_0xd716('0x5f')]['id']){delete _0x405ee6[_0xd716('0x5f')]['id'];}return db[_0xd716('0x56')][_0xd716('0x61')]({'where':{'id':_0x405ee6[_0xd716('0x5c')]['id']},'include':[{'model':db[_0xd716('0x40')],'as':_0xd716('0x41')}]})[_0xd716('0x20')](handleEntityNotFound(_0x57046d,null))[_0xd716('0x20')](saveUpdates(_0x405ee6[_0xd716('0x5f')],null))[_0xd716('0x20')](respondWithResult(_0x57046d,null))['catch'](handleError(_0x57046d,null));};exports[_0xd716('0x37')]=function(_0x2657ed,_0x35e822){return db['SmsAccount'][_0xd716('0x61')]({'where':{'id':_0x2657ed['params']['id']}})['then'](handleEntityNotFound(_0x35e822,null))['then'](removeEntity(_0x35e822,null))[_0xd716('0x2a')](handleError(_0x35e822,null));};exports['describe']=function(_0x57a8f9,_0x25a8fd){return db[_0xd716('0x56')][_0xd716('0x62')]()[_0xd716('0x20')](respondWithResult(_0x25a8fd,null))[_0xd716('0x2a')](handleError(_0x25a8fd,null));};exports[_0xd716('0x63')]=function(_0x2231e5,_0x3e1d5a,_0x372fdf){if(_0x2231e5[_0xd716('0x5f')]['id']){delete _0x2231e5[_0xd716('0x5f')]['id'];}return db['SmsAccount'][_0xd716('0x61')]({'where':{'id':_0x2231e5[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x3e1d5a,null))['then'](function(_0x4e5561){if(_0x4e5561){_0x2231e5[_0xd716('0x5f')]['SmsAccountId']=_0x4e5561['id'];return db[_0xd716('0x64')][_0xd716('0x5e')](_0x2231e5[_0xd716('0x5f')]);}})[_0xd716('0x20')](respondWithResult(_0x3e1d5a,null))[_0xd716('0x2a')](handleError(_0x3e1d5a,null));};exports[_0xd716('0x65')]=function(_0x2b40d4,_0x2ba3b7,_0x3c49a8){var _0x2cdd19={'raw':![],'where':{}};var _0x3944cd={};var _0x546dc3={'count':0x0,'rows':[]};return db[_0xd716('0x56')][_0xd716('0x66')]({'where':{'id':_0x2b40d4[_0xd716('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2ba3b7,null))[_0xd716('0x20')](function(_0xe6925b){if(_0xe6925b){_0x3944cd[_0xd716('0x45')]=_[_0xd716('0x67')](db[_0xd716('0x64')][_0xd716('0x42')]);_0x3944cd[_0xd716('0x46')]=_[_0xd716('0x67')](_0x2b40d4[_0xd716('0x46')]);_0x3944cd[_0xd716('0x47')]=_[_0xd716('0x48')](_0x3944cd[_0xd716('0x45')],_0x3944cd['query']);_0x2cdd19[_0xd716('0x49')]=_['intersection'](_0x3944cd[_0xd716('0x45')],qs['fields'](_0x2b40d4['query'][_0xd716('0x5d')]));_0x2cdd19['attributes']=_0x2cdd19[_0xd716('0x49')][_0xd716('0x4a')]?_0x2cdd19['attributes']:_0x3944cd[_0xd716('0x45')];if(!_0x2b40d4[_0xd716('0x46')]['hasOwnProperty'](_0xd716('0x4c'))){_0x2cdd19[_0xd716('0x2e')]=qs['limit'](_0x2b40d4[_0xd716('0x46')]['limit']);_0x2cdd19['offset']=qs[_0xd716('0x30')](_0x2b40d4[_0xd716('0x46')][_0xd716('0x30')]);}_0x2cdd19[_0xd716('0x4d')]=qs[_0xd716('0x4e')](_0x2b40d4[_0xd716('0x46')][_0xd716('0x4e')]);_0x2cdd19[_0xd716('0x4f')]=qs['filters'](_['pick'](_0x2b40d4[_0xd716('0x46')],_0x3944cd[_0xd716('0x47')]));_0x2cdd19['where']['SmsAccountId']=_0xe6925b['id'];if(_0x2b40d4[_0xd716('0x46')][_0xd716('0x54')]){_0x2cdd19[_0xd716('0x4f')]=_[_0xd716('0x51')](_0x2cdd19[_0xd716('0x4f')],{'$or':_['map'](_0x2cdd19[_0xd716('0x49')],function(_0x1135d2){var _0x4ca1fb={};_0x4ca1fb[_0x1135d2]={'$like':'%'+_0x2b40d4[_0xd716('0x46')][_0xd716('0x54')]+'%'};return _0x4ca1fb;})});}_0x2cdd19=_['merge']({},_0x2cdd19,_0x2b40d4[_0xd716('0x55')]);return db[_0xd716('0x64')][_0xd716('0x2f')]({'where':_0x2cdd19[_0xd716('0x4f')]})[_0xd716('0x20')](function(_0x4974c1){_0x546dc3[_0xd716('0x2f')]=_0x4974c1;if(_0x2b40d4[_0xd716('0x46')][_0xd716('0x57')]){_0x2cdd19['include']=[{'all':!![]}];}return db[_0xd716('0x64')]['findAll'](_0x2cdd19);})[_0xd716('0x20')](function(_0xa0fb42){_0x546dc3['rows']=_0xa0fb42;return _0x546dc3;});}})[_0xd716('0x20')](respondWithFilteredResult(_0x2ba3b7,_0x2cdd19))[_0xd716('0x2a')](handleError(_0x2ba3b7,null));};exports[_0xd716('0x68')]=function(_0x2929fb,_0x2dbb19,_0x20b0ec){return db['SmsAccount'][_0xd716('0x61')]({'where':{'id':_0x2929fb[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x2dbb19,null))[_0xd716('0x20')](function(_0x1274d9){if(_0x1274d9){return _0x1274d9['removeDispositions'](_0x2929fb[_0xd716('0x46')][_0xd716('0x69')]);}})[_0xd716('0x20')](respondWithStatusCode(_0x2dbb19,null))[_0xd716('0x2a')](handleError(_0x2dbb19,null));};exports[_0xd716('0x6a')]=function(_0x1c72d8,_0x3c9a8d,_0x1f485d){if(_0x1c72d8[_0xd716('0x5f')]['id']){delete _0x1c72d8[_0xd716('0x5f')]['id'];}return db[_0xd716('0x56')][_0xd716('0x61')]({'where':{'id':_0x1c72d8[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x3c9a8d,null))[_0xd716('0x20')](function(_0x4b89e4){if(_0x4b89e4){_0x1c72d8[_0xd716('0x5f')][_0xd716('0x6b')]=_0x4b89e4['id'];return db[_0xd716('0x6c')]['create'](_0x1c72d8[_0xd716('0x5f')]);}})[_0xd716('0x20')](respondWithResult(_0x3c9a8d,null))[_0xd716('0x2a')](handleError(_0x3c9a8d,null));};exports[_0xd716('0x6d')]=function(_0x4e84d8,_0x27b36e,_0x3dc7de){var _0x4272ae={'raw':![],'where':{}};var _0x1d7068={};var _0x5626c6={'count':0x0,'rows':[]};return db[_0xd716('0x56')]['findOne']({'where':{'id':_0x4e84d8[_0xd716('0x5c')]['id']}})['then'](handleEntityNotFound(_0x27b36e,null))[_0xd716('0x20')](function(_0x533f90){if(_0x533f90){_0x1d7068[_0xd716('0x45')]=_[_0xd716('0x67')](db[_0xd716('0x6c')]['rawAttributes']);_0x1d7068[_0xd716('0x46')]=_['keys'](_0x4e84d8[_0xd716('0x46')]);_0x1d7068[_0xd716('0x47')]=_[_0xd716('0x48')](_0x1d7068[_0xd716('0x45')],_0x1d7068['query']);_0x4272ae[_0xd716('0x49')]=_[_0xd716('0x48')](_0x1d7068[_0xd716('0x45')],qs['fields'](_0x4e84d8[_0xd716('0x46')][_0xd716('0x5d')]));_0x4272ae[_0xd716('0x49')]=_0x4272ae[_0xd716('0x49')]['length']?_0x4272ae[_0xd716('0x49')]:_0x1d7068[_0xd716('0x45')];if(!_0x4e84d8[_0xd716('0x46')]['hasOwnProperty'](_0xd716('0x4c'))){_0x4272ae['limit']=qs['limit'](_0x4e84d8[_0xd716('0x46')][_0xd716('0x2e')]);_0x4272ae[_0xd716('0x30')]=qs[_0xd716('0x30')](_0x4e84d8[_0xd716('0x46')]['offset']);}_0x4272ae[_0xd716('0x4d')]=qs[_0xd716('0x4e')](_0x4e84d8[_0xd716('0x46')]['sort']);_0x4272ae[_0xd716('0x4f')]=qs[_0xd716('0x47')](_[_0xd716('0x50')](_0x4e84d8['query'],_0x1d7068[_0xd716('0x47')]));_0x4272ae[_0xd716('0x4f')]['SmsAccountId']=_0x533f90['id'];if(_0x4e84d8[_0xd716('0x46')][_0xd716('0x54')]){_0x4272ae[_0xd716('0x4f')]=_[_0xd716('0x51')](_0x4272ae[_0xd716('0x4f')],{'$or':_[_0xd716('0x52')](_0x4272ae['attributes'],function(_0x12f7fe){var _0x1c2555={};_0x1c2555[_0x12f7fe]={'$like':'%'+_0x4e84d8[_0xd716('0x46')][_0xd716('0x54')]+'%'};return _0x1c2555;})});}_0x4272ae=_[_0xd716('0x51')]({},_0x4272ae,_0x4e84d8[_0xd716('0x55')]);return db[_0xd716('0x6c')]['count']({'where':_0x4272ae[_0xd716('0x4f')]})['then'](function(_0xbbc82c){_0x5626c6[_0xd716('0x2f')]=_0xbbc82c;if(_0x4e84d8[_0xd716('0x46')][_0xd716('0x57')]){_0x4272ae['include']=[{'all':!![]}];}return db[_0xd716('0x6c')]['findAll'](_0x4272ae);})['then'](function(_0x2770bd){_0x5626c6[_0xd716('0x5a')]=_0x2770bd;return _0x5626c6;});}})[_0xd716('0x20')](respondWithFilteredResult(_0x27b36e,_0x4272ae))[_0xd716('0x2a')](handleError(_0x27b36e,null));};exports[_0xd716('0x6e')]=function(_0x427e96,_0x590bfb,_0x67de05){return db[_0xd716('0x56')][_0xd716('0x61')]({'where':{'id':_0x427e96[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x590bfb,null))[_0xd716('0x20')](function(_0x1120f9){if(_0x1120f9){return _0x1120f9['removeAnswers'](_0x427e96[_0xd716('0x46')][_0xd716('0x69')]);}})[_0xd716('0x20')](respondWithStatusCode(_0x590bfb,null))[_0xd716('0x2a')](handleError(_0x590bfb,null));};exports[_0xd716('0x6f')]=function(_0x4a3d49,_0x12eb28,_0x243a8f){var _0xe50e9f={'channel':_0xd716('0x70')};var _0x43f3d6=[];var _0x35918a=[];var _0x4cdcff={};return db[_0xd716('0x56')]['find']({'where':{'id':_0x4a3d49[_0xd716('0x5c')]['id']},'include':[{'model':db[_0xd716('0x71')],'as':_0xd716('0x72')}]})[_0xd716('0x20')](handleEntityNotFound(_0x12eb28,null))[_0xd716('0x20')](function(_0x46e8ac){_0xe50e9f['account']=_0x46e8ac;_0xe50e9f['applications']=_['orderBy'](_0x46e8ac[_0xd716('0x72')],['priority'],['asc']);if(_0xe50e9f[_0xd716('0x73')][_0xd716('0x72')]){delete _0xe50e9f[_0xd716('0x73')][_0xd716('0x72')];}return db[_0xd716('0x74')][_0xd716('0x62')]();})[_0xd716('0x20')](function(_0x2df9c7){if(!_0x2df9c7){throw new db['Sequelize'][(_0xd716('0x75'))](_0xd716('0x76'));}_0x43f3d6=_[_0xd716('0x77')](_[_0xd716('0x67')](_0x2df9c7),[_0xd716('0x78'),_0xd716('0x79')]);_0x35918a=_[_0xd716('0x77')](_['keys'](_0x2df9c7),['createdAt',_0xd716('0x79'),_0xd716('0x7a'),_0xd716('0x7b')]);_0xe50e9f[_0xd716('0x5f')]={'mapKey':_0xd716('0x7c')};if(_0xe50e9f[_0xd716('0x73')][_0xd716('0x43')]){switch(_0xe50e9f[_0xd716('0x73')][_0xd716('0x43')]){case _0xd716('0x7d'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x7f')];_0xe50e9f[_0xd716('0x5f')]['body']=_0x4a3d49[_0xd716('0x5f')]['Body'];_0xe50e9f[_0xd716('0x5f')][_0xd716('0x80')]=_0x4a3d49[_0xd716('0x5f')]['MessageSid'];break;case _0xd716('0x81'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]='+'+_0x4a3d49[_0xd716('0x5f')]['sender'];_0xe50e9f[_0xd716('0x5f')]['body']=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x82')];break;case _0xd716('0x83'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49['body']['from'];_0xe50e9f['body'][_0xd716('0x5f')]=_0x4a3d49['body'][_0xd716('0x28')];break;case'clicksend':_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49[_0xd716('0x5f')]['from'];_0xe50e9f['body'][_0xd716('0x5f')]=_0x4a3d49['body'][_0xd716('0x5f')];_0xe50e9f[_0xd716('0x5f')]['messageId']=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x84')];break;case _0xd716('0x85'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49['body'][_0xd716('0x7f')];_0xe50e9f[_0xd716('0x5f')][_0xd716('0x5f')]=_0x4a3d49[_0xd716('0x5f')]['Text'];_0xe50e9f[_0xd716('0x5f')]['messageId']=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x86')];break;case _0xd716('0x87'):_0xe50e9f[_0xd716('0x5f')]['from']='+'+_0x4a3d49[_0xd716('0x5f')][_0xd716('0x88')][0x0][_0xd716('0x7e')];_0xe50e9f['body']['body']=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x88')][0x0][_0xd716('0x82')];_0xe50e9f['body'][_0xd716('0x80')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x88')][0x0][_0xd716('0x80')];break;case _0xd716('0x89'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49[_0xd716('0x5f')]['originatingAddress'];_0xe50e9f['body'][_0xd716('0x5f')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x8a')][_0xd716('0x28')];break;case _0xd716('0x8b'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x8c')];_0xe50e9f[_0xd716('0x5f')][_0xd716('0x5f')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x82')];_0xe50e9f['body'][_0xd716('0x80')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x8d')];break;case _0xd716('0x8e'):_0xe50e9f[_0xd716('0x5f')][_0xd716('0x80')]=_0x4a3d49[_0xd716('0x5f')][0x0][_0xd716('0x28')]['id'];_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')]=_0x4a3d49[_0xd716('0x5f')][0x0][_0xd716('0x28')][_0xd716('0x7e')];_0xe50e9f[_0xd716('0x5f')]['body']=_0x4a3d49[_0xd716('0x5f')][0x0][_0xd716('0x28')][_0xd716('0x82')];break;case _0xd716('0x8f'):_0xe50e9f[_0xd716('0x5f')]['from']=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x7e')];_0xe50e9f[_0xd716('0x5f')][_0xd716('0x5f')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x28')];_0xe50e9f[_0xd716('0x5f')][_0xd716('0x80')]=_0x4a3d49[_0xd716('0x5f')][_0xd716('0x90')];break;}}if(_0xe50e9f[_0xd716('0x5f')]['id']){delete _0xe50e9f['body']['id'];}if(_[_0xd716('0x91')](_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')])){throw new db['Sequelize'][(_0xd716('0x75'))]('from\x20is\x20mandatory');}if(_[_0xd716('0x91')](_0xe50e9f[_0xd716('0x5f')][_0xd716('0x5f')])||_0xe50e9f[_0xd716('0x5f')][_0xd716('0x5f')]===''){throw new db[(_0xd716('0x92'))][(_0xd716('0x75'))](_0xd716('0x93'));}if(_[_0xd716('0x91')](_0xe50e9f[_0xd716('0x5f')][_0xd716('0x94')])){throw new db[(_0xd716('0x92'))]['ValidationError'](_0xd716('0x95')+_0x35918a);}if(!_[_0xd716('0x96')](_0x35918a,_0xe50e9f[_0xd716('0x5f')][_0xd716('0x94')])){throw new db[(_0xd716('0x92'))][(_0xd716('0x75'))](_0xd716('0x97')+_0x35918a);}_0x4cdcff[_0xe50e9f[_0xd716('0x5f')]['mapKey']]=_0xe50e9f['body'][_0xd716('0x7e')];return db['CmList'][_0xd716('0x61')]({'where':{'id':_0xe50e9f[_0xd716('0x73')][_0xd716('0x7b')]},'include':[{'model':db[_0xd716('0x74')],'as':_0xd716('0x98'),'where':_0x4cdcff,'limit':0x1,'order':[[_0xd716('0x79'),_0xd716('0x99')]]}]});})[_0xd716('0x20')](handleEntityNotFound(_0x12eb28,null))[_0xd716('0x20')](function(_0x1b84fa){if(_0x1b84fa){_0xe50e9f[_0xd716('0x9a')]=_[_0xd716('0x9b')](_0x1b84fa,['Contacts']);if(_0x1b84fa[_0xd716('0x98')][_0xd716('0x4a')]){return _0x1b84fa[_0xd716('0x98')][0x0];}var _0x422f9f=_[_0xd716('0x9c')](_0xe50e9f[_0xd716('0x5f')],{'firstName':_0xe50e9f[_0xd716('0x5f')]['from'],'ListId':_0x1b84fa['id']});_0x422f9f[_0xe50e9f[_0xd716('0x5f')][_0xd716('0x94')]]=_0xe50e9f['body'][_0xd716('0x7e')];return db[_0xd716('0x74')][_0xd716('0x5e')](_0x422f9f,{'fields':_0x43f3d6,'raw':!![]});}})[_0xd716('0x20')](handleEntityNotFound(_0x12eb28,null))['then'](function(_0xc61893){if(_0xc61893){_0xe50e9f[_0xd716('0x9d')]=_0xc61893;var _0x3f5d41={'ContactId':_0xc61893['id'],'phone':_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')],'SmsAccountId':_0x4a3d49[_0xd716('0x5c')]['id']};var _0x416cd5={'ContactId':_0xc61893['id'],'SmsAccountId':_0x4a3d49['params']['id'],'closed':![]};return db['SmsInteraction'][_0xd716('0x61')]({'where':_0x416cd5})[_0xd716('0x20')](function(_0x3657b1){if(_0x3657b1){return[_0x3657b1,![]];}return db[_0xd716('0x9e')][_0xd716('0x5e')](_0x3f5d41)[_0xd716('0x20')](function(_0x130d4e){return[_0x130d4e,!![]];});});}})['spread'](function(_0x3f78e6,_0x54e79e){_0xe50e9f[_0xd716('0x9f')]=_0x3f78e6['get']({'plain':!![]});_0xe50e9f['interaction'][_0xd716('0xa0')]=![];if(_0x54e79e){if(_0xe50e9f[_0xd716('0x73')]['autoclose']){_0xe50e9f[_0xd716('0xa1')][_0xd716('0xa2')]({'id':0x0,'priority':_0xe50e9f['applications']['length']+0x1,'app':_0xd716('0xa3'),'appdata':_0xd716('0xa4'),'interval':_0xd716('0xa5')});}_0xe50e9f['interaction'][_0xd716('0xa0')]=!![];}return db['SmsMessage']['create']({'phone':_0xe50e9f[_0xd716('0x5f')][_0xd716('0x7e')],'messageId':_0xe50e9f['body']['messageId'],'body':_0xe50e9f[_0xd716('0x5f')][_0xd716('0x5f')],'SmsAccountId':_0x4a3d49['params']['id'],'SmsInteractionId':_0x3f78e6['id'],'direction':'in','ContactId':_0x3f78e6[_0xd716('0xa6')],'AttachmentId':_0xe50e9f[_0xd716('0x5f')]['AttachmentId']});})[_0xd716('0x20')](function(_0x296f6d){_0xe50e9f[_0xd716('0x28')]=_0x296f6d;if(_0xe50e9f['interaction'][_0xd716('0xa7')]){return db[_0xd716('0xa8')][_0xd716('0x61')]({'attributes':['id',_0xd716('0x3d')],'where':{'id':_0xe50e9f[_0xd716('0x9f')][_0xd716('0xa7')]}})[_0xd716('0x20')](function(_0x25a9bb){if(_0x25a9bb){_0xe50e9f[_0xd716('0xa1')][_0xd716('0xa9')]({'id':0x0,'priority':0x0,'app':_0xd716('0xaa'),'appdata':_0x25a9bb['name']+','+(_0xe50e9f[_0xd716('0x73')][_0xd716('0xab')]||0xa),'interval':_0xd716('0xa5')});}return respondWithRpcPromise('Start',_0xd716('0xac'),_0xe50e9f);});}return respondWithRpcPromise(_0xd716('0xad'),_0xd716('0xac'),_0xe50e9f);})[_0xd716('0x20')](function(_0x229e54){if(_0x229e54){var _0x34af7b=0xc8;var _0x325701=_0xd716('0xae');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x325701,_0x34af7b,_0xd716('0xaf'));logger[_0xd716('0x22')](_0xd716('0xb0'),_0x325701,_0x34af7b,'entity\x20found',JSON[_0xd716('0xb1')](_0x229e54));if(_0xe50e9f['account'][_0xd716('0x43')]==='twilio'){return _0x12eb28['status'](_0x34af7b)['set'](_0xd716('0xb2'),_0xd716('0xb3'))[_0xd716('0x3e')](_0xd716('0xb4'));}else{return _0x12eb28[_0xd716('0x2c')](_0x34af7b)[_0xd716('0x32')](_0x229e54);}}})[_0xd716('0x2a')](handleError(_0x12eb28,null));};exports['addApplications']=function(_0x2626b0,_0x10cfc5,_0x3dc4dd){return db[_0xd716('0x56')][_0xd716('0x66')]({'where':{'id':_0x2626b0[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x10cfc5,null))['then'](function(_0x506b43){if(_0x506b43){return db[_0xd716('0xb5')][_0xd716('0xb6')](function(_0x28063b){return db['SmsApplication'][_0xd716('0x37')]({'where':{'SmsAccountId':_0x2626b0[_0xd716('0x5c')]['id']},'transaction':_0x28063b})['then'](function(_0x1d8cdf){var _0x3aa5c9=_[_0xd716('0x52')](_0x2626b0[_0xd716('0x5f')],function(_0x4496fa){_0x4496fa['SmsAccountId']=_0x2626b0[_0xd716('0x5c')]['id'];return _0x4496fa;});return db[_0xd716('0x71')][_0xd716('0xb7')](_0x3aa5c9,{'transaction':_0x28063b});});})['then'](function(){return db[_0xd716('0x71')][_0xd716('0xb8')]({'where':{'SmsAccountId':_0x2626b0['params']['id']},'order':_0xd716('0xb9')});});}})[_0xd716('0x20')](respondWithResult(_0x10cfc5,null))[_0xd716('0x2a')](handleError(_0x10cfc5,null));};exports[_0xd716('0xba')]=function(_0x58e98e,_0x3ac4ec,_0x497276){var _0x511274={};var _0x56e82e={};var _0x1ac618;var _0x49677f;return db[_0xd716('0x56')][_0xd716('0x66')]({'where':{'id':_0x58e98e[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x3ac4ec,null))[_0xd716('0x20')](function(_0x525448){if(_0x525448){_0x1ac618=_0x525448;_0x56e82e[_0xd716('0x45')]=_[_0xd716('0x67')](db[_0xd716('0x71')][_0xd716('0x42')]);_0x56e82e[_0xd716('0x46')]=_[_0xd716('0x67')](_0x58e98e[_0xd716('0x46')]);_0x56e82e[_0xd716('0x47')]=_['intersection'](_0x56e82e[_0xd716('0x45')],_0x56e82e['query']);_0x511274[_0xd716('0x49')]=_['intersection'](_0x56e82e[_0xd716('0x45')],qs[_0xd716('0x5d')](_0x58e98e['query'][_0xd716('0x5d')]));_0x511274['attributes']=_0x511274[_0xd716('0x49')][_0xd716('0x4a')]?_0x511274['attributes']:_0x56e82e[_0xd716('0x45')];_0x511274[_0xd716('0x4d')]=qs[_0xd716('0x4e')](_0x58e98e['query']['sort']);_0x511274[_0xd716('0x4f')]=qs[_0xd716('0x47')](_[_0xd716('0x50')](_0x58e98e[_0xd716('0x46')],_0x56e82e[_0xd716('0x47')]));if(_0x58e98e['query'][_0xd716('0x54')]){_0x511274['where']=_[_0xd716('0x51')](_0x511274[_0xd716('0x4f')],{'$or':_[_0xd716('0x52')](_0x511274[_0xd716('0x49')],function(_0x352bf4){var _0x238d01={};_0x238d01[_0x352bf4]={'$like':'%'+_0x58e98e[_0xd716('0x46')][_0xd716('0x54')]+'%'};return _0x238d01;})});}_0x511274=_['merge']({},_0x511274,_0x58e98e['options']);return _0x1ac618[_0xd716('0xba')](_0x511274);}})[_0xd716('0x20')](function(_0x26e990){if(_0x26e990){_0x49677f=_0x26e990[_0xd716('0x4a')];if(!_0x58e98e[_0xd716('0x46')][_0xd716('0x4b')](_0xd716('0x4c'))){_0x511274['limit']=qs[_0xd716('0x2e')](_0x58e98e['query'][_0xd716('0x2e')]);_0x511274[_0xd716('0x30')]=qs[_0xd716('0x30')](_0x58e98e[_0xd716('0x46')]['offset']);}return _0x1ac618[_0xd716('0xba')](_0x511274);}})[_0xd716('0x20')](function(_0x2748a2){if(_0x2748a2){return _0x2748a2?{'count':_0x49677f,'rows':_0x2748a2}:null;}})[_0xd716('0x20')](respondWithResult(_0x3ac4ec,null))[_0xd716('0x2a')](handleError(_0x3ac4ec,null));};exports[_0xd716('0xbb')]=function(_0x2452e0,_0x3c64b4,_0x4757a1){var _0x2e90fe={'raw':![],'where':{}};var _0x1697f5={};var _0x1b6c78={'count':0x0,'rows':[]};return db[_0xd716('0x56')][_0xd716('0x66')]({'where':{'id':_0x2452e0[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x3c64b4,null))[_0xd716('0x20')](function(_0x259384){if(_0x259384){_0x1697f5[_0xd716('0x45')]=_[_0xd716('0x67')](db[_0xd716('0x9e')][_0xd716('0x42')]);_0x1697f5[_0xd716('0x46')]=_[_0xd716('0x67')](_0x2452e0[_0xd716('0x46')]);_0x1697f5['filters']=_[_0xd716('0x48')](_0x1697f5[_0xd716('0x45')],_0x1697f5[_0xd716('0x46')]);_0x2e90fe[_0xd716('0x49')]=_[_0xd716('0x48')](_0x1697f5['model'],qs[_0xd716('0x5d')](_0x2452e0[_0xd716('0x46')][_0xd716('0x5d')]));_0x2e90fe['attributes']=_0x2e90fe[_0xd716('0x49')][_0xd716('0x4a')]?_0x2e90fe[_0xd716('0x49')]:_0x1697f5['model'];if(!_0x2452e0[_0xd716('0x46')][_0xd716('0x4b')](_0xd716('0x4c'))){_0x2e90fe['limit']=qs[_0xd716('0x2e')](_0x2452e0['query'][_0xd716('0x2e')]);_0x2e90fe[_0xd716('0x30')]=qs[_0xd716('0x30')](_0x2452e0['query']['offset']);}_0x2e90fe[_0xd716('0x4d')]=qs[_0xd716('0x4e')](_0x2452e0[_0xd716('0x46')][_0xd716('0x4e')]);_0x2e90fe[_0xd716('0x4f')]=qs[_0xd716('0x47')](_[_0xd716('0x50')](_0x2452e0['query'],_0x1697f5[_0xd716('0x47')]));_0x2e90fe[_0xd716('0x4f')]['SmsAccountId']=_0x259384['id'];if(_0x2452e0[_0xd716('0x46')]['filter']){_0x2e90fe[_0xd716('0x4f')]=_[_0xd716('0x51')](_0x2e90fe[_0xd716('0x4f')],{'$or':_['map'](_0x2e90fe['attributes'],function(_0x539ecc){var _0x1008a4={};_0x1008a4[_0x539ecc]={'$like':'%'+_0x2452e0[_0xd716('0x46')][_0xd716('0x54')]+'%'};return _0x1008a4;})});}_0x2e90fe=_[_0xd716('0x51')]({},_0x2e90fe,_0x2452e0[_0xd716('0x55')]);return db[_0xd716('0x9e')]['count']({'where':_0x2e90fe[_0xd716('0x4f')]})['then'](function(_0x16568a){_0x1b6c78['count']=_0x16568a;if(_0x2452e0['query'][_0xd716('0x57')]){_0x2e90fe['include']=[{'model':db[_0xd716('0x74')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xd716('0xbc'),'attributes':['name',_0xd716('0xbd'),_0xd716('0xbe')],'required':![]},{'model':db['Tag'],'as':_0xd716('0xbf'),'attributes':['id','name',_0xd716('0xc0')],'where':_0x2452e0['query'][_0xd716('0xc1')]?{'id':_0x2452e0['query']['tag']}:undefined,'required':_0x2452e0[_0xd716('0x46')]['tag']?!![]:![]}];}return db[_0xd716('0x9e')][_0xd716('0x59')](_0x2e90fe);})['then'](function(_0x35e800){_0x1b6c78[_0xd716('0x5a')]=_0x35e800;return _0x1b6c78;});}})[_0xd716('0x20')](respondWithFilteredResult(_0x3c64b4,_0x2e90fe))[_0xd716('0x2a')](handleError(_0x3c64b4,null));};exports[_0xd716('0x3e')]=function(_0x153e3b,_0xcaf52,_0x2fc71e){var _0x24b0ce,_0x2825b4,_0x1eb209;if(_['isNil'](_0x153e3b['body'][_0xd716('0x5f')])||_0x153e3b['body'][_0xd716('0x5f')]===''){throw new db[(_0xd716('0x92'))][(_0xd716('0x75'))](_0xd716('0x93'));}if(_[_0xd716('0x91')](_0x153e3b[_0xd716('0x5f')]['to'])){throw new db[(_0xd716('0x92'))][(_0xd716('0x75'))](_0xd716('0xc2'));}_0x24b0ce=_0x153e3b[_0xd716('0x5f')]['to'];return db[_0xd716('0x56')][_0xd716('0x61')]({'where':{'id':_0x153e3b[_0xd716('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0xd716('0xc3'),'include':[{'model':db[_0xd716('0x74')],'as':_0xd716('0x98'),'where':{'mobile':_0x24b0ce},'limit':0x1,'order':[[_0xd716('0x79'),_0xd716('0x99')]]}]}]})[_0xd716('0x20')](handleEntityNotFound(_0xcaf52,null))['then'](function(_0x352ee6){if(_0x352ee6&&_0x352ee6[_0xd716('0xc3')]){_0x2825b4=_0x352ee6['get']({'plain':!![]});if(_0x2825b4[_0xd716('0xc3')]&&_0x2825b4[_0xd716('0xc3')][_0xd716('0x98')][_0xd716('0x4a')]){return _0x2825b4[_0xd716('0xc3')][_0xd716('0x98')][0x0];}return db['CmContact'][_0xd716('0x5e')](_[_0xd716('0x9c')](_0x153e3b['body'],{'firstName':_0x24b0ce,'mobile':_0x24b0ce,'phone':_0x24b0ce,'ListId':_0x2825b4[_0xd716('0x7b')]}));}})['then'](handleEntityNotFound(_0xcaf52,null))[_0xd716('0x20')](function(_0x1167e2){if(_0x1167e2){_0x1eb209=_0x1167e2;return db[_0xd716('0x9e')]['find']({'where':{'ContactId':_0x1eb209['id'],'closed':![],'SmsAccountId':_0x2825b4['id']}})['then'](function(_0x1af549){if(_0x1af549){return[_0x1af549,![]];}return db[_0xd716('0x9e')][_0xd716('0x5e')]({'UserId':_0x153e3b[_0xd716('0xc4')]['id'],'ContactId':_0x1eb209['id'],'SmsAccountId':_0x2825b4['id'],'phone':_0x24b0ce,'firstMsgDirection':'out','Messages':[_[_0xd716('0x51')](_0x153e3b[_0xd716('0x5f')],{'read':![],'body':_0x153e3b[_0xd716('0x5f')][_0xd716('0x5f')],'phone':_0x24b0ce,'SmsAccountId':_0x2825b4['id'],'UserId':_0x153e3b[_0xd716('0xc4')]['id'],'ContactId':_0x1eb209['id']})]},{'include':[{'model':db[_0xd716('0xc5')],'as':_0xd716('0xc6')}]})[_0xd716('0x20')](function(_0x41474c){return[_0x41474c,!![]];});});}})['spread'](function(_0x14e10e,_0x5d6430){if(_0x5d6430){return _0x14e10e;}return db[_0xd716('0xc5')][_0xd716('0x5e')](_[_0xd716('0x51')](_0x153e3b[_0xd716('0x5f')],{'read':![],'body':_0x153e3b[_0xd716('0x5f')]['body'],'phone':_0x24b0ce,'SmsAccountId':_0x2825b4['id'],'SmsInteractionId':_0x14e10e['id'],'UserId':_0x153e3b[_0xd716('0xc4')]['id'],'ContactId':_0x1eb209['id']}))[_0xd716('0x20')](function(_0x531148){_0x14e10e[_0xd716('0xc7')][_0xd716('0xc6')]=[];_0x14e10e[_0xd716('0xc7')][_0xd716('0xc6')][_0xd716('0xa2')](_0x531148[_0xd716('0xc7')]);return _0x14e10e;});})[_0xd716('0x20')](respondWithResult(_0xcaf52,null))['catch'](handleError(_0xcaf52,null));};exports[_0xd716('0x2c')]=function(_0xc3cfca,_0x58f4a3,_0x45bd81){if(_0xc3cfca['body']['id']){delete _0xc3cfca[_0xd716('0x5f')]['id'];}var _0x2ad098,_0x4c99c4,_0x655960;return db['SmsAccount']['find']({'where':{'id':_0xc3cfca[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x58f4a3,null))[_0xd716('0x20')](function(_0xdc684f){if(_0xdc684f){_0x655960=_0xdc684f;logger[_0xd716('0x22')](_0xd716('0x23'),_0xd716('0x2c'),_0xd716('0xc8'),_0xdc684f[_0xd716('0x43')],util[_0xd716('0xc9')](_0xc3cfca[_0xd716('0x5f')],{'showHidden':![],'depth':null}));switch(_0xdc684f['type']){case _0xd716('0x81'):if(_0xc3cfca[_0xd716('0x5f')][_0xd716('0xca')]&&_0xc3cfca['body'][_0xd716('0x2c')]){_0x4c99c4=_0xc3cfca[_0xd716('0x5f')][_0xd716('0x2c')];return db[_0xd716('0xc5')]['find']({'where':{'messageId':_0xc3cfca[_0xd716('0x5f')][_0xd716('0xca')]}});}break;case _0xd716('0x83'):if(_0xc3cfca[_0xd716('0x5f')][_0xd716('0xcb')]&&_0xc3cfca[_0xd716('0x5f')][_0xd716('0xcc')]){_0x4c99c4=_0xc3cfca['body'][_0xd716('0xcc')];return db['SmsMessage'][_0xd716('0x61')]({'where':{'messageId':_0xc3cfca[_0xd716('0x5f')]['requestid']}});}break;case _0xd716('0xcd'):if(_0xc3cfca['body']['message_id']&&_0xc3cfca[_0xd716('0x5f')][_0xd716('0xce')]){_0x4c99c4=_0xc3cfca[_0xd716('0x5f')]['status_code'];return db[_0xd716('0xc5')][_0xd716('0x61')]({'where':{'messageId':_0xc3cfca[_0xd716('0x5f')][_0xd716('0x84')]}});}break;case _0xd716('0x87'):var _0x5b2be3=_0xc3cfca[_0xd716('0x5f')][_0xd716('0x88')][0x0];if(_0x5b2be3['messageId']&&_0x5b2be3[_0xd716('0x2c')][_0xd716('0xcf')]===_0xd716('0xd0')){_0x4c99c4=_0x5b2be3['status']['groupName'];return db[_0xd716('0xc5')][_0xd716('0x61')]({'where':{'messageId':_0x5b2be3['messageId']}});}break;case _0xd716('0x8b'):if(_0xc3cfca[_0xd716('0x5f')][_0xd716('0x80')]&&_0xc3cfca[_0xd716('0x5f')][_0xd716('0x2c')]){_0x4c99c4=_0xc3cfca[_0xd716('0x5f')][_0xd716('0x2c')];return db[_0xd716('0xc5')][_0xd716('0x61')]({'where':{'messageId':_0xc3cfca[_0xd716('0x5f')]['messageId']}});}break;case _0xd716('0x8e'):if(_0xc3cfca[_0xd716('0x5f')][0x0][_0xd716('0x28')]['id']){_0x4c99c4=_0xc3cfca[_0xd716('0x5f')][0x0][_0xd716('0x43')];return db[_0xd716('0xc5')][_0xd716('0x61')]({'where':{'messageId':_0xc3cfca['body'][0x0][_0xd716('0x28')]['id']}});}break;case _0xd716('0x8f'):if(_0xc3cfca['body']['redif']&&_0xc3cfca[_0xd716('0x5f')][_0xd716('0x2c')]){_0x4c99c4=_0xc3cfca['body'][_0xd716('0x2c')];return db[_0xd716('0xc5')][_0xd716('0x61')]({'where':{'messageId':_0xc3cfca['body'][_0xd716('0xd1')]}});}break;}}})[_0xd716('0x20')](handleEntityNotFound(_0x58f4a3,null))[_0xd716('0x20')](function(_0x3eedf3){if(_0x3eedf3){_0x2ad098=_0x3eedf3;switch(_0x655960[_0xd716('0x43')]){case _0xd716('0x81'):if(_0x4c99c4===_0xd716('0xd0')){return _0x2ad098[_0xd716('0x36')]({'read':!![]});}else{logger[_0xd716('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd716('0x2c'),_0xd716('0x81'),util[_0xd716('0xc9')](_0xc3cfca[_0xd716('0x5f')],{'showHidden':![],'depth':null}));}break;case _0xd716('0x83'):if(_0x4c99c4==='1'){return _0x2ad098[_0xd716('0x36')]({'read':!![]});}else{logger['error'](_0xd716('0x23'),_0xd716('0x2c'),_0xd716('0x81'),util[_0xd716('0xc9')](_0xc3cfca['body'],{'showHidden':![],'depth':null}));}break;case _0xd716('0xcd'):if(!_0xc3cfca[_0xd716('0x5f')][_0xd716('0xd2')]&&_0x4c99c4>=0xc8&&_0x4c99c4<=0xce){return _0x2ad098[_0xd716('0x36')]({'read':!![]});}else{logger[_0xd716('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd716('0x2c'),'clicksend',util[_0xd716('0xc9')](_0xc3cfca[_0xd716('0x5f')],{'showHidden':![],'depth':null}));}break;case _0xd716('0x87'):var _0x3daaa7=_0xc3cfca['body'][_0xd716('0x88')][0x0];if(_0x3daaa7[_0xd716('0x2c')][_0xd716('0xcf')]===_0xd716('0xd0')){return _0x2ad098[_0xd716('0x36')]({'read':!![]});}else{logger[_0xd716('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd716('0x2c'),_0xd716('0x87'),util[_0xd716('0xc9')](_0xc3cfca['body'],{'showHidden':![],'depth':null}));}break;case _0xd716('0x8b'):if(_0x4c99c4==_0xd716('0xd3')||_0x4c99c4==_0xd716('0xd4')){return _0x2ad098[_0xd716('0x36')]({'read':!![]});}else{logger[_0xd716('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd716('0x2c'),_0xd716('0x8b'),util['inspect'](_0xc3cfca['body'],{'showHidden':![],'depth':null}));}break;case _0xd716('0x8e'):if(_0x4c99c4==_0xd716('0xd5')){return _0x2ad098['update']({'read':!![]});}else{logger[_0xd716('0x26')](_0xd716('0x23'),_0xd716('0x2c'),_0xd716('0x8e'),util['inspect'](_0xc3cfca[_0xd716('0x5f')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x4c99c4===_0xd716('0xd6')||_0x4c99c4===_0xd716('0xd7')){return _0x2ad098[_0xd716('0x36')]({'read':!![]});}else{logger[_0xd716('0x26')](_0xd716('0x23'),'status','intelepeer',util[_0xd716('0xc9')](_0xc3cfca['body'],{'showHidden':![],'depth':null}));}break;}return _0x2ad098;}})[_0xd716('0x20')](respondWithResult(_0x58f4a3,null))[_0xd716('0x2a')](handleError(_0x58f4a3,null));};exports['statusGet']=function(_0x19071f,_0x19f943,_0xe9e2e8){var _0x6c499,_0x131201,_0x1837cd;return db['SmsAccount']['find']({'where':{'id':_0x19071f[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x19f943,null))[_0xd716('0x20')](function(_0x1616d1){if(_0x1616d1){_0x1837cd=_0x1616d1;logger[_0xd716('0x22')](_0xd716('0x23'),_0xd716('0x2c'),'received\x20delivery\x20report\x20from',_0x1616d1[_0xd716('0x43')],util[_0xd716('0xc9')](_0x19071f[_0xd716('0x46')],{'showHidden':![],'depth':null}));switch(_0x1616d1[_0xd716('0x43')]){case _0xd716('0x89'):if(_0x19071f['query'][_0xd716('0xd8')]&&_0x19071f[_0xd716('0x46')][_0xd716('0xd9')]){_0x131201=_0x19071f[_0xd716('0x46')][_0xd716('0xd9')];return db['SmsMessage'][_0xd716('0x61')]({'where':{'messageId':_0x19071f[_0xd716('0x46')][_0xd716('0xd8')]}});}break;}}})['then'](handleEntityNotFound(_0x19f943,null))[_0xd716('0x20')](function(_0x43ecec){if(_0x43ecec){_0x6c499=_0x43ecec;switch(_0x1837cd[_0xd716('0x43')]){case _0xd716('0x89'):if(_0x131201==='2'||_0x131201==='6'){return _0x6c499[_0xd716('0x36')]({'read':!![]});}else{logger[_0xd716('0x26')](_0xd716('0x23'),_0xd716('0x2c'),'csc',util['inspect'](_0x19071f['query'],{'showHidden':![],'depth':null}));};break;}return _0x6c499;}})[_0xd716('0x20')](respondWithResult(_0x19f943,null))['catch'](handleError(_0x19f943,null));};exports[_0xd716('0xda')]=function(_0x997422,_0x139e7a,_0x5c6303){return db[_0xd716('0x56')][_0xd716('0x61')]({'where':{'id':_0x997422[_0xd716('0x5c')]['id']}})['then'](handleEntityNotFound(_0x139e7a,null))[_0xd716('0x20')](function(_0x15431e){if(_0x15431e){return _0x15431e[_0xd716('0xda')](_0x997422[_0xd716('0x5f')]['ids'],_[_0xd716('0x9b')](_0x997422['body'],[_0xd716('0x69'),'id'])||{})[_0xd716('0xdb')](function(_0x2b097c){for(var _0x183d96=0x0;_0x183d96<_0x997422['body'][_0xd716('0x69')][_0xd716('0x4a')];_0x183d96+=0x1){socket[_0xd716('0xdc')]('userSmsAccount:save',{'UserId':Number(_0x997422[_0xd716('0x5f')][_0xd716('0x69')][_0x183d96]),'SmsAccountId':Number(_0x997422[_0xd716('0x5c')]['id'])});}return _0x2b097c;});}})[_0xd716('0x20')](respondWithResult(_0x139e7a,null))[_0xd716('0x2a')](handleError(_0x139e7a,null));};exports[_0xd716('0xdd')]=function(_0x124c48,_0x18c6d4,_0x469b38){return db['SmsAccount'][_0xd716('0x61')]({'where':{'id':_0x124c48[_0xd716('0x5c')]['id']}})['then'](handleEntityNotFound(_0x18c6d4,null))[_0xd716('0x20')](function(_0x2cf7b0){if(_0x2cf7b0){return _0x2cf7b0[_0xd716('0xdd')](_0x124c48[_0xd716('0x46')][_0xd716('0x69')])[_0xd716('0x20')](function(){if(_['isArray'](_0x124c48[_0xd716('0x46')]['ids'])){for(var _0x446f7e=0x0;_0x446f7e<_0x124c48['query'][_0xd716('0x69')]['length'];_0x446f7e+=0x1){socket[_0xd716('0xdc')]('userSmsAccount:remove',{'UserId':Number(_0x124c48[_0xd716('0x46')][_0xd716('0x69')][_0x446f7e]),'SmsAccountId':Number(_0x124c48[_0xd716('0x5c')]['id'])});}}else{socket['emit'](_0xd716('0xde'),{'UserId':Number(_0x124c48[_0xd716('0x46')]['ids']),'SmsAccountId':Number(_0x124c48[_0xd716('0x5c')]['id'])});}});}})['then'](respondWithStatusCode(_0x18c6d4,null))['catch'](handleError(_0x18c6d4,null));};exports[_0xd716('0xdf')]=function(_0xa31a22,_0x3cd103,_0x1afe1d){var _0x593db7={};var _0x570a28={};var _0x51e80d;var _0xecd993;return db[_0xd716('0x56')]['findOne']({'where':{'id':_0xa31a22[_0xd716('0x5c')]['id']}})[_0xd716('0x20')](handleEntityNotFound(_0x3cd103,null))[_0xd716('0x20')](function(_0x33f23c){if(_0x33f23c){_0x51e80d=_0x33f23c;_0x570a28[_0xd716('0x45')]=_[_0xd716('0x67')](db[_0xd716('0xa8')][_0xd716('0x42')]);_0x570a28['query']=_[_0xd716('0x67')](_0xa31a22['query']);_0x570a28[_0xd716('0x47')]=_[_0xd716('0x48')](_0x570a28[_0xd716('0x45')],_0x570a28[_0xd716('0x46')]);_0x593db7['attributes']=_[_0xd716('0x48')](_0x570a28[_0xd716('0x45')],qs[_0xd716('0x5d')](_0xa31a22[_0xd716('0x46')][_0xd716('0x5d')]));_0x593db7['attributes']=_0x593db7['attributes'][_0xd716('0x4a')]?_0x593db7[_0xd716('0x49')]:_0x570a28['model'];_0x593db7[_0xd716('0x4d')]=qs['sort'](_0xa31a22['query'][_0xd716('0x4e')]);_0x593db7[_0xd716('0x4f')]=qs[_0xd716('0x47')](_['pick'](_0xa31a22[_0xd716('0x46')],_0x570a28[_0xd716('0x47')]));if(_0xa31a22[_0xd716('0x46')][_0xd716('0x54')]){_0x593db7['where']=_[_0xd716('0x51')](_0x593db7[_0xd716('0x4f')],{'$or':_[_0xd716('0x52')](_0x593db7[_0xd716('0x49')],function(_0x321208){var _0x1a1d21={};_0x1a1d21[_0x321208]={'$like':'%'+_0xa31a22['query']['filter']+'%'};return _0x1a1d21;})});}_0x593db7=_['merge']({},_0x593db7,_0xa31a22[_0xd716('0x55')]);return _0x51e80d[_0xd716('0xdf')](_0x593db7);}})[_0xd716('0x20')](function(_0x2a9000){if(_0x2a9000){_0xecd993=_0x2a9000[_0xd716('0x4a')];if(!_0xa31a22[_0xd716('0x46')][_0xd716('0x4b')]('nolimit')){_0x593db7['limit']=qs['limit'](_0xa31a22['query']['limit']);_0x593db7[_0xd716('0x30')]=qs['offset'](_0xa31a22[_0xd716('0x46')][_0xd716('0x30')]);}return _0x51e80d[_0xd716('0xdf')](_0x593db7);}})[_0xd716('0x20')](function(_0x38a6ed){if(_0x38a6ed){return _0x38a6ed?{'count':_0xecd993,'rows':_0x38a6ed}:null;}})[_0xd716('0x20')](respondWithResult(_0x3cd103,null))['catch'](handleError(_0x3cd103,null));};
\ No newline at end of file
index b4cc4f0..5900b41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21f=['setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3b7f43,_0x35f9ef){var _0x5f28dd=function(_0x3e81c7){while(--_0x3e81c7){_0x3b7f43['push'](_0x3b7f43['shift']());}};_0x5f28dd(++_0x35f9ef);}(_0xb21f,0x1c6));var _0xfb21=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0xb21f[_0x1762b4];return _0x29beda;};'use strict';var EventEmitter=require(_0xfb21('0x0'));var SmsAccount=require('../../mysqldb')['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xfb21('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xfb21('0x2')};function emitEvent(_0x20c68a){return function(_0x55e225,_0x1f6eb8,_0x29a0e9){SmsAccountEvents[_0xfb21('0x3')](_0x20c68a+':'+_0x55e225['id'],_0x55e225);SmsAccountEvents[_0xfb21('0x3')](_0x20c68a,_0x55e225);_0x29a0e9(null);};}for(var e in events){if(events[_0xfb21('0x4')](e)){var event=events[e];SmsAccount[_0xfb21('0x5')](e,emitEvent(event));}}module[_0xfb21('0x6')]=SmsAccountEvents;
\ No newline at end of file
+var _0x9374=['save','update','remove','hasOwnProperty','exports','events','SmsAccount','setMaxListeners'];(function(_0x14d03f,_0x43608c){var _0x1ce0dd=function(_0x318b16){while(--_0x318b16){_0x14d03f['push'](_0x14d03f['shift']());}};_0x1ce0dd(++_0x43608c);}(_0x9374,0x1b5));var _0x4937=function(_0x533ffd,_0x547e7b){_0x533ffd=_0x533ffd-0x0;var _0x1069f5=_0x9374[_0x533ffd];return _0x1069f5;};'use strict';var EventEmitter=require(_0x4937('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x4937('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x4937('0x2')](0x0);var events={'afterCreate':_0x4937('0x3'),'afterUpdate':_0x4937('0x4'),'afterDestroy':_0x4937('0x5')};function emitEvent(_0x19eafa){return function(_0x510031,_0x51b249,_0x45875e){SmsAccountEvents['emit'](_0x19eafa+':'+_0x510031['id'],_0x510031);SmsAccountEvents['emit'](_0x19eafa,_0x510031);_0x45875e(null);};}for(var e in events){if(events[_0x4937('0x6')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x4937('0x7')]=SmsAccountEvents;
\ No newline at end of file
index 0ce021a..9c39c42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6704=['./smsAccount.attributes','exports','define','sms_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x6704,0x1d8));var _0x4670=function(_0x4c0ca4,_0x32ab9c){_0x4c0ca4=_0x4c0ca4-0x0;var _0x154cd2=_0x6704[_0x4c0ca4];return _0x154cd2;};'use strict';var _=require(_0x4670('0x0'));var util=require(_0x4670('0x1'));var logger=require('../../config/logger')(_0x4670('0x2'));var moment=require(_0x4670('0x3'));var BPromise=require(_0x4670('0x4'));var rp=require(_0x4670('0x5'));var fs=require('fs');var path=require(_0x4670('0x6'));var rimraf=require(_0x4670('0x7'));var config=require(_0x4670('0x8'));var attributes=require(_0x4670('0x9'));module[_0x4670('0xa')]=function(_0x4b5ea7,_0x465af4){return _0x4b5ea7[_0x4670('0xb')]('SmsAccount',attributes,{'tableName':_0x4670('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f99=['request-promise','path','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','../../config/logger','api','bluebird'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x8f99,0x8b));var _0x98f9=function(_0x1b866b,_0x53f2b9){_0x1b866b=_0x1b866b-0x0;var _0x4cf349=_0x8f99[_0x1b866b];return _0x4cf349;};'use strict';var _=require(_0x98f9('0x0'));var util=require(_0x98f9('0x1'));var logger=require(_0x98f9('0x2'))(_0x98f9('0x3'));var moment=require('moment');var BPromise=require(_0x98f9('0x4'));var rp=require(_0x98f9('0x5'));var fs=require('fs');var path=require(_0x98f9('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x98f9('0x7'));module[_0x98f9('0x8')]=function(_0x16e816,_0x4cb42a){return _0x16e816[_0x98f9('0x9')](_0x98f9('0xa'),attributes,{'tableName':_0x98f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04990c7..0758e04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92df=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','SmsAccount','find','options','where','attributes','map','include','model','ShowSmsAccount'];(function(_0x1ca5bf,_0x3eb983){var _0x37cb08=function(_0x3234ad){while(--_0x3234ad){_0x1ca5bf['push'](_0x1ca5bf['shift']());}};_0x37cb08(++_0x3eb983);}(_0x92df,0x69));var _0xf92d=function(_0x5ce50b,_0x30a57e){_0x5ce50b=_0x5ce50b-0x0;var _0x479717=_0x92df[_0x5ce50b];return _0x479717;};'use strict';var _=require(_0xf92d('0x0'));var util=require('util');var moment=require(_0xf92d('0x1'));var BPromise=require(_0xf92d('0x2'));var rs=require(_0xf92d('0x3'));var fs=require('fs');var Redis=require(_0xf92d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf92d('0x5'));var logger=require(_0xf92d('0x6'))('rpc');var config=require(_0xf92d('0x7'));var jayson=require(_0xf92d('0x8'));var client=jayson[_0xf92d('0x9')][_0xf92d('0xa')]({'port':0x232a});config[_0xf92d('0xb')]=_['defaults'](config['redis'],{'host':_0xf92d('0xc'),'port':0x18eb});var socket=require(_0xf92d('0xd'))(new Redis(config[_0xf92d('0xb')]));require('./smsAccount.socket')[_0xf92d('0xe')](socket);function respondWithRpcPromise(_0x5ccb37,_0x46daef,_0xd6f30a){return new BPromise(function(_0x2de923,_0x41d49d){return client[_0xf92d('0xf')](_0x5ccb37,_0xd6f30a)[_0xf92d('0x10')](function(_0x3ae861){logger[_0xf92d('0x11')](_0xf92d('0x12'),_0x46daef,_0xf92d('0x13'));logger[_0xf92d('0x14')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x46daef,_0xf92d('0x13'),JSON[_0xf92d('0x15')](_0x3ae861));if(_0x3ae861['error']){if(_0x3ae861[_0xf92d('0x16')][_0xf92d('0x17')]===0x1f4){logger[_0xf92d('0x16')](_0xf92d('0x12'),_0x46daef,_0x3ae861[_0xf92d('0x16')][_0xf92d('0x18')]);return _0x41d49d(_0x3ae861['error']['message']);}logger[_0xf92d('0x16')](_0xf92d('0x12'),_0x46daef,_0x3ae861[_0xf92d('0x16')][_0xf92d('0x18')]);return _0x2de923(_0x3ae861['error'][_0xf92d('0x18')]);}else{logger[_0xf92d('0x11')](_0xf92d('0x12'),_0x46daef,_0xf92d('0x13'));_0x2de923(_0x3ae861[_0xf92d('0x19')][_0xf92d('0x18')]);}})['catch'](function(_0x5707f0){logger[_0xf92d('0x16')]('SmsAccount,\x20%s,\x20%s',_0x46daef,_0x5707f0);_0x41d49d(_0x5707f0);});});}exports['ShowSmsAccount']=function(_0x3dccde){var _0x447a61=this;return new Promise(function(_0xc82e22,_0x447dbf){return db[_0xf92d('0x1a')][_0xf92d('0x1b')]({'raw':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde['options']['raw']===undefined?!![]:![]:!![],'where':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde[_0xf92d('0x1c')][_0xf92d('0x1d')]||null:null,'attributes':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde[_0xf92d('0x1c')][_0xf92d('0x1e')]||null:null,'include':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde['options']['include']?_[_0xf92d('0x1f')](_0x3dccde[_0xf92d('0x1c')][_0xf92d('0x20')],function(_0x2e2e68){return{'model':db[_0x2e2e68[_0xf92d('0x21')]],'as':_0x2e2e68['as'],'attributes':_0x2e2e68[_0xf92d('0x1e')],'include':_0x2e2e68[_0xf92d('0x20')]?_[_0xf92d('0x1f')](_0x2e2e68[_0xf92d('0x20')],function(_0x92d7fd){return{'model':db[_0x92d7fd[_0xf92d('0x21')]],'as':_0x92d7fd['as'],'attributes':_0x92d7fd[_0xf92d('0x1e')],'include':_0x92d7fd['include']?_[_0xf92d('0x1f')](_0x92d7fd['include'],function(_0x38336b){return{'model':db[_0x38336b['model']],'as':_0x38336b['as'],'attributes':_0x38336b[_0xf92d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf92d('0x10')](function(_0x288c0b){logger['info'](_0xf92d('0x22'),_0x3dccde);logger[_0xf92d('0x14')](_0xf92d('0x22'),_0x3dccde,JSON[_0xf92d('0x15')](_0x288c0b));_0xc82e22(_0x288c0b);})['catch'](function(_0x8ddc08){logger[_0xf92d('0x16')](_0xf92d('0x22'),_0x8ddc08[_0xf92d('0x18')],_0x3dccde);_0x447dbf(_0x447a61[_0xf92d('0x16')](0x1f4,_0x8ddc08['message']));});});};
\ No newline at end of file
+var _0x6f51=['debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','then','stringify','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x26329e,_0x528981){var _0x545d32=function(_0x275be7){while(--_0x275be7){_0x26329e['push'](_0x26329e['shift']());}};_0x545d32(++_0x528981);}(_0x6f51,0x124));var _0x16f5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6f51[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x16f5('0x0'));var util=require(_0x16f5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x16f5('0x2'));var fs=require('fs');var Redis=require(_0x16f5('0x3'));var db=require(_0x16f5('0x4'))['db'];var utils=require(_0x16f5('0x5'));var logger=require('../../config/logger')(_0x16f5('0x6'));var config=require(_0x16f5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x16f5('0x8')][_0x16f5('0x9')]({'port':0x232a});config[_0x16f5('0xa')]=_[_0x16f5('0xb')](config[_0x16f5('0xa')],{'host':_0x16f5('0xc'),'port':0x18eb});var socket=require(_0x16f5('0xd'))(new Redis(config[_0x16f5('0xa')]));require(_0x16f5('0xe'))[_0x16f5('0xf')](socket);function respondWithRpcPromise(_0x4781fb,_0x374ac0,_0x60882e){return new BPromise(function(_0x2643ab,_0x395986){return client[_0x16f5('0x10')](_0x4781fb,_0x60882e)['then'](function(_0x3b5821){logger[_0x16f5('0x11')](_0x16f5('0x12'),_0x374ac0,_0x16f5('0x13'));logger[_0x16f5('0x14')](_0x16f5('0x15'),_0x374ac0,_0x16f5('0x13'),JSON['stringify'](_0x3b5821));if(_0x3b5821[_0x16f5('0x16')]){if(_0x3b5821['error'][_0x16f5('0x17')]===0x1f4){logger[_0x16f5('0x16')](_0x16f5('0x12'),_0x374ac0,_0x3b5821[_0x16f5('0x16')][_0x16f5('0x18')]);return _0x395986(_0x3b5821[_0x16f5('0x16')]['message']);}logger[_0x16f5('0x16')](_0x16f5('0x12'),_0x374ac0,_0x3b5821[_0x16f5('0x16')][_0x16f5('0x18')]);return _0x2643ab(_0x3b5821[_0x16f5('0x16')]['message']);}else{logger[_0x16f5('0x11')](_0x16f5('0x12'),_0x374ac0,'request\x20sent');_0x2643ab(_0x3b5821[_0x16f5('0x19')][_0x16f5('0x18')]);}})['catch'](function(_0x151b02){logger[_0x16f5('0x16')](_0x16f5('0x12'),_0x374ac0,_0x151b02);_0x395986(_0x151b02);});});}exports[_0x16f5('0x1a')]=function(_0x58cb5b){var _0x182d8c=this;return new Promise(function(_0x2be15b,_0x27b38c){return db[_0x16f5('0x1b')][_0x16f5('0x1c')]({'raw':_0x58cb5b[_0x16f5('0x1d')]?_0x58cb5b[_0x16f5('0x1d')][_0x16f5('0x1e')]===undefined?!![]:![]:!![],'where':_0x58cb5b[_0x16f5('0x1d')]?_0x58cb5b['options'][_0x16f5('0x1f')]||null:null,'attributes':_0x58cb5b[_0x16f5('0x1d')]?_0x58cb5b[_0x16f5('0x1d')][_0x16f5('0x20')]||null:null,'include':_0x58cb5b[_0x16f5('0x1d')]?_0x58cb5b[_0x16f5('0x1d')][_0x16f5('0x21')]?_['map'](_0x58cb5b[_0x16f5('0x1d')][_0x16f5('0x21')],function(_0xdbda69){return{'model':db[_0xdbda69['model']],'as':_0xdbda69['as'],'attributes':_0xdbda69[_0x16f5('0x20')],'include':_0xdbda69['include']?_[_0x16f5('0x22')](_0xdbda69[_0x16f5('0x21')],function(_0x119ec5){return{'model':db[_0x119ec5[_0x16f5('0x23')]],'as':_0x119ec5['as'],'attributes':_0x119ec5[_0x16f5('0x20')],'include':_0x119ec5['include']?_['map'](_0x119ec5[_0x16f5('0x21')],function(_0x1c0383){return{'model':db[_0x1c0383['model']],'as':_0x1c0383['as'],'attributes':_0x1c0383[_0x16f5('0x20')]};}):[]};}):[]};}):[]:[]})[_0x16f5('0x24')](function(_0xd51876){logger[_0x16f5('0x11')](_0x16f5('0x1a'),_0x58cb5b);logger['debug']('ShowSmsAccount',_0x58cb5b,JSON[_0x16f5('0x25')](_0xd51876));_0x2be15b(_0xd51876);})[_0x16f5('0x26')](function(_0x51e4b4){logger['error'](_0x16f5('0x1a'),_0x51e4b4[_0x16f5('0x18')],_0x58cb5b);_0x27b38c(_0x182d8c[_0x16f5('0x16')](0x1f4,_0x51e4b4[_0x16f5('0x18')]));});});};
\ No newline at end of file
index 7b4e606..ad852a2 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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 aa91115..871b7db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x1d1b38,_0x56fb20){var _0x3980ae=function(_0x21be84){while(--_0x21be84){_0x1d1b38['push'](_0x1d1b38['shift']());}};_0x3980ae(++_0x56fb20);}(_0x008c,0x188));var _0xc008=function(_0x4b505a,_0x1bffc6){_0x4b505a=_0x4b505a-0x0;var _0x4a09f7=_0x008c[_0x4b505a];return _0x4a09f7;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
+var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x16da8f,_0x4ddb80){var _0xd5dca8=function(_0x3b7cb6){while(--_0x3b7cb6){_0x16da8f['push'](_0x16da8f['shift']());}};_0xd5dca8(++_0x4ddb80);}(_0x7217,0x19e));var _0x7721=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x7217[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
index b862fff..d28a3d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x630a=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x3e7974,_0x5ec453){var _0x30bf9f=function(_0x283d29){while(--_0x283d29){_0x3e7974['push'](_0x3e7974['shift']());}};_0x30bf9f(++_0x5ec453);}(_0x630a,0x68));var _0xa630=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0x630a[_0x200aa5];return _0x458200;};'use strict';var Sequelize=require(_0xa630('0x0'));module[_0xa630('0x1')]={'priority':{'type':Sequelize[_0xa630('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa630('0x3')],'allowNull':![],'defaultValue':_0xa630('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xa630('0x5')}};
\ No newline at end of file
+var _0x51b6=['INTEGER','noop','STRING','sequelize','exports'];(function(_0x491ea7,_0x566981){var _0x5e938f=function(_0x2c2654){while(--_0x2c2654){_0x491ea7['push'](_0x491ea7['shift']());}};_0x5e938f(++_0x566981);}(_0x51b6,0x8a));var _0x651b=function(_0x4fd986,_0x438c95){_0x4fd986=_0x4fd986-0x0;var _0xdae2ad=_0x51b6[_0x4fd986];return _0xdae2ad;};'use strict';var Sequelize=require(_0x651b('0x0'));module[_0x651b('0x1')]={'priority':{'type':Sequelize[_0x651b('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x651b('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x651b('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 0f59e00..fe8f96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9a=['query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','type','VIRTUAL','options','include','findAll','rows','show','params','keys','rawAttributes','includeAll','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','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/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','SmsApplication','fieldName','key','model'];(function(_0x371e03,_0x60750e){var _0x37789c=function(_0xb9bf6f){while(--_0xb9bf6f){_0x371e03['push'](_0x371e03['shift']());}};_0x37789c(++_0x60750e);}(_0x1f9a,0x1a5));var _0xa1f9=function(_0x2d29b3,_0x278b62){_0x2d29b3=_0x2d29b3-0x0;var _0x2cda12=_0x1f9a[_0x2d29b3];return _0x2cda12;};'use strict';var emlformat=require(_0xa1f9('0x0'));var rimraf=require(_0xa1f9('0x1'));var zipdir=require(_0xa1f9('0x2'));var jsonpatch=require(_0xa1f9('0x3'));var rp=require(_0xa1f9('0x4'));var moment=require('moment');var BPromise=require(_0xa1f9('0x5'));var Mustache=require(_0xa1f9('0x6'));var util=require(_0xa1f9('0x7'));var path=require(_0xa1f9('0x8'));var sox=require(_0xa1f9('0x9'));var csv=require('to-csv');var ejs=require(_0xa1f9('0xa'));var fs=require('fs');var fs_extra=require(_0xa1f9('0xb'));var _=require(_0xa1f9('0xc'));var squel=require(_0xa1f9('0xd'));var crypto=require(_0xa1f9('0xe'));var jsforce=require(_0xa1f9('0xf'));var deskjs=require(_0xa1f9('0x10'));var toCsv=require(_0xa1f9('0x11'));var querystring=require(_0xa1f9('0x12'));var Papa=require(_0xa1f9('0x13'));var Redis=require(_0xa1f9('0x14'));var authService=require(_0xa1f9('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xa1f9('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa1f9('0x17'))(_0xa1f9('0x18'));var utils=require('../../config/utils');var config=require(_0xa1f9('0x19'));var licenseUtil=require(_0xa1f9('0x1a'));var db=require(_0xa1f9('0x1b'))['db'];function respondWithStatusCode(_0x60de9c,_0x24773a){_0x24773a=_0x24773a||0xcc;return function(_0x1bdacd){if(_0x1bdacd){return _0x60de9c[_0xa1f9('0x1c')](_0x24773a);}return _0x60de9c['status'](_0x24773a)[_0xa1f9('0x1d')]();};}function respondWithResult(_0x3ab640,_0x564adf){_0x564adf=_0x564adf||0xc8;return function(_0x5babc4){if(_0x5babc4){return _0x3ab640[_0xa1f9('0x1e')](_0x564adf)[_0xa1f9('0x1f')](_0x5babc4);}};}function respondWithFilteredResult(_0x25ea0a,_0x3dcd20){return function(_0x298bf0){if(_0x298bf0){var _0x4db91f=typeof _0x3dcd20[_0xa1f9('0x20')]===_0xa1f9('0x21')&&typeof _0x3dcd20[_0xa1f9('0x22')]==='undefined';var _0x1c5434=_0x298bf0['count'];var _0x4af188=_0x4db91f?0x0:_0x3dcd20[_0xa1f9('0x20')];var _0x4150e8=_0x4db91f?_0x298bf0[_0xa1f9('0x23')]:_0x3dcd20[_0xa1f9('0x20')]+_0x3dcd20[_0xa1f9('0x22')];var _0x52ebfc;if(_0x4150e8>=_0x1c5434){_0x4150e8=_0x1c5434;_0x52ebfc=0xc8;}else{_0x52ebfc=0xce;}_0x25ea0a['status'](_0x52ebfc);return _0x25ea0a[_0xa1f9('0x24')](_0xa1f9('0x25'),_0x4af188+'-'+_0x4150e8+'/'+_0x1c5434)['json'](_0x298bf0);}return null;};}function patchUpdates(_0x4e2fab){return function(_0x22ea7c){try{jsonpatch[_0xa1f9('0x26')](_0x22ea7c,_0x4e2fab,!![]);}catch(_0x2dbdf7){return BPromise['reject'](_0x2dbdf7);}return _0x22ea7c[_0xa1f9('0x27')]();};}function saveUpdates(_0x5e0b8b,_0x25b1d6){return function(_0x32d567){if(_0x32d567){return _0x32d567[_0xa1f9('0x28')](_0x5e0b8b)[_0xa1f9('0x29')](function(_0x211135){return _0x211135;});}return null;};}function removeEntity(_0x4b20b2,_0xddabe0){return function(_0x55f38c){if(_0x55f38c){return _0x55f38c[_0xa1f9('0x2a')]()[_0xa1f9('0x29')](function(){_0x4b20b2[_0xa1f9('0x1e')](0xcc)[_0xa1f9('0x1d')]();});}};}function handleEntityNotFound(_0x511494,_0x11f642){return function(_0x46f1dc){if(!_0x46f1dc){_0x511494[_0xa1f9('0x1c')](0x194);}return _0x46f1dc;};}function handleError(_0x1ece22,_0x4ae710){_0x4ae710=_0x4ae710||0x1f4;return function(_0x3bb9eb){logger[_0xa1f9('0x2b')](_0x3bb9eb[_0xa1f9('0x2c')]);if(_0x3bb9eb[_0xa1f9('0x2d')]){delete _0x3bb9eb['name'];}_0x1ece22['status'](_0x4ae710)[_0xa1f9('0x2e')](_0x3bb9eb);};}exports[_0xa1f9('0x2f')]=function(_0x4a1edf,_0x4ce5ac){var _0x17adf={},_0x44d52d={},_0x42a15b={'count':0x0,'rows':[]};var _0x32ad6b=_[_0xa1f9('0x30')](db[_0xa1f9('0x31')]['rawAttributes'],function(_0x5f118d){return{'name':_0x5f118d[_0xa1f9('0x32')],'type':_0x5f118d['type'][_0xa1f9('0x33')]};});_0x44d52d[_0xa1f9('0x34')]=_[_0xa1f9('0x30')](_0x32ad6b,_0xa1f9('0x2d'));_0x44d52d[_0xa1f9('0x35')]=_['keys'](_0x4a1edf[_0xa1f9('0x35')]);_0x44d52d[_0xa1f9('0x36')]=_[_0xa1f9('0x37')](_0x44d52d[_0xa1f9('0x34')],_0x44d52d[_0xa1f9('0x35')]);_0x17adf[_0xa1f9('0x38')]=_[_0xa1f9('0x37')](_0x44d52d[_0xa1f9('0x34')],qs[_0xa1f9('0x39')](_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x39')]));_0x17adf['attributes']=_0x17adf[_0xa1f9('0x38')][_0xa1f9('0x3a')]?_0x17adf[_0xa1f9('0x38')]:_0x44d52d['model'];if(!_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x3b')]('nolimit')){_0x17adf[_0xa1f9('0x22')]=qs[_0xa1f9('0x22')](_0x4a1edf['query'][_0xa1f9('0x22')]);_0x17adf[_0xa1f9('0x20')]=qs[_0xa1f9('0x20')](_0x4a1edf['query']['offset']);}_0x17adf[_0xa1f9('0x3c')]=qs[_0xa1f9('0x3d')](_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x3d')]);_0x17adf[_0xa1f9('0x3e')]=qs[_0xa1f9('0x36')](_['pick'](_0x4a1edf[_0xa1f9('0x35')],_0x44d52d[_0xa1f9('0x36')]),_0x32ad6b);if(_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x3f')]){_0x17adf[_0xa1f9('0x3e')]=_['merge'](_0x17adf['where'],{'$or':_[_0xa1f9('0x30')](_0x32ad6b,function(_0x5acca5){if(_0x5acca5[_0xa1f9('0x40')]!==_0xa1f9('0x41')){var _0x5ac720={};_0x5ac720[_0x5acca5[_0xa1f9('0x2d')]]={'$like':'%'+_0x4a1edf['query'][_0xa1f9('0x3f')]+'%'};return _0x5ac720;}})});}_0x17adf=_['merge']({},_0x17adf,_0x4a1edf[_0xa1f9('0x42')]);var _0x1897c7={'where':_0x17adf[_0xa1f9('0x3e')]};return db['SmsApplication'][_0xa1f9('0x23')](_0x1897c7)['then'](function(_0x157168){_0x42a15b[_0xa1f9('0x23')]=_0x157168;if(_0x4a1edf[_0xa1f9('0x35')]['includeAll']){_0x17adf[_0xa1f9('0x43')]=[{'all':!![]}];}return db[_0xa1f9('0x31')][_0xa1f9('0x44')](_0x17adf);})[_0xa1f9('0x29')](function(_0xa73ec5){_0x42a15b[_0xa1f9('0x45')]=_0xa73ec5;return _0x42a15b;})[_0xa1f9('0x29')](respondWithFilteredResult(_0x4ce5ac,_0x17adf))['catch'](handleError(_0x4ce5ac,null));};exports[_0xa1f9('0x46')]=function(_0xd5419e,_0x44374d){var _0x19b109={'raw':!![],'where':{'id':_0xd5419e[_0xa1f9('0x47')]['id']}},_0x40bfcf={};_0x40bfcf['model']=_[_0xa1f9('0x48')](db[_0xa1f9('0x31')][_0xa1f9('0x49')]);_0x40bfcf[_0xa1f9('0x35')]=_[_0xa1f9('0x48')](_0xd5419e[_0xa1f9('0x35')]);_0x40bfcf[_0xa1f9('0x36')]=_[_0xa1f9('0x37')](_0x40bfcf[_0xa1f9('0x34')],_0x40bfcf[_0xa1f9('0x35')]);_0x19b109[_0xa1f9('0x38')]=_[_0xa1f9('0x37')](_0x40bfcf[_0xa1f9('0x34')],qs[_0xa1f9('0x39')](_0xd5419e['query'][_0xa1f9('0x39')]));_0x19b109['attributes']=_0x19b109[_0xa1f9('0x38')][_0xa1f9('0x3a')]?_0x19b109[_0xa1f9('0x38')]:_0x40bfcf[_0xa1f9('0x34')];if(_0xd5419e[_0xa1f9('0x35')][_0xa1f9('0x4a')]){_0x19b109[_0xa1f9('0x43')]=[{'all':!![]}];}_0x19b109=_['merge']({},_0x19b109,_0xd5419e[_0xa1f9('0x42')]);return db[_0xa1f9('0x31')][_0xa1f9('0x4b')](_0x19b109)['then'](handleEntityNotFound(_0x44374d,null))['then'](respondWithResult(_0x44374d,null))['catch'](handleError(_0x44374d,null));};exports[_0xa1f9('0x4c')]=function(_0x1b746d,_0x1da70d){return db[_0xa1f9('0x31')][_0xa1f9('0x4c')](_0x1b746d[_0xa1f9('0x4d')],{})[_0xa1f9('0x29')](respondWithResult(_0x1da70d,0xc9))['catch'](handleError(_0x1da70d,null));};exports['update']=function(_0x571ad2,_0x2dc44b){if(_0x571ad2['body']['id']){delete _0x571ad2[_0xa1f9('0x4d')]['id'];}return db[_0xa1f9('0x31')]['find']({'where':{'id':_0x571ad2[_0xa1f9('0x47')]['id']}})[_0xa1f9('0x29')](handleEntityNotFound(_0x2dc44b,null))[_0xa1f9('0x29')](saveUpdates(_0x571ad2[_0xa1f9('0x4d')],null))[_0xa1f9('0x29')](respondWithResult(_0x2dc44b,null))[_0xa1f9('0x4e')](handleError(_0x2dc44b,null));};exports[_0xa1f9('0x2a')]=function(_0x2d3dd1,_0x58b7da){return db['SmsApplication'][_0xa1f9('0x4b')]({'where':{'id':_0x2d3dd1['params']['id']}})[_0xa1f9('0x29')](handleEntityNotFound(_0x58b7da,null))[_0xa1f9('0x29')](removeEntity(_0x58b7da,null))[_0xa1f9('0x4e')](handleError(_0x58b7da,null));};
\ No newline at end of file
+var _0xb8e0=['map','SmsApplication','rawAttributes','fieldName','type','key','filters','model','fields','query','attributes','length','hasOwnProperty','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','intersection','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','destroy','then','error','stack','name','send','index'];(function(_0x4e2e7f,_0x3a50a6){var _0x191a32=function(_0x4700ec){while(--_0x4700ec){_0x4e2e7f['push'](_0x4e2e7f['shift']());}};_0x191a32(++_0x3a50a6);}(_0xb8e0,0x13d));var _0x0b8e=function(_0x764874,_0x3ed544){_0x764874=_0x764874-0x0;var _0x29f9d5=_0xb8e0[_0x764874];return _0x29f9d5;};'use strict';var emlformat=require(_0x0b8e('0x0'));var rimraf=require(_0x0b8e('0x1'));var zipdir=require(_0x0b8e('0x2'));var jsonpatch=require(_0x0b8e('0x3'));var rp=require('request-promise');var moment=require(_0x0b8e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0b8e('0x5'));var util=require('util');var path=require(_0x0b8e('0x6'));var sox=require(_0x0b8e('0x7'));var csv=require(_0x0b8e('0x8'));var ejs=require(_0x0b8e('0x9'));var fs=require('fs');var fs_extra=require(_0x0b8e('0xa'));var _=require(_0x0b8e('0xb'));var squel=require('squel');var crypto=require(_0x0b8e('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0b8e('0x8'));var querystring=require(_0x0b8e('0xd'));var Papa=require(_0x0b8e('0xe'));var Redis=require(_0x0b8e('0xf'));var authService=require(_0x0b8e('0x10'));var qs=require(_0x0b8e('0x11'));var as=require(_0x0b8e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0b8e('0x13'))('api');var utils=require(_0x0b8e('0x14'));var config=require(_0x0b8e('0x15'));var licenseUtil=require(_0x0b8e('0x16'));var db=require(_0x0b8e('0x17'))['db'];function respondWithStatusCode(_0x4df3f2,_0x12bf34){_0x12bf34=_0x12bf34||0xcc;return function(_0x1ead66){if(_0x1ead66){return _0x4df3f2[_0x0b8e('0x18')](_0x12bf34);}return _0x4df3f2['status'](_0x12bf34)[_0x0b8e('0x19')]();};}function respondWithResult(_0x30d0a7,_0x529069){_0x529069=_0x529069||0xc8;return function(_0xa63c99){if(_0xa63c99){return _0x30d0a7[_0x0b8e('0x1a')](_0x529069)['json'](_0xa63c99);}};}function respondWithFilteredResult(_0x213003,_0x4f7638){return function(_0x3a7f93){if(_0x3a7f93){var _0x50e0e0=typeof _0x4f7638[_0x0b8e('0x1b')]===_0x0b8e('0x1c')&&typeof _0x4f7638[_0x0b8e('0x1d')]===_0x0b8e('0x1c');var _0x1a4ce7=_0x3a7f93[_0x0b8e('0x1e')];var _0x35eb96=_0x50e0e0?0x0:_0x4f7638[_0x0b8e('0x1b')];var _0x599da0=_0x50e0e0?_0x3a7f93[_0x0b8e('0x1e')]:_0x4f7638[_0x0b8e('0x1b')]+_0x4f7638[_0x0b8e('0x1d')];var _0xefb684;if(_0x599da0>=_0x1a4ce7){_0x599da0=_0x1a4ce7;_0xefb684=0xc8;}else{_0xefb684=0xce;}_0x213003[_0x0b8e('0x1a')](_0xefb684);return _0x213003['set'](_0x0b8e('0x1f'),_0x35eb96+'-'+_0x599da0+'/'+_0x1a4ce7)[_0x0b8e('0x20')](_0x3a7f93);}return null;};}function patchUpdates(_0xfda9fd){return function(_0xee79d2){try{jsonpatch['apply'](_0xee79d2,_0xfda9fd,!![]);}catch(_0x2c296e){return BPromise[_0x0b8e('0x21')](_0x2c296e);}return _0xee79d2[_0x0b8e('0x22')]();};}function saveUpdates(_0xbf6693,_0x3a68d0){return function(_0x2d624f){if(_0x2d624f){return _0x2d624f[_0x0b8e('0x23')](_0xbf6693)['then'](function(_0x2d9b72){return _0x2d9b72;});}return null;};}function removeEntity(_0x34d272,_0x242536){return function(_0x453957){if(_0x453957){return _0x453957[_0x0b8e('0x24')]()[_0x0b8e('0x25')](function(){_0x34d272['status'](0xcc)[_0x0b8e('0x19')]();});}};}function handleEntityNotFound(_0x40f03d,_0x598ae3){return function(_0x3fc44e){if(!_0x3fc44e){_0x40f03d['sendStatus'](0x194);}return _0x3fc44e;};}function handleError(_0x52c167,_0x473b38){_0x473b38=_0x473b38||0x1f4;return function(_0xffec66){logger[_0x0b8e('0x26')](_0xffec66[_0x0b8e('0x27')]);if(_0xffec66['name']){delete _0xffec66[_0x0b8e('0x28')];}_0x52c167[_0x0b8e('0x1a')](_0x473b38)[_0x0b8e('0x29')](_0xffec66);};}exports[_0x0b8e('0x2a')]=function(_0x40264e,_0x13303e){var _0x3d1225={},_0x7c1ba4={},_0x520f89={'count':0x0,'rows':[]};var _0x49e687=_[_0x0b8e('0x2b')](db[_0x0b8e('0x2c')][_0x0b8e('0x2d')],function(_0x24c2d6){return{'name':_0x24c2d6[_0x0b8e('0x2e')],'type':_0x24c2d6[_0x0b8e('0x2f')][_0x0b8e('0x30')]};});_0x7c1ba4['model']=_[_0x0b8e('0x2b')](_0x49e687,_0x0b8e('0x28'));_0x7c1ba4['query']=_['keys'](_0x40264e['query']);_0x7c1ba4[_0x0b8e('0x31')]=_['intersection'](_0x7c1ba4[_0x0b8e('0x32')],_0x7c1ba4['query']);_0x3d1225['attributes']=_['intersection'](_0x7c1ba4[_0x0b8e('0x32')],qs[_0x0b8e('0x33')](_0x40264e[_0x0b8e('0x34')][_0x0b8e('0x33')]));_0x3d1225[_0x0b8e('0x35')]=_0x3d1225[_0x0b8e('0x35')][_0x0b8e('0x36')]?_0x3d1225['attributes']:_0x7c1ba4[_0x0b8e('0x32')];if(!_0x40264e[_0x0b8e('0x34')][_0x0b8e('0x37')]('nolimit')){_0x3d1225['limit']=qs[_0x0b8e('0x1d')](_0x40264e[_0x0b8e('0x34')]['limit']);_0x3d1225[_0x0b8e('0x1b')]=qs[_0x0b8e('0x1b')](_0x40264e[_0x0b8e('0x34')][_0x0b8e('0x1b')]);}_0x3d1225['order']=qs[_0x0b8e('0x38')](_0x40264e['query'][_0x0b8e('0x38')]);_0x3d1225[_0x0b8e('0x39')]=qs['filters'](_['pick'](_0x40264e[_0x0b8e('0x34')],_0x7c1ba4[_0x0b8e('0x31')]),_0x49e687);if(_0x40264e[_0x0b8e('0x34')]['filter']){_0x3d1225[_0x0b8e('0x39')]=_[_0x0b8e('0x3a')](_0x3d1225[_0x0b8e('0x39')],{'$or':_[_0x0b8e('0x2b')](_0x49e687,function(_0x4ca912){if(_0x4ca912[_0x0b8e('0x2f')]!==_0x0b8e('0x3b')){var _0x3e0d38={};_0x3e0d38[_0x4ca912[_0x0b8e('0x28')]]={'$like':'%'+_0x40264e[_0x0b8e('0x34')]['filter']+'%'};return _0x3e0d38;}})});}_0x3d1225=_[_0x0b8e('0x3a')]({},_0x3d1225,_0x40264e[_0x0b8e('0x3c')]);var _0xb80007={'where':_0x3d1225[_0x0b8e('0x39')]};return db[_0x0b8e('0x2c')][_0x0b8e('0x1e')](_0xb80007)[_0x0b8e('0x25')](function(_0x3a1de5){_0x520f89[_0x0b8e('0x1e')]=_0x3a1de5;if(_0x40264e[_0x0b8e('0x34')][_0x0b8e('0x3d')]){_0x3d1225[_0x0b8e('0x3e')]=[{'all':!![]}];}return db[_0x0b8e('0x2c')][_0x0b8e('0x3f')](_0x3d1225);})[_0x0b8e('0x25')](function(_0x272216){_0x520f89['rows']=_0x272216;return _0x520f89;})[_0x0b8e('0x25')](respondWithFilteredResult(_0x13303e,_0x3d1225))[_0x0b8e('0x40')](handleError(_0x13303e,null));};exports[_0x0b8e('0x41')]=function(_0x2946ab,_0x45c469){var _0x33672d={'raw':!![],'where':{'id':_0x2946ab[_0x0b8e('0x42')]['id']}},_0x75d37b={};_0x75d37b['model']=_[_0x0b8e('0x43')](db[_0x0b8e('0x2c')]['rawAttributes']);_0x75d37b['query']=_['keys'](_0x2946ab[_0x0b8e('0x34')]);_0x75d37b[_0x0b8e('0x31')]=_[_0x0b8e('0x44')](_0x75d37b[_0x0b8e('0x32')],_0x75d37b[_0x0b8e('0x34')]);_0x33672d[_0x0b8e('0x35')]=_[_0x0b8e('0x44')](_0x75d37b[_0x0b8e('0x32')],qs[_0x0b8e('0x33')](_0x2946ab[_0x0b8e('0x34')][_0x0b8e('0x33')]));_0x33672d[_0x0b8e('0x35')]=_0x33672d[_0x0b8e('0x35')][_0x0b8e('0x36')]?_0x33672d['attributes']:_0x75d37b['model'];if(_0x2946ab[_0x0b8e('0x34')][_0x0b8e('0x3d')]){_0x33672d[_0x0b8e('0x3e')]=[{'all':!![]}];}_0x33672d=_[_0x0b8e('0x3a')]({},_0x33672d,_0x2946ab[_0x0b8e('0x3c')]);return db[_0x0b8e('0x2c')][_0x0b8e('0x45')](_0x33672d)[_0x0b8e('0x25')](handleEntityNotFound(_0x45c469,null))[_0x0b8e('0x25')](respondWithResult(_0x45c469,null))[_0x0b8e('0x40')](handleError(_0x45c469,null));};exports['create']=function(_0x845ea,_0x54467f){return db[_0x0b8e('0x2c')][_0x0b8e('0x46')](_0x845ea[_0x0b8e('0x47')],{})[_0x0b8e('0x25')](respondWithResult(_0x54467f,0xc9))['catch'](handleError(_0x54467f,null));};exports[_0x0b8e('0x23')]=function(_0x2650d1,_0x3f4506){if(_0x2650d1['body']['id']){delete _0x2650d1[_0x0b8e('0x47')]['id'];}return db['SmsApplication'][_0x0b8e('0x45')]({'where':{'id':_0x2650d1[_0x0b8e('0x42')]['id']}})[_0x0b8e('0x25')](handleEntityNotFound(_0x3f4506,null))[_0x0b8e('0x25')](saveUpdates(_0x2650d1[_0x0b8e('0x47')],null))[_0x0b8e('0x25')](respondWithResult(_0x3f4506,null))['catch'](handleError(_0x3f4506,null));};exports[_0x0b8e('0x24')]=function(_0x242038,_0x2827e5){return db['SmsApplication'][_0x0b8e('0x45')]({'where':{'id':_0x242038[_0x0b8e('0x42')]['id']}})[_0x0b8e('0x25')](handleEntityNotFound(_0x2827e5,null))[_0x0b8e('0x25')](removeEntity(_0x2827e5,null))['catch'](handleError(_0x2827e5,null));};
\ No newline at end of file
index 3596bb5..cb3a491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x061c=['api','moment','bluebird','request-promise','path','rimraf','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x389bc2,_0x9e2254){var _0x2b47e3=function(_0x2beee4){while(--_0x2beee4){_0x389bc2['push'](_0x389bc2['shift']());}};_0x2b47e3(++_0x9e2254);}(_0x061c,0xc0));var _0xc061=function(_0x3457cf,_0x3cac8b){_0x3457cf=_0x3457cf-0x0;var _0x133f95=_0x061c[_0x3457cf];return _0x133f95;};'use strict';var _=require(_0xc061('0x0'));var util=require(_0xc061('0x1'));var logger=require(_0xc061('0x2'))(_0xc061('0x3'));var moment=require(_0xc061('0x4'));var BPromise=require(_0xc061('0x5'));var rp=require(_0xc061('0x6'));var fs=require('fs');var path=require(_0xc061('0x7'));var rimraf=require(_0xc061('0x8'));var config=require('../../config/environment');var attributes=require(_0xc061('0x9'));module['exports']=function(_0x2d679b,_0x437d17){return _0x2d679b[_0xc061('0xa')](_0xc061('0xb'),attributes,{'tableName':_0xc061('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc061('0xd'),'collate':_0xc061('0xe')});};
\ No newline at end of file
+var _0xe811=['SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./smsApplication.attributes','exports','define'];(function(_0x32a89b,_0xc3b8e2){var _0x119ba5=function(_0x44870e){while(--_0x44870e){_0x32a89b['push'](_0x32a89b['shift']());}};_0x119ba5(++_0xc3b8e2);}(_0xe811,0x1a8));var _0x1e81=function(_0x435fe2,_0x216b64){_0x435fe2=_0x435fe2-0x0;var _0x595566=_0xe811[_0x435fe2];return _0x595566;};'use strict';var _=require(_0x1e81('0x0'));var util=require(_0x1e81('0x1'));var logger=require('../../config/logger')(_0x1e81('0x2'));var moment=require(_0x1e81('0x3'));var BPromise=require('bluebird');var rp=require(_0x1e81('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1e81('0x5'));var config=require(_0x1e81('0x6'));var attributes=require(_0x1e81('0x7'));module[_0x1e81('0x8')]=function(_0x34060b,_0x331a18){return _0x34060b[_0x1e81('0x9')](_0x1e81('0xa'),attributes,{'tableName':_0x1e81('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1e81('0xc'),'collate':_0x1e81('0xd')});};
\ No newline at end of file
index 3e4f4c2..0401050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch'];(function(_0x18c35a,_0x8e0bcc){var _0x5429ee=function(_0x20ba60){while(--_0x20ba60){_0x18c35a['push'](_0x18c35a['shift']());}};_0x5429ee(++_0x8e0bcc);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2591db,_0xaec623,_0x1413d2){return new BPromise(function(_0x41fc3f,_0x34bdd0){return client[_0x2227('0xb')](_0x2591db,_0x1413d2)[_0x2227('0xc')](function(_0x496bbd){logger[_0x2227('0xd')]('SmsApplication,\x20%s,\x20%s',_0xaec623,_0x2227('0xe'));logger[_0x2227('0xf')](_0x2227('0x10'),_0xaec623,_0x2227('0xe'),JSON[_0x2227('0x11')](_0x496bbd));if(_0x496bbd['error']){if(_0x496bbd[_0x2227('0x12')][_0x2227('0x13')]===0x1f4){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x496bbd[_0x2227('0x12')][_0x2227('0x15')]);return _0x34bdd0(_0x496bbd['error']['message']);}logger['error'](_0x2227('0x14'),_0xaec623,_0x496bbd['error'][_0x2227('0x15')]);return _0x41fc3f(_0x496bbd[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0x14'),_0xaec623,_0x2227('0xe'));_0x41fc3f(_0x496bbd[_0x2227('0x16')][_0x2227('0x15')]);}})[_0x2227('0x17')](function(_0x508e92){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x508e92);_0x34bdd0(_0x508e92);});});}
\ No newline at end of file
+var _0x1e24=['../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x1e24,0x82));var _0x41e2=function(_0x2e0a85,_0x242749){_0x2e0a85=_0x2e0a85-0x0;var _0x2c49bb=_0x1e24[_0x2e0a85];return _0x2c49bb;};'use strict';var _=require(_0x41e2('0x0'));var util=require(_0x41e2('0x1'));var moment=require(_0x41e2('0x2'));var BPromise=require(_0x41e2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x41e2('0x4'));var db=require(_0x41e2('0x5'))['db'];var utils=require(_0x41e2('0x6'));var logger=require(_0x41e2('0x7'))('rpc');var config=require(_0x41e2('0x8'));var jayson=require(_0x41e2('0x9'));var client=jayson[_0x41e2('0xa')][_0x41e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x13fda6,_0x3d52b3,_0x12955b){return new BPromise(function(_0x1b6dd9,_0x470d69){return client['request'](_0x13fda6,_0x12955b)[_0x41e2('0xc')](function(_0x25dd75){logger[_0x41e2('0xd')](_0x41e2('0xe'),_0x3d52b3,_0x41e2('0xf'));logger[_0x41e2('0x10')](_0x41e2('0x11'),_0x3d52b3,_0x41e2('0xf'),JSON[_0x41e2('0x12')](_0x25dd75));if(_0x25dd75['error']){if(_0x25dd75[_0x41e2('0x13')]['code']===0x1f4){logger[_0x41e2('0x13')](_0x41e2('0xe'),_0x3d52b3,_0x25dd75[_0x41e2('0x13')]['message']);return _0x470d69(_0x25dd75[_0x41e2('0x13')]['message']);}logger[_0x41e2('0x13')]('SmsApplication,\x20%s,\x20%s',_0x3d52b3,_0x25dd75[_0x41e2('0x13')][_0x41e2('0x14')]);return _0x1b6dd9(_0x25dd75[_0x41e2('0x13')]['message']);}else{logger[_0x41e2('0xd')](_0x41e2('0xe'),_0x3d52b3,_0x41e2('0xf'));_0x1b6dd9(_0x25dd75[_0x41e2('0x15')]['message']);}})[_0x41e2('0x16')](function(_0x391c2a){logger[_0x41e2('0x13')](_0x41e2('0xe'),_0x3d52b3,_0x391c2a);_0x470d69(_0x391c2a);});});}
\ No newline at end of file
index ae726eb..c48c63d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['destroy','/:id/tags','removeTags','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','smsinteraction:addtags','addTags','put','tracked','smsinteraction:update','update','delete','sms'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb688,0xcf));var _0x8b68=function(_0x19441b,_0x5a239b){_0x19441b=_0x19441b-0x0;var _0x16bbd7=_0xb688[_0x19441b];return _0x16bbd7;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x14')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x14')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x16')]);router[_0x8b68('0x14')]('/:id/tags',auth[_0x8b68('0xc')](),interaction['tracked']('sms',_0x8b68('0x17')),controller[_0x8b68('0x18')]);router[_0x8b68('0x19')]('/:id',auth['isAuthenticated'](),interaction[_0x8b68('0x1a')]('sms',_0x8b68('0x1b')),controller[_0x8b68('0x1c')]);router[_0x8b68('0x1d')](_0x8b68('0xe'),auth['isAuthenticated'](),interaction[_0x8b68('0x1a')](_0x8b68('0x1e'),'smsinteraction:destroy'),controller[_0x8b68('0x1f')]);router[_0x8b68('0x1d')](_0x8b68('0x20'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0x7708=['removeTags','exports','multer','util','connect-timeout','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','sms','addTags','put','delete'];(function(_0x523cdf,_0x495050){var _0x3586f2=function(_0x44ee04){while(--_0x44ee04){_0x523cdf['push'](_0x523cdf['shift']());}};_0x3586f2(++_0x495050);}(_0x7708,0x188));var _0x8770=function(_0x55d58f,_0x2bea83){_0x55d58f=_0x55d58f-0x0;var _0x1ad6e6=_0x7708[_0x55d58f];return _0x1ad6e6;};'use strict';var multer=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var path=require('path');var timeout=require(_0x8770('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8770('0x3'));var config=require(_0x8770('0x4'));var controller=require('./smsInteraction.controller');router[_0x8770('0x5')]('/',auth['isAuthenticated'](),controller[_0x8770('0x6')]);router[_0x8770('0x5')](_0x8770('0x7'),auth[_0x8770('0x8')](),controller[_0x8770('0x9')]);router[_0x8770('0x5')](_0x8770('0xa'),auth['isAuthenticated'](),controller[_0x8770('0xb')]);router[_0x8770('0x5')](_0x8770('0xc'),auth['isAuthenticated'](),controller[_0x8770('0xd')]);router[_0x8770('0x5')](_0x8770('0xe'),auth[_0x8770('0x8')](),controller['download']);router[_0x8770('0xf')]('/',auth[_0x8770('0x8')](),controller[_0x8770('0x10')]);router['post'](_0x8770('0xc'),auth[_0x8770('0x8')](),controller[_0x8770('0x11')]);router[_0x8770('0xf')](_0x8770('0x12'),auth[_0x8770('0x8')](),interaction[_0x8770('0x13')](_0x8770('0x14'),'smsinteraction:addtags'),controller[_0x8770('0x15')]);router[_0x8770('0x16')]('/:id',auth[_0x8770('0x8')](),interaction['tracked'](_0x8770('0x14'),'smsinteraction:update'),controller['update']);router['delete'](_0x8770('0xa'),auth[_0x8770('0x8')](),interaction[_0x8770('0x13')](_0x8770('0x14'),'smsinteraction:destroy'),controller['destroy']);router[_0x8770('0x17')](_0x8770('0x12'),auth[_0x8770('0x8')](),controller[_0x8770('0x18')]);module[_0x8770('0x19')]=router;
\ No newline at end of file
index f31c145..0ae8a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e3b=['DATE','STRING','ENUM','moment','exports','BOOLEAN'];(function(_0x4571d9,_0x4d0089){var _0x2ddca1=function(_0x45a2b8){while(--_0x45a2b8){_0x4571d9['push'](_0x4571d9['shift']());}};_0x2ddca1(++_0x4d0089);}(_0x2e3b,0x81));var _0xb2e3=function(_0x5a26b0,_0x118133){_0x5a26b0=_0x5a26b0-0x0;var _0x22dff1=_0x2e3b[_0x5a26b0];return _0x22dff1;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xb2e3('0x0'));module[_0xb2e3('0x1')]={'closed':{'type':Sequelize[_0xb2e3('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb2e3('0x3')]},'disposition':{'type':Sequelize[_0xb2e3('0x4')]},'secondDisposition':{'type':Sequelize[_0xb2e3('0x4')]},'thirdDisposition':{'type':Sequelize[_0xb2e3('0x4')]},'note':{'type':Sequelize[_0xb2e3('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xb2e3('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xb2e3('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xb2e3('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xb2e3('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xb2e3('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5e11=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0xa1a39d,_0x3fb263){var _0xd39df8=function(_0x44f1e6){while(--_0x44f1e6){_0xa1a39d['push'](_0xa1a39d['shift']());}};_0xd39df8(++_0x3fb263);}(_0x5e11,0x1c3));var _0x15e1=function(_0x52c4e9,_0x5412d0){_0x52c4e9=_0x52c4e9-0x0;var _0x252a03=_0x5e11[_0x52c4e9];return _0x252a03;};'use strict';var Sequelize=require(_0x15e1('0x0'));var moment=require('moment');module[_0x15e1('0x1')]={'closed':{'type':Sequelize[_0x15e1('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x15e1('0x3')]},'disposition':{'type':Sequelize[_0x15e1('0x4')]},'secondDisposition':{'type':Sequelize[_0x15e1('0x4')]},'thirdDisposition':{'type':Sequelize[_0x15e1('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x15e1('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x15e1('0x5')]('in',_0x15e1('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x15e1('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x15e1('0x5')]('in',_0x15e1('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index d660d26..d6ad179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca99=['CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','isEmpty','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','Contact.firstName','c.lastName','Contact.lastName','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','show','params','include','options','create','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','nolimit','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','unix','join','server','files','root','attachments','format','transcript-%d-%s.zip','CmContact','Contact','firstName','lastName','Messages','direction','SmsAccount','Owner','get','mkdirSync','Sms','closed','closedAt','disposition','out','System','secret','renderFile','views','transcript-','.pdf','log','unlinkSync','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','split','forEach','push','catch','index','SmsInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','some','compact','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)'];(function(_0x320b8e,_0x1da3fe){var _0x55a10a=function(_0x148a56){while(--_0x148a56){_0x320b8e['push'](_0x320b8e['shift']());}};_0x55a10a(++_0x1da3fe);}(_0xca99,0x144));var _0x9ca9=function(_0x489e19,_0x2ffcb2){_0x489e19=_0x489e19-0x0;var _0x48225a=_0xca99[_0x489e19];return _0x48225a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9ca9('0x0'));var jsonpatch=require(_0x9ca9('0x1'));var rp=require(_0x9ca9('0x2'));var moment=require('moment');var BPromise=require(_0x9ca9('0x3'));var Mustache=require(_0x9ca9('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x9ca9('0x5'));var ejs=require(_0x9ca9('0x6'));var fs=require('fs');var fs_extra=require(_0x9ca9('0x7'));var _=require('lodash');var squel=require(_0x9ca9('0x8'));var crypto=require(_0x9ca9('0x9'));var jsforce=require(_0x9ca9('0xa'));var deskjs=require(_0x9ca9('0xb'));var toCsv=require(_0x9ca9('0x5'));var querystring=require(_0x9ca9('0xc'));var Papa=require(_0x9ca9('0xd'));var Redis=require(_0x9ca9('0xe'));var authService=require(_0x9ca9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x9ca9('0x10'));var pdf=require(_0x9ca9('0x11'));var hardwareService=require(_0x9ca9('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x9ca9('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9ca9('0x14'))['db'];config['redis']=_[_0x9ca9('0x15')](config[_0x9ca9('0x16')],{'host':_0x9ca9('0x17'),'port':0x18eb});var socket=require(_0x9ca9('0x18'))(new Redis(config[_0x9ca9('0x16')]));require(_0x9ca9('0x19'))[_0x9ca9('0x1a')](socket);function respondWithStatusCode(_0x499b09,_0x3a7fa9){_0x3a7fa9=_0x3a7fa9||0xcc;return function(_0x47d16d){if(_0x47d16d){return _0x499b09[_0x9ca9('0x1b')](_0x3a7fa9);}return _0x499b09[_0x9ca9('0x1c')](_0x3a7fa9)[_0x9ca9('0x1d')]();};}function respondWithResult(_0x2a35a,_0x347fdf){_0x347fdf=_0x347fdf||0xc8;return function(_0x4b8587){if(_0x4b8587){return _0x2a35a[_0x9ca9('0x1c')](_0x347fdf)[_0x9ca9('0x1e')](_0x4b8587);}};}function respondWithFilteredResult(_0x573da0,_0x2f4e2f){return function(_0x51a072){if(_0x51a072){var _0xcff97c=typeof _0x2f4e2f[_0x9ca9('0x1f')]===_0x9ca9('0x20')&&typeof _0x2f4e2f[_0x9ca9('0x21')]===_0x9ca9('0x20');var _0x1cc2d8=_0x51a072['count'];var _0x1c3e3c=_0xcff97c?0x0:_0x2f4e2f[_0x9ca9('0x1f')];var _0x4306ee=_0xcff97c?_0x51a072[_0x9ca9('0x22')]:_0x2f4e2f[_0x9ca9('0x1f')]+_0x2f4e2f['limit'];var _0x2313cf;if(_0x4306ee>=_0x1cc2d8){_0x4306ee=_0x1cc2d8;_0x2313cf=0xc8;}else{_0x2313cf=0xce;}_0x573da0[_0x9ca9('0x1c')](_0x2313cf);return _0x573da0[_0x9ca9('0x23')](_0x9ca9('0x24'),_0x1c3e3c+'-'+_0x4306ee+'/'+_0x1cc2d8)['json'](_0x51a072);}return null;};}function patchUpdates(_0x2bcd24){return function(_0xac443a){try{jsonpatch['apply'](_0xac443a,_0x2bcd24,!![]);}catch(_0x132308){return BPromise[_0x9ca9('0x25')](_0x132308);}return _0xac443a[_0x9ca9('0x26')]();};}function saveUpdates(_0x110881,_0x5c1d64){return function(_0x7200cf){if(_0x7200cf){return _0x7200cf[_0x9ca9('0x27')](_0x110881)[_0x9ca9('0x28')](function(_0x574bf2){return _0x574bf2;});}return null;};}function removeEntity(_0x1a7fe5,_0x2e1b18){return function(_0x5a8e48){if(_0x5a8e48){return _0x5a8e48[_0x9ca9('0x29')]()[_0x9ca9('0x28')](function(){_0x1a7fe5[_0x9ca9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5738ea,_0x1e2163){return function(_0x30538e){if(!_0x30538e){_0x5738ea[_0x9ca9('0x1b')](0x194);}return _0x30538e;};}function handleError(_0x39c4dc,_0x345cb2){_0x345cb2=_0x345cb2||0x1f4;return function(_0x3e18cf){logger[_0x9ca9('0x2a')](_0x3e18cf[_0x9ca9('0x2b')]);if(_0x3e18cf['name']){delete _0x3e18cf[_0x9ca9('0x2c')];}_0x39c4dc['status'](_0x345cb2)[_0x9ca9('0x2d')](_0x3e18cf);};}function getInteractionUsers(_0x3a957f,_0x9e29e){return new BPromise(function(_0xde5300,_0x31ddcf){try{if(_0x9e29e[_0x3a957f['id']]){_0x3a957f[_0x9ca9('0x2e')]=_[_0x9ca9('0x2f')](_0x9e29e[_0x3a957f['id']],function(_0x1d8cdf){return{'id':_0x1d8cdf['id'],'fullname':_0x1d8cdf[_0x9ca9('0x30')]};});}}catch(_0x1b3ef9){_0x31ddcf(_0x1b3ef9);}_0xde5300(_0x3a957f);});}function getInteractionTags(_0x29a25d,_0x8002bb){return new BPromise(function(_0x4f3ba8,_0x48346e){try{if(_0x29a25d[_0x9ca9('0x31')]){_0x29a25d['Tags']=[];_0x29a25d[_0x9ca9('0x31')][_0x9ca9('0x32')](',')[_0x9ca9('0x33')](function(_0x21a7ca){_0x29a25d['Tags'][_0x9ca9('0x34')](_0x8002bb[_0x21a7ca]);});}delete _0x29a25d[_0x9ca9('0x31')];}catch(_0x5ec558){_0x48346e(_0x5ec558);}_0x4f3ba8(_0x29a25d);});}function updateSmsInteraction(_0x295be0,_0x4f6f36,_0x236193){return new BPromise(function(_0x1a0f40,_0x4dde8c){return getInteractionUsers(_0x295be0,_0x236193)[_0x9ca9('0x28')](function(_0x480307){return getInteractionTags(_0x480307,_0x4f6f36);})['then'](function(_0x277749){_0x1a0f40(_0x277749);})[_0x9ca9('0x35')](function(_0xd784c){_0x4dde8c(_0xd784c);});});}exports[_0x9ca9('0x36')]=function(_0x5c1b26,_0x403c25){var _0x1bdd37={},_0x122d57={},_0x4b990e={'count':0x0,'rows':[]};var _0x785bf2=_[_0x9ca9('0x2f')](db[_0x9ca9('0x37')][_0x9ca9('0x38')],function(_0xc70564){return{'name':_0xc70564[_0x9ca9('0x39')],'type':_0xc70564[_0x9ca9('0x3a')]['key']};});_0x122d57[_0x9ca9('0x3b')]=_[_0x9ca9('0x2f')](_0x785bf2,_0x9ca9('0x2c'));_0x122d57[_0x9ca9('0x3c')]=_[_0x9ca9('0x3d')](_0x5c1b26['query']);_0x122d57[_0x9ca9('0x3e')]=_[_0x9ca9('0x3f')](_0x122d57[_0x9ca9('0x3b')],_0x122d57[_0x9ca9('0x3c')]);_0x1bdd37[_0x9ca9('0x40')]=_[_0x9ca9('0x3f')](_0x122d57[_0x9ca9('0x3b')],qs[_0x9ca9('0x41')](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x41')]));_0x1bdd37['attributes']=_0x1bdd37['attributes'][_0x9ca9('0x42')]?_0x1bdd37['attributes']:_0x122d57['model'];if(!_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x43')]('nolimit')){_0x1bdd37['limit']=qs['limit'](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x21')]);_0x1bdd37['offset']=qs[_0x9ca9('0x1f')](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x1f')]);}_0x1bdd37['order']=qs[_0x9ca9('0x44')](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x44')]);_0x1bdd37[_0x9ca9('0x45')]=qs[_0x9ca9('0x3e')](_[_0x9ca9('0x46')](_0x5c1b26[_0x9ca9('0x3c')],_0x122d57[_0x9ca9('0x3e')]),_0x785bf2);var _0x122d0c=[];var _0x5f193c=squel[_0x9ca9('0x47')]()[_0x9ca9('0x48')]('id')[_0x9ca9('0x48')](_0x9ca9('0x2c'))[_0x9ca9('0x48')]('color')[_0x9ca9('0x49')](_0x9ca9('0x4a'));var _0x40b2af=squel[_0x9ca9('0x47')]()[_0x9ca9('0x48')](_0x9ca9('0x4b'))[_0x9ca9('0x48')](_0x9ca9('0x4c'))[_0x9ca9('0x48')]('ui.SmsInteractionId')[_0x9ca9('0x49')](_0x9ca9('0x4d'),'ui')[_0x9ca9('0x4e')](_0x9ca9('0x4f'),'u',_0x9ca9('0x50'));var _0x568ec1=squel['select']()[_0x9ca9('0x49')](_0x9ca9('0x51'),'i')['left_join']('cm_contacts','c',_0x9ca9('0x52'))[_0x9ca9('0x4e')]('users','o',_0x9ca9('0x53'))['left_join'](_0x9ca9('0x54'),'a',_0x9ca9('0x55'))[_0x9ca9('0x4e')](_0x9ca9('0x56'),'me',_0x9ca9('0x57'))[_0x9ca9('0x4e')](_0x9ca9('0x58'),'it',_0x9ca9('0x59'))['left_join'](_0x9ca9('0x4a'),'t',_0x9ca9('0x5a'));var _0x1ce7e6=squel[_0x9ca9('0x5b')]();var _0xf5c22d=[];var _0x367bf8=squel[_0x9ca9('0x5b')]();var _0x1f4375;if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x5c')]){_0x1f4375=as['parseSearch'](_0x5c1b26['query'][_0x9ca9('0x5c')]);var _0x131ea6=_0x1f4375[_0x9ca9('0x5d')];for(var _0xe8d527=0x0;_0xe8d527<_0x1f4375[_0x9ca9('0x5e')]['length'];_0xe8d527++){var _0x12236c=_0x1f4375[_0x9ca9('0x5e')][_0xe8d527];var _0x6693ed='i';var _0x190824=_[_0x9ca9('0x5f')](_0x785bf2,[_0x9ca9('0x2c'),_0x12236c[_0x9ca9('0x48')]]);if(!_0x190824){switch(_0x12236c['field']){case _0x9ca9('0x60'):if(_0x12236c['value']==0x1){_0x568ec1[_0x9ca9('0x61')]('`'+_0x12236c['field']+'`\x20=\x200');}else{_0x568ec1[_0x9ca9('0x61')]('`'+_0x12236c['field']+_0x9ca9('0x62'));}break;case'Contact':if(_0x12236c[_0x9ca9('0x63')]===_0x9ca9('0x64')){if(_0x12236c[_0x9ca9('0x65')]['split']('\x20')[_0x9ca9('0x42')]>0x1){_0x1ce7e6[_0x131ea6](_0x9ca9('0x66'),qs[_0x9ca9('0x67')](_0x12236c[_0x9ca9('0x65')]),null);}else{var _0x2f72d4='%'+_0x12236c[_0x9ca9('0x65')]+'%';_0x1ce7e6[_0x131ea6]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2f72d4,_0x2f72d4,_0x2f72d4);}}else{_0x190824=_[_0x9ca9('0x5f')](_0x785bf2,[_0x9ca9('0x2c'),'ContactId']);_0x12236c[_0x9ca9('0x48')]=_0x9ca9('0x68');_0x20d93a=as['buildExpression'](_0x6693ed,_0x190824[_0x9ca9('0x3a')],_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a[_0x9ca9('0x69')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a['value'][_0x9ca9('0x1d')]);}break;case _0x9ca9('0x6b'):var _0x5449a4=_0x12236c[_0x9ca9('0x65')]['split'](',')[_0x9ca9('0x2f')](function(_0x41ff5c){return Number(_0x41ff5c);});_0x5449a4[_0x9ca9('0x33')](function(_0x2912ed){_0x367bf8['or'](_0x9ca9('0x6c'),'%,'+_0x2912ed+',%');});_0xf5c22d=_['union'](_0xf5c22d,_0x5449a4);break;case _0x9ca9('0x6d'):if(_0x12236c[_0x9ca9('0x63')]==='$substring'){_0x1ce7e6[_0x131ea6](_0x9ca9('0x6e'),'%'+_0x12236c[_0x9ca9('0x65')]+'%',null);}else{_0x190824=_['find'](_0x785bf2,[_0x9ca9('0x2c'),_0x9ca9('0x6f')]);_0x12236c['field']=_0x9ca9('0x6f');_0x20d93a=as[_0x9ca9('0x70')](_0x6693ed,_0x190824[_0x9ca9('0x3a')],_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a[_0x9ca9('0x69')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a['value'][_0x9ca9('0x1d')]);}break;case _0x9ca9('0x71'):_0x20d93a=as[_0x9ca9('0x70')]('me',null,_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a[_0x9ca9('0x69')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x1d')]);break;}}else{var _0x20d93a=as[_0x9ca9('0x70')](_0x6693ed,_0x190824[_0x9ca9('0x3a')],_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a['text'],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a[_0x9ca9('0x65')]['end']);}}}else{var _0x864acd=_(_0x5c1b26['query'])[_0x9ca9('0x3d')]()['map'](function(_0x150043){return _[_0x9ca9('0x72')](_0x785bf2,['name',_0x150043])?_0x150043:undefined;})[_0x9ca9('0x73')]()[_0x9ca9('0x65')]();if(!_['isEmpty'](_0x864acd)){_0x864acd[_0x9ca9('0x33')](function(_0x4d89dd){if(_0x4d89dd===_0x9ca9('0x74')){_0x568ec1[_0x9ca9('0x45')](_0x9ca9('0x75'),[][_0x9ca9('0x76')](_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd]));}else if(_0x4d89dd===_0x9ca9('0x77')){var _0x57fe4=JSON[_0x9ca9('0x78')](_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd])[_0x9ca9('0x79')];var _0xe7e0b6=JSON['parse'](_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd])['$lte'];_0x568ec1[_0x9ca9('0x45')](_0x9ca9('0x7a'),_0x57fe4,_0xe7e0b6);}else{if(_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd]===_0x9ca9('0x7b')){_0x568ec1[_0x9ca9('0x45')]('i.'+_0x4d89dd+_0x9ca9('0x7c'));}else{_0x568ec1['where']('i.'+_0x4d89dd+'\x20=\x20?',_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd]);}}});}if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7d')]){if(_0x5c1b26['query'][_0x9ca9('0x7d')]==0x1){_0x568ec1[_0x9ca9('0x61')]('`unreadMessages`\x20=\x200');}else{_0x568ec1[_0x9ca9('0x61')]('`unreadMessages`\x20>\x200');}}if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7e')]){_0xf5c22d=_['isArray'](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7e')])?_0x5c1b26[_0x9ca9('0x3c')]['tag']:new Array(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7e')]);_0xf5c22d[_0x9ca9('0x33')](function(_0x522af4){_0x367bf8['or'](_0x9ca9('0x6c'),'%,'+_0x522af4+',%');});}if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7f')]){var _0x415b19=_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7f')][_0x9ca9('0x80')]('\x5c','\x5c\x5c')[_0x9ca9('0x80')](/'/g,'\x27\x27');if(qs[_0x9ca9('0x81')](_0x415b19)){_0x1ce7e6['or']('i.id\x20LIKE\x20?',_0x415b19+'%')['or'](_0x9ca9('0x82'),_0x415b19+'%');}else{_0x1ce7e6['or'](_0x9ca9('0x83'),qs[_0x9ca9('0x67')](_0x415b19))['or'](_0x9ca9('0x84'),_0x415b19+'%');}}}_0x568ec1[_0x9ca9('0x45')](_0x1ce7e6);_0x568ec1['group'](_0x9ca9('0x85'));var _0x40e18c={'type':db[_0x9ca9('0x86')][_0x9ca9('0x87')][_0x9ca9('0x88')],'raw':!![]};var _0x5bc502=_0x568ec1[_0x9ca9('0x89')]();_0x5bc502['field']('i.id');_0x5bc502[_0x9ca9('0x48')](_0x9ca9('0x8a'),_0x9ca9('0x60'));if(_0x1bdd37[_0x9ca9('0x8b')]){_0x1bdd37[_0x9ca9('0x8b')]['forEach'](function(_0x498fd6){var _0x3690ef=_0x498fd6[0x0]===_0x9ca9('0x8c')?_0x498fd6[0x0]:'i.'+_0x498fd6[0x0];_0x568ec1[_0x9ca9('0x8b')](_0x3690ef,_0x498fd6[0x1]===_0x9ca9('0x8d')?![]:!![]);});}if(!_[_0x9ca9('0x8e')](_0xf5c22d)){_0x568ec1['having'](_0x367bf8);_0x5bc502[_0x9ca9('0x45')]('t.id\x20IN\x20?',_0xf5c22d);}BPromise[_0x9ca9('0x8f')]()[_0x9ca9('0x28')](function(){if(!_0x1f4375){if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x74')])return;_0x5bc502[_0x9ca9('0x45')](_0x9ca9('0x90'));_0x568ec1[_0x9ca9('0x45')](_0x9ca9('0x90'));return;}if(_0x5c1b26[_0x9ca9('0x91')][_0x9ca9('0x92')]!==_0x9ca9('0x93'))return;return _0x5c1b26[_0x9ca9('0x91')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})[_0x9ca9('0x28')](function(_0x2a2f0c){if(_[_0x9ca9('0x8e')](_0x2a2f0c)){_0x5bc502[_0x9ca9('0x45')](_0x9ca9('0x94'));_0x568ec1['where'](_0x9ca9('0x94'));}else{_0x5bc502[_0x9ca9('0x45')](_0x9ca9('0x75'),_[_0x9ca9('0x2f')](_0x2a2f0c,'id'));_0x568ec1['where'](_0x9ca9('0x75'),_[_0x9ca9('0x2f')](_0x2a2f0c,'id'));}});})[_0x9ca9('0x28')](function(){if(_0x5c1b26[_0x9ca9('0x91')]['role']===_0x9ca9('0x93')&&!_0x1f4375&&!_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x74')])return[];return db['sequelize'][_0x9ca9('0x3c')](_0x5bc502['toString'](),_0x40e18c);})[_0x9ca9('0x28')](function(_0x2856a3){_0x4b990e[_0x9ca9('0x22')]=_0x2856a3[_0x9ca9('0x42')];if(_0x4b990e[_0x9ca9('0x22')]===0x0)return[];return db[_0x9ca9('0x95')][_0x9ca9('0x3c')](_0x5f193c[_0x9ca9('0x96')](),_0x40e18c)[_0x9ca9('0x28')](function(_0x1d946c){_0x122d0c=_[_0x9ca9('0x97')](_0x1d946c,'id');_0x40e18c=_[_0x9ca9('0x98')](_0x40e18c,{'model':db[_0x9ca9('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x41')]){_0x1bdd37[_0x9ca9('0x40')]['forEach'](function(_0x29a5d9){_0x568ec1['field']('i.'+_0x29a5d9);});}else{_0x568ec1[_0x9ca9('0x48')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9ca9('0x60'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0x99'),_0x9ca9('0x9a'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0x9b'),_0x9ca9('0x9c'));_0x568ec1[_0x9ca9('0x48')]('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',_0x9ca9('0x8c'));_0x568ec1['field']('i.*');_0x568ec1['field']('c.firstName',_0x9ca9('0x9d'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0x9e'),_0x9ca9('0x9f'));_0x568ec1[_0x9ca9('0x48')]('c.email','Contact.email');_0x568ec1[_0x9ca9('0x48')]('c.phone',_0x9ca9('0xa0'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa1'),_0x9ca9('0xa2'));_0x568ec1['field']('c.fax',_0x9ca9('0xa3'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa4'),_0x9ca9('0xa5'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa6'),_0x9ca9('0xa7'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa8'),_0x9ca9('0x31'));}if(_0x1bdd37[_0x9ca9('0x21')])_0x568ec1[_0x9ca9('0x21')](_0x1bdd37[_0x9ca9('0x21')]);if(_0x1bdd37['offset'])_0x568ec1['offset'](_0x1bdd37['offset']);return db[_0x9ca9('0x95')][_0x9ca9('0x3c')](_0x568ec1[_0x9ca9('0x96')](),_0x40e18c);})[_0x9ca9('0x28')](function(_0x1e522a){if(_0x1e522a['length']>0x0)_0x40b2af[_0x9ca9('0x45')](_0x9ca9('0xa9'),_[_0x9ca9('0x2f')](_0x1e522a,'id'));return db[_0x9ca9('0x95')][_0x9ca9('0x3c')](_0x40b2af[_0x9ca9('0x96')](),_0x40e18c)[_0x9ca9('0x28')](function(_0x256590){var _0x27f17c=_[_0x9ca9('0xaa')](_0x256590,_0x9ca9('0xab'));var _0x5d8aae=[];_0x1e522a[_0x9ca9('0x33')](function(_0x5c9fb1){_0x5d8aae[_0x9ca9('0x34')](updateSmsInteraction(_0x5c9fb1,_0x122d0c,_0x27f17c));});return BPromise[_0x9ca9('0xac')](_0x5d8aae);});});})[_0x9ca9('0x28')](function(_0x55683d){_0x4b990e['rows']=_0x55683d;return _0x4b990e;})[_0x9ca9('0x28')](respondWithFilteredResult(_0x403c25,_0x1bdd37))[_0x9ca9('0x35')](handleError(_0x403c25,null));};exports[_0x9ca9('0xad')]=function(_0x18300c,_0x12f85b){var _0xd290a3={'raw':![],'where':{'id':_0x18300c[_0x9ca9('0xae')]['id']}},_0x49be36={};_0x49be36[_0x9ca9('0x3b')]=_['keys'](db[_0x9ca9('0x37')][_0x9ca9('0x38')]);_0x49be36[_0x9ca9('0x3c')]=_[_0x9ca9('0x3d')](_0x18300c[_0x9ca9('0x3c')]);_0x49be36[_0x9ca9('0x3e')]=_[_0x9ca9('0x3f')](_0x49be36['model'],_0x49be36['query']);_0xd290a3['attributes']=_[_0x9ca9('0x3f')](_0x49be36[_0x9ca9('0x3b')],qs[_0x9ca9('0x41')](_0x18300c['query'][_0x9ca9('0x41')]));_0xd290a3[_0x9ca9('0x40')]=_0xd290a3[_0x9ca9('0x40')][_0x9ca9('0x42')]?_0xd290a3[_0x9ca9('0x40')]:_0x49be36['model'];if(_0x18300c[_0x9ca9('0x3c')]['includeAll']){_0xd290a3[_0x9ca9('0xaf')]=[{'all':!![]}];}_0xd290a3=_[_0x9ca9('0x98')]({},_0xd290a3,_0x18300c[_0x9ca9('0xb0')]);return db[_0x9ca9('0x37')][_0x9ca9('0x5f')](_0xd290a3)[_0x9ca9('0x28')](handleEntityNotFound(_0x12f85b,null))[_0x9ca9('0x28')](respondWithResult(_0x12f85b,null))['catch'](handleError(_0x12f85b,null));};exports[_0x9ca9('0xb1')]=function(_0x21a09a,_0x4a75d6){return db[_0x9ca9('0x37')][_0x9ca9('0xb1')](_0x21a09a[_0x9ca9('0x71')],{})[_0x9ca9('0x28')](respondWithResult(_0x4a75d6,0xc9))[_0x9ca9('0x35')](handleError(_0x4a75d6,null));};exports[_0x9ca9('0x27')]=function(_0x5986e9,_0x5b8027){if(_0x5986e9['body']['id']){delete _0x5986e9[_0x9ca9('0x71')]['id'];}return db['SmsInteraction']['find']({'where':{'id':_0x5986e9[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x5b8027,null))[_0x9ca9('0x28')](saveUpdates(_0x5986e9[_0x9ca9('0x71')],null))[_0x9ca9('0x28')](respondWithResult(_0x5b8027,null))['catch'](handleError(_0x5b8027,null));};exports[_0x9ca9('0x29')]=function(_0x493a3f,_0x36bad6){return db[_0x9ca9('0x37')][_0x9ca9('0x5f')]({'where':{'id':_0x493a3f[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x36bad6,null))[_0x9ca9('0x28')](removeEntity(_0x36bad6,null))['catch'](handleError(_0x36bad6,null));};exports[_0x9ca9('0xb2')]=function(_0x542ad4,_0x2770b6){return db[_0x9ca9('0x37')][_0x9ca9('0xb2')]()['then'](respondWithResult(_0x2770b6,null))[_0x9ca9('0x35')](handleError(_0x2770b6,null));};exports[_0x9ca9('0xb3')]=function(_0x3ccb64,_0x1ca6ce,_0x2785be){return db[_0x9ca9('0xb4')][_0x9ca9('0x5f')]({'where':{'id':_0x3ccb64[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x1ca6ce,null))[_0x9ca9('0x28')](function(_0x1fc57b){if(_0x1fc57b){return _0x1fc57b[_0x9ca9('0xb3')](_0x3ccb64[_0x9ca9('0x71')][_0x9ca9('0xb5')],_[_0x9ca9('0xb6')](_0x3ccb64[_0x9ca9('0x71')],[_0x9ca9('0xb5'),'id'])||{});}})[_0x9ca9('0x28')](respondWithResult(_0x1ca6ce,null))[_0x9ca9('0x35')](handleError(_0x1ca6ce,null));};exports[_0x9ca9('0xb7')]=function(_0x4bf9ac,_0x4018d9,_0x154986){var _0x482be9={'raw':![],'where':{}};var _0x1f68d6={};var _0x4936cd={'count':0x0,'rows':[]};return db[_0x9ca9('0x37')][_0x9ca9('0xb8')]({'where':{'id':_0x4bf9ac[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x4018d9,null))['then'](function(_0x52fe4d){if(_0x52fe4d){_0x1f68d6[_0x9ca9('0x3b')]=_['keys'](db[_0x9ca9('0xb4')][_0x9ca9('0x38')]);_0x1f68d6[_0x9ca9('0x3c')]=_[_0x9ca9('0x3d')](_0x4bf9ac['query']);_0x1f68d6[_0x9ca9('0x3e')]=_['intersection'](_0x1f68d6[_0x9ca9('0x3b')],_0x1f68d6[_0x9ca9('0x3c')]);_0x482be9[_0x9ca9('0x40')]=_[_0x9ca9('0x3f')](_0x1f68d6[_0x9ca9('0x3b')],qs[_0x9ca9('0x41')](_0x4bf9ac[_0x9ca9('0x3c')]['fields']));_0x482be9[_0x9ca9('0x40')]=_0x482be9[_0x9ca9('0x40')][_0x9ca9('0x42')]?_0x482be9[_0x9ca9('0x40')]:_0x1f68d6[_0x9ca9('0x3b')];if(!_0x4bf9ac['query'][_0x9ca9('0x43')](_0x9ca9('0xb9'))){_0x482be9[_0x9ca9('0x21')]=qs[_0x9ca9('0x21')](_0x4bf9ac['query']['limit']);_0x482be9[_0x9ca9('0x1f')]=qs['offset'](_0x4bf9ac['query'][_0x9ca9('0x1f')]);}_0x482be9[_0x9ca9('0x8b')]=qs[_0x9ca9('0x44')](_0x4bf9ac['query'][_0x9ca9('0x44')]);_0x482be9[_0x9ca9('0x45')]=qs['filters'](_[_0x9ca9('0x46')](_0x4bf9ac[_0x9ca9('0x3c')],_0x1f68d6[_0x9ca9('0x3e')]));_0x482be9[_0x9ca9('0x45')]['SmsInteractionId']=_0x52fe4d['id'];if(_0x4bf9ac['query'][_0x9ca9('0x7f')]){_0x482be9[_0x9ca9('0x45')]=_['merge'](_0x482be9[_0x9ca9('0x45')],{'$or':_[_0x9ca9('0x2f')](_0x482be9[_0x9ca9('0x40')],function(_0x3b50c9){var _0x3909c0={};_0x3909c0[_0x3b50c9]={'$like':'%'+_0x4bf9ac[_0x9ca9('0x3c')][_0x9ca9('0x7f')]+'%'};return _0x3909c0;})});}if(_0x4bf9ac[_0x9ca9('0x3c')][_0x9ca9('0x79')]){var _0x4b0a02=_0x4bf9ac[_0x9ca9('0x3c')][_0x9ca9('0x79')][_0x9ca9('0x32')](',');var _0x531181={};_0x531181[_0x4b0a02[0x0]]={'$gte':moment(_0x4b0a02[0x1])['format'](_0x9ca9('0xba'))};_0x482be9['where']=_[_0x9ca9('0x98')](_0x482be9[_0x9ca9('0x45')],_0x531181);}_0x482be9=_[_0x9ca9('0x98')]({},_0x482be9,_0x4bf9ac[_0x9ca9('0xb0')]);return db[_0x9ca9('0xb4')][_0x9ca9('0x22')]({'where':_0x482be9[_0x9ca9('0x45')]})[_0x9ca9('0x28')](function(_0x7345fa){_0x4936cd['count']=_0x7345fa;if(_0x4bf9ac['query'][_0x9ca9('0xbb')]){_0x482be9[_0x9ca9('0xaf')]=[{'all':!![]}];}return db['SmsMessage'][_0x9ca9('0xbc')](_0x482be9);})[_0x9ca9('0x28')](function(_0x53bc4f){_0x4936cd[_0x9ca9('0xbd')]=_0x53bc4f;return _0x4936cd;});}})[_0x9ca9('0x28')](respondWithFilteredResult(_0x4018d9,_0x482be9))[_0x9ca9('0x35')](handleError(_0x4018d9,null));};exports['addTags']=function(_0x5c85d5,_0x597821,_0x590654){return db['SmsInteraction'][_0x9ca9('0x5f')]({'where':{'id':_0x5c85d5[_0x9ca9('0xae')]['id']}})['then'](handleEntityNotFound(_0x597821,null))[_0x9ca9('0x28')](function(_0xfcd227){if(_0xfcd227){return _0xfcd227[_0x9ca9('0xbe')](_0x5c85d5['body'][_0x9ca9('0xb5')],_[_0x9ca9('0xb6')](_0x5c85d5[_0x9ca9('0x71')],[_0x9ca9('0xb5'),'id'])||{})[_0x9ca9('0xbf')](function(){return db[_0x9ca9('0x6b')][_0x9ca9('0xbc')]({'attributes':['id',_0x9ca9('0x2c'),_0x9ca9('0xc0')],'where':{'id':_0x5c85d5[_0x9ca9('0x71')]['ids']}});})[_0x9ca9('0x28')](function(_0x523095){socket[_0x9ca9('0xc1')](_0x9ca9('0xc2'),{'id':Number(_0x5c85d5[_0x9ca9('0xae')]['id']),'tags':_0x523095||[]});return{'id':Number(_0x5c85d5[_0x9ca9('0xae')]['id']),'tags':_0x523095||[]};});}})[_0x9ca9('0x28')](respondWithResult(_0x597821,null))[_0x9ca9('0x35')](handleError(_0x597821,null));};exports[_0x9ca9('0xc3')]=function(_0x1e2ce2,_0x4616b3,_0x57a300){return db['SmsInteraction'][_0x9ca9('0x5f')]({'where':{'id':_0x1e2ce2[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x4616b3,null))[_0x9ca9('0x28')](function(_0x31e34d){if(_0x31e34d){return _0x31e34d[_0x9ca9('0xc3')](_0x1e2ce2[_0x9ca9('0x3c')][_0x9ca9('0xb5')]);}})[_0x9ca9('0x28')](respondWithStatusCode(_0x4616b3,null))[_0x9ca9('0x35')](handleError(_0x4616b3,null));};exports[_0x9ca9('0xc4')]=function(_0x25a7e3,_0x5d8098){var _0x5f452a=moment()[_0x9ca9('0xc5')]()[_0x9ca9('0x96')]();var _0x1ffc25=path[_0x9ca9('0xc6')](config['root'],_0x9ca9('0xc7'),_0x9ca9('0xc8'),'tmp');var _0x55f014=path[_0x9ca9('0xc6')](config[_0x9ca9('0xc9')],_0x9ca9('0xc7'),_0x9ca9('0xc8'),_0x9ca9('0xca'));var _0x1f8dd4=path[_0x9ca9('0xc6')](_0x1ffc25,_0x5f452a);var _0x29dbab=util[_0x9ca9('0xcb')](_0x9ca9('0xcc'),_0x25a7e3[_0x9ca9('0xae')]['id'],_0x5f452a);var _0x439456=path['join'](_0x1ffc25,_0x29dbab);var _0x252d78=[];_0x252d78[_0x9ca9('0x34')]({'model':db[_0x9ca9('0x6d')],'as':'User','attributes':['id',_0x9ca9('0x30')],'raw':!![]});_0x252d78[_0x9ca9('0x34')]({'model':db[_0x9ca9('0xcd')],'as':_0x9ca9('0xce'),'attributes':['id',_0x9ca9('0xcf'),_0x9ca9('0xd0')],'raw':!![]});var _0x35b4ff=[{'model':db['SmsMessage'],'as':_0x9ca9('0xd1'),'attributes':['id',_0x9ca9('0x71'),_0x9ca9('0x77'),_0x9ca9('0xd2'),'secret','read'],'include':_0x252d78}];_0x35b4ff[_0x9ca9('0x34')]({'model':db[_0x9ca9('0xd3')],'as':'Account','attributes':['id',_0x9ca9('0x2c')]});_0x35b4ff['push']({'model':db[_0x9ca9('0x6d')],'as':_0x9ca9('0xd4'),'attributes':['id',_0x9ca9('0x30')]});return db['SmsInteraction'][_0x9ca9('0x5f')]({'where':{'id':_0x25a7e3[_0x9ca9('0xae')]['id']},'include':_0x35b4ff})[_0x9ca9('0x28')](handleEntityNotFound(_0x5d8098,null))[_0x9ca9('0x28')](function(_0x161e76){if(_0x161e76){var _0x37dd49=_0x161e76[_0x9ca9('0xd5')]({'plain':!![]});fs[_0x9ca9('0xd6')](_0x1f8dd4);var _0x1f2883={'channel':_0x9ca9('0xd7'),'account':_0x37dd49['Account'][_0x9ca9('0x2c')],'agent':_0x37dd49[_0x9ca9('0xd4')]?_0x37dd49['Owner'][_0x9ca9('0x30')]:'N.A.','createdAt':moment(_0x37dd49[_0x9ca9('0x77')])[_0x9ca9('0xcb')](_0x9ca9('0xba'))['toString'](),'closedAt':_0x37dd49[_0x9ca9('0xd8')]?moment(_0x37dd49[_0x9ca9('0xd9')])[_0x9ca9('0xcb')](_0x9ca9('0xba'))[_0x9ca9('0x96')]():'','disposition':_0x37dd49[_0x9ca9('0xda')],'messages':_(_0x37dd49[_0x9ca9('0xd1')])[_0x9ca9('0x7f')]({'secret':![]})['map'](function(_0x2c4e66){return{'date':moment(_0x2c4e66[_0x9ca9('0x77')])[_0x9ca9('0xcb')](_0x9ca9('0xba'))[_0x9ca9('0x96')](),'sender':_0x2c4e66['direction']===_0x9ca9('0xdb')?_0x2c4e66[_0x9ca9('0x6d')]?_0x2c4e66[_0x9ca9('0x6d')][_0x9ca9('0x30')]:_0x9ca9('0xdc'):_0x2c4e66[_0x9ca9('0xce')][_0x9ca9('0xcf')]+(_0x2c4e66[_0x9ca9('0xce')][_0x9ca9('0xd0')]?'\x20'+_0x2c4e66[_0x9ca9('0xce')]['lastName']:''),'body':_0x2c4e66[_0x9ca9('0x71')],'direction':_0x2c4e66[_0x9ca9('0xd2')]===_0x9ca9('0xdb')?'A':'C','secret':_0x2c4e66[_0x9ca9('0xdd')],'read':_0x2c4e66[_0x9ca9('0x7d')]};})[_0x9ca9('0x65')]()};return ejs[_0x9ca9('0xde')](path[_0x9ca9('0xc6')](config[_0x9ca9('0xc9')],_0x9ca9('0xc7'),_0x9ca9('0xdf'),'downloadInteraction.ejs'),{'interaction':_0x1f2883})[_0x9ca9('0x28')](function(_0x377a10){var _0x160e5a=path[_0x9ca9('0xc6')](_0x1f8dd4,_0x9ca9('0xe0')+_0x37dd49['id']+'-'+_0x5f452a+_0x9ca9('0xe1'));var _0x3aa57b={'path':_0x160e5a,'channel':_0x9ca9('0xd7'),'interactionId':_0x37dd49['id']};return pdf['createPdfFromHTML'](_0x377a10,_0x3aa57b);})[_0x9ca9('0x28')](function(){return new BPromise(function(_0x3bea4a,_0x1ca694){zipdir(_0x1f8dd4,{'saveTo':_0x439456},function(_0x4f5d2f,_0xd47d97){if(_0x4f5d2f)return _0x1ca694(_0x4f5d2f);return _0x3bea4a(_0xd47d97);});})[_0x9ca9('0x28')](function(){return new BPromise(function(_0x495cf3,_0x3883de){rimraf(_0x1f8dd4,function(_0x382434){if(_0x382434)_0x3883de(_0x382434);return _0x495cf3();});});})[_0x9ca9('0x28')](function(){return _0x5d8098[_0x9ca9('0xc4')](_0x439456,_0x29dbab,function(_0x2c5176){if(_0x2c5176){console[_0x9ca9('0xe2')]('err',_0x2c5176);}else{fs[_0x9ca9('0xe3')](_0x439456);}});});});}else{return _0x5d8098[_0x9ca9('0x1b')](0xc8);}})[_0x9ca9('0x35')](handleError(_0x5d8098,null));};
\ No newline at end of file
+var _0x4a55=['Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.SmsInteractionId\x20IN\x20?','groupBy','all','show','params','rawAttributes','includeAll','include','options','create','describe','addMessage','SmsMessage','ids','omit','findOne','SmsInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','findAll','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','CmContact','lastName','createdAt','SmsAccount','Owner','get','N.A.','closed','Messages','direction','out','System','firstName','views','downloadInteraction.ejs','.pdf','Sms','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','sendStatus','status','json','undefined','limit','offset','count','apply','reject','save','update','destroy','then','end','error','stack','name','send','Users','fullname','TagIds','split','forEach','push','catch','index','map','SmsInteraction','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','select','field','color','from','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','conditions','find','unreadMessages','value','having','`\x20=\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','keys','some','compact','isEmpty','i.SmsAccountId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','clone','order','contactName','DESC','t.id\x20IN\x20?','resolve','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','Contact.fax'];(function(_0x580705,_0x13ea57){var _0x2fa254=function(_0x3d2634){while(--_0x3d2634){_0x580705['push'](_0x580705['shift']());}};_0x2fa254(++_0x13ea57);}(_0x4a55,0x124));var _0x54a5=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x4a55[_0x38537f];return _0x141e23;};'use strict';var emlformat=require(_0x54a5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x54a5('0x1'));var jsonpatch=require(_0x54a5('0x2'));var rp=require(_0x54a5('0x3'));var moment=require('moment');var BPromise=require(_0x54a5('0x4'));var Mustache=require(_0x54a5('0x5'));var util=require(_0x54a5('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x54a5('0x7'));var ejs=require(_0x54a5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x54a5('0x9'));var jsforce=require(_0x54a5('0xa'));var deskjs=require(_0x54a5('0xb'));var toCsv=require(_0x54a5('0x7'));var querystring=require(_0x54a5('0xc'));var Papa=require(_0x54a5('0xd'));var Redis=require('ioredis');var authService=require(_0x54a5('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x54a5('0xf'));var pdf=require(_0x54a5('0x10'));var hardwareService=require(_0x54a5('0x11'));var logger=require(_0x54a5('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x54a5('0x13'));var licenseUtil=require(_0x54a5('0x14'));var db=require(_0x54a5('0x15'))['db'];config[_0x54a5('0x16')]=_[_0x54a5('0x17')](config[_0x54a5('0x16')],{'host':_0x54a5('0x18'),'port':0x18eb});var socket=require(_0x54a5('0x19'))(new Redis(config['redis']));require(_0x54a5('0x1a'))['register'](socket);function respondWithStatusCode(_0x263c54,_0x32f484){_0x32f484=_0x32f484||0xcc;return function(_0x388523){if(_0x388523){return _0x263c54[_0x54a5('0x1b')](_0x32f484);}return _0x263c54['status'](_0x32f484)['end']();};}function respondWithResult(_0x46f0d2,_0x1c72ae){_0x1c72ae=_0x1c72ae||0xc8;return function(_0x2e23fd){if(_0x2e23fd){return _0x46f0d2[_0x54a5('0x1c')](_0x1c72ae)[_0x54a5('0x1d')](_0x2e23fd);}};}function respondWithFilteredResult(_0x51c836,_0x3e8002){return function(_0x5a46d4){if(_0x5a46d4){var _0x27c26b=typeof _0x3e8002['offset']===_0x54a5('0x1e')&&typeof _0x3e8002[_0x54a5('0x1f')]===_0x54a5('0x1e');var _0x37e2a3=_0x5a46d4['count'];var _0x4518c8=_0x27c26b?0x0:_0x3e8002[_0x54a5('0x20')];var _0x392a5e=_0x27c26b?_0x5a46d4[_0x54a5('0x21')]:_0x3e8002['offset']+_0x3e8002[_0x54a5('0x1f')];var _0x434017;if(_0x392a5e>=_0x37e2a3){_0x392a5e=_0x37e2a3;_0x434017=0xc8;}else{_0x434017=0xce;}_0x51c836['status'](_0x434017);return _0x51c836['set']('Content-Range',_0x4518c8+'-'+_0x392a5e+'/'+_0x37e2a3)[_0x54a5('0x1d')](_0x5a46d4);}return null;};}function patchUpdates(_0x2a1d74){return function(_0x562ab2){try{jsonpatch[_0x54a5('0x22')](_0x562ab2,_0x2a1d74,!![]);}catch(_0x9a91dd){return BPromise[_0x54a5('0x23')](_0x9a91dd);}return _0x562ab2[_0x54a5('0x24')]();};}function saveUpdates(_0x114e71,_0x4a8240){return function(_0x5b1ebc){if(_0x5b1ebc){return _0x5b1ebc[_0x54a5('0x25')](_0x114e71)['then'](function(_0x5d2be6){return _0x5d2be6;});}return null;};}function removeEntity(_0x267364,_0x5344f2){return function(_0x430132){if(_0x430132){return _0x430132[_0x54a5('0x26')]()[_0x54a5('0x27')](function(){_0x267364[_0x54a5('0x1c')](0xcc)[_0x54a5('0x28')]();});}};}function handleEntityNotFound(_0x3286cc,_0x4e09e2){return function(_0x367e7f){if(!_0x367e7f){_0x3286cc[_0x54a5('0x1b')](0x194);}return _0x367e7f;};}function handleError(_0x22ee59,_0x2cffb2){_0x2cffb2=_0x2cffb2||0x1f4;return function(_0x232a50){logger[_0x54a5('0x29')](_0x232a50[_0x54a5('0x2a')]);if(_0x232a50[_0x54a5('0x2b')]){delete _0x232a50[_0x54a5('0x2b')];}_0x22ee59['status'](_0x2cffb2)[_0x54a5('0x2c')](_0x232a50);};}function getInteractionUsers(_0x571184,_0x146577){return new BPromise(function(_0x43727,_0x2b3748){try{if(_0x146577[_0x571184['id']]){_0x571184[_0x54a5('0x2d')]=_['map'](_0x146577[_0x571184['id']],function(_0x32f72a){return{'id':_0x32f72a['id'],'fullname':_0x32f72a[_0x54a5('0x2e')]};});}}catch(_0x2b6e9f){_0x2b3748(_0x2b6e9f);}_0x43727(_0x571184);});}function getInteractionTags(_0x57aeab,_0x1cc2b5){return new BPromise(function(_0x5827ea,_0x410ce8){try{if(_0x57aeab[_0x54a5('0x2f')]){_0x57aeab['Tags']=[];_0x57aeab[_0x54a5('0x2f')][_0x54a5('0x30')](',')[_0x54a5('0x31')](function(_0x1d5773){_0x57aeab['Tags'][_0x54a5('0x32')](_0x1cc2b5[_0x1d5773]);});}delete _0x57aeab['TagIds'];}catch(_0x1f673a){_0x410ce8(_0x1f673a);}_0x5827ea(_0x57aeab);});}function updateSmsInteraction(_0x55cc7c,_0x2cf4e7,_0x1561d6){return new BPromise(function(_0x45578a,_0x55de0b){return getInteractionUsers(_0x55cc7c,_0x1561d6)['then'](function(_0x2fe173){return getInteractionTags(_0x2fe173,_0x2cf4e7);})[_0x54a5('0x27')](function(_0x5d1ad8){_0x45578a(_0x5d1ad8);})[_0x54a5('0x33')](function(_0x2472f5){_0x55de0b(_0x2472f5);});});}exports[_0x54a5('0x34')]=function(_0xfcc6bc,_0xd6aac5){var _0x38701c={},_0x4b52d3={},_0x508952={'count':0x0,'rows':[]};var _0x3af439=_[_0x54a5('0x35')](db[_0x54a5('0x36')]['rawAttributes'],function(_0x52419c){return{'name':_0x52419c[_0x54a5('0x37')],'type':_0x52419c[_0x54a5('0x38')][_0x54a5('0x39')]};});_0x4b52d3['model']=_[_0x54a5('0x35')](_0x3af439,'name');_0x4b52d3[_0x54a5('0x3a')]=_['keys'](_0xfcc6bc['query']);_0x4b52d3['filters']=_[_0x54a5('0x3b')](_0x4b52d3[_0x54a5('0x3c')],_0x4b52d3[_0x54a5('0x3a')]);_0x38701c[_0x54a5('0x3d')]=_[_0x54a5('0x3b')](_0x4b52d3[_0x54a5('0x3c')],qs[_0x54a5('0x3e')](_0xfcc6bc['query']['fields']));_0x38701c['attributes']=_0x38701c[_0x54a5('0x3d')][_0x54a5('0x3f')]?_0x38701c[_0x54a5('0x3d')]:_0x4b52d3[_0x54a5('0x3c')];if(!_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x40')](_0x54a5('0x41'))){_0x38701c['limit']=qs[_0x54a5('0x1f')](_0xfcc6bc['query'][_0x54a5('0x1f')]);_0x38701c[_0x54a5('0x20')]=qs[_0x54a5('0x20')](_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x20')]);}_0x38701c['order']=qs[_0x54a5('0x42')](_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x42')]);_0x38701c[_0x54a5('0x43')]=qs[_0x54a5('0x44')](_['pick'](_0xfcc6bc['query'],_0x4b52d3[_0x54a5('0x44')]),_0x3af439);var _0x5868e4=[];var _0x27808b=squel[_0x54a5('0x45')]()[_0x54a5('0x46')]('id')[_0x54a5('0x46')](_0x54a5('0x2b'))[_0x54a5('0x46')](_0x54a5('0x47'))[_0x54a5('0x48')]('tools_tags');var _0x337b7b=squel[_0x54a5('0x45')]()[_0x54a5('0x46')](_0x54a5('0x49'))[_0x54a5('0x46')](_0x54a5('0x4a'))[_0x54a5('0x46')](_0x54a5('0x4b'))[_0x54a5('0x48')](_0x54a5('0x4c'),'ui')['left_join'](_0x54a5('0x4d'),'u',_0x54a5('0x4e'));var _0x4c6f23=squel[_0x54a5('0x45')]()[_0x54a5('0x48')](_0x54a5('0x4f'),'i')['left_join'](_0x54a5('0x50'),'c',_0x54a5('0x51'))[_0x54a5('0x52')](_0x54a5('0x4d'),'o',_0x54a5('0x53'))['left_join'](_0x54a5('0x54'),'a','a.id\x20=\x20i.SmsAccountId')[_0x54a5('0x52')](_0x54a5('0x55'),'me','me.SmsInteractionId\x20=\x20i.id')[_0x54a5('0x52')](_0x54a5('0x56'),'it',_0x54a5('0x57'))[_0x54a5('0x52')](_0x54a5('0x58'),'t',_0x54a5('0x59'));var _0x3886fb=squel['expr']();var _0xd2b626=[];var _0x461465=squel[_0x54a5('0x5a')]();var _0x558b2b;if(_0xfcc6bc['query']['search']){_0x558b2b=as[_0x54a5('0x5b')](_0xfcc6bc['query'][_0x54a5('0x5c')]);var _0x3a6406=_0x558b2b['sqlOperator'];for(var _0x2233f4=0x0;_0x2233f4<_0x558b2b[_0x54a5('0x5d')][_0x54a5('0x3f')];_0x2233f4++){var _0x9719d2=_0x558b2b[_0x54a5('0x5d')][_0x2233f4];var _0x3bef32='i';var _0x570ced=_[_0x54a5('0x5e')](_0x3af439,[_0x54a5('0x2b'),_0x9719d2[_0x54a5('0x46')]]);if(!_0x570ced){switch(_0x9719d2['field']){case _0x54a5('0x5f'):if(_0x9719d2[_0x54a5('0x60')]==0x1){_0x4c6f23[_0x54a5('0x61')]('`'+_0x9719d2[_0x54a5('0x46')]+_0x54a5('0x62'));}else{_0x4c6f23['having']('`'+_0x9719d2['field']+'`\x20>\x200');}break;case _0x54a5('0x63'):if(_0x9719d2[_0x54a5('0x64')]===_0x54a5('0x65')){if(_0x9719d2['value'][_0x54a5('0x30')]('\x20')[_0x54a5('0x3f')]>0x1){_0x3886fb[_0x3a6406](_0x54a5('0x66'),qs[_0x54a5('0x67')](_0x9719d2[_0x54a5('0x60')]),null);}else{var _0x4deef0='%'+_0x9719d2[_0x54a5('0x60')]+'%';_0x3886fb[_0x3a6406]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4deef0,_0x4deef0,_0x4deef0);}}else{_0x570ced=_[_0x54a5('0x5e')](_0x3af439,[_0x54a5('0x2b'),_0x54a5('0x68')]);_0x9719d2[_0x54a5('0x46')]='ContactId';_0x3e4ea1=as[_0x54a5('0x69')](_0x3bef32,_0x570ced[_0x54a5('0x38')],_0x9719d2);_0x3886fb[_0x3a6406](_0x3e4ea1[_0x54a5('0x6a')],_0x3e4ea1[_0x54a5('0x60')][_0x54a5('0x6b')],_0x3e4ea1[_0x54a5('0x60')][_0x54a5('0x28')]);}break;case _0x54a5('0x6c'):var _0x484ca2=_0x9719d2[_0x54a5('0x60')]['split'](',')[_0x54a5('0x35')](function(_0x5b159c){return Number(_0x5b159c);});_0x484ca2['forEach'](function(_0x17ba7f){_0x461465['or'](_0x54a5('0x6d'),'%,'+_0x17ba7f+',%');});_0xd2b626=_[_0x54a5('0x6e')](_0xd2b626,_0x484ca2);break;case _0x54a5('0x6f'):if(_0x9719d2[_0x54a5('0x64')]===_0x54a5('0x65')){_0x3886fb[_0x3a6406](_0x54a5('0x70'),'%'+_0x9719d2['value']+'%',null);}else{_0x570ced=_[_0x54a5('0x5e')](_0x3af439,['name',_0x54a5('0x71')]);_0x9719d2[_0x54a5('0x46')]='UserId';_0x3e4ea1=as[_0x54a5('0x69')](_0x3bef32,_0x570ced[_0x54a5('0x38')],_0x9719d2);_0x3886fb[_0x3a6406](_0x3e4ea1[_0x54a5('0x6a')],_0x3e4ea1['value'][_0x54a5('0x6b')],_0x3e4ea1['value'][_0x54a5('0x28')]);}break;case _0x54a5('0x72'):_0x3e4ea1=as[_0x54a5('0x69')]('me',null,_0x9719d2);_0x3886fb[_0x3a6406](_0x3e4ea1[_0x54a5('0x6a')],_0x3e4ea1[_0x54a5('0x60')]['start'],_0x3e4ea1[_0x54a5('0x60')][_0x54a5('0x28')]);break;}}else{var _0x3e4ea1=as[_0x54a5('0x69')](_0x3bef32,_0x570ced['type'],_0x9719d2);_0x3886fb[_0x3a6406](_0x3e4ea1['text'],_0x3e4ea1['value'][_0x54a5('0x6b')],_0x3e4ea1[_0x54a5('0x60')]['end']);}}}else{var _0x1f1ceb=_(_0xfcc6bc['query'])[_0x54a5('0x73')]()['map'](function(_0x760d6e){return _[_0x54a5('0x74')](_0x3af439,[_0x54a5('0x2b'),_0x760d6e])?_0x760d6e:undefined;})[_0x54a5('0x75')]()['value']();if(!_[_0x54a5('0x76')](_0x1f1ceb)){_0x1f1ceb[_0x54a5('0x31')](function(_0x4269ce){if(_0x4269ce==='SmsAccountId'){_0x4c6f23['where'](_0x54a5('0x77'),[][_0x54a5('0x78')](_0xfcc6bc['query'][_0x4269ce]));}else if(_0x4269ce==='createdAt'){var _0x4a85d3=JSON[_0x54a5('0x79')](_0xfcc6bc['query'][_0x4269ce])[_0x54a5('0x7a')];var _0x374239=JSON[_0x54a5('0x79')](_0xfcc6bc['query'][_0x4269ce])[_0x54a5('0x7b')];_0x4c6f23['where'](_0x54a5('0x7c'),_0x4a85d3,_0x374239);}else{if(_0xfcc6bc[_0x54a5('0x3a')][_0x4269ce]===_0x54a5('0x7d')){_0x4c6f23[_0x54a5('0x43')]('i.'+_0x4269ce+_0x54a5('0x7e'));}else{_0x4c6f23[_0x54a5('0x43')]('i.'+_0x4269ce+_0x54a5('0x7f'),_0xfcc6bc[_0x54a5('0x3a')][_0x4269ce]);}}});}if(_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x80')]){if(_0xfcc6bc['query'][_0x54a5('0x80')]==0x1){_0x4c6f23[_0x54a5('0x61')](_0x54a5('0x81'));}else{_0x4c6f23['having'](_0x54a5('0x82'));}}if(_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x83')]){_0xd2b626=_[_0x54a5('0x84')](_0xfcc6bc[_0x54a5('0x3a')]['tag'])?_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x83')]:new Array(_0xfcc6bc[_0x54a5('0x3a')]['tag']);_0xd2b626[_0x54a5('0x31')](function(_0x42c3bb){_0x461465['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x42c3bb+',%');});}if(_0xfcc6bc['query'][_0x54a5('0x85')]){var _0x3f81bb=_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x85')]['replace']('\x5c','\x5c\x5c')[_0x54a5('0x86')](/'/g,'\x27\x27');if(qs[_0x54a5('0x87')](_0x3f81bb)){_0x3886fb['or'](_0x54a5('0x88'),_0x3f81bb+'%')['or']('i.phone\x20LIKE\x20?',_0x3f81bb+'%');}else{_0x3886fb['or'](_0x54a5('0x89'),qs['getFullTextValue'](_0x3f81bb))['or'](_0x54a5('0x8a'),_0x3f81bb+'%');}}}_0x4c6f23[_0x54a5('0x43')](_0x3886fb);_0x4c6f23[_0x54a5('0x8b')](_0x54a5('0x8c'));var _0x54dab2={'type':db['Sequelize'][_0x54a5('0x8d')]['SELECT'],'raw':!![]};var _0x23afb7=_0x4c6f23[_0x54a5('0x8e')]();_0x23afb7['field'](_0x54a5('0x8c'));_0x23afb7['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x38701c['order']){_0x38701c[_0x54a5('0x8f')][_0x54a5('0x31')](function(_0x2ab4f2){var _0x77645=_0x2ab4f2[0x0]===_0x54a5('0x90')?_0x2ab4f2[0x0]:'i.'+_0x2ab4f2[0x0];_0x4c6f23['order'](_0x77645,_0x2ab4f2[0x1]===_0x54a5('0x91')?![]:!![]);});}if(!_[_0x54a5('0x76')](_0xd2b626)){_0x4c6f23['having'](_0x461465);_0x23afb7[_0x54a5('0x43')](_0x54a5('0x92'),_0xd2b626);}BPromise[_0x54a5('0x93')]()[_0x54a5('0x27')](function(){if(!_0x558b2b){if(_0xfcc6bc['query'][_0x54a5('0x94')])return;_0x23afb7['where'](_0x54a5('0x95'));_0x4c6f23[_0x54a5('0x43')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');return;}if(_0xfcc6bc[_0x54a5('0x96')]['role']!==_0x54a5('0x97'))return;return _0xfcc6bc[_0x54a5('0x96')][_0x54a5('0x98')]({'attributes':['id'],'raw':!![]})[_0x54a5('0x27')](function(_0x28542e){if(_['isEmpty'](_0x28542e)){_0x23afb7[_0x54a5('0x43')]('i.SmsAccountId\x20IS\x20NULL');_0x4c6f23[_0x54a5('0x43')](_0x54a5('0x99'));}else{_0x23afb7[_0x54a5('0x43')](_0x54a5('0x77'),_['map'](_0x28542e,'id'));_0x4c6f23[_0x54a5('0x43')](_0x54a5('0x77'),_[_0x54a5('0x35')](_0x28542e,'id'));}});})[_0x54a5('0x27')](function(){if(_0xfcc6bc['user']['role']===_0x54a5('0x97')&&!_0x558b2b&&!_0xfcc6bc[_0x54a5('0x3a')][_0x54a5('0x94')])return[];return db['sequelize'][_0x54a5('0x3a')](_0x23afb7['toString'](),_0x54dab2);})['then'](function(_0x1b7753){_0x508952['count']=_0x1b7753[_0x54a5('0x3f')];if(_0x508952[_0x54a5('0x21')]===0x0)return[];return db[_0x54a5('0x9a')][_0x54a5('0x3a')](_0x27808b['toString'](),_0x54dab2)[_0x54a5('0x27')](function(_0x503183){_0x5868e4=_['keyBy'](_0x503183,'id');_0x54dab2=_[_0x54a5('0x9b')](_0x54dab2,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xfcc6bc[_0x54a5('0x3a')]['fields']){_0x38701c[_0x54a5('0x3d')][_0x54a5('0x31')](function(_0x54b39f){_0x4c6f23['field']('i.'+_0x54b39f);});}else{_0x4c6f23['field'](_0x54a5('0x9c'),_0x54a5('0x5f'));_0x4c6f23[_0x54a5('0x46')]('a.key',_0x54a5('0x9d'));_0x4c6f23['field']('a.mandatoryDisposition',_0x54a5('0x9e'));_0x4c6f23['field'](_0x54a5('0x9f'),_0x54a5('0x90'));_0x4c6f23[_0x54a5('0x46')](_0x54a5('0xa0'));_0x4c6f23[_0x54a5('0x46')](_0x54a5('0xa1'),_0x54a5('0xa2'));_0x4c6f23[_0x54a5('0x46')](_0x54a5('0xa3'),_0x54a5('0xa4'));_0x4c6f23[_0x54a5('0x46')](_0x54a5('0xa5'),_0x54a5('0xa6'));_0x4c6f23[_0x54a5('0x46')]('c.phone','Contact.phone');_0x4c6f23[_0x54a5('0x46')](_0x54a5('0xa7'),_0x54a5('0xa8'));_0x4c6f23['field']('c.fax',_0x54a5('0xa9'));_0x4c6f23[_0x54a5('0x46')]('o.fullname',_0x54a5('0xaa'));_0x4c6f23['field'](_0x54a5('0xab'),_0x54a5('0xac'));_0x4c6f23[_0x54a5('0x46')](_0x54a5('0xad'),_0x54a5('0x2f'));}if(_0x38701c[_0x54a5('0x1f')])_0x4c6f23[_0x54a5('0x1f')](_0x38701c[_0x54a5('0x1f')]);if(_0x38701c[_0x54a5('0x20')])_0x4c6f23['offset'](_0x38701c[_0x54a5('0x20')]);return db[_0x54a5('0x9a')][_0x54a5('0x3a')](_0x4c6f23[_0x54a5('0xae')](),_0x54dab2);})[_0x54a5('0x27')](function(_0x4ee252){if(_0x4ee252[_0x54a5('0x3f')]>0x0)_0x337b7b[_0x54a5('0x43')](_0x54a5('0xaf'),_[_0x54a5('0x35')](_0x4ee252,'id'));return db[_0x54a5('0x9a')][_0x54a5('0x3a')](_0x337b7b['toString'](),_0x54dab2)['then'](function(_0x51bfd8){var _0x468fae=_[_0x54a5('0xb0')](_0x51bfd8,'SmsInteractionId');var _0x3b4253=[];_0x4ee252['forEach'](function(_0x23478e){_0x3b4253[_0x54a5('0x32')](updateSmsInteraction(_0x23478e,_0x5868e4,_0x468fae));});return BPromise[_0x54a5('0xb1')](_0x3b4253);});});})['then'](function(_0x22a2d5){_0x508952['rows']=_0x22a2d5;return _0x508952;})['then'](respondWithFilteredResult(_0xd6aac5,_0x38701c))[_0x54a5('0x33')](handleError(_0xd6aac5,null));};exports[_0x54a5('0xb2')]=function(_0x83feac,_0x3aa14d){var _0xf2220a={'raw':![],'where':{'id':_0x83feac[_0x54a5('0xb3')]['id']}},_0x528626={};_0x528626[_0x54a5('0x3c')]=_['keys'](db[_0x54a5('0x36')][_0x54a5('0xb4')]);_0x528626[_0x54a5('0x3a')]=_['keys'](_0x83feac[_0x54a5('0x3a')]);_0x528626[_0x54a5('0x44')]=_[_0x54a5('0x3b')](_0x528626[_0x54a5('0x3c')],_0x528626['query']);_0xf2220a[_0x54a5('0x3d')]=_['intersection'](_0x528626[_0x54a5('0x3c')],qs[_0x54a5('0x3e')](_0x83feac[_0x54a5('0x3a')][_0x54a5('0x3e')]));_0xf2220a[_0x54a5('0x3d')]=_0xf2220a[_0x54a5('0x3d')][_0x54a5('0x3f')]?_0xf2220a['attributes']:_0x528626['model'];if(_0x83feac[_0x54a5('0x3a')][_0x54a5('0xb5')]){_0xf2220a[_0x54a5('0xb6')]=[{'all':!![]}];}_0xf2220a=_['merge']({},_0xf2220a,_0x83feac[_0x54a5('0xb7')]);return db[_0x54a5('0x36')]['find'](_0xf2220a)['then'](handleEntityNotFound(_0x3aa14d,null))[_0x54a5('0x27')](respondWithResult(_0x3aa14d,null))[_0x54a5('0x33')](handleError(_0x3aa14d,null));};exports[_0x54a5('0xb8')]=function(_0x5ac0be,_0x47d036){return db['SmsInteraction'][_0x54a5('0xb8')](_0x5ac0be[_0x54a5('0x72')],{})[_0x54a5('0x27')](respondWithResult(_0x47d036,0xc9))['catch'](handleError(_0x47d036,null));};exports[_0x54a5('0x25')]=function(_0x1d1a19,_0x17d15c){if(_0x1d1a19['body']['id']){delete _0x1d1a19[_0x54a5('0x72')]['id'];}return db[_0x54a5('0x36')][_0x54a5('0x5e')]({'where':{'id':_0x1d1a19['params']['id']}})['then'](handleEntityNotFound(_0x17d15c,null))[_0x54a5('0x27')](saveUpdates(_0x1d1a19[_0x54a5('0x72')],null))[_0x54a5('0x27')](respondWithResult(_0x17d15c,null))['catch'](handleError(_0x17d15c,null));};exports[_0x54a5('0x26')]=function(_0x3eeaa3,_0x3c6b28){return db[_0x54a5('0x36')]['find']({'where':{'id':_0x3eeaa3[_0x54a5('0xb3')]['id']}})['then'](handleEntityNotFound(_0x3c6b28,null))[_0x54a5('0x27')](removeEntity(_0x3c6b28,null))[_0x54a5('0x33')](handleError(_0x3c6b28,null));};exports[_0x54a5('0xb9')]=function(_0x53ddc1,_0x3ccf7d){return db[_0x54a5('0x36')][_0x54a5('0xb9')]()[_0x54a5('0x27')](respondWithResult(_0x3ccf7d,null))[_0x54a5('0x33')](handleError(_0x3ccf7d,null));};exports[_0x54a5('0xba')]=function(_0x4dfda4,_0x2e15ce,_0x1181a5){return db[_0x54a5('0xbb')][_0x54a5('0x5e')]({'where':{'id':_0x4dfda4[_0x54a5('0xb3')]['id']}})[_0x54a5('0x27')](handleEntityNotFound(_0x2e15ce,null))[_0x54a5('0x27')](function(_0x51aff7){if(_0x51aff7){return _0x51aff7['addMessage'](_0x4dfda4[_0x54a5('0x72')][_0x54a5('0xbc')],_[_0x54a5('0xbd')](_0x4dfda4['body'],[_0x54a5('0xbc'),'id'])||{});}})['then'](respondWithResult(_0x2e15ce,null))['catch'](handleError(_0x2e15ce,null));};exports['getMessages']=function(_0x387119,_0x48287c,_0x59379e){var _0x5d33a7={'raw':![],'where':{}};var _0x3ec966={};var _0xf12af3={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x54a5('0xbe')]({'where':{'id':_0x387119[_0x54a5('0xb3')]['id']}})[_0x54a5('0x27')](handleEntityNotFound(_0x48287c,null))['then'](function(_0x17ce36){if(_0x17ce36){_0x3ec966['model']=_[_0x54a5('0x73')](db['SmsMessage'][_0x54a5('0xb4')]);_0x3ec966[_0x54a5('0x3a')]=_[_0x54a5('0x73')](_0x387119['query']);_0x3ec966[_0x54a5('0x44')]=_[_0x54a5('0x3b')](_0x3ec966['model'],_0x3ec966[_0x54a5('0x3a')]);_0x5d33a7[_0x54a5('0x3d')]=_['intersection'](_0x3ec966[_0x54a5('0x3c')],qs[_0x54a5('0x3e')](_0x387119[_0x54a5('0x3a')][_0x54a5('0x3e')]));_0x5d33a7[_0x54a5('0x3d')]=_0x5d33a7['attributes'][_0x54a5('0x3f')]?_0x5d33a7[_0x54a5('0x3d')]:_0x3ec966[_0x54a5('0x3c')];if(!_0x387119[_0x54a5('0x3a')][_0x54a5('0x40')](_0x54a5('0x41'))){_0x5d33a7[_0x54a5('0x1f')]=qs[_0x54a5('0x1f')](_0x387119['query'][_0x54a5('0x1f')]);_0x5d33a7['offset']=qs[_0x54a5('0x20')](_0x387119[_0x54a5('0x3a')]['offset']);}_0x5d33a7['order']=qs[_0x54a5('0x42')](_0x387119[_0x54a5('0x3a')][_0x54a5('0x42')]);_0x5d33a7[_0x54a5('0x43')]=qs[_0x54a5('0x44')](_['pick'](_0x387119[_0x54a5('0x3a')],_0x3ec966['filters']));_0x5d33a7['where'][_0x54a5('0xbf')]=_0x17ce36['id'];if(_0x387119[_0x54a5('0x3a')][_0x54a5('0x85')]){_0x5d33a7['where']=_[_0x54a5('0x9b')](_0x5d33a7['where'],{'$or':_[_0x54a5('0x35')](_0x5d33a7[_0x54a5('0x3d')],function(_0x216b3d){var _0x417774={};_0x417774[_0x216b3d]={'$like':'%'+_0x387119[_0x54a5('0x3a')]['filter']+'%'};return _0x417774;})});}if(_0x387119[_0x54a5('0x3a')][_0x54a5('0x7a')]){var _0x3415ee=_0x387119['query'][_0x54a5('0x7a')][_0x54a5('0x30')](',');var _0x2f7b6b={};_0x2f7b6b[_0x3415ee[0x0]]={'$gte':moment(_0x3415ee[0x1])[_0x54a5('0xc0')](_0x54a5('0xc1'))};_0x5d33a7[_0x54a5('0x43')]=_[_0x54a5('0x9b')](_0x5d33a7[_0x54a5('0x43')],_0x2f7b6b);}_0x5d33a7=_['merge']({},_0x5d33a7,_0x387119[_0x54a5('0xb7')]);return db[_0x54a5('0xbb')][_0x54a5('0x21')]({'where':_0x5d33a7[_0x54a5('0x43')]})['then'](function(_0x5b15f7){_0xf12af3['count']=_0x5b15f7;if(_0x387119['query'][_0x54a5('0xb5')]){_0x5d33a7[_0x54a5('0xb6')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0x5d33a7);})[_0x54a5('0x27')](function(_0x18326a){_0xf12af3[_0x54a5('0xc2')]=_0x18326a;return _0xf12af3;});}})[_0x54a5('0x27')](respondWithFilteredResult(_0x48287c,_0x5d33a7))['catch'](handleError(_0x48287c,null));};exports[_0x54a5('0xc3')]=function(_0x425a39,_0x5ca9f9,_0xf0d19d){return db[_0x54a5('0x36')][_0x54a5('0x5e')]({'where':{'id':_0x425a39[_0x54a5('0xb3')]['id']}})[_0x54a5('0x27')](handleEntityNotFound(_0x5ca9f9,null))['then'](function(_0x4e35f7){if(_0x4e35f7){return _0x4e35f7[_0x54a5('0xc4')](_0x425a39[_0x54a5('0x72')]['ids'],_[_0x54a5('0xbd')](_0x425a39[_0x54a5('0x72')],[_0x54a5('0xbc'),'id'])||{})[_0x54a5('0xc5')](function(){return db[_0x54a5('0x6c')][_0x54a5('0xc6')]({'attributes':['id',_0x54a5('0x2b'),'color'],'where':{'id':_0x425a39[_0x54a5('0x72')]['ids']}});})[_0x54a5('0x27')](function(_0x42ca31){socket[_0x54a5('0xc7')](_0x54a5('0xc8'),{'id':Number(_0x425a39[_0x54a5('0xb3')]['id']),'tags':_0x42ca31||[]});return{'id':Number(_0x425a39['params']['id']),'tags':_0x42ca31||[]};});}})[_0x54a5('0x27')](respondWithResult(_0x5ca9f9,null))[_0x54a5('0x33')](handleError(_0x5ca9f9,null));};exports[_0x54a5('0xc9')]=function(_0x4e48f1,_0x42f024,_0x2a4cb5){return db[_0x54a5('0x36')][_0x54a5('0x5e')]({'where':{'id':_0x4e48f1[_0x54a5('0xb3')]['id']}})[_0x54a5('0x27')](handleEntityNotFound(_0x42f024,null))['then'](function(_0x1601e4){if(_0x1601e4){return _0x1601e4['removeTags'](_0x4e48f1[_0x54a5('0x3a')][_0x54a5('0xbc')]);}})[_0x54a5('0x27')](respondWithStatusCode(_0x42f024,null))[_0x54a5('0x33')](handleError(_0x42f024,null));};exports[_0x54a5('0xca')]=function(_0xd8cec3,_0xc95042){var _0x297584=moment()[_0x54a5('0xcb')]()['toString']();var _0x3b14f0=path[_0x54a5('0xcc')](config[_0x54a5('0xcd')],_0x54a5('0xce'),_0x54a5('0xcf'),_0x54a5('0xd0'));var _0x9158b6=path['join'](config[_0x54a5('0xcd')],'server',_0x54a5('0xcf'),_0x54a5('0xd1'));var _0x390a99=path[_0x54a5('0xcc')](_0x3b14f0,_0x297584);var _0x376901=util[_0x54a5('0xc0')]('transcript-%d-%s.zip',_0xd8cec3['params']['id'],_0x297584);var _0x20d618=path[_0x54a5('0xcc')](_0x3b14f0,_0x376901);var _0x3a400e=[];_0x3a400e[_0x54a5('0x32')]({'model':db[_0x54a5('0x6f')],'as':'User','attributes':['id',_0x54a5('0x2e')],'raw':!![]});_0x3a400e[_0x54a5('0x32')]({'model':db[_0x54a5('0xd2')],'as':_0x54a5('0x63'),'attributes':['id','firstName',_0x54a5('0xd3')],'raw':!![]});var _0x4d53e1=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0x54a5('0x72'),_0x54a5('0xd4'),'direction','secret',_0x54a5('0x80')],'include':_0x3a400e}];_0x4d53e1[_0x54a5('0x32')]({'model':db[_0x54a5('0xd5')],'as':'Account','attributes':['id',_0x54a5('0x2b')]});_0x4d53e1['push']({'model':db[_0x54a5('0x6f')],'as':_0x54a5('0xd6'),'attributes':['id','fullname']});return db['SmsInteraction'][_0x54a5('0x5e')]({'where':{'id':_0xd8cec3[_0x54a5('0xb3')]['id']},'include':_0x4d53e1})['then'](handleEntityNotFound(_0xc95042,null))[_0x54a5('0x27')](function(_0x13b06d){if(_0x13b06d){var _0x1f18a0=_0x13b06d[_0x54a5('0xd7')]({'plain':!![]});fs['mkdirSync'](_0x390a99);var _0x2c8350={'channel':'Sms','account':_0x1f18a0['Account'][_0x54a5('0x2b')],'agent':_0x1f18a0[_0x54a5('0xd6')]?_0x1f18a0[_0x54a5('0xd6')]['fullname']:_0x54a5('0xd8'),'createdAt':moment(_0x1f18a0[_0x54a5('0xd4')])[_0x54a5('0xc0')](_0x54a5('0xc1'))['toString'](),'closedAt':_0x1f18a0[_0x54a5('0xd9')]?moment(_0x1f18a0['closedAt'])['format'](_0x54a5('0xc1'))[_0x54a5('0xae')]():'','disposition':_0x1f18a0['disposition'],'messages':_(_0x1f18a0[_0x54a5('0xda')])[_0x54a5('0x85')]({'secret':![]})[_0x54a5('0x35')](function(_0x58daab){return{'date':moment(_0x58daab[_0x54a5('0xd4')])[_0x54a5('0xc0')](_0x54a5('0xc1'))[_0x54a5('0xae')](),'sender':_0x58daab[_0x54a5('0xdb')]===_0x54a5('0xdc')?_0x58daab[_0x54a5('0x6f')]?_0x58daab[_0x54a5('0x6f')]['fullname']:_0x54a5('0xdd'):_0x58daab[_0x54a5('0x63')][_0x54a5('0xde')]+(_0x58daab[_0x54a5('0x63')][_0x54a5('0xd3')]?'\x20'+_0x58daab[_0x54a5('0x63')][_0x54a5('0xd3')]:''),'body':_0x58daab['body'],'direction':_0x58daab[_0x54a5('0xdb')]==='out'?'A':'C','secret':_0x58daab['secret'],'read':_0x58daab[_0x54a5('0x80')]};})[_0x54a5('0x60')]()};return ejs['renderFile'](path[_0x54a5('0xcc')](config[_0x54a5('0xcd')],'server',_0x54a5('0xdf'),_0x54a5('0xe0')),{'interaction':_0x2c8350})['then'](function(_0x2c3de9){var _0x112221=path[_0x54a5('0xcc')](_0x390a99,'transcript-'+_0x1f18a0['id']+'-'+_0x297584+_0x54a5('0xe1'));var _0x5462f8={'path':_0x112221,'channel':_0x54a5('0xe2'),'interactionId':_0x1f18a0['id']};return pdf[_0x54a5('0xe3')](_0x2c3de9,_0x5462f8);})['then'](function(){return new BPromise(function(_0x43c3ea,_0x8a4e50){zipdir(_0x390a99,{'saveTo':_0x20d618},function(_0x53f18a,_0x2f50b1){if(_0x53f18a)return _0x8a4e50(_0x53f18a);return _0x43c3ea(_0x2f50b1);});})[_0x54a5('0x27')](function(){return new BPromise(function(_0x471c72,_0x3221fd){rimraf(_0x390a99,function(_0x38900a){if(_0x38900a)_0x3221fd(_0x38900a);return _0x471c72();});});})[_0x54a5('0x27')](function(){return _0xc95042[_0x54a5('0xca')](_0x20d618,_0x376901,function(_0x1f4b00){if(_0x1f4b00){console[_0x54a5('0xe4')](_0x54a5('0xe5'),_0x1f4b00);}else{fs[_0x54a5('0xe6')](_0x20d618);}});});});}else{return _0xc95042[_0x54a5('0x1b')](0xc8);}})['catch'](handleError(_0xc95042,null));};
\ No newline at end of file
index 7b2d496..00a67c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab40=['remove','then','setDataValue','Users','unreadMessages','length','emit','catch','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x495a36,_0x5c3e57){var _0x37873a=function(_0x4dc49e){while(--_0x4dc49e){_0x495a36['push'](_0x495a36['shift']());}};_0x37873a(++_0x5c3e57);}(_0xab40,0xcd));var _0x0ab4=function(_0x625588,_0xcd1ad0){_0x625588=_0x625588-0x0;var _0x598619=_0xab40[_0x625588];return _0x598619;};'use strict';var EventEmitter=require(_0x0ab4('0x0'));var SmsInteraction=require(_0x0ab4('0x1'))['db']['SmsInteraction'];var SmsMessage=require('../../mysqldb')['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x0ab4('0x2')](0x0);var events={'afterCreate':_0x0ab4('0x3'),'afterUpdate':_0x0ab4('0x4'),'afterDestroy':_0x0ab4('0x5')};function emitEvent(_0x14634a){return function(_0x57fac1,_0x5f01aa,_0x28b17a){_0x57fac1['getUsers']({'attributes':['id'],'raw':!![]})[_0x0ab4('0x6')](function(_0x46d16a){_0x57fac1[_0x0ab4('0x7')](_0x0ab4('0x8'),_0x46d16a['map'](function(_0x55263d){return{'id':_0x55263d['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x57fac1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0ab4('0x6')](function(_0x30e726){_0x57fac1[_0x0ab4('0x7')](_0x0ab4('0x9'),_0x30e726[_0x0ab4('0xa')]);SmsInteractionEvents[_0x0ab4('0xb')](_0x14634a+':'+_0x57fac1['id'],_0x57fac1);SmsInteractionEvents[_0x0ab4('0xb')](_0x14634a,_0x57fac1);_0x28b17a(null);})[_0x0ab4('0xc')](_0x28b17a(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x0ab4('0xd')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x0598=['catch','hasOwnProperty','events','../../mysqldb','save','update','setDataValue','Users','map','then','unreadMessages','length'];(function(_0x1cbfed,_0x535154){var _0x5cef72=function(_0x1b6e80){while(--_0x1b6e80){_0x1cbfed['push'](_0x1cbfed['shift']());}};_0x5cef72(++_0x535154);}(_0x0598,0x92));var _0x8059=function(_0x461fb8,_0x51f966){_0x461fb8=_0x461fb8-0x0;var _0x19dd7e=_0x0598[_0x461fb8];return _0x19dd7e;};'use strict';var EventEmitter=require(_0x8059('0x0'));var SmsInteraction=require(_0x8059('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0x8059('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8059('0x2'),'afterUpdate':_0x8059('0x3'),'afterDestroy':'remove'};function emitEvent(_0x54f42f){return function(_0x555fb5,_0x467206,_0xa7d7c1){_0x555fb5['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x248273){_0x555fb5[_0x8059('0x4')](_0x8059('0x5'),_0x248273[_0x8059('0x6')](function(_0x5df268){return{'id':_0x5df268['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x555fb5['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8059('0x7')](function(_0x1bf5fd){_0x555fb5[_0x8059('0x4')](_0x8059('0x8'),_0x1bf5fd[_0x8059('0x9')]);SmsInteractionEvents['emit'](_0x54f42f+':'+_0x555fb5['id'],_0x555fb5);SmsInteractionEvents['emit'](_0x54f42f,_0x555fb5);_0xa7d7c1(null);})[_0x8059('0xa')](_0xa7d7c1(null));};}for(var e in events){if(events[_0x8059('0xb')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index 1c53568..0b1d27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8ce=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','define','SmsInteraction','sms_interactions','changed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xd8ce,0x1ee));var _0xed8c=function(_0x5ae8f7,_0x330d91){_0x5ae8f7=_0x5ae8f7-0x0;var _0x54c636=_0xd8ce[_0x5ae8f7];return _0x54c636;};'use strict';var _=require(_0xed8c('0x0'));var util=require(_0xed8c('0x1'));var logger=require(_0xed8c('0x2'))('api');var moment=require(_0xed8c('0x3'));var BPromise=require('bluebird');var rp=require(_0xed8c('0x4'));var fs=require('fs');var path=require(_0xed8c('0x5'));var rimraf=require(_0xed8c('0x6'));var config=require(_0xed8c('0x7'));var attributes=require(_0xed8c('0x8'));module['exports']=function(_0x459301,_0x1f900d){return _0x459301[_0xed8c('0x9')](_0xed8c('0xa'),attributes,{'tableName':_0xed8c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x116775,_0x58af18,_0x2120e4){if(_0x116775[_0xed8c('0xc')]('closed')){_0x116775[_0xed8c('0xd')]=moment()['format'](_0xed8c('0xe'));}_0x2120e4(null,_0x116775);}}});};
\ No newline at end of file
+var _0x8375=['bluebird','path','rimraf','../../config/environment','./smsInteraction.attributes','SmsInteraction','sms_interactions','changed','closedAt','lodash','util','../../config/logger','api','moment'];(function(_0x1b3925,_0x45b271){var _0x2727e4=function(_0x280a64){while(--_0x280a64){_0x1b3925['push'](_0x1b3925['shift']());}};_0x2727e4(++_0x45b271);}(_0x8375,0xf7));var _0x5837=function(_0x14db6e,_0x128fd9){_0x14db6e=_0x14db6e-0x0;var _0x22f43e=_0x8375[_0x14db6e];return _0x22f43e;};'use strict';var _=require(_0x5837('0x0'));var util=require(_0x5837('0x1'));var logger=require(_0x5837('0x2'))(_0x5837('0x3'));var moment=require(_0x5837('0x4'));var BPromise=require(_0x5837('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5837('0x6'));var rimraf=require(_0x5837('0x7'));var config=require(_0x5837('0x8'));var attributes=require(_0x5837('0x9'));module['exports']=function(_0x410730,_0x1ae409){return _0x410730['define'](_0x5837('0xa'),attributes,{'tableName':_0x5837('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x376793,_0x5b4ecd,_0x37beb2){if(_0x376793[_0x5837('0xc')]('closed')){_0x376793[_0x5837('0xd')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x37beb2(null,_0x376793);}}});};
\ No newline at end of file
index c03b1e7..aa077f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8626=['omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','attributes','catch','AddTagsToSmsInteraction','ids'];(function(_0x2132a9,_0xcd5273){var _0x2211c8=function(_0x1e9c37){while(--_0x1e9c37){_0x2132a9['push'](_0x2132a9['shift']());}};_0x2211c8(++_0xcd5273);}(_0x8626,0x17d));var _0x6862=function(_0xf1038e,_0x595e31){_0xf1038e=_0xf1038e-0x0;var _0xee55ba=_0x8626[_0xf1038e];return _0xee55ba;};'use strict';var _=require(_0x6862('0x0'));var util=require('util');var moment=require(_0x6862('0x1'));var BPromise=require(_0x6862('0x2'));var rs=require(_0x6862('0x3'));var fs=require('fs');var Redis=require(_0x6862('0x4'));var db=require(_0x6862('0x5'))['db'];var utils=require(_0x6862('0x6'));var logger=require(_0x6862('0x7'))(_0x6862('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6862('0x9')][_0x6862('0xa')]({'port':0x232a});config[_0x6862('0xb')]=_[_0x6862('0xc')](config['redis'],{'host':_0x6862('0xd'),'port':0x18eb});var socket=require(_0x6862('0xe'))(new Redis(config[_0x6862('0xb')]));require(_0x6862('0xf'))[_0x6862('0x10')](socket);function respondWithRpcPromise(_0x7597e,_0x36e278,_0x550183){return new BPromise(function(_0x4f4d08,_0xa3a9da){return client[_0x6862('0x11')](_0x7597e,_0x550183)[_0x6862('0x12')](function(_0x2adeed){logger[_0x6862('0x13')](_0x6862('0x14'),_0x36e278,_0x6862('0x15'));logger[_0x6862('0x16')](_0x6862('0x17'),_0x36e278,_0x6862('0x15'),JSON[_0x6862('0x18')](_0x2adeed));if(_0x2adeed[_0x6862('0x19')]){if(_0x2adeed['error'][_0x6862('0x1a')]===0x1f4){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x36e278,_0x2adeed[_0x6862('0x19')][_0x6862('0x1b')]);return _0xa3a9da(_0x2adeed[_0x6862('0x19')][_0x6862('0x1b')]);}logger[_0x6862('0x19')](_0x6862('0x14'),_0x36e278,_0x2adeed[_0x6862('0x19')][_0x6862('0x1b')]);return _0x4f4d08(_0x2adeed['error'][_0x6862('0x1b')]);}else{logger[_0x6862('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x36e278,'request\x20sent');_0x4f4d08(_0x2adeed[_0x6862('0x1c')]['message']);}})['catch'](function(_0x3e4ffc){logger['error'](_0x6862('0x14'),_0x36e278,_0x3e4ffc);_0xa3a9da(_0x3e4ffc);});});}exports[_0x6862('0x1d')]=function(_0x3ddc16){var _0x1bbe3f=this;return new Promise(function(_0x4a53bf,_0x438ff3){return db[_0x6862('0x1e')][_0x6862('0x1f')](_0x3ddc16[_0x6862('0x20')],{'raw':_0x3ddc16[_0x6862('0x21')]?_0x3ddc16[_0x6862('0x21')][_0x6862('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ddc16['options']?_0x3ddc16[_0x6862('0x21')]['where']||null:null,'attributes':_0x3ddc16[_0x6862('0x21')]?_0x3ddc16['options'][_0x6862('0x23')]||null:null,'limit':_0x3ddc16['options']?_0x3ddc16[_0x6862('0x21')]['limit']||null:null})['then'](function(_0x5da0f3){logger['info'](_0x6862('0x1d'),_0x3ddc16);logger['debug'](_0x6862('0x1d'),_0x3ddc16,JSON[_0x6862('0x18')](_0x5da0f3));_0x4a53bf(_0x5da0f3);})[_0x6862('0x24')](function(_0x371b80){logger[_0x6862('0x19')](_0x6862('0x1d'),_0x371b80[_0x6862('0x1b')],_0x3ddc16);_0x438ff3(_0x1bbe3f[_0x6862('0x19')](0x1f4,_0x371b80[_0x6862('0x1b')]));});});};exports[_0x6862('0x25')]=function(_0x25de5d){return new Promise(function(_0x3f945a,_0x5ace25){return db[_0x6862('0x1e')]['find']({'where':_0x25de5d['options']?_0x25de5d[_0x6862('0x21')]['where']||null:null})['then'](function(_0x24f8f7){if(_0x24f8f7){return _0x24f8f7['addTags'](_0x25de5d[_0x6862('0x20')][_0x6862('0x26')],_[_0x6862('0x27')](_0x25de5d['body'],[_0x6862('0x26'),'id'])||{});}})[_0x6862('0x28')](function(_0x4b20d2){logger[_0x6862('0x13')](_0x6862('0x29'),_0x25de5d);logger[_0x6862('0x16')](_0x6862('0x29'),_0x25de5d,JSON[_0x6862('0x18')](_0x4b20d2));_0x3f945a(_0x4b20d2);})[_0x6862('0x24')](function(_0x46d51b){logger['error'](_0x6862('0x29'),_0x46d51b[_0x6862('0x1b')],_0x25de5d);_0x5ace25(_this[_0x6862('0x19')](0x1f4,_0x46d51b[_0x6862('0x1b')]));});});};
\ No newline at end of file
+var _0xe402=['code','message','result','catch','SmsInteraction','update','body','options','raw','where','attributes','limit','UpdateSmsInteraction','AddTagsToSmsInteraction','addTags','ids','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x539678,_0x3025b1){var _0x422b92=function(_0x40a81c){while(--_0x40a81c){_0x539678['push'](_0x539678['shift']());}};_0x422b92(++_0x3025b1);}(_0xe402,0xe4));var _0x2e40=function(_0x202e2c,_0x20fdd3){_0x202e2c=_0x202e2c-0x0;var _0x3410d9=_0xe402[_0x202e2c];return _0x3410d9;};'use strict';var _=require(_0x2e40('0x0'));var util=require(_0x2e40('0x1'));var moment=require(_0x2e40('0x2'));var BPromise=require('bluebird');var rs=require(_0x2e40('0x3'));var fs=require('fs');var Redis=require(_0x2e40('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e40('0x5'));var logger=require('../../config/logger')(_0x2e40('0x6'));var config=require(_0x2e40('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2e40('0x8')][_0x2e40('0x9')]({'port':0x232a});config[_0x2e40('0xa')]=_[_0x2e40('0xb')](config['redis'],{'host':_0x2e40('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2e40('0xa')]));require(_0x2e40('0xd'))[_0x2e40('0xe')](socket);function respondWithRpcPromise(_0x2a5fea,_0x3141c3,_0x206809){return new BPromise(function(_0x281a8c,_0x29688f){return client[_0x2e40('0xf')](_0x2a5fea,_0x206809)[_0x2e40('0x10')](function(_0x39bc01){logger[_0x2e40('0x11')](_0x2e40('0x12'),_0x3141c3,_0x2e40('0x13'));logger[_0x2e40('0x14')](_0x2e40('0x15'),_0x3141c3,_0x2e40('0x13'),JSON[_0x2e40('0x16')](_0x39bc01));if(_0x39bc01[_0x2e40('0x17')]){if(_0x39bc01['error'][_0x2e40('0x18')]===0x1f4){logger[_0x2e40('0x17')](_0x2e40('0x12'),_0x3141c3,_0x39bc01[_0x2e40('0x17')]['message']);return _0x29688f(_0x39bc01[_0x2e40('0x17')]['message']);}logger[_0x2e40('0x17')]('SmsInteraction,\x20%s,\x20%s',_0x3141c3,_0x39bc01[_0x2e40('0x17')][_0x2e40('0x19')]);return _0x281a8c(_0x39bc01[_0x2e40('0x17')][_0x2e40('0x19')]);}else{logger[_0x2e40('0x11')]('SmsInteraction,\x20%s,\x20%s',_0x3141c3,_0x2e40('0x13'));_0x281a8c(_0x39bc01[_0x2e40('0x1a')]['message']);}})[_0x2e40('0x1b')](function(_0x1ae2fd){logger[_0x2e40('0x17')](_0x2e40('0x12'),_0x3141c3,_0x1ae2fd);_0x29688f(_0x1ae2fd);});});}exports['UpdateSmsInteraction']=function(_0x1c29f3){var _0x4a33f8=this;return new Promise(function(_0x4c5584,_0xc4801d){return db[_0x2e40('0x1c')][_0x2e40('0x1d')](_0x1c29f3[_0x2e40('0x1e')],{'raw':_0x1c29f3[_0x2e40('0x1f')]?_0x1c29f3[_0x2e40('0x1f')][_0x2e40('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c29f3[_0x2e40('0x1f')]?_0x1c29f3[_0x2e40('0x1f')][_0x2e40('0x21')]||null:null,'attributes':_0x1c29f3[_0x2e40('0x1f')]?_0x1c29f3[_0x2e40('0x1f')][_0x2e40('0x22')]||null:null,'limit':_0x1c29f3[_0x2e40('0x1f')]?_0x1c29f3[_0x2e40('0x1f')][_0x2e40('0x23')]||null:null})[_0x2e40('0x10')](function(_0x3527ab){logger[_0x2e40('0x11')]('UpdateSmsInteraction',_0x1c29f3);logger[_0x2e40('0x14')](_0x2e40('0x24'),_0x1c29f3,JSON[_0x2e40('0x16')](_0x3527ab));_0x4c5584(_0x3527ab);})[_0x2e40('0x1b')](function(_0x394a4e){logger[_0x2e40('0x17')](_0x2e40('0x24'),_0x394a4e['message'],_0x1c29f3);_0xc4801d(_0x4a33f8[_0x2e40('0x17')](0x1f4,_0x394a4e[_0x2e40('0x19')]));});});};exports[_0x2e40('0x25')]=function(_0x4c2f7e){return new Promise(function(_0x4540bc,_0x47ba62){return db[_0x2e40('0x1c')]['find']({'where':_0x4c2f7e[_0x2e40('0x1f')]?_0x4c2f7e[_0x2e40('0x1f')]['where']||null:null})[_0x2e40('0x10')](function(_0x1cd12d){if(_0x1cd12d){return _0x1cd12d[_0x2e40('0x26')](_0x4c2f7e[_0x2e40('0x1e')][_0x2e40('0x27')],_['omit'](_0x4c2f7e[_0x2e40('0x1e')],[_0x2e40('0x27'),'id'])||{});}})[_0x2e40('0x28')](function(_0x26fa4c){logger[_0x2e40('0x11')](_0x2e40('0x29'),_0x4c2f7e);logger[_0x2e40('0x14')](_0x2e40('0x29'),_0x4c2f7e,JSON[_0x2e40('0x16')](_0x26fa4c));_0x4540bc(_0x26fa4c);})[_0x2e40('0x1b')](function(_0x10d8e3){logger[_0x2e40('0x17')](_0x2e40('0x29'),_0x10d8e3[_0x2e40('0x19')],_0x4c2f7e);_0x47ba62(_this['error'](0x1f4,_0x10d8e3[_0x2e40('0x19')]));});});};
\ No newline at end of file
index 4d31c8c..079de2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf2d=['length','./smsInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x7025b0,_0x9533f1){var _0x6e444c=function(_0x258fe9){while(--_0x258fe9){_0x7025b0['push'](_0x7025b0['shift']());}};_0x6e444c(++_0x9533f1);}(_0xdf2d,0xe9));var _0xddf2=function(_0x20ea1f,_0x1a816a){_0x20ea1f=_0x20ea1f-0x0;var _0x8794b5=_0xdf2d[_0x20ea1f];return _0x8794b5;};'use strict';var SmsInteractionEvents=require(_0xddf2('0x0'));var events=[_0xddf2('0x1'),_0xddf2('0x2'),_0xddf2('0x3')];function createListener(_0x6604c4,_0xc39472){return function(_0x2aabc7){_0xc39472[_0xddf2('0x4')](_0x6604c4,_0x2aabc7);};}function removeListener(_0x59b1ef,_0x348849){return function(){SmsInteractionEvents[_0xddf2('0x5')](_0x59b1ef,_0x348849);};}exports[_0xddf2('0x6')]=function(_0x3bf7b8){for(var _0x130bc5=0x0,_0x25e25d=events[_0xddf2('0x7')];_0x130bc5<_0x25e25d;_0x130bc5++){var _0x403c76=events[_0x130bc5];var _0x36b773=createListener('smsInteraction:'+_0x403c76,_0x3bf7b8);SmsInteractionEvents['on'](_0x403c76,_0x36b773);}};
\ No newline at end of file
+var _0x65e8=['smsInteraction:','./smsInteraction.events','save','update','emit','removeListener','length'];(function(_0x33be12,_0x4aa30b){var _0x3395db=function(_0x5052f4){while(--_0x5052f4){_0x33be12['push'](_0x33be12['shift']());}};_0x3395db(++_0x4aa30b);}(_0x65e8,0x86));var _0x865e=function(_0x3918d5,_0x4b6a1f){_0x3918d5=_0x3918d5-0x0;var _0x286a3f=_0x65e8[_0x3918d5];return _0x286a3f;};'use strict';var SmsInteractionEvents=require(_0x865e('0x0'));var events=[_0x865e('0x1'),'remove',_0x865e('0x2')];function createListener(_0x2aedbe,_0x3a9183){return function(_0x5b7611){_0x3a9183[_0x865e('0x3')](_0x2aedbe,_0x5b7611);};}function removeListener(_0x339a54,_0x531195){return function(){SmsInteractionEvents[_0x865e('0x4')](_0x339a54,_0x531195);};}exports['register']=function(_0x5f2102){for(var _0x54defc=0x0,_0x9c673d=events[_0x865e('0x5')];_0x54defc<_0x9c673d;_0x54defc++){var _0x469d7d=events[_0x54defc];var _0x48bd38=createListener(_0x865e('0x6')+_0x469d7d,_0x5f2102);SmsInteractionEvents['on'](_0x469d7d,_0x48bd38);}};
\ No newline at end of file
index a485290..8b4d1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d87=['fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','sms','smsmessage:create','create','/:id/status','status','put','update','/:id/accept','reject','delete','/:id','destroy','exports','multer','util','Router'];(function(_0x8f7cb6,_0xf929c8){var _0xf4d3a1=function(_0x3e3d31){while(--_0x3e3d31){_0x8f7cb6['push'](_0x8f7cb6['shift']());}};_0xf4d3a1(++_0xf929c8);}(_0x2d87,0x84));var _0x72d8=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x2d87[_0x5b561d];return _0x431060;};'use strict';var multer=require(_0x72d8('0x0'));var util=require(_0x72d8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x72d8('0x2')]();var fs_extra=require(_0x72d8('0x3'));var auth=require(_0x72d8('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x72d8('0x5'));var controller=require(_0x72d8('0x6'));router[_0x72d8('0x7')]('/',auth[_0x72d8('0x8')](),controller[_0x72d8('0x9')]);router['get'](_0x72d8('0xa'),auth[_0x72d8('0x8')](),controller[_0x72d8('0xb')]);router[_0x72d8('0x7')]('/:id',auth[_0x72d8('0x8')](),controller['show']);router[_0x72d8('0xc')]('/',auth[_0x72d8('0x8')](),interaction[_0x72d8('0xd')](_0x72d8('0xe'),_0x72d8('0xf')),controller[_0x72d8('0x10')]);router['post'](_0x72d8('0x11'),controller[_0x72d8('0x12')]);router[_0x72d8('0x13')]('/:id',auth[_0x72d8('0x8')](),controller[_0x72d8('0x14')]);router['put'](_0x72d8('0x15'),auth[_0x72d8('0x8')](),controller['accept']);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0x72d8('0x16')]);router[_0x72d8('0x17')](_0x72d8('0x18'),auth[_0x72d8('0x8')](),controller[_0x72d8('0x19')]);module[_0x72d8('0x1a')]=router;
\ No newline at end of file
+var _0xd5c5=['put','update','accept','/:id/reject','delete','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','describe','/:id','post','tracked','sms','smsmessage:create','create','/:id/status','status'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0xd5c5,0x6d));var _0x5d5c=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0xd5c5[_0x1ae5ab];return _0x1ce001;};'use strict';var multer=require('multer');var util=require(_0x5d5c('0x0'));var path=require(_0x5d5c('0x1'));var timeout=require(_0x5d5c('0x2'));var express=require('express');var router=express[_0x5d5c('0x3')]();var fs_extra=require(_0x5d5c('0x4'));var auth=require(_0x5d5c('0x5'));var interaction=require(_0x5d5c('0x6'));var config=require(_0x5d5c('0x7'));var controller=require(_0x5d5c('0x8'));router[_0x5d5c('0x9')]('/',auth[_0x5d5c('0xa')](),controller[_0x5d5c('0xb')]);router[_0x5d5c('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x5d5c('0xc')]);router[_0x5d5c('0x9')](_0x5d5c('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x5d5c('0xe')]('/',auth[_0x5d5c('0xa')](),interaction[_0x5d5c('0xf')](_0x5d5c('0x10'),_0x5d5c('0x11')),controller[_0x5d5c('0x12')]);router[_0x5d5c('0xe')](_0x5d5c('0x13'),controller[_0x5d5c('0x14')]);router[_0x5d5c('0x15')]('/:id',auth[_0x5d5c('0xa')](),controller[_0x5d5c('0x16')]);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x5d5c('0x17')]);router['put'](_0x5d5c('0x18'),auth['isAuthenticated'](),controller['reject']);router[_0x5d5c('0x19')](_0x5d5c('0xd'),auth[_0x5d5c('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index be80bdb..bc01725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x808f=['BOOLEAN','ENUM','out','STRING','exports','TEXT'];(function(_0x1575a6,_0x3604bd){var _0x453352=function(_0x39c52b){while(--_0x39c52b){_0x1575a6['push'](_0x1575a6['shift']());}};_0x453352(++_0x3604bd);}(_0x808f,0x1ea));var _0xf808=function(_0x3ecbe3,_0x85040f){_0x3ecbe3=_0x3ecbe3-0x0;var _0x17435f=_0x808f[_0x3ecbe3];return _0x17435f;};'use strict';var Sequelize=require('sequelize');module[_0xf808('0x0')]={'body':{'type':Sequelize[_0xf808('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xf808('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf808('0x3')]('in','out'),'defaultValue':_0xf808('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xf808('0x5')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xf808('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf808('0x5')]},'providerResponse':{'type':Sequelize[_0xf808('0x1')]}};
\ No newline at end of file
+var _0x5ee2=['STRING','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x4adcc2,_0x587c91){var _0x55f111=function(_0x25495b){while(--_0x25495b){_0x4adcc2['push'](_0x4adcc2['shift']());}};_0x55f111(++_0x587c91);}(_0x5ee2,0x1b3));var _0x25ee=function(_0x2c9c4e,_0x1bdd68){_0x2c9c4e=_0x2c9c4e-0x0;var _0x2dff5f=_0x5ee2[_0x2c9c4e];return _0x2dff5f;};'use strict';var Sequelize=require('sequelize');module[_0x25ee('0x0')]={'body':{'type':Sequelize[_0x25ee('0x1')](_0x25ee('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x25ee('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x25ee('0x4')]('in',_0x25ee('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x25ee('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x25ee('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x25ee('0x6')]},'providerResponse':{'type':Sequelize[_0x25ee('0x1')]}};
\ No newline at end of file
index 040c49c..61614ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c6d=['keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','count','includeAll','rows','show','params','rawAttributes','include','find','create','body','update','describe','../../config/logger','sms-interactions','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','SmsInteractionId','isNil','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','interaction','stringify','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','internal','agent','manual','channel','event','EventManager','acceptmessage','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','contact','User','fullname','email','interface','SIP/%s','rejectmessage','SmsAccount','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','jayson/promise','client','http','request','info','request\x20sent','debug','error','message','SmsMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','then','destroy','stack','name','send','index','map','SmsMessage','fieldName','type','key','query'];(function(_0x4bca89,_0x53ebec){var _0x326078=function(_0x58cb44){while(--_0x58cb44){_0x4bca89['push'](_0x4bca89['shift']());}};_0x326078(++_0x53ebec);}(_0x4c6d,0x179));var _0xd4c6=function(_0x49756a,_0x2bc007){_0x49756a=_0x49756a-0x0;var _0x125085=_0x4c6d[_0x49756a];return _0x125085;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd4c6('0x0'));var zipdir=require(_0xd4c6('0x1'));var jsonpatch=require(_0xd4c6('0x2'));var rp=require(_0xd4c6('0x3'));var moment=require('moment');var BPromise=require(_0xd4c6('0x4'));var Mustache=require(_0xd4c6('0x5'));var util=require(_0xd4c6('0x6'));var path=require(_0xd4c6('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4c6('0x8'));var _=require('lodash');var squel=require(_0xd4c6('0x9'));var crypto=require(_0xd4c6('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd4c6('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd4c6('0xc'));var Papa=require('papaparse');var Redis=require(_0xd4c6('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd4c6('0xe'));var as=require(_0xd4c6('0xf'));var hardwareService=require(_0xd4c6('0x10'));var logger=require('../../config/logger')(_0xd4c6('0x11'));var utils=require('../../config/utils');var config=require(_0xd4c6('0x12'));var licenseUtil=require(_0xd4c6('0x13'));var db=require(_0xd4c6('0x14'))['db'];config[_0xd4c6('0x15')]=_['defaults'](config[_0xd4c6('0x15')],{'host':_0xd4c6('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsMessage.socket')[_0xd4c6('0x17')](socket);var jayson=require(_0xd4c6('0x18'));var client=jayson[_0xd4c6('0x19')][_0xd4c6('0x1a')]({'port':0x232c});var client9002=jayson[_0xd4c6('0x19')][_0xd4c6('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x57372e,_0x69f6d3,_0x4666ba,_0x1ada8c){return new BPromise(function(_0x249257,_0x3d1c29){var _0x3a0aa4=_0x1ada8c||client;return _0x3a0aa4[_0xd4c6('0x1b')](_0x57372e,_0x4666ba)['then'](function(_0x5775fe){logger[_0xd4c6('0x1c')]('SmsMessage,\x20%s,\x20%s',_0x69f6d3,_0xd4c6('0x1d'));logger[_0xd4c6('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x69f6d3,_0xd4c6('0x1d'),JSON['stringify'](_0x5775fe));if(_0x5775fe[_0xd4c6('0x1f')]){if(_0x5775fe[_0xd4c6('0x1f')]['code']===0x1f4){logger[_0xd4c6('0x1f')]('SmsMessage,\x20%s,\x20%s',_0x69f6d3,_0x5775fe['error'][_0xd4c6('0x20')]);return _0x3d1c29(_0x5775fe[_0xd4c6('0x1f')]['message']);}logger['error'](_0xd4c6('0x21'),_0x69f6d3,_0x5775fe[_0xd4c6('0x1f')][_0xd4c6('0x20')]);return _0x249257(_0x5775fe[_0xd4c6('0x1f')][_0xd4c6('0x20')]);}else{logger[_0xd4c6('0x1c')](_0xd4c6('0x21'),_0x69f6d3,_0xd4c6('0x1d'));_0x249257(_0x5775fe[_0xd4c6('0x22')]['message']);}})[_0xd4c6('0x23')](function(_0x3a36f7){logger[_0xd4c6('0x1f')]('SmsMessage,\x20%s,\x20%s',_0x69f6d3,_0x3a36f7);_0x3d1c29(_0x3a36f7);});});}function respondWithStatusCode(_0x44c818,_0x3f79b0){_0x3f79b0=_0x3f79b0||0xcc;return function(_0x3ab4ff){if(_0x3ab4ff){return _0x44c818[_0xd4c6('0x24')](_0x3f79b0);}return _0x44c818[_0xd4c6('0x25')](_0x3f79b0)[_0xd4c6('0x26')]();};}function respondWithResult(_0x442b7d,_0x20680c){_0x20680c=_0x20680c||0xc8;return function(_0x1f46a7){if(_0x1f46a7){return _0x442b7d[_0xd4c6('0x25')](_0x20680c)[_0xd4c6('0x27')](_0x1f46a7);}};}function respondWithFilteredResult(_0x1e9e9d,_0x18937a){return function(_0x52fce8){if(_0x52fce8){var _0x153d57=typeof _0x18937a[_0xd4c6('0x28')]==='undefined'&&typeof _0x18937a[_0xd4c6('0x29')]===_0xd4c6('0x2a');var _0x3f2955=_0x52fce8['count'];var _0x3f37bb=_0x153d57?0x0:_0x18937a[_0xd4c6('0x28')];var _0x476146=_0x153d57?_0x52fce8['count']:_0x18937a[_0xd4c6('0x28')]+_0x18937a[_0xd4c6('0x29')];var _0x895424;if(_0x476146>=_0x3f2955){_0x476146=_0x3f2955;_0x895424=0xc8;}else{_0x895424=0xce;}_0x1e9e9d['status'](_0x895424);return _0x1e9e9d[_0xd4c6('0x2b')]('Content-Range',_0x3f37bb+'-'+_0x476146+'/'+_0x3f2955)[_0xd4c6('0x27')](_0x52fce8);}return null;};}function patchUpdates(_0x591bcb){return function(_0x2a1b25){try{jsonpatch[_0xd4c6('0x2c')](_0x2a1b25,_0x591bcb,!![]);}catch(_0x4439ed){return BPromise[_0xd4c6('0x2d')](_0x4439ed);}return _0x2a1b25['save']();};}function saveUpdates(_0x38e64c,_0x4703d3){return function(_0x38b542){if(_0x38b542){return _0x38b542['update'](_0x38e64c)[_0xd4c6('0x2e')](function(_0x3b962b){return _0x3b962b;});}return null;};}function removeEntity(_0x57e3c9,_0x74d93c){return function(_0x520758){if(_0x520758){return _0x520758[_0xd4c6('0x2f')]()[_0xd4c6('0x2e')](function(){_0x57e3c9['status'](0xcc)[_0xd4c6('0x26')]();});}};}function handleEntityNotFound(_0xf2ab20,_0x22b8eb){return function(_0x5622e6){if(!_0x5622e6){_0xf2ab20[_0xd4c6('0x24')](0x194);}return _0x5622e6;};}function handleError(_0x32865a,_0x5c1ef4){_0x5c1ef4=_0x5c1ef4||0x1f4;return function(_0x1afddb){logger[_0xd4c6('0x1f')](_0x1afddb[_0xd4c6('0x30')]);if(_0x1afddb[_0xd4c6('0x31')]){delete _0x1afddb['name'];}_0x32865a[_0xd4c6('0x25')](_0x5c1ef4)[_0xd4c6('0x32')](_0x1afddb);};}exports[_0xd4c6('0x33')]=function(_0x3f753a,_0x1f8649){var _0x2f17b1={},_0x461f60={},_0xb5f887={'count':0x0,'rows':[]};var _0x20448a=_[_0xd4c6('0x34')](db[_0xd4c6('0x35')]['rawAttributes'],function(_0x17e6ee){return{'name':_0x17e6ee[_0xd4c6('0x36')],'type':_0x17e6ee[_0xd4c6('0x37')][_0xd4c6('0x38')]};});_0x461f60['model']=_[_0xd4c6('0x34')](_0x20448a,_0xd4c6('0x31'));_0x461f60[_0xd4c6('0x39')]=_[_0xd4c6('0x3a')](_0x3f753a[_0xd4c6('0x39')]);_0x461f60[_0xd4c6('0x3b')]=_[_0xd4c6('0x3c')](_0x461f60[_0xd4c6('0x3d')],_0x461f60[_0xd4c6('0x39')]);_0x2f17b1['attributes']=_[_0xd4c6('0x3c')](_0x461f60['model'],qs[_0xd4c6('0x3e')](_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x3e')]));_0x2f17b1[_0xd4c6('0x3f')]=_0x2f17b1[_0xd4c6('0x3f')][_0xd4c6('0x40')]?_0x2f17b1['attributes']:_0x461f60[_0xd4c6('0x3d')];if(!_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x41')](_0xd4c6('0x42'))){_0x2f17b1['limit']=qs['limit'](_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x29')]);_0x2f17b1[_0xd4c6('0x28')]=qs[_0xd4c6('0x28')](_0x3f753a['query'][_0xd4c6('0x28')]);}_0x2f17b1[_0xd4c6('0x43')]=qs[_0xd4c6('0x44')](_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x44')]);_0x2f17b1['where']=qs[_0xd4c6('0x3b')](_['pick'](_0x3f753a['query'],_0x461f60[_0xd4c6('0x3b')]),_0x20448a);if(_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x45')]){_0x2f17b1[_0xd4c6('0x46')]=_[_0xd4c6('0x47')](_0x2f17b1['where'],{'$or':_[_0xd4c6('0x34')](_0x20448a,function(_0x2c7851){if(_0x2c7851[_0xd4c6('0x37')]!==_0xd4c6('0x48')){var _0x44aab3={};_0x44aab3[_0x2c7851['name']]={'$like':'%'+_0x3f753a[_0xd4c6('0x39')]['filter']+'%'};return _0x44aab3;}})});}_0x2f17b1=_['merge']({},_0x2f17b1,_0x3f753a[_0xd4c6('0x49')]);var _0x364942={'where':_0x2f17b1[_0xd4c6('0x46')]};return db[_0xd4c6('0x35')][_0xd4c6('0x4a')](_0x364942)[_0xd4c6('0x2e')](function(_0x1b04df){_0xb5f887[_0xd4c6('0x4a')]=_0x1b04df;if(_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x4b')]){_0x2f17b1['include']=[{'all':!![]}];}return db[_0xd4c6('0x35')]['findAll'](_0x2f17b1);})['then'](function(_0x1b7a63){_0xb5f887[_0xd4c6('0x4c')]=_0x1b7a63;return _0xb5f887;})['then'](respondWithFilteredResult(_0x1f8649,_0x2f17b1))[_0xd4c6('0x23')](handleError(_0x1f8649,null));};exports[_0xd4c6('0x4d')]=function(_0x2bbba0,_0x282932){var _0x450ae0={'raw':!![],'where':{'id':_0x2bbba0[_0xd4c6('0x4e')]['id']}},_0x2c1013={};_0x2c1013[_0xd4c6('0x3d')]=_[_0xd4c6('0x3a')](db[_0xd4c6('0x35')][_0xd4c6('0x4f')]);_0x2c1013['query']=_[_0xd4c6('0x3a')](_0x2bbba0[_0xd4c6('0x39')]);_0x2c1013['filters']=_['intersection'](_0x2c1013[_0xd4c6('0x3d')],_0x2c1013['query']);_0x450ae0[_0xd4c6('0x3f')]=_[_0xd4c6('0x3c')](_0x2c1013['model'],qs[_0xd4c6('0x3e')](_0x2bbba0[_0xd4c6('0x39')]['fields']));_0x450ae0[_0xd4c6('0x3f')]=_0x450ae0[_0xd4c6('0x3f')][_0xd4c6('0x40')]?_0x450ae0['attributes']:_0x2c1013['model'];if(_0x2bbba0[_0xd4c6('0x39')][_0xd4c6('0x4b')]){_0x450ae0[_0xd4c6('0x50')]=[{'all':!![]}];}_0x450ae0=_['merge']({},_0x450ae0,_0x2bbba0[_0xd4c6('0x49')]);return db[_0xd4c6('0x35')][_0xd4c6('0x51')](_0x450ae0)['then'](handleEntityNotFound(_0x282932,null))[_0xd4c6('0x2e')](respondWithResult(_0x282932,null))[_0xd4c6('0x23')](handleError(_0x282932,null));};exports[_0xd4c6('0x52')]=function(_0x11fb95,_0x805e70){return db[_0xd4c6('0x35')][_0xd4c6('0x52')](_0x11fb95[_0xd4c6('0x53')],{})[_0xd4c6('0x2e')](respondWithResult(_0x805e70,0xc9))[_0xd4c6('0x23')](handleError(_0x805e70,null));};exports[_0xd4c6('0x54')]=function(_0x57dcdd,_0x2cefd2){if(_0x57dcdd[_0xd4c6('0x53')]['id']){delete _0x57dcdd[_0xd4c6('0x53')]['id'];}return db[_0xd4c6('0x35')][_0xd4c6('0x51')]({'where':{'id':_0x57dcdd[_0xd4c6('0x4e')]['id']}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x2cefd2,null))['then'](saveUpdates(_0x57dcdd[_0xd4c6('0x53')],null))['then'](respondWithResult(_0x2cefd2,null))[_0xd4c6('0x23')](handleError(_0x2cefd2,null));};exports[_0xd4c6('0x2f')]=function(_0x125472,_0x4f3589){return db['SmsMessage'][_0xd4c6('0x51')]({'where':{'id':_0x125472[_0xd4c6('0x4e')]['id']}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x4f3589,null))['then'](removeEntity(_0x4f3589,null))[_0xd4c6('0x23')](handleError(_0x4f3589,null));};exports['describe']=function(_0x3bf10a,_0x339eca){return db[_0xd4c6('0x35')][_0xd4c6('0x55')]()[_0xd4c6('0x2e')](respondWithResult(_0x339eca,null))[_0xd4c6('0x23')](handleError(_0x339eca,null));};var interaction_log=require(_0xd4c6('0x56'))(_0xd4c6('0x57'));exports['accept']=function(_0xe4c97,_0x36f95d,_0x214063){var _0x1329ff={'agent':{},'channel':_0xd4c6('0x58')};if(_0xe4c97[_0xd4c6('0x53')]['id']){delete _0xe4c97['body']['id'];}_0xe4c97['body'][_0xd4c6('0x59')]=!![];_0xe4c97[_0xd4c6('0x53')]['readAt']=moment()[_0xd4c6('0x5a')](_0xd4c6('0x5b'));_0xe4c97['body'][_0xd4c6('0x5c')]=_0xe4c97[_0xd4c6('0x53')][_0xd4c6('0x5c')]||_0xe4c97['user']['id'];_0x1329ff['agent']['id']=_0xe4c97['body'][_0xd4c6('0x5c')];return db['SmsMessage']['find']({'where':{'id':_0xe4c97[_0xd4c6('0x4e')]['id'],'UserId':null}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x36f95d,null))[_0xd4c6('0x2e')](saveUpdates(_0xe4c97[_0xd4c6('0x53')],null))[_0xd4c6('0x2e')](function(_0x252a3d){if(_0x252a3d){_0x1329ff[_0xd4c6('0x20')]=_0x252a3d[_0xd4c6('0x5d')]({'plain':!![]});return db['SmsInteraction'][_0xd4c6('0x51')]({'where':{'id':_0x252a3d[_0xd4c6('0x5e')]}});}return null;})[_0xd4c6('0x2e')](handleEntityNotFound(_0x36f95d,null))['then'](function(_0x51d225){if(_0x51d225){return _0x51d225[_0xd4c6('0x54')]({'UserId':_0xe4c97[_0xd4c6('0x53')]['UserId'],'read1stAt':_[_0xd4c6('0x5f')](_0x51d225['read1stAt'])?moment()[_0xd4c6('0x5a')](_0xd4c6('0x5b')):undefined});}return null;})['then'](function(_0x51d9e6){if(_0x51d9e6){_0x1329ff['interaction']=_0x51d9e6[_0xd4c6('0x5d')]({'plain':!![]});interaction_log[_0xd4c6('0x1c')](_0xd4c6('0x60'),_0xe4c97[_0xd4c6('0x61')]['id'],_0xe4c97['user'][_0xd4c6('0x31')],_0xe4c97[_0xd4c6('0x61')]['role'],_0x1329ff[_0xd4c6('0x62')]['id'],_0xe4c97[_0xd4c6('0x53')]?JSON[_0xd4c6('0x63')](_0xe4c97['body']):'null');return respondWithRpcPromise(_0xd4c6('0x64'),_0xd4c6('0x65'),_0x1329ff);}return null;})['then'](function(_0x36d971){var _0x59ae19=_0xd4c6('0x66')+_0x36d971['message'][_0xd4c6('0x67')];return db['sequelize'][_0xd4c6('0x39')](_0x59ae19,{'type':db[_0xd4c6('0x68')][_0xd4c6('0x69')][_0xd4c6('0x6a')],'raw':!![]})[_0xd4c6('0x2e')](function(_0x3d4734){return _0x3d4734;});})['then'](function(_0x2d3be2){if(_0x2d3be2){_0x1329ff['message']['contact']=_0x2d3be2[0x0];if(!_0xe4c97['body'][_0xd4c6('0x5c')])return;return db['User'][_0xd4c6('0x51')]({'where':{'id':_0xe4c97['body'][_0xd4c6('0x5c')],'role':'agent'},'attributes':['id','name','fullname','email',_0xd4c6('0x6b')],'raw':!![]});}return null;})[_0xd4c6('0x2e')](function(_0x51ca8f){if(!_0x51ca8f)return null;_0x1329ff[_0xd4c6('0x20')][_0xd4c6('0x6c')]=_0x51ca8f;return _0x1329ff;})['then'](function(_0x579c19){if(_0x579c19){if(_0xe4c97[_0xd4c6('0x53')][_0xd4c6('0x6d')]){_0x1329ff[_0xd4c6('0x20')]['interface']=util[_0xd4c6('0x5a')]('SIP/%s',_0xe4c97[_0xd4c6('0x61')][_0xd4c6('0x31')]);_0x1329ff['message']['channel']=_0x1329ff[_0xd4c6('0x6e')];_0x1329ff[_0xd4c6('0x20')][_0xd4c6('0x6f')]='accept';return respondWithRpcPromise(_0xd4c6('0x70'),_0xd4c6('0x70'),{'event':_0xd4c6('0x71'),'message':_0x1329ff['message']},client9002)[_0xd4c6('0x2e')](function(){return _0x1329ff;});}return _0x1329ff;}return null;})[_0xd4c6('0x2e')](respondWithResult(_0x36f95d,null))[_0xd4c6('0x23')](handleError(_0x36f95d,null));};var interaction_log=require(_0xd4c6('0x56'))(_0xd4c6('0x57'));exports[_0xd4c6('0x2d')]=function(_0x454efe,_0x13469d,_0x13fe56){var _0x4022a9={'agent':{},'channel':_0xd4c6('0x58')};if(_0x454efe[_0xd4c6('0x53')]['id']){delete _0x454efe[_0xd4c6('0x53')]['id'];}_0x454efe['body'][_0xd4c6('0x5c')]=_0x454efe[_0xd4c6('0x53')][_0xd4c6('0x5c')]||_0x454efe[_0xd4c6('0x61')]['id'];_0x4022a9[_0xd4c6('0x6c')]['id']=_0x454efe[_0xd4c6('0x53')][_0xd4c6('0x5c')];return db[_0xd4c6('0x35')][_0xd4c6('0x51')]({'where':{'id':_0x454efe[_0xd4c6('0x4e')]['id'],'UserId':null}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x13469d,null))[_0xd4c6('0x2e')](function(_0x2ee783){if(_0x2ee783){_0x4022a9[_0xd4c6('0x20')]=_0x2ee783['get']({'plain':!![]});return db[_0xd4c6('0x72')]['find']({'where':{'id':_0x2ee783[_0xd4c6('0x5e')]}});}return null;})[_0xd4c6('0x2e')](handleEntityNotFound(_0x13469d,null))[_0xd4c6('0x2e')](function(_0x3ae76e){if(_0x3ae76e){_0x4022a9[_0xd4c6('0x62')]=_0x3ae76e['get']({'plain':!![]});interaction_log[_0xd4c6('0x1c')](_0xd4c6('0x73'),_0x454efe[_0xd4c6('0x61')]['id'],_0x454efe[_0xd4c6('0x61')][_0xd4c6('0x31')],_0x454efe[_0xd4c6('0x61')][_0xd4c6('0x74')],_0x4022a9[_0xd4c6('0x62')]['id'],_0x454efe[_0xd4c6('0x53')]?JSON[_0xd4c6('0x63')](_0x454efe[_0xd4c6('0x53')]):_0xd4c6('0x75'));return respondWithRpcPromise(_0xd4c6('0x76'),_0xd4c6('0x77'),_0x4022a9);}return null;})['then'](function(_0x4528f1){var _0x3aa2df='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4528f1[_0xd4c6('0x20')][_0xd4c6('0x67')];return db['sequelize'][_0xd4c6('0x39')](_0x3aa2df,{'type':db['Sequelize'][_0xd4c6('0x69')][_0xd4c6('0x6a')],'raw':!![]})['then'](function(_0xbd4687){return _0xbd4687;});})[_0xd4c6('0x2e')](function(_0x44e8f1){if(_0x44e8f1){_0x4022a9[_0xd4c6('0x20')][_0xd4c6('0x78')]=_0x44e8f1[0x0];if(!_0x454efe[_0xd4c6('0x53')]['UserId'])return;return db[_0xd4c6('0x79')][_0xd4c6('0x51')]({'where':{'id':_0x454efe[_0xd4c6('0x53')]['UserId'],'role':'agent'},'attributes':['id',_0xd4c6('0x31'),_0xd4c6('0x7a'),_0xd4c6('0x7b'),_0xd4c6('0x6b')],'raw':!![]});}return null;})['then'](function(_0x8fabe7){if(!_0x8fabe7)return null;_0x4022a9[_0xd4c6('0x20')][_0xd4c6('0x6c')]=_0x8fabe7;return _0x4022a9;})[_0xd4c6('0x2e')](function(_0x5a8890){if(_0x5a8890){_0x5a8890[_0xd4c6('0x20')][_0xd4c6('0x7c')]=util['format'](_0xd4c6('0x7d'),_0x454efe[_0xd4c6('0x61')][_0xd4c6('0x31')]);_0x5a8890[_0xd4c6('0x20')][_0xd4c6('0x6e')]=_0x4022a9[_0xd4c6('0x6e')];_0x5a8890['message'][_0xd4c6('0x6f')]=_0xd4c6('0x2d');respondWithRpcPromise('EventManager',_0xd4c6('0x70'),{'event':_0xd4c6('0x7e'),'message':_0x5a8890[_0xd4c6('0x20')]},client9002);return _0x4022a9;}return null;})[_0xd4c6('0x2e')](respondWithResult(_0x13469d,null))['catch'](handleError(_0x13469d,null));};exports[_0xd4c6('0x25')]=function(_0x3bcbe0,_0x54581d,_0x55a595){if(_0x3bcbe0['body']['id']){delete _0x3bcbe0[_0xd4c6('0x53')]['id'];}var _0x5cb533;return db['SmsMessage']['find']({'where':{'id':_0x3bcbe0[_0xd4c6('0x4e')]['id']}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x54581d,null))[_0xd4c6('0x2e')](function(_0x81b8fa){if(_0x81b8fa){_0x5cb533=_0x81b8fa;return db[_0xd4c6('0x7f')][_0xd4c6('0x51')]({'where':{'id':_0x81b8fa['SmsAccountId']}});}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x54581d,null))[_0xd4c6('0x2e')](function(_0xce7588){if(_0xce7588){logger[_0xd4c6('0x1e')](_0xd4c6('0x80'),_0xd4c6('0x25'),_0xd4c6('0x81'),_0xce7588[_0xd4c6('0x37')],util['inspect'](_0x3bcbe0[_0xd4c6('0x53')],{'showHidden':![],'depth':null}));switch(_0xce7588[_0xd4c6('0x37')]){case _0xd4c6('0x82'):if(_0x3bcbe0[_0xd4c6('0x53')]['MessageSid']&&_0x3bcbe0['body']['MessageSid']===_0x5cb533[_0xd4c6('0x83')]){return _0x5cb533[_0xd4c6('0x54')]({'read':!![]});}else{logger[_0xd4c6('0x1f')](_0xd4c6('0x84'),_0xd4c6('0x25'),_0xd4c6('0x82'),util[_0xd4c6('0x85')](_0x3bcbe0['body'],{'showHidden':![],'depth':null}));}break;case _0xd4c6('0x86'):if(_0x3bcbe0[_0xd4c6('0x53')][_0xd4c6('0x87')]&&_0x3bcbe0[_0xd4c6('0x53')]['MessageUUID']===_0x5cb533[_0xd4c6('0x83')]&&_[_0xd4c6('0x88')]([_0xd4c6('0x89'),_0xd4c6('0x8a')],_0x3bcbe0[_0xd4c6('0x53')][_0xd4c6('0x8b')])>=0x0){return _0x5cb533['update']({'read':!![]});}else{logger[_0xd4c6('0x1f')](_0xd4c6('0x84'),_0xd4c6('0x25'),_0xd4c6('0x8c'),util[_0xd4c6('0x85')](_0x3bcbe0['body'],{'showHidden':![],'depth':null}));}break;case _0xd4c6('0x8d'):var _0x26ac6f=_0x3bcbe0[_0xd4c6('0x53')][_0xd4c6('0x8e')][0x0];if(_0x26ac6f[_0xd4c6('0x25')][_0xd4c6('0x8f')]===_0xd4c6('0x90')){return _0x5cb533[_0xd4c6('0x54')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd4c6('0x8d'),util[_0xd4c6('0x85')](_0x3bcbe0[_0xd4c6('0x53')],{'showHidden':![],'depth':null}));}break;}return _0x5cb533;}})[_0xd4c6('0x2e')](respondWithResult(_0x54581d,null))['catch'](handleError(_0x54581d,null));};
\ No newline at end of file
+var _0x8a76=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','SmsMessage','includeAll','include','findAll','rows','show','params','find','create','body','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','UserId','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','reject','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','rejectmessage','SmsAccountId','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageUUID','indexOf','delivered','SmsAccount,\x20%s,\x20%s,\x20%s','infobip','results','groupName','DELIVERED','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','./smsMessage.socket','client','http','request','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','end','json','count','offset','limit','Content-Range','apply','save','update','destroy','then','sendStatus','stack','name','send','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8a76,0x17e));var _0x68a7=function(_0x3c3b14,_0x1a06c3){_0x3c3b14=_0x3c3b14-0x0;var _0x449c3c=_0x8a76[_0x3c3b14];return _0x449c3c;};'use strict';var emlformat=require(_0x68a7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x68a7('0x1'));var jsonpatch=require(_0x68a7('0x2'));var rp=require(_0x68a7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x68a7('0x4'));var util=require(_0x68a7('0x5'));var path=require(_0x68a7('0x6'));var sox=require(_0x68a7('0x7'));var csv=require(_0x68a7('0x8'));var ejs=require(_0x68a7('0x9'));var fs=require('fs');var fs_extra=require(_0x68a7('0xa'));var _=require(_0x68a7('0xb'));var squel=require(_0x68a7('0xc'));var crypto=require('crypto');var jsforce=require(_0x68a7('0xd'));var deskjs=require(_0x68a7('0xe'));var toCsv=require(_0x68a7('0x8'));var querystring=require(_0x68a7('0xf'));var Papa=require(_0x68a7('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x68a7('0x11'));var as=require(_0x68a7('0x12'));var hardwareService=require(_0x68a7('0x13'));var logger=require(_0x68a7('0x14'))('api');var utils=require(_0x68a7('0x15'));var config=require(_0x68a7('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x68a7('0x17'))['db'];config[_0x68a7('0x18')]=_['defaults'](config[_0x68a7('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x68a7('0x18')]));require(_0x68a7('0x19'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x68a7('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0x68a7('0x1a')][_0x68a7('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x26b065,_0x3f617a,_0x370df0,_0x24c8cf){return new BPromise(function(_0x3aa110,_0x1064ba){var _0x34b107=_0x24c8cf||client;return _0x34b107[_0x68a7('0x1c')](_0x26b065,_0x370df0)['then'](function(_0x1a75ad){logger['info'](_0x68a7('0x1d'),_0x3f617a,_0x68a7('0x1e'));logger['debug'](_0x68a7('0x1f'),_0x3f617a,_0x68a7('0x1e'),JSON[_0x68a7('0x20')](_0x1a75ad));if(_0x1a75ad[_0x68a7('0x21')]){if(_0x1a75ad['error'][_0x68a7('0x22')]===0x1f4){logger[_0x68a7('0x21')](_0x68a7('0x1d'),_0x3f617a,_0x1a75ad[_0x68a7('0x21')][_0x68a7('0x23')]);return _0x1064ba(_0x1a75ad[_0x68a7('0x21')][_0x68a7('0x23')]);}logger[_0x68a7('0x21')]('SmsMessage,\x20%s,\x20%s',_0x3f617a,_0x1a75ad[_0x68a7('0x21')][_0x68a7('0x23')]);return _0x3aa110(_0x1a75ad['error'][_0x68a7('0x23')]);}else{logger[_0x68a7('0x24')](_0x68a7('0x1d'),_0x3f617a,_0x68a7('0x1e'));_0x3aa110(_0x1a75ad[_0x68a7('0x25')][_0x68a7('0x23')]);}})[_0x68a7('0x26')](function(_0x28aa9d){logger[_0x68a7('0x21')]('SmsMessage,\x20%s,\x20%s',_0x3f617a,_0x28aa9d);_0x1064ba(_0x28aa9d);});});}function respondWithStatusCode(_0x2b910a,_0x377288){_0x377288=_0x377288||0xcc;return function(_0x303ea8){if(_0x303ea8){return _0x2b910a['sendStatus'](_0x377288);}return _0x2b910a[_0x68a7('0x27')](_0x377288)[_0x68a7('0x28')]();};}function respondWithResult(_0x27e8a6,_0x2930d5){_0x2930d5=_0x2930d5||0xc8;return function(_0x24500a){if(_0x24500a){return _0x27e8a6['status'](_0x2930d5)[_0x68a7('0x29')](_0x24500a);}};}function respondWithFilteredResult(_0x3a476e,_0x577585){return function(_0x281bd6){if(_0x281bd6){var _0x4693bc=typeof _0x577585['offset']==='undefined'&&typeof _0x577585['limit']==='undefined';var _0x5691b1=_0x281bd6[_0x68a7('0x2a')];var _0x5ceaff=_0x4693bc?0x0:_0x577585[_0x68a7('0x2b')];var _0x3f3cf6=_0x4693bc?_0x281bd6[_0x68a7('0x2a')]:_0x577585[_0x68a7('0x2b')]+_0x577585[_0x68a7('0x2c')];var _0x28494d;if(_0x3f3cf6>=_0x5691b1){_0x3f3cf6=_0x5691b1;_0x28494d=0xc8;}else{_0x28494d=0xce;}_0x3a476e[_0x68a7('0x27')](_0x28494d);return _0x3a476e['set'](_0x68a7('0x2d'),_0x5ceaff+'-'+_0x3f3cf6+'/'+_0x5691b1)['json'](_0x281bd6);}return null;};}function patchUpdates(_0x48e485){return function(_0xe81d85){try{jsonpatch[_0x68a7('0x2e')](_0xe81d85,_0x48e485,!![]);}catch(_0x4e0196){return BPromise['reject'](_0x4e0196);}return _0xe81d85[_0x68a7('0x2f')]();};}function saveUpdates(_0x2d758a,_0x369663){return function(_0x2bfe5d){if(_0x2bfe5d){return _0x2bfe5d[_0x68a7('0x30')](_0x2d758a)['then'](function(_0x540ca1){return _0x540ca1;});}return null;};}function removeEntity(_0x5c0c54,_0x2e54e0){return function(_0xaced2f){if(_0xaced2f){return _0xaced2f[_0x68a7('0x31')]()[_0x68a7('0x32')](function(){_0x5c0c54[_0x68a7('0x27')](0xcc)[_0x68a7('0x28')]();});}};}function handleEntityNotFound(_0x167ebf,_0x417771){return function(_0x3ee0e4){if(!_0x3ee0e4){_0x167ebf[_0x68a7('0x33')](0x194);}return _0x3ee0e4;};}function handleError(_0x577d6b,_0x23ceeb){_0x23ceeb=_0x23ceeb||0x1f4;return function(_0x280fe4){logger[_0x68a7('0x21')](_0x280fe4[_0x68a7('0x34')]);if(_0x280fe4[_0x68a7('0x35')]){delete _0x280fe4[_0x68a7('0x35')];}_0x577d6b[_0x68a7('0x27')](_0x23ceeb)[_0x68a7('0x36')](_0x280fe4);};}exports[_0x68a7('0x37')]=function(_0x267c94,_0x313947){var _0x2af9c1={},_0x24bf67={},_0x2c7020={'count':0x0,'rows':[]};var _0x244a6c=_[_0x68a7('0x38')](db['SmsMessage'][_0x68a7('0x39')],function(_0x115198){return{'name':_0x115198[_0x68a7('0x3a')],'type':_0x115198[_0x68a7('0x3b')][_0x68a7('0x3c')]};});_0x24bf67[_0x68a7('0x3d')]=_['map'](_0x244a6c,'name');_0x24bf67[_0x68a7('0x3e')]=_[_0x68a7('0x3f')](_0x267c94[_0x68a7('0x3e')]);_0x24bf67[_0x68a7('0x40')]=_[_0x68a7('0x41')](_0x24bf67[_0x68a7('0x3d')],_0x24bf67['query']);_0x2af9c1[_0x68a7('0x42')]=_[_0x68a7('0x41')](_0x24bf67[_0x68a7('0x3d')],qs[_0x68a7('0x43')](_0x267c94['query'][_0x68a7('0x43')]));_0x2af9c1[_0x68a7('0x42')]=_0x2af9c1[_0x68a7('0x42')][_0x68a7('0x44')]?_0x2af9c1[_0x68a7('0x42')]:_0x24bf67['model'];if(!_0x267c94['query']['hasOwnProperty'](_0x68a7('0x45'))){_0x2af9c1['limit']=qs['limit'](_0x267c94[_0x68a7('0x3e')][_0x68a7('0x2c')]);_0x2af9c1['offset']=qs[_0x68a7('0x2b')](_0x267c94[_0x68a7('0x3e')]['offset']);}_0x2af9c1[_0x68a7('0x46')]=qs[_0x68a7('0x47')](_0x267c94[_0x68a7('0x3e')]['sort']);_0x2af9c1[_0x68a7('0x48')]=qs[_0x68a7('0x40')](_['pick'](_0x267c94[_0x68a7('0x3e')],_0x24bf67[_0x68a7('0x40')]),_0x244a6c);if(_0x267c94[_0x68a7('0x3e')][_0x68a7('0x49')]){_0x2af9c1['where']=_[_0x68a7('0x4a')](_0x2af9c1[_0x68a7('0x48')],{'$or':_[_0x68a7('0x38')](_0x244a6c,function(_0x5d7168){if(_0x5d7168[_0x68a7('0x3b')]!=='VIRTUAL'){var _0x55bb10={};_0x55bb10[_0x5d7168[_0x68a7('0x35')]]={'$like':'%'+_0x267c94[_0x68a7('0x3e')][_0x68a7('0x49')]+'%'};return _0x55bb10;}})});}_0x2af9c1=_[_0x68a7('0x4a')]({},_0x2af9c1,_0x267c94[_0x68a7('0x4b')]);var _0x6f98e3={'where':_0x2af9c1[_0x68a7('0x48')]};return db[_0x68a7('0x4c')]['count'](_0x6f98e3)[_0x68a7('0x32')](function(_0x429bb3){_0x2c7020[_0x68a7('0x2a')]=_0x429bb3;if(_0x267c94['query'][_0x68a7('0x4d')]){_0x2af9c1[_0x68a7('0x4e')]=[{'all':!![]}];}return db[_0x68a7('0x4c')][_0x68a7('0x4f')](_0x2af9c1);})[_0x68a7('0x32')](function(_0x1ee4a4){_0x2c7020[_0x68a7('0x50')]=_0x1ee4a4;return _0x2c7020;})[_0x68a7('0x32')](respondWithFilteredResult(_0x313947,_0x2af9c1))[_0x68a7('0x26')](handleError(_0x313947,null));};exports[_0x68a7('0x51')]=function(_0x12b065,_0x162016){var _0x2d6a4b={'raw':!![],'where':{'id':_0x12b065[_0x68a7('0x52')]['id']}},_0x3d21fd={};_0x3d21fd[_0x68a7('0x3d')]=_[_0x68a7('0x3f')](db['SmsMessage']['rawAttributes']);_0x3d21fd[_0x68a7('0x3e')]=_[_0x68a7('0x3f')](_0x12b065[_0x68a7('0x3e')]);_0x3d21fd[_0x68a7('0x40')]=_[_0x68a7('0x41')](_0x3d21fd[_0x68a7('0x3d')],_0x3d21fd[_0x68a7('0x3e')]);_0x2d6a4b[_0x68a7('0x42')]=_['intersection'](_0x3d21fd['model'],qs['fields'](_0x12b065['query']['fields']));_0x2d6a4b[_0x68a7('0x42')]=_0x2d6a4b[_0x68a7('0x42')][_0x68a7('0x44')]?_0x2d6a4b[_0x68a7('0x42')]:_0x3d21fd['model'];if(_0x12b065[_0x68a7('0x3e')][_0x68a7('0x4d')]){_0x2d6a4b[_0x68a7('0x4e')]=[{'all':!![]}];}_0x2d6a4b=_['merge']({},_0x2d6a4b,_0x12b065[_0x68a7('0x4b')]);return db[_0x68a7('0x4c')][_0x68a7('0x53')](_0x2d6a4b)['then'](handleEntityNotFound(_0x162016,null))[_0x68a7('0x32')](respondWithResult(_0x162016,null))[_0x68a7('0x26')](handleError(_0x162016,null));};exports['create']=function(_0x2a5d38,_0x5cc5fc){return db[_0x68a7('0x4c')][_0x68a7('0x54')](_0x2a5d38[_0x68a7('0x55')],{})[_0x68a7('0x32')](respondWithResult(_0x5cc5fc,0xc9))['catch'](handleError(_0x5cc5fc,null));};exports[_0x68a7('0x30')]=function(_0x4878fb,_0x459f9a){if(_0x4878fb[_0x68a7('0x55')]['id']){delete _0x4878fb['body']['id'];}return db[_0x68a7('0x4c')][_0x68a7('0x53')]({'where':{'id':_0x4878fb[_0x68a7('0x52')]['id']}})[_0x68a7('0x32')](handleEntityNotFound(_0x459f9a,null))[_0x68a7('0x32')](saveUpdates(_0x4878fb['body'],null))[_0x68a7('0x32')](respondWithResult(_0x459f9a,null))[_0x68a7('0x26')](handleError(_0x459f9a,null));};exports[_0x68a7('0x31')]=function(_0x3a8e3a,_0x5455db){return db[_0x68a7('0x4c')]['find']({'where':{'id':_0x3a8e3a[_0x68a7('0x52')]['id']}})[_0x68a7('0x32')](handleEntityNotFound(_0x5455db,null))[_0x68a7('0x32')](removeEntity(_0x5455db,null))[_0x68a7('0x26')](handleError(_0x5455db,null));};exports['describe']=function(_0x121413,_0x42812d){return db[_0x68a7('0x4c')][_0x68a7('0x56')]()[_0x68a7('0x32')](respondWithResult(_0x42812d,null))[_0x68a7('0x26')](handleError(_0x42812d,null));};var interaction_log=require('../../config/logger')(_0x68a7('0x57'));exports[_0x68a7('0x58')]=function(_0x43a55e,_0x3cac58,_0x5a255a){var _0x1aefa4={'agent':{},'channel':_0x68a7('0x59')};if(_0x43a55e['body']['id']){delete _0x43a55e[_0x68a7('0x55')]['id'];}_0x43a55e[_0x68a7('0x55')][_0x68a7('0x5a')]=!![];_0x43a55e[_0x68a7('0x55')][_0x68a7('0x5b')]=moment()[_0x68a7('0x5c')](_0x68a7('0x5d'));_0x43a55e[_0x68a7('0x55')]['UserId']=_0x43a55e[_0x68a7('0x55')]['UserId']||_0x43a55e[_0x68a7('0x5e')]['id'];_0x1aefa4[_0x68a7('0x5f')]['id']=_0x43a55e['body'][_0x68a7('0x60')];return db[_0x68a7('0x4c')]['find']({'where':{'id':_0x43a55e[_0x68a7('0x52')]['id'],'UserId':null}})[_0x68a7('0x32')](handleEntityNotFound(_0x3cac58,null))[_0x68a7('0x32')](saveUpdates(_0x43a55e['body'],null))[_0x68a7('0x32')](function(_0x5b5174){if(_0x5b5174){_0x1aefa4[_0x68a7('0x23')]=_0x5b5174[_0x68a7('0x61')]({'plain':!![]});return db[_0x68a7('0x62')][_0x68a7('0x53')]({'where':{'id':_0x5b5174[_0x68a7('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x3cac58,null))[_0x68a7('0x32')](function(_0x343069){if(_0x343069){return _0x343069['update']({'UserId':_0x43a55e['body'][_0x68a7('0x60')],'read1stAt':_[_0x68a7('0x64')](_0x343069[_0x68a7('0x65')])?moment()[_0x68a7('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x25e806){if(_0x25e806){_0x1aefa4[_0x68a7('0x66')]=_0x25e806[_0x68a7('0x61')]({'plain':!![]});interaction_log[_0x68a7('0x24')](_0x68a7('0x67'),_0x43a55e[_0x68a7('0x5e')]['id'],_0x43a55e[_0x68a7('0x5e')][_0x68a7('0x35')],_0x43a55e[_0x68a7('0x5e')][_0x68a7('0x68')],_0x1aefa4[_0x68a7('0x66')]['id'],_0x43a55e[_0x68a7('0x55')]?JSON[_0x68a7('0x20')](_0x43a55e[_0x68a7('0x55')]):_0x68a7('0x69'));return respondWithRpcPromise(_0x68a7('0x6a'),_0x68a7('0x6b'),_0x1aefa4);}return null;})['then'](function(_0x26dd7b){var _0x53c4e0='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x26dd7b[_0x68a7('0x23')][_0x68a7('0x6c')];return db[_0x68a7('0x6d')][_0x68a7('0x3e')](_0x53c4e0,{'type':db[_0x68a7('0x6e')][_0x68a7('0x6f')][_0x68a7('0x70')],'raw':!![]})['then'](function(_0x181682){return _0x181682;});})['then'](function(_0x35f920){if(_0x35f920){_0x1aefa4[_0x68a7('0x23')][_0x68a7('0x71')]=_0x35f920[0x0];if(!_0x43a55e['body'][_0x68a7('0x60')])return;return db[_0x68a7('0x72')]['find']({'where':{'id':_0x43a55e[_0x68a7('0x55')][_0x68a7('0x60')],'role':_0x68a7('0x5f')},'attributes':['id',_0x68a7('0x35'),_0x68a7('0x73'),_0x68a7('0x74'),_0x68a7('0x75')],'raw':!![]});}return null;})[_0x68a7('0x32')](function(_0x23707e){if(!_0x23707e)return null;_0x1aefa4[_0x68a7('0x23')][_0x68a7('0x5f')]=_0x23707e;return _0x1aefa4;})[_0x68a7('0x32')](function(_0x16af5d){if(_0x16af5d){if(_0x43a55e['body'][_0x68a7('0x76')]){_0x1aefa4[_0x68a7('0x23')][_0x68a7('0x77')]=util[_0x68a7('0x5c')](_0x68a7('0x78'),_0x43a55e[_0x68a7('0x5e')][_0x68a7('0x35')]);_0x1aefa4[_0x68a7('0x23')][_0x68a7('0x79')]=_0x1aefa4['channel'];_0x1aefa4['message'][_0x68a7('0x7a')]=_0x1aefa4[_0x68a7('0x79')];_0x1aefa4[_0x68a7('0x23')][_0x68a7('0x7b')]='accept';return respondWithRpcPromise('EventManager',_0x68a7('0x7c'),{'event':'acceptmessage','message':_0x1aefa4[_0x68a7('0x23')]},client9002)[_0x68a7('0x32')](function(){return _0x1aefa4;});}return _0x1aefa4;}return null;})[_0x68a7('0x32')](respondWithResult(_0x3cac58,null))[_0x68a7('0x26')](handleError(_0x3cac58,null));};var interaction_log=require(_0x68a7('0x14'))(_0x68a7('0x57'));exports[_0x68a7('0x7d')]=function(_0x4ee95d,_0x578dc1,_0x217abc){var _0x19ac1d={'agent':{},'channel':_0x68a7('0x59')};if(_0x4ee95d[_0x68a7('0x55')]['id']){delete _0x4ee95d[_0x68a7('0x55')]['id'];}_0x4ee95d['body'][_0x68a7('0x60')]=_0x4ee95d[_0x68a7('0x55')][_0x68a7('0x60')]||_0x4ee95d['user']['id'];_0x19ac1d[_0x68a7('0x5f')]['id']=_0x4ee95d['body'][_0x68a7('0x60')];return db[_0x68a7('0x4c')][_0x68a7('0x53')]({'where':{'id':_0x4ee95d[_0x68a7('0x52')]['id'],'UserId':null}})[_0x68a7('0x32')](handleEntityNotFound(_0x578dc1,null))[_0x68a7('0x32')](function(_0x541527){if(_0x541527){_0x19ac1d['message']=_0x541527[_0x68a7('0x61')]({'plain':!![]});return db[_0x68a7('0x62')][_0x68a7('0x53')]({'where':{'id':_0x541527[_0x68a7('0x63')]}});}return null;})[_0x68a7('0x32')](handleEntityNotFound(_0x578dc1,null))[_0x68a7('0x32')](function(_0x1ac51e){if(_0x1ac51e){_0x19ac1d[_0x68a7('0x66')]=_0x1ac51e[_0x68a7('0x61')]({'plain':!![]});interaction_log[_0x68a7('0x24')](_0x68a7('0x7e'),_0x4ee95d[_0x68a7('0x5e')]['id'],_0x4ee95d[_0x68a7('0x5e')][_0x68a7('0x35')],_0x4ee95d[_0x68a7('0x5e')][_0x68a7('0x68')],_0x19ac1d[_0x68a7('0x66')]['id'],_0x4ee95d['body']?JSON[_0x68a7('0x20')](_0x4ee95d['body']):_0x68a7('0x69'));return respondWithRpcPromise(_0x68a7('0x7f'),_0x68a7('0x80'),_0x19ac1d);}return null;})['then'](function(_0x2234c4){var _0x5353eb=_0x68a7('0x81')+_0x2234c4[_0x68a7('0x23')]['ContactId'];return db[_0x68a7('0x6d')]['query'](_0x5353eb,{'type':db[_0x68a7('0x6e')][_0x68a7('0x6f')]['SELECT'],'raw':!![]})[_0x68a7('0x32')](function(_0x1271c4){return _0x1271c4;});})[_0x68a7('0x32')](function(_0xc866){if(_0xc866){_0x19ac1d['message'][_0x68a7('0x71')]=_0xc866[0x0];if(!_0x4ee95d[_0x68a7('0x55')][_0x68a7('0x60')])return;return db[_0x68a7('0x72')]['find']({'where':{'id':_0x4ee95d['body'][_0x68a7('0x60')],'role':_0x68a7('0x5f')},'attributes':['id','name',_0x68a7('0x73'),_0x68a7('0x74'),_0x68a7('0x75')],'raw':!![]});}return null;})[_0x68a7('0x32')](function(_0xceadd7){if(!_0xceadd7)return null;_0x19ac1d[_0x68a7('0x23')][_0x68a7('0x5f')]=_0xceadd7;return _0x19ac1d;})['then'](function(_0xd98e99){if(_0xd98e99){_0xd98e99[_0x68a7('0x23')][_0x68a7('0x77')]=util[_0x68a7('0x5c')]('SIP/%s',_0x4ee95d[_0x68a7('0x5e')][_0x68a7('0x35')]);_0xd98e99[_0x68a7('0x23')][_0x68a7('0x79')]=_0x19ac1d['channel'];_0xd98e99[_0x68a7('0x23')][_0x68a7('0x7a')]=_0x19ac1d[_0x68a7('0x79')];_0xd98e99[_0x68a7('0x23')][_0x68a7('0x7b')]='reject';respondWithRpcPromise(_0x68a7('0x7c'),_0x68a7('0x7c'),{'event':_0x68a7('0x82'),'message':_0xd98e99[_0x68a7('0x23')]},client9002);return _0x19ac1d;}return null;})[_0x68a7('0x32')](respondWithResult(_0x578dc1,null))[_0x68a7('0x26')](handleError(_0x578dc1,null));};exports['status']=function(_0x230731,_0x1dca16,_0x237030){if(_0x230731['body']['id']){delete _0x230731['body']['id'];}var _0x3e87a0;return db[_0x68a7('0x4c')][_0x68a7('0x53')]({'where':{'id':_0x230731[_0x68a7('0x52')]['id']}})['then'](handleEntityNotFound(_0x1dca16,null))[_0x68a7('0x32')](function(_0x2d4932){if(_0x2d4932){_0x3e87a0=_0x2d4932;return db['SmsAccount'][_0x68a7('0x53')]({'where':{'id':_0x2d4932[_0x68a7('0x83')]}});}})[_0x68a7('0x32')](handleEntityNotFound(_0x1dca16,null))[_0x68a7('0x32')](function(_0x547090){if(_0x547090){logger[_0x68a7('0x84')](_0x68a7('0x1f'),_0x68a7('0x27'),_0x68a7('0x85'),_0x547090[_0x68a7('0x3b')],util[_0x68a7('0x86')](_0x230731[_0x68a7('0x55')],{'showHidden':![],'depth':null}));switch(_0x547090[_0x68a7('0x3b')]){case _0x68a7('0x87'):if(_0x230731['body'][_0x68a7('0x88')]&&_0x230731[_0x68a7('0x55')][_0x68a7('0x88')]===_0x3e87a0[_0x68a7('0x89')]){return _0x3e87a0[_0x68a7('0x30')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x68a7('0x87'),util['inspect'](_0x230731['body'],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x230731[_0x68a7('0x55')][_0x68a7('0x8a')]&&_0x230731[_0x68a7('0x55')][_0x68a7('0x8a')]===_0x3e87a0[_0x68a7('0x89')]&&_[_0x68a7('0x8b')](['sent',_0x68a7('0x8c')],_0x230731[_0x68a7('0x55')]['Status'])>=0x0){return _0x3e87a0[_0x68a7('0x30')]({'read':!![]});}else{logger[_0x68a7('0x21')](_0x68a7('0x8d'),_0x68a7('0x27'),'plivio',util['inspect'](_0x230731[_0x68a7('0x55')],{'showHidden':![],'depth':null}));}break;case _0x68a7('0x8e'):var _0x55eede=_0x230731[_0x68a7('0x55')][_0x68a7('0x8f')][0x0];if(_0x55eede[_0x68a7('0x27')][_0x68a7('0x90')]===_0x68a7('0x91')){return _0x3e87a0[_0x68a7('0x30')]({'read':!![]});}else{logger[_0x68a7('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x68a7('0x27'),_0x68a7('0x8e'),util[_0x68a7('0x86')](_0x230731['body'],{'showHidden':![],'depth':null}));}break;}return _0x3e87a0;}})[_0x68a7('0x32')](respondWithResult(_0x1dca16,null))[_0x68a7('0x26')](handleError(_0x1dca16,null));};
\ No newline at end of file
index 09a5b46..0f995e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x735d=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb','SmsMessage','setMaxListeners'];(function(_0x552a4d,_0x71057a){var _0x3a3f24=function(_0x4d5fab){while(--_0x4d5fab){_0x552a4d['push'](_0x552a4d['shift']());}};_0x3a3f24(++_0x71057a);}(_0x735d,0x19a));var _0xd735=function(_0x1aed80,_0x3ca6f6){_0x1aed80=_0x1aed80-0x0;var _0x43961e=_0x735d[_0x1aed80];return _0x43961e;};'use strict';var EventEmitter=require(_0xd735('0x0'));var SmsMessage=require(_0xd735('0x1'))['db'][_0xd735('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd735('0x3')](0x0);var events={'afterCreate':_0xd735('0x4'),'afterUpdate':_0xd735('0x5'),'afterDestroy':_0xd735('0x6')};function emitEvent(_0x10ce6e){return function(_0x1e46ac,_0x3a7cb4,_0x4e3886){SmsMessageEvents[_0xd735('0x7')](_0x10ce6e+':'+_0x1e46ac['id'],_0x1e46ac);SmsMessageEvents['emit'](_0x10ce6e,_0x1e46ac);_0x4e3886(null);};}for(var e in events){if(events[_0xd735('0x8')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0xf114=['update','emit','hasOwnProperty','hook','SmsMessage','save'];(function(_0x323bf6,_0x19aed6){var _0x18da88=function(_0x1111da){while(--_0x1111da){_0x323bf6['push'](_0x323bf6['shift']());}};_0x18da88(++_0x19aed6);}(_0xf114,0xd0));var _0x4f11=function(_0x21e214,_0x5b4ef9){_0x21e214=_0x21e214-0x0;var _0x2f2739=_0xf114[_0x21e214];return _0x2f2739;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0x4f11('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4f11('0x1'),'afterUpdate':_0x4f11('0x2'),'afterDestroy':'remove'};function emitEvent(_0x356714){return function(_0x2335f5,_0x373545,_0xa55e3b){SmsMessageEvents[_0x4f11('0x3')](_0x356714+':'+_0x2335f5['id'],_0x2335f5);SmsMessageEvents[_0x4f11('0x3')](_0x356714,_0x2335f5);_0xa55e3b(null);};}for(var e in events){if(events[_0x4f11('0x4')](e)){var event=events[e];SmsMessage[_0x4f11('0x5')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index 39a2e3b..fe7f051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['Missing\x20parameters:\x20base_url','csc','login','sender','text','keys','sort','length','apiKey','md5','digest','hex','signature=','/external/get/send.php?','id_sms','https://platform.clickatell.com/messages','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','intelepeer','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','toLowerCase','direction','out','isNil','UserId','SmsInteraction','SmsInteractionId','then','update','createdAt','error','secret','SmsAccount','find','SmsAccountId','twilio','accountSid','authToken','phone','/api/sms/messages/','token','sid','catch','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','&password=','GET','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','inspect','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','username','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/status?token=','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','remote','application/json','IBSSO\x20','messages','infobip'];(function(_0x46dce0,_0x2e12a8){var _0x254615=function(_0x172af0){while(--_0x172af0){_0x46dce0['push'](_0x46dce0['shift']());}};_0x254615(++_0x2e12a8);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x2ef08d,_0x5a7b55){_0x2ef08d=_0x2ef08d-0x0;var _0x13943a=_0x4fdb[_0x2ef08d];return _0x13943a;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var logger=require(_0xb4fd('0x2'))(_0xb4fd('0x3'));var moment=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var rp=require(_0xb4fd('0x6'));var fs=require('fs');var path=require(_0xb4fd('0x7'));var rimraf=require(_0xb4fd('0x8'));var config=require('../../config/environment');var attributes=require(_0xb4fd('0x9'));module['exports']=function(_0x14052b,_0x5d8b39){return _0x14052b['define'](_0xb4fd('0xa'),attributes,{'tableName':_0xb4fd('0xb'),'paranoid':![],'indexes':[{'name':_0xb4fd('0xc'),'fields':['messageId']},{'name':'fti_sms_messages','fields':[_0xb4fd('0xd')],'type':_0xb4fd('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x18c0f7,_0x4eb1ae,_0x1e1e16){var _0x17ac4b=_0x14052b[_0xb4fd('0xf')];var _0x23b08f=_0x18c0f7[_0xb4fd('0x10')]({'plain':!![]});if(_0x23b08f['direction'][_0xb4fd('0x11')]()==='in'||_0x23b08f[_0xb4fd('0x12')][_0xb4fd('0x11')]()===_0xb4fd('0x13')&&!_0x23b08f['secret']&&!_[_0xb4fd('0x14')](_0x23b08f[_0xb4fd('0x15')])){_0x17ac4b[_0xb4fd('0x16')]['findOne']({'where':{'id':_0x23b08f[_0xb4fd('0x17')]}})[_0xb4fd('0x18')](function(_0xc35d8d){if(_0xc35d8d){_0xc35d8d[_0xb4fd('0x19')]({'lastMsgAt':_0x23b08f[_0xb4fd('0x1a')],'lastMsgDirection':_0x23b08f[_0xb4fd('0x12')][_0xb4fd('0x11')]()});}})['catch'](function(_0x2076d5){console[_0xb4fd('0x1b')](_0x2076d5);});}if(_0x23b08f[_0xb4fd('0x12')]===_0xb4fd('0x13')&&!_0x23b08f[_0xb4fd('0x1c')]){var _0x137e51;_0x17ac4b[_0xb4fd('0x1d')][_0xb4fd('0x1e')]({'where':{'id':_0x23b08f[_0xb4fd('0x1f')]},'raw':!![]})[_0xb4fd('0x18')](function(_0x19f7b0){_0x137e51=_0x19f7b0;if(_0x137e51&&_0x137e51['type']){switch(_0x137e51['type']){case'twilio':var _0x5c14c0=require(_0xb4fd('0x20'));if(_0x137e51[_0xb4fd('0x21')]&&_0x137e51[_0xb4fd('0x22')]&&_0x137e51[_0xb4fd('0x23')]){var _0x458133=new _0x5c14c0(_0x137e51[_0xb4fd('0x21')],_0x137e51[_0xb4fd('0x22')]);_0x458133['messages']['create']({'body':_0x23b08f[_0xb4fd('0xd')],'to':_0x23b08f[_0xb4fd('0x23')],'from':_0x137e51[_0xb4fd('0x23')],'statusCallback':_0x137e51['remote']+_0xb4fd('0x24')+_0x23b08f['id']+'/status?token='+_0x137e51[_0xb4fd('0x25')]})['then'](function(_0x2a9c8c){if(_0x2a9c8c[_0xb4fd('0x26')]){return _0x18c0f7[_0xb4fd('0x19')]({'messageId':_0x2a9c8c[_0xb4fd('0x26')]});}})[_0xb4fd('0x27')](function(_0x456f35){logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate','twilio',util['inspect'](_0x456f35,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xb4fd('0x2a'):var _0x7c5313=_0xb4fd('0x2b');if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){var _0x477a53={'recipient':[_0x23b08f[_0xb4fd('0x23')]],'message':_0x23b08f[_0xb4fd('0xd')],'message_type':_0x137e51['smsMethod']};if(_0x137e51[_0xb4fd('0x2d')]&&_0x137e51[_0xb4fd('0x2d')]!=='SI'){_0x477a53['sender']=_0x137e51[_0xb4fd('0x23')];}var _0x57ce81={'url':_0x7c5313+_0xb4fd('0x2e')+_0x137e51['username']+_0xb4fd('0x2f')+_0x137e51[_0xb4fd('0x2c')],'method':_0xb4fd('0x30')};rp(_0x57ce81)['then'](function(_0x55eed3){var _0x4d7a63=_0x55eed3['split'](';');var _0x1eeb9c={'user_key':_0x4d7a63[0x0],'session_key':_0x4d7a63[0x1]};_0x57ce81={'url':_0x7c5313+_0xb4fd('0x31'),'method':_0xb4fd('0x32'),'headers':{'user_key':_0x1eeb9c[_0xb4fd('0x33')],'Session_key':_0x1eeb9c[_0xb4fd('0x34')]},'json':!![],'body':_0x477a53};return rp(_0x57ce81);})[_0xb4fd('0x18')](function(_0xbf95eb){if(_0xbf95eb[_0xb4fd('0x35')]>=0x1){var _0x16a08a={'messageId':_0xbf95eb[_0xb4fd('0x36')]};if(_0x137e51[_0xb4fd('0x2d')]!=='GP'||!_0x137e51[_0xb4fd('0x37')]){_0x16a08a[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x16a08a);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),util['inspect'](_0xbf95eb,{'showHidden':![],'depth':null}));}})['catch'](function(_0x930751){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),util['inspect'](_0x930751,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),_0xb4fd('0x39'));}break;case'connectel':if(_0x137e51[_0xb4fd('0x22')]){var _0x4bc6b2={'recipient':_0x23b08f[_0xb4fd('0x23')],'message':_0x23b08f[_0xb4fd('0xd')],'sender':_0x137e51['senderString']||_0x137e51['phone'],'authorization':_0x137e51[_0xb4fd('0x22')]};var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x3a'),'body':_0x4bc6b2,'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x2718a0){var _0x478cf3={'messageId':_0x2718a0[_0xb4fd('0x3b')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x478cf3['read']=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x478cf3);})[_0xb4fd('0x27')](function(_0x17e024){logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x3c'),util[_0xb4fd('0x3d')](_0x17e024,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),'connectel',_0xb4fd('0x3e'));}break;case _0xb4fd('0x3f'):if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){var _0x4bc6b2={'messages':[{'source':_0xb4fd('0x40'),'to':_0x23b08f[_0xb4fd('0x23')],'body':_0x23b08f[_0xb4fd('0xd')],'from':_0x137e51['senderString']||_0x137e51[_0xb4fd('0x23')]}]};var _0x671ce5=util[_0xb4fd('0x41')]('%s:%s',_0x137e51[_0xb4fd('0x42')],_0x137e51['password']);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4bc6b2,'headers':{'Authorization':util[_0xb4fd('0x41')]('Basic\x20%s',new Buffer(_0x671ce5)[_0xb4fd('0x43')](_0xb4fd('0x44')))},'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x5500ef){if(_0x5500ef[_0xb4fd('0x45')]>=0xc8&&_0x5500ef[_0xb4fd('0x45')]<=0xce){if(_0x5500ef[_0xb4fd('0x46')]&&_0x5500ef[_0xb4fd('0x46')][_0xb4fd('0x47')]>0x0){var _0x3415cd=_[_0xb4fd('0x48')](_0x5500ef['data']['messages']);var _0x1595f2={'messageId':_0x3415cd[_0xb4fd('0x49')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x1595f2[_0xb4fd('0x38')]=!![];}return _0x18c0f7['update'](_0x1595f2);}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb4fd('0x4a'),util[_0xb4fd('0x3d')](_0x5500ef,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'clickSend',util[_0xb4fd('0x3d')](_0x5500ef,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x3b6014){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x4a'),util[_0xb4fd('0x3d')](_0x3b6014,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x4a'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb4fd('0x4b'):if(_0x137e51[_0xb4fd('0x4c')]&&_0x137e51[_0xb4fd('0x22')]){var _0x4bc6b2={'dst':_0x23b08f[_0xb4fd('0x23')],'text':_0x23b08f[_0xb4fd('0xd')],'src':_0x137e51['senderString']||_0x137e51[_0xb4fd('0x23')],'url':_0x137e51['remote']+'/api/sms/messages/'+_0x23b08f['id']+_0xb4fd('0x4d')+_0x137e51[_0xb4fd('0x25')]};var _0x671ce5=util[_0xb4fd('0x41')](_0xb4fd('0x4e'),_0x137e51[_0xb4fd('0x4c')],_0x137e51[_0xb4fd('0x22')]);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':util[_0xb4fd('0x41')](_0xb4fd('0x4f'),_0x137e51[_0xb4fd('0x4c')]),'body':_0x4bc6b2,'headers':{'Authorization':util[_0xb4fd('0x41')](_0xb4fd('0x50'),new Buffer(_0x671ce5)[_0xb4fd('0x43')]('base64'))},'json':!![]};rp(_0x4eb1ae)['then'](function(_0x130a5b){var _0x7c85e8={'messageId':_0x130a5b[_0xb4fd('0x51')][0x0]};return _0x18c0f7[_0xb4fd('0x19')](_0x7c85e8);})[_0xb4fd('0x27')](function(_0x5d1625){logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'plivo',util['inspect'](_0x5d1625,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x4b'),_0xb4fd('0x52'));}break;case'infobip':if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){if(_0x137e51[_0xb4fd('0x53')]){var _0x22ec0d={'method':'POST','uri':_0x137e51[_0xb4fd('0x53')]+_0xb4fd('0x54'),'body':{'username':_0x137e51[_0xb4fd('0x42')],'password':_0x137e51[_0xb4fd('0x2c')]},'json':!![]};return rp(_0x22ec0d)['then'](function(_0x423112){var _0x16c8e6={'method':'POST','uri':_0x137e51[_0xb4fd('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x137e51[_0xb4fd('0x23')],'destinations':[{'to':_0x23b08f['phone']}],'text':_0x23b08f[_0xb4fd('0xd')],'notifyUrl':_0x137e51[_0xb4fd('0x55')]+_0xb4fd('0x24')+_0x23b08f['id']+_0xb4fd('0x4d')+_0x137e51[_0xb4fd('0x25')],'notifyContentType':_0xb4fd('0x56'),'callbackData':_0x137e51[_0xb4fd('0x23')]+';'+_0x23b08f[_0xb4fd('0xd')]}]},'headers':{'Authorization':_0xb4fd('0x57')+_0x423112[_0xb4fd('0x25')]},'json':!![]};return rp(_0x16c8e6)[_0xb4fd('0x18')](function(_0x40882b){if(_0x40882b[_0xb4fd('0x58')]){var _0x454acd={'messageId':_0x40882b['messages'][0x0][_0xb4fd('0xc')]};if(!_0x137e51['deliveryReport']){_0x454acd[_0xb4fd('0x38')]=!![];}return _0x18c0f7['update'](_0x454acd);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x59'),util['inspect'](_0x40882b,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x23333c){return logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x59'),util['inspect'](_0x23333c,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x59'),_0xb4fd('0x5a'));}}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),'infobip',_0xb4fd('0x39'));}break;case _0xb4fd('0x5b'):var _0x28a12c=require('crypto');if(_0x137e51['apiKey']){var _0x571571={};_0x571571[_0xb4fd('0x5c')]=_0x137e51['username'];_0x571571[_0xb4fd('0x23')]=_0x23b08f['phone'];_0x571571[_0xb4fd('0x5d')]=_0x137e51[_0xb4fd('0x23')];_0x571571[_0xb4fd('0x5e')]=_0x23b08f[_0xb4fd('0xd')];_0x571571['timestamp']=+new Date();var _0x216173='';var _0x155942='';var _0x5b4ebe=Object[_0xb4fd('0x5f')](_0x571571);_0x5b4ebe[_0xb4fd('0x60')]();for(var _0x5a2bf1=0x0;_0x5a2bf1<_0x5b4ebe[_0xb4fd('0x61')];_0x5a2bf1++){if(_0x216173!=''){_0x216173+='&';}_0x216173+=_0x5b4ebe[_0x5a2bf1]+'='+encodeURIComponent(_0x571571[_0x5b4ebe[_0x5a2bf1]]);_0x155942+=_0x571571[_0x5b4ebe[_0x5a2bf1]];}_0x155942+=_0x137e51[_0xb4fd('0x62')];_0x155942=_0x28a12c['createHash'](_0xb4fd('0x63'))[_0xb4fd('0x19')](_0x155942)[_0xb4fd('0x64')](_0xb4fd('0x65'));if(_0x216173!==''){_0x216173+='&';}_0x216173+=_0xb4fd('0x66')+_0x155942;var _0x57ce81={'method':'GET','uri':_0x137e51[_0xb4fd('0x53')]+_0xb4fd('0x67')+_0x216173,'json':!![]};return rp(_0x57ce81)[_0xb4fd('0x18')](function(_0xb0c444){var _0x3596f7=Object[_0xb4fd('0x5f')](_0xb0c444);if(_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x1b')]&&parseInt(_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x1b')])===0x0){var _0x4042c1={'messageId':_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x68')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x4042c1[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x4042c1);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x5b'),util[_0xb4fd('0x3d')](_0xb0c444[_0xb4fd('0x1b')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x462ae3){return logger['error'](_0xb4fd('0x28'),'afterCreate','csc',util['inspect'](_0x462ae3,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb4fd('0x5b'),'Missing\x20parameters:\x20apiKey');}break;case'clickatell':if(_0x137e51[_0xb4fd('0x62')]){var _0x53e09a={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x69'),'headers':{'Authorization':_0x137e51[_0xb4fd('0x62')]},'body':{'content':_0x23b08f[_0xb4fd('0xd')],'to':[_0x23b08f[_0xb4fd('0x23')]],'from':_0x137e51['phone'],'binary':![],'clientMessageId':'uuid','charset':_0xb4fd('0x6a')},'json':!![]};rp(_0x53e09a)[_0xb4fd('0x18')](function(_0x4d44ff){if(!_0x4d44ff[_0xb4fd('0x1b')]){var _0xc5c8b7={'messageId':_0x4d44ff[_0xb4fd('0x58')][0x0][_0xb4fd('0x6b')]};if(!_0x137e51['deliveryReport']){_0xc5c8b7[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0xc5c8b7);}else{return logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x6c'),util['inspect'](_0x4d44ff[_0xb4fd('0x1b')],{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0xc171d9){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6c'),util[_0xb4fd('0x3d')](_0xc171d9,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x6c'),'Missing\x20parameters:\x20apiKey');}break;case _0xb4fd('0x6d'):if(_0x137e51[_0xb4fd('0x42')]&&_0x137e51[_0xb4fd('0x2c')]){var _0x671ce5=util[_0xb4fd('0x41')](_0xb4fd('0x4e'),_0x137e51[_0xb4fd('0x42')],_0x137e51[_0xb4fd('0x2c')]);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x6e')+_0x137e51[_0xb4fd('0x6f')]+_0xb4fd('0x70'),'body':{'to':[_0x23b08f[_0xb4fd('0x23')]],'text':_0x23b08f['body'],'from':_0x137e51[_0xb4fd('0x23')],'applicationId':_0x137e51['applicationId']},'headers':{'Authorization':util[_0xb4fd('0x41')]('Basic\x20%s',new Buffer(_0x671ce5)[_0xb4fd('0x43')]('base64'))},'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x57deab){if(_0x57deab['id']){var _0x3c5042={'messageId':_0x57deab['id']};return _0x18c0f7[_0xb4fd('0x19')](_0x3c5042);}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),util[_0xb4fd('0x3d')](_0x57deab,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x9ead9e){logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),util['inspect'](_0x9ead9e,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb4fd('0x71'):if(_0x137e51[_0xb4fd('0x62')]){var _0x228d40={};var _0x57ce81={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x137e51[_0xb4fd('0x62')],'Content-Type':_0xb4fd('0x56')},'body':{'from':_0x137e51['phone'],'to':_0x23b08f[_0xb4fd('0x23')],'text':_0x23b08f[_0xb4fd('0xd')]},'json':!![]};return rp(_0x57ce81)[_0xb4fd('0x18')](function(_0x4b18f3){if(_0x4b18f3[_0xb4fd('0x72')]==0xca){_0x228d40[_0xb4fd('0x73')]=_0x4b18f3;var _0x2efa1a={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x74'),'headers':{'Authorization':_0xb4fd('0x75')+_0x137e51['apiKey'],'Content-Type':_0xb4fd('0x56')},'body':{'refid':_0x228d40[_0xb4fd('0x73')][_0xb4fd('0x76')]},'json':!![]};return rp(_0x2efa1a)[_0xb4fd('0x18')](function(_0x5b7898){_0x228d40[_0xb4fd('0x77')]=_0x5b7898;var _0x36241d={'messageId':_0x228d40[_0xb4fd('0x73')][_0xb4fd('0x76')],'read':!![]};return _0x18c0f7[_0xb4fd('0x19')](_0x36241d);});}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x71'),util[_0xb4fd('0x3d')](_0x4b18f3,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x8313a8){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x71'),util[_0xb4fd('0x3d')](_0x8313a8,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'intelepeer',_0xb4fd('0x78'));}break;}}})['finally'](function(){_0x1e1e16();});}else{_0x1e1e16();}}},'charset':_0xb4fd('0x79'),'collate':_0xb4fd('0x7a')});};
\ No newline at end of file
+var _0x12c9=['/auth/1/session','/sms/2/text/advanced','/status?token=','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','timestamp','keys','md5','digest','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','finally','utf8mb4','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','SmsInteraction','then','createdAt','error','secret','SmsAccount','find','type','twilio','accountSid','authToken','messages','body','phone','remote','/api/sms/messages/','token','sid','update','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','&password=','GET','split','sms','POST','user_key','session_key','total_sent','deliveryReport','inspect','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','read','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl'];(function(_0x5a1ee4,_0x4a2c71){var _0x3b9e64=function(_0x1760fa){while(--_0x1760fa){_0x5a1ee4['push'](_0x5a1ee4['shift']());}};_0x3b9e64(++_0x4a2c71);}(_0x12c9,0x9f));var _0x912c=function(_0x4ac679,_0x3762fd){_0x4ac679=_0x4ac679-0x0;var _0x33753b=_0x12c9[_0x4ac679];return _0x33753b;};'use strict';var _=require(_0x912c('0x0'));var util=require('util');var logger=require(_0x912c('0x1'))('api');var moment=require(_0x912c('0x2'));var BPromise=require('bluebird');var rp=require(_0x912c('0x3'));var fs=require('fs');var path=require(_0x912c('0x4'));var rimraf=require(_0x912c('0x5'));var config=require(_0x912c('0x6'));var attributes=require(_0x912c('0x7'));module[_0x912c('0x8')]=function(_0x572179,_0x5daa7d){return _0x572179[_0x912c('0x9')](_0x912c('0xa'),attributes,{'tableName':_0x912c('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x912c('0xc')]},{'name':'fti_sms_messages','fields':['body'],'type':_0x912c('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x484f33,_0x575f3f,_0x514d5e){var _0x47649f=_0x572179['models'];var _0x3919df=_0x484f33[_0x912c('0xe')]({'plain':!![]});if(_0x3919df[_0x912c('0xf')][_0x912c('0x10')]()==='in'||_0x3919df[_0x912c('0xf')][_0x912c('0x10')]()===_0x912c('0x11')&&!_0x3919df['secret']&&!_[_0x912c('0x12')](_0x3919df[_0x912c('0x13')])){_0x47649f[_0x912c('0x14')]['findOne']({'where':{'id':_0x3919df['SmsInteractionId']}})[_0x912c('0x15')](function(_0x28142d){if(_0x28142d){_0x28142d['update']({'lastMsgAt':_0x3919df[_0x912c('0x16')],'lastMsgDirection':_0x3919df[_0x912c('0xf')]['toLowerCase']()});}})['catch'](function(_0x114cf){console[_0x912c('0x17')](_0x114cf);});}if(_0x3919df[_0x912c('0xf')]==='out'&&!_0x3919df[_0x912c('0x18')]){var _0x468ad2;_0x47649f[_0x912c('0x19')][_0x912c('0x1a')]({'where':{'id':_0x3919df['SmsAccountId']},'raw':!![]})[_0x912c('0x15')](function(_0x1c3af6){_0x468ad2=_0x1c3af6;if(_0x468ad2&&_0x468ad2[_0x912c('0x1b')]){switch(_0x468ad2[_0x912c('0x1b')]){case'twilio':var _0x30e978=require(_0x912c('0x1c'));if(_0x468ad2[_0x912c('0x1d')]&&_0x468ad2[_0x912c('0x1e')]&&_0x468ad2['phone']){var _0x2a41a2=new _0x30e978(_0x468ad2[_0x912c('0x1d')],_0x468ad2[_0x912c('0x1e')]);_0x2a41a2[_0x912c('0x1f')]['create']({'body':_0x3919df[_0x912c('0x20')],'to':_0x3919df[_0x912c('0x21')],'from':_0x468ad2[_0x912c('0x21')],'statusCallback':_0x468ad2[_0x912c('0x22')]+_0x912c('0x23')+_0x3919df['id']+'/status?token='+_0x468ad2[_0x912c('0x24')]})[_0x912c('0x15')](function(_0x4e79ba){if(_0x4e79ba[_0x912c('0x25')]){return _0x484f33[_0x912c('0x26')]({'messageId':_0x4e79ba['sid']});}})[_0x912c('0x27')](function(_0x59a7a2){logger['error'](_0x912c('0x28'),_0x912c('0x29'),'twilio',util['inspect'](_0x59a7a2,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x1c'),_0x912c('0x2a'));}break;case _0x912c('0x2b'):var _0x8746a7=_0x912c('0x2c');if(_0x468ad2[_0x912c('0x2d')]&&_0x468ad2[_0x912c('0x2e')]){var _0xed7b37={'recipient':[_0x3919df['phone']],'message':_0x3919df[_0x912c('0x20')],'message_type':_0x468ad2[_0x912c('0x2f')]};if(_0x468ad2[_0x912c('0x2f')]&&_0x468ad2[_0x912c('0x2f')]!=='SI'){_0xed7b37[_0x912c('0x30')]=_0x468ad2['phone'];}var _0x4c8951={'url':_0x8746a7+'login?username='+_0x468ad2[_0x912c('0x2d')]+_0x912c('0x31')+_0x468ad2['password'],'method':_0x912c('0x32')};rp(_0x4c8951)[_0x912c('0x15')](function(_0x43b16d){var _0x4b39b2=_0x43b16d[_0x912c('0x33')](';');var _0x3945d7={'user_key':_0x4b39b2[0x0],'session_key':_0x4b39b2[0x1]};_0x4c8951={'url':_0x8746a7+_0x912c('0x34'),'method':_0x912c('0x35'),'headers':{'user_key':_0x3945d7[_0x912c('0x36')],'Session_key':_0x3945d7[_0x912c('0x37')]},'json':!![],'body':_0xed7b37};return rp(_0x4c8951);})[_0x912c('0x15')](function(_0x4f0d98){if(_0x4f0d98[_0x912c('0x38')]>=0x1){var _0x1ea5dc={'messageId':_0x4f0d98['internal_order_id']};if(_0x468ad2['smsMethod']!=='GP'||!_0x468ad2[_0x912c('0x39')]){_0x1ea5dc['read']=!![];}return _0x484f33[_0x912c('0x26')](_0x1ea5dc);}else{return logger['error'](_0x912c('0x28'),_0x912c('0x29'),_0x912c('0x2b'),util[_0x912c('0x3a')](_0x4f0d98,{'showHidden':![],'depth':null}));}})[_0x912c('0x27')](function(_0x42d635){return logger[_0x912c('0x17')](_0x912c('0x28'),_0x912c('0x29'),'skebby',util[_0x912c('0x3a')](_0x42d635,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x2b'),_0x912c('0x3b'));}break;case _0x912c('0x3c'):if(_0x468ad2['authToken']){var _0x28d89f={'recipient':_0x3919df['phone'],'message':_0x3919df[_0x912c('0x20')],'sender':_0x468ad2[_0x912c('0x3d')]||_0x468ad2[_0x912c('0x21')],'authorization':_0x468ad2['authToken']};var _0x575f3f={'method':_0x912c('0x35'),'uri':_0x912c('0x3e'),'body':_0x28d89f,'json':!![]};rp(_0x575f3f)[_0x912c('0x15')](function(_0x395fd2){var _0x2ec219={'messageId':_0x395fd2[_0x912c('0x3f')]};if(!_0x468ad2[_0x912c('0x39')]){_0x2ec219[_0x912c('0x40')]=!![];}return _0x484f33['update'](_0x2ec219);})[_0x912c('0x27')](function(_0x3022f5){logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x3c'),util[_0x912c('0x3a')](_0x3022f5,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),'connectel',_0x912c('0x41'));}break;case _0x912c('0x42'):if(_0x468ad2['username']&&_0x468ad2[_0x912c('0x2e')]){var _0x28d89f={'messages':[{'source':_0x912c('0x43'),'to':_0x3919df[_0x912c('0x21')],'body':_0x3919df[_0x912c('0x20')],'from':_0x468ad2[_0x912c('0x3d')]||_0x468ad2['phone']}]};var _0x1f8f35=util[_0x912c('0x44')](_0x912c('0x45'),_0x468ad2[_0x912c('0x2d')],_0x468ad2[_0x912c('0x2e')]);var _0x575f3f={'method':_0x912c('0x35'),'uri':_0x912c('0x46'),'body':_0x28d89f,'headers':{'Authorization':util[_0x912c('0x44')](_0x912c('0x47'),new Buffer(_0x1f8f35)[_0x912c('0x48')](_0x912c('0x49')))},'json':!![]};rp(_0x575f3f)[_0x912c('0x15')](function(_0x3d6d34){if(_0x3d6d34['http_code']>=0xc8&&_0x3d6d34[_0x912c('0x4a')]<=0xce){if(_0x3d6d34[_0x912c('0x4b')]&&_0x3d6d34[_0x912c('0x4b')]['queued_count']>0x0){var _0x4d7777=_[_0x912c('0x4c')](_0x3d6d34['data']['messages']);var _0x373804={'messageId':_0x4d7777[_0x912c('0x4d')]};if(!_0x468ad2[_0x912c('0x39')]){_0x373804[_0x912c('0x40')]=!![];}return _0x484f33['update'](_0x373804);}else{logger[_0x912c('0x17')](_0x912c('0x28'),_0x912c('0x29'),_0x912c('0x4e'),util['inspect'](_0x3d6d34,{'showHidden':![],'depth':null}));}}else{logger[_0x912c('0x17')](_0x912c('0x28'),_0x912c('0x29'),'clickSend',util[_0x912c('0x3a')](_0x3d6d34,{'showHidden':![],'depth':null}));}})[_0x912c('0x27')](function(_0x1a0b3e){logger['error'](_0x912c('0x28'),_0x912c('0x29'),'clickSend',util[_0x912c('0x3a')](_0x1a0b3e,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x4e'),_0x912c('0x3b'));}break;case _0x912c('0x4f'):if(_0x468ad2['authId']&&_0x468ad2[_0x912c('0x1e')]){var _0x28d89f={'dst':_0x3919df['phone'],'text':_0x3919df[_0x912c('0x20')],'src':_0x468ad2['senderString']||_0x468ad2[_0x912c('0x21')],'url':_0x468ad2['remote']+_0x912c('0x23')+_0x3919df['id']+'/status?token='+_0x468ad2[_0x912c('0x24')]};var _0x1f8f35=util['format']('%s:%s',_0x468ad2[_0x912c('0x50')],_0x468ad2['authToken']);var _0x575f3f={'method':_0x912c('0x35'),'uri':util[_0x912c('0x44')](_0x912c('0x51'),_0x468ad2[_0x912c('0x50')]),'body':_0x28d89f,'headers':{'Authorization':util['format'](_0x912c('0x47'),new Buffer(_0x1f8f35)[_0x912c('0x48')](_0x912c('0x49')))},'json':!![]};rp(_0x575f3f)[_0x912c('0x15')](function(_0xc816c2){var _0x48379a={'messageId':_0xc816c2[_0x912c('0x52')][0x0]};return _0x484f33[_0x912c('0x26')](_0x48379a);})[_0x912c('0x27')](function(_0x4ba9b3){logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x4f'),util['inspect'](_0x4ba9b3,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')](_0x912c('0x28'),'afterCreate',_0x912c('0x4f'),_0x912c('0x53'));}break;case'infobip':if(_0x468ad2['username']&&_0x468ad2[_0x912c('0x2e')]){if(_0x468ad2[_0x912c('0x54')]){var _0x2fba9a={'method':_0x912c('0x35'),'uri':_0x468ad2[_0x912c('0x54')]+_0x912c('0x55'),'body':{'username':_0x468ad2[_0x912c('0x2d')],'password':_0x468ad2[_0x912c('0x2e')]},'json':!![]};return rp(_0x2fba9a)['then'](function(_0x41fb41){var _0x3d560b={'method':_0x912c('0x35'),'uri':_0x468ad2[_0x912c('0x54')]+_0x912c('0x56'),'body':{'messages':[{'from':_0x468ad2[_0x912c('0x21')],'destinations':[{'to':_0x3919df[_0x912c('0x21')]}],'text':_0x3919df[_0x912c('0x20')],'notifyUrl':_0x468ad2[_0x912c('0x22')]+_0x912c('0x23')+_0x3919df['id']+_0x912c('0x57')+_0x468ad2[_0x912c('0x24')],'notifyContentType':_0x912c('0x58'),'callbackData':_0x468ad2[_0x912c('0x21')]+';'+_0x3919df[_0x912c('0x20')]}]},'headers':{'Authorization':_0x912c('0x59')+_0x41fb41[_0x912c('0x24')]},'json':!![]};return rp(_0x3d560b)[_0x912c('0x15')](function(_0x2a7969){if(_0x2a7969[_0x912c('0x1f')]){var _0x1214c1={'messageId':_0x2a7969[_0x912c('0x1f')][0x0][_0x912c('0xc')]};if(!_0x468ad2['deliveryReport']){_0x1214c1[_0x912c('0x40')]=!![];}return _0x484f33['update'](_0x1214c1);}else{return logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x5a'),util[_0x912c('0x3a')](_0x2a7969,{'showHidden':![],'depth':null}));}});})[_0x912c('0x27')](function(_0x464829){return logger['error'](_0x912c('0x28'),'afterCreate',_0x912c('0x5a'),util[_0x912c('0x3a')](_0x464829,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')](_0x912c('0x28'),_0x912c('0x29'),_0x912c('0x5a'),_0x912c('0x5b'));}}else{logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),'infobip',_0x912c('0x3b'));}break;case _0x912c('0x5c'):var _0x3f3fb3=require(_0x912c('0x5d'));if(_0x468ad2[_0x912c('0x5e')]){var _0x33781a={};_0x33781a[_0x912c('0x5f')]=_0x468ad2[_0x912c('0x2d')];_0x33781a[_0x912c('0x21')]=_0x3919df['phone'];_0x33781a[_0x912c('0x30')]=_0x468ad2[_0x912c('0x21')];_0x33781a['text']=_0x3919df[_0x912c('0x20')];_0x33781a[_0x912c('0x60')]=+new Date();var _0x1eb743='';var _0x59d833='';var _0x4d50e3=Object[_0x912c('0x61')](_0x33781a);_0x4d50e3['sort']();for(var _0xc24a59=0x0;_0xc24a59<_0x4d50e3['length'];_0xc24a59++){if(_0x1eb743!=''){_0x1eb743+='&';}_0x1eb743+=_0x4d50e3[_0xc24a59]+'='+encodeURIComponent(_0x33781a[_0x4d50e3[_0xc24a59]]);_0x59d833+=_0x33781a[_0x4d50e3[_0xc24a59]];}_0x59d833+=_0x468ad2[_0x912c('0x5e')];_0x59d833=_0x3f3fb3['createHash'](_0x912c('0x62'))[_0x912c('0x26')](_0x59d833)[_0x912c('0x63')]('hex');if(_0x1eb743!==''){_0x1eb743+='&';}_0x1eb743+=_0x912c('0x64')+_0x59d833;var _0x4c8951={'method':_0x912c('0x32'),'uri':_0x468ad2[_0x912c('0x54')]+_0x912c('0x65')+_0x1eb743,'json':!![]};return rp(_0x4c8951)[_0x912c('0x15')](function(_0x4eae87){var _0x29c882=Object[_0x912c('0x61')](_0x4eae87);if(_0x4eae87[_0x29c882[0x0]]['error']&&parseInt(_0x4eae87[_0x29c882[0x0]][_0x912c('0x17')])===0x0){var _0x3c7b09={'messageId':_0x4eae87[_0x29c882[0x0]][_0x912c('0x66')]};if(!_0x468ad2['deliveryReport']){_0x3c7b09[_0x912c('0x40')]=!![];}return _0x484f33['update'](_0x3c7b09);}else{return logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),_0x912c('0x5c'),util['inspect'](_0x4eae87[_0x912c('0x17')],{'showHidden':![],'depth':null}));}})['catch'](function(_0xc1d210){return logger['error'](_0x912c('0x28'),'afterCreate','csc',util[_0x912c('0x3a')](_0xc1d210,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x912c('0x28'),'afterCreate',_0x912c('0x5c'),_0x912c('0x67'));}break;case'clickatell':if(_0x468ad2[_0x912c('0x5e')]){var _0xff22c8={'method':_0x912c('0x35'),'uri':_0x912c('0x68'),'headers':{'Authorization':_0x468ad2['apiKey']},'body':{'content':_0x3919df[_0x912c('0x20')],'to':[_0x3919df[_0x912c('0x21')]],'from':_0x468ad2['phone'],'binary':![],'clientMessageId':'uuid','charset':_0x912c('0x69')},'json':!![]};rp(_0xff22c8)['then'](function(_0x537e1f){if(!_0x537e1f[_0x912c('0x17')]){var _0x1d0935={'messageId':_0x537e1f['messages'][0x0][_0x912c('0x6a')]};if(!_0x468ad2[_0x912c('0x39')]){_0x1d0935[_0x912c('0x40')]=!![];}return _0x484f33[_0x912c('0x26')](_0x1d0935);}else{return logger['error'](_0x912c('0x28'),'afterCreate',_0x912c('0x6b'),util['inspect'](_0x537e1f[_0x912c('0x17')],{'showHidden':![],'depth':null}));}})[_0x912c('0x27')](function(_0x44038f){return logger[_0x912c('0x17')](_0x912c('0x28'),_0x912c('0x29'),_0x912c('0x6b'),util[_0x912c('0x3a')](_0x44038f,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')](_0x912c('0x28'),'afterCreate',_0x912c('0x6b'),_0x912c('0x67'));}break;case _0x912c('0x6c'):if(_0x468ad2['username']&&_0x468ad2[_0x912c('0x2e')]){var _0x1f8f35=util[_0x912c('0x44')](_0x912c('0x45'),_0x468ad2[_0x912c('0x2d')],_0x468ad2['password']);var _0x575f3f={'method':'POST','uri':_0x912c('0x6d')+_0x468ad2[_0x912c('0x6e')]+_0x912c('0x6f'),'body':{'to':[_0x3919df[_0x912c('0x21')]],'text':_0x3919df[_0x912c('0x20')],'from':_0x468ad2['phone'],'applicationId':_0x468ad2[_0x912c('0x70')]},'headers':{'Authorization':util[_0x912c('0x44')]('Basic\x20%s',new Buffer(_0x1f8f35)[_0x912c('0x48')](_0x912c('0x49')))},'json':!![]};rp(_0x575f3f)[_0x912c('0x15')](function(_0x4cfbc5){if(_0x4cfbc5['id']){var _0x1c25f8={'messageId':_0x4cfbc5['id']};return _0x484f33[_0x912c('0x26')](_0x1c25f8);}else{logger['error'](_0x912c('0x28'),_0x912c('0x29'),_0x912c('0x6c'),util['inspect'](_0x4cfbc5,{'showHidden':![],'depth':null}));}})[_0x912c('0x27')](function(_0x14dfbe){logger[_0x912c('0x17')](_0x912c('0x28'),'afterCreate',_0x912c('0x6c'),util['inspect'](_0x14dfbe,{'showHidden':![],'depth':null}));});}else{logger[_0x912c('0x17')](_0x912c('0x28'),'afterCreate',_0x912c('0x6c'),_0x912c('0x3b'));}break;case _0x912c('0x71'):if(_0x468ad2['apiKey']){var _0x1df312={};var _0x4c8951={'method':_0x912c('0x35'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x912c('0x72')+_0x468ad2[_0x912c('0x5e')],'Content-Type':_0x912c('0x58')},'body':{'from':_0x468ad2[_0x912c('0x21')],'to':_0x3919df['phone'],'text':_0x3919df[_0x912c('0x20')]},'json':!![]};return rp(_0x4c8951)[_0x912c('0x15')](function(_0x1db5b7){if(_0x1db5b7[_0x912c('0x73')]==0xca){_0x1df312[_0x912c('0x74')]=_0x1db5b7;var _0x261f71={'method':_0x912c('0x35'),'uri':_0x912c('0x75'),'headers':{'Authorization':_0x912c('0x72')+_0x468ad2[_0x912c('0x5e')],'Content-Type':_0x912c('0x58')},'body':{'refid':_0x1df312['message']['refid']},'json':!![]};return rp(_0x261f71)[_0x912c('0x15')](function(_0x1a8718){_0x1df312['status']=_0x1a8718;var _0x544603={'messageId':_0x1df312[_0x912c('0x74')][_0x912c('0x76')],'read':!![]};return _0x484f33[_0x912c('0x26')](_0x544603);});}else{return logger[_0x912c('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x912c('0x29'),'intelepeer',util[_0x912c('0x3a')](_0x1db5b7,{'showHidden':![],'depth':null}));}})[_0x912c('0x27')](function(_0x291c74){return logger[_0x912c('0x17')](_0x912c('0x28'),'afterCreate',_0x912c('0x71'),util[_0x912c('0x3a')](_0x291c74,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x912c('0x28'),_0x912c('0x29'),_0x912c('0x71'),_0x912c('0x77'));}break;}}})[_0x912c('0x78')](function(){_0x514d5e();});}else{_0x514d5e();}}},'charset':_0x912c('0x79'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index dd0b5f4..8322fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2862=['http','defaults','redis','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','CreateSmsMessage','SmsMessage','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x59385f,_0x218c19){var _0x3502df=function(_0x80e493){while(--_0x80e493){_0x59385f['push'](_0x59385f['shift']());}};_0x3502df(++_0x218c19);}(_0x2862,0x10d));var _0x2286=function(_0x1f9319,_0x3bfb52){_0x1f9319=_0x1f9319-0x0;var _0x2f8168=_0x2862[_0x1f9319];return _0x2f8168;};'use strict';var _=require(_0x2286('0x0'));var util=require(_0x2286('0x1'));var moment=require(_0x2286('0x2'));var BPromise=require(_0x2286('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2286('0x4'));var db=require(_0x2286('0x5'))['db'];var utils=require(_0x2286('0x6'));var logger=require('../../config/logger')(_0x2286('0x7'));var config=require('../../config/environment');var jayson=require(_0x2286('0x8'));var client=jayson[_0x2286('0x9')][_0x2286('0xa')]({'port':0x232a});config['redis']=_[_0x2286('0xb')](config[_0x2286('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x2286('0xd'))(new Redis(config[_0x2286('0xc')]));require(_0x2286('0xe'))[_0x2286('0xf')](socket);function respondWithRpcPromise(_0xe038f7,_0x27d706,_0x207c24){return new BPromise(function(_0x4fc536,_0x247df2){return client[_0x2286('0x10')](_0xe038f7,_0x207c24)[_0x2286('0x11')](function(_0x1fa796){logger[_0x2286('0x12')](_0x2286('0x13'),_0x27d706,'request\x20sent');logger[_0x2286('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x27d706,_0x2286('0x15'),JSON['stringify'](_0x1fa796));if(_0x1fa796[_0x2286('0x16')]){if(_0x1fa796[_0x2286('0x16')]['code']===0x1f4){logger[_0x2286('0x16')](_0x2286('0x13'),_0x27d706,_0x1fa796[_0x2286('0x16')][_0x2286('0x17')]);return _0x247df2(_0x1fa796['error'][_0x2286('0x17')]);}logger[_0x2286('0x16')](_0x2286('0x13'),_0x27d706,_0x1fa796[_0x2286('0x16')][_0x2286('0x17')]);return _0x4fc536(_0x1fa796[_0x2286('0x16')]['message']);}else{logger[_0x2286('0x12')]('SmsMessage,\x20%s,\x20%s',_0x27d706,_0x2286('0x15'));_0x4fc536(_0x1fa796['result'][_0x2286('0x17')]);}})[_0x2286('0x18')](function(_0x526dcf){logger[_0x2286('0x16')](_0x2286('0x13'),_0x27d706,_0x526dcf);_0x247df2(_0x526dcf);});});}exports[_0x2286('0x19')]=function(_0xb9fbd6){var _0xbb33af=this;return new Promise(function(_0x450f2f,_0x3d4354){return db[_0x2286('0x1a')]['create'](_0xb9fbd6[_0x2286('0x1b')],{'raw':_0xb9fbd6['options']?_0xb9fbd6[_0x2286('0x1c')][_0x2286('0x1d')]===undefined?!![]:![]:!![]})[_0x2286('0x11')](function(_0xfd7eaa){logger[_0x2286('0x12')](_0x2286('0x19'),_0xb9fbd6);logger['debug'](_0x2286('0x19'),_0xb9fbd6,JSON[_0x2286('0x1e')](_0xfd7eaa));_0x450f2f(_0xfd7eaa);})[_0x2286('0x18')](function(_0x4620b2){logger[_0x2286('0x16')]('CreateSmsMessage',_0x4620b2['message'],_0xb9fbd6);_0x3d4354(_0xbb33af[_0x2286('0x16')](0x1f4,_0x4620b2[_0x2286('0x17')]));});});};
\ No newline at end of file
+var _0x52a0=['../../config/environment','client','http','redis','localhost','./smsMessage.socket','register','request','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','SmsMessage,\x20%s,\x20%s','info','result','CreateSmsMessage','SmsMessage','create','body','options','raw','then','stringify','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x345cf6,_0x572c98){var _0x2b02a1=function(_0x1d1dc2){while(--_0x1d1dc2){_0x345cf6['push'](_0x345cf6['shift']());}};_0x2b02a1(++_0x572c98);}(_0x52a0,0x143));var _0x052a=function(_0x8c51b6,_0x431aff){_0x8c51b6=_0x8c51b6-0x0;var _0x2fe4b7=_0x52a0[_0x8c51b6];return _0x2fe4b7;};'use strict';var _=require('lodash');var util=require(_0x052a('0x0'));var moment=require(_0x052a('0x1'));var BPromise=require(_0x052a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x052a('0x3'));var db=require(_0x052a('0x4'))['db'];var utils=require(_0x052a('0x5'));var logger=require(_0x052a('0x6'))('rpc');var config=require(_0x052a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x052a('0x8')][_0x052a('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x052a('0xa')],{'host':_0x052a('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x052a('0xa')]));require(_0x052a('0xc'))[_0x052a('0xd')](socket);function respondWithRpcPromise(_0x2d4b64,_0x3de2ac,_0x5ad52d){return new BPromise(function(_0x1f5faa,_0x1568aa){return client[_0x052a('0xe')](_0x2d4b64,_0x5ad52d)['then'](function(_0x3e0281){logger['info']('SmsMessage,\x20%s,\x20%s',_0x3de2ac,_0x052a('0xf'));logger[_0x052a('0x10')](_0x052a('0x11'),_0x3de2ac,'request\x20sent',JSON['stringify'](_0x3e0281));if(_0x3e0281[_0x052a('0x12')]){if(_0x3e0281[_0x052a('0x12')][_0x052a('0x13')]===0x1f4){logger[_0x052a('0x12')]('SmsMessage,\x20%s,\x20%s',_0x3de2ac,_0x3e0281[_0x052a('0x12')][_0x052a('0x14')]);return _0x1568aa(_0x3e0281[_0x052a('0x12')][_0x052a('0x14')]);}logger['error'](_0x052a('0x15'),_0x3de2ac,_0x3e0281[_0x052a('0x12')][_0x052a('0x14')]);return _0x1f5faa(_0x3e0281[_0x052a('0x12')][_0x052a('0x14')]);}else{logger[_0x052a('0x16')](_0x052a('0x15'),_0x3de2ac,'request\x20sent');_0x1f5faa(_0x3e0281[_0x052a('0x17')]['message']);}})['catch'](function(_0x317f28){logger[_0x052a('0x12')]('SmsMessage,\x20%s,\x20%s',_0x3de2ac,_0x317f28);_0x1568aa(_0x317f28);});});}exports[_0x052a('0x18')]=function(_0x5d981e){var _0x40433e=this;return new Promise(function(_0x282654,_0x2928ea){return db[_0x052a('0x19')][_0x052a('0x1a')](_0x5d981e[_0x052a('0x1b')],{'raw':_0x5d981e[_0x052a('0x1c')]?_0x5d981e[_0x052a('0x1c')][_0x052a('0x1d')]===undefined?!![]:![]:!![]})[_0x052a('0x1e')](function(_0x502265){logger['info'](_0x052a('0x18'),_0x5d981e);logger[_0x052a('0x10')](_0x052a('0x18'),_0x5d981e,JSON[_0x052a('0x1f')](_0x502265));_0x282654(_0x502265);})[_0x052a('0x20')](function(_0x2b3e3a){logger[_0x052a('0x12')]('CreateSmsMessage',_0x2b3e3a[_0x052a('0x14')],_0x5d981e);_0x2928ea(_0x40433e[_0x052a('0x12')](0x1f4,_0x2b3e3a[_0x052a('0x14')]));});});};
\ No newline at end of file
index d2dea72..2f69dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6140=['register','length','./smsMessage.events','save','remove','update','emit','removeListener'];(function(_0x2a5883,_0x47b82b){var _0x1639a2=function(_0x39a718){while(--_0x39a718){_0x2a5883['push'](_0x2a5883['shift']());}};_0x1639a2(++_0x47b82b);}(_0x6140,0xe2));var _0x0614=function(_0x4a0b21,_0x1d310d){_0x4a0b21=_0x4a0b21-0x0;var _0xbc48b8=_0x6140[_0x4a0b21];return _0xbc48b8;};'use strict';var SmsMessageEvents=require(_0x0614('0x0'));var events=[_0x0614('0x1'),_0x0614('0x2'),_0x0614('0x3')];function createListener(_0x255aa6,_0x3a69b7){return function(_0x280de6){_0x3a69b7[_0x0614('0x4')](_0x255aa6,_0x280de6);};}function removeListener(_0x11c7b3,_0x3c763c){return function(){SmsMessageEvents[_0x0614('0x5')](_0x11c7b3,_0x3c763c);};}exports[_0x0614('0x6')]=function(_0x457051){for(var _0x1bb0a8=0x0,_0x20086c=events[_0x0614('0x7')];_0x1bb0a8<_0x20086c;_0x1bb0a8++){var _0x9163ea=events[_0x1bb0a8];var _0x1ab4cc=createListener('smsMessage:'+_0x9163ea,_0x457051);SmsMessageEvents['on'](_0x9163ea,_0x1ab4cc);}};
\ No newline at end of file
+var _0xecec=['update','register','length','smsMessage:','save','remove'];(function(_0x3e7d23,_0x133a90){var _0x21a920=function(_0x23c006){while(--_0x23c006){_0x3e7d23['push'](_0x3e7d23['shift']());}};_0x21a920(++_0x133a90);}(_0xecec,0x1d8));var _0xcece=function(_0x1e6c1e,_0x3c5980){_0x1e6c1e=_0x1e6c1e-0x0;var _0x3a641d=_0xecec[_0x1e6c1e];return _0x3a641d;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xcece('0x0'),_0xcece('0x1'),_0xcece('0x2')];function createListener(_0x1746f6,_0x31b977){return function(_0xa7253d){_0x31b977['emit'](_0x1746f6,_0xa7253d);};}function removeListener(_0xaa419c,_0x3667c6){return function(){SmsMessageEvents['removeListener'](_0xaa419c,_0x3667c6);};}exports[_0xcece('0x3')]=function(_0x37b526){for(var _0x16e7c1=0x0,_0x4693fc=events[_0xcece('0x4')];_0x16e7c1<_0x4693fc;_0x16e7c1++){var _0x1f4527=events[_0x16e7c1];var _0x31afe5=createListener(_0xcece('0x5')+_0x1f4527,_0x37b526);SmsMessageEvents['on'](_0x1f4527,_0x31afe5);}};
\ No newline at end of file
index 57c84ca..6423f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e92=['describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','destroy','delete','removeTeams','removeAgents','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe'];(function(_0x349284,_0x4ec6ad){var _0x164ee4=function(_0x491806){while(--_0x491806){_0x349284['push'](_0x349284['shift']());}};_0x164ee4(++_0x4ec6ad);}(_0x6e92,0xf1));var _0x26e9=function(_0x1e55d9,_0x5ce14a){_0x1e55d9=_0x1e55d9-0x0;var _0x6dc799=_0x6e92[_0x1e55d9];return _0x6dc799;};'use strict';var multer=require('multer');var util=require(_0x26e9('0x0'));var path=require(_0x26e9('0x1'));var timeout=require(_0x26e9('0x2'));var express=require(_0x26e9('0x3'));var router=express['Router']();var fs_extra=require(_0x26e9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x26e9('0x5'));var config=require(_0x26e9('0x6'));var controller=require('./smsQueue.controller');router[_0x26e9('0x7')]('/',auth[_0x26e9('0x8')](),controller[_0x26e9('0x9')]);router[_0x26e9('0x7')](_0x26e9('0xa'),auth[_0x26e9('0x8')](),controller[_0x26e9('0xb')]);router[_0x26e9('0x7')](_0x26e9('0xc'),auth[_0x26e9('0x8')](),controller['show']);router[_0x26e9('0x7')]('/:id/members',auth[_0x26e9('0x8')](),controller[_0x26e9('0xd')]);router[_0x26e9('0x7')](_0x26e9('0xe'),auth['isAuthenticated'](),controller[_0x26e9('0xf')]);router[_0x26e9('0x7')](_0x26e9('0x10'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x11')]);router[_0x26e9('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x26e9('0x12')](_0x26e9('0xe'),auth['isAuthenticated'](),controller[_0x26e9('0x13')]);router[_0x26e9('0x12')](_0x26e9('0x10'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x14')]);router[_0x26e9('0x15')](_0x26e9('0xc'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x16')]);router['delete'](_0x26e9('0xc'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x17')]);router[_0x26e9('0x18')]('/:id/teams',auth[_0x26e9('0x8')](),controller[_0x26e9('0x19')]);router[_0x26e9('0x18')](_0x26e9('0x10'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x1a')]);module[_0x26e9('0x1b')]=router;
\ No newline at end of file
+var _0x0710=['create','/:id/teams','addTeams','addAgents','put','/:id','update','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','isAuthenticated','get','/describe','/:id/members','getMembers','getTeams','/:id/users','post'];(function(_0x286a25,_0x54920c){var _0xe2fb83=function(_0x51f26a){while(--_0x51f26a){_0x286a25['push'](_0x286a25['shift']());}};_0xe2fb83(++_0x54920c);}(_0x0710,0x119));var _0x0071=function(_0x9c08ca,_0x4d3960){_0x9c08ca=_0x9c08ca-0x0;var _0x26541e=_0x0710[_0x9c08ca];return _0x26541e;};'use strict';var multer=require(_0x0071('0x0'));var util=require(_0x0071('0x1'));var path=require(_0x0071('0x2'));var timeout=require(_0x0071('0x3'));var express=require(_0x0071('0x4'));var router=express[_0x0071('0x5')]();var fs_extra=require(_0x0071('0x6'));var auth=require(_0x0071('0x7'));var interaction=require(_0x0071('0x8'));var config=require(_0x0071('0x9'));var controller=require(_0x0071('0xa'));router['get']('/',auth[_0x0071('0xb')](),controller['index']);router[_0x0071('0xc')](_0x0071('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x0071('0xc')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x0071('0xc')](_0x0071('0xe'),auth[_0x0071('0xb')](),controller[_0x0071('0xf')]);router['get']('/:id/teams',auth[_0x0071('0xb')](),controller[_0x0071('0x10')]);router['get'](_0x0071('0x11'),auth[_0x0071('0xb')](),controller['getAgents']);router[_0x0071('0x12')]('/',auth[_0x0071('0xb')](),controller[_0x0071('0x13')]);router[_0x0071('0x12')](_0x0071('0x14'),auth[_0x0071('0xb')](),controller[_0x0071('0x15')]);router[_0x0071('0x12')](_0x0071('0x11'),auth['isAuthenticated'](),controller[_0x0071('0x16')]);router[_0x0071('0x17')](_0x0071('0x18'),auth[_0x0071('0xb')](),controller[_0x0071('0x19')]);router[_0x0071('0x1a')](_0x0071('0x18'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x0071('0x14'),auth[_0x0071('0xb')](),controller[_0x0071('0x1b')]);router['delete']('/:id/users',auth[_0x0071('0xb')](),controller[_0x0071('0x1c')]);module[_0x0071('0x1d')]=router;
\ No newline at end of file
index 643c711..3ca4baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x685e=['name','INTEGER','roundrobin','exports','STRING'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0x685e,0x10c));var _0xe685=function(_0x3f465d,_0xbd2037){_0x3f465d=_0x3f465d-0x0;var _0x121ad1=_0x685e[_0x3f465d];return _0x121ad1;};'use strict';var Sequelize=require('sequelize');module[_0xe685('0x0')]={'name':{'type':Sequelize[_0xe685('0x1')],'unique':_0xe685('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe685('0x1')]},'timeout':{'type':Sequelize[_0xe685('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall',_0xe685('0x4'))}};
\ No newline at end of file
+var _0x12df=['beepall','roundrobin','sequelize','INTEGER','ENUM'];(function(_0x2b2030,_0xe0bd92){var _0x5ea9d3=function(_0x35fc01){while(--_0x35fc01){_0x2b2030['push'](_0x2b2030['shift']());}};_0x5ea9d3(++_0xe0bd92);}(_0x12df,0x1bf));var _0xf12d=function(_0xa7a0ac,_0x2ca134){_0xa7a0ac=_0xa7a0ac-0x0;var _0x202519=_0x12df[_0xa7a0ac];return _0x202519;};'use strict';var Sequelize=require(_0xf12d('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xf12d('0x1')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf12d('0x2')]('rrmemory',_0xf12d('0x3'),_0xf12d('0x4'))}};
\ No newline at end of file
index 13bb17a..aee939b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9953=['role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','params','describe','getMembers','UserSmsQueue','pick','SmsQueueId','User','agent','smsPause','updatedAt','%s/%s','SIP','createdAt','getTeams','findOne','nolimit','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','transaction','emit','removeTeams','select','field','from','team_has_sms_queues','join','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','all','union','compact','removeAgents','userSmsQueue:remove','addAgents','omit','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','offset','limit','undefined','count','Content-Range','json','then','destroy','get','SmsQueues','UserProfileResource','end','error','stack','name','send','index','SmsQueue','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x2139fe,_0x3f259f){var _0x4bc055=function(_0xf328f1){while(--_0xf328f1){_0x2139fe['push'](_0x2139fe['shift']());}};_0x4bc055(++_0x3f259f);}(_0x9953,0x1d7));var _0x3995=function(_0x254f73,_0x532104){_0x254f73=_0x254f73-0x0;var _0x472f28=_0x9953[_0x254f73];return _0x472f28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3995('0x0'));var zipdir=require(_0x3995('0x1'));var jsonpatch=require(_0x3995('0x2'));var rp=require('request-promise');var moment=require(_0x3995('0x3'));var BPromise=require(_0x3995('0x4'));var Mustache=require(_0x3995('0x5'));var util=require(_0x3995('0x6'));var path=require(_0x3995('0x7'));var sox=require(_0x3995('0x8'));var csv=require('to-csv');var ejs=require(_0x3995('0x9'));var fs=require('fs');var fs_extra=require(_0x3995('0xa'));var _=require(_0x3995('0xb'));var squel=require(_0x3995('0xc'));var crypto=require(_0x3995('0xd'));var jsforce=require(_0x3995('0xe'));var deskjs=require(_0x3995('0xf'));var toCsv=require(_0x3995('0x10'));var querystring=require('querystring');var Papa=require(_0x3995('0x11'));var Redis=require(_0x3995('0x12'));var authService=require(_0x3995('0x13'));var qs=require(_0x3995('0x14'));var as=require(_0x3995('0x15'));var hardwareService=require(_0x3995('0x16'));var logger=require(_0x3995('0x17'))(_0x3995('0x18'));var utils=require(_0x3995('0x19'));var config=require(_0x3995('0x1a'));var licenseUtil=require(_0x3995('0x1b'));var db=require(_0x3995('0x1c'))['db'];config['redis']=_['defaults'](config[_0x3995('0x1d')],{'host':_0x3995('0x1e'),'port':0x18eb});var socket=require(_0x3995('0x1f'))(new Redis(config[_0x3995('0x1d')]));require('./smsQueue.socket')[_0x3995('0x20')](socket);function respondWithStatusCode(_0x2b45e2,_0x594907){_0x594907=_0x594907||0xcc;return function(_0x4cd5d4){if(_0x4cd5d4){return _0x2b45e2[_0x3995('0x21')](_0x594907);}return _0x2b45e2[_0x3995('0x22')](_0x594907)['end']();};}function respondWithResult(_0x2ac176,_0x5bb715){_0x5bb715=_0x5bb715||0xc8;return function(_0x4bf976){if(_0x4bf976){return _0x2ac176[_0x3995('0x22')](_0x5bb715)['json'](_0x4bf976);}};}function respondWithFilteredResult(_0x5d778d,_0x2f2447){return function(_0x7708d3){if(_0x7708d3){var _0x1e5c3b=typeof _0x2f2447[_0x3995('0x23')]==='undefined'&&typeof _0x2f2447[_0x3995('0x24')]===_0x3995('0x25');var _0x54cb15=_0x7708d3['count'];var _0x3ada52=_0x1e5c3b?0x0:_0x2f2447['offset'];var _0x51dffc=_0x1e5c3b?_0x7708d3[_0x3995('0x26')]:_0x2f2447['offset']+_0x2f2447['limit'];var _0x20f6e0;if(_0x51dffc>=_0x54cb15){_0x51dffc=_0x54cb15;_0x20f6e0=0xc8;}else{_0x20f6e0=0xce;}_0x5d778d[_0x3995('0x22')](_0x20f6e0);return _0x5d778d['set'](_0x3995('0x27'),_0x3ada52+'-'+_0x51dffc+'/'+_0x54cb15)[_0x3995('0x28')](_0x7708d3);}return null;};}function patchUpdates(_0x10af79){return function(_0x1ac3e5){try{jsonpatch['apply'](_0x1ac3e5,_0x10af79,!![]);}catch(_0x541a44){return BPromise['reject'](_0x541a44);}return _0x1ac3e5['save']();};}function saveUpdates(_0x9694ca,_0x6f504){return function(_0x1ae58c){if(_0x1ae58c){return _0x1ae58c['update'](_0x9694ca)[_0x3995('0x29')](function(_0x38379c){return _0x38379c;});}return null;};}function removeEntity(_0xd8d5b7,_0x26c11f){return function(_0x1c3ce9){if(_0x1c3ce9){return _0x1c3ce9[_0x3995('0x2a')]()['then'](function(){var _0x185289=_0x1c3ce9[_0x3995('0x2b')]({'plain':!![]});var _0x24d738=_0x3995('0x2c');return db[_0x3995('0x2d')][_0x3995('0x2a')]({'where':{'type':_0x24d738,'resourceId':_0x185289['id']}})['then'](function(){return _0x1c3ce9;});})[_0x3995('0x29')](function(){_0xd8d5b7[_0x3995('0x22')](0xcc)[_0x3995('0x2e')]();});}};}function handleEntityNotFound(_0x17ad01,_0x1c0592){return function(_0x4b252c){if(!_0x4b252c){_0x17ad01[_0x3995('0x21')](0x194);}return _0x4b252c;};}function handleError(_0x3e0f8f,_0xb3e50a){_0xb3e50a=_0xb3e50a||0x1f4;return function(_0x350a48){logger[_0x3995('0x2f')](_0x350a48[_0x3995('0x30')]);if(_0x350a48[_0x3995('0x31')]){delete _0x350a48[_0x3995('0x31')];}_0x3e0f8f[_0x3995('0x22')](_0xb3e50a)[_0x3995('0x32')](_0x350a48);};}exports[_0x3995('0x33')]=function(_0x4e133c,_0x1c3249){var _0x4472ac={},_0x120599={},_0x2bb7a3={'count':0x0,'rows':[]};var _0x5f59cb=_['map'](db[_0x3995('0x34')][_0x3995('0x35')],function(_0xf6d8da){return{'name':_0xf6d8da['fieldName'],'type':_0xf6d8da[_0x3995('0x36')][_0x3995('0x37')]};});_0x120599[_0x3995('0x38')]=_[_0x3995('0x39')](_0x5f59cb,_0x3995('0x31'));_0x120599[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x4e133c[_0x3995('0x3a')]);_0x120599[_0x3995('0x3c')]=_[_0x3995('0x3d')](_0x120599[_0x3995('0x38')],_0x120599['query']);_0x4472ac[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x120599[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x4e133c[_0x3995('0x3a')][_0x3995('0x3f')]));_0x4472ac[_0x3995('0x3e')]=_0x4472ac[_0x3995('0x3e')][_0x3995('0x40')]?_0x4472ac[_0x3995('0x3e')]:_0x120599[_0x3995('0x38')];if(!_0x4e133c[_0x3995('0x3a')][_0x3995('0x41')]('nolimit')){_0x4472ac[_0x3995('0x24')]=qs[_0x3995('0x24')](_0x4e133c['query'][_0x3995('0x24')]);_0x4472ac['offset']=qs[_0x3995('0x23')](_0x4e133c[_0x3995('0x3a')][_0x3995('0x23')]);}_0x4472ac[_0x3995('0x42')]=qs['sort'](_0x4e133c[_0x3995('0x3a')][_0x3995('0x43')]);_0x4472ac['where']=qs[_0x3995('0x3c')](_['pick'](_0x4e133c[_0x3995('0x3a')],_0x120599[_0x3995('0x3c')]),_0x5f59cb);if(_0x4e133c[_0x3995('0x3a')][_0x3995('0x44')]){_0x4472ac[_0x3995('0x45')]=_['merge'](_0x4472ac[_0x3995('0x45')],{'$or':_[_0x3995('0x39')](_0x5f59cb,function(_0x1ce32f){if(_0x1ce32f[_0x3995('0x36')]!==_0x3995('0x46')){var _0x5f3ab2={};_0x5f3ab2[_0x1ce32f[_0x3995('0x31')]]={'$like':'%'+_0x4e133c[_0x3995('0x3a')][_0x3995('0x44')]+'%'};return _0x5f3ab2;}})});}_0x4472ac=_[_0x3995('0x47')]({},_0x4472ac,_0x4e133c[_0x3995('0x48')]);var _0x2d7c1c={'where':_0x4472ac['where']};return db['SmsQueue'][_0x3995('0x26')](_0x2d7c1c)[_0x3995('0x29')](function(_0x38f34e){_0x2bb7a3['count']=_0x38f34e;if(_0x4e133c[_0x3995('0x3a')][_0x3995('0x49')]){_0x4472ac[_0x3995('0x4a')]=[{'all':!![]}];}return db[_0x3995('0x34')][_0x3995('0x4b')](_0x4472ac);})[_0x3995('0x29')](function(_0x3e9f29){_0x2bb7a3[_0x3995('0x4c')]=_0x3e9f29;return _0x2bb7a3;})[_0x3995('0x29')](respondWithFilteredResult(_0x1c3249,_0x4472ac))[_0x3995('0x4d')](handleError(_0x1c3249,null));};exports['show']=function(_0x58d83f,_0x187b43){var _0x56e3c6={'raw':!![],'where':{'id':_0x58d83f['params']['id']}},_0x261825={};_0x261825['model']=_[_0x3995('0x3b')](db['SmsQueue'][_0x3995('0x35')]);_0x261825[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x58d83f[_0x3995('0x3a')]);_0x261825[_0x3995('0x3c')]=_['intersection'](_0x261825[_0x3995('0x38')],_0x261825[_0x3995('0x3a')]);_0x56e3c6[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x261825[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x58d83f[_0x3995('0x3a')][_0x3995('0x3f')]));_0x56e3c6[_0x3995('0x3e')]=_0x56e3c6[_0x3995('0x3e')][_0x3995('0x40')]?_0x56e3c6[_0x3995('0x3e')]:_0x261825['model'];if(_0x58d83f[_0x3995('0x3a')]['includeAll']){_0x56e3c6[_0x3995('0x4a')]=[{'all':!![]}];}_0x56e3c6=_[_0x3995('0x47')]({},_0x56e3c6,_0x58d83f[_0x3995('0x48')]);return db['SmsQueue']['find'](_0x56e3c6)[_0x3995('0x29')](handleEntityNotFound(_0x187b43,null))['then'](respondWithResult(_0x187b43,null))[_0x3995('0x4d')](handleError(_0x187b43,null));};exports[_0x3995('0x4e')]=function(_0x5ea746,_0x2f5aa3){return db['SmsQueue'][_0x3995('0x4e')](_0x5ea746['body'],{})[_0x3995('0x29')](function(_0x346727){var _0x1f9661=_0x5ea746[_0x3995('0x4f')][_0x3995('0x2b')]({'plain':!![]});if(!_0x1f9661)throw new Error(_0x3995('0x50'));if(_0x1f9661[_0x3995('0x51')]===_0x3995('0x4f')){var _0x13b2bb=_0x346727[_0x3995('0x2b')]({'plain':!![]});var _0x9ee110=_0x3995('0x2c');return db[_0x3995('0x52')]['find']({'where':{'name':_0x9ee110,'userProfileId':_0x1f9661[_0x3995('0x53')]},'raw':!![]})[_0x3995('0x29')](function(_0x5f3e29){if(_0x5f3e29&&_0x5f3e29[_0x3995('0x54')]===0x0){return db[_0x3995('0x2d')]['create']({'name':_0x13b2bb[_0x3995('0x31')],'resourceId':_0x13b2bb['id'],'type':_0x5f3e29['name'],'sectionId':_0x5f3e29['id']},{})[_0x3995('0x29')](function(){return _0x346727;});}else{return _0x346727;}})[_0x3995('0x4d')](function(_0x3910de){logger['error'](_0x3995('0x55'),_0x3910de);throw _0x3910de;});}return _0x346727;})[_0x3995('0x29')](respondWithResult(_0x2f5aa3,0xc9))[_0x3995('0x4d')](handleError(_0x2f5aa3,null));};exports[_0x3995('0x56')]=function(_0x55bc87,_0x46b9df){if(_0x55bc87[_0x3995('0x57')]['id']){delete _0x55bc87['body']['id'];}return db['SmsQueue'][_0x3995('0x58')]({'where':{'id':_0x55bc87[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x46b9df,null))[_0x3995('0x29')](saveUpdates(_0x55bc87[_0x3995('0x57')],null))[_0x3995('0x29')](respondWithResult(_0x46b9df,null))[_0x3995('0x4d')](handleError(_0x46b9df,null));};exports['destroy']=function(_0x2ffdec,_0x3853d2){return db[_0x3995('0x34')][_0x3995('0x58')]({'where':{'id':_0x2ffdec[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3853d2,null))[_0x3995('0x29')](removeEntity(_0x3853d2,null))[_0x3995('0x4d')](handleError(_0x3853d2,null));};exports['describe']=function(_0xd0208a,_0x343047){return db[_0x3995('0x34')][_0x3995('0x5a')]()[_0x3995('0x29')](respondWithResult(_0x343047,null))['catch'](handleError(_0x343047,null));};exports[_0x3995('0x5b')]=function(_0x48ab18,_0x3b0161,_0xf90a5b){var _0x151b4f={'raw':!![],'where':{}},_0x388675={},_0x518b63;return db[_0x3995('0x34')]['findOne']({'where':{'id':_0x48ab18[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3b0161,null))['then'](function(_0x347943){if(_0x347943){_0x518b63=_0x347943['get']({'plain':!![]});_0x388675[_0x3995('0x38')]=_[_0x3995('0x3b')](db[_0x3995('0x5c')][_0x3995('0x35')]);_0x388675[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x48ab18[_0x3995('0x3a')]);_0x388675[_0x3995('0x3c')]=_[_0x3995('0x3d')](_0x388675[_0x3995('0x38')],_0x388675[_0x3995('0x3a')]);_0x151b4f[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x388675[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x48ab18[_0x3995('0x3a')][_0x3995('0x3f')]));_0x151b4f[_0x3995('0x3e')]=_0x151b4f['attributes'][_0x3995('0x40')]?_0x151b4f[_0x3995('0x3e')]:_0x388675[_0x3995('0x38')];if(!_0x48ab18[_0x3995('0x3a')]['hasOwnProperty']('nolimit')){_0x151b4f[_0x3995('0x24')]=qs[_0x3995('0x24')](_0x48ab18['query']['limit']);_0x151b4f[_0x3995('0x23')]=qs[_0x3995('0x23')](_0x48ab18[_0x3995('0x3a')][_0x3995('0x23')]);}_0x151b4f[_0x3995('0x42')]=qs[_0x3995('0x43')](_0x48ab18[_0x3995('0x3a')][_0x3995('0x43')]);_0x151b4f[_0x3995('0x45')]=qs['filters'](_[_0x3995('0x5d')](_0x48ab18[_0x3995('0x3a')],_0x388675[_0x3995('0x3c')]));_0x151b4f['where'][_0x3995('0x5e')]=_0x347943['id'];if(_0x48ab18[_0x3995('0x3a')][_0x3995('0x44')]){_0x151b4f[_0x3995('0x45')]=_[_0x3995('0x47')](_0x151b4f[_0x3995('0x45')],{'$or':_[_0x3995('0x39')](_0x151b4f[_0x3995('0x3e')],function(_0xc7339c){var _0x5f49c4={};_0x5f49c4[_0xc7339c]={'$like':'%'+_0x48ab18['query']['filter']+'%'};return _0x5f49c4;})});}_0x151b4f=_[_0x3995('0x47')]({},_0x151b4f,_0x48ab18[_0x3995('0x48')]);return db[_0x3995('0x5c')][_0x3995('0x4b')](_0x151b4f);}})[_0x3995('0x29')](function(_0x18b72e){if(_0x18b72e){return db[_0x3995('0x5f')]['findAndCountAll']({'where':{'id':_['map'](_0x18b72e,'UserId'),'role':_0x3995('0x60')},'attributes':['id','name',_0x3995('0x61'),_0x3995('0x62'),'createdAt']});}})['then'](function(_0x38cf5e){if(_0x38cf5e){return{'count':_0x38cf5e[_0x3995('0x26')],'rows':_['map'](_0x38cf5e['rows'],function(_0x58b67f){return{'membername':_0x58b67f[_0x3995('0x31')],'UserId':_0x58b67f['id'],'queue_name':_0x518b63['name'],'SmsQueueId':_0x518b63['id'],'interface':util['format'](_0x3995('0x63'),_0x3995('0x64'),_0x58b67f[_0x3995('0x31')]),'penalty':0x0,'paused':_0x58b67f[_0x3995('0x61')],'createdAt':_0x58b67f[_0x3995('0x65')],'updatedAt':_0x58b67f[_0x3995('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3995('0x29')](respondWithFilteredResult(_0x3b0161,_0x151b4f))[_0x3995('0x4d')](handleError(_0x3b0161,null));};exports[_0x3995('0x66')]=function(_0x26b274,_0x3a4306,_0x4075f1){var _0x2330bf={};var _0x1a9600={};var _0x59cd7e;var _0x591b91;return db[_0x3995('0x34')][_0x3995('0x67')]({'where':{'id':_0x26b274[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3a4306,null))[_0x3995('0x29')](function(_0x97586a){if(_0x97586a){_0x59cd7e=_0x97586a;_0x1a9600[_0x3995('0x38')]=_[_0x3995('0x3b')](db['Team'][_0x3995('0x35')]);_0x1a9600['query']=_[_0x3995('0x3b')](_0x26b274[_0x3995('0x3a')]);_0x1a9600[_0x3995('0x3c')]=_[_0x3995('0x3d')](_0x1a9600['model'],_0x1a9600[_0x3995('0x3a')]);_0x2330bf[_0x3995('0x3e')]=_['intersection'](_0x1a9600[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x26b274['query'][_0x3995('0x3f')]));_0x2330bf[_0x3995('0x3e')]=_0x2330bf['attributes'][_0x3995('0x40')]?_0x2330bf['attributes']:_0x1a9600[_0x3995('0x38')];_0x2330bf['order']=qs[_0x3995('0x43')](_0x26b274[_0x3995('0x3a')][_0x3995('0x43')]);_0x2330bf[_0x3995('0x45')]=qs[_0x3995('0x3c')](_[_0x3995('0x5d')](_0x26b274[_0x3995('0x3a')],_0x1a9600[_0x3995('0x3c')]));if(_0x26b274['query'][_0x3995('0x44')]){_0x2330bf[_0x3995('0x45')]=_['merge'](_0x2330bf[_0x3995('0x45')],{'$or':_['map'](_0x2330bf[_0x3995('0x3e')],function(_0x43c5f9){var _0x5c9c99={};_0x5c9c99[_0x43c5f9]={'$like':'%'+_0x26b274[_0x3995('0x3a')][_0x3995('0x44')]+'%'};return _0x5c9c99;})});}_0x2330bf=_[_0x3995('0x47')]({},_0x2330bf,_0x26b274[_0x3995('0x48')]);return _0x59cd7e['getTeams'](_0x2330bf);}})['then'](function(_0x513049){if(_0x513049){_0x591b91=_0x513049[_0x3995('0x40')];if(!_0x26b274[_0x3995('0x3a')][_0x3995('0x41')](_0x3995('0x68'))){_0x2330bf[_0x3995('0x24')]=qs['limit'](_0x26b274[_0x3995('0x3a')][_0x3995('0x24')]);_0x2330bf[_0x3995('0x23')]=qs[_0x3995('0x23')](_0x26b274[_0x3995('0x3a')][_0x3995('0x23')]);}return _0x59cd7e['getTeams'](_0x2330bf);}})['then'](function(_0x2ce960){if(_0x2ce960){return _0x2ce960?{'count':_0x591b91,'rows':_0x2ce960}:null;}})[_0x3995('0x29')](respondWithResult(_0x3a4306,null))['catch'](handleError(_0x3a4306,null));};exports[_0x3995('0x69')]=function(_0x424c9f,_0x1bbe9c,_0x2df133){var _0x440b07=_0x424c9f[_0x3995('0x57')][_0x3995('0x6a')];return db[_0x3995('0x6b')][_0x3995('0x4b')]({'where':{'id':_0x440b07},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3995('0x6c'),'attributes':['id',_0x3995('0x31'),_0x3995('0x6d'),_0x3995('0x6e'),_0x3995('0x6f')],'raw':!![]}]})[_0x3995('0x29')](function(_0x1a9734){if(_0x1a9734){var _0x4c84be=_[_0x3995('0x70')](_0x1a9734,function(_0x2d379a){var _0x4be035=_0x2d379a[_0x3995('0x2b')]({'plain':!![]});return _0x4be035[_0x3995('0x6c')];});return db[_0x3995('0x34')][_0x3995('0x58')]({'where':{'id':_0x424c9f[_0x3995('0x59')]['id']}})['then'](function(_0x2e0a77){return db['sequelize'][_0x3995('0x71')](function(_0x35e215){return _0x2e0a77['addTeams'](_0x440b07,{'transaction':_0x35e215})[_0x3995('0x29')](function(){return BPromise['each'](_0x4c84be,function(_0x12314e){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0x12314e['id'],'SmsQueueId':_0x424c9f[_0x3995('0x59')]['id']},'transaction':_0x35e215});});})[_0x3995('0x29')](function(){_0x4c84be['forEach'](function(_0x528816){socket[_0x3995('0x72')]('userSmsQueue:save',{'UserId':_0x528816['id'],'SmsQueueId':_0x2e0a77['id']});});});});});}})[_0x3995('0x29')](respondWithStatusCode(_0x1bbe9c,null))['catch'](handleError(_0x1bbe9c,null));};exports[_0x3995('0x73')]=function(_0x2c70f0,_0x3483e4,_0x1a5540){return db['Team'][_0x3995('0x4b')]({'where':{'id':_0x2c70f0[_0x3995('0x3a')][_0x3995('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x3995('0x5f')],'as':_0x3995('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x3995('0x29')](handleEntityNotFound(_0x3483e4,null))[_0x3995('0x29')](function(_0x24ec06){var _0x10c2bd=_[_0x3995('0x39')](_0x24ec06,'id');var _0x5da097=[];var _0x2a0e51=[];var _0x50eb1e=squel[_0x3995('0x74')]();_0x50eb1e[_0x3995('0x75')]('tq.TeamId')[_0x3995('0x76')](_0x3995('0x77'),'tq')[_0x3995('0x78')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3995('0x45')](_0x3995('0x79'),_0x2c70f0[_0x3995('0x59')]['id']);for(var _0x106028=0x0;_0x106028<_0x24ec06[_0x3995('0x40')];_0x106028+=0x1){let _0xb7232a=_0x24ec06[_0x106028];for(var _0x26d914=0x0;_0x26d914<_0xb7232a['Agents'][_0x3995('0x40')];_0x26d914+=0x1){let _0x364ec0=_0xb7232a[_0x3995('0x6c')][_0x26d914];var _0x4f9e4e=_0x50eb1e[_0x3995('0x7a')]();_0x4f9e4e['where'](_0x3995('0x7b'),_0x364ec0['id']);_0x2a0e51[_0x3995('0x7c')](db[_0x3995('0x7d')][_0x3995('0x3a')](_0x4f9e4e[_0x3995('0x7e')](),{'type':db[_0x3995('0x7d')][_0x3995('0x7f')][_0x3995('0x80')]})[_0x3995('0x29')](function(_0x5bcb94){if(_0x5bcb94[_0x3995('0x40')]===0x1){return _0x364ec0['id'];}else{var _0x5c0994=_[_0x3995('0x81')](_[_0x3995('0x39')](_0x5bcb94,'TeamId'),function(_0x228827){return _['includes'](_0x10c2bd,_0x228827);});if(_0x5c0994){return _0x364ec0['id'];}}}));}}return BPromise[_0x3995('0x82')](_0x2a0e51)['then'](function(_0x3b82f4){_0x5da097=_(_0x5da097)[_0x3995('0x83')](_0x3b82f4)[_0x3995('0x84')]()['value']();return db[_0x3995('0x34')]['find']({'where':{'id':_0x2c70f0[_0x3995('0x59')]['id']}})[_0x3995('0x29')](function(_0x27c01a){return db[_0x3995('0x7d')]['transaction'](function(_0x43143c){return _0x27c01a[_0x3995('0x73')](_0x2c70f0['query']['ids'],{'transaction':_0x43143c})[_0x3995('0x29')](function(){if(!_['isEmpty'](_0x5da097)){return _0x27c01a[_0x3995('0x85')](_0x5da097,{'transaction':_0x43143c});}})[_0x3995('0x29')](function(){_0x5da097['forEach'](function(_0x17e417){socket[_0x3995('0x72')](_0x3995('0x86'),{'UserId':_0x17e417,'SmsQueueId':_0x27c01a['id']});});});});});});})[_0x3995('0x29')](respondWithStatusCode(_0x3483e4,null))['catch'](handleError(_0x3483e4,null));};exports[_0x3995('0x87')]=function(_0x8fd9b1,_0x36f9c7,_0x42b5d7){return db['SmsQueue'][_0x3995('0x58')]({'where':{'id':_0x8fd9b1[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x36f9c7,null))[_0x3995('0x29')](function(_0xf55476){if(_0xf55476){return _0xf55476['addAgents'](_0x8fd9b1[_0x3995('0x57')][_0x3995('0x6a')],_[_0x3995('0x88')](_0x8fd9b1[_0x3995('0x57')],['ids','id'])||{})['spread'](function(_0xcc5523){for(var _0x2eb832=0x0;_0x2eb832<_0x8fd9b1[_0x3995('0x57')][_0x3995('0x6a')][_0x3995('0x40')];_0x2eb832+=0x1){socket[_0x3995('0x72')]('userSmsQueue:save',{'UserId':Number(_0x8fd9b1[_0x3995('0x57')][_0x3995('0x6a')][_0x2eb832]),'SmsQueueId':Number(_0x8fd9b1[_0x3995('0x59')]['id'])});}return _0xcc5523;});}})[_0x3995('0x29')](respondWithResult(_0x36f9c7,null))['catch'](handleError(_0x36f9c7,null));};exports[_0x3995('0x85')]=function(_0xfa715a,_0x3ac77e,_0x58129a){return db['SmsQueue']['find']({'where':{'id':_0xfa715a[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3ac77e,null))[_0x3995('0x29')](function(_0x2a2aed){if(_0x2a2aed){return _0x2a2aed[_0x3995('0x85')](_0xfa715a[_0x3995('0x3a')][_0x3995('0x6a')])[_0x3995('0x29')](function(){if(_['isArray'](_0xfa715a[_0x3995('0x3a')][_0x3995('0x6a')])){for(var _0x35c162=0x0;_0x35c162<_0xfa715a[_0x3995('0x3a')][_0x3995('0x6a')]['length'];_0x35c162+=0x1){socket[_0x3995('0x72')](_0x3995('0x86'),{'UserId':Number(_0xfa715a['query'][_0x3995('0x6a')][_0x35c162]),'SmsQueueId':Number(_0xfa715a[_0x3995('0x59')]['id'])});}}else{socket[_0x3995('0x72')](_0x3995('0x86'),{'UserId':Number(_0xfa715a['query']['ids']),'SmsQueueId':Number(_0xfa715a[_0x3995('0x59')]['id'])});}});}})[_0x3995('0x29')](respondWithStatusCode(_0x3ac77e,null))[_0x3995('0x4d')](handleError(_0x3ac77e,null));};exports[_0x3995('0x89')]=function(_0x43f801,_0x17693d,_0x422826){var _0x3ca0dd={};var _0x40e2ed={};var _0x3e453c;var _0x3f0c04;return db[_0x3995('0x34')][_0x3995('0x67')]({'where':{'id':_0x43f801[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x17693d,null))[_0x3995('0x29')](function(_0xc1b063){if(_0xc1b063){_0x3e453c=_0xc1b063;_0x40e2ed[_0x3995('0x38')]=_['keys'](db[_0x3995('0x5f')]['rawAttributes']);_0x40e2ed[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x43f801[_0x3995('0x3a')]);_0x40e2ed[_0x3995('0x3c')]=_['intersection'](_0x40e2ed[_0x3995('0x38')],_0x40e2ed['query']);_0x3ca0dd[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x40e2ed[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x43f801[_0x3995('0x3a')]['fields']));_0x3ca0dd[_0x3995('0x3e')]=_0x3ca0dd[_0x3995('0x3e')][_0x3995('0x40')]?_0x3ca0dd['attributes']:_0x40e2ed['model'];_0x3ca0dd[_0x3995('0x42')]=qs[_0x3995('0x43')](_0x43f801['query']['sort']);_0x3ca0dd[_0x3995('0x45')]=qs['filters'](_[_0x3995('0x5d')](_0x43f801[_0x3995('0x3a')],_0x40e2ed[_0x3995('0x3c')]));if(_0x43f801[_0x3995('0x3a')]['filter']){_0x3ca0dd[_0x3995('0x45')]=_[_0x3995('0x47')](_0x3ca0dd[_0x3995('0x45')],{'$or':_[_0x3995('0x39')](_0x3ca0dd[_0x3995('0x3e')],function(_0x554526){var _0x274e53={};_0x274e53[_0x554526]={'$like':'%'+_0x43f801['query'][_0x3995('0x44')]+'%'};return _0x274e53;})});}_0x3ca0dd=_[_0x3995('0x47')]({},_0x3ca0dd,_0x43f801[_0x3995('0x48')]);return _0x3e453c[_0x3995('0x89')](_0x3ca0dd);}})[_0x3995('0x29')](function(_0xa70dbf){if(_0xa70dbf){_0x3f0c04=_0xa70dbf[_0x3995('0x40')];if(!_0x43f801[_0x3995('0x3a')]['hasOwnProperty'](_0x3995('0x68'))){_0x3ca0dd['limit']=qs[_0x3995('0x24')](_0x43f801[_0x3995('0x3a')][_0x3995('0x24')]);_0x3ca0dd['offset']=qs[_0x3995('0x23')](_0x43f801[_0x3995('0x3a')][_0x3995('0x23')]);}return _0x3e453c[_0x3995('0x89')](_0x3ca0dd);}})['then'](function(_0x5028a5){if(_0x5028a5){return _0x5028a5?{'count':_0x3f0c04,'rows':_0x5028a5}:null;}})[_0x3995('0x29')](respondWithResult(_0x17693d,null))['catch'](handleError(_0x17693d,null));};
\ No newline at end of file
+var _0x40ca=['omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','defaults','redis','./smsQueue.socket','register','sendStatus','status','end','json','limit','undefined','count','set','Content-Range','reject','save','update','then','SmsQueues','UserProfileResource','destroy','error','index','map','fieldName','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','merge','type','VIRTUAL','filter','SmsQueue','includeAll','include','catch','show','params','rawAttributes','length','options','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','describe','getMembers','findOne','UserSmsQueue','pick','SmsQueueId','findAll','User','findAndCountAll','updatedAt','createdAt','rows','%s/%s','SIP','smsPause','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','get','Agents','sequelize','forEach','emit','removeTeams','select','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','removeAgents','userSmsQueue:remove','addAgents'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x40ca,0x119));var _0xa40c=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x40ca[_0x311c35];return _0x5cc50c;};'use strict';var emlformat=require(_0xa40c('0x0'));var rimraf=require(_0xa40c('0x1'));var zipdir=require(_0xa40c('0x2'));var jsonpatch=require(_0xa40c('0x3'));var rp=require(_0xa40c('0x4'));var moment=require(_0xa40c('0x5'));var BPromise=require(_0xa40c('0x6'));var Mustache=require(_0xa40c('0x7'));var util=require(_0xa40c('0x8'));var path=require('path');var sox=require(_0xa40c('0x9'));var csv=require(_0xa40c('0xa'));var ejs=require(_0xa40c('0xb'));var fs=require('fs');var fs_extra=require(_0xa40c('0xc'));var _=require(_0xa40c('0xd'));var squel=require(_0xa40c('0xe'));var crypto=require(_0xa40c('0xf'));var jsforce=require(_0xa40c('0x10'));var deskjs=require(_0xa40c('0x11'));var toCsv=require(_0xa40c('0xa'));var querystring=require(_0xa40c('0x12'));var Papa=require('papaparse');var Redis=require(_0xa40c('0x13'));var authService=require(_0xa40c('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xa40c('0x15'));var hardwareService=require(_0xa40c('0x16'));var logger=require(_0xa40c('0x17'))(_0xa40c('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa40c('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xa40c('0x1a')](config[_0xa40c('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa40c('0x1b')]));require(_0xa40c('0x1c'))[_0xa40c('0x1d')](socket);function respondWithStatusCode(_0xdacee2,_0x177709){_0x177709=_0x177709||0xcc;return function(_0x2d3f24){if(_0x2d3f24){return _0xdacee2[_0xa40c('0x1e')](_0x177709);}return _0xdacee2[_0xa40c('0x1f')](_0x177709)[_0xa40c('0x20')]();};}function respondWithResult(_0x48a826,_0x33059c){_0x33059c=_0x33059c||0xc8;return function(_0x1287f6){if(_0x1287f6){return _0x48a826[_0xa40c('0x1f')](_0x33059c)[_0xa40c('0x21')](_0x1287f6);}};}function respondWithFilteredResult(_0x176703,_0x141e7e){return function(_0x4ae96a){if(_0x4ae96a){var _0x209612=typeof _0x141e7e['offset']==='undefined'&&typeof _0x141e7e[_0xa40c('0x22')]===_0xa40c('0x23');var _0x497ff9=_0x4ae96a[_0xa40c('0x24')];var _0x207e08=_0x209612?0x0:_0x141e7e['offset'];var _0x2961eb=_0x209612?_0x4ae96a[_0xa40c('0x24')]:_0x141e7e['offset']+_0x141e7e['limit'];var _0x13842e;if(_0x2961eb>=_0x497ff9){_0x2961eb=_0x497ff9;_0x13842e=0xc8;}else{_0x13842e=0xce;}_0x176703[_0xa40c('0x1f')](_0x13842e);return _0x176703[_0xa40c('0x25')](_0xa40c('0x26'),_0x207e08+'-'+_0x2961eb+'/'+_0x497ff9)[_0xa40c('0x21')](_0x4ae96a);}return null;};}function patchUpdates(_0xc81aa){return function(_0x5aad96){try{jsonpatch['apply'](_0x5aad96,_0xc81aa,!![]);}catch(_0xf98680){return BPromise[_0xa40c('0x27')](_0xf98680);}return _0x5aad96[_0xa40c('0x28')]();};}function saveUpdates(_0x4ae99f,_0x251214){return function(_0xa6cdbd){if(_0xa6cdbd){return _0xa6cdbd[_0xa40c('0x29')](_0x4ae99f)[_0xa40c('0x2a')](function(_0x133aaa){return _0x133aaa;});}return null;};}function removeEntity(_0x56c2d5,_0x40a9f3){return function(_0x4a2faa){if(_0x4a2faa){return _0x4a2faa['destroy']()[_0xa40c('0x2a')](function(){var _0x4878ed=_0x4a2faa['get']({'plain':!![]});var _0x3ff05b=_0xa40c('0x2b');return db[_0xa40c('0x2c')][_0xa40c('0x2d')]({'where':{'type':_0x3ff05b,'resourceId':_0x4878ed['id']}})['then'](function(){return _0x4a2faa;});})[_0xa40c('0x2a')](function(){_0x56c2d5['status'](0xcc)[_0xa40c('0x20')]();});}};}function handleEntityNotFound(_0x1b2c61,_0x4ce172){return function(_0x454507){if(!_0x454507){_0x1b2c61[_0xa40c('0x1e')](0x194);}return _0x454507;};}function handleError(_0x310d86,_0x2c0289){_0x2c0289=_0x2c0289||0x1f4;return function(_0x2e8801){logger[_0xa40c('0x2e')](_0x2e8801['stack']);if(_0x2e8801['name']){delete _0x2e8801['name'];}_0x310d86['status'](_0x2c0289)['send'](_0x2e8801);};}exports[_0xa40c('0x2f')]=function(_0x54d5bc,_0x44d546){var _0x47932a={},_0x41ebf7={},_0x4ed9f0={'count':0x0,'rows':[]};var _0x5b83bf=_[_0xa40c('0x30')](db['SmsQueue']['rawAttributes'],function(_0xceeb23){return{'name':_0xceeb23[_0xa40c('0x31')],'type':_0xceeb23['type'][_0xa40c('0x32')]};});_0x41ebf7[_0xa40c('0x33')]=_[_0xa40c('0x30')](_0x5b83bf,_0xa40c('0x34'));_0x41ebf7[_0xa40c('0x35')]=_[_0xa40c('0x36')](_0x54d5bc['query']);_0x41ebf7[_0xa40c('0x37')]=_[_0xa40c('0x38')](_0x41ebf7['model'],_0x41ebf7[_0xa40c('0x35')]);_0x47932a[_0xa40c('0x39')]=_[_0xa40c('0x38')](_0x41ebf7['model'],qs['fields'](_0x54d5bc['query'][_0xa40c('0x3a')]));_0x47932a[_0xa40c('0x39')]=_0x47932a[_0xa40c('0x39')]['length']?_0x47932a[_0xa40c('0x39')]:_0x41ebf7['model'];if(!_0x54d5bc['query'][_0xa40c('0x3b')](_0xa40c('0x3c'))){_0x47932a[_0xa40c('0x22')]=qs[_0xa40c('0x22')](_0x54d5bc[_0xa40c('0x35')][_0xa40c('0x22')]);_0x47932a['offset']=qs['offset'](_0x54d5bc['query'][_0xa40c('0x3d')]);}_0x47932a[_0xa40c('0x3e')]=qs[_0xa40c('0x3f')](_0x54d5bc[_0xa40c('0x35')][_0xa40c('0x3f')]);_0x47932a['where']=qs[_0xa40c('0x37')](_['pick'](_0x54d5bc[_0xa40c('0x35')],_0x41ebf7['filters']),_0x5b83bf);if(_0x54d5bc[_0xa40c('0x35')]['filter']){_0x47932a[_0xa40c('0x40')]=_[_0xa40c('0x41')](_0x47932a[_0xa40c('0x40')],{'$or':_[_0xa40c('0x30')](_0x5b83bf,function(_0x1a0b03){if(_0x1a0b03[_0xa40c('0x42')]!==_0xa40c('0x43')){var _0x46b62c={};_0x46b62c[_0x1a0b03['name']]={'$like':'%'+_0x54d5bc['query'][_0xa40c('0x44')]+'%'};return _0x46b62c;}})});}_0x47932a=_[_0xa40c('0x41')]({},_0x47932a,_0x54d5bc['options']);var _0xb1dfa8={'where':_0x47932a[_0xa40c('0x40')]};return db[_0xa40c('0x45')][_0xa40c('0x24')](_0xb1dfa8)['then'](function(_0x52cb01){_0x4ed9f0[_0xa40c('0x24')]=_0x52cb01;if(_0x54d5bc[_0xa40c('0x35')][_0xa40c('0x46')]){_0x47932a[_0xa40c('0x47')]=[{'all':!![]}];}return db['SmsQueue']['findAll'](_0x47932a);})[_0xa40c('0x2a')](function(_0x412f39){_0x4ed9f0['rows']=_0x412f39;return _0x4ed9f0;})[_0xa40c('0x2a')](respondWithFilteredResult(_0x44d546,_0x47932a))[_0xa40c('0x48')](handleError(_0x44d546,null));};exports[_0xa40c('0x49')]=function(_0x1a18fe,_0x41cf0a){var _0x2f6ea6={'raw':!![],'where':{'id':_0x1a18fe[_0xa40c('0x4a')]['id']}},_0x16547a={};_0x16547a[_0xa40c('0x33')]=_[_0xa40c('0x36')](db[_0xa40c('0x45')][_0xa40c('0x4b')]);_0x16547a[_0xa40c('0x35')]=_[_0xa40c('0x36')](_0x1a18fe['query']);_0x16547a[_0xa40c('0x37')]=_[_0xa40c('0x38')](_0x16547a[_0xa40c('0x33')],_0x16547a[_0xa40c('0x35')]);_0x2f6ea6[_0xa40c('0x39')]=_[_0xa40c('0x38')](_0x16547a[_0xa40c('0x33')],qs['fields'](_0x1a18fe[_0xa40c('0x35')][_0xa40c('0x3a')]));_0x2f6ea6['attributes']=_0x2f6ea6[_0xa40c('0x39')][_0xa40c('0x4c')]?_0x2f6ea6[_0xa40c('0x39')]:_0x16547a[_0xa40c('0x33')];if(_0x1a18fe[_0xa40c('0x35')]['includeAll']){_0x2f6ea6[_0xa40c('0x47')]=[{'all':!![]}];}_0x2f6ea6=_[_0xa40c('0x41')]({},_0x2f6ea6,_0x1a18fe[_0xa40c('0x4d')]);return db[_0xa40c('0x45')][_0xa40c('0x4e')](_0x2f6ea6)[_0xa40c('0x2a')](handleEntityNotFound(_0x41cf0a,null))['then'](respondWithResult(_0x41cf0a,null))['catch'](handleError(_0x41cf0a,null));};exports[_0xa40c('0x4f')]=function(_0x95e65b,_0x57ca39){return db[_0xa40c('0x45')][_0xa40c('0x4f')](_0x95e65b[_0xa40c('0x50')],{})[_0xa40c('0x2a')](function(_0x53b6a4){var _0x18747a=_0x95e65b['user']['get']({'plain':!![]});if(!_0x18747a)throw new Error(_0xa40c('0x51'));if(_0x18747a[_0xa40c('0x52')]===_0xa40c('0x53')){var _0x5df032=_0x53b6a4['get']({'plain':!![]});var _0x306fef=_0xa40c('0x2b');return db[_0xa40c('0x54')][_0xa40c('0x4e')]({'where':{'name':_0x306fef,'userProfileId':_0x18747a[_0xa40c('0x55')]},'raw':!![]})['then'](function(_0x1c49bb){if(_0x1c49bb&&_0x1c49bb[_0xa40c('0x56')]===0x0){return db[_0xa40c('0x2c')]['create']({'name':_0x5df032[_0xa40c('0x34')],'resourceId':_0x5df032['id'],'type':_0x1c49bb[_0xa40c('0x34')],'sectionId':_0x1c49bb['id']},{})[_0xa40c('0x2a')](function(){return _0x53b6a4;});}else{return _0x53b6a4;}})[_0xa40c('0x48')](function(_0x542464){logger['error'](_0xa40c('0x57'),_0x542464);throw _0x542464;});}return _0x53b6a4;})[_0xa40c('0x2a')](respondWithResult(_0x57ca39,0xc9))[_0xa40c('0x48')](handleError(_0x57ca39,null));};exports[_0xa40c('0x29')]=function(_0x454998,_0x3358ad){if(_0x454998[_0xa40c('0x50')]['id']){delete _0x454998[_0xa40c('0x50')]['id'];}return db[_0xa40c('0x45')][_0xa40c('0x4e')]({'where':{'id':_0x454998[_0xa40c('0x4a')]['id']}})[_0xa40c('0x2a')](handleEntityNotFound(_0x3358ad,null))['then'](saveUpdates(_0x454998[_0xa40c('0x50')],null))[_0xa40c('0x2a')](respondWithResult(_0x3358ad,null))[_0xa40c('0x48')](handleError(_0x3358ad,null));};exports[_0xa40c('0x2d')]=function(_0x50c93b,_0x1f25f4){return db[_0xa40c('0x45')][_0xa40c('0x4e')]({'where':{'id':_0x50c93b['params']['id']}})[_0xa40c('0x2a')](handleEntityNotFound(_0x1f25f4,null))[_0xa40c('0x2a')](removeEntity(_0x1f25f4,null))['catch'](handleError(_0x1f25f4,null));};exports[_0xa40c('0x58')]=function(_0x353ce8,_0x3ac905){return db[_0xa40c('0x45')][_0xa40c('0x58')]()[_0xa40c('0x2a')](respondWithResult(_0x3ac905,null))[_0xa40c('0x48')](handleError(_0x3ac905,null));};exports[_0xa40c('0x59')]=function(_0xce78f8,_0x336112,_0xded281){var _0x547b0a={'raw':!![],'where':{}},_0x584009={},_0x24b77c;return db[_0xa40c('0x45')][_0xa40c('0x5a')]({'where':{'id':_0xce78f8[_0xa40c('0x4a')]['id']}})[_0xa40c('0x2a')](handleEntityNotFound(_0x336112,null))[_0xa40c('0x2a')](function(_0x2fb046){if(_0x2fb046){_0x24b77c=_0x2fb046['get']({'plain':!![]});_0x584009[_0xa40c('0x33')]=_[_0xa40c('0x36')](db[_0xa40c('0x5b')]['rawAttributes']);_0x584009['query']=_['keys'](_0xce78f8[_0xa40c('0x35')]);_0x584009[_0xa40c('0x37')]=_[_0xa40c('0x38')](_0x584009[_0xa40c('0x33')],_0x584009[_0xa40c('0x35')]);_0x547b0a['attributes']=_[_0xa40c('0x38')](_0x584009[_0xa40c('0x33')],qs[_0xa40c('0x3a')](_0xce78f8[_0xa40c('0x35')][_0xa40c('0x3a')]));_0x547b0a[_0xa40c('0x39')]=_0x547b0a[_0xa40c('0x39')][_0xa40c('0x4c')]?_0x547b0a[_0xa40c('0x39')]:_0x584009['model'];if(!_0xce78f8[_0xa40c('0x35')]['hasOwnProperty']('nolimit')){_0x547b0a[_0xa40c('0x22')]=qs['limit'](_0xce78f8[_0xa40c('0x35')]['limit']);_0x547b0a['offset']=qs[_0xa40c('0x3d')](_0xce78f8[_0xa40c('0x35')][_0xa40c('0x3d')]);}_0x547b0a[_0xa40c('0x3e')]=qs[_0xa40c('0x3f')](_0xce78f8[_0xa40c('0x35')][_0xa40c('0x3f')]);_0x547b0a[_0xa40c('0x40')]=qs[_0xa40c('0x37')](_[_0xa40c('0x5c')](_0xce78f8['query'],_0x584009[_0xa40c('0x37')]));_0x547b0a['where'][_0xa40c('0x5d')]=_0x2fb046['id'];if(_0xce78f8['query'][_0xa40c('0x44')]){_0x547b0a['where']=_['merge'](_0x547b0a[_0xa40c('0x40')],{'$or':_[_0xa40c('0x30')](_0x547b0a[_0xa40c('0x39')],function(_0x97b3a3){var _0x220bc8={};_0x220bc8[_0x97b3a3]={'$like':'%'+_0xce78f8[_0xa40c('0x35')][_0xa40c('0x44')]+'%'};return _0x220bc8;})});}_0x547b0a=_[_0xa40c('0x41')]({},_0x547b0a,_0xce78f8[_0xa40c('0x4d')]);return db[_0xa40c('0x5b')][_0xa40c('0x5e')](_0x547b0a);}})[_0xa40c('0x2a')](function(_0x395a57){if(_0x395a57){return db[_0xa40c('0x5f')][_0xa40c('0x60')]({'where':{'id':_[_0xa40c('0x30')](_0x395a57,'UserId'),'role':'agent'},'attributes':['id',_0xa40c('0x34'),'smsPause',_0xa40c('0x61'),_0xa40c('0x62')]});}})[_0xa40c('0x2a')](function(_0x940fb5){if(_0x940fb5){return{'count':_0x940fb5[_0xa40c('0x24')],'rows':_[_0xa40c('0x30')](_0x940fb5[_0xa40c('0x63')],function(_0x25dfd9){return{'membername':_0x25dfd9[_0xa40c('0x34')],'UserId':_0x25dfd9['id'],'queue_name':_0x24b77c[_0xa40c('0x34')],'SmsQueueId':_0x24b77c['id'],'interface':util['format'](_0xa40c('0x64'),_0xa40c('0x65'),_0x25dfd9[_0xa40c('0x34')]),'penalty':0x0,'paused':_0x25dfd9[_0xa40c('0x66')],'createdAt':_0x25dfd9['createdAt'],'updatedAt':_0x25dfd9['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x336112,_0x547b0a))[_0xa40c('0x48')](handleError(_0x336112,null));};exports[_0xa40c('0x67')]=function(_0x5f184f,_0x1c105e,_0x55a4b0){var _0x482507={};var _0x4a6422={};var _0x114778;var _0x1d5ad3;return db[_0xa40c('0x45')][_0xa40c('0x5a')]({'where':{'id':_0x5f184f[_0xa40c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1c105e,null))['then'](function(_0x19091b){if(_0x19091b){_0x114778=_0x19091b;_0x4a6422['model']=_[_0xa40c('0x36')](db[_0xa40c('0x68')][_0xa40c('0x4b')]);_0x4a6422[_0xa40c('0x35')]=_['keys'](_0x5f184f[_0xa40c('0x35')]);_0x4a6422['filters']=_['intersection'](_0x4a6422['model'],_0x4a6422[_0xa40c('0x35')]);_0x482507[_0xa40c('0x39')]=_['intersection'](_0x4a6422[_0xa40c('0x33')],qs[_0xa40c('0x3a')](_0x5f184f['query']['fields']));_0x482507[_0xa40c('0x39')]=_0x482507[_0xa40c('0x39')][_0xa40c('0x4c')]?_0x482507[_0xa40c('0x39')]:_0x4a6422[_0xa40c('0x33')];_0x482507['order']=qs[_0xa40c('0x3f')](_0x5f184f[_0xa40c('0x35')][_0xa40c('0x3f')]);_0x482507[_0xa40c('0x40')]=qs['filters'](_['pick'](_0x5f184f[_0xa40c('0x35')],_0x4a6422[_0xa40c('0x37')]));if(_0x5f184f[_0xa40c('0x35')]['filter']){_0x482507['where']=_[_0xa40c('0x41')](_0x482507[_0xa40c('0x40')],{'$or':_[_0xa40c('0x30')](_0x482507[_0xa40c('0x39')],function(_0x328290){var _0x18085b={};_0x18085b[_0x328290]={'$like':'%'+_0x5f184f[_0xa40c('0x35')][_0xa40c('0x44')]+'%'};return _0x18085b;})});}_0x482507=_[_0xa40c('0x41')]({},_0x482507,_0x5f184f['options']);return _0x114778[_0xa40c('0x67')](_0x482507);}})[_0xa40c('0x2a')](function(_0xb02fb3){if(_0xb02fb3){_0x1d5ad3=_0xb02fb3[_0xa40c('0x4c')];if(!_0x5f184f[_0xa40c('0x35')][_0xa40c('0x3b')]('nolimit')){_0x482507[_0xa40c('0x22')]=qs[_0xa40c('0x22')](_0x5f184f[_0xa40c('0x35')][_0xa40c('0x22')]);_0x482507[_0xa40c('0x3d')]=qs[_0xa40c('0x3d')](_0x5f184f[_0xa40c('0x35')][_0xa40c('0x3d')]);}return _0x114778[_0xa40c('0x67')](_0x482507);}})[_0xa40c('0x2a')](function(_0x2593a5){if(_0x2593a5){return _0x2593a5?{'count':_0x1d5ad3,'rows':_0x2593a5}:null;}})[_0xa40c('0x2a')](respondWithResult(_0x1c105e,null))['catch'](handleError(_0x1c105e,null));};exports[_0xa40c('0x69')]=function(_0x4a1a57,_0x1fcd3c,_0x25a845){var _0x103302=_0x4a1a57[_0xa40c('0x50')][_0xa40c('0x6a')];return db[_0xa40c('0x68')][_0xa40c('0x5e')]({'where':{'id':_0x103302},'attributes':['id'],'include':[{'model':db[_0xa40c('0x5f')],'as':'Agents','attributes':['id',_0xa40c('0x34'),_0xa40c('0x6b'),_0xa40c('0x6c'),_0xa40c('0x6d')],'raw':!![]}]})[_0xa40c('0x2a')](function(_0x3a7796){if(_0x3a7796){var _0x3ac512=_[_0xa40c('0x6e')](_0x3a7796,function(_0xa7282b){var _0x2091e7=_0xa7282b[_0xa40c('0x6f')]({'plain':!![]});return _0x2091e7[_0xa40c('0x70')];});return db['SmsQueue'][_0xa40c('0x4e')]({'where':{'id':_0x4a1a57[_0xa40c('0x4a')]['id']}})[_0xa40c('0x2a')](function(_0x499b08){return db[_0xa40c('0x71')]['transaction'](function(_0x43a18d){return _0x499b08[_0xa40c('0x69')](_0x103302,{'transaction':_0x43a18d})[_0xa40c('0x2a')](function(){return BPromise['each'](_0x3ac512,function(_0x298cdd){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0x298cdd['id'],'SmsQueueId':_0x4a1a57[_0xa40c('0x4a')]['id']},'transaction':_0x43a18d});});})[_0xa40c('0x2a')](function(){_0x3ac512[_0xa40c('0x72')](function(_0x337e43){socket[_0xa40c('0x73')]('userSmsQueue:save',{'UserId':_0x337e43['id'],'SmsQueueId':_0x499b08['id']});});});});});}})[_0xa40c('0x2a')](respondWithStatusCode(_0x1fcd3c,null))['catch'](handleError(_0x1fcd3c,null));};exports[_0xa40c('0x74')]=function(_0x22ff90,_0x2868fe,_0x49fcaa){return db[_0xa40c('0x68')][_0xa40c('0x5e')]({'where':{'id':_0x22ff90['query'][_0xa40c('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa40c('0x70'),'attributes':['id'],'raw':!![]}]})[_0xa40c('0x2a')](handleEntityNotFound(_0x2868fe,null))[_0xa40c('0x2a')](function(_0x3c4dfe){var _0x1bd0f3=_[_0xa40c('0x30')](_0x3c4dfe,'id');var _0x80134f=[];var _0x2d714f=[];var _0x55aa8c=squel[_0xa40c('0x75')]();_0x55aa8c['field'](_0xa40c('0x76'))[_0xa40c('0x77')](_0xa40c('0x78'),'tq')[_0xa40c('0x79')](_0xa40c('0x7a'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa40c('0x40')]('SmsQueueId\x20=\x20?',_0x22ff90[_0xa40c('0x4a')]['id']);for(var _0x2f1e99=0x0;_0x2f1e99<_0x3c4dfe['length'];_0x2f1e99+=0x1){let _0x435a5b=_0x3c4dfe[_0x2f1e99];for(var _0x4929c2=0x0;_0x4929c2<_0x435a5b[_0xa40c('0x70')][_0xa40c('0x4c')];_0x4929c2+=0x1){let _0x3170e9=_0x435a5b[_0xa40c('0x70')][_0x4929c2];var _0x2be4d5=_0x55aa8c[_0xa40c('0x7b')]();_0x2be4d5['where'](_0xa40c('0x7c'),_0x3170e9['id']);_0x2d714f['push'](db[_0xa40c('0x71')][_0xa40c('0x35')](_0x2be4d5[_0xa40c('0x7d')](),{'type':db[_0xa40c('0x71')][_0xa40c('0x7e')][_0xa40c('0x7f')]})[_0xa40c('0x2a')](function(_0x5edbf8){if(_0x5edbf8[_0xa40c('0x4c')]===0x1){return _0x3170e9['id'];}else{var _0x530612=_[_0xa40c('0x80')](_['map'](_0x5edbf8,_0xa40c('0x81')),function(_0x59e5fd){return _[_0xa40c('0x82')](_0x1bd0f3,_0x59e5fd);});if(_0x530612){return _0x3170e9['id'];}}}));}}return BPromise[_0xa40c('0x83')](_0x2d714f)[_0xa40c('0x2a')](function(_0x264bd0){_0x80134f=_(_0x80134f)['union'](_0x264bd0)[_0xa40c('0x84')]()['value']();return db[_0xa40c('0x45')][_0xa40c('0x4e')]({'where':{'id':_0x22ff90[_0xa40c('0x4a')]['id']}})['then'](function(_0x24985d){return db[_0xa40c('0x71')]['transaction'](function(_0x3ab976){return _0x24985d[_0xa40c('0x74')](_0x22ff90['query'][_0xa40c('0x6a')],{'transaction':_0x3ab976})['then'](function(){if(!_['isEmpty'](_0x80134f)){return _0x24985d[_0xa40c('0x85')](_0x80134f,{'transaction':_0x3ab976});}})[_0xa40c('0x2a')](function(){_0x80134f['forEach'](function(_0x107e9c){socket[_0xa40c('0x73')](_0xa40c('0x86'),{'UserId':_0x107e9c,'SmsQueueId':_0x24985d['id']});});});});});});})[_0xa40c('0x2a')](respondWithStatusCode(_0x2868fe,null))[_0xa40c('0x48')](handleError(_0x2868fe,null));};exports[_0xa40c('0x87')]=function(_0x423c5c,_0x21ced7,_0x4c04da){return db[_0xa40c('0x45')][_0xa40c('0x4e')]({'where':{'id':_0x423c5c[_0xa40c('0x4a')]['id']}})[_0xa40c('0x2a')](handleEntityNotFound(_0x21ced7,null))[_0xa40c('0x2a')](function(_0x493403){if(_0x493403){return _0x493403['addAgents'](_0x423c5c[_0xa40c('0x50')][_0xa40c('0x6a')],_[_0xa40c('0x88')](_0x423c5c[_0xa40c('0x50')],['ids','id'])||{})['spread'](function(_0x454603){for(var _0x15b49c=0x0;_0x15b49c<_0x423c5c['body'][_0xa40c('0x6a')]['length'];_0x15b49c+=0x1){socket[_0xa40c('0x73')]('userSmsQueue:save',{'UserId':Number(_0x423c5c[_0xa40c('0x50')]['ids'][_0x15b49c]),'SmsQueueId':Number(_0x423c5c[_0xa40c('0x4a')]['id'])});}return _0x454603;});}})[_0xa40c('0x2a')](respondWithResult(_0x21ced7,null))['catch'](handleError(_0x21ced7,null));};exports['removeAgents']=function(_0x13c38e,_0x74d701,_0x478a07){return db['SmsQueue'][_0xa40c('0x4e')]({'where':{'id':_0x13c38e['params']['id']}})[_0xa40c('0x2a')](handleEntityNotFound(_0x74d701,null))[_0xa40c('0x2a')](function(_0x47847a){if(_0x47847a){return _0x47847a['removeAgents'](_0x13c38e[_0xa40c('0x35')]['ids'])['then'](function(){if(_[_0xa40c('0x89')](_0x13c38e['query']['ids'])){for(var _0x11f7f2=0x0;_0x11f7f2<_0x13c38e[_0xa40c('0x35')][_0xa40c('0x6a')][_0xa40c('0x4c')];_0x11f7f2+=0x1){socket[_0xa40c('0x73')](_0xa40c('0x86'),{'UserId':Number(_0x13c38e[_0xa40c('0x35')][_0xa40c('0x6a')][_0x11f7f2]),'SmsQueueId':Number(_0x13c38e['params']['id'])});}}else{socket[_0xa40c('0x73')]('userSmsQueue:remove',{'UserId':Number(_0x13c38e[_0xa40c('0x35')][_0xa40c('0x6a')]),'SmsQueueId':Number(_0x13c38e[_0xa40c('0x4a')]['id'])});}});}})[_0xa40c('0x2a')](respondWithStatusCode(_0x74d701,null))['catch'](handleError(_0x74d701,null));};exports['getAgents']=function(_0x27e3e1,_0x769745,_0x4bd4de){var _0x26c1f0={};var _0x12fe25={};var _0x216528;var _0x2d8029;return db[_0xa40c('0x45')][_0xa40c('0x5a')]({'where':{'id':_0x27e3e1[_0xa40c('0x4a')]['id']}})[_0xa40c('0x2a')](handleEntityNotFound(_0x769745,null))['then'](function(_0x437180){if(_0x437180){_0x216528=_0x437180;_0x12fe25[_0xa40c('0x33')]=_[_0xa40c('0x36')](db[_0xa40c('0x5f')]['rawAttributes']);_0x12fe25[_0xa40c('0x35')]=_['keys'](_0x27e3e1[_0xa40c('0x35')]);_0x12fe25['filters']=_['intersection'](_0x12fe25[_0xa40c('0x33')],_0x12fe25[_0xa40c('0x35')]);_0x26c1f0['attributes']=_[_0xa40c('0x38')](_0x12fe25[_0xa40c('0x33')],qs[_0xa40c('0x3a')](_0x27e3e1[_0xa40c('0x35')][_0xa40c('0x3a')]));_0x26c1f0['attributes']=_0x26c1f0['attributes']['length']?_0x26c1f0[_0xa40c('0x39')]:_0x12fe25[_0xa40c('0x33')];_0x26c1f0[_0xa40c('0x3e')]=qs['sort'](_0x27e3e1[_0xa40c('0x35')][_0xa40c('0x3f')]);_0x26c1f0[_0xa40c('0x40')]=qs[_0xa40c('0x37')](_['pick'](_0x27e3e1[_0xa40c('0x35')],_0x12fe25[_0xa40c('0x37')]));if(_0x27e3e1[_0xa40c('0x35')]['filter']){_0x26c1f0[_0xa40c('0x40')]=_[_0xa40c('0x41')](_0x26c1f0['where'],{'$or':_['map'](_0x26c1f0['attributes'],function(_0x444b60){var _0x108636={};_0x108636[_0x444b60]={'$like':'%'+_0x27e3e1[_0xa40c('0x35')][_0xa40c('0x44')]+'%'};return _0x108636;})});}_0x26c1f0=_['merge']({},_0x26c1f0,_0x27e3e1[_0xa40c('0x4d')]);return _0x216528[_0xa40c('0x8a')](_0x26c1f0);}})[_0xa40c('0x2a')](function(_0x47fede){if(_0x47fede){_0x2d8029=_0x47fede[_0xa40c('0x4c')];if(!_0x27e3e1[_0xa40c('0x35')][_0xa40c('0x3b')]('nolimit')){_0x26c1f0[_0xa40c('0x22')]=qs['limit'](_0x27e3e1['query'][_0xa40c('0x22')]);_0x26c1f0[_0xa40c('0x3d')]=qs[_0xa40c('0x3d')](_0x27e3e1[_0xa40c('0x35')][_0xa40c('0x3d')]);}return _0x216528['getAgents'](_0x26c1f0);}})[_0xa40c('0x2a')](function(_0x55a600){if(_0x55a600){return _0x55a600?{'count':_0x2d8029,'rows':_0x55a600}:null;}})[_0xa40c('0x2a')](respondWithResult(_0x769745,null))[_0xa40c('0x48')](handleError(_0x769745,null));};
\ No newline at end of file
index 15c0fc2..be39ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e19=['../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x292911,_0x279a2e){var _0x18dee9=function(_0x43ccf8){while(--_0x43ccf8){_0x292911['push'](_0x292911['shift']());}};_0x18dee9(++_0x279a2e);}(_0x7e19,0x110));var _0x97e1=function(_0x1cd615,_0x1ee1a2){_0x1cd615=_0x1cd615-0x0;var _0x40714c=_0x7e19[_0x1cd615];return _0x40714c;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x97e1('0x0'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x97e1('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x97e1('0x2'),'afterDestroy':_0x97e1('0x3')};function emitEvent(_0x5d1d97){return function(_0x55249a,_0xae9810,_0x4f186f){SmsQueueEvents[_0x97e1('0x4')](_0x5d1d97+':'+_0x55249a['id'],_0x55249a);SmsQueueEvents[_0x97e1('0x4')](_0x5d1d97,_0x55249a);_0x4f186f(null);};}for(var e in events){if(events[_0x97e1('0x5')](e)){var event=events[e];SmsQueue[_0x97e1('0x6')](e,emitEvent(event));}}module[_0x97e1('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0x2219=['remove','emit','hasOwnProperty','exports','../../mysqldb','SmsQueue','setMaxListeners','save','update'];(function(_0x55c485,_0x3fe77e){var _0x6bb521=function(_0x466a3d){while(--_0x466a3d){_0x55c485['push'](_0x55c485['shift']());}};_0x6bb521(++_0x3fe77e);}(_0x2219,0x11b));var _0x9221=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0x2219[_0x1b7368];return _0x25d54c;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x9221('0x0'))['db'][_0x9221('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x9221('0x2')](0x0);var events={'afterCreate':_0x9221('0x3'),'afterUpdate':_0x9221('0x4'),'afterDestroy':_0x9221('0x5')};function emitEvent(_0x174939){return function(_0x4a0ea5,_0x2024fa,_0x63f28d){SmsQueueEvents[_0x9221('0x6')](_0x174939+':'+_0x4a0ea5['id'],_0x4a0ea5);SmsQueueEvents[_0x9221('0x6')](_0x174939,_0x4a0ea5);_0x63f28d(null);};}for(var e in events){if(events[_0x9221('0x7')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x9221('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 9ad350f..daf4754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ea9=['moment','bluebird','request-promise','path','./smsQueue.attributes','exports','SmsQueue','sms_queues','lodash','util','../../config/logger'];(function(_0x57d3f1,_0x11b0b4){var _0x4e19b1=function(_0x4f6e09){while(--_0x4f6e09){_0x57d3f1['push'](_0x57d3f1['shift']());}};_0x4e19b1(++_0x11b0b4);}(_0x5ea9,0x194));var _0x95ea=function(_0x5a57a3,_0x2a7018){_0x5a57a3=_0x5a57a3-0x0;var _0x2ef960=_0x5ea9[_0x5a57a3];return _0x2ef960;};'use strict';var _=require(_0x95ea('0x0'));var util=require(_0x95ea('0x1'));var logger=require(_0x95ea('0x2'))('api');var moment=require(_0x95ea('0x3'));var BPromise=require(_0x95ea('0x4'));var rp=require(_0x95ea('0x5'));var fs=require('fs');var path=require(_0x95ea('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x95ea('0x7'));module[_0x95ea('0x8')]=function(_0x24acdf,_0xbf8a95){return _0x24acdf['define'](_0x95ea('0x9'),attributes,{'tableName':_0x95ea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x35a8=['exports','define','SmsQueue','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes'];(function(_0x476a0e,_0x37a2f8){var _0x28b7a8=function(_0xc4de6){while(--_0xc4de6){_0x476a0e['push'](_0x476a0e['shift']());}};_0x28b7a8(++_0x37a2f8);}(_0x35a8,0x1e7));var _0x835a=function(_0x27ab7d,_0x33ef82){_0x27ab7d=_0x27ab7d-0x0;var _0x569803=_0x35a8[_0x27ab7d];return _0x569803;};'use strict';var _=require(_0x835a('0x0'));var util=require('util');var logger=require(_0x835a('0x1'))(_0x835a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x835a('0x3'));var fs=require('fs');var path=require(_0x835a('0x4'));var rimraf=require(_0x835a('0x5'));var config=require(_0x835a('0x6'));var attributes=require(_0x835a('0x7'));module[_0x835a('0x8')]=function(_0x5eeb13,_0x1388d1){return _0x5eeb13[_0x835a('0x9')](_0x835a('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 47479ea..581fc12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9da=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./smsQueue.socket','register','request','then','info','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsQueue,\x20%s,\x20%s','result','catch','GetSmsQueue','SmsQueue','options','where','include','map','model','attributes','ShowSmsQueue','find','lodash','util'];(function(_0x25ddc7,_0x3866a0){var _0x250226=function(_0x3a77d0){while(--_0x3a77d0){_0x25ddc7['push'](_0x25ddc7['shift']());}};_0x250226(++_0x3866a0);}(_0xa9da,0x1d2));var _0xaa9d=function(_0x3c53a2,_0x1e3b10){_0x3c53a2=_0x3c53a2-0x0;var _0x1d1292=_0xa9da[_0x3c53a2];return _0x1d1292;};'use strict';var _=require(_0xaa9d('0x0'));var util=require(_0xaa9d('0x1'));var moment=require(_0xaa9d('0x2'));var BPromise=require(_0xaa9d('0x3'));var rs=require(_0xaa9d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaa9d('0x5'));var logger=require(_0xaa9d('0x6'))(_0xaa9d('0x7'));var config=require('../../config/environment');var jayson=require(_0xaa9d('0x8'));var client=jayson[_0xaa9d('0x9')]['http']({'port':0x232a});config['redis']=_[_0xaa9d('0xa')](config['redis'],{'host':_0xaa9d('0xb'),'port':0x18eb});var socket=require(_0xaa9d('0xc'))(new Redis(config[_0xaa9d('0xd')]));require(_0xaa9d('0xe'))[_0xaa9d('0xf')](socket);function respondWithRpcPromise(_0x30b689,_0x4e8e25,_0x1d4179){return new BPromise(function(_0x130490,_0x4f7014){return client[_0xaa9d('0x10')](_0x30b689,_0x1d4179)[_0xaa9d('0x11')](function(_0x12d789){logger[_0xaa9d('0x12')]('SmsQueue,\x20%s,\x20%s',_0x4e8e25,_0xaa9d('0x13'));logger[_0xaa9d('0x14')](_0xaa9d('0x15'),_0x4e8e25,_0xaa9d('0x13'),JSON[_0xaa9d('0x16')](_0x12d789));if(_0x12d789[_0xaa9d('0x17')]){if(_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x18')]===0x1f4){logger['error']('SmsQueue,\x20%s,\x20%s',_0x4e8e25,_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);return _0x4f7014(_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);}logger[_0xaa9d('0x17')](_0xaa9d('0x1a'),_0x4e8e25,_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);return _0x130490(_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);}else{logger[_0xaa9d('0x12')](_0xaa9d('0x1a'),_0x4e8e25,_0xaa9d('0x13'));_0x130490(_0x12d789[_0xaa9d('0x1b')][_0xaa9d('0x19')]);}})[_0xaa9d('0x1c')](function(_0x2801fe){logger[_0xaa9d('0x17')](_0xaa9d('0x1a'),_0x4e8e25,_0x2801fe);_0x4f7014(_0x2801fe);});});}exports[_0xaa9d('0x1d')]=function(_0x325f7b){var _0x35d3c3=this;return new Promise(function(_0x3565c5,_0x3fb478){return db[_0xaa9d('0x1e')]['findAll']({'raw':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b[_0xaa9d('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b['options'][_0xaa9d('0x20')]||null:null,'attributes':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b[_0xaa9d('0x1f')]['attributes']||null:null,'limit':_0x325f7b['options']?_0x325f7b['options']['limit']||null:null,'include':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b[_0xaa9d('0x1f')][_0xaa9d('0x21')]?_[_0xaa9d('0x22')](_0x325f7b[_0xaa9d('0x1f')][_0xaa9d('0x21')],function(_0x35c1b8){return{'model':db[_0x35c1b8[_0xaa9d('0x23')]],'as':_0x35c1b8['as'],'attributes':_0x35c1b8['attributes'],'include':_0x35c1b8[_0xaa9d('0x21')]?_[_0xaa9d('0x22')](_0x35c1b8[_0xaa9d('0x21')],function(_0x4425e3){return{'model':db[_0x4425e3[_0xaa9d('0x23')]],'as':_0x4425e3['as'],'attributes':_0x4425e3[_0xaa9d('0x24')],'include':_0x4425e3['include']?_[_0xaa9d('0x22')](_0x4425e3[_0xaa9d('0x21')],function(_0x48f996){return{'model':db[_0x48f996[_0xaa9d('0x23')]],'as':_0x48f996['as'],'attributes':_0x48f996[_0xaa9d('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x44a4e3){logger[_0xaa9d('0x12')](_0xaa9d('0x1d'),_0x325f7b);logger[_0xaa9d('0x14')](_0xaa9d('0x1d'),_0x325f7b,JSON['stringify'](_0x44a4e3));_0x3565c5(_0x44a4e3);})[_0xaa9d('0x1c')](function(_0x890cc4){logger[_0xaa9d('0x17')](_0xaa9d('0x1d'),_0x890cc4['message'],_0x325f7b);_0x3fb478(_0x35d3c3['error'](0x1f4,_0x890cc4['message']));});});};exports[_0xaa9d('0x25')]=function(_0x35fac0){var _0x35824f=this;return new Promise(function(_0x2c0f1f,_0x5c7454){return db[_0xaa9d('0x1e')][_0xaa9d('0x26')]({'raw':_0x35fac0[_0xaa9d('0x1f')]?_0x35fac0[_0xaa9d('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x35fac0[_0xaa9d('0x1f')]?_0x35fac0[_0xaa9d('0x1f')][_0xaa9d('0x20')]||null:null,'attributes':_0x35fac0[_0xaa9d('0x1f')]?_0x35fac0[_0xaa9d('0x1f')][_0xaa9d('0x24')]||null:null,'include':_0x35fac0['options']?_0x35fac0['options'][_0xaa9d('0x21')]?_[_0xaa9d('0x22')](_0x35fac0[_0xaa9d('0x1f')][_0xaa9d('0x21')],function(_0x2049a0){return{'model':db[_0x2049a0[_0xaa9d('0x23')]],'as':_0x2049a0['as'],'attributes':_0x2049a0[_0xaa9d('0x24')],'include':_0x2049a0['include']?_['map'](_0x2049a0[_0xaa9d('0x21')],function(_0x4701fe){return{'model':db[_0x4701fe[_0xaa9d('0x23')]],'as':_0x4701fe['as'],'attributes':_0x4701fe[_0xaa9d('0x24')],'include':_0x4701fe['include']?_[_0xaa9d('0x22')](_0x4701fe[_0xaa9d('0x21')],function(_0x3c6d95){return{'model':db[_0x3c6d95[_0xaa9d('0x23')]],'as':_0x3c6d95['as'],'attributes':_0x3c6d95[_0xaa9d('0x24')]};}):[]};}):[]};}):[]:[]})[_0xaa9d('0x11')](function(_0x1f2eb1){logger[_0xaa9d('0x12')]('ShowSmsQueue',_0x35fac0);logger['debug']('ShowSmsQueue',_0x35fac0,JSON[_0xaa9d('0x16')](_0x1f2eb1));_0x2c0f1f(_0x1f2eb1);})[_0xaa9d('0x1c')](function(_0x1eaacb){logger[_0xaa9d('0x17')](_0xaa9d('0x25'),_0x1eaacb[_0xaa9d('0x19')],_0x35fac0);_0x5c7454(_0x35824f[_0xaa9d('0x17')](0x1f4,_0x1eaacb['message']));});});};
\ No newline at end of file
+var _0xdc96=['redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueue,\x20%s,\x20%s','message','result','catch','GetSmsQueue','findAll','options','where','attributes','limit','include','map','model','ShowSmsQueue','SmsQueue','find','debug','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0xb44aae,_0x23ce99){var _0x3a8050=function(_0xfad020){while(--_0xfad020){_0xb44aae['push'](_0xb44aae['shift']());}};_0x3a8050(++_0x23ce99);}(_0xdc96,0x99));var _0x6dc9=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xdc96[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x6dc9('0x0'));var util=require(_0x6dc9('0x1'));var moment=require(_0x6dc9('0x2'));var BPromise=require(_0x6dc9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6dc9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6dc9('0x5'));var logger=require(_0x6dc9('0x6'))(_0x6dc9('0x7'));var config=require(_0x6dc9('0x8'));var jayson=require(_0x6dc9('0x9'));var client=jayson[_0x6dc9('0xa')]['http']({'port':0x232a});config[_0x6dc9('0xb')]=_[_0x6dc9('0xc')](config[_0x6dc9('0xb')],{'host':_0x6dc9('0xd'),'port':0x18eb});var socket=require(_0x6dc9('0xe'))(new Redis(config[_0x6dc9('0xb')]));require('./smsQueue.socket')[_0x6dc9('0xf')](socket);function respondWithRpcPromise(_0x4355b7,_0x4538bd,_0x390042){return new BPromise(function(_0x38401f,_0x2495ce){return client[_0x6dc9('0x10')](_0x4355b7,_0x390042)[_0x6dc9('0x11')](function(_0x4d6002){logger[_0x6dc9('0x12')]('SmsQueue,\x20%s,\x20%s',_0x4538bd,_0x6dc9('0x13'));logger['debug'](_0x6dc9('0x14'),_0x4538bd,_0x6dc9('0x13'),JSON[_0x6dc9('0x15')](_0x4d6002));if(_0x4d6002[_0x6dc9('0x16')]){if(_0x4d6002[_0x6dc9('0x16')][_0x6dc9('0x17')]===0x1f4){logger['error'](_0x6dc9('0x18'),_0x4538bd,_0x4d6002[_0x6dc9('0x16')][_0x6dc9('0x19')]);return _0x2495ce(_0x4d6002[_0x6dc9('0x16')]['message']);}logger[_0x6dc9('0x16')]('SmsQueue,\x20%s,\x20%s',_0x4538bd,_0x4d6002[_0x6dc9('0x16')][_0x6dc9('0x19')]);return _0x38401f(_0x4d6002[_0x6dc9('0x16')]['message']);}else{logger[_0x6dc9('0x12')](_0x6dc9('0x18'),_0x4538bd,_0x6dc9('0x13'));_0x38401f(_0x4d6002[_0x6dc9('0x1a')][_0x6dc9('0x19')]);}})[_0x6dc9('0x1b')](function(_0x7ebf9){logger['error'](_0x6dc9('0x18'),_0x4538bd,_0x7ebf9);_0x2495ce(_0x7ebf9);});});}exports[_0x6dc9('0x1c')]=function(_0x188f89){var _0x4c758e=this;return new Promise(function(_0x39eaaa,_0x1067ba){return db['SmsQueue'][_0x6dc9('0x1d')]({'raw':_0x188f89[_0x6dc9('0x1e')]?_0x188f89[_0x6dc9('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x188f89[_0x6dc9('0x1e')]?_0x188f89['options'][_0x6dc9('0x1f')]||null:null,'attributes':_0x188f89[_0x6dc9('0x1e')]?_0x188f89[_0x6dc9('0x1e')][_0x6dc9('0x20')]||null:null,'limit':_0x188f89[_0x6dc9('0x1e')]?_0x188f89[_0x6dc9('0x1e')][_0x6dc9('0x21')]||null:null,'include':_0x188f89[_0x6dc9('0x1e')]?_0x188f89[_0x6dc9('0x1e')][_0x6dc9('0x22')]?_[_0x6dc9('0x23')](_0x188f89[_0x6dc9('0x1e')][_0x6dc9('0x22')],function(_0x1d1f22){return{'model':db[_0x1d1f22[_0x6dc9('0x24')]],'as':_0x1d1f22['as'],'attributes':_0x1d1f22['attributes'],'include':_0x1d1f22[_0x6dc9('0x22')]?_[_0x6dc9('0x23')](_0x1d1f22['include'],function(_0x177b76){return{'model':db[_0x177b76[_0x6dc9('0x24')]],'as':_0x177b76['as'],'attributes':_0x177b76[_0x6dc9('0x20')],'include':_0x177b76[_0x6dc9('0x22')]?_[_0x6dc9('0x23')](_0x177b76[_0x6dc9('0x22')],function(_0x208d9f){return{'model':db[_0x208d9f[_0x6dc9('0x24')]],'as':_0x208d9f['as'],'attributes':_0x208d9f[_0x6dc9('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6dc9('0x11')](function(_0x203805){logger['info'](_0x6dc9('0x1c'),_0x188f89);logger['debug']('GetSmsQueue',_0x188f89,JSON[_0x6dc9('0x15')](_0x203805));_0x39eaaa(_0x203805);})[_0x6dc9('0x1b')](function(_0xebf796){logger['error'](_0x6dc9('0x1c'),_0xebf796[_0x6dc9('0x19')],_0x188f89);_0x1067ba(_0x4c758e[_0x6dc9('0x16')](0x1f4,_0xebf796[_0x6dc9('0x19')]));});});};exports[_0x6dc9('0x25')]=function(_0x4aa955){var _0x2b90a9=this;return new Promise(function(_0xb45ba6,_0x4db62f){return db[_0x6dc9('0x26')][_0x6dc9('0x27')]({'raw':_0x4aa955[_0x6dc9('0x1e')]?_0x4aa955[_0x6dc9('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x4aa955['options']?_0x4aa955[_0x6dc9('0x1e')]['where']||null:null,'attributes':_0x4aa955[_0x6dc9('0x1e')]?_0x4aa955[_0x6dc9('0x1e')]['attributes']||null:null,'include':_0x4aa955[_0x6dc9('0x1e')]?_0x4aa955[_0x6dc9('0x1e')][_0x6dc9('0x22')]?_[_0x6dc9('0x23')](_0x4aa955['options'][_0x6dc9('0x22')],function(_0xdb68aa){return{'model':db[_0xdb68aa[_0x6dc9('0x24')]],'as':_0xdb68aa['as'],'attributes':_0xdb68aa[_0x6dc9('0x20')],'include':_0xdb68aa[_0x6dc9('0x22')]?_[_0x6dc9('0x23')](_0xdb68aa[_0x6dc9('0x22')],function(_0x232425){return{'model':db[_0x232425['model']],'as':_0x232425['as'],'attributes':_0x232425[_0x6dc9('0x20')],'include':_0x232425[_0x6dc9('0x22')]?_[_0x6dc9('0x23')](_0x232425['include'],function(_0x3afdec){return{'model':db[_0x3afdec[_0x6dc9('0x24')]],'as':_0x3afdec['as'],'attributes':_0x3afdec[_0x6dc9('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf86fac){logger['info'](_0x6dc9('0x25'),_0x4aa955);logger[_0x6dc9('0x28')](_0x6dc9('0x25'),_0x4aa955,JSON[_0x6dc9('0x15')](_0xf86fac));_0xb45ba6(_0xf86fac);})[_0x6dc9('0x1b')](function(_0x551f67){logger[_0x6dc9('0x16')](_0x6dc9('0x25'),_0x551f67['message'],_0x4aa955);_0x4db62f(_0x2b90a9[_0x6dc9('0x16')](0x1f4,_0x551f67[_0x6dc9('0x19')]));});});};
\ No newline at end of file
index deec49d..7fb49db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae5=['register','length','smsQueue:','remove','update','removeListener'];(function(_0x230675,_0x2d414e){var _0x321db6=function(_0x29e9f6){while(--_0x29e9f6){_0x230675['push'](_0x230675['shift']());}};_0x321db6(++_0x2d414e);}(_0x7ae5,0x7b));var _0x57ae=function(_0x49d931,_0x121258){_0x49d931=_0x49d931-0x0;var _0x491a2a=_0x7ae5[_0x49d931];return _0x491a2a;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save',_0x57ae('0x0'),_0x57ae('0x1')];function createListener(_0x5a0554,_0x145612){return function(_0x50e3ec){_0x145612['emit'](_0x5a0554,_0x50e3ec);};}function removeListener(_0x4f9d86,_0x444b3c){return function(){SmsQueueEvents[_0x57ae('0x2')](_0x4f9d86,_0x444b3c);};}exports[_0x57ae('0x3')]=function(_0x412fe1){for(var _0x43b367=0x0,_0x29786c=events[_0x57ae('0x4')];_0x43b367<_0x29786c;_0x43b367++){var _0x43b301=events[_0x43b367];var _0x4ba8e6=createListener(_0x57ae('0x5')+_0x43b301,_0x412fe1);SmsQueueEvents['on'](_0x43b301,_0x4ba8e6);}};
\ No newline at end of file
+var _0xaa7c=['emit','register','length','smsQueue:','./smsQueue.events','remove','update'];(function(_0x5c6994,_0x19ad9a){var _0x1d5c84=function(_0x4a385a){while(--_0x4a385a){_0x5c6994['push'](_0x5c6994['shift']());}};_0x1d5c84(++_0x19ad9a);}(_0xaa7c,0x19a));var _0xcaa7=function(_0x5013a9,_0x395bcc){_0x5013a9=_0x5013a9-0x0;var _0x54dd6e=_0xaa7c[_0x5013a9];return _0x54dd6e;};'use strict';var SmsQueueEvents=require(_0xcaa7('0x0'));var events=['save',_0xcaa7('0x1'),_0xcaa7('0x2')];function createListener(_0x50251a,_0x2a67bf){return function(_0x5584c0){_0x2a67bf[_0xcaa7('0x3')](_0x50251a,_0x5584c0);};}function removeListener(_0x12090d,_0x18f86e){return function(){SmsQueueEvents['removeListener'](_0x12090d,_0x18f86e);};}exports[_0xcaa7('0x4')]=function(_0x499a57){for(var _0x2c2873=0x0,_0x4899ce=events[_0xcaa7('0x5')];_0x2c2873<_0x4899ce;_0x2c2873++){var _0x57e950=events[_0x2c2873];var _0x22f75c=createListener(_0xcaa7('0x6')+_0x57e950,_0x499a57);SmsQueueEvents['on'](_0x57e950,_0x22f75c);}};
\ No newline at end of file
index af4c38c..0315805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd829=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x3d09a3,_0x3e73d0){var _0x33f34f=function(_0x3185c8){while(--_0x3185c8){_0x3d09a3['push'](_0x3d09a3['shift']());}};_0x33f34f(++_0x3e73d0);}(_0xd829,0x1d0));var _0x9d82=function(_0x1292df,_0x43826c){_0x1292df=_0x1292df-0x0;var _0x295d33=_0xd829[_0x1292df];return _0x295d33;};'use strict';var multer=require(_0x9d82('0x0'));var util=require(_0x9d82('0x1'));var path=require('path');var timeout=require(_0x9d82('0x2'));var express=require('express');var router=express[_0x9d82('0x3')]();var fs_extra=require(_0x9d82('0x4'));var auth=require(_0x9d82('0x5'));var interaction=require(_0x9d82('0x6'));var config=require(_0x9d82('0x7'));var controller=require('./smsQueueReport.controller');router[_0x9d82('0x8')]('/',auth[_0x9d82('0x9')](),controller[_0x9d82('0xa')]);router[_0x9d82('0x8')](_0x9d82('0xb'),auth[_0x9d82('0x9')](),controller[_0x9d82('0xc')]);router[_0x9d82('0x8')](_0x9d82('0xd'),auth[_0x9d82('0x9')](),controller[_0x9d82('0xe')]);router[_0x9d82('0xf')]('/',auth[_0x9d82('0x9')](),controller[_0x9d82('0x10')]);router[_0x9d82('0x11')](_0x9d82('0xd'),auth[_0x9d82('0x9')](),controller[_0x9d82('0x12')]);router[_0x9d82('0x13')](_0x9d82('0xd'),auth[_0x9d82('0x9')](),controller['destroy']);module[_0x9d82('0x14')]=router;
\ No newline at end of file
+var _0x0810=['create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','./smsQueueReport.controller','isAuthenticated','/:id','show','post'];(function(_0x424c7a,_0x59159b){var _0x29be36=function(_0x2f5f4b){while(--_0x2f5f4b){_0x424c7a['push'](_0x424c7a['shift']());}};_0x29be36(++_0x59159b);}(_0x0810,0x95));var _0x0081=function(_0xee1490,_0x1453e1){_0xee1490=_0xee1490-0x0;var _0x538be8=_0x0810[_0xee1490];return _0x538be8;};'use strict';var multer=require(_0x0081('0x0'));var util=require(_0x0081('0x1'));var path=require(_0x0081('0x2'));var timeout=require(_0x0081('0x3'));var express=require(_0x0081('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0081('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0081('0x6'));router['get']('/',auth[_0x0081('0x7')](),controller['index']);router['get']('/describe',auth[_0x0081('0x7')](),controller['describe']);router['get'](_0x0081('0x8'),auth['isAuthenticated'](),controller[_0x0081('0x9')]);router[_0x0081('0xa')]('/',auth[_0x0081('0x7')](),controller[_0x0081('0xb')]);router['put'](_0x0081('0x8'),auth['isAuthenticated'](),controller[_0x0081('0xc')]);router[_0x0081('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x0081('0xe')]);module[_0x0081('0xf')]=router;
\ No newline at end of file
index 6251aee..372e8dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6c=['DATE','sequelize','STRING'];(function(_0x58999b,_0xea4695){var _0x5efc3a=function(_0x98de31){while(--_0x98de31){_0x58999b['push'](_0x58999b['shift']());}};_0x5efc3a(++_0xea4695);}(_0xbc6c,0x1b1));var _0xcbc6=function(_0x13ca50,_0x31e54f){_0x13ca50=_0x13ca50-0x0;var _0x2ec045=_0xbc6c[_0x13ca50];return _0x2ec045;};'use strict';var moment=require('moment');var Sequelize=require(_0xcbc6('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xcbc6('0x1')]},'joinAt':{'type':Sequelize[_0xcbc6('0x2')]},'leaveAt':{'type':Sequelize[_0xcbc6('0x2')]},'acceptAt':{'type':Sequelize[_0xcbc6('0x2')]},'exitAt':{'type':Sequelize[_0xcbc6('0x2')]},'reason':{'type':Sequelize[_0xcbc6('0x1')]}};
\ No newline at end of file
+var _0x1220=['DATE','STRING','moment','sequelize'];(function(_0x2265b0,_0x279abe){var _0xc4900b=function(_0x549d54){while(--_0x549d54){_0x2265b0['push'](_0x2265b0['shift']());}};_0xc4900b(++_0x279abe);}(_0x1220,0x8a));var _0x0122=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x1220[_0x160c73];return _0xd9302;};'use strict';var moment=require(_0x0122('0x0'));var Sequelize=require(_0x0122('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x0122('0x2')]},'leaveAt':{'type':Sequelize[_0x0122('0x2')]},'acceptAt':{'type':Sequelize[_0x0122('0x2')]},'exitAt':{'type':Sequelize[_0x0122('0x2')]},'reason':{'type':Sequelize[_0x0122('0x3')]}};
\ No newline at end of file
index 25e734d..e851398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a59=['name','index','map','SmsQueueReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','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/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','end','error','stack'];(function(_0x2b49bc,_0x47b636){var _0x43cc65=function(_0x236ec3){while(--_0x236ec3){_0x2b49bc['push'](_0x2b49bc['shift']());}};_0x43cc65(++_0x47b636);}(_0x4a59,0x1e3));var _0x94a5=function(_0xb2045c,_0x3e4b56){_0xb2045c=_0xb2045c-0x0;var _0x396ea9=_0x4a59[_0xb2045c];return _0x396ea9;};'use strict';var emlformat=require(_0x94a5('0x0'));var rimraf=require(_0x94a5('0x1'));var zipdir=require(_0x94a5('0x2'));var jsonpatch=require(_0x94a5('0x3'));var rp=require(_0x94a5('0x4'));var moment=require('moment');var BPromise=require(_0x94a5('0x5'));var Mustache=require(_0x94a5('0x6'));var util=require(_0x94a5('0x7'));var path=require(_0x94a5('0x8'));var sox=require(_0x94a5('0x9'));var csv=require(_0x94a5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94a5('0xb'));var _=require(_0x94a5('0xc'));var squel=require('squel');var crypto=require(_0x94a5('0xd'));var jsforce=require(_0x94a5('0xe'));var deskjs=require(_0x94a5('0xf'));var toCsv=require('to-csv');var querystring=require(_0x94a5('0x10'));var Papa=require(_0x94a5('0x11'));var Redis=require(_0x94a5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x94a5('0x13'));var as=require(_0x94a5('0x14'));var hardwareService=require(_0x94a5('0x15'));var logger=require(_0x94a5('0x16'))(_0x94a5('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x94a5('0x18'));var db=require(_0x94a5('0x19'))['db'];function respondWithStatusCode(_0x2ea1c3,_0x352421){_0x352421=_0x352421||0xcc;return function(_0x3c15ae){if(_0x3c15ae){return _0x2ea1c3[_0x94a5('0x1a')](_0x352421);}return _0x2ea1c3[_0x94a5('0x1b')](_0x352421)['end']();};}function respondWithResult(_0x1e251f,_0x475d14){_0x475d14=_0x475d14||0xc8;return function(_0x5718ae){if(_0x5718ae){return _0x1e251f[_0x94a5('0x1b')](_0x475d14)[_0x94a5('0x1c')](_0x5718ae);}};}function respondWithFilteredResult(_0xa538f2,_0x4f67a0){return function(_0x58c7c2){if(_0x58c7c2){var _0x3ebe29=typeof _0x4f67a0['offset']===_0x94a5('0x1d')&&typeof _0x4f67a0[_0x94a5('0x1e')]===_0x94a5('0x1d');var _0x445a96=_0x58c7c2[_0x94a5('0x1f')];var _0x55fb03=_0x3ebe29?0x0:_0x4f67a0[_0x94a5('0x20')];var _0x3600a5=_0x3ebe29?_0x58c7c2[_0x94a5('0x1f')]:_0x4f67a0['offset']+_0x4f67a0[_0x94a5('0x1e')];var _0x3285f1;if(_0x3600a5>=_0x445a96){_0x3600a5=_0x445a96;_0x3285f1=0xc8;}else{_0x3285f1=0xce;}_0xa538f2[_0x94a5('0x1b')](_0x3285f1);return _0xa538f2[_0x94a5('0x21')]('Content-Range',_0x55fb03+'-'+_0x3600a5+'/'+_0x445a96)[_0x94a5('0x1c')](_0x58c7c2);}return null;};}function patchUpdates(_0x15f29f){return function(_0x32a98c){try{jsonpatch[_0x94a5('0x22')](_0x32a98c,_0x15f29f,!![]);}catch(_0xd98ddb){return BPromise[_0x94a5('0x23')](_0xd98ddb);}return _0x32a98c[_0x94a5('0x24')]();};}function saveUpdates(_0x3f2fe2,_0x4fe06c){return function(_0x2c6dc7){if(_0x2c6dc7){return _0x2c6dc7['update'](_0x3f2fe2)[_0x94a5('0x25')](function(_0x4c08eb){return _0x4c08eb;});}return null;};}function removeEntity(_0x50d6c9,_0x2f1997){return function(_0x216d09){if(_0x216d09){return _0x216d09[_0x94a5('0x26')]()[_0x94a5('0x25')](function(){_0x50d6c9[_0x94a5('0x1b')](0xcc)[_0x94a5('0x27')]();});}};}function handleEntityNotFound(_0x290a14,_0x591654){return function(_0x197e0b){if(!_0x197e0b){_0x290a14[_0x94a5('0x1a')](0x194);}return _0x197e0b;};}function handleError(_0x353830,_0x96410b){_0x96410b=_0x96410b||0x1f4;return function(_0x50cc4c){logger[_0x94a5('0x28')](_0x50cc4c[_0x94a5('0x29')]);if(_0x50cc4c[_0x94a5('0x2a')]){delete _0x50cc4c[_0x94a5('0x2a')];}_0x353830[_0x94a5('0x1b')](_0x96410b)['send'](_0x50cc4c);};}exports[_0x94a5('0x2b')]=function(_0x496b25,_0x1d4e91){var _0x11c9b4={},_0x509e26={},_0x705805={'count':0x0,'rows':[]};var _0x468e36=_[_0x94a5('0x2c')](db[_0x94a5('0x2d')][_0x94a5('0x2e')],function(_0x521a7c){return{'name':_0x521a7c['fieldName'],'type':_0x521a7c['type'][_0x94a5('0x2f')]};});_0x509e26[_0x94a5('0x30')]=_[_0x94a5('0x2c')](_0x468e36,'name');_0x509e26[_0x94a5('0x31')]=_[_0x94a5('0x32')](_0x496b25[_0x94a5('0x31')]);_0x509e26[_0x94a5('0x33')]=_[_0x94a5('0x34')](_0x509e26[_0x94a5('0x30')],_0x509e26[_0x94a5('0x31')]);_0x11c9b4[_0x94a5('0x35')]=_[_0x94a5('0x34')](_0x509e26[_0x94a5('0x30')],qs[_0x94a5('0x36')](_0x496b25[_0x94a5('0x31')][_0x94a5('0x36')]));_0x11c9b4['attributes']=_0x11c9b4[_0x94a5('0x35')][_0x94a5('0x37')]?_0x11c9b4[_0x94a5('0x35')]:_0x509e26[_0x94a5('0x30')];if(!_0x496b25['query'][_0x94a5('0x38')]('nolimit')){_0x11c9b4[_0x94a5('0x1e')]=qs[_0x94a5('0x1e')](_0x496b25[_0x94a5('0x31')]['limit']);_0x11c9b4[_0x94a5('0x20')]=qs[_0x94a5('0x20')](_0x496b25[_0x94a5('0x31')][_0x94a5('0x20')]);}_0x11c9b4[_0x94a5('0x39')]=qs[_0x94a5('0x3a')](_0x496b25[_0x94a5('0x31')][_0x94a5('0x3a')]);_0x11c9b4[_0x94a5('0x3b')]=qs['filters'](_[_0x94a5('0x3c')](_0x496b25[_0x94a5('0x31')],_0x509e26[_0x94a5('0x33')]),_0x468e36);if(_0x496b25[_0x94a5('0x31')]['filter']){_0x11c9b4['where']=_['merge'](_0x11c9b4['where'],{'$or':_['map'](_0x468e36,function(_0x1bf5ee){if(_0x1bf5ee['type']!==_0x94a5('0x3d')){var _0x32f81d={};_0x32f81d[_0x1bf5ee[_0x94a5('0x2a')]]={'$like':'%'+_0x496b25[_0x94a5('0x31')][_0x94a5('0x3e')]+'%'};return _0x32f81d;}})});}_0x11c9b4=_[_0x94a5('0x3f')]({},_0x11c9b4,_0x496b25[_0x94a5('0x40')]);var _0xf23e7={'where':_0x11c9b4[_0x94a5('0x3b')]};return db[_0x94a5('0x2d')]['count'](_0xf23e7)['then'](function(_0x56cf67){_0x705805['count']=_0x56cf67;if(_0x496b25[_0x94a5('0x31')][_0x94a5('0x41')]){_0x11c9b4[_0x94a5('0x42')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x94a5('0x43')](_0x11c9b4);})['then'](function(_0x49f79f){_0x705805['rows']=_0x49f79f;return _0x705805;})['then'](respondWithFilteredResult(_0x1d4e91,_0x11c9b4))[_0x94a5('0x44')](handleError(_0x1d4e91,null));};exports['show']=function(_0x218578,_0x7a3b19){var _0x569c60={'raw':!![],'where':{'id':_0x218578[_0x94a5('0x45')]['id']}},_0x1907c3={};_0x1907c3[_0x94a5('0x30')]=_[_0x94a5('0x32')](db[_0x94a5('0x2d')][_0x94a5('0x2e')]);_0x1907c3[_0x94a5('0x31')]=_[_0x94a5('0x32')](_0x218578[_0x94a5('0x31')]);_0x1907c3['filters']=_['intersection'](_0x1907c3[_0x94a5('0x30')],_0x1907c3[_0x94a5('0x31')]);_0x569c60['attributes']=_[_0x94a5('0x34')](_0x1907c3[_0x94a5('0x30')],qs[_0x94a5('0x36')](_0x218578[_0x94a5('0x31')][_0x94a5('0x36')]));_0x569c60['attributes']=_0x569c60[_0x94a5('0x35')][_0x94a5('0x37')]?_0x569c60[_0x94a5('0x35')]:_0x1907c3[_0x94a5('0x30')];if(_0x218578[_0x94a5('0x31')][_0x94a5('0x41')]){_0x569c60[_0x94a5('0x42')]=[{'all':!![]}];}_0x569c60=_[_0x94a5('0x3f')]({},_0x569c60,_0x218578[_0x94a5('0x40')]);return db[_0x94a5('0x2d')][_0x94a5('0x46')](_0x569c60)['then'](handleEntityNotFound(_0x7a3b19,null))[_0x94a5('0x25')](respondWithResult(_0x7a3b19,null))[_0x94a5('0x44')](handleError(_0x7a3b19,null));};exports[_0x94a5('0x47')]=function(_0x5b9a35,_0x350777){return db[_0x94a5('0x2d')][_0x94a5('0x47')](_0x5b9a35[_0x94a5('0x48')],{})['then'](respondWithResult(_0x350777,0xc9))['catch'](handleError(_0x350777,null));};exports[_0x94a5('0x49')]=function(_0x23af53,_0x387bec){if(_0x23af53[_0x94a5('0x48')]['id']){delete _0x23af53['body']['id'];}return db[_0x94a5('0x2d')][_0x94a5('0x46')]({'where':{'id':_0x23af53[_0x94a5('0x45')]['id']}})[_0x94a5('0x25')](handleEntityNotFound(_0x387bec,null))[_0x94a5('0x25')](saveUpdates(_0x23af53['body'],null))[_0x94a5('0x25')](respondWithResult(_0x387bec,null))[_0x94a5('0x44')](handleError(_0x387bec,null));};exports[_0x94a5('0x26')]=function(_0x4582d6,_0xc33a0e){return db[_0x94a5('0x2d')]['find']({'where':{'id':_0x4582d6[_0x94a5('0x45')]['id']}})['then'](handleEntityNotFound(_0xc33a0e,null))[_0x94a5('0x25')](removeEntity(_0xc33a0e,null))[_0x94a5('0x44')](handleError(_0xc33a0e,null));};exports[_0x94a5('0x4a')]=function(_0x3f370d,_0x860963){return db[_0x94a5('0x2d')][_0x94a5('0x4a')]()['then'](respondWithResult(_0x860963,null))[_0x94a5('0x44')](handleError(_0x860963,null));};
\ No newline at end of file
+var _0x8641=['include','findAll','rows','catch','show','params','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','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/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','update','then','destroy','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll'];(function(_0x5466ab,_0x227b13){var _0x40751a=function(_0x477f9e){while(--_0x477f9e){_0x5466ab['push'](_0x5466ab['shift']());}};_0x40751a(++_0x227b13);}(_0x8641,0xad));var _0x1864=function(_0xeb0035,_0x2c3d9a){_0xeb0035=_0xeb0035-0x0;var _0x190e57=_0x8641[_0xeb0035];return _0x190e57;};'use strict';var emlformat=require(_0x1864('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1864('0x1'));var jsonpatch=require(_0x1864('0x2'));var rp=require(_0x1864('0x3'));var moment=require('moment');var BPromise=require(_0x1864('0x4'));var Mustache=require(_0x1864('0x5'));var util=require(_0x1864('0x6'));var path=require(_0x1864('0x7'));var sox=require(_0x1864('0x8'));var csv=require('to-csv');var ejs=require(_0x1864('0x9'));var fs=require('fs');var fs_extra=require(_0x1864('0xa'));var _=require(_0x1864('0xb'));var squel=require(_0x1864('0xc'));var crypto=require(_0x1864('0xd'));var jsforce=require(_0x1864('0xe'));var deskjs=require(_0x1864('0xf'));var toCsv=require(_0x1864('0x10'));var querystring=require(_0x1864('0x11'));var Papa=require(_0x1864('0x12'));var Redis=require(_0x1864('0x13'));var authService=require(_0x1864('0x14'));var qs=require(_0x1864('0x15'));var as=require(_0x1864('0x16'));var hardwareService=require(_0x1864('0x17'));var logger=require(_0x1864('0x18'))('api');var utils=require(_0x1864('0x19'));var config=require(_0x1864('0x1a'));var licenseUtil=require(_0x1864('0x1b'));var db=require(_0x1864('0x1c'))['db'];function respondWithStatusCode(_0x299e57,_0x52f220){_0x52f220=_0x52f220||0xcc;return function(_0x17adc3){if(_0x17adc3){return _0x299e57[_0x1864('0x1d')](_0x52f220);}return _0x299e57[_0x1864('0x1e')](_0x52f220)[_0x1864('0x1f')]();};}function respondWithResult(_0x47e477,_0x5df779){_0x5df779=_0x5df779||0xc8;return function(_0x4de134){if(_0x4de134){return _0x47e477[_0x1864('0x1e')](_0x5df779)[_0x1864('0x20')](_0x4de134);}};}function respondWithFilteredResult(_0x445203,_0x13a2f3){return function(_0x17524c){if(_0x17524c){var _0x3c9d85=typeof _0x13a2f3['offset']===_0x1864('0x21')&&typeof _0x13a2f3[_0x1864('0x22')]==='undefined';var _0x2d41ff=_0x17524c[_0x1864('0x23')];var _0x5eca6a=_0x3c9d85?0x0:_0x13a2f3[_0x1864('0x24')];var _0x1e691c=_0x3c9d85?_0x17524c['count']:_0x13a2f3[_0x1864('0x24')]+_0x13a2f3[_0x1864('0x22')];var _0x44399e;if(_0x1e691c>=_0x2d41ff){_0x1e691c=_0x2d41ff;_0x44399e=0xc8;}else{_0x44399e=0xce;}_0x445203[_0x1864('0x1e')](_0x44399e);return _0x445203[_0x1864('0x25')]('Content-Range',_0x5eca6a+'-'+_0x1e691c+'/'+_0x2d41ff)[_0x1864('0x20')](_0x17524c);}return null;};}function patchUpdates(_0x5d7711){return function(_0x100458){try{jsonpatch[_0x1864('0x26')](_0x100458,_0x5d7711,!![]);}catch(_0x2caebc){return BPromise[_0x1864('0x27')](_0x2caebc);}return _0x100458['save']();};}function saveUpdates(_0x12a004,_0x24dbe){return function(_0x3ec93d){if(_0x3ec93d){return _0x3ec93d[_0x1864('0x28')](_0x12a004)[_0x1864('0x29')](function(_0x389811){return _0x389811;});}return null;};}function removeEntity(_0x812045,_0x469525){return function(_0x4fab90){if(_0x4fab90){return _0x4fab90[_0x1864('0x2a')]()[_0x1864('0x29')](function(){_0x812045[_0x1864('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9f30d,_0x589559){return function(_0x396d43){if(!_0x396d43){_0x9f30d[_0x1864('0x1d')](0x194);}return _0x396d43;};}function handleError(_0x21c1b7,_0x3831fe){_0x3831fe=_0x3831fe||0x1f4;return function(_0x1efdeb){logger[_0x1864('0x2b')](_0x1efdeb[_0x1864('0x2c')]);if(_0x1efdeb[_0x1864('0x2d')]){delete _0x1efdeb[_0x1864('0x2d')];}_0x21c1b7[_0x1864('0x1e')](_0x3831fe)[_0x1864('0x2e')](_0x1efdeb);};}exports[_0x1864('0x2f')]=function(_0x1563f3,_0x12cbde){var _0x224996={},_0x60733b={},_0x5d42d8={'count':0x0,'rows':[]};var _0x4ac7d1=_[_0x1864('0x30')](db[_0x1864('0x31')][_0x1864('0x32')],function(_0x572317){return{'name':_0x572317[_0x1864('0x33')],'type':_0x572317[_0x1864('0x34')]['key']};});_0x60733b[_0x1864('0x35')]=_[_0x1864('0x30')](_0x4ac7d1,_0x1864('0x2d'));_0x60733b[_0x1864('0x36')]=_[_0x1864('0x37')](_0x1563f3['query']);_0x60733b['filters']=_[_0x1864('0x38')](_0x60733b[_0x1864('0x35')],_0x60733b['query']);_0x224996[_0x1864('0x39')]=_[_0x1864('0x38')](_0x60733b['model'],qs[_0x1864('0x3a')](_0x1563f3[_0x1864('0x36')][_0x1864('0x3a')]));_0x224996[_0x1864('0x39')]=_0x224996['attributes'][_0x1864('0x3b')]?_0x224996[_0x1864('0x39')]:_0x60733b['model'];if(!_0x1563f3[_0x1864('0x36')][_0x1864('0x3c')](_0x1864('0x3d'))){_0x224996[_0x1864('0x22')]=qs[_0x1864('0x22')](_0x1563f3[_0x1864('0x36')][_0x1864('0x22')]);_0x224996[_0x1864('0x24')]=qs['offset'](_0x1563f3[_0x1864('0x36')][_0x1864('0x24')]);}_0x224996['order']=qs[_0x1864('0x3e')](_0x1563f3[_0x1864('0x36')]['sort']);_0x224996[_0x1864('0x3f')]=qs[_0x1864('0x40')](_[_0x1864('0x41')](_0x1563f3[_0x1864('0x36')],_0x60733b['filters']),_0x4ac7d1);if(_0x1563f3['query'][_0x1864('0x42')]){_0x224996['where']=_[_0x1864('0x43')](_0x224996[_0x1864('0x3f')],{'$or':_[_0x1864('0x30')](_0x4ac7d1,function(_0x36895){if(_0x36895[_0x1864('0x34')]!==_0x1864('0x44')){var _0x1d4637={};_0x1d4637[_0x36895[_0x1864('0x2d')]]={'$like':'%'+_0x1563f3[_0x1864('0x36')][_0x1864('0x42')]+'%'};return _0x1d4637;}})});}_0x224996=_[_0x1864('0x43')]({},_0x224996,_0x1563f3['options']);var _0x514442={'where':_0x224996['where']};return db['SmsQueueReport'][_0x1864('0x23')](_0x514442)[_0x1864('0x29')](function(_0xd9caca){_0x5d42d8['count']=_0xd9caca;if(_0x1563f3[_0x1864('0x36')][_0x1864('0x45')]){_0x224996[_0x1864('0x46')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x1864('0x47')](_0x224996);})[_0x1864('0x29')](function(_0x3286b6){_0x5d42d8[_0x1864('0x48')]=_0x3286b6;return _0x5d42d8;})[_0x1864('0x29')](respondWithFilteredResult(_0x12cbde,_0x224996))[_0x1864('0x49')](handleError(_0x12cbde,null));};exports[_0x1864('0x4a')]=function(_0x2cf3ca,_0x35ae0e){var _0x369673={'raw':!![],'where':{'id':_0x2cf3ca[_0x1864('0x4b')]['id']}},_0x53d0af={};_0x53d0af[_0x1864('0x35')]=_[_0x1864('0x37')](db[_0x1864('0x31')]['rawAttributes']);_0x53d0af['query']=_[_0x1864('0x37')](_0x2cf3ca[_0x1864('0x36')]);_0x53d0af[_0x1864('0x40')]=_[_0x1864('0x38')](_0x53d0af['model'],_0x53d0af[_0x1864('0x36')]);_0x369673['attributes']=_[_0x1864('0x38')](_0x53d0af[_0x1864('0x35')],qs[_0x1864('0x3a')](_0x2cf3ca[_0x1864('0x36')][_0x1864('0x3a')]));_0x369673[_0x1864('0x39')]=_0x369673[_0x1864('0x39')][_0x1864('0x3b')]?_0x369673[_0x1864('0x39')]:_0x53d0af[_0x1864('0x35')];if(_0x2cf3ca[_0x1864('0x36')]['includeAll']){_0x369673[_0x1864('0x46')]=[{'all':!![]}];}_0x369673=_[_0x1864('0x43')]({},_0x369673,_0x2cf3ca[_0x1864('0x4c')]);return db[_0x1864('0x31')][_0x1864('0x4d')](_0x369673)['then'](handleEntityNotFound(_0x35ae0e,null))['then'](respondWithResult(_0x35ae0e,null))['catch'](handleError(_0x35ae0e,null));};exports[_0x1864('0x4e')]=function(_0x4c75b3,_0x44d4f3){return db[_0x1864('0x31')][_0x1864('0x4e')](_0x4c75b3[_0x1864('0x4f')],{})[_0x1864('0x29')](respondWithResult(_0x44d4f3,0xc9))[_0x1864('0x49')](handleError(_0x44d4f3,null));};exports[_0x1864('0x28')]=function(_0x1e2cf1,_0x59a5c6){if(_0x1e2cf1[_0x1864('0x4f')]['id']){delete _0x1e2cf1[_0x1864('0x4f')]['id'];}return db[_0x1864('0x31')][_0x1864('0x4d')]({'where':{'id':_0x1e2cf1[_0x1864('0x4b')]['id']}})[_0x1864('0x29')](handleEntityNotFound(_0x59a5c6,null))[_0x1864('0x29')](saveUpdates(_0x1e2cf1[_0x1864('0x4f')],null))[_0x1864('0x29')](respondWithResult(_0x59a5c6,null))[_0x1864('0x49')](handleError(_0x59a5c6,null));};exports[_0x1864('0x2a')]=function(_0x315a6f,_0x39a72b){return db['SmsQueueReport']['find']({'where':{'id':_0x315a6f[_0x1864('0x4b')]['id']}})['then'](handleEntityNotFound(_0x39a72b,null))[_0x1864('0x29')](removeEntity(_0x39a72b,null))[_0x1864('0x49')](handleError(_0x39a72b,null));};exports['describe']=function(_0x482626,_0x5ddb31){return db[_0x1864('0x31')][_0x1864('0x50')]()[_0x1864('0x29')](respondWithResult(_0x5ddb31,null))[_0x1864('0x49')](handleError(_0x5ddb31,null));};
\ No newline at end of file
index aae9397..9453ed1 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(_0x5cfd3b,_0x2f59c9){var _0x276271=function(_0x4b37f7){while(--_0x4b37f7){_0x5cfd3b['push'](_0x5cfd3b['shift']());}};_0x276271(++_0x2f59c9);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 ad0c7e0..637f48a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda79=['create','body','options','SmsQueueReport','update','where','limit','UpdateSmsQueueReport','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSmsQueueReport'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xda79,0xf6));var _0x9da7=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xda79[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x9da7('0x0'));var moment=require(_0x9da7('0x1'));var BPromise=require(_0x9da7('0x2'));var rs=require(_0x9da7('0x3'));var fs=require('fs');var Redis=require(_0x9da7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9da7('0x5'));var logger=require(_0x9da7('0x6'))(_0x9da7('0x7'));var config=require(_0x9da7('0x8'));var jayson=require(_0x9da7('0x9'));var client=jayson[_0x9da7('0xa')][_0x9da7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5689c7,_0x1bb7cc,_0x147386){return new BPromise(function(_0x5e237d,_0xaf95b3){return client[_0x9da7('0xc')](_0x5689c7,_0x147386)[_0x9da7('0xd')](function(_0x337f17){logger[_0x9da7('0xe')](_0x9da7('0xf'),_0x1bb7cc,'request\x20sent');logger[_0x9da7('0x10')](_0x9da7('0x11'),_0x1bb7cc,_0x9da7('0x12'),JSON[_0x9da7('0x13')](_0x337f17));if(_0x337f17[_0x9da7('0x14')]){if(_0x337f17[_0x9da7('0x14')][_0x9da7('0x15')]===0x1f4){logger[_0x9da7('0x14')](_0x9da7('0xf'),_0x1bb7cc,_0x337f17[_0x9da7('0x14')]['message']);return _0xaf95b3(_0x337f17[_0x9da7('0x14')][_0x9da7('0x16')]);}logger[_0x9da7('0x14')]('SmsQueueReport,\x20%s,\x20%s',_0x1bb7cc,_0x337f17[_0x9da7('0x14')][_0x9da7('0x16')]);return _0x5e237d(_0x337f17[_0x9da7('0x14')]['message']);}else{logger['info'](_0x9da7('0xf'),_0x1bb7cc,_0x9da7('0x12'));_0x5e237d(_0x337f17[_0x9da7('0x17')][_0x9da7('0x16')]);}})[_0x9da7('0x18')](function(_0x4f4d94){logger[_0x9da7('0x14')](_0x9da7('0xf'),_0x1bb7cc,_0x4f4d94);_0xaf95b3(_0x4f4d94);});});}exports[_0x9da7('0x19')]=function(_0x42a5f8){var _0x4019bb=this;return new Promise(function(_0x50cae0,_0x338250){return db['SmsQueueReport'][_0x9da7('0x1a')](_0x42a5f8[_0x9da7('0x1b')],{'raw':_0x42a5f8[_0x9da7('0x1c')]?_0x42a5f8['options']['raw']===undefined?!![]:![]:!![]})[_0x9da7('0xd')](function(_0xb2fe56){logger['info']('CreateSmsQueueReport',_0x42a5f8);logger[_0x9da7('0x10')](_0x9da7('0x19'),_0x42a5f8,JSON[_0x9da7('0x13')](_0xb2fe56));_0x50cae0(_0xb2fe56);})[_0x9da7('0x18')](function(_0xa37ac5){logger[_0x9da7('0x14')](_0x9da7('0x19'),_0xa37ac5[_0x9da7('0x16')],_0x42a5f8);_0x338250(_0x4019bb[_0x9da7('0x14')](0x1f4,_0xa37ac5[_0x9da7('0x16')]));});});};exports['UpdateSmsQueueReport']=function(_0x2bf683){var _0x49cfa2=this;return new Promise(function(_0xfdf333,_0x285256){return db[_0x9da7('0x1d')][_0x9da7('0x1e')](_0x2bf683[_0x9da7('0x1b')],{'raw':_0x2bf683['options']?_0x2bf683[_0x9da7('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bf683['options']?_0x2bf683[_0x9da7('0x1c')][_0x9da7('0x1f')]||null:null,'attributes':_0x2bf683[_0x9da7('0x1c')]?_0x2bf683[_0x9da7('0x1c')]['attributes']||null:null,'limit':_0x2bf683['options']?_0x2bf683[_0x9da7('0x1c')][_0x9da7('0x20')]||null:null})['then'](function(_0x2aa5c2){logger['info'](_0x9da7('0x21'),_0x2bf683);logger[_0x9da7('0x10')](_0x9da7('0x21'),_0x2bf683,JSON['stringify'](_0x2aa5c2));_0xfdf333(_0x2aa5c2);})[_0x9da7('0x18')](function(_0x406716){logger['error'](_0x9da7('0x21'),_0x406716[_0x9da7('0x16')],_0x2bf683);_0x285256(_0x49cfa2[_0x9da7('0x14')](0x1f4,_0x406716[_0x9da7('0x16')]));});});};
\ No newline at end of file
+var _0x4d59=['error','code','message','SmsQueueReport','body','options','raw','CreateSmsQueueReport','stringify','UpdateSmsQueueReport','update','where','attributes','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x125891,_0x3998fe){var _0xcdb07d=function(_0x546540){while(--_0x546540){_0x125891['push'](_0x125891['shift']());}};_0xcdb07d(++_0x3998fe);}(_0x4d59,0x8a));var _0x94d5=function(_0x2dad19,_0x374db9){_0x2dad19=_0x2dad19-0x0;var _0xe4548c=_0x4d59[_0x2dad19];return _0xe4548c;};'use strict';var _=require(_0x94d5('0x0'));var util=require(_0x94d5('0x1'));var moment=require(_0x94d5('0x2'));var BPromise=require('bluebird');var rs=require(_0x94d5('0x3'));var fs=require('fs');var Redis=require(_0x94d5('0x4'));var db=require(_0x94d5('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x94d5('0x6'))('rpc');var config=require(_0x94d5('0x7'));var jayson=require(_0x94d5('0x8'));var client=jayson[_0x94d5('0x9')][_0x94d5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x264514,_0x18600b,_0x3b9073){return new BPromise(function(_0xe6343,_0x48ea71){return client[_0x94d5('0xb')](_0x264514,_0x3b9073)[_0x94d5('0xc')](function(_0x207058){logger[_0x94d5('0xd')](_0x94d5('0xe'),_0x18600b,_0x94d5('0xf'));logger[_0x94d5('0x10')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x18600b,_0x94d5('0xf'),JSON['stringify'](_0x207058));if(_0x207058[_0x94d5('0x11')]){if(_0x207058['error'][_0x94d5('0x12')]===0x1f4){logger[_0x94d5('0x11')](_0x94d5('0xe'),_0x18600b,_0x207058[_0x94d5('0x11')][_0x94d5('0x13')]);return _0x48ea71(_0x207058['error'][_0x94d5('0x13')]);}logger[_0x94d5('0x11')](_0x94d5('0xe'),_0x18600b,_0x207058[_0x94d5('0x11')][_0x94d5('0x13')]);return _0xe6343(_0x207058[_0x94d5('0x11')][_0x94d5('0x13')]);}else{logger[_0x94d5('0xd')](_0x94d5('0xe'),_0x18600b,'request\x20sent');_0xe6343(_0x207058['result']['message']);}})['catch'](function(_0x53fb18){logger[_0x94d5('0x11')](_0x94d5('0xe'),_0x18600b,_0x53fb18);_0x48ea71(_0x53fb18);});});}exports['CreateSmsQueueReport']=function(_0x59dc02){var _0x5a2f5c=this;return new Promise(function(_0x48504a,_0x1d01a0){return db[_0x94d5('0x14')]['create'](_0x59dc02[_0x94d5('0x15')],{'raw':_0x59dc02['options']?_0x59dc02[_0x94d5('0x16')][_0x94d5('0x17')]===undefined?!![]:![]:!![]})[_0x94d5('0xc')](function(_0x1eec2b){logger[_0x94d5('0xd')](_0x94d5('0x18'),_0x59dc02);logger['debug']('CreateSmsQueueReport',_0x59dc02,JSON[_0x94d5('0x19')](_0x1eec2b));_0x48504a(_0x1eec2b);})['catch'](function(_0x259724){logger['error'](_0x94d5('0x18'),_0x259724[_0x94d5('0x13')],_0x59dc02);_0x1d01a0(_0x5a2f5c[_0x94d5('0x11')](0x1f4,_0x259724['message']));});});};exports[_0x94d5('0x1a')]=function(_0x189cce){var _0xfaf269=this;return new Promise(function(_0x5bae03,_0x6dc416){return db[_0x94d5('0x14')][_0x94d5('0x1b')](_0x189cce[_0x94d5('0x15')],{'raw':_0x189cce[_0x94d5('0x16')]?_0x189cce[_0x94d5('0x16')][_0x94d5('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x189cce[_0x94d5('0x16')]?_0x189cce['options'][_0x94d5('0x1c')]||null:null,'attributes':_0x189cce[_0x94d5('0x16')]?_0x189cce[_0x94d5('0x16')][_0x94d5('0x1d')]||null:null,'limit':_0x189cce[_0x94d5('0x16')]?_0x189cce['options']['limit']||null:null})['then'](function(_0x54a9b9){logger[_0x94d5('0xd')](_0x94d5('0x1a'),_0x189cce);logger['debug'](_0x94d5('0x1a'),_0x189cce,JSON[_0x94d5('0x19')](_0x54a9b9));_0x5bae03(_0x54a9b9);})[_0x94d5('0x1e')](function(_0x4a5508){logger[_0x94d5('0x11')](_0x94d5('0x1a'),_0x4a5508[_0x94d5('0x13')],_0x189cce);_0x6dc416(_0xfaf269[_0x94d5('0x11')](0x1f4,_0x4a5508[_0x94d5('0x13')]));});});};
\ No newline at end of file
index 4f00d8d..a9c7e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f5a=['delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','post','put'];(function(_0x1f25d2,_0x1b70a0){var _0x571982=function(_0x73987d){while(--_0x73987d){_0x1f25d2['push'](_0x1f25d2['shift']());}};_0x571982(++_0x1b70a0);}(_0x9f5a,0xbd));var _0xa9f5=function(_0x30203b,_0x2283a0){_0x30203b=_0x30203b-0x0;var _0x3ccad6=_0x9f5a[_0x30203b];return _0x3ccad6;};'use strict';var multer=require(_0xa9f5('0x0'));var util=require(_0xa9f5('0x1'));var path=require(_0xa9f5('0x2'));var timeout=require(_0xa9f5('0x3'));var express=require('express');var router=express[_0xa9f5('0x4')]();var fs_extra=require(_0xa9f5('0x5'));var auth=require(_0xa9f5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa9f5('0x7'));var controller=require('./smsTransferReport.controller');router[_0xa9f5('0x8')]('/',auth[_0xa9f5('0x9')](),controller['index']);router[_0xa9f5('0x8')](_0xa9f5('0xa'),auth[_0xa9f5('0x9')](),controller[_0xa9f5('0xb')]);router[_0xa9f5('0x8')](_0xa9f5('0xc'),auth[_0xa9f5('0x9')](),controller['show']);router[_0xa9f5('0xd')]('/',auth[_0xa9f5('0x9')](),controller['create']);router[_0xa9f5('0xe')](_0xa9f5('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xa9f5('0xf')](_0xa9f5('0xc'),auth[_0xa9f5('0x9')](),controller[_0xa9f5('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x008c=['../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','index','show','post','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0x008c,0x188));var _0xc008=function(_0x281a3b,_0x1df435){_0x281a3b=_0x281a3b-0x0;var _0x387721=_0x008c[_0x281a3b];return _0x387721;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['update']);router[_0xc008('0x10')](_0xc008('0xf'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);module[_0xc008('0x12')]=router;
\ No newline at end of file
index c5a8cc8..3d13259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x174346,_0x4737ec){var _0x28d068=function(_0x3023c5){while(--_0x3023c5){_0x174346['push'](_0x174346['shift']());}};_0x28d068(++_0x4737ec);}(_0x008c,0x188));var _0xc008=function(_0x30f395,_0x3629b5){_0x30f395=_0x30f395-0x0;var _0x2ea0ee=_0x008c[_0x30f395];return _0x2ea0ee;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0xe8a6e5,_0xb19476){var _0x3e50a9=function(_0x570388){while(--_0x570388){_0xe8a6e5['push'](_0xe8a6e5['shift']());}};_0x3e50a9(++_0xb19476);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x2baf40,_0x5ebef2){_0x2baf40=_0x2baf40-0x0;var _0x2bb2cb=_0xf3cd[_0x2baf40];return _0x2bb2cb;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index a5f05bf..1896df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda28=['nolimit','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','keys','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','destroy','then','status','error','stack','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x35a3e5,_0x284e22){var _0x31e9ff=function(_0x6344f4){while(--_0x6344f4){_0x35a3e5['push'](_0x35a3e5['shift']());}};_0x31e9ff(++_0x284e22);}(_0xda28,0xf9));var _0x8da2=function(_0x3573a0,_0x24de20){_0x3573a0=_0x3573a0-0x0;var _0x10afad=_0xda28[_0x3573a0];return _0x10afad;};'use strict';var emlformat=require(_0x8da2('0x0'));var rimraf=require(_0x8da2('0x1'));var zipdir=require(_0x8da2('0x2'));var jsonpatch=require(_0x8da2('0x3'));var rp=require(_0x8da2('0x4'));var moment=require(_0x8da2('0x5'));var BPromise=require(_0x8da2('0x6'));var Mustache=require(_0x8da2('0x7'));var util=require('util');var path=require(_0x8da2('0x8'));var sox=require(_0x8da2('0x9'));var csv=require(_0x8da2('0xa'));var ejs=require(_0x8da2('0xb'));var fs=require('fs');var fs_extra=require(_0x8da2('0xc'));var _=require('lodash');var squel=require(_0x8da2('0xd'));var crypto=require(_0x8da2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x8da2('0xf'));var toCsv=require(_0x8da2('0xa'));var querystring=require(_0x8da2('0x10'));var Papa=require(_0x8da2('0x11'));var Redis=require(_0x8da2('0x12'));var authService=require(_0x8da2('0x13'));var qs=require(_0x8da2('0x14'));var as=require(_0x8da2('0x15'));var hardwareService=require(_0x8da2('0x16'));var logger=require('../../config/logger')(_0x8da2('0x17'));var utils=require(_0x8da2('0x18'));var config=require(_0x8da2('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x8da2('0x1a'))['db'];function respondWithStatusCode(_0x1999da,_0x20c7aa){_0x20c7aa=_0x20c7aa||0xcc;return function(_0x1521b9){if(_0x1521b9){return _0x1999da[_0x8da2('0x1b')](_0x20c7aa);}return _0x1999da['status'](_0x20c7aa)[_0x8da2('0x1c')]();};}function respondWithResult(_0x458e7e,_0x550965){_0x550965=_0x550965||0xc8;return function(_0x1bef9c){if(_0x1bef9c){return _0x458e7e['status'](_0x550965)[_0x8da2('0x1d')](_0x1bef9c);}};}function respondWithFilteredResult(_0x459138,_0x1b1fbc){return function(_0x558fb5){if(_0x558fb5){var _0x5f361a=typeof _0x1b1fbc[_0x8da2('0x1e')]==='undefined'&&typeof _0x1b1fbc[_0x8da2('0x1f')]===_0x8da2('0x20');var _0x1d1352=_0x558fb5[_0x8da2('0x21')];var _0x2c5c18=_0x5f361a?0x0:_0x1b1fbc['offset'];var _0x4817b3=_0x5f361a?_0x558fb5['count']:_0x1b1fbc[_0x8da2('0x1e')]+_0x1b1fbc[_0x8da2('0x1f')];var _0x213028;if(_0x4817b3>=_0x1d1352){_0x4817b3=_0x1d1352;_0x213028=0xc8;}else{_0x213028=0xce;}_0x459138['status'](_0x213028);return _0x459138['set'](_0x8da2('0x22'),_0x2c5c18+'-'+_0x4817b3+'/'+_0x1d1352)['json'](_0x558fb5);}return null;};}function patchUpdates(_0x241c73){return function(_0xd5ff50){try{jsonpatch[_0x8da2('0x23')](_0xd5ff50,_0x241c73,!![]);}catch(_0x5539c3){return BPromise['reject'](_0x5539c3);}return _0xd5ff50[_0x8da2('0x24')]();};}function saveUpdates(_0x35896b,_0x3c423a){return function(_0x5f5c35){if(_0x5f5c35){return _0x5f5c35[_0x8da2('0x25')](_0x35896b)['then'](function(_0x26fd50){return _0x26fd50;});}return null;};}function removeEntity(_0x30b0c8,_0x18e355){return function(_0x217697){if(_0x217697){return _0x217697[_0x8da2('0x26')]()[_0x8da2('0x27')](function(){_0x30b0c8[_0x8da2('0x28')](0xcc)[_0x8da2('0x1c')]();});}};}function handleEntityNotFound(_0xae32b5,_0x2c66f){return function(_0x4d93e0){if(!_0x4d93e0){_0xae32b5[_0x8da2('0x1b')](0x194);}return _0x4d93e0;};}function handleError(_0xcfa0f9,_0x3bc603){_0x3bc603=_0x3bc603||0x1f4;return function(_0x486547){logger[_0x8da2('0x29')](_0x486547[_0x8da2('0x2a')]);if(_0x486547[_0x8da2('0x2b')]){delete _0x486547[_0x8da2('0x2b')];}_0xcfa0f9[_0x8da2('0x28')](_0x3bc603)[_0x8da2('0x2c')](_0x486547);};}exports['index']=function(_0x4e2957,_0x5a70c7){var _0x504888={},_0x1afa92={},_0x4ebb21={'count':0x0,'rows':[]};var _0x75f1d7=_[_0x8da2('0x2d')](db[_0x8da2('0x2e')][_0x8da2('0x2f')],function(_0x25c72b){return{'name':_0x25c72b[_0x8da2('0x30')],'type':_0x25c72b[_0x8da2('0x31')][_0x8da2('0x32')]};});_0x1afa92[_0x8da2('0x33')]=_['map'](_0x75f1d7,_0x8da2('0x2b'));_0x1afa92[_0x8da2('0x34')]=_['keys'](_0x4e2957['query']);_0x1afa92[_0x8da2('0x35')]=_[_0x8da2('0x36')](_0x1afa92[_0x8da2('0x33')],_0x1afa92[_0x8da2('0x34')]);_0x504888[_0x8da2('0x37')]=_[_0x8da2('0x36')](_0x1afa92[_0x8da2('0x33')],qs[_0x8da2('0x38')](_0x4e2957[_0x8da2('0x34')][_0x8da2('0x38')]));_0x504888['attributes']=_0x504888['attributes'][_0x8da2('0x39')]?_0x504888[_0x8da2('0x37')]:_0x1afa92[_0x8da2('0x33')];if(!_0x4e2957['query'][_0x8da2('0x3a')](_0x8da2('0x3b'))){_0x504888[_0x8da2('0x1f')]=qs[_0x8da2('0x1f')](_0x4e2957['query'][_0x8da2('0x1f')]);_0x504888[_0x8da2('0x1e')]=qs['offset'](_0x4e2957[_0x8da2('0x34')]['offset']);}_0x504888['order']=qs['sort'](_0x4e2957[_0x8da2('0x34')]['sort']);_0x504888[_0x8da2('0x3c')]=qs[_0x8da2('0x35')](_[_0x8da2('0x3d')](_0x4e2957[_0x8da2('0x34')],_0x1afa92['filters']),_0x75f1d7);if(_0x4e2957['query'][_0x8da2('0x3e')]){_0x504888['where']=_[_0x8da2('0x3f')](_0x504888[_0x8da2('0x3c')],{'$or':_[_0x8da2('0x2d')](_0x75f1d7,function(_0x5a4197){if(_0x5a4197[_0x8da2('0x31')]!==_0x8da2('0x40')){var _0x35bc09={};_0x35bc09[_0x5a4197['name']]={'$like':'%'+_0x4e2957['query'][_0x8da2('0x3e')]+'%'};return _0x35bc09;}})});}_0x504888=_[_0x8da2('0x3f')]({},_0x504888,_0x4e2957[_0x8da2('0x41')]);var _0x16854a={'where':_0x504888[_0x8da2('0x3c')]};return db[_0x8da2('0x2e')]['count'](_0x16854a)['then'](function(_0x568e5d){_0x4ebb21[_0x8da2('0x21')]=_0x568e5d;if(_0x4e2957['query'][_0x8da2('0x42')]){_0x504888[_0x8da2('0x43')]=[{'all':!![]}];}return db[_0x8da2('0x2e')][_0x8da2('0x44')](_0x504888);})[_0x8da2('0x27')](function(_0x245a5b){_0x4ebb21[_0x8da2('0x45')]=_0x245a5b;return _0x4ebb21;})['then'](respondWithFilteredResult(_0x5a70c7,_0x504888))['catch'](handleError(_0x5a70c7,null));};exports['show']=function(_0x46f4b3,_0xec728d){var _0x12365a={'raw':!![],'where':{'id':_0x46f4b3['params']['id']}},_0x455b3b={};_0x455b3b[_0x8da2('0x33')]=_[_0x8da2('0x46')](db[_0x8da2('0x2e')]['rawAttributes']);_0x455b3b[_0x8da2('0x34')]=_[_0x8da2('0x46')](_0x46f4b3[_0x8da2('0x34')]);_0x455b3b['filters']=_[_0x8da2('0x36')](_0x455b3b[_0x8da2('0x33')],_0x455b3b[_0x8da2('0x34')]);_0x12365a['attributes']=_[_0x8da2('0x36')](_0x455b3b['model'],qs[_0x8da2('0x38')](_0x46f4b3[_0x8da2('0x34')][_0x8da2('0x38')]));_0x12365a['attributes']=_0x12365a[_0x8da2('0x37')][_0x8da2('0x39')]?_0x12365a[_0x8da2('0x37')]:_0x455b3b[_0x8da2('0x33')];if(_0x46f4b3[_0x8da2('0x34')][_0x8da2('0x42')]){_0x12365a[_0x8da2('0x43')]=[{'all':!![]}];}_0x12365a=_[_0x8da2('0x3f')]({},_0x12365a,_0x46f4b3[_0x8da2('0x41')]);return db['SmsTransferReport'][_0x8da2('0x47')](_0x12365a)[_0x8da2('0x27')](handleEntityNotFound(_0xec728d,null))[_0x8da2('0x27')](respondWithResult(_0xec728d,null))[_0x8da2('0x48')](handleError(_0xec728d,null));};exports[_0x8da2('0x49')]=function(_0x1b0ac0,_0x53c66c){return db[_0x8da2('0x2e')]['create'](_0x1b0ac0[_0x8da2('0x4a')],{})[_0x8da2('0x27')](respondWithResult(_0x53c66c,0xc9))['catch'](handleError(_0x53c66c,null));};exports[_0x8da2('0x25')]=function(_0x51cefe,_0xa1c8b1){if(_0x51cefe[_0x8da2('0x4a')]['id']){delete _0x51cefe['body']['id'];}return db[_0x8da2('0x2e')][_0x8da2('0x47')]({'where':{'id':_0x51cefe[_0x8da2('0x4b')]['id']}})[_0x8da2('0x27')](handleEntityNotFound(_0xa1c8b1,null))[_0x8da2('0x27')](saveUpdates(_0x51cefe[_0x8da2('0x4a')],null))[_0x8da2('0x27')](respondWithResult(_0xa1c8b1,null))[_0x8da2('0x48')](handleError(_0xa1c8b1,null));};exports['destroy']=function(_0x1269a8,_0x4bf04e){return db[_0x8da2('0x2e')][_0x8da2('0x47')]({'where':{'id':_0x1269a8[_0x8da2('0x4b')]['id']}})[_0x8da2('0x27')](handleEntityNotFound(_0x4bf04e,null))[_0x8da2('0x27')](removeEntity(_0x4bf04e,null))['catch'](handleError(_0x4bf04e,null));};exports['describe']=function(_0x28f7b7,_0x4c0e3e){return db[_0x8da2('0x2e')][_0x8da2('0x4c')]()[_0x8da2('0x27')](respondWithResult(_0x4c0e3e,null))['catch'](handleError(_0x4c0e3e,null));};
\ No newline at end of file
+var _0xe37a=['lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','destroy','then','sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','options','count','includeAll','include','findAll','show','params','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','ejs','fs-extra'];(function(_0x110f4b,_0x1f5cf6){var _0x28b50c=function(_0x4df190){while(--_0x4df190){_0x110f4b['push'](_0x110f4b['shift']());}};_0x28b50c(++_0x1f5cf6);}(_0xe37a,0x1b8));var _0xae37=function(_0x221eb4,_0x5c157e){_0x221eb4=_0x221eb4-0x0;var _0x5041ff=_0xe37a[_0x221eb4];return _0x5041ff;};'use strict';var emlformat=require(_0xae37('0x0'));var rimraf=require(_0xae37('0x1'));var zipdir=require(_0xae37('0x2'));var jsonpatch=require(_0xae37('0x3'));var rp=require('request-promise');var moment=require(_0xae37('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xae37('0x5'));var util=require(_0xae37('0x6'));var path=require('path');var sox=require(_0xae37('0x7'));var csv=require('to-csv');var ejs=require(_0xae37('0x8'));var fs=require('fs');var fs_extra=require(_0xae37('0x9'));var _=require(_0xae37('0xa'));var squel=require(_0xae37('0xb'));var crypto=require('crypto');var jsforce=require(_0xae37('0xc'));var deskjs=require(_0xae37('0xd'));var toCsv=require('to-csv');var querystring=require(_0xae37('0xe'));var Papa=require(_0xae37('0xf'));var Redis=require(_0xae37('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xae37('0x11'));var logger=require(_0xae37('0x12'))(_0xae37('0x13'));var utils=require('../../config/utils');var config=require(_0xae37('0x14'));var licenseUtil=require(_0xae37('0x15'));var db=require(_0xae37('0x16'))['db'];function respondWithStatusCode(_0x53ff24,_0x4c8b7c){_0x4c8b7c=_0x4c8b7c||0xcc;return function(_0x46f1b2){if(_0x46f1b2){return _0x53ff24['sendStatus'](_0x4c8b7c);}return _0x53ff24[_0xae37('0x17')](_0x4c8b7c)[_0xae37('0x18')]();};}function respondWithResult(_0x277191,_0x25fc6d){_0x25fc6d=_0x25fc6d||0xc8;return function(_0x367fe9){if(_0x367fe9){return _0x277191['status'](_0x25fc6d)[_0xae37('0x19')](_0x367fe9);}};}function respondWithFilteredResult(_0x52748a,_0xaa2013){return function(_0x4adbc5){if(_0x4adbc5){var _0x2e17e2=typeof _0xaa2013[_0xae37('0x1a')]===_0xae37('0x1b')&&typeof _0xaa2013['limit']===_0xae37('0x1b');var _0x1dd312=_0x4adbc5['count'];var _0x223ff7=_0x2e17e2?0x0:_0xaa2013[_0xae37('0x1a')];var _0xdd3078=_0x2e17e2?_0x4adbc5['count']:_0xaa2013[_0xae37('0x1a')]+_0xaa2013[_0xae37('0x1c')];var _0x376a30;if(_0xdd3078>=_0x1dd312){_0xdd3078=_0x1dd312;_0x376a30=0xc8;}else{_0x376a30=0xce;}_0x52748a[_0xae37('0x17')](_0x376a30);return _0x52748a[_0xae37('0x1d')](_0xae37('0x1e'),_0x223ff7+'-'+_0xdd3078+'/'+_0x1dd312)[_0xae37('0x19')](_0x4adbc5);}return null;};}function patchUpdates(_0x13dc6f){return function(_0x3591ef){try{jsonpatch[_0xae37('0x1f')](_0x3591ef,_0x13dc6f,!![]);}catch(_0x2dad05){return BPromise[_0xae37('0x20')](_0x2dad05);}return _0x3591ef[_0xae37('0x21')]();};}function saveUpdates(_0x2cacd0,_0x4dc010){return function(_0x53dd80){if(_0x53dd80){return _0x53dd80['update'](_0x2cacd0)['then'](function(_0x57f1e1){return _0x57f1e1;});}return null;};}function removeEntity(_0x2f6871,_0x1272e4){return function(_0x315532){if(_0x315532){return _0x315532[_0xae37('0x22')]()[_0xae37('0x23')](function(){_0x2f6871[_0xae37('0x17')](0xcc)[_0xae37('0x18')]();});}};}function handleEntityNotFound(_0x257999,_0x471d42){return function(_0x2db533){if(!_0x2db533){_0x257999[_0xae37('0x24')](0x194);}return _0x2db533;};}function handleError(_0x2c9392,_0x453f45){_0x453f45=_0x453f45||0x1f4;return function(_0x21ef10){logger[_0xae37('0x25')](_0x21ef10[_0xae37('0x26')]);if(_0x21ef10['name']){delete _0x21ef10[_0xae37('0x27')];}_0x2c9392[_0xae37('0x17')](_0x453f45)[_0xae37('0x28')](_0x21ef10);};}exports[_0xae37('0x29')]=function(_0x15f110,_0x4095f8){var _0x3b9652={},_0x1e35dc={},_0x2cab92={'count':0x0,'rows':[]};var _0x5e2584=_[_0xae37('0x2a')](db[_0xae37('0x2b')][_0xae37('0x2c')],function(_0x19b8fb){return{'name':_0x19b8fb[_0xae37('0x2d')],'type':_0x19b8fb['type'][_0xae37('0x2e')]};});_0x1e35dc[_0xae37('0x2f')]=_[_0xae37('0x2a')](_0x5e2584,_0xae37('0x27'));_0x1e35dc[_0xae37('0x30')]=_[_0xae37('0x31')](_0x15f110['query']);_0x1e35dc[_0xae37('0x32')]=_[_0xae37('0x33')](_0x1e35dc[_0xae37('0x2f')],_0x1e35dc[_0xae37('0x30')]);_0x3b9652[_0xae37('0x34')]=_[_0xae37('0x33')](_0x1e35dc[_0xae37('0x2f')],qs['fields'](_0x15f110[_0xae37('0x30')][_0xae37('0x35')]));_0x3b9652['attributes']=_0x3b9652[_0xae37('0x34')][_0xae37('0x36')]?_0x3b9652[_0xae37('0x34')]:_0x1e35dc[_0xae37('0x2f')];if(!_0x15f110[_0xae37('0x30')]['hasOwnProperty'](_0xae37('0x37'))){_0x3b9652['limit']=qs[_0xae37('0x1c')](_0x15f110['query']['limit']);_0x3b9652['offset']=qs['offset'](_0x15f110['query'][_0xae37('0x1a')]);}_0x3b9652[_0xae37('0x38')]=qs[_0xae37('0x39')](_0x15f110[_0xae37('0x30')][_0xae37('0x39')]);_0x3b9652[_0xae37('0x3a')]=qs[_0xae37('0x32')](_[_0xae37('0x3b')](_0x15f110[_0xae37('0x30')],_0x1e35dc[_0xae37('0x32')]),_0x5e2584);if(_0x15f110[_0xae37('0x30')][_0xae37('0x3c')]){_0x3b9652['where']=_[_0xae37('0x3d')](_0x3b9652[_0xae37('0x3a')],{'$or':_[_0xae37('0x2a')](_0x5e2584,function(_0x2193e4){if(_0x2193e4[_0xae37('0x3e')]!=='VIRTUAL'){var _0x5d4ea6={};_0x5d4ea6[_0x2193e4[_0xae37('0x27')]]={'$like':'%'+_0x15f110['query'][_0xae37('0x3c')]+'%'};return _0x5d4ea6;}})});}_0x3b9652=_[_0xae37('0x3d')]({},_0x3b9652,_0x15f110[_0xae37('0x3f')]);var _0xc4372={'where':_0x3b9652[_0xae37('0x3a')]};return db[_0xae37('0x2b')][_0xae37('0x40')](_0xc4372)[_0xae37('0x23')](function(_0x55278f){_0x2cab92[_0xae37('0x40')]=_0x55278f;if(_0x15f110['query'][_0xae37('0x41')]){_0x3b9652[_0xae37('0x42')]=[{'all':!![]}];}return db['SmsTransferReport'][_0xae37('0x43')](_0x3b9652);})[_0xae37('0x23')](function(_0x4e8a7e){_0x2cab92['rows']=_0x4e8a7e;return _0x2cab92;})['then'](respondWithFilteredResult(_0x4095f8,_0x3b9652))['catch'](handleError(_0x4095f8,null));};exports[_0xae37('0x44')]=function(_0x57f71e,_0x4ac16d){var _0x1ef1eb={'raw':!![],'where':{'id':_0x57f71e[_0xae37('0x45')]['id']}},_0x1d7ffc={};_0x1d7ffc[_0xae37('0x2f')]=_['keys'](db[_0xae37('0x2b')]['rawAttributes']);_0x1d7ffc[_0xae37('0x30')]=_[_0xae37('0x31')](_0x57f71e[_0xae37('0x30')]);_0x1d7ffc['filters']=_['intersection'](_0x1d7ffc[_0xae37('0x2f')],_0x1d7ffc['query']);_0x1ef1eb[_0xae37('0x34')]=_[_0xae37('0x33')](_0x1d7ffc[_0xae37('0x2f')],qs['fields'](_0x57f71e[_0xae37('0x30')]['fields']));_0x1ef1eb[_0xae37('0x34')]=_0x1ef1eb[_0xae37('0x34')][_0xae37('0x36')]?_0x1ef1eb[_0xae37('0x34')]:_0x1d7ffc[_0xae37('0x2f')];if(_0x57f71e[_0xae37('0x30')][_0xae37('0x41')]){_0x1ef1eb['include']=[{'all':!![]}];}_0x1ef1eb=_[_0xae37('0x3d')]({},_0x1ef1eb,_0x57f71e[_0xae37('0x3f')]);return db['SmsTransferReport'][_0xae37('0x46')](_0x1ef1eb)['then'](handleEntityNotFound(_0x4ac16d,null))[_0xae37('0x23')](respondWithResult(_0x4ac16d,null))[_0xae37('0x47')](handleError(_0x4ac16d,null));};exports[_0xae37('0x48')]=function(_0x12c232,_0x1444f8){return db[_0xae37('0x2b')][_0xae37('0x48')](_0x12c232[_0xae37('0x49')],{})[_0xae37('0x23')](respondWithResult(_0x1444f8,0xc9))[_0xae37('0x47')](handleError(_0x1444f8,null));};exports['update']=function(_0x3bb144,_0x4d7559){if(_0x3bb144['body']['id']){delete _0x3bb144[_0xae37('0x49')]['id'];}return db[_0xae37('0x2b')][_0xae37('0x46')]({'where':{'id':_0x3bb144[_0xae37('0x45')]['id']}})[_0xae37('0x23')](handleEntityNotFound(_0x4d7559,null))['then'](saveUpdates(_0x3bb144[_0xae37('0x49')],null))[_0xae37('0x23')](respondWithResult(_0x4d7559,null))['catch'](handleError(_0x4d7559,null));};exports[_0xae37('0x22')]=function(_0x561cc6,_0x5b2acd){return db[_0xae37('0x2b')][_0xae37('0x46')]({'where':{'id':_0x561cc6['params']['id']}})[_0xae37('0x23')](handleEntityNotFound(_0x5b2acd,null))[_0xae37('0x23')](removeEntity(_0x5b2acd,null))[_0xae37('0x47')](handleError(_0x5b2acd,null));};exports[_0xae37('0x4a')]=function(_0xa5d1dd,_0x4d5510){return db[_0xae37('0x2b')]['describe']()['then'](respondWithResult(_0x4d5510,null))[_0xae37('0x47')](handleError(_0x4d5510,null));};
\ No newline at end of file
index f867fb5..c99ad83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeac6=['bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x19b0eb,_0x21518f){var _0x1b50eb=function(_0x382fc3){while(--_0x382fc3){_0x19b0eb['push'](_0x19b0eb['shift']());}};_0x1b50eb(++_0x21518f);}(_0xeac6,0xc0));var _0x6eac=function(_0x1f1446,_0x8a5def){_0x1f1446=_0x1f1446-0x0;var _0x4cd62b=_0xeac6[_0x1f1446];return _0x4cd62b;};'use strict';var _=require(_0x6eac('0x0'));var util=require(_0x6eac('0x1'));var logger=require(_0x6eac('0x2'))('api');var moment=require(_0x6eac('0x3'));var BPromise=require(_0x6eac('0x4'));var rp=require(_0x6eac('0x5'));var fs=require('fs');var path=require(_0x6eac('0x6'));var rimraf=require(_0x6eac('0x7'));var config=require(_0x6eac('0x8'));var attributes=require(_0x6eac('0x9'));module[_0x6eac('0xa')]=function(_0xebef33,_0x429b19){return _0xebef33[_0x6eac('0xb')](_0x6eac('0xc'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x6eac('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x170f=['exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment','path','./smsTransferReport.attributes'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x170f,0x65));var _0xf170=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0x170f[_0x2afbb0];return _0x411ff2;};'use strict';var _=require(_0xf170('0x0'));var util=require(_0xf170('0x1'));var logger=require(_0xf170('0x2'))(_0xf170('0x3'));var moment=require(_0xf170('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf170('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf170('0x6'));module[_0xf170('0x7')]=function(_0xa54cc,_0x356b1c){return _0xa54cc[_0xf170('0x8')](_0xf170('0x9'),attributes,{'tableName':_0xf170('0xa'),'paranoid':![],'indexes':[{'name':_0xf170('0xb'),'fields':[_0xf170('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index fcc55ae..64be789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9649=['bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsTransferReport,\x20%s,\x20%s','message','catch','lodash','util','moment'];(function(_0x3a71b4,_0x3b49cc){var _0x566b92=function(_0x47e757){while(--_0x47e757){_0x3a71b4['push'](_0x3a71b4['shift']());}};_0x566b92(++_0x3b49cc);}(_0x9649,0x19f));var _0x9964=function(_0x21e044,_0x2fa206){_0x21e044=_0x21e044-0x0;var _0x3c03f4=_0x9649[_0x21e044];return _0x3c03f4;};'use strict';var _=require(_0x9964('0x0'));var util=require(_0x9964('0x1'));var moment=require(_0x9964('0x2'));var BPromise=require(_0x9964('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9964('0x4'));var db=require(_0x9964('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9964('0x6'))('rpc');var config=require(_0x9964('0x7'));var jayson=require(_0x9964('0x8'));var client=jayson[_0x9964('0x9')][_0x9964('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40c60b,_0x1338e7,_0x3fa639){return new BPromise(function(_0x4bec88,_0x45dda7){return client[_0x9964('0xb')](_0x40c60b,_0x3fa639)['then'](function(_0x10b88b){logger[_0x9964('0xc')]('SmsTransferReport,\x20%s,\x20%s',_0x1338e7,'request\x20sent');logger[_0x9964('0xd')](_0x9964('0xe'),_0x1338e7,_0x9964('0xf'),JSON[_0x9964('0x10')](_0x10b88b));if(_0x10b88b[_0x9964('0x11')]){if(_0x10b88b['error'][_0x9964('0x12')]===0x1f4){logger['error'](_0x9964('0x13'),_0x1338e7,_0x10b88b[_0x9964('0x11')]['message']);return _0x45dda7(_0x10b88b[_0x9964('0x11')][_0x9964('0x14')]);}logger['error'](_0x9964('0x13'),_0x1338e7,_0x10b88b[_0x9964('0x11')][_0x9964('0x14')]);return _0x4bec88(_0x10b88b[_0x9964('0x11')][_0x9964('0x14')]);}else{logger['info'](_0x9964('0x13'),_0x1338e7,_0x9964('0xf'));_0x4bec88(_0x10b88b['result'][_0x9964('0x14')]);}})[_0x9964('0x15')](function(_0x57fe55){logger[_0x9964('0x11')](_0x9964('0x13'),_0x1338e7,_0x57fe55);_0x45dda7(_0x57fe55);});});}
\ No newline at end of file
+var _0xa74a=['code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','info','SmsTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x9ba214,_0x17aa34){var _0x378a3e=function(_0x5ae510){while(--_0x5ae510){_0x9ba214['push'](_0x9ba214['shift']());}};_0x378a3e(++_0x17aa34);}(_0xa74a,0x66));var _0xaa74=function(_0x3d5777,_0x3b4f88){_0x3d5777=_0x3d5777-0x0;var _0x179d0f=_0xa74a[_0x3d5777];return _0x179d0f;};'use strict';var _=require(_0xaa74('0x0'));var util=require(_0xaa74('0x1'));var moment=require(_0xaa74('0x2'));var BPromise=require(_0xaa74('0x3'));var rs=require(_0xaa74('0x4'));var fs=require('fs');var Redis=require(_0xaa74('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xaa74('0x6'));var logger=require(_0xaa74('0x7'))(_0xaa74('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaa74('0x9')][_0xaa74('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44002b,_0x3aca05,_0x10e7ce){return new BPromise(function(_0x5a3684,_0x197336){return client['request'](_0x44002b,_0x10e7ce)[_0xaa74('0xb')](function(_0x502005){logger[_0xaa74('0xc')](_0xaa74('0xd'),_0x3aca05,'request\x20sent');logger[_0xaa74('0xe')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x3aca05,_0xaa74('0xf'),JSON[_0xaa74('0x10')](_0x502005));if(_0x502005['error']){if(_0x502005[_0xaa74('0x11')][_0xaa74('0x12')]===0x1f4){logger[_0xaa74('0x11')](_0xaa74('0xd'),_0x3aca05,_0x502005[_0xaa74('0x11')][_0xaa74('0x13')]);return _0x197336(_0x502005[_0xaa74('0x11')][_0xaa74('0x13')]);}logger[_0xaa74('0x11')](_0xaa74('0xd'),_0x3aca05,_0x502005[_0xaa74('0x11')]['message']);return _0x5a3684(_0x502005[_0xaa74('0x11')][_0xaa74('0x13')]);}else{logger['info'](_0xaa74('0xd'),_0x3aca05,'request\x20sent');_0x5a3684(_0x502005['result']['message']);}})['catch'](function(_0xbe83ac){logger[_0xaa74('0x11')](_0xaa74('0xd'),_0x3aca05,_0xbe83ac);_0x197336(_0xbe83ac);});});}
\ No newline at end of file
index d4dcc8e..88c2fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb76d=['diskStorage','join','root','server/files/sounds/original/','originalname','replace','basename','extname','now','post','single','create','put','delete','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/download','download'];(function(_0x237546,_0xa81b26){var _0x233e29=function(_0x728aa4){while(--_0x728aa4){_0x237546['push'](_0x237546['shift']());}};_0x233e29(++_0xa81b26);}(_0xb76d,0x126));var _0xdb76=function(_0x170fcf,_0x3fb1f9){_0x170fcf=_0x170fcf-0x0;var _0x25ebae=_0xb76d[_0x170fcf];return _0x25ebae;};'use strict';var multer=require(_0xdb76('0x0'));var util=require('util');var path=require(_0xdb76('0x1'));var timeout=require('connect-timeout');var express=require(_0xdb76('0x2'));var router=express[_0xdb76('0x3')]();var fs_extra=require(_0xdb76('0x4'));var auth=require(_0xdb76('0x5'));var interaction=require(_0xdb76('0x6'));var config=require(_0xdb76('0x7'));var controller=require('./sound.controller');router[_0xdb76('0x8')]('/',auth[_0xdb76('0x9')](),controller[_0xdb76('0xa')]);router[_0xdb76('0x8')](_0xdb76('0xb'),auth[_0xdb76('0x9')](),controller['show']);router[_0xdb76('0x8')](_0xdb76('0xc'),auth[_0xdb76('0x9')](),controller[_0xdb76('0xd')]);var upload=multer({'storage':multer[_0xdb76('0xe')]({'destination':function(_0x41e853,_0x49e93c,_0xbf21db){_0xbf21db(null,path[_0xdb76('0xf')](config[_0xdb76('0x10')],_0xdb76('0x11')));},'filename':function(_0x1d474f,_0x3d2dcd,_0x589474){_0x3d2dcd[_0xdb76('0x12')]=_0x3d2dcd[_0xdb76('0x12')][_0xdb76('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x589474(null,util['format']('%s-%s%s',path[_0xdb76('0x14')](_0x3d2dcd[_0xdb76('0x12')],path[_0xdb76('0x15')](_0x3d2dcd[_0xdb76('0x12')])),Date[_0xdb76('0x16')](),path[_0xdb76('0x15')](_0x3d2dcd[_0xdb76('0x12')])));}})});router[_0xdb76('0x17')]('/',upload[_0xdb76('0x18')]('file'),controller[_0xdb76('0x19')]);router[_0xdb76('0x1a')]('/:id',auth[_0xdb76('0x9')](),controller['update']);router[_0xdb76('0x1b')](_0xdb76('0xb'),auth[_0xdb76('0x9')](),controller[_0xdb76('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x905c=['create','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','join','root','originalname','replace','format','%s-%s%s','extname','now','post','file'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x905c,0x1e4));var _0xc905=function(_0x586029,_0x3466ab){_0x586029=_0x586029-0x0;var _0x524f15=_0x905c[_0x586029];return _0x524f15;};'use strict';var multer=require(_0xc905('0x0'));var util=require(_0xc905('0x1'));var path=require(_0xc905('0x2'));var timeout=require(_0xc905('0x3'));var express=require(_0xc905('0x4'));var router=express[_0xc905('0x5')]();var fs_extra=require(_0xc905('0x6'));var auth=require(_0xc905('0x7'));var interaction=require(_0xc905('0x8'));var config=require(_0xc905('0x9'));var controller=require(_0xc905('0xa'));router[_0xc905('0xb')]('/',auth['isAuthenticated'](),controller[_0xc905('0xc')]);router[_0xc905('0xb')](_0xc905('0xd'),auth[_0xc905('0xe')](),controller[_0xc905('0xf')]);router['get'](_0xc905('0x10'),auth['isAuthenticated'](),controller[_0xc905('0x11')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x125302,_0x5a2e09,_0x44b17f){_0x44b17f(null,path[_0xc905('0x12')](config[_0xc905('0x13')],'server/files/sounds/original/'));},'filename':function(_0x3a752a,_0x36f511,_0x192097){_0x36f511['originalname']=_0x36f511[_0xc905('0x14')][_0xc905('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x192097(null,util[_0xc905('0x16')](_0xc905('0x17'),path['basename'](_0x36f511[_0xc905('0x14')],path[_0xc905('0x18')](_0x36f511[_0xc905('0x14')])),Date[_0xc905('0x19')](),path[_0xc905('0x18')](_0x36f511[_0xc905('0x14')])));}})});router[_0xc905('0x1a')]('/',upload['single'](_0xc905('0x1b')),controller[_0xc905('0x1c')]);router['put'](_0xc905('0xd'),auth[_0xc905('0xe')](),controller[_0xc905('0x1d')]);router[_0xc905('0x1e')](_0xc905('0xd'),auth[_0xc905('0xe')](),controller[_0xc905('0x1e')]);module[_0xc905('0x1f')]=router;
\ No newline at end of file
index d8d9e9f..c348f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ce=['BIGINT','exports','name','STRING','FLOAT'];(function(_0x252884,_0x117ddf){var _0x4de0e6=function(_0x442519){while(--_0x442519){_0x252884['push'](_0x252884['shift']());}};_0x4de0e6(++_0x117ddf);}(_0xd2ce,0x13c));var _0xed2c=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xd2ce[_0x484e36];return _0xafc85d;};'use strict';var Sequelize=require('sequelize');module[_0xed2c('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xed2c('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0xed2c('0x2')]},'display_name':{'type':Sequelize[_0xed2c('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xed2c('0x2')]},'original_format':{'type':Sequelize[_0xed2c('0x2')]},'original_duration':{'type':Sequelize[_0xed2c('0x3')]},'original_sampleCount':{'type':Sequelize[_0xed2c('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xed2c('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0xed2c('0x2')]},'converted_duration':{'type':Sequelize[_0xed2c('0x3')]},'converted_sampleCount':{'type':Sequelize[_0xed2c('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xed2c('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xcf43=['sequelize','exports','name','STRING','INTEGER','BIGINT','FLOAT'];(function(_0x24ee42,_0x315b49){var _0x5ce9e8=function(_0x85e6ef){while(--_0x85e6ef){_0x24ee42['push'](_0x24ee42['shift']());}};_0x5ce9e8(++_0x315b49);}(_0xcf43,0xcb));var _0x3cf4=function(_0x4c061c,_0x3f4651){_0x4c061c=_0x4c061c-0x0;var _0x442797=_0xcf43[_0x4c061c];return _0x442797;};'use strict';var Sequelize=require(_0x3cf4('0x0'));module[_0x3cf4('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3cf4('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x3cf4('0x3')]},'display_name':{'type':Sequelize[_0x3cf4('0x3')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x3cf4('0x3')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x3cf4('0x4')]},'original_bitRate':{'type':Sequelize[_0x3cf4('0x5')]},'original_sampleRate':{'type':Sequelize[_0x3cf4('0x4')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x3cf4('0x6')]},'converted_sampleCount':{'type':Sequelize[_0x3cf4('0x5')]},'converted_channelCount':{'type':Sequelize[_0x3cf4('0x4')]},'converted_bitRate':{'type':Sequelize[_0x3cf4('0x5')]},'converted_sampleRate':{'type':Sequelize[_0x3cf4('0x4')]}};
\ No newline at end of file
index cafd14b..14f5bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e14=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','Sounds','UserProfileResource','error','stack','name','send','index','Sound','rawAttributes','type','key','map','query','keys','attributes','intersection','model','fields','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','catch','download','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','format','%s.%s','create','file','originalname','extname','basename','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','chmodSync','0777','transcode','src','original_duration','duration','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse'];(function(_0x4b8f3c,_0x4392ee){var _0x2ad695=function(_0x4bc782){while(--_0x4bc782){_0x4b8f3c['push'](_0x4b8f3c['shift']());}};_0x2ad695(++_0x4392ee);}(_0x0e14,0x16b));var _0x40e1=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x0e14[_0x4c7fb5];return _0x2e10ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x40e1('0x0'));var zipdir=require(_0x40e1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x40e1('0x2'));var moment=require(_0x40e1('0x3'));var BPromise=require(_0x40e1('0x4'));var Mustache=require('mustache');var util=require(_0x40e1('0x5'));var path=require('path');var sox=require(_0x40e1('0x6'));var csv=require(_0x40e1('0x7'));var ejs=require(_0x40e1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x40e1('0x9'));var squel=require(_0x40e1('0xa'));var crypto=require(_0x40e1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x40e1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x40e1('0xd'));var Papa=require(_0x40e1('0xe'));var Redis=require(_0x40e1('0xf'));var authService=require(_0x40e1('0x10'));var qs=require(_0x40e1('0x11'));var as=require(_0x40e1('0x12'));var hardwareService=require(_0x40e1('0x13'));var logger=require('../../config/logger')(_0x40e1('0x14'));var utils=require(_0x40e1('0x15'));var config=require(_0x40e1('0x16'));var licenseUtil=require(_0x40e1('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23d1bb,_0x47ae90){_0x47ae90=_0x47ae90||0xcc;return function(_0xdac011){if(_0xdac011){return _0x23d1bb[_0x40e1('0x18')](_0x47ae90);}return _0x23d1bb[_0x40e1('0x19')](_0x47ae90)[_0x40e1('0x1a')]();};}function respondWithResult(_0x298a02,_0x59dd52){_0x59dd52=_0x59dd52||0xc8;return function(_0x1c8e2b){if(_0x1c8e2b){return _0x298a02[_0x40e1('0x19')](_0x59dd52)[_0x40e1('0x1b')](_0x1c8e2b);}};}function respondWithFilteredResult(_0x39ad39,_0x12c5c8){return function(_0x359256){if(_0x359256){var _0x561680=typeof _0x12c5c8[_0x40e1('0x1c')]===_0x40e1('0x1d')&&typeof _0x12c5c8[_0x40e1('0x1e')]===_0x40e1('0x1d');var _0x265518=_0x359256[_0x40e1('0x1f')];var _0x4ebf2f=_0x561680?0x0:_0x12c5c8[_0x40e1('0x1c')];var _0x32196d=_0x561680?_0x359256[_0x40e1('0x1f')]:_0x12c5c8[_0x40e1('0x1c')]+_0x12c5c8[_0x40e1('0x1e')];var _0x40fd39;if(_0x32196d>=_0x265518){_0x32196d=_0x265518;_0x40fd39=0xc8;}else{_0x40fd39=0xce;}_0x39ad39[_0x40e1('0x19')](_0x40fd39);return _0x39ad39[_0x40e1('0x20')](_0x40e1('0x21'),_0x4ebf2f+'-'+_0x32196d+'/'+_0x265518)[_0x40e1('0x1b')](_0x359256);}return null;};}function patchUpdates(_0x4d7df5){return function(_0x3b8423){try{jsonpatch[_0x40e1('0x22')](_0x3b8423,_0x4d7df5,!![]);}catch(_0x3112ab){return BPromise['reject'](_0x3112ab);}return _0x3b8423[_0x40e1('0x23')]();};}function saveUpdates(_0x54a0a6,_0x181b47){return function(_0x2f1ac2){if(_0x2f1ac2){return _0x2f1ac2[_0x40e1('0x24')](_0x54a0a6)[_0x40e1('0x25')](function(_0x590c4d){return _0x590c4d;});}return null;};}function removeEntity(_0x2eed34,_0x569ba2){return function(_0x24c62a){if(_0x24c62a){return _0x24c62a[_0x40e1('0x26')]()[_0x40e1('0x25')](function(){var _0xcf05=_0x24c62a['get']({'plain':!![]});var _0x46b80c=_0x40e1('0x27');return db[_0x40e1('0x28')][_0x40e1('0x26')]({'where':{'type':_0x46b80c,'resourceId':_0xcf05['id']}})[_0x40e1('0x25')](function(){return _0x24c62a;});})[_0x40e1('0x25')](function(){_0x2eed34[_0x40e1('0x19')](0xcc)[_0x40e1('0x1a')]();});}};}function handleEntityNotFound(_0x3277e,_0x6607da){return function(_0x19b76b){if(!_0x19b76b){_0x3277e['sendStatus'](0x194);}return _0x19b76b;};}function handleError(_0x5e5444,_0x60dc00){_0x60dc00=_0x60dc00||0x1f4;return function(_0x15327f){logger[_0x40e1('0x29')](_0x15327f[_0x40e1('0x2a')]);if(_0x15327f[_0x40e1('0x2b')]){delete _0x15327f[_0x40e1('0x2b')];}_0x5e5444[_0x40e1('0x19')](_0x60dc00)[_0x40e1('0x2c')](_0x15327f);};}exports[_0x40e1('0x2d')]=function(_0x58af58,_0x1ac26b){var _0x20fb4a={},_0x590796={},_0x518bff={'count':0x0,'rows':[]};var _0x56d4a7=_['map'](db[_0x40e1('0x2e')][_0x40e1('0x2f')],function(_0x4e6b05){return{'name':_0x4e6b05['fieldName'],'type':_0x4e6b05[_0x40e1('0x30')][_0x40e1('0x31')]};});_0x590796['model']=_[_0x40e1('0x32')](_0x56d4a7,_0x40e1('0x2b'));_0x590796[_0x40e1('0x33')]=_[_0x40e1('0x34')](_0x58af58['query']);_0x590796['filters']=_['intersection'](_0x590796['model'],_0x590796[_0x40e1('0x33')]);_0x20fb4a[_0x40e1('0x35')]=_[_0x40e1('0x36')](_0x590796[_0x40e1('0x37')],qs[_0x40e1('0x38')](_0x58af58[_0x40e1('0x33')][_0x40e1('0x38')]));_0x20fb4a['attributes']=_0x20fb4a[_0x40e1('0x35')]['length']?_0x20fb4a[_0x40e1('0x35')]:_0x590796[_0x40e1('0x37')];if(!_0x58af58['query'][_0x40e1('0x39')]('nolimit')){_0x20fb4a[_0x40e1('0x1e')]=qs[_0x40e1('0x1e')](_0x58af58[_0x40e1('0x33')]['limit']);_0x20fb4a['offset']=qs[_0x40e1('0x1c')](_0x58af58[_0x40e1('0x33')]['offset']);}_0x20fb4a[_0x40e1('0x3a')]=qs[_0x40e1('0x3b')](_0x58af58[_0x40e1('0x33')]['sort']);_0x20fb4a[_0x40e1('0x3c')]=qs['filters'](_[_0x40e1('0x3d')](_0x58af58[_0x40e1('0x33')],_0x590796[_0x40e1('0x3e')]),_0x56d4a7);if(_0x58af58[_0x40e1('0x33')][_0x40e1('0x3f')]){_0x20fb4a[_0x40e1('0x3c')]=_[_0x40e1('0x40')](_0x20fb4a[_0x40e1('0x3c')],{'$or':_[_0x40e1('0x32')](_0x56d4a7,function(_0x233a31){if(_0x233a31[_0x40e1('0x30')]!==_0x40e1('0x41')){var _0xf40019={};_0xf40019[_0x233a31[_0x40e1('0x2b')]]={'$like':'%'+_0x58af58[_0x40e1('0x33')]['filter']+'%'};return _0xf40019;}})});}_0x20fb4a=_[_0x40e1('0x40')]({},_0x20fb4a,_0x58af58[_0x40e1('0x42')]);var _0x4e2abd={'where':_0x20fb4a[_0x40e1('0x3c')]};return db[_0x40e1('0x2e')][_0x40e1('0x1f')](_0x4e2abd)[_0x40e1('0x25')](function(_0x55a4ed){_0x518bff[_0x40e1('0x1f')]=_0x55a4ed;if(_0x58af58[_0x40e1('0x33')][_0x40e1('0x43')]){_0x20fb4a[_0x40e1('0x44')]=[{'all':!![]}];}return db['Sound'][_0x40e1('0x45')](_0x20fb4a);})['then'](function(_0x17458b){_0x518bff[_0x40e1('0x46')]=_0x17458b;return _0x518bff;})[_0x40e1('0x25')](respondWithFilteredResult(_0x1ac26b,_0x20fb4a))['catch'](handleError(_0x1ac26b,null));};exports[_0x40e1('0x47')]=function(_0xd59fbb,_0x5a762d){var _0xdaacbe={'raw':!![],'where':{'id':_0xd59fbb[_0x40e1('0x48')]['id']}},_0x2849a9={};_0x2849a9['model']=_[_0x40e1('0x34')](db['Sound'][_0x40e1('0x2f')]);_0x2849a9['query']=_['keys'](_0xd59fbb[_0x40e1('0x33')]);_0x2849a9[_0x40e1('0x3e')]=_[_0x40e1('0x36')](_0x2849a9['model'],_0x2849a9[_0x40e1('0x33')]);_0xdaacbe['attributes']=_[_0x40e1('0x36')](_0x2849a9[_0x40e1('0x37')],qs[_0x40e1('0x38')](_0xd59fbb['query'][_0x40e1('0x38')]));_0xdaacbe[_0x40e1('0x35')]=_0xdaacbe[_0x40e1('0x35')][_0x40e1('0x49')]?_0xdaacbe[_0x40e1('0x35')]:_0x2849a9[_0x40e1('0x37')];if(_0xd59fbb['query']['includeAll']){_0xdaacbe[_0x40e1('0x44')]=[{'all':!![]}];}_0xdaacbe=_[_0x40e1('0x40')]({},_0xdaacbe,_0xd59fbb[_0x40e1('0x42')]);return db[_0x40e1('0x2e')][_0x40e1('0x4a')](_0xdaacbe)[_0x40e1('0x25')](handleEntityNotFound(_0x5a762d,null))[_0x40e1('0x25')](respondWithResult(_0x5a762d,null))[_0x40e1('0x4b')](handleError(_0x5a762d,null));};exports[_0x40e1('0x4c')]=function(_0x3f4549,_0x5434cd,_0x570211){return db[_0x40e1('0x2e')]['find']({'where':{'id':_0x3f4549[_0x40e1('0x48')]['id']},'attributes':['name',_0x40e1('0x4d'),_0x40e1('0x4e')],'raw':!![]})[_0x40e1('0x25')](handleEntityNotFound(_0x5434cd,null))[_0x40e1('0x25')](function(_0x7869e8){if(_0x7869e8){if(!fs['existsSync'](path[_0x40e1('0x4f')](config[_0x40e1('0x50')],_0x40e1('0x51'),_0x7869e8['save_name']+'.'+_0x7869e8['converted_format']))){throw new db['Sequelize'][(_0x40e1('0x52'))]('Sound\x20not\x20found');}return _0x5434cd['download'](path[_0x40e1('0x4f')](config[_0x40e1('0x50')],_0x40e1('0x51'),util[_0x40e1('0x53')](_0x40e1('0x54'),_0x7869e8[_0x40e1('0x4d')],_0x7869e8['converted_format'])),util[_0x40e1('0x53')](_0x40e1('0x54'),_0x7869e8[_0x40e1('0x2b')],_0x7869e8[_0x40e1('0x4e')]));}return null;})['catch'](handleError(_0x5434cd,null));};exports[_0x40e1('0x55')]=function(_0x25ae9c,_0x4b1dbf,_0x1394c2){var _0x38450f={'name':path['basename'](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x57')],path[_0x40e1('0x58')](_0x25ae9c[_0x40e1('0x56')]['originalname'])),'save_name':path[_0x40e1('0x59')](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x5a')],path[_0x40e1('0x58')](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x5a')])),'original_format':path[_0x40e1('0x58')](_0x25ae9c['file'][_0x40e1('0x57')])[_0x40e1('0x5b')](0x1),'converted_format':_0x40e1('0x5c')};var _0x29b201=path[_0x40e1('0x4f')](config[_0x40e1('0x50')],_0x40e1('0x5d'),_0x25ae9c[_0x40e1('0x56')]['filename']);var _0xb1981c=path[_0x40e1('0x4f')](config['root'],_0x40e1('0x51'),util[_0x40e1('0x53')](_0x40e1('0x54'),path[_0x40e1('0x59')](_0x25ae9c[_0x40e1('0x56')]['filename'],path[_0x40e1('0x58')](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x5a')])),_0x38450f[_0x40e1('0x4e')]));logger[_0x40e1('0x5e')](_0x40e1('0x5f'),_0x29b201);logger[_0x40e1('0x5e')]('Sound\x20upload\x20destination:\x20%s',_0xb1981c);try{fs[_0x40e1('0x60')](_0x29b201,parseInt(_0x40e1('0x61'),0x8));var _0x157f9d=sox[_0x40e1('0x62')](_0x29b201,_0xb1981c,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x157f9d['on'](_0x40e1('0x29'),function(_0x16a7f){fs['unlinkSync'](_0x29b201);_0x4b1dbf[_0x40e1('0x19')](0x1f4)[_0x40e1('0x2c')](_0x16a7f);});_0x157f9d['on'](_0x40e1('0x63'),function(_0x1c3cfc){_0x38450f[_0x40e1('0x64')]=isNaN(_0x1c3cfc[_0x40e1('0x65')])?null:_0x1c3cfc[_0x40e1('0x65')]*0x3e8;_0x38450f['original_sampleCount']=isNaN(_0x1c3cfc[_0x40e1('0x66')])?null:_0x1c3cfc[_0x40e1('0x66')];_0x38450f[_0x40e1('0x67')]=isNaN(_0x1c3cfc[_0x40e1('0x68')])?null:_0x1c3cfc[_0x40e1('0x68')];_0x38450f['original_bitRate']=isNaN(_0x1c3cfc[_0x40e1('0x69')])?null:_0x1c3cfc[_0x40e1('0x69')];_0x38450f[_0x40e1('0x6a')]=isNaN(_0x1c3cfc['sampleRate'])?null:_0x1c3cfc[_0x40e1('0x6b')];});_0x157f9d['on'](_0x40e1('0x6c'),function(_0x142270){_0x38450f['converted_duration']=isNaN(_0x142270[_0x40e1('0x65')])?null:_0x142270[_0x40e1('0x65')]*0x3e8;_0x38450f[_0x40e1('0x6d')]=isNaN(_0x142270[_0x40e1('0x66')])?null:_0x142270[_0x40e1('0x66')];_0x38450f[_0x40e1('0x6e')]=isNaN(_0x142270[_0x40e1('0x68')])?null:_0x142270[_0x40e1('0x68')];_0x38450f[_0x40e1('0x6f')]=isNaN(_0x142270[_0x40e1('0x69')])?null:_0x142270[_0x40e1('0x69')];_0x38450f[_0x40e1('0x70')]=isNaN(_0x142270[_0x40e1('0x6b')])?null:_0x142270['sampleRate'];});_0x157f9d['on'](_0x40e1('0x1a'),function(){fs[_0x40e1('0x60')](_0xb1981c,parseInt(_0x40e1('0x61'),0x8));return db[_0x40e1('0x2e')]['create'](_0x38450f)[_0x40e1('0x25')](function(_0x4274e5){var _0x5bda3d={'role':_0x25ae9c[_0x40e1('0x71')][_0x40e1('0x72')],'userProfileId':_0x25ae9c[_0x40e1('0x71')][_0x40e1('0x73')]};if(!_0x5bda3d)throw new Error(_0x40e1('0x74'));if(_0x5bda3d[_0x40e1('0x72')]===_0x40e1('0x75')){var _0x3bc91f=_0x4274e5[_0x40e1('0x76')]({'plain':!![]});return db[_0x40e1('0x77')][_0x40e1('0x4a')]({'where':{'name':'Sounds','userProfileId':_0x5bda3d[_0x40e1('0x73')]},'raw':!![]})['then'](function(_0x3e4bce){if(_0x3e4bce&&_0x3e4bce[_0x40e1('0x78')]===0x0){return db[_0x40e1('0x28')][_0x40e1('0x55')]({'name':_0x3bc91f['name'],'resourceId':_0x3bc91f['id'],'type':_0x3e4bce[_0x40e1('0x2b')],'sectionId':_0x3e4bce['id']},{})[_0x40e1('0x25')](function(){return _0x4274e5;});}else{return _0x4274e5;}})[_0x40e1('0x4b')](function(_0x2eb746){logger[_0x40e1('0x29')](_0x40e1('0x79'),_0x2eb746);throw _0x2eb746;});}return _0x4274e5;})[_0x40e1('0x25')](respondWithResult(_0x4b1dbf,null))['catch'](handleError(_0x4b1dbf,null));});_0x157f9d[_0x40e1('0x7a')]();}catch(_0xc9e9b8){_0x4b1dbf[_0x40e1('0x19')](0x1f4)[_0x40e1('0x2c')](_0xc9e9b8);}};exports[_0x40e1('0x24')]=function(_0x49938a,_0x661755,_0x5cd863){return db[_0x40e1('0x2e')][_0x40e1('0x4a')]({'where':{'id':_0x49938a[_0x40e1('0x48')]['id']}})[_0x40e1('0x25')](handleEntityNotFound(_0x661755,null))[_0x40e1('0x25')](saveUpdates(_[_0x40e1('0x3d')](_0x49938a[_0x40e1('0x71')],['name',_0x40e1('0x7b')]),null))[_0x40e1('0x25')](respondWithResult(_0x661755,null))[_0x40e1('0x4b')](handleError(_0x661755,null));};exports[_0x40e1('0x7c')]=function(_0x245432,_0x905f42,_0x361826){return db[_0x40e1('0x2e')][_0x40e1('0x4a')]({'where':{'id':_0x245432[_0x40e1('0x48')]['id']}})['then'](function(_0x3355df){if(_0x3355df){return _0x3355df[_0x40e1('0x26')]();}})[_0x40e1('0x25')](function(_0xfad2d3){var _0x2a4485=path['join'](config[_0x40e1('0x50')],_0x40e1('0x5d'),util[_0x40e1('0x53')](_0x40e1('0x54'),_0xfad2d3[_0x40e1('0x4d')],_0xfad2d3['original_format']));var _0x42f0d1=path['join'](config[_0x40e1('0x50')],'server/files/sounds/converted',util[_0x40e1('0x53')](_0x40e1('0x54'),_0xfad2d3['save_name'],_0xfad2d3[_0x40e1('0x4e')]));fs['unlinkSync'](_0x2a4485);fs[_0x40e1('0x7d')](_0x42f0d1);return _0xfad2d3;})[_0x40e1('0x25')](function(_0x20d287){if(_0x20d287){return _0x905f42[_0x40e1('0x19')](0xcc)[_0x40e1('0x1a')]();}})['then'](handleEntityNotFound(_0x905f42,null))[_0x40e1('0x4b')](handleError(_0x905f42,null));};
\ No newline at end of file
+var _0xb72e=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','json','update','then','get','Sounds','UserProfileResource','error','stack','index','map','fieldName','model','name','keys','query','filters','intersection','fields','attributes','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','Sound','findAll','rows','catch','show','rawAttributes','length','options','download','params','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','file','originalname','extname','filename','substring','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','wav','unlinkSync','original_duration','duration','original_sampleCount','original_channelCount','channelCount','original_bitRate','original_sampleRate','sampleRate','dest','converted_duration','sampleCount','converted_channelCount','converted_bitRate','bitRate','role','body','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','original_format','eml-format','rimraf','zip-dir'];(function(_0x27b909,_0x134823){var _0x44a242=function(_0x39cac8){while(--_0x39cac8){_0x27b909['push'](_0x27b909['shift']());}};_0x44a242(++_0x134823);}(_0xb72e,0x15c));var _0xeb72=function(_0x201c4b,_0x400869){_0x201c4b=_0x201c4b-0x0;var _0xb6cb1e=_0xb72e[_0x201c4b];return _0xb6cb1e;};'use strict';var emlformat=require(_0xeb72('0x0'));var rimraf=require(_0xeb72('0x1'));var zipdir=require(_0xeb72('0x2'));var jsonpatch=require(_0xeb72('0x3'));var rp=require(_0xeb72('0x4'));var moment=require(_0xeb72('0x5'));var BPromise=require(_0xeb72('0x6'));var Mustache=require(_0xeb72('0x7'));var util=require(_0xeb72('0x8'));var path=require(_0xeb72('0x9'));var sox=require(_0xeb72('0xa'));var csv=require(_0xeb72('0xb'));var ejs=require(_0xeb72('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb72('0xd'));var squel=require(_0xeb72('0xe'));var crypto=require('crypto');var jsforce=require(_0xeb72('0xf'));var deskjs=require(_0xeb72('0x10'));var toCsv=require('to-csv');var querystring=require(_0xeb72('0x11'));var Papa=require(_0xeb72('0x12'));var Redis=require('ioredis');var authService=require(_0xeb72('0x13'));var qs=require(_0xeb72('0x14'));var as=require(_0xeb72('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xeb72('0x16'));var config=require(_0xeb72('0x17'));var licenseUtil=require(_0xeb72('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35752a,_0x2689c3){_0x2689c3=_0x2689c3||0xcc;return function(_0x2eba37){if(_0x2eba37){return _0x35752a[_0xeb72('0x19')](_0x2689c3);}return _0x35752a[_0xeb72('0x1a')](_0x2689c3)[_0xeb72('0x1b')]();};}function respondWithResult(_0x4a4916,_0x4b006c){_0x4b006c=_0x4b006c||0xc8;return function(_0x2a1895){if(_0x2a1895){return _0x4a4916[_0xeb72('0x1a')](_0x4b006c)['json'](_0x2a1895);}};}function respondWithFilteredResult(_0x3ce1ec,_0x5dfe3f){return function(_0x22d14c){if(_0x22d14c){var _0x3969aa=typeof _0x5dfe3f['offset']==='undefined'&&typeof _0x5dfe3f['limit']===_0xeb72('0x1c');var _0x5e66af=_0x22d14c[_0xeb72('0x1d')];var _0x377eed=_0x3969aa?0x0:_0x5dfe3f[_0xeb72('0x1e')];var _0x5cfa7a=_0x3969aa?_0x22d14c['count']:_0x5dfe3f['offset']+_0x5dfe3f[_0xeb72('0x1f')];var _0x471965;if(_0x5cfa7a>=_0x5e66af){_0x5cfa7a=_0x5e66af;_0x471965=0xc8;}else{_0x471965=0xce;}_0x3ce1ec[_0xeb72('0x1a')](_0x471965);return _0x3ce1ec[_0xeb72('0x20')]('Content-Range',_0x377eed+'-'+_0x5cfa7a+'/'+_0x5e66af)[_0xeb72('0x21')](_0x22d14c);}return null;};}function patchUpdates(_0x5e9742){return function(_0x552a77){try{jsonpatch['apply'](_0x552a77,_0x5e9742,!![]);}catch(_0x49b821){return BPromise['reject'](_0x49b821);}return _0x552a77['save']();};}function saveUpdates(_0x2c06e2,_0x416f3b){return function(_0x203a02){if(_0x203a02){return _0x203a02[_0xeb72('0x22')](_0x2c06e2)[_0xeb72('0x23')](function(_0x2826ce){return _0x2826ce;});}return null;};}function removeEntity(_0x5c1a47,_0x1df120){return function(_0xbed0c5){if(_0xbed0c5){return _0xbed0c5['destroy']()[_0xeb72('0x23')](function(){var _0x1bc31e=_0xbed0c5[_0xeb72('0x24')]({'plain':!![]});var _0x2ecdec=_0xeb72('0x25');return db[_0xeb72('0x26')]['destroy']({'where':{'type':_0x2ecdec,'resourceId':_0x1bc31e['id']}})['then'](function(){return _0xbed0c5;});})[_0xeb72('0x23')](function(){_0x5c1a47[_0xeb72('0x1a')](0xcc)[_0xeb72('0x1b')]();});}};}function handleEntityNotFound(_0x4533c8,_0x3421aa){return function(_0x5ccf90){if(!_0x5ccf90){_0x4533c8[_0xeb72('0x19')](0x194);}return _0x5ccf90;};}function handleError(_0x336b1c,_0x149a1b){_0x149a1b=_0x149a1b||0x1f4;return function(_0x497156){logger[_0xeb72('0x27')](_0x497156[_0xeb72('0x28')]);if(_0x497156['name']){delete _0x497156['name'];}_0x336b1c['status'](_0x149a1b)['send'](_0x497156);};}exports[_0xeb72('0x29')]=function(_0x45b693,_0x1dcdb8){var _0x1fe15d={},_0x2eae80={},_0x4aeb1a={'count':0x0,'rows':[]};var _0x1b34eb=_[_0xeb72('0x2a')](db['Sound']['rawAttributes'],function(_0x104c9a){return{'name':_0x104c9a[_0xeb72('0x2b')],'type':_0x104c9a['type']['key']};});_0x2eae80[_0xeb72('0x2c')]=_[_0xeb72('0x2a')](_0x1b34eb,_0xeb72('0x2d'));_0x2eae80['query']=_[_0xeb72('0x2e')](_0x45b693[_0xeb72('0x2f')]);_0x2eae80[_0xeb72('0x30')]=_[_0xeb72('0x31')](_0x2eae80[_0xeb72('0x2c')],_0x2eae80[_0xeb72('0x2f')]);_0x1fe15d['attributes']=_[_0xeb72('0x31')](_0x2eae80[_0xeb72('0x2c')],qs[_0xeb72('0x32')](_0x45b693['query'][_0xeb72('0x32')]));_0x1fe15d[_0xeb72('0x33')]=_0x1fe15d[_0xeb72('0x33')]['length']?_0x1fe15d[_0xeb72('0x33')]:_0x2eae80[_0xeb72('0x2c')];if(!_0x45b693[_0xeb72('0x2f')]['hasOwnProperty']('nolimit')){_0x1fe15d['limit']=qs[_0xeb72('0x1f')](_0x45b693['query'][_0xeb72('0x1f')]);_0x1fe15d['offset']=qs['offset'](_0x45b693[_0xeb72('0x2f')]['offset']);}_0x1fe15d['order']=qs[_0xeb72('0x34')](_0x45b693[_0xeb72('0x2f')]['sort']);_0x1fe15d['where']=qs[_0xeb72('0x30')](_[_0xeb72('0x35')](_0x45b693[_0xeb72('0x2f')],_0x2eae80[_0xeb72('0x30')]),_0x1b34eb);if(_0x45b693['query'][_0xeb72('0x36')]){_0x1fe15d[_0xeb72('0x37')]=_[_0xeb72('0x38')](_0x1fe15d[_0xeb72('0x37')],{'$or':_['map'](_0x1b34eb,function(_0x1b2ce2){if(_0x1b2ce2['type']!==_0xeb72('0x39')){var _0x3689e0={};_0x3689e0[_0x1b2ce2['name']]={'$like':'%'+_0x45b693[_0xeb72('0x2f')][_0xeb72('0x36')]+'%'};return _0x3689e0;}})});}_0x1fe15d=_[_0xeb72('0x38')]({},_0x1fe15d,_0x45b693['options']);var _0x4fc68c={'where':_0x1fe15d[_0xeb72('0x37')]};return db['Sound']['count'](_0x4fc68c)[_0xeb72('0x23')](function(_0x443d27){_0x4aeb1a[_0xeb72('0x1d')]=_0x443d27;if(_0x45b693[_0xeb72('0x2f')][_0xeb72('0x3a')]){_0x1fe15d[_0xeb72('0x3b')]=[{'all':!![]}];}return db[_0xeb72('0x3c')][_0xeb72('0x3d')](_0x1fe15d);})[_0xeb72('0x23')](function(_0x201a5e){_0x4aeb1a[_0xeb72('0x3e')]=_0x201a5e;return _0x4aeb1a;})[_0xeb72('0x23')](respondWithFilteredResult(_0x1dcdb8,_0x1fe15d))[_0xeb72('0x3f')](handleError(_0x1dcdb8,null));};exports[_0xeb72('0x40')]=function(_0x1ba8cf,_0x17d86b){var _0x319efb={'raw':!![],'where':{'id':_0x1ba8cf['params']['id']}},_0x45fba3={};_0x45fba3[_0xeb72('0x2c')]=_[_0xeb72('0x2e')](db[_0xeb72('0x3c')][_0xeb72('0x41')]);_0x45fba3[_0xeb72('0x2f')]=_[_0xeb72('0x2e')](_0x1ba8cf[_0xeb72('0x2f')]);_0x45fba3[_0xeb72('0x30')]=_[_0xeb72('0x31')](_0x45fba3[_0xeb72('0x2c')],_0x45fba3[_0xeb72('0x2f')]);_0x319efb['attributes']=_[_0xeb72('0x31')](_0x45fba3[_0xeb72('0x2c')],qs[_0xeb72('0x32')](_0x1ba8cf[_0xeb72('0x2f')]['fields']));_0x319efb[_0xeb72('0x33')]=_0x319efb['attributes'][_0xeb72('0x42')]?_0x319efb[_0xeb72('0x33')]:_0x45fba3[_0xeb72('0x2c')];if(_0x1ba8cf[_0xeb72('0x2f')][_0xeb72('0x3a')]){_0x319efb[_0xeb72('0x3b')]=[{'all':!![]}];}_0x319efb=_[_0xeb72('0x38')]({},_0x319efb,_0x1ba8cf[_0xeb72('0x43')]);return db[_0xeb72('0x3c')]['find'](_0x319efb)[_0xeb72('0x23')](handleEntityNotFound(_0x17d86b,null))[_0xeb72('0x23')](respondWithResult(_0x17d86b,null))[_0xeb72('0x3f')](handleError(_0x17d86b,null));};exports[_0xeb72('0x44')]=function(_0x4a01b0,_0x1a44b4,_0x52a21f){return db[_0xeb72('0x3c')]['find']({'where':{'id':_0x4a01b0[_0xeb72('0x45')]['id']},'attributes':[_0xeb72('0x2d'),_0xeb72('0x46'),_0xeb72('0x47')],'raw':!![]})[_0xeb72('0x23')](handleEntityNotFound(_0x1a44b4,null))[_0xeb72('0x23')](function(_0x485abf){if(_0x485abf){if(!fs[_0xeb72('0x48')](path[_0xeb72('0x49')](config[_0xeb72('0x4a')],_0xeb72('0x4b'),_0x485abf[_0xeb72('0x46')]+'.'+_0x485abf[_0xeb72('0x47')]))){throw new db['Sequelize'][(_0xeb72('0x4c'))](_0xeb72('0x4d'));}return _0x1a44b4[_0xeb72('0x44')](path[_0xeb72('0x49')](config[_0xeb72('0x4a')],_0xeb72('0x4b'),util[_0xeb72('0x4e')](_0xeb72('0x4f'),_0x485abf['save_name'],_0x485abf[_0xeb72('0x47')])),util[_0xeb72('0x4e')](_0xeb72('0x4f'),_0x485abf[_0xeb72('0x2d')],_0x485abf[_0xeb72('0x47')]));}return null;})['catch'](handleError(_0x1a44b4,null));};exports[_0xeb72('0x50')]=function(_0x141f1e,_0x41df60,_0x4da4f5){var _0x3f7896={'name':path[_0xeb72('0x51')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x53')],path[_0xeb72('0x54')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x53')])),'save_name':path[_0xeb72('0x51')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x55')],path[_0xeb72('0x54')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x55')])),'original_format':path[_0xeb72('0x54')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x53')])[_0xeb72('0x56')](0x1),'converted_format':'wav'};var _0xc1cb29=path[_0xeb72('0x49')](config[_0xeb72('0x4a')],_0xeb72('0x57'),_0x141f1e[_0xeb72('0x52')][_0xeb72('0x55')]);var _0x32afce=path['join'](config[_0xeb72('0x4a')],_0xeb72('0x4b'),util[_0xeb72('0x4e')]('%s.%s',path[_0xeb72('0x51')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x55')],path[_0xeb72('0x54')](_0x141f1e[_0xeb72('0x52')][_0xeb72('0x55')])),_0x3f7896['converted_format']));logger[_0xeb72('0x58')](_0xeb72('0x59'),_0xc1cb29);logger['info'](_0xeb72('0x5a'),_0x32afce);try{fs[_0xeb72('0x5b')](_0xc1cb29,parseInt(_0xeb72('0x5c'),0x8));var _0x539576=sox[_0xeb72('0x5d')](_0xc1cb29,_0x32afce,{'sampleRate':0x1f40,'format':_0xeb72('0x5e'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x539576['on'](_0xeb72('0x27'),function(_0x55074a){fs[_0xeb72('0x5f')](_0xc1cb29);_0x41df60[_0xeb72('0x1a')](0x1f4)['send'](_0x55074a);});_0x539576['on']('src',function(_0x9f19a1){_0x3f7896[_0xeb72('0x60')]=isNaN(_0x9f19a1[_0xeb72('0x61')])?null:_0x9f19a1[_0xeb72('0x61')]*0x3e8;_0x3f7896[_0xeb72('0x62')]=isNaN(_0x9f19a1['sampleCount'])?null:_0x9f19a1['sampleCount'];_0x3f7896[_0xeb72('0x63')]=isNaN(_0x9f19a1['channelCount'])?null:_0x9f19a1[_0xeb72('0x64')];_0x3f7896[_0xeb72('0x65')]=isNaN(_0x9f19a1['bitRate'])?null:_0x9f19a1['bitRate'];_0x3f7896[_0xeb72('0x66')]=isNaN(_0x9f19a1['sampleRate'])?null:_0x9f19a1[_0xeb72('0x67')];});_0x539576['on'](_0xeb72('0x68'),function(_0x30f460){_0x3f7896[_0xeb72('0x69')]=isNaN(_0x30f460['duration'])?null:_0x30f460[_0xeb72('0x61')]*0x3e8;_0x3f7896['converted_sampleCount']=isNaN(_0x30f460[_0xeb72('0x6a')])?null:_0x30f460['sampleCount'];_0x3f7896[_0xeb72('0x6b')]=isNaN(_0x30f460['channelCount'])?null:_0x30f460[_0xeb72('0x64')];_0x3f7896[_0xeb72('0x6c')]=isNaN(_0x30f460[_0xeb72('0x6d')])?null:_0x30f460[_0xeb72('0x6d')];_0x3f7896['converted_sampleRate']=isNaN(_0x30f460[_0xeb72('0x67')])?null:_0x30f460['sampleRate'];});_0x539576['on'](_0xeb72('0x1b'),function(){fs[_0xeb72('0x5b')](_0x32afce,parseInt('0777',0x8));return db[_0xeb72('0x3c')][_0xeb72('0x50')](_0x3f7896)[_0xeb72('0x23')](function(_0x3624a0){var _0x47cd7b={'role':_0x141f1e['body'][_0xeb72('0x6e')],'userProfileId':_0x141f1e[_0xeb72('0x6f')]['userProfileId']};if(!_0x47cd7b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x47cd7b[_0xeb72('0x6e')]==='user'){var _0x26757b=_0x3624a0[_0xeb72('0x24')]({'plain':!![]});return db['UserProfileSection'][_0xeb72('0x70')]({'where':{'name':_0xeb72('0x25'),'userProfileId':_0x47cd7b['userProfileId']},'raw':!![]})[_0xeb72('0x23')](function(_0x34e272){if(_0x34e272&&_0x34e272['autoAssociation']===0x0){return db[_0xeb72('0x26')][_0xeb72('0x50')]({'name':_0x26757b[_0xeb72('0x2d')],'resourceId':_0x26757b['id'],'type':_0x34e272[_0xeb72('0x2d')],'sectionId':_0x34e272['id']},{})[_0xeb72('0x23')](function(){return _0x3624a0;});}else{return _0x3624a0;}})[_0xeb72('0x3f')](function(_0x214684){logger[_0xeb72('0x27')](_0xeb72('0x71'),_0x214684);throw _0x214684;});}return _0x3624a0;})[_0xeb72('0x23')](respondWithResult(_0x41df60,null))['catch'](handleError(_0x41df60,null));});_0x539576[_0xeb72('0x72')]();}catch(_0x4afe8c){_0x41df60['status'](0x1f4)['send'](_0x4afe8c);}};exports['update']=function(_0x2db18d,_0x1f8cc7,_0x4bce12){return db['Sound']['find']({'where':{'id':_0x2db18d[_0xeb72('0x45')]['id']}})[_0xeb72('0x23')](handleEntityNotFound(_0x1f8cc7,null))[_0xeb72('0x23')](saveUpdates(_['pick'](_0x2db18d[_0xeb72('0x6f')],[_0xeb72('0x2d'),_0xeb72('0x73')]),null))[_0xeb72('0x23')](respondWithResult(_0x1f8cc7,null))['catch'](handleError(_0x1f8cc7,null));};exports['delete']=function(_0xcb2639,_0x19991b,_0x3cc3ca){return db['Sound'][_0xeb72('0x70')]({'where':{'id':_0xcb2639['params']['id']}})[_0xeb72('0x23')](function(_0x1d2909){if(_0x1d2909){return _0x1d2909['destroy']();}})[_0xeb72('0x23')](function(_0x298673){var _0x5a1d51=path[_0xeb72('0x49')](config[_0xeb72('0x4a')],_0xeb72('0x57'),util['format'](_0xeb72('0x4f'),_0x298673[_0xeb72('0x46')],_0x298673[_0xeb72('0x74')]));var _0x4998d8=path[_0xeb72('0x49')](config[_0xeb72('0x4a')],_0xeb72('0x4b'),util['format'](_0xeb72('0x4f'),_0x298673['save_name'],_0x298673[_0xeb72('0x47')]));fs[_0xeb72('0x5f')](_0x5a1d51);fs[_0xeb72('0x5f')](_0x4998d8);return _0x298673;})[_0xeb72('0x23')](function(_0x2c9a28){if(_0x2c9a28){return _0x19991b[_0xeb72('0x1a')](0xcc)[_0xeb72('0x1b')]();}})[_0xeb72('0x23')](handleEntityNotFound(_0x19991b,null))['catch'](handleError(_0x19991b,null));};
\ No newline at end of file
index 93ea7c2..2bf8ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaed5=['exports','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x41352a,_0x246ea2){var _0x3e392f=function(_0x11a5a6){while(--_0x11a5a6){_0x41352a['push'](_0x41352a['shift']());}};_0x3e392f(++_0x246ea2);}(_0xaed5,0x17e));var _0x5aed=function(_0x3a8db6,_0x226f4a){_0x3a8db6=_0x3a8db6-0x0;var _0x317e4d=_0xaed5[_0x3a8db6];return _0x317e4d;};'use strict';var _=require(_0x5aed('0x0'));var util=require(_0x5aed('0x1'));var logger=require(_0x5aed('0x2'))(_0x5aed('0x3'));var moment=require(_0x5aed('0x4'));var BPromise=require(_0x5aed('0x5'));var rp=require(_0x5aed('0x6'));var fs=require('fs');var path=require(_0x5aed('0x7'));var rimraf=require(_0x5aed('0x8'));var config=require(_0x5aed('0x9'));var attributes=require('./sound.attributes');module[_0x5aed('0xa')]=function(_0x299449,_0x31a0d8){return _0x299449[_0x5aed('0xb')](_0x5aed('0xc'),attributes,{'tableName':_0x5aed('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf730=['rimraf','../../config/environment','define','Sound','util','../../config/logger','api','moment','bluebird'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xf730,0x16c));var _0x0f73=function(_0x493370,_0x4c7fac){_0x493370=_0x493370-0x0;var _0xac15d=_0xf730[_0x493370];return _0xac15d;};'use strict';var _=require('lodash');var util=require(_0x0f73('0x0'));var logger=require(_0x0f73('0x1'))(_0x0f73('0x2'));var moment=require(_0x0f73('0x3'));var BPromise=require(_0x0f73('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0f73('0x5'));var config=require(_0x0f73('0x6'));var attributes=require('./sound.attributes');module['exports']=function(_0x211703,_0x3bf88e){return _0x211703[_0x0f73('0x7')](_0x0f73('0x8'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f13251e..112fa1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2289=['request','info','Sound,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowSound','find','options','where','attributes','include','map','model','then','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http'];(function(_0x44449b,_0x5e16ea){var _0x1dde55=function(_0x3c50f0){while(--_0x3c50f0){_0x44449b['push'](_0x44449b['shift']());}};_0x1dde55(++_0x5e16ea);}(_0x2289,0x134));var _0x9228=function(_0x52278a,_0x207ce5){_0x52278a=_0x52278a-0x0;var _0x4e86b8=_0x2289[_0x52278a];return _0x4e86b8;};'use strict';var _=require(_0x9228('0x0'));var util=require(_0x9228('0x1'));var moment=require(_0x9228('0x2'));var BPromise=require(_0x9228('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9228('0x4'));var db=require(_0x9228('0x5'))['db'];var utils=require(_0x9228('0x6'));var logger=require(_0x9228('0x7'))(_0x9228('0x8'));var config=require('../../config/environment');var jayson=require(_0x9228('0x9'));var client=jayson['client'][_0x9228('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55d2f7,_0x56f127,_0x2607e4){return new BPromise(function(_0x2cd50f,_0xaa30a0){return client[_0x9228('0xb')](_0x55d2f7,_0x2607e4)['then'](function(_0x4c285c){logger[_0x9228('0xc')](_0x9228('0xd'),_0x56f127,_0x9228('0xe'));logger['debug']('Sound,\x20%s,\x20%s,\x20%s',_0x56f127,'request\x20sent',JSON[_0x9228('0xf')](_0x4c285c));if(_0x4c285c[_0x9228('0x10')]){if(_0x4c285c['error']['code']===0x1f4){logger[_0x9228('0x10')]('Sound,\x20%s,\x20%s',_0x56f127,_0x4c285c[_0x9228('0x10')][_0x9228('0x11')]);return _0xaa30a0(_0x4c285c[_0x9228('0x10')][_0x9228('0x11')]);}logger[_0x9228('0x10')](_0x9228('0xd'),_0x56f127,_0x4c285c[_0x9228('0x10')]['message']);return _0x2cd50f(_0x4c285c[_0x9228('0x10')][_0x9228('0x11')]);}else{logger[_0x9228('0xc')](_0x9228('0xd'),_0x56f127,_0x9228('0xe'));_0x2cd50f(_0x4c285c[_0x9228('0x12')]['message']);}})[_0x9228('0x13')](function(_0x19c797){logger[_0x9228('0x10')](_0x9228('0xd'),_0x56f127,_0x19c797);_0xaa30a0(_0x19c797);});});}exports[_0x9228('0x14')]=function(_0x3539f0){var _0x3233bd=this;return new Promise(function(_0x239bdb,_0x160532){return db['Sound'][_0x9228('0x15')]({'raw':_0x3539f0[_0x9228('0x16')]?_0x3539f0['options']['raw']===undefined?!![]:![]:!![],'where':_0x3539f0['options']?_0x3539f0[_0x9228('0x16')][_0x9228('0x17')]||null:null,'attributes':_0x3539f0[_0x9228('0x16')]?_0x3539f0[_0x9228('0x16')][_0x9228('0x18')]||null:null,'include':_0x3539f0['options']?_0x3539f0['options'][_0x9228('0x19')]?_[_0x9228('0x1a')](_0x3539f0[_0x9228('0x16')]['include'],function(_0x549125){return{'model':db[_0x549125[_0x9228('0x1b')]],'as':_0x549125['as'],'attributes':_0x549125[_0x9228('0x18')],'include':_0x549125[_0x9228('0x19')]?_[_0x9228('0x1a')](_0x549125[_0x9228('0x19')],function(_0x3f8f16){return{'model':db[_0x3f8f16[_0x9228('0x1b')]],'as':_0x3f8f16['as'],'attributes':_0x3f8f16['attributes'],'include':_0x3f8f16[_0x9228('0x19')]?_[_0x9228('0x1a')](_0x3f8f16[_0x9228('0x19')],function(_0x1f748b){return{'model':db[_0x1f748b[_0x9228('0x1b')]],'as':_0x1f748b['as'],'attributes':_0x1f748b[_0x9228('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9228('0x1c')](function(_0x596ca6){logger[_0x9228('0xc')](_0x9228('0x14'),_0x3539f0);logger['debug']('ShowSound',_0x3539f0,JSON[_0x9228('0xf')](_0x596ca6));_0x239bdb(_0x596ca6);})[_0x9228('0x13')](function(_0x52de1f){logger['error'](_0x9228('0x14'),_0x52de1f[_0x9228('0x11')],_0x3539f0);_0x160532(_0x3233bd[_0x9228('0x10')](0x1f4,_0x52de1f[_0x9228('0x11')]));});});};
\ No newline at end of file
+var _0xd9b8=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','ShowSound','Sound','find','options','raw','where','attributes','include','map','model','lodash'];(function(_0x108271,_0x13911e){var _0x416b34=function(_0x470ec7){while(--_0x470ec7){_0x108271['push'](_0x108271['shift']());}};_0x416b34(++_0x13911e);}(_0xd9b8,0x117));var _0x8d9b=function(_0x40b2ed,_0x2b1765){_0x40b2ed=_0x40b2ed-0x0;var _0x18397d=_0xd9b8[_0x40b2ed];return _0x18397d;};'use strict';var _=require(_0x8d9b('0x0'));var util=require(_0x8d9b('0x1'));var moment=require(_0x8d9b('0x2'));var BPromise=require(_0x8d9b('0x3'));var rs=require(_0x8d9b('0x4'));var fs=require('fs');var Redis=require(_0x8d9b('0x5'));var db=require(_0x8d9b('0x6'))['db'];var utils=require(_0x8d9b('0x7'));var logger=require(_0x8d9b('0x8'))(_0x8d9b('0x9'));var config=require(_0x8d9b('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8d9b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x468185,_0x55135c,_0x1fd937){return new BPromise(function(_0x2cd1de,_0x5cf69c){return client[_0x8d9b('0xc')](_0x468185,_0x1fd937)[_0x8d9b('0xd')](function(_0x454622){logger[_0x8d9b('0xe')](_0x8d9b('0xf'),_0x55135c,_0x8d9b('0x10'));logger[_0x8d9b('0x11')](_0x8d9b('0x12'),_0x55135c,'request\x20sent',JSON[_0x8d9b('0x13')](_0x454622));if(_0x454622['error']){if(_0x454622['error'][_0x8d9b('0x14')]===0x1f4){logger[_0x8d9b('0x15')]('Sound,\x20%s,\x20%s',_0x55135c,_0x454622[_0x8d9b('0x15')][_0x8d9b('0x16')]);return _0x5cf69c(_0x454622[_0x8d9b('0x15')][_0x8d9b('0x16')]);}logger['error'](_0x8d9b('0xf'),_0x55135c,_0x454622[_0x8d9b('0x15')][_0x8d9b('0x16')]);return _0x2cd1de(_0x454622[_0x8d9b('0x15')][_0x8d9b('0x16')]);}else{logger[_0x8d9b('0xe')](_0x8d9b('0xf'),_0x55135c,_0x8d9b('0x10'));_0x2cd1de(_0x454622[_0x8d9b('0x17')][_0x8d9b('0x16')]);}})[_0x8d9b('0x18')](function(_0x5c837c){logger[_0x8d9b('0x15')]('Sound,\x20%s,\x20%s',_0x55135c,_0x5c837c);_0x5cf69c(_0x5c837c);});});}exports[_0x8d9b('0x19')]=function(_0x1a5063){var _0x7fd6dd=this;return new Promise(function(_0x531043,_0x2a8cf5){return db[_0x8d9b('0x1a')][_0x8d9b('0x1b')]({'raw':_0x1a5063[_0x8d9b('0x1c')]?_0x1a5063[_0x8d9b('0x1c')][_0x8d9b('0x1d')]===undefined?!![]:![]:!![],'where':_0x1a5063[_0x8d9b('0x1c')]?_0x1a5063[_0x8d9b('0x1c')][_0x8d9b('0x1e')]||null:null,'attributes':_0x1a5063[_0x8d9b('0x1c')]?_0x1a5063[_0x8d9b('0x1c')][_0x8d9b('0x1f')]||null:null,'include':_0x1a5063['options']?_0x1a5063[_0x8d9b('0x1c')][_0x8d9b('0x20')]?_[_0x8d9b('0x21')](_0x1a5063[_0x8d9b('0x1c')][_0x8d9b('0x20')],function(_0x25c3cf){return{'model':db[_0x25c3cf[_0x8d9b('0x22')]],'as':_0x25c3cf['as'],'attributes':_0x25c3cf[_0x8d9b('0x1f')],'include':_0x25c3cf[_0x8d9b('0x20')]?_['map'](_0x25c3cf[_0x8d9b('0x20')],function(_0x598e18){return{'model':db[_0x598e18[_0x8d9b('0x22')]],'as':_0x598e18['as'],'attributes':_0x598e18[_0x8d9b('0x1f')],'include':_0x598e18[_0x8d9b('0x20')]?_[_0x8d9b('0x21')](_0x598e18[_0x8d9b('0x20')],function(_0x5bc3d5){return{'model':db[_0x5bc3d5[_0x8d9b('0x22')]],'as':_0x5bc3d5['as'],'attributes':_0x5bc3d5[_0x8d9b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x8d9b('0xd')](function(_0x11ec8c){logger[_0x8d9b('0xe')](_0x8d9b('0x19'),_0x1a5063);logger[_0x8d9b('0x11')]('ShowSound',_0x1a5063,JSON['stringify'](_0x11ec8c));_0x531043(_0x11ec8c);})[_0x8d9b('0x18')](function(_0x5a662a){logger[_0x8d9b('0x15')]('ShowSound',_0x5a662a['message'],_0x1a5063);_0x2a8cf5(_0x7fd6dd['error'](0x1f4,_0x5a662a[_0x8d9b('0x16')]));});});};
\ No newline at end of file
index 6437be3..0b5cec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x43b5c1,_0x395dd9){var _0x1a3448=function(_0xda206e){while(--_0xda206e){_0x43b5c1['push'](_0x43b5c1['shift']());}};_0x1a3448(++_0x395dd9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xb7e7[_0x2faddb];return _0x273c05;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x187399,_0x40c56d){var _0x40fa92=function(_0x36058c){while(--_0x36058c){_0x187399['push'](_0x187399['shift']());}};_0x40fa92(++_0x40c56d);}(_0x4fc2,0x111));var _0x24fc=function(_0xa3d443,_0x121b37){_0xa3d443=_0xa3d443-0x0;var _0x489486=_0x4fc2[_0xa3d443];return _0x489486;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
index 608bf23..248f767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x206b=['out','STRING','sequelize','exports','TEXT','ENUM'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x206b,0x170));var _0xb206=function(_0x3070d5,_0x1d3284){_0x3070d5=_0x3070d5-0x0;var _0x2067e6=_0x206b[_0x3070d5];return _0x2067e6;};'use strict';var Sequelize=require(_0xb206('0x0'));module[_0xb206('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xb206('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xb206('0x3')]('in',_0xb206('0x4')),'defaultValue':_0xb206('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0xb206('0x5')]},'providerResponse':{'type':Sequelize[_0xb206('0x2')]}};
\ No newline at end of file
+var _0x01e9=['exports','TEXT','ENUM','out'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01e9,0x1d8));var _0x901e=function(_0x812cbc,_0x317dfa){_0x812cbc=_0x812cbc-0x0;var _0x14b9cf=_0x01e9[_0x812cbc];return _0x14b9cf;};'use strict';var Sequelize=require('sequelize');module[_0x901e('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x901e('0x1')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x901e('0x2')]('in',_0x901e('0x3')),'defaultValue':_0x901e('0x3'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x901e('0x1')]}};
\ No newline at end of file
index 5abf59a..1a4874d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a3=['options','include','findAll','rows','catch','params','fields','includeAll','merge','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','end','error','stack','name','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL'];(function(_0x3ab928,_0x2b990b){var _0xf47692=function(_0x311b8e){while(--_0x311b8e){_0x3ab928['push'](_0x3ab928['shift']());}};_0xf47692(++_0x2b990b);}(_0x84a3,0x189));var _0x384a=function(_0x15f343,_0x3f2a3a){_0x15f343=_0x15f343-0x0;var _0xf837fb=_0x84a3[_0x15f343];return _0xf837fb;};'use strict';var emlformat=require(_0x384a('0x0'));var rimraf=require(_0x384a('0x1'));var zipdir=require(_0x384a('0x2'));var jsonpatch=require(_0x384a('0x3'));var rp=require(_0x384a('0x4'));var moment=require(_0x384a('0x5'));var BPromise=require(_0x384a('0x6'));var Mustache=require(_0x384a('0x7'));var util=require(_0x384a('0x8'));var path=require(_0x384a('0x9'));var sox=require(_0x384a('0xa'));var csv=require(_0x384a('0xb'));var ejs=require(_0x384a('0xc'));var fs=require('fs');var fs_extra=require(_0x384a('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x384a('0xe'));var jsforce=require(_0x384a('0xf'));var deskjs=require(_0x384a('0x10'));var toCsv=require(_0x384a('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x384a('0x11'));var authService=require(_0x384a('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x384a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x384a('0x14'))('api');var utils=require(_0x384a('0x15'));var config=require(_0x384a('0x16'));var licenseUtil=require(_0x384a('0x17'));var db=require(_0x384a('0x18'))['db'];function respondWithStatusCode(_0x55b299,_0x2d35a6){_0x2d35a6=_0x2d35a6||0xcc;return function(_0x4b2ae0){if(_0x4b2ae0){return _0x55b299[_0x384a('0x19')](_0x2d35a6);}return _0x55b299[_0x384a('0x1a')](_0x2d35a6)['end']();};}function respondWithResult(_0x2652ee,_0x5b5dd6){_0x5b5dd6=_0x5b5dd6||0xc8;return function(_0x388214){if(_0x388214){return _0x2652ee[_0x384a('0x1a')](_0x5b5dd6)[_0x384a('0x1b')](_0x388214);}};}function respondWithFilteredResult(_0x5a9a3f,_0x5f0176){return function(_0x5dac38){if(_0x5dac38){var _0x5bd02e=typeof _0x5f0176[_0x384a('0x1c')]===_0x384a('0x1d')&&typeof _0x5f0176['limit']===_0x384a('0x1d');var _0xcfef46=_0x5dac38[_0x384a('0x1e')];var _0x2e50e4=_0x5bd02e?0x0:_0x5f0176[_0x384a('0x1c')];var _0x312020=_0x5bd02e?_0x5dac38[_0x384a('0x1e')]:_0x5f0176['offset']+_0x5f0176['limit'];var _0x53813d;if(_0x312020>=_0xcfef46){_0x312020=_0xcfef46;_0x53813d=0xc8;}else{_0x53813d=0xce;}_0x5a9a3f['status'](_0x53813d);return _0x5a9a3f[_0x384a('0x1f')]('Content-Range',_0x2e50e4+'-'+_0x312020+'/'+_0xcfef46)['json'](_0x5dac38);}return null;};}function patchUpdates(_0x17c6dc){return function(_0x3203ff){try{jsonpatch[_0x384a('0x20')](_0x3203ff,_0x17c6dc,!![]);}catch(_0x50a557){return BPromise[_0x384a('0x21')](_0x50a557);}return _0x3203ff[_0x384a('0x22')]();};}function saveUpdates(_0x2d197b,_0x153aa1){return function(_0x4a4f63){if(_0x4a4f63){return _0x4a4f63[_0x384a('0x23')](_0x2d197b)[_0x384a('0x24')](function(_0x51a537){return _0x51a537;});}return null;};}function removeEntity(_0x4693ac,_0x14cf2a){return function(_0x2cf7f3){if(_0x2cf7f3){return _0x2cf7f3['destroy']()[_0x384a('0x24')](function(){_0x4693ac[_0x384a('0x1a')](0xcc)[_0x384a('0x25')]();});}};}function handleEntityNotFound(_0x27a4e6,_0x27b001){return function(_0x157fb2){if(!_0x157fb2){_0x27a4e6[_0x384a('0x19')](0x194);}return _0x157fb2;};}function handleError(_0x432570,_0x363887){_0x363887=_0x363887||0x1f4;return function(_0x518cc2){logger[_0x384a('0x26')](_0x518cc2[_0x384a('0x27')]);if(_0x518cc2[_0x384a('0x28')]){delete _0x518cc2[_0x384a('0x28')];}_0x432570['status'](_0x363887)['send'](_0x518cc2);};}exports['index']=function(_0x3b08ba,_0x39893b){var _0x3151f8={},_0x43ac25={},_0x2fdd16={'count':0x0,'rows':[]};var _0x5ae33b=_[_0x384a('0x29')](db[_0x384a('0x2a')][_0x384a('0x2b')],function(_0x1850d0){return{'name':_0x1850d0[_0x384a('0x2c')],'type':_0x1850d0[_0x384a('0x2d')][_0x384a('0x2e')]};});_0x43ac25[_0x384a('0x2f')]=_['map'](_0x5ae33b,_0x384a('0x28'));_0x43ac25[_0x384a('0x30')]=_[_0x384a('0x31')](_0x3b08ba['query']);_0x43ac25[_0x384a('0x32')]=_[_0x384a('0x33')](_0x43ac25[_0x384a('0x2f')],_0x43ac25[_0x384a('0x30')]);_0x3151f8[_0x384a('0x34')]=_['intersection'](_0x43ac25['model'],qs['fields'](_0x3b08ba['query']['fields']));_0x3151f8[_0x384a('0x34')]=_0x3151f8[_0x384a('0x34')][_0x384a('0x35')]?_0x3151f8[_0x384a('0x34')]:_0x43ac25[_0x384a('0x2f')];if(!_0x3b08ba[_0x384a('0x30')][_0x384a('0x36')](_0x384a('0x37'))){_0x3151f8[_0x384a('0x38')]=qs[_0x384a('0x38')](_0x3b08ba[_0x384a('0x30')]['limit']);_0x3151f8[_0x384a('0x1c')]=qs[_0x384a('0x1c')](_0x3b08ba['query']['offset']);}_0x3151f8[_0x384a('0x39')]=qs[_0x384a('0x3a')](_0x3b08ba[_0x384a('0x30')][_0x384a('0x3a')]);_0x3151f8[_0x384a('0x3b')]=qs[_0x384a('0x32')](_[_0x384a('0x3c')](_0x3b08ba[_0x384a('0x30')],_0x43ac25[_0x384a('0x32')]),_0x5ae33b);if(_0x3b08ba['query'][_0x384a('0x3d')]){_0x3151f8[_0x384a('0x3b')]=_['merge'](_0x3151f8[_0x384a('0x3b')],{'$or':_['map'](_0x5ae33b,function(_0x38673f){if(_0x38673f[_0x384a('0x2d')]!==_0x384a('0x3e')){var _0x56aebf={};_0x56aebf[_0x38673f[_0x384a('0x28')]]={'$like':'%'+_0x3b08ba[_0x384a('0x30')][_0x384a('0x3d')]+'%'};return _0x56aebf;}})});}_0x3151f8=_['merge']({},_0x3151f8,_0x3b08ba[_0x384a('0x3f')]);var _0x50775c={'where':_0x3151f8[_0x384a('0x3b')]};return db[_0x384a('0x2a')][_0x384a('0x1e')](_0x50775c)[_0x384a('0x24')](function(_0x56e232){_0x2fdd16[_0x384a('0x1e')]=_0x56e232;if(_0x3b08ba[_0x384a('0x30')]['includeAll']){_0x3151f8[_0x384a('0x40')]=[{'all':!![]}];}return db[_0x384a('0x2a')][_0x384a('0x41')](_0x3151f8);})['then'](function(_0x4f1fae){_0x2fdd16[_0x384a('0x42')]=_0x4f1fae;return _0x2fdd16;})[_0x384a('0x24')](respondWithFilteredResult(_0x39893b,_0x3151f8))[_0x384a('0x43')](handleError(_0x39893b,null));};exports['show']=function(_0x440c95,_0x1494e0){var _0x995c64={'raw':!![],'where':{'id':_0x440c95[_0x384a('0x44')]['id']}},_0x4f33bf={};_0x4f33bf[_0x384a('0x2f')]=_[_0x384a('0x31')](db[_0x384a('0x2a')][_0x384a('0x2b')]);_0x4f33bf[_0x384a('0x30')]=_[_0x384a('0x31')](_0x440c95[_0x384a('0x30')]);_0x4f33bf[_0x384a('0x32')]=_[_0x384a('0x33')](_0x4f33bf['model'],_0x4f33bf[_0x384a('0x30')]);_0x995c64[_0x384a('0x34')]=_[_0x384a('0x33')](_0x4f33bf[_0x384a('0x2f')],qs[_0x384a('0x45')](_0x440c95['query'][_0x384a('0x45')]));_0x995c64[_0x384a('0x34')]=_0x995c64[_0x384a('0x34')][_0x384a('0x35')]?_0x995c64[_0x384a('0x34')]:_0x4f33bf['model'];if(_0x440c95['query'][_0x384a('0x46')]){_0x995c64['include']=[{'all':!![]}];}_0x995c64=_[_0x384a('0x47')]({},_0x995c64,_0x440c95[_0x384a('0x3f')]);return db[_0x384a('0x2a')]['find'](_0x995c64)[_0x384a('0x24')](handleEntityNotFound(_0x1494e0,null))[_0x384a('0x24')](respondWithResult(_0x1494e0,null))[_0x384a('0x43')](handleError(_0x1494e0,null));};exports['create']=function(_0x5970ab,_0x5ca4a1){return db[_0x384a('0x2a')][_0x384a('0x48')](_0x5970ab['body'],{})[_0x384a('0x24')](respondWithResult(_0x5ca4a1,0xc9))[_0x384a('0x43')](handleError(_0x5ca4a1,null));};exports[_0x384a('0x23')]=function(_0xa847ea,_0x624da2){if(_0xa847ea[_0x384a('0x49')]['id']){delete _0xa847ea[_0x384a('0x49')]['id'];}return db[_0x384a('0x2a')][_0x384a('0x4a')]({'where':{'id':_0xa847ea['params']['id']}})[_0x384a('0x24')](handleEntityNotFound(_0x624da2,null))[_0x384a('0x24')](saveUpdates(_0xa847ea[_0x384a('0x49')],null))['then'](respondWithResult(_0x624da2,null))[_0x384a('0x43')](handleError(_0x624da2,null));};exports[_0x384a('0x4b')]=function(_0x4cbd7b,_0x270f37){return db[_0x384a('0x2a')][_0x384a('0x4a')]({'where':{'id':_0x4cbd7b[_0x384a('0x44')]['id']}})[_0x384a('0x24')](handleEntityNotFound(_0x270f37,null))['then'](removeEntity(_0x270f37,null))[_0x384a('0x43')](handleError(_0x270f37,null));};
\ No newline at end of file
+var _0x2ebd=['eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','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','sendStatus','end','status','undefined','count','offset','limit','set','json','apply','reject','update','then','destroy','error','stack','name','send','index','SquareMessage','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body'];(function(_0x17fed0,_0x281f6f){var _0x49fb26=function(_0x43e431){while(--_0x43e431){_0x17fed0['push'](_0x17fed0['shift']());}};_0x49fb26(++_0x281f6f);}(_0x2ebd,0x1c8));var _0xd2eb=function(_0x22f680,_0x1f941a){_0x22f680=_0x22f680-0x0;var _0xaa4c0b=_0x2ebd[_0x22f680];return _0xaa4c0b;};'use strict';var emlformat=require(_0xd2eb('0x0'));var rimraf=require(_0xd2eb('0x1'));var zipdir=require(_0xd2eb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd2eb('0x3'));var BPromise=require(_0xd2eb('0x4'));var Mustache=require(_0xd2eb('0x5'));var util=require(_0xd2eb('0x6'));var path=require(_0xd2eb('0x7'));var sox=require(_0xd2eb('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd2eb('0x9'));var _=require(_0xd2eb('0xa'));var squel=require(_0xd2eb('0xb'));var crypto=require(_0xd2eb('0xc'));var jsforce=require(_0xd2eb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd2eb('0xe'));var querystring=require(_0xd2eb('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd2eb('0x10'));var qs=require(_0xd2eb('0x11'));var as=require(_0xd2eb('0x12'));var hardwareService=require(_0xd2eb('0x13'));var logger=require(_0xd2eb('0x14'))(_0xd2eb('0x15'));var utils=require(_0xd2eb('0x16'));var config=require(_0xd2eb('0x17'));var licenseUtil=require(_0xd2eb('0x18'));var db=require(_0xd2eb('0x19'))['db'];function respondWithStatusCode(_0x3f694e,_0x2af8b6){_0x2af8b6=_0x2af8b6||0xcc;return function(_0x47f354){if(_0x47f354){return _0x3f694e[_0xd2eb('0x1a')](_0x2af8b6);}return _0x3f694e['status'](_0x2af8b6)[_0xd2eb('0x1b')]();};}function respondWithResult(_0x7c192a,_0x503cd1){_0x503cd1=_0x503cd1||0xc8;return function(_0xd4024){if(_0xd4024){return _0x7c192a[_0xd2eb('0x1c')](_0x503cd1)['json'](_0xd4024);}};}function respondWithFilteredResult(_0xa4f6c4,_0xa042c9){return function(_0x216f82){if(_0x216f82){var _0x4bf46e=typeof _0xa042c9['offset']===_0xd2eb('0x1d')&&typeof _0xa042c9['limit']==='undefined';var _0x8555b=_0x216f82[_0xd2eb('0x1e')];var _0x561e13=_0x4bf46e?0x0:_0xa042c9[_0xd2eb('0x1f')];var _0x2b3a76=_0x4bf46e?_0x216f82[_0xd2eb('0x1e')]:_0xa042c9[_0xd2eb('0x1f')]+_0xa042c9[_0xd2eb('0x20')];var _0x154349;if(_0x2b3a76>=_0x8555b){_0x2b3a76=_0x8555b;_0x154349=0xc8;}else{_0x154349=0xce;}_0xa4f6c4[_0xd2eb('0x1c')](_0x154349);return _0xa4f6c4[_0xd2eb('0x21')]('Content-Range',_0x561e13+'-'+_0x2b3a76+'/'+_0x8555b)[_0xd2eb('0x22')](_0x216f82);}return null;};}function patchUpdates(_0x4d57ee){return function(_0x328a07){try{jsonpatch[_0xd2eb('0x23')](_0x328a07,_0x4d57ee,!![]);}catch(_0x2a9a90){return BPromise[_0xd2eb('0x24')](_0x2a9a90);}return _0x328a07['save']();};}function saveUpdates(_0x27c797,_0x442eb4){return function(_0x47bc42){if(_0x47bc42){return _0x47bc42[_0xd2eb('0x25')](_0x27c797)[_0xd2eb('0x26')](function(_0x3bacd7){return _0x3bacd7;});}return null;};}function removeEntity(_0x2a9967,_0x2bc69a){return function(_0x27a3b4){if(_0x27a3b4){return _0x27a3b4[_0xd2eb('0x27')]()[_0xd2eb('0x26')](function(){_0x2a9967['status'](0xcc)[_0xd2eb('0x1b')]();});}};}function handleEntityNotFound(_0x443842,_0x22329f){return function(_0x3e6eb1){if(!_0x3e6eb1){_0x443842[_0xd2eb('0x1a')](0x194);}return _0x3e6eb1;};}function handleError(_0x221406,_0xe72bbb){_0xe72bbb=_0xe72bbb||0x1f4;return function(_0x2f0fd1){logger[_0xd2eb('0x28')](_0x2f0fd1[_0xd2eb('0x29')]);if(_0x2f0fd1[_0xd2eb('0x2a')]){delete _0x2f0fd1[_0xd2eb('0x2a')];}_0x221406[_0xd2eb('0x1c')](_0xe72bbb)[_0xd2eb('0x2b')](_0x2f0fd1);};}exports[_0xd2eb('0x2c')]=function(_0x39ee3d,_0x448973){var _0x6996b={},_0x6998b1={},_0x39ed9d={'count':0x0,'rows':[]};var _0x20d8dd=_['map'](db[_0xd2eb('0x2d')][_0xd2eb('0x2e')],function(_0x41030b){return{'name':_0x41030b['fieldName'],'type':_0x41030b[_0xd2eb('0x2f')]['key']};});_0x6998b1[_0xd2eb('0x30')]=_[_0xd2eb('0x31')](_0x20d8dd,'name');_0x6998b1[_0xd2eb('0x32')]=_[_0xd2eb('0x33')](_0x39ee3d[_0xd2eb('0x32')]);_0x6998b1[_0xd2eb('0x34')]=_[_0xd2eb('0x35')](_0x6998b1[_0xd2eb('0x30')],_0x6998b1['query']);_0x6996b['attributes']=_[_0xd2eb('0x35')](_0x6998b1['model'],qs['fields'](_0x39ee3d[_0xd2eb('0x32')]['fields']));_0x6996b[_0xd2eb('0x36')]=_0x6996b['attributes'][_0xd2eb('0x37')]?_0x6996b[_0xd2eb('0x36')]:_0x6998b1['model'];if(!_0x39ee3d['query'][_0xd2eb('0x38')]('nolimit')){_0x6996b[_0xd2eb('0x20')]=qs[_0xd2eb('0x20')](_0x39ee3d[_0xd2eb('0x32')]['limit']);_0x6996b['offset']=qs[_0xd2eb('0x1f')](_0x39ee3d['query'][_0xd2eb('0x1f')]);}_0x6996b[_0xd2eb('0x39')]=qs[_0xd2eb('0x3a')](_0x39ee3d[_0xd2eb('0x32')]['sort']);_0x6996b[_0xd2eb('0x3b')]=qs['filters'](_[_0xd2eb('0x3c')](_0x39ee3d['query'],_0x6998b1[_0xd2eb('0x34')]),_0x20d8dd);if(_0x39ee3d[_0xd2eb('0x32')][_0xd2eb('0x3d')]){_0x6996b[_0xd2eb('0x3b')]=_[_0xd2eb('0x3e')](_0x6996b[_0xd2eb('0x3b')],{'$or':_[_0xd2eb('0x31')](_0x20d8dd,function(_0x15da99){if(_0x15da99[_0xd2eb('0x2f')]!==_0xd2eb('0x3f')){var _0x5cc289={};_0x5cc289[_0x15da99[_0xd2eb('0x2a')]]={'$like':'%'+_0x39ee3d[_0xd2eb('0x32')]['filter']+'%'};return _0x5cc289;}})});}_0x6996b=_[_0xd2eb('0x3e')]({},_0x6996b,_0x39ee3d[_0xd2eb('0x40')]);var _0x326a5e={'where':_0x6996b[_0xd2eb('0x3b')]};return db['SquareMessage'][_0xd2eb('0x1e')](_0x326a5e)['then'](function(_0x49b97a){_0x39ed9d[_0xd2eb('0x1e')]=_0x49b97a;if(_0x39ee3d['query'][_0xd2eb('0x41')]){_0x6996b[_0xd2eb('0x42')]=[{'all':!![]}];}return db[_0xd2eb('0x2d')][_0xd2eb('0x43')](_0x6996b);})[_0xd2eb('0x26')](function(_0x5d4314){_0x39ed9d[_0xd2eb('0x44')]=_0x5d4314;return _0x39ed9d;})[_0xd2eb('0x26')](respondWithFilteredResult(_0x448973,_0x6996b))[_0xd2eb('0x45')](handleError(_0x448973,null));};exports[_0xd2eb('0x46')]=function(_0x31698c,_0x4ec8b3){var _0x2f45eb={'raw':!![],'where':{'id':_0x31698c[_0xd2eb('0x47')]['id']}},_0x442e2a={};_0x442e2a[_0xd2eb('0x30')]=_['keys'](db[_0xd2eb('0x2d')]['rawAttributes']);_0x442e2a[_0xd2eb('0x32')]=_['keys'](_0x31698c[_0xd2eb('0x32')]);_0x442e2a[_0xd2eb('0x34')]=_[_0xd2eb('0x35')](_0x442e2a[_0xd2eb('0x30')],_0x442e2a[_0xd2eb('0x32')]);_0x2f45eb['attributes']=_[_0xd2eb('0x35')](_0x442e2a[_0xd2eb('0x30')],qs['fields'](_0x31698c[_0xd2eb('0x32')][_0xd2eb('0x48')]));_0x2f45eb[_0xd2eb('0x36')]=_0x2f45eb[_0xd2eb('0x36')][_0xd2eb('0x37')]?_0x2f45eb[_0xd2eb('0x36')]:_0x442e2a[_0xd2eb('0x30')];if(_0x31698c[_0xd2eb('0x32')][_0xd2eb('0x41')]){_0x2f45eb['include']=[{'all':!![]}];}_0x2f45eb=_[_0xd2eb('0x3e')]({},_0x2f45eb,_0x31698c['options']);return db[_0xd2eb('0x2d')][_0xd2eb('0x49')](_0x2f45eb)[_0xd2eb('0x26')](handleEntityNotFound(_0x4ec8b3,null))[_0xd2eb('0x26')](respondWithResult(_0x4ec8b3,null))[_0xd2eb('0x45')](handleError(_0x4ec8b3,null));};exports[_0xd2eb('0x4a')]=function(_0x737c60,_0x436c22){return db[_0xd2eb('0x2d')][_0xd2eb('0x4a')](_0x737c60[_0xd2eb('0x4b')],{})[_0xd2eb('0x26')](respondWithResult(_0x436c22,0xc9))[_0xd2eb('0x45')](handleError(_0x436c22,null));};exports[_0xd2eb('0x25')]=function(_0x375da1,_0x2f079c){if(_0x375da1[_0xd2eb('0x4b')]['id']){delete _0x375da1[_0xd2eb('0x4b')]['id'];}return db[_0xd2eb('0x2d')][_0xd2eb('0x49')]({'where':{'id':_0x375da1[_0xd2eb('0x47')]['id']}})[_0xd2eb('0x26')](handleEntityNotFound(_0x2f079c,null))[_0xd2eb('0x26')](saveUpdates(_0x375da1['body'],null))[_0xd2eb('0x26')](respondWithResult(_0x2f079c,null))[_0xd2eb('0x45')](handleError(_0x2f079c,null));};exports[_0xd2eb('0x27')]=function(_0x543cc4,_0x1b8bb9){return db['SquareMessage']['find']({'where':{'id':_0x543cc4[_0xd2eb('0x47')]['id']}})[_0xd2eb('0x26')](handleEntityNotFound(_0x1b8bb9,null))['then'](removeEntity(_0x1b8bb9,null))[_0xd2eb('0x45')](handleError(_0x1b8bb9,null));};
\ No newline at end of file
index 2897938..df52c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c0c=['square_messages','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./squareMessage.attributes','exports','define','SquareMessage'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5c0c,0x139));var _0xc5c0=function(_0x308368,_0x3c26f9){_0x308368=_0x308368-0x0;var _0x224038=_0x5c0c[_0x308368];return _0x224038;};'use strict';var _=require('lodash');var util=require(_0xc5c0('0x0'));var logger=require(_0xc5c0('0x1'))(_0xc5c0('0x2'));var moment=require(_0xc5c0('0x3'));var BPromise=require(_0xc5c0('0x4'));var rp=require(_0xc5c0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5c0('0x6'));var config=require('../../config/environment');var attributes=require(_0xc5c0('0x7'));module[_0xc5c0('0x8')]=function(_0x4671a0,_0x3d3876){return _0x4671a0[_0xc5c0('0x9')](_0xc5c0('0xa'),attributes,{'tableName':_0xc5c0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ebf=['request-promise','path','define','SquareMessage','square_messages','../../config/logger','api','moment','bluebird'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x6ebf,0x149));var _0xf6eb=function(_0x460150,_0x232949){_0x460150=_0x460150-0x0;var _0x340677=_0x6ebf[_0x460150];return _0x340677;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf6eb('0x0'))(_0xf6eb('0x1'));var moment=require(_0xf6eb('0x2'));var BPromise=require(_0xf6eb('0x3'));var rp=require(_0xf6eb('0x4'));var fs=require('fs');var path=require(_0xf6eb('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareMessage.attributes');module['exports']=function(_0x5dd2dc,_0x27fab3){return _0x5dd2dc[_0xf6eb('0x6')](_0xf6eb('0x7'),attributes,{'tableName':_0xf6eb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4c8ac63..d866ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f4=['client','http','request','info','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','catch','SquareMessage','create','body','options','raw','then','CreateSquareMessage','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x492e1b,_0x4877ce){var _0x330a95=function(_0x2b1bdb){while(--_0x2b1bdb){_0x492e1b['push'](_0x492e1b['shift']());}};_0x330a95(++_0x4877ce);}(_0x83f4,0x122));var _0x483f=function(_0x34ff4d,_0x45b363){_0x34ff4d=_0x34ff4d-0x0;var _0xb7cfc3=_0x83f4[_0x34ff4d];return _0xb7cfc3;};'use strict';var _=require(_0x483f('0x0'));var util=require('util');var moment=require(_0x483f('0x1'));var BPromise=require(_0x483f('0x2'));var rs=require(_0x483f('0x3'));var fs=require('fs');var Redis=require(_0x483f('0x4'));var db=require(_0x483f('0x5'))['db'];var utils=require(_0x483f('0x6'));var logger=require('../../config/logger')(_0x483f('0x7'));var config=require(_0x483f('0x8'));var jayson=require(_0x483f('0x9'));var client=jayson[_0x483f('0xa')][_0x483f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x544f5f,_0x2eb81d,_0x432419){return new BPromise(function(_0x23c9c0,_0xb4d09a){return client[_0x483f('0xc')](_0x544f5f,_0x432419)['then'](function(_0x23afeb){logger[_0x483f('0xd')]('SquareMessage,\x20%s,\x20%s',_0x2eb81d,_0x483f('0xe'));logger[_0x483f('0xf')](_0x483f('0x10'),_0x2eb81d,_0x483f('0xe'),JSON[_0x483f('0x11')](_0x23afeb));if(_0x23afeb[_0x483f('0x12')]){if(_0x23afeb[_0x483f('0x12')][_0x483f('0x13')]===0x1f4){logger[_0x483f('0x12')](_0x483f('0x14'),_0x2eb81d,_0x23afeb[_0x483f('0x12')][_0x483f('0x15')]);return _0xb4d09a(_0x23afeb['error']['message']);}logger[_0x483f('0x12')](_0x483f('0x14'),_0x2eb81d,_0x23afeb['error'][_0x483f('0x15')]);return _0x23c9c0(_0x23afeb[_0x483f('0x12')]['message']);}else{logger[_0x483f('0xd')](_0x483f('0x14'),_0x2eb81d,_0x483f('0xe'));_0x23c9c0(_0x23afeb['result'][_0x483f('0x15')]);}})[_0x483f('0x16')](function(_0x4d30b4){logger[_0x483f('0x12')]('SquareMessage,\x20%s,\x20%s',_0x2eb81d,_0x4d30b4);_0xb4d09a(_0x4d30b4);});});}exports['CreateSquareMessage']=function(_0x3e8557){var _0x2db381=this;return new Promise(function(_0x1d11b0,_0x1fd438){return db[_0x483f('0x17')][_0x483f('0x18')](_0x3e8557[_0x483f('0x19')],{'raw':_0x3e8557['options']?_0x3e8557[_0x483f('0x1a')][_0x483f('0x1b')]===undefined?!![]:![]:!![]})[_0x483f('0x1c')](function(_0x2928f9){logger[_0x483f('0xd')](_0x483f('0x1d'),_0x3e8557);logger[_0x483f('0xf')](_0x483f('0x1d'),_0x3e8557,JSON['stringify'](_0x2928f9));_0x1d11b0(_0x2928f9);})[_0x483f('0x16')](function(_0x2faffb){logger[_0x483f('0x12')](_0x483f('0x1d'),_0x2faffb[_0x483f('0x15')],_0x3e8557);_0x1fd438(_0x2db381[_0x483f('0x12')](0x1f4,_0x2faffb[_0x483f('0x15')]));});});};
\ No newline at end of file
+var _0xdaa2=['result','catch','CreateSquareMessage','SquareMessage','body','options','raw','debug','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x5bf2a6,_0x96d3b8){var _0x284505=function(_0x55febe){while(--_0x55febe){_0x5bf2a6['push'](_0x5bf2a6['shift']());}};_0x284505(++_0x96d3b8);}(_0xdaa2,0x18e));var _0x2daa=function(_0x240207,_0x2eecd7){_0x240207=_0x240207-0x0;var _0x4813a9=_0xdaa2[_0x240207];return _0x4813a9;};'use strict';var _=require(_0x2daa('0x0'));var util=require('util');var moment=require(_0x2daa('0x1'));var BPromise=require(_0x2daa('0x2'));var rs=require(_0x2daa('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2daa('0x4'));var logger=require(_0x2daa('0x5'))('rpc');var config=require(_0x2daa('0x6'));var jayson=require(_0x2daa('0x7'));var client=jayson[_0x2daa('0x8')][_0x2daa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2177c2,_0x52a421,_0x3ebb6f){return new BPromise(function(_0x1fcdc3,_0x1b2c2c){return client[_0x2daa('0xa')](_0x2177c2,_0x3ebb6f)[_0x2daa('0xb')](function(_0x59086d){logger[_0x2daa('0xc')](_0x2daa('0xd'),_0x52a421,_0x2daa('0xe'));logger['debug']('SquareMessage,\x20%s,\x20%s,\x20%s',_0x52a421,_0x2daa('0xe'),JSON[_0x2daa('0xf')](_0x59086d));if(_0x59086d[_0x2daa('0x10')]){if(_0x59086d[_0x2daa('0x10')]['code']===0x1f4){logger[_0x2daa('0x10')](_0x2daa('0xd'),_0x52a421,_0x59086d[_0x2daa('0x10')]['message']);return _0x1b2c2c(_0x59086d[_0x2daa('0x10')][_0x2daa('0x11')]);}logger[_0x2daa('0x10')](_0x2daa('0xd'),_0x52a421,_0x59086d[_0x2daa('0x10')][_0x2daa('0x11')]);return _0x1fcdc3(_0x59086d['error'][_0x2daa('0x11')]);}else{logger[_0x2daa('0xc')](_0x2daa('0xd'),_0x52a421,_0x2daa('0xe'));_0x1fcdc3(_0x59086d[_0x2daa('0x12')][_0x2daa('0x11')]);}})[_0x2daa('0x13')](function(_0x13b8c3){logger['error'](_0x2daa('0xd'),_0x52a421,_0x13b8c3);_0x1b2c2c(_0x13b8c3);});});}exports[_0x2daa('0x14')]=function(_0x434124){var _0x28c721=this;return new Promise(function(_0x1dd3de,_0xee9cf){return db[_0x2daa('0x15')]['create'](_0x434124[_0x2daa('0x16')],{'raw':_0x434124['options']?_0x434124[_0x2daa('0x17')][_0x2daa('0x18')]===undefined?!![]:![]:!![]})[_0x2daa('0xb')](function(_0x2480c5){logger['info'](_0x2daa('0x14'),_0x434124);logger[_0x2daa('0x19')](_0x2daa('0x14'),_0x434124,JSON[_0x2daa('0xf')](_0x2480c5));_0x1dd3de(_0x2480c5);})[_0x2daa('0x13')](function(_0x56b533){logger[_0x2daa('0x10')](_0x2daa('0x14'),_0x56b533[_0x2daa('0x11')],_0x434124);_0xee9cf(_0x28c721[_0x2daa('0x10')](0x1f4,_0x56b533['message']));});});};
\ No newline at end of file
index 493cbc2..4eee0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbed=['express','Router','./squareOdbc.controller','index','get','/:id','isAuthenticated','show','/:id/test','15s','create','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x3376cf,_0x4ecb0b){var _0x559549=function(_0x2a028c){while(--_0x2a028c){_0x3376cf['push'](_0x3376cf['shift']());}};_0x559549(++_0x4ecb0b);}(_0xcbed,0x1ae));var _0xdcbe=function(_0x1940ec,_0x28d385){_0x1940ec=_0x1940ec-0x0;var _0xeff9ae=_0xcbed[_0x1940ec];return _0xeff9ae;};'use strict';var multer=require('multer');var util=require(_0xdcbe('0x0'));var path=require('path');var timeout=require(_0xdcbe('0x1'));var express=require(_0xdcbe('0x2'));var router=express[_0xdcbe('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdcbe('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0xdcbe('0x5')]);router[_0xdcbe('0x6')](_0xdcbe('0x7'),auth[_0xdcbe('0x8')](),controller[_0xdcbe('0x9')]);router[_0xdcbe('0x6')](_0xdcbe('0xa'),auth['isAuthenticated'](),timeout(_0xdcbe('0xb')),controller['test']);router['post']('/',auth[_0xdcbe('0x8')](),controller[_0xdcbe('0xc')]);router[_0xdcbe('0xd')]('/:id',auth[_0xdcbe('0x8')](),controller[_0xdcbe('0xe')]);router[_0xdcbe('0xf')](_0xdcbe('0x7'),auth['isAuthenticated'](),controller[_0xdcbe('0x10')]);module[_0xdcbe('0x11')]=router;
\ No newline at end of file
+var _0xfee0=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/test','15s','test','post','put','update','delete','destroy','exports','multer'];(function(_0x2fa2cb,_0x1586d5){var _0xe6da61=function(_0x21d36f){while(--_0x21d36f){_0x2fa2cb['push'](_0x2fa2cb['shift']());}};_0xe6da61(++_0x1586d5);}(_0xfee0,0x1df));var _0x0fee=function(_0x38dcff,_0x5f249d){_0x38dcff=_0x38dcff-0x0;var _0x6cb881=_0xfee0[_0x38dcff];return _0x6cb881;};'use strict';var multer=require(_0x0fee('0x0'));var util=require(_0x0fee('0x1'));var path=require(_0x0fee('0x2'));var timeout=require(_0x0fee('0x3'));var express=require(_0x0fee('0x4'));var router=express[_0x0fee('0x5')]();var fs_extra=require(_0x0fee('0x6'));var auth=require(_0x0fee('0x7'));var interaction=require(_0x0fee('0x8'));var config=require(_0x0fee('0x9'));var controller=require('./squareOdbc.controller');router[_0x0fee('0xa')]('/',auth[_0x0fee('0xb')](),controller[_0x0fee('0xc')]);router[_0x0fee('0xa')](_0x0fee('0xd'),auth[_0x0fee('0xb')](),controller[_0x0fee('0xe')]);router[_0x0fee('0xa')](_0x0fee('0xf'),auth['isAuthenticated'](),timeout(_0x0fee('0x10')),controller[_0x0fee('0x11')]);router[_0x0fee('0x12')]('/',auth[_0x0fee('0xb')](),controller['create']);router[_0x0fee('0x13')](_0x0fee('0xd'),auth[_0x0fee('0xb')](),controller[_0x0fee('0x14')]);router[_0x0fee('0x15')](_0x0fee('0xd'),auth[_0x0fee('0xb')](),controller[_0x0fee('0x16')]);module[_0x0fee('0x17')]=router;
\ No newline at end of file
index d17c362..2f36e84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f28=['name','sequelize','STRING'];(function(_0x3e7df7,_0x1caa85){var _0x339670=function(_0x12d940){while(--_0x12d940){_0x3e7df7['push'](_0x3e7df7['shift']());}};_0x339670(++_0x1caa85);}(_0x8f28,0x17e));var _0x88f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8f28[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x88f2('0x0'));module['exports']={'name':{'type':Sequelize[_0x88f2('0x1')],'unique':_0x88f2('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x88f2('0x1')]},'description':{'type':Sequelize[_0x88f2('0x1')]}};
\ No newline at end of file
+var _0xa9ce=['name','sequelize','exports','STRING'];(function(_0x4a8418,_0x39078a){var _0x390174=function(_0x173ea6){while(--_0x173ea6){_0x4a8418['push'](_0x4a8418['shift']());}};_0x390174(++_0x39078a);}(_0xa9ce,0x11d));var _0xea9c=function(_0x3f380d,_0x3bd9ad){_0x3f380d=_0x3f380d-0x0;var _0x400ed7=_0xa9ce[_0x3f380d];return _0x400ed7;};'use strict';var Sequelize=require(_0xea9c('0x0'));module[_0xea9c('0x1')]={'name':{'type':Sequelize[_0xea9c('0x2')],'unique':_0xea9c('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xea9c('0x2')]}};
\ No newline at end of file
index c885782..800ec79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4686=['fs-extra','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','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','keys','filters','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','request-promise','moment','bluebird','path','sox','to-csv'];(function(_0x1d31dc,_0x5ce700){var _0x579252=function(_0x85f3ce){while(--_0x85f3ce){_0x1d31dc['push'](_0x1d31dc['shift']());}};_0x579252(++_0x5ce700);}(_0x4686,0x1ab));var _0x6468=function(_0x541ec1,_0x5d3533){_0x541ec1=_0x541ec1-0x0;var _0xf95150=_0x4686[_0x541ec1];return _0xf95150;};'use strict';var emlformat=require(_0x6468('0x0'));var rimraf=require(_0x6468('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6468('0x2'));var moment=require(_0x6468('0x3'));var BPromise=require(_0x6468('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6468('0x5'));var sox=require(_0x6468('0x6'));var csv=require(_0x6468('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6468('0x8'));var _=require('lodash');var squel=require(_0x6468('0x9'));var crypto=require(_0x6468('0xa'));var jsforce=require(_0x6468('0xb'));var deskjs=require(_0x6468('0xc'));var toCsv=require(_0x6468('0x7'));var querystring=require(_0x6468('0xd'));var Papa=require(_0x6468('0xe'));var Redis=require(_0x6468('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6468('0x10'));var as=require(_0x6468('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6468('0x12'))(_0x6468('0x13'));var utils=require(_0x6468('0x14'));var config=require(_0x6468('0x15'));var licenseUtil=require(_0x6468('0x16'));var db=require(_0x6468('0x17'))['db'];function respondWithStatusCode(_0x12790c,_0x1e6522){_0x1e6522=_0x1e6522||0xcc;return function(_0x2b20a2){if(_0x2b20a2){return _0x12790c[_0x6468('0x18')](_0x1e6522);}return _0x12790c[_0x6468('0x19')](_0x1e6522)['end']();};}function respondWithResult(_0x2923d3,_0x1ecb2b){_0x1ecb2b=_0x1ecb2b||0xc8;return function(_0x3a4ea7){if(_0x3a4ea7){return _0x2923d3[_0x6468('0x19')](_0x1ecb2b)[_0x6468('0x1a')](_0x3a4ea7);}};}function respondWithFilteredResult(_0xb2a88a,_0x584f04){return function(_0x102575){if(_0x102575){var _0x166cea=typeof _0x584f04[_0x6468('0x1b')]===_0x6468('0x1c')&&typeof _0x584f04[_0x6468('0x1d')]===_0x6468('0x1c');var _0x1364f8=_0x102575[_0x6468('0x1e')];var _0x59b735=_0x166cea?0x0:_0x584f04[_0x6468('0x1b')];var _0x3c20d7=_0x166cea?_0x102575[_0x6468('0x1e')]:_0x584f04[_0x6468('0x1b')]+_0x584f04[_0x6468('0x1d')];var _0x1924a6;if(_0x3c20d7>=_0x1364f8){_0x3c20d7=_0x1364f8;_0x1924a6=0xc8;}else{_0x1924a6=0xce;}_0xb2a88a[_0x6468('0x19')](_0x1924a6);return _0xb2a88a['set'](_0x6468('0x1f'),_0x59b735+'-'+_0x3c20d7+'/'+_0x1364f8)[_0x6468('0x1a')](_0x102575);}return null;};}function patchUpdates(_0x3380a9){return function(_0x4e30c2){try{jsonpatch[_0x6468('0x20')](_0x4e30c2,_0x3380a9,!![]);}catch(_0x4875fd){return BPromise[_0x6468('0x21')](_0x4875fd);}return _0x4e30c2[_0x6468('0x22')]();};}function saveUpdates(_0x42dd73,_0x1df4fc){return function(_0x2a1453){if(_0x2a1453){return _0x2a1453['update'](_0x42dd73)[_0x6468('0x23')](function(_0x3b454c){return _0x3b454c;});}return null;};}function removeEntity(_0x9e06dd,_0x541a5c){return function(_0x366c5a){if(_0x366c5a){return _0x366c5a[_0x6468('0x24')]()[_0x6468('0x23')](function(){var _0x461e2b=_0x366c5a['get']({'plain':!![]});var _0x24041d='ODBC';return db['UserProfileResource'][_0x6468('0x24')]({'where':{'type':_0x24041d,'resourceId':_0x461e2b['id']}})[_0x6468('0x23')](function(){return _0x366c5a;});})[_0x6468('0x23')](function(){_0x9e06dd[_0x6468('0x19')](0xcc)[_0x6468('0x25')]();});}};}function handleEntityNotFound(_0x5dd663,_0x265e48){return function(_0x3bfde0){if(!_0x3bfde0){_0x5dd663[_0x6468('0x18')](0x194);}return _0x3bfde0;};}function handleError(_0x2653a5,_0x4a0fa8){_0x4a0fa8=_0x4a0fa8||0x1f4;return function(_0x11926c){logger['error'](_0x11926c['stack']);if(_0x11926c[_0x6468('0x26')]){delete _0x11926c[_0x6468('0x26')];}_0x2653a5[_0x6468('0x19')](_0x4a0fa8)[_0x6468('0x27')](_0x11926c);};}exports[_0x6468('0x28')]=function(_0x5c1aea,_0x4bf886){var _0x4d70a5={},_0x5d1c5e={},_0x276578={'count':0x0,'rows':[]};var _0x35dace=_[_0x6468('0x29')](db[_0x6468('0x2a')][_0x6468('0x2b')],function(_0x1c576c){return{'name':_0x1c576c[_0x6468('0x2c')],'type':_0x1c576c[_0x6468('0x2d')][_0x6468('0x2e')]};});_0x5d1c5e[_0x6468('0x2f')]=_['map'](_0x35dace,_0x6468('0x26'));_0x5d1c5e[_0x6468('0x30')]=_['keys'](_0x5c1aea[_0x6468('0x30')]);_0x5d1c5e['filters']=_[_0x6468('0x31')](_0x5d1c5e[_0x6468('0x2f')],_0x5d1c5e[_0x6468('0x30')]);_0x4d70a5['attributes']=_[_0x6468('0x31')](_0x5d1c5e[_0x6468('0x2f')],qs['fields'](_0x5c1aea['query'][_0x6468('0x32')]));_0x4d70a5[_0x6468('0x33')]=_0x4d70a5[_0x6468('0x33')][_0x6468('0x34')]?_0x4d70a5[_0x6468('0x33')]:_0x5d1c5e[_0x6468('0x2f')];if(!_0x5c1aea[_0x6468('0x30')][_0x6468('0x35')](_0x6468('0x36'))){_0x4d70a5[_0x6468('0x1d')]=qs[_0x6468('0x1d')](_0x5c1aea['query'][_0x6468('0x1d')]);_0x4d70a5[_0x6468('0x1b')]=qs['offset'](_0x5c1aea[_0x6468('0x30')][_0x6468('0x1b')]);}_0x4d70a5[_0x6468('0x37')]=qs['sort'](_0x5c1aea['query'][_0x6468('0x38')]);_0x4d70a5[_0x6468('0x39')]=qs['filters'](_[_0x6468('0x3a')](_0x5c1aea[_0x6468('0x30')],_0x5d1c5e['filters']),_0x35dace);if(_0x5c1aea[_0x6468('0x30')][_0x6468('0x3b')]){_0x4d70a5['where']=_[_0x6468('0x3c')](_0x4d70a5['where'],{'$or':_[_0x6468('0x29')](_0x35dace,function(_0x3d3b9e){if(_0x3d3b9e['type']!=='VIRTUAL'){var _0x5deee2={};_0x5deee2[_0x3d3b9e[_0x6468('0x26')]]={'$like':'%'+_0x5c1aea['query'][_0x6468('0x3b')]+'%'};return _0x5deee2;}})});}_0x4d70a5=_[_0x6468('0x3c')]({},_0x4d70a5,_0x5c1aea['options']);var _0x272aec={'where':_0x4d70a5[_0x6468('0x39')]};return db['SquareOdbc']['count'](_0x272aec)[_0x6468('0x23')](function(_0x28c0e1){_0x276578['count']=_0x28c0e1;if(_0x5c1aea['query'][_0x6468('0x3d')]){_0x4d70a5[_0x6468('0x3e')]=[{'all':!![]}];}return db[_0x6468('0x2a')][_0x6468('0x3f')](_0x4d70a5);})['then'](function(_0x3edc62){_0x276578[_0x6468('0x40')]=_0x3edc62;return _0x276578;})[_0x6468('0x23')](respondWithFilteredResult(_0x4bf886,_0x4d70a5))[_0x6468('0x41')](handleError(_0x4bf886,null));};exports[_0x6468('0x42')]=function(_0x4419de,_0x2e588d){var _0x540edb={'raw':!![],'where':{'id':_0x4419de['params']['id']}},_0x58b0c7={};_0x58b0c7[_0x6468('0x2f')]=_[_0x6468('0x43')](db[_0x6468('0x2a')][_0x6468('0x2b')]);_0x58b0c7[_0x6468('0x30')]=_[_0x6468('0x43')](_0x4419de[_0x6468('0x30')]);_0x58b0c7[_0x6468('0x44')]=_[_0x6468('0x31')](_0x58b0c7[_0x6468('0x2f')],_0x58b0c7[_0x6468('0x30')]);_0x540edb[_0x6468('0x33')]=_['intersection'](_0x58b0c7['model'],qs[_0x6468('0x32')](_0x4419de['query'][_0x6468('0x32')]));_0x540edb[_0x6468('0x33')]=_0x540edb[_0x6468('0x33')][_0x6468('0x34')]?_0x540edb['attributes']:_0x58b0c7[_0x6468('0x2f')];if(_0x4419de[_0x6468('0x30')]['includeAll']){_0x540edb['include']=[{'all':!![]}];}_0x540edb=_[_0x6468('0x3c')]({},_0x540edb,_0x4419de['options']);return db[_0x6468('0x2a')][_0x6468('0x45')](_0x540edb)['then'](handleEntityNotFound(_0x2e588d,null))[_0x6468('0x23')](respondWithResult(_0x2e588d,null))[_0x6468('0x41')](handleError(_0x2e588d,null));};exports['create']=function(_0x193a98,_0x29f47a){return db[_0x6468('0x2a')][_0x6468('0x46')](_0x193a98['body'],{})[_0x6468('0x23')](function(_0x1d85c1){var _0x2f86d2=_0x193a98[_0x6468('0x47')][_0x6468('0x48')]({'plain':!![]});if(!_0x2f86d2)throw new Error(_0x6468('0x49'));if(_0x2f86d2[_0x6468('0x4a')]===_0x6468('0x47')){var _0x350f0b=_0x1d85c1[_0x6468('0x48')]({'plain':!![]});var _0x5ddf9c='ODBC';return db[_0x6468('0x4b')][_0x6468('0x45')]({'where':{'name':_0x5ddf9c,'userProfileId':_0x2f86d2[_0x6468('0x4c')]},'raw':!![]})[_0x6468('0x23')](function(_0x37ab2b){if(_0x37ab2b&&_0x37ab2b['autoAssociation']===0x0){return db[_0x6468('0x4d')][_0x6468('0x46')]({'name':_0x350f0b[_0x6468('0x26')],'resourceId':_0x350f0b['id'],'type':_0x37ab2b[_0x6468('0x26')],'sectionId':_0x37ab2b['id']},{})['then'](function(){return _0x1d85c1;});}else{return _0x1d85c1;}})[_0x6468('0x41')](function(_0x22064d){logger['error'](_0x6468('0x4e'),_0x22064d);throw _0x22064d;});}return _0x1d85c1;})[_0x6468('0x23')](respondWithResult(_0x29f47a,0xc9))[_0x6468('0x41')](handleError(_0x29f47a,null));};exports[_0x6468('0x4f')]=function(_0x129bd9,_0x16fb80){if(_0x129bd9[_0x6468('0x50')]['id']){delete _0x129bd9[_0x6468('0x50')]['id'];}return db[_0x6468('0x2a')][_0x6468('0x45')]({'where':{'id':_0x129bd9[_0x6468('0x51')]['id']}})[_0x6468('0x23')](handleEntityNotFound(_0x16fb80,null))['then'](saveUpdates(_0x129bd9[_0x6468('0x50')],null))[_0x6468('0x23')](respondWithResult(_0x16fb80,null))[_0x6468('0x41')](handleError(_0x16fb80,null));};exports[_0x6468('0x24')]=function(_0x4c4072,_0x197b70){return db[_0x6468('0x2a')][_0x6468('0x45')]({'where':{'id':_0x4c4072['params']['id']}})['then'](handleEntityNotFound(_0x197b70,null))[_0x6468('0x23')](removeEntity(_0x197b70,null))[_0x6468('0x41')](handleError(_0x197b70,null));};exports[_0x6468('0x52')]=function(_0x159c26,_0x3ffd13,_0x34699a){var _0x114277;return db[_0x6468('0x2a')][_0x6468('0x45')]({'where':{'id':_0x159c26['params']['id']},'attributes':['id',_0x6468('0x53')]})[_0x6468('0x23')](handleEntityNotFound(_0x3ffd13,null))[_0x6468('0x23')](function(_0x23a838){if(_0x23a838){var _0x1503de=require(_0x6468('0x54'))();_0x1503de[_0x6468('0x55')](_0x23a838['dsn']);_0x1503de[_0x6468('0x56')]();return _0x23a838;}})[_0x6468('0x23')](respondWithResult(_0x3ffd13,null))[_0x6468('0x41')](handleError(_0x3ffd13,null));};
\ No newline at end of file
+var _0xebb2=['Content-Range','apply','reject','save','update','destroy','then','get','ODBC','UserProfileResource','error','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','model','query','keys','attributes','fields','hasOwnProperty','sort','where','filters','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','intersection','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','params','test','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x55206c,_0x500d88){var _0x1fc57=function(_0x3cbf53){while(--_0x3cbf53){_0x55206c['push'](_0x55206c['shift']());}};_0x1fc57(++_0x500d88);}(_0xebb2,0x12a));var _0x2ebb=function(_0x15f7e2,_0x126218){_0x15f7e2=_0x15f7e2-0x0;var _0x114665=_0xebb2[_0x15f7e2];return _0x114665;};'use strict';var emlformat=require(_0x2ebb('0x0'));var rimraf=require(_0x2ebb('0x1'));var zipdir=require(_0x2ebb('0x2'));var jsonpatch=require(_0x2ebb('0x3'));var rp=require('request-promise');var moment=require(_0x2ebb('0x4'));var BPromise=require(_0x2ebb('0x5'));var Mustache=require('mustache');var util=require(_0x2ebb('0x6'));var path=require(_0x2ebb('0x7'));var sox=require(_0x2ebb('0x8'));var csv=require('to-csv');var ejs=require(_0x2ebb('0x9'));var fs=require('fs');var fs_extra=require(_0x2ebb('0xa'));var _=require(_0x2ebb('0xb'));var squel=require(_0x2ebb('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2ebb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2ebb('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2ebb('0xf'));var qs=require(_0x2ebb('0x10'));var as=require(_0x2ebb('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2ebb('0x12'));var utils=require(_0x2ebb('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2ebb('0x14'))['db'];function respondWithStatusCode(_0x274658,_0x47f44f){_0x47f44f=_0x47f44f||0xcc;return function(_0x35c047){if(_0x35c047){return _0x274658[_0x2ebb('0x15')](_0x47f44f);}return _0x274658[_0x2ebb('0x16')](_0x47f44f)[_0x2ebb('0x17')]();};}function respondWithResult(_0x562841,_0x518c18){_0x518c18=_0x518c18||0xc8;return function(_0x571907){if(_0x571907){return _0x562841[_0x2ebb('0x16')](_0x518c18)[_0x2ebb('0x18')](_0x571907);}};}function respondWithFilteredResult(_0x5537af,_0x5c9117){return function(_0x7466d){if(_0x7466d){var _0x4a85fb=typeof _0x5c9117[_0x2ebb('0x19')]===_0x2ebb('0x1a')&&typeof _0x5c9117[_0x2ebb('0x1b')]===_0x2ebb('0x1a');var _0x19292b=_0x7466d[_0x2ebb('0x1c')];var _0x58f220=_0x4a85fb?0x0:_0x5c9117['offset'];var _0x3795f1=_0x4a85fb?_0x7466d[_0x2ebb('0x1c')]:_0x5c9117[_0x2ebb('0x19')]+_0x5c9117[_0x2ebb('0x1b')];var _0x557c98;if(_0x3795f1>=_0x19292b){_0x3795f1=_0x19292b;_0x557c98=0xc8;}else{_0x557c98=0xce;}_0x5537af[_0x2ebb('0x16')](_0x557c98);return _0x5537af[_0x2ebb('0x1d')](_0x2ebb('0x1e'),_0x58f220+'-'+_0x3795f1+'/'+_0x19292b)[_0x2ebb('0x18')](_0x7466d);}return null;};}function patchUpdates(_0x5cf10e){return function(_0x4721ca){try{jsonpatch[_0x2ebb('0x1f')](_0x4721ca,_0x5cf10e,!![]);}catch(_0x2cd65c){return BPromise[_0x2ebb('0x20')](_0x2cd65c);}return _0x4721ca[_0x2ebb('0x21')]();};}function saveUpdates(_0x4bdd2e,_0x4128ec){return function(_0x1bf6e){if(_0x1bf6e){return _0x1bf6e[_0x2ebb('0x22')](_0x4bdd2e)['then'](function(_0xa842e7){return _0xa842e7;});}return null;};}function removeEntity(_0x297031,_0x110f15){return function(_0x4d8e37){if(_0x4d8e37){return _0x4d8e37[_0x2ebb('0x23')]()[_0x2ebb('0x24')](function(){var _0x515d19=_0x4d8e37[_0x2ebb('0x25')]({'plain':!![]});var _0x5341fe=_0x2ebb('0x26');return db[_0x2ebb('0x27')][_0x2ebb('0x23')]({'where':{'type':_0x5341fe,'resourceId':_0x515d19['id']}})[_0x2ebb('0x24')](function(){return _0x4d8e37;});})[_0x2ebb('0x24')](function(){_0x297031[_0x2ebb('0x16')](0xcc)[_0x2ebb('0x17')]();});}};}function handleEntityNotFound(_0x2e5416,_0x4b1efc){return function(_0x4f5926){if(!_0x4f5926){_0x2e5416['sendStatus'](0x194);}return _0x4f5926;};}function handleError(_0xfa2a01,_0x3b86f1){_0x3b86f1=_0x3b86f1||0x1f4;return function(_0x4167b4){logger[_0x2ebb('0x28')](_0x4167b4[_0x2ebb('0x29')]);if(_0x4167b4[_0x2ebb('0x2a')]){delete _0x4167b4[_0x2ebb('0x2a')];}_0xfa2a01['status'](_0x3b86f1)[_0x2ebb('0x2b')](_0x4167b4);};}exports[_0x2ebb('0x2c')]=function(_0x315c2b,_0x59a990){var _0x1b2646={},_0x255c61={},_0x527bf6={'count':0x0,'rows':[]};var _0x293275=_[_0x2ebb('0x2d')](db[_0x2ebb('0x2e')][_0x2ebb('0x2f')],function(_0x2a9f7e){return{'name':_0x2a9f7e[_0x2ebb('0x30')],'type':_0x2a9f7e[_0x2ebb('0x31')]['key']};});_0x255c61[_0x2ebb('0x32')]=_[_0x2ebb('0x2d')](_0x293275,_0x2ebb('0x2a'));_0x255c61[_0x2ebb('0x33')]=_[_0x2ebb('0x34')](_0x315c2b[_0x2ebb('0x33')]);_0x255c61['filters']=_['intersection'](_0x255c61[_0x2ebb('0x32')],_0x255c61[_0x2ebb('0x33')]);_0x1b2646[_0x2ebb('0x35')]=_['intersection'](_0x255c61['model'],qs[_0x2ebb('0x36')](_0x315c2b['query'][_0x2ebb('0x36')]));_0x1b2646[_0x2ebb('0x35')]=_0x1b2646[_0x2ebb('0x35')]['length']?_0x1b2646[_0x2ebb('0x35')]:_0x255c61['model'];if(!_0x315c2b[_0x2ebb('0x33')][_0x2ebb('0x37')]('nolimit')){_0x1b2646[_0x2ebb('0x1b')]=qs[_0x2ebb('0x1b')](_0x315c2b[_0x2ebb('0x33')][_0x2ebb('0x1b')]);_0x1b2646[_0x2ebb('0x19')]=qs[_0x2ebb('0x19')](_0x315c2b['query'][_0x2ebb('0x19')]);}_0x1b2646['order']=qs['sort'](_0x315c2b[_0x2ebb('0x33')][_0x2ebb('0x38')]);_0x1b2646[_0x2ebb('0x39')]=qs[_0x2ebb('0x3a')](_[_0x2ebb('0x3b')](_0x315c2b[_0x2ebb('0x33')],_0x255c61[_0x2ebb('0x3a')]),_0x293275);if(_0x315c2b[_0x2ebb('0x33')]['filter']){_0x1b2646[_0x2ebb('0x39')]=_[_0x2ebb('0x3c')](_0x1b2646[_0x2ebb('0x39')],{'$or':_[_0x2ebb('0x2d')](_0x293275,function(_0x13a193){if(_0x13a193[_0x2ebb('0x31')]!=='VIRTUAL'){var _0x4f6ed6={};_0x4f6ed6[_0x13a193[_0x2ebb('0x2a')]]={'$like':'%'+_0x315c2b[_0x2ebb('0x33')][_0x2ebb('0x3d')]+'%'};return _0x4f6ed6;}})});}_0x1b2646=_[_0x2ebb('0x3c')]({},_0x1b2646,_0x315c2b[_0x2ebb('0x3e')]);var _0x56efa0={'where':_0x1b2646[_0x2ebb('0x39')]};return db[_0x2ebb('0x2e')][_0x2ebb('0x1c')](_0x56efa0)[_0x2ebb('0x24')](function(_0x400697){_0x527bf6[_0x2ebb('0x1c')]=_0x400697;if(_0x315c2b[_0x2ebb('0x33')][_0x2ebb('0x3f')]){_0x1b2646[_0x2ebb('0x40')]=[{'all':!![]}];}return db['SquareOdbc'][_0x2ebb('0x41')](_0x1b2646);})['then'](function(_0x580e1c){_0x527bf6[_0x2ebb('0x42')]=_0x580e1c;return _0x527bf6;})[_0x2ebb('0x24')](respondWithFilteredResult(_0x59a990,_0x1b2646))[_0x2ebb('0x43')](handleError(_0x59a990,null));};exports[_0x2ebb('0x44')]=function(_0x1a0da7,_0x5543b8){var _0x3e5bff={'raw':!![],'where':{'id':_0x1a0da7['params']['id']}},_0x314f95={};_0x314f95[_0x2ebb('0x32')]=_[_0x2ebb('0x34')](db[_0x2ebb('0x2e')]['rawAttributes']);_0x314f95['query']=_['keys'](_0x1a0da7[_0x2ebb('0x33')]);_0x314f95[_0x2ebb('0x3a')]=_[_0x2ebb('0x45')](_0x314f95[_0x2ebb('0x32')],_0x314f95[_0x2ebb('0x33')]);_0x3e5bff[_0x2ebb('0x35')]=_['intersection'](_0x314f95[_0x2ebb('0x32')],qs['fields'](_0x1a0da7[_0x2ebb('0x33')]['fields']));_0x3e5bff[_0x2ebb('0x35')]=_0x3e5bff[_0x2ebb('0x35')][_0x2ebb('0x46')]?_0x3e5bff[_0x2ebb('0x35')]:_0x314f95[_0x2ebb('0x32')];if(_0x1a0da7[_0x2ebb('0x33')][_0x2ebb('0x3f')]){_0x3e5bff[_0x2ebb('0x40')]=[{'all':!![]}];}_0x3e5bff=_[_0x2ebb('0x3c')]({},_0x3e5bff,_0x1a0da7[_0x2ebb('0x3e')]);return db['SquareOdbc'][_0x2ebb('0x47')](_0x3e5bff)[_0x2ebb('0x24')](handleEntityNotFound(_0x5543b8,null))[_0x2ebb('0x24')](respondWithResult(_0x5543b8,null))[_0x2ebb('0x43')](handleError(_0x5543b8,null));};exports[_0x2ebb('0x48')]=function(_0x53bb9d,_0x388629){return db[_0x2ebb('0x2e')][_0x2ebb('0x48')](_0x53bb9d[_0x2ebb('0x49')],{})[_0x2ebb('0x24')](function(_0x4f2022){var _0x17c4cb=_0x53bb9d[_0x2ebb('0x4a')][_0x2ebb('0x25')]({'plain':!![]});if(!_0x17c4cb)throw new Error(_0x2ebb('0x4b'));if(_0x17c4cb[_0x2ebb('0x4c')]===_0x2ebb('0x4a')){var _0x493344=_0x4f2022['get']({'plain':!![]});var _0x52961e=_0x2ebb('0x26');return db['UserProfileSection'][_0x2ebb('0x47')]({'where':{'name':_0x52961e,'userProfileId':_0x17c4cb[_0x2ebb('0x4d')]},'raw':!![]})[_0x2ebb('0x24')](function(_0x809861){if(_0x809861&&_0x809861['autoAssociation']===0x0){return db['UserProfileResource'][_0x2ebb('0x48')]({'name':_0x493344[_0x2ebb('0x2a')],'resourceId':_0x493344['id'],'type':_0x809861[_0x2ebb('0x2a')],'sectionId':_0x809861['id']},{})[_0x2ebb('0x24')](function(){return _0x4f2022;});}else{return _0x4f2022;}})[_0x2ebb('0x43')](function(_0x1a05b6){logger[_0x2ebb('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a05b6);throw _0x1a05b6;});}return _0x4f2022;})['then'](respondWithResult(_0x388629,0xc9))[_0x2ebb('0x43')](handleError(_0x388629,null));};exports[_0x2ebb('0x22')]=function(_0x21635d,_0x210789){if(_0x21635d[_0x2ebb('0x49')]['id']){delete _0x21635d[_0x2ebb('0x49')]['id'];}return db['SquareOdbc'][_0x2ebb('0x47')]({'where':{'id':_0x21635d[_0x2ebb('0x4e')]['id']}})[_0x2ebb('0x24')](handleEntityNotFound(_0x210789,null))['then'](saveUpdates(_0x21635d[_0x2ebb('0x49')],null))['then'](respondWithResult(_0x210789,null))[_0x2ebb('0x43')](handleError(_0x210789,null));};exports[_0x2ebb('0x23')]=function(_0x2f7559,_0x1675db){return db['SquareOdbc']['find']({'where':{'id':_0x2f7559['params']['id']}})[_0x2ebb('0x24')](handleEntityNotFound(_0x1675db,null))[_0x2ebb('0x24')](removeEntity(_0x1675db,null))[_0x2ebb('0x43')](handleError(_0x1675db,null));};exports[_0x2ebb('0x4f')]=function(_0x410d18,_0x5ca1a4,_0x48d5c1){var _0xc8d60a;return db['SquareOdbc']['find']({'where':{'id':_0x410d18[_0x2ebb('0x4e')]['id']},'attributes':['id','dsn']})[_0x2ebb('0x24')](handleEntityNotFound(_0x5ca1a4,null))[_0x2ebb('0x24')](function(_0x2ef94c){if(_0x2ef94c){var _0x34f8a7=require('odbc')();_0x34f8a7[_0x2ebb('0x50')](_0x2ef94c['dsn']);_0x34f8a7[_0x2ebb('0x51')]();return _0x2ef94c;}})['then'](respondWithResult(_0x5ca1a4,null))[_0x2ebb('0x43')](handleError(_0x5ca1a4,null));};
\ No newline at end of file
index ca6c52f..2a362f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf129=['../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x396284,_0x214988){var _0x36acf3=function(_0x391d0e){while(--_0x391d0e){_0x396284['push'](_0x396284['shift']());}};_0x36acf3(++_0x214988);}(_0xf129,0x156));var _0x9f12=function(_0x46fa97,_0x5daeed){_0x46fa97=_0x46fa97-0x0;var _0x1f89eb=_0xf129[_0x46fa97];return _0x1f89eb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9f12('0x0'))(_0x9f12('0x1'));var moment=require(_0x9f12('0x2'));var BPromise=require('bluebird');var rp=require(_0x9f12('0x3'));var fs=require('fs');var path=require(_0x9f12('0x4'));var rimraf=require(_0x9f12('0x5'));var config=require(_0x9f12('0x6'));var attributes=require(_0x9f12('0x7'));module[_0x9f12('0x8')]=function(_0x1331ee,_0x42630c){return _0x1331ee[_0x9f12('0x9')](_0x9f12('0xa'),attributes,{'tableName':_0x9f12('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4075=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x4075,0xcc));var _0x5407=function(_0x26f702,_0x3919bf){_0x26f702=_0x26f702-0x0;var _0x11417d=_0x4075[_0x26f702];return _0x11417d;};'use strict';var _=require(_0x5407('0x0'));var util=require(_0x5407('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x5407('0x2'));var BPromise=require(_0x5407('0x3'));var rp=require(_0x5407('0x4'));var fs=require('fs');var path=require(_0x5407('0x5'));var rimraf=require(_0x5407('0x6'));var config=require(_0x5407('0x7'));var attributes=require(_0x5407('0x8'));module[_0x5407('0x9')]=function(_0x3e1968,_0x4e7115){return _0x3e1968[_0x5407('0xa')](_0x5407('0xb'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63263b5..6e9ef46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf20a=['then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','map','model','attributes','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x5ee287,_0x49b6a1){var _0x2a1adf=function(_0x4df52e){while(--_0x4df52e){_0x5ee287['push'](_0x5ee287['shift']());}};_0x2a1adf(++_0x49b6a1);}(_0xf20a,0xc1));var _0xaf20=function(_0x1433c5,_0x54f65d){_0x1433c5=_0x1433c5-0x0;var _0x36281e=_0xf20a[_0x1433c5];return _0x36281e;};'use strict';var _=require(_0xaf20('0x0'));var util=require(_0xaf20('0x1'));var moment=require(_0xaf20('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaf20('0x3'));var db=require(_0xaf20('0x4'))['db'];var utils=require(_0xaf20('0x5'));var logger=require(_0xaf20('0x6'))('rpc');var config=require(_0xaf20('0x7'));var jayson=require(_0xaf20('0x8'));var client=jayson[_0xaf20('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c24e2,_0x181afa,_0x4bac15){return new BPromise(function(_0x416721,_0x117fa7){return client['request'](_0x4c24e2,_0x4bac15)[_0xaf20('0xa')](function(_0x5726b5){logger[_0xaf20('0xb')](_0xaf20('0xc'),_0x181afa,_0xaf20('0xd'));logger[_0xaf20('0xe')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x181afa,_0xaf20('0xd'),JSON[_0xaf20('0xf')](_0x5726b5));if(_0x5726b5[_0xaf20('0x10')]){if(_0x5726b5['error']['code']===0x1f4){logger[_0xaf20('0x10')](_0xaf20('0xc'),_0x181afa,_0x5726b5[_0xaf20('0x10')][_0xaf20('0x11')]);return _0x117fa7(_0x5726b5[_0xaf20('0x10')][_0xaf20('0x11')]);}logger[_0xaf20('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x181afa,_0x5726b5['error'][_0xaf20('0x11')]);return _0x416721(_0x5726b5[_0xaf20('0x10')][_0xaf20('0x11')]);}else{logger['info'](_0xaf20('0xc'),_0x181afa,_0xaf20('0xd'));_0x416721(_0x5726b5['result']['message']);}})['catch'](function(_0x502270){logger[_0xaf20('0x10')](_0xaf20('0xc'),_0x181afa,_0x502270);_0x117fa7(_0x502270);});});}exports[_0xaf20('0x12')]=function(_0x32f543){var _0x587aa4=this;return new Promise(function(_0x125cbf,_0xd75e4c){return db[_0xaf20('0x13')][_0xaf20('0x14')]({'raw':_0x32f543[_0xaf20('0x15')]?_0x32f543[_0xaf20('0x15')][_0xaf20('0x16')]===undefined?!![]:![]:!![],'where':_0x32f543['options']?_0x32f543[_0xaf20('0x15')][_0xaf20('0x17')]||null:null,'attributes':_0x32f543[_0xaf20('0x15')]?_0x32f543[_0xaf20('0x15')]['attributes']||null:null,'include':_0x32f543[_0xaf20('0x15')]?_0x32f543['options'][_0xaf20('0x18')]?_[_0xaf20('0x19')](_0x32f543['options'][_0xaf20('0x18')],function(_0x49dbb0){return{'model':db[_0x49dbb0[_0xaf20('0x1a')]],'as':_0x49dbb0['as'],'attributes':_0x49dbb0[_0xaf20('0x1b')],'include':_0x49dbb0[_0xaf20('0x18')]?_[_0xaf20('0x19')](_0x49dbb0[_0xaf20('0x18')],function(_0x43b7c6){return{'model':db[_0x43b7c6[_0xaf20('0x1a')]],'as':_0x43b7c6['as'],'attributes':_0x43b7c6['attributes'],'include':_0x43b7c6['include']?_[_0xaf20('0x19')](_0x43b7c6['include'],function(_0x1270bf){return{'model':db[_0x1270bf['model']],'as':_0x1270bf['as'],'attributes':_0x1270bf[_0xaf20('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xaf20('0xa')](function(_0x2ef6ec){logger['info'](_0xaf20('0x12'),_0x32f543);logger['debug'](_0xaf20('0x12'),_0x32f543,JSON[_0xaf20('0xf')](_0x2ef6ec));_0x125cbf(_0x2ef6ec);})[_0xaf20('0x1c')](function(_0x3fab06){logger['error'](_0xaf20('0x12'),_0x3fab06['message'],_0x32f543);_0xd75e4c(_0x587aa4['error'](0x1f4,_0x3fab06[_0xaf20('0x11')]));});});};
\ No newline at end of file
+var _0xe5d1=['message','result','catch','SquareOdbc','find','options','where','include','map','model','attributes','ShowSquareOdbc','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s'];(function(_0x2c48cd,_0x1722bc){var _0x4764a5=function(_0x45c796){while(--_0x45c796){_0x2c48cd['push'](_0x2c48cd['shift']());}};_0x4764a5(++_0x1722bc);}(_0xe5d1,0x115));var _0x1e5d=function(_0x49b984,_0x387c83){_0x49b984=_0x49b984-0x0;var _0x49d1e0=_0xe5d1[_0x49b984];return _0x49d1e0;};'use strict';var _=require(_0x1e5d('0x0'));var util=require(_0x1e5d('0x1'));var moment=require('moment');var BPromise=require(_0x1e5d('0x2'));var rs=require(_0x1e5d('0x3'));var fs=require('fs');var Redis=require(_0x1e5d('0x4'));var db=require(_0x1e5d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1e5d('0x6'))(_0x1e5d('0x7'));var config=require(_0x1e5d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1e5d('0x9')][_0x1e5d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cf98a,_0x4528f5,_0x2f70b3){return new BPromise(function(_0x184d54,_0x5da5f3){return client[_0x1e5d('0xb')](_0x5cf98a,_0x2f70b3)[_0x1e5d('0xc')](function(_0x1e9a44){logger[_0x1e5d('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x4528f5,_0x1e5d('0xe'));logger['debug'](_0x1e5d('0xf'),_0x4528f5,_0x1e5d('0xe'),JSON[_0x1e5d('0x10')](_0x1e9a44));if(_0x1e9a44[_0x1e5d('0x11')]){if(_0x1e9a44['error'][_0x1e5d('0x12')]===0x1f4){logger[_0x1e5d('0x11')](_0x1e5d('0x13'),_0x4528f5,_0x1e9a44[_0x1e5d('0x11')]['message']);return _0x5da5f3(_0x1e9a44[_0x1e5d('0x11')][_0x1e5d('0x14')]);}logger[_0x1e5d('0x11')](_0x1e5d('0x13'),_0x4528f5,_0x1e9a44[_0x1e5d('0x11')]['message']);return _0x184d54(_0x1e9a44[_0x1e5d('0x11')][_0x1e5d('0x14')]);}else{logger[_0x1e5d('0xd')](_0x1e5d('0x13'),_0x4528f5,'request\x20sent');_0x184d54(_0x1e9a44[_0x1e5d('0x15')][_0x1e5d('0x14')]);}})[_0x1e5d('0x16')](function(_0x27b966){logger['error'](_0x1e5d('0x13'),_0x4528f5,_0x27b966);_0x5da5f3(_0x27b966);});});}exports['ShowSquareOdbc']=function(_0x5927ac){var _0x1625d3=this;return new Promise(function(_0x3e1956,_0xd573ee){return db[_0x1e5d('0x17')][_0x1e5d('0x18')]({'raw':_0x5927ac[_0x1e5d('0x19')]?_0x5927ac['options']['raw']===undefined?!![]:![]:!![],'where':_0x5927ac[_0x1e5d('0x19')]?_0x5927ac[_0x1e5d('0x19')][_0x1e5d('0x1a')]||null:null,'attributes':_0x5927ac[_0x1e5d('0x19')]?_0x5927ac[_0x1e5d('0x19')]['attributes']||null:null,'include':_0x5927ac[_0x1e5d('0x19')]?_0x5927ac[_0x1e5d('0x19')][_0x1e5d('0x1b')]?_[_0x1e5d('0x1c')](_0x5927ac[_0x1e5d('0x19')][_0x1e5d('0x1b')],function(_0x3aa16a){return{'model':db[_0x3aa16a[_0x1e5d('0x1d')]],'as':_0x3aa16a['as'],'attributes':_0x3aa16a[_0x1e5d('0x1e')],'include':_0x3aa16a[_0x1e5d('0x1b')]?_[_0x1e5d('0x1c')](_0x3aa16a['include'],function(_0xc8d9a0){return{'model':db[_0xc8d9a0[_0x1e5d('0x1d')]],'as':_0xc8d9a0['as'],'attributes':_0xc8d9a0[_0x1e5d('0x1e')],'include':_0xc8d9a0['include']?_[_0x1e5d('0x1c')](_0xc8d9a0[_0x1e5d('0x1b')],function(_0x5b1077){return{'model':db[_0x5b1077[_0x1e5d('0x1d')]],'as':_0x5b1077['as'],'attributes':_0x5b1077[_0x1e5d('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x56c9f7){logger['info'](_0x1e5d('0x1f'),_0x5927ac);logger[_0x1e5d('0x20')](_0x1e5d('0x1f'),_0x5927ac,JSON[_0x1e5d('0x10')](_0x56c9f7));_0x3e1956(_0x56c9f7);})[_0x1e5d('0x16')](function(_0x284013){logger[_0x1e5d('0x11')](_0x1e5d('0x1f'),_0x284013['message'],_0x5927ac);_0xd573ee(_0x1625d3[_0x1e5d('0x11')](0x1f4,_0x284013['message']));});});};
\ No newline at end of file
index 8c35d16..98ff3af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','/:id/users','getUsers','post','addUsers','put','update','delete','destroy','removeUsers','exports','multer','util','path','connect-timeout'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x1c7c,0x164));var _0xc1c7=function(_0x26574a,_0x306c12){_0x26574a=_0x26574a-0x0;var _0x2bbf32=_0x1c7c[_0x26574a];return _0x2bbf32;};'use strict';var multer=require(_0xc1c7('0x0'));var util=require(_0xc1c7('0x1'));var path=require(_0xc1c7('0x2'));var timeout=require(_0xc1c7('0x3'));var express=require('express');var router=express[_0xc1c7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc1c7('0x5'));var interaction=require(_0xc1c7('0x6'));var config=require(_0xc1c7('0x7'));var controller=require(_0xc1c7('0x8'));router[_0xc1c7('0x9')]('/',auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xb')]);router[_0xc1c7('0x9')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xd')]);router[_0xc1c7('0x9')](_0xc1c7('0xe'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xf')]);router[_0xc1c7('0x10')]('/',auth[_0xc1c7('0xa')](),controller['create']);router[_0xc1c7('0x10')](_0xc1c7('0xe'),auth['isAuthenticated'](),controller[_0xc1c7('0x11')]);router[_0xc1c7('0x12')](_0xc1c7('0xc'),auth['isAuthenticated'](),controller[_0xc1c7('0x13')]);router[_0xc1c7('0x14')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0x15')]);router[_0xc1c7('0x14')](_0xc1c7('0xe'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0x16')]);module[_0xc1c7('0x17')]=router;
\ No newline at end of file
+var _0xaf60=['/:id','update','destroy','removeUsers','multer','util','path','Router','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','show','/:id/users','getUsers','post'];(function(_0x541a0d,_0x461415){var _0x16ad70=function(_0x524fa4){while(--_0x524fa4){_0x541a0d['push'](_0x541a0d['shift']());}};_0x16ad70(++_0x461415);}(_0xaf60,0x82));var _0x0af6=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xaf60[_0x4ea69d];return _0x5318e0;};'use strict';var multer=require(_0x0af6('0x0'));var util=require(_0x0af6('0x1'));var path=require(_0x0af6('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0af6('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0af6('0x4'));var config=require(_0x0af6('0x5'));var controller=require(_0x0af6('0x6'));router[_0x0af6('0x7')]('/',auth[_0x0af6('0x8')](),controller[_0x0af6('0x9')]);router[_0x0af6('0x7')]('/:id',auth[_0x0af6('0x8')](),controller[_0x0af6('0xa')]);router['get'](_0x0af6('0xb'),auth[_0x0af6('0x8')](),controller[_0x0af6('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0af6('0xd')]('/:id/users',auth[_0x0af6('0x8')](),controller['addUsers']);router['put'](_0x0af6('0xe'),auth[_0x0af6('0x8')](),controller[_0x0af6('0xf')]);router['delete'](_0x0af6('0xe'),auth[_0x0af6('0x8')](),controller[_0x0af6('0x10')]);router['delete'](_0x0af6('0xb'),auth['isAuthenticated'](),controller[_0x0af6('0x11')]);module['exports']=router;
\ No newline at end of file
index c7ef5b9..ee012f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf77e=['BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','name','STRING','TEXT'];(function(_0x3756ca,_0x35714b){var _0x1d85aa=function(_0x52d6fc){while(--_0x52d6fc){_0x3756ca['push'](_0x3756ca['shift']());}};_0x1d85aa(++_0x35714b);}(_0xf77e,0x15a));var _0xef77=function(_0x3cf948,_0x48e130){_0x3cf948=_0x3cf948-0x0;var _0x550bca=_0xf77e[_0x3cf948];return _0x550bca;};'use strict';var Sequelize=require(_0xef77('0x0'));module[_0xef77('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xef77('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xef77('0x3')]},'notes':{'type':Sequelize[_0xef77('0x4')]},'preproduction':{'type':Sequelize[_0xef77('0x5')](_0xef77('0x6')),'get':function(){if(this[_0xef77('0x7')](_0xef77('0x8'))){return this[_0xef77('0x7')](_0xef77('0x8'))[_0xef77('0x9')](_0xef77('0xa'));}}},'production':{'type':Sequelize[_0xef77('0x5')](_0xef77('0x6')),'get':function(){if(this['getDataValue'](_0xef77('0xb'))){return this[_0xef77('0x7')](_0xef77('0xb'))[_0xef77('0x9')](_0xef77('0xa'));}}},'savedAt':{'type':Sequelize[_0xef77('0xc')]},'publishedAt':{'type':Sequelize[_0xef77('0xc')]}};
\ No newline at end of file
+var _0x59d2=['long','getDataValue','preproduction','toString','BLOB','production','DATE','exports','STRING','TEXT'];(function(_0x26fcfd,_0x1a3a3b){var _0x20ebbd=function(_0x7fdd58){while(--_0x7fdd58){_0x26fcfd['push'](_0x26fcfd['shift']());}};_0x20ebbd(++_0x1a3a3b);}(_0x59d2,0xd9));var _0x259d=function(_0x4099ee,_0x38495a){_0x4099ee=_0x4099ee-0x0;var _0x1b7bfc=_0x59d2[_0x4099ee];return _0x1b7bfc;};'use strict';var Sequelize=require('sequelize');module[_0x259d('0x0')]={'name':{'type':Sequelize[_0x259d('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x259d('0x2')]},'preproduction':{'type':Sequelize['BLOB'](_0x259d('0x3')),'get':function(){if(this[_0x259d('0x4')](_0x259d('0x5'))){return this[_0x259d('0x4')](_0x259d('0x5'))[_0x259d('0x6')]('utf8');}}},'production':{'type':Sequelize[_0x259d('0x7')](_0x259d('0x3')),'get':function(){if(this[_0x259d('0x4')](_0x259d('0x8'))){return this[_0x259d('0x4')]('production')['toString']('utf8');}}},'savedAt':{'type':Sequelize[_0x259d('0x9')]},'publishedAt':{'type':Sequelize[_0x259d('0x9')]}};
\ No newline at end of file
index 6992da2..0942527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a79=['order','sort','where','filter','options','includeAll','include','findAll','params','merge','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','userProfileId','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addUsers','omit','ids','removeUsers','isArray','length','emit','userSquareProject:remove','getUsers','findOne','User','nolimit','zip-dir','request-promise','moment','bluebird','util','path','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','redis','defaults','localhost','./squareProject.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','get','UserProfileResource','destroy','name','send','SquareProject','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty'];(function(_0x4a6a6b,_0x1909e3){var _0x3335a6=function(_0x1a944e){while(--_0x1a944e){_0x4a6a6b['push'](_0x4a6a6b['shift']());}};_0x3335a6(++_0x1909e3);}(_0x4a79,0x7b));var _0x94a7=function(_0x3b67e4,_0x2a5d46){_0x3b67e4=_0x3b67e4-0x0;var _0x21adcf=_0x4a79[_0x3b67e4];return _0x21adcf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x94a7('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x94a7('0x1'));var moment=require(_0x94a7('0x2'));var BPromise=require(_0x94a7('0x3'));var Mustache=require('mustache');var util=require(_0x94a7('0x4'));var path=require(_0x94a7('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x94a7('0x6'));var fs=require('fs');var fs_extra=require(_0x94a7('0x7'));var _=require('lodash');var squel=require(_0x94a7('0x8'));var crypto=require(_0x94a7('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x94a7('0xa'));var toCsv=require(_0x94a7('0xb'));var querystring=require(_0x94a7('0xc'));var Papa=require('papaparse');var Redis=require(_0x94a7('0xd'));var authService=require(_0x94a7('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x94a7('0xf'));var hardwareService=require(_0x94a7('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x94a7('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x94a7('0x12'));var db=require('../../mysqldb')['db'];config[_0x94a7('0x13')]=_[_0x94a7('0x14')](config['redis'],{'host':_0x94a7('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x94a7('0x16'))[_0x94a7('0x17')](socket);function respondWithStatusCode(_0x14f28b,_0x3ef06e){_0x3ef06e=_0x3ef06e||0xcc;return function(_0xf993ef){if(_0xf993ef){return _0x14f28b[_0x94a7('0x18')](_0x3ef06e);}return _0x14f28b[_0x94a7('0x19')](_0x3ef06e)[_0x94a7('0x1a')]();};}function respondWithResult(_0x48d15a,_0x307c95){_0x307c95=_0x307c95||0xc8;return function(_0x82c569){if(_0x82c569){return _0x48d15a[_0x94a7('0x19')](_0x307c95)['json'](_0x82c569);}};}function respondWithFilteredResult(_0x1390a0,_0xd5bcd0){return function(_0x1f472e){if(_0x1f472e){var _0x309b10=typeof _0xd5bcd0[_0x94a7('0x1b')]===_0x94a7('0x1c')&&typeof _0xd5bcd0[_0x94a7('0x1d')]===_0x94a7('0x1c');var _0x2faf2b=_0x1f472e[_0x94a7('0x1e')];var _0x504254=_0x309b10?0x0:_0xd5bcd0[_0x94a7('0x1b')];var _0x43ac14=_0x309b10?_0x1f472e[_0x94a7('0x1e')]:_0xd5bcd0['offset']+_0xd5bcd0[_0x94a7('0x1d')];var _0x4e3ed3;if(_0x43ac14>=_0x2faf2b){_0x43ac14=_0x2faf2b;_0x4e3ed3=0xc8;}else{_0x4e3ed3=0xce;}_0x1390a0['status'](_0x4e3ed3);return _0x1390a0[_0x94a7('0x1f')]('Content-Range',_0x504254+'-'+_0x43ac14+'/'+_0x2faf2b)[_0x94a7('0x20')](_0x1f472e);}return null;};}function patchUpdates(_0x430afa){return function(_0x575aff){try{jsonpatch[_0x94a7('0x21')](_0x575aff,_0x430afa,!![]);}catch(_0x50e823){return BPromise[_0x94a7('0x22')](_0x50e823);}return _0x575aff[_0x94a7('0x23')]();};}function saveUpdates(_0x4fb2b7,_0x57b545){return function(_0x502127){if(_0x502127){return _0x502127[_0x94a7('0x24')](_0x4fb2b7)[_0x94a7('0x25')](function(_0x4f3428){return _0x4f3428;});}return null;};}function removeEntity(_0x326db3,_0x2d0c1b){return function(_0x54db29){if(_0x54db29){return _0x54db29['destroy']()[_0x94a7('0x25')](function(){var _0x32dc90=_0x54db29[_0x94a7('0x26')]({'plain':!![]});var _0x1de354='SquareProjects';return db[_0x94a7('0x27')][_0x94a7('0x28')]({'where':{'type':_0x1de354,'resourceId':_0x32dc90['id']}})[_0x94a7('0x25')](function(){return _0x54db29;});})[_0x94a7('0x25')](function(){_0x326db3[_0x94a7('0x19')](0xcc)[_0x94a7('0x1a')]();});}};}function handleEntityNotFound(_0x434d9d,_0x2ebad0){return function(_0x10e855){if(!_0x10e855){_0x434d9d[_0x94a7('0x18')](0x194);}return _0x10e855;};}function handleError(_0x2b533d,_0x13746b){_0x13746b=_0x13746b||0x1f4;return function(_0x4307db){logger['error'](_0x4307db['stack']);if(_0x4307db[_0x94a7('0x29')]){delete _0x4307db['name'];}_0x2b533d[_0x94a7('0x19')](_0x13746b)[_0x94a7('0x2a')](_0x4307db);};}exports['index']=function(_0x358b4c,_0x1f6983){var _0x43a7ba={},_0x17ead7={},_0x299cfa={'count':0x0,'rows':[]};var _0x3ad00c=_['map'](db[_0x94a7('0x2b')][_0x94a7('0x2c')],function(_0x28c35c){return{'name':_0x28c35c[_0x94a7('0x2d')],'type':_0x28c35c[_0x94a7('0x2e')][_0x94a7('0x2f')]};});_0x17ead7[_0x94a7('0x30')]=_[_0x94a7('0x31')](_0x3ad00c,_0x94a7('0x29'));_0x17ead7[_0x94a7('0x32')]=_[_0x94a7('0x33')](_0x358b4c[_0x94a7('0x32')]);_0x17ead7[_0x94a7('0x34')]=_[_0x94a7('0x35')](_0x17ead7['model'],_0x17ead7[_0x94a7('0x32')]);_0x43a7ba['attributes']=_['intersection'](_0x17ead7[_0x94a7('0x30')],qs[_0x94a7('0x36')](_0x358b4c[_0x94a7('0x32')]['fields']));_0x43a7ba[_0x94a7('0x37')]=_0x43a7ba[_0x94a7('0x37')]['length']?_0x43a7ba[_0x94a7('0x37')]:_0x17ead7[_0x94a7('0x30')];if(!_0x358b4c[_0x94a7('0x32')][_0x94a7('0x38')]('nolimit')){_0x43a7ba['limit']=qs[_0x94a7('0x1d')](_0x358b4c[_0x94a7('0x32')][_0x94a7('0x1d')]);_0x43a7ba[_0x94a7('0x1b')]=qs[_0x94a7('0x1b')](_0x358b4c['query'][_0x94a7('0x1b')]);}_0x43a7ba[_0x94a7('0x39')]=qs['sort'](_0x358b4c[_0x94a7('0x32')][_0x94a7('0x3a')]);_0x43a7ba[_0x94a7('0x3b')]=qs[_0x94a7('0x34')](_['pick'](_0x358b4c['query'],_0x17ead7[_0x94a7('0x34')]),_0x3ad00c);if(_0x358b4c[_0x94a7('0x32')][_0x94a7('0x3c')]){_0x43a7ba[_0x94a7('0x3b')]=_['merge'](_0x43a7ba[_0x94a7('0x3b')],{'$or':_['map'](_0x3ad00c,function(_0x47cccb){if(_0x47cccb[_0x94a7('0x2e')]!=='VIRTUAL'){var _0x4cf579={};_0x4cf579[_0x47cccb[_0x94a7('0x29')]]={'$like':'%'+_0x358b4c[_0x94a7('0x32')]['filter']+'%'};return _0x4cf579;}})});}_0x43a7ba=_['merge']({},_0x43a7ba,_0x358b4c[_0x94a7('0x3d')]);var _0x1ae13e={'where':_0x43a7ba[_0x94a7('0x3b')]};return db[_0x94a7('0x2b')][_0x94a7('0x1e')](_0x1ae13e)[_0x94a7('0x25')](function(_0x41a9eb){_0x299cfa[_0x94a7('0x1e')]=_0x41a9eb;if(_0x358b4c[_0x94a7('0x32')][_0x94a7('0x3e')]){_0x43a7ba[_0x94a7('0x3f')]=[{'all':!![]}];}return db['SquareProject'][_0x94a7('0x40')](_0x43a7ba);})[_0x94a7('0x25')](function(_0x3964f3){_0x299cfa['rows']=_0x3964f3;return _0x299cfa;})[_0x94a7('0x25')](respondWithFilteredResult(_0x1f6983,_0x43a7ba))['catch'](handleError(_0x1f6983,null));};exports['show']=function(_0xd89c4,_0x50f8c0){var _0x444bb3={'raw':![],'where':{'id':_0xd89c4[_0x94a7('0x41')]['id']}},_0x5188a8={};_0x5188a8[_0x94a7('0x30')]=_['keys'](db[_0x94a7('0x2b')][_0x94a7('0x2c')]);_0x5188a8[_0x94a7('0x32')]=_[_0x94a7('0x33')](_0xd89c4[_0x94a7('0x32')]);_0x5188a8[_0x94a7('0x34')]=_[_0x94a7('0x35')](_0x5188a8[_0x94a7('0x30')],_0x5188a8[_0x94a7('0x32')]);_0x444bb3['attributes']=_['intersection'](_0x5188a8[_0x94a7('0x30')],qs['fields'](_0xd89c4['query'][_0x94a7('0x36')]));_0x444bb3[_0x94a7('0x37')]=_0x444bb3['attributes']['length']?_0x444bb3[_0x94a7('0x37')]:_0x5188a8['model'];if(_0xd89c4[_0x94a7('0x32')][_0x94a7('0x3e')]){_0x444bb3[_0x94a7('0x3f')]=[{'all':!![]}];}_0x444bb3=_[_0x94a7('0x42')]({},_0x444bb3,_0xd89c4['options']);return db[_0x94a7('0x2b')][_0x94a7('0x43')](_0x444bb3)[_0x94a7('0x25')](handleEntityNotFound(_0x50f8c0,null))[_0x94a7('0x25')](respondWithResult(_0x50f8c0,null))['catch'](handleError(_0x50f8c0,null));};exports['create']=function(_0xdb0a2e,_0x5089b4){return db[_0x94a7('0x2b')][_0x94a7('0x44')](_0xdb0a2e['body'],{})[_0x94a7('0x25')](function(_0x40ec42){var _0x146731=_0xdb0a2e['user'][_0x94a7('0x26')]({'plain':!![]});if(!_0x146731)throw new Error(_0x94a7('0x45'));if(_0x146731[_0x94a7('0x46')]==='user'){var _0x460ae3=_0x40ec42[_0x94a7('0x26')]({'plain':!![]});var _0x4c4387=_0x94a7('0x47');return db['UserProfileSection']['find']({'where':{'name':_0x4c4387,'userProfileId':_0x146731[_0x94a7('0x48')]},'raw':!![]})[_0x94a7('0x25')](function(_0x286cdf){if(_0x286cdf&&_0x286cdf[_0x94a7('0x49')]===0x0){return db[_0x94a7('0x27')][_0x94a7('0x44')]({'name':_0x460ae3[_0x94a7('0x29')],'resourceId':_0x460ae3['id'],'type':_0x286cdf[_0x94a7('0x29')],'sectionId':_0x286cdf['id']},{})[_0x94a7('0x25')](function(){return _0x40ec42;});}else{return _0x40ec42;}})[_0x94a7('0x4a')](function(_0x200cbf){logger[_0x94a7('0x4b')](_0x94a7('0x4c'),_0x200cbf);throw _0x200cbf;});}return _0x40ec42;})[_0x94a7('0x25')](respondWithResult(_0x5089b4,0xc9))[_0x94a7('0x4a')](handleError(_0x5089b4,null));};exports['update']=function(_0x6b925d,_0x50a723){if(_0x6b925d[_0x94a7('0x4d')]['id']){delete _0x6b925d['body']['id'];}return db[_0x94a7('0x2b')]['find']({'where':{'id':_0x6b925d[_0x94a7('0x41')]['id']}})[_0x94a7('0x25')](handleEntityNotFound(_0x50a723,null))[_0x94a7('0x25')](saveUpdates(_0x6b925d[_0x94a7('0x4d')],null))[_0x94a7('0x25')](respondWithResult(_0x50a723,null))['catch'](handleError(_0x50a723,null));};exports[_0x94a7('0x28')]=function(_0x5d5773,_0x9b1bee){return db[_0x94a7('0x2b')][_0x94a7('0x43')]({'where':{'id':_0x5d5773['params']['id']}})['then'](handleEntityNotFound(_0x9b1bee,null))[_0x94a7('0x25')](removeEntity(_0x9b1bee,null))[_0x94a7('0x4a')](handleError(_0x9b1bee,null));};exports[_0x94a7('0x4e')]=function(_0x5cd831,_0x2ec555,_0x428b12){return db['SquareProject'][_0x94a7('0x43')]({'where':{'id':_0x5cd831[_0x94a7('0x41')]['id']}})[_0x94a7('0x25')](handleEntityNotFound(_0x2ec555,null))['then'](function(_0x1ce989){if(_0x1ce989){return _0x1ce989[_0x94a7('0x4e')](_0x5cd831['body']['ids'],_[_0x94a7('0x4f')](_0x5cd831[_0x94a7('0x4d')],[_0x94a7('0x50'),'id'])||{});}})[_0x94a7('0x25')](respondWithResult(_0x2ec555,null))[_0x94a7('0x4a')](handleError(_0x2ec555,null));};exports[_0x94a7('0x51')]=function(_0x92dfe,_0x527b85,_0x2a2633){return db['SquareProject'][_0x94a7('0x43')]({'where':{'id':_0x92dfe[_0x94a7('0x41')]['id']}})['then'](handleEntityNotFound(_0x527b85,null))[_0x94a7('0x25')](function(_0x3dd82a){if(_0x3dd82a){return _0x3dd82a[_0x94a7('0x51')](_0x92dfe[_0x94a7('0x32')]['ids'])[_0x94a7('0x25')](function(){if(_[_0x94a7('0x52')](_0x92dfe[_0x94a7('0x32')][_0x94a7('0x50')])){for(var _0x1ebdff=0x0;_0x1ebdff<_0x92dfe['query'][_0x94a7('0x50')][_0x94a7('0x53')];_0x1ebdff+=0x1){socket[_0x94a7('0x54')](_0x94a7('0x55'),{'UserId':Number(_0x92dfe[_0x94a7('0x32')][_0x94a7('0x50')][_0x1ebdff]),'SquareProjectId':Number(_0x92dfe[_0x94a7('0x41')]['id'])});}}else{socket['emit'](_0x94a7('0x55'),{'UserId':Number(_0x92dfe[_0x94a7('0x32')]['ids']),'SquareProjectId':Number(_0x92dfe[_0x94a7('0x41')]['id'])});}});}})[_0x94a7('0x25')](respondWithStatusCode(_0x527b85,null))['catch'](handleError(_0x527b85,null));};exports[_0x94a7('0x56')]=function(_0x2325e1,_0x5de6b1,_0x38fc68){var _0x28199a={};var _0x4d9cc6={};var _0x42f8a3;var _0x22bbb7;return db['SquareProject'][_0x94a7('0x57')]({'where':{'id':_0x2325e1['params']['id']}})[_0x94a7('0x25')](handleEntityNotFound(_0x5de6b1,null))[_0x94a7('0x25')](function(_0x41e0ed){if(_0x41e0ed){_0x42f8a3=_0x41e0ed;_0x4d9cc6[_0x94a7('0x30')]=_[_0x94a7('0x33')](db[_0x94a7('0x58')][_0x94a7('0x2c')]);_0x4d9cc6[_0x94a7('0x32')]=_['keys'](_0x2325e1[_0x94a7('0x32')]);_0x4d9cc6[_0x94a7('0x34')]=_[_0x94a7('0x35')](_0x4d9cc6[_0x94a7('0x30')],_0x4d9cc6['query']);_0x28199a[_0x94a7('0x37')]=_['intersection'](_0x4d9cc6[_0x94a7('0x30')],qs['fields'](_0x2325e1[_0x94a7('0x32')][_0x94a7('0x36')]));_0x28199a[_0x94a7('0x37')]=_0x28199a[_0x94a7('0x37')][_0x94a7('0x53')]?_0x28199a['attributes']:_0x4d9cc6[_0x94a7('0x30')];_0x28199a[_0x94a7('0x39')]=qs[_0x94a7('0x3a')](_0x2325e1[_0x94a7('0x32')][_0x94a7('0x3a')]);_0x28199a[_0x94a7('0x3b')]=qs[_0x94a7('0x34')](_['pick'](_0x2325e1[_0x94a7('0x32')],_0x4d9cc6[_0x94a7('0x34')]));if(_0x2325e1['query']['filter']){_0x28199a['where']=_['merge'](_0x28199a[_0x94a7('0x3b')],{'$or':_['map'](_0x28199a['attributes'],function(_0x29a684){var _0x30d44a={};_0x30d44a[_0x29a684]={'$like':'%'+_0x2325e1['query']['filter']+'%'};return _0x30d44a;})});}_0x28199a=_['merge']({},_0x28199a,_0x2325e1[_0x94a7('0x3d')]);return _0x42f8a3[_0x94a7('0x56')](_0x28199a);}})[_0x94a7('0x25')](function(_0x3b113a){if(_0x3b113a){_0x22bbb7=_0x3b113a[_0x94a7('0x53')];if(!_0x2325e1[_0x94a7('0x32')][_0x94a7('0x38')](_0x94a7('0x59'))){_0x28199a['limit']=qs[_0x94a7('0x1d')](_0x2325e1[_0x94a7('0x32')][_0x94a7('0x1d')]);_0x28199a[_0x94a7('0x1b')]=qs[_0x94a7('0x1b')](_0x2325e1['query']['offset']);}return _0x42f8a3[_0x94a7('0x56')](_0x28199a);}})[_0x94a7('0x25')](function(_0xddc7ae){if(_0xddc7ae){return _0xddc7ae?{'count':_0x22bbb7,'rows':_0xddc7ae}:null;}})[_0x94a7('0x25')](respondWithResult(_0x5de6b1,null))[_0x94a7('0x4a')](handleError(_0x5de6b1,null));};
\ No newline at end of file
+var _0x58e4=['to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./squareProject.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','SquareProjects','end','error','stack','name','send','index','SquareProject','rawAttributes','key','map','query','keys','filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','omit','ids','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path'];(function(_0x2bd88d,_0x2d5dc3){var _0x5516d4=function(_0x1272c8){while(--_0x1272c8){_0x2bd88d['push'](_0x2bd88d['shift']());}};_0x5516d4(++_0x2d5dc3);}(_0x58e4,0x128));var _0x458e=function(_0x29dab5,_0x703f04){_0x29dab5=_0x29dab5-0x0;var _0x2af667=_0x58e4[_0x29dab5];return _0x2af667;};'use strict';var emlformat=require(_0x458e('0x0'));var rimraf=require(_0x458e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x458e('0x2'));var rp=require(_0x458e('0x3'));var moment=require('moment');var BPromise=require(_0x458e('0x4'));var Mustache=require('mustache');var util=require(_0x458e('0x5'));var path=require(_0x458e('0x6'));var sox=require('sox');var csv=require(_0x458e('0x7'));var ejs=require(_0x458e('0x8'));var fs=require('fs');var fs_extra=require(_0x458e('0x9'));var _=require(_0x458e('0xa'));var squel=require(_0x458e('0xb'));var crypto=require('crypto');var jsforce=require(_0x458e('0xc'));var deskjs=require(_0x458e('0xd'));var toCsv=require(_0x458e('0x7'));var querystring=require(_0x458e('0xe'));var Papa=require('papaparse');var Redis=require(_0x458e('0xf'));var authService=require(_0x458e('0x10'));var qs=require(_0x458e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x458e('0x12'));var logger=require('../../config/logger')(_0x458e('0x13'));var utils=require('../../config/utils');var config=require(_0x458e('0x14'));var licenseUtil=require(_0x458e('0x15'));var db=require(_0x458e('0x16'))['db'];config[_0x458e('0x17')]=_[_0x458e('0x18')](config[_0x458e('0x17')],{'host':_0x458e('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x458e('0x17')]));require(_0x458e('0x1a'))[_0x458e('0x1b')](socket);function respondWithStatusCode(_0x4f1b06,_0x53da91){_0x53da91=_0x53da91||0xcc;return function(_0x4eecef){if(_0x4eecef){return _0x4f1b06[_0x458e('0x1c')](_0x53da91);}return _0x4f1b06['status'](_0x53da91)['end']();};}function respondWithResult(_0x571357,_0x4e2d98){_0x4e2d98=_0x4e2d98||0xc8;return function(_0x354bfa){if(_0x354bfa){return _0x571357[_0x458e('0x1d')](_0x4e2d98)[_0x458e('0x1e')](_0x354bfa);}};}function respondWithFilteredResult(_0x13ba00,_0x650c19){return function(_0x444593){if(_0x444593){var _0x49eb09=typeof _0x650c19[_0x458e('0x1f')]===_0x458e('0x20')&&typeof _0x650c19[_0x458e('0x21')]===_0x458e('0x20');var _0x2447c7=_0x444593[_0x458e('0x22')];var _0xc447ee=_0x49eb09?0x0:_0x650c19['offset'];var _0xdab85d=_0x49eb09?_0x444593[_0x458e('0x22')]:_0x650c19[_0x458e('0x1f')]+_0x650c19[_0x458e('0x21')];var _0x43893e;if(_0xdab85d>=_0x2447c7){_0xdab85d=_0x2447c7;_0x43893e=0xc8;}else{_0x43893e=0xce;}_0x13ba00[_0x458e('0x1d')](_0x43893e);return _0x13ba00[_0x458e('0x23')](_0x458e('0x24'),_0xc447ee+'-'+_0xdab85d+'/'+_0x2447c7)[_0x458e('0x1e')](_0x444593);}return null;};}function patchUpdates(_0x5b062c){return function(_0x335135){try{jsonpatch[_0x458e('0x25')](_0x335135,_0x5b062c,!![]);}catch(_0x22bbed){return BPromise[_0x458e('0x26')](_0x22bbed);}return _0x335135[_0x458e('0x27')]();};}function saveUpdates(_0x16b996,_0x3668dd){return function(_0x47730c){if(_0x47730c){return _0x47730c['update'](_0x16b996)['then'](function(_0xbaf4df){return _0xbaf4df;});}return null;};}function removeEntity(_0x451ec5,_0x245416){return function(_0x738723){if(_0x738723){return _0x738723[_0x458e('0x28')]()[_0x458e('0x29')](function(){var _0x30923c=_0x738723[_0x458e('0x2a')]({'plain':!![]});var _0x2967e6=_0x458e('0x2b');return db['UserProfileResource'][_0x458e('0x28')]({'where':{'type':_0x2967e6,'resourceId':_0x30923c['id']}})[_0x458e('0x29')](function(){return _0x738723;});})[_0x458e('0x29')](function(){_0x451ec5[_0x458e('0x1d')](0xcc)[_0x458e('0x2c')]();});}};}function handleEntityNotFound(_0x3afb3a,_0x3cea37){return function(_0x548403){if(!_0x548403){_0x3afb3a['sendStatus'](0x194);}return _0x548403;};}function handleError(_0x7cfec2,_0x4cf6bd){_0x4cf6bd=_0x4cf6bd||0x1f4;return function(_0x4ad449){logger[_0x458e('0x2d')](_0x4ad449[_0x458e('0x2e')]);if(_0x4ad449[_0x458e('0x2f')]){delete _0x4ad449[_0x458e('0x2f')];}_0x7cfec2['status'](_0x4cf6bd)[_0x458e('0x30')](_0x4ad449);};}exports[_0x458e('0x31')]=function(_0x52de31,_0x327b7c){var _0x5f1701={},_0x157f0f={},_0x1e2fa6={'count':0x0,'rows':[]};var _0x15758a=_['map'](db[_0x458e('0x32')][_0x458e('0x33')],function(_0xf13bc8){return{'name':_0xf13bc8['fieldName'],'type':_0xf13bc8['type'][_0x458e('0x34')]};});_0x157f0f['model']=_[_0x458e('0x35')](_0x15758a,_0x458e('0x2f'));_0x157f0f[_0x458e('0x36')]=_[_0x458e('0x37')](_0x52de31[_0x458e('0x36')]);_0x157f0f[_0x458e('0x38')]=_['intersection'](_0x157f0f[_0x458e('0x39')],_0x157f0f[_0x458e('0x36')]);_0x5f1701['attributes']=_['intersection'](_0x157f0f[_0x458e('0x39')],qs[_0x458e('0x3a')](_0x52de31[_0x458e('0x36')][_0x458e('0x3a')]));_0x5f1701[_0x458e('0x3b')]=_0x5f1701[_0x458e('0x3b')][_0x458e('0x3c')]?_0x5f1701['attributes']:_0x157f0f[_0x458e('0x39')];if(!_0x52de31['query'][_0x458e('0x3d')](_0x458e('0x3e'))){_0x5f1701[_0x458e('0x21')]=qs[_0x458e('0x21')](_0x52de31[_0x458e('0x36')]['limit']);_0x5f1701[_0x458e('0x1f')]=qs[_0x458e('0x1f')](_0x52de31[_0x458e('0x36')][_0x458e('0x1f')]);}_0x5f1701[_0x458e('0x3f')]=qs[_0x458e('0x40')](_0x52de31[_0x458e('0x36')][_0x458e('0x40')]);_0x5f1701[_0x458e('0x41')]=qs[_0x458e('0x38')](_[_0x458e('0x42')](_0x52de31[_0x458e('0x36')],_0x157f0f[_0x458e('0x38')]),_0x15758a);if(_0x52de31[_0x458e('0x36')][_0x458e('0x43')]){_0x5f1701[_0x458e('0x41')]=_[_0x458e('0x44')](_0x5f1701['where'],{'$or':_[_0x458e('0x35')](_0x15758a,function(_0x5ce094){if(_0x5ce094[_0x458e('0x45')]!==_0x458e('0x46')){var _0x90255={};_0x90255[_0x5ce094['name']]={'$like':'%'+_0x52de31[_0x458e('0x36')][_0x458e('0x43')]+'%'};return _0x90255;}})});}_0x5f1701=_[_0x458e('0x44')]({},_0x5f1701,_0x52de31[_0x458e('0x47')]);var _0xf09778={'where':_0x5f1701['where']};return db[_0x458e('0x32')][_0x458e('0x22')](_0xf09778)[_0x458e('0x29')](function(_0x364e28){_0x1e2fa6[_0x458e('0x22')]=_0x364e28;if(_0x52de31['query'][_0x458e('0x48')]){_0x5f1701[_0x458e('0x49')]=[{'all':!![]}];}return db['SquareProject'][_0x458e('0x4a')](_0x5f1701);})['then'](function(_0x599a5a){_0x1e2fa6[_0x458e('0x4b')]=_0x599a5a;return _0x1e2fa6;})[_0x458e('0x29')](respondWithFilteredResult(_0x327b7c,_0x5f1701))[_0x458e('0x4c')](handleError(_0x327b7c,null));};exports[_0x458e('0x4d')]=function(_0x52458e,_0x3c62b0){var _0x3a85d3={'raw':![],'where':{'id':_0x52458e[_0x458e('0x4e')]['id']}},_0x36e8f3={};_0x36e8f3[_0x458e('0x39')]=_[_0x458e('0x37')](db[_0x458e('0x32')][_0x458e('0x33')]);_0x36e8f3[_0x458e('0x36')]=_[_0x458e('0x37')](_0x52458e[_0x458e('0x36')]);_0x36e8f3['filters']=_['intersection'](_0x36e8f3[_0x458e('0x39')],_0x36e8f3[_0x458e('0x36')]);_0x3a85d3['attributes']=_[_0x458e('0x4f')](_0x36e8f3[_0x458e('0x39')],qs[_0x458e('0x3a')](_0x52458e['query'][_0x458e('0x3a')]));_0x3a85d3[_0x458e('0x3b')]=_0x3a85d3[_0x458e('0x3b')][_0x458e('0x3c')]?_0x3a85d3[_0x458e('0x3b')]:_0x36e8f3[_0x458e('0x39')];if(_0x52458e[_0x458e('0x36')][_0x458e('0x48')]){_0x3a85d3[_0x458e('0x49')]=[{'all':!![]}];}_0x3a85d3=_['merge']({},_0x3a85d3,_0x52458e[_0x458e('0x47')]);return db[_0x458e('0x32')][_0x458e('0x50')](_0x3a85d3)['then'](handleEntityNotFound(_0x3c62b0,null))[_0x458e('0x29')](respondWithResult(_0x3c62b0,null))['catch'](handleError(_0x3c62b0,null));};exports[_0x458e('0x51')]=function(_0x4fe338,_0x382dc0){return db[_0x458e('0x32')][_0x458e('0x51')](_0x4fe338[_0x458e('0x52')],{})['then'](function(_0x2b3092){var _0x4e3344=_0x4fe338[_0x458e('0x53')][_0x458e('0x2a')]({'plain':!![]});if(!_0x4e3344)throw new Error(_0x458e('0x54'));if(_0x4e3344[_0x458e('0x55')]===_0x458e('0x53')){var _0x230654=_0x2b3092['get']({'plain':!![]});var _0x474cd9=_0x458e('0x2b');return db[_0x458e('0x56')][_0x458e('0x50')]({'where':{'name':_0x474cd9,'userProfileId':_0x4e3344[_0x458e('0x57')]},'raw':!![]})[_0x458e('0x29')](function(_0x10a614){if(_0x10a614&&_0x10a614[_0x458e('0x58')]===0x0){return db[_0x458e('0x59')]['create']({'name':_0x230654['name'],'resourceId':_0x230654['id'],'type':_0x10a614[_0x458e('0x2f')],'sectionId':_0x10a614['id']},{})['then'](function(){return _0x2b3092;});}else{return _0x2b3092;}})[_0x458e('0x4c')](function(_0xbfb5e9){logger[_0x458e('0x2d')](_0x458e('0x5a'),_0xbfb5e9);throw _0xbfb5e9;});}return _0x2b3092;})[_0x458e('0x29')](respondWithResult(_0x382dc0,0xc9))['catch'](handleError(_0x382dc0,null));};exports['update']=function(_0x12f35b,_0x86d798){if(_0x12f35b['body']['id']){delete _0x12f35b[_0x458e('0x52')]['id'];}return db['SquareProject']['find']({'where':{'id':_0x12f35b[_0x458e('0x4e')]['id']}})[_0x458e('0x29')](handleEntityNotFound(_0x86d798,null))['then'](saveUpdates(_0x12f35b['body'],null))[_0x458e('0x29')](respondWithResult(_0x86d798,null))[_0x458e('0x4c')](handleError(_0x86d798,null));};exports['destroy']=function(_0x2ff002,_0x947ea3){return db[_0x458e('0x32')][_0x458e('0x50')]({'where':{'id':_0x2ff002[_0x458e('0x4e')]['id']}})[_0x458e('0x29')](handleEntityNotFound(_0x947ea3,null))[_0x458e('0x29')](removeEntity(_0x947ea3,null))['catch'](handleError(_0x947ea3,null));};exports['addUsers']=function(_0x1df2ba,_0x153c90,_0x388d5a){return db[_0x458e('0x32')][_0x458e('0x50')]({'where':{'id':_0x1df2ba[_0x458e('0x4e')]['id']}})['then'](handleEntityNotFound(_0x153c90,null))[_0x458e('0x29')](function(_0x4f3802){if(_0x4f3802){return _0x4f3802[_0x458e('0x5b')](_0x1df2ba[_0x458e('0x52')]['ids'],_[_0x458e('0x5c')](_0x1df2ba[_0x458e('0x52')],[_0x458e('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x153c90,null))[_0x458e('0x4c')](handleError(_0x153c90,null));};exports[_0x458e('0x5e')]=function(_0x59ebd1,_0x38ee8b,_0x23d389){return db[_0x458e('0x32')][_0x458e('0x50')]({'where':{'id':_0x59ebd1[_0x458e('0x4e')]['id']}})[_0x458e('0x29')](handleEntityNotFound(_0x38ee8b,null))[_0x458e('0x29')](function(_0x3b91ad){if(_0x3b91ad){return _0x3b91ad[_0x458e('0x5e')](_0x59ebd1[_0x458e('0x36')][_0x458e('0x5d')])[_0x458e('0x29')](function(){if(_[_0x458e('0x5f')](_0x59ebd1[_0x458e('0x36')][_0x458e('0x5d')])){for(var _0x29b043=0x0;_0x29b043<_0x59ebd1['query']['ids'][_0x458e('0x3c')];_0x29b043+=0x1){socket[_0x458e('0x60')](_0x458e('0x61'),{'UserId':Number(_0x59ebd1[_0x458e('0x36')][_0x458e('0x5d')][_0x29b043]),'SquareProjectId':Number(_0x59ebd1['params']['id'])});}}else{socket['emit'](_0x458e('0x61'),{'UserId':Number(_0x59ebd1[_0x458e('0x36')][_0x458e('0x5d')]),'SquareProjectId':Number(_0x59ebd1['params']['id'])});}});}})[_0x458e('0x29')](respondWithStatusCode(_0x38ee8b,null))[_0x458e('0x4c')](handleError(_0x38ee8b,null));};exports[_0x458e('0x62')]=function(_0x70fbaf,_0x2c9c8e,_0x4abd1d){var _0x44b08a={};var _0x1c5ffb={};var _0x39e2ba;var _0x30c6b6;return db[_0x458e('0x32')][_0x458e('0x63')]({'where':{'id':_0x70fbaf[_0x458e('0x4e')]['id']}})[_0x458e('0x29')](handleEntityNotFound(_0x2c9c8e,null))[_0x458e('0x29')](function(_0x236ebb){if(_0x236ebb){_0x39e2ba=_0x236ebb;_0x1c5ffb['model']=_['keys'](db[_0x458e('0x64')][_0x458e('0x33')]);_0x1c5ffb[_0x458e('0x36')]=_[_0x458e('0x37')](_0x70fbaf[_0x458e('0x36')]);_0x1c5ffb['filters']=_[_0x458e('0x4f')](_0x1c5ffb[_0x458e('0x39')],_0x1c5ffb['query']);_0x44b08a[_0x458e('0x3b')]=_[_0x458e('0x4f')](_0x1c5ffb['model'],qs['fields'](_0x70fbaf[_0x458e('0x36')]['fields']));_0x44b08a[_0x458e('0x3b')]=_0x44b08a[_0x458e('0x3b')][_0x458e('0x3c')]?_0x44b08a['attributes']:_0x1c5ffb[_0x458e('0x39')];_0x44b08a[_0x458e('0x3f')]=qs[_0x458e('0x40')](_0x70fbaf[_0x458e('0x36')]['sort']);_0x44b08a[_0x458e('0x41')]=qs[_0x458e('0x38')](_[_0x458e('0x42')](_0x70fbaf[_0x458e('0x36')],_0x1c5ffb['filters']));if(_0x70fbaf['query'][_0x458e('0x43')]){_0x44b08a[_0x458e('0x41')]=_[_0x458e('0x44')](_0x44b08a[_0x458e('0x41')],{'$or':_[_0x458e('0x35')](_0x44b08a[_0x458e('0x3b')],function(_0x578106){var _0x231052={};_0x231052[_0x578106]={'$like':'%'+_0x70fbaf[_0x458e('0x36')][_0x458e('0x43')]+'%'};return _0x231052;})});}_0x44b08a=_[_0x458e('0x44')]({},_0x44b08a,_0x70fbaf[_0x458e('0x47')]);return _0x39e2ba[_0x458e('0x62')](_0x44b08a);}})[_0x458e('0x29')](function(_0x4f9d60){if(_0x4f9d60){_0x30c6b6=_0x4f9d60['length'];if(!_0x70fbaf[_0x458e('0x36')]['hasOwnProperty'](_0x458e('0x3e'))){_0x44b08a[_0x458e('0x21')]=qs[_0x458e('0x21')](_0x70fbaf[_0x458e('0x36')][_0x458e('0x21')]);_0x44b08a[_0x458e('0x1f')]=qs[_0x458e('0x1f')](_0x70fbaf['query'][_0x458e('0x1f')]);}return _0x39e2ba['getUsers'](_0x44b08a);}})[_0x458e('0x29')](function(_0x2bdafd){if(_0x2bdafd){return _0x2bdafd?{'count':_0x30c6b6,'rows':_0x2bdafd}:null;}})['then'](respondWithResult(_0x2c9c8e,null))[_0x458e('0x4c')](handleError(_0x2c9c8e,null));};
\ No newline at end of file
index 92ee94a..b529717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b79=['../../mysqldb','SquareProject','setMaxListeners','remove','hasOwnProperty','hook','exports'];(function(_0x458ed7,_0xec5be7){var _0x4944e1=function(_0x1a1327){while(--_0x1a1327){_0x458ed7['push'](_0x458ed7['shift']());}};_0x4944e1(++_0xec5be7);}(_0x0b79,0x118));var _0x90b7=function(_0x11d5b9,_0x2ac4db){_0x11d5b9=_0x11d5b9-0x0;var _0x5c8f8b=_0x0b79[_0x11d5b9];return _0x5c8f8b;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x90b7('0x0'))['db'][_0x90b7('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x90b7('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x90b7('0x3')};function emitEvent(_0x468747){return function(_0x3a019a,_0x2b8763,_0x2d4f0e){SquareProjectEvents['emit'](_0x468747+':'+_0x3a019a['id'],_0x3a019a);SquareProjectEvents['emit'](_0x468747,_0x3a019a);_0x2d4f0e(null);};}for(var e in events){if(events[_0x90b7('0x4')](e)){var event=events[e];SquareProject[_0x90b7('0x5')](e,emitEvent(event));}}module[_0x90b7('0x6')]=SquareProjectEvents;
\ No newline at end of file
+var _0x9735=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','SquareProject'];(function(_0x116b63,_0x345b91){var _0xf847ed=function(_0x55ddc1){while(--_0x55ddc1){_0x116b63['push'](_0x116b63['shift']());}};_0xf847ed(++_0x345b91);}(_0x9735,0x138));var _0x5973=function(_0x365ffd,_0x11f55f){_0x365ffd=_0x365ffd-0x0;var _0x195e55=_0x9735[_0x365ffd];return _0x195e55;};'use strict';var EventEmitter=require(_0x5973('0x0'));var SquareProject=require(_0x5973('0x1'))['db'][_0x5973('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5973('0x3'),'afterUpdate':_0x5973('0x4'),'afterDestroy':_0x5973('0x5')};function emitEvent(_0xe6c77e){return function(_0x522101,_0x39902a,_0x350ce8){SquareProjectEvents['emit'](_0xe6c77e+':'+_0x522101['id'],_0x522101);SquareProjectEvents[_0x5973('0x6')](_0xe6c77e,_0x522101);_0x350ce8(null);};}for(var e in events){if(events[_0x5973('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x5973('0x8')]=SquareProjectEvents;
\ No newline at end of file
index e023ad1..5e76ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d39=['path','rimraf','../../config/environment','exports','SquareProject','square_projects','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','production','publishedAt','lodash','util','api','bluebird','request-promise'];(function(_0x154e17,_0x4b647b){var _0x21afa2=function(_0x83712){while(--_0x83712){_0x154e17['push'](_0x154e17['shift']());}};_0x21afa2(++_0x4b647b);}(_0x8d39,0x1bd));var _0x98d3=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x8d39[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0x98d3('0x0'));var util=require(_0x98d3('0x1'));var logger=require('../../config/logger')(_0x98d3('0x2'));var moment=require('moment');var BPromise=require(_0x98d3('0x3'));var rp=require(_0x98d3('0x4'));var fs=require('fs');var path=require(_0x98d3('0x5'));var rimraf=require(_0x98d3('0x6'));var config=require(_0x98d3('0x7'));var attributes=require('./squareProject.attributes');module[_0x98d3('0x8')]=function(_0x5882bf,_0x4c6fc1){return _0x5882bf['define'](_0x98d3('0x9'),attributes,{'tableName':_0x98d3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xd35ab9,_0xa06e53,_0x1b7d24){if(_0xd35ab9['changed'](_0x98d3('0xb'))){_0xd35ab9[_0x98d3('0xc')]=moment()[_0x98d3('0xd')](_0x98d3('0xe'));}if(_0xd35ab9[_0x98d3('0xf')](_0x98d3('0x10'))){_0xd35ab9[_0x98d3('0x11')]=moment()['format'](_0x98d3('0xe'));}_0x1b7d24(null,_0xd35ab9);}}});};
\ No newline at end of file
+var _0x0008=['changed','production','publishedAt','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','SquareProject','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x0008,0x114));var _0x8000=function(_0x2a1a31,_0x1b8b1a){_0x2a1a31=_0x2a1a31-0x0;var _0xe175e8=_0x0008[_0x2a1a31];return _0xe175e8;};'use strict';var _=require(_0x8000('0x0'));var util=require('util');var logger=require(_0x8000('0x1'))(_0x8000('0x2'));var moment=require(_0x8000('0x3'));var BPromise=require('bluebird');var rp=require(_0x8000('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8000('0x5'));var config=require(_0x8000('0x6'));var attributes=require('./squareProject.attributes');module['exports']=function(_0x362010,_0x46ab24){return _0x362010['define'](_0x8000('0x7'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x10ac12,_0x4805ad,_0x56a900){if(_0x10ac12['changed']('preproduction')){_0x10ac12['savedAt']=moment()[_0x8000('0x8')](_0x8000('0x9'));}if(_0x10ac12[_0x8000('0xa')](_0x8000('0xb'))){_0x10ac12[_0x8000('0xc')]=moment()[_0x8000('0x8')](_0x8000('0x9'));}_0x56a900(null,_0x10ac12);}}});};
\ No newline at end of file
index 3b190ee..65f9ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40c=['randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','./squareProject.socket','register','request','then','info','debug','SquareProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareProject,\x20%s,\x20%s','message','result','catch','SquareProject','options','where','attributes','include','map','model','ShowSquareProject','lodash','util','moment','bluebird'];(function(_0x30546c,_0x513fb7){var _0x57a44b=function(_0x157db9){while(--_0x157db9){_0x30546c['push'](_0x30546c['shift']());}};_0x57a44b(++_0x513fb7);}(_0xd40c,0x16e));var _0xcd40=function(_0x40e7ad,_0x41a5de){_0x40e7ad=_0x40e7ad-0x0;var _0x114654=_0xd40c[_0x40e7ad];return _0x114654;};'use strict';var _=require(_0xcd40('0x0'));var util=require(_0xcd40('0x1'));var moment=require(_0xcd40('0x2'));var BPromise=require(_0xcd40('0x3'));var rs=require(_0xcd40('0x4'));var fs=require('fs');var Redis=require(_0xcd40('0x5'));var db=require(_0xcd40('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xcd40('0x7'))('rpc');var config=require(_0xcd40('0x8'));var jayson=require(_0xcd40('0x9'));var client=jayson[_0xcd40('0xa')][_0xcd40('0xb')]({'port':0x232a});config[_0xcd40('0xc')]=_[_0xcd40('0xd')](config[_0xcd40('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcd40('0xe'))[_0xcd40('0xf')](socket);function respondWithRpcPromise(_0x451fda,_0x22ad81,_0x4effc3){return new BPromise(function(_0x5cb2fa,_0x4548ed){return client[_0xcd40('0x10')](_0x451fda,_0x4effc3)[_0xcd40('0x11')](function(_0x4b9f0a){logger[_0xcd40('0x12')]('SquareProject,\x20%s,\x20%s',_0x22ad81,'request\x20sent');logger[_0xcd40('0x13')](_0xcd40('0x14'),_0x22ad81,_0xcd40('0x15'),JSON[_0xcd40('0x16')](_0x4b9f0a));if(_0x4b9f0a[_0xcd40('0x17')]){if(_0x4b9f0a[_0xcd40('0x17')][_0xcd40('0x18')]===0x1f4){logger[_0xcd40('0x17')](_0xcd40('0x19'),_0x22ad81,_0x4b9f0a[_0xcd40('0x17')][_0xcd40('0x1a')]);return _0x4548ed(_0x4b9f0a[_0xcd40('0x17')][_0xcd40('0x1a')]);}logger[_0xcd40('0x17')](_0xcd40('0x19'),_0x22ad81,_0x4b9f0a[_0xcd40('0x17')]['message']);return _0x5cb2fa(_0x4b9f0a[_0xcd40('0x17')]['message']);}else{logger[_0xcd40('0x12')]('SquareProject,\x20%s,\x20%s',_0x22ad81,'request\x20sent');_0x5cb2fa(_0x4b9f0a[_0xcd40('0x1b')]['message']);}})[_0xcd40('0x1c')](function(_0xda3e23){logger[_0xcd40('0x17')](_0xcd40('0x19'),_0x22ad81,_0xda3e23);_0x4548ed(_0xda3e23);});});}exports['ShowSquareProject']=function(_0x13a253){var _0x5ac007=this;return new Promise(function(_0x4b022a,_0x5dbeae){return db[_0xcd40('0x1d')]['find']({'raw':_0x13a253[_0xcd40('0x1e')]?_0x13a253[_0xcd40('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x13a253[_0xcd40('0x1e')]?_0x13a253[_0xcd40('0x1e')][_0xcd40('0x1f')]||null:null,'attributes':_0x13a253[_0xcd40('0x1e')]?_0x13a253[_0xcd40('0x1e')][_0xcd40('0x20')]||null:null,'include':_0x13a253[_0xcd40('0x1e')]?_0x13a253['options'][_0xcd40('0x21')]?_[_0xcd40('0x22')](_0x13a253[_0xcd40('0x1e')][_0xcd40('0x21')],function(_0x2c782b){return{'model':db[_0x2c782b['model']],'as':_0x2c782b['as'],'attributes':_0x2c782b[_0xcd40('0x20')],'include':_0x2c782b[_0xcd40('0x21')]?_['map'](_0x2c782b[_0xcd40('0x21')],function(_0x1ae810){return{'model':db[_0x1ae810['model']],'as':_0x1ae810['as'],'attributes':_0x1ae810[_0xcd40('0x20')],'include':_0x1ae810[_0xcd40('0x21')]?_['map'](_0x1ae810['include'],function(_0x3678f2){return{'model':db[_0x3678f2[_0xcd40('0x23')]],'as':_0x3678f2['as'],'attributes':_0x3678f2[_0xcd40('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x76a3d0){logger[_0xcd40('0x12')](_0xcd40('0x24'),_0x13a253);logger[_0xcd40('0x13')]('ShowSquareProject',_0x13a253,JSON['stringify'](_0x76a3d0));_0x4b022a(_0x76a3d0);})[_0xcd40('0x1c')](function(_0x329933){logger[_0xcd40('0x17')](_0xcd40('0x24'),_0x329933[_0xcd40('0x1a')],_0x13a253);_0x5dbeae(_0x5ac007[_0xcd40('0x17')](0x1f4,_0x329933['message']));});});};
\ No newline at end of file
+var _0x47ff=['SquareProject,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','SquareProject','find','options','raw','where','attributes','include','map','model','ShowSquareProject','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./squareProject.socket','register','then','info'];(function(_0x73eafc,_0xdf8ac4){var _0x1fc198=function(_0x109b81){while(--_0x109b81){_0x73eafc['push'](_0x73eafc['shift']());}};_0x1fc198(++_0xdf8ac4);}(_0x47ff,0xc1));var _0xf47f=function(_0x482f76,_0x588ec9){_0x482f76=_0x482f76-0x0;var _0x229e38=_0x47ff[_0x482f76];return _0x229e38;};'use strict';var _=require(_0xf47f('0x0'));var util=require(_0xf47f('0x1'));var moment=require(_0xf47f('0x2'));var BPromise=require(_0xf47f('0x3'));var rs=require(_0xf47f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf47f('0x5'))['db'];var utils=require(_0xf47f('0x6'));var logger=require('../../config/logger')(_0xf47f('0x7'));var config=require(_0xf47f('0x8'));var jayson=require(_0xf47f('0x9'));var client=jayson['client'][_0xf47f('0xa')]({'port':0x232a});config[_0xf47f('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf47f('0xc'))(new Redis(config['redis']));require(_0xf47f('0xd'))[_0xf47f('0xe')](socket);function respondWithRpcPromise(_0x16af89,_0x521530,_0x2b91b1){return new BPromise(function(_0x2f0437,_0x3db894){return client['request'](_0x16af89,_0x2b91b1)[_0xf47f('0xf')](function(_0x4ed6f5){logger[_0xf47f('0x10')](_0xf47f('0x11'),_0x521530,_0xf47f('0x12'));logger[_0xf47f('0x13')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x521530,'request\x20sent',JSON[_0xf47f('0x14')](_0x4ed6f5));if(_0x4ed6f5['error']){if(_0x4ed6f5['error']['code']===0x1f4){logger[_0xf47f('0x15')](_0xf47f('0x11'),_0x521530,_0x4ed6f5[_0xf47f('0x15')][_0xf47f('0x16')]);return _0x3db894(_0x4ed6f5[_0xf47f('0x15')][_0xf47f('0x16')]);}logger['error'](_0xf47f('0x11'),_0x521530,_0x4ed6f5['error'][_0xf47f('0x16')]);return _0x2f0437(_0x4ed6f5[_0xf47f('0x15')][_0xf47f('0x16')]);}else{logger[_0xf47f('0x10')](_0xf47f('0x11'),_0x521530,_0xf47f('0x12'));_0x2f0437(_0x4ed6f5[_0xf47f('0x17')][_0xf47f('0x16')]);}})[_0xf47f('0x18')](function(_0x41a92e){logger[_0xf47f('0x15')]('SquareProject,\x20%s,\x20%s',_0x521530,_0x41a92e);_0x3db894(_0x41a92e);});});}exports['ShowSquareProject']=function(_0x3e740e){var _0x1c14b1=this;return new Promise(function(_0x4f3c71,_0x1a7f22){return db[_0xf47f('0x19')][_0xf47f('0x1a')]({'raw':_0x3e740e[_0xf47f('0x1b')]?_0x3e740e[_0xf47f('0x1b')][_0xf47f('0x1c')]===undefined?!![]:![]:!![],'where':_0x3e740e[_0xf47f('0x1b')]?_0x3e740e[_0xf47f('0x1b')][_0xf47f('0x1d')]||null:null,'attributes':_0x3e740e['options']?_0x3e740e[_0xf47f('0x1b')][_0xf47f('0x1e')]||null:null,'include':_0x3e740e[_0xf47f('0x1b')]?_0x3e740e[_0xf47f('0x1b')][_0xf47f('0x1f')]?_['map'](_0x3e740e[_0xf47f('0x1b')][_0xf47f('0x1f')],function(_0x406399){return{'model':db[_0x406399['model']],'as':_0x406399['as'],'attributes':_0x406399['attributes'],'include':_0x406399[_0xf47f('0x1f')]?_['map'](_0x406399[_0xf47f('0x1f')],function(_0x50026a){return{'model':db[_0x50026a['model']],'as':_0x50026a['as'],'attributes':_0x50026a['attributes'],'include':_0x50026a[_0xf47f('0x1f')]?_[_0xf47f('0x20')](_0x50026a[_0xf47f('0x1f')],function(_0xb780ef){return{'model':db[_0xb780ef[_0xf47f('0x21')]],'as':_0xb780ef['as'],'attributes':_0xb780ef[_0xf47f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf47f('0xf')](function(_0xc21d4c){logger[_0xf47f('0x10')](_0xf47f('0x22'),_0x3e740e);logger[_0xf47f('0x13')](_0xf47f('0x22'),_0x3e740e,JSON[_0xf47f('0x14')](_0xc21d4c));_0x4f3c71(_0xc21d4c);})[_0xf47f('0x18')](function(_0x119497){logger[_0xf47f('0x15')](_0xf47f('0x22'),_0x119497['message'],_0x3e740e);_0x1a7f22(_0x1c14b1[_0xf47f('0x15')](0x1f4,_0x119497['message']));});});};
\ No newline at end of file
index b79849c..242a7ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a57=['removeListener','register','squareProject:','./squareProject.events','remove','update','emit'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4a57,0x6c));var _0x74a5=function(_0x18f16b,_0x16647b){_0x18f16b=_0x18f16b-0x0;var _0x41195c=_0x4a57[_0x18f16b];return _0x41195c;};'use strict';var SquareProjectEvents=require(_0x74a5('0x0'));var events=['save',_0x74a5('0x1'),_0x74a5('0x2')];function createListener(_0x55c66a,_0x25e204){return function(_0x4916ed){_0x25e204[_0x74a5('0x3')](_0x55c66a,_0x4916ed);};}function removeListener(_0x23b876,_0x305597){return function(){SquareProjectEvents[_0x74a5('0x4')](_0x23b876,_0x305597);};}exports[_0x74a5('0x5')]=function(_0x15937f){for(var _0x388cc3=0x0,_0x5838a7=events['length'];_0x388cc3<_0x5838a7;_0x388cc3++){var _0xb4fe29=events[_0x388cc3];var _0x3faa68=createListener(_0x74a5('0x6')+_0xb4fe29,_0x15937f);SquareProjectEvents['on'](_0xb4fe29,_0x3faa68);}};
\ No newline at end of file
+var _0x56c3=['register','./squareProject.events','save','remove','emit','removeListener'];(function(_0xd73239,_0x488346){var _0x41cee6=function(_0x4a8bb3){while(--_0x4a8bb3){_0xd73239['push'](_0xd73239['shift']());}};_0x41cee6(++_0x488346);}(_0x56c3,0x14b));var _0x356c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x56c3[_0x3dd15e];return _0x231fd0;};'use strict';var SquareProjectEvents=require(_0x356c('0x0'));var events=[_0x356c('0x1'),_0x356c('0x2'),'update'];function createListener(_0x42966d,_0x320890){return function(_0x255d41){_0x320890[_0x356c('0x3')](_0x42966d,_0x255d41);};}function removeListener(_0x209426,_0x26def1){return function(){SquareProjectEvents[_0x356c('0x4')](_0x209426,_0x26def1);};}exports[_0x356c('0x5')]=function(_0x5899d2){for(var _0x580c0e=0x0,_0x5a814d=events['length'];_0x580c0e<_0x5a814d;_0x580c0e++){var _0x2cbce3=events[_0x580c0e];var _0x597aca=createListener('squareProject:'+_0x2cbce3,_0x5899d2);SquareProjectEvents['on'](_0x2cbce3,_0x597aca);}};
\ No newline at end of file
index 465d534..00896d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','download','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x42aee5,_0x13bff9){var _0x4e17b3=function(_0x9b1579){while(--_0x9b1579){_0x42aee5['push'](_0x42aee5['shift']());}};_0x4e17b3(++_0x13bff9);}(_0xabce,0x103));var _0xeabc=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xabce[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./squareRecording.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id/download',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0xc')]('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0xe')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x10')]);router[_0xeabc('0x11')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x12')]);module[_0xeabc('0x13')]=router;
\ No newline at end of file
+var _0x814b=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','put','delete','destroy','exports'];(function(_0x2fda56,_0x291855){var _0x1c427a=function(_0x556481){while(--_0x556481){_0x2fda56['push'](_0x2fda56['shift']());}};_0x1c427a(++_0x291855);}(_0x814b,0x1a2));var _0xb814=function(_0x2f8530,_0x5cbd67){_0x2f8530=_0x2f8530-0x0;var _0x5e814e=_0x814b[_0x2f8530];return _0x5e814e;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0x10')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['update']);router[_0xb814('0x13')]('/:id',auth[_0xb814('0xb')](),controller[_0xb814('0x14')]);module[_0xb814('0x15')]=router;
\ No newline at end of file
index 842c8d0..e3ca7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['getDataValue','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x4643b0,_0x5be9b1){var _0x57ddc6=function(_0x1b3782){while(--_0x1b3782){_0x4643b0['push'](_0x4643b0['shift']());}};_0x57ddc6(++_0x5be9b1);}(_0xb138,0x1dd));var _0x8b13=function(_0x2b69d9,_0x41e8fa){_0x2b69d9=_0x2b69d9-0x0;var _0x17c12d=_0xb138[_0x2b69d9];return _0x17c12d;};'use strict';var Sequelize=require(_0x8b13('0x0'));module[_0x8b13('0x1')]={'uniqueid':{'type':Sequelize[_0x8b13('0x2')]},'callerid':{'type':Sequelize[_0x8b13('0x2')]},'calleridname':{'type':Sequelize[_0x8b13('0x2')]},'context':{'type':Sequelize[_0x8b13('0x2')]},'extension':{'type':Sequelize[_0x8b13('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8b13('0x2')]},'dnid':{'type':Sequelize[_0x8b13('0x2')]},'projectName':{'type':Sequelize[_0x8b13('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8b13('0x2')]},'savePath':{'type':Sequelize[_0x8b13('0x2')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x3fdf4d='';var _0x33d1a7=this[_0x8b13('0x3')]('savePath');if(_0x33d1a7){_0x3fdf4d=_0x33d1a7[_0x8b13('0x4')](_0x33d1a7[_0x8b13('0x5')]('.'));}return _0x3fdf4d;}}};
\ No newline at end of file
+var _0x81bd=['STRING','VIRTUAL','getDataValue','substring','lastIndexOf','sequelize','exports'];(function(_0x24db13,_0x4524c1){var _0xde9a3e=function(_0x38f107){while(--_0x38f107){_0x24db13['push'](_0x24db13['shift']());}};_0xde9a3e(++_0x4524c1);}(_0x81bd,0x7c));var _0xd81b=function(_0x31bad1,_0x163160){_0x31bad1=_0x31bad1-0x0;var _0x30c64e=_0x81bd[_0x31bad1];return _0x30c64e;};'use strict';var Sequelize=require(_0xd81b('0x0'));module[_0xd81b('0x1')]={'uniqueid':{'type':Sequelize[_0xd81b('0x2')]},'callerid':{'type':Sequelize[_0xd81b('0x2')]},'calleridname':{'type':Sequelize[_0xd81b('0x2')]},'context':{'type':Sequelize[_0xd81b('0x2')]},'extension':{'type':Sequelize[_0xd81b('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd81b('0x2')]},'dnid':{'type':Sequelize[_0xd81b('0x2')]},'projectName':{'type':Sequelize[_0xd81b('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0xd81b('0x2')]},'savePath':{'type':Sequelize[_0xd81b('0x2')]},'format':{'type':Sequelize[_0xd81b('0x3')],'get':function(){var _0x562084='';var _0x5e14e8=this[_0xd81b('0x4')]('savePath');if(_0x5e14e8){_0x562084=_0x5e14e8[_0xd81b('0x5')](_0x5e14e8[_0xd81b('0x6')]('.'));}return _0x562084;}}};
\ No newline at end of file
index 83d5256..4650a31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a5a=['show','include','find','catch','body','params','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','unlink','message','Not\x20found','destroy','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','then','error','stack','name','send','map','SquareRecording','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows'];(function(_0x320f98,_0x491faa){var _0xf2d2ea=function(_0x4e1233){while(--_0x4e1233){_0x320f98['push'](_0x320f98['shift']());}};_0xf2d2ea(++_0x491faa);}(_0x9a5a,0xda));var _0xa9a5=function(_0x3604a9,_0x1fc13a){_0x3604a9=_0x3604a9-0x0;var _0x2325f0=_0x9a5a[_0x3604a9];return _0x2325f0;};'use strict';var emlformat=require(_0xa9a5('0x0'));var rimraf=require(_0xa9a5('0x1'));var zipdir=require(_0xa9a5('0x2'));var jsonpatch=require(_0xa9a5('0x3'));var rp=require(_0xa9a5('0x4'));var moment=require(_0xa9a5('0x5'));var BPromise=require(_0xa9a5('0x6'));var Mustache=require(_0xa9a5('0x7'));var util=require(_0xa9a5('0x8'));var path=require('path');var sox=require(_0xa9a5('0x9'));var csv=require('to-csv');var ejs=require(_0xa9a5('0xa'));var fs=require('fs');var fs_extra=require(_0xa9a5('0xb'));var _=require(_0xa9a5('0xc'));var squel=require(_0xa9a5('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa9a5('0xe'));var toCsv=require(_0xa9a5('0xf'));var querystring=require(_0xa9a5('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa9a5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa9a5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9a5('0x13'))(_0xa9a5('0x14'));var utils=require(_0xa9a5('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa9a5('0x16'))['db'];function respondWithStatusCode(_0x387568,_0x2e8b1e){_0x2e8b1e=_0x2e8b1e||0xcc;return function(_0x39729b){if(_0x39729b){return _0x387568[_0xa9a5('0x17')](_0x2e8b1e);}return _0x387568[_0xa9a5('0x18')](_0x2e8b1e)[_0xa9a5('0x19')]();};}function respondWithResult(_0x489d7b,_0x5e7b6d){_0x5e7b6d=_0x5e7b6d||0xc8;return function(_0x2765b3){if(_0x2765b3){return _0x489d7b[_0xa9a5('0x18')](_0x5e7b6d)[_0xa9a5('0x1a')](_0x2765b3);}};}function respondWithFilteredResult(_0x2a5fb9,_0xd4d2df){return function(_0x4f8c98){if(_0x4f8c98){var _0x27d55f=typeof _0xd4d2df[_0xa9a5('0x1b')]===_0xa9a5('0x1c')&&typeof _0xd4d2df[_0xa9a5('0x1d')]==='undefined';var _0x3457ca=_0x4f8c98[_0xa9a5('0x1e')];var _0x5e3bcf=_0x27d55f?0x0:_0xd4d2df[_0xa9a5('0x1b')];var _0x1d2351=_0x27d55f?_0x4f8c98[_0xa9a5('0x1e')]:_0xd4d2df[_0xa9a5('0x1b')]+_0xd4d2df[_0xa9a5('0x1d')];var _0x178dbb;if(_0x1d2351>=_0x3457ca){_0x1d2351=_0x3457ca;_0x178dbb=0xc8;}else{_0x178dbb=0xce;}_0x2a5fb9[_0xa9a5('0x18')](_0x178dbb);return _0x2a5fb9[_0xa9a5('0x1f')]('Content-Range',_0x5e3bcf+'-'+_0x1d2351+'/'+_0x3457ca)['json'](_0x4f8c98);}return null;};}function patchUpdates(_0x31dab2){return function(_0x54358f){try{jsonpatch[_0xa9a5('0x20')](_0x54358f,_0x31dab2,!![]);}catch(_0x3e3046){return BPromise['reject'](_0x3e3046);}return _0x54358f['save']();};}function saveUpdates(_0x2f61f0,_0x1e30da){return function(_0x3199d2){if(_0x3199d2){return _0x3199d2[_0xa9a5('0x21')](_0x2f61f0)[_0xa9a5('0x22')](function(_0x578370){return _0x578370;});}return null;};}function removeEntity(_0x139511,_0x399b61){return function(_0x54743d){if(_0x54743d){return _0x54743d['destroy']()[_0xa9a5('0x22')](function(){_0x139511[_0xa9a5('0x18')](0xcc)[_0xa9a5('0x19')]();});}};}function handleEntityNotFound(_0x207e3f,_0x571ecc){return function(_0x5c4166){if(!_0x5c4166){_0x207e3f[_0xa9a5('0x17')](0x194);}return _0x5c4166;};}function handleError(_0x565b4d,_0x523e5e){_0x523e5e=_0x523e5e||0x1f4;return function(_0x4529df){logger[_0xa9a5('0x23')](_0x4529df[_0xa9a5('0x24')]);if(_0x4529df['name']){delete _0x4529df[_0xa9a5('0x25')];}_0x565b4d[_0xa9a5('0x18')](_0x523e5e)[_0xa9a5('0x26')](_0x4529df);};}exports['index']=function(_0x4a8fe4,_0x175b96){var _0x495184={},_0x25a5ac={},_0x4fe9ce={'count':0x0,'rows':[]};var _0x4da087=_[_0xa9a5('0x27')](db[_0xa9a5('0x28')][_0xa9a5('0x29')],function(_0x30ae94){return{'name':_0x30ae94[_0xa9a5('0x2a')],'type':_0x30ae94[_0xa9a5('0x2b')][_0xa9a5('0x2c')]};});_0x25a5ac[_0xa9a5('0x2d')]=_[_0xa9a5('0x27')](_0x4da087,'name');_0x25a5ac['query']=_[_0xa9a5('0x2e')](_0x4a8fe4[_0xa9a5('0x2f')]);_0x25a5ac[_0xa9a5('0x30')]=_[_0xa9a5('0x31')](_0x25a5ac[_0xa9a5('0x2d')],_0x25a5ac[_0xa9a5('0x2f')]);_0x495184[_0xa9a5('0x32')]=_[_0xa9a5('0x31')](_0x25a5ac[_0xa9a5('0x2d')],qs[_0xa9a5('0x33')](_0x4a8fe4['query']['fields']));_0x495184[_0xa9a5('0x32')]=_0x495184['attributes'][_0xa9a5('0x34')]?_0x495184[_0xa9a5('0x32')]:_0x25a5ac['model'];if(!_0x4a8fe4[_0xa9a5('0x2f')]['hasOwnProperty'](_0xa9a5('0x35'))){_0x495184[_0xa9a5('0x1d')]=qs[_0xa9a5('0x1d')](_0x4a8fe4[_0xa9a5('0x2f')][_0xa9a5('0x1d')]);_0x495184[_0xa9a5('0x1b')]=qs[_0xa9a5('0x1b')](_0x4a8fe4['query'][_0xa9a5('0x1b')]);}_0x495184['order']=qs['sort'](_0x4a8fe4[_0xa9a5('0x2f')][_0xa9a5('0x36')]);_0x495184[_0xa9a5('0x37')]=qs['filters'](_[_0xa9a5('0x38')](_0x4a8fe4[_0xa9a5('0x2f')],_0x25a5ac[_0xa9a5('0x30')]),_0x4da087);if(_0x4a8fe4[_0xa9a5('0x2f')]['filter']){_0x495184[_0xa9a5('0x37')]=_[_0xa9a5('0x39')](_0x495184[_0xa9a5('0x37')],{'$or':_[_0xa9a5('0x27')](_0x4da087,function(_0x3f9407){if(_0x3f9407[_0xa9a5('0x2b')]!==_0xa9a5('0x3a')){var _0x1a84a0={};_0x1a84a0[_0x3f9407[_0xa9a5('0x25')]]={'$like':'%'+_0x4a8fe4[_0xa9a5('0x2f')][_0xa9a5('0x3b')]+'%'};return _0x1a84a0;}})});}_0x495184=_[_0xa9a5('0x39')]({},_0x495184,_0x4a8fe4[_0xa9a5('0x3c')]);var _0x2837f3={'where':_0x495184[_0xa9a5('0x37')]};return db[_0xa9a5('0x28')][_0xa9a5('0x1e')](_0x2837f3)[_0xa9a5('0x22')](function(_0x38edeb){_0x4fe9ce[_0xa9a5('0x1e')]=_0x38edeb;if(_0x4a8fe4['query'][_0xa9a5('0x3d')]){_0x495184['include']=[{'all':!![]}];}return db[_0xa9a5('0x28')][_0xa9a5('0x3e')](_0x495184);})[_0xa9a5('0x22')](function(_0x231c13){_0x4fe9ce[_0xa9a5('0x3f')]=_0x231c13;return _0x4fe9ce;})['then'](respondWithFilteredResult(_0x175b96,_0x495184))['catch'](handleError(_0x175b96,null));};exports[_0xa9a5('0x40')]=function(_0x4183bc,_0x4e2024){var _0x34ac4e={'raw':!![],'where':{'id':_0x4183bc['params']['id']}},_0x1b7c5c={};_0x1b7c5c['model']=_[_0xa9a5('0x2e')](db[_0xa9a5('0x28')]['rawAttributes']);_0x1b7c5c[_0xa9a5('0x2f')]=_[_0xa9a5('0x2e')](_0x4183bc[_0xa9a5('0x2f')]);_0x1b7c5c[_0xa9a5('0x30')]=_[_0xa9a5('0x31')](_0x1b7c5c[_0xa9a5('0x2d')],_0x1b7c5c[_0xa9a5('0x2f')]);_0x34ac4e[_0xa9a5('0x32')]=_[_0xa9a5('0x31')](_0x1b7c5c[_0xa9a5('0x2d')],qs[_0xa9a5('0x33')](_0x4183bc[_0xa9a5('0x2f')][_0xa9a5('0x33')]));_0x34ac4e[_0xa9a5('0x32')]=_0x34ac4e[_0xa9a5('0x32')]['length']?_0x34ac4e[_0xa9a5('0x32')]:_0x1b7c5c[_0xa9a5('0x2d')];if(_0x4183bc[_0xa9a5('0x2f')][_0xa9a5('0x3d')]){_0x34ac4e[_0xa9a5('0x41')]=[{'all':!![]}];}_0x34ac4e=_[_0xa9a5('0x39')]({},_0x34ac4e,_0x4183bc[_0xa9a5('0x3c')]);return db['SquareRecording'][_0xa9a5('0x42')](_0x34ac4e)[_0xa9a5('0x22')](handleEntityNotFound(_0x4e2024,null))[_0xa9a5('0x22')](respondWithResult(_0x4e2024,null))['catch'](handleError(_0x4e2024,null));};exports['create']=function(_0x54cdc9,_0x2af793){return db[_0xa9a5('0x28')]['create'](_0x54cdc9['body'],{})[_0xa9a5('0x22')](respondWithResult(_0x2af793,0xc9))[_0xa9a5('0x43')](handleError(_0x2af793,null));};exports[_0xa9a5('0x21')]=function(_0x26c7f9,_0x43207f){if(_0x26c7f9['body']['id']){delete _0x26c7f9[_0xa9a5('0x44')]['id'];}return db[_0xa9a5('0x28')]['find']({'where':{'id':_0x26c7f9[_0xa9a5('0x45')]['id']}})['then'](handleEntityNotFound(_0x43207f,null))[_0xa9a5('0x22')](saveUpdates(_0x26c7f9[_0xa9a5('0x44')],null))['then'](respondWithResult(_0x43207f,null))[_0xa9a5('0x43')](handleError(_0x43207f,null));};exports[_0xa9a5('0x46')]=function(_0x6d2eba,_0x4b6ec1,_0x321a77){var _0x336c13=require(_0xa9a5('0x47'));var _0x53b002=![];var _0x267b9c={};if(_0x6d2eba[_0xa9a5('0x2f')][_0xa9a5('0x2b')]&&_0x6d2eba[_0xa9a5('0x2f')][_0xa9a5('0x2b')]==='uniqueid'){_0x267b9c[_0xa9a5('0x48')]=_0x6d2eba[_0xa9a5('0x45')]['id'];}else{_0x267b9c['id']=_0x6d2eba[_0xa9a5('0x45')]['id'];}return db[_0xa9a5('0x28')]['find']({'where':_0x267b9c,'attributes':['id',_0xa9a5('0x49'),_0xa9a5('0x4a')],'raw':!![]})[_0xa9a5('0x22')](handleEntityNotFound(_0x4b6ec1,null))['then'](function(_0x3a9399){if(_0x3a9399){var _0x4aabbf=_0x3a9399['savePath'];var _0x1be7dd=util[_0xa9a5('0x4b')](_0xa9a5('0x4c'),_0x4aabbf);if(fs[_0xa9a5('0x4d')](_0x1be7dd)){_0x53b002=!![];return _0x336c13[_0xa9a5('0x4e')](_0x1be7dd,_0x4aabbf,config[_0xa9a5('0x4f')][_0xa9a5('0x50')])[_0xa9a5('0x22')](function(){return _0x3a9399;});}return _0x3a9399;}})[_0xa9a5('0x22')](function(_0x1abe95){if(_0x1abe95){var _0x1b2aed=_0x1abe95[_0xa9a5('0x49')];if(!fs['existsSync'](_0x1b2aed)){throw new db[(_0xa9a5('0x51'))][(_0xa9a5('0x52'))](_0xa9a5('0x53'));}if(_0x1abe95['filename']){return _0x4b6ec1[_0xa9a5('0x46')](_0x1b2aed,_0x1abe95[_0xa9a5('0x4a')]+path['extname'](_0x1b2aed),function(){if(_0x53b002){fs[_0xa9a5('0x54')](_0x1b2aed);}});}else{return _0x4b6ec1[_0xa9a5('0x46')](_0x1b2aed,function(_0x47a644){if(_0x53b002){fs['unlink'](_0x1b2aed);}});}}})[_0xa9a5('0x43')](function(_0x511462){if(_0x511462[_0xa9a5('0x55')]===_0xa9a5('0x53')){_0x4b6ec1[_0xa9a5('0x18')](0x194)['send'](_0xa9a5('0x56'));}else{return handleError(_0x4b6ec1,null);}});};exports[_0xa9a5('0x57')]=function(_0x593903,_0x8a3ad8){return db[_0xa9a5('0x28')]['find']({'where':{'id':_0x593903['params']['id']}})['then'](function(_0x2e5751){if(_['isNil'](_0x2e5751)){throw new ReferenceError(_0xa9a5('0x58'));}return _0x2e5751;})[_0xa9a5('0x22')](function(_0xb0a5f0){var _0x2c7f30=_0xb0a5f0[_0xa9a5('0x49')];logger[_0xa9a5('0x59')](_0xa9a5('0x5a'),_0x2c7f30);if(!_[_0xa9a5('0x5b')](_0xb0a5f0[_0xa9a5('0x49')])&&fs[_0xa9a5('0x4d')](_0x2c7f30)){logger[_0xa9a5('0x59')]('File:\x20\x22'+_0x2c7f30+_0xa9a5('0x5c'));fs[_0xa9a5('0x5d')](_0x2c7f30);}_0x2c7f30=_0x2c7f30+'.cypher';if(!_['isNil'](_0xb0a5f0[_0xa9a5('0x49')])&&fs[_0xa9a5('0x4d')](_0x2c7f30)){logger[_0xa9a5('0x59')]('File:\x20\x22'+_0x2c7f30+_0xa9a5('0x5c'));fs[_0xa9a5('0x5d')](_0x2c7f30);}return _0xb0a5f0;})[_0xa9a5('0x22')](function(_0x2cb258){if(!_0x2cb258)throw new InternalError();return _0x2cb258[_0xa9a5('0x57')]();})['then'](function(){_0x8a3ad8[_0xa9a5('0x18')](0xcc)[_0xa9a5('0x19')]();})[_0xa9a5('0x43')](handleError(_0x8a3ad8,null));};
\ No newline at end of file
+var _0xe92e=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','find','create','body','update','../../components/encryptor','uniqueid','savePath','format','existsSync','decryptFile','secrets','recording','ValidationError','SquareRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','destroy','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','sendStatus','error','stack','name','send','index','map','SquareRecording','rawAttributes','fieldName'];(function(_0x98b8aa,_0x2caec4){var _0x39a3b5=function(_0x2971eb){while(--_0x2971eb){_0x98b8aa['push'](_0x98b8aa['shift']());}};_0x39a3b5(++_0x2caec4);}(_0xe92e,0xfd));var _0xee92=function(_0xb636fc,_0x1f4fc5){_0xb636fc=_0xb636fc-0x0;var _0x104720=_0xe92e[_0xb636fc];return _0x104720;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xee92('0x0'));var zipdir=require(_0xee92('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xee92('0x2'));var moment=require(_0xee92('0x3'));var BPromise=require(_0xee92('0x4'));var Mustache=require(_0xee92('0x5'));var util=require(_0xee92('0x6'));var path=require(_0xee92('0x7'));var sox=require('sox');var csv=require(_0xee92('0x8'));var ejs=require(_0xee92('0x9'));var fs=require('fs');var fs_extra=require(_0xee92('0xa'));var _=require(_0xee92('0xb'));var squel=require(_0xee92('0xc'));var crypto=require('crypto');var jsforce=require(_0xee92('0xd'));var deskjs=require(_0xee92('0xe'));var toCsv=require(_0xee92('0x8'));var querystring=require(_0xee92('0xf'));var Papa=require(_0xee92('0x10'));var Redis=require(_0xee92('0x11'));var authService=require(_0xee92('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xee92('0x13'));var hardwareService=require(_0xee92('0x14'));var logger=require('../../config/logger')(_0xee92('0x15'));var utils=require(_0xee92('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xee92('0x17'));var db=require(_0xee92('0x18'))['db'];function respondWithStatusCode(_0xe82ada,_0x48dd7a){_0x48dd7a=_0x48dd7a||0xcc;return function(_0x527da7){if(_0x527da7){return _0xe82ada['sendStatus'](_0x48dd7a);}return _0xe82ada[_0xee92('0x19')](_0x48dd7a)[_0xee92('0x1a')]();};}function respondWithResult(_0x3ec160,_0x10a577){_0x10a577=_0x10a577||0xc8;return function(_0x4a764f){if(_0x4a764f){return _0x3ec160['status'](_0x10a577)[_0xee92('0x1b')](_0x4a764f);}};}function respondWithFilteredResult(_0xfb7adb,_0x2efe98){return function(_0x47d135){if(_0x47d135){var _0x59faa3=typeof _0x2efe98['offset']===_0xee92('0x1c')&&typeof _0x2efe98[_0xee92('0x1d')]==='undefined';var _0xe59b67=_0x47d135[_0xee92('0x1e')];var _0x1acf10=_0x59faa3?0x0:_0x2efe98['offset'];var _0x39ccc8=_0x59faa3?_0x47d135[_0xee92('0x1e')]:_0x2efe98[_0xee92('0x1f')]+_0x2efe98[_0xee92('0x1d')];var _0x53966d;if(_0x39ccc8>=_0xe59b67){_0x39ccc8=_0xe59b67;_0x53966d=0xc8;}else{_0x53966d=0xce;}_0xfb7adb['status'](_0x53966d);return _0xfb7adb[_0xee92('0x20')](_0xee92('0x21'),_0x1acf10+'-'+_0x39ccc8+'/'+_0xe59b67)['json'](_0x47d135);}return null;};}function patchUpdates(_0x58a9d7){return function(_0x13b667){try{jsonpatch[_0xee92('0x22')](_0x13b667,_0x58a9d7,!![]);}catch(_0x433d51){return BPromise['reject'](_0x433d51);}return _0x13b667[_0xee92('0x23')]();};}function saveUpdates(_0x56f810,_0x2f4ea2){return function(_0x28fb68){if(_0x28fb68){return _0x28fb68['update'](_0x56f810)[_0xee92('0x24')](function(_0x51f80c){return _0x51f80c;});}return null;};}function removeEntity(_0x4da01b,_0x470d27){return function(_0x2131aa){if(_0x2131aa){return _0x2131aa['destroy']()[_0xee92('0x24')](function(){_0x4da01b[_0xee92('0x19')](0xcc)[_0xee92('0x1a')]();});}};}function handleEntityNotFound(_0x1fedfb,_0x43e6e9){return function(_0x1d30d2){if(!_0x1d30d2){_0x1fedfb[_0xee92('0x25')](0x194);}return _0x1d30d2;};}function handleError(_0x50aaad,_0x216017){_0x216017=_0x216017||0x1f4;return function(_0x565edb){logger[_0xee92('0x26')](_0x565edb[_0xee92('0x27')]);if(_0x565edb['name']){delete _0x565edb[_0xee92('0x28')];}_0x50aaad[_0xee92('0x19')](_0x216017)[_0xee92('0x29')](_0x565edb);};}exports[_0xee92('0x2a')]=function(_0xf6b3c2,_0x325994){var _0x3e3424={},_0x3511f4={},_0x2c2cd7={'count':0x0,'rows':[]};var _0x3f66cc=_[_0xee92('0x2b')](db[_0xee92('0x2c')][_0xee92('0x2d')],function(_0x3eccc8){return{'name':_0x3eccc8[_0xee92('0x2e')],'type':_0x3eccc8[_0xee92('0x2f')][_0xee92('0x30')]};});_0x3511f4[_0xee92('0x31')]=_[_0xee92('0x2b')](_0x3f66cc,_0xee92('0x28'));_0x3511f4[_0xee92('0x32')]=_[_0xee92('0x33')](_0xf6b3c2[_0xee92('0x32')]);_0x3511f4[_0xee92('0x34')]=_[_0xee92('0x35')](_0x3511f4['model'],_0x3511f4[_0xee92('0x32')]);_0x3e3424[_0xee92('0x36')]=_[_0xee92('0x35')](_0x3511f4[_0xee92('0x31')],qs[_0xee92('0x37')](_0xf6b3c2['query'][_0xee92('0x37')]));_0x3e3424[_0xee92('0x36')]=_0x3e3424[_0xee92('0x36')][_0xee92('0x38')]?_0x3e3424[_0xee92('0x36')]:_0x3511f4['model'];if(!_0xf6b3c2[_0xee92('0x32')][_0xee92('0x39')](_0xee92('0x3a'))){_0x3e3424['limit']=qs['limit'](_0xf6b3c2['query']['limit']);_0x3e3424[_0xee92('0x1f')]=qs[_0xee92('0x1f')](_0xf6b3c2[_0xee92('0x32')][_0xee92('0x1f')]);}_0x3e3424[_0xee92('0x3b')]=qs[_0xee92('0x3c')](_0xf6b3c2[_0xee92('0x32')][_0xee92('0x3c')]);_0x3e3424[_0xee92('0x3d')]=qs[_0xee92('0x34')](_[_0xee92('0x3e')](_0xf6b3c2[_0xee92('0x32')],_0x3511f4[_0xee92('0x34')]),_0x3f66cc);if(_0xf6b3c2['query'][_0xee92('0x3f')]){_0x3e3424['where']=_[_0xee92('0x40')](_0x3e3424['where'],{'$or':_[_0xee92('0x2b')](_0x3f66cc,function(_0x53f59e){if(_0x53f59e['type']!=='VIRTUAL'){var _0x1b00c2={};_0x1b00c2[_0x53f59e[_0xee92('0x28')]]={'$like':'%'+_0xf6b3c2['query']['filter']+'%'};return _0x1b00c2;}})});}_0x3e3424=_[_0xee92('0x40')]({},_0x3e3424,_0xf6b3c2[_0xee92('0x41')]);var _0x1380ce={'where':_0x3e3424[_0xee92('0x3d')]};return db[_0xee92('0x2c')][_0xee92('0x1e')](_0x1380ce)[_0xee92('0x24')](function(_0x3150cd){_0x2c2cd7[_0xee92('0x1e')]=_0x3150cd;if(_0xf6b3c2[_0xee92('0x32')]['includeAll']){_0x3e3424[_0xee92('0x42')]=[{'all':!![]}];}return db[_0xee92('0x2c')][_0xee92('0x43')](_0x3e3424);})[_0xee92('0x24')](function(_0x531cd6){_0x2c2cd7[_0xee92('0x44')]=_0x531cd6;return _0x2c2cd7;})['then'](respondWithFilteredResult(_0x325994,_0x3e3424))[_0xee92('0x45')](handleError(_0x325994,null));};exports[_0xee92('0x46')]=function(_0x4335bd,_0x3cb5ac){var _0x283584={'raw':!![],'where':{'id':_0x4335bd[_0xee92('0x47')]['id']}},_0x2c2363={};_0x2c2363[_0xee92('0x31')]=_[_0xee92('0x33')](db[_0xee92('0x2c')][_0xee92('0x2d')]);_0x2c2363['query']=_['keys'](_0x4335bd[_0xee92('0x32')]);_0x2c2363[_0xee92('0x34')]=_[_0xee92('0x35')](_0x2c2363[_0xee92('0x31')],_0x2c2363[_0xee92('0x32')]);_0x283584[_0xee92('0x36')]=_['intersection'](_0x2c2363['model'],qs['fields'](_0x4335bd[_0xee92('0x32')][_0xee92('0x37')]));_0x283584[_0xee92('0x36')]=_0x283584['attributes'][_0xee92('0x38')]?_0x283584[_0xee92('0x36')]:_0x2c2363[_0xee92('0x31')];if(_0x4335bd['query']['includeAll']){_0x283584['include']=[{'all':!![]}];}_0x283584=_[_0xee92('0x40')]({},_0x283584,_0x4335bd[_0xee92('0x41')]);return db[_0xee92('0x2c')][_0xee92('0x48')](_0x283584)[_0xee92('0x24')](handleEntityNotFound(_0x3cb5ac,null))[_0xee92('0x24')](respondWithResult(_0x3cb5ac,null))[_0xee92('0x45')](handleError(_0x3cb5ac,null));};exports[_0xee92('0x49')]=function(_0x4af969,_0x4dc161){return db[_0xee92('0x2c')][_0xee92('0x49')](_0x4af969[_0xee92('0x4a')],{})[_0xee92('0x24')](respondWithResult(_0x4dc161,0xc9))['catch'](handleError(_0x4dc161,null));};exports[_0xee92('0x4b')]=function(_0xf39c09,_0x56ad97){if(_0xf39c09['body']['id']){delete _0xf39c09[_0xee92('0x4a')]['id'];}return db[_0xee92('0x2c')][_0xee92('0x48')]({'where':{'id':_0xf39c09['params']['id']}})[_0xee92('0x24')](handleEntityNotFound(_0x56ad97,null))[_0xee92('0x24')](saveUpdates(_0xf39c09['body'],null))[_0xee92('0x24')](respondWithResult(_0x56ad97,null))[_0xee92('0x45')](handleError(_0x56ad97,null));};exports['download']=function(_0x2a006c,_0x2c0af7,_0x57832c){var _0x2fb18d=require(_0xee92('0x4c'));var _0x4cd150=![];var _0x710d98={};if(_0x2a006c['query'][_0xee92('0x2f')]&&_0x2a006c[_0xee92('0x32')][_0xee92('0x2f')]===_0xee92('0x4d')){_0x710d98['uniqueid']=_0x2a006c[_0xee92('0x47')]['id'];}else{_0x710d98['id']=_0x2a006c[_0xee92('0x47')]['id'];}return db[_0xee92('0x2c')]['find']({'where':_0x710d98,'attributes':['id',_0xee92('0x4e'),'filename'],'raw':!![]})[_0xee92('0x24')](handleEntityNotFound(_0x2c0af7,null))[_0xee92('0x24')](function(_0x4392b0){if(_0x4392b0){var _0x36595c=_0x4392b0[_0xee92('0x4e')];var _0x136a50=util[_0xee92('0x4f')]('%s.cypher',_0x36595c);if(fs[_0xee92('0x50')](_0x136a50)){_0x4cd150=!![];return _0x2fb18d[_0xee92('0x51')](_0x136a50,_0x36595c,config[_0xee92('0x52')][_0xee92('0x53')])['then'](function(){return _0x4392b0;});}return _0x4392b0;}})[_0xee92('0x24')](function(_0x11420d){if(_0x11420d){var _0x3dba72=_0x11420d[_0xee92('0x4e')];if(!fs['existsSync'](_0x3dba72)){throw new db['Sequelize'][(_0xee92('0x54'))](_0xee92('0x55'));}if(_0x11420d['filename']){return _0x2c0af7['download'](_0x3dba72,_0x11420d[_0xee92('0x56')]+path[_0xee92('0x57')](_0x3dba72),function(){if(_0x4cd150){fs[_0xee92('0x58')](_0x3dba72);}});}else{return _0x2c0af7[_0xee92('0x59')](_0x3dba72,function(_0x1487c3){if(_0x4cd150){fs[_0xee92('0x58')](_0x3dba72);}});}}})['catch'](function(_0x4ad16e){if(_0x4ad16e[_0xee92('0x5a')]===_0xee92('0x55')){_0x2c0af7['status'](0x194)[_0xee92('0x29')](_0xee92('0x5b'));}else{return handleError(_0x2c0af7,null);}});};exports[_0xee92('0x5c')]=function(_0x3047cd,_0x141334){return db[_0xee92('0x2c')][_0xee92('0x48')]({'where':{'id':_0x3047cd[_0xee92('0x47')]['id']}})['then'](function(_0x5baf48){if(_[_0xee92('0x5d')](_0x5baf48)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5baf48;})[_0xee92('0x24')](function(_0x3794d5){var _0xd16e99=_0x3794d5[_0xee92('0x4e')];logger['info'](_0xee92('0x5e'),_0xd16e99);if(!_[_0xee92('0x5d')](_0x3794d5[_0xee92('0x4e')])&&fs[_0xee92('0x50')](_0xd16e99)){logger[_0xee92('0x5f')](_0xee92('0x60')+_0xd16e99+_0xee92('0x61'));fs[_0xee92('0x62')](_0xd16e99);}_0xd16e99=_0xd16e99+_0xee92('0x63');if(!_[_0xee92('0x5d')](_0x3794d5['savePath'])&&fs['existsSync'](_0xd16e99)){logger[_0xee92('0x5f')](_0xee92('0x60')+_0xd16e99+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xee92('0x62')](_0xd16e99);}return _0x3794d5;})['then'](function(_0x1f7935){if(!_0x1f7935)throw new InternalError();return _0x1f7935[_0xee92('0x5c')]();})[_0xee92('0x24')](function(){_0x141334[_0xee92('0x19')](0xcc)['end']();})[_0xee92('0x45')](handleError(_0x141334,null));};
\ No newline at end of file
index 6ed9932..5fa7f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea4e=['request-promise','path','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','moment'];(function(_0x47a701,_0x49a0c8){var _0x20756a=function(_0x3e7092){while(--_0x3e7092){_0x47a701['push'](_0x47a701['shift']());}};_0x20756a(++_0x49a0c8);}(_0xea4e,0x10c));var _0xeea4=function(_0x2a9f4,_0x25c14a){_0x2a9f4=_0x2a9f4-0x0;var _0x3c39e0=_0xea4e[_0x2a9f4];return _0x3c39e0;};'use strict';var _=require(_0xeea4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xeea4('0x1'));var BPromise=require('bluebird');var rp=require(_0xeea4('0x2'));var fs=require('fs');var path=require(_0xeea4('0x3'));var rimraf=require('rimraf');var config=require(_0xeea4('0x4'));var attributes=require(_0xeea4('0x5'));module[_0xeea4('0x6')]=function(_0x12e419,_0x297af5){return _0x12e419[_0xeea4('0x7')](_0xeea4('0x8'),attributes,{'tableName':_0xeea4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2af8=['request-promise','rimraf','./squareRecording.attributes','exports','define','square_recordings','lodash','../../config/logger','api','bluebird'];(function(_0x3b08de,_0x63ddd0){var _0x53fbe4=function(_0x16eea2){while(--_0x16eea2){_0x3b08de['push'](_0x3b08de['shift']());}};_0x53fbe4(++_0x63ddd0);}(_0x2af8,0xf6));var _0x82af=function(_0x4e2460,_0x1ab3e3){_0x4e2460=_0x4e2460-0x0;var _0x5cef9b=_0x2af8[_0x4e2460];return _0x5cef9b;};'use strict';var _=require(_0x82af('0x0'));var util=require('util');var logger=require(_0x82af('0x1'))(_0x82af('0x2'));var moment=require('moment');var BPromise=require(_0x82af('0x3'));var rp=require(_0x82af('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x82af('0x5'));var config=require('../../config/environment');var attributes=require(_0x82af('0x6'));module[_0x82af('0x7')]=function(_0x4dd422,_0x3d29ef){return _0x4dd422[_0x82af('0x8')]('SquareRecording',attributes,{'tableName':_0x82af('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e5f1e3..83f89f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4168=['ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','catch','create','body','options','raw','CreateSquareRecording','lodash','util','moment','bluebird','randomstring'];(function(_0x2de10c,_0x14a21e){var _0x9635ef=function(_0x368193){while(--_0x368193){_0x2de10c['push'](_0x2de10c['shift']());}};_0x9635ef(++_0x14a21e);}(_0x4168,0xd3));var _0x8416=function(_0x3020fc,_0x9cfb5a){_0x3020fc=_0x3020fc-0x0;var _0x1b4a55=_0x4168[_0x3020fc];return _0x1b4a55;};'use strict';var _=require(_0x8416('0x0'));var util=require(_0x8416('0x1'));var moment=require(_0x8416('0x2'));var BPromise=require(_0x8416('0x3'));var rs=require(_0x8416('0x4'));var fs=require('fs');var Redis=require(_0x8416('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8416('0x6'))('rpc');var config=require(_0x8416('0x7'));var jayson=require(_0x8416('0x8'));var client=jayson['client'][_0x8416('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25d684,_0x3e82ae,_0x48e304){return new BPromise(function(_0x46718b,_0x6ec6fe){return client[_0x8416('0xa')](_0x25d684,_0x48e304)[_0x8416('0xb')](function(_0x4620dd){logger[_0x8416('0xc')](_0x8416('0xd'),_0x3e82ae,'request\x20sent');logger[_0x8416('0xe')](_0x8416('0xf'),_0x3e82ae,'request\x20sent',JSON[_0x8416('0x10')](_0x4620dd));if(_0x4620dd['error']){if(_0x4620dd['error'][_0x8416('0x11')]===0x1f4){logger[_0x8416('0x12')](_0x8416('0xd'),_0x3e82ae,_0x4620dd[_0x8416('0x12')][_0x8416('0x13')]);return _0x6ec6fe(_0x4620dd['error'][_0x8416('0x13')]);}logger[_0x8416('0x12')](_0x8416('0xd'),_0x3e82ae,_0x4620dd['error']['message']);return _0x46718b(_0x4620dd[_0x8416('0x12')][_0x8416('0x13')]);}else{logger[_0x8416('0xc')]('SquareRecording,\x20%s,\x20%s',_0x3e82ae,_0x8416('0x14'));_0x46718b(_0x4620dd['result'][_0x8416('0x13')]);}})[_0x8416('0x15')](function(_0x6274b2){logger['error'](_0x8416('0xd'),_0x3e82ae,_0x6274b2);_0x6ec6fe(_0x6274b2);});});}exports['CreateSquareRecording']=function(_0x28409e){var _0xcdcb6e=this;return new Promise(function(_0x56ef0f,_0x5ebafb){return db['SquareRecording'][_0x8416('0x16')](_0x28409e[_0x8416('0x17')],{'raw':_0x28409e[_0x8416('0x18')]?_0x28409e['options'][_0x8416('0x19')]===undefined?!![]:![]:!![]})[_0x8416('0xb')](function(_0x47c33f){logger[_0x8416('0xc')](_0x8416('0x1a'),_0x28409e);logger[_0x8416('0xe')](_0x8416('0x1a'),_0x28409e,JSON[_0x8416('0x10')](_0x47c33f));_0x56ef0f(_0x47c33f);})[_0x8416('0x15')](function(_0x45f596){logger['error']('CreateSquareRecording',_0x45f596[_0x8416('0x13')],_0x28409e);_0x5ebafb(_0xcdcb6e['error'](0x1f4,_0x45f596[_0x8416('0x13')]));});});};
\ No newline at end of file
+var _0xd283=['options','CreateSquareRecording','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SquareRecording,\x20%s,\x20%s','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','SquareRecording','create','body'];(function(_0x3c9fa6,_0x1c9ab9){var _0x1c7988=function(_0x4f9383){while(--_0x4f9383){_0x3c9fa6['push'](_0x3c9fa6['shift']());}};_0x1c7988(++_0x1c9ab9);}(_0xd283,0x188));var _0x3d28=function(_0x19f6fe,_0x356fc0){_0x19f6fe=_0x19f6fe-0x0;var _0x400d1e=_0xd283[_0x19f6fe];return _0x400d1e;};'use strict';var _=require(_0x3d28('0x0'));var util=require(_0x3d28('0x1'));var moment=require('moment');var BPromise=require(_0x3d28('0x2'));var rs=require(_0x3d28('0x3'));var fs=require('fs');var Redis=require(_0x3d28('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3d28('0x5'));var logger=require(_0x3d28('0x6'))(_0x3d28('0x7'));var config=require(_0x3d28('0x8'));var jayson=require(_0x3d28('0x9'));var client=jayson[_0x3d28('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x525b49,_0x58f3c0,_0x564081){return new BPromise(function(_0x87c676,_0x598f4e){return client[_0x3d28('0xb')](_0x525b49,_0x564081)[_0x3d28('0xc')](function(_0x494fe7){logger[_0x3d28('0xd')](_0x3d28('0xe'),_0x58f3c0,'request\x20sent');logger['debug'](_0x3d28('0xf'),_0x58f3c0,_0x3d28('0x10'),JSON[_0x3d28('0x11')](_0x494fe7));if(_0x494fe7['error']){if(_0x494fe7[_0x3d28('0x12')]['code']===0x1f4){logger[_0x3d28('0x12')](_0x3d28('0xe'),_0x58f3c0,_0x494fe7[_0x3d28('0x12')][_0x3d28('0x13')]);return _0x598f4e(_0x494fe7[_0x3d28('0x12')][_0x3d28('0x13')]);}logger['error'](_0x3d28('0xe'),_0x58f3c0,_0x494fe7['error']['message']);return _0x87c676(_0x494fe7[_0x3d28('0x12')][_0x3d28('0x13')]);}else{logger[_0x3d28('0xd')](_0x3d28('0xe'),_0x58f3c0,'request\x20sent');_0x87c676(_0x494fe7['result'][_0x3d28('0x13')]);}})[_0x3d28('0x14')](function(_0x108718){logger['error']('SquareRecording,\x20%s,\x20%s',_0x58f3c0,_0x108718);_0x598f4e(_0x108718);});});}exports['CreateSquareRecording']=function(_0x4563eb){var _0x509be9=this;return new Promise(function(_0x10e458,_0x5a1943){return db[_0x3d28('0x15')][_0x3d28('0x16')](_0x4563eb[_0x3d28('0x17')],{'raw':_0x4563eb[_0x3d28('0x18')]?_0x4563eb[_0x3d28('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x3d28('0xc')](function(_0x133ef3){logger[_0x3d28('0xd')](_0x3d28('0x19'),_0x4563eb);logger['debug'](_0x3d28('0x19'),_0x4563eb,JSON[_0x3d28('0x11')](_0x133ef3));_0x10e458(_0x133ef3);})[_0x3d28('0x14')](function(_0x23bff1){logger['error'](_0x3d28('0x19'),_0x23bff1[_0x3d28('0x13')],_0x4563eb);_0x5a1943(_0x509be9['error'](0x1f4,_0x23bff1[_0x3d28('0x13')]));});});};
\ No newline at end of file
index 96b265d..7b31a5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x3e937a,_0x4bd097){var _0x23d0e2=function(_0x43e2da){while(--_0x43e2da){_0x3e937a['push'](_0x3e937a['shift']());}};_0x23d0e2(++_0x4bd097);}(_0xe706,0xa3));var _0x6e70=function(_0x41f59e,_0x5e916a){_0x41f59e=_0x41f59e-0x0;var _0x1d5e3=_0xe706[_0x41f59e];return _0x1d5e3;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _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(_0x29ba10,_0x2d95d3){var _0x333cb2=function(_0x6cf287){while(--_0x6cf287){_0x29ba10['push'](_0x29ba10['shift']());}};_0x333cb2(++_0x2d95d3);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'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 fcdf47c..618868d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ad3=['BOOLEAN','sequelize','STRING','DATE'];(function(_0xe7d6b4,_0x5efa08){var _0x236a05=function(_0xe3bedc){while(--_0xe3bedc){_0xe7d6b4['push'](_0xe7d6b4['shift']());}};_0x236a05(++_0x5efa08);}(_0x6ad3,0xe5));var _0x36ad=function(_0x191f9d,_0x21976f){_0x191f9d=_0x191f9d-0x0;var _0x58e60d=_0x6ad3[_0x191f9d];return _0x58e60d;};'use strict';var Sequelize=require(_0x36ad('0x0'));module['exports']={'network':{'type':Sequelize[_0x36ad('0x1')]},'network_script':{'type':Sequelize[_0x36ad('0x1')]},'request':{'type':Sequelize[_0x36ad('0x1')]},'channel':{'type':Sequelize[_0x36ad('0x1')]},'language':{'type':Sequelize[_0x36ad('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x36ad('0x1')]},'version':{'type':Sequelize[_0x36ad('0x1')]},'callerid':{'type':Sequelize[_0x36ad('0x1')]},'calleridname':{'type':Sequelize[_0x36ad('0x1')]},'callingpres':{'type':Sequelize[_0x36ad('0x1')]},'callingani2':{'type':Sequelize[_0x36ad('0x1')]},'callington':{'type':Sequelize[_0x36ad('0x1')]},'callingtns':{'type':Sequelize[_0x36ad('0x1')]},'dnid':{'type':Sequelize[_0x36ad('0x1')]},'rdnis':{'type':Sequelize[_0x36ad('0x1')]},'context':{'type':Sequelize[_0x36ad('0x1')]},'extension':{'type':Sequelize[_0x36ad('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x36ad('0x1')]},'threadid':{'type':Sequelize[_0x36ad('0x1')]},'project_name':{'type':Sequelize[_0x36ad('0x1')]},'joinAt':{'type':Sequelize[_0x36ad('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x36ad('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xcc13=['STRING','DATE','sequelize','exports'];(function(_0x1cce2d,_0x190aea){var _0x15249d=function(_0x43c24f){while(--_0x43c24f){_0x1cce2d['push'](_0x1cce2d['shift']());}};_0x15249d(++_0x190aea);}(_0xcc13,0x15e));var _0x3cc1=function(_0x439b8d,_0x21fd76){_0x439b8d=_0x439b8d-0x0;var _0x263250=_0xcc13[_0x439b8d];return _0x263250;};'use strict';var Sequelize=require(_0x3cc1('0x0'));module[_0x3cc1('0x1')]={'network':{'type':Sequelize[_0x3cc1('0x2')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x3cc1('0x2')]},'language':{'type':Sequelize[_0x3cc1('0x2')]},'type':{'type':Sequelize[_0x3cc1('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x3cc1('0x2')]},'callerid':{'type':Sequelize[_0x3cc1('0x2')]},'calleridname':{'type':Sequelize[_0x3cc1('0x2')]},'callingpres':{'type':Sequelize[_0x3cc1('0x2')]},'callingani2':{'type':Sequelize[_0x3cc1('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x3cc1('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x3cc1('0x2')]},'context':{'type':Sequelize[_0x3cc1('0x2')]},'extension':{'type':Sequelize[_0x3cc1('0x2')]},'priority':{'type':Sequelize[_0x3cc1('0x2')]},'enhanced':{'type':Sequelize[_0x3cc1('0x2')]},'accountcode':{'type':Sequelize[_0x3cc1('0x2')]},'threadid':{'type':Sequelize[_0x3cc1('0x2')]},'project_name':{'type':Sequelize[_0x3cc1('0x2')]},'joinAt':{'type':Sequelize[_0x3cc1('0x3')]},'leaveAt':{'type':Sequelize[_0x3cc1('0x3')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 4f386a6..e4ae386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31dc=['options','SquareReport','include','rows','show','params','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','then','error','stack','name','index','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge'];(function(_0xf2725b,_0x41557e){var _0x560c1b=function(_0x1cab1a){while(--_0x1cab1a){_0xf2725b['push'](_0xf2725b['shift']());}};_0x560c1b(++_0x41557e);}(_0x31dc,0x132));var _0xc31d=function(_0x4d855e,_0x106b95){_0x4d855e=_0x4d855e-0x0;var _0x54a6c3=_0x31dc[_0x4d855e];return _0x54a6c3;};'use strict';var emlformat=require(_0xc31d('0x0'));var rimraf=require(_0xc31d('0x1'));var zipdir=require(_0xc31d('0x2'));var jsonpatch=require(_0xc31d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc31d('0x4'));var Mustache=require(_0xc31d('0x5'));var util=require(_0xc31d('0x6'));var path=require('path');var sox=require(_0xc31d('0x7'));var csv=require(_0xc31d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc31d('0x9'));var _=require('lodash');var squel=require(_0xc31d('0xa'));var crypto=require(_0xc31d('0xb'));var jsforce=require(_0xc31d('0xc'));var deskjs=require(_0xc31d('0xd'));var toCsv=require(_0xc31d('0x8'));var querystring=require(_0xc31d('0xe'));var Papa=require(_0xc31d('0xf'));var Redis=require(_0xc31d('0x10'));var authService=require(_0xc31d('0x11'));var qs=require(_0xc31d('0x12'));var as=require(_0xc31d('0x13'));var hardwareService=require(_0xc31d('0x14'));var logger=require(_0xc31d('0x15'))('api');var utils=require(_0xc31d('0x16'));var config=require(_0xc31d('0x17'));var licenseUtil=require(_0xc31d('0x18'));var db=require(_0xc31d('0x19'))['db'];function respondWithStatusCode(_0x3dd5ea,_0x5333fd){_0x5333fd=_0x5333fd||0xcc;return function(_0x3905d8){if(_0x3905d8){return _0x3dd5ea[_0xc31d('0x1a')](_0x5333fd);}return _0x3dd5ea[_0xc31d('0x1b')](_0x5333fd)[_0xc31d('0x1c')]();};}function respondWithResult(_0x3fb6f4,_0x52caac){_0x52caac=_0x52caac||0xc8;return function(_0x100028){if(_0x100028){return _0x3fb6f4[_0xc31d('0x1b')](_0x52caac)['json'](_0x100028);}};}function respondWithFilteredResult(_0x4ad7b9,_0x31c10b){return function(_0x383f59){if(_0x383f59){var _0x193e06=typeof _0x31c10b[_0xc31d('0x1d')]===_0xc31d('0x1e')&&typeof _0x31c10b[_0xc31d('0x1f')]===_0xc31d('0x1e');var _0xfb03d7=_0x383f59[_0xc31d('0x20')];var _0x3bee12=_0x193e06?0x0:_0x31c10b[_0xc31d('0x1d')];var _0x193caa=_0x193e06?_0x383f59[_0xc31d('0x20')]:_0x31c10b['offset']+_0x31c10b[_0xc31d('0x1f')];var _0x1cd337;if(_0x193caa>=_0xfb03d7){_0x193caa=_0xfb03d7;_0x1cd337=0xc8;}else{_0x1cd337=0xce;}_0x4ad7b9[_0xc31d('0x1b')](_0x1cd337);return _0x4ad7b9[_0xc31d('0x21')](_0xc31d('0x22'),_0x3bee12+'-'+_0x193caa+'/'+_0xfb03d7)[_0xc31d('0x23')](_0x383f59);}return null;};}function patchUpdates(_0x41f050){return function(_0x36874f){try{jsonpatch['apply'](_0x36874f,_0x41f050,!![]);}catch(_0x48072f){return BPromise[_0xc31d('0x24')](_0x48072f);}return _0x36874f[_0xc31d('0x25')]();};}function saveUpdates(_0x5ebc56,_0x21d27e){return function(_0x1ccfdb){if(_0x1ccfdb){return _0x1ccfdb[_0xc31d('0x26')](_0x5ebc56)['then'](function(_0x3f9355){return _0x3f9355;});}return null;};}function removeEntity(_0x4c316d,_0x3111cc){return function(_0x1363e6){if(_0x1363e6){return _0x1363e6[_0xc31d('0x27')]()[_0xc31d('0x28')](function(){_0x4c316d[_0xc31d('0x1b')](0xcc)[_0xc31d('0x1c')]();});}};}function handleEntityNotFound(_0x36c68a,_0x5ea5da){return function(_0x502712){if(!_0x502712){_0x36c68a[_0xc31d('0x1a')](0x194);}return _0x502712;};}function handleError(_0x193f9b,_0x19b025){_0x19b025=_0x19b025||0x1f4;return function(_0x48e459){logger[_0xc31d('0x29')](_0x48e459[_0xc31d('0x2a')]);if(_0x48e459[_0xc31d('0x2b')]){delete _0x48e459[_0xc31d('0x2b')];}_0x193f9b[_0xc31d('0x1b')](_0x19b025)['send'](_0x48e459);};}exports[_0xc31d('0x2c')]=function(_0x611e0c,_0x17a3f1){var _0x23e4ee={},_0x527168={},_0x52671a={'count':0x0,'rows':[]};var _0x328007=_[_0xc31d('0x2d')](db['SquareReport']['rawAttributes'],function(_0x18a714){return{'name':_0x18a714[_0xc31d('0x2e')],'type':_0x18a714[_0xc31d('0x2f')]['key']};});_0x527168['model']=_[_0xc31d('0x2d')](_0x328007,_0xc31d('0x2b'));_0x527168[_0xc31d('0x30')]=_[_0xc31d('0x31')](_0x611e0c[_0xc31d('0x30')]);_0x527168[_0xc31d('0x32')]=_[_0xc31d('0x33')](_0x527168[_0xc31d('0x34')],_0x527168[_0xc31d('0x30')]);_0x23e4ee[_0xc31d('0x35')]=_[_0xc31d('0x33')](_0x527168[_0xc31d('0x34')],qs[_0xc31d('0x36')](_0x611e0c[_0xc31d('0x30')]['fields']));_0x23e4ee['attributes']=_0x23e4ee[_0xc31d('0x35')][_0xc31d('0x37')]?_0x23e4ee[_0xc31d('0x35')]:_0x527168['model'];if(!_0x611e0c['query'][_0xc31d('0x38')](_0xc31d('0x39'))){_0x23e4ee[_0xc31d('0x1f')]=qs[_0xc31d('0x1f')](_0x611e0c['query'][_0xc31d('0x1f')]);_0x23e4ee['offset']=qs[_0xc31d('0x1d')](_0x611e0c[_0xc31d('0x30')][_0xc31d('0x1d')]);}_0x23e4ee[_0xc31d('0x3a')]=qs[_0xc31d('0x3b')](_0x611e0c[_0xc31d('0x30')]['sort']);_0x23e4ee[_0xc31d('0x3c')]=qs[_0xc31d('0x32')](_['pick'](_0x611e0c['query'],_0x527168[_0xc31d('0x32')]),_0x328007);if(_0x611e0c[_0xc31d('0x30')][_0xc31d('0x3d')]){_0x23e4ee['where']=_['merge'](_0x23e4ee[_0xc31d('0x3c')],{'$or':_[_0xc31d('0x2d')](_0x328007,function(_0x378555){if(_0x378555[_0xc31d('0x2f')]!==_0xc31d('0x3e')){var _0x2db5ed={};_0x2db5ed[_0x378555[_0xc31d('0x2b')]]={'$like':'%'+_0x611e0c['query'][_0xc31d('0x3d')]+'%'};return _0x2db5ed;}})});}_0x23e4ee=_[_0xc31d('0x3f')]({},_0x23e4ee,_0x611e0c[_0xc31d('0x40')]);var _0x35b1a8={'where':_0x23e4ee[_0xc31d('0x3c')]};return db[_0xc31d('0x41')][_0xc31d('0x20')](_0x35b1a8)[_0xc31d('0x28')](function(_0x2bbf12){_0x52671a['count']=_0x2bbf12;if(_0x611e0c[_0xc31d('0x30')]['includeAll']){_0x23e4ee[_0xc31d('0x42')]=[{'all':!![]}];}return db[_0xc31d('0x41')]['findAll'](_0x23e4ee);})[_0xc31d('0x28')](function(_0x5d8610){_0x52671a[_0xc31d('0x43')]=_0x5d8610;return _0x52671a;})['then'](respondWithFilteredResult(_0x17a3f1,_0x23e4ee))['catch'](handleError(_0x17a3f1,null));};exports[_0xc31d('0x44')]=function(_0x5da1d7,_0x44918b){var _0x4b7ff4={'raw':!![],'where':{'id':_0x5da1d7[_0xc31d('0x45')]['id']}},_0x5a48a1={};_0x5a48a1[_0xc31d('0x34')]=_[_0xc31d('0x31')](db[_0xc31d('0x41')]['rawAttributes']);_0x5a48a1[_0xc31d('0x30')]=_['keys'](_0x5da1d7[_0xc31d('0x30')]);_0x5a48a1[_0xc31d('0x32')]=_['intersection'](_0x5a48a1['model'],_0x5a48a1[_0xc31d('0x30')]);_0x4b7ff4[_0xc31d('0x35')]=_[_0xc31d('0x33')](_0x5a48a1[_0xc31d('0x34')],qs[_0xc31d('0x36')](_0x5da1d7[_0xc31d('0x30')]['fields']));_0x4b7ff4['attributes']=_0x4b7ff4['attributes']['length']?_0x4b7ff4[_0xc31d('0x35')]:_0x5a48a1[_0xc31d('0x34')];if(_0x5da1d7[_0xc31d('0x30')]['includeAll']){_0x4b7ff4[_0xc31d('0x42')]=[{'all':!![]}];}_0x4b7ff4=_[_0xc31d('0x3f')]({},_0x4b7ff4,_0x5da1d7['options']);return db[_0xc31d('0x41')][_0xc31d('0x46')](_0x4b7ff4)[_0xc31d('0x28')](handleEntityNotFound(_0x44918b,null))[_0xc31d('0x28')](respondWithResult(_0x44918b,null))[_0xc31d('0x47')](handleError(_0x44918b,null));};exports['create']=function(_0x34ac4e,_0x3c1de0){return db[_0xc31d('0x41')]['create'](_0x34ac4e[_0xc31d('0x48')],{})[_0xc31d('0x28')](respondWithResult(_0x3c1de0,0xc9))[_0xc31d('0x47')](handleError(_0x3c1de0,null));};exports['update']=function(_0x2f3d12,_0x2a5c82){if(_0x2f3d12[_0xc31d('0x48')]['id']){delete _0x2f3d12[_0xc31d('0x48')]['id'];}return db[_0xc31d('0x41')][_0xc31d('0x46')]({'where':{'id':_0x2f3d12[_0xc31d('0x45')]['id']}})[_0xc31d('0x28')](handleEntityNotFound(_0x2a5c82,null))[_0xc31d('0x28')](saveUpdates(_0x2f3d12['body'],null))[_0xc31d('0x28')](respondWithResult(_0x2a5c82,null))['catch'](handleError(_0x2a5c82,null));};exports[_0xc31d('0x27')]=function(_0x5d3826,_0x23744a){return db['SquareReport']['find']({'where':{'id':_0x5d3826[_0xc31d('0x45')]['id']}})[_0xc31d('0x28')](handleEntityNotFound(_0x23744a,null))[_0xc31d('0x28')](removeEntity(_0x23744a,null))[_0xc31d('0x47')](handleError(_0x23744a,null));};exports[_0xc31d('0x49')]=function(_0x5198fc,_0x50582a){return db[_0xc31d('0x41')][_0xc31d('0x49')]()[_0xc31d('0x28')](respondWithResult(_0x50582a,null))[_0xc31d('0x47')](handleError(_0x50582a,null));};
\ No newline at end of file
+var _0x5f65=['Content-Range','reject','save','update','then','destroy','error','name','send','index','map','SquareReport','type','key','keys','intersection','attributes','model','fields','query','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x5f65,0xb0));var _0x55f6=function(_0x8a969d,_0x339d9f){_0x8a969d=_0x8a969d-0x0;var _0x1d8dc7=_0x5f65[_0x8a969d];return _0x1d8dc7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x55f6('0x0'));var rp=require(_0x55f6('0x1'));var moment=require('moment');var BPromise=require(_0x55f6('0x2'));var Mustache=require(_0x55f6('0x3'));var util=require(_0x55f6('0x4'));var path=require(_0x55f6('0x5'));var sox=require(_0x55f6('0x6'));var csv=require(_0x55f6('0x7'));var ejs=require(_0x55f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x55f6('0x9'));var squel=require(_0x55f6('0xa'));var crypto=require('crypto');var jsforce=require(_0x55f6('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x55f6('0xc'));var Papa=require(_0x55f6('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x55f6('0xe'));var logger=require(_0x55f6('0xf'))('api');var utils=require(_0x55f6('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x55f6('0x11'));var db=require(_0x55f6('0x12'))['db'];function respondWithStatusCode(_0x5dcbfd,_0x1f4b4b){_0x1f4b4b=_0x1f4b4b||0xcc;return function(_0x50c813){if(_0x50c813){return _0x5dcbfd[_0x55f6('0x13')](_0x1f4b4b);}return _0x5dcbfd['status'](_0x1f4b4b)[_0x55f6('0x14')]();};}function respondWithResult(_0x5dd358,_0x12fe93){_0x12fe93=_0x12fe93||0xc8;return function(_0x429974){if(_0x429974){return _0x5dd358[_0x55f6('0x15')](_0x12fe93)[_0x55f6('0x16')](_0x429974);}};}function respondWithFilteredResult(_0x5ce4d,_0x4e1e96){return function(_0x2a258b){if(_0x2a258b){var _0x10e780=typeof _0x4e1e96['offset']===_0x55f6('0x17')&&typeof _0x4e1e96[_0x55f6('0x18')]===_0x55f6('0x17');var _0x20989d=_0x2a258b[_0x55f6('0x19')];var _0x591c38=_0x10e780?0x0:_0x4e1e96[_0x55f6('0x1a')];var _0x40d982=_0x10e780?_0x2a258b[_0x55f6('0x19')]:_0x4e1e96['offset']+_0x4e1e96[_0x55f6('0x18')];var _0x4c9985;if(_0x40d982>=_0x20989d){_0x40d982=_0x20989d;_0x4c9985=0xc8;}else{_0x4c9985=0xce;}_0x5ce4d['status'](_0x4c9985);return _0x5ce4d[_0x55f6('0x1b')](_0x55f6('0x1c'),_0x591c38+'-'+_0x40d982+'/'+_0x20989d)['json'](_0x2a258b);}return null;};}function patchUpdates(_0x364ebf){return function(_0x35349f){try{jsonpatch['apply'](_0x35349f,_0x364ebf,!![]);}catch(_0x4355d9){return BPromise[_0x55f6('0x1d')](_0x4355d9);}return _0x35349f[_0x55f6('0x1e')]();};}function saveUpdates(_0x27d8b0,_0x5b9b67){return function(_0x3620bb){if(_0x3620bb){return _0x3620bb[_0x55f6('0x1f')](_0x27d8b0)[_0x55f6('0x20')](function(_0x384154){return _0x384154;});}return null;};}function removeEntity(_0x16b0b6,_0x403978){return function(_0x31979a){if(_0x31979a){return _0x31979a[_0x55f6('0x21')]()[_0x55f6('0x20')](function(){_0x16b0b6[_0x55f6('0x15')](0xcc)[_0x55f6('0x14')]();});}};}function handleEntityNotFound(_0x5ab6cb,_0x4ba46d){return function(_0x14f46f){if(!_0x14f46f){_0x5ab6cb[_0x55f6('0x13')](0x194);}return _0x14f46f;};}function handleError(_0x31305a,_0x2a29d5){_0x2a29d5=_0x2a29d5||0x1f4;return function(_0x232bef){logger[_0x55f6('0x22')](_0x232bef['stack']);if(_0x232bef[_0x55f6('0x23')]){delete _0x232bef[_0x55f6('0x23')];}_0x31305a['status'](_0x2a29d5)[_0x55f6('0x24')](_0x232bef);};}exports[_0x55f6('0x25')]=function(_0x538e57,_0x409d84){var _0x4e1cff={},_0x5a84a7={},_0xea4ccc={'count':0x0,'rows':[]};var _0x24bbd6=_[_0x55f6('0x26')](db[_0x55f6('0x27')]['rawAttributes'],function(_0x29227b){return{'name':_0x29227b['fieldName'],'type':_0x29227b[_0x55f6('0x28')][_0x55f6('0x29')]};});_0x5a84a7['model']=_[_0x55f6('0x26')](_0x24bbd6,_0x55f6('0x23'));_0x5a84a7['query']=_[_0x55f6('0x2a')](_0x538e57['query']);_0x5a84a7['filters']=_[_0x55f6('0x2b')](_0x5a84a7['model'],_0x5a84a7['query']);_0x4e1cff[_0x55f6('0x2c')]=_['intersection'](_0x5a84a7[_0x55f6('0x2d')],qs[_0x55f6('0x2e')](_0x538e57[_0x55f6('0x2f')]['fields']));_0x4e1cff[_0x55f6('0x2c')]=_0x4e1cff['attributes']['length']?_0x4e1cff['attributes']:_0x5a84a7[_0x55f6('0x2d')];if(!_0x538e57['query']['hasOwnProperty'](_0x55f6('0x30'))){_0x4e1cff[_0x55f6('0x18')]=qs['limit'](_0x538e57[_0x55f6('0x2f')][_0x55f6('0x18')]);_0x4e1cff['offset']=qs[_0x55f6('0x1a')](_0x538e57[_0x55f6('0x2f')][_0x55f6('0x1a')]);}_0x4e1cff[_0x55f6('0x31')]=qs['sort'](_0x538e57[_0x55f6('0x2f')][_0x55f6('0x32')]);_0x4e1cff[_0x55f6('0x33')]=qs[_0x55f6('0x34')](_[_0x55f6('0x35')](_0x538e57[_0x55f6('0x2f')],_0x5a84a7[_0x55f6('0x34')]),_0x24bbd6);if(_0x538e57[_0x55f6('0x2f')][_0x55f6('0x36')]){_0x4e1cff[_0x55f6('0x33')]=_[_0x55f6('0x37')](_0x4e1cff[_0x55f6('0x33')],{'$or':_[_0x55f6('0x26')](_0x24bbd6,function(_0x68c66e){if(_0x68c66e['type']!=='VIRTUAL'){var _0x17aed4={};_0x17aed4[_0x68c66e['name']]={'$like':'%'+_0x538e57[_0x55f6('0x2f')][_0x55f6('0x36')]+'%'};return _0x17aed4;}})});}_0x4e1cff=_[_0x55f6('0x37')]({},_0x4e1cff,_0x538e57[_0x55f6('0x38')]);var _0x3221f9={'where':_0x4e1cff[_0x55f6('0x33')]};return db[_0x55f6('0x27')]['count'](_0x3221f9)[_0x55f6('0x20')](function(_0x1d0a8e){_0xea4ccc[_0x55f6('0x19')]=_0x1d0a8e;if(_0x538e57['query'][_0x55f6('0x39')]){_0x4e1cff[_0x55f6('0x3a')]=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x4e1cff);})[_0x55f6('0x20')](function(_0x286114){_0xea4ccc[_0x55f6('0x3b')]=_0x286114;return _0xea4ccc;})['then'](respondWithFilteredResult(_0x409d84,_0x4e1cff))[_0x55f6('0x3c')](handleError(_0x409d84,null));};exports[_0x55f6('0x3d')]=function(_0x345d88,_0x585931){var _0x364c0f={'raw':!![],'where':{'id':_0x345d88[_0x55f6('0x3e')]['id']}},_0x44106d={};_0x44106d[_0x55f6('0x2d')]=_[_0x55f6('0x2a')](db[_0x55f6('0x27')][_0x55f6('0x3f')]);_0x44106d[_0x55f6('0x2f')]=_['keys'](_0x345d88['query']);_0x44106d[_0x55f6('0x34')]=_['intersection'](_0x44106d[_0x55f6('0x2d')],_0x44106d[_0x55f6('0x2f')]);_0x364c0f[_0x55f6('0x2c')]=_[_0x55f6('0x2b')](_0x44106d['model'],qs[_0x55f6('0x2e')](_0x345d88['query'][_0x55f6('0x2e')]));_0x364c0f[_0x55f6('0x2c')]=_0x364c0f[_0x55f6('0x2c')][_0x55f6('0x40')]?_0x364c0f[_0x55f6('0x2c')]:_0x44106d[_0x55f6('0x2d')];if(_0x345d88[_0x55f6('0x2f')][_0x55f6('0x39')]){_0x364c0f[_0x55f6('0x3a')]=[{'all':!![]}];}_0x364c0f=_[_0x55f6('0x37')]({},_0x364c0f,_0x345d88[_0x55f6('0x38')]);return db[_0x55f6('0x27')][_0x55f6('0x41')](_0x364c0f)[_0x55f6('0x20')](handleEntityNotFound(_0x585931,null))['then'](respondWithResult(_0x585931,null))[_0x55f6('0x3c')](handleError(_0x585931,null));};exports['create']=function(_0x12dce0,_0x230754){return db[_0x55f6('0x27')][_0x55f6('0x42')](_0x12dce0[_0x55f6('0x43')],{})[_0x55f6('0x20')](respondWithResult(_0x230754,0xc9))['catch'](handleError(_0x230754,null));};exports[_0x55f6('0x1f')]=function(_0x16b061,_0x5f092b){if(_0x16b061['body']['id']){delete _0x16b061[_0x55f6('0x43')]['id'];}return db[_0x55f6('0x27')][_0x55f6('0x41')]({'where':{'id':_0x16b061[_0x55f6('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5f092b,null))[_0x55f6('0x20')](saveUpdates(_0x16b061[_0x55f6('0x43')],null))[_0x55f6('0x20')](respondWithResult(_0x5f092b,null))[_0x55f6('0x3c')](handleError(_0x5f092b,null));};exports[_0x55f6('0x21')]=function(_0x5bf8fb,_0x166648){return db[_0x55f6('0x27')][_0x55f6('0x41')]({'where':{'id':_0x5bf8fb[_0x55f6('0x3e')]['id']}})[_0x55f6('0x20')](handleEntityNotFound(_0x166648,null))[_0x55f6('0x20')](removeEntity(_0x166648,null))[_0x55f6('0x3c')](handleError(_0x166648,null));};exports['describe']=function(_0x76a59b,_0x15a610){return db[_0x55f6('0x27')]['describe']()[_0x55f6('0x20')](respondWithResult(_0x15a610,null))[_0x55f6('0x3c')](handleError(_0x15a610,null));};
\ No newline at end of file
index c1d8264..44b8183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05a7=['../../config/environment','./squareReport.attributes','exports','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0x05a7,0xa2));var _0x705a=function(_0x466f2e,_0x5e2a7f){_0x466f2e=_0x466f2e-0x0;var _0x22dfbb=_0x05a7[_0x466f2e];return _0x22dfbb;};'use strict';var _=require(_0x705a('0x0'));var util=require(_0x705a('0x1'));var logger=require(_0x705a('0x2'))(_0x705a('0x3'));var moment=require(_0x705a('0x4'));var BPromise=require(_0x705a('0x5'));var rp=require(_0x705a('0x6'));var fs=require('fs');var path=require(_0x705a('0x7'));var rimraf=require('rimraf');var config=require(_0x705a('0x8'));var attributes=require(_0x705a('0x9'));module[_0x705a('0xa')]=function(_0x27e649,_0x1029e4){return _0x27e649['define'](_0x705a('0xb'),attributes,{'tableName':_0x705a('0xc'),'paranoid':![],'indexes':[{'name':_0x705a('0xd'),'fields':[_0x705a('0xe'),_0x705a('0xf')]},{'name':_0x705a('0x10'),'fields':[_0x705a('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x82ca=['rimraf','../../config/environment','./squareReport.attributes','define','report_square','uid_pname','project_name','leaveAt','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3a4549,_0x42524a){var _0x4582ea=function(_0x241887){while(--_0x241887){_0x3a4549['push'](_0x3a4549['shift']());}};_0x4582ea(++_0x42524a);}(_0x82ca,0x152));var _0xa82c=function(_0x35d8af,_0x14fd75){_0x35d8af=_0x35d8af-0x0;var _0x1d08b0=_0x82ca[_0x35d8af];return _0x1d08b0;};'use strict';var _=require(_0xa82c('0x0'));var util=require('util');var logger=require(_0xa82c('0x1'))(_0xa82c('0x2'));var moment=require(_0xa82c('0x3'));var BPromise=require(_0xa82c('0x4'));var rp=require(_0xa82c('0x5'));var fs=require('fs');var path=require(_0xa82c('0x6'));var rimraf=require(_0xa82c('0x7'));var config=require(_0xa82c('0x8'));var attributes=require(_0xa82c('0x9'));module['exports']=function(_0x5ad540,_0x3e7791){return _0x5ad540[_0xa82c('0xa')]('SquareReport',attributes,{'tableName':_0xa82c('0xb'),'paranoid':![],'indexes':[{'name':_0xa82c('0xc'),'fields':['uniqueid',_0xa82c('0xd')]},{'name':'leaveAt','fields':[_0xa82c('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index e504c39..8efa807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfd8=['CreateSquareReport','UpdateSquareReport','update','body','where','attributes','limit','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','SquareReport','create','options','raw'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbfd8,0x147));var _0x8bfd=function(_0x77c01a,_0x1e1d72){_0x77c01a=_0x77c01a-0x0;var _0x8cfd27=_0xbfd8[_0x77c01a];return _0x8cfd27;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8bfd('0x0'));var fs=require('fs');var Redis=require(_0x8bfd('0x1'));var db=require(_0x8bfd('0x2'))['db'];var utils=require(_0x8bfd('0x3'));var logger=require(_0x8bfd('0x4'))(_0x8bfd('0x5'));var config=require(_0x8bfd('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8bfd('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x194ecb,_0x1d3799,_0xa291d){return new BPromise(function(_0x11b6d0,_0x208f07){return client[_0x8bfd('0x8')](_0x194ecb,_0xa291d)[_0x8bfd('0x9')](function(_0x4ccb81){logger['info'](_0x8bfd('0xa'),_0x1d3799,'request\x20sent');logger[_0x8bfd('0xb')](_0x8bfd('0xc'),_0x1d3799,_0x8bfd('0xd'),JSON[_0x8bfd('0xe')](_0x4ccb81));if(_0x4ccb81[_0x8bfd('0xf')]){if(_0x4ccb81['error'][_0x8bfd('0x10')]===0x1f4){logger['error'](_0x8bfd('0xa'),_0x1d3799,_0x4ccb81[_0x8bfd('0xf')]['message']);return _0x208f07(_0x4ccb81[_0x8bfd('0xf')][_0x8bfd('0x11')]);}logger['error']('SquareReport,\x20%s,\x20%s',_0x1d3799,_0x4ccb81['error']['message']);return _0x11b6d0(_0x4ccb81[_0x8bfd('0xf')]['message']);}else{logger[_0x8bfd('0x12')](_0x8bfd('0xa'),_0x1d3799,_0x8bfd('0xd'));_0x11b6d0(_0x4ccb81[_0x8bfd('0x13')][_0x8bfd('0x11')]);}})[_0x8bfd('0x14')](function(_0x1f4513){logger[_0x8bfd('0xf')](_0x8bfd('0xa'),_0x1d3799,_0x1f4513);_0x208f07(_0x1f4513);});});}exports['CreateSquareReport']=function(_0x14c2b4){var _0x275fc0=this;return new Promise(function(_0x522c47,_0x1b2392){return db[_0x8bfd('0x15')][_0x8bfd('0x16')](_0x14c2b4['body'],{'raw':_0x14c2b4[_0x8bfd('0x17')]?_0x14c2b4[_0x8bfd('0x17')][_0x8bfd('0x18')]===undefined?!![]:![]:!![]})[_0x8bfd('0x9')](function(_0x56c2ac){logger[_0x8bfd('0x12')](_0x8bfd('0x19'),_0x14c2b4);logger[_0x8bfd('0xb')](_0x8bfd('0x19'),_0x14c2b4,JSON[_0x8bfd('0xe')](_0x56c2ac));_0x522c47(_0x56c2ac);})[_0x8bfd('0x14')](function(_0x56de7a){logger['error'](_0x8bfd('0x19'),_0x56de7a[_0x8bfd('0x11')],_0x14c2b4);_0x1b2392(_0x275fc0[_0x8bfd('0xf')](0x1f4,_0x56de7a[_0x8bfd('0x11')]));});});};exports[_0x8bfd('0x1a')]=function(_0x2f7221){var _0x2cabf1=this;return new Promise(function(_0x3a1374,_0x35a789){return db['SquareReport'][_0x8bfd('0x1b')](_0x2f7221[_0x8bfd('0x1c')],{'raw':_0x2f7221[_0x8bfd('0x17')]?_0x2f7221[_0x8bfd('0x17')][_0x8bfd('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f7221[_0x8bfd('0x17')]?_0x2f7221[_0x8bfd('0x17')][_0x8bfd('0x1d')]||null:null,'attributes':_0x2f7221[_0x8bfd('0x17')]?_0x2f7221[_0x8bfd('0x17')][_0x8bfd('0x1e')]||null:null,'limit':_0x2f7221['options']?_0x2f7221['options'][_0x8bfd('0x1f')]||null:null})['then'](function(_0x3cab0f){logger[_0x8bfd('0x12')](_0x8bfd('0x1a'),_0x2f7221);logger['debug'](_0x8bfd('0x1a'),_0x2f7221,JSON[_0x8bfd('0xe')](_0x3cab0f));_0x3a1374(_0x3cab0f);})[_0x8bfd('0x14')](function(_0x9ab06a){logger[_0x8bfd('0xf')]('UpdateSquareReport',_0x9ab06a['message'],_0x2f7221);_0x35a789(_0x2cabf1[_0x8bfd('0xf')](0x1f4,_0x9ab06a['message']));});});};
\ No newline at end of file
+var _0x0333=['jayson/promise','client','http','request','SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','CreateSquareReport','SquareReport','create','options','raw','then','UpdateSquareReport','update','body','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x556918,_0x1cebf5){var _0x4496cc=function(_0x3d17cb){while(--_0x3d17cb){_0x556918['push'](_0x556918['shift']());}};_0x4496cc(++_0x1cebf5);}(_0x0333,0x129));var _0x3033=function(_0x52e363,_0x48062a){_0x52e363=_0x52e363-0x0;var _0x3fc2b5=_0x0333[_0x52e363];return _0x3fc2b5;};'use strict';var _=require(_0x3033('0x0'));var util=require(_0x3033('0x1'));var moment=require('moment');var BPromise=require(_0x3033('0x2'));var rs=require(_0x3033('0x3'));var fs=require('fs');var Redis=require(_0x3033('0x4'));var db=require(_0x3033('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3033('0x6'))(_0x3033('0x7'));var config=require(_0x3033('0x8'));var jayson=require(_0x3033('0x9'));var client=jayson[_0x3033('0xa')][_0x3033('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x559178,_0x45e6d5,_0x1aa777){return new BPromise(function(_0x55c8e4,_0x4e5a08){return client[_0x3033('0xc')](_0x559178,_0x1aa777)['then'](function(_0x13e905){logger['info'](_0x3033('0xd'),_0x45e6d5,_0x3033('0xe'));logger[_0x3033('0xf')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x45e6d5,'request\x20sent',JSON[_0x3033('0x10')](_0x13e905));if(_0x13e905[_0x3033('0x11')]){if(_0x13e905['error']['code']===0x1f4){logger[_0x3033('0x11')]('SquareReport,\x20%s,\x20%s',_0x45e6d5,_0x13e905[_0x3033('0x11')][_0x3033('0x12')]);return _0x4e5a08(_0x13e905[_0x3033('0x11')][_0x3033('0x12')]);}logger['error'](_0x3033('0xd'),_0x45e6d5,_0x13e905[_0x3033('0x11')][_0x3033('0x12')]);return _0x55c8e4(_0x13e905[_0x3033('0x11')][_0x3033('0x12')]);}else{logger[_0x3033('0x13')](_0x3033('0xd'),_0x45e6d5,'request\x20sent');_0x55c8e4(_0x13e905[_0x3033('0x14')]['message']);}})[_0x3033('0x15')](function(_0x8de160){logger[_0x3033('0x11')](_0x3033('0xd'),_0x45e6d5,_0x8de160);_0x4e5a08(_0x8de160);});});}exports[_0x3033('0x16')]=function(_0x5485d4){var _0x34f33f=this;return new Promise(function(_0x217733,_0x36339c){return db[_0x3033('0x17')][_0x3033('0x18')](_0x5485d4['body'],{'raw':_0x5485d4[_0x3033('0x19')]?_0x5485d4[_0x3033('0x19')][_0x3033('0x1a')]===undefined?!![]:![]:!![]})[_0x3033('0x1b')](function(_0x4e040d){logger['info'](_0x3033('0x16'),_0x5485d4);logger[_0x3033('0xf')](_0x3033('0x16'),_0x5485d4,JSON['stringify'](_0x4e040d));_0x217733(_0x4e040d);})[_0x3033('0x15')](function(_0x4774c3){logger[_0x3033('0x11')](_0x3033('0x16'),_0x4774c3['message'],_0x5485d4);_0x36339c(_0x34f33f['error'](0x1f4,_0x4774c3[_0x3033('0x12')]));});});};exports[_0x3033('0x1c')]=function(_0x40a8c8){var _0x2087dd=this;return new Promise(function(_0x36b082,_0x447e72){return db[_0x3033('0x17')][_0x3033('0x1d')](_0x40a8c8[_0x3033('0x1e')],{'raw':_0x40a8c8[_0x3033('0x19')]?_0x40a8c8[_0x3033('0x19')][_0x3033('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40a8c8[_0x3033('0x19')]?_0x40a8c8[_0x3033('0x19')][_0x3033('0x1f')]||null:null,'attributes':_0x40a8c8['options']?_0x40a8c8[_0x3033('0x19')][_0x3033('0x20')]||null:null,'limit':_0x40a8c8[_0x3033('0x19')]?_0x40a8c8[_0x3033('0x19')][_0x3033('0x21')]||null:null})['then'](function(_0x58d082){logger[_0x3033('0x13')](_0x3033('0x1c'),_0x40a8c8);logger[_0x3033('0xf')](_0x3033('0x1c'),_0x40a8c8,JSON[_0x3033('0x10')](_0x58d082));_0x36b082(_0x58d082);})[_0x3033('0x15')](function(_0x197d2f){logger[_0x3033('0x11')]('UpdateSquareReport',_0x197d2f[_0x3033('0x12')],_0x40a8c8);_0x447e72(_0x2087dd[_0x3033('0x11')](0x1f4,_0x197d2f[_0x3033('0x12')]));});});};
\ No newline at end of file
index 08bb70d..973d9d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc1=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','delete','destroy','exports','multer'];(function(_0x30d083,_0x3d2fab){var _0x2376b2=function(_0x258d87){while(--_0x258d87){_0x30d083['push'](_0x30d083['shift']());}};_0x2376b2(++_0x3d2fab);}(_0x8fc1,0x17b));var _0x18fc=function(_0x5e3cce,_0x2142f4){_0x5e3cce=_0x5e3cce-0x0;var _0x2786ee=_0x8fc1[_0x5e3cce];return _0x2786ee;};'use strict';var multer=require(_0x18fc('0x0'));var util=require(_0x18fc('0x1'));var path=require('path');var timeout=require(_0x18fc('0x2'));var express=require(_0x18fc('0x3'));var router=express[_0x18fc('0x4')]();var fs_extra=require(_0x18fc('0x5'));var auth=require(_0x18fc('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x18fc('0x7'));router[_0x18fc('0x8')]('/',auth[_0x18fc('0x9')](),controller[_0x18fc('0xa')]);router[_0x18fc('0x8')](_0x18fc('0xb'),auth['isAuthenticated'](),controller[_0x18fc('0xc')]);router[_0x18fc('0x8')](_0x18fc('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x18fc('0xe')]('/',auth[_0x18fc('0x9')](),controller['create']);router[_0x18fc('0xf')](_0x18fc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x18fc('0x10')](_0x18fc('0xd'),auth['isAuthenticated'](),controller[_0x18fc('0x11')]);module[_0x18fc('0x12')]=router;
\ No newline at end of file
+var _0x7c08=['./squareReportDetail.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x42f1dd,_0x2e9366){var _0x182a11=function(_0x4caf9d){while(--_0x4caf9d){_0x42f1dd['push'](_0x42f1dd['shift']());}};_0x182a11(++_0x2e9366);}(_0x7c08,0x6a));var _0x87c0=function(_0x2b71ac,_0x5aeeb5){_0x2b71ac=_0x2b71ac-0x0;var _0xe9c88f=_0x7c08[_0x2b71ac];return _0xe9c88f;};'use strict';var multer=require('multer');var util=require(_0x87c0('0x0'));var path=require(_0x87c0('0x1'));var timeout=require(_0x87c0('0x2'));var express=require(_0x87c0('0x3'));var router=express[_0x87c0('0x4')]();var fs_extra=require(_0x87c0('0x5'));var auth=require(_0x87c0('0x6'));var interaction=require(_0x87c0('0x7'));var config=require(_0x87c0('0x8'));var controller=require(_0x87c0('0x9'));router[_0x87c0('0xa')]('/',auth['isAuthenticated'](),controller[_0x87c0('0xb')]);router[_0x87c0('0xa')](_0x87c0('0xc'),auth['isAuthenticated'](),controller[_0x87c0('0xd')]);router[_0x87c0('0xa')](_0x87c0('0xe'),auth[_0x87c0('0xf')](),controller[_0x87c0('0x10')]);router[_0x87c0('0x11')]('/',auth[_0x87c0('0xf')](),controller[_0x87c0('0x12')]);router[_0x87c0('0x13')](_0x87c0('0xe'),auth[_0x87c0('0xf')](),controller[_0x87c0('0x14')]);router['delete'](_0x87c0('0xe'),auth['isAuthenticated'](),controller[_0x87c0('0x15')]);module[_0x87c0('0x16')]=router;
\ No newline at end of file
index 0ddcc82..5eb0f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['STRING','sequelize'];(function(_0x36436d,_0x20292c){var _0x34615d=function(_0x5447af){while(--_0x5447af){_0x36436d['push'](_0x36436d['shift']());}};_0x34615d(++_0x20292c);}(_0xdace,0xc5));var _0xedac=function(_0x234ae1,_0x42bdd6){_0x234ae1=_0x234ae1-0x0;var _0x227ba0=_0xdace[_0x234ae1];return _0x227ba0;};'use strict';var Sequelize=require(_0xedac('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xedac('0x1')]},'node':{'type':Sequelize[_0xedac('0x1')]},'application':{'type':Sequelize[_0xedac('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0xedac('0x1')]},'callerid':{'type':Sequelize[_0xedac('0x1')]}};
\ No newline at end of file
+var _0x5989=['TEXT','exports','STRING'];(function(_0x35e958,_0x100d33){var _0x4bd663=function(_0x16194d){while(--_0x16194d){_0x35e958['push'](_0x35e958['shift']());}};_0x4bd663(++_0x100d33);}(_0x5989,0x1ae));var _0x9598=function(_0x718d1,_0x358a41){_0x718d1=_0x718d1-0x0;var _0x20697b=_0x5989[_0x718d1];return _0x20697b;};'use strict';var Sequelize=require('sequelize');module[_0x9598('0x0')]={'uniqueid':{'type':Sequelize[_0x9598('0x1')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x9598('0x1')]},'data':{'type':Sequelize[_0x9598('0x2')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x9598('0x1')]}};
\ No newline at end of file
index c7489c0..5e19a01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x446f=['undefined','limit','count','offset','set','apply','reject','update','then','destroy','error','stack','name','map','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','SquareDetailsReport','rawAttributes','intersection','include','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0xd50f7d,_0x431488){var _0x1af670=function(_0x980e5b){while(--_0x980e5b){_0xd50f7d['push'](_0xd50f7d['shift']());}};_0x1af670(++_0x431488);}(_0x446f,0x1aa));var _0xf446=function(_0x1abded,_0xd2b6ef){_0x1abded=_0x1abded-0x0;var _0x2ed35a=_0x446f[_0x1abded];return _0x2ed35a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf446('0x0'));var zipdir=require(_0xf446('0x1'));var jsonpatch=require(_0xf446('0x2'));var rp=require(_0xf446('0x3'));var moment=require(_0xf446('0x4'));var BPromise=require(_0xf446('0x5'));var Mustache=require(_0xf446('0x6'));var util=require(_0xf446('0x7'));var path=require(_0xf446('0x8'));var sox=require('sox');var csv=require(_0xf446('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf446('0xa'));var _=require(_0xf446('0xb'));var squel=require(_0xf446('0xc'));var crypto=require(_0xf446('0xd'));var jsforce=require(_0xf446('0xe'));var deskjs=require(_0xf446('0xf'));var toCsv=require(_0xf446('0x9'));var querystring=require(_0xf446('0x10'));var Papa=require(_0xf446('0x11'));var Redis=require(_0xf446('0x12'));var authService=require(_0xf446('0x13'));var qs=require(_0xf446('0x14'));var as=require(_0xf446('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf446('0x16'))(_0xf446('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf446('0x18'));var db=require(_0xf446('0x19'))['db'];function respondWithStatusCode(_0x500836,_0x544a60){_0x544a60=_0x544a60||0xcc;return function(_0x466b6d){if(_0x466b6d){return _0x500836[_0xf446('0x1a')](_0x544a60);}return _0x500836['status'](_0x544a60)[_0xf446('0x1b')]();};}function respondWithResult(_0x1cfe92,_0x345419){_0x345419=_0x345419||0xc8;return function(_0x24cc22){if(_0x24cc22){return _0x1cfe92[_0xf446('0x1c')](_0x345419)[_0xf446('0x1d')](_0x24cc22);}};}function respondWithFilteredResult(_0x54d596,_0x2bb33e){return function(_0x29d6fa){if(_0x29d6fa){var _0x3a7d04=typeof _0x2bb33e['offset']===_0xf446('0x1e')&&typeof _0x2bb33e[_0xf446('0x1f')]===_0xf446('0x1e');var _0x10a19d=_0x29d6fa[_0xf446('0x20')];var _0x260a53=_0x3a7d04?0x0:_0x2bb33e['offset'];var _0x1b8d4d=_0x3a7d04?_0x29d6fa[_0xf446('0x20')]:_0x2bb33e[_0xf446('0x21')]+_0x2bb33e['limit'];var _0x553331;if(_0x1b8d4d>=_0x10a19d){_0x1b8d4d=_0x10a19d;_0x553331=0xc8;}else{_0x553331=0xce;}_0x54d596['status'](_0x553331);return _0x54d596[_0xf446('0x22')]('Content-Range',_0x260a53+'-'+_0x1b8d4d+'/'+_0x10a19d)[_0xf446('0x1d')](_0x29d6fa);}return null;};}function patchUpdates(_0x586bae){return function(_0x382eba){try{jsonpatch[_0xf446('0x23')](_0x382eba,_0x586bae,!![]);}catch(_0x2a60ab){return BPromise[_0xf446('0x24')](_0x2a60ab);}return _0x382eba['save']();};}function saveUpdates(_0x45d771,_0x344311){return function(_0x33564d){if(_0x33564d){return _0x33564d[_0xf446('0x25')](_0x45d771)[_0xf446('0x26')](function(_0x2c1d27){return _0x2c1d27;});}return null;};}function removeEntity(_0x1de30e,_0xd7b720){return function(_0x527c8a){if(_0x527c8a){return _0x527c8a[_0xf446('0x27')]()[_0xf446('0x26')](function(){_0x1de30e['status'](0xcc)[_0xf446('0x1b')]();});}};}function handleEntityNotFound(_0x3feef0,_0x5d6b7b){return function(_0x50cc48){if(!_0x50cc48){_0x3feef0['sendStatus'](0x194);}return _0x50cc48;};}function handleError(_0x123e26,_0x19b76d){_0x19b76d=_0x19b76d||0x1f4;return function(_0x1a7437){logger[_0xf446('0x28')](_0x1a7437[_0xf446('0x29')]);if(_0x1a7437[_0xf446('0x2a')]){delete _0x1a7437[_0xf446('0x2a')];}_0x123e26[_0xf446('0x1c')](_0x19b76d)['send'](_0x1a7437);};}exports['index']=function(_0x478966,_0x1c92dd){var _0x1fefc4={},_0x4bc331={},_0x20dbd7={'count':0x0,'rows':[]};var _0x2a00af=_[_0xf446('0x2b')](db['SquareDetailsReport']['rawAttributes'],function(_0x3f1d93){return{'name':_0x3f1d93['fieldName'],'type':_0x3f1d93[_0xf446('0x2c')][_0xf446('0x2d')]};});_0x4bc331[_0xf446('0x2e')]=_[_0xf446('0x2b')](_0x2a00af,_0xf446('0x2a'));_0x4bc331[_0xf446('0x2f')]=_[_0xf446('0x30')](_0x478966[_0xf446('0x2f')]);_0x4bc331['filters']=_['intersection'](_0x4bc331[_0xf446('0x2e')],_0x4bc331['query']);_0x1fefc4[_0xf446('0x31')]=_['intersection'](_0x4bc331[_0xf446('0x2e')],qs['fields'](_0x478966[_0xf446('0x2f')][_0xf446('0x32')]));_0x1fefc4['attributes']=_0x1fefc4['attributes'][_0xf446('0x33')]?_0x1fefc4[_0xf446('0x31')]:_0x4bc331['model'];if(!_0x478966['query'][_0xf446('0x34')](_0xf446('0x35'))){_0x1fefc4[_0xf446('0x1f')]=qs[_0xf446('0x1f')](_0x478966[_0xf446('0x2f')][_0xf446('0x1f')]);_0x1fefc4[_0xf446('0x21')]=qs[_0xf446('0x21')](_0x478966[_0xf446('0x2f')][_0xf446('0x21')]);}_0x1fefc4['order']=qs[_0xf446('0x36')](_0x478966['query'][_0xf446('0x36')]);_0x1fefc4[_0xf446('0x37')]=qs['filters'](_[_0xf446('0x38')](_0x478966[_0xf446('0x2f')],_0x4bc331[_0xf446('0x39')]),_0x2a00af);if(_0x478966[_0xf446('0x2f')][_0xf446('0x3a')]){_0x1fefc4[_0xf446('0x37')]=_[_0xf446('0x3b')](_0x1fefc4[_0xf446('0x37')],{'$or':_[_0xf446('0x2b')](_0x2a00af,function(_0x2db846){if(_0x2db846[_0xf446('0x2c')]!==_0xf446('0x3c')){var _0x23717b={};_0x23717b[_0x2db846[_0xf446('0x2a')]]={'$like':'%'+_0x478966['query']['filter']+'%'};return _0x23717b;}})});}_0x1fefc4=_['merge']({},_0x1fefc4,_0x478966[_0xf446('0x3d')]);var _0x3ac053={'where':_0x1fefc4[_0xf446('0x37')]};return db['SquareDetailsReport']['count'](_0x3ac053)[_0xf446('0x26')](function(_0x3cf9f7){_0x20dbd7[_0xf446('0x20')]=_0x3cf9f7;if(_0x478966[_0xf446('0x2f')][_0xf446('0x3e')]){_0x1fefc4['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0xf446('0x3f')](_0x1fefc4);})[_0xf446('0x26')](function(_0x1409f9){_0x20dbd7[_0xf446('0x40')]=_0x1409f9;return _0x20dbd7;})[_0xf446('0x26')](respondWithFilteredResult(_0x1c92dd,_0x1fefc4))[_0xf446('0x41')](handleError(_0x1c92dd,null));};exports[_0xf446('0x42')]=function(_0x4081ec,_0x580418){var _0x56b7d6={'raw':!![],'where':{'id':_0x4081ec[_0xf446('0x43')]['id']}},_0x5e5355={};_0x5e5355['model']=_['keys'](db[_0xf446('0x44')][_0xf446('0x45')]);_0x5e5355[_0xf446('0x2f')]=_['keys'](_0x4081ec[_0xf446('0x2f')]);_0x5e5355['filters']=_[_0xf446('0x46')](_0x5e5355[_0xf446('0x2e')],_0x5e5355[_0xf446('0x2f')]);_0x56b7d6[_0xf446('0x31')]=_['intersection'](_0x5e5355[_0xf446('0x2e')],qs[_0xf446('0x32')](_0x4081ec['query'][_0xf446('0x32')]));_0x56b7d6[_0xf446('0x31')]=_0x56b7d6[_0xf446('0x31')][_0xf446('0x33')]?_0x56b7d6[_0xf446('0x31')]:_0x5e5355[_0xf446('0x2e')];if(_0x4081ec[_0xf446('0x2f')][_0xf446('0x3e')]){_0x56b7d6[_0xf446('0x47')]=[{'all':!![]}];}_0x56b7d6=_[_0xf446('0x3b')]({},_0x56b7d6,_0x4081ec['options']);return db[_0xf446('0x44')]['find'](_0x56b7d6)[_0xf446('0x26')](handleEntityNotFound(_0x580418,null))[_0xf446('0x26')](respondWithResult(_0x580418,null))[_0xf446('0x41')](handleError(_0x580418,null));};exports['create']=function(_0x3009b1,_0x5ebbbb){return db[_0xf446('0x44')][_0xf446('0x48')](_0x3009b1[_0xf446('0x49')],{})[_0xf446('0x26')](respondWithResult(_0x5ebbbb,0xc9))['catch'](handleError(_0x5ebbbb,null));};exports['update']=function(_0x5c22c5,_0x356fde){if(_0x5c22c5[_0xf446('0x49')]['id']){delete _0x5c22c5[_0xf446('0x49')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x5c22c5['params']['id']}})['then'](handleEntityNotFound(_0x356fde,null))[_0xf446('0x26')](saveUpdates(_0x5c22c5[_0xf446('0x49')],null))[_0xf446('0x26')](respondWithResult(_0x356fde,null))[_0xf446('0x41')](handleError(_0x356fde,null));};exports[_0xf446('0x27')]=function(_0x249cab,_0x56e3da){return db[_0xf446('0x44')][_0xf446('0x4a')]({'where':{'id':_0x249cab[_0xf446('0x43')]['id']}})[_0xf446('0x26')](handleEntityNotFound(_0x56e3da,null))[_0xf446('0x26')](removeEntity(_0x56e3da,null))[_0xf446('0x41')](handleError(_0x56e3da,null));};exports[_0xf446('0x4b')]=function(_0x2b09f4,_0x15af83){return db[_0xf446('0x44')][_0xf446('0x4b')]()[_0xf446('0x26')](respondWithResult(_0x15af83,null))['catch'](handleError(_0x15af83,null));};
\ No newline at end of file
+var _0xfab1=['attributes','intersection','model','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','params','keys','length','include','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','query','filters'];(function(_0x529a75,_0x38a354){var _0x20661f=function(_0x12b789){while(--_0x12b789){_0x529a75['push'](_0x529a75['shift']());}};_0x20661f(++_0x38a354);}(_0xfab1,0x159));var _0x1fab=function(_0x41b8d7,_0x5b936a){_0x41b8d7=_0x41b8d7-0x0;var _0x459543=_0xfab1[_0x41b8d7];return _0x459543;};'use strict';var emlformat=require(_0x1fab('0x0'));var rimraf=require(_0x1fab('0x1'));var zipdir=require(_0x1fab('0x2'));var jsonpatch=require(_0x1fab('0x3'));var rp=require(_0x1fab('0x4'));var moment=require(_0x1fab('0x5'));var BPromise=require(_0x1fab('0x6'));var Mustache=require('mustache');var util=require(_0x1fab('0x7'));var path=require(_0x1fab('0x8'));var sox=require(_0x1fab('0x9'));var csv=require(_0x1fab('0xa'));var ejs=require(_0x1fab('0xb'));var fs=require('fs');var fs_extra=require(_0x1fab('0xc'));var _=require(_0x1fab('0xd'));var squel=require(_0x1fab('0xe'));var crypto=require(_0x1fab('0xf'));var jsforce=require(_0x1fab('0x10'));var deskjs=require(_0x1fab('0x11'));var toCsv=require(_0x1fab('0xa'));var querystring=require(_0x1fab('0x12'));var Papa=require(_0x1fab('0x13'));var Redis=require(_0x1fab('0x14'));var authService=require(_0x1fab('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x1fab('0x16'));var hardwareService=require(_0x1fab('0x17'));var logger=require('../../config/logger')(_0x1fab('0x18'));var utils=require(_0x1fab('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x1fab('0x1a'));var db=require(_0x1fab('0x1b'))['db'];function respondWithStatusCode(_0xc95050,_0x453a7b){_0x453a7b=_0x453a7b||0xcc;return function(_0x1a7294){if(_0x1a7294){return _0xc95050[_0x1fab('0x1c')](_0x453a7b);}return _0xc95050[_0x1fab('0x1d')](_0x453a7b)[_0x1fab('0x1e')]();};}function respondWithResult(_0x450ee8,_0x497b97){_0x497b97=_0x497b97||0xc8;return function(_0x5ccc77){if(_0x5ccc77){return _0x450ee8['status'](_0x497b97)[_0x1fab('0x1f')](_0x5ccc77);}};}function respondWithFilteredResult(_0x455c7d,_0x2d8625){return function(_0x2d617d){if(_0x2d617d){var _0x16f186=typeof _0x2d8625[_0x1fab('0x20')]===_0x1fab('0x21')&&typeof _0x2d8625[_0x1fab('0x22')]===_0x1fab('0x21');var _0x5795a2=_0x2d617d[_0x1fab('0x23')];var _0x2bed19=_0x16f186?0x0:_0x2d8625[_0x1fab('0x20')];var _0x38c1fb=_0x16f186?_0x2d617d[_0x1fab('0x23')]:_0x2d8625[_0x1fab('0x20')]+_0x2d8625[_0x1fab('0x22')];var _0x1011a2;if(_0x38c1fb>=_0x5795a2){_0x38c1fb=_0x5795a2;_0x1011a2=0xc8;}else{_0x1011a2=0xce;}_0x455c7d['status'](_0x1011a2);return _0x455c7d[_0x1fab('0x24')](_0x1fab('0x25'),_0x2bed19+'-'+_0x38c1fb+'/'+_0x5795a2)['json'](_0x2d617d);}return null;};}function patchUpdates(_0xeeeaaa){return function(_0x106982){try{jsonpatch[_0x1fab('0x26')](_0x106982,_0xeeeaaa,!![]);}catch(_0x14d2b6){return BPromise[_0x1fab('0x27')](_0x14d2b6);}return _0x106982[_0x1fab('0x28')]();};}function saveUpdates(_0x37b7dc,_0x2b6df8){return function(_0x11fd46){if(_0x11fd46){return _0x11fd46[_0x1fab('0x29')](_0x37b7dc)[_0x1fab('0x2a')](function(_0x2b25a5){return _0x2b25a5;});}return null;};}function removeEntity(_0x295c6a,_0x5f3b5f){return function(_0x340c6e){if(_0x340c6e){return _0x340c6e['destroy']()[_0x1fab('0x2a')](function(){_0x295c6a[_0x1fab('0x1d')](0xcc)[_0x1fab('0x1e')]();});}};}function handleEntityNotFound(_0x3719f9,_0x2fe521){return function(_0x3fb216){if(!_0x3fb216){_0x3719f9[_0x1fab('0x1c')](0x194);}return _0x3fb216;};}function handleError(_0x28a1ea,_0x490459){_0x490459=_0x490459||0x1f4;return function(_0x45b3a2){logger['error'](_0x45b3a2[_0x1fab('0x2b')]);if(_0x45b3a2[_0x1fab('0x2c')]){delete _0x45b3a2[_0x1fab('0x2c')];}_0x28a1ea[_0x1fab('0x1d')](_0x490459)[_0x1fab('0x2d')](_0x45b3a2);};}exports[_0x1fab('0x2e')]=function(_0x4a9e2b,_0x5f5920){var _0x5a30de={},_0x4acf42={},_0x2e9dd6={'count':0x0,'rows':[]};var _0x59d804=_[_0x1fab('0x2f')](db[_0x1fab('0x30')][_0x1fab('0x31')],function(_0x38bb05){return{'name':_0x38bb05[_0x1fab('0x32')],'type':_0x38bb05[_0x1fab('0x33')][_0x1fab('0x34')]};});_0x4acf42['model']=_[_0x1fab('0x2f')](_0x59d804,_0x1fab('0x2c'));_0x4acf42[_0x1fab('0x35')]=_['keys'](_0x4a9e2b['query']);_0x4acf42[_0x1fab('0x36')]=_['intersection'](_0x4acf42['model'],_0x4acf42[_0x1fab('0x35')]);_0x5a30de[_0x1fab('0x37')]=_[_0x1fab('0x38')](_0x4acf42[_0x1fab('0x39')],qs[_0x1fab('0x3a')](_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x3a')]));_0x5a30de[_0x1fab('0x37')]=_0x5a30de[_0x1fab('0x37')]['length']?_0x5a30de[_0x1fab('0x37')]:_0x4acf42[_0x1fab('0x39')];if(!_0x4a9e2b[_0x1fab('0x35')]['hasOwnProperty'](_0x1fab('0x3b'))){_0x5a30de[_0x1fab('0x22')]=qs[_0x1fab('0x22')](_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x22')]);_0x5a30de['offset']=qs['offset'](_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x20')]);}_0x5a30de[_0x1fab('0x3c')]=qs[_0x1fab('0x3d')](_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x3d')]);_0x5a30de[_0x1fab('0x3e')]=qs['filters'](_[_0x1fab('0x3f')](_0x4a9e2b[_0x1fab('0x35')],_0x4acf42[_0x1fab('0x36')]),_0x59d804);if(_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x40')]){_0x5a30de['where']=_[_0x1fab('0x41')](_0x5a30de['where'],{'$or':_['map'](_0x59d804,function(_0x53769c){if(_0x53769c['type']!==_0x1fab('0x42')){var _0x41f4aa={};_0x41f4aa[_0x53769c[_0x1fab('0x2c')]]={'$like':'%'+_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x40')]+'%'};return _0x41f4aa;}})});}_0x5a30de=_[_0x1fab('0x41')]({},_0x5a30de,_0x4a9e2b[_0x1fab('0x43')]);var _0x3aae9b={'where':_0x5a30de[_0x1fab('0x3e')]};return db[_0x1fab('0x30')][_0x1fab('0x23')](_0x3aae9b)[_0x1fab('0x2a')](function(_0x3ee14b){_0x2e9dd6[_0x1fab('0x23')]=_0x3ee14b;if(_0x4a9e2b[_0x1fab('0x35')][_0x1fab('0x44')]){_0x5a30de['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0x1fab('0x45')](_0x5a30de);})['then'](function(_0xb6f2fd){_0x2e9dd6['rows']=_0xb6f2fd;return _0x2e9dd6;})[_0x1fab('0x2a')](respondWithFilteredResult(_0x5f5920,_0x5a30de))['catch'](handleError(_0x5f5920,null));};exports['show']=function(_0xf5144f,_0x1a66c9){var _0x528cda={'raw':!![],'where':{'id':_0xf5144f[_0x1fab('0x46')]['id']}},_0x26af75={};_0x26af75[_0x1fab('0x39')]=_[_0x1fab('0x47')](db[_0x1fab('0x30')][_0x1fab('0x31')]);_0x26af75['query']=_['keys'](_0xf5144f[_0x1fab('0x35')]);_0x26af75[_0x1fab('0x36')]=_[_0x1fab('0x38')](_0x26af75[_0x1fab('0x39')],_0x26af75[_0x1fab('0x35')]);_0x528cda[_0x1fab('0x37')]=_[_0x1fab('0x38')](_0x26af75[_0x1fab('0x39')],qs[_0x1fab('0x3a')](_0xf5144f['query'][_0x1fab('0x3a')]));_0x528cda['attributes']=_0x528cda['attributes'][_0x1fab('0x48')]?_0x528cda[_0x1fab('0x37')]:_0x26af75['model'];if(_0xf5144f[_0x1fab('0x35')]['includeAll']){_0x528cda[_0x1fab('0x49')]=[{'all':!![]}];}_0x528cda=_[_0x1fab('0x41')]({},_0x528cda,_0xf5144f[_0x1fab('0x43')]);return db['SquareDetailsReport'][_0x1fab('0x4a')](_0x528cda)['then'](handleEntityNotFound(_0x1a66c9,null))[_0x1fab('0x2a')](respondWithResult(_0x1a66c9,null))[_0x1fab('0x4b')](handleError(_0x1a66c9,null));};exports[_0x1fab('0x4c')]=function(_0x543119,_0x15a382){return db['SquareDetailsReport'][_0x1fab('0x4c')](_0x543119[_0x1fab('0x4d')],{})[_0x1fab('0x2a')](respondWithResult(_0x15a382,0xc9))['catch'](handleError(_0x15a382,null));};exports['update']=function(_0x1f5eea,_0x1e5577){if(_0x1f5eea['body']['id']){delete _0x1f5eea[_0x1fab('0x4d')]['id'];}return db[_0x1fab('0x30')][_0x1fab('0x4a')]({'where':{'id':_0x1f5eea['params']['id']}})[_0x1fab('0x2a')](handleEntityNotFound(_0x1e5577,null))[_0x1fab('0x2a')](saveUpdates(_0x1f5eea[_0x1fab('0x4d')],null))['then'](respondWithResult(_0x1e5577,null))[_0x1fab('0x4b')](handleError(_0x1e5577,null));};exports[_0x1fab('0x4e')]=function(_0x688d46,_0x1d61a5){return db[_0x1fab('0x30')][_0x1fab('0x4a')]({'where':{'id':_0x688d46[_0x1fab('0x46')]['id']}})[_0x1fab('0x2a')](handleEntityNotFound(_0x1d61a5,null))[_0x1fab('0x2a')](removeEntity(_0x1d61a5,null))[_0x1fab('0x4b')](handleError(_0x1d61a5,null));};exports[_0x1fab('0x4f')]=function(_0x40e583,_0x20abf8){return db[_0x1fab('0x30')][_0x1fab('0x4f')]()[_0x1fab('0x2a')](respondWithResult(_0x20abf8,null))[_0x1fab('0x4b')](handleError(_0x20abf8,null));};
\ No newline at end of file
index b8cd02b..8bc4a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x860a=['bluebird','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','report_square_details','../../config/logger','api','moment'];(function(_0xeee53b,_0x448722){var _0x1067c6=function(_0x40801b){while(--_0x40801b){_0xeee53b['push'](_0xeee53b['shift']());}};_0x1067c6(++_0x448722);}(_0x860a,0x1e1));var _0xa860=function(_0x22e62a,_0x1ac163){_0x22e62a=_0x22e62a-0x0;var _0x5c7348=_0x860a[_0x22e62a];return _0x5c7348;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa860('0x0'))(_0xa860('0x1'));var moment=require(_0xa860('0x2'));var BPromise=require(_0xa860('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa860('0x4'));var rimraf=require(_0xa860('0x5'));var config=require(_0xa860('0x6'));var attributes=require(_0xa860('0x7'));module[_0xa860('0x8')]=function(_0x2bd5b0,_0xd47062){return _0x2bd5b0[_0xa860('0x9')]('SquareDetailsReport',attributes,{'tableName':_0xa860('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x29a4=['lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','SquareDetailsReport','report_square_details'];(function(_0x35541e,_0x3a1d02){var _0x30ec90=function(_0x1ea372){while(--_0x1ea372){_0x35541e['push'](_0x35541e['shift']());}};_0x30ec90(++_0x3a1d02);}(_0x29a4,0x160));var _0x429a=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x29a4[_0x36eaaa];return _0x461349;};'use strict';var _=require(_0x429a('0x0'));var util=require('util');var logger=require(_0x429a('0x1'))('api');var moment=require(_0x429a('0x2'));var BPromise=require('bluebird');var rp=require(_0x429a('0x3'));var fs=require('fs');var path=require(_0x429a('0x4'));var rimraf=require(_0x429a('0x5'));var config=require(_0x429a('0x6'));var attributes=require(_0x429a('0x7'));module['exports']=function(_0x3cfe29,_0x4cca12){return _0x3cfe29[_0x429a('0x8')](_0x429a('0x9'),attributes,{'tableName':_0x429a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 959407c..2a6b67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe493=['randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport','create','options','raw','lodash','util','moment','bluebird'];(function(_0x2e2eb0,_0x56c247){var _0x4aed3c=function(_0xaa2502){while(--_0xaa2502){_0x2e2eb0['push'](_0x2e2eb0['shift']());}};_0x4aed3c(++_0x56c247);}(_0xe493,0x7e));var _0x3e49=function(_0x49c7f7,_0x22dc85){_0x49c7f7=_0x49c7f7-0x0;var _0x34a6c3=_0xe493[_0x49c7f7];return _0x34a6c3;};'use strict';var _=require(_0x3e49('0x0'));var util=require(_0x3e49('0x1'));var moment=require(_0x3e49('0x2'));var BPromise=require(_0x3e49('0x3'));var rs=require(_0x3e49('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e49('0x5'))['db'];var utils=require(_0x3e49('0x6'));var logger=require('../../config/logger')(_0x3e49('0x7'));var config=require('../../config/environment');var jayson=require(_0x3e49('0x8'));var client=jayson[_0x3e49('0x9')][_0x3e49('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f7821,_0x12dd84,_0x3626b6){return new BPromise(function(_0x4e96ac,_0x56b767){return client['request'](_0x3f7821,_0x3626b6)[_0x3e49('0xb')](function(_0x8b8c0e){logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));logger[_0x3e49('0xf')](_0x3e49('0x10'),_0x12dd84,_0x3e49('0xe'),JSON[_0x3e49('0x11')](_0x8b8c0e));if(_0x8b8c0e[_0x3e49('0x12')]){if(_0x8b8c0e[_0x3e49('0x12')]['code']===0x1f4){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x56b767(_0x8b8c0e[_0x3e49('0x12')]['message']);}logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x4e96ac(_0x8b8c0e[_0x3e49('0x12')][_0x3e49('0x13')]);}else{logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));_0x4e96ac(_0x8b8c0e[_0x3e49('0x14')][_0x3e49('0x13')]);}})[_0x3e49('0x15')](function(_0x1d9cce){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x1d9cce);_0x56b767(_0x1d9cce);});});}exports[_0x3e49('0x16')]=function(_0x3ae5f4){var _0x448c36=this;return new Promise(function(_0x4e1cdf,_0xf33205){return db['SquareDetailsReport'][_0x3e49('0x17')](_0x3ae5f4['body'],{'raw':_0x3ae5f4[_0x3e49('0x18')]?_0x3ae5f4['options'][_0x3e49('0x19')]===undefined?!![]:![]:!![]})[_0x3e49('0xb')](function(_0x420d7b){logger['info'](_0x3e49('0x16'),_0x3ae5f4);logger['debug'](_0x3e49('0x16'),_0x3ae5f4,JSON[_0x3e49('0x11')](_0x420d7b));_0x4e1cdf(_0x420d7b);})[_0x3e49('0x15')](function(_0x5e0f1d){logger['error'](_0x3e49('0x16'),_0x5e0f1d['message'],_0x3ae5f4);_0xf33205(_0x448c36[_0x3e49('0x12')](0x1f4,_0x5e0f1d[_0x3e49('0x13')]));});});};
\ No newline at end of file
+var _0x58a4=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareDetailsReport','body','options','raw','lodash','util','moment','bluebird','randomstring'];(function(_0x4f38fb,_0x29eff9){var _0x27577f=function(_0x4aa7b3){while(--_0x4aa7b3){_0x4f38fb['push'](_0x4f38fb['shift']());}};_0x27577f(++_0x29eff9);}(_0x58a4,0xbf));var _0x458a=function(_0x19cd2a,_0x52bf9e){_0x19cd2a=_0x19cd2a-0x0;var _0x41f8b7=_0x58a4[_0x19cd2a];return _0x41f8b7;};'use strict';var _=require(_0x458a('0x0'));var util=require(_0x458a('0x1'));var moment=require(_0x458a('0x2'));var BPromise=require(_0x458a('0x3'));var rs=require(_0x458a('0x4'));var fs=require('fs');var Redis=require(_0x458a('0x5'));var db=require(_0x458a('0x6'))['db'];var utils=require(_0x458a('0x7'));var logger=require(_0x458a('0x8'))(_0x458a('0x9'));var config=require(_0x458a('0xa'));var jayson=require(_0x458a('0xb'));var client=jayson[_0x458a('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5358c2,_0x30b095,_0x11fcaa){return new BPromise(function(_0x2029bc,_0x1e658e){return client[_0x458a('0xd')](_0x5358c2,_0x11fcaa)['then'](function(_0x4bedce){logger[_0x458a('0xe')](_0x458a('0xf'),_0x30b095,_0x458a('0x10'));logger[_0x458a('0x11')](_0x458a('0x12'),_0x30b095,'request\x20sent',JSON[_0x458a('0x13')](_0x4bedce));if(_0x4bedce[_0x458a('0x14')]){if(_0x4bedce['error'][_0x458a('0x15')]===0x1f4){logger[_0x458a('0x14')](_0x458a('0xf'),_0x30b095,_0x4bedce[_0x458a('0x14')][_0x458a('0x16')]);return _0x1e658e(_0x4bedce['error']['message']);}logger[_0x458a('0x14')]('SquareDetailsReport,\x20%s,\x20%s',_0x30b095,_0x4bedce[_0x458a('0x14')][_0x458a('0x16')]);return _0x2029bc(_0x4bedce[_0x458a('0x14')][_0x458a('0x16')]);}else{logger[_0x458a('0xe')](_0x458a('0xf'),_0x30b095,'request\x20sent');_0x2029bc(_0x4bedce['result']['message']);}})[_0x458a('0x17')](function(_0x3fd6d4){logger[_0x458a('0x14')]('SquareDetailsReport,\x20%s,\x20%s',_0x30b095,_0x3fd6d4);_0x1e658e(_0x3fd6d4);});});}exports[_0x458a('0x18')]=function(_0x260c87){var _0x18504d=this;return new Promise(function(_0x392986,_0xa91473){return db['SquareDetailsReport']['create'](_0x260c87[_0x458a('0x19')],{'raw':_0x260c87['options']?_0x260c87[_0x458a('0x1a')][_0x458a('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x468416){logger['info'](_0x458a('0x18'),_0x260c87);logger[_0x458a('0x11')]('CreateSquareDetailsReport',_0x260c87,JSON[_0x458a('0x13')](_0x468416));_0x392986(_0x468416);})[_0x458a('0x17')](function(_0x5a2bcb){logger[_0x458a('0x14')]('CreateSquareDetailsReport',_0x5a2bcb[_0x458a('0x16')],_0x260c87);_0xa91473(_0x18504d['error'](0x1f4,_0x5a2bcb[_0x458a('0x16')]));});});};
\ No newline at end of file
index a221595..4227d70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5f=['express','Router','./system.controller','get','/process/:pid/kill','killProcess','exports'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xaa5f,0x1a4));var _0xfaa5=function(_0x1cd626,_0xc06b5a){_0x1cd626=_0x1cd626-0x0;var _0x2352e7=_0xaa5f[_0x1cd626];return _0x2352e7;};'use strict';var express=require(_0xfaa5('0x0'));var router=express[_0xfaa5('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xfaa5('0x2'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xfaa5('0x3')](_0xfaa5('0x4'),auth['isAuthenticated'](),controller[_0xfaa5('0x5')]);module[_0xfaa5('0x6')]=router;
\ No newline at end of file
+var _0xd3a9=['../../components/auth/service','get','isAuthenticated','killProcess','express'];(function(_0x213ef7,_0x5050d3){var _0x425ade=function(_0x57fb79){while(--_0x57fb79){_0x213ef7['push'](_0x213ef7['shift']());}};_0x425ade(++_0x5050d3);}(_0xd3a9,0x86));var _0x9d3a=function(_0x188cae,_0x18d3ce){_0x188cae=_0x188cae-0x0;var _0x1d4a84=_0xd3a9[_0x188cae];return _0x1d4a84;};'use strict';var express=require(_0x9d3a('0x0'));var router=express['Router']();var auth=require(_0x9d3a('0x1'));var controller=require('./system.controller');router[_0x9d3a('0x2')]('/',auth[_0x9d3a('0x3')](),controller['index']);router[_0x9d3a('0x2')]('/process/:pid/kill',auth[_0x9d3a('0x3')](),controller[_0x9d3a('0x4')]);module['exports']=router;
\ No newline at end of file
index b67cf20..c24a820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2730=['pid','split','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','getAllData','then','status','catch','json','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args'];(function(_0x2bb3f6,_0x25fde0){var _0x62b339=function(_0x53e014){while(--_0x53e014){_0x2bb3f6['push'](_0x2bb3f6['shift']());}};_0x62b339(++_0x25fde0);}(_0x2730,0x1cc));var _0x0273=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x2730[_0x4565bf];return _0x5610ba;};'use strict';var info=require('systeminformation');var exec=require(_0x0273('0x0'))[_0x0273('0x1')];var logger=require(_0x0273('0x2'))('api');var util=require(_0x0273('0x3'));var BPromise=require(_0x0273('0x4'));var _=require(_0x0273('0x5'));function handleError(_0x4fed32,_0x449163,_0x1feded){_0x449163=_0x449163||0x1f4;return function(_0x7a7739){logger[_0x0273('0x6')](_0x0273('0x7'),_0x1feded,_0x449163,util[_0x0273('0x8')](_0x7a7739,{'showHidden':![],'depth':null}));delete _0x7a7739[_0x0273('0x9')];_0x4fed32['status'](_0x449163)[_0x0273('0xa')](_0x7a7739);};}exports[_0x0273('0xb')]=function(_0x22ed5a,_0x223e58){return info[_0x0273('0xc')]()[_0x0273('0xd')](function(_0x21291f){return _0x223e58[_0x0273('0xe')](0xc8)['json'](_0x21291f);})[_0x0273('0xf')](function(_0x91aa85){return _0x223e58[_0x0273('0xe')](0x1f4)[_0x0273('0x10')](_0x91aa85);});};exports[_0x0273('0x11')]=function(_0x3ccdd1,_0x274e22){var _0xca6868=[_0x0273('0x12')];return new BPromise(function(_0x1036ac,_0x153bc9){return exec(util['format'](_0x0273('0x13'),_0x3ccdd1['params'][_0x0273('0x14')]),function(_0x127eb4,_0x914ee0,_0x28dafb){if(_0x127eb4){return _0x153bc9(_0x127eb4);}return _0x1036ac(_0x914ee0);});})['then'](function(_0xd0e8e1){var _0x267e5c=![];var _0x253c08=_0xd0e8e1[_0x0273('0x15')](/\n/);for(var _0xad57e0=0x0,_0x310713=_0xca6868[_0x0273('0x16')];_0xad57e0<_0x310713,_0x267e5c===![];_0xad57e0+=0x1){if(_0xd0e8e1[_0x0273('0x17')](_0xca6868[_0xad57e0])>=0x0){_0x267e5c=!![];}}if(!_0x267e5c){throw new Error(util[_0x0273('0x18')](_0x0273('0x19'),_0x3ccdd1[_0x0273('0x1a')]['pid']));}process[_0x0273('0x1b')](_0x3ccdd1[_0x0273('0x1a')][_0x0273('0x14')],_0x0273('0x1c'));return _0x274e22[_0x0273('0xe')](0xc8)[_0x0273('0x10')]({'message':util[_0x0273('0x18')](_0x0273('0x1d'),_0x3ccdd1[_0x0273('0x1a')][_0x0273('0x14')])});})['catch'](handleError(_0x274e22,null,_0x0273('0x11')));};
\ No newline at end of file
+var _0xaa7d=['<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','getAllData','json','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','catch','killProcess','systeminformation','child_process','exec','bluebird','lodash','error'];(function(_0x55a962,_0x10daf8){var _0x5c9f57=function(_0x498e7d){while(--_0x498e7d){_0x55a962['push'](_0x55a962['shift']());}};_0x5c9f57(++_0x10daf8);}(_0xaa7d,0x1e0));var _0xdaa7=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xaa7d[_0xd0b415];return _0x2bdf2c;};'use strict';var info=require(_0xdaa7('0x0'));var exec=require(_0xdaa7('0x1'))[_0xdaa7('0x2')];var logger=require('../../config/logger')('api');var util=require('util');var BPromise=require(_0xdaa7('0x3'));var _=require(_0xdaa7('0x4'));function handleError(_0x38ebdd,_0x360b6a,_0x51aadc){_0x360b6a=_0x360b6a||0x1f4;return function(_0x4626e9){logger[_0xdaa7('0x5')](_0xdaa7('0x6'),_0x51aadc,_0x360b6a,util[_0xdaa7('0x7')](_0x4626e9,{'showHidden':![],'depth':null}));delete _0x4626e9[_0xdaa7('0x8')];_0x38ebdd[_0xdaa7('0x9')](_0x360b6a)[_0xdaa7('0xa')](_0x4626e9);};}exports[_0xdaa7('0xb')]=function(_0x1c3ee3,_0x30f867){return info[_0xdaa7('0xc')]()['then'](function(_0x2a5b19){return _0x30f867['status'](0xc8)[_0xdaa7('0xd')](_0x2a5b19);})['catch'](function(_0x2b89d5){return _0x30f867[_0xdaa7('0x9')](0x1f4)[_0xdaa7('0xd')](_0x2b89d5);});};exports['killProcess']=function(_0x2f9ca7,_0x4aa812){var _0x18f445=[_0xdaa7('0xe')];return new BPromise(function(_0x7f8453,_0x2edcc3){return exec(util[_0xdaa7('0xf')](_0xdaa7('0x10'),_0x2f9ca7[_0xdaa7('0x11')][_0xdaa7('0x12')]),function(_0x2dd305,_0xf4cceb,_0x1d3847){if(_0x2dd305){return _0x2edcc3(_0x2dd305);}return _0x7f8453(_0xf4cceb);});})['then'](function(_0x17e175){var _0xf678b3=![];var _0x33bda5=_0x17e175[_0xdaa7('0x13')](/\n/);for(var _0x3da026=0x0,_0x4e44ec=_0x18f445[_0xdaa7('0x14')];_0x3da026<_0x4e44ec,_0xf678b3===![];_0x3da026+=0x1){if(_0x17e175[_0xdaa7('0x15')](_0x18f445[_0x3da026])>=0x0){_0xf678b3=!![];}}if(!_0xf678b3){throw new Error(util['format'](_0xdaa7('0x16'),_0x2f9ca7[_0xdaa7('0x11')][_0xdaa7('0x12')]));}process[_0xdaa7('0x17')](_0x2f9ca7['params'][_0xdaa7('0x12')],_0xdaa7('0x18'));return _0x4aa812[_0xdaa7('0x9')](0xc8)[_0xdaa7('0xd')]({'message':util[_0xdaa7('0xf')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x2f9ca7[_0xdaa7('0x11')]['pid'])});})[_0xdaa7('0x19')](handleError(_0x4aa812,null,_0xdaa7('0x1a')));};
\ No newline at end of file
index ade9272..a08e4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c62=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./tag.controller','get','isAuthenticated','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x3932e5,_0x43d0f3){var _0x5784e1=function(_0x3e0fae){while(--_0x3e0fae){_0x3932e5['push'](_0x3932e5['shift']());}};_0x5784e1(++_0x43d0f3);}(_0x7c62,0xa7));var _0x27c6=function(_0x1a97e4,_0x496b18){_0x1a97e4=_0x1a97e4-0x0;var _0x31682c=_0x7c62[_0x1a97e4];return _0x31682c;};'use strict';var multer=require(_0x27c6('0x0'));var util=require(_0x27c6('0x1'));var path=require('path');var timeout=require(_0x27c6('0x2'));var express=require(_0x27c6('0x3'));var router=express[_0x27c6('0x4')]();var fs_extra=require(_0x27c6('0x5'));var auth=require(_0x27c6('0x6'));var interaction=require(_0x27c6('0x7'));var config=require('../../config/environment');var controller=require(_0x27c6('0x8'));router[_0x27c6('0x9')]('/',auth[_0x27c6('0xa')](),controller['index']);router[_0x27c6('0x9')](_0x27c6('0xb'),auth[_0x27c6('0xa')](),controller[_0x27c6('0xc')]);router[_0x27c6('0xd')]('/',auth[_0x27c6('0xa')](),controller[_0x27c6('0xe')]);router[_0x27c6('0xf')](_0x27c6('0xb'),auth[_0x27c6('0xa')](),controller['update']);router[_0x27c6('0x10')](_0x27c6('0xb'),auth[_0x27c6('0xa')](),controller[_0x27c6('0x11')]);module[_0x27c6('0x12')]=router;
\ No newline at end of file
+var _0xa208=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer'];(function(_0xd1cf76,_0x1e667d){var _0x580cbf=function(_0x51dc24){while(--_0x51dc24){_0xd1cf76['push'](_0xd1cf76['shift']());}};_0x580cbf(++_0x1e667d);}(_0xa208,0x18f));var _0x8a20=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa208[_0x484e36];return _0xafc85d;};'use strict';var multer=require(_0x8a20('0x0'));var util=require(_0x8a20('0x1'));var path=require(_0x8a20('0x2'));var timeout=require('connect-timeout');var express=require(_0x8a20('0x3'));var router=express[_0x8a20('0x4')]();var fs_extra=require(_0x8a20('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8a20('0x6'));var config=require(_0x8a20('0x7'));var controller=require(_0x8a20('0x8'));router[_0x8a20('0x9')]('/',auth[_0x8a20('0xa')](),controller[_0x8a20('0xb')]);router[_0x8a20('0x9')](_0x8a20('0xc'),auth['isAuthenticated'](),controller[_0x8a20('0xd')]);router[_0x8a20('0xe')]('/',auth['isAuthenticated'](),controller[_0x8a20('0xf')]);router['put']('/:id',auth[_0x8a20('0xa')](),controller[_0x8a20('0x10')]);router[_0x8a20('0x11')](_0x8a20('0xc'),auth[_0x8a20('0xa')](),controller[_0x8a20('0x12')]);module[_0x8a20('0x13')]=router;
\ No newline at end of file
index a96dbc2..32f6659 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c71=['name','STRING','#0091EA','exports'];(function(_0x385ba1,_0x380b3c){var _0x5472b6=function(_0x3ba480){while(--_0x3ba480){_0x385ba1['push'](_0x385ba1['shift']());}};_0x5472b6(++_0x380b3c);}(_0x0c71,0xfb));var _0x10c7=function(_0x5c2ea4,_0x5ae547){_0x5c2ea4=_0x5c2ea4-0x0;var _0x534da3=_0x0c71[_0x5c2ea4];return _0x534da3;};'use strict';var Sequelize=require('sequelize');module[_0x10c7('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x10c7('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x10c7('0x2')],'defaultValue':_0x10c7('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x26f9=['exports','name','STRING','sequelize'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x26f9,0x16f));var _0x926f=function(_0x39e4a1,_0x4edcc5){_0x39e4a1=_0x39e4a1-0x0;var _0x55b30e=_0x26f9[_0x39e4a1];return _0x55b30e;};'use strict';var Sequelize=require(_0x926f('0x0'));module[_0x926f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x926f('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x926f('0x3')]}};
\ No newline at end of file
index 8d42b5e..564e036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde64=['limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Tags','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll','include','Tag','catch','params','options','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xde64,0x17c));var _0x4de6=function(_0x38c499,_0xc451c7){_0x38c499=_0x38c499-0x0;var _0x2a7da4=_0xde64[_0x38c499];return _0x2a7da4;};'use strict';var emlformat=require(_0x4de6('0x0'));var rimraf=require(_0x4de6('0x1'));var zipdir=require(_0x4de6('0x2'));var jsonpatch=require(_0x4de6('0x3'));var rp=require(_0x4de6('0x4'));var moment=require(_0x4de6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4de6('0x6'));var util=require(_0x4de6('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4de6('0x8'));var ejs=require(_0x4de6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4de6('0xa'));var crypto=require(_0x4de6('0xb'));var jsforce=require(_0x4de6('0xc'));var deskjs=require(_0x4de6('0xd'));var toCsv=require(_0x4de6('0x8'));var querystring=require(_0x4de6('0xe'));var Papa=require('papaparse');var Redis=require(_0x4de6('0xf'));var authService=require(_0x4de6('0x10'));var qs=require(_0x4de6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4de6('0x12'));var logger=require(_0x4de6('0x13'))(_0x4de6('0x14'));var utils=require(_0x4de6('0x15'));var config=require(_0x4de6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4de6('0x17'))['db'];function respondWithStatusCode(_0x3baa31,_0xb8e256){_0xb8e256=_0xb8e256||0xcc;return function(_0x509002){if(_0x509002){return _0x3baa31[_0x4de6('0x18')](_0xb8e256);}return _0x3baa31[_0x4de6('0x19')](_0xb8e256)[_0x4de6('0x1a')]();};}function respondWithResult(_0x2bd121,_0x58b0c1){_0x58b0c1=_0x58b0c1||0xc8;return function(_0x1ccfee){if(_0x1ccfee){return _0x2bd121[_0x4de6('0x19')](_0x58b0c1)[_0x4de6('0x1b')](_0x1ccfee);}};}function respondWithFilteredResult(_0x4dd3b5,_0x33fd67){return function(_0x54e2f2){if(_0x54e2f2){var _0x4cbb5c=typeof _0x33fd67[_0x4de6('0x1c')]===_0x4de6('0x1d')&&typeof _0x33fd67[_0x4de6('0x1e')]===_0x4de6('0x1d');var _0x37975a=_0x54e2f2[_0x4de6('0x1f')];var _0x324202=_0x4cbb5c?0x0:_0x33fd67['offset'];var _0x420f7c=_0x4cbb5c?_0x54e2f2[_0x4de6('0x1f')]:_0x33fd67[_0x4de6('0x1c')]+_0x33fd67[_0x4de6('0x1e')];var _0x167c7c;if(_0x420f7c>=_0x37975a){_0x420f7c=_0x37975a;_0x167c7c=0xc8;}else{_0x167c7c=0xce;}_0x4dd3b5[_0x4de6('0x19')](_0x167c7c);return _0x4dd3b5[_0x4de6('0x20')](_0x4de6('0x21'),_0x324202+'-'+_0x420f7c+'/'+_0x37975a)[_0x4de6('0x1b')](_0x54e2f2);}return null;};}function patchUpdates(_0x15c923){return function(_0x4c4d13){try{jsonpatch[_0x4de6('0x22')](_0x4c4d13,_0x15c923,!![]);}catch(_0x51ad13){return BPromise[_0x4de6('0x23')](_0x51ad13);}return _0x4c4d13[_0x4de6('0x24')]();};}function saveUpdates(_0x43771b,_0x5de99f){return function(_0xe1b69d){if(_0xe1b69d){return _0xe1b69d['update'](_0x43771b)[_0x4de6('0x25')](function(_0x385cae){return _0x385cae;});}return null;};}function removeEntity(_0x1a64e9,_0x5ddbab){return function(_0x478d83){if(_0x478d83){return _0x478d83[_0x4de6('0x26')]()[_0x4de6('0x25')](function(){var _0x3be904=_0x478d83[_0x4de6('0x27')]({'plain':!![]});var _0x25a76b=_0x4de6('0x28');return db['UserProfileResource'][_0x4de6('0x26')]({'where':{'type':_0x25a76b,'resourceId':_0x3be904['id']}})[_0x4de6('0x25')](function(){return _0x478d83;});})[_0x4de6('0x25')](function(){_0x1a64e9[_0x4de6('0x19')](0xcc)[_0x4de6('0x1a')]();});}};}function handleEntityNotFound(_0x281060,_0xa2b88c){return function(_0x7bc61e){if(!_0x7bc61e){_0x281060[_0x4de6('0x18')](0x194);}return _0x7bc61e;};}function handleError(_0x4f168b,_0x2065b4){_0x2065b4=_0x2065b4||0x1f4;return function(_0x2a5592){logger[_0x4de6('0x29')](_0x2a5592[_0x4de6('0x2a')]);if(_0x2a5592[_0x4de6('0x2b')]){delete _0x2a5592['name'];}_0x4f168b[_0x4de6('0x19')](_0x2065b4)['send'](_0x2a5592);};}exports[_0x4de6('0x2c')]=function(_0x2bfc77,_0x1df7c0){var _0x1b5607={},_0x592799={},_0x5593e8={'count':0x0,'rows':[]};var _0x530e04=_['map'](db['Tag'][_0x4de6('0x2d')],function(_0x1da3b1){return{'name':_0x1da3b1[_0x4de6('0x2e')],'type':_0x1da3b1[_0x4de6('0x2f')][_0x4de6('0x30')]};});_0x592799[_0x4de6('0x31')]=_[_0x4de6('0x32')](_0x530e04,_0x4de6('0x2b'));_0x592799[_0x4de6('0x33')]=_[_0x4de6('0x34')](_0x2bfc77[_0x4de6('0x33')]);_0x592799[_0x4de6('0x35')]=_[_0x4de6('0x36')](_0x592799[_0x4de6('0x31')],_0x592799[_0x4de6('0x33')]);_0x1b5607[_0x4de6('0x37')]=_[_0x4de6('0x36')](_0x592799[_0x4de6('0x31')],qs[_0x4de6('0x38')](_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x38')]));_0x1b5607[_0x4de6('0x37')]=_0x1b5607[_0x4de6('0x37')][_0x4de6('0x39')]?_0x1b5607[_0x4de6('0x37')]:_0x592799[_0x4de6('0x31')];if(!_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x3a')](_0x4de6('0x3b'))){_0x1b5607['limit']=qs[_0x4de6('0x1e')](_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x1e')]);_0x1b5607[_0x4de6('0x1c')]=qs['offset'](_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x1c')]);}_0x1b5607[_0x4de6('0x3c')]=qs[_0x4de6('0x3d')](_0x2bfc77['query'][_0x4de6('0x3d')]);_0x1b5607['where']=qs[_0x4de6('0x35')](_[_0x4de6('0x3e')](_0x2bfc77[_0x4de6('0x33')],_0x592799[_0x4de6('0x35')]),_0x530e04);if(_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x3f')]){_0x1b5607[_0x4de6('0x40')]=_[_0x4de6('0x41')](_0x1b5607[_0x4de6('0x40')],{'$or':_[_0x4de6('0x32')](_0x530e04,function(_0x85581b){if(_0x85581b[_0x4de6('0x2f')]!=='VIRTUAL'){var _0x57a6ca={};_0x57a6ca[_0x85581b[_0x4de6('0x2b')]]={'$like':'%'+_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x3f')]+'%'};return _0x57a6ca;}})});}_0x1b5607=_[_0x4de6('0x41')]({},_0x1b5607,_0x2bfc77['options']);var _0x5d07aa={'where':_0x1b5607[_0x4de6('0x40')]};return db['Tag'][_0x4de6('0x1f')](_0x5d07aa)['then'](function(_0x3696c8){_0x5593e8['count']=_0x3696c8;if(_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x42')]){_0x1b5607[_0x4de6('0x43')]=[{'all':!![]}];}return db[_0x4de6('0x44')]['findAll'](_0x1b5607);})[_0x4de6('0x25')](function(_0x4049ed){_0x5593e8['rows']=_0x4049ed;return _0x5593e8;})['then'](respondWithFilteredResult(_0x1df7c0,_0x1b5607))[_0x4de6('0x45')](handleError(_0x1df7c0,null));};exports['show']=function(_0x118eb3,_0x3260bc){var _0x3f0f08={'raw':!![],'where':{'id':_0x118eb3[_0x4de6('0x46')]['id']}},_0x349688={};_0x349688[_0x4de6('0x31')]=_[_0x4de6('0x34')](db[_0x4de6('0x44')][_0x4de6('0x2d')]);_0x349688[_0x4de6('0x33')]=_[_0x4de6('0x34')](_0x118eb3[_0x4de6('0x33')]);_0x349688['filters']=_['intersection'](_0x349688['model'],_0x349688[_0x4de6('0x33')]);_0x3f0f08[_0x4de6('0x37')]=_['intersection'](_0x349688['model'],qs[_0x4de6('0x38')](_0x118eb3['query'][_0x4de6('0x38')]));_0x3f0f08[_0x4de6('0x37')]=_0x3f0f08['attributes'][_0x4de6('0x39')]?_0x3f0f08[_0x4de6('0x37')]:_0x349688[_0x4de6('0x31')];if(_0x118eb3[_0x4de6('0x33')][_0x4de6('0x42')]){_0x3f0f08['include']=[{'all':!![]}];}_0x3f0f08=_[_0x4de6('0x41')]({},_0x3f0f08,_0x118eb3[_0x4de6('0x47')]);return db[_0x4de6('0x44')][_0x4de6('0x48')](_0x3f0f08)[_0x4de6('0x25')](handleEntityNotFound(_0x3260bc,null))[_0x4de6('0x25')](respondWithResult(_0x3260bc,null))[_0x4de6('0x45')](handleError(_0x3260bc,null));};exports[_0x4de6('0x49')]=function(_0x698dcb,_0x3126f1){return db[_0x4de6('0x44')][_0x4de6('0x49')](_0x698dcb[_0x4de6('0x4a')],{})[_0x4de6('0x25')](function(_0x354558){var _0x12ce25=_0x698dcb[_0x4de6('0x4b')]['get']({'plain':!![]});if(!_0x12ce25)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12ce25[_0x4de6('0x4c')]===_0x4de6('0x4b')){var _0x524807=_0x354558[_0x4de6('0x27')]({'plain':!![]});var _0x191f93=_0x4de6('0x28');return db[_0x4de6('0x4d')][_0x4de6('0x48')]({'where':{'name':_0x191f93,'userProfileId':_0x12ce25[_0x4de6('0x4e')]},'raw':!![]})[_0x4de6('0x25')](function(_0x502e4d){if(_0x502e4d&&_0x502e4d[_0x4de6('0x4f')]===0x0){return db['UserProfileResource'][_0x4de6('0x49')]({'name':_0x524807[_0x4de6('0x2b')],'resourceId':_0x524807['id'],'type':_0x502e4d[_0x4de6('0x2b')],'sectionId':_0x502e4d['id']},{})[_0x4de6('0x25')](function(){return _0x354558;});}else{return _0x354558;}})[_0x4de6('0x45')](function(_0xac3eb5){logger[_0x4de6('0x29')](_0x4de6('0x50'),_0xac3eb5);throw _0xac3eb5;});}return _0x354558;})['then'](respondWithResult(_0x3126f1,0xc9))['catch'](handleError(_0x3126f1,null));};exports[_0x4de6('0x51')]=function(_0x198054,_0x61bc5d){if(_0x198054[_0x4de6('0x4a')]['id']){delete _0x198054['body']['id'];}return db[_0x4de6('0x44')][_0x4de6('0x48')]({'where':{'id':_0x198054[_0x4de6('0x46')]['id']}})['then'](handleEntityNotFound(_0x61bc5d,null))[_0x4de6('0x25')](saveUpdates(_0x198054['body'],null))[_0x4de6('0x25')](respondWithResult(_0x61bc5d,null))[_0x4de6('0x45')](handleError(_0x61bc5d,null));};exports['destroy']=function(_0x19f34a,_0x1b71cf){return db['Tag'][_0x4de6('0x48')]({'where':{'id':_0x19f34a[_0x4de6('0x46')]['id']}})[_0x4de6('0x25')](handleEntityNotFound(_0x1b71cf,null))[_0x4de6('0x25')](removeEntity(_0x1b71cf,null))[_0x4de6('0x45')](handleError(_0x1b71cf,null));};
\ No newline at end of file
+var _0x55ea=['Tags','UserProfileResource','error','name','index','Tag','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','limit','sort','where','pick','filter','merge','map','options','include','findAll','rows','catch','params','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','destroy','then','get'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x55ea,0xc9));var _0xa55e=function(_0xb1a775,_0xb58add){_0xb1a775=_0xb1a775-0x0;var _0x3117e9=_0x55ea[_0xb1a775];return _0x3117e9;};'use strict';var emlformat=require(_0xa55e('0x0'));var rimraf=require(_0xa55e('0x1'));var zipdir=require(_0xa55e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa55e('0x3'));var moment=require(_0xa55e('0x4'));var BPromise=require(_0xa55e('0x5'));var Mustache=require(_0xa55e('0x6'));var util=require(_0xa55e('0x7'));var path=require('path');var sox=require(_0xa55e('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa55e('0x9'));var crypto=require(_0xa55e('0xa'));var jsforce=require(_0xa55e('0xb'));var deskjs=require(_0xa55e('0xc'));var toCsv=require(_0xa55e('0xd'));var querystring=require(_0xa55e('0xe'));var Papa=require(_0xa55e('0xf'));var Redis=require(_0xa55e('0x10'));var authService=require(_0xa55e('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa55e('0x12'));var logger=require(_0xa55e('0x13'))(_0xa55e('0x14'));var utils=require(_0xa55e('0x15'));var config=require(_0xa55e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa55e('0x17'))['db'];function respondWithStatusCode(_0x5b69cc,_0x3f5178){_0x3f5178=_0x3f5178||0xcc;return function(_0x1d45c1){if(_0x1d45c1){return _0x5b69cc[_0xa55e('0x18')](_0x3f5178);}return _0x5b69cc[_0xa55e('0x19')](_0x3f5178)[_0xa55e('0x1a')]();};}function respondWithResult(_0x20e138,_0x15a283){_0x15a283=_0x15a283||0xc8;return function(_0x27746c){if(_0x27746c){return _0x20e138[_0xa55e('0x19')](_0x15a283)['json'](_0x27746c);}};}function respondWithFilteredResult(_0x1fcee6,_0x30738d){return function(_0x25fa30){if(_0x25fa30){var _0x12895e=typeof _0x30738d[_0xa55e('0x1b')]===_0xa55e('0x1c')&&typeof _0x30738d['limit']===_0xa55e('0x1c');var _0x5dbfe6=_0x25fa30['count'];var _0x4599b9=_0x12895e?0x0:_0x30738d[_0xa55e('0x1b')];var _0x30854e=_0x12895e?_0x25fa30[_0xa55e('0x1d')]:_0x30738d[_0xa55e('0x1b')]+_0x30738d['limit'];var _0x42d2d0;if(_0x30854e>=_0x5dbfe6){_0x30854e=_0x5dbfe6;_0x42d2d0=0xc8;}else{_0x42d2d0=0xce;}_0x1fcee6['status'](_0x42d2d0);return _0x1fcee6['set'](_0xa55e('0x1e'),_0x4599b9+'-'+_0x30854e+'/'+_0x5dbfe6)[_0xa55e('0x1f')](_0x25fa30);}return null;};}function patchUpdates(_0x262f6c){return function(_0x1033c0){try{jsonpatch[_0xa55e('0x20')](_0x1033c0,_0x262f6c,!![]);}catch(_0x438707){return BPromise[_0xa55e('0x21')](_0x438707);}return _0x1033c0[_0xa55e('0x22')]();};}function saveUpdates(_0x9594a3,_0x5b0e74){return function(_0x53a2f9){if(_0x53a2f9){return _0x53a2f9[_0xa55e('0x23')](_0x9594a3)['then'](function(_0xaaf2f1){return _0xaaf2f1;});}return null;};}function removeEntity(_0x31c4ac,_0x801fec){return function(_0x2842a6){if(_0x2842a6){return _0x2842a6[_0xa55e('0x24')]()[_0xa55e('0x25')](function(){var _0x129762=_0x2842a6[_0xa55e('0x26')]({'plain':!![]});var _0x231333=_0xa55e('0x27');return db[_0xa55e('0x28')][_0xa55e('0x24')]({'where':{'type':_0x231333,'resourceId':_0x129762['id']}})[_0xa55e('0x25')](function(){return _0x2842a6;});})[_0xa55e('0x25')](function(){_0x31c4ac[_0xa55e('0x19')](0xcc)[_0xa55e('0x1a')]();});}};}function handleEntityNotFound(_0x2f2579,_0xa1917c){return function(_0x875010){if(!_0x875010){_0x2f2579['sendStatus'](0x194);}return _0x875010;};}function handleError(_0x5c218d,_0x164b55){_0x164b55=_0x164b55||0x1f4;return function(_0x4ebcbd){logger[_0xa55e('0x29')](_0x4ebcbd['stack']);if(_0x4ebcbd[_0xa55e('0x2a')]){delete _0x4ebcbd['name'];}_0x5c218d[_0xa55e('0x19')](_0x164b55)['send'](_0x4ebcbd);};}exports[_0xa55e('0x2b')]=function(_0x71bb8b,_0x4a03ef){var _0x2cdd6c={},_0x242c47={},_0x3569ff={'count':0x0,'rows':[]};var _0x378121=_['map'](db[_0xa55e('0x2c')][_0xa55e('0x2d')],function(_0x5b79d6){return{'name':_0x5b79d6[_0xa55e('0x2e')],'type':_0x5b79d6[_0xa55e('0x2f')][_0xa55e('0x30')]};});_0x242c47[_0xa55e('0x31')]=_['map'](_0x378121,_0xa55e('0x2a'));_0x242c47['query']=_[_0xa55e('0x32')](_0x71bb8b['query']);_0x242c47[_0xa55e('0x33')]=_[_0xa55e('0x34')](_0x242c47[_0xa55e('0x31')],_0x242c47[_0xa55e('0x35')]);_0x2cdd6c['attributes']=_[_0xa55e('0x34')](_0x242c47['model'],qs[_0xa55e('0x36')](_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x36')]));_0x2cdd6c['attributes']=_0x2cdd6c[_0xa55e('0x37')][_0xa55e('0x38')]?_0x2cdd6c[_0xa55e('0x37')]:_0x242c47[_0xa55e('0x31')];if(!_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x39')]('nolimit')){_0x2cdd6c['limit']=qs[_0xa55e('0x3a')](_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x3a')]);_0x2cdd6c[_0xa55e('0x1b')]=qs[_0xa55e('0x1b')](_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x1b')]);}_0x2cdd6c['order']=qs['sort'](_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x3b')]);_0x2cdd6c[_0xa55e('0x3c')]=qs[_0xa55e('0x33')](_[_0xa55e('0x3d')](_0x71bb8b[_0xa55e('0x35')],_0x242c47[_0xa55e('0x33')]),_0x378121);if(_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x3e')]){_0x2cdd6c[_0xa55e('0x3c')]=_[_0xa55e('0x3f')](_0x2cdd6c['where'],{'$or':_[_0xa55e('0x40')](_0x378121,function(_0x3258f3){if(_0x3258f3[_0xa55e('0x2f')]!=='VIRTUAL'){var _0x1e806a={};_0x1e806a[_0x3258f3['name']]={'$like':'%'+_0x71bb8b[_0xa55e('0x35')][_0xa55e('0x3e')]+'%'};return _0x1e806a;}})});}_0x2cdd6c=_[_0xa55e('0x3f')]({},_0x2cdd6c,_0x71bb8b[_0xa55e('0x41')]);var _0x232d5e={'where':_0x2cdd6c[_0xa55e('0x3c')]};return db[_0xa55e('0x2c')]['count'](_0x232d5e)['then'](function(_0x3d9fe9){_0x3569ff[_0xa55e('0x1d')]=_0x3d9fe9;if(_0x71bb8b[_0xa55e('0x35')]['includeAll']){_0x2cdd6c[_0xa55e('0x42')]=[{'all':!![]}];}return db[_0xa55e('0x2c')][_0xa55e('0x43')](_0x2cdd6c);})[_0xa55e('0x25')](function(_0x43c887){_0x3569ff[_0xa55e('0x44')]=_0x43c887;return _0x3569ff;})[_0xa55e('0x25')](respondWithFilteredResult(_0x4a03ef,_0x2cdd6c))[_0xa55e('0x45')](handleError(_0x4a03ef,null));};exports['show']=function(_0x4bd20d,_0x34e7ba){var _0x240bfa={'raw':!![],'where':{'id':_0x4bd20d[_0xa55e('0x46')]['id']}},_0x186dc2={};_0x186dc2[_0xa55e('0x31')]=_[_0xa55e('0x32')](db[_0xa55e('0x2c')][_0xa55e('0x2d')]);_0x186dc2['query']=_['keys'](_0x4bd20d[_0xa55e('0x35')]);_0x186dc2['filters']=_[_0xa55e('0x34')](_0x186dc2['model'],_0x186dc2['query']);_0x240bfa[_0xa55e('0x37')]=_[_0xa55e('0x34')](_0x186dc2['model'],qs['fields'](_0x4bd20d[_0xa55e('0x35')][_0xa55e('0x36')]));_0x240bfa[_0xa55e('0x37')]=_0x240bfa[_0xa55e('0x37')][_0xa55e('0x38')]?_0x240bfa[_0xa55e('0x37')]:_0x186dc2['model'];if(_0x4bd20d['query'][_0xa55e('0x47')]){_0x240bfa[_0xa55e('0x42')]=[{'all':!![]}];}_0x240bfa=_[_0xa55e('0x3f')]({},_0x240bfa,_0x4bd20d[_0xa55e('0x41')]);return db[_0xa55e('0x2c')][_0xa55e('0x48')](_0x240bfa)['then'](handleEntityNotFound(_0x34e7ba,null))[_0xa55e('0x25')](respondWithResult(_0x34e7ba,null))[_0xa55e('0x45')](handleError(_0x34e7ba,null));};exports[_0xa55e('0x49')]=function(_0x1de3a8,_0x338018){return db[_0xa55e('0x2c')]['create'](_0x1de3a8['body'],{})[_0xa55e('0x25')](function(_0x52f526){var _0x2f51d9=_0x1de3a8['user'][_0xa55e('0x26')]({'plain':!![]});if(!_0x2f51d9)throw new Error(_0xa55e('0x4a'));if(_0x2f51d9[_0xa55e('0x4b')]===_0xa55e('0x4c')){var _0x2c35a8=_0x52f526[_0xa55e('0x26')]({'plain':!![]});var _0x1a1053=_0xa55e('0x27');return db['UserProfileSection'][_0xa55e('0x48')]({'where':{'name':_0x1a1053,'userProfileId':_0x2f51d9[_0xa55e('0x4d')]},'raw':!![]})[_0xa55e('0x25')](function(_0x385ce1){if(_0x385ce1&&_0x385ce1[_0xa55e('0x4e')]===0x0){return db[_0xa55e('0x28')]['create']({'name':_0x2c35a8[_0xa55e('0x2a')],'resourceId':_0x2c35a8['id'],'type':_0x385ce1[_0xa55e('0x2a')],'sectionId':_0x385ce1['id']},{})[_0xa55e('0x25')](function(){return _0x52f526;});}else{return _0x52f526;}})[_0xa55e('0x45')](function(_0x4559c8){logger[_0xa55e('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4559c8);throw _0x4559c8;});}return _0x52f526;})[_0xa55e('0x25')](respondWithResult(_0x338018,0xc9))['catch'](handleError(_0x338018,null));};exports[_0xa55e('0x23')]=function(_0x17b18b,_0x8dc49d){if(_0x17b18b[_0xa55e('0x4f')]['id']){delete _0x17b18b[_0xa55e('0x4f')]['id'];}return db[_0xa55e('0x2c')]['find']({'where':{'id':_0x17b18b[_0xa55e('0x46')]['id']}})['then'](handleEntityNotFound(_0x8dc49d,null))[_0xa55e('0x25')](saveUpdates(_0x17b18b[_0xa55e('0x4f')],null))['then'](respondWithResult(_0x8dc49d,null))[_0xa55e('0x45')](handleError(_0x8dc49d,null));};exports[_0xa55e('0x24')]=function(_0x2c8bd5,_0x1f03a8){return db[_0xa55e('0x2c')][_0xa55e('0x48')]({'where':{'id':_0x2c8bd5[_0xa55e('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f03a8,null))[_0xa55e('0x25')](removeEntity(_0x1f03a8,null))[_0xa55e('0x45')](handleError(_0x1f03a8,null));};
\ No newline at end of file
index ab9a4ba..ea53554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2043=['define','Tag','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports'];(function(_0x22b05e,_0x34fcd6){var _0x241184=function(_0x3dd5a7){while(--_0x3dd5a7){_0x22b05e['push'](_0x22b05e['shift']());}};_0x241184(++_0x34fcd6);}(_0x2043,0x122));var _0x3204=function(_0x1df4f9,_0x48c851){_0x1df4f9=_0x1df4f9-0x0;var _0x54da04=_0x2043[_0x1df4f9];return _0x54da04;};'use strict';var _=require(_0x3204('0x0'));var util=require(_0x3204('0x1'));var logger=require(_0x3204('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3204('0x3'));var rp=require(_0x3204('0x4'));var fs=require('fs');var path=require(_0x3204('0x5'));var rimraf=require(_0x3204('0x6'));var config=require(_0x3204('0x7'));var attributes=require(_0x3204('0x8'));module[_0x3204('0x9')]=function(_0x100314,_0x23c454){return _0x100314[_0x3204('0xa')](_0x3204('0xb'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe425=['exports','Tag','tools_tags','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x513f27,_0x1cbc87){var _0xa316b7=function(_0x3b592d){while(--_0x3b592d){_0x513f27['push'](_0x513f27['shift']());}};_0xa316b7(++_0x1cbc87);}(_0xe425,0x1b0));var _0x5e42=function(_0x162404,_0x3903c7){_0x162404=_0x162404-0x0;var _0x1d7869=_0xe425[_0x162404];return _0x1d7869;};'use strict';var _=require(_0x5e42('0x0'));var util=require(_0x5e42('0x1'));var logger=require(_0x5e42('0x2'))(_0x5e42('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5e42('0x4'));var fs=require('fs');var path=require(_0x5e42('0x5'));var rimraf=require(_0x5e42('0x6'));var config=require(_0x5e42('0x7'));var attributes=require('./tag.attributes');module[_0x5e42('0x8')]=function(_0x211600,_0x2eea7e){return _0x211600['define'](_0x5e42('0x9'),attributes,{'tableName':_0x5e42('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd067b6..aa839d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','then','info','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x8d8f23,_0x8c1961){var _0x22bf54=function(_0x545096){while(--_0x545096){_0x8d8f23['push'](_0x8d8f23['shift']());}};_0x22bf54(++_0x8c1961);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x2e20a9,_0x5636df){_0x2e20a9=_0x2e20a9-0x0;var _0x56adde=_0x4fdb[_0x2e20a9];return _0x56adde;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var moment=require(_0xb4fd('0x2'));var BPromise=require(_0xb4fd('0x3'));var rs=require(_0xb4fd('0x4'));var fs=require('fs');var Redis=require(_0xb4fd('0x5'));var db=require(_0xb4fd('0x6'))['db'];var utils=require(_0xb4fd('0x7'));var logger=require(_0xb4fd('0x8'))('rpc');var config=require(_0xb4fd('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb4fd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53273f,_0x299bff,_0x3af8e3){return new BPromise(function(_0x1151b5,_0x52dca2){return client['request'](_0x53273f,_0x3af8e3)[_0xb4fd('0xb')](function(_0x4f9d18){logger[_0xb4fd('0xc')]('Tag,\x20%s,\x20%s',_0x299bff,_0xb4fd('0xd'));logger[_0xb4fd('0xe')](_0xb4fd('0xf'),_0x299bff,_0xb4fd('0xd'),JSON[_0xb4fd('0x10')](_0x4f9d18));if(_0x4f9d18['error']){if(_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x12')]===0x1f4){logger[_0xb4fd('0x11')](_0xb4fd('0x13'),_0x299bff,_0x4f9d18['error'][_0xb4fd('0x14')]);return _0x52dca2(_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x14')]);}logger['error'](_0xb4fd('0x13'),_0x299bff,_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x14')]);return _0x1151b5(_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x14')]);}else{logger[_0xb4fd('0xc')](_0xb4fd('0x13'),_0x299bff,'request\x20sent');_0x1151b5(_0x4f9d18[_0xb4fd('0x15')][_0xb4fd('0x14')]);}})[_0xb4fd('0x16')](function(_0x2d4701){logger[_0xb4fd('0x11')](_0xb4fd('0x13'),_0x299bff,_0x2d4701);_0x52dca2(_0x2d4701);});});}
\ No newline at end of file
+var _0x6f0d=['Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','Tag,\x20%s,\x20%s','request\x20sent'];(function(_0x3e05f2,_0x382840){var _0x31433e=function(_0x44f709){while(--_0x44f709){_0x3e05f2['push'](_0x3e05f2['shift']());}};_0x31433e(++_0x382840);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x48a6e3,_0x473966){_0x48a6e3=_0x48a6e3-0x0;var _0x14e4a5=_0x6f0d[_0x48a6e3];return _0x14e4a5;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var moment=require(_0xd6f0('0x1'));var BPromise=require(_0xd6f0('0x2'));var rs=require(_0xd6f0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd6f0('0x4'))['db'];var utils=require(_0xd6f0('0x5'));var logger=require(_0xd6f0('0x6'))(_0xd6f0('0x7'));var config=require(_0xd6f0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd6f0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe21ac4,_0x1af29c,_0x8b89a9){return new BPromise(function(_0x1a48a0,_0x4c4916){return client['request'](_0xe21ac4,_0x8b89a9)[_0xd6f0('0xa')](function(_0x272c4e){logger[_0xd6f0('0xb')](_0xd6f0('0xc'),_0x1af29c,_0xd6f0('0xd'));logger['debug'](_0xd6f0('0xe'),_0x1af29c,_0xd6f0('0xd'),JSON[_0xd6f0('0xf')](_0x272c4e));if(_0x272c4e[_0xd6f0('0x10')]){if(_0x272c4e['error'][_0xd6f0('0x11')]===0x1f4){logger[_0xd6f0('0x10')](_0xd6f0('0xc'),_0x1af29c,_0x272c4e[_0xd6f0('0x10')][_0xd6f0('0x12')]);return _0x4c4916(_0x272c4e[_0xd6f0('0x10')][_0xd6f0('0x12')]);}logger[_0xd6f0('0x10')](_0xd6f0('0xc'),_0x1af29c,_0x272c4e['error'][_0xd6f0('0x12')]);return _0x1a48a0(_0x272c4e[_0xd6f0('0x10')]['message']);}else{logger[_0xd6f0('0xb')]('Tag,\x20%s,\x20%s',_0x1af29c,_0xd6f0('0xd'));_0x1a48a0(_0x272c4e[_0xd6f0('0x13')][_0xd6f0('0x12')]);}})[_0xd6f0('0x14')](function(_0x64ff5f){logger[_0xd6f0('0x10')](_0xd6f0('0xc'),_0x1af29c,_0x64ff5f);_0x4c4916(_0x64ff5f);});});}
\ No newline at end of file
index beceeaf..6141ccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 68830d8..326544f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x466238,_0x113f96){var _0x4b7821=function(_0x9aa8ed){while(--_0x9aa8ed){_0x466238['push'](_0x466238['shift']());}};_0x4b7821(++_0x113f96);}(_0x757a,0xde));var _0xa757=function(_0x5c5a9c,_0x4b6392){_0x5c5a9c=_0x5c5a9c-0x0;var _0x86a2e3=_0x757a[_0x5c5a9c];return _0x86a2e3;};'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 _0x2032=['name','exports','STRING'];(function(_0x3bacd5,_0x453efd){var _0x2b2a54=function(_0x1ae9f3){while(--_0x1ae9f3){_0x3bacd5['push'](_0x3bacd5['shift']());}};_0x2b2a54(++_0x453efd);}(_0x2032,0xd9));var _0x2203=function(_0x403d40,_0x325f11){_0x403d40=_0x403d40-0x0;var _0x202373=_0x2032[_0x403d40];return _0x202373;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 57806c4..729c683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','channel','isValidChannel','Sequelize','ValidationError','capitalize','toLowerCase','Queue','Queues','add','ids','removeQueues','findOne','Unknown\x20channel','remove','addAgents','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','through','penalty','QueueId','Voice','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','all','spread','removeAgents','Chat','transaction','parse','Queue:remove','getAgents','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','undefined','offset','set','Content-Range','apply','save','update','destroy','Teams','UserProfileResource','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type'];(function(_0x290821,_0x2d7375){var _0x3a48aa=function(_0x45ffee){while(--_0x45ffee){_0x290821['push'](_0x290821['shift']());}};_0x3a48aa(++_0x2d7375);}(_0x6334,0x168));var _0x4633=function(_0x277af0,_0x1f0361){_0x277af0=_0x277af0-0x0;var _0x43bd7c=_0x6334[_0x277af0];return _0x43bd7c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4633('0x0'));var zipdir=require(_0x4633('0x1'));var jsonpatch=require(_0x4633('0x2'));var rp=require(_0x4633('0x3'));var moment=require(_0x4633('0x4'));var BPromise=require(_0x4633('0x5'));var Mustache=require(_0x4633('0x6'));var util=require(_0x4633('0x7'));var path=require('path');var sox=require(_0x4633('0x8'));var csv=require(_0x4633('0x9'));var ejs=require(_0x4633('0xa'));var fs=require('fs');var fs_extra=require(_0x4633('0xb'));var _=require(_0x4633('0xc'));var squel=require(_0x4633('0xd'));var crypto=require(_0x4633('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x4633('0xf'));var toCsv=require(_0x4633('0x9'));var querystring=require('querystring');var Papa=require(_0x4633('0x10'));var Redis=require(_0x4633('0x11'));var authService=require(_0x4633('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4633('0x13'));var logger=require(_0x4633('0x14'))(_0x4633('0x15'));var utils=require(_0x4633('0x16'));var config=require(_0x4633('0x17'));var licenseUtil=require(_0x4633('0x18'));var db=require(_0x4633('0x19'))['db'];config[_0x4633('0x1a')]=_[_0x4633('0x1b')](config['redis'],{'host':_0x4633('0x1c'),'port':0x18eb});var socket=require(_0x4633('0x1d'))(new Redis(config[_0x4633('0x1a')]));require(_0x4633('0x1e'))[_0x4633('0x1f')](socket);function respondWithStatusCode(_0x2fc5a4,_0x317ba0){_0x317ba0=_0x317ba0||0xcc;return function(_0x43365e){if(_0x43365e){return _0x2fc5a4[_0x4633('0x20')](_0x317ba0);}return _0x2fc5a4[_0x4633('0x21')](_0x317ba0)[_0x4633('0x22')]();};}function respondWithResult(_0x16eb01,_0x55e85f){_0x55e85f=_0x55e85f||0xc8;return function(_0xcc1d64){if(_0xcc1d64){return _0x16eb01[_0x4633('0x21')](_0x55e85f)[_0x4633('0x23')](_0xcc1d64);}};}function respondWithFilteredResult(_0x1fd36f,_0x47811b){return function(_0x33224c){if(_0x33224c){var _0x2d144c=typeof _0x47811b['offset']===_0x4633('0x24')&&typeof _0x47811b['limit']===_0x4633('0x24');var _0x686372=_0x33224c['count'];var _0x548739=_0x2d144c?0x0:_0x47811b[_0x4633('0x25')];var _0x4e33fb=_0x2d144c?_0x33224c['count']:_0x47811b[_0x4633('0x25')]+_0x47811b['limit'];var _0x3868c1;if(_0x4e33fb>=_0x686372){_0x4e33fb=_0x686372;_0x3868c1=0xc8;}else{_0x3868c1=0xce;}_0x1fd36f[_0x4633('0x21')](_0x3868c1);return _0x1fd36f[_0x4633('0x26')](_0x4633('0x27'),_0x548739+'-'+_0x4e33fb+'/'+_0x686372)[_0x4633('0x23')](_0x33224c);}return null;};}function patchUpdates(_0x3e58cb){return function(_0x1fe2e6){try{jsonpatch[_0x4633('0x28')](_0x1fe2e6,_0x3e58cb,!![]);}catch(_0x3797c8){return BPromise['reject'](_0x3797c8);}return _0x1fe2e6[_0x4633('0x29')]();};}function saveUpdates(_0x1a5ecc,_0x17d319){return function(_0x5ede9a){if(_0x5ede9a){return _0x5ede9a[_0x4633('0x2a')](_0x1a5ecc)['then'](function(_0x388eab){return _0x388eab;});}return null;};}function removeEntity(_0x2e59d9,_0x300418){return function(_0x348f21){if(_0x348f21){return _0x348f21[_0x4633('0x2b')]()['then'](function(){var _0x25d356=_0x348f21['get']({'plain':!![]});var _0x18217d=_0x4633('0x2c');return db[_0x4633('0x2d')]['destroy']({'where':{'type':_0x18217d,'resourceId':_0x25d356['id']}})[_0x4633('0x2e')](function(){return _0x348f21;});})[_0x4633('0x2e')](function(){_0x2e59d9[_0x4633('0x21')](0xcc)[_0x4633('0x22')]();});}};}function handleEntityNotFound(_0x476908,_0x3dac85){return function(_0x2f25b2){if(!_0x2f25b2){_0x476908[_0x4633('0x20')](0x194);}return _0x2f25b2;};}function handleError(_0x42b53d,_0x37dc6e){_0x37dc6e=_0x37dc6e||0x1f4;return function(_0x3d0acb){logger[_0x4633('0x2f')](_0x3d0acb[_0x4633('0x30')]);if(_0x3d0acb[_0x4633('0x31')]){delete _0x3d0acb[_0x4633('0x31')];}_0x42b53d['status'](_0x37dc6e)[_0x4633('0x32')](_0x3d0acb);};}exports[_0x4633('0x33')]=function(_0x226ac9,_0x5212f3){var _0x223a55={},_0x5ca9cc={},_0x1bd78e={'count':0x0,'rows':[]};var _0x716eb8=_[_0x4633('0x34')](db[_0x4633('0x35')][_0x4633('0x36')],function(_0x581abc){return{'name':_0x581abc[_0x4633('0x37')],'type':_0x581abc[_0x4633('0x38')][_0x4633('0x39')]};});_0x5ca9cc[_0x4633('0x3a')]=_[_0x4633('0x34')](_0x716eb8,_0x4633('0x31'));_0x5ca9cc[_0x4633('0x3b')]=_[_0x4633('0x3c')](_0x226ac9[_0x4633('0x3b')]);_0x5ca9cc[_0x4633('0x3d')]=_['intersection'](_0x5ca9cc['model'],_0x5ca9cc[_0x4633('0x3b')]);_0x223a55[_0x4633('0x3e')]=_[_0x4633('0x3f')](_0x5ca9cc[_0x4633('0x3a')],qs[_0x4633('0x40')](_0x226ac9[_0x4633('0x3b')]['fields']));_0x223a55[_0x4633('0x3e')]=_0x223a55[_0x4633('0x3e')][_0x4633('0x41')]?_0x223a55['attributes']:_0x5ca9cc[_0x4633('0x3a')];if(!_0x226ac9[_0x4633('0x3b')]['hasOwnProperty'](_0x4633('0x42'))){_0x223a55[_0x4633('0x43')]=qs['limit'](_0x226ac9[_0x4633('0x3b')][_0x4633('0x43')]);_0x223a55['offset']=qs[_0x4633('0x25')](_0x226ac9['query'][_0x4633('0x25')]);}_0x223a55[_0x4633('0x44')]=qs[_0x4633('0x45')](_0x226ac9[_0x4633('0x3b')][_0x4633('0x45')]);_0x223a55[_0x4633('0x46')]=qs[_0x4633('0x3d')](_[_0x4633('0x47')](_0x226ac9['query'],_0x5ca9cc[_0x4633('0x3d')]),_0x716eb8);if(_0x226ac9[_0x4633('0x3b')][_0x4633('0x48')]){_0x223a55['where']=_[_0x4633('0x49')](_0x223a55[_0x4633('0x46')],{'$or':_[_0x4633('0x34')](_0x716eb8,function(_0x519259){if(_0x519259['type']!==_0x4633('0x4a')){var _0x1edecd={};_0x1edecd[_0x519259[_0x4633('0x31')]]={'$like':'%'+_0x226ac9['query']['filter']+'%'};return _0x1edecd;}})});}_0x223a55=_[_0x4633('0x49')]({},_0x223a55,_0x226ac9[_0x4633('0x4b')]);var _0x44e7ac={'where':_0x223a55[_0x4633('0x46')]};return db[_0x4633('0x35')][_0x4633('0x4c')](_0x44e7ac)[_0x4633('0x2e')](function(_0x4eb896){_0x1bd78e[_0x4633('0x4c')]=_0x4eb896;if(_0x226ac9[_0x4633('0x3b')][_0x4633('0x4d')]){_0x223a55[_0x4633('0x4e')]=[{'all':!![]}];}return db[_0x4633('0x35')][_0x4633('0x4f')](_0x223a55);})[_0x4633('0x2e')](function(_0x327091){_0x1bd78e[_0x4633('0x50')]=_0x327091;return _0x1bd78e;})['then'](respondWithFilteredResult(_0x5212f3,_0x223a55))[_0x4633('0x51')](handleError(_0x5212f3,null));};exports[_0x4633('0x52')]=function(_0x30b707,_0x479011){var _0x362eac={'raw':![],'where':{'id':_0x30b707[_0x4633('0x53')]['id']}},_0x1172ef={};_0x1172ef[_0x4633('0x3a')]=_[_0x4633('0x3c')](db[_0x4633('0x35')]['rawAttributes']);_0x1172ef[_0x4633('0x3b')]=_[_0x4633('0x3c')](_0x30b707['query']);_0x1172ef['filters']=_[_0x4633('0x3f')](_0x1172ef[_0x4633('0x3a')],_0x1172ef[_0x4633('0x3b')]);_0x362eac[_0x4633('0x3e')]=_[_0x4633('0x3f')](_0x1172ef[_0x4633('0x3a')],qs[_0x4633('0x40')](_0x30b707['query'][_0x4633('0x40')]));_0x362eac[_0x4633('0x3e')]=_0x362eac[_0x4633('0x3e')][_0x4633('0x41')]?_0x362eac[_0x4633('0x3e')]:_0x1172ef['model'];if(_0x30b707[_0x4633('0x3b')]['includeAll']){_0x362eac[_0x4633('0x4e')]=[{'all':!![]}];}_0x362eac=_[_0x4633('0x49')]({},_0x362eac,_0x30b707[_0x4633('0x4b')]);return db[_0x4633('0x35')][_0x4633('0x54')](_0x362eac)['then'](handleEntityNotFound(_0x479011,null))['then'](respondWithResult(_0x479011,null))['catch'](handleError(_0x479011,null));};exports['create']=function(_0x5d5c5a,_0xf5ae0e){return db[_0x4633('0x35')][_0x4633('0x55')](_0x5d5c5a[_0x4633('0x56')],{})[_0x4633('0x2e')](function(_0x3ffd4b){var _0x581f7c=_0x5d5c5a[_0x4633('0x57')][_0x4633('0x58')]({'plain':!![]});if(!_0x581f7c)throw new Error(_0x4633('0x59'));if(_0x581f7c[_0x4633('0x5a')]===_0x4633('0x57')){var _0x3536f3=_0x3ffd4b[_0x4633('0x58')]({'plain':!![]});var _0x4e3556=_0x4633('0x2c');return db[_0x4633('0x5b')][_0x4633('0x54')]({'where':{'name':_0x4e3556,'userProfileId':_0x581f7c['userProfileId']},'raw':!![]})[_0x4633('0x2e')](function(_0x293e6e){if(_0x293e6e&&_0x293e6e[_0x4633('0x5c')]===0x0){return db[_0x4633('0x2d')][_0x4633('0x55')]({'name':_0x3536f3[_0x4633('0x31')],'resourceId':_0x3536f3['id'],'type':_0x293e6e[_0x4633('0x31')],'sectionId':_0x293e6e['id']},{})[_0x4633('0x2e')](function(){return _0x3ffd4b;});}else{return _0x3ffd4b;}})[_0x4633('0x51')](function(_0x47f492){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47f492);throw _0x47f492;});}return _0x3ffd4b;})[_0x4633('0x2e')](respondWithResult(_0xf5ae0e,0xc9))[_0x4633('0x51')](handleError(_0xf5ae0e,null));};exports[_0x4633('0x2a')]=function(_0x34c22d,_0x11827b){if(_0x34c22d[_0x4633('0x56')]['id']){delete _0x34c22d['body']['id'];}return db[_0x4633('0x35')][_0x4633('0x54')]({'where':{'id':_0x34c22d[_0x4633('0x53')]['id']}})['then'](handleEntityNotFound(_0x11827b,null))[_0x4633('0x2e')](saveUpdates(_0x34c22d['body'],null))['then'](respondWithResult(_0x11827b,null))[_0x4633('0x51')](handleError(_0x11827b,null));};exports['destroy']=function(_0x40de25,_0x347b49){return db[_0x4633('0x35')][_0x4633('0x54')]({'where':{'id':_0x40de25[_0x4633('0x53')]['id']}})[_0x4633('0x2e')](handleEntityNotFound(_0x347b49,null))[_0x4633('0x2e')](removeEntity(_0x347b49,null))[_0x4633('0x51')](handleError(_0x347b49,null));};exports['getQueues']=function(_0x4a48f7,_0x2e6334,_0x5aa381){return db[_0x4633('0x35')]['findOne']({'where':{'id':_0x4a48f7[_0x4633('0x53')]['id']}})['then'](handleEntityNotFound(_0x2e6334,null))['then'](function(_0x4af1f5){if(!_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')]||!utils[_0x4633('0x5e')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')])){throw new db[(_0x4633('0x5f'))][(_0x4633('0x60'))]('Unknown\x20channel');}var _0x86a556={};var _0x20377b={};_0x20377b[_0x4633('0x3a')]=_['keys'](db[_[_0x4633('0x61')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')][_0x4633('0x62')]())+_0x4633('0x63')]['rawAttributes']);_0x20377b['query']=_[_0x4633('0x3c')](_0x4a48f7[_0x4633('0x3b')]);_0x20377b[_0x4633('0x3d')]=_[_0x4633('0x3f')](_0x20377b[_0x4633('0x3a')],_0x20377b['query']);_0x86a556[_0x4633('0x3e')]=_[_0x4633('0x3f')](_0x20377b[_0x4633('0x3a')],qs['fields'](_0x4a48f7[_0x4633('0x3b')]['fields']));_0x86a556[_0x4633('0x3e')]=_0x86a556['attributes'][_0x4633('0x41')]?_0x86a556[_0x4633('0x3e')]:_0x20377b[_0x4633('0x3a')];_0x86a556[_0x4633('0x43')]=qs['limit'](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x43')]);_0x86a556['offset']=qs[_0x4633('0x25')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x25')]);_0x86a556['order']=qs[_0x4633('0x45')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x45')]);_0x86a556[_0x4633('0x46')]=qs[_0x4633('0x3d')](_[_0x4633('0x47')](_0x4a48f7[_0x4633('0x3b')],_0x20377b[_0x4633('0x3d')]));_0x86a556=_[_0x4633('0x49')]({},_0x86a556,_0x4a48f7[_0x4633('0x4b')]);return _0x4af1f5[_0x4633('0x58')+_['capitalize'](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')][_0x4633('0x62')]())+_0x4633('0x64')](_0x86a556);})['then'](respondWithResult(_0x2e6334,null))['catch'](handleError(_0x2e6334,null));};exports['addQueues']=function(_0x3ed7cc,_0x5b455f,_0xc4fd40){return db[_0x4633('0x35')]['findOne']({'where':{'id':_0x3ed7cc[_0x4633('0x53')]['id']}})[_0x4633('0x2e')](function(_0x163b98){if(_0x163b98){if(!_0x3ed7cc[_0x4633('0x56')]['channel']||!utils[_0x4633('0x5e')](_0x3ed7cc[_0x4633('0x56')][_0x4633('0x5d')])){throw new db[(_0x4633('0x5f'))][(_0x4633('0x60'))]('Unknown\x20channel');}return _0x163b98[_0x4633('0x65')+_[_0x4633('0x61')](_0x3ed7cc[_0x4633('0x56')]['channel'][_0x4633('0x62')]())+_0x4633('0x64')](_0x3ed7cc[_0x4633('0x56')][_0x4633('0x66')]);}return null;})['then'](handleEntityNotFound(_0x5b455f,null))['then'](respondWithStatusCode(_0x5b455f,null))[_0x4633('0x51')](handleError(_0x5b455f,null));};exports[_0x4633('0x67')]=function(_0x82ec88,_0x5e6b5e,_0x44d9bb){return db['Team'][_0x4633('0x68')]({'where':{'id':_0x82ec88[_0x4633('0x53')]['id']}})['then'](function(_0x396bde){if(_0x396bde){if(!_0x82ec88[_0x4633('0x3b')]['channel']||!utils[_0x4633('0x5e')](_0x82ec88[_0x4633('0x3b')]['channel'])){throw new db[(_0x4633('0x5f'))][(_0x4633('0x60'))](_0x4633('0x69'));}return _0x396bde[_0x4633('0x6a')+_['capitalize'](_0x82ec88[_0x4633('0x3b')][_0x4633('0x5d')][_0x4633('0x62')]())+'Queues'](_0x82ec88[_0x4633('0x3b')][_0x4633('0x66')]);}return null;})[_0x4633('0x2e')](handleEntityNotFound(_0x5e6b5e,null))[_0x4633('0x2e')](respondWithStatusCode(_0x5e6b5e,null))[_0x4633('0x51')](handleError(_0x5e6b5e,null));};exports[_0x4633('0x6b')]=function(_0x34e681,_0x2ba7ed){return db[_0x4633('0x35')][_0x4633('0x54')]({'where':{'id':_0x34e681['params']['id']}})['then'](handleEntityNotFound(_0x2ba7ed,null))[_0x4633('0x2e')](function(_0x403589){if(_0x403589){var _0x55ee8e=['Voice','Chat',_0x4633('0x6c'),_0x4633('0x6d'),_0x4633('0x6e'),_0x4633('0x6f'),_0x4633('0x70')];return db[_0x4633('0x71')]['transaction'](function(_0x11d8eb){var _0x5e4df5=_[_0x4633('0x34')](_0x55ee8e,function(_0x276bf9){var _0x31e742={'attributes':['id',_0x4633('0x31')]};if(_0x276bf9==='Voice'){_0x31e742[_0x4633('0x72')]={'attributes':[_0x4633('0x73')]};}return _0x403589['get'+_0x276bf9+_0x4633('0x64')](_0x31e742)[_0x4633('0x2e')](function(_0xfe05f3){var _0xfce1a0=_[_0x4633('0x34')](_0xfe05f3,function(_0x2e92c8){var _0xdcddb7=_[_0x4633('0x34')](_0x34e681[_0x4633('0x56')]['ids'],function(_0x14cebf){var _0x50919a={'where':{'UserId':_0x14cebf,[_0x276bf9+_0x4633('0x74')]:_0x2e92c8['id']},'transaction':_0x11d8eb};if(_0x276bf9===_0x4633('0x75')){_0x50919a['defaults']={'penalty':_0x2e92c8[_0x4633('0x76')][_0x4633('0x73')]};}return db[_0x4633('0x77')+_0x276bf9+_0x4633('0x63')][_0x4633('0x78')](_0x50919a)['then'](function(){socket[_0x4633('0x79')](_0x4633('0x57')+_0x276bf9+_0x4633('0x7a'),{'UserId':_0x14cebf,[_0x276bf9+_0x4633('0x74')]:_0x2e92c8['id']});if(_0x276bf9!==_0x4633('0x75'))return;return db[_0x4633('0x77')][_0x4633('0x4f')]({'where':{'id':_0x34e681['body']['ids'],'online':0x1},'attributes':['id',_0x4633('0x31'),_0x4633('0x7b'),_0x4633('0x7c'),_0x4633('0x7d')],'raw':!![]})['then'](function(_0x421509){var _0x1ad5f4=_[_0x4633('0x34')](_0x421509,function(_0x3de621){return db[_0x4633('0x7e')][_0x4633('0x7f')]({'membername':_0x3de621[_0x4633('0x31')],'UserId':_0x3de621['id'],'queue_name':_0x2e92c8[_0x4633('0x31')],'VoiceQueueId':_0x2e92c8['id'],'interface':_[_0x4633('0x80')](_0x3de621[_0x4633('0x7d')])?util[_0x4633('0x81')]('SIP/%s',_0x3de621[_0x4633('0x31')]):_0x3de621['interface'],'paused':_0x3de621[_0x4633('0x7c')]||![],'penalty':_0x2e92c8[_0x4633('0x76')]['penalty']},{'transaction':_0x11d8eb});});return Promise['all'](_0x1ad5f4);});});});return Promise['all'](_0xdcddb7);});return Promise[_0x4633('0x82')](_0xfce1a0);});});return Promise['all'](_0x5e4df5)[_0x4633('0x2e')](function(){return _0x403589[_0x4633('0x6b')](_0x34e681[_0x4633('0x56')][_0x4633('0x66')],{'transaction':_0x11d8eb})[_0x4633('0x83')](function(_0x263912){return _0x263912;});});});}})['then'](respondWithResult(_0x2ba7ed,null))[_0x4633('0x51')](handleError(_0x2ba7ed,null));};exports[_0x4633('0x84')]=function(_0x296adf,_0x56020e){return db[_0x4633('0x35')]['find']({'where':{'id':_0x296adf['params']['id']}})[_0x4633('0x2e')](handleEntityNotFound(_0x56020e,null))[_0x4633('0x2e')](function(_0x3872e9){if(_0x3872e9){var _0x209534=[_0x4633('0x75'),_0x4633('0x85'),'Mail',_0x4633('0x6d'),_0x4633('0x6e'),'Openchannel',_0x4633('0x70')];return db['sequelize'][_0x4633('0x86')](function(_0x5978ac){var _0x440e20=_[_0x4633('0x34')](_0x209534,function(_0x2162c0){var _0xea845c={'attributes':['id',_0x4633('0x31')]};return _0x3872e9[_0x4633('0x58')+_0x2162c0+_0x4633('0x64')](_0xea845c)[_0x4633('0x2e')](function(_0x3ca5c4){var _0x1b4ced=_[_0x4633('0x34')](_0x3ca5c4,function(_0xabe642){return _0xabe642[_0x4633('0x84')](_0x296adf[_0x4633('0x3b')][_0x4633('0x66')],{'transaction':_0x5978ac})[_0x4633('0x2e')](function(){var _0x1de974=JSON[_0x4633('0x87')]('['+_0x296adf[_0x4633('0x3b')][_0x4633('0x66')]+']');var _0x51f116=_[_0x4633('0x34')](_0x1de974,function(_0x2ff755){socket[_0x4633('0x79')](_0x4633('0x57')+_0x2162c0+_0x4633('0x88'),{'UserId':Number(_0x2ff755),[_0x2162c0+_0x4633('0x74')]:_0xabe642['id']});if(_0x2162c0!=='Voice')return;return db[_0x4633('0x7e')][_0x4633('0x2b')]({'where':{'VoiceQueueId':_0xabe642['id'],'UserId':_0x2ff755},'transaction':_0x5978ac});});return Promise[_0x4633('0x82')](_0x51f116);});});return Promise[_0x4633('0x82')](_0x1b4ced);});});return Promise[_0x4633('0x82')](_0x440e20)[_0x4633('0x2e')](function(){return _0x3872e9[_0x4633('0x84')](_0x296adf[_0x4633('0x3b')][_0x4633('0x66')],{'transaction':_0x5978ac});});});}})[_0x4633('0x2e')](respondWithStatusCode(_0x56020e,null))[_0x4633('0x51')](handleError(_0x56020e,null));};exports[_0x4633('0x89')]=function(_0x1e1539,_0x52e394,_0x2b9cbd){var _0x3ce3ff={};var _0xa188cb={};var _0x5f9ff7;var _0x272ecb;return db[_0x4633('0x35')][_0x4633('0x68')]({'where':{'id':_0x1e1539[_0x4633('0x53')]['id']}})[_0x4633('0x2e')](handleEntityNotFound(_0x52e394,null))[_0x4633('0x2e')](function(_0x1d3ffa){if(_0x1d3ffa){_0x5f9ff7=_0x1d3ffa;_0xa188cb[_0x4633('0x3a')]=_[_0x4633('0x3c')](db[_0x4633('0x77')][_0x4633('0x36')]);_0xa188cb[_0x4633('0x3b')]=_['keys'](_0x1e1539[_0x4633('0x3b')]);_0xa188cb['filters']=_['intersection'](_0xa188cb[_0x4633('0x3a')],_0xa188cb['query']);_0x3ce3ff['attributes']=_['intersection'](_0xa188cb[_0x4633('0x3a')],qs[_0x4633('0x40')](_0x1e1539[_0x4633('0x3b')]['fields']));_0x3ce3ff[_0x4633('0x3e')]=_0x3ce3ff[_0x4633('0x3e')][_0x4633('0x41')]?_0x3ce3ff[_0x4633('0x3e')]:_0xa188cb[_0x4633('0x3a')];_0x3ce3ff[_0x4633('0x44')]=qs['sort'](_0x1e1539[_0x4633('0x3b')]['sort']);_0x3ce3ff[_0x4633('0x46')]=qs[_0x4633('0x3d')](_[_0x4633('0x47')](_0x1e1539[_0x4633('0x3b')],_0xa188cb['filters']));if(_0x1e1539[_0x4633('0x3b')][_0x4633('0x48')]){_0x3ce3ff[_0x4633('0x46')]=_[_0x4633('0x49')](_0x3ce3ff[_0x4633('0x46')],{'$or':_[_0x4633('0x34')](_0x3ce3ff[_0x4633('0x3e')],function(_0x5058d8){var _0x4fe5ed={};_0x4fe5ed[_0x5058d8]={'$like':'%'+_0x1e1539[_0x4633('0x3b')]['filter']+'%'};return _0x4fe5ed;})});}_0x3ce3ff=_[_0x4633('0x49')]({},_0x3ce3ff,_0x1e1539[_0x4633('0x4b')]);return _0x5f9ff7[_0x4633('0x89')](_0x3ce3ff);}})[_0x4633('0x2e')](function(_0x2dee28){if(_0x2dee28){_0x272ecb=_0x2dee28[_0x4633('0x41')];if(!_0x1e1539[_0x4633('0x3b')][_0x4633('0x8a')](_0x4633('0x42'))){_0x3ce3ff[_0x4633('0x43')]=qs[_0x4633('0x43')](_0x1e1539[_0x4633('0x3b')][_0x4633('0x43')]);_0x3ce3ff[_0x4633('0x25')]=qs[_0x4633('0x25')](_0x1e1539['query']['offset']);}return _0x5f9ff7[_0x4633('0x89')](_0x3ce3ff);}})[_0x4633('0x2e')](function(_0x5549c0){if(_0x5549c0){return _0x5549c0?{'count':_0x272ecb,'rows':_0x5549c0}:null;}})[_0x4633('0x2e')](respondWithResult(_0x52e394,null))[_0x4633('0x51')](handleError(_0x52e394,null));};
\ No newline at end of file
+var _0x70e0=['papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','end','offset','limit','undefined','count','set','json','apply','reject','save','update','then','destroy','get','UserProfileResource','status','sendStatus','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','merge','VIRTUAL','filter','Team','include','findAll','show','params','length','includeAll','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getQueues','findOne','channel','isValidChannel','ValidationError','capitalize','toLowerCase','Queues','addQueues','Sequelize','Unknown\x20channel','ids','removeQueues','remove','addAgents','Voice','Chat','Mail','Sms','Fax','Whatsapp','sequelize','through','penalty','TeamVoiceQueue','User','Queue','Queue:save','QueueId','online','interface','UserVoiceQueueRt','upsert','SIP/%s','voicePause','all','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','spread','removeAgents','isArray','Openchannel','transaction','emit','Queue:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','ejs','crypto','jsforce','desk.js','to-csv','querystring'];(function(_0xcc26d2,_0x20c921){var _0x3841e2=function(_0x1ba4ea){while(--_0x1ba4ea){_0xcc26d2['push'](_0xcc26d2['shift']());}};_0x3841e2(++_0x20c921);}(_0x70e0,0x17b));var _0x070e=function(_0xe71529,_0x5d5ca8){_0xe71529=_0xe71529-0x0;var _0x5cfeb2=_0x70e0[_0xe71529];return _0x5cfeb2;};'use strict';var emlformat=require(_0x070e('0x0'));var rimraf=require(_0x070e('0x1'));var zipdir=require(_0x070e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x070e('0x3'));var BPromise=require(_0x070e('0x4'));var Mustache=require(_0x070e('0x5'));var util=require(_0x070e('0x6'));var path=require('path');var sox=require(_0x070e('0x7'));var csv=require('to-csv');var ejs=require(_0x070e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x070e('0x9'));var jsforce=require(_0x070e('0xa'));var deskjs=require(_0x070e('0xb'));var toCsv=require(_0x070e('0xc'));var querystring=require(_0x070e('0xd'));var Papa=require(_0x070e('0xe'));var Redis=require(_0x070e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x070e('0x10'));var hardwareService=require(_0x070e('0x11'));var logger=require(_0x070e('0x12'))(_0x070e('0x13'));var utils=require(_0x070e('0x14'));var config=require(_0x070e('0x15'));var licenseUtil=require(_0x070e('0x16'));var db=require(_0x070e('0x17'))['db'];config[_0x070e('0x18')]=_[_0x070e('0x19')](config[_0x070e('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x070e('0x18')]));require('./team.socket')['register'](socket);function respondWithStatusCode(_0x5bae0f,_0x11d2ce){_0x11d2ce=_0x11d2ce||0xcc;return function(_0x14c3fd){if(_0x14c3fd){return _0x5bae0f['sendStatus'](_0x11d2ce);}return _0x5bae0f['status'](_0x11d2ce)[_0x070e('0x1a')]();};}function respondWithResult(_0xeae1a5,_0x180897){_0x180897=_0x180897||0xc8;return function(_0x19d9da){if(_0x19d9da){return _0xeae1a5['status'](_0x180897)['json'](_0x19d9da);}};}function respondWithFilteredResult(_0x17e2e4,_0x2bd937){return function(_0x38f6e6){if(_0x38f6e6){var _0x2060cc=typeof _0x2bd937[_0x070e('0x1b')]==='undefined'&&typeof _0x2bd937[_0x070e('0x1c')]===_0x070e('0x1d');var _0x1ad3de=_0x38f6e6[_0x070e('0x1e')];var _0x259893=_0x2060cc?0x0:_0x2bd937['offset'];var _0x5b2f48=_0x2060cc?_0x38f6e6['count']:_0x2bd937[_0x070e('0x1b')]+_0x2bd937[_0x070e('0x1c')];var _0x20dc60;if(_0x5b2f48>=_0x1ad3de){_0x5b2f48=_0x1ad3de;_0x20dc60=0xc8;}else{_0x20dc60=0xce;}_0x17e2e4['status'](_0x20dc60);return _0x17e2e4[_0x070e('0x1f')]('Content-Range',_0x259893+'-'+_0x5b2f48+'/'+_0x1ad3de)[_0x070e('0x20')](_0x38f6e6);}return null;};}function patchUpdates(_0x3f6985){return function(_0x27a01e){try{jsonpatch[_0x070e('0x21')](_0x27a01e,_0x3f6985,!![]);}catch(_0x28a1c3){return BPromise[_0x070e('0x22')](_0x28a1c3);}return _0x27a01e[_0x070e('0x23')]();};}function saveUpdates(_0x164cdf,_0x595c7e){return function(_0x2f8055){if(_0x2f8055){return _0x2f8055[_0x070e('0x24')](_0x164cdf)[_0x070e('0x25')](function(_0x503f4d){return _0x503f4d;});}return null;};}function removeEntity(_0xf17c56,_0x5f3e9d){return function(_0x4a2dbd){if(_0x4a2dbd){return _0x4a2dbd[_0x070e('0x26')]()[_0x070e('0x25')](function(){var _0x41deb1=_0x4a2dbd[_0x070e('0x27')]({'plain':!![]});var _0x4763c6='Teams';return db[_0x070e('0x28')][_0x070e('0x26')]({'where':{'type':_0x4763c6,'resourceId':_0x41deb1['id']}})[_0x070e('0x25')](function(){return _0x4a2dbd;});})[_0x070e('0x25')](function(){_0xf17c56[_0x070e('0x29')](0xcc)[_0x070e('0x1a')]();});}};}function handleEntityNotFound(_0x1a1892,_0x26373b){return function(_0x5e8326){if(!_0x5e8326){_0x1a1892[_0x070e('0x2a')](0x194);}return _0x5e8326;};}function handleError(_0x351641,_0x3a16d0){_0x3a16d0=_0x3a16d0||0x1f4;return function(_0x56fc12){logger['error'](_0x56fc12[_0x070e('0x2b')]);if(_0x56fc12[_0x070e('0x2c')]){delete _0x56fc12[_0x070e('0x2c')];}_0x351641['status'](_0x3a16d0)[_0x070e('0x2d')](_0x56fc12);};}exports[_0x070e('0x2e')]=function(_0x3a9425,_0x5f2bee){var _0x53d473={},_0x5bf522={},_0x523b75={'count':0x0,'rows':[]};var _0x59c5b4=_[_0x070e('0x2f')](db['Team'][_0x070e('0x30')],function(_0x323cf1){return{'name':_0x323cf1['fieldName'],'type':_0x323cf1['type'][_0x070e('0x31')]};});_0x5bf522[_0x070e('0x32')]=_['map'](_0x59c5b4,'name');_0x5bf522[_0x070e('0x33')]=_[_0x070e('0x34')](_0x3a9425[_0x070e('0x33')]);_0x5bf522[_0x070e('0x35')]=_[_0x070e('0x36')](_0x5bf522['model'],_0x5bf522['query']);_0x53d473[_0x070e('0x37')]=_[_0x070e('0x36')](_0x5bf522[_0x070e('0x32')],qs[_0x070e('0x38')](_0x3a9425[_0x070e('0x33')]['fields']));_0x53d473[_0x070e('0x37')]=_0x53d473[_0x070e('0x37')]['length']?_0x53d473[_0x070e('0x37')]:_0x5bf522[_0x070e('0x32')];if(!_0x3a9425['query']['hasOwnProperty']('nolimit')){_0x53d473[_0x070e('0x1c')]=qs[_0x070e('0x1c')](_0x3a9425[_0x070e('0x33')][_0x070e('0x1c')]);_0x53d473[_0x070e('0x1b')]=qs['offset'](_0x3a9425[_0x070e('0x33')][_0x070e('0x1b')]);}_0x53d473[_0x070e('0x39')]=qs['sort'](_0x3a9425[_0x070e('0x33')][_0x070e('0x3a')]);_0x53d473[_0x070e('0x3b')]=qs['filters'](_[_0x070e('0x3c')](_0x3a9425[_0x070e('0x33')],_0x5bf522['filters']),_0x59c5b4);if(_0x3a9425[_0x070e('0x33')]['filter']){_0x53d473[_0x070e('0x3b')]=_[_0x070e('0x3d')](_0x53d473[_0x070e('0x3b')],{'$or':_[_0x070e('0x2f')](_0x59c5b4,function(_0xd03404){if(_0xd03404['type']!==_0x070e('0x3e')){var _0x5db2ce={};_0x5db2ce[_0xd03404['name']]={'$like':'%'+_0x3a9425[_0x070e('0x33')][_0x070e('0x3f')]+'%'};return _0x5db2ce;}})});}_0x53d473=_[_0x070e('0x3d')]({},_0x53d473,_0x3a9425['options']);var _0x2ad56c={'where':_0x53d473[_0x070e('0x3b')]};return db[_0x070e('0x40')][_0x070e('0x1e')](_0x2ad56c)['then'](function(_0x13e4e0){_0x523b75['count']=_0x13e4e0;if(_0x3a9425['query']['includeAll']){_0x53d473[_0x070e('0x41')]=[{'all':!![]}];}return db[_0x070e('0x40')][_0x070e('0x42')](_0x53d473);})[_0x070e('0x25')](function(_0x34f23e){_0x523b75['rows']=_0x34f23e;return _0x523b75;})[_0x070e('0x25')](respondWithFilteredResult(_0x5f2bee,_0x53d473))['catch'](handleError(_0x5f2bee,null));};exports[_0x070e('0x43')]=function(_0x42245d,_0xff760c){var _0x52fcea={'raw':![],'where':{'id':_0x42245d[_0x070e('0x44')]['id']}},_0x54285a={};_0x54285a['model']=_[_0x070e('0x34')](db[_0x070e('0x40')][_0x070e('0x30')]);_0x54285a['query']=_[_0x070e('0x34')](_0x42245d[_0x070e('0x33')]);_0x54285a['filters']=_['intersection'](_0x54285a[_0x070e('0x32')],_0x54285a[_0x070e('0x33')]);_0x52fcea[_0x070e('0x37')]=_[_0x070e('0x36')](_0x54285a[_0x070e('0x32')],qs['fields'](_0x42245d[_0x070e('0x33')][_0x070e('0x38')]));_0x52fcea[_0x070e('0x37')]=_0x52fcea[_0x070e('0x37')][_0x070e('0x45')]?_0x52fcea[_0x070e('0x37')]:_0x54285a[_0x070e('0x32')];if(_0x42245d[_0x070e('0x33')][_0x070e('0x46')]){_0x52fcea[_0x070e('0x41')]=[{'all':!![]}];}_0x52fcea=_[_0x070e('0x3d')]({},_0x52fcea,_0x42245d[_0x070e('0x47')]);return db[_0x070e('0x40')][_0x070e('0x48')](_0x52fcea)[_0x070e('0x25')](handleEntityNotFound(_0xff760c,null))['then'](respondWithResult(_0xff760c,null))[_0x070e('0x49')](handleError(_0xff760c,null));};exports[_0x070e('0x4a')]=function(_0x40298a,_0x249e3f){return db[_0x070e('0x40')][_0x070e('0x4a')](_0x40298a[_0x070e('0x4b')],{})[_0x070e('0x25')](function(_0x1c64d2){var _0x5744c5=_0x40298a[_0x070e('0x4c')]['get']({'plain':!![]});if(!_0x5744c5)throw new Error(_0x070e('0x4d'));if(_0x5744c5[_0x070e('0x4e')]==='user'){var _0x991d23=_0x1c64d2[_0x070e('0x27')]({'plain':!![]});var _0x25466f=_0x070e('0x4f');return db[_0x070e('0x50')][_0x070e('0x48')]({'where':{'name':_0x25466f,'userProfileId':_0x5744c5[_0x070e('0x51')]},'raw':!![]})['then'](function(_0x296978){if(_0x296978&&_0x296978['autoAssociation']===0x0){return db['UserProfileResource'][_0x070e('0x4a')]({'name':_0x991d23[_0x070e('0x2c')],'resourceId':_0x991d23['id'],'type':_0x296978[_0x070e('0x2c')],'sectionId':_0x296978['id']},{})[_0x070e('0x25')](function(){return _0x1c64d2;});}else{return _0x1c64d2;}})[_0x070e('0x49')](function(_0x7948ed){logger[_0x070e('0x52')](_0x070e('0x53'),_0x7948ed);throw _0x7948ed;});}return _0x1c64d2;})['then'](respondWithResult(_0x249e3f,0xc9))[_0x070e('0x49')](handleError(_0x249e3f,null));};exports['update']=function(_0x564d82,_0x3a76e2){if(_0x564d82[_0x070e('0x4b')]['id']){delete _0x564d82['body']['id'];}return db[_0x070e('0x40')][_0x070e('0x48')]({'where':{'id':_0x564d82[_0x070e('0x44')]['id']}})[_0x070e('0x25')](handleEntityNotFound(_0x3a76e2,null))[_0x070e('0x25')](saveUpdates(_0x564d82[_0x070e('0x4b')],null))[_0x070e('0x25')](respondWithResult(_0x3a76e2,null))['catch'](handleError(_0x3a76e2,null));};exports['destroy']=function(_0x5943e3,_0x3087e5){return db[_0x070e('0x40')][_0x070e('0x48')]({'where':{'id':_0x5943e3[_0x070e('0x44')]['id']}})['then'](handleEntityNotFound(_0x3087e5,null))[_0x070e('0x25')](removeEntity(_0x3087e5,null))['catch'](handleError(_0x3087e5,null));};exports[_0x070e('0x54')]=function(_0x1cbb7e,_0x476804,_0x24f303){return db[_0x070e('0x40')][_0x070e('0x55')]({'where':{'id':_0x1cbb7e['params']['id']}})[_0x070e('0x25')](handleEntityNotFound(_0x476804,null))[_0x070e('0x25')](function(_0x8aaf00){if(!_0x1cbb7e['query'][_0x070e('0x56')]||!utils[_0x070e('0x57')](_0x1cbb7e['query'][_0x070e('0x56')])){throw new db['Sequelize'][(_0x070e('0x58'))]('Unknown\x20channel');}var _0x4cb86f={};var _0x4b354d={};_0x4b354d[_0x070e('0x32')]=_[_0x070e('0x34')](db[_[_0x070e('0x59')](_0x1cbb7e[_0x070e('0x33')][_0x070e('0x56')][_0x070e('0x5a')]())+'Queue'][_0x070e('0x30')]);_0x4b354d['query']=_[_0x070e('0x34')](_0x1cbb7e['query']);_0x4b354d[_0x070e('0x35')]=_[_0x070e('0x36')](_0x4b354d['model'],_0x4b354d[_0x070e('0x33')]);_0x4cb86f['attributes']=_[_0x070e('0x36')](_0x4b354d[_0x070e('0x32')],qs[_0x070e('0x38')](_0x1cbb7e[_0x070e('0x33')][_0x070e('0x38')]));_0x4cb86f[_0x070e('0x37')]=_0x4cb86f[_0x070e('0x37')][_0x070e('0x45')]?_0x4cb86f[_0x070e('0x37')]:_0x4b354d[_0x070e('0x32')];_0x4cb86f[_0x070e('0x1c')]=qs[_0x070e('0x1c')](_0x1cbb7e[_0x070e('0x33')][_0x070e('0x1c')]);_0x4cb86f['offset']=qs[_0x070e('0x1b')](_0x1cbb7e[_0x070e('0x33')][_0x070e('0x1b')]);_0x4cb86f[_0x070e('0x39')]=qs['sort'](_0x1cbb7e[_0x070e('0x33')][_0x070e('0x3a')]);_0x4cb86f[_0x070e('0x3b')]=qs[_0x070e('0x35')](_[_0x070e('0x3c')](_0x1cbb7e[_0x070e('0x33')],_0x4b354d['filters']));_0x4cb86f=_[_0x070e('0x3d')]({},_0x4cb86f,_0x1cbb7e[_0x070e('0x47')]);return _0x8aaf00[_0x070e('0x27')+_[_0x070e('0x59')](_0x1cbb7e['query'][_0x070e('0x56')]['toLowerCase']())+_0x070e('0x5b')](_0x4cb86f);})[_0x070e('0x25')](respondWithResult(_0x476804,null))[_0x070e('0x49')](handleError(_0x476804,null));};exports[_0x070e('0x5c')]=function(_0x2a20d4,_0x50ef9f,_0x2e48f9){return db[_0x070e('0x40')][_0x070e('0x55')]({'where':{'id':_0x2a20d4[_0x070e('0x44')]['id']}})['then'](function(_0x26b2c0){if(_0x26b2c0){if(!_0x2a20d4['body'][_0x070e('0x56')]||!utils[_0x070e('0x57')](_0x2a20d4[_0x070e('0x4b')]['channel'])){throw new db[(_0x070e('0x5d'))]['ValidationError'](_0x070e('0x5e'));}return _0x26b2c0['add'+_[_0x070e('0x59')](_0x2a20d4[_0x070e('0x4b')]['channel'][_0x070e('0x5a')]())+'Queues'](_0x2a20d4[_0x070e('0x4b')][_0x070e('0x5f')]);}return null;})['then'](handleEntityNotFound(_0x50ef9f,null))['then'](respondWithStatusCode(_0x50ef9f,null))[_0x070e('0x49')](handleError(_0x50ef9f,null));};exports[_0x070e('0x60')]=function(_0xf67cfd,_0x17cf15,_0x25f1d0){return db[_0x070e('0x40')][_0x070e('0x55')]({'where':{'id':_0xf67cfd[_0x070e('0x44')]['id']}})[_0x070e('0x25')](function(_0x1d1f44){if(_0x1d1f44){if(!_0xf67cfd[_0x070e('0x33')][_0x070e('0x56')]||!utils[_0x070e('0x57')](_0xf67cfd['query'][_0x070e('0x56')])){throw new db[(_0x070e('0x5d'))]['ValidationError']('Unknown\x20channel');}return _0x1d1f44[_0x070e('0x61')+_[_0x070e('0x59')](_0xf67cfd[_0x070e('0x33')][_0x070e('0x56')][_0x070e('0x5a')]())+_0x070e('0x5b')](_0xf67cfd[_0x070e('0x33')][_0x070e('0x5f')]);}return null;})[_0x070e('0x25')](handleEntityNotFound(_0x17cf15,null))[_0x070e('0x25')](respondWithStatusCode(_0x17cf15,null))[_0x070e('0x49')](handleError(_0x17cf15,null));};exports[_0x070e('0x62')]=function(_0x46ec49,_0x595e2e){var _0x4f720f=_['isArray'](_0x46ec49[_0x070e('0x4b')][_0x070e('0x5f')])?_0x46ec49[_0x070e('0x4b')][_0x070e('0x5f')]:[_0x46ec49['body'][_0x070e('0x5f')]];var _0x332022=_0x46ec49[_0x070e('0x44')]['id'];return db[_0x070e('0x40')][_0x070e('0x48')]({'where':{'id':_0x332022}})[_0x070e('0x25')](handleEntityNotFound(_0x595e2e,null))['then'](function(_0xb2954d){if(_0xb2954d){var _0x5c56bd=[_0x070e('0x63'),_0x070e('0x64'),_0x070e('0x65'),_0x070e('0x66'),_0x070e('0x67'),'Openchannel',_0x070e('0x68')];return db[_0x070e('0x69')]['transaction'](function(_0x421392){var _0x1e1d27=_['map'](_0x5c56bd,function(_0xb8ae48){var _0x6efb89={'attributes':['id',_0x070e('0x2c')]};if(_0xb8ae48==='Voice'){_0x6efb89[_0x070e('0x6a')]={'attributes':[_0x070e('0x6b')]};}return _0xb2954d[_0x070e('0x27')+_0xb8ae48+_0x070e('0x5b')](_0x6efb89)[_0x070e('0x25')](function(_0x17975c){var _0x3961a6=_[_0x070e('0x2f')](_0x17975c,function(_0x206b97){var _0x31ab81=_[_0x070e('0x2f')](_0x4f720f,function(_0x46d2b7){var _0x18c27a={'where':{'UserId':_0x46d2b7,[_0xb8ae48+'QueueId']:_0x206b97['id']},'transaction':_0x421392};if(_0xb8ae48===_0x070e('0x63')){_0x18c27a[_0x070e('0x19')]={'penalty':_0x206b97[_0x070e('0x6c')][_0x070e('0x6b')]};}return db[_0x070e('0x6d')+_0xb8ae48+_0x070e('0x6e')]['findOrCreate'](_0x18c27a)['then'](function(){socket['emit'](_0x070e('0x4c')+_0xb8ae48+_0x070e('0x6f'),{'UserId':_0x46d2b7,[_0xb8ae48+_0x070e('0x70')]:_0x206b97['id']});if(_0xb8ae48!==_0x070e('0x63')){return;}return db['User'][_0x070e('0x42')]({'where':{'id':_0x4f720f,'online':0x1},'attributes':['id',_0x070e('0x2c'),_0x070e('0x71'),'voicePause',_0x070e('0x72')],'raw':!![]})['then'](function(_0x237e3b){var _0x396902=_['map'](_0x237e3b,function(_0x59fe3e){return db[_0x070e('0x73')][_0x070e('0x74')]({'membername':_0x59fe3e['name'],'UserId':_0x59fe3e['id'],'queue_name':_0x206b97[_0x070e('0x2c')],'VoiceQueueId':_0x206b97['id'],'interface':_['isNil'](_0x59fe3e['interface'])?util['format'](_0x070e('0x75'),_0x59fe3e[_0x070e('0x2c')]):_0x59fe3e[_0x070e('0x72')],'paused':_0x59fe3e[_0x070e('0x76')]||![],'penalty':_0x206b97[_0x070e('0x6c')][_0x070e('0x6b')]},{'transaction':_0x421392});});return Promise[_0x070e('0x77')](_0x396902);});});});return Promise[_0x070e('0x77')](_0x31ab81);});return Promise[_0x070e('0x77')](_0x3961a6);})[_0x070e('0x25')](function(){return db[_0x070e('0x78')][_0x070e('0x55')]({'where':{'teamId':_0x332022}})[_0x070e('0x25')](function(_0x767dcc){if(_0x767dcc){var _0x11e125=_[_0x070e('0x2f')](_0x4f720f,function(_0x1c6cf3){db[_0x070e('0x79')][_0x070e('0x74')]({'UserId':_0x1c6cf3,'VoicePrefixId':_0x767dcc[_0x070e('0x7a')]});});return Promise[_0x070e('0x77')](_0x11e125);}});});});return Promise[_0x070e('0x77')](_0x1e1d27)['then'](function(){return _0xb2954d[_0x070e('0x62')](_0x4f720f,{'transaction':_0x421392})[_0x070e('0x7b')](function(_0x449337){return _0x449337;});});});}})[_0x070e('0x25')](respondWithResult(_0x595e2e,null))['catch'](handleError(_0x595e2e,null));};exports[_0x070e('0x7c')]=function(_0x32fa3b,_0x2230ff){var _0x2bad43=_[_0x070e('0x7d')](_0x32fa3b[_0x070e('0x33')]['ids'])?_0x32fa3b['query']['ids']:[_0x32fa3b[_0x070e('0x33')]['ids']];var _0x26e9c1=_0x32fa3b[_0x070e('0x44')]['id'];return db['Team'][_0x070e('0x48')]({'where':{'id':_0x26e9c1}})[_0x070e('0x25')](handleEntityNotFound(_0x2230ff,null))['then'](function(_0x56f389){if(_0x56f389){var _0x13af96=[_0x070e('0x63'),_0x070e('0x64'),_0x070e('0x65'),_0x070e('0x66'),'Fax',_0x070e('0x7e'),'Whatsapp'];return db[_0x070e('0x69')][_0x070e('0x7f')](function(_0x490641){var _0x22cbfb=_[_0x070e('0x2f')](_0x13af96,function(_0x356448){var _0x16e190={'attributes':['id',_0x070e('0x2c')]};return _0x56f389[_0x070e('0x27')+_0x356448+'Queues'](_0x16e190)[_0x070e('0x25')](function(_0x3b75f3){var _0xde8455=_[_0x070e('0x2f')](_0x3b75f3,function(_0x259ac4){return _0x259ac4['removeAgents'](_0x2bad43,{'transaction':_0x490641})[_0x070e('0x25')](function(){var _0x3f03aa=_[_0x070e('0x2f')](_0x2bad43,function(_0x350c28){socket[_0x070e('0x80')](_0x070e('0x4c')+_0x356448+_0x070e('0x81'),{'UserId':Number(_0x350c28),[_0x356448+_0x070e('0x70')]:_0x259ac4['id']});if(_0x356448!==_0x070e('0x63')){return;}return db[_0x070e('0x73')][_0x070e('0x26')]({'where':{'VoiceQueueId':_0x259ac4['id'],'UserId':_0x350c28},'transaction':_0x490641});});return Promise[_0x070e('0x77')](_0x3f03aa);});});return Promise[_0x070e('0x77')](_0xde8455);});});return Promise[_0x070e('0x77')](_0x22cbfb)[_0x070e('0x25')](function(){return _0x56f389[_0x070e('0x7c')](_0x2bad43,{'transaction':_0x490641});})['then'](function(){return db['TeamVoicePrefix'][_0x070e('0x55')]({'where':{'teamId':_0x26e9c1}})[_0x070e('0x25')](function(_0x4ceba3){if(_0x4ceba3){var _0x5d8c9f=_['map'](_0x2bad43,function(_0x4cb7b2){db[_0x070e('0x79')][_0x070e('0x26')]({'where':{'UserId':_0x4cb7b2,'VoicePrefixId':_0x4ceba3[_0x070e('0x7a')]}});});return Promise[_0x070e('0x77')](_0x5d8c9f);}});});});}})[_0x070e('0x25')](respondWithStatusCode(_0x2230ff,null))[_0x070e('0x49')](handleError(_0x2230ff,null));};exports[_0x070e('0x82')]=function(_0x1e1da8,_0x44a0be,_0x3cc623){var _0x51f064={};var _0x89e855={};var _0x36cfe2;var _0x49c66a;return db[_0x070e('0x40')][_0x070e('0x55')]({'where':{'id':_0x1e1da8[_0x070e('0x44')]['id']}})[_0x070e('0x25')](handleEntityNotFound(_0x44a0be,null))['then'](function(_0x2d46fb){if(_0x2d46fb){_0x36cfe2=_0x2d46fb;_0x89e855[_0x070e('0x32')]=_[_0x070e('0x34')](db[_0x070e('0x6d')]['rawAttributes']);_0x89e855[_0x070e('0x33')]=_[_0x070e('0x34')](_0x1e1da8[_0x070e('0x33')]);_0x89e855[_0x070e('0x35')]=_[_0x070e('0x36')](_0x89e855[_0x070e('0x32')],_0x89e855[_0x070e('0x33')]);_0x51f064[_0x070e('0x37')]=_[_0x070e('0x36')](_0x89e855[_0x070e('0x32')],qs[_0x070e('0x38')](_0x1e1da8['query'][_0x070e('0x38')]));_0x51f064[_0x070e('0x37')]=_0x51f064['attributes']['length']?_0x51f064[_0x070e('0x37')]:_0x89e855['model'];_0x51f064[_0x070e('0x39')]=qs[_0x070e('0x3a')](_0x1e1da8[_0x070e('0x33')][_0x070e('0x3a')]);_0x51f064[_0x070e('0x3b')]=qs[_0x070e('0x35')](_[_0x070e('0x3c')](_0x1e1da8['query'],_0x89e855[_0x070e('0x35')]));if(_0x1e1da8[_0x070e('0x33')][_0x070e('0x3f')]){_0x51f064[_0x070e('0x3b')]=_['merge'](_0x51f064['where'],{'$or':_[_0x070e('0x2f')](_0x51f064[_0x070e('0x37')],function(_0x2e92f0){var _0x5b727f={};_0x5b727f[_0x2e92f0]={'$like':'%'+_0x1e1da8[_0x070e('0x33')][_0x070e('0x3f')]+'%'};return _0x5b727f;})});}_0x51f064=_['merge']({},_0x51f064,_0x1e1da8[_0x070e('0x47')]);return _0x36cfe2[_0x070e('0x82')](_0x51f064);}})[_0x070e('0x25')](function(_0x33009c){if(_0x33009c){_0x49c66a=_0x33009c[_0x070e('0x45')];if(!_0x1e1da8[_0x070e('0x33')]['hasOwnProperty']('nolimit')){_0x51f064[_0x070e('0x1c')]=qs['limit'](_0x1e1da8[_0x070e('0x33')][_0x070e('0x1c')]);_0x51f064['offset']=qs[_0x070e('0x1b')](_0x1e1da8['query'][_0x070e('0x1b')]);}return _0x36cfe2[_0x070e('0x82')](_0x51f064);}})[_0x070e('0x25')](function(_0x362def){if(_0x362def){return _0x362def?{'count':_0x49c66a,'rows':_0x362def}:null;}})[_0x070e('0x25')](respondWithResult(_0x44a0be,null))[_0x070e('0x49')](handleError(_0x44a0be,null));};
\ No newline at end of file
index ec34c35..f83d2f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2123=['../../mysqldb','Team','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x4582c0,_0x2e3632){var _0xe169ea=function(_0x175930){while(--_0x175930){_0x4582c0['push'](_0x4582c0['shift']());}};_0xe169ea(++_0x2e3632);}(_0x2123,0xa0));var _0x3212=function(_0x487421,_0x521ec6){_0x487421=_0x487421-0x0;var _0x1c2c36=_0x2123[_0x487421];return _0x1c2c36;};'use strict';var EventEmitter=require('events');var Team=require(_0x3212('0x0'))['db'][_0x3212('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x3212('0x2')](0x0);var events={'afterCreate':_0x3212('0x3'),'afterUpdate':_0x3212('0x4'),'afterDestroy':'remove'};function emitEvent(_0x23a481){return function(_0x61b41c,_0x55abfb,_0x3ee231){TeamEvents[_0x3212('0x5')](_0x23a481+':'+_0x61b41c['id'],_0x61b41c);TeamEvents[_0x3212('0x5')](_0x23a481,_0x61b41c);_0x3ee231(null);};}for(var e in events){if(events[_0x3212('0x6')](e)){var event=events[e];Team[_0x3212('0x7')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0xe842=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x2f5d1a,_0x11c401){var _0x27efef=function(_0xe83ede){while(--_0xe83ede){_0x2f5d1a['push'](_0x2f5d1a['shift']());}};_0x27efef(++_0x11c401);}(_0xe842,0xe2));var _0x2e84=function(_0x28e334,_0x419adf){_0x28e334=_0x28e334-0x0;var _0x5d65fa=_0xe842[_0x28e334];return _0x5d65fa;};'use strict';var EventEmitter=require('events');var Team=require(_0x2e84('0x0'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0x2e84('0x1')](0x0);var events={'afterCreate':_0x2e84('0x2'),'afterUpdate':'update','afterDestroy':_0x2e84('0x3')};function emitEvent(_0xe5e84f){return function(_0x106d67,_0x146537,_0xf1296){TeamEvents[_0x2e84('0x4')](_0xe5e84f+':'+_0x106d67['id'],_0x106d67);TeamEvents[_0x2e84('0x4')](_0xe5e84f,_0x106d67);_0xf1296(null);};}for(var e in events){if(events[_0x2e84('0x5')](e)){var event=events[e];Team[_0x2e84('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 3361775..7cb5744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9d=['Team','teams','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./team.attributes','exports','define'];(function(_0x3074c8,_0x5432f1){var _0x1bfe64=function(_0x16b194){while(--_0x16b194){_0x3074c8['push'](_0x3074c8['shift']());}};_0x1bfe64(++_0x5432f1);}(_0x0a9d,0x161));var _0xd0a9=function(_0x162372,_0x2bd3a4){_0x162372=_0x162372-0x0;var _0x38d2f6=_0x0a9d[_0x162372];return _0x38d2f6;};'use strict';var _=require('lodash');var util=require(_0xd0a9('0x0'));var logger=require(_0xd0a9('0x1'))(_0xd0a9('0x2'));var moment=require(_0xd0a9('0x3'));var BPromise=require(_0xd0a9('0x4'));var rp=require(_0xd0a9('0x5'));var fs=require('fs');var path=require(_0xd0a9('0x6'));var rimraf=require('rimraf');var config=require(_0xd0a9('0x7'));var attributes=require(_0xd0a9('0x8'));module[_0xd0a9('0x9')]=function(_0x8d93c3,_0x4ce3bb){return _0x8d93c3[_0xd0a9('0xa')](_0xd0a9('0xb'),attributes,{'tableName':_0xd0a9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x326a=['rimraf','../../config/environment','./team.attributes','exports','Team','teams','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x36884b,_0x5cb6e3){var _0x557e28=function(_0x716059){while(--_0x716059){_0x36884b['push'](_0x36884b['shift']());}};_0x557e28(++_0x5cb6e3);}(_0x326a,0x156));var _0xa326=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x326a[_0x341e0f];return _0x59555a;};'use strict';var _=require(_0xa326('0x0'));var util=require(_0xa326('0x1'));var logger=require(_0xa326('0x2'))(_0xa326('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa326('0x4'));var fs=require('fs');var path=require(_0xa326('0x5'));var rimraf=require(_0xa326('0x6'));var config=require(_0xa326('0x7'));var attributes=require(_0xa326('0x8'));module[_0xa326('0x9')]=function(_0x28f18,_0x285e3c){return _0x28f18['define'](_0xa326('0xa'),attributes,{'tableName':_0xa326('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7a4cb29..49347be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85dc=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Team,\x20%s,\x20%s','message','info','result','catch'];(function(_0x53a19f,_0x52188d){var _0x2b89de=function(_0x4ac8e4){while(--_0x4ac8e4){_0x53a19f['push'](_0x53a19f['shift']());}};_0x2b89de(++_0x52188d);}(_0x85dc,0x195));var _0xc85d=function(_0x4d498f,_0x4bd59d){_0x4d498f=_0x4d498f-0x0;var _0x1bd422=_0x85dc[_0x4d498f];return _0x1bd422;};'use strict';var _=require(_0xc85d('0x0'));var util=require(_0xc85d('0x1'));var moment=require(_0xc85d('0x2'));var BPromise=require(_0xc85d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc85d('0x4'))['db'];var utils=require(_0xc85d('0x5'));var logger=require(_0xc85d('0x6'))('rpc');var config=require(_0xc85d('0x7'));var jayson=require(_0xc85d('0x8'));var client=jayson[_0xc85d('0x9')][_0xc85d('0xa')]({'port':0x232a});config[_0xc85d('0xb')]=_[_0xc85d('0xc')](config[_0xc85d('0xb')],{'host':_0xc85d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc85d('0xb')]));require('./team.socket')[_0xc85d('0xe')](socket);function respondWithRpcPromise(_0x12c602,_0x2695c4,_0x583ea6){return new BPromise(function(_0x57a926,_0x4ea898){return client[_0xc85d('0xf')](_0x12c602,_0x583ea6)['then'](function(_0x198d0a){logger['info']('Team,\x20%s,\x20%s',_0x2695c4,'request\x20sent');logger[_0xc85d('0x10')](_0xc85d('0x11'),_0x2695c4,_0xc85d('0x12'),JSON[_0xc85d('0x13')](_0x198d0a));if(_0x198d0a['error']){if(_0x198d0a[_0xc85d('0x14')][_0xc85d('0x15')]===0x1f4){logger[_0xc85d('0x14')](_0xc85d('0x16'),_0x2695c4,_0x198d0a[_0xc85d('0x14')][_0xc85d('0x17')]);return _0x4ea898(_0x198d0a[_0xc85d('0x14')][_0xc85d('0x17')]);}logger['error'](_0xc85d('0x16'),_0x2695c4,_0x198d0a['error']['message']);return _0x57a926(_0x198d0a[_0xc85d('0x14')]['message']);}else{logger[_0xc85d('0x18')](_0xc85d('0x16'),_0x2695c4,_0xc85d('0x12'));_0x57a926(_0x198d0a[_0xc85d('0x19')][_0xc85d('0x17')]);}})[_0xc85d('0x1a')](function(_0x5748e2){logger['error'](_0xc85d('0x16'),_0x2695c4,_0x5748e2);_0x4ea898(_0x5748e2);});});}
\ No newline at end of file
+var _0x0b4c=['code','Team,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','./team.socket','register','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','error'];(function(_0x1bf895,_0x311d8a){var _0x241051=function(_0x11a380){while(--_0x11a380){_0x1bf895['push'](_0x1bf895['shift']());}};_0x241051(++_0x311d8a);}(_0x0b4c,0x1be));var _0xc0b4=function(_0x23c335,_0x318648){_0x23c335=_0x23c335-0x0;var _0x41da6c=_0x0b4c[_0x23c335];return _0x41da6c;};'use strict';var _=require(_0xc0b4('0x0'));var util=require(_0xc0b4('0x1'));var moment=require('moment');var BPromise=require(_0xc0b4('0x2'));var rs=require(_0xc0b4('0x3'));var fs=require('fs');var Redis=require(_0xc0b4('0x4'));var db=require(_0xc0b4('0x5'))['db'];var utils=require(_0xc0b4('0x6'));var logger=require(_0xc0b4('0x7'))(_0xc0b4('0x8'));var config=require(_0xc0b4('0x9'));var jayson=require(_0xc0b4('0xa'));var client=jayson['client'][_0xc0b4('0xb')]({'port':0x232a});config[_0xc0b4('0xc')]=_[_0xc0b4('0xd')](config[_0xc0b4('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc0b4('0xc')]));require(_0xc0b4('0xe'))[_0xc0b4('0xf')](socket);function respondWithRpcPromise(_0x4dde24,_0x10d94c,_0x40c17e){return new BPromise(function(_0x37f711,_0x31b661){return client['request'](_0x4dde24,_0x40c17e)[_0xc0b4('0x10')](function(_0x5d5e97){logger[_0xc0b4('0x11')]('Team,\x20%s,\x20%s',_0x10d94c,_0xc0b4('0x12'));logger[_0xc0b4('0x13')](_0xc0b4('0x14'),_0x10d94c,_0xc0b4('0x12'),JSON['stringify'](_0x5d5e97));if(_0x5d5e97[_0xc0b4('0x15')]){if(_0x5d5e97[_0xc0b4('0x15')][_0xc0b4('0x16')]===0x1f4){logger[_0xc0b4('0x15')](_0xc0b4('0x17'),_0x10d94c,_0x5d5e97['error'][_0xc0b4('0x18')]);return _0x31b661(_0x5d5e97[_0xc0b4('0x15')][_0xc0b4('0x18')]);}logger[_0xc0b4('0x15')](_0xc0b4('0x17'),_0x10d94c,_0x5d5e97['error'][_0xc0b4('0x18')]);return _0x37f711(_0x5d5e97[_0xc0b4('0x15')][_0xc0b4('0x18')]);}else{logger[_0xc0b4('0x11')](_0xc0b4('0x17'),_0x10d94c,'request\x20sent');_0x37f711(_0x5d5e97[_0xc0b4('0x19')][_0xc0b4('0x18')]);}})['catch'](function(_0xa098dc){logger[_0xc0b4('0x15')](_0xc0b4('0x17'),_0x10d94c,_0xa098dc);_0x31b661(_0xa098dc);});});}
\ No newline at end of file
index 76b45cf..f819895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f81=['save','remove','update','emit','removeListener','register','length','team:','./team.events'];(function(_0x59d91d,_0x4a6bd6){var _0x13f485=function(_0x17c595){while(--_0x17c595){_0x59d91d['push'](_0x59d91d['shift']());}};_0x13f485(++_0x4a6bd6);}(_0x3f81,0x11f));var _0x13f8=function(_0x14fefd,_0x4cebd2){_0x14fefd=_0x14fefd-0x0;var _0x104a46=_0x3f81[_0x14fefd];return _0x104a46;};'use strict';var TeamEvents=require(_0x13f8('0x0'));var events=[_0x13f8('0x1'),_0x13f8('0x2'),_0x13f8('0x3')];function createListener(_0x36e024,_0x49756b){return function(_0xd994a1){_0x49756b[_0x13f8('0x4')](_0x36e024,_0xd994a1);};}function removeListener(_0x475011,_0x484e7b){return function(){TeamEvents[_0x13f8('0x5')](_0x475011,_0x484e7b);};}exports[_0x13f8('0x6')]=function(_0x46fd9a){for(var _0x1e329f=0x0,_0x1e9246=events[_0x13f8('0x7')];_0x1e329f<_0x1e9246;_0x1e329f++){var _0x41564a=events[_0x1e329f];var _0x2f90f4=createListener(_0x13f8('0x8')+_0x41564a,_0x46fd9a);TeamEvents['on'](_0x41564a,_0x2f90f4);}};
\ No newline at end of file
+var _0x0c1a=['save','remove','emit','removeListener','register','length','team:','./team.events'];(function(_0x11f249,_0x4ca4a8){var _0x5c3656=function(_0x27c9f8){while(--_0x27c9f8){_0x11f249['push'](_0x11f249['shift']());}};_0x5c3656(++_0x4ca4a8);}(_0x0c1a,0x127));var _0xa0c1=function(_0x5f15ab,_0x3b42ed){_0x5f15ab=_0x5f15ab-0x0;var _0x59550c=_0x0c1a[_0x5f15ab];return _0x59550c;};'use strict';var TeamEvents=require(_0xa0c1('0x0'));var events=[_0xa0c1('0x1'),_0xa0c1('0x2'),'update'];function createListener(_0x5764c0,_0x3212d2){return function(_0x4d4cdc){_0x3212d2[_0xa0c1('0x3')](_0x5764c0,_0x4d4cdc);};}function removeListener(_0x41270e,_0xd95a56){return function(){TeamEvents[_0xa0c1('0x4')](_0x41270e,_0xd95a56);};}exports[_0xa0c1('0x5')]=function(_0x44538a){for(var _0x199950=0x0,_0x2ddfd4=events[_0xa0c1('0x6')];_0x199950<_0x2ddfd4;_0x199950++){var _0x1f5f8c=events[_0x199950];var _0x5a9ba0=createListener(_0xa0c1('0x7')+_0x1f5f8c,_0x44538a);TeamEvents['on'](_0x1f5f8c,_0x5a9ba0);}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
new file mode 100644 (file)
index 0000000..4c3a02e
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xab26=['sequelize','exports','INTEGER'];(function(_0x2afd02,_0x29e446){var _0x2894d0=function(_0x340860){while(--_0x340860){_0x2afd02['push'](_0x2afd02['shift']());}};_0x2894d0(++_0x29e446);}(_0xab26,0xd2));var _0x6ab2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xab26[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x6ab2('0x0'));module[_0x6ab2('0x1')]={'TeamId':{'type':Sequelize[_0x6ab2('0x2')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js
new file mode 100644 (file)
index 0000000..00532a5
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xc4e6=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./teamVoicePrefix.attributes','TeamVoicePrefix','team_has_voice_prefixes'];(function(_0x5a91a5,_0x1eb099){var _0x8f99de=function(_0x579b28){while(--_0x579b28){_0x5a91a5['push'](_0x5a91a5['shift']());}};_0x8f99de(++_0x1eb099);}(_0xc4e6,0x1d9));var _0x6c4e=function(_0x37ae26,_0x2ecd70){_0x37ae26=_0x37ae26-0x0;var _0x1b1902=_0xc4e6[_0x37ae26];return _0x1b1902;};'use strict';var _=require(_0x6c4e('0x0'));var util=require(_0x6c4e('0x1'));var logger=require('../../config/logger')(_0x6c4e('0x2'));var moment=require(_0x6c4e('0x3'));var BPromise=require(_0x6c4e('0x4'));var rp=require(_0x6c4e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6c4e('0x6'));var config=require(_0x6c4e('0x7'));var attributes=require(_0x6c4e('0x8'));module['exports']=function(_0x266061,_0x587927){return _0x266061['define'](_0x6c4e('0x9'),attributes,{'tableName':_0x6c4e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 562ac4e..4718cbf 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(_0x5782fe,_0xb97b65){var _0x33e9d1=function(_0x4f59eb){while(--_0x4f59eb){_0x5782fe['push'](_0x5782fe['shift']());}};_0x33e9d1(++_0xb97b65);}(_0xe706,0xa3));var _0x6e70=function(_0x44dc4c,_0x357e6a){_0x44dc4c=_0x44dc4c-0x0;var _0x4e644e=_0xe706[_0x44dc4c];return _0x4e644e;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x3eefc4,_0x13da29){var _0x390870=function(_0x3236fe){while(--_0x3236fe){_0x3eefc4['push'](_0x3eefc4['shift']());}};_0x390870(++_0x13da29);}(_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 d539cc3..eb92b1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f6=['sequelize','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf5f6,0x84));var _0x6f5f=function(_0x518387,_0x1e2491){_0x518387=_0x518387-0x0;var _0x2f9e6b=_0xf5f6[_0x518387];return _0x2f9e6b;};'use strict';var Sequelize=require(_0x6f5f('0x0'));module[_0x6f5f('0x1')]={'penalty':{'type':Sequelize[_0x6f5f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x08e9=['exports','INTEGER','sequelize'];(function(_0x57d13b,_0x52d8cb){var _0x467696=function(_0x153000){while(--_0x153000){_0x57d13b['push'](_0x57d13b['shift']());}};_0x467696(++_0x52d8cb);}(_0x08e9,0xd1));var _0x908e=function(_0x4accd7,_0x344a24){_0x4accd7=_0x4accd7-0x0;var _0x207891=_0x08e9[_0x4accd7];return _0x207891;};'use strict';var Sequelize=require(_0x908e('0x0'));module[_0x908e('0x1')]={'penalty':{'type':Sequelize[_0x908e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ae9f2d5..4611cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2821=['bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','../../config/logger','api','moment'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x2821,0x87));var _0x1282=function(_0x1a0858,_0x276143){_0x1a0858=_0x1a0858-0x0;var _0x582395=_0x2821[_0x1a0858];return _0x582395;};'use strict';var _=require(_0x1282('0x0'));var util=require(_0x1282('0x1'));var logger=require(_0x1282('0x2'))(_0x1282('0x3'));var moment=require(_0x1282('0x4'));var BPromise=require(_0x1282('0x5'));var rp=require(_0x1282('0x6'));var fs=require('fs');var path=require(_0x1282('0x7'));var rimraf=require(_0x1282('0x8'));var config=require(_0x1282('0x9'));var attributes=require(_0x1282('0xa'));module['exports']=function(_0x31e0cf,_0x1843f2){return _0x31e0cf[_0x1282('0xb')](_0x1282('0xc'),attributes,{'tableName':_0x1282('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9649=['request-promise','rimraf','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','../../config/logger','api','bluebird'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x9649,0x19f));var _0x9964=function(_0x5c4bf3,_0x166b9e){_0x5c4bf3=_0x5c4bf3-0x0;var _0x3b6288=_0x9649[_0x5c4bf3];return _0x3b6288;};'use strict';var _=require(_0x9964('0x0'));var util=require(_0x9964('0x1'));var logger=require(_0x9964('0x2'))(_0x9964('0x3'));var moment=require('moment');var BPromise=require(_0x9964('0x4'));var rp=require(_0x9964('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9964('0x6'));var config=require('../../config/environment');var attributes=require(_0x9964('0x7'));module[_0x9964('0x8')]=function(_0x12dd14,_0x74bec9){return _0x12dd14[_0x9964('0x9')](_0x9964('0xa'),attributes,{'tableName':_0x9964('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ac5c266..70b56dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dcd=['http','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x295f6d,_0x59bcbb){var _0x2e8e46=function(_0xd188b0){while(--_0xd188b0){_0x295f6d['push'](_0x295f6d['shift']());}};_0x2e8e46(++_0x59bcbb);}(_0x3dcd,0xc5));var _0xd3dc=function(_0x4d572e,_0x59ceb7){_0x4d572e=_0x4d572e-0x0;var _0x43a969=_0x3dcd[_0x4d572e];return _0x43a969;};'use strict';var _=require(_0xd3dc('0x0'));var util=require('util');var moment=require(_0xd3dc('0x1'));var BPromise=require(_0xd3dc('0x2'));var rs=require(_0xd3dc('0x3'));var fs=require('fs');var Redis=require(_0xd3dc('0x4'));var db=require(_0xd3dc('0x5'))['db'];var utils=require(_0xd3dc('0x6'));var logger=require('../../config/logger')(_0xd3dc('0x7'));var config=require('../../config/environment');var jayson=require(_0xd3dc('0x8'));var client=jayson[_0xd3dc('0x9')][_0xd3dc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41ffde,_0x2d62a9,_0x3a5165){return new BPromise(function(_0x40822a,_0x530406){return client[_0xd3dc('0xb')](_0x41ffde,_0x3a5165)[_0xd3dc('0xc')](function(_0x26c854){logger['info'](_0xd3dc('0xd'),_0x2d62a9,_0xd3dc('0xe'));logger['debug'](_0xd3dc('0xf'),_0x2d62a9,'request\x20sent',JSON[_0xd3dc('0x10')](_0x26c854));if(_0x26c854[_0xd3dc('0x11')]){if(_0x26c854['error'][_0xd3dc('0x12')]===0x1f4){logger[_0xd3dc('0x11')](_0xd3dc('0xd'),_0x2d62a9,_0x26c854['error'][_0xd3dc('0x13')]);return _0x530406(_0x26c854[_0xd3dc('0x11')][_0xd3dc('0x13')]);}logger[_0xd3dc('0x11')](_0xd3dc('0xd'),_0x2d62a9,_0x26c854['error'][_0xd3dc('0x13')]);return _0x40822a(_0x26c854[_0xd3dc('0x11')][_0xd3dc('0x13')]);}else{logger[_0xd3dc('0x14')](_0xd3dc('0xd'),_0x2d62a9,'request\x20sent');_0x40822a(_0x26c854[_0xd3dc('0x15')]['message']);}})[_0xd3dc('0x16')](function(_0x1ce024){logger['error'](_0xd3dc('0xd'),_0x2d62a9,_0x1ce024);_0x530406(_0x1ce024);});});}
\ No newline at end of file
+var _0x192f=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','TeamVoiceQueue,\x20%s,\x20%s','message','info','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x1bb2f9,_0x12d98a){var _0x1258c2=function(_0x4d7ed5){while(--_0x4d7ed5){_0x1bb2f9['push'](_0x1bb2f9['shift']());}};_0x1258c2(++_0x12d98a);}(_0x192f,0xd6));var _0xf192=function(_0x5214fd,_0x238b9d){_0x5214fd=_0x5214fd-0x0;var _0x4c22f8=_0x192f[_0x5214fd];return _0x4c22f8;};'use strict';var _=require(_0xf192('0x0'));var util=require('util');var moment=require(_0xf192('0x1'));var BPromise=require('bluebird');var rs=require(_0xf192('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf192('0x3'));var logger=require(_0xf192('0x4'))(_0xf192('0x5'));var config=require(_0xf192('0x6'));var jayson=require(_0xf192('0x7'));var client=jayson[_0xf192('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x38dcbf,_0x4171d9,_0x5743c9){return new BPromise(function(_0x2c4102,_0x16bf2e){return client[_0xf192('0x9')](_0x38dcbf,_0x5743c9)[_0xf192('0xa')](function(_0x2cdfa0){logger['info']('TeamVoiceQueue,\x20%s,\x20%s',_0x4171d9,_0xf192('0xb'));logger[_0xf192('0xc')](_0xf192('0xd'),_0x4171d9,_0xf192('0xb'),JSON[_0xf192('0xe')](_0x2cdfa0));if(_0x2cdfa0[_0xf192('0xf')]){if(_0x2cdfa0[_0xf192('0xf')][_0xf192('0x10')]===0x1f4){logger['error'](_0xf192('0x11'),_0x4171d9,_0x2cdfa0[_0xf192('0xf')][_0xf192('0x12')]);return _0x16bf2e(_0x2cdfa0[_0xf192('0xf')][_0xf192('0x12')]);}logger[_0xf192('0xf')](_0xf192('0x11'),_0x4171d9,_0x2cdfa0[_0xf192('0xf')][_0xf192('0x12')]);return _0x2c4102(_0x2cdfa0[_0xf192('0xf')][_0xf192('0x12')]);}else{logger[_0xf192('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4171d9,_0xf192('0xb'));_0x2c4102(_0x2cdfa0[_0xf192('0x14')]['message']);}})[_0xf192('0x15')](function(_0x2ea5f4){logger[_0xf192('0xf')](_0xf192('0x11'),_0x4171d9,_0x2ea5f4);_0x16bf2e(_0x2ea5f4);});});}
\ No newline at end of file
index 317ad1f..4f79c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf79e=['put','/:id','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','../../config/environment','./template.controller','get','isAuthenticated','index','post'];(function(_0x520a5a,_0x1ffb94){var _0x1fd80a=function(_0x38c9b6){while(--_0x38c9b6){_0x520a5a['push'](_0x520a5a['shift']());}};_0x1fd80a(++_0x1ffb94);}(_0xf79e,0x185));var _0xef79=function(_0x2fc40c,_0x37f7d0){_0x2fc40c=_0x2fc40c-0x0;var _0x55e890=_0xf79e[_0x2fc40c];return _0x55e890;};'use strict';var multer=require('multer');var util=require(_0xef79('0x0'));var path=require(_0xef79('0x1'));var timeout=require(_0xef79('0x2'));var express=require('express');var router=express[_0xef79('0x3')]();var fs_extra=require(_0xef79('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xef79('0x5'));var controller=require(_0xef79('0x6'));router[_0xef79('0x7')]('/',auth[_0xef79('0x8')](),controller[_0xef79('0x9')]);router[_0xef79('0x7')]('/:id',auth[_0xef79('0x8')](),controller['show']);router[_0xef79('0xa')]('/',auth[_0xef79('0x8')](),controller['create']);router[_0xef79('0xb')](_0xef79('0xc'),auth[_0xef79('0x8')](),controller[_0xef79('0xd')]);router[_0xef79('0xe')](_0xef79('0xc'),auth[_0xef79('0x8')](),controller[_0xef79('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x4910=['../../components/interaction/service','./template.controller','get','isAuthenticated','index','show','post','create','/:id','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0x4910,0x1d9));var _0x0491=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4910[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0491('0x0'));var util=require(_0x0491('0x1'));var path=require(_0x0491('0x2'));var timeout=require('connect-timeout');var express=require(_0x0491('0x3'));var router=express[_0x0491('0x4')]();var fs_extra=require(_0x0491('0x5'));var auth=require(_0x0491('0x6'));var interaction=require(_0x0491('0x7'));var config=require('../../config/environment');var controller=require(_0x0491('0x8'));router[_0x0491('0x9')]('/',auth[_0x0491('0xa')](),controller[_0x0491('0xb')]);router[_0x0491('0x9')]('/:id',auth[_0x0491('0xa')](),controller[_0x0491('0xc')]);router[_0x0491('0xd')]('/',auth[_0x0491('0xa')](),controller[_0x0491('0xe')]);router['put'](_0x0491('0xf'),auth['isAuthenticated'](),controller[_0x0491('0x10')]);router[_0x0491('0x11')](_0x0491('0xf'),auth[_0x0491('0xa')](),controller[_0x0491('0x12')]);module[_0x0491('0x13')]=router;
\ No newline at end of file
index 294b847..76606e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed4=['exports','STRING','TEXT'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x0ed4,0x162));var _0x40ed=function(_0x1b270e,_0x3c3f37){_0x1b270e=_0x1b270e-0x0;var _0x271537=_0x0ed4[_0x1b270e];return _0x271537;};'use strict';var Sequelize=require('sequelize');module[_0x40ed('0x0')]={'name':{'type':Sequelize[_0x40ed('0x1')]},'description':{'type':Sequelize[_0x40ed('0x1')]},'html':{'type':Sequelize[_0x40ed('0x2')]}};
\ No newline at end of file
+var _0x8499=['exports','STRING','sequelize'];(function(_0x3e2bbf,_0x46511){var _0x298c11=function(_0x3d3ecc){while(--_0x3d3ecc){_0x3e2bbf['push'](_0x3e2bbf['shift']());}};_0x298c11(++_0x46511);}(_0x8499,0x110));var _0x9849=function(_0x44a0fb,_0x26e5a6){_0x44a0fb=_0x44a0fb-0x0;var _0x454ec4=_0x8499[_0x44a0fb];return _0x454ec4;};'use strict';var Sequelize=require(_0x9849('0x0'));module[_0x9849('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9849('0x2')]},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 63d977f..abd0c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x204b=['includeAll','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','find','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','end','error','stack','name','send','index','map','Template','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','type','VIRTUAL','include','findAll','rows','catch','params','length'];(function(_0x25e77e,_0x1ed42e){var _0x12f277=function(_0x2d3cc7){while(--_0x2d3cc7){_0x25e77e['push'](_0x25e77e['shift']());}};_0x12f277(++_0x1ed42e);}(_0x204b,0x1b9));var _0xb204=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x204b[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0xb204('0x0'));var rimraf=require(_0xb204('0x1'));var zipdir=require(_0xb204('0x2'));var jsonpatch=require(_0xb204('0x3'));var rp=require('request-promise');var moment=require(_0xb204('0x4'));var BPromise=require(_0xb204('0x5'));var Mustache=require(_0xb204('0x6'));var util=require(_0xb204('0x7'));var path=require('path');var sox=require(_0xb204('0x8'));var csv=require(_0xb204('0x9'));var ejs=require(_0xb204('0xa'));var fs=require('fs');var fs_extra=require(_0xb204('0xb'));var _=require(_0xb204('0xc'));var squel=require(_0xb204('0xd'));var crypto=require(_0xb204('0xe'));var jsforce=require(_0xb204('0xf'));var deskjs=require(_0xb204('0x10'));var toCsv=require(_0xb204('0x9'));var querystring=require(_0xb204('0x11'));var Papa=require(_0xb204('0x12'));var Redis=require(_0xb204('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xb204('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb204('0x15'));var logger=require(_0xb204('0x16'))(_0xb204('0x17'));var utils=require('../../config/utils');var config=require(_0xb204('0x18'));var licenseUtil=require(_0xb204('0x19'));var db=require(_0xb204('0x1a'))['db'];function respondWithStatusCode(_0x2da318,_0x516cae){_0x516cae=_0x516cae||0xcc;return function(_0x4e8000){if(_0x4e8000){return _0x2da318[_0xb204('0x1b')](_0x516cae);}return _0x2da318[_0xb204('0x1c')](_0x516cae)['end']();};}function respondWithResult(_0x288c49,_0x123fc0){_0x123fc0=_0x123fc0||0xc8;return function(_0xf72ed){if(_0xf72ed){return _0x288c49['status'](_0x123fc0)[_0xb204('0x1d')](_0xf72ed);}};}function respondWithFilteredResult(_0x69836,_0x3cf48c){return function(_0x25c2a3){if(_0x25c2a3){var _0x464213=typeof _0x3cf48c[_0xb204('0x1e')]===_0xb204('0x1f')&&typeof _0x3cf48c['limit']===_0xb204('0x1f');var _0x3b4929=_0x25c2a3[_0xb204('0x20')];var _0x152798=_0x464213?0x0:_0x3cf48c[_0xb204('0x1e')];var _0x4aa972=_0x464213?_0x25c2a3[_0xb204('0x20')]:_0x3cf48c[_0xb204('0x1e')]+_0x3cf48c['limit'];var _0x9f56d1;if(_0x4aa972>=_0x3b4929){_0x4aa972=_0x3b4929;_0x9f56d1=0xc8;}else{_0x9f56d1=0xce;}_0x69836[_0xb204('0x1c')](_0x9f56d1);return _0x69836[_0xb204('0x21')](_0xb204('0x22'),_0x152798+'-'+_0x4aa972+'/'+_0x3b4929)['json'](_0x25c2a3);}return null;};}function patchUpdates(_0x587bad){return function(_0x1af66b){try{jsonpatch[_0xb204('0x23')](_0x1af66b,_0x587bad,!![]);}catch(_0x554ecc){return BPromise[_0xb204('0x24')](_0x554ecc);}return _0x1af66b[_0xb204('0x25')]();};}function saveUpdates(_0x4b8e6c,_0x1c8627){return function(_0x27bdef){if(_0x27bdef){return _0x27bdef['update'](_0x4b8e6c)[_0xb204('0x26')](function(_0x2dd5d7){return _0x2dd5d7;});}return null;};}function removeEntity(_0x15328e,_0x239d3c){return function(_0x7daca2){if(_0x7daca2){return _0x7daca2[_0xb204('0x27')]()[_0xb204('0x26')](function(){var _0x1432b4=_0x7daca2[_0xb204('0x28')]({'plain':!![]});var _0x48ca0c='Templates';return db['UserProfileResource'][_0xb204('0x27')]({'where':{'type':_0x48ca0c,'resourceId':_0x1432b4['id']}})[_0xb204('0x26')](function(){return _0x7daca2;});})[_0xb204('0x26')](function(){_0x15328e[_0xb204('0x1c')](0xcc)[_0xb204('0x29')]();});}};}function handleEntityNotFound(_0x3c0d3c,_0x402c04){return function(_0x22d9e8){if(!_0x22d9e8){_0x3c0d3c['sendStatus'](0x194);}return _0x22d9e8;};}function handleError(_0x23ba90,_0x21a46a){_0x21a46a=_0x21a46a||0x1f4;return function(_0x3db992){logger[_0xb204('0x2a')](_0x3db992[_0xb204('0x2b')]);if(_0x3db992['name']){delete _0x3db992[_0xb204('0x2c')];}_0x23ba90[_0xb204('0x1c')](_0x21a46a)[_0xb204('0x2d')](_0x3db992);};}exports[_0xb204('0x2e')]=function(_0x7c55b1,_0x8b73d8){var _0x1e1e66={},_0xf3c497={},_0x1ff9ff={'count':0x0,'rows':[]};var _0x568a9b=_[_0xb204('0x2f')](db[_0xb204('0x30')][_0xb204('0x31')],function(_0x3ad94b){return{'name':_0x3ad94b[_0xb204('0x32')],'type':_0x3ad94b['type'][_0xb204('0x33')]};});_0xf3c497[_0xb204('0x34')]=_[_0xb204('0x2f')](_0x568a9b,_0xb204('0x2c'));_0xf3c497['query']=_[_0xb204('0x35')](_0x7c55b1[_0xb204('0x36')]);_0xf3c497[_0xb204('0x37')]=_['intersection'](_0xf3c497['model'],_0xf3c497[_0xb204('0x36')]);_0x1e1e66['attributes']=_[_0xb204('0x38')](_0xf3c497[_0xb204('0x34')],qs['fields'](_0x7c55b1[_0xb204('0x36')]['fields']));_0x1e1e66[_0xb204('0x39')]=_0x1e1e66[_0xb204('0x39')]['length']?_0x1e1e66[_0xb204('0x39')]:_0xf3c497[_0xb204('0x34')];if(!_0x7c55b1[_0xb204('0x36')][_0xb204('0x3a')](_0xb204('0x3b'))){_0x1e1e66['limit']=qs[_0xb204('0x3c')](_0x7c55b1[_0xb204('0x36')][_0xb204('0x3c')]);_0x1e1e66[_0xb204('0x1e')]=qs[_0xb204('0x1e')](_0x7c55b1[_0xb204('0x36')]['offset']);}_0x1e1e66[_0xb204('0x3d')]=qs[_0xb204('0x3e')](_0x7c55b1['query'][_0xb204('0x3e')]);_0x1e1e66['where']=qs[_0xb204('0x37')](_[_0xb204('0x3f')](_0x7c55b1[_0xb204('0x36')],_0xf3c497['filters']),_0x568a9b);if(_0x7c55b1[_0xb204('0x36')][_0xb204('0x40')]){_0x1e1e66[_0xb204('0x41')]=_[_0xb204('0x42')](_0x1e1e66[_0xb204('0x41')],{'$or':_[_0xb204('0x2f')](_0x568a9b,function(_0x1b2a64){if(_0x1b2a64[_0xb204('0x43')]!==_0xb204('0x44')){var _0x18e907={};_0x18e907[_0x1b2a64['name']]={'$like':'%'+_0x7c55b1[_0xb204('0x36')]['filter']+'%'};return _0x18e907;}})});}_0x1e1e66=_[_0xb204('0x42')]({},_0x1e1e66,_0x7c55b1['options']);var _0x4403dd={'where':_0x1e1e66[_0xb204('0x41')]};return db['Template'][_0xb204('0x20')](_0x4403dd)[_0xb204('0x26')](function(_0x9b48f0){_0x1ff9ff['count']=_0x9b48f0;if(_0x7c55b1['query']['includeAll']){_0x1e1e66[_0xb204('0x45')]=[{'all':!![]}];}return db['Template'][_0xb204('0x46')](_0x1e1e66);})[_0xb204('0x26')](function(_0x17003a){_0x1ff9ff[_0xb204('0x47')]=_0x17003a;return _0x1ff9ff;})[_0xb204('0x26')](respondWithFilteredResult(_0x8b73d8,_0x1e1e66))[_0xb204('0x48')](handleError(_0x8b73d8,null));};exports['show']=function(_0x537660,_0x47ec95){var _0x40003b={'raw':!![],'where':{'id':_0x537660[_0xb204('0x49')]['id']}},_0x33a527={};_0x33a527['model']=_[_0xb204('0x35')](db[_0xb204('0x30')][_0xb204('0x31')]);_0x33a527['query']=_[_0xb204('0x35')](_0x537660['query']);_0x33a527[_0xb204('0x37')]=_['intersection'](_0x33a527[_0xb204('0x34')],_0x33a527[_0xb204('0x36')]);_0x40003b['attributes']=_['intersection'](_0x33a527['model'],qs['fields'](_0x537660[_0xb204('0x36')]['fields']));_0x40003b[_0xb204('0x39')]=_0x40003b[_0xb204('0x39')][_0xb204('0x4a')]?_0x40003b[_0xb204('0x39')]:_0x33a527[_0xb204('0x34')];if(_0x537660[_0xb204('0x36')][_0xb204('0x4b')]){_0x40003b[_0xb204('0x45')]=[{'all':!![]}];}_0x40003b=_[_0xb204('0x42')]({},_0x40003b,_0x537660['options']);return db[_0xb204('0x30')]['find'](_0x40003b)[_0xb204('0x26')](handleEntityNotFound(_0x47ec95,null))[_0xb204('0x26')](respondWithResult(_0x47ec95,null))[_0xb204('0x48')](handleError(_0x47ec95,null));};exports['create']=function(_0x292aea,_0x6f1402){return db['Template']['create'](_0x292aea['body'],{})[_0xb204('0x26')](function(_0x363e45){var _0x5177ac=_0x292aea[_0xb204('0x4c')][_0xb204('0x28')]({'plain':!![]});if(!_0x5177ac)throw new Error(_0xb204('0x4d'));if(_0x5177ac[_0xb204('0x4e')]===_0xb204('0x4c')){var _0x3c2ec2=_0x363e45[_0xb204('0x28')]({'plain':!![]});var _0xe60f39=_0xb204('0x4f');return db['UserProfileSection'][_0xb204('0x50')]({'where':{'name':_0xe60f39,'userProfileId':_0x5177ac['userProfileId']},'raw':!![]})['then'](function(_0x5345ed){if(_0x5345ed&&_0x5345ed[_0xb204('0x51')]===0x0){return db['UserProfileResource'][_0xb204('0x52')]({'name':_0x3c2ec2[_0xb204('0x2c')],'resourceId':_0x3c2ec2['id'],'type':_0x5345ed[_0xb204('0x2c')],'sectionId':_0x5345ed['id']},{})['then'](function(){return _0x363e45;});}else{return _0x363e45;}})[_0xb204('0x48')](function(_0x43f91f){logger['error'](_0xb204('0x53'),_0x43f91f);throw _0x43f91f;});}return _0x363e45;})['then'](respondWithResult(_0x6f1402,0xc9))[_0xb204('0x48')](handleError(_0x6f1402,null));};exports[_0xb204('0x54')]=function(_0x239998,_0x4ffe6d){if(_0x239998[_0xb204('0x55')]['id']){delete _0x239998[_0xb204('0x55')]['id'];}return db['Template'][_0xb204('0x50')]({'where':{'id':_0x239998['params']['id']}})[_0xb204('0x26')](handleEntityNotFound(_0x4ffe6d,null))['then'](saveUpdates(_0x239998['body'],null))[_0xb204('0x26')](respondWithResult(_0x4ffe6d,null))[_0xb204('0x48')](handleError(_0x4ffe6d,null));};exports[_0xb204('0x27')]=function(_0x346f91,_0x3c7e9b){return db['Template'][_0xb204('0x50')]({'where':{'id':_0x346f91[_0xb204('0x49')]['id']}})[_0xb204('0x26')](handleEntityNotFound(_0x3c7e9b,null))['then'](removeEntity(_0x3c7e9b,null))['catch'](handleError(_0x3c7e9b,null));};
\ No newline at end of file
+var _0x0107=['catch','params','rawAttributes','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','then','get','Templates','UserProfileResource','error','stack','name','send','index','map','Template','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','includeAll','findAll'];(function(_0x1486e5,_0x39684f){var _0x29d89b=function(_0x4a0a80){while(--_0x4a0a80){_0x1486e5['push'](_0x1486e5['shift']());}};_0x29d89b(++_0x39684f);}(_0x0107,0xb7));var _0x7010=function(_0xe896bf,_0x4f8e5e){_0xe896bf=_0xe896bf-0x0;var _0x4c7a8a=_0x0107[_0xe896bf];return _0x4c7a8a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7010('0x0'));var zipdir=require(_0x7010('0x1'));var jsonpatch=require(_0x7010('0x2'));var rp=require(_0x7010('0x3'));var moment=require(_0x7010('0x4'));var BPromise=require(_0x7010('0x5'));var Mustache=require(_0x7010('0x6'));var util=require(_0x7010('0x7'));var path=require(_0x7010('0x8'));var sox=require(_0x7010('0x9'));var csv=require(_0x7010('0xa'));var ejs=require(_0x7010('0xb'));var fs=require('fs');var fs_extra=require(_0x7010('0xc'));var _=require(_0x7010('0xd'));var squel=require(_0x7010('0xe'));var crypto=require(_0x7010('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7010('0x10'));var toCsv=require(_0x7010('0xa'));var querystring=require(_0x7010('0x11'));var Papa=require(_0x7010('0x12'));var Redis=require(_0x7010('0x13'));var authService=require(_0x7010('0x14'));var qs=require(_0x7010('0x15'));var as=require(_0x7010('0x16'));var hardwareService=require(_0x7010('0x17'));var logger=require(_0x7010('0x18'))(_0x7010('0x19'));var utils=require(_0x7010('0x1a'));var config=require(_0x7010('0x1b'));var licenseUtil=require(_0x7010('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x292eb1,_0x15d05f){_0x15d05f=_0x15d05f||0xcc;return function(_0x1ef93c){if(_0x1ef93c){return _0x292eb1[_0x7010('0x1d')](_0x15d05f);}return _0x292eb1[_0x7010('0x1e')](_0x15d05f)[_0x7010('0x1f')]();};}function respondWithResult(_0x166341,_0x137279){_0x137279=_0x137279||0xc8;return function(_0xfa6081){if(_0xfa6081){return _0x166341[_0x7010('0x1e')](_0x137279)[_0x7010('0x20')](_0xfa6081);}};}function respondWithFilteredResult(_0x25d35c,_0x24039d){return function(_0x1a6844){if(_0x1a6844){var _0x458b0a=typeof _0x24039d[_0x7010('0x21')]===_0x7010('0x22')&&typeof _0x24039d['limit']===_0x7010('0x22');var _0xd93649=_0x1a6844[_0x7010('0x23')];var _0x5c6b01=_0x458b0a?0x0:_0x24039d['offset'];var _0x1f27f9=_0x458b0a?_0x1a6844[_0x7010('0x23')]:_0x24039d[_0x7010('0x21')]+_0x24039d[_0x7010('0x24')];var _0x21c08c;if(_0x1f27f9>=_0xd93649){_0x1f27f9=_0xd93649;_0x21c08c=0xc8;}else{_0x21c08c=0xce;}_0x25d35c[_0x7010('0x1e')](_0x21c08c);return _0x25d35c['set'](_0x7010('0x25'),_0x5c6b01+'-'+_0x1f27f9+'/'+_0xd93649)[_0x7010('0x20')](_0x1a6844);}return null;};}function patchUpdates(_0x4b795f){return function(_0x1d3587){try{jsonpatch[_0x7010('0x26')](_0x1d3587,_0x4b795f,!![]);}catch(_0x540bc3){return BPromise['reject'](_0x540bc3);}return _0x1d3587[_0x7010('0x27')]();};}function saveUpdates(_0x572f8f,_0x2c0b2d){return function(_0x5627ab){if(_0x5627ab){return _0x5627ab[_0x7010('0x28')](_0x572f8f)['then'](function(_0x493185){return _0x493185;});}return null;};}function removeEntity(_0x3aa4bb,_0x3ebaf0){return function(_0x3b3a0f){if(_0x3b3a0f){return _0x3b3a0f[_0x7010('0x29')]()[_0x7010('0x2a')](function(){var _0x961cb9=_0x3b3a0f[_0x7010('0x2b')]({'plain':!![]});var _0xb953aa=_0x7010('0x2c');return db[_0x7010('0x2d')][_0x7010('0x29')]({'where':{'type':_0xb953aa,'resourceId':_0x961cb9['id']}})['then'](function(){return _0x3b3a0f;});})[_0x7010('0x2a')](function(){_0x3aa4bb['status'](0xcc)[_0x7010('0x1f')]();});}};}function handleEntityNotFound(_0x257e8f,_0x4d5d32){return function(_0x223904){if(!_0x223904){_0x257e8f[_0x7010('0x1d')](0x194);}return _0x223904;};}function handleError(_0x789a8,_0x336760){_0x336760=_0x336760||0x1f4;return function(_0x49ee8d){logger[_0x7010('0x2e')](_0x49ee8d[_0x7010('0x2f')]);if(_0x49ee8d[_0x7010('0x30')]){delete _0x49ee8d['name'];}_0x789a8[_0x7010('0x1e')](_0x336760)[_0x7010('0x31')](_0x49ee8d);};}exports[_0x7010('0x32')]=function(_0x452ac2,_0x114d66){var _0xaecb01={},_0x12c758={},_0x44325c={'count':0x0,'rows':[]};var _0x53e164=_[_0x7010('0x33')](db[_0x7010('0x34')]['rawAttributes'],function(_0x2463a7){return{'name':_0x2463a7[_0x7010('0x35')],'type':_0x2463a7[_0x7010('0x36')][_0x7010('0x37')]};});_0x12c758[_0x7010('0x38')]=_[_0x7010('0x33')](_0x53e164,_0x7010('0x30'));_0x12c758[_0x7010('0x39')]=_[_0x7010('0x3a')](_0x452ac2[_0x7010('0x39')]);_0x12c758[_0x7010('0x3b')]=_[_0x7010('0x3c')](_0x12c758['model'],_0x12c758[_0x7010('0x39')]);_0xaecb01[_0x7010('0x3d')]=_['intersection'](_0x12c758[_0x7010('0x38')],qs[_0x7010('0x3e')](_0x452ac2[_0x7010('0x39')][_0x7010('0x3e')]));_0xaecb01['attributes']=_0xaecb01[_0x7010('0x3d')][_0x7010('0x3f')]?_0xaecb01[_0x7010('0x3d')]:_0x12c758[_0x7010('0x38')];if(!_0x452ac2['query'][_0x7010('0x40')](_0x7010('0x41'))){_0xaecb01[_0x7010('0x24')]=qs[_0x7010('0x24')](_0x452ac2[_0x7010('0x39')][_0x7010('0x24')]);_0xaecb01['offset']=qs[_0x7010('0x21')](_0x452ac2[_0x7010('0x39')]['offset']);}_0xaecb01['order']=qs[_0x7010('0x42')](_0x452ac2[_0x7010('0x39')]['sort']);_0xaecb01[_0x7010('0x43')]=qs['filters'](_['pick'](_0x452ac2['query'],_0x12c758[_0x7010('0x3b')]),_0x53e164);if(_0x452ac2[_0x7010('0x39')][_0x7010('0x44')]){_0xaecb01[_0x7010('0x43')]=_[_0x7010('0x45')](_0xaecb01[_0x7010('0x43')],{'$or':_[_0x7010('0x33')](_0x53e164,function(_0x5457f8){if(_0x5457f8[_0x7010('0x36')]!=='VIRTUAL'){var _0x4e14f9={};_0x4e14f9[_0x5457f8[_0x7010('0x30')]]={'$like':'%'+_0x452ac2[_0x7010('0x39')][_0x7010('0x44')]+'%'};return _0x4e14f9;}})});}_0xaecb01=_[_0x7010('0x45')]({},_0xaecb01,_0x452ac2['options']);var _0x4477cb={'where':_0xaecb01[_0x7010('0x43')]};return db[_0x7010('0x34')][_0x7010('0x23')](_0x4477cb)[_0x7010('0x2a')](function(_0x562563){_0x44325c[_0x7010('0x23')]=_0x562563;if(_0x452ac2[_0x7010('0x39')][_0x7010('0x46')]){_0xaecb01['include']=[{'all':!![]}];}return db[_0x7010('0x34')][_0x7010('0x47')](_0xaecb01);})[_0x7010('0x2a')](function(_0x1b14c2){_0x44325c['rows']=_0x1b14c2;return _0x44325c;})[_0x7010('0x2a')](respondWithFilteredResult(_0x114d66,_0xaecb01))[_0x7010('0x48')](handleError(_0x114d66,null));};exports['show']=function(_0x233414,_0x1f0758){var _0x5e8607={'raw':!![],'where':{'id':_0x233414[_0x7010('0x49')]['id']}},_0x52ba36={};_0x52ba36[_0x7010('0x38')]=_[_0x7010('0x3a')](db['Template'][_0x7010('0x4a')]);_0x52ba36[_0x7010('0x39')]=_[_0x7010('0x3a')](_0x233414[_0x7010('0x39')]);_0x52ba36[_0x7010('0x3b')]=_[_0x7010('0x3c')](_0x52ba36['model'],_0x52ba36[_0x7010('0x39')]);_0x5e8607[_0x7010('0x3d')]=_['intersection'](_0x52ba36[_0x7010('0x38')],qs[_0x7010('0x3e')](_0x233414['query'][_0x7010('0x3e')]));_0x5e8607[_0x7010('0x3d')]=_0x5e8607[_0x7010('0x3d')]['length']?_0x5e8607[_0x7010('0x3d')]:_0x52ba36[_0x7010('0x38')];if(_0x233414[_0x7010('0x39')][_0x7010('0x46')]){_0x5e8607[_0x7010('0x4b')]=[{'all':!![]}];}_0x5e8607=_[_0x7010('0x45')]({},_0x5e8607,_0x233414['options']);return db[_0x7010('0x34')][_0x7010('0x4c')](_0x5e8607)[_0x7010('0x2a')](handleEntityNotFound(_0x1f0758,null))[_0x7010('0x2a')](respondWithResult(_0x1f0758,null))[_0x7010('0x48')](handleError(_0x1f0758,null));};exports['create']=function(_0x15bb38,_0x1514ec){return db[_0x7010('0x34')][_0x7010('0x4d')](_0x15bb38['body'],{})[_0x7010('0x2a')](function(_0x4f9fd9){var _0x4206d5=_0x15bb38[_0x7010('0x4e')][_0x7010('0x2b')]({'plain':!![]});if(!_0x4206d5)throw new Error(_0x7010('0x4f'));if(_0x4206d5[_0x7010('0x50')]===_0x7010('0x4e')){var _0x12fa5c=_0x4f9fd9['get']({'plain':!![]});var _0x224e90=_0x7010('0x2c');return db[_0x7010('0x51')][_0x7010('0x4c')]({'where':{'name':_0x224e90,'userProfileId':_0x4206d5[_0x7010('0x52')]},'raw':!![]})[_0x7010('0x2a')](function(_0xefa857){if(_0xefa857&&_0xefa857[_0x7010('0x53')]===0x0){return db['UserProfileResource']['create']({'name':_0x12fa5c[_0x7010('0x30')],'resourceId':_0x12fa5c['id'],'type':_0xefa857[_0x7010('0x30')],'sectionId':_0xefa857['id']},{})[_0x7010('0x2a')](function(){return _0x4f9fd9;});}else{return _0x4f9fd9;}})['catch'](function(_0x35eda2){logger[_0x7010('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x35eda2);throw _0x35eda2;});}return _0x4f9fd9;})['then'](respondWithResult(_0x1514ec,0xc9))[_0x7010('0x48')](handleError(_0x1514ec,null));};exports[_0x7010('0x28')]=function(_0x273a2e,_0x3e556c){if(_0x273a2e[_0x7010('0x54')]['id']){delete _0x273a2e[_0x7010('0x54')]['id'];}return db['Template']['find']({'where':{'id':_0x273a2e['params']['id']}})[_0x7010('0x2a')](handleEntityNotFound(_0x3e556c,null))[_0x7010('0x2a')](saveUpdates(_0x273a2e['body'],null))[_0x7010('0x2a')](respondWithResult(_0x3e556c,null))[_0x7010('0x48')](handleError(_0x3e556c,null));};exports[_0x7010('0x29')]=function(_0x10a74a,_0x510036){return db['Template'][_0x7010('0x4c')]({'where':{'id':_0x10a74a[_0x7010('0x49')]['id']}})[_0x7010('0x2a')](handleEntityNotFound(_0x510036,null))[_0x7010('0x2a')](removeEntity(_0x510036,null))[_0x7010('0x48')](handleError(_0x510036,null));};
\ No newline at end of file
index 6c54ef3..71116d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x092f=['api','bluebird','request-promise','path','../../config/environment','./template.attributes','define','Template','lodash','util','../../config/logger'];(function(_0x58acc3,_0x50a3ee){var _0x1abf13=function(_0x44a87e){while(--_0x44a87e){_0x58acc3['push'](_0x58acc3['shift']());}};_0x1abf13(++_0x50a3ee);}(_0x092f,0x147));var _0xf092=function(_0x3b711c,_0x4b22dc){_0x3b711c=_0x3b711c-0x0;var _0x2685f0=_0x092f[_0x3b711c];return _0x2685f0;};'use strict';var _=require(_0xf092('0x0'));var util=require(_0xf092('0x1'));var logger=require(_0xf092('0x2'))(_0xf092('0x3'));var moment=require('moment');var BPromise=require(_0xf092('0x4'));var rp=require(_0xf092('0x5'));var fs=require('fs');var path=require(_0xf092('0x6'));var rimraf=require('rimraf');var config=require(_0xf092('0x7'));var attributes=require(_0xf092('0x8'));module['exports']=function(_0xea209f,_0x30a637){return _0xea209f[_0xf092('0x9')](_0xf092('0xa'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8bc7=['exports','define','Template','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes'];(function(_0x34347e,_0x8d8ffe){var _0x55a426=function(_0x14fabe){while(--_0x14fabe){_0x34347e['push'](_0x34347e['shift']());}};_0x55a426(++_0x8d8ffe);}(_0x8bc7,0x129));var _0x78bc=function(_0x1f6824,_0x480ed2){_0x1f6824=_0x1f6824-0x0;var _0x1ad05e=_0x8bc7[_0x1f6824];return _0x1ad05e;};'use strict';var _=require(_0x78bc('0x0'));var util=require(_0x78bc('0x1'));var logger=require(_0x78bc('0x2'))(_0x78bc('0x3'));var moment=require(_0x78bc('0x4'));var BPromise=require(_0x78bc('0x5'));var rp=require(_0x78bc('0x6'));var fs=require('fs');var path=require(_0x78bc('0x7'));var rimraf=require(_0x78bc('0x8'));var config=require(_0x78bc('0x9'));var attributes=require(_0x78bc('0xa'));module[_0x78bc('0xb')]=function(_0x4bfebe,_0xfcc4c5){return _0x4bfebe[_0x78bc('0xc')](_0x78bc('0xd'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e458ba2..9856bd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9089=['options','raw','where','attributes','limit','include','map','model','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetTemplate','Template','findAll'];(function(_0x49bbbf,_0x13dd12){var _0x2f33ed=function(_0x1de9b5){while(--_0x1de9b5){_0x49bbbf['push'](_0x49bbbf['shift']());}};_0x2f33ed(++_0x13dd12);}(_0x9089,0xf6));var _0x9908=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x9089[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x9908('0x0'));var util=require(_0x9908('0x1'));var moment=require('moment');var BPromise=require(_0x9908('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9908('0x3'))['db'];var utils=require(_0x9908('0x4'));var logger=require(_0x9908('0x5'))(_0x9908('0x6'));var config=require(_0x9908('0x7'));var jayson=require(_0x9908('0x8'));var client=jayson['client'][_0x9908('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2bd694,_0x3d10a9,_0x523fae){return new BPromise(function(_0x491630,_0x205b9f){return client[_0x9908('0xa')](_0x2bd694,_0x523fae)[_0x9908('0xb')](function(_0x5011cc){logger['info'](_0x9908('0xc'),_0x3d10a9,_0x9908('0xd'));logger[_0x9908('0xe')](_0x9908('0xf'),_0x3d10a9,_0x9908('0xd'),JSON[_0x9908('0x10')](_0x5011cc));if(_0x5011cc[_0x9908('0x11')]){if(_0x5011cc[_0x9908('0x11')][_0x9908('0x12')]===0x1f4){logger[_0x9908('0x11')](_0x9908('0xc'),_0x3d10a9,_0x5011cc[_0x9908('0x11')][_0x9908('0x13')]);return _0x205b9f(_0x5011cc[_0x9908('0x11')]['message']);}logger[_0x9908('0x11')](_0x9908('0xc'),_0x3d10a9,_0x5011cc[_0x9908('0x11')][_0x9908('0x13')]);return _0x491630(_0x5011cc['error'][_0x9908('0x13')]);}else{logger[_0x9908('0x14')]('Template,\x20%s,\x20%s',_0x3d10a9,_0x9908('0xd'));_0x491630(_0x5011cc[_0x9908('0x15')][_0x9908('0x13')]);}})[_0x9908('0x16')](function(_0x234a65){logger[_0x9908('0x11')]('Template,\x20%s,\x20%s',_0x3d10a9,_0x234a65);_0x205b9f(_0x234a65);});});}exports[_0x9908('0x17')]=function(_0x3cd743){var _0x563df9=this;return new Promise(function(_0x260729,_0x3db6ef){return db[_0x9908('0x18')][_0x9908('0x19')]({'raw':_0x3cd743['options']?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1b')]===undefined?!![]:![]:!![],'where':_0x3cd743[_0x9908('0x1a')]?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1c')]||null:null,'attributes':_0x3cd743['options']?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1d')]||null:null,'limit':_0x3cd743['options']?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1e')]||null:null,'include':_0x3cd743[_0x9908('0x1a')]?_0x3cd743['options'][_0x9908('0x1f')]?_[_0x9908('0x20')](_0x3cd743[_0x9908('0x1a')][_0x9908('0x1f')],function(_0x16bc4a){return{'model':db[_0x16bc4a[_0x9908('0x21')]],'as':_0x16bc4a['as'],'attributes':_0x16bc4a[_0x9908('0x1d')],'include':_0x16bc4a[_0x9908('0x1f')]?_[_0x9908('0x20')](_0x16bc4a['include'],function(_0x1bb9a8){return{'model':db[_0x1bb9a8['model']],'as':_0x1bb9a8['as'],'attributes':_0x1bb9a8['attributes'],'include':_0x1bb9a8[_0x9908('0x1f')]?_['map'](_0x1bb9a8[_0x9908('0x1f')],function(_0x526544){return{'model':db[_0x526544[_0x9908('0x21')]],'as':_0x526544['as'],'attributes':_0x526544['attributes']};}):[]};}):[]};}):[]:[]})[_0x9908('0xb')](function(_0x4da3d3){logger[_0x9908('0x14')]('GetTemplate',_0x3cd743);logger['debug'](_0x9908('0x17'),_0x3cd743,JSON['stringify'](_0x4da3d3));_0x260729(_0x4da3d3);})[_0x9908('0x16')](function(_0x43e9d0){logger[_0x9908('0x11')](_0x9908('0x17'),_0x43e9d0['message'],_0x3cd743);_0x3db6ef(_0x563df9[_0x9908('0x11')](0x1f4,_0x43e9d0['message']));});});};
\ No newline at end of file
+var _0x1544=['include','map','model','then','stringify','util','moment','bluebird','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit'];(function(_0x52155c,_0x3b295c){var _0x1abedb=function(_0x538c72){while(--_0x538c72){_0x52155c['push'](_0x52155c['shift']());}};_0x1abedb(++_0x3b295c);}(_0x1544,0xa5));var _0x4154=function(_0x4d7988,_0x4c62e3){_0x4d7988=_0x4d7988-0x0;var _0x97e287=_0x1544[_0x4d7988];return _0x97e287;};'use strict';var _=require('lodash');var util=require(_0x4154('0x0'));var moment=require(_0x4154('0x1'));var BPromise=require(_0x4154('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4154('0x3'));var logger=require(_0x4154('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4154('0x5'));var client=jayson[_0x4154('0x6')][_0x4154('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4446d3,_0x4d9187,_0x358a68){return new BPromise(function(_0x46f94c,_0x186c31){return client[_0x4154('0x8')](_0x4446d3,_0x358a68)['then'](function(_0x446e93){logger[_0x4154('0x9')](_0x4154('0xa'),_0x4d9187,'request\x20sent');logger[_0x4154('0xb')](_0x4154('0xc'),_0x4d9187,_0x4154('0xd'),JSON['stringify'](_0x446e93));if(_0x446e93['error']){if(_0x446e93[_0x4154('0xe')][_0x4154('0xf')]===0x1f4){logger[_0x4154('0xe')](_0x4154('0xa'),_0x4d9187,_0x446e93[_0x4154('0xe')][_0x4154('0x10')]);return _0x186c31(_0x446e93[_0x4154('0xe')]['message']);}logger[_0x4154('0xe')]('Template,\x20%s,\x20%s',_0x4d9187,_0x446e93[_0x4154('0xe')][_0x4154('0x10')]);return _0x46f94c(_0x446e93['error']['message']);}else{logger['info'](_0x4154('0xa'),_0x4d9187,_0x4154('0xd'));_0x46f94c(_0x446e93[_0x4154('0x11')][_0x4154('0x10')]);}})[_0x4154('0x12')](function(_0x1040c4){logger[_0x4154('0xe')](_0x4154('0xa'),_0x4d9187,_0x1040c4);_0x186c31(_0x1040c4);});});}exports[_0x4154('0x13')]=function(_0x4cc16c){var _0x4975f9=this;return new Promise(function(_0x8c45c6,_0x182eae){return db[_0x4154('0x14')][_0x4154('0x15')]({'raw':_0x4cc16c[_0x4154('0x16')]?_0x4cc16c['options'][_0x4154('0x17')]===undefined?!![]:![]:!![],'where':_0x4cc16c[_0x4154('0x16')]?_0x4cc16c[_0x4154('0x16')][_0x4154('0x18')]||null:null,'attributes':_0x4cc16c['options']?_0x4cc16c[_0x4154('0x16')][_0x4154('0x19')]||null:null,'limit':_0x4cc16c[_0x4154('0x16')]?_0x4cc16c[_0x4154('0x16')][_0x4154('0x1a')]||null:null,'include':_0x4cc16c[_0x4154('0x16')]?_0x4cc16c[_0x4154('0x16')][_0x4154('0x1b')]?_[_0x4154('0x1c')](_0x4cc16c[_0x4154('0x16')][_0x4154('0x1b')],function(_0x4ceb24){return{'model':db[_0x4ceb24[_0x4154('0x1d')]],'as':_0x4ceb24['as'],'attributes':_0x4ceb24[_0x4154('0x19')],'include':_0x4ceb24['include']?_[_0x4154('0x1c')](_0x4ceb24[_0x4154('0x1b')],function(_0x4615af){return{'model':db[_0x4615af[_0x4154('0x1d')]],'as':_0x4615af['as'],'attributes':_0x4615af[_0x4154('0x19')],'include':_0x4615af[_0x4154('0x1b')]?_[_0x4154('0x1c')](_0x4615af[_0x4154('0x1b')],function(_0x1530b3){return{'model':db[_0x1530b3[_0x4154('0x1d')]],'as':_0x1530b3['as'],'attributes':_0x1530b3['attributes']};}):[]};}):[]};}):[]:[]})[_0x4154('0x1e')](function(_0x275d4f){logger[_0x4154('0x9')](_0x4154('0x13'),_0x4cc16c);logger[_0x4154('0xb')](_0x4154('0x13'),_0x4cc16c,JSON[_0x4154('0x1f')](_0x275d4f));_0x8c45c6(_0x275d4f);})[_0x4154('0x12')](function(_0x1c7505){logger[_0x4154('0xe')](_0x4154('0x13'),_0x1c7505['message'],_0x4cc16c);_0x182eae(_0x4975f9['error'](0x1f4,_0x1c7505['message']));});});};
\ No newline at end of file
index 9b7bf87..f02d453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x147f=['index','show','getAllConditions','getAnyConditions','/:id/actions','getActions','create','/:id/all_conditions','addAllCondition','post','addAction','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated'];(function(_0x4aebbd,_0x41f375){var _0x24f7b1=function(_0x34761f){while(--_0x34761f){_0x4aebbd['push'](_0x4aebbd['shift']());}};_0x24f7b1(++_0x41f375);}(_0x147f,0xd5));var _0xf147=function(_0x131dd9,_0x12d081){_0x131dd9=_0x131dd9-0x0;var _0x4ad5d7=_0x147f[_0x131dd9];return _0x4ad5d7;};'use strict';var multer=require(_0xf147('0x0'));var util=require(_0xf147('0x1'));var path=require(_0xf147('0x2'));var timeout=require('connect-timeout');var express=require(_0xf147('0x3'));var router=express[_0xf147('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf147('0x5'));var interaction=require(_0xf147('0x6'));var config=require(_0xf147('0x7'));var controller=require(_0xf147('0x8'));router[_0xf147('0x9')]('/',auth[_0xf147('0xa')](),controller[_0xf147('0xb')]);router['get']('/:id',auth[_0xf147('0xa')](),controller[_0xf147('0xc')]);router[_0xf147('0x9')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xf147('0xd')]);router[_0xf147('0x9')]('/:id/any_conditions',auth[_0xf147('0xa')](),controller[_0xf147('0xe')]);router[_0xf147('0x9')](_0xf147('0xf'),auth[_0xf147('0xa')](),controller[_0xf147('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf147('0x11')]);router['post'](_0xf147('0x12'),auth[_0xf147('0xa')](),controller[_0xf147('0x13')]);router[_0xf147('0x14')]('/:id/any_conditions',auth[_0xf147('0xa')](),controller['addAnyCondition']);router[_0xf147('0x14')](_0xf147('0xf'),auth[_0xf147('0xa')](),controller[_0xf147('0x15')]);router[_0xf147('0x16')](_0xf147('0x17'),auth[_0xf147('0xa')](),controller[_0xf147('0x18')]);router[_0xf147('0x19')]('/:id',auth['isAuthenticated'](),controller[_0xf147('0x1a')]);module[_0xf147('0x1b')]=router;
\ No newline at end of file
+var _0x724b=['update','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id','show','/:id/all_conditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','put'];(function(_0x2632de,_0x299e19){var _0x2da744=function(_0x557c6e){while(--_0x557c6e){_0x2632de['push'](_0x2632de['shift']());}};_0x2da744(++_0x299e19);}(_0x724b,0xb0));var _0xb724=function(_0x358c75,_0x5aee51){_0x358c75=_0x358c75-0x0;var _0x37a6ec=_0x724b[_0x358c75];return _0x37a6ec;};'use strict';var multer=require(_0xb724('0x0'));var util=require(_0xb724('0x1'));var path=require(_0xb724('0x2'));var timeout=require('connect-timeout');var express=require(_0xb724('0x3'));var router=express['Router']();var fs_extra=require(_0xb724('0x4'));var auth=require(_0xb724('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb724('0x6'));var controller=require(_0xb724('0x7'));router[_0xb724('0x8')]('/',auth[_0xb724('0x9')](),controller[_0xb724('0xa')]);router[_0xb724('0x8')](_0xb724('0xb'),auth[_0xb724('0x9')](),controller[_0xb724('0xc')]);router[_0xb724('0x8')](_0xb724('0xd'),auth[_0xb724('0x9')](),controller['getAllConditions']);router[_0xb724('0x8')](_0xb724('0xe'),auth['isAuthenticated'](),controller[_0xb724('0xf')]);router[_0xb724('0x8')](_0xb724('0x10'),auth['isAuthenticated'](),controller[_0xb724('0x11')]);router[_0xb724('0x12')]('/',auth[_0xb724('0x9')](),controller[_0xb724('0x13')]);router[_0xb724('0x12')]('/:id/all_conditions',auth[_0xb724('0x9')](),controller[_0xb724('0x14')]);router[_0xb724('0x12')](_0xb724('0xe'),auth[_0xb724('0x9')](),controller[_0xb724('0x15')]);router[_0xb724('0x12')](_0xb724('0x10'),auth[_0xb724('0x9')](),controller[_0xb724('0x16')]);router[_0xb724('0x17')](_0xb724('0xb'),auth[_0xb724('0x9')](),controller[_0xb724('0x18')]);router['delete'](_0xb724('0xb'),auth[_0xb724('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ab3fe4b..07643f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x846f=['STRING','BOOLEAN','sequelize','exports'];(function(_0x1b515f,_0x52aa6b){var _0x66ff73=function(_0x2cc081){while(--_0x2cc081){_0x1b515f['push'](_0x1b515f['shift']());}};_0x66ff73(++_0x52aa6b);}(_0x846f,0x1ea));var _0xf846=function(_0x1b64f9,_0x44bbb5){_0x1b64f9=_0x1b64f9-0x0;var _0x54b795=_0x846f[_0x1b64f9];return _0x54b795;};'use strict';var Sequelize=require(_0xf846('0x0'));module[_0xf846('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf846('0x2')]},'description':{'type':Sequelize[_0xf846('0x2')]},'status':{'type':Sequelize[_0xf846('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x73f4=['sequelize','exports','STRING','BOOLEAN'];(function(_0x180064,_0xf28ec6){var _0xf33139=function(_0x4568be){while(--_0x4568be){_0x180064['push'](_0x180064['shift']());}};_0xf33139(++_0xf28ec6);}(_0x73f4,0x1b0));var _0x473f=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0x73f4[_0xda464c];return _0x19e222;};'use strict';var Sequelize=require(_0x473f('0x0'));module[_0x473f('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x473f('0x2')]},'status':{'type':Sequelize[_0x473f('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 759ba9f..faa6bb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1f3=['fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','includeAll','include','catch','show','keys','rawAttributes','options','find','create','body','role','user','UserProfileSection','autoAssociation','params','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','order','getAnyConditions','addAction','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','reject','update','then','destroy','get','Triggers','UserProfileResource','end','error','stack','name','send','map','Trigger'];(function(_0x33a60f,_0x27b9ad){var _0x52a990=function(_0xc119ef){while(--_0xc119ef){_0x33a60f['push'](_0x33a60f['shift']());}};_0x52a990(++_0x27b9ad);}(_0xf1f3,0x1dc));var _0x3f1f=function(_0x4a16a7,_0x4250dc){_0x4a16a7=_0x4a16a7-0x0;var _0x5410d4=_0xf1f3[_0x4a16a7];return _0x5410d4;};'use strict';var emlformat=require(_0x3f1f('0x0'));var rimraf=require(_0x3f1f('0x1'));var zipdir=require(_0x3f1f('0x2'));var jsonpatch=require(_0x3f1f('0x3'));var rp=require('request-promise');var moment=require(_0x3f1f('0x4'));var BPromise=require(_0x3f1f('0x5'));var Mustache=require(_0x3f1f('0x6'));var util=require(_0x3f1f('0x7'));var path=require('path');var sox=require(_0x3f1f('0x8'));var csv=require(_0x3f1f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3f1f('0xa'));var squel=require('squel');var crypto=require(_0x3f1f('0xb'));var jsforce=require(_0x3f1f('0xc'));var deskjs=require(_0x3f1f('0xd'));var toCsv=require(_0x3f1f('0x9'));var querystring=require(_0x3f1f('0xe'));var Papa=require(_0x3f1f('0xf'));var Redis=require(_0x3f1f('0x10'));var authService=require(_0x3f1f('0x11'));var qs=require(_0x3f1f('0x12'));var as=require(_0x3f1f('0x13'));var hardwareService=require(_0x3f1f('0x14'));var logger=require('../../config/logger')(_0x3f1f('0x15'));var utils=require('../../config/utils');var config=require(_0x3f1f('0x16'));var licenseUtil=require(_0x3f1f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x455a24,_0x4a3787){_0x4a3787=_0x4a3787||0xcc;return function(_0x39cdc0){if(_0x39cdc0){return _0x455a24[_0x3f1f('0x18')](_0x4a3787);}return _0x455a24[_0x3f1f('0x19')](_0x4a3787)['end']();};}function respondWithResult(_0x89fe92,_0x1a6884){_0x1a6884=_0x1a6884||0xc8;return function(_0x57bb59){if(_0x57bb59){return _0x89fe92[_0x3f1f('0x19')](_0x1a6884)[_0x3f1f('0x1a')](_0x57bb59);}};}function respondWithFilteredResult(_0x203320,_0x10549d){return function(_0x4ef683){if(_0x4ef683){var _0x473035=typeof _0x10549d[_0x3f1f('0x1b')]===_0x3f1f('0x1c')&&typeof _0x10549d[_0x3f1f('0x1d')]===_0x3f1f('0x1c');var _0x333197=_0x4ef683[_0x3f1f('0x1e')];var _0x5e39ab=_0x473035?0x0:_0x10549d['offset'];var _0x9cd512=_0x473035?_0x4ef683[_0x3f1f('0x1e')]:_0x10549d[_0x3f1f('0x1b')]+_0x10549d[_0x3f1f('0x1d')];var _0x247cef;if(_0x9cd512>=_0x333197){_0x9cd512=_0x333197;_0x247cef=0xc8;}else{_0x247cef=0xce;}_0x203320[_0x3f1f('0x19')](_0x247cef);return _0x203320[_0x3f1f('0x1f')]('Content-Range',_0x5e39ab+'-'+_0x9cd512+'/'+_0x333197)[_0x3f1f('0x1a')](_0x4ef683);}return null;};}function patchUpdates(_0x546e0e){return function(_0x209f08){try{jsonpatch['apply'](_0x209f08,_0x546e0e,!![]);}catch(_0x1394fe){return BPromise[_0x3f1f('0x20')](_0x1394fe);}return _0x209f08['save']();};}function saveUpdates(_0x27cf28,_0x147460){return function(_0x34247b){if(_0x34247b){return _0x34247b[_0x3f1f('0x21')](_0x27cf28)[_0x3f1f('0x22')](function(_0x5416a9){return _0x5416a9;});}return null;};}function removeEntity(_0x8711a5,_0x3178dd){return function(_0x33ac41){if(_0x33ac41){return _0x33ac41[_0x3f1f('0x23')]()[_0x3f1f('0x22')](function(){var _0x52e56c=_0x33ac41[_0x3f1f('0x24')]({'plain':!![]});var _0x10f419=_0x3f1f('0x25');return db[_0x3f1f('0x26')][_0x3f1f('0x23')]({'where':{'type':_0x10f419,'resourceId':_0x52e56c['id']}})['then'](function(){return _0x33ac41;});})[_0x3f1f('0x22')](function(){_0x8711a5[_0x3f1f('0x19')](0xcc)[_0x3f1f('0x27')]();});}};}function handleEntityNotFound(_0x2651cb,_0x4c27d0){return function(_0x1aa7ae){if(!_0x1aa7ae){_0x2651cb['sendStatus'](0x194);}return _0x1aa7ae;};}function handleError(_0xade88e,_0x1ba8ea){_0x1ba8ea=_0x1ba8ea||0x1f4;return function(_0x54c3c2){logger[_0x3f1f('0x28')](_0x54c3c2[_0x3f1f('0x29')]);if(_0x54c3c2['name']){delete _0x54c3c2[_0x3f1f('0x2a')];}_0xade88e['status'](_0x1ba8ea)[_0x3f1f('0x2b')](_0x54c3c2);};}exports['index']=function(_0x29fe36,_0xf3b815){var _0x5f40a6={},_0x1ca451={},_0x4a4968={'count':0x0,'rows':[]};var _0x25458e=_[_0x3f1f('0x2c')](db[_0x3f1f('0x2d')]['rawAttributes'],function(_0x505775){return{'name':_0x505775[_0x3f1f('0x2e')],'type':_0x505775['type']['key']};});_0x1ca451[_0x3f1f('0x2f')]=_['map'](_0x25458e,_0x3f1f('0x2a'));_0x1ca451[_0x3f1f('0x30')]=_['keys'](_0x29fe36['query']);_0x1ca451[_0x3f1f('0x31')]=_['intersection'](_0x1ca451[_0x3f1f('0x2f')],_0x1ca451[_0x3f1f('0x30')]);_0x5f40a6[_0x3f1f('0x32')]=_[_0x3f1f('0x33')](_0x1ca451[_0x3f1f('0x2f')],qs['fields'](_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x34')]));_0x5f40a6['attributes']=_0x5f40a6[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x5f40a6[_0x3f1f('0x32')]:_0x1ca451['model'];if(!_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x36')](_0x3f1f('0x37'))){_0x5f40a6[_0x3f1f('0x1d')]=qs[_0x3f1f('0x1d')](_0x29fe36['query'][_0x3f1f('0x1d')]);_0x5f40a6['offset']=qs[_0x3f1f('0x1b')](_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x1b')]);}_0x5f40a6['order']=qs[_0x3f1f('0x38')](_0x29fe36['query'][_0x3f1f('0x38')]);_0x5f40a6['where']=qs[_0x3f1f('0x31')](_[_0x3f1f('0x39')](_0x29fe36[_0x3f1f('0x30')],_0x1ca451[_0x3f1f('0x31')]),_0x25458e);if(_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x3a')]){_0x5f40a6[_0x3f1f('0x3b')]=_[_0x3f1f('0x3c')](_0x5f40a6[_0x3f1f('0x3b')],{'$or':_['map'](_0x25458e,function(_0x5edda3){if(_0x5edda3[_0x3f1f('0x3d')]!=='VIRTUAL'){var _0x3710a3={};_0x3710a3[_0x5edda3[_0x3f1f('0x2a')]]={'$like':'%'+_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x3a')]+'%'};return _0x3710a3;}})});}_0x5f40a6=_[_0x3f1f('0x3c')]({},_0x5f40a6,_0x29fe36['options']);var _0x2e7824={'where':_0x5f40a6['where']};return db[_0x3f1f('0x2d')]['count'](_0x2e7824)['then'](function(_0x5cb1be){_0x4a4968[_0x3f1f('0x1e')]=_0x5cb1be;if(_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x3e')]){_0x5f40a6[_0x3f1f('0x3f')]=[{'all':!![]}];}return db[_0x3f1f('0x2d')]['findAll'](_0x5f40a6);})[_0x3f1f('0x22')](function(_0x5179bc){_0x4a4968['rows']=_0x5179bc;return _0x4a4968;})[_0x3f1f('0x22')](respondWithFilteredResult(_0xf3b815,_0x5f40a6))[_0x3f1f('0x40')](handleError(_0xf3b815,null));};exports[_0x3f1f('0x41')]=function(_0x3ae3bf,_0x4825f0){var _0x3da86={'raw':![],'where':{'id':_0x3ae3bf['params']['id']}},_0x28320c={};_0x28320c[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x2d')][_0x3f1f('0x43')]);_0x28320c['query']=_[_0x3f1f('0x42')](_0x3ae3bf['query']);_0x28320c[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x28320c['model'],_0x28320c['query']);_0x3da86['attributes']=_['intersection'](_0x28320c[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0x3ae3bf[_0x3f1f('0x30')]['fields']));_0x3da86['attributes']=_0x3da86[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x3da86[_0x3f1f('0x32')]:_0x28320c[_0x3f1f('0x2f')];if(_0x3ae3bf[_0x3f1f('0x30')][_0x3f1f('0x3e')]){_0x3da86[_0x3f1f('0x3f')]=[{'all':!![]}];}_0x3da86=_[_0x3f1f('0x3c')]({},_0x3da86,_0x3ae3bf[_0x3f1f('0x44')]);return db[_0x3f1f('0x2d')][_0x3f1f('0x45')](_0x3da86)[_0x3f1f('0x22')](handleEntityNotFound(_0x4825f0,null))[_0x3f1f('0x22')](respondWithResult(_0x4825f0,null))[_0x3f1f('0x40')](handleError(_0x4825f0,null));};exports[_0x3f1f('0x46')]=function(_0x5d7a7e,_0x8fd96){return db[_0x3f1f('0x2d')][_0x3f1f('0x46')](_0x5d7a7e[_0x3f1f('0x47')],{})[_0x3f1f('0x22')](function(_0x498f8b){var _0x14b040=_0x5d7a7e['user'][_0x3f1f('0x24')]({'plain':!![]});if(!_0x14b040)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x14b040[_0x3f1f('0x48')]===_0x3f1f('0x49')){var _0xc1a907=_0x498f8b[_0x3f1f('0x24')]({'plain':!![]});var _0xfe831c='Triggers';return db[_0x3f1f('0x4a')][_0x3f1f('0x45')]({'where':{'name':_0xfe831c,'userProfileId':_0x14b040['userProfileId']},'raw':!![]})[_0x3f1f('0x22')](function(_0x2650cf){if(_0x2650cf&&_0x2650cf[_0x3f1f('0x4b')]===0x0){return db[_0x3f1f('0x26')]['create']({'name':_0xc1a907[_0x3f1f('0x2a')],'resourceId':_0xc1a907['id'],'type':_0x2650cf[_0x3f1f('0x2a')],'sectionId':_0x2650cf['id']},{})[_0x3f1f('0x22')](function(){return _0x498f8b;});}else{return _0x498f8b;}})[_0x3f1f('0x40')](function(_0x2955d9){logger[_0x3f1f('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2955d9);throw _0x2955d9;});}return _0x498f8b;})['then'](respondWithResult(_0x8fd96,0xc9))[_0x3f1f('0x40')](handleError(_0x8fd96,null));};exports[_0x3f1f('0x21')]=function(_0x2773d8,_0x1f6b1e){if(_0x2773d8[_0x3f1f('0x47')]['id']){delete _0x2773d8['body']['id'];}return db[_0x3f1f('0x2d')][_0x3f1f('0x45')]({'where':{'id':_0x2773d8[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x1f6b1e,null))[_0x3f1f('0x22')](saveUpdates(_0x2773d8[_0x3f1f('0x47')],null))[_0x3f1f('0x22')](respondWithResult(_0x1f6b1e,null))['catch'](handleError(_0x1f6b1e,null));};exports[_0x3f1f('0x23')]=function(_0x444888,_0x1e2ae3){return db[_0x3f1f('0x2d')][_0x3f1f('0x45')]({'where':{'id':_0x444888[_0x3f1f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1e2ae3,null))[_0x3f1f('0x22')](removeEntity(_0x1e2ae3,null))[_0x3f1f('0x40')](handleError(_0x1e2ae3,null));};exports['addAllCondition']=function(_0x2d5582,_0x43e5c9,_0x404440){if(_0x2d5582['body']['id']){delete _0x2d5582[_0x3f1f('0x47')]['id'];}return db[_0x3f1f('0x2d')]['find']({'where':{'id':_0x2d5582[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x43e5c9,null))[_0x3f1f('0x22')](function(_0x40cc7e){if(_0x40cc7e){_0x2d5582[_0x3f1f('0x47')][_0x3f1f('0x4d')]=_0x40cc7e['id'];return db[_0x3f1f('0x4e')]['create'](_0x2d5582[_0x3f1f('0x47')]);}})[_0x3f1f('0x22')](respondWithResult(_0x43e5c9,null))[_0x3f1f('0x40')](handleError(_0x43e5c9,null));};exports['addAnyCondition']=function(_0xff859,_0x5c3a00,_0x18968d){if(_0xff859['body']['id']){delete _0xff859[_0x3f1f('0x47')]['id'];}return db['Trigger']['find']({'where':{'id':_0xff859['params']['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x5c3a00,null))['then'](function(_0x5a014d){if(_0x5a014d){_0xff859[_0x3f1f('0x47')][_0x3f1f('0x4f')]=_0x5a014d['id'];return db[_0x3f1f('0x4e')][_0x3f1f('0x46')](_0xff859[_0x3f1f('0x47')]);}})[_0x3f1f('0x22')](respondWithResult(_0x5c3a00,null))[_0x3f1f('0x40')](handleError(_0x5c3a00,null));};exports[_0x3f1f('0x50')]=function(_0x3f1512,_0x30f567,_0x24903b){var _0x39f1b1={};var _0x3e8fef={};var _0x53b1da;var _0x4e67e4;return db[_0x3f1f('0x2d')][_0x3f1f('0x51')]({'where':{'id':_0x3f1512[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x30f567,null))['then'](function(_0x111ce6){if(_0x111ce6){_0x53b1da=_0x111ce6;_0x3e8fef[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x4e')]['rawAttributes']);_0x3e8fef['query']=_[_0x3f1f('0x42')](_0x3f1512[_0x3f1f('0x30')]);_0x3e8fef[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x3e8fef[_0x3f1f('0x2f')],_0x3e8fef['query']);_0x39f1b1['attributes']=_['intersection'](_0x3e8fef[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0x3f1512['query']['fields']));_0x39f1b1[_0x3f1f('0x32')]=_0x39f1b1[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x39f1b1[_0x3f1f('0x32')]:_0x3e8fef['model'];_0x39f1b1[_0x3f1f('0x52')]=qs['sort'](_0x3f1512[_0x3f1f('0x30')]['sort']);_0x39f1b1[_0x3f1f('0x3b')]=qs['filters'](_[_0x3f1f('0x39')](_0x3f1512[_0x3f1f('0x30')],_0x3e8fef[_0x3f1f('0x31')]));if(_0x3f1512[_0x3f1f('0x30')]['filter']){_0x39f1b1['where']=_[_0x3f1f('0x3c')](_0x39f1b1[_0x3f1f('0x3b')],{'$or':_['map'](_0x39f1b1[_0x3f1f('0x32')],function(_0x2fe03f){var _0x8c6617={};_0x8c6617[_0x2fe03f]={'$like':'%'+_0x3f1512['query'][_0x3f1f('0x3a')]+'%'};return _0x8c6617;})});}_0x39f1b1=_[_0x3f1f('0x3c')]({},_0x39f1b1,_0x3f1512['options']);return _0x53b1da['getAllConditions'](_0x39f1b1);}})[_0x3f1f('0x22')](function(_0x51e28d){if(_0x51e28d){_0x4e67e4=_0x51e28d[_0x3f1f('0x35')];if(!_0x3f1512[_0x3f1f('0x30')][_0x3f1f('0x36')](_0x3f1f('0x37'))){_0x39f1b1[_0x3f1f('0x1d')]=qs[_0x3f1f('0x1d')](_0x3f1512[_0x3f1f('0x30')][_0x3f1f('0x1d')]);_0x39f1b1[_0x3f1f('0x1b')]=qs[_0x3f1f('0x1b')](_0x3f1512[_0x3f1f('0x30')][_0x3f1f('0x1b')]);}return _0x53b1da[_0x3f1f('0x50')](_0x39f1b1);}})[_0x3f1f('0x22')](function(_0x3bce74){if(_0x3bce74){return _0x3bce74?{'count':_0x4e67e4,'rows':_0x3bce74}:null;}})[_0x3f1f('0x22')](respondWithResult(_0x30f567,null))[_0x3f1f('0x40')](handleError(_0x30f567,null));};exports['getAnyConditions']=function(_0xcb638a,_0x3721d3,_0x4eefc9){var _0x38a054={};var _0x2b7c7f={};var _0x18d07f;var _0x5ceb0f;return db[_0x3f1f('0x2d')][_0x3f1f('0x51')]({'where':{'id':_0xcb638a[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x3721d3,null))[_0x3f1f('0x22')](function(_0x4d3816){if(_0x4d3816){_0x18d07f=_0x4d3816;_0x2b7c7f[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x4e')][_0x3f1f('0x43')]);_0x2b7c7f[_0x3f1f('0x30')]=_['keys'](_0xcb638a[_0x3f1f('0x30')]);_0x2b7c7f[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x2b7c7f[_0x3f1f('0x2f')],_0x2b7c7f[_0x3f1f('0x30')]);_0x38a054[_0x3f1f('0x32')]=_[_0x3f1f('0x33')](_0x2b7c7f[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0xcb638a[_0x3f1f('0x30')]['fields']));_0x38a054[_0x3f1f('0x32')]=_0x38a054[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x38a054['attributes']:_0x2b7c7f[_0x3f1f('0x2f')];_0x38a054[_0x3f1f('0x52')]=qs[_0x3f1f('0x38')](_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x38')]);_0x38a054[_0x3f1f('0x3b')]=qs[_0x3f1f('0x31')](_[_0x3f1f('0x39')](_0xcb638a['query'],_0x2b7c7f['filters']));if(_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x3a')]){_0x38a054['where']=_[_0x3f1f('0x3c')](_0x38a054[_0x3f1f('0x3b')],{'$or':_[_0x3f1f('0x2c')](_0x38a054[_0x3f1f('0x32')],function(_0x3b5a4d){var _0x766240={};_0x766240[_0x3b5a4d]={'$like':'%'+_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x3a')]+'%'};return _0x766240;})});}_0x38a054=_[_0x3f1f('0x3c')]({},_0x38a054,_0xcb638a[_0x3f1f('0x44')]);return _0x18d07f[_0x3f1f('0x53')](_0x38a054);}})[_0x3f1f('0x22')](function(_0x2ea067){if(_0x2ea067){_0x5ceb0f=_0x2ea067['length'];if(!_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x36')](_0x3f1f('0x37'))){_0x38a054['limit']=qs['limit'](_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x1d')]);_0x38a054['offset']=qs[_0x3f1f('0x1b')](_0xcb638a['query'][_0x3f1f('0x1b')]);}return _0x18d07f[_0x3f1f('0x53')](_0x38a054);}})[_0x3f1f('0x22')](function(_0x57dff3){if(_0x57dff3){return _0x57dff3?{'count':_0x5ceb0f,'rows':_0x57dff3}:null;}})[_0x3f1f('0x22')](respondWithResult(_0x3721d3,null))['catch'](handleError(_0x3721d3,null));};exports[_0x3f1f('0x54')]=function(_0xfb057b,_0x3479c1,_0x16c535){if(_0xfb057b[_0x3f1f('0x47')]['id']){delete _0xfb057b[_0x3f1f('0x47')]['id'];}return db['Trigger'][_0x3f1f('0x45')]({'where':{'id':_0xfb057b[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x3479c1,null))['then'](function(_0x455857){if(_0x455857){_0xfb057b[_0x3f1f('0x47')]['TriggerId']=_0x455857['id'];return db['Action']['create'](_0xfb057b[_0x3f1f('0x47')]);}})[_0x3f1f('0x22')](respondWithResult(_0x3479c1,null))[_0x3f1f('0x40')](handleError(_0x3479c1,null));};exports['getActions']=function(_0x1f2073,_0x3bf8a8,_0x48309f){var _0x12836c={};var _0x2b0c38={};var _0xed667c;var _0x5741aa;return db[_0x3f1f('0x2d')][_0x3f1f('0x51')]({'where':{'id':_0x1f2073[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x3bf8a8,null))[_0x3f1f('0x22')](function(_0x452775){if(_0x452775){_0xed667c=_0x452775;_0x2b0c38[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x55')]['rawAttributes']);_0x2b0c38[_0x3f1f('0x30')]=_[_0x3f1f('0x42')](_0x1f2073[_0x3f1f('0x30')]);_0x2b0c38[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x2b0c38[_0x3f1f('0x2f')],_0x2b0c38['query']);_0x12836c[_0x3f1f('0x32')]=_[_0x3f1f('0x33')](_0x2b0c38[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0x1f2073['query'][_0x3f1f('0x34')]));_0x12836c['attributes']=_0x12836c[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x12836c[_0x3f1f('0x32')]:_0x2b0c38[_0x3f1f('0x2f')];_0x12836c['order']=qs[_0x3f1f('0x38')](_0x1f2073[_0x3f1f('0x30')]['sort']);_0x12836c[_0x3f1f('0x3b')]=qs['filters'](_['pick'](_0x1f2073[_0x3f1f('0x30')],_0x2b0c38[_0x3f1f('0x31')]));if(_0x1f2073[_0x3f1f('0x30')][_0x3f1f('0x3a')]){_0x12836c[_0x3f1f('0x3b')]=_[_0x3f1f('0x3c')](_0x12836c[_0x3f1f('0x3b')],{'$or':_['map'](_0x12836c[_0x3f1f('0x32')],function(_0x520251){var _0x1a1fea={};_0x1a1fea[_0x520251]={'$like':'%'+_0x1f2073[_0x3f1f('0x30')][_0x3f1f('0x3a')]+'%'};return _0x1a1fea;})});}_0x12836c=_[_0x3f1f('0x3c')]({},_0x12836c,_0x1f2073[_0x3f1f('0x44')]);return _0xed667c[_0x3f1f('0x56')](_0x12836c);}})['then'](function(_0x3ef1a5){if(_0x3ef1a5){_0x5741aa=_0x3ef1a5[_0x3f1f('0x35')];if(!_0x1f2073[_0x3f1f('0x30')]['hasOwnProperty'](_0x3f1f('0x37'))){_0x12836c[_0x3f1f('0x1d')]=qs[_0x3f1f('0x1d')](_0x1f2073[_0x3f1f('0x30')]['limit']);_0x12836c[_0x3f1f('0x1b')]=qs[_0x3f1f('0x1b')](_0x1f2073['query'][_0x3f1f('0x1b')]);}return _0xed667c['getActions'](_0x12836c);}})[_0x3f1f('0x22')](function(_0x2672e5){if(_0x2672e5){return _0x2672e5?{'count':_0x5741aa,'rows':_0x2672e5}:null;}})[_0x3f1f('0x22')](respondWithResult(_0x3bf8a8,null))[_0x3f1f('0x40')](handleError(_0x3bf8a8,null));};
\ No newline at end of file
+var _0x1d88=['addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','destroy','get','Triggers','UserProfileResource','sendStatus','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','Trigger','includeAll','include','findAll','rows','params','rawAttributes','catch','create','body','user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','getAnyConditions'];(function(_0x119888,_0x4532ce){var _0x130f56=function(_0x1a5200){while(--_0x1a5200){_0x119888['push'](_0x119888['shift']());}};_0x130f56(++_0x4532ce);}(_0x1d88,0x66));var _0x81d8=function(_0x2d7841,_0x5953e9){_0x2d7841=_0x2d7841-0x0;var _0x318c13=_0x1d88[_0x2d7841];return _0x318c13;};'use strict';var emlformat=require(_0x81d8('0x0'));var rimraf=require(_0x81d8('0x1'));var zipdir=require(_0x81d8('0x2'));var jsonpatch=require(_0x81d8('0x3'));var rp=require(_0x81d8('0x4'));var moment=require('moment');var BPromise=require(_0x81d8('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x81d8('0x6'));var sox=require(_0x81d8('0x7'));var csv=require(_0x81d8('0x8'));var ejs=require(_0x81d8('0x9'));var fs=require('fs');var fs_extra=require(_0x81d8('0xa'));var _=require(_0x81d8('0xb'));var squel=require('squel');var crypto=require(_0x81d8('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x81d8('0xd'));var toCsv=require(_0x81d8('0x8'));var querystring=require(_0x81d8('0xe'));var Papa=require(_0x81d8('0xf'));var Redis=require(_0x81d8('0x10'));var authService=require(_0x81d8('0x11'));var qs=require(_0x81d8('0x12'));var as=require(_0x81d8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x81d8('0x14'))('api');var utils=require(_0x81d8('0x15'));var config=require(_0x81d8('0x16'));var licenseUtil=require(_0x81d8('0x17'));var db=require(_0x81d8('0x18'))['db'];function respondWithStatusCode(_0x249372,_0x4f5afd){_0x4f5afd=_0x4f5afd||0xcc;return function(_0x2d8599){if(_0x2d8599){return _0x249372['sendStatus'](_0x4f5afd);}return _0x249372[_0x81d8('0x19')](_0x4f5afd)[_0x81d8('0x1a')]();};}function respondWithResult(_0x3ec7a9,_0x267254){_0x267254=_0x267254||0xc8;return function(_0x1530b6){if(_0x1530b6){return _0x3ec7a9[_0x81d8('0x19')](_0x267254)['json'](_0x1530b6);}};}function respondWithFilteredResult(_0x1775d2,_0xa0411e){return function(_0x4bd426){if(_0x4bd426){var _0x38952a=typeof _0xa0411e[_0x81d8('0x1b')]===_0x81d8('0x1c')&&typeof _0xa0411e[_0x81d8('0x1d')]==='undefined';var _0x591408=_0x4bd426[_0x81d8('0x1e')];var _0x392d1f=_0x38952a?0x0:_0xa0411e['offset'];var _0x1096c4=_0x38952a?_0x4bd426[_0x81d8('0x1e')]:_0xa0411e[_0x81d8('0x1b')]+_0xa0411e[_0x81d8('0x1d')];var _0x4cfd7f;if(_0x1096c4>=_0x591408){_0x1096c4=_0x591408;_0x4cfd7f=0xc8;}else{_0x4cfd7f=0xce;}_0x1775d2[_0x81d8('0x19')](_0x4cfd7f);return _0x1775d2[_0x81d8('0x1f')](_0x81d8('0x20'),_0x392d1f+'-'+_0x1096c4+'/'+_0x591408)[_0x81d8('0x21')](_0x4bd426);}return null;};}function patchUpdates(_0x2b4107){return function(_0x9b88d2){try{jsonpatch[_0x81d8('0x22')](_0x9b88d2,_0x2b4107,!![]);}catch(_0x5abe06){return BPromise['reject'](_0x5abe06);}return _0x9b88d2[_0x81d8('0x23')]();};}function saveUpdates(_0x26806d,_0x21e6b4){return function(_0x52d95c){if(_0x52d95c){return _0x52d95c['update'](_0x26806d)[_0x81d8('0x24')](function(_0x1b4b71){return _0x1b4b71;});}return null;};}function removeEntity(_0x19aa66,_0x176efc){return function(_0xdf8e26){if(_0xdf8e26){return _0xdf8e26[_0x81d8('0x25')]()[_0x81d8('0x24')](function(){var _0x503112=_0xdf8e26[_0x81d8('0x26')]({'plain':!![]});var _0x4e0e97=_0x81d8('0x27');return db[_0x81d8('0x28')]['destroy']({'where':{'type':_0x4e0e97,'resourceId':_0x503112['id']}})['then'](function(){return _0xdf8e26;});})[_0x81d8('0x24')](function(){_0x19aa66[_0x81d8('0x19')](0xcc)[_0x81d8('0x1a')]();});}};}function handleEntityNotFound(_0x233b96,_0x52fc98){return function(_0x323077){if(!_0x323077){_0x233b96[_0x81d8('0x29')](0x194);}return _0x323077;};}function handleError(_0x37a033,_0x285e4d){_0x285e4d=_0x285e4d||0x1f4;return function(_0x5162cf){logger[_0x81d8('0x2a')](_0x5162cf[_0x81d8('0x2b')]);if(_0x5162cf[_0x81d8('0x2c')]){delete _0x5162cf[_0x81d8('0x2c')];}_0x37a033[_0x81d8('0x19')](_0x285e4d)[_0x81d8('0x2d')](_0x5162cf);};}exports[_0x81d8('0x2e')]=function(_0x4aaf92,_0x54410d){var _0x18cb5e={},_0x494be5={},_0x536063={'count':0x0,'rows':[]};var _0x1ffe84=_[_0x81d8('0x2f')](db['Trigger']['rawAttributes'],function(_0x1d5cc1){return{'name':_0x1d5cc1[_0x81d8('0x30')],'type':_0x1d5cc1[_0x81d8('0x31')][_0x81d8('0x32')]};});_0x494be5['model']=_['map'](_0x1ffe84,'name');_0x494be5[_0x81d8('0x33')]=_[_0x81d8('0x34')](_0x4aaf92[_0x81d8('0x33')]);_0x494be5[_0x81d8('0x35')]=_[_0x81d8('0x36')](_0x494be5[_0x81d8('0x37')],_0x494be5[_0x81d8('0x33')]);_0x18cb5e[_0x81d8('0x38')]=_['intersection'](_0x494be5[_0x81d8('0x37')],qs['fields'](_0x4aaf92[_0x81d8('0x33')][_0x81d8('0x39')]));_0x18cb5e[_0x81d8('0x38')]=_0x18cb5e['attributes'][_0x81d8('0x3a')]?_0x18cb5e[_0x81d8('0x38')]:_0x494be5[_0x81d8('0x37')];if(!_0x4aaf92[_0x81d8('0x33')][_0x81d8('0x3b')](_0x81d8('0x3c'))){_0x18cb5e['limit']=qs['limit'](_0x4aaf92['query'][_0x81d8('0x1d')]);_0x18cb5e[_0x81d8('0x1b')]=qs[_0x81d8('0x1b')](_0x4aaf92[_0x81d8('0x33')][_0x81d8('0x1b')]);}_0x18cb5e[_0x81d8('0x3d')]=qs[_0x81d8('0x3e')](_0x4aaf92[_0x81d8('0x33')][_0x81d8('0x3e')]);_0x18cb5e[_0x81d8('0x3f')]=qs[_0x81d8('0x35')](_[_0x81d8('0x40')](_0x4aaf92[_0x81d8('0x33')],_0x494be5[_0x81d8('0x35')]),_0x1ffe84);if(_0x4aaf92['query']['filter']){_0x18cb5e[_0x81d8('0x3f')]=_[_0x81d8('0x41')](_0x18cb5e[_0x81d8('0x3f')],{'$or':_[_0x81d8('0x2f')](_0x1ffe84,function(_0x5c2321){if(_0x5c2321[_0x81d8('0x31')]!==_0x81d8('0x42')){var _0x46f47c={};_0x46f47c[_0x5c2321['name']]={'$like':'%'+_0x4aaf92[_0x81d8('0x33')][_0x81d8('0x43')]+'%'};return _0x46f47c;}})});}_0x18cb5e=_[_0x81d8('0x41')]({},_0x18cb5e,_0x4aaf92[_0x81d8('0x44')]);var _0x42ce55={'where':_0x18cb5e['where']};return db[_0x81d8('0x45')]['count'](_0x42ce55)[_0x81d8('0x24')](function(_0xbe53df){_0x536063[_0x81d8('0x1e')]=_0xbe53df;if(_0x4aaf92['query'][_0x81d8('0x46')]){_0x18cb5e[_0x81d8('0x47')]=[{'all':!![]}];}return db[_0x81d8('0x45')][_0x81d8('0x48')](_0x18cb5e);})[_0x81d8('0x24')](function(_0xb46966){_0x536063[_0x81d8('0x49')]=_0xb46966;return _0x536063;})['then'](respondWithFilteredResult(_0x54410d,_0x18cb5e))['catch'](handleError(_0x54410d,null));};exports['show']=function(_0x50273e,_0x19b4d0){var _0x6c3432={'raw':![],'where':{'id':_0x50273e[_0x81d8('0x4a')]['id']}},_0x31289c={};_0x31289c[_0x81d8('0x37')]=_[_0x81d8('0x34')](db[_0x81d8('0x45')][_0x81d8('0x4b')]);_0x31289c[_0x81d8('0x33')]=_[_0x81d8('0x34')](_0x50273e['query']);_0x31289c['filters']=_[_0x81d8('0x36')](_0x31289c[_0x81d8('0x37')],_0x31289c[_0x81d8('0x33')]);_0x6c3432['attributes']=_[_0x81d8('0x36')](_0x31289c[_0x81d8('0x37')],qs[_0x81d8('0x39')](_0x50273e['query']['fields']));_0x6c3432['attributes']=_0x6c3432['attributes'][_0x81d8('0x3a')]?_0x6c3432[_0x81d8('0x38')]:_0x31289c[_0x81d8('0x37')];if(_0x50273e[_0x81d8('0x33')]['includeAll']){_0x6c3432[_0x81d8('0x47')]=[{'all':!![]}];}_0x6c3432=_[_0x81d8('0x41')]({},_0x6c3432,_0x50273e['options']);return db['Trigger']['find'](_0x6c3432)[_0x81d8('0x24')](handleEntityNotFound(_0x19b4d0,null))[_0x81d8('0x24')](respondWithResult(_0x19b4d0,null))[_0x81d8('0x4c')](handleError(_0x19b4d0,null));};exports[_0x81d8('0x4d')]=function(_0x2330f8,_0x26d541){return db[_0x81d8('0x45')][_0x81d8('0x4d')](_0x2330f8[_0x81d8('0x4e')],{})[_0x81d8('0x24')](function(_0x41db60){var _0x431297=_0x2330f8[_0x81d8('0x4f')]['get']({'plain':!![]});if(!_0x431297)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x431297[_0x81d8('0x50')]===_0x81d8('0x4f')){var _0x14a4ae=_0x41db60[_0x81d8('0x26')]({'plain':!![]});var _0x19e05f='Triggers';return db[_0x81d8('0x51')][_0x81d8('0x52')]({'where':{'name':_0x19e05f,'userProfileId':_0x431297[_0x81d8('0x53')]},'raw':!![]})[_0x81d8('0x24')](function(_0xa95b1c){if(_0xa95b1c&&_0xa95b1c[_0x81d8('0x54')]===0x0){return db['UserProfileResource'][_0x81d8('0x4d')]({'name':_0x14a4ae[_0x81d8('0x2c')],'resourceId':_0x14a4ae['id'],'type':_0xa95b1c['name'],'sectionId':_0xa95b1c['id']},{})[_0x81d8('0x24')](function(){return _0x41db60;});}else{return _0x41db60;}})[_0x81d8('0x4c')](function(_0x51ca2f){logger[_0x81d8('0x2a')](_0x81d8('0x55'),_0x51ca2f);throw _0x51ca2f;});}return _0x41db60;})[_0x81d8('0x24')](respondWithResult(_0x26d541,0xc9))[_0x81d8('0x4c')](handleError(_0x26d541,null));};exports[_0x81d8('0x56')]=function(_0x4dd8fc,_0x4cfcf1){if(_0x4dd8fc['body']['id']){delete _0x4dd8fc['body']['id'];}return db[_0x81d8('0x45')][_0x81d8('0x52')]({'where':{'id':_0x4dd8fc[_0x81d8('0x4a')]['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0x4cfcf1,null))[_0x81d8('0x24')](saveUpdates(_0x4dd8fc[_0x81d8('0x4e')],null))[_0x81d8('0x24')](respondWithResult(_0x4cfcf1,null))['catch'](handleError(_0x4cfcf1,null));};exports[_0x81d8('0x25')]=function(_0x40e7c2,_0x50206e){return db[_0x81d8('0x45')]['find']({'where':{'id':_0x40e7c2['params']['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0x50206e,null))[_0x81d8('0x24')](removeEntity(_0x50206e,null))[_0x81d8('0x4c')](handleError(_0x50206e,null));};exports['addAllCondition']=function(_0x35a8b1,_0xa8c8c,_0x5b3755){if(_0x35a8b1['body']['id']){delete _0x35a8b1[_0x81d8('0x4e')]['id'];}return db[_0x81d8('0x45')][_0x81d8('0x52')]({'where':{'id':_0x35a8b1[_0x81d8('0x4a')]['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0xa8c8c,null))[_0x81d8('0x24')](function(_0x3495d9){if(_0x3495d9){_0x35a8b1['body'][_0x81d8('0x57')]=_0x3495d9['id'];return db[_0x81d8('0x58')]['create'](_0x35a8b1[_0x81d8('0x4e')]);}})['then'](respondWithResult(_0xa8c8c,null))['catch'](handleError(_0xa8c8c,null));};exports[_0x81d8('0x59')]=function(_0x383d15,_0x119f12,_0x1f71d8){if(_0x383d15[_0x81d8('0x4e')]['id']){delete _0x383d15[_0x81d8('0x4e')]['id'];}return db['Trigger'][_0x81d8('0x52')]({'where':{'id':_0x383d15[_0x81d8('0x4a')]['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0x119f12,null))[_0x81d8('0x24')](function(_0x14b505){if(_0x14b505){_0x383d15[_0x81d8('0x4e')][_0x81d8('0x5a')]=_0x14b505['id'];return db[_0x81d8('0x58')]['create'](_0x383d15[_0x81d8('0x4e')]);}})['then'](respondWithResult(_0x119f12,null))[_0x81d8('0x4c')](handleError(_0x119f12,null));};exports[_0x81d8('0x5b')]=function(_0x57e659,_0x21c9b2,_0x169d13){var _0x1fe97b={};var _0x4675b6={};var _0x39016b;var _0x2aba74;return db['Trigger'][_0x81d8('0x5c')]({'where':{'id':_0x57e659[_0x81d8('0x4a')]['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0x21c9b2,null))['then'](function(_0x304af1){if(_0x304af1){_0x39016b=_0x304af1;_0x4675b6['model']=_[_0x81d8('0x34')](db[_0x81d8('0x58')][_0x81d8('0x4b')]);_0x4675b6[_0x81d8('0x33')]=_[_0x81d8('0x34')](_0x57e659['query']);_0x4675b6[_0x81d8('0x35')]=_[_0x81d8('0x36')](_0x4675b6['model'],_0x4675b6[_0x81d8('0x33')]);_0x1fe97b[_0x81d8('0x38')]=_['intersection'](_0x4675b6['model'],qs[_0x81d8('0x39')](_0x57e659[_0x81d8('0x33')][_0x81d8('0x39')]));_0x1fe97b['attributes']=_0x1fe97b[_0x81d8('0x38')]['length']?_0x1fe97b[_0x81d8('0x38')]:_0x4675b6['model'];_0x1fe97b['order']=qs[_0x81d8('0x3e')](_0x57e659[_0x81d8('0x33')][_0x81d8('0x3e')]);_0x1fe97b[_0x81d8('0x3f')]=qs['filters'](_['pick'](_0x57e659[_0x81d8('0x33')],_0x4675b6[_0x81d8('0x35')]));if(_0x57e659[_0x81d8('0x33')][_0x81d8('0x43')]){_0x1fe97b[_0x81d8('0x3f')]=_[_0x81d8('0x41')](_0x1fe97b[_0x81d8('0x3f')],{'$or':_[_0x81d8('0x2f')](_0x1fe97b[_0x81d8('0x38')],function(_0x1727de){var _0x20ec76={};_0x20ec76[_0x1727de]={'$like':'%'+_0x57e659[_0x81d8('0x33')][_0x81d8('0x43')]+'%'};return _0x20ec76;})});}_0x1fe97b=_[_0x81d8('0x41')]({},_0x1fe97b,_0x57e659[_0x81d8('0x44')]);return _0x39016b[_0x81d8('0x5b')](_0x1fe97b);}})[_0x81d8('0x24')](function(_0x2ae8e6){if(_0x2ae8e6){_0x2aba74=_0x2ae8e6[_0x81d8('0x3a')];if(!_0x57e659['query']['hasOwnProperty']('nolimit')){_0x1fe97b[_0x81d8('0x1d')]=qs[_0x81d8('0x1d')](_0x57e659[_0x81d8('0x33')]['limit']);_0x1fe97b[_0x81d8('0x1b')]=qs[_0x81d8('0x1b')](_0x57e659[_0x81d8('0x33')]['offset']);}return _0x39016b['getAllConditions'](_0x1fe97b);}})[_0x81d8('0x24')](function(_0x5be5c5){if(_0x5be5c5){return _0x5be5c5?{'count':_0x2aba74,'rows':_0x5be5c5}:null;}})['then'](respondWithResult(_0x21c9b2,null))[_0x81d8('0x4c')](handleError(_0x21c9b2,null));};exports[_0x81d8('0x5d')]=function(_0x3d1b12,_0x4d997f,_0x3d7364){var _0x64cf24={};var _0xd1d8db={};var _0x2e51a9;var _0x2a6310;return db['Trigger']['findOne']({'where':{'id':_0x3d1b12[_0x81d8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4d997f,null))[_0x81d8('0x24')](function(_0x519531){if(_0x519531){_0x2e51a9=_0x519531;_0xd1d8db['model']=_[_0x81d8('0x34')](db['Condition'][_0x81d8('0x4b')]);_0xd1d8db[_0x81d8('0x33')]=_[_0x81d8('0x34')](_0x3d1b12[_0x81d8('0x33')]);_0xd1d8db[_0x81d8('0x35')]=_[_0x81d8('0x36')](_0xd1d8db[_0x81d8('0x37')],_0xd1d8db[_0x81d8('0x33')]);_0x64cf24[_0x81d8('0x38')]=_[_0x81d8('0x36')](_0xd1d8db[_0x81d8('0x37')],qs[_0x81d8('0x39')](_0x3d1b12[_0x81d8('0x33')]['fields']));_0x64cf24[_0x81d8('0x38')]=_0x64cf24[_0x81d8('0x38')][_0x81d8('0x3a')]?_0x64cf24[_0x81d8('0x38')]:_0xd1d8db[_0x81d8('0x37')];_0x64cf24['order']=qs[_0x81d8('0x3e')](_0x3d1b12['query'][_0x81d8('0x3e')]);_0x64cf24['where']=qs[_0x81d8('0x35')](_[_0x81d8('0x40')](_0x3d1b12[_0x81d8('0x33')],_0xd1d8db[_0x81d8('0x35')]));if(_0x3d1b12['query'][_0x81d8('0x43')]){_0x64cf24['where']=_['merge'](_0x64cf24[_0x81d8('0x3f')],{'$or':_[_0x81d8('0x2f')](_0x64cf24[_0x81d8('0x38')],function(_0x2002f8){var _0x3a2da6={};_0x3a2da6[_0x2002f8]={'$like':'%'+_0x3d1b12[_0x81d8('0x33')][_0x81d8('0x43')]+'%'};return _0x3a2da6;})});}_0x64cf24=_['merge']({},_0x64cf24,_0x3d1b12['options']);return _0x2e51a9['getAnyConditions'](_0x64cf24);}})['then'](function(_0x5188d8){if(_0x5188d8){_0x2a6310=_0x5188d8[_0x81d8('0x3a')];if(!_0x3d1b12['query'][_0x81d8('0x3b')](_0x81d8('0x3c'))){_0x64cf24[_0x81d8('0x1d')]=qs[_0x81d8('0x1d')](_0x3d1b12[_0x81d8('0x33')][_0x81d8('0x1d')]);_0x64cf24[_0x81d8('0x1b')]=qs[_0x81d8('0x1b')](_0x3d1b12[_0x81d8('0x33')]['offset']);}return _0x2e51a9[_0x81d8('0x5d')](_0x64cf24);}})[_0x81d8('0x24')](function(_0x53d6bb){if(_0x53d6bb){return _0x53d6bb?{'count':_0x2a6310,'rows':_0x53d6bb}:null;}})[_0x81d8('0x24')](respondWithResult(_0x4d997f,null))[_0x81d8('0x4c')](handleError(_0x4d997f,null));};exports[_0x81d8('0x5e')]=function(_0x33db84,_0x7a8ddd,_0x596363){if(_0x33db84[_0x81d8('0x4e')]['id']){delete _0x33db84[_0x81d8('0x4e')]['id'];}return db[_0x81d8('0x45')][_0x81d8('0x52')]({'where':{'id':_0x33db84[_0x81d8('0x4a')]['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0x7a8ddd,null))['then'](function(_0x4299b1){if(_0x4299b1){_0x33db84['body'][_0x81d8('0x5f')]=_0x4299b1['id'];return db[_0x81d8('0x60')][_0x81d8('0x4d')](_0x33db84['body']);}})['then'](respondWithResult(_0x7a8ddd,null))['catch'](handleError(_0x7a8ddd,null));};exports['getActions']=function(_0x1be94b,_0x2b2f71,_0x1cdd48){var _0x996af9={};var _0x3bd6f3={};var _0x19eb1d;var _0x13b841;return db[_0x81d8('0x45')][_0x81d8('0x5c')]({'where':{'id':_0x1be94b['params']['id']}})[_0x81d8('0x24')](handleEntityNotFound(_0x2b2f71,null))[_0x81d8('0x24')](function(_0x156747){if(_0x156747){_0x19eb1d=_0x156747;_0x3bd6f3[_0x81d8('0x37')]=_[_0x81d8('0x34')](db[_0x81d8('0x60')]['rawAttributes']);_0x3bd6f3[_0x81d8('0x33')]=_[_0x81d8('0x34')](_0x1be94b[_0x81d8('0x33')]);_0x3bd6f3[_0x81d8('0x35')]=_[_0x81d8('0x36')](_0x3bd6f3['model'],_0x3bd6f3[_0x81d8('0x33')]);_0x996af9['attributes']=_[_0x81d8('0x36')](_0x3bd6f3['model'],qs[_0x81d8('0x39')](_0x1be94b[_0x81d8('0x33')]['fields']));_0x996af9['attributes']=_0x996af9['attributes']['length']?_0x996af9['attributes']:_0x3bd6f3['model'];_0x996af9[_0x81d8('0x3d')]=qs[_0x81d8('0x3e')](_0x1be94b[_0x81d8('0x33')][_0x81d8('0x3e')]);_0x996af9[_0x81d8('0x3f')]=qs['filters'](_[_0x81d8('0x40')](_0x1be94b[_0x81d8('0x33')],_0x3bd6f3[_0x81d8('0x35')]));if(_0x1be94b[_0x81d8('0x33')][_0x81d8('0x43')]){_0x996af9[_0x81d8('0x3f')]=_[_0x81d8('0x41')](_0x996af9['where'],{'$or':_[_0x81d8('0x2f')](_0x996af9[_0x81d8('0x38')],function(_0x1cffd0){var _0x338cb3={};_0x338cb3[_0x1cffd0]={'$like':'%'+_0x1be94b[_0x81d8('0x33')]['filter']+'%'};return _0x338cb3;})});}_0x996af9=_[_0x81d8('0x41')]({},_0x996af9,_0x1be94b[_0x81d8('0x44')]);return _0x19eb1d[_0x81d8('0x61')](_0x996af9);}})['then'](function(_0x2503fe){if(_0x2503fe){_0x13b841=_0x2503fe['length'];if(!_0x1be94b[_0x81d8('0x33')][_0x81d8('0x3b')](_0x81d8('0x3c'))){_0x996af9[_0x81d8('0x1d')]=qs[_0x81d8('0x1d')](_0x1be94b[_0x81d8('0x33')]['limit']);_0x996af9[_0x81d8('0x1b')]=qs[_0x81d8('0x1b')](_0x1be94b[_0x81d8('0x33')][_0x81d8('0x1b')]);}return _0x19eb1d[_0x81d8('0x61')](_0x996af9);}})[_0x81d8('0x24')](function(_0x5f2778){if(_0x5f2778){return _0x5f2778?{'count':_0x13b841,'rows':_0x5f2778}:null;}})[_0x81d8('0x24')](respondWithResult(_0x2b2f71,null))[_0x81d8('0x4c')](handleError(_0x2b2f71,null));};
\ No newline at end of file
index 2234bfc..5badaf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28aa=['tools_triggers','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger'];(function(_0x4912ea,_0x152b5f){var _0x442a38=function(_0x3a2a21){while(--_0x3a2a21){_0x4912ea['push'](_0x4912ea['shift']());}};_0x442a38(++_0x152b5f);}(_0x28aa,0xf8));var _0xa28a=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x28aa[_0x710815];return _0x5b3b89;};'use strict';var _=require('lodash');var util=require(_0xa28a('0x0'));var logger=require(_0xa28a('0x1'))(_0xa28a('0x2'));var moment=require(_0xa28a('0x3'));var BPromise=require(_0xa28a('0x4'));var rp=require(_0xa28a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa28a('0x6'));var config=require(_0xa28a('0x7'));var attributes=require(_0xa28a('0x8'));module[_0xa28a('0x9')]=function(_0x526dec,_0x1fbde2){return _0x526dec[_0xa28a('0xa')](_0xa28a('0xb'),attributes,{'tableName':_0xa28a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe79a=['../../config/environment','./trigger.attributes','exports','define','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x5dac9d,_0x38afc0){var _0x20b375=function(_0x2f0646){while(--_0x2f0646){_0x5dac9d['push'](_0x5dac9d['shift']());}};_0x20b375(++_0x38afc0);}(_0xe79a,0x70));var _0xae79=function(_0x2077be,_0x26136a){_0x2077be=_0x2077be-0x0;var _0x198bbf=_0xe79a[_0x2077be];return _0x198bbf;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xae79('0x0'))('api');var moment=require(_0xae79('0x1'));var BPromise=require(_0xae79('0x2'));var rp=require(_0xae79('0x3'));var fs=require('fs');var path=require(_0xae79('0x4'));var rimraf=require('rimraf');var config=require(_0xae79('0x5'));var attributes=require(_0xae79('0x6'));module[_0xae79('0x7')]=function(_0x590be7,_0x1a9185){return _0x590be7[_0xae79('0x8')]('Trigger',attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d349a0..91ba542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4372=['catch','ShowTrigger','find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','Trigger,\x20%s,\x20%s','result','GetTrigger','Trigger','findAll','options','raw','attributes','limit','include','map','model','debug'];(function(_0x5d3af2,_0x17ef1d){var _0x3d903f=function(_0x2a3323){while(--_0x2a3323){_0x5d3af2['push'](_0x5d3af2['shift']());}};_0x3d903f(++_0x17ef1d);}(_0x4372,0x6f));var _0x2437=function(_0x540041,_0x388ca0){_0x540041=_0x540041-0x0;var _0x5a4898=_0x4372[_0x540041];return _0x5a4898;};'use strict';var _=require(_0x2437('0x0'));var util=require(_0x2437('0x1'));var moment=require('moment');var BPromise=require(_0x2437('0x2'));var rs=require(_0x2437('0x3'));var fs=require('fs');var Redis=require(_0x2437('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2437('0x5'));var logger=require(_0x2437('0x6'))(_0x2437('0x7'));var config=require(_0x2437('0x8'));var jayson=require(_0x2437('0x9'));var client=jayson[_0x2437('0xa')][_0x2437('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25590e,_0x435dbc,_0x53a4c0){return new BPromise(function(_0x592de8,_0x3d5048){return client['request'](_0x25590e,_0x53a4c0)[_0x2437('0xc')](function(_0x4a3ba6){logger['info']('Trigger,\x20%s,\x20%s',_0x435dbc,'request\x20sent');logger['debug'](_0x2437('0xd'),_0x435dbc,_0x2437('0xe'),JSON[_0x2437('0xf')](_0x4a3ba6));if(_0x4a3ba6[_0x2437('0x10')]){if(_0x4a3ba6[_0x2437('0x10')][_0x2437('0x11')]===0x1f4){logger[_0x2437('0x10')]('Trigger,\x20%s,\x20%s',_0x435dbc,_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);return _0x3d5048(_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);}logger[_0x2437('0x10')]('Trigger,\x20%s,\x20%s',_0x435dbc,_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);return _0x592de8(_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);}else{logger[_0x2437('0x13')](_0x2437('0x14'),_0x435dbc,_0x2437('0xe'));_0x592de8(_0x4a3ba6[_0x2437('0x15')][_0x2437('0x12')]);}})['catch'](function(_0x4d6242){logger['error'](_0x2437('0x14'),_0x435dbc,_0x4d6242);_0x3d5048(_0x4d6242);});});}exports[_0x2437('0x16')]=function(_0x4c3ffe){var _0x5cb233=this;return new Promise(function(_0x358de6,_0x328c11){return db[_0x2437('0x17')][_0x2437('0x18')]({'raw':_0x4c3ffe[_0x2437('0x19')]?_0x4c3ffe[_0x2437('0x19')][_0x2437('0x1a')]===undefined?!![]:![]:!![],'where':_0x4c3ffe['options']?_0x4c3ffe[_0x2437('0x19')]['where']||null:null,'attributes':_0x4c3ffe['options']?_0x4c3ffe[_0x2437('0x19')][_0x2437('0x1b')]||null:null,'limit':_0x4c3ffe[_0x2437('0x19')]?_0x4c3ffe['options'][_0x2437('0x1c')]||null:null,'include':_0x4c3ffe[_0x2437('0x19')]?_0x4c3ffe[_0x2437('0x19')][_0x2437('0x1d')]?_[_0x2437('0x1e')](_0x4c3ffe[_0x2437('0x19')]['include'],function(_0x5401a1){return{'model':db[_0x5401a1[_0x2437('0x1f')]],'as':_0x5401a1['as'],'attributes':_0x5401a1[_0x2437('0x1b')],'include':_0x5401a1[_0x2437('0x1d')]?_[_0x2437('0x1e')](_0x5401a1[_0x2437('0x1d')],function(_0x2b8aa1){return{'model':db[_0x2b8aa1[_0x2437('0x1f')]],'as':_0x2b8aa1['as'],'attributes':_0x2b8aa1['attributes'],'include':_0x2b8aa1[_0x2437('0x1d')]?_['map'](_0x2b8aa1['include'],function(_0x34199e){return{'model':db[_0x34199e[_0x2437('0x1f')]],'as':_0x34199e['as'],'attributes':_0x34199e[_0x2437('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2437('0xc')](function(_0x2c9ff2){logger[_0x2437('0x13')](_0x2437('0x16'),_0x4c3ffe);logger[_0x2437('0x20')]('GetTrigger',_0x4c3ffe,JSON[_0x2437('0xf')](_0x2c9ff2));_0x358de6(_0x2c9ff2);})[_0x2437('0x21')](function(_0x51606e){logger[_0x2437('0x10')]('GetTrigger',_0x51606e[_0x2437('0x12')],_0x4c3ffe);_0x328c11(_0x5cb233['error'](0x1f4,_0x51606e[_0x2437('0x12')]));});});};exports[_0x2437('0x22')]=function(_0x2a32d7){var _0x55e097=this;return new Promise(function(_0x43ac1c,_0x1751aa){return db[_0x2437('0x17')][_0x2437('0x23')]({'raw':_0x2a32d7[_0x2437('0x19')]?_0x2a32d7[_0x2437('0x19')][_0x2437('0x1a')]===undefined?!![]:![]:!![],'where':_0x2a32d7['options']?_0x2a32d7[_0x2437('0x19')]['where']||null:null,'attributes':_0x2a32d7['options']?_0x2a32d7['options']['attributes']||null:null,'include':_0x2a32d7[_0x2437('0x19')]?_0x2a32d7[_0x2437('0x19')]['include']?_[_0x2437('0x1e')](_0x2a32d7['options']['include'],function(_0x5764a7){return{'model':db[_0x5764a7[_0x2437('0x1f')]],'as':_0x5764a7['as'],'attributes':_0x5764a7[_0x2437('0x1b')],'include':_0x5764a7[_0x2437('0x1d')]?_[_0x2437('0x1e')](_0x5764a7[_0x2437('0x1d')],function(_0x1c91d1){return{'model':db[_0x1c91d1[_0x2437('0x1f')]],'as':_0x1c91d1['as'],'attributes':_0x1c91d1[_0x2437('0x1b')],'include':_0x1c91d1['include']?_[_0x2437('0x1e')](_0x1c91d1['include'],function(_0x37e36e){return{'model':db[_0x37e36e[_0x2437('0x1f')]],'as':_0x37e36e['as'],'attributes':_0x37e36e[_0x2437('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2437('0xc')](function(_0x6215bd){logger[_0x2437('0x13')](_0x2437('0x22'),_0x2a32d7);logger[_0x2437('0x20')](_0x2437('0x22'),_0x2a32d7,JSON[_0x2437('0xf')](_0x6215bd));_0x43ac1c(_0x6215bd);})['catch'](function(_0x48445b){logger['error'](_0x2437('0x22'),_0x48445b[_0x2437('0x12')],_0x2a32d7);_0x1751aa(_0x55e097[_0x2437('0x10')](0x1f4,_0x48445b[_0x2437('0x12')]));});});};
\ No newline at end of file
+var _0xa343=['Trigger,\x20%s,\x20%s,\x20%s','stringify','error','Trigger,\x20%s,\x20%s','message','result','GetTrigger','Trigger','findAll','options','raw','where','attributes','limit','include','model','map','then','catch','ShowTrigger','find','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug'];(function(_0x15fe6b,_0x2b47dc){var _0x2b6c58=function(_0x26f321){while(--_0x26f321){_0x15fe6b['push'](_0x15fe6b['shift']());}};_0x2b6c58(++_0x2b47dc);}(_0xa343,0xa1));var _0x3a34=function(_0x5c1dbe,_0x1e32d9){_0x5c1dbe=_0x5c1dbe-0x0;var _0x5c037d=_0xa343[_0x5c1dbe];return _0x5c037d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3a34('0x0'));var BPromise=require('bluebird');var rs=require(_0x3a34('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3a34('0x2'))['db'];var utils=require(_0x3a34('0x3'));var logger=require(_0x3a34('0x4'))(_0x3a34('0x5'));var config=require(_0x3a34('0x6'));var jayson=require(_0x3a34('0x7'));var client=jayson[_0x3a34('0x8')][_0x3a34('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b44a5,_0x34adc4,_0x4ed4f2){return new BPromise(function(_0x36613b,_0x51f768){return client[_0x3a34('0xa')](_0x2b44a5,_0x4ed4f2)['then'](function(_0x47a3e1){logger[_0x3a34('0xb')]('Trigger,\x20%s,\x20%s',_0x34adc4,_0x3a34('0xc'));logger[_0x3a34('0xd')](_0x3a34('0xe'),_0x34adc4,_0x3a34('0xc'),JSON[_0x3a34('0xf')](_0x47a3e1));if(_0x47a3e1['error']){if(_0x47a3e1[_0x3a34('0x10')]['code']===0x1f4){logger['error'](_0x3a34('0x11'),_0x34adc4,_0x47a3e1['error']['message']);return _0x51f768(_0x47a3e1[_0x3a34('0x10')][_0x3a34('0x12')]);}logger[_0x3a34('0x10')](_0x3a34('0x11'),_0x34adc4,_0x47a3e1[_0x3a34('0x10')][_0x3a34('0x12')]);return _0x36613b(_0x47a3e1[_0x3a34('0x10')][_0x3a34('0x12')]);}else{logger[_0x3a34('0xb')]('Trigger,\x20%s,\x20%s',_0x34adc4,_0x3a34('0xc'));_0x36613b(_0x47a3e1[_0x3a34('0x13')][_0x3a34('0x12')]);}})['catch'](function(_0x4701f4){logger[_0x3a34('0x10')]('Trigger,\x20%s,\x20%s',_0x34adc4,_0x4701f4);_0x51f768(_0x4701f4);});});}exports[_0x3a34('0x14')]=function(_0x3ca0a2){var _0x4d6d89=this;return new Promise(function(_0x300263,_0x3e1f7b){return db[_0x3a34('0x15')][_0x3a34('0x16')]({'raw':_0x3ca0a2['options']?_0x3ca0a2[_0x3a34('0x17')][_0x3a34('0x18')]===undefined?!![]:![]:!![],'where':_0x3ca0a2[_0x3a34('0x17')]?_0x3ca0a2[_0x3a34('0x17')][_0x3a34('0x19')]||null:null,'attributes':_0x3ca0a2[_0x3a34('0x17')]?_0x3ca0a2[_0x3a34('0x17')][_0x3a34('0x1a')]||null:null,'limit':_0x3ca0a2[_0x3a34('0x17')]?_0x3ca0a2[_0x3a34('0x17')][_0x3a34('0x1b')]||null:null,'include':_0x3ca0a2[_0x3a34('0x17')]?_0x3ca0a2[_0x3a34('0x17')][_0x3a34('0x1c')]?_['map'](_0x3ca0a2[_0x3a34('0x17')][_0x3a34('0x1c')],function(_0x22a51d){return{'model':db[_0x22a51d[_0x3a34('0x1d')]],'as':_0x22a51d['as'],'attributes':_0x22a51d[_0x3a34('0x1a')],'include':_0x22a51d[_0x3a34('0x1c')]?_[_0x3a34('0x1e')](_0x22a51d[_0x3a34('0x1c')],function(_0x4fa837){return{'model':db[_0x4fa837[_0x3a34('0x1d')]],'as':_0x4fa837['as'],'attributes':_0x4fa837[_0x3a34('0x1a')],'include':_0x4fa837[_0x3a34('0x1c')]?_[_0x3a34('0x1e')](_0x4fa837['include'],function(_0x1e7bba){return{'model':db[_0x1e7bba[_0x3a34('0x1d')]],'as':_0x1e7bba['as'],'attributes':_0x1e7bba[_0x3a34('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3a34('0x1f')](function(_0x13df68){logger[_0x3a34('0xb')]('GetTrigger',_0x3ca0a2);logger['debug']('GetTrigger',_0x3ca0a2,JSON['stringify'](_0x13df68));_0x300263(_0x13df68);})[_0x3a34('0x20')](function(_0x18aeac){logger[_0x3a34('0x10')]('GetTrigger',_0x18aeac['message'],_0x3ca0a2);_0x3e1f7b(_0x4d6d89[_0x3a34('0x10')](0x1f4,_0x18aeac[_0x3a34('0x12')]));});});};exports[_0x3a34('0x21')]=function(_0x585fbc){var _0x396c14=this;return new Promise(function(_0x39c43b,_0x3268eb){return db[_0x3a34('0x15')][_0x3a34('0x22')]({'raw':_0x585fbc['options']?_0x585fbc[_0x3a34('0x17')][_0x3a34('0x18')]===undefined?!![]:![]:!![],'where':_0x585fbc[_0x3a34('0x17')]?_0x585fbc['options']['where']||null:null,'attributes':_0x585fbc['options']?_0x585fbc[_0x3a34('0x17')][_0x3a34('0x1a')]||null:null,'include':_0x585fbc[_0x3a34('0x17')]?_0x585fbc[_0x3a34('0x17')][_0x3a34('0x1c')]?_[_0x3a34('0x1e')](_0x585fbc[_0x3a34('0x17')][_0x3a34('0x1c')],function(_0x34c572){return{'model':db[_0x34c572[_0x3a34('0x1d')]],'as':_0x34c572['as'],'attributes':_0x34c572[_0x3a34('0x1a')],'include':_0x34c572[_0x3a34('0x1c')]?_[_0x3a34('0x1e')](_0x34c572[_0x3a34('0x1c')],function(_0x4796fb){return{'model':db[_0x4796fb[_0x3a34('0x1d')]],'as':_0x4796fb['as'],'attributes':_0x4796fb['attributes'],'include':_0x4796fb[_0x3a34('0x1c')]?_[_0x3a34('0x1e')](_0x4796fb[_0x3a34('0x1c')],function(_0xb65fd7){return{'model':db[_0xb65fd7[_0x3a34('0x1d')]],'as':_0xb65fd7['as'],'attributes':_0xb65fd7['attributes']};}):[]};}):[]};}):[]:[]})[_0x3a34('0x1f')](function(_0x1e9840){logger[_0x3a34('0xb')](_0x3a34('0x21'),_0x585fbc);logger[_0x3a34('0xd')](_0x3a34('0x21'),_0x585fbc,JSON[_0x3a34('0xf')](_0x1e9840));_0x39c43b(_0x1e9840);})[_0x3a34('0x20')](function(_0x26351a){logger['error']('ShowTrigger',_0x26351a[_0x3a34('0x12')],_0x585fbc);_0x3268eb(_0x396c14[_0x3a34('0x10')](0x1f4,_0x26351a[_0x3a34('0x12')]));});});};
\ No newline at end of file
index 9038073..3708956 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedf8=['post','/:id/clone','clone','create','put','update','delete','/:id','destroy','util','path','Router','../../components/auth/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','show'];(function(_0x1800c3,_0x43bc0b){var _0x51c575=function(_0x3e0ee1){while(--_0x3e0ee1){_0x1800c3['push'](_0x1800c3['shift']());}};_0x51c575(++_0x43bc0b);}(_0xedf8,0x8e));var _0x8edf=function(_0x11ed76,_0x4436cf){_0x11ed76=_0x11ed76-0x0;var _0x33b552=_0xedf8[_0x11ed76];return _0x33b552;};'use strict';var multer=require('multer');var util=require(_0x8edf('0x0'));var path=require(_0x8edf('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8edf('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x8edf('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x8edf('0x4'));var controller=require(_0x8edf('0x5'));router[_0x8edf('0x6')]('/',auth[_0x8edf('0x7')](),controller[_0x8edf('0x8')]);router[_0x8edf('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x8edf('0x9')]);router[_0x8edf('0xa')](_0x8edf('0xb'),auth[_0x8edf('0x7')](),controller[_0x8edf('0xc')]);router[_0x8edf('0xa')]('/',auth['isAuthenticated'](),controller[_0x8edf('0xd')]);router[_0x8edf('0xe')]('/:id',auth[_0x8edf('0x7')](),controller[_0x8edf('0xf')]);router[_0x8edf('0x10')](_0x8edf('0x11'),auth['isAuthenticated'](),controller[_0x8edf('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x33bb=['clone','post','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller','get','/:id','isAuthenticated','show','/:id/clone'];(function(_0x1a18fe,_0x4677d3){var _0x3cb0bf=function(_0x489b03){while(--_0x489b03){_0x1a18fe['push'](_0x1a18fe['shift']());}};_0x3cb0bf(++_0x4677d3);}(_0x33bb,0x15c));var _0xb33b=function(_0x55854e,_0x1b6e58){_0x55854e=_0x55854e-0x0;var _0x4a43fa=_0x33bb[_0x55854e];return _0x4a43fa;};'use strict';var multer=require(_0xb33b('0x0'));var util=require(_0xb33b('0x1'));var path=require(_0xb33b('0x2'));var timeout=require(_0xb33b('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb33b('0x4'));var auth=require(_0xb33b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb33b('0x6'));var controller=require(_0xb33b('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb33b('0x8')](_0xb33b('0x9'),auth[_0xb33b('0xa')](),controller[_0xb33b('0xb')]);router['post'](_0xb33b('0xc'),auth['isAuthenticated'](),controller[_0xb33b('0xd')]);router[_0xb33b('0xe')]('/',auth[_0xb33b('0xa')](),controller['create']);router[_0xb33b('0xf')](_0xb33b('0x9'),auth[_0xb33b('0xa')](),controller['update']);router[_0xb33b('0x10')](_0xb33b('0x9'),auth[_0xb33b('0xa')](),controller[_0xb33b('0x11')]);module[_0xb33b('0x12')]=router;
\ No newline at end of file
index 084bba2..18a2b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ab=['outgoing','nat','join','getDataValue','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','always','refuse','uac','uas','pai','fingerprint','certificate','active','passive','actpass','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','split','rfc2833','shortinfo','auto','yes','nonat','update'];(function(_0x3fc79d,_0x559146){var _0x246b07=function(_0x3e05b7){while(--_0x3e05b7){_0x3fc79d['push'](_0x3fc79d['shift']());}};_0x246b07(++_0x559146);}(_0x48ab,0x17d));var _0xb48a=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x48ab[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0xb48a('0x0'));module[_0xb48a('0x1')]={'name':{'type':Sequelize[_0xb48a('0x2')],'allowNull':![],'unique':_0xb48a('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x5'),_0xb48a('0x6'),_0xb48a('0x7')),'allowNull':![],'defaultValue':_0xb48a('0x5')},'context':{'type':Sequelize[_0xb48a('0x2')],'allowNull':![],'defaultValue':_0xb48a('0x8')},'callingpres':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x9'),_0xb48a('0xa'),_0xb48a('0xb'),_0xb48a('0xc'),_0xb48a('0xd'),_0xb48a('0xe'),_0xb48a('0xf'),_0xb48a('0x10'))},'deny':{'type':Sequelize[_0xb48a('0x2')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xb48a('0x2')]},'md5secret':{'type':Sequelize[_0xb48a('0x2')]},'remotesecret':{'type':Sequelize[_0xb48a('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xb48a('0x11'),'set':function(_0x36742c){this[_0xb48a('0x12')]('transport',_0x36742c?_0x36742c['join'](','):null);},'get':function(){return this['getDataValue'](_0xb48a('0x13'))?this['getDataValue'](_0xb48a('0x13'))[_0xb48a('0x14')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x15'),'info',_0xb48a('0x16'),'inband',_0xb48a('0x17')),'defaultValue':_0xb48a('0x15')},'directmedia':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no',_0xb48a('0x19'),_0xb48a('0x1a'),_0xb48a('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xb48a('0x4')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xb48a('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x2d7ede){this[_0xb48a('0x12')](_0xb48a('0x1c'),_0x2d7ede?_0x2d7ede[_0xb48a('0x1d')](','):null);},'get':function(){return this['getDataValue'](_0xb48a('0x1c'))?this[_0xb48a('0x1e')](_0xb48a('0x1c'))[_0xb48a('0x14')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xb48a('0x2')]},'namedcallgroup':{'type':Sequelize[_0xb48a('0x2')]},'pickupgroup':{'type':Sequelize[_0xb48a('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xb48a('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0xb48a('0x2')],'allowNull':![],'defaultValue':_0xb48a('0x1f'),'set':function(_0x24dc94){this[_0xb48a('0x12')](_0xb48a('0x20'),_0x24dc94?_0x24dc94['join'](';'):_0xb48a('0x1f'));},'get':function(){return this[_0xb48a('0x1e')](_0xb48a('0x20'))?this[_0xb48a('0x1e')](_0xb48a('0x20'))[_0xb48a('0x14')](';'):null;},'comment':_0xb48a('0x21')},'autoframing':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'insecure':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':_0xb48a('0x22'),'set':function(_0x27748c){this['setDataValue']('insecure',_0x27748c?_0x27748c[_0xb48a('0x1d')](','):null);},'get':function(){return this[_0xb48a('0x1e')]('insecure')?this[_0xb48a('0x1e')](_0xb48a('0x23'))[_0xb48a('0x14')](','):null;},'comment':_0xb48a('0x24')},'trustrpid':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xb48a('0x4')]('yes','no',_0xb48a('0x25'))},'promiscredir':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'useclientcode':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xb48a('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xb48a('0x2')]},'callcounter':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':_0xb48a('0x18')},'busylevel':{'type':Sequelize[_0xb48a('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no')},'subscribecontext':{'type':Sequelize[_0xb48a('0x2')]},'template':{'type':Sequelize[_0xb48a('0x2')]},'videosupport':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no',_0xb48a('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xb48a('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xb48a('0x4')]('accept',_0xb48a('0x28'),'originate')},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0xb48a('0x26')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xb48a('0x29'),_0xb48a('0x2a')),'defaultValue':_0xb48a('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0xb48a('0x2')]},'regexten':{'type':Sequelize[_0xb48a('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xb48a('0x2')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xb48a('0x4')]('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xb48a('0x26')](0xb)},'defaultip':{'type':Sequelize[_0xb48a('0x2')]},'defaultuser':{'type':Sequelize[_0xb48a('0x2')]},'rtptimeout':{'type':Sequelize[_0xb48a('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xb48a('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no',_0xb48a('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xb48a('0x2')]},'callbackextension':{'type':Sequelize[_0xb48a('0x2')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0xb48a('0x26')](0xb)},'qualifyfreq':{'type':Sequelize[_0xb48a('0x26')](0xb)},'contactpermit':{'type':Sequelize[_0xb48a('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0xb48a('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xb48a('0x2')]},'use_q850_reason':{'type':Sequelize[_0xb48a('0x2')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no')},'icesupport':{'type':Sequelize[_0xb48a('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0xb48a('0x2c'),_0xb48a('0x2d'))},'dtlsrekey':{'type':Sequelize[_0xb48a('0x26')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0xb48a('0x2')]},'dtlscipher':{'type':Sequelize[_0xb48a('0x2')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xb48a('0x2')]},'dtlssetup':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x2e'),_0xb48a('0x2f'),_0xb48a('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xb48a('0x2')]},'usereqphone':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xb48a('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'vmexten':{'type':Sequelize[_0xb48a('0x2')]},'mohinterpret':{'type':Sequelize[_0xb48a('0x2')]},'mohsuggest':{'type':Sequelize[_0xb48a('0x2')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb48a('0x2')]},'host':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no',_0xb48a('0x19'),'update',_0xb48a('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xb48a('0x2')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xb48a('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xaa1e=['nonat','update,nonat','BOOLEAN','exports','name','ENUM','friend','user','peer','STRING','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','udp','setDataValue','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','update','outgoing','yes','force_rport,comedia','nat','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','INTEGER','accept','refuse','originate','uac','uas','pai','certificate','active'];(function(_0x28509b,_0x5831ff){var _0x1e0b6=function(_0x37d8a2){while(--_0x37d8a2){_0x28509b['push'](_0x28509b['shift']());}};_0x1e0b6(++_0x5831ff);}(_0xaa1e,0x1ed));var _0xeaa1=function(_0x2c1841,_0x505204){_0x2c1841=_0x2c1841-0x0;var _0x28d148=_0xaa1e[_0x2c1841];return _0x28d148;};'use strict';var Sequelize=require('sequelize');module[_0xeaa1('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xeaa1('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x3'),_0xeaa1('0x4'),_0xeaa1('0x5')),'allowNull':![],'defaultValue':_0xeaa1('0x3')},'context':{'type':Sequelize[_0xeaa1('0x6')],'allowNull':![],'defaultValue':_0xeaa1('0x7')},'callingpres':{'type':Sequelize[_0xeaa1('0x2')]('ALLOWED_NOT_SCREENED',_0xeaa1('0x8'),_0xeaa1('0x9'),_0xeaa1('0xa'),_0xeaa1('0xb'),'PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB')},'deny':{'type':Sequelize[_0xeaa1('0x6')]},'permit':{'type':Sequelize[_0xeaa1('0x6')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0xeaa1('0x6')]},'remotesecret':{'type':Sequelize[_0xeaa1('0x6')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xeaa1('0xc'),'set':function(_0x2d4c16){this[_0xeaa1('0xd')](_0xeaa1('0xe'),_0x2d4c16?_0x2d4c16[_0xeaa1('0xf')](','):null);},'get':function(){return this['getDataValue'](_0xeaa1('0xe'))?this['getDataValue'](_0xeaa1('0xe'))[_0xeaa1('0x10')](','):null;},'comment':_0xeaa1('0x11')},'dtmfmode':{'type':Sequelize['ENUM'](_0xeaa1('0x12'),_0xeaa1('0x13'),_0xeaa1('0x14'),_0xeaa1('0x15'),_0xeaa1('0x16')),'defaultValue':_0xeaa1('0x12')},'directmedia':{'type':Sequelize[_0xeaa1('0x2')]('yes','no','nonat',_0xeaa1('0x17'),_0xeaa1('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xeaa1('0x6')]},'directmediadeny':{'type':Sequelize[_0xeaa1('0x6')]},'nat':{'type':Sequelize[_0xeaa1('0x6')],'defaultValue':_0xeaa1('0x1a'),'set':function(_0x14c844){this['setDataValue'](_0xeaa1('0x1b'),_0x14c844?_0x14c844[_0xeaa1('0xf')](','):null);},'get':function(){return this[_0xeaa1('0x1c')](_0xeaa1('0x1b'))?this[_0xeaa1('0x1c')](_0xeaa1('0x1b'))[_0xeaa1('0x10')](','):null;},'comment':_0xeaa1('0x1d')},'callgroup':{'type':Sequelize[_0xeaa1('0x6')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xeaa1('0x6')]},'namedpickupgroup':{'type':Sequelize[_0xeaa1('0x6')]},'language':{'type':Sequelize[_0xeaa1('0x6')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xeaa1('0x6')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xeaa1('0x6')],'defaultValue':_0xeaa1('0x1e')},'allow':{'type':Sequelize[_0xeaa1('0x6')],'allowNull':![],'defaultValue':_0xeaa1('0x1f'),'set':function(_0x32f396){this[_0xeaa1('0xd')](_0xeaa1('0x20'),_0x32f396?_0x32f396[_0xeaa1('0xf')](';'):_0xeaa1('0x1f'));},'get':function(){return this[_0xeaa1('0x1c')](_0xeaa1('0x20'))?this['getDataValue'](_0xeaa1('0x20'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0xeaa1('0x19'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0xeaa1('0x21'),'set':function(_0x169974){this['setDataValue'](_0xeaa1('0x22'),_0x169974?_0x169974[_0xeaa1('0xf')](','):null);},'get':function(){return this[_0xeaa1('0x1c')](_0xeaa1('0x22'))?this[_0xeaa1('0x1c')](_0xeaa1('0x22'))[_0xeaa1('0x10')](','):null;},'comment':_0xeaa1('0x23')},'trustrpid':{'type':Sequelize[_0xeaa1('0x2')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeaa1('0x2')]('yes','no','never')},'promiscredir':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'useclientcode':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xeaa1('0x24')},'amaflags':{'type':Sequelize[_0xeaa1('0x6')]},'callcounter':{'type':Sequelize[_0xeaa1('0x2')]('yes','no'),'defaultValue':_0xeaa1('0x19')},'busylevel':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0xeaa1('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0xeaa1('0x2')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0xeaa1('0x6')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'mailbox':{'type':Sequelize[_0xeaa1('0x6')]},'session_timers':{'type':Sequelize['ENUM'](_0xeaa1('0x26'),_0xeaa1('0x27'),_0xeaa1('0x28'))},'session_expires':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'session_minse':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'session_refresher':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x29'),_0xeaa1('0x2a')),'defaultValue':_0xeaa1('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0xeaa1('0x6')]},'regexten':{'type':Sequelize[_0xeaa1('0x6')]},'fromdomain':{'type':Sequelize[_0xeaa1('0x6')]},'fromuser':{'type':Sequelize[_0xeaa1('0x6')]},'port':{'type':Sequelize[_0xeaa1('0x25')](0x5)},'qualify':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no'),'defaultValue':_0xeaa1('0x19')},'keepalive':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'defaultip':{'type':Sequelize[_0xeaa1('0x6')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'sendrpid':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no',_0xeaa1('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeaa1('0x6')]},'callbackextension':{'type':Sequelize[_0xeaa1('0x6')]},'timert1':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'timerb':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xeaa1('0x6')]},'contactacl':{'type':Sequelize[_0xeaa1('0x6')]},'unsolicited_mailbox':{'type':Sequelize[_0xeaa1('0x6')]},'use_q850_reason':{'type':Sequelize[_0xeaa1('0x6')]},'maxforwards':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0xeaa1('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'force_avp':{'type':Sequelize[_0xeaa1('0x2')]('yes','no')},'icesupport':{'type':Sequelize['ENUM'](_0xeaa1('0x19'),'no')},'dtlsenable':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0xeaa1('0x19'),'no','fingerprint',_0xeaa1('0x2c'))},'dtlsrekey':{'type':Sequelize[_0xeaa1('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0xeaa1('0x6')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xeaa1('0x6')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x2d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xeaa1('0x6')]},'recordofffeature':{'type':Sequelize[_0xeaa1('0x6')]},'call_limit':{'type':Sequelize[_0xeaa1('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no')},'vmexten':{'type':Sequelize[_0xeaa1('0x6')]},'mohinterpret':{'type':Sequelize[_0xeaa1('0x6')]},'mohsuggest':{'type':Sequelize[_0xeaa1('0x6')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xeaa1('0x6')]},'host':{'type':Sequelize[_0xeaa1('0x6')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xeaa1('0x2')](_0xeaa1('0x19'),'no',_0xeaa1('0x2e'),_0xeaa1('0x17'),_0xeaa1('0x2f')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xeaa1('0x6')]},'otherFields':{'type':Sequelize[_0xeaa1('0x6')]},'active':{'type':Sequelize[_0xeaa1('0x30')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index e0e6eaf..159750f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['server/files/templates/registry.ejs','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','reject','update','destroy','get','UserProfileResource','end','name','send','map','Trunk','fieldName','type','key','query','intersection','model','attributes','fields','length','order','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','keys','rawAttributes','find','createdAt','updatedAt','body','create','user','UserProfileSection','userProfileId','autoAssociation','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','Trunks','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload'];(function(_0x35ded5,_0x4cd999){var _0x1bd1ee=function(_0xae2c9c){while(--_0xae2c9c){_0x35ded5['push'](_0x35ded5['shift']());}};_0x1bd1ee(++_0x4cd999);}(_0xa41a,0x6b));var _0xaa41=function(_0x364fc2,_0x5bf312){_0x364fc2=_0x364fc2-0x0;var _0x2b1f34=_0xa41a[_0x364fc2];return _0x2b1f34;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0xaa41('0x19'));var client=jayson['client'][_0xaa41('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x12d9e6,_0x2f64bc,_0x889d44,_0x6f9ade){return new BPromise(function(_0x4eaf81,_0x1e9d7f){var _0x178170=_0x6f9ade||client;return _0x178170[_0xaa41('0x1b')](_0x12d9e6,_0x889d44)[_0xaa41('0x1c')](function(_0x2a6988){logger[_0xaa41('0x1d')](_0xaa41('0x1e'),_0x2f64bc,'request\x20sent');logger[_0xaa41('0x1f')](_0xaa41('0x20'),_0x2f64bc,_0xaa41('0x21'),JSON[_0xaa41('0x22')](_0x2a6988));if(_0x2a6988[_0xaa41('0x23')]){if(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x24')]===0x1f4){logger[_0xaa41('0x23')](_0xaa41('0x1e'),_0x2f64bc,_0x2a6988['error']['message']);return _0x1e9d7f(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);}logger[_0xaa41('0x23')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);return _0x4eaf81(_0x2a6988['error']['message']);}else{logger[_0xaa41('0x1d')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0xaa41('0x21'));_0x4eaf81(_0x2a6988[_0xaa41('0x26')][_0xaa41('0x25')]);}})[_0xaa41('0x27')](function(_0x1d623c){logger['error'](_0xaa41('0x1e'),_0x2f64bc,_0x1d623c);_0x1e9d7f(_0x1d623c);});});}function respondWithStatusCode(_0x43a85c,_0x448a21){_0x448a21=_0x448a21||0xcc;return function(_0x21f596){if(_0x21f596){return _0x43a85c[_0xaa41('0x28')](_0x448a21);}return _0x43a85c[_0xaa41('0x29')](_0x448a21)['end']();};}function respondWithResult(_0x5795f4,_0x16aec5){_0x16aec5=_0x16aec5||0xc8;return function(_0x527cac){if(_0x527cac){return _0x5795f4['status'](_0x16aec5)[_0xaa41('0x2a')](_0x527cac);}};}function respondWithFilteredResult(_0x59707f,_0x536bed){return function(_0x2d0ac0){if(_0x2d0ac0){var _0x9c8c21=typeof _0x536bed[_0xaa41('0x2b')]===_0xaa41('0x2c')&&typeof _0x536bed[_0xaa41('0x2d')]===_0xaa41('0x2c');var _0x57ef96=_0x2d0ac0[_0xaa41('0x2e')];var _0x1f0275=_0x9c8c21?0x0:_0x536bed[_0xaa41('0x2b')];var _0x9a16e3=_0x9c8c21?_0x2d0ac0[_0xaa41('0x2e')]:_0x536bed[_0xaa41('0x2b')]+_0x536bed[_0xaa41('0x2d')];var _0x104a95;if(_0x9a16e3>=_0x57ef96){_0x9a16e3=_0x57ef96;_0x104a95=0xc8;}else{_0x104a95=0xce;}_0x59707f['status'](_0x104a95);return _0x59707f[_0xaa41('0x2f')]('Content-Range',_0x1f0275+'-'+_0x9a16e3+'/'+_0x57ef96)['json'](_0x2d0ac0);}return null;};}function patchUpdates(_0x714537){return function(_0x1176bd){try{jsonpatch['apply'](_0x1176bd,_0x714537,!![]);}catch(_0x392b5d){return BPromise[_0xaa41('0x30')](_0x392b5d);}return _0x1176bd['save']();};}function saveUpdates(_0x5022fb,_0x5c25fb){return function(_0x1cf3da){if(_0x1cf3da){return _0x1cf3da[_0xaa41('0x31')](_0x5022fb)[_0xaa41('0x1c')](function(_0x38afc4){return _0x38afc4;});}return null;};}function removeEntity(_0x58f203,_0x289c4a){return function(_0x45c8fe){if(_0x45c8fe){return _0x45c8fe[_0xaa41('0x32')]()['then'](function(){var _0x387c55=_0x45c8fe[_0xaa41('0x33')]({'plain':!![]});var _0x321eb7='Trunks';return db[_0xaa41('0x34')][_0xaa41('0x32')]({'where':{'type':_0x321eb7,'resourceId':_0x387c55['id']}})['then'](function(){return _0x45c8fe;});})[_0xaa41('0x1c')](function(){_0x58f203[_0xaa41('0x29')](0xcc)[_0xaa41('0x35')]();});}};}function handleEntityNotFound(_0x5cec87,_0x22b272){return function(_0x48335f){if(!_0x48335f){_0x5cec87[_0xaa41('0x28')](0x194);}return _0x48335f;};}function handleError(_0x199b24,_0xf13742){_0xf13742=_0xf13742||0x1f4;return function(_0x49b77a){logger['error'](_0x49b77a['stack']);if(_0x49b77a[_0xaa41('0x36')]){delete _0x49b77a[_0xaa41('0x36')];}_0x199b24[_0xaa41('0x29')](_0xf13742)[_0xaa41('0x37')](_0x49b77a);};}exports['index']=function(_0x53a2e4,_0x267999){var _0x5673c={},_0x951e52={},_0x4e8d2e={'count':0x0,'rows':[]};var _0xba115a=_[_0xaa41('0x38')](db[_0xaa41('0x39')]['rawAttributes'],function(_0x3adc28){return{'name':_0x3adc28[_0xaa41('0x3a')],'type':_0x3adc28[_0xaa41('0x3b')][_0xaa41('0x3c')]};});_0x951e52['model']=_['map'](_0xba115a,_0xaa41('0x36'));_0x951e52[_0xaa41('0x3d')]=_['keys'](_0x53a2e4[_0xaa41('0x3d')]);_0x951e52['filters']=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],_0x951e52[_0xaa41('0x3d')]);_0x5673c[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x53a2e4[_0xaa41('0x3d')]['fields']));_0x5673c[_0xaa41('0x40')]=_0x5673c[_0xaa41('0x40')][_0xaa41('0x42')]?_0x5673c[_0xaa41('0x40')]:_0x951e52[_0xaa41('0x3f')];if(!_0x53a2e4[_0xaa41('0x3d')]['hasOwnProperty']('nolimit')){_0x5673c[_0xaa41('0x2d')]=qs['limit'](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2d')]);_0x5673c[_0xaa41('0x2b')]=qs[_0xaa41('0x2b')](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2b')]);}_0x5673c[_0xaa41('0x43')]=qs['sort'](_0x53a2e4[_0xaa41('0x3d')]['sort']);_0x5673c['where']=qs[_0xaa41('0x44')](_['pick'](_0x53a2e4['query'],_0x951e52['filters']),_0xba115a);if(_0x53a2e4[_0xaa41('0x3d')]['filter']){_0x5673c[_0xaa41('0x45')]=_[_0xaa41('0x46')](_0x5673c['where'],{'$or':_['map'](_0xba115a,function(_0xe58f5e){if(_0xe58f5e[_0xaa41('0x3b')]!==_0xaa41('0x47')){var _0x2af8ba={};_0x2af8ba[_0xe58f5e[_0xaa41('0x36')]]={'$like':'%'+_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x48')]+'%'};return _0x2af8ba;}})});}_0x5673c=_[_0xaa41('0x46')]({},_0x5673c,_0x53a2e4[_0xaa41('0x49')]);var _0x4e1ac4={'where':_0x5673c[_0xaa41('0x45')]};return db[_0xaa41('0x39')][_0xaa41('0x2e')](_0x4e1ac4)[_0xaa41('0x1c')](function(_0x206d86){_0x4e8d2e[_0xaa41('0x2e')]=_0x206d86;if(_0x53a2e4['query'][_0xaa41('0x4a')]){_0x5673c[_0xaa41('0x4b')]=[{'all':!![]}];}return db[_0xaa41('0x39')][_0xaa41('0x4c')](_0x5673c);})['then'](function(_0x23bc61){_0x4e8d2e['rows']=_0x23bc61;return _0x4e8d2e;})['then'](respondWithFilteredResult(_0x267999,_0x5673c))[_0xaa41('0x27')](handleError(_0x267999,null));};exports[_0xaa41('0x4d')]=function(_0x3e16ef,_0x4ca114){var _0xb4773b={'raw':![],'where':{'id':_0x3e16ef[_0xaa41('0x4e')]['id']}},_0x3e1a73={};_0x3e1a73['model']=_[_0xaa41('0x4f')](db[_0xaa41('0x39')][_0xaa41('0x50')]);_0x3e1a73[_0xaa41('0x3d')]=_[_0xaa41('0x4f')](_0x3e16ef[_0xaa41('0x3d')]);_0x3e1a73[_0xaa41('0x44')]=_[_0xaa41('0x3e')](_0x3e1a73['model'],_0x3e1a73[_0xaa41('0x3d')]);_0xb4773b['attributes']=_['intersection'](_0x3e1a73[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x41')]));_0xb4773b[_0xaa41('0x40')]=_0xb4773b[_0xaa41('0x40')][_0xaa41('0x42')]?_0xb4773b[_0xaa41('0x40')]:_0x3e1a73['model'];if(_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0xb4773b[_0xaa41('0x4b')]=[{'all':!![]}];}_0xb4773b=_['merge']({},_0xb4773b,_0x3e16ef[_0xaa41('0x49')]);return db[_0xaa41('0x39')]['find'](_0xb4773b)[_0xaa41('0x1c')](handleEntityNotFound(_0x4ca114,null))[_0xaa41('0x1c')](respondWithResult(_0x4ca114,null))[_0xaa41('0x27')](handleError(_0x4ca114,null));};exports['clone']=function(_0x2cf32c,_0xc8e626){var _0x4e3b13={'where':{'id':_0x2cf32c[_0xaa41('0x4e')]['id']}},_0x49789a={};_0x49789a[_0xaa41('0x3f')]=_[_0xaa41('0x4f')](db['Trunk'][_0xaa41('0x50')]);_0x4e3b13[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x49789a[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x2cf32c['query'][_0xaa41('0x41')]));_0x4e3b13['attributes']=_0x4e3b13['attributes'][_0xaa41('0x42')]?_0x4e3b13['attributes']:_0x49789a[_0xaa41('0x3f')];if(_0x2cf32c[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0x4e3b13['include']=[{'all':!![]}];}_0x4e3b13=_[_0xaa41('0x46')]({},_0x4e3b13,_0x2cf32c[_0xaa41('0x49')]);return db[_0xaa41('0x39')][_0xaa41('0x51')](_0x4e3b13)[_0xaa41('0x1c')](handleEntityNotFound(_0xc8e626,null))[_0xaa41('0x1c')](function(_0xc56018){if(_0xc56018){var _0x337059=_0xc56018[_0xaa41('0x33')]({'plain':!![]});_0x337059=qs['omit'](_0x337059,['id',_0xaa41('0x52'),_0xaa41('0x53')]);_0x2cf32c[_0xaa41('0x54')]=_['omit'](_0x2cf32c[_0xaa41('0x54')],['id',_0xaa41('0x52'),_0xaa41('0x53')]);return db[_0xaa41('0x39')][_0xaa41('0x55')](_[_0xaa41('0x46')](_0x337059,_0x2cf32c[_0xaa41('0x54')]),{'include':_0x2cf32c['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x540325){var _0x4ec357=_0x2cf32c['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x4ec357)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ec357['role']===_0xaa41('0x56')){var _0x40a524=_0x540325[_0xaa41('0x33')]({'plain':!![]});var _0x312eee='Trunks';return db[_0xaa41('0x57')][_0xaa41('0x51')]({'where':{'name':_0x312eee,'userProfileId':_0x4ec357[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0xa71432){if(_0xa71432&&_0xa71432[_0xaa41('0x59')]===0x0){return db[_0xaa41('0x34')][_0xaa41('0x55')]({'name':_0x40a524[_0xaa41('0x36')],'resourceId':_0x40a524['id'],'type':_0xa71432['name'],'sectionId':_0xa71432['id']},{})[_0xaa41('0x1c')](function(){return _0x540325;});}else{return _0x540325;}})[_0xaa41('0x27')](function(_0x50170f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50170f);throw _0x50170f;});}return _0x540325;});}})[_0xaa41('0x1c')](respondWithResult(_0xc8e626,0xc9))['catch'](handleError(_0xc8e626,null));};exports[_0xaa41('0x55')]=function(_0x5c8028,_0x5423b6,_0x18d18b){var _0x4b1ec4;return db[_0xaa41('0x39')][_0xaa41('0x55')](_0x5c8028[_0xaa41('0x54')],{'raw':!![]})[_0xaa41('0x1c')](function(_0x5a2683){_0x4b1ec4=_0x5a2683;return db['Trunk'][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x4d6d0c){var _0x5954ba=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x5a385e=fs[_0xaa41('0x5a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x19ec63=ejs[_0xaa41('0x5f')](_0x5954ba,{'trunks':_0x4d6d0c||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x19ec63);if(_0x4b1ec4[_0xaa41('0x61')]){var _0x19ed68=ejs[_0xaa41('0x5f')](_0x5a385e,{'trunks':_0x4d6d0c||[]});fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x19ed68);}})[_0xaa41('0x1c')](function(){return respondWithRpcPromise('Reload',_0xaa41('0x55'),{'module':_0xaa41('0x64')});})[_0xaa41('0x1c')](function(){var _0x175ca9=_0x5c8028['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x175ca9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x175ca9[_0xaa41('0x65')]===_0xaa41('0x56')){var _0x2b9e68=_0x4b1ec4[_0xaa41('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xaa41('0x51')]({'where':{'name':_0xaa41('0x66'),'userProfileId':_0x175ca9[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0x59052d){if(_0x59052d&&_0x59052d[_0xaa41('0x59')]===0x0){return db['UserProfileResource'][_0xaa41('0x55')]({'name':_0x2b9e68[_0xaa41('0x36')],'resourceId':_0x2b9e68['id'],'type':_0x59052d['name'],'sectionId':_0x59052d['id']},{})[_0xaa41('0x1c')](function(){return _0x4b1ec4;});}else{return _0x4b1ec4;}})[_0xaa41('0x27')](function(_0x2ba160){logger[_0xaa41('0x23')](_0xaa41('0x67'),_0x2ba160);throw _0x2ba160;});}return _0x4b1ec4;})[_0xaa41('0x1c')](respondWithResult(_0x5423b6,0xc9))[_0xaa41('0x27')](handleError(_0x5423b6,null));};exports[_0xaa41('0x31')]=function(_0x33b5f4,_0x3d4f1e,_0x25a064){var _0x59a30b;return db[_0xaa41('0x39')][_0xaa41('0x51')]({'where':{'id':_0x33b5f4[_0xaa41('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3d4f1e,null))['then'](saveUpdates(_0x33b5f4[_0xaa41('0x54')],null))[_0xaa41('0x1c')](function(_0x59fd6a){if(_0x59fd6a){_0x59a30b=_0x59fd6a;return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});}})['then'](function(_0x305050){if(_0x305050){var _0x3dd47e=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x1472be=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x44154f=ejs[_0xaa41('0x5f')](_0x3dd47e,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x44154f);var _0x404c38=ejs[_0xaa41('0x5f')](_0x1472be,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x63'),_0x404c38);return respondWithRpcPromise(_0xaa41('0x68'),'update',{'module':_0xaa41('0x64')});}return null;})['then'](function(_0x53faf4){if(_0x53faf4){return _0x59a30b;}})[_0xaa41('0x1c')](respondWithResult(_0x3d4f1e,null))[_0xaa41('0x27')](handleError(_0x3d4f1e,null));};exports['destroy']=function(_0x5a8cb0,_0x241e1a,_0x1726ec){var _0x3c189d;return db[_0xaa41('0x39')]['find']({'where':{'id':_0x5a8cb0[_0xaa41('0x4e')]['id']}})[_0xaa41('0x1c')](handleEntityNotFound(_0x241e1a,null))[_0xaa41('0x1c')](removeEntity(_0x241e1a,null))['then'](function(){return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x5697b6){var _0x183b36=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],_0xaa41('0x5d')),'utf8');var _0x399fbd=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config['root'],_0xaa41('0x69')),_0xaa41('0x5e'));var _0x1a2deb=ejs[_0xaa41('0x5f')](_0x183b36,{'trunks':_0x5697b6});var _0x38f5d0=ejs['render'](_0x399fbd,{'trunks':_0x5697b6});fs[_0xaa41('0x62')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1a2deb);fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x38f5d0);return respondWithRpcPromise(_0xaa41('0x68'),_0xaa41('0x32'),{'module':_0xaa41('0x64')});})[_0xaa41('0x27')](handleError(_0x241e1a,null));};
\ No newline at end of file
+var _0x9a19=['query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','include','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','autoAssociation','findAll','readFileSync','writeFileSync','Reload','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type'];(function(_0x184b25,_0x37eb33){var _0x43bb99=function(_0x191018){while(--_0x191018){_0x184b25['push'](_0x184b25['shift']());}};_0x43bb99(++_0x37eb33);}(_0x9a19,0x114));var _0x99a1=function(_0x3a78a0,_0x44985f){_0x3a78a0=_0x3a78a0-0x0;var _0x48e917=_0x9a19[_0x3a78a0];return _0x48e917;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];var jayson=require(_0x99a1('0x19'));var client=jayson[_0x99a1('0x1a')][_0x99a1('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xf713b9,_0x40c19c,_0x3a865c,_0x47815e){return new BPromise(function(_0xe1a1f,_0x3c9ef4){var _0x39ee55=_0x47815e||client;return _0x39ee55['request'](_0xf713b9,_0x3a865c)[_0x99a1('0x1c')](function(_0x3e45d4){logger[_0x99a1('0x1d')](_0x99a1('0x1e'),_0x40c19c,_0x99a1('0x1f'));logger[_0x99a1('0x20')](_0x99a1('0x21'),_0x40c19c,'request\x20sent',JSON['stringify'](_0x3e45d4));if(_0x3e45d4[_0x99a1('0x22')]){if(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x23')]===0x1f4){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);return _0x3c9ef4(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);}logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4['error'][_0x99a1('0x24')]);return _0xe1a1f(_0x3e45d4[_0x99a1('0x22')]['message']);}else{logger[_0x99a1('0x1d')]('Trunk,\x20%s,\x20%s',_0x40c19c,_0x99a1('0x1f'));_0xe1a1f(_0x3e45d4[_0x99a1('0x25')][_0x99a1('0x24')]);}})[_0x99a1('0x26')](function(_0x5a88c6){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x5a88c6);_0x3c9ef4(_0x5a88c6);});});}function respondWithStatusCode(_0x483c17,_0x44df2d){_0x44df2d=_0x44df2d||0xcc;return function(_0x5b5dfa){if(_0x5b5dfa){return _0x483c17[_0x99a1('0x27')](_0x44df2d);}return _0x483c17[_0x99a1('0x28')](_0x44df2d)[_0x99a1('0x29')]();};}function respondWithResult(_0xdaa27d,_0x3c813){_0x3c813=_0x3c813||0xc8;return function(_0x491341){if(_0x491341){return _0xdaa27d['status'](_0x3c813)[_0x99a1('0x2a')](_0x491341);}};}function respondWithFilteredResult(_0x5dabd9,_0x5dc733){return function(_0xafea84){if(_0xafea84){var _0x440879=typeof _0x5dc733[_0x99a1('0x2b')]===_0x99a1('0x2c')&&typeof _0x5dc733[_0x99a1('0x2d')]===_0x99a1('0x2c');var _0x183037=_0xafea84['count'];var _0xf41b0d=_0x440879?0x0:_0x5dc733['offset'];var _0x255197=_0x440879?_0xafea84[_0x99a1('0x2e')]:_0x5dc733[_0x99a1('0x2b')]+_0x5dc733['limit'];var _0x371edf;if(_0x255197>=_0x183037){_0x255197=_0x183037;_0x371edf=0xc8;}else{_0x371edf=0xce;}_0x5dabd9[_0x99a1('0x28')](_0x371edf);return _0x5dabd9['set'](_0x99a1('0x2f'),_0xf41b0d+'-'+_0x255197+'/'+_0x183037)[_0x99a1('0x2a')](_0xafea84);}return null;};}function patchUpdates(_0x36aa34){return function(_0x303d1e){try{jsonpatch[_0x99a1('0x30')](_0x303d1e,_0x36aa34,!![]);}catch(_0x969f6e){return BPromise[_0x99a1('0x31')](_0x969f6e);}return _0x303d1e[_0x99a1('0x32')]();};}function saveUpdates(_0x52da8d,_0x4960e4){return function(_0x3fa342){if(_0x3fa342){return _0x3fa342['update'](_0x52da8d)[_0x99a1('0x1c')](function(_0x400581){return _0x400581;});}return null;};}function removeEntity(_0x5b1a79,_0xa5972b){return function(_0x3503d5){if(_0x3503d5){return _0x3503d5[_0x99a1('0x33')]()[_0x99a1('0x1c')](function(){var _0x13f4db=_0x3503d5[_0x99a1('0x34')]({'plain':!![]});var _0x3081cd=_0x99a1('0x35');return db[_0x99a1('0x36')][_0x99a1('0x33')]({'where':{'type':_0x3081cd,'resourceId':_0x13f4db['id']}})[_0x99a1('0x1c')](function(){return _0x3503d5;});})[_0x99a1('0x1c')](function(){_0x5b1a79[_0x99a1('0x28')](0xcc)[_0x99a1('0x29')]();});}};}function handleEntityNotFound(_0x55005e,_0x53fed5){return function(_0x46e3f2){if(!_0x46e3f2){_0x55005e[_0x99a1('0x27')](0x194);}return _0x46e3f2;};}function handleError(_0x416a36,_0x4131e0){_0x4131e0=_0x4131e0||0x1f4;return function(_0x2690bd){logger[_0x99a1('0x22')](_0x2690bd[_0x99a1('0x37')]);if(_0x2690bd['name']){delete _0x2690bd[_0x99a1('0x38')];}_0x416a36[_0x99a1('0x28')](_0x4131e0)['send'](_0x2690bd);};}exports[_0x99a1('0x39')]=function(_0x2d328c,_0x391afa){var _0x3cd1a0={},_0x430cbc={},_0x399fd4={'count':0x0,'rows':[]};var _0x30e8a9=_[_0x99a1('0x3a')](db[_0x99a1('0x3b')][_0x99a1('0x3c')],function(_0x1da3e7){return{'name':_0x1da3e7[_0x99a1('0x3d')],'type':_0x1da3e7[_0x99a1('0x3e')]['key']};});_0x430cbc['model']=_['map'](_0x30e8a9,_0x99a1('0x38'));_0x430cbc[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x2d328c[_0x99a1('0x3f')]);_0x430cbc[_0x99a1('0x41')]=_['intersection'](_0x430cbc[_0x99a1('0x42')],_0x430cbc[_0x99a1('0x3f')]);_0x3cd1a0[_0x99a1('0x43')]=_['intersection'](_0x430cbc['model'],qs[_0x99a1('0x44')](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x3cd1a0['attributes']=_0x3cd1a0[_0x99a1('0x43')][_0x99a1('0x45')]?_0x3cd1a0[_0x99a1('0x43')]:_0x430cbc[_0x99a1('0x42')];if(!_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x46')](_0x99a1('0x47'))){_0x3cd1a0[_0x99a1('0x2d')]=qs[_0x99a1('0x2d')](_0x2d328c[_0x99a1('0x3f')]['limit']);_0x3cd1a0[_0x99a1('0x2b')]=qs[_0x99a1('0x2b')](_0x2d328c[_0x99a1('0x3f')]['offset']);}_0x3cd1a0[_0x99a1('0x48')]=qs['sort'](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x49')]);_0x3cd1a0[_0x99a1('0x4a')]=qs[_0x99a1('0x41')](_[_0x99a1('0x4b')](_0x2d328c[_0x99a1('0x3f')],_0x430cbc['filters']),_0x30e8a9);if(_0x2d328c[_0x99a1('0x3f')]['filter']){_0x3cd1a0[_0x99a1('0x4a')]=_[_0x99a1('0x4c')](_0x3cd1a0[_0x99a1('0x4a')],{'$or':_[_0x99a1('0x3a')](_0x30e8a9,function(_0x3a0b44){if(_0x3a0b44[_0x99a1('0x3e')]!==_0x99a1('0x4d')){var _0x3861b6={};_0x3861b6[_0x3a0b44[_0x99a1('0x38')]]={'$like':'%'+_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x4e')]+'%'};return _0x3861b6;}})});}_0x3cd1a0=_['merge']({},_0x3cd1a0,_0x2d328c[_0x99a1('0x4f')]);var _0x330e3b={'where':_0x3cd1a0['where']};return db[_0x99a1('0x3b')][_0x99a1('0x2e')](_0x330e3b)[_0x99a1('0x1c')](function(_0x2e377b){_0x399fd4[_0x99a1('0x2e')]=_0x2e377b;if(_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x50')]){_0x3cd1a0['include']=[{'all':!![]}];}return db[_0x99a1('0x3b')]['findAll'](_0x3cd1a0);})[_0x99a1('0x1c')](function(_0x269798){_0x399fd4['rows']=_0x269798;return _0x399fd4;})['then'](respondWithFilteredResult(_0x391afa,_0x3cd1a0))[_0x99a1('0x26')](handleError(_0x391afa,null));};exports[_0x99a1('0x51')]=function(_0x462c15,_0x4519fb){var _0xee2b1b={'raw':![],'where':{'id':_0x462c15['params']['id']}},_0x597836={};_0x597836['model']=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x597836[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x462c15[_0x99a1('0x3f')]);_0x597836[_0x99a1('0x41')]=_['intersection'](_0x597836[_0x99a1('0x42')],_0x597836[_0x99a1('0x3f')]);_0xee2b1b[_0x99a1('0x43')]=_['intersection'](_0x597836[_0x99a1('0x42')],qs['fields'](_0x462c15['query'][_0x99a1('0x44')]));_0xee2b1b[_0x99a1('0x43')]=_0xee2b1b[_0x99a1('0x43')][_0x99a1('0x45')]?_0xee2b1b[_0x99a1('0x43')]:_0x597836[_0x99a1('0x42')];if(_0x462c15[_0x99a1('0x3f')][_0x99a1('0x50')]){_0xee2b1b[_0x99a1('0x52')]=[{'all':!![]}];}_0xee2b1b=_['merge']({},_0xee2b1b,_0x462c15[_0x99a1('0x4f')]);return db['Trunk'][_0x99a1('0x53')](_0xee2b1b)[_0x99a1('0x1c')](handleEntityNotFound(_0x4519fb,null))['then'](respondWithResult(_0x4519fb,null))[_0x99a1('0x26')](handleError(_0x4519fb,null));};exports[_0x99a1('0x54')]=function(_0x469e10,_0x2b2d63){var _0x2800d5={'where':{'id':_0x469e10[_0x99a1('0x55')]['id']}},_0x1bff78={};_0x1bff78[_0x99a1('0x42')]=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x2800d5[_0x99a1('0x43')]=_['intersection'](_0x1bff78['model'],qs[_0x99a1('0x44')](_0x469e10[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x2800d5[_0x99a1('0x43')]=_0x2800d5[_0x99a1('0x43')]['length']?_0x2800d5[_0x99a1('0x43')]:_0x1bff78[_0x99a1('0x42')];if(_0x469e10['query'][_0x99a1('0x50')]){_0x2800d5[_0x99a1('0x52')]=[{'all':!![]}];}_0x2800d5=_[_0x99a1('0x4c')]({},_0x2800d5,_0x469e10[_0x99a1('0x4f')]);return db[_0x99a1('0x3b')]['find'](_0x2800d5)[_0x99a1('0x1c')](handleEntityNotFound(_0x2b2d63,null))[_0x99a1('0x1c')](function(_0x1bb1cb){if(_0x1bb1cb){var _0x22811f=_0x1bb1cb[_0x99a1('0x34')]({'plain':!![]});_0x22811f=qs[_0x99a1('0x56')](_0x22811f,['id','createdAt',_0x99a1('0x57')]);_0x469e10[_0x99a1('0x58')]=_['omit'](_0x469e10[_0x99a1('0x58')],['id',_0x99a1('0x59'),_0x99a1('0x57')]);return db[_0x99a1('0x3b')][_0x99a1('0x5a')](_['merge'](_0x22811f,_0x469e10[_0x99a1('0x58')]),{'include':_0x469e10['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x38ce3c){var _0x3f7c16=_0x469e10['user']['get']({'plain':!![]});if(!_0x3f7c16)throw new Error(_0x99a1('0x5b'));if(_0x3f7c16['role']===_0x99a1('0x5c')){var _0x263db3=_0x38ce3c[_0x99a1('0x34')]({'plain':!![]});var _0x180c1e='Trunks';return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x180c1e,'userProfileId':_0x3f7c16[_0x99a1('0x5e')]},'raw':!![]})['then'](function(_0x3a62c6){if(_0x3a62c6&&_0x3a62c6['autoAssociation']===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x263db3[_0x99a1('0x38')],'resourceId':_0x263db3['id'],'type':_0x3a62c6[_0x99a1('0x38')],'sectionId':_0x3a62c6['id']},{})[_0x99a1('0x1c')](function(){return _0x38ce3c;});}else{return _0x38ce3c;}})['catch'](function(_0x4d37f8){logger['error'](_0x99a1('0x5f'),_0x4d37f8);throw _0x4d37f8;});}return _0x38ce3c;});}})[_0x99a1('0x1c')](respondWithResult(_0x2b2d63,0xc9))['catch'](handleError(_0x2b2d63,null));};exports['create']=function(_0x1fe7af,_0x2f5587,_0x401c8f){var _0x509d4f;return db['Trunk'][_0x99a1('0x5a')](_0x1fe7af['body'],{'raw':!![]})[_0x99a1('0x1c')](function(_0x129690){_0x509d4f=_0x129690;return db[_0x99a1('0x3b')]['findAll']({'raw':!![]});})[_0x99a1('0x1c')](function(_0x28c7d8){var _0x4ac99e=fs['readFileSync'](path[_0x99a1('0x60')](config['root'],_0x99a1('0x61')),_0x99a1('0x62'));var _0x30a0a5=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x3d0ff6=ejs['render'](_0x4ac99e,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x65'),_0x3d0ff6);if(_0x509d4f[_0x99a1('0x66')]){var _0x1750d5=ejs[_0x99a1('0x67')](_0x30a0a5,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x68'),_0x1750d5);}})['then'](function(){return respondWithRpcPromise('Reload',_0x99a1('0x5a'),{'module':_0x99a1('0x69')});})[_0x99a1('0x1c')](function(){var _0x525969=_0x1fe7af[_0x99a1('0x5c')][_0x99a1('0x34')]({'plain':!![]});if(!_0x525969)throw new Error(_0x99a1('0x5b'));if(_0x525969[_0x99a1('0x6a')]===_0x99a1('0x5c')){var _0x4ae313=_0x509d4f[_0x99a1('0x34')]({'plain':!![]});return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x99a1('0x35'),'userProfileId':_0x525969[_0x99a1('0x5e')]},'raw':!![]})[_0x99a1('0x1c')](function(_0x5e42be){if(_0x5e42be&&_0x5e42be[_0x99a1('0x6b')]===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x4ae313[_0x99a1('0x38')],'resourceId':_0x4ae313['id'],'type':_0x5e42be[_0x99a1('0x38')],'sectionId':_0x5e42be['id']},{})['then'](function(){return _0x509d4f;});}else{return _0x509d4f;}})[_0x99a1('0x26')](function(_0x68c944){logger[_0x99a1('0x22')](_0x99a1('0x5f'),_0x68c944);throw _0x68c944;});}return _0x509d4f;})[_0x99a1('0x1c')](respondWithResult(_0x2f5587,0xc9))[_0x99a1('0x26')](handleError(_0x2f5587,null));};exports['update']=function(_0xaa953e,_0x33d96b,_0x4a5617){var _0x56716a;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0xaa953e['params']['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x33d96b,null))[_0x99a1('0x1c')](saveUpdates(_0xaa953e[_0x99a1('0x58')],null))[_0x99a1('0x1c')](function(_0x43156f){if(_0x43156f){_0x56716a=_0x43156f;return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});}})[_0x99a1('0x1c')](function(_0x4260d7){if(_0x4260d7){var _0x3e099c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],'server/files/templates/trunk.ejs'),_0x99a1('0x62'));var _0x5a9a7d=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0xbbbe26=ejs[_0x99a1('0x67')](_0x3e099c,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0xbbbe26);var _0x361ce6=ejs['render'](_0x5a9a7d,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x68'),_0x361ce6);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x70'),{'module':_0x99a1('0x69')});}return null;})[_0x99a1('0x1c')](function(_0x6dab29){if(_0x6dab29){return _0x56716a;}})[_0x99a1('0x1c')](respondWithResult(_0x33d96b,null))['catch'](handleError(_0x33d96b,null));};exports['destroy']=function(_0x51c289,_0x2dd29b,_0x353f25){var _0x53cdb3;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0x51c289[_0x99a1('0x55')]['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x2dd29b,null))['then'](removeEntity(_0x2dd29b,null))[_0x99a1('0x1c')](function(){return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});})[_0x99a1('0x1c')](function(_0x4e9fe9){var _0x24aa05=fs['readFileSync'](path['join'](config['root'],_0x99a1('0x61')),'utf8');var _0xb7744c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x444e43=ejs['render'](_0x24aa05,{'trunks':_0x4e9fe9});var _0x4fcd65=ejs[_0x99a1('0x67')](_0xb7744c,{'trunks':_0x4e9fe9});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0x444e43);fs['writeFileSync'](_0x99a1('0x68'),_0x4fcd65);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x33'),{'module':'chan_sip.so'});})[_0x99a1('0x26')](handleError(_0x2dd29b,null));};
\ No newline at end of file
index 292ff56..5d7b4df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5637=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','define','Trunk','tools_trunks','util','../../config/logger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5637,0x1ae));var _0x7563=function(_0x478b36,_0x359410){_0x478b36=_0x478b36-0x0;var _0x19f2a0=_0x5637[_0x478b36];return _0x19f2a0;};'use strict';var _=require('lodash');var util=require(_0x7563('0x0'));var logger=require(_0x7563('0x1'))('api');var moment=require(_0x7563('0x2'));var BPromise=require(_0x7563('0x3'));var rp=require(_0x7563('0x4'));var fs=require('fs');var path=require(_0x7563('0x5'));var rimraf=require(_0x7563('0x6'));var config=require(_0x7563('0x7'));var attributes=require(_0x7563('0x8'));module['exports']=function(_0x3cc628,_0x11be5d){return _0x3cc628[_0x7563('0x9')](_0x7563('0xa'),attributes,{'tableName':_0x7563('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9c4=['tools_trunks','util','api','moment','bluebird','request-promise','../../config/environment','./trunk.attributes','exports','define','Trunk'];(function(_0x4aaf55,_0x1091e0){var _0x4bc5ba=function(_0x30542a){while(--_0x30542a){_0x4aaf55['push'](_0x4aaf55['shift']());}};_0x4bc5ba(++_0x1091e0);}(_0xb9c4,0x177));var _0x4b9c=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xb9c4[_0x36ed48];return _0x51c63a;};'use strict';var _=require('lodash');var util=require(_0x4b9c('0x0'));var logger=require('../../config/logger')(_0x4b9c('0x1'));var moment=require(_0x4b9c('0x2'));var BPromise=require(_0x4b9c('0x3'));var rp=require(_0x4b9c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4b9c('0x5'));var attributes=require(_0x4b9c('0x6'));module[_0x4b9c('0x7')]=function(_0x3960aa,_0x204577){return _0x3960aa[_0x4b9c('0x8')](_0x4b9c('0x9'),attributes,{'tableName':_0x4b9c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f725547..f4f5dea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb6f=['find','raw','ShowTrunk','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetTrunk','findAll','options','where','attributes','limit','include','map','model','catch','Trunk'];(function(_0x30a831,_0x3db3dc){var _0x4f4171=function(_0x439e0e){while(--_0x439e0e){_0x30a831['push'](_0x30a831['shift']());}};_0x4f4171(++_0x3db3dc);}(_0xfb6f,0x189));var _0xffb6=function(_0x299e88,_0x303998){_0x299e88=_0x299e88-0x0;var _0x184dd4=_0xfb6f[_0x299e88];return _0x184dd4;};'use strict';var _=require(_0xffb6('0x0'));var util=require(_0xffb6('0x1'));var moment=require(_0xffb6('0x2'));var BPromise=require(_0xffb6('0x3'));var rs=require(_0xffb6('0x4'));var fs=require('fs');var Redis=require(_0xffb6('0x5'));var db=require(_0xffb6('0x6'))['db'];var utils=require(_0xffb6('0x7'));var logger=require(_0xffb6('0x8'))(_0xffb6('0x9'));var config=require(_0xffb6('0xa'));var jayson=require(_0xffb6('0xb'));var client=jayson['client'][_0xffb6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d46ea,_0x49d82d,_0x22f135){return new BPromise(function(_0x6bb371,_0x4d0cc2){return client[_0xffb6('0xd')](_0x2d46ea,_0x22f135)[_0xffb6('0xe')](function(_0xe3f73e){logger[_0xffb6('0xf')](_0xffb6('0x10'),_0x49d82d,_0xffb6('0x11'));logger[_0xffb6('0x12')](_0xffb6('0x13'),_0x49d82d,_0xffb6('0x11'),JSON[_0xffb6('0x14')](_0xe3f73e));if(_0xe3f73e[_0xffb6('0x15')]){if(_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x16')]===0x1f4){logger[_0xffb6('0x15')]('Trunk,\x20%s,\x20%s',_0x49d82d,_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x17')]);return _0x4d0cc2(_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x17')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x49d82d,_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x17')]);return _0x6bb371(_0xe3f73e['error'][_0xffb6('0x17')]);}else{logger[_0xffb6('0xf')](_0xffb6('0x10'),_0x49d82d,_0xffb6('0x11'));_0x6bb371(_0xe3f73e[_0xffb6('0x18')][_0xffb6('0x17')]);}})['catch'](function(_0x22f95c){logger[_0xffb6('0x15')](_0xffb6('0x10'),_0x49d82d,_0x22f95c);_0x4d0cc2(_0x22f95c);});});}exports[_0xffb6('0x19')]=function(_0x1bc1c1){var _0x4e7ab2=this;return new Promise(function(_0x5e1f4e,_0x54e43f){return db['Trunk'][_0xffb6('0x1a')]({'raw':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1['options']['raw']===undefined?!![]:![]:!![],'where':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1c')]||null:null,'attributes':_0x1bc1c1['options']?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1d')]||null:null,'limit':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1e')]||null:null,'include':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1f')]?_[_0xffb6('0x20')](_0x1bc1c1['options']['include'],function(_0x58adbe){return{'model':db[_0x58adbe[_0xffb6('0x21')]],'as':_0x58adbe['as'],'attributes':_0x58adbe[_0xffb6('0x1d')],'include':_0x58adbe[_0xffb6('0x1f')]?_['map'](_0x58adbe['include'],function(_0x3f11d3){return{'model':db[_0x3f11d3[_0xffb6('0x21')]],'as':_0x3f11d3['as'],'attributes':_0x3f11d3['attributes'],'include':_0x3f11d3[_0xffb6('0x1f')]?_[_0xffb6('0x20')](_0x3f11d3[_0xffb6('0x1f')],function(_0x2b05b0){return{'model':db[_0x2b05b0['model']],'as':_0x2b05b0['as'],'attributes':_0x2b05b0[_0xffb6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xffb6('0xe')](function(_0x13d2ea){logger['info'](_0xffb6('0x19'),_0x1bc1c1);logger[_0xffb6('0x12')]('GetTrunk',_0x1bc1c1,JSON['stringify'](_0x13d2ea));_0x5e1f4e(_0x13d2ea);})[_0xffb6('0x22')](function(_0x2e7f68){logger['error'](_0xffb6('0x19'),_0x2e7f68['message'],_0x1bc1c1);_0x54e43f(_0x4e7ab2[_0xffb6('0x15')](0x1f4,_0x2e7f68[_0xffb6('0x17')]));});});};exports['ShowTrunk']=function(_0x38b57b){var _0x143782=this;return new Promise(function(_0xa5dbe8,_0x5271d9){return db[_0xffb6('0x23')][_0xffb6('0x24')]({'raw':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b[_0xffb6('0x1b')][_0xffb6('0x25')]===undefined?!![]:![]:!![],'where':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b[_0xffb6('0x1b')][_0xffb6('0x1c')]||null:null,'attributes':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b['options'][_0xffb6('0x1d')]||null:null,'include':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b[_0xffb6('0x1b')][_0xffb6('0x1f')]?_['map'](_0x38b57b['options']['include'],function(_0x1a9f09){return{'model':db[_0x1a9f09[_0xffb6('0x21')]],'as':_0x1a9f09['as'],'attributes':_0x1a9f09[_0xffb6('0x1d')],'include':_0x1a9f09[_0xffb6('0x1f')]?_[_0xffb6('0x20')](_0x1a9f09['include'],function(_0xcde86a){return{'model':db[_0xcde86a[_0xffb6('0x21')]],'as':_0xcde86a['as'],'attributes':_0xcde86a[_0xffb6('0x1d')],'include':_0xcde86a['include']?_[_0xffb6('0x20')](_0xcde86a[_0xffb6('0x1f')],function(_0x2add63){return{'model':db[_0x2add63[_0xffb6('0x21')]],'as':_0x2add63['as'],'attributes':_0x2add63[_0xffb6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xffb6('0xe')](function(_0x1b644d){logger[_0xffb6('0xf')]('ShowTrunk',_0x38b57b);logger[_0xffb6('0x12')](_0xffb6('0x26'),_0x38b57b,JSON[_0xffb6('0x14')](_0x1b644d));_0xa5dbe8(_0x1b644d);})[_0xffb6('0x22')](function(_0x4d8f58){logger[_0xffb6('0x15')](_0xffb6('0x26'),_0x4d8f58[_0xffb6('0x17')],_0x38b57b);_0x5271d9(_0x143782[_0xffb6('0x15')](0x1f4,_0x4d8f58[_0xffb6('0x17')]));});});};
\ No newline at end of file
+var _0xb49b=['stringify','error','code','message','result','catch','GetTrunk','Trunk','findAll','options','raw','where','attributes','include','map','model','then','ShowTrunk','util','moment','bluebird','ioredis','../../mysqldb','jayson/promise','client','http','request','info','Trunk,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x1e50a1,_0x49bbc6){var _0x5a87b6=function(_0x4bb5ee){while(--_0x4bb5ee){_0x1e50a1['push'](_0x1e50a1['shift']());}};_0x5a87b6(++_0x49bbc6);}(_0xb49b,0x1e3));var _0xbb49=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xb49b[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var util=require(_0xbb49('0x0'));var moment=require(_0xbb49('0x1'));var BPromise=require(_0xbb49('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb49('0x3'));var db=require(_0xbb49('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xbb49('0x5'));var client=jayson[_0xbb49('0x6')][_0xbb49('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x48dc31,_0x8ec3b0,_0x382171){return new BPromise(function(_0x834549,_0x2040de){return client[_0xbb49('0x8')](_0x48dc31,_0x382171)['then'](function(_0x2db5f8){logger[_0xbb49('0x9')](_0xbb49('0xa'),_0x8ec3b0,'request\x20sent');logger[_0xbb49('0xb')]('Trunk,\x20%s,\x20%s,\x20%s',_0x8ec3b0,_0xbb49('0xc'),JSON[_0xbb49('0xd')](_0x2db5f8));if(_0x2db5f8[_0xbb49('0xe')]){if(_0x2db5f8[_0xbb49('0xe')][_0xbb49('0xf')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x8ec3b0,_0x2db5f8[_0xbb49('0xe')][_0xbb49('0x10')]);return _0x2040de(_0x2db5f8[_0xbb49('0xe')]['message']);}logger['error'](_0xbb49('0xa'),_0x8ec3b0,_0x2db5f8['error']['message']);return _0x834549(_0x2db5f8[_0xbb49('0xe')]['message']);}else{logger[_0xbb49('0x9')](_0xbb49('0xa'),_0x8ec3b0,'request\x20sent');_0x834549(_0x2db5f8[_0xbb49('0x11')]['message']);}})[_0xbb49('0x12')](function(_0x1460f1){logger['error'](_0xbb49('0xa'),_0x8ec3b0,_0x1460f1);_0x2040de(_0x1460f1);});});}exports[_0xbb49('0x13')]=function(_0x2c88ff){var _0x5170f2=this;return new Promise(function(_0x2b2a6b,_0x64ab5a){return db[_0xbb49('0x14')][_0xbb49('0x15')]({'raw':_0x2c88ff['options']?_0x2c88ff[_0xbb49('0x16')][_0xbb49('0x17')]===undefined?!![]:![]:!![],'where':_0x2c88ff[_0xbb49('0x16')]?_0x2c88ff[_0xbb49('0x16')][_0xbb49('0x18')]||null:null,'attributes':_0x2c88ff['options']?_0x2c88ff[_0xbb49('0x16')][_0xbb49('0x19')]||null:null,'limit':_0x2c88ff[_0xbb49('0x16')]?_0x2c88ff['options']['limit']||null:null,'include':_0x2c88ff[_0xbb49('0x16')]?_0x2c88ff[_0xbb49('0x16')][_0xbb49('0x1a')]?_[_0xbb49('0x1b')](_0x2c88ff[_0xbb49('0x16')][_0xbb49('0x1a')],function(_0x2c5311){return{'model':db[_0x2c5311['model']],'as':_0x2c5311['as'],'attributes':_0x2c5311[_0xbb49('0x19')],'include':_0x2c5311[_0xbb49('0x1a')]?_[_0xbb49('0x1b')](_0x2c5311['include'],function(_0x3b6ec2){return{'model':db[_0x3b6ec2[_0xbb49('0x1c')]],'as':_0x3b6ec2['as'],'attributes':_0x3b6ec2[_0xbb49('0x19')],'include':_0x3b6ec2[_0xbb49('0x1a')]?_['map'](_0x3b6ec2[_0xbb49('0x1a')],function(_0x255bb0){return{'model':db[_0x255bb0[_0xbb49('0x1c')]],'as':_0x255bb0['as'],'attributes':_0x255bb0[_0xbb49('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbb49('0x1d')](function(_0x408b09){logger[_0xbb49('0x9')](_0xbb49('0x13'),_0x2c88ff);logger[_0xbb49('0xb')](_0xbb49('0x13'),_0x2c88ff,JSON['stringify'](_0x408b09));_0x2b2a6b(_0x408b09);})['catch'](function(_0x18264a){logger[_0xbb49('0xe')](_0xbb49('0x13'),_0x18264a[_0xbb49('0x10')],_0x2c88ff);_0x64ab5a(_0x5170f2[_0xbb49('0xe')](0x1f4,_0x18264a['message']));});});};exports['ShowTrunk']=function(_0x531742){var _0x79b3c3=this;return new Promise(function(_0x33ca88,_0x3743a9){return db[_0xbb49('0x14')]['find']({'raw':_0x531742[_0xbb49('0x16')]?_0x531742[_0xbb49('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x531742[_0xbb49('0x16')]?_0x531742['options'][_0xbb49('0x18')]||null:null,'attributes':_0x531742[_0xbb49('0x16')]?_0x531742[_0xbb49('0x16')][_0xbb49('0x19')]||null:null,'include':_0x531742[_0xbb49('0x16')]?_0x531742['options']['include']?_[_0xbb49('0x1b')](_0x531742[_0xbb49('0x16')]['include'],function(_0x365beb){return{'model':db[_0x365beb['model']],'as':_0x365beb['as'],'attributes':_0x365beb[_0xbb49('0x19')],'include':_0x365beb[_0xbb49('0x1a')]?_[_0xbb49('0x1b')](_0x365beb['include'],function(_0x2af6d7){return{'model':db[_0x2af6d7[_0xbb49('0x1c')]],'as':_0x2af6d7['as'],'attributes':_0x2af6d7[_0xbb49('0x19')],'include':_0x2af6d7[_0xbb49('0x1a')]?_['map'](_0x2af6d7[_0xbb49('0x1a')],function(_0x399ab8){return{'model':db[_0x399ab8['model']],'as':_0x399ab8['as'],'attributes':_0x399ab8[_0xbb49('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x249c02){logger['info'](_0xbb49('0x1e'),_0x531742);logger[_0xbb49('0xb')](_0xbb49('0x1e'),_0x531742,JSON[_0xbb49('0xd')](_0x249c02));_0x33ca88(_0x249c02);})[_0xbb49('0x12')](function(_0xf035e6){logger[_0xbb49('0xe')]('ShowTrunk',_0xf035e6[_0xbb49('0x10')],_0x531742);_0x3743a9(_0x79b3c3[_0xbb49('0xe')](0x1f4,_0xf035e6[_0xbb49('0x10')]));});});};
\ No newline at end of file
index 3f8aa2a..df9672f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6b=['whoami','/presence','getPresence','/:id','show','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/lists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/api_key','getApiKey','post','create','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','/:id/avatar','single','file','addAvatar','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','/:id/square_projects','addSquareProjects','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeSquareProjects','removeApiKey','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/whoami'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6e6b,0x68));var _0xb6e6=function(_0x427676,_0x3f4021){_0x427676=_0x427676-0x0;var _0x9ddbeb=_0x6e6b[_0x427676];return _0x9ddbeb;};'use strict';var multer=require('multer');var util=require(_0xb6e6('0x0'));var path=require(_0xb6e6('0x1'));var timeout=require('connect-timeout');var express=require(_0xb6e6('0x2'));var router=express[_0xb6e6('0x3')]();var fs_extra=require(_0xb6e6('0x4'));var auth=require(_0xb6e6('0x5'));var interaction=require(_0xb6e6('0x6'));var config=require(_0xb6e6('0x7'));var controller=require('./user.controller');router[_0xb6e6('0x8')]('/',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0xa')]);router[_0xb6e6('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xb6e6('0xb')]);router[_0xb6e6('0x8')](_0xb6e6('0xc'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0xd')]);router['get'](_0xb6e6('0xe'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0xf')]);router[_0xb6e6('0x8')](_0xb6e6('0x10'),auth['isAuthenticated'](),controller[_0xb6e6('0x11')]);router[_0xb6e6('0x8')]('/:id/avatar',controller[_0xb6e6('0x12')]);router[_0xb6e6('0x8')]('/:id/open_tabs',auth['isAuthenticated'](),controller[_0xb6e6('0x13')]);router['get'](_0xb6e6('0x14'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x15')]);router[_0xb6e6('0x8')](_0xb6e6('0x16'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x17')]);router['get']('/:id/queues_rt',auth[_0xb6e6('0x9')](),controller['getVoiceQueuesRt']);router[_0xb6e6('0x8')](_0xb6e6('0x18'),auth[_0xb6e6('0x9')](),controller['getGroups']);router[_0xb6e6('0x8')](_0xb6e6('0x19'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x1a')]);router[_0xb6e6('0x8')](_0xb6e6('0x1b'),auth[_0xb6e6('0x9')](),controller['getScreenRecordings']);router['get'](_0xb6e6('0x1c'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x1d')]);router['get'](_0xb6e6('0x1e'),auth['isAuthenticated'](),controller[_0xb6e6('0x1f')]);router['get'](_0xb6e6('0x20'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x21')]);router[_0xb6e6('0x8')]('/:id/sms/interactions',auth['isAuthenticated'](),controller['getSmsInteractions']);router[_0xb6e6('0x8')](_0xb6e6('0x22'),auth['isAuthenticated'](),controller[_0xb6e6('0x23')]);router[_0xb6e6('0x8')](_0xb6e6('0x24'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x25')]);router['get']('/:id/teams',auth[_0xb6e6('0x9')](),controller['getTeams']);router['get'](_0xb6e6('0x26'),auth[_0xb6e6('0x9')](),controller['getLists']);router['get'](_0xb6e6('0x27'),auth['isAuthenticated'](),controller[_0xb6e6('0x28')]);router[_0xb6e6('0x8')](_0xb6e6('0x29'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x2a')]);router[_0xb6e6('0x8')](_0xb6e6('0x2b'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x2c')]);router[_0xb6e6('0x8')](_0xb6e6('0x2d'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x2e')]);router[_0xb6e6('0x8')](_0xb6e6('0x2f'),auth['isAuthenticated'](),controller[_0xb6e6('0x30')]);router[_0xb6e6('0x8')](_0xb6e6('0x31'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x32')]);router['get']('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xb6e6('0x33')]);router[_0xb6e6('0x8')](_0xb6e6('0x34'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x35')]);router['get']('/:id/square_projects',auth[_0xb6e6('0x9')](),controller['getSquareProjects']);router[_0xb6e6('0x8')]('/:id/scheduled_calls',auth[_0xb6e6('0x9')](),controller['getScheduledCalls']);router[_0xb6e6('0x8')](_0xb6e6('0x36'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x37')]);router['post'](_0xb6e6('0x14'),auth['isAuthenticated'](),controller['addContacts']);router[_0xb6e6('0x38')]('/',auth['isAuthenticated'](),controller[_0xb6e6('0x39')]);router['post'](_0xb6e6('0x3a'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x3b')]);router[_0xb6e6('0x38')]('/:id/queues',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x3c')]);var upload=multer({'storage':multer[_0xb6e6('0x3d')]({'destination':function(_0x4ea662,_0x47cbf3,_0x24063d){_0x24063d(null,path[_0xb6e6('0x3e')](config[_0xb6e6('0x3f')],_0xb6e6('0x40')));},'filename':function(_0x39bc3e,_0x589c34,_0x3052d9){_0x3052d9(null,util[_0xb6e6('0x41')](_0xb6e6('0x42'),Date[_0xb6e6('0x43')](),_0x589c34[_0xb6e6('0x44')]));}})});router[_0xb6e6('0x38')](_0xb6e6('0x45'),upload[_0xb6e6('0x46')](_0xb6e6('0x47')),controller[_0xb6e6('0x48')]);router[_0xb6e6('0x38')]('/:id/login',auth[_0xb6e6('0x9')](),controller['login']);router[_0xb6e6('0x38')](_0xb6e6('0x49'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x4a')]);router[_0xb6e6('0x38')](_0xb6e6('0x4b'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x4c')]);router['post'](_0xb6e6('0x4d'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x4e')]);router[_0xb6e6('0x38')](_0xb6e6('0x4f'),auth['isAuthenticated'](),controller[_0xb6e6('0x50')]);router[_0xb6e6('0x38')](_0xb6e6('0x51'),auth['isAuthenticated'](),controller['addChatInteractions']);router['post']('/:id/mail_interactions',auth[_0xb6e6('0x9')](),controller['addMailInteractions']);router[_0xb6e6('0x38')]('/:id/fax_interactions',auth[_0xb6e6('0x9')](),controller['addFaxInteractions']);router[_0xb6e6('0x38')](_0xb6e6('0x52'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x53')]);router[_0xb6e6('0x38')](_0xb6e6('0x54'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x55')]);router[_0xb6e6('0x38')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0xb6e6('0x56')]);router[_0xb6e6('0x38')](_0xb6e6('0x2b'),auth[_0xb6e6('0x9')](),controller['addFaxAccounts']);router[_0xb6e6('0x38')](_0xb6e6('0x2d'),auth['isAuthenticated'](),controller[_0xb6e6('0x57')]);router[_0xb6e6('0x38')](_0xb6e6('0x2f'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x58')]);router[_0xb6e6('0x38')]('/:id/sms_accounts',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x59')]);router[_0xb6e6('0x38')](_0xb6e6('0x5a'),auth['isAuthenticated'](),controller[_0xb6e6('0x5b')]);router[_0xb6e6('0x38')](_0xb6e6('0x34'),auth['isAuthenticated'](),controller[_0xb6e6('0x5c')]);router['post'](_0xb6e6('0x5d'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x5e')]);router[_0xb6e6('0x38')](_0xb6e6('0x36'),auth['isAuthenticated'](),controller['createApiKey']);router[_0xb6e6('0x5f')](_0xb6e6('0x10'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x60')]);router[_0xb6e6('0x5f')](_0xb6e6('0x61'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x62')]);router[_0xb6e6('0x63')](_0xb6e6('0x16'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x64')]);router[_0xb6e6('0x63')](_0xb6e6('0x4f'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x65')]);router[_0xb6e6('0x63')]('/:id',auth['isAuthenticated'](),controller[_0xb6e6('0x66')]);router[_0xb6e6('0x63')](_0xb6e6('0x51'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x67')]);router[_0xb6e6('0x63')](_0xb6e6('0x68'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x69')]);router[_0xb6e6('0x63')]('/:id/fax_interactions',auth[_0xb6e6('0x9')](),controller['removeFaxInteractions']);router[_0xb6e6('0x63')](_0xb6e6('0x52'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x6a')]);router['delete'](_0xb6e6('0x54'),auth['isAuthenticated'](),controller[_0xb6e6('0x6b')]);router[_0xb6e6('0x63')](_0xb6e6('0x6c'),auth[_0xb6e6('0x9')](),controller['removeWhatsappInteractions']);router[_0xb6e6('0x63')](_0xb6e6('0x2b'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x6d')]);router[_0xb6e6('0x63')]('/:id/mail_accounts',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x6e')]);router['delete']('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0xb6e6('0x6f')]);router['delete'](_0xb6e6('0x31'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x70')]);router['delete']('/:id/chat_websites',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x71')]);router['delete']('/:id/whatsapp_accounts',auth[_0xb6e6('0x9')](),controller['removeWhatsappAccounts']);router[_0xb6e6('0x63')]('/:id/square_projects',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x72')]);router['delete'](_0xb6e6('0x36'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x73')]);module[_0xb6e6('0x74')]=router;
\ No newline at end of file
+var _0x38c9=['./user.controller','index','get','isAuthenticated','describe','whoami','/presence','getPresence','show','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getSquareProjects','getScheduledCalls','getApiKey','post','addContacts','/create_many','bulkCreate','addQueues','join','root','server/files/images/','format','%s-%s','originalname','/:id/avatar','file','addAvatar','login','/:id/logout','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','/:id/fax_accounts','addFaxAccounts','addMailAccounts','addSmsAccounts','addWhatsappAccounts','addSquareProjects','/:id/api_key','createApiKey','put','/:id','/:id/password','changePassword','removeQueues','delete','destroy','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1aa099,_0x18d212){var _0x4341db=function(_0x4eb61f){while(--_0x4eb61f){_0x1aa099['push'](_0x1aa099['shift']());}};_0x4341db(++_0x18d212);}(_0x38c9,0x6e));var _0x938c=function(_0x5959c9,_0x2ed153){_0x5959c9=_0x5959c9-0x0;var _0x4ffcbc=_0x38c9[_0x5959c9];return _0x4ffcbc;};'use strict';var multer=require(_0x938c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x938c('0x1'));var express=require(_0x938c('0x2'));var router=express[_0x938c('0x3')]();var fs_extra=require(_0x938c('0x4'));var auth=require(_0x938c('0x5'));var interaction=require(_0x938c('0x6'));var config=require(_0x938c('0x7'));var controller=require(_0x938c('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x938c('0x9')]);router[_0x938c('0xa')]('/describe',auth[_0x938c('0xb')](),controller[_0x938c('0xc')]);router['get']('/whoami',auth[_0x938c('0xb')](),controller[_0x938c('0xd')]);router['get'](_0x938c('0xe'),auth[_0x938c('0xb')](),controller[_0x938c('0xf')]);router[_0x938c('0xa')]('/:id',auth[_0x938c('0xb')](),controller[_0x938c('0x10')]);router[_0x938c('0xa')]('/:id/avatar',controller[_0x938c('0x11')]);router['get'](_0x938c('0x12'),auth[_0x938c('0xb')](),controller[_0x938c('0x13')]);router[_0x938c('0xa')](_0x938c('0x14'),auth['isAuthenticated'](),controller[_0x938c('0x15')]);router[_0x938c('0xa')](_0x938c('0x16'),auth[_0x938c('0xb')](),controller['getQueues']);router[_0x938c('0xa')](_0x938c('0x17'),auth['isAuthenticated'](),controller[_0x938c('0x18')]);router[_0x938c('0xa')](_0x938c('0x19'),auth[_0x938c('0xb')](),controller[_0x938c('0x1a')]);router[_0x938c('0xa')]('/:id/recordings',auth[_0x938c('0xb')](),controller[_0x938c('0x1b')]);router[_0x938c('0xa')]('/:id/screen_recordings',auth[_0x938c('0xb')](),controller[_0x938c('0x1c')]);router['get'](_0x938c('0x1d'),auth['isAuthenticated'](),controller[_0x938c('0x1e')]);router['get'](_0x938c('0x1f'),auth[_0x938c('0xb')](),controller[_0x938c('0x20')]);router['get'](_0x938c('0x21'),auth[_0x938c('0xb')](),controller[_0x938c('0x22')]);router[_0x938c('0xa')]('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0x938c('0x23')]);router[_0x938c('0xa')](_0x938c('0x24'),auth[_0x938c('0xb')](),controller['getFaxInteractions']);router[_0x938c('0xa')](_0x938c('0x25'),auth[_0x938c('0xb')](),controller[_0x938c('0x26')]);router['get'](_0x938c('0x27'),auth[_0x938c('0xb')](),controller[_0x938c('0x28')]);router['get'](_0x938c('0x29'),auth['isAuthenticated'](),controller[_0x938c('0x2a')]);router['get']('/:id/agents',auth[_0x938c('0xb')](),controller[_0x938c('0x2b')]);router[_0x938c('0xa')](_0x938c('0x2c'),auth['isAuthenticated'](),controller[_0x938c('0x2d')]);router[_0x938c('0xa')]('/:id/fax_accounts',auth[_0x938c('0xb')](),controller[_0x938c('0x2e')]);router[_0x938c('0xa')](_0x938c('0x2f'),auth[_0x938c('0xb')](),controller[_0x938c('0x30')]);router[_0x938c('0xa')](_0x938c('0x31'),auth[_0x938c('0xb')](),controller[_0x938c('0x32')]);router[_0x938c('0xa')](_0x938c('0x33'),auth['isAuthenticated'](),controller[_0x938c('0x34')]);router[_0x938c('0xa')](_0x938c('0x35'),auth[_0x938c('0xb')](),controller[_0x938c('0x36')]);router['get'](_0x938c('0x37'),auth[_0x938c('0xb')](),controller[_0x938c('0x38')]);router['get']('/:id/square_projects',auth[_0x938c('0xb')](),controller[_0x938c('0x39')]);router[_0x938c('0xa')]('/:id/scheduled_calls',auth[_0x938c('0xb')](),controller[_0x938c('0x3a')]);router[_0x938c('0xa')]('/:id/api_key',auth[_0x938c('0xb')](),controller[_0x938c('0x3b')]);router[_0x938c('0x3c')](_0x938c('0x14'),auth[_0x938c('0xb')](),controller[_0x938c('0x3d')]);router[_0x938c('0x3c')]('/',auth[_0x938c('0xb')](),controller['create']);router[_0x938c('0x3c')](_0x938c('0x3e'),auth[_0x938c('0xb')](),controller[_0x938c('0x3f')]);router[_0x938c('0x3c')](_0x938c('0x16'),auth[_0x938c('0xb')](),controller[_0x938c('0x40')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x11ea81,_0xbd7d08,_0x7c53a2){_0x7c53a2(null,path[_0x938c('0x41')](config[_0x938c('0x42')],_0x938c('0x43')));},'filename':function(_0x14c656,_0x5d830d,_0x30891b){_0x30891b(null,util[_0x938c('0x44')](_0x938c('0x45'),Date['now'](),_0x5d830d[_0x938c('0x46')]));}})});router[_0x938c('0x3c')](_0x938c('0x47'),upload['single'](_0x938c('0x48')),controller[_0x938c('0x49')]);router[_0x938c('0x3c')]('/:id/login',auth[_0x938c('0xb')](),controller[_0x938c('0x4a')]);router[_0x938c('0x3c')](_0x938c('0x4b'),auth[_0x938c('0xb')](),controller['logout']);router[_0x938c('0x3c')]('/:id/pause',auth[_0x938c('0xb')](),controller[_0x938c('0x4c')]);router[_0x938c('0x3c')](_0x938c('0x4d'),auth[_0x938c('0xb')](),controller[_0x938c('0x4e')]);router[_0x938c('0x3c')](_0x938c('0x27'),auth[_0x938c('0xb')](),controller[_0x938c('0x4f')]);router[_0x938c('0x3c')](_0x938c('0x50'),auth['isAuthenticated'](),controller['addChatInteractions']);router['post'](_0x938c('0x51'),auth[_0x938c('0xb')](),controller[_0x938c('0x52')]);router[_0x938c('0x3c')](_0x938c('0x53'),auth['isAuthenticated'](),controller[_0x938c('0x54')]);router[_0x938c('0x3c')](_0x938c('0x55'),auth['isAuthenticated'](),controller[_0x938c('0x56')]);router['post'](_0x938c('0x57'),auth[_0x938c('0xb')](),controller[_0x938c('0x58')]);router[_0x938c('0x3c')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x938c('0x59')]);router[_0x938c('0x3c')](_0x938c('0x5a'),auth[_0x938c('0xb')](),controller[_0x938c('0x5b')]);router[_0x938c('0x3c')](_0x938c('0x2f'),auth[_0x938c('0xb')](),controller[_0x938c('0x5c')]);router[_0x938c('0x3c')](_0x938c('0x31'),auth[_0x938c('0xb')](),controller['addOpenchannelAccounts']);router['post'](_0x938c('0x33'),auth[_0x938c('0xb')](),controller[_0x938c('0x5d')]);router[_0x938c('0x3c')](_0x938c('0x35'),auth['isAuthenticated'](),controller['addChatWebsites']);router[_0x938c('0x3c')](_0x938c('0x37'),auth[_0x938c('0xb')](),controller[_0x938c('0x5e')]);router[_0x938c('0x3c')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0x938c('0x5f')]);router[_0x938c('0x3c')](_0x938c('0x60'),auth[_0x938c('0xb')](),controller[_0x938c('0x61')]);router[_0x938c('0x62')](_0x938c('0x63'),auth[_0x938c('0xb')](),controller['update']);router[_0x938c('0x62')](_0x938c('0x64'),auth[_0x938c('0xb')](),controller[_0x938c('0x65')]);router['delete']('/:id/queues',auth[_0x938c('0xb')](),controller[_0x938c('0x66')]);router[_0x938c('0x67')](_0x938c('0x27'),auth[_0x938c('0xb')](),controller['removeTeams']);router[_0x938c('0x67')](_0x938c('0x63'),auth['isAuthenticated'](),controller[_0x938c('0x68')]);router[_0x938c('0x67')](_0x938c('0x50'),auth['isAuthenticated'](),controller['removeChatInteractions']);router[_0x938c('0x67')](_0x938c('0x51'),auth[_0x938c('0xb')](),controller[_0x938c('0x69')]);router[_0x938c('0x67')](_0x938c('0x53'),auth['isAuthenticated'](),controller['removeFaxInteractions']);router[_0x938c('0x67')](_0x938c('0x55'),auth[_0x938c('0xb')](),controller[_0x938c('0x6a')]);router[_0x938c('0x67')](_0x938c('0x57'),auth[_0x938c('0xb')](),controller[_0x938c('0x6b')]);router[_0x938c('0x67')](_0x938c('0x6c'),auth[_0x938c('0xb')](),controller[_0x938c('0x6d')]);router[_0x938c('0x67')](_0x938c('0x5a'),auth[_0x938c('0xb')](),controller[_0x938c('0x6e')]);router[_0x938c('0x67')](_0x938c('0x2f'),auth['isAuthenticated'](),controller[_0x938c('0x6f')]);router[_0x938c('0x67')](_0x938c('0x31'),auth[_0x938c('0xb')](),controller[_0x938c('0x70')]);router[_0x938c('0x67')](_0x938c('0x33'),auth[_0x938c('0xb')](),controller['removeSmsAccounts']);router[_0x938c('0x67')](_0x938c('0x35'),auth[_0x938c('0xb')](),controller[_0x938c('0x71')]);router[_0x938c('0x67')](_0x938c('0x37'),auth[_0x938c('0xb')](),controller[_0x938c('0x72')]);router[_0x938c('0x67')]('/:id/square_projects',auth[_0x938c('0xb')](),controller[_0x938c('0x73')]);router['delete'](_0x938c('0x60'),auth[_0x938c('0xb')](),controller[_0x938c('0x74')]);module[_0x938c('0x75')]=router;
\ No newline at end of file
index 9362e8a..446d562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','lodash','exports','setDataValue','name','The\x20name\x20of\x20the\x20user','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','STRING','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','format','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','rfc2833','nonat','update','outgoing','yes','force_rport,comedia','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','refuse','originate','uac','uas','fingerprint','certificate','passive','actpass','TEXT','showWebBar','get','isArray','udp','wss','encryption','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','/etc/pki/tls/private/motion.key','join','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blockedAt','loginAttempts','sequelize','moment'];(function(_0x2d91c6,_0x10ae0e){var _0x3a8d19=function(_0x27a3ce){while(--_0x27a3ce){_0x2d91c6['push'](_0x2d91c6['shift']());}};_0x3a8d19(++_0x10ae0e);}(_0xabce,0x103));var _0xeabc=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xabce[_0x2576d7];return _0x16a08c;};'use strict';var Sequelize=require(_0xeabc('0x0'));var moment=require(_0xeabc('0x1'));var util=require(_0xeabc('0x2'));var _=require(_0xeabc('0x3'));module[_0xeabc('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2e01eb){this[_0xeabc('0x5')](_0xeabc('0x6'),_0x2e01eb);this['setDataValue']('defaultuser',_0x2e01eb);},'comment':_0xeabc('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x229ba4){this['setDataValue'](_0xeabc('0x8'),_0x229ba4);this[_0xeabc('0x5')](_0xeabc('0x9'),util['format'](_0xeabc('0xa'),_0x229ba4,this[_0xeabc('0xb')](_0xeabc('0xc'))));}},'alias':{'type':Sequelize[_0xeabc('0xd')]},'email':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'unique':_0xeabc('0xe'),'validate':{'isEmail':!![]},'set':function(_0x111aaf){if(_0x111aaf){this[_0xeabc('0x5')](_0xeabc('0xe'),_0x111aaf[_0xeabc('0xf')]());}}},'role':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x11'),_0xeabc('0x12'),_0xeabc('0x13'),_0xeabc('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xeabc('0x15')},'internal':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':![],'unique':_0xeabc('0xc'),'set':function(_0x55f0de){this['setDataValue'](_0xeabc('0xc'),_0x55f0de);this[_0xeabc('0x5')](_0xeabc('0x17'),_0x55f0de);this['setDataValue'](_0xeabc('0x9'),util[_0xeabc('0x18')]('\x22%s\x22\x20<%s>',this['getDataValue'](_0xeabc('0x8')),_0x55f0de));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xeabc('0xd')]},'mobile':{'type':Sequelize[_0xeabc('0xd')]},'address':{'type':Sequelize[_0xeabc('0xd')]},'zipcode':{'type':Sequelize[_0xeabc('0xd')]},'userpic':{'type':Sequelize[_0xeabc('0xd')]},'city':{'type':Sequelize[_0xeabc('0xd')]},'country':{'type':Sequelize[_0xeabc('0xd')]},'online':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':_0xeabc('0x1a')},'lastPauseAt':{'type':Sequelize[_0xeabc('0x1b')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xeabc('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'description':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'host':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1c')},'ipaddr':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'port':{'type':Sequelize[_0xeabc('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x1d'),'user',_0xeabc('0x1e')),'allowNull':!![],'defaultValue':_0xeabc('0x1d')},'context':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1f')},'callingpres':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x20'),_0xeabc('0x21'),_0xeabc('0x22'),_0xeabc('0x23'),'PROHIB_NOT_SCREENED',_0xeabc('0x24'),'PROHIB_FAILED_SCREEN',_0xeabc('0x25')),'allowNull':!![]},'deny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'permit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'transport':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'udp','set':function(_0x78510a){this[_0xeabc('0x5')](_0xeabc('0x26'),_0x78510a?_0x78510a['join'](','):null);},'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x26'))?this[_0xeabc('0xb')]('transport')[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x28')},'dtmfmode':{'type':Sequelize[_0xeabc('0x10')]('rfc2833',_0xeabc('0x29'),_0xeabc('0x2a'),'inband','auto'),'allowNull':!![],'defaultValue':_0xeabc('0x2b')},'directmedia':{'type':Sequelize[_0xeabc('0x10')]('yes','no',_0xeabc('0x2c'),_0xeabc('0x2d'),_0xeabc('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xeabc('0x30'),'set':function(_0x2bda29){this[_0xeabc('0x5')]('nat',_0x2bda29?_0x2bda29['join'](','):null);},'get':function(){return this[_0xeabc('0xb')]('nat')?this[_0xeabc('0xb')]('nat')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xeabc('0xd')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xeabc('0xd')]},'language':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0xbd7f03){this[_0xeabc('0x5')](_0xeabc('0x31'),_0xbd7f03?_0xbd7f03['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xeabc('0x31'))?this[_0xeabc('0xb')](_0xeabc('0x31'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0xc6af4d){this['setDataValue'](_0xeabc('0x32'),_0xc6af4d?_0xc6af4d['join'](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xeabc('0xb')](_0xeabc('0x32'))[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x33')},'trustrpid':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'busylevel':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'template':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x36'),_0xeabc('0x37'),_0xeabc('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x39'),_0xeabc('0x3a')),'allowNull':!![],'defaultValue':_0xeabc('0x3a')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'keepalive':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x3b'),_0xeabc('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0xeabc('0x3d'),_0xeabc('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no',_0xeabc('0x2c'),_0xeabc('0x2d'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0xeabc('0x1b')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xeabc('0x3f')]},'showWebBar':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0,'set':function(_0x4f5451){this[_0xeabc('0x5')](_0xeabc('0x40'),_0x4f5451);var _0x520f4c=this[_0xeabc('0x41')]({'plain':!![]});switch(_0x4f5451){case 0x0:case 0x1:var _0x800880=_0x520f4c[_0xeabc('0x26')]?_[_0xeabc('0x42')](_0x520f4c[_0xeabc('0x26')])?_0x520f4c[_0xeabc('0x26')]['join']():_0x520f4c[_0xeabc('0x26')]:_0xeabc('0x43');if(_0x800880===_0xeabc('0x44')){_0x800880=_0xeabc('0x43');}this[_0xeabc('0x5')](_0xeabc('0x26'),_0x800880);this[_0xeabc('0x5')](_0xeabc('0x45'),'no');this[_0xeabc('0x5')]('avpf',null);this[_0xeabc('0x5')]('force_avp',null);this[_0xeabc('0x5')](_0xeabc('0x46'),null);this[_0xeabc('0x5')](_0xeabc('0x47'),null);this[_0xeabc('0x5')](_0xeabc('0x48'),null);this[_0xeabc('0x5')](_0xeabc('0x49'),null);this[_0xeabc('0x5')](_0xeabc('0x4a'),null);this['setDataValue'](_0xeabc('0x4b'),null);this[_0xeabc('0x5')](_0xeabc('0x4c'),'no');break;case 0x2:this[_0xeabc('0x5')]('transport',_0xeabc('0x44'));this['setDataValue']('encryption',_0xeabc('0x2f'));this[_0xeabc('0x5')](_0xeabc('0x4d'),_0xeabc('0x2f'));this['setDataValue']('force_avp',_0xeabc('0x2f'));this['setDataValue']('icesupport',_0xeabc('0x2f'));this['setDataValue']('dtlsenable',_0xeabc('0x2f'));this[_0xeabc('0x5')]('dtlsverify','no');this['setDataValue'](_0xeabc('0x49'),'actpass');this[_0xeabc('0x5')](_0xeabc('0x4a'),_0x520f4c['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this[_0xeabc('0x5')](_0xeabc('0x4b'),_0x520f4c[_0xeabc('0x4b')]||_0xeabc('0x4e'));this[_0xeabc('0x5')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xeabc('0x3f')],'set':function(_0x5c760d){this[_0xeabc('0x5')]('permissions',_0x5c760d?_0x5c760d[_0xeabc('0x4f')](','):[]);},'get':function(){return this['getDataValue'](_0xeabc('0x50'))?_['map'](this[_0xeabc('0xb')](_0xeabc('0x50'))[_0xeabc('0x27')](','),function(_0x36cc41){return parseInt(_0x36cc41,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarEnableJaws':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x51'))?this[_0xeabc('0xb')](_0xeabc('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![],'set':function(_0x49679d){if(typeof _0x49679d===_0xeabc('0x52')){var _0x403b18=_0x49679d==='1'?!![]:_0x49679d==='0'?![]:_0x49679d==='true'?!![]:_0x49679d===_0xeabc('0x53')?![]:![];this[_0xeabc('0x5')](_0xeabc('0x54'),_0x403b18);}else{this[_0xeabc('0x5')](_0xeabc('0x54'),_0x49679d);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3df657){this['setDataValue']('blocked',_0x3df657);if(_0x3df657===!![]){this['setDataValue'](_0xeabc('0x55'),moment());this[_0xeabc('0x5')](_0xeabc('0x56'),0x0);}else{this[_0xeabc('0x5')](_0xeabc('0x55'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xeabc('0x16')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1298=['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','split','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','TEXT','get','isArray','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','dtlsprivatekey','dtlsverify','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','rtcp_mux','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','blockedAt','loginAttempts','moment','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','email','ENUM','agent','telephone','local','INTEGER','\x22%s\x22\x20<%s>','BOOLEAN','DEFAULT\x20PAUSE','DATE','friend','user','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','auto','yes','nonat'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1298,0x19e));var _0x8129=function(_0x4d75a2,_0x497cb9){_0x4d75a2=_0x4d75a2-0x0;var _0x12b531=_0x1298[_0x4d75a2];return _0x12b531;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8129('0x0'));var util=require('util');var _=require(_0x8129('0x1'));module[_0x8129('0x2')]={'name':{'type':Sequelize[_0x8129('0x3')],'allowNull':![],'unique':_0x8129('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x6031b2){this[_0x8129('0x5')](_0x8129('0x4'),_0x6031b2);this['setDataValue'](_0x8129('0x6'),_0x6031b2);},'comment':_0x8129('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x4f0a40){this[_0x8129('0x5')](_0x8129('0x8'),_0x4f0a40);this[_0x8129('0x5')](_0x8129('0x9'),util[_0x8129('0xa')]('\x22%s\x22\x20<%s>',_0x4f0a40,this['getDataValue']('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x8129('0x3')],'allowNull':![],'unique':_0x8129('0xb'),'validate':{'isEmail':!![]},'set':function(_0x4cfa1d){if(_0x4cfa1d){this[_0x8129('0x5')]('email',_0x4cfa1d['toLowerCase']());}}},'role':{'type':Sequelize[_0x8129('0xc')]('admin','user',_0x8129('0xd'),_0x8129('0xe')),'allowNull':![]},'password':{'type':Sequelize[_0x8129('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x8129('0x3')],'defaultValue':_0x8129('0xf')},'internal':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':![],'unique':'internal','set':function(_0x4dbd35){this[_0x8129('0x5')]('internal',_0x4dbd35);this[_0x8129('0x5')]('accountcode',_0x4dbd35);this[_0x8129('0x5')](_0x8129('0x9'),util['format'](_0x8129('0x11'),this['getDataValue'](_0x8129('0x8')),_0x4dbd35));}},'salt':{'type':Sequelize[_0x8129('0x3')]},'phone':{'type':Sequelize[_0x8129('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x8129('0x3')]},'zipcode':{'type':Sequelize[_0x8129('0x3')]},'userpic':{'type':Sequelize[_0x8129('0x3')]},'city':{'type':Sequelize[_0x8129('0x3')]},'country':{'type':Sequelize[_0x8129('0x3')]},'online':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x8129('0x3')],'defaultValue':_0x8129('0x13')},'lastPauseAt':{'type':Sequelize[_0x8129('0x14')]},'chatCapacity':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x8129('0x10')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'description':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x8129('0x10')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x8129('0x15'),_0x8129('0x16'),'peer'),'allowNull':!![],'defaultValue':_0x8129('0x15')},'context':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x17'),_0x8129('0x18'),_0x8129('0x19'),_0x8129('0x1a'),_0x8129('0x1b'),_0x8129('0x1c'),_0x8129('0x1d'),_0x8129('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![],'defaultValue':_0x8129('0x1f'),'set':function(_0x3d55d3){this['setDataValue'](_0x8129('0x20'),_0x3d55d3?_0x3d55d3[_0x8129('0x21')](','):null);},'get':function(){return this[_0x8129('0x22')](_0x8129('0x20'))?this[_0x8129('0x22')]('transport')['split'](','):null;},'comment':_0x8129('0x23')},'dtmfmode':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x24'),_0x8129('0x25'),'shortinfo','inband',_0x8129('0x26')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no',_0x8129('0x28'),_0x8129('0x29'),_0x8129('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![],'defaultValue':_0x8129('0x2b'),'set':function(_0x50bfeb){this['setDataValue']('nat',_0x50bfeb?_0x50bfeb[_0x8129('0x21')](','):null);},'get':function(){return this[_0x8129('0x22')](_0x8129('0x2c'))?this['getDataValue'](_0x8129('0x2c'))['split'](','):null;},'comment':_0x8129('0x2d')},'callgroup':{'type':Sequelize[_0x8129('0x3')]},'namedcallgroup':{'type':Sequelize[_0x8129('0x3')]},'pickupgroup':{'type':Sequelize[_0x8129('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x8129('0x3')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x8129('0x3')]},'disallow':{'type':Sequelize[_0x8129('0x3')],'allowNull':![],'defaultValue':_0x8129('0x2e')},'allow':{'type':Sequelize[_0x8129('0x3')],'allowNull':![],'defaultValue':_0x8129('0x2f'),'set':function(_0x34a232){this[_0x8129('0x5')](_0x8129('0x30'),_0x34a232?_0x34a232[_0x8129('0x21')](';'):_0x8129('0x2f'));},'get':function(){return this[_0x8129('0x22')](_0x8129('0x30'))?this[_0x8129('0x22')](_0x8129('0x30'))['split'](';'):null;},'comment':_0x8129('0x31')},'autoframing':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![],'set':function(_0x56ef89){this['setDataValue'](_0x8129('0x32'),_0x56ef89?_0x56ef89[_0x8129('0x21')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0x8129('0x22')](_0x8129('0x32'))[_0x8129('0x33')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x8129('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no',_0x8129('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x8129('0xc')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0x8129('0x27'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x8129('0x35')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no',_0x8129('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x8129('0x37'),_0x8129('0x38'),_0x8129('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x3a'),_0x8129('0x3b')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x8129('0xc')]('yes','no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x8129('0xc')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x8129('0xc')]('yes','no',_0x8129('0x3c'),_0x8129('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x8129('0x3e'),_0x8129('0x3f'),_0x8129('0x40')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x8129('0x10')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x8129('0xc')](_0x8129('0x27'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x8129('0x27'),'no',_0x8129('0x28'),'update','update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x8129('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x8129('0x14')]},'passwordResetAt':{'type':Sequelize[_0x8129('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x8129('0x41')]},'showWebBar':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0,'set':function(_0x1301a7){this[_0x8129('0x5')]('showWebBar',_0x1301a7);var _0x44ef71=this[_0x8129('0x42')]({'plain':!![]});switch(_0x1301a7){case 0x0:case 0x1:var _0x2e4c76=_0x44ef71[_0x8129('0x20')]?_[_0x8129('0x43')](_0x44ef71[_0x8129('0x20')])?_0x44ef71[_0x8129('0x20')][_0x8129('0x21')]():_0x44ef71['transport']:_0x8129('0x1f');if(_0x2e4c76===_0x8129('0x44')){_0x2e4c76=_0x8129('0x1f');}this['setDataValue'](_0x8129('0x20'),_0x2e4c76);this[_0x8129('0x5')](_0x8129('0x45'),'no');this[_0x8129('0x5')](_0x8129('0x46'),null);this[_0x8129('0x5')](_0x8129('0x47'),null);this[_0x8129('0x5')](_0x8129('0x48'),null);this[_0x8129('0x5')](_0x8129('0x49'),null);this[_0x8129('0x5')]('dtlsverify',null);this[_0x8129('0x5')](_0x8129('0x4a'),null);this[_0x8129('0x5')](_0x8129('0x4b'),null);this['setDataValue'](_0x8129('0x4c'),null);this[_0x8129('0x5')]('rtcp_mux','no');break;case 0x2:this[_0x8129('0x5')]('transport',_0x8129('0x44'));this[_0x8129('0x5')](_0x8129('0x45'),'yes');this[_0x8129('0x5')]('avpf',_0x8129('0x27'));this[_0x8129('0x5')](_0x8129('0x47'),_0x8129('0x27'));this[_0x8129('0x5')](_0x8129('0x48'),_0x8129('0x27'));this[_0x8129('0x5')]('dtlsenable',_0x8129('0x27'));this[_0x8129('0x5')](_0x8129('0x4d'),'no');this[_0x8129('0x5')]('dtlssetup',_0x8129('0x40'));this['setDataValue'](_0x8129('0x4b'),_0x44ef71['dtlscertfile']||_0x8129('0x4e'));this['setDataValue'](_0x8129('0x4c'),_0x44ef71[_0x8129('0x4c')]||_0x8129('0x4f'));this[_0x8129('0x5')](_0x8129('0x50'),_0x8129('0x27'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x34d92c){this[_0x8129('0x5')](_0x8129('0x51'),_0x34d92c?_0x34d92c[_0x8129('0x21')](','):[]);},'get':function(){return this[_0x8129('0x22')]('permissions')?_[_0x8129('0x52')](this[_0x8129('0x22')](_0x8129('0x51'))[_0x8129('0x33')](','),function(_0xbd3d49){return parseInt(_0xbd3d49,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x8129('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x8129('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x8129('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x8129('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x8129('0xc')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x8129('0x3')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x8129('0x53')],'get':function(){return this[_0x8129('0x22')]('phoneBarEnableScreenRecordingByAgent')?this['getDataValue'](_0x8129('0x54')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'interface':{'type':Sequelize[_0x8129('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x8129('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![],'set':function(_0x339157){if(typeof _0x339157===_0x8129('0x55')){var _0x2ac3ba=_0x339157==='1'?!![]:_0x339157==='0'?![]:_0x339157==='true'?!![]:_0x339157===_0x8129('0x56')?![]:![];this['setDataValue'](_0x8129('0x57'),_0x2ac3ba);}else{this['setDataValue'](_0x8129('0x57'),_0x339157);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x28a986){this[_0x8129('0x5')](_0x8129('0x58'),_0x28a986);if(_0x28a986===!![]){this[_0x8129('0x5')](_0x8129('0x59'),moment());this['setDataValue'](_0x8129('0x5a'),0x0);}else{this['setDataValue'](_0x8129('0x59'),null);}}},'blockedAt':{'type':Sequelize[_0x8129('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x8129('0x10')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x8129('0x12')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8129('0x12')],'defaultValue':!![]}};
\ No newline at end of file
index 411cfac..9670be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','updatePasswordsHistory','addQueues','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','penalty','toLowerCase','QueueId','emit','Queue:save','voice','VoiceQueue','online','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','channel','remove','Queues','isArray','Queue:remove','addAvatar','userpic','filename','join','download','existsSync','root','server/files/images/','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','filters','order','sort','pick','where','merge','options','include','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','getQueues','Queue','getVoiceQueuesRt','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','WhatsappInteraction','getWhatsappInteractions','login','phone','mobile','format','intrf','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','LOGININPAUSE','isMiddleware','resolve','logout','pause','PAUSE','updateAttributes','type','unpause','mailPause','faxPause','openchannelPause','smsPause','pauseType','QueuePause','manual','set','%s%s','Pause','getTeams','Team','addTeams','omit','setDataValue','Voice','getChatQueues','Chat','getMailQueues','Mail','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','getDataValue','removeTeams','getSmsQueues','Fax','getLists','getAgents','values','addChatInteractions','spread','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','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','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','concat','$and','$gt','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$any','Contact','dialActive','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','token','removeApiKey','apiKeyNonce','whoami','teams','queues','inbound','col','toString','asc','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','QueryTypes','select','ui.','InteractionId','field','ui.createdAt','user_has_','ui.UserId\x20=\x20?','moment','bluebird','util','path','squel','jayson/promise','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','./user.socket','register','redis','localhost','client','http','request','then','info','User,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','get','role','Users','user','Agents','agent','Telephones','telephone','filter','map','value','find','name','UserProfileResource','destroy','stack','send','index','fieldName','key','includes','salt','getOptions','User','includeAll','attributes','push','findAll','rows','query','openTabs','length','dataValues','sms','fax','mail','whatsapp','all','catch','show','params','model','differenceBy','keys','rawAttributes','password','intersection','fields','chat','openchannel','update','body','addContacts','ids','Setting','findById','securePassword','validatePasswordPattern','internal','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','voicemail','VoiceMail','fullname','permissions','101','102','103','113','104','105','107','108','109','100','111','114','115','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','each','UserProfileSection','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate'];(function(_0x574048,_0x1117b6){var _0xe704d5=function(_0x12f82e){while(--_0x12f82e){_0x574048['push'](_0x574048['shift']());}};_0xe704d5(++_0x1117b6);}(_0xa571,0x107));var _0x1a57=function(_0x49049b,_0x42a8b9){_0x49049b=_0x49049b-0x0;var _0x5e2a40=_0xa571[_0x49049b];return _0x5e2a40;};'use strict';var moment=require(_0x1a57('0x0'));var BPromise=require(_0x1a57('0x1'));var util=require(_0x1a57('0x2'));var path=require(_0x1a57('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x1a57('0x4'));var jayson=require(_0x1a57('0x5'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1a57('0x6'));var logger=require('../../config/logger')(_0x1a57('0x7'));var utils=require(_0x1a57('0x8'));var config=require(_0x1a57('0x9'));var licenseUtil=require(_0x1a57('0xa'));var db=require(_0x1a57('0xb'))['db'];var socket=require(_0x1a57('0xc'))(new Redis(config['redis']));require(_0x1a57('0xd'))[_0x1a57('0xe')](socket);config[_0x1a57('0xf')]=_['defaults'](config[_0x1a57('0xf')],{'host':_0x1a57('0x10'),'port':0x18eb});var client=jayson[_0x1a57('0x11')][_0x1a57('0x12')]({'port':0x232a});var values;function respondWithRpcPromise(_0x831937,_0x2980b2,_0x62cc63,_0x22c683){return new BPromise(function(_0x571607,_0x562fa4){var _0x2256af=_0x22c683||client;return _0x2256af[_0x1a57('0x13')](_0x831937,_0x62cc63)[_0x1a57('0x14')](function(_0x5ae643){logger[_0x1a57('0x15')](_0x1a57('0x16'),_0x2980b2,'request\x20sent');logger[_0x1a57('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x2980b2,_0x1a57('0x18'),JSON[_0x1a57('0x19')](_0x5ae643));if(_0x5ae643[_0x1a57('0x1a')]){if(_0x5ae643[_0x1a57('0x1a')]['code']===0x1f4){logger[_0x1a57('0x1a')]('User,\x20%s,\x20%s',_0x2980b2,_0x5ae643['error'][_0x1a57('0x1b')]);return _0x562fa4(_0x5ae643[_0x1a57('0x1a')][_0x1a57('0x1b')]);}logger['error'](_0x1a57('0x16'),_0x2980b2,_0x5ae643[_0x1a57('0x1a')][_0x1a57('0x1b')]);return _0x571607(_0x5ae643['error'][_0x1a57('0x1b')]);}else{logger[_0x1a57('0x15')](_0x1a57('0x16'),_0x2980b2,_0x1a57('0x18'));_0x571607(_0x5ae643[_0x1a57('0x1c')]['message']);}})['catch'](function(_0x439844){logger[_0x1a57('0x1a')](_0x1a57('0x16'),_0x2980b2,_0x439844);_0x562fa4(_0x439844);});});}function respondWithStatusCode(_0x4d3e05,_0x5c200e){_0x5c200e=_0x5c200e||0xcc;return function(_0x51e271){if(_0x51e271){return _0x4d3e05[_0x1a57('0x1d')](_0x5c200e);}return _0x4d3e05[_0x1a57('0x1e')](_0x5c200e)[_0x1a57('0x1f')]();};}function respondWithResult(_0xee133b,_0x277d06){_0x277d06=_0x277d06||0xc8;return function(_0x39d3ce){if(_0x39d3ce){return _0xee133b[_0x1a57('0x1e')](_0x277d06)[_0x1a57('0x20')](_0x39d3ce);}};}function respondWithFilteredResult(_0x183ca3,_0x35d5dc){return function(_0x29e7cd){if(_0x29e7cd){var _0x36b17e=typeof _0x35d5dc[_0x1a57('0x21')]===_0x1a57('0x22')&&typeof _0x35d5dc[_0x1a57('0x23')]===_0x1a57('0x22');var _0x25c1e9=_0x29e7cd[_0x1a57('0x24')];var _0x27cfe1=_0x36b17e?0x0:_0x35d5dc[_0x1a57('0x21')];var _0x26584b=_0x36b17e?_0x29e7cd[_0x1a57('0x24')]:_0x35d5dc['offset']+_0x35d5dc['limit'];var _0x139d8c;if(_0x26584b>=_0x25c1e9){_0x26584b=_0x25c1e9;_0x139d8c=0xc8;}else{_0x139d8c=0xce;}_0x183ca3[_0x1a57('0x1e')](_0x139d8c);return _0x183ca3['set'](_0x1a57('0x25'),_0x27cfe1+'-'+_0x26584b+'/'+_0x25c1e9)['json'](_0x29e7cd);}return null;};}function saveUpdates(_0x2d8738){return function(_0x4a2901){if(_0x4a2901){return _0x4a2901['update'](_0x2d8738)[_0x1a57('0x14')](function(_0x274fe6){return _0x274fe6;});}return null;};}function removeEntity(_0x30527c){return function(_0xe49543){if(_0xe49543){return _0xe49543['destroy']()[_0x1a57('0x14')](function(){var _0x396832=_0xe49543[_0x1a57('0x26')]({'plain':!![]});if(_0x396832[_0x1a57('0x27')]==='admin')return;var _0xa42d2b=[{'name':_0x1a57('0x28'),'value':_0x1a57('0x29'),'ignore':!![]},{'name':_0x1a57('0x2a'),'value':_0x1a57('0x2b'),'ignore':![]},{'name':_0x1a57('0x2c'),'value':_0x1a57('0x2d'),'ignore':![]}];var _0x1e7f0d=_(_0xa42d2b)[_0x1a57('0x2e')]('ignore')[_0x1a57('0x2f')](_0x1a57('0x30'))['value']();if(_['includes'](_0x1e7f0d,_0x396832[_0x1a57('0x27')])){return;}var _0x136842=_[_0x1a57('0x31')](_0xa42d2b,[_0x1a57('0x30'),_0x396832[_0x1a57('0x27')]])[_0x1a57('0x32')];return db[_0x1a57('0x33')][_0x1a57('0x34')]({'where':{'type':_0x136842,'resourceId':_0x396832['id']}})[_0x1a57('0x14')](function(){return _0xe49543;});})[_0x1a57('0x14')](function(){_0x30527c[_0x1a57('0x1e')](0xcc)[_0x1a57('0x1f')]();});}};}function handleEntityNotFound(_0x12f3a7){return function(_0x1a6231){if(!_0x1a6231){_0x12f3a7[_0x1a57('0x1d')](0x194);}return _0x1a6231;};}function handleError(_0x12102f,_0x90b82e){_0x90b82e=_0x90b82e||0x1f4;return function(_0x43880d){logger['error'](_0x43880d[_0x1a57('0x35')]);if(_0x43880d[_0x1a57('0x32')]){delete _0x43880d[_0x1a57('0x32')];}_0x12102f[_0x1a57('0x1e')](_0x90b82e)[_0x1a57('0x36')](_0x43880d);};}exports[_0x1a57('0x37')]=function(_0x939976,_0x23d087){var _0x1b6514={},_0x490119={'count':0x0,'rows':[]};var _0x4c37af=_(db['User']['rawAttributes'])[_0x1a57('0x2f')](function(_0x14d619){return{'name':_0x14d619[_0x1a57('0x38')],'type':_0x14d619['type'][_0x1a57('0x39')]};})[_0x1a57('0x2e')](function(_0x2bce24){return!_[_0x1a57('0x3a')](['password',_0x1a57('0x3b')],_0x2bce24['name']);})[_0x1a57('0x30')]();_0x1b6514=qs[_0x1a57('0x3c')](_0x4c37af,_0x939976);var _0x33b1f3={'where':_0x1b6514['where']};return db[_0x1a57('0x3d')][_0x1a57('0x24')](_0x33b1f3)[_0x1a57('0x14')](function(_0x4519d0){_0x490119[_0x1a57('0x24')]=_0x4519d0;if(_0x939976['query'][_0x1a57('0x3e')]){_0x1b6514['include']=[{'all':!![]}];}if(!_['includes'](_0x1b6514[_0x1a57('0x3f')],'id')){_0x1b6514['attributes'][_0x1a57('0x40')]('id');}return db[_0x1a57('0x3d')][_0x1a57('0x41')](_0x1b6514);})['then'](function(_0x188a50){_0x490119[_0x1a57('0x42')]=_0x188a50;if(_0x939976[_0x1a57('0x43')][_0x1a57('0x44')]==='true'){var _0xc7bab4=[];for(var _0x150fb6=0x0;_0x150fb6<_0x490119['rows'][_0x1a57('0x45')];_0x150fb6++){_0xc7bab4['push'](get_open_tabs('chat',_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x47'),_0x490119['rows'][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x48'),_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4['push'](get_open_tabs(_0x1a57('0x49'),_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4[_0x1a57('0x40')](get_open_tabs('openchannel',_0x490119[_0x1a57('0x42')][_0x150fb6]['dataValues']));_0xc7bab4[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x4a'),_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));}return BPromise[_0x1a57('0x4b')](_0xc7bab4)[_0x1a57('0x14')](function(_0x28f629){return _0x490119;});}else{return _0x490119;}})[_0x1a57('0x14')](respondWithFilteredResult(_0x23d087,_0x1b6514))[_0x1a57('0x4c')](handleError(_0x23d087,null));};exports[_0x1a57('0x4d')]=function(_0x7413df,_0x136335){var _0x475088={'raw':![],'where':{'id':_0x7413df[_0x1a57('0x4e')]['id']}},_0x47f9da={};_0x47f9da[_0x1a57('0x4f')]=_[_0x1a57('0x50')](_[_0x1a57('0x51')](db[_0x1a57('0x3d')][_0x1a57('0x52')]),[_0x1a57('0x53'),_0x1a57('0x3b')]);_0x47f9da[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x7413df[_0x1a57('0x43')]);_0x47f9da['filters']=_[_0x1a57('0x54')](_0x47f9da[_0x1a57('0x4f')],_0x47f9da['query']);_0x475088[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x47f9da['model'],qs[_0x1a57('0x55')](_0x7413df[_0x1a57('0x43')]['fields']));_0x475088['attributes']=_0x475088['attributes'][_0x1a57('0x45')]?_0x475088[_0x1a57('0x3f')]:_0x47f9da['model'];if(_0x7413df[_0x1a57('0x43')][_0x1a57('0x3e')]){_0x475088['include']=[{'all':!![]}];}_0x475088=_['merge']({},_0x475088,_0x7413df['options']);if(!_[_0x1a57('0x3a')](_0x475088[_0x1a57('0x3f')],'id')){_0x475088[_0x1a57('0x3f')][_0x1a57('0x40')]('id');}return db[_0x1a57('0x3d')][_0x1a57('0x31')](_0x475088)[_0x1a57('0x14')](handleEntityNotFound(_0x136335,null))[_0x1a57('0x14')](function(_0x516aff){var _0x5473cb=[];values=_0x516aff;if(_0x7413df['query']['openTabs']==='true'){_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x56'),_0x516aff[_0x1a57('0x46')]));_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x47'),_0x516aff[_0x1a57('0x46')]));_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x57'),_0x516aff['dataValues']));_0x5473cb['push'](get_open_tabs('whatsapp',_0x516aff[_0x1a57('0x46')]));_0x5473cb['push'](get_open_tabs(_0x1a57('0x48'),_0x516aff[_0x1a57('0x46')]));_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x49'),_0x516aff[_0x1a57('0x46')]));return BPromise[_0x1a57('0x4b')](_0x5473cb);}else{return values;}})[_0x1a57('0x14')](function(_0x561add){return values;})['then'](respondWithResult(_0x136335,null))['catch'](handleError(_0x136335,null));};exports[_0x1a57('0x58')]=function(_0x562775,_0x212440){if(_0x562775[_0x1a57('0x59')]['id']){delete _0x562775[_0x1a57('0x59')]['id'];}delete _0x562775[_0x1a57('0x59')][_0x1a57('0x27')];return db['User']['find']({'where':{'id':_0x562775[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x212440,null))[_0x1a57('0x14')](saveUpdates(_0x562775[_0x1a57('0x59')],null))[_0x1a57('0x14')](respondWithResult(_0x212440,null))[_0x1a57('0x4c')](handleError(_0x212440,null));};exports['describe']=function(_0x47db75,_0x3bf6dd){return db[_0x1a57('0x3d')]['describe']()['then'](respondWithResult(_0x3bf6dd,null))[_0x1a57('0x4c')](handleError(_0x3bf6dd,null));};exports[_0x1a57('0x5a')]=function(_0x31cb10,_0x10ceb8){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x31cb10[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x10ceb8,null))['then'](function(_0x2fbf49){if(_0x2fbf49){return _0x2fbf49[_0x1a57('0x5a')](_0x31cb10[_0x1a57('0x59')][_0x1a57('0x5b')],_['omit'](_0x31cb10[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x10ceb8,null))[_0x1a57('0x4c')](handleError(_0x10ceb8,null));};function validateUser(_0x1f4371){return new BPromise(function(_0x5ab7d1,_0x4aa36d){if(_0x1f4371['internal'])return _0x5ab7d1(_0x1f4371);return db[_0x1a57('0x5c')][_0x1a57('0x5d')](0x1)[_0x1a57('0x14')](function(_0x33ffe5){if(_0x33ffe5[_0x1a57('0x5e')])authService[_0x1a57('0x5f')](_0x1f4371[_0x1a57('0x53')]);db[_0x1a57('0x3d')]['max'](_0x1a57('0x60'))[_0x1a57('0x14')](function(_0x50ff89){if(_['isNil'](_0x50ff89)){_0x1f4371[_0x1a57('0x60')]=_0x33ffe5['min_internal']||0x1;return;}if(_[_0x1a57('0x61')](_0x33ffe5[_0x1a57('0x62')])||_0x33ffe5[_0x1a57('0x62')]===_0x50ff89){_0x1f4371[_0x1a57('0x60')]=_0x50ff89+0x1;return;}if(_0x33ffe5[_0x1a57('0x62')]>_0x50ff89){_0x1f4371[_0x1a57('0x60')]=_0x33ffe5[_0x1a57('0x62')];return;}return db[_0x1a57('0x63')]['query'](_0x1a57('0x64'),{'type':db[_0x1a57('0x63')]['QueryTypes'][_0x1a57('0x65')]})[_0x1a57('0x14')](function(_0x20b0d5){if(_0x20b0d5&&_0x20b0d5['length']){for(var _0x5c3eb8=0x0,_0x349c9d=_0x20b0d5[_0x1a57('0x45')];_0x5c3eb8<_0x349c9d&&_[_0x1a57('0x61')](_0x1f4371[_0x1a57('0x60')]);_0x5c3eb8++){if(_0x33ffe5['min_internal']<=_0x20b0d5[_0x5c3eb8][_0x1a57('0x66')]){_0x1f4371[_0x1a57('0x60')]=_0x20b0d5[_0x5c3eb8][_0x1a57('0x66')];}else if(_0x33ffe5[_0x1a57('0x62')]>_0x20b0d5[_0x5c3eb8][_0x1a57('0x66')]&&_0x33ffe5['min_internal']<=_0x20b0d5[_0x5c3eb8]['to']){_0x1f4371[_0x1a57('0x60')]=_0x33ffe5[_0x1a57('0x62')];}}}if(_[_0x1a57('0x61')](_0x1f4371[_0x1a57('0x60')])){_0x1f4371[_0x1a57('0x60')]=_0x50ff89+0x1;}return _0x5ab7d1(_0x1f4371);});});})[_0x1a57('0x4c')](function(_0x3c6fb4){_0x4aa36d(_0x3c6fb4);});});}function updateUser(_0x20b0f3){return new BPromise(function(_0x3cb5ca,_0x11b17c){try{if(_0x20b0f3[_0x1a57('0x67')]){_0x20b0f3['mailbox']=_0x20b0f3[_0x1a57('0x60')];_0x20b0f3[_0x1a57('0x68')]={'mailbox':_0x20b0f3['internal'],'password':_0x20b0f3[_0x1a57('0x53')],'fullname':_0x20b0f3[_0x1a57('0x69')],'email':_0x20b0f3['email']};}if(_0x20b0f3[_0x1a57('0x27')]===_0x1a57('0x2b')){if(!_0x20b0f3[_0x1a57('0x6a')])_0x20b0f3[_0x1a57('0x6a')]=[_0x1a57('0x6b'),_0x1a57('0x6c'),_0x1a57('0x6d'),_0x1a57('0x6e'),'110',_0x1a57('0x6f'),_0x1a57('0x70'),'106',_0x1a57('0x71'),_0x1a57('0x72'),_0x1a57('0x73'),_0x1a57('0x74'),_0x1a57('0x75'),_0x1a57('0x76'),_0x1a57('0x77')];}_0x3cb5ca(_0x20b0f3);}catch(_0xf61c1d){_0x11b17c(_0xf61c1d);}});}exports[_0x1a57('0x78')]=function(_0x58bc70,_0x3ebec){if(_0x58bc70[_0x1a57('0x29')][_0x1a57('0x27')]===_0x1a57('0x2b'))throw new Error(_0x1a57('0x79'));if(_0x58bc70['body'][_0x1a57('0x27')]===_0x1a57('0x29')&&_0x58bc70[_0x1a57('0x29')][_0x1a57('0x27')]!==_0x1a57('0x7a')){throw new Error(_0x1a57('0x7b'));}if(_0x58bc70[_0x1a57('0x59')][_0x1a57('0x27')]==='admin'&&_0x58bc70[_0x1a57('0x29')][_0x1a57('0x27')]!==_0x1a57('0x7a')){throw new Error(_0x1a57('0x7c'));}return licenseUtil['checkUserLimits']([_0x58bc70['body']])['then'](function(){return validateUser(_0x58bc70['body']);})['then'](function(_0x41cedf){return updateUser(_0x41cedf)[_0x1a57('0x14')](function(_0x5e640b){if(_0x5e640b[_0x1a57('0x27')]===_0x1a57('0x7a')){_0x5e640b['settingsEnabled']=_0x58bc70[_0x1a57('0x29')][_0x1a57('0x7d')];delete _0x5e640b[_0x1a57('0x7e')];}return _0x5e640b;});})[_0x1a57('0x14')](function(_0x56ddf7){return db[_0x1a57('0x3d')][_0x1a57('0x78')](_0x56ddf7,{'include':[{'model':db['VoiceMail'],'as':_0x1a57('0x68')}]});})[_0x1a57('0x14')](function(_0x42d41e){if(_0x58bc70[_0x1a57('0x59')][_0x1a57('0x27')]===_0x1a57('0x29'))return _0x42d41e;if(_0x58bc70[_0x1a57('0x29')]['role']!==_0x1a57('0x29'))return _0x42d41e;return db['UserProfileSection'][_0x1a57('0x31')]({'where':{'name':_0x42d41e[_0x1a57('0x27')]===_0x1a57('0x2b')?_0x1a57('0x2a'):'Telephones','userProfileId':_0x58bc70[_0x1a57('0x29')][_0x1a57('0x7e')]},'raw':!![]})[_0x1a57('0x14')](function(_0x5665ac){if(!_0x5665ac||_0x5665ac[_0x1a57('0x7f')]!=0x0)return _0x42d41e;return db[_0x1a57('0x33')][_0x1a57('0x78')]({'name':_0x42d41e['name'],'resourceId':_0x42d41e['id'],'type':_0x5665ac[_0x1a57('0x32')],'sectionId':_0x5665ac['id']},{})[_0x1a57('0x14')](function(){return _0x42d41e;});})[_0x1a57('0x4c')](function(_0x1899b5){logger[_0x1a57('0x1a')](_0x1a57('0x80'),_0x1899b5);throw _0x1899b5;});})[_0x1a57('0x14')](respondWithResult(_0x3ebec,0xc9))[_0x1a57('0x4c')](handleError(_0x3ebec,null));};exports[_0x1a57('0x81')]=function(_0xb45587,_0x29d8f6){var _0x5de7b1=_0xb45587[_0x1a57('0x59')];var _0x563182=[];if(_0xb45587[_0x1a57('0x29')]['role']==='agent')throw new Error('Unauthorized');if(_['some'](_0x5de7b1,[_0x1a57('0x27'),_0x1a57('0x29')])&&_0xb45587[_0x1a57('0x29')]['role']!==_0x1a57('0x7a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x1a57('0x82')](_0x5de7b1,[_0x1a57('0x27'),_0x1a57('0x7a')])&&_0xb45587[_0x1a57('0x29')][_0x1a57('0x27')]!==_0x1a57('0x7a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x5de7b1)[_0x1a57('0x14')](function(){return validateUser(_0x5de7b1[0x0]);})['then'](function(){for(var _0x149f8d=0x1;_0x149f8d<_0x5de7b1[_0x1a57('0x45')];_0x149f8d++){var _0x541447=_0x5de7b1[_0x149f8d-0x1][_0x1a57('0x60')];if(!_0x5de7b1[_0x149f8d][_0x1a57('0x60')])_0x5de7b1[_0x149f8d]['internal']=_0x541447+0x1;_0x563182[_0x1a57('0x40')](validateUser(_0x5de7b1[_0x149f8d]));}return BPromise[_0x1a57('0x4b')](_0x563182);})['then'](function(){_0x563182=[];for(var _0x5ca9d6=0x0;_0x5ca9d6<_0x5de7b1[_0x1a57('0x45')];_0x5ca9d6++){_0x563182['push'](updateUser(_0x5de7b1[_0x5ca9d6]));}return BPromise[_0x1a57('0x4b')](_0x563182);})[_0x1a57('0x14')](function(){return BPromise[_0x1a57('0x83')](_0x5de7b1,function(_0x2b6899){return db[_0x1a57('0x3d')][_0x1a57('0x78')](_0x2b6899,{'include':[{'model':db[_0x1a57('0x68')],'as':'VoiceMail'}]})[_0x1a57('0x14')](function(_0x272589){_0x2b6899['id']=_0x272589['id'];return _0x2b6899;});});})[_0x1a57('0x14')](function(_0x5a68f1){if(_0xb45587['body']['role']===_0x1a57('0x29'))return _0x5a68f1;if(_0xb45587[_0x1a57('0x29')]['role']!=='user')return _0x5a68f1;var _0x2d473e=_[_0x1a57('0x82')](_0x5a68f1,function(_0x3661aa){return _0x3661aa['role']===_0x1a57('0x2b')||_0x3661aa[_0x1a57('0x27')]===_0x1a57('0x2d');});if(!_0x2d473e)return _0x5a68f1;return db[_0x1a57('0x84')]['findAll']({'where':{'name':{'$or':[_0x1a57('0x2a'),_0x1a57('0x2c')]},'userProfileId':_0xb45587[_0x1a57('0x29')][_0x1a57('0x7e')]},'raw':!![]})[_0x1a57('0x14')](function(_0x3ab79d){if(_[_0x1a57('0x85')](_0x3ab79d)||!_[_0x1a57('0x82')](_0x3ab79d,[_0x1a57('0x7f'),0x0]))return _0x5a68f1;_0x563182=[];var _0x5635ab=_(_0x3ab79d)[_0x1a57('0x2f')](function(_0x42d05f){if(_0x42d05f[_0x1a57('0x7f')]===0x1)return;return _0x42d05f[_0x1a57('0x32')]===_0x1a57('0x2a')?_0x1a57('0x2b'):_0x1a57('0x2d');})[_0x1a57('0x86')]()[_0x1a57('0x30')]();for(var _0x3d84dd=0x0;_0x3d84dd<_0x5a68f1[_0x1a57('0x45')];_0x3d84dd++){if(!_[_0x1a57('0x3a')](_0x5635ab,_0x5a68f1[_0x3d84dd][_0x1a57('0x27')]))return;var _0x5827c4=_0x5a68f1[_0x3d84dd][_0x1a57('0x27')]===_0x1a57('0x2b')?_0x1a57('0x2a'):_0x1a57('0x2c');_0x563182[_0x1a57('0x40')](db[_0x1a57('0x33')]['create']({'name':_0x5a68f1[_0x3d84dd][_0x1a57('0x32')],'resourceId':_0x5a68f1[_0x3d84dd]['id'],'type':_0x5827c4,'sectionId':_[_0x1a57('0x31')](_0x3ab79d,[_0x1a57('0x32'),_0x5827c4])['id']},{}));}return BPromise[_0x1a57('0x4b')](_0x563182);});})[_0x1a57('0x14')](respondWithResult(_0x29d8f6,0xc9))['catch'](handleError(_0x29d8f6,null));};exports[_0x1a57('0x87')]=function(_0x2f35c1,_0x5801bc){if(_0x2f35c1[_0x1a57('0x59')]['id']){delete _0x2f35c1[_0x1a57('0x59')]['id'];}return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x2f35c1['params']['id']}})['then'](function(_0x35b4e){if(!_0x35b4e)return null;if(_0x35b4e['id']===_0x2f35c1[_0x1a57('0x29')]['id']){if(!_0x2f35c1['body'][_0x1a57('0x88')]||!_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x8c'));}if(!_0x35b4e[_0x1a57('0x8d')](_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x88')])){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x8e'));}if(_0x2f35c1['body'][_0x1a57('0x88')]===_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x8f'));}}else if(_0x2f35c1[_0x1a57('0x29')][_0x1a57('0x27')]===_0x1a57('0x7a')){if(!_0x2f35c1['body'][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x90'));}}else if(_0x2f35c1[_0x1a57('0x29')][_0x1a57('0x27')]===_0x1a57('0x29')){if(!_0x2f35c1['body'][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x90'));}if(_0x35b4e[_0x1a57('0x27')]!==_0x1a57('0x2b')){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x79'));}}else{throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))]('Unauthorized');}return _0x35b4e;})['then'](handleEntityNotFound(_0x5801bc,null))[_0x1a57('0x14')](function(_0x49535e){return db[_0x1a57('0x5c')][_0x1a57('0x91')]({'attributes':['id',_0x1a57('0x5e'),_0x1a57('0x92'),_0x1a57('0x93')]})[_0x1a57('0x14')](function(_0x32628e){if(_0x32628e[_0x1a57('0x5e')])authService[_0x1a57('0x5f')](_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')]);if(!_0x32628e[_0x1a57('0x92')]||!_0x49535e[_0x1a57('0x94')])return _0x49535e;authService['validatePasswordHistory'](_0x2f35c1['body'][_0x1a57('0x89')],_0x49535e['previousPasswords'],_0x32628e[_0x1a57('0x93')]);return _0x49535e;})[_0x1a57('0x14')](saveUpdates({'password':_0x2f35c1['body'][_0x1a57('0x89')],'passwordResetAt':_0x2f35c1[_0x1a57('0x29')]['id']==_0x2f35c1[_0x1a57('0x4e')]['id']?moment():null,'previousPasswords':authService[_0x1a57('0x95')](_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')],_0x49535e[_0x1a57('0x94')])},null));})['then'](respondWithResult(_0x5801bc,null))[_0x1a57('0x4c')](handleError(_0x5801bc,null));};exports[_0x1a57('0x96')]=function(_0x4a8832,_0x2d37cd){var _0x10217b=_0x4a8832[_0x1a57('0x59')]['channel'];return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x4a8832['params']['id']},'attributes':['id',_0x1a57('0x32'),'role','online',_0x1a57('0x97'),_0x1a57('0x98'),_0x1a57('0x99')]})[_0x1a57('0x14')](handleEntityNotFound(_0x2d37cd,null))['then'](function(_0x5dd03e){if(_0x5dd03e){if(!utils[_0x1a57('0x9a')](_0x10217b)){throw new db['Sequelize'][(_0x1a57('0x8b'))](_0x1a57('0x9b'));}return _0x5dd03e[_0x1a57('0x9c')+_[_0x1a57('0x9d')](_0x10217b['toLowerCase']())+'Queues'](_0x4a8832[_0x1a57('0x59')][_0x1a57('0x5b')],{'penalty':_0x4a8832[_0x1a57('0x59')][_0x1a57('0x9e')]||0x0})['spread'](function(_0x533af1){for(var _0x21306e=0x0;_0x21306e<_0x4a8832['body']['ids'][_0x1a57('0x45')];_0x21306e+=0x1){var _0x2c2bff={'UserId':Number(_0x4a8832[_0x1a57('0x4e')]['id'])};_0x2c2bff[_[_0x1a57('0x9d')](_0x10217b[_0x1a57('0x9f')]())+_0x1a57('0xa0')]=Number(_0x4a8832[_0x1a57('0x59')][_0x1a57('0x5b')][_0x21306e]);socket[_0x1a57('0xa1')](_0x1a57('0x29')+_[_0x1a57('0x9d')](_0x10217b[_0x1a57('0x9f')]())+_0x1a57('0xa2'),_0x2c2bff);}return _0x533af1;})['then'](function(){if(_0x10217b===_0x1a57('0xa3')){return db[_0x1a57('0xa4')][_0x1a57('0x41')]({'where':{'id':_0x4a8832[_0x1a57('0x59')][_0x1a57('0x5b')]||[]},'raw':!![],'attributes':['id',_0x1a57('0x32')]});}})[_0x1a57('0x14')](function(_0x11c12c){var _0x477007=_0x5dd03e[_0x1a57('0x26')]({'plain':!![]});var _0x50d72b=[];if(_0x10217b===_0x1a57('0xa3')&&_0x477007[_0x1a57('0x27')]===_0x1a57('0x2b')&&_0x477007[_0x1a57('0xa5')]){for(var _0x3ec6b1=0x0;_0x3ec6b1<_0x11c12c[_0x1a57('0x45')];_0x3ec6b1+=0x1){_0x50d72b[_0x1a57('0x40')]({'membername':_0x477007[_0x1a57('0x32')],'UserId':_0x477007['id'],'queue_name':_0x11c12c[_0x3ec6b1]['name'],'VoiceQueueId':_0x11c12c[_0x3ec6b1]['id'],'interface':_[_0x1a57('0x61')](_0x477007[_0x1a57('0x99')])?util['format'](_0x1a57('0xa6'),_0x477007[_0x1a57('0x32')]):_0x477007[_0x1a57('0x99')],'paused':_0x477007['voicePause']||![],'penalty':_0x4a8832[_0x1a57('0x59')]['penalty']||0x0});}return BPromise[_0x1a57('0x83')](_0x50d72b,function(_0x3b8469){return db[_0x1a57('0xa7')][_0x1a57('0xa8')](_0x3b8469);});}return _0x5dd03e;});}})[_0x1a57('0x14')](respondWithStatusCode(_0x2d37cd,null))['catch'](handleError(_0x2d37cd,null));};exports[_0x1a57('0xa9')]=function(_0x29b4bb,_0x2c058f){var _0x6ce861;return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x29b4bb[_0x1a57('0x4e')]['id']},'attributes':['id',_0x1a57('0x32'),_0x1a57('0x27')]})[_0x1a57('0x14')](handleEntityNotFound(_0x2c058f,null))[_0x1a57('0x14')](function(_0xf90b0c){if(_0xf90b0c){_0x6ce861=_0xf90b0c;if(!_0x29b4bb['query']['channel']||!utils[_0x1a57('0x9a')](_0x29b4bb['query'][_0x1a57('0xaa')])){throw new db[(_0x1a57('0x8a'))]['ValidationError'](_0x1a57('0x9b'));}return _0xf90b0c[_0x1a57('0xab')+_['capitalize'](_0x29b4bb[_0x1a57('0x43')]['channel'][_0x1a57('0x9f')]())+_0x1a57('0xac')](_0x29b4bb[_0x1a57('0x43')]['ids']);}})[_0x1a57('0x14')](function(_0x1b79bc){if(_[_0x1a57('0xad')](_0x29b4bb[_0x1a57('0x43')]['ids'])){for(var _0x85bec5=0x0;_0x85bec5<_0x29b4bb[_0x1a57('0x43')]['ids'][_0x1a57('0x45')];_0x85bec5+=0x1){var _0x4fa46c={'UserId':Number(_0x29b4bb[_0x1a57('0x4e')]['id'])};_0x4fa46c[_[_0x1a57('0x9d')](_0x29b4bb['query'][_0x1a57('0xaa')][_0x1a57('0x9f')]())+_0x1a57('0xa0')]=Number(_0x29b4bb['query'][_0x1a57('0x5b')][_0x85bec5]);socket[_0x1a57('0xa1')](_0x1a57('0x29')+_['capitalize'](_0x29b4bb['query'][_0x1a57('0xaa')][_0x1a57('0x9f')]())+_0x1a57('0xae'),_0x4fa46c);}}else{var _0x4fa46c={'UserId':Number(_0x29b4bb[_0x1a57('0x4e')]['id'])};_0x4fa46c[_['capitalize'](_0x29b4bb[_0x1a57('0x43')]['channel']['toLowerCase']())+_0x1a57('0xa0')]=Number(_0x29b4bb[_0x1a57('0x43')][_0x1a57('0x5b')]);socket[_0x1a57('0xa1')](_0x1a57('0x29')+_[_0x1a57('0x9d')](_0x29b4bb[_0x1a57('0x43')][_0x1a57('0xaa')]['toLowerCase']())+'Queue:remove',_0x4fa46c);}return _0x1b79bc;})['then'](function(){if(_0x29b4bb[_0x1a57('0x43')]['channel']===_0x1a57('0xa3')){return db['UserVoiceQueueRt'][_0x1a57('0x34')]({'where':{'UserId':_0x29b4bb[_0x1a57('0x4e')]['id'],'VoiceQueueId':_0x29b4bb[_0x1a57('0x43')][_0x1a57('0x5b')]},'individualHooks':!![]})[_0x1a57('0x14')](function(){return _0x6ce861;});}return _0x6ce861;})[_0x1a57('0x14')](respondWithStatusCode(_0x2c058f,null))['catch'](handleError(_0x2c058f,null));};exports[_0x1a57('0xaf')]=function(_0x3ca060,_0x320365){_0x3ca060[_0x1a57('0x59')][_0x1a57('0xb0')]=_0x3ca060['file'][_0x1a57('0xb1')];return db['User'][_0x1a57('0x31')]({'where':{'id':_0x3ca060[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x320365,null))[_0x1a57('0x14')](saveUpdates(_0x3ca060['body'],null))[_0x1a57('0x14')](respondWithResult(_0x320365,null))['catch'](handleError(_0x320365,null));};exports['getAvatar']=function(_0x353b04,_0x3e8755){var _0x1281c6=path[_0x1a57('0xb2')](config['root'],'server/files/images/logos/default_profile.png');return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x353b04['params']['id']},'attributes':['id',_0x1a57('0xb0')],'raw':!![]})['then'](handleEntityNotFound(_0x3e8755,null))[_0x1a57('0x14')](function(_0x263f14){if(_0x263f14){if(_[_0x1a57('0x61')](_0x263f14[_0x1a57('0xb0')])){return _0x3e8755[_0x1a57('0xb3')](_0x1281c6);}else{if(!fs[_0x1a57('0xb4')](path[_0x1a57('0xb2')](config[_0x1a57('0xb5')],_0x1a57('0xb6'),_0x263f14[_0x1a57('0xb0')]))){return _0x3e8755[_0x1a57('0xb3')](_0x1281c6);}return _0x3e8755[_0x1a57('0xb3')](path[_0x1a57('0xb2')](config[_0x1a57('0xb5')],_0x1a57('0xb6'),_0x263f14['userpic']));}}})['catch'](handleError(_0x3e8755,null));};exports['getOpenTabs']=function(_0x513c03,_0x2a7a4c){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x513c03['params']['id']},'attributes':['id']})[_0x1a57('0x14')](handleEntityNotFound(_0x2a7a4c,null))[_0x1a57('0x14')](function(_0x375418){var _0x3209b6=[];values=_0x375418[_0x1a57('0x46')];_0x3209b6['push'](get_open_tabs(_0x1a57('0x56'),_0x375418[_0x1a57('0x46')]));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x47'),_0x375418[_0x1a57('0x46')]));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x57'),_0x375418[_0x1a57('0x46')]));_0x3209b6['push'](get_open_tabs('whatsapp',_0x375418['dataValues']));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x48'),_0x375418[_0x1a57('0x46')]));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x49'),_0x375418[_0x1a57('0x46')]));return BPromise[_0x1a57('0x4b')](_0x3209b6);})[_0x1a57('0x14')](function(_0x394371){var _0x557a61=[];if(_0x394371){for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xb7')][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values['ChatOpenTabs'][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xb8'),'id':_0x4ed630['id'],'createdAt':_0x4ed630['createdAt']});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xb9')][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values['FaxOpenTabs'][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xba'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xbc')][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values['OpenchannelOpenTabs'][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xbd'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xbe')]['length'];_0x77db02++){var _0x4ed630=values[_0x1a57('0xbe')][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xbf'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values['SmsOpenTabs'][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values[_0x1a57('0xc0')][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xc1'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xc2')]['length'];_0x77db02++){var _0x4ed630=values[_0x1a57('0xc2')][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xc3'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}var _0x3ba469={'count':_0x557a61['length'],'rows':_0x557a61};return _0x3ba469;}else return null;})['then'](respondWithResult(_0x2a7a4c,null))[_0x1a57('0x4c')](handleError(_0x2a7a4c,null));};exports[_0x1a57('0xc4')]=function(_0x2f024b,_0x2a5e16){var _0x550f23={};var _0x4af782={};var _0x42e803;var _0x134919;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x2f024b[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2a5e16,null))[_0x1a57('0x14')](function(_0x5a881f){if(_0x5a881f){_0x42e803=_0x5a881f;_0x4af782[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xc5')][_0x1a57('0x52')]);_0x4af782[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x2f024b[_0x1a57('0x43')]);_0x4af782[_0x1a57('0xc6')]=_['intersection'](_0x4af782[_0x1a57('0x4f')],_0x4af782['query']);_0x550f23[_0x1a57('0x3f')]=_['intersection'](_0x4af782[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x2f024b['query'][_0x1a57('0x55')]));_0x550f23[_0x1a57('0x3f')]=_0x550f23[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x550f23['attributes']:_0x4af782[_0x1a57('0x4f')];_0x550f23[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x2f024b[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x550f23['where']=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x2f024b[_0x1a57('0x43')],_0x4af782[_0x1a57('0xc6')]));if(_0x2f024b[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x550f23[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x550f23[_0x1a57('0xca')],{'$or':_['map'](_0x550f23[_0x1a57('0x3f')],function(_0x4b10b6){var _0x2f3159={};_0x2f3159[_0x4b10b6]={'$like':'%'+_0x2f024b[_0x1a57('0x43')]['filter']+'%'};return _0x2f3159;})});}_0x550f23=_[_0x1a57('0xcb')]({},_0x550f23,_0x2f024b[_0x1a57('0xcc')]);return _0x42e803[_0x1a57('0xc4')](_0x550f23);}})[_0x1a57('0x14')](function(_0x4c4b52){if(_0x4c4b52){_0x134919=_0x4c4b52[_0x1a57('0x45')];if(_0x2f024b[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0x3e'))){_0x550f23[_0x1a57('0xcd')]=[{'model':db[_0x1a57('0xce')],'as':_0x1a57('0xcf'),'required':![]},{'model':db[_0x1a57('0xd0')],'as':_0x1a57('0xd1'),'attributes':['id',_0x1a57('0x32'),_0x1a57('0xd2')],'where':_0x2f024b['query'][_0x1a57('0xd3')]?{'id':_0x2f024b['query'][_0x1a57('0xd3')]}:undefined,'required':_0x2f024b[_0x1a57('0x43')][_0x1a57('0xd3')]?!![]:![]}];}if(!_0x2f024b[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x550f23[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x2f024b['query'][_0x1a57('0x23')]);_0x550f23[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x2f024b[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x42e803[_0x1a57('0xc4')](_0x550f23);}})['then'](function(_0x291d5d){if(_0x291d5d){return _0x291d5d?{'count':_0x134919,'rows':_0x291d5d}:null;}})[_0x1a57('0x14')](respondWithResult(_0x2a5e16,null))[_0x1a57('0x4c')](handleError(_0x2a5e16,null));};exports[_0x1a57('0xd6')]=function(_0x4b9f41,_0x3c0f17){var _0x169d6b;var _0x4a82dc;var _0x42f21b={};var _0x4920b8;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x4b9f41[_0x1a57('0x4e')]['id']},'attributes':['id','name',_0x1a57('0x27')]})[_0x1a57('0x14')](handleEntityNotFound(_0x3c0f17,null))[_0x1a57('0x14')](function(_0xc4e347){if(!utils[_0x1a57('0x9a')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))]('Unknown\x20channel');}_0x169d6b=_0xc4e347;var _0x127a85={};_0x127a85[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])+_0x1a57('0xd7')]['rawAttributes']);_0x127a85[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x4b9f41[_0x1a57('0x43')]);_0x127a85['filters']=_[_0x1a57('0x54')](_0x127a85[_0x1a57('0x4f')],_0x127a85[_0x1a57('0x43')]);_0x42f21b['attributes']=_[_0x1a57('0x54')](_0x127a85['model'],qs['fields'](_0x4b9f41['query'][_0x1a57('0x55')]));_0x42f21b[_0x1a57('0x3f')]=_0x42f21b[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x42f21b['attributes']:_0x127a85[_0x1a57('0x4f')];_0x42f21b[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x4b9f41['query'][_0x1a57('0xc8')]);_0x42f21b[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x4b9f41['query'],_0x127a85[_0x1a57('0xc6')]));if(_0x4b9f41[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x42f21b['where']=_[_0x1a57('0xcb')](_0x42f21b[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x42f21b[_0x1a57('0x3f')],function(_0x396820){var _0x2c5c29={};_0x2c5c29[_0x396820]={'$like':'%'+_0x4b9f41[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x2c5c29;})});}_0x42f21b=_['merge']({},_0x42f21b,_0x4b9f41[_0x1a57('0xcc')]);switch(_0x169d6b[_0x1a57('0x27')]){case _0x1a57('0x7a'):return db[_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')]['channel'])+_0x1a57('0xd7')]['findAll'](_0x42f21b);case _0x1a57('0x29'):case _0x1a57('0x2b'):return _0x169d6b[_0x1a57('0x26')+_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')]['channel'])+'Queues'](_0x42f21b);default:throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))]('Unknown\x20role');}})[_0x1a57('0x14')](function(_0x278fa7){_0x4920b8=_0x278fa7[_0x1a57('0x45')];if(!_0x4b9f41['query']['hasOwnProperty']('nolimit')){_0x42f21b[_0x1a57('0x23')]=qs['limit'](_0x4b9f41[_0x1a57('0x43')]['limit']);_0x42f21b[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x4b9f41[_0x1a57('0x43')]['offset']);}switch(_0x169d6b['role']){case _0x1a57('0x7a'):return db[_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])+'Queue']['findAll'](_0x42f21b);case _0x1a57('0x29'):case _0x1a57('0x2b'):return _0x169d6b['get'+_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])+_0x1a57('0xac')](_0x42f21b);}})[_0x1a57('0x14')](function(_0x590a9c){return{'count':_0x4920b8,'rows':_0x590a9c};})['then'](respondWithResult(_0x3c0f17,null))[_0x1a57('0x4c')](handleError(_0x3c0f17,null));};exports[_0x1a57('0xd8')]=function(_0x5df6d5,_0x1138c3){var _0x5c8fbb={};var _0x52f51c={};var _0xb6d6db;var _0x330e26;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x5df6d5['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1138c3,null))[_0x1a57('0x14')](function(_0xe8f796){if(_0xe8f796){_0xb6d6db=_0xe8f796;_0x52f51c[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xa7')][_0x1a57('0x52')]);_0x52f51c[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x5df6d5[_0x1a57('0x43')]);_0x52f51c[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x52f51c['model'],_0x52f51c[_0x1a57('0x43')]);_0x5c8fbb[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x52f51c[_0x1a57('0x4f')],qs['fields'](_0x5df6d5['query'][_0x1a57('0x55')]));_0x5c8fbb[_0x1a57('0x3f')]=_0x5c8fbb[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x5c8fbb[_0x1a57('0x3f')]:_0x52f51c[_0x1a57('0x4f')];_0x5c8fbb[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5df6d5['query']['sort']);_0x5c8fbb['where']=qs['filters'](_[_0x1a57('0xc9')](_0x5df6d5[_0x1a57('0x43')],_0x52f51c['filters']));if(_0x5df6d5[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x5c8fbb[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x5c8fbb[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x5c8fbb[_0x1a57('0x3f')],function(_0x28cbf4){var _0x2e6b2c={};_0x2e6b2c[_0x28cbf4]={'$like':'%'+_0x5df6d5[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x2e6b2c;})});}_0x5c8fbb=_[_0x1a57('0xcb')]({},_0x5c8fbb,_0x5df6d5[_0x1a57('0xcc')]);return _0xb6d6db[_0x1a57('0xd8')](_0x5c8fbb);}})[_0x1a57('0x14')](function(_0x8ae8b9){if(_0x8ae8b9){_0x330e26=_0x8ae8b9[_0x1a57('0x45')];if(!_0x5df6d5['query'][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x5c8fbb[_0x1a57('0x23')]=qs['limit'](_0x5df6d5['query'][_0x1a57('0x23')]);_0x5c8fbb[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x5df6d5[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0xb6d6db['getVoiceQueuesRt'](_0x5c8fbb);}})[_0x1a57('0x14')](function(_0x1839ed){if(_0x1839ed){return _0x1839ed?{'count':_0x330e26,'rows':_0x1839ed}:null;}})[_0x1a57('0x14')](respondWithResult(_0x1138c3,null))['catch'](handleError(_0x1138c3,null));};exports['getGroups']=function(_0x164d91,_0xd84f23){var _0x23503a={};var _0x3fc4ef={};var _0xe9354e;var _0x236486;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x164d91[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xd84f23,null))['then'](function(_0x4ba800){if(_0x4ba800){_0xe9354e=_0x4ba800;_0x3fc4ef[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0xd9')][_0x1a57('0x52')]);_0x3fc4ef[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x164d91[_0x1a57('0x43')]);_0x3fc4ef[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x3fc4ef[_0x1a57('0x4f')],_0x3fc4ef[_0x1a57('0x43')]);_0x23503a[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x3fc4ef[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x164d91[_0x1a57('0x43')][_0x1a57('0x55')]));_0x23503a['attributes']=_0x23503a[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x23503a['attributes']:_0x3fc4ef[_0x1a57('0x4f')];_0x23503a[_0x1a57('0xc7')]=qs['sort'](_0x164d91[_0x1a57('0x43')]['sort']);_0x23503a[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x164d91[_0x1a57('0x43')],_0x3fc4ef['filters']));if(_0x164d91[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x23503a[_0x1a57('0xca')]=_['merge'](_0x23503a[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x23503a['attributes'],function(_0x9a0693){var _0x24c43b={};_0x24c43b[_0x9a0693]={'$like':'%'+_0x164d91[_0x1a57('0x43')]['filter']+'%'};return _0x24c43b;})});}_0x23503a=_['merge']({},_0x23503a,_0x164d91[_0x1a57('0xcc')]);return _0xe9354e['getGroups'](_0x23503a);}})[_0x1a57('0x14')](function(_0x1410bc){if(_0x1410bc){_0x236486=_0x1410bc[_0x1a57('0x45')];if(!_0x164d91[_0x1a57('0x43')][_0x1a57('0xd4')]('nolimit')){_0x23503a[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x164d91[_0x1a57('0x43')]['limit']);_0x23503a[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x164d91[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0xe9354e['getGroups'](_0x23503a);}})[_0x1a57('0x14')](function(_0x259ac5){if(_0x259ac5){return _0x259ac5?{'count':_0x236486,'rows':_0x259ac5}:null;}})[_0x1a57('0x14')](respondWithResult(_0xd84f23,null))[_0x1a57('0x4c')](handleError(_0xd84f23,null));};exports[_0x1a57('0xda')]=function(_0x69487c,_0x1fa3b8){var _0x56bb04={'raw':!![],'where':{}};var _0x14bbd8={};var _0x55ce49={'count':0x0,'rows':[]};return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x69487c[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1fa3b8,null))[_0x1a57('0x14')](function(_0x412b0b){if(_0x412b0b){_0x14bbd8[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db['VoiceRecording'][_0x1a57('0x52')]);_0x14bbd8[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x69487c[_0x1a57('0x43')]);_0x14bbd8[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x14bbd8[_0x1a57('0x4f')],_0x14bbd8[_0x1a57('0x43')]);_0x56bb04[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x14bbd8[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x69487c[_0x1a57('0x43')]['fields']));_0x56bb04[_0x1a57('0x3f')]=_0x56bb04[_0x1a57('0x3f')]['length']?_0x56bb04[_0x1a57('0x3f')]:_0x14bbd8[_0x1a57('0x4f')];if(!_0x69487c[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x56bb04[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x69487c[_0x1a57('0x43')][_0x1a57('0x23')]);_0x56bb04[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x69487c['query'][_0x1a57('0x21')]);}_0x56bb04['order']=qs[_0x1a57('0xc8')](_0x69487c[_0x1a57('0x43')]['sort']);_0x56bb04['where']=qs[_0x1a57('0xc6')](_['pick'](_0x69487c['query'],_0x14bbd8[_0x1a57('0xc6')]));_0x56bb04[_0x1a57('0xca')][_0x1a57('0xdb')]=_0x412b0b['id'];if(_0x69487c[_0x1a57('0x43')]['filter']){_0x56bb04[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x56bb04[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x56bb04[_0x1a57('0x3f')],function(_0x1403c2){var _0x152da5={};_0x152da5[_0x1403c2]={'$like':'%'+_0x69487c[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x152da5;})});}_0x56bb04=_['merge']({},_0x56bb04,_0x69487c['options']);return db['VoiceRecording'][_0x1a57('0x24')]({'where':_0x56bb04[_0x1a57('0xca')]})['then'](function(_0x432592){_0x55ce49[_0x1a57('0x24')]=_0x432592;if(_0x69487c[_0x1a57('0x43')][_0x1a57('0x3e')]){_0x56bb04[_0x1a57('0xcd')]=[{'all':!![]}];}return db[_0x1a57('0xdc')][_0x1a57('0x41')](_0x56bb04);})['then'](function(_0x3a58c1){_0x55ce49['rows']=_0x3a58c1;return _0x55ce49;});}})['then'](respondWithFilteredResult(_0x1fa3b8,_0x56bb04))['catch'](handleError(_0x1fa3b8,null));};exports[_0x1a57('0xdd')]=function(_0x1b8da8,_0xaa7e37){var _0x5f0863={'raw':!![],'where':{}};var _0x13eaaf={};var _0x1423e0={'count':0x0,'rows':[]};return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x1b8da8['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0xaa7e37,null))['then'](function(_0x48e53f){if(_0x48e53f){_0x13eaaf['model']=_[_0x1a57('0x51')](db['ScreenRecording'][_0x1a57('0x52')]);_0x13eaaf['query']=_['keys'](_0x1b8da8['query']);_0x13eaaf['filters']=_[_0x1a57('0x54')](_0x13eaaf['model'],_0x13eaaf[_0x1a57('0x43')]);_0x5f0863['attributes']=_[_0x1a57('0x54')](_0x13eaaf[_0x1a57('0x4f')],qs['fields'](_0x1b8da8[_0x1a57('0x43')][_0x1a57('0x55')]));_0x5f0863[_0x1a57('0x3f')]=_0x5f0863[_0x1a57('0x3f')]['length']?_0x5f0863[_0x1a57('0x3f')]:_0x13eaaf['model'];if(!_0x1b8da8['query'][_0x1a57('0xd4')]('nolimit')){_0x5f0863[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x1b8da8['query'][_0x1a57('0x23')]);_0x5f0863[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x1b8da8[_0x1a57('0x43')][_0x1a57('0x21')]);}_0x5f0863[_0x1a57('0xc7')]=qs['sort'](_0x1b8da8['query'][_0x1a57('0xc8')]);_0x5f0863[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_['pick'](_0x1b8da8[_0x1a57('0x43')],_0x13eaaf['filters']));_0x5f0863[_0x1a57('0xca')][_0x1a57('0xdb')]=_0x48e53f['id'];if(_0x1b8da8[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x5f0863[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x5f0863[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x5f0863[_0x1a57('0x3f')],function(_0x23d9f4){var _0x54a5fc={};_0x54a5fc[_0x23d9f4]={'$like':'%'+_0x1b8da8[_0x1a57('0x43')]['filter']+'%'};return _0x54a5fc;})});}_0x5f0863=_[_0x1a57('0xcb')]({},_0x5f0863,_0x1b8da8[_0x1a57('0xcc')]);return db[_0x1a57('0xde')][_0x1a57('0x24')]({'where':_0x5f0863[_0x1a57('0xca')]})[_0x1a57('0x14')](function(_0x39fed5){_0x1423e0[_0x1a57('0x24')]=_0x39fed5;if(_0x1b8da8['query'][_0x1a57('0x3e')]){_0x5f0863[_0x1a57('0xcd')]=[{'all':!![]}];}return db[_0x1a57('0xde')]['findAll'](_0x5f0863);})[_0x1a57('0x14')](function(_0x3e7d1f){_0x1423e0[_0x1a57('0x42')]=_0x3e7d1f;return _0x1423e0;});}})[_0x1a57('0x14')](respondWithFilteredResult(_0xaa7e37,_0x5f0863))[_0x1a57('0x4c')](handleError(_0xaa7e37,null));};exports['getChatInteractions']=function(_0x299755,_0x5a5528){var _0x29e82f={};var _0x125819={};var _0x4c72fb;var _0x48d5f1;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x299755[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5a5528,null))[_0x1a57('0x14')](function(_0x5840a6){if(_0x5840a6){_0x4c72fb=_0x5840a6;_0x125819['model']=_['keys'](db[_0x1a57('0xdf')][_0x1a57('0x52')]);_0x125819[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x299755['query']);_0x125819[_0x1a57('0xc6')]=_['intersection'](_0x125819[_0x1a57('0x4f')],_0x125819[_0x1a57('0x43')]);_0x29e82f[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x125819[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x299755[_0x1a57('0x43')][_0x1a57('0x55')]));_0x29e82f['attributes']=_0x29e82f[_0x1a57('0x3f')]['length']?_0x29e82f[_0x1a57('0x3f')]:_0x125819[_0x1a57('0x4f')];_0x29e82f['order']=qs[_0x1a57('0xc8')](_0x299755[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x29e82f[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x299755[_0x1a57('0x43')],_0x125819[_0x1a57('0xc6')]));if(_0x299755[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x29e82f[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x29e82f[_0x1a57('0xca')],{'$or':_['map'](_0x29e82f[_0x1a57('0x3f')],function(_0x52f399){var _0x348d1c={};_0x348d1c[_0x52f399]={'$like':'%'+_0x299755[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x348d1c;})});}_0x29e82f=_[_0x1a57('0xcb')]({},_0x29e82f,_0x299755[_0x1a57('0xcc')]);return _0x4c72fb[_0x1a57('0xe0')](_0x29e82f);}})[_0x1a57('0x14')](function(_0x3fdf5){if(_0x3fdf5){_0x48d5f1=_0x3fdf5[_0x1a57('0x45')];if(!_0x299755['query'][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x29e82f[_0x1a57('0x23')]=qs['limit'](_0x299755[_0x1a57('0x43')][_0x1a57('0x23')]);_0x29e82f[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x299755[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x4c72fb[_0x1a57('0xe0')](_0x29e82f);}})[_0x1a57('0x14')](function(_0x19685a){if(_0x19685a){return _0x19685a?{'count':_0x48d5f1,'rows':_0x19685a}:null;}})['then'](respondWithResult(_0x5a5528,null))[_0x1a57('0x4c')](handleError(_0x5a5528,null));};exports[_0x1a57('0xe1')]=function(_0x4e80aa,_0x23b36e){var _0x2955c6={};var _0x4753f8={};var _0x4b72da;var _0x39d8e7;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x4e80aa[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x23b36e,null))[_0x1a57('0x14')](function(_0x450621){if(_0x450621){_0x4b72da=_0x450621;_0x4753f8[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xe2')]['rawAttributes']);_0x4753f8[_0x1a57('0x43')]=_['keys'](_0x4e80aa[_0x1a57('0x43')]);_0x4753f8['filters']=_[_0x1a57('0x54')](_0x4753f8[_0x1a57('0x4f')],_0x4753f8['query']);_0x2955c6['attributes']=_[_0x1a57('0x54')](_0x4753f8['model'],qs['fields'](_0x4e80aa[_0x1a57('0x43')][_0x1a57('0x55')]));_0x2955c6[_0x1a57('0x3f')]=_0x2955c6[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x2955c6[_0x1a57('0x3f')]:_0x4753f8[_0x1a57('0x4f')];_0x2955c6[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x4e80aa[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x2955c6[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x4e80aa['query'],_0x4753f8[_0x1a57('0xc6')]));if(_0x4e80aa[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x2955c6[_0x1a57('0xca')]=_['merge'](_0x2955c6[_0x1a57('0xca')],{'$or':_['map'](_0x2955c6[_0x1a57('0x3f')],function(_0x4353f2){var _0x4ca874={};_0x4ca874[_0x4353f2]={'$like':'%'+_0x4e80aa['query'][_0x1a57('0x2e')]+'%'};return _0x4ca874;})});}_0x2955c6=_[_0x1a57('0xcb')]({},_0x2955c6,_0x4e80aa['options']);return _0x4b72da[_0x1a57('0xe1')](_0x2955c6);}})['then'](function(_0x2fcec7){if(_0x2fcec7){_0x39d8e7=_0x2fcec7[_0x1a57('0x45')];if(!_0x4e80aa[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x2955c6[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x4e80aa[_0x1a57('0x43')][_0x1a57('0x23')]);_0x2955c6[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x4e80aa['query'][_0x1a57('0x21')]);}return _0x4b72da['getOpenchannelInteractions'](_0x2955c6);}})[_0x1a57('0x14')](function(_0x86407d){if(_0x86407d){return _0x86407d?{'count':_0x39d8e7,'rows':_0x86407d}:null;}})[_0x1a57('0x14')](respondWithResult(_0x23b36e,null))[_0x1a57('0x4c')](handleError(_0x23b36e,null));};exports[_0x1a57('0xe3')]=function(_0x5497f6,_0x12cd3f){var _0xb36b80={'raw':!![],'where':{}};var _0x1e2bed={};var _0xc7ed3b={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x5497f6['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x12cd3f,null))[_0x1a57('0x14')](function(_0x9c32b0){if(_0x9c32b0){_0x1e2bed[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xe4')][_0x1a57('0x52')]);_0x1e2bed[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x5497f6['query']);_0x1e2bed[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x1e2bed['model'],_0x1e2bed[_0x1a57('0x43')]);_0xb36b80['attributes']=_[_0x1a57('0x54')](_0x1e2bed[_0x1a57('0x4f')],qs['fields'](_0x5497f6[_0x1a57('0x43')][_0x1a57('0x55')]));_0xb36b80[_0x1a57('0x3f')]=_0xb36b80['attributes'][_0x1a57('0x45')]?_0xb36b80[_0x1a57('0x3f')]:_0x1e2bed[_0x1a57('0x4f')];if(!_0x5497f6['query']['hasOwnProperty'](_0x1a57('0xd5'))){_0xb36b80[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x5497f6[_0x1a57('0x43')][_0x1a57('0x23')]);_0xb36b80['offset']=qs[_0x1a57('0x21')](_0x5497f6[_0x1a57('0x43')][_0x1a57('0x21')]);}_0xb36b80[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5497f6[_0x1a57('0x43')][_0x1a57('0xc8')]);_0xb36b80[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x5497f6[_0x1a57('0x43')],_0x1e2bed[_0x1a57('0xc6')]));_0xb36b80['where']['UserId']=_0x9c32b0['id'];if(_0x5497f6[_0x1a57('0x43')]['filter']){_0xb36b80['where']=_[_0x1a57('0xcb')](_0xb36b80[_0x1a57('0xca')],{'$or':_['map'](_0xb36b80['attributes'],function(_0x5691dd){var _0x412111={};_0x412111[_0x5691dd]={'$like':'%'+_0x5497f6['query']['filter']+'%'};return _0x412111;})});}_0xb36b80=_[_0x1a57('0xcb')]({},_0xb36b80,_0x5497f6[_0x1a57('0xcc')]);return db[_0x1a57('0xe4')][_0x1a57('0x24')]({'where':_0xb36b80[_0x1a57('0xca')]})[_0x1a57('0x14')](function(_0x598583){_0xc7ed3b[_0x1a57('0x24')]=_0x598583;if(_0x5497f6[_0x1a57('0x43')][_0x1a57('0x3e')]){_0xb36b80[_0x1a57('0xcd')]=[{'all':!![]}];}return db['MailInteraction'][_0x1a57('0x41')](_0xb36b80);})[_0x1a57('0x14')](function(_0x127269){_0xc7ed3b[_0x1a57('0x42')]=_0x127269;return _0xc7ed3b;});}})[_0x1a57('0x14')](respondWithFilteredResult(_0x12cd3f,_0xb36b80))['catch'](handleError(_0x12cd3f,null));};exports[_0x1a57('0xe5')]=function(_0x5e58e3,_0x22bbc5){var _0x5498fc={};var _0x1b9dcb={};var _0x26870c;var _0x29c453;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x5e58e3['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x22bbc5,null))[_0x1a57('0x14')](function(_0x39e1c2){if(_0x39e1c2){_0x26870c=_0x39e1c2;_0x1b9dcb[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db['SmsInteraction'][_0x1a57('0x52')]);_0x1b9dcb['query']=_['keys'](_0x5e58e3[_0x1a57('0x43')]);_0x1b9dcb['filters']=_[_0x1a57('0x54')](_0x1b9dcb[_0x1a57('0x4f')],_0x1b9dcb[_0x1a57('0x43')]);_0x5498fc[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x1b9dcb['model'],qs[_0x1a57('0x55')](_0x5e58e3[_0x1a57('0x43')][_0x1a57('0x55')]));_0x5498fc[_0x1a57('0x3f')]=_0x5498fc['attributes'][_0x1a57('0x45')]?_0x5498fc[_0x1a57('0x3f')]:_0x1b9dcb[_0x1a57('0x4f')];_0x5498fc[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5e58e3['query']['sort']);_0x5498fc[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x5e58e3[_0x1a57('0x43')],_0x1b9dcb['filters']));if(_0x5e58e3[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x5498fc['where']=_[_0x1a57('0xcb')](_0x5498fc['where'],{'$or':_[_0x1a57('0x2f')](_0x5498fc['attributes'],function(_0x5cfdef){var _0x3498ee={};_0x3498ee[_0x5cfdef]={'$like':'%'+_0x5e58e3[_0x1a57('0x43')]['filter']+'%'};return _0x3498ee;})});}_0x5498fc=_[_0x1a57('0xcb')]({},_0x5498fc,_0x5e58e3[_0x1a57('0xcc')]);return _0x26870c[_0x1a57('0xe5')](_0x5498fc);}})[_0x1a57('0x14')](function(_0x140f1a){if(_0x140f1a){_0x29c453=_0x140f1a['length'];if(!_0x5e58e3[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x5498fc[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x5e58e3[_0x1a57('0x43')]['limit']);_0x5498fc[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x5e58e3[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x26870c[_0x1a57('0xe5')](_0x5498fc);}})[_0x1a57('0x14')](function(_0x3d5df0){if(_0x3d5df0){return _0x3d5df0?{'count':_0x29c453,'rows':_0x3d5df0}:null;}})['then'](respondWithResult(_0x22bbc5,null))[_0x1a57('0x4c')](handleError(_0x22bbc5,null));};exports[_0x1a57('0xe6')]=function(_0xeba53c,_0x43a33e){var _0x5636ea={};var _0x4fb81b={};var _0x2c7a67;var _0x2a2bae;return db['User'][_0x1a57('0x91')]({'where':{'id':_0xeba53c[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x43a33e,null))['then'](function(_0x12b08f){if(_0x12b08f){_0x2c7a67=_0x12b08f;_0x4fb81b[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0xe7')][_0x1a57('0x52')]);_0x4fb81b[_0x1a57('0x43')]=_['keys'](_0xeba53c[_0x1a57('0x43')]);_0x4fb81b[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x4fb81b[_0x1a57('0x4f')],_0x4fb81b[_0x1a57('0x43')]);_0x5636ea['attributes']=_[_0x1a57('0x54')](_0x4fb81b['model'],qs[_0x1a57('0x55')](_0xeba53c[_0x1a57('0x43')][_0x1a57('0x55')]));_0x5636ea['attributes']=_0x5636ea['attributes'][_0x1a57('0x45')]?_0x5636ea[_0x1a57('0x3f')]:_0x4fb81b[_0x1a57('0x4f')];_0x5636ea[_0x1a57('0xc7')]=qs['sort'](_0xeba53c[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x5636ea[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0xeba53c[_0x1a57('0x43')],_0x4fb81b[_0x1a57('0xc6')]));if(_0xeba53c[_0x1a57('0x43')]['filter']){_0x5636ea[_0x1a57('0xca')]=_['merge'](_0x5636ea['where'],{'$or':_[_0x1a57('0x2f')](_0x5636ea['attributes'],function(_0x1684a3){var _0x12f4f5={};_0x12f4f5[_0x1684a3]={'$like':'%'+_0xeba53c[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x12f4f5;})});}_0x5636ea=_[_0x1a57('0xcb')]({},_0x5636ea,_0xeba53c[_0x1a57('0xcc')]);return _0x2c7a67[_0x1a57('0xe6')](_0x5636ea);}})[_0x1a57('0x14')](function(_0x4dd633){if(_0x4dd633){_0x2a2bae=_0x4dd633[_0x1a57('0x45')];if(!_0xeba53c[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x5636ea[_0x1a57('0x23')]=qs['limit'](_0xeba53c['query'][_0x1a57('0x23')]);_0x5636ea[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0xeba53c[_0x1a57('0x43')]['offset']);}return _0x2c7a67['getFaxInteractions'](_0x5636ea);}})[_0x1a57('0x14')](function(_0x28a02e){if(_0x28a02e){return _0x28a02e?{'count':_0x2a2bae,'rows':_0x28a02e}:null;}})['then'](respondWithResult(_0x43a33e,null))[_0x1a57('0x4c')](handleError(_0x43a33e,null));};exports['getWhatsappInteractions']=function(_0x9ee15a,_0x27b2a4){var _0x121011={};var _0x3898b5={};var _0x5b9003;var _0x385fbf;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x9ee15a[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x27b2a4,null))[_0x1a57('0x14')](function(_0xf72e91){if(_0xf72e91){_0x5b9003=_0xf72e91;_0x3898b5['model']=_['keys'](db[_0x1a57('0xe8')]['rawAttributes']);_0x3898b5[_0x1a57('0x43')]=_['keys'](_0x9ee15a[_0x1a57('0x43')]);_0x3898b5['filters']=_[_0x1a57('0x54')](_0x3898b5[_0x1a57('0x4f')],_0x3898b5['query']);_0x121011[_0x1a57('0x3f')]=_['intersection'](_0x3898b5[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x9ee15a[_0x1a57('0x43')]['fields']));_0x121011[_0x1a57('0x3f')]=_0x121011[_0x1a57('0x3f')]['length']?_0x121011['attributes']:_0x3898b5[_0x1a57('0x4f')];_0x121011['order']=qs[_0x1a57('0xc8')](_0x9ee15a[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x121011[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x9ee15a['query'],_0x3898b5['filters']));if(_0x9ee15a[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x121011[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x121011[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x121011[_0x1a57('0x3f')],function(_0x2edfa4){var _0x2a23d0={};_0x2a23d0[_0x2edfa4]={'$like':'%'+_0x9ee15a[_0x1a57('0x43')]['filter']+'%'};return _0x2a23d0;})});}_0x121011=_[_0x1a57('0xcb')]({},_0x121011,_0x9ee15a[_0x1a57('0xcc')]);return _0x5b9003[_0x1a57('0xe9')](_0x121011);}})[_0x1a57('0x14')](function(_0x437a19){if(_0x437a19){_0x385fbf=_0x437a19['length'];if(!_0x9ee15a[_0x1a57('0x43')]['hasOwnProperty']('nolimit')){_0x121011[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x9ee15a[_0x1a57('0x43')][_0x1a57('0x23')]);_0x121011['offset']=qs[_0x1a57('0x21')](_0x9ee15a['query'][_0x1a57('0x21')]);}return _0x5b9003[_0x1a57('0xe9')](_0x121011);}})[_0x1a57('0x14')](function(_0x2d0144){if(_0x2d0144){return _0x2d0144?{'count':_0x385fbf,'rows':_0x2d0144}:null;}})[_0x1a57('0x14')](respondWithResult(_0x27b2a4,null))[_0x1a57('0x4c')](handleError(_0x27b2a4,null));};exports[_0x1a57('0xea')]=function(_0x252662,_0x240481,_0x186b8d){var _0x5c6d64;var _0x2b33ba;var _0x3b9a2;var _0x2499e7=!_[_0x1a57('0x61')](_0x252662['params']['id'])?_0x252662[_0x1a57('0x4e')]['id']:!_[_0x1a57('0x61')](_0x252662[_0x1a57('0x29')]['id'])?_0x252662['user']['id']:null;return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x2499e7,'role':{'$or':[_0x1a57('0x7a'),_0x1a57('0x29'),'agent']}},'attributes':['id',_0x1a57('0x32'),_0x1a57('0xeb'),_0x1a57('0xec'),'role',_0x1a57('0x60'),_0x1a57('0x97')]})['then'](function(_0x3a2a4a){if(_0x3a2a4a){if(_0x3a2a4a[_0x1a57('0x27')]===_0x1a57('0x2b')){_0x5c6d64=_0x3a2a4a;if(_0x252662[_0x1a57('0x59')][_0x1a57('0x99')]){_0x3b9a2=util[_0x1a57('0xed')]('LOCAL/%s@from-sip/n',_0x5c6d64[_0x252662['body'][_0x1a57('0x99')]]);}else if(_0x252662['body'][_0x1a57('0xee')]){_0x3b9a2=util[_0x1a57('0xed')](_0x1a57('0xa6'),_0x252662[_0x1a57('0x59')][_0x1a57('0xee')]);}else{_0x3b9a2=util['format'](_0x1a57('0xa6'),_0x5c6d64[_0x1a57('0x32')]);}socket['to'](util[_0x1a57('0xed')]('user:%s',_0x5c6d64[_0x1a57('0x32')]))[_0x1a57('0xa1')](_0x1a57('0xef'),{'user':{'id':_0x5c6d64['id'],'name':_0x5c6d64['name']},'ip':_0x252662['headers'][_0x1a57('0xf0')]||_0x252662[_0x1a57('0xf1')][_0x1a57('0xf2')]||_0x252662['socket'][_0x1a57('0xf2')]||_0x252662[_0x1a57('0xf1')][_0x1a57('0xf3')]['remoteAddress']});return db[_0x1a57('0xa7')][_0x1a57('0x34')]({'where':{'membername':_0x5c6d64['name']},'individualHooks':!![]});}}else{throw new db[(_0x1a57('0x8a'))]['ValidationError'](_0x1a57('0xf4'));}})[_0x1a57('0x14')](function(){if(_0x5c6d64){return _0x5c6d64[_0x1a57('0xf5')]({'raw':!![]});}})['then'](function(_0x565988){if(_0x5c6d64){var _0x118097=[];if(_0x565988){_0x2b33ba=_0x565988;if(_0x2b33ba[_0x1a57('0x45')]){for(var _0x2f671c=0x0;_0x2f671c<_0x2b33ba[_0x1a57('0x45')];_0x2f671c++){_0x118097[_0x1a57('0x40')]({'membername':_0x5c6d64[_0x1a57('0x32')],'UserId':_0x5c6d64['id'],'queue_name':_0x2b33ba[_0x2f671c][_0x1a57('0x32')],'VoiceQueueId':_0x2b33ba[_0x2f671c]['id'],'interface':_0x3b9a2,'paused':_0x5c6d64['loginInPause']||![],'penalty':_0x2b33ba[_0x2f671c]['UserVoiceQueue.penalty']||0x0});}return BPromise['each'](_0x118097,function(_0xba3c8a){return db[_0x1a57('0xa7')][_0x1a57('0xa8')](_0xba3c8a);});}}}})[_0x1a57('0x14')](function(){if(_0x5c6d64){return db[_0x1a57('0xf6')]['findAll']({'where':{'membername':_0x5c6d64['name'],'exitAt':null}});}})[_0x1a57('0x14')](function(_0x17a153){if(_0x5c6d64){var _0x29ee95=[];_0x17a153[_0x1a57('0xf7')](function(_0x364598){_0x29ee95['push'](_0x364598[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8'))}));});return BPromise[_0x1a57('0x4b')](_0x29ee95);}})[_0x1a57('0x14')](function(){if(_0x5c6d64){var _0x5a7f8d=[];var _0x44b634=[];var _0x5e3a2f=utils[_0x1a57('0xf9')]();var _0x27cc04={'membername':_0x5c6d64[_0x1a57('0x32')],'interface':_0x3b9a2,'enterAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'role':_0x5c6d64[_0x1a57('0x27')],'internal':_0x5c6d64['internal']};_0x5e3a2f[_0x1a57('0xf7')](function(_0x1f4cf8){_0x5a7f8d[_0x1a57('0x40')](_[_0x1a57('0xcb')]({'channel':_0x1f4cf8,'type':_0x1a57('0xfa'),'data1':_0x252662[_0x1a57('0x59')][_0x1a57('0xfb')],'data2':_0x3b9a2},_0x27cc04));if(_0x5c6d64[_0x1a57('0x97')]){_0x44b634[_0x1a57('0x40')](_[_0x1a57('0xcb')]({'channel':_0x1f4cf8,'type':'PAUSE','data1':_0x1a57('0xfc')},_0x27cc04));}});return db[_0x1a57('0xf6')][_0x1a57('0x81')](_0x5a7f8d['concat'](_0x44b634),{'individualHooks':!![]});}})[_0x1a57('0x14')](function(){if(_0x5c6d64){return _0x5c6d64[_0x1a57('0x58')]({'online':!![],'lastLoginAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'voicePause':_0x5c6d64[_0x1a57('0x97')]||![],'mailPause':_0x5c6d64['loginInPause']||![],'chatPause':_0x5c6d64[_0x1a57('0x97')]||![],'faxPause':_0x5c6d64['loginInPause']||![],'smsPause':_0x5c6d64[_0x1a57('0x97')]||![],'openchannelPause':_0x5c6d64[_0x1a57('0x97')]||![],'whatsappPause':_0x5c6d64[_0x1a57('0x97')]||![],'pauseType':_0x5c6d64[_0x1a57('0x97')]?'LOGININPAUSE':null,'interface':_0x3b9a2,'lastPauseAt':moment()['format'](_0x1a57('0xf8'))});}})[_0x1a57('0x14')](function(_0x2be8be){if(_0x252662[_0x1a57('0xfd')]){return _0x186b8d();}else{return BPromise[_0x1a57('0xfe')](_0x2be8be)[_0x1a57('0x14')](respondWithResult(_0x240481,null));}})[_0x1a57('0x4c')](handleError(_0x240481,null));};exports[_0x1a57('0xff')]=function(_0x23ec6f,_0x14c095){var _0x218398;return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x23ec6f[_0x1a57('0x4e')]['id'],'role':'agent'},'attributes':['id',_0x1a57('0x32'),_0x1a57('0x27')]})[_0x1a57('0x14')](handleEntityNotFound(_0x14c095,null))[_0x1a57('0x14')](function(_0x4ecc3e){if(_0x4ecc3e){_0x218398=_0x4ecc3e;return db['UserVoiceQueueRt'][_0x1a57('0x34')]({'where':{'membername':_0x218398[_0x1a57('0x32')]},'individualHooks':!![]});}})[_0x1a57('0x14')](function(){return db[_0x1a57('0xf6')][_0x1a57('0x41')]({'where':{'membername':_0x218398[_0x1a57('0x32')],'exitAt':null}});})[_0x1a57('0x14')](function(_0x374de1){var _0x54c5d3=[];_0x374de1[_0x1a57('0xf7')](function(_0x51e1a7){_0x54c5d3[_0x1a57('0x40')](_0x51e1a7[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x54c5d3);})['then'](function(){return _0x218398[_0x1a57('0x58')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x1a57('0x14')](respondWithResult(_0x14c095,null))[_0x1a57('0x4c')](handleError(_0x14c095,null));};exports[_0x1a57('0x100')]=function(_0x405cfd,_0x5e9343){var _0xddd561;return db['UserVoiceQueueRt'][_0x1a57('0x58')]({'paused':0x1},{'where':{'UserId':_0x405cfd[_0x1a57('0x4e')]['id']},'individualHooks':!![]})[_0x1a57('0x14')](function(){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x405cfd['params']['id'],'role':_0x1a57('0x2b')},'attributes':['id',_0x1a57('0x32'),'role',_0x1a57('0x60'),'interface']});})[_0x1a57('0x14')](handleEntityNotFound(_0x5e9343,null))['then'](function(_0x425730){if(_0x425730){_0xddd561=_0x425730;return respondWithRpcPromise('QueuePause',_0x1a57('0x100'),{'id':_0xddd561['id'],'name':_0xddd561[_0x1a57('0x32')],'pause':!![]});}})[_0x1a57('0x14')](function(){if(_0xddd561){return db[_0x1a57('0xf6')][_0x1a57('0x41')]({'where':{'membername':_0xddd561[_0x1a57('0x32')],'type':_0x1a57('0x101'),'exitAt':null}});}})[_0x1a57('0x14')](function(_0x3a8299){if(_0x3a8299[_0x1a57('0x45')]){var _0x356428=moment()['format'](_0x1a57('0xf8'));for(var _0x9ee424=0x0,_0x31745f=_0x3a8299[_0x1a57('0x45')];_0x9ee424<_0x31745f;_0x9ee424++){_0x3a8299[_0x9ee424][_0x1a57('0x102')]({'exitAt':_0x356428});}}})[_0x1a57('0x14')](function(){var _0x1a221a=[];var _0xad34be=utils[_0x1a57('0xf9')]();_0xad34be[_0x1a57('0xf7')](function(_0x9376a4){_0x1a221a[_0x1a57('0x40')]({'channel':_0x9376a4,'membername':_0xddd561['name'],'interface':_[_0x1a57('0x61')](_0xddd561[_0x1a57('0x99')])?util[_0x1a57('0xed')](_0x1a57('0xa6'),_0xddd561[_0x1a57('0x32')]):_0xddd561[_0x1a57('0x99')],'type':_0x1a57('0x101'),'enterAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'data1':_0x405cfd[_0x1a57('0x59')][_0x1a57('0x103')]||'DEFAULT\x20PAUSE','role':_0xddd561[_0x1a57('0x27')],'internal':_0xddd561[_0x1a57('0x60')]});});return db[_0x1a57('0xf6')][_0x1a57('0x81')](_0x1a221a,{'individualHooks':!![]});})[_0x1a57('0x14')](function(){return _0xddd561[_0x1a57('0x58')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x405cfd[_0x1a57('0x59')][_0x1a57('0x103')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x1a57('0xf8'))});})[_0x1a57('0x14')](respondWithResult(_0x5e9343,null))[_0x1a57('0x4c')](handleError(_0x5e9343,null));};exports[_0x1a57('0x104')]=function(_0x5d3258,_0x3dc0db){var _0x43a797;return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x5d3258[_0x1a57('0x4e')]['id']},'attributes':['id',_0x1a57('0x32'),_0x1a57('0x27'),_0x1a57('0x98'),_0x1a57('0x105'),'chatPause',_0x1a57('0x106'),_0x1a57('0x107'),_0x1a57('0x108'),'whatsapppause',_0x1a57('0x109'),'lastPauseAt']})[_0x1a57('0x14')](handleEntityNotFound(_0x3dc0db,null))[_0x1a57('0x14')](function(_0x3f74e5){if(_0x3f74e5){_0x43a797=_0x3f74e5;if(_0x5d3258['body'][_0x1a57('0xaa')]&&!utils[_0x1a57('0x9a')](_0x5d3258[_0x1a57('0x59')]['channel'])){throw new db['Sequelize'][(_0x1a57('0x8b'))](_0x1a57('0x9b'));}switch(_0x5d3258[_0x1a57('0x59')][_0x1a57('0xaa')]){case _0x1a57('0xa3'):return respondWithRpcPromise(_0x1a57('0x10a'),_0x1a57('0x104'),{'id':_0x43a797['id'],'name':_0x43a797[_0x1a57('0x32')],'pause':![]})[_0x1a57('0x14')](function(){return db[_0x1a57('0xa7')]['update']({'paused':0x0},{'where':{'UserId':_0x43a797['id']},'individualHooks':!![]});})[_0x1a57('0x14')](function(){return db['MemberReport']['find']({'where':{'channel':_0x5d3258[_0x1a57('0x59')][_0x1a57('0xaa')],'membername':_0x43a797[_0x1a57('0x32')],'type':'PAUSE','exitAt':null}});})[_0x1a57('0x14')](function(_0x501b7a){if(_0x501b7a){return _0x501b7a[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x1a57('0x14')](function(){return _0x43a797[_0x1a57('0x58')]({'voicePause':![]});});case _0x1a57('0x49'):case _0x1a57('0x56'):case'fax':case _0x1a57('0x47'):case _0x1a57('0x4a'):case _0x1a57('0x57'):return db[_0x1a57('0xf6')][_0x1a57('0x31')]({'where':{'channel':_0x5d3258['body'][_0x1a57('0xaa')],'membername':_0x43a797[_0x1a57('0x32')],'type':'PAUSE','exitAt':null}})[_0x1a57('0x14')](function(_0x4c9aaf){if(_0x4c9aaf){return _0x4c9aaf[_0x1a57('0x58')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x1a57('0x10b')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x226ba9={};_[_0x1a57('0x10c')](_0x226ba9,util[_0x1a57('0xed')](_0x1a57('0x10d'),_0x5d3258[_0x1a57('0x59')][_0x1a57('0xaa')],_0x1a57('0x10e')),![]);return _0x43a797[_0x1a57('0x58')](_0x226ba9);});default:return respondWithRpcPromise(_0x1a57('0x10a'),'unpause',{'id':_0x43a797['id'],'name':_0x43a797[_0x1a57('0x32')],'pause':![]})[_0x1a57('0x14')](function(){return db[_0x1a57('0xa7')][_0x1a57('0x58')]({'paused':0x0},{'where':{'UserId':_0x43a797['id']}});})[_0x1a57('0x14')](function(){return db[_0x1a57('0xf6')][_0x1a57('0x41')]({'where':{'membername':_0x43a797[_0x1a57('0x32')],'type':'PAUSE','exitAt':null}});})[_0x1a57('0x14')](function(_0x11b304){var _0x883c07=[];_0x11b304[_0x1a57('0xf7')](function(_0x14b71f){_0x883c07[_0x1a57('0x40')](_0x14b71f[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x1a57('0x10b')}));});return BPromise[_0x1a57('0x4b')](_0x883c07);})['then'](function(){return _0x43a797['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x1a57('0x14')](respondWithResult(_0x3dc0db,null))[_0x1a57('0x4c')](handleError(_0x3dc0db,null));};exports[_0x1a57('0x10f')]=function(_0x580727,_0x5d6fc1){var _0x355b7f={};var _0x16f7fb={};var _0x4ec722;var _0x2946fa;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x580727['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x5d6fc1,null))['then'](function(_0x4db2e8){if(_0x4db2e8){_0x4ec722=_0x4db2e8;_0x16f7fb[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x110')][_0x1a57('0x52')]);_0x16f7fb[_0x1a57('0x43')]=_['keys'](_0x580727[_0x1a57('0x43')]);_0x16f7fb[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x16f7fb['model'],_0x16f7fb[_0x1a57('0x43')]);_0x355b7f['attributes']=_['intersection'](_0x16f7fb[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x580727[_0x1a57('0x43')][_0x1a57('0x55')]));_0x355b7f['attributes']=_0x355b7f[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x355b7f['attributes']:_0x16f7fb['model'];_0x355b7f[_0x1a57('0xc7')]=qs['sort'](_0x580727[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x355b7f[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x580727[_0x1a57('0x43')],_0x16f7fb[_0x1a57('0xc6')]));if(_0x580727['query'][_0x1a57('0x2e')]){_0x355b7f[_0x1a57('0xca')]=_['merge'](_0x355b7f[_0x1a57('0xca')],{'$or':_['map'](_0x355b7f[_0x1a57('0x3f')],function(_0x34c45c){var _0x1976e5={};_0x1976e5[_0x34c45c]={'$like':'%'+_0x580727[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x1976e5;})});}_0x355b7f=_[_0x1a57('0xcb')]({},_0x355b7f,_0x580727[_0x1a57('0xcc')]);return _0x4ec722['getTeams'](_0x355b7f);}})[_0x1a57('0x14')](function(_0x5b244d){if(_0x5b244d){_0x2946fa=_0x5b244d[_0x1a57('0x45')];if(!_0x580727[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x355b7f[_0x1a57('0x23')]=qs['limit'](_0x580727[_0x1a57('0x43')][_0x1a57('0x23')]);_0x355b7f['offset']=qs['offset'](_0x580727[_0x1a57('0x43')]['offset']);}return _0x4ec722[_0x1a57('0x10f')](_0x355b7f);}})['then'](function(_0x10364e){if(_0x10364e){return _0x10364e?{'count':_0x2946fa,'rows':_0x10364e}:null;}})[_0x1a57('0x14')](respondWithResult(_0x5d6fc1,null))['catch'](handleError(_0x5d6fc1,null));};exports[_0x1a57('0x111')]=function(_0x15eb37,_0x149304){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x15eb37[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x149304,null))[_0x1a57('0x14')](function(_0x4bc3e6){if(_0x4bc3e6){var _0x600a23=_0x4bc3e6[_0x1a57('0x26')]({'plain':!![]});return _0x4bc3e6[_0x1a57('0x111')](_0x15eb37['body'][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x15eb37['body'],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x14')](function(){for(var _0x17d02d=0x0;_0x17d02d<_0x15eb37[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x17d02d++){var _0x38a4c4=[];db[_0x1a57('0x110')][_0x1a57('0x91')]({'where':{'id':_0x15eb37[_0x1a57('0x59')]['ids'][_0x17d02d]}})['then'](function(_0x17de99){_0x38a4c4['push'](_0x17de99[_0x1a57('0xf5')]()[_0x1a57('0x14')](function(_0x90bb16){for(var _0x5a0d64=0x0;_0x5a0d64<_0x90bb16['length'];_0x5a0d64++){_0x90bb16[_0x5a0d64][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x114'));}return _0x90bb16;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x115')]()['then'](function(_0x69f7ce){for(var _0x3c5184=0x0;_0x3c5184<_0x69f7ce['length'];_0x3c5184++){_0x69f7ce[_0x3c5184][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x116'));}return _0x69f7ce;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x117')]()[_0x1a57('0x14')](function(_0x1d8607){for(var _0x1664a1=0x0;_0x1664a1<_0x1d8607[_0x1a57('0x45')];_0x1664a1++){_0x1d8607[_0x1664a1]['setDataValue'](_0x1a57('0xaa'),_0x1a57('0x118'));}return _0x1d8607;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99['getSmsQueues']()[_0x1a57('0x14')](function(_0x3262c4){for(var _0x3f3acd=0x0;_0x3f3acd<_0x3262c4[_0x1a57('0x45')];_0x3f3acd++){_0x3262c4[_0x3f3acd]['setDataValue'](_0x1a57('0xaa'),_0x1a57('0x119'));}return _0x3262c4;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x11a')]()[_0x1a57('0x14')](function(_0x3715d1){for(var _0x2e92fe=0x0;_0x2e92fe<_0x3715d1[_0x1a57('0x45')];_0x2e92fe++){_0x3715d1[_0x2e92fe][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x11b'));}return _0x3715d1;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x11c')]()[_0x1a57('0x14')](function(_0x4ed82){for(var _0x303ad8=0x0;_0x303ad8<_0x4ed82['length'];_0x303ad8++){_0x4ed82[_0x303ad8][_0x1a57('0x113')](_0x1a57('0xaa'),'Fax');}return _0x4ed82;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x11d')]()['then'](function(_0x95a369){for(var _0x2351f4=0x0;_0x2351f4<_0x95a369[_0x1a57('0x45')];_0x2351f4++){_0x95a369[_0x2351f4][_0x1a57('0x113')]('channel',_0x1a57('0x11e'));}return _0x95a369;}));return BPromise[_0x1a57('0x4b')](_0x38a4c4);})[_0x1a57('0x14')](function(_0x470700){var _0xca5628=_[_0x1a57('0x11f')](_0x470700);_0x38a4c4=[];return db[_0x1a57('0x63')][_0x1a57('0x120')](function(_0x591579){for(var _0x54ff4e=0x0;_0x54ff4e<_0xca5628[_0x1a57('0x45')];_0x54ff4e++){_0x38a4c4['push'](_0xca5628[_0x54ff4e][_0x1a57('0x121')](_0x600a23['id']),{'transaction':_0x591579});}return BPromise[_0x1a57('0x4b')](_0x38a4c4)[_0x1a57('0x14')](function(){if(_0x600a23['online']){return BPromise['each'](_[_0x1a57('0x2e')](_0xca5628,function(_0x2a3423){return _0x2a3423[_0x1a57('0x122')](_0x1a57('0xaa'))===_0x1a57('0x114');}),function(_0x550ddf){return db[_0x1a57('0xa7')][_0x1a57('0xa8')]({'membername':_0x600a23[_0x1a57('0x32')],'UserId':_0x600a23['id'],'queue_name':_0x550ddf['name'],'VoiceQueueId':_0x550ddf['id'],'interface':_['isNil'](_0x600a23['interface'])?util[_0x1a57('0xed')](_0x1a57('0xa6'),_0x600a23['name']):_0x600a23[_0x1a57('0x99')],'paused':_0x600a23[_0x1a57('0x98')]||![],'penalty':_0x600a23[_0x1a57('0x9e')]},{'transaction':_0x591579});});}else{return;}})['then'](function(){for(var _0x969913=0x0;_0x969913<_0xca5628[_0x1a57('0x45')];_0x969913++){var _0x2343d5=_0xca5628[_0x969913][_0x1a57('0x122')](_0x1a57('0xaa'));var _0x3e7f86=_0x2343d5+_0x1a57('0xa0');socket['emit'](_0x1a57('0x29')+_0x2343d5+_0x1a57('0xa2'),{'UserId':_0x600a23['id'],['queueField']:_0xca5628[_0x969913]['id']});}});});});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x149304,null))[_0x1a57('0x4c')](handleError(_0x149304,null));};exports[_0x1a57('0x123')]=function(_0x1e0025,_0x2f536b){return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x1e0025['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2f536b,null))[_0x1a57('0x14')](function(_0x309816){if(_0x309816){var _0x8a89d8=_0x309816['get']({'plain':!![]});var _0x548f7c=_0x1e0025[_0x1a57('0x43')][_0x1a57('0x5b')];return _0x309816[_0x1a57('0x123')](_0x548f7c)['then'](function(){for(var _0x522db1=0x0;_0x522db1<_0x548f7c[_0x1a57('0x45')];_0x522db1++){var _0x41d56b=[];db[_0x1a57('0x110')][_0x1a57('0x91')]({'where':{'id':_0x548f7c[_0x522db1]}})['then'](function(_0x4297bf){_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0xf5')]()[_0x1a57('0x14')](function(_0x387345){for(var _0x444c9d=0x0;_0x444c9d<_0x387345[_0x1a57('0x45')];_0x444c9d++){_0x387345[_0x444c9d]['setDataValue']('channel',_0x1a57('0x114'));}return _0x387345;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x115')]()[_0x1a57('0x14')](function(_0x3067aa){for(var _0xa80b2d=0x0;_0xa80b2d<_0x3067aa[_0x1a57('0x45')];_0xa80b2d++){_0x3067aa[_0xa80b2d][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x116'));}return _0x3067aa;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x117')]()[_0x1a57('0x14')](function(_0x178f44){for(var _0x3eeb0c=0x0;_0x3eeb0c<_0x178f44[_0x1a57('0x45')];_0x3eeb0c++){_0x178f44[_0x3eeb0c][_0x1a57('0x113')](_0x1a57('0xaa'),'Mail');}return _0x178f44;}));_0x41d56b['push'](_0x4297bf[_0x1a57('0x124')]()[_0x1a57('0x14')](function(_0x2cce2c){for(var _0x4cd22b=0x0;_0x4cd22b<_0x2cce2c[_0x1a57('0x45')];_0x4cd22b++){_0x2cce2c[_0x4cd22b][_0x1a57('0x113')](_0x1a57('0xaa'),'Sms');}return _0x2cce2c;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x11a')]()[_0x1a57('0x14')](function(_0x427565){for(var _0x257c87=0x0;_0x257c87<_0x427565[_0x1a57('0x45')];_0x257c87++){_0x427565[_0x257c87][_0x1a57('0x113')]('channel','Whatsapp');}return _0x427565;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x11c')]()[_0x1a57('0x14')](function(_0x5de81d){for(var _0x671ca8=0x0;_0x671ca8<_0x5de81d['length'];_0x671ca8++){_0x5de81d[_0x671ca8]['setDataValue']('channel',_0x1a57('0x125'));}return _0x5de81d;}));_0x41d56b['push'](_0x4297bf[_0x1a57('0x11d')]()[_0x1a57('0x14')](function(_0x22244c){for(var _0x4867ba=0x0;_0x4867ba<_0x22244c['length'];_0x4867ba++){_0x22244c[_0x4867ba]['setDataValue'](_0x1a57('0xaa'),_0x1a57('0x11e'));}return _0x22244c;}));return BPromise['all'](_0x41d56b);})[_0x1a57('0x14')](function(_0x21dfa8){var _0x42a6de=_['flatten'](_0x21dfa8);_0x41d56b=[];return db[_0x1a57('0x63')]['transaction'](function(_0x322201){for(var _0x254927=0x0;_0x254927<_0x42a6de['length'];_0x254927++){_0x41d56b[_0x1a57('0x40')](_0x42a6de[_0x254927]['removeAgent'](_0x8a89d8['id']),{'transaction':_0x322201});}return BPromise[_0x1a57('0x4b')](_0x41d56b)[_0x1a57('0x14')](function(){if(_0x8a89d8[_0x1a57('0xa5')]){return BPromise[_0x1a57('0x83')](_[_0x1a57('0x2e')](_0x42a6de,function(_0x10975f){return _0x10975f[_0x1a57('0x122')](_0x1a57('0xaa'))===_0x1a57('0x114');}),function(_0x56ebac){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x56ebac['id'],'UserId':_0x8a89d8['id']},'transaction':_0x322201});});}else{return;}})['then'](function(){for(var _0x8f9aee=0x0;_0x8f9aee<_0x42a6de['length'];_0x8f9aee++){var _0xcf76a0=_0x42a6de[_0x8f9aee][_0x1a57('0x122')]('channel');var _0x4bc528=_0xcf76a0+_0x1a57('0xa0');socket[_0x1a57('0xa1')](_0x1a57('0x29')+_0xcf76a0+_0x1a57('0xae'),{'UserId':_0x8a89d8['id'],['queueField']:_0x42a6de[_0x8f9aee]['id']});}});});});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x2f536b,null))['catch'](handleError(_0x2f536b,null));};exports[_0x1a57('0x126')]=function(_0x2784a8,_0x3aae10){var _0x3ea61e={};var _0x489b67={};var _0x143def;var _0x2fb4ba;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x2784a8[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3aae10,null))[_0x1a57('0x14')](function(_0xcf07f0){if(_0xcf07f0){_0x143def=_0xcf07f0;_0x489b67[_0x1a57('0x4f')]=_['keys'](db['CmList']['rawAttributes']);_0x489b67['query']=_[_0x1a57('0x51')](_0x2784a8[_0x1a57('0x43')]);_0x489b67[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x489b67[_0x1a57('0x4f')],_0x489b67['query']);_0x3ea61e[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x489b67[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x2784a8[_0x1a57('0x43')][_0x1a57('0x55')]));_0x3ea61e[_0x1a57('0x3f')]=_0x3ea61e[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x3ea61e[_0x1a57('0x3f')]:_0x489b67[_0x1a57('0x4f')];_0x3ea61e[_0x1a57('0xc7')]=qs['sort'](_0x2784a8[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x3ea61e['where']=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x2784a8[_0x1a57('0x43')],_0x489b67[_0x1a57('0xc6')]));if(_0x2784a8[_0x1a57('0x43')]['filter']){_0x3ea61e[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x3ea61e['where'],{'$or':_['map'](_0x3ea61e[_0x1a57('0x3f')],function(_0x2e420d){var _0x5ac567={};_0x5ac567[_0x2e420d]={'$like':'%'+_0x2784a8[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x5ac567;})});}_0x3ea61e=_['merge']({},_0x3ea61e,_0x2784a8[_0x1a57('0xcc')]);return _0x143def[_0x1a57('0x126')](_0x3ea61e);}})[_0x1a57('0x14')](function(_0x1a4428){if(_0x1a4428){_0x2fb4ba=_0x1a4428[_0x1a57('0x45')];if(!_0x2784a8[_0x1a57('0x43')][_0x1a57('0xd4')]('nolimit')){_0x3ea61e[_0x1a57('0x23')]=qs['limit'](_0x2784a8['query'][_0x1a57('0x23')]);_0x3ea61e[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x2784a8[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x143def[_0x1a57('0x126')](_0x3ea61e);}})[_0x1a57('0x14')](function(_0xc0527a){if(_0xc0527a){return _0xc0527a?{'count':_0x2fb4ba,'rows':_0xc0527a}:null;}})[_0x1a57('0x14')](respondWithResult(_0x3aae10,null))[_0x1a57('0x4c')](handleError(_0x3aae10,null));};exports[_0x1a57('0x127')]=function(_0x3d4ba4,_0x5756c3){var _0x599ce9={};var _0x7dab4d={};var _0x1b2858;var _0x5ae492;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x3d4ba4['params']['id']}})['then'](handleEntityNotFound(_0x5756c3,null))[_0x1a57('0x14')](function(_0x2690f3){if(_0x2690f3){_0x1b2858=_0x2690f3;_0x7dab4d[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x3d')][_0x1a57('0x52')]);_0x7dab4d[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x3d4ba4[_0x1a57('0x43')]);_0x7dab4d[_0x1a57('0xc6')]=_['intersection'](_0x7dab4d[_0x1a57('0x4f')],_0x7dab4d[_0x1a57('0x43')]);_0x599ce9[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x7dab4d[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x3d4ba4[_0x1a57('0x43')][_0x1a57('0x55')]));_0x599ce9[_0x1a57('0x3f')]=_0x599ce9['attributes'][_0x1a57('0x45')]?_0x599ce9[_0x1a57('0x3f')]:_0x7dab4d[_0x1a57('0x4f')];_0x599ce9[_0x1a57('0xc7')]=qs['sort'](_0x3d4ba4[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x599ce9[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x3d4ba4[_0x1a57('0x43')],_0x7dab4d[_0x1a57('0xc6')]));if(_0x3d4ba4['query'][_0x1a57('0x2e')]){_0x599ce9[_0x1a57('0xca')]=_['merge'](_0x599ce9['where'],{'$or':_['map'](_0x599ce9['attributes'],function(_0x151db8){var _0x1520f1={};_0x1520f1[_0x151db8]={'$like':'%'+_0x3d4ba4[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x1520f1;})});}_0x599ce9[_0x1a57('0x4f')]=db[_0x1a57('0x3d')];_0x599ce9['as']=_0x1a57('0x2a');_0x599ce9=_[_0x1a57('0xcb')]({},_0x599ce9,_0x3d4ba4[_0x1a57('0xcc')]);return _0x1b2858[_0x1a57('0xf5')]({'include':[_0x599ce9]});}})['then'](function(_0x2574cd){if(_0x2574cd){var _0x11f5c9={},_0xf06a7d=[],_0xfa9268=0x0;for(var _0x12eeaa=0x0;_0x12eeaa<_0x2574cd['length'];_0x12eeaa+=0x1){for(var _0x297a3d=0x0,_0xc4422e;_0x297a3d<_0x2574cd[_0x12eeaa][_0x1a57('0x2a')][_0x1a57('0x45')];_0x297a3d+=0x1){_0xc4422e=_0x2574cd[_0x12eeaa][_0x1a57('0x2a')][_0x297a3d][_0x1a57('0x26')]({'plain':!![]});_0x11f5c9[_0xc4422e['id']]=_0xc4422e;}}_0x11f5c9=_[_0x1a57('0x128')](_0x11f5c9);for(var _0x3b5d8f=qs['offset'](_0x3d4ba4['query']['offset']);_0x3b5d8f<_0x11f5c9['length']&&_0xf06a7d[_0x1a57('0x45')]<qs[_0x1a57('0x23')](_0x3d4ba4['query'][_0x1a57('0x23')]);_0x3b5d8f+=0x1){if(_0x11f5c9[_0x3b5d8f]){_0xf06a7d[_0x1a57('0x40')](_0x11f5c9[_0x3b5d8f]);}}return{'count':_0x11f5c9['length'],'rows':_0xf06a7d};}})[_0x1a57('0x14')](respondWithResult(_0x5756c3,null))[_0x1a57('0x4c')](handleError(_0x5756c3,null));};exports[_0x1a57('0x34')]=function(_0x266d5e,_0x2841c1){if(_0x266d5e['user']['id']==_0x266d5e[_0x1a57('0x4e')]['id']){return _0x2841c1[_0x1a57('0x1e')](0x1f4)[_0x1a57('0x36')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x266d5e[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2841c1,null))[_0x1a57('0x14')](removeEntity(_0x2841c1,null))['catch'](handleError(_0x2841c1,null));};exports[_0x1a57('0x129')]=function(_0xc8ab47,_0x2a79a6){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0xc8ab47[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2a79a6,null))['then'](function(_0x1c57df){if(_0x1c57df){return _0x1c57df[_0x1a57('0x129')](_0xc8ab47[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0xc8ab47[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x12a')](function(){for(var _0x726999=0x0;_0x726999<_0xc8ab47[_0x1a57('0x59')]['ids'][_0x1a57('0x45')];_0x726999+=0x1){socket[_0x1a57('0xa1')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0xc8ab47['body'][_0x1a57('0x5b')][_0x726999]),'UserId':Number(_0xc8ab47['params']['id'])});}return _0xc8ab47[_0x1a57('0x59')][_0x1a57('0x5b')];});}})[_0x1a57('0x14')](respondWithResult(_0x2a79a6,null))[_0x1a57('0x4c')](handleError(_0x2a79a6,null));};exports['removeChatInteractions']=function(_0x330607,_0x2d3a43){return db['User'][_0x1a57('0x31')]({'where':{'id':_0x330607['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2d3a43,null))[_0x1a57('0x14')](function(_0x1f4de7){if(_0x1f4de7){return _0x1f4de7[_0x1a57('0x12b')](_0x330607['query']['ids'])['then'](function(){if(_[_0x1a57('0xad')](_0x330607[_0x1a57('0x43')][_0x1a57('0x5b')])){for(var _0x7c5987=0x0;_0x7c5987<_0x330607[_0x1a57('0x43')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x7c5987+=0x1){socket['emit'](_0x1a57('0x12c'),{'ChatInteractionId':Number(_0x330607[_0x1a57('0x43')][_0x1a57('0x5b')][_0x7c5987]),'UserId':Number(_0x330607[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x12c'),{'ChatInteractionId':Number(_0x330607['query'][_0x1a57('0x5b')]),'UserId':Number(_0x330607[_0x1a57('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x2d3a43,null))[_0x1a57('0x4c')](handleError(_0x2d3a43,null));};exports[_0x1a57('0x12d')]=function(_0x4e5ca3,_0xa0ec19){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4e5ca3[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa0ec19,null))['then'](function(_0x83ded){if(_0x83ded){return _0x83ded[_0x1a57('0x12d')](_0x4e5ca3['body'][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x4e5ca3[_0x1a57('0x59')],['ids','id'])||{})['spread'](function(){for(var _0x184c02=0x0;_0x184c02<_0x4e5ca3[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x184c02+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x12e'),{'MailInteractionId':Number(_0x4e5ca3[_0x1a57('0x59')]['ids'][_0x184c02]),'UserId':Number(_0x4e5ca3['params']['id'])});}return _0x4e5ca3[_0x1a57('0x59')][_0x1a57('0x5b')];});}})[_0x1a57('0x14')](respondWithResult(_0xa0ec19,null))[_0x1a57('0x4c')](handleError(_0xa0ec19,null));};exports['removeMailInteractions']=function(_0x5149cc,_0x38a27b){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x5149cc[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x38a27b,null))[_0x1a57('0x14')](function(_0x209f02){if(_0x209f02){return _0x209f02['removeMailInteractions'](_0x5149cc[_0x1a57('0x43')][_0x1a57('0x5b')])[_0x1a57('0x14')](function(){if(_['isArray'](_0x5149cc[_0x1a57('0x43')][_0x1a57('0x5b')])){for(var _0x315ad5=0x0;_0x315ad5<_0x5149cc[_0x1a57('0x43')]['ids']['length'];_0x315ad5+=0x1){socket[_0x1a57('0xa1')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5149cc[_0x1a57('0x43')][_0x1a57('0x5b')][_0x315ad5]),'UserId':Number(_0x5149cc[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x12f'),{'MailInteractionId':Number(_0x5149cc['query']['ids']),'UserId':Number(_0x5149cc[_0x1a57('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x38a27b,null))[_0x1a57('0x4c')](handleError(_0x38a27b,null));};exports['addFaxInteractions']=function(_0x9ad4c9,_0x4b3f66){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x9ad4c9[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x4b3f66,null))[_0x1a57('0x14')](function(_0x35932f){if(_0x35932f){return _0x35932f[_0x1a57('0x130')](_0x9ad4c9[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x9ad4c9[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x12a')](function(){for(var _0x6a0323=0x0;_0x6a0323<_0x9ad4c9[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x6a0323+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x131'),{'FaxInteractionId':Number(_0x9ad4c9['body']['ids'][_0x6a0323]),'UserId':Number(_0x9ad4c9[_0x1a57('0x4e')]['id'])});}return _0x9ad4c9['body'][_0x1a57('0x5b')];});}})['then'](respondWithResult(_0x4b3f66,null))[_0x1a57('0x4c')](handleError(_0x4b3f66,null));};exports[_0x1a57('0x132')]=function(_0x4cf652,_0x39155b){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4cf652['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x39155b,null))[_0x1a57('0x14')](function(_0x55bc72){if(_0x55bc72){return _0x55bc72[_0x1a57('0x132')](_0x4cf652['query']['ids'])['then'](function(){if(_['isArray'](_0x4cf652['query'][_0x1a57('0x5b')])){for(var _0x42f5b9=0x0;_0x42f5b9<_0x4cf652['query'][_0x1a57('0x5b')][_0x1a57('0x45')];_0x42f5b9+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x133'),{'FaxInteractionId':Number(_0x4cf652[_0x1a57('0x43')][_0x1a57('0x5b')][_0x42f5b9]),'UserId':Number(_0x4cf652[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x133'),{'FaxInteractionId':Number(_0x4cf652['query'][_0x1a57('0x5b')]),'UserId':Number(_0x4cf652[_0x1a57('0x4e')]['id'])});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x39155b,null))[_0x1a57('0x4c')](handleError(_0x39155b,null));};exports[_0x1a57('0x134')]=function(_0x391ee6,_0x192f70){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x391ee6[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x192f70,null))['then'](function(_0x2f7b32){if(_0x2f7b32){return _0x2f7b32[_0x1a57('0x134')](_0x391ee6[_0x1a57('0x59')]['ids'],_[_0x1a57('0x112')](_0x391ee6[_0x1a57('0x59')],['ids','id'])||{})[_0x1a57('0x12a')](function(){for(var _0x44925d=0x0;_0x44925d<_0x391ee6[_0x1a57('0x59')][_0x1a57('0x5b')]['length'];_0x44925d+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x135'),{'SmsInteractionId':Number(_0x391ee6[_0x1a57('0x59')][_0x1a57('0x5b')][_0x44925d]),'UserId':Number(_0x391ee6[_0x1a57('0x4e')]['id'])});}return _0x391ee6[_0x1a57('0x59')]['ids'];});}})[_0x1a57('0x14')](respondWithResult(_0x192f70,null))[_0x1a57('0x4c')](handleError(_0x192f70,null));};exports[_0x1a57('0x136')]=function(_0x3d7135,_0x3e5544){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x3d7135[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3e5544,null))[_0x1a57('0x14')](function(_0x4b24c8){if(_0x4b24c8){return _0x4b24c8[_0x1a57('0x136')](_0x3d7135['query'][_0x1a57('0x5b')])[_0x1a57('0x14')](function(){if(_['isArray'](_0x3d7135[_0x1a57('0x43')]['ids'])){for(var _0x22ece1=0x0;_0x22ece1<_0x3d7135[_0x1a57('0x43')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x22ece1+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x137'),{'SmsInteractionId':Number(_0x3d7135[_0x1a57('0x43')][_0x1a57('0x5b')][_0x22ece1]),'UserId':Number(_0x3d7135[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x137'),{'SmsInteractionId':Number(_0x3d7135['query'][_0x1a57('0x5b')]),'UserId':Number(_0x3d7135[_0x1a57('0x4e')]['id'])});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x3e5544,null))[_0x1a57('0x4c')](handleError(_0x3e5544,null));};exports[_0x1a57('0x138')]=function(_0xfdb511,_0x4b65b3){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0xfdb511[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x4b65b3,null))['then'](function(_0x5409b7){if(_0x5409b7){return _0x5409b7[_0x1a57('0x138')](_0xfdb511[_0x1a57('0x59')][_0x1a57('0x5b')],_['omit'](_0xfdb511[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})['spread'](function(){for(var _0x52c427=0x0;_0x52c427<_0xfdb511[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x52c427+=0x1){socket['emit']('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0xfdb511[_0x1a57('0x59')][_0x1a57('0x5b')][_0x52c427]),'UserId':Number(_0xfdb511[_0x1a57('0x4e')]['id'])});}return _0xfdb511[_0x1a57('0x59')]['ids'];});}})[_0x1a57('0x14')](respondWithResult(_0x4b65b3,null))['catch'](handleError(_0x4b65b3,null));};exports[_0x1a57('0x139')]=function(_0x400b5a,_0x2f782f){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x400b5a[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2f782f,null))[_0x1a57('0x14')](function(_0x1b6517){if(_0x1b6517){return _0x1b6517[_0x1a57('0x139')](_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')])[_0x1a57('0x14')](function(){if(_[_0x1a57('0xad')](_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')])){for(var _0x50c450=0x0;_0x50c450<_0x400b5a['query'][_0x1a57('0x5b')]['length'];_0x50c450+=0x1){socket['emit'](_0x1a57('0x13a'),{'OpenchannelInteractionId':Number(_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')][_0x50c450]),'UserId':Number(_0x400b5a[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')]),'UserId':Number(_0x400b5a[_0x1a57('0x4e')]['id'])});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x2f782f,null))[_0x1a57('0x4c')](handleError(_0x2f782f,null));};exports['addWhatsappInteractions']=function(_0x109755,_0xa599f){return db['User'][_0x1a57('0x31')]({'where':{'id':_0x109755[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0xa599f,null))[_0x1a57('0x14')](function(_0x1fafa8){if(_0x1fafa8){return _0x1fafa8[_0x1a57('0x13b')](_0x109755[_0x1a57('0x59')][_0x1a57('0x5b')],_['omit'](_0x109755[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x12a')](function(){for(var _0x3415e9=0x0;_0x3415e9<_0x109755[_0x1a57('0x59')][_0x1a57('0x5b')]['length'];_0x3415e9+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x13c'),{'WhatsappInteractionId':Number(_0x109755[_0x1a57('0x59')][_0x1a57('0x5b')][_0x3415e9]),'UserId':Number(_0x109755['params']['id'])});}return _0x109755['body'][_0x1a57('0x5b')];});}})[_0x1a57('0x14')](respondWithResult(_0xa599f,null))[_0x1a57('0x4c')](handleError(_0xa599f,null));};exports[_0x1a57('0x13d')]=function(_0x3fe2d6,_0x2d4d46){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x3fe2d6[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2d4d46,null))[_0x1a57('0x14')](function(_0x26e55d){if(_0x26e55d){return _0x26e55d[_0x1a57('0x13d')](_0x3fe2d6[_0x1a57('0x43')]['ids']);}})['then'](respondWithStatusCode(_0x2d4d46,null))[_0x1a57('0x4c')](handleError(_0x2d4d46,null));};exports[_0x1a57('0x13e')]=function(_0x872cf5,_0x3c092e){var _0x42f824={};var _0x12acb0={};var _0x3730e0;var _0x530800;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x872cf5['params']['id']}})['then'](handleEntityNotFound(_0x3c092e,null))['then'](function(_0x1d54c1){if(_0x1d54c1){_0x3730e0=_0x1d54c1;_0x12acb0[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x13f')][_0x1a57('0x52')]);_0x12acb0[_0x1a57('0x43')]=_['keys'](_0x872cf5[_0x1a57('0x43')]);_0x12acb0[_0x1a57('0xc6')]=_['intersection'](_0x12acb0['model'],_0x12acb0[_0x1a57('0x43')]);_0x42f824[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x12acb0[_0x1a57('0x4f')],qs['fields'](_0x872cf5[_0x1a57('0x43')][_0x1a57('0x55')]));_0x42f824[_0x1a57('0x3f')]=_0x42f824[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x42f824['attributes']:_0x12acb0[_0x1a57('0x4f')];_0x42f824[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x872cf5[_0x1a57('0x43')]['sort']);_0x42f824[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x872cf5[_0x1a57('0x43')],_0x12acb0[_0x1a57('0xc6')]));if(_0x872cf5['query'][_0x1a57('0x2e')]){_0x42f824[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x42f824[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x42f824['attributes'],function(_0x3b9440){var _0x260aa5={};_0x260aa5[_0x3b9440]={'$like':'%'+_0x872cf5[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x260aa5;})});}_0x42f824=_[_0x1a57('0xcb')]({},_0x42f824,_0x872cf5[_0x1a57('0xcc')]);return _0x3730e0[_0x1a57('0x13e')](_0x42f824);}})[_0x1a57('0x14')](function(_0x28e225){if(_0x28e225){_0x530800=_0x28e225[_0x1a57('0x45')];if(!_0x872cf5[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x42f824[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x872cf5[_0x1a57('0x43')]['limit']);_0x42f824['offset']=qs[_0x1a57('0x21')](_0x872cf5[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x3730e0[_0x1a57('0x13e')](_0x42f824);}})[_0x1a57('0x14')](function(_0x5722d0){if(_0x5722d0){return _0x5722d0?{'count':_0x530800,'rows':_0x5722d0}:null;}})['then'](respondWithResult(_0x3c092e,null))[_0x1a57('0x4c')](handleError(_0x3c092e,null));};exports[_0x1a57('0x140')]=function(_0x47f76b,_0x29a38c){var _0x23353c={};var _0x3569bc={};var _0x5681d9;var _0x4d8ddb;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x47f76b[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x29a38c,null))['then'](function(_0x250e64){if(_0x250e64){_0x5681d9=_0x250e64;_0x3569bc[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x141')][_0x1a57('0x52')]);_0x3569bc[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x47f76b[_0x1a57('0x43')]);_0x3569bc[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x3569bc[_0x1a57('0x4f')],_0x3569bc[_0x1a57('0x43')]);_0x23353c['attributes']=_[_0x1a57('0x54')](_0x3569bc[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x47f76b[_0x1a57('0x43')][_0x1a57('0x55')]));_0x23353c[_0x1a57('0x3f')]=_0x23353c[_0x1a57('0x3f')]['length']?_0x23353c[_0x1a57('0x3f')]:_0x3569bc[_0x1a57('0x4f')];_0x23353c['order']=qs[_0x1a57('0xc8')](_0x47f76b[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x23353c[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x47f76b[_0x1a57('0x43')],_0x3569bc['filters']));if(_0x47f76b['query'][_0x1a57('0x2e')]){_0x23353c[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x23353c[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x23353c[_0x1a57('0x3f')],function(_0x13debd){var _0x31285d={};_0x31285d[_0x13debd]={'$like':'%'+_0x47f76b['query'][_0x1a57('0x2e')]+'%'};return _0x31285d;})});}_0x23353c=_['merge']({},_0x23353c,_0x47f76b[_0x1a57('0xcc')]);return _0x5681d9['getFaxAccounts'](_0x23353c);}})[_0x1a57('0x14')](function(_0x3c7dcc){if(_0x3c7dcc){_0x4d8ddb=_0x3c7dcc[_0x1a57('0x45')];if(!_0x47f76b['query']['hasOwnProperty'](_0x1a57('0xd5'))){_0x23353c['limit']=qs[_0x1a57('0x23')](_0x47f76b[_0x1a57('0x43')]['limit']);_0x23353c[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x47f76b[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x5681d9['getFaxAccounts'](_0x23353c);}})[_0x1a57('0x14')](function(_0xcc7928){if(_0xcc7928){return _0xcc7928?{'count':_0x4d8ddb,'rows':_0xcc7928}:null;}})[_0x1a57('0x14')](respondWithResult(_0x29a38c,null))[_0x1a57('0x4c')](handleError(_0x29a38c,null));};exports['addFaxAccounts']=function(_0x204a4a,_0xfa6aca){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x204a4a[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xfa6aca,null))[_0x1a57('0x14')](function(_0x4098cf){if(_0x4098cf){return _0x4098cf['addFaxAccounts'](_0x204a4a[_0x1a57('0x59')]['ids'],_[_0x1a57('0x112')](_0x204a4a['body'],['ids','id'])||{});}})['then'](respondWithResult(_0xfa6aca,null))[_0x1a57('0x4c')](handleError(_0xfa6aca,null));};exports[_0x1a57('0x142')]=function(_0x129fa8,_0x4d4687){return db['User']['find']({'where':{'id':_0x129fa8[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4d4687,null))[_0x1a57('0x14')](function(_0x171ff9){if(_0x171ff9){return _0x171ff9[_0x1a57('0x142')](_0x129fa8['query']['ids']);}})['then'](respondWithStatusCode(_0x4d4687,null))[_0x1a57('0x4c')](handleError(_0x4d4687,null));};exports[_0x1a57('0x143')]=function(_0x1370a6,_0x198ad8){var _0x258c56={};var _0x1caa40={};var _0xe36029;var _0x4d16f2;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x1370a6[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x198ad8,null))[_0x1a57('0x14')](function(_0x599354){if(_0x599354){_0xe36029=_0x599354;_0x1caa40[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x144')][_0x1a57('0x52')]);_0x1caa40[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x1370a6[_0x1a57('0x43')]);_0x1caa40['filters']=_[_0x1a57('0x54')](_0x1caa40[_0x1a57('0x4f')],_0x1caa40['query']);_0x258c56['attributes']=_[_0x1a57('0x54')](_0x1caa40['model'],qs[_0x1a57('0x55')](_0x1370a6[_0x1a57('0x43')][_0x1a57('0x55')]));_0x258c56['attributes']=_0x258c56[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x258c56[_0x1a57('0x3f')]:_0x1caa40[_0x1a57('0x4f')];_0x258c56[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x1370a6['query']['sort']);_0x258c56[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x1370a6[_0x1a57('0x43')],_0x1caa40[_0x1a57('0xc6')]));if(_0x1370a6[_0x1a57('0x43')]['filter']){_0x258c56[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x258c56[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x258c56[_0x1a57('0x3f')],function(_0x2ba71f){var _0x312bb2={};_0x312bb2[_0x2ba71f]={'$like':'%'+_0x1370a6[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x312bb2;})});}_0x258c56=_[_0x1a57('0xcb')]({},_0x258c56,_0x1370a6['options']);return _0xe36029[_0x1a57('0x143')](_0x258c56);}})['then'](function(_0x4930fb){if(_0x4930fb){_0x4d16f2=_0x4930fb[_0x1a57('0x45')];if(!_0x1370a6[_0x1a57('0x43')]['hasOwnProperty']('nolimit')){_0x258c56[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x1370a6[_0x1a57('0x43')][_0x1a57('0x23')]);_0x258c56[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x1370a6[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0xe36029['getMailAccounts'](_0x258c56);}})[_0x1a57('0x14')](function(_0x2f7275){if(_0x2f7275){return _0x2f7275?{'count':_0x4d16f2,'rows':_0x2f7275}:null;}})[_0x1a57('0x14')](respondWithResult(_0x198ad8,null))[_0x1a57('0x4c')](handleError(_0x198ad8,null));};exports[_0x1a57('0x145')]=function(_0x50ab37,_0x34322e){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x50ab37[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x34322e,null))[_0x1a57('0x14')](function(_0x1cbc42){if(_0x1cbc42){return _0x1cbc42[_0x1a57('0x145')](_0x50ab37[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x50ab37[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x34322e,null))['catch'](handleError(_0x34322e,null));};exports[_0x1a57('0x146')]=function(_0x482966,_0x1b749c){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x482966[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1b749c,null))['then'](function(_0x10c567){if(_0x10c567){return _0x10c567['removeMailAccounts'](_0x482966[_0x1a57('0x43')][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x1b749c,null))[_0x1a57('0x4c')](handleError(_0x1b749c,null));};exports['getOpenchannelAccounts']=function(_0x368292,_0x13c700){var _0x1b4752={};var _0x5f38b8={};var _0x57fbe6;var _0x30df11;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x368292[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x13c700,null))[_0x1a57('0x14')](function(_0x4e943a){if(_0x4e943a){_0x57fbe6=_0x4e943a;_0x5f38b8[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x147')][_0x1a57('0x52')]);_0x5f38b8[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x368292[_0x1a57('0x43')]);_0x5f38b8['filters']=_[_0x1a57('0x54')](_0x5f38b8[_0x1a57('0x4f')],_0x5f38b8[_0x1a57('0x43')]);_0x1b4752[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x5f38b8[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x368292[_0x1a57('0x43')][_0x1a57('0x55')]));_0x1b4752[_0x1a57('0x3f')]=_0x1b4752[_0x1a57('0x3f')]['length']?_0x1b4752[_0x1a57('0x3f')]:_0x5f38b8[_0x1a57('0x4f')];_0x1b4752[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x368292[_0x1a57('0x43')]['sort']);_0x1b4752[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x368292[_0x1a57('0x43')],_0x5f38b8['filters']));if(_0x368292['query']['filter']){_0x1b4752[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x1b4752[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x1b4752['attributes'],function(_0x4f28b6){var _0x2f610e={};_0x2f610e[_0x4f28b6]={'$like':'%'+_0x368292[_0x1a57('0x43')]['filter']+'%'};return _0x2f610e;})});}_0x1b4752=_['merge']({},_0x1b4752,_0x368292[_0x1a57('0xcc')]);return _0x57fbe6[_0x1a57('0x148')](_0x1b4752);}})[_0x1a57('0x14')](function(_0x4f2cc1){if(_0x4f2cc1){_0x30df11=_0x4f2cc1['length'];if(!_0x368292['query'][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x1b4752[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x368292['query'][_0x1a57('0x23')]);_0x1b4752[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x368292[_0x1a57('0x43')]['offset']);}return _0x57fbe6[_0x1a57('0x148')](_0x1b4752);}})[_0x1a57('0x14')](function(_0x23c140){if(_0x23c140){return _0x23c140?{'count':_0x30df11,'rows':_0x23c140}:null;}})['then'](respondWithResult(_0x13c700,null))[_0x1a57('0x4c')](handleError(_0x13c700,null));};exports[_0x1a57('0x149')]=function(_0x428dca,_0x316dde){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x428dca[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x316dde,null))[_0x1a57('0x14')](function(_0xe4bed1){if(_0xe4bed1){return _0xe4bed1[_0x1a57('0x149')](_0x428dca[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x428dca[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x316dde,null))['catch'](handleError(_0x316dde,null));};exports['removeOpenchannelAccounts']=function(_0x223b82,_0x3ab798){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x223b82[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3ab798,null))['then'](function(_0x5e92dd){if(_0x5e92dd){return _0x5e92dd[_0x1a57('0x14a')](_0x223b82[_0x1a57('0x43')][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x3ab798,null))[_0x1a57('0x4c')](handleError(_0x3ab798,null));};exports[_0x1a57('0x14b')]=function(_0x786df4,_0x24ff69){var _0x2866f6={};var _0x37d209={};var _0x309f69;var _0x5a92b4;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x786df4[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x24ff69,null))[_0x1a57('0x14')](function(_0x2643ee){if(_0x2643ee){_0x309f69=_0x2643ee;_0x37d209['model']=_['keys'](db[_0x1a57('0x14c')][_0x1a57('0x52')]);_0x37d209['query']=_[_0x1a57('0x51')](_0x786df4[_0x1a57('0x43')]);_0x37d209[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x37d209[_0x1a57('0x4f')],_0x37d209['query']);_0x2866f6[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x37d209[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x786df4[_0x1a57('0x43')][_0x1a57('0x55')]));_0x2866f6['attributes']=_0x2866f6[_0x1a57('0x3f')]['length']?_0x2866f6['attributes']:_0x37d209[_0x1a57('0x4f')];_0x2866f6[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x786df4[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x2866f6[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_['pick'](_0x786df4[_0x1a57('0x43')],_0x37d209['filters']));if(_0x786df4['query'][_0x1a57('0x2e')]){_0x2866f6[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x2866f6[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x2866f6[_0x1a57('0x3f')],function(_0x7093be){var _0x66d36d={};_0x66d36d[_0x7093be]={'$like':'%'+_0x786df4[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x66d36d;})});}_0x2866f6=_[_0x1a57('0xcb')]({},_0x2866f6,_0x786df4[_0x1a57('0xcc')]);return _0x309f69[_0x1a57('0x14b')](_0x2866f6);}})['then'](function(_0x458490){if(_0x458490){_0x5a92b4=_0x458490[_0x1a57('0x45')];if(!_0x786df4[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x2866f6['limit']=qs[_0x1a57('0x23')](_0x786df4['query'][_0x1a57('0x23')]);_0x2866f6[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x786df4[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x309f69[_0x1a57('0x14b')](_0x2866f6);}})[_0x1a57('0x14')](function(_0x12b7fe){if(_0x12b7fe){return _0x12b7fe?{'count':_0x5a92b4,'rows':_0x12b7fe}:null;}})['then'](respondWithResult(_0x24ff69,null))[_0x1a57('0x4c')](handleError(_0x24ff69,null));};exports[_0x1a57('0x14d')]=function(_0x581fe5,_0xc657e7){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x581fe5[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xc657e7,null))[_0x1a57('0x14')](function(_0x423a10){if(_0x423a10){return _0x423a10['addSmsAccounts'](_0x581fe5[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x581fe5[_0x1a57('0x59')],['ids','id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0xc657e7,null))[_0x1a57('0x4c')](handleError(_0xc657e7,null));};exports[_0x1a57('0x14e')]=function(_0x1d3acb,_0x373df4){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x1d3acb[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x373df4,null))[_0x1a57('0x14')](function(_0x5516f6){if(_0x5516f6){return _0x5516f6['removeSmsAccounts'](_0x1d3acb[_0x1a57('0x43')][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x373df4,null))[_0x1a57('0x4c')](handleError(_0x373df4,null));};exports[_0x1a57('0x14f')]=function(_0x83db00,_0x3c2887){var _0x434b35={};var _0x4f1053={};var _0x3bb21a;var _0xed6213;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x83db00[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3c2887,null))[_0x1a57('0x14')](function(_0x4a0475){if(_0x4a0475){_0x3bb21a=_0x4a0475;_0x4f1053[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x150')]['rawAttributes']);_0x4f1053[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x83db00['query']);_0x4f1053[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x4f1053[_0x1a57('0x4f')],_0x4f1053[_0x1a57('0x43')]);_0x434b35[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x4f1053[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x83db00[_0x1a57('0x43')][_0x1a57('0x55')]));_0x434b35[_0x1a57('0x3f')]=_0x434b35['attributes'][_0x1a57('0x45')]?_0x434b35[_0x1a57('0x3f')]:_0x4f1053['model'];_0x434b35[_0x1a57('0xc7')]=qs['sort'](_0x83db00[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x434b35['where']=qs[_0x1a57('0xc6')](_['pick'](_0x83db00[_0x1a57('0x43')],_0x4f1053[_0x1a57('0xc6')]));if(_0x83db00[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x434b35[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x434b35[_0x1a57('0xca')],{'$or':_['map'](_0x434b35[_0x1a57('0x3f')],function(_0x29c51e){var _0x29bd71={};_0x29bd71[_0x29c51e]={'$like':'%'+_0x83db00[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x29bd71;})});}_0x434b35=_['merge']({},_0x434b35,_0x83db00[_0x1a57('0xcc')]);return _0x3bb21a[_0x1a57('0x14f')](_0x434b35);}})[_0x1a57('0x14')](function(_0x20b394){if(_0x20b394){_0xed6213=_0x20b394['length'];if(!_0x83db00[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x434b35[_0x1a57('0x23')]=qs['limit'](_0x83db00[_0x1a57('0x43')][_0x1a57('0x23')]);_0x434b35[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x83db00['query'][_0x1a57('0x21')]);}return _0x3bb21a[_0x1a57('0x14f')](_0x434b35);}})['then'](function(_0x155f1b){if(_0x155f1b){return _0x155f1b?{'count':_0xed6213,'rows':_0x155f1b}:null;}})[_0x1a57('0x14')](respondWithResult(_0x3c2887,null))[_0x1a57('0x4c')](handleError(_0x3c2887,null));};exports['addChatWebsites']=function(_0x2df8bd,_0x6fbc83){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x2df8bd['params']['id']}})['then'](handleEntityNotFound(_0x6fbc83,null))[_0x1a57('0x14')](function(_0x108695){if(_0x108695){return _0x108695[_0x1a57('0x151')](_0x2df8bd[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x2df8bd[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x6fbc83,null))[_0x1a57('0x4c')](handleError(_0x6fbc83,null));};exports[_0x1a57('0x152')]=function(_0x4f7d3e,_0x33d3ea){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4f7d3e[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x33d3ea,null))['then'](function(_0x2268ae){if(_0x2268ae){return _0x2268ae[_0x1a57('0x152')](_0x4f7d3e[_0x1a57('0x43')]['ids']);}})[_0x1a57('0x14')](respondWithStatusCode(_0x33d3ea,null))[_0x1a57('0x4c')](handleError(_0x33d3ea,null));};exports['getWhatsappAccounts']=function(_0x5b1081,_0xa097d1){var _0x574acd={};var _0xf9a45b={};var _0x35dc81;var _0x39f2f7;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x5b1081[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa097d1,null))['then'](function(_0x3ef805){if(_0x3ef805){_0x35dc81=_0x3ef805;_0xf9a45b[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x153')][_0x1a57('0x52')]);_0xf9a45b[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x5b1081[_0x1a57('0x43')]);_0xf9a45b[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0xf9a45b['model'],_0xf9a45b[_0x1a57('0x43')]);_0x574acd['attributes']=_[_0x1a57('0x54')](_0xf9a45b['model'],qs['fields'](_0x5b1081[_0x1a57('0x43')][_0x1a57('0x55')]));_0x574acd[_0x1a57('0x3f')]=_0x574acd[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x574acd['attributes']:_0xf9a45b[_0x1a57('0x4f')];_0x574acd[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5b1081['query'][_0x1a57('0xc8')]);_0x574acd[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x5b1081[_0x1a57('0x43')],_0xf9a45b['filters']));if(_0x5b1081[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x574acd[_0x1a57('0xca')]=_['merge'](_0x574acd[_0x1a57('0xca')],{'$or':_['map'](_0x574acd['attributes'],function(_0x470604){var _0x305f31={};_0x305f31[_0x470604]={'$like':'%'+_0x5b1081[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x305f31;})});}_0x574acd=_[_0x1a57('0xcb')]({},_0x574acd,_0x5b1081[_0x1a57('0xcc')]);return _0x35dc81[_0x1a57('0x154')](_0x574acd);}})[_0x1a57('0x14')](function(_0x213d39){if(_0x213d39){_0x39f2f7=_0x213d39[_0x1a57('0x45')];if(!_0x5b1081[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x574acd['limit']=qs['limit'](_0x5b1081[_0x1a57('0x43')][_0x1a57('0x23')]);_0x574acd[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x5b1081[_0x1a57('0x43')]['offset']);}return _0x35dc81[_0x1a57('0x154')](_0x574acd);}})[_0x1a57('0x14')](function(_0x1ae09d){if(_0x1ae09d){return _0x1ae09d?{'count':_0x39f2f7,'rows':_0x1ae09d}:null;}})['then'](respondWithResult(_0xa097d1,null))[_0x1a57('0x4c')](handleError(_0xa097d1,null));};exports[_0x1a57('0x155')]=function(_0x2e4d50,_0x5e61d2){return db['User']['find']({'where':{'id':_0x2e4d50['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x5e61d2,null))[_0x1a57('0x14')](function(_0x503c37){if(_0x503c37){return _0x503c37['addWhatsappAccounts'](_0x2e4d50['body'][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x2e4d50[_0x1a57('0x59')],['ids','id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x5e61d2,null))[_0x1a57('0x4c')](handleError(_0x5e61d2,null));};exports[_0x1a57('0x156')]=function(_0x53b03b,_0x33888e){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x53b03b[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x33888e,null))[_0x1a57('0x14')](function(_0x1f1cf6){if(_0x1f1cf6){return _0x1f1cf6[_0x1a57('0x156')](_0x53b03b['query']['ids']);}})[_0x1a57('0x14')](respondWithStatusCode(_0x33888e,null))[_0x1a57('0x4c')](handleError(_0x33888e,null));};exports['getSquareProjects']=function(_0x37874f,_0x3fef29){var _0x488824={};var _0x8ac3a0={};var _0x328fec;var _0x5dee46;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x37874f[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3fef29,null))['then'](function(_0x307a40){if(_0x307a40){_0x328fec=_0x307a40;_0x8ac3a0['model']=_[_0x1a57('0x51')](db[_0x1a57('0x157')][_0x1a57('0x52')]);_0x8ac3a0['query']=_[_0x1a57('0x51')](_0x37874f[_0x1a57('0x43')]);_0x8ac3a0[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x8ac3a0['model'],_0x8ac3a0['query']);_0x488824['attributes']=_[_0x1a57('0x54')](_0x8ac3a0[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x37874f[_0x1a57('0x43')]['fields']));_0x488824[_0x1a57('0x3f')]=_0x488824[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x488824[_0x1a57('0x3f')]:_0x8ac3a0['model'];_0x488824[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x37874f[_0x1a57('0x43')]['sort']);_0x488824[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x37874f[_0x1a57('0x43')],_0x8ac3a0[_0x1a57('0xc6')]));if(_0x37874f[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x488824[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x488824[_0x1a57('0xca')],{'$or':_['map'](_0x488824[_0x1a57('0x3f')],function(_0x30d4dd){var _0x338661={};_0x338661[_0x30d4dd]={'$like':'%'+_0x37874f[_0x1a57('0x43')]['filter']+'%'};return _0x338661;})});}_0x488824=_[_0x1a57('0xcb')]({},_0x488824,_0x37874f['options']);return _0x328fec[_0x1a57('0x158')](_0x488824);}})['then'](function(_0x2cc7ea){if(_0x2cc7ea){_0x5dee46=_0x2cc7ea[_0x1a57('0x45')];if(!_0x37874f[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x488824[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x37874f[_0x1a57('0x43')]['limit']);_0x488824[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x37874f[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x328fec[_0x1a57('0x158')](_0x488824);}})['then'](function(_0x517159){if(_0x517159){return _0x517159?{'count':_0x5dee46,'rows':_0x517159}:null;}})[_0x1a57('0x14')](respondWithResult(_0x3fef29,null))[_0x1a57('0x4c')](handleError(_0x3fef29,null));};exports[_0x1a57('0x159')]=function(_0x1ccc05,_0x8eeab8){return db['User'][_0x1a57('0x31')]({'where':{'id':_0x1ccc05['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x8eeab8,null))[_0x1a57('0x14')](function(_0x1b306f){if(_0x1b306f){return _0x1b306f[_0x1a57('0x159')](_0x1ccc05[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x1ccc05[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x8eeab8,null))[_0x1a57('0x4c')](handleError(_0x8eeab8,null));};exports['removeSquareProjects']=function(_0x5017dd,_0x3b7b28){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x5017dd[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3b7b28,null))[_0x1a57('0x14')](function(_0x195ed9){if(_0x195ed9){return _0x195ed9[_0x1a57('0x15a')](_0x5017dd['query'][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x3b7b28,null))[_0x1a57('0x4c')](handleError(_0x3b7b28,null));};exports[_0x1a57('0x15b')]=function(_0x36a2bb,_0x50273a){var _0x358bb8={},_0x2de02f={},_0x2171b4={'count':0x0,'rows':[]};var _0x189955=db[_0x1a57('0x15c')][_0x1a57('0x52')];_0x2de02f[_0x1a57('0x4f')]=_[_0x1a57('0x51')](_0x189955);_0x2de02f['query']=_[_0x1a57('0x51')](_0x36a2bb[_0x1a57('0x43')]);_0x2de02f[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x2de02f[_0x1a57('0x4f')],_0x2de02f[_0x1a57('0x43')]);_0x2de02f[_0x1a57('0xc6')]=_[_0x1a57('0x15d')](_0x2de02f[_0x1a57('0xc6')],[_0x1a57('0x15e'),'$or',_0x1a57('0x15f'),'$gte',_0x1a57('0x160'),_0x1a57('0x161'),_0x1a57('0x162'),'$eq',_0x1a57('0x163'),_0x1a57('0x164'),_0x1a57('0x165'),_0x1a57('0x166'),_0x1a57('0x167'),_0x1a57('0x168'),_0x1a57('0x169'),'$iLike',_0x1a57('0x16a'),_0x1a57('0x168'),_0x1a57('0x16b'),'$contains','$contained',_0x1a57('0x16c')]);_0x358bb8['attributes']=_[_0x1a57('0x54')](_0x2de02f[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x36a2bb['query'][_0x1a57('0x55')]));_0x358bb8['attributes']=_0x358bb8[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x358bb8[_0x1a57('0x3f')]:_0x2de02f[_0x1a57('0x4f')];if(!_0x36a2bb[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x358bb8['limit']=qs[_0x1a57('0x23')](_0x36a2bb['query'][_0x1a57('0x23')]);_0x358bb8[_0x1a57('0x21')]=qs['offset'](_0x36a2bb[_0x1a57('0x43')][_0x1a57('0x21')]);}_0x358bb8[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x36a2bb[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x358bb8[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x36a2bb['query'],_0x2de02f[_0x1a57('0xc6')]));if(_0x36a2bb[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x358bb8[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x358bb8['where'],{'$or':_[_0x1a57('0x2f')](_0x358bb8[_0x1a57('0x3f')],function(_0x355d6c){var _0x43ea7e={};_0x43ea7e[_0x355d6c]={'$like':'%'+_0x36a2bb[_0x1a57('0x43')]['filter']+'%'};return _0x43ea7e;})});}_0x358bb8[_0x1a57('0xca')]={'$and':[_0x358bb8[_0x1a57('0xca')],{'$or':[{'UserId':_0x36a2bb[_0x1a57('0x4e')]['id']},{'OwnerId':_0x36a2bb[_0x1a57('0x4e')]['id']}]}]};_0x358bb8=_[_0x1a57('0xcb')]({},_0x358bb8,_0x36a2bb[_0x1a57('0xcc')]);var _0x40faee={'where':_0x358bb8[_0x1a57('0xca')]};return db[_0x1a57('0x15c')][_0x1a57('0x24')](_0x40faee)[_0x1a57('0x14')](function(_0x46a44b){_0x2171b4['count']=_0x46a44b;if(_0x36a2bb['query'][_0x1a57('0x3e')]){_0x358bb8[_0x1a57('0xcd')]=[{'attributes':['id','firstName','lastName','phone'],'model':db[_0x1a57('0xc5')],'as':_0x1a57('0x16d')},{'attributes':['id',_0x1a57('0x32'),_0x1a57('0x16e')],'model':db['VoiceQueue'],'as':_0x1a57('0xd7')}];}return db[_0x1a57('0x15c')][_0x1a57('0x41')](_0x358bb8);})[_0x1a57('0x14')](function(_0x44592f){_0x2171b4[_0x1a57('0x42')]=_0x44592f;return _0x2171b4;})['then'](respondWithFilteredResult(_0x50273a,_0x358bb8))[_0x1a57('0x4c')](handleError(_0x50273a,null));};exports[_0x1a57('0x16f')]=function(_0x5adb4d,_0x4e27cf){if(!_[_0x1a57('0x61')](_0x5adb4d[_0x1a57('0x29')]['id'])&&(_0x5adb4d[_0x1a57('0x29')][_0x1a57('0x27')]==_0x1a57('0x7a')||_0x5adb4d[_0x1a57('0x29')][_0x1a57('0x27')]=='user')){return db['User']['findOne']({'where':{'id':_0x5adb4d['params']['id']},'raw':!![]})['then'](function(_0x31f404){return authService[_0x1a57('0x170')](_0x31f404);})[_0x1a57('0x14')](function(_0xe7e4dc){if(_0xe7e4dc){return _0x4e27cf[_0x1a57('0x1e')](0xc8)['json']({'api_key':_0xe7e4dc['token']});}else{return _0x4e27cf[_0x1a57('0x1e')](0xcc)[_0x1a57('0x20')]({'message':_0x1a57('0x171')});}})[_0x1a57('0x4c')](handleError(_0x4e27cf,0x193));}else{return _0x4e27cf[_0x1a57('0x1e')](0x191)[_0x1a57('0x20')]({'message':_0x1a57('0x172')});}};exports[_0x1a57('0x173')]=function(_0x4a0725,_0x28ee37){if(!_['isNil'](_0x4a0725[_0x1a57('0x29')]['id'])&&(_0x4a0725['user'][_0x1a57('0x27')]=='admin'||_0x4a0725[_0x1a57('0x29')][_0x1a57('0x27')]==_0x1a57('0x29'))){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4a0725[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](function(_0x3cbbd5){return authService[_0x1a57('0x174')](_0x3cbbd5);})[_0x1a57('0x14')](function(_0x50345a){return db[_0x1a57('0x3d')]['update']({'apiKeyIat':_0x50345a[_0x1a57('0x175')],'apiKeyNonce':_0x50345a[_0x1a57('0x176')]},{'where':{'id':_0x4a0725[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](function(){return _0x28ee37[_0x1a57('0x1e')](0xc8)[_0x1a57('0x20')]({'api_key':_0x50345a[_0x1a57('0x177')]});});})[_0x1a57('0x4c')](handleError(_0x28ee37,0x193));}else{return _0x28ee37['status'](0x191)[_0x1a57('0x20')]({'message':_0x1a57('0x172')});}};exports[_0x1a57('0x178')]=function(_0x2a3c0f,_0x1aa3dc){if(!_[_0x1a57('0x61')](_0x2a3c0f['user']['id'])&&(_0x2a3c0f[_0x1a57('0x29')][_0x1a57('0x27')]==_0x1a57('0x7a')||_0x2a3c0f[_0x1a57('0x29')]['role']=='user')){return db['User']['find']({'where':{'id':_0x2a3c0f[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1aa3dc,null))[_0x1a57('0x14')](function(_0x4fadf0){if(_0x4fadf0&&_0x4fadf0[_0x1a57('0x179')]&&_0x4fadf0['apiKeyIat'])return _0x4fadf0;else throw{'message':'API\x20key\x20not\x20available'};})[_0x1a57('0x14')](function(_0x401b7f){return db[_0x1a57('0x3d')][_0x1a57('0x58')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x2a3c0f[_0x1a57('0x4e')]['id']}});})[_0x1a57('0x14')](respondWithStatusCode(_0x1aa3dc,0xc8))[_0x1a57('0x4c')](handleError(_0x1aa3dc,0x193));}else{return _0x1aa3dc[_0x1a57('0x1e')](0x191)['json']({'message':_0x1a57('0x172')});}};exports[_0x1a57('0x17a')]=function(_0xe9d96,_0x5a52c9){var _0x242cdf=_0xe9d96['user'][_0x1a57('0x26')]({'plain':!![]});if(!_0x242cdf){return _0x5a52c9[_0x1a57('0x1e')](0x191)[_0x1a57('0x36')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x5a52c9[_0x1a57('0x1e')](0xc8)[_0x1a57('0x20')](_0x242cdf);}};exports['getPresence']=function(_0x510c0a,_0xf0e723){var _0x11d2a8={'offset':0x0},_0x314541={'count':0x0,'rows':[]};Promise[_0x1a57('0xfe')]()[_0x1a57('0x14')](function(){if(!_0x510c0a['query'][_0x1a57('0x2e')]&&!_0x510c0a[_0x1a57('0x43')][_0x1a57('0x17b')]&&!_0x510c0a[_0x1a57('0x43')][_0x1a57('0x17c')])return[];return Promise['resolve']()[_0x1a57('0x14')](function(){var _0x2fbc88=[];if(!_[_0x1a57('0x85')](_0x510c0a[_0x1a57('0x43')][_0x1a57('0x17b')])){_0x2fbc88[_0x1a57('0x40')](db['Team'][_0x1a57('0x41')]({'attributes':['id',_0x1a57('0x32')],'where':{'id':_0x510c0a['query'][_0x1a57('0x17b')]}}));}if(!_[_0x1a57('0x85')](_0x510c0a[_0x1a57('0x43')]['queues'])){_0x2fbc88[_0x1a57('0x40')](db['VoiceQueue']['findAll']({'attributes':['id',_0x1a57('0x32')],'type':_0x1a57('0x17d'),'where':{'id':_0x510c0a[_0x1a57('0x43')]['queues']}}));}return Promise['all'](_0x2fbc88);})[_0x1a57('0x14')](function(_0x5acff9){var _0x134394=_[_0x1a57('0x11f')](_0x5acff9)[_0x1a57('0x2f')](function(_0xecc0e2){return _0xecc0e2['getAgents']({'attributes':['id',_0x1a57('0x32'),_0x1a57('0x60'),_0x1a57('0xa5')],'raw':!![]});});return Promise[_0x1a57('0x4b')](_0x134394);})[_0x1a57('0x14')](function(_0x3fbad8){var _0x432435=_[_0x1a57('0x11f')](_0x3fbad8);if(!_0x510c0a[_0x1a57('0x43')]['filter'])return _0x432435;if(_[_0x1a57('0x85')](_0x432435)){return db['User']['findAll']({'attributes':['id',_0x1a57('0x32'),'internal',_0x1a57('0xa5')],'where':{'role':_0x1a57('0x2b'),'$or':[db['sequelize']['where'](db['sequelize']['fn']('lower',db['sequelize'][_0x1a57('0x17e')](_0x1a57('0x32'))),{'$like':'%'+_0x510c0a[_0x1a57('0x43')][_0x1a57('0x2e')][_0x1a57('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x510c0a[_0x1a57('0x43')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x432435)[_0x1a57('0x11f')]()['filter'](function(_0xc8bc43){return _0xc8bc43['name'][_0x1a57('0x9f')]()[_0x1a57('0x3a')](_0x510c0a[_0x1a57('0x43')]['filter'][_0x1a57('0x9f')]())||_0xc8bc43[_0x1a57('0x60')][_0x1a57('0x17f')]()[_0x1a57('0x3a')](_0x510c0a[_0x1a57('0x43')][_0x1a57('0x2e')]);})['value']();}})[_0x1a57('0x14')](function(_0x213c26){var _0x2db299=_0x1a57('0x32');var _0xf4bd63=_0x1a57('0x180');if(_0x510c0a[_0x1a57('0x43')]['sort']){var _0xf4bd63=_0x510c0a[_0x1a57('0x43')][_0x1a57('0xc8')][0x0]==='-'?'desc':'asc';var _0x2db299=_0xf4bd63==='asc'?_0x510c0a['query'][_0x1a57('0xc8')]:_0x510c0a[_0x1a57('0x43')][_0x1a57('0xc8')]['substring'](0x1);}return _(_0x213c26)['uniqBy']('id')[_0x1a57('0x181')]([function(_0x35a957){return _0x2db299==='name'?_0x35a957[_0x2db299][_0x1a57('0x9f')]():_0x35a957[_0x2db299];}],[_0xf4bd63])[_0x1a57('0x2f')](function(_0x5580a3){return _[_0x1a57('0xc9')](_0x5580a3,['id','name',_0x1a57('0x60'),_0x1a57('0xa5')]);})['value']();})[_0x1a57('0x14')](function(_0xaa75ba){return client[_0x1a57('0x13')](_0x1a57('0x2a'),_0x510c0a)[_0x1a57('0x14')](function(_0x1e67aa){if(_0x1e67aa['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x1c19e1=_0x1e67aa[_0x1a57('0x1c')];var _0x487e15=jayson[_0x1a57('0x11')][_0x1a57('0x12')]({'port':0x232c});return _0x487e15['request']('Agents',_0x510c0a)[_0x1a57('0x14')](function(_0x453918){if(_0x453918[_0x1a57('0x1a')])throw new Error(_0x1a57('0x182'));var _0x3c76d0=_0x453918[_0x1a57('0x1c')];return _['merge']({},_0x3c76d0,_0x1c19e1);});})[_0x1a57('0x14')](function(_0x1ee041){return _['map'](_0xaa75ba,function(_0x2228df){var _0x5d0f80=_[_0x1a57('0x31')](_0x1ee041[_0x1a57('0x42')],['id',_0x2228df['id']]);if(!_0x5d0f80||!_0x2228df[_0x1a57('0xa5')]){_0x2228df[_0x1a57('0x1e')]=_0x1a57('0x183');}else if(_0x5d0f80['voicePause']){_0x2228df[_0x1a57('0x1e')]=_0x1a57('0x100');}else{_0x2228df[_0x1a57('0x1e')]=_[_0x1a57('0x3a')]([_0x1a57('0x184'),_0x1a57('0x185'),_0x1a57('0x186'),_0x1a57('0x187'),null,undefined],_0x5d0f80[_0x1a57('0x188')])?'online':_0x1a57('0x189');}return _0x2228df;});});});})['then'](function(_0x522c4c){if(!_0x510c0a['query'][_0x1a57('0xd4')]('nolimit')){_0x11d2a8[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x510c0a[_0x1a57('0x43')][_0x1a57('0x23')]||0xa);_0x11d2a8[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x510c0a[_0x1a57('0x43')]['offset']);}_0x314541[_0x1a57('0x24')]=_0x522c4c['length'];_0x314541[_0x1a57('0x42')]=_0x11d2a8[_0x1a57('0x23')]?_0x522c4c[_0x1a57('0x18a')](_0x11d2a8[_0x1a57('0x21')],_0x11d2a8[_0x1a57('0x21')]+_0x11d2a8[_0x1a57('0x23')]):_0x522c4c;return _0x314541;})[_0x1a57('0x14')](respondWithFilteredResult(_0xf0e723,_0x11d2a8))[_0x1a57('0x4c')](handleError(_0xf0e723,null));};function get_open_tabs(_0x47b7f7,_0x5a1c2f){var _0x5718b3=_0x47b7f7[_0x1a57('0x18b')](0x0)[_0x1a57('0x18c')]()+_0x47b7f7['slice'](0x1);var _0x3e2f67={'type':db[_0x1a57('0x8a')][_0x1a57('0x18d')]['SELECT'],'raw':!![]};return new BPromise(function(_0x370a5d,_0x1f1a8a){var _0x5b1aeb=squel[_0x1a57('0x18e')]()['field'](_0x1a57('0x18f')+_0x5718b3+_0x1a57('0x190'),'id')[_0x1a57('0x191')](_0x1a57('0x192'))['from'](_0x1a57('0x193')+_0x47b7f7+'_interactions','ui')[_0x1a57('0xca')](_0x1a57('0x194'),_0x5a1c2f['id']);return db[_0x1a57('0x63')][_0x1a57('0x43')](_0x5b1aeb[_0x1a57('0x17f')](),_0x3e2f67)['then'](function(_0x1c486d){_0x5a1c2f[_0x5718b3+'OpenTabs']=_0x1c486d;_0x370a5d(_0x1c486d);})[_0x1a57('0x4c')](function(_0x350925){_0x1f1a8a(_0x350925);});});};
\ No newline at end of file
+var _0x9613=['$overlap','$contains','$contained','$any','firstName','lastName','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','generateApiKey','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','lower','col','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','unknown','unavailable','slice','charAt','toUpperCase','QueryTypes','select','field','ui.','InteractionId','user_has_','_interactions','OpenTabs','moment','bluebird','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','register','defaults','client','http','request','then','info','debug','request\x20sent','stringify','error','code','User,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','update','destroy','role','admin','user','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','send','User','rawAttributes','fieldName','type','password','salt','where','query','includeAll','findAll','rows','openTabs','true','length','push','chat','dataValues','fax','mail','openchannel','all','show','params','differenceBy','keys','filters','intersection','attributes','fields','model','merge','options','sms','whatsapp','body','describe','addContacts','omit','ids','internal','Setting','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','voicemail','VoiceMail','fullname','email','agent','101','103','110','107','108','109','100','111','114','Unauthorized','checkUserLimits','settingsEnabled','userProfileId','create','Agents','Telephones','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','online','loginInPause','voicePause','capitalize','toLowerCase','Queues','spread','QueueId','emit','Queue:save','voice','VoiceQueue','interface','SIP/%s','penalty','UserVoiceQueueRt','upsert','removeQueues','channel','isValidChannel','Unknown\x20channel','remove','Queue:remove','addAvatar','file','filename','getAvatar','join','server/files/images/logos/default_profile.png','userpic','download','existsSync','root','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','order','sort','hasOwnProperty','include','List','Tag','Tags','color','tag','nolimit','getQueues','pick','Unknown\x20role','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','mobile','format','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','concat','isMiddleware','resolve','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','openchannelPause','smsPause','whatsapppause','lastPauseAt','QueuePause','manual','%s%s','Pause','getTeams','Team','addTeams','get','setDataValue','Voice','Chat','getMailQueues','getSmsQueues','Sms','getFaxQueues','Fax','Openchannel','transaction','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','getChatQueues','Mail','getWhatsappQueues','getOpenchannelQueues','flatten','removeAgent','CmList','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike'];(function(_0x419b40,_0x1395e8){var _0x3a4da1=function(_0x4850e5){while(--_0x4850e5){_0x419b40['push'](_0x419b40['shift']());}};_0x3a4da1(++_0x1395e8);}(_0x9613,0x1c9));var _0x3961=function(_0x4c5d6f,_0xb65117){_0x4c5d6f=_0x4c5d6f-0x0;var _0x5c1622=_0x9613[_0x4c5d6f];return _0x5c1622;};'use strict';var moment=require(_0x3961('0x0'));var BPromise=require(_0x3961('0x1'));var util=require(_0x3961('0x2'));var path=require(_0x3961('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x3961('0x4'));var jayson=require(_0x3961('0x5'));var Redis=require(_0x3961('0x6'));var authService=require(_0x3961('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x3961('0x8'))('api');var utils=require('../../config/utils');var config=require(_0x3961('0x9'));var licenseUtil=require(_0x3961('0xa'));var db=require(_0x3961('0xb'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x3961('0xc')]));require('./user.socket')[_0x3961('0xd')](socket);config[_0x3961('0xc')]=_[_0x3961('0xe')](config[_0x3961('0xc')],{'host':'localhost','port':0x18eb});var client=jayson[_0x3961('0xf')][_0x3961('0x10')]({'port':0x232a});var values;function respondWithRpcPromise(_0x586e66,_0x96272a,_0x8994f6,_0x2282ec){return new BPromise(function(_0x19c86c,_0x6e9610){var _0x913ae=_0x2282ec||client;return _0x913ae[_0x3961('0x11')](_0x586e66,_0x8994f6)[_0x3961('0x12')](function(_0x4c1292){logger[_0x3961('0x13')]('User,\x20%s,\x20%s',_0x96272a,'request\x20sent');logger[_0x3961('0x14')]('User,\x20%s,\x20%s,\x20%s',_0x96272a,_0x3961('0x15'),JSON[_0x3961('0x16')](_0x4c1292));if(_0x4c1292[_0x3961('0x17')]){if(_0x4c1292[_0x3961('0x17')][_0x3961('0x18')]===0x1f4){logger[_0x3961('0x17')](_0x3961('0x19'),_0x96272a,_0x4c1292[_0x3961('0x17')][_0x3961('0x1a')]);return _0x6e9610(_0x4c1292[_0x3961('0x17')][_0x3961('0x1a')]);}logger[_0x3961('0x17')](_0x3961('0x19'),_0x96272a,_0x4c1292['error'][_0x3961('0x1a')]);return _0x19c86c(_0x4c1292[_0x3961('0x17')]['message']);}else{logger[_0x3961('0x13')](_0x3961('0x19'),_0x96272a,_0x3961('0x15'));_0x19c86c(_0x4c1292[_0x3961('0x1b')][_0x3961('0x1a')]);}})[_0x3961('0x1c')](function(_0x10ca29){logger['error']('User,\x20%s,\x20%s',_0x96272a,_0x10ca29);_0x6e9610(_0x10ca29);});});}function respondWithStatusCode(_0x501983,_0x59e022){_0x59e022=_0x59e022||0xcc;return function(_0x2744fd){if(_0x2744fd){return _0x501983[_0x3961('0x1d')](_0x59e022);}return _0x501983[_0x3961('0x1e')](_0x59e022)[_0x3961('0x1f')]();};}function respondWithResult(_0x31d28a,_0x2880c7){_0x2880c7=_0x2880c7||0xc8;return function(_0x2bfbc5){if(_0x2bfbc5){return _0x31d28a[_0x3961('0x1e')](_0x2880c7)[_0x3961('0x20')](_0x2bfbc5);}};}function respondWithFilteredResult(_0x255608,_0x5857cf){return function(_0x25d10b){if(_0x25d10b){var _0xb93b35=typeof _0x5857cf[_0x3961('0x21')]===_0x3961('0x22')&&typeof _0x5857cf['limit']===_0x3961('0x22');var _0x2cadd7=_0x25d10b[_0x3961('0x23')];var _0x443190=_0xb93b35?0x0:_0x5857cf[_0x3961('0x21')];var _0x3aaf90=_0xb93b35?_0x25d10b['count']:_0x5857cf[_0x3961('0x21')]+_0x5857cf[_0x3961('0x24')];var _0x4a806b;if(_0x3aaf90>=_0x2cadd7){_0x3aaf90=_0x2cadd7;_0x4a806b=0xc8;}else{_0x4a806b=0xce;}_0x255608[_0x3961('0x1e')](_0x4a806b);return _0x255608['set'](_0x3961('0x25'),_0x443190+'-'+_0x3aaf90+'/'+_0x2cadd7)['json'](_0x25d10b);}return null;};}function saveUpdates(_0x5d3405){return function(_0x1ca41d){if(_0x1ca41d){return _0x1ca41d[_0x3961('0x26')](_0x5d3405)[_0x3961('0x12')](function(_0x5e01bf){return _0x5e01bf;});}return null;};}function removeEntity(_0x4e04fe){return function(_0x1c69ac){if(_0x1c69ac){return _0x1c69ac[_0x3961('0x27')]()['then'](function(){var _0x191b7d=_0x1c69ac['get']({'plain':!![]});if(_0x191b7d[_0x3961('0x28')]===_0x3961('0x29'))return;var _0x337431=[{'name':'Users','value':_0x3961('0x2a'),'ignore':!![]},{'name':'Agents','value':'agent','ignore':![]},{'name':'Telephones','value':_0x3961('0x2b'),'ignore':![]}];var _0x1a6e29=_(_0x337431)[_0x3961('0x2c')](_0x3961('0x2d'))[_0x3961('0x2e')](_0x3961('0x2f'))[_0x3961('0x2f')]();if(_[_0x3961('0x30')](_0x1a6e29,_0x191b7d['role'])){return;}var _0x42d7c4=_[_0x3961('0x31')](_0x337431,['value',_0x191b7d[_0x3961('0x28')]])[_0x3961('0x32')];return db[_0x3961('0x33')][_0x3961('0x27')]({'where':{'type':_0x42d7c4,'resourceId':_0x191b7d['id']}})[_0x3961('0x12')](function(){return _0x1c69ac;});})[_0x3961('0x12')](function(){_0x4e04fe[_0x3961('0x1e')](0xcc)[_0x3961('0x1f')]();});}};}function handleEntityNotFound(_0x49a774){return function(_0x46ba97){if(!_0x46ba97){_0x49a774[_0x3961('0x1d')](0x194);}return _0x46ba97;};}function handleError(_0xd0cb43,_0x1a76f4){_0x1a76f4=_0x1a76f4||0x1f4;return function(_0x16c74d){logger[_0x3961('0x17')](_0x16c74d['stack']);if(_0x16c74d['name']){delete _0x16c74d[_0x3961('0x32')];}_0xd0cb43[_0x3961('0x1e')](_0x1a76f4)[_0x3961('0x34')](_0x16c74d);};}exports['index']=function(_0x2c4b29,_0x364edc){var _0x4f02b7={},_0x345c83={'count':0x0,'rows':[]};var _0x50652a=_(db[_0x3961('0x35')][_0x3961('0x36')])['map'](function(_0x1da5a1){return{'name':_0x1da5a1[_0x3961('0x37')],'type':_0x1da5a1[_0x3961('0x38')]['key']};})[_0x3961('0x2c')](function(_0x1c52b5){return!_[_0x3961('0x30')]([_0x3961('0x39'),_0x3961('0x3a')],_0x1c52b5[_0x3961('0x32')]);})['value']();_0x4f02b7=qs['getOptions'](_0x50652a,_0x2c4b29);var _0x988cc1={'where':_0x4f02b7[_0x3961('0x3b')]};return db[_0x3961('0x35')][_0x3961('0x23')](_0x988cc1)[_0x3961('0x12')](function(_0x298cc7){_0x345c83['count']=_0x298cc7;if(_0x2c4b29[_0x3961('0x3c')][_0x3961('0x3d')]){_0x4f02b7['include']=[{'all':!![]}];}if(!_[_0x3961('0x30')](_0x4f02b7['attributes'],'id')){_0x4f02b7['attributes']['push']('id');}return db['User'][_0x3961('0x3e')](_0x4f02b7);})[_0x3961('0x12')](function(_0x4f32b0){_0x345c83[_0x3961('0x3f')]=_0x4f32b0;if(_0x2c4b29[_0x3961('0x3c')][_0x3961('0x40')]===_0x3961('0x41')){var _0x3512db=[];for(var _0x400d51=0x0;_0x400d51<_0x345c83[_0x3961('0x3f')][_0x3961('0x42')];_0x400d51++){_0x3512db[_0x3961('0x43')](get_open_tabs(_0x3961('0x44'),_0x345c83[_0x3961('0x3f')][_0x400d51][_0x3961('0x45')]));_0x3512db['push'](get_open_tabs('sms',_0x345c83['rows'][_0x400d51][_0x3961('0x45')]));_0x3512db[_0x3961('0x43')](get_open_tabs(_0x3961('0x46'),_0x345c83[_0x3961('0x3f')][_0x400d51][_0x3961('0x45')]));_0x3512db[_0x3961('0x43')](get_open_tabs(_0x3961('0x47'),_0x345c83['rows'][_0x400d51]['dataValues']));_0x3512db[_0x3961('0x43')](get_open_tabs(_0x3961('0x48'),_0x345c83['rows'][_0x400d51][_0x3961('0x45')]));_0x3512db[_0x3961('0x43')](get_open_tabs('whatsapp',_0x345c83[_0x3961('0x3f')][_0x400d51][_0x3961('0x45')]));}return BPromise[_0x3961('0x49')](_0x3512db)[_0x3961('0x12')](function(_0x250818){return _0x345c83;});}else{return _0x345c83;}})['then'](respondWithFilteredResult(_0x364edc,_0x4f02b7))[_0x3961('0x1c')](handleError(_0x364edc,null));};exports[_0x3961('0x4a')]=function(_0x4fb98a,_0x3c3b01){var _0x54fe1d={'raw':![],'where':{'id':_0x4fb98a[_0x3961('0x4b')]['id']}},_0x18054a={};_0x18054a['model']=_[_0x3961('0x4c')](_[_0x3961('0x4d')](db['User'][_0x3961('0x36')]),[_0x3961('0x39'),_0x3961('0x3a')]);_0x18054a[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x4fb98a['query']);_0x18054a[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x18054a['model'],_0x18054a[_0x3961('0x3c')]);_0x54fe1d[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x18054a['model'],qs['fields'](_0x4fb98a[_0x3961('0x3c')][_0x3961('0x51')]));_0x54fe1d[_0x3961('0x50')]=_0x54fe1d[_0x3961('0x50')][_0x3961('0x42')]?_0x54fe1d[_0x3961('0x50')]:_0x18054a[_0x3961('0x52')];if(_0x4fb98a['query'][_0x3961('0x3d')]){_0x54fe1d['include']=[{'all':!![]}];}_0x54fe1d=_[_0x3961('0x53')]({},_0x54fe1d,_0x4fb98a[_0x3961('0x54')]);if(!_[_0x3961('0x30')](_0x54fe1d[_0x3961('0x50')],'id')){_0x54fe1d['attributes']['push']('id');}return db[_0x3961('0x35')][_0x3961('0x31')](_0x54fe1d)[_0x3961('0x12')](handleEntityNotFound(_0x3c3b01,null))[_0x3961('0x12')](function(_0x169e93){var _0x4986be=[];values=_0x169e93;if(_0x4fb98a[_0x3961('0x3c')][_0x3961('0x40')]==='true'){_0x4986be[_0x3961('0x43')](get_open_tabs(_0x3961('0x44'),_0x169e93[_0x3961('0x45')]));_0x4986be['push'](get_open_tabs(_0x3961('0x55'),_0x169e93[_0x3961('0x45')]));_0x4986be[_0x3961('0x43')](get_open_tabs(_0x3961('0x48'),_0x169e93['dataValues']));_0x4986be[_0x3961('0x43')](get_open_tabs(_0x3961('0x56'),_0x169e93[_0x3961('0x45')]));_0x4986be['push'](get_open_tabs('fax',_0x169e93['dataValues']));_0x4986be['push'](get_open_tabs(_0x3961('0x47'),_0x169e93['dataValues']));return BPromise['all'](_0x4986be);}else{return values;}})[_0x3961('0x12')](function(_0xdde9b6){return values;})[_0x3961('0x12')](respondWithResult(_0x3c3b01,null))[_0x3961('0x1c')](handleError(_0x3c3b01,null));};exports[_0x3961('0x26')]=function(_0x70e194,_0x55ed9f){if(_0x70e194['body']['id']){delete _0x70e194['body']['id'];}delete _0x70e194['body'][_0x3961('0x28')];return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x70e194[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x55ed9f,null))[_0x3961('0x12')](saveUpdates(_0x70e194[_0x3961('0x57')],null))[_0x3961('0x12')](respondWithResult(_0x55ed9f,null))[_0x3961('0x1c')](handleError(_0x55ed9f,null));};exports[_0x3961('0x58')]=function(_0x1999bb,_0x51e628){return db[_0x3961('0x35')][_0x3961('0x58')]()[_0x3961('0x12')](respondWithResult(_0x51e628,null))[_0x3961('0x1c')](handleError(_0x51e628,null));};exports[_0x3961('0x59')]=function(_0x36434f,_0x5bd9dd){return db['User']['find']({'where':{'id':_0x36434f[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x5bd9dd,null))['then'](function(_0x5620a9){if(_0x5620a9){return _0x5620a9['addContacts'](_0x36434f[_0x3961('0x57')]['ids'],_[_0x3961('0x5a')](_0x36434f[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x5bd9dd,null))['catch'](handleError(_0x5bd9dd,null));};function validateUser(_0x13795f){return new BPromise(function(_0x2f5bab,_0x4f2148){if(_0x13795f[_0x3961('0x5c')])return _0x2f5bab(_0x13795f);return db[_0x3961('0x5d')][_0x3961('0x5e')](0x1)[_0x3961('0x12')](function(_0x14520c){if(_0x14520c[_0x3961('0x5f')])authService[_0x3961('0x60')](_0x13795f['password']);db['User'][_0x3961('0x61')](_0x3961('0x5c'))['then'](function(_0x5e84a3){if(_[_0x3961('0x62')](_0x5e84a3)){_0x13795f[_0x3961('0x5c')]=_0x14520c[_0x3961('0x63')]||0x1;return;}if(_[_0x3961('0x62')](_0x14520c[_0x3961('0x63')])||_0x14520c['min_internal']===_0x5e84a3){_0x13795f['internal']=_0x5e84a3+0x1;return;}if(_0x14520c[_0x3961('0x63')]>_0x5e84a3){_0x13795f[_0x3961('0x5c')]=_0x14520c['min_internal'];return;}return db[_0x3961('0x64')][_0x3961('0x3c')](_0x3961('0x65'),{'type':db[_0x3961('0x64')]['QueryTypes'][_0x3961('0x66')]})['then'](function(_0x3e3a4f){if(_0x3e3a4f&&_0x3e3a4f[_0x3961('0x42')]){for(var _0x32e9d8=0x0,_0x41dd33=_0x3e3a4f[_0x3961('0x42')];_0x32e9d8<_0x41dd33&&_[_0x3961('0x62')](_0x13795f[_0x3961('0x5c')]);_0x32e9d8++){if(_0x14520c[_0x3961('0x63')]<=_0x3e3a4f[_0x32e9d8][_0x3961('0x67')]){_0x13795f['internal']=_0x3e3a4f[_0x32e9d8][_0x3961('0x67')];}else if(_0x14520c['min_internal']>_0x3e3a4f[_0x32e9d8]['from']&&_0x14520c[_0x3961('0x63')]<=_0x3e3a4f[_0x32e9d8]['to']){_0x13795f[_0x3961('0x5c')]=_0x14520c[_0x3961('0x63')];}}}if(_[_0x3961('0x62')](_0x13795f[_0x3961('0x5c')])){_0x13795f['internal']=_0x5e84a3+0x1;}return _0x2f5bab(_0x13795f);});});})[_0x3961('0x1c')](function(_0x4a15c1){_0x4f2148(_0x4a15c1);});});}function updateUser(_0x55cf82){return new BPromise(function(_0x10b30c,_0x58a7e4){try{if(_0x55cf82[_0x3961('0x68')]){_0x55cf82['mailbox']=_0x55cf82[_0x3961('0x5c')];_0x55cf82[_0x3961('0x69')]={'mailbox':_0x55cf82['internal'],'password':_0x55cf82[_0x3961('0x39')],'fullname':_0x55cf82[_0x3961('0x6a')],'email':_0x55cf82[_0x3961('0x6b')]};}if(_0x55cf82['role']===_0x3961('0x6c')){if(!_0x55cf82['permissions'])_0x55cf82['permissions']=[_0x3961('0x6d'),'102',_0x3961('0x6e'),'113',_0x3961('0x6f'),'104','105','106',_0x3961('0x70'),_0x3961('0x71'),_0x3961('0x72'),_0x3961('0x73'),_0x3961('0x74'),_0x3961('0x75'),'115'];}_0x10b30c(_0x55cf82);}catch(_0x4904e4){_0x58a7e4(_0x4904e4);}});}exports['create']=function(_0x5a8b5b,_0x18168f){if(_0x5a8b5b[_0x3961('0x2a')][_0x3961('0x28')]===_0x3961('0x6c'))throw new Error(_0x3961('0x76'));if(_0x5a8b5b[_0x3961('0x57')][_0x3961('0x28')]===_0x3961('0x2a')&&_0x5a8b5b['user'][_0x3961('0x28')]!==_0x3961('0x29')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x5a8b5b[_0x3961('0x57')]['role']===_0x3961('0x29')&&_0x5a8b5b[_0x3961('0x2a')][_0x3961('0x28')]!==_0x3961('0x29')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x3961('0x77')]([_0x5a8b5b['body']])['then'](function(){return validateUser(_0x5a8b5b[_0x3961('0x57')]);})['then'](function(_0x1ddcca){return updateUser(_0x1ddcca)[_0x3961('0x12')](function(_0x4e8b54){if(_0x4e8b54[_0x3961('0x28')]==='admin'){_0x4e8b54[_0x3961('0x78')]=_0x5a8b5b[_0x3961('0x2a')][_0x3961('0x78')];delete _0x4e8b54[_0x3961('0x79')];}return _0x4e8b54;});})['then'](function(_0x4d7d4d){return db[_0x3961('0x35')][_0x3961('0x7a')](_0x4d7d4d,{'include':[{'model':db[_0x3961('0x69')],'as':_0x3961('0x69')}]});})[_0x3961('0x12')](function(_0x11b913){if(_0x5a8b5b['body'][_0x3961('0x28')]===_0x3961('0x2a'))return _0x11b913;if(_0x5a8b5b[_0x3961('0x2a')][_0x3961('0x28')]!==_0x3961('0x2a'))return _0x11b913;return db['UserProfileSection'][_0x3961('0x31')]({'where':{'name':_0x11b913[_0x3961('0x28')]===_0x3961('0x6c')?_0x3961('0x7b'):_0x3961('0x7c'),'userProfileId':_0x5a8b5b['user'][_0x3961('0x79')]},'raw':!![]})[_0x3961('0x12')](function(_0xe1d321){if(!_0xe1d321||_0xe1d321[_0x3961('0x7d')]!=0x0)return _0x11b913;return db[_0x3961('0x33')][_0x3961('0x7a')]({'name':_0x11b913[_0x3961('0x32')],'resourceId':_0x11b913['id'],'type':_0xe1d321[_0x3961('0x32')],'sectionId':_0xe1d321['id']},{})[_0x3961('0x12')](function(){return _0x11b913;});})[_0x3961('0x1c')](function(_0x4662a3){logger[_0x3961('0x17')](_0x3961('0x7e'),_0x4662a3);throw _0x4662a3;});})[_0x3961('0x12')](respondWithResult(_0x18168f,0xc9))[_0x3961('0x1c')](handleError(_0x18168f,null));};exports[_0x3961('0x7f')]=function(_0x110ce5,_0x317c2a){var _0x1da5b0=_0x110ce5[_0x3961('0x57')];var _0x15e4e7=[];if(_0x110ce5[_0x3961('0x2a')][_0x3961('0x28')]==='agent')throw new Error('Unauthorized');if(_[_0x3961('0x80')](_0x1da5b0,[_0x3961('0x28'),_0x3961('0x2a')])&&_0x110ce5['user'][_0x3961('0x28')]!==_0x3961('0x29')){throw new Error(_0x3961('0x81'));}if(_[_0x3961('0x80')](_0x1da5b0,['role','admin'])&&_0x110ce5[_0x3961('0x2a')][_0x3961('0x28')]!=='admin'){throw new Error(_0x3961('0x82'));}return licenseUtil[_0x3961('0x77')](_0x1da5b0)['then'](function(){return validateUser(_0x1da5b0[0x0]);})['then'](function(){for(var _0x2f86e0=0x1;_0x2f86e0<_0x1da5b0[_0x3961('0x42')];_0x2f86e0++){var _0x548f35=_0x1da5b0[_0x2f86e0-0x1]['internal'];if(!_0x1da5b0[_0x2f86e0]['internal'])_0x1da5b0[_0x2f86e0]['internal']=_0x548f35+0x1;_0x15e4e7['push'](validateUser(_0x1da5b0[_0x2f86e0]));}return BPromise['all'](_0x15e4e7);})[_0x3961('0x12')](function(){_0x15e4e7=[];for(var _0x367a54=0x0;_0x367a54<_0x1da5b0['length'];_0x367a54++){_0x15e4e7[_0x3961('0x43')](updateUser(_0x1da5b0[_0x367a54]));}return BPromise[_0x3961('0x49')](_0x15e4e7);})[_0x3961('0x12')](function(){return BPromise[_0x3961('0x83')](_0x1da5b0,function(_0xd26ba8){return db[_0x3961('0x35')][_0x3961('0x7a')](_0xd26ba8,{'include':[{'model':db[_0x3961('0x69')],'as':'VoiceMail'}]})[_0x3961('0x12')](function(_0x2238da){_0xd26ba8['id']=_0x2238da['id'];return _0xd26ba8;});});})[_0x3961('0x12')](function(_0x4fa387){if(_0x110ce5[_0x3961('0x57')][_0x3961('0x28')]===_0x3961('0x2a'))return _0x4fa387;if(_0x110ce5['user'][_0x3961('0x28')]!==_0x3961('0x2a'))return _0x4fa387;var _0x565d37=_[_0x3961('0x80')](_0x4fa387,function(_0x3a1ce5){return _0x3a1ce5['role']===_0x3961('0x6c')||_0x3a1ce5[_0x3961('0x28')]===_0x3961('0x2b');});if(!_0x565d37)return _0x4fa387;return db['UserProfileSection']['findAll']({'where':{'name':{'$or':[_0x3961('0x7b'),_0x3961('0x7c')]},'userProfileId':_0x110ce5['user']['userProfileId']},'raw':!![]})[_0x3961('0x12')](function(_0x3ea6a0){if(_[_0x3961('0x84')](_0x3ea6a0)||!_[_0x3961('0x80')](_0x3ea6a0,[_0x3961('0x7d'),0x0]))return _0x4fa387;_0x15e4e7=[];var _0x4266df=_(_0x3ea6a0)[_0x3961('0x2e')](function(_0x42a7ed){if(_0x42a7ed[_0x3961('0x7d')]===0x1)return;return _0x42a7ed[_0x3961('0x32')]===_0x3961('0x7b')?'agent':_0x3961('0x2b');})[_0x3961('0x85')]()[_0x3961('0x2f')]();for(var _0x21f67b=0x0;_0x21f67b<_0x4fa387[_0x3961('0x42')];_0x21f67b++){if(!_[_0x3961('0x30')](_0x4266df,_0x4fa387[_0x21f67b][_0x3961('0x28')]))return;var _0x4c3326=_0x4fa387[_0x21f67b]['role']===_0x3961('0x6c')?_0x3961('0x7b'):'Telephones';_0x15e4e7[_0x3961('0x43')](db[_0x3961('0x33')][_0x3961('0x7a')]({'name':_0x4fa387[_0x21f67b][_0x3961('0x32')],'resourceId':_0x4fa387[_0x21f67b]['id'],'type':_0x4c3326,'sectionId':_[_0x3961('0x31')](_0x3ea6a0,['name',_0x4c3326])['id']},{}));}return BPromise[_0x3961('0x49')](_0x15e4e7);});})[_0x3961('0x12')](respondWithResult(_0x317c2a,0xc9))[_0x3961('0x1c')](handleError(_0x317c2a,null));};exports[_0x3961('0x86')]=function(_0xc9b745,_0x13f588){if(_0xc9b745[_0x3961('0x57')]['id']){delete _0xc9b745['body']['id'];}return db['User'][_0x3961('0x31')]({'where':{'id':_0xc9b745['params']['id']}})[_0x3961('0x12')](function(_0x191fbf){if(!_0x191fbf)return null;if(_0x191fbf['id']===_0xc9b745[_0x3961('0x2a')]['id']){if(!_0xc9b745[_0x3961('0x57')][_0x3961('0x87')]||!_0xc9b745[_0x3961('0x57')][_0x3961('0x88')]){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))](_0x3961('0x8b'));}if(!_0x191fbf['authenticate'](_0xc9b745[_0x3961('0x57')][_0x3961('0x87')])){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))](_0x3961('0x8c'));}if(_0xc9b745['body'][_0x3961('0x87')]===_0xc9b745[_0x3961('0x57')][_0x3961('0x88')]){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))](_0x3961('0x8d'));}}else if(_0xc9b745[_0x3961('0x2a')][_0x3961('0x28')]===_0x3961('0x29')){if(!_0xc9b745[_0x3961('0x57')][_0x3961('0x88')]){throw new db['Sequelize'][(_0x3961('0x8a'))](_0x3961('0x8e'));}}else if(_0xc9b745[_0x3961('0x2a')]['role']==='user'){if(!_0xc9b745[_0x3961('0x57')]['newPassword']){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x191fbf[_0x3961('0x28')]!==_0x3961('0x6c')){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))](_0x3961('0x76'));}}else{throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))](_0x3961('0x76'));}return _0x191fbf;})[_0x3961('0x12')](handleEntityNotFound(_0x13f588,null))['then'](function(_0x451e59){return db['Setting'][_0x3961('0x8f')]({'attributes':['id',_0x3961('0x5f'),_0x3961('0x90'),_0x3961('0x91')]})[_0x3961('0x12')](function(_0x565696){if(_0x565696[_0x3961('0x5f')])authService[_0x3961('0x60')](_0xc9b745[_0x3961('0x57')][_0x3961('0x88')]);if(!_0x565696[_0x3961('0x90')]||!_0x451e59[_0x3961('0x92')])return _0x451e59;authService[_0x3961('0x93')](_0xc9b745[_0x3961('0x57')][_0x3961('0x88')],_0x451e59[_0x3961('0x92')],_0x565696[_0x3961('0x91')]);return _0x451e59;})['then'](saveUpdates({'password':_0xc9b745['body'][_0x3961('0x88')],'passwordResetAt':_0xc9b745[_0x3961('0x2a')]['id']==_0xc9b745[_0x3961('0x4b')]['id']?moment():null,'previousPasswords':authService[_0x3961('0x94')](_0xc9b745[_0x3961('0x57')][_0x3961('0x88')],_0x451e59[_0x3961('0x92')])},null));})[_0x3961('0x12')](respondWithResult(_0x13f588,null))[_0x3961('0x1c')](handleError(_0x13f588,null));};exports[_0x3961('0x95')]=function(_0x838651,_0x48ef9d){var _0x20a793=_0x838651[_0x3961('0x57')]['channel'];return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x838651[_0x3961('0x4b')]['id']},'attributes':['id','name','role',_0x3961('0x96'),_0x3961('0x97'),_0x3961('0x98'),'interface']})['then'](handleEntityNotFound(_0x48ef9d,null))[_0x3961('0x12')](function(_0x1916a5){if(_0x1916a5){if(!utils['isValidChannel'](_0x20a793)){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))]('Unknown\x20channel');}return _0x1916a5['add'+_[_0x3961('0x99')](_0x20a793[_0x3961('0x9a')]())+_0x3961('0x9b')](_0x838651[_0x3961('0x57')][_0x3961('0x5b')],{'penalty':_0x838651[_0x3961('0x57')]['penalty']||0x0})[_0x3961('0x9c')](function(_0x269fbb){for(var _0x4997d5=0x0;_0x4997d5<_0x838651[_0x3961('0x57')]['ids']['length'];_0x4997d5+=0x1){var _0x485449={'UserId':Number(_0x838651[_0x3961('0x4b')]['id'])};_0x485449[_['capitalize'](_0x20a793[_0x3961('0x9a')]())+_0x3961('0x9d')]=Number(_0x838651[_0x3961('0x57')][_0x3961('0x5b')][_0x4997d5]);socket[_0x3961('0x9e')](_0x3961('0x2a')+_[_0x3961('0x99')](_0x20a793[_0x3961('0x9a')]())+_0x3961('0x9f'),_0x485449);}return _0x269fbb;})[_0x3961('0x12')](function(){if(_0x20a793===_0x3961('0xa0')){return db[_0x3961('0xa1')][_0x3961('0x3e')]({'where':{'id':_0x838651[_0x3961('0x57')]['ids']||[]},'raw':!![],'attributes':['id',_0x3961('0x32')]});}})[_0x3961('0x12')](function(_0x17cc67){var _0x153471=_0x1916a5['get']({'plain':!![]});var _0x277fc0=[];if(_0x20a793===_0x3961('0xa0')&&_0x153471[_0x3961('0x28')]===_0x3961('0x6c')&&_0x153471['online']){for(var _0x37992c=0x0;_0x37992c<_0x17cc67['length'];_0x37992c+=0x1){_0x277fc0[_0x3961('0x43')]({'membername':_0x153471[_0x3961('0x32')],'UserId':_0x153471['id'],'queue_name':_0x17cc67[_0x37992c][_0x3961('0x32')],'VoiceQueueId':_0x17cc67[_0x37992c]['id'],'interface':_['isNil'](_0x153471[_0x3961('0xa2')])?util['format'](_0x3961('0xa3'),_0x153471[_0x3961('0x32')]):_0x153471[_0x3961('0xa2')],'paused':_0x153471[_0x3961('0x98')]||![],'penalty':_0x838651['body'][_0x3961('0xa4')]||0x0});}return BPromise[_0x3961('0x83')](_0x277fc0,function(_0x9bc87c){return db[_0x3961('0xa5')][_0x3961('0xa6')](_0x9bc87c);});}return _0x1916a5;});}})['then'](respondWithStatusCode(_0x48ef9d,null))[_0x3961('0x1c')](handleError(_0x48ef9d,null));};exports[_0x3961('0xa7')]=function(_0x9f946d,_0x12d527){var _0x2338df;return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x9f946d[_0x3961('0x4b')]['id']},'attributes':['id',_0x3961('0x32'),'role']})[_0x3961('0x12')](handleEntityNotFound(_0x12d527,null))['then'](function(_0x1273b6){if(_0x1273b6){_0x2338df=_0x1273b6;if(!_0x9f946d['query'][_0x3961('0xa8')]||!utils[_0x3961('0xa9')](_0x9f946d['query'][_0x3961('0xa8')])){throw new db[(_0x3961('0x89'))][(_0x3961('0x8a'))](_0x3961('0xaa'));}return _0x1273b6[_0x3961('0xab')+_[_0x3961('0x99')](_0x9f946d[_0x3961('0x3c')]['channel'][_0x3961('0x9a')]())+_0x3961('0x9b')](_0x9f946d[_0x3961('0x3c')][_0x3961('0x5b')]);}})[_0x3961('0x12')](function(_0x571daa){if(_['isArray'](_0x9f946d[_0x3961('0x3c')][_0x3961('0x5b')])){for(var _0x520c69=0x0;_0x520c69<_0x9f946d['query'][_0x3961('0x5b')][_0x3961('0x42')];_0x520c69+=0x1){var _0x33006e={'UserId':Number(_0x9f946d[_0x3961('0x4b')]['id'])};_0x33006e[_[_0x3961('0x99')](_0x9f946d['query'][_0x3961('0xa8')][_0x3961('0x9a')]())+'QueueId']=Number(_0x9f946d[_0x3961('0x3c')][_0x3961('0x5b')][_0x520c69]);socket[_0x3961('0x9e')](_0x3961('0x2a')+_[_0x3961('0x99')](_0x9f946d['query']['channel'][_0x3961('0x9a')]())+'Queue:remove',_0x33006e);}}else{var _0x33006e={'UserId':Number(_0x9f946d[_0x3961('0x4b')]['id'])};_0x33006e[_['capitalize'](_0x9f946d[_0x3961('0x3c')][_0x3961('0xa8')][_0x3961('0x9a')]())+_0x3961('0x9d')]=Number(_0x9f946d[_0x3961('0x3c')][_0x3961('0x5b')]);socket[_0x3961('0x9e')](_0x3961('0x2a')+_[_0x3961('0x99')](_0x9f946d[_0x3961('0x3c')][_0x3961('0xa8')][_0x3961('0x9a')]())+_0x3961('0xac'),_0x33006e);}return _0x571daa;})['then'](function(){if(_0x9f946d[_0x3961('0x3c')][_0x3961('0xa8')]===_0x3961('0xa0')){return db[_0x3961('0xa5')][_0x3961('0x27')]({'where':{'UserId':_0x9f946d[_0x3961('0x4b')]['id'],'VoiceQueueId':_0x9f946d[_0x3961('0x3c')]['ids']},'individualHooks':!![]})[_0x3961('0x12')](function(){return _0x2338df;});}return _0x2338df;})[_0x3961('0x12')](respondWithStatusCode(_0x12d527,null))[_0x3961('0x1c')](handleError(_0x12d527,null));};exports[_0x3961('0xad')]=function(_0x3980a3,_0x4d1300){_0x3980a3['body']['userpic']=_0x3980a3[_0x3961('0xae')][_0x3961('0xaf')];return db[_0x3961('0x35')]['find']({'where':{'id':_0x3980a3[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x4d1300,null))['then'](saveUpdates(_0x3980a3['body'],null))['then'](respondWithResult(_0x4d1300,null))['catch'](handleError(_0x4d1300,null));};exports[_0x3961('0xb0')]=function(_0x4c0897,_0x4675b6){var _0x3921fa=path[_0x3961('0xb1')](config['root'],_0x3961('0xb2'));return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x4c0897[_0x3961('0x4b')]['id']},'attributes':['id','userpic'],'raw':!![]})['then'](handleEntityNotFound(_0x4675b6,null))['then'](function(_0x5cb84b){if(_0x5cb84b){if(_['isNil'](_0x5cb84b[_0x3961('0xb3')])){return _0x4675b6[_0x3961('0xb4')](_0x3921fa);}else{if(!fs[_0x3961('0xb5')](path[_0x3961('0xb1')](config[_0x3961('0xb6')],_0x3961('0xb7'),_0x5cb84b[_0x3961('0xb3')]))){return _0x4675b6[_0x3961('0xb4')](_0x3921fa);}return _0x4675b6[_0x3961('0xb4')](path[_0x3961('0xb1')](config[_0x3961('0xb6')],_0x3961('0xb7'),_0x5cb84b[_0x3961('0xb3')]));}}})[_0x3961('0x1c')](handleError(_0x4675b6,null));};exports[_0x3961('0xb8')]=function(_0x59ef93,_0x3c897f){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x59ef93[_0x3961('0x4b')]['id']},'attributes':['id']})[_0x3961('0x12')](handleEntityNotFound(_0x3c897f,null))[_0x3961('0x12')](function(_0x283e13){var _0x4bca48=[];values=_0x283e13['dataValues'];_0x4bca48['push'](get_open_tabs(_0x3961('0x44'),_0x283e13[_0x3961('0x45')]));_0x4bca48['push'](get_open_tabs(_0x3961('0x55'),_0x283e13[_0x3961('0x45')]));_0x4bca48[_0x3961('0x43')](get_open_tabs(_0x3961('0x48'),_0x283e13[_0x3961('0x45')]));_0x4bca48['push'](get_open_tabs(_0x3961('0x56'),_0x283e13['dataValues']));_0x4bca48['push'](get_open_tabs(_0x3961('0x46'),_0x283e13[_0x3961('0x45')]));_0x4bca48[_0x3961('0x43')](get_open_tabs(_0x3961('0x47'),_0x283e13['dataValues']));return BPromise[_0x3961('0x49')](_0x4bca48);})[_0x3961('0x12')](function(_0x4c412f){var _0x234fb0=[];if(_0x4c412f){for(var _0x513cb0=0x0;_0x513cb0<values[_0x3961('0xb9')]['length'];_0x513cb0++){var _0x6b0ee8=values[_0x3961('0xb9')][_0x513cb0];_0x234fb0[_0x3961('0x43')]({'channel':_0x3961('0xba'),'id':_0x6b0ee8['id'],'createdAt':_0x6b0ee8[_0x3961('0xbb')]});}for(var _0x513cb0=0x0;_0x513cb0<values[_0x3961('0xbc')][_0x3961('0x42')];_0x513cb0++){var _0x6b0ee8=values[_0x3961('0xbc')][_0x513cb0];_0x234fb0['push']({'channel':_0x3961('0xbd'),'id':_0x6b0ee8['id'],'createdAt':_0x6b0ee8[_0x3961('0xbb')]});}for(var _0x513cb0=0x0;_0x513cb0<values['OpenchannelOpenTabs'][_0x3961('0x42')];_0x513cb0++){var _0x6b0ee8=values['OpenchannelOpenTabs'][_0x513cb0];_0x234fb0[_0x3961('0x43')]({'channel':_0x3961('0xbe'),'id':_0x6b0ee8['id'],'createdAt':_0x6b0ee8[_0x3961('0xbb')]});}for(var _0x513cb0=0x0;_0x513cb0<values[_0x3961('0xbf')]['length'];_0x513cb0++){var _0x6b0ee8=values[_0x3961('0xbf')][_0x513cb0];_0x234fb0[_0x3961('0x43')]({'channel':_0x3961('0xc0'),'id':_0x6b0ee8['id'],'createdAt':_0x6b0ee8[_0x3961('0xbb')]});}for(var _0x513cb0=0x0;_0x513cb0<values[_0x3961('0xc1')]['length'];_0x513cb0++){var _0x6b0ee8=values[_0x3961('0xc1')][_0x513cb0];_0x234fb0['push']({'channel':_0x3961('0xc2'),'id':_0x6b0ee8['id'],'createdAt':_0x6b0ee8['createdAt']});}for(var _0x513cb0=0x0;_0x513cb0<values[_0x3961('0xc3')][_0x3961('0x42')];_0x513cb0++){var _0x6b0ee8=values[_0x3961('0xc3')][_0x513cb0];_0x234fb0[_0x3961('0x43')]({'channel':_0x3961('0xc4'),'id':_0x6b0ee8['id'],'createdAt':_0x6b0ee8['createdAt']});}var _0x264bab={'count':_0x234fb0[_0x3961('0x42')],'rows':_0x234fb0};return _0x264bab;}else return null;})[_0x3961('0x12')](respondWithResult(_0x3c897f,null))['catch'](handleError(_0x3c897f,null));};exports[_0x3961('0xc5')]=function(_0x34d1c9,_0x148091){var _0x5f58f5={};var _0x121988={};var _0x2bfb72;var _0x4a1b07;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x34d1c9[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x148091,null))['then'](function(_0x12d7f4){if(_0x12d7f4){_0x2bfb72=_0x12d7f4;_0x121988['model']=_[_0x3961('0x4d')](db[_0x3961('0xc6')][_0x3961('0x36')]);_0x121988[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x34d1c9['query']);_0x121988['filters']=_[_0x3961('0x4f')](_0x121988[_0x3961('0x52')],_0x121988[_0x3961('0x3c')]);_0x5f58f5[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x121988[_0x3961('0x52')],qs['fields'](_0x34d1c9[_0x3961('0x3c')]['fields']));_0x5f58f5[_0x3961('0x50')]=_0x5f58f5['attributes'][_0x3961('0x42')]?_0x5f58f5[_0x3961('0x50')]:_0x121988['model'];_0x5f58f5[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x34d1c9['query']['sort']);_0x5f58f5[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_['pick'](_0x34d1c9[_0x3961('0x3c')],_0x121988[_0x3961('0x4e')]));if(_0x34d1c9[_0x3961('0x3c')][_0x3961('0x2c')]){_0x5f58f5[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x5f58f5[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x5f58f5['attributes'],function(_0x1134e3){var _0xae9978={};_0xae9978[_0x1134e3]={'$like':'%'+_0x34d1c9[_0x3961('0x3c')]['filter']+'%'};return _0xae9978;})});}_0x5f58f5=_[_0x3961('0x53')]({},_0x5f58f5,_0x34d1c9[_0x3961('0x54')]);return _0x2bfb72['getContacts'](_0x5f58f5);}})[_0x3961('0x12')](function(_0x2ad696){if(_0x2ad696){_0x4a1b07=_0x2ad696[_0x3961('0x42')];if(_0x34d1c9[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0x3d'))){_0x5f58f5[_0x3961('0xca')]=[{'model':db['CmList'],'as':_0x3961('0xcb'),'required':![]},{'model':db[_0x3961('0xcc')],'as':_0x3961('0xcd'),'attributes':['id',_0x3961('0x32'),_0x3961('0xce')],'where':_0x34d1c9[_0x3961('0x3c')][_0x3961('0xcf')]?{'id':_0x34d1c9['query'][_0x3961('0xcf')]}:undefined,'required':_0x34d1c9[_0x3961('0x3c')][_0x3961('0xcf')]?!![]:![]}];}if(!_0x34d1c9[_0x3961('0x3c')]['hasOwnProperty'](_0x3961('0xd0'))){_0x5f58f5[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x34d1c9[_0x3961('0x3c')]['limit']);_0x5f58f5[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x34d1c9[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x2bfb72[_0x3961('0xc5')](_0x5f58f5);}})[_0x3961('0x12')](function(_0x38c14b){if(_0x38c14b){return _0x38c14b?{'count':_0x4a1b07,'rows':_0x38c14b}:null;}})['then'](respondWithResult(_0x148091,null))[_0x3961('0x1c')](handleError(_0x148091,null));};exports[_0x3961('0xd1')]=function(_0x3e0d68,_0x28a15e){var _0x2528f3;var _0x53a1c9;var _0x264d34={};var _0x1b354d;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x3e0d68[_0x3961('0x4b')]['id']},'attributes':['id','name',_0x3961('0x28')]})[_0x3961('0x12')](handleEntityNotFound(_0x28a15e,null))[_0x3961('0x12')](function(_0xeee73b){if(!utils[_0x3961('0xa9')](_0x3e0d68[_0x3961('0x3c')][_0x3961('0xa8')])){throw new db[(_0x3961('0x89'))]['ValidationError'](_0x3961('0xaa'));}_0x2528f3=_0xeee73b;var _0x345be0={};_0x345be0[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_[_0x3961('0x99')](_0x3e0d68[_0x3961('0x3c')]['channel'])+'Queue'][_0x3961('0x36')]);_0x345be0[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x3e0d68['query']);_0x345be0['filters']=_[_0x3961('0x4f')](_0x345be0['model'],_0x345be0[_0x3961('0x3c')]);_0x264d34[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x345be0['model'],qs[_0x3961('0x51')](_0x3e0d68[_0x3961('0x3c')][_0x3961('0x51')]));_0x264d34[_0x3961('0x50')]=_0x264d34[_0x3961('0x50')]['length']?_0x264d34[_0x3961('0x50')]:_0x345be0[_0x3961('0x52')];_0x264d34[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x3e0d68['query'][_0x3961('0xc8')]);_0x264d34[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0x3e0d68['query'],_0x345be0[_0x3961('0x4e')]));if(_0x3e0d68[_0x3961('0x3c')][_0x3961('0x2c')]){_0x264d34[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x264d34[_0x3961('0x3b')],{'$or':_['map'](_0x264d34[_0x3961('0x50')],function(_0x2af4a2){var _0x5202e9={};_0x5202e9[_0x2af4a2]={'$like':'%'+_0x3e0d68[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x5202e9;})});}_0x264d34=_['merge']({},_0x264d34,_0x3e0d68['options']);switch(_0x2528f3['role']){case _0x3961('0x29'):return db[_['capitalize'](_0x3e0d68[_0x3961('0x3c')]['channel'])+'Queue'][_0x3961('0x3e')](_0x264d34);case _0x3961('0x2a'):case _0x3961('0x6c'):return _0x2528f3['get'+_[_0x3961('0x99')](_0x3e0d68[_0x3961('0x3c')][_0x3961('0xa8')])+_0x3961('0x9b')](_0x264d34);default:throw new db[(_0x3961('0x89'))]['ValidationError'](_0x3961('0xd3'));}})[_0x3961('0x12')](function(_0x4492af){_0x1b354d=_0x4492af[_0x3961('0x42')];if(!_0x3e0d68[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x264d34[_0x3961('0x24')]=qs['limit'](_0x3e0d68[_0x3961('0x3c')][_0x3961('0x24')]);_0x264d34[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x3e0d68[_0x3961('0x3c')][_0x3961('0x21')]);}switch(_0x2528f3[_0x3961('0x28')]){case'admin':return db[_[_0x3961('0x99')](_0x3e0d68[_0x3961('0x3c')][_0x3961('0xa8')])+_0x3961('0xd4')][_0x3961('0x3e')](_0x264d34);case'user':case _0x3961('0x6c'):return _0x2528f3['get'+_[_0x3961('0x99')](_0x3e0d68[_0x3961('0x3c')][_0x3961('0xa8')])+_0x3961('0x9b')](_0x264d34);}})[_0x3961('0x12')](function(_0x5ac08c){return{'count':_0x1b354d,'rows':_0x5ac08c};})[_0x3961('0x12')](respondWithResult(_0x28a15e,null))[_0x3961('0x1c')](handleError(_0x28a15e,null));};exports['getVoiceQueuesRt']=function(_0x11ca0d,_0x369d6c){var _0x118e63={};var _0x371cea={};var _0xebd129;var _0x1cdcec;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x11ca0d[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x369d6c,null))['then'](function(_0x52711a){if(_0x52711a){_0xebd129=_0x52711a;_0x371cea['model']=_[_0x3961('0x4d')](db['UserVoiceQueueRt']['rawAttributes']);_0x371cea[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x11ca0d[_0x3961('0x3c')]);_0x371cea[_0x3961('0x4e')]=_['intersection'](_0x371cea[_0x3961('0x52')],_0x371cea[_0x3961('0x3c')]);_0x118e63[_0x3961('0x50')]=_['intersection'](_0x371cea[_0x3961('0x52')],qs[_0x3961('0x51')](_0x11ca0d['query']['fields']));_0x118e63[_0x3961('0x50')]=_0x118e63[_0x3961('0x50')]['length']?_0x118e63['attributes']:_0x371cea[_0x3961('0x52')];_0x118e63[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x11ca0d[_0x3961('0x3c')][_0x3961('0xc8')]);_0x118e63[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x11ca0d[_0x3961('0x3c')],_0x371cea[_0x3961('0x4e')]));if(_0x11ca0d['query'][_0x3961('0x2c')]){_0x118e63[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x118e63[_0x3961('0x3b')],{'$or':_['map'](_0x118e63[_0x3961('0x50')],function(_0x13f708){var _0x36d1d7={};_0x36d1d7[_0x13f708]={'$like':'%'+_0x11ca0d[_0x3961('0x3c')]['filter']+'%'};return _0x36d1d7;})});}_0x118e63=_[_0x3961('0x53')]({},_0x118e63,_0x11ca0d[_0x3961('0x54')]);return _0xebd129[_0x3961('0xd5')](_0x118e63);}})[_0x3961('0x12')](function(_0x2df0ea){if(_0x2df0ea){_0x1cdcec=_0x2df0ea[_0x3961('0x42')];if(!_0x11ca0d[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x118e63['limit']=qs[_0x3961('0x24')](_0x11ca0d['query']['limit']);_0x118e63[_0x3961('0x21')]=qs['offset'](_0x11ca0d[_0x3961('0x3c')][_0x3961('0x21')]);}return _0xebd129[_0x3961('0xd5')](_0x118e63);}})[_0x3961('0x12')](function(_0x5f11f2){if(_0x5f11f2){return _0x5f11f2?{'count':_0x1cdcec,'rows':_0x5f11f2}:null;}})[_0x3961('0x12')](respondWithResult(_0x369d6c,null))['catch'](handleError(_0x369d6c,null));};exports[_0x3961('0xd6')]=function(_0x2516fa,_0xb3f06c){var _0x2d657f={};var _0x50ba9e={};var _0x133c6a;var _0x3df532;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x2516fa[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0xb3f06c,null))[_0x3961('0x12')](function(_0xa6f7f3){if(_0xa6f7f3){_0x133c6a=_0xa6f7f3;_0x50ba9e[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0xd7')][_0x3961('0x36')]);_0x50ba9e[_0x3961('0x3c')]=_['keys'](_0x2516fa[_0x3961('0x3c')]);_0x50ba9e['filters']=_['intersection'](_0x50ba9e[_0x3961('0x52')],_0x50ba9e[_0x3961('0x3c')]);_0x2d657f[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x50ba9e[_0x3961('0x52')],qs[_0x3961('0x51')](_0x2516fa['query'][_0x3961('0x51')]));_0x2d657f[_0x3961('0x50')]=_0x2d657f['attributes']['length']?_0x2d657f['attributes']:_0x50ba9e[_0x3961('0x52')];_0x2d657f[_0x3961('0xc7')]=qs['sort'](_0x2516fa[_0x3961('0x3c')][_0x3961('0xc8')]);_0x2d657f[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0x2516fa['query'],_0x50ba9e[_0x3961('0x4e')]));if(_0x2516fa['query'][_0x3961('0x2c')]){_0x2d657f[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x2d657f[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x2d657f[_0x3961('0x50')],function(_0x3c6a86){var _0x4d802d={};_0x4d802d[_0x3c6a86]={'$like':'%'+_0x2516fa[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x4d802d;})});}_0x2d657f=_[_0x3961('0x53')]({},_0x2d657f,_0x2516fa[_0x3961('0x54')]);return _0x133c6a[_0x3961('0xd6')](_0x2d657f);}})[_0x3961('0x12')](function(_0x108678){if(_0x108678){_0x3df532=_0x108678['length'];if(!_0x2516fa[_0x3961('0x3c')]['hasOwnProperty'](_0x3961('0xd0'))){_0x2d657f['limit']=qs[_0x3961('0x24')](_0x2516fa[_0x3961('0x3c')]['limit']);_0x2d657f[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x2516fa[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x133c6a[_0x3961('0xd6')](_0x2d657f);}})[_0x3961('0x12')](function(_0x43eaf6){if(_0x43eaf6){return _0x43eaf6?{'count':_0x3df532,'rows':_0x43eaf6}:null;}})['then'](respondWithResult(_0xb3f06c,null))[_0x3961('0x1c')](handleError(_0xb3f06c,null));};exports[_0x3961('0xd8')]=function(_0x33fb9b,_0x1208e1){var _0x107f42={'raw':!![],'where':{}};var _0x28ab0b={};var _0x50151b={'count':0x0,'rows':[]};return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x33fb9b[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x1208e1,null))[_0x3961('0x12')](function(_0x1aee3a){if(_0x1aee3a){_0x28ab0b['model']=_[_0x3961('0x4d')](db[_0x3961('0xd9')]['rawAttributes']);_0x28ab0b['query']=_[_0x3961('0x4d')](_0x33fb9b[_0x3961('0x3c')]);_0x28ab0b[_0x3961('0x4e')]=_['intersection'](_0x28ab0b['model'],_0x28ab0b[_0x3961('0x3c')]);_0x107f42[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x28ab0b['model'],qs[_0x3961('0x51')](_0x33fb9b[_0x3961('0x3c')]['fields']));_0x107f42['attributes']=_0x107f42[_0x3961('0x50')][_0x3961('0x42')]?_0x107f42[_0x3961('0x50')]:_0x28ab0b[_0x3961('0x52')];if(!_0x33fb9b[_0x3961('0x3c')]['hasOwnProperty'](_0x3961('0xd0'))){_0x107f42[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x33fb9b[_0x3961('0x3c')][_0x3961('0x24')]);_0x107f42[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x33fb9b[_0x3961('0x3c')]['offset']);}_0x107f42[_0x3961('0xc7')]=qs['sort'](_0x33fb9b[_0x3961('0x3c')]['sort']);_0x107f42[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0x33fb9b[_0x3961('0x3c')],_0x28ab0b[_0x3961('0x4e')]));_0x107f42['where'][_0x3961('0xda')]=_0x1aee3a['id'];if(_0x33fb9b[_0x3961('0x3c')][_0x3961('0x2c')]){_0x107f42[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x107f42[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x107f42['attributes'],function(_0x548eff){var _0x3ec934={};_0x3ec934[_0x548eff]={'$like':'%'+_0x33fb9b[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x3ec934;})});}_0x107f42=_[_0x3961('0x53')]({},_0x107f42,_0x33fb9b[_0x3961('0x54')]);return db['VoiceRecording']['count']({'where':_0x107f42['where']})['then'](function(_0x53b411){_0x50151b[_0x3961('0x23')]=_0x53b411;if(_0x33fb9b[_0x3961('0x3c')][_0x3961('0x3d')]){_0x107f42[_0x3961('0xca')]=[{'all':!![]}];}return db[_0x3961('0xd9')][_0x3961('0x3e')](_0x107f42);})[_0x3961('0x12')](function(_0x45102e){_0x50151b[_0x3961('0x3f')]=_0x45102e;return _0x50151b;});}})[_0x3961('0x12')](respondWithFilteredResult(_0x1208e1,_0x107f42))[_0x3961('0x1c')](handleError(_0x1208e1,null));};exports['getScreenRecordings']=function(_0x36d07f,_0x3248e8){var _0x190408={'raw':!![],'where':{}};var _0x4adfb8={};var _0x3c6fef={'count':0x0,'rows':[]};return db['User'][_0x3961('0x8f')]({'where':{'id':_0x36d07f[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x3248e8,null))['then'](function(_0x515c35){if(_0x515c35){_0x4adfb8[_0x3961('0x52')]=_[_0x3961('0x4d')](db['ScreenRecording'][_0x3961('0x36')]);_0x4adfb8[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x36d07f[_0x3961('0x3c')]);_0x4adfb8[_0x3961('0x4e')]=_['intersection'](_0x4adfb8[_0x3961('0x52')],_0x4adfb8['query']);_0x190408[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x4adfb8[_0x3961('0x52')],qs[_0x3961('0x51')](_0x36d07f['query']['fields']));_0x190408[_0x3961('0x50')]=_0x190408['attributes'][_0x3961('0x42')]?_0x190408['attributes']:_0x4adfb8[_0x3961('0x52')];if(!_0x36d07f[_0x3961('0x3c')][_0x3961('0xc9')]('nolimit')){_0x190408['limit']=qs[_0x3961('0x24')](_0x36d07f[_0x3961('0x3c')]['limit']);_0x190408['offset']=qs[_0x3961('0x21')](_0x36d07f[_0x3961('0x3c')][_0x3961('0x21')]);}_0x190408['order']=qs['sort'](_0x36d07f[_0x3961('0x3c')][_0x3961('0xc8')]);_0x190408[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x36d07f[_0x3961('0x3c')],_0x4adfb8[_0x3961('0x4e')]));_0x190408['where'][_0x3961('0xda')]=_0x515c35['id'];if(_0x36d07f[_0x3961('0x3c')][_0x3961('0x2c')]){_0x190408[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x190408[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x190408[_0x3961('0x50')],function(_0xa253be){var _0x4a76fe={};_0x4a76fe[_0xa253be]={'$like':'%'+_0x36d07f[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x4a76fe;})});}_0x190408=_[_0x3961('0x53')]({},_0x190408,_0x36d07f[_0x3961('0x54')]);return db[_0x3961('0xdb')][_0x3961('0x23')]({'where':_0x190408[_0x3961('0x3b')]})[_0x3961('0x12')](function(_0x1b1450){_0x3c6fef[_0x3961('0x23')]=_0x1b1450;if(_0x36d07f[_0x3961('0x3c')]['includeAll']){_0x190408[_0x3961('0xca')]=[{'all':!![]}];}return db[_0x3961('0xdb')][_0x3961('0x3e')](_0x190408);})[_0x3961('0x12')](function(_0x53cdd9){_0x3c6fef[_0x3961('0x3f')]=_0x53cdd9;return _0x3c6fef;});}})[_0x3961('0x12')](respondWithFilteredResult(_0x3248e8,_0x190408))[_0x3961('0x1c')](handleError(_0x3248e8,null));};exports[_0x3961('0xdc')]=function(_0x6fcaf7,_0x323836){var _0x2cf40f={};var _0x49cec3={};var _0x592073;var _0x50cbe3;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x6fcaf7['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x323836,null))[_0x3961('0x12')](function(_0x47bb40){if(_0x47bb40){_0x592073=_0x47bb40;_0x49cec3[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0xdd')][_0x3961('0x36')]);_0x49cec3[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x6fcaf7[_0x3961('0x3c')]);_0x49cec3[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x49cec3[_0x3961('0x52')],_0x49cec3[_0x3961('0x3c')]);_0x2cf40f[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x49cec3['model'],qs[_0x3961('0x51')](_0x6fcaf7[_0x3961('0x3c')][_0x3961('0x51')]));_0x2cf40f[_0x3961('0x50')]=_0x2cf40f[_0x3961('0x50')][_0x3961('0x42')]?_0x2cf40f[_0x3961('0x50')]:_0x49cec3['model'];_0x2cf40f['order']=qs[_0x3961('0xc8')](_0x6fcaf7[_0x3961('0x3c')]['sort']);_0x2cf40f[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0x6fcaf7['query'],_0x49cec3['filters']));if(_0x6fcaf7[_0x3961('0x3c')][_0x3961('0x2c')]){_0x2cf40f[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x2cf40f['where'],{'$or':_['map'](_0x2cf40f[_0x3961('0x50')],function(_0x1c4a6d){var _0x439c34={};_0x439c34[_0x1c4a6d]={'$like':'%'+_0x6fcaf7[_0x3961('0x3c')]['filter']+'%'};return _0x439c34;})});}_0x2cf40f=_[_0x3961('0x53')]({},_0x2cf40f,_0x6fcaf7[_0x3961('0x54')]);return _0x592073[_0x3961('0xdc')](_0x2cf40f);}})[_0x3961('0x12')](function(_0x30493a){if(_0x30493a){_0x50cbe3=_0x30493a[_0x3961('0x42')];if(!_0x6fcaf7[_0x3961('0x3c')]['hasOwnProperty'](_0x3961('0xd0'))){_0x2cf40f['limit']=qs[_0x3961('0x24')](_0x6fcaf7['query'][_0x3961('0x24')]);_0x2cf40f[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x6fcaf7[_0x3961('0x3c')]['offset']);}return _0x592073[_0x3961('0xdc')](_0x2cf40f);}})[_0x3961('0x12')](function(_0xdc1776){if(_0xdc1776){return _0xdc1776?{'count':_0x50cbe3,'rows':_0xdc1776}:null;}})[_0x3961('0x12')](respondWithResult(_0x323836,null))[_0x3961('0x1c')](handleError(_0x323836,null));};exports['getOpenchannelInteractions']=function(_0x2170c8,_0x28cf97){var _0x14932e={};var _0x39ee40={};var _0x10cb45;var _0x39e41b;return db['User'][_0x3961('0x8f')]({'where':{'id':_0x2170c8[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x28cf97,null))['then'](function(_0x1c067a){if(_0x1c067a){_0x10cb45=_0x1c067a;_0x39ee40['model']=_[_0x3961('0x4d')](db['OpenchannelInteraction']['rawAttributes']);_0x39ee40['query']=_[_0x3961('0x4d')](_0x2170c8[_0x3961('0x3c')]);_0x39ee40[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x39ee40[_0x3961('0x52')],_0x39ee40[_0x3961('0x3c')]);_0x14932e[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x39ee40[_0x3961('0x52')],qs[_0x3961('0x51')](_0x2170c8['query']['fields']));_0x14932e['attributes']=_0x14932e[_0x3961('0x50')]['length']?_0x14932e[_0x3961('0x50')]:_0x39ee40[_0x3961('0x52')];_0x14932e[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x2170c8[_0x3961('0x3c')]['sort']);_0x14932e['where']=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x2170c8['query'],_0x39ee40[_0x3961('0x4e')]));if(_0x2170c8['query'][_0x3961('0x2c')]){_0x14932e['where']=_[_0x3961('0x53')](_0x14932e[_0x3961('0x3b')],{'$or':_['map'](_0x14932e[_0x3961('0x50')],function(_0x562d32){var _0x46e543={};_0x46e543[_0x562d32]={'$like':'%'+_0x2170c8['query'][_0x3961('0x2c')]+'%'};return _0x46e543;})});}_0x14932e=_[_0x3961('0x53')]({},_0x14932e,_0x2170c8[_0x3961('0x54')]);return _0x10cb45[_0x3961('0xde')](_0x14932e);}})[_0x3961('0x12')](function(_0x56ac09){if(_0x56ac09){_0x39e41b=_0x56ac09[_0x3961('0x42')];if(!_0x2170c8['query'][_0x3961('0xc9')](_0x3961('0xd0'))){_0x14932e[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x2170c8['query'][_0x3961('0x24')]);_0x14932e['offset']=qs[_0x3961('0x21')](_0x2170c8[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x10cb45[_0x3961('0xde')](_0x14932e);}})[_0x3961('0x12')](function(_0x2322e7){if(_0x2322e7){return _0x2322e7?{'count':_0x39e41b,'rows':_0x2322e7}:null;}})['then'](respondWithResult(_0x28cf97,null))[_0x3961('0x1c')](handleError(_0x28cf97,null));};exports[_0x3961('0xdf')]=function(_0x37eb54,_0x31e6d2){var _0x23635e={'raw':!![],'where':{}};var _0x3b3acb={};var _0x1b1f08={'count':0x0,'rows':[]};return db['User'][_0x3961('0x8f')]({'where':{'id':_0x37eb54[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x31e6d2,null))[_0x3961('0x12')](function(_0x3b5ac9){if(_0x3b5ac9){_0x3b3acb[_0x3961('0x52')]=_[_0x3961('0x4d')](db['MailInteraction'][_0x3961('0x36')]);_0x3b3acb[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x37eb54[_0x3961('0x3c')]);_0x3b3acb[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x3b3acb[_0x3961('0x52')],_0x3b3acb[_0x3961('0x3c')]);_0x23635e[_0x3961('0x50')]=_['intersection'](_0x3b3acb[_0x3961('0x52')],qs['fields'](_0x37eb54[_0x3961('0x3c')][_0x3961('0x51')]));_0x23635e[_0x3961('0x50')]=_0x23635e[_0x3961('0x50')][_0x3961('0x42')]?_0x23635e[_0x3961('0x50')]:_0x3b3acb['model'];if(!_0x37eb54[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x23635e[_0x3961('0x24')]=qs['limit'](_0x37eb54[_0x3961('0x3c')]['limit']);_0x23635e[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x37eb54[_0x3961('0x3c')][_0x3961('0x21')]);}_0x23635e[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x37eb54['query']['sort']);_0x23635e['where']=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x37eb54[_0x3961('0x3c')],_0x3b3acb[_0x3961('0x4e')]));_0x23635e[_0x3961('0x3b')][_0x3961('0xda')]=_0x3b5ac9['id'];if(_0x37eb54[_0x3961('0x3c')][_0x3961('0x2c')]){_0x23635e['where']=_[_0x3961('0x53')](_0x23635e[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x23635e[_0x3961('0x50')],function(_0x3d924c){var _0x1b298e={};_0x1b298e[_0x3d924c]={'$like':'%'+_0x37eb54[_0x3961('0x3c')]['filter']+'%'};return _0x1b298e;})});}_0x23635e=_['merge']({},_0x23635e,_0x37eb54[_0x3961('0x54')]);return db[_0x3961('0xe0')]['count']({'where':_0x23635e[_0x3961('0x3b')]})[_0x3961('0x12')](function(_0x4437d9){_0x1b1f08[_0x3961('0x23')]=_0x4437d9;if(_0x37eb54['query']['includeAll']){_0x23635e[_0x3961('0xca')]=[{'all':!![]}];}return db[_0x3961('0xe0')][_0x3961('0x3e')](_0x23635e);})[_0x3961('0x12')](function(_0x2adb18){_0x1b1f08['rows']=_0x2adb18;return _0x1b1f08;});}})['then'](respondWithFilteredResult(_0x31e6d2,_0x23635e))[_0x3961('0x1c')](handleError(_0x31e6d2,null));};exports[_0x3961('0xe1')]=function(_0x4f0c08,_0x35dee0){var _0x22d733={};var _0x504423={};var _0x512ff3;var _0x35e1c0;return db['User'][_0x3961('0x8f')]({'where':{'id':_0x4f0c08[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x35dee0,null))[_0x3961('0x12')](function(_0xb3cb63){if(_0xb3cb63){_0x512ff3=_0xb3cb63;_0x504423[_0x3961('0x52')]=_['keys'](db['SmsInteraction']['rawAttributes']);_0x504423['query']=_[_0x3961('0x4d')](_0x4f0c08[_0x3961('0x3c')]);_0x504423[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x504423[_0x3961('0x52')],_0x504423['query']);_0x22d733[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x504423[_0x3961('0x52')],qs['fields'](_0x4f0c08['query'][_0x3961('0x51')]));_0x22d733[_0x3961('0x50')]=_0x22d733[_0x3961('0x50')][_0x3961('0x42')]?_0x22d733['attributes']:_0x504423[_0x3961('0x52')];_0x22d733['order']=qs['sort'](_0x4f0c08[_0x3961('0x3c')]['sort']);_0x22d733['where']=qs['filters'](_[_0x3961('0xd2')](_0x4f0c08[_0x3961('0x3c')],_0x504423[_0x3961('0x4e')]));if(_0x4f0c08[_0x3961('0x3c')][_0x3961('0x2c')]){_0x22d733[_0x3961('0x3b')]=_['merge'](_0x22d733[_0x3961('0x3b')],{'$or':_['map'](_0x22d733[_0x3961('0x50')],function(_0x5c85ec){var _0x522038={};_0x522038[_0x5c85ec]={'$like':'%'+_0x4f0c08[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x522038;})});}_0x22d733=_[_0x3961('0x53')]({},_0x22d733,_0x4f0c08[_0x3961('0x54')]);return _0x512ff3[_0x3961('0xe1')](_0x22d733);}})['then'](function(_0x1870f5){if(_0x1870f5){_0x35e1c0=_0x1870f5[_0x3961('0x42')];if(!_0x4f0c08[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x22d733['limit']=qs[_0x3961('0x24')](_0x4f0c08[_0x3961('0x3c')]['limit']);_0x22d733[_0x3961('0x21')]=qs['offset'](_0x4f0c08['query'][_0x3961('0x21')]);}return _0x512ff3[_0x3961('0xe1')](_0x22d733);}})[_0x3961('0x12')](function(_0x5e71b1){if(_0x5e71b1){return _0x5e71b1?{'count':_0x35e1c0,'rows':_0x5e71b1}:null;}})['then'](respondWithResult(_0x35dee0,null))[_0x3961('0x1c')](handleError(_0x35dee0,null));};exports[_0x3961('0xe2')]=function(_0x1729b3,_0x1ea564){var _0xeed55f={};var _0x31c428={};var _0x59cf45;var _0x413e84;return db[_0x3961('0x35')]['findOne']({'where':{'id':_0x1729b3[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x1ea564,null))[_0x3961('0x12')](function(_0x29a771){if(_0x29a771){_0x59cf45=_0x29a771;_0x31c428[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0xe3')][_0x3961('0x36')]);_0x31c428[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x1729b3[_0x3961('0x3c')]);_0x31c428[_0x3961('0x4e')]=_['intersection'](_0x31c428[_0x3961('0x52')],_0x31c428[_0x3961('0x3c')]);_0xeed55f['attributes']=_[_0x3961('0x4f')](_0x31c428[_0x3961('0x52')],qs[_0x3961('0x51')](_0x1729b3['query'][_0x3961('0x51')]));_0xeed55f[_0x3961('0x50')]=_0xeed55f[_0x3961('0x50')][_0x3961('0x42')]?_0xeed55f['attributes']:_0x31c428[_0x3961('0x52')];_0xeed55f[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x1729b3[_0x3961('0x3c')][_0x3961('0xc8')]);_0xeed55f[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0x1729b3[_0x3961('0x3c')],_0x31c428[_0x3961('0x4e')]));if(_0x1729b3[_0x3961('0x3c')][_0x3961('0x2c')]){_0xeed55f[_0x3961('0x3b')]=_[_0x3961('0x53')](_0xeed55f[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0xeed55f[_0x3961('0x50')],function(_0x351708){var _0x180ac9={};_0x180ac9[_0x351708]={'$like':'%'+_0x1729b3[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x180ac9;})});}_0xeed55f=_[_0x3961('0x53')]({},_0xeed55f,_0x1729b3[_0x3961('0x54')]);return _0x59cf45['getFaxInteractions'](_0xeed55f);}})[_0x3961('0x12')](function(_0x444adf){if(_0x444adf){_0x413e84=_0x444adf[_0x3961('0x42')];if(!_0x1729b3[_0x3961('0x3c')][_0x3961('0xc9')]('nolimit')){_0xeed55f['limit']=qs[_0x3961('0x24')](_0x1729b3[_0x3961('0x3c')][_0x3961('0x24')]);_0xeed55f[_0x3961('0x21')]=qs['offset'](_0x1729b3['query'][_0x3961('0x21')]);}return _0x59cf45[_0x3961('0xe2')](_0xeed55f);}})[_0x3961('0x12')](function(_0x5e7747){if(_0x5e7747){return _0x5e7747?{'count':_0x413e84,'rows':_0x5e7747}:null;}})[_0x3961('0x12')](respondWithResult(_0x1ea564,null))[_0x3961('0x1c')](handleError(_0x1ea564,null));};exports[_0x3961('0xe4')]=function(_0x45dcaf,_0x4092e7){var _0x5753a0={};var _0x3a9fec={};var _0x4a9f3e;var _0xa4ad57;return db['User'][_0x3961('0x8f')]({'where':{'id':_0x45dcaf[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x4092e7,null))[_0x3961('0x12')](function(_0x250423){if(_0x250423){_0x4a9f3e=_0x250423;_0x3a9fec['model']=_['keys'](db['WhatsappInteraction'][_0x3961('0x36')]);_0x3a9fec[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x45dcaf[_0x3961('0x3c')]);_0x3a9fec['filters']=_[_0x3961('0x4f')](_0x3a9fec['model'],_0x3a9fec[_0x3961('0x3c')]);_0x5753a0[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x3a9fec[_0x3961('0x52')],qs[_0x3961('0x51')](_0x45dcaf[_0x3961('0x3c')][_0x3961('0x51')]));_0x5753a0['attributes']=_0x5753a0[_0x3961('0x50')][_0x3961('0x42')]?_0x5753a0[_0x3961('0x50')]:_0x3a9fec[_0x3961('0x52')];_0x5753a0['order']=qs[_0x3961('0xc8')](_0x45dcaf[_0x3961('0x3c')][_0x3961('0xc8')]);_0x5753a0[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0x45dcaf[_0x3961('0x3c')],_0x3a9fec[_0x3961('0x4e')]));if(_0x45dcaf['query'][_0x3961('0x2c')]){_0x5753a0[_0x3961('0x3b')]=_['merge'](_0x5753a0[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x5753a0[_0x3961('0x50')],function(_0x88883c){var _0x13a3a8={};_0x13a3a8[_0x88883c]={'$like':'%'+_0x45dcaf['query'][_0x3961('0x2c')]+'%'};return _0x13a3a8;})});}_0x5753a0=_['merge']({},_0x5753a0,_0x45dcaf['options']);return _0x4a9f3e['getWhatsappInteractions'](_0x5753a0);}})[_0x3961('0x12')](function(_0x986082){if(_0x986082){_0xa4ad57=_0x986082['length'];if(!_0x45dcaf[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x5753a0[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x45dcaf['query'][_0x3961('0x24')]);_0x5753a0[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x45dcaf[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x4a9f3e[_0x3961('0xe4')](_0x5753a0);}})['then'](function(_0x171fc3){if(_0x171fc3){return _0x171fc3?{'count':_0xa4ad57,'rows':_0x171fc3}:null;}})['then'](respondWithResult(_0x4092e7,null))[_0x3961('0x1c')](handleError(_0x4092e7,null));};exports[_0x3961('0xe5')]=function(_0x1e96dd,_0x123957,_0x433dc7){var _0x199af4;var _0x52c750;var _0x4a6ac3;var _0x285cc6=!_['isNil'](_0x1e96dd[_0x3961('0x4b')]['id'])?_0x1e96dd[_0x3961('0x4b')]['id']:!_[_0x3961('0x62')](_0x1e96dd['user']['id'])?_0x1e96dd['user']['id']:null;return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x285cc6,'role':{'$or':[_0x3961('0x29'),'user',_0x3961('0x6c')]}},'attributes':['id',_0x3961('0x32'),_0x3961('0xe6'),_0x3961('0xe7'),_0x3961('0x28'),_0x3961('0x5c'),_0x3961('0x97')]})['then'](function(_0x9bfd0b){if(_0x9bfd0b){if(_0x9bfd0b[_0x3961('0x28')]===_0x3961('0x6c')){_0x199af4=_0x9bfd0b;if(_0x1e96dd[_0x3961('0x57')]['interface']){_0x4a6ac3=util[_0x3961('0xe8')](_0x3961('0xe9'),_0x199af4[_0x1e96dd['body'][_0x3961('0xa2')]]);}else if(_0x1e96dd[_0x3961('0x57')][_0x3961('0xea')]){_0x4a6ac3=util[_0x3961('0xe8')]('SIP/%s',_0x1e96dd[_0x3961('0x57')][_0x3961('0xea')]);}else{_0x4a6ac3=util[_0x3961('0xe8')]('SIP/%s',_0x199af4[_0x3961('0x32')]);}socket['to'](util['format'](_0x3961('0xeb'),_0x199af4[_0x3961('0x32')]))[_0x3961('0x9e')](_0x3961('0xec'),{'user':{'id':_0x199af4['id'],'name':_0x199af4['name']},'ip':_0x1e96dd[_0x3961('0xed')][_0x3961('0xee')]||_0x1e96dd[_0x3961('0xef')][_0x3961('0xf0')]||_0x1e96dd[_0x3961('0xf1')]['remoteAddress']||_0x1e96dd[_0x3961('0xef')][_0x3961('0xf1')]['remoteAddress']});return db[_0x3961('0xa5')][_0x3961('0x27')]({'where':{'membername':_0x199af4['name']},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x3961('0x8a'))](_0x3961('0xf2'));}})[_0x3961('0x12')](function(){if(_0x199af4){return _0x199af4[_0x3961('0xf3')]({'raw':!![]});}})[_0x3961('0x12')](function(_0x298dfd){if(_0x199af4){var _0x38a8eb=[];if(_0x298dfd){_0x52c750=_0x298dfd;if(_0x52c750[_0x3961('0x42')]){for(var _0x513a4d=0x0;_0x513a4d<_0x52c750['length'];_0x513a4d++){_0x38a8eb[_0x3961('0x43')]({'membername':_0x199af4['name'],'UserId':_0x199af4['id'],'queue_name':_0x52c750[_0x513a4d][_0x3961('0x32')],'VoiceQueueId':_0x52c750[_0x513a4d]['id'],'interface':_0x4a6ac3,'paused':_0x199af4[_0x3961('0x97')]||![],'penalty':_0x52c750[_0x513a4d][_0x3961('0xf4')]||0x0});}return BPromise[_0x3961('0x83')](_0x38a8eb,function(_0x31aee5){return db[_0x3961('0xa5')][_0x3961('0xa6')](_0x31aee5);});}}}})[_0x3961('0x12')](function(){if(_0x199af4){return db[_0x3961('0xf5')][_0x3961('0x3e')]({'where':{'membername':_0x199af4['name'],'exitAt':null}});}})['then'](function(_0x37227a){if(_0x199af4){var _0x4a4cd4=[];_0x37227a[_0x3961('0xf6')](function(_0x67b58b){_0x4a4cd4[_0x3961('0x43')](_0x67b58b[_0x3961('0x26')]({'exitAt':moment()[_0x3961('0xe8')](_0x3961('0xf7'))}));});return BPromise[_0x3961('0x49')](_0x4a4cd4);}})[_0x3961('0x12')](function(){if(_0x199af4){var _0x5ad4ed=[];var _0x22acf2=[];var _0x30c326=utils['getChannels']();var _0x14c542={'membername':_0x199af4[_0x3961('0x32')],'interface':_0x4a6ac3,'enterAt':moment()['format'](_0x3961('0xf7')),'role':_0x199af4[_0x3961('0x28')],'internal':_0x199af4[_0x3961('0x5c')]};_0x30c326[_0x3961('0xf6')](function(_0x1cd9bb){_0x5ad4ed[_0x3961('0x43')](_[_0x3961('0x53')]({'channel':_0x1cd9bb,'type':_0x3961('0xf8'),'data1':_0x1e96dd[_0x3961('0x57')][_0x3961('0xf9')],'data2':_0x4a6ac3},_0x14c542));if(_0x199af4[_0x3961('0x97')]){_0x22acf2[_0x3961('0x43')](_['merge']({'channel':_0x1cd9bb,'type':_0x3961('0xfa'),'data1':_0x3961('0xfb')},_0x14c542));}});return db[_0x3961('0xf5')][_0x3961('0x7f')](_0x5ad4ed[_0x3961('0xfc')](_0x22acf2),{'individualHooks':!![]});}})[_0x3961('0x12')](function(){if(_0x199af4){return _0x199af4['update']({'online':!![],'lastLoginAt':moment()[_0x3961('0xe8')](_0x3961('0xf7')),'voicePause':_0x199af4['loginInPause']||![],'mailPause':_0x199af4[_0x3961('0x97')]||![],'chatPause':_0x199af4[_0x3961('0x97')]||![],'faxPause':_0x199af4[_0x3961('0x97')]||![],'smsPause':_0x199af4[_0x3961('0x97')]||![],'openchannelPause':_0x199af4[_0x3961('0x97')]||![],'whatsappPause':_0x199af4['loginInPause']||![],'pauseType':_0x199af4[_0x3961('0x97')]?_0x3961('0xfb'):null,'interface':_0x4a6ac3,'lastPauseAt':moment()[_0x3961('0xe8')](_0x3961('0xf7'))});}})[_0x3961('0x12')](function(_0xc93fb2){if(_0x1e96dd[_0x3961('0xfd')]){return _0x433dc7();}else{return BPromise[_0x3961('0xfe')](_0xc93fb2)[_0x3961('0x12')](respondWithResult(_0x123957,null));}})['catch'](handleError(_0x123957,null));};exports[_0x3961('0xff')]=function(_0xf58425,_0x1e3a7d){var _0x47fbd3;return db[_0x3961('0x35')]['find']({'where':{'id':_0xf58425[_0x3961('0x4b')]['id'],'role':'agent'},'attributes':['id',_0x3961('0x32'),_0x3961('0x28')]})[_0x3961('0x12')](handleEntityNotFound(_0x1e3a7d,null))[_0x3961('0x12')](function(_0x1e2263){if(_0x1e2263){_0x47fbd3=_0x1e2263;return db[_0x3961('0xa5')][_0x3961('0x27')]({'where':{'membername':_0x47fbd3[_0x3961('0x32')]},'individualHooks':!![]});}})[_0x3961('0x12')](function(){return db[_0x3961('0xf5')][_0x3961('0x3e')]({'where':{'membername':_0x47fbd3[_0x3961('0x32')],'exitAt':null}});})['then'](function(_0x23021b){var _0x81d618=[];_0x23021b['forEach'](function(_0x456617){_0x81d618[_0x3961('0x43')](_0x456617[_0x3961('0x26')]({'exitAt':moment()[_0x3961('0xe8')](_0x3961('0xf7'))}));});return BPromise[_0x3961('0x49')](_0x81d618);})[_0x3961('0x12')](function(){return _0x47fbd3[_0x3961('0x26')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x1e3a7d,null))[_0x3961('0x1c')](handleError(_0x1e3a7d,null));};exports[_0x3961('0x100')]=function(_0x50c6dd,_0x50d143){var _0x2a2058;return db[_0x3961('0xa5')][_0x3961('0x26')]({'paused':0x1},{'where':{'UserId':_0x50c6dd[_0x3961('0x4b')]['id']},'individualHooks':!![]})['then'](function(){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x50c6dd['params']['id'],'role':'agent'},'attributes':['id',_0x3961('0x32'),_0x3961('0x28'),'internal',_0x3961('0xa2')]});})['then'](handleEntityNotFound(_0x50d143,null))[_0x3961('0x12')](function(_0x5abf1e){if(_0x5abf1e){_0x2a2058=_0x5abf1e;return respondWithRpcPromise('QueuePause',_0x3961('0x100'),{'id':_0x2a2058['id'],'name':_0x2a2058[_0x3961('0x32')],'pause':!![]});}})[_0x3961('0x12')](function(){if(_0x2a2058){return db[_0x3961('0xf5')][_0x3961('0x3e')]({'where':{'membername':_0x2a2058[_0x3961('0x32')],'type':_0x3961('0xfa'),'exitAt':null}});}})[_0x3961('0x12')](function(_0x3a353f){if(_0x3a353f[_0x3961('0x42')]){var _0x5a4e21=moment()[_0x3961('0xe8')](_0x3961('0xf7'));for(var _0x37f257=0x0,_0x25b470=_0x3a353f[_0x3961('0x42')];_0x37f257<_0x25b470;_0x37f257++){_0x3a353f[_0x37f257][_0x3961('0x101')]({'exitAt':_0x5a4e21});}}})[_0x3961('0x12')](function(){var _0x42102f=[];var _0x58b83a=utils['getChannels']();_0x58b83a['forEach'](function(_0x3d92c9){_0x42102f[_0x3961('0x43')]({'channel':_0x3d92c9,'membername':_0x2a2058['name'],'interface':_[_0x3961('0x62')](_0x2a2058[_0x3961('0xa2')])?util[_0x3961('0xe8')](_0x3961('0xa3'),_0x2a2058[_0x3961('0x32')]):_0x2a2058[_0x3961('0xa2')],'type':_0x3961('0xfa'),'enterAt':moment()[_0x3961('0xe8')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x50c6dd['body']['type']||'DEFAULT\x20PAUSE','role':_0x2a2058['role'],'internal':_0x2a2058['internal']});});return db[_0x3961('0xf5')][_0x3961('0x7f')](_0x42102f,{'individualHooks':!![]});})[_0x3961('0x12')](function(){return _0x2a2058['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x50c6dd[_0x3961('0x57')][_0x3961('0x38')]||_0x3961('0x102'),'lastPauseAt':moment()[_0x3961('0xe8')]('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x50d143,null))[_0x3961('0x1c')](handleError(_0x50d143,null));};exports[_0x3961('0x103')]=function(_0x3d5922,_0x22066f){var _0x26f525;return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x3d5922['params']['id']},'attributes':['id',_0x3961('0x32'),_0x3961('0x28'),'voicePause',_0x3961('0x104'),_0x3961('0x105'),'faxPause',_0x3961('0x106'),_0x3961('0x107'),_0x3961('0x108'),'pauseType',_0x3961('0x109')]})[_0x3961('0x12')](handleEntityNotFound(_0x22066f,null))[_0x3961('0x12')](function(_0x2229f8){if(_0x2229f8){_0x26f525=_0x2229f8;if(_0x3d5922[_0x3961('0x57')]['channel']&&!utils[_0x3961('0xa9')](_0x3d5922[_0x3961('0x57')]['channel'])){throw new db['Sequelize'][(_0x3961('0x8a'))](_0x3961('0xaa'));}switch(_0x3d5922['body']['channel']){case _0x3961('0xa0'):return respondWithRpcPromise(_0x3961('0x10a'),'unpause',{'id':_0x26f525['id'],'name':_0x26f525[_0x3961('0x32')],'pause':![]})['then'](function(){return db[_0x3961('0xa5')][_0x3961('0x26')]({'paused':0x0},{'where':{'UserId':_0x26f525['id']},'individualHooks':!![]});})[_0x3961('0x12')](function(){return db[_0x3961('0xf5')][_0x3961('0x31')]({'where':{'channel':_0x3d5922[_0x3961('0x57')]['channel'],'membername':_0x26f525['name'],'type':_0x3961('0xfa'),'exitAt':null}});})[_0x3961('0x12')](function(_0x41270b){if(_0x41270b){return _0x41270b['update']({'exitAt':moment()['format'](_0x3961('0xf7')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x3961('0x12')](function(){return _0x26f525['update']({'voicePause':![]});});case _0x3961('0x47'):case _0x3961('0x44'):case _0x3961('0x46'):case'sms':case _0x3961('0x56'):case _0x3961('0x48'):return db[_0x3961('0xf5')][_0x3961('0x31')]({'where':{'channel':_0x3d5922[_0x3961('0x57')][_0x3961('0xa8')],'membername':_0x26f525[_0x3961('0x32')],'type':'PAUSE','exitAt':null}})[_0x3961('0x12')](function(_0x1e4f3b){if(_0x1e4f3b){return _0x1e4f3b[_0x3961('0x26')]({'exitAt':moment()[_0x3961('0xe8')](_0x3961('0xf7')),'data2':_0x3961('0x10b')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x46c8c0={};_['set'](_0x46c8c0,util[_0x3961('0xe8')](_0x3961('0x10c'),_0x3d5922[_0x3961('0x57')][_0x3961('0xa8')],_0x3961('0x10d')),![]);return _0x26f525[_0x3961('0x26')](_0x46c8c0);});default:return respondWithRpcPromise(_0x3961('0x10a'),'unpause',{'id':_0x26f525['id'],'name':_0x26f525[_0x3961('0x32')],'pause':![]})[_0x3961('0x12')](function(){return db[_0x3961('0xa5')][_0x3961('0x26')]({'paused':0x0},{'where':{'UserId':_0x26f525['id']}});})[_0x3961('0x12')](function(){return db[_0x3961('0xf5')]['findAll']({'where':{'membername':_0x26f525[_0x3961('0x32')],'type':'PAUSE','exitAt':null}});})[_0x3961('0x12')](function(_0x5987a0){var _0x270662=[];_0x5987a0['forEach'](function(_0x9b452){_0x270662[_0x3961('0x43')](_0x9b452[_0x3961('0x26')]({'exitAt':moment()[_0x3961('0xe8')](_0x3961('0xf7')),'data2':'manual'}));});return BPromise['all'](_0x270662);})[_0x3961('0x12')](function(){return _0x26f525[_0x3961('0x26')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x22066f,null))['catch'](handleError(_0x22066f,null));};exports[_0x3961('0x10e')]=function(_0x4ad167,_0x867d0c){var _0x4c193b={};var _0x1a4136={};var _0x42dd55;var _0x1ca443;return db[_0x3961('0x35')]['findOne']({'where':{'id':_0x4ad167[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x867d0c,null))['then'](function(_0xd095de){if(_0xd095de){_0x42dd55=_0xd095de;_0x1a4136[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0x10f')][_0x3961('0x36')]);_0x1a4136['query']=_[_0x3961('0x4d')](_0x4ad167[_0x3961('0x3c')]);_0x1a4136[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x1a4136['model'],_0x1a4136[_0x3961('0x3c')]);_0x4c193b[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x1a4136[_0x3961('0x52')],qs[_0x3961('0x51')](_0x4ad167[_0x3961('0x3c')]['fields']));_0x4c193b['attributes']=_0x4c193b[_0x3961('0x50')][_0x3961('0x42')]?_0x4c193b[_0x3961('0x50')]:_0x1a4136[_0x3961('0x52')];_0x4c193b['order']=qs[_0x3961('0xc8')](_0x4ad167[_0x3961('0x3c')][_0x3961('0xc8')]);_0x4c193b[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_['pick'](_0x4ad167[_0x3961('0x3c')],_0x1a4136[_0x3961('0x4e')]));if(_0x4ad167[_0x3961('0x3c')]['filter']){_0x4c193b[_0x3961('0x3b')]=_['merge'](_0x4c193b[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x4c193b[_0x3961('0x50')],function(_0x3f823d){var _0x3ce064={};_0x3ce064[_0x3f823d]={'$like':'%'+_0x4ad167[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x3ce064;})});}_0x4c193b=_['merge']({},_0x4c193b,_0x4ad167[_0x3961('0x54')]);return _0x42dd55[_0x3961('0x10e')](_0x4c193b);}})['then'](function(_0x502eb5){if(_0x502eb5){_0x1ca443=_0x502eb5[_0x3961('0x42')];if(!_0x4ad167['query'][_0x3961('0xc9')]('nolimit')){_0x4c193b[_0x3961('0x24')]=qs['limit'](_0x4ad167[_0x3961('0x3c')][_0x3961('0x24')]);_0x4c193b[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x4ad167[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x42dd55[_0x3961('0x10e')](_0x4c193b);}})['then'](function(_0x3f084c){if(_0x3f084c){return _0x3f084c?{'count':_0x1ca443,'rows':_0x3f084c}:null;}})[_0x3961('0x12')](respondWithResult(_0x867d0c,null))[_0x3961('0x1c')](handleError(_0x867d0c,null));};exports[_0x3961('0x110')]=function(_0xceafe4,_0x34d8a6){return db['User']['find']({'where':{'id':_0xceafe4[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x34d8a6,null))['then'](function(_0x27a9d0){if(_0x27a9d0){var _0x11bc87=_0x27a9d0[_0x3961('0x111')]({'plain':!![]});return _0x27a9d0[_0x3961('0x110')](_0xceafe4['body'][_0x3961('0x5b')],_['omit'](_0xceafe4[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})[_0x3961('0x12')](function(){for(var _0x3bbce5=0x0;_0x3bbce5<_0xceafe4[_0x3961('0x57')][_0x3961('0x5b')][_0x3961('0x42')];_0x3bbce5++){var _0x2a3db7=[];var _0x3ccccf={};db[_0x3961('0x10f')][_0x3961('0x8f')]({'where':{'id':_0xceafe4[_0x3961('0x57')][_0x3961('0x5b')][_0x3bbce5]}})[_0x3961('0x12')](function(_0x1ca4c6){_0x3ccccf=_0x1ca4c6[_0x3961('0x45')];_0x2a3db7[_0x3961('0x43')](_0x1ca4c6[_0x3961('0xf3')]()[_0x3961('0x12')](function(_0x4678a8){for(var _0x29d9c2=0x0;_0x29d9c2<_0x4678a8[_0x3961('0x42')];_0x29d9c2++){_0x4678a8[_0x29d9c2][_0x3961('0x112')]('channel',_0x3961('0x113'));}return _0x4678a8;}));_0x2a3db7['push'](_0x1ca4c6['getChatQueues']()['then'](function(_0x4f43a8){for(var _0x4cbb8e=0x0;_0x4cbb8e<_0x4f43a8['length'];_0x4cbb8e++){_0x4f43a8[_0x4cbb8e][_0x3961('0x112')](_0x3961('0xa8'),_0x3961('0x114'));}return _0x4f43a8;}));_0x2a3db7[_0x3961('0x43')](_0x1ca4c6[_0x3961('0x115')]()[_0x3961('0x12')](function(_0x5c4f73){for(var _0x5edb11=0x0;_0x5edb11<_0x5c4f73[_0x3961('0x42')];_0x5edb11++){_0x5c4f73[_0x5edb11]['setDataValue'](_0x3961('0xa8'),'Mail');}return _0x5c4f73;}));_0x2a3db7[_0x3961('0x43')](_0x1ca4c6[_0x3961('0x116')]()['then'](function(_0xdd249c){for(var _0x309d6c=0x0;_0x309d6c<_0xdd249c['length'];_0x309d6c++){_0xdd249c[_0x309d6c]['setDataValue']('channel',_0x3961('0x117'));}return _0xdd249c;}));_0x2a3db7[_0x3961('0x43')](_0x1ca4c6['getWhatsappQueues']()['then'](function(_0x4cbf59){for(var _0x53bdac=0x0;_0x53bdac<_0x4cbf59['length'];_0x53bdac++){_0x4cbf59[_0x53bdac]['setDataValue'](_0x3961('0xa8'),'Whatsapp');}return _0x4cbf59;}));_0x2a3db7[_0x3961('0x43')](_0x1ca4c6[_0x3961('0x118')]()['then'](function(_0x7a86e6){for(var _0x590c41=0x0;_0x590c41<_0x7a86e6[_0x3961('0x42')];_0x590c41++){_0x7a86e6[_0x590c41][_0x3961('0x112')](_0x3961('0xa8'),_0x3961('0x119'));}return _0x7a86e6;}));_0x2a3db7['push'](_0x1ca4c6['getOpenchannelQueues']()['then'](function(_0xd920df){for(var _0x32aa7b=0x0;_0x32aa7b<_0xd920df[_0x3961('0x42')];_0x32aa7b++){_0xd920df[_0x32aa7b][_0x3961('0x112')](_0x3961('0xa8'),_0x3961('0x11a'));}return _0xd920df;}));return BPromise[_0x3961('0x49')](_0x2a3db7);})[_0x3961('0x12')](function(_0x18a386){var _0x50735a=_['flatten'](_0x18a386);_0x2a3db7=[];return db[_0x3961('0x64')][_0x3961('0x11b')](function(_0x194b60){for(var _0x400cfd=0x0;_0x400cfd<_0x50735a[_0x3961('0x42')];_0x400cfd++){_0x2a3db7[_0x3961('0x43')](_0x50735a[_0x400cfd][_0x3961('0x11c')](_0x11bc87['id']),{'transaction':_0x194b60});}return BPromise[_0x3961('0x49')](_0x2a3db7)['then'](function(){if(_0x11bc87[_0x3961('0x96')]){return BPromise['each'](_[_0x3961('0x2c')](_0x50735a,function(_0x364087){return _0x364087[_0x3961('0x11d')](_0x3961('0xa8'))===_0x3961('0x113');}),function(_0x14ce41){return db[_0x3961('0xa5')][_0x3961('0xa6')]({'membername':_0x11bc87[_0x3961('0x32')],'UserId':_0x11bc87['id'],'queue_name':_0x14ce41['name'],'VoiceQueueId':_0x14ce41['id'],'interface':_[_0x3961('0x62')](_0x11bc87['interface'])?util[_0x3961('0xe8')]('SIP/%s',_0x11bc87[_0x3961('0x32')]):_0x11bc87[_0x3961('0xa2')],'paused':_0x11bc87['voicePause']||![],'penalty':_0x11bc87[_0x3961('0xa4')]},{'transaction':_0x194b60});});}else{return;}})[_0x3961('0x12')](function(){for(var _0xcaa1eb=0x0;_0xcaa1eb<_0x50735a[_0x3961('0x42')];_0xcaa1eb++){var _0x4da5c0=_0x50735a[_0xcaa1eb][_0x3961('0x11d')]('channel');var _0x508a66=_0x4da5c0+_0x3961('0x9d');socket[_0x3961('0x9e')](_0x3961('0x2a')+_0x4da5c0+'Queue:save',{'UserId':_0x11bc87['id'],['queueField']:_0x50735a[_0xcaa1eb]['id']});}});});})['then'](function(){db[_0x3961('0x11e')][_0x3961('0x8f')]({'where':{'teamId':_0x3ccccf['id']}})[_0x3961('0x12')](function(_0x5b37cf){if(_0x5b37cf){db[_0x3961('0x11f')][_0x3961('0x7a')]({'UserId':_0xceafe4[_0x3961('0x4b')]['id'],'VoicePrefixId':_0x5b37cf[_0x3961('0x120')]});}});});}});}})[_0x3961('0x12')](respondWithStatusCode(_0x34d8a6,null))['catch'](handleError(_0x34d8a6,null));};exports[_0x3961('0x121')]=function(_0x1d53bf,_0x1d7619){return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x1d53bf['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x1d7619,null))[_0x3961('0x12')](function(_0x174ff3){if(_0x174ff3){var _0xc267b1=_0x174ff3[_0x3961('0x111')]({'plain':!![]});var _0x48e809=_0x1d53bf[_0x3961('0x3c')][_0x3961('0x5b')];return _0x174ff3[_0x3961('0x121')](_0x48e809)[_0x3961('0x12')](function(){for(var _0x50b1e5=0x0;_0x50b1e5<_0x48e809[_0x3961('0x42')];_0x50b1e5++){var _0x446362=[];var _0x1c0a9d={};db['Team'][_0x3961('0x8f')]({'where':{'id':_0x48e809[_0x50b1e5]}})['then'](function(_0x562744){_0x1c0a9d=_0x562744['dataValues'];_0x446362['push'](_0x562744['getVoiceQueues']()[_0x3961('0x12')](function(_0x4818c9){for(var _0x39d546=0x0;_0x39d546<_0x4818c9[_0x3961('0x42')];_0x39d546++){_0x4818c9[_0x39d546][_0x3961('0x112')](_0x3961('0xa8'),'Voice');}return _0x4818c9;}));_0x446362[_0x3961('0x43')](_0x562744[_0x3961('0x122')]()[_0x3961('0x12')](function(_0x4e9de3){for(var _0x178345=0x0;_0x178345<_0x4e9de3[_0x3961('0x42')];_0x178345++){_0x4e9de3[_0x178345][_0x3961('0x112')](_0x3961('0xa8'),'Chat');}return _0x4e9de3;}));_0x446362['push'](_0x562744[_0x3961('0x115')]()[_0x3961('0x12')](function(_0x457952){for(var _0x596cc2=0x0;_0x596cc2<_0x457952['length'];_0x596cc2++){_0x457952[_0x596cc2]['setDataValue'](_0x3961('0xa8'),_0x3961('0x123'));}return _0x457952;}));_0x446362['push'](_0x562744[_0x3961('0x116')]()[_0x3961('0x12')](function(_0x33d1e4){for(var _0x18cab5=0x0;_0x18cab5<_0x33d1e4['length'];_0x18cab5++){_0x33d1e4[_0x18cab5]['setDataValue']('channel',_0x3961('0x117'));}return _0x33d1e4;}));_0x446362['push'](_0x562744[_0x3961('0x124')]()[_0x3961('0x12')](function(_0x35d6ad){for(var _0x399a39=0x0;_0x399a39<_0x35d6ad[_0x3961('0x42')];_0x399a39++){_0x35d6ad[_0x399a39][_0x3961('0x112')](_0x3961('0xa8'),'Whatsapp');}return _0x35d6ad;}));_0x446362['push'](_0x562744[_0x3961('0x118')]()[_0x3961('0x12')](function(_0x5be9b9){for(var _0x1ddc61=0x0;_0x1ddc61<_0x5be9b9['length'];_0x1ddc61++){_0x5be9b9[_0x1ddc61][_0x3961('0x112')](_0x3961('0xa8'),_0x3961('0x119'));}return _0x5be9b9;}));_0x446362[_0x3961('0x43')](_0x562744[_0x3961('0x125')]()[_0x3961('0x12')](function(_0x4c55c7){for(var _0x578a65=0x0;_0x578a65<_0x4c55c7['length'];_0x578a65++){_0x4c55c7[_0x578a65]['setDataValue'](_0x3961('0xa8'),'Openchannel');}return _0x4c55c7;}));return BPromise['all'](_0x446362);})[_0x3961('0x12')](function(_0x42b990){var _0x3ecfca=_[_0x3961('0x126')](_0x42b990);_0x446362=[];return db[_0x3961('0x64')][_0x3961('0x11b')](function(_0x1c4cd3){for(var _0x7abac=0x0;_0x7abac<_0x3ecfca[_0x3961('0x42')];_0x7abac++){_0x446362[_0x3961('0x43')](_0x3ecfca[_0x7abac][_0x3961('0x127')](_0xc267b1['id']),{'transaction':_0x1c4cd3});}return BPromise[_0x3961('0x49')](_0x446362)['then'](function(){if(_0xc267b1[_0x3961('0x96')]){return BPromise[_0x3961('0x83')](_['filter'](_0x3ecfca,function(_0x55fadb){return _0x55fadb[_0x3961('0x11d')](_0x3961('0xa8'))===_0x3961('0x113');}),function(_0x3c17e7){return db['UserVoiceQueueRt'][_0x3961('0x27')]({'where':{'VoiceQueueId':_0x3c17e7['id'],'UserId':_0xc267b1['id']},'transaction':_0x1c4cd3});});}else{return;}})[_0x3961('0x12')](function(){db[_0x3961('0x11e')][_0x3961('0x8f')]({'where':{'teamId':_0x1c0a9d['id']}})[_0x3961('0x12')](function(_0x47a515){if(_0x47a515){return db[_0x3961('0x11f')]['destroy']({'where':{'UserId':_0xc267b1['id'],'VoicePrefixId':_0x47a515[_0x3961('0x45')]['VoicePrefixId']}});}});})[_0x3961('0x12')](function(){for(var _0x52d1cc=0x0;_0x52d1cc<_0x3ecfca[_0x3961('0x42')];_0x52d1cc++){var _0x5d53d8=_0x3ecfca[_0x52d1cc]['getDataValue']('channel');var _0x13f0aa=_0x5d53d8+_0x3961('0x9d');socket[_0x3961('0x9e')](_0x3961('0x2a')+_0x5d53d8+_0x3961('0xac'),{'UserId':_0xc267b1['id'],['queueField']:_0x3ecfca[_0x52d1cc]['id']});}});});});}});}})[_0x3961('0x12')](respondWithStatusCode(_0x1d7619,null))[_0x3961('0x1c')](handleError(_0x1d7619,null));};exports['getLists']=function(_0x24a2a9,_0x48f338){var _0x27cab0={};var _0x5a383a={};var _0x2963f3;var _0x4f9338;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x24a2a9['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x48f338,null))[_0x3961('0x12')](function(_0x129e51){if(_0x129e51){_0x2963f3=_0x129e51;_0x5a383a[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0x128')]['rawAttributes']);_0x5a383a[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x24a2a9[_0x3961('0x3c')]);_0x5a383a[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x5a383a[_0x3961('0x52')],_0x5a383a['query']);_0x27cab0['attributes']=_[_0x3961('0x4f')](_0x5a383a[_0x3961('0x52')],qs[_0x3961('0x51')](_0x24a2a9[_0x3961('0x3c')][_0x3961('0x51')]));_0x27cab0['attributes']=_0x27cab0[_0x3961('0x50')][_0x3961('0x42')]?_0x27cab0[_0x3961('0x50')]:_0x5a383a[_0x3961('0x52')];_0x27cab0['order']=qs['sort'](_0x24a2a9[_0x3961('0x3c')][_0x3961('0xc8')]);_0x27cab0[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_['pick'](_0x24a2a9[_0x3961('0x3c')],_0x5a383a['filters']));if(_0x24a2a9['query']['filter']){_0x27cab0[_0x3961('0x3b')]=_['merge'](_0x27cab0[_0x3961('0x3b')],{'$or':_['map'](_0x27cab0[_0x3961('0x50')],function(_0x6a871b){var _0x4c132a={};_0x4c132a[_0x6a871b]={'$like':'%'+_0x24a2a9['query'][_0x3961('0x2c')]+'%'};return _0x4c132a;})});}_0x27cab0=_[_0x3961('0x53')]({},_0x27cab0,_0x24a2a9[_0x3961('0x54')]);return _0x2963f3[_0x3961('0x129')](_0x27cab0);}})[_0x3961('0x12')](function(_0x3a2798){if(_0x3a2798){_0x4f9338=_0x3a2798[_0x3961('0x42')];if(!_0x24a2a9[_0x3961('0x3c')][_0x3961('0xc9')]('nolimit')){_0x27cab0[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x24a2a9[_0x3961('0x3c')]['limit']);_0x27cab0[_0x3961('0x21')]=qs['offset'](_0x24a2a9['query'][_0x3961('0x21')]);}return _0x2963f3[_0x3961('0x129')](_0x27cab0);}})[_0x3961('0x12')](function(_0x2fe951){if(_0x2fe951){return _0x2fe951?{'count':_0x4f9338,'rows':_0x2fe951}:null;}})[_0x3961('0x12')](respondWithResult(_0x48f338,null))[_0x3961('0x1c')](handleError(_0x48f338,null));};exports[_0x3961('0x12a')]=function(_0x41784d,_0x17843e){var _0xef3bf1={};var _0x5227d0={};var _0x299498;var _0x38f79d;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x41784d['params']['id']}})['then'](handleEntityNotFound(_0x17843e,null))['then'](function(_0x57af14){if(_0x57af14){_0x299498=_0x57af14;_0x5227d0[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0x35')][_0x3961('0x36')]);_0x5227d0[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x41784d[_0x3961('0x3c')]);_0x5227d0[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x5227d0['model'],_0x5227d0['query']);_0xef3bf1[_0x3961('0x50')]=_['intersection'](_0x5227d0[_0x3961('0x52')],qs[_0x3961('0x51')](_0x41784d[_0x3961('0x3c')][_0x3961('0x51')]));_0xef3bf1[_0x3961('0x50')]=_0xef3bf1[_0x3961('0x50')][_0x3961('0x42')]?_0xef3bf1[_0x3961('0x50')]:_0x5227d0[_0x3961('0x52')];_0xef3bf1['order']=qs[_0x3961('0xc8')](_0x41784d['query'][_0x3961('0xc8')]);_0xef3bf1[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x41784d[_0x3961('0x3c')],_0x5227d0['filters']));if(_0x41784d[_0x3961('0x3c')]['filter']){_0xef3bf1[_0x3961('0x3b')]=_[_0x3961('0x53')](_0xef3bf1[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0xef3bf1['attributes'],function(_0x498290){var _0x33296f={};_0x33296f[_0x498290]={'$like':'%'+_0x41784d[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x33296f;})});}_0xef3bf1[_0x3961('0x52')]=db[_0x3961('0x35')];_0xef3bf1['as']='Agents';_0xef3bf1=_[_0x3961('0x53')]({},_0xef3bf1,_0x41784d[_0x3961('0x54')]);return _0x299498['getVoiceQueues']({'include':[_0xef3bf1]});}})['then'](function(_0x1256b2){if(_0x1256b2){var _0xa13b1c={},_0xfa7e7c=[],_0x24f84c=0x0;for(var _0x5d9ecf=0x0;_0x5d9ecf<_0x1256b2[_0x3961('0x42')];_0x5d9ecf+=0x1){for(var _0x5985c3=0x0,_0x40c8d3;_0x5985c3<_0x1256b2[_0x5d9ecf][_0x3961('0x7b')][_0x3961('0x42')];_0x5985c3+=0x1){_0x40c8d3=_0x1256b2[_0x5d9ecf][_0x3961('0x7b')][_0x5985c3][_0x3961('0x111')]({'plain':!![]});_0xa13b1c[_0x40c8d3['id']]=_0x40c8d3;}}_0xa13b1c=_[_0x3961('0x12b')](_0xa13b1c);for(var _0x58cfd8=qs[_0x3961('0x21')](_0x41784d['query']['offset']);_0x58cfd8<_0xa13b1c[_0x3961('0x42')]&&_0xfa7e7c[_0x3961('0x42')]<qs[_0x3961('0x24')](_0x41784d['query'][_0x3961('0x24')]);_0x58cfd8+=0x1){if(_0xa13b1c[_0x58cfd8]){_0xfa7e7c[_0x3961('0x43')](_0xa13b1c[_0x58cfd8]);}}return{'count':_0xa13b1c[_0x3961('0x42')],'rows':_0xfa7e7c};}})[_0x3961('0x12')](respondWithResult(_0x17843e,null))[_0x3961('0x1c')](handleError(_0x17843e,null));};exports[_0x3961('0x27')]=function(_0x36472d,_0x39395b){if(_0x36472d['user']['id']==_0x36472d[_0x3961('0x4b')]['id']){return _0x39395b['status'](0x1f4)['send']({'message':_0x3961('0x12c')});}return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x36472d[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x39395b,null))[_0x3961('0x12')](removeEntity(_0x39395b,null))[_0x3961('0x1c')](handleError(_0x39395b,null));};exports['addChatInteractions']=function(_0x3250c7,_0x1459a7){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x3250c7[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1459a7,null))[_0x3961('0x12')](function(_0x5647df){if(_0x5647df){return _0x5647df[_0x3961('0x12d')](_0x3250c7[_0x3961('0x57')][_0x3961('0x5b')],_[_0x3961('0x5a')](_0x3250c7[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})['spread'](function(){for(var _0x12d919=0x0;_0x12d919<_0x3250c7['body'][_0x3961('0x5b')][_0x3961('0x42')];_0x12d919+=0x1){socket[_0x3961('0x9e')](_0x3961('0x12e'),{'ChatInteractionId':Number(_0x3250c7[_0x3961('0x57')][_0x3961('0x5b')][_0x12d919]),'UserId':Number(_0x3250c7[_0x3961('0x4b')]['id'])});}return _0x3250c7[_0x3961('0x57')]['ids'];});}})[_0x3961('0x12')](respondWithResult(_0x1459a7,null))[_0x3961('0x1c')](handleError(_0x1459a7,null));};exports['removeChatInteractions']=function(_0x445d77,_0x2f1a9e){return db[_0x3961('0x35')]['find']({'where':{'id':_0x445d77['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x2f1a9e,null))[_0x3961('0x12')](function(_0x1c0b02){if(_0x1c0b02){return _0x1c0b02[_0x3961('0x12f')](_0x445d77['query']['ids'])['then'](function(){if(_[_0x3961('0x130')](_0x445d77[_0x3961('0x3c')][_0x3961('0x5b')])){for(var _0x3628eb=0x0;_0x3628eb<_0x445d77[_0x3961('0x3c')]['ids']['length'];_0x3628eb+=0x1){socket[_0x3961('0x9e')](_0x3961('0x131'),{'ChatInteractionId':Number(_0x445d77[_0x3961('0x3c')][_0x3961('0x5b')][_0x3628eb]),'UserId':Number(_0x445d77['params']['id'])});}}else{socket[_0x3961('0x9e')](_0x3961('0x131'),{'ChatInteractionId':Number(_0x445d77['query'][_0x3961('0x5b')]),'UserId':Number(_0x445d77['params']['id'])});}});}})[_0x3961('0x12')](respondWithStatusCode(_0x2f1a9e,null))[_0x3961('0x1c')](handleError(_0x2f1a9e,null));};exports[_0x3961('0x132')]=function(_0x3678b6,_0x4d20c8){return db['User'][_0x3961('0x31')]({'where':{'id':_0x3678b6[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4d20c8,null))[_0x3961('0x12')](function(_0x725590){if(_0x725590){return _0x725590[_0x3961('0x132')](_0x3678b6[_0x3961('0x57')][_0x3961('0x5b')],_['omit'](_0x3678b6[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})[_0x3961('0x9c')](function(){for(var _0x5c0059=0x0;_0x5c0059<_0x3678b6[_0x3961('0x57')][_0x3961('0x5b')][_0x3961('0x42')];_0x5c0059+=0x1){socket[_0x3961('0x9e')](_0x3961('0x133'),{'MailInteractionId':Number(_0x3678b6[_0x3961('0x57')][_0x3961('0x5b')][_0x5c0059]),'UserId':Number(_0x3678b6['params']['id'])});}return _0x3678b6[_0x3961('0x57')][_0x3961('0x5b')];});}})[_0x3961('0x12')](respondWithResult(_0x4d20c8,null))[_0x3961('0x1c')](handleError(_0x4d20c8,null));};exports[_0x3961('0x134')]=function(_0x300591,_0x2b4317){return db['User']['find']({'where':{'id':_0x300591['params']['id']}})['then'](handleEntityNotFound(_0x2b4317,null))['then'](function(_0x348e41){if(_0x348e41){return _0x348e41[_0x3961('0x134')](_0x300591[_0x3961('0x3c')][_0x3961('0x5b')])[_0x3961('0x12')](function(){if(_[_0x3961('0x130')](_0x300591[_0x3961('0x3c')][_0x3961('0x5b')])){for(var _0x238ee8=0x0;_0x238ee8<_0x300591[_0x3961('0x3c')][_0x3961('0x5b')][_0x3961('0x42')];_0x238ee8+=0x1){socket[_0x3961('0x9e')](_0x3961('0x135'),{'MailInteractionId':Number(_0x300591[_0x3961('0x3c')][_0x3961('0x5b')][_0x238ee8]),'UserId':Number(_0x300591[_0x3961('0x4b')]['id'])});}}else{socket['emit'](_0x3961('0x135'),{'MailInteractionId':Number(_0x300591[_0x3961('0x3c')][_0x3961('0x5b')]),'UserId':Number(_0x300591[_0x3961('0x4b')]['id'])});}});}})[_0x3961('0x12')](respondWithStatusCode(_0x2b4317,null))[_0x3961('0x1c')](handleError(_0x2b4317,null));};exports[_0x3961('0x136')]=function(_0x1a42f2,_0x4cd34a){return db['User'][_0x3961('0x31')]({'where':{'id':_0x1a42f2['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x4cd34a,null))[_0x3961('0x12')](function(_0x582bec){if(_0x582bec){return _0x582bec[_0x3961('0x136')](_0x1a42f2['body'][_0x3961('0x5b')],_['omit'](_0x1a42f2[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})[_0x3961('0x9c')](function(){for(var _0x5da3c4=0x0;_0x5da3c4<_0x1a42f2[_0x3961('0x57')][_0x3961('0x5b')][_0x3961('0x42')];_0x5da3c4+=0x1){socket['emit']('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x1a42f2[_0x3961('0x57')][_0x3961('0x5b')][_0x5da3c4]),'UserId':Number(_0x1a42f2[_0x3961('0x4b')]['id'])});}return _0x1a42f2[_0x3961('0x57')]['ids'];});}})[_0x3961('0x12')](respondWithResult(_0x4cd34a,null))[_0x3961('0x1c')](handleError(_0x4cd34a,null));};exports[_0x3961('0x137')]=function(_0x3e6a43,_0x571113){return db[_0x3961('0x35')]['find']({'where':{'id':_0x3e6a43[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x571113,null))[_0x3961('0x12')](function(_0x4811c9){if(_0x4811c9){return _0x4811c9['removeFaxInteractions'](_0x3e6a43['query']['ids'])[_0x3961('0x12')](function(){if(_[_0x3961('0x130')](_0x3e6a43[_0x3961('0x3c')][_0x3961('0x5b')])){for(var _0x1d23e8=0x0;_0x1d23e8<_0x3e6a43[_0x3961('0x3c')][_0x3961('0x5b')][_0x3961('0x42')];_0x1d23e8+=0x1){socket[_0x3961('0x9e')](_0x3961('0x138'),{'FaxInteractionId':Number(_0x3e6a43[_0x3961('0x3c')][_0x3961('0x5b')][_0x1d23e8]),'UserId':Number(_0x3e6a43[_0x3961('0x4b')]['id'])});}}else{socket[_0x3961('0x9e')](_0x3961('0x138'),{'FaxInteractionId':Number(_0x3e6a43[_0x3961('0x3c')][_0x3961('0x5b')]),'UserId':Number(_0x3e6a43[_0x3961('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x571113,null))[_0x3961('0x1c')](handleError(_0x571113,null));};exports[_0x3961('0x139')]=function(_0x2bd0cd,_0x33872d){return db['User']['find']({'where':{'id':_0x2bd0cd[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x33872d,null))[_0x3961('0x12')](function(_0x50beaf){if(_0x50beaf){return _0x50beaf[_0x3961('0x139')](_0x2bd0cd[_0x3961('0x57')][_0x3961('0x5b')],_['omit'](_0x2bd0cd[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})[_0x3961('0x9c')](function(){for(var _0x35eae9=0x0;_0x35eae9<_0x2bd0cd[_0x3961('0x57')]['ids']['length'];_0x35eae9+=0x1){socket[_0x3961('0x9e')](_0x3961('0x13a'),{'SmsInteractionId':Number(_0x2bd0cd[_0x3961('0x57')]['ids'][_0x35eae9]),'UserId':Number(_0x2bd0cd[_0x3961('0x4b')]['id'])});}return _0x2bd0cd[_0x3961('0x57')][_0x3961('0x5b')];});}})[_0x3961('0x12')](respondWithResult(_0x33872d,null))['catch'](handleError(_0x33872d,null));};exports[_0x3961('0x13b')]=function(_0x44c970,_0x11ba11){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x44c970[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x11ba11,null))[_0x3961('0x12')](function(_0x2ee57f){if(_0x2ee57f){return _0x2ee57f[_0x3961('0x13b')](_0x44c970['query'][_0x3961('0x5b')])[_0x3961('0x12')](function(){if(_['isArray'](_0x44c970[_0x3961('0x3c')][_0x3961('0x5b')])){for(var _0x3b6f9d=0x0;_0x3b6f9d<_0x44c970[_0x3961('0x3c')][_0x3961('0x5b')][_0x3961('0x42')];_0x3b6f9d+=0x1){socket[_0x3961('0x9e')](_0x3961('0x13c'),{'SmsInteractionId':Number(_0x44c970[_0x3961('0x3c')][_0x3961('0x5b')][_0x3b6f9d]),'UserId':Number(_0x44c970[_0x3961('0x4b')]['id'])});}}else{socket[_0x3961('0x9e')](_0x3961('0x13c'),{'SmsInteractionId':Number(_0x44c970[_0x3961('0x3c')][_0x3961('0x5b')]),'UserId':Number(_0x44c970[_0x3961('0x4b')]['id'])});}});}})[_0x3961('0x12')](respondWithStatusCode(_0x11ba11,null))[_0x3961('0x1c')](handleError(_0x11ba11,null));};exports[_0x3961('0x13d')]=function(_0x44a1ee,_0x3d5601){return db[_0x3961('0x35')]['find']({'where':{'id':_0x44a1ee['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x3d5601,null))['then'](function(_0x27aade){if(_0x27aade){return _0x27aade['addOpenchannelInteractions'](_0x44a1ee[_0x3961('0x57')]['ids'],_[_0x3961('0x5a')](_0x44a1ee[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})[_0x3961('0x9c')](function(){for(var _0xa9817a=0x0;_0xa9817a<_0x44a1ee[_0x3961('0x57')][_0x3961('0x5b')][_0x3961('0x42')];_0xa9817a+=0x1){socket[_0x3961('0x9e')](_0x3961('0x13e'),{'OpenchannelInteractionId':Number(_0x44a1ee[_0x3961('0x57')][_0x3961('0x5b')][_0xa9817a]),'UserId':Number(_0x44a1ee[_0x3961('0x4b')]['id'])});}return _0x44a1ee[_0x3961('0x57')][_0x3961('0x5b')];});}})[_0x3961('0x12')](respondWithResult(_0x3d5601,null))[_0x3961('0x1c')](handleError(_0x3d5601,null));};exports[_0x3961('0x13f')]=function(_0x11c2b,_0x55643e){return db['User'][_0x3961('0x31')]({'where':{'id':_0x11c2b['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x55643e,null))[_0x3961('0x12')](function(_0x4715cd){if(_0x4715cd){return _0x4715cd[_0x3961('0x13f')](_0x11c2b[_0x3961('0x3c')]['ids'])[_0x3961('0x12')](function(){if(_[_0x3961('0x130')](_0x11c2b[_0x3961('0x3c')][_0x3961('0x5b')])){for(var _0x1ee97d=0x0;_0x1ee97d<_0x11c2b[_0x3961('0x3c')][_0x3961('0x5b')]['length'];_0x1ee97d+=0x1){socket[_0x3961('0x9e')](_0x3961('0x140'),{'OpenchannelInteractionId':Number(_0x11c2b[_0x3961('0x3c')][_0x3961('0x5b')][_0x1ee97d]),'UserId':Number(_0x11c2b[_0x3961('0x4b')]['id'])});}}else{socket[_0x3961('0x9e')](_0x3961('0x140'),{'OpenchannelInteractionId':Number(_0x11c2b[_0x3961('0x3c')][_0x3961('0x5b')]),'UserId':Number(_0x11c2b[_0x3961('0x4b')]['id'])});}});}})[_0x3961('0x12')](respondWithStatusCode(_0x55643e,null))[_0x3961('0x1c')](handleError(_0x55643e,null));};exports[_0x3961('0x141')]=function(_0x15827c,_0x58885c){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x15827c[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x58885c,null))[_0x3961('0x12')](function(_0x2af267){if(_0x2af267){return _0x2af267[_0x3961('0x141')](_0x15827c['body'][_0x3961('0x5b')],_[_0x3961('0x5a')](_0x15827c[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{})[_0x3961('0x9c')](function(){for(var _0x2f93f3=0x0;_0x2f93f3<_0x15827c[_0x3961('0x57')][_0x3961('0x5b')][_0x3961('0x42')];_0x2f93f3+=0x1){socket[_0x3961('0x9e')](_0x3961('0x142'),{'WhatsappInteractionId':Number(_0x15827c[_0x3961('0x57')][_0x3961('0x5b')][_0x2f93f3]),'UserId':Number(_0x15827c['params']['id'])});}return _0x15827c[_0x3961('0x57')]['ids'];});}})[_0x3961('0x12')](respondWithResult(_0x58885c,null))['catch'](handleError(_0x58885c,null));};exports[_0x3961('0x143')]=function(_0x1e76c3,_0xf17df3){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x1e76c3[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0xf17df3,null))[_0x3961('0x12')](function(_0x1906d5){if(_0x1906d5){return _0x1906d5[_0x3961('0x143')](_0x1e76c3['query']['ids']);}})['then'](respondWithStatusCode(_0xf17df3,null))[_0x3961('0x1c')](handleError(_0xf17df3,null));};exports[_0x3961('0x144')]=function(_0x5d7d96,_0x3abc8f){var _0x4754d6={};var _0x1ffb30={};var _0x4a8976;var _0x42afed;return db[_0x3961('0x35')]['findOne']({'where':{'id':_0x5d7d96[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x3abc8f,null))[_0x3961('0x12')](function(_0x1c91d3){if(_0x1c91d3){_0x4a8976=_0x1c91d3;_0x1ffb30[_0x3961('0x52')]=_[_0x3961('0x4d')](db['VoicePrefix'][_0x3961('0x36')]);_0x1ffb30['query']=_[_0x3961('0x4d')](_0x5d7d96[_0x3961('0x3c')]);_0x1ffb30[_0x3961('0x4e')]=_['intersection'](_0x1ffb30[_0x3961('0x52')],_0x1ffb30['query']);_0x4754d6[_0x3961('0x50')]=_['intersection'](_0x1ffb30[_0x3961('0x52')],qs['fields'](_0x5d7d96[_0x3961('0x3c')][_0x3961('0x51')]));_0x4754d6[_0x3961('0x50')]=_0x4754d6[_0x3961('0x50')][_0x3961('0x42')]?_0x4754d6[_0x3961('0x50')]:_0x1ffb30[_0x3961('0x52')];_0x4754d6[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x5d7d96[_0x3961('0x3c')]['sort']);_0x4754d6[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x5d7d96[_0x3961('0x3c')],_0x1ffb30[_0x3961('0x4e')]));if(_0x5d7d96[_0x3961('0x3c')][_0x3961('0x2c')]){_0x4754d6[_0x3961('0x3b')]=_['merge'](_0x4754d6[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x4754d6[_0x3961('0x50')],function(_0x4400c5){var _0x4260a4={};_0x4260a4[_0x4400c5]={'$like':'%'+_0x5d7d96['query'][_0x3961('0x2c')]+'%'};return _0x4260a4;})});}_0x4754d6=_[_0x3961('0x53')]({},_0x4754d6,_0x5d7d96['options']);return _0x4a8976['getVoicePrefixes'](_0x4754d6);}})[_0x3961('0x12')](function(_0x1c6fb2){if(_0x1c6fb2){_0x42afed=_0x1c6fb2[_0x3961('0x42')];if(!_0x5d7d96[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x4754d6['limit']=qs['limit'](_0x5d7d96[_0x3961('0x3c')][_0x3961('0x24')]);_0x4754d6[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x5d7d96[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x4a8976['getVoicePrefixes'](_0x4754d6);}})[_0x3961('0x12')](function(_0xce8a4){if(_0xce8a4){return _0xce8a4?{'count':_0x42afed,'rows':_0xce8a4}:null;}})['then'](respondWithResult(_0x3abc8f,null))[_0x3961('0x1c')](handleError(_0x3abc8f,null));};exports[_0x3961('0x145')]=function(_0x5b1fe3,_0x1ccb39){var _0x4352ab={};var _0x44558d={};var _0x87d2fa;var _0x419a4f;return db['User'][_0x3961('0x8f')]({'where':{'id':_0x5b1fe3['params']['id']}})['then'](handleEntityNotFound(_0x1ccb39,null))[_0x3961('0x12')](function(_0x4a6b7a){if(_0x4a6b7a){_0x87d2fa=_0x4a6b7a;_0x44558d['model']=_[_0x3961('0x4d')](db[_0x3961('0x146')][_0x3961('0x36')]);_0x44558d['query']=_['keys'](_0x5b1fe3[_0x3961('0x3c')]);_0x44558d[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x44558d[_0x3961('0x52')],_0x44558d[_0x3961('0x3c')]);_0x4352ab[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x44558d[_0x3961('0x52')],qs[_0x3961('0x51')](_0x5b1fe3[_0x3961('0x3c')][_0x3961('0x51')]));_0x4352ab[_0x3961('0x50')]=_0x4352ab[_0x3961('0x50')][_0x3961('0x42')]?_0x4352ab[_0x3961('0x50')]:_0x44558d[_0x3961('0x52')];_0x4352ab[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x5b1fe3[_0x3961('0x3c')][_0x3961('0xc8')]);_0x4352ab[_0x3961('0x3b')]=qs['filters'](_['pick'](_0x5b1fe3[_0x3961('0x3c')],_0x44558d[_0x3961('0x4e')]));if(_0x5b1fe3[_0x3961('0x3c')][_0x3961('0x2c')]){_0x4352ab[_0x3961('0x3b')]=_['merge'](_0x4352ab[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x4352ab['attributes'],function(_0x1ac71c){var _0x4bfbb7={};_0x4bfbb7[_0x1ac71c]={'$like':'%'+_0x5b1fe3[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x4bfbb7;})});}_0x4352ab=_[_0x3961('0x53')]({},_0x4352ab,_0x5b1fe3['options']);return _0x87d2fa['getFaxAccounts'](_0x4352ab);}})[_0x3961('0x12')](function(_0x26e47c){if(_0x26e47c){_0x419a4f=_0x26e47c[_0x3961('0x42')];if(!_0x5b1fe3[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x4352ab['limit']=qs[_0x3961('0x24')](_0x5b1fe3['query'][_0x3961('0x24')]);_0x4352ab[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x5b1fe3[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x87d2fa[_0x3961('0x145')](_0x4352ab);}})[_0x3961('0x12')](function(_0x282611){if(_0x282611){return _0x282611?{'count':_0x419a4f,'rows':_0x282611}:null;}})[_0x3961('0x12')](respondWithResult(_0x1ccb39,null))['catch'](handleError(_0x1ccb39,null));};exports[_0x3961('0x147')]=function(_0x16f6c4,_0x40fec6){return db[_0x3961('0x35')]['find']({'where':{'id':_0x16f6c4[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x40fec6,null))['then'](function(_0x39382b){if(_0x39382b){return _0x39382b['addFaxAccounts'](_0x16f6c4[_0x3961('0x57')][_0x3961('0x5b')],_[_0x3961('0x5a')](_0x16f6c4[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x40fec6,null))['catch'](handleError(_0x40fec6,null));};exports[_0x3961('0x148')]=function(_0x1579ae,_0x8b6155){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x1579ae[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x8b6155,null))[_0x3961('0x12')](function(_0x56af23){if(_0x56af23){return _0x56af23[_0x3961('0x148')](_0x1579ae[_0x3961('0x3c')][_0x3961('0x5b')]);}})['then'](respondWithStatusCode(_0x8b6155,null))['catch'](handleError(_0x8b6155,null));};exports['getMailAccounts']=function(_0x2173ea,_0x5dc535){var _0x42aa0e={};var _0x4d486c={};var _0x30171a;var _0x5a0eef;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x2173ea['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x5dc535,null))[_0x3961('0x12')](function(_0x39e240){if(_0x39e240){_0x30171a=_0x39e240;_0x4d486c[_0x3961('0x52')]=_[_0x3961('0x4d')](db['MailAccount']['rawAttributes']);_0x4d486c[_0x3961('0x3c')]=_['keys'](_0x2173ea['query']);_0x4d486c['filters']=_[_0x3961('0x4f')](_0x4d486c[_0x3961('0x52')],_0x4d486c[_0x3961('0x3c')]);_0x42aa0e[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x4d486c[_0x3961('0x52')],qs[_0x3961('0x51')](_0x2173ea[_0x3961('0x3c')][_0x3961('0x51')]));_0x42aa0e[_0x3961('0x50')]=_0x42aa0e[_0x3961('0x50')][_0x3961('0x42')]?_0x42aa0e['attributes']:_0x4d486c[_0x3961('0x52')];_0x42aa0e[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x2173ea[_0x3961('0x3c')]['sort']);_0x42aa0e['where']=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x2173ea[_0x3961('0x3c')],_0x4d486c['filters']));if(_0x2173ea[_0x3961('0x3c')][_0x3961('0x2c')]){_0x42aa0e['where']=_[_0x3961('0x53')](_0x42aa0e[_0x3961('0x3b')],{'$or':_['map'](_0x42aa0e['attributes'],function(_0x4f1e1c){var _0x4e7334={};_0x4e7334[_0x4f1e1c]={'$like':'%'+_0x2173ea['query'][_0x3961('0x2c')]+'%'};return _0x4e7334;})});}_0x42aa0e=_[_0x3961('0x53')]({},_0x42aa0e,_0x2173ea[_0x3961('0x54')]);return _0x30171a[_0x3961('0x149')](_0x42aa0e);}})[_0x3961('0x12')](function(_0x2fed4d){if(_0x2fed4d){_0x5a0eef=_0x2fed4d[_0x3961('0x42')];if(!_0x2173ea[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x42aa0e[_0x3961('0x24')]=qs['limit'](_0x2173ea[_0x3961('0x3c')][_0x3961('0x24')]);_0x42aa0e[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x2173ea['query']['offset']);}return _0x30171a[_0x3961('0x149')](_0x42aa0e);}})[_0x3961('0x12')](function(_0xe92cba){if(_0xe92cba){return _0xe92cba?{'count':_0x5a0eef,'rows':_0xe92cba}:null;}})[_0x3961('0x12')](respondWithResult(_0x5dc535,null))['catch'](handleError(_0x5dc535,null));};exports['addMailAccounts']=function(_0x1b492c,_0x373781){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x1b492c['params']['id']}})['then'](handleEntityNotFound(_0x373781,null))[_0x3961('0x12')](function(_0x47cf37){if(_0x47cf37){return _0x47cf37[_0x3961('0x14a')](_0x1b492c[_0x3961('0x57')][_0x3961('0x5b')],_['omit'](_0x1b492c[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x373781,null))['catch'](handleError(_0x373781,null));};exports['removeMailAccounts']=function(_0x9e9fd3,_0x4c0d22){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x9e9fd3[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4c0d22,null))[_0x3961('0x12')](function(_0x33d547){if(_0x33d547){return _0x33d547['removeMailAccounts'](_0x9e9fd3[_0x3961('0x3c')]['ids']);}})[_0x3961('0x12')](respondWithStatusCode(_0x4c0d22,null))[_0x3961('0x1c')](handleError(_0x4c0d22,null));};exports[_0x3961('0x14b')]=function(_0x172336,_0x44979c){var _0x5d69ca={};var _0x237aec={};var _0x2dc3fc;var _0x5c651c;return db[_0x3961('0x35')]['findOne']({'where':{'id':_0x172336['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x44979c,null))[_0x3961('0x12')](function(_0xab87c5){if(_0xab87c5){_0x2dc3fc=_0xab87c5;_0x237aec[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0x14c')][_0x3961('0x36')]);_0x237aec[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x172336[_0x3961('0x3c')]);_0x237aec['filters']=_[_0x3961('0x4f')](_0x237aec['model'],_0x237aec[_0x3961('0x3c')]);_0x5d69ca[_0x3961('0x50')]=_[_0x3961('0x4f')](_0x237aec[_0x3961('0x52')],qs[_0x3961('0x51')](_0x172336[_0x3961('0x3c')][_0x3961('0x51')]));_0x5d69ca[_0x3961('0x50')]=_0x5d69ca['attributes'][_0x3961('0x42')]?_0x5d69ca[_0x3961('0x50')]:_0x237aec[_0x3961('0x52')];_0x5d69ca['order']=qs[_0x3961('0xc8')](_0x172336[_0x3961('0x3c')]['sort']);_0x5d69ca[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x172336['query'],_0x237aec[_0x3961('0x4e')]));if(_0x172336[_0x3961('0x3c')]['filter']){_0x5d69ca['where']=_['merge'](_0x5d69ca['where'],{'$or':_[_0x3961('0x2e')](_0x5d69ca[_0x3961('0x50')],function(_0x5eb9d3){var _0x136392={};_0x136392[_0x5eb9d3]={'$like':'%'+_0x172336[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x136392;})});}_0x5d69ca=_[_0x3961('0x53')]({},_0x5d69ca,_0x172336[_0x3961('0x54')]);return _0x2dc3fc[_0x3961('0x14b')](_0x5d69ca);}})[_0x3961('0x12')](function(_0x3f5d71){if(_0x3f5d71){_0x5c651c=_0x3f5d71[_0x3961('0x42')];if(!_0x172336[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x5d69ca[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x172336['query'][_0x3961('0x24')]);_0x5d69ca[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x172336['query'][_0x3961('0x21')]);}return _0x2dc3fc[_0x3961('0x14b')](_0x5d69ca);}})[_0x3961('0x12')](function(_0x25da80){if(_0x25da80){return _0x25da80?{'count':_0x5c651c,'rows':_0x25da80}:null;}})[_0x3961('0x12')](respondWithResult(_0x44979c,null))['catch'](handleError(_0x44979c,null));};exports[_0x3961('0x14d')]=function(_0x481a33,_0x37e9b5){return db['User'][_0x3961('0x31')]({'where':{'id':_0x481a33[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x37e9b5,null))[_0x3961('0x12')](function(_0x16732b){if(_0x16732b){return _0x16732b[_0x3961('0x14d')](_0x481a33['body'][_0x3961('0x5b')],_['omit'](_0x481a33[_0x3961('0x57')],[_0x3961('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x37e9b5,null))[_0x3961('0x1c')](handleError(_0x37e9b5,null));};exports[_0x3961('0x14e')]=function(_0x1aa80e,_0x2ab161){return db['User']['find']({'where':{'id':_0x1aa80e['params']['id']}})['then'](handleEntityNotFound(_0x2ab161,null))[_0x3961('0x12')](function(_0x57deee){if(_0x57deee){return _0x57deee[_0x3961('0x14e')](_0x1aa80e['query'][_0x3961('0x5b')]);}})['then'](respondWithStatusCode(_0x2ab161,null))[_0x3961('0x1c')](handleError(_0x2ab161,null));};exports[_0x3961('0x14f')]=function(_0x1b0fed,_0x16dc9e){var _0x102e8d={};var _0x4fb98f={};var _0x2c1482;var _0x488d9f;return db['User'][_0x3961('0x8f')]({'where':{'id':_0x1b0fed[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x16dc9e,null))[_0x3961('0x12')](function(_0x46c796){if(_0x46c796){_0x2c1482=_0x46c796;_0x4fb98f[_0x3961('0x52')]=_['keys'](db[_0x3961('0x150')][_0x3961('0x36')]);_0x4fb98f[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x1b0fed[_0x3961('0x3c')]);_0x4fb98f[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x4fb98f[_0x3961('0x52')],_0x4fb98f['query']);_0x102e8d[_0x3961('0x50')]=_['intersection'](_0x4fb98f[_0x3961('0x52')],qs[_0x3961('0x51')](_0x1b0fed[_0x3961('0x3c')][_0x3961('0x51')]));_0x102e8d[_0x3961('0x50')]=_0x102e8d['attributes'][_0x3961('0x42')]?_0x102e8d[_0x3961('0x50')]:_0x4fb98f['model'];_0x102e8d[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x1b0fed['query'][_0x3961('0xc8')]);_0x102e8d[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x1b0fed[_0x3961('0x3c')],_0x4fb98f[_0x3961('0x4e')]));if(_0x1b0fed['query']['filter']){_0x102e8d['where']=_[_0x3961('0x53')](_0x102e8d[_0x3961('0x3b')],{'$or':_['map'](_0x102e8d[_0x3961('0x50')],function(_0x204b09){var _0x489e0d={};_0x489e0d[_0x204b09]={'$like':'%'+_0x1b0fed['query'][_0x3961('0x2c')]+'%'};return _0x489e0d;})});}_0x102e8d=_[_0x3961('0x53')]({},_0x102e8d,_0x1b0fed[_0x3961('0x54')]);return _0x2c1482[_0x3961('0x14f')](_0x102e8d);}})['then'](function(_0x45f0b4){if(_0x45f0b4){_0x488d9f=_0x45f0b4[_0x3961('0x42')];if(!_0x1b0fed[_0x3961('0x3c')]['hasOwnProperty'](_0x3961('0xd0'))){_0x102e8d[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x1b0fed[_0x3961('0x3c')]['limit']);_0x102e8d[_0x3961('0x21')]=qs['offset'](_0x1b0fed[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x2c1482[_0x3961('0x14f')](_0x102e8d);}})['then'](function(_0x1e6448){if(_0x1e6448){return _0x1e6448?{'count':_0x488d9f,'rows':_0x1e6448}:null;}})[_0x3961('0x12')](respondWithResult(_0x16dc9e,null))[_0x3961('0x1c')](handleError(_0x16dc9e,null));};exports[_0x3961('0x151')]=function(_0x2827ef,_0x2d2057){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x2827ef[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x2d2057,null))[_0x3961('0x12')](function(_0x690c5a){if(_0x690c5a){return _0x690c5a[_0x3961('0x151')](_0x2827ef['body'][_0x3961('0x5b')],_['omit'](_0x2827ef['body'],[_0x3961('0x5b'),'id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x2d2057,null))[_0x3961('0x1c')](handleError(_0x2d2057,null));};exports[_0x3961('0x152')]=function(_0x556bd2,_0x556d82){return db['User'][_0x3961('0x31')]({'where':{'id':_0x556bd2[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x556d82,null))[_0x3961('0x12')](function(_0x1a8e03){if(_0x1a8e03){return _0x1a8e03[_0x3961('0x152')](_0x556bd2['query'][_0x3961('0x5b')]);}})[_0x3961('0x12')](respondWithStatusCode(_0x556d82,null))[_0x3961('0x1c')](handleError(_0x556d82,null));};exports['getChatWebsites']=function(_0x569e59,_0x104eab){var _0x34596e={};var _0x145c9b={};var _0x189f6e;var _0x335f9d;return db[_0x3961('0x35')][_0x3961('0x8f')]({'where':{'id':_0x569e59[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x104eab,null))['then'](function(_0x30523b){if(_0x30523b){_0x189f6e=_0x30523b;_0x145c9b[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0x153')][_0x3961('0x36')]);_0x145c9b[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x569e59['query']);_0x145c9b['filters']=_[_0x3961('0x4f')](_0x145c9b[_0x3961('0x52')],_0x145c9b[_0x3961('0x3c')]);_0x34596e[_0x3961('0x50')]=_['intersection'](_0x145c9b['model'],qs[_0x3961('0x51')](_0x569e59[_0x3961('0x3c')][_0x3961('0x51')]));_0x34596e[_0x3961('0x50')]=_0x34596e[_0x3961('0x50')][_0x3961('0x42')]?_0x34596e[_0x3961('0x50')]:_0x145c9b[_0x3961('0x52')];_0x34596e[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0x569e59[_0x3961('0x3c')]['sort']);_0x34596e['where']=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x569e59[_0x3961('0x3c')],_0x145c9b['filters']));if(_0x569e59['query']['filter']){_0x34596e[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x34596e[_0x3961('0x3b')],{'$or':_['map'](_0x34596e[_0x3961('0x50')],function(_0xf6efa7){var _0x13b5b4={};_0x13b5b4[_0xf6efa7]={'$like':'%'+_0x569e59[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x13b5b4;})});}_0x34596e=_[_0x3961('0x53')]({},_0x34596e,_0x569e59[_0x3961('0x54')]);return _0x189f6e[_0x3961('0x154')](_0x34596e);}})[_0x3961('0x12')](function(_0x243b75){if(_0x243b75){_0x335f9d=_0x243b75[_0x3961('0x42')];if(!_0x569e59[_0x3961('0x3c')][_0x3961('0xc9')](_0x3961('0xd0'))){_0x34596e[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x569e59['query'][_0x3961('0x24')]);_0x34596e[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x569e59[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x189f6e[_0x3961('0x154')](_0x34596e);}})[_0x3961('0x12')](function(_0x32122a){if(_0x32122a){return _0x32122a?{'count':_0x335f9d,'rows':_0x32122a}:null;}})[_0x3961('0x12')](respondWithResult(_0x104eab,null))[_0x3961('0x1c')](handleError(_0x104eab,null));};exports[_0x3961('0x155')]=function(_0xdf0bf6,_0x594f33){return db[_0x3961('0x35')]['find']({'where':{'id':_0xdf0bf6['params']['id']}})['then'](handleEntityNotFound(_0x594f33,null))['then'](function(_0x1d2a31){if(_0x1d2a31){return _0x1d2a31['addChatWebsites'](_0xdf0bf6['body']['ids'],_[_0x3961('0x5a')](_0xdf0bf6['body'],['ids','id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x594f33,null))['catch'](handleError(_0x594f33,null));};exports[_0x3961('0x156')]=function(_0x284f79,_0x52f8e6){return db['User'][_0x3961('0x31')]({'where':{'id':_0x284f79[_0x3961('0x4b')]['id']}})['then'](handleEntityNotFound(_0x52f8e6,null))[_0x3961('0x12')](function(_0x145ad3){if(_0x145ad3){return _0x145ad3['removeChatWebsites'](_0x284f79[_0x3961('0x3c')][_0x3961('0x5b')]);}})['then'](respondWithStatusCode(_0x52f8e6,null))[_0x3961('0x1c')](handleError(_0x52f8e6,null));};exports[_0x3961('0x157')]=function(_0xd5ec22,_0x46137c){var _0x53ef0a={};var _0x451813={};var _0x1d63c5;var _0x5978d6;return db[_0x3961('0x35')]['findOne']({'where':{'id':_0xd5ec22[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x46137c,null))[_0x3961('0x12')](function(_0x59892d){if(_0x59892d){_0x1d63c5=_0x59892d;_0x451813['model']=_[_0x3961('0x4d')](db[_0x3961('0x158')]['rawAttributes']);_0x451813[_0x3961('0x3c')]=_['keys'](_0xd5ec22[_0x3961('0x3c')]);_0x451813['filters']=_[_0x3961('0x4f')](_0x451813['model'],_0x451813[_0x3961('0x3c')]);_0x53ef0a['attributes']=_[_0x3961('0x4f')](_0x451813[_0x3961('0x52')],qs['fields'](_0xd5ec22['query'][_0x3961('0x51')]));_0x53ef0a[_0x3961('0x50')]=_0x53ef0a[_0x3961('0x50')][_0x3961('0x42')]?_0x53ef0a['attributes']:_0x451813['model'];_0x53ef0a[_0x3961('0xc7')]=qs[_0x3961('0xc8')](_0xd5ec22['query'][_0x3961('0xc8')]);_0x53ef0a[_0x3961('0x3b')]=qs['filters'](_[_0x3961('0xd2')](_0xd5ec22['query'],_0x451813[_0x3961('0x4e')]));if(_0xd5ec22['query'][_0x3961('0x2c')]){_0x53ef0a[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x53ef0a[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x53ef0a[_0x3961('0x50')],function(_0x2ffca4){var _0x35b816={};_0x35b816[_0x2ffca4]={'$like':'%'+_0xd5ec22[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x35b816;})});}_0x53ef0a=_[_0x3961('0x53')]({},_0x53ef0a,_0xd5ec22['options']);return _0x1d63c5[_0x3961('0x157')](_0x53ef0a);}})[_0x3961('0x12')](function(_0xea73d0){if(_0xea73d0){_0x5978d6=_0xea73d0[_0x3961('0x42')];if(!_0xd5ec22[_0x3961('0x3c')]['hasOwnProperty'](_0x3961('0xd0'))){_0x53ef0a[_0x3961('0x24')]=qs[_0x3961('0x24')](_0xd5ec22[_0x3961('0x3c')][_0x3961('0x24')]);_0x53ef0a['offset']=qs[_0x3961('0x21')](_0xd5ec22[_0x3961('0x3c')][_0x3961('0x21')]);}return _0x1d63c5[_0x3961('0x157')](_0x53ef0a);}})['then'](function(_0x37b648){if(_0x37b648){return _0x37b648?{'count':_0x5978d6,'rows':_0x37b648}:null;}})[_0x3961('0x12')](respondWithResult(_0x46137c,null))[_0x3961('0x1c')](handleError(_0x46137c,null));};exports[_0x3961('0x159')]=function(_0x451a1f,_0x5d8546){return db['User'][_0x3961('0x31')]({'where':{'id':_0x451a1f[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x5d8546,null))[_0x3961('0x12')](function(_0x47bde8){if(_0x47bde8){return _0x47bde8[_0x3961('0x159')](_0x451a1f['body'][_0x3961('0x5b')],_[_0x3961('0x5a')](_0x451a1f[_0x3961('0x57')],['ids','id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x5d8546,null))[_0x3961('0x1c')](handleError(_0x5d8546,null));};exports[_0x3961('0x15a')]=function(_0x284d59,_0x14beb2){return db[_0x3961('0x35')]['find']({'where':{'id':_0x284d59['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x14beb2,null))[_0x3961('0x12')](function(_0x34ae71){if(_0x34ae71){return _0x34ae71[_0x3961('0x15a')](_0x284d59['query'][_0x3961('0x5b')]);}})['then'](respondWithStatusCode(_0x14beb2,null))[_0x3961('0x1c')](handleError(_0x14beb2,null));};exports[_0x3961('0x15b')]=function(_0x241df9,_0x57ab66){var _0x53befe={};var _0x481f3d={};var _0x4bf7dd;var _0x2b8d0e;return db['User'][_0x3961('0x8f')]({'where':{'id':_0x241df9['params']['id']}})['then'](handleEntityNotFound(_0x57ab66,null))[_0x3961('0x12')](function(_0x29d450){if(_0x29d450){_0x4bf7dd=_0x29d450;_0x481f3d[_0x3961('0x52')]=_[_0x3961('0x4d')](db[_0x3961('0x15c')][_0x3961('0x36')]);_0x481f3d[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x241df9[_0x3961('0x3c')]);_0x481f3d[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x481f3d[_0x3961('0x52')],_0x481f3d[_0x3961('0x3c')]);_0x53befe['attributes']=_['intersection'](_0x481f3d[_0x3961('0x52')],qs[_0x3961('0x51')](_0x241df9[_0x3961('0x3c')][_0x3961('0x51')]));_0x53befe['attributes']=_0x53befe[_0x3961('0x50')][_0x3961('0x42')]?_0x53befe[_0x3961('0x50')]:_0x481f3d[_0x3961('0x52')];_0x53befe['order']=qs[_0x3961('0xc8')](_0x241df9['query']['sort']);_0x53befe[_0x3961('0x3b')]=qs['filters'](_['pick'](_0x241df9[_0x3961('0x3c')],_0x481f3d[_0x3961('0x4e')]));if(_0x241df9[_0x3961('0x3c')][_0x3961('0x2c')]){_0x53befe[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x53befe[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x53befe[_0x3961('0x50')],function(_0x397fc2){var _0x5aecb2={};_0x5aecb2[_0x397fc2]={'$like':'%'+_0x241df9[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x5aecb2;})});}_0x53befe=_['merge']({},_0x53befe,_0x241df9[_0x3961('0x54')]);return _0x4bf7dd['getSquareProjects'](_0x53befe);}})[_0x3961('0x12')](function(_0x376dce){if(_0x376dce){_0x2b8d0e=_0x376dce[_0x3961('0x42')];if(!_0x241df9[_0x3961('0x3c')][_0x3961('0xc9')]('nolimit')){_0x53befe[_0x3961('0x24')]=qs[_0x3961('0x24')](_0x241df9['query'][_0x3961('0x24')]);_0x53befe[_0x3961('0x21')]=qs['offset'](_0x241df9['query'][_0x3961('0x21')]);}return _0x4bf7dd[_0x3961('0x15b')](_0x53befe);}})[_0x3961('0x12')](function(_0x3d5b5a){if(_0x3d5b5a){return _0x3d5b5a?{'count':_0x2b8d0e,'rows':_0x3d5b5a}:null;}})['then'](respondWithResult(_0x57ab66,null))[_0x3961('0x1c')](handleError(_0x57ab66,null));};exports[_0x3961('0x15d')]=function(_0x515dd2,_0x5c3ccc){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x515dd2['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x5c3ccc,null))[_0x3961('0x12')](function(_0x4cf6a0){if(_0x4cf6a0){return _0x4cf6a0[_0x3961('0x15d')](_0x515dd2[_0x3961('0x57')][_0x3961('0x5b')],_[_0x3961('0x5a')](_0x515dd2[_0x3961('0x57')],['ids','id'])||{});}})[_0x3961('0x12')](respondWithResult(_0x5c3ccc,null))[_0x3961('0x1c')](handleError(_0x5c3ccc,null));};exports[_0x3961('0x15e')]=function(_0x17c398,_0x21a1e5){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x17c398[_0x3961('0x4b')]['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x21a1e5,null))['then'](function(_0x48362e){if(_0x48362e){return _0x48362e[_0x3961('0x15e')](_0x17c398['query']['ids']);}})[_0x3961('0x12')](respondWithStatusCode(_0x21a1e5,null))[_0x3961('0x1c')](handleError(_0x21a1e5,null));};exports[_0x3961('0x15f')]=function(_0x1853e4,_0x38822f){var _0x20eefd={},_0x488697={},_0x3be0cd={'count':0x0,'rows':[]};var _0x22669d=db[_0x3961('0x160')]['rawAttributes'];_0x488697[_0x3961('0x52')]=_[_0x3961('0x4d')](_0x22669d);_0x488697[_0x3961('0x3c')]=_[_0x3961('0x4d')](_0x1853e4['query']);_0x488697[_0x3961('0x4e')]=_[_0x3961('0x4f')](_0x488697[_0x3961('0x52')],_0x488697[_0x3961('0x3c')]);_0x488697[_0x3961('0x4e')]=_[_0x3961('0xfc')](_0x488697['filters'],[_0x3961('0x161'),_0x3961('0x162'),'$gt',_0x3961('0x163'),_0x3961('0x164'),_0x3961('0x165'),_0x3961('0x166'),'$eq',_0x3961('0x167'),_0x3961('0x168'),_0x3961('0x169'),_0x3961('0x16a'),_0x3961('0x16b'),_0x3961('0x16c'),_0x3961('0x16d'),_0x3961('0x16e'),'$notILike',_0x3961('0x16c'),_0x3961('0x16f'),_0x3961('0x170'),_0x3961('0x171'),_0x3961('0x172')]);_0x20eefd['attributes']=_[_0x3961('0x4f')](_0x488697[_0x3961('0x52')],qs[_0x3961('0x51')](_0x1853e4[_0x3961('0x3c')][_0x3961('0x51')]));_0x20eefd[_0x3961('0x50')]=_0x20eefd['attributes']['length']?_0x20eefd[_0x3961('0x50')]:_0x488697['model'];if(!_0x1853e4[_0x3961('0x3c')][_0x3961('0xc9')]('nolimit')){_0x20eefd[_0x3961('0x24')]=qs['limit'](_0x1853e4[_0x3961('0x3c')]['limit']);_0x20eefd['offset']=qs['offset'](_0x1853e4[_0x3961('0x3c')]['offset']);}_0x20eefd['order']=qs[_0x3961('0xc8')](_0x1853e4['query'][_0x3961('0xc8')]);_0x20eefd[_0x3961('0x3b')]=qs[_0x3961('0x4e')](_[_0x3961('0xd2')](_0x1853e4[_0x3961('0x3c')],_0x488697[_0x3961('0x4e')]));if(_0x1853e4[_0x3961('0x3c')][_0x3961('0x2c')]){_0x20eefd[_0x3961('0x3b')]=_[_0x3961('0x53')](_0x20eefd[_0x3961('0x3b')],{'$or':_[_0x3961('0x2e')](_0x20eefd[_0x3961('0x50')],function(_0x466e3d){var _0x41a7b3={};_0x41a7b3[_0x466e3d]={'$like':'%'+_0x1853e4[_0x3961('0x3c')][_0x3961('0x2c')]+'%'};return _0x41a7b3;})});}_0x20eefd[_0x3961('0x3b')]={'$and':[_0x20eefd['where'],{'$or':[{'UserId':_0x1853e4[_0x3961('0x4b')]['id']},{'OwnerId':_0x1853e4[_0x3961('0x4b')]['id']}]}]};_0x20eefd=_[_0x3961('0x53')]({},_0x20eefd,_0x1853e4[_0x3961('0x54')]);var _0x529d8e={'where':_0x20eefd[_0x3961('0x3b')]};return db['CmHopper'][_0x3961('0x23')](_0x529d8e)['then'](function(_0xe2750){_0x3be0cd[_0x3961('0x23')]=_0xe2750;if(_0x1853e4[_0x3961('0x3c')][_0x3961('0x3d')]){_0x20eefd[_0x3961('0xca')]=[{'attributes':['id',_0x3961('0x173'),_0x3961('0x174'),_0x3961('0xe6')],'model':db['CmContact'],'as':_0x3961('0x175')},{'attributes':['id',_0x3961('0x32'),'dialActive'],'model':db[_0x3961('0xa1')],'as':_0x3961('0xd4')}];}return db[_0x3961('0x160')][_0x3961('0x3e')](_0x20eefd);})[_0x3961('0x12')](function(_0x20ace7){_0x3be0cd[_0x3961('0x3f')]=_0x20ace7;return _0x3be0cd;})[_0x3961('0x12')](respondWithFilteredResult(_0x38822f,_0x20eefd))['catch'](handleError(_0x38822f,null));};exports[_0x3961('0x176')]=function(_0x318883,_0x5d3725){if(!_[_0x3961('0x62')](_0x318883[_0x3961('0x2a')]['id'])&&(_0x318883[_0x3961('0x2a')][_0x3961('0x28')]==_0x3961('0x29')||_0x318883['user']['role']==_0x3961('0x2a'))){return db[_0x3961('0x35')]['findOne']({'where':{'id':_0x318883[_0x3961('0x4b')]['id']},'raw':!![]})['then'](function(_0x562c6e){return authService[_0x3961('0x177')](_0x562c6e);})[_0x3961('0x12')](function(_0x560c20){if(_0x560c20){return _0x5d3725[_0x3961('0x1e')](0xc8)[_0x3961('0x20')]({'api_key':_0x560c20[_0x3961('0x178')]});}else{return _0x5d3725[_0x3961('0x1e')](0xcc)['json']({'message':_0x3961('0x179')});}})[_0x3961('0x1c')](handleError(_0x5d3725,0x193));}else{return _0x5d3725[_0x3961('0x1e')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x3961('0x17a')]=function(_0x209bf5,_0x530a5c){if(!_[_0x3961('0x62')](_0x209bf5[_0x3961('0x2a')]['id'])&&(_0x209bf5[_0x3961('0x2a')][_0x3961('0x28')]==_0x3961('0x29')||_0x209bf5[_0x3961('0x2a')][_0x3961('0x28')]=='user')){return db[_0x3961('0x35')]['find']({'where':{'id':_0x209bf5[_0x3961('0x4b')]['id']}})['then'](function(_0x330ca9){return authService[_0x3961('0x17b')](_0x330ca9);})[_0x3961('0x12')](function(_0x2095ff){return db[_0x3961('0x35')][_0x3961('0x26')]({'apiKeyIat':_0x2095ff[_0x3961('0x17c')],'apiKeyNonce':_0x2095ff[_0x3961('0x17d')]},{'where':{'id':_0x209bf5['params']['id']}})['then'](function(){return _0x530a5c[_0x3961('0x1e')](0xc8)[_0x3961('0x20')]({'api_key':_0x2095ff[_0x3961('0x178')]});});})[_0x3961('0x1c')](handleError(_0x530a5c,0x193));}else{return _0x530a5c[_0x3961('0x1e')](0x191)['json']({'message':_0x3961('0x17e')});}};exports[_0x3961('0x17f')]=function(_0x4ef897,_0x1da26f){if(!_[_0x3961('0x62')](_0x4ef897['user']['id'])&&(_0x4ef897[_0x3961('0x2a')]['role']==_0x3961('0x29')||_0x4ef897[_0x3961('0x2a')]['role']==_0x3961('0x2a'))){return db[_0x3961('0x35')][_0x3961('0x31')]({'where':{'id':_0x4ef897['params']['id']}})[_0x3961('0x12')](handleEntityNotFound(_0x1da26f,null))['then'](function(_0x1224d0){if(_0x1224d0&&_0x1224d0['apiKeyNonce']&&_0x1224d0[_0x3961('0x180')])return _0x1224d0;else throw{'message':_0x3961('0x181')};})[_0x3961('0x12')](function(_0x35c799){return db[_0x3961('0x35')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4ef897[_0x3961('0x4b')]['id']}});})[_0x3961('0x12')](respondWithStatusCode(_0x1da26f,0xc8))['catch'](handleError(_0x1da26f,0x193));}else{return _0x1da26f[_0x3961('0x1e')](0x191)[_0x3961('0x20')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x3961('0x182')]=function(_0xb7379a,_0x27ec49){var _0x1d8928=_0xb7379a['user'][_0x3961('0x111')]({'plain':!![]});if(!_0x1d8928){return _0x27ec49[_0x3961('0x1e')](0x191)[_0x3961('0x34')](_0x3961('0x183'));}else{return _0x27ec49['status'](0xc8)[_0x3961('0x20')](_0x1d8928);}};exports[_0x3961('0x184')]=function(_0x1e6724,_0x4b67d3){var _0x22d261={'offset':0x0},_0x23788f={'count':0x0,'rows':[]};Promise[_0x3961('0xfe')]()['then'](function(){if(!_0x1e6724[_0x3961('0x3c')][_0x3961('0x2c')]&&!_0x1e6724['query'][_0x3961('0x185')]&&!_0x1e6724['query'][_0x3961('0x186')])return[];return Promise[_0x3961('0xfe')]()[_0x3961('0x12')](function(){var _0x415e92=[];if(!_[_0x3961('0x84')](_0x1e6724[_0x3961('0x3c')][_0x3961('0x185')])){_0x415e92[_0x3961('0x43')](db['Team'][_0x3961('0x3e')]({'attributes':['id',_0x3961('0x32')],'where':{'id':_0x1e6724[_0x3961('0x3c')][_0x3961('0x185')]}}));}if(!_['isEmpty'](_0x1e6724['query'][_0x3961('0x186')])){_0x415e92['push'](db[_0x3961('0xa1')]['findAll']({'attributes':['id',_0x3961('0x32')],'type':_0x3961('0x187'),'where':{'id':_0x1e6724[_0x3961('0x3c')][_0x3961('0x186')]}}));}return Promise['all'](_0x415e92);})['then'](function(_0xc08fa2){var _0x3a4fdf=_['flatten'](_0xc08fa2)['map'](function(_0x2e21a8){return _0x2e21a8[_0x3961('0x12a')]({'attributes':['id','name',_0x3961('0x5c'),'online'],'raw':!![]});});return Promise[_0x3961('0x49')](_0x3a4fdf);})[_0x3961('0x12')](function(_0x1106d1){var _0x1d55f4=_[_0x3961('0x126')](_0x1106d1);if(!_0x1e6724[_0x3961('0x3c')][_0x3961('0x2c')])return _0x1d55f4;if(_[_0x3961('0x84')](_0x1d55f4)){return db[_0x3961('0x35')]['findAll']({'attributes':['id',_0x3961('0x32'),_0x3961('0x5c'),_0x3961('0x96')],'where':{'role':_0x3961('0x6c'),'$or':[db[_0x3961('0x64')][_0x3961('0x3b')](db[_0x3961('0x64')]['fn'](_0x3961('0x188'),db[_0x3961('0x64')][_0x3961('0x189')](_0x3961('0x32'))),{'$like':'%'+_0x1e6724[_0x3961('0x3c')]['filter'][_0x3961('0x9a')]()+'%'}),{'internal':{'$like':'%'+_0x1e6724['query'][_0x3961('0x2c')]+'%'}}]},'raw':!![]});}else{return _(_0x1d55f4)[_0x3961('0x126')]()[_0x3961('0x2c')](function(_0x5cc0d2){return _0x5cc0d2[_0x3961('0x32')]['toLowerCase']()[_0x3961('0x30')](_0x1e6724[_0x3961('0x3c')]['filter']['toLowerCase']())||_0x5cc0d2[_0x3961('0x5c')]['toString']()[_0x3961('0x30')](_0x1e6724[_0x3961('0x3c')][_0x3961('0x2c')]);})[_0x3961('0x2f')]();}})[_0x3961('0x12')](function(_0x54b5cc){var _0x5f266c=_0x3961('0x32');var _0x37cbd2=_0x3961('0x18a');if(_0x1e6724[_0x3961('0x3c')][_0x3961('0xc8')]){var _0x37cbd2=_0x1e6724[_0x3961('0x3c')][_0x3961('0xc8')][0x0]==='-'?_0x3961('0x18b'):_0x3961('0x18a');var _0x5f266c=_0x37cbd2===_0x3961('0x18a')?_0x1e6724['query']['sort']:_0x1e6724[_0x3961('0x3c')][_0x3961('0xc8')][_0x3961('0x18c')](0x1);}return _(_0x54b5cc)['uniqBy']('id')[_0x3961('0x18d')]([function(_0x12da4c){return _0x5f266c==='name'?_0x12da4c[_0x5f266c][_0x3961('0x9a')]():_0x12da4c[_0x5f266c];}],[_0x37cbd2])[_0x3961('0x2e')](function(_0x4bb8f9){return _['pick'](_0x4bb8f9,['id',_0x3961('0x32'),'internal',_0x3961('0x96')]);})[_0x3961('0x2f')]();})[_0x3961('0x12')](function(_0x5d4585){return client[_0x3961('0x11')](_0x3961('0x7b'),_0x1e6724)['then'](function(_0x395e40){if(_0x395e40[_0x3961('0x17')])throw new Error(_0x3961('0x18e'));var _0x4f402f=_0x395e40[_0x3961('0x1b')];var _0xd6e6a9=jayson[_0x3961('0xf')]['http']({'port':0x232c});return _0xd6e6a9[_0x3961('0x11')](_0x3961('0x7b'),_0x1e6724)['then'](function(_0x4db31b){if(_0x4db31b[_0x3961('0x17')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0xfe7722=_0x4db31b[_0x3961('0x1b')];return _[_0x3961('0x53')]({},_0xfe7722,_0x4f402f);});})[_0x3961('0x12')](function(_0x2675cd){return _['map'](_0x5d4585,function(_0x813087){var _0x22f781=_[_0x3961('0x31')](_0x2675cd[_0x3961('0x3f')],['id',_0x813087['id']]);if(!_0x22f781||!_0x813087[_0x3961('0x96')]){_0x813087[_0x3961('0x1e')]='offline';}else if(_0x22f781[_0x3961('0x98')]){_0x813087[_0x3961('0x1e')]=_0x3961('0x100');}else{_0x813087[_0x3961('0x1e')]=_['includes'](['idle',_0x3961('0x18f'),_0x3961('0x190'),'ringing',null,undefined],_0x22f781['voiceStatus'])?_0x3961('0x96'):'busy';}return _0x813087;});});});})['then'](function(_0x5649a2){if(!_0x1e6724[_0x3961('0x3c')]['hasOwnProperty']('nolimit')){_0x22d261['limit']=qs[_0x3961('0x24')](_0x1e6724[_0x3961('0x3c')][_0x3961('0x24')]||0xa);_0x22d261[_0x3961('0x21')]=qs[_0x3961('0x21')](_0x1e6724[_0x3961('0x3c')][_0x3961('0x21')]);}_0x23788f[_0x3961('0x23')]=_0x5649a2['length'];_0x23788f[_0x3961('0x3f')]=_0x22d261['limit']?_0x5649a2[_0x3961('0x191')](_0x22d261[_0x3961('0x21')],_0x22d261[_0x3961('0x21')]+_0x22d261[_0x3961('0x24')]):_0x5649a2;return _0x23788f;})[_0x3961('0x12')](respondWithFilteredResult(_0x4b67d3,_0x22d261))['catch'](handleError(_0x4b67d3,null));};function get_open_tabs(_0x147f23,_0xf5fa83){var _0x19a41b=_0x147f23[_0x3961('0x192')](0x0)[_0x3961('0x193')]()+_0x147f23['slice'](0x1);var _0x291d8c={'type':db[_0x3961('0x89')][_0x3961('0x194')][_0x3961('0x66')],'raw':!![]};return new BPromise(function(_0x1b88d9,_0x386cb9){var _0x303de7=squel[_0x3961('0x195')]()[_0x3961('0x196')](_0x3961('0x197')+_0x19a41b+_0x3961('0x198'),'id')[_0x3961('0x196')]('ui.createdAt')[_0x3961('0x67')](_0x3961('0x199')+_0x147f23+_0x3961('0x19a'),'ui')['where']('ui.UserId\x20=\x20?',_0xf5fa83['id']);return db[_0x3961('0x64')]['query'](_0x303de7['toString'](),_0x291d8c)[_0x3961('0x12')](function(_0x4d8be2){_0xf5fa83[_0x19a41b+_0x3961('0x19b')]=_0x4d8be2;_0x1b88d9(_0x4d8be2);})[_0x3961('0x1c')](function(_0x5157e2){_0x386cb9(_0x5157e2);});});};
\ No newline at end of file
index 57ce6e6..b3535b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x434e=['exports','../../mysqldb','User','save','update','hasOwnProperty','hook'];(function(_0x9db5d3,_0x4eea5e){var _0x477a81=function(_0x28e774){while(--_0x28e774){_0x9db5d3['push'](_0x9db5d3['shift']());}};_0x477a81(++_0x4eea5e);}(_0x434e,0xef));var _0xe434=function(_0x197185,_0x251145){_0x197185=_0x197185-0x0;var _0x2c8af1=_0x434e[_0x197185];return _0x2c8af1;};'use strict';var EventEmitter=require('events');var User=require(_0xe434('0x0'))['db'][_0xe434('0x1')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe434('0x2'),'afterUpdate':_0xe434('0x3'),'afterDestroy':'remove'};function emitEvent(_0x56db00){return function(_0x160b0d,_0x5e581b,_0x548ba8){UserEvents['emit'](_0x56db00+':'+_0x160b0d['id'],_0x160b0d);UserEvents['emit'](_0x56db00,_0x160b0d);_0x548ba8(null);};}for(var e in events){if(events[_0xe434('0x4')](e)){var event=events[e];User[_0xe434('0x5')](e,emitEvent(event));}}module[_0xe434('0x6')]=UserEvents;
\ No newline at end of file
+var _0x3b73=['setMaxListeners','update','emit','hasOwnProperty','events'];(function(_0xe42b,_0x263bfd){var _0x2f4bb6=function(_0x246869){while(--_0x246869){_0xe42b['push'](_0xe42b['shift']());}};_0x2f4bb6(++_0x263bfd);}(_0x3b73,0xef));var _0x33b7=function(_0x1420c8,_0x5d694e){_0x1420c8=_0x1420c8-0x0;var _0x542344=_0x3b73[_0x1420c8];return _0x542344;};'use strict';var EventEmitter=require(_0x33b7('0x0'));var User=require('../../mysqldb')['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x33b7('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x33b7('0x2'),'afterDestroy':'remove'};function emitEvent(_0x42b6fc){return function(_0x23a0cf,_0x4cb223,_0x383fb6){UserEvents['emit'](_0x42b6fc+':'+_0x23a0cf['id'],_0x23a0cf);UserEvents[_0x33b7('0x3')](_0x42b6fc,_0x23a0cf);_0x383fb6(null);};}for(var e in events){if(events[_0x33b7('0x4')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index a9346fd..473fff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf4b=['%s%s','push','Set','format','chanspy','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','name','options','join','StopMixMonitor','wav','WAV','gsm','extensionMonitor','SIP/%s,,tTxXU(xcally-mixmonitor-context)','priority','defaults','then','exports','models','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','catch','changed','internal','bulkCreate','VoiceExtension','destroy','encryptPassword','function','randomBytes','toString','salt','pbkdf2Sync','sha1','base64','indexOf',':asterisk:','md5secret','bluebird','crypto','util','md5','./user.attributes','length','context','from-sip','system'];(function(_0x11b3f4,_0x371c17){var _0x47af1d=function(_0x11d38d){while(--_0x11d38d){_0x11b3f4['push'](_0x11b3f4['shift']());}};_0x47af1d(++_0x371c17);}(_0xcf4b,0xef));var _0xbcf4=function(_0x402354,_0x20ff6e){_0x402354=_0x402354-0x0;var _0x4bd91f=_0xcf4b[_0x402354];return _0x4bd91f;};'use strict';var BPromise=require(_0xbcf4('0x0'));var crypto=require(_0xbcf4('0x1'));var util=require(_0xbcf4('0x2'));var md5=require(_0xbcf4('0x3'));var _=require('lodash');var attributes=require(_0xbcf4('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0xf46183){return _0xf46183&&_0xf46183[_0xbcf4('0x5')];};var getChanSpyApplications=function(_0x52e6f3,_0x25224d,_0x23ad40){var _0x27bfc3={'context':_0x52e6f3[_0xbcf4('0x6')]||_0xbcf4('0x7'),'type':_0xbcf4('0x8'),'isApp':![],'UserId':_0x52e6f3['id']};var _0x32f021=[];for(var _0x1081c2=0x0,_0x5db545=0x1;_0x1081c2<_0x23ad40[_0xbcf4('0x5')];_0x1081c2++,_0x5db545=0x1){var _0x602d5c={'exten':util['format'](_0xbcf4('0x9'),_0x23ad40[_0x1081c2]['prefix'],_0x25224d),'ChanSpyId':_0x23ad40[_0x1081c2]['id']};_0x32f021[_0xbcf4('0xa')](_['merge']({'app':_0xbcf4('0xb'),'appdata':util[_0xbcf4('0xc')]('CDR(type)=%s',_0xbcf4('0xd')),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));if(_0x23ad40[_0x1081c2][_0xbcf4('0xe')]){_0x32f021['push'](_[_0xbcf4('0xf')]({'app':'MixMonitor','appdata':util[_0xbcf4('0xc')](_0xbcf4('0x10'),_0x23ad40[_0x1081c2][_0xbcf4('0x11')]),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));}if(_0x23ad40[_0x1081c2][_0xbcf4('0x12')]){_0x32f021[_0xbcf4('0xa')](_['merge']({'app':'Authenticate','appdata':_0x23ad40[_0x1081c2][_0xbcf4('0x13')],'priority':_0x5db545++},_0x27bfc3,_0x602d5c));}_0x32f021[_0xbcf4('0xa')](_['merge']({'app':_0xbcf4('0x14'),'appdata':util[_0xbcf4('0xc')]('SIP/%s,%s',_0x52e6f3[_0xbcf4('0x15')],_0x23ad40[_0x1081c2][_0xbcf4('0x16')]?_0x23ad40[_0x1081c2][_0xbcf4('0x16')][_0xbcf4('0x17')](''):''),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));if(_0x23ad40[_0x1081c2][_0xbcf4('0xe')]){_0x32f021[_0xbcf4('0xa')](_[_0xbcf4('0xf')]({'app':_0xbcf4('0x18'),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));}}return _0x32f021;};var getUserApplications=function(_0x5c84dd,_0xa33b89){var _0x33850b=[_0xbcf4('0x19'),_0xbcf4('0x1a'),_0xbcf4('0x1b')];var _0x2dce4d={'context':_0x5c84dd[_0xbcf4('0x6')]||_0xbcf4('0x7'),'exten':_0xa33b89,'type':_0xbcf4('0x8'),'isApp':![],'UserId':_0x5c84dd['id']};var _0x2af715=[{'app':_0xbcf4('0xb'),'appdata':'CDR(type)=internal'}];if(_0x5c84dd['extensionMonitor']&&_['includes'](_0x33850b,_0x5c84dd[_0xbcf4('0x1c')])){_0x2af715[_0xbcf4('0xa')]({'app':_0xbcf4('0xb'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x2af715[_0xbcf4('0xa')]({'app':_0xbcf4('0xb'),'appdata':util[_0xbcf4('0xc')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x5c84dd[_0xbcf4('0x1c')])});_0x2af715['push']({'app':'Dial','appdata':util[_0xbcf4('0xc')](_0xbcf4('0x1d'),_0x5c84dd[_0xbcf4('0x15')])});}else{_0x2af715['push']({'app':'Dial','appdata':util['format']('SIP/%s,,tTxX',_0x5c84dd[_0xbcf4('0x15')])});}_0x2af715['push']({'app':'Hangup'});for(var _0x297fad=0x0;_0x297fad<_0x2af715[_0xbcf4('0x5')];_0x297fad++){_0x2af715[_0x297fad][_0xbcf4('0x1e')]=_0x297fad+0x1;_0x2af715[_0x297fad]=_[_0xbcf4('0x1f')](_0x2af715[_0x297fad],_0x2dce4d);}return _0x2af715;};var getChanSpyPromise=function(_0x2c3043,_0x206e7a){return new BPromise(function(_0x57c131,_0x105d08){return _0x2c3043['VoiceChanSpy']['findAll']()[_0xbcf4('0x20')](function(_0x211334){if(_0x211334){var _0x4eebc7=getChanSpyApplications(_0x206e7a,_0x206e7a['internal'],_0x211334);if(_0x206e7a['internal']!=_0x206e7a['name']){_0x4eebc7=_0x4eebc7['concat'](getChanSpyApplications(_0x206e7a,_0x206e7a[_0xbcf4('0x15')],_0x211334));}return _0x57c131(_0x4eebc7);}return _0x57c131([]);})['catch'](function(_0x20fa45){_0x105d08(_0x20fa45);});});};module[_0xbcf4('0x21')]=function(_0xdbcc27,_0x310553){var _0x4e22c9=_0xdbcc27[_0xbcf4('0x22')];return _0xdbcc27['define']('User',attributes,{'tableName':'users','charset':_0xbcf4('0x23'),'collate':_0xbcf4('0x24'),'hooks':{'beforeCreate':function(_0x4c3e1c,_0x421d77,_0x5eac86){var _0x1aabb9=typeof _0x4c3e1c[_0xbcf4('0x25')]===_0xbcf4('0x26')?BPromise[_0xbcf4('0x27')](null):_0x4e22c9[_0xbcf4('0x28')][_0xbcf4('0x29')]({'where':{'id':_0x4c3e1c[_0xbcf4('0x25')]}});_0x1aabb9['then'](function(_0x1d3ad6){if(_0x1d3ad6){_0x4c3e1c[_0xbcf4('0x2a')]=_0x1d3ad6['privacyEnabled'];}})['then'](function(){_0x4c3e1c[_0xbcf4('0x2b')]();_0x4c3e1c[_0xbcf4('0x2c')](_0x5eac86);})[_0xbcf4('0x2d')](function(_0x366848){_0x5eac86(_0x366848);});},'beforeUpdate':function(_0x126bb9,_0x2a64eb,_0xa4ed7b){Promise['resolve']()['then'](function(){if(_0x126bb9[_0xbcf4('0x2e')]('userProfileId')===![])return;return _0x4e22c9[_0xbcf4('0x28')][_0xbcf4('0x29')]({'where':{'id':_0x126bb9[_0xbcf4('0x25')]}})[_0xbcf4('0x20')](function(_0xfa5dd8){if(_0xfa5dd8)_0x126bb9['privacyEnabled']=_0xfa5dd8['privacyEnabled'];return;});})[_0xbcf4('0x20')](function(){if(_0x126bb9[_0xbcf4('0x2e')](_0xbcf4('0x13'))){_0x126bb9['updateMd5Password']();return _0x126bb9[_0xbcf4('0x2c')](_0xa4ed7b);}_0xa4ed7b();})['catch'](function(_0x26bdb6){_0xa4ed7b(_0x26bdb6);});},'afterCreate':function(_0x3ea65c,_0x2ceb47,_0x4c0aa1){var _0x484f84=getUserApplications(_0x3ea65c,_0x3ea65c[_0xbcf4('0x2f')]);if(_0x3ea65c[_0xbcf4('0x2f')]!=_0x3ea65c['name']){_0x484f84=_0x484f84['concat'](getUserApplications(_0x3ea65c,_0x3ea65c[_0xbcf4('0x15')]));}return _0x4e22c9['VoiceExtension'][_0xbcf4('0x30')](_0x484f84)['then'](function(){if(_0x3ea65c['chanspy']){return getChanSpyPromise(_0x4e22c9,_0x3ea65c);}})[_0xbcf4('0x20')](function(_0x3b4f7c){if(_0x3b4f7c&&_0x3b4f7c[_0xbcf4('0x5')]){return _0x4e22c9['VoiceExtension'][_0xbcf4('0x30')](_0x3b4f7c);}})[_0xbcf4('0x20')](function(){_0x4c0aa1();})['catch'](function(_0x594c94){_0x4c0aa1(_0x594c94);});},'afterUpdate':function(_0xd954e3,_0x1ec1cc,_0x5d557e){return BPromise[_0xbcf4('0x27')]()[_0xbcf4('0x20')](function(){if(_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0xd'))||_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0x6'))){return _0x4e22c9[_0xbcf4('0x31')][_0xbcf4('0x32')]({'where':{'UserId':_0xd954e3['id'],'type':_0xbcf4('0x8'),'ChanSpyId':{'$ne':null}}})[_0xbcf4('0x20')](function(){if(_0xd954e3[_0xbcf4('0xd')]){return getChanSpyPromise(_0x4e22c9,_0xd954e3)[_0xbcf4('0x20')](function(_0x3e93b9){if(_0x3e93b9&&_0x3e93b9[_0xbcf4('0x5')]){return _0x4e22c9[_0xbcf4('0x31')][_0xbcf4('0x30')](_0x3e93b9);}});}});}})[_0xbcf4('0x20')](function(){if(_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0x1c'))||_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0x6'))){return _0x4e22c9[_0xbcf4('0x31')]['destroy']({'where':{'UserId':_0xd954e3['id'],'type':'system','ChanSpyId':null}})[_0xbcf4('0x20')](function(){var _0xc38544=getUserApplications(_0xd954e3,_0xd954e3[_0xbcf4('0x2f')]);if(_0xd954e3[_0xbcf4('0x2f')]!=_0xd954e3['name']){_0xc38544=_0xc38544['concat'](getUserApplications(_0xd954e3,_0xd954e3[_0xbcf4('0x15')]));}return _0x4e22c9['VoiceExtension'][_0xbcf4('0x30')](_0xc38544);});}})['then'](function(){_0x5d557e();})[_0xbcf4('0x2d')](function(_0x3544d1){_0x5d557e(_0x3544d1);});},'afterDestroy':function(_0xc98a83,_0x205f14){return _0x4e22c9[_0xbcf4('0x31')][_0xbcf4('0x32')]({'where':{'UserId':_0xc98a83['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x406d05,_0x1dce08){if(!_0x1dce08){return this[_0xbcf4('0x13')]===this[_0xbcf4('0x33')](_0x406d05);}var _0x303275=this;this['encryptPassword'](_0x406d05,function(_0x2afdec,_0x38d6cf){if(_0x2afdec){_0x1dce08(_0x2afdec);}if(_0x303275['password']===_0x38d6cf){_0x1dce08(null,!![]);}else{_0x1dce08(null,![]);}});},'makeSalt':function(_0x1ce056,_0x42b850){var _0x7763c7=0x10;if(typeof arguments[0x0]===_0xbcf4('0x34')){_0x42b850=arguments[0x0];_0x1ce056=_0x7763c7;}else if(typeof arguments[0x1]===_0xbcf4('0x34')){_0x42b850=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x1ce056){_0x1ce056=_0x7763c7;}return crypto[_0xbcf4('0x35')](_0x1ce056,function(_0x39b289,_0x558597){if(_0x39b289){_0x42b850(_0x39b289);}return _0x42b850(null,_0x558597[_0xbcf4('0x36')]('base64'));});},'encryptPassword':function(_0x4c0320,_0x2daeed){if(!_0x4c0320||!this[_0xbcf4('0x37')]){return _0x2daeed?_0x2daeed(null):null;}var _0x1eb9b7=0x2710;var _0x28888f=0x40;var _0x21979a=new Buffer(this['salt'],'base64');if(!_0x2daeed){return crypto[_0xbcf4('0x38')](_0x4c0320,_0x21979a,_0x1eb9b7,_0x28888f,_0xbcf4('0x39'))['toString'](_0xbcf4('0x3a'));}return crypto['pbkdf2'](_0x4c0320,_0x21979a,_0x1eb9b7,_0x28888f,_0xbcf4('0x39'),function(_0x47f4fd,_0x177775){if(_0x47f4fd){_0x2daeed(_0x47f4fd);}return _0x2daeed(null,_0x177775[_0xbcf4('0x36')](_0xbcf4('0x3a')));});},'updatePassword':function(_0x5670c7){if(!this[_0xbcf4('0x13')]){return _0x5670c7(null);}if(!validatePresenceOf(this[_0xbcf4('0x13')])&&authTypes[_0xbcf4('0x3b')](this['provider'])===-0x1){_0x5670c7(new Error('Invalid\x20password'));}var _0x5348fa=this;this['makeSalt'](function(_0x3ed8a4,_0x2e818a){if(_0x3ed8a4){return _0x5670c7(_0x3ed8a4);}_0x5348fa[_0xbcf4('0x37')]=_0x2e818a;_0x5348fa[_0xbcf4('0x33')](_0x5348fa[_0xbcf4('0x13')],function(_0x56d360,_0x4da6f9){if(_0x56d360){_0x5670c7(_0x56d360);}_0x5348fa[_0xbcf4('0x13')]=_0x4da6f9;_0x5670c7(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xbcf4('0x15')]+_0xbcf4('0x3c')+this['password']);return this[_0xbcf4('0x3d')];}}});};
\ No newline at end of file
+var _0x0921=[':asterisk:','bluebird','crypto','util','lodash','./user.attributes','google','length','context','from-sip','format','%s%s','prefix','merge','Set','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','name','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','then','internal','concat','catch','exports','define','User','users','utf8','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','resolve','destroy','system','encryptPassword','function','Missing\x20Callback','toString','salt','sha1','base64','Invalid\x20password','makeSalt','md5secret'];(function(_0x1fda7a,_0x41373b){var _0x161907=function(_0x5b1830){while(--_0x5b1830){_0x1fda7a['push'](_0x1fda7a['shift']());}};_0x161907(++_0x41373b);}(_0x0921,0x121));var _0x1092=function(_0x1f6835,_0xff3520){_0x1f6835=_0x1f6835-0x0;var _0x10aee2=_0x0921[_0x1f6835];return _0x10aee2;};'use strict';var BPromise=require(_0x1092('0x0'));var crypto=require(_0x1092('0x1'));var util=require(_0x1092('0x2'));var md5=require('md5');var _=require(_0x1092('0x3'));var attributes=require(_0x1092('0x4'));var authTypes=[_0x1092('0x5')];var validatePresenceOf=function(_0xa534d1){return _0xa534d1&&_0xa534d1[_0x1092('0x6')];};var getChanSpyApplications=function(_0x39b2b3,_0x3b8907,_0x3e3a8b){var _0x2f70f9={'context':_0x39b2b3[_0x1092('0x7')]||_0x1092('0x8'),'type':'system','isApp':![],'UserId':_0x39b2b3['id']};var _0x275f3c=[];for(var _0x207dee=0x0,_0x5a17d6=0x1;_0x207dee<_0x3e3a8b[_0x1092('0x6')];_0x207dee++,_0x5a17d6=0x1){var _0x39dfe4={'exten':util[_0x1092('0x9')](_0x1092('0xa'),_0x3e3a8b[_0x207dee][_0x1092('0xb')],_0x3b8907),'ChanSpyId':_0x3e3a8b[_0x207dee]['id']};_0x275f3c['push'](_[_0x1092('0xc')]({'app':_0x1092('0xd'),'appdata':util[_0x1092('0x9')]('CDR(type)=%s',_0x1092('0xe')),'priority':_0x5a17d6++},_0x2f70f9,_0x39dfe4));if(_0x3e3a8b[_0x207dee][_0x1092('0xf')]){_0x275f3c[_0x1092('0x10')](_[_0x1092('0xc')]({'app':_0x1092('0x11'),'appdata':util[_0x1092('0x9')](_0x1092('0x12'),_0x3e3a8b[_0x207dee][_0x1092('0x13')]),'priority':_0x5a17d6++},_0x2f70f9,_0x39dfe4));}if(_0x3e3a8b[_0x207dee]['auth']){_0x275f3c[_0x1092('0x10')](_['merge']({'app':_0x1092('0x14'),'appdata':_0x3e3a8b[_0x207dee][_0x1092('0x15')],'priority':_0x5a17d6++},_0x2f70f9,_0x39dfe4));}_0x275f3c['push'](_[_0x1092('0xc')]({'app':'ChanSpy','appdata':util[_0x1092('0x9')]('SIP/%s,%s',_0x39b2b3[_0x1092('0x16')],_0x3e3a8b[_0x207dee][_0x1092('0x17')]?_0x3e3a8b[_0x207dee][_0x1092('0x17')][_0x1092('0x18')](''):''),'priority':_0x5a17d6++},_0x2f70f9,_0x39dfe4));if(_0x3e3a8b[_0x207dee][_0x1092('0xf')]){_0x275f3c['push'](_[_0x1092('0xc')]({'app':_0x1092('0x19'),'priority':_0x5a17d6++},_0x2f70f9,_0x39dfe4));}}return _0x275f3c;};var getUserApplications=function(_0x20d00c,_0x56f483){var _0x46004e=[_0x1092('0x1a'),_0x1092('0x1b'),_0x1092('0x1c')];var _0x598f0a={'context':_0x20d00c[_0x1092('0x7')]||'from-sip','exten':_0x56f483,'type':'system','isApp':![],'UserId':_0x20d00c['id']};var _0x2612c5=[{'app':_0x1092('0xd'),'appdata':_0x1092('0x1d')}];if(_0x20d00c[_0x1092('0x1e')]&&_['includes'](_0x46004e,_0x20d00c[_0x1092('0x1e')])){_0x2612c5[_0x1092('0x10')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x2612c5[_0x1092('0x10')]({'app':_0x1092('0xd'),'appdata':util[_0x1092('0x9')](_0x1092('0x1f'),_0x20d00c['extensionMonitor'])});_0x2612c5[_0x1092('0x10')]({'app':_0x1092('0x20'),'appdata':util['format'](_0x1092('0x21'),_0x20d00c[_0x1092('0x16')])});}else{_0x2612c5[_0x1092('0x10')]({'app':_0x1092('0x20'),'appdata':util[_0x1092('0x9')](_0x1092('0x22'),_0x20d00c[_0x1092('0x16')])});}_0x2612c5['push']({'app':_0x1092('0x23')});for(var _0x46c1fd=0x0;_0x46c1fd<_0x2612c5[_0x1092('0x6')];_0x46c1fd++){_0x2612c5[_0x46c1fd][_0x1092('0x24')]=_0x46c1fd+0x1;_0x2612c5[_0x46c1fd]=_[_0x1092('0x25')](_0x2612c5[_0x46c1fd],_0x598f0a);}return _0x2612c5;};var getChanSpyPromise=function(_0x45e51b,_0x3bf869){return new BPromise(function(_0x64cd00,_0x539b87){return _0x45e51b['VoiceChanSpy'][_0x1092('0x26')]()[_0x1092('0x27')](function(_0xbf169f){if(_0xbf169f){var _0x28666b=getChanSpyApplications(_0x3bf869,_0x3bf869[_0x1092('0x28')],_0xbf169f);if(_0x3bf869[_0x1092('0x28')]!=_0x3bf869['name']){_0x28666b=_0x28666b[_0x1092('0x29')](getChanSpyApplications(_0x3bf869,_0x3bf869[_0x1092('0x16')],_0xbf169f));}return _0x64cd00(_0x28666b);}return _0x64cd00([]);})[_0x1092('0x2a')](function(_0x3d75e8){_0x539b87(_0x3d75e8);});});};module[_0x1092('0x2b')]=function(_0x2d6145,_0x32d0f7){var _0x2aa514=_0x2d6145['models'];return _0x2d6145[_0x1092('0x2c')](_0x1092('0x2d'),attributes,{'tableName':_0x1092('0x2e'),'charset':_0x1092('0x2f'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x16ced2,_0x32b6f3,_0x3d6ea2){var _0x19fea5=typeof _0x16ced2[_0x1092('0x30')]===_0x1092('0x31')?BPromise['resolve'](null):_0x2aa514[_0x1092('0x32')][_0x1092('0x33')]({'where':{'id':_0x16ced2[_0x1092('0x30')]}});_0x19fea5['then'](function(_0x279284){if(_0x279284){_0x16ced2[_0x1092('0x34')]=_0x279284[_0x1092('0x34')];}})[_0x1092('0x27')](function(){_0x16ced2[_0x1092('0x35')]();_0x16ced2[_0x1092('0x36')](_0x3d6ea2);})['catch'](function(_0x2253d7){_0x3d6ea2(_0x2253d7);});},'beforeUpdate':function(_0x28c8bb,_0x35a3ed,_0x22cf5a){Promise['resolve']()[_0x1092('0x27')](function(){if(_0x28c8bb[_0x1092('0x37')](_0x1092('0x30'))===![])return;return _0x2aa514[_0x1092('0x32')]['find']({'where':{'id':_0x28c8bb[_0x1092('0x30')]}})[_0x1092('0x27')](function(_0x4bf380){if(_0x4bf380)_0x28c8bb[_0x1092('0x34')]=_0x4bf380[_0x1092('0x34')];return;});})[_0x1092('0x27')](function(){if(_0x28c8bb['changed'](_0x1092('0x15'))){_0x28c8bb[_0x1092('0x35')]();return _0x28c8bb[_0x1092('0x36')](_0x22cf5a);}_0x22cf5a();})[_0x1092('0x2a')](function(_0x411aa2){_0x22cf5a(_0x411aa2);});},'afterCreate':function(_0x30df54,_0x21aaeb,_0x335efc){var _0x3b4827=getUserApplications(_0x30df54,_0x30df54[_0x1092('0x28')]);if(_0x30df54[_0x1092('0x28')]!=_0x30df54['name']){_0x3b4827=_0x3b4827[_0x1092('0x29')](getUserApplications(_0x30df54,_0x30df54[_0x1092('0x16')]));}return _0x2aa514[_0x1092('0x38')]['bulkCreate'](_0x3b4827)['then'](function(){if(_0x30df54[_0x1092('0xe')]){return getChanSpyPromise(_0x2aa514,_0x30df54);}})['then'](function(_0x52cf72){if(_0x52cf72&&_0x52cf72[_0x1092('0x6')]){return _0x2aa514[_0x1092('0x38')][_0x1092('0x39')](_0x52cf72);}})['then'](function(){_0x335efc();})[_0x1092('0x2a')](function(_0x37a80b){_0x335efc(_0x37a80b);});},'afterUpdate':function(_0x76f7c2,_0x7def63,_0x2f4836){return BPromise[_0x1092('0x3a')]()[_0x1092('0x27')](function(){if(_0x76f7c2['changed'](_0x1092('0xe'))||_0x76f7c2['changed'](_0x1092('0x7'))){return _0x2aa514[_0x1092('0x38')][_0x1092('0x3b')]({'where':{'UserId':_0x76f7c2['id'],'type':_0x1092('0x3c'),'ChanSpyId':{'$ne':null}}})[_0x1092('0x27')](function(){if(_0x76f7c2['chanspy']){return getChanSpyPromise(_0x2aa514,_0x76f7c2)[_0x1092('0x27')](function(_0x1a25b8){if(_0x1a25b8&&_0x1a25b8['length']){return _0x2aa514[_0x1092('0x38')][_0x1092('0x39')](_0x1a25b8);}});}});}})[_0x1092('0x27')](function(){if(_0x76f7c2[_0x1092('0x37')](_0x1092('0x1e'))||_0x76f7c2[_0x1092('0x37')](_0x1092('0x7'))){return _0x2aa514['VoiceExtension'][_0x1092('0x3b')]({'where':{'UserId':_0x76f7c2['id'],'type':_0x1092('0x3c'),'ChanSpyId':null}})[_0x1092('0x27')](function(){var _0xfe1f1d=getUserApplications(_0x76f7c2,_0x76f7c2[_0x1092('0x28')]);if(_0x76f7c2[_0x1092('0x28')]!=_0x76f7c2[_0x1092('0x16')]){_0xfe1f1d=_0xfe1f1d[_0x1092('0x29')](getUserApplications(_0x76f7c2,_0x76f7c2['name']));}return _0x2aa514[_0x1092('0x38')][_0x1092('0x39')](_0xfe1f1d);});}})['then'](function(){_0x2f4836();})[_0x1092('0x2a')](function(_0x10b88a){_0x2f4836(_0x10b88a);});},'afterDestroy':function(_0x48625c,_0x23dda1){return _0x2aa514[_0x1092('0x38')][_0x1092('0x3b')]({'where':{'UserId':_0x48625c['id'],'type':_0x1092('0x3c')}});}},'instanceMethods':{'authenticate':function(_0x27d402,_0x57f6c4){if(!_0x57f6c4){return this['password']===this[_0x1092('0x3d')](_0x27d402);}var _0x231294=this;this[_0x1092('0x3d')](_0x27d402,function(_0x1cffe3,_0x4f80df){if(_0x1cffe3){_0x57f6c4(_0x1cffe3);}if(_0x231294[_0x1092('0x15')]===_0x4f80df){_0x57f6c4(null,!![]);}else{_0x57f6c4(null,![]);}});},'makeSalt':function(_0x446e7a,_0x1e5d60){var _0x4de622=0x10;if(typeof arguments[0x0]===_0x1092('0x3e')){_0x1e5d60=arguments[0x0];_0x446e7a=_0x4de622;}else if(typeof arguments[0x1]==='function'){_0x1e5d60=arguments[0x1];}else{throw new Error(_0x1092('0x3f'));}if(!_0x446e7a){_0x446e7a=_0x4de622;}return crypto['randomBytes'](_0x446e7a,function(_0xbe8335,_0x5555ab){if(_0xbe8335){_0x1e5d60(_0xbe8335);}return _0x1e5d60(null,_0x5555ab[_0x1092('0x40')]('base64'));});},'encryptPassword':function(_0x12d6da,_0x361572){if(!_0x12d6da||!this[_0x1092('0x41')]){return _0x361572?_0x361572(null):null;}var _0x1c8abd=0x2710;var _0xfbd219=0x40;var _0x134571=new Buffer(this['salt'],'base64');if(!_0x361572){return crypto['pbkdf2Sync'](_0x12d6da,_0x134571,_0x1c8abd,_0xfbd219,_0x1092('0x42'))[_0x1092('0x40')]('base64');}return crypto['pbkdf2'](_0x12d6da,_0x134571,_0x1c8abd,_0xfbd219,_0x1092('0x42'),function(_0x3beddf,_0x4d4a31){if(_0x3beddf){_0x361572(_0x3beddf);}return _0x361572(null,_0x4d4a31[_0x1092('0x40')](_0x1092('0x43')));});},'updatePassword':function(_0x1bf99c){if(!this['password']){return _0x1bf99c(null);}if(!validatePresenceOf(this[_0x1092('0x15')])&&authTypes['indexOf'](this['provider'])===-0x1){_0x1bf99c(new Error(_0x1092('0x44')));}var _0x43dabd=this;this[_0x1092('0x45')](function(_0x139c5e,_0xac3af6){if(_0x139c5e){return _0x1bf99c(_0x139c5e);}_0x43dabd[_0x1092('0x41')]=_0xac3af6;_0x43dabd[_0x1092('0x3d')](_0x43dabd['password'],function(_0x58d10b,_0x449d2f){if(_0x58d10b){_0x1bf99c(_0x58d10b);}_0x43dabd[_0x1092('0x15')]=_0x449d2f;_0x1bf99c(null);});});},'updateMd5Password':function(){this[_0x1092('0x46')]=md5(this[_0x1092('0x16')]+_0x1092('0x47')+this[_0x1092('0x15')]);return this['md5secret'];}}});};
\ No newline at end of file
index 962ae22..0d5cf3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aff=['find','where','role','internal','interface','UserVoiceQueueRt','update','MemberReport','name','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','push','isNil','format','SIP/%s','DEFAULT\x20PAUSE','body','uniqueid','bulkCreate','type','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','system','mail','fax','sms','whatsapp','set','Pause','forEach','all','LogoutUser','destroy','phone','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','loginInPause','merge','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','User,\x20%s,\x20%s','message','GetUser','User','findAll','options','raw','attributes','limit','include','model','map','then','catch','ShowUser'];(function(_0x4f6a9e,_0x5358cc){var _0x31a345=function(_0x26e7c4){while(--_0x26e7c4){_0x4f6a9e['push'](_0x4f6a9e['shift']());}};_0x31a345(++_0x5358cc);}(_0x1aff,0x1ee));var _0xf1af=function(_0x1529e9,_0x336073){_0x1529e9=_0x1529e9-0x0;var _0x2e7b91=_0x1aff[_0x1529e9];return _0x2e7b91;};'use strict';var _=require('lodash');var util=require(_0xf1af('0x0'));var moment=require(_0xf1af('0x1'));var BPromise=require(_0xf1af('0x2'));var rs=require(_0xf1af('0x3'));var fs=require('fs');var Redis=require(_0xf1af('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf1af('0x5'))(_0xf1af('0x6'));var config=require(_0xf1af('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xf1af('0x8')]=_[_0xf1af('0x9')](config['redis'],{'host':_0xf1af('0xa'),'port':0x18eb});var socket=require(_0xf1af('0xb'))(new Redis(config[_0xf1af('0x8')]));require(_0xf1af('0xc'))['register'](socket);function respondWithRpcPromise(_0x96214,_0x4d714a,_0x450687){return new BPromise(function(_0xa92686,_0xdd2420){return client['request'](_0x96214,_0x450687)['then'](function(_0xfff3e1){logger[_0xf1af('0xd')]('User,\x20%s,\x20%s',_0x4d714a,_0xf1af('0xe'));logger[_0xf1af('0xf')](_0xf1af('0x10'),_0x4d714a,_0xf1af('0xe'),JSON[_0xf1af('0x11')](_0xfff3e1));if(_0xfff3e1[_0xf1af('0x12')]){if(_0xfff3e1[_0xf1af('0x12')]['code']===0x1f4){logger['error'](_0xf1af('0x13'),_0x4d714a,_0xfff3e1[_0xf1af('0x12')][_0xf1af('0x14')]);return _0xdd2420(_0xfff3e1['error']['message']);}logger['error'](_0xf1af('0x13'),_0x4d714a,_0xfff3e1[_0xf1af('0x12')][_0xf1af('0x14')]);return _0xa92686(_0xfff3e1[_0xf1af('0x12')]['message']);}else{logger[_0xf1af('0xd')](_0xf1af('0x13'),_0x4d714a,'request\x20sent');_0xa92686(_0xfff3e1['result'][_0xf1af('0x14')]);}})['catch'](function(_0x449387){logger[_0xf1af('0x12')](_0xf1af('0x13'),_0x4d714a,_0x449387);_0xdd2420(_0x449387);});});}exports[_0xf1af('0x15')]=function(_0x2b681e){var _0x26233e=this;return new Promise(function(_0x3daa1a,_0x479e4f){return db[_0xf1af('0x16')][_0xf1af('0x17')]({'raw':_0x2b681e[_0xf1af('0x18')]?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x19')]===undefined?!![]:![]:!![],'where':_0x2b681e[_0xf1af('0x18')]?_0x2b681e['options']['where']||null:null,'attributes':_0x2b681e['options']?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x1a')]||null:null,'limit':_0x2b681e[_0xf1af('0x18')]?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x1b')]||null:null,'include':_0x2b681e[_0xf1af('0x18')]?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x1c')]?_['map'](_0x2b681e['options'][_0xf1af('0x1c')],function(_0x52532a){return{'model':db[_0x52532a[_0xf1af('0x1d')]],'as':_0x52532a['as'],'attributes':_0x52532a[_0xf1af('0x1a')],'include':_0x52532a['include']?_[_0xf1af('0x1e')](_0x52532a[_0xf1af('0x1c')],function(_0x223493){return{'model':db[_0x223493[_0xf1af('0x1d')]],'as':_0x223493['as'],'attributes':_0x223493[_0xf1af('0x1a')],'include':_0x223493[_0xf1af('0x1c')]?_[_0xf1af('0x1e')](_0x223493[_0xf1af('0x1c')],function(_0x1ff25b){return{'model':db[_0x1ff25b['model']],'as':_0x1ff25b['as'],'attributes':_0x1ff25b[_0xf1af('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf1af('0x1f')](function(_0x5ac3ff){logger[_0xf1af('0xd')]('GetUser',_0x2b681e);logger[_0xf1af('0xf')](_0xf1af('0x15'),_0x2b681e,JSON[_0xf1af('0x11')](_0x5ac3ff));_0x3daa1a(_0x5ac3ff);})[_0xf1af('0x20')](function(_0x42ac53){logger[_0xf1af('0x12')](_0xf1af('0x15'),_0x42ac53[_0xf1af('0x14')],_0x2b681e);_0x479e4f(_0x26233e[_0xf1af('0x12')](0x1f4,_0x42ac53[_0xf1af('0x14')]));});});};exports[_0xf1af('0x21')]=function(_0x50f5b4){var _0x445dc2=this;return new Promise(function(_0x24a0db,_0x49d6a1){return db[_0xf1af('0x16')][_0xf1af('0x22')]({'raw':_0x50f5b4[_0xf1af('0x18')]?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x19')]===undefined?!![]:![]:!![],'where':_0x50f5b4['options']?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x23')]||null:null,'attributes':_0x50f5b4[_0xf1af('0x18')]?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x1a')]||null:null,'include':_0x50f5b4['options']?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x1c')]?_[_0xf1af('0x1e')](_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x1c')],function(_0x34cd54){return{'model':db[_0x34cd54['model']],'as':_0x34cd54['as'],'attributes':_0x34cd54[_0xf1af('0x1a')],'include':_0x34cd54[_0xf1af('0x1c')]?_[_0xf1af('0x1e')](_0x34cd54[_0xf1af('0x1c')],function(_0x47bea6){return{'model':db[_0x47bea6['model']],'as':_0x47bea6['as'],'attributes':_0x47bea6['attributes'],'include':_0x47bea6[_0xf1af('0x1c')]?_['map'](_0x47bea6[_0xf1af('0x1c')],function(_0x9849cc){return{'model':db[_0x9849cc[_0xf1af('0x1d')]],'as':_0x9849cc['as'],'attributes':_0x9849cc['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1af('0x1f')](function(_0x423df0){logger[_0xf1af('0xd')](_0xf1af('0x21'),_0x50f5b4);logger[_0xf1af('0xf')](_0xf1af('0x21'),_0x50f5b4,JSON[_0xf1af('0x11')](_0x423df0));_0x24a0db(_0x423df0);})[_0xf1af('0x20')](function(_0x335ac7){logger[_0xf1af('0x12')](_0xf1af('0x21'),_0x335ac7[_0xf1af('0x14')],_0x50f5b4);_0x49d6a1(_0x445dc2[_0xf1af('0x12')](0x1f4,_0x335ac7['message']));});});};exports['PauseUser']=function(_0x479e4d){var _0x4bb0a6=this;return new Promise(function(_0x474781,_0xca9c80){var _0x8c1fb5;return db[_0xf1af('0x16')][_0xf1af('0x22')]({'where':_0x479e4d[_0xf1af('0x18')][_0xf1af('0x23')]||{},'attributes':['id','name',_0xf1af('0x24'),_0xf1af('0x25'),_0xf1af('0x26')]})[_0xf1af('0x1f')](function(_0x267b39){if(_0x267b39){_0x8c1fb5=_0x267b39;return db[_0xf1af('0x27')][_0xf1af('0x28')]({'paused':0x1},{'where':{'UserId':_0x8c1fb5['id']},'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x8c1fb5){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x8c1fb5[_0xf1af('0x2a')],'type':_0xf1af('0x2b'),'exitAt':null}});}})[_0xf1af('0x1f')](function(_0x127a01){if(_0x8c1fb5){if(_0x127a01&&_0x127a01[_0xf1af('0x2c')]){var _0x10cb50=moment()['format'](_0xf1af('0x2d'));for(var _0x5a99c9=0x0,_0x54338f=_0x127a01['length'];_0x5a99c9<_0x54338f;_0x5a99c9++){_0x127a01[_0x5a99c9][_0xf1af('0x2e')]({'exitAt':_0x10cb50});}}}})['then'](function(){if(_0x8c1fb5){var _0x3ca4a3=[];var _0x493aea=utils[_0xf1af('0x2f')]();_0x493aea['forEach'](function(_0x5cfb15){_0x3ca4a3[_0xf1af('0x30')]({'channel':_0x5cfb15,'membername':_0x8c1fb5[_0xf1af('0x2a')],'interface':_[_0xf1af('0x31')](_0x8c1fb5['interface'])?util[_0xf1af('0x32')](_0xf1af('0x33'),_0x8c1fb5[_0xf1af('0x2a')]):_0x8c1fb5[_0xf1af('0x26')],'type':_0xf1af('0x2b'),'enterAt':moment()[_0xf1af('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x479e4d['body']['type']||_0xf1af('0x34'),'role':_0x8c1fb5[_0xf1af('0x24')],'internal':_0x8c1fb5[_0xf1af('0x25')],'uniqueid':_0x479e4d[_0xf1af('0x35')][_0xf1af('0x36')]||null});});return db[_0xf1af('0x29')][_0xf1af('0x37')](_0x3ca4a3,{'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x8c1fb5){return _0x8c1fb5[_0xf1af('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x479e4d[_0xf1af('0x35')][_0xf1af('0x38')]||_0xf1af('0x34'),'lastPauseAt':moment()[_0xf1af('0x32')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x5e9bcc){_0x474781(_0x5e9bcc);})['catch'](function(_0x3b46c6){_0xca9c80(_0x4bb0a6['error'](0x1f4,_0x3b46c6[_0xf1af('0x14')]));});});};exports[_0xf1af('0x39')]=function(_0x46a710){var _0x13a57d=this;return new Promise(function(_0x4975f8,_0x4c213a){var _0x4f71b9;return db[_0xf1af('0x16')][_0xf1af('0x3a')]({'where':_0x46a710[_0xf1af('0x18')]['where']||{},'attributes':['id',_0xf1af('0x2a')]})[_0xf1af('0x1f')](function(_0x12c209){if(_0x12c209){_0x4f71b9=_0x12c209;if(_0x46a710[_0xf1af('0x35')][_0xf1af('0x3b')]&&!utils[_0xf1af('0x3c')](_0x46a710['body'][_0xf1af('0x3b')])){throw new Error(_0xf1af('0x3d'));}switch(_0x46a710[_0xf1af('0x35')]['channel']){case'voice':return db[_0xf1af('0x27')][_0xf1af('0x28')]({'paused':0x0},{'where':{'UserId':_0x4f71b9['id']}})[_0xf1af('0x1f')](function(){return db[_0xf1af('0x29')][_0xf1af('0x22')]({'where':{'channel':_0x46a710[_0xf1af('0x35')]['channel'],'membername':_0x4f71b9[_0xf1af('0x2a')],'type':_0xf1af('0x2b'),'exitAt':null}});})[_0xf1af('0x1f')](function(_0x5cdf80){if(_0x5cdf80){return _0x5cdf80[_0xf1af('0x28')]({'exitAt':moment()['format'](_0xf1af('0x2d')),'data2':_0xf1af('0x3e')},{'individualHooks':!![]});}return null;})[_0xf1af('0x1f')](function(){return _0x4f71b9[_0xf1af('0x28')]({'voicePause':![]});});case _0xf1af('0x3f'):case'chat':case _0xf1af('0x40'):case _0xf1af('0x41'):case'openchannel':case _0xf1af('0x42'):return db[_0xf1af('0x29')][_0xf1af('0x22')]({'where':{'channel':_0x46a710[_0xf1af('0x35')][_0xf1af('0x3b')],'membername':_0x4f71b9['name'],'type':'PAUSE','exitAt':null}})[_0xf1af('0x1f')](function(_0x57f27a){return _0x57f27a[_0xf1af('0x28')]({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'data2':_0xf1af('0x3e')},{'individualHooks':!![]});})['then'](function(){var _0x5842ee={};_[_0xf1af('0x43')](_0x5842ee,util[_0xf1af('0x32')]('%s%s',_0x46a710[_0xf1af('0x35')][_0xf1af('0x3b')],_0xf1af('0x44')),![]);return _0x4f71b9[_0xf1af('0x28')](_0x5842ee);});default:return db[_0xf1af('0x27')][_0xf1af('0x28')]({'paused':0x0},{'where':{'UserId':_0x4f71b9['id']}})[_0xf1af('0x1f')](function(){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x4f71b9[_0xf1af('0x2a')],'type':_0xf1af('0x2b'),'exitAt':null}});})[_0xf1af('0x1f')](function(_0x497ea6){var _0x5b582d=[];_0x497ea6[_0xf1af('0x45')](function(_0x3e3ffe){_0x5b582d[_0xf1af('0x30')](_0x3e3ffe[_0xf1af('0x28')]({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'data2':'system'}));});return BPromise[_0xf1af('0x46')](_0x5b582d);})['then'](function(){return _0x4f71b9[_0xf1af('0x28')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x48c703){_0x4975f8(_0x48c703);})[_0xf1af('0x20')](function(_0x4b207c){_0x4c213a(_0x13a57d[_0xf1af('0x12')](0x1f4,_0x4b207c[_0xf1af('0x14')]));});});};exports[_0xf1af('0x47')]=function(_0x1c49a2){var _0xb2655a=this;return new Promise(function(_0x5c7b37,_0x17d606){var _0x6cde84;return db[_0xf1af('0x16')][_0xf1af('0x3a')]({'where':_0x1c49a2['options']['where']||{},'attributes':['id',_0xf1af('0x2a')]})[_0xf1af('0x1f')](function(_0x5643b2){if(_0x5643b2){_0x6cde84=_0x5643b2;return db['UserVoiceQueueRt'][_0xf1af('0x48')]({'where':{'membername':_0x6cde84[_0xf1af('0x2a')]},'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x6cde84){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x6cde84[_0xf1af('0x2a')],'exitAt':null}});}})[_0xf1af('0x1f')](function(_0x4811f7){if(_0x6cde84){if(_0x4811f7&&_0x4811f7[_0xf1af('0x2c')]){var _0xe2ee4a=[];_0x4811f7[_0xf1af('0x45')](function(_0x1a1f3b){_0xe2ee4a[_0xf1af('0x30')](_0x1a1f3b['update']({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d'))}));});return BPromise[_0xf1af('0x46')](_0xe2ee4a);}}})[_0xf1af('0x1f')](function(){if(_0x6cde84){return _0x6cde84[_0xf1af('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x2ce642){_0x5c7b37(_0x2ce642);})['catch'](function(_0x4d9882){_0x17d606(_0xb2655a[_0xf1af('0x12')](0x1f4,_0x4d9882[_0xf1af('0x14')]));});});};exports['LoginUser']=function(_0x537cee){var _0x7fb5c9=this;return new Promise(function(_0x7d7e4a,_0x1e2ca1){var _0x1f370a;var _0x4add3e;var _0x204943;var _0x30489d;return db[_0xf1af('0x16')]['findOne']({'where':_0x537cee[_0xf1af('0x18')][_0xf1af('0x23')]||{},'attributes':['id',_0xf1af('0x2a'),_0xf1af('0x24'),'mobile',_0xf1af('0x49'),_0xf1af('0x25'),'loginInPause',_0xf1af('0x26')]})['then'](function(_0x26465){if(_0x26465){_0x1f370a=_0x26465;_0x30489d=_0x537cee[_0xf1af('0x35')][_0xf1af('0x26')]?_0x537cee[_0xf1af('0x35')]['interface']:util[_0xf1af('0x32')](_0xf1af('0x33'),_0x1f370a[_0xf1af('0x2a')]);return db[_0xf1af('0x16')][_0xf1af('0x4a')]({'where':{'role':_0xf1af('0x4b'),'online':!![],'id':{'$ne':_0x1f370a['id']}}});}})[_0xf1af('0x1f')](function(_0x195e33){if(_0x195e33){_0x204943=_0x195e33;return require(_0xf1af('0x4c'))[_0xf1af('0x4d')]();}})[_0xf1af('0x1f')](function(_0x452728){if(_0x452728&&_0x452728[_0xf1af('0x4e')]&&_0x204943>=_0x452728[_0xf1af('0x4e')]){throw new Error(_0xf1af('0x4f'));}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return db['UserVoiceQueueRt'][_0xf1af('0x48')]({'where':{'membername':_0x1f370a[_0xf1af('0x2a')]},'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return _0x1f370a[_0xf1af('0x50')]({'raw':!![]});}})['then'](function(_0x41cf95){if(_0x1f370a){if(_0x41cf95){var _0x1c34cd=[];_0x4add3e=_0x41cf95;if(_0x4add3e[_0xf1af('0x2c')]){for(var _0x207cb2=0x0;_0x207cb2<_0x4add3e[_0xf1af('0x2c')];_0x207cb2++){_0x1c34cd[_0xf1af('0x30')](db[_0xf1af('0x27')][_0xf1af('0x51')]({'membername':_0x1f370a['name'],'UserId':_0x1f370a['id'],'queue_name':_0x4add3e[_0x207cb2][_0xf1af('0x2a')],'VoiceQueueId':_0x4add3e[_0x207cb2]['id'],'interface':_0x30489d,'paused':_0x1f370a[_0xf1af('0x52')]||![],'penalty':_0x4add3e[_0x207cb2]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x1c34cd);}}}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x1f370a['name'],'exitAt':null}});}})['then'](function(_0x1430f2){if(_0x1f370a){if(_0x1430f2&&_0x1430f2[_0xf1af('0x2c')]){var _0x777b77=[];_0x1430f2[_0xf1af('0x45')](function(_0x52a539){_0x777b77[_0xf1af('0x30')](_0x52a539[_0xf1af('0x28')]({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d'))}));});return BPromise[_0xf1af('0x46')](_0x777b77);}}})[_0xf1af('0x1f')](function(_0x4bc98b){if(_0x1f370a){var _0x57b9a3=[];var _0x52f6b4=[];var _0x318c9d=utils[_0xf1af('0x2f')]();var _0x3d5d82={'membername':_0x1f370a['name'],'interface':_0x30489d,'enterAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'role':_0x1f370a[_0xf1af('0x24')],'internal':_0x1f370a[_0xf1af('0x25')]};_0x318c9d[_0xf1af('0x45')](function(_0x2c9555){_0x57b9a3[_0xf1af('0x30')](_[_0xf1af('0x53')]({'channel':_0x2c9555,'type':_0xf1af('0x54'),'data1':_0xf1af('0x55'),'data2':_0x30489d},_0x3d5d82));if(_0x1f370a[_0xf1af('0x52')]){_0x52f6b4[_0xf1af('0x30')](_[_0xf1af('0x53')]({'channel':_0x2c9555,'type':_0xf1af('0x2b'),'data1':_0xf1af('0x56')},_0x3d5d82));}});return db[_0xf1af('0x29')][_0xf1af('0x37')](_0x57b9a3[_0xf1af('0x57')](_0x52f6b4),{'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return _0x1f370a['update']({'online':!![],'lastLoginAt':moment()[_0xf1af('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1f370a[_0xf1af('0x52')]||![],'mailPause':_0x1f370a[_0xf1af('0x52')]||![],'chatPause':_0x1f370a[_0xf1af('0x52')]||![],'faxPause':_0x1f370a[_0xf1af('0x52')]||![],'smsPause':_0x1f370a[_0xf1af('0x52')]||![],'openchannelPause':_0x1f370a[_0xf1af('0x52')]||![],'pauseType':_0x1f370a[_0xf1af('0x52')]?_0xf1af('0x56'):null,'lastPauseAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'interface':_0x30489d});}})[_0xf1af('0x1f')](function(_0x220b99){_0x7d7e4a(_0x220b99);})[_0xf1af('0x20')](function(_0x187b38){_0x1e2ca1(_0x7fb5c9[_0xf1af('0x12')](0x1f4,_0x187b38['message']));});});};
\ No newline at end of file
+var _0xff85=['phone','loginInPause','SIP/%s','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','callysquare','LOGININPAUSE','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetUser','options','raw','where','limit','map','include','model','attributes','catch','ShowUser','find','User','name','role','UserVoiceQueueRt','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','interface','PAUSE','DEFAULT\x20PAUSE','internal','body','uniqueid','update','type','UnpauseUser','channel','isValidChannel','Unknown\x20channel','voice','system','mail','chat','fax','openchannel','whatsapp','set','%s%s','Pause','push','all','findOne','destroy','LoginUser','mobile'];(function(_0x128a73,_0x26c676){var _0x210caa=function(_0x47ac0f){while(--_0x47ac0f){_0x128a73['push'](_0x128a73['shift']());}};_0x210caa(++_0x26c676);}(_0xff85,0x181));var _0x5ff8=function(_0x5b2864,_0x126d11){_0x5b2864=_0x5b2864-0x0;var _0x353b96=_0xff85[_0x5b2864];return _0x353b96;};'use strict';var _=require('lodash');var util=require(_0x5ff8('0x0'));var moment=require(_0x5ff8('0x1'));var BPromise=require('bluebird');var rs=require(_0x5ff8('0x2'));var fs=require('fs');var Redis=require(_0x5ff8('0x3'));var db=require(_0x5ff8('0x4'))['db'];var utils=require(_0x5ff8('0x5'));var logger=require(_0x5ff8('0x6'))(_0x5ff8('0x7'));var config=require(_0x5ff8('0x8'));var jayson=require(_0x5ff8('0x9'));var client=jayson[_0x5ff8('0xa')][_0x5ff8('0xb')]({'port':0x232a});config[_0x5ff8('0xc')]=_[_0x5ff8('0xd')](config[_0x5ff8('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5ff8('0xe'))(new Redis(config[_0x5ff8('0xc')]));require(_0x5ff8('0xf'))[_0x5ff8('0x10')](socket);function respondWithRpcPromise(_0x2e2711,_0x58933d,_0x574489){return new BPromise(function(_0x302eed,_0x1ef696){return client[_0x5ff8('0x11')](_0x2e2711,_0x574489)[_0x5ff8('0x12')](function(_0x499e7e){logger[_0x5ff8('0x13')](_0x5ff8('0x14'),_0x58933d,'request\x20sent');logger[_0x5ff8('0x15')](_0x5ff8('0x16'),_0x58933d,'request\x20sent',JSON[_0x5ff8('0x17')](_0x499e7e));if(_0x499e7e[_0x5ff8('0x18')]){if(_0x499e7e[_0x5ff8('0x18')][_0x5ff8('0x19')]===0x1f4){logger[_0x5ff8('0x18')](_0x5ff8('0x14'),_0x58933d,_0x499e7e[_0x5ff8('0x18')][_0x5ff8('0x1a')]);return _0x1ef696(_0x499e7e[_0x5ff8('0x18')][_0x5ff8('0x1a')]);}logger[_0x5ff8('0x18')](_0x5ff8('0x14'),_0x58933d,_0x499e7e[_0x5ff8('0x18')]['message']);return _0x302eed(_0x499e7e[_0x5ff8('0x18')]['message']);}else{logger['info'](_0x5ff8('0x14'),_0x58933d,'request\x20sent');_0x302eed(_0x499e7e['result']['message']);}})['catch'](function(_0x3f3200){logger['error'](_0x5ff8('0x14'),_0x58933d,_0x3f3200);_0x1ef696(_0x3f3200);});});}exports[_0x5ff8('0x1b')]=function(_0x391897){var _0x29afcd=this;return new Promise(function(_0x444bfd,_0x19529a){return db['User']['findAll']({'raw':_0x391897[_0x5ff8('0x1c')]?_0x391897[_0x5ff8('0x1c')][_0x5ff8('0x1d')]===undefined?!![]:![]:!![],'where':_0x391897['options']?_0x391897[_0x5ff8('0x1c')][_0x5ff8('0x1e')]||null:null,'attributes':_0x391897[_0x5ff8('0x1c')]?_0x391897[_0x5ff8('0x1c')]['attributes']||null:null,'limit':_0x391897[_0x5ff8('0x1c')]?_0x391897[_0x5ff8('0x1c')][_0x5ff8('0x1f')]||null:null,'include':_0x391897[_0x5ff8('0x1c')]?_0x391897[_0x5ff8('0x1c')]['include']?_[_0x5ff8('0x20')](_0x391897['options'][_0x5ff8('0x21')],function(_0x48ff7e){return{'model':db[_0x48ff7e[_0x5ff8('0x22')]],'as':_0x48ff7e['as'],'attributes':_0x48ff7e[_0x5ff8('0x23')],'include':_0x48ff7e['include']?_[_0x5ff8('0x20')](_0x48ff7e[_0x5ff8('0x21')],function(_0x2e67df){return{'model':db[_0x2e67df[_0x5ff8('0x22')]],'as':_0x2e67df['as'],'attributes':_0x2e67df['attributes'],'include':_0x2e67df['include']?_[_0x5ff8('0x20')](_0x2e67df['include'],function(_0x258f50){return{'model':db[_0x258f50[_0x5ff8('0x22')]],'as':_0x258f50['as'],'attributes':_0x258f50['attributes']};}):[]};}):[]};}):[]:[]})[_0x5ff8('0x12')](function(_0xe29051){logger[_0x5ff8('0x13')](_0x5ff8('0x1b'),_0x391897);logger[_0x5ff8('0x15')](_0x5ff8('0x1b'),_0x391897,JSON[_0x5ff8('0x17')](_0xe29051));_0x444bfd(_0xe29051);})[_0x5ff8('0x24')](function(_0x319c84){logger[_0x5ff8('0x18')](_0x5ff8('0x1b'),_0x319c84[_0x5ff8('0x1a')],_0x391897);_0x19529a(_0x29afcd['error'](0x1f4,_0x319c84[_0x5ff8('0x1a')]));});});};exports[_0x5ff8('0x25')]=function(_0x411e0f){var _0x279e1e=this;return new Promise(function(_0x312efc,_0x537bb0){return db['User'][_0x5ff8('0x26')]({'raw':_0x411e0f[_0x5ff8('0x1c')]?_0x411e0f[_0x5ff8('0x1c')][_0x5ff8('0x1d')]===undefined?!![]:![]:!![],'where':_0x411e0f[_0x5ff8('0x1c')]?_0x411e0f[_0x5ff8('0x1c')]['where']||null:null,'attributes':_0x411e0f['options']?_0x411e0f[_0x5ff8('0x1c')][_0x5ff8('0x23')]||null:null,'include':_0x411e0f[_0x5ff8('0x1c')]?_0x411e0f[_0x5ff8('0x1c')][_0x5ff8('0x21')]?_[_0x5ff8('0x20')](_0x411e0f[_0x5ff8('0x1c')][_0x5ff8('0x21')],function(_0x186c37){return{'model':db[_0x186c37[_0x5ff8('0x22')]],'as':_0x186c37['as'],'attributes':_0x186c37['attributes'],'include':_0x186c37[_0x5ff8('0x21')]?_[_0x5ff8('0x20')](_0x186c37['include'],function(_0x3808f6){return{'model':db[_0x3808f6[_0x5ff8('0x22')]],'as':_0x3808f6['as'],'attributes':_0x3808f6['attributes'],'include':_0x3808f6[_0x5ff8('0x21')]?_[_0x5ff8('0x20')](_0x3808f6['include'],function(_0x27da04){return{'model':db[_0x27da04['model']],'as':_0x27da04['as'],'attributes':_0x27da04['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c081d){logger[_0x5ff8('0x13')](_0x5ff8('0x25'),_0x411e0f);logger['debug'](_0x5ff8('0x25'),_0x411e0f,JSON[_0x5ff8('0x17')](_0x5c081d));_0x312efc(_0x5c081d);})[_0x5ff8('0x24')](function(_0x5944c4){logger[_0x5ff8('0x18')](_0x5ff8('0x25'),_0x5944c4[_0x5ff8('0x1a')],_0x411e0f);_0x537bb0(_0x279e1e['error'](0x1f4,_0x5944c4[_0x5ff8('0x1a')]));});});};exports['PauseUser']=function(_0x3e51b4){var _0x26d4e5=this;return new Promise(function(_0x212303,_0x73ea71){var _0x9b9ed;return db[_0x5ff8('0x27')][_0x5ff8('0x26')]({'where':_0x3e51b4[_0x5ff8('0x1c')]['where']||{},'attributes':['id',_0x5ff8('0x28'),_0x5ff8('0x29'),'internal','interface']})[_0x5ff8('0x12')](function(_0x15ac68){if(_0x15ac68){_0x9b9ed=_0x15ac68;return db[_0x5ff8('0x2a')]['update']({'paused':0x1},{'where':{'UserId':_0x9b9ed['id']},'individualHooks':!![]});}})[_0x5ff8('0x12')](function(){if(_0x9b9ed){return db[_0x5ff8('0x2b')][_0x5ff8('0x2c')]({'where':{'membername':_0x9b9ed[_0x5ff8('0x28')],'type':'PAUSE','exitAt':null}});}})['then'](function(_0x394e95){if(_0x9b9ed){if(_0x394e95&&_0x394e95[_0x5ff8('0x2d')]){var _0x35847d=moment()[_0x5ff8('0x2e')](_0x5ff8('0x2f'));for(var _0x140c51=0x0,_0x53ba7b=_0x394e95[_0x5ff8('0x2d')];_0x140c51<_0x53ba7b;_0x140c51++){_0x394e95[_0x140c51][_0x5ff8('0x30')]({'exitAt':_0x35847d});}}}})[_0x5ff8('0x12')](function(){if(_0x9b9ed){var _0x4d84c6=[];var _0x3548f1=utils[_0x5ff8('0x31')]();_0x3548f1[_0x5ff8('0x32')](function(_0x432d68){_0x4d84c6['push']({'channel':_0x432d68,'membername':_0x9b9ed[_0x5ff8('0x28')],'interface':_[_0x5ff8('0x33')](_0x9b9ed[_0x5ff8('0x34')])?util[_0x5ff8('0x2e')]('SIP/%s',_0x9b9ed[_0x5ff8('0x28')]):_0x9b9ed[_0x5ff8('0x34')],'type':_0x5ff8('0x35'),'enterAt':moment()[_0x5ff8('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x3e51b4['body']['type']||_0x5ff8('0x36'),'role':_0x9b9ed[_0x5ff8('0x29')],'internal':_0x9b9ed[_0x5ff8('0x37')],'uniqueid':_0x3e51b4[_0x5ff8('0x38')][_0x5ff8('0x39')]||null});});return db[_0x5ff8('0x2b')]['bulkCreate'](_0x4d84c6,{'individualHooks':!![]});}})[_0x5ff8('0x12')](function(){if(_0x9b9ed){return _0x9b9ed[_0x5ff8('0x3a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3e51b4[_0x5ff8('0x38')][_0x5ff8('0x3b')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x5ff8('0x2e')](_0x5ff8('0x2f'))});}})[_0x5ff8('0x12')](function(_0x76659b){_0x212303(_0x76659b);})['catch'](function(_0x42930e){_0x73ea71(_0x26d4e5[_0x5ff8('0x18')](0x1f4,_0x42930e['message']));});});};exports[_0x5ff8('0x3c')]=function(_0x19c4ac){var _0x373939=this;return new Promise(function(_0x5985a2,_0x4c67f5){var _0x5f13b2;return db[_0x5ff8('0x27')]['findOne']({'where':_0x19c4ac[_0x5ff8('0x1c')][_0x5ff8('0x1e')]||{},'attributes':['id',_0x5ff8('0x28')]})[_0x5ff8('0x12')](function(_0x1a9eee){if(_0x1a9eee){_0x5f13b2=_0x1a9eee;if(_0x19c4ac[_0x5ff8('0x38')][_0x5ff8('0x3d')]&&!utils[_0x5ff8('0x3e')](_0x19c4ac[_0x5ff8('0x38')][_0x5ff8('0x3d')])){throw new Error(_0x5ff8('0x3f'));}switch(_0x19c4ac[_0x5ff8('0x38')]['channel']){case _0x5ff8('0x40'):return db['UserVoiceQueueRt'][_0x5ff8('0x3a')]({'paused':0x0},{'where':{'UserId':_0x5f13b2['id']}})[_0x5ff8('0x12')](function(){return db[_0x5ff8('0x2b')][_0x5ff8('0x26')]({'where':{'channel':_0x19c4ac[_0x5ff8('0x38')]['channel'],'membername':_0x5f13b2[_0x5ff8('0x28')],'type':_0x5ff8('0x35'),'exitAt':null}});})[_0x5ff8('0x12')](function(_0x103b82){if(_0x103b82){return _0x103b82[_0x5ff8('0x3a')]({'exitAt':moment()[_0x5ff8('0x2e')](_0x5ff8('0x2f')),'data2':_0x5ff8('0x41')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x5f13b2[_0x5ff8('0x3a')]({'voicePause':![]});});case _0x5ff8('0x42'):case _0x5ff8('0x43'):case _0x5ff8('0x44'):case'sms':case _0x5ff8('0x45'):case _0x5ff8('0x46'):return db[_0x5ff8('0x2b')][_0x5ff8('0x26')]({'where':{'channel':_0x19c4ac[_0x5ff8('0x38')]['channel'],'membername':_0x5f13b2[_0x5ff8('0x28')],'type':'PAUSE','exitAt':null}})[_0x5ff8('0x12')](function(_0x2631ec){return _0x2631ec[_0x5ff8('0x3a')]({'exitAt':moment()[_0x5ff8('0x2e')](_0x5ff8('0x2f')),'data2':_0x5ff8('0x41')},{'individualHooks':!![]});})['then'](function(){var _0xef4f84={};_[_0x5ff8('0x47')](_0xef4f84,util[_0x5ff8('0x2e')](_0x5ff8('0x48'),_0x19c4ac[_0x5ff8('0x38')][_0x5ff8('0x3d')],_0x5ff8('0x49')),![]);return _0x5f13b2[_0x5ff8('0x3a')](_0xef4f84);});default:return db[_0x5ff8('0x2a')][_0x5ff8('0x3a')]({'paused':0x0},{'where':{'UserId':_0x5f13b2['id']}})[_0x5ff8('0x12')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x5f13b2[_0x5ff8('0x28')],'type':_0x5ff8('0x35'),'exitAt':null}});})['then'](function(_0x3fd518){var _0x4c41e0=[];_0x3fd518['forEach'](function(_0x2489d0){_0x4c41e0[_0x5ff8('0x4a')](_0x2489d0[_0x5ff8('0x3a')]({'exitAt':moment()[_0x5ff8('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'}));});return BPromise[_0x5ff8('0x4b')](_0x4c41e0);})[_0x5ff8('0x12')](function(){return _0x5f13b2[_0x5ff8('0x3a')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x5ff8('0x12')](function(_0x4e44bd){_0x5985a2(_0x4e44bd);})[_0x5ff8('0x24')](function(_0x3afff2){_0x4c67f5(_0x373939['error'](0x1f4,_0x3afff2['message']));});});};exports['LogoutUser']=function(_0x291951){var _0x580c7c=this;return new Promise(function(_0x59f469,_0x852ba9){var _0x19ab4f;return db[_0x5ff8('0x27')][_0x5ff8('0x4c')]({'where':_0x291951[_0x5ff8('0x1c')]['where']||{},'attributes':['id',_0x5ff8('0x28')]})[_0x5ff8('0x12')](function(_0x31a68f){if(_0x31a68f){_0x19ab4f=_0x31a68f;return db[_0x5ff8('0x2a')][_0x5ff8('0x4d')]({'where':{'membername':_0x19ab4f[_0x5ff8('0x28')]},'individualHooks':!![]});}})[_0x5ff8('0x12')](function(){if(_0x19ab4f){return db[_0x5ff8('0x2b')][_0x5ff8('0x2c')]({'where':{'membername':_0x19ab4f[_0x5ff8('0x28')],'exitAt':null}});}})[_0x5ff8('0x12')](function(_0x4a0295){if(_0x19ab4f){if(_0x4a0295&&_0x4a0295[_0x5ff8('0x2d')]){var _0x2fae16=[];_0x4a0295['forEach'](function(_0x3f1d40){_0x2fae16[_0x5ff8('0x4a')](_0x3f1d40[_0x5ff8('0x3a')]({'exitAt':moment()[_0x5ff8('0x2e')](_0x5ff8('0x2f'))}));});return BPromise['all'](_0x2fae16);}}})['then'](function(){if(_0x19ab4f){return _0x19ab4f[_0x5ff8('0x3a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x5ff8('0x12')](function(_0x375d4b){_0x59f469(_0x375d4b);})['catch'](function(_0x58bf79){_0x852ba9(_0x580c7c['error'](0x1f4,_0x58bf79[_0x5ff8('0x1a')]));});});};exports[_0x5ff8('0x4e')]=function(_0x307161){var _0x3bb656=this;return new Promise(function(_0x2b7a18,_0x5dc52e){var _0xa1023b;var _0x3ab94f;var _0x337f46;var _0x293f8d;return db[_0x5ff8('0x27')]['findOne']({'where':_0x307161['options'][_0x5ff8('0x1e')]||{},'attributes':['id',_0x5ff8('0x28'),'role',_0x5ff8('0x4f'),_0x5ff8('0x50'),_0x5ff8('0x37'),_0x5ff8('0x51'),_0x5ff8('0x34')]})['then'](function(_0x5c21eb){if(_0x5c21eb){_0xa1023b=_0x5c21eb;_0x293f8d=_0x307161[_0x5ff8('0x38')][_0x5ff8('0x34')]?_0x307161[_0x5ff8('0x38')][_0x5ff8('0x34')]:util[_0x5ff8('0x2e')](_0x5ff8('0x52'),_0xa1023b[_0x5ff8('0x28')]);return db[_0x5ff8('0x27')][_0x5ff8('0x53')]({'where':{'role':_0x5ff8('0x54'),'online':!![],'id':{'$ne':_0xa1023b['id']}}});}})['then'](function(_0x232f3d){if(_0x232f3d){_0x337f46=_0x232f3d;return require(_0x5ff8('0x55'))[_0x5ff8('0x56')]();}})[_0x5ff8('0x12')](function(_0x498c45){if(_0x498c45&&_0x498c45['agents']&&_0x337f46>=_0x498c45[_0x5ff8('0x57')]){throw new Error(_0x5ff8('0x58'));}})[_0x5ff8('0x12')](function(){if(_0xa1023b){return db[_0x5ff8('0x2a')]['destroy']({'where':{'membername':_0xa1023b[_0x5ff8('0x28')]},'individualHooks':!![]});}})['then'](function(){if(_0xa1023b){return _0xa1023b[_0x5ff8('0x59')]({'raw':!![]});}})[_0x5ff8('0x12')](function(_0x57087f){if(_0xa1023b){if(_0x57087f){var _0x1db3a1=[];_0x3ab94f=_0x57087f;if(_0x3ab94f[_0x5ff8('0x2d')]){for(var _0x3730ee=0x0;_0x3730ee<_0x3ab94f[_0x5ff8('0x2d')];_0x3730ee++){_0x1db3a1['push'](db['UserVoiceQueueRt'][_0x5ff8('0x5a')]({'membername':_0xa1023b[_0x5ff8('0x28')],'UserId':_0xa1023b['id'],'queue_name':_0x3ab94f[_0x3730ee]['name'],'VoiceQueueId':_0x3ab94f[_0x3730ee]['id'],'interface':_0x293f8d,'paused':_0xa1023b[_0x5ff8('0x51')]||![],'penalty':_0x3ab94f[_0x3730ee]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x1db3a1);}}}})[_0x5ff8('0x12')](function(){if(_0xa1023b){return db[_0x5ff8('0x2b')][_0x5ff8('0x2c')]({'where':{'membername':_0xa1023b['name'],'exitAt':null}});}})[_0x5ff8('0x12')](function(_0x8db2ad){if(_0xa1023b){if(_0x8db2ad&&_0x8db2ad[_0x5ff8('0x2d')]){var _0x2810e3=[];_0x8db2ad[_0x5ff8('0x32')](function(_0x2f1a3c){_0x2810e3[_0x5ff8('0x4a')](_0x2f1a3c[_0x5ff8('0x3a')]({'exitAt':moment()[_0x5ff8('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x5ff8('0x4b')](_0x2810e3);}}})[_0x5ff8('0x12')](function(_0x51297c){if(_0xa1023b){var _0x541d57=[];var _0xb0ce78=[];var _0x336428=utils[_0x5ff8('0x31')]();var _0x5ec0d9={'membername':_0xa1023b[_0x5ff8('0x28')],'interface':_0x293f8d,'enterAt':moment()[_0x5ff8('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xa1023b[_0x5ff8('0x29')],'internal':_0xa1023b[_0x5ff8('0x37')]};_0x336428[_0x5ff8('0x32')](function(_0x389d7a){_0x541d57[_0x5ff8('0x4a')](_['merge']({'channel':_0x389d7a,'type':'LOGIN','data1':_0x5ff8('0x5b'),'data2':_0x293f8d},_0x5ec0d9));if(_0xa1023b['loginInPause']){_0xb0ce78[_0x5ff8('0x4a')](_['merge']({'channel':_0x389d7a,'type':_0x5ff8('0x35'),'data1':_0x5ff8('0x5c')},_0x5ec0d9));}});return db[_0x5ff8('0x2b')]['bulkCreate'](_0x541d57['concat'](_0xb0ce78),{'individualHooks':!![]});}})[_0x5ff8('0x12')](function(){if(_0xa1023b){return _0xa1023b[_0x5ff8('0x3a')]({'online':!![],'lastLoginAt':moment()['format'](_0x5ff8('0x2f')),'voicePause':_0xa1023b['loginInPause']||![],'mailPause':_0xa1023b[_0x5ff8('0x51')]||![],'chatPause':_0xa1023b[_0x5ff8('0x51')]||![],'faxPause':_0xa1023b['loginInPause']||![],'smsPause':_0xa1023b[_0x5ff8('0x51')]||![],'openchannelPause':_0xa1023b[_0x5ff8('0x51')]||![],'pauseType':_0xa1023b[_0x5ff8('0x51')]?_0x5ff8('0x5c'):null,'lastPauseAt':moment()[_0x5ff8('0x2e')](_0x5ff8('0x2f')),'interface':_0x293f8d});}})[_0x5ff8('0x12')](function(_0x4fb8c1){_0x2b7a18(_0x4fb8c1);})['catch'](function(_0x55f775){_0x5dc52e(_0x3bb656['error'](0x1f4,_0x55f775[_0x5ff8('0x1a')]));});});};
\ No newline at end of file
index 8219601..619a85d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af8=['user:','save','remove','update','emit','removeListener','length'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x4af8,0xe1));var _0x84af=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x4af8[_0x5c351c];return _0x26f3b3;};'use strict';var UserEvents=require('./user.events');var events=[_0x84af('0x0'),_0x84af('0x1'),_0x84af('0x2')];function createListener(_0xf9fc7,_0x29f8e1){return function(_0x215387){_0x29f8e1[_0x84af('0x3')](_0xf9fc7,_0x215387);};}function removeListener(_0x4775ea,_0x5bbe9f){return function(){UserEvents[_0x84af('0x4')](_0x4775ea,_0x5bbe9f);};}exports['register']=function(_0x227ff0){for(var _0xf72cf3=0x0,_0x39c831=events[_0x84af('0x5')];_0xf72cf3<_0x39c831;_0xf72cf3++){var _0x2c1837=events[_0xf72cf3];var _0x5d166a=createListener(_0x84af('0x6')+_0x2c1837,_0x227ff0);UserEvents['on'](_0x2c1837,_0x5d166a);}};
\ No newline at end of file
+var _0x2203=['user:','./user.events','save','remove','update','emit','removeListener','length'];(function(_0x5e3f87,_0x4d11d6){var _0x4c0bd8=function(_0x45d1e4){while(--_0x45d1e4){_0x5e3f87['push'](_0x5e3f87['shift']());}};_0x4c0bd8(++_0x4d11d6);}(_0x2203,0x169));var _0x3220=function(_0x285f9b,_0xfcae6c){_0x285f9b=_0x285f9b-0x0;var _0x32dd58=_0x2203[_0x285f9b];return _0x32dd58;};'use strict';var UserEvents=require(_0x3220('0x0'));var events=[_0x3220('0x1'),_0x3220('0x2'),_0x3220('0x3')];function createListener(_0x2fda49,_0x230c3c){return function(_0x5f2e87){_0x230c3c[_0x3220('0x4')](_0x2fda49,_0x5f2e87);};}function removeListener(_0x11a21a,_0x4e54a6){return function(){UserEvents[_0x3220('0x5')](_0x11a21a,_0x4e54a6);};}exports['register']=function(_0x338a43){for(var _0x477b45=0x0,_0x1a949c=events[_0x3220('0x6')];_0x477b45<_0x1a949c;_0x477b45++){var _0x15188b=events[_0x477b45];var _0x3858e4=createListener(_0x3220('0x7')+_0x15188b,_0x338a43);UserEvents['on'](_0x15188b,_0x3858e4);}};
\ No newline at end of file
index cdae3a8..694e4c9 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(_0x47ea78,_0x29dd32){var _0x11c0c7=function(_0x4cf6e8){while(--_0x4cf6e8){_0x47ea78['push'](_0x47ea78['shift']());}};_0x11c0c7(++_0x29dd32);}(_0xe706,0xa3));var _0x6e70=function(_0x543a4e,_0x544f2e){_0x543a4e=_0x543a4e-0x0;var _0x27a3a9=_0xe706[_0x543a4e];return _0x27a3a9;};'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(_0x3333f9,_0x2f53e4){var _0x67cc6c=function(_0x5c1d42){while(--_0x5c1d42){_0x3333f9['push'](_0x3333f9['shift']());}};_0x67cc6c(++_0x2f53e4);}(_0xe706,0xa3));var _0x6e70=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0xe706[_0x247fa1];return _0x244f35;};'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 5f62732..ed5a86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1061=['sequelize'];(function(_0xf3a8e,_0x332fc9){var _0x36c459=function(_0x2a24fb){while(--_0x2a24fb){_0xf3a8e['push'](_0xf3a8e['shift']());}};_0x36c459(++_0x332fc9);}(_0x1061,0x1b5));var _0x1106=function(_0x52ddce,_0x4acd7f){_0x52ddce=_0x52ddce-0x0;var _0x59cc1d=_0x1061[_0x52ddce];return _0x59cc1d;};'use strict';var Sequelize=require(_0x1106('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc69b=['exports','sequelize'];(function(_0x315314,_0x5ddafb){var _0x4e8d79=function(_0x50def5){while(--_0x50def5){_0x315314['push'](_0x315314['shift']());}};_0x4e8d79(++_0x5ddafb);}(_0xc69b,0x1d3));var _0xbc69=function(_0xad57ee,_0x2823a6){_0xad57ee=_0xad57ee-0x0;var _0x3eaea9=_0xc69b[_0xad57ee];return _0x3eaea9;};'use strict';var Sequelize=require(_0xbc69('0x0'));module[_0xbc69('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 0bc44ed..3471996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2903=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','UserChatQueue','user_has_chat_queues','lodash'];(function(_0x321faa,_0x4b1134){var _0x4e26a6=function(_0x2d7474){while(--_0x2d7474){_0x321faa['push'](_0x321faa['shift']());}};_0x4e26a6(++_0x4b1134);}(_0x2903,0x151));var _0x3290=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x2903[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0x3290('0x0'));var util=require(_0x3290('0x1'));var logger=require(_0x3290('0x2'))(_0x3290('0x3'));var moment=require(_0x3290('0x4'));var BPromise=require(_0x3290('0x5'));var rp=require(_0x3290('0x6'));var fs=require('fs');var path=require(_0x3290('0x7'));var rimraf=require(_0x3290('0x8'));var config=require(_0x3290('0x9'));var attributes=require(_0x3290('0xa'));module['exports']=function(_0xa82c3c,_0x2b795e){return _0xa82c3c['define'](_0x3290('0xb'),attributes,{'tableName':_0x3290('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf313=['./userChatQueue.attributes','exports','define','UserChatQueue','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0xb96ed1,_0x1bfa30){var _0x3f9e22=function(_0x3f5886){while(--_0x3f5886){_0xb96ed1['push'](_0xb96ed1['shift']());}};_0x3f9e22(++_0x1bfa30);}(_0xf313,0x190));var _0x3f31=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xf313[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x3f31('0x0'));var util=require(_0x3f31('0x1'));var logger=require('../../config/logger')(_0x3f31('0x2'));var moment=require(_0x3f31('0x3'));var BPromise=require('bluebird');var rp=require(_0x3f31('0x4'));var fs=require('fs');var path=require(_0x3f31('0x5'));var rimraf=require(_0x3f31('0x6'));var config=require(_0x3f31('0x7'));var attributes=require(_0x3f31('0x8'));module[_0x3f31('0x9')]=function(_0xbbda82,_0x1b1ded){return _0xbbda82[_0x3f31('0xa')](_0x3f31('0xb'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8315e81..02674bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6021=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','UserChatQueue,\x20%s,\x20%s','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment'];(function(_0x1e0c5c,_0x5d37c5){var _0x4d07db=function(_0x244282){while(--_0x244282){_0x1e0c5c['push'](_0x1e0c5c['shift']());}};_0x4d07db(++_0x5d37c5);}(_0x6021,0x18d));var _0x1602=function(_0x348878,_0x137f89){_0x348878=_0x348878-0x0;var _0x4066a1=_0x6021[_0x348878];return _0x4066a1;};'use strict';var _=require(_0x1602('0x0'));var util=require(_0x1602('0x1'));var moment=require(_0x1602('0x2'));var BPromise=require(_0x1602('0x3'));var rs=require(_0x1602('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1602('0x5'))['db'];var utils=require(_0x1602('0x6'));var logger=require(_0x1602('0x7'))(_0x1602('0x8'));var config=require(_0x1602('0x9'));var jayson=require(_0x1602('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x560329,_0xcc4b1e,_0x5a23d0){return new BPromise(function(_0x12e391,_0x1844eb){return client[_0x1602('0xb')](_0x560329,_0x5a23d0)['then'](function(_0x29a9bb){logger[_0x1602('0xc')](_0x1602('0xd'),_0xcc4b1e,'request\x20sent');logger[_0x1602('0xe')](_0x1602('0xf'),_0xcc4b1e,_0x1602('0x10'),JSON['stringify'](_0x29a9bb));if(_0x29a9bb[_0x1602('0x11')]){if(_0x29a9bb[_0x1602('0x11')][_0x1602('0x12')]===0x1f4){logger[_0x1602('0x11')](_0x1602('0xd'),_0xcc4b1e,_0x29a9bb[_0x1602('0x11')]['message']);return _0x1844eb(_0x29a9bb[_0x1602('0x11')]['message']);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0xcc4b1e,_0x29a9bb[_0x1602('0x11')][_0x1602('0x13')]);return _0x12e391(_0x29a9bb[_0x1602('0x11')]['message']);}else{logger[_0x1602('0xc')](_0x1602('0xd'),_0xcc4b1e,_0x1602('0x10'));_0x12e391(_0x29a9bb['result'][_0x1602('0x13')]);}})['catch'](function(_0x59df2e){logger[_0x1602('0x11')](_0x1602('0xd'),_0xcc4b1e,_0x59df2e);_0x1844eb(_0x59df2e);});});}
\ No newline at end of file
+var _0x335e=['client','http','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserChatQueue,\x20%s,\x20%s','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise'];(function(_0x1f1906,_0x5af69f){var _0x14ef0e=function(_0x576976){while(--_0x576976){_0x1f1906['push'](_0x1f1906['shift']());}};_0x14ef0e(++_0x5af69f);}(_0x335e,0x162));var _0xe335=function(_0x3a5874,_0x3d57bc){_0x3a5874=_0x3a5874-0x0;var _0x2665c7=_0x335e[_0x3a5874];return _0x2665c7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe335('0x0'));var BPromise=require(_0xe335('0x1'));var rs=require(_0xe335('0x2'));var fs=require('fs');var Redis=require(_0xe335('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe335('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe335('0x5'));var jayson=require(_0xe335('0x6'));var client=jayson[_0xe335('0x7')][_0xe335('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17158a,_0x4f9fbd,_0x55088e){return new BPromise(function(_0x1615e4,_0x44d574){return client['request'](_0x17158a,_0x55088e)[_0xe335('0x9')](function(_0x4d9176){logger[_0xe335('0xa')]('UserChatQueue,\x20%s,\x20%s',_0x4f9fbd,_0xe335('0xb'));logger[_0xe335('0xc')](_0xe335('0xd'),_0x4f9fbd,_0xe335('0xb'),JSON[_0xe335('0xe')](_0x4d9176));if(_0x4d9176[_0xe335('0xf')]){if(_0x4d9176[_0xe335('0xf')]['code']===0x1f4){logger[_0xe335('0xf')](_0xe335('0x10'),_0x4f9fbd,_0x4d9176[_0xe335('0xf')][_0xe335('0x11')]);return _0x44d574(_0x4d9176[_0xe335('0xf')][_0xe335('0x11')]);}logger[_0xe335('0xf')](_0xe335('0x10'),_0x4f9fbd,_0x4d9176[_0xe335('0xf')][_0xe335('0x11')]);return _0x1615e4(_0x4d9176['error'][_0xe335('0x11')]);}else{logger[_0xe335('0xa')](_0xe335('0x10'),_0x4f9fbd,_0xe335('0xb'));_0x1615e4(_0x4d9176['result'][_0xe335('0x11')]);}})[_0xe335('0x12')](function(_0x187da8){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x4f9fbd,_0x187da8);_0x44d574(_0x187da8);});});}
\ No newline at end of file
index ede3cb1..3be0605 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(_0x3fe0e1,_0x37f734){var _0x50ab03=function(_0x5b46fa){while(--_0x5b46fa){_0x3fe0e1['push'](_0x3fe0e1['shift']());}};_0x50ab03(++_0x37f734);}(_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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xcd6cd,_0x49bf3c){var _0x508ca4=function(_0xb52fc9){while(--_0xb52fc9){_0xcd6cd['push'](_0xcd6cd['shift']());}};_0x508ca4(++_0x49bf3c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0xcb91[_0xa79977];return _0x109f10;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index f29242f..c3eb3fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c58=['STRING','sequelize','exports','INTEGER'];(function(_0x1af649,_0x30562f){var _0x57798c=function(_0xd96c3){while(--_0xd96c3){_0x1af649['push'](_0x1af649['shift']());}};_0x57798c(++_0x30562f);}(_0x9c58,0xf5));var _0x89c5=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9c58[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x89c5('0x0'));module[_0x89c5('0x1')]={'penalty':{'type':Sequelize[_0x89c5('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x89c5('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x89c5('0x3')]}};
\ No newline at end of file
+var _0x8ad2=['exports','INTEGER','STRING','sequelize'];(function(_0xabcdd9,_0x2f6fa9){var _0x38ca8f=function(_0x2ef052){while(--_0x2ef052){_0xabcdd9['push'](_0xabcdd9['shift']());}};_0x38ca8f(++_0x2f6fa9);}(_0x8ad2,0x14b));var _0x28ad=function(_0x491e59,_0x15eb1f){_0x491e59=_0x491e59-0x0;var _0x9b04f3=_0x8ad2[_0x491e59];return _0x9b04f3;};'use strict';var Sequelize=require(_0x28ad('0x0'));module[_0x28ad('0x1')]={'penalty':{'type':Sequelize[_0x28ad('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x28ad('0x3')]}};
\ No newline at end of file
index 02442ab..99b55a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x650f=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','UserFaxQueue','user_has_fax_queues','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x650f,0x80));var _0xf650=function(_0xb89943,_0x226560){_0xb89943=_0xb89943-0x0;var _0x179c17=_0x650f[_0xb89943];return _0x179c17;};'use strict';var _=require(_0xf650('0x0'));var util=require(_0xf650('0x1'));var logger=require(_0xf650('0x2'))('api');var moment=require(_0xf650('0x3'));var BPromise=require(_0xf650('0x4'));var rp=require(_0xf650('0x5'));var fs=require('fs');var path=require(_0xf650('0x6'));var rimraf=require(_0xf650('0x7'));var config=require(_0xf650('0x8'));var attributes=require(_0xf650('0x9'));module[_0xf650('0xa')]=function(_0x35fa7f,_0x20c949){return _0x35fa7f['define'](_0xf650('0xb'),attributes,{'tableName':_0xf650('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcacd=['path','rimraf','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x1a3112,_0x5077e4){var _0x2ad84d=function(_0x59fb0d){while(--_0x59fb0d){_0x1a3112['push'](_0x1a3112['shift']());}};_0x2ad84d(++_0x5077e4);}(_0xcacd,0x11a));var _0xdcac=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xcacd[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xdcac('0x0'));var util=require(_0xdcac('0x1'));var logger=require(_0xdcac('0x2'))('api');var moment=require(_0xdcac('0x3'));var BPromise=require(_0xdcac('0x4'));var rp=require(_0xdcac('0x5'));var fs=require('fs');var path=require(_0xdcac('0x6'));var rimraf=require(_0xdcac('0x7'));var config=require('../../config/environment');var attributes=require('./userFaxQueue.attributes');module[_0xdcac('0x8')]=function(_0x17d571,_0x9bff09){return _0x17d571[_0xdcac('0x9')](_0xdcac('0xa'),attributes,{'tableName':_0xdcac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bcb055c..cb93307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e6f=['ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x56a5ac,_0x4031a1){var _0x293a88=function(_0x283c7f){while(--_0x283c7f){_0x56a5ac['push'](_0x56a5ac['shift']());}};_0x293a88(++_0x4031a1);}(_0x7e6f,0xa3));var _0xf7e6=function(_0x1b21db,_0x20a970){_0x1b21db=_0x1b21db-0x0;var _0x420d16=_0x7e6f[_0x1b21db];return _0x420d16;};'use strict';var _=require(_0xf7e6('0x0'));var util=require(_0xf7e6('0x1'));var moment=require(_0xf7e6('0x2'));var BPromise=require(_0xf7e6('0x3'));var rs=require(_0xf7e6('0x4'));var fs=require('fs');var Redis=require(_0xf7e6('0x5'));var db=require(_0xf7e6('0x6'))['db'];var utils=require(_0xf7e6('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf7e6('0x8'));var jayson=require(_0xf7e6('0x9'));var client=jayson[_0xf7e6('0xa')][_0xf7e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53de86,_0xa57f22,_0x3a901b){return new BPromise(function(_0x4f0d71,_0x45f75a){return client['request'](_0x53de86,_0x3a901b)[_0xf7e6('0xc')](function(_0x49741e){logger[_0xf7e6('0xd')](_0xf7e6('0xe'),_0xa57f22,'request\x20sent');logger[_0xf7e6('0xf')](_0xf7e6('0x10'),_0xa57f22,_0xf7e6('0x11'),JSON['stringify'](_0x49741e));if(_0x49741e[_0xf7e6('0x12')]){if(_0x49741e['error']['code']===0x1f4){logger[_0xf7e6('0x12')](_0xf7e6('0xe'),_0xa57f22,_0x49741e[_0xf7e6('0x12')][_0xf7e6('0x13')]);return _0x45f75a(_0x49741e['error'][_0xf7e6('0x13')]);}logger['error'](_0xf7e6('0xe'),_0xa57f22,_0x49741e[_0xf7e6('0x12')][_0xf7e6('0x13')]);return _0x4f0d71(_0x49741e[_0xf7e6('0x12')][_0xf7e6('0x13')]);}else{logger['info'](_0xf7e6('0xe'),_0xa57f22,_0xf7e6('0x11'));_0x4f0d71(_0x49741e['result'][_0xf7e6('0x13')]);}})[_0xf7e6('0x14')](function(_0x42afa7){logger[_0xf7e6('0x12')](_0xf7e6('0xe'),_0xa57f22,_0x42afa7);_0x45f75a(_0x42afa7);});});}
\ No newline at end of file
+var _0x1243=['http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x520e8b,_0x1e76d6){var _0x4d7718=function(_0x2c5dcb){while(--_0x2c5dcb){_0x520e8b['push'](_0x520e8b['shift']());}};_0x4d7718(++_0x1e76d6);}(_0x1243,0x186));var _0x3124=function(_0x5cf8c6,_0x1c41f7){_0x5cf8c6=_0x5cf8c6-0x0;var _0x2f16bb=_0x1243[_0x5cf8c6];return _0x2f16bb;};'use strict';var _=require(_0x3124('0x0'));var util=require(_0x3124('0x1'));var moment=require('moment');var BPromise=require(_0x3124('0x2'));var rs=require(_0x3124('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3124('0x4'))['db'];var utils=require(_0x3124('0x5'));var logger=require('../../config/logger')(_0x3124('0x6'));var config=require(_0x3124('0x7'));var jayson=require(_0x3124('0x8'));var client=jayson['client'][_0x3124('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f8c55,_0xebbc69,_0x594172){return new BPromise(function(_0x1142db,_0x1f0886){return client[_0x3124('0xa')](_0x3f8c55,_0x594172)[_0x3124('0xb')](function(_0x367ce0){logger[_0x3124('0xc')](_0x3124('0xd'),_0xebbc69,_0x3124('0xe'));logger[_0x3124('0xf')](_0x3124('0x10'),_0xebbc69,_0x3124('0xe'),JSON[_0x3124('0x11')](_0x367ce0));if(_0x367ce0[_0x3124('0x12')]){if(_0x367ce0[_0x3124('0x12')]['code']===0x1f4){logger['error'](_0x3124('0xd'),_0xebbc69,_0x367ce0[_0x3124('0x12')][_0x3124('0x13')]);return _0x1f0886(_0x367ce0['error'][_0x3124('0x13')]);}logger[_0x3124('0x12')](_0x3124('0xd'),_0xebbc69,_0x367ce0[_0x3124('0x12')][_0x3124('0x13')]);return _0x1142db(_0x367ce0['error']['message']);}else{logger[_0x3124('0xc')]('UserFaxQueue,\x20%s,\x20%s',_0xebbc69,_0x3124('0xe'));_0x1142db(_0x367ce0['result'][_0x3124('0x13')]);}})[_0x3124('0x14')](function(_0x5e4689){logger[_0x3124('0x12')](_0x3124('0xd'),_0xebbc69,_0x5e4689);_0x1f0886(_0x5e4689);});});}
\ No newline at end of file
index c94374d..93b787b 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(_0x5c8cbb,_0x55700e){var _0x2b99a7=function(_0x500a50){while(--_0x500a50){_0x5c8cbb['push'](_0x5c8cbb['shift']());}};_0x2b99a7(++_0x55700e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0xcb91[_0x35da42];return _0x370035;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x40f650,_0x16b33b){var _0x206780=function(_0x3be621){while(--_0x3be621){_0x40f650['push'](_0x40f650['shift']());}};_0x206780(++_0x16b33b);}(_0xedd9,0xfc));var _0x9edd=function(_0x4bb12e,_0x60401e){_0x4bb12e=_0x4bb12e-0x0;var _0x105fb5=_0xedd9[_0x4bb12e];return _0x105fb5;};'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 9006424..df0838b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3b61=['INTEGER'];(function(_0x62e0c2,_0x28ad9d){var _0x395a20=function(_0x329335){while(--_0x329335){_0x62e0c2['push'](_0x62e0c2['shift']());}};_0x395a20(++_0x28ad9d);}(_0x3b61,0x1c5));var _0x13b6=function(_0x30f125,_0x23c2f0){_0x30f125=_0x30f125-0x0;var _0x50df9a=_0x3b61[_0x30f125];return _0x50df9a;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x13b6('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index fcb1d6b..0643d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x014d=['rimraf','../../config/environment','exports','define','UserMailQueue','user_has_mail_queues','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1d464b,_0x3ca312){var _0x17deea=function(_0x5bfa10){while(--_0x5bfa10){_0x1d464b['push'](_0x1d464b['shift']());}};_0x17deea(++_0x3ca312);}(_0x014d,0xa2));var _0xd014=function(_0x280861,_0x532b77){_0x280861=_0x280861-0x0;var _0x573dad=_0x014d[_0x280861];return _0x573dad;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd014('0x0'))(_0xd014('0x1'));var moment=require(_0xd014('0x2'));var BPromise=require(_0xd014('0x3'));var rp=require(_0xd014('0x4'));var fs=require('fs');var path=require(_0xd014('0x5'));var rimraf=require(_0xd014('0x6'));var config=require(_0xd014('0x7'));var attributes=require('./userMailQueue.attributes');module[_0xd014('0x8')]=function(_0xb81621,_0x57d481){return _0xb81621[_0xd014('0x9')](_0xd014('0xa'),attributes,{'tableName':_0xd014('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd9d2=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','util'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0xd9d2,0x83));var _0x2d9d=function(_0x233126,_0x62a15){_0x233126=_0x233126-0x0;var _0x16da1a=_0xd9d2[_0x233126];return _0x16da1a;};'use strict';var _=require('lodash');var util=require(_0x2d9d('0x0'));var logger=require(_0x2d9d('0x1'))(_0x2d9d('0x2'));var moment=require(_0x2d9d('0x3'));var BPromise=require(_0x2d9d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2d9d('0x5'));var config=require(_0x2d9d('0x6'));var attributes=require(_0x2d9d('0x7'));module[_0x2d9d('0x8')]=function(_0x441a94,_0x3d6690){return _0x441a94[_0x2d9d('0x9')](_0x2d9d('0xa'),attributes,{'tableName':_0x2d9d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 56f075c..721cdaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','UserMailQueue,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils'];(function(_0x1f0a12,_0xe1d970){var _0x371295=function(_0x4d633d){while(--_0x4d633d){_0x1f0a12['push'](_0x1f0a12['shift']());}};_0x371295(++_0xe1d970);}(_0x3e74,0x175));var _0x43e7=function(_0x952ccd,_0x43b7a8){_0x952ccd=_0x952ccd-0x0;var _0x56bb96=_0x3e74[_0x952ccd];return _0x56bb96;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}
\ No newline at end of file
+var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x32c7fb,_0x13a9c8){var _0xd630fb=function(_0x2c99dd){while(--_0x2c99dd){_0x32c7fb['push'](_0x32c7fb['shift']());}};_0xd630fb(++_0x13a9c8);}(_0xe14b,0x93));var _0xbe14=function(_0x3ac171,_0x23d55d){_0x3ac171=_0x3ac171-0x0;var _0x4b5c09=_0xe14b[_0x3ac171];return _0x4b5c09;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
index 9619223..8cce26e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x280d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util','path','express','fs-extra'];(function(_0x18a529,_0x2bea53){var _0x216fb8=function(_0x537d25){while(--_0x537d25){_0x18a529['push'](_0x18a529['shift']());}};_0x216fb8(++_0x2bea53);}(_0x280d,0xbe));var _0xd280=function(_0x26b125,_0x497be4){_0x26b125=_0x26b125-0x0;var _0x2ea8ec=_0x280d[_0x26b125];return _0x2ea8ec;};'use strict';var multer=require(_0xd280('0x0'));var util=require(_0xd280('0x1'));var path=require(_0xd280('0x2'));var timeout=require('connect-timeout');var express=require(_0xd280('0x3'));var router=express['Router']();var fs_extra=require(_0xd280('0x4'));var auth=require(_0xd280('0x5'));var interaction=require(_0xd280('0x6'));var config=require(_0xd280('0x7'));var controller=require(_0xd280('0x8'));router[_0xd280('0x9')]('/',auth[_0xd280('0xa')](),controller[_0xd280('0xb')]);module[_0xd280('0xc')]=router;
\ No newline at end of file
+var _0xb287=['post','isAuthenticated','sendUserNotification','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x356127,_0x4873ac){var _0x5d4c75=function(_0x4fe60c){while(--_0x4fe60c){_0x356127['push'](_0x356127['shift']());}};_0x5d4c75(++_0x4873ac);}(_0xb287,0xc0));var _0x7b28=function(_0x20ce4a,_0x263ffd){_0x20ce4a=_0x20ce4a-0x0;var _0x41d3b7=_0xb287[_0x20ce4a];return _0x41d3b7;};'use strict';var multer=require(_0x7b28('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7b28('0x1'));var express=require(_0x7b28('0x2'));var router=express[_0x7b28('0x3')]();var fs_extra=require(_0x7b28('0x4'));var auth=require(_0x7b28('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userNotification.controller');router[_0x7b28('0x6')]('/',auth[_0x7b28('0x7')](),controller[_0x7b28('0x8')]);module['exports']=router;
\ No newline at end of file
index 2eea980..5d54487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c5=['TEXT','exports','STRING'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x17c5,0xe5));var _0x517c=function(_0x41fef3,_0x4c9eff){_0x41fef3=_0x41fef3-0x0;var _0x8ee292=_0x17c5[_0x41fef3];return _0x8ee292;};'use strict';var Sequelize=require('sequelize');module[_0x517c('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x517c('0x1')]},'recipientsId':{'type':Sequelize[_0x517c('0x2')]},'recipientsDescription':{'type':Sequelize[_0x517c('0x1')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0xe728=['STRING','BOOLEAN','sequelize','TEXT'];(function(_0x408bcd,_0x3f1310){var _0x5d1150=function(_0xbacdea){while(--_0xbacdea){_0x408bcd['push'](_0x408bcd['shift']());}};_0x5d1150(++_0x3f1310);}(_0xe728,0x19e));var _0x8e72=function(_0x1fa58a,_0x1054e2){_0x1fa58a=_0x1fa58a-0x0;var _0x1e4109=_0xe728[_0x1fa58a];return _0x1e4109;};'use strict';var Sequelize=require(_0x8e72('0x0'));module['exports']={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x8e72('0x1')]},'recipientsDescription':{'type':Sequelize[_0x8e72('0x2')]},'beep':{'type':Sequelize[_0x8e72('0x3')]}};
\ No newline at end of file
index 3a60e51..c4f38ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67d8=['forEach','emit','userNotification:send','catch','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','ids','queue','replace','Queue','push','all','union','flatten','findOne','getAgents','map','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./userNotification.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','update','then','destroy','error','send','sendUserNotification','hasOwnProperty','text','body','TemplateId','Sequelize','ValidationError','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','smsqueue','some','includes','model','toLowerCase','senderName','user','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create'];(function(_0x16f7f2,_0x5b89fa){var _0x57345a=function(_0xdccd72){while(--_0xdccd72){_0x16f7f2['push'](_0x16f7f2['shift']());}};_0x57345a(++_0x5b89fa);}(_0x67d8,0x1ac));var _0x867d=function(_0x19a68d,_0x15f391){_0x19a68d=_0x19a68d-0x0;var _0x345c26=_0x67d8[_0x19a68d];return _0x345c26;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x867d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x867d('0x1'));var rp=require(_0x867d('0x2'));var moment=require(_0x867d('0x3'));var BPromise=require(_0x867d('0x4'));var Mustache=require(_0x867d('0x5'));var util=require(_0x867d('0x6'));var path=require(_0x867d('0x7'));var sox=require(_0x867d('0x8'));var csv=require('to-csv');var ejs=require(_0x867d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x867d('0xa'));var squel=require(_0x867d('0xb'));var crypto=require(_0x867d('0xc'));var jsforce=require(_0x867d('0xd'));var deskjs=require(_0x867d('0xe'));var toCsv=require(_0x867d('0xf'));var querystring=require('querystring');var Papa=require(_0x867d('0x10'));var Redis=require(_0x867d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x867d('0x12'));var as=require(_0x867d('0x13'));var hardwareService=require(_0x867d('0x14'));var logger=require(_0x867d('0x15'))(_0x867d('0x16'));var utils=require(_0x867d('0x17'));var config=require(_0x867d('0x18'));var licenseUtil=require(_0x867d('0x19'));var db=require(_0x867d('0x1a'))['db'];config[_0x867d('0x1b')]=_['defaults'](config[_0x867d('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x867d('0x1b')]));require(_0x867d('0x1c'))[_0x867d('0x1d')](socket);function respondWithStatusCode(_0x540542,_0x1474e7){_0x1474e7=_0x1474e7||0xcc;return function(_0x58686e){if(_0x58686e){return _0x540542[_0x867d('0x1e')](_0x1474e7);}return _0x540542[_0x867d('0x1f')](_0x1474e7)[_0x867d('0x20')]();};}function respondWithResult(_0x170ff6,_0x33adbb){_0x33adbb=_0x33adbb||0xc8;return function(_0x254d83){if(_0x254d83){return _0x170ff6[_0x867d('0x1f')](_0x33adbb)[_0x867d('0x21')](_0x254d83);}};}function respondWithFilteredResult(_0x5a5838,_0x17e574){return function(_0x4ff732){if(_0x4ff732){var _0x2ff465=typeof _0x17e574['offset']===_0x867d('0x22')&&typeof _0x17e574[_0x867d('0x23')]===_0x867d('0x22');var _0x2c977e=_0x4ff732['count'];var _0x52d4a2=_0x2ff465?0x0:_0x17e574[_0x867d('0x24')];var _0xfac90e=_0x2ff465?_0x4ff732[_0x867d('0x25')]:_0x17e574[_0x867d('0x24')]+_0x17e574[_0x867d('0x23')];var _0x44fd19;if(_0xfac90e>=_0x2c977e){_0xfac90e=_0x2c977e;_0x44fd19=0xc8;}else{_0x44fd19=0xce;}_0x5a5838[_0x867d('0x1f')](_0x44fd19);return _0x5a5838[_0x867d('0x26')](_0x867d('0x27'),_0x52d4a2+'-'+_0xfac90e+'/'+_0x2c977e)['json'](_0x4ff732);}return null;};}function patchUpdates(_0x3cdc01){return function(_0xa6d601){try{jsonpatch[_0x867d('0x28')](_0xa6d601,_0x3cdc01,!![]);}catch(_0xe69d7c){return BPromise[_0x867d('0x29')](_0xe69d7c);}return _0xa6d601['save']();};}function saveUpdates(_0x29e8bb,_0x2cb5f1){return function(_0x1f1ad3){if(_0x1f1ad3){return _0x1f1ad3[_0x867d('0x2a')](_0x29e8bb)[_0x867d('0x2b')](function(_0x4d377c){return _0x4d377c;});}return null;};}function removeEntity(_0x5a8e51,_0x37974f){return function(_0x5e76a5){if(_0x5e76a5){return _0x5e76a5[_0x867d('0x2c')]()['then'](function(){_0x5a8e51[_0x867d('0x1f')](0xcc)[_0x867d('0x20')]();});}};}function handleEntityNotFound(_0x56f592,_0x230419){return function(_0x1425a2){if(!_0x1425a2){_0x56f592[_0x867d('0x1e')](0x194);}return _0x1425a2;};}function handleError(_0x33009f,_0x5b396b){_0x5b396b=_0x5b396b||0x1f4;return function(_0x10b9e9){logger[_0x867d('0x2d')](_0x10b9e9['stack']);if(_0x10b9e9['name']){delete _0x10b9e9['name'];}_0x33009f[_0x867d('0x1f')](_0x5b396b)[_0x867d('0x2e')](_0x10b9e9);};}exports[_0x867d('0x2f')]=function(_0x175e52,_0x1f88c7,_0x47e505){if(!_0x175e52['body'][_0x867d('0x30')](_0x867d('0x31'))&&!_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x33'))){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x175e52[_0x867d('0x32')]['hasOwnProperty'](_0x867d('0x33'))&&!_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x36'))){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))](_0x867d('0x37'));}if(!_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x38'))){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))](_0x867d('0x39'));}else{try{var _0x364367=JSON[_0x867d('0x3a')](_0x175e52[_0x867d('0x32')]['recipients']);}catch(_0x50a0b0){logger[_0x867d('0x2d')](_0x50a0b0);throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))](_0x867d('0x3b'));}var _0x9cfae6=[_0x867d('0x3c'),_0x867d('0x3d'),_0x867d('0x3e'),'openchannelqueue',_0x867d('0x3f'),'voicequeue','whatsappqueue','team','user'];if(_[_0x867d('0x40')](_0x364367,function(_0x1d0d0e){return!_[_0x867d('0x41')](_0x9cfae6,_0x1d0d0e[_0x867d('0x42')][_0x867d('0x43')]());})){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x1a6e9d={};_0x1a6e9d[_0x867d('0x44')]=_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x44'))?_0x175e52[_0x867d('0x32')]['senderName']:_0x175e52[_0x867d('0x45')][_0x867d('0x46')];_0x1a6e9d[_0x867d('0x47')]=_[_0x867d('0x48')](_0x175e52[_0x867d('0x32')][_0x867d('0x47')])?null:_0x175e52['body'][_0x867d('0x47')];_0x1a6e9d[_0x867d('0x49')]=_0x175e52[_0x867d('0x32')][_0x867d('0x49')]||![];_0x1a6e9d[_0x867d('0x4a')]=_0x175e52['user']['id'];return getContent(_0x175e52[_0x867d('0x32')])[_0x867d('0x2b')](function(_0x3a47e1){_0x1a6e9d[_0x867d('0x32')]=_0x3a47e1;return getRecipients(_0x364367);})[_0x867d('0x2b')](function(_0x2d15e5){_0x1a6e9d[_0x867d('0x4b')]=_[_0x867d('0x4c')](_0x2d15e5)[_0x867d('0x4d')](',');return db[_0x867d('0x4e')][_0x867d('0x4f')](function(_0x167e31){return db[_0x867d('0x50')][_0x867d('0x51')](_0x1a6e9d,{'raw':!![],'transaction':_0x167e31})[_0x867d('0x2b')](function(_0x467c40){var _0x29607e={'sender':_0x1a6e9d[_0x867d('0x44')],'description':_0x1a6e9d[_0x867d('0x47')],'content':_0x1a6e9d['body'],'beep':_0x1a6e9d[_0x867d('0x49')]};_0x2d15e5[_0x867d('0x52')](function(_0x54f81b){_0x29607e['recipient']=_0x54f81b;socket[_0x867d('0x53')](_0x867d('0x54'),_0x29607e);});return _0x467c40;});});})['then'](respondWithResult(_0x1f88c7,0xc9))[_0x867d('0x55')](handleError(_0x1f88c7,null));};function getContent(_0xadbb51){return new BPromise(function(_0x15fc98,_0x17337e){if(_0xadbb51[_0x867d('0x31')]){_0x15fc98(_0xadbb51[_0x867d('0x31')]);return;}return db[_0x867d('0x56')]['findOne']({'attributes':[_0x867d('0x57')],'where':{'id':_0xadbb51[_0x867d('0x33')]},'raw':!![]})['then'](function(_0x1d6bfd){if(!_0x1d6bfd)throw new db[(_0x867d('0x34'))]['ValidationError'](_0x867d('0x58'));var _0x42f2f5=Mustache[_0x867d('0x59')](_0x1d6bfd[_0x867d('0x57')],_0xadbb51['view']);_0x15fc98(_0x42f2f5);})[_0x867d('0x55')](function(_0x5d1cc1){_0x17337e(_0x5d1cc1);});});}function getRecipients(_0x54569c){return new BPromise(function(_0x7c03f4,_0x570040){var _0x115c51=[];var _0x2aec29=[];_0x54569c[_0x867d('0x52')](function(_0x33f4a2){var _0x40d353=_[_0x867d('0x5a')](_0x33f4a2[_0x867d('0x42')]['toLowerCase']());if(_0x40d353==='User'){_0x115c51=_['union'](_0x115c51,_0x33f4a2[_0x867d('0x5b')]);}else{if(_['includes'](_0x40d353,_0x867d('0x5c')))_0x40d353=_0x40d353[_0x867d('0x5d')](_0x867d('0x5c'),_0x867d('0x5e'));_0x33f4a2['ids'][_0x867d('0x52')](function(_0x1bd7cc){_0x2aec29[_0x867d('0x5f')](getAgents(_0x40d353,_0x1bd7cc));});}});return BPromise[_0x867d('0x60')](_0x2aec29)['then'](function(_0x5a8fe7){_0x115c51=_[_0x867d('0x61')](_0x115c51,_[_0x867d('0x62')](_0x5a8fe7));_0x7c03f4(_0x115c51);})[_0x867d('0x55')](function(_0xe4adfd){_0x570040(_0xe4adfd);});});}function getAgents(_0x4cce30,_0x466173){return new BPromise(function(_0x1f0afb,_0x20f4f2){return db[_0x4cce30][_0x867d('0x63')]({'where':{'id':_0x466173}})['then'](function(_0x15e264){return _0x15e264[_0x867d('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0x838982){var _0x5d46f4=_[_0x867d('0x65')](_0x838982,'id');_0x1f0afb(_0x5d46f4);});})[_0x867d('0x55')](function(_0x5a0202){_0x20f4f2(_0x5a0202);});});}
\ No newline at end of file
+var _0x4c1e=['crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','register','sendStatus','status','offset','limit','set','Content-Range','json','apply','save','update','then','destroy','end','error','stack','name','send','body','hasOwnProperty','text','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Sequelize','recipients','parse','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','view','startCase','User','queue','replace','Queue','ids','push','all','union','getAgents','map','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash'];(function(_0x598727,_0x2f4262){var _0x2a5b15=function(_0x3a461d){while(--_0x3a461d){_0x598727['push'](_0x598727['shift']());}};_0x2a5b15(++_0x2f4262);}(_0x4c1e,0x124));var _0xe4c1=function(_0x108df4,_0x165aa1){_0x108df4=_0x108df4-0x0;var _0x3d532c=_0x4c1e[_0x108df4];return _0x3d532c;};'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(_0xe4c1('0x0'));var moment=require(_0xe4c1('0x1'));var BPromise=require(_0xe4c1('0x2'));var Mustache=require(_0xe4c1('0x3'));var util=require(_0xe4c1('0x4'));var path=require(_0xe4c1('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4c1('0x6'));var _=require(_0xe4c1('0x7'));var squel=require('squel');var crypto=require(_0xe4c1('0x8'));var jsforce=require(_0xe4c1('0x9'));var deskjs=require(_0xe4c1('0xa'));var toCsv=require(_0xe4c1('0xb'));var querystring=require('querystring');var Papa=require(_0xe4c1('0xc'));var Redis=require(_0xe4c1('0xd'));var authService=require(_0xe4c1('0xe'));var qs=require(_0xe4c1('0xf'));var as=require(_0xe4c1('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe4c1('0x11'))(_0xe4c1('0x12'));var utils=require('../../config/utils');var config=require(_0xe4c1('0x13'));var licenseUtil=require(_0xe4c1('0x14'));var db=require(_0xe4c1('0x15'))['db'];config['redis']=_[_0xe4c1('0x16')](config['redis'],{'host':_0xe4c1('0x17'),'port':0x18eb});var socket=require(_0xe4c1('0x18'))(new Redis(config[_0xe4c1('0x19')]));require(_0xe4c1('0x1a'))[_0xe4c1('0x1b')](socket);function respondWithStatusCode(_0x4d8a58,_0x16144c){_0x16144c=_0x16144c||0xcc;return function(_0x24b1ad){if(_0x24b1ad){return _0x4d8a58[_0xe4c1('0x1c')](_0x16144c);}return _0x4d8a58['status'](_0x16144c)['end']();};}function respondWithResult(_0xb89017,_0xd6bfff){_0xd6bfff=_0xd6bfff||0xc8;return function(_0x349994){if(_0x349994){return _0xb89017[_0xe4c1('0x1d')](_0xd6bfff)['json'](_0x349994);}};}function respondWithFilteredResult(_0x3915dc,_0x2a82e0){return function(_0x21cadb){if(_0x21cadb){var _0x45dca3=typeof _0x2a82e0[_0xe4c1('0x1e')]==='undefined'&&typeof _0x2a82e0['limit']==='undefined';var _0x8d5bf3=_0x21cadb['count'];var _0x204d3d=_0x45dca3?0x0:_0x2a82e0['offset'];var _0x2e7106=_0x45dca3?_0x21cadb['count']:_0x2a82e0[_0xe4c1('0x1e')]+_0x2a82e0[_0xe4c1('0x1f')];var _0x3706fb;if(_0x2e7106>=_0x8d5bf3){_0x2e7106=_0x8d5bf3;_0x3706fb=0xc8;}else{_0x3706fb=0xce;}_0x3915dc[_0xe4c1('0x1d')](_0x3706fb);return _0x3915dc[_0xe4c1('0x20')](_0xe4c1('0x21'),_0x204d3d+'-'+_0x2e7106+'/'+_0x8d5bf3)[_0xe4c1('0x22')](_0x21cadb);}return null;};}function patchUpdates(_0x79e96d){return function(_0x7e93dd){try{jsonpatch[_0xe4c1('0x23')](_0x7e93dd,_0x79e96d,!![]);}catch(_0x34a3a4){return BPromise['reject'](_0x34a3a4);}return _0x7e93dd[_0xe4c1('0x24')]();};}function saveUpdates(_0x5d44ab,_0x54d3de){return function(_0x1a9f99){if(_0x1a9f99){return _0x1a9f99[_0xe4c1('0x25')](_0x5d44ab)[_0xe4c1('0x26')](function(_0x596677){return _0x596677;});}return null;};}function removeEntity(_0x15c9b6,_0x43879e){return function(_0x44535f){if(_0x44535f){return _0x44535f[_0xe4c1('0x27')]()[_0xe4c1('0x26')](function(){_0x15c9b6['status'](0xcc)[_0xe4c1('0x28')]();});}};}function handleEntityNotFound(_0x3bec41,_0x115f73){return function(_0x3f55c0){if(!_0x3f55c0){_0x3bec41[_0xe4c1('0x1c')](0x194);}return _0x3f55c0;};}function handleError(_0x343a42,_0x5a1a4c){_0x5a1a4c=_0x5a1a4c||0x1f4;return function(_0x21f48a){logger[_0xe4c1('0x29')](_0x21f48a[_0xe4c1('0x2a')]);if(_0x21f48a[_0xe4c1('0x2b')]){delete _0x21f48a[_0xe4c1('0x2b')];}_0x343a42[_0xe4c1('0x1d')](_0x5a1a4c)[_0xe4c1('0x2c')](_0x21f48a);};}exports['sendUserNotification']=function(_0x452cd5,_0x1d344e,_0x5988c2){if(!_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x2e')](_0xe4c1('0x2f'))&&!_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x2e')](_0xe4c1('0x30'))){throw new db['Sequelize'][(_0xe4c1('0x31'))](_0xe4c1('0x32'));}else{if(_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x2e')]('TemplateId')&&!_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x2e')]('view')){throw new db[(_0xe4c1('0x33'))][(_0xe4c1('0x31'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x452cd5['body'][_0xe4c1('0x2e')](_0xe4c1('0x34'))){throw new db[(_0xe4c1('0x33'))][(_0xe4c1('0x31'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x2baaf4=JSON[_0xe4c1('0x35')](_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x34')]);}catch(_0x35dbe0){logger[_0xe4c1('0x29')](_0x35dbe0);throw new db[(_0xe4c1('0x33'))][(_0xe4c1('0x31'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x2278a5=[_0xe4c1('0x36'),_0xe4c1('0x37'),_0xe4c1('0x38'),'openchannelqueue',_0xe4c1('0x39'),_0xe4c1('0x3a'),'whatsappqueue','team',_0xe4c1('0x3b')];if(_[_0xe4c1('0x3c')](_0x2baaf4,function(_0x39f3b3){return!_[_0xe4c1('0x3d')](_0x2278a5,_0x39f3b3[_0xe4c1('0x3e')][_0xe4c1('0x3f')]());})){throw new db[(_0xe4c1('0x33'))]['ValidationError'](_0xe4c1('0x40'));}}}var _0x12f78f={};_0x12f78f[_0xe4c1('0x41')]=_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x2e')](_0xe4c1('0x41'))?_0x452cd5[_0xe4c1('0x2d')]['senderName']:_0x452cd5[_0xe4c1('0x3b')][_0xe4c1('0x42')];_0x12f78f[_0xe4c1('0x43')]=_[_0xe4c1('0x44')](_0x452cd5['body']['recipientsDescription'])?null:_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x43')];_0x12f78f['beep']=_0x452cd5[_0xe4c1('0x2d')][_0xe4c1('0x45')]||![];_0x12f78f[_0xe4c1('0x46')]=_0x452cd5[_0xe4c1('0x3b')]['id'];return getContent(_0x452cd5[_0xe4c1('0x2d')])[_0xe4c1('0x26')](function(_0x11aff2){_0x12f78f['body']=_0x11aff2;return getRecipients(_0x2baaf4);})[_0xe4c1('0x26')](function(_0x4e7f5f){_0x12f78f[_0xe4c1('0x47')]=_[_0xe4c1('0x48')](_0x4e7f5f)[_0xe4c1('0x49')](',');return db[_0xe4c1('0x4a')][_0xe4c1('0x4b')](function(_0x107434){return db[_0xe4c1('0x4c')][_0xe4c1('0x4d')](_0x12f78f,{'raw':!![],'transaction':_0x107434})['then'](function(_0x5d007d){var _0x3e5e11={'sender':_0x12f78f['senderName'],'description':_0x12f78f['recipientsDescription'],'content':_0x12f78f[_0xe4c1('0x2d')],'beep':_0x12f78f['beep']};_0x4e7f5f[_0xe4c1('0x4e')](function(_0x89b973){_0x3e5e11[_0xe4c1('0x4f')]=_0x89b973;socket[_0xe4c1('0x50')](_0xe4c1('0x51'),_0x3e5e11);});return _0x5d007d;});});})[_0xe4c1('0x26')](respondWithResult(_0x1d344e,0xc9))[_0xe4c1('0x52')](handleError(_0x1d344e,null));};function getContent(_0x3e9c55){return new BPromise(function(_0x5e322d,_0x236a5b){if(_0x3e9c55['text']){_0x5e322d(_0x3e9c55[_0xe4c1('0x2f')]);return;}return db[_0xe4c1('0x53')][_0xe4c1('0x54')]({'attributes':[_0xe4c1('0x55')],'where':{'id':_0x3e9c55[_0xe4c1('0x30')]},'raw':!![]})[_0xe4c1('0x26')](function(_0x31f71c){if(!_0x31f71c)throw new db[(_0xe4c1('0x33'))]['ValidationError'](_0xe4c1('0x56'));var _0x3719d9=Mustache[_0xe4c1('0x57')](_0x31f71c['html'],_0x3e9c55[_0xe4c1('0x58')]);_0x5e322d(_0x3719d9);})[_0xe4c1('0x52')](function(_0x3f8fb0){_0x236a5b(_0x3f8fb0);});});}function getRecipients(_0x2e2b1b){return new BPromise(function(_0x2f9c2f,_0x4f597c){var _0x4ba98d=[];var _0x13d368=[];_0x2e2b1b[_0xe4c1('0x4e')](function(_0x3b3280){var _0x1eef8c=_[_0xe4c1('0x59')](_0x3b3280[_0xe4c1('0x3e')][_0xe4c1('0x3f')]());if(_0x1eef8c===_0xe4c1('0x5a')){_0x4ba98d=_['union'](_0x4ba98d,_0x3b3280['ids']);}else{if(_[_0xe4c1('0x3d')](_0x1eef8c,_0xe4c1('0x5b')))_0x1eef8c=_0x1eef8c[_0xe4c1('0x5c')](_0xe4c1('0x5b'),_0xe4c1('0x5d'));_0x3b3280[_0xe4c1('0x5e')][_0xe4c1('0x4e')](function(_0x40dd24){_0x13d368[_0xe4c1('0x5f')](getAgents(_0x1eef8c,_0x40dd24));});}});return BPromise[_0xe4c1('0x60')](_0x13d368)['then'](function(_0xd266c8){_0x4ba98d=_[_0xe4c1('0x61')](_0x4ba98d,_['flatten'](_0xd266c8));_0x2f9c2f(_0x4ba98d);})[_0xe4c1('0x52')](function(_0x57fe21){_0x4f597c(_0x57fe21);});});}function getAgents(_0x30f0a0,_0x142d9a){return new BPromise(function(_0x1e29b0,_0x201a83){return db[_0x30f0a0]['findOne']({'where':{'id':_0x142d9a}})[_0xe4c1('0x26')](function(_0x5a4faf){return _0x5a4faf[_0xe4c1('0x62')]({'attributes':['id'],'raw':!![]})['then'](function(_0xba3b2d){var _0x2a0c8a=_[_0xe4c1('0x63')](_0xba3b2d,'id');_0x1e29b0(_0x2a0c8a);});})['catch'](function(_0x2e84b8){_0x201a83(_0x2e84b8);});});}
\ No newline at end of file
index 31c72b3..66dc000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62fc=['hasOwnProperty','hook','exports','../../mysqldb','update','remove','emit'];(function(_0x171b64,_0x1dc8e2){var _0x359757=function(_0x274d6a){while(--_0x274d6a){_0x171b64['push'](_0x171b64['shift']());}};_0x359757(++_0x1dc8e2);}(_0x62fc,0x17d));var _0xc62f=function(_0xb41839,_0xcffb71){_0xb41839=_0xb41839-0x0;var _0x25aa68=_0x62fc[_0xb41839];return _0x25aa68;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xc62f('0x0'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc62f('0x1'),'afterDestroy':_0xc62f('0x2')};function emitEvent(_0x421f74){return function(_0x40fd8b,_0x4a0859,_0x289d24){UserNotificationEvents[_0xc62f('0x3')](_0x421f74+':'+_0x40fd8b['id'],_0x40fd8b);UserNotificationEvents['emit'](_0x421f74,_0x40fd8b);_0x289d24(null);};}for(var e in events){if(events[_0xc62f('0x4')](e)){var event=events[e];UserNotification[_0xc62f('0x5')](e,emitEvent(event));}}module[_0xc62f('0x6')]=UserNotificationEvents;
\ No newline at end of file
+var _0x6389=['emit','hook','exports','events','../../mysqldb','UserNotification','setMaxListeners','update','remove'];(function(_0xcfc7d2,_0x53ad68){var _0xd3c198=function(_0x340580){while(--_0x340580){_0xcfc7d2['push'](_0xcfc7d2['shift']());}};_0xd3c198(++_0x53ad68);}(_0x6389,0x1b3));var _0x9638=function(_0x4f514a,_0x1bccc3){_0x4f514a=_0x4f514a-0x0;var _0x599df0=_0x6389[_0x4f514a];return _0x599df0;};'use strict';var EventEmitter=require(_0x9638('0x0'));var UserNotification=require(_0x9638('0x1'))['db'][_0x9638('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x9638('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9638('0x4'),'afterDestroy':_0x9638('0x5')};function emitEvent(_0x8d9b3c){return function(_0x54d5e7,_0x438890,_0x3a1e24){UserNotificationEvents[_0x9638('0x6')](_0x8d9b3c+':'+_0x54d5e7['id'],_0x54d5e7);UserNotificationEvents[_0x9638('0x6')](_0x8d9b3c,_0x54d5e7);_0x3a1e24(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0x9638('0x7')](e,emitEvent(event));}}module[_0x9638('0x8')]=UserNotificationEvents;
\ No newline at end of file
index 0bab536..b63a2af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b7=['UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','../../config/environment','exports','define'];(function(_0x4f860b,_0x5b4af4){var _0x31e9b7=function(_0x14bdd5){while(--_0x14bdd5){_0x4f860b['push'](_0x4f860b['shift']());}};_0x31e9b7(++_0x5b4af4);}(_0xc2b7,0x137));var _0x7c2b=function(_0x4607df,_0x2417ee){_0x4607df=_0x4607df-0x0;var _0x498af0=_0xc2b7[_0x4607df];return _0x498af0;};'use strict';var _=require(_0x7c2b('0x0'));var util=require(_0x7c2b('0x1'));var logger=require('../../config/logger')(_0x7c2b('0x2'));var moment=require(_0x7c2b('0x3'));var BPromise=require(_0x7c2b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7c2b('0x5'));var attributes=require('./userNotification.attributes');module[_0x7c2b('0x6')]=function(_0x5a00d5,_0x4ea90e){return _0x5a00d5[_0x7c2b('0x7')](_0x7c2b('0x8'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7c2b('0x9'),'collate':_0x7c2b('0xa')});};
\ No newline at end of file
+var _0x6b74=['path','rimraf','../../config/environment','./userNotification.attributes','exports','define','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise'];(function(_0x2abd2c,_0x22a537){var _0x55f581=function(_0x4feb64){while(--_0x4feb64){_0x2abd2c['push'](_0x2abd2c['shift']());}};_0x55f581(++_0x22a537);}(_0x6b74,0x159));var _0x46b7=function(_0x3e182f,_0x380ec7){_0x3e182f=_0x3e182f-0x0;var _0x23edc9=_0x6b74[_0x3e182f];return _0x23edc9;};'use strict';var _=require(_0x46b7('0x0'));var util=require(_0x46b7('0x1'));var logger=require(_0x46b7('0x2'))('api');var moment=require(_0x46b7('0x3'));var BPromise=require('bluebird');var rp=require(_0x46b7('0x4'));var fs=require('fs');var path=require(_0x46b7('0x5'));var rimraf=require(_0x46b7('0x6'));var config=require(_0x46b7('0x7'));var attributes=require(_0x46b7('0x8'));module[_0x46b7('0x9')]=function(_0x3924fb,_0x357de2){return _0x3924fb[_0x46b7('0xa')]('UserNotification',attributes,{'tableName':_0x46b7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x46b7('0xc'),'collate':_0x46b7('0xd')});};
\ No newline at end of file
index 86e9dea..940902d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54a7=['./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','moment','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x20742a,_0x3ee7bc){var _0x4fbe07=function(_0xd89988){while(--_0xd89988){_0x20742a['push'](_0x20742a['shift']());}};_0x4fbe07(++_0x3ee7bc);}(_0x54a7,0x1c1));var _0x754a=function(_0xbf6d3a,_0x5ba754){_0xbf6d3a=_0xbf6d3a-0x0;var _0xd6a43f=_0x54a7[_0xbf6d3a];return _0xd6a43f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x754a('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x754a('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x754a('0x2'));var logger=require('../../config/logger')(_0x754a('0x3'));var config=require(_0x754a('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x754a('0x5')][_0x754a('0x6')]({'port':0x232a});config[_0x754a('0x7')]=_[_0x754a('0x8')](config['redis'],{'host':_0x754a('0x9'),'port':0x18eb});var socket=require(_0x754a('0xa'))(new Redis(config[_0x754a('0x7')]));require(_0x754a('0xb'))[_0x754a('0xc')](socket);function respondWithRpcPromise(_0x2bb286,_0xabfd9d,_0xdef747){return new BPromise(function(_0x1bfcc4,_0x5e845d){return client[_0x754a('0xd')](_0x2bb286,_0xdef747)['then'](function(_0x3b406a){logger[_0x754a('0xe')](_0x754a('0xf'),_0xabfd9d,'request\x20sent');logger[_0x754a('0x10')]('UserNotification,\x20%s,\x20%s,\x20%s',_0xabfd9d,_0x754a('0x11'),JSON['stringify'](_0x3b406a));if(_0x3b406a[_0x754a('0x12')]){if(_0x3b406a[_0x754a('0x12')][_0x754a('0x13')]===0x1f4){logger['error'](_0x754a('0xf'),_0xabfd9d,_0x3b406a[_0x754a('0x12')]['message']);return _0x5e845d(_0x3b406a[_0x754a('0x12')]['message']);}logger[_0x754a('0x12')](_0x754a('0xf'),_0xabfd9d,_0x3b406a[_0x754a('0x12')]['message']);return _0x1bfcc4(_0x3b406a[_0x754a('0x12')][_0x754a('0x14')]);}else{logger[_0x754a('0xe')]('UserNotification,\x20%s,\x20%s',_0xabfd9d,_0x754a('0x11'));_0x1bfcc4(_0x3b406a[_0x754a('0x15')]['message']);}})[_0x754a('0x16')](function(_0x2843f1){logger['error'](_0x754a('0xf'),_0xabfd9d,_0x2843f1);_0x5e845d(_0x2843f1);});});}
\ No newline at end of file
+var _0xce39=['code','message','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xce39,0x10b));var _0x9ce3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xce39[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x9ce3('0x0'));var moment=require(_0x9ce3('0x1'));var BPromise=require(_0x9ce3('0x2'));var rs=require(_0x9ce3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9ce3('0x4'));var logger=require(_0x9ce3('0x5'))('rpc');var config=require(_0x9ce3('0x6'));var jayson=require(_0x9ce3('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0x9ce3('0x8')]=_[_0x9ce3('0x9')](config[_0x9ce3('0x8')],{'host':_0x9ce3('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9ce3('0xb'))[_0x9ce3('0xc')](socket);function respondWithRpcPromise(_0x4afc87,_0x4056f1,_0x52f660){return new BPromise(function(_0x155741,_0x12fd6f){return client[_0x9ce3('0xd')](_0x4afc87,_0x52f660)[_0x9ce3('0xe')](function(_0x3877fd){logger[_0x9ce3('0xf')](_0x9ce3('0x10'),_0x4056f1,_0x9ce3('0x11'));logger['debug'](_0x9ce3('0x12'),_0x4056f1,'request\x20sent',JSON[_0x9ce3('0x13')](_0x3877fd));if(_0x3877fd['error']){if(_0x3877fd[_0x9ce3('0x14')][_0x9ce3('0x15')]===0x1f4){logger['error'](_0x9ce3('0x10'),_0x4056f1,_0x3877fd['error'][_0x9ce3('0x16')]);return _0x12fd6f(_0x3877fd[_0x9ce3('0x14')][_0x9ce3('0x16')]);}logger[_0x9ce3('0x14')](_0x9ce3('0x10'),_0x4056f1,_0x3877fd[_0x9ce3('0x14')]['message']);return _0x155741(_0x3877fd[_0x9ce3('0x14')][_0x9ce3('0x16')]);}else{logger['info'](_0x9ce3('0x10'),_0x4056f1,_0x9ce3('0x11'));_0x155741(_0x3877fd['result'][_0x9ce3('0x16')]);}})[_0x9ce3('0x17')](function(_0x36822b){logger[_0x9ce3('0x14')](_0x9ce3('0x10'),_0x4056f1,_0x36822b);_0x12fd6f(_0x36822b);});});}
\ No newline at end of file
index 82e5107..30628f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1852=['length','userNotification:','./userNotification.events','save','remove','update','emit','removeListener'];(function(_0x243217,_0x522951){var _0x478029=function(_0x18d053){while(--_0x18d053){_0x243217['push'](_0x243217['shift']());}};_0x478029(++_0x522951);}(_0x1852,0xca));var _0x2185=function(_0x2308d4,_0x5db32b){_0x2308d4=_0x2308d4-0x0;var _0x2c485d=_0x1852[_0x2308d4];return _0x2c485d;};'use strict';var UserNotificationEvents=require(_0x2185('0x0'));var events=[_0x2185('0x1'),_0x2185('0x2'),_0x2185('0x3')];function createListener(_0x214910,_0x23f4e0){return function(_0x1cef4b){_0x23f4e0[_0x2185('0x4')](_0x214910,_0x1cef4b);};}function removeListener(_0x1d9e7e,_0x3463f3){return function(){UserNotificationEvents[_0x2185('0x5')](_0x1d9e7e,_0x3463f3);};}exports['register']=function(_0xc2bcaa){for(var _0x5df4aa=0x0,_0x5e5401=events[_0x2185('0x6')];_0x5df4aa<_0x5e5401;_0x5df4aa++){var _0x4a3303=events[_0x5df4aa];var _0x3240fb=createListener(_0x2185('0x7')+_0x4a3303,_0xc2bcaa);UserNotificationEvents['on'](_0x4a3303,_0x3240fb);}};
\ No newline at end of file
+var _0x0f8e=['userNotification:','save','remove','update','emit','register'];(function(_0x2faafa,_0x3b6b3e){var _0x556ed0=function(_0x1bf41c){while(--_0x1bf41c){_0x2faafa['push'](_0x2faafa['shift']());}};_0x556ed0(++_0x3b6b3e);}(_0x0f8e,0x187));var _0xe0f8=function(_0x5d78f0,_0x3784f9){_0x5d78f0=_0x5d78f0-0x0;var _0x4d1012=_0x0f8e[_0x5d78f0];return _0x4d1012;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0xe0f8('0x0'),_0xe0f8('0x1'),_0xe0f8('0x2')];function createListener(_0xccfed9,_0x311adc){return function(_0x18dbbb){_0x311adc[_0xe0f8('0x3')](_0xccfed9,_0x18dbbb);};}function removeListener(_0x55d645,_0x1fb609){return function(){UserNotificationEvents['removeListener'](_0x55d645,_0x1fb609);};}exports[_0xe0f8('0x4')]=function(_0x27aae8){for(var _0x136059=0x0,_0x108613=events['length'];_0x136059<_0x108613;_0x136059++){var _0x5a2228=events[_0x136059];var _0x1776dc=createListener(_0xe0f8('0x5')+_0x5a2228,_0x27aae8);UserNotificationEvents['on'](_0x5a2228,_0x1776dc);}};
\ No newline at end of file
index 94fe041..b2be8e8 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(_0xc82ba9,_0x59657c){var _0x5f3823=function(_0x293bbb){while(--_0x293bbb){_0xc82ba9['push'](_0xc82ba9['shift']());}};_0x5f3823(++_0x59657c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0xc3083f,_0x5ac664){var _0x8e45bb=function(_0x466769){while(--_0x466769){_0xc3083f['push'](_0xc3083f['shift']());}};_0x8e45bb(++_0x5ac664);}(_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 4c27128..52bf9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0add=['exports','INTEGER','sequelize'];(function(_0xce144a,_0x34fea7){var _0x447c0e=function(_0x584ac8){while(--_0x584ac8){_0xce144a['push'](_0xce144a['shift']());}};_0x447c0e(++_0x34fea7);}(_0x0add,0x122));var _0xd0ad=function(_0x43a6cd,_0x503d1a){_0x43a6cd=_0x43a6cd-0x0;var _0x5acb36=_0x0add[_0x43a6cd];return _0x5acb36;};'use strict';var Sequelize=require(_0xd0ad('0x0'));module[_0xd0ad('0x1')]={'penalty':{'type':Sequelize[_0xd0ad('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x04a5=['INTEGER','sequelize','exports'];(function(_0x224476,_0x10a391){var _0x36c48f=function(_0x3b7434){while(--_0x3b7434){_0x224476['push'](_0x224476['shift']());}};_0x36c48f(++_0x10a391);}(_0x04a5,0x10f));var _0x504a=function(_0x450689,_0x3b857c){_0x450689=_0x450689-0x0;var _0x46ffb0=_0x04a5[_0x450689];return _0x46ffb0;};'use strict';var Sequelize=require(_0x504a('0x0'));module[_0x504a('0x1')]={'penalty':{'type':Sequelize[_0x504a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 103981f..e4c398c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487e=['request-promise','path','rimraf','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','util','moment','bluebird'];(function(_0x21a1c7,_0x13963f){var _0x54b176=function(_0x25195d){while(--_0x25195d){_0x21a1c7['push'](_0x21a1c7['shift']());}};_0x54b176(++_0x13963f);}(_0x487e,0x131));var _0xe487=function(_0xc59953,_0x4a13d7){_0xc59953=_0xc59953-0x0;var _0x505678=_0x487e[_0xc59953];return _0x505678;};'use strict';var _=require('lodash');var util=require(_0xe487('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xe487('0x1'));var BPromise=require(_0xe487('0x2'));var rp=require(_0xe487('0x3'));var fs=require('fs');var path=require(_0xe487('0x4'));var rimraf=require(_0xe487('0x5'));var config=require('../../config/environment');var attributes=require(_0xe487('0x6'));module[_0xe487('0x7')]=function(_0x4bb557,_0x2b76b6){return _0x4bb557[_0xe487('0x8')](_0xe487('0x9'),attributes,{'tableName':_0xe487('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a49=['util','../../config/logger','moment','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x5a49,0x1e0));var _0x95a4=function(_0x1135dd,_0x256ce6){_0x1135dd=_0x1135dd-0x0;var _0x2d8175=_0x5a49[_0x1135dd];return _0x2d8175;};'use strict';var _=require('lodash');var util=require(_0x95a4('0x0'));var logger=require(_0x95a4('0x1'))('api');var moment=require(_0x95a4('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x95a4('0x3'));var rimraf=require(_0x95a4('0x4'));var config=require(_0x95a4('0x5'));var attributes=require(_0x95a4('0x6'));module[_0x95a4('0x7')]=function(_0x109ca,_0x18241f){return _0x109ca[_0x95a4('0x8')](_0x95a4('0x9'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d7d3a0c..9f3d4dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f9f=['rpc','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x91c10a,_0x46cbc3){var _0x35ec2d=function(_0x57e217){while(--_0x57e217){_0x91c10a['push'](_0x91c10a['shift']());}};_0x35ec2d(++_0x46cbc3);}(_0x7f9f,0x18a));var _0xf7f9=function(_0x3a2555,_0x519e6b){_0x3a2555=_0x3a2555-0x0;var _0x5eadbe=_0x7f9f[_0x3a2555];return _0x5eadbe;};'use strict';var _=require(_0xf7f9('0x0'));var util=require('util');var moment=require(_0xf7f9('0x1'));var BPromise=require(_0xf7f9('0x2'));var rs=require(_0xf7f9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf7f9('0x4'))['db'];var utils=require(_0xf7f9('0x5'));var logger=require('../../config/logger')(_0xf7f9('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf7f9('0x7')][_0xf7f9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xfdbced,_0x12e44e,_0xdc090a){return new BPromise(function(_0x3bded9,_0x60ed8e){return client[_0xf7f9('0x9')](_0xfdbced,_0xdc090a)[_0xf7f9('0xa')](function(_0x2256ff){logger[_0xf7f9('0xb')](_0xf7f9('0xc'),_0x12e44e,_0xf7f9('0xd'));logger['debug'](_0xf7f9('0xe'),_0x12e44e,'request\x20sent',JSON['stringify'](_0x2256ff));if(_0x2256ff[_0xf7f9('0xf')]){if(_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x10')]===0x1f4){logger['error'](_0xf7f9('0xc'),_0x12e44e,_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x11')]);return _0x60ed8e(_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x11')]);}logger['error'](_0xf7f9('0xc'),_0x12e44e,_0x2256ff[_0xf7f9('0xf')]['message']);return _0x3bded9(_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x11')]);}else{logger[_0xf7f9('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x12e44e,_0xf7f9('0xd'));_0x3bded9(_0x2256ff[_0xf7f9('0x12')][_0xf7f9('0x11')]);}})[_0xf7f9('0x13')](function(_0x585e49){logger[_0xf7f9('0xf')](_0xf7f9('0xc'),_0x12e44e,_0x585e49);_0x60ed8e(_0x585e49);});});}
\ No newline at end of file
+var _0xd41c=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util'];(function(_0x2d3d18,_0x475f4c){var _0x202f49=function(_0x41abb5){while(--_0x41abb5){_0x2d3d18['push'](_0x2d3d18['shift']());}};_0x202f49(++_0x475f4c);}(_0xd41c,0x124));var _0xcd41=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd41c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xcd41('0x0'));var util=require(_0xcd41('0x1'));var moment=require(_0xcd41('0x2'));var BPromise=require(_0xcd41('0x3'));var rs=require(_0xcd41('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcd41('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcd41('0x6'))(_0xcd41('0x7'));var config=require(_0xcd41('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x180e90,_0x3ebc38,_0x2b3d62){return new BPromise(function(_0x39f489,_0x26b05e){return client[_0xcd41('0x9')](_0x180e90,_0x2b3d62)[_0xcd41('0xa')](function(_0x47b1f5){logger[_0xcd41('0xb')](_0xcd41('0xc'),_0x3ebc38,_0xcd41('0xd'));logger[_0xcd41('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x3ebc38,'request\x20sent',JSON[_0xcd41('0xf')](_0x47b1f5));if(_0x47b1f5['error']){if(_0x47b1f5[_0xcd41('0x10')][_0xcd41('0x11')]===0x1f4){logger[_0xcd41('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x3ebc38,_0x47b1f5[_0xcd41('0x10')][_0xcd41('0x12')]);return _0x26b05e(_0x47b1f5[_0xcd41('0x10')][_0xcd41('0x12')]);}logger[_0xcd41('0x10')](_0xcd41('0xc'),_0x3ebc38,_0x47b1f5[_0xcd41('0x10')][_0xcd41('0x12')]);return _0x39f489(_0x47b1f5['error']['message']);}else{logger['info'](_0xcd41('0xc'),_0x3ebc38,'request\x20sent');_0x39f489(_0x47b1f5[_0xcd41('0x13')][_0xcd41('0x12')]);}})[_0xcd41('0x14')](function(_0x55d7f9){logger[_0xcd41('0x10')](_0xcd41('0xc'),_0x3ebc38,_0x55d7f9);_0x26b05e(_0x55d7f9);});});}
\ No newline at end of file
index e5aa0e9..650f3d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4481=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','describe','/:id','getSections','/:id/resources','getResources','post','create','/:id/clone','clone','/:id/sections','addSections','update','delete','destroy','removeSections','removeResources','multer','util'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x4481,0xd7));var _0x1448=function(_0x2a44ad,_0x2bccbd){_0x2a44ad=_0x2a44ad-0x0;var _0x17eabb=_0x4481[_0x2a44ad];return _0x17eabb;};'use strict';var multer=require(_0x1448('0x0'));var util=require(_0x1448('0x1'));var path=require(_0x1448('0x2'));var timeout=require(_0x1448('0x3'));var express=require(_0x1448('0x4'));var router=express[_0x1448('0x5')]();var fs_extra=require(_0x1448('0x6'));var auth=require(_0x1448('0x7'));var interaction=require(_0x1448('0x8'));var config=require(_0x1448('0x9'));var controller=require(_0x1448('0xa'));router[_0x1448('0xb')]('/',auth[_0x1448('0xc')](),controller[_0x1448('0xd')]);router[_0x1448('0xb')](_0x1448('0xe'),auth[_0x1448('0xc')](),controller[_0x1448('0xf')]);router[_0x1448('0xb')](_0x1448('0x10'),auth[_0x1448('0xc')](),controller['show']);router[_0x1448('0xb')]('/:id/sections',auth[_0x1448('0xc')](),controller[_0x1448('0x11')]);router[_0x1448('0xb')](_0x1448('0x12'),auth[_0x1448('0xc')](),controller[_0x1448('0x13')]);router[_0x1448('0x14')]('/',auth['isAuthenticated'](),controller[_0x1448('0x15')]);router[_0x1448('0x14')](_0x1448('0x16'),auth['isAuthenticated'](),controller[_0x1448('0x17')]);router[_0x1448('0x14')](_0x1448('0x18'),auth[_0x1448('0xc')](),controller[_0x1448('0x19')]);router[_0x1448('0x14')](_0x1448('0x12'),auth[_0x1448('0xc')](),controller['addResources']);router['put']('/:id',auth[_0x1448('0xc')](),controller[_0x1448('0x1a')]);router[_0x1448('0x1b')]('/:id',auth[_0x1448('0xc')](),controller[_0x1448('0x1c')]);router[_0x1448('0x1b')]('/:id/sections',auth[_0x1448('0xc')](),controller[_0x1448('0x1d')]);router[_0x1448('0x1b')](_0x1448('0x12'),auth[_0x1448('0xc')](),controller[_0x1448('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x9517=['delete','removeSections','removeResources','multer','util','connect-timeout','express','Router','../../components/interaction/service','./userProfile.controller','get','isAuthenticated','describe','/:id','/:id/sections','getSections','/:id/resources','post','create','/:id/clone','clone','addResources','put','update'];(function(_0x5a31a9,_0x1696db){var _0x3db184=function(_0x2a69ec){while(--_0x2a69ec){_0x5a31a9['push'](_0x5a31a9['shift']());}};_0x3db184(++_0x1696db);}(_0x9517,0x123));var _0x7951=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9517[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require(_0x7951('0x0'));var util=require(_0x7951('0x1'));var path=require('path');var timeout=require(_0x7951('0x2'));var express=require(_0x7951('0x3'));var router=express[_0x7951('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7951('0x5'));var config=require('../../config/environment');var controller=require(_0x7951('0x6'));router[_0x7951('0x7')]('/',auth[_0x7951('0x8')](),controller['index']);router['get']('/describe',auth[_0x7951('0x8')](),controller[_0x7951('0x9')]);router['get'](_0x7951('0xa'),auth[_0x7951('0x8')](),controller['show']);router[_0x7951('0x7')](_0x7951('0xb'),auth['isAuthenticated'](),controller[_0x7951('0xc')]);router[_0x7951('0x7')](_0x7951('0xd'),auth[_0x7951('0x8')](),controller['getResources']);router[_0x7951('0xe')]('/',auth[_0x7951('0x8')](),controller[_0x7951('0xf')]);router['post'](_0x7951('0x10'),auth[_0x7951('0x8')](),controller[_0x7951('0x11')]);router['post'](_0x7951('0xb'),auth[_0x7951('0x8')](),controller['addSections']);router['post'](_0x7951('0xd'),auth[_0x7951('0x8')](),controller[_0x7951('0x12')]);router[_0x7951('0x13')](_0x7951('0xa'),auth['isAuthenticated'](),controller[_0x7951('0x14')]);router[_0x7951('0x15')]('/:id',auth[_0x7951('0x8')](),controller['destroy']);router['delete']('/:id/sections',auth[_0x7951('0x8')](),controller[_0x7951('0x16')]);router[_0x7951('0x15')](_0x7951('0xd'),auth[_0x7951('0x8')](),controller[_0x7951('0x17')]);module['exports']=router;
\ No newline at end of file
index dea2e36..46e0b85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06fa=['BOOLEAN','sequelize','exports','name','STRING','setDataValue','crudPermissions','join','getDataValue','split'];(function(_0x3b1317,_0x41be7b){var _0x5283c6=function(_0x244fcb){while(--_0x244fcb){_0x3b1317['push'](_0x3b1317['shift']());}};_0x5283c6(++_0x41be7b);}(_0x06fa,0x141));var _0xa06f=function(_0x46a00a,_0x1ebb84){_0x46a00a=_0x46a00a-0x0;var _0x2fc495=_0x06fa[_0x46a00a];return _0x2fc495;};'use strict';var Sequelize=require(_0xa06f('0x0'));module[_0xa06f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa06f('0x2')},'crudPermissions':{'type':Sequelize[_0xa06f('0x3')],'set':function(_0x1b8952){this[_0xa06f('0x4')](_0xa06f('0x5'),_0x1b8952?_0x1b8952[_0xa06f('0x6')](''):[]);},'get':function(){return this[_0xa06f('0x7')]('crudPermissions')?this[_0xa06f('0x7')](_0xa06f('0x5'))[_0xa06f('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x274a=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','setDataValue','crudPermissions'];(function(_0xeadf5,_0x10f2a3){var _0x417a81=function(_0x549cba){while(--_0x549cba){_0xeadf5['push'](_0xeadf5['shift']());}};_0x417a81(++_0x10f2a3);}(_0x274a,0xee));var _0xa274=function(_0x3db122,_0x5e6bee){_0x3db122=_0x3db122-0x0;var _0x325b67=_0x274a[_0x3db122];return _0x325b67;};'use strict';var Sequelize=require(_0xa274('0x0'));module[_0xa274('0x1')]={'name':{'type':Sequelize[_0xa274('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xa274('0x2')],'set':function(_0x10fd37){this[_0xa274('0x3')](_0xa274('0x4'),_0x10fd37?_0x10fd37[_0xa274('0x5')](''):[]);},'get':function(){return this[_0xa274('0x6')](_0xa274('0x4'))?this[_0xa274('0x6')]('crudPermissions')[_0xa274('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xa274('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xa274('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xa274('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xa274('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xa274('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xa274('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xa274('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index e8a6bb4..bd3d316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd3=['body','createdAt','sequelize','each','autoAssociation','UserProfileResource','sectionId','UserProfileSection','Resources','update','describe','addSections','transaction','userProfileId','push','removeSections','ids','getSections','includes','subsections','enabled','findOne','Dashboard','forEach','Plugin','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','include','findAll','rows','params','intersection','length','includeAll','find','create','catch','clone','get','omit','updatedAt','crudPermissions'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x4bd3,0x174));var _0x34bd=function(_0x30bd53,_0x464d9e){_0x30bd53=_0x30bd53-0x0;var _0x38c4d5=_0x4bd3[_0x30bd53];return _0x38c4d5;};'use strict';var emlformat=require(_0x34bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34bd('0x1'));var jsonpatch=require(_0x34bd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x34bd('0x3'));var util=require(_0x34bd('0x4'));var path=require(_0x34bd('0x5'));var sox=require('sox');var csv=require(_0x34bd('0x6'));var ejs=require(_0x34bd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34bd('0x8'));var squel=require(_0x34bd('0x9'));var crypto=require('crypto');var jsforce=require(_0x34bd('0xa'));var deskjs=require(_0x34bd('0xb'));var toCsv=require(_0x34bd('0x6'));var querystring=require(_0x34bd('0xc'));var Papa=require(_0x34bd('0xd'));var Redis=require(_0x34bd('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x34bd('0xf'));var as=require(_0x34bd('0x10'));var hardwareService=require(_0x34bd('0x11'));var logger=require(_0x34bd('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x34bd('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x34bd('0x14')]=_[_0x34bd('0x15')](config[_0x34bd('0x14')],{'host':_0x34bd('0x16'),'port':0x18eb});var socket=require(_0x34bd('0x17'))(new Redis(config[_0x34bd('0x14')]));require(_0x34bd('0x18'))[_0x34bd('0x19')](socket);function respondWithStatusCode(_0xf6d2f2,_0x59ed5d){_0x59ed5d=_0x59ed5d||0xcc;return function(_0x3fa6a8){if(_0x3fa6a8){return _0xf6d2f2['sendStatus'](_0x59ed5d);}return _0xf6d2f2['status'](_0x59ed5d)[_0x34bd('0x1a')]();};}function respondWithResult(_0x30b3f2,_0x280c1a){_0x280c1a=_0x280c1a||0xc8;return function(_0x2dc917){if(_0x2dc917){return _0x30b3f2[_0x34bd('0x1b')](_0x280c1a)[_0x34bd('0x1c')](_0x2dc917);}};}function respondWithFilteredResult(_0xd39d72,_0x1c12e8){return function(_0x3b4bf8){if(_0x3b4bf8){var _0x72b197=typeof _0x1c12e8[_0x34bd('0x1d')]==='undefined'&&typeof _0x1c12e8[_0x34bd('0x1e')]===_0x34bd('0x1f');var _0x265e70=_0x3b4bf8[_0x34bd('0x20')];var _0x3976e4=_0x72b197?0x0:_0x1c12e8[_0x34bd('0x1d')];var _0x288638=_0x72b197?_0x3b4bf8[_0x34bd('0x20')]:_0x1c12e8[_0x34bd('0x1d')]+_0x1c12e8['limit'];var _0x15c0d1;if(_0x288638>=_0x265e70){_0x288638=_0x265e70;_0x15c0d1=0xc8;}else{_0x15c0d1=0xce;}_0xd39d72[_0x34bd('0x1b')](_0x15c0d1);return _0xd39d72[_0x34bd('0x21')](_0x34bd('0x22'),_0x3976e4+'-'+_0x288638+'/'+_0x265e70)[_0x34bd('0x1c')](_0x3b4bf8);}return null;};}function patchUpdates(_0x5e0c06){return function(_0x582772){try{jsonpatch['apply'](_0x582772,_0x5e0c06,!![]);}catch(_0x4edf84){return BPromise[_0x34bd('0x23')](_0x4edf84);}return _0x582772['save']();};}function saveUpdates(_0x10fc4b,_0x1c2282){return function(_0x428140){if(_0x428140){return _0x428140['update'](_0x10fc4b)[_0x34bd('0x24')](function(_0x14479a){return _0x14479a;});}return null;};}function removeEntity(_0x4f0dff,_0x457006){return function(_0x5be702){if(_0x5be702){return _0x5be702[_0x34bd('0x25')]()[_0x34bd('0x24')](function(){_0x4f0dff[_0x34bd('0x1b')](0xcc)[_0x34bd('0x1a')]();});}};}function handleEntityNotFound(_0x56baf7,_0x45b4eb){return function(_0x3fe8b0){if(!_0x3fe8b0){_0x56baf7['sendStatus'](0x194);}return _0x3fe8b0;};}function handleError(_0x27747e,_0x510a30){_0x510a30=_0x510a30||0x1f4;return function(_0x16581f){logger[_0x34bd('0x26')](_0x16581f[_0x34bd('0x27')]);if(_0x16581f[_0x34bd('0x28')]){delete _0x16581f[_0x34bd('0x28')];}_0x27747e['status'](_0x510a30)[_0x34bd('0x29')](_0x16581f);};}exports[_0x34bd('0x2a')]=function(_0x56d3b9,_0x5d1662){var _0x38bdba={},_0xca9897={},_0xd176f7={'count':0x0,'rows':[]};var _0x536b2c=_['map'](db[_0x34bd('0x2b')][_0x34bd('0x2c')],function(_0x1387b5){return{'name':_0x1387b5[_0x34bd('0x2d')],'type':_0x1387b5['type'][_0x34bd('0x2e')]};});_0xca9897[_0x34bd('0x2f')]=_[_0x34bd('0x30')](_0x536b2c,_0x34bd('0x28'));_0xca9897[_0x34bd('0x31')]=_[_0x34bd('0x32')](_0x56d3b9['query']);_0xca9897[_0x34bd('0x33')]=_['intersection'](_0xca9897[_0x34bd('0x2f')],_0xca9897[_0x34bd('0x31')]);_0x38bdba[_0x34bd('0x34')]=_['intersection'](_0xca9897[_0x34bd('0x2f')],qs[_0x34bd('0x35')](_0x56d3b9['query'][_0x34bd('0x35')]));_0x38bdba[_0x34bd('0x34')]=_0x38bdba[_0x34bd('0x34')]['length']?_0x38bdba[_0x34bd('0x34')]:_0xca9897[_0x34bd('0x2f')];if(!_0x56d3b9['query'][_0x34bd('0x36')](_0x34bd('0x37'))){_0x38bdba[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x56d3b9[_0x34bd('0x31')][_0x34bd('0x1e')]);_0x38bdba['offset']=qs['offset'](_0x56d3b9['query'][_0x34bd('0x1d')]);}_0x38bdba[_0x34bd('0x38')]=qs['sort'](_0x56d3b9['query'][_0x34bd('0x39')]);_0x38bdba['where']=qs['filters'](_[_0x34bd('0x3a')](_0x56d3b9[_0x34bd('0x31')],_0xca9897[_0x34bd('0x33')]),_0x536b2c);if(_0x56d3b9[_0x34bd('0x31')][_0x34bd('0x3b')]){_0x38bdba['where']=_['merge'](_0x38bdba[_0x34bd('0x3c')],{'$or':_['map'](_0x536b2c,function(_0xce6bc6){if(_0xce6bc6[_0x34bd('0x3d')]!==_0x34bd('0x3e')){var _0x15d62d={};_0x15d62d[_0xce6bc6[_0x34bd('0x28')]]={'$like':'%'+_0x56d3b9['query'][_0x34bd('0x3b')]+'%'};return _0x15d62d;}})});}_0x38bdba=_[_0x34bd('0x3f')]({},_0x38bdba,_0x56d3b9[_0x34bd('0x40')]);var _0x1b86e1={'where':_0x38bdba['where']};return db[_0x34bd('0x2b')]['count'](_0x1b86e1)[_0x34bd('0x24')](function(_0x560282){_0xd176f7['count']=_0x560282;if(_0x56d3b9[_0x34bd('0x31')]['includeAll']){_0x38bdba[_0x34bd('0x41')]=[{'all':!![]}];}return db[_0x34bd('0x2b')][_0x34bd('0x42')](_0x38bdba);})[_0x34bd('0x24')](function(_0x26d73e){_0xd176f7[_0x34bd('0x43')]=_0x26d73e;return _0xd176f7;})[_0x34bd('0x24')](respondWithFilteredResult(_0x5d1662,_0x38bdba))['catch'](handleError(_0x5d1662,null));};exports['show']=function(_0x547f97,_0xede936){var _0x3e4d4d={'raw':![],'where':{'id':_0x547f97[_0x34bd('0x44')]['id']}},_0x22ebf4={};_0x22ebf4['model']=_[_0x34bd('0x32')](db[_0x34bd('0x2b')][_0x34bd('0x2c')]);_0x22ebf4[_0x34bd('0x31')]=_[_0x34bd('0x32')](_0x547f97['query']);_0x22ebf4[_0x34bd('0x33')]=_['intersection'](_0x22ebf4['model'],_0x22ebf4[_0x34bd('0x31')]);_0x3e4d4d['attributes']=_[_0x34bd('0x45')](_0x22ebf4[_0x34bd('0x2f')],qs[_0x34bd('0x35')](_0x547f97[_0x34bd('0x31')][_0x34bd('0x35')]));_0x3e4d4d['attributes']=_0x3e4d4d['attributes'][_0x34bd('0x46')]?_0x3e4d4d['attributes']:_0x22ebf4[_0x34bd('0x2f')];if(_0x547f97[_0x34bd('0x31')][_0x34bd('0x47')]){_0x3e4d4d['include']=[{'all':!![]}];}_0x3e4d4d=_['merge']({},_0x3e4d4d,_0x547f97['options']);return db['UserProfile'][_0x34bd('0x48')](_0x3e4d4d)['then'](handleEntityNotFound(_0xede936,null))[_0x34bd('0x24')](respondWithResult(_0xede936,null))['catch'](handleError(_0xede936,null));};exports[_0x34bd('0x49')]=function(_0x1d01d7,_0x1fa341){return db[_0x34bd('0x2b')][_0x34bd('0x49')](_0x1d01d7['body'],{})[_0x34bd('0x24')](respondWithResult(_0x1fa341,0xc9))[_0x34bd('0x4a')](handleError(_0x1fa341,null));};exports[_0x34bd('0x4b')]=function(_0x1e60d,_0x173da0){var _0x4be4fa={'where':{'id':_0x1e60d[_0x34bd('0x44')]['id']}},_0x14833b={};_0x14833b['model']=_[_0x34bd('0x32')](db[_0x34bd('0x2b')]['rawAttributes']);_0x4be4fa['attributes']=_[_0x34bd('0x45')](_0x14833b['model'],qs['fields'](_0x1e60d[_0x34bd('0x31')][_0x34bd('0x35')]));_0x4be4fa['attributes']=_0x4be4fa['attributes']['length']?_0x4be4fa['attributes']:_0x14833b[_0x34bd('0x2f')];if(_0x1e60d[_0x34bd('0x31')]['includeAll']){_0x4be4fa['include']=[{'all':!![]}];}_0x4be4fa=_['merge']({},_0x4be4fa,_0x1e60d[_0x34bd('0x40')]);return db[_0x34bd('0x2b')]['find'](_0x4be4fa)[_0x34bd('0x24')](handleEntityNotFound(_0x173da0,null))[_0x34bd('0x24')](function(_0x3f714b){if(_0x3f714b){var _0x2c4064=_0x3f714b[_0x34bd('0x4c')]({'plain':!![]});_0x2c4064=qs[_0x34bd('0x4d')](_0x2c4064,['id','createdAt',_0x34bd('0x4e'),_0x34bd('0x4f')]);_0x1e60d[_0x34bd('0x50')]=_[_0x34bd('0x4d')](_0x1e60d['body'],['id',_0x34bd('0x51'),'updatedAt']);return db[_0x34bd('0x52')]['transaction'](function(_0x2560e8){return db[_0x34bd('0x2b')][_0x34bd('0x49')](_[_0x34bd('0x3f')](_0x2c4064,_0x1e60d[_0x34bd('0x50')]),{'include':_0x1e60d[_0x34bd('0x31')][_0x34bd('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x2560e8})[_0x34bd('0x24')](function(_0x4768f8){var _0x3b1dd5=_0x4768f8[_0x34bd('0x4c')]({'plain':!![]});return db['UserProfileSection'][_0x34bd('0x42')]({'where':{'userProfileId':_0x1e60d['params']['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x4f2091){if(_0x4f2091){return BPromise[_0x34bd('0x53')](_0x4f2091,function(_0x50ed7f){return new BPromise(function(_0x1d85d0,_0x274ec9){if(_0x50ed7f[_0x34bd('0x54')]===null||_0x50ed7f[_0x34bd('0x54')]===0x1)_0x1d85d0(null);return db[_0x34bd('0x55')][_0x34bd('0x42')]({'where':{'sectionId':_0x50ed7f['id']},'raw':!![]})[_0x34bd('0x24')](function(_0xeffa5d){var _0x432291=_[_0x34bd('0x30')](_0xeffa5d,function(_0x25a505){return qs[_0x34bd('0x4d')](_0x25a505,['id',_0x34bd('0x51'),_0x34bd('0x4e'),_0x34bd('0x56')]);});_0x1d85d0(_0x432291);})['catch'](function(_0x5c5766){_0x274ec9(_0x5c5766);});})[_0x34bd('0x24')](function(_0x79e6b4){var _0x352f17=qs[_0x34bd('0x4d')](_0x50ed7f,['id',_0x34bd('0x51'),'updatedAt']);_0x352f17['userProfileId']=_0x3b1dd5['id'];if(_0x79e6b4)_0x352f17['Resources']=_0x79e6b4;return _0x352f17;})['then'](function(_0x24c635){return db[_0x34bd('0x57')]['create'](_0x24c635,{'include':[{'model':db[_0x34bd('0x55')],'as':_0x34bd('0x58')}],'raw':!![],'transaction':_0x2560e8});});})[_0x34bd('0x24')](function(){return _0x3b1dd5;});}});});});}})['then'](respondWithResult(_0x173da0,0xc9))[_0x34bd('0x4a')](handleError(_0x173da0,null));};exports[_0x34bd('0x59')]=function(_0x2fac2a,_0x344be3){if(_0x2fac2a[_0x34bd('0x50')]['id']){delete _0x2fac2a[_0x34bd('0x50')]['id'];}return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x2fac2a['params']['id']}})['then'](handleEntityNotFound(_0x344be3,null))[_0x34bd('0x24')](saveUpdates(_0x2fac2a['body'],null))[_0x34bd('0x24')](respondWithResult(_0x344be3,null))[_0x34bd('0x4a')](handleError(_0x344be3,null));};exports[_0x34bd('0x25')]=function(_0x58a6eb,_0x4e5ea1){return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x58a6eb[_0x34bd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4e5ea1,null))['then'](removeEntity(_0x4e5ea1,null))[_0x34bd('0x4a')](handleError(_0x4e5ea1,null));};exports[_0x34bd('0x5a')]=function(_0x32c61f,_0x1f408a){return db[_0x34bd('0x2b')][_0x34bd('0x5a')]()[_0x34bd('0x24')](respondWithResult(_0x1f408a,null))[_0x34bd('0x4a')](handleError(_0x1f408a,null));};exports[_0x34bd('0x5b')]=function(_0x4f397f,_0x4d3118){var _0x3878a0=_0x4f397f['body'];return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x4f397f[_0x34bd('0x44')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x4d3118,null))['then'](function(_0x50ae2e){if(_0x50ae2e){return db[_0x34bd('0x52')][_0x34bd('0x5c')](function(_0x38e91){return db['UserProfileSection'][_0x34bd('0x25')]({'where':{'userProfileId':_0x4f397f['params']['id'],'sectionId':_[_0x34bd('0x30')](_0x3878a0,function(_0x35d9be){return _0x35d9be[_0x34bd('0x56')];})},'transaction':_0x38e91})['then'](function(){var _0x353fe9=_['map'](_0x3878a0,function(_0x5d96b9){_0x5d96b9[_0x34bd('0x5d')]=_0x4f397f[_0x34bd('0x44')]['id'];return _0x5d96b9;});var _0x29a259=[];return BPromise['each'](_0x353fe9,function(_0x3f909d){return db[_0x34bd('0x57')][_0x34bd('0x49')](_0x3f909d,{'include':[{'model':db['UserProfileResource'],'as':_0x34bd('0x58')}],'raw':!![],'transaction':_0x38e91})[_0x34bd('0x24')](function(_0x385ab3){_0x29a259[_0x34bd('0x5e')](_0x385ab3[_0x34bd('0x4c')]({'plain':!![]}));});})[_0x34bd('0x24')](function(){return _0x29a259;});});});}})[_0x34bd('0x24')](function(_0x2297f6){return _0x2297f6;})[_0x34bd('0x24')](respondWithResult(_0x4d3118,null))[_0x34bd('0x4a')](handleError(_0x4d3118,null));};exports[_0x34bd('0x5f')]=function(_0x59e377,_0x24e164){var _0x507806;return db[_0x34bd('0x2b')]['find']({'where':{'id':_0x59e377[_0x34bd('0x44')]['id']},'attributes':['id',_0x34bd('0x28')]})[_0x34bd('0x24')](handleEntityNotFound(_0x24e164,null))[_0x34bd('0x24')](function(_0x3e426d){if(_0x3e426d){_0x507806=_0x3e426d;return db[_0x34bd('0x57')][_0x34bd('0x25')]({'where':{'userProfileId':_0x59e377[_0x34bd('0x44')]['id'],'sectionId':_0x59e377[_0x34bd('0x31')][_0x34bd('0x60')]}});}})['then'](function(){return _0x507806;})['then'](respondWithStatusCode(_0x24e164,null))[_0x34bd('0x4a')](handleError(_0x24e164,null));};exports[_0x34bd('0x61')]=function(_0xfc56a3,_0x5b60b4){var _0x5e7c84=[];var _0x5758da=[];return db[_0x34bd('0x57')][_0x34bd('0x42')]({'where':{'userProfileId':_0xfc56a3[_0x34bd('0x44')]['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x7fef8b){_0x5e7c84=_['filter'](_0x7fef8b,function(_0x16a79f){return _0x16a79f['enabled']===0x1||_[_0x34bd('0x62')]([0x3eb,0x709],_0x16a79f[_0x34bd('0x56')]);});if(!_['isEmpty'](_0x5e7c84)){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x5df452){return _0x5df452[_0x34bd('0x56')];});}else{return;}})['then'](function(_0x4c513a){if(_0x4c513a)_0x5758da=_0x4c513a;if(_['includes'](_0x5758da,0x64)){var _0x397396=_[_0x34bd('0x48')](_0x5e7c84,{'sectionId':0x64});return hasDefaultDashboard(_0x397396)[_0x34bd('0x24')](function(_0x35d257){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x34bb6d){if(_0x34bb6d[_0x34bd('0x56')]===0x64){_0x34bb6d[_0x34bd('0x63')]=_0x35d257;}return _0x34bb6d;});});}else{return;}})['then'](function(_0x62b35){if(_0x62b35)_0x5e7c84=_0x62b35;if(_[_0x34bd('0x62')](_0x5758da,0x3eb)){var _0x2674b9=_['find'](_0x5e7c84,{'sectionId':0x3eb});return getCustomDashboards(_0x2674b9)['then'](function(_0x49c5c3){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x2a60c1){if(_0x2674b9['enabled']){if(_0x2a60c1[_0x34bd('0x56')]===0x3eb){_0x2a60c1['subsections']=_0x49c5c3;}}else{if(_0x2a60c1[_0x34bd('0x56')]===0x64){_0x2a60c1[_0x34bd('0x63')]=_0x49c5c3;}}return _0x2a60c1;});});}else{return;}})[_0x34bd('0x24')](function(_0x4c6508){if(_0x4c6508)_0x5e7c84=_0x4c6508;if(_[_0x34bd('0x62')](_0x5758da,0x709)){var _0x4a05cb=_[_0x34bd('0x48')](_0x5e7c84,{'sectionId':0x709});return getPlugins(_0x4a05cb)[_0x34bd('0x24')](function(_0x3a087c){if(_0x4a05cb[_0x34bd('0x64')]){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x1c25a5){if(_0x1c25a5[_0x34bd('0x56')]===0x709){_0x1c25a5[_0x34bd('0x63')]=_0x3a087c;}return _0x1c25a5;});}else{var _0x200da1={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3a087c};var _0x3a9650=_[_0x34bd('0x30')](_0x5e7c84);_0x3a9650[_0x34bd('0x5e')](_0x200da1);return _0x3a9650;}});}else{return;}})[_0x34bd('0x24')](function(_0x48d9b9){if(_0x48d9b9)_0x5e7c84=_0x48d9b9;return _['filter'](_0x5e7c84,[_0x34bd('0x64'),0x1]);})[_0x34bd('0x24')](respondWithResult(_0x5b60b4,null))[_0x34bd('0x4a')](handleError(_0x5b60b4,null));};function hasDefaultDashboard(_0x384bf0){var _0x36aca5=[0x65];return new BPromise(function(_0x49455c,_0x1799dd){try{if(_0x384bf0[_0x34bd('0x54')]){_0x49455c(_0x36aca5);}else{return db[_0x34bd('0x55')][_0x34bd('0x65')]({'where':{'sectionId':_0x384bf0['id']},'raw':!![]})['then'](function(_0x2b838a){_0x2b838a?_0x49455c(_0x36aca5):_0x49455c();});}}catch(_0x572ac2){_0x1799dd(_0x572ac2);}});}function getCustomDashboards(_0x5e329b){var _0x49ba99=[];return new BPromise(function(_0x59a5cf,_0x325f8a){try{if(_0x5e329b[_0x34bd('0x54')]){return db[_0x34bd('0x66')]['findAll']({'raw':!![]})[_0x34bd('0x24')](function(_0x21588f){_0x21588f[_0x34bd('0x67')](function(_0x2b27c7){_0x49ba99[_0x34bd('0x5e')](_0x2b27c7['id']+0x1869f);});_0x59a5cf(_0x49ba99);});}else{return db[_0x34bd('0x55')][_0x34bd('0x42')]({'where':{'sectionId':_0x5e329b['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x86a995){_0x86a995[_0x34bd('0x67')](function(_0x4451ef){_0x49ba99['push'](_0x4451ef['resourceId']+0x1869f);});_0x59a5cf(_0x49ba99);});}}catch(_0x26620a){_0x325f8a(_0x26620a);}});}function getPlugins(_0x50f8e7){var _0xbe3d9c=[];return new BPromise(function(_0x384905,_0x2e2ba1){try{if(_0x50f8e7[_0x34bd('0x54')]){return db[_0x34bd('0x68')][_0x34bd('0x42')]({'raw':!![]})[_0x34bd('0x24')](function(_0xf45fee){_0xf45fee['forEach'](function(_0x8d35a9){_0xbe3d9c[_0x34bd('0x5e')](_0x8d35a9['id']+0x15b38);});_0x384905(_0xbe3d9c);});}else{return db[_0x34bd('0x55')]['findAll']({'where':{'sectionId':_0x50f8e7['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x4022a0){_0x4022a0[_0x34bd('0x67')](function(_0x4502e6){_0xbe3d9c['push'](_0x4502e6[_0x34bd('0x69')]+0x15b38);});_0x384905(_0xbe3d9c);});}}catch(_0x3fe460){_0x2e2ba1(_0x3fe460);}});}exports[_0x34bd('0x6a')]=function(_0x5f2e77,_0xd504ea){return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x5f2e77[_0x34bd('0x44')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0xd504ea,null))[_0x34bd('0x24')](function(_0x4b4347){if(_0x4b4347){return db[_0x34bd('0x52')][_0x34bd('0x5c')](function(_0x19d537){return db[_0x34bd('0x57')][_0x34bd('0x42')]({'where':{'userProfileId':_0x5f2e77[_0x34bd('0x44')]['id']},'attributes':['id'],'raw':!![]})[_0x34bd('0x24')](function(_0x171d0c){if(_0x171d0c){return db[_0x34bd('0x57')][_0x34bd('0x25')]({'where':{'userProfileId':_0x5f2e77[_0x34bd('0x44')]['id'],'id':_[_0x34bd('0x30')](_0x171d0c,function(_0xeecfb4){return _0xeecfb4['id'];})},'transaction':_0x19d537});}})[_0x34bd('0x24')](function(_0x47a050){var _0x70c6a9=_['map'](_0x5f2e77[_0x34bd('0x50')],function(_0x29a09c){_0x29a09c[_0x34bd('0x5d')]=_0x5f2e77[_0x34bd('0x44')]['id'];return _0x29a09c;});return db[_0x34bd('0x57')][_0x34bd('0x6b')](_0x70c6a9,{'raw':!![],'transaction':_0x19d537});})[_0x34bd('0x24')](function(_0x32de85){var _0x5addf9=_[_0x34bd('0x3b')](_[_0x34bd('0x30')](_0x32de85,function(_0x3efd93){return _0x3efd93['get']({'plain':!![]});}),{'includeAll':![]});if(_0x5addf9){return db[_0x34bd('0x57')][_0x34bd('0x42')]({'where':{'userProfileId':_0x5f2e77[_0x34bd('0x44')]['id'],'sectionId':_[_0x34bd('0x30')](_0x5addf9,function(_0x57b075){return _0x57b075[_0x34bd('0x56')];})},'attributes':['id',_0x34bd('0x56')],'raw':!![]})[_0x34bd('0x24')](function(_0xda9ff9){var _0x2b8917=_['map'](_0x5f2e77[_0x34bd('0x50')],function(_0x4b067d){_0x4b067d['userProfileId']=_0x5f2e77[_0x34bd('0x44')]['id'];return _0x4b067d;});return db[_0x34bd('0x55')][_0x34bd('0x6b')](_0x2b8917,{'raw':!![],'transaction':_0x19d537});});}})['catch'](handleError(_0xd504ea,null));});}})[_0x34bd('0x24')](function(_0x5cea3e){var _0x270d7e=_[_0x34bd('0x30')](_0x5cea3e,function(_0x5e9e73){return _0x5e9e73['get']({'plain':!![]});});})['then'](respondWithResult(_0xd504ea,null))[_0x34bd('0x4a')](handleError(_0xd504ea,null));};exports[_0x34bd('0x6c')]=function(_0x563e11,_0x476c1f,_0x56093c){return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x563e11[_0x34bd('0x44')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x476c1f,null))[_0x34bd('0x24')](function(_0x459be1){if(_0x459be1){return _0x459be1[_0x34bd('0x6c')](_0x563e11[_0x34bd('0x31')]['ids']);}})[_0x34bd('0x24')](respondWithStatusCode(_0x476c1f,null))[_0x34bd('0x4a')](handleError(_0x476c1f,null));};exports[_0x34bd('0x6d')]=function(_0x2e9d66,_0x2f8e79){var _0xa42b8e={};if(!_0x2e9d66[_0x34bd('0x31')][_0x34bd('0x6e')])throw new Error(_0x34bd('0x6f'));if(!_0x2e9d66[_0x34bd('0x31')]['hasOwnProperty'](_0x34bd('0x37'))){_0xa42b8e['limit']=qs['limit'](_0x2e9d66[_0x34bd('0x31')][_0x34bd('0x1e')]);_0xa42b8e[_0x34bd('0x1d')]=qs[_0x34bd('0x1d')](_0x2e9d66['query'][_0x34bd('0x1d')]);}return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x2e9d66[_0x34bd('0x44')]['id']}})['then'](function(_0x5d0e56){if(!_0x5d0e56)throw new Error(_0x34bd('0x70')+_0x2e9d66[_0x34bd('0x44')]['id']);return db['UserProfile'][_0x34bd('0x6d')](_0x2e9d66);})[_0x34bd('0x24')](respondWithFilteredResult(_0x2f8e79,_0xa42b8e))['catch'](handleError(_0x2f8e79,null));};
\ No newline at end of file
+var _0x1c52=['enabled','includes','isEmpty','subsections','findOne','Dashboard','resourceId','Plugin','forEach','bulkCreate','removeResources','section','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./userProfile.socket','sendStatus','status','end','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','map','UserProfile','rawAttributes','fieldName','model','query','keys','intersection','fields','attributes','length','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','include','find','create','body','clone','params','get','omit','createdAt','updatedAt','each','autoAssociation','UserProfileResource','sectionId','userProfileId','UserProfileSection','Resources','describe','sequelize','transaction','push','removeSections','ids'];(function(_0x39712a,_0x1769f7){var _0x418b9e=function(_0xab3064){while(--_0xab3064){_0x39712a['push'](_0x39712a['shift']());}};_0x418b9e(++_0x1769f7);}(_0x1c52,0x7c));var _0x21c5=function(_0x5062ff,_0x39634e){_0x5062ff=_0x5062ff-0x0;var _0x44d09f=_0x1c52[_0x5062ff];return _0x44d09f;};'use strict';var emlformat=require(_0x21c5('0x0'));var rimraf=require(_0x21c5('0x1'));var zipdir=require(_0x21c5('0x2'));var jsonpatch=require(_0x21c5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x21c5('0x4'));var util=require(_0x21c5('0x5'));var path=require('path');var sox=require(_0x21c5('0x6'));var csv=require(_0x21c5('0x7'));var ejs=require(_0x21c5('0x8'));var fs=require('fs');var fs_extra=require(_0x21c5('0x9'));var _=require('lodash');var squel=require(_0x21c5('0xa'));var crypto=require(_0x21c5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x21c5('0xc'));var toCsv=require(_0x21c5('0x7'));var querystring=require(_0x21c5('0xd'));var Papa=require(_0x21c5('0xe'));var Redis=require('ioredis');var authService=require(_0x21c5('0xf'));var qs=require(_0x21c5('0x10'));var as=require(_0x21c5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x21c5('0x12'))('api');var utils=require(_0x21c5('0x13'));var config=require(_0x21c5('0x14'));var licenseUtil=require(_0x21c5('0x15'));var db=require(_0x21c5('0x16'))['db'];config['redis']=_[_0x21c5('0x17')](config['redis'],{'host':_0x21c5('0x18'),'port':0x18eb});var socket=require(_0x21c5('0x19'))(new Redis(config['redis']));require(_0x21c5('0x1a'))['register'](socket);function respondWithStatusCode(_0x4791f7,_0x3ba28b){_0x3ba28b=_0x3ba28b||0xcc;return function(_0x35d2fe){if(_0x35d2fe){return _0x4791f7[_0x21c5('0x1b')](_0x3ba28b);}return _0x4791f7[_0x21c5('0x1c')](_0x3ba28b)[_0x21c5('0x1d')]();};}function respondWithResult(_0x102433,_0x41b810){_0x41b810=_0x41b810||0xc8;return function(_0x4bdf72){if(_0x4bdf72){return _0x102433[_0x21c5('0x1c')](_0x41b810)['json'](_0x4bdf72);}};}function respondWithFilteredResult(_0x495f5c,_0x28e7c2){return function(_0x56696e){if(_0x56696e){var _0x4daf4d=typeof _0x28e7c2[_0x21c5('0x1e')]==='undefined'&&typeof _0x28e7c2[_0x21c5('0x1f')]==='undefined';var _0x30fb8a=_0x56696e['count'];var _0x4bf01b=_0x4daf4d?0x0:_0x28e7c2[_0x21c5('0x1e')];var _0x141ae0=_0x4daf4d?_0x56696e[_0x21c5('0x20')]:_0x28e7c2[_0x21c5('0x1e')]+_0x28e7c2[_0x21c5('0x1f')];var _0x1fb82d;if(_0x141ae0>=_0x30fb8a){_0x141ae0=_0x30fb8a;_0x1fb82d=0xc8;}else{_0x1fb82d=0xce;}_0x495f5c[_0x21c5('0x1c')](_0x1fb82d);return _0x495f5c[_0x21c5('0x21')](_0x21c5('0x22'),_0x4bf01b+'-'+_0x141ae0+'/'+_0x30fb8a)['json'](_0x56696e);}return null;};}function patchUpdates(_0x8021db){return function(_0x25463f){try{jsonpatch[_0x21c5('0x23')](_0x25463f,_0x8021db,!![]);}catch(_0x1aa54e){return BPromise[_0x21c5('0x24')](_0x1aa54e);}return _0x25463f['save']();};}function saveUpdates(_0x251c9d,_0x63f5fc){return function(_0x45e770){if(_0x45e770){return _0x45e770[_0x21c5('0x25')](_0x251c9d)[_0x21c5('0x26')](function(_0x4d3215){return _0x4d3215;});}return null;};}function removeEntity(_0x51c0b1,_0x4f877c){return function(_0x2ac36b){if(_0x2ac36b){return _0x2ac36b[_0x21c5('0x27')]()[_0x21c5('0x26')](function(){_0x51c0b1[_0x21c5('0x1c')](0xcc)[_0x21c5('0x1d')]();});}};}function handleEntityNotFound(_0x531cf4,_0x546286){return function(_0x5918df){if(!_0x5918df){_0x531cf4[_0x21c5('0x1b')](0x194);}return _0x5918df;};}function handleError(_0x3220c4,_0x2170e9){_0x2170e9=_0x2170e9||0x1f4;return function(_0x3f056f){logger['error'](_0x3f056f[_0x21c5('0x28')]);if(_0x3f056f[_0x21c5('0x29')]){delete _0x3f056f[_0x21c5('0x29')];}_0x3220c4[_0x21c5('0x1c')](_0x2170e9)[_0x21c5('0x2a')](_0x3f056f);};}exports['index']=function(_0x559012,_0xda0d70){var _0x29a15b={},_0x3353b3={},_0x177ca1={'count':0x0,'rows':[]};var _0x39662b=_[_0x21c5('0x2b')](db[_0x21c5('0x2c')][_0x21c5('0x2d')],function(_0x2eea4f){return{'name':_0x2eea4f[_0x21c5('0x2e')],'type':_0x2eea4f['type']['key']};});_0x3353b3[_0x21c5('0x2f')]=_['map'](_0x39662b,_0x21c5('0x29'));_0x3353b3[_0x21c5('0x30')]=_[_0x21c5('0x31')](_0x559012[_0x21c5('0x30')]);_0x3353b3['filters']=_[_0x21c5('0x32')](_0x3353b3['model'],_0x3353b3[_0x21c5('0x30')]);_0x29a15b['attributes']=_[_0x21c5('0x32')](_0x3353b3[_0x21c5('0x2f')],qs[_0x21c5('0x33')](_0x559012['query'][_0x21c5('0x33')]));_0x29a15b['attributes']=_0x29a15b[_0x21c5('0x34')][_0x21c5('0x35')]?_0x29a15b[_0x21c5('0x34')]:_0x3353b3['model'];if(!_0x559012[_0x21c5('0x30')]['hasOwnProperty']('nolimit')){_0x29a15b[_0x21c5('0x1f')]=qs[_0x21c5('0x1f')](_0x559012[_0x21c5('0x30')][_0x21c5('0x1f')]);_0x29a15b['offset']=qs[_0x21c5('0x1e')](_0x559012[_0x21c5('0x30')][_0x21c5('0x1e')]);}_0x29a15b[_0x21c5('0x36')]=qs[_0x21c5('0x37')](_0x559012[_0x21c5('0x30')][_0x21c5('0x37')]);_0x29a15b[_0x21c5('0x38')]=qs['filters'](_[_0x21c5('0x39')](_0x559012[_0x21c5('0x30')],_0x3353b3[_0x21c5('0x3a')]),_0x39662b);if(_0x559012['query'][_0x21c5('0x3b')]){_0x29a15b[_0x21c5('0x38')]=_[_0x21c5('0x3c')](_0x29a15b[_0x21c5('0x38')],{'$or':_[_0x21c5('0x2b')](_0x39662b,function(_0x50f3c1){if(_0x50f3c1[_0x21c5('0x3d')]!==_0x21c5('0x3e')){var _0x6358ae={};_0x6358ae[_0x50f3c1[_0x21c5('0x29')]]={'$like':'%'+_0x559012[_0x21c5('0x30')]['filter']+'%'};return _0x6358ae;}})});}_0x29a15b=_[_0x21c5('0x3c')]({},_0x29a15b,_0x559012[_0x21c5('0x3f')]);var _0x301ea7={'where':_0x29a15b[_0x21c5('0x38')]};return db['UserProfile'][_0x21c5('0x20')](_0x301ea7)[_0x21c5('0x26')](function(_0x4f0e0b){_0x177ca1[_0x21c5('0x20')]=_0x4f0e0b;if(_0x559012[_0x21c5('0x30')][_0x21c5('0x40')]){_0x29a15b['include']=[{'all':!![]}];}return db[_0x21c5('0x2c')][_0x21c5('0x41')](_0x29a15b);})[_0x21c5('0x26')](function(_0x56547e){_0x177ca1[_0x21c5('0x42')]=_0x56547e;return _0x177ca1;})['then'](respondWithFilteredResult(_0xda0d70,_0x29a15b))[_0x21c5('0x43')](handleError(_0xda0d70,null));};exports[_0x21c5('0x44')]=function(_0x383893,_0x3e915a){var _0x208d1b={'raw':![],'where':{'id':_0x383893['params']['id']}},_0x4b769f={};_0x4b769f['model']=_[_0x21c5('0x31')](db['UserProfile'][_0x21c5('0x2d')]);_0x4b769f[_0x21c5('0x30')]=_[_0x21c5('0x31')](_0x383893[_0x21c5('0x30')]);_0x4b769f['filters']=_[_0x21c5('0x32')](_0x4b769f[_0x21c5('0x2f')],_0x4b769f[_0x21c5('0x30')]);_0x208d1b[_0x21c5('0x34')]=_[_0x21c5('0x32')](_0x4b769f[_0x21c5('0x2f')],qs[_0x21c5('0x33')](_0x383893[_0x21c5('0x30')][_0x21c5('0x33')]));_0x208d1b['attributes']=_0x208d1b[_0x21c5('0x34')]['length']?_0x208d1b[_0x21c5('0x34')]:_0x4b769f[_0x21c5('0x2f')];if(_0x383893[_0x21c5('0x30')][_0x21c5('0x40')]){_0x208d1b[_0x21c5('0x45')]=[{'all':!![]}];}_0x208d1b=_[_0x21c5('0x3c')]({},_0x208d1b,_0x383893[_0x21c5('0x3f')]);return db[_0x21c5('0x2c')][_0x21c5('0x46')](_0x208d1b)[_0x21c5('0x26')](handleEntityNotFound(_0x3e915a,null))[_0x21c5('0x26')](respondWithResult(_0x3e915a,null))[_0x21c5('0x43')](handleError(_0x3e915a,null));};exports['create']=function(_0x5e4586,_0x5513c5){return db[_0x21c5('0x2c')][_0x21c5('0x47')](_0x5e4586[_0x21c5('0x48')],{})['then'](respondWithResult(_0x5513c5,0xc9))[_0x21c5('0x43')](handleError(_0x5513c5,null));};exports[_0x21c5('0x49')]=function(_0x3240a2,_0x4fb63f){var _0x50677c={'where':{'id':_0x3240a2[_0x21c5('0x4a')]['id']}},_0x36699f={};_0x36699f[_0x21c5('0x2f')]=_[_0x21c5('0x31')](db['UserProfile'][_0x21c5('0x2d')]);_0x50677c[_0x21c5('0x34')]=_[_0x21c5('0x32')](_0x36699f[_0x21c5('0x2f')],qs['fields'](_0x3240a2[_0x21c5('0x30')][_0x21c5('0x33')]));_0x50677c[_0x21c5('0x34')]=_0x50677c['attributes'][_0x21c5('0x35')]?_0x50677c['attributes']:_0x36699f['model'];if(_0x3240a2[_0x21c5('0x30')][_0x21c5('0x40')]){_0x50677c[_0x21c5('0x45')]=[{'all':!![]}];}_0x50677c=_[_0x21c5('0x3c')]({},_0x50677c,_0x3240a2[_0x21c5('0x3f')]);return db['UserProfile']['find'](_0x50677c)['then'](handleEntityNotFound(_0x4fb63f,null))[_0x21c5('0x26')](function(_0x106cc6){if(_0x106cc6){var _0x573a1b=_0x106cc6[_0x21c5('0x4b')]({'plain':!![]});_0x573a1b=qs[_0x21c5('0x4c')](_0x573a1b,['id',_0x21c5('0x4d'),_0x21c5('0x4e'),'crudPermissions']);_0x3240a2[_0x21c5('0x48')]=_[_0x21c5('0x4c')](_0x3240a2[_0x21c5('0x48')],['id',_0x21c5('0x4d'),_0x21c5('0x4e')]);return db['sequelize']['transaction'](function(_0x2de46c){return db[_0x21c5('0x2c')][_0x21c5('0x47')](_[_0x21c5('0x3c')](_0x573a1b,_0x3240a2[_0x21c5('0x48')]),{'include':_0x3240a2['query'][_0x21c5('0x40')]?[{'all':!![]}]:undefined,'transaction':_0x2de46c})[_0x21c5('0x26')](function(_0x564acd){var _0xeb6ad9=_0x564acd[_0x21c5('0x4b')]({'plain':!![]});return db['UserProfileSection'][_0x21c5('0x41')]({'where':{'userProfileId':_0x3240a2['params']['id']},'raw':!![]})[_0x21c5('0x26')](function(_0x59bcaa){if(_0x59bcaa){return BPromise[_0x21c5('0x4f')](_0x59bcaa,function(_0x400b32){return new BPromise(function(_0xd4c091,_0x2d5bfa){if(_0x400b32[_0x21c5('0x50')]===null||_0x400b32['autoAssociation']===0x1)_0xd4c091(null);return db[_0x21c5('0x51')]['findAll']({'where':{'sectionId':_0x400b32['id']},'raw':!![]})[_0x21c5('0x26')](function(_0x5d4617){var _0x521729=_[_0x21c5('0x2b')](_0x5d4617,function(_0x164917){return qs[_0x21c5('0x4c')](_0x164917,['id',_0x21c5('0x4d'),_0x21c5('0x4e'),_0x21c5('0x52')]);});_0xd4c091(_0x521729);})[_0x21c5('0x43')](function(_0x58bcb9){_0x2d5bfa(_0x58bcb9);});})[_0x21c5('0x26')](function(_0x5cf26e){var _0xdb5a22=qs[_0x21c5('0x4c')](_0x400b32,['id',_0x21c5('0x4d'),_0x21c5('0x4e')]);_0xdb5a22[_0x21c5('0x53')]=_0xeb6ad9['id'];if(_0x5cf26e)_0xdb5a22['Resources']=_0x5cf26e;return _0xdb5a22;})['then'](function(_0x1d37c6){return db[_0x21c5('0x54')][_0x21c5('0x47')](_0x1d37c6,{'include':[{'model':db[_0x21c5('0x51')],'as':_0x21c5('0x55')}],'raw':!![],'transaction':_0x2de46c});});})['then'](function(){return _0xeb6ad9;});}});});});}})[_0x21c5('0x26')](respondWithResult(_0x4fb63f,0xc9))[_0x21c5('0x43')](handleError(_0x4fb63f,null));};exports['update']=function(_0x39949b,_0x500ede){if(_0x39949b[_0x21c5('0x48')]['id']){delete _0x39949b[_0x21c5('0x48')]['id'];}return db[_0x21c5('0x2c')][_0x21c5('0x46')]({'where':{'id':_0x39949b[_0x21c5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x500ede,null))[_0x21c5('0x26')](saveUpdates(_0x39949b[_0x21c5('0x48')],null))[_0x21c5('0x26')](respondWithResult(_0x500ede,null))['catch'](handleError(_0x500ede,null));};exports[_0x21c5('0x27')]=function(_0x5b4feb,_0x19283d){return db['UserProfile'][_0x21c5('0x46')]({'where':{'id':_0x5b4feb[_0x21c5('0x4a')]['id']}})[_0x21c5('0x26')](handleEntityNotFound(_0x19283d,null))[_0x21c5('0x26')](removeEntity(_0x19283d,null))[_0x21c5('0x43')](handleError(_0x19283d,null));};exports['describe']=function(_0x2509be,_0x171a51){return db['UserProfile'][_0x21c5('0x56')]()[_0x21c5('0x26')](respondWithResult(_0x171a51,null))[_0x21c5('0x43')](handleError(_0x171a51,null));};exports['addSections']=function(_0xc2c339,_0x2a4bc9){var _0x1ebc0d=_0xc2c339[_0x21c5('0x48')];return db[_0x21c5('0x2c')]['find']({'where':{'id':_0xc2c339[_0x21c5('0x4a')]['id']}})[_0x21c5('0x26')](handleEntityNotFound(_0x2a4bc9,null))['then'](function(_0x302fc2){if(_0x302fc2){return db[_0x21c5('0x57')][_0x21c5('0x58')](function(_0x1ca34b){return db['UserProfileSection'][_0x21c5('0x27')]({'where':{'userProfileId':_0xc2c339[_0x21c5('0x4a')]['id'],'sectionId':_[_0x21c5('0x2b')](_0x1ebc0d,function(_0x1f960b){return _0x1f960b['sectionId'];})},'transaction':_0x1ca34b})['then'](function(){var _0x1c0fee=_['map'](_0x1ebc0d,function(_0x5c40af){_0x5c40af[_0x21c5('0x53')]=_0xc2c339[_0x21c5('0x4a')]['id'];return _0x5c40af;});var _0x2e8079=[];return BPromise[_0x21c5('0x4f')](_0x1c0fee,function(_0x5f5381){return db[_0x21c5('0x54')]['create'](_0x5f5381,{'include':[{'model':db[_0x21c5('0x51')],'as':_0x21c5('0x55')}],'raw':!![],'transaction':_0x1ca34b})[_0x21c5('0x26')](function(_0x1ae5bd){_0x2e8079[_0x21c5('0x59')](_0x1ae5bd[_0x21c5('0x4b')]({'plain':!![]}));});})[_0x21c5('0x26')](function(){return _0x2e8079;});});});}})[_0x21c5('0x26')](function(_0x9dc5e7){return _0x9dc5e7;})['then'](respondWithResult(_0x2a4bc9,null))['catch'](handleError(_0x2a4bc9,null));};exports[_0x21c5('0x5a')]=function(_0x4a6266,_0x2ecb29){var _0x4f5003;return db[_0x21c5('0x2c')][_0x21c5('0x46')]({'where':{'id':_0x4a6266[_0x21c5('0x4a')]['id']},'attributes':['id','name']})['then'](handleEntityNotFound(_0x2ecb29,null))['then'](function(_0x3f1f7f){if(_0x3f1f7f){_0x4f5003=_0x3f1f7f;return db[_0x21c5('0x54')][_0x21c5('0x27')]({'where':{'userProfileId':_0x4a6266[_0x21c5('0x4a')]['id'],'sectionId':_0x4a6266[_0x21c5('0x30')][_0x21c5('0x5b')]}});}})['then'](function(){return _0x4f5003;})['then'](respondWithStatusCode(_0x2ecb29,null))[_0x21c5('0x43')](handleError(_0x2ecb29,null));};exports['getSections']=function(_0x2c964b,_0x183bfb){var _0x56309d=[];var _0x21f249=[];return db[_0x21c5('0x54')]['findAll']({'where':{'userProfileId':_0x2c964b[_0x21c5('0x4a')]['id']},'raw':!![]})[_0x21c5('0x26')](function(_0x3d8b3e){_0x56309d=_[_0x21c5('0x3b')](_0x3d8b3e,function(_0x200738){return _0x200738[_0x21c5('0x5c')]===0x1||_[_0x21c5('0x5d')]([0x3eb,0x709],_0x200738[_0x21c5('0x52')]);});if(!_[_0x21c5('0x5e')](_0x56309d)){return _[_0x21c5('0x2b')](_0x56309d,function(_0x50bdea){return _0x50bdea[_0x21c5('0x52')];});}else{return;}})[_0x21c5('0x26')](function(_0x3cdeda){if(_0x3cdeda)_0x21f249=_0x3cdeda;if(_['includes'](_0x21f249,0x64)){var _0x6d2617=_[_0x21c5('0x46')](_0x56309d,{'sectionId':0x64});return hasDefaultDashboard(_0x6d2617)[_0x21c5('0x26')](function(_0x1cb3c4){return _[_0x21c5('0x2b')](_0x56309d,function(_0x973af4){if(_0x973af4['sectionId']===0x64){_0x973af4[_0x21c5('0x5f')]=_0x1cb3c4;}return _0x973af4;});});}else{return;}})[_0x21c5('0x26')](function(_0x2b3bbb){if(_0x2b3bbb)_0x56309d=_0x2b3bbb;if(_['includes'](_0x21f249,0x3eb)){var _0x52a153=_[_0x21c5('0x46')](_0x56309d,{'sectionId':0x3eb});return getCustomDashboards(_0x52a153)['then'](function(_0x49297a){return _[_0x21c5('0x2b')](_0x56309d,function(_0x399d90){if(_0x52a153['enabled']){if(_0x399d90[_0x21c5('0x52')]===0x3eb){_0x399d90[_0x21c5('0x5f')]=_0x49297a;}}else{if(_0x399d90[_0x21c5('0x52')]===0x64){_0x399d90[_0x21c5('0x5f')]=_0x49297a;}}return _0x399d90;});});}else{return;}})['then'](function(_0x125915){if(_0x125915)_0x56309d=_0x125915;if(_[_0x21c5('0x5d')](_0x21f249,0x709)){var _0xb15d22=_[_0x21c5('0x46')](_0x56309d,{'sectionId':0x709});return getPlugins(_0xb15d22)['then'](function(_0x2ecf77){if(_0xb15d22[_0x21c5('0x5c')]){return _['map'](_0x56309d,function(_0x1496ce){if(_0x1496ce[_0x21c5('0x52')]===0x709){_0x1496ce['subsections']=_0x2ecf77;}return _0x1496ce;});}else{var _0x4c16a8={'sectionId':0x76c,'enabled':0x1,'subsections':_0x2ecf77};var _0x590129=_[_0x21c5('0x2b')](_0x56309d);_0x590129[_0x21c5('0x59')](_0x4c16a8);return _0x590129;}});}else{return;}})[_0x21c5('0x26')](function(_0xdf6242){if(_0xdf6242)_0x56309d=_0xdf6242;return _[_0x21c5('0x3b')](_0x56309d,[_0x21c5('0x5c'),0x1]);})[_0x21c5('0x26')](respondWithResult(_0x183bfb,null))[_0x21c5('0x43')](handleError(_0x183bfb,null));};function hasDefaultDashboard(_0x297be9){var _0x4423db=[0x65];return new BPromise(function(_0x143a62,_0x39b980){try{if(_0x297be9[_0x21c5('0x50')]){_0x143a62(_0x4423db);}else{return db[_0x21c5('0x51')][_0x21c5('0x60')]({'where':{'sectionId':_0x297be9['id']},'raw':!![]})[_0x21c5('0x26')](function(_0x5b547f){_0x5b547f?_0x143a62(_0x4423db):_0x143a62();});}}catch(_0x2956c7){_0x39b980(_0x2956c7);}});}function getCustomDashboards(_0x2d9654){var _0x1c736a=[];return new BPromise(function(_0x128baa,_0x4ebaaf){try{if(_0x2d9654['autoAssociation']){return db[_0x21c5('0x61')][_0x21c5('0x41')]({'raw':!![]})[_0x21c5('0x26')](function(_0x53f8c8){_0x53f8c8['forEach'](function(_0x5a325c){_0x1c736a[_0x21c5('0x59')](_0x5a325c['id']+0x1869f);});_0x128baa(_0x1c736a);});}else{return db[_0x21c5('0x51')][_0x21c5('0x41')]({'where':{'sectionId':_0x2d9654['id']},'raw':!![]})['then'](function(_0x256921){_0x256921['forEach'](function(_0x11d8e6){_0x1c736a[_0x21c5('0x59')](_0x11d8e6[_0x21c5('0x62')]+0x1869f);});_0x128baa(_0x1c736a);});}}catch(_0x1f7a7f){_0x4ebaaf(_0x1f7a7f);}});}function getPlugins(_0x3ca3e1){var _0x2f9aba=[];return new BPromise(function(_0x5a1413,_0x1303c7){try{if(_0x3ca3e1['autoAssociation']){return db[_0x21c5('0x63')][_0x21c5('0x41')]({'raw':!![]})['then'](function(_0x52c699){_0x52c699[_0x21c5('0x64')](function(_0x2b61b4){_0x2f9aba[_0x21c5('0x59')](_0x2b61b4['id']+0x15b38);});_0x5a1413(_0x2f9aba);});}else{return db['UserProfileResource'][_0x21c5('0x41')]({'where':{'sectionId':_0x3ca3e1['id']},'raw':!![]})['then'](function(_0x27e21c){_0x27e21c[_0x21c5('0x64')](function(_0xfa0f1c){_0x2f9aba[_0x21c5('0x59')](_0xfa0f1c['resourceId']+0x15b38);});_0x5a1413(_0x2f9aba);});}}catch(_0x3018ec){_0x1303c7(_0x3018ec);}});}exports['addResources']=function(_0x30b92c,_0x45a316){return db['UserProfile'][_0x21c5('0x46')]({'where':{'id':_0x30b92c['params']['id']}})[_0x21c5('0x26')](handleEntityNotFound(_0x45a316,null))[_0x21c5('0x26')](function(_0x18e5b1){if(_0x18e5b1){return db[_0x21c5('0x57')][_0x21c5('0x58')](function(_0x249158){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x30b92c['params']['id']},'attributes':['id'],'raw':!![]})[_0x21c5('0x26')](function(_0x2615c2){if(_0x2615c2){return db[_0x21c5('0x54')][_0x21c5('0x27')]({'where':{'userProfileId':_0x30b92c['params']['id'],'id':_[_0x21c5('0x2b')](_0x2615c2,function(_0x2a4e13){return _0x2a4e13['id'];})},'transaction':_0x249158});}})[_0x21c5('0x26')](function(_0x1752f8){var _0x4a4212=_[_0x21c5('0x2b')](_0x30b92c[_0x21c5('0x48')],function(_0x1db588){_0x1db588['userProfileId']=_0x30b92c['params']['id'];return _0x1db588;});return db[_0x21c5('0x54')][_0x21c5('0x65')](_0x4a4212,{'raw':!![],'transaction':_0x249158});})[_0x21c5('0x26')](function(_0x3b0e38){var _0x1336b0=_[_0x21c5('0x3b')](_[_0x21c5('0x2b')](_0x3b0e38,function(_0x5e7db8){return _0x5e7db8[_0x21c5('0x4b')]({'plain':!![]});}),{'includeAll':![]});if(_0x1336b0){return db['UserProfileSection'][_0x21c5('0x41')]({'where':{'userProfileId':_0x30b92c[_0x21c5('0x4a')]['id'],'sectionId':_[_0x21c5('0x2b')](_0x1336b0,function(_0x39ffae){return _0x39ffae[_0x21c5('0x52')];})},'attributes':['id',_0x21c5('0x52')],'raw':!![]})[_0x21c5('0x26')](function(_0x33a3ba){var _0x12306c=_[_0x21c5('0x2b')](_0x30b92c[_0x21c5('0x48')],function(_0x5b802f){_0x5b802f[_0x21c5('0x53')]=_0x30b92c[_0x21c5('0x4a')]['id'];return _0x5b802f;});return db[_0x21c5('0x51')]['bulkCreate'](_0x12306c,{'raw':!![],'transaction':_0x249158});});}})['catch'](handleError(_0x45a316,null));});}})[_0x21c5('0x26')](function(_0x346f95){var _0x1420ba=_[_0x21c5('0x2b')](_0x346f95,function(_0x48ddd4){return _0x48ddd4[_0x21c5('0x4b')]({'plain':!![]});});})[_0x21c5('0x26')](respondWithResult(_0x45a316,null))['catch'](handleError(_0x45a316,null));};exports[_0x21c5('0x66')]=function(_0xa53cf6,_0x390d77,_0x37f397){return db[_0x21c5('0x2c')]['find']({'where':{'id':_0xa53cf6[_0x21c5('0x4a')]['id']}})[_0x21c5('0x26')](handleEntityNotFound(_0x390d77,null))[_0x21c5('0x26')](function(_0x40fb79){if(_0x40fb79){return _0x40fb79[_0x21c5('0x66')](_0xa53cf6[_0x21c5('0x30')]['ids']);}})[_0x21c5('0x26')](respondWithStatusCode(_0x390d77,null))[_0x21c5('0x43')](handleError(_0x390d77,null));};exports['getResources']=function(_0x41fe5d,_0x493edd){var _0x59429c={};if(!_0x41fe5d[_0x21c5('0x30')][_0x21c5('0x67')])throw new Error('Missing\x20section\x20parameter');if(!_0x41fe5d[_0x21c5('0x30')][_0x21c5('0x68')](_0x21c5('0x69'))){_0x59429c[_0x21c5('0x1f')]=qs[_0x21c5('0x1f')](_0x41fe5d[_0x21c5('0x30')][_0x21c5('0x1f')]);_0x59429c['offset']=qs['offset'](_0x41fe5d[_0x21c5('0x30')][_0x21c5('0x1e')]);}return db[_0x21c5('0x2c')][_0x21c5('0x46')]({'where':{'id':_0x41fe5d[_0x21c5('0x4a')]['id']}})[_0x21c5('0x26')](function(_0x1d4219){if(!_0x1d4219)throw new Error(_0x21c5('0x6a')+_0x41fe5d[_0x21c5('0x4a')]['id']);return db[_0x21c5('0x2c')][_0x21c5('0x6b')](_0x41fe5d);})['then'](respondWithFilteredResult(_0x493edd,_0x59429c))[_0x21c5('0x43')](handleError(_0x493edd,null));};
\ No newline at end of file
index acd20b8..649c9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['update','emit','hasOwnProperty','exports','events','setMaxListeners','save'];(function(_0x49cfb0,_0x430675){var _0x56954e=function(_0x401391){while(--_0x401391){_0x49cfb0['push'](_0x49cfb0['shift']());}};_0x56954e(++_0x430675);}(_0x430c,0x1a1));var _0xc430=function(_0x3c2b2e,_0x3e6e53){_0x3c2b2e=_0x3c2b2e-0x0;var _0x27a338=_0x430c[_0x3c2b2e];return _0x27a338;};'use strict';var EventEmitter=require(_0xc430('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc430('0x1')](0x0);var events={'afterCreate':_0xc430('0x2'),'afterUpdate':_0xc430('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4f0118){return function(_0x5ccda6,_0x47d8b9,_0x338a82){UserProfileEvents[_0xc430('0x4')](_0x4f0118+':'+_0x5ccda6['id'],_0x5ccda6);UserProfileEvents['emit'](_0x4f0118,_0x5ccda6);_0x338a82(null);};}for(var e in events){if(events[_0xc430('0x5')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xc430('0x6')]=UserProfileEvents;
\ No newline at end of file
+var _0xcb22=['hook','exports','events','../../mysqldb','UserProfile','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xcb22,0xc8));var _0x2cb2=function(_0x86c66d,_0x10a8c8){_0x86c66d=_0x86c66d-0x0;var _0x537f30=_0xcb22[_0x86c66d];return _0x537f30;};'use strict';var EventEmitter=require(_0x2cb2('0x0'));var UserProfile=require(_0x2cb2('0x1'))['db'][_0x2cb2('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x2cb2('0x3')](0x0);var events={'afterCreate':_0x2cb2('0x4'),'afterUpdate':_0x2cb2('0x5'),'afterDestroy':_0x2cb2('0x6')};function emitEvent(_0xe763ff){return function(_0x386f8b,_0x3b1af5,_0x3dec93){UserProfileEvents['emit'](_0xe763ff+':'+_0x386f8b['id'],_0x386f8b);UserProfileEvents[_0x2cb2('0x7')](_0xe763ff,_0x386f8b);_0x3dec93(null);};}for(var e in events){if(events[_0x2cb2('0x8')](e)){var event=events[e];UserProfile[_0x2cb2('0x9')](e,emitEvent(event));}}module[_0x2cb2('0xa')]=UserProfileEvents;
\ No newline at end of file
index 18fe386..fbc7ab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['metrics','toUpperCase','slice','Sequelize','QueryTypes','select','ui.','InteractionId','from','_interactions','where','ui.UserId\x20=\x20?','sequelize','define','user_profiles','query','section','mergeResources','isEmpty','length','push','UserProfileSection','params','ignore','find','all','rawAttributes','model','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','reportId','CustomReports','count','Tags','color','tag','Agents','openTabs','true','chat','rows','dataValues','sms','mail','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','associatedResources','catch','then','map','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','ListId','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','name','role','Telephones','membername','User','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','MailQueue','mailaccounts','MailAccount','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','users','agents','telephones','Users','admin','user','zendeskaccounts','salesforceaccounts','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','Disposition','customdashboards','Dashboard','Interval','Sound','tags','Tag','Template','triggers','Trigger','Trunk','variables','Variable','plugins','extractedreports','Reports'];(function(_0x4e1c70,_0x4f539c){var _0x5415c1=function(_0x6dcb31){while(--_0x6dcb31){_0x4e1c70['push'](_0x4e1c70['shift']());}};_0x5415c1(++_0x4f539c);}(_0x4137,0xf8));var _0x7413=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4137[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x7413('0x0'));var attributes=require(_0x7413('0x1'));var qs=require(_0x7413('0x2'));var squel=require(_0x7413('0x3'));module[_0x7413('0x4')]=function(_0x410971){var _0x2e6df7=_0x410971[_0x7413('0x5')];function _0x258255(_0x3dc48a,_0x451a96){return new Promise(function(_0x3bb181,_0x4fbade){if(!_0x451a96)return _0x3bb181(null);var _0xc808cd=_0x451a96[_0x7413('0x6')]?{[_0x451a96[_0x7413('0x6')][_0x7413('0x7')]]:_0x451a96['filter'][_0x7413('0x8')]}:undefined;return _0x2e6df7[_0x3dc48a][_0x7413('0x9')]({'where':_0xc808cd,'raw':!![]})['then'](function(_0x422bf5){_0x451a96[_0x7413('0xa')]=_['map'](_0x422bf5,'id');_0x3bb181(_0x451a96);})[_0x7413('0xb')](function(_0x427b3b){_0x4fbade(_0x427b3b);});});}function _0x737ab4(_0x3e026b,_0x14212d){return new Promise(function(_0x5a1e62,_0xa25d72){var _0x32034c=_0x3e026b['filter']?{[_0x3e026b[_0x7413('0x6')][_0x7413('0x7')]]:_0x3e026b[_0x7413('0x6')]['value']}:undefined;return _0x2e6df7[_0x3e026b['model']]['findAll']({'where':_0x32034c,'raw':!![]})[_0x7413('0xc')](function(_0x336c4c){_0x14212d['associatedResources']=_[_0x7413('0xd')](_0x336c4c,function(_0x45bef0){return _0x45bef0['name'];});_0x5a1e62(_0x14212d);})[_0x7413('0xb')](function(_0x50f301){_0xa25d72(_0x50f301);});});}function _0x4b9a5b(_0x26501b,_0x568d1f,_0x195c72){if(!_0x568d1f)return Promise['resolve'](null);return new Promise(function(_0x2036b6,_0x3230d8){return _0x2e6df7[_0x7413('0xe')][_0x7413('0x9')]({'where':{'sectionId':_0x568d1f['id']},'raw':!![]})[_0x7413('0xc')](function(_0x26dafe){if(_0x26501b['field']&&_0x26501b[_0x7413('0x7')]!=='id'){_0x568d1f[_0x7413('0xa')]=_[_0x7413('0xd')](_0x26dafe,function(_0xfe5b8c){return _0xfe5b8c[_0x26501b['field']];});}else{if(_0x195c72===_0x7413('0xf')){_0x568d1f[_0x7413('0xa')]=_[_0x7413('0xd')](_0x26dafe,function(_0x20d3d2){return{'id':_0x20d3d2[_0x7413('0x10')],'type':_0x20d3d2[_0x7413('0x11')]};});}else{_0x568d1f[_0x7413('0xa')]=_[_0x7413('0xd')](_0x26dafe,function(_0x56a06a){return _0x56a06a['resourceId'];});}}_0x2036b6(_0x568d1f);})[_0x7413('0xb')](function(_0x599654){_0x3230d8(_0x599654);});});}function _0x1585ba(_0x372944,_0x3b0c81){var _0x2fc0f4={'parentSections':[]};switch(_0x372944[_0x7413('0x12')]()){case _0x7413('0x13'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x15');break;case _0x7413('0x16'):_0x2fc0f4['childModel']='SquareOdbc';break;case _0x7413('0x17'):_0x2fc0f4['childModel']=_0x7413('0x18');_0x2fc0f4[_0x7413('0x19')]=[{'name':_0x7413('0x1a'),'field':'name','foreignKey':_0x7413('0x1b')}];break;case _0x7413('0x1c'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x1d');break;case _0x7413('0x1e'):_0x2fc0f4[_0x7413('0x14')]='CmContact';_0x2fc0f4[_0x7413('0x19')]=[{'name':'Lists','field':'id','foreignKey':_0x7413('0x1f')}];break;case _0x7413('0x20'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x21');break;case _0x7413('0x22'):_0x2fc0f4[_0x7413('0x14')]='CmCompany';break;case _0x7413('0x23'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x24');break;case _0x7413('0x25'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x26');break;case _0x7413('0x27'):_0x2fc0f4['childModel']=_0x7413('0x28');break;case _0x7413('0x29'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x2a');break;case _0x7413('0x2b'):_0x2fc0f4['childModel']=_0x7413('0x2c');break;case'inboundroutes':case _0x7413('0x2d'):case _0x7413('0x2e'):_0x2fc0f4[_0x7413('0x14')]='VoiceExtension';break;case _0x7413('0x2f'):_0x2fc0f4['childModel']=_0x7413('0x30');break;case _0x7413('0x31'):_0x2fc0f4['childModel']='VoiceMail';break;case _0x7413('0x32'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x33');_0x2fc0f4['parentSections']=[{'name':'Agents','field':_0x7413('0x34'),'foreignKey':'membername','model':'User','filter':{'field':_0x7413('0x35'),'value':['agent']}},{'name':_0x7413('0x36'),'field':_0x7413('0x34'),'foreignKey':_0x7413('0x37'),'model':_0x7413('0x38'),'filter':{'field':_0x7413('0x35'),'value':['telephone']}},{'name':_0x7413('0x39'),'field':_0x7413('0x34'),'foreignKey':_0x7413('0x3a'),'model':_0x7413('0x3b'),'filter':{'field':_0x7413('0x11'),'value':[_0x7413('0x3c')]}},{'name':_0x7413('0x3d'),'field':_0x7413('0x34'),'foreignKey':_0x7413('0x3a'),'model':_0x7413('0x3b'),'filter':{'field':_0x7413('0x11'),'value':[_0x7413('0x3e')]}}];break;case'musiconholds':_0x2fc0f4[_0x7413('0x14')]='VoiceMusicOnHold';break;case'chanspies':_0x2fc0f4['childModel']='VoiceChanSpy';break;case'voiceprefixes':_0x2fc0f4[_0x7413('0x14')]='VoicePrefix';break;case'ivrcampaigns':_0x2fc0f4[_0x7413('0x14')]='Campaign';break;case'mailqueues':_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x3f');break;case _0x7413('0x40'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x41');break;case'mailsubstatuses':_0x2fc0f4[_0x7413('0x14')]='MailSubstatus';break;case _0x7413('0x42'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x43');break;case _0x7413('0x44'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x45');break;case _0x7413('0x46'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x47');break;case _0x7413('0x48'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x49');break;case _0x7413('0x4a'):_0x2fc0f4['childModel']=_0x7413('0x4b');break;case _0x7413('0x4c'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x4d');break;case _0x7413('0x4e'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x4f');break;case _0x7413('0x50'):case _0x7413('0x51'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x3b');if(_0x3b0c81){_0x2fc0f4['parentSections']=[{'name':_0x7413('0x39')},{'name':'QueueCampaigns'}];}break;case _0x7413('0x52'):case _0x7413('0x53'):case _0x7413('0x54'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x38');if(_0x3b0c81){_0x2fc0f4[_0x7413('0x19')]=[{'name':_0x7413('0x55'),'filter':{'field':_0x7413('0x35'),'value':[_0x7413('0x56'),_0x7413('0x57')]},'ignore':!![]},{'name':'Agents'},{'name':'Telephones'}];}break;case _0x7413('0x58'):_0x2fc0f4['childModel']='ZendeskAccount';break;case _0x7413('0x59'):_0x2fc0f4[_0x7413('0x14')]='SalesforceAccount';break;case _0x7413('0x5a'):_0x2fc0f4['childModel']='FreshdeskAccount';break;case _0x7413('0x5b'):_0x2fc0f4['childModel']=_0x7413('0x5c');break;case _0x7413('0x5d'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x5e');break;case _0x7413('0x5f'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x60');break;case _0x7413('0x61'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x38');break;case'cannedanswers':_0x2fc0f4[_0x7413('0x14')]='CannedAnswer';break;case'dispositions':_0x2fc0f4['childModel']=_0x7413('0x62');break;case _0x7413('0x63'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x64');break;case'intervals':_0x2fc0f4['childModel']=_0x7413('0x65');break;case'pauses':_0x2fc0f4[_0x7413('0x14')]='Pause';break;case'scheduler':_0x2fc0f4['childModel']='Schedule';break;case'sounds':_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x66');break;case _0x7413('0x67'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x68');break;case'templates':_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x69');break;case _0x7413('0x6a'):_0x2fc0f4['childModel']=_0x7413('0x6b');break;case'trunks':_0x2fc0f4['childModel']=_0x7413('0x6c');break;case _0x7413('0x6d'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x6e');break;case _0x7413('0x6f'):_0x2fc0f4[_0x7413('0x14')]='Plugin';break;case _0x7413('0x70'):_0x2fc0f4['childModel']=_0x7413('0xf');_0x2fc0f4['parentSections']=[{'name':_0x7413('0x71'),'field':'id','foreignKey':'reportId'}];break;case _0x7413('0x72'):_0x2fc0f4[_0x7413('0x14')]='AnalyticMetric';break;}return _0x2fc0f4;}function _0x269976(_0x549623,_0xf01452){var _0x2a5db6=_0x549623['charAt'](0x0)[_0x7413('0x73')]()+_0x549623[_0x7413('0x74')](0x1);var _0x59d639={'type':_0x2e6df7[_0x7413('0x75')][_0x7413('0x76')]['SELECT'],'raw':!![]};return new Promise(function(_0xf4641,_0x28eaf4){var _0x34211b=squel[_0x7413('0x77')]()[_0x7413('0x7')](_0x7413('0x78')+_0x2a5db6+_0x7413('0x79'),'id')[_0x7413('0x7')]('ui.createdAt')[_0x7413('0x7a')]('user_has_'+_0x549623+_0x7413('0x7b'),'ui')[_0x7413('0x7c')](_0x7413('0x7d'),_0xf01452['id']);return _0x2e6df7[_0x7413('0x7e')]['query'](_0x34211b['toString'](),_0x59d639)['then'](function(_0x56b090){_0xf01452[_0x2a5db6+'OpenTabs']=_0x56b090;_0xf4641(_0x56b090);})[_0x7413('0xb')](function(_0x1c00e6){_0x28eaf4(_0x1c00e6);});});}return _0x410971[_0x7413('0x7f')]('UserProfile',attributes,{'tableName':_0x7413('0x80'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0xb7dd83){var _0x12544d={'raw':![],'where':{}};var _0x36a3ff={};var _0xecf96b={'count':0x0,'rows':[]};var _0x3db284=_0xb7dd83[_0x7413('0x81')][_0x7413('0x82')];var _0x1ec131=_0xb7dd83[_0x7413('0x81')][_0x7413('0x83')]||![];var _0x1264f3=_0x1585ba(_0x3db284,_0x1ec131);if(!_0x1264f3[_0x7413('0x14')])throw new Error('Invalid\x20section\x20\x27'+_0x3db284+'\x27');var _0x25eafd=[{'name':_0x3db284}];if(!_[_0x7413('0x84')](_0x1264f3['parentSections']))_0x25eafd=_0x1264f3[_0x7413('0x19')];var _0x1e76f1=[];for(var _0x521682=0x0;_0x521682<_0x25eafd[_0x7413('0x85')];_0x521682++){_0x1e76f1[_0x7413('0x86')](_0x2e6df7[_0x7413('0x87')]['find']({'where':{'userProfileId':_0xb7dd83[_0x7413('0x88')]['id'],'name':_0x25eafd[_0x521682][_0x7413('0x34')]},'raw':!![]}));}return Promise['all'](_0x1e76f1)[_0x7413('0xc')](function(_0x4ffcbc){var _0x537458=_[_0x7413('0x6')](_0x4ffcbc,function(_0xbd74d9){return _0xbd74d9?_0xbd74d9:undefined;});var _0x167c6b=_[_0x7413('0x6')](_0x25eafd,[_0x7413('0x89'),!![]]);var _0x10333e=_[_0x7413('0x84')](_0x537458)&&_[_0x7413('0x84')](_0x167c6b)?null:_['union'](_0x167c6b,_0x537458);if(!_0x10333e)return null;var _0x437b5d=[];for(var _0x595da6=0x0;_0x595da6<_0x10333e[_0x7413('0x85')];_0x595da6++){var _0x3deb37=_[_0x7413('0x8a')](_0x25eafd,function(_0x3054f5){return _0x10333e[_0x595da6]?_0x3054f5[_0x7413('0x34')]===_0x10333e[_0x595da6][_0x7413('0x34')]:null;});if(_0x3deb37){if(_0x10333e[_0x595da6][_0x7413('0x89')]){_0x437b5d[_0x7413('0x86')](_0x258255(_0x1264f3[_0x7413('0x14')],_0x10333e[_0x595da6]));}else{if(!_0x10333e[_0x595da6]['autoAssociation']){_0x437b5d[_0x7413('0x86')](_0x4b9a5b(_0x3deb37,_0x10333e[_0x595da6],_0x1264f3[_0x7413('0x14')]));}else{if(_0x3deb37['model']){_0x437b5d[_0x7413('0x86')](_0x737ab4(_0x3deb37,_0x10333e[_0x595da6]));}}}}}return Promise[_0x7413('0x8b')](_0x437b5d);})['then'](function(_0x2be9b1){var _0x4b676a=_0x2be9b1;var _0xcbc6e=null;if(_0x4b676a){_0xcbc6e=_0x4b676a[_0x7413('0x85')]===0x1?_0x4b676a[0x0]:null;}if(!_0xcbc6e&&!_0x4b676a)return _0xecf96b;var _0x54f03d=_0x2e6df7[_0x1264f3['childModel']][_0x7413('0x8c')];_0x36a3ff[_0x7413('0x8d')]=_[_0x7413('0x8e')](_0x54f03d);_0x36a3ff['query']=_[_0x7413('0x8e')](_0xb7dd83[_0x7413('0x81')]);_0x36a3ff[_0x7413('0x8f')]=_[_0x7413('0x90')](_0x36a3ff[_0x7413('0x8d')],_0x36a3ff[_0x7413('0x81')]);_0x12544d['attributes']=_[_0x7413('0x90')](_0x36a3ff[_0x7413('0x8d')],qs[_0x7413('0x91')](_0xb7dd83['query'][_0x7413('0x91')]));_0x12544d[_0x7413('0x92')]=_0x12544d[_0x7413('0x92')][_0x7413('0x85')]?_0x12544d[_0x7413('0x92')]:_0x36a3ff[_0x7413('0x8d')];if(!_0xb7dd83[_0x7413('0x81')][_0x7413('0x93')](_0x7413('0x94'))){_0x12544d['limit']=qs[_0x7413('0x95')](_0xb7dd83[_0x7413('0x81')][_0x7413('0x95')]);_0x12544d[_0x7413('0x96')]=qs[_0x7413('0x96')](_0xb7dd83[_0x7413('0x81')]['offset']);}_0x12544d[_0x7413('0x97')]=qs['sort'](_0xb7dd83['query'][_0x7413('0x98')]);_0x12544d[_0x7413('0x7c')]=qs['filters'](_[_0x7413('0x99')](_0xb7dd83[_0x7413('0x81')],_0x36a3ff[_0x7413('0x8f')]));if(_0xb7dd83[_0x7413('0x81')][_0x7413('0x6')]){_0x12544d[_0x7413('0x7c')]=_[_0x7413('0x9a')](_0x12544d[_0x7413('0x7c')],{'$or':_['map'](_0x54f03d,function(_0xe4b4a4){if(_0xe4b4a4['type'][_0x7413('0x9b')]!==_0x7413('0x9c')){var _0x516030={};_0x516030[_0xe4b4a4[_0x7413('0x7')]]={'$like':'%'+_0xb7dd83[_0x7413('0x81')][_0x7413('0x6')]+'%'};return _0x516030;}})});}var _0x300a17=[];var _0xdf132c=null;var _0x3920b5={};if(_0xcbc6e){_0xdf132c=_[_0x7413('0x8a')](_0x25eafd,[_0x7413('0x34'),_0xcbc6e[_0x7413('0x34')]]);if(_0xdf132c[_0x7413('0x7')]){_0x3920b5={};if(_0x1264f3['childModel']===_0x7413('0xf')){_0x3920b5[_0xdf132c[_0x7413('0x9d')]]=_['map'](_0xcbc6e['associatedResources'],'id');}else{_0x3920b5[_0xdf132c['foreignKey']]=_0xcbc6e[_0x7413('0xa')];}_0x300a17['push'](_0x3920b5);}else{_0x12544d[_0x7413('0x7c')]['id']=_0xcbc6e[_0x7413('0xa')];}}else{for(var _0x121b1a=0x0;_0x121b1a<_0x4b676a[_0x7413('0x85')];_0x121b1a++){_0xdf132c=_[_0x7413('0x8a')](_0x25eafd,[_0x7413('0x34'),_0x4b676a[_0x121b1a][_0x7413('0x34')]]);if(_0xdf132c[_0x7413('0x7')]){_0x3920b5={};_0x3920b5[_0xdf132c[_0x7413('0x9d')]]=_0x4b676a[_0x121b1a]['associatedResources'];_0x300a17[_0x7413('0x86')](_0x3920b5);}else{if(!_0x12544d[_0x7413('0x7c')]['id'])_0x12544d[_0x7413('0x7c')]['id']=[];_0x4b676a[_0x121b1a]['associatedResources'][_0x7413('0x9e')](function(_0x3c3676){_0x12544d[_0x7413('0x7c')]['id'][_0x7413('0x86')](_0x3c3676);});}}}if(!_[_0x7413('0x84')](_0x300a17)){_0x12544d[_0x7413('0x7c')]=_[_0x7413('0x9a')](_0x12544d[_0x7413('0x7c')],{'$and':{'$or':_0x300a17}});}_0x12544d=_[_0x7413('0x9a')]({},_0x12544d,_0xb7dd83[_0x7413('0x9f')]);if(_0xcbc6e&&!_0xcbc6e['autoAssociation']&&_0x1264f3[_0x7413('0x14')]===_0x7413('0xf')){if(_0xb7dd83['query'][_0x7413('0xa0')]){_0x12544d[_0x7413('0xa1')]=[{'all':!![]}];}return _0x2e6df7[_0x1264f3['childModel']][_0x7413('0x9')](_0x12544d)[_0x7413('0xc')](function(_0x230191){var _0x47fbf0=[];_0x230191[_0x7413('0x9e')](function(_0x5a44bd){var _0x466ec8;switch(_0x5a44bd[_0x7413('0xa2')]){case _0x7413('0xa3'):_0x466ec8=_[_0x7413('0x8a')](_0xcbc6e[_0x7413('0xa')],function(_0x371464){return _0x371464['id']===_0x5a44bd['reportId']&&_0x371464[_0x7413('0x11')]===_0x7413('0xa4');});break;case _0x7413('0xa5'):_0x466ec8=_[_0x7413('0x8a')](_0xcbc6e[_0x7413('0xa')],function(_0x55059e){return _0x55059e['id']===_0x5a44bd[_0x7413('0xa6')]&&_0x55059e[_0x7413('0x11')]===_0x7413('0xa7');});break;}if(_0x466ec8)_0x47fbf0[_0x7413('0x86')](_0x5a44bd);});_0xecf96b[_0x7413('0xa8')]=_0x47fbf0['length'];_0xecf96b['rows']=_0x47fbf0;return _0xecf96b;});}else{return _0x2e6df7[_0x1264f3[_0x7413('0x14')]][_0x7413('0xa8')]({'where':_0x12544d[_0x7413('0x7c')]})[_0x7413('0xc')](function(_0x4ec202){_0xecf96b['count']=_0x4ec202;if(_0xb7dd83[_0x7413('0x81')][_0x7413('0xa0')]){if(_0x1264f3[_0x7413('0x14')]==='CmContact'){_0x12544d['include']=[{'model':_0x2e6df7[_0x7413('0x68')],'as':_0x7413('0xa9'),'attributes':['id',_0x7413('0x34'),_0x7413('0xaa')],'required':_0xb7dd83[_0x7413('0x81')][_0x7413('0xab')]?!![]:![]},{'model':_0x2e6df7[_0x7413('0x68')],'as':'ThroughTags','attributes':['id','name',_0x7413('0xaa')],'through':_0xb7dd83[_0x7413('0x81')]['tag']?{'attributes':[],'where':{'TagId':_0xb7dd83[_0x7413('0x81')][_0x7413('0xab')]||undefined}}:{},'required':_0xb7dd83[_0x7413('0x81')][_0x7413('0xab')]?!![]:![]}];}else{_0x12544d[_0x7413('0xa1')]=[{'all':!![]}];}}return _0x2e6df7[_0x1264f3[_0x7413('0x14')]][_0x7413('0x9')](_0x12544d);})[_0x7413('0xc')](function(_0x3cffbb){_0xecf96b['rows']=_0x3cffbb;if(_0x3db284===_0x7413('0xac')&&_0xb7dd83[_0x7413('0x81')][_0x7413('0xad')]===_0x7413('0xae')){var _0xccd480=[];for(var _0x20ffaf=0x0;_0x20ffaf<_0xecf96b['rows']['length'];_0x20ffaf++){_0xccd480['push'](_0x269976(_0x7413('0xaf'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976(_0x7413('0xb2'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976('fax',_0xecf96b[_0x7413('0xb0')][_0x20ffaf]['dataValues']));_0xccd480[_0x7413('0x86')](_0x269976(_0x7413('0xb3'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976('openchannel',_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976(_0x7413('0xb4'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));}return Promise[_0x7413('0x8b')](_0xccd480)[_0x7413('0xc')](function(){return _0xecf96b;});}return _0xecf96b;});}});}}});};
\ No newline at end of file
+var _0xa456=['Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','mailaccounts','MailAccount','mailsubstatuses','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','queuecampaigns','users','telephones','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','Disposition','customdashboards','Interval','pauses','scheduler','Schedule','sounds','Sound','tags','Template','Trigger','trunks','Trunk','Variable','extractedreports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','InteractionId','ui.createdAt','from','_interactions','where','sequelize','query','OpenTabs','define','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','keys','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','filters','merge','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','custom','CustomReports','count','rows','Tag','Tags','color','ThroughTags','tag','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','field','value','then','associatedResources','map','catch','model','findAll','name','resolve','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','ListId','CmList','companies','CmCompany','CmCustomField','chatqueues','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','VoiceRecording'];(function(_0x1a91f0,_0x33f5e8){var _0x116014=function(_0x4690b3){while(--_0x4690b3){_0x1a91f0['push'](_0x1a91f0['shift']());}};_0x116014(++_0x33f5e8);}(_0xa456,0x142));var _0x6a45=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xa456[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0x6a45('0x0'));var attributes=require(_0x6a45('0x1'));var qs=require(_0x6a45('0x2'));var squel=require(_0x6a45('0x3'));module['exports']=function(_0x3bfbe6){var _0x206f6b=_0x3bfbe6[_0x6a45('0x4')];function _0x500c72(_0x1f0701,_0x40acad){return new Promise(function(_0x1e5882,_0x14da6b){if(!_0x40acad)return _0x1e5882(null);var _0x4dfbfa=_0x40acad[_0x6a45('0x5')]?{[_0x40acad[_0x6a45('0x5')][_0x6a45('0x6')]]:_0x40acad[_0x6a45('0x5')][_0x6a45('0x7')]}:undefined;return _0x206f6b[_0x1f0701]['findAll']({'where':_0x4dfbfa,'raw':!![]})[_0x6a45('0x8')](function(_0x517040){_0x40acad[_0x6a45('0x9')]=_[_0x6a45('0xa')](_0x517040,'id');_0x1e5882(_0x40acad);})[_0x6a45('0xb')](function(_0x147679){_0x14da6b(_0x147679);});});}function _0x1249e4(_0x4ff9ae,_0x553a67){return new Promise(function(_0xe62823,_0x465b59){var _0x4b7f6d=_0x4ff9ae['filter']?{[_0x4ff9ae['filter'][_0x6a45('0x6')]]:_0x4ff9ae[_0x6a45('0x5')][_0x6a45('0x7')]}:undefined;return _0x206f6b[_0x4ff9ae[_0x6a45('0xc')]][_0x6a45('0xd')]({'where':_0x4b7f6d,'raw':!![]})['then'](function(_0x563c3b){_0x553a67[_0x6a45('0x9')]=_[_0x6a45('0xa')](_0x563c3b,function(_0x48fe0c){return _0x48fe0c[_0x6a45('0xe')];});_0xe62823(_0x553a67);})[_0x6a45('0xb')](function(_0x3fab82){_0x465b59(_0x3fab82);});});}function _0x13adc0(_0x548634,_0x54507b,_0x49023f){if(!_0x54507b)return Promise[_0x6a45('0xf')](null);return new Promise(function(_0x391f81,_0x360b7f){return _0x206f6b['UserProfileResource'][_0x6a45('0xd')]({'where':{'sectionId':_0x54507b['id']},'raw':!![]})[_0x6a45('0x8')](function(_0x3439c8){if(_0x548634['field']&&_0x548634['field']!=='id'){_0x54507b['associatedResources']=_[_0x6a45('0xa')](_0x3439c8,function(_0x2ed1e5){return _0x2ed1e5[_0x548634['field']];});}else{if(_0x49023f===_0x6a45('0x10')){_0x54507b[_0x6a45('0x9')]=_['map'](_0x3439c8,function(_0x4f7110){return{'id':_0x4f7110[_0x6a45('0x11')],'type':_0x4f7110[_0x6a45('0x12')]};});}else{_0x54507b[_0x6a45('0x9')]=_[_0x6a45('0xa')](_0x3439c8,function(_0x487666){return _0x487666['resourceId'];});}}_0x391f81(_0x54507b);})[_0x6a45('0xb')](function(_0x59af4b){_0x360b7f(_0x59af4b);});});}function _0x11290c(_0x22373c,_0x25a380){var _0x3ad898={'parentSections':[]};switch(_0x22373c[_0x6a45('0x13')]()){case _0x6a45('0x14'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x16');break;case _0x6a45('0x17'):_0x3ad898[_0x6a45('0x15')]='SquareOdbc';break;case _0x6a45('0x18'):_0x3ad898['childModel']=_0x6a45('0x19');_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x1b'),'field':_0x6a45('0xe'),'foreignKey':_0x6a45('0x1c')}];break;case'projects':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x1d');break;case _0x6a45('0x1e'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x1f');_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x20'),'field':'id','foreignKey':_0x6a45('0x21')}];break;case'lists':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x22');break;case _0x6a45('0x23'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x24');break;case'globalcustomfields':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x25');break;case _0x6a45('0x26'):_0x3ad898[_0x6a45('0x15')]='ChatQueue';break;case'chatwebsites':_0x3ad898[_0x6a45('0x15')]='ChatWebsite';break;case _0x6a45('0x27'):_0x3ad898['childModel']=_0x6a45('0x28');break;case _0x6a45('0x29'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x2a');break;case _0x6a45('0x2b'):case _0x6a45('0x2c'):case _0x6a45('0x2d'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x2e');break;case _0x6a45('0x2f'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x30');break;case _0x6a45('0x31'):_0x3ad898['childModel']=_0x6a45('0x32');break;case'voicerecordings':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x33');_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x34'),'field':_0x6a45('0xe'),'foreignKey':_0x6a45('0x35'),'model':'User','filter':{'field':_0x6a45('0x36'),'value':[_0x6a45('0x37')]}},{'name':_0x6a45('0x38'),'field':_0x6a45('0xe'),'foreignKey':_0x6a45('0x35'),'model':_0x6a45('0x39'),'filter':{'field':'role','value':[_0x6a45('0x3a')]}},{'name':_0x6a45('0x3b'),'field':'name','foreignKey':_0x6a45('0x3c'),'model':_0x6a45('0x3d'),'filter':{'field':_0x6a45('0x12'),'value':[_0x6a45('0x3e')]}},{'name':_0x6a45('0x3f'),'field':'name','foreignKey':_0x6a45('0x3c'),'model':_0x6a45('0x3d'),'filter':{'field':_0x6a45('0x12'),'value':[_0x6a45('0x40')]}}];break;case _0x6a45('0x41'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x42');break;case'chanspies':_0x3ad898[_0x6a45('0x15')]='VoiceChanSpy';break;case _0x6a45('0x43'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x44');break;case _0x6a45('0x45'):_0x3ad898['childModel']='Campaign';break;case _0x6a45('0x46'):_0x3ad898[_0x6a45('0x15')]='MailQueue';break;case _0x6a45('0x47'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x48');break;case _0x6a45('0x49'):_0x3ad898['childModel']='MailSubstatus';break;case'openchannelqueues':_0x3ad898['childModel']=_0x6a45('0x4a');break;case _0x6a45('0x4b'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x4c');break;case _0x6a45('0x4d'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x4e');break;case _0x6a45('0x4f'):_0x3ad898['childModel']=_0x6a45('0x50');break;case'whatsappqueues':_0x3ad898['childModel']=_0x6a45('0x51');break;case _0x6a45('0x52'):_0x3ad898['childModel']=_0x6a45('0x53');break;case'teams':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x54');break;case _0x6a45('0x55'):case _0x6a45('0x56'):_0x3ad898['childModel']=_0x6a45('0x3d');if(_0x25a380){_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x3b')},{'name':_0x6a45('0x3f')}];}break;case _0x6a45('0x57'):case'agents':case _0x6a45('0x58'):_0x3ad898['childModel']=_0x6a45('0x39');if(_0x25a380){_0x3ad898[_0x6a45('0x1a')]=[{'name':'Users','filter':{'field':_0x6a45('0x36'),'value':[_0x6a45('0x59'),_0x6a45('0x5a')]},'ignore':!![]},{'name':_0x6a45('0x34')},{'name':'Telephones'}];}break;case _0x6a45('0x5b'):_0x3ad898['childModel']=_0x6a45('0x5c');break;case'salesforceaccounts':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x5d');break;case _0x6a45('0x5e'):_0x3ad898[_0x6a45('0x15')]='FreshdeskAccount';break;case _0x6a45('0x5f'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x60');break;case _0x6a45('0x61'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x62');break;case _0x6a45('0x63'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x64');break;case _0x6a45('0x65'):_0x3ad898['childModel']=_0x6a45('0x39');break;case _0x6a45('0x66'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x67');break;case'dispositions':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x68');break;case _0x6a45('0x69'):_0x3ad898['childModel']='Dashboard';break;case'intervals':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x6a');break;case _0x6a45('0x6b'):_0x3ad898[_0x6a45('0x15')]='Pause';break;case _0x6a45('0x6c'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x6d');break;case _0x6a45('0x6e'):_0x3ad898['childModel']=_0x6a45('0x6f');break;case _0x6a45('0x70'):_0x3ad898[_0x6a45('0x15')]='Tag';break;case'templates':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x71');break;case'triggers':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x72');break;case _0x6a45('0x73'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x74');break;case'variables':_0x3ad898['childModel']=_0x6a45('0x75');break;case'plugins':_0x3ad898['childModel']='Plugin';break;case _0x6a45('0x76'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x10');_0x3ad898[_0x6a45('0x1a')]=[{'name':'Reports','field':'id','foreignKey':_0x6a45('0x77')}];break;case _0x6a45('0x78'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x79');break;}return _0x3ad898;}function _0x4c9a93(_0x239c37,_0x504ccf){var _0x1461d3=_0x239c37[_0x6a45('0x7a')](0x0)[_0x6a45('0x7b')]()+_0x239c37[_0x6a45('0x7c')](0x1);var _0x25bbc4={'type':_0x206f6b[_0x6a45('0x7d')][_0x6a45('0x7e')][_0x6a45('0x7f')],'raw':!![]};return new Promise(function(_0x141546,_0x4a6f4c){var _0x13c9d9=squel[_0x6a45('0x80')]()[_0x6a45('0x6')]('ui.'+_0x1461d3+_0x6a45('0x81'),'id')['field'](_0x6a45('0x82'))[_0x6a45('0x83')]('user_has_'+_0x239c37+_0x6a45('0x84'),'ui')[_0x6a45('0x85')]('ui.UserId\x20=\x20?',_0x504ccf['id']);return _0x206f6b[_0x6a45('0x86')][_0x6a45('0x87')](_0x13c9d9['toString'](),_0x25bbc4)['then'](function(_0x26c53c){_0x504ccf[_0x1461d3+_0x6a45('0x88')]=_0x26c53c;_0x141546(_0x26c53c);})[_0x6a45('0xb')](function(_0x30128d){_0x4a6f4c(_0x30128d);});});}return _0x3bfbe6[_0x6a45('0x89')]('UserProfile',attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x7fc1b2){var _0x5faae8={'raw':![],'where':{}};var _0x50248a={};var _0x475479={'count':0x0,'rows':[]};var _0x29cd12=_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x8a')];var _0x4f20e2=_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x8b')]||![];var _0x3388f1=_0x11290c(_0x29cd12,_0x4f20e2);if(!_0x3388f1[_0x6a45('0x15')])throw new Error(_0x6a45('0x8c')+_0x29cd12+'\x27');var _0x353eae=[{'name':_0x29cd12}];if(!_[_0x6a45('0x8d')](_0x3388f1[_0x6a45('0x1a')]))_0x353eae=_0x3388f1[_0x6a45('0x1a')];var _0x6f0ed7=[];for(var _0x403711=0x0;_0x403711<_0x353eae[_0x6a45('0x8e')];_0x403711++){_0x6f0ed7[_0x6a45('0x8f')](_0x206f6b[_0x6a45('0x90')][_0x6a45('0x91')]({'where':{'userProfileId':_0x7fc1b2[_0x6a45('0x92')]['id'],'name':_0x353eae[_0x403711][_0x6a45('0xe')]},'raw':!![]}));}return Promise[_0x6a45('0x93')](_0x6f0ed7)['then'](function(_0x323ac2){var _0x4e24b0=_[_0x6a45('0x5')](_0x323ac2,function(_0x57316d){return _0x57316d?_0x57316d:undefined;});var _0x332666=_[_0x6a45('0x5')](_0x353eae,[_0x6a45('0x94'),!![]]);var _0x9d8810=_[_0x6a45('0x8d')](_0x4e24b0)&&_[_0x6a45('0x8d')](_0x332666)?null:_[_0x6a45('0x95')](_0x332666,_0x4e24b0);if(!_0x9d8810)return null;var _0x42c67a=[];for(var _0x113784=0x0;_0x113784<_0x9d8810['length'];_0x113784++){var _0x13baf6=_['find'](_0x353eae,function(_0x763420){return _0x9d8810[_0x113784]?_0x763420[_0x6a45('0xe')]===_0x9d8810[_0x113784][_0x6a45('0xe')]:null;});if(_0x13baf6){if(_0x9d8810[_0x113784]['ignore']){_0x42c67a[_0x6a45('0x8f')](_0x500c72(_0x3388f1[_0x6a45('0x15')],_0x9d8810[_0x113784]));}else{if(!_0x9d8810[_0x113784][_0x6a45('0x96')]){_0x42c67a[_0x6a45('0x8f')](_0x13adc0(_0x13baf6,_0x9d8810[_0x113784],_0x3388f1[_0x6a45('0x15')]));}else{if(_0x13baf6[_0x6a45('0xc')]){_0x42c67a[_0x6a45('0x8f')](_0x1249e4(_0x13baf6,_0x9d8810[_0x113784]));}}}}}return Promise['all'](_0x42c67a);})['then'](function(_0x8327cd){var _0x30a802=_0x8327cd;var _0x67e87f=null;if(_0x30a802){_0x67e87f=_0x30a802[_0x6a45('0x8e')]===0x1?_0x30a802[0x0]:null;}if(!_0x67e87f&&!_0x30a802)return _0x475479;var _0x77d0aa=_0x206f6b[_0x3388f1[_0x6a45('0x15')]]['rawAttributes'];_0x50248a[_0x6a45('0xc')]=_[_0x6a45('0x97')](_0x77d0aa);_0x50248a['query']=_[_0x6a45('0x97')](_0x7fc1b2['query']);_0x50248a['filters']=_['intersection'](_0x50248a[_0x6a45('0xc')],_0x50248a[_0x6a45('0x87')]);_0x5faae8[_0x6a45('0x98')]=_['intersection'](_0x50248a[_0x6a45('0xc')],qs[_0x6a45('0x99')](_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x99')]));_0x5faae8[_0x6a45('0x98')]=_0x5faae8[_0x6a45('0x98')][_0x6a45('0x8e')]?_0x5faae8['attributes']:_0x50248a['model'];if(!_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x9a')](_0x6a45('0x9b'))){_0x5faae8[_0x6a45('0x9c')]=qs[_0x6a45('0x9c')](_0x7fc1b2['query'][_0x6a45('0x9c')]);_0x5faae8[_0x6a45('0x9d')]=qs[_0x6a45('0x9d')](_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x9d')]);}_0x5faae8[_0x6a45('0x9e')]=qs[_0x6a45('0x9f')](_0x7fc1b2['query'][_0x6a45('0x9f')]);_0x5faae8[_0x6a45('0x85')]=qs['filters'](_[_0x6a45('0xa0')](_0x7fc1b2[_0x6a45('0x87')],_0x50248a[_0x6a45('0xa1')]));if(_0x7fc1b2[_0x6a45('0x87')]['filter']){_0x5faae8[_0x6a45('0x85')]=_[_0x6a45('0xa2')](_0x5faae8['where'],{'$or':_[_0x6a45('0xa')](_0x77d0aa,function(_0x5b99ec){if(_0x5b99ec[_0x6a45('0x12')]['key']!==_0x6a45('0xa3')){var _0x38e379={};_0x38e379[_0x5b99ec[_0x6a45('0x6')]]={'$like':'%'+_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x5')]+'%'};return _0x38e379;}})});}var _0x59349e=[];var _0x8b1a91=null;var _0x3189b7={};if(_0x67e87f){_0x8b1a91=_[_0x6a45('0x91')](_0x353eae,[_0x6a45('0xe'),_0x67e87f['name']]);if(_0x8b1a91[_0x6a45('0x6')]){_0x3189b7={};if(_0x3388f1[_0x6a45('0x15')]===_0x6a45('0x10')){_0x3189b7[_0x8b1a91['foreignKey']]=_['map'](_0x67e87f[_0x6a45('0x9')],'id');}else{_0x3189b7[_0x8b1a91['foreignKey']]=_0x67e87f[_0x6a45('0x9')];}_0x59349e[_0x6a45('0x8f')](_0x3189b7);}else{_0x5faae8[_0x6a45('0x85')]['id']=_0x67e87f['associatedResources'];}}else{for(var _0x5470c7=0x0;_0x5470c7<_0x30a802['length'];_0x5470c7++){_0x8b1a91=_[_0x6a45('0x91')](_0x353eae,[_0x6a45('0xe'),_0x30a802[_0x5470c7][_0x6a45('0xe')]]);if(_0x8b1a91[_0x6a45('0x6')]){_0x3189b7={};_0x3189b7[_0x8b1a91[_0x6a45('0xa4')]]=_0x30a802[_0x5470c7]['associatedResources'];_0x59349e[_0x6a45('0x8f')](_0x3189b7);}else{if(!_0x5faae8['where']['id'])_0x5faae8['where']['id']=[];_0x30a802[_0x5470c7][_0x6a45('0x9')][_0x6a45('0xa5')](function(_0x272cc2){_0x5faae8[_0x6a45('0x85')]['id']['push'](_0x272cc2);});}}}if(!_[_0x6a45('0x8d')](_0x59349e)){_0x5faae8['where']=_[_0x6a45('0xa2')](_0x5faae8[_0x6a45('0x85')],{'$and':{'$or':_0x59349e}});}_0x5faae8=_[_0x6a45('0xa2')]({},_0x5faae8,_0x7fc1b2[_0x6a45('0xa6')]);if(_0x67e87f&&!_0x67e87f[_0x6a45('0x96')]&&_0x3388f1[_0x6a45('0x15')]===_0x6a45('0x10')){if(_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xa7')]){_0x5faae8[_0x6a45('0xa8')]=[{'all':!![]}];}return _0x206f6b[_0x3388f1[_0x6a45('0x15')]][_0x6a45('0xd')](_0x5faae8)[_0x6a45('0x8')](function(_0x520063){var _0x57b43b=[];_0x520063[_0x6a45('0xa5')](function(_0x5204ec){var _0x1acb5a;switch(_0x5204ec[_0x6a45('0xa9')]){case _0x6a45('0xaa'):_0x1acb5a=_[_0x6a45('0x91')](_0x67e87f[_0x6a45('0x9')],function(_0x186e57){return _0x186e57['id']===_0x5204ec[_0x6a45('0x77')]&&_0x186e57[_0x6a45('0x12')]==='DefaultReports';});break;case _0x6a45('0xab'):_0x1acb5a=_['find'](_0x67e87f['associatedResources'],function(_0x4cf559){return _0x4cf559['id']===_0x5204ec[_0x6a45('0x77')]&&_0x4cf559[_0x6a45('0x12')]===_0x6a45('0xac');});break;}if(_0x1acb5a)_0x57b43b[_0x6a45('0x8f')](_0x5204ec);});_0x475479[_0x6a45('0xad')]=_0x57b43b['length'];_0x475479[_0x6a45('0xae')]=_0x57b43b;return _0x475479;});}else{return _0x206f6b[_0x3388f1[_0x6a45('0x15')]][_0x6a45('0xad')]({'where':_0x5faae8[_0x6a45('0x85')]})[_0x6a45('0x8')](function(_0x637030){_0x475479[_0x6a45('0xad')]=_0x637030;if(_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xa7')]){if(_0x3388f1['childModel']==='CmContact'){_0x5faae8['include']=[{'model':_0x206f6b[_0x6a45('0xaf')],'as':_0x6a45('0xb0'),'attributes':['id',_0x6a45('0xe'),_0x6a45('0xb1')],'required':_0x7fc1b2['query']['tag']?!![]:![]},{'model':_0x206f6b['Tag'],'as':_0x6a45('0xb2'),'attributes':['id','name','color'],'through':_0x7fc1b2['query'][_0x6a45('0xb3')]?{'attributes':[],'where':{'TagId':_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xb3')]||undefined}}:{},'required':_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xb3')]?!![]:![]}];}else{_0x5faae8['include']=[{'all':!![]}];}}return _0x206f6b[_0x3388f1[_0x6a45('0x15')]]['findAll'](_0x5faae8);})[_0x6a45('0x8')](function(_0x1a5207){_0x475479[_0x6a45('0xae')]=_0x1a5207;if(_0x29cd12===_0x6a45('0x34')&&_0x7fc1b2[_0x6a45('0x87')]['openTabs']==='true'){var _0x5adfdb=[];for(var _0x46d79d=0x0;_0x46d79d<_0x475479[_0x6a45('0xae')][_0x6a45('0x8e')];_0x46d79d++){_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb4'),_0x475479[_0x6a45('0xae')][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb6'),_0x475479['rows'][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb7'),_0x475479['rows'][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb['push'](_0x4c9a93(_0x6a45('0xb8'),_0x475479[_0x6a45('0xae')][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb9'),_0x475479['rows'][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb['push'](_0x4c9a93(_0x6a45('0xba'),_0x475479[_0x6a45('0xae')][_0x46d79d][_0x6a45('0xb5')]));}return Promise[_0x6a45('0x93')](_0x5adfdb)[_0x6a45('0x8')](function(){return _0x475479;});}return _0x475479;});}});}}});};
\ No newline at end of file
index a2f8f72..7f26d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9fc=['request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfile,\x20%s,\x20%s','result','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','http','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','info'];(function(_0x1fe100,_0x3874e3){var _0x581d5d=function(_0x4c0950){while(--_0x4c0950){_0x1fe100['push'](_0x1fe100['shift']());}};_0x581d5d(++_0x3874e3);}(_0xa9fc,0x19f));var _0xca9f=function(_0x544099,_0x372b30){_0x544099=_0x544099-0x0;var _0x20ab09=_0xa9fc[_0x544099];return _0x20ab09;};'use strict';var _=require(_0xca9f('0x0'));var util=require(_0xca9f('0x1'));var moment=require(_0xca9f('0x2'));var BPromise=require(_0xca9f('0x3'));var rs=require(_0xca9f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xca9f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xca9f('0x6'))(_0xca9f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xca9f('0x8')]({'port':0x232a});config['redis']=_[_0xca9f('0x9')](config[_0xca9f('0xa')],{'host':_0xca9f('0xb'),'port':0x18eb});var socket=require(_0xca9f('0xc'))(new Redis(config[_0xca9f('0xa')]));require(_0xca9f('0xd'))[_0xca9f('0xe')](socket);function respondWithRpcPromise(_0x5ae48c,_0x5cd1db,_0x2bdf62){return new BPromise(function(_0x4326a5,_0x2f0af9){return client[_0xca9f('0xf')](_0x5ae48c,_0x2bdf62)['then'](function(_0x41bca1){logger[_0xca9f('0x10')]('UserProfile,\x20%s,\x20%s',_0x5cd1db,_0xca9f('0x11'));logger[_0xca9f('0x12')](_0xca9f('0x13'),_0x5cd1db,_0xca9f('0x11'),JSON[_0xca9f('0x14')](_0x41bca1));if(_0x41bca1[_0xca9f('0x15')]){if(_0x41bca1[_0xca9f('0x15')][_0xca9f('0x16')]===0x1f4){logger[_0xca9f('0x15')](_0xca9f('0x17'),_0x5cd1db,_0x41bca1['error']['message']);return _0x2f0af9(_0x41bca1[_0xca9f('0x15')]['message']);}logger['error'](_0xca9f('0x17'),_0x5cd1db,_0x41bca1[_0xca9f('0x15')]['message']);return _0x4326a5(_0x41bca1[_0xca9f('0x15')]['message']);}else{logger[_0xca9f('0x10')]('UserProfile,\x20%s,\x20%s',_0x5cd1db,_0xca9f('0x11'));_0x4326a5(_0x41bca1[_0xca9f('0x18')][_0xca9f('0x19')]);}})[_0xca9f('0x1a')](function(_0x25008f){logger['error'](_0xca9f('0x17'),_0x5cd1db,_0x25008f);_0x2f0af9(_0x25008f);});});}
\ No newline at end of file
+var _0x4325=['bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./userProfile.socket','register','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_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});config['redis']=_[_0x5432('0xa')](config['redis'],{'host':_0x5432('0xb'),'port':0x18eb});var socket=require(_0x5432('0xc'))(new Redis(config[_0x5432('0xd')]));require(_0x5432('0xe'))[_0x5432('0xf')](socket);function respondWithRpcPromise(_0x4a9a51,_0xcc52a,_0x58348a){return new BPromise(function(_0x28ff19,_0x35faac){return client[_0x5432('0x10')](_0x4a9a51,_0x58348a)[_0x5432('0x11')](function(_0x4ac11f){logger['info'](_0x5432('0x12'),_0xcc52a,_0x5432('0x13'));logger['debug'](_0x5432('0x14'),_0xcc52a,_0x5432('0x13'),JSON[_0x5432('0x15')](_0x4ac11f));if(_0x4ac11f[_0x5432('0x16')]){if(_0x4ac11f[_0x5432('0x16')][_0x5432('0x17')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0xcc52a,_0x4ac11f[_0x5432('0x16')][_0x5432('0x18')]);return _0x35faac(_0x4ac11f[_0x5432('0x16')][_0x5432('0x18')]);}logger[_0x5432('0x16')](_0x5432('0x12'),_0xcc52a,_0x4ac11f['error'][_0x5432('0x18')]);return _0x28ff19(_0x4ac11f['error'][_0x5432('0x18')]);}else{logger[_0x5432('0x19')](_0x5432('0x12'),_0xcc52a,_0x5432('0x13'));_0x28ff19(_0x4ac11f[_0x5432('0x1a')]['message']);}})[_0x5432('0x1b')](function(_0x22f030){logger[_0x5432('0x16')](_0x5432('0x12'),_0xcc52a,_0x22f030);_0x35faac(_0x22f030);});});}
\ No newline at end of file
index 309c0a3..ba462c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b77=['update','emit','removeListener','register','length','userProfile:','./userProfile.events','save','remove'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x7b77,0x165));var _0x77b7=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x7b77[_0x22b68a];return _0x1ac67a;};'use strict';var UserProfileEvents=require(_0x77b7('0x0'));var events=[_0x77b7('0x1'),_0x77b7('0x2'),_0x77b7('0x3')];function createListener(_0x1057a7,_0x4b0864){return function(_0x561f5f){_0x4b0864[_0x77b7('0x4')](_0x1057a7,_0x561f5f);};}function removeListener(_0x23550b,_0x9c8a14){return function(){UserProfileEvents[_0x77b7('0x5')](_0x23550b,_0x9c8a14);};}exports[_0x77b7('0x6')]=function(_0x2a6fbd){for(var _0x1028d7=0x0,_0x28ac0e=events[_0x77b7('0x7')];_0x1028d7<_0x28ac0e;_0x1028d7++){var _0x311a4b=events[_0x1028d7];var _0x12dcec=createListener(_0x77b7('0x8')+_0x311a4b,_0x2a6fbd);UserProfileEvents['on'](_0x311a4b,_0x12dcec);}};
\ No newline at end of file
+var _0x2a42=['update','emit','removeListener','register','length','userProfile:','save'];(function(_0x3a833e,_0x5a1878){var _0xdff445=function(_0x1715a3){while(--_0x1715a3){_0x3a833e['push'](_0x3a833e['shift']());}};_0xdff445(++_0x5a1878);}(_0x2a42,0x102));var _0x22a4=function(_0x1288ca,_0x1cc590){_0x1288ca=_0x1288ca-0x0;var _0x535d54=_0x2a42[_0x1288ca];return _0x535d54;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0x22a4('0x0'),'remove',_0x22a4('0x1')];function createListener(_0x250877,_0x3ad76a){return function(_0x3fe3cb){_0x3ad76a[_0x22a4('0x2')](_0x250877,_0x3fe3cb);};}function removeListener(_0x3c54e3,_0x53e24b){return function(){UserProfileEvents[_0x22a4('0x3')](_0x3c54e3,_0x53e24b);};}exports[_0x22a4('0x4')]=function(_0x46673e){for(var _0x51240d=0x0,_0x3dde8c=events[_0x22a4('0x5')];_0x51240d<_0x3dde8c;_0x51240d++){var _0x11fc9b=events[_0x51240d];var _0x558de9=createListener(_0x22a4('0x6')+_0x11fc9b,_0x46673e);UserProfileEvents['on'](_0x11fc9b,_0x558de9);}};
\ No newline at end of file
index 6fa5f93..ab6ab35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ca1=['../../config/environment','./userProfileResource.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1c616b,_0x3aedb4){var _0x5ec86c=function(_0x4bd2b5){while(--_0x4bd2b5){_0x1c616b['push'](_0x1c616b['shift']());}};_0x5ec86c(++_0x3aedb4);}(_0x1ca1,0x98));var _0x11ca=function(_0x300638,_0x2ce184){_0x300638=_0x300638-0x0;var _0x2f9f9c=_0x1ca1[_0x300638];return _0x2f9f9c;};'use strict';var multer=require(_0x11ca('0x0'));var util=require(_0x11ca('0x1'));var path=require(_0x11ca('0x2'));var timeout=require(_0x11ca('0x3'));var express=require(_0x11ca('0x4'));var router=express[_0x11ca('0x5')]();var fs_extra=require(_0x11ca('0x6'));var auth=require(_0x11ca('0x7'));var interaction=require(_0x11ca('0x8'));var config=require(_0x11ca('0x9'));var controller=require(_0x11ca('0xa'));router[_0x11ca('0xb')]('/',auth[_0x11ca('0xc')](),controller['index']);router[_0x11ca('0xb')](_0x11ca('0xd'),auth[_0x11ca('0xc')](),controller[_0x11ca('0xe')]);router[_0x11ca('0xb')](_0x11ca('0xf'),auth[_0x11ca('0xc')](),controller[_0x11ca('0x10')]);router[_0x11ca('0x11')]('/',auth['isAuthenticated'](),controller[_0x11ca('0x12')]);router[_0x11ca('0x13')](_0x11ca('0xf'),auth[_0x11ca('0xc')](),controller['update']);router[_0x11ca('0x14')](_0x11ca('0xf'),auth[_0x11ca('0xc')](),controller[_0x11ca('0x15')]);module[_0x11ca('0x16')]=router;
\ No newline at end of file
+var _0x6215=['describe','/:id','show','create','update','destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','index','isAuthenticated'];(function(_0x1fb969,_0x5b44e6){var _0x2e3e50=function(_0x299c78){while(--_0x299c78){_0x1fb969['push'](_0x1fb969['shift']());}};_0x2e3e50(++_0x5b44e6);}(_0x6215,0x19e));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x5621('0x0'));var path=require('path');var timeout=require(_0x5621('0x1'));var express=require(_0x5621('0x2'));var router=express[_0x5621('0x3')]();var fs_extra=require(_0x5621('0x4'));var auth=require(_0x5621('0x5'));var interaction=require(_0x5621('0x6'));var config=require('../../config/environment');var controller=require(_0x5621('0x7'));router[_0x5621('0x8')]('/',auth['isAuthenticated'](),controller[_0x5621('0x9')]);router[_0x5621('0x8')]('/describe',auth[_0x5621('0xa')](),controller[_0x5621('0xb')]);router[_0x5621('0x8')](_0x5621('0xc'),auth[_0x5621('0xa')](),controller[_0x5621('0xd')]);router['post']('/',auth[_0x5621('0xa')](),controller[_0x5621('0xe')]);router['put'](_0x5621('0xc'),auth[_0x5621('0xa')](),controller[_0x5621('0xf')]);router['delete']('/:id',auth[_0x5621('0xa')](),controller[_0x5621('0x10')]);module['exports']=router;
\ No newline at end of file
index d09f043..a269498 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dff=['exports','STRING','INTEGER','sequelize'];(function(_0x1fbb3c,_0x30006e){var _0x5e1375=function(_0x17d485){while(--_0x17d485){_0x1fbb3c['push'](_0x1fbb3c['shift']());}};_0x5e1375(++_0x30006e);}(_0x0dff,0x1b7));var _0xf0df=function(_0x3bfe5b,_0x6525a7){_0x3bfe5b=_0x3bfe5b-0x0;var _0x256404=_0x0dff[_0x3bfe5b];return _0x256404;};'use strict';var Sequelize=require(_0xf0df('0x0'));module[_0xf0df('0x1')]={'name':{'type':Sequelize[_0xf0df('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf0df('0x3')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xe219=['STRING','exports'];(function(_0xc1caf,_0x2e27d4){var _0x3026a7=function(_0x63324c){while(--_0x63324c){_0xc1caf['push'](_0xc1caf['shift']());}};_0x3026a7(++_0x2e27d4);}(_0xe219,0x83));var _0x9e21=function(_0x299738,_0x27e880){_0x299738=_0x299738-0x0;var _0x4eb162=_0xe219[_0x299738];return _0x4eb162;};'use strict';var Sequelize=require('sequelize');module[_0x9e21('0x0')]={'name':{'type':Sequelize[_0x9e21('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 1f5ae8e..d4221a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['options','include','findAll','rows','show','length','includeAll','merge','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x687b,0x14a));var _0xb687=function(_0x49e2b8,_0x5cf700){_0x49e2b8=_0x49e2b8-0x0;var _0x1f2213=_0x687b[_0x49e2b8];return _0x1f2213;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];function respondWithStatusCode(_0x12a0be,_0x4f9c19){_0x4f9c19=_0x4f9c19||0xcc;return function(_0x4c97ed){if(_0x4c97ed){return _0x12a0be[_0xb687('0x1c')](_0x4f9c19);}return _0x12a0be[_0xb687('0x1d')](_0x4f9c19)['end']();};}function respondWithResult(_0x108fd0,_0x2f1ac0){_0x2f1ac0=_0x2f1ac0||0xc8;return function(_0x1f1f35){if(_0x1f1f35){return _0x108fd0[_0xb687('0x1d')](_0x2f1ac0)[_0xb687('0x1e')](_0x1f1f35);}};}function respondWithFilteredResult(_0x3ab914,_0x30622f){return function(_0x141375){if(_0x141375){var _0x263085=typeof _0x30622f[_0xb687('0x1f')]===_0xb687('0x20')&&typeof _0x30622f[_0xb687('0x21')]==='undefined';var _0x214b06=_0x141375[_0xb687('0x22')];var _0x30d370=_0x263085?0x0:_0x30622f['offset'];var _0x48958d=_0x263085?_0x141375[_0xb687('0x22')]:_0x30622f[_0xb687('0x1f')]+_0x30622f[_0xb687('0x21')];var _0x4b593b;if(_0x48958d>=_0x214b06){_0x48958d=_0x214b06;_0x4b593b=0xc8;}else{_0x4b593b=0xce;}_0x3ab914[_0xb687('0x1d')](_0x4b593b);return _0x3ab914['set'](_0xb687('0x23'),_0x30d370+'-'+_0x48958d+'/'+_0x214b06)[_0xb687('0x1e')](_0x141375);}return null;};}function patchUpdates(_0x170dc0){return function(_0x44bd0b){try{jsonpatch['apply'](_0x44bd0b,_0x170dc0,!![]);}catch(_0x3a73d5){return BPromise['reject'](_0x3a73d5);}return _0x44bd0b[_0xb687('0x24')]();};}function saveUpdates(_0x90e892,_0x274241){return function(_0x546fde){if(_0x546fde){return _0x546fde[_0xb687('0x25')](_0x90e892)[_0xb687('0x26')](function(_0xa95e91){return _0xa95e91;});}return null;};}function removeEntity(_0x16cdcb,_0xbf6c58){return function(_0x38866c){if(_0x38866c){return _0x38866c[_0xb687('0x27')]()[_0xb687('0x26')](function(){_0x16cdcb['status'](0xcc)[_0xb687('0x28')]();});}};}function handleEntityNotFound(_0x129347,_0x1c1585){return function(_0x1a0261){if(!_0x1a0261){_0x129347[_0xb687('0x1c')](0x194);}return _0x1a0261;};}function handleError(_0x4136c9,_0x17ff2b){_0x17ff2b=_0x17ff2b||0x1f4;return function(_0x3cb2f2){logger[_0xb687('0x29')](_0x3cb2f2[_0xb687('0x2a')]);if(_0x3cb2f2['name']){delete _0x3cb2f2[_0xb687('0x2b')];}_0x4136c9[_0xb687('0x1d')](_0x17ff2b)[_0xb687('0x2c')](_0x3cb2f2);};}exports[_0xb687('0x2d')]=function(_0x2e5c8d,_0x173c58){var _0x4e9a06={},_0x28b69a={},_0x5143af={'count':0x0,'rows':[]};var _0x360429=_[_0xb687('0x2e')](db[_0xb687('0x2f')][_0xb687('0x30')],function(_0x1ad3ef){return{'name':_0x1ad3ef[_0xb687('0x31')],'type':_0x1ad3ef[_0xb687('0x32')]['key']};});_0x28b69a[_0xb687('0x33')]=_[_0xb687('0x2e')](_0x360429,_0xb687('0x2b'));_0x28b69a[_0xb687('0x34')]=_[_0xb687('0x35')](_0x2e5c8d[_0xb687('0x34')]);_0x28b69a[_0xb687('0x36')]=_[_0xb687('0x37')](_0x28b69a[_0xb687('0x33')],_0x28b69a[_0xb687('0x34')]);_0x4e9a06[_0xb687('0x38')]=_['intersection'](_0x28b69a['model'],qs[_0xb687('0x39')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x39')]));_0x4e9a06[_0xb687('0x38')]=_0x4e9a06['attributes']['length']?_0x4e9a06[_0xb687('0x38')]:_0x28b69a[_0xb687('0x33')];if(!_0x2e5c8d['query'][_0xb687('0x3a')](_0xb687('0x3b'))){_0x4e9a06['limit']=qs[_0xb687('0x21')](_0x2e5c8d['query'][_0xb687('0x21')]);_0x4e9a06[_0xb687('0x1f')]=qs[_0xb687('0x1f')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x1f')]);}_0x4e9a06[_0xb687('0x3c')]=qs['sort'](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3d')]);_0x4e9a06[_0xb687('0x3e')]=qs[_0xb687('0x36')](_['pick'](_0x2e5c8d[_0xb687('0x34')],_0x28b69a[_0xb687('0x36')]),_0x360429);if(_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3f')]){_0x4e9a06[_0xb687('0x3e')]=_['merge'](_0x4e9a06[_0xb687('0x3e')],{'$or':_[_0xb687('0x2e')](_0x360429,function(_0x24c013){if(_0x24c013[_0xb687('0x32')]!==_0xb687('0x40')){var _0x29cf09={};_0x29cf09[_0x24c013['name']]={'$like':'%'+_0x2e5c8d['query'][_0xb687('0x3f')]+'%'};return _0x29cf09;}})});}_0x4e9a06=_['merge']({},_0x4e9a06,_0x2e5c8d[_0xb687('0x41')]);var _0x2f4550={'where':_0x4e9a06['where']};return db[_0xb687('0x2f')][_0xb687('0x22')](_0x2f4550)['then'](function(_0x394b56){_0x5143af[_0xb687('0x22')]=_0x394b56;if(_0x2e5c8d[_0xb687('0x34')]['includeAll']){_0x4e9a06[_0xb687('0x42')]=[{'all':!![]}];}return db[_0xb687('0x2f')][_0xb687('0x43')](_0x4e9a06);})[_0xb687('0x26')](function(_0x140388){_0x5143af[_0xb687('0x44')]=_0x140388;return _0x5143af;})[_0xb687('0x26')](respondWithFilteredResult(_0x173c58,_0x4e9a06))['catch'](handleError(_0x173c58,null));};exports[_0xb687('0x45')]=function(_0x4cf6ad,_0x50fdb7){var _0xa3a9e0={'raw':![],'where':{'id':_0x4cf6ad['params']['id']}},_0x430364={};_0x430364[_0xb687('0x33')]=_['keys'](db[_0xb687('0x2f')][_0xb687('0x30')]);_0x430364['query']=_[_0xb687('0x35')](_0x4cf6ad[_0xb687('0x34')]);_0x430364['filters']=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],_0x430364[_0xb687('0x34')]);_0xa3a9e0[_0xb687('0x38')]=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],qs[_0xb687('0x39')](_0x4cf6ad[_0xb687('0x34')][_0xb687('0x39')]));_0xa3a9e0[_0xb687('0x38')]=_0xa3a9e0[_0xb687('0x38')][_0xb687('0x46')]?_0xa3a9e0['attributes']:_0x430364[_0xb687('0x33')];if(_0x4cf6ad['query'][_0xb687('0x47')]){_0xa3a9e0[_0xb687('0x42')]=[{'all':!![]}];}_0xa3a9e0=_[_0xb687('0x48')]({},_0xa3a9e0,_0x4cf6ad[_0xb687('0x41')]);return db[_0xb687('0x2f')][_0xb687('0x49')](_0xa3a9e0)['then'](handleEntityNotFound(_0x50fdb7,null))['then'](respondWithResult(_0x50fdb7,null))[_0xb687('0x4a')](handleError(_0x50fdb7,null));};exports[_0xb687('0x4b')]=function(_0x40558a,_0x4f3069){return db['UserProfileResource'][_0xb687('0x4b')](_0x40558a[_0xb687('0x4c')],{})[_0xb687('0x26')](respondWithResult(_0x4f3069,0xc9))[_0xb687('0x4a')](handleError(_0x4f3069,null));};exports['update']=function(_0x33a0b0,_0xfc4c5f){if(_0x33a0b0[_0xb687('0x4c')]['id']){delete _0x33a0b0[_0xb687('0x4c')]['id'];}return db['UserProfileResource']['find']({'where':{'id':_0x33a0b0[_0xb687('0x4d')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0xfc4c5f,null))[_0xb687('0x26')](saveUpdates(_0x33a0b0['body'],null))['then'](respondWithResult(_0xfc4c5f,null))[_0xb687('0x4a')](handleError(_0xfc4c5f,null));};exports[_0xb687('0x27')]=function(_0xd5bdb7,_0x22e618){return db[_0xb687('0x2f')][_0xb687('0x49')]({'where':{'id':_0xd5bdb7[_0xb687('0x4d')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x22e618,null))['then'](removeEntity(_0x22e618,null))[_0xb687('0x4a')](handleError(_0x22e618,null));};exports[_0xb687('0x4e')]=function(_0x2342f6,_0x4f5784){return db['UserProfileResource']['describe']()['then'](respondWithResult(_0x4f5784,null))[_0xb687('0x4a')](handleError(_0x4f5784,null));};
\ No newline at end of file
+var _0x2a07=['index','map','UserProfileResource','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','catch','show','params','fields','includeAll','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','then','error','name','send'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2a07,0x74));var _0x72a0=function(_0x237aab,_0x523604){_0x237aab=_0x237aab-0x0;var _0x55b525=_0x2a07[_0x237aab];return _0x55b525;};'use strict';var emlformat=require(_0x72a0('0x0'));var rimraf=require(_0x72a0('0x1'));var zipdir=require(_0x72a0('0x2'));var jsonpatch=require(_0x72a0('0x3'));var rp=require(_0x72a0('0x4'));var moment=require('moment');var BPromise=require(_0x72a0('0x5'));var Mustache=require(_0x72a0('0x6'));var util=require(_0x72a0('0x7'));var path=require(_0x72a0('0x8'));var sox=require(_0x72a0('0x9'));var csv=require(_0x72a0('0xa'));var ejs=require(_0x72a0('0xb'));var fs=require('fs');var fs_extra=require(_0x72a0('0xc'));var _=require(_0x72a0('0xd'));var squel=require(_0x72a0('0xe'));var crypto=require(_0x72a0('0xf'));var jsforce=require(_0x72a0('0x10'));var deskjs=require(_0x72a0('0x11'));var toCsv=require(_0x72a0('0xa'));var querystring=require(_0x72a0('0x12'));var Papa=require(_0x72a0('0x13'));var Redis=require('ioredis');var authService=require(_0x72a0('0x14'));var qs=require(_0x72a0('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x72a0('0x16'));var logger=require(_0x72a0('0x17'))(_0x72a0('0x18'));var utils=require(_0x72a0('0x19'));var config=require(_0x72a0('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x72a0('0x1b'))['db'];function respondWithStatusCode(_0x335b9f,_0x123ca4){_0x123ca4=_0x123ca4||0xcc;return function(_0xf91a82){if(_0xf91a82){return _0x335b9f[_0x72a0('0x1c')](_0x123ca4);}return _0x335b9f[_0x72a0('0x1d')](_0x123ca4)[_0x72a0('0x1e')]();};}function respondWithResult(_0x5e0b5f,_0x4930c5){_0x4930c5=_0x4930c5||0xc8;return function(_0xe103dc){if(_0xe103dc){return _0x5e0b5f[_0x72a0('0x1d')](_0x4930c5)[_0x72a0('0x1f')](_0xe103dc);}};}function respondWithFilteredResult(_0x1d1133,_0x23b001){return function(_0x3f3d62){if(_0x3f3d62){var _0x4ab55e=typeof _0x23b001[_0x72a0('0x20')]===_0x72a0('0x21')&&typeof _0x23b001[_0x72a0('0x22')]===_0x72a0('0x21');var _0x2d1e95=_0x3f3d62['count'];var _0x100d8f=_0x4ab55e?0x0:_0x23b001[_0x72a0('0x20')];var _0x131b73=_0x4ab55e?_0x3f3d62['count']:_0x23b001[_0x72a0('0x20')]+_0x23b001[_0x72a0('0x22')];var _0x30899b;if(_0x131b73>=_0x2d1e95){_0x131b73=_0x2d1e95;_0x30899b=0xc8;}else{_0x30899b=0xce;}_0x1d1133[_0x72a0('0x1d')](_0x30899b);return _0x1d1133['set'](_0x72a0('0x23'),_0x100d8f+'-'+_0x131b73+'/'+_0x2d1e95)['json'](_0x3f3d62);}return null;};}function patchUpdates(_0x3d0607){return function(_0x315413){try{jsonpatch[_0x72a0('0x24')](_0x315413,_0x3d0607,!![]);}catch(_0x5c7479){return BPromise[_0x72a0('0x25')](_0x5c7479);}return _0x315413[_0x72a0('0x26')]();};}function saveUpdates(_0x1d22d8,_0x3d1965){return function(_0x5d6145){if(_0x5d6145){return _0x5d6145[_0x72a0('0x27')](_0x1d22d8)[_0x72a0('0x28')](function(_0x1ddd54){return _0x1ddd54;});}return null;};}function removeEntity(_0x23b918,_0x3022b0){return function(_0x174b1b){if(_0x174b1b){return _0x174b1b['destroy']()['then'](function(){_0x23b918[_0x72a0('0x1d')](0xcc)[_0x72a0('0x1e')]();});}};}function handleEntityNotFound(_0x123df4,_0x1504ed){return function(_0xf5cb49){if(!_0xf5cb49){_0x123df4[_0x72a0('0x1c')](0x194);}return _0xf5cb49;};}function handleError(_0xa5bda0,_0x15922a){_0x15922a=_0x15922a||0x1f4;return function(_0xee99e2){logger[_0x72a0('0x29')](_0xee99e2['stack']);if(_0xee99e2[_0x72a0('0x2a')]){delete _0xee99e2[_0x72a0('0x2a')];}_0xa5bda0[_0x72a0('0x1d')](_0x15922a)[_0x72a0('0x2b')](_0xee99e2);};}exports[_0x72a0('0x2c')]=function(_0x177a3a,_0x432179){var _0x12eda2={},_0x23c96a={},_0x916733={'count':0x0,'rows':[]};var _0x4ba037=_[_0x72a0('0x2d')](db[_0x72a0('0x2e')][_0x72a0('0x2f')],function(_0xfbe9b3){return{'name':_0xfbe9b3[_0x72a0('0x30')],'type':_0xfbe9b3[_0x72a0('0x31')][_0x72a0('0x32')]};});_0x23c96a['model']=_[_0x72a0('0x2d')](_0x4ba037,_0x72a0('0x2a'));_0x23c96a[_0x72a0('0x33')]=_[_0x72a0('0x34')](_0x177a3a[_0x72a0('0x33')]);_0x23c96a[_0x72a0('0x35')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],_0x23c96a['query']);_0x12eda2[_0x72a0('0x38')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],qs['fields'](_0x177a3a[_0x72a0('0x33')]['fields']));_0x12eda2[_0x72a0('0x38')]=_0x12eda2[_0x72a0('0x38')][_0x72a0('0x39')]?_0x12eda2[_0x72a0('0x38')]:_0x23c96a[_0x72a0('0x37')];if(!_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3a')](_0x72a0('0x3b'))){_0x12eda2[_0x72a0('0x22')]=qs[_0x72a0('0x22')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x22')]);_0x12eda2['offset']=qs[_0x72a0('0x20')](_0x177a3a['query'][_0x72a0('0x20')]);}_0x12eda2[_0x72a0('0x3c')]=qs[_0x72a0('0x3d')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3d')]);_0x12eda2[_0x72a0('0x3e')]=qs[_0x72a0('0x35')](_[_0x72a0('0x3f')](_0x177a3a[_0x72a0('0x33')],_0x23c96a['filters']),_0x4ba037);if(_0x177a3a['query'][_0x72a0('0x40')]){_0x12eda2[_0x72a0('0x3e')]=_[_0x72a0('0x41')](_0x12eda2[_0x72a0('0x3e')],{'$or':_[_0x72a0('0x2d')](_0x4ba037,function(_0x512a06){if(_0x512a06[_0x72a0('0x31')]!==_0x72a0('0x42')){var _0x582c90={};_0x582c90[_0x512a06[_0x72a0('0x2a')]]={'$like':'%'+_0x177a3a['query']['filter']+'%'};return _0x582c90;}})});}_0x12eda2=_['merge']({},_0x12eda2,_0x177a3a[_0x72a0('0x43')]);var _0x49633b={'where':_0x12eda2[_0x72a0('0x3e')]};return db[_0x72a0('0x2e')][_0x72a0('0x44')](_0x49633b)[_0x72a0('0x28')](function(_0x4bf56e){_0x916733['count']=_0x4bf56e;if(_0x177a3a['query']['includeAll']){_0x12eda2[_0x72a0('0x45')]=[{'all':!![]}];}return db[_0x72a0('0x2e')]['findAll'](_0x12eda2);})[_0x72a0('0x28')](function(_0x35d790){_0x916733['rows']=_0x35d790;return _0x916733;})[_0x72a0('0x28')](respondWithFilteredResult(_0x432179,_0x12eda2))[_0x72a0('0x46')](handleError(_0x432179,null));};exports[_0x72a0('0x47')]=function(_0xe4abe1,_0x340153){var _0x341451={'raw':![],'where':{'id':_0xe4abe1[_0x72a0('0x48')]['id']}},_0x50eb7f={};_0x50eb7f['model']=_[_0x72a0('0x34')](db['UserProfileResource'][_0x72a0('0x2f')]);_0x50eb7f[_0x72a0('0x33')]=_['keys'](_0xe4abe1[_0x72a0('0x33')]);_0x50eb7f['filters']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],_0x50eb7f[_0x72a0('0x33')]);_0x341451['attributes']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],qs[_0x72a0('0x49')](_0xe4abe1['query']['fields']));_0x341451[_0x72a0('0x38')]=_0x341451['attributes'][_0x72a0('0x39')]?_0x341451[_0x72a0('0x38')]:_0x50eb7f[_0x72a0('0x37')];if(_0xe4abe1[_0x72a0('0x33')][_0x72a0('0x4a')]){_0x341451[_0x72a0('0x45')]=[{'all':!![]}];}_0x341451=_[_0x72a0('0x41')]({},_0x341451,_0xe4abe1[_0x72a0('0x43')]);return db[_0x72a0('0x2e')]['find'](_0x341451)[_0x72a0('0x28')](handleEntityNotFound(_0x340153,null))[_0x72a0('0x28')](respondWithResult(_0x340153,null))[_0x72a0('0x46')](handleError(_0x340153,null));};exports[_0x72a0('0x4b')]=function(_0x3a669d,_0x304400){return db[_0x72a0('0x2e')]['create'](_0x3a669d['body'],{})[_0x72a0('0x28')](respondWithResult(_0x304400,0xc9))[_0x72a0('0x46')](handleError(_0x304400,null));};exports[_0x72a0('0x27')]=function(_0x3cab6a,_0x35a6ad){if(_0x3cab6a[_0x72a0('0x4c')]['id']){delete _0x3cab6a[_0x72a0('0x4c')]['id'];}return db[_0x72a0('0x2e')][_0x72a0('0x4d')]({'where':{'id':_0x3cab6a[_0x72a0('0x48')]['id']}})['then'](handleEntityNotFound(_0x35a6ad,null))[_0x72a0('0x28')](saveUpdates(_0x3cab6a[_0x72a0('0x4c')],null))[_0x72a0('0x28')](respondWithResult(_0x35a6ad,null))[_0x72a0('0x46')](handleError(_0x35a6ad,null));};exports[_0x72a0('0x4e')]=function(_0x5c1570,_0x143410){return db['UserProfileResource']['find']({'where':{'id':_0x5c1570[_0x72a0('0x48')]['id']}})[_0x72a0('0x28')](handleEntityNotFound(_0x143410,null))[_0x72a0('0x28')](removeEntity(_0x143410,null))[_0x72a0('0x46')](handleError(_0x143410,null));};exports[_0x72a0('0x4f')]=function(_0x50c8d7,_0xc0f323){return db[_0x72a0('0x2e')]['describe']()['then'](respondWithResult(_0xc0f323,null))[_0x72a0('0x46')](handleError(_0xc0f323,null));};
\ No newline at end of file
index ad536d5..f1487f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9360=['./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','resourceId','sectionId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4e86f8,_0x52dd3e){var _0x5e1d45=function(_0x20694e){while(--_0x20694e){_0x4e86f8['push'](_0x4e86f8['shift']());}};_0x5e1d45(++_0x52dd3e);}(_0x9360,0x67));var _0x0936=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9360[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x0936('0x0'));var logger=require(_0x0936('0x1'))(_0x0936('0x2'));var moment=require(_0x0936('0x3'));var BPromise=require(_0x0936('0x4'));var rp=require(_0x0936('0x5'));var fs=require('fs');var path=require(_0x0936('0x6'));var rimraf=require(_0x0936('0x7'));var config=require(_0x0936('0x8'));var attributes=require(_0x0936('0x9'));module[_0x0936('0xa')]=function(_0x3064e3,_0x443646){return _0x3064e3[_0x0936('0xb')](_0x0936('0xc'),attributes,{'tableName':_0x0936('0xd'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x0936('0xe'),_0x0936('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9d9=['exports','define','user_profile_has_resources','compositeIndex','sectionId','lodash','../../config/logger','api','moment','path','../../config/environment','./userProfileResource.attributes'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xc9d9,0x1f1));var _0x9c9d=function(_0x5dbc7d,_0x1e0053){_0x5dbc7d=_0x5dbc7d-0x0;var _0x3eaf2b=_0xc9d9[_0x5dbc7d];return _0x3eaf2b;};'use strict';var _=require(_0x9c9d('0x0'));var util=require('util');var logger=require(_0x9c9d('0x1'))(_0x9c9d('0x2'));var moment=require(_0x9c9d('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c9d('0x4'));var rimraf=require('rimraf');var config=require(_0x9c9d('0x5'));var attributes=require(_0x9c9d('0x6'));module[_0x9c9d('0x7')]=function(_0x54ed4d,_0x5e3422){return _0x54ed4d[_0x9c9d('0x8')]('UserProfileResource',attributes,{'tableName':_0x9c9d('0x9'),'paranoid':![],'indexes':[{'name':_0x9c9d('0xa'),'fields':['resourceId',_0x9c9d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 959366b..e644df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05d8=['UserProfileResource,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info'];(function(_0x4feafc,_0x24822e){var _0x44bfcc=function(_0x383bd3){while(--_0x383bd3){_0x4feafc['push'](_0x4feafc['shift']());}};_0x44bfcc(++_0x24822e);}(_0x05d8,0xc5));var _0x805d=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x05d8[_0x2df507];return _0x1f7167;};'use strict';var _=require('lodash');var util=require(_0x805d('0x0'));var moment=require(_0x805d('0x1'));var BPromise=require(_0x805d('0x2'));var rs=require(_0x805d('0x3'));var fs=require('fs');var Redis=require(_0x805d('0x4'));var db=require(_0x805d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x805d('0x6'))(_0x805d('0x7'));var config=require(_0x805d('0x8'));var jayson=require(_0x805d('0x9'));var client=jayson['client'][_0x805d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3608e5,_0x3cfc50,_0x4af5ad){return new BPromise(function(_0x765729,_0x5ad604){return client[_0x805d('0xb')](_0x3608e5,_0x4af5ad)['then'](function(_0x183202){logger[_0x805d('0xc')](_0x805d('0xd'),_0x3cfc50,_0x805d('0xe'));logger['debug']('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x3cfc50,_0x805d('0xe'),JSON[_0x805d('0xf')](_0x183202));if(_0x183202[_0x805d('0x10')]){if(_0x183202[_0x805d('0x10')][_0x805d('0x11')]===0x1f4){logger[_0x805d('0x10')](_0x805d('0xd'),_0x3cfc50,_0x183202[_0x805d('0x10')][_0x805d('0x12')]);return _0x5ad604(_0x183202[_0x805d('0x10')][_0x805d('0x12')]);}logger[_0x805d('0x10')](_0x805d('0xd'),_0x3cfc50,_0x183202[_0x805d('0x10')][_0x805d('0x12')]);return _0x765729(_0x183202[_0x805d('0x10')][_0x805d('0x12')]);}else{logger[_0x805d('0xc')](_0x805d('0xd'),_0x3cfc50,_0x805d('0xe'));_0x765729(_0x183202[_0x805d('0x13')][_0x805d('0x12')]);}})[_0x805d('0x14')](function(_0x2fcc2a){logger['error'](_0x805d('0xd'),_0x3cfc50,_0x2fcc2a);_0x5ad604(_0x2fcc2a);});});}
\ No newline at end of file
+var _0x3c86=['jayson/promise','request','then','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','../../mysqldb','../../config/utils','rpc'];(function(_0x4cd4f7,_0x435930){var _0x548bdc=function(_0x43568d){while(--_0x43568d){_0x4cd4f7['push'](_0x4cd4f7['shift']());}};_0x548bdc(++_0x435930);}(_0x3c86,0x139));var _0x63c8=function(_0x89b1fc,_0x1a58b8){_0x89b1fc=_0x89b1fc-0x0;var _0x504186=_0x3c86[_0x89b1fc];return _0x504186;};'use strict';var _=require(_0x63c8('0x0'));var util=require(_0x63c8('0x1'));var moment=require(_0x63c8('0x2'));var BPromise=require('bluebird');var rs=require(_0x63c8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x63c8('0x4'))['db'];var utils=require(_0x63c8('0x5'));var logger=require('../../config/logger')(_0x63c8('0x6'));var config=require('../../config/environment');var jayson=require(_0x63c8('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x64ddd,_0x45e4d0,_0x5ca266){return new BPromise(function(_0x46301c,_0x158668){return client[_0x63c8('0x8')](_0x64ddd,_0x5ca266)[_0x63c8('0x9')](function(_0x4703a){logger[_0x63c8('0xa')]('UserProfileResource,\x20%s,\x20%s',_0x45e4d0,_0x63c8('0xb'));logger[_0x63c8('0xc')](_0x63c8('0xd'),_0x45e4d0,'request\x20sent',JSON[_0x63c8('0xe')](_0x4703a));if(_0x4703a[_0x63c8('0xf')]){if(_0x4703a[_0x63c8('0xf')][_0x63c8('0x10')]===0x1f4){logger['error'](_0x63c8('0x11'),_0x45e4d0,_0x4703a[_0x63c8('0xf')][_0x63c8('0x12')]);return _0x158668(_0x4703a[_0x63c8('0xf')][_0x63c8('0x12')]);}logger[_0x63c8('0xf')](_0x63c8('0x11'),_0x45e4d0,_0x4703a['error'][_0x63c8('0x12')]);return _0x46301c(_0x4703a[_0x63c8('0xf')]['message']);}else{logger[_0x63c8('0xa')](_0x63c8('0x11'),_0x45e4d0,'request\x20sent');_0x46301c(_0x4703a['result'][_0x63c8('0x12')]);}})[_0x63c8('0x13')](function(_0x3de473){logger[_0x63c8('0xf')](_0x63c8('0x11'),_0x45e4d0,_0x3de473);_0x158668(_0x3de473);});});}
\ No newline at end of file
index 7b04e5b..2027004 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95bb=['describe','/:id','post','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated'];(function(_0x3103c3,_0x3cc4ec){var _0x1f2c83=function(_0x46e5a5){while(--_0x46e5a5){_0x3103c3['push'](_0x3103c3['shift']());}};_0x1f2c83(++_0x3cc4ec);}(_0x95bb,0x8c));var _0xb95b=function(_0x435dbf,_0x24306a){_0x435dbf=_0x435dbf-0x0;var _0x87214b=_0x95bb[_0x435dbf];return _0x87214b;};'use strict';var multer=require(_0xb95b('0x0'));var util=require(_0xb95b('0x1'));var path=require(_0xb95b('0x2'));var timeout=require(_0xb95b('0x3'));var express=require('express');var router=express[_0xb95b('0x4')]();var fs_extra=require(_0xb95b('0x5'));var auth=require(_0xb95b('0x6'));var interaction=require(_0xb95b('0x7'));var config=require(_0xb95b('0x8'));var controller=require(_0xb95b('0x9'));router[_0xb95b('0xa')]('/',auth[_0xb95b('0xb')](),controller['index']);router[_0xb95b('0xa')]('/describe',auth[_0xb95b('0xb')](),controller[_0xb95b('0xc')]);router[_0xb95b('0xa')](_0xb95b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xb95b('0xe')]('/',auth[_0xb95b('0xb')](),controller['create']);router[_0xb95b('0xf')](_0xb95b('0xd'),auth[_0xb95b('0xb')](),controller[_0xb95b('0x10')]);router[_0xb95b('0x11')](_0xb95b('0xd'),auth[_0xb95b('0xb')](),controller[_0xb95b('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x4ea2=['show','post','put','update','delete','multer','util','path','connect-timeout','express','fs-extra','./userProfileSection.controller','get','isAuthenticated','index','/describe'];(function(_0xd7e034,_0x2e5f38){var _0x5acdb7=function(_0x5c00f2){while(--_0x5c00f2){_0xd7e034['push'](_0xd7e034['shift']());}};_0x5acdb7(++_0x2e5f38);}(_0x4ea2,0xa5));var _0x24ea=function(_0x15a8fa,_0x4652b2){_0x15a8fa=_0x15a8fa-0x0;var _0x1355c2=_0x4ea2[_0x15a8fa];return _0x1355c2;};'use strict';var multer=require(_0x24ea('0x0'));var util=require(_0x24ea('0x1'));var path=require(_0x24ea('0x2'));var timeout=require(_0x24ea('0x3'));var express=require(_0x24ea('0x4'));var router=express['Router']();var fs_extra=require(_0x24ea('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x24ea('0x6'));router[_0x24ea('0x7')]('/',auth[_0x24ea('0x8')](),controller[_0x24ea('0x9')]);router['get'](_0x24ea('0xa'),auth[_0x24ea('0x8')](),controller['describe']);router[_0x24ea('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x24ea('0xb')]);router[_0x24ea('0xc')]('/',auth[_0x24ea('0x8')](),controller['create']);router[_0x24ea('0xd')]('/:id',auth[_0x24ea('0x8')](),controller[_0x24ea('0xe')]);router[_0x24ea('0xf')]('/:id',auth[_0x24ea('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 0d99311..4f63b5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30a=['exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','getDataValue','split','sequelize'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0xa30a,0xd7));var _0xaa30=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa30a[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xaa30('0x0'));module[_0xaa30('0x1')]={'name':{'type':Sequelize[_0xaa30('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xaa30('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0xaa30('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xaa30('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xaa30('0x2')],'set':function(_0x2a9b06){this[_0xaa30('0x5')](_0xaa30('0x6'),_0x2a9b06?_0x2a9b06['join'](''):[]);},'get':function(){return this[_0xaa30('0x7')]('crudPermissions')?this[_0xaa30('0x7')](_0xaa30('0x6'))[_0xaa30('0x8')](''):[];}}};
\ No newline at end of file
+var _0xc900=['join','getDataValue','split','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions'];(function(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0xc900,0xb3));var _0x0c90=function(_0x58bfa7,_0x48e554){_0x58bfa7=_0x58bfa7-0x0;var _0x1146bb=_0xc900[_0x58bfa7];return _0x1146bb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0c90('0x0')],'allowNull':![]},'category':{'type':Sequelize[_0x0c90('0x0')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x0c90('0x1')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0c90('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x0c90('0x0')],'set':function(_0x492f22){this[_0x0c90('0x3')](_0x0c90('0x4'),_0x492f22?_0x492f22[_0x0c90('0x5')](''):[]);},'get':function(){return this[_0x0c90('0x6')](_0x0c90('0x4'))?this[_0x0c90('0x6')]('crudPermissions')[_0x0c90('0x7')](''):[];}}};
\ No newline at end of file
index 1dc472c..07702fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f53=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','Content-Range','apply','save','then','destroy','stack','name','send','index','map','UserProfileSection','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','params','find','catch','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis'];(function(_0x46c15b,_0x1677db){var _0x40e2da=function(_0x97c389){while(--_0x97c389){_0x46c15b['push'](_0x46c15b['shift']());}};_0x40e2da(++_0x1677db);}(_0x8f53,0xcb));var _0x38f5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8f53[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x38f5('0x0'));var rimraf=require(_0x38f5('0x1'));var zipdir=require(_0x38f5('0x2'));var jsonpatch=require(_0x38f5('0x3'));var rp=require(_0x38f5('0x4'));var moment=require(_0x38f5('0x5'));var BPromise=require(_0x38f5('0x6'));var Mustache=require(_0x38f5('0x7'));var util=require(_0x38f5('0x8'));var path=require('path');var sox=require(_0x38f5('0x9'));var csv=require(_0x38f5('0xa'));var ejs=require(_0x38f5('0xb'));var fs=require('fs');var fs_extra=require(_0x38f5('0xc'));var _=require(_0x38f5('0xd'));var squel=require(_0x38f5('0xe'));var crypto=require('crypto');var jsforce=require(_0x38f5('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x38f5('0xa'));var querystring=require(_0x38f5('0x10'));var Papa=require(_0x38f5('0x11'));var Redis=require(_0x38f5('0x12'));var authService=require(_0x38f5('0x13'));var qs=require(_0x38f5('0x14'));var as=require(_0x38f5('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38f5('0x16'))('api');var utils=require(_0x38f5('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x38f5('0x18'))['db'];function respondWithStatusCode(_0x5c083f,_0x4fd490){_0x4fd490=_0x4fd490||0xcc;return function(_0x56934c){if(_0x56934c){return _0x5c083f[_0x38f5('0x19')](_0x4fd490);}return _0x5c083f['status'](_0x4fd490)[_0x38f5('0x1a')]();};}function respondWithResult(_0x5ce62b,_0x5d56dc){_0x5d56dc=_0x5d56dc||0xc8;return function(_0x2cc29d){if(_0x2cc29d){return _0x5ce62b[_0x38f5('0x1b')](_0x5d56dc)['json'](_0x2cc29d);}};}function respondWithFilteredResult(_0x35059c,_0x2d0241){return function(_0x2ebd36){if(_0x2ebd36){var _0x4bab37=typeof _0x2d0241['offset']===_0x38f5('0x1c')&&typeof _0x2d0241[_0x38f5('0x1d')]===_0x38f5('0x1c');var _0x5f6f85=_0x2ebd36[_0x38f5('0x1e')];var _0x5b7f74=_0x4bab37?0x0:_0x2d0241[_0x38f5('0x1f')];var _0x1486ff=_0x4bab37?_0x2ebd36[_0x38f5('0x1e')]:_0x2d0241[_0x38f5('0x1f')]+_0x2d0241[_0x38f5('0x1d')];var _0x5d0f72;if(_0x1486ff>=_0x5f6f85){_0x1486ff=_0x5f6f85;_0x5d0f72=0xc8;}else{_0x5d0f72=0xce;}_0x35059c[_0x38f5('0x1b')](_0x5d0f72);return _0x35059c['set'](_0x38f5('0x20'),_0x5b7f74+'-'+_0x1486ff+'/'+_0x5f6f85)['json'](_0x2ebd36);}return null;};}function patchUpdates(_0x1a2c7a){return function(_0x5234e4){try{jsonpatch[_0x38f5('0x21')](_0x5234e4,_0x1a2c7a,!![]);}catch(_0x80d50a){return BPromise['reject'](_0x80d50a);}return _0x5234e4[_0x38f5('0x22')]();};}function saveUpdates(_0x4b085b,_0x15858c){return function(_0x4eb017){if(_0x4eb017){return _0x4eb017['update'](_0x4b085b)[_0x38f5('0x23')](function(_0x4547dc){return _0x4547dc;});}return null;};}function removeEntity(_0xc1ad68,_0x570d64){return function(_0x580e72){if(_0x580e72){return _0x580e72[_0x38f5('0x24')]()[_0x38f5('0x23')](function(){_0xc1ad68[_0x38f5('0x1b')](0xcc)[_0x38f5('0x1a')]();});}};}function handleEntityNotFound(_0x2180c6,_0x4ec7e0){return function(_0x35d87b){if(!_0x35d87b){_0x2180c6['sendStatus'](0x194);}return _0x35d87b;};}function handleError(_0x377a30,_0x29bbe2){_0x29bbe2=_0x29bbe2||0x1f4;return function(_0x5c1da5){logger['error'](_0x5c1da5[_0x38f5('0x25')]);if(_0x5c1da5[_0x38f5('0x26')]){delete _0x5c1da5['name'];}_0x377a30[_0x38f5('0x1b')](_0x29bbe2)[_0x38f5('0x27')](_0x5c1da5);};}exports[_0x38f5('0x28')]=function(_0x4b1a8b,_0x12acfe){var _0x1af8d7={},_0x589017={},_0x4b2d4c={'count':0x0,'rows':[]};var _0x335289=_[_0x38f5('0x29')](db[_0x38f5('0x2a')]['rawAttributes'],function(_0x59a207){return{'name':_0x59a207[_0x38f5('0x2b')],'type':_0x59a207[_0x38f5('0x2c')][_0x38f5('0x2d')]};});_0x589017['model']=_[_0x38f5('0x29')](_0x335289,'name');_0x589017[_0x38f5('0x2e')]=_[_0x38f5('0x2f')](_0x4b1a8b[_0x38f5('0x2e')]);_0x589017[_0x38f5('0x30')]=_[_0x38f5('0x31')](_0x589017['model'],_0x589017[_0x38f5('0x2e')]);_0x1af8d7[_0x38f5('0x32')]=_['intersection'](_0x589017[_0x38f5('0x33')],qs['fields'](_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x34')]));_0x1af8d7[_0x38f5('0x32')]=_0x1af8d7[_0x38f5('0x32')][_0x38f5('0x35')]?_0x1af8d7[_0x38f5('0x32')]:_0x589017['model'];if(!_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x36')](_0x38f5('0x37'))){_0x1af8d7[_0x38f5('0x1d')]=qs[_0x38f5('0x1d')](_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x1d')]);_0x1af8d7[_0x38f5('0x1f')]=qs[_0x38f5('0x1f')](_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x1f')]);}_0x1af8d7[_0x38f5('0x38')]=qs[_0x38f5('0x39')](_0x4b1a8b[_0x38f5('0x2e')]['sort']);_0x1af8d7[_0x38f5('0x3a')]=qs[_0x38f5('0x30')](_[_0x38f5('0x3b')](_0x4b1a8b[_0x38f5('0x2e')],_0x589017[_0x38f5('0x30')]),_0x335289);if(_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x3c')]){_0x1af8d7[_0x38f5('0x3a')]=_['merge'](_0x1af8d7[_0x38f5('0x3a')],{'$or':_[_0x38f5('0x29')](_0x335289,function(_0x5a2782){if(_0x5a2782[_0x38f5('0x2c')]!==_0x38f5('0x3d')){var _0x1dc68e={};_0x1dc68e[_0x5a2782['name']]={'$like':'%'+_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x3c')]+'%'};return _0x1dc68e;}})});}_0x1af8d7=_[_0x38f5('0x3e')]({},_0x1af8d7,_0x4b1a8b[_0x38f5('0x3f')]);var _0x64c2e5={'where':_0x1af8d7[_0x38f5('0x3a')]};return db[_0x38f5('0x2a')][_0x38f5('0x1e')](_0x64c2e5)['then'](function(_0x2b1dce){_0x4b2d4c['count']=_0x2b1dce;if(_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x40')]){_0x1af8d7[_0x38f5('0x41')]=[{'all':!![]}];}return db['UserProfileSection'][_0x38f5('0x42')](_0x1af8d7);})[_0x38f5('0x23')](function(_0x4e8013){_0x4b2d4c[_0x38f5('0x43')]=_0x4e8013;return _0x4b2d4c;})[_0x38f5('0x23')](respondWithFilteredResult(_0x12acfe,_0x1af8d7))['catch'](handleError(_0x12acfe,null));};exports['show']=function(_0x1885f3,_0x631675){var _0x36740d={'raw':![],'where':{'id':_0x1885f3[_0x38f5('0x44')]['id']}},_0x2e7cd8={};_0x2e7cd8[_0x38f5('0x33')]=_['keys'](db[_0x38f5('0x2a')]['rawAttributes']);_0x2e7cd8[_0x38f5('0x2e')]=_[_0x38f5('0x2f')](_0x1885f3['query']);_0x2e7cd8[_0x38f5('0x30')]=_[_0x38f5('0x31')](_0x2e7cd8[_0x38f5('0x33')],_0x2e7cd8[_0x38f5('0x2e')]);_0x36740d[_0x38f5('0x32')]=_[_0x38f5('0x31')](_0x2e7cd8[_0x38f5('0x33')],qs[_0x38f5('0x34')](_0x1885f3['query'][_0x38f5('0x34')]));_0x36740d['attributes']=_0x36740d[_0x38f5('0x32')]['length']?_0x36740d[_0x38f5('0x32')]:_0x2e7cd8[_0x38f5('0x33')];if(_0x1885f3[_0x38f5('0x2e')]['includeAll']){_0x36740d['include']=[{'all':!![]}];}_0x36740d=_[_0x38f5('0x3e')]({},_0x36740d,_0x1885f3[_0x38f5('0x3f')]);return db['UserProfileSection'][_0x38f5('0x45')](_0x36740d)[_0x38f5('0x23')](handleEntityNotFound(_0x631675,null))['then'](respondWithResult(_0x631675,null))[_0x38f5('0x46')](handleError(_0x631675,null));};exports['create']=function(_0x2cdbaf,_0x36603f){return db[_0x38f5('0x2a')]['create'](_0x2cdbaf['body'],{})['then'](respondWithResult(_0x36603f,0xc9))[_0x38f5('0x46')](handleError(_0x36603f,null));};exports[_0x38f5('0x47')]=function(_0x316529,_0x112dd5){if(_0x316529[_0x38f5('0x48')]['id']){delete _0x316529['body']['id'];}return db['UserProfileSection']['find']({'where':{'id':_0x316529[_0x38f5('0x44')]['id']}})['then'](handleEntityNotFound(_0x112dd5,null))[_0x38f5('0x23')](saveUpdates(_0x316529[_0x38f5('0x48')],null))[_0x38f5('0x23')](respondWithResult(_0x112dd5,null))[_0x38f5('0x46')](handleError(_0x112dd5,null));};exports[_0x38f5('0x24')]=function(_0x37f347,_0x4fbd3f){return db['UserProfileSection'][_0x38f5('0x45')]({'where':{'id':_0x37f347['params']['id']}})[_0x38f5('0x23')](handleEntityNotFound(_0x4fbd3f,null))['then'](removeEntity(_0x4fbd3f,null))[_0x38f5('0x46')](handleError(_0x4fbd3f,null));};exports[_0x38f5('0x49')]=function(_0x5853e1,_0x1fe565){return db[_0x38f5('0x2a')]['describe']()[_0x38f5('0x23')](respondWithResult(_0x1fe565,null))[_0x38f5('0x46')](handleError(_0x1fe565,null));};
\ No newline at end of file
+var _0xaafa=['name','send','index','map','UserProfileSection','fieldName','type','query','keys','filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','includeAll','include','find','create','update','body','params','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack'];(function(_0x1a219d,_0x405933){var _0x5f133b=function(_0x3ccf2a){while(--_0x3ccf2a){_0x1a219d['push'](_0x1a219d['shift']());}};_0x5f133b(++_0x405933);}(_0xaafa,0x150));var _0xaaaf=function(_0x400ebe,_0x74cf9){_0x400ebe=_0x400ebe-0x0;var _0x108243=_0xaafa[_0x400ebe];return _0x108243;};'use strict';var emlformat=require(_0xaaaf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaaaf('0x1'));var jsonpatch=require(_0xaaaf('0x2'));var rp=require('request-promise');var moment=require(_0xaaaf('0x3'));var BPromise=require(_0xaaaf('0x4'));var Mustache=require(_0xaaaf('0x5'));var util=require(_0xaaaf('0x6'));var path=require('path');var sox=require(_0xaaaf('0x7'));var csv=require(_0xaaaf('0x8'));var ejs=require(_0xaaaf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaaaf('0xa'));var squel=require(_0xaaaf('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaaaf('0xc'));var toCsv=require(_0xaaaf('0x8'));var querystring=require('querystring');var Papa=require(_0xaaaf('0xd'));var Redis=require(_0xaaaf('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaaaf('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaaaf('0x10'));var logger=require(_0xaaaf('0x11'))(_0xaaaf('0x12'));var utils=require(_0xaaaf('0x13'));var config=require(_0xaaaf('0x14'));var licenseUtil=require(_0xaaaf('0x15'));var db=require(_0xaaaf('0x16'))['db'];function respondWithStatusCode(_0x28bbdb,_0x3d9ec0){_0x3d9ec0=_0x3d9ec0||0xcc;return function(_0x20af7e){if(_0x20af7e){return _0x28bbdb[_0xaaaf('0x17')](_0x3d9ec0);}return _0x28bbdb[_0xaaaf('0x18')](_0x3d9ec0)[_0xaaaf('0x19')]();};}function respondWithResult(_0x2a96b9,_0x2d66d4){_0x2d66d4=_0x2d66d4||0xc8;return function(_0x4f7009){if(_0x4f7009){return _0x2a96b9[_0xaaaf('0x18')](_0x2d66d4)[_0xaaaf('0x1a')](_0x4f7009);}};}function respondWithFilteredResult(_0x2bae33,_0x590939){return function(_0x1ea9b8){if(_0x1ea9b8){var _0x47008e=typeof _0x590939[_0xaaaf('0x1b')]==='undefined'&&typeof _0x590939[_0xaaaf('0x1c')]===_0xaaaf('0x1d');var _0x4f5cae=_0x1ea9b8[_0xaaaf('0x1e')];var _0x4e8d92=_0x47008e?0x0:_0x590939[_0xaaaf('0x1b')];var _0x2e92ac=_0x47008e?_0x1ea9b8[_0xaaaf('0x1e')]:_0x590939['offset']+_0x590939['limit'];var _0x502de7;if(_0x2e92ac>=_0x4f5cae){_0x2e92ac=_0x4f5cae;_0x502de7=0xc8;}else{_0x502de7=0xce;}_0x2bae33['status'](_0x502de7);return _0x2bae33['set'](_0xaaaf('0x1f'),_0x4e8d92+'-'+_0x2e92ac+'/'+_0x4f5cae)['json'](_0x1ea9b8);}return null;};}function patchUpdates(_0x293551){return function(_0x20b426){try{jsonpatch[_0xaaaf('0x20')](_0x20b426,_0x293551,!![]);}catch(_0x3d5f52){return BPromise[_0xaaaf('0x21')](_0x3d5f52);}return _0x20b426[_0xaaaf('0x22')]();};}function saveUpdates(_0x348a60,_0x61a9d6){return function(_0x164563){if(_0x164563){return _0x164563['update'](_0x348a60)[_0xaaaf('0x23')](function(_0x2ecc85){return _0x2ecc85;});}return null;};}function removeEntity(_0x336d49,_0x34fc22){return function(_0x5e58cd){if(_0x5e58cd){return _0x5e58cd[_0xaaaf('0x24')]()['then'](function(){_0x336d49['status'](0xcc)[_0xaaaf('0x19')]();});}};}function handleEntityNotFound(_0x3e20a1,_0x3db721){return function(_0x34a258){if(!_0x34a258){_0x3e20a1[_0xaaaf('0x17')](0x194);}return _0x34a258;};}function handleError(_0x38155e,_0x2e784f){_0x2e784f=_0x2e784f||0x1f4;return function(_0x51e212){logger[_0xaaaf('0x25')](_0x51e212[_0xaaaf('0x26')]);if(_0x51e212[_0xaaaf('0x27')]){delete _0x51e212['name'];}_0x38155e[_0xaaaf('0x18')](_0x2e784f)[_0xaaaf('0x28')](_0x51e212);};}exports[_0xaaaf('0x29')]=function(_0x133b5c,_0x3d11a5){var _0x477034={},_0x5c58ee={},_0x12079e={'count':0x0,'rows':[]};var _0x39dc28=_[_0xaaaf('0x2a')](db[_0xaaaf('0x2b')]['rawAttributes'],function(_0x3661e3){return{'name':_0x3661e3[_0xaaaf('0x2c')],'type':_0x3661e3[_0xaaaf('0x2d')]['key']};});_0x5c58ee['model']=_[_0xaaaf('0x2a')](_0x39dc28,_0xaaaf('0x27'));_0x5c58ee[_0xaaaf('0x2e')]=_[_0xaaaf('0x2f')](_0x133b5c[_0xaaaf('0x2e')]);_0x5c58ee[_0xaaaf('0x30')]=_[_0xaaaf('0x31')](_0x5c58ee['model'],_0x5c58ee[_0xaaaf('0x2e')]);_0x477034['attributes']=_[_0xaaaf('0x31')](_0x5c58ee['model'],qs['fields'](_0x133b5c['query'][_0xaaaf('0x32')]));_0x477034[_0xaaaf('0x33')]=_0x477034[_0xaaaf('0x33')][_0xaaaf('0x34')]?_0x477034[_0xaaaf('0x33')]:_0x5c58ee[_0xaaaf('0x35')];if(!_0x133b5c['query'][_0xaaaf('0x36')](_0xaaaf('0x37'))){_0x477034[_0xaaaf('0x1c')]=qs['limit'](_0x133b5c[_0xaaaf('0x2e')][_0xaaaf('0x1c')]);_0x477034['offset']=qs[_0xaaaf('0x1b')](_0x133b5c['query'][_0xaaaf('0x1b')]);}_0x477034[_0xaaaf('0x38')]=qs[_0xaaaf('0x39')](_0x133b5c[_0xaaaf('0x2e')][_0xaaaf('0x39')]);_0x477034[_0xaaaf('0x3a')]=qs['filters'](_[_0xaaaf('0x3b')](_0x133b5c[_0xaaaf('0x2e')],_0x5c58ee[_0xaaaf('0x30')]),_0x39dc28);if(_0x133b5c['query'][_0xaaaf('0x3c')]){_0x477034[_0xaaaf('0x3a')]=_['merge'](_0x477034[_0xaaaf('0x3a')],{'$or':_[_0xaaaf('0x2a')](_0x39dc28,function(_0x44a958){if(_0x44a958[_0xaaaf('0x2d')]!=='VIRTUAL'){var _0x1b3e32={};_0x1b3e32[_0x44a958[_0xaaaf('0x27')]]={'$like':'%'+_0x133b5c['query'][_0xaaaf('0x3c')]+'%'};return _0x1b3e32;}})});}_0x477034=_[_0xaaaf('0x3d')]({},_0x477034,_0x133b5c[_0xaaaf('0x3e')]);var _0x31ac31={'where':_0x477034[_0xaaaf('0x3a')]};return db[_0xaaaf('0x2b')]['count'](_0x31ac31)['then'](function(_0x1cbdcc){_0x12079e[_0xaaaf('0x1e')]=_0x1cbdcc;if(_0x133b5c['query']['includeAll']){_0x477034['include']=[{'all':!![]}];}return db['UserProfileSection'][_0xaaaf('0x3f')](_0x477034);})[_0xaaaf('0x23')](function(_0x321735){_0x12079e[_0xaaaf('0x40')]=_0x321735;return _0x12079e;})['then'](respondWithFilteredResult(_0x3d11a5,_0x477034))[_0xaaaf('0x41')](handleError(_0x3d11a5,null));};exports[_0xaaaf('0x42')]=function(_0x343089,_0x29082f){var _0x5f30f3={'raw':![],'where':{'id':_0x343089['params']['id']}},_0x5204d7={};_0x5204d7['model']=_[_0xaaaf('0x2f')](db['UserProfileSection']['rawAttributes']);_0x5204d7['query']=_[_0xaaaf('0x2f')](_0x343089[_0xaaaf('0x2e')]);_0x5204d7[_0xaaaf('0x30')]=_['intersection'](_0x5204d7[_0xaaaf('0x35')],_0x5204d7[_0xaaaf('0x2e')]);_0x5f30f3[_0xaaaf('0x33')]=_[_0xaaaf('0x31')](_0x5204d7['model'],qs[_0xaaaf('0x32')](_0x343089['query'][_0xaaaf('0x32')]));_0x5f30f3['attributes']=_0x5f30f3[_0xaaaf('0x33')][_0xaaaf('0x34')]?_0x5f30f3[_0xaaaf('0x33')]:_0x5204d7[_0xaaaf('0x35')];if(_0x343089[_0xaaaf('0x2e')][_0xaaaf('0x43')]){_0x5f30f3[_0xaaaf('0x44')]=[{'all':!![]}];}_0x5f30f3=_[_0xaaaf('0x3d')]({},_0x5f30f3,_0x343089[_0xaaaf('0x3e')]);return db[_0xaaaf('0x2b')][_0xaaaf('0x45')](_0x5f30f3)[_0xaaaf('0x23')](handleEntityNotFound(_0x29082f,null))[_0xaaaf('0x23')](respondWithResult(_0x29082f,null))['catch'](handleError(_0x29082f,null));};exports[_0xaaaf('0x46')]=function(_0x54531a,_0x5a397e){return db['UserProfileSection'][_0xaaaf('0x46')](_0x54531a['body'],{})['then'](respondWithResult(_0x5a397e,0xc9))[_0xaaaf('0x41')](handleError(_0x5a397e,null));};exports[_0xaaaf('0x47')]=function(_0x58ab7b,_0x417972){if(_0x58ab7b[_0xaaaf('0x48')]['id']){delete _0x58ab7b['body']['id'];}return db[_0xaaaf('0x2b')]['find']({'where':{'id':_0x58ab7b[_0xaaaf('0x49')]['id']}})[_0xaaaf('0x23')](handleEntityNotFound(_0x417972,null))['then'](saveUpdates(_0x58ab7b[_0xaaaf('0x48')],null))[_0xaaaf('0x23')](respondWithResult(_0x417972,null))[_0xaaaf('0x41')](handleError(_0x417972,null));};exports[_0xaaaf('0x24')]=function(_0x27244e,_0x35f538){return db[_0xaaaf('0x2b')][_0xaaaf('0x45')]({'where':{'id':_0x27244e[_0xaaaf('0x49')]['id']}})[_0xaaaf('0x23')](handleEntityNotFound(_0x35f538,null))[_0xaaaf('0x23')](removeEntity(_0x35f538,null))[_0xaaaf('0x41')](handleError(_0x35f538,null));};exports[_0xaaaf('0x4a')]=function(_0x3697a6,_0x2b61cb){return db[_0xaaaf('0x2b')][_0xaaaf('0x4a')]()[_0xaaaf('0x23')](respondWithResult(_0x2b61cb,null))[_0xaaaf('0x41')](handleError(_0x2b61cb,null));};
\ No newline at end of file
index 6db5a52..b68e26f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x677b=['util','../../config/logger','moment','request-promise','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','lodash'];(function(_0x3343c6,_0x3947f1){var _0x38e8e7=function(_0x56a412){while(--_0x56a412){_0x3343c6['push'](_0x3343c6['shift']());}};_0x38e8e7(++_0x3947f1);}(_0x677b,0x1d3));var _0xb677=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x677b[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require(_0xb677('0x0'));var util=require(_0xb677('0x1'));var logger=require(_0xb677('0x2'))('api');var moment=require(_0xb677('0x3'));var BPromise=require('bluebird');var rp=require(_0xb677('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb677('0x5'));var attributes=require(_0xb677('0x6'));module[_0xb677('0x7')]=function(_0x4679c5,_0x4d251c){return _0x4679c5['define'](_0xb677('0x8'),attributes,{'tableName':_0xb677('0x9'),'paranoid':![],'indexes':[{'name':_0xb677('0xa'),'fields':[_0xb677('0xb'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc19=['moment','bluebird','request-promise','path','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','sectionId','userProfileId','lodash','util','api'];(function(_0x2ece65,_0x419a93){var _0x26c4f5=function(_0x5b03de){while(--_0x5b03de){_0x2ece65['push'](_0x2ece65['shift']());}};_0x26c4f5(++_0x419a93);}(_0xcc19,0x185));var _0x9cc1=function(_0x295354,_0x2d43a8){_0x295354=_0x295354-0x0;var _0x371c48=_0xcc19[_0x295354];return _0x371c48;};'use strict';var _=require(_0x9cc1('0x0'));var util=require(_0x9cc1('0x1'));var logger=require('../../config/logger')(_0x9cc1('0x2'));var moment=require(_0x9cc1('0x3'));var BPromise=require(_0x9cc1('0x4'));var rp=require(_0x9cc1('0x5'));var fs=require('fs');var path=require(_0x9cc1('0x6'));var rimraf=require('rimraf');var config=require(_0x9cc1('0x7'));var attributes=require(_0x9cc1('0x8'));module[_0x9cc1('0x9')]=function(_0x40f40a,_0x4ac698){return _0x40f40a['define'](_0x9cc1('0xa'),attributes,{'tableName':_0x9cc1('0xb'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x9cc1('0xc'),_0x9cc1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2a3eb73..742731d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5e0=['jayson/promise','client','request','then','request\x20sent','debug','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x371485,_0x589744){var _0x3f6b22=function(_0x5dbb2e){while(--_0x5dbb2e){_0x371485['push'](_0x371485['shift']());}};_0x3f6b22(++_0x589744);}(_0xe5e0,0x1be));var _0x0e5e=function(_0x4c21ac,_0x535a0a){_0x4c21ac=_0x4c21ac-0x0;var _0x86ee6f=_0xe5e0[_0x4c21ac];return _0x86ee6f;};'use strict';var _=require(_0x0e5e('0x0'));var util=require(_0x0e5e('0x1'));var moment=require(_0x0e5e('0x2'));var BPromise=require(_0x0e5e('0x3'));var rs=require(_0x0e5e('0x4'));var fs=require('fs');var Redis=require(_0x0e5e('0x5'));var db=require(_0x0e5e('0x6'))['db'];var utils=require(_0x0e5e('0x7'));var logger=require(_0x0e5e('0x8'))('rpc');var config=require(_0x0e5e('0x9'));var jayson=require(_0x0e5e('0xa'));var client=jayson[_0x0e5e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b9800,_0x437362,_0x827738){return new BPromise(function(_0x4093cc,_0x6eba1c){return client[_0x0e5e('0xc')](_0x4b9800,_0x827738)[_0x0e5e('0xd')](function(_0x4b8feb){logger['info']('UserProfileSection,\x20%s,\x20%s',_0x437362,_0x0e5e('0xe'));logger[_0x0e5e('0xf')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x437362,'request\x20sent',JSON[_0x0e5e('0x10')](_0x4b8feb));if(_0x4b8feb[_0x0e5e('0x11')]){if(_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x12')]===0x1f4){logger['error'](_0x0e5e('0x13'),_0x437362,_0x4b8feb[_0x0e5e('0x11')]['message']);return _0x6eba1c(_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x14')]);}logger[_0x0e5e('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x437362,_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x14')]);return _0x4093cc(_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x14')]);}else{logger[_0x0e5e('0x15')](_0x0e5e('0x13'),_0x437362,'request\x20sent');_0x4093cc(_0x4b8feb[_0x0e5e('0x16')][_0x0e5e('0x14')]);}})[_0x0e5e('0x17')](function(_0x245920){logger[_0x0e5e('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x437362,_0x245920);_0x6eba1c(_0x245920);});});}
\ No newline at end of file
+var _0x2800=['ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','moment','randomstring'];(function(_0x1b64dd,_0x2cf769){var _0xeb464c=function(_0x38272c){while(--_0x38272c){_0x1b64dd['push'](_0x1b64dd['shift']());}};_0xeb464c(++_0x2cf769);}(_0x2800,0xba));var _0x0280=function(_0x5c3cbc,_0x5a39cf){_0x5c3cbc=_0x5c3cbc-0x0;var _0x2d4c8c=_0x2800[_0x5c3cbc];return _0x2d4c8c;};'use strict';var _=require('lodash');var util=require(_0x0280('0x0'));var moment=require(_0x0280('0x1'));var BPromise=require('bluebird');var rs=require(_0x0280('0x2'));var fs=require('fs');var Redis=require(_0x0280('0x3'));var db=require(_0x0280('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0280('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0280('0x6'));var client=jayson[_0x0280('0x7')][_0x0280('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3ff633,_0xe8f261,_0x30c5f0){return new BPromise(function(_0x9a60ef,_0x16108d){return client[_0x0280('0x9')](_0x3ff633,_0x30c5f0)[_0x0280('0xa')](function(_0x216a04){logger['info'](_0x0280('0xb'),_0xe8f261,_0x0280('0xc'));logger[_0x0280('0xd')](_0x0280('0xe'),_0xe8f261,_0x0280('0xc'),JSON[_0x0280('0xf')](_0x216a04));if(_0x216a04[_0x0280('0x10')]){if(_0x216a04[_0x0280('0x10')][_0x0280('0x11')]===0x1f4){logger[_0x0280('0x10')]('UserProfileSection,\x20%s,\x20%s',_0xe8f261,_0x216a04[_0x0280('0x10')][_0x0280('0x12')]);return _0x16108d(_0x216a04[_0x0280('0x10')][_0x0280('0x12')]);}logger[_0x0280('0x10')](_0x0280('0xb'),_0xe8f261,_0x216a04[_0x0280('0x10')]['message']);return _0x9a60ef(_0x216a04[_0x0280('0x10')][_0x0280('0x12')]);}else{logger[_0x0280('0x13')](_0x0280('0xb'),_0xe8f261,'request\x20sent');_0x9a60ef(_0x216a04[_0x0280('0x14')][_0x0280('0x12')]);}})['catch'](function(_0x202a44){logger[_0x0280('0x10')](_0x0280('0xb'),_0xe8f261,_0x202a44);_0x16108d(_0x202a44);});});}
\ No newline at end of file
index d4a43db..9bfe34e 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(_0x42fbdd,_0xbb21a3){var _0x525b95=function(_0x330481){while(--_0x330481){_0x42fbdd['push'](_0x42fbdd['shift']());}};_0x525b95(++_0xbb21a3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x57213e,_0x43a2a4){var _0x5ef4dc=function(_0x7251c7){while(--_0x7251c7){_0x57213e['push'](_0x57213e['shift']());}};_0x5ef4dc(++_0x43a2a4);}(_0x70e0,0x17b));var _0x070e=function(_0x15c9ec,_0x2a8654){_0x15c9ec=_0x15c9ec-0x0;var _0x4e604f=_0x70e0[_0x15c9ec];return _0x4e604f;};'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 30dfa8c..6f9438d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4ce=['INTEGER','exports'];(function(_0x5ce76c,_0x5a0f9f){var _0x5c2d0e=function(_0x121f90){while(--_0x121f90){_0x5ce76c['push'](_0x5ce76c['shift']());}};_0x5c2d0e(++_0x5a0f9f);}(_0xb4ce,0x103));var _0xeb4c=function(_0x140cf5,_0x54b26e){_0x140cf5=_0x140cf5-0x0;var _0x3f25f7=_0xb4ce[_0x140cf5];return _0x3f25f7;};'use strict';var Sequelize=require('sequelize');module[_0xeb4c('0x0')]={'penalty':{'type':Sequelize[_0xeb4c('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc76d=['sequelize','INTEGER'];(function(_0x1c1c34,_0xd486fc){var _0x24c175=function(_0x472737){while(--_0x472737){_0x1c1c34['push'](_0x1c1c34['shift']());}};_0x24c175(++_0xd486fc);}(_0xc76d,0xe2));var _0xdc76=function(_0x35731c,_0x5ab1d1){_0x35731c=_0x35731c-0x0;var _0x2f2957=_0xc76d[_0x35731c];return _0x2f2957;};'use strict';var Sequelize=require(_0xdc76('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xdc76('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index e4840a7..dbf7fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c4=['UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./userSmsQueue.attributes','define'];(function(_0x49052b,_0x3ba709){var _0x48c045=function(_0x41ac38){while(--_0x41ac38){_0x49052b['push'](_0x49052b['shift']());}};_0x48c045(++_0x3ba709);}(_0x82c4,0x1ca));var _0x482c=function(_0x4bf497,_0x30f242){_0x4bf497=_0x4bf497-0x0;var _0xb5f818=_0x82c4[_0x4bf497];return _0xb5f818;};'use strict';var _=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var logger=require(_0x482c('0x2'))(_0x482c('0x3'));var moment=require(_0x482c('0x4'));var BPromise=require(_0x482c('0x5'));var rp=require(_0x482c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x482c('0x7'));var config=require('../../config/environment');var attributes=require(_0x482c('0x8'));module['exports']=function(_0x477cf4,_0x5d7c76){return _0x477cf4[_0x482c('0x9')](_0x482c('0xa'),attributes,{'tableName':_0x482c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe714=['path','../../config/environment','./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','../../config/logger','api','moment','bluebird'];(function(_0x42e661,_0x264ca9){var _0x4a2822=function(_0x4f8631){while(--_0x4f8631){_0x42e661['push'](_0x42e661['shift']());}};_0x4a2822(++_0x264ca9);}(_0xe714,0xe2));var _0x4e71=function(_0x44a979,_0x5e990c){_0x44a979=_0x44a979-0x0;var _0x19de48=_0xe714[_0x44a979];return _0x19de48;};'use strict';var _=require(_0x4e71('0x0'));var util=require('util');var logger=require(_0x4e71('0x1'))(_0x4e71('0x2'));var moment=require(_0x4e71('0x3'));var BPromise=require(_0x4e71('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e71('0x5'));var rimraf=require('rimraf');var config=require(_0x4e71('0x6'));var attributes=require(_0x4e71('0x7'));module[_0x4e71('0x8')]=function(_0x204a19,_0xfe1559){return _0x204a19[_0x4e71('0x9')]('UserSmsQueue',attributes,{'tableName':_0x4e71('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e322c8..037df73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30e8=['info','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','UserSmsQueue,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x29f9f6,_0x3b3f8c){var _0x5e33bd=function(_0x3bb041){while(--_0x3bb041){_0x29f9f6['push'](_0x29f9f6['shift']());}};_0x5e33bd(++_0x3b3f8c);}(_0x30e8,0x135));var _0x830e=function(_0x26e325,_0x17f357){_0x26e325=_0x26e325-0x0;var _0x11cd87=_0x30e8[_0x26e325];return _0x11cd87;};'use strict';var _=require('lodash');var util=require(_0x830e('0x0'));var moment=require(_0x830e('0x1'));var BPromise=require(_0x830e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x830e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x830e('0x4'))(_0x830e('0x5'));var config=require('../../config/environment');var jayson=require(_0x830e('0x6'));var client=jayson[_0x830e('0x7')][_0x830e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39030,_0x45784c,_0x2c17a1){return new BPromise(function(_0x39379c,_0x151c1c){return client[_0x830e('0x9')](_0x39030,_0x2c17a1)[_0x830e('0xa')](function(_0x31c559){logger[_0x830e('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x45784c,'request\x20sent');logger['debug'](_0x830e('0xc'),_0x45784c,'request\x20sent',JSON[_0x830e('0xd')](_0x31c559));if(_0x31c559['error']){if(_0x31c559['error'][_0x830e('0xe')]===0x1f4){logger[_0x830e('0xf')](_0x830e('0x10'),_0x45784c,_0x31c559[_0x830e('0xf')][_0x830e('0x11')]);return _0x151c1c(_0x31c559[_0x830e('0xf')]['message']);}logger[_0x830e('0xf')](_0x830e('0x10'),_0x45784c,_0x31c559[_0x830e('0xf')][_0x830e('0x11')]);return _0x39379c(_0x31c559['error'][_0x830e('0x11')]);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x45784c,'request\x20sent');_0x39379c(_0x31c559[_0x830e('0x12')][_0x830e('0x11')]);}})[_0x830e('0x13')](function(_0x5f4a9d){logger[_0x830e('0xf')](_0x830e('0x10'),_0x45784c,_0x5f4a9d);_0x151c1c(_0x5f4a9d);});});}
\ No newline at end of file
+var _0x215c=['rpc','../../config/environment','jayson/promise','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2f1c95,_0x211fd6){var _0x229b4e=function(_0x51bae0){while(--_0x51bae0){_0x2f1c95['push'](_0x2f1c95['shift']());}};_0x229b4e(++_0x211fd6);}(_0x215c,0x1dc));var _0xc215=function(_0x8bc1c6,_0x37bbc5){_0x8bc1c6=_0x8bc1c6-0x0;var _0xc63cfb=_0x215c[_0x8bc1c6];return _0xc63cfb;};'use strict';var _=require('lodash');var util=require(_0xc215('0x0'));var moment=require(_0xc215('0x1'));var BPromise=require('bluebird');var rs=require(_0xc215('0x2'));var fs=require('fs');var Redis=require(_0xc215('0x3'));var db=require(_0xc215('0x4'))['db'];var utils=require(_0xc215('0x5'));var logger=require(_0xc215('0x6'))(_0xc215('0x7'));var config=require(_0xc215('0x8'));var jayson=require(_0xc215('0x9'));var client=jayson['client'][_0xc215('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b2b8e,_0x37de80,_0x144865){return new BPromise(function(_0x2713f6,_0x44264e){return client[_0xc215('0xb')](_0x5b2b8e,_0x144865)[_0xc215('0xc')](function(_0x423f5c){logger[_0xc215('0xd')](_0xc215('0xe'),_0x37de80,'request\x20sent');logger['debug'](_0xc215('0xf'),_0x37de80,'request\x20sent',JSON[_0xc215('0x10')](_0x423f5c));if(_0x423f5c[_0xc215('0x11')]){if(_0x423f5c[_0xc215('0x11')][_0xc215('0x12')]===0x1f4){logger['error'](_0xc215('0xe'),_0x37de80,_0x423f5c['error'][_0xc215('0x13')]);return _0x44264e(_0x423f5c[_0xc215('0x11')]['message']);}logger['error'](_0xc215('0xe'),_0x37de80,_0x423f5c[_0xc215('0x11')][_0xc215('0x13')]);return _0x2713f6(_0x423f5c[_0xc215('0x11')][_0xc215('0x13')]);}else{logger[_0xc215('0xd')](_0xc215('0xe'),_0x37de80,'request\x20sent');_0x2713f6(_0x423f5c[_0xc215('0x14')][_0xc215('0x13')]);}})['catch'](function(_0x28b137){logger[_0xc215('0x11')](_0xc215('0xe'),_0x37de80,_0x28b137);_0x44264e(_0x28b137);});});}
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js
new file mode 100644 (file)
index 0000000..4161636
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x4dd6=['INTEGER','exports'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0x4dd6,0x191));var _0x64dd=function(_0x28199c,_0x5b348c){_0x28199c=_0x28199c-0x0;var _0x27db3a=_0x4dd6[_0x28199c];return _0x27db3a;};'use strict';var Sequelize=require('sequelize');module[_0x64dd('0x0')]={'UserId':{'type':Sequelize[_0x64dd('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js
new file mode 100644 (file)
index 0000000..5b7cc4f
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x152d81,_0x353274){var _0x56ce48=function(_0x21c0f6){while(--_0x21c0f6){_0x152d81['push'](_0x152d81['shift']());}};_0x56ce48(++_0x353274);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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 1291e6b..7bb7186 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(_0x1716e5,_0x55b565){var _0x282173=function(_0x441fb7){while(--_0x441fb7){_0x1716e5['push'](_0x1716e5['shift']());}};_0x282173(++_0x55b565);}(_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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2f2652,_0x52bef3){var _0x57f4bf=function(_0x7575fb){while(--_0x7575fb){_0x2f2652['push'](_0x2f2652['shift']());}};_0x57f4bf(++_0x52bef3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0xcb91[_0x288f5e];return _0x476cc9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 89cf2d3..aecae88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b39=['INTEGER','sequelize','exports'];(function(_0x255840,_0x411b6e){var _0x40dad5=function(_0x258d8d){while(--_0x258d8d){_0x255840['push'](_0x255840['shift']());}};_0x40dad5(++_0x411b6e);}(_0x1b39,0x100));var _0x91b3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x1b39[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x91b3('0x0'));module[_0x91b3('0x1')]={'penalty':{'type':Sequelize[_0x91b3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc3a1=['sequelize','INTEGER'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xc3a1,0x102));var _0x1c3a=function(_0x3d99f2,_0x47be64){_0x3d99f2=_0x3d99f2-0x0;var _0x3d907a=_0xc3a1[_0x3d99f2];return _0x3d907a;};'use strict';var Sequelize=require(_0x1c3a('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x1c3a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 3d7b5f9..19f861a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9041=['../../config/environment','./userVoiceQueue.attributes','exports','define','user_has_voice_queues','lodash','../../config/logger','api','path','rimraf'];(function(_0x1f83a5,_0x59843f){var _0x45edf0=function(_0x431e25){while(--_0x431e25){_0x1f83a5['push'](_0x1f83a5['shift']());}};_0x45edf0(++_0x59843f);}(_0x9041,0x1a9));var _0x1904=function(_0x32f3f9,_0x42a1bc){_0x32f3f9=_0x32f3f9-0x0;var _0x40fd0c=_0x9041[_0x32f3f9];return _0x40fd0c;};'use strict';var _=require(_0x1904('0x0'));var util=require('util');var logger=require(_0x1904('0x1'))(_0x1904('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1904('0x3'));var rimraf=require(_0x1904('0x4'));var config=require(_0x1904('0x5'));var attributes=require(_0x1904('0x6'));module[_0x1904('0x7')]=function(_0x1acb75,_0x3fe1cc){return _0x1acb75[_0x1904('0x8')]('UserVoiceQueue',attributes,{'tableName':_0x1904('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a36=['../../config/logger','api','path','rimraf','../../config/environment','exports','define','UserVoiceQueue','user_has_voice_queues','util'];(function(_0x2d0d97,_0x2d9560){var _0xfb96e9=function(_0x52a340){while(--_0x52a340){_0x2d0d97['push'](_0x2d0d97['shift']());}};_0xfb96e9(++_0x2d9560);}(_0x0a36,0x199));var _0x60a3=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x0a36[_0x178e48];return _0x440d7e;};'use strict';var _=require('lodash');var util=require(_0x60a3('0x0'));var logger=require(_0x60a3('0x1'))(_0x60a3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x60a3('0x3'));var rimraf=require(_0x60a3('0x4'));var config=require(_0x60a3('0x5'));var attributes=require('./userVoiceQueue.attributes');module[_0x60a3('0x6')]=function(_0x1f785a,_0x173599){return _0x1f785a[_0x60a3('0x7')](_0x60a3('0x8'),attributes,{'tableName':_0x60a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 35a9d8a..94b8af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70ec=['rpc','../../config/environment','jayson/promise','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils'];(function(_0x27c76e,_0xe5a06a){var _0x5cc3c0=function(_0x39a749){while(--_0x39a749){_0x27c76e['push'](_0x27c76e['shift']());}};_0x5cc3c0(++_0xe5a06a);}(_0x70ec,0x13a));var _0xc70e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x70ec[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xc70e('0x0'));var util=require(_0xc70e('0x1'));var moment=require(_0xc70e('0x2'));var BPromise=require('bluebird');var rs=require(_0xc70e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc70e('0x4'))['db'];var utils=require(_0xc70e('0x5'));var logger=require('../../config/logger')(_0xc70e('0x6'));var config=require(_0xc70e('0x7'));var jayson=require(_0xc70e('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x54bc39,_0x5d2c7c,_0x3300f5){return new BPromise(function(_0x1a67a4,_0x3272b3){return client[_0xc70e('0x9')](_0x54bc39,_0x3300f5)[_0xc70e('0xa')](function(_0x9e0319){logger[_0xc70e('0xb')](_0xc70e('0xc'),_0x5d2c7c,_0xc70e('0xd'));logger[_0xc70e('0xe')](_0xc70e('0xf'),_0x5d2c7c,_0xc70e('0xd'),JSON[_0xc70e('0x10')](_0x9e0319));if(_0x9e0319[_0xc70e('0x11')]){if(_0x9e0319[_0xc70e('0x11')]['code']===0x1f4){logger[_0xc70e('0x11')](_0xc70e('0xc'),_0x5d2c7c,_0x9e0319[_0xc70e('0x11')]['message']);return _0x3272b3(_0x9e0319[_0xc70e('0x11')]['message']);}logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x5d2c7c,_0x9e0319[_0xc70e('0x11')]['message']);return _0x1a67a4(_0x9e0319[_0xc70e('0x11')][_0xc70e('0x12')]);}else{logger[_0xc70e('0xb')](_0xc70e('0xc'),_0x5d2c7c,'request\x20sent');_0x1a67a4(_0x9e0319[_0xc70e('0x13')][_0xc70e('0x12')]);}})['catch'](function(_0x311b16){logger[_0xc70e('0x11')]('UserVoiceQueue,\x20%s,\x20%s',_0x5d2c7c,_0x311b16);_0x3272b3(_0x311b16);});});}
\ No newline at end of file
+var _0xd87f=['info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0xa1f3d9,_0x2a0fa4){var _0x5dcb0a=function(_0x52c7dd){while(--_0x52c7dd){_0xa1f3d9['push'](_0xa1f3d9['shift']());}};_0x5dcb0a(++_0x2a0fa4);}(_0xd87f,0xdc));var _0xfd87=function(_0x9998b2,_0x52df2c){_0x9998b2=_0x9998b2-0x0;var _0x261b27=_0xd87f[_0x9998b2];return _0x261b27;};'use strict';var _=require('lodash');var util=require(_0xfd87('0x0'));var moment=require(_0xfd87('0x1'));var BPromise=require(_0xfd87('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfd87('0x3'));var logger=require(_0xfd87('0x4'))('rpc');var config=require(_0xfd87('0x5'));var jayson=require(_0xfd87('0x6'));var client=jayson[_0xfd87('0x7')][_0xfd87('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4f3e93,_0x4c9798,_0x49bd50){return new BPromise(function(_0x425cfe,_0x197030){return client[_0xfd87('0x9')](_0x4f3e93,_0x49bd50)[_0xfd87('0xa')](function(_0x182a34){logger[_0xfd87('0xb')](_0xfd87('0xc'),_0x4c9798,_0xfd87('0xd'));logger[_0xfd87('0xe')](_0xfd87('0xf'),_0x4c9798,_0xfd87('0xd'),JSON[_0xfd87('0x10')](_0x182a34));if(_0x182a34[_0xfd87('0x11')]){if(_0x182a34[_0xfd87('0x11')][_0xfd87('0x12')]===0x1f4){logger[_0xfd87('0x11')](_0xfd87('0xc'),_0x4c9798,_0x182a34[_0xfd87('0x11')][_0xfd87('0x13')]);return _0x197030(_0x182a34[_0xfd87('0x11')]['message']);}logger['error'](_0xfd87('0xc'),_0x4c9798,_0x182a34['error'][_0xfd87('0x13')]);return _0x425cfe(_0x182a34[_0xfd87('0x11')][_0xfd87('0x13')]);}else{logger[_0xfd87('0xb')](_0xfd87('0xc'),_0x4c9798,'request\x20sent');_0x425cfe(_0x182a34[_0xfd87('0x14')]['message']);}})['catch'](function(_0xf7c4fa){logger[_0xfd87('0x11')](_0xfd87('0xc'),_0x4c9798,_0xf7c4fa);_0x197030(_0xf7c4fa);});});}
\ No newline at end of file
index d558686..fb458f9 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(_0xf30651,_0x964c8){var _0x5382a0=function(_0x29d618){while(--_0x29d618){_0xf30651['push'](_0xf30651['shift']());}};_0x5382a0(++_0x964c8);}(_0x9c44,0x178));var _0x49c4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c44[_0x3dd15e];return _0x231fd0;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x297f25,_0x594be0){var _0x4b16e8=function(_0x5cccb9){while(--_0x5cccb9){_0x297f25['push'](_0x297f25['shift']());}};_0x4b16e8(++_0x594be0);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'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 41c03e0..e30b8d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe66a=['queue_interface','exports','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x5c883f,_0x38f092){var _0x4210cc=function(_0x51be71){while(--_0x51be71){_0x5c883f['push'](_0x5c883f['shift']());}};_0x4210cc(++_0x38f092);}(_0xe66a,0x11e));var _0xae66=function(_0x284359,_0x290d6e){_0x284359=_0x284359-0x0;var _0x592dc4=_0xe66a[_0x284359];return _0x592dc4;};'use strict';var Sequelize=require('sequelize');module[_0xae66('0x0')]={'uniqueid':{'type':Sequelize[_0xae66('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xae66('0x2')},'membername':{'type':Sequelize[_0xae66('0x3')],'allowNull':![],'comment':_0xae66('0x2')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xae66('0x4'),'comment':_0xae66('0x2')},'VoiceQueueId':{'type':Sequelize[_0xae66('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xae66('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xae66('0x2')},'penalty':{'type':Sequelize[_0xae66('0x1')](0xb),'defaultValue':0x0,'comment':_0xae66('0x2')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xae66('0x2')}};
\ No newline at end of file
+var _0xd406=['sequelize','exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd406,0x90));var _0x6d40=function(_0x46cf29,_0x11e439){_0x46cf29=_0x46cf29-0x0;var _0x5c261c=_0xd406[_0x46cf29];return _0x5c261c;};'use strict';var Sequelize=require(_0x6d40('0x0'));module[_0x6d40('0x1')]={'uniqueid':{'type':Sequelize[_0x6d40('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x6d40('0x3')],'allowNull':![],'comment':_0x6d40('0x4')},'UserId':{'type':Sequelize[_0x6d40('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x6d40('0x3')],'allowNull':![],'unique':_0x6d40('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0x6d40('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x6d40('0x3')],'allowNull':![],'unique':_0x6d40('0x5'),'comment':_0x6d40('0x4')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x6d40('0x4')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index 31f52c4..f5cb00b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dfd=['emit','hasOwnProperty','exports','events','UserVoiceQueueRt','setMaxListeners','update','remove'];(function(_0x44868b,_0x399444){var _0x190b30=function(_0x2885c0){while(--_0x2885c0){_0x44868b['push'](_0x44868b['shift']());}};_0x190b30(++_0x399444);}(_0x0dfd,0xd3));var _0xd0df=function(_0x2ab857,_0x5d3853){_0x2ab857=_0x2ab857-0x0;var _0x523303=_0x0dfd[_0x2ab857];return _0x523303;};'use strict';var EventEmitter=require(_0xd0df('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db'][_0xd0df('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xd0df('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd0df('0x3'),'afterDestroy':_0xd0df('0x4')};function emitEvent(_0x53e989){return function(_0x29d93c,_0x10aad3,_0x27f725){UserVoiceQueueRtEvents[_0xd0df('0x5')](_0x53e989+':'+_0x29d93c['id'],_0x29d93c);UserVoiceQueueRtEvents[_0xd0df('0x5')](_0x53e989,_0x29d93c);_0x27f725(null);};}for(var e in events){if(events[_0xd0df('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xd0df('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xd26b=['events','setMaxListeners','emit','hasOwnProperty'];(function(_0x2f54d0,_0xbe8dd7){var _0x82651=function(_0x770bab){while(--_0x770bab){_0x2f54d0['push'](_0x2f54d0['shift']());}};_0x82651(++_0xbe8dd7);}(_0xd26b,0x1b8));var _0xbd26=function(_0x36c65c,_0x51437f){_0x36c65c=_0x36c65c-0x0;var _0x244160=_0xd26b[_0x36c65c];return _0x244160;};'use strict';var EventEmitter=require(_0xbd26('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xbd26('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3736c6){return function(_0x1a642c,_0x1ae89c,_0x3be298){UserVoiceQueueRtEvents['emit'](_0x3736c6+':'+_0x1a642c['id'],_0x1a642c);UserVoiceQueueRtEvents[_0xbd26('0x2')](_0x3736c6,_0x1a642c);_0x3be298(null);};}for(var e in events){if(events[_0xbd26('0x3')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index 514d6be..f395fc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e8e=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','util'];(function(_0x52f315,_0x116ee9){var _0x2147bc=function(_0x5509d7){while(--_0x5509d7){_0x52f315['push'](_0x52f315['shift']());}};_0x2147bc(++_0x116ee9);}(_0x6e8e,0x1b9));var _0xe6e8=function(_0x1873bf,_0x41c35f){_0x1873bf=_0x1873bf-0x0;var _0x3fdfd4=_0x6e8e[_0x1873bf];return _0x3fdfd4;};'use strict';var _=require('lodash');var util=require(_0xe6e8('0x0'));var logger=require(_0xe6e8('0x1'))(_0xe6e8('0x2'));var moment=require(_0xe6e8('0x3'));var BPromise=require(_0xe6e8('0x4'));var rp=require(_0xe6e8('0x5'));var fs=require('fs');var path=require(_0xe6e8('0x6'));var rimraf=require(_0xe6e8('0x7'));var config=require(_0xe6e8('0x8'));var attributes=require(_0xe6e8('0x9'));module[_0xe6e8('0xa')]=function(_0x4e04b0,_0x461a15){return _0x4e04b0[_0xe6e8('0xb')](_0xe6e8('0xc'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c98=['user_has_voice_queues_rt','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','UserVoiceQueueRt'];(function(_0x4ea5ca,_0xc649f0){var _0x2361ee=function(_0x1e6f53){while(--_0x1e6f53){_0x4ea5ca['push'](_0x4ea5ca['shift']());}};_0x2361ee(++_0xc649f0);}(_0x6c98,0x1bb));var _0x86c9=function(_0x502a87,_0x18cbf4){_0x502a87=_0x502a87-0x0;var _0x53ce42=_0x6c98[_0x502a87];return _0x53ce42;};'use strict';var _=require('lodash');var util=require(_0x86c9('0x0'));var logger=require(_0x86c9('0x1'))(_0x86c9('0x2'));var moment=require(_0x86c9('0x3'));var BPromise=require(_0x86c9('0x4'));var rp=require(_0x86c9('0x5'));var fs=require('fs');var path=require(_0x86c9('0x6'));var rimraf=require(_0x86c9('0x7'));var config=require(_0x86c9('0x8'));var attributes=require(_0x86c9('0x9'));module[_0x86c9('0xa')]=function(_0x42690f,_0x1c549e){return _0x42690f['define'](_0x86c9('0xb'),attributes,{'tableName':_0x86c9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b21dba5..5a59b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f9=['options','raw','where','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','defaults','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','findAll'];(function(_0x3d1082,_0x5b6160){var _0x1dc252=function(_0x490738){while(--_0x490738){_0x3d1082['push'](_0x3d1082['shift']());}};_0x1dc252(++_0x5b6160);}(_0x87f9,0x194));var _0x987f=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x87f9[_0x55f8b4];return _0x2475f9;};'use strict';var _=require('lodash');var util=require(_0x987f('0x0'));var moment=require('moment');var BPromise=require(_0x987f('0x1'));var rs=require(_0x987f('0x2'));var fs=require('fs');var Redis=require(_0x987f('0x3'));var db=require(_0x987f('0x4'))['db'];var utils=require(_0x987f('0x5'));var logger=require(_0x987f('0x6'))(_0x987f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x987f('0x8')]({'port':0x232a});config['redis']=_[_0x987f('0x9')](config[_0x987f('0xa')],{'host':_0x987f('0xb'),'port':0x18eb});var socket=require(_0x987f('0xc'))(new Redis(config[_0x987f('0xa')]));require(_0x987f('0xd'))[_0x987f('0xe')](socket);function respondWithRpcPromise(_0x3ef9b4,_0x3eaa6c,_0x39acfb){return new BPromise(function(_0x1316cb,_0x18f9fc){return client[_0x987f('0xf')](_0x3ef9b4,_0x39acfb)['then'](function(_0x165b66){logger[_0x987f('0x10')](_0x987f('0x11'),_0x3eaa6c,_0x987f('0x12'));logger[_0x987f('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x3eaa6c,_0x987f('0x12'),JSON[_0x987f('0x14')](_0x165b66));if(_0x165b66[_0x987f('0x15')]){if(_0x165b66[_0x987f('0x15')][_0x987f('0x16')]===0x1f4){logger[_0x987f('0x15')](_0x987f('0x11'),_0x3eaa6c,_0x165b66[_0x987f('0x15')][_0x987f('0x17')]);return _0x18f9fc(_0x165b66[_0x987f('0x15')][_0x987f('0x17')]);}logger[_0x987f('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3eaa6c,_0x165b66['error'][_0x987f('0x17')]);return _0x1316cb(_0x165b66[_0x987f('0x15')]['message']);}else{logger['info'](_0x987f('0x11'),_0x3eaa6c,_0x987f('0x12'));_0x1316cb(_0x165b66[_0x987f('0x18')][_0x987f('0x17')]);}})[_0x987f('0x19')](function(_0xc4e1ec){logger['error'](_0x987f('0x11'),_0x3eaa6c,_0xc4e1ec);_0x18f9fc(_0xc4e1ec);});});}exports[_0x987f('0x1a')]=function(_0x2028ca){var _0x38ea3c=this;return new Promise(function(_0x795925,_0xbf39fd){return db['UserVoiceQueueRt'][_0x987f('0x1b')]({'raw':_0x2028ca[_0x987f('0x1c')]?_0x2028ca[_0x987f('0x1c')][_0x987f('0x1d')]===undefined?!![]:![]:!![],'where':_0x2028ca[_0x987f('0x1c')]?_0x2028ca[_0x987f('0x1c')][_0x987f('0x1e')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x987f('0x1f')]['fn']('IF',db['sequelize'][_0x987f('0x20')](_0x987f('0x21')))),_0x987f('0x22')]]})[_0x987f('0x23')](function(_0x13dec2){logger[_0x987f('0x10')]('GetVoiceQueueRtPauses',_0x2028ca);logger[_0x987f('0x13')](_0x987f('0x1a'),_0x2028ca,JSON[_0x987f('0x14')](_0x13dec2));_0x795925(_0x13dec2);})[_0x987f('0x19')](function(_0x390e2f){logger[_0x987f('0x15')](_0x987f('0x1a'),_0x390e2f[_0x987f('0x17')],_0x2028ca);_0xbf39fd(_0x38ea3c[_0x987f('0x15')](0x1f4,_0x390e2f[_0x987f('0x17')]));});});};
\ No newline at end of file
+var _0x1d45=['`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','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','code','message','result','catch','GetVoiceQueueRtPauses','findAll','options','raw','sequelize','COUNT','literal'];(function(_0x3c6096,_0x81b39d){var _0x37bd40=function(_0xa2b22f){while(--_0xa2b22f){_0x3c6096['push'](_0x3c6096['shift']());}};_0x37bd40(++_0x81b39d);}(_0x1d45,0x175));var _0x51d4=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x1d45[_0x1992f1];return _0x413dfe;};'use strict';var _=require(_0x51d4('0x0'));var util=require(_0x51d4('0x1'));var moment=require('moment');var BPromise=require(_0x51d4('0x2'));var rs=require(_0x51d4('0x3'));var fs=require('fs');var Redis=require(_0x51d4('0x4'));var db=require(_0x51d4('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x51d4('0x6'));var jayson=require(_0x51d4('0x7'));var client=jayson['client'][_0x51d4('0x8')]({'port':0x232a});config[_0x51d4('0x9')]=_[_0x51d4('0xa')](config[_0x51d4('0x9')],{'host':_0x51d4('0xb'),'port':0x18eb});var socket=require(_0x51d4('0xc'))(new Redis(config[_0x51d4('0x9')]));require(_0x51d4('0xd'))[_0x51d4('0xe')](socket);function respondWithRpcPromise(_0x3cc9dd,_0x1480c2,_0x5a18ae){return new BPromise(function(_0x35243e,_0x165dfb){return client[_0x51d4('0xf')](_0x3cc9dd,_0x5a18ae)['then'](function(_0x426e28){logger[_0x51d4('0x10')](_0x51d4('0x11'),_0x1480c2,_0x51d4('0x12'));logger[_0x51d4('0x13')](_0x51d4('0x14'),_0x1480c2,_0x51d4('0x12'),JSON[_0x51d4('0x15')](_0x426e28));if(_0x426e28[_0x51d4('0x16')]){if(_0x426e28[_0x51d4('0x16')][_0x51d4('0x17')]===0x1f4){logger[_0x51d4('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1480c2,_0x426e28[_0x51d4('0x16')][_0x51d4('0x18')]);return _0x165dfb(_0x426e28['error']['message']);}logger[_0x51d4('0x16')](_0x51d4('0x11'),_0x1480c2,_0x426e28[_0x51d4('0x16')]['message']);return _0x35243e(_0x426e28[_0x51d4('0x16')][_0x51d4('0x18')]);}else{logger[_0x51d4('0x10')](_0x51d4('0x11'),_0x1480c2,'request\x20sent');_0x35243e(_0x426e28[_0x51d4('0x19')][_0x51d4('0x18')]);}})[_0x51d4('0x1a')](function(_0x26719e){logger[_0x51d4('0x16')](_0x51d4('0x11'),_0x1480c2,_0x26719e);_0x165dfb(_0x26719e);});});}exports[_0x51d4('0x1b')]=function(_0x43199e){var _0x2f8d13=this;return new Promise(function(_0x391441,_0x36b63b){return db['UserVoiceQueueRt'][_0x51d4('0x1c')]({'raw':_0x43199e[_0x51d4('0x1d')]?_0x43199e[_0x51d4('0x1d')][_0x51d4('0x1e')]===undefined?!![]:![]:!![],'where':_0x43199e[_0x51d4('0x1d')]?_0x43199e[_0x51d4('0x1d')]['where']||null:null,'attributes':[[db[_0x51d4('0x1f')]['fn'](_0x51d4('0x20'),db['sequelize']['fn']('IF',db[_0x51d4('0x1f')][_0x51d4('0x21')](_0x51d4('0x22')))),_0x51d4('0x23')]]})[_0x51d4('0x24')](function(_0x5628be){logger[_0x51d4('0x10')]('GetVoiceQueueRtPauses',_0x43199e);logger['debug'](_0x51d4('0x1b'),_0x43199e,JSON[_0x51d4('0x15')](_0x5628be));_0x391441(_0x5628be);})[_0x51d4('0x1a')](function(_0x384da9){logger['error'](_0x51d4('0x1b'),_0x384da9[_0x51d4('0x18')],_0x43199e);_0x36b63b(_0x2f8d13['error'](0x1f4,_0x384da9['message']));});});};
\ No newline at end of file
index 0043d58..4759a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b3d=['removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','remove'];(function(_0x2706da,_0x3856f5){var _0x3ba87e=function(_0x479a79){while(--_0x479a79){_0x2706da['push'](_0x2706da['shift']());}};_0x3ba87e(++_0x3856f5);}(_0x0b3d,0x76));var _0xd0b3=function(_0x3c4d2a,_0x1e5816){_0x3c4d2a=_0x3c4d2a-0x0;var _0x596a0b=_0x0b3d[_0x3c4d2a];return _0x596a0b;};'use strict';var UserVoiceQueueRtEvents=require(_0xd0b3('0x0'));var events=['save',_0xd0b3('0x1'),'update'];function createListener(_0x44585b,_0x5cd26e){return function(_0x2e82a6){_0x5cd26e['emit'](_0x44585b,_0x2e82a6);};}function removeListener(_0x372f08,_0x50faaa){return function(){UserVoiceQueueRtEvents[_0xd0b3('0x2')](_0x372f08,_0x50faaa);};}exports[_0xd0b3('0x3')]=function(_0x5b80df){for(var _0x2968c9=0x0,_0x5bc883=events[_0xd0b3('0x4')];_0x2968c9<_0x5bc883;_0x2968c9++){var _0x5f3196=events[_0x2968c9];var _0x5ab5b2=createListener(_0xd0b3('0x5')+_0x5f3196,_0x5b80df);UserVoiceQueueRtEvents['on'](_0x5f3196,_0x5ab5b2);}};
\ No newline at end of file
+var _0x79bf=['register','length','userVoiceQueueRt:','save','update','emit','removeListener'];(function(_0x549b29,_0x2e2b00){var _0x2b813f=function(_0x43234f){while(--_0x43234f){_0x549b29['push'](_0x549b29['shift']());}};_0x2b813f(++_0x2e2b00);}(_0x79bf,0x1df));var _0xf79b=function(_0x452c06,_0x2d6a45){_0x452c06=_0x452c06-0x0;var _0x3c4e54=_0x79bf[_0x452c06];return _0x3c4e54;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xf79b('0x0'),'remove',_0xf79b('0x1')];function createListener(_0x4fc21b,_0x41c72b){return function(_0x142a13){_0x41c72b[_0xf79b('0x2')](_0x4fc21b,_0x142a13);};}function removeListener(_0x193fad,_0x44bff1){return function(){UserVoiceQueueRtEvents[_0xf79b('0x3')](_0x193fad,_0x44bff1);};}exports[_0xf79b('0x4')]=function(_0x5de87a){for(var _0x377b85=0x0,_0x44e02b=events[_0xf79b('0x5')];_0x377b85<_0x44e02b;_0x377b85++){var _0x5cf15e=events[_0x377b85];var _0x290738=createListener(_0xf79b('0x6')+_0x5cf15e,_0x5de87a);UserVoiceQueueRtEvents['on'](_0x5cf15e,_0x290738);}};
\ No newline at end of file
index 5e8313e..87b6ab7 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(_0x2ce286,_0x4104e4){var _0x4c471f=function(_0x43326c){while(--_0x43326c){_0x2ce286['push'](_0x2ce286['shift']());}};_0x4c471f(++_0x4104e4);}(_0x9c44,0x178));var _0x49c4=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x9c44[_0x2d2c16];return _0x53f2fb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x4fa6e9,_0x998200){var _0x54e9cd=function(_0x23fd8e){while(--_0x23fd8e){_0x4fa6e9['push'](_0x4fa6e9['shift']());}};_0x54e9cd(++_0x998200);}(_0xe706,0xa3));var _0x6e70=function(_0x546895,_0xb414da){_0x546895=_0x546895-0x0;var _0x3b5a09=_0xe706[_0x546895];return _0x3b5a09;};'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 7c0d757..cac9e54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2599=['exports','sequelize'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x2599,0x117));var _0x9259=function(_0x15d7bc,_0x82b17){_0x15d7bc=_0x15d7bc-0x0;var _0x1866a7=_0x2599[_0x15d7bc];return _0x1866a7;};'use strict';var Sequelize=require(_0x9259('0x0'));module[_0x9259('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x20c4=['sequelize','exports','INTEGER'];(function(_0x1e262b,_0x1b03fe){var _0xdfab9a=function(_0x139ffb){while(--_0x139ffb){_0x1e262b['push'](_0x1e262b['shift']());}};_0xdfab9a(++_0x1b03fe);}(_0x20c4,0xbd));var _0x420c=function(_0x3f3cd0,_0xff53da){_0x3f3cd0=_0x3f3cd0-0x0;var _0x5ec388=_0x20c4[_0x3f3cd0];return _0x5ec388;};'use strict';var Sequelize=require(_0x420c('0x0'));module[_0x420c('0x1')]={'penalty':{'type':Sequelize[_0x420c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index f7fc82f..2e8dad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c45=['request-promise','path','rimraf','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','moment','bluebird'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2c45,0x8a));var _0x52c4=function(_0x28b50f,_0x179872){_0x28b50f=_0x28b50f-0x0;var _0x59a7d2=_0x2c45[_0x28b50f];return _0x59a7d2;};'use strict';var _=require(_0x52c4('0x0'));var util=require(_0x52c4('0x1'));var logger=require(_0x52c4('0x2'))('api');var moment=require(_0x52c4('0x3'));var BPromise=require(_0x52c4('0x4'));var rp=require(_0x52c4('0x5'));var fs=require('fs');var path=require(_0x52c4('0x6'));var rimraf=require(_0x52c4('0x7'));var config=require('../../config/environment');var attributes=require(_0x52c4('0x8'));module[_0x52c4('0x9')]=function(_0x49d1da,_0xf540c7){return _0x49d1da[_0x52c4('0xa')](_0x52c4('0xb'),attributes,{'tableName':_0x52c4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4015=['./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','path','rimraf'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x4015,0x13d));var _0x5401=function(_0x3d2e4b,_0x1f6653){_0x3d2e4b=_0x3d2e4b-0x0;var _0x509e78=_0x4015[_0x3d2e4b];return _0x509e78;};'use strict';var _=require(_0x5401('0x0'));var util=require(_0x5401('0x1'));var logger=require(_0x5401('0x2'))(_0x5401('0x3'));var moment=require(_0x5401('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5401('0x5'));var rimraf=require(_0x5401('0x6'));var config=require('../../config/environment');var attributes=require(_0x5401('0x7'));module[_0x5401('0x8')]=function(_0x41bc44,_0x21f1e4){return _0x41bc44[_0x5401('0x9')](_0x5401('0xa'),attributes,{'tableName':_0x5401('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ddf220..f005fd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ad1=['util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','message','info','catch','lodash'];(function(_0x372515,_0xdd11f){var _0xa3bf4e=function(_0x212cc8){while(--_0x212cc8){_0x372515['push'](_0x372515['shift']());}};_0xa3bf4e(++_0xdd11f);}(_0x4ad1,0x68));var _0x14ad=function(_0x393f0e,_0x5cf860){_0x393f0e=_0x393f0e-0x0;var _0x4f5333=_0x4ad1[_0x393f0e];return _0x4f5333;};'use strict';var _=require(_0x14ad('0x0'));var util=require(_0x14ad('0x1'));var moment=require('moment');var BPromise=require(_0x14ad('0x2'));var rs=require(_0x14ad('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x14ad('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x14ad('0x5'))(_0x14ad('0x6'));var config=require(_0x14ad('0x7'));var jayson=require(_0x14ad('0x8'));var client=jayson[_0x14ad('0x9')][_0x14ad('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e3e6d,_0x49b81b,_0x290ef1){return new BPromise(function(_0x57ec07,_0x46bd9a){return client[_0x14ad('0xb')](_0x4e3e6d,_0x290ef1)[_0x14ad('0xc')](function(_0x2d59b8){logger['info'](_0x14ad('0xd'),_0x49b81b,_0x14ad('0xe'));logger[_0x14ad('0xf')](_0x14ad('0x10'),_0x49b81b,'request\x20sent',JSON['stringify'](_0x2d59b8));if(_0x2d59b8['error']){if(_0x2d59b8['error']['code']===0x1f4){logger[_0x14ad('0x11')](_0x14ad('0xd'),_0x49b81b,_0x2d59b8['error'][_0x14ad('0x12')]);return _0x46bd9a(_0x2d59b8['error'][_0x14ad('0x12')]);}logger[_0x14ad('0x11')](_0x14ad('0xd'),_0x49b81b,_0x2d59b8[_0x14ad('0x11')][_0x14ad('0x12')]);return _0x57ec07(_0x2d59b8[_0x14ad('0x11')][_0x14ad('0x12')]);}else{logger[_0x14ad('0x13')](_0x14ad('0xd'),_0x49b81b,_0x14ad('0xe'));_0x57ec07(_0x2d59b8['result'][_0x14ad('0x12')]);}})[_0x14ad('0x14')](function(_0x38af6e){logger[_0x14ad('0x11')]('UserWhatsappQueue,\x20%s,\x20%s',_0x49b81b,_0x38af6e);_0x46bd9a(_0x38af6e);});});}
\ No newline at end of file
+var _0xbe0f=['../../config/environment','jayson/promise','client','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xbe0f,0xa0));var _0xfbe0=function(_0x5a1e9e,_0x40e663){_0x5a1e9e=_0x5a1e9e-0x0;var _0x26ece2=_0xbe0f[_0x5a1e9e];return _0x26ece2;};'use strict';var _=require('lodash');var util=require(_0xfbe0('0x0'));var moment=require(_0xfbe0('0x1'));var BPromise=require(_0xfbe0('0x2'));var rs=require(_0xfbe0('0x3'));var fs=require('fs');var Redis=require(_0xfbe0('0x4'));var db=require(_0xfbe0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfbe0('0x6'))(_0xfbe0('0x7'));var config=require(_0xfbe0('0x8'));var jayson=require(_0xfbe0('0x9'));var client=jayson[_0xfbe0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c87d0,_0x32a551,_0x29bada){return new BPromise(function(_0x188578,_0x349f06){return client[_0xfbe0('0xb')](_0x1c87d0,_0x29bada)[_0xfbe0('0xc')](function(_0x2f7bfb){logger[_0xfbe0('0xd')](_0xfbe0('0xe'),_0x32a551,'request\x20sent');logger[_0xfbe0('0xf')](_0xfbe0('0x10'),_0x32a551,_0xfbe0('0x11'),JSON[_0xfbe0('0x12')](_0x2f7bfb));if(_0x2f7bfb[_0xfbe0('0x13')]){if(_0x2f7bfb['error'][_0xfbe0('0x14')]===0x1f4){logger[_0xfbe0('0x13')](_0xfbe0('0xe'),_0x32a551,_0x2f7bfb[_0xfbe0('0x13')][_0xfbe0('0x15')]);return _0x349f06(_0x2f7bfb[_0xfbe0('0x13')][_0xfbe0('0x15')]);}logger[_0xfbe0('0x13')]('UserWhatsappQueue,\x20%s,\x20%s',_0x32a551,_0x2f7bfb[_0xfbe0('0x13')][_0xfbe0('0x15')]);return _0x188578(_0x2f7bfb[_0xfbe0('0x13')][_0xfbe0('0x15')]);}else{logger[_0xfbe0('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x32a551,_0xfbe0('0x11'));_0x188578(_0x2f7bfb[_0xfbe0('0x16')]['message']);}})[_0xfbe0('0x17')](function(_0x4c8519){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x32a551,_0x4c8519);_0x349f06(_0x4c8519);});});}
\ No newline at end of file
index ee31c4e..587e5fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d4=['exports','multer','express','Router','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x44d4,0x161));var _0x444d=function(_0x3abe6a,_0xdd7b1a){_0x3abe6a=_0x3abe6a-0x0;var _0x2fc39e=_0x44d4[_0x3abe6a];return _0x2fc39e;};'use strict';var multer=require(_0x444d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x444d('0x1'));var router=express[_0x444d('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x444d('0x3'));var controller=require(_0x444d('0x4'));router[_0x444d('0x5')]('/',auth[_0x444d('0x6')](),controller[_0x444d('0x7')]);router[_0x444d('0x5')](_0x444d('0x8'),auth['isAuthenticated'](),controller[_0x444d('0x9')]);router['post']('/',auth[_0x444d('0x6')](),controller[_0x444d('0xa')]);router[_0x444d('0xb')](_0x444d('0x8'),auth[_0x444d('0x6')](),controller[_0x444d('0xc')]);router[_0x444d('0xd')](_0x444d('0x8'),auth[_0x444d('0x6')](),controller[_0x444d('0xe')]);module[_0x444d('0xf')]=router;
\ No newline at end of file
+var _0x99e9=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./variable.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x43ac71,_0x2263d7){var _0xc0afc4=function(_0x3f4474){while(--_0x3f4474){_0x43ac71['push'](_0x43ac71['shift']());}};_0xc0afc4(++_0x2263d7);}(_0x99e9,0xb4));var _0x999e=function(_0x446f11,_0x95cf21){_0x446f11=_0x446f11-0x0;var _0x385cb5=_0x99e9[_0x446f11];return _0x385cb5;};'use strict';var multer=require('multer');var util=require(_0x999e('0x0'));var path=require(_0x999e('0x1'));var timeout=require(_0x999e('0x2'));var express=require(_0x999e('0x3'));var router=express['Router']();var fs_extra=require(_0x999e('0x4'));var auth=require(_0x999e('0x5'));var interaction=require(_0x999e('0x6'));var config=require('../../config/environment');var controller=require(_0x999e('0x7'));router['get']('/',auth[_0x999e('0x8')](),controller[_0x999e('0x9')]);router[_0x999e('0xa')](_0x999e('0xb'),auth['isAuthenticated'](),controller[_0x999e('0xc')]);router[_0x999e('0xd')]('/',auth[_0x999e('0x8')](),controller[_0x999e('0xe')]);router[_0x999e('0xf')](_0x999e('0xb'),auth[_0x999e('0x8')](),controller[_0x999e('0x10')]);router[_0x999e('0x11')](_0x999e('0xb'),auth[_0x999e('0x8')](),controller[_0x999e('0x12')]);module[_0x999e('0x13')]=router;
\ No newline at end of file
index fdb95b8..c5c71d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3c4=['STRING','name','sequelize'];(function(_0x37dc01,_0x5e2a1e){var _0x60b07b=function(_0x18d2c7){while(--_0x18d2c7){_0x37dc01['push'](_0x37dc01['shift']());}};_0x60b07b(++_0x5e2a1e);}(_0xc3c4,0xf5));var _0x4c3c=function(_0xdb5e6,_0x4b5902){_0xdb5e6=_0xdb5e6-0x0;var _0x324ad5=_0xc3c4[_0xdb5e6];return _0x324ad5;};'use strict';var Sequelize=require(_0x4c3c('0x0'));module['exports']={'name':{'type':Sequelize[_0x4c3c('0x1')],'unique':_0x4c3c('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4c3c('0x1')]}};
\ No newline at end of file
+var _0x0541=['exports','STRING','name'];(function(_0x406fbb,_0x1093e5){var _0x8e921d=function(_0x410517){while(--_0x410517){_0x406fbb['push'](_0x406fbb['shift']());}};_0x8e921d(++_0x1093e5);}(_0x0541,0x19e));var _0x1054=function(_0x335b77,_0x273122){_0x335b77=_0x335b77-0x0;var _0x27114a=_0x0541[_0x335b77];return _0x27114a;};'use strict';var Sequelize=require('sequelize');module[_0x1054('0x0')]={'name':{'type':Sequelize[_0x1054('0x1')],'unique':_0x1054('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1054('0x1')]}};
\ No newline at end of file
index b8ef6ff..b9bda21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd674=['reject','update','then','destroy','get','Variables','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','length','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','Variable','count','includeAll','findAll','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply'];(function(_0xe7281f,_0x2d77c3){var _0x90dc99=function(_0x1e335b){while(--_0x1e335b){_0xe7281f['push'](_0xe7281f['shift']());}};_0x90dc99(++_0x2d77c3);}(_0xd674,0xc7));var _0x4d67=function(_0x53fb44,_0x36e73e){_0x53fb44=_0x53fb44-0x0;var _0x5a0790=_0xd674[_0x53fb44];return _0x5a0790;};'use strict';var emlformat=require(_0x4d67('0x0'));var rimraf=require(_0x4d67('0x1'));var zipdir=require(_0x4d67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4d67('0x3'));var moment=require('moment');var BPromise=require(_0x4d67('0x4'));var Mustache=require(_0x4d67('0x5'));var util=require(_0x4d67('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4d67('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4d67('0x8'));var _=require(_0x4d67('0x9'));var squel=require(_0x4d67('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4d67('0xb'));var toCsv=require(_0x4d67('0x7'));var querystring=require('querystring');var Papa=require(_0x4d67('0xc'));var Redis=require(_0x4d67('0xd'));var authService=require(_0x4d67('0xe'));var qs=require(_0x4d67('0xf'));var as=require(_0x4d67('0x10'));var hardwareService=require(_0x4d67('0x11'));var logger=require(_0x4d67('0x12'))(_0x4d67('0x13'));var utils=require('../../config/utils');var config=require(_0x4d67('0x14'));var licenseUtil=require(_0x4d67('0x15'));var db=require(_0x4d67('0x16'))['db'];function respondWithStatusCode(_0x236ce8,_0x29c51d){_0x29c51d=_0x29c51d||0xcc;return function(_0x1ba47d){if(_0x1ba47d){return _0x236ce8[_0x4d67('0x17')](_0x29c51d);}return _0x236ce8[_0x4d67('0x18')](_0x29c51d)[_0x4d67('0x19')]();};}function respondWithResult(_0x26b804,_0x1433a5){_0x1433a5=_0x1433a5||0xc8;return function(_0x39a691){if(_0x39a691){return _0x26b804[_0x4d67('0x18')](_0x1433a5)[_0x4d67('0x1a')](_0x39a691);}};}function respondWithFilteredResult(_0x570027,_0x2ca3fb){return function(_0x46943d){if(_0x46943d){var _0x4213e3=typeof _0x2ca3fb[_0x4d67('0x1b')]===_0x4d67('0x1c')&&typeof _0x2ca3fb['limit']===_0x4d67('0x1c');var _0x307bf3=_0x46943d['count'];var _0xf6908d=_0x4213e3?0x0:_0x2ca3fb[_0x4d67('0x1b')];var _0x302025=_0x4213e3?_0x46943d['count']:_0x2ca3fb['offset']+_0x2ca3fb[_0x4d67('0x1d')];var _0x2168d4;if(_0x302025>=_0x307bf3){_0x302025=_0x307bf3;_0x2168d4=0xc8;}else{_0x2168d4=0xce;}_0x570027[_0x4d67('0x18')](_0x2168d4);return _0x570027['set'](_0x4d67('0x1e'),_0xf6908d+'-'+_0x302025+'/'+_0x307bf3)[_0x4d67('0x1a')](_0x46943d);}return null;};}function patchUpdates(_0x4b6473){return function(_0x25d79c){try{jsonpatch[_0x4d67('0x1f')](_0x25d79c,_0x4b6473,!![]);}catch(_0x37db3c){return BPromise[_0x4d67('0x20')](_0x37db3c);}return _0x25d79c['save']();};}function saveUpdates(_0x26a337,_0x218ec0){return function(_0x5c2acd){if(_0x5c2acd){return _0x5c2acd[_0x4d67('0x21')](_0x26a337)[_0x4d67('0x22')](function(_0x6fa7c1){return _0x6fa7c1;});}return null;};}function removeEntity(_0x397995,_0xb43090){return function(_0x3ae7fb){if(_0x3ae7fb){return _0x3ae7fb[_0x4d67('0x23')]()['then'](function(){var _0x1706d5=_0x3ae7fb[_0x4d67('0x24')]({'plain':!![]});var _0xc9999a=_0x4d67('0x25');return db[_0x4d67('0x26')][_0x4d67('0x23')]({'where':{'type':_0xc9999a,'resourceId':_0x1706d5['id']}})[_0x4d67('0x22')](function(){return _0x3ae7fb;});})[_0x4d67('0x22')](function(){_0x397995[_0x4d67('0x18')](0xcc)[_0x4d67('0x19')]();});}};}function handleEntityNotFound(_0x5374ad,_0x53dea3){return function(_0x187339){if(!_0x187339){_0x5374ad['sendStatus'](0x194);}return _0x187339;};}function handleError(_0x3a9a1d,_0x49e093){_0x49e093=_0x49e093||0x1f4;return function(_0x315ef9){logger['error'](_0x315ef9[_0x4d67('0x27')]);if(_0x315ef9[_0x4d67('0x28')]){delete _0x315ef9['name'];}_0x3a9a1d[_0x4d67('0x18')](_0x49e093)[_0x4d67('0x29')](_0x315ef9);};}exports['index']=function(_0x1c79f8,_0x386ba1){var _0x588bbf={},_0x3c9935={},_0x5df07a={'count':0x0,'rows':[]};var _0x1e082f=_[_0x4d67('0x2a')](db['Variable'][_0x4d67('0x2b')],function(_0x22fc77){return{'name':_0x22fc77[_0x4d67('0x2c')],'type':_0x22fc77[_0x4d67('0x2d')]['key']};});_0x3c9935[_0x4d67('0x2e')]=_[_0x4d67('0x2a')](_0x1e082f,'name');_0x3c9935[_0x4d67('0x2f')]=_[_0x4d67('0x30')](_0x1c79f8['query']);_0x3c9935['filters']=_[_0x4d67('0x31')](_0x3c9935[_0x4d67('0x2e')],_0x3c9935['query']);_0x588bbf[_0x4d67('0x32')]=_[_0x4d67('0x31')](_0x3c9935[_0x4d67('0x2e')],qs['fields'](_0x1c79f8[_0x4d67('0x2f')]['fields']));_0x588bbf[_0x4d67('0x32')]=_0x588bbf[_0x4d67('0x32')][_0x4d67('0x33')]?_0x588bbf[_0x4d67('0x32')]:_0x3c9935[_0x4d67('0x2e')];if(!_0x1c79f8[_0x4d67('0x2f')]['hasOwnProperty'](_0x4d67('0x34'))){_0x588bbf['limit']=qs[_0x4d67('0x1d')](_0x1c79f8[_0x4d67('0x2f')]['limit']);_0x588bbf[_0x4d67('0x1b')]=qs[_0x4d67('0x1b')](_0x1c79f8['query'][_0x4d67('0x1b')]);}_0x588bbf[_0x4d67('0x35')]=qs[_0x4d67('0x36')](_0x1c79f8[_0x4d67('0x2f')]['sort']);_0x588bbf[_0x4d67('0x37')]=qs[_0x4d67('0x38')](_[_0x4d67('0x39')](_0x1c79f8[_0x4d67('0x2f')],_0x3c9935['filters']),_0x1e082f);if(_0x1c79f8[_0x4d67('0x2f')]['filter']){_0x588bbf['where']=_[_0x4d67('0x3a')](_0x588bbf[_0x4d67('0x37')],{'$or':_[_0x4d67('0x2a')](_0x1e082f,function(_0x425a6f){if(_0x425a6f[_0x4d67('0x2d')]!==_0x4d67('0x3b')){var _0x2f771c={};_0x2f771c[_0x425a6f[_0x4d67('0x28')]]={'$like':'%'+_0x1c79f8['query'][_0x4d67('0x3c')]+'%'};return _0x2f771c;}})});}_0x588bbf=_['merge']({},_0x588bbf,_0x1c79f8[_0x4d67('0x3d')]);var _0x36318f={'where':_0x588bbf[_0x4d67('0x37')]};return db[_0x4d67('0x3e')][_0x4d67('0x3f')](_0x36318f)[_0x4d67('0x22')](function(_0x20bc62){_0x5df07a[_0x4d67('0x3f')]=_0x20bc62;if(_0x1c79f8[_0x4d67('0x2f')][_0x4d67('0x40')]){_0x588bbf['include']=[{'all':!![]}];}return db['Variable'][_0x4d67('0x41')](_0x588bbf);})[_0x4d67('0x22')](function(_0x4a4465){_0x5df07a['rows']=_0x4a4465;return _0x5df07a;})[_0x4d67('0x22')](respondWithFilteredResult(_0x386ba1,_0x588bbf))[_0x4d67('0x42')](handleError(_0x386ba1,null));};exports[_0x4d67('0x43')]=function(_0x18d080,_0x318685){var _0x4cd929={'raw':!![],'where':{'id':_0x18d080[_0x4d67('0x44')]['id']}},_0xfd4dad={};_0xfd4dad['model']=_[_0x4d67('0x30')](db[_0x4d67('0x3e')][_0x4d67('0x2b')]);_0xfd4dad[_0x4d67('0x2f')]=_[_0x4d67('0x30')](_0x18d080[_0x4d67('0x2f')]);_0xfd4dad['filters']=_['intersection'](_0xfd4dad[_0x4d67('0x2e')],_0xfd4dad[_0x4d67('0x2f')]);_0x4cd929[_0x4d67('0x32')]=_[_0x4d67('0x31')](_0xfd4dad['model'],qs['fields'](_0x18d080[_0x4d67('0x2f')]['fields']));_0x4cd929['attributes']=_0x4cd929['attributes'][_0x4d67('0x33')]?_0x4cd929[_0x4d67('0x32')]:_0xfd4dad[_0x4d67('0x2e')];if(_0x18d080['query'][_0x4d67('0x40')]){_0x4cd929[_0x4d67('0x45')]=[{'all':!![]}];}_0x4cd929=_[_0x4d67('0x3a')]({},_0x4cd929,_0x18d080[_0x4d67('0x3d')]);return db['Variable'][_0x4d67('0x46')](_0x4cd929)[_0x4d67('0x22')](handleEntityNotFound(_0x318685,null))[_0x4d67('0x22')](respondWithResult(_0x318685,null))['catch'](handleError(_0x318685,null));};exports[_0x4d67('0x47')]=function(_0xcc48b7,_0x3e9e02){return db['Variable'][_0x4d67('0x47')](_0xcc48b7['body'],{})[_0x4d67('0x22')](function(_0xe340df){var _0x13aa6f=_0xcc48b7[_0x4d67('0x48')][_0x4d67('0x24')]({'plain':!![]});if(!_0x13aa6f)throw new Error(_0x4d67('0x49'));if(_0x13aa6f[_0x4d67('0x4a')]===_0x4d67('0x48')){var _0x482a6a=_0xe340df[_0x4d67('0x24')]({'plain':!![]});var _0x278200=_0x4d67('0x25');return db[_0x4d67('0x4b')]['find']({'where':{'name':_0x278200,'userProfileId':_0x13aa6f['userProfileId']},'raw':!![]})['then'](function(_0x1a890b){if(_0x1a890b&&_0x1a890b[_0x4d67('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0x482a6a['name'],'resourceId':_0x482a6a['id'],'type':_0x1a890b[_0x4d67('0x28')],'sectionId':_0x1a890b['id']},{})['then'](function(){return _0xe340df;});}else{return _0xe340df;}})[_0x4d67('0x42')](function(_0x30619f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x30619f);throw _0x30619f;});}return _0xe340df;})['then'](respondWithResult(_0x3e9e02,0xc9))[_0x4d67('0x42')](handleError(_0x3e9e02,null));};exports[_0x4d67('0x21')]=function(_0x5283f3,_0x2eeb5c){if(_0x5283f3['body']['id']){delete _0x5283f3['body']['id'];}return db[_0x4d67('0x3e')][_0x4d67('0x46')]({'where':{'id':_0x5283f3[_0x4d67('0x44')]['id']}})[_0x4d67('0x22')](handleEntityNotFound(_0x2eeb5c,null))[_0x4d67('0x22')](saveUpdates(_0x5283f3['body'],null))[_0x4d67('0x22')](respondWithResult(_0x2eeb5c,null))[_0x4d67('0x42')](handleError(_0x2eeb5c,null));};exports['destroy']=function(_0x20021f,_0x567cb9){return db['Variable'][_0x4d67('0x46')]({'where':{'id':_0x20021f[_0x4d67('0x44')]['id']}})[_0x4d67('0x22')](handleEntityNotFound(_0x567cb9,null))[_0x4d67('0x22')](removeEntity(_0x567cb9,null))['catch'](handleError(_0x567cb9,null));};
\ No newline at end of file
+var _0x4f2f=['rows','show','params','includeAll','options','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Variables','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','sendStatus','stack','name','send','index','map','Variable','rawAttributes','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll'];(function(_0x1cec8f,_0xd5474c){var _0x497634=function(_0x2a6499){while(--_0x2a6499){_0x1cec8f['push'](_0x1cec8f['shift']());}};_0x497634(++_0xd5474c);}(_0x4f2f,0x1b0));var _0xf4f2=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0x4f2f[_0x42bc91];return _0x3f5507;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf4f2('0x0'));var jsonpatch=require(_0xf4f2('0x1'));var rp=require(_0xf4f2('0x2'));var moment=require('moment');var BPromise=require(_0xf4f2('0x3'));var Mustache=require(_0xf4f2('0x4'));var util=require(_0xf4f2('0x5'));var path=require(_0xf4f2('0x6'));var sox=require(_0xf4f2('0x7'));var csv=require('to-csv');var ejs=require(_0xf4f2('0x8'));var fs=require('fs');var fs_extra=require(_0xf4f2('0x9'));var _=require(_0xf4f2('0xa'));var squel=require(_0xf4f2('0xb'));var crypto=require(_0xf4f2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf4f2('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf4f2('0xe'));var Papa=require(_0xf4f2('0xf'));var Redis=require(_0xf4f2('0x10'));var authService=require(_0xf4f2('0x11'));var qs=require(_0xf4f2('0x12'));var as=require(_0xf4f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf4f2('0x14'))(_0xf4f2('0x15'));var utils=require(_0xf4f2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf4f2('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b612e,_0x5cf4ab){_0x5cf4ab=_0x5cf4ab||0xcc;return function(_0x5d1d93){if(_0x5d1d93){return _0x2b612e['sendStatus'](_0x5cf4ab);}return _0x2b612e['status'](_0x5cf4ab)[_0xf4f2('0x18')]();};}function respondWithResult(_0x5667cf,_0x55d9f5){_0x55d9f5=_0x55d9f5||0xc8;return function(_0x432159){if(_0x432159){return _0x5667cf[_0xf4f2('0x19')](_0x55d9f5)[_0xf4f2('0x1a')](_0x432159);}};}function respondWithFilteredResult(_0x16bd43,_0x1ab11d){return function(_0x1d0918){if(_0x1d0918){var _0x4da790=typeof _0x1ab11d['offset']==='undefined'&&typeof _0x1ab11d[_0xf4f2('0x1b')]===_0xf4f2('0x1c');var _0x397ce0=_0x1d0918[_0xf4f2('0x1d')];var _0x5d9682=_0x4da790?0x0:_0x1ab11d[_0xf4f2('0x1e')];var _0x47cb8c=_0x4da790?_0x1d0918['count']:_0x1ab11d[_0xf4f2('0x1e')]+_0x1ab11d[_0xf4f2('0x1b')];var _0x511356;if(_0x47cb8c>=_0x397ce0){_0x47cb8c=_0x397ce0;_0x511356=0xc8;}else{_0x511356=0xce;}_0x16bd43[_0xf4f2('0x19')](_0x511356);return _0x16bd43[_0xf4f2('0x1f')](_0xf4f2('0x20'),_0x5d9682+'-'+_0x47cb8c+'/'+_0x397ce0)[_0xf4f2('0x1a')](_0x1d0918);}return null;};}function patchUpdates(_0xd4b915){return function(_0x570a97){try{jsonpatch[_0xf4f2('0x21')](_0x570a97,_0xd4b915,!![]);}catch(_0x5b03bb){return BPromise[_0xf4f2('0x22')](_0x5b03bb);}return _0x570a97[_0xf4f2('0x23')]();};}function saveUpdates(_0x453634,_0x4f9b13){return function(_0x12fdfb){if(_0x12fdfb){return _0x12fdfb[_0xf4f2('0x24')](_0x453634)[_0xf4f2('0x25')](function(_0x43542e){return _0x43542e;});}return null;};}function removeEntity(_0x527a97,_0x1f1339){return function(_0x24e211){if(_0x24e211){return _0x24e211[_0xf4f2('0x26')]()['then'](function(){var _0x4ae799=_0x24e211['get']({'plain':!![]});var _0x28996b='Variables';return db[_0xf4f2('0x27')][_0xf4f2('0x26')]({'where':{'type':_0x28996b,'resourceId':_0x4ae799['id']}})[_0xf4f2('0x25')](function(){return _0x24e211;});})[_0xf4f2('0x25')](function(){_0x527a97[_0xf4f2('0x19')](0xcc)[_0xf4f2('0x18')]();});}};}function handleEntityNotFound(_0x22a9ee,_0xf38fc6){return function(_0x3c45ee){if(!_0x3c45ee){_0x22a9ee[_0xf4f2('0x28')](0x194);}return _0x3c45ee;};}function handleError(_0x20e0cc,_0x1d48c2){_0x1d48c2=_0x1d48c2||0x1f4;return function(_0x140709){logger['error'](_0x140709[_0xf4f2('0x29')]);if(_0x140709[_0xf4f2('0x2a')]){delete _0x140709['name'];}_0x20e0cc[_0xf4f2('0x19')](_0x1d48c2)[_0xf4f2('0x2b')](_0x140709);};}exports[_0xf4f2('0x2c')]=function(_0x588d1e,_0x27d9cd){var _0x470c16={},_0x1ef9fd={},_0xd91708={'count':0x0,'rows':[]};var _0x5de11f=_[_0xf4f2('0x2d')](db[_0xf4f2('0x2e')][_0xf4f2('0x2f')],function(_0x448f0d){return{'name':_0x448f0d['fieldName'],'type':_0x448f0d['type']['key']};});_0x1ef9fd[_0xf4f2('0x30')]=_[_0xf4f2('0x2d')](_0x5de11f,_0xf4f2('0x2a'));_0x1ef9fd[_0xf4f2('0x31')]=_[_0xf4f2('0x32')](_0x588d1e[_0xf4f2('0x31')]);_0x1ef9fd[_0xf4f2('0x33')]=_[_0xf4f2('0x34')](_0x1ef9fd[_0xf4f2('0x30')],_0x1ef9fd['query']);_0x470c16['attributes']=_[_0xf4f2('0x34')](_0x1ef9fd[_0xf4f2('0x30')],qs[_0xf4f2('0x35')](_0x588d1e['query'][_0xf4f2('0x35')]));_0x470c16['attributes']=_0x470c16[_0xf4f2('0x36')][_0xf4f2('0x37')]?_0x470c16['attributes']:_0x1ef9fd['model'];if(!_0x588d1e[_0xf4f2('0x31')]['hasOwnProperty'](_0xf4f2('0x38'))){_0x470c16[_0xf4f2('0x1b')]=qs['limit'](_0x588d1e[_0xf4f2('0x31')]['limit']);_0x470c16[_0xf4f2('0x1e')]=qs['offset'](_0x588d1e[_0xf4f2('0x31')][_0xf4f2('0x1e')]);}_0x470c16[_0xf4f2('0x39')]=qs['sort'](_0x588d1e['query'][_0xf4f2('0x3a')]);_0x470c16[_0xf4f2('0x3b')]=qs[_0xf4f2('0x33')](_[_0xf4f2('0x3c')](_0x588d1e[_0xf4f2('0x31')],_0x1ef9fd[_0xf4f2('0x33')]),_0x5de11f);if(_0x588d1e[_0xf4f2('0x31')][_0xf4f2('0x3d')]){_0x470c16[_0xf4f2('0x3b')]=_['merge'](_0x470c16[_0xf4f2('0x3b')],{'$or':_[_0xf4f2('0x2d')](_0x5de11f,function(_0xdad0ef){if(_0xdad0ef['type']!==_0xf4f2('0x3e')){var _0x4cdd83={};_0x4cdd83[_0xdad0ef[_0xf4f2('0x2a')]]={'$like':'%'+_0x588d1e[_0xf4f2('0x31')][_0xf4f2('0x3d')]+'%'};return _0x4cdd83;}})});}_0x470c16=_[_0xf4f2('0x3f')]({},_0x470c16,_0x588d1e['options']);var _0x1e6b02={'where':_0x470c16['where']};return db['Variable'][_0xf4f2('0x1d')](_0x1e6b02)[_0xf4f2('0x25')](function(_0x4df9dd){_0xd91708[_0xf4f2('0x1d')]=_0x4df9dd;if(_0x588d1e[_0xf4f2('0x31')]['includeAll']){_0x470c16[_0xf4f2('0x40')]=[{'all':!![]}];}return db['Variable'][_0xf4f2('0x41')](_0x470c16);})[_0xf4f2('0x25')](function(_0x862558){_0xd91708[_0xf4f2('0x42')]=_0x862558;return _0xd91708;})[_0xf4f2('0x25')](respondWithFilteredResult(_0x27d9cd,_0x470c16))['catch'](handleError(_0x27d9cd,null));};exports[_0xf4f2('0x43')]=function(_0x13394c,_0x50aff2){var _0x5b369e={'raw':!![],'where':{'id':_0x13394c[_0xf4f2('0x44')]['id']}},_0x5613d5={};_0x5613d5[_0xf4f2('0x30')]=_[_0xf4f2('0x32')](db[_0xf4f2('0x2e')]['rawAttributes']);_0x5613d5[_0xf4f2('0x31')]=_[_0xf4f2('0x32')](_0x13394c[_0xf4f2('0x31')]);_0x5613d5[_0xf4f2('0x33')]=_['intersection'](_0x5613d5[_0xf4f2('0x30')],_0x5613d5[_0xf4f2('0x31')]);_0x5b369e[_0xf4f2('0x36')]=_[_0xf4f2('0x34')](_0x5613d5[_0xf4f2('0x30')],qs['fields'](_0x13394c[_0xf4f2('0x31')][_0xf4f2('0x35')]));_0x5b369e[_0xf4f2('0x36')]=_0x5b369e[_0xf4f2('0x36')][_0xf4f2('0x37')]?_0x5b369e[_0xf4f2('0x36')]:_0x5613d5['model'];if(_0x13394c[_0xf4f2('0x31')][_0xf4f2('0x45')]){_0x5b369e[_0xf4f2('0x40')]=[{'all':!![]}];}_0x5b369e=_[_0xf4f2('0x3f')]({},_0x5b369e,_0x13394c[_0xf4f2('0x46')]);return db['Variable'][_0xf4f2('0x47')](_0x5b369e)[_0xf4f2('0x25')](handleEntityNotFound(_0x50aff2,null))[_0xf4f2('0x25')](respondWithResult(_0x50aff2,null))[_0xf4f2('0x48')](handleError(_0x50aff2,null));};exports[_0xf4f2('0x49')]=function(_0x294bc6,_0x10ff86){return db['Variable'][_0xf4f2('0x49')](_0x294bc6['body'],{})['then'](function(_0x56411a){var _0xc6ac3a=_0x294bc6[_0xf4f2('0x4a')]['get']({'plain':!![]});if(!_0xc6ac3a)throw new Error(_0xf4f2('0x4b'));if(_0xc6ac3a['role']===_0xf4f2('0x4a')){var _0x29a79f=_0x56411a['get']({'plain':!![]});var _0x245c0a=_0xf4f2('0x4c');return db[_0xf4f2('0x4d')][_0xf4f2('0x47')]({'where':{'name':_0x245c0a,'userProfileId':_0xc6ac3a[_0xf4f2('0x4e')]},'raw':!![]})[_0xf4f2('0x25')](function(_0x21e7d1){if(_0x21e7d1&&_0x21e7d1[_0xf4f2('0x4f')]===0x0){return db[_0xf4f2('0x27')][_0xf4f2('0x49')]({'name':_0x29a79f['name'],'resourceId':_0x29a79f['id'],'type':_0x21e7d1['name'],'sectionId':_0x21e7d1['id']},{})[_0xf4f2('0x25')](function(){return _0x56411a;});}else{return _0x56411a;}})[_0xf4f2('0x48')](function(_0x22fea0){logger[_0xf4f2('0x50')](_0xf4f2('0x51'),_0x22fea0);throw _0x22fea0;});}return _0x56411a;})[_0xf4f2('0x25')](respondWithResult(_0x10ff86,0xc9))['catch'](handleError(_0x10ff86,null));};exports['update']=function(_0x2883f9,_0x2a8711){if(_0x2883f9[_0xf4f2('0x52')]['id']){delete _0x2883f9[_0xf4f2('0x52')]['id'];}return db['Variable'][_0xf4f2('0x47')]({'where':{'id':_0x2883f9['params']['id']}})[_0xf4f2('0x25')](handleEntityNotFound(_0x2a8711,null))[_0xf4f2('0x25')](saveUpdates(_0x2883f9[_0xf4f2('0x52')],null))[_0xf4f2('0x25')](respondWithResult(_0x2a8711,null))['catch'](handleError(_0x2a8711,null));};exports[_0xf4f2('0x26')]=function(_0x3e4728,_0x45a6ef){return db['Variable'][_0xf4f2('0x47')]({'where':{'id':_0x3e4728[_0xf4f2('0x44')]['id']}})[_0xf4f2('0x25')](handleEntityNotFound(_0x45a6ef,null))[_0xf4f2('0x25')](removeEntity(_0x45a6ef,null))['catch'](handleError(_0x45a6ef,null));};
\ No newline at end of file
index 0ee4d32..06fc68d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ade=['path','rimraf','../../config/environment','./variable.attributes','exports','define','tools_variables','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x211ebc,_0x94231e){var _0x4bb25c=function(_0x2bb0e8){while(--_0x2bb0e8){_0x211ebc['push'](_0x211ebc['shift']());}};_0x4bb25c(++_0x94231e);}(_0x0ade,0x173));var _0xe0ad=function(_0x3f9033,_0x171e08){_0x3f9033=_0x3f9033-0x0;var _0x2818b6=_0x0ade[_0x3f9033];return _0x2818b6;};'use strict';var _=require(_0xe0ad('0x0'));var util=require(_0xe0ad('0x1'));var logger=require(_0xe0ad('0x2'))(_0xe0ad('0x3'));var moment=require('moment');var BPromise=require(_0xe0ad('0x4'));var rp=require(_0xe0ad('0x5'));var fs=require('fs');var path=require(_0xe0ad('0x6'));var rimraf=require(_0xe0ad('0x7'));var config=require(_0xe0ad('0x8'));var attributes=require(_0xe0ad('0x9'));module[_0xe0ad('0xa')]=function(_0x3cd221,_0x6ffc2a){return _0x3cd221[_0xe0ad('0xb')]('Variable',attributes,{'tableName':_0xe0ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8e0=['api','bluebird','request-promise','path','rimraf','./variable.attributes','exports','define','tools_variables','util','../../config/logger'];(function(_0x40aadd,_0x589006){var _0x59152c=function(_0x20ad5a){while(--_0x20ad5a){_0x40aadd['push'](_0x40aadd['shift']());}};_0x59152c(++_0x589006);}(_0xa8e0,0xae));var _0x0a8e=function(_0x18849b,_0x530b07){_0x18849b=_0x18849b-0x0;var _0x23b2df=_0xa8e0[_0x18849b];return _0x23b2df;};'use strict';var _=require('lodash');var util=require(_0x0a8e('0x0'));var logger=require(_0x0a8e('0x1'))(_0x0a8e('0x2'));var moment=require('moment');var BPromise=require(_0x0a8e('0x3'));var rp=require(_0x0a8e('0x4'));var fs=require('fs');var path=require(_0x0a8e('0x5'));var rimraf=require(_0x0a8e('0x6'));var config=require('../../config/environment');var attributes=require(_0x0a8e('0x7'));module[_0x0a8e('0x8')]=function(_0xd120f4,_0x176a83){return _0xd120f4[_0x0a8e('0x9')]('Variable',attributes,{'tableName':_0x0a8e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9055533..bd6ebf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['include','map','model','then','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowVariable','Variable','options','attributes'];(function(_0x2abd13,_0x501317){var _0x5ad645=function(_0x55ae11){while(--_0x55ae11){_0x2abd13['push'](_0x2abd13['shift']());}};_0x5ad645(++_0x501317);}(_0x1cb9,0x14e));var _0x91cb=function(_0x305bc3,_0x108ed7){_0x305bc3=_0x305bc3-0x0;var _0x195016=_0x1cb9[_0x305bc3];return _0x195016;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Variable,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}exports[_0x91cb('0x16')]=function(_0x1cd34b){var _0xcd1a78=this;return new Promise(function(_0x5cc1c3,_0x3fba4f){return db[_0x91cb('0x17')]['find']({'raw':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b['options']['raw']===undefined?!![]:![]:!![],'where':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')]['where']||null:null,'attributes':_0x1cd34b['options']?_0x1cd34b['options'][_0x91cb('0x19')]||null:null,'include':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')]?_['map'](_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')],function(_0x1fa837){return{'model':db[_0x1fa837['model']],'as':_0x1fa837['as'],'attributes':_0x1fa837[_0x91cb('0x19')],'include':_0x1fa837[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x1fa837[_0x91cb('0x1a')],function(_0x3ca500){return{'model':db[_0x3ca500[_0x91cb('0x1c')]],'as':_0x3ca500['as'],'attributes':_0x3ca500[_0x91cb('0x19')],'include':_0x3ca500[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x3ca500['include'],function(_0x59bf3a){return{'model':db[_0x59bf3a[_0x91cb('0x1c')]],'as':_0x59bf3a['as'],'attributes':_0x59bf3a['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cb('0x1d')](function(_0x34d372){logger[_0x91cb('0xc')]('ShowVariable',_0x1cd34b);logger[_0x91cb('0xf')]('ShowVariable',_0x1cd34b,JSON[_0x91cb('0x11')](_0x34d372));_0x5cc1c3(_0x34d372);})[_0x91cb('0x15')](function(_0x3b3ee6){logger[_0x91cb('0x12')](_0x91cb('0x16'),_0x3b3ee6['message'],_0x1cd34b);_0x3fba4f(_0xcd1a78[_0x91cb('0x12')](0x1f4,_0x3b3ee6['message']));});});};
\ No newline at end of file
+var _0x6aa7=['include','model','attributes','map','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowVariable','find','options','raw','where'];(function(_0x19e504,_0x2da6d7){var _0x165195=function(_0x189243){while(--_0x189243){_0x19e504['push'](_0x19e504['shift']());}};_0x165195(++_0x2da6d7);}(_0x6aa7,0x178));var _0x76aa=function(_0x596bc4,_0x33d414){_0x596bc4=_0x596bc4-0x0;var _0x313f66=_0x6aa7[_0x596bc4];return _0x313f66;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}exports[_0x76aa('0x16')]=function(_0x21c16d){var _0xa1bc7=this;return new Promise(function(_0x3ead3f,_0x496902){return db['Variable'][_0x76aa('0x17')]({'raw':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1a')]||null:null,'attributes':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')]['attributes']||null:null,'include':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')]?_['map'](_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')],function(_0x31252f){return{'model':db[_0x31252f[_0x76aa('0x1c')]],'as':_0x31252f['as'],'attributes':_0x31252f[_0x76aa('0x1d')],'include':_0x31252f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x31252f[_0x76aa('0x1b')],function(_0x32bf9f){return{'model':db[_0x32bf9f[_0x76aa('0x1c')]],'as':_0x32bf9f['as'],'attributes':_0x32bf9f[_0x76aa('0x1d')],'include':_0x32bf9f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x32bf9f['include'],function(_0xb5e8a9){return{'model':db[_0xb5e8a9[_0x76aa('0x1c')]],'as':_0xb5e8a9['as'],'attributes':_0xb5e8a9[_0x76aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0xa1e6){logger[_0x76aa('0xb')](_0x76aa('0x16'),_0x21c16d);logger[_0x76aa('0xe')](_0x76aa('0x16'),_0x21c16d,JSON[_0x76aa('0x10')](_0xa1e6));_0x3ead3f(_0xa1e6);})['catch'](function(_0x3fcb7f){logger['error'](_0x76aa('0x16'),_0x3fcb7f[_0x76aa('0x13')],_0x21c16d);_0x496902(_0xa1bc7[_0x76aa('0x11')](0x1f4,_0x3fcb7f[_0x76aa('0x13')]));});});};
\ No newline at end of file
index 7de9190..7b2b94e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x595c=['canUpdate','fetch','reset','get','/pull','pull','/restart','restart','/migrations','migrations','exports','express','../../components/auth/service','./version.controller','index','/fetch','isAuthenticated'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x595c,0x14e));var _0xc595=function(_0x3d71f5,_0x4a29a4){_0x3d71f5=_0x3d71f5-0x0;var _0x53eef4=_0x595c[_0x3d71f5];return _0x53eef4;};'use strict';var express=require(_0xc595('0x0'));var router=express['Router']();var auth=require(_0xc595('0x1'));var controller=require(_0xc595('0x2'));router['get']('/',controller[_0xc595('0x3')]);router['get'](_0xc595('0x4'),auth[_0xc595('0x5')](),auth[_0xc595('0x6')](),controller[_0xc595('0x7')]);router['get']('/reset',auth[_0xc595('0x5')](),auth['canUpdate'](),controller[_0xc595('0x8')]);router[_0xc595('0x9')](_0xc595('0xa'),auth[_0xc595('0x5')](),auth['canUpdate'](),controller[_0xc595('0xb')]);router[_0xc595('0x9')](_0xc595('0xc'),auth[_0xc595('0x5')](),controller[_0xc595('0xd')]);router['get'](_0xc595('0xe'),controller[_0xc595('0xf')]);module[_0xc595('0x10')]=router;
\ No newline at end of file
+var _0xa626=['Router','../../components/auth/service','./version.controller','get','/fetch','canUpdate','fetch','/reset','isAuthenticated','reset','/pull','pull','/restart','/migrations','exports','express'];(function(_0x23f39c,_0xc49045){var _0x5b0348=function(_0x1131a9){while(--_0x1131a9){_0x23f39c['push'](_0x23f39c['shift']());}};_0x5b0348(++_0xc49045);}(_0xa626,0x18f));var _0x6a62=function(_0x38f379,_0x204a85){_0x38f379=_0x38f379-0x0;var _0xbaff73=_0xa626[_0x38f379];return _0xbaff73;};'use strict';var express=require(_0x6a62('0x0'));var router=express[_0x6a62('0x1')]();var auth=require(_0x6a62('0x2'));var controller=require(_0x6a62('0x3'));router['get']('/',controller['index']);router[_0x6a62('0x4')](_0x6a62('0x5'),auth['isAuthenticated'](),auth[_0x6a62('0x6')](),controller[_0x6a62('0x7')]);router[_0x6a62('0x4')](_0x6a62('0x8'),auth[_0x6a62('0x9')](),auth[_0x6a62('0x6')](),controller[_0x6a62('0xa')]);router[_0x6a62('0x4')](_0x6a62('0xb'),auth[_0x6a62('0x9')](),auth[_0x6a62('0x6')](),controller[_0x6a62('0xc')]);router[_0x6a62('0x4')](_0x6a62('0xd'),auth['isAuthenticated'](),controller['restart']);router[_0x6a62('0x4')](_0x6a62('0xe'),controller['migrations']);module[_0x6a62('0xf')]=router;
\ No newline at end of file
index 1b7bf28..ed2719d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0700=['info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','catch','migrations','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','root','exports','query','latest','fetch','2.0.0','status','json','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD'];(function(_0x522578,_0xd6fa8){var _0x240fbe=function(_0x1438c0){while(--_0x1438c0){_0x522578['push'](_0x522578['shift']());}};_0x240fbe(++_0xd6fa8);}(_0x0700,0x137));var _0x0070=function(_0xeec88a,_0x1edb25){_0xeec88a=_0xeec88a-0x0;var _0x38d217=_0x0700[_0xeec88a];return _0x38d217;};'use strict';var Umzug=require(_0x0070('0x0'));var path=require(_0x0070('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x0070('0x2'))(module,_0x0070('0x3'));var compareVersions=require('compare-versions');var exec=require(_0x0070('0x4'))[_0x0070('0x5')];var db=require(_0x0070('0x6'))['db'];var config=require(_0x0070('0x7'));var pm2=require(_0x0070('0x8'));var logger=require(_0x0070('0x9'))(_0x0070('0xa'));var git=require('simple-git')(config[_0x0070('0xb')]);exports['index']=function(_0x2eccfd,_0x468ec7){var _0x336091={'current':module[_0x0070('0xc')][_0x0070('0x3')],'phonebar':0x2};if(_0x2eccfd[_0x0070('0xd')]&&_0x2eccfd[_0x0070('0xd')][_0x0070('0xe')]){return git[_0x0070('0xf')]()['tags'](function(_0x22eff0,_0x2d2378){_0x336091['latest']=(_0x22eff0?module[_0x0070('0xc')][_0x0070('0x3')]:_0x2d2378['latest'])||_0x0070('0x10');return _0x468ec7[_0x0070('0x11')](0xc8)[_0x0070('0x12')](_0x336091);});}else{return _0x468ec7[_0x0070('0x11')](0xc8)[_0x0070('0x12')](_0x336091);}};exports[_0x0070('0xf')]=function(_0x4bbdd6,_0x261935){return git['fetch'](['origin','master'],function(_0x88f745){if(_0x88f745){logger[_0x0070('0x13')](_0x88f745);return _0x261935[_0x0070('0x11')](0x1f4)[_0x0070('0x12')](_0x88f745);}logger['info'](_0x0070('0x14'));return _0x261935[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x15')});});};exports[_0x0070('0x16')]=function(_0x27e32c,_0x4f6a67){return git['reset']([_0x0070('0x17'),_0x0070('0x18')],function(_0xd831e2){if(_0xd831e2){logger[_0x0070('0x13')](_0xd831e2);return _0x4f6a67['status'](0x1f4)[_0x0070('0x12')](_0xd831e2);}logger[_0x0070('0x19')](_0x0070('0x1a'));return _0x4f6a67[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x1b')});});};exports[_0x0070('0x1c')]=function(_0x1ffbff,_0x32cdc4){exec(_0x0070('0x1d'),function(_0x14b714,_0x293096,_0x4b5428){logger['info'](_0x293096);logger[_0x0070('0x19')](_0x4b5428);if(_0x14b714){logger[_0x0070('0x13')](_0x14b714);return _0x32cdc4['status'](0x1f4)[_0x0070('0x12')](_0x14b714);}return _0x32cdc4[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x293096});});};exports[_0x0070('0x1e')]=function(_0x572f2f,_0x138ecf){return pm2[_0x0070('0x1e')](_0x0070('0x1f'))[_0x0070('0x20')](function(_0x14f62f){logger[_0x0070('0x19')]('pm2\x20restart\x20motion\x20%s',_0x14f62f);return _0x138ecf[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x0070('0x21')](function(_0x46cb13){logger[_0x0070('0x13')](_0x46cb13);return _0x138ecf[_0x0070('0x11')](0x1f4)[_0x0070('0x12')](_0x46cb13);});};exports[_0x0070('0x22')]=function(_0x4c4142,_0x163c69){var _0x3df829=fs['readdirSync'](path['join'](config[_0x0070('0xb')],'server','migrations'));var _0x1053ac=[];for(var _0x467ee9=0x0;_0x467ee9<_0x3df829[_0x0070('0x23')];_0x467ee9++){var _0x35525f=_0x3df829[_0x467ee9][_0x0070('0x24')](_0x0070('0x25'),'');if(compareVersions(module['exports'][_0x0070('0x3')],_0x35525f)===-0x1){_0x1053ac[_0x0070('0x26')](_0x35525f);}}if(_0x1053ac[_0x0070('0x23')]){var _0x118d5a=_0x1053ac[_0x0070('0x27')](compareVersions);var _0x4f9302=new Umzug({'storage':_0x0070('0x28'),'storageOptions':{'model':db[_0x0070('0x29')],'modelName':_0x0070('0x29'),'columnName':_0x0070('0x3')},'migrations':{'params':[db['sequelize'][_0x0070('0x2a')](),db[_0x0070('0x28')]['constructor'],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0x0070('0x2b')](config[_0x0070('0xb')],'server',_0x0070('0x22')),'pattern':/\.js$/}});_0x4f9302['up']({'migrations':_[_0x0070('0x2c')](_0x118d5a,function(_0x1e9e82){return _0x1e9e82+_0x0070('0x25');})})['then'](function(){return _0x163c69[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x2d')+module[_0x0070('0xc')][_0x0070('0x3')]+'\x20to\x20'+_[_0x0070('0x2e')](_0x118d5a),'migrations':_[_0x0070('0x2b')](_0x118d5a)});})['catch'](function(_0x35755a){if(_0x35755a instanceof db[_0x0070('0x28')]['UniqueConstraintError']){return _0x163c69[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x2f')});}else{return _0x163c69[_0x0070('0x11')](0x1f4)[_0x0070('0x12')](_0x35755a);}});}else{return _0x163c69['status'](0xc8)['json']({'output':_0x0070('0x2f')});}};
\ No newline at end of file
+var _0x50de=['UniqueConstraintError','Database\x20already\x20up-to-date','path','pkginfo','version','child_process','exec','../../mysqldb','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','2.0.0','status','json','origin','master','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','error','info','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','length','replace','.js','push','sort','sequelize','Migration','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','Database\x20migrated\x20successfully\x20from\x20version\x20','last'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x50de,0x68));var _0xe50d=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0x50de[_0x1b7368];return _0x25d54c;};'use strict';var Umzug=require('umzug');var path=require(_0xe50d('0x0'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0xe50d('0x1'))(module,_0xe50d('0x2'));var compareVersions=require('compare-versions');var exec=require(_0xe50d('0x3'))[_0xe50d('0x4')];var db=require(_0xe50d('0x5'))['db'];var config=require('../../config/environment');var pm2=require(_0xe50d('0x6'));var logger=require(_0xe50d('0x7'))(_0xe50d('0x8'));var git=require(_0xe50d('0x9'))(config[_0xe50d('0xa')]);exports[_0xe50d('0xb')]=function(_0xeb1911,_0x15c7e6){var _0x239dbf={'current':module[_0xe50d('0xc')][_0xe50d('0x2')],'phonebar':0x2};if(_0xeb1911[_0xe50d('0xd')]&&_0xeb1911[_0xe50d('0xd')][_0xe50d('0xe')]){return git[_0xe50d('0xf')]()['tags'](function(_0x5a6871,_0x501f2a){_0x239dbf[_0xe50d('0xe')]=(_0x5a6871?module[_0xe50d('0xc')][_0xe50d('0x2')]:_0x501f2a[_0xe50d('0xe')])||_0xe50d('0x10');return _0x15c7e6[_0xe50d('0x11')](0xc8)[_0xe50d('0x12')](_0x239dbf);});}else{return _0x15c7e6[_0xe50d('0x11')](0xc8)['json'](_0x239dbf);}};exports['fetch']=function(_0x5c3f9a,_0x2e1f80){return git[_0xe50d('0xf')]([_0xe50d('0x13'),_0xe50d('0x14')],function(_0x441574){if(_0x441574){logger['error'](_0x441574);return _0x2e1f80[_0xe50d('0x11')](0x1f4)[_0xe50d('0x12')](_0x441574);}logger['info'](_0xe50d('0x15'));return _0x2e1f80[_0xe50d('0x11')](0xc8)[_0xe50d('0x12')]({'output':_0xe50d('0x16')});});};exports['reset']=function(_0x56afe5,_0x55c0f1){return git[_0xe50d('0x17')]([_0xe50d('0x18'),'FETCH_HEAD'],function(_0x536c90){if(_0x536c90){logger[_0xe50d('0x19')](_0x536c90);return _0x55c0f1[_0xe50d('0x11')](0x1f4)[_0xe50d('0x12')](_0x536c90);}logger[_0xe50d('0x1a')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x55c0f1[_0xe50d('0x11')](0xc8)['json']({'output':_0xe50d('0x1b')});});};exports[_0xe50d('0x1c')]=function(_0x4de925,_0x2bbd3d){exec(_0xe50d('0x1d'),function(_0x127733,_0x4d2b84,_0x370a57){logger[_0xe50d('0x1a')](_0x4d2b84);logger[_0xe50d('0x1a')](_0x370a57);if(_0x127733){logger[_0xe50d('0x19')](_0x127733);return _0x2bbd3d[_0xe50d('0x11')](0x1f4)['json'](_0x127733);}return _0x2bbd3d['status'](0xc8)[_0xe50d('0x12')]({'output':_0x4d2b84});});};exports['restart']=function(_0x428836,_0x1ed1fc){return pm2[_0xe50d('0x1e')](_0xe50d('0x1f'))[_0xe50d('0x20')](function(_0x4c56c0){logger[_0xe50d('0x1a')](_0xe50d('0x21'),_0x4c56c0);return _0x1ed1fc[_0xe50d('0x11')](0xc8)[_0xe50d('0x12')]({'output':_0xe50d('0x22')});})[_0xe50d('0x23')](function(_0x4805c3){logger['error'](_0x4805c3);return _0x1ed1fc['status'](0x1f4)[_0xe50d('0x12')](_0x4805c3);});};exports[_0xe50d('0x24')]=function(_0x5cd768,_0x361d1a){var _0x4a5698=fs[_0xe50d('0x25')](path['join'](config[_0xe50d('0xa')],'server',_0xe50d('0x24')));var _0x5d4868=[];for(var _0x102d36=0x0;_0x102d36<_0x4a5698[_0xe50d('0x26')];_0x102d36++){var _0x5295fc=_0x4a5698[_0x102d36][_0xe50d('0x27')](_0xe50d('0x28'),'');if(compareVersions(module['exports'][_0xe50d('0x2')],_0x5295fc)===-0x1){_0x5d4868[_0xe50d('0x29')](_0x5295fc);}}if(_0x5d4868['length']){var _0x221347=_0x5d4868[_0xe50d('0x2a')](compareVersions);var _0x31f2b1=new Umzug({'storage':_0xe50d('0x2b'),'storageOptions':{'model':db[_0xe50d('0x2c')],'modelName':_0xe50d('0x2c'),'columnName':_0xe50d('0x2')},'migrations':{'params':[db[_0xe50d('0x2b')]['getQueryInterface'](),db[_0xe50d('0x2b')]['constructor'],function(){throw new Error(_0xe50d('0x2d'));}],'path':path[_0xe50d('0x2e')](config['root'],'server',_0xe50d('0x24')),'pattern':/\.js$/}});_0x31f2b1['up']({'migrations':_['map'](_0x221347,function(_0x4ca616){return _0x4ca616+_0xe50d('0x28');})})['then'](function(){return _0x361d1a[_0xe50d('0x11')](0xc8)[_0xe50d('0x12')]({'output':_0xe50d('0x2f')+module[_0xe50d('0xc')][_0xe50d('0x2')]+'\x20to\x20'+_[_0xe50d('0x30')](_0x221347),'migrations':_[_0xe50d('0x2e')](_0x221347)});})[_0xe50d('0x23')](function(_0x2ecbee){if(_0x2ecbee instanceof db[_0xe50d('0x2b')][_0xe50d('0x31')]){return _0x361d1a[_0xe50d('0x11')](0xc8)[_0xe50d('0x12')]({'output':_0xe50d('0x32')});}else{return _0x361d1a['status'](0x1f4)[_0xe50d('0x12')](_0x2ecbee);}});}else{return _0x361d1a[_0xe50d('0x11')](0xc8)['json']({'output':_0xe50d('0x32')});}};
\ No newline at end of file
index f0f04bf..5b72a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad47=['/:id','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x37dbc6,_0x4a777d){var _0x5d636a=function(_0x408529){while(--_0x408529){_0x37dbc6['push'](_0x37dbc6['shift']());}};_0x5d636a(++_0x4a777d);}(_0xad47,0x135));var _0x7ad4=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xad47[_0x39c734];return _0xb2a2f9;};'use strict';var multer=require('multer');var util=require(_0x7ad4('0x0'));var path=require('path');var timeout=require(_0x7ad4('0x1'));var express=require(_0x7ad4('0x2'));var router=express['Router']();var fs_extra=require(_0x7ad4('0x3'));var auth=require(_0x7ad4('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7ad4('0x5'));var controller=require('./voiceAgentReport.controller');router[_0x7ad4('0x6')]('/',auth[_0x7ad4('0x7')](),controller[_0x7ad4('0x8')]);router['get'](_0x7ad4('0x9'),auth['isAuthenticated'](),controller[_0x7ad4('0xa')]);router[_0x7ad4('0x6')](_0x7ad4('0xb'),auth['isAuthenticated'](),controller[_0x7ad4('0xc')]);router[_0x7ad4('0xd')]('/',auth[_0x7ad4('0x7')](),controller[_0x7ad4('0xe')]);router[_0x7ad4('0xf')](_0x7ad4('0xb'),auth['isAuthenticated'](),controller[_0x7ad4('0x10')]);router[_0x7ad4('0x11')](_0x7ad4('0xb'),auth[_0x7ad4('0x7')](),controller[_0x7ad4('0x12')]);module[_0x7ad4('0x13')]=router;
\ No newline at end of file
+var _0x858c=['../../config/environment','./voiceAgentReport.controller','get','index','isAuthenticated','/:id','show','post','put','update','destroy','exports','multer','path','fs-extra','../../components/auth/service'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0x858c,0xfc));var _0xc858=function(_0x14ec09,_0x593a81){_0x14ec09=_0x14ec09-0x0;var _0x5ca353=_0x858c[_0x14ec09];return _0x5ca353;};'use strict';var multer=require(_0xc858('0x0'));var util=require('util');var path=require(_0xc858('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xc858('0x2'));var auth=require(_0xc858('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xc858('0x4'));var controller=require(_0xc858('0x5'));router[_0xc858('0x6')]('/',auth['isAuthenticated'](),controller[_0xc858('0x7')]);router['get']('/describe',auth[_0xc858('0x8')](),controller['describe']);router['get'](_0xc858('0x9'),auth[_0xc858('0x8')](),controller[_0xc858('0xa')]);router[_0xc858('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc858('0xc')](_0xc858('0x9'),auth[_0xc858('0x8')](),controller[_0xc858('0xd')]);router['delete'](_0xc858('0x9'),auth[_0xc858('0x8')](),controller[_0xc858('0xe')]);module[_0xc858('0xf')]=router;
\ No newline at end of file
index 13e5896..fd6ee47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x57ed17,_0x274a74){var _0x56a432=function(_0x556ea9){while(--_0x556ea9){_0x57ed17['push'](_0x57ed17['shift']());}};_0x56a432(++_0x274a74);}(_0xb9be,0xc5));var _0xeb9b=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0xb9be[_0x504df1];return _0x1063b5;};'use strict';var Sequelize=require(_0xeb9b('0x0'));module[_0xeb9b('0x1')]={'type':{'type':Sequelize[_0xeb9b('0x2')]},'uniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'calleridnum':{'type':Sequelize[_0xeb9b('0x2')]},'calleridname':{'type':Sequelize[_0xeb9b('0x2')]},'queue':{'type':Sequelize[_0xeb9b('0x2')]},'interface':{'type':Sequelize[_0xeb9b('0x2')]},'membername':{'type':Sequelize[_0xeb9b('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xeb9b('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xeb9b('0x3')]},'agentdumpAt':{'type':Sequelize[_0xeb9b('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xeb9b('0x5')]},'agentacw':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xeb9b('0x5')]},'reason':{'type':Sequelize[_0xeb9b('0x2')]},'lastevent':{'type':Sequelize[_0xeb9b('0x2')]},'channel':{'type':Sequelize[_0xeb9b('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xeb9b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xeb9b('0x2')]},'accountcode':{'type':Sequelize[_0xeb9b('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xeb9b('0x2')]},'priority':{'type':Sequelize[_0xeb9b('0x2')]},'destchannel':{'type':Sequelize[_0xeb9b('0x2')]},'destchannelstate':{'type':Sequelize[_0xeb9b('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xeb9b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xeb9b('0x2')]},'destlanguage':{'type':Sequelize[_0xeb9b('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xeb9b('0x2')]},'destuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xeb9b('0x2')]},'transfer':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xeb9b('0x2')],'comment':_0xeb9b('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'agententerreason':{'type':Sequelize[_0xeb9b('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6ac2=['DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING'];(function(_0x454202,_0x5b396c){var _0x7b85ae=function(_0x50e34d){while(--_0x50e34d){_0x454202['push'](_0x454202['shift']());}};_0x7b85ae(++_0x5b396c);}(_0x6ac2,0x184));var _0x26ac=function(_0x5e854e,_0x1fd7dd){_0x5e854e=_0x5e854e-0x0;var _0x356e7a=_0x6ac2[_0x5e854e];return _0x356e7a;};'use strict';var Sequelize=require(_0x26ac('0x0'));module['exports']={'type':{'type':Sequelize[_0x26ac('0x1')]},'uniqueid':{'type':Sequelize[_0x26ac('0x1')]},'calleridnum':{'type':Sequelize[_0x26ac('0x1')]},'calleridname':{'type':Sequelize[_0x26ac('0x1')]},'queue':{'type':Sequelize[_0x26ac('0x1')]},'interface':{'type':Sequelize[_0x26ac('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x26ac('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0x26ac('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x26ac('0x2')]},'agentdumpAt':{'type':Sequelize[_0x26ac('0x2')]},'holdtime':{'type':Sequelize[_0x26ac('0x3')]},'agentcomplete':{'type':Sequelize[_0x26ac('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x26ac('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x26ac('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x26ac('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x26ac('0x1')]},'lastevent':{'type':Sequelize[_0x26ac('0x1')]},'channel':{'type':Sequelize[_0x26ac('0x1')]},'channelstate':{'type':Sequelize[_0x26ac('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x26ac('0x1')]},'connectedlinename':{'type':Sequelize[_0x26ac('0x1')]},'language':{'type':Sequelize[_0x26ac('0x1')]},'accountcode':{'type':Sequelize[_0x26ac('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x26ac('0x1')]},'destchannel':{'type':Sequelize[_0x26ac('0x1')]},'destchannelstate':{'type':Sequelize[_0x26ac('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x26ac('0x1')]},'destcalleridnum':{'type':Sequelize[_0x26ac('0x1')]},'destcalleridname':{'type':Sequelize[_0x26ac('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x26ac('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x26ac('0x1')]},'destaccountcode':{'type':Sequelize[_0x26ac('0x1')]},'destcontext':{'type':Sequelize[_0x26ac('0x1')]},'destexten':{'type':Sequelize[_0x26ac('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x26ac('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x26ac('0x1')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x26ac('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x26ac('0x1')],'comment':_0x26ac('0x5')},'transferexten':{'type':Sequelize[_0x26ac('0x1')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x26ac('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 6ed6988..e99c2ed 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(_0x39e283,_0x247e6b){var _0x7de89f=function(_0x2f8c50){while(--_0x2f8c50){_0x39e283['push'](_0x39e283['shift']());}};_0x7de89f(++_0x247e6b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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 953ec3e..ecbef2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['api','moment','bluebird','path','rimraf','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','uniqueid','lodash','../../config/logger'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x1cb9,0x14e));var _0x91cb=function(_0x36fc00,_0x17f537){_0x36fc00=_0x36fc00-0x0;var _0x4aebe9=_0x1cb9[_0x36fc00];return _0x4aebe9;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x91cb('0xb'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f4d=['api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','uniqueid','destuniqueid'];(function(_0x148f2f,_0x572b41){var _0x42131e=function(_0xb5f947){while(--_0xb5f947){_0x148f2f['push'](_0x148f2f['shift']());}};_0x42131e(++_0x572b41);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x36df13,_0x41b8ea){_0x36df13=_0x36df13-0x0;var _0x559193=_0x0f4d[_0x36df13];return _0x559193;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xd0f4('0x0'));var moment=require('moment');var BPromise=require(_0xd0f4('0x1'));var rp=require(_0xd0f4('0x2'));var fs=require('fs');var path=require(_0xd0f4('0x3'));var rimraf=require(_0xd0f4('0x4'));var config=require(_0xd0f4('0x5'));var attributes=require(_0xd0f4('0x6'));module[_0xd0f4('0x7')]=function(_0x1d9a9d,_0x531f85){return _0x1d9a9d[_0xd0f4('0x8')](_0xd0f4('0x9'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0xd0f4('0xa'),_0xd0f4('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 455714a..a191be5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e67=['raw','then','catch','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','code','error','message','result','CreateVoiceAgentReport','VoiceAgentReport','create','body','options'];(function(_0x820843,_0x4b6f7e){var _0x2077c2=function(_0x26e103){while(--_0x26e103){_0x820843['push'](_0x820843['shift']());}};_0x2077c2(++_0x4b6f7e);}(_0x0e67,0xe8));var _0x70e6=function(_0x13a690,_0x734e){_0x13a690=_0x13a690-0x0;var _0x4e085f=_0x0e67[_0x13a690];return _0x4e085f;};'use strict';var _=require(_0x70e6('0x0'));var util=require(_0x70e6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x70e6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x70e6('0x3'))['db'];var utils=require(_0x70e6('0x4'));var logger=require(_0x70e6('0x5'))(_0x70e6('0x6'));var config=require(_0x70e6('0x7'));var jayson=require(_0x70e6('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2a17b8,_0x3e7bbc,_0x2ea408){return new BPromise(function(_0x318d83,_0x2b25c4){return client[_0x70e6('0x9')](_0x2a17b8,_0x2ea408)['then'](function(_0x3b3922){logger[_0x70e6('0xa')](_0x70e6('0xb'),_0x3e7bbc,_0x70e6('0xc'));logger[_0x70e6('0xd')](_0x70e6('0xe'),_0x3e7bbc,_0x70e6('0xc'),JSON['stringify'](_0x3b3922));if(_0x3b3922['error']){if(_0x3b3922['error'][_0x70e6('0xf')]===0x1f4){logger[_0x70e6('0x10')](_0x70e6('0xb'),_0x3e7bbc,_0x3b3922['error'][_0x70e6('0x11')]);return _0x2b25c4(_0x3b3922[_0x70e6('0x10')][_0x70e6('0x11')]);}logger['error'](_0x70e6('0xb'),_0x3e7bbc,_0x3b3922[_0x70e6('0x10')][_0x70e6('0x11')]);return _0x318d83(_0x3b3922['error'][_0x70e6('0x11')]);}else{logger[_0x70e6('0xa')](_0x70e6('0xb'),_0x3e7bbc,_0x70e6('0xc'));_0x318d83(_0x3b3922[_0x70e6('0x12')][_0x70e6('0x11')]);}})['catch'](function(_0x2d1923){logger[_0x70e6('0x10')](_0x70e6('0xb'),_0x3e7bbc,_0x2d1923);_0x2b25c4(_0x2d1923);});});}exports[_0x70e6('0x13')]=function(_0x1132c0){var _0x57d6d3=this;return new Promise(function(_0x2ed7b8,_0xd92e17){return db[_0x70e6('0x14')][_0x70e6('0x15')](_0x1132c0[_0x70e6('0x16')],{'raw':_0x1132c0[_0x70e6('0x17')]?_0x1132c0[_0x70e6('0x17')][_0x70e6('0x18')]===undefined?!![]:![]:!![]})[_0x70e6('0x19')](function(_0x5e0e06){logger['info'](_0x70e6('0x13'),_0x1132c0);logger[_0x70e6('0xd')](_0x70e6('0x13'),_0x1132c0,JSON['stringify'](_0x5e0e06));_0x2ed7b8(_0x5e0e06);})[_0x70e6('0x1a')](function(_0x4a22de){logger[_0x70e6('0x10')](_0x70e6('0x13'),_0x4a22de[_0x70e6('0x11')],_0x1132c0);_0xd92e17(_0x57d6d3[_0x70e6('0x10')](0x1f4,_0x4a22de[_0x70e6('0x11')]));});});};exports[_0x70e6('0x1b')]=function(_0x4d4054){var _0x14212b=this;return new Promise(function(_0xcbec20,_0x581ddd){return db['VoiceAgentReport'][_0x70e6('0x1c')](_0x4d4054[_0x70e6('0x16')],{'raw':_0x4d4054[_0x70e6('0x17')]?_0x4d4054['options'][_0x70e6('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d4054[_0x70e6('0x17')]?_0x4d4054[_0x70e6('0x17')][_0x70e6('0x1d')]||null:null,'attributes':_0x4d4054[_0x70e6('0x17')]?_0x4d4054[_0x70e6('0x17')][_0x70e6('0x1e')]||null:null,'limit':_0x4d4054['options']?_0x4d4054['options'][_0x70e6('0x1f')]||null:null})[_0x70e6('0x19')](function(_0x382962){logger[_0x70e6('0xa')](_0x70e6('0x1b'),_0x4d4054);logger[_0x70e6('0xd')](_0x70e6('0x1b'),_0x4d4054,JSON['stringify'](_0x382962));_0xcbec20(_0x382962);})[_0x70e6('0x1a')](function(_0x44a2eb){logger[_0x70e6('0x10')](_0x70e6('0x1b'),_0x44a2eb['message'],_0x4d4054);_0x581ddd(_0x14212b[_0x70e6('0x10')](0x1f4,_0x44a2eb[_0x70e6('0x11')]));});});};
\ No newline at end of file
+var _0x27f4=['create','body','options','debug','catch','UpdateVoiceAgentReport','update','raw','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','CreateVoiceAgentReport','VoiceAgentReport'];(function(_0x210aec,_0x1f57c6){var _0x51d177=function(_0x588b1a){while(--_0x588b1a){_0x210aec['push'](_0x210aec['shift']());}};_0x51d177(++_0x1f57c6);}(_0x27f4,0x9b));var _0x427f=function(_0x2c53bc,_0x5edba0){_0x2c53bc=_0x2c53bc-0x0;var _0x37886c=_0x27f4[_0x2c53bc];return _0x37886c;};'use strict';var _=require(_0x427f('0x0'));var util=require(_0x427f('0x1'));var moment=require(_0x427f('0x2'));var BPromise=require(_0x427f('0x3'));var rs=require(_0x427f('0x4'));var fs=require('fs');var Redis=require(_0x427f('0x5'));var db=require(_0x427f('0x6'))['db'];var utils=require(_0x427f('0x7'));var logger=require(_0x427f('0x8'))(_0x427f('0x9'));var config=require(_0x427f('0xa'));var jayson=require(_0x427f('0xb'));var client=jayson[_0x427f('0xc')][_0x427f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5b0aec,_0x4bef8d,_0x5899b0){return new BPromise(function(_0x2fc3f5,_0x2cbfc5){return client['request'](_0x5b0aec,_0x5899b0)[_0x427f('0xe')](function(_0x45eec5){logger[_0x427f('0xf')](_0x427f('0x10'),_0x4bef8d,'request\x20sent');logger['debug'](_0x427f('0x11'),_0x4bef8d,'request\x20sent',JSON[_0x427f('0x12')](_0x45eec5));if(_0x45eec5['error']){if(_0x45eec5['error']['code']===0x1f4){logger['error'](_0x427f('0x10'),_0x4bef8d,_0x45eec5['error']['message']);return _0x2cbfc5(_0x45eec5[_0x427f('0x13')][_0x427f('0x14')]);}logger[_0x427f('0x13')](_0x427f('0x10'),_0x4bef8d,_0x45eec5[_0x427f('0x13')][_0x427f('0x14')]);return _0x2fc3f5(_0x45eec5[_0x427f('0x13')]['message']);}else{logger['info'](_0x427f('0x10'),_0x4bef8d,_0x427f('0x15'));_0x2fc3f5(_0x45eec5[_0x427f('0x16')][_0x427f('0x14')]);}})['catch'](function(_0x339a47){logger[_0x427f('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x4bef8d,_0x339a47);_0x2cbfc5(_0x339a47);});});}exports[_0x427f('0x17')]=function(_0x918f80){var _0x10ce8c=this;return new Promise(function(_0x459f31,_0x305f30){return db[_0x427f('0x18')][_0x427f('0x19')](_0x918f80[_0x427f('0x1a')],{'raw':_0x918f80[_0x427f('0x1b')]?_0x918f80['options']['raw']===undefined?!![]:![]:!![]})[_0x427f('0xe')](function(_0x79cc9a){logger[_0x427f('0xf')](_0x427f('0x17'),_0x918f80);logger[_0x427f('0x1c')](_0x427f('0x17'),_0x918f80,JSON[_0x427f('0x12')](_0x79cc9a));_0x459f31(_0x79cc9a);})[_0x427f('0x1d')](function(_0x12e3bc){logger['error'](_0x427f('0x17'),_0x12e3bc[_0x427f('0x14')],_0x918f80);_0x305f30(_0x10ce8c[_0x427f('0x13')](0x1f4,_0x12e3bc[_0x427f('0x14')]));});});};exports[_0x427f('0x1e')]=function(_0x23bcfd){var _0xe35c00=this;return new Promise(function(_0x357643,_0x1f9e56){return db[_0x427f('0x18')][_0x427f('0x1f')](_0x23bcfd[_0x427f('0x1a')],{'raw':_0x23bcfd[_0x427f('0x1b')]?_0x23bcfd['options'][_0x427f('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23bcfd[_0x427f('0x1b')]?_0x23bcfd[_0x427f('0x1b')][_0x427f('0x21')]||null:null,'attributes':_0x23bcfd[_0x427f('0x1b')]?_0x23bcfd['options'][_0x427f('0x22')]||null:null,'limit':_0x23bcfd[_0x427f('0x1b')]?_0x23bcfd[_0x427f('0x1b')][_0x427f('0x23')]||null:null})[_0x427f('0xe')](function(_0x269d80){logger[_0x427f('0xf')]('UpdateVoiceAgentReport',_0x23bcfd);logger[_0x427f('0x1c')](_0x427f('0x1e'),_0x23bcfd,JSON[_0x427f('0x12')](_0x269d80));_0x357643(_0x269d80);})['catch'](function(_0x4ee5ed){logger[_0x427f('0x13')]('UpdateVoiceAgentReport',_0x4ee5ed[_0x427f('0x14')],_0x23bcfd);_0x1f9e56(_0xe35c00[_0x427f('0x13')](0x1f4,_0x4ee5ed[_0x427f('0x14')]));});});};
\ No newline at end of file
index 72d3af5..9f8fde5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['../../config/environment','./voiceCallReport.controller','get','index','isAuthenticated','describe','/:id','post','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2c74b9,_0xcbfb24){var _0x3e50cd=function(_0x1381d8){while(--_0x1381d8){_0x2c74b9['push'](_0x2c74b9['shift']());}};_0x3e50cd(++_0xcbfb24);}(_0xe5b3,0x133));var _0x3e5b=function(_0x53b4d7,_0x524015){_0x53b4d7=_0x53b4d7-0x0;var _0x4f2cd5=_0xe5b3[_0x53b4d7];return _0x4f2cd5;};'use strict';var multer=require('multer');var util=require(_0x3e5b('0x0'));var path=require(_0x3e5b('0x1'));var timeout=require(_0x3e5b('0x2'));var express=require(_0x3e5b('0x3'));var router=express[_0x3e5b('0x4')]();var fs_extra=require(_0x3e5b('0x5'));var auth=require(_0x3e5b('0x6'));var interaction=require(_0x3e5b('0x7'));var config=require(_0x3e5b('0x8'));var controller=require(_0x3e5b('0x9'));router[_0x3e5b('0xa')]('/',auth['isAuthenticated'](),controller[_0x3e5b('0xb')]);router[_0x3e5b('0xa')]('/describe',auth[_0x3e5b('0xc')](),controller[_0x3e5b('0xd')]);router[_0x3e5b('0xa')](_0x3e5b('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x3e5b('0xf')]('/',auth[_0x3e5b('0xc')](),controller[_0x3e5b('0x10')]);router[_0x3e5b('0x11')](_0x3e5b('0xe'),auth['isAuthenticated'](),controller[_0x3e5b('0x12')]);router['delete'](_0x3e5b('0xe'),auth[_0x3e5b('0xc')](),controller[_0x3e5b('0x13')]);module[_0x3e5b('0x14')]=router;
\ No newline at end of file
+var _0xf69d=['./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf69d,0xd3));var _0xdf69=function(_0x5c79a9,_0x777bfd){_0x5c79a9=_0x5c79a9-0x0;var _0x2aeb6a=_0xf69d[_0x5c79a9];return _0x2aeb6a;};'use strict';var multer=require(_0xdf69('0x0'));var util=require(_0xdf69('0x1'));var path=require(_0xdf69('0x2'));var timeout=require(_0xdf69('0x3'));var express=require(_0xdf69('0x4'));var router=express['Router']();var fs_extra=require(_0xdf69('0x5'));var auth=require(_0xdf69('0x6'));var interaction=require(_0xdf69('0x7'));var config=require(_0xdf69('0x8'));var controller=require(_0xdf69('0x9'));router[_0xdf69('0xa')]('/',auth[_0xdf69('0xb')](),controller[_0xdf69('0xc')]);router[_0xdf69('0xa')](_0xdf69('0xd'),auth[_0xdf69('0xb')](),controller[_0xdf69('0xe')]);router[_0xdf69('0xa')](_0xdf69('0xf'),auth[_0xdf69('0xb')](),controller[_0xdf69('0x10')]);router[_0xdf69('0x11')]('/',auth['isAuthenticated'](),controller[_0xdf69('0x12')]);router[_0xdf69('0x13')](_0xdf69('0xf'),auth[_0xdf69('0xb')](),controller[_0xdf69('0x14')]);router[_0xdf69('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index cd34868..17c9b1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbecf=['inbound','internal','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','STRING','ENUM'];(function(_0x529f1c,_0x437ed1){var _0x4d57ab=function(_0x39d479){while(--_0x39d479){_0x529f1c['push'](_0x529f1c['shift']());}};_0x4d57ab(++_0x437ed1);}(_0xbecf,0x15c));var _0xfbec=function(_0x30de51,_0x3f76f8){_0x30de51=_0x30de51-0x0;var _0xf7b237=_0xbecf[_0x30de51];return _0xf7b237;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xfbec('0x0')]},'type':{'type':Sequelize[_0xfbec('0x1')](_0xfbec('0x2'),_0xfbec('0x3'),'outbound',_0xfbec('0x4'),_0xfbec('0x5'),_0xfbec('0x6'))},'tag':{'type':Sequelize[_0xfbec('0x0')]},'accountcode':{'type':Sequelize[_0xfbec('0x0')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xfbec('0x0')]},'destinationcontext':{'type':Sequelize[_0xfbec('0x0')]},'callerid':{'type':Sequelize[_0xfbec('0x0')]},'channel':{'type':Sequelize[_0xfbec('0x0')]},'destinationchannel':{'type':Sequelize[_0xfbec('0x0')]},'lastapplication':{'type':Sequelize[_0xfbec('0x0')]},'lastdata':{'type':Sequelize[_0xfbec('0x7')]},'starttime':{'type':Sequelize[_0xfbec('0x8')]},'systemanswertime':{'type':Sequelize[_0xfbec('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xfbec('0x9')]},'mohtime':{'type':Sequelize[_0xfbec('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xfbec('0x0')]},'amaflags':{'type':Sequelize[_0xfbec('0x0')]},'userfield':{'type':Sequelize[_0xfbec('0x0')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xfbec('0x0')]},'userThirdDisposition':{'type':Sequelize[_0xfbec('0x0')]},'note':{'type':Sequelize[_0xfbec('0x0')]},'prefix':{'type':Sequelize[_0xfbec('0x0')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0xfbec('0x0')]}};
\ No newline at end of file
+var _0x6aa4=['STRING','inbound','internal','outbound','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports'];(function(_0x5e6310,_0x136d16){var _0x4900f9=function(_0x19d1f8){while(--_0x19d1f8){_0x5e6310['push'](_0x5e6310['shift']());}};_0x4900f9(++_0x136d16);}(_0x6aa4,0xb2));var _0x46aa=function(_0x4161b1,_0x23b6c3){_0x4161b1=_0x4161b1-0x0;var _0x4137a6=_0x6aa4[_0x4161b1];return _0x4137a6;};'use strict';var Sequelize=require(_0x46aa('0x0'));module[_0x46aa('0x1')]={'uniqueid':{'type':Sequelize[_0x46aa('0x2')]},'type':{'type':Sequelize['ENUM'](_0x46aa('0x3'),_0x46aa('0x4'),_0x46aa('0x5'),_0x46aa('0x6'),_0x46aa('0x7'),_0x46aa('0x8'))},'tag':{'type':Sequelize[_0x46aa('0x2')]},'accountcode':{'type':Sequelize[_0x46aa('0x2')]},'source':{'type':Sequelize[_0x46aa('0x2')]},'destination':{'type':Sequelize[_0x46aa('0x2')]},'destinationcontext':{'type':Sequelize[_0x46aa('0x2')]},'callerid':{'type':Sequelize[_0x46aa('0x2')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x46aa('0x2')]},'lastapplication':{'type':Sequelize[_0x46aa('0x2')]},'lastdata':{'type':Sequelize[_0x46aa('0x9')]},'starttime':{'type':Sequelize[_0x46aa('0xa')]},'systemanswertime':{'type':Sequelize[_0x46aa('0xa')]},'answertime':{'type':Sequelize[_0x46aa('0xa')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize[_0x46aa('0xb')]},'billableseconds':{'type':Sequelize[_0x46aa('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x46aa('0x2')]},'amaflags':{'type':Sequelize[_0x46aa('0x2')]},'userfield':{'type':Sequelize[_0x46aa('0x2')]},'userDisposition':{'type':Sequelize[_0x46aa('0x2')]},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0x46aa('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x46aa('0x2')]},'routeid':{'type':Sequelize[_0x46aa('0xb')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9f78683..822fd8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
+var _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(_0x3f10b0,_0x44451b){var _0x1f4fee=function(_0x37d752){while(--_0x37d752){_0x3f10b0['push'](_0x3f10b0['shift']());}};_0x1f4fee(++_0x44451b);}(_0xdb28,0x106));var _0x8db2=function(_0x970ddd,_0x29546b){_0x970ddd=_0x970ddd-0x0;var _0x395fba=_0xdb28[_0x970ddd];return _0x395fba;};'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
index d9b5fcd..c03ae85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7284=['../../config/logger','api','moment','bluebird','request-promise','path','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x7284,0x9b));var _0x4728=function(_0x5897c0,_0x588caf){_0x5897c0=_0x5897c0-0x0;var _0x530488=_0x7284[_0x5897c0];return _0x530488;};'use strict';var _=require(_0x4728('0x0'));var util=require('util');var logger=require(_0x4728('0x1'))(_0x4728('0x2'));var moment=require(_0x4728('0x3'));var BPromise=require(_0x4728('0x4'));var rp=require(_0x4728('0x5'));var fs=require('fs');var path=require(_0x4728('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4728('0x7'));module[_0x4728('0x8')]=function(_0x20a72e,_0x4698a9){return _0x20a72e[_0x4728('0x9')](_0x4728('0xa'),attributes,{'tableName':_0x4728('0xb'),'paranoid':![],'indexes':[{'fields':[_0x4728('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ead=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','api','moment'];(function(_0x1f400e,_0x4caec7){var _0x586b88=function(_0x1bcb7c){while(--_0x1bcb7c){_0x1f400e['push'](_0x1f400e['shift']());}};_0x586b88(++_0x4caec7);}(_0x9ead,0x191));var _0xd9ea=function(_0x1fef34,_0x457d7f){_0x1fef34=_0x1fef34-0x0;var _0x11063b=_0x9ead[_0x1fef34];return _0x11063b;};'use strict';var _=require(_0xd9ea('0x0'));var util=require(_0xd9ea('0x1'));var logger=require('../../config/logger')(_0xd9ea('0x2'));var moment=require(_0xd9ea('0x3'));var BPromise=require(_0xd9ea('0x4'));var rp=require(_0xd9ea('0x5'));var fs=require('fs');var path=require(_0xd9ea('0x6'));var rimraf=require(_0xd9ea('0x7'));var config=require(_0xd9ea('0x8'));var attributes=require(_0xd9ea('0x9'));module[_0xd9ea('0xa')]=function(_0x1f0bc7,_0x4a39ff){return _0x1f0bc7[_0xd9ea('0xb')](_0xd9ea('0xc'),attributes,{'tableName':_0xd9ea('0xd'),'paranoid':![],'indexes':[{'fields':[_0xd9ea('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 20241c2..1ee4426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x621e=['UpdateVoiceCallReport','raw','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','GetVoiceCallReport','findAll','options','where','attributes','include','map','model','stringify','catch','CreateVoiceCallReport','VoiceCallReport','debug'];(function(_0x4c6eaa,_0x391f8b){var _0x403439=function(_0x3dd4e7){while(--_0x3dd4e7){_0x4c6eaa['push'](_0x4c6eaa['shift']());}};_0x403439(++_0x391f8b);}(_0x621e,0xd5));var _0xe621=function(_0x59f0d1,_0x1974f5){_0x59f0d1=_0x59f0d1-0x0;var _0x4d0486=_0x621e[_0x59f0d1];return _0x4d0486;};'use strict';var _=require(_0xe621('0x0'));var util=require(_0xe621('0x1'));var moment=require('moment');var BPromise=require(_0xe621('0x2'));var rs=require(_0xe621('0x3'));var fs=require('fs');var Redis=require(_0xe621('0x4'));var db=require(_0xe621('0x5'))['db'];var utils=require(_0xe621('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xe621('0x7'));var jayson=require(_0xe621('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c6648,_0x2c3f6c,_0x1f4181){return new BPromise(function(_0x3b8f0a,_0x4498b8){return client[_0xe621('0x9')](_0x2c6648,_0x1f4181)[_0xe621('0xa')](function(_0x43373e){logger['info'](_0xe621('0xb'),_0x2c3f6c,_0xe621('0xc'));logger['debug'](_0xe621('0xd'),_0x2c3f6c,_0xe621('0xc'),JSON['stringify'](_0x43373e));if(_0x43373e[_0xe621('0xe')]){if(_0x43373e[_0xe621('0xe')][_0xe621('0xf')]===0x1f4){logger[_0xe621('0xe')](_0xe621('0xb'),_0x2c3f6c,_0x43373e['error'][_0xe621('0x10')]);return _0x4498b8(_0x43373e[_0xe621('0xe')]['message']);}logger[_0xe621('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x2c3f6c,_0x43373e['error'][_0xe621('0x10')]);return _0x3b8f0a(_0x43373e['error'][_0xe621('0x10')]);}else{logger[_0xe621('0x11')](_0xe621('0xb'),_0x2c3f6c,_0xe621('0xc'));_0x3b8f0a(_0x43373e[_0xe621('0x12')][_0xe621('0x10')]);}})['catch'](function(_0x1684b8){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x2c3f6c,_0x1684b8);_0x4498b8(_0x1684b8);});});}exports[_0xe621('0x13')]=function(_0x40c18a){var _0x1b4f7a=this;return new Promise(function(_0x6e06e2,_0x2614ef){return db['VoiceCallReport'][_0xe621('0x14')]({'raw':_0x40c18a[_0xe621('0x15')]?_0x40c18a['options']['raw']===undefined?!![]:![]:!![],'where':_0x40c18a[_0xe621('0x15')]?_0x40c18a['options'][_0xe621('0x16')]||null:null,'attributes':_0x40c18a[_0xe621('0x15')]?_0x40c18a[_0xe621('0x15')][_0xe621('0x17')]||null:null,'limit':_0x40c18a['options']?_0x40c18a[_0xe621('0x15')]['limit']||null:null,'include':_0x40c18a[_0xe621('0x15')]?_0x40c18a[_0xe621('0x15')][_0xe621('0x18')]?_[_0xe621('0x19')](_0x40c18a[_0xe621('0x15')][_0xe621('0x18')],function(_0x5ab6cc){return{'model':db[_0x5ab6cc[_0xe621('0x1a')]],'as':_0x5ab6cc['as'],'attributes':_0x5ab6cc['attributes'],'include':_0x5ab6cc[_0xe621('0x18')]?_[_0xe621('0x19')](_0x5ab6cc[_0xe621('0x18')],function(_0x178976){return{'model':db[_0x178976[_0xe621('0x1a')]],'as':_0x178976['as'],'attributes':_0x178976['attributes'],'include':_0x178976[_0xe621('0x18')]?_['map'](_0x178976[_0xe621('0x18')],function(_0x3e2dc6){return{'model':db[_0x3e2dc6['model']],'as':_0x3e2dc6['as'],'attributes':_0x3e2dc6[_0xe621('0x17')]};}):[]};}):[]};}):[]:[]})[_0xe621('0xa')](function(_0x53ac66){logger[_0xe621('0x11')](_0xe621('0x13'),_0x40c18a);logger['debug'](_0xe621('0x13'),_0x40c18a,JSON[_0xe621('0x1b')](_0x53ac66));_0x6e06e2(_0x53ac66);})[_0xe621('0x1c')](function(_0x85c9ae){logger['error'](_0xe621('0x13'),_0x85c9ae[_0xe621('0x10')],_0x40c18a);_0x2614ef(_0x1b4f7a[_0xe621('0xe')](0x1f4,_0x85c9ae['message']));});});};exports[_0xe621('0x1d')]=function(_0x2a0e55){var _0x518418=this;return new Promise(function(_0x53c3af,_0x2b2a18){return db[_0xe621('0x1e')]['create'](_0x2a0e55['body'],{'raw':_0x2a0e55['options']?_0x2a0e55['options']['raw']===undefined?!![]:![]:!![]})[_0xe621('0xa')](function(_0x202b6d){logger[_0xe621('0x11')](_0xe621('0x1d'),_0x2a0e55);logger[_0xe621('0x1f')](_0xe621('0x1d'),_0x2a0e55,JSON[_0xe621('0x1b')](_0x202b6d));_0x53c3af(_0x202b6d);})[_0xe621('0x1c')](function(_0x5603e5){logger[_0xe621('0xe')](_0xe621('0x1d'),_0x5603e5[_0xe621('0x10')],_0x2a0e55);_0x2b2a18(_0x518418[_0xe621('0xe')](0x1f4,_0x5603e5['message']));});});};exports[_0xe621('0x20')]=function(_0x4ac1c8){var _0x1cd4d9=this;return new Promise(function(_0x26602c,_0x289805){return db[_0xe621('0x1e')]['update'](_0x4ac1c8['body'],{'raw':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8['options'][_0xe621('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8[_0xe621('0x15')]['where']||null:null,'attributes':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8[_0xe621('0x15')][_0xe621('0x17')]||null:null,'limit':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8[_0xe621('0x15')][_0xe621('0x22')]||null:null})['then'](function(_0x29bf49){logger[_0xe621('0x11')](_0xe621('0x20'),_0x4ac1c8);logger[_0xe621('0x1f')](_0xe621('0x20'),_0x4ac1c8,JSON[_0xe621('0x1b')](_0x29bf49));_0x26602c(_0x29bf49);})['catch'](function(_0x433319){logger[_0xe621('0xe')](_0xe621('0x20'),_0x433319[_0xe621('0x10')],_0x4ac1c8);_0x289805(_0x1cd4d9[_0xe621('0xe')](0x1f4,_0x433319['message']));});});};
\ No newline at end of file
+var _0xad82=['GetVoiceCallReport','stringify','create','body','CreateVoiceCallReport','where','UpdateVoiceCallReport','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','VoiceCallReport','findAll','raw','options','attributes','limit','map','include','model'];(function(_0x4ab60b,_0x49e637){var _0x2497c7=function(_0x329eb6){while(--_0x329eb6){_0x4ab60b['push'](_0x4ab60b['shift']());}};_0x2497c7(++_0x49e637);}(_0xad82,0x15b));var _0x2ad8=function(_0x2d58e6,_0x55cb14){_0x2d58e6=_0x2d58e6-0x0;var _0x5bcd81=_0xad82[_0x2d58e6];return _0x5bcd81;};'use strict';var _=require(_0x2ad8('0x0'));var util=require('util');var moment=require(_0x2ad8('0x1'));var BPromise=require('bluebird');var rs=require(_0x2ad8('0x2'));var fs=require('fs');var Redis=require(_0x2ad8('0x3'));var db=require(_0x2ad8('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2ad8('0x5'))(_0x2ad8('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xf740ee,_0x2ea266,_0x37c3f9){return new BPromise(function(_0x168349,_0x19093e){return client[_0x2ad8('0x7')](_0xf740ee,_0x37c3f9)[_0x2ad8('0x8')](function(_0x3131a4){logger[_0x2ad8('0x9')](_0x2ad8('0xa'),_0x2ea266,_0x2ad8('0xb'));logger[_0x2ad8('0xc')](_0x2ad8('0xd'),_0x2ea266,_0x2ad8('0xb'),JSON['stringify'](_0x3131a4));if(_0x3131a4[_0x2ad8('0xe')]){if(_0x3131a4[_0x2ad8('0xe')][_0x2ad8('0xf')]===0x1f4){logger[_0x2ad8('0xe')](_0x2ad8('0xa'),_0x2ea266,_0x3131a4[_0x2ad8('0xe')]['message']);return _0x19093e(_0x3131a4['error'][_0x2ad8('0x10')]);}logger[_0x2ad8('0xe')](_0x2ad8('0xa'),_0x2ea266,_0x3131a4[_0x2ad8('0xe')][_0x2ad8('0x10')]);return _0x168349(_0x3131a4[_0x2ad8('0xe')]['message']);}else{logger['info'](_0x2ad8('0xa'),_0x2ea266,_0x2ad8('0xb'));_0x168349(_0x3131a4['result'][_0x2ad8('0x10')]);}})[_0x2ad8('0x11')](function(_0x53f3bb){logger[_0x2ad8('0xe')](_0x2ad8('0xa'),_0x2ea266,_0x53f3bb);_0x19093e(_0x53f3bb);});});}exports['GetVoiceCallReport']=function(_0x405d50){var _0x1b7337=this;return new Promise(function(_0x4207c3,_0x28f2c0){return db[_0x2ad8('0x12')][_0x2ad8('0x13')]({'raw':_0x405d50['options']?_0x405d50['options'][_0x2ad8('0x14')]===undefined?!![]:![]:!![],'where':_0x405d50['options']?_0x405d50[_0x2ad8('0x15')]['where']||null:null,'attributes':_0x405d50[_0x2ad8('0x15')]?_0x405d50[_0x2ad8('0x15')][_0x2ad8('0x16')]||null:null,'limit':_0x405d50['options']?_0x405d50[_0x2ad8('0x15')][_0x2ad8('0x17')]||null:null,'include':_0x405d50[_0x2ad8('0x15')]?_0x405d50[_0x2ad8('0x15')]['include']?_[_0x2ad8('0x18')](_0x405d50['options']['include'],function(_0x43b2b3){return{'model':db[_0x43b2b3['model']],'as':_0x43b2b3['as'],'attributes':_0x43b2b3[_0x2ad8('0x16')],'include':_0x43b2b3[_0x2ad8('0x19')]?_[_0x2ad8('0x18')](_0x43b2b3[_0x2ad8('0x19')],function(_0x201712){return{'model':db[_0x201712[_0x2ad8('0x1a')]],'as':_0x201712['as'],'attributes':_0x201712['attributes'],'include':_0x201712['include']?_[_0x2ad8('0x18')](_0x201712[_0x2ad8('0x19')],function(_0x543a9b){return{'model':db[_0x543a9b['model']],'as':_0x543a9b['as'],'attributes':_0x543a9b[_0x2ad8('0x16')]};}):[]};}):[]};}):[]:[]})[_0x2ad8('0x8')](function(_0x49882b){logger[_0x2ad8('0x9')](_0x2ad8('0x1b'),_0x405d50);logger[_0x2ad8('0xc')]('GetVoiceCallReport',_0x405d50,JSON[_0x2ad8('0x1c')](_0x49882b));_0x4207c3(_0x49882b);})[_0x2ad8('0x11')](function(_0x17e89a){logger[_0x2ad8('0xe')]('GetVoiceCallReport',_0x17e89a[_0x2ad8('0x10')],_0x405d50);_0x28f2c0(_0x1b7337[_0x2ad8('0xe')](0x1f4,_0x17e89a[_0x2ad8('0x10')]));});});};exports['CreateVoiceCallReport']=function(_0x13cdc7){var _0x4ed8ae=this;return new Promise(function(_0x3ff1d8,_0x586b6c){return db[_0x2ad8('0x12')][_0x2ad8('0x1d')](_0x13cdc7[_0x2ad8('0x1e')],{'raw':_0x13cdc7[_0x2ad8('0x15')]?_0x13cdc7[_0x2ad8('0x15')][_0x2ad8('0x14')]===undefined?!![]:![]:!![]})[_0x2ad8('0x8')](function(_0x2bc247){logger[_0x2ad8('0x9')]('CreateVoiceCallReport',_0x13cdc7);logger[_0x2ad8('0xc')](_0x2ad8('0x1f'),_0x13cdc7,JSON[_0x2ad8('0x1c')](_0x2bc247));_0x3ff1d8(_0x2bc247);})['catch'](function(_0x3002cc){logger[_0x2ad8('0xe')](_0x2ad8('0x1f'),_0x3002cc[_0x2ad8('0x10')],_0x13cdc7);_0x586b6c(_0x4ed8ae[_0x2ad8('0xe')](0x1f4,_0x3002cc['message']));});});};exports['UpdateVoiceCallReport']=function(_0x4c9ee0){var _0x4d7365=this;return new Promise(function(_0xca5d38,_0x1b3423){return db['VoiceCallReport']['update'](_0x4c9ee0['body'],{'raw':_0x4c9ee0[_0x2ad8('0x15')]?_0x4c9ee0[_0x2ad8('0x15')][_0x2ad8('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c9ee0['options']?_0x4c9ee0['options'][_0x2ad8('0x20')]||null:null,'attributes':_0x4c9ee0[_0x2ad8('0x15')]?_0x4c9ee0[_0x2ad8('0x15')][_0x2ad8('0x16')]||null:null,'limit':_0x4c9ee0['options']?_0x4c9ee0['options']['limit']||null:null})[_0x2ad8('0x8')](function(_0x5441be){logger[_0x2ad8('0x9')](_0x2ad8('0x21'),_0x4c9ee0);logger[_0x2ad8('0xc')]('UpdateVoiceCallReport',_0x4c9ee0,JSON['stringify'](_0x5441be));_0xca5d38(_0x5441be);})['catch'](function(_0xc35809){logger[_0x2ad8('0xe')](_0x2ad8('0x21'),_0xc35809[_0x2ad8('0x10')],_0x4c9ee0);_0x1b3423(_0x4d7365[_0x2ad8('0xe')](0x1f4,_0xc35809[_0x2ad8('0x10')]));});});};
\ No newline at end of file
index d1d12a5..bc8560a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb5=['Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','get','/:id','show','create','put','update','destroy','multer','path','connect-timeout','express'];(function(_0x1da46b,_0x109ac4){var _0x3a94ef=function(_0x31a2b4){while(--_0x31a2b4){_0x1da46b['push'](_0x1da46b['shift']());}};_0x3a94ef(++_0x109ac4);}(_0x8bb5,0x1b6));var _0x58bb=function(_0x109b85,_0x480ebe){_0x109b85=_0x109b85-0x0;var _0x5949bc=_0x8bb5[_0x109b85];return _0x5949bc;};'use strict';var multer=require(_0x58bb('0x0'));var util=require('util');var path=require(_0x58bb('0x1'));var timeout=require(_0x58bb('0x2'));var express=require(_0x58bb('0x3'));var router=express[_0x58bb('0x4')]();var fs_extra=require(_0x58bb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x58bb('0x6'));var config=require(_0x58bb('0x7'));var controller=require(_0x58bb('0x8'));router['get']('/',auth[_0x58bb('0x9')](),controller['index']);router[_0x58bb('0xa')](_0x58bb('0xb'),auth[_0x58bb('0x9')](),controller[_0x58bb('0xc')]);router['post']('/',auth[_0x58bb('0x9')](),controller[_0x58bb('0xd')]);router[_0x58bb('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x58bb('0xf')]);router['delete'](_0x58bb('0xb'),auth[_0x58bb('0x9')](),controller[_0x58bb('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb814=['put','delete','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','get','/:id'];(function(_0x386cbd,_0x4e7395){var _0x22d2eb=function(_0x41fdf6){while(--_0x41fdf6){_0x386cbd['push'](_0x386cbd['shift']());}};_0x22d2eb(++_0x4e7395);}(_0xb814,0x15c));var _0x4b81=function(_0x3aceef,_0x1e7dd3){_0x3aceef=_0x3aceef-0x0;var _0x3030f1=_0xb814[_0x3aceef];return _0x3030f1;};'use strict';var multer=require(_0x4b81('0x0'));var util=require(_0x4b81('0x1'));var path=require(_0x4b81('0x2'));var timeout=require(_0x4b81('0x3'));var express=require('express');var router=express[_0x4b81('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4b81('0x5'));var interaction=require(_0x4b81('0x6'));var config=require(_0x4b81('0x7'));var controller=require(_0x4b81('0x8'));router['get']('/',auth[_0x4b81('0x9')](),controller['index']);router[_0x4b81('0xa')](_0x4b81('0xb'),auth[_0x4b81('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x4b81('0xc')](_0x4b81('0xb'),auth[_0x4b81('0x9')](),controller['update']);router[_0x4b81('0xd')](_0x4b81('0xb'),auth[_0x4b81('0x9')](),controller[_0x4b81('0xe')]);module['exports']=router;
\ No newline at end of file
index e881562..e771176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c74=['options','BOOLEAN','exports','STRING','setDataValue','getDataValue'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0c74,0x146));var _0x40c7=function(_0x2a3cb2,_0x55280a){_0x2a3cb2=_0x2a3cb2-0x0;var _0x4120af=_0x0c74[_0x2a3cb2];return _0x4120af;};'use strict';var Sequelize=require('sequelize');module[_0x40c7('0x0')]={'name':{'type':Sequelize[_0x40c7('0x1')]},'prefix':{'type':Sequelize[_0x40c7('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x40c7('0x1')],'set':function(_0x3a197c){this[_0x40c7('0x2')]('options',_0x3a197c?_0x3a197c['join'](''):[]);},'get':function(){return this[_0x40c7('0x3')]('options')?this[_0x40c7('0x3')](_0x40c7('0x4'))['split'](''):[];}},'auth':{'type':Sequelize[_0x40c7('0x5')],'defaultValue':![]},'password':{'type':Sequelize[_0x40c7('0x1')]},'record':{'type':Sequelize[_0x40c7('0x5')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x40c7('0x1')]},'description':{'type':Sequelize[_0x40c7('0x1')]}};
\ No newline at end of file
+var _0xc3f7=['join','getDataValue','BOOLEAN','exports','name','STRING','options'];(function(_0x55f55f,_0x143195){var _0x4500d5=function(_0x161206){while(--_0x161206){_0x55f55f['push'](_0x55f55f['shift']());}};_0x4500d5(++_0x143195);}(_0xc3f7,0xb2));var _0x7c3f=function(_0x4d509e,_0x5dd35d){_0x4d509e=_0x4d509e-0x0;var _0x3de688=_0xc3f7[_0x4d509e];return _0x3de688;};'use strict';var Sequelize=require('sequelize');module[_0x7c3f('0x0')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING'],'unique':_0x7c3f('0x1'),'allowNull':![]},'options':{'type':Sequelize[_0x7c3f('0x2')],'set':function(_0xd01740){this['setDataValue'](_0x7c3f('0x3'),_0xd01740?_0xd01740[_0x7c3f('0x4')](''):[]);},'get':function(){return this[_0x7c3f('0x5')](_0x7c3f('0x3'))?this[_0x7c3f('0x5')](_0x7c3f('0x3'))['split'](''):[];}},'auth':{'type':Sequelize[_0x7c3f('0x6')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x7c3f('0x2')]},'description':{'type':Sequelize[_0x7c3f('0x2')]}};
\ No newline at end of file
index a6e9baa..93bfc84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81a5=['../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','ChanSpies','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','VoiceChanSpy','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0x81a5,0x1c8));var _0x581a=function(_0x4cf87c,_0x1cfb29){_0x4cf87c=_0x4cf87c-0x0;var _0xd0d7c7=_0x81a5[_0x4cf87c];return _0xd0d7c7;};'use strict';var emlformat=require(_0x581a('0x0'));var rimraf=require(_0x581a('0x1'));var zipdir=require(_0x581a('0x2'));var jsonpatch=require(_0x581a('0x3'));var rp=require(_0x581a('0x4'));var moment=require(_0x581a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x581a('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x581a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x581a('0x8'));var squel=require(_0x581a('0x9'));var crypto=require(_0x581a('0xa'));var jsforce=require(_0x581a('0xb'));var deskjs=require(_0x581a('0xc'));var toCsv=require(_0x581a('0xd'));var querystring=require(_0x581a('0xe'));var Papa=require(_0x581a('0xf'));var Redis=require('ioredis');var authService=require(_0x581a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x581a('0x11'));var hardwareService=require(_0x581a('0x12'));var logger=require(_0x581a('0x13'))(_0x581a('0x14'));var utils=require('../../config/utils');var config=require(_0x581a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dac2a,_0x48a2e3){_0x48a2e3=_0x48a2e3||0xcc;return function(_0x96c299){if(_0x96c299){return _0x5dac2a[_0x581a('0x16')](_0x48a2e3);}return _0x5dac2a['status'](_0x48a2e3)[_0x581a('0x17')]();};}function respondWithResult(_0x35166e,_0x896740){_0x896740=_0x896740||0xc8;return function(_0xcaab1f){if(_0xcaab1f){return _0x35166e[_0x581a('0x18')](_0x896740)[_0x581a('0x19')](_0xcaab1f);}};}function respondWithFilteredResult(_0x24b133,_0x405164){return function(_0x4a2449){if(_0x4a2449){var _0x11f50b=typeof _0x405164[_0x581a('0x1a')]==='undefined'&&typeof _0x405164[_0x581a('0x1b')]===_0x581a('0x1c');var _0x2679da=_0x4a2449[_0x581a('0x1d')];var _0x5b0970=_0x11f50b?0x0:_0x405164[_0x581a('0x1a')];var _0x2fb5b7=_0x11f50b?_0x4a2449['count']:_0x405164['offset']+_0x405164[_0x581a('0x1b')];var _0x24b475;if(_0x2fb5b7>=_0x2679da){_0x2fb5b7=_0x2679da;_0x24b475=0xc8;}else{_0x24b475=0xce;}_0x24b133[_0x581a('0x18')](_0x24b475);return _0x24b133[_0x581a('0x1e')](_0x581a('0x1f'),_0x5b0970+'-'+_0x2fb5b7+'/'+_0x2679da)[_0x581a('0x19')](_0x4a2449);}return null;};}function patchUpdates(_0x19e468){return function(_0x33d03f){try{jsonpatch['apply'](_0x33d03f,_0x19e468,!![]);}catch(_0x44eb17){return BPromise[_0x581a('0x20')](_0x44eb17);}return _0x33d03f[_0x581a('0x21')]();};}function saveUpdates(_0x4f619d,_0x4ffe49){return function(_0x1c5f4f){if(_0x1c5f4f){return _0x1c5f4f[_0x581a('0x22')](_0x4f619d)[_0x581a('0x23')](function(_0x223bbb){return _0x223bbb;});}return null;};}function removeEntity(_0x58c2b8,_0x41a2c2){return function(_0x62a721){if(_0x62a721){return _0x62a721['destroy']()[_0x581a('0x23')](function(){var _0x3ce207=_0x62a721[_0x581a('0x24')]({'plain':!![]});var _0x9f9947=_0x581a('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x9f9947,'resourceId':_0x3ce207['id']}})[_0x581a('0x23')](function(){return _0x62a721;});})['then'](function(){_0x58c2b8['status'](0xcc)[_0x581a('0x17')]();});}};}function handleEntityNotFound(_0x2a71d9,_0x1edf48){return function(_0x4c9422){if(!_0x4c9422){_0x2a71d9[_0x581a('0x16')](0x194);}return _0x4c9422;};}function handleError(_0x4839c3,_0x111ec2){_0x111ec2=_0x111ec2||0x1f4;return function(_0x2136fb){logger['error'](_0x2136fb[_0x581a('0x26')]);if(_0x2136fb[_0x581a('0x27')]){delete _0x2136fb[_0x581a('0x27')];}_0x4839c3[_0x581a('0x18')](_0x111ec2)[_0x581a('0x28')](_0x2136fb);};}exports[_0x581a('0x29')]=function(_0x1ac86e,_0x38e3c7){var _0x20a604={},_0x247b43={},_0x5aa2a1={'count':0x0,'rows':[]};var _0x23e4f1=_[_0x581a('0x2a')](db['VoiceChanSpy'][_0x581a('0x2b')],function(_0x1b359b){return{'name':_0x1b359b['fieldName'],'type':_0x1b359b[_0x581a('0x2c')][_0x581a('0x2d')]};});_0x247b43[_0x581a('0x2e')]=_[_0x581a('0x2a')](_0x23e4f1,_0x581a('0x27'));_0x247b43[_0x581a('0x2f')]=_[_0x581a('0x30')](_0x1ac86e[_0x581a('0x2f')]);_0x247b43[_0x581a('0x31')]=_[_0x581a('0x32')](_0x247b43['model'],_0x247b43['query']);_0x20a604['attributes']=_[_0x581a('0x32')](_0x247b43[_0x581a('0x2e')],qs[_0x581a('0x33')](_0x1ac86e['query']['fields']));_0x20a604[_0x581a('0x34')]=_0x20a604[_0x581a('0x34')][_0x581a('0x35')]?_0x20a604[_0x581a('0x34')]:_0x247b43['model'];if(!_0x1ac86e[_0x581a('0x2f')][_0x581a('0x36')]('nolimit')){_0x20a604[_0x581a('0x1b')]=qs[_0x581a('0x1b')](_0x1ac86e['query'][_0x581a('0x1b')]);_0x20a604[_0x581a('0x1a')]=qs[_0x581a('0x1a')](_0x1ac86e['query'][_0x581a('0x1a')]);}_0x20a604[_0x581a('0x37')]=qs[_0x581a('0x38')](_0x1ac86e[_0x581a('0x2f')][_0x581a('0x38')]);_0x20a604[_0x581a('0x39')]=qs[_0x581a('0x31')](_[_0x581a('0x3a')](_0x1ac86e[_0x581a('0x2f')],_0x247b43[_0x581a('0x31')]),_0x23e4f1);if(_0x1ac86e['query'][_0x581a('0x3b')]){_0x20a604[_0x581a('0x39')]=_[_0x581a('0x3c')](_0x20a604[_0x581a('0x39')],{'$or':_[_0x581a('0x2a')](_0x23e4f1,function(_0x313b49){if(_0x313b49[_0x581a('0x2c')]!==_0x581a('0x3d')){var _0x236adc={};_0x236adc[_0x313b49['name']]={'$like':'%'+_0x1ac86e[_0x581a('0x2f')][_0x581a('0x3b')]+'%'};return _0x236adc;}})});}_0x20a604=_[_0x581a('0x3c')]({},_0x20a604,_0x1ac86e['options']);var _0x481d41={'where':_0x20a604['where']};return db['VoiceChanSpy'][_0x581a('0x1d')](_0x481d41)[_0x581a('0x23')](function(_0x174aa4){_0x5aa2a1['count']=_0x174aa4;if(_0x1ac86e[_0x581a('0x2f')]['includeAll']){_0x20a604[_0x581a('0x3e')]=[{'all':!![]}];}return db[_0x581a('0x3f')]['findAll'](_0x20a604);})['then'](function(_0x473a1f){_0x5aa2a1[_0x581a('0x40')]=_0x473a1f;return _0x5aa2a1;})['then'](respondWithFilteredResult(_0x38e3c7,_0x20a604))[_0x581a('0x41')](handleError(_0x38e3c7,null));};exports[_0x581a('0x42')]=function(_0xfbc04d,_0x96aa0d){var _0x1a25a1={'raw':![],'where':{'id':_0xfbc04d[_0x581a('0x43')]['id']}},_0x1a2072={};_0x1a2072[_0x581a('0x2e')]=_[_0x581a('0x30')](db[_0x581a('0x3f')][_0x581a('0x2b')]);_0x1a2072[_0x581a('0x2f')]=_['keys'](_0xfbc04d['query']);_0x1a2072[_0x581a('0x31')]=_[_0x581a('0x32')](_0x1a2072[_0x581a('0x2e')],_0x1a2072[_0x581a('0x2f')]);_0x1a25a1[_0x581a('0x34')]=_['intersection'](_0x1a2072[_0x581a('0x2e')],qs[_0x581a('0x33')](_0xfbc04d[_0x581a('0x2f')][_0x581a('0x33')]));_0x1a25a1[_0x581a('0x34')]=_0x1a25a1[_0x581a('0x34')][_0x581a('0x35')]?_0x1a25a1['attributes']:_0x1a2072[_0x581a('0x2e')];if(_0xfbc04d[_0x581a('0x2f')]['includeAll']){_0x1a25a1['include']=[{'all':!![]}];}_0x1a25a1=_['merge']({},_0x1a25a1,_0xfbc04d[_0x581a('0x44')]);return db[_0x581a('0x3f')][_0x581a('0x45')](_0x1a25a1)['then'](handleEntityNotFound(_0x96aa0d,null))[_0x581a('0x23')](respondWithResult(_0x96aa0d,null))[_0x581a('0x41')](handleError(_0x96aa0d,null));};exports[_0x581a('0x46')]=function(_0x3b80ca,_0x26c2d2){return db[_0x581a('0x3f')][_0x581a('0x46')](_0x3b80ca[_0x581a('0x47')],{})[_0x581a('0x23')](function(_0x2513eb){var _0x2c8c68=_0x3b80ca['user'][_0x581a('0x24')]({'plain':!![]});if(!_0x2c8c68)throw new Error(_0x581a('0x48'));if(_0x2c8c68['role']===_0x581a('0x49')){var _0x181818=_0x2513eb[_0x581a('0x24')]({'plain':!![]});var _0x2aa9c9=_0x581a('0x25');return db['UserProfileSection'][_0x581a('0x45')]({'where':{'name':_0x2aa9c9,'userProfileId':_0x2c8c68[_0x581a('0x4a')]},'raw':!![]})['then'](function(_0x315a73){if(_0x315a73&&_0x315a73['autoAssociation']===0x0){return db[_0x581a('0x4b')][_0x581a('0x46')]({'name':_0x181818[_0x581a('0x27')],'resourceId':_0x181818['id'],'type':_0x315a73[_0x581a('0x27')],'sectionId':_0x315a73['id']},{})['then'](function(){return _0x2513eb;});}else{return _0x2513eb;}})[_0x581a('0x41')](function(_0xca8463){logger[_0x581a('0x4c')](_0x581a('0x4d'),_0xca8463);throw _0xca8463;});}return _0x2513eb;})[_0x581a('0x23')](respondWithResult(_0x26c2d2,0xc9))[_0x581a('0x41')](handleError(_0x26c2d2,null));};exports[_0x581a('0x22')]=function(_0x2ec6f7,_0x70286a){if(_0x2ec6f7[_0x581a('0x47')]['id']){delete _0x2ec6f7[_0x581a('0x47')]['id'];}return db[_0x581a('0x3f')]['find']({'where':{'id':_0x2ec6f7[_0x581a('0x43')]['id']}})[_0x581a('0x23')](handleEntityNotFound(_0x70286a,null))[_0x581a('0x23')](saveUpdates(_0x2ec6f7[_0x581a('0x47')],null))[_0x581a('0x23')](respondWithResult(_0x70286a,null))[_0x581a('0x41')](handleError(_0x70286a,null));};exports[_0x581a('0x4e')]=function(_0x2d26aa,_0x101f79){return db[_0x581a('0x3f')][_0x581a('0x45')]({'where':{'id':_0x2d26aa['params']['id']}})[_0x581a('0x23')](handleEntityNotFound(_0x101f79,null))[_0x581a('0x23')](removeEntity(_0x101f79,null))[_0x581a('0x41')](handleError(_0x101f79,null));};
\ No newline at end of file
+var _0xbe31=['save','update','then','destroy','ChanSpies','UserProfileResource','error','name','send','map','type','key','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','options','VoiceChanSpy','includeAll','include','findAll','catch','show','params','rawAttributes','length','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xbe31,0x83));var _0x1be3=function(_0x396e83,_0x2d51e2){_0x396e83=_0x396e83-0x0;var _0x4a42cc=_0xbe31[_0x396e83];return _0x4a42cc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1be3('0x0'));var zipdir=require(_0x1be3('0x1'));var jsonpatch=require(_0x1be3('0x2'));var rp=require(_0x1be3('0x3'));var moment=require(_0x1be3('0x4'));var BPromise=require(_0x1be3('0x5'));var Mustache=require(_0x1be3('0x6'));var util=require(_0x1be3('0x7'));var path=require(_0x1be3('0x8'));var sox=require('sox');var csv=require(_0x1be3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1be3('0xa'));var _=require(_0x1be3('0xb'));var squel=require(_0x1be3('0xc'));var crypto=require(_0x1be3('0xd'));var jsforce=require(_0x1be3('0xe'));var deskjs=require(_0x1be3('0xf'));var toCsv=require(_0x1be3('0x9'));var querystring=require(_0x1be3('0x10'));var Papa=require(_0x1be3('0x11'));var Redis=require(_0x1be3('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1be3('0x13'));var as=require(_0x1be3('0x14'));var hardwareService=require(_0x1be3('0x15'));var logger=require(_0x1be3('0x16'))(_0x1be3('0x17'));var utils=require(_0x1be3('0x18'));var config=require(_0x1be3('0x19'));var licenseUtil=require(_0x1be3('0x1a'));var db=require(_0x1be3('0x1b'))['db'];function respondWithStatusCode(_0x50552d,_0x3601f7){_0x3601f7=_0x3601f7||0xcc;return function(_0x492f66){if(_0x492f66){return _0x50552d[_0x1be3('0x1c')](_0x3601f7);}return _0x50552d[_0x1be3('0x1d')](_0x3601f7)['end']();};}function respondWithResult(_0x26f888,_0x573684){_0x573684=_0x573684||0xc8;return function(_0xc7cc3){if(_0xc7cc3){return _0x26f888[_0x1be3('0x1d')](_0x573684)[_0x1be3('0x1e')](_0xc7cc3);}};}function respondWithFilteredResult(_0xd30cd,_0x1156bc){return function(_0x269ac3){if(_0x269ac3){var _0x567919=typeof _0x1156bc['offset']==='undefined'&&typeof _0x1156bc['limit']===_0x1be3('0x1f');var _0x4ebba6=_0x269ac3[_0x1be3('0x20')];var _0x6b7edf=_0x567919?0x0:_0x1156bc[_0x1be3('0x21')];var _0x1d0c2b=_0x567919?_0x269ac3[_0x1be3('0x20')]:_0x1156bc[_0x1be3('0x21')]+_0x1156bc[_0x1be3('0x22')];var _0x41c2af;if(_0x1d0c2b>=_0x4ebba6){_0x1d0c2b=_0x4ebba6;_0x41c2af=0xc8;}else{_0x41c2af=0xce;}_0xd30cd[_0x1be3('0x1d')](_0x41c2af);return _0xd30cd[_0x1be3('0x23')](_0x1be3('0x24'),_0x6b7edf+'-'+_0x1d0c2b+'/'+_0x4ebba6)[_0x1be3('0x1e')](_0x269ac3);}return null;};}function patchUpdates(_0x57c78c){return function(_0x49123f){try{jsonpatch[_0x1be3('0x25')](_0x49123f,_0x57c78c,!![]);}catch(_0x4cacb9){return BPromise[_0x1be3('0x26')](_0x4cacb9);}return _0x49123f[_0x1be3('0x27')]();};}function saveUpdates(_0x4366e8,_0x3bd167){return function(_0x3c0564){if(_0x3c0564){return _0x3c0564[_0x1be3('0x28')](_0x4366e8)[_0x1be3('0x29')](function(_0x57c192){return _0x57c192;});}return null;};}function removeEntity(_0x186b8a,_0x48862c){return function(_0x237a6c){if(_0x237a6c){return _0x237a6c[_0x1be3('0x2a')]()['then'](function(){var _0xe5346d=_0x237a6c['get']({'plain':!![]});var _0x134d79=_0x1be3('0x2b');return db[_0x1be3('0x2c')][_0x1be3('0x2a')]({'where':{'type':_0x134d79,'resourceId':_0xe5346d['id']}})['then'](function(){return _0x237a6c;});})[_0x1be3('0x29')](function(){_0x186b8a[_0x1be3('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x113cc4,_0x983a65){return function(_0x44da09){if(!_0x44da09){_0x113cc4[_0x1be3('0x1c')](0x194);}return _0x44da09;};}function handleError(_0x2ddac8,_0x38a6de){_0x38a6de=_0x38a6de||0x1f4;return function(_0x5d35cf){logger[_0x1be3('0x2d')](_0x5d35cf['stack']);if(_0x5d35cf[_0x1be3('0x2e')]){delete _0x5d35cf['name'];}_0x2ddac8[_0x1be3('0x1d')](_0x38a6de)[_0x1be3('0x2f')](_0x5d35cf);};}exports['index']=function(_0x5426aa,_0x49f780){var _0xf1b90={},_0x33eaa0={},_0x274660={'count':0x0,'rows':[]};var _0xc7fb9a=_[_0x1be3('0x30')](db['VoiceChanSpy']['rawAttributes'],function(_0x55c0cc){return{'name':_0x55c0cc['fieldName'],'type':_0x55c0cc[_0x1be3('0x31')][_0x1be3('0x32')]};});_0x33eaa0[_0x1be3('0x33')]=_[_0x1be3('0x30')](_0xc7fb9a,_0x1be3('0x2e'));_0x33eaa0[_0x1be3('0x34')]=_[_0x1be3('0x35')](_0x5426aa['query']);_0x33eaa0[_0x1be3('0x36')]=_[_0x1be3('0x37')](_0x33eaa0[_0x1be3('0x33')],_0x33eaa0[_0x1be3('0x34')]);_0xf1b90[_0x1be3('0x38')]=_[_0x1be3('0x37')](_0x33eaa0[_0x1be3('0x33')],qs['fields'](_0x5426aa[_0x1be3('0x34')][_0x1be3('0x39')]));_0xf1b90[_0x1be3('0x38')]=_0xf1b90['attributes']['length']?_0xf1b90[_0x1be3('0x38')]:_0x33eaa0[_0x1be3('0x33')];if(!_0x5426aa[_0x1be3('0x34')]['hasOwnProperty']('nolimit')){_0xf1b90['limit']=qs[_0x1be3('0x22')](_0x5426aa[_0x1be3('0x34')][_0x1be3('0x22')]);_0xf1b90['offset']=qs[_0x1be3('0x21')](_0x5426aa['query'][_0x1be3('0x21')]);}_0xf1b90[_0x1be3('0x3a')]=qs['sort'](_0x5426aa[_0x1be3('0x34')][_0x1be3('0x3b')]);_0xf1b90[_0x1be3('0x3c')]=qs[_0x1be3('0x36')](_[_0x1be3('0x3d')](_0x5426aa['query'],_0x33eaa0[_0x1be3('0x36')]),_0xc7fb9a);if(_0x5426aa[_0x1be3('0x34')][_0x1be3('0x3e')]){_0xf1b90['where']=_['merge'](_0xf1b90[_0x1be3('0x3c')],{'$or':_[_0x1be3('0x30')](_0xc7fb9a,function(_0x4f3db4){if(_0x4f3db4[_0x1be3('0x31')]!=='VIRTUAL'){var _0x2f254d={};_0x2f254d[_0x4f3db4[_0x1be3('0x2e')]]={'$like':'%'+_0x5426aa['query']['filter']+'%'};return _0x2f254d;}})});}_0xf1b90=_['merge']({},_0xf1b90,_0x5426aa[_0x1be3('0x3f')]);var _0x406e4f={'where':_0xf1b90[_0x1be3('0x3c')]};return db[_0x1be3('0x40')][_0x1be3('0x20')](_0x406e4f)['then'](function(_0x43b89d){_0x274660['count']=_0x43b89d;if(_0x5426aa[_0x1be3('0x34')][_0x1be3('0x41')]){_0xf1b90[_0x1be3('0x42')]=[{'all':!![]}];}return db[_0x1be3('0x40')][_0x1be3('0x43')](_0xf1b90);})['then'](function(_0x31ad7e){_0x274660['rows']=_0x31ad7e;return _0x274660;})[_0x1be3('0x29')](respondWithFilteredResult(_0x49f780,_0xf1b90))[_0x1be3('0x44')](handleError(_0x49f780,null));};exports[_0x1be3('0x45')]=function(_0x47c169,_0x267d59){var _0xceb4ed={'raw':![],'where':{'id':_0x47c169[_0x1be3('0x46')]['id']}},_0x3718c9={};_0x3718c9['model']=_['keys'](db[_0x1be3('0x40')][_0x1be3('0x47')]);_0x3718c9[_0x1be3('0x34')]=_[_0x1be3('0x35')](_0x47c169[_0x1be3('0x34')]);_0x3718c9['filters']=_[_0x1be3('0x37')](_0x3718c9['model'],_0x3718c9[_0x1be3('0x34')]);_0xceb4ed[_0x1be3('0x38')]=_['intersection'](_0x3718c9['model'],qs[_0x1be3('0x39')](_0x47c169['query']['fields']));_0xceb4ed[_0x1be3('0x38')]=_0xceb4ed[_0x1be3('0x38')][_0x1be3('0x48')]?_0xceb4ed[_0x1be3('0x38')]:_0x3718c9[_0x1be3('0x33')];if(_0x47c169['query'][_0x1be3('0x41')]){_0xceb4ed[_0x1be3('0x42')]=[{'all':!![]}];}_0xceb4ed=_[_0x1be3('0x49')]({},_0xceb4ed,_0x47c169['options']);return db[_0x1be3('0x40')][_0x1be3('0x4a')](_0xceb4ed)[_0x1be3('0x29')](handleEntityNotFound(_0x267d59,null))['then'](respondWithResult(_0x267d59,null))[_0x1be3('0x44')](handleError(_0x267d59,null));};exports[_0x1be3('0x4b')]=function(_0x5160b2,_0x495d2b){return db['VoiceChanSpy']['create'](_0x5160b2[_0x1be3('0x4c')],{})[_0x1be3('0x29')](function(_0x2c41a4){var _0x1a4485=_0x5160b2[_0x1be3('0x4d')][_0x1be3('0x4e')]({'plain':!![]});if(!_0x1a4485)throw new Error(_0x1be3('0x4f'));if(_0x1a4485[_0x1be3('0x50')]===_0x1be3('0x4d')){var _0x116c44=_0x2c41a4['get']({'plain':!![]});var _0x4578eb=_0x1be3('0x2b');return db[_0x1be3('0x51')][_0x1be3('0x4a')]({'where':{'name':_0x4578eb,'userProfileId':_0x1a4485[_0x1be3('0x52')]},'raw':!![]})[_0x1be3('0x29')](function(_0x4c6df3){if(_0x4c6df3&&_0x4c6df3[_0x1be3('0x53')]===0x0){return db['UserProfileResource'][_0x1be3('0x4b')]({'name':_0x116c44[_0x1be3('0x2e')],'resourceId':_0x116c44['id'],'type':_0x4c6df3[_0x1be3('0x2e')],'sectionId':_0x4c6df3['id']},{})[_0x1be3('0x29')](function(){return _0x2c41a4;});}else{return _0x2c41a4;}})['catch'](function(_0x537fd2){logger[_0x1be3('0x2d')](_0x1be3('0x54'),_0x537fd2);throw _0x537fd2;});}return _0x2c41a4;})[_0x1be3('0x29')](respondWithResult(_0x495d2b,0xc9))[_0x1be3('0x44')](handleError(_0x495d2b,null));};exports[_0x1be3('0x28')]=function(_0x4979d0,_0x2ba615){if(_0x4979d0[_0x1be3('0x4c')]['id']){delete _0x4979d0[_0x1be3('0x4c')]['id'];}return db[_0x1be3('0x40')][_0x1be3('0x4a')]({'where':{'id':_0x4979d0['params']['id']}})[_0x1be3('0x29')](handleEntityNotFound(_0x2ba615,null))['then'](saveUpdates(_0x4979d0[_0x1be3('0x4c')],null))[_0x1be3('0x29')](respondWithResult(_0x2ba615,null))[_0x1be3('0x44')](handleError(_0x2ba615,null));};exports['destroy']=function(_0x48b2db,_0xb40c79){return db[_0x1be3('0x40')][_0x1be3('0x4a')]({'where':{'id':_0x48b2db['params']['id']}})[_0x1be3('0x29')](handleEntityNotFound(_0xb40c79,null))[_0x1be3('0x29')](removeEntity(_0xb40c79,null))['catch'](handleError(_0xb40c79,null));};
\ No newline at end of file
index 01ba8c8..160348f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53f4=['findAll','agent','then','catch','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','StopMixMonitor','length','concat','internal'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53f4,0x186));var _0x453f=function(_0x40570f,_0x3fb4fd){_0x40570f=_0x40570f-0x0;var _0x4f1ad9=_0x53f4[_0x40570f];return _0x4f1ad9;};'use strict';var _=require('lodash');var util=require(_0x453f('0x0'));var BPromise=require(_0x453f('0x1'));var attributes=require(_0x453f('0x2'));var getUserApplications=function(_0x1e1886,_0x5c37f5,_0x126ef6){var _0x3051d2=0x1;var _0x162bf5=[];var _0x5277c7={'context':_0x5c37f5[_0x453f('0x3')]||_0x453f('0x4'),'exten':util[_0x453f('0x5')](_0x453f('0x6'),_0x1e1886[_0x453f('0x7')],_0x126ef6),'type':_0x453f('0x8'),'isApp':![],'ChanSpyId':_0x1e1886['id'],'UserId':_0x5c37f5['id']};_0x162bf5[_0x453f('0x9')](_[_0x453f('0xa')]({'app':_0x453f('0xb'),'appdata':util[_0x453f('0x5')](_0x453f('0xc'),_0x453f('0xd')),'priority':_0x3051d2++},_0x5277c7));if(_0x1e1886[_0x453f('0xe')]){_0x162bf5['push'](_[_0x453f('0xa')]({'app':_0x453f('0xf'),'appdata':util['format'](_0x453f('0x10'),_0x1e1886[_0x453f('0x11')]),'priority':_0x3051d2++},_0x5277c7));}if(_0x1e1886[_0x453f('0x12')]){_0x162bf5['push'](_[_0x453f('0xa')]({'app':_0x453f('0x13'),'appdata':_0x1e1886[_0x453f('0x14')],'priority':_0x3051d2++},_0x5277c7));}_0x162bf5[_0x453f('0x9')](_['merge']({'app':'ChanSpy','appdata':util[_0x453f('0x5')](_0x453f('0x15'),_0x5c37f5[_0x453f('0x16')],_0x1e1886[_0x453f('0x17')]?_0x1e1886['options']['join'](''):''),'priority':_0x3051d2++},_0x5277c7));if(_0x1e1886[_0x453f('0xe')]){_0x162bf5[_0x453f('0x9')](_[_0x453f('0xa')]({'app':_0x453f('0x18'),'priority':_0x3051d2++},_0x5277c7));}return _0x162bf5;};var getChanSpyApplications=function(_0x4f359b,_0x512369){var _0x5a4664=[];for(var _0x7dccf4=0x0,_0x58def4=0x1;_0x7dccf4<_0x512369[_0x453f('0x19')];_0x7dccf4++,_0x58def4=0x1){_0x5a4664=_0x5a4664[_0x453f('0x1a')](getUserApplications(_0x4f359b,_0x512369[_0x7dccf4],_0x512369[_0x7dccf4][_0x453f('0x1b')]));if(_0x512369[_0x7dccf4][_0x453f('0x1b')]!=_0x512369[_0x7dccf4]['name']){_0x5a4664=_0x5a4664[_0x453f('0x1a')](getUserApplications(_0x4f359b,_0x512369[_0x7dccf4],_0x512369[_0x7dccf4]['name']));}}return _0x5a4664;};var getChanSpyPromise=function(_0x419275,_0x55ddb5){return new BPromise(function(_0x357906,_0x20279f){return _0x419275['User'][_0x453f('0x1c')]({'attributes':['id','name',_0x453f('0x1b')],'where':{'role':_0x453f('0x1d'),'chanspy':!![]},'raw':!![]})[_0x453f('0x1e')](function(_0x11fbcf){if(_0x11fbcf){return _0x357906(getChanSpyApplications(_0x55ddb5,_0x11fbcf));}return _0x357906([]);})[_0x453f('0x1f')](function(_0x48c7ea){_0x20279f(_0x48c7ea);});});};module['exports']=function(_0x39af57,_0x86348e){var _0x446402=_0x39af57['models'];return _0x39af57[_0x453f('0x20')](_0x453f('0x21'),attributes,{'tableName':_0x453f('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xf352de,_0x5f4f1e,_0x4c33bf){return getChanSpyPromise(_0x446402,_0xf352de)[_0x453f('0x1e')](function(_0xd2a603){if(_0xd2a603&&_0xd2a603[_0x453f('0x19')]){return _0x446402[_0x453f('0x23')][_0x453f('0x24')](_0xd2a603);}})[_0x453f('0x1e')](function(){_0x4c33bf();})[_0x453f('0x1f')](function(_0x1eec91){_0x4c33bf(_0x1eec91);});},'afterUpdate':function(_0x5de4c3,_0x4e0283,_0x83e2d4){return _0x446402[_0x453f('0x23')][_0x453f('0x25')]({'where':{'ChanSpyId':_0x5de4c3['id']}})[_0x453f('0x1e')](function(){return getChanSpyPromise(_0x446402,_0x5de4c3);})[_0x453f('0x1e')](function(_0x106ce2){if(_0x106ce2&&_0x106ce2['length']){return _0x446402[_0x453f('0x23')]['bulkCreate'](_0x106ce2);}})[_0x453f('0x1e')](function(){_0x83e2d4();})[_0x453f('0x1f')](function(_0x49b5f8){_0x83e2d4(_0x49b5f8);});},'afterDestroy':function(_0x569bcb,_0x50f9e5,_0x3b8be8){return _0x446402[_0x453f('0x23')]['destroy']({'where':{'ChanSpyId':_0x569bcb['id']}})[_0x453f('0x1e')](function(){_0x3b8be8();})['catch'](function(_0x19d27e){_0x3b8be8(_0x19d27e);});}}});};
\ No newline at end of file
+var _0x97c8=['bulkCreate','lodash','util','./voiceChanSpy.attributes','context','format','prefix','system','push','merge','CDR(type)=%s','chanspy','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','name','options','join','record','StopMixMonitor','concat','internal','User','agent','then','catch','exports','define','VoiceChanSpy','voice_chanspy','length','VoiceExtension'];(function(_0x1c2736,_0x5e036a){var _0x540dda=function(_0x557bf9){while(--_0x557bf9){_0x1c2736['push'](_0x1c2736['shift']());}};_0x540dda(++_0x5e036a);}(_0x97c8,0x89));var _0x897c=function(_0x41b0a8,_0x1b05cc){_0x41b0a8=_0x41b0a8-0x0;var _0x3a83d4=_0x97c8[_0x41b0a8];return _0x3a83d4;};'use strict';var _=require(_0x897c('0x0'));var util=require(_0x897c('0x1'));var BPromise=require('bluebird');var attributes=require(_0x897c('0x2'));var getUserApplications=function(_0x59dcd1,_0x108ed6,_0x242471){var _0x11f625=0x1;var _0x1ef1f2=[];var _0x3929d1={'context':_0x108ed6[_0x897c('0x3')]||'from-sip','exten':util[_0x897c('0x4')]('%s%s',_0x59dcd1[_0x897c('0x5')],_0x242471),'type':_0x897c('0x6'),'isApp':![],'ChanSpyId':_0x59dcd1['id'],'UserId':_0x108ed6['id']};_0x1ef1f2[_0x897c('0x7')](_[_0x897c('0x8')]({'app':'Set','appdata':util[_0x897c('0x4')](_0x897c('0x9'),_0x897c('0xa')),'priority':_0x11f625++},_0x3929d1));if(_0x59dcd1['record']){_0x1ef1f2[_0x897c('0x7')](_[_0x897c('0x8')]({'app':'MixMonitor','appdata':util[_0x897c('0x4')](_0x897c('0xb'),_0x59dcd1[_0x897c('0xc')]),'priority':_0x11f625++},_0x3929d1));}if(_0x59dcd1[_0x897c('0xd')]){_0x1ef1f2[_0x897c('0x7')](_[_0x897c('0x8')]({'app':'Authenticate','appdata':_0x59dcd1[_0x897c('0xe')],'priority':_0x11f625++},_0x3929d1));}_0x1ef1f2[_0x897c('0x7')](_['merge']({'app':_0x897c('0xf'),'appdata':util[_0x897c('0x4')]('SIP/%s,%s',_0x108ed6[_0x897c('0x10')],_0x59dcd1['options']?_0x59dcd1[_0x897c('0x11')][_0x897c('0x12')](''):''),'priority':_0x11f625++},_0x3929d1));if(_0x59dcd1[_0x897c('0x13')]){_0x1ef1f2[_0x897c('0x7')](_['merge']({'app':_0x897c('0x14'),'priority':_0x11f625++},_0x3929d1));}return _0x1ef1f2;};var getChanSpyApplications=function(_0x5a9681,_0x21f50b){var _0x412e21=[];for(var _0x2f73a1=0x0,_0x2d9f5b=0x1;_0x2f73a1<_0x21f50b['length'];_0x2f73a1++,_0x2d9f5b=0x1){_0x412e21=_0x412e21[_0x897c('0x15')](getUserApplications(_0x5a9681,_0x21f50b[_0x2f73a1],_0x21f50b[_0x2f73a1]['internal']));if(_0x21f50b[_0x2f73a1][_0x897c('0x16')]!=_0x21f50b[_0x2f73a1][_0x897c('0x10')]){_0x412e21=_0x412e21[_0x897c('0x15')](getUserApplications(_0x5a9681,_0x21f50b[_0x2f73a1],_0x21f50b[_0x2f73a1]['name']));}}return _0x412e21;};var getChanSpyPromise=function(_0x2681ef,_0x88e0af){return new BPromise(function(_0x2063d9,_0x13b6c2){return _0x2681ef[_0x897c('0x17')]['findAll']({'attributes':['id',_0x897c('0x10'),_0x897c('0x16')],'where':{'role':_0x897c('0x18'),'chanspy':!![]},'raw':!![]})[_0x897c('0x19')](function(_0x28a28f){if(_0x28a28f){return _0x2063d9(getChanSpyApplications(_0x88e0af,_0x28a28f));}return _0x2063d9([]);})[_0x897c('0x1a')](function(_0x298942){_0x13b6c2(_0x298942);});});};module[_0x897c('0x1b')]=function(_0xceb627,_0x3052be){var _0x2b91a4=_0xceb627['models'];return _0xceb627[_0x897c('0x1c')](_0x897c('0x1d'),attributes,{'tableName':_0x897c('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x30312f,_0x423af4,_0xce43c){return getChanSpyPromise(_0x2b91a4,_0x30312f)['then'](function(_0x3072e0){if(_0x3072e0&&_0x3072e0[_0x897c('0x1f')]){return _0x2b91a4[_0x897c('0x20')][_0x897c('0x21')](_0x3072e0);}})[_0x897c('0x19')](function(){_0xce43c();})[_0x897c('0x1a')](function(_0x50b9b1){_0xce43c(_0x50b9b1);});},'afterUpdate':function(_0x4a323,_0x62660a,_0xf135d){return _0x2b91a4['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x4a323['id']}})[_0x897c('0x19')](function(){return getChanSpyPromise(_0x2b91a4,_0x4a323);})[_0x897c('0x19')](function(_0x2b334a){if(_0x2b334a&&_0x2b334a['length']){return _0x2b91a4['VoiceExtension']['bulkCreate'](_0x2b334a);}})[_0x897c('0x19')](function(){_0xf135d();})[_0x897c('0x1a')](function(_0xd15b17){_0xf135d(_0xd15b17);});},'afterDestroy':function(_0x2bf23b,_0x1e8f2c,_0x16c242){return _0x2b91a4['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x2bf23b['id']}})['then'](function(){_0x16c242();})[_0x897c('0x1a')](function(_0x2a9234){_0x16c242(_0x2a9234);});}}});};
\ No newline at end of file
index 08431b5..27373a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['stringify','error','code','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0x1be1,0x192));var _0x11be=function(_0x259526,_0x59e687){_0x259526=_0x259526-0x0;var _0x2b20c2=_0x1be1[_0x259526];return _0x2b20c2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x11be('0x0'));var BPromise=require(_0x11be('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x11be('0x2'));var db=require(_0x11be('0x3'))['db'];var utils=require(_0x11be('0x4'));var logger=require(_0x11be('0x5'))('rpc');var config=require(_0x11be('0x6'));var jayson=require(_0x11be('0x7'));var client=jayson[_0x11be('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfe8c62,_0x497730,_0x18f661){return new BPromise(function(_0x11fc15,_0x246772){return client[_0x11be('0x9')](_0xfe8c62,_0x18f661)[_0x11be('0xa')](function(_0x5f3d04){logger[_0x11be('0xb')](_0x11be('0xc'),_0x497730,'request\x20sent');logger[_0x11be('0xd')](_0x11be('0xe'),_0x497730,_0x11be('0xf'),JSON[_0x11be('0x10')](_0x5f3d04));if(_0x5f3d04['error']){if(_0x5f3d04[_0x11be('0x11')][_0x11be('0x12')]===0x1f4){logger[_0x11be('0x11')]('VoiceChanSpy,\x20%s,\x20%s',_0x497730,_0x5f3d04[_0x11be('0x11')][_0x11be('0x13')]);return _0x246772(_0x5f3d04['error'][_0x11be('0x13')]);}logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x497730,_0x5f3d04['error']['message']);return _0x11fc15(_0x5f3d04['error']['message']);}else{logger['info'](_0x11be('0xc'),_0x497730,'request\x20sent');_0x11fc15(_0x5f3d04[_0x11be('0x14')][_0x11be('0x13')]);}})[_0x11be('0x15')](function(_0x216b8c){logger['error'](_0x11be('0xc'),_0x497730,_0x216b8c);_0x246772(_0x216b8c);});});}
\ No newline at end of file
+var _0x9099=['../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x134192,_0x36adc5){var _0x3cd080=function(_0x134371){while(--_0x134371){_0x134192['push'](_0x134192['shift']());}};_0x3cd080(++_0x36adc5);}(_0x9099,0x1ac));var _0x9909=function(_0x49e584,_0x2886f8){_0x49e584=_0x49e584-0x0;var _0x58b1be=_0x9099[_0x49e584];return _0x58b1be;};'use strict';var _=require(_0x9909('0x0'));var util=require('util');var moment=require(_0x9909('0x1'));var BPromise=require(_0x9909('0x2'));var rs=require(_0x9909('0x3'));var fs=require('fs');var Redis=require(_0x9909('0x4'));var db=require(_0x9909('0x5'))['db'];var utils=require(_0x9909('0x6'));var logger=require(_0x9909('0x7'))(_0x9909('0x8'));var config=require(_0x9909('0x9'));var jayson=require(_0x9909('0xa'));var client=jayson[_0x9909('0xb')][_0x9909('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3b7391,_0x3dc2dd,_0x54011f){return new BPromise(function(_0x6d755a,_0x5dcd39){return client['request'](_0x3b7391,_0x54011f)['then'](function(_0x5023b7){logger[_0x9909('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x3dc2dd,_0x9909('0xe'));logger[_0x9909('0xf')](_0x9909('0x10'),_0x3dc2dd,'request\x20sent',JSON[_0x9909('0x11')](_0x5023b7));if(_0x5023b7['error']){if(_0x5023b7[_0x9909('0x12')][_0x9909('0x13')]===0x1f4){logger[_0x9909('0x12')](_0x9909('0x14'),_0x3dc2dd,_0x5023b7[_0x9909('0x12')][_0x9909('0x15')]);return _0x5dcd39(_0x5023b7[_0x9909('0x12')][_0x9909('0x15')]);}logger[_0x9909('0x12')](_0x9909('0x14'),_0x3dc2dd,_0x5023b7[_0x9909('0x12')][_0x9909('0x15')]);return _0x6d755a(_0x5023b7[_0x9909('0x12')]['message']);}else{logger[_0x9909('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x3dc2dd,_0x9909('0xe'));_0x6d755a(_0x5023b7['result'][_0x9909('0x15')]);}})[_0x9909('0x16')](function(_0x245f0d){logger['error'](_0x9909('0x14'),_0x3dc2dd,_0x245f0d);_0x5dcd39(_0x245f0d);});});}
\ No newline at end of file
index d368d47..926b9fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f3=['/:id','update','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','post','put'];(function(_0xa09242,_0x13dfdc){var _0x411cd0=function(_0x88dbe4){while(--_0x88dbe4){_0xa09242['push'](_0xa09242['shift']());}};_0x411cd0(++_0x13dfdc);}(_0xe9f3,0x1d4));var _0x3e9f=function(_0x1ac38e,_0xac814c){_0x1ac38e=_0x1ac38e-0x0;var _0xfc7d2e=_0xe9f3[_0x1ac38e];return _0xfc7d2e;};'use strict';var multer=require(_0x3e9f('0x0'));var util=require('util');var path=require(_0x3e9f('0x1'));var timeout=require('connect-timeout');var express=require(_0x3e9f('0x2'));var router=express['Router']();var fs_extra=require(_0x3e9f('0x3'));var auth=require(_0x3e9f('0x4'));var interaction=require(_0x3e9f('0x5'));var config=require('../../config/environment');var controller=require('./voiceContext.controller');router[_0x3e9f('0x6')]('/',auth[_0x3e9f('0x7')](),controller[_0x3e9f('0x8')]);router['get']('/:id',auth[_0x3e9f('0x7')](),controller[_0x3e9f('0x9')]);router[_0x3e9f('0xa')]('/',auth[_0x3e9f('0x7')](),controller['create']);router[_0x3e9f('0xb')](_0x3e9f('0xc'),auth['isAuthenticated'](),controller[_0x3e9f('0xd')]);router['delete']('/:id',auth[_0x3e9f('0x7')](),controller[_0x3e9f('0xe')]);module[_0x3e9f('0xf')]=router;
\ No newline at end of file
+var _0xf9d5=['destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','./voiceContext.controller','isAuthenticated','get','/:id','show','post','create','put','update','delete'];(function(_0x23dea6,_0x5ca9c2){var _0x484e70=function(_0x517f5b){while(--_0x517f5b){_0x23dea6['push'](_0x23dea6['shift']());}};_0x484e70(++_0x5ca9c2);}(_0xf9d5,0xd1));var _0x5f9d=function(_0x57d916,_0x2b0d40){_0x57d916=_0x57d916-0x0;var _0x34983b=_0xf9d5[_0x57d916];return _0x34983b;};'use strict';var multer=require(_0x5f9d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5f9d('0x1'));var express=require(_0x5f9d('0x2'));var router=express['Router']();var fs_extra=require(_0x5f9d('0x3'));var auth=require(_0x5f9d('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5f9d('0x5'));router['get']('/',auth[_0x5f9d('0x6')](),controller['index']);router[_0x5f9d('0x7')](_0x5f9d('0x8'),auth['isAuthenticated'](),controller[_0x5f9d('0x9')]);router[_0x5f9d('0xa')]('/',auth[_0x5f9d('0x6')](),controller[_0x5f9d('0xb')]);router[_0x5f9d('0xc')](_0x5f9d('0x8'),auth[_0x5f9d('0x6')](),controller[_0x5f9d('0xd')]);router[_0x5f9d('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x5f9d('0xf')]);module['exports']=router;
\ No newline at end of file
index 93a8246..82eba69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb27=['sequelize','exports','STRING','name','BOOLEAN'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xbb27,0xd2));var _0x7bb2=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xbb27[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x7bb2('0x0'));module[_0x7bb2('0x1')]={'name':{'type':Sequelize[_0x7bb2('0x2')],'unique':_0x7bb2('0x3')},'description':{'type':Sequelize[_0x7bb2('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x7bb2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb024=['BOOLEAN','sequelize','exports','STRING','name'];(function(_0x414ff1,_0xf0462b){var _0x29c53f=function(_0x1dab72){while(--_0x1dab72){_0x414ff1['push'](_0x414ff1['shift']());}};_0x29c53f(++_0xf0462b);}(_0xb024,0x1d2));var _0x4b02=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xb024[_0x2be8c2];return _0x97f531;};'use strict';var Sequelize=require(_0x4b02('0x0'));module[_0x4b02('0x1')]={'name':{'type':Sequelize[_0x4b02('0x2')],'unique':_0x4b02('0x3')},'description':{'type':Sequelize[_0x4b02('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x4b02('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 979c206..7f74500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb337=['keys','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','create','root','server/files/templates/context.ejs','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','body','readFileSync','join','utf8','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','end','status','json','offset','undefined','limit','count','set','reject','save','destroy','then','Contexts','stack','index','VoiceContext','fieldName','type','key','model','map','name'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xb337,0xf5));var _0x7b33=function(_0x30aaa0,_0x2e4e0f){_0x30aaa0=_0x30aaa0-0x0;var _0x383563=_0xb337[_0x30aaa0];return _0x383563;};'use strict';var emlformat=require(_0x7b33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7b33('0x1'));var jsonpatch=require(_0x7b33('0x2'));var rp=require(_0x7b33('0x3'));var moment=require(_0x7b33('0x4'));var BPromise=require(_0x7b33('0x5'));var Mustache=require('mustache');var util=require(_0x7b33('0x6'));var path=require('path');var sox=require(_0x7b33('0x7'));var csv=require(_0x7b33('0x8'));var ejs=require(_0x7b33('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7b33('0xa'));var crypto=require(_0x7b33('0xb'));var jsforce=require(_0x7b33('0xc'));var deskjs=require(_0x7b33('0xd'));var toCsv=require(_0x7b33('0x8'));var querystring=require(_0x7b33('0xe'));var Papa=require(_0x7b33('0xf'));var Redis=require(_0x7b33('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b33('0x11'));var logger=require('../../config/logger')(_0x7b33('0x12'));var utils=require(_0x7b33('0x13'));var config=require(_0x7b33('0x14'));var licenseUtil=require(_0x7b33('0x15'));var db=require(_0x7b33('0x16'))['db'];var jayson=require(_0x7b33('0x17'));var client=jayson[_0x7b33('0x18')][_0x7b33('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x1f6e7d,_0x29c3d9,_0x13f619,_0x5ac82f){return new BPromise(function(_0x3c07fa,_0x59f9d1){var _0x4ea7db=_0x5ac82f||client;return _0x4ea7db[_0x7b33('0x1a')](_0x1f6e7d,_0x13f619)['then'](function(_0x515fd3){logger[_0x7b33('0x1b')](_0x7b33('0x1c'),_0x29c3d9,_0x7b33('0x1d'));logger[_0x7b33('0x1e')](_0x7b33('0x1f'),_0x29c3d9,_0x7b33('0x1d'),JSON[_0x7b33('0x20')](_0x515fd3));if(_0x515fd3[_0x7b33('0x21')]){if(_0x515fd3[_0x7b33('0x21')][_0x7b33('0x22')]===0x1f4){logger[_0x7b33('0x21')](_0x7b33('0x1c'),_0x29c3d9,_0x515fd3[_0x7b33('0x21')][_0x7b33('0x23')]);return _0x59f9d1(_0x515fd3[_0x7b33('0x21')][_0x7b33('0x23')]);}logger[_0x7b33('0x21')](_0x7b33('0x1c'),_0x29c3d9,_0x515fd3[_0x7b33('0x21')][_0x7b33('0x23')]);return _0x3c07fa(_0x515fd3['error']['message']);}else{logger[_0x7b33('0x1b')]('VoiceContext,\x20%s,\x20%s',_0x29c3d9,_0x7b33('0x1d'));_0x3c07fa(_0x515fd3['result'][_0x7b33('0x23')]);}})['catch'](function(_0x59f5e5){logger[_0x7b33('0x21')](_0x7b33('0x1c'),_0x29c3d9,_0x59f5e5);_0x59f9d1(_0x59f5e5);});});}function respondWithStatusCode(_0x3bb40c,_0x278cd2){_0x278cd2=_0x278cd2||0xcc;return function(_0x285cd1){if(_0x285cd1){return _0x3bb40c['sendStatus'](_0x278cd2);}return _0x3bb40c['status'](_0x278cd2)[_0x7b33('0x24')]();};}function respondWithResult(_0x2aba17,_0x59f891){_0x59f891=_0x59f891||0xc8;return function(_0x492dca){if(_0x492dca){return _0x2aba17[_0x7b33('0x25')](_0x59f891)[_0x7b33('0x26')](_0x492dca);}};}function respondWithFilteredResult(_0x229460,_0x48c5c7){return function(_0x20aa50){if(_0x20aa50){var _0x52579d=typeof _0x48c5c7[_0x7b33('0x27')]===_0x7b33('0x28')&&typeof _0x48c5c7[_0x7b33('0x29')]===_0x7b33('0x28');var _0x3896c4=_0x20aa50['count'];var _0x51d80d=_0x52579d?0x0:_0x48c5c7['offset'];var _0x5ebe58=_0x52579d?_0x20aa50[_0x7b33('0x2a')]:_0x48c5c7['offset']+_0x48c5c7[_0x7b33('0x29')];var _0x109898;if(_0x5ebe58>=_0x3896c4){_0x5ebe58=_0x3896c4;_0x109898=0xc8;}else{_0x109898=0xce;}_0x229460[_0x7b33('0x25')](_0x109898);return _0x229460[_0x7b33('0x2b')]('Content-Range',_0x51d80d+'-'+_0x5ebe58+'/'+_0x3896c4)[_0x7b33('0x26')](_0x20aa50);}return null;};}function patchUpdates(_0x2fa22f){return function(_0x45fb7c){try{jsonpatch['apply'](_0x45fb7c,_0x2fa22f,!![]);}catch(_0x421f9d){return BPromise[_0x7b33('0x2c')](_0x421f9d);}return _0x45fb7c[_0x7b33('0x2d')]();};}function saveUpdates(_0x1da013,_0x375e53){return function(_0x511f92){if(_0x511f92){return _0x511f92['update'](_0x1da013)['then'](function(_0x12d695){return _0x12d695;});}return null;};}function removeEntity(_0x7a468e,_0x49d6b6){return function(_0x263bef){if(_0x263bef){return _0x263bef[_0x7b33('0x2e')]()[_0x7b33('0x2f')](function(){var _0x150c8f=_0x263bef['get']({'plain':!![]});var _0xaea3c4=_0x7b33('0x30');return db['UserProfileResource'][_0x7b33('0x2e')]({'where':{'type':_0xaea3c4,'resourceId':_0x150c8f['id']}})[_0x7b33('0x2f')](function(){return _0x263bef;});})[_0x7b33('0x2f')](function(){_0x7a468e[_0x7b33('0x25')](0xcc)[_0x7b33('0x24')]();});}};}function handleEntityNotFound(_0x45b50a,_0x4f9026){return function(_0x390f28){if(!_0x390f28){_0x45b50a['sendStatus'](0x194);}return _0x390f28;};}function handleError(_0x46623c,_0x150acb){_0x150acb=_0x150acb||0x1f4;return function(_0x155fbb){logger[_0x7b33('0x21')](_0x155fbb[_0x7b33('0x31')]);if(_0x155fbb['name']){delete _0x155fbb['name'];}_0x46623c[_0x7b33('0x25')](_0x150acb)['send'](_0x155fbb);};}exports[_0x7b33('0x32')]=function(_0x3a988c,_0xbc4ae){var _0x4d36db={},_0x40835a={},_0x3d590b={'count':0x0,'rows':[]};var _0x176554=_['map'](db[_0x7b33('0x33')]['rawAttributes'],function(_0x578383){return{'name':_0x578383[_0x7b33('0x34')],'type':_0x578383[_0x7b33('0x35')][_0x7b33('0x36')]};});_0x40835a[_0x7b33('0x37')]=_[_0x7b33('0x38')](_0x176554,_0x7b33('0x39'));_0x40835a['query']=_[_0x7b33('0x3a')](_0x3a988c[_0x7b33('0x3b')]);_0x40835a[_0x7b33('0x3c')]=_[_0x7b33('0x3d')](_0x40835a['model'],_0x40835a[_0x7b33('0x3b')]);_0x4d36db[_0x7b33('0x3e')]=_[_0x7b33('0x3d')](_0x40835a[_0x7b33('0x37')],qs[_0x7b33('0x3f')](_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x3f')]));_0x4d36db[_0x7b33('0x3e')]=_0x4d36db['attributes']['length']?_0x4d36db[_0x7b33('0x3e')]:_0x40835a[_0x7b33('0x37')];if(!_0x3a988c[_0x7b33('0x3b')]['hasOwnProperty']('nolimit')){_0x4d36db[_0x7b33('0x29')]=qs['limit'](_0x3a988c[_0x7b33('0x3b')]['limit']);_0x4d36db[_0x7b33('0x27')]=qs['offset'](_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x27')]);}_0x4d36db[_0x7b33('0x40')]=qs[_0x7b33('0x41')](_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x41')]);_0x4d36db[_0x7b33('0x42')]=qs[_0x7b33('0x3c')](_[_0x7b33('0x43')](_0x3a988c[_0x7b33('0x3b')],_0x40835a[_0x7b33('0x3c')]),_0x176554);if(_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x44')]){_0x4d36db[_0x7b33('0x42')]=_[_0x7b33('0x45')](_0x4d36db['where'],{'$or':_['map'](_0x176554,function(_0x11fab7){if(_0x11fab7[_0x7b33('0x35')]!==_0x7b33('0x46')){var _0x3d0452={};_0x3d0452[_0x11fab7[_0x7b33('0x39')]]={'$like':'%'+_0x3a988c[_0x7b33('0x3b')]['filter']+'%'};return _0x3d0452;}})});}_0x4d36db=_[_0x7b33('0x45')]({},_0x4d36db,_0x3a988c[_0x7b33('0x47')]);var _0x4d0830={'where':_0x4d36db[_0x7b33('0x42')]};return db[_0x7b33('0x33')][_0x7b33('0x2a')](_0x4d0830)['then'](function(_0x4cda1e){_0x3d590b[_0x7b33('0x2a')]=_0x4cda1e;if(_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x48')]){_0x4d36db['include']=[{'all':!![]}];}return db[_0x7b33('0x33')][_0x7b33('0x49')](_0x4d36db);})['then'](function(_0x48184e){_0x3d590b[_0x7b33('0x4a')]=_0x48184e;return _0x3d590b;})[_0x7b33('0x2f')](respondWithFilteredResult(_0xbc4ae,_0x4d36db))[_0x7b33('0x4b')](handleError(_0xbc4ae,null));};exports[_0x7b33('0x4c')]=function(_0x4ed29f,_0x6af46){var _0xdcde01={'raw':![],'where':{'id':_0x4ed29f[_0x7b33('0x4d')]['id']}},_0x24fe61={};_0x24fe61[_0x7b33('0x37')]=_['keys'](db['VoiceContext']['rawAttributes']);_0x24fe61[_0x7b33('0x3b')]=_[_0x7b33('0x3a')](_0x4ed29f['query']);_0x24fe61[_0x7b33('0x3c')]=_[_0x7b33('0x3d')](_0x24fe61[_0x7b33('0x37')],_0x24fe61['query']);_0xdcde01[_0x7b33('0x3e')]=_[_0x7b33('0x3d')](_0x24fe61[_0x7b33('0x37')],qs[_0x7b33('0x3f')](_0x4ed29f['query'][_0x7b33('0x3f')]));_0xdcde01[_0x7b33('0x3e')]=_0xdcde01[_0x7b33('0x3e')][_0x7b33('0x4e')]?_0xdcde01[_0x7b33('0x3e')]:_0x24fe61[_0x7b33('0x37')];if(_0x4ed29f[_0x7b33('0x3b')][_0x7b33('0x48')]){_0xdcde01['include']=[{'all':!![]}];}_0xdcde01=_['merge']({},_0xdcde01,_0x4ed29f['options']);return db[_0x7b33('0x33')]['find'](_0xdcde01)[_0x7b33('0x2f')](handleEntityNotFound(_0x6af46,null))['then'](respondWithResult(_0x6af46,null))[_0x7b33('0x4b')](handleError(_0x6af46,null));};exports[_0x7b33('0x4f')]=function(_0xd4bc81,_0x27c84b,_0x3f816f){var _0x41ba11;return db['VoiceContext'][_0x7b33('0x4f')](_0xd4bc81['body'],{'raw':!![]})[_0x7b33('0x2f')](function(_0x3f27b0){_0x41ba11=_0x3f27b0;return db[_0x7b33('0x33')]['findAll']({'raw':!![]});})[_0x7b33('0x2f')](function(_0x251cca){var _0x2f9658=fs['readFileSync'](path['join'](config[_0x7b33('0x50')],_0x7b33('0x51')),'utf8');var _0x4687fa=ejs[_0x7b33('0x52')](_0x2f9658,{'contexts':_0x251cca||[]});fs[_0x7b33('0x53')](_0x7b33('0x54'),_0x4687fa);})[_0x7b33('0x2f')](function(){return respondWithRpcPromise(_0x7b33('0x55'),_0x7b33('0x4f'),{'module':_0x7b33('0x56')});})['then'](function(){var _0x2ad746=_0xd4bc81[_0x7b33('0x57')][_0x7b33('0x58')]({'plain':!![]});if(!_0x2ad746)throw new Error(_0x7b33('0x59'));if(_0x2ad746[_0x7b33('0x5a')]===_0x7b33('0x57')){var _0x3a84e4=_0x41ba11['get']({'plain':!![]});return db[_0x7b33('0x5b')]['find']({'where':{'name':_0x7b33('0x30'),'userProfileId':_0x2ad746[_0x7b33('0x5c')]},'raw':!![]})[_0x7b33('0x2f')](function(_0x4e9d9c){if(_0x4e9d9c&&_0x4e9d9c[_0x7b33('0x5d')]===0x0){return db[_0x7b33('0x5e')][_0x7b33('0x4f')]({'name':_0x3a84e4[_0x7b33('0x39')],'resourceId':_0x3a84e4['id'],'type':_0x4e9d9c[_0x7b33('0x39')],'sectionId':_0x4e9d9c['id']},{})['then'](function(){return _0x41ba11;});}else{return _0x41ba11;}})[_0x7b33('0x4b')](function(_0x53a0b4){logger[_0x7b33('0x21')](_0x7b33('0x5f'),_0x53a0b4);throw _0x53a0b4;});}return _0x41ba11;})[_0x7b33('0x2f')](respondWithResult(_0x27c84b,0xc9))[_0x7b33('0x4b')](handleError(_0x27c84b,null));};exports['update']=function(_0xab25e4,_0xf1e3ff,_0x134a73){var _0x445110;return db['VoiceContext'][_0x7b33('0x60')]({'where':{'id':_0xab25e4[_0x7b33('0x4d')]['id']}})['then'](handleEntityNotFound(_0xf1e3ff,null))['then'](saveUpdates(_0xab25e4[_0x7b33('0x61')],null))[_0x7b33('0x2f')](function(_0x2e3f1b){if(_0x2e3f1b){_0x445110=_0x2e3f1b;return db[_0x7b33('0x33')][_0x7b33('0x49')]({'raw':!![]});}})[_0x7b33('0x2f')](function(_0x3147ec){var _0xaf7c72=fs[_0x7b33('0x62')](path[_0x7b33('0x63')](config[_0x7b33('0x50')],'server/files/templates/context.ejs'),_0x7b33('0x64'));var _0x1c0eb1=ejs['render'](_0xaf7c72,{'contexts':_0x3147ec||[]});fs['writeFileSync'](_0x7b33('0x54'),_0x1c0eb1);})['then'](function(){return respondWithRpcPromise('Reload','update',{'module':_0x7b33('0x56')});})[_0x7b33('0x2f')](function(){return _0x445110;})[_0x7b33('0x2f')](respondWithResult(_0xf1e3ff,null))[_0x7b33('0x4b')](handleError(_0xf1e3ff,null));};exports[_0x7b33('0x2e')]=function(_0x12ad82,_0x4189b9,_0x40f700){var _0x4b58d7;return db['VoiceContext']['find']({'where':{'id':_0x12ad82[_0x7b33('0x4d')]['id']}})[_0x7b33('0x2f')](handleEntityNotFound(_0x4189b9,null))[_0x7b33('0x2f')](removeEntity(_0x4189b9,null))[_0x7b33('0x2f')](function(){return db[_0x7b33('0x33')][_0x7b33('0x49')]({'raw':!![]});})[_0x7b33('0x2f')](function(_0x530ca2){var _0x33738a=fs[_0x7b33('0x62')](path['join'](config[_0x7b33('0x50')],_0x7b33('0x51')),'utf8');var _0x363830=ejs[_0x7b33('0x52')](_0x33738a,{'contexts':_0x530ca2});fs[_0x7b33('0x53')](_0x7b33('0x54'),_0x363830);return respondWithRpcPromise(_0x7b33('0x55'),_0x7b33('0x2e'),{'module':_0x7b33('0x56')});})[_0x7b33('0x4b')](handleError(_0x4189b9,null));};
\ No newline at end of file
+var _0xcad6=['map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','VoiceContext','includeAll','include','findAll','rows','show','params','fields','options','find','create','body','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','Reload','readFileSync','join','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','debug','request\x20sent','stringify','error','message','VoiceContext,\x20%s,\x20%s','result','catch','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','reject','save','destroy','get','Contexts','UserProfileResource','name','index'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xcad6,0x101));var _0x6cad=function(_0xf7cb5a,_0x3fd438){_0xf7cb5a=_0xf7cb5a-0x0;var _0x233ff5=_0xcad6[_0xf7cb5a];return _0x233ff5;};'use strict';var emlformat=require(_0x6cad('0x0'));var rimraf=require(_0x6cad('0x1'));var zipdir=require(_0x6cad('0x2'));var jsonpatch=require(_0x6cad('0x3'));var rp=require(_0x6cad('0x4'));var moment=require(_0x6cad('0x5'));var BPromise=require(_0x6cad('0x6'));var Mustache=require(_0x6cad('0x7'));var util=require(_0x6cad('0x8'));var path=require(_0x6cad('0x9'));var sox=require('sox');var csv=require(_0x6cad('0xa'));var ejs=require(_0x6cad('0xb'));var fs=require('fs');var fs_extra=require(_0x6cad('0xc'));var _=require(_0x6cad('0xd'));var squel=require(_0x6cad('0xe'));var crypto=require(_0x6cad('0xf'));var jsforce=require(_0x6cad('0x10'));var deskjs=require(_0x6cad('0x11'));var toCsv=require('to-csv');var querystring=require(_0x6cad('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6cad('0x13'));var qs=require(_0x6cad('0x14'));var as=require(_0x6cad('0x15'));var hardwareService=require(_0x6cad('0x16'));var logger=require(_0x6cad('0x17'))('api');var utils=require(_0x6cad('0x18'));var config=require(_0x6cad('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x6cad('0x1a'))['db'];var jayson=require(_0x6cad('0x1b'));var client=jayson[_0x6cad('0x1c')][_0x6cad('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x17043f,_0x54761b,_0x1a31a8,_0x251c26){return new BPromise(function(_0x4ed408,_0x577e41){var _0x4db42b=_0x251c26||client;return _0x4db42b[_0x6cad('0x1e')](_0x17043f,_0x1a31a8)[_0x6cad('0x1f')](function(_0x4f7765){logger[_0x6cad('0x20')]('VoiceContext,\x20%s,\x20%s',_0x54761b,'request\x20sent');logger[_0x6cad('0x21')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x54761b,_0x6cad('0x22'),JSON[_0x6cad('0x23')](_0x4f7765));if(_0x4f7765['error']){if(_0x4f7765[_0x6cad('0x24')]['code']===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x54761b,_0x4f7765['error'][_0x6cad('0x25')]);return _0x577e41(_0x4f7765[_0x6cad('0x24')][_0x6cad('0x25')]);}logger['error'](_0x6cad('0x26'),_0x54761b,_0x4f7765['error']['message']);return _0x4ed408(_0x4f7765[_0x6cad('0x24')][_0x6cad('0x25')]);}else{logger[_0x6cad('0x20')]('VoiceContext,\x20%s,\x20%s',_0x54761b,_0x6cad('0x22'));_0x4ed408(_0x4f7765[_0x6cad('0x27')][_0x6cad('0x25')]);}})[_0x6cad('0x28')](function(_0x4f54a2){logger[_0x6cad('0x24')]('VoiceContext,\x20%s,\x20%s',_0x54761b,_0x4f54a2);_0x577e41(_0x4f54a2);});});}function respondWithStatusCode(_0x4b7a9e,_0x500469){_0x500469=_0x500469||0xcc;return function(_0x13c3bd){if(_0x13c3bd){return _0x4b7a9e[_0x6cad('0x29')](_0x500469);}return _0x4b7a9e['status'](_0x500469)[_0x6cad('0x2a')]();};}function respondWithResult(_0x4f9a4a,_0x39e29e){_0x39e29e=_0x39e29e||0xc8;return function(_0x464fd5){if(_0x464fd5){return _0x4f9a4a[_0x6cad('0x2b')](_0x39e29e)[_0x6cad('0x2c')](_0x464fd5);}};}function respondWithFilteredResult(_0xaa491d,_0x1aebc1){return function(_0xfcaad8){if(_0xfcaad8){var _0x48aceb=typeof _0x1aebc1['offset']===_0x6cad('0x2d')&&typeof _0x1aebc1[_0x6cad('0x2e')]===_0x6cad('0x2d');var _0x4322cc=_0xfcaad8[_0x6cad('0x2f')];var _0x250512=_0x48aceb?0x0:_0x1aebc1[_0x6cad('0x30')];var _0x3182d2=_0x48aceb?_0xfcaad8['count']:_0x1aebc1[_0x6cad('0x30')]+_0x1aebc1[_0x6cad('0x2e')];var _0x21e63d;if(_0x3182d2>=_0x4322cc){_0x3182d2=_0x4322cc;_0x21e63d=0xc8;}else{_0x21e63d=0xce;}_0xaa491d[_0x6cad('0x2b')](_0x21e63d);return _0xaa491d['set'](_0x6cad('0x31'),_0x250512+'-'+_0x3182d2+'/'+_0x4322cc)['json'](_0xfcaad8);}return null;};}function patchUpdates(_0x2fbef2){return function(_0x2c2d8c){try{jsonpatch['apply'](_0x2c2d8c,_0x2fbef2,!![]);}catch(_0xb79a15){return BPromise[_0x6cad('0x32')](_0xb79a15);}return _0x2c2d8c[_0x6cad('0x33')]();};}function saveUpdates(_0x27ec6e,_0x157a8f){return function(_0x473229){if(_0x473229){return _0x473229['update'](_0x27ec6e)[_0x6cad('0x1f')](function(_0x12d53c){return _0x12d53c;});}return null;};}function removeEntity(_0x77167f,_0x457b56){return function(_0x5e5aed){if(_0x5e5aed){return _0x5e5aed[_0x6cad('0x34')]()[_0x6cad('0x1f')](function(){var _0x583747=_0x5e5aed[_0x6cad('0x35')]({'plain':!![]});var _0x581466=_0x6cad('0x36');return db[_0x6cad('0x37')][_0x6cad('0x34')]({'where':{'type':_0x581466,'resourceId':_0x583747['id']}})[_0x6cad('0x1f')](function(){return _0x5e5aed;});})[_0x6cad('0x1f')](function(){_0x77167f['status'](0xcc)[_0x6cad('0x2a')]();});}};}function handleEntityNotFound(_0x5c710f,_0x4561c1){return function(_0x56272f){if(!_0x56272f){_0x5c710f[_0x6cad('0x29')](0x194);}return _0x56272f;};}function handleError(_0x706ab0,_0x3fd6c2){_0x3fd6c2=_0x3fd6c2||0x1f4;return function(_0x416f8b){logger[_0x6cad('0x24')](_0x416f8b['stack']);if(_0x416f8b['name']){delete _0x416f8b[_0x6cad('0x38')];}_0x706ab0['status'](_0x3fd6c2)['send'](_0x416f8b);};}exports[_0x6cad('0x39')]=function(_0x52ba4e,_0x26d21b){var _0x385217={},_0x2d0b3a={},_0x3df423={'count':0x0,'rows':[]};var _0x223ad3=_[_0x6cad('0x3a')](db['VoiceContext'][_0x6cad('0x3b')],function(_0x21440d){return{'name':_0x21440d[_0x6cad('0x3c')],'type':_0x21440d['type'][_0x6cad('0x3d')]};});_0x2d0b3a[_0x6cad('0x3e')]=_['map'](_0x223ad3,_0x6cad('0x38'));_0x2d0b3a[_0x6cad('0x3f')]=_[_0x6cad('0x40')](_0x52ba4e['query']);_0x2d0b3a[_0x6cad('0x41')]=_[_0x6cad('0x42')](_0x2d0b3a[_0x6cad('0x3e')],_0x2d0b3a[_0x6cad('0x3f')]);_0x385217[_0x6cad('0x43')]=_['intersection'](_0x2d0b3a[_0x6cad('0x3e')],qs['fields'](_0x52ba4e[_0x6cad('0x3f')]['fields']));_0x385217[_0x6cad('0x43')]=_0x385217[_0x6cad('0x43')][_0x6cad('0x44')]?_0x385217['attributes']:_0x2d0b3a['model'];if(!_0x52ba4e[_0x6cad('0x3f')][_0x6cad('0x45')](_0x6cad('0x46'))){_0x385217['limit']=qs[_0x6cad('0x2e')](_0x52ba4e['query'][_0x6cad('0x2e')]);_0x385217['offset']=qs['offset'](_0x52ba4e[_0x6cad('0x3f')][_0x6cad('0x30')]);}_0x385217[_0x6cad('0x47')]=qs['sort'](_0x52ba4e[_0x6cad('0x3f')][_0x6cad('0x48')]);_0x385217[_0x6cad('0x49')]=qs[_0x6cad('0x41')](_[_0x6cad('0x4a')](_0x52ba4e[_0x6cad('0x3f')],_0x2d0b3a[_0x6cad('0x41')]),_0x223ad3);if(_0x52ba4e[_0x6cad('0x3f')]['filter']){_0x385217['where']=_[_0x6cad('0x4b')](_0x385217[_0x6cad('0x49')],{'$or':_['map'](_0x223ad3,function(_0x587e3c){if(_0x587e3c['type']!==_0x6cad('0x4c')){var _0x11973c={};_0x11973c[_0x587e3c[_0x6cad('0x38')]]={'$like':'%'+_0x52ba4e[_0x6cad('0x3f')][_0x6cad('0x4d')]+'%'};return _0x11973c;}})});}_0x385217=_[_0x6cad('0x4b')]({},_0x385217,_0x52ba4e['options']);var _0x3660c6={'where':_0x385217[_0x6cad('0x49')]};return db[_0x6cad('0x4e')][_0x6cad('0x2f')](_0x3660c6)['then'](function(_0x37ff8d){_0x3df423[_0x6cad('0x2f')]=_0x37ff8d;if(_0x52ba4e[_0x6cad('0x3f')][_0x6cad('0x4f')]){_0x385217[_0x6cad('0x50')]=[{'all':!![]}];}return db[_0x6cad('0x4e')][_0x6cad('0x51')](_0x385217);})[_0x6cad('0x1f')](function(_0x4801e2){_0x3df423[_0x6cad('0x52')]=_0x4801e2;return _0x3df423;})[_0x6cad('0x1f')](respondWithFilteredResult(_0x26d21b,_0x385217))[_0x6cad('0x28')](handleError(_0x26d21b,null));};exports[_0x6cad('0x53')]=function(_0x3703e9,_0x219a13){var _0x2564e0={'raw':![],'where':{'id':_0x3703e9[_0x6cad('0x54')]['id']}},_0xe05f2e={};_0xe05f2e[_0x6cad('0x3e')]=_[_0x6cad('0x40')](db[_0x6cad('0x4e')][_0x6cad('0x3b')]);_0xe05f2e[_0x6cad('0x3f')]=_['keys'](_0x3703e9[_0x6cad('0x3f')]);_0xe05f2e[_0x6cad('0x41')]=_[_0x6cad('0x42')](_0xe05f2e[_0x6cad('0x3e')],_0xe05f2e[_0x6cad('0x3f')]);_0x2564e0[_0x6cad('0x43')]=_[_0x6cad('0x42')](_0xe05f2e[_0x6cad('0x3e')],qs[_0x6cad('0x55')](_0x3703e9[_0x6cad('0x3f')][_0x6cad('0x55')]));_0x2564e0['attributes']=_0x2564e0[_0x6cad('0x43')][_0x6cad('0x44')]?_0x2564e0['attributes']:_0xe05f2e['model'];if(_0x3703e9['query'][_0x6cad('0x4f')]){_0x2564e0[_0x6cad('0x50')]=[{'all':!![]}];}_0x2564e0=_[_0x6cad('0x4b')]({},_0x2564e0,_0x3703e9[_0x6cad('0x56')]);return db[_0x6cad('0x4e')][_0x6cad('0x57')](_0x2564e0)[_0x6cad('0x1f')](handleEntityNotFound(_0x219a13,null))[_0x6cad('0x1f')](respondWithResult(_0x219a13,null))['catch'](handleError(_0x219a13,null));};exports[_0x6cad('0x58')]=function(_0x55fc4c,_0x1890d8,_0x510529){var _0x58fb82;return db[_0x6cad('0x4e')][_0x6cad('0x58')](_0x55fc4c[_0x6cad('0x59')],{'raw':!![]})['then'](function(_0x37709f){_0x58fb82=_0x37709f;return db[_0x6cad('0x4e')][_0x6cad('0x51')]({'raw':!![]});})[_0x6cad('0x1f')](function(_0x425e3b){var _0xf19c71=fs['readFileSync'](path['join'](config[_0x6cad('0x5a')],_0x6cad('0x5b')),_0x6cad('0x5c'));var _0x2ec89c=ejs[_0x6cad('0x5d')](_0xf19c71,{'contexts':_0x425e3b||[]});fs[_0x6cad('0x5e')](_0x6cad('0x5f'),_0x2ec89c);})[_0x6cad('0x1f')](function(){return respondWithRpcPromise('Reload',_0x6cad('0x58'),{'module':_0x6cad('0x60')});})[_0x6cad('0x1f')](function(){var _0x569884=_0x55fc4c[_0x6cad('0x61')][_0x6cad('0x35')]({'plain':!![]});if(!_0x569884)throw new Error(_0x6cad('0x62'));if(_0x569884['role']===_0x6cad('0x61')){var _0x3f4a8c=_0x58fb82[_0x6cad('0x35')]({'plain':!![]});return db[_0x6cad('0x63')][_0x6cad('0x57')]({'where':{'name':'Contexts','userProfileId':_0x569884['userProfileId']},'raw':!![]})['then'](function(_0x45ff08){if(_0x45ff08&&_0x45ff08['autoAssociation']===0x0){return db[_0x6cad('0x37')][_0x6cad('0x58')]({'name':_0x3f4a8c[_0x6cad('0x38')],'resourceId':_0x3f4a8c['id'],'type':_0x45ff08[_0x6cad('0x38')],'sectionId':_0x45ff08['id']},{})[_0x6cad('0x1f')](function(){return _0x58fb82;});}else{return _0x58fb82;}})[_0x6cad('0x28')](function(_0xdcbda){logger['error'](_0x6cad('0x64'),_0xdcbda);throw _0xdcbda;});}return _0x58fb82;})[_0x6cad('0x1f')](respondWithResult(_0x1890d8,0xc9))['catch'](handleError(_0x1890d8,null));};exports[_0x6cad('0x65')]=function(_0x2b8302,_0x39546c,_0x253325){var _0x5eaa77;return db[_0x6cad('0x4e')]['find']({'where':{'id':_0x2b8302[_0x6cad('0x54')]['id']}})[_0x6cad('0x1f')](handleEntityNotFound(_0x39546c,null))[_0x6cad('0x1f')](saveUpdates(_0x2b8302['body'],null))[_0x6cad('0x1f')](function(_0x1e3dfa){if(_0x1e3dfa){_0x5eaa77=_0x1e3dfa;return db['VoiceContext'][_0x6cad('0x51')]({'raw':!![]});}})[_0x6cad('0x1f')](function(_0x707735){var _0x5311e0=fs['readFileSync'](path['join'](config['root'],_0x6cad('0x5b')),_0x6cad('0x5c'));var _0x599660=ejs[_0x6cad('0x5d')](_0x5311e0,{'contexts':_0x707735||[]});fs[_0x6cad('0x5e')](_0x6cad('0x5f'),_0x599660);})['then'](function(){return respondWithRpcPromise(_0x6cad('0x66'),_0x6cad('0x65'),{'module':_0x6cad('0x60')});})[_0x6cad('0x1f')](function(){return _0x5eaa77;})['then'](respondWithResult(_0x39546c,null))[_0x6cad('0x28')](handleError(_0x39546c,null));};exports[_0x6cad('0x34')]=function(_0x5c6b94,_0x30b9eb,_0x51b069){var _0x13128b;return db[_0x6cad('0x4e')][_0x6cad('0x57')]({'where':{'id':_0x5c6b94[_0x6cad('0x54')]['id']}})[_0x6cad('0x1f')](handleEntityNotFound(_0x30b9eb,null))[_0x6cad('0x1f')](removeEntity(_0x30b9eb,null))[_0x6cad('0x1f')](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0x6cad('0x1f')](function(_0x2edd2d){var _0x114265=fs[_0x6cad('0x67')](path[_0x6cad('0x68')](config[_0x6cad('0x5a')],_0x6cad('0x5b')),_0x6cad('0x5c'));var _0x222dec=ejs['render'](_0x114265,{'contexts':_0x2edd2d});fs[_0x6cad('0x5e')](_0x6cad('0x5f'),_0x222dec);return respondWithRpcPromise('Reload',_0x6cad('0x34'),{'module':'chan_sip.so'});})[_0x6cad('0x28')](handleError(_0x30b9eb,null));};
\ No newline at end of file
index 9f94f30..b9275d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfaa=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./voiceContext.attributes','exports','voice_contexts'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xcfaa,0xdc));var _0xacfa=function(_0x17d5e9,_0x30d19c){_0x17d5e9=_0x17d5e9-0x0;var _0xda2301=_0xcfaa[_0x17d5e9];return _0xda2301;};'use strict';var _=require(_0xacfa('0x0'));var util=require(_0xacfa('0x1'));var logger=require(_0xacfa('0x2'))(_0xacfa('0x3'));var moment=require('moment');var BPromise=require(_0xacfa('0x4'));var rp=require(_0xacfa('0x5'));var fs=require('fs');var path=require(_0xacfa('0x6'));var rimraf=require('rimraf');var config=require(_0xacfa('0x7'));var attributes=require(_0xacfa('0x8'));module[_0xacfa('0x9')]=function(_0x363969,_0x23af05){return _0x363969['define']('VoiceContext',attributes,{'tableName':_0xacfa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x45f9=['rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5a91d9,_0x47cedb){var _0x5275e2=function(_0x15de79){while(--_0x15de79){_0x5a91d9['push'](_0x5a91d9['shift']());}};_0x5275e2(++_0x47cedb);}(_0x45f9,0x8b));var _0x945f=function(_0x644eea,_0x421416){_0x644eea=_0x644eea-0x0;var _0x30ced3=_0x45f9[_0x644eea];return _0x30ced3;};'use strict';var _=require('lodash');var util=require(_0x945f('0x0'));var logger=require(_0x945f('0x1'))(_0x945f('0x2'));var moment=require('moment');var BPromise=require(_0x945f('0x3'));var rp=require(_0x945f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x945f('0x5'));var config=require(_0x945f('0x6'));var attributes=require(_0x945f('0x7'));module[_0x945f('0x8')]=function(_0x4cf0c7,_0x1fe2fc){return _0x4cf0c7[_0x945f('0x9')](_0x945f('0xa'),attributes,{'tableName':_0x945f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 124788e..f77ccd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4171=['jayson/promise','http','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x1d76a2,_0xe93ed7){var _0x4a3248=function(_0x10fc29){while(--_0x10fc29){_0x1d76a2['push'](_0x1d76a2['shift']());}};_0x4a3248(++_0xe93ed7);}(_0x4171,0x6a));var _0x1417=function(_0x4cc29f,_0x4041ef){_0x4cc29f=_0x4cc29f-0x0;var _0x4ab53c=_0x4171[_0x4cc29f];return _0x4ab53c;};'use strict';var _=require('lodash');var util=require(_0x1417('0x0'));var moment=require(_0x1417('0x1'));var BPromise=require(_0x1417('0x2'));var rs=require(_0x1417('0x3'));var fs=require('fs');var Redis=require(_0x1417('0x4'));var db=require(_0x1417('0x5'))['db'];var utils=require(_0x1417('0x6'));var logger=require('../../config/logger')(_0x1417('0x7'));var config=require('../../config/environment');var jayson=require(_0x1417('0x8'));var client=jayson['client'][_0x1417('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35c775,_0x3e2a7d,_0x2e8ef8){return new BPromise(function(_0x4b713a,_0x49dc2b){return client['request'](_0x35c775,_0x2e8ef8)['then'](function(_0x57f09e){logger[_0x1417('0xa')](_0x1417('0xb'),_0x3e2a7d,_0x1417('0xc'));logger[_0x1417('0xd')](_0x1417('0xe'),_0x3e2a7d,_0x1417('0xc'),JSON[_0x1417('0xf')](_0x57f09e));if(_0x57f09e[_0x1417('0x10')]){if(_0x57f09e['error']['code']===0x1f4){logger[_0x1417('0x10')](_0x1417('0xb'),_0x3e2a7d,_0x57f09e[_0x1417('0x10')]['message']);return _0x49dc2b(_0x57f09e[_0x1417('0x10')][_0x1417('0x11')]);}logger[_0x1417('0x10')]('VoiceContext,\x20%s,\x20%s',_0x3e2a7d,_0x57f09e[_0x1417('0x10')][_0x1417('0x11')]);return _0x4b713a(_0x57f09e[_0x1417('0x10')][_0x1417('0x11')]);}else{logger[_0x1417('0xa')](_0x1417('0xb'),_0x3e2a7d,'request\x20sent');_0x4b713a(_0x57f09e[_0x1417('0x12')][_0x1417('0x11')]);}})['catch'](function(_0x121119){logger[_0x1417('0x10')](_0x1417('0xb'),_0x3e2a7d,_0x121119);_0x49dc2b(_0x121119);});});}
\ No newline at end of file
+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(_0x3a199e,_0x5afbb7){var _0xae6ba9=function(_0x400576){while(--_0x400576){_0x3a199e['push'](_0x3a199e['shift']());}};_0xae6ba9(++_0x5afbb7);}(_0x105b,0x1a7));var _0xb105=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x105b[_0x5783f4];return _0x28e380;};'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
index c2aacee..e1ac682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa16a=['post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x4be4fb,_0x5c03d9){var _0x321e5b=function(_0x22b440){while(--_0x22b440){_0x4be4fb['push'](_0x4be4fb['shift']());}};_0x321e5b(++_0x5c03d9);}(_0xa16a,0x1aa));var _0xaa16=function(_0xf44d98,_0x12a472){_0xf44d98=_0xf44d98-0x0;var _0x5ebb04=_0xa16a[_0xf44d98];return _0x5ebb04;};'use strict';var multer=require(_0xaa16('0x0'));var util=require(_0xaa16('0x1'));var path=require(_0xaa16('0x2'));var timeout=require(_0xaa16('0x3'));var express=require('express');var router=express[_0xaa16('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaa16('0x5'));var config=require(_0xaa16('0x6'));var controller=require('./voiceDialReport.controller');router[_0xaa16('0x7')]('/',auth[_0xaa16('0x8')](),controller[_0xaa16('0x9')]);router['get'](_0xaa16('0xa'),auth[_0xaa16('0x8')](),controller[_0xaa16('0xb')]);router['get'](_0xaa16('0xc'),auth[_0xaa16('0x8')](),controller[_0xaa16('0xd')]);router[_0xaa16('0xe')]('/',auth['isAuthenticated'](),controller[_0xaa16('0xf')]);router['put']('/:id',auth[_0xaa16('0x8')](),controller[_0xaa16('0x10')]);router[_0xaa16('0x11')](_0xaa16('0xc'),auth[_0xaa16('0x8')](),controller[_0xaa16('0x12')]);module[_0xaa16('0x13')]=router;
\ No newline at end of file
+var _0x9c5e=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','post','create','put'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x3f96f0,_0xa755cc){_0x3f96f0=_0x3f96f0-0x0;var _0x338019=_0x9c5e[_0x3f96f0];return _0x338019;};'use strict';var multer=require(_0xe9c5('0x0'));var util=require(_0xe9c5('0x1'));var path=require(_0xe9c5('0x2'));var timeout=require(_0xe9c5('0x3'));var express=require(_0xe9c5('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe9c5('0x5'));var config=require(_0xe9c5('0x6'));var controller=require('./voiceDialReport.controller');router[_0xe9c5('0x7')]('/',auth[_0xe9c5('0x8')](),controller[_0xe9c5('0x9')]);router[_0xe9c5('0x7')]('/describe',auth[_0xe9c5('0x8')](),controller[_0xe9c5('0xa')]);router[_0xe9c5('0x7')](_0xe9c5('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xe9c5('0xc')]('/',auth[_0xe9c5('0x8')](),controller[_0xe9c5('0xd')]);router[_0xe9c5('0xe')](_0xe9c5('0xb'),auth[_0xe9c5('0x8')](),controller[_0xe9c5('0xf')]);router[_0xe9c5('0x10')](_0xe9c5('0xb'),auth[_0xe9c5('0x8')](),controller[_0xe9c5('0x11')]);module[_0xe9c5('0x12')]=router;
\ No newline at end of file
index 61b46c9..f6fc468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['STRING','INTEGER','DATE','called,connect,complete'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x9c44,0x178));var _0x49c4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9c44[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require('sequelize');module['exports']={'privilege':{'type':Sequelize[_0x49c4('0x0')]},'channel':{'type':Sequelize[_0x49c4('0x0')]},'channelstate':{'type':Sequelize[_0x49c4('0x1')]},'channelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'calleridnum':{'type':Sequelize[_0x49c4('0x0')]},'calleridname':{'type':Sequelize[_0x49c4('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x49c4('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x49c4('0x0')]},'exten':{'type':Sequelize[_0x49c4('0x0')]},'priority':{'type':Sequelize[_0x49c4('0x1')]},'uniqueid':{'type':Sequelize[_0x49c4('0x0')]},'linkedid':{'type':Sequelize[_0x49c4('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x49c4('0x1')]},'destchannelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridnum':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridname':{'type':Sequelize[_0x49c4('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x49c4('0x0')]},'destaccountcode':{'type':Sequelize[_0x49c4('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x49c4('0x0')]},'destpriority':{'type':Sequelize[_0x49c4('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x49c4('0x0')]},'dialstatus':{'type':Sequelize[_0x49c4('0x0')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x49c4('0x2')]},'endtime':{'type':Sequelize[_0x49c4('0x2')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x49c4('0x3')},'routeId':{'type':Sequelize[_0x49c4('0x1')]},'duration':{'type':Sequelize[_0x49c4('0x1')]},'holdtime':{'type':Sequelize[_0x49c4('0x1')]},'billableseconds':{'type':Sequelize[_0x49c4('0x1')]}};
\ No newline at end of file
+var _0x9c44=['STRING','INTEGER','DATE','called,connect,complete'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require('sequelize');module['exports']={'privilege':{'type':Sequelize[_0x49c4('0x0')]},'channel':{'type':Sequelize[_0x49c4('0x0')]},'channelstate':{'type':Sequelize[_0x49c4('0x1')]},'channelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'calleridnum':{'type':Sequelize[_0x49c4('0x0')]},'calleridname':{'type':Sequelize[_0x49c4('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x49c4('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x49c4('0x0')]},'exten':{'type':Sequelize[_0x49c4('0x0')]},'priority':{'type':Sequelize[_0x49c4('0x1')]},'uniqueid':{'type':Sequelize[_0x49c4('0x0')]},'linkedid':{'type':Sequelize[_0x49c4('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x49c4('0x1')]},'destchannelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridnum':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridname':{'type':Sequelize[_0x49c4('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x49c4('0x0')]},'destaccountcode':{'type':Sequelize[_0x49c4('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x49c4('0x0')]},'destpriority':{'type':Sequelize[_0x49c4('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x49c4('0x0')]},'dialstatus':{'type':Sequelize[_0x49c4('0x0')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x49c4('0x2')]},'endtime':{'type':Sequelize[_0x49c4('0x2')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x49c4('0x3')},'routeId':{'type':Sequelize[_0x49c4('0x1')]},'duration':{'type':Sequelize[_0x49c4('0x1')]},'holdtime':{'type':Sequelize[_0x49c4('0x1')]},'billableseconds':{'type':Sequelize[_0x49c4('0x1')]}};
\ No newline at end of file
index c6ad59f..cc98515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4458=['desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','query','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','jsforce'];(function(_0x260817,_0x136715){var _0x4d4621=function(_0x177ddc){while(--_0x177ddc){_0x260817['push'](_0x260817['shift']());}};_0x4d4621(++_0x136715);}(_0x4458,0x1a4));var _0x8445=function(_0x1d9246,_0x354366){_0x1d9246=_0x1d9246-0x0;var _0x1f9141=_0x4458[_0x1d9246];return _0x1f9141;};'use strict';var emlformat=require(_0x8445('0x0'));var rimraf=require(_0x8445('0x1'));var zipdir=require(_0x8445('0x2'));var jsonpatch=require(_0x8445('0x3'));var rp=require(_0x8445('0x4'));var moment=require(_0x8445('0x5'));var BPromise=require(_0x8445('0x6'));var Mustache=require(_0x8445('0x7'));var util=require('util');var path=require(_0x8445('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8445('0x9'));var _=require(_0x8445('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8445('0xb'));var deskjs=require(_0x8445('0xc'));var toCsv=require(_0x8445('0xd'));var querystring=require(_0x8445('0xe'));var Papa=require(_0x8445('0xf'));var Redis=require(_0x8445('0x10'));var authService=require(_0x8445('0x11'));var qs=require(_0x8445('0x12'));var as=require(_0x8445('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8445('0x14'));var utils=require(_0x8445('0x15'));var config=require(_0x8445('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1da4b0,_0x4fe49a){_0x4fe49a=_0x4fe49a||0xcc;return function(_0x5bf92e){if(_0x5bf92e){return _0x1da4b0['sendStatus'](_0x4fe49a);}return _0x1da4b0[_0x8445('0x17')](_0x4fe49a)['end']();};}function respondWithResult(_0x5b31b2,_0x231492){_0x231492=_0x231492||0xc8;return function(_0x17d495){if(_0x17d495){return _0x5b31b2['status'](_0x231492)[_0x8445('0x18')](_0x17d495);}};}function respondWithFilteredResult(_0x4772d5,_0x7e59f1){return function(_0x25f424){if(_0x25f424){var _0x97c403=typeof _0x7e59f1[_0x8445('0x19')]===_0x8445('0x1a')&&typeof _0x7e59f1['limit']===_0x8445('0x1a');var _0x1ac552=_0x25f424[_0x8445('0x1b')];var _0x153336=_0x97c403?0x0:_0x7e59f1['offset'];var _0x46decf=_0x97c403?_0x25f424['count']:_0x7e59f1[_0x8445('0x19')]+_0x7e59f1[_0x8445('0x1c')];var _0x19bb64;if(_0x46decf>=_0x1ac552){_0x46decf=_0x1ac552;_0x19bb64=0xc8;}else{_0x19bb64=0xce;}_0x4772d5[_0x8445('0x17')](_0x19bb64);return _0x4772d5[_0x8445('0x1d')](_0x8445('0x1e'),_0x153336+'-'+_0x46decf+'/'+_0x1ac552)[_0x8445('0x18')](_0x25f424);}return null;};}function patchUpdates(_0x5e8d12){return function(_0x9704f1){try{jsonpatch[_0x8445('0x1f')](_0x9704f1,_0x5e8d12,!![]);}catch(_0x56b22c){return BPromise[_0x8445('0x20')](_0x56b22c);}return _0x9704f1[_0x8445('0x21')]();};}function saveUpdates(_0x4471f5,_0x4ffa2d){return function(_0x43709d){if(_0x43709d){return _0x43709d[_0x8445('0x22')](_0x4471f5)[_0x8445('0x23')](function(_0x85bc0b){return _0x85bc0b;});}return null;};}function removeEntity(_0x599dab,_0x59fa20){return function(_0x810a){if(_0x810a){return _0x810a['destroy']()['then'](function(){_0x599dab[_0x8445('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ff584,_0x2efe93){return function(_0x356945){if(!_0x356945){_0x4ff584['sendStatus'](0x194);}return _0x356945;};}function handleError(_0x522b74,_0x406299){_0x406299=_0x406299||0x1f4;return function(_0x3a3af5){logger[_0x8445('0x24')](_0x3a3af5[_0x8445('0x25')]);if(_0x3a3af5[_0x8445('0x26')]){delete _0x3a3af5[_0x8445('0x26')];}_0x522b74['status'](_0x406299)[_0x8445('0x27')](_0x3a3af5);};}exports[_0x8445('0x28')]=function(_0x57ce4e,_0x2846d5){var _0x3eaed5={},_0x32b528={},_0x5ce3b6={'count':0x0,'rows':[]};var _0x5beeaa=_[_0x8445('0x29')](db[_0x8445('0x2a')]['rawAttributes'],function(_0x3d01c0){return{'name':_0x3d01c0[_0x8445('0x2b')],'type':_0x3d01c0[_0x8445('0x2c')]['key']};});_0x32b528['model']=_['map'](_0x5beeaa,_0x8445('0x26'));_0x32b528[_0x8445('0x2d')]=_['keys'](_0x57ce4e[_0x8445('0x2d')]);_0x32b528['filters']=_['intersection'](_0x32b528[_0x8445('0x2e')],_0x32b528[_0x8445('0x2d')]);_0x3eaed5['attributes']=_[_0x8445('0x2f')](_0x32b528[_0x8445('0x2e')],qs[_0x8445('0x30')](_0x57ce4e[_0x8445('0x2d')]['fields']));_0x3eaed5['attributes']=_0x3eaed5[_0x8445('0x31')][_0x8445('0x32')]?_0x3eaed5[_0x8445('0x31')]:_0x32b528[_0x8445('0x2e')];if(!_0x57ce4e[_0x8445('0x2d')][_0x8445('0x33')](_0x8445('0x34'))){_0x3eaed5[_0x8445('0x1c')]=qs[_0x8445('0x1c')](_0x57ce4e['query'][_0x8445('0x1c')]);_0x3eaed5[_0x8445('0x19')]=qs[_0x8445('0x19')](_0x57ce4e[_0x8445('0x2d')]['offset']);}_0x3eaed5['order']=qs[_0x8445('0x35')](_0x57ce4e[_0x8445('0x2d')]['sort']);_0x3eaed5[_0x8445('0x36')]=qs[_0x8445('0x37')](_[_0x8445('0x38')](_0x57ce4e[_0x8445('0x2d')],_0x32b528['filters']),_0x5beeaa);if(_0x57ce4e[_0x8445('0x2d')][_0x8445('0x39')]){_0x3eaed5[_0x8445('0x36')]=_[_0x8445('0x3a')](_0x3eaed5[_0x8445('0x36')],{'$or':_[_0x8445('0x29')](_0x5beeaa,function(_0x8699be){if(_0x8699be[_0x8445('0x2c')]!=='VIRTUAL'){var _0x181a75={};_0x181a75[_0x8699be[_0x8445('0x26')]]={'$like':'%'+_0x57ce4e['query'][_0x8445('0x39')]+'%'};return _0x181a75;}})});}_0x3eaed5=_[_0x8445('0x3a')]({},_0x3eaed5,_0x57ce4e[_0x8445('0x3b')]);var _0x2ae790={'where':_0x3eaed5[_0x8445('0x36')]};return db['VoiceDialReport'][_0x8445('0x1b')](_0x2ae790)[_0x8445('0x23')](function(_0x4cc490){_0x5ce3b6[_0x8445('0x1b')]=_0x4cc490;if(_0x57ce4e['query'][_0x8445('0x3c')]){_0x3eaed5[_0x8445('0x3d')]=[{'all':!![]}];}return db[_0x8445('0x2a')][_0x8445('0x3e')](_0x3eaed5);})['then'](function(_0x181b2f){_0x5ce3b6[_0x8445('0x3f')]=_0x181b2f;return _0x5ce3b6;})[_0x8445('0x23')](respondWithFilteredResult(_0x2846d5,_0x3eaed5))[_0x8445('0x40')](handleError(_0x2846d5,null));};exports['show']=function(_0x2ca1ea,_0x39b505){var _0x234e20={'raw':!![],'where':{'id':_0x2ca1ea[_0x8445('0x41')]['id']}},_0x9e646a={};_0x9e646a['model']=_[_0x8445('0x42')](db[_0x8445('0x2a')][_0x8445('0x43')]);_0x9e646a[_0x8445('0x2d')]=_[_0x8445('0x42')](_0x2ca1ea['query']);_0x9e646a[_0x8445('0x37')]=_[_0x8445('0x2f')](_0x9e646a[_0x8445('0x2e')],_0x9e646a[_0x8445('0x2d')]);_0x234e20['attributes']=_[_0x8445('0x2f')](_0x9e646a[_0x8445('0x2e')],qs[_0x8445('0x30')](_0x2ca1ea[_0x8445('0x2d')][_0x8445('0x30')]));_0x234e20['attributes']=_0x234e20['attributes'][_0x8445('0x32')]?_0x234e20[_0x8445('0x31')]:_0x9e646a[_0x8445('0x2e')];if(_0x2ca1ea[_0x8445('0x2d')][_0x8445('0x3c')]){_0x234e20[_0x8445('0x3d')]=[{'all':!![]}];}_0x234e20=_[_0x8445('0x3a')]({},_0x234e20,_0x2ca1ea['options']);return db[_0x8445('0x2a')][_0x8445('0x44')](_0x234e20)[_0x8445('0x23')](handleEntityNotFound(_0x39b505,null))['then'](respondWithResult(_0x39b505,null))[_0x8445('0x40')](handleError(_0x39b505,null));};exports['create']=function(_0x30a2da,_0x2dd10b){return db[_0x8445('0x2a')][_0x8445('0x45')](_0x30a2da[_0x8445('0x46')],{})[_0x8445('0x23')](respondWithResult(_0x2dd10b,0xc9))['catch'](handleError(_0x2dd10b,null));};exports[_0x8445('0x22')]=function(_0x21b402,_0x2efa12){if(_0x21b402[_0x8445('0x46')]['id']){delete _0x21b402['body']['id'];}return db[_0x8445('0x2a')][_0x8445('0x44')]({'where':{'id':_0x21b402['params']['id']}})[_0x8445('0x23')](handleEntityNotFound(_0x2efa12,null))[_0x8445('0x23')](saveUpdates(_0x21b402[_0x8445('0x46')],null))[_0x8445('0x23')](respondWithResult(_0x2efa12,null))[_0x8445('0x40')](handleError(_0x2efa12,null));};exports['destroy']=function(_0xbe27c7,_0x36b5eb){return db['VoiceDialReport'][_0x8445('0x44')]({'where':{'id':_0xbe27c7['params']['id']}})[_0x8445('0x23')](handleEntityNotFound(_0x36b5eb,null))['then'](removeEntity(_0x36b5eb,null))[_0x8445('0x40')](handleError(_0x36b5eb,null));};exports[_0x8445('0x47')]=function(_0x5d5bc2,_0x5a5f9b){return db[_0x8445('0x2a')]['describe']()[_0x8445('0x23')](respondWithResult(_0x5a5f9b,null))[_0x8445('0x40')](handleError(_0x5a5f9b,null));};
\ No newline at end of file
+var _0x9fba=['where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','rawAttributes','create','update','body','find','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','save','then','status','error','stack','name','send','index','VoiceDialReport','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x4814a4,_0xff60c5){var _0x57c2bd=function(_0x2ab9b9){while(--_0x2ab9b9){_0x4814a4['push'](_0x4814a4['shift']());}};_0x57c2bd(++_0xff60c5);}(_0x9fba,0x1e1));var _0xa9fb=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0x9fba[_0x456fb1];return _0x4083d6;};'use strict';var emlformat=require(_0xa9fb('0x0'));var rimraf=require(_0xa9fb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9fb('0x2'));var rp=require(_0xa9fb('0x3'));var moment=require(_0xa9fb('0x4'));var BPromise=require(_0xa9fb('0x5'));var Mustache=require(_0xa9fb('0x6'));var util=require(_0xa9fb('0x7'));var path=require(_0xa9fb('0x8'));var sox=require(_0xa9fb('0x9'));var csv=require('to-csv');var ejs=require(_0xa9fb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa9fb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9fb('0xc'));var deskjs=require(_0xa9fb('0xd'));var toCsv=require(_0xa9fb('0xe'));var querystring=require(_0xa9fb('0xf'));var Papa=require(_0xa9fb('0x10'));var Redis=require(_0xa9fb('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa9fb('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9fb('0x13'))(_0xa9fb('0x14'));var utils=require(_0xa9fb('0x15'));var config=require(_0xa9fb('0x16'));var licenseUtil=require(_0xa9fb('0x17'));var db=require(_0xa9fb('0x18'))['db'];function respondWithStatusCode(_0x662bc,_0x24bf5b){_0x24bf5b=_0x24bf5b||0xcc;return function(_0x14159a){if(_0x14159a){return _0x662bc[_0xa9fb('0x19')](_0x24bf5b);}return _0x662bc['status'](_0x24bf5b)[_0xa9fb('0x1a')]();};}function respondWithResult(_0x572e5c,_0x312fd9){_0x312fd9=_0x312fd9||0xc8;return function(_0x146be9){if(_0x146be9){return _0x572e5c['status'](_0x312fd9)[_0xa9fb('0x1b')](_0x146be9);}};}function respondWithFilteredResult(_0x474c72,_0x3f293a){return function(_0x25d808){if(_0x25d808){var _0xea3e82=typeof _0x3f293a[_0xa9fb('0x1c')]===_0xa9fb('0x1d')&&typeof _0x3f293a[_0xa9fb('0x1e')]===_0xa9fb('0x1d');var _0x86c656=_0x25d808[_0xa9fb('0x1f')];var _0x1673df=_0xea3e82?0x0:_0x3f293a[_0xa9fb('0x1c')];var _0x15d944=_0xea3e82?_0x25d808[_0xa9fb('0x1f')]:_0x3f293a[_0xa9fb('0x1c')]+_0x3f293a[_0xa9fb('0x1e')];var _0xbfe6be;if(_0x15d944>=_0x86c656){_0x15d944=_0x86c656;_0xbfe6be=0xc8;}else{_0xbfe6be=0xce;}_0x474c72['status'](_0xbfe6be);return _0x474c72[_0xa9fb('0x20')](_0xa9fb('0x21'),_0x1673df+'-'+_0x15d944+'/'+_0x86c656)[_0xa9fb('0x1b')](_0x25d808);}return null;};}function patchUpdates(_0x3144f4){return function(_0x591b47){try{jsonpatch['apply'](_0x591b47,_0x3144f4,!![]);}catch(_0x2790cb){return BPromise['reject'](_0x2790cb);}return _0x591b47[_0xa9fb('0x22')]();};}function saveUpdates(_0x146d03,_0x3d9f63){return function(_0x243a64){if(_0x243a64){return _0x243a64['update'](_0x146d03)[_0xa9fb('0x23')](function(_0x3899eb){return _0x3899eb;});}return null;};}function removeEntity(_0x1c8770,_0x36f939){return function(_0x187db0){if(_0x187db0){return _0x187db0['destroy']()[_0xa9fb('0x23')](function(){_0x1c8770[_0xa9fb('0x24')](0xcc)[_0xa9fb('0x1a')]();});}};}function handleEntityNotFound(_0x21fe3c,_0x332e25){return function(_0x404187){if(!_0x404187){_0x21fe3c[_0xa9fb('0x19')](0x194);}return _0x404187;};}function handleError(_0x546f5a,_0x2f5051){_0x2f5051=_0x2f5051||0x1f4;return function(_0x1f99c2){logger[_0xa9fb('0x25')](_0x1f99c2[_0xa9fb('0x26')]);if(_0x1f99c2[_0xa9fb('0x27')]){delete _0x1f99c2[_0xa9fb('0x27')];}_0x546f5a['status'](_0x2f5051)[_0xa9fb('0x28')](_0x1f99c2);};}exports[_0xa9fb('0x29')]=function(_0x4813f4,_0x26129f){var _0x4f96c8={},_0x3cb48d={},_0x51af12={'count':0x0,'rows':[]};var _0x869af1=_['map'](db[_0xa9fb('0x2a')]['rawAttributes'],function(_0x3b5930){return{'name':_0x3b5930[_0xa9fb('0x2b')],'type':_0x3b5930[_0xa9fb('0x2c')][_0xa9fb('0x2d')]};});_0x3cb48d[_0xa9fb('0x2e')]=_[_0xa9fb('0x2f')](_0x869af1,_0xa9fb('0x27'));_0x3cb48d[_0xa9fb('0x30')]=_[_0xa9fb('0x31')](_0x4813f4['query']);_0x3cb48d['filters']=_[_0xa9fb('0x32')](_0x3cb48d[_0xa9fb('0x2e')],_0x3cb48d[_0xa9fb('0x30')]);_0x4f96c8[_0xa9fb('0x33')]=_[_0xa9fb('0x32')](_0x3cb48d[_0xa9fb('0x2e')],qs[_0xa9fb('0x34')](_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x34')]));_0x4f96c8[_0xa9fb('0x33')]=_0x4f96c8[_0xa9fb('0x33')][_0xa9fb('0x35')]?_0x4f96c8[_0xa9fb('0x33')]:_0x3cb48d[_0xa9fb('0x2e')];if(!_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x36')](_0xa9fb('0x37'))){_0x4f96c8[_0xa9fb('0x1e')]=qs[_0xa9fb('0x1e')](_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x1e')]);_0x4f96c8[_0xa9fb('0x1c')]=qs[_0xa9fb('0x1c')](_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x1c')]);}_0x4f96c8[_0xa9fb('0x38')]=qs[_0xa9fb('0x39')](_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x39')]);_0x4f96c8[_0xa9fb('0x3a')]=qs[_0xa9fb('0x3b')](_['pick'](_0x4813f4[_0xa9fb('0x30')],_0x3cb48d[_0xa9fb('0x3b')]),_0x869af1);if(_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x3c')]){_0x4f96c8['where']=_[_0xa9fb('0x3d')](_0x4f96c8['where'],{'$or':_[_0xa9fb('0x2f')](_0x869af1,function(_0x4f1ec2){if(_0x4f1ec2['type']!==_0xa9fb('0x3e')){var _0xcb6b91={};_0xcb6b91[_0x4f1ec2[_0xa9fb('0x27')]]={'$like':'%'+_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x3c')]+'%'};return _0xcb6b91;}})});}_0x4f96c8=_['merge']({},_0x4f96c8,_0x4813f4[_0xa9fb('0x3f')]);var _0x582258={'where':_0x4f96c8[_0xa9fb('0x3a')]};return db[_0xa9fb('0x2a')]['count'](_0x582258)[_0xa9fb('0x23')](function(_0x58b3bc){_0x51af12[_0xa9fb('0x1f')]=_0x58b3bc;if(_0x4813f4[_0xa9fb('0x30')][_0xa9fb('0x40')]){_0x4f96c8[_0xa9fb('0x41')]=[{'all':!![]}];}return db['VoiceDialReport'][_0xa9fb('0x42')](_0x4f96c8);})['then'](function(_0x49e09f){_0x51af12['rows']=_0x49e09f;return _0x51af12;})['then'](respondWithFilteredResult(_0x26129f,_0x4f96c8))[_0xa9fb('0x43')](handleError(_0x26129f,null));};exports[_0xa9fb('0x44')]=function(_0x5f2054,_0x300634){var _0x112b6a={'raw':!![],'where':{'id':_0x5f2054[_0xa9fb('0x45')]['id']}},_0x150b7a={};_0x150b7a[_0xa9fb('0x2e')]=_[_0xa9fb('0x31')](db[_0xa9fb('0x2a')][_0xa9fb('0x46')]);_0x150b7a['query']=_[_0xa9fb('0x31')](_0x5f2054[_0xa9fb('0x30')]);_0x150b7a['filters']=_[_0xa9fb('0x32')](_0x150b7a[_0xa9fb('0x2e')],_0x150b7a[_0xa9fb('0x30')]);_0x112b6a[_0xa9fb('0x33')]=_['intersection'](_0x150b7a[_0xa9fb('0x2e')],qs[_0xa9fb('0x34')](_0x5f2054[_0xa9fb('0x30')][_0xa9fb('0x34')]));_0x112b6a[_0xa9fb('0x33')]=_0x112b6a[_0xa9fb('0x33')]['length']?_0x112b6a[_0xa9fb('0x33')]:_0x150b7a['model'];if(_0x5f2054[_0xa9fb('0x30')][_0xa9fb('0x40')]){_0x112b6a[_0xa9fb('0x41')]=[{'all':!![]}];}_0x112b6a=_[_0xa9fb('0x3d')]({},_0x112b6a,_0x5f2054[_0xa9fb('0x3f')]);return db[_0xa9fb('0x2a')]['find'](_0x112b6a)[_0xa9fb('0x23')](handleEntityNotFound(_0x300634,null))['then'](respondWithResult(_0x300634,null))[_0xa9fb('0x43')](handleError(_0x300634,null));};exports[_0xa9fb('0x47')]=function(_0xbcacfd,_0x3968ec){return db[_0xa9fb('0x2a')][_0xa9fb('0x47')](_0xbcacfd['body'],{})[_0xa9fb('0x23')](respondWithResult(_0x3968ec,0xc9))[_0xa9fb('0x43')](handleError(_0x3968ec,null));};exports[_0xa9fb('0x48')]=function(_0x57cf37,_0x447c61){if(_0x57cf37[_0xa9fb('0x49')]['id']){delete _0x57cf37[_0xa9fb('0x49')]['id'];}return db[_0xa9fb('0x2a')][_0xa9fb('0x4a')]({'where':{'id':_0x57cf37[_0xa9fb('0x45')]['id']}})[_0xa9fb('0x23')](handleEntityNotFound(_0x447c61,null))[_0xa9fb('0x23')](saveUpdates(_0x57cf37['body'],null))[_0xa9fb('0x23')](respondWithResult(_0x447c61,null))[_0xa9fb('0x43')](handleError(_0x447c61,null));};exports[_0xa9fb('0x4b')]=function(_0x3857cb,_0x485566){return db[_0xa9fb('0x2a')][_0xa9fb('0x4a')]({'where':{'id':_0x3857cb['params']['id']}})[_0xa9fb('0x23')](handleEntityNotFound(_0x485566,null))[_0xa9fb('0x23')](removeEntity(_0x485566,null))['catch'](handleError(_0x485566,null));};exports[_0xa9fb('0x4c')]=function(_0x366cb4,_0x34811d){return db[_0xa9fb('0x2a')]['describe']()[_0xa9fb('0x23')](respondWithResult(_0x34811d,null))[_0xa9fb('0x43')](handleError(_0x34811d,null));};
\ No newline at end of file
index b4c6fae..f117bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb719=['path','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x49e7c4,_0x1f935c){var _0x2c5330=function(_0x494d91){while(--_0x494d91){_0x49e7c4['push'](_0x49e7c4['shift']());}};_0x2c5330(++_0x1f935c);}(_0xb719,0x1f4));var _0x9b71=function(_0x425d5e,_0x3b9040){_0x425d5e=_0x425d5e-0x0;var _0x3cc67b=_0xb719[_0x425d5e];return _0x3cc67b;};'use strict';var _=require(_0x9b71('0x0'));var util=require(_0x9b71('0x1'));var logger=require(_0x9b71('0x2'))(_0x9b71('0x3'));var moment=require(_0x9b71('0x4'));var BPromise=require(_0x9b71('0x5'));var rp=require(_0x9b71('0x6'));var fs=require('fs');var path=require(_0x9b71('0x7'));var rimraf=require('rimraf');var config=require(_0x9b71('0x8'));var attributes=require(_0x9b71('0x9'));module[_0x9b71('0xa')]=function(_0x5c2367,_0x2e26ae){return _0x5c2367[_0x9b71('0xb')](_0x9b71('0xc'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xceaa=['request-promise','path','rimraf','../../config/environment','exports','define','VoiceDialReport','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3e9d48,_0x276dab){var _0x3bc601=function(_0x14eba7){while(--_0x14eba7){_0x3e9d48['push'](_0x3e9d48['shift']());}};_0x3bc601(++_0x276dab);}(_0xceaa,0x14b));var _0xacea=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xceaa[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xacea('0x0'));var util=require('util');var logger=require(_0xacea('0x1'))(_0xacea('0x2'));var moment=require(_0xacea('0x3'));var BPromise=require(_0xacea('0x4'));var rp=require(_0xacea('0x5'));var fs=require('fs');var path=require(_0xacea('0x6'));var rimraf=require(_0xacea('0x7'));var config=require(_0xacea('0x8'));var attributes=require('./voiceDialReport.attributes');module[_0xacea('0x9')]=function(_0x58b9ec,_0x21ffde){return _0x58b9ec[_0xacea('0xa')](_0xacea('0xb'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index d449d26..7ef600e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a3b=['ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateVoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','update','where','attributes','lodash','util','moment','randomstring'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0x8a3b,0x164));var _0xb8a3=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x8a3b[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0xb8a3('0x0'));var util=require(_0xb8a3('0x1'));var moment=require(_0xb8a3('0x2'));var BPromise=require('bluebird');var rs=require(_0xb8a3('0x3'));var fs=require('fs');var Redis=require(_0xb8a3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb8a3('0x5'));var logger=require(_0xb8a3('0x6'))(_0xb8a3('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb8a3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1dc9cb,_0x2d430f,_0x45b661){return new BPromise(function(_0x2038d7,_0xb6ffd2){return client[_0xb8a3('0x9')](_0x1dc9cb,_0x45b661)[_0xb8a3('0xa')](function(_0xf944ae){logger[_0xb8a3('0xb')](_0xb8a3('0xc'),_0x2d430f,_0xb8a3('0xd'));logger[_0xb8a3('0xe')](_0xb8a3('0xf'),_0x2d430f,_0xb8a3('0xd'),JSON[_0xb8a3('0x10')](_0xf944ae));if(_0xf944ae[_0xb8a3('0x11')]){if(_0xf944ae['error'][_0xb8a3('0x12')]===0x1f4){logger[_0xb8a3('0x11')](_0xb8a3('0xc'),_0x2d430f,_0xf944ae[_0xb8a3('0x11')]['message']);return _0xb6ffd2(_0xf944ae[_0xb8a3('0x11')]['message']);}logger[_0xb8a3('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x2d430f,_0xf944ae[_0xb8a3('0x11')][_0xb8a3('0x13')]);return _0x2038d7(_0xf944ae[_0xb8a3('0x11')][_0xb8a3('0x13')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x2d430f,_0xb8a3('0xd'));_0x2038d7(_0xf944ae['result'][_0xb8a3('0x13')]);}})[_0xb8a3('0x14')](function(_0x1a7953){logger[_0xb8a3('0x11')](_0xb8a3('0xc'),_0x2d430f,_0x1a7953);_0xb6ffd2(_0x1a7953);});});}exports[_0xb8a3('0x15')]=function(_0x89e960){var _0x11427c=this;return new Promise(function(_0x567a80,_0x32c46b){return db['VoiceDialReport'][_0xb8a3('0x16')](_0x89e960[_0xb8a3('0x17')],{'raw':_0x89e960[_0xb8a3('0x18')]?_0x89e960[_0xb8a3('0x18')][_0xb8a3('0x19')]===undefined?!![]:![]:!![]})[_0xb8a3('0xa')](function(_0x255699){logger[_0xb8a3('0xb')](_0xb8a3('0x15'),_0x89e960);logger[_0xb8a3('0xe')](_0xb8a3('0x15'),_0x89e960,JSON[_0xb8a3('0x10')](_0x255699));_0x567a80(_0x255699);})[_0xb8a3('0x14')](function(_0x218db3){logger['error'](_0xb8a3('0x15'),_0x218db3[_0xb8a3('0x13')],_0x89e960);_0x32c46b(_0x11427c[_0xb8a3('0x11')](0x1f4,_0x218db3[_0xb8a3('0x13')]));});});};exports[_0xb8a3('0x1a')]=function(_0x263eab){var _0x262960=this;return new Promise(function(_0x7318ca,_0x5cb9a3){return db['VoiceDialReport'][_0xb8a3('0x1b')](_0x263eab[_0xb8a3('0x17')],{'raw':_0x263eab[_0xb8a3('0x18')]?_0x263eab[_0xb8a3('0x18')][_0xb8a3('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x263eab[_0xb8a3('0x18')]?_0x263eab[_0xb8a3('0x18')][_0xb8a3('0x1c')]||null:null,'attributes':_0x263eab[_0xb8a3('0x18')]?_0x263eab[_0xb8a3('0x18')][_0xb8a3('0x1d')]||null:null,'limit':_0x263eab[_0xb8a3('0x18')]?_0x263eab['options']['limit']||null:null})['then'](function(_0x45ec51){logger[_0xb8a3('0xb')](_0xb8a3('0x1a'),_0x263eab);logger[_0xb8a3('0xe')](_0xb8a3('0x1a'),_0x263eab,JSON[_0xb8a3('0x10')](_0x45ec51));_0x7318ca(_0x45ec51);})[_0xb8a3('0x14')](function(_0x1dc3bc){logger[_0xb8a3('0x11')]('UpdateVoiceDialReport',_0x1dc3bc[_0xb8a3('0x13')],_0x263eab);_0x5cb9a3(_0x262960[_0xb8a3('0x11')](0x1f4,_0x1dc3bc[_0xb8a3('0x13')]));});});};
\ No newline at end of file
+var _0x9368=['CreateVoiceDialReport','VoiceDialReport','create','options','raw','UpdateVoiceDialReport','update','body','limit','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x3aa1a2,_0x28256d){var _0x710331=function(_0x3b9208){while(--_0x3b9208){_0x3aa1a2['push'](_0x3aa1a2['shift']());}};_0x710331(++_0x28256d);}(_0x9368,0xca));var _0x8936=function(_0xb1cf84,_0x813740){_0xb1cf84=_0xb1cf84-0x0;var _0x4bad2e=_0x9368[_0xb1cf84];return _0x4bad2e;};'use strict';var _=require(_0x8936('0x0'));var util=require(_0x8936('0x1'));var moment=require(_0x8936('0x2'));var BPromise=require(_0x8936('0x3'));var rs=require(_0x8936('0x4'));var fs=require('fs');var Redis=require(_0x8936('0x5'));var db=require(_0x8936('0x6'))['db'];var utils=require(_0x8936('0x7'));var logger=require(_0x8936('0x8'))(_0x8936('0x9'));var config=require('../../config/environment');var jayson=require(_0x8936('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5934ee,_0x2de285,_0x1f70d5){return new BPromise(function(_0x376638,_0xe3d296){return client['request'](_0x5934ee,_0x1f70d5)[_0x8936('0xb')](function(_0x52bc18){logger['info'](_0x8936('0xc'),_0x2de285,_0x8936('0xd'));logger[_0x8936('0xe')](_0x8936('0xf'),_0x2de285,_0x8936('0xd'),JSON[_0x8936('0x10')](_0x52bc18));if(_0x52bc18['error']){if(_0x52bc18[_0x8936('0x11')][_0x8936('0x12')]===0x1f4){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x2de285,_0x52bc18[_0x8936('0x11')][_0x8936('0x13')]);return _0xe3d296(_0x52bc18['error'][_0x8936('0x13')]);}logger[_0x8936('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x2de285,_0x52bc18[_0x8936('0x11')][_0x8936('0x13')]);return _0x376638(_0x52bc18[_0x8936('0x11')]['message']);}else{logger[_0x8936('0x14')](_0x8936('0xc'),_0x2de285,_0x8936('0xd'));_0x376638(_0x52bc18[_0x8936('0x15')][_0x8936('0x13')]);}})['catch'](function(_0x113428){logger[_0x8936('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x2de285,_0x113428);_0xe3d296(_0x113428);});});}exports[_0x8936('0x16')]=function(_0x47635d){var _0x4817f6=this;return new Promise(function(_0x1e2737,_0xb15fb1){return db[_0x8936('0x17')][_0x8936('0x18')](_0x47635d['body'],{'raw':_0x47635d[_0x8936('0x19')]?_0x47635d['options'][_0x8936('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x4337aa){logger[_0x8936('0x14')]('CreateVoiceDialReport',_0x47635d);logger['debug'](_0x8936('0x16'),_0x47635d,JSON[_0x8936('0x10')](_0x4337aa));_0x1e2737(_0x4337aa);})['catch'](function(_0x49aac5){logger[_0x8936('0x11')](_0x8936('0x16'),_0x49aac5[_0x8936('0x13')],_0x47635d);_0xb15fb1(_0x4817f6[_0x8936('0x11')](0x1f4,_0x49aac5[_0x8936('0x13')]));});});};exports[_0x8936('0x1b')]=function(_0x4f3a5f){var _0x15d6d1=this;return new Promise(function(_0x3ff052,_0x2ed3c9){return db[_0x8936('0x17')][_0x8936('0x1c')](_0x4f3a5f[_0x8936('0x1d')],{'raw':_0x4f3a5f[_0x8936('0x19')]?_0x4f3a5f[_0x8936('0x19')][_0x8936('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f3a5f[_0x8936('0x19')]?_0x4f3a5f[_0x8936('0x19')]['where']||null:null,'attributes':_0x4f3a5f[_0x8936('0x19')]?_0x4f3a5f[_0x8936('0x19')]['attributes']||null:null,'limit':_0x4f3a5f[_0x8936('0x19')]?_0x4f3a5f[_0x8936('0x19')][_0x8936('0x1e')]||null:null})[_0x8936('0xb')](function(_0x18a691){logger[_0x8936('0x14')](_0x8936('0x1b'),_0x4f3a5f);logger[_0x8936('0xe')](_0x8936('0x1b'),_0x4f3a5f,JSON[_0x8936('0x10')](_0x18a691));_0x3ff052(_0x18a691);})[_0x8936('0x1f')](function(_0x56b71e){logger[_0x8936('0x11')](_0x8936('0x1b'),_0x56b71e[_0x8936('0x13')],_0x4f3a5f);_0x2ed3c9(_0x15d6d1[_0x8936('0x11')](0x1f4,_0x56b71e[_0x8936('0x13')]));});});};
\ No newline at end of file
index 49c38cf..6db5fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee3f=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','show','post','create','/:id/applications','addApplications','put','/:id','update','delete','exports','multer','util','path'];(function(_0x583e6f,_0x428ae2){var _0x158dad=function(_0x27f214){while(--_0x27f214){_0x583e6f['push'](_0x583e6f['shift']());}};_0x158dad(++_0x428ae2);}(_0xee3f,0x184));var _0xfee3=function(_0x12095d,_0x47c760){_0x12095d=_0x12095d-0x0;var _0x415172=_0xee3f[_0x12095d];return _0x415172;};'use strict';var multer=require(_0xfee3('0x0'));var util=require(_0xfee3('0x1'));var path=require(_0xfee3('0x2'));var timeout=require('connect-timeout');var express=require(_0xfee3('0x3'));var router=express[_0xfee3('0x4')]();var fs_extra=require(_0xfee3('0x5'));var auth=require(_0xfee3('0x6'));var interaction=require(_0xfee3('0x7'));var config=require(_0xfee3('0x8'));var controller=require(_0xfee3('0x9'));router[_0xfee3('0xa')]('/',auth[_0xfee3('0xb')](),controller[_0xfee3('0xc')]);router['get']('/:id',auth[_0xfee3('0xb')](),controller[_0xfee3('0xd')]);router[_0xfee3('0xe')]('/',auth[_0xfee3('0xb')](),controller[_0xfee3('0xf')]);router[_0xfee3('0xe')](_0xfee3('0x10'),auth['isAuthenticated'](),controller[_0xfee3('0x11')]);router[_0xfee3('0x12')](_0xfee3('0x13'),auth[_0xfee3('0xb')](),controller[_0xfee3('0x14')]);router[_0xfee3('0x15')](_0xfee3('0x13'),auth[_0xfee3('0xb')](),controller['destroy']);module[_0xfee3('0x16')]=router;
\ No newline at end of file
+var _0x4136=['show','post','/:id/applications','addApplications','update','delete','destroy','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x2128d3,_0x420dfa){var _0x49fa00=function(_0x2c091e){while(--_0x2c091e){_0x2128d3['push'](_0x2128d3['shift']());}};_0x49fa00(++_0x420dfa);}(_0x4136,0x1c2));var _0x6413=function(_0x2478d1,_0x7c57b){_0x2478d1=_0x2478d1-0x0;var _0x4f2c9c=_0x4136[_0x2478d1];return _0x4f2c9c;};'use strict';var multer=require('multer');var util=require(_0x6413('0x0'));var path=require(_0x6413('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6413('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6413('0x3'));var interaction=require(_0x6413('0x4'));var config=require(_0x6413('0x5'));var controller=require('./voiceExtension.controller');router[_0x6413('0x6')]('/',auth[_0x6413('0x7')](),controller[_0x6413('0x8')]);router[_0x6413('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x6413('0x9')]);router[_0x6413('0xa')]('/',auth[_0x6413('0x7')](),controller['create']);router[_0x6413('0xa')](_0x6413('0xb'),auth[_0x6413('0x7')](),controller[_0x6413('0xc')]);router['put']('/:id',auth[_0x6413('0x7')](),controller[_0x6413('0xd')]);router[_0x6413('0xe')]('/:id',auth[_0x6413('0x7')](),controller[_0x6413('0xf')]);module[_0x6413('0x10')]=router;
\ No newline at end of file
index 7268c1b..328806b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x962d=['NoOp','ENUM','inbound','outbound','internal','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','exten','sequelize','compositeIndex','STRING'];(function(_0x26f66e,_0x252307){var _0x81a238=function(_0x257a8f){while(--_0x257a8f){_0x26f66e['push'](_0x26f66e['shift']());}};_0x81a238(++_0x252307);}(_0x962d,0x1cd));var _0xd962=function(_0x561771,_0x554760){_0x561771=_0x561771-0x0;var _0x54d16e=_0x962d[_0x561771];return _0x54d16e;};'use strict';var Sequelize=require(_0xd962('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd962('0x1')},'priority':{'type':Sequelize[_0xd962('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xd962('0x1')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd962('0x3')},'appdata':{'type':Sequelize[_0xd962('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xd962('0x4')](_0xd962('0x5'),_0xd962('0x6'),_0xd962('0x7'),'inbound-fax','outbound-fax',_0xd962('0x8'),_0xd962('0x9')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd962('0xa')},'IntervalId':{'type':Sequelize[_0xd962('0xb')]},'isApp':{'type':Sequelize[_0xd962('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xd962('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xd962('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xd962('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xd962('0xb')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xd962('0xd')},'answer':{'type':Sequelize[_0xd962('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0xd962('0xe')],'get':function(_0xca34b0){return this['getDataValue'](_0xd962('0xf'));}},'alias':{'type':Sequelize[_0xd962('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x113a=['compositeIndex','ENUM','inbound','outbound','inbound-fax','any','*,*,*,*','BOOLEAN','INTEGER','wav','getDataValue','exten','sequelize','exports','STRING'];(function(_0x5e5789,_0x44bee9){var _0x5d1089=function(_0xb50e5d){while(--_0xb50e5d){_0x5e5789['push'](_0x5e5789['shift']());}};_0x5d1089(++_0x44bee9);}(_0x113a,0x165));var _0xa113=function(_0x246e0a,_0x1f3bf7){_0x246e0a=_0x246e0a-0x0;var _0x309ddb=_0x113a[_0x246e0a];return _0x309ddb;};'use strict';var Sequelize=require(_0xa113('0x0'));module[_0xa113('0x1')]={'context':{'type':Sequelize[_0xa113('0x2')],'allowNull':![],'unique':_0xa113('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa113('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0xa113('0x3')},'tag':{'type':Sequelize[_0xa113('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xa113('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xa113('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xa113('0x4')](_0xa113('0x5'),_0xa113('0x6'),'internal',_0xa113('0x7'),'outbound-fax','system',_0xa113('0x8')),'allowNull':![]},'description':{'type':Sequelize[_0xa113('0x2')]},'interval':{'type':Sequelize[_0xa113('0x2')],'allowNull':![],'defaultValue':_0xa113('0x9')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0xa113('0xa')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xa113('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xa113('0xa')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xa113('0xb')]},'recordingFormat':{'type':Sequelize[_0xa113('0x2')],'defaultValue':_0xa113('0xc')},'answer':{'type':Sequelize[_0xa113('0xa')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1f66d9){return this[_0xa113('0xd')](_0xa113('0xe'));}},'alias':{'type':Sequelize[_0xa113('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 3ae35f9..396a28d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cb1=['InboundRoutes','inbound','outbound','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','UserProfileResource','error','stack','index','VoiceExtension','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','merge','VIRTUAL','options','include','findAll','catch','show','includeAll','create','startsWith','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','context','description','cutdigits','mandatoryDisposition','addApplications','findOne','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get'];(function(_0x1a007a,_0x5f3509){var _0x1b3ea8=function(_0x26e958){while(--_0x26e958){_0x1a007a['push'](_0x1a007a['shift']());}};_0x1b3ea8(++_0x5f3509);}(_0x5cb1,0xb9));var _0x15cb=function(_0x3e750b,_0x2070d9){_0x3e750b=_0x3e750b-0x0;var _0x1e2ac3=_0x5cb1[_0x3e750b];return _0x1e2ac3;};'use strict';var emlformat=require(_0x15cb('0x0'));var rimraf=require(_0x15cb('0x1'));var zipdir=require(_0x15cb('0x2'));var jsonpatch=require(_0x15cb('0x3'));var rp=require(_0x15cb('0x4'));var moment=require(_0x15cb('0x5'));var BPromise=require(_0x15cb('0x6'));var Mustache=require(_0x15cb('0x7'));var util=require(_0x15cb('0x8'));var path=require(_0x15cb('0x9'));var sox=require(_0x15cb('0xa'));var csv=require('to-csv');var ejs=require(_0x15cb('0xb'));var fs=require('fs');var fs_extra=require(_0x15cb('0xc'));var _=require(_0x15cb('0xd'));var squel=require(_0x15cb('0xe'));var crypto=require('crypto');var jsforce=require(_0x15cb('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x15cb('0x10'));var Papa=require(_0x15cb('0x11'));var Redis=require(_0x15cb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x15cb('0x13'));var as=require(_0x15cb('0x14'));var hardwareService=require(_0x15cb('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x15cb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x15cb('0x17'));var db=require(_0x15cb('0x18'))['db'];config[_0x15cb('0x19')]=_[_0x15cb('0x1a')](config[_0x15cb('0x19')],{'host':_0x15cb('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x15cb('0x19')]));require(_0x15cb('0x1c'))[_0x15cb('0x1d')](socket);function respondWithStatusCode(_0x252a6f,_0x59a657){_0x59a657=_0x59a657||0xcc;return function(_0x1073ee){if(_0x1073ee){return _0x252a6f[_0x15cb('0x1e')](_0x59a657);}return _0x252a6f[_0x15cb('0x1f')](_0x59a657)[_0x15cb('0x20')]();};}function respondWithResult(_0x49486b,_0x2d735b){_0x2d735b=_0x2d735b||0xc8;return function(_0x1fb63b){if(_0x1fb63b){return _0x49486b[_0x15cb('0x1f')](_0x2d735b)['json'](_0x1fb63b);}};}function respondWithFilteredResult(_0x478dd2,_0x207cd5){return function(_0x28109b){if(_0x28109b){var _0x19bb77=typeof _0x207cd5[_0x15cb('0x21')]===_0x15cb('0x22')&&typeof _0x207cd5['limit']===_0x15cb('0x22');var _0x7ddd79=_0x28109b[_0x15cb('0x23')];var _0xec487f=_0x19bb77?0x0:_0x207cd5[_0x15cb('0x21')];var _0x4bc436=_0x19bb77?_0x28109b[_0x15cb('0x23')]:_0x207cd5[_0x15cb('0x21')]+_0x207cd5['limit'];var _0x335134;if(_0x4bc436>=_0x7ddd79){_0x4bc436=_0x7ddd79;_0x335134=0xc8;}else{_0x335134=0xce;}_0x478dd2['status'](_0x335134);return _0x478dd2[_0x15cb('0x24')](_0x15cb('0x25'),_0xec487f+'-'+_0x4bc436+'/'+_0x7ddd79)['json'](_0x28109b);}return null;};}function patchUpdates(_0x2f67e8){return function(_0x4ab9dc){try{jsonpatch[_0x15cb('0x26')](_0x4ab9dc,_0x2f67e8,!![]);}catch(_0x1bb5c0){return BPromise[_0x15cb('0x27')](_0x1bb5c0);}return _0x4ab9dc[_0x15cb('0x28')]();};}function saveUpdates(_0x3787d5,_0x27b3f2){return function(_0xa05918){if(_0xa05918){return _0xa05918[_0x15cb('0x29')](_0x3787d5)[_0x15cb('0x2a')](function(_0x3ab254){return _0x3ab254;});}return null;};}function removeEntity(_0x2e2f6b,_0x39d0df){return function(_0x20c45a){if(_0x20c45a){return _0x20c45a[_0x15cb('0x2b')]()['then'](function(){var _0x5baf8f=_0x20c45a[_0x15cb('0x2c')]({'plain':!![]});var _0x4343eb=[{'name':_0x15cb('0x2d'),'value':_0x15cb('0x2e'),'ignore':![]},{'name':'OutboundRoutes','value':_0x15cb('0x2f'),'ignore':![]},{'name':_0x15cb('0x30'),'value':_0x15cb('0x31'),'ignore':![]}];var _0x4f7052=_(_0x4343eb)[_0x15cb('0x32')](_0x15cb('0x33'))['map']('value')[_0x15cb('0x34')]();if(_[_0x15cb('0x35')](_0x4f7052,_0x5baf8f[_0x15cb('0x36')])){return;}var _0x422385=_[_0x15cb('0x37')](_0x4343eb,['value',_0x5baf8f[_0x15cb('0x36')]])[_0x15cb('0x38')];return db[_0x15cb('0x39')][_0x15cb('0x2b')]({'where':{'type':_0x422385,'resourceId':_0x5baf8f['id']}})[_0x15cb('0x2a')](function(){return _0x20c45a;});})[_0x15cb('0x2a')](function(){_0x2e2f6b['status'](0xcc)[_0x15cb('0x20')]();});}};}function handleEntityNotFound(_0x4b2f9f,_0xa789dd){return function(_0x529fd0){if(!_0x529fd0){_0x4b2f9f[_0x15cb('0x1e')](0x194);}return _0x529fd0;};}function handleError(_0x1aa29d,_0x462329){_0x462329=_0x462329||0x1f4;return function(_0x366d9c){logger[_0x15cb('0x3a')](_0x366d9c[_0x15cb('0x3b')]);if(_0x366d9c['name']){delete _0x366d9c[_0x15cb('0x38')];}_0x1aa29d[_0x15cb('0x1f')](_0x462329)['send'](_0x366d9c);};}exports[_0x15cb('0x3c')]=function(_0x4dcf99,_0x23018a){var _0x5bbef1={},_0x42d727={},_0x3f77f6={'count':0x0,'rows':[]};var _0x243a3e=_['map'](db[_0x15cb('0x3d')][_0x15cb('0x3e')],function(_0x573057){return{'name':_0x573057[_0x15cb('0x3f')],'type':_0x573057['type'][_0x15cb('0x40')]};});_0x42d727[_0x15cb('0x41')]=_[_0x15cb('0x42')](_0x243a3e,_0x15cb('0x38'));_0x42d727[_0x15cb('0x43')]=_[_0x15cb('0x44')](_0x4dcf99['query']);_0x42d727[_0x15cb('0x45')]=_[_0x15cb('0x46')](_0x42d727['model'],_0x42d727[_0x15cb('0x43')]);_0x5bbef1[_0x15cb('0x47')]=_['intersection'](_0x42d727[_0x15cb('0x41')],qs[_0x15cb('0x48')](_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x48')]));_0x5bbef1[_0x15cb('0x47')]=_0x5bbef1['attributes'][_0x15cb('0x49')]?_0x5bbef1['attributes']:_0x42d727['model'];if(!_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x4a')](_0x15cb('0x4b'))){_0x5bbef1[_0x15cb('0x4c')]=qs[_0x15cb('0x4c')](_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x4c')]);_0x5bbef1[_0x15cb('0x21')]=qs[_0x15cb('0x21')](_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x21')]);}_0x5bbef1[_0x15cb('0x4d')]=qs[_0x15cb('0x4e')](_0x4dcf99['query'][_0x15cb('0x4e')]);_0x5bbef1['where']=qs[_0x15cb('0x45')](_[_0x15cb('0x4f')](_0x4dcf99[_0x15cb('0x43')],_0x42d727['filters']),_0x243a3e);if(_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x32')]){_0x5bbef1['where']=_[_0x15cb('0x50')](_0x5bbef1['where'],{'$or':_['map'](_0x243a3e,function(_0x2f51cd){if(_0x2f51cd[_0x15cb('0x36')]!==_0x15cb('0x51')){var _0x6a92c5={};_0x6a92c5[_0x2f51cd[_0x15cb('0x38')]]={'$like':'%'+_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x32')]+'%'};return _0x6a92c5;}})});}_0x5bbef1=_[_0x15cb('0x50')]({},_0x5bbef1,_0x4dcf99[_0x15cb('0x52')]);var _0x11bc0c={'where':_0x5bbef1['where']};return db['VoiceExtension'][_0x15cb('0x23')](_0x11bc0c)['then'](function(_0x2e285a){_0x3f77f6[_0x15cb('0x23')]=_0x2e285a;if(_0x4dcf99[_0x15cb('0x43')]['includeAll']){_0x5bbef1[_0x15cb('0x53')]=[{'all':!![]}];}return db['VoiceExtension'][_0x15cb('0x54')](_0x5bbef1);})[_0x15cb('0x2a')](function(_0x14b02c){_0x3f77f6['rows']=_0x14b02c;return _0x3f77f6;})[_0x15cb('0x2a')](respondWithFilteredResult(_0x23018a,_0x5bbef1))[_0x15cb('0x55')](handleError(_0x23018a,null));};exports[_0x15cb('0x56')]=function(_0x389ea2,_0x1e78cc){var _0x3022b6={'raw':![],'where':{'id':_0x389ea2['params']['id']}},_0x50f2bf={};_0x50f2bf['model']=_[_0x15cb('0x44')](db[_0x15cb('0x3d')][_0x15cb('0x3e')]);_0x50f2bf[_0x15cb('0x43')]=_[_0x15cb('0x44')](_0x389ea2['query']);_0x50f2bf[_0x15cb('0x45')]=_['intersection'](_0x50f2bf['model'],_0x50f2bf['query']);_0x3022b6[_0x15cb('0x47')]=_[_0x15cb('0x46')](_0x50f2bf['model'],qs[_0x15cb('0x48')](_0x389ea2[_0x15cb('0x43')]['fields']));_0x3022b6[_0x15cb('0x47')]=_0x3022b6['attributes'][_0x15cb('0x49')]?_0x3022b6['attributes']:_0x50f2bf[_0x15cb('0x41')];if(_0x389ea2['query'][_0x15cb('0x57')]){_0x3022b6[_0x15cb('0x53')]=[{'all':!![]}];}_0x3022b6=_[_0x15cb('0x50')]({},_0x3022b6,_0x389ea2[_0x15cb('0x52')]);return db[_0x15cb('0x3d')][_0x15cb('0x37')](_0x3022b6)[_0x15cb('0x2a')](handleEntityNotFound(_0x1e78cc,null))[_0x15cb('0x2a')](respondWithResult(_0x1e78cc,null))[_0x15cb('0x55')](handleError(_0x1e78cc,null));};exports[_0x15cb('0x2b')]=function(_0x558a6c,_0x462b0d){return db[_0x15cb('0x3d')][_0x15cb('0x37')]({'where':{'id':_0x558a6c['params']['id']}})[_0x15cb('0x2a')](handleEntityNotFound(_0x462b0d,null))[_0x15cb('0x2a')](removeEntity(_0x462b0d,null))['catch'](handleError(_0x462b0d,null));};exports[_0x15cb('0x58')]=function(_0x4e02a5,_0xb9c45b){if(_0x4e02a5['body'][_0x15cb('0x36')]==='outbound'&&!_[_0x15cb('0x59')](_0x4e02a5[_0x15cb('0x5a')][_0x15cb('0x5b')],'_')){_0x4e02a5[_0x15cb('0x5a')][_0x15cb('0x5b')]='_'[_0x15cb('0x5c')](_0x4e02a5[_0x15cb('0x5a')]['exten']);}return db[_0x15cb('0x3d')][_0x15cb('0x58')](_0x4e02a5[_0x15cb('0x5a')],{'raw':![]})['then'](function(_0x4a688b){var _0xa0fcab=_0x4e02a5[_0x15cb('0x5d')][_0x15cb('0x2c')]({'plain':!![]});if(!_0xa0fcab)throw new Error(_0x15cb('0x5e'));if(_0xa0fcab[_0x15cb('0x5f')]===_0x15cb('0x5d')){var _0x287cd3=_0x4a688b['get']({'plain':!![]});var _0x132531=[{'name':'InboundRoutes','value':_0x15cb('0x2e')},{'name':'OutboundRoutes','value':_0x15cb('0x2f')},{'name':_0x15cb('0x30'),'value':_0x15cb('0x31')}];var _0x45773d=_['find'](_0x132531,[_0x15cb('0x34'),_0x287cd3[_0x15cb('0x36')]])['name'];return db[_0x15cb('0x60')][_0x15cb('0x37')]({'where':{'name':_0x45773d,'userProfileId':_0xa0fcab[_0x15cb('0x61')]},'raw':!![]})[_0x15cb('0x2a')](function(_0x3b35ce){if(_0x3b35ce&&_0x3b35ce['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x287cd3[_0x15cb('0x38')],'resourceId':_0x287cd3['id'],'type':_0x3b35ce['name'],'sectionId':_0x3b35ce['id']},{})[_0x15cb('0x2a')](function(){return _0x4a688b;});}else{return _0x4a688b;}})[_0x15cb('0x55')](function(_0x4959c6){logger[_0x15cb('0x3a')](_0x15cb('0x62'),_0x4959c6);throw _0x4959c6;});}return _0x4a688b;})[_0x15cb('0x2a')](respondWithResult(_0xb9c45b,0xc9))['catch'](handleError(_0xb9c45b,null));};exports[_0x15cb('0x29')]=function(_0xb72af3,_0x182b8e){if(_0xb72af3[_0x15cb('0x5a')]['id']){delete _0xb72af3[_0x15cb('0x5a')]['id'];}return db[_0x15cb('0x3d')]['find']({'where':{'id':_0xb72af3[_0x15cb('0x63')]['id']}})[_0x15cb('0x2a')](handleEntityNotFound(_0x182b8e,null))[_0x15cb('0x2a')](function(_0x50f678){if(_0x50f678){return db[_0x15cb('0x3d')][_0x15cb('0x29')](_['pick'](_0xb72af3[_0x15cb('0x5a')],[_0x15cb('0x5b'),_0x15cb('0x64'),_0x15cb('0x65'),'recordingFormat',_0x15cb('0x66'),_0x15cb('0x67'),'alias']),{'where':{'context':_0x50f678[_0x15cb('0x64')],'exten':_0x50f678[_0x15cb('0x5b')]},'individualHooks':!![]})['then'](function(_0x5486ab){return _0x5486ab;});}return null;})[_0x15cb('0x2a')](respondWithStatusCode(_0x182b8e,null))[_0x15cb('0x55')](handleError(_0x182b8e,null));};exports[_0x15cb('0x68')]=function(_0x313a39,_0x61a959){return db[_0x15cb('0x3d')][_0x15cb('0x69')]({'where':{'id':_0x313a39[_0x15cb('0x63')]['id']}})[_0x15cb('0x2a')](function(_0x57d2df){if(_0x57d2df){return db['sequelize'][_0x15cb('0x6a')](function(_0x1d4877){return db[_0x15cb('0x3d')][_0x15cb('0x2b')]({'where':{'VoiceExtensionId':_0x313a39['params']['id']},'transaction':_0x1d4877})[_0x15cb('0x2a')](function(){var _0x36e6e5=_['map'](_0x313a39[_0x15cb('0x5a')],function(_0x2816af){_0x2816af[_0x15cb('0x6b')]=_0x313a39[_0x15cb('0x63')]['id'];_0x2816af[_0x15cb('0x6c')]=!![];return _0x2816af;});var _0x1bfec1=_0x313a39['query'][_0x15cb('0x6d')]&&_0x313a39[_0x15cb('0x43')][_0x15cb('0x6d')][_0x15cb('0x6e')]()===_0x15cb('0x6f')?!![]:![];return _0x57d2df[_0x15cb('0x70')](_0x36e6e5,_0x1bfec1);})[_0x15cb('0x2a')](function(_0x4da7a0){return db[_0x15cb('0x3d')][_0x15cb('0x71')](_0x4da7a0,{'transaction':_0x1d4877});});})[_0x15cb('0x2a')](function(){return db[_0x15cb('0x3d')][_0x15cb('0x72')]({'where':{'isApp':!![],'VoiceExtensionId':_0x313a39[_0x15cb('0x63')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x61a959,null))['catch'](handleError(_0x61a959,null));};
\ No newline at end of file
+var _0xda18=['api','../../config/utils','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','inbound','OutboundRoutes','outbound','InternalRoutes','map','value','includes','type','find','UserProfileResource','stack','name','send','VoiceExtension','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','keys','catch','create','startsWith','body','exten','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','description','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','isApp','rewriteDial','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger'];(function(_0x4d7fe6,_0x40f86c){var _0x4ad2ef=function(_0x535ae7){while(--_0x535ae7){_0x4d7fe6['push'](_0x4d7fe6['shift']());}};_0x4ad2ef(++_0x40f86c);}(_0xda18,0x190));var _0x8da1=function(_0x334189,_0xbdf998){_0x334189=_0x334189-0x0;var _0x44f791=_0xda18[_0x334189];return _0x44f791;};'use strict';var emlformat=require(_0x8da1('0x0'));var rimraf=require(_0x8da1('0x1'));var zipdir=require(_0x8da1('0x2'));var jsonpatch=require(_0x8da1('0x3'));var rp=require(_0x8da1('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8da1('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x8da1('0x6'));var ejs=require(_0x8da1('0x7'));var fs=require('fs');var fs_extra=require(_0x8da1('0x8'));var _=require(_0x8da1('0x9'));var squel=require(_0x8da1('0xa'));var crypto=require('crypto');var jsforce=require(_0x8da1('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8da1('0xc'));var Redis=require('ioredis');var authService=require(_0x8da1('0xd'));var qs=require(_0x8da1('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8da1('0xf'))(_0x8da1('0x10'));var utils=require(_0x8da1('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x8da1('0x12')]=_['defaults'](config['redis'],{'host':_0x8da1('0x13'),'port':0x18eb});var socket=require(_0x8da1('0x14'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0x8da1('0x15')](socket);function respondWithStatusCode(_0x12a67b,_0x643dd6){_0x643dd6=_0x643dd6||0xcc;return function(_0x49dd15){if(_0x49dd15){return _0x12a67b[_0x8da1('0x16')](_0x643dd6);}return _0x12a67b[_0x8da1('0x17')](_0x643dd6)[_0x8da1('0x18')]();};}function respondWithResult(_0x2f3bff,_0x51b0af){_0x51b0af=_0x51b0af||0xc8;return function(_0x436023){if(_0x436023){return _0x2f3bff[_0x8da1('0x17')](_0x51b0af)[_0x8da1('0x19')](_0x436023);}};}function respondWithFilteredResult(_0x344a57,_0x422c4c){return function(_0x1b9525){if(_0x1b9525){var _0x26b9d0=typeof _0x422c4c[_0x8da1('0x1a')]===_0x8da1('0x1b')&&typeof _0x422c4c[_0x8da1('0x1c')]==='undefined';var _0x33b5d2=_0x1b9525[_0x8da1('0x1d')];var _0x1e7609=_0x26b9d0?0x0:_0x422c4c[_0x8da1('0x1a')];var _0x4ab2b5=_0x26b9d0?_0x1b9525[_0x8da1('0x1d')]:_0x422c4c[_0x8da1('0x1a')]+_0x422c4c[_0x8da1('0x1c')];var _0x1ece2;if(_0x4ab2b5>=_0x33b5d2){_0x4ab2b5=_0x33b5d2;_0x1ece2=0xc8;}else{_0x1ece2=0xce;}_0x344a57[_0x8da1('0x17')](_0x1ece2);return _0x344a57[_0x8da1('0x1e')](_0x8da1('0x1f'),_0x1e7609+'-'+_0x4ab2b5+'/'+_0x33b5d2)[_0x8da1('0x19')](_0x1b9525);}return null;};}function patchUpdates(_0x2ae192){return function(_0x4bf669){try{jsonpatch[_0x8da1('0x20')](_0x4bf669,_0x2ae192,!![]);}catch(_0x1044a4){return BPromise[_0x8da1('0x21')](_0x1044a4);}return _0x4bf669[_0x8da1('0x22')]();};}function saveUpdates(_0x23b274,_0x2df8ea){return function(_0x176462){if(_0x176462){return _0x176462[_0x8da1('0x23')](_0x23b274)[_0x8da1('0x24')](function(_0x306c31){return _0x306c31;});}return null;};}function removeEntity(_0x766c5b,_0x5a7558){return function(_0x85d727){if(_0x85d727){return _0x85d727[_0x8da1('0x25')]()[_0x8da1('0x24')](function(){var _0x1024f4=_0x85d727['get']({'plain':!![]});var _0x167e43=[{'name':'InboundRoutes','value':_0x8da1('0x26'),'ignore':![]},{'name':_0x8da1('0x27'),'value':_0x8da1('0x28'),'ignore':![]},{'name':_0x8da1('0x29'),'value':'internal','ignore':![]}];var _0x234b5c=_(_0x167e43)['filter']('ignore')[_0x8da1('0x2a')](_0x8da1('0x2b'))['value']();if(_[_0x8da1('0x2c')](_0x234b5c,_0x1024f4[_0x8da1('0x2d')])){return;}var _0x2667f7=_[_0x8da1('0x2e')](_0x167e43,[_0x8da1('0x2b'),_0x1024f4['type']])['name'];return db[_0x8da1('0x2f')]['destroy']({'where':{'type':_0x2667f7,'resourceId':_0x1024f4['id']}})[_0x8da1('0x24')](function(){return _0x85d727;});})[_0x8da1('0x24')](function(){_0x766c5b[_0x8da1('0x17')](0xcc)[_0x8da1('0x18')]();});}};}function handleEntityNotFound(_0x2f5583,_0x35a7b8){return function(_0x4742b3){if(!_0x4742b3){_0x2f5583['sendStatus'](0x194);}return _0x4742b3;};}function handleError(_0xbcda5d,_0x48a267){_0x48a267=_0x48a267||0x1f4;return function(_0x4cdf5e){logger['error'](_0x4cdf5e[_0x8da1('0x30')]);if(_0x4cdf5e[_0x8da1('0x31')]){delete _0x4cdf5e[_0x8da1('0x31')];}_0xbcda5d[_0x8da1('0x17')](_0x48a267)[_0x8da1('0x32')](_0x4cdf5e);};}exports['index']=function(_0x15fdda,_0x28a530){var _0x10558a={},_0x184de6={},_0x5a286e={'count':0x0,'rows':[]};var _0x247368=_['map'](db[_0x8da1('0x33')][_0x8da1('0x34')],function(_0x6b182b){return{'name':_0x6b182b[_0x8da1('0x35')],'type':_0x6b182b[_0x8da1('0x2d')]['key']};});_0x184de6[_0x8da1('0x36')]=_[_0x8da1('0x2a')](_0x247368,_0x8da1('0x31'));_0x184de6['query']=_['keys'](_0x15fdda[_0x8da1('0x37')]);_0x184de6[_0x8da1('0x38')]=_[_0x8da1('0x39')](_0x184de6[_0x8da1('0x36')],_0x184de6[_0x8da1('0x37')]);_0x10558a['attributes']=_[_0x8da1('0x39')](_0x184de6[_0x8da1('0x36')],qs[_0x8da1('0x3a')](_0x15fdda[_0x8da1('0x37')]['fields']));_0x10558a['attributes']=_0x10558a[_0x8da1('0x3b')][_0x8da1('0x3c')]?_0x10558a['attributes']:_0x184de6[_0x8da1('0x36')];if(!_0x15fdda['query'][_0x8da1('0x3d')](_0x8da1('0x3e'))){_0x10558a[_0x8da1('0x1c')]=qs[_0x8da1('0x1c')](_0x15fdda[_0x8da1('0x37')][_0x8da1('0x1c')]);_0x10558a[_0x8da1('0x1a')]=qs[_0x8da1('0x1a')](_0x15fdda[_0x8da1('0x37')]['offset']);}_0x10558a[_0x8da1('0x3f')]=qs[_0x8da1('0x40')](_0x15fdda[_0x8da1('0x37')][_0x8da1('0x40')]);_0x10558a[_0x8da1('0x41')]=qs[_0x8da1('0x38')](_[_0x8da1('0x42')](_0x15fdda[_0x8da1('0x37')],_0x184de6[_0x8da1('0x38')]),_0x247368);if(_0x15fdda['query'][_0x8da1('0x43')]){_0x10558a[_0x8da1('0x41')]=_[_0x8da1('0x44')](_0x10558a[_0x8da1('0x41')],{'$or':_[_0x8da1('0x2a')](_0x247368,function(_0x1b00b4){if(_0x1b00b4[_0x8da1('0x2d')]!=='VIRTUAL'){var _0x3d075={};_0x3d075[_0x1b00b4['name']]={'$like':'%'+_0x15fdda['query'][_0x8da1('0x43')]+'%'};return _0x3d075;}})});}_0x10558a=_['merge']({},_0x10558a,_0x15fdda[_0x8da1('0x45')]);var _0x4d600a={'where':_0x10558a[_0x8da1('0x41')]};return db[_0x8da1('0x33')][_0x8da1('0x1d')](_0x4d600a)['then'](function(_0x28ef51){_0x5a286e[_0x8da1('0x1d')]=_0x28ef51;if(_0x15fdda[_0x8da1('0x37')][_0x8da1('0x46')]){_0x10558a[_0x8da1('0x47')]=[{'all':!![]}];}return db[_0x8da1('0x33')]['findAll'](_0x10558a);})[_0x8da1('0x24')](function(_0x3ff10a){_0x5a286e[_0x8da1('0x48')]=_0x3ff10a;return _0x5a286e;})[_0x8da1('0x24')](respondWithFilteredResult(_0x28a530,_0x10558a))['catch'](handleError(_0x28a530,null));};exports[_0x8da1('0x49')]=function(_0x349082,_0x4927a9){var _0x371444={'raw':![],'where':{'id':_0x349082[_0x8da1('0x4a')]['id']}},_0x1ddf72={};_0x1ddf72[_0x8da1('0x36')]=_['keys'](db['VoiceExtension'][_0x8da1('0x34')]);_0x1ddf72[_0x8da1('0x37')]=_[_0x8da1('0x4b')](_0x349082[_0x8da1('0x37')]);_0x1ddf72[_0x8da1('0x38')]=_[_0x8da1('0x39')](_0x1ddf72[_0x8da1('0x36')],_0x1ddf72[_0x8da1('0x37')]);_0x371444['attributes']=_[_0x8da1('0x39')](_0x1ddf72['model'],qs[_0x8da1('0x3a')](_0x349082[_0x8da1('0x37')][_0x8da1('0x3a')]));_0x371444[_0x8da1('0x3b')]=_0x371444[_0x8da1('0x3b')]['length']?_0x371444[_0x8da1('0x3b')]:_0x1ddf72[_0x8da1('0x36')];if(_0x349082['query'][_0x8da1('0x46')]){_0x371444[_0x8da1('0x47')]=[{'all':!![]}];}_0x371444=_[_0x8da1('0x44')]({},_0x371444,_0x349082[_0x8da1('0x45')]);return db[_0x8da1('0x33')][_0x8da1('0x2e')](_0x371444)[_0x8da1('0x24')](handleEntityNotFound(_0x4927a9,null))[_0x8da1('0x24')](respondWithResult(_0x4927a9,null))[_0x8da1('0x4c')](handleError(_0x4927a9,null));};exports[_0x8da1('0x25')]=function(_0x2ad530,_0x4cb2ac){return db['VoiceExtension'][_0x8da1('0x2e')]({'where':{'id':_0x2ad530[_0x8da1('0x4a')]['id']}})[_0x8da1('0x24')](handleEntityNotFound(_0x4cb2ac,null))[_0x8da1('0x24')](removeEntity(_0x4cb2ac,null))[_0x8da1('0x4c')](handleError(_0x4cb2ac,null));};exports[_0x8da1('0x4d')]=function(_0x5d69bf,_0x18bf76){if(_0x5d69bf['body'][_0x8da1('0x2d')]===_0x8da1('0x28')&&!_[_0x8da1('0x4e')](_0x5d69bf[_0x8da1('0x4f')][_0x8da1('0x50')],'_')){_0x5d69bf[_0x8da1('0x4f')][_0x8da1('0x50')]='_'['concat'](_0x5d69bf[_0x8da1('0x4f')][_0x8da1('0x50')]);}return db['VoiceExtension'][_0x8da1('0x4d')](_0x5d69bf['body'],{'raw':![]})[_0x8da1('0x24')](function(_0x438c34){var _0x47025e=_0x5d69bf[_0x8da1('0x51')][_0x8da1('0x52')]({'plain':!![]});if(!_0x47025e)throw new Error(_0x8da1('0x53'));if(_0x47025e[_0x8da1('0x54')]===_0x8da1('0x51')){var _0x2741f9=_0x438c34[_0x8da1('0x52')]({'plain':!![]});var _0x2e3c98=[{'name':_0x8da1('0x55'),'value':_0x8da1('0x26')},{'name':'OutboundRoutes','value':_0x8da1('0x28')},{'name':_0x8da1('0x29'),'value':'internal'}];var _0x42a4f9=_['find'](_0x2e3c98,[_0x8da1('0x2b'),_0x2741f9['type']])['name'];return db[_0x8da1('0x56')][_0x8da1('0x2e')]({'where':{'name':_0x42a4f9,'userProfileId':_0x47025e[_0x8da1('0x57')]},'raw':!![]})[_0x8da1('0x24')](function(_0x3c0183){if(_0x3c0183&&_0x3c0183[_0x8da1('0x58')]===0x0){return db[_0x8da1('0x2f')]['create']({'name':_0x2741f9[_0x8da1('0x31')],'resourceId':_0x2741f9['id'],'type':_0x3c0183[_0x8da1('0x31')],'sectionId':_0x3c0183['id']},{})[_0x8da1('0x24')](function(){return _0x438c34;});}else{return _0x438c34;}})[_0x8da1('0x4c')](function(_0x181f9d){logger['error'](_0x8da1('0x59'),_0x181f9d);throw _0x181f9d;});}return _0x438c34;})[_0x8da1('0x24')](respondWithResult(_0x18bf76,0xc9))['catch'](handleError(_0x18bf76,null));};exports['update']=function(_0x1262d2,_0x22a4ea){if(_0x1262d2[_0x8da1('0x4f')]['id']){delete _0x1262d2[_0x8da1('0x4f')]['id'];}return db[_0x8da1('0x33')][_0x8da1('0x2e')]({'where':{'id':_0x1262d2[_0x8da1('0x4a')]['id']}})[_0x8da1('0x24')](handleEntityNotFound(_0x22a4ea,null))['then'](function(_0xf08d48){if(_0xf08d48){return db[_0x8da1('0x33')][_0x8da1('0x23')](_['pick'](_0x1262d2['body'],[_0x8da1('0x50'),_0x8da1('0x5a'),_0x8da1('0x5b'),'recordingFormat',_0x8da1('0x5c'),_0x8da1('0x5d'),_0x8da1('0x5e')]),{'where':{'context':_0xf08d48[_0x8da1('0x5a')],'exten':_0xf08d48['exten']},'individualHooks':!![]})['then'](function(_0x364cb2){return _0x364cb2;});}return null;})[_0x8da1('0x24')](respondWithStatusCode(_0x22a4ea,null))[_0x8da1('0x4c')](handleError(_0x22a4ea,null));};exports[_0x8da1('0x5f')]=function(_0x1823fc,_0x5ddd72){return db[_0x8da1('0x33')][_0x8da1('0x60')]({'where':{'id':_0x1823fc['params']['id']}})[_0x8da1('0x24')](function(_0x38df08){if(_0x38df08){return db[_0x8da1('0x61')]['transaction'](function(_0x934dac){return db[_0x8da1('0x33')]['destroy']({'where':{'VoiceExtensionId':_0x1823fc[_0x8da1('0x4a')]['id']},'transaction':_0x934dac})[_0x8da1('0x24')](function(){var _0x51e122=_[_0x8da1('0x2a')](_0x1823fc['body'],function(_0x18b74e){_0x18b74e['VoiceExtensionId']=_0x1823fc[_0x8da1('0x4a')]['id'];_0x18b74e[_0x8da1('0x62')]=!![];return _0x18b74e;});var _0x8e78c9=_0x1823fc[_0x8da1('0x37')][_0x8da1('0x63')]&&_0x1823fc['query']['rewriteDial']['toLowerCase']()==='true'?!![]:![];return _0x38df08[_0x8da1('0x64')](_0x51e122,_0x8e78c9);})['then'](function(_0x507230){return db[_0x8da1('0x33')][_0x8da1('0x65')](_0x507230,{'transaction':_0x934dac});});})['then'](function(){return db[_0x8da1('0x33')][_0x8da1('0x66')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1823fc[_0x8da1('0x4a')]['id']},'order':_0x8da1('0x67')});});}})[_0x8da1('0x24')](respondWithResult(_0x5ddd72,null))[_0x8da1('0x4c')](handleError(_0x5ddd72,null));};
\ No newline at end of file
index 97f966b..36377ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d41=['exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4f5de4,_0x286cb4){var _0x57b780=function(_0x489554){while(--_0x489554){_0x4f5de4['push'](_0x4f5de4['shift']());}};_0x57b780(++_0x286cb4);}(_0x0d41,0x187));var _0x10d4=function(_0x2be39e,_0x2f4217){_0x2be39e=_0x2be39e-0x0;var _0x21a5a8=_0x0d41[_0x2be39e];return _0x21a5a8;};'use strict';var EventEmitter=require(_0x10d4('0x0'));var VoiceExtension=require(_0x10d4('0x1'))['db'][_0x10d4('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x10d4('0x3')](0x0);var events={'afterCreate':_0x10d4('0x4'),'afterUpdate':_0x10d4('0x5'),'afterDestroy':_0x10d4('0x6')};function emitEvent(_0x2bcd13){return function(_0x2f47a1,_0x53afa0,_0x3125a9){VoiceExtensionEvents[_0x10d4('0x7')](_0x2bcd13+':'+_0x2f47a1['id'],_0x2f47a1);VoiceExtensionEvents[_0x10d4('0x7')](_0x2bcd13,_0x2f47a1);_0x3125a9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x10d4('0x8')](e,emitEvent(event));}}module[_0x10d4('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x4070=['hasOwnProperty','exports','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4070,0x16a));var _0x0407=function(_0x5289d6,_0x7bd6d2){_0x5289d6=_0x5289d6-0x0;var _0x52b145=_0x4070[_0x5289d6];return _0x52b145;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x0407('0x0'))['db'][_0x0407('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x0407('0x2')](0x0);var events={'afterCreate':_0x0407('0x3'),'afterUpdate':_0x0407('0x4'),'afterDestroy':_0x0407('0x5')};function emitEvent(_0x20d1df){return function(_0x5443f2,_0x52ef01,_0xd581b){VoiceExtensionEvents[_0x0407('0x6')](_0x20d1df+':'+_0x5443f2['id'],_0x5443f2);VoiceExtensionEvents[_0x0407('0x6')](_0x20d1df,_0x5443f2);_0xd581b(null);};}for(var e in events){if(events[_0x0407('0x7')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x0407('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
index a30fdbc..8df52c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6394=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','trunk','options','split','length','name','param','phone','prefix','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','findAll','interval','IntervalId','then','*,*,*,*','intervals','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','queue','playback','app','appType','custom','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','concat','catch','define','VoiceExtension','last','Hangup','lodash','./voiceExtension.attributes','models','type','CDR(type)=','context','exten','alias','Set','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none'];(function(_0x336976,_0x855191){var _0xd7102e=function(_0x15fd6d){while(--_0x15fd6d){_0x336976['push'](_0x336976['shift']());}};_0xd7102e(++_0x855191);}(_0x6394,0x7b));var _0x4639=function(_0x487654,_0x1782aa){_0x487654=_0x487654-0x0;var _0x31b87a=_0x6394[_0x487654];return _0x31b87a;};'use strict';var util=require('util');var _=require(_0x4639('0x0'));var attributes=require(_0x4639('0x1'));module['exports']=function(_0x1ab959){var _0x33008f=_0x1ab959[_0x4639('0x2')];function _0x215b11(_0x4b6476){var _0x1dfd41=0x2;var _0x19d836=[{'type':_0x4b6476[_0x4639('0x3')],'app':'Set','appdata':_0x4639('0x4')+_0x4b6476[_0x4639('0x3')],'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']},{'type':_0x4b6476[_0x4639('0x3')],'app':_0x4b6476[_0x4639('0x7')]?_0x4639('0x8'):'NoOp','appdata':_0x4b6476[_0x4639('0x7')]?'CDR(routeAlias)='+_0x4b6476[_0x4639('0x7')]:_0x4639('0x9'),'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476['exten'],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']}];if(_0x4b6476[_0x4639('0x3')]===_0x4639('0xa')){_0x19d836[_0x4639('0xb')]({'type':_0x4639('0xa'),'app':_0x4639('0x8'),'appdata':_0x4639('0xc')+_0x4b6476['id'],'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']});}_0x19d836[_0x4639('0xb')]({'type':_0x4b6476['type'],'app':'Set','appdata':_0x4639('0xd'),'context':_0x4b6476['context'],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']},{'type':_0x4b6476['type'],'app':_0x4639('0x8'),'appdata':_0x4639('0xe'),'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']},{'type':_0x4b6476[_0x4639('0x3')],'app':'Set','appdata':_0x4639('0xf'),'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476['exten'],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']});return _0x19d836;}function _0x596170(_0x537d32){var _0x52a0b0=0x2;var _0x550fe5=[{'type':_0x4639('0x10'),'app':_0x4639('0x8'),'appdata':_0x4639('0x11'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x537d32[_0x4639('0x7')]?_0x4639('0x8'):_0x4639('0x12'),'appdata':_0x537d32[_0x4639('0x7')]?'CDR(routeAlias)='+_0x537d32[_0x4639('0x7')]:_0x4639('0x9'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x4639('0x8'),'appdata':_0x4639('0x13')+(_0x537d32[_0x4639('0x14')]?_0x4639('0x15')+_0x537d32[_0x4639('0x14')]+'}':'${EXTEN}'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':'outbound','app':_0x4639('0x8'),'appdata':_0x4639('0xc')+_0x537d32['id'],'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x4639('0x16'),'appdata':_0x4639('0x17')+(_0x52a0b0+0x2)+'):Goto('+(_0x52a0b0+0x1)+')','context':_0x537d32['context'],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':_0x537d32[_0x4639('0x14')]?_0x4639('0x18')+_0x537d32[_0x4639('0x14')]+'}':'CDR(prefix)=noprefix','context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32['exten'],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x537d32['context'],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x4639('0x8'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':_0x4639('0xf'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':_0x4639('0x19')+_0x537d32['id'],'context':_0x537d32['context'],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']}];if(_0x537d32[_0x4639('0x1a')](_0x4639('0x1b'))&&_0x537d32[_0x4639('0x1b')]!==_0x4639('0x1c')){_0x550fe5[_0x4639('0xb')]({'type':'outbound','app':'Set','appdata':_0x4639('0x1d'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x537d32[_0x4639('0x1b')]||'wav','context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32['exten'],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']});}return _0x550fe5;}function _0x51818a(_0x2b0aca){var _0x46f074=[{'name':_0x4639('0x1e'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x4639('0x1f'),'param':0x2},{'name':'url','param':0x3}];var _0x32ad84={};var _0x123323=_0x2b0aca[_0x4639('0x20')](',');var _0x3ad812=[];for(var _0x2f744c=0x0;_0x2f744c<_0x46f074[_0x4639('0x21')];_0x2f744c++){switch(_0x46f074[_0x2f744c][_0x4639('0x22')]){case _0x4639('0x1e'):_0x32ad84['trunk']=_0x123323[_0x46f074[_0x2f744c][_0x4639('0x23')]][_0x4639('0x20')]('/')[0x1];_0x32ad84['phone']=_0x123323[_0x46f074[_0x2f744c]['param']][_0x4639('0x20')]('/')[0x2];_0x32ad84['prefix']=_0x32ad84[_0x4639('0x24')]?_0x32ad84['phone'][_0x4639('0x20')]('$')[0x0]:undefined;_0x32ad84[_0x4639('0x24')]=route[_0x4639('0x14')]?(_0x32ad84[_0x4639('0x25')]||'')+_0x4639('0x15')+route[_0x4639('0x14')]+'}':(_0x32ad84[_0x4639('0x25')]||'')+'${EXTEN}';_0x3ad812[_0x46f074[_0x2f744c]['param']]=['SIP',_0x32ad84[_0x4639('0x1e')],_0x32ad84['phone']]['join']('/');break;case'options':_0x32ad84['options']=_0x123323[_0x46f074[_0x2f744c][_0x4639('0x23')]];if(route[_0x4639('0x1b')]!==_0x4639('0x1c')){if(_0x32ad84[_0x4639('0x1f')][_0x4639('0x26')](_0x4639('0x27'))<0x0){_0x32ad84['options']+='U(xcally-mixmonitor-context)';}}else{_0x32ad84[_0x4639('0x1f')]=_0x32ad84[_0x4639('0x1f')][_0x4639('0x28')](_0x4639('0x27'),'');}_0x3ad812[_0x46f074[_0x2f744c][_0x4639('0x23')]]=_0x32ad84[_0x4639('0x1f')];break;default:_0x3ad812[_0x46f074[_0x2f744c][_0x4639('0x23')]]=_0x123323[_0x46f074[_0x2f744c]['param']];}}return _0x3ad812[_0x4639('0x29')](',');}function _0x50931a(_0x55e1a5,_0x57c30c,_0x111b83,_0x57570b){return new Promise(function(_0x4e0d1d,_0x2987aa){var _0x2c78cd=[];if(_[_0x4639('0x2a')](_0x57c30c))return _0x4e0d1d(_0x2c78cd);_0x33008f['Interval'][_0x4639('0x2b')]({'attributes':['id',_0x4639('0x2c'),_0x4639('0x2d')],'raw':!![]})[_0x4639('0x2e')](function(_0x4fa807){for(var _0x21234f=0x0,_0x5181cd=0x0;_0x21234f<_0x57c30c[_0x4639('0x21')];_0x21234f++,_0x5181cd=0x0){var _0x103ffb=_0x57c30c[_0x21234f];var _0x181453=[];var _0x4d5ac3=[];if(_0x103ffb['interval']!==_0x4639('0x2f')){_0x103ffb[_0x4639('0x30')]=[_0x103ffb[_0x4639('0x2c')]];}else{_0x103ffb[_0x4639('0x30')]=_0x103ffb[_0x4639('0x2d')]?_['map'](_['filter'](_0x4fa807,{'IntervalId':_0x103ffb['IntervalId']}),'interval'):[];}_0x103ffb[_0x4639('0x5')]=_0x55e1a5[_0x4639('0x5')];_0x103ffb['exten']=_0x55e1a5[_0x4639('0x6')];if(_0x103ffb[_0x4639('0x3')])_0x103ffb[_0x4639('0x3')]=_0x103ffb[_0x4639('0x3')][_0x4639('0x31')]();if(_0x55e1a5[_0x4639('0x3')]===_0x4639('0x10')){if(_0x103ffb[_0x4639('0x1a')](_0x4639('0x32'))&&_0x103ffb['tag']&&_0x103ffb['tag']!=='--'){_0x181453['push']({'type':_0x103ffb[_0x4639('0x3')][_0x4639('0x31')](),'app':'Set','appdata':_0x4639('0x33')+_0x103ffb[_0x4639('0x32')],'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')][_0x4639('0x21')]+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')][_0x4639('0x31')](),'app':_0x4639('0x16'),'appdata':_0x4639('0x34')+(_0x103ffb['callerID']?_0x4639('0x35')+_0x103ffb[_0x4639('0x36')]+')':_0x4639('0x37')),'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')]['length']+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}else{if(_0x103ffb[_0x4639('0x1a')](_0x4639('0x38'))){if([_0x4639('0x39'),_0x4639('0x3a')]['includes'](_0x103ffb[_0x4639('0x3b')][_0x4639('0x31')]())&&_0x103ffb[_0x4639('0x3c')]!==_0x4639('0x3d')){if(_0x103ffb[_0x4639('0x38')]){_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')]['toLowerCase'](),'app':_0x4639('0x16'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')]['length']+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')]['toLowerCase'](),'app':'Set','appdata':_0x4639('0x3e'),'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5['exten'],'priority':_0x103ffb['intervals'][_0x4639('0x21')]+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}else{_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')][_0x4639('0x31')](),'app':_0x4639('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')][_0x4639('0x21')]+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')]['toLowerCase'](),'app':'Set','appdata':_0x4639('0x3f'),'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb['intervals']['length']+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}}}}for(var _0x3bdef8=0x0;_0x3bdef8<_0x103ffb[_0x4639('0x30')][_0x4639('0x21')];_0x3bdef8++){var _0x44609a=_0x111b83+_0x103ffb[_0x4639('0x30')]['length'];var _0x4136df=_0x3bdef8===_0x103ffb[_0x4639('0x30')][_0x4639('0x21')]-0x1?_0x111b83+_0x181453[_0x4639('0x21')]+_0x4d5ac3[_0x4639('0x21')]+0x2:_0x111b83+_0x3bdef8+0x1;_0x181453[_0x4639('0x40')](_0x3bdef8,0x0,{'type':_0x55e1a5['type'],'app':_0x4639('0x41'),'appdata':_0x103ffb['intervals'][_0x3bdef8]+'?'+_0x55e1a5[_0x4639('0x5')]+',${EXTEN},'+_0x44609a+':'+_0x55e1a5[_0x4639('0x5')]+_0x4639('0x42')+_0x4136df,'exten':_0x55e1a5['exten'],'context':_0x55e1a5[_0x4639('0x5')],'priority':_0x111b83+_0x3bdef8,'VoiceExtensionId':_0x55e1a5['id']});}if(_0x57570b&&_0x103ffb[_0x4639('0x3c')]===_0x4639('0x43'))_0x103ffb['appdata']=_0x51818a(_0x103ffb[_0x4639('0x44')]);_0x103ffb['priority']=_0x181453[_0x4639('0x21')]?_['last'](_0x181453)[_0x4639('0x45')]+0x1:_0x111b83;_0x2c78cd=_[_0x4639('0x46')](_0x2c78cd,_0x181453,[_0x103ffb],_0x4d5ac3);_0x111b83=_['last'](_0x2c78cd)[_0x4639('0x45')]+0x1;}return _0x4e0d1d(_0x2c78cd);})[_0x4639('0x47')](function(_0x7e8d5a){_0x2987aa(_0x7e8d5a);});});}return _0x1ab959[_0x4639('0x48')](_0x4639('0x49'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3e5197,_0x47164c){var _0x1dcd1e=this;var _0x34e7d1=_0x1dcd1e[_0x4639('0x3')]===_0x4639('0x10')?_0x596170(_0x1dcd1e):_0x215b11(_0x1dcd1e);return _0x50931a(_0x1dcd1e,_0x3e5197,_[_0x4639('0x4a')](_0x34e7d1)[_0x4639('0x45')]+0x1,_0x47164c)['then'](function(_0x4691d9){var _0x93f132=_['concat'](_0x34e7d1,_0x4691d9);_0x93f132[_0x4639('0xb')]({'type':_0x1dcd1e[_0x4639('0x3')],'app':_0x4639('0x4b'),'exten':_0x1dcd1e[_0x4639('0x6')],'context':_0x1dcd1e[_0x4639('0x5')],'priority':_[_0x4639('0x4a')](_0x93f132)[_0x4639('0x45')]+0x1,'VoiceExtensionId':_0x1dcd1e['id']});return _0x93f132;});}}});};
\ No newline at end of file
+var _0x3884=['toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','answer','queue','includes','app','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','appType','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','then','Hangup','util','lodash','./voiceExtension.attributes','exports','models','type','Set','context','exten','alias','NoOp','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(routeAlias)=','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','hasOwnProperty','none','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','trunk','timeout','options','split','length','name','param','phone','prefix','SIP','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','interval','IntervalId','*,*,*,*','intervals','map'];(function(_0x565fed,_0xb85768){var _0x3e018f=function(_0x104d8e){while(--_0x104d8e){_0x565fed['push'](_0x565fed['shift']());}};_0x3e018f(++_0xb85768);}(_0x3884,0x68));var _0x4388=function(_0x324645,_0xdc9c60){_0x324645=_0x324645-0x0;var _0x518909=_0x3884[_0x324645];return _0x518909;};'use strict';var util=require(_0x4388('0x0'));var _=require(_0x4388('0x1'));var attributes=require(_0x4388('0x2'));module[_0x4388('0x3')]=function(_0x2f3c69){var _0x3f9b0e=_0x2f3c69[_0x4388('0x4')];function _0x5a34d8(_0x54ad30){var _0x5e6570=0x2;var _0xb2eb01=[{'type':_0x54ad30[_0x4388('0x5')],'app':_0x4388('0x6'),'appdata':'CDR(type)='+_0x54ad30[_0x4388('0x5')],'context':_0x54ad30[_0x4388('0x7')],'exten':_0x54ad30[_0x4388('0x8')],'priority':_0x5e6570++,'VoiceExtensionId':_0x54ad30['id']},{'type':_0x54ad30['type'],'app':_0x54ad30[_0x4388('0x9')]?_0x4388('0x6'):_0x4388('0xa'),'appdata':_0x54ad30[_0x4388('0x9')]?'CDR(routeAlias)='+_0x54ad30[_0x4388('0x9')]:'No\x20alias\x20set','context':_0x54ad30[_0x4388('0x7')],'exten':_0x54ad30['exten'],'priority':_0x5e6570++,'VoiceExtensionId':_0x54ad30['id']}];if(_0x54ad30[_0x4388('0x5')]===_0x4388('0xb')){_0xb2eb01[_0x4388('0xc')]({'type':_0x4388('0xb'),'app':_0x4388('0x6'),'appdata':'CDR(routeid)='+_0x54ad30['id'],'context':_0x54ad30[_0x4388('0x7')],'exten':_0x54ad30['exten'],'priority':_0x5e6570++,'VoiceExtensionId':_0x54ad30['id']});}_0xb2eb01[_0x4388('0xc')]({'type':_0x54ad30[_0x4388('0x5')],'app':'Set','appdata':_0x4388('0xd'),'context':_0x54ad30[_0x4388('0x7')],'exten':_0x54ad30[_0x4388('0x8')],'priority':_0x5e6570++,'VoiceExtensionId':_0x54ad30['id']},{'type':_0x54ad30[_0x4388('0x5')],'app':'Set','appdata':_0x4388('0xe'),'context':_0x54ad30['context'],'exten':_0x54ad30['exten'],'priority':_0x5e6570++,'VoiceExtensionId':_0x54ad30['id']},{'type':_0x54ad30['type'],'app':_0x4388('0x6'),'appdata':'MONITOR_OPTIONS=ab','context':_0x54ad30[_0x4388('0x7')],'exten':_0x54ad30[_0x4388('0x8')],'priority':_0x5e6570++,'VoiceExtensionId':_0x54ad30['id']});return _0xb2eb01;}function _0x3c6a47(_0xc1713a){var _0xa6be3a=0x2;var _0x1a932c=[{'type':_0x4388('0xf'),'app':_0x4388('0x6'),'appdata':'CDR(type)=outbound','context':_0xc1713a['context'],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':_0xc1713a[_0x4388('0x9')]?_0x4388('0x6'):_0x4388('0xa'),'appdata':_0xc1713a[_0x4388('0x9')]?_0x4388('0x10')+_0xc1713a[_0x4388('0x9')]:_0x4388('0x11'),'context':_0xc1713a['context'],'exten':_0xc1713a['exten'],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':'outbound','app':_0x4388('0x6'),'appdata':_0x4388('0x12')+(_0xc1713a[_0x4388('0x13')]?'${EXTEN:'+_0xc1713a[_0x4388('0x13')]+'}':_0x4388('0x14')),'context':_0xc1713a[_0x4388('0x7')],'exten':_0xc1713a['exten'],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':'Set','appdata':_0x4388('0x15')+_0xc1713a['id'],'context':_0xc1713a['context'],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':_0x4388('0x16'),'appdata':_0x4388('0x17')+(_0xa6be3a+0x2)+_0x4388('0x18')+(_0xa6be3a+0x1)+')','context':_0xc1713a['context'],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':_0x4388('0x6'),'appdata':_0xc1713a[_0x4388('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0xc1713a[_0x4388('0x13')]+'}':_0x4388('0x19'),'context':_0xc1713a[_0x4388('0x7')],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':_0x4388('0x6'),'appdata':_0x4388('0xd'),'context':_0xc1713a['context'],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':_0x4388('0x6'),'appdata':_0x4388('0xe'),'context':_0xc1713a[_0x4388('0x7')],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':_0x4388('0x6'),'appdata':_0x4388('0x1a'),'context':_0xc1713a[_0x4388('0x7')],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':'Set','appdata':'outboundrouteid='+_0xc1713a['id'],'context':_0xc1713a['context'],'exten':_0xc1713a['exten'],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']}];if(_0xc1713a[_0x4388('0x1b')]('recordingFormat')&&_0xc1713a['recordingFormat']!==_0x4388('0x1c')){_0x1a932c[_0x4388('0xc')]({'type':_0x4388('0xf'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0xc1713a['context'],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']},{'type':_0x4388('0xf'),'app':'Set','appdata':_0x4388('0x1d')+_0xc1713a[_0x4388('0x1e')]||_0x4388('0x1f'),'context':_0xc1713a[_0x4388('0x7')],'exten':_0xc1713a[_0x4388('0x8')],'priority':_0xa6be3a++,'VoiceExtensionId':_0xc1713a['id']});}return _0x1a932c;}function _0x4b23fe(_0x4e61b9){var _0x4e5b2d=[{'name':_0x4388('0x20'),'param':0x0},{'name':_0x4388('0x21'),'param':0x1},{'name':_0x4388('0x22'),'param':0x2},{'name':'url','param':0x3}];var _0x462188={};var _0x1ba87b=_0x4e61b9[_0x4388('0x23')](',');var _0x1a61f9=[];for(var _0x10e79b=0x0;_0x10e79b<_0x4e5b2d[_0x4388('0x24')];_0x10e79b++){switch(_0x4e5b2d[_0x10e79b][_0x4388('0x25')]){case _0x4388('0x20'):_0x462188[_0x4388('0x20')]=_0x1ba87b[_0x4e5b2d[_0x10e79b][_0x4388('0x26')]][_0x4388('0x23')]('/')[0x1];_0x462188[_0x4388('0x27')]=_0x1ba87b[_0x4e5b2d[_0x10e79b]['param']][_0x4388('0x23')]('/')[0x2];_0x462188[_0x4388('0x28')]=_0x462188['phone']?_0x462188[_0x4388('0x27')]['split']('$')[0x0]:undefined;_0x462188['phone']=route[_0x4388('0x13')]?(_0x462188[_0x4388('0x28')]||'')+'${EXTEN:'+route[_0x4388('0x13')]+'}':(_0x462188[_0x4388('0x28')]||'')+_0x4388('0x14');_0x1a61f9[_0x4e5b2d[_0x10e79b][_0x4388('0x26')]]=[_0x4388('0x29'),_0x462188[_0x4388('0x20')],_0x462188[_0x4388('0x27')]]['join']('/');break;case'options':_0x462188[_0x4388('0x22')]=_0x1ba87b[_0x4e5b2d[_0x10e79b][_0x4388('0x26')]];if(route[_0x4388('0x1e')]!==_0x4388('0x1c')){if(_0x462188[_0x4388('0x22')][_0x4388('0x2a')](_0x4388('0x2b'))<0x0){_0x462188['options']+=_0x4388('0x2b');}}else{_0x462188['options']=_0x462188[_0x4388('0x22')]['replace'](_0x4388('0x2b'),'');}_0x1a61f9[_0x4e5b2d[_0x10e79b][_0x4388('0x26')]]=_0x462188['options'];break;default:_0x1a61f9[_0x4e5b2d[_0x10e79b][_0x4388('0x26')]]=_0x1ba87b[_0x4e5b2d[_0x10e79b]['param']];}}return _0x1a61f9['join'](',');}function _0x47504c(_0x1346f0,_0x11126d,_0x4d92eb,_0x28e68c){return new Promise(function(_0x22d0c6,_0x3e644f){var _0x523e9c=[];if(_[_0x4388('0x2c')](_0x11126d))return _0x22d0c6(_0x523e9c);_0x3f9b0e[_0x4388('0x2d')][_0x4388('0x2e')]({'attributes':['id',_0x4388('0x2f'),_0x4388('0x30')],'raw':!![]})['then'](function(_0x360aea){for(var _0x29f5b3=0x0,_0x2e17fb=0x0;_0x29f5b3<_0x11126d[_0x4388('0x24')];_0x29f5b3++,_0x2e17fb=0x0){var _0x17edfd=_0x11126d[_0x29f5b3];var _0x343c35=[];var _0x21c734=[];if(_0x17edfd[_0x4388('0x2f')]!==_0x4388('0x31')){_0x17edfd[_0x4388('0x32')]=[_0x17edfd['interval']];}else{_0x17edfd['intervals']=_0x17edfd[_0x4388('0x30')]?_[_0x4388('0x33')](_['filter'](_0x360aea,{'IntervalId':_0x17edfd[_0x4388('0x30')]}),_0x4388('0x2f')):[];}_0x17edfd['context']=_0x1346f0[_0x4388('0x7')];_0x17edfd[_0x4388('0x8')]=_0x1346f0[_0x4388('0x8')];if(_0x17edfd[_0x4388('0x5')])_0x17edfd[_0x4388('0x5')]=_0x17edfd[_0x4388('0x5')][_0x4388('0x34')]();if(_0x1346f0[_0x4388('0x5')]==='outbound'){if(_0x17edfd[_0x4388('0x1b')]('tag')&&_0x17edfd[_0x4388('0x35')]&&_0x17edfd[_0x4388('0x35')]!=='--'){_0x343c35[_0x4388('0xc')]({'type':_0x17edfd[_0x4388('0x5')][_0x4388('0x34')](),'app':_0x4388('0x6'),'appdata':'CDR(tag)='+_0x17edfd[_0x4388('0x35')],'context':_0x1346f0[_0x4388('0x7')],'exten':_0x1346f0[_0x4388('0x8')],'priority':_0x17edfd[_0x4388('0x32')]['length']+_0x4d92eb+_0x2e17fb++,'VoiceExtensionId':_0x1346f0['id']});}_0x343c35['push']({'type':_0x17edfd[_0x4388('0x5')][_0x4388('0x34')](),'app':'ExecIf','appdata':_0x4388('0x36')+(_0x17edfd['callerID']?'Set(CALLERID(all)='+_0x17edfd[_0x4388('0x37')]+')':_0x4388('0x38')),'context':_0x1346f0['context'],'exten':_0x1346f0['exten'],'priority':_0x17edfd[_0x4388('0x32')][_0x4388('0x24')]+_0x4d92eb+_0x2e17fb++,'VoiceExtensionId':_0x1346f0['id']});}else{if(_0x17edfd['hasOwnProperty'](_0x4388('0x39'))){if([_0x4388('0x3a'),'playback'][_0x4388('0x3b')](_0x17edfd[_0x4388('0x3c')]['toLowerCase']())&&_0x17edfd['appType']!=='custom'){if(_0x17edfd[_0x4388('0x39')]){_0x343c35[_0x4388('0xc')]({'type':_0x17edfd[_0x4388('0x5')]['toLowerCase'](),'app':_0x4388('0x16'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x1346f0[_0x4388('0x7')],'exten':_0x1346f0[_0x4388('0x8')],'priority':_0x17edfd[_0x4388('0x32')][_0x4388('0x24')]+_0x4d92eb+_0x2e17fb++,'VoiceExtensionId':_0x1346f0['id']});_0x343c35[_0x4388('0xc')]({'type':_0x17edfd['type'][_0x4388('0x34')](),'app':_0x4388('0x6'),'appdata':_0x4388('0x3d'),'context':_0x1346f0[_0x4388('0x7')],'exten':_0x1346f0[_0x4388('0x8')],'priority':_0x17edfd[_0x4388('0x32')]['length']+_0x4d92eb+_0x2e17fb++,'VoiceExtensionId':_0x1346f0['id']});}else{_0x343c35['push']({'type':_0x17edfd['type'][_0x4388('0x34')](),'app':_0x4388('0x16'),'appdata':_0x4388('0x3e'),'context':_0x1346f0[_0x4388('0x7')],'exten':_0x1346f0[_0x4388('0x8')],'priority':_0x17edfd[_0x4388('0x32')][_0x4388('0x24')]+_0x4d92eb+_0x2e17fb++,'VoiceExtensionId':_0x1346f0['id']});_0x343c35[_0x4388('0xc')]({'type':_0x17edfd[_0x4388('0x5')][_0x4388('0x34')](),'app':_0x4388('0x6'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x1346f0[_0x4388('0x7')],'exten':_0x1346f0[_0x4388('0x8')],'priority':_0x17edfd[_0x4388('0x32')][_0x4388('0x24')]+_0x4d92eb+_0x2e17fb++,'VoiceExtensionId':_0x1346f0['id']});}}}}for(var _0x27565f=0x0;_0x27565f<_0x17edfd[_0x4388('0x32')][_0x4388('0x24')];_0x27565f++){var _0x562de4=_0x4d92eb+_0x17edfd[_0x4388('0x32')][_0x4388('0x24')];var _0x1741df=_0x27565f===_0x17edfd[_0x4388('0x32')]['length']-0x1?_0x4d92eb+_0x343c35[_0x4388('0x24')]+_0x21c734[_0x4388('0x24')]+0x2:_0x4d92eb+_0x27565f+0x1;_0x343c35[_0x4388('0x3f')](_0x27565f,0x0,{'type':_0x1346f0[_0x4388('0x5')],'app':_0x4388('0x40'),'appdata':_0x17edfd['intervals'][_0x27565f]+'?'+_0x1346f0['context']+_0x4388('0x41')+_0x562de4+':'+_0x1346f0['context']+_0x4388('0x41')+_0x1741df,'exten':_0x1346f0[_0x4388('0x8')],'context':_0x1346f0['context'],'priority':_0x4d92eb+_0x27565f,'VoiceExtensionId':_0x1346f0['id']});}if(_0x28e68c&&_0x17edfd[_0x4388('0x42')]===_0x4388('0x43'))_0x17edfd[_0x4388('0x44')]=_0x4b23fe(_0x17edfd[_0x4388('0x44')]);_0x17edfd[_0x4388('0x45')]=_0x343c35['length']?_[_0x4388('0x46')](_0x343c35)[_0x4388('0x45')]+0x1:_0x4d92eb;_0x523e9c=_[_0x4388('0x47')](_0x523e9c,_0x343c35,[_0x17edfd],_0x21c734);_0x4d92eb=_[_0x4388('0x46')](_0x523e9c)[_0x4388('0x45')]+0x1;}return _0x22d0c6(_0x523e9c);})[_0x4388('0x48')](function(_0x53fcff){_0x3e644f(_0x53fcff);});});}return _0x2f3c69[_0x4388('0x49')](_0x4388('0x4a'),attributes,{'tableName':_0x4388('0x4b'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x466896,_0xb39a5a){var _0x2383e3=this;var _0x5ca6e7=_0x2383e3[_0x4388('0x5')]===_0x4388('0xf')?_0x3c6a47(_0x2383e3):_0x5a34d8(_0x2383e3);return _0x47504c(_0x2383e3,_0x466896,_['last'](_0x5ca6e7)['priority']+0x1,_0xb39a5a)[_0x4388('0x4c')](function(_0x35b8ba){var _0x34aeea=_['concat'](_0x5ca6e7,_0x35b8ba);_0x34aeea[_0x4388('0xc')]({'type':_0x2383e3[_0x4388('0x5')],'app':_0x4388('0x4d'),'exten':_0x2383e3['exten'],'context':_0x2383e3[_0x4388('0x7')],'priority':_['last'](_0x34aeea)[_0x4388('0x45')]+0x1,'VoiceExtensionId':_0x2383e3['id']});return _0x34aeea;});}}});};
\ No newline at end of file
index 34e50d8..bcf6aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f4=['rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./voiceExtension.socket','request','info','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceExtension,\x20%s,\x20%s','message','result','catch','findAll','options','where','limit','include','map','attributes','model','then','GetVoiceExtension','lodash','util','bluebird','randomstring','../../config/utils'];(function(_0x3d0ae2,_0x5a6350){var _0x48dbb4=function(_0x243887){while(--_0x243887){_0x3d0ae2['push'](_0x3d0ae2['shift']());}};_0x48dbb4(++_0x5a6350);}(_0x06f4,0x136));var _0x406f=function(_0x4f617f,_0x14caa3){_0x4f617f=_0x4f617f-0x0;var _0x185906=_0x06f4[_0x4f617f];return _0x185906;};'use strict';var _=require(_0x406f('0x0'));var util=require(_0x406f('0x1'));var moment=require('moment');var BPromise=require(_0x406f('0x2'));var rs=require(_0x406f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x406f('0x4'));var logger=require('../../config/logger')(_0x406f('0x5'));var config=require(_0x406f('0x6'));var jayson=require(_0x406f('0x7'));var client=jayson[_0x406f('0x8')]['http']({'port':0x232a});config[_0x406f('0x9')]=_['defaults'](config[_0x406f('0x9')],{'host':_0x406f('0xa'),'port':0x18eb});var socket=require(_0x406f('0xb'))(new Redis(config['redis']));require(_0x406f('0xc'))['register'](socket);function respondWithRpcPromise(_0x5b46bf,_0xd817eb,_0x56edc2){return new BPromise(function(_0x28c5a5,_0x4e0e96){return client[_0x406f('0xd')](_0x5b46bf,_0x56edc2)['then'](function(_0xb2c62d){logger[_0x406f('0xe')]('VoiceExtension,\x20%s,\x20%s',_0xd817eb,_0x406f('0xf'));logger[_0x406f('0x10')](_0x406f('0x11'),_0xd817eb,_0x406f('0xf'),JSON[_0x406f('0x12')](_0xb2c62d));if(_0xb2c62d[_0x406f('0x13')]){if(_0xb2c62d[_0x406f('0x13')][_0x406f('0x14')]===0x1f4){logger[_0x406f('0x13')](_0x406f('0x15'),_0xd817eb,_0xb2c62d[_0x406f('0x13')]['message']);return _0x4e0e96(_0xb2c62d[_0x406f('0x13')][_0x406f('0x16')]);}logger[_0x406f('0x13')]('VoiceExtension,\x20%s,\x20%s',_0xd817eb,_0xb2c62d[_0x406f('0x13')][_0x406f('0x16')]);return _0x28c5a5(_0xb2c62d['error']['message']);}else{logger[_0x406f('0xe')](_0x406f('0x15'),_0xd817eb,'request\x20sent');_0x28c5a5(_0xb2c62d[_0x406f('0x17')]['message']);}})[_0x406f('0x18')](function(_0x3ad3fe){logger[_0x406f('0x13')](_0x406f('0x15'),_0xd817eb,_0x3ad3fe);_0x4e0e96(_0x3ad3fe);});});}exports['GetVoiceExtension']=function(_0x492c68){var _0x422fe2=this;return new Promise(function(_0x5476d2,_0x33dd5f){return db['VoiceExtension'][_0x406f('0x19')]({'raw':_0x492c68[_0x406f('0x1a')]?_0x492c68[_0x406f('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x492c68['options']?_0x492c68['options'][_0x406f('0x1b')]||null:null,'attributes':_0x492c68[_0x406f('0x1a')]?_0x492c68[_0x406f('0x1a')]['attributes']||null:null,'limit':_0x492c68[_0x406f('0x1a')]?_0x492c68['options'][_0x406f('0x1c')]||null:null,'include':_0x492c68[_0x406f('0x1a')]?_0x492c68[_0x406f('0x1a')][_0x406f('0x1d')]?_[_0x406f('0x1e')](_0x492c68['options']['include'],function(_0x81589c){return{'model':db[_0x81589c['model']],'as':_0x81589c['as'],'attributes':_0x81589c[_0x406f('0x1f')],'include':_0x81589c[_0x406f('0x1d')]?_['map'](_0x81589c['include'],function(_0x1b837d){return{'model':db[_0x1b837d['model']],'as':_0x1b837d['as'],'attributes':_0x1b837d[_0x406f('0x1f')],'include':_0x1b837d[_0x406f('0x1d')]?_[_0x406f('0x1e')](_0x1b837d[_0x406f('0x1d')],function(_0x2c439b){return{'model':db[_0x2c439b[_0x406f('0x20')]],'as':_0x2c439b['as'],'attributes':_0x2c439b[_0x406f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x406f('0x21')](function(_0x5ec2ed){logger['info'](_0x406f('0x22'),_0x492c68);logger[_0x406f('0x10')](_0x406f('0x22'),_0x492c68,JSON[_0x406f('0x12')](_0x5ec2ed));_0x5476d2(_0x5ec2ed);})['catch'](function(_0x543248){logger[_0x406f('0x13')](_0x406f('0x22'),_0x543248['message'],_0x492c68);_0x33dd5f(_0x422fe2['error'](0x1f4,_0x543248[_0x406f('0x16')]));});});};
\ No newline at end of file
+var _0x872a=['include','map','model','GetVoiceExtension','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','VoiceExtension','options','attributes','limit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x872a,0x100));var _0xa872=function(_0x532dba,_0x4539fd){_0x532dba=_0x532dba-0x0;var _0x52199d=_0x872a[_0x532dba];return _0x52199d;};'use strict';var _=require(_0xa872('0x0'));var util=require(_0xa872('0x1'));var moment=require(_0xa872('0x2'));var BPromise=require(_0xa872('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa872('0x4'));var logger=require(_0xa872('0x5'))(_0xa872('0x6'));var config=require(_0xa872('0x7'));var jayson=require(_0xa872('0x8'));var client=jayson[_0xa872('0x9')][_0xa872('0xa')]({'port':0x232a});config['redis']=_[_0xa872('0xb')](config[_0xa872('0xc')],{'host':_0xa872('0xd'),'port':0x18eb});var socket=require(_0xa872('0xe'))(new Redis(config[_0xa872('0xc')]));require(_0xa872('0xf'))[_0xa872('0x10')](socket);function respondWithRpcPromise(_0x18b69e,_0x412157,_0x216b4b){return new BPromise(function(_0x16b2d7,_0x1112b1){return client[_0xa872('0x11')](_0x18b69e,_0x216b4b)[_0xa872('0x12')](function(_0x5ec6f7){logger[_0xa872('0x13')](_0xa872('0x14'),_0x412157,_0xa872('0x15'));logger['debug'](_0xa872('0x16'),_0x412157,_0xa872('0x15'),JSON[_0xa872('0x17')](_0x5ec6f7));if(_0x5ec6f7[_0xa872('0x18')]){if(_0x5ec6f7[_0xa872('0x18')]['code']===0x1f4){logger[_0xa872('0x18')]('VoiceExtension,\x20%s,\x20%s',_0x412157,_0x5ec6f7[_0xa872('0x18')][_0xa872('0x19')]);return _0x1112b1(_0x5ec6f7[_0xa872('0x18')][_0xa872('0x19')]);}logger['error'](_0xa872('0x14'),_0x412157,_0x5ec6f7[_0xa872('0x18')]['message']);return _0x16b2d7(_0x5ec6f7[_0xa872('0x18')][_0xa872('0x19')]);}else{logger[_0xa872('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x412157,_0xa872('0x15'));_0x16b2d7(_0x5ec6f7[_0xa872('0x1a')][_0xa872('0x19')]);}})[_0xa872('0x1b')](function(_0x3efced){logger['error'](_0xa872('0x14'),_0x412157,_0x3efced);_0x1112b1(_0x3efced);});});}exports['GetVoiceExtension']=function(_0x28adef){var _0x5e1fd0=this;return new Promise(function(_0x382146,_0x58bd91){return db[_0xa872('0x1c')]['findAll']({'raw':_0x28adef[_0xa872('0x1d')]?_0x28adef[_0xa872('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x28adef[_0xa872('0x1d')]?_0x28adef[_0xa872('0x1d')]['where']||null:null,'attributes':_0x28adef[_0xa872('0x1d')]?_0x28adef[_0xa872('0x1d')][_0xa872('0x1e')]||null:null,'limit':_0x28adef[_0xa872('0x1d')]?_0x28adef[_0xa872('0x1d')][_0xa872('0x1f')]||null:null,'include':_0x28adef[_0xa872('0x1d')]?_0x28adef['options'][_0xa872('0x20')]?_[_0xa872('0x21')](_0x28adef[_0xa872('0x1d')][_0xa872('0x20')],function(_0x2cc427){return{'model':db[_0x2cc427[_0xa872('0x22')]],'as':_0x2cc427['as'],'attributes':_0x2cc427[_0xa872('0x1e')],'include':_0x2cc427['include']?_[_0xa872('0x21')](_0x2cc427['include'],function(_0x1dd475){return{'model':db[_0x1dd475[_0xa872('0x22')]],'as':_0x1dd475['as'],'attributes':_0x1dd475[_0xa872('0x1e')],'include':_0x1dd475['include']?_[_0xa872('0x21')](_0x1dd475[_0xa872('0x20')],function(_0x25322d){return{'model':db[_0x25322d[_0xa872('0x22')]],'as':_0x25322d['as'],'attributes':_0x25322d['attributes']};}):[]};}):[]};}):[]:[]})[_0xa872('0x12')](function(_0x5ab258){logger['info'](_0xa872('0x23'),_0x28adef);logger['debug'](_0xa872('0x23'),_0x28adef,JSON[_0xa872('0x17')](_0x5ab258));_0x382146(_0x5ab258);})[_0xa872('0x1b')](function(_0x252831){logger[_0xa872('0x18')]('GetVoiceExtension',_0x252831[_0xa872('0x19')],_0x28adef);_0x58bd91(_0x5e1fd0[_0xa872('0x18')](0x1f4,_0x252831[_0xa872('0x19')]));});});};
\ No newline at end of file
index 944af6d..616d571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['emit','removeListener','register','voiceExtension:','./voiceExtension.events','update'];(function(_0x9bdd6f,_0x45231c){var _0x2facc7=function(_0x345bf9){while(--_0x345bf9){_0x9bdd6f['push'](_0x9bdd6f['shift']());}};_0x2facc7(++_0x45231c);}(_0x0295,0x1f0));var _0x5029=function(_0x424bd3,_0x8760d8){_0x424bd3=_0x424bd3-0x0;var _0x1fdade=_0x0295[_0x424bd3];return _0x1fdade;};'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
+var _0x0295=['emit','removeListener','register','voiceExtension:','./voiceExtension.events','update'];(function(_0x2481f1,_0x228df9){var _0x1075fe=function(_0x35882d){while(--_0x35882d){_0x2481f1['push'](_0x2481f1['shift']());}};_0x1075fe(++_0x228df9);}(_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 35f6bd5..022c460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['Router','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x5430,0x10c));var _0x0543=function(_0x4046e5,_0x28f216){_0x4046e5=_0x4046e5-0x0;var _0x40d4db=_0x5430[_0x4046e5];return _0x40d4db;};'use strict';var multer=require(_0x0543('0x0'));var util=require(_0x0543('0x1'));var path=require(_0x0543('0x2'));var timeout=require(_0x0543('0x3'));var express=require(_0x0543('0x4'));var router=express[_0x0543('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0543('0x6'));var config=require('../../config/environment');var controller=require('./voiceMail.controller');router[_0x0543('0x7')]('/',auth[_0x0543('0x8')](),controller[_0x0543('0x9')]);router[_0x0543('0x7')](_0x0543('0xa'),auth['isAuthenticated'](),controller[_0x0543('0xb')]);router[_0x0543('0x7')](_0x0543('0xc'),auth[_0x0543('0x8')](),controller[_0x0543('0xd')]);router[_0x0543('0xe')]('/',auth['isAuthenticated'](),controller[_0x0543('0xf')]);router[_0x0543('0x10')]('/:id',auth[_0x0543('0x8')](),controller[_0x0543('0x11')]);router[_0x0543('0x12')](_0x0543('0xa'),auth[_0x0543('0x8')](),controller[_0x0543('0x13')]);module[_0x0543('0x14')]=router;
\ No newline at end of file
+var _0xf2e3=['/:id','show','/:id/messages','getMessages','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','isAuthenticated','index','get'];(function(_0x8caab3,_0x3385be){var _0x555995=function(_0x222877){while(--_0x222877){_0x8caab3['push'](_0x8caab3['shift']());}};_0x555995(++_0x3385be);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0xf2e3[_0x5f3f88];return _0xd08119;};'use strict';var multer=require(_0x3f2e('0x0'));var util=require('util');var path=require(_0x3f2e('0x1'));var timeout=require(_0x3f2e('0x2'));var express=require(_0x3f2e('0x3'));var router=express[_0x3f2e('0x4')]();var fs_extra=require(_0x3f2e('0x5'));var auth=require(_0x3f2e('0x6'));var interaction=require(_0x3f2e('0x7'));var config=require(_0x3f2e('0x8'));var controller=require(_0x3f2e('0x9'));router['get']('/',auth[_0x3f2e('0xa')](),controller[_0x3f2e('0xb')]);router[_0x3f2e('0xc')](_0x3f2e('0xd'),auth[_0x3f2e('0xa')](),controller[_0x3f2e('0xe')]);router[_0x3f2e('0xc')](_0x3f2e('0xf'),auth[_0x3f2e('0xa')](),controller[_0x3f2e('0x10')]);router[_0x3f2e('0x11')]('/',auth[_0x3f2e('0xa')](),controller[_0x3f2e('0x12')]);router[_0x3f2e('0x13')](_0x3f2e('0xd'),auth[_0x3f2e('0xa')](),controller[_0x3f2e('0x14')]);router[_0x3f2e('0x15')](_0x3f2e('0xd'),auth['isAuthenticated'](),controller[_0x3f2e('0x16')]);module[_0x3f2e('0x17')]=router;
\ No newline at end of file
index 21c104d..fd76f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaf0=['INTEGER','getDataValue','fullname','\x20-\x20','mailbox','STRING','from-voicemail','contest_mailbox','setDataValue','string','trim','central','ENUM','yes','TINYINT(4)'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xdaf0,0x140));var _0x0daf=function(_0x7825c6,_0x1e6c1e){_0x7825c6=_0x7825c6-0x0;var _0x25a11d=_0xdaf0[_0x7825c6];return _0x25a11d;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0x0daf('0x0')]},'context':{'type':Sequelize[_0x0daf('0x0')],'defaultValue':_0x0daf('0x1'),'unique':_0x0daf('0x2')},'mailbox':{'type':Sequelize[_0x0daf('0x0')],'defaultValue':'','allowNull':![],'unique':_0x0daf('0x2')},'password':{'type':Sequelize[_0x0daf('0x0')]},'fullname':{'type':Sequelize[_0x0daf('0x0')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x466e51){this[_0x0daf('0x3')]('email',typeof _0x466e51===_0x0daf('0x4')&&_0x466e51['trim']()?_0x466e51[_0x0daf('0x5')]():null);}},'pager':{'type':Sequelize[_0x0daf('0x0')]},'tz':{'type':Sequelize[_0x0daf('0x0')],'defaultValue':_0x0daf('0x6')},'attach':{'type':Sequelize[_0x0daf('0x7')]('yes','no'),'defaultValue':_0x0daf('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x0daf('0x0')]},'review':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x0daf('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x0daf('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x0daf('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':_0x0daf('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':_0x0daf('0x8'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x0daf('0x0')]},'emailbody':{'type':Sequelize[_0x0daf('0x0')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x0daf('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0daf('0xb')](_0x0daf('0xc'))+_0x0daf('0xd')+this[_0x0daf('0xb')](_0x0daf('0xe'));}}};
\ No newline at end of file
+var _0x82e2=['STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','yes','ENUM','TINYINT(4)','TIMESTAMP','INTEGER','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports'];(function(_0x2fc935,_0x1c140e){var _0x251acf=function(_0x438ac6){while(--_0x438ac6){_0x2fc935['push'](_0x2fc935['shift']());}};_0x251acf(++_0x1c140e);}(_0x82e2,0x11e));var _0x282e=function(_0x34d6cb,_0x1ae55c){_0x34d6cb=_0x34d6cb-0x0;var _0x4372cb=_0x82e2[_0x34d6cb];return _0x4372cb;};'use strict';var Sequelize=require(_0x282e('0x0'));module[_0x282e('0x1')]={'customer_id':{'type':Sequelize[_0x282e('0x2')]},'context':{'type':Sequelize[_0x282e('0x2')],'defaultValue':_0x282e('0x3'),'unique':_0x282e('0x4')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x282e('0x2')]},'fullname':{'type':Sequelize[_0x282e('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x15cb6d){this[_0x282e('0x5')](_0x282e('0x6'),typeof _0x15cb6d===_0x282e('0x7')&&_0x15cb6d[_0x282e('0x8')]()?_0x15cb6d[_0x282e('0x8')]():null);}},'pager':{'type':Sequelize[_0x282e('0x2')]},'tz':{'type':Sequelize[_0x282e('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x282e('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x282e('0xa')](_0x282e('0x9'),'no'),'defaultValue':_0x282e('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x282e('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x282e('0xa')](_0x282e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x282e('0xa')](_0x282e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x282e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x282e('0xa')](_0x282e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x282e('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x282e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x282e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x282e('0xa')](_0x282e('0x9'),'no'),'defaultValue':_0x282e('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x282e('0xa')](_0x282e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x282e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x282e('0x9'),'allowNull':![]},'stamp':{'type':_0x282e('0xc')},'emailsubject':{'type':Sequelize[_0x282e('0x2')]},'emailbody':{'type':Sequelize[_0x282e('0x2')]},'maxsecs':{'type':Sequelize[_0x282e('0xd')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x282e('0xe')](_0x282e('0xf'))+_0x282e('0x10')+this[_0x282e('0xe')](_0x282e('0x11'));}}};
\ No newline at end of file
index 768199a..c23ee60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['nolimit','mailbox','VoiceMailMessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','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/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','destroy','then','get','Voicemails','UserProfileResource','stack','name','send','map','VoiceMail','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','merge','options','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages','findOne'];(function(_0x47106a,_0xb4ea8){var _0x120d01=function(_0x1f82bd){while(--_0x1f82bd){_0x47106a['push'](_0x47106a['shift']());}};_0x120d01(++_0xb4ea8);}(_0x4fc2,0x111));var _0x24fc=function(_0xf335a7,_0x7933f0){_0xf335a7=_0xf335a7-0x0;var _0x411ecd=_0x4fc2[_0xf335a7];return _0x411ecd;};'use strict';var emlformat=require(_0x24fc('0x0'));var rimraf=require(_0x24fc('0x1'));var zipdir=require(_0x24fc('0x2'));var jsonpatch=require(_0x24fc('0x3'));var rp=require('request-promise');var moment=require(_0x24fc('0x4'));var BPromise=require(_0x24fc('0x5'));var Mustache=require(_0x24fc('0x6'));var util=require('util');var path=require(_0x24fc('0x7'));var sox=require(_0x24fc('0x8'));var csv=require('to-csv');var ejs=require(_0x24fc('0x9'));var fs=require('fs');var fs_extra=require(_0x24fc('0xa'));var _=require('lodash');var squel=require(_0x24fc('0xb'));var crypto=require(_0x24fc('0xc'));var jsforce=require(_0x24fc('0xd'));var deskjs=require(_0x24fc('0xe'));var toCsv=require(_0x24fc('0xf'));var querystring=require(_0x24fc('0x10'));var Papa=require('papaparse');var Redis=require(_0x24fc('0x11'));var authService=require(_0x24fc('0x12'));var qs=require(_0x24fc('0x13'));var as=require(_0x24fc('0x14'));var hardwareService=require(_0x24fc('0x15'));var logger=require(_0x24fc('0x16'))(_0x24fc('0x17'));var utils=require(_0x24fc('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x24fc('0x19'));var db=require(_0x24fc('0x1a'))['db'];function respondWithStatusCode(_0x5cc65e,_0x306873){_0x306873=_0x306873||0xcc;return function(_0x76cb25){if(_0x76cb25){return _0x5cc65e[_0x24fc('0x1b')](_0x306873);}return _0x5cc65e[_0x24fc('0x1c')](_0x306873)[_0x24fc('0x1d')]();};}function respondWithResult(_0x326276,_0x537b5c){_0x537b5c=_0x537b5c||0xc8;return function(_0x2a0971){if(_0x2a0971){return _0x326276[_0x24fc('0x1c')](_0x537b5c)[_0x24fc('0x1e')](_0x2a0971);}};}function respondWithFilteredResult(_0x42cbe8,_0x4acd36){return function(_0x2ac989){if(_0x2ac989){var _0x588543=typeof _0x4acd36[_0x24fc('0x1f')]===_0x24fc('0x20')&&typeof _0x4acd36[_0x24fc('0x21')]===_0x24fc('0x20');var _0x25cb40=_0x2ac989['count'];var _0x23873c=_0x588543?0x0:_0x4acd36[_0x24fc('0x1f')];var _0x6cfa0a=_0x588543?_0x2ac989[_0x24fc('0x22')]:_0x4acd36['offset']+_0x4acd36[_0x24fc('0x21')];var _0x4073e0;if(_0x6cfa0a>=_0x25cb40){_0x6cfa0a=_0x25cb40;_0x4073e0=0xc8;}else{_0x4073e0=0xce;}_0x42cbe8[_0x24fc('0x1c')](_0x4073e0);return _0x42cbe8['set'](_0x24fc('0x23'),_0x23873c+'-'+_0x6cfa0a+'/'+_0x25cb40)[_0x24fc('0x1e')](_0x2ac989);}return null;};}function patchUpdates(_0xbf1d6b){return function(_0x2d0e3d){try{jsonpatch['apply'](_0x2d0e3d,_0xbf1d6b,!![]);}catch(_0x323beb){return BPromise['reject'](_0x323beb);}return _0x2d0e3d[_0x24fc('0x24')]();};}function saveUpdates(_0x591c8f,_0x3ed464){return function(_0x44c121){if(_0x44c121){return _0x44c121[_0x24fc('0x25')](_0x591c8f)['then'](function(_0x313a25){return _0x313a25;});}return null;};}function removeEntity(_0x552035,_0x35a9c7){return function(_0x2bb93a){if(_0x2bb93a){return _0x2bb93a[_0x24fc('0x26')]()[_0x24fc('0x27')](function(){var _0x3296fc=_0x2bb93a[_0x24fc('0x28')]({'plain':!![]});var _0x3f0875=_0x24fc('0x29');return db[_0x24fc('0x2a')][_0x24fc('0x26')]({'where':{'type':_0x3f0875,'resourceId':_0x3296fc['id']}})['then'](function(){return _0x2bb93a;});})[_0x24fc('0x27')](function(){_0x552035[_0x24fc('0x1c')](0xcc)[_0x24fc('0x1d')]();});}};}function handleEntityNotFound(_0x5bb4c8,_0xf2f77d){return function(_0x3d1ec8){if(!_0x3d1ec8){_0x5bb4c8[_0x24fc('0x1b')](0x194);}return _0x3d1ec8;};}function handleError(_0x290f84,_0x8f2528){_0x8f2528=_0x8f2528||0x1f4;return function(_0x443796){logger['error'](_0x443796[_0x24fc('0x2b')]);if(_0x443796[_0x24fc('0x2c')]){delete _0x443796[_0x24fc('0x2c')];}_0x290f84[_0x24fc('0x1c')](_0x8f2528)[_0x24fc('0x2d')](_0x443796);};}exports['index']=function(_0x55c27f,_0x4e6f73){var _0x3df6f4={},_0x574ba3={},_0x3f2464={'count':0x0,'rows':[]};var _0x3e6389=_[_0x24fc('0x2e')](db[_0x24fc('0x2f')]['rawAttributes'],function(_0x66eec0){return{'name':_0x66eec0[_0x24fc('0x30')],'type':_0x66eec0['type'][_0x24fc('0x31')]};});_0x574ba3[_0x24fc('0x32')]=_['map'](_0x3e6389,'name');_0x574ba3[_0x24fc('0x33')]=_['keys'](_0x55c27f[_0x24fc('0x33')]);_0x574ba3[_0x24fc('0x34')]=_['intersection'](_0x574ba3[_0x24fc('0x32')],_0x574ba3[_0x24fc('0x33')]);_0x3df6f4[_0x24fc('0x35')]=_[_0x24fc('0x36')](_0x574ba3[_0x24fc('0x32')],qs[_0x24fc('0x37')](_0x55c27f[_0x24fc('0x33')][_0x24fc('0x37')]));_0x3df6f4[_0x24fc('0x35')]=_0x3df6f4['attributes'][_0x24fc('0x38')]?_0x3df6f4[_0x24fc('0x35')]:_0x574ba3[_0x24fc('0x32')];if(!_0x55c27f[_0x24fc('0x33')][_0x24fc('0x39')]('nolimit')){_0x3df6f4['limit']=qs[_0x24fc('0x21')](_0x55c27f['query'][_0x24fc('0x21')]);_0x3df6f4[_0x24fc('0x1f')]=qs[_0x24fc('0x1f')](_0x55c27f[_0x24fc('0x33')]['offset']);}_0x3df6f4[_0x24fc('0x3a')]=qs['sort'](_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3b')]);_0x3df6f4[_0x24fc('0x3c')]=qs[_0x24fc('0x34')](_[_0x24fc('0x3d')](_0x55c27f['query'],_0x574ba3[_0x24fc('0x34')]),_0x3e6389);if(_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3e')]){_0x3df6f4[_0x24fc('0x3c')]=_['merge'](_0x3df6f4[_0x24fc('0x3c')],{'$or':_[_0x24fc('0x2e')](_0x3e6389,function(_0x56306e){if(_0x56306e[_0x24fc('0x3f')]!=='VIRTUAL'){var _0x320f7b={};_0x320f7b[_0x56306e[_0x24fc('0x2c')]]={'$like':'%'+_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3e')]+'%'};return _0x320f7b;}})});}_0x3df6f4=_[_0x24fc('0x40')]({},_0x3df6f4,_0x55c27f[_0x24fc('0x41')]);var _0x77b959={'where':_0x3df6f4[_0x24fc('0x3c')]};return db['VoiceMail'][_0x24fc('0x22')](_0x77b959)[_0x24fc('0x27')](function(_0x32f72c){_0x3f2464['count']=_0x32f72c;if(_0x55c27f[_0x24fc('0x33')][_0x24fc('0x42')]){_0x3df6f4['include']=[{'all':!![]}];}return db[_0x24fc('0x2f')][_0x24fc('0x43')](_0x3df6f4);})[_0x24fc('0x27')](function(_0x5e4e9b){_0x3f2464[_0x24fc('0x44')]=_0x5e4e9b;return _0x3f2464;})[_0x24fc('0x27')](respondWithFilteredResult(_0x4e6f73,_0x3df6f4))['catch'](handleError(_0x4e6f73,null));};exports[_0x24fc('0x45')]=function(_0x169982,_0x158f7b){var _0x2a0ac4={'raw':!![],'where':{'id':_0x169982[_0x24fc('0x46')]['id']}},_0x4c8dad={};_0x4c8dad[_0x24fc('0x32')]=_[_0x24fc('0x47')](db[_0x24fc('0x2f')][_0x24fc('0x48')]);_0x4c8dad['query']=_[_0x24fc('0x47')](_0x169982[_0x24fc('0x33')]);_0x4c8dad[_0x24fc('0x34')]=_[_0x24fc('0x36')](_0x4c8dad['model'],_0x4c8dad[_0x24fc('0x33')]);_0x2a0ac4[_0x24fc('0x35')]=_['intersection'](_0x4c8dad['model'],qs[_0x24fc('0x37')](_0x169982['query']['fields']));_0x2a0ac4[_0x24fc('0x35')]=_0x2a0ac4['attributes'][_0x24fc('0x38')]?_0x2a0ac4[_0x24fc('0x35')]:_0x4c8dad[_0x24fc('0x32')];if(_0x169982['query'][_0x24fc('0x42')]){_0x2a0ac4[_0x24fc('0x49')]=[{'all':!![]}];}_0x2a0ac4=_[_0x24fc('0x40')]({},_0x2a0ac4,_0x169982[_0x24fc('0x41')]);return db[_0x24fc('0x2f')][_0x24fc('0x4a')](_0x2a0ac4)[_0x24fc('0x27')](handleEntityNotFound(_0x158f7b,null))[_0x24fc('0x27')](respondWithResult(_0x158f7b,null))['catch'](handleError(_0x158f7b,null));};exports['create']=function(_0x266378,_0x2f1a99){return db[_0x24fc('0x2f')]['create'](_0x266378['body'],{})[_0x24fc('0x27')](function(_0x213439){var _0x179a60=_0x266378[_0x24fc('0x4b')][_0x24fc('0x28')]({'plain':!![]});if(!_0x179a60)throw new Error(_0x24fc('0x4c'));if(_0x179a60[_0x24fc('0x4d')]===_0x24fc('0x4b')){var _0x1671b0=_0x213439[_0x24fc('0x28')]({'plain':!![]});var _0x434700=_0x24fc('0x29');return db['UserProfileSection'][_0x24fc('0x4a')]({'where':{'name':_0x434700,'userProfileId':_0x179a60[_0x24fc('0x4e')]},'raw':!![]})[_0x24fc('0x27')](function(_0xb0fc00){if(_0xb0fc00&&_0xb0fc00[_0x24fc('0x4f')]===0x0){return db['UserProfileResource'][_0x24fc('0x50')]({'name':_0x1671b0['name'],'resourceId':_0x1671b0['id'],'type':_0xb0fc00[_0x24fc('0x2c')],'sectionId':_0xb0fc00['id']},{})[_0x24fc('0x27')](function(){return _0x213439;});}else{return _0x213439;}})[_0x24fc('0x51')](function(_0x41ddfb){logger[_0x24fc('0x52')](_0x24fc('0x53'),_0x41ddfb);throw _0x41ddfb;});}return _0x213439;})['then'](respondWithResult(_0x2f1a99,0xc9))[_0x24fc('0x51')](handleError(_0x2f1a99,null));};exports[_0x24fc('0x25')]=function(_0xc49d9f,_0x31a2ef){if(_0xc49d9f[_0x24fc('0x54')]['id']){delete _0xc49d9f[_0x24fc('0x54')]['id'];}return db['VoiceMail'][_0x24fc('0x4a')]({'where':{'id':_0xc49d9f[_0x24fc('0x46')]['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x31a2ef,null))[_0x24fc('0x27')](saveUpdates(_0xc49d9f[_0x24fc('0x54')],null))[_0x24fc('0x27')](respondWithResult(_0x31a2ef,null))[_0x24fc('0x51')](handleError(_0x31a2ef,null));};exports['destroy']=function(_0xd673f8,_0x11690f){return db['VoiceMail'][_0x24fc('0x4a')]({'where':{'id':_0xd673f8[_0x24fc('0x46')]['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x11690f,null))[_0x24fc('0x27')](removeEntity(_0x11690f,null))[_0x24fc('0x51')](handleError(_0x11690f,null));};exports[_0x24fc('0x55')]=function(_0x50302e,_0x28a44c,_0x4a0524){return db[_0x24fc('0x2f')][_0x24fc('0x56')]({'where':{'id':_0x50302e['params']['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x28a44c,null))['then'](function(_0x1c1f74){var _0x595c47;var _0xdff811={},_0x27b612={};_0x27b612['model']=_[_0x24fc('0x47')](db['VoiceMailMessage'][_0x24fc('0x48')]);_0x27b612[_0x24fc('0x33')]=_['keys'](_0x50302e[_0x24fc('0x33')]);_0x27b612[_0x24fc('0x34')]=_[_0x24fc('0x36')](_0x27b612[_0x24fc('0x32')],_0x27b612[_0x24fc('0x33')]);_0xdff811['attributes']=_[_0x24fc('0x36')](_0x27b612[_0x24fc('0x32')],qs[_0x24fc('0x37')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x37')]));_0xdff811['attributes']=_0xdff811['attributes'][_0x24fc('0x38')]?_0xdff811[_0x24fc('0x35')]:_0x27b612['model'];if(!_0x50302e['query'][_0x24fc('0x39')](_0x24fc('0x57'))){_0xdff811[_0x24fc('0x21')]=qs[_0x24fc('0x21')](_0x50302e['query'][_0x24fc('0x21')]);_0xdff811[_0x24fc('0x1f')]=qs[_0x24fc('0x1f')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x1f')]);}_0xdff811[_0x24fc('0x3a')]=qs[_0x24fc('0x3b')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x3b')]);_0xdff811[_0x24fc('0x3c')]=qs[_0x24fc('0x34')](_[_0x24fc('0x3d')](_0x50302e[_0x24fc('0x33')],_0x27b612[_0x24fc('0x34')]));if(_0x50302e[_0x24fc('0x33')]['filter']){_0xdff811[_0x24fc('0x3c')]=_[_0x24fc('0x40')](_0xdff811[_0x24fc('0x3c')],{'$or':_[_0x24fc('0x2e')](_0xdff811[_0x24fc('0x35')],function(_0x2eb6dc){var _0x10d148={};_0x10d148[_0x2eb6dc]={'$like':'%'+_0x50302e[_0x24fc('0x33')]['filter']+'%'};return _0x10d148;})});}_0xdff811[_0x24fc('0x3c')]=_[_0x24fc('0x40')](_0xdff811[_0x24fc('0x3c')],{'mailboxuser':_0x1c1f74[_0x24fc('0x58')]});_0xdff811=_['merge']({},_0xdff811,_0x50302e[_0x24fc('0x41')]);return db[_0x24fc('0x59')]['findAndCountAll'](_0xdff811)['then'](respondWithFilteredResult(_0x28a44c,_0xdff811));})['catch'](handleError(_0x28a44c,null));};
\ No newline at end of file
+var _0xbfcc=['stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getMessages','nolimit','VoiceMailMessage','eml-format','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','limit','undefined','offset','count','set','Content-Range','json','reject','then','destroy','get','Voicemails','UserProfileResource','error'];(function(_0x597fa9,_0x5ce5c9){var _0x17affd=function(_0x417d73){while(--_0x417d73){_0x597fa9['push'](_0x597fa9['shift']());}};_0x17affd(++_0x5ce5c9);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x1a595a,_0x263824){_0x1a595a=_0x1a595a-0x0;var _0x33f008=_0xbfcc[_0x1a595a];return _0x33f008;};'use strict';var emlformat=require(_0xcbfc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcbfc('0x1'));var rp=require(_0xcbfc('0x2'));var moment=require(_0xcbfc('0x3'));var BPromise=require(_0xcbfc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xcbfc('0x5'));var ejs=require(_0xcbfc('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcbfc('0x7'));var squel=require('squel');var crypto=require(_0xcbfc('0x8'));var jsforce=require(_0xcbfc('0x9'));var deskjs=require(_0xcbfc('0xa'));var toCsv=require(_0xcbfc('0x5'));var querystring=require('querystring');var Papa=require(_0xcbfc('0xb'));var Redis=require(_0xcbfc('0xc'));var authService=require(_0xcbfc('0xd'));var qs=require(_0xcbfc('0xe'));var as=require(_0xcbfc('0xf'));var hardwareService=require(_0xcbfc('0x10'));var logger=require('../../config/logger')(_0xcbfc('0x11'));var utils=require(_0xcbfc('0x12'));var config=require(_0xcbfc('0x13'));var licenseUtil=require(_0xcbfc('0x14'));var db=require(_0xcbfc('0x15'))['db'];function respondWithStatusCode(_0x4e8b34,_0x3bfd05){_0x3bfd05=_0x3bfd05||0xcc;return function(_0x86f67c){if(_0x86f67c){return _0x4e8b34[_0xcbfc('0x16')](_0x3bfd05);}return _0x4e8b34['status'](_0x3bfd05)[_0xcbfc('0x17')]();};}function respondWithResult(_0x3ec338,_0x2f2bdd){_0x2f2bdd=_0x2f2bdd||0xc8;return function(_0x45a5cc){if(_0x45a5cc){return _0x3ec338[_0xcbfc('0x18')](_0x2f2bdd)['json'](_0x45a5cc);}};}function respondWithFilteredResult(_0x3c69ed,_0x1963de){return function(_0x1ec8c4){if(_0x1ec8c4){var _0x4317e4=typeof _0x1963de['offset']==='undefined'&&typeof _0x1963de[_0xcbfc('0x19')]===_0xcbfc('0x1a');var _0xa65368=_0x1ec8c4['count'];var _0x5b078f=_0x4317e4?0x0:_0x1963de[_0xcbfc('0x1b')];var _0x99b59d=_0x4317e4?_0x1ec8c4[_0xcbfc('0x1c')]:_0x1963de['offset']+_0x1963de[_0xcbfc('0x19')];var _0x552777;if(_0x99b59d>=_0xa65368){_0x99b59d=_0xa65368;_0x552777=0xc8;}else{_0x552777=0xce;}_0x3c69ed[_0xcbfc('0x18')](_0x552777);return _0x3c69ed[_0xcbfc('0x1d')](_0xcbfc('0x1e'),_0x5b078f+'-'+_0x99b59d+'/'+_0xa65368)[_0xcbfc('0x1f')](_0x1ec8c4);}return null;};}function patchUpdates(_0x25c167){return function(_0x2653b1){try{jsonpatch['apply'](_0x2653b1,_0x25c167,!![]);}catch(_0x9c79da){return BPromise[_0xcbfc('0x20')](_0x9c79da);}return _0x2653b1['save']();};}function saveUpdates(_0x1da958,_0x5a449b){return function(_0x4cc8b3){if(_0x4cc8b3){return _0x4cc8b3['update'](_0x1da958)[_0xcbfc('0x21')](function(_0x4a0fcb){return _0x4a0fcb;});}return null;};}function removeEntity(_0x4a1915,_0x1b3e42){return function(_0x34cffa){if(_0x34cffa){return _0x34cffa[_0xcbfc('0x22')]()[_0xcbfc('0x21')](function(){var _0x49f5bf=_0x34cffa[_0xcbfc('0x23')]({'plain':!![]});var _0x51284a=_0xcbfc('0x24');return db[_0xcbfc('0x25')]['destroy']({'where':{'type':_0x51284a,'resourceId':_0x49f5bf['id']}})[_0xcbfc('0x21')](function(){return _0x34cffa;});})[_0xcbfc('0x21')](function(){_0x4a1915['status'](0xcc)[_0xcbfc('0x17')]();});}};}function handleEntityNotFound(_0x3c3afd,_0x2f7549){return function(_0x41f3b8){if(!_0x41f3b8){_0x3c3afd['sendStatus'](0x194);}return _0x41f3b8;};}function handleError(_0x29f896,_0x1ec530){_0x1ec530=_0x1ec530||0x1f4;return function(_0x4f632a){logger[_0xcbfc('0x26')](_0x4f632a[_0xcbfc('0x27')]);if(_0x4f632a[_0xcbfc('0x28')]){delete _0x4f632a[_0xcbfc('0x28')];}_0x29f896[_0xcbfc('0x18')](_0x1ec530)[_0xcbfc('0x29')](_0x4f632a);};}exports[_0xcbfc('0x2a')]=function(_0x5366cf,_0x41b68b){var _0x433300={},_0x3f9d20={},_0x20a378={'count':0x0,'rows':[]};var _0x500a0b=_[_0xcbfc('0x2b')](db[_0xcbfc('0x2c')][_0xcbfc('0x2d')],function(_0x245986){return{'name':_0x245986[_0xcbfc('0x2e')],'type':_0x245986[_0xcbfc('0x2f')][_0xcbfc('0x30')]};});_0x3f9d20['model']=_[_0xcbfc('0x2b')](_0x500a0b,_0xcbfc('0x28'));_0x3f9d20['query']=_[_0xcbfc('0x31')](_0x5366cf[_0xcbfc('0x32')]);_0x3f9d20[_0xcbfc('0x33')]=_['intersection'](_0x3f9d20['model'],_0x3f9d20['query']);_0x433300[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0x3f9d20[_0xcbfc('0x36')],qs[_0xcbfc('0x37')](_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0x433300[_0xcbfc('0x34')]=_0x433300[_0xcbfc('0x34')]['length']?_0x433300[_0xcbfc('0x34')]:_0x3f9d20[_0xcbfc('0x36')];if(!_0x5366cf['query'][_0xcbfc('0x38')]('nolimit')){_0x433300[_0xcbfc('0x19')]=qs[_0xcbfc('0x19')](_0x5366cf[_0xcbfc('0x32')]['limit']);_0x433300[_0xcbfc('0x1b')]=qs['offset'](_0x5366cf['query'][_0xcbfc('0x1b')]);}_0x433300[_0xcbfc('0x39')]=qs[_0xcbfc('0x3a')](_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x3a')]);_0x433300[_0xcbfc('0x3b')]=qs[_0xcbfc('0x33')](_[_0xcbfc('0x3c')](_0x5366cf['query'],_0x3f9d20[_0xcbfc('0x33')]),_0x500a0b);if(_0x5366cf['query'][_0xcbfc('0x3d')]){_0x433300[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x433300[_0xcbfc('0x3b')],{'$or':_['map'](_0x500a0b,function(_0x5306e9){if(_0x5306e9[_0xcbfc('0x2f')]!==_0xcbfc('0x3f')){var _0x404f46={};_0x404f46[_0x5306e9[_0xcbfc('0x28')]]={'$like':'%'+_0x5366cf[_0xcbfc('0x32')]['filter']+'%'};return _0x404f46;}})});}_0x433300=_[_0xcbfc('0x3e')]({},_0x433300,_0x5366cf[_0xcbfc('0x40')]);var _0xf2da32={'where':_0x433300['where']};return db[_0xcbfc('0x2c')][_0xcbfc('0x1c')](_0xf2da32)[_0xcbfc('0x21')](function(_0x4ca55c){_0x20a378[_0xcbfc('0x1c')]=_0x4ca55c;if(_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x41')]){_0x433300[_0xcbfc('0x42')]=[{'all':!![]}];}return db[_0xcbfc('0x2c')][_0xcbfc('0x43')](_0x433300);})[_0xcbfc('0x21')](function(_0x561544){_0x20a378[_0xcbfc('0x44')]=_0x561544;return _0x20a378;})[_0xcbfc('0x21')](respondWithFilteredResult(_0x41b68b,_0x433300))['catch'](handleError(_0x41b68b,null));};exports[_0xcbfc('0x45')]=function(_0x50a01c,_0x17b87b){var _0xdc0521={'raw':!![],'where':{'id':_0x50a01c[_0xcbfc('0x46')]['id']}},_0xd609ec={};_0xd609ec[_0xcbfc('0x36')]=_[_0xcbfc('0x31')](db['VoiceMail'][_0xcbfc('0x2d')]);_0xd609ec[_0xcbfc('0x32')]=_[_0xcbfc('0x31')](_0x50a01c[_0xcbfc('0x32')]);_0xd609ec[_0xcbfc('0x33')]=_[_0xcbfc('0x35')](_0xd609ec[_0xcbfc('0x36')],_0xd609ec['query']);_0xdc0521[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0xd609ec['model'],qs[_0xcbfc('0x37')](_0x50a01c[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0xdc0521['attributes']=_0xdc0521[_0xcbfc('0x34')][_0xcbfc('0x47')]?_0xdc0521[_0xcbfc('0x34')]:_0xd609ec[_0xcbfc('0x36')];if(_0x50a01c[_0xcbfc('0x32')][_0xcbfc('0x41')]){_0xdc0521[_0xcbfc('0x42')]=[{'all':!![]}];}_0xdc0521=_['merge']({},_0xdc0521,_0x50a01c['options']);return db[_0xcbfc('0x2c')][_0xcbfc('0x48')](_0xdc0521)[_0xcbfc('0x21')](handleEntityNotFound(_0x17b87b,null))[_0xcbfc('0x21')](respondWithResult(_0x17b87b,null))['catch'](handleError(_0x17b87b,null));};exports['create']=function(_0x2e89bf,_0xe5c5ef){return db[_0xcbfc('0x2c')]['create'](_0x2e89bf[_0xcbfc('0x49')],{})[_0xcbfc('0x21')](function(_0x4446b7){var _0x4b3096=_0x2e89bf[_0xcbfc('0x4a')][_0xcbfc('0x23')]({'plain':!![]});if(!_0x4b3096)throw new Error(_0xcbfc('0x4b'));if(_0x4b3096[_0xcbfc('0x4c')]===_0xcbfc('0x4a')){var _0xd9976d=_0x4446b7[_0xcbfc('0x23')]({'plain':!![]});var _0x374998=_0xcbfc('0x24');return db[_0xcbfc('0x4d')]['find']({'where':{'name':_0x374998,'userProfileId':_0x4b3096[_0xcbfc('0x4e')]},'raw':!![]})[_0xcbfc('0x21')](function(_0x44cc11){if(_0x44cc11&&_0x44cc11['autoAssociation']===0x0){return db[_0xcbfc('0x25')][_0xcbfc('0x4f')]({'name':_0xd9976d['name'],'resourceId':_0xd9976d['id'],'type':_0x44cc11[_0xcbfc('0x28')],'sectionId':_0x44cc11['id']},{})[_0xcbfc('0x21')](function(){return _0x4446b7;});}else{return _0x4446b7;}})[_0xcbfc('0x50')](function(_0x25e48d){logger['error'](_0xcbfc('0x51'),_0x25e48d);throw _0x25e48d;});}return _0x4446b7;})[_0xcbfc('0x21')](respondWithResult(_0xe5c5ef,0xc9))['catch'](handleError(_0xe5c5ef,null));};exports[_0xcbfc('0x52')]=function(_0x34db13,_0x3ed9f0){if(_0x34db13[_0xcbfc('0x49')]['id']){delete _0x34db13[_0xcbfc('0x49')]['id'];}return db[_0xcbfc('0x2c')][_0xcbfc('0x48')]({'where':{'id':_0x34db13[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x3ed9f0,null))[_0xcbfc('0x21')](saveUpdates(_0x34db13['body'],null))[_0xcbfc('0x21')](respondWithResult(_0x3ed9f0,null))['catch'](handleError(_0x3ed9f0,null));};exports['destroy']=function(_0x4a10e6,_0x4239da){return db[_0xcbfc('0x2c')][_0xcbfc('0x48')]({'where':{'id':_0x4a10e6[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x4239da,null))[_0xcbfc('0x21')](removeEntity(_0x4239da,null))[_0xcbfc('0x50')](handleError(_0x4239da,null));};exports[_0xcbfc('0x53')]=function(_0x4d2df1,_0x9e0c38,_0xf5f5e1){return db[_0xcbfc('0x2c')]['findOne']({'where':{'id':_0x4d2df1[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x9e0c38,null))[_0xcbfc('0x21')](function(_0x3b526f){var _0x1ed350;var _0x310b78={},_0x34ec1d={};_0x34ec1d['model']=_[_0xcbfc('0x31')](db['VoiceMailMessage'][_0xcbfc('0x2d')]);_0x34ec1d[_0xcbfc('0x32')]=_['keys'](_0x4d2df1[_0xcbfc('0x32')]);_0x34ec1d['filters']=_[_0xcbfc('0x35')](_0x34ec1d[_0xcbfc('0x36')],_0x34ec1d[_0xcbfc('0x32')]);_0x310b78[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0x34ec1d[_0xcbfc('0x36')],qs['fields'](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0x310b78['attributes']=_0x310b78[_0xcbfc('0x34')][_0xcbfc('0x47')]?_0x310b78[_0xcbfc('0x34')]:_0x34ec1d[_0xcbfc('0x36')];if(!_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x38')](_0xcbfc('0x54'))){_0x310b78[_0xcbfc('0x19')]=qs['limit'](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x19')]);_0x310b78[_0xcbfc('0x1b')]=qs[_0xcbfc('0x1b')](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x1b')]);}_0x310b78[_0xcbfc('0x39')]=qs[_0xcbfc('0x3a')](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x3a')]);_0x310b78['where']=qs[_0xcbfc('0x33')](_[_0xcbfc('0x3c')](_0x4d2df1['query'],_0x34ec1d[_0xcbfc('0x33')]));if(_0x4d2df1['query']['filter']){_0x310b78[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x310b78[_0xcbfc('0x3b')],{'$or':_[_0xcbfc('0x2b')](_0x310b78[_0xcbfc('0x34')],function(_0x4d8d2a){var _0x53babd={};_0x53babd[_0x4d8d2a]={'$like':'%'+_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x3d')]+'%'};return _0x53babd;})});}_0x310b78[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x310b78[_0xcbfc('0x3b')],{'mailboxuser':_0x3b526f['mailbox']});_0x310b78=_[_0xcbfc('0x3e')]({},_0x310b78,_0x4d2df1[_0xcbfc('0x40')]);return db[_0xcbfc('0x55')]['findAndCountAll'](_0x310b78)['then'](respondWithFilteredResult(_0x9e0c38,_0x310b78));})['catch'](handleError(_0x9e0c38,null));};
\ No newline at end of file
index 5040fa9..cc52a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab10=['rimraf','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x469899,_0x87f311){var _0x4b0b6b=function(_0x1f7ac1){while(--_0x1f7ac1){_0x469899['push'](_0x469899['shift']());}};_0x4b0b6b(++_0x87f311);}(_0xab10,0x125));var _0x0ab1=function(_0x3d6f0f,_0x551565){_0x3d6f0f=_0x3d6f0f-0x0;var _0x1a4fff=_0xab10[_0x3d6f0f];return _0x1a4fff;};'use strict';var _=require(_0x0ab1('0x0'));var util=require(_0x0ab1('0x1'));var logger=require(_0x0ab1('0x2'))(_0x0ab1('0x3'));var moment=require(_0x0ab1('0x4'));var BPromise=require(_0x0ab1('0x5'));var rp=require(_0x0ab1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0ab1('0x7'));var config=require('../../config/environment');var attributes=require(_0x0ab1('0x8'));module['exports']=function(_0x42634e,_0x15a20f){return _0x42634e[_0x0ab1('0x9')](_0x0ab1('0xa'),attributes,{'tableName':_0x0ab1('0xb'),'paranoid':![],'indexes':[{'name':_0x0ab1('0xc'),'fields':[_0x0ab1('0xd'),_0x0ab1('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x54b2=['lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context'];(function(_0x28a71a,_0x734276){var _0x3036ab=function(_0x9333ee){while(--_0x9333ee){_0x28a71a['push'](_0x28a71a['shift']());}};_0x3036ab(++_0x734276);}(_0x54b2,0x180));var _0x254b=function(_0x51a5ea,_0x343629){_0x51a5ea=_0x51a5ea-0x0;var _0x50c737=_0x54b2[_0x51a5ea];return _0x50c737;};'use strict';var _=require(_0x254b('0x0'));var util=require(_0x254b('0x1'));var logger=require(_0x254b('0x2'))(_0x254b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x254b('0x4'));var fs=require('fs');var path=require(_0x254b('0x5'));var rimraf=require(_0x254b('0x6'));var config=require(_0x254b('0x7'));var attributes=require(_0x254b('0x8'));module[_0x254b('0x9')]=function(_0x12c7c8,_0x51f04a){return _0x12c7c8[_0x254b('0xa')](_0x254b('0xb'),attributes,{'tableName':_0x254b('0xc'),'paranoid':![],'indexes':[{'name':_0x254b('0xd'),'fields':[_0x254b('0xe'),_0x254b('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 93f74ef..39bfdc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bac=['request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMail,\x20%s,\x20%s'];(function(_0x473d1e,_0x4df799){var _0x503be9=function(_0x4bcfff){while(--_0x4bcfff){_0x473d1e['push'](_0x473d1e['shift']());}};_0x503be9(++_0x4df799);}(_0x6bac,0x1d6));var _0xc6ba=function(_0xc9082b,_0x506bfd){_0xc9082b=_0xc9082b-0x0;var _0x28919e=_0x6bac[_0xc9082b];return _0x28919e;};'use strict';var _=require(_0xc6ba('0x0'));var util=require('util');var moment=require(_0xc6ba('0x1'));var BPromise=require(_0xc6ba('0x2'));var rs=require(_0xc6ba('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc6ba('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc6ba('0x5'))(_0xc6ba('0x6'));var config=require(_0xc6ba('0x7'));var jayson=require(_0xc6ba('0x8'));var client=jayson['client'][_0xc6ba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3431fd,_0x281144,_0x69f927){return new BPromise(function(_0x4cd54a,_0x4a09ff){return client[_0xc6ba('0xa')](_0x3431fd,_0x69f927)[_0xc6ba('0xb')](function(_0x39acec){logger[_0xc6ba('0xc')](_0xc6ba('0xd'),_0x281144,_0xc6ba('0xe'));logger[_0xc6ba('0xf')](_0xc6ba('0x10'),_0x281144,_0xc6ba('0xe'),JSON['stringify'](_0x39acec));if(_0x39acec[_0xc6ba('0x11')]){if(_0x39acec['error'][_0xc6ba('0x12')]===0x1f4){logger[_0xc6ba('0x11')](_0xc6ba('0xd'),_0x281144,_0x39acec[_0xc6ba('0x11')][_0xc6ba('0x13')]);return _0x4a09ff(_0x39acec[_0xc6ba('0x11')]['message']);}logger['error'](_0xc6ba('0xd'),_0x281144,_0x39acec['error'][_0xc6ba('0x13')]);return _0x4cd54a(_0x39acec['error'][_0xc6ba('0x13')]);}else{logger[_0xc6ba('0xc')]('VoiceMail,\x20%s,\x20%s',_0x281144,'request\x20sent');_0x4cd54a(_0x39acec[_0xc6ba('0x14')][_0xc6ba('0x13')]);}})[_0xc6ba('0x15')](function(_0x4bfbfa){logger[_0xc6ba('0x11')](_0xc6ba('0xd'),_0x281144,_0x4bfbfa);_0x4a09ff(_0x4bfbfa);});});}
\ No newline at end of file
+var _0xf53b=['code','message','info','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x54afcf,_0x5e93c6){var _0x301931=function(_0x11712b){while(--_0x11712b){_0x54afcf['push'](_0x54afcf['shift']());}};_0x301931(++_0x5e93c6);}(_0xf53b,0x195));var _0xbf53=function(_0x340646,_0x1a3804){_0x340646=_0x340646-0x0;var _0x1a39c1=_0xf53b[_0x340646];return _0x1a39c1;};'use strict';var _=require(_0xbf53('0x0'));var util=require('util');var moment=require(_0xbf53('0x1'));var BPromise=require('bluebird');var rs=require(_0xbf53('0x2'));var fs=require('fs');var Redis=require(_0xbf53('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf53('0x4'));var logger=require('../../config/logger')(_0xbf53('0x5'));var config=require(_0xbf53('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbf53('0x7')][_0xbf53('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x37ac5b,_0x5cae13,_0x1d04cf){return new BPromise(function(_0x4c3c10,_0x2045ef){return client[_0xbf53('0x9')](_0x37ac5b,_0x1d04cf)[_0xbf53('0xa')](function(_0x34ed6e){logger['info'](_0xbf53('0xb'),_0x5cae13,_0xbf53('0xc'));logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x5cae13,_0xbf53('0xc'),JSON[_0xbf53('0xd')](_0x34ed6e));if(_0x34ed6e['error']){if(_0x34ed6e[_0xbf53('0xe')][_0xbf53('0xf')]===0x1f4){logger[_0xbf53('0xe')](_0xbf53('0xb'),_0x5cae13,_0x34ed6e[_0xbf53('0xe')][_0xbf53('0x10')]);return _0x2045ef(_0x34ed6e[_0xbf53('0xe')][_0xbf53('0x10')]);}logger[_0xbf53('0xe')](_0xbf53('0xb'),_0x5cae13,_0x34ed6e[_0xbf53('0xe')][_0xbf53('0x10')]);return _0x4c3c10(_0x34ed6e['error'][_0xbf53('0x10')]);}else{logger[_0xbf53('0x11')]('VoiceMail,\x20%s,\x20%s',_0x5cae13,'request\x20sent');_0x4c3c10(_0x34ed6e[_0xbf53('0x12')][_0xbf53('0x10')]);}})[_0xbf53('0x13')](function(_0x235b55){logger[_0xbf53('0xe')](_0xbf53('0xb'),_0x5cae13,_0x235b55);_0x2045ef(_0x235b55);});});}
\ No newline at end of file
index b8e8a09..f3d5085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc83b=['post','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','download'];(function(_0x3990af,_0x28dfc6){var _0x259474=function(_0x4c38f3){while(--_0x4c38f3){_0x3990af['push'](_0x3990af['shift']());}};_0x259474(++_0x28dfc6);}(_0xc83b,0x1d4));var _0xbc83=function(_0x5ea81f,_0x465b4e){_0x5ea81f=_0x5ea81f-0x0;var _0x38fbcc=_0xc83b[_0x5ea81f];return _0x38fbcc;};'use strict';var multer=require(_0xbc83('0x0'));var util=require('util');var path=require(_0xbc83('0x1'));var timeout=require(_0xbc83('0x2'));var express=require(_0xbc83('0x3'));var router=express[_0xbc83('0x4')]();var fs_extra=require(_0xbc83('0x5'));var auth=require(_0xbc83('0x6'));var interaction=require(_0xbc83('0x7'));var config=require(_0xbc83('0x8'));var controller=require(_0xbc83('0x9'));router[_0xbc83('0xa')]('/',auth[_0xbc83('0xb')](),controller['index']);router['get'](_0xbc83('0xc'),auth['isAuthenticated'](),controller[_0xbc83('0xd')]);router[_0xbc83('0xa')]('/:id/download',auth[_0xbc83('0xb')](),controller[_0xbc83('0xe')]);router[_0xbc83('0xf')]('/',auth[_0xbc83('0xb')](),controller['create']);router[_0xbc83('0x10')]('/:id',auth[_0xbc83('0xb')](),controller[_0xbc83('0x11')]);router[_0xbc83('0x12')](_0xbc83('0xc'),auth['isAuthenticated'](),controller[_0xbc83('0x13')]);module[_0xbc83('0x14')]=router;
\ No newline at end of file
+var _0xd55b=['get','/:id/download','download','post','create','put','/:id','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','isAuthenticated'];(function(_0x5b5a82,_0x534599){var _0x5fc392=function(_0x3e4e9b){while(--_0x3e4e9b){_0x5b5a82['push'](_0x5b5a82['shift']());}};_0x5fc392(++_0x534599);}(_0xd55b,0x74));var _0xbd55=function(_0x10eb91,_0x14aad2){_0x10eb91=_0x10eb91-0x0;var _0x12eb1a=_0xd55b[_0x10eb91];return _0x12eb1a;};'use strict';var multer=require(_0xbd55('0x0'));var util=require('util');var path=require(_0xbd55('0x1'));var timeout=require(_0xbd55('0x2'));var express=require(_0xbd55('0x3'));var router=express[_0xbd55('0x4')]();var fs_extra=require(_0xbd55('0x5'));var auth=require(_0xbd55('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbd55('0x7'));var controller=require(_0xbd55('0x8'));router['get']('/',auth[_0xbd55('0x9')](),controller['index']);router[_0xbd55('0xa')]('/:id',auth[_0xbd55('0x9')](),controller['show']);router[_0xbd55('0xa')](_0xbd55('0xb'),auth['isAuthenticated'](),controller[_0xbd55('0xc')]);router[_0xbd55('0xd')]('/',auth['isAuthenticated'](),controller[_0xbd55('0xe')]);router[_0xbd55('0xf')]('/:id',auth[_0xbd55('0x9')](),controller['update']);router['delete'](_0xbd55('0x10'),auth[_0xbd55('0x9')](),controller[_0xbd55('0x11')]);module['exports']=router;
\ No newline at end of file
index 3682548..01ccaa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc215=['INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL'];(function(_0x4ac32e,_0x60ea80){var _0x30f0d4=function(_0x30ce62){while(--_0x30ce62){_0x4ac32e['push'](_0x4ac32e['shift']());}};_0x30f0d4(++_0x60ea80);}(_0xc215,0x129));var _0x5c21=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xc215[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0x5c21('0x0'));module[_0x5c21('0x1')]={'name':{'type':Sequelize[_0x5c21('0x2')],'get':function(_0x85079f){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x5c21('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x5c21('0x5')](_0x5c21('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'stamp':{'type':_0x5c21('0x7'),'defaultValue':Sequelize[_0x5c21('0x8')](_0x5c21('0x9'))}};
\ No newline at end of file
+var _0xd3e3=['VIRTUAL','INTEGER','STRING','BLOB','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports'];(function(_0x9e7f9b,_0x372c6a){var _0x236b32=function(_0x58f8d7){while(--_0x58f8d7){_0x9e7f9b['push'](_0x9e7f9b['shift']());}};_0x236b32(++_0x372c6a);}(_0xd3e3,0xd6));var _0x3d3e=function(_0x432f37,_0x2488b3){_0x432f37=_0x432f37-0x0;var _0x4e4b34=_0xd3e3[_0x432f37];return _0x4e4b34;};'use strict';var Sequelize=require(_0x3d3e('0x0'));module[_0x3d3e('0x1')]={'name':{'type':Sequelize[_0x3d3e('0x2')],'get':function(_0x44d9ac){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x3d3e('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x3d3e('0x5')](_0x3d3e('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x3d3e('0x4')],'defaultValue':''},'stamp':{'type':_0x3d3e('0x7'),'defaultValue':Sequelize['literal'](_0x3d3e('0x8'))}};
\ No newline at end of file
index 68e2def..0929669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ac4=['mustache','util','path','ejs','lodash','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','status','end','offset','undefined','limit','count','Content-Range','json','save','update','then','destroy','error','stack','name','send','map','rawAttributes','type','key','differenceBy','query','keys','model','attributes','intersection','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','VoiceMailMessage','findAll','rows','catch','show','params','body','find','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','attachment;\x20filename=\x22','.wav\x22','set','rimraf','zip-dir','fast-json-patch','bluebird'];(function(_0x4e6fb2,_0x3cf23e){var _0x2f1636=function(_0x53c7eb){while(--_0x53c7eb){_0x4e6fb2['push'](_0x4e6fb2['shift']());}};_0x2f1636(++_0x3cf23e);}(_0x2ac4,0x13c));var _0x42ac=function(_0x443520,_0x2fe333){_0x443520=_0x443520-0x0;var _0x20afa5=_0x2ac4[_0x443520];return _0x20afa5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x42ac('0x0'));var zipdir=require(_0x42ac('0x1'));var jsonpatch=require(_0x42ac('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x42ac('0x3'));var Mustache=require(_0x42ac('0x4'));var util=require(_0x42ac('0x5'));var path=require(_0x42ac('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x42ac('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x42ac('0x8'));var squel=require('squel');var crypto=require(_0x42ac('0x9'));var jsforce=require(_0x42ac('0xa'));var deskjs=require(_0x42ac('0xb'));var toCsv=require(_0x42ac('0xc'));var querystring=require(_0x42ac('0xd'));var Papa=require(_0x42ac('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x42ac('0xf'));var as=require(_0x42ac('0x10'));var hardwareService=require(_0x42ac('0x11'));var logger=require('../../config/logger')(_0x42ac('0x12'));var utils=require(_0x42ac('0x13'));var config=require(_0x42ac('0x14'));var licenseUtil=require(_0x42ac('0x15'));var db=require(_0x42ac('0x16'))['db'];function respondWithStatusCode(_0x5dc76f,_0x1f49cc){_0x1f49cc=_0x1f49cc||0xcc;return function(_0x2df346){if(_0x2df346){return _0x5dc76f['sendStatus'](_0x1f49cc);}return _0x5dc76f[_0x42ac('0x17')](_0x1f49cc)[_0x42ac('0x18')]();};}function respondWithResult(_0x45ac03,_0x161037){_0x161037=_0x161037||0xc8;return function(_0x214788){if(_0x214788){return _0x45ac03[_0x42ac('0x17')](_0x161037)['json'](_0x214788);}};}function respondWithFilteredResult(_0x438369,_0x287aa5){return function(_0x4ef153){if(_0x4ef153){var _0x1c76c8=typeof _0x287aa5[_0x42ac('0x19')]===_0x42ac('0x1a')&&typeof _0x287aa5[_0x42ac('0x1b')]===_0x42ac('0x1a');var _0x556b8e=_0x4ef153[_0x42ac('0x1c')];var _0x81caa4=_0x1c76c8?0x0:_0x287aa5['offset'];var _0x5d92ca=_0x1c76c8?_0x4ef153['count']:_0x287aa5[_0x42ac('0x19')]+_0x287aa5['limit'];var _0x55173e;if(_0x5d92ca>=_0x556b8e){_0x5d92ca=_0x556b8e;_0x55173e=0xc8;}else{_0x55173e=0xce;}_0x438369[_0x42ac('0x17')](_0x55173e);return _0x438369['set'](_0x42ac('0x1d'),_0x81caa4+'-'+_0x5d92ca+'/'+_0x556b8e)[_0x42ac('0x1e')](_0x4ef153);}return null;};}function patchUpdates(_0x13f2b5){return function(_0x10ba5f){try{jsonpatch['apply'](_0x10ba5f,_0x13f2b5,!![]);}catch(_0x5f1628){return BPromise['reject'](_0x5f1628);}return _0x10ba5f[_0x42ac('0x1f')]();};}function saveUpdates(_0x3a2ed0,_0x4e798b){return function(_0x11b2a8){if(_0x11b2a8){return _0x11b2a8[_0x42ac('0x20')](_0x3a2ed0)[_0x42ac('0x21')](function(_0x1d2546){return _0x1d2546;});}return null;};}function removeEntity(_0x33ea9f,_0x4e87f1){return function(_0x42fac5){if(_0x42fac5){return _0x42fac5[_0x42ac('0x22')]()[_0x42ac('0x21')](function(){_0x33ea9f[_0x42ac('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4838b4,_0x289345){return function(_0x586819){if(!_0x586819){_0x4838b4['sendStatus'](0x194);}return _0x586819;};}function handleError(_0x3bccd8,_0xf0969){_0xf0969=_0xf0969||0x1f4;return function(_0x2a9ac0){logger[_0x42ac('0x23')](_0x2a9ac0[_0x42ac('0x24')]);if(_0x2a9ac0[_0x42ac('0x25')]){delete _0x2a9ac0[_0x42ac('0x25')];}_0x3bccd8[_0x42ac('0x17')](_0xf0969)[_0x42ac('0x26')](_0x2a9ac0);};}exports['index']=function(_0x4d9ed4,_0x202089){var _0x218fb7={},_0x42cfdc={},_0x5d8039={'count':0x0,'rows':[]};var _0x2fd63e=_[_0x42ac('0x27')](db['VoiceMailMessage'][_0x42ac('0x28')],function(_0x1d5c51){return{'name':_0x1d5c51['fieldName'],'type':_0x1d5c51[_0x42ac('0x29')][_0x42ac('0x2a')]};});_0x42cfdc['model']=_[_0x42ac('0x2b')](_[_0x42ac('0x27')](_0x2fd63e,_0x42ac('0x25')),[_0x42ac('0x25')]);_0x42cfdc[_0x42ac('0x2c')]=_[_0x42ac('0x2d')](_0x4d9ed4[_0x42ac('0x2c')]);_0x42cfdc['filters']=_['intersection'](_0x42cfdc[_0x42ac('0x2e')],_0x42cfdc['query']);_0x218fb7[_0x42ac('0x2f')]=_[_0x42ac('0x30')](_0x42cfdc['model'],qs[_0x42ac('0x31')](_0x4d9ed4['query'][_0x42ac('0x31')]));_0x218fb7[_0x42ac('0x2f')]=_0x218fb7[_0x42ac('0x2f')][_0x42ac('0x32')]?_0x218fb7['attributes']:_0x42cfdc[_0x42ac('0x2e')];if(!_0x4d9ed4['query']['hasOwnProperty'](_0x42ac('0x33'))){_0x218fb7[_0x42ac('0x1b')]=qs[_0x42ac('0x1b')](_0x4d9ed4['query'][_0x42ac('0x1b')]);_0x218fb7['offset']=qs[_0x42ac('0x19')](_0x4d9ed4['query'][_0x42ac('0x19')]);}_0x218fb7[_0x42ac('0x34')]=qs[_0x42ac('0x35')](_0x4d9ed4[_0x42ac('0x2c')][_0x42ac('0x35')]);_0x218fb7['where']=qs[_0x42ac('0x36')](_[_0x42ac('0x37')](_0x4d9ed4[_0x42ac('0x2c')],_0x42cfdc['filters']),_0x2fd63e);if(_0x4d9ed4['query'][_0x42ac('0x38')]){_0x218fb7[_0x42ac('0x39')]=_[_0x42ac('0x3a')](_0x218fb7[_0x42ac('0x39')],{'$or':_['map'](_0x2fd63e,function(_0x50acc7){if(_0x50acc7[_0x42ac('0x29')]!=='VIRTUAL'){var _0x2fc798={};_0x2fc798[_0x50acc7[_0x42ac('0x25')]]={'$like':'%'+_0x4d9ed4[_0x42ac('0x2c')][_0x42ac('0x38')]+'%'};return _0x2fc798;}})});}_0x218fb7=_['merge']({},_0x218fb7,_0x4d9ed4[_0x42ac('0x3b')]);var _0x371383={'where':_0x218fb7['where']};return db['VoiceMailMessage'][_0x42ac('0x1c')](_0x371383)['then'](function(_0x14bcca){_0x5d8039[_0x42ac('0x1c')]=_0x14bcca;if(_0x4d9ed4['query'][_0x42ac('0x3c')]){_0x218fb7[_0x42ac('0x3d')]=[{'all':!![]}];}return db[_0x42ac('0x3e')][_0x42ac('0x3f')](_0x218fb7);})['then'](function(_0x20dd03){_0x5d8039[_0x42ac('0x40')]=_0x20dd03;return _0x5d8039;})['then'](respondWithFilteredResult(_0x202089,_0x218fb7))[_0x42ac('0x41')](handleError(_0x202089,null));};exports[_0x42ac('0x42')]=function(_0x25d270,_0x30f3e2){var _0x210c21={'raw':!![],'where':{'id':_0x25d270[_0x42ac('0x43')]['id']}},_0x3be982={};_0x3be982[_0x42ac('0x2e')]=_[_0x42ac('0x2d')](db[_0x42ac('0x3e')]['rawAttributes']);_0x3be982['query']=_['keys'](_0x25d270['query']);_0x3be982[_0x42ac('0x36')]=_[_0x42ac('0x30')](_0x3be982['model'],_0x3be982[_0x42ac('0x2c')]);_0x210c21[_0x42ac('0x2f')]=_['intersection'](_0x3be982[_0x42ac('0x2e')],qs[_0x42ac('0x31')](_0x25d270[_0x42ac('0x2c')]['fields']));_0x210c21['attributes']=_0x210c21[_0x42ac('0x2f')][_0x42ac('0x32')]?_0x210c21['attributes']:_0x3be982[_0x42ac('0x2e')];if(_0x25d270[_0x42ac('0x2c')]['includeAll']){_0x210c21[_0x42ac('0x3d')]=[{'all':!![]}];}_0x210c21=_[_0x42ac('0x3a')]({},_0x210c21,_0x25d270[_0x42ac('0x3b')]);return db['VoiceMailMessage']['find'](_0x210c21)[_0x42ac('0x21')](handleEntityNotFound(_0x30f3e2,null))['then'](respondWithResult(_0x30f3e2,null))[_0x42ac('0x41')](handleError(_0x30f3e2,null));};exports['create']=function(_0x36ff79,_0x2d4b71){return db[_0x42ac('0x3e')]['create'](_0x36ff79[_0x42ac('0x44')],{})[_0x42ac('0x21')](respondWithResult(_0x2d4b71,0xc9))[_0x42ac('0x41')](handleError(_0x2d4b71,null));};exports['update']=function(_0x280931,_0x2ee081){if(_0x280931[_0x42ac('0x44')]['id']){delete _0x280931[_0x42ac('0x44')]['id'];}return db[_0x42ac('0x3e')]['find']({'where':{'id':_0x280931[_0x42ac('0x43')]['id']}})[_0x42ac('0x21')](handleEntityNotFound(_0x2ee081,null))[_0x42ac('0x21')](saveUpdates(_0x280931[_0x42ac('0x44')],null))[_0x42ac('0x21')](respondWithResult(_0x2ee081,null))[_0x42ac('0x41')](handleError(_0x2ee081,null));};exports['destroy']=function(_0x4a35a3,_0x417c2c){return db[_0x42ac('0x3e')][_0x42ac('0x45')]({'where':{'id':_0x4a35a3[_0x42ac('0x43')]['id']}})[_0x42ac('0x21')](handleEntityNotFound(_0x417c2c,null))[_0x42ac('0x21')](removeEntity(_0x417c2c,null))[_0x42ac('0x41')](handleError(_0x417c2c,null));};exports['download']=function(_0x1af221,_0x13e20f,_0x4cb28f){return db['VoiceMailMessage'][_0x42ac('0x45')]({'where':{'id':_0x1af221[_0x42ac('0x43')]['id']},'attributes':['id','recording',_0x42ac('0x46')]})[_0x42ac('0x21')](handleEntityNotFound(_0x13e20f,null))[_0x42ac('0x21')](function(_0x26123b){if(_0x26123b){if(!_0x26123b[_0x42ac('0x47')]){throw new db[(_0x42ac('0x48'))][(_0x42ac('0x49'))](_0x42ac('0x4a'));}var _0x302225={'Content-Type':_0x42ac('0x4b'),'Content-Disposition':_0x42ac('0x4c')};if(_0x26123b[_0x42ac('0x46')]){_0x302225['Content-Disposition']=_0x42ac('0x4d')+_0x26123b['msg_id']+_0x42ac('0x4e');}_0x13e20f[_0x42ac('0x4f')](_0x302225);return _0x13e20f[_0x42ac('0x26')](new Buffer(_0x26123b[_0x42ac('0x47')]));}})['catch'](handleError(_0x13e20f,null));};
\ No newline at end of file
+var _0x1c74=['stack','name','send','index','map','rawAttributes','fieldName','type','key','differenceBy','query','keys','filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceMailMessage','includeAll','include','findAll','rows','catch','find','create','body','params','download','recording','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','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','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','then','destroy','error'];(function(_0x2d982b,_0x359e84){var _0x43e9f3=function(_0x121f06){while(--_0x121f06){_0x2d982b['push'](_0x2d982b['shift']());}};_0x43e9f3(++_0x359e84);}(_0x1c74,0x135));var _0x41c7=function(_0x567aa3,_0x1000ce){_0x567aa3=_0x567aa3-0x0;var _0xaa666e=_0x1c74[_0x567aa3];return _0xaa666e;};'use strict';var emlformat=require(_0x41c7('0x0'));var rimraf=require(_0x41c7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x41c7('0x2'));var rp=require(_0x41c7('0x3'));var moment=require(_0x41c7('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x41c7('0x5'));var csv=require(_0x41c7('0x6'));var ejs=require(_0x41c7('0x7'));var fs=require('fs');var fs_extra=require(_0x41c7('0x8'));var _=require(_0x41c7('0x9'));var squel=require('squel');var crypto=require(_0x41c7('0xa'));var jsforce=require(_0x41c7('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x41c7('0x6'));var querystring=require(_0x41c7('0xc'));var Papa=require('papaparse');var Redis=require(_0x41c7('0xd'));var authService=require(_0x41c7('0xe'));var qs=require(_0x41c7('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x41c7('0x10'));var logger=require(_0x41c7('0x11'))(_0x41c7('0x12'));var utils=require(_0x41c7('0x13'));var config=require(_0x41c7('0x14'));var licenseUtil=require(_0x41c7('0x15'));var db=require(_0x41c7('0x16'))['db'];function respondWithStatusCode(_0x30d9b7,_0x2ef87b){_0x2ef87b=_0x2ef87b||0xcc;return function(_0x270ca3){if(_0x270ca3){return _0x30d9b7[_0x41c7('0x17')](_0x2ef87b);}return _0x30d9b7[_0x41c7('0x18')](_0x2ef87b)[_0x41c7('0x19')]();};}function respondWithResult(_0x30c489,_0x32fa2f){_0x32fa2f=_0x32fa2f||0xc8;return function(_0x4662c1){if(_0x4662c1){return _0x30c489[_0x41c7('0x18')](_0x32fa2f)[_0x41c7('0x1a')](_0x4662c1);}};}function respondWithFilteredResult(_0x5b379d,_0x2c657e){return function(_0x152da0){if(_0x152da0){var _0x217846=typeof _0x2c657e['offset']==='undefined'&&typeof _0x2c657e[_0x41c7('0x1b')]===_0x41c7('0x1c');var _0x4c7c3c=_0x152da0['count'];var _0x97aa04=_0x217846?0x0:_0x2c657e[_0x41c7('0x1d')];var _0x5e448a=_0x217846?_0x152da0[_0x41c7('0x1e')]:_0x2c657e[_0x41c7('0x1d')]+_0x2c657e['limit'];var _0x4f9936;if(_0x5e448a>=_0x4c7c3c){_0x5e448a=_0x4c7c3c;_0x4f9936=0xc8;}else{_0x4f9936=0xce;}_0x5b379d[_0x41c7('0x18')](_0x4f9936);return _0x5b379d[_0x41c7('0x1f')](_0x41c7('0x20'),_0x97aa04+'-'+_0x5e448a+'/'+_0x4c7c3c)[_0x41c7('0x1a')](_0x152da0);}return null;};}function patchUpdates(_0x2bcc3e){return function(_0x506e12){try{jsonpatch[_0x41c7('0x21')](_0x506e12,_0x2bcc3e,!![]);}catch(_0x40d589){return BPromise[_0x41c7('0x22')](_0x40d589);}return _0x506e12[_0x41c7('0x23')]();};}function saveUpdates(_0x3d8f84,_0x3c7e10){return function(_0x33005d){if(_0x33005d){return _0x33005d['update'](_0x3d8f84)[_0x41c7('0x24')](function(_0x2c411b){return _0x2c411b;});}return null;};}function removeEntity(_0x5a3215,_0x4de9f9){return function(_0x458a55){if(_0x458a55){return _0x458a55[_0x41c7('0x25')]()[_0x41c7('0x24')](function(){_0x5a3215[_0x41c7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37c68a,_0x1ab926){return function(_0xa29d06){if(!_0xa29d06){_0x37c68a[_0x41c7('0x17')](0x194);}return _0xa29d06;};}function handleError(_0x4ea1e3,_0x18d22f){_0x18d22f=_0x18d22f||0x1f4;return function(_0x3a04fd){logger[_0x41c7('0x26')](_0x3a04fd[_0x41c7('0x27')]);if(_0x3a04fd[_0x41c7('0x28')]){delete _0x3a04fd[_0x41c7('0x28')];}_0x4ea1e3[_0x41c7('0x18')](_0x18d22f)[_0x41c7('0x29')](_0x3a04fd);};}exports[_0x41c7('0x2a')]=function(_0x1d1b86,_0x5de1fd){var _0x2fb9fb={},_0x16bd72={},_0x331039={'count':0x0,'rows':[]};var _0x31b066=_[_0x41c7('0x2b')](db['VoiceMailMessage'][_0x41c7('0x2c')],function(_0x5aaff3){return{'name':_0x5aaff3[_0x41c7('0x2d')],'type':_0x5aaff3[_0x41c7('0x2e')][_0x41c7('0x2f')]};});_0x16bd72['model']=_[_0x41c7('0x30')](_[_0x41c7('0x2b')](_0x31b066,_0x41c7('0x28')),[_0x41c7('0x28')]);_0x16bd72[_0x41c7('0x31')]=_[_0x41c7('0x32')](_0x1d1b86['query']);_0x16bd72[_0x41c7('0x33')]=_[_0x41c7('0x34')](_0x16bd72['model'],_0x16bd72['query']);_0x2fb9fb['attributes']=_[_0x41c7('0x34')](_0x16bd72['model'],qs['fields'](_0x1d1b86['query'][_0x41c7('0x35')]));_0x2fb9fb[_0x41c7('0x36')]=_0x2fb9fb[_0x41c7('0x36')][_0x41c7('0x37')]?_0x2fb9fb[_0x41c7('0x36')]:_0x16bd72[_0x41c7('0x38')];if(!_0x1d1b86[_0x41c7('0x31')][_0x41c7('0x39')](_0x41c7('0x3a'))){_0x2fb9fb[_0x41c7('0x1b')]=qs[_0x41c7('0x1b')](_0x1d1b86[_0x41c7('0x31')][_0x41c7('0x1b')]);_0x2fb9fb[_0x41c7('0x1d')]=qs[_0x41c7('0x1d')](_0x1d1b86[_0x41c7('0x31')][_0x41c7('0x1d')]);}_0x2fb9fb[_0x41c7('0x3b')]=qs[_0x41c7('0x3c')](_0x1d1b86[_0x41c7('0x31')][_0x41c7('0x3c')]);_0x2fb9fb[_0x41c7('0x3d')]=qs[_0x41c7('0x33')](_[_0x41c7('0x3e')](_0x1d1b86['query'],_0x16bd72['filters']),_0x31b066);if(_0x1d1b86['query']['filter']){_0x2fb9fb[_0x41c7('0x3d')]=_[_0x41c7('0x3f')](_0x2fb9fb['where'],{'$or':_[_0x41c7('0x2b')](_0x31b066,function(_0x48bb09){if(_0x48bb09[_0x41c7('0x2e')]!==_0x41c7('0x40')){var _0x112031={};_0x112031[_0x48bb09['name']]={'$like':'%'+_0x1d1b86[_0x41c7('0x31')][_0x41c7('0x41')]+'%'};return _0x112031;}})});}_0x2fb9fb=_[_0x41c7('0x3f')]({},_0x2fb9fb,_0x1d1b86[_0x41c7('0x42')]);var _0x14a145={'where':_0x2fb9fb[_0x41c7('0x3d')]};return db[_0x41c7('0x43')][_0x41c7('0x1e')](_0x14a145)[_0x41c7('0x24')](function(_0x28ba8d){_0x331039[_0x41c7('0x1e')]=_0x28ba8d;if(_0x1d1b86[_0x41c7('0x31')][_0x41c7('0x44')]){_0x2fb9fb[_0x41c7('0x45')]=[{'all':!![]}];}return db[_0x41c7('0x43')][_0x41c7('0x46')](_0x2fb9fb);})['then'](function(_0x4c410a){_0x331039[_0x41c7('0x47')]=_0x4c410a;return _0x331039;})['then'](respondWithFilteredResult(_0x5de1fd,_0x2fb9fb))[_0x41c7('0x48')](handleError(_0x5de1fd,null));};exports['show']=function(_0x269d16,_0x444d05){var _0x3f7258={'raw':!![],'where':{'id':_0x269d16['params']['id']}},_0x1eb89e={};_0x1eb89e[_0x41c7('0x38')]=_[_0x41c7('0x32')](db[_0x41c7('0x43')]['rawAttributes']);_0x1eb89e[_0x41c7('0x31')]=_[_0x41c7('0x32')](_0x269d16[_0x41c7('0x31')]);_0x1eb89e[_0x41c7('0x33')]=_[_0x41c7('0x34')](_0x1eb89e[_0x41c7('0x38')],_0x1eb89e['query']);_0x3f7258[_0x41c7('0x36')]=_[_0x41c7('0x34')](_0x1eb89e[_0x41c7('0x38')],qs[_0x41c7('0x35')](_0x269d16['query']['fields']));_0x3f7258['attributes']=_0x3f7258[_0x41c7('0x36')][_0x41c7('0x37')]?_0x3f7258[_0x41c7('0x36')]:_0x1eb89e[_0x41c7('0x38')];if(_0x269d16[_0x41c7('0x31')][_0x41c7('0x44')]){_0x3f7258[_0x41c7('0x45')]=[{'all':!![]}];}_0x3f7258=_['merge']({},_0x3f7258,_0x269d16[_0x41c7('0x42')]);return db[_0x41c7('0x43')][_0x41c7('0x49')](_0x3f7258)[_0x41c7('0x24')](handleEntityNotFound(_0x444d05,null))['then'](respondWithResult(_0x444d05,null))[_0x41c7('0x48')](handleError(_0x444d05,null));};exports[_0x41c7('0x4a')]=function(_0x3e08e4,_0xb851f6){return db[_0x41c7('0x43')][_0x41c7('0x4a')](_0x3e08e4[_0x41c7('0x4b')],{})[_0x41c7('0x24')](respondWithResult(_0xb851f6,0xc9))[_0x41c7('0x48')](handleError(_0xb851f6,null));};exports['update']=function(_0x55e5d0,_0x1e5689){if(_0x55e5d0[_0x41c7('0x4b')]['id']){delete _0x55e5d0[_0x41c7('0x4b')]['id'];}return db[_0x41c7('0x43')][_0x41c7('0x49')]({'where':{'id':_0x55e5d0[_0x41c7('0x4c')]['id']}})[_0x41c7('0x24')](handleEntityNotFound(_0x1e5689,null))[_0x41c7('0x24')](saveUpdates(_0x55e5d0[_0x41c7('0x4b')],null))[_0x41c7('0x24')](respondWithResult(_0x1e5689,null))[_0x41c7('0x48')](handleError(_0x1e5689,null));};exports[_0x41c7('0x25')]=function(_0x4da49b,_0x171a4e){return db[_0x41c7('0x43')][_0x41c7('0x49')]({'where':{'id':_0x4da49b[_0x41c7('0x4c')]['id']}})[_0x41c7('0x24')](handleEntityNotFound(_0x171a4e,null))[_0x41c7('0x24')](removeEntity(_0x171a4e,null))[_0x41c7('0x48')](handleError(_0x171a4e,null));};exports[_0x41c7('0x4d')]=function(_0x3764c1,_0x4bfffe,_0x30973b){return db[_0x41c7('0x43')]['find']({'where':{'id':_0x3764c1[_0x41c7('0x4c')]['id']},'attributes':['id',_0x41c7('0x4e'),'msg_id']})['then'](handleEntityNotFound(_0x4bfffe,null))[_0x41c7('0x24')](function(_0x108dfe){if(_0x108dfe){if(!_0x108dfe[_0x41c7('0x4e')]){throw new db[(_0x41c7('0x4f'))]['ValidationError'](_0x41c7('0x50'));}var _0x528f42={'Content-Type':_0x41c7('0x51'),'Content-Disposition':_0x41c7('0x52')};if(_0x108dfe[_0x41c7('0x53')]){_0x528f42[_0x41c7('0x54')]=_0x41c7('0x55')+_0x108dfe[_0x41c7('0x53')]+_0x41c7('0x56');}_0x4bfffe['set'](_0x528f42);return _0x4bfffe[_0x41c7('0x29')](new Buffer(_0x108dfe[_0x41c7('0x4e')]));}})[_0x41c7('0x48')](handleError(_0x4bfffe,null));};
\ No newline at end of file
index 2ac3cab..44a51da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a38=['util','../../config/logger','api','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','lodash'];(function(_0x460dae,_0x3a907f){var _0x36e6d0=function(_0x447057){while(--_0x447057){_0x460dae['push'](_0x460dae['shift']());}};_0x36e6d0(++_0x3a907f);}(_0x7a38,0x173));var _0x87a3=function(_0x30f366,_0xa156ec){_0x30f366=_0x30f366-0x0;var _0x3b605c=_0x7a38[_0x30f366];return _0x3b605c;};'use strict';var _=require(_0x87a3('0x0'));var util=require(_0x87a3('0x1'));var logger=require(_0x87a3('0x2'))(_0x87a3('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x87a3('0x4'));var rimraf=require(_0x87a3('0x5'));var config=require(_0x87a3('0x6'));var attributes=require(_0x87a3('0x7'));module[_0x87a3('0x8')]=function(_0x15f204,_0x334acc){return _0x15f204[_0x87a3('0x9')]('VoiceMailMessage',attributes,{'tableName':_0x87a3('0xa'),'paranoid':![],'indexes':[{'name':_0x87a3('0xb'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
+var _0xd280=['rimraf','../../config/environment','exports','define','voice_voicemail_messages','dir','util','../../config/logger','api','bluebird','request-promise'];(function(_0x3dafa8,_0x9481fc){var _0x139451=function(_0x33570d){while(--_0x33570d){_0x3dafa8['push'](_0x3dafa8['shift']());}};_0x139451(++_0x9481fc);}(_0xd280,0x192));var _0x0d28=function(_0x37ec43,_0x9b3a5c){_0x37ec43=_0x37ec43-0x0;var _0x3869bb=_0xd280[_0x37ec43];return _0x3869bb;};'use strict';var _=require('lodash');var util=require(_0x0d28('0x0'));var logger=require(_0x0d28('0x1'))(_0x0d28('0x2'));var moment=require('moment');var BPromise=require(_0x0d28('0x3'));var rp=require(_0x0d28('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0d28('0x5'));var config=require(_0x0d28('0x6'));var attributes=require('./voiceMailMessage.attributes');module[_0x0d28('0x7')]=function(_0x25c69e,_0x597eba){return _0x25c69e[_0x0d28('0x8')]('VoiceMailMessage',attributes,{'tableName':_0x0d28('0x9'),'paranoid':![],'indexes':[{'name':_0x0d28('0xa'),'fields':[_0x0d28('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index 79134f1..b265276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39a6=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','debug','error','code','message','info','request\x20sent','result','catch','lodash','moment'];(function(_0x1cc1bc,_0x1067e6){var _0x1700aa=function(_0x2e761f){while(--_0x2e761f){_0x1cc1bc['push'](_0x1cc1bc['shift']());}};_0x1700aa(++_0x1067e6);}(_0x39a6,0x1a2));var _0x639a=function(_0x33b388,_0xb7b657){_0x33b388=_0x33b388-0x0;var _0x9f027b=_0x39a6[_0x33b388];return _0x9f027b;};'use strict';var _=require(_0x639a('0x0'));var util=require('util');var moment=require(_0x639a('0x1'));var BPromise=require(_0x639a('0x2'));var rs=require(_0x639a('0x3'));var fs=require('fs');var Redis=require(_0x639a('0x4'));var db=require(_0x639a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x639a('0x6'))(_0x639a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x639a('0x8')][_0x639a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x409ff8,_0x10a43f,_0x52d907){return new BPromise(function(_0xd1bdf4,_0x326ecd){return client[_0x639a('0xa')](_0x409ff8,_0x52d907)[_0x639a('0xb')](function(_0xd98ab4){logger['info'](_0x639a('0xc'),_0x10a43f,'request\x20sent');logger[_0x639a('0xd')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x10a43f,'request\x20sent',JSON['stringify'](_0xd98ab4));if(_0xd98ab4[_0x639a('0xe')]){if(_0xd98ab4[_0x639a('0xe')][_0x639a('0xf')]===0x1f4){logger[_0x639a('0xe')](_0x639a('0xc'),_0x10a43f,_0xd98ab4[_0x639a('0xe')][_0x639a('0x10')]);return _0x326ecd(_0xd98ab4[_0x639a('0xe')]['message']);}logger[_0x639a('0xe')](_0x639a('0xc'),_0x10a43f,_0xd98ab4[_0x639a('0xe')][_0x639a('0x10')]);return _0xd1bdf4(_0xd98ab4[_0x639a('0xe')]['message']);}else{logger[_0x639a('0x11')](_0x639a('0xc'),_0x10a43f,_0x639a('0x12'));_0xd1bdf4(_0xd98ab4[_0x639a('0x13')]['message']);}})[_0x639a('0x14')](function(_0x16a91f){logger['error'](_0x639a('0xc'),_0x10a43f,_0x16a91f);_0x326ecd(_0x16a91f);});});}
\ No newline at end of file
+var _0xc9b9=['debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s'];(function(_0x96e3d6,_0x17e350){var _0x407d8e=function(_0x17c7cc){while(--_0x17c7cc){_0x96e3d6['push'](_0x96e3d6['shift']());}};_0x407d8e(++_0x17e350);}(_0xc9b9,0x157));var _0x9c9b=function(_0x54b062,_0x264bb5){_0x54b062=_0x54b062-0x0;var _0x255e41=_0xc9b9[_0x54b062];return _0x255e41;};'use strict';var _=require(_0x9c9b('0x0'));var util=require(_0x9c9b('0x1'));var moment=require(_0x9c9b('0x2'));var BPromise=require(_0x9c9b('0x3'));var rs=require(_0x9c9b('0x4'));var fs=require('fs');var Redis=require(_0x9c9b('0x5'));var db=require(_0x9c9b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9c9b('0x7'))(_0x9c9b('0x8'));var config=require(_0x9c9b('0x9'));var jayson=require(_0x9c9b('0xa'));var client=jayson[_0x9c9b('0xb')][_0x9c9b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x28dcc4,_0xa4c1eb,_0x1ba467){return new BPromise(function(_0x3201e9,_0x2aec3c){return client[_0x9c9b('0xd')](_0x28dcc4,_0x1ba467)[_0x9c9b('0xe')](function(_0x4e290d){logger[_0x9c9b('0xf')](_0x9c9b('0x10'),_0xa4c1eb,'request\x20sent');logger[_0x9c9b('0x11')](_0x9c9b('0x12'),_0xa4c1eb,'request\x20sent',JSON['stringify'](_0x4e290d));if(_0x4e290d[_0x9c9b('0x13')]){if(_0x4e290d[_0x9c9b('0x13')][_0x9c9b('0x14')]===0x1f4){logger[_0x9c9b('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0xa4c1eb,_0x4e290d['error'][_0x9c9b('0x15')]);return _0x2aec3c(_0x4e290d['error'][_0x9c9b('0x15')]);}logger['error'](_0x9c9b('0x10'),_0xa4c1eb,_0x4e290d[_0x9c9b('0x13')][_0x9c9b('0x15')]);return _0x3201e9(_0x4e290d[_0x9c9b('0x13')][_0x9c9b('0x15')]);}else{logger['info'](_0x9c9b('0x10'),_0xa4c1eb,_0x9c9b('0x16'));_0x3201e9(_0x4e290d['result'][_0x9c9b('0x15')]);}})[_0x9c9b('0x17')](function(_0x146367){logger[_0x9c9b('0x13')](_0x9c9b('0x10'),_0xa4c1eb,_0x146367);_0x2aec3c(_0x146367);});});}
\ No newline at end of file
index 0ca18e5..fa0c19e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1c9=['../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sounds','post','create','addSound','put','delete','removeSound','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x15db63,_0x250e81){var _0xea3986=function(_0x538707){while(--_0x538707){_0x15db63['push'](_0x15db63['shift']());}};_0xea3986(++_0x250e81);}(_0xa1c9,0x142));var _0x9a1c=function(_0x28c752,_0x238454){_0x28c752=_0x28c752-0x0;var _0x30cd6c=_0xa1c9[_0x28c752];return _0x30cd6c;};'use strict';var multer=require('multer');var util=require(_0x9a1c('0x0'));var path=require(_0x9a1c('0x1'));var timeout=require(_0x9a1c('0x2'));var express=require(_0x9a1c('0x3'));var router=express[_0x9a1c('0x4')]();var fs_extra=require(_0x9a1c('0x5'));var auth=require(_0x9a1c('0x6'));var interaction=require(_0x9a1c('0x7'));var config=require(_0x9a1c('0x8'));var controller=require('./voiceMusicOnHold.controller');router[_0x9a1c('0x9')]('/',auth[_0x9a1c('0xa')](),controller[_0x9a1c('0xb')]);router[_0x9a1c('0x9')](_0x9a1c('0xc'),auth[_0x9a1c('0xa')](),controller[_0x9a1c('0xd')]);router[_0x9a1c('0x9')](_0x9a1c('0xe'),auth[_0x9a1c('0xa')](),controller['getSounds']);router[_0x9a1c('0xf')]('/',auth[_0x9a1c('0xa')](),controller[_0x9a1c('0x10')]);router['post'](_0x9a1c('0xe'),auth[_0x9a1c('0xa')](),controller[_0x9a1c('0x11')]);router[_0x9a1c('0x12')](_0x9a1c('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9a1c('0x13')](_0x9a1c('0xc'),auth[_0x9a1c('0xa')](),controller['destroy']);router[_0x9a1c('0x13')]('/:id/sounds/:id2',auth[_0x9a1c('0xa')](),controller[_0x9a1c('0x14')]);module[_0x9a1c('0x15')]=router;
\ No newline at end of file
+var _0x197a=['post','addSound','put','update','destroy','delete','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./voiceMusicOnHold.controller','index','/:id','show','get','/:id/sounds','isAuthenticated','getSounds'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0x197a,0x1a7));var _0xa197=function(_0x19a2eb,_0x2df439){_0x19a2eb=_0x19a2eb-0x0;var _0x3c8514=_0x197a[_0x19a2eb];return _0x3c8514;};'use strict';var multer=require(_0xa197('0x0'));var util=require(_0xa197('0x1'));var path=require(_0xa197('0x2'));var timeout=require(_0xa197('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa197('0x4'));var interaction=require(_0xa197('0x5'));var config=require('../../config/environment');var controller=require(_0xa197('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xa197('0x7')]);router['get'](_0xa197('0x8'),auth['isAuthenticated'](),controller[_0xa197('0x9')]);router[_0xa197('0xa')](_0xa197('0xb'),auth[_0xa197('0xc')](),controller[_0xa197('0xd')]);router[_0xa197('0xe')]('/',auth[_0xa197('0xc')](),controller['create']);router['post'](_0xa197('0xb'),auth[_0xa197('0xc')](),controller[_0xa197('0xf')]);router[_0xa197('0x10')](_0xa197('0x8'),auth[_0xa197('0xc')](),controller[_0xa197('0x11')]);router['delete'](_0xa197('0x8'),auth[_0xa197('0xc')](),controller[_0xa197('0x12')]);router[_0xa197('0x13')](_0xa197('0x14'),auth[_0xa197('0xc')](),controller[_0xa197('0x15')]);module[_0xa197('0x16')]=router;
\ No newline at end of file
index c109c09..89e7bda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a1=['STRING','TIMESTAMP','BOOLEAN','sequelize','exports','name','custom','files','mp3nb','quietmp3nb','quietmp3','mp3'];(function(_0x5525dd,_0x102198){var _0x2ed0b9=function(_0x317059){while(--_0x317059){_0x5525dd['push'](_0x5525dd['shift']());}};_0x2ed0b9(++_0x102198);}(_0x79a1,0x18f));var _0x179a=function(_0x5bf4f0,_0x305f5f){_0x5bf4f0=_0x5bf4f0-0x0;var _0x9b958e=_0x79a1[_0x5bf4f0];return _0x9b958e;};'use strict';var Sequelize=require(_0x179a('0x0'));module[_0x179a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x179a('0x2')},'mode':{'type':Sequelize['ENUM'](_0x179a('0x3'),_0x179a('0x4'),_0x179a('0x5'),_0x179a('0x6'),_0x179a('0x7'),_0x179a('0x8')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'digit':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'stamp':{'type':_0x179a('0xa')},'defaultEntry':{'type':Sequelize[_0x179a('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1426=['TIMESTAMP','BOOLEAN','sequelize','exports','STRING','ENUM','custom','files','quietmp3nb','quietmp3','mp3'];(function(_0x4b43d5,_0x3836ef){var _0x4098c8=function(_0x58b6a2){while(--_0x58b6a2){_0x4b43d5['push'](_0x4b43d5['shift']());}};_0x4098c8(++_0x3836ef);}(_0x1426,0x12b));var _0x6142=function(_0x418fd4,_0x23bf0e){_0x418fd4=_0x418fd4-0x0;var _0x18dbc4=_0x1426[_0x418fd4];return _0x18dbc4;};'use strict';var Sequelize=require(_0x6142('0x0'));module[_0x6142('0x1')]={'name':{'type':Sequelize[_0x6142('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x6142('0x3')](_0x6142('0x4'),_0x6142('0x5'),'mp3nb',_0x6142('0x6'),_0x6142('0x7'),_0x6142('0x8')),'allowNull':!![],'defaultValue':_0x6142('0x5')},'directory':{'type':Sequelize[_0x6142('0x2')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0x6142('0x2')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x6142('0x2')],'allowNull':!![]},'stamp':{'type':_0x6142('0x9')},'defaultEntry':{'type':Sequelize[_0x6142('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 352196d..010afbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd49=['autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','readdirSync','forEach','rmdirSync','ValidationError','message','addSound','findOne','createdAt','format','%s.%s','basename','save_name','extname','converted_format','symlinkSync','Sequelize','removeSound','id2','Sound','unlinkSync','getSounds','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','get','MusicOnHolds','UserProfileResource','then','sendStatus','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find','body','params','create','sequelize','mode','files','directory','join','root','server/files/moh','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x3355cc,_0x52192f){var _0x4aa227=function(_0x29225b){while(--_0x29225b){_0x3355cc['push'](_0x3355cc['shift']());}};_0x4aa227(++_0x52192f);}(_0xcd49,0x105));var _0x9cd4=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0xcd49[_0x4a7631];return _0x1a5a6f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9cd4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9cd4('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x9cd4('0x2'));var util=require(_0x9cd4('0x3'));var path=require(_0x9cd4('0x4'));var sox=require(_0x9cd4('0x5'));var csv=require(_0x9cd4('0x6'));var ejs=require(_0x9cd4('0x7'));var fs=require('fs');var fs_extra=require(_0x9cd4('0x8'));var _=require(_0x9cd4('0x9'));var squel=require(_0x9cd4('0xa'));var crypto=require(_0x9cd4('0xb'));var jsforce=require(_0x9cd4('0xc'));var deskjs=require(_0x9cd4('0xd'));var toCsv=require(_0x9cd4('0x6'));var querystring=require('querystring');var Papa=require(_0x9cd4('0xe'));var Redis=require(_0x9cd4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9cd4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9cd4('0x11'));var logger=require(_0x9cd4('0x12'))(_0x9cd4('0x13'));var utils=require('../../config/utils');var config=require(_0x9cd4('0x14'));var licenseUtil=require(_0x9cd4('0x15'));var db=require(_0x9cd4('0x16'))['db'];function respondWithStatusCode(_0x171e51,_0x40b515){_0x40b515=_0x40b515||0xcc;return function(_0x1b3dd1){if(_0x1b3dd1){return _0x171e51['sendStatus'](_0x40b515);}return _0x171e51[_0x9cd4('0x17')](_0x40b515)[_0x9cd4('0x18')]();};}function respondWithResult(_0x21c9d7,_0x1a0985){_0x1a0985=_0x1a0985||0xc8;return function(_0x3c0b00){if(_0x3c0b00){return _0x21c9d7[_0x9cd4('0x17')](_0x1a0985)[_0x9cd4('0x19')](_0x3c0b00);}};}function respondWithFilteredResult(_0x313354,_0x3d0ddb){return function(_0x333be0){if(_0x333be0){var _0x59b9d5=typeof _0x3d0ddb['offset']===_0x9cd4('0x1a')&&typeof _0x3d0ddb['limit']===_0x9cd4('0x1a');var _0x48daaa=_0x333be0[_0x9cd4('0x1b')];var _0x3668cd=_0x59b9d5?0x0:_0x3d0ddb['offset'];var _0x3182f9=_0x59b9d5?_0x333be0['count']:_0x3d0ddb[_0x9cd4('0x1c')]+_0x3d0ddb[_0x9cd4('0x1d')];var _0x102bb2;if(_0x3182f9>=_0x48daaa){_0x3182f9=_0x48daaa;_0x102bb2=0xc8;}else{_0x102bb2=0xce;}_0x313354[_0x9cd4('0x17')](_0x102bb2);return _0x313354[_0x9cd4('0x1e')](_0x9cd4('0x1f'),_0x3668cd+'-'+_0x3182f9+'/'+_0x48daaa)[_0x9cd4('0x19')](_0x333be0);}return null;};}function patchUpdates(_0x142fc6){return function(_0x5d9357){try{jsonpatch[_0x9cd4('0x20')](_0x5d9357,_0x142fc6,!![]);}catch(_0x4383cd){return BPromise[_0x9cd4('0x21')](_0x4383cd);}return _0x5d9357['save']();};}function saveUpdates(_0x405ae0,_0x6d4f15){return function(_0x341765){if(_0x341765){return _0x341765[_0x9cd4('0x22')](_0x405ae0)['then'](function(_0x1a86c7){return _0x1a86c7;});}return null;};}function removeEntity(_0x5536b1,_0x213bda){return function(_0x598029){if(_0x598029){return _0x598029[_0x9cd4('0x23')]()['then'](function(){var _0x2d910a=_0x598029[_0x9cd4('0x24')]({'plain':!![]});var _0x15a794=_0x9cd4('0x25');return db[_0x9cd4('0x26')]['destroy']({'where':{'type':_0x15a794,'resourceId':_0x2d910a['id']}})[_0x9cd4('0x27')](function(){return _0x598029;});})[_0x9cd4('0x27')](function(){_0x5536b1[_0x9cd4('0x17')](0xcc)[_0x9cd4('0x18')]();});}};}function handleEntityNotFound(_0x529c38,_0x35ffc1){return function(_0x3966d6){if(!_0x3966d6){_0x529c38[_0x9cd4('0x28')](0x194);}return _0x3966d6;};}function handleError(_0x188002,_0x3e3cd1){_0x3e3cd1=_0x3e3cd1||0x1f4;return function(_0x21c7a6){logger['error'](_0x21c7a6[_0x9cd4('0x29')]);if(_0x21c7a6[_0x9cd4('0x2a')]){delete _0x21c7a6['name'];}_0x188002[_0x9cd4('0x17')](_0x3e3cd1)[_0x9cd4('0x2b')](_0x21c7a6);};}exports[_0x9cd4('0x2c')]=function(_0x5e535f,_0x576c2d){var _0x527e32={},_0x48eea2={},_0x3df714={'count':0x0,'rows':[]};var _0x48a330=_[_0x9cd4('0x2d')](db[_0x9cd4('0x2e')][_0x9cd4('0x2f')],function(_0x43ece3){return{'name':_0x43ece3[_0x9cd4('0x30')],'type':_0x43ece3[_0x9cd4('0x31')][_0x9cd4('0x32')]};});_0x48eea2[_0x9cd4('0x33')]=_[_0x9cd4('0x2d')](_0x48a330,'name');_0x48eea2[_0x9cd4('0x34')]=_[_0x9cd4('0x35')](_0x5e535f[_0x9cd4('0x34')]);_0x48eea2['filters']=_['intersection'](_0x48eea2['model'],_0x48eea2[_0x9cd4('0x34')]);_0x527e32['attributes']=_[_0x9cd4('0x36')](_0x48eea2[_0x9cd4('0x33')],qs[_0x9cd4('0x37')](_0x5e535f[_0x9cd4('0x34')]['fields']));_0x527e32['attributes']=_0x527e32[_0x9cd4('0x38')]['length']?_0x527e32[_0x9cd4('0x38')]:_0x48eea2[_0x9cd4('0x33')];if(!_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x39')](_0x9cd4('0x3a'))){_0x527e32['limit']=qs[_0x9cd4('0x1d')](_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x1d')]);_0x527e32[_0x9cd4('0x1c')]=qs[_0x9cd4('0x1c')](_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x1c')]);}_0x527e32[_0x9cd4('0x3b')]=qs[_0x9cd4('0x3c')](_0x5e535f['query'][_0x9cd4('0x3c')]);delete _0x5e535f['query']['sort'];_0x527e32[_0x9cd4('0x3d')]=qs[_0x9cd4('0x3e')](_[_0x9cd4('0x3f')](_0x5e535f[_0x9cd4('0x34')],_0x48eea2[_0x9cd4('0x3e')]),_0x48a330);if(_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x40')]){_0x527e32[_0x9cd4('0x3d')]=_[_0x9cd4('0x41')](_0x527e32['where'],{'$or':_[_0x9cd4('0x2d')](_0x48a330,function(_0x2f90f9){if(_0x2f90f9[_0x9cd4('0x31')]!==_0x9cd4('0x42')){var _0x1e011a={};_0x1e011a[_0x2f90f9[_0x9cd4('0x2a')]]={'$like':'%'+_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x40')]+'%'};return _0x1e011a;}})});}_0x527e32=_['merge']({},_0x527e32,_0x5e535f[_0x9cd4('0x43')]);var _0x319d2a={'where':_0x527e32[_0x9cd4('0x3d')]};return db[_0x9cd4('0x2e')]['count'](_0x319d2a)[_0x9cd4('0x27')](function(_0x480772){_0x3df714['count']=_0x480772;if(_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x44')]){_0x527e32[_0x9cd4('0x45')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x9cd4('0x46')](_0x527e32);})[_0x9cd4('0x27')](function(_0x5975b5){_0x3df714[_0x9cd4('0x47')]=_0x5975b5;return _0x3df714;})[_0x9cd4('0x27')](respondWithFilteredResult(_0x576c2d,_0x527e32))[_0x9cd4('0x48')](handleError(_0x576c2d,null));};exports[_0x9cd4('0x49')]=function(_0x516cf1,_0x19ef00){var _0x2407e1={'raw':![],'where':{'id':_0x516cf1['params']['id']}},_0x4804df={};_0x4804df[_0x9cd4('0x33')]=_[_0x9cd4('0x35')](db[_0x9cd4('0x2e')][_0x9cd4('0x2f')]);_0x4804df[_0x9cd4('0x34')]=_[_0x9cd4('0x35')](_0x516cf1[_0x9cd4('0x34')]);_0x4804df[_0x9cd4('0x3e')]=_[_0x9cd4('0x36')](_0x4804df[_0x9cd4('0x33')],_0x4804df[_0x9cd4('0x34')]);_0x2407e1[_0x9cd4('0x38')]=_[_0x9cd4('0x36')](_0x4804df['model'],qs[_0x9cd4('0x37')](_0x516cf1[_0x9cd4('0x34')][_0x9cd4('0x37')]));_0x2407e1[_0x9cd4('0x38')]=_0x2407e1[_0x9cd4('0x38')][_0x9cd4('0x4a')]?_0x2407e1['attributes']:_0x4804df[_0x9cd4('0x33')];if(_0x516cf1[_0x9cd4('0x34')][_0x9cd4('0x44')]){_0x2407e1[_0x9cd4('0x45')]=[{'all':!![]}];}_0x2407e1=_[_0x9cd4('0x41')]({},_0x2407e1,_0x516cf1[_0x9cd4('0x43')]);return db[_0x9cd4('0x2e')][_0x9cd4('0x4b')](_0x2407e1)[_0x9cd4('0x27')](handleEntityNotFound(_0x19ef00,null))[_0x9cd4('0x27')](respondWithResult(_0x19ef00,null))[_0x9cd4('0x48')](handleError(_0x19ef00,null));};exports[_0x9cd4('0x22')]=function(_0x3b247d,_0x504a89){if(_0x3b247d[_0x9cd4('0x4c')]['id']){delete _0x3b247d[_0x9cd4('0x4c')]['id'];}return db['VoiceMusicOnHold']['find']({'where':{'id':_0x3b247d[_0x9cd4('0x4d')]['id']}})[_0x9cd4('0x27')](handleEntityNotFound(_0x504a89,null))['then'](saveUpdates(_0x3b247d[_0x9cd4('0x4c')],null))[_0x9cd4('0x27')](respondWithResult(_0x504a89,null))[_0x9cd4('0x48')](handleError(_0x504a89,null));};exports[_0x9cd4('0x4e')]=function(_0x2d1dd0,_0x1c7d46,_0x4b32ed){return db[_0x9cd4('0x4f')]['transaction'](function(_0x428880){if(_0x2d1dd0['body'][_0x9cd4('0x50')]===_0x9cd4('0x51')){_0x2d1dd0['body'][_0x9cd4('0x52')]=path[_0x9cd4('0x53')](config[_0x9cd4('0x54')],_0x9cd4('0x55'),_0x2d1dd0['body'][_0x9cd4('0x2a')]);}return db[_0x9cd4('0x2e')][_0x9cd4('0x4e')](_0x2d1dd0[_0x9cd4('0x4c')],{'transaction':_0x428880})['then'](function(_0x669c3){if(_0x2d1dd0[_0x9cd4('0x4c')]['mode']==='files'){fs[_0x9cd4('0x56')](_0x669c3['directory'],parseInt(_0x9cd4('0x57'),0x8));}var _0x334e43=_0x2d1dd0[_0x9cd4('0x58')][_0x9cd4('0x24')]({'plain':!![]});if(!_0x334e43)throw new Error(_0x9cd4('0x59'));if(_0x334e43[_0x9cd4('0x5a')]===_0x9cd4('0x58')){var _0x17fcad=_0x669c3[_0x9cd4('0x24')]({'plain':!![]});return db[_0x9cd4('0x5b')][_0x9cd4('0x4b')]({'where':{'name':'MusicOnHolds','userProfileId':_0x334e43[_0x9cd4('0x5c')]},'raw':!![]})[_0x9cd4('0x27')](function(_0x4d20f6){if(_0x4d20f6&&_0x4d20f6[_0x9cd4('0x5d')]===0x0){return db[_0x9cd4('0x26')][_0x9cd4('0x4e')]({'name':_0x17fcad[_0x9cd4('0x2a')],'resourceId':_0x17fcad['id'],'type':_0x4d20f6['name'],'sectionId':_0x4d20f6['id']},{})['then'](function(){return _0x669c3;});}else{return _0x669c3;}})[_0x9cd4('0x48')](function(_0x5e22c8){logger[_0x9cd4('0x5e')](_0x9cd4('0x5f'),_0x5e22c8);});}return _0x669c3;});})[_0x9cd4('0x27')](respondWithResult(_0x1c7d46,0xc9))['catch'](handleError(_0x1c7d46,null));};exports[_0x9cd4('0x23')]=function(_0x1c9700,_0x4d16a0,_0x48ef32){var _0x1a80ca;return db['VoiceMusicOnHold'][_0x9cd4('0x4b')]({'where':{'id':_0x1c9700[_0x9cd4('0x4d')]['id']}})[_0x9cd4('0x27')](function(_0x432822){if(_0x432822){return db['sequelize'][_0x9cd4('0x60')](function(_0x1690a0){return _0x432822[_0x9cd4('0x23')]({'transaction':_0x1690a0,'raw':!![]})[_0x9cd4('0x27')](function(_0x46a0f9){if(_0x46a0f9[_0x9cd4('0x52')]){fs[_0x9cd4('0x61')](_0x46a0f9[_0x9cd4('0x52')])[_0x9cd4('0x62')](function(_0x1b1c4b){fs['unlinkSync'](path[_0x9cd4('0x53')](_0x46a0f9['directory'],_0x1b1c4b));});fs[_0x9cd4('0x63')](_0x46a0f9['directory']);}return _0x46a0f9;});})[_0x9cd4('0x48')](function(_0x490d61){throw new db['Sequelize'][(_0x9cd4('0x64'))](_0x490d61[_0x9cd4('0x65')]);});}})['then'](handleEntityNotFound(_0x4d16a0,null))[_0x9cd4('0x27')](removeEntity(_0x4d16a0,null))['catch'](handleError(_0x4d16a0,null));};exports[_0x9cd4('0x66')]=function(_0x220975,_0x9c854e,_0x1df279){return db[_0x9cd4('0x4f')][_0x9cd4('0x60')](function(_0x18f69f){var _0x5cbaa2;return db[_0x9cd4('0x2e')][_0x9cd4('0x4b')]({'where':{'id':_0x220975['params']['id']}})['then'](function(_0x43338f){if(_0x43338f){_0x5cbaa2=_0x43338f;return _0x43338f[_0x9cd4('0x66')](_0x220975['body']['id'],{'transaction':_0x18f69f});}})[_0x9cd4('0x27')](function(_0x4cca9a){if(_0x4cca9a){return db['Sound'][_0x9cd4('0x67')]({'where':{'id':_0x220975[_0x9cd4('0x4c')]['id']},'attributes':['id',_0x9cd4('0x2a'),'save_name','converted_format',_0x9cd4('0x68')],'raw':!![]});}})['then'](function(_0x211ec2){if(_0x211ec2){var _0x358a5d=path[_0x9cd4('0x53')](config[_0x9cd4('0x54')],'server/files/sounds/converted',util[_0x9cd4('0x69')](_0x9cd4('0x6a'),path[_0x9cd4('0x6b')](_0x211ec2[_0x9cd4('0x6c')],path[_0x9cd4('0x6d')](_0x211ec2[_0x9cd4('0x6c')])),_0x211ec2[_0x9cd4('0x6e')]));var _0x2917e4=path[_0x9cd4('0x53')](config[_0x9cd4('0x54')],_0x9cd4('0x55'),_0x5cbaa2[_0x9cd4('0x2a')],util[_0x9cd4('0x69')](_0x9cd4('0x6a'),_0x211ec2[_0x9cd4('0x2a')],_0x211ec2['converted_format']));fs[_0x9cd4('0x6f')](_0x358a5d,_0x2917e4);return _0x211ec2;}})[_0x9cd4('0x48')](function(_0x51422d){throw new db[(_0x9cd4('0x70'))][(_0x9cd4('0x64'))](_0x51422d['message']);});})[_0x9cd4('0x27')](handleEntityNotFound(_0x9c854e,null))[_0x9cd4('0x27')](respondWithResult(_0x9c854e,0xc9))['catch'](handleError(_0x9c854e,null));};exports['removeSound']=function(_0x1dee39,_0x2001e2,_0x3aa180){return db[_0x9cd4('0x4f')][_0x9cd4('0x60')](function(_0x37dc6e){var _0x511bcc;return db[_0x9cd4('0x2e')][_0x9cd4('0x67')]({'where':{'id':_0x1dee39[_0x9cd4('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2001e2,null))[_0x9cd4('0x27')](function(_0x20af6b){if(_0x20af6b){_0x511bcc=_0x20af6b;return _0x20af6b[_0x9cd4('0x71')](_0x1dee39[_0x9cd4('0x4d')][_0x9cd4('0x72')]);}})[_0x9cd4('0x27')](function(_0x36301c){if(_0x36301c){return db[_0x9cd4('0x73')]['findOne']({'where':{'id':_0x1dee39[_0x9cd4('0x4d')]['id2']},'attributes':['id','name','save_name',_0x9cd4('0x6e'),_0x9cd4('0x68')],'raw':!![]});}})[_0x9cd4('0x27')](function(_0x2493fa){if(_0x2493fa){fs[_0x9cd4('0x74')](path[_0x9cd4('0x53')](_0x511bcc['directory'],util[_0x9cd4('0x69')]('%s.%s',_0x2493fa[_0x9cd4('0x2a')],_0x2493fa[_0x9cd4('0x6e')])));return _0x2493fa;}})['catch'](function(_0x4aa423){throw new db[(_0x9cd4('0x70'))][(_0x9cd4('0x64'))](_0x4aa423[_0x9cd4('0x65')]);});})[_0x9cd4('0x27')](handleEntityNotFound(_0x2001e2,null))['then'](respondWithStatusCode(_0x2001e2,0xcc))[_0x9cd4('0x48')](handleError(_0x2001e2,null));};exports[_0x9cd4('0x75')]=function(_0x7eb6ef,_0x8fdb28,_0x25726e){var _0xd6e8d4={};var _0x584518={};var _0xbafe7c;var _0x26ceaf;return db[_0x9cd4('0x2e')]['findOne']({'where':{'id':_0x7eb6ef[_0x9cd4('0x4d')]['id']}})[_0x9cd4('0x27')](handleEntityNotFound(_0x8fdb28,null))[_0x9cd4('0x27')](function(_0x201016){if(_0x201016){_0xbafe7c=_0x201016;_0x584518[_0x9cd4('0x33')]=_[_0x9cd4('0x35')](db[_0x9cd4('0x73')]['rawAttributes']);_0x584518[_0x9cd4('0x34')]=_['keys'](_0x7eb6ef[_0x9cd4('0x34')]);_0x584518[_0x9cd4('0x3e')]=_[_0x9cd4('0x36')](_0x584518[_0x9cd4('0x33')],_0x584518[_0x9cd4('0x34')]);_0xd6e8d4[_0x9cd4('0x38')]=_[_0x9cd4('0x36')](_0x584518[_0x9cd4('0x33')],qs['fields'](_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x37')]));_0xd6e8d4[_0x9cd4('0x38')]=_0xd6e8d4['attributes'][_0x9cd4('0x4a')]?_0xd6e8d4[_0x9cd4('0x38')]:_0x584518[_0x9cd4('0x33')];_0xd6e8d4['order']=qs[_0x9cd4('0x3c')](_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x3c')]);_0xd6e8d4[_0x9cd4('0x3d')]=qs[_0x9cd4('0x3e')](_[_0x9cd4('0x3f')](_0x7eb6ef[_0x9cd4('0x34')],_0x584518[_0x9cd4('0x3e')]));if(_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x40')]){_0xd6e8d4['where']=_[_0x9cd4('0x41')](_0xd6e8d4[_0x9cd4('0x3d')],{'$or':_[_0x9cd4('0x2d')](_0xd6e8d4[_0x9cd4('0x38')],function(_0x2d6bb8){var _0x53aa9d={};_0x53aa9d[_0x2d6bb8]={'$like':'%'+_0x7eb6ef[_0x9cd4('0x34')]['filter']+'%'};return _0x53aa9d;})});}_0xd6e8d4=_['merge']({},_0xd6e8d4,_0x7eb6ef[_0x9cd4('0x43')]);return _0xbafe7c[_0x9cd4('0x75')](_0xd6e8d4);}})[_0x9cd4('0x27')](function(_0x2eb704){if(_0x2eb704){_0x26ceaf=_0x2eb704['length'];if(!_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x39')](_0x9cd4('0x3a'))){_0xd6e8d4[_0x9cd4('0x1d')]=qs['limit'](_0x7eb6ef['query'][_0x9cd4('0x1d')]);_0xd6e8d4['offset']=qs['offset'](_0x7eb6ef['query'][_0x9cd4('0x1c')]);}return _0xbafe7c[_0x9cd4('0x75')](_0xd6e8d4);}})[_0x9cd4('0x27')](function(_0x33096c){if(_0x33096c){return _0x33096c?{'count':_0x26ceaf,'rows':_0x33096c}:null;}})[_0x9cd4('0x27')](respondWithResult(_0x8fdb28,null))[_0x9cd4('0x48')](handleError(_0x8fdb28,null));};
\ No newline at end of file
+var _0x032c=['mkdirSync','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','unlinkSync','rmdirSync','Sequelize','message','addSound','Sound','findOne','converted_format','createdAt','root','format','basename','save_name','extname','join','symlinkSync','ValidationError','removeSound','id2','%s.%s','getSounds','order','eml-format','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','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','json','offset','limit','undefined','status','apply','reject','save','update','destroy','then','MusicOnHolds','UserProfileResource','error','stack','name','send','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','intersection','length','find','params','sequelize','transaction','body','mode','files','directory','server/files/moh'];(function(_0x5f2478,_0x252392){var _0x1d0566=function(_0x3518de){while(--_0x3518de){_0x5f2478['push'](_0x5f2478['shift']());}};_0x1d0566(++_0x252392);}(_0x032c,0x17b));var _0xc032=function(_0x357bea,_0x29df38){_0x357bea=_0x357bea-0x0;var _0x1bf63b=_0x032c[_0x357bea];return _0x1bf63b;};'use strict';var emlformat=require(_0xc032('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc032('0x1'));var jsonpatch=require(_0xc032('0x2'));var rp=require(_0xc032('0x3'));var moment=require(_0xc032('0x4'));var BPromise=require(_0xc032('0x5'));var Mustache=require(_0xc032('0x6'));var util=require(_0xc032('0x7'));var path=require(_0xc032('0x8'));var sox=require(_0xc032('0x9'));var csv=require('to-csv');var ejs=require(_0xc032('0xa'));var fs=require('fs');var fs_extra=require(_0xc032('0xb'));var _=require(_0xc032('0xc'));var squel=require('squel');var crypto=require(_0xc032('0xd'));var jsforce=require(_0xc032('0xe'));var deskjs=require(_0xc032('0xf'));var toCsv=require(_0xc032('0x10'));var querystring=require(_0xc032('0x11'));var Papa=require(_0xc032('0x12'));var Redis=require(_0xc032('0x13'));var authService=require(_0xc032('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc032('0x15'));var logger=require('../../config/logger')(_0xc032('0x16'));var utils=require(_0xc032('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xc032('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f6327,_0x2ff710){_0x2ff710=_0x2ff710||0xcc;return function(_0x38ce19){if(_0x38ce19){return _0x2f6327[_0xc032('0x19')](_0x2ff710);}return _0x2f6327['status'](_0x2ff710)['end']();};}function respondWithResult(_0x5e73e5,_0x169b95){_0x169b95=_0x169b95||0xc8;return function(_0x257cdd){if(_0x257cdd){return _0x5e73e5['status'](_0x169b95)[_0xc032('0x1a')](_0x257cdd);}};}function respondWithFilteredResult(_0x47b0de,_0x4f834e){return function(_0x105732){if(_0x105732){var _0x258ba8=typeof _0x4f834e[_0xc032('0x1b')]==='undefined'&&typeof _0x4f834e[_0xc032('0x1c')]===_0xc032('0x1d');var _0x3acda9=_0x105732['count'];var _0x57ee7b=_0x258ba8?0x0:_0x4f834e[_0xc032('0x1b')];var _0x530d1d=_0x258ba8?_0x105732['count']:_0x4f834e[_0xc032('0x1b')]+_0x4f834e['limit'];var _0x2fbb64;if(_0x530d1d>=_0x3acda9){_0x530d1d=_0x3acda9;_0x2fbb64=0xc8;}else{_0x2fbb64=0xce;}_0x47b0de[_0xc032('0x1e')](_0x2fbb64);return _0x47b0de['set']('Content-Range',_0x57ee7b+'-'+_0x530d1d+'/'+_0x3acda9)[_0xc032('0x1a')](_0x105732);}return null;};}function patchUpdates(_0x12221f){return function(_0x1548b8){try{jsonpatch[_0xc032('0x1f')](_0x1548b8,_0x12221f,!![]);}catch(_0x23afe0){return BPromise[_0xc032('0x20')](_0x23afe0);}return _0x1548b8[_0xc032('0x21')]();};}function saveUpdates(_0x96a488,_0x429d6e){return function(_0x55501a){if(_0x55501a){return _0x55501a[_0xc032('0x22')](_0x96a488)['then'](function(_0x25ea4e){return _0x25ea4e;});}return null;};}function removeEntity(_0x1daada,_0x25c1c0){return function(_0xc3782c){if(_0xc3782c){return _0xc3782c[_0xc032('0x23')]()[_0xc032('0x24')](function(){var _0x445e64=_0xc3782c['get']({'plain':!![]});var _0x27b87e=_0xc032('0x25');return db[_0xc032('0x26')][_0xc032('0x23')]({'where':{'type':_0x27b87e,'resourceId':_0x445e64['id']}})[_0xc032('0x24')](function(){return _0xc3782c;});})[_0xc032('0x24')](function(){_0x1daada[_0xc032('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38f92f,_0x521afd){return function(_0x17e0e3){if(!_0x17e0e3){_0x38f92f[_0xc032('0x19')](0x194);}return _0x17e0e3;};}function handleError(_0x79a316,_0x198020){_0x198020=_0x198020||0x1f4;return function(_0x4531a3){logger[_0xc032('0x27')](_0x4531a3[_0xc032('0x28')]);if(_0x4531a3[_0xc032('0x29')]){delete _0x4531a3['name'];}_0x79a316[_0xc032('0x1e')](_0x198020)[_0xc032('0x2a')](_0x4531a3);};}exports['index']=function(_0x5b144b,_0x56a670){var _0x456aa8={},_0x1c8828={},_0x1bcdea={'count':0x0,'rows':[]};var _0x4936f3=_[_0xc032('0x2b')](db[_0xc032('0x2c')][_0xc032('0x2d')],function(_0x5bd8e0){return{'name':_0x5bd8e0[_0xc032('0x2e')],'type':_0x5bd8e0[_0xc032('0x2f')][_0xc032('0x30')]};});_0x1c8828[_0xc032('0x31')]=_[_0xc032('0x2b')](_0x4936f3,'name');_0x1c8828[_0xc032('0x32')]=_[_0xc032('0x33')](_0x5b144b[_0xc032('0x32')]);_0x1c8828[_0xc032('0x34')]=_['intersection'](_0x1c8828[_0xc032('0x31')],_0x1c8828['query']);_0x456aa8[_0xc032('0x35')]=_['intersection'](_0x1c8828[_0xc032('0x31')],qs[_0xc032('0x36')](_0x5b144b[_0xc032('0x32')]['fields']));_0x456aa8['attributes']=_0x456aa8[_0xc032('0x35')]['length']?_0x456aa8[_0xc032('0x35')]:_0x1c8828[_0xc032('0x31')];if(!_0x5b144b[_0xc032('0x32')][_0xc032('0x37')](_0xc032('0x38'))){_0x456aa8[_0xc032('0x1c')]=qs[_0xc032('0x1c')](_0x5b144b[_0xc032('0x32')][_0xc032('0x1c')]);_0x456aa8['offset']=qs[_0xc032('0x1b')](_0x5b144b[_0xc032('0x32')][_0xc032('0x1b')]);}_0x456aa8['order']=qs[_0xc032('0x39')](_0x5b144b[_0xc032('0x32')][_0xc032('0x39')]);delete _0x5b144b[_0xc032('0x32')][_0xc032('0x39')];_0x456aa8[_0xc032('0x3a')]=qs[_0xc032('0x34')](_[_0xc032('0x3b')](_0x5b144b['query'],_0x1c8828[_0xc032('0x34')]),_0x4936f3);if(_0x5b144b[_0xc032('0x32')][_0xc032('0x3c')]){_0x456aa8[_0xc032('0x3a')]=_[_0xc032('0x3d')](_0x456aa8['where'],{'$or':_[_0xc032('0x2b')](_0x4936f3,function(_0x3bd193){if(_0x3bd193[_0xc032('0x2f')]!==_0xc032('0x3e')){var _0x39ed9b={};_0x39ed9b[_0x3bd193[_0xc032('0x29')]]={'$like':'%'+_0x5b144b[_0xc032('0x32')][_0xc032('0x3c')]+'%'};return _0x39ed9b;}})});}_0x456aa8=_[_0xc032('0x3d')]({},_0x456aa8,_0x5b144b[_0xc032('0x3f')]);var _0xa2f0b0={'where':_0x456aa8[_0xc032('0x3a')]};return db[_0xc032('0x2c')][_0xc032('0x40')](_0xa2f0b0)[_0xc032('0x24')](function(_0x82bd95){_0x1bcdea[_0xc032('0x40')]=_0x82bd95;if(_0x5b144b[_0xc032('0x32')][_0xc032('0x41')]){_0x456aa8[_0xc032('0x42')]=[{'all':!![]}];}return db[_0xc032('0x2c')]['findAll'](_0x456aa8);})[_0xc032('0x24')](function(_0x3c8d00){_0x1bcdea[_0xc032('0x43')]=_0x3c8d00;return _0x1bcdea;})[_0xc032('0x24')](respondWithFilteredResult(_0x56a670,_0x456aa8))[_0xc032('0x44')](handleError(_0x56a670,null));};exports[_0xc032('0x45')]=function(_0x2da247,_0x1d6c47){var _0x344ce1={'raw':![],'where':{'id':_0x2da247['params']['id']}},_0x482180={};_0x482180['model']=_['keys'](db[_0xc032('0x2c')][_0xc032('0x2d')]);_0x482180[_0xc032('0x32')]=_['keys'](_0x2da247['query']);_0x482180[_0xc032('0x34')]=_[_0xc032('0x46')](_0x482180[_0xc032('0x31')],_0x482180[_0xc032('0x32')]);_0x344ce1['attributes']=_[_0xc032('0x46')](_0x482180[_0xc032('0x31')],qs[_0xc032('0x36')](_0x2da247[_0xc032('0x32')][_0xc032('0x36')]));_0x344ce1[_0xc032('0x35')]=_0x344ce1[_0xc032('0x35')][_0xc032('0x47')]?_0x344ce1['attributes']:_0x482180[_0xc032('0x31')];if(_0x2da247['query']['includeAll']){_0x344ce1[_0xc032('0x42')]=[{'all':!![]}];}_0x344ce1=_[_0xc032('0x3d')]({},_0x344ce1,_0x2da247[_0xc032('0x3f')]);return db['VoiceMusicOnHold'][_0xc032('0x48')](_0x344ce1)[_0xc032('0x24')](handleEntityNotFound(_0x1d6c47,null))[_0xc032('0x24')](respondWithResult(_0x1d6c47,null))[_0xc032('0x44')](handleError(_0x1d6c47,null));};exports['update']=function(_0x40aad2,_0x2f755d){if(_0x40aad2['body']['id']){delete _0x40aad2['body']['id'];}return db[_0xc032('0x2c')][_0xc032('0x48')]({'where':{'id':_0x40aad2[_0xc032('0x49')]['id']}})[_0xc032('0x24')](handleEntityNotFound(_0x2f755d,null))[_0xc032('0x24')](saveUpdates(_0x40aad2['body'],null))[_0xc032('0x24')](respondWithResult(_0x2f755d,null))[_0xc032('0x44')](handleError(_0x2f755d,null));};exports['create']=function(_0x24663e,_0xdfbde9,_0x1641f6){return db[_0xc032('0x4a')][_0xc032('0x4b')](function(_0x2d6e66){if(_0x24663e[_0xc032('0x4c')][_0xc032('0x4d')]===_0xc032('0x4e')){_0x24663e[_0xc032('0x4c')][_0xc032('0x4f')]=path['join'](config['root'],_0xc032('0x50'),_0x24663e[_0xc032('0x4c')][_0xc032('0x29')]);}return db['VoiceMusicOnHold']['create'](_0x24663e['body'],{'transaction':_0x2d6e66})[_0xc032('0x24')](function(_0x1af99c){if(_0x24663e[_0xc032('0x4c')][_0xc032('0x4d')]===_0xc032('0x4e')){fs[_0xc032('0x51')](_0x1af99c[_0xc032('0x4f')],parseInt(_0xc032('0x52'),0x8));}var _0x4e3b07=_0x24663e[_0xc032('0x53')][_0xc032('0x54')]({'plain':!![]});if(!_0x4e3b07)throw new Error(_0xc032('0x55'));if(_0x4e3b07[_0xc032('0x56')]===_0xc032('0x53')){var _0x2b6fc8=_0x1af99c['get']({'plain':!![]});return db[_0xc032('0x57')][_0xc032('0x48')]({'where':{'name':_0xc032('0x25'),'userProfileId':_0x4e3b07[_0xc032('0x58')]},'raw':!![]})[_0xc032('0x24')](function(_0x2a43ae){if(_0x2a43ae&&_0x2a43ae[_0xc032('0x59')]===0x0){return db[_0xc032('0x26')][_0xc032('0x5a')]({'name':_0x2b6fc8['name'],'resourceId':_0x2b6fc8['id'],'type':_0x2a43ae[_0xc032('0x29')],'sectionId':_0x2a43ae['id']},{})[_0xc032('0x24')](function(){return _0x1af99c;});}else{return _0x1af99c;}})['catch'](function(_0x254bc3){logger['error'](_0xc032('0x5b'),_0x254bc3);});}return _0x1af99c;});})[_0xc032('0x24')](respondWithResult(_0xdfbde9,0xc9))['catch'](handleError(_0xdfbde9,null));};exports['destroy']=function(_0x333b18,_0x151d3a,_0x1d1650){var _0x4a738c;return db[_0xc032('0x2c')][_0xc032('0x48')]({'where':{'id':_0x333b18[_0xc032('0x49')]['id']}})['then'](function(_0x41a23a){if(_0x41a23a){return db['sequelize'][_0xc032('0x4b')](function(_0x3fc622){return _0x41a23a['destroy']({'transaction':_0x3fc622,'raw':!![]})[_0xc032('0x24')](function(_0x2cf5b4){if(_0x2cf5b4[_0xc032('0x4f')]){fs[_0xc032('0x5c')](_0x2cf5b4[_0xc032('0x4f')])['forEach'](function(_0x5025e4){fs[_0xc032('0x5d')](path['join'](_0x2cf5b4[_0xc032('0x4f')],_0x5025e4));});fs[_0xc032('0x5e')](_0x2cf5b4['directory']);}return _0x2cf5b4;});})[_0xc032('0x44')](function(_0x16fdcf){throw new db[(_0xc032('0x5f'))]['ValidationError'](_0x16fdcf[_0xc032('0x60')]);});}})[_0xc032('0x24')](handleEntityNotFound(_0x151d3a,null))[_0xc032('0x24')](removeEntity(_0x151d3a,null))[_0xc032('0x44')](handleError(_0x151d3a,null));};exports[_0xc032('0x61')]=function(_0x2102fa,_0x5b43dc,_0x148fdf){return db[_0xc032('0x4a')][_0xc032('0x4b')](function(_0x568346){var _0x38c3e5;return db['VoiceMusicOnHold'][_0xc032('0x48')]({'where':{'id':_0x2102fa['params']['id']}})[_0xc032('0x24')](function(_0x4d9253){if(_0x4d9253){_0x38c3e5=_0x4d9253;return _0x4d9253[_0xc032('0x61')](_0x2102fa['body']['id'],{'transaction':_0x568346});}})[_0xc032('0x24')](function(_0x1f8ea1){if(_0x1f8ea1){return db[_0xc032('0x62')][_0xc032('0x63')]({'where':{'id':_0x2102fa[_0xc032('0x4c')]['id']},'attributes':['id',_0xc032('0x29'),'save_name',_0xc032('0x64'),_0xc032('0x65')],'raw':!![]});}})[_0xc032('0x24')](function(_0x3c7383){if(_0x3c7383){var _0x205d12=path['join'](config[_0xc032('0x66')],'server/files/sounds/converted',util[_0xc032('0x67')]('%s.%s',path[_0xc032('0x68')](_0x3c7383[_0xc032('0x69')],path[_0xc032('0x6a')](_0x3c7383[_0xc032('0x69')])),_0x3c7383[_0xc032('0x64')]));var _0x1c9661=path[_0xc032('0x6b')](config['root'],_0xc032('0x50'),_0x38c3e5[_0xc032('0x29')],util['format']('%s.%s',_0x3c7383[_0xc032('0x29')],_0x3c7383[_0xc032('0x64')]));fs[_0xc032('0x6c')](_0x205d12,_0x1c9661);return _0x3c7383;}})['catch'](function(_0x262d00){throw new db[(_0xc032('0x5f'))][(_0xc032('0x6d'))](_0x262d00[_0xc032('0x60')]);});})['then'](handleEntityNotFound(_0x5b43dc,null))['then'](respondWithResult(_0x5b43dc,0xc9))[_0xc032('0x44')](handleError(_0x5b43dc,null));};exports[_0xc032('0x6e')]=function(_0x267feb,_0x4efabc,_0x226b55){return db[_0xc032('0x4a')][_0xc032('0x4b')](function(_0x32f226){var _0x13e0c4;return db[_0xc032('0x2c')][_0xc032('0x63')]({'where':{'id':_0x267feb[_0xc032('0x49')]['id']}})[_0xc032('0x24')](handleEntityNotFound(_0x4efabc,null))[_0xc032('0x24')](function(_0x529e8d){if(_0x529e8d){_0x13e0c4=_0x529e8d;return _0x529e8d[_0xc032('0x6e')](_0x267feb['params'][_0xc032('0x6f')]);}})[_0xc032('0x24')](function(_0x161862){if(_0x161862){return db[_0xc032('0x62')][_0xc032('0x63')]({'where':{'id':_0x267feb[_0xc032('0x49')][_0xc032('0x6f')]},'attributes':['id',_0xc032('0x29'),_0xc032('0x69'),_0xc032('0x64'),'createdAt'],'raw':!![]});}})['then'](function(_0x3dd63f){if(_0x3dd63f){fs['unlinkSync'](path[_0xc032('0x6b')](_0x13e0c4[_0xc032('0x4f')],util['format'](_0xc032('0x70'),_0x3dd63f[_0xc032('0x29')],_0x3dd63f[_0xc032('0x64')])));return _0x3dd63f;}})[_0xc032('0x44')](function(_0x2358ff){throw new db[(_0xc032('0x5f'))][(_0xc032('0x6d'))](_0x2358ff[_0xc032('0x60')]);});})[_0xc032('0x24')](handleEntityNotFound(_0x4efabc,null))[_0xc032('0x24')](respondWithStatusCode(_0x4efabc,0xcc))[_0xc032('0x44')](handleError(_0x4efabc,null));};exports[_0xc032('0x71')]=function(_0x2dcf11,_0x35a77f,_0x45b836){var _0x55f725={};var _0x302938={};var _0x2d2461;var _0x31a824;return db['VoiceMusicOnHold'][_0xc032('0x63')]({'where':{'id':_0x2dcf11[_0xc032('0x49')]['id']}})[_0xc032('0x24')](handleEntityNotFound(_0x35a77f,null))['then'](function(_0x13cba2){if(_0x13cba2){_0x2d2461=_0x13cba2;_0x302938['model']=_[_0xc032('0x33')](db[_0xc032('0x62')][_0xc032('0x2d')]);_0x302938['query']=_['keys'](_0x2dcf11[_0xc032('0x32')]);_0x302938[_0xc032('0x34')]=_[_0xc032('0x46')](_0x302938[_0xc032('0x31')],_0x302938[_0xc032('0x32')]);_0x55f725[_0xc032('0x35')]=_[_0xc032('0x46')](_0x302938[_0xc032('0x31')],qs['fields'](_0x2dcf11[_0xc032('0x32')]['fields']));_0x55f725[_0xc032('0x35')]=_0x55f725[_0xc032('0x35')]['length']?_0x55f725[_0xc032('0x35')]:_0x302938[_0xc032('0x31')];_0x55f725[_0xc032('0x72')]=qs[_0xc032('0x39')](_0x2dcf11['query'][_0xc032('0x39')]);_0x55f725['where']=qs['filters'](_[_0xc032('0x3b')](_0x2dcf11[_0xc032('0x32')],_0x302938['filters']));if(_0x2dcf11[_0xc032('0x32')][_0xc032('0x3c')]){_0x55f725['where']=_['merge'](_0x55f725[_0xc032('0x3a')],{'$or':_[_0xc032('0x2b')](_0x55f725[_0xc032('0x35')],function(_0x39356d){var _0x536453={};_0x536453[_0x39356d]={'$like':'%'+_0x2dcf11[_0xc032('0x32')][_0xc032('0x3c')]+'%'};return _0x536453;})});}_0x55f725=_[_0xc032('0x3d')]({},_0x55f725,_0x2dcf11[_0xc032('0x3f')]);return _0x2d2461['getSounds'](_0x55f725);}})[_0xc032('0x24')](function(_0x1b3538){if(_0x1b3538){_0x31a824=_0x1b3538[_0xc032('0x47')];if(!_0x2dcf11['query']['hasOwnProperty']('nolimit')){_0x55f725['limit']=qs[_0xc032('0x1c')](_0x2dcf11[_0xc032('0x32')][_0xc032('0x1c')]);_0x55f725['offset']=qs[_0xc032('0x1b')](_0x2dcf11[_0xc032('0x32')]['offset']);}return _0x2d2461['getSounds'](_0x55f725);}})[_0xc032('0x24')](function(_0x4457d9){if(_0x4457d9){return _0x4457d9?{'count':_0x31a824,'rows':_0x4457d9}:null;}})[_0xc032('0x24')](respondWithResult(_0x35a77f,null))['catch'](handleError(_0x35a77f,null));};
\ No newline at end of file
index a25099e..b9df430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x246f=['../../config/environment','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x7b6e5e,_0xcfad73){var _0x5937c=function(_0x55e448){while(--_0x55e448){_0x7b6e5e['push'](_0x7b6e5e['shift']());}};_0x5937c(++_0xcfad73);}(_0x246f,0x186));var _0xf246=function(_0x10949a,_0x2b7dba){_0x10949a=_0x10949a-0x0;var _0x3e7746=_0x246f[_0x10949a];return _0x3e7746;};'use strict';var _=require(_0xf246('0x0'));var util=require('util');var logger=require(_0xf246('0x1'))('api');var moment=require(_0xf246('0x2'));var BPromise=require('bluebird');var rp=require(_0xf246('0x3'));var fs=require('fs');var path=require(_0xf246('0x4'));var rimraf=require(_0xf246('0x5'));var config=require(_0xf246('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xf246('0x7')]=function(_0x5ca205,_0x312772){return _0x5ca205[_0xf246('0x8')](_0xf246('0x9'),attributes,{'tableName':_0xf246('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde93=['request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','bluebird'];(function(_0x7eafa5,_0x1c0f45){var _0x10631a=function(_0x476fee){while(--_0x476fee){_0x7eafa5['push'](_0x7eafa5['shift']());}};_0x10631a(++_0x1c0f45);}(_0xde93,0xbc));var _0x3de9=function(_0x396248,_0x5b7ff2){_0x396248=_0x396248-0x0;var _0x568f77=_0xde93[_0x396248];return _0x568f77;};'use strict';var _=require(_0x3de9('0x0'));var util=require(_0x3de9('0x1'));var logger=require(_0x3de9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3de9('0x3'));var rp=require(_0x3de9('0x4'));var fs=require('fs');var path=require(_0x3de9('0x5'));var rimraf=require(_0x3de9('0x6'));var config=require(_0x3de9('0x7'));var attributes=require(_0x3de9('0x8'));module['exports']=function(_0x4d03f0,_0x390419){return _0x4d03f0[_0x3de9('0x9')](_0x3de9('0xa'),attributes,{'tableName':_0x3de9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a0826e..f925029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x58511d,_0x39d04f){var _0x4da722=function(_0x1e84e7){while(--_0x1e84e7){_0x58511d['push'](_0x58511d['shift']());}};_0x4da722(++_0x39d04f);}(_0x34e8,0x12c));var _0x834e=function(_0x23265a,_0x283035){_0x23265a=_0x23265a-0x0;var _0x1d0506=_0x34e8[_0x23265a];return _0x1d0506;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
+var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x530f8c,_0x22ad69){var _0x5e3e68=function(_0xe0449){while(--_0xe0449){_0x530f8c['push'](_0x530f8c['shift']());}};_0x5e3e68(++_0x22ad69);}(_0x34e8,0x12c));var _0x834e=function(_0x12c719,_0x2d98b6){_0x12c719=_0x12c719-0x0;var _0x51ac35=_0x34e8[_0x12c719];return _0x51ac35;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
index 76159ab..394f8e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8be=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/users','getAgents','post','create','addAgents','put','update','delete','destroy','removeAgents','exports','util','connect-timeout'];(function(_0x57a9ca,_0x434c80){var _0x446ece=function(_0x8a5b6f){while(--_0x8a5b6f){_0x57a9ca['push'](_0x57a9ca['shift']());}};_0x446ece(++_0x434c80);}(_0xf8be,0x11c));var _0xef8b=function(_0x53010f,_0x46fd1a){_0x53010f=_0x53010f-0x0;var _0x152f0f=_0xf8be[_0x53010f];return _0x152f0f;};'use strict';var multer=require('multer');var util=require(_0xef8b('0x0'));var path=require('path');var timeout=require(_0xef8b('0x1'));var express=require(_0xef8b('0x2'));var router=express['Router']();var fs_extra=require(_0xef8b('0x3'));var auth=require(_0xef8b('0x4'));var interaction=require(_0xef8b('0x5'));var config=require(_0xef8b('0x6'));var controller=require(_0xef8b('0x7'));router[_0xef8b('0x8')]('/',auth[_0xef8b('0x9')](),controller[_0xef8b('0xa')]);router['get'](_0xef8b('0xb'),auth[_0xef8b('0x9')](),controller[_0xef8b('0xc')]);router[_0xef8b('0x8')](_0xef8b('0xd'),auth[_0xef8b('0x9')](),controller[_0xef8b('0xe')]);router[_0xef8b('0x8')](_0xef8b('0xf'),auth[_0xef8b('0x9')](),controller[_0xef8b('0x10')]);router[_0xef8b('0x11')]('/',auth[_0xef8b('0x9')](),controller[_0xef8b('0x12')]);router['post'](_0xef8b('0xf'),auth[_0xef8b('0x9')](),controller[_0xef8b('0x13')]);router[_0xef8b('0x14')]('/:id',auth[_0xef8b('0x9')](),controller[_0xef8b('0x15')]);router[_0xef8b('0x16')](_0xef8b('0xd'),auth[_0xef8b('0x9')](),controller[_0xef8b('0x17')]);router[_0xef8b('0x16')]('/:id/users',auth['isAuthenticated'](),controller[_0xef8b('0x18')]);module[_0xef8b('0x19')]=router;
\ No newline at end of file
+var _0x3a32=['post','addAgents','put','update','delete','destroy','/:id/users','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./voicePrefix.controller','isAuthenticated','get','/describe','describe','/:id','show','getAgents','/:id/teams','getTeams','create'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x3a32,0x9b));var _0x23a3=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x3a32[_0x1caf6a];return _0x1bf493;};'use strict';var multer=require(_0x23a3('0x0'));var util=require(_0x23a3('0x1'));var path=require(_0x23a3('0x2'));var timeout=require(_0x23a3('0x3'));var express=require(_0x23a3('0x4'));var router=express[_0x23a3('0x5')]();var fs_extra=require(_0x23a3('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x23a3('0x7'));var controller=require(_0x23a3('0x8'));router['get']('/',auth[_0x23a3('0x9')](),controller['index']);router[_0x23a3('0xa')](_0x23a3('0xb'),auth[_0x23a3('0x9')](),controller[_0x23a3('0xc')]);router[_0x23a3('0xa')](_0x23a3('0xd'),auth['isAuthenticated'](),controller[_0x23a3('0xe')]);router[_0x23a3('0xa')]('/:id/users',auth['isAuthenticated'](),controller[_0x23a3('0xf')]);router[_0x23a3('0xa')](_0x23a3('0x10'),auth['isAuthenticated'](),controller[_0x23a3('0x11')]);router['post']('/',auth[_0x23a3('0x9')](),controller[_0x23a3('0x12')]);router[_0x23a3('0x13')]('/:id/users',auth[_0x23a3('0x9')](),controller[_0x23a3('0x14')]);router[_0x23a3('0x13')](_0x23a3('0x10'),auth[_0x23a3('0x9')](),controller['addTeams']);router[_0x23a3('0x15')](_0x23a3('0xd'),auth['isAuthenticated'](),controller[_0x23a3('0x16')]);router[_0x23a3('0x17')]('/:id',auth[_0x23a3('0x9')](),controller[_0x23a3('0x18')]);router[_0x23a3('0x17')](_0x23a3('0x19'),auth[_0x23a3('0x9')](),controller[_0x23a3('0x1a')]);router[_0x23a3('0x17')](_0x23a3('0x10'),auth['isAuthenticated'](),controller[_0x23a3('0x1b')]);module[_0x23a3('0x1c')]=router;
\ No newline at end of file
index 8a97aec..6adfdd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20c2=['VIRTUAL','sequelize','STRING','name'];(function(_0x154940,_0x1b13bb){var _0x3741af=function(_0x4786d0){while(--_0x4786d0){_0x154940['push'](_0x154940['shift']());}};_0x3741af(++_0x1b13bb);}(_0x20c2,0xc9));var _0x220c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x20c2[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x220c('0x0'));module['exports']={'name':{'type':Sequelize[_0x220c('0x1')],'allowNull':![],'unique':_0x220c('0x2')},'prefix':{'type':Sequelize[_0x220c('0x3')],'get':function(_0x40dcc5){return'system-'+this['getDataValue'](_0x220c('0x2'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x220c('0x1')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xcfac=['INTEGER','sequelize','exports','STRING','name','VIRTUAL','system-'];(function(_0x2ca4b6,_0x5e8414){var _0x254c99=function(_0x440941){while(--_0x440941){_0x2ca4b6['push'](_0x2ca4b6['shift']());}};_0x254c99(++_0x5e8414);}(_0xcfac,0x1ba));var _0xccfa=function(_0x2e1227,_0x4f9bf3){_0x2e1227=_0x2e1227-0x0;var _0x4d1c8c=_0xcfac[_0x2e1227];return _0x4d1c8c;};'use strict';var Sequelize=require(_0xccfa('0x0'));module[_0xccfa('0x1')]={'name':{'type':Sequelize[_0xccfa('0x2')],'allowNull':![],'unique':_0xccfa('0x3')},'prefix':{'type':Sequelize[_0xccfa('0x4')],'get':function(_0x3bc282){return _0xccfa('0x5')+this['getDataValue'](_0xccfa('0x3'))+'-';}},'description':{'type':Sequelize[_0xccfa('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0xccfa('0x6')]}};
\ No newline at end of file
index cbcaefd..1d9f3eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x438a=['description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','NoOp','charAt','system-','addAgents','omit','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','findOne','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','json','limit','undefined','offset','count','Content-Range','apply','reject','save','update','then','destroy','get','error','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','type','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','options','include','findAll','catch','includeAll','find','params','describe','sequelize','transaction','create','body','VoiceExtension','VoiceExtensionId','user','UserProfileSection','VoicePrefixes','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system'];(function(_0x55cdee,_0x36ee3d){var _0x28433f=function(_0x23829d){while(--_0x23829d){_0x55cdee['push'](_0x55cdee['shift']());}};_0x28433f(++_0x36ee3d);}(_0x438a,0x18b));var _0xa438=function(_0x4bca3a,_0x2948ab){_0x4bca3a=_0x4bca3a-0x0;var _0x297831=_0x438a[_0x4bca3a];return _0x297831;};'use strict';var emlformat=require(_0xa438('0x0'));var rimraf=require(_0xa438('0x1'));var zipdir=require(_0xa438('0x2'));var jsonpatch=require(_0xa438('0x3'));var rp=require(_0xa438('0x4'));var moment=require(_0xa438('0x5'));var BPromise=require(_0xa438('0x6'));var Mustache=require(_0xa438('0x7'));var util=require(_0xa438('0x8'));var path=require(_0xa438('0x9'));var sox=require(_0xa438('0xa'));var csv=require(_0xa438('0xb'));var ejs=require(_0xa438('0xc'));var fs=require('fs');var fs_extra=require(_0xa438('0xd'));var _=require(_0xa438('0xe'));var squel=require(_0xa438('0xf'));var crypto=require(_0xa438('0x10'));var jsforce=require(_0xa438('0x11'));var deskjs=require(_0xa438('0x12'));var toCsv=require(_0xa438('0xb'));var querystring=require(_0xa438('0x13'));var Papa=require(_0xa438('0x14'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa438('0x15'));var as=require(_0xa438('0x16'));var hardwareService=require(_0xa438('0x17'));var logger=require(_0xa438('0x18'))(_0xa438('0x19'));var utils=require(_0xa438('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xa438('0x1b'));var db=require('../../mysqldb')['db'];config[_0xa438('0x1c')]=_['defaults'](config[_0xa438('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xa438('0x1d'))(new Redis(config[_0xa438('0x1c')]));require(_0xa438('0x1e'))['register'](socket);function respondWithStatusCode(_0x3238f7,_0x779987){_0x779987=_0x779987||0xcc;return function(_0x3f4f39){if(_0x3f4f39){return _0x3238f7[_0xa438('0x1f')](_0x779987);}return _0x3238f7[_0xa438('0x20')](_0x779987)[_0xa438('0x21')]();};}function respondWithResult(_0x420939,_0x342a06){_0x342a06=_0x342a06||0xc8;return function(_0x5727af){if(_0x5727af){return _0x420939[_0xa438('0x20')](_0x342a06)[_0xa438('0x22')](_0x5727af);}};}function respondWithFilteredResult(_0x10e2b2,_0x316477){return function(_0x379f5f){if(_0x379f5f){var _0x32a667=typeof _0x316477['offset']==='undefined'&&typeof _0x316477[_0xa438('0x23')]===_0xa438('0x24');var _0x159406=_0x379f5f['count'];var _0xd10746=_0x32a667?0x0:_0x316477[_0xa438('0x25')];var _0x422dbc=_0x32a667?_0x379f5f[_0xa438('0x26')]:_0x316477['offset']+_0x316477[_0xa438('0x23')];var _0x3d9ce9;if(_0x422dbc>=_0x159406){_0x422dbc=_0x159406;_0x3d9ce9=0xc8;}else{_0x3d9ce9=0xce;}_0x10e2b2[_0xa438('0x20')](_0x3d9ce9);return _0x10e2b2['set'](_0xa438('0x27'),_0xd10746+'-'+_0x422dbc+'/'+_0x159406)[_0xa438('0x22')](_0x379f5f);}return null;};}function patchUpdates(_0xfb9a7c){return function(_0x2bb687){try{jsonpatch[_0xa438('0x28')](_0x2bb687,_0xfb9a7c,!![]);}catch(_0x266410){return BPromise[_0xa438('0x29')](_0x266410);}return _0x2bb687[_0xa438('0x2a')]();};}function saveUpdates(_0x3c50e0,_0x3b15bf){return function(_0x318e39){if(_0x318e39){return _0x318e39[_0xa438('0x2b')](_0x3c50e0)[_0xa438('0x2c')](function(_0x7a7426){return _0x7a7426;});}return null;};}function removeEntity(_0x32f193,_0x34f6bc){return function(_0x294f00){if(_0x294f00){return _0x294f00[_0xa438('0x2d')]()[_0xa438('0x2c')](function(){var _0x47a4e7=_0x294f00[_0xa438('0x2e')]({'plain':!![]});var _0x5c09c7='VoicePrefixes';return db['UserProfileResource'][_0xa438('0x2d')]({'where':{'type':_0x5c09c7,'resourceId':_0x47a4e7['id']}})[_0xa438('0x2c')](function(){return _0x294f00;});})[_0xa438('0x2c')](function(){_0x32f193[_0xa438('0x20')](0xcc)[_0xa438('0x21')]();});}};}function handleEntityNotFound(_0x1efe91,_0x3a1be5){return function(_0x22b18f){if(!_0x22b18f){_0x1efe91['sendStatus'](0x194);}return _0x22b18f;};}function handleError(_0x24947a,_0x542833){_0x542833=_0x542833||0x1f4;return function(_0x593d01){logger[_0xa438('0x2f')](_0x593d01[_0xa438('0x30')]);if(_0x593d01[_0xa438('0x31')]){delete _0x593d01['name'];}_0x24947a[_0xa438('0x20')](_0x542833)[_0xa438('0x32')](_0x593d01);};}exports['index']=function(_0x6236a7,_0x5075ae){var _0x2c8b75={},_0x48a219={},_0x109730={'count':0x0,'rows':[]};var _0x2e7138=_[_0xa438('0x33')](db[_0xa438('0x34')][_0xa438('0x35')],function(_0x578519){return{'name':_0x578519[_0xa438('0x36')],'type':_0x578519[_0xa438('0x37')]['key']};});_0x48a219[_0xa438('0x38')]=_[_0xa438('0x33')](_0x2e7138,_0xa438('0x31'));_0x48a219['query']=_[_0xa438('0x39')](_0x6236a7[_0xa438('0x3a')]);_0x48a219['filters']=_[_0xa438('0x3b')](_0x48a219['model'],_0x48a219[_0xa438('0x3a')]);_0x2c8b75['attributes']=_[_0xa438('0x3b')](_0x48a219['model'],qs[_0xa438('0x3c')](_0x6236a7[_0xa438('0x3a')][_0xa438('0x3c')]));_0x2c8b75['attributes']=_0x2c8b75[_0xa438('0x3d')][_0xa438('0x3e')]?_0x2c8b75['attributes']:_0x48a219[_0xa438('0x38')];if(!_0x6236a7[_0xa438('0x3a')][_0xa438('0x3f')]('nolimit')){_0x2c8b75[_0xa438('0x23')]=qs[_0xa438('0x23')](_0x6236a7[_0xa438('0x3a')][_0xa438('0x23')]);_0x2c8b75['offset']=qs[_0xa438('0x25')](_0x6236a7[_0xa438('0x3a')][_0xa438('0x25')]);}_0x2c8b75[_0xa438('0x40')]=qs[_0xa438('0x41')](_0x6236a7[_0xa438('0x3a')]['sort']);_0x2c8b75[_0xa438('0x42')]=qs['filters'](_[_0xa438('0x43')](_0x6236a7['query'],_0x48a219[_0xa438('0x44')]),_0x2e7138);if(_0x6236a7[_0xa438('0x3a')][_0xa438('0x45')]){_0x2c8b75[_0xa438('0x42')]=_['merge'](_0x2c8b75[_0xa438('0x42')],{'$or':_[_0xa438('0x33')](_0x2e7138,function(_0x22e705){if(_0x22e705['type']!=='VIRTUAL'){var _0x38f1f4={};_0x38f1f4[_0x22e705[_0xa438('0x31')]]={'$like':'%'+_0x6236a7[_0xa438('0x3a')]['filter']+'%'};return _0x38f1f4;}})});}_0x2c8b75=_[_0xa438('0x46')]({},_0x2c8b75,_0x6236a7[_0xa438('0x47')]);var _0x3837e4={'where':_0x2c8b75['where']};return db[_0xa438('0x34')][_0xa438('0x26')](_0x3837e4)[_0xa438('0x2c')](function(_0x423715){_0x109730[_0xa438('0x26')]=_0x423715;if(_0x6236a7[_0xa438('0x3a')]['includeAll']){_0x2c8b75[_0xa438('0x48')]=[{'all':!![]}];}return db['VoicePrefix'][_0xa438('0x49')](_0x2c8b75);})['then'](function(_0x50df19){_0x109730['rows']=_0x50df19;return _0x109730;})[_0xa438('0x2c')](respondWithFilteredResult(_0x5075ae,_0x2c8b75))[_0xa438('0x4a')](handleError(_0x5075ae,null));};exports['show']=function(_0x537182,_0x9447d8){var _0x1c610d={'raw':![],'where':{'id':_0x537182['params']['id']}},_0x2b6aa8={};_0x2b6aa8[_0xa438('0x38')]=_[_0xa438('0x39')](db[_0xa438('0x34')][_0xa438('0x35')]);_0x2b6aa8[_0xa438('0x3a')]=_[_0xa438('0x39')](_0x537182[_0xa438('0x3a')]);_0x2b6aa8[_0xa438('0x44')]=_[_0xa438('0x3b')](_0x2b6aa8[_0xa438('0x38')],_0x2b6aa8['query']);_0x1c610d[_0xa438('0x3d')]=_[_0xa438('0x3b')](_0x2b6aa8[_0xa438('0x38')],qs[_0xa438('0x3c')](_0x537182[_0xa438('0x3a')]['fields']));_0x1c610d[_0xa438('0x3d')]=_0x1c610d[_0xa438('0x3d')]['length']?_0x1c610d[_0xa438('0x3d')]:_0x2b6aa8[_0xa438('0x38')];if(_0x537182[_0xa438('0x3a')][_0xa438('0x4b')]){_0x1c610d['include']=[{'all':!![]}];}_0x1c610d=_[_0xa438('0x46')]({},_0x1c610d,_0x537182[_0xa438('0x47')]);return db[_0xa438('0x34')][_0xa438('0x4c')](_0x1c610d)[_0xa438('0x2c')](handleEntityNotFound(_0x9447d8,null))[_0xa438('0x2c')](respondWithResult(_0x9447d8,null))['catch'](handleError(_0x9447d8,null));};exports[_0xa438('0x2d')]=function(_0x13b058,_0x4cdc7f){return db['VoicePrefix'][_0xa438('0x4c')]({'where':{'id':_0x13b058[_0xa438('0x4d')]['id']}})[_0xa438('0x2c')](handleEntityNotFound(_0x4cdc7f,null))[_0xa438('0x2c')](removeEntity(_0x4cdc7f,null))[_0xa438('0x4a')](handleError(_0x4cdc7f,null));};exports[_0xa438('0x4e')]=function(_0x7692ad,_0x2b6932){return db[_0xa438('0x34')]['describe']()[_0xa438('0x2c')](respondWithResult(_0x2b6932,null))[_0xa438('0x4a')](handleError(_0x2b6932,null));};exports['create']=function(_0x290099,_0x38e249){var _0x514e7c;return db[_0xa438('0x4f')][_0xa438('0x50')](function(_0x2d0387){return db[_0xa438('0x34')][_0xa438('0x51')](_0x290099[_0xa438('0x52')],{'transaction':_0x2d0387})['then'](function(_0x2f3d1e){_0x514e7c=_0x2f3d1e[_0xa438('0x2e')]({'plain':!![]});return db[_0xa438('0x53')]['find']({'where':{'id':_0x514e7c[_0xa438('0x54')]},'raw':!![]})[_0xa438('0x2c')](function(_0x14a65c){return createVoicePrefixExtensions(_0x514e7c,_0x14a65c,_0x2d0387);});});})[_0xa438('0x2c')](function(){var _0x654403=_0x290099[_0xa438('0x55')][_0xa438('0x2e')]({'plain':!![]});if(!_0x654403)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x654403['role']==='user'){var _0x3c17cd=_0x514e7c;return db[_0xa438('0x56')][_0xa438('0x4c')]({'where':{'name':_0xa438('0x57'),'userProfileId':_0x654403[_0xa438('0x58')]},'raw':!![]})[_0xa438('0x2c')](function(_0xc47d6d){if(_0xc47d6d&&_0xc47d6d[_0xa438('0x59')]===0x0){return db[_0xa438('0x5a')]['create']({'name':_0x3c17cd['name'],'resourceId':_0x3c17cd['id'],'type':_0xc47d6d[_0xa438('0x31')],'sectionId':_0xc47d6d['id']},{})[_0xa438('0x2c')](function(){return _0x514e7c;});}else{return _0x514e7c;}})[_0xa438('0x4a')](function(_0x5c17cf){logger['error'](_0xa438('0x5b'),_0x5c17cf);throw _0x5c17cf;});}return _0x514e7c;})[_0xa438('0x2c')](respondWithResult(_0x38e249,null))['catch'](handleError(_0x38e249,null));};function Extension(_0x2ddf25,_0x515406,_0x2b85f8,_0x41223d){this[_0xa438('0x5c')]=_0xa438('0x5d');this[_0xa438('0x5e')]=_0x2ddf25;this[_0xa438('0x5f')]=_0x2b85f8;this[_0xa438('0x37')]=_0xa438('0x60');this[_0xa438('0x61')]=_0xa438('0x62');this[_0xa438('0x63')]=_0x515406;this[_0xa438('0x64')]=_0x41223d;}function createVoicePrefixExtensions(_0x207676,_0x6dbd7d,_0x465e86){return new BPromise(function(_0x5f048b,_0x4c4267){var _0x1b90f8=new Extension(formatPrefixName(_0x207676[_0xa438('0x65')]),0x1,'NoOp',_0xa438('0x66'));_0x1b90f8[_0xa438('0x67')]=_0x207676['id'];return db[_0xa438('0x53')][_0xa438('0x51')](_0x1b90f8,{'transaction':_0x465e86})['then'](function(_0xacf284){var _0x3483f9=_0xacf284[_0xa438('0x2e')]({'plain':!![]});var _0x2e9c8f=_[_0xa438('0x33')](addVoicePrefixExtensions(_0x207676,_0x6dbd7d),function(_0xedf2b4){_0xedf2b4['VoiceExtensionId']=_0x3483f9['id'];_0xedf2b4[_0xa438('0x67')]=_0x207676['id'];return _0xedf2b4;});return db[_0xa438('0x53')][_0xa438('0x68')](_0x2e9c8f,{'transaction':_0x465e86})[_0xa438('0x2c')](function(_0x5d9250){if(!_0x5d9250){return _0x4c4267('Extensions\x20creation\x20failed');}else{return _0x5f048b(_0x5d9250);}})[_0xa438('0x4a')](function(_0x40b0cf){return _0x4c4267(_0x40b0cf);});});;});};function addVoicePrefixExtensions(_0x3df9b9,_0x266d52){var _0x4543ea=[];var _0x16daf7=formatPrefixName(_0x3df9b9[_0xa438('0x65')]);_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x2,_0xa438('0x6a'),_0xa438('0x6b')+_0x3df9b9[_0xa438('0x31')]));if(_0x3df9b9[_0xa438('0x6c')]){_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x3,_0xa438('0x6a'),'PREFIX-CALLERIDALL='+_0x3df9b9[_0xa438('0x6c')]));}else{_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x3,_0xa438('0x6d'),'No\x20callerid\x20available'));}_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x4,'goto',_0x266d52[_0xa438('0x5c')]+','+'${EXTEN:'+(0x8+_0x3df9b9[_0xa438('0x31')][_0xa438('0x3e')])+'}'+','+0x1));return _0x4543ea;}function formatPrefixName(_0x21a2bf){var _0x26ad57='_';for(var _0x463265=0x0;_0x463265<_0x21a2bf[_0xa438('0x3e')];_0x463265++){if(_0x21a2bf[_0xa438('0x6e')](_0x463265)=='-'){_0x26ad57+=_0x21a2bf['charAt'](_0x463265);}else{_0x26ad57+='['+_0x21a2bf[_0xa438('0x6e')](_0x463265)+']';}}_0x26ad57+='.';return _0x26ad57;}exports[_0xa438('0x2b')]=function(_0x137cfe,_0x5dd730,_0xf71e34){var _0xd12c16=_0x137cfe['body'];_0xd12c16['prefix']=_0xa438('0x6f')+_0xd12c16[_0xa438('0x31')]+'-';return db[_0xa438('0x4f')][_0xa438('0x50')](function(_0x9ee61e){return db[_0xa438('0x34')][_0xa438('0x2b')](_0xd12c16,{'where':{'id':_0xd12c16['id']},'transaction':_0x9ee61e})['then'](function(){return db[_0xa438('0x53')][_0xa438('0x2d')]({'where':{'VoicePrefixId':_0xd12c16['id']},'transaction':_0x9ee61e})[_0xa438('0x2c')](function(){return db['VoiceExtension'][_0xa438('0x4c')]({'where':{'id':_0xd12c16[_0xa438('0x54')]},'raw':!![]})[_0xa438('0x2c')](function(_0x3df6d4){return createVoicePrefixExtensions(_0xd12c16,_0x3df6d4,_0x9ee61e);});});});})[_0xa438('0x2c')](function(){return db[_0xa438('0x34')]['findById'](_0xd12c16['id']);})[_0xa438('0x2c')](respondWithResult(_0x5dd730,null))[_0xa438('0x4a')](handleError(_0x5dd730,null));};exports[_0xa438('0x70')]=function(_0x4dcf7b,_0x66a1bf,_0x360c40){return db[_0xa438('0x34')][_0xa438('0x4c')]({'where':{'id':_0x4dcf7b[_0xa438('0x4d')]['id']}})['then'](handleEntityNotFound(_0x66a1bf,null))[_0xa438('0x2c')](function(_0x2ac08f){if(_0x2ac08f){return _0x2ac08f[_0xa438('0x70')](_0x4dcf7b[_0xa438('0x52')]['ids'],_[_0xa438('0x71')](_0x4dcf7b[_0xa438('0x52')],[_0xa438('0x72'),'id'])||{})[_0xa438('0x73')](function(_0x32dacd){for(var _0x2c63ca=0x0;_0x2c63ca<_0x4dcf7b['body']['ids'][_0xa438('0x3e')];_0x2c63ca+=0x1){socket[_0xa438('0x74')](_0xa438('0x75'),{'UserId':Number(_0x4dcf7b[_0xa438('0x52')][_0xa438('0x72')][_0x2c63ca]),'VoicePrefixId':Number(_0x4dcf7b[_0xa438('0x4d')]['id'])});}return _0x32dacd;});}})[_0xa438('0x2c')](respondWithResult(_0x66a1bf,null))['catch'](handleError(_0x66a1bf,null));};exports[_0xa438('0x76')]=function(_0x22c48c,_0x34fea8,_0x840900){return db[_0xa438('0x34')][_0xa438('0x4c')]({'where':{'id':_0x22c48c[_0xa438('0x4d')]['id']}})[_0xa438('0x2c')](handleEntityNotFound(_0x34fea8,null))[_0xa438('0x2c')](function(_0x45b429){if(_0x45b429){return _0x45b429['removeAgents'](_0x22c48c['query'][_0xa438('0x72')])[_0xa438('0x2c')](function(){if(_[_0xa438('0x77')](_0x22c48c['query'][_0xa438('0x72')])){for(var _0x2d8195=0x0;_0x2d8195<_0x22c48c['query']['ids'][_0xa438('0x3e')];_0x2d8195+=0x1){socket['emit'](_0xa438('0x78'),{'UserId':Number(_0x22c48c[_0xa438('0x3a')][_0xa438('0x72')][_0x2d8195]),'VoicePrefixId':Number(_0x22c48c['params']['id'])});}}else{socket[_0xa438('0x74')](_0xa438('0x78'),{'UserId':Number(_0x22c48c[_0xa438('0x3a')]['ids']),'VoicePrefixId':Number(_0x22c48c[_0xa438('0x4d')]['id'])});}});}})[_0xa438('0x2c')](respondWithStatusCode(_0x34fea8,null))[_0xa438('0x4a')](handleError(_0x34fea8,null));};exports['getAgents']=function(_0x215a97,_0x46e991,_0x54abb0){var _0xd60037={};var _0x413682={};var _0x19ced3;var _0x108132;return db[_0xa438('0x34')][_0xa438('0x79')]({'where':{'id':_0x215a97[_0xa438('0x4d')]['id']}})[_0xa438('0x2c')](handleEntityNotFound(_0x46e991,null))['then'](function(_0x3a78bb){if(_0x3a78bb){_0x19ced3=_0x3a78bb;_0x413682[_0xa438('0x38')]=_[_0xa438('0x39')](db['User'][_0xa438('0x35')]);_0x413682['query']=_['keys'](_0x215a97[_0xa438('0x3a')]);_0x413682[_0xa438('0x44')]=_[_0xa438('0x3b')](_0x413682[_0xa438('0x38')],_0x413682['query']);_0xd60037[_0xa438('0x3d')]=_['intersection'](_0x413682[_0xa438('0x38')],qs['fields'](_0x215a97[_0xa438('0x3a')]['fields']));_0xd60037[_0xa438('0x3d')]=_0xd60037[_0xa438('0x3d')][_0xa438('0x3e')]?_0xd60037['attributes']:_0x413682[_0xa438('0x38')];_0xd60037['order']=qs[_0xa438('0x41')](_0x215a97[_0xa438('0x3a')][_0xa438('0x41')]);_0xd60037['where']=qs[_0xa438('0x44')](_[_0xa438('0x43')](_0x215a97['query'],_0x413682[_0xa438('0x44')]));if(_0x215a97[_0xa438('0x3a')][_0xa438('0x45')]){_0xd60037[_0xa438('0x42')]=_[_0xa438('0x46')](_0xd60037[_0xa438('0x42')],{'$or':_[_0xa438('0x33')](_0xd60037[_0xa438('0x3d')],function(_0x993cff){var _0x802cc7={};_0x802cc7[_0x993cff]={'$like':'%'+_0x215a97[_0xa438('0x3a')][_0xa438('0x45')]+'%'};return _0x802cc7;})});}_0xd60037=_['merge']({},_0xd60037,_0x215a97['options']);return _0x19ced3[_0xa438('0x7a')](_0xd60037);}})[_0xa438('0x2c')](function(_0x1d5fcb){if(_0x1d5fcb){_0x108132=_0x1d5fcb['length'];if(!_0x215a97[_0xa438('0x3a')][_0xa438('0x3f')]('nolimit')){_0xd60037[_0xa438('0x23')]=qs[_0xa438('0x23')](_0x215a97[_0xa438('0x3a')][_0xa438('0x23')]);_0xd60037[_0xa438('0x25')]=qs['offset'](_0x215a97[_0xa438('0x3a')][_0xa438('0x25')]);}return _0x19ced3[_0xa438('0x7a')](_0xd60037);}})['then'](function(_0x31379a){if(_0x31379a){return _0x31379a?{'count':_0x108132,'rows':_0x31379a}:null;}})['then'](respondWithResult(_0x46e991,null))[_0xa438('0x4a')](handleError(_0x46e991,null));};
\ No newline at end of file
+var _0x1c9a=['sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','offset','limit','undefined','set','Content-Range','apply','reject','update','then','destroy','VoicePrefixes','UserProfileResource','error','stack','send','index','map','VoicePrefix','rawAttributes','fieldName','type','model','name','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','find','params','describe','sequelize','create','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','VoiceExtension','Extensions\x20creation\x20failed','push','CDR(prefix)=','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','context','${EXTEN:','charAt','body','system-','transaction','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','User','filter','getAgents','getTeams','findOne','addTeams','Team','Agents','online','voicePause','flatMap','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','every','TeamId','includes','all','union','compact','isEmpty','eml-format','zip-dir','request-promise','moment','bluebird','util','path'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x1c9a,0x98));var _0xa1c9=function(_0x143895,_0x10fc0c){_0x143895=_0x143895-0x0;var _0x256357=_0x1c9a[_0x143895];return _0x256357;};'use strict';var emlformat=require(_0xa1c9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa1c9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa1c9('0x2'));var moment=require(_0xa1c9('0x3'));var BPromise=require(_0xa1c9('0x4'));var Mustache=require('mustache');var util=require(_0xa1c9('0x5'));var path=require(_0xa1c9('0x6'));var sox=require(_0xa1c9('0x7'));var csv=require(_0xa1c9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa1c9('0x9'));var _=require('lodash');var squel=require(_0xa1c9('0xa'));var crypto=require(_0xa1c9('0xb'));var jsforce=require(_0xa1c9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa1c9('0x8'));var querystring=require(_0xa1c9('0xd'));var Papa=require(_0xa1c9('0xe'));var Redis=require(_0xa1c9('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa1c9('0x10'));var as=require(_0xa1c9('0x11'));var hardwareService=require(_0xa1c9('0x12'));var logger=require(_0xa1c9('0x13'))(_0xa1c9('0x14'));var utils=require(_0xa1c9('0x15'));var config=require(_0xa1c9('0x16'));var licenseUtil=require(_0xa1c9('0x17'));var db=require(_0xa1c9('0x18'))['db'];config[_0xa1c9('0x19')]=_['defaults'](config[_0xa1c9('0x19')],{'host':_0xa1c9('0x1a'),'port':0x18eb});var socket=require(_0xa1c9('0x1b'))(new Redis(config[_0xa1c9('0x19')]));require(_0xa1c9('0x1c'))['register'](socket);function respondWithStatusCode(_0x335dda,_0x4b2fa5){_0x4b2fa5=_0x4b2fa5||0xcc;return function(_0x2cba13){if(_0x2cba13){return _0x335dda[_0xa1c9('0x1d')](_0x4b2fa5);}return _0x335dda[_0xa1c9('0x1e')](_0x4b2fa5)[_0xa1c9('0x1f')]();};}function respondWithResult(_0x44ab5b,_0x3b51f5){_0x3b51f5=_0x3b51f5||0xc8;return function(_0x1f6d26){if(_0x1f6d26){return _0x44ab5b[_0xa1c9('0x1e')](_0x3b51f5)['json'](_0x1f6d26);}};}function respondWithFilteredResult(_0x11ca10,_0x1084d2){return function(_0x224ae4){if(_0x224ae4){var _0x50db9b=typeof _0x1084d2[_0xa1c9('0x20')]==='undefined'&&typeof _0x1084d2[_0xa1c9('0x21')]===_0xa1c9('0x22');var _0x204d54=_0x224ae4['count'];var _0x3a1110=_0x50db9b?0x0:_0x1084d2[_0xa1c9('0x20')];var _0x128732=_0x50db9b?_0x224ae4['count']:_0x1084d2[_0xa1c9('0x20')]+_0x1084d2[_0xa1c9('0x21')];var _0x4c6dbb;if(_0x128732>=_0x204d54){_0x128732=_0x204d54;_0x4c6dbb=0xc8;}else{_0x4c6dbb=0xce;}_0x11ca10[_0xa1c9('0x1e')](_0x4c6dbb);return _0x11ca10[_0xa1c9('0x23')](_0xa1c9('0x24'),_0x3a1110+'-'+_0x128732+'/'+_0x204d54)['json'](_0x224ae4);}return null;};}function patchUpdates(_0x29f1b1){return function(_0x3dcec5){try{jsonpatch[_0xa1c9('0x25')](_0x3dcec5,_0x29f1b1,!![]);}catch(_0x23a461){return BPromise[_0xa1c9('0x26')](_0x23a461);}return _0x3dcec5['save']();};}function saveUpdates(_0x50b16b,_0x200749){return function(_0x50b16d){if(_0x50b16d){return _0x50b16d[_0xa1c9('0x27')](_0x50b16b)[_0xa1c9('0x28')](function(_0x1c6f37){return _0x1c6f37;});}return null;};}function removeEntity(_0x3059eb,_0x339ed1){return function(_0x522dc0){if(_0x522dc0){return _0x522dc0[_0xa1c9('0x29')]()[_0xa1c9('0x28')](function(){var _0x20cbe1=_0x522dc0['get']({'plain':!![]});var _0x133f80=_0xa1c9('0x2a');return db[_0xa1c9('0x2b')]['destroy']({'where':{'type':_0x133f80,'resourceId':_0x20cbe1['id']}})[_0xa1c9('0x28')](function(){return _0x522dc0;});})[_0xa1c9('0x28')](function(){_0x3059eb['status'](0xcc)[_0xa1c9('0x1f')]();});}};}function handleEntityNotFound(_0x48ce34,_0xdf6d0c){return function(_0x2404c3){if(!_0x2404c3){_0x48ce34[_0xa1c9('0x1d')](0x194);}return _0x2404c3;};}function handleError(_0x254b13,_0x40b9d5){_0x40b9d5=_0x40b9d5||0x1f4;return function(_0xe8523b){logger[_0xa1c9('0x2c')](_0xe8523b[_0xa1c9('0x2d')]);if(_0xe8523b['name']){delete _0xe8523b['name'];}_0x254b13[_0xa1c9('0x1e')](_0x40b9d5)[_0xa1c9('0x2e')](_0xe8523b);};}exports[_0xa1c9('0x2f')]=function(_0xf419d0,_0x3161b0){var _0x5b67c3={},_0x53f325={},_0x5aecd7={'count':0x0,'rows':[]};var _0x259ac3=_[_0xa1c9('0x30')](db[_0xa1c9('0x31')][_0xa1c9('0x32')],function(_0x39cf81){return{'name':_0x39cf81[_0xa1c9('0x33')],'type':_0x39cf81[_0xa1c9('0x34')]['key']};});_0x53f325[_0xa1c9('0x35')]=_['map'](_0x259ac3,_0xa1c9('0x36'));_0x53f325['query']=_[_0xa1c9('0x37')](_0xf419d0[_0xa1c9('0x38')]);_0x53f325[_0xa1c9('0x39')]=_['intersection'](_0x53f325[_0xa1c9('0x35')],_0x53f325[_0xa1c9('0x38')]);_0x5b67c3[_0xa1c9('0x3a')]=_[_0xa1c9('0x3b')](_0x53f325['model'],qs['fields'](_0xf419d0[_0xa1c9('0x38')][_0xa1c9('0x3c')]));_0x5b67c3[_0xa1c9('0x3a')]=_0x5b67c3[_0xa1c9('0x3a')][_0xa1c9('0x3d')]?_0x5b67c3[_0xa1c9('0x3a')]:_0x53f325[_0xa1c9('0x35')];if(!_0xf419d0[_0xa1c9('0x38')][_0xa1c9('0x3e')](_0xa1c9('0x3f'))){_0x5b67c3['limit']=qs[_0xa1c9('0x21')](_0xf419d0[_0xa1c9('0x38')][_0xa1c9('0x21')]);_0x5b67c3[_0xa1c9('0x20')]=qs[_0xa1c9('0x20')](_0xf419d0[_0xa1c9('0x38')]['offset']);}_0x5b67c3[_0xa1c9('0x40')]=qs[_0xa1c9('0x41')](_0xf419d0[_0xa1c9('0x38')]['sort']);_0x5b67c3[_0xa1c9('0x42')]=qs[_0xa1c9('0x39')](_['pick'](_0xf419d0[_0xa1c9('0x38')],_0x53f325[_0xa1c9('0x39')]),_0x259ac3);if(_0xf419d0['query']['filter']){_0x5b67c3[_0xa1c9('0x42')]=_[_0xa1c9('0x43')](_0x5b67c3[_0xa1c9('0x42')],{'$or':_[_0xa1c9('0x30')](_0x259ac3,function(_0xd9e67){if(_0xd9e67[_0xa1c9('0x34')]!==_0xa1c9('0x44')){var _0x146e47={};_0x146e47[_0xd9e67[_0xa1c9('0x36')]]={'$like':'%'+_0xf419d0[_0xa1c9('0x38')]['filter']+'%'};return _0x146e47;}})});}_0x5b67c3=_['merge']({},_0x5b67c3,_0xf419d0[_0xa1c9('0x45')]);var _0x46920c={'where':_0x5b67c3['where']};return db[_0xa1c9('0x31')][_0xa1c9('0x46')](_0x46920c)[_0xa1c9('0x28')](function(_0x36c846){_0x5aecd7[_0xa1c9('0x46')]=_0x36c846;if(_0xf419d0[_0xa1c9('0x38')][_0xa1c9('0x47')]){_0x5b67c3[_0xa1c9('0x48')]=[{'all':!![]}];}return db[_0xa1c9('0x31')][_0xa1c9('0x49')](_0x5b67c3);})[_0xa1c9('0x28')](function(_0x50cc27){_0x5aecd7[_0xa1c9('0x4a')]=_0x50cc27;return _0x5aecd7;})['then'](respondWithFilteredResult(_0x3161b0,_0x5b67c3))[_0xa1c9('0x4b')](handleError(_0x3161b0,null));};exports['show']=function(_0x42be67,_0x4a9e02){var _0x43598b={'raw':![],'where':{'id':_0x42be67['params']['id']}},_0x18bb43={};_0x18bb43[_0xa1c9('0x35')]=_[_0xa1c9('0x37')](db['VoicePrefix'][_0xa1c9('0x32')]);_0x18bb43[_0xa1c9('0x38')]=_[_0xa1c9('0x37')](_0x42be67[_0xa1c9('0x38')]);_0x18bb43[_0xa1c9('0x39')]=_[_0xa1c9('0x3b')](_0x18bb43['model'],_0x18bb43[_0xa1c9('0x38')]);_0x43598b[_0xa1c9('0x3a')]=_[_0xa1c9('0x3b')](_0x18bb43[_0xa1c9('0x35')],qs[_0xa1c9('0x3c')](_0x42be67['query']['fields']));_0x43598b['attributes']=_0x43598b[_0xa1c9('0x3a')][_0xa1c9('0x3d')]?_0x43598b[_0xa1c9('0x3a')]:_0x18bb43['model'];if(_0x42be67[_0xa1c9('0x38')][_0xa1c9('0x47')]){_0x43598b['include']=[{'all':!![]}];}_0x43598b=_[_0xa1c9('0x43')]({},_0x43598b,_0x42be67['options']);return db['VoicePrefix'][_0xa1c9('0x4c')](_0x43598b)[_0xa1c9('0x28')](handleEntityNotFound(_0x4a9e02,null))[_0xa1c9('0x28')](respondWithResult(_0x4a9e02,null))[_0xa1c9('0x4b')](handleError(_0x4a9e02,null));};exports[_0xa1c9('0x29')]=function(_0x31fbb8,_0x18aa46){return db[_0xa1c9('0x31')][_0xa1c9('0x4c')]({'where':{'id':_0x31fbb8[_0xa1c9('0x4d')]['id']}})[_0xa1c9('0x28')](handleEntityNotFound(_0x18aa46,null))[_0xa1c9('0x28')](removeEntity(_0x18aa46,null))[_0xa1c9('0x4b')](handleError(_0x18aa46,null));};exports[_0xa1c9('0x4e')]=function(_0x149450,_0x112f82){return db[_0xa1c9('0x31')][_0xa1c9('0x4e')]()[_0xa1c9('0x28')](respondWithResult(_0x112f82,null))['catch'](handleError(_0x112f82,null));};exports['create']=function(_0x12118e,_0x6160fc){var _0x66a5eb;return db[_0xa1c9('0x4f')]['transaction'](function(_0x449e85){return db[_0xa1c9('0x31')][_0xa1c9('0x50')](_0x12118e['body'],{'transaction':_0x449e85})[_0xa1c9('0x28')](function(_0x3f650a){_0x66a5eb=_0x3f650a['get']({'plain':!![]});return db['VoiceExtension'][_0xa1c9('0x4c')]({'where':{'id':_0x66a5eb['VoiceExtensionId']},'raw':!![]})[_0xa1c9('0x28')](function(_0x1bd5c7){return createVoicePrefixExtensions(_0x66a5eb,_0x1bd5c7,_0x449e85);});});})[_0xa1c9('0x28')](function(){var _0x4c1165=_0x12118e['user'][_0xa1c9('0x51')]({'plain':!![]});if(!_0x4c1165)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4c1165[_0xa1c9('0x52')]==='user'){var _0x3334ad=_0x66a5eb;return db[_0xa1c9('0x53')][_0xa1c9('0x4c')]({'where':{'name':_0xa1c9('0x2a'),'userProfileId':_0x4c1165[_0xa1c9('0x54')]},'raw':!![]})[_0xa1c9('0x28')](function(_0x3917ed){if(_0x3917ed&&_0x3917ed['autoAssociation']===0x0){return db[_0xa1c9('0x2b')][_0xa1c9('0x50')]({'name':_0x3334ad['name'],'resourceId':_0x3334ad['id'],'type':_0x3917ed['name'],'sectionId':_0x3917ed['id']},{})['then'](function(){return _0x66a5eb;});}else{return _0x66a5eb;}})[_0xa1c9('0x4b')](function(_0x55fe87){logger[_0xa1c9('0x2c')](_0xa1c9('0x55'),_0x55fe87);throw _0x55fe87;});}return _0x66a5eb;})[_0xa1c9('0x28')](respondWithResult(_0x6160fc,null))[_0xa1c9('0x4b')](handleError(_0x6160fc,null));};function Extension(_0x2f0c80,_0x5b81f4,_0x4bf711,_0x48950c){this['context']=_0xa1c9('0x56');this[_0xa1c9('0x57')]=_0x2f0c80;this[_0xa1c9('0x58')]=_0x4bf711;this[_0xa1c9('0x34')]=_0xa1c9('0x59');this[_0xa1c9('0x5a')]=_0xa1c9('0x5b');this[_0xa1c9('0x5c')]=_0x5b81f4;this[_0xa1c9('0x5d')]=_0x48950c;}function createVoicePrefixExtensions(_0x317799,_0x4639cf,_0xef5d24){return new BPromise(function(_0x288267,_0x29d833){var _0x51f675=new Extension(formatPrefixName(_0x317799[_0xa1c9('0x5e')]),0x1,_0xa1c9('0x5f'),_0xa1c9('0x60'));_0x51f675[_0xa1c9('0x61')]=_0x317799['id'];return db['VoiceExtension'][_0xa1c9('0x50')](_0x51f675,{'transaction':_0xef5d24})[_0xa1c9('0x28')](function(_0x1b2cff){var _0x39ffed=_0x1b2cff['get']({'plain':!![]});var _0x4b9aa8=_[_0xa1c9('0x30')](addVoicePrefixExtensions(_0x317799,_0x4639cf),function(_0x2a89d2){_0x2a89d2[_0xa1c9('0x62')]=_0x39ffed['id'];_0x2a89d2[_0xa1c9('0x61')]=_0x317799['id'];return _0x2a89d2;});return db[_0xa1c9('0x63')]['bulkCreate'](_0x4b9aa8,{'transaction':_0xef5d24})[_0xa1c9('0x28')](function(_0x21abdf){if(!_0x21abdf){return _0x29d833(_0xa1c9('0x64'));}else{return _0x288267(_0x21abdf);}})[_0xa1c9('0x4b')](function(_0x5ba7aa){return _0x29d833(_0x5ba7aa);});});;});};function addVoicePrefixExtensions(_0x37613f,_0x17d848){var _0xa18fa4=[];var _0x5a5c65=formatPrefixName(_0x37613f[_0xa1c9('0x5e')]);_0xa18fa4[_0xa1c9('0x65')](new Extension(_0x5a5c65,0x2,'Set',_0xa1c9('0x66')+_0x37613f[_0xa1c9('0x36')]));if(_0x37613f[_0xa1c9('0x67')]){_0xa18fa4[_0xa1c9('0x65')](new Extension(_0x5a5c65,0x3,_0xa1c9('0x68'),_0xa1c9('0x69')+_0x37613f[_0xa1c9('0x67')]));}else{_0xa18fa4[_0xa1c9('0x65')](new Extension(_0x5a5c65,0x3,_0xa1c9('0x5f'),_0xa1c9('0x6a')));}_0xa18fa4[_0xa1c9('0x65')](new Extension(_0x5a5c65,0x4,'goto',_0x17d848[_0xa1c9('0x6b')]+','+_0xa1c9('0x6c')+(0x8+_0x37613f[_0xa1c9('0x36')][_0xa1c9('0x3d')])+'}'+','+0x1));return _0xa18fa4;}function formatPrefixName(_0x5961aa){var _0x358481='_';for(var _0xdbc56a=0x0;_0xdbc56a<_0x5961aa[_0xa1c9('0x3d')];_0xdbc56a++){if(_0x5961aa[_0xa1c9('0x6d')](_0xdbc56a)=='-'){_0x358481+=_0x5961aa[_0xa1c9('0x6d')](_0xdbc56a);}else{_0x358481+='['+_0x5961aa[_0xa1c9('0x6d')](_0xdbc56a)+']';}}_0x358481+='.';return _0x358481;}exports[_0xa1c9('0x27')]=function(_0x27048c,_0xb24e0b,_0x178e47){var _0x1fec82=_0x27048c[_0xa1c9('0x6e')];_0x1fec82[_0xa1c9('0x5e')]=_0xa1c9('0x6f')+_0x1fec82['name']+'-';return db[_0xa1c9('0x4f')][_0xa1c9('0x70')](function(_0x1f219d){return db[_0xa1c9('0x31')][_0xa1c9('0x27')](_0x1fec82,{'where':{'id':_0x1fec82['id']},'transaction':_0x1f219d})[_0xa1c9('0x28')](function(){return db[_0xa1c9('0x63')]['destroy']({'where':{'VoicePrefixId':_0x1fec82['id']},'transaction':_0x1f219d})[_0xa1c9('0x28')](function(){return db[_0xa1c9('0x63')]['find']({'where':{'id':_0x1fec82[_0xa1c9('0x62')]},'raw':!![]})[_0xa1c9('0x28')](function(_0x150d76){return createVoicePrefixExtensions(_0x1fec82,_0x150d76,_0x1f219d);});});});})[_0xa1c9('0x28')](function(){return db['VoicePrefix'][_0xa1c9('0x71')](_0x1fec82['id']);})['then'](respondWithResult(_0xb24e0b,null))['catch'](handleError(_0xb24e0b,null));};exports[_0xa1c9('0x72')]=function(_0x134d3f,_0x40f420,_0x423c58){return db['VoicePrefix'][_0xa1c9('0x4c')]({'where':{'id':_0x134d3f[_0xa1c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x40f420,null))[_0xa1c9('0x28')](function(_0x464da9){if(_0x464da9){return _0x464da9[_0xa1c9('0x72')](_0x134d3f[_0xa1c9('0x6e')][_0xa1c9('0x73')],_[_0xa1c9('0x74')](_0x134d3f['body'],['ids','id'])||{})[_0xa1c9('0x75')](function(_0x52e78b){for(var _0x3de2c7=0x0;_0x3de2c7<_0x134d3f[_0xa1c9('0x6e')][_0xa1c9('0x73')][_0xa1c9('0x3d')];_0x3de2c7+=0x1){socket[_0xa1c9('0x76')](_0xa1c9('0x77'),{'UserId':Number(_0x134d3f[_0xa1c9('0x6e')][_0xa1c9('0x73')][_0x3de2c7]),'VoicePrefixId':Number(_0x134d3f[_0xa1c9('0x4d')]['id'])});}return _0x52e78b;});}})['then'](respondWithResult(_0x40f420,null))[_0xa1c9('0x4b')](handleError(_0x40f420,null));};exports['removeAgents']=function(_0x4a8841,_0x8bc83d,_0x518811){return db[_0xa1c9('0x31')][_0xa1c9('0x4c')]({'where':{'id':_0x4a8841[_0xa1c9('0x4d')]['id']}})[_0xa1c9('0x28')](handleEntityNotFound(_0x8bc83d,null))[_0xa1c9('0x28')](function(_0x2a17b7){if(_0x2a17b7){return _0x2a17b7[_0xa1c9('0x78')](_0x4a8841['query'][_0xa1c9('0x73')])[_0xa1c9('0x28')](function(){if(_[_0xa1c9('0x79')](_0x4a8841['query']['ids'])){for(var _0x3f4f76=0x0;_0x3f4f76<_0x4a8841['query'][_0xa1c9('0x73')][_0xa1c9('0x3d')];_0x3f4f76+=0x1){socket[_0xa1c9('0x76')](_0xa1c9('0x7a'),{'UserId':Number(_0x4a8841['query'][_0xa1c9('0x73')][_0x3f4f76]),'VoicePrefixId':Number(_0x4a8841[_0xa1c9('0x4d')]['id'])});}}else{socket[_0xa1c9('0x76')](_0xa1c9('0x7a'),{'UserId':Number(_0x4a8841[_0xa1c9('0x38')]['ids']),'VoicePrefixId':Number(_0x4a8841[_0xa1c9('0x4d')]['id'])});}});}})[_0xa1c9('0x28')](respondWithStatusCode(_0x8bc83d,null))[_0xa1c9('0x4b')](handleError(_0x8bc83d,null));};exports['getAgents']=function(_0x3936cb,_0x175662,_0x134935){var _0x197721={};var _0x7281bd={};var _0x35a356;var _0x53ea3b;return db[_0xa1c9('0x31')]['findOne']({'where':{'id':_0x3936cb[_0xa1c9('0x4d')]['id']}})[_0xa1c9('0x28')](handleEntityNotFound(_0x175662,null))['then'](function(_0x28d323){if(_0x28d323){_0x35a356=_0x28d323;_0x7281bd['model']=_[_0xa1c9('0x37')](db[_0xa1c9('0x7b')][_0xa1c9('0x32')]);_0x7281bd[_0xa1c9('0x38')]=_[_0xa1c9('0x37')](_0x3936cb[_0xa1c9('0x38')]);_0x7281bd[_0xa1c9('0x39')]=_[_0xa1c9('0x3b')](_0x7281bd[_0xa1c9('0x35')],_0x7281bd[_0xa1c9('0x38')]);_0x197721[_0xa1c9('0x3a')]=_[_0xa1c9('0x3b')](_0x7281bd[_0xa1c9('0x35')],qs[_0xa1c9('0x3c')](_0x3936cb[_0xa1c9('0x38')][_0xa1c9('0x3c')]));_0x197721['attributes']=_0x197721['attributes'][_0xa1c9('0x3d')]?_0x197721[_0xa1c9('0x3a')]:_0x7281bd[_0xa1c9('0x35')];_0x197721['order']=qs[_0xa1c9('0x41')](_0x3936cb['query']['sort']);_0x197721[_0xa1c9('0x42')]=qs[_0xa1c9('0x39')](_['pick'](_0x3936cb[_0xa1c9('0x38')],_0x7281bd['filters']));if(_0x3936cb['query'][_0xa1c9('0x7c')]){_0x197721['where']=_[_0xa1c9('0x43')](_0x197721[_0xa1c9('0x42')],{'$or':_['map'](_0x197721[_0xa1c9('0x3a')],function(_0x1277eb){var _0x88cb2c={};_0x88cb2c[_0x1277eb]={'$like':'%'+_0x3936cb[_0xa1c9('0x38')]['filter']+'%'};return _0x88cb2c;})});}_0x197721=_[_0xa1c9('0x43')]({},_0x197721,_0x3936cb[_0xa1c9('0x45')]);return _0x35a356[_0xa1c9('0x7d')](_0x197721);}})[_0xa1c9('0x28')](function(_0x465162){if(_0x465162){_0x53ea3b=_0x465162[_0xa1c9('0x3d')];if(!_0x3936cb['query'][_0xa1c9('0x3e')](_0xa1c9('0x3f'))){_0x197721['limit']=qs['limit'](_0x3936cb[_0xa1c9('0x38')][_0xa1c9('0x21')]);_0x197721[_0xa1c9('0x20')]=qs[_0xa1c9('0x20')](_0x3936cb[_0xa1c9('0x38')][_0xa1c9('0x20')]);}return _0x35a356['getAgents'](_0x197721);}})[_0xa1c9('0x28')](function(_0x4deadc){if(_0x4deadc){return _0x4deadc?{'count':_0x53ea3b,'rows':_0x4deadc}:null;}})[_0xa1c9('0x28')](respondWithResult(_0x175662,null))[_0xa1c9('0x4b')](handleError(_0x175662,null));};exports[_0xa1c9('0x7e')]=function(_0x59bc9f,_0x1c8a80,_0x2780b7){var _0x26f241={};var _0x537f48={};var _0x4e1e2f;var _0x46d8d1;return db['VoicePrefix'][_0xa1c9('0x7f')]({'where':{'id':_0x59bc9f['params']['id']}})[_0xa1c9('0x28')](handleEntityNotFound(_0x1c8a80,null))[_0xa1c9('0x28')](function(_0x2d2374){if(_0x2d2374){_0x4e1e2f=_0x2d2374;_0x537f48['model']=_['keys'](db['Team'][_0xa1c9('0x32')]);_0x537f48[_0xa1c9('0x38')]=_[_0xa1c9('0x37')](_0x59bc9f[_0xa1c9('0x38')]);_0x537f48['filters']=_['intersection'](_0x537f48[_0xa1c9('0x35')],_0x537f48['query']);_0x26f241[_0xa1c9('0x3a')]=_[_0xa1c9('0x3b')](_0x537f48[_0xa1c9('0x35')],qs['fields'](_0x59bc9f[_0xa1c9('0x38')][_0xa1c9('0x3c')]));_0x26f241[_0xa1c9('0x3a')]=_0x26f241[_0xa1c9('0x3a')][_0xa1c9('0x3d')]?_0x26f241[_0xa1c9('0x3a')]:_0x537f48[_0xa1c9('0x35')];_0x26f241[_0xa1c9('0x40')]=qs[_0xa1c9('0x41')](_0x59bc9f[_0xa1c9('0x38')]['sort']);_0x26f241[_0xa1c9('0x42')]=qs[_0xa1c9('0x39')](_['pick'](_0x59bc9f[_0xa1c9('0x38')],_0x537f48[_0xa1c9('0x39')]));if(_0x59bc9f[_0xa1c9('0x38')][_0xa1c9('0x7c')]){_0x26f241[_0xa1c9('0x42')]=_['merge'](_0x26f241[_0xa1c9('0x42')],{'$or':_['map'](_0x26f241[_0xa1c9('0x3a')],function(_0x2c04c5){var _0x137a58={};_0x137a58[_0x2c04c5]={'$like':'%'+_0x59bc9f['query'][_0xa1c9('0x7c')]+'%'};return _0x137a58;})});}_0x26f241=_[_0xa1c9('0x43')]({},_0x26f241,_0x59bc9f[_0xa1c9('0x45')]);return _0x4e1e2f[_0xa1c9('0x7e')](_0x26f241);}})[_0xa1c9('0x28')](function(_0x328fa7){if(_0x328fa7){_0x46d8d1=_0x328fa7[_0xa1c9('0x3d')];if(!_0x59bc9f['query'][_0xa1c9('0x3e')](_0xa1c9('0x3f'))){_0x26f241[_0xa1c9('0x21')]=qs['limit'](_0x59bc9f[_0xa1c9('0x38')][_0xa1c9('0x21')]);_0x26f241['offset']=qs[_0xa1c9('0x20')](_0x59bc9f['query'][_0xa1c9('0x20')]);}return _0x4e1e2f[_0xa1c9('0x7e')](_0x26f241);}})[_0xa1c9('0x28')](function(_0x3e5016){if(_0x3e5016){return _0x3e5016?{'count':_0x46d8d1,'rows':_0x3e5016}:null;}})[_0xa1c9('0x28')](respondWithResult(_0x1c8a80,null))['catch'](handleError(_0x1c8a80,null));};exports[_0xa1c9('0x80')]=function(_0xabacf1,_0x38a7fc,_0x2a3082){var _0x276c98=_0xabacf1[_0xa1c9('0x6e')][_0xa1c9('0x73')];var _0x48520d;return db[_0xa1c9('0x81')][_0xa1c9('0x49')]({'where':{'id':_0x276c98},'attributes':['id'],'include':[{'model':db[_0xa1c9('0x7b')],'as':_0xa1c9('0x82'),'attributes':['id','name',_0xa1c9('0x83'),_0xa1c9('0x84'),'interface'],'raw':!![]}]})[_0xa1c9('0x28')](function(_0x2a82fd){if(_0x2a82fd){_0x48520d=_0x2a82fd;var _0x419cf2=_[_0xa1c9('0x85')](_0x2a82fd,function(_0x51884d){var _0x52360b=_0x51884d[_0xa1c9('0x51')]({'plain':!![]});return _0x52360b['Agents'];});return db[_0xa1c9('0x31')]['find']({'where':{'id':_0xabacf1['params']['id']}})[_0xa1c9('0x28')](function(_0x507b2a){return db[_0xa1c9('0x4f')][_0xa1c9('0x70')](function(_0x296607){return _0x507b2a[_0xa1c9('0x80')](_0x276c98,{'transaction':_0x296607})[_0xa1c9('0x28')](function(){return BPromise[_0xa1c9('0x86')](_0x48520d,function(_0x531c20){return db[_0xa1c9('0x87')]['upsert']({'TeamId':_0x531c20['id'],'VoicePrefixId':_0xabacf1[_0xa1c9('0x4d')]['id']},{'transaction':_0x296607});});})[_0xa1c9('0x28')](function(){return BPromise['each'](_0x419cf2,function(_0x110617){return db[_0xa1c9('0x88')][_0xa1c9('0x89')]({'where':{'UserId':_0x110617['id'],'VoicePrefixId':_0xabacf1[_0xa1c9('0x4d')]['id']},'transaction':_0x296607});});})[_0xa1c9('0x28')](function(){_0x419cf2[_0xa1c9('0x8a')](function(_0x5640bb){socket[_0xa1c9('0x76')](_0xa1c9('0x77'),{'UserId':_0x5640bb['id'],'VoicePrefixId':_0x507b2a['id']});});});});});}})[_0xa1c9('0x28')](respondWithStatusCode(_0x38a7fc,null))['catch'](handleError(_0x38a7fc,null));};exports[_0xa1c9('0x8b')]=function(_0x4c8c5e,_0x3cb7d4,_0x5c504c){return db['Team'][_0xa1c9('0x49')]({'where':{'id':_0x4c8c5e['query'][_0xa1c9('0x73')]},'attributes':['id'],'include':[{'model':db[_0xa1c9('0x7b')],'as':_0xa1c9('0x82'),'attributes':['id'],'raw':!![]}]})[_0xa1c9('0x28')](handleEntityNotFound(_0x3cb7d4,null))['then'](function(_0x4423e8){var _0x2c75e6=_['map'](_0x4423e8,'id');var _0x163589=[];var _0x5f3e31=[];var _0x6e0efe=squel[_0xa1c9('0x8c')]();_0x6e0efe[_0xa1c9('0x8d')](_0xa1c9('0x8e'))[_0xa1c9('0x8f')](_0xa1c9('0x90'),'tq')[_0xa1c9('0x91')](_0xa1c9('0x92'),'ut',_0xa1c9('0x93'))[_0xa1c9('0x42')](_0xa1c9('0x94'),_0x4c8c5e[_0xa1c9('0x4d')]['id']);for(var _0x2953bd=0x0;_0x2953bd<_0x4423e8['length'];_0x2953bd+=0x1){let _0x28050b=_0x4423e8[_0x2953bd];for(var _0x3f998a=0x0;_0x3f998a<_0x28050b['Agents'][_0xa1c9('0x3d')];_0x3f998a+=0x1){let _0x12cdd5=_0x28050b[_0xa1c9('0x82')][_0x3f998a];var _0x1c5baa=_0x6e0efe[_0xa1c9('0x95')]();_0x1c5baa[_0xa1c9('0x42')](_0xa1c9('0x96'),_0x12cdd5['id']);_0x5f3e31[_0xa1c9('0x65')](db['sequelize']['query'](_0x1c5baa[_0xa1c9('0x97')](),{'type':db[_0xa1c9('0x4f')]['QueryTypes']['SELECT']})['then'](function(_0x5c9f06){if(_0x5c9f06['length']===0x1){return _0x12cdd5['id'];}else{var _0x4d6b40=_[_0xa1c9('0x98')](_[_0xa1c9('0x30')](_0x5c9f06,_0xa1c9('0x99')),function(_0x20c454){return _[_0xa1c9('0x9a')](_0x2c75e6,_0x20c454);});if(_0x4d6b40){return _0x12cdd5['id'];}}}));}}return BPromise[_0xa1c9('0x9b')](_0x5f3e31)['then'](function(_0x22fde9){_0x163589=_(_0x163589)[_0xa1c9('0x9c')](_0x22fde9)[_0xa1c9('0x9d')]()['value']();return db[_0xa1c9('0x31')]['find']({'where':{'id':_0x4c8c5e['params']['id']}})[_0xa1c9('0x28')](function(_0x3e67f4){return db[_0xa1c9('0x4f')][_0xa1c9('0x70')](function(_0x52905a){return _0x3e67f4[_0xa1c9('0x8b')](_0x4c8c5e[_0xa1c9('0x38')][_0xa1c9('0x73')],{'transaction':_0x52905a})[_0xa1c9('0x28')](function(){if(!_[_0xa1c9('0x9e')](_0x163589)){return _0x3e67f4['removeAgents'](_0x163589,{'transaction':_0x52905a});}})[_0xa1c9('0x28')](function(){_0x163589['forEach'](function(_0x424be7){socket[_0xa1c9('0x76')]('userVoicePrefix:remove',{'UserId':_0x424be7,'VoicePrefixId':_0x3e67f4['id']});});});});});});})[_0xa1c9('0x28')](respondWithStatusCode(_0x3cb7d4,null))[_0xa1c9('0x4b')](handleError(_0x3cb7d4,null));};
\ No newline at end of file
index f5bed86..9b4ce9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16c3=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x16c3,0x1e1));var _0x316c=function(_0x9697bb,_0x9d5d65){_0x9697bb=_0x9697bb-0x0;var _0x280019=_0x16c3[_0x9697bb];return _0x280019;};'use strict';var EventEmitter=require(_0x316c('0x0'));var VoicePrefix=require(_0x316c('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x316c('0x2')](0x0);var events={'afterCreate':_0x316c('0x3'),'afterUpdate':_0x316c('0x4'),'afterDestroy':_0x316c('0x5')};function emitEvent(_0x165560){return function(_0xb05549,_0x200233,_0x4b47ff){VoicePrefixEvents['emit'](_0x165560+':'+_0xb05549['id'],_0xb05549);VoicePrefixEvents[_0x316c('0x6')](_0x165560,_0xb05549);_0x4b47ff(null);};}for(var e in events){if(events[_0x316c('0x7')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x316c('0x8')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xfc6d=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove'];(function(_0x22552d,_0x31be41){var _0x4f038d=function(_0x17f0f7){while(--_0x17f0f7){_0x22552d['push'](_0x22552d['shift']());}};_0x4f038d(++_0x31be41);}(_0xfc6d,0x117));var _0xdfc6=function(_0x203ab9,_0x132be7){_0x203ab9=_0x203ab9-0x0;var _0x4ec0e7=_0xfc6d[_0x203ab9];return _0x4ec0e7;};'use strict';var EventEmitter=require(_0xdfc6('0x0'));var VoicePrefix=require(_0xdfc6('0x1'))['db'][_0xdfc6('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xdfc6('0x3')](0x0);var events={'afterCreate':_0xdfc6('0x4'),'afterUpdate':_0xdfc6('0x5'),'afterDestroy':_0xdfc6('0x6')};function emitEvent(_0x7a26a3){return function(_0x342574,_0x256c53,_0xd9fd0b){VoicePrefixEvents[_0xdfc6('0x7')](_0x7a26a3+':'+_0x342574['id'],_0x342574);VoicePrefixEvents[_0xdfc6('0x7')](_0x7a26a3,_0x342574);_0xd9fd0b(null);};}for(var e in events){if(events[_0xdfc6('0x8')](e)){var event=events[e];VoicePrefix[_0xdfc6('0x9')](e,emitEvent(event));}}module[_0xdfc6('0xa')]=VoicePrefixEvents;
\ No newline at end of file
index a08a4dc..00afca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a0b=['lodash','util','../../config/logger','moment','path','../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','voice_prefixes'];(function(_0x7179ba,_0x37504f){var _0x4ad820=function(_0x131107){while(--_0x131107){_0x7179ba['push'](_0x7179ba['shift']());}};_0x4ad820(++_0x37504f);}(_0x9a0b,0xf0));var _0xb9a0=function(_0x5eb585,_0x3c12fd){_0x5eb585=_0x5eb585-0x0;var _0x100205=_0x9a0b[_0x5eb585];return _0x100205;};'use strict';var _=require(_0xb9a0('0x0'));var util=require(_0xb9a0('0x1'));var logger=require(_0xb9a0('0x2'))('api');var moment=require(_0xb9a0('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb9a0('0x4'));var rimraf=require('rimraf');var config=require(_0xb9a0('0x5'));var attributes=require(_0xb9a0('0x6'));module[_0xb9a0('0x7')]=function(_0x58e694,_0x507dd4){return _0x58e694['define'](_0xb9a0('0x8'),attributes,{'tableName':_0xb9a0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc414=['moment','path','rimraf','../../config/environment','exports','define','VoicePrefix','util','../../config/logger','api'];(function(_0x55b2cf,_0x2d3861){var _0x5d3cbd=function(_0x5b25cc){while(--_0x5b25cc){_0x55b2cf['push'](_0x55b2cf['shift']());}};_0x5d3cbd(++_0x2d3861);}(_0xc414,0x75));var _0x4c41=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc414[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x4c41('0x0'));var logger=require(_0x4c41('0x1'))(_0x4c41('0x2'));var moment=require(_0x4c41('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c41('0x4'));var rimraf=require(_0x4c41('0x5'));var config=require(_0x4c41('0x6'));var attributes=require('./voicePrefix.attributes');module[_0x4c41('0x7')]=function(_0xeb5623,_0x4b83f3){return _0xeb5623[_0x4c41('0x8')](_0x4c41('0x9'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fbdec57..509c61b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['http','defaults','redis','localhost','./voicePrefix.socket','register','request','info','VoicePrefix,\x20%s,\x20%s','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x4b8d17,_0x2f7260){_0x4b8d17=_0x4b8d17-0x0;var _0x34c3d1=_0xc6ac[_0x4b8d17];return _0x34c3d1;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});config['redis']=_[_0xcc6a('0xe')](config[_0xcc6a('0xf')],{'host':_0xcc6a('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcc6a('0xf')]));require(_0xcc6a('0x11'))[_0xcc6a('0x12')](socket);function respondWithRpcPromise(_0x463ebb,_0x3eb04a,_0x5e91a2){return new BPromise(function(_0x30a004,_0x290119){return client[_0xcc6a('0x13')](_0x463ebb,_0x5e91a2)['then'](function(_0x1d91a5){logger[_0xcc6a('0x14')](_0xcc6a('0x15'),_0x3eb04a,'request\x20sent');logger['debug'](_0xcc6a('0x16'),_0x3eb04a,_0xcc6a('0x17'),JSON[_0xcc6a('0x18')](_0x1d91a5));if(_0x1d91a5['error']){if(_0x1d91a5['error'][_0xcc6a('0x19')]===0x1f4){logger[_0xcc6a('0x1a')](_0xcc6a('0x15'),_0x3eb04a,_0x1d91a5[_0xcc6a('0x1a')][_0xcc6a('0x1b')]);return _0x290119(_0x1d91a5[_0xcc6a('0x1a')][_0xcc6a('0x1b')]);}logger[_0xcc6a('0x1a')]('VoicePrefix,\x20%s,\x20%s',_0x3eb04a,_0x1d91a5['error']['message']);return _0x30a004(_0x1d91a5[_0xcc6a('0x1a')][_0xcc6a('0x1b')]);}else{logger[_0xcc6a('0x14')](_0xcc6a('0x15'),_0x3eb04a,_0xcc6a('0x17'));_0x30a004(_0x1d91a5[_0xcc6a('0x1c')][_0xcc6a('0x1b')]);}})[_0xcc6a('0x1d')](function(_0x374e51){logger[_0xcc6a('0x1a')](_0xcc6a('0x15'),_0x3eb04a,_0x374e51);_0x290119(_0x374e51);});});}
\ No newline at end of file
+var _0xcfcb=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x17fc83,_0x155791){var _0x122710=function(_0x5ac2ee){while(--_0x5ac2ee){_0x17fc83['push'](_0x17fc83['shift']());}};_0x122710(++_0x155791);}(_0xcfcb,0x7a));var _0xbcfc=function(_0x496cba,_0x92dd1f){_0x496cba=_0x496cba-0x0;var _0x248927=_0xcfcb[_0x496cba];return _0x248927;};'use strict';var _=require(_0xbcfc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbcfc('0x1'));var fs=require('fs');var Redis=require(_0xbcfc('0x2'));var db=require(_0xbcfc('0x3'))['db'];var utils=require(_0xbcfc('0x4'));var logger=require(_0xbcfc('0x5'))(_0xbcfc('0x6'));var config=require(_0xbcfc('0x7'));var jayson=require(_0xbcfc('0x8'));var client=jayson[_0xbcfc('0x9')][_0xbcfc('0xa')]({'port':0x232a});config[_0xbcfc('0xb')]=_[_0xbcfc('0xc')](config[_0xbcfc('0xb')],{'host':_0xbcfc('0xd'),'port':0x18eb});var socket=require(_0xbcfc('0xe'))(new Redis(config[_0xbcfc('0xb')]));require(_0xbcfc('0xf'))['register'](socket);function respondWithRpcPromise(_0x4f80d7,_0x4d8e4b,_0x541fe2){return new BPromise(function(_0x2fda61,_0x39dbff){return client[_0xbcfc('0x10')](_0x4f80d7,_0x541fe2)[_0xbcfc('0x11')](function(_0x35f4d6){logger[_0xbcfc('0x12')](_0xbcfc('0x13'),_0x4d8e4b,'request\x20sent');logger['debug'](_0xbcfc('0x14'),_0x4d8e4b,_0xbcfc('0x15'),JSON['stringify'](_0x35f4d6));if(_0x35f4d6[_0xbcfc('0x16')]){if(_0x35f4d6['error'][_0xbcfc('0x17')]===0x1f4){logger[_0xbcfc('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x4d8e4b,_0x35f4d6[_0xbcfc('0x16')][_0xbcfc('0x18')]);return _0x39dbff(_0x35f4d6[_0xbcfc('0x16')][_0xbcfc('0x18')]);}logger[_0xbcfc('0x16')](_0xbcfc('0x13'),_0x4d8e4b,_0x35f4d6['error'][_0xbcfc('0x18')]);return _0x2fda61(_0x35f4d6[_0xbcfc('0x16')]['message']);}else{logger[_0xbcfc('0x12')](_0xbcfc('0x13'),_0x4d8e4b,'request\x20sent');_0x2fda61(_0x35f4d6['result'][_0xbcfc('0x18')]);}})[_0xbcfc('0x19')](function(_0x24347f){logger['error'](_0xbcfc('0x13'),_0x4d8e4b,_0x24347f);_0x39dbff(_0x24347f);});});}
\ No newline at end of file
index 190f0b0..641562e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffdc=['length','./voicePrefix.events','save','update','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xffdc,0x7f));var _0xcffd=function(_0x2a2e72,_0x1de962){_0x2a2e72=_0x2a2e72-0x0;var _0x3cfb4a=_0xffdc[_0x2a2e72];return _0x3cfb4a;};'use strict';var VoicePrefixEvents=require(_0xcffd('0x0'));var events=[_0xcffd('0x1'),'remove',_0xcffd('0x2')];function createListener(_0x2df854,_0x5d6a91){return function(_0x31166d){_0x5d6a91[_0xcffd('0x3')](_0x2df854,_0x31166d);};}function removeListener(_0x37c566,_0x3a2c59){return function(){VoicePrefixEvents[_0xcffd('0x4')](_0x37c566,_0x3a2c59);};}exports['register']=function(_0x1a1bce){for(var _0x963fad=0x0,_0x12e830=events[_0xcffd('0x5')];_0x963fad<_0x12e830;_0x963fad++){var _0x199df3=events[_0x963fad];var _0x463334=createListener('voicePrefix:'+_0x199df3,_0x1a1bce);VoicePrefixEvents['on'](_0x199df3,_0x463334);}};
\ No newline at end of file
+var _0x1789=['register','voicePrefix:','./voicePrefix.events','save','remove','emit'];(function(_0x57dbce,_0x2a4604){var _0x2ab396=function(_0x321f80){while(--_0x321f80){_0x57dbce['push'](_0x57dbce['shift']());}};_0x2ab396(++_0x2a4604);}(_0x1789,0x92));var _0x9178=function(_0x4ec3de,_0x1c67c4){_0x4ec3de=_0x4ec3de-0x0;var _0x37478a=_0x1789[_0x4ec3de];return _0x37478a;};'use strict';var VoicePrefixEvents=require(_0x9178('0x0'));var events=[_0x9178('0x1'),_0x9178('0x2'),'update'];function createListener(_0xf9cb5d,_0xe7c1){return function(_0x3e7033){_0xe7c1[_0x9178('0x3')](_0xf9cb5d,_0x3e7033);};}function removeListener(_0x45af56,_0x5911d4){return function(){VoicePrefixEvents['removeListener'](_0x45af56,_0x5911d4);};}exports[_0x9178('0x4')]=function(_0x30f085){for(var _0x10a9fc=0x0,_0x1f00a8=events['length'];_0x10a9fc<_0x1f00a8;_0x10a9fc++){var _0x1001b0=events[_0x10a9fc];var _0x333b8b=createListener(_0x9178('0x5')+_0x1001b0,_0x30f085);VoicePrefixEvents['on'](_0x1001b0,_0x333b8b);}};
\ No newline at end of file
index a380ab2..19efc16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cd5=['getLists','post','create','/:id/clone','clone','addTeams','addAgents','addLists','addBlackLists','update','delete','removeTeams','removeAgents','removeLists','/:id/blacklists','removeBlackLists','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','/:id','show','/:id/hoppers','/:id/hopper_histories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','getMembers','/:id/lists'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x7cd5,0x1d8));var _0x57cd=function(_0x2a6e5e,_0x56f7ef){_0x2a6e5e=_0x2a6e5e-0x0;var _0x4bbc15=_0x7cd5[_0x2a6e5e];return _0x4bbc15;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x57cd('0x0'));var express=require(_0x57cd('0x1'));var router=express[_0x57cd('0x2')]();var fs_extra=require(_0x57cd('0x3'));var auth=require(_0x57cd('0x4'));var interaction=require(_0x57cd('0x5'));var config=require(_0x57cd('0x6'));var controller=require(_0x57cd('0x7'));router[_0x57cd('0x8')]('/',auth[_0x57cd('0x9')](),controller['index']);router[_0x57cd('0x8')](_0x57cd('0xa'),auth[_0x57cd('0x9')](),controller[_0x57cd('0xb')]);router[_0x57cd('0x8')](_0x57cd('0xc'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x57cd('0x8')](_0x57cd('0xd'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0x57cd('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0x57cd('0xe')]);router[_0x57cd('0x8')](_0x57cd('0xf'),auth['isAuthenticated'](),controller[_0x57cd('0x10')]);router[_0x57cd('0x8')](_0x57cd('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0x57cd('0x8')](_0x57cd('0x12'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x13')]);router[_0x57cd('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0x57cd('0x14')]);router[_0x57cd('0x8')](_0x57cd('0x15'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x16')]);router[_0x57cd('0x8')]('/:id/blacklists',auth[_0x57cd('0x9')](),controller['getBlackLists']);router[_0x57cd('0x17')]('/',auth[_0x57cd('0x9')](),controller[_0x57cd('0x18')]);router[_0x57cd('0x17')](_0x57cd('0x19'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x1a')]);router[_0x57cd('0x17')](_0x57cd('0x11'),auth['isAuthenticated'](),controller[_0x57cd('0x1b')]);router[_0x57cd('0x17')](_0x57cd('0x12'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x1c')]);router[_0x57cd('0x17')](_0x57cd('0x15'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x1d')]);router['post']('/:id/blacklists',auth[_0x57cd('0x9')](),controller[_0x57cd('0x1e')]);router['put'](_0x57cd('0xa'),auth['isAuthenticated'](),controller[_0x57cd('0x1f')]);router[_0x57cd('0x20')](_0x57cd('0xa'),auth[_0x57cd('0x9')](),controller['destroy']);router[_0x57cd('0x20')](_0x57cd('0x11'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x21')]);router['delete'](_0x57cd('0x12'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x22')]);router[_0x57cd('0x20')](_0x57cd('0x15'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x23')]);router[_0x57cd('0x20')](_0x57cd('0x24'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x25')]);module['exports']=router;
\ No newline at end of file
+var _0x067d=['getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getAgents','getMembers','/:id/lists','getLists','/:id/blacklists','post','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers'];(function(_0x14e8d3,_0x67e3a){var _0x1f565b=function(_0x2be885){while(--_0x2be885){_0x14e8d3['push'](_0x14e8d3['shift']());}};_0x1f565b(++_0x67e3a);}(_0x067d,0x96));var _0xd067=function(_0x51ece4,_0x39165c){_0x51ece4=_0x51ece4-0x0;var _0x2b7e27=_0x067d[_0x51ece4];return _0x2b7e27;};'use strict';var multer=require(_0xd067('0x0'));var util=require(_0xd067('0x1'));var path=require(_0xd067('0x2'));var timeout=require('connect-timeout');var express=require(_0xd067('0x3'));var router=express[_0xd067('0x4')]();var fs_extra=require(_0xd067('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd067('0x6'));var config=require('../../config/environment');var controller=require(_0xd067('0x7'));router[_0xd067('0x8')]('/',auth[_0xd067('0x9')](),controller[_0xd067('0xa')]);router[_0xd067('0x8')](_0xd067('0xb'),auth['isAuthenticated'](),controller[_0xd067('0xc')]);router[_0xd067('0x8')](_0xd067('0xd'),auth['isAuthenticated'](),controller[_0xd067('0xe')]);router[_0xd067('0x8')](_0xd067('0xf'),auth[_0xd067('0x9')](),controller[_0xd067('0x10')]);router[_0xd067('0x8')](_0xd067('0x11'),auth[_0xd067('0x9')](),controller[_0xd067('0x12')]);router[_0xd067('0x8')](_0xd067('0x13'),auth[_0xd067('0x9')](),controller[_0xd067('0x14')]);router[_0xd067('0x8')](_0xd067('0x15'),auth[_0xd067('0x9')](),controller['getTeams']);router[_0xd067('0x8')]('/:id/users',auth[_0xd067('0x9')](),controller[_0xd067('0x16')]);router['get']('/:id/members',auth['isAuthenticated'](),controller[_0xd067('0x17')]);router[_0xd067('0x8')](_0xd067('0x18'),auth[_0xd067('0x9')](),controller[_0xd067('0x19')]);router[_0xd067('0x8')](_0xd067('0x1a'),auth['isAuthenticated'](),controller['getBlackLists']);router[_0xd067('0x1b')]('/',auth[_0xd067('0x9')](),controller['create']);router['post'](_0xd067('0x1c'),auth[_0xd067('0x9')](),controller['clone']);router[_0xd067('0x1b')]('/:id/teams',auth['isAuthenticated'](),controller[_0xd067('0x1d')]);router[_0xd067('0x1b')]('/:id/users',auth[_0xd067('0x9')](),controller[_0xd067('0x1e')]);router['post'](_0xd067('0x18'),auth[_0xd067('0x9')](),controller[_0xd067('0x1f')]);router[_0xd067('0x1b')]('/:id/blacklists',auth[_0xd067('0x9')](),controller[_0xd067('0x20')]);router[_0xd067('0x21')](_0xd067('0xb'),auth['isAuthenticated'](),controller[_0xd067('0x22')]);router[_0xd067('0x23')](_0xd067('0xb'),auth[_0xd067('0x9')](),controller['destroy']);router[_0xd067('0x23')]('/:id/teams',auth['isAuthenticated'](),controller[_0xd067('0x24')]);router[_0xd067('0x23')]('/:id/users',auth[_0xd067('0x9')](),controller[_0xd067('0x25')]);router[_0xd067('0x23')]('/:id/lists',auth['isAuthenticated'](),controller[_0xd067('0x26')]);router[_0xd067('0x23')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0xd067('0x27')]);module[_0xd067('0x28')]=router;
\ No newline at end of file
index fe066b4..be3c31b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05dc=['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.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','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)','07:00-22:00,*,*,*','always','never','onlyIfOpen','BOOLEAN','#AMD\x20After\x20Greeting\x20Silence','#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','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','ENUM','outbound','inbound','default','fewestcalls','random','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','type','getDataValue','booked','roundrobin','INTEGER','yes','all','once','TEXT','join','periodic_announce','joinempty','split','leavewhenempty','acw','wrapuptime','Active/Disactive\x20Campaign','preview','progressive','power','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.'];(function(_0x16dd98,_0x11d346){var _0xfc7fb3=function(_0x40d7d8){while(--_0x40d7d8){_0x16dd98['push'](_0x16dd98['shift']());}};_0xfc7fb3(++_0x11d346);}(_0x05dc,0xcd));var _0xc05d=function(_0x1c270a,_0x378796){_0x1c270a=_0x1c270a-0x0;var _0x2607b8=_0x05dc[_0x1c270a];return _0x2607b8;};'use strict';var Sequelize=require(_0xc05d('0x0'));module[_0xc05d('0x1')]={'name':{'type':Sequelize[_0xc05d('0x2')],'allowNull':![],'unique':_0xc05d('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc05d('0x4')]('inbound',_0xc05d('0x5')),'allowNull':![],'defaultValue':_0xc05d('0x6')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xc05d('0x7')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0xc05d('0x4')]('rr','ringall','leastrecent',_0xc05d('0x8'),_0xc05d('0x9'),_0xc05d('0xa'),_0xc05d('0xb'),_0xc05d('0xc'),_0xc05d('0xd')),'allowNull':![],'defaultValue':_0xc05d('0xe'),'set':function(_0x51325e){this[_0xc05d('0xf')](_0xc05d('0x10'),_0x51325e?_0x51325e:_0xc05d('0xa'));},'get':function(){var _0x3a958f=this['getDataValue'](_0xc05d('0x11'));var _0x4ec359=this['getDataValue']('dialMethod');var _0x62b4e3=this[_0xc05d('0x12')]('strategy');if(_0x3a958f===_0xc05d('0x6')){return _0x62b4e3;}if(_0x4ec359===_0xc05d('0x13')&&_0x62b4e3==='rrmemory'||_0x4ec359===_0xc05d('0x13')&&_0x62b4e3===_0xc05d('0x14')){return _0x62b4e3;}if(_0x4ec359==='progressive'||_0x4ec359==='predictive'||_0x4ec359==='power'){return _0x62b4e3;}return null;}},'servicelevel':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc05d('0x15')](0xb)},'timeout':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc05d('0x2')]},'weight':{'type':Sequelize[_0xc05d('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':_0xc05d('0x16')},'autopause':{'type':Sequelize['ENUM']('yes','no',_0xc05d('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc05d('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xc05d('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xc05d('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc05d('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':_0xc05d('0x16')},'announce_holdtime':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no',_0xc05d('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc05d('0x4')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xc05d('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc05d('0x2')]},'queue_youarenext':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xc05d('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc05d('0x2')]},'queue_quantity1':{'type':Sequelize[_0xc05d('0x2')]},'queue_quantity2':{'type':Sequelize[_0xc05d('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xc05d('0x2')]},'queue_less_than':{'type':Sequelize[_0xc05d('0x2')]},'periodic_announce':{'type':Sequelize[_0xc05d('0x19')],'set':function(_0x5555cb){this['setDataValue']('periodic_announce',_0x5555cb?_0x5555cb[_0xc05d('0x1a')](','):[]);},'get':function(){return this['getDataValue'](_0xc05d('0x1b'))?this[_0xc05d('0x12')](_0xc05d('0x1b'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':_0xc05d('0x16'),'set':function(_0x130b66){this[_0xc05d('0xf')](_0xc05d('0x1c'),_0x130b66?_0x130b66[_0xc05d('0x1a')](','):undefined);},'get':function(){return this[_0xc05d('0x12')](_0xc05d('0x1c'))?this['getDataValue'](_0xc05d('0x1c'))[_0xc05d('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x480b4c){this[_0xc05d('0xf')](_0xc05d('0x1e'),_0x480b4c?_0x480b4c[_0xc05d('0x1a')](','):undefined);},'get':function(){return this[_0xc05d('0x12')]('leavewhenempty')?this[_0xc05d('0x12')](_0xc05d('0x1e'))[_0xc05d('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0xc05d('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc05d('0x2')]},'description':{'type':Sequelize[_0xc05d('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x4ae95f){this['setDataValue'](_0xc05d('0x1f'),_0x4ae95f);if(_0x4ae95f){if(this['getDataValue']('wrapuptime')<0x2){this[_0xc05d('0xf')](_0xc05d('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xc05d('0x21')},'dialMethod':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x22'),_0xc05d('0x23'),_0xc05d('0x24'),_0xc05d('0x25'),'booked'),'defaultValue':_0xc05d('0x23'),'comment':_0xc05d('0x26')},'dialLimitChannel':{'type':Sequelize[_0xc05d('0x15')](0x4)[_0xc05d('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc05d('0x28')},'dialLimitQueue':{'type':Sequelize[_0xc05d('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc05d('0x29')},'dialPowerLevel':{'type':Sequelize[_0xc05d('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xc05d('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x2c'),_0xc05d('0x2d')),'defaultValue':_0xc05d('0x2d'),'comment':_0xc05d('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xc05d('0x2f')},'dialPredictiveInterval':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc05d('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc05d('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc05d('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x31')},'dialQueueOptions':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':_0xc05d('0x32'),'comment':_0xc05d('0x33')},'dialQueueTimeout':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xc05d('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x35')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x36')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xc05d('0x37')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x38')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'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[_0xc05d('0x2')],'defaultValue':_0xc05d('0x39')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xc05d('0x3a'),_0xc05d('0x3b'),_0xc05d('0x3c')),'defaultValue':_0xc05d('0x3a')},'dialAMDActive':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xc05d('0x15')](0x9)[_0xc05d('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xc05d('0x15')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc05d('0x3e')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc05d('0x15')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc05d('0x3f')},'dialAMDMinWordLength':{'type':Sequelize[_0xc05d('0x15')](0x9)[_0xc05d('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc05d('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc05d('0x40')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc05d('0x15')](0x9)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc05d('0x41')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc05d('0x42')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xc05d('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc05d('0x43')},'dialRecallMeTimeout':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xc05d('0x4')]('DESC',_0xc05d('0x44')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xc05d('0x2')],'comment':_0xc05d('0x45')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc05d('0x46')},'dialCutDigit':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc05d('0x47')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x48')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x49')},'dialDropMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x4a')},'dialDropRetryFrequency':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x4b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x4c')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x4d')},'dialMachineMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x4e')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc05d('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x4f')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc05d('0x15')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':![],'comment':_0xc05d('0x50'),'set':function(_0x562c5a){if(!_0x562c5a)this[_0xc05d('0xf')](_0xc05d('0x51'),null);this[_0xc05d('0xf')]('mandatoryDisposition',_0x562c5a);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xc05d('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x8784=['BOOLEAN','preview','progressive','power','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','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.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','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)','#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,*,*,*','never','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#RecallMe\x20Timeout\x20(min:1)','DESC','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','outbound','STRING','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue','type','dialMethod','booked','roundrobin','predictive','INTEGER','yes','once','periodic_announce','split','joinempty','join','wrapuptime'];(function(_0x8bc421,_0x34460b){var _0x235062=function(_0x20ed64){while(--_0x20ed64){_0x8bc421['push'](_0x8bc421['shift']());}};_0x235062(++_0x34460b);}(_0x8784,0x172));var _0x4878=function(_0x173f10,_0x35db61){_0x173f10=_0x173f10-0x0;var _0x53142d=_0x8784[_0x173f10];return _0x53142d;};'use strict';var Sequelize=require(_0x4878('0x0'));module[_0x4878('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4878('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x4'),_0x4878('0x5')),'allowNull':![],'defaultValue':_0x4878('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0x4878('0x6')],'defaultValue':''},'strategy':{'type':Sequelize[_0x4878('0x3')]('rr',_0x4878('0x7'),_0x4878('0x8'),_0x4878('0x9'),_0x4878('0xa'),_0x4878('0xb'),_0x4878('0xc'),_0x4878('0xd'),'rrordered'),'allowNull':![],'defaultValue':_0x4878('0x7'),'set':function(_0xfe196b){this[_0x4878('0xe')](_0x4878('0xf'),_0xfe196b?_0xfe196b:_0x4878('0xb'));},'get':function(){var _0x1febf2=this[_0x4878('0x10')](_0x4878('0x11'));var _0x71177b=this[_0x4878('0x10')](_0x4878('0x12'));var _0x1d5f30=this['getDataValue'](_0x4878('0xf'));if(_0x1febf2===_0x4878('0x4')){return _0x1d5f30;}if(_0x71177b===_0x4878('0x13')&&_0x1d5f30==='rrmemory'||_0x71177b===_0x4878('0x13')&&_0x1d5f30===_0x4878('0x14')){return _0x1d5f30;}if(_0x71177b==='progressive'||_0x71177b===_0x4878('0x15')||_0x71177b==='power'){return _0x1d5f30;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x4878('0x16')](0xb)},'timeout':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x4878('0x6')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x4878('0x3')]('yes','no'),'defaultValue':_0x4878('0x17')},'autopause':{'type':Sequelize['ENUM'](_0x4878('0x17'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x4878('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x4878('0x3')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x4878('0x6')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x4878('0x6')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x4878('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x17'),'no'),'defaultValue':_0x4878('0x17')},'announce_holdtime':{'type':Sequelize['ENUM'](_0x4878('0x17'),'no',_0x4878('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x4878('0x6')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x17'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x4878('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x4878('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x4878('0x6')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x4878('0x6')]},'queue_quantity1':{'type':Sequelize[_0x4878('0x6')]},'queue_quantity2':{'type':Sequelize[_0x4878('0x6')]},'queue_periodic_announce':{'type':Sequelize[_0x4878('0x6')]},'queue_less_than':{'type':Sequelize[_0x4878('0x6')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x336487){this[_0x4878('0xe')]('periodic_announce',_0x336487?_0x336487['join'](','):[]);},'get':function(){return this[_0x4878('0x10')](_0x4878('0x19'))?this[_0x4878('0x10')](_0x4878('0x19'))[_0x4878('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0x4878('0x6')],'defaultValue':_0x4878('0x17'),'set':function(_0x5dd1fd){this[_0x4878('0xe')](_0x4878('0x1b'),_0x5dd1fd?_0x5dd1fd[_0x4878('0x1c')](','):undefined);},'get':function(){return this[_0x4878('0x10')](_0x4878('0x1b'))?this['getDataValue']('joinempty')['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x4878('0x6')],'defaultValue':'no','set':function(_0x19c881){this[_0x4878('0xe')]('leavewhenempty',_0x19c881?_0x19c881[_0x4878('0x1c')](','):undefined);},'get':function(){return this[_0x4878('0x10')]('leavewhenempty')?this[_0x4878('0x10')]('leavewhenempty')[_0x4878('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x4878('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x4878('0x3')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x4878('0x6')]},'description':{'type':Sequelize[_0x4878('0x6')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x1bda87){this[_0x4878('0xe')]('acw',_0x1bda87);if(_0x1bda87){if(this[_0x4878('0x10')]('wrapuptime')<0x2){this[_0x4878('0xe')](_0x4878('0x1d'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x4878('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x4878('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x1f'),_0x4878('0x20'),_0x4878('0x21'),'predictive',_0x4878('0x13')),'defaultValue':'progressive','comment':_0x4878('0x22')},'dialLimitChannel':{'type':Sequelize[_0x4878('0x16')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x4878('0x23')},'dialLimitQueue':{'type':Sequelize[_0x4878('0x16')](0x4)[_0x4878('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x4878('0x25')},'dialPowerLevel':{'type':Sequelize[_0x4878('0x26')](0x2)[_0x4878('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x4878('0x27')},'dialPredictiveOptimization':{'type':Sequelize[_0x4878('0x3')](_0x4878('0x28'),'dropRate'),'defaultValue':_0x4878('0x29'),'comment':_0x4878('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x4878('0x26')](0x2)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x4878('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0x4878('0x6')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x4878('0x6')]},'dialOriginateTimeout':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x2c')},'dialQueueOptions':{'type':Sequelize[_0x4878('0x6')],'defaultValue':_0x4878('0x2d'),'comment':_0x4878('0x2e')},'dialQueueTimeout':{'type':Sequelize[_0x4878('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x2f')},'dialQueueProject':{'type':Sequelize[_0x4878('0x6')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x4878('0x16')](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x32')},'dialGlobalMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x4878('0x33')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x4878('0x34')},'dialPrefix':{'type':Sequelize[_0x4878('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x4878('0x35'),_0x4878('0x36')),'defaultValue':_0x4878('0x37')},'dialAMDActive':{'type':Sequelize[_0x4878('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x4878('0x16')](0x9)[_0x4878('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x4878('0x38')},'dialAMDGreeting':{'type':Sequelize[_0x4878('0x16')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x4878('0x39')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x4878('0x16')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x4878('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x4878('0x16')](0x9)[_0x4878('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x4878('0x3b')},'dialAMDMinWordLength':{'type':Sequelize[_0x4878('0x16')](0x9)[_0x4878('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x4878('0x3c')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x4878('0x16')](0x9)[_0x4878('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x4878('0x3d')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x4878('0x16')](0x9)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x4878('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x4878('0x16')](0x9)[_0x4878('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x4878('0x16')](0x5)[_0x4878('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x4878('0x3e')},'dialRecallInQueue':{'type':Sequelize[_0x4878('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x4878('0x3f'),_0x4878('0x40')),'defaultValue':_0x4878('0x3f')},'dialQueueProject2':{'type':Sequelize[_0x4878('0x6')],'comment':_0x4878('0x41')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x4878('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x4878('0x42')},'dialCutDigit':{'type':Sequelize[_0x4878('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x4878('0x43')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x4878('0x16')](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x45')},'dialDropMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x46')},'dialDropRetryFrequency':{'type':Sequelize[_0x4878('0x16')](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4878('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize[_0x4878('0x16')](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x4b')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x4878('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x4878('0x16')](0x5)[_0x4878('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4878('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4878('0x16')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x4878('0x1e')],'defaultValue':![],'comment':_0x4878('0x4d'),'set':function(_0x9dbb09){if(!_0x9dbb09)this[_0x4878('0xe')](_0x4878('0x4e'),null);this[_0x4878('0xe')](_0x4878('0x4f'),_0x9dbb09);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x4878('0x16')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x4878('0x16')](0x3)[_0x4878('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index d1250d0..21be1d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf49a=['keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','merge','options','includeAll','rows','show','rawAttributes','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','UserProfileSection','getHoppers','order','pick','CmHopper','findAll','getHopperHistories','CmHopperHistory','nolimit','VoiceQueueId','getHopperFinals','findOne','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','Agents','voicePause','interface','flatMap','forEach','sequelize','transaction','each','upsert','penalty','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','ids','User','select','field','tq.TeamId','from','team_has_voice_queues','join','ut.UserId\x20=\x20?','push','QueryTypes','union','removeTeams','removeAgents','addAgents','spread','online','all','isArray','userVoiceQueue:remove','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','insert','into','fromQuery','ListId','phone','NOW()','scheduledAt','ContactId','CmListId','toString','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','name','UserProfileResource','end','error','stack','send','index','VoiceQueue','fieldName','key','model','query'];(function(_0x34e51c,_0x1f46b0){var _0x31643c=function(_0x1db6dd){while(--_0x1db6dd){_0x34e51c['push'](_0x34e51c['shift']());}};_0x31643c(++_0x1f46b0);}(_0xf49a,0x12f));var _0xaf49=function(_0x4e18bb,_0x2b28df){_0x4e18bb=_0x4e18bb-0x0;var _0x5ebf1f=_0xf49a[_0x4e18bb];return _0x5ebf1f;};'use strict';var emlformat=require(_0xaf49('0x0'));var rimraf=require(_0xaf49('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xaf49('0x2'));var moment=require(_0xaf49('0x3'));var BPromise=require(_0xaf49('0x4'));var Mustache=require('mustache');var util=require(_0xaf49('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xaf49('0x6'));var ejs=require(_0xaf49('0x7'));var fs=require('fs');var fs_extra=require(_0xaf49('0x8'));var _=require('lodash');var squel=require(_0xaf49('0x9'));var crypto=require('crypto');var jsforce=require(_0xaf49('0xa'));var deskjs=require(_0xaf49('0xb'));var toCsv=require(_0xaf49('0x6'));var querystring=require(_0xaf49('0xc'));var Papa=require(_0xaf49('0xd'));var Redis=require(_0xaf49('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaf49('0xf'));var as=require(_0xaf49('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xaf49('0x11'));var config=require(_0xaf49('0x12'));var licenseUtil=require(_0xaf49('0x13'));var db=require(_0xaf49('0x14'))['db'];config[_0xaf49('0x15')]=_[_0xaf49('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xaf49('0x17'))(new Redis(config[_0xaf49('0x15')]));require(_0xaf49('0x18'))[_0xaf49('0x19')](socket);function respondWithStatusCode(_0xb76a27,_0x1d0169){_0x1d0169=_0x1d0169||0xcc;return function(_0x3a752d){if(_0x3a752d){return _0xb76a27['sendStatus'](_0x1d0169);}return _0xb76a27[_0xaf49('0x1a')](_0x1d0169)['end']();};}function respondWithResult(_0x22d0e8,_0x46054d){_0x46054d=_0x46054d||0xc8;return function(_0x5d79e6){if(_0x5d79e6){return _0x22d0e8[_0xaf49('0x1a')](_0x46054d)['json'](_0x5d79e6);}};}function respondWithFilteredResult(_0x460af1,_0x4b7946){return function(_0x31d179){if(_0x31d179){var _0x1174a1=typeof _0x4b7946[_0xaf49('0x1b')]===_0xaf49('0x1c')&&typeof _0x4b7946['limit']==='undefined';var _0x4a6862=_0x31d179['count'];var _0x227f7a=_0x1174a1?0x0:_0x4b7946[_0xaf49('0x1b')];var _0x49af61=_0x1174a1?_0x31d179[_0xaf49('0x1d')]:_0x4b7946[_0xaf49('0x1b')]+_0x4b7946[_0xaf49('0x1e')];var _0x16b71b;if(_0x49af61>=_0x4a6862){_0x49af61=_0x4a6862;_0x16b71b=0xc8;}else{_0x16b71b=0xce;}_0x460af1[_0xaf49('0x1a')](_0x16b71b);return _0x460af1[_0xaf49('0x1f')](_0xaf49('0x20'),_0x227f7a+'-'+_0x49af61+'/'+_0x4a6862)[_0xaf49('0x21')](_0x31d179);}return null;};}function patchUpdates(_0x13eb19){return function(_0x55f424){try{jsonpatch[_0xaf49('0x22')](_0x55f424,_0x13eb19,!![]);}catch(_0x229e89){return BPromise[_0xaf49('0x23')](_0x229e89);}return _0x55f424[_0xaf49('0x24')]();};}function saveUpdates(_0x12ca8d,_0x12f503){return function(_0x51a6b4){if(_0x51a6b4){return _0x51a6b4[_0xaf49('0x25')](_0x12ca8d)[_0xaf49('0x26')](function(_0x529ab4){return _0x529ab4;});}return null;};}function removeEntity(_0x37ab14,_0x43be21){return function(_0x5f436c){if(_0x5f436c){return _0x5f436c[_0xaf49('0x27')]()['then'](function(){var _0x818a65=_0x5f436c[_0xaf49('0x28')]({'plain':!![]});var _0x173edd=[{'name':_0xaf49('0x29'),'value':_0xaf49('0x2a'),'ignore':![]},{'name':_0xaf49('0x2b'),'value':_0xaf49('0x2c'),'ignore':![]}];var _0x1c0ba6=_(_0x173edd)[_0xaf49('0x2d')](_0xaf49('0x2e'))[_0xaf49('0x2f')](_0xaf49('0x30'))[_0xaf49('0x30')]();if(_[_0xaf49('0x31')](_0x1c0ba6,_0x818a65[_0xaf49('0x32')])){return;}var _0x929ba1=_['find'](_0x173edd,[_0xaf49('0x30'),_0x818a65[_0xaf49('0x32')]])[_0xaf49('0x33')];return db[_0xaf49('0x34')][_0xaf49('0x27')]({'where':{'type':_0x929ba1,'resourceId':_0x818a65['id']}})['then'](function(){return _0x5f436c;});})[_0xaf49('0x26')](function(){_0x37ab14['status'](0xcc)[_0xaf49('0x35')]();});}};}function handleEntityNotFound(_0x258701,_0x54dcc0){return function(_0x3540dc){if(!_0x3540dc){_0x258701['sendStatus'](0x194);}return _0x3540dc;};}function handleError(_0x5a637e,_0xb4b6ed){_0xb4b6ed=_0xb4b6ed||0x1f4;return function(_0x29313d){logger[_0xaf49('0x36')](_0x29313d[_0xaf49('0x37')]);if(_0x29313d['name']){delete _0x29313d['name'];}_0x5a637e[_0xaf49('0x1a')](_0xb4b6ed)[_0xaf49('0x38')](_0x29313d);};}exports[_0xaf49('0x39')]=function(_0x4e0d4d,_0x40a580){var _0x4656a3={},_0x56e878={},_0x387c82={'count':0x0,'rows':[]};var _0x2a6a72=_['map'](db[_0xaf49('0x3a')]['rawAttributes'],function(_0x383368){return{'name':_0x383368[_0xaf49('0x3b')],'type':_0x383368[_0xaf49('0x32')][_0xaf49('0x3c')]};});_0x56e878[_0xaf49('0x3d')]=_[_0xaf49('0x2f')](_0x2a6a72,_0xaf49('0x33'));_0x56e878[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0x4e0d4d['query']);_0x56e878[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x56e878['model'],_0x56e878['query']);_0x4656a3['attributes']=_[_0xaf49('0x41')](_0x56e878['model'],qs['fields'](_0x4e0d4d['query'][_0xaf49('0x42')]));_0x4656a3[_0xaf49('0x43')]=_0x4656a3['attributes'][_0xaf49('0x44')]?_0x4656a3['attributes']:_0x56e878['model'];if(!_0x4e0d4d['query'][_0xaf49('0x45')]('nolimit')){_0x4656a3[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x4e0d4d['query']['limit']);_0x4656a3[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x4e0d4d['query'][_0xaf49('0x1b')]);}_0x4656a3['order']=qs[_0xaf49('0x46')](_0x4e0d4d[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x4656a3['where']=qs[_0xaf49('0x40')](_['pick'](_0x4e0d4d['query'],_0x56e878[_0xaf49('0x40')]),_0x2a6a72);if(_0x4e0d4d[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x4656a3[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x4656a3[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x2a6a72,function(_0x3e4d6c){if(_0x3e4d6c[_0xaf49('0x32')]!=='VIRTUAL'){var _0x4daca4={};_0x4daca4[_0x3e4d6c[_0xaf49('0x33')]]={'$like':'%'+_0x4e0d4d['query'][_0xaf49('0x2d')]+'%'};return _0x4daca4;}})});}_0x4656a3=_['merge']({},_0x4656a3,_0x4e0d4d[_0xaf49('0x49')]);var _0xfcd4f1={'where':_0x4656a3[_0xaf49('0x47')]};return db[_0xaf49('0x3a')][_0xaf49('0x1d')](_0xfcd4f1)[_0xaf49('0x26')](function(_0x336214){_0x387c82[_0xaf49('0x1d')]=_0x336214;if(_0x4e0d4d[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x4656a3['include']=[{'all':!![]}];}return db['VoiceQueue']['findAll'](_0x4656a3);})[_0xaf49('0x26')](function(_0x5728cb){_0x387c82[_0xaf49('0x4b')]=_0x5728cb;return _0x387c82;})[_0xaf49('0x26')](respondWithFilteredResult(_0x40a580,_0x4656a3))['catch'](handleError(_0x40a580,null));};exports[_0xaf49('0x4c')]=function(_0x3e6ba2,_0x55743d){var _0x3547f7={'raw':![],'where':{'id':_0x3e6ba2['params']['id']}},_0x20b416={};_0x20b416[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x3a')][_0xaf49('0x4d')]);_0x20b416[_0xaf49('0x3e')]=_['keys'](_0x3e6ba2[_0xaf49('0x3e')]);_0x20b416[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x20b416[_0xaf49('0x3d')],_0x20b416['query']);_0x3547f7[_0xaf49('0x43')]=_['intersection'](_0x20b416[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x3e6ba2[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x3547f7[_0xaf49('0x43')]=_0x3547f7[_0xaf49('0x43')][_0xaf49('0x44')]?_0x3547f7[_0xaf49('0x43')]:_0x20b416['model'];if(_0x3e6ba2['query'][_0xaf49('0x4a')]){_0x3547f7[_0xaf49('0x4e')]=[{'all':!![]}];}_0x3547f7=_['merge']({},_0x3547f7,_0x3e6ba2[_0xaf49('0x49')]);return db[_0xaf49('0x3a')]['find'](_0x3547f7)[_0xaf49('0x26')](handleEntityNotFound(_0x55743d,null))[_0xaf49('0x26')](respondWithResult(_0x55743d,null))[_0xaf49('0x4f')](handleError(_0x55743d,null));};exports[_0xaf49('0x50')]=function(_0x3b44e0,_0x4af4ec){return db[_0xaf49('0x3a')][_0xaf49('0x50')](_0x3b44e0[_0xaf49('0x51')],{})[_0xaf49('0x26')](function(_0x3f3cbe){var _0x2c4a1b=_0x3b44e0[_0xaf49('0x52')][_0xaf49('0x28')]({'plain':!![]});if(!_0x2c4a1b)throw new Error(_0xaf49('0x53'));if(_0x2c4a1b[_0xaf49('0x54')]==='user'){var _0xea216b=_0x3f3cbe[_0xaf49('0x28')]({'plain':!![]});var _0x92739c=[{'name':_0xaf49('0x29'),'value':_0xaf49('0x2a')},{'name':_0xaf49('0x2b'),'value':'outbound'}];var _0x157236=_[_0xaf49('0x55')](_0x92739c,[_0xaf49('0x30'),_0xea216b[_0xaf49('0x32')]])['name'];return db['UserProfileSection'][_0xaf49('0x55')]({'where':{'name':_0x157236,'userProfileId':_0x2c4a1b[_0xaf49('0x56')]},'raw':!![]})[_0xaf49('0x26')](function(_0x9d6bf7){if(_0x9d6bf7&&_0x9d6bf7[_0xaf49('0x57')]===0x0){return db[_0xaf49('0x34')][_0xaf49('0x50')]({'name':_0xea216b[_0xaf49('0x33')],'resourceId':_0xea216b['id'],'type':_0x9d6bf7[_0xaf49('0x33')],'sectionId':_0x9d6bf7['id']},{})['then'](function(){return _0x3f3cbe;});}else{return _0x3f3cbe;}})[_0xaf49('0x4f')](function(_0x5c5232){logger[_0xaf49('0x36')](_0xaf49('0x58'),_0x5c5232);throw _0x5c5232;});}return _0x3f3cbe;})[_0xaf49('0x26')](respondWithResult(_0x4af4ec,0xc9))['catch'](handleError(_0x4af4ec,null));};exports[_0xaf49('0x59')]=function(_0x5bd09e,_0x3ff4f6){var _0x1e813b={'where':{'id':_0x5bd09e[_0xaf49('0x5a')]['id']}},_0x42e59f={};_0x42e59f[_0xaf49('0x3d')]=_['keys'](db['VoiceQueue'][_0xaf49('0x4d')]);_0x1e813b[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x42e59f[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x5bd09e[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x1e813b[_0xaf49('0x43')]=_0x1e813b['attributes']['length']?_0x1e813b[_0xaf49('0x43')]:_0x42e59f[_0xaf49('0x3d')];if(_0x5bd09e[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x1e813b['include']=[{'all':!![]}];}_0x1e813b=_[_0xaf49('0x48')]({},_0x1e813b,_0x5bd09e[_0xaf49('0x49')]);return db[_0xaf49('0x3a')]['find'](_0x1e813b)[_0xaf49('0x26')](handleEntityNotFound(_0x3ff4f6,null))[_0xaf49('0x26')](function(_0x837d30){if(_0x837d30){var _0x3a19cb=_0x837d30[_0xaf49('0x28')]({'plain':!![]});_0x3a19cb=qs[_0xaf49('0x5b')](_0x3a19cb,['id',_0xaf49('0x5c'),_0xaf49('0x5d')]);_0x5bd09e[_0xaf49('0x51')]=_[_0xaf49('0x5b')](_0x5bd09e[_0xaf49('0x51')],['id',_0xaf49('0x5c'),_0xaf49('0x5d')]);return db['VoiceQueue'][_0xaf49('0x50')](_[_0xaf49('0x48')](_0x3a19cb,_0x5bd09e[_0xaf49('0x51')]),{'include':_0x5bd09e[_0xaf49('0x3e')][_0xaf49('0x4a')]?[{'all':!![]}]:undefined})[_0xaf49('0x26')](function(_0x329754){var _0x544e5b=_0x5bd09e[_0xaf49('0x52')][_0xaf49('0x28')]({'plain':!![]});if(!_0x544e5b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x544e5b['role']===_0xaf49('0x52')){var _0x2f2771=_0x329754[_0xaf49('0x28')]({'plain':!![]});var _0x5ea8c1=[{'name':'VoiceQueues','value':_0xaf49('0x2a')},{'name':'QueueCampaigns','value':_0xaf49('0x2c')}];var _0x204d84=_[_0xaf49('0x55')](_0x5ea8c1,['value',_0x2f2771['type']])[_0xaf49('0x33')];return db[_0xaf49('0x5e')][_0xaf49('0x55')]({'where':{'name':_0x204d84,'userProfileId':_0x544e5b[_0xaf49('0x56')]},'raw':!![]})['then'](function(_0x425e68){if(_0x425e68&&_0x425e68[_0xaf49('0x57')]===0x0){return db[_0xaf49('0x34')][_0xaf49('0x50')]({'name':_0x2f2771[_0xaf49('0x33')],'resourceId':_0x2f2771['id'],'type':_0x425e68[_0xaf49('0x33')],'sectionId':_0x425e68['id']},{})[_0xaf49('0x26')](function(){return _0x329754;});}else{return _0x329754;}})[_0xaf49('0x4f')](function(_0x3a4cf4){logger[_0xaf49('0x36')](_0xaf49('0x58'),_0x3a4cf4);throw _0x3a4cf4;});}return _0x329754;});}})[_0xaf49('0x26')](respondWithResult(_0x3ff4f6,0xc9))['catch'](handleError(_0x3ff4f6,null));};exports[_0xaf49('0x25')]=function(_0xba7e70,_0x4665e2){if(_0xba7e70[_0xaf49('0x51')]['id']){delete _0xba7e70['body']['id'];}return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0xba7e70[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x4665e2,null))[_0xaf49('0x26')](saveUpdates(_0xba7e70[_0xaf49('0x51')],null))[_0xaf49('0x26')](respondWithResult(_0x4665e2,null))[_0xaf49('0x4f')](handleError(_0x4665e2,null));};exports[_0xaf49('0x27')]=function(_0xc7438c,_0x8c59f9){return db[_0xaf49('0x3a')]['find']({'where':{'id':_0xc7438c[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x8c59f9,null))[_0xaf49('0x26')](removeEntity(_0x8c59f9,null))[_0xaf49('0x4f')](handleError(_0x8c59f9,null));};exports[_0xaf49('0x5f')]=function(_0x31d559,_0x290fbe,_0x36b52c){var _0x2f643f={'raw':![],'where':{}};var _0xb889f9={};var _0x41751d={'count':0x0,'rows':[]};return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x31d559[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x290fbe,null))[_0xaf49('0x26')](function(_0x2509ca){if(_0x2509ca){_0xb889f9[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db['CmHopper'][_0xaf49('0x4d')]);_0xb889f9[_0xaf49('0x3e')]=_['keys'](_0x31d559[_0xaf49('0x3e')]);_0xb889f9[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0xb889f9['model'],_0xb889f9['query']);_0x2f643f[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0xb889f9[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x31d559[_0xaf49('0x3e')]['fields']));_0x2f643f[_0xaf49('0x43')]=_0x2f643f['attributes'][_0xaf49('0x44')]?_0x2f643f[_0xaf49('0x43')]:_0xb889f9[_0xaf49('0x3d')];if(!_0x31d559['query']['hasOwnProperty']('nolimit')){_0x2f643f[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x31d559[_0xaf49('0x3e')]['limit']);_0x2f643f['offset']=qs[_0xaf49('0x1b')](_0x31d559[_0xaf49('0x3e')][_0xaf49('0x1b')]);}_0x2f643f[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x31d559[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x2f643f[_0xaf49('0x47')]=qs['filters'](_[_0xaf49('0x61')](_0x31d559[_0xaf49('0x3e')],_0xb889f9[_0xaf49('0x40')]));_0x2f643f[_0xaf49('0x47')]['VoiceQueueId']=_0x2509ca['id'];if(_0x31d559[_0xaf49('0x3e')]['filter']){_0x2f643f['where']=_['merge'](_0x2f643f[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x2f643f['attributes'],function(_0xab2ca2){var _0x5432ed={};_0x5432ed[_0xab2ca2]={'$like':'%'+_0x31d559['query'][_0xaf49('0x2d')]+'%'};return _0x5432ed;})});}_0x2f643f=_[_0xaf49('0x48')]({},_0x2f643f,_0x31d559[_0xaf49('0x49')]);return db[_0xaf49('0x62')][_0xaf49('0x1d')]({'where':_0x2f643f[_0xaf49('0x47')]})[_0xaf49('0x26')](function(_0x3dcc67){_0x41751d[_0xaf49('0x1d')]=_0x3dcc67;if(_0x31d559[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x2f643f[_0xaf49('0x4e')]=[{'all':!![]}];}return db[_0xaf49('0x62')][_0xaf49('0x63')](_0x2f643f);})[_0xaf49('0x26')](function(_0x944da7){_0x41751d[_0xaf49('0x4b')]=_0x944da7;return _0x41751d;});}})['then'](respondWithFilteredResult(_0x290fbe,_0x2f643f))[_0xaf49('0x4f')](handleError(_0x290fbe,null));};exports[_0xaf49('0x64')]=function(_0x234c3f,_0x36f84d,_0x84bf53){var _0x37cb1f={'raw':!![],'where':{}};var _0x373d8e={};var _0x55f54e={'count':0x0,'rows':[]};return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x234c3f[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x36f84d,null))[_0xaf49('0x26')](function(_0x1b265d){if(_0x1b265d){_0x373d8e[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x65')][_0xaf49('0x4d')]);_0x373d8e[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0x234c3f[_0xaf49('0x3e')]);_0x373d8e[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x373d8e[_0xaf49('0x3d')],_0x373d8e[_0xaf49('0x3e')]);_0x37cb1f[_0xaf49('0x43')]=_['intersection'](_0x373d8e['model'],qs[_0xaf49('0x42')](_0x234c3f['query']['fields']));_0x37cb1f[_0xaf49('0x43')]=_0x37cb1f[_0xaf49('0x43')][_0xaf49('0x44')]?_0x37cb1f[_0xaf49('0x43')]:_0x373d8e[_0xaf49('0x3d')];if(!_0x234c3f[_0xaf49('0x3e')]['hasOwnProperty'](_0xaf49('0x66'))){_0x37cb1f[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x37cb1f['offset']=qs[_0xaf49('0x1b')](_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x1b')]);}_0x37cb1f['order']=qs[_0xaf49('0x46')](_0x234c3f['query'][_0xaf49('0x46')]);_0x37cb1f[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x234c3f[_0xaf49('0x3e')],_0x373d8e[_0xaf49('0x40')]));_0x37cb1f[_0xaf49('0x47')][_0xaf49('0x67')]=_0x1b265d['id'];if(_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x37cb1f[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x37cb1f[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x37cb1f['attributes'],function(_0x4ccb02){var _0x5c0cbb={};_0x5c0cbb[_0x4ccb02]={'$like':'%'+_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x5c0cbb;})});}_0x37cb1f=_[_0xaf49('0x48')]({},_0x37cb1f,_0x234c3f[_0xaf49('0x49')]);return db[_0xaf49('0x65')][_0xaf49('0x1d')]({'where':_0x37cb1f[_0xaf49('0x47')]})[_0xaf49('0x26')](function(_0x5147b7){_0x55f54e[_0xaf49('0x1d')]=_0x5147b7;if(_0x234c3f[_0xaf49('0x3e')]['includeAll']){_0x37cb1f[_0xaf49('0x4e')]=[{'all':!![]}];}return db[_0xaf49('0x65')][_0xaf49('0x63')](_0x37cb1f);})[_0xaf49('0x26')](function(_0x310d1f){_0x55f54e[_0xaf49('0x4b')]=_0x310d1f;return _0x55f54e;});}})[_0xaf49('0x26')](respondWithFilteredResult(_0x36f84d,_0x37cb1f))['catch'](handleError(_0x36f84d,null));};exports[_0xaf49('0x68')]=function(_0xaad4b9,_0x12b9a5,_0x3ceef3){var _0x395016={'raw':!![],'where':{}};var _0x2503f9={};var _0x13696e={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xaf49('0x69')]({'where':{'id':_0xaad4b9[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x12b9a5,null))[_0xaf49('0x26')](function(_0x1c5e82){if(_0x1c5e82){_0x2503f9[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db['CmHopperFinal'][_0xaf49('0x4d')]);_0x2503f9[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0xaad4b9[_0xaf49('0x3e')]);_0x2503f9[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x2503f9['model'],_0x2503f9[_0xaf49('0x3e')]);_0x395016[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x2503f9[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0xaad4b9['query']['fields']));_0x395016[_0xaf49('0x43')]=_0x395016[_0xaf49('0x43')][_0xaf49('0x44')]?_0x395016[_0xaf49('0x43')]:_0x2503f9[_0xaf49('0x3d')];if(!_0xaad4b9[_0xaf49('0x3e')]['hasOwnProperty']('nolimit')){_0x395016['limit']=qs[_0xaf49('0x1e')](_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x395016[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x1b')]);}_0x395016['order']=qs[_0xaf49('0x46')](_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x395016['where']=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0xaad4b9[_0xaf49('0x3e')],_0x2503f9[_0xaf49('0x40')]));_0x395016[_0xaf49('0x47')][_0xaf49('0x67')]=_0x1c5e82['id'];if(_0xaad4b9['query'][_0xaf49('0x2d')]){_0x395016[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x395016[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x395016['attributes'],function(_0x15fba2){var _0x4057bc={};_0x4057bc[_0x15fba2]={'$like':'%'+_0xaad4b9['query'][_0xaf49('0x2d')]+'%'};return _0x4057bc;})});}_0x395016=_[_0xaf49('0x48')]({},_0x395016,_0xaad4b9[_0xaf49('0x49')]);return db[_0xaf49('0x6a')][_0xaf49('0x1d')]({'where':_0x395016[_0xaf49('0x47')]})['then'](function(_0x5c821b){_0x13696e['count']=_0x5c821b;if(_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x395016['include']=[{'all':!![]}];}return db[_0xaf49('0x6a')]['findAll'](_0x395016);})['then'](function(_0x4985d5){_0x13696e[_0xaf49('0x4b')]=_0x4985d5;return _0x13696e;});}})[_0xaf49('0x26')](respondWithFilteredResult(_0x12b9a5,_0x395016))['catch'](handleError(_0x12b9a5,null));};exports[_0xaf49('0x6b')]=function(_0x2df1f0,_0x2902e8,_0x12b9a6){var _0x220eb3={'raw':!![],'where':{}};var _0x3bd643={};var _0x4fdfa3={'count':0x0,'rows':[]};return db[_0xaf49('0x3a')][_0xaf49('0x69')]({'where':{'id':_0x2df1f0[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x2902e8,null))['then'](function(_0x43960a){if(_0x43960a){_0x3bd643[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x6c')][_0xaf49('0x4d')]);_0x3bd643[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0x2df1f0[_0xaf49('0x3e')]);_0x3bd643[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x3bd643[_0xaf49('0x3d')],_0x3bd643[_0xaf49('0x3e')]);_0x220eb3['attributes']=_[_0xaf49('0x41')](_0x3bd643['model'],qs[_0xaf49('0x42')](_0x2df1f0['query']['fields']));_0x220eb3[_0xaf49('0x43')]=_0x220eb3['attributes']['length']?_0x220eb3[_0xaf49('0x43')]:_0x3bd643['model'];if(!_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x220eb3[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x2df1f0['query'][_0xaf49('0x1e')]);_0x220eb3[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x2df1f0['query'][_0xaf49('0x1b')]);}_0x220eb3[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x2df1f0['query'][_0xaf49('0x46')]);_0x220eb3[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_['pick'](_0x2df1f0[_0xaf49('0x3e')],_0x3bd643[_0xaf49('0x40')]));_0x220eb3[_0xaf49('0x47')]['VoiceQueueId']=_0x43960a['id'];if(_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x220eb3[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x220eb3[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x220eb3[_0xaf49('0x43')],function(_0x6fe288){var _0x495ae3={};_0x495ae3[_0x6fe288]={'$like':'%'+_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x495ae3;})});}_0x220eb3=_['merge']({},_0x220eb3,_0x2df1f0[_0xaf49('0x49')]);return db[_0xaf49('0x6c')][_0xaf49('0x1d')]({'where':_0x220eb3[_0xaf49('0x47')]})[_0xaf49('0x26')](function(_0x5e096f){_0x4fdfa3[_0xaf49('0x1d')]=_0x5e096f;if(_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x220eb3[_0xaf49('0x4e')]=[{'all':!![]}];}return db[_0xaf49('0x6c')][_0xaf49('0x63')](_0x220eb3);})[_0xaf49('0x26')](function(_0x2cb1ec){_0x4fdfa3[_0xaf49('0x4b')]=_0x2cb1ec;return _0x4fdfa3;});}})['then'](respondWithFilteredResult(_0x2902e8,_0x220eb3))[_0xaf49('0x4f')](handleError(_0x2902e8,null));};exports[_0xaf49('0x6d')]=function(_0x10e82a,_0x210a2f,_0x2b7988){var _0x29f8ea={};var _0x2fc3f7={};var _0xdd4c80;var _0x32c2eb;return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x10e82a[_0xaf49('0x5a')]['id']}})['then'](handleEntityNotFound(_0x210a2f,null))[_0xaf49('0x26')](function(_0x10ee12){if(_0x10ee12){_0xdd4c80=_0x10ee12;_0x2fc3f7[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x6e')][_0xaf49('0x4d')]);_0x2fc3f7['query']=_[_0xaf49('0x3f')](_0x10e82a['query']);_0x2fc3f7[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x2fc3f7[_0xaf49('0x3d')],_0x2fc3f7[_0xaf49('0x3e')]);_0x29f8ea['attributes']=_[_0xaf49('0x41')](_0x2fc3f7['model'],qs['fields'](_0x10e82a[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x29f8ea[_0xaf49('0x43')]=_0x29f8ea['attributes'][_0xaf49('0x44')]?_0x29f8ea[_0xaf49('0x43')]:_0x2fc3f7[_0xaf49('0x3d')];_0x29f8ea[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x10e82a['query']['sort']);_0x29f8ea[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x10e82a[_0xaf49('0x3e')],_0x2fc3f7[_0xaf49('0x40')]));if(_0x10e82a[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x29f8ea['where']=_[_0xaf49('0x48')](_0x29f8ea['where'],{'$or':_['map'](_0x29f8ea[_0xaf49('0x43')],function(_0x23c524){var _0x226e05={};_0x226e05[_0x23c524]={'$like':'%'+_0x10e82a['query'][_0xaf49('0x2d')]+'%'};return _0x226e05;})});}_0x29f8ea=_[_0xaf49('0x48')]({},_0x29f8ea,_0x10e82a['options']);return _0xdd4c80[_0xaf49('0x6d')](_0x29f8ea);}})['then'](function(_0xa9ea81){if(_0xa9ea81){_0x32c2eb=_0xa9ea81[_0xaf49('0x44')];if(!_0x10e82a[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x29f8ea[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x10e82a['query'][_0xaf49('0x1e')]);_0x29f8ea[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x10e82a[_0xaf49('0x3e')]['offset']);}return _0xdd4c80[_0xaf49('0x6d')](_0x29f8ea);}})[_0xaf49('0x26')](function(_0x22bea9){if(_0x22bea9){return _0x22bea9?{'count':_0x32c2eb,'rows':_0x22bea9}:null;}})[_0xaf49('0x26')](respondWithResult(_0x210a2f,null))[_0xaf49('0x4f')](handleError(_0x210a2f,null));};exports[_0xaf49('0x6f')]=function(_0x3c7927,_0x51e67c,_0x4244a7){var _0x4fb8ed=_0x3c7927['body'][_0xaf49('0x70')];var _0x178832=_[_0xaf49('0x2f')](_0x4fb8ed,'id');return db['Team'][_0xaf49('0x63')]({'where':{'id':_0x178832},'attributes':['id'],'include':[{'model':db['User'],'as':_0xaf49('0x71'),'attributes':['id','name','online',_0xaf49('0x72'),_0xaf49('0x73')],'raw':!![]}]})[_0xaf49('0x26')](function(_0x4cfc03){if(_0x4cfc03){var _0x1bb39d=_[_0xaf49('0x74')](_0x4cfc03,function(_0x10d697){var _0x4a080a=_0x10d697[_0xaf49('0x28')]({'plain':!![]});_0x4a080a['Agents'][_0xaf49('0x75')](function(_0x59493d){_0x59493d['penalty']=_[_0xaf49('0x55')](_0x4fb8ed,{'id':_0x4a080a['id']})['penalty'];});return _0x4a080a[_0xaf49('0x71')];});return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0x3c7927['params']['id']}})[_0xaf49('0x26')](function(_0x318b21){return db[_0xaf49('0x76')][_0xaf49('0x77')](function(_0x24b6bd){return _0x318b21[_0xaf49('0x6f')](_0x178832,{'transaction':_0x24b6bd})[_0xaf49('0x26')](function(){return BPromise[_0xaf49('0x78')](_0x4fb8ed,function(_0x181e99){return db['TeamVoiceQueue'][_0xaf49('0x79')]({'TeamId':_0x181e99['id'],'VoiceQueueId':_0x3c7927[_0xaf49('0x5a')]['id'],'penalty':_0x181e99[_0xaf49('0x7a')]},{'transaction':_0x24b6bd});});})[_0xaf49('0x26')](function(){return BPromise[_0xaf49('0x78')](_0x1bb39d,function(_0x5942fb){return db[_0xaf49('0x7b')][_0xaf49('0x7c')]({'where':{'UserId':_0x5942fb['id'],'VoiceQueueId':_0x3c7927[_0xaf49('0x5a')]['id']},'defaults':{'penalty':_0x5942fb['penalty']},'transaction':_0x24b6bd});});})[_0xaf49('0x26')](function(){return BPromise[_0xaf49('0x78')](_[_0xaf49('0x2d')](_0x1bb39d,{'online':!![]}),function(_0x5e3358){return db[_0xaf49('0x7d')][_0xaf49('0x79')]({'membername':_0x5e3358[_0xaf49('0x33')],'UserId':_0x5e3358['id'],'queue_name':_0x318b21[_0xaf49('0x33')],'VoiceQueueId':_0x318b21['id'],'interface':_[_0xaf49('0x7e')](_0x5e3358[_0xaf49('0x73')])?util[_0xaf49('0x7f')](_0xaf49('0x80'),_0x5e3358[_0xaf49('0x33')]):_0x5e3358['interface'],'paused':_0x5e3358['voicePause']||![],'penalty':_0x5e3358[_0xaf49('0x7a')]},{'transaction':_0x24b6bd});});})[_0xaf49('0x26')](function(){_0x1bb39d[_0xaf49('0x75')](function(_0x96b77c){socket[_0xaf49('0x81')](_0xaf49('0x82'),{'UserId':_0x96b77c['id'],'VoiceQueueId':_0x318b21['id']});});});});});}})[_0xaf49('0x26')](respondWithStatusCode(_0x51e67c,null))[_0xaf49('0x4f')](handleError(_0x51e67c,null));};exports['removeTeams']=function(_0xd15ca4,_0x2367a5,_0x1602cb){return db[_0xaf49('0x6e')][_0xaf49('0x63')]({'where':{'id':_0xd15ca4[_0xaf49('0x3e')][_0xaf49('0x83')]},'attributes':['id'],'include':[{'model':db[_0xaf49('0x84')],'as':_0xaf49('0x71'),'attributes':['id'],'raw':!![]}]})[_0xaf49('0x26')](handleEntityNotFound(_0x2367a5,null))[_0xaf49('0x26')](function(_0x568003){var _0x577b97=_[_0xaf49('0x2f')](_0x568003,'id');var _0x4ea8c1=[];var _0x21ccdf=[];var _0x894dd6=squel[_0xaf49('0x85')]();_0x894dd6[_0xaf49('0x86')](_0xaf49('0x87'))[_0xaf49('0x88')](_0xaf49('0x89'),'tq')[_0xaf49('0x8a')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xaf49('0x47')]('VoiceQueueId\x20=\x20?',_0xd15ca4['params']['id']);for(var _0x5a2188=0x0;_0x5a2188<_0x568003[_0xaf49('0x44')];_0x5a2188+=0x1){let _0x5866ae=_0x568003[_0x5a2188];for(var _0x4f4b37=0x0;_0x4f4b37<_0x5866ae[_0xaf49('0x71')][_0xaf49('0x44')];_0x4f4b37+=0x1){let _0x30273e=_0x5866ae[_0xaf49('0x71')][_0x4f4b37];var _0x103ef1=_0x894dd6[_0xaf49('0x59')]();_0x103ef1['where'](_0xaf49('0x8b'),_0x30273e['id']);_0x21ccdf[_0xaf49('0x8c')](db[_0xaf49('0x76')][_0xaf49('0x3e')](_0x103ef1['toString'](),{'type':db[_0xaf49('0x76')][_0xaf49('0x8d')]['SELECT']})['then'](function(_0x5841ef){if(_0x5841ef['length']===0x1){return _0x30273e['id'];}else{var _0x27e72f=_['every'](_[_0xaf49('0x2f')](_0x5841ef,'TeamId'),function(_0x20c650){return _['includes'](_0x577b97,_0x20c650);});if(_0x27e72f){return _0x30273e['id'];}}}));}}return BPromise['all'](_0x21ccdf)['then'](function(_0x3463f6){_0x4ea8c1=_(_0x4ea8c1)[_0xaf49('0x8e')](_0x3463f6)['compact']()[_0xaf49('0x30')]();return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0xd15ca4[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](function(_0x20e953){return db[_0xaf49('0x76')][_0xaf49('0x77')](function(_0x430964){return _0x20e953[_0xaf49('0x8f')](_0xd15ca4[_0xaf49('0x3e')][_0xaf49('0x83')],{'transaction':_0x430964})[_0xaf49('0x26')](function(){if(!_['isEmpty'](_0x4ea8c1)){return _0x20e953[_0xaf49('0x90')](_0x4ea8c1,{'transaction':_0x430964})[_0xaf49('0x26')](function(){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0xd15ca4[_0xaf49('0x5a')]['id'],'UserId':_0x4ea8c1},'transaction':_0x430964});});}})[_0xaf49('0x26')](function(){_0x4ea8c1['forEach'](function(_0x2f4786){socket[_0xaf49('0x81')]('userVoiceQueue:remove',{'UserId':_0x2f4786,'VoiceQueueId':_0x20e953['id']});});});});});});})[_0xaf49('0x26')](respondWithStatusCode(_0x2367a5,null))[_0xaf49('0x4f')](handleError(_0x2367a5,null));};exports[_0xaf49('0x91')]=function(_0xd3278b,_0x1713f7,_0x5ba608){var _0x4daf2a,_0x1f5857;return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0xd3278b['params']['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x1713f7,null))[_0xaf49('0x26')](function(_0x2f77e9){if(_0x2f77e9){_0x1f5857=_0x2f77e9;return _0x2f77e9['addAgents'](_0xd3278b[_0xaf49('0x51')][_0xaf49('0x83')],_[_0xaf49('0x5b')](_0xd3278b[_0xaf49('0x51')],[_0xaf49('0x83'),'id'])||{})[_0xaf49('0x92')](function(_0x5c3a5e){for(var _0xadeac=0x0;_0xadeac<_0xd3278b[_0xaf49('0x51')][_0xaf49('0x83')][_0xaf49('0x44')];_0xadeac+=0x1){socket[_0xaf49('0x81')](_0xaf49('0x82'),{'UserId':Number(_0xd3278b[_0xaf49('0x51')][_0xaf49('0x83')][_0xadeac]),'VoiceQueueId':Number(_0xd3278b[_0xaf49('0x5a')]['id'])});}return _0x5c3a5e;});}})[_0xaf49('0x26')](function(_0x13312e){_0x4daf2a=_0x13312e||[];if(_0x1f5857){return db['User'][_0xaf49('0x63')]({'where':{'id':_0xd3278b['body']['ids']},'attributes':['id',_0xaf49('0x33'),_0xaf49('0x93'),_0xaf49('0x72'),'interface'],'raw':!![]});}})[_0xaf49('0x26')](function(_0x1b6758){if(!_['isEmpty'](_0x1b6758)){var _0x436395=[];for(var _0x2d6ce6=0x0;_0x2d6ce6<_0x1b6758[_0xaf49('0x44')];_0x2d6ce6++){if(_0x1b6758[_0x2d6ce6][_0xaf49('0x93')]){_0x436395[_0xaf49('0x8c')](db[_0xaf49('0x7d')][_0xaf49('0x79')]({'membername':_0x1b6758[_0x2d6ce6]['name'],'UserId':_0x1b6758[_0x2d6ce6]['id'],'queue_name':_0x1f5857['name'],'VoiceQueueId':_0x1f5857['id'],'interface':_[_0xaf49('0x7e')](_0x1b6758[_0x2d6ce6][_0xaf49('0x73')])?util[_0xaf49('0x7f')](_0xaf49('0x80'),_0x1b6758[_0x2d6ce6][_0xaf49('0x33')]):_0x1b6758[_0x2d6ce6]['interface'],'paused':_0x1b6758[_0x2d6ce6][_0xaf49('0x72')]||![],'penalty':_0xd3278b[_0xaf49('0x51')][_0xaf49('0x7a')]||0x0}));}}return BPromise[_0xaf49('0x94')](_0x436395);}})['then'](function(){return _0x4daf2a;})['then'](respondWithResult(_0x1713f7,null))[_0xaf49('0x4f')](handleError(_0x1713f7,null));};exports[_0xaf49('0x90')]=function(_0x40c15e,_0x2c8205,_0x4a2077){return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0x40c15e[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x2c8205,null))['then'](function(_0x4a699f){if(_0x4a699f){return _0x4a699f[_0xaf49('0x90')](_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')])[_0xaf49('0x26')](function(){if(_[_0xaf49('0x95')](_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')])){for(var _0x3ede72=0x0;_0x3ede72<_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')][_0xaf49('0x44')];_0x3ede72+=0x1){socket[_0xaf49('0x81')](_0xaf49('0x96'),{'UserId':Number(_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')][_0x3ede72]),'VoiceQueueId':Number(_0x40c15e[_0xaf49('0x5a')]['id'])});}}else{socket[_0xaf49('0x81')](_0xaf49('0x96'),{'UserId':Number(_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')]),'VoiceQueueId':Number(_0x40c15e['params']['id'])});}});}})[_0xaf49('0x26')](function(_0x495db7){return db[_0xaf49('0x7d')][_0xaf49('0x27')]({'where':{'VoiceQueueId':_0x40c15e[_0xaf49('0x5a')]['id'],'UserId':_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')]}})[_0xaf49('0x26')](function(){return _0x495db7;});})[_0xaf49('0x26')](respondWithStatusCode(_0x2c8205,null))[_0xaf49('0x4f')](handleError(_0x2c8205,null));};exports[_0xaf49('0x97')]=function(_0x1bdf8d,_0x38c103,_0x29048c){var _0x121701={};var _0x500e1e={};var _0x2f4822;var _0x2623be;return db[_0xaf49('0x3a')][_0xaf49('0x69')]({'where':{'id':_0x1bdf8d[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x38c103,null))[_0xaf49('0x26')](function(_0x1a0d2b){if(_0x1a0d2b){_0x2f4822=_0x1a0d2b;_0x500e1e[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x84')][_0xaf49('0x4d')]);_0x500e1e[_0xaf49('0x3e')]=_['keys'](_0x1bdf8d['query']);_0x500e1e[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x500e1e[_0xaf49('0x3d')],_0x500e1e[_0xaf49('0x3e')]);_0x121701[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x500e1e[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x121701['attributes']=_0x121701[_0xaf49('0x43')][_0xaf49('0x44')]?_0x121701['attributes']:_0x500e1e[_0xaf49('0x3d')];_0x121701[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x121701[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x1bdf8d['query'],_0x500e1e[_0xaf49('0x40')]));if(_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x121701['where']=_[_0xaf49('0x48')](_0x121701[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x121701[_0xaf49('0x43')],function(_0x173081){var _0x3c41d1={};_0x3c41d1[_0x173081]={'$like':'%'+_0x1bdf8d[_0xaf49('0x3e')]['filter']+'%'};return _0x3c41d1;})});}_0x121701=_[_0xaf49('0x48')]({},_0x121701,_0x1bdf8d[_0xaf49('0x49')]);return _0x2f4822[_0xaf49('0x97')](_0x121701);}})['then'](function(_0x29ad70){if(_0x29ad70){_0x2623be=_0x29ad70['length'];if(!_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x121701[_0xaf49('0x1e')]=qs['limit'](_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x121701[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x1bdf8d[_0xaf49('0x3e')]['offset']);}return _0x2f4822[_0xaf49('0x97')](_0x121701);}})['then'](function(_0x4cfbc1){if(_0x4cfbc1){return _0x4cfbc1?{'count':_0x2623be,'rows':_0x4cfbc1}:null;}})[_0xaf49('0x26')](respondWithResult(_0x38c103,null))[_0xaf49('0x4f')](handleError(_0x38c103,null));};exports[_0xaf49('0x98')]=function(_0x343e20,_0x5d1d25,_0xd08832){var _0xa7b909={};var _0x3c444f={};var _0x4358b2;var _0x4c2efa;return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x343e20['params']['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x5d1d25,null))[_0xaf49('0x26')](function(_0x54a9f0){if(_0x54a9f0){_0x4358b2=_0x54a9f0;_0x3c444f[_0xaf49('0x3d')]=_['keys'](db[_0xaf49('0x7d')][_0xaf49('0x4d')]);_0x3c444f['query']=_['keys'](_0x343e20[_0xaf49('0x3e')]);_0x3c444f[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x3c444f[_0xaf49('0x3d')],_0x3c444f[_0xaf49('0x3e')]);_0xa7b909[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x3c444f['model'],qs[_0xaf49('0x42')](_0x343e20[_0xaf49('0x3e')]['fields']));_0xa7b909['attributes']=_0xa7b909[_0xaf49('0x43')]['length']?_0xa7b909[_0xaf49('0x43')]:_0x3c444f[_0xaf49('0x3d')];_0xa7b909['order']=qs[_0xaf49('0x46')](_0x343e20['query'][_0xaf49('0x46')]);_0xa7b909[_0xaf49('0x47')]=qs['filters'](_[_0xaf49('0x61')](_0x343e20[_0xaf49('0x3e')],_0x3c444f[_0xaf49('0x40')]));if(_0x343e20['query'][_0xaf49('0x2d')]){_0xa7b909['where']=_[_0xaf49('0x48')](_0xa7b909[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0xa7b909[_0xaf49('0x43')],function(_0x2814e1){var _0x11e69f={};_0x11e69f[_0x2814e1]={'$like':'%'+_0x343e20[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x11e69f;})});}_0xa7b909=_['merge']({},_0xa7b909,_0x343e20[_0xaf49('0x49')]);return _0x4358b2[_0xaf49('0x98')](_0xa7b909);}})[_0xaf49('0x26')](function(_0xdaa478){if(_0xdaa478){_0x4c2efa=_0xdaa478[_0xaf49('0x44')];if(!_0x343e20['query'][_0xaf49('0x45')](_0xaf49('0x66'))){_0xa7b909[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x343e20[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0xa7b909[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x343e20['query'][_0xaf49('0x1b')]);}return _0x4358b2[_0xaf49('0x98')](_0xa7b909);}})[_0xaf49('0x26')](function(_0x1712fa){return _0x1712fa?{'count':_0x4c2efa,'rows':_0x1712fa}:null;})['then'](respondWithResult(_0x5d1d25,null))[_0xaf49('0x4f')](handleError(_0x5d1d25,null));};exports['getLists']=function(_0x2088e0,_0x3b90d1,_0x4f22fc){var _0x33831e={};var _0x25dc8f={};var _0x2e612f;var _0x1bc473;return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x2088e0[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x3b90d1,null))[_0xaf49('0x26')](function(_0x18f2be){if(_0x18f2be){_0x2e612f=_0x18f2be;_0x25dc8f[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x99')][_0xaf49('0x4d')]);_0x25dc8f['query']=_[_0xaf49('0x3f')](_0x2088e0[_0xaf49('0x3e')]);_0x25dc8f[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x25dc8f[_0xaf49('0x3d')],_0x25dc8f[_0xaf49('0x3e')]);_0x33831e[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x25dc8f[_0xaf49('0x3d')],qs['fields'](_0x2088e0['query']['fields']));_0x33831e[_0xaf49('0x43')]=_0x33831e[_0xaf49('0x43')][_0xaf49('0x44')]?_0x33831e['attributes']:_0x25dc8f[_0xaf49('0x3d')];_0x33831e['order']=qs[_0xaf49('0x46')](_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x33831e[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x2088e0[_0xaf49('0x3e')],_0x25dc8f[_0xaf49('0x40')]));if(_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x33831e[_0xaf49('0x47')]=_['merge'](_0x33831e[_0xaf49('0x47')],{'$or':_['map'](_0x33831e['attributes'],function(_0x1344b8){var _0x3961ef={};_0x3961ef[_0x1344b8]={'$like':'%'+_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x3961ef;})});}_0x33831e=_['merge']({},_0x33831e,_0x2088e0[_0xaf49('0x49')]);return _0x2e612f['getLists'](_0x33831e);}})[_0xaf49('0x26')](function(_0x3e18ae){if(_0x3e18ae){_0x1bc473=_0x3e18ae[_0xaf49('0x44')];if(!_0x2088e0[_0xaf49('0x3e')]['hasOwnProperty'](_0xaf49('0x66'))){_0x33831e[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x33831e[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x2088e0[_0xaf49('0x3e')]['offset']);}return _0x2e612f[_0xaf49('0x9a')](_0x33831e);}})['then'](function(_0x33ccbd){if(_0x33ccbd){return _0x33ccbd?{'count':_0x1bc473,'rows':_0x33ccbd}:null;}})[_0xaf49('0x26')](respondWithResult(_0x3b90d1,null))['catch'](handleError(_0x3b90d1,null));};exports['addLists']=function(_0x787a86,_0xada0ac,_0x511df8){var _0x4cfdb9,_0x5eff21;return db['VoiceQueue']['find']({'where':{'id':_0x787a86[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0xada0ac,null))['then'](function(_0x224bf4){if(_0x224bf4){_0x5eff21=_0x224bf4;return _0x224bf4[_0xaf49('0x9b')](_0x787a86[_0xaf49('0x51')][_0xaf49('0x83')],_[_0xaf49('0x5b')](_0x787a86[_0xaf49('0x51')],['ids','id'])||{});}return null;})['spread'](function(_0x377555){var _0xfcec29;_0x4cfdb9=_0x377555||[];var _0x32b12=[];if(_0x377555){for(var _0x5a18ff=0x0;_0x5a18ff<_0x377555[_0xaf49('0x44')];_0x5a18ff+=0x1){var _0x4e776c=_0x377555[_0x5a18ff]['get']({'plain':!![]});_0x5eff21[_0xaf49('0x9c')]=_0x787a86[_0xaf49('0x51')][_0xaf49('0x9c')]?_0x787a86[_0xaf49('0x51')][_0xaf49('0x9c')]:_0x5eff21[_0xaf49('0x9c')];switch(_0x5eff21[_0xaf49('0x9c')]){case'always':_0xfcec29=squel[_0xaf49('0x9d')]()[_0xaf49('0x9e')]('cm_hopper')[_0xaf49('0x9f')](['phone','scheduledAt','ContactId',_0xaf49('0xa0'),_0xaf49('0x67'),_0xaf49('0x5c'),_0xaf49('0x5d')],squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xa1'),_0xaf49('0xa1'))[_0xaf49('0x86')](_0xaf49('0xa2'),_0xaf49('0xa3'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')](),'ListId')[_0xaf49('0x86')](_0x787a86[_0xaf49('0x5a')]['id']['toString'](),'VoiceQueueId')[_0xaf49('0x86')](_0xaf49('0xa2'),'createdAt')[_0xaf49('0x86')]('NOW()','updatedAt')[_0xaf49('0x88')](_0xaf49('0xa7'))[_0xaf49('0x47')]('deletedAt\x20IS\x20NULL')[_0xaf49('0x47')](_0xaf49('0xa8'),_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')]())['where'](_0xaf49('0xa9'))['where'](_0xaf49('0xaa'),squel['select']()['field'](_0xaf49('0xab'))[_0xaf49('0x88')](_0xaf49('0xac'))[_0xaf49('0x47')](_0xaf49('0xad'),_0x787a86[_0xaf49('0x5a')]['id'][_0xaf49('0xa6')]()))[_0xaf49('0x47')](_0xaf49('0xaa'),squel[_0xaf49('0x85')]()['field'](_0xaf49('0xae'))[_0xaf49('0x88')](_0xaf49('0xaf'))[_0xaf49('0x47')](_0xaf49('0xad'),_0x787a86['params']['id']['toString']())))[_0xaf49('0xa6')]();break;case _0xaf49('0xb0'):_0xfcec29=squel[_0xaf49('0x9d')]()[_0xaf49('0x9e')](_0xaf49('0xaf'))[_0xaf49('0x9f')](['phone','scheduledAt',_0xaf49('0xa4'),'ListId',_0xaf49('0x67'),'createdAt',_0xaf49('0x5d')],squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xa1'),_0xaf49('0xa1'))['field'](_0xaf49('0xa2'),_0xaf49('0xa3'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')](),_0xaf49('0xa0'))[_0xaf49('0x86')](_0x787a86['params']['id'][_0xaf49('0xa6')](),_0xaf49('0x67'))['field'](_0xaf49('0xa2'),_0xaf49('0x5c'))[_0xaf49('0x86')](_0xaf49('0xa2'),_0xaf49('0x5d'))['from']('cm_contacts')['where'](_0xaf49('0xb1'))[_0xaf49('0x47')]('ListId\x20=\x20?',_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')]())[_0xaf49('0x47')]('phone\x20IS\x20NOT\x20NULL')[_0xaf49('0x47')](_0xaf49('0xaa'),squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xae'))[_0xaf49('0x88')]('cm_hopper')[_0xaf49('0x47')]('VoiceQueueId\x20=\x20?',_0x787a86[_0xaf49('0x5a')]['id'][_0xaf49('0xa6')]())))['toString']();break;default:_0xfcec29=squel[_0xaf49('0x9d')]()[_0xaf49('0x9e')](_0xaf49('0xaf'))[_0xaf49('0x9f')]([_0xaf49('0xa1'),'scheduledAt','ContactId',_0xaf49('0xa0'),_0xaf49('0x67'),_0xaf49('0x5c'),_0xaf49('0x5d')],squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xa1'),'phone')[_0xaf49('0x86')]('NOW()',_0xaf49('0xa3'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')](),_0xaf49('0xa0'))[_0xaf49('0x86')](_0x787a86[_0xaf49('0x5a')]['id']['toString'](),_0xaf49('0x67'))['field'](_0xaf49('0xa2'),_0xaf49('0x5c'))['field'](_0xaf49('0xa2'),_0xaf49('0x5d'))['from'](_0xaf49('0xa7'))['where'](_0xaf49('0xb1'))[_0xaf49('0x47')](_0xaf49('0xa8'),_0x4e776c['CmListId'][_0xaf49('0xa6')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xaf49('0xa6')]();}_0x32b12[_0xaf49('0x8c')](db['sequelize'][_0xaf49('0x3e')](_0xfcec29));}return BPromise[_0xaf49('0x94')](_0x32b12);}})[_0xaf49('0x26')](function(){return _0x4cfdb9;})[_0xaf49('0x26')](respondWithResult(_0xada0ac,null))[_0xaf49('0x4f')](handleError(_0xada0ac,null));};exports[_0xaf49('0xb2')]=function(_0x333efe,_0x3987c4,_0x3b78c6){return db[_0xaf49('0x3a')]['find']({'where':{'id':_0x333efe[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x3987c4,null))[_0xaf49('0x26')](function(_0x398f9a){if(_0x398f9a){return _0x398f9a[_0xaf49('0xb2')](_0x333efe[_0xaf49('0x3e')][_0xaf49('0x83')]);}})[_0xaf49('0x26')](function(_0x155219){if(_0x155219){return db[_0xaf49('0x62')]['destroy']({'where':{'ListId':_0x333efe[_0xaf49('0x3e')]['ids'],'VoiceQueueId':_0x333efe['params']['id']}})[_0xaf49('0x26')](function(){return _0x155219;});}})[_0xaf49('0x26')](respondWithStatusCode(_0x3987c4,null))['catch'](handleError(_0x3987c4,null));};exports['getBlackLists']=function(_0x4bd6e8,_0x2dad5d,_0x47640b){var _0x7f6b70={};var _0x145175={};var _0x2bc4e6;var _0x2347d5;return db[_0xaf49('0x3a')][_0xaf49('0x69')]({'where':{'id':_0x4bd6e8[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x2dad5d,null))[_0xaf49('0x26')](function(_0x330a3f){if(_0x330a3f){_0x2bc4e6=_0x330a3f;_0x145175['model']=_['keys'](db[_0xaf49('0x99')][_0xaf49('0x4d')]);_0x145175[_0xaf49('0x3e')]=_['keys'](_0x4bd6e8[_0xaf49('0x3e')]);_0x145175[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x145175[_0xaf49('0x3d')],_0x145175['query']);_0x7f6b70[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x145175[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x7f6b70['attributes']=_0x7f6b70[_0xaf49('0x43')][_0xaf49('0x44')]?_0x7f6b70[_0xaf49('0x43')]:_0x145175['model'];_0x7f6b70[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x7f6b70[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x4bd6e8[_0xaf49('0x3e')],_0x145175[_0xaf49('0x40')]));if(_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x7f6b70[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x7f6b70[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x7f6b70['attributes'],function(_0x112b7b){var _0x3a60c5={};_0x3a60c5[_0x112b7b]={'$like':'%'+_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x3a60c5;})});}_0x7f6b70=_[_0xaf49('0x48')]({},_0x7f6b70,_0x4bd6e8[_0xaf49('0x49')]);return _0x2bc4e6[_0xaf49('0xb3')](_0x7f6b70);}})['then'](function(_0x1c3d1f){if(_0x1c3d1f){_0x2347d5=_0x1c3d1f['length'];if(!_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x7f6b70[_0xaf49('0x1e')]=qs['limit'](_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x7f6b70[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x4bd6e8[_0xaf49('0x3e')]['offset']);}return _0x2bc4e6[_0xaf49('0xb3')](_0x7f6b70);}})[_0xaf49('0x26')](function(_0x5c50c7){if(_0x5c50c7){return _0x5c50c7?{'count':_0x2347d5,'rows':_0x5c50c7}:null;}})[_0xaf49('0x26')](respondWithResult(_0x2dad5d,null))['catch'](handleError(_0x2dad5d,null));};exports[_0xaf49('0xb4')]=function(_0xe3b268,_0x457e99,_0x2aed75){var _0x5b9a8f,_0x4f001e;return db['VoiceQueue'][_0xaf49('0x55')]({'where':{'id':_0xe3b268['params']['id']}})['then'](handleEntityNotFound(_0x457e99,null))[_0xaf49('0x26')](function(_0x249649){if(_0x249649){_0x4f001e=_0x249649;return _0x249649[_0xaf49('0xb4')](_0xe3b268[_0xaf49('0x51')]['ids'],_['omit'](_0xe3b268[_0xaf49('0x51')],[_0xaf49('0x83'),'id'])||{});}return null;})['spread'](function(_0x38e9ab){var _0x1426ea;_0x5b9a8f=_0x38e9ab||[];var _0x3eee79=[];if(_0x38e9ab){for(var _0x482537=0x0;_0x482537<_0x38e9ab['length'];_0x482537+=0x1){var _0x3f0106=_0x38e9ab[_0x482537]['get']({'plain':!![]});_0x1426ea=squel[_0xaf49('0x9d')]()['into'](_0xaf49('0xb5'))[_0xaf49('0x9f')]([_0xaf49('0xa1'),_0xaf49('0xa4'),_0xaf49('0xa0'),_0xaf49('0x67'),_0xaf49('0x5c'),_0xaf49('0x5d')],squel['select']()[_0xaf49('0x86')](_0xaf49('0xa1'),_0xaf49('0xa1'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x3f0106[_0xaf49('0xa5')][_0xaf49('0xa6')](),_0xaf49('0xa0'))['field'](_0xe3b268['params']['id']['toString'](),_0xaf49('0x67'))[_0xaf49('0x86')](_0xaf49('0xa2'),'createdAt')[_0xaf49('0x86')](_0xaf49('0xa2'),_0xaf49('0x5d'))[_0xaf49('0x88')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xaf49('0x47')](_0xaf49('0xa8'),_0x3f0106['CmListId']['toString']())[_0xaf49('0x47')](_0xaf49('0xa9')))[_0xaf49('0xa6')]();_0x3eee79[_0xaf49('0x8c')](db['sequelize'][_0xaf49('0x3e')](_0x1426ea));}return BPromise[_0xaf49('0x94')](_0x3eee79);}})[_0xaf49('0x26')](function(){return _0x5b9a8f;})[_0xaf49('0x26')](respondWithResult(_0x457e99,null))[_0xaf49('0x4f')](handleError(_0x457e99,null));};exports[_0xaf49('0xb6')]=function(_0x5d18f8,_0x3f7b6a,_0x348e04){return db[_0xaf49('0x3a')]['find']({'where':{'id':_0x5d18f8[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x3f7b6a,null))[_0xaf49('0x26')](function(_0x34a768){if(_0x34a768){return _0x34a768[_0xaf49('0xb6')](_0x5d18f8[_0xaf49('0x3e')][_0xaf49('0x83')]);}})[_0xaf49('0x26')](function(_0x553160){if(_0x553160){return db[_0xaf49('0x6c')][_0xaf49('0x27')]({'where':{'ListId':_0x5d18f8[_0xaf49('0x3e')][_0xaf49('0x83')],'VoiceQueueId':_0x5d18f8['params']['id']}})[_0xaf49('0x26')](function(){return _0x553160;});}})[_0xaf49('0x26')](respondWithStatusCode(_0x3f7b6a,null))[_0xaf49('0x4f')](handleError(_0x3f7b6a,null));};
\ No newline at end of file
+var _0x9c33=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','filter','ignore','map','value','type','name','UserProfileResource','error','send','index','VoiceQueue','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','includeAll','include','rows','catch','params','rawAttributes','create','body','user','role','outbound','find','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','options','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','getHoppers','findOne','CmHopper','VoiceQueueId','findAll','getHopperHistories','CmHopperHistory','hasOwnProperty','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','teams','Agents','online','voicePause','flatMap','forEach','penalty','sequelize','transaction','addTeams','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','isNil','interface','format','emit','userVoiceQueue:save','ids','User','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','union','compact','isEmpty','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','push','SIP/%s','all','getAgents','getMembers','getLists','CmList','spread','dialCheckDuplicateType','always','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','cm_hopper','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x1dd7d4,_0x2e064c){var _0x12c34f=function(_0x3ef656){while(--_0x3ef656){_0x1dd7d4['push'](_0x1dd7d4['shift']());}};_0x12c34f(++_0x2e064c);}(_0x9c33,0x161));var _0x39c3=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x9c33[_0x45f951];return _0x24756c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x39c3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x39c3('0x1'));var rp=require(_0x39c3('0x2'));var moment=require(_0x39c3('0x3'));var BPromise=require(_0x39c3('0x4'));var Mustache=require(_0x39c3('0x5'));var util=require(_0x39c3('0x6'));var path=require(_0x39c3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x39c3('0x8'));var fs=require('fs');var fs_extra=require(_0x39c3('0x9'));var _=require(_0x39c3('0xa'));var squel=require('squel');var crypto=require(_0x39c3('0xb'));var jsforce=require(_0x39c3('0xc'));var deskjs=require(_0x39c3('0xd'));var toCsv=require(_0x39c3('0xe'));var querystring=require(_0x39c3('0xf'));var Papa=require(_0x39c3('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x39c3('0x11'));var as=require(_0x39c3('0x12'));var hardwareService=require(_0x39c3('0x13'));var logger=require('../../config/logger')(_0x39c3('0x14'));var utils=require(_0x39c3('0x15'));var config=require(_0x39c3('0x16'));var licenseUtil=require(_0x39c3('0x17'));var db=require(_0x39c3('0x18'))['db'];config['redis']=_[_0x39c3('0x19')](config[_0x39c3('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x39c3('0x1b'))(new Redis(config[_0x39c3('0x1a')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x54f362,_0x70f5e3){_0x70f5e3=_0x70f5e3||0xcc;return function(_0x475741){if(_0x475741){return _0x54f362[_0x39c3('0x1c')](_0x70f5e3);}return _0x54f362['status'](_0x70f5e3)[_0x39c3('0x1d')]();};}function respondWithResult(_0x2b0644,_0x2d98c4){_0x2d98c4=_0x2d98c4||0xc8;return function(_0x16a94e){if(_0x16a94e){return _0x2b0644[_0x39c3('0x1e')](_0x2d98c4)['json'](_0x16a94e);}};}function respondWithFilteredResult(_0x337e17,_0x3c4f32){return function(_0x693e4d){if(_0x693e4d){var _0x52561d=typeof _0x3c4f32[_0x39c3('0x1f')]===_0x39c3('0x20')&&typeof _0x3c4f32[_0x39c3('0x21')]===_0x39c3('0x20');var _0x5982f0=_0x693e4d[_0x39c3('0x22')];var _0xe3e086=_0x52561d?0x0:_0x3c4f32['offset'];var _0x19d1a6=_0x52561d?_0x693e4d[_0x39c3('0x22')]:_0x3c4f32['offset']+_0x3c4f32[_0x39c3('0x21')];var _0x201f0b;if(_0x19d1a6>=_0x5982f0){_0x19d1a6=_0x5982f0;_0x201f0b=0xc8;}else{_0x201f0b=0xce;}_0x337e17['status'](_0x201f0b);return _0x337e17['set'](_0x39c3('0x23'),_0xe3e086+'-'+_0x19d1a6+'/'+_0x5982f0)[_0x39c3('0x24')](_0x693e4d);}return null;};}function patchUpdates(_0x279dd7){return function(_0x1a5954){try{jsonpatch[_0x39c3('0x25')](_0x1a5954,_0x279dd7,!![]);}catch(_0x56e57a){return BPromise[_0x39c3('0x26')](_0x56e57a);}return _0x1a5954[_0x39c3('0x27')]();};}function saveUpdates(_0x5d1f74,_0x4d34f2){return function(_0xfa69d3){if(_0xfa69d3){return _0xfa69d3[_0x39c3('0x28')](_0x5d1f74)[_0x39c3('0x29')](function(_0x44ab4d){return _0x44ab4d;});}return null;};}function removeEntity(_0x253f80,_0x5be560){return function(_0x5be0c6){if(_0x5be0c6){return _0x5be0c6[_0x39c3('0x2a')]()[_0x39c3('0x29')](function(){var _0x28a682=_0x5be0c6[_0x39c3('0x2b')]({'plain':!![]});var _0x4f178e=[{'name':_0x39c3('0x2c'),'value':_0x39c3('0x2d'),'ignore':![]},{'name':_0x39c3('0x2e'),'value':'outbound','ignore':![]}];var _0x30b0fe=_(_0x4f178e)[_0x39c3('0x2f')](_0x39c3('0x30'))[_0x39c3('0x31')]('value')[_0x39c3('0x32')]();if(_['includes'](_0x30b0fe,_0x28a682[_0x39c3('0x33')])){return;}var _0x5cf69c=_['find'](_0x4f178e,['value',_0x28a682[_0x39c3('0x33')]])[_0x39c3('0x34')];return db[_0x39c3('0x35')][_0x39c3('0x2a')]({'where':{'type':_0x5cf69c,'resourceId':_0x28a682['id']}})[_0x39c3('0x29')](function(){return _0x5be0c6;});})[_0x39c3('0x29')](function(){_0x253f80[_0x39c3('0x1e')](0xcc)[_0x39c3('0x1d')]();});}};}function handleEntityNotFound(_0x2fd019,_0x5a79a7){return function(_0x53f9e9){if(!_0x53f9e9){_0x2fd019[_0x39c3('0x1c')](0x194);}return _0x53f9e9;};}function handleError(_0x4f8a00,_0x493e1c){_0x493e1c=_0x493e1c||0x1f4;return function(_0x54edfb){logger[_0x39c3('0x36')](_0x54edfb['stack']);if(_0x54edfb[_0x39c3('0x34')]){delete _0x54edfb[_0x39c3('0x34')];}_0x4f8a00[_0x39c3('0x1e')](_0x493e1c)[_0x39c3('0x37')](_0x54edfb);};}exports[_0x39c3('0x38')]=function(_0x66fc1f,_0x2976d4){var _0x506535={},_0x334d15={},_0x36e089={'count':0x0,'rows':[]};var _0x1e9100=_[_0x39c3('0x31')](db[_0x39c3('0x39')]['rawAttributes'],function(_0x400fb5){return{'name':_0x400fb5['fieldName'],'type':_0x400fb5[_0x39c3('0x33')][_0x39c3('0x3a')]};});_0x334d15['model']=_[_0x39c3('0x31')](_0x1e9100,_0x39c3('0x34'));_0x334d15[_0x39c3('0x3b')]=_[_0x39c3('0x3c')](_0x66fc1f[_0x39c3('0x3b')]);_0x334d15[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x334d15[_0x39c3('0x3f')],_0x334d15['query']);_0x506535[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0x334d15[_0x39c3('0x3f')],qs['fields'](_0x66fc1f['query'][_0x39c3('0x41')]));_0x506535[_0x39c3('0x40')]=_0x506535[_0x39c3('0x40')][_0x39c3('0x42')]?_0x506535[_0x39c3('0x40')]:_0x334d15[_0x39c3('0x3f')];if(!_0x66fc1f[_0x39c3('0x3b')]['hasOwnProperty'](_0x39c3('0x43'))){_0x506535['limit']=qs[_0x39c3('0x21')](_0x66fc1f['query']['limit']);_0x506535[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0x66fc1f[_0x39c3('0x3b')][_0x39c3('0x1f')]);}_0x506535[_0x39c3('0x44')]=qs['sort'](_0x66fc1f[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x506535['where']=qs['filters'](_[_0x39c3('0x46')](_0x66fc1f[_0x39c3('0x3b')],_0x334d15[_0x39c3('0x3d')]),_0x1e9100);if(_0x66fc1f[_0x39c3('0x3b')][_0x39c3('0x2f')]){_0x506535[_0x39c3('0x47')]=_[_0x39c3('0x48')](_0x506535['where'],{'$or':_[_0x39c3('0x31')](_0x1e9100,function(_0x520ecd){if(_0x520ecd['type']!==_0x39c3('0x49')){var _0x36a0d1={};_0x36a0d1[_0x520ecd[_0x39c3('0x34')]]={'$like':'%'+_0x66fc1f['query'][_0x39c3('0x2f')]+'%'};return _0x36a0d1;}})});}_0x506535=_[_0x39c3('0x48')]({},_0x506535,_0x66fc1f['options']);var _0x15ee64={'where':_0x506535[_0x39c3('0x47')]};return db[_0x39c3('0x39')]['count'](_0x15ee64)['then'](function(_0xfc47bc){_0x36e089[_0x39c3('0x22')]=_0xfc47bc;if(_0x66fc1f[_0x39c3('0x3b')][_0x39c3('0x4a')]){_0x506535[_0x39c3('0x4b')]=[{'all':!![]}];}return db[_0x39c3('0x39')]['findAll'](_0x506535);})['then'](function(_0x522be4){_0x36e089[_0x39c3('0x4c')]=_0x522be4;return _0x36e089;})[_0x39c3('0x29')](respondWithFilteredResult(_0x2976d4,_0x506535))[_0x39c3('0x4d')](handleError(_0x2976d4,null));};exports['show']=function(_0x5dc3ac,_0x47caa1){var _0x28cbf3={'raw':![],'where':{'id':_0x5dc3ac[_0x39c3('0x4e')]['id']}},_0x37a05b={};_0x37a05b[_0x39c3('0x3f')]=_[_0x39c3('0x3c')](db[_0x39c3('0x39')][_0x39c3('0x4f')]);_0x37a05b[_0x39c3('0x3b')]=_[_0x39c3('0x3c')](_0x5dc3ac[_0x39c3('0x3b')]);_0x37a05b[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x37a05b[_0x39c3('0x3f')],_0x37a05b[_0x39c3('0x3b')]);_0x28cbf3['attributes']=_[_0x39c3('0x3e')](_0x37a05b[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x5dc3ac['query'][_0x39c3('0x41')]));_0x28cbf3[_0x39c3('0x40')]=_0x28cbf3['attributes'][_0x39c3('0x42')]?_0x28cbf3[_0x39c3('0x40')]:_0x37a05b[_0x39c3('0x3f')];if(_0x5dc3ac['query']['includeAll']){_0x28cbf3[_0x39c3('0x4b')]=[{'all':!![]}];}_0x28cbf3=_[_0x39c3('0x48')]({},_0x28cbf3,_0x5dc3ac['options']);return db[_0x39c3('0x39')]['find'](_0x28cbf3)['then'](handleEntityNotFound(_0x47caa1,null))[_0x39c3('0x29')](respondWithResult(_0x47caa1,null))['catch'](handleError(_0x47caa1,null));};exports['create']=function(_0xb7b8fe,_0x1caaf8){return db['VoiceQueue'][_0x39c3('0x50')](_0xb7b8fe[_0x39c3('0x51')],{})['then'](function(_0x3902f1){var _0xbc5ba0=_0xb7b8fe[_0x39c3('0x52')]['get']({'plain':!![]});if(!_0xbc5ba0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xbc5ba0[_0x39c3('0x53')]===_0x39c3('0x52')){var _0x5c1aba=_0x3902f1[_0x39c3('0x2b')]({'plain':!![]});var _0x313986=[{'name':'VoiceQueues','value':_0x39c3('0x2d')},{'name':_0x39c3('0x2e'),'value':_0x39c3('0x54')}];var _0x1f4f0e=_[_0x39c3('0x55')](_0x313986,[_0x39c3('0x32'),_0x5c1aba[_0x39c3('0x33')]])[_0x39c3('0x34')];return db[_0x39c3('0x56')]['find']({'where':{'name':_0x1f4f0e,'userProfileId':_0xbc5ba0['userProfileId']},'raw':!![]})[_0x39c3('0x29')](function(_0x6e0a85){if(_0x6e0a85&&_0x6e0a85[_0x39c3('0x57')]===0x0){return db['UserProfileResource'][_0x39c3('0x50')]({'name':_0x5c1aba[_0x39c3('0x34')],'resourceId':_0x5c1aba['id'],'type':_0x6e0a85[_0x39c3('0x34')],'sectionId':_0x6e0a85['id']},{})[_0x39c3('0x29')](function(){return _0x3902f1;});}else{return _0x3902f1;}})[_0x39c3('0x4d')](function(_0x1ac8b2){logger['error'](_0x39c3('0x58'),_0x1ac8b2);throw _0x1ac8b2;});}return _0x3902f1;})[_0x39c3('0x29')](respondWithResult(_0x1caaf8,0xc9))[_0x39c3('0x4d')](handleError(_0x1caaf8,null));};exports[_0x39c3('0x59')]=function(_0x14cb07,_0x2b0426){var _0x1936ef={'where':{'id':_0x14cb07[_0x39c3('0x4e')]['id']}},_0x50fda6={};_0x50fda6[_0x39c3('0x3f')]=_[_0x39c3('0x3c')](db[_0x39c3('0x39')][_0x39c3('0x4f')]);_0x1936ef['attributes']=_[_0x39c3('0x3e')](_0x50fda6[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x14cb07[_0x39c3('0x3b')][_0x39c3('0x41')]));_0x1936ef[_0x39c3('0x40')]=_0x1936ef['attributes'][_0x39c3('0x42')]?_0x1936ef['attributes']:_0x50fda6[_0x39c3('0x3f')];if(_0x14cb07[_0x39c3('0x3b')][_0x39c3('0x4a')]){_0x1936ef[_0x39c3('0x4b')]=[{'all':!![]}];}_0x1936ef=_[_0x39c3('0x48')]({},_0x1936ef,_0x14cb07[_0x39c3('0x5a')]);return db[_0x39c3('0x39')][_0x39c3('0x55')](_0x1936ef)[_0x39c3('0x29')](handleEntityNotFound(_0x2b0426,null))[_0x39c3('0x29')](function(_0x2f9a7c){if(_0x2f9a7c){var _0x1f2fd8=_0x2f9a7c[_0x39c3('0x2b')]({'plain':!![]});_0x1f2fd8=qs[_0x39c3('0x5b')](_0x1f2fd8,['id',_0x39c3('0x5c'),'updatedAt']);_0x14cb07[_0x39c3('0x51')]=_[_0x39c3('0x5b')](_0x14cb07[_0x39c3('0x51')],['id','createdAt',_0x39c3('0x5d')]);return db['VoiceQueue']['create'](_[_0x39c3('0x48')](_0x1f2fd8,_0x14cb07[_0x39c3('0x51')]),{'include':_0x14cb07['query'][_0x39c3('0x4a')]?[{'all':!![]}]:undefined})[_0x39c3('0x29')](function(_0x4443e8){var _0x192240=_0x14cb07[_0x39c3('0x52')][_0x39c3('0x2b')]({'plain':!![]});if(!_0x192240)throw new Error(_0x39c3('0x5e'));if(_0x192240['role']===_0x39c3('0x52')){var _0xb99033=_0x4443e8[_0x39c3('0x2b')]({'plain':!![]});var _0x468bbc=[{'name':_0x39c3('0x2c'),'value':_0x39c3('0x2d')},{'name':_0x39c3('0x2e'),'value':_0x39c3('0x54')}];var _0x32ec89=_['find'](_0x468bbc,[_0x39c3('0x32'),_0xb99033['type']])[_0x39c3('0x34')];return db[_0x39c3('0x56')]['find']({'where':{'name':_0x32ec89,'userProfileId':_0x192240[_0x39c3('0x5f')]},'raw':!![]})[_0x39c3('0x29')](function(_0x314018){if(_0x314018&&_0x314018['autoAssociation']===0x0){return db['UserProfileResource'][_0x39c3('0x50')]({'name':_0xb99033[_0x39c3('0x34')],'resourceId':_0xb99033['id'],'type':_0x314018[_0x39c3('0x34')],'sectionId':_0x314018['id']},{})[_0x39c3('0x29')](function(){return _0x4443e8;});}else{return _0x4443e8;}})[_0x39c3('0x4d')](function(_0x1fbe48){logger[_0x39c3('0x36')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fbe48);throw _0x1fbe48;});}return _0x4443e8;});}})[_0x39c3('0x29')](respondWithResult(_0x2b0426,0xc9))[_0x39c3('0x4d')](handleError(_0x2b0426,null));};exports['update']=function(_0x317300,_0x5d842e){if(_0x317300[_0x39c3('0x51')]['id']){delete _0x317300[_0x39c3('0x51')]['id'];}return db[_0x39c3('0x39')]['find']({'where':{'id':_0x317300[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x5d842e,null))[_0x39c3('0x29')](saveUpdates(_0x317300[_0x39c3('0x51')],null))['then'](respondWithResult(_0x5d842e,null))[_0x39c3('0x4d')](handleError(_0x5d842e,null));};exports['destroy']=function(_0x34f5c3,_0x50d61e){return db[_0x39c3('0x39')][_0x39c3('0x55')]({'where':{'id':_0x34f5c3[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x50d61e,null))[_0x39c3('0x29')](removeEntity(_0x50d61e,null))[_0x39c3('0x4d')](handleError(_0x50d61e,null));};exports[_0x39c3('0x60')]=function(_0x5b968f,_0x28211b,_0x9d1b5){var _0x316604={'raw':![],'where':{}};var _0x378a3e={};var _0x207bf6={'count':0x0,'rows':[]};return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0x5b968f['params']['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x28211b,null))['then'](function(_0x50607a){if(_0x50607a){_0x378a3e['model']=_[_0x39c3('0x3c')](db[_0x39c3('0x62')]['rawAttributes']);_0x378a3e[_0x39c3('0x3b')]=_[_0x39c3('0x3c')](_0x5b968f[_0x39c3('0x3b')]);_0x378a3e[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x378a3e['model'],_0x378a3e[_0x39c3('0x3b')]);_0x316604[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0x378a3e[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x5b968f['query'][_0x39c3('0x41')]));_0x316604[_0x39c3('0x40')]=_0x316604[_0x39c3('0x40')][_0x39c3('0x42')]?_0x316604[_0x39c3('0x40')]:_0x378a3e['model'];if(!_0x5b968f['query']['hasOwnProperty'](_0x39c3('0x43'))){_0x316604['limit']=qs[_0x39c3('0x21')](_0x5b968f['query']['limit']);_0x316604[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0x5b968f[_0x39c3('0x3b')][_0x39c3('0x1f')]);}_0x316604[_0x39c3('0x44')]=qs['sort'](_0x5b968f[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x316604[_0x39c3('0x47')]=qs[_0x39c3('0x3d')](_[_0x39c3('0x46')](_0x5b968f[_0x39c3('0x3b')],_0x378a3e[_0x39c3('0x3d')]));_0x316604[_0x39c3('0x47')][_0x39c3('0x63')]=_0x50607a['id'];if(_0x5b968f['query']['filter']){_0x316604['where']=_[_0x39c3('0x48')](_0x316604[_0x39c3('0x47')],{'$or':_[_0x39c3('0x31')](_0x316604[_0x39c3('0x40')],function(_0x56bd12){var _0x136d31={};_0x136d31[_0x56bd12]={'$like':'%'+_0x5b968f[_0x39c3('0x3b')][_0x39c3('0x2f')]+'%'};return _0x136d31;})});}_0x316604=_[_0x39c3('0x48')]({},_0x316604,_0x5b968f['options']);return db[_0x39c3('0x62')]['count']({'where':_0x316604[_0x39c3('0x47')]})[_0x39c3('0x29')](function(_0x476d73){_0x207bf6[_0x39c3('0x22')]=_0x476d73;if(_0x5b968f[_0x39c3('0x3b')][_0x39c3('0x4a')]){_0x316604[_0x39c3('0x4b')]=[{'all':!![]}];}return db[_0x39c3('0x62')][_0x39c3('0x64')](_0x316604);})[_0x39c3('0x29')](function(_0x46f756){_0x207bf6['rows']=_0x46f756;return _0x207bf6;});}})['then'](respondWithFilteredResult(_0x28211b,_0x316604))[_0x39c3('0x4d')](handleError(_0x28211b,null));};exports[_0x39c3('0x65')]=function(_0xfe0f0e,_0x11c4bb,_0x18351b){var _0x1671d9={'raw':!![],'where':{}};var _0x4bd067={};var _0x2d857c={'count':0x0,'rows':[]};return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0xfe0f0e[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x11c4bb,null))[_0x39c3('0x29')](function(_0x2c7112){if(_0x2c7112){_0x4bd067[_0x39c3('0x3f')]=_[_0x39c3('0x3c')](db[_0x39c3('0x66')][_0x39c3('0x4f')]);_0x4bd067['query']=_[_0x39c3('0x3c')](_0xfe0f0e[_0x39c3('0x3b')]);_0x4bd067[_0x39c3('0x3d')]=_['intersection'](_0x4bd067[_0x39c3('0x3f')],_0x4bd067[_0x39c3('0x3b')]);_0x1671d9[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0x4bd067[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0xfe0f0e['query']['fields']));_0x1671d9['attributes']=_0x1671d9[_0x39c3('0x40')][_0x39c3('0x42')]?_0x1671d9[_0x39c3('0x40')]:_0x4bd067[_0x39c3('0x3f')];if(!_0xfe0f0e['query'][_0x39c3('0x67')]('nolimit')){_0x1671d9[_0x39c3('0x21')]=qs[_0x39c3('0x21')](_0xfe0f0e[_0x39c3('0x3b')]['limit']);_0x1671d9[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0xfe0f0e[_0x39c3('0x3b')][_0x39c3('0x1f')]);}_0x1671d9[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0xfe0f0e[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x1671d9['where']=qs['filters'](_[_0x39c3('0x46')](_0xfe0f0e[_0x39c3('0x3b')],_0x4bd067[_0x39c3('0x3d')]));_0x1671d9[_0x39c3('0x47')][_0x39c3('0x63')]=_0x2c7112['id'];if(_0xfe0f0e[_0x39c3('0x3b')][_0x39c3('0x2f')]){_0x1671d9['where']=_[_0x39c3('0x48')](_0x1671d9[_0x39c3('0x47')],{'$or':_[_0x39c3('0x31')](_0x1671d9[_0x39c3('0x40')],function(_0x58397d){var _0xa7555e={};_0xa7555e[_0x58397d]={'$like':'%'+_0xfe0f0e[_0x39c3('0x3b')][_0x39c3('0x2f')]+'%'};return _0xa7555e;})});}_0x1671d9=_[_0x39c3('0x48')]({},_0x1671d9,_0xfe0f0e[_0x39c3('0x5a')]);return db[_0x39c3('0x66')][_0x39c3('0x22')]({'where':_0x1671d9[_0x39c3('0x47')]})[_0x39c3('0x29')](function(_0x5b516f){_0x2d857c[_0x39c3('0x22')]=_0x5b516f;if(_0xfe0f0e['query'][_0x39c3('0x4a')]){_0x1671d9[_0x39c3('0x4b')]=[{'all':!![]}];}return db[_0x39c3('0x66')][_0x39c3('0x64')](_0x1671d9);})[_0x39c3('0x29')](function(_0x2efc22){_0x2d857c[_0x39c3('0x4c')]=_0x2efc22;return _0x2d857c;});}})['then'](respondWithFilteredResult(_0x11c4bb,_0x1671d9))[_0x39c3('0x4d')](handleError(_0x11c4bb,null));};exports[_0x39c3('0x68')]=function(_0x3a7066,_0x422f66,_0x4e999f){var _0x44d870={'raw':!![],'where':{}};var _0x3035ca={};var _0x3d3034={'count':0x0,'rows':[]};return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0x3a7066['params']['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x422f66,null))[_0x39c3('0x29')](function(_0x4a934f){if(_0x4a934f){_0x3035ca['model']=_[_0x39c3('0x3c')](db[_0x39c3('0x69')][_0x39c3('0x4f')]);_0x3035ca[_0x39c3('0x3b')]=_['keys'](_0x3a7066[_0x39c3('0x3b')]);_0x3035ca[_0x39c3('0x3d')]=_['intersection'](_0x3035ca[_0x39c3('0x3f')],_0x3035ca[_0x39c3('0x3b')]);_0x44d870[_0x39c3('0x40')]=_['intersection'](_0x3035ca[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x3a7066[_0x39c3('0x3b')]['fields']));_0x44d870['attributes']=_0x44d870[_0x39c3('0x40')][_0x39c3('0x42')]?_0x44d870[_0x39c3('0x40')]:_0x3035ca['model'];if(!_0x3a7066[_0x39c3('0x3b')][_0x39c3('0x67')](_0x39c3('0x43'))){_0x44d870[_0x39c3('0x21')]=qs['limit'](_0x3a7066[_0x39c3('0x3b')][_0x39c3('0x21')]);_0x44d870[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0x3a7066[_0x39c3('0x3b')][_0x39c3('0x1f')]);}_0x44d870[_0x39c3('0x44')]=qs['sort'](_0x3a7066['query'][_0x39c3('0x45')]);_0x44d870[_0x39c3('0x47')]=qs[_0x39c3('0x3d')](_[_0x39c3('0x46')](_0x3a7066[_0x39c3('0x3b')],_0x3035ca[_0x39c3('0x3d')]));_0x44d870['where'][_0x39c3('0x63')]=_0x4a934f['id'];if(_0x3a7066[_0x39c3('0x3b')][_0x39c3('0x2f')]){_0x44d870[_0x39c3('0x47')]=_[_0x39c3('0x48')](_0x44d870[_0x39c3('0x47')],{'$or':_['map'](_0x44d870[_0x39c3('0x40')],function(_0x360f31){var _0x4a8465={};_0x4a8465[_0x360f31]={'$like':'%'+_0x3a7066[_0x39c3('0x3b')][_0x39c3('0x2f')]+'%'};return _0x4a8465;})});}_0x44d870=_['merge']({},_0x44d870,_0x3a7066[_0x39c3('0x5a')]);return db[_0x39c3('0x69')][_0x39c3('0x22')]({'where':_0x44d870[_0x39c3('0x47')]})[_0x39c3('0x29')](function(_0x402b4e){_0x3d3034[_0x39c3('0x22')]=_0x402b4e;if(_0x3a7066['query'][_0x39c3('0x4a')]){_0x44d870[_0x39c3('0x4b')]=[{'all':!![]}];}return db[_0x39c3('0x69')][_0x39c3('0x64')](_0x44d870);})['then'](function(_0x3e4d35){_0x3d3034[_0x39c3('0x4c')]=_0x3e4d35;return _0x3d3034;});}})[_0x39c3('0x29')](respondWithFilteredResult(_0x422f66,_0x44d870))[_0x39c3('0x4d')](handleError(_0x422f66,null));};exports[_0x39c3('0x6a')]=function(_0x84ad63,_0x2789b5,_0x4f67ee){var _0x2acc95={'raw':!![],'where':{}};var _0x2771a1={};var _0x299a2b={'count':0x0,'rows':[]};return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0x84ad63[_0x39c3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2789b5,null))[_0x39c3('0x29')](function(_0x4adb0f){if(_0x4adb0f){_0x2771a1[_0x39c3('0x3f')]=_['keys'](db[_0x39c3('0x6b')]['rawAttributes']);_0x2771a1['query']=_['keys'](_0x84ad63[_0x39c3('0x3b')]);_0x2771a1[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x2771a1['model'],_0x2771a1[_0x39c3('0x3b')]);_0x2acc95[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0x2771a1[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x84ad63[_0x39c3('0x3b')][_0x39c3('0x41')]));_0x2acc95[_0x39c3('0x40')]=_0x2acc95['attributes'][_0x39c3('0x42')]?_0x2acc95[_0x39c3('0x40')]:_0x2771a1[_0x39c3('0x3f')];if(!_0x84ad63['query'][_0x39c3('0x67')](_0x39c3('0x43'))){_0x2acc95['limit']=qs[_0x39c3('0x21')](_0x84ad63[_0x39c3('0x3b')][_0x39c3('0x21')]);_0x2acc95[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0x84ad63[_0x39c3('0x3b')]['offset']);}_0x2acc95[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0x84ad63[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x2acc95[_0x39c3('0x47')]=qs['filters'](_[_0x39c3('0x46')](_0x84ad63[_0x39c3('0x3b')],_0x2771a1[_0x39c3('0x3d')]));_0x2acc95[_0x39c3('0x47')][_0x39c3('0x63')]=_0x4adb0f['id'];if(_0x84ad63['query'][_0x39c3('0x2f')]){_0x2acc95[_0x39c3('0x47')]=_['merge'](_0x2acc95[_0x39c3('0x47')],{'$or':_[_0x39c3('0x31')](_0x2acc95[_0x39c3('0x40')],function(_0x542e54){var _0x933440={};_0x933440[_0x542e54]={'$like':'%'+_0x84ad63[_0x39c3('0x3b')]['filter']+'%'};return _0x933440;})});}_0x2acc95=_[_0x39c3('0x48')]({},_0x2acc95,_0x84ad63[_0x39c3('0x5a')]);return db[_0x39c3('0x6b')]['count']({'where':_0x2acc95[_0x39c3('0x47')]})[_0x39c3('0x29')](function(_0x3eb328){_0x299a2b[_0x39c3('0x22')]=_0x3eb328;if(_0x84ad63[_0x39c3('0x3b')][_0x39c3('0x4a')]){_0x2acc95[_0x39c3('0x4b')]=[{'all':!![]}];}return db[_0x39c3('0x6b')]['findAll'](_0x2acc95);})[_0x39c3('0x29')](function(_0x228ea8){_0x299a2b['rows']=_0x228ea8;return _0x299a2b;});}})[_0x39c3('0x29')](respondWithFilteredResult(_0x2789b5,_0x2acc95))[_0x39c3('0x4d')](handleError(_0x2789b5,null));};exports[_0x39c3('0x6c')]=function(_0xa63ae2,_0x2753a9,_0x3a46da){var _0x34795d={};var _0xd95a55={};var _0x2d49dc;var _0x432d4b;return db[_0x39c3('0x39')]['findOne']({'where':{'id':_0xa63ae2[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x2753a9,null))[_0x39c3('0x29')](function(_0x209583){if(_0x209583){_0x2d49dc=_0x209583;_0xd95a55[_0x39c3('0x3f')]=_[_0x39c3('0x3c')](db[_0x39c3('0x6d')][_0x39c3('0x4f')]);_0xd95a55['query']=_[_0x39c3('0x3c')](_0xa63ae2[_0x39c3('0x3b')]);_0xd95a55[_0x39c3('0x3d')]=_['intersection'](_0xd95a55[_0x39c3('0x3f')],_0xd95a55[_0x39c3('0x3b')]);_0x34795d[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0xd95a55[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0xa63ae2[_0x39c3('0x3b')][_0x39c3('0x41')]));_0x34795d[_0x39c3('0x40')]=_0x34795d[_0x39c3('0x40')][_0x39c3('0x42')]?_0x34795d[_0x39c3('0x40')]:_0xd95a55[_0x39c3('0x3f')];_0x34795d[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0xa63ae2[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x34795d['where']=qs[_0x39c3('0x3d')](_[_0x39c3('0x46')](_0xa63ae2['query'],_0xd95a55[_0x39c3('0x3d')]));if(_0xa63ae2['query'][_0x39c3('0x2f')]){_0x34795d[_0x39c3('0x47')]=_[_0x39c3('0x48')](_0x34795d[_0x39c3('0x47')],{'$or':_[_0x39c3('0x31')](_0x34795d[_0x39c3('0x40')],function(_0x32abcb){var _0x41e091={};_0x41e091[_0x32abcb]={'$like':'%'+_0xa63ae2[_0x39c3('0x3b')][_0x39c3('0x2f')]+'%'};return _0x41e091;})});}_0x34795d=_[_0x39c3('0x48')]({},_0x34795d,_0xa63ae2[_0x39c3('0x5a')]);return _0x2d49dc[_0x39c3('0x6c')](_0x34795d);}})[_0x39c3('0x29')](function(_0x218ab6){if(_0x218ab6){_0x432d4b=_0x218ab6[_0x39c3('0x42')];if(!_0xa63ae2[_0x39c3('0x3b')][_0x39c3('0x67')](_0x39c3('0x43'))){_0x34795d[_0x39c3('0x21')]=qs['limit'](_0xa63ae2['query'][_0x39c3('0x21')]);_0x34795d['offset']=qs[_0x39c3('0x1f')](_0xa63ae2[_0x39c3('0x3b')][_0x39c3('0x1f')]);}return _0x2d49dc[_0x39c3('0x6c')](_0x34795d);}})[_0x39c3('0x29')](function(_0x339bec){if(_0x339bec){return _0x339bec?{'count':_0x432d4b,'rows':_0x339bec}:null;}})[_0x39c3('0x29')](respondWithResult(_0x2753a9,null))[_0x39c3('0x4d')](handleError(_0x2753a9,null));};exports['addTeams']=function(_0x1fbf19,_0x21e861,_0x20227a){var _0x9a92ec=_0x1fbf19[_0x39c3('0x51')][_0x39c3('0x6e')];var _0x12a6db=_[_0x39c3('0x31')](_0x9a92ec,'id');return db['Team']['findAll']({'where':{'id':_0x12a6db},'attributes':['id'],'include':[{'model':db['User'],'as':_0x39c3('0x6f'),'attributes':['id','name',_0x39c3('0x70'),_0x39c3('0x71'),'interface'],'raw':!![]}]})[_0x39c3('0x29')](function(_0x50ae4b){if(_0x50ae4b){var _0x1e9978=_[_0x39c3('0x72')](_0x50ae4b,function(_0x37934b){var _0x53d1b3=_0x37934b[_0x39c3('0x2b')]({'plain':!![]});_0x53d1b3[_0x39c3('0x6f')][_0x39c3('0x73')](function(_0x3b74b2){_0x3b74b2[_0x39c3('0x74')]=_['find'](_0x9a92ec,{'id':_0x53d1b3['id']})[_0x39c3('0x74')];});return _0x53d1b3[_0x39c3('0x6f')];});return db[_0x39c3('0x39')][_0x39c3('0x55')]({'where':{'id':_0x1fbf19[_0x39c3('0x4e')]['id']}})['then'](function(_0x3309f7){return db[_0x39c3('0x75')][_0x39c3('0x76')](function(_0x1bd3ac){return _0x3309f7[_0x39c3('0x77')](_0x12a6db,{'transaction':_0x1bd3ac})['then'](function(){return BPromise[_0x39c3('0x78')](_0x9a92ec,function(_0x2373b2){return db[_0x39c3('0x79')][_0x39c3('0x7a')]({'TeamId':_0x2373b2['id'],'VoiceQueueId':_0x1fbf19[_0x39c3('0x4e')]['id'],'penalty':_0x2373b2['penalty']},{'transaction':_0x1bd3ac});});})[_0x39c3('0x29')](function(){return BPromise[_0x39c3('0x78')](_0x1e9978,function(_0x5f1a47){return db[_0x39c3('0x7b')][_0x39c3('0x7c')]({'where':{'UserId':_0x5f1a47['id'],'VoiceQueueId':_0x1fbf19[_0x39c3('0x4e')]['id']},'defaults':{'penalty':_0x5f1a47[_0x39c3('0x74')]},'transaction':_0x1bd3ac});});})['then'](function(){return BPromise['each'](_['filter'](_0x1e9978,{'online':!![]}),function(_0x2d22c5){return db['UserVoiceQueueRt'][_0x39c3('0x7a')]({'membername':_0x2d22c5['name'],'UserId':_0x2d22c5['id'],'queue_name':_0x3309f7[_0x39c3('0x34')],'VoiceQueueId':_0x3309f7['id'],'interface':_[_0x39c3('0x7d')](_0x2d22c5[_0x39c3('0x7e')])?util[_0x39c3('0x7f')]('SIP/%s',_0x2d22c5[_0x39c3('0x34')]):_0x2d22c5[_0x39c3('0x7e')],'paused':_0x2d22c5[_0x39c3('0x71')]||![],'penalty':_0x2d22c5['penalty']},{'transaction':_0x1bd3ac});});})[_0x39c3('0x29')](function(){_0x1e9978[_0x39c3('0x73')](function(_0x51fee3){socket[_0x39c3('0x80')](_0x39c3('0x81'),{'UserId':_0x51fee3['id'],'VoiceQueueId':_0x3309f7['id']});});});});});}})['then'](respondWithStatusCode(_0x21e861,null))[_0x39c3('0x4d')](handleError(_0x21e861,null));};exports['removeTeams']=function(_0x17c8e9,_0x1599a4,_0x27368c){return db[_0x39c3('0x6d')][_0x39c3('0x64')]({'where':{'id':_0x17c8e9[_0x39c3('0x3b')][_0x39c3('0x82')]},'attributes':['id'],'include':[{'model':db[_0x39c3('0x83')],'as':_0x39c3('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x39c3('0x29')](handleEntityNotFound(_0x1599a4,null))[_0x39c3('0x29')](function(_0x3a0547){var _0x19cd44=_[_0x39c3('0x31')](_0x3a0547,'id');var _0x10a8bb=[];var _0x3bf62d=[];var _0x28ee2a=squel[_0x39c3('0x84')]();_0x28ee2a[_0x39c3('0x85')](_0x39c3('0x86'))[_0x39c3('0x87')]('team_has_voice_queues','tq')['join'](_0x39c3('0x88'),'ut',_0x39c3('0x89'))[_0x39c3('0x47')](_0x39c3('0x8a'),_0x17c8e9[_0x39c3('0x4e')]['id']);for(var _0x17aea7=0x0;_0x17aea7<_0x3a0547[_0x39c3('0x42')];_0x17aea7+=0x1){let _0x54f7c1=_0x3a0547[_0x17aea7];for(var _0x15f30d=0x0;_0x15f30d<_0x54f7c1['Agents']['length'];_0x15f30d+=0x1){let _0xbc0e6c=_0x54f7c1[_0x39c3('0x6f')][_0x15f30d];var _0x120dd2=_0x28ee2a['clone']();_0x120dd2[_0x39c3('0x47')](_0x39c3('0x8b'),_0xbc0e6c['id']);_0x3bf62d['push'](db[_0x39c3('0x75')][_0x39c3('0x3b')](_0x120dd2[_0x39c3('0x8c')](),{'type':db[_0x39c3('0x75')][_0x39c3('0x8d')][_0x39c3('0x8e')]})[_0x39c3('0x29')](function(_0x144a96){if(_0x144a96[_0x39c3('0x42')]===0x1){return _0xbc0e6c['id'];}else{var _0x56af47=_[_0x39c3('0x8f')](_['map'](_0x144a96,_0x39c3('0x90')),function(_0x2d2809){return _['includes'](_0x19cd44,_0x2d2809);});if(_0x56af47){return _0xbc0e6c['id'];}}}));}}return BPromise['all'](_0x3bf62d)[_0x39c3('0x29')](function(_0x130171){_0x10a8bb=_(_0x10a8bb)[_0x39c3('0x91')](_0x130171)[_0x39c3('0x92')]()[_0x39c3('0x32')]();return db['VoiceQueue']['find']({'where':{'id':_0x17c8e9[_0x39c3('0x4e')]['id']}})['then'](function(_0x1ae32f){return db[_0x39c3('0x75')][_0x39c3('0x76')](function(_0x1773fd){return _0x1ae32f['removeTeams'](_0x17c8e9[_0x39c3('0x3b')]['ids'],{'transaction':_0x1773fd})[_0x39c3('0x29')](function(){if(!_[_0x39c3('0x93')](_0x10a8bb)){return _0x1ae32f[_0x39c3('0x94')](_0x10a8bb,{'transaction':_0x1773fd})[_0x39c3('0x29')](function(){return db[_0x39c3('0x95')][_0x39c3('0x2a')]({'where':{'VoiceQueueId':_0x17c8e9[_0x39c3('0x4e')]['id'],'UserId':_0x10a8bb},'transaction':_0x1773fd});});}})[_0x39c3('0x29')](function(){_0x10a8bb[_0x39c3('0x73')](function(_0x137170){socket[_0x39c3('0x80')](_0x39c3('0x96'),{'UserId':_0x137170,'VoiceQueueId':_0x1ae32f['id']});});});});});});})[_0x39c3('0x29')](respondWithStatusCode(_0x1599a4,null))['catch'](handleError(_0x1599a4,null));};exports['addAgents']=function(_0x1079fa,_0x28855c,_0x197cd9){var _0x31e0fa,_0x3c473d;return db[_0x39c3('0x39')][_0x39c3('0x55')]({'where':{'id':_0x1079fa[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x28855c,null))[_0x39c3('0x29')](function(_0x1e6c89){if(_0x1e6c89){_0x3c473d=_0x1e6c89;return _0x1e6c89[_0x39c3('0x97')](_0x1079fa[_0x39c3('0x51')][_0x39c3('0x82')],_[_0x39c3('0x5b')](_0x1079fa[_0x39c3('0x51')],[_0x39c3('0x82'),'id'])||{})['spread'](function(_0x21f86e){for(var _0x42d5cd=0x0;_0x42d5cd<_0x1079fa[_0x39c3('0x51')][_0x39c3('0x82')][_0x39c3('0x42')];_0x42d5cd+=0x1){socket[_0x39c3('0x80')]('userVoiceQueue:save',{'UserId':Number(_0x1079fa[_0x39c3('0x51')][_0x39c3('0x82')][_0x42d5cd]),'VoiceQueueId':Number(_0x1079fa[_0x39c3('0x4e')]['id'])});}return _0x21f86e;});}})[_0x39c3('0x29')](function(_0x9b4fbe){_0x31e0fa=_0x9b4fbe||[];if(_0x3c473d){return db[_0x39c3('0x83')][_0x39c3('0x64')]({'where':{'id':_0x1079fa['body'][_0x39c3('0x82')]},'attributes':['id',_0x39c3('0x34'),'online',_0x39c3('0x71'),_0x39c3('0x7e')],'raw':!![]});}})[_0x39c3('0x29')](function(_0x5c697b){if(!_['isEmpty'](_0x5c697b)){var _0x57d904=[];for(var _0x4a5faa=0x0;_0x4a5faa<_0x5c697b['length'];_0x4a5faa++){if(_0x5c697b[_0x4a5faa][_0x39c3('0x70')]){_0x57d904[_0x39c3('0x98')](db[_0x39c3('0x95')]['upsert']({'membername':_0x5c697b[_0x4a5faa][_0x39c3('0x34')],'UserId':_0x5c697b[_0x4a5faa]['id'],'queue_name':_0x3c473d[_0x39c3('0x34')],'VoiceQueueId':_0x3c473d['id'],'interface':_[_0x39c3('0x7d')](_0x5c697b[_0x4a5faa][_0x39c3('0x7e')])?util['format'](_0x39c3('0x99'),_0x5c697b[_0x4a5faa][_0x39c3('0x34')]):_0x5c697b[_0x4a5faa][_0x39c3('0x7e')],'paused':_0x5c697b[_0x4a5faa][_0x39c3('0x71')]||![],'penalty':_0x1079fa['body']['penalty']||0x0}));}}return BPromise[_0x39c3('0x9a')](_0x57d904);}})[_0x39c3('0x29')](function(){return _0x31e0fa;})[_0x39c3('0x29')](respondWithResult(_0x28855c,null))['catch'](handleError(_0x28855c,null));};exports['removeAgents']=function(_0x2f6552,_0x1fe605,_0x41a4f2){return db[_0x39c3('0x39')][_0x39c3('0x55')]({'where':{'id':_0x2f6552[_0x39c3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1fe605,null))['then'](function(_0x48e036){if(_0x48e036){return _0x48e036['removeAgents'](_0x2f6552[_0x39c3('0x3b')][_0x39c3('0x82')])[_0x39c3('0x29')](function(){if(_['isArray'](_0x2f6552['query']['ids'])){for(var _0x915091=0x0;_0x915091<_0x2f6552['query'][_0x39c3('0x82')]['length'];_0x915091+=0x1){socket[_0x39c3('0x80')](_0x39c3('0x96'),{'UserId':Number(_0x2f6552[_0x39c3('0x3b')][_0x39c3('0x82')][_0x915091]),'VoiceQueueId':Number(_0x2f6552[_0x39c3('0x4e')]['id'])});}}else{socket[_0x39c3('0x80')](_0x39c3('0x96'),{'UserId':Number(_0x2f6552[_0x39c3('0x3b')][_0x39c3('0x82')]),'VoiceQueueId':Number(_0x2f6552['params']['id'])});}});}})[_0x39c3('0x29')](function(_0x27c137){return db[_0x39c3('0x95')][_0x39c3('0x2a')]({'where':{'VoiceQueueId':_0x2f6552['params']['id'],'UserId':_0x2f6552['query'][_0x39c3('0x82')]}})[_0x39c3('0x29')](function(){return _0x27c137;});})[_0x39c3('0x29')](respondWithStatusCode(_0x1fe605,null))['catch'](handleError(_0x1fe605,null));};exports['getAgents']=function(_0x1856c5,_0x505c00,_0x300637){var _0x2100b6={};var _0x327801={};var _0x21abdc;var _0x4713f1;return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0x1856c5['params']['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x505c00,null))[_0x39c3('0x29')](function(_0x35978e){if(_0x35978e){_0x21abdc=_0x35978e;_0x327801['model']=_[_0x39c3('0x3c')](db[_0x39c3('0x83')]['rawAttributes']);_0x327801[_0x39c3('0x3b')]=_['keys'](_0x1856c5[_0x39c3('0x3b')]);_0x327801[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x327801[_0x39c3('0x3f')],_0x327801[_0x39c3('0x3b')]);_0x2100b6[_0x39c3('0x40')]=_['intersection'](_0x327801[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x1856c5[_0x39c3('0x3b')][_0x39c3('0x41')]));_0x2100b6[_0x39c3('0x40')]=_0x2100b6[_0x39c3('0x40')][_0x39c3('0x42')]?_0x2100b6[_0x39c3('0x40')]:_0x327801[_0x39c3('0x3f')];_0x2100b6[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0x1856c5[_0x39c3('0x3b')]['sort']);_0x2100b6[_0x39c3('0x47')]=qs[_0x39c3('0x3d')](_[_0x39c3('0x46')](_0x1856c5[_0x39c3('0x3b')],_0x327801['filters']));if(_0x1856c5[_0x39c3('0x3b')][_0x39c3('0x2f')]){_0x2100b6[_0x39c3('0x47')]=_[_0x39c3('0x48')](_0x2100b6[_0x39c3('0x47')],{'$or':_['map'](_0x2100b6['attributes'],function(_0x389148){var _0x22bdda={};_0x22bdda[_0x389148]={'$like':'%'+_0x1856c5[_0x39c3('0x3b')]['filter']+'%'};return _0x22bdda;})});}_0x2100b6=_[_0x39c3('0x48')]({},_0x2100b6,_0x1856c5[_0x39c3('0x5a')]);return _0x21abdc['getAgents'](_0x2100b6);}})[_0x39c3('0x29')](function(_0xd55dbd){if(_0xd55dbd){_0x4713f1=_0xd55dbd[_0x39c3('0x42')];if(!_0x1856c5[_0x39c3('0x3b')]['hasOwnProperty']('nolimit')){_0x2100b6[_0x39c3('0x21')]=qs[_0x39c3('0x21')](_0x1856c5[_0x39c3('0x3b')][_0x39c3('0x21')]);_0x2100b6['offset']=qs[_0x39c3('0x1f')](_0x1856c5[_0x39c3('0x3b')]['offset']);}return _0x21abdc[_0x39c3('0x9b')](_0x2100b6);}})['then'](function(_0x45f5c2){if(_0x45f5c2){return _0x45f5c2?{'count':_0x4713f1,'rows':_0x45f5c2}:null;}})[_0x39c3('0x29')](respondWithResult(_0x505c00,null))[_0x39c3('0x4d')](handleError(_0x505c00,null));};exports[_0x39c3('0x9c')]=function(_0x288f86,_0xc62901,_0x474c07){var _0x323f9a={};var _0xd56a67={};var _0x2fc4bf;var _0x3a51bd;return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0x288f86[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0xc62901,null))[_0x39c3('0x29')](function(_0x513f1a){if(_0x513f1a){_0x2fc4bf=_0x513f1a;_0xd56a67['model']=_[_0x39c3('0x3c')](db[_0x39c3('0x95')][_0x39c3('0x4f')]);_0xd56a67[_0x39c3('0x3b')]=_[_0x39c3('0x3c')](_0x288f86[_0x39c3('0x3b')]);_0xd56a67[_0x39c3('0x3d')]=_['intersection'](_0xd56a67[_0x39c3('0x3f')],_0xd56a67[_0x39c3('0x3b')]);_0x323f9a[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0xd56a67[_0x39c3('0x3f')],qs['fields'](_0x288f86[_0x39c3('0x3b')][_0x39c3('0x41')]));_0x323f9a[_0x39c3('0x40')]=_0x323f9a[_0x39c3('0x40')][_0x39c3('0x42')]?_0x323f9a['attributes']:_0xd56a67[_0x39c3('0x3f')];_0x323f9a[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0x288f86[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x323f9a[_0x39c3('0x47')]=qs[_0x39c3('0x3d')](_['pick'](_0x288f86[_0x39c3('0x3b')],_0xd56a67[_0x39c3('0x3d')]));if(_0x288f86[_0x39c3('0x3b')][_0x39c3('0x2f')]){_0x323f9a[_0x39c3('0x47')]=_[_0x39c3('0x48')](_0x323f9a[_0x39c3('0x47')],{'$or':_[_0x39c3('0x31')](_0x323f9a[_0x39c3('0x40')],function(_0x5e3c4d){var _0x440dad={};_0x440dad[_0x5e3c4d]={'$like':'%'+_0x288f86[_0x39c3('0x3b')]['filter']+'%'};return _0x440dad;})});}_0x323f9a=_['merge']({},_0x323f9a,_0x288f86['options']);return _0x2fc4bf[_0x39c3('0x9c')](_0x323f9a);}})[_0x39c3('0x29')](function(_0x26d436){if(_0x26d436){_0x3a51bd=_0x26d436[_0x39c3('0x42')];if(!_0x288f86[_0x39c3('0x3b')][_0x39c3('0x67')]('nolimit')){_0x323f9a[_0x39c3('0x21')]=qs[_0x39c3('0x21')](_0x288f86[_0x39c3('0x3b')]['limit']);_0x323f9a[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0x288f86[_0x39c3('0x3b')]['offset']);}return _0x2fc4bf[_0x39c3('0x9c')](_0x323f9a);}})['then'](function(_0x5b07d8){return _0x5b07d8?{'count':_0x3a51bd,'rows':_0x5b07d8}:null;})[_0x39c3('0x29')](respondWithResult(_0xc62901,null))['catch'](handleError(_0xc62901,null));};exports[_0x39c3('0x9d')]=function(_0x49a405,_0x5862e4,_0x1fe654){var _0x42cc51={};var _0x3d0267={};var _0x4d2c42;var _0x1d847c;return db['VoiceQueue'][_0x39c3('0x61')]({'where':{'id':_0x49a405['params']['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x5862e4,null))[_0x39c3('0x29')](function(_0x5a70d4){if(_0x5a70d4){_0x4d2c42=_0x5a70d4;_0x3d0267[_0x39c3('0x3f')]=_[_0x39c3('0x3c')](db[_0x39c3('0x9e')][_0x39c3('0x4f')]);_0x3d0267['query']=_[_0x39c3('0x3c')](_0x49a405[_0x39c3('0x3b')]);_0x3d0267[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x3d0267['model'],_0x3d0267['query']);_0x42cc51[_0x39c3('0x40')]=_[_0x39c3('0x3e')](_0x3d0267[_0x39c3('0x3f')],qs['fields'](_0x49a405['query'][_0x39c3('0x41')]));_0x42cc51[_0x39c3('0x40')]=_0x42cc51[_0x39c3('0x40')]['length']?_0x42cc51[_0x39c3('0x40')]:_0x3d0267[_0x39c3('0x3f')];_0x42cc51[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0x49a405[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x42cc51[_0x39c3('0x47')]=qs[_0x39c3('0x3d')](_[_0x39c3('0x46')](_0x49a405[_0x39c3('0x3b')],_0x3d0267[_0x39c3('0x3d')]));if(_0x49a405['query'][_0x39c3('0x2f')]){_0x42cc51[_0x39c3('0x47')]=_['merge'](_0x42cc51[_0x39c3('0x47')],{'$or':_[_0x39c3('0x31')](_0x42cc51['attributes'],function(_0x33b242){var _0x54f64b={};_0x54f64b[_0x33b242]={'$like':'%'+_0x49a405[_0x39c3('0x3b')][_0x39c3('0x2f')]+'%'};return _0x54f64b;})});}_0x42cc51=_[_0x39c3('0x48')]({},_0x42cc51,_0x49a405['options']);return _0x4d2c42[_0x39c3('0x9d')](_0x42cc51);}})[_0x39c3('0x29')](function(_0xcd332c){if(_0xcd332c){_0x1d847c=_0xcd332c[_0x39c3('0x42')];if(!_0x49a405['query'][_0x39c3('0x67')](_0x39c3('0x43'))){_0x42cc51['limit']=qs['limit'](_0x49a405[_0x39c3('0x3b')]['limit']);_0x42cc51[_0x39c3('0x1f')]=qs[_0x39c3('0x1f')](_0x49a405['query'][_0x39c3('0x1f')]);}return _0x4d2c42[_0x39c3('0x9d')](_0x42cc51);}})[_0x39c3('0x29')](function(_0x48bb23){if(_0x48bb23){return _0x48bb23?{'count':_0x1d847c,'rows':_0x48bb23}:null;}})[_0x39c3('0x29')](respondWithResult(_0x5862e4,null))[_0x39c3('0x4d')](handleError(_0x5862e4,null));};exports['addLists']=function(_0x235783,_0x432095,_0x55d580){var _0x591be2,_0x249189;return db[_0x39c3('0x39')][_0x39c3('0x55')]({'where':{'id':_0x235783['params']['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x432095,null))['then'](function(_0x432871){if(_0x432871){_0x249189=_0x432871;return _0x432871['addLists'](_0x235783[_0x39c3('0x51')][_0x39c3('0x82')],_[_0x39c3('0x5b')](_0x235783[_0x39c3('0x51')],[_0x39c3('0x82'),'id'])||{});}return null;})[_0x39c3('0x9f')](function(_0x32df3f){var _0x5b6651;_0x591be2=_0x32df3f||[];var _0x443287=[];if(_0x32df3f){for(var _0x2fe88f=0x0;_0x2fe88f<_0x32df3f[_0x39c3('0x42')];_0x2fe88f+=0x1){var _0x424514=_0x32df3f[_0x2fe88f][_0x39c3('0x2b')]({'plain':!![]});_0x249189[_0x39c3('0xa0')]=_0x235783[_0x39c3('0x51')][_0x39c3('0xa0')]?_0x235783[_0x39c3('0x51')]['dialCheckDuplicateType']:_0x249189[_0x39c3('0xa0')];switch(_0x249189['dialCheckDuplicateType']){case _0x39c3('0xa1'):_0x5b6651=squel[_0x39c3('0xa2')]()[_0x39c3('0xa3')]('cm_hopper')[_0x39c3('0xa4')]([_0x39c3('0xa5'),_0x39c3('0xa6'),_0x39c3('0xa7'),_0x39c3('0xa8'),'VoiceQueueId','createdAt','updatedAt'],squel[_0x39c3('0x84')]()[_0x39c3('0x85')](_0x39c3('0xa5'),_0x39c3('0xa5'))['field'](_0x39c3('0xa9'),_0x39c3('0xa6'))[_0x39c3('0x85')]('id',_0x39c3('0xa7'))[_0x39c3('0x85')](_0x424514[_0x39c3('0xaa')][_0x39c3('0x8c')](),_0x39c3('0xa8'))[_0x39c3('0x85')](_0x235783[_0x39c3('0x4e')]['id'][_0x39c3('0x8c')](),_0x39c3('0x63'))[_0x39c3('0x85')]('NOW()',_0x39c3('0x5c'))[_0x39c3('0x85')]('NOW()',_0x39c3('0x5d'))[_0x39c3('0x87')](_0x39c3('0xab'))[_0x39c3('0x47')](_0x39c3('0xac'))[_0x39c3('0x47')](_0x39c3('0xad'),_0x424514[_0x39c3('0xaa')][_0x39c3('0x8c')]())[_0x39c3('0x47')](_0x39c3('0xae'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x39c3('0x84')]()[_0x39c3('0x85')](_0x39c3('0xaf'))[_0x39c3('0x87')](_0x39c3('0xb0'))[_0x39c3('0x47')](_0x39c3('0x8a'),_0x235783[_0x39c3('0x4e')]['id'][_0x39c3('0x8c')]()))[_0x39c3('0x47')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x39c3('0x85')]('COALESCE(phone,\x27\x27)')[_0x39c3('0x87')]('cm_hopper')[_0x39c3('0x47')](_0x39c3('0x8a'),_0x235783['params']['id']['toString']())))['toString']();break;case _0x39c3('0xb1'):_0x5b6651=squel[_0x39c3('0xa2')]()[_0x39c3('0xa3')](_0x39c3('0xb2'))[_0x39c3('0xa4')]([_0x39c3('0xa5'),_0x39c3('0xa6'),_0x39c3('0xa7'),_0x39c3('0xa8'),_0x39c3('0x63'),_0x39c3('0x5c'),_0x39c3('0x5d')],squel[_0x39c3('0x84')]()['field'](_0x39c3('0xa5'),_0x39c3('0xa5'))['field'](_0x39c3('0xa9'),_0x39c3('0xa6'))[_0x39c3('0x85')]('id','ContactId')[_0x39c3('0x85')](_0x424514[_0x39c3('0xaa')][_0x39c3('0x8c')](),'ListId')[_0x39c3('0x85')](_0x235783[_0x39c3('0x4e')]['id'][_0x39c3('0x8c')](),'VoiceQueueId')[_0x39c3('0x85')](_0x39c3('0xa9'),_0x39c3('0x5c'))[_0x39c3('0x85')]('NOW()',_0x39c3('0x5d'))[_0x39c3('0x87')](_0x39c3('0xab'))[_0x39c3('0x47')](_0x39c3('0xac'))[_0x39c3('0x47')](_0x39c3('0xad'),_0x424514[_0x39c3('0xaa')]['toString']())[_0x39c3('0x47')](_0x39c3('0xae'))[_0x39c3('0x47')](_0x39c3('0xb3'),squel[_0x39c3('0x84')]()[_0x39c3('0x85')](_0x39c3('0xb4'))[_0x39c3('0x87')](_0x39c3('0xb2'))[_0x39c3('0x47')]('VoiceQueueId\x20=\x20?',_0x235783['params']['id'][_0x39c3('0x8c')]())))['toString']();break;default:_0x5b6651=squel[_0x39c3('0xa2')]()['into'](_0x39c3('0xb2'))[_0x39c3('0xa4')]([_0x39c3('0xa5'),_0x39c3('0xa6'),'ContactId',_0x39c3('0xa8'),_0x39c3('0x63'),'createdAt',_0x39c3('0x5d')],squel['select']()['field'](_0x39c3('0xa5'),_0x39c3('0xa5'))[_0x39c3('0x85')]('NOW()',_0x39c3('0xa6'))[_0x39c3('0x85')]('id',_0x39c3('0xa7'))[_0x39c3('0x85')](_0x424514[_0x39c3('0xaa')]['toString'](),_0x39c3('0xa8'))[_0x39c3('0x85')](_0x235783['params']['id'][_0x39c3('0x8c')](),_0x39c3('0x63'))[_0x39c3('0x85')]('NOW()',_0x39c3('0x5c'))[_0x39c3('0x85')](_0x39c3('0xa9'),'updatedAt')[_0x39c3('0x87')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x39c3('0x47')](_0x39c3('0xad'),_0x424514['CmListId'][_0x39c3('0x8c')]())[_0x39c3('0x47')](_0x39c3('0xae')))['toString']();}_0x443287[_0x39c3('0x98')](db[_0x39c3('0x75')][_0x39c3('0x3b')](_0x5b6651));}return BPromise[_0x39c3('0x9a')](_0x443287);}})[_0x39c3('0x29')](function(){return _0x591be2;})[_0x39c3('0x29')](respondWithResult(_0x432095,null))[_0x39c3('0x4d')](handleError(_0x432095,null));};exports[_0x39c3('0xb5')]=function(_0x35d847,_0x489ffb,_0x26f14f){return db['VoiceQueue'][_0x39c3('0x55')]({'where':{'id':_0x35d847[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x489ffb,null))[_0x39c3('0x29')](function(_0x4396f7){if(_0x4396f7){return _0x4396f7[_0x39c3('0xb5')](_0x35d847[_0x39c3('0x3b')][_0x39c3('0x82')]);}})['then'](function(_0x5b66d9){if(_0x5b66d9){return db[_0x39c3('0x62')][_0x39c3('0x2a')]({'where':{'ListId':_0x35d847[_0x39c3('0x3b')][_0x39c3('0x82')],'VoiceQueueId':_0x35d847['params']['id']}})[_0x39c3('0x29')](function(){return _0x5b66d9;});}})[_0x39c3('0x29')](respondWithStatusCode(_0x489ffb,null))[_0x39c3('0x4d')](handleError(_0x489ffb,null));};exports[_0x39c3('0xb6')]=function(_0x26824f,_0x1a63b5,_0x31a3fb){var _0x295708={};var _0x1a43b4={};var _0x2a9fa3;var _0x2dbfdc;return db[_0x39c3('0x39')][_0x39c3('0x61')]({'where':{'id':_0x26824f[_0x39c3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1a63b5,null))[_0x39c3('0x29')](function(_0x45a934){if(_0x45a934){_0x2a9fa3=_0x45a934;_0x1a43b4[_0x39c3('0x3f')]=_[_0x39c3('0x3c')](db[_0x39c3('0x9e')][_0x39c3('0x4f')]);_0x1a43b4[_0x39c3('0x3b')]=_['keys'](_0x26824f[_0x39c3('0x3b')]);_0x1a43b4[_0x39c3('0x3d')]=_[_0x39c3('0x3e')](_0x1a43b4['model'],_0x1a43b4[_0x39c3('0x3b')]);_0x295708['attributes']=_[_0x39c3('0x3e')](_0x1a43b4[_0x39c3('0x3f')],qs[_0x39c3('0x41')](_0x26824f['query'][_0x39c3('0x41')]));_0x295708[_0x39c3('0x40')]=_0x295708[_0x39c3('0x40')][_0x39c3('0x42')]?_0x295708[_0x39c3('0x40')]:_0x1a43b4['model'];_0x295708[_0x39c3('0x44')]=qs[_0x39c3('0x45')](_0x26824f[_0x39c3('0x3b')][_0x39c3('0x45')]);_0x295708[_0x39c3('0x47')]=qs['filters'](_[_0x39c3('0x46')](_0x26824f[_0x39c3('0x3b')],_0x1a43b4[_0x39c3('0x3d')]));if(_0x26824f[_0x39c3('0x3b')][_0x39c3('0x2f')]){_0x295708['where']=_[_0x39c3('0x48')](_0x295708['where'],{'$or':_[_0x39c3('0x31')](_0x295708[_0x39c3('0x40')],function(_0x266152){var _0x4a9fb7={};_0x4a9fb7[_0x266152]={'$like':'%'+_0x26824f[_0x39c3('0x3b')]['filter']+'%'};return _0x4a9fb7;})});}_0x295708=_['merge']({},_0x295708,_0x26824f[_0x39c3('0x5a')]);return _0x2a9fa3['getBlackLists'](_0x295708);}})[_0x39c3('0x29')](function(_0x47ddec){if(_0x47ddec){_0x2dbfdc=_0x47ddec[_0x39c3('0x42')];if(!_0x26824f[_0x39c3('0x3b')]['hasOwnProperty']('nolimit')){_0x295708[_0x39c3('0x21')]=qs[_0x39c3('0x21')](_0x26824f[_0x39c3('0x3b')][_0x39c3('0x21')]);_0x295708['offset']=qs[_0x39c3('0x1f')](_0x26824f['query'][_0x39c3('0x1f')]);}return _0x2a9fa3[_0x39c3('0xb6')](_0x295708);}})[_0x39c3('0x29')](function(_0x48fbf2){if(_0x48fbf2){return _0x48fbf2?{'count':_0x2dbfdc,'rows':_0x48fbf2}:null;}})[_0x39c3('0x29')](respondWithResult(_0x1a63b5,null))[_0x39c3('0x4d')](handleError(_0x1a63b5,null));};exports[_0x39c3('0xb7')]=function(_0x4dd0c8,_0x85054,_0x54e004){var _0x33470a,_0x3a489e;return db[_0x39c3('0x39')]['find']({'where':{'id':_0x4dd0c8['params']['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x85054,null))['then'](function(_0x4c1bc0){if(_0x4c1bc0){_0x3a489e=_0x4c1bc0;return _0x4c1bc0[_0x39c3('0xb7')](_0x4dd0c8[_0x39c3('0x51')][_0x39c3('0x82')],_[_0x39c3('0x5b')](_0x4dd0c8['body'],['ids','id'])||{});}return null;})[_0x39c3('0x9f')](function(_0x235cc7){var _0xb36082;_0x33470a=_0x235cc7||[];var _0x269bea=[];if(_0x235cc7){for(var _0x25b2f9=0x0;_0x25b2f9<_0x235cc7[_0x39c3('0x42')];_0x25b2f9+=0x1){var _0x28047f=_0x235cc7[_0x25b2f9][_0x39c3('0x2b')]({'plain':!![]});_0xb36082=squel[_0x39c3('0xa2')]()[_0x39c3('0xa3')](_0x39c3('0xb8'))[_0x39c3('0xa4')]([_0x39c3('0xa5'),_0x39c3('0xa7'),_0x39c3('0xa8'),_0x39c3('0x63'),'createdAt','updatedAt'],squel[_0x39c3('0x84')]()['field']('phone','phone')[_0x39c3('0x85')]('id',_0x39c3('0xa7'))[_0x39c3('0x85')](_0x28047f[_0x39c3('0xaa')][_0x39c3('0x8c')](),'ListId')[_0x39c3('0x85')](_0x4dd0c8[_0x39c3('0x4e')]['id']['toString'](),_0x39c3('0x63'))['field'](_0x39c3('0xa9'),_0x39c3('0x5c'))[_0x39c3('0x85')](_0x39c3('0xa9'),_0x39c3('0x5d'))[_0x39c3('0x87')]('cm_contacts')[_0x39c3('0x47')](_0x39c3('0xac'))[_0x39c3('0x47')](_0x39c3('0xad'),_0x28047f[_0x39c3('0xaa')][_0x39c3('0x8c')]())['where'](_0x39c3('0xae')))[_0x39c3('0x8c')]();_0x269bea['push'](db[_0x39c3('0x75')][_0x39c3('0x3b')](_0xb36082));}return BPromise['all'](_0x269bea);}})['then'](function(){return _0x33470a;})[_0x39c3('0x29')](respondWithResult(_0x85054,null))[_0x39c3('0x4d')](handleError(_0x85054,null));};exports['removeBlackLists']=function(_0x3008aa,_0x2510d9,_0x44a373){return db['VoiceQueue'][_0x39c3('0x55')]({'where':{'id':_0x3008aa[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](handleEntityNotFound(_0x2510d9,null))[_0x39c3('0x29')](function(_0x3aaa95){if(_0x3aaa95){return _0x3aaa95[_0x39c3('0xb9')](_0x3008aa[_0x39c3('0x3b')][_0x39c3('0x82')]);}})[_0x39c3('0x29')](function(_0x45a14f){if(_0x45a14f){return db[_0x39c3('0x6b')]['destroy']({'where':{'ListId':_0x3008aa[_0x39c3('0x3b')][_0x39c3('0x82')],'VoiceQueueId':_0x3008aa[_0x39c3('0x4e')]['id']}})[_0x39c3('0x29')](function(){return _0x45a14f;});}})[_0x39c3('0x29')](respondWithStatusCode(_0x2510d9,null))[_0x39c3('0x4d')](handleError(_0x2510d9,null));};
\ No newline at end of file
index 68e9243..855da5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e85=['VoiceQueue','setMaxListeners','emit','hasOwnProperty','hook','exports','events'];(function(_0x348b31,_0x5ef4df){var _0x227148=function(_0x5f44f3){while(--_0x5f44f3){_0x348b31['push'](_0x348b31['shift']());}};_0x227148(++_0x5ef4df);}(_0x9e85,0x18e));var _0x59e8=function(_0x2d808d,_0x355367){_0x2d808d=_0x2d808d-0x0;var _0x34066f=_0x9e85[_0x2d808d];return _0x34066f;};'use strict';var EventEmitter=require(_0x59e8('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x59e8('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x59e8('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x21dc6b){return function(_0x8093f,_0x391eca,_0x3b3d55){VoiceQueueEvents[_0x59e8('0x3')](_0x21dc6b+':'+_0x8093f['id'],_0x8093f);VoiceQueueEvents[_0x59e8('0x3')](_0x21dc6b,_0x8093f);_0x3b3d55(null);};}for(var e in events){if(events[_0x59e8('0x4')](e)){var event=events[e];VoiceQueue[_0x59e8('0x5')](e,emitEvent(event));}}module[_0x59e8('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x7e8e=['hasOwnProperty','exports','events','../../mysqldb','VoiceQueue','update','remove','emit'];(function(_0x46f3e9,_0x55631d){var _0x316982=function(_0x319c16){while(--_0x319c16){_0x46f3e9['push'](_0x46f3e9['shift']());}};_0x316982(++_0x55631d);}(_0x7e8e,0x82));var _0xe7e8=function(_0x6ab30c,_0x2c713b){_0x6ab30c=_0x6ab30c-0x0;var _0x36e953=_0x7e8e[_0x6ab30c];return _0x36e953;};'use strict';var EventEmitter=require(_0xe7e8('0x0'));var VoiceQueue=require(_0xe7e8('0x1'))['db'][_0xe7e8('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe7e8('0x3'),'afterDestroy':_0xe7e8('0x4')};function emitEvent(_0x166102){return function(_0x44c326,_0x2d2f52,_0x42b2e7){VoiceQueueEvents[_0xe7e8('0x5')](_0x166102+':'+_0x44c326['id'],_0x44c326);VoiceQueueEvents[_0xe7e8('0x5')](_0x166102,_0x44c326);_0x42b2e7(null);};}for(var e in events){if(events[_0xe7e8('0x6')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0xe7e8('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 52c6fda..855fefa 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(_0x128239,_0x30a688){var _0x5543df=function(_0x251c03){while(--_0x251c03){_0x128239['push'](_0x128239['shift']());}};_0x5543df(++_0x30a688);}(_0x3e74,0x175));var _0x43e7=function(_0x9fc2a5,_0x253698){_0x9fc2a5=_0x9fc2a5-0x0;var _0x28f852=_0x3e74[_0x9fc2a5];return _0x28f852;};'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 _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x44ea1b,_0x36bbd3){var _0x239690=function(_0x3ec34b){while(--_0x3ec34b){_0x44ea1b['push'](_0x44ea1b['shift']());}};_0x239690(++_0x36bbd3);}(_0x008c,0x188));var _0xc008=function(_0x198add,_0x239d3c){_0x198add=_0x198add-0x0;var _0x35bfaa=_0x008c[_0x198add];return _0x35bfaa;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5b75d8..b1f6568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6423=['attributes','limit','include','model','map','stringify','ShowVoiceQueue','find','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','options','raw','where'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x6423,0x1d7));var _0x3642=function(_0x350032,_0x379799){_0x350032=_0x350032-0x0;var _0x46505e=_0x6423[_0x350032];return _0x46505e;};'use strict';var _=require(_0x3642('0x0'));var util=require('util');var moment=require(_0x3642('0x1'));var BPromise=require(_0x3642('0x2'));var rs=require(_0x3642('0x3'));var fs=require('fs');var Redis=require(_0x3642('0x4'));var db=require(_0x3642('0x5'))['db'];var utils=require(_0x3642('0x6'));var logger=require(_0x3642('0x7'))(_0x3642('0x8'));var config=require(_0x3642('0x9'));var jayson=require(_0x3642('0xa'));var client=jayson['client'][_0x3642('0xb')]({'port':0x232a});config[_0x3642('0xc')]=_[_0x3642('0xd')](config[_0x3642('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x3642('0xe'))(new Redis(config[_0x3642('0xc')]));require(_0x3642('0xf'))[_0x3642('0x10')](socket);function respondWithRpcPromise(_0xe83ed6,_0x1a3fae,_0x2a8b1d){return new BPromise(function(_0x380481,_0x2c2577){return client[_0x3642('0x11')](_0xe83ed6,_0x2a8b1d)[_0x3642('0x12')](function(_0x13b3df){logger[_0x3642('0x13')](_0x3642('0x14'),_0x1a3fae,_0x3642('0x15'));logger['debug'](_0x3642('0x16'),_0x1a3fae,'request\x20sent',JSON['stringify'](_0x13b3df));if(_0x13b3df[_0x3642('0x17')]){if(_0x13b3df[_0x3642('0x17')][_0x3642('0x18')]===0x1f4){logger[_0x3642('0x17')](_0x3642('0x14'),_0x1a3fae,_0x13b3df['error'][_0x3642('0x19')]);return _0x2c2577(_0x13b3df['error'][_0x3642('0x19')]);}logger[_0x3642('0x17')](_0x3642('0x14'),_0x1a3fae,_0x13b3df[_0x3642('0x17')][_0x3642('0x19')]);return _0x380481(_0x13b3df['error'][_0x3642('0x19')]);}else{logger[_0x3642('0x13')](_0x3642('0x14'),_0x1a3fae,_0x3642('0x15'));_0x380481(_0x13b3df[_0x3642('0x1a')][_0x3642('0x19')]);}})[_0x3642('0x1b')](function(_0x194217){logger[_0x3642('0x17')]('VoiceQueue,\x20%s,\x20%s',_0x1a3fae,_0x194217);_0x2c2577(_0x194217);});});}exports[_0x3642('0x1c')]=function(_0x5e9c65){var _0x4cba05=this;return new Promise(function(_0xa68703,_0x3584fd){return db[_0x3642('0x1d')]['findAll']({'raw':_0x5e9c65[_0x3642('0x1e')]?_0x5e9c65[_0x3642('0x1e')][_0x3642('0x1f')]===undefined?!![]:![]:!![],'where':_0x5e9c65[_0x3642('0x1e')]?_0x5e9c65['options'][_0x3642('0x20')]||null:null,'attributes':_0x5e9c65['options']?_0x5e9c65[_0x3642('0x1e')][_0x3642('0x21')]||null:null,'limit':_0x5e9c65[_0x3642('0x1e')]?_0x5e9c65[_0x3642('0x1e')][_0x3642('0x22')]||null:null,'include':_0x5e9c65['options']?_0x5e9c65['options']['include']?_['map'](_0x5e9c65[_0x3642('0x1e')][_0x3642('0x23')],function(_0x342f39){return{'model':db[_0x342f39[_0x3642('0x24')]],'as':_0x342f39['as'],'attributes':_0x342f39[_0x3642('0x21')],'include':_0x342f39[_0x3642('0x23')]?_[_0x3642('0x25')](_0x342f39[_0x3642('0x23')],function(_0x1f09b4){return{'model':db[_0x1f09b4[_0x3642('0x24')]],'as':_0x1f09b4['as'],'attributes':_0x1f09b4[_0x3642('0x21')],'include':_0x1f09b4[_0x3642('0x23')]?_[_0x3642('0x25')](_0x1f09b4[_0x3642('0x23')],function(_0x510145){return{'model':db[_0x510145[_0x3642('0x24')]],'as':_0x510145['as'],'attributes':_0x510145[_0x3642('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b63a2){logger[_0x3642('0x13')](_0x3642('0x1c'),_0x5e9c65);logger['debug'](_0x3642('0x1c'),_0x5e9c65,JSON[_0x3642('0x26')](_0x4b63a2));_0xa68703(_0x4b63a2);})[_0x3642('0x1b')](function(_0x109068){logger[_0x3642('0x17')]('GetVoiceQueue',_0x109068[_0x3642('0x19')],_0x5e9c65);_0x3584fd(_0x4cba05[_0x3642('0x17')](0x1f4,_0x109068[_0x3642('0x19')]));});});};exports[_0x3642('0x27')]=function(_0x31920f){var _0x5cbe3f=this;return new Promise(function(_0x1665ac,_0x3d67d3){return db['VoiceQueue'][_0x3642('0x28')]({'raw':_0x31920f['options']?_0x31920f[_0x3642('0x1e')][_0x3642('0x1f')]===undefined?!![]:![]:!![],'where':_0x31920f[_0x3642('0x1e')]?_0x31920f[_0x3642('0x1e')][_0x3642('0x20')]||null:null,'attributes':_0x31920f['options']?_0x31920f[_0x3642('0x1e')][_0x3642('0x21')]||null:null,'include':_0x31920f[_0x3642('0x1e')]?_0x31920f['options']['include']?_[_0x3642('0x25')](_0x31920f[_0x3642('0x1e')][_0x3642('0x23')],function(_0x1e50af){return{'model':db[_0x1e50af[_0x3642('0x24')]],'as':_0x1e50af['as'],'attributes':_0x1e50af[_0x3642('0x21')],'include':_0x1e50af[_0x3642('0x23')]?_[_0x3642('0x25')](_0x1e50af[_0x3642('0x23')],function(_0x21983f){return{'model':db[_0x21983f[_0x3642('0x24')]],'as':_0x21983f['as'],'attributes':_0x21983f[_0x3642('0x21')],'include':_0x21983f[_0x3642('0x23')]?_['map'](_0x21983f[_0x3642('0x23')],function(_0x2f5366){return{'model':db[_0x2f5366[_0x3642('0x24')]],'as':_0x2f5366['as'],'attributes':_0x2f5366['attributes']};}):[]};}):[]};}):[]:[]})[_0x3642('0x12')](function(_0x3d3ac7){logger[_0x3642('0x13')](_0x3642('0x27'),_0x31920f);logger[_0x3642('0x29')](_0x3642('0x27'),_0x31920f,JSON[_0x3642('0x26')](_0x3d3ac7));_0x1665ac(_0x3d3ac7);})[_0x3642('0x1b')](function(_0x4094f6){logger[_0x3642('0x17')](_0x3642('0x27'),_0x4094f6[_0x3642('0x19')],_0x31920f);_0x3d67d3(_0x5cbe3f['error'](0x1f4,_0x4094f6[_0x3642('0x19')]));});});};
\ No newline at end of file
+var _0xb56a=['error','code','message','info','result','VoiceQueue','options','raw','where','attributes','limit','include','map','model','GetVoiceQueue','debug','catch','ShowVoiceQueue','find','then','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1953b6,_0x1db29b){var _0x16e9a4=function(_0xb00121){while(--_0xb00121){_0x1953b6['push'](_0x1953b6['shift']());}};_0x16e9a4(++_0x1db29b);}(_0xb56a,0xe6));var _0xab56=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0xb56a[_0x3e44fa];return _0x2a0aba;};'use strict';var _=require(_0xab56('0x0'));var util=require(_0xab56('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xab56('0x2'));var fs=require('fs');var Redis=require(_0xab56('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xab56('0x4'));var logger=require(_0xab56('0x5'))(_0xab56('0x6'));var config=require(_0xab56('0x7'));var jayson=require(_0xab56('0x8'));var client=jayson[_0xab56('0x9')][_0xab56('0xa')]({'port':0x232a});config[_0xab56('0xb')]=_[_0xab56('0xc')](config[_0xab56('0xb')],{'host':_0xab56('0xd'),'port':0x18eb});var socket=require(_0xab56('0xe'))(new Redis(config[_0xab56('0xb')]));require(_0xab56('0xf'))[_0xab56('0x10')](socket);function respondWithRpcPromise(_0x8f1a5,_0x41696c,_0x3d1436){return new BPromise(function(_0x526e7f,_0x5b4a1e){return client[_0xab56('0x11')](_0x8f1a5,_0x3d1436)['then'](function(_0x15695a){logger['info'](_0xab56('0x12'),_0x41696c,_0xab56('0x13'));logger['debug'](_0xab56('0x14'),_0x41696c,_0xab56('0x13'),JSON[_0xab56('0x15')](_0x15695a));if(_0x15695a['error']){if(_0x15695a[_0xab56('0x16')][_0xab56('0x17')]===0x1f4){logger['error'](_0xab56('0x12'),_0x41696c,_0x15695a[_0xab56('0x16')][_0xab56('0x18')]);return _0x5b4a1e(_0x15695a[_0xab56('0x16')][_0xab56('0x18')]);}logger[_0xab56('0x16')](_0xab56('0x12'),_0x41696c,_0x15695a[_0xab56('0x16')][_0xab56('0x18')]);return _0x526e7f(_0x15695a[_0xab56('0x16')][_0xab56('0x18')]);}else{logger[_0xab56('0x19')](_0xab56('0x12'),_0x41696c,_0xab56('0x13'));_0x526e7f(_0x15695a[_0xab56('0x1a')][_0xab56('0x18')]);}})['catch'](function(_0x243cb4){logger[_0xab56('0x16')](_0xab56('0x12'),_0x41696c,_0x243cb4);_0x5b4a1e(_0x243cb4);});});}exports['GetVoiceQueue']=function(_0x1dcd84){var _0xeefc49=this;return new Promise(function(_0x4baa0e,_0x1df824){return db[_0xab56('0x1b')]['findAll']({'raw':_0x1dcd84[_0xab56('0x1c')]?_0x1dcd84[_0xab56('0x1c')][_0xab56('0x1d')]===undefined?!![]:![]:!![],'where':_0x1dcd84['options']?_0x1dcd84[_0xab56('0x1c')][_0xab56('0x1e')]||null:null,'attributes':_0x1dcd84[_0xab56('0x1c')]?_0x1dcd84[_0xab56('0x1c')][_0xab56('0x1f')]||null:null,'limit':_0x1dcd84[_0xab56('0x1c')]?_0x1dcd84[_0xab56('0x1c')][_0xab56('0x20')]||null:null,'include':_0x1dcd84[_0xab56('0x1c')]?_0x1dcd84[_0xab56('0x1c')][_0xab56('0x21')]?_[_0xab56('0x22')](_0x1dcd84[_0xab56('0x1c')][_0xab56('0x21')],function(_0x23f7f5){return{'model':db[_0x23f7f5[_0xab56('0x23')]],'as':_0x23f7f5['as'],'attributes':_0x23f7f5[_0xab56('0x1f')],'include':_0x23f7f5[_0xab56('0x21')]?_[_0xab56('0x22')](_0x23f7f5['include'],function(_0xc71ed7){return{'model':db[_0xc71ed7[_0xab56('0x23')]],'as':_0xc71ed7['as'],'attributes':_0xc71ed7[_0xab56('0x1f')],'include':_0xc71ed7[_0xab56('0x21')]?_['map'](_0xc71ed7[_0xab56('0x21')],function(_0x3e69d8){return{'model':db[_0x3e69d8[_0xab56('0x23')]],'as':_0x3e69d8['as'],'attributes':_0x3e69d8['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3f6ca9){logger[_0xab56('0x19')](_0xab56('0x24'),_0x1dcd84);logger[_0xab56('0x25')](_0xab56('0x24'),_0x1dcd84,JSON[_0xab56('0x15')](_0x3f6ca9));_0x4baa0e(_0x3f6ca9);})[_0xab56('0x26')](function(_0x943d7c){logger['error'](_0xab56('0x24'),_0x943d7c[_0xab56('0x18')],_0x1dcd84);_0x1df824(_0xeefc49['error'](0x1f4,_0x943d7c['message']));});});};exports[_0xab56('0x27')]=function(_0x317315){var _0x7dd6ca=this;return new Promise(function(_0x265008,_0x5aa17e){return db[_0xab56('0x1b')][_0xab56('0x28')]({'raw':_0x317315['options']?_0x317315[_0xab56('0x1c')][_0xab56('0x1d')]===undefined?!![]:![]:!![],'where':_0x317315[_0xab56('0x1c')]?_0x317315['options'][_0xab56('0x1e')]||null:null,'attributes':_0x317315[_0xab56('0x1c')]?_0x317315['options']['attributes']||null:null,'include':_0x317315[_0xab56('0x1c')]?_0x317315[_0xab56('0x1c')][_0xab56('0x21')]?_[_0xab56('0x22')](_0x317315[_0xab56('0x1c')][_0xab56('0x21')],function(_0x5b7f9e){return{'model':db[_0x5b7f9e[_0xab56('0x23')]],'as':_0x5b7f9e['as'],'attributes':_0x5b7f9e[_0xab56('0x1f')],'include':_0x5b7f9e['include']?_['map'](_0x5b7f9e[_0xab56('0x21')],function(_0x1c87ae){return{'model':db[_0x1c87ae[_0xab56('0x23')]],'as':_0x1c87ae['as'],'attributes':_0x1c87ae[_0xab56('0x1f')],'include':_0x1c87ae['include']?_[_0xab56('0x22')](_0x1c87ae[_0xab56('0x21')],function(_0x3c671e){return{'model':db[_0x3c671e[_0xab56('0x23')]],'as':_0x3c671e['as'],'attributes':_0x3c671e[_0xab56('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xab56('0x29')](function(_0x4b5b59){logger[_0xab56('0x19')]('ShowVoiceQueue',_0x317315);logger[_0xab56('0x25')](_0xab56('0x27'),_0x317315,JSON[_0xab56('0x15')](_0x4b5b59));_0x265008(_0x4b5b59);})[_0xab56('0x26')](function(_0x5dbb87){logger[_0xab56('0x16')](_0xab56('0x27'),_0x5dbb87[_0xab56('0x18')],_0x317315);_0x5aa17e(_0x7dd6ca[_0xab56('0x16')](0x1f4,_0x5dbb87[_0xab56('0x18')]));});});};
\ No newline at end of file
index 95a4d2b..7e29e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02a=['length','./voiceQueue.events','save','remove','emit','register'];(function(_0x5d70fb,_0x4e1e99){var _0x36f5de=function(_0x332d58){while(--_0x332d58){_0x5d70fb['push'](_0x5d70fb['shift']());}};_0x36f5de(++_0x4e1e99);}(_0xb02a,0x19f));var _0xab02=function(_0x1fb605,_0x5acc80){_0x1fb605=_0x1fb605-0x0;var _0x2fe580=_0xb02a[_0x1fb605];return _0x2fe580;};'use strict';var VoiceQueueEvents=require(_0xab02('0x0'));var events=[_0xab02('0x1'),_0xab02('0x2'),'update'];function createListener(_0x1a5259,_0x2442ec){return function(_0x124b63){_0x2442ec[_0xab02('0x3')](_0x1a5259,_0x124b63);};}function removeListener(_0x4e7e01,_0x438e0b){return function(){VoiceQueueEvents['removeListener'](_0x4e7e01,_0x438e0b);};}exports[_0xab02('0x4')]=function(_0x4c7050){for(var _0x9b1985=0x0,_0x4fad3c=events[_0xab02('0x5')];_0x9b1985<_0x4fad3c;_0x9b1985++){var _0x51e7df=events[_0x9b1985];var _0x4ae43c=createListener('voiceQueue:'+_0x51e7df,_0x4c7050);VoiceQueueEvents['on'](_0x51e7df,_0x4ae43c);}};
\ No newline at end of file
+var _0x100f=['length','voiceQueue:','./voiceQueue.events','remove','update','emit'];(function(_0x9b243f,_0x3f5ece){var _0x2a3d3b=function(_0x5aac39){while(--_0x5aac39){_0x9b243f['push'](_0x9b243f['shift']());}};_0x2a3d3b(++_0x3f5ece);}(_0x100f,0x1c4));var _0xf100=function(_0xb82838,_0x4112c0){_0xb82838=_0xb82838-0x0;var _0x131252=_0x100f[_0xb82838];return _0x131252;};'use strict';var VoiceQueueEvents=require(_0xf100('0x0'));var events=['save',_0xf100('0x1'),_0xf100('0x2')];function createListener(_0x516dbe,_0x4ba912){return function(_0x2a5978){_0x4ba912[_0xf100('0x3')](_0x516dbe,_0x2a5978);};}function removeListener(_0x1a27ee,_0x16b5d4){return function(){VoiceQueueEvents['removeListener'](_0x1a27ee,_0x16b5d4);};}exports['register']=function(_0x41f2a4){for(var _0x1cf5dd=0x0,_0x2a8646=events[_0xf100('0x4')];_0x1cf5dd<_0x2a8646;_0x1cf5dd++){var _0x10a667=events[_0x1cf5dd];var _0xea9c15=createListener(_0xf100('0x5')+_0x10a667,_0x41f2a4);VoiceQueueEvents['on'](_0x10a667,_0xea9c15);}};
\ No newline at end of file
index 28cd1c1..a8cf9ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d50=['isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get'];(function(_0x3f2ff0,_0x3af4fa){var _0x511a25=function(_0x2c0ca4){while(--_0x2c0ca4){_0x3f2ff0['push'](_0x3f2ff0['shift']());}};_0x511a25(++_0x3af4fa);}(_0x0d50,0xce));var _0x00d5=function(_0x37c054,_0x1cf983){_0x37c054=_0x37c054-0x0;var _0x20e5ef=_0x0d50[_0x37c054];return _0x20e5ef;};'use strict';var multer=require(_0x00d5('0x0'));var util=require(_0x00d5('0x1'));var path=require(_0x00d5('0x2'));var timeout=require('connect-timeout');var express=require(_0x00d5('0x3'));var router=express[_0x00d5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x00d5('0x5'));var interaction=require(_0x00d5('0x6'));var config=require(_0x00d5('0x7'));var controller=require(_0x00d5('0x8'));router[_0x00d5('0x9')]('/',auth[_0x00d5('0xa')](),controller[_0x00d5('0xb')]);router['get'](_0x00d5('0xc'),auth[_0x00d5('0xa')](),controller[_0x00d5('0xd')]);router['get'](_0x00d5('0xe'),auth[_0x00d5('0xa')](),controller[_0x00d5('0xf')]);router[_0x00d5('0x9')](_0x00d5('0x10'),auth[_0x00d5('0xa')](),controller[_0x00d5('0x11')]);router[_0x00d5('0x12')]('/',auth[_0x00d5('0xa')](),controller['create']);router[_0x00d5('0x13')]('/:id',auth[_0x00d5('0xa')](),controller[_0x00d5('0x14')]);router[_0x00d5('0x15')](_0x00d5('0x10'),auth[_0x00d5('0xa')](),controller[_0x00d5('0x16')]);module[_0x00d5('0x17')]=router;
\ No newline at end of file
+var _0x4873=['/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/index','getVoiceQueuesReport'];(function(_0x4d1d2c,_0x27f248){var _0x45ee68=function(_0xbd2e35){while(--_0xbd2e35){_0x4d1d2c['push'](_0x4d1d2c['shift']());}};_0x45ee68(++_0x27f248);}(_0x4873,0x85));var _0x3487=function(_0x1ecc50,_0x4696fe){_0x1ecc50=_0x1ecc50-0x0;var _0x1e07cb=_0x4873[_0x1ecc50];return _0x1e07cb;};'use strict';var multer=require(_0x3487('0x0'));var util=require(_0x3487('0x1'));var path=require(_0x3487('0x2'));var timeout=require(_0x3487('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3487('0x4'));var auth=require(_0x3487('0x5'));var interaction=require(_0x3487('0x6'));var config=require(_0x3487('0x7'));var controller=require('./voiceQueueReport.controller');router[_0x3487('0x8')]('/',auth[_0x3487('0x9')](),controller['index']);router[_0x3487('0x8')](_0x3487('0xa'),auth[_0x3487('0x9')](),controller[_0x3487('0xb')]);router['get'](_0x3487('0xc'),auth['isAuthenticated'](),controller[_0x3487('0xd')]);router['get'](_0x3487('0xe'),auth[_0x3487('0x9')](),controller[_0x3487('0xf')]);router['post']('/',auth[_0x3487('0x9')](),controller[_0x3487('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x3487('0x11')]);router[_0x3487('0x12')](_0x3487('0xe'),auth[_0x3487('0x9')](),controller[_0x3487('0x13')]);module[_0x3487('0x14')]=router;
\ No newline at end of file
index ee70af0..6116e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x054c=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','diff','seconds','holdtime'];(function(_0x289bea,_0xb4241a){var _0x137f26=function(_0x3969ac){while(--_0x3969ac){_0x289bea['push'](_0x289bea['shift']());}};_0x137f26(++_0xb4241a);}(_0x054c,0x18a));var _0xc054=function(_0x2d1857,_0x3e81c8){_0x2d1857=_0x2d1857-0x0;var _0xe82f9e=_0x054c[_0x2d1857];return _0xe82f9e;};'use strict';var Sequelize=require(_0xc054('0x0'));var moment=require(_0xc054('0x1'));module[_0xc054('0x2')]={'type':{'type':Sequelize[_0xc054('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc054('0x3')]},'calleridname':{'type':Sequelize[_0xc054('0x3')]},'queue':{'type':Sequelize[_0xc054('0x3')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xc054('0x4')],'set':function(_0x175eab){var _0x448d0d=moment(_0x175eab);var _0x597fb9=moment(this[_0xc054('0x5')](_0xc054('0x6')))[_0xc054('0x7')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5b13b=_0x448d0d[_0xc054('0x8')](_0x597fb9,_0xc054('0x9'));this['setDataValue']('queuecallerleaveAt',_0x175eab);this['setDataValue'](_0xc054('0xa'),_0x5b13b||null);}},'position':{'type':Sequelize[_0xc054('0xb')]},'count':{'type':Sequelize[_0xc054('0xb')]},'queuecallerabandon':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xc054('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xc054('0x4')]},'queuecallerexit':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0xc054('0xd')},'originalposition':{'type':Sequelize[_0xc054('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xc054('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xc054('0x3')]},'priority':{'type':Sequelize[_0xc054('0x3')]},'holdtime':{'type':Sequelize[_0xc054('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xc054('0x3')],'comment':_0xc054('0xe')},'transferexten':{'type':Sequelize[_0xc054('0x3')]},'transferuniqueid':{'type':Sequelize[_0xc054('0x3')]},'disposition':{'type':Sequelize[_0xc054('0x3')]},'secondDisposition':{'type':Sequelize[_0xc054('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2db6=['holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt'];(function(_0x3517d9,_0x1e6703){var _0x29a2f4=function(_0x29efb9){while(--_0x29efb9){_0x3517d9['push'](_0x3517d9['shift']());}};_0x29a2f4(++_0x1e6703);}(_0x2db6,0x15d));var _0x62db=function(_0x7bf4c3,_0x4f0743){_0x7bf4c3=_0x7bf4c3-0x0;var _0x398fbf=_0x2db6[_0x7bf4c3];return _0x398fbf;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x62db('0x0')]={'type':{'type':Sequelize[_0x62db('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x62db('0x1')]},'calleridname':{'type':Sequelize[_0x62db('0x1')]},'queue':{'type':Sequelize[_0x62db('0x1')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x62db('0x2')],'set':function(_0x58591c){var _0x25e9fa=moment(_0x58591c);var _0x21253a=moment(this[_0x62db('0x3')](_0x62db('0x4')))[_0x62db('0x5')](_0x62db('0x6'));var _0x6141fc=_0x25e9fa[_0x62db('0x7')](_0x21253a,_0x62db('0x8'));this[_0x62db('0x9')](_0x62db('0xa'),_0x58591c);this['setDataValue'](_0x62db('0xb'),_0x6141fc||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x62db('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x62db('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x62db('0x2')]},'queuecallercomplete':{'type':Sequelize[_0x62db('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x62db('0x2')]},'queuecallerexit':{'type':Sequelize[_0x62db('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x62db('0x2')]},'queuecallerexitreason':{'type':Sequelize[_0x62db('0x1')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x62db('0xc')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x62db('0x1')]},'connectedlinename':{'type':Sequelize[_0x62db('0x1')]},'accountcode':{'type':Sequelize[_0x62db('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x62db('0x1')]},'holdtime':{'type':Sequelize[_0x62db('0xc')]},'mohtime':{'type':Sequelize[_0x62db('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x62db('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x62db('0x1')]},'transfer':{'type':Sequelize[_0x62db('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x62db('0x1')],'comment':_0x62db('0xe')},'transferexten':{'type':Sequelize[_0x62db('0x1')]},'transferuniqueid':{'type':Sequelize[_0x62db('0x1')]},'disposition':{'type':Sequelize[_0x62db('0x1')]},'secondDisposition':{'type':Sequelize[_0x62db('0x1')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0x62db('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 5bcafdd..1571f43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9a=['fields','length','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','destroy','describe','rawAttributes','hasOwnProperty','getVoiceQueuesReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','error','name','send','index','map','VoiceQueueReport','fieldName','type','key','query','filters','model','attributes','intersection'];(function(_0x176317,_0x4897b3){var _0xef2759=function(_0x581e2b){while(--_0x581e2b){_0x176317['push'](_0x176317['shift']());}};_0xef2759(++_0x4897b3);}(_0x8f9a,0xc0));var _0xa8f9=function(_0xe4db4b,_0x54f6af){_0xe4db4b=_0xe4db4b-0x0;var _0x5d7ac0=_0x8f9a[_0xe4db4b];return _0x5d7ac0;};'use strict';var emlformat=require(_0xa8f9('0x0'));var rimraf=require(_0xa8f9('0x1'));var zipdir=require(_0xa8f9('0x2'));var jsonpatch=require(_0xa8f9('0x3'));var rp=require(_0xa8f9('0x4'));var moment=require(_0xa8f9('0x5'));var BPromise=require(_0xa8f9('0x6'));var Mustache=require(_0xa8f9('0x7'));var util=require('util');var path=require(_0xa8f9('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa8f9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa8f9('0xa'));var squel=require(_0xa8f9('0xb'));var crypto=require(_0xa8f9('0xc'));var jsforce=require(_0xa8f9('0xd'));var deskjs=require(_0xa8f9('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa8f9('0xf'));var Papa=require('papaparse');var Redis=require(_0xa8f9('0x10'));var authService=require(_0xa8f9('0x11'));var qs=require(_0xa8f9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8f9('0x13'));var logger=require(_0xa8f9('0x14'))('api');var utils=require(_0xa8f9('0x15'));var config=require(_0xa8f9('0x16'));var licenseUtil=require(_0xa8f9('0x17'));var db=require(_0xa8f9('0x18'))['db'];config[_0xa8f9('0x19')]=_[_0xa8f9('0x1a')](config[_0xa8f9('0x19')],{'host':_0xa8f9('0x1b'),'port':0x18eb});var socket=require(_0xa8f9('0x1c'))(new Redis(config[_0xa8f9('0x19')]));require(_0xa8f9('0x1d'))[_0xa8f9('0x1e')](socket);function respondWithStatusCode(_0xecd3a,_0x182f03){_0x182f03=_0x182f03||0xcc;return function(_0x556881){if(_0x556881){return _0xecd3a['sendStatus'](_0x182f03);}return _0xecd3a[_0xa8f9('0x1f')](_0x182f03)[_0xa8f9('0x20')]();};}function respondWithResult(_0x2b9798,_0x4bca90){_0x4bca90=_0x4bca90||0xc8;return function(_0x32bd28){if(_0x32bd28){return _0x2b9798[_0xa8f9('0x1f')](_0x4bca90)[_0xa8f9('0x21')](_0x32bd28);}};}function respondWithFilteredResult(_0x2f6915,_0x7ab762){return function(_0x5369ff){if(_0x5369ff){var _0x22d9fe=typeof _0x7ab762[_0xa8f9('0x22')]===_0xa8f9('0x23')&&typeof _0x7ab762['limit']==='undefined';var _0x58efb6=_0x5369ff['count'];var _0x2b6984=_0x22d9fe?0x0:_0x7ab762['offset'];var _0x111197=_0x22d9fe?_0x5369ff[_0xa8f9('0x24')]:_0x7ab762[_0xa8f9('0x22')]+_0x7ab762[_0xa8f9('0x25')];var _0x55f51a;if(_0x111197>=_0x58efb6){_0x111197=_0x58efb6;_0x55f51a=0xc8;}else{_0x55f51a=0xce;}_0x2f6915[_0xa8f9('0x1f')](_0x55f51a);return _0x2f6915['set'](_0xa8f9('0x26'),_0x2b6984+'-'+_0x111197+'/'+_0x58efb6)[_0xa8f9('0x21')](_0x5369ff);}return null;};}function patchUpdates(_0x28333b){return function(_0xd252d7){try{jsonpatch[_0xa8f9('0x27')](_0xd252d7,_0x28333b,!![]);}catch(_0x382fad){return BPromise['reject'](_0x382fad);}return _0xd252d7[_0xa8f9('0x28')]();};}function saveUpdates(_0x5e5b0d,_0x55e150){return function(_0xb0e303){if(_0xb0e303){return _0xb0e303[_0xa8f9('0x29')](_0x5e5b0d)[_0xa8f9('0x2a')](function(_0x4a07f6){return _0x4a07f6;});}return null;};}function removeEntity(_0x38bb66,_0x15d70d){return function(_0x1f1f3a){if(_0x1f1f3a){return _0x1f1f3a['destroy']()[_0xa8f9('0x2a')](function(){_0x38bb66[_0xa8f9('0x1f')](0xcc)[_0xa8f9('0x20')]();});}};}function handleEntityNotFound(_0xb99409,_0x1074f3){return function(_0x207186){if(!_0x207186){_0xb99409['sendStatus'](0x194);}return _0x207186;};}function handleError(_0x3c09a0,_0x18536b){_0x18536b=_0x18536b||0x1f4;return function(_0x1097fa){logger[_0xa8f9('0x2b')](_0x1097fa['stack']);if(_0x1097fa[_0xa8f9('0x2c')]){delete _0x1097fa[_0xa8f9('0x2c')];}_0x3c09a0[_0xa8f9('0x1f')](_0x18536b)[_0xa8f9('0x2d')](_0x1097fa);};}exports[_0xa8f9('0x2e')]=function(_0x500113,_0x124c19){var _0x6a615d={},_0x11a887={},_0x13fc15={'count':0x0,'rows':[]};var _0x5b87f1=_[_0xa8f9('0x2f')](db[_0xa8f9('0x30')]['rawAttributes'],function(_0x282cec){return{'name':_0x282cec[_0xa8f9('0x31')],'type':_0x282cec[_0xa8f9('0x32')][_0xa8f9('0x33')]};});_0x11a887['model']=_[_0xa8f9('0x2f')](_0x5b87f1,'name');_0x11a887[_0xa8f9('0x34')]=_['keys'](_0x500113[_0xa8f9('0x34')]);_0x11a887[_0xa8f9('0x35')]=_['intersection'](_0x11a887[_0xa8f9('0x36')],_0x11a887[_0xa8f9('0x34')]);_0x6a615d[_0xa8f9('0x37')]=_[_0xa8f9('0x38')](_0x11a887[_0xa8f9('0x36')],qs[_0xa8f9('0x39')](_0x500113['query']['fields']));_0x6a615d['attributes']=_0x6a615d[_0xa8f9('0x37')][_0xa8f9('0x3a')]?_0x6a615d['attributes']:_0x11a887[_0xa8f9('0x36')];if(!_0x500113[_0xa8f9('0x34')]['hasOwnProperty'](_0xa8f9('0x3b'))){_0x6a615d['limit']=qs[_0xa8f9('0x25')](_0x500113[_0xa8f9('0x34')][_0xa8f9('0x25')]);_0x6a615d['offset']=qs[_0xa8f9('0x22')](_0x500113[_0xa8f9('0x34')][_0xa8f9('0x22')]);}_0x6a615d[_0xa8f9('0x3c')]=qs['sort'](_0x500113['query'][_0xa8f9('0x3d')]);_0x6a615d[_0xa8f9('0x3e')]=qs[_0xa8f9('0x35')](_[_0xa8f9('0x3f')](_0x500113[_0xa8f9('0x34')],_0x11a887[_0xa8f9('0x35')]),_0x5b87f1);if(_0x500113['query']['filter']){_0x6a615d[_0xa8f9('0x3e')]=_[_0xa8f9('0x40')](_0x6a615d[_0xa8f9('0x3e')],{'$or':_[_0xa8f9('0x2f')](_0x5b87f1,function(_0x2336df){if(_0x2336df[_0xa8f9('0x32')]!=='VIRTUAL'){var _0x271f56={};_0x271f56[_0x2336df[_0xa8f9('0x2c')]]={'$like':'%'+_0x500113['query'][_0xa8f9('0x41')]+'%'};return _0x271f56;}})});}_0x6a615d=_[_0xa8f9('0x40')]({},_0x6a615d,_0x500113['options']);var _0x238473={'where':_0x6a615d['where']};return db[_0xa8f9('0x30')][_0xa8f9('0x24')](_0x238473)[_0xa8f9('0x2a')](function(_0x5225ac){_0x13fc15[_0xa8f9('0x24')]=_0x5225ac;if(_0x500113[_0xa8f9('0x34')][_0xa8f9('0x42')]){_0x6a615d[_0xa8f9('0x43')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xa8f9('0x44')](_0x6a615d);})[_0xa8f9('0x2a')](function(_0x44aa23){_0x13fc15[_0xa8f9('0x45')]=_0x44aa23;return _0x13fc15;})[_0xa8f9('0x2a')](respondWithFilteredResult(_0x124c19,_0x6a615d))[_0xa8f9('0x46')](handleError(_0x124c19,null));};exports[_0xa8f9('0x47')]=function(_0x25852c,_0xca11f){var _0x1f2254={'raw':![],'where':{'id':_0x25852c[_0xa8f9('0x48')]['id']}},_0x440076={};_0x440076[_0xa8f9('0x36')]=_[_0xa8f9('0x49')](db[_0xa8f9('0x30')]['rawAttributes']);_0x440076[_0xa8f9('0x34')]=_[_0xa8f9('0x49')](_0x25852c[_0xa8f9('0x34')]);_0x440076[_0xa8f9('0x35')]=_[_0xa8f9('0x38')](_0x440076[_0xa8f9('0x36')],_0x440076[_0xa8f9('0x34')]);_0x1f2254[_0xa8f9('0x37')]=_[_0xa8f9('0x38')](_0x440076[_0xa8f9('0x36')],qs[_0xa8f9('0x39')](_0x25852c[_0xa8f9('0x34')][_0xa8f9('0x39')]));_0x1f2254[_0xa8f9('0x37')]=_0x1f2254['attributes'][_0xa8f9('0x3a')]?_0x1f2254[_0xa8f9('0x37')]:_0x440076[_0xa8f9('0x36')];if(_0x25852c[_0xa8f9('0x34')][_0xa8f9('0x42')]){_0x1f2254['include']=[{'all':!![]}];}_0x1f2254=_['merge']({},_0x1f2254,_0x25852c[_0xa8f9('0x4a')]);return db['VoiceQueueReport'][_0xa8f9('0x4b')](_0x1f2254)[_0xa8f9('0x2a')](handleEntityNotFound(_0xca11f,null))[_0xa8f9('0x2a')](respondWithResult(_0xca11f,null))[_0xa8f9('0x46')](handleError(_0xca11f,null));};exports[_0xa8f9('0x4c')]=function(_0x3aa806,_0x1c2f8e){return db[_0xa8f9('0x30')][_0xa8f9('0x4c')](_0x3aa806[_0xa8f9('0x4d')],{})[_0xa8f9('0x2a')](respondWithResult(_0x1c2f8e,0xc9))[_0xa8f9('0x46')](handleError(_0x1c2f8e,null));};exports[_0xa8f9('0x29')]=function(_0x4a5ef4,_0x467923){if(_0x4a5ef4[_0xa8f9('0x4d')]['id']){delete _0x4a5ef4['body']['id'];}return db[_0xa8f9('0x30')][_0xa8f9('0x4b')]({'where':{'id':_0x4a5ef4[_0xa8f9('0x48')]['id']}})[_0xa8f9('0x2a')](handleEntityNotFound(_0x467923,null))[_0xa8f9('0x2a')](saveUpdates(_0x4a5ef4['body'],null))[_0xa8f9('0x2a')](respondWithResult(_0x467923,null))[_0xa8f9('0x46')](handleError(_0x467923,null));};exports[_0xa8f9('0x4e')]=function(_0x4bfdbd,_0x462268){return db[_0xa8f9('0x30')][_0xa8f9('0x4b')]({'where':{'id':_0x4bfdbd['params']['id']}})[_0xa8f9('0x2a')](handleEntityNotFound(_0x462268,null))[_0xa8f9('0x2a')](removeEntity(_0x462268,null))[_0xa8f9('0x46')](handleError(_0x462268,null));};exports[_0xa8f9('0x4f')]=function(_0x3c154e,_0x28315e){return db['VoiceQueueReport'][_0xa8f9('0x4f')]()['then'](respondWithResult(_0x28315e,null))[_0xa8f9('0x46')](handleError(_0x28315e,null));};exports['getVoiceQueuesReport']=function(_0x478b64,_0xbc1ebe){var _0x52524c={},_0x29099f={},_0x2c5dc1={'count':0x0,'rows':[]};_0x29099f['model']=_[_0xa8f9('0x49')](db[_0xa8f9('0x30')][_0xa8f9('0x50')]);_0x29099f[_0xa8f9('0x34')]=_['keys'](_0x478b64['query']);_0x29099f[_0xa8f9('0x35')]=_[_0xa8f9('0x38')](_0x29099f[_0xa8f9('0x36')],_0x29099f[_0xa8f9('0x34')]);_0x52524c[_0xa8f9('0x37')]=_[_0xa8f9('0x38')](_0x29099f[_0xa8f9('0x36')],qs[_0xa8f9('0x39')](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x39')]));_0x52524c['attributes']=_0x52524c[_0xa8f9('0x37')][_0xa8f9('0x3a')]?_0x52524c[_0xa8f9('0x37')]:_0x29099f[_0xa8f9('0x36')];if(!_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x51')](_0xa8f9('0x3b'))){_0x52524c[_0xa8f9('0x25')]=qs[_0xa8f9('0x25')](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x25')]);_0x52524c['offset']=qs[_0xa8f9('0x22')](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x22')]);}_0x52524c[_0xa8f9('0x3c')]=qs['sort'](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x3d')]);_0x52524c[_0xa8f9('0x3e')]=qs[_0xa8f9('0x35')](_[_0xa8f9('0x3f')](_0x478b64[_0xa8f9('0x34')],_0x29099f[_0xa8f9('0x35')]));if(_0x478b64[_0xa8f9('0x34')]['filter']){_0x52524c['where']=_[_0xa8f9('0x40')](_0x52524c[_0xa8f9('0x3e')],{'$or':_[_0xa8f9('0x2f')](_0x52524c[_0xa8f9('0x37')],function(_0x313d14){var _0xd006de={};_0xd006de[_0x313d14]={'$like':'%'+_0x478b64[_0xa8f9('0x34')]['filter']+'%'};return _0xd006de;})});}_0x52524c=_[_0xa8f9('0x40')]({},_0x52524c,_0x478b64[_0xa8f9('0x4a')]);var _0x3a649a={'where':_0x52524c[_0xa8f9('0x3e')]};return db['VoiceQueueReport'][_0xa8f9('0x24')](_0x3a649a)['then'](function(_0x35fc88){_0x2c5dc1[_0xa8f9('0x24')]=_0x35fc88;if(_0x478b64[_0xa8f9('0x34')]['includeAll']){_0x52524c[_0xa8f9('0x43')]=[{'all':!![]}];}return db[_0xa8f9('0x30')][_0xa8f9('0x44')](_0x52524c);})['then'](function(_0x3dbbb0){_0x2c5dc1[_0xa8f9('0x45')]=_0x3dbbb0;return _0x2c5dc1;})[_0xa8f9('0x2a')](respondWithFilteredResult(_0xbc1ebe,_0x52524c,_0xa8f9('0x52')))[_0xa8f9('0x46')](handleError(_0xbc1ebe,null,_0xa8f9('0x52')));};
\ No newline at end of file
+var _0x68bc=['status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','update','destroy','then','error','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','describe','getVoiceQueuesReport','nolimit','sort','rows','rimraf','zip-dir','request-promise','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus'];(function(_0xecd626,_0x313a13){var _0x36ebc2=function(_0x37a48e){while(--_0x37a48e){_0xecd626['push'](_0xecd626['shift']());}};_0x36ebc2(++_0x313a13);}(_0x68bc,0x17d));var _0xc68b=function(_0x4bab4f,_0x251ee3){_0x4bab4f=_0x4bab4f-0x0;var _0x255672=_0x68bc[_0x4bab4f];return _0x255672;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc68b('0x0'));var zipdir=require(_0xc68b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc68b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc68b('0x3'));var util=require(_0xc68b('0x4'));var path=require(_0xc68b('0x5'));var sox=require('sox');var csv=require(_0xc68b('0x6'));var ejs=require(_0xc68b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc68b('0x8'));var squel=require('squel');var crypto=require(_0xc68b('0x9'));var jsforce=require(_0xc68b('0xa'));var deskjs=require(_0xc68b('0xb'));var toCsv=require(_0xc68b('0x6'));var querystring=require(_0xc68b('0xc'));var Papa=require(_0xc68b('0xd'));var Redis=require(_0xc68b('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc68b('0xf'));var as=require(_0xc68b('0x10'));var hardwareService=require(_0xc68b('0x11'));var logger=require('../../config/logger')(_0xc68b('0x12'));var utils=require(_0xc68b('0x13'));var config=require(_0xc68b('0x14'));var licenseUtil=require(_0xc68b('0x15'));var db=require(_0xc68b('0x16'))['db'];config['redis']=_[_0xc68b('0x17')](config[_0xc68b('0x18')],{'host':_0xc68b('0x19'),'port':0x18eb});var socket=require(_0xc68b('0x1a'))(new Redis(config[_0xc68b('0x18')]));require('./voiceQueueReport.socket')[_0xc68b('0x1b')](socket);function respondWithStatusCode(_0x2aaa20,_0x4dbd7b){_0x4dbd7b=_0x4dbd7b||0xcc;return function(_0x172826){if(_0x172826){return _0x2aaa20[_0xc68b('0x1c')](_0x4dbd7b);}return _0x2aaa20[_0xc68b('0x1d')](_0x4dbd7b)[_0xc68b('0x1e')]();};}function respondWithResult(_0x19252e,_0x46ec3c){_0x46ec3c=_0x46ec3c||0xc8;return function(_0x17566e){if(_0x17566e){return _0x19252e[_0xc68b('0x1d')](_0x46ec3c)[_0xc68b('0x1f')](_0x17566e);}};}function respondWithFilteredResult(_0x43bad6,_0x2166a0){return function(_0x53b294){if(_0x53b294){var _0x1d810e=typeof _0x2166a0['offset']==='undefined'&&typeof _0x2166a0['limit']===_0xc68b('0x20');var _0x52a2ea=_0x53b294[_0xc68b('0x21')];var _0x3b1e37=_0x1d810e?0x0:_0x2166a0[_0xc68b('0x22')];var _0x3ab7c5=_0x1d810e?_0x53b294[_0xc68b('0x21')]:_0x2166a0[_0xc68b('0x22')]+_0x2166a0[_0xc68b('0x23')];var _0x548648;if(_0x3ab7c5>=_0x52a2ea){_0x3ab7c5=_0x52a2ea;_0x548648=0xc8;}else{_0x548648=0xce;}_0x43bad6['status'](_0x548648);return _0x43bad6['set'](_0xc68b('0x24'),_0x3b1e37+'-'+_0x3ab7c5+'/'+_0x52a2ea)[_0xc68b('0x1f')](_0x53b294);}return null;};}function patchUpdates(_0x1080e0){return function(_0xdb189c){try{jsonpatch[_0xc68b('0x25')](_0xdb189c,_0x1080e0,!![]);}catch(_0x426f4a){return BPromise[_0xc68b('0x26')](_0x426f4a);}return _0xdb189c[_0xc68b('0x27')]();};}function saveUpdates(_0x6b8f03,_0x2aba25){return function(_0x4f62eb){if(_0x4f62eb){return _0x4f62eb[_0xc68b('0x28')](_0x6b8f03)['then'](function(_0x4dc64d){return _0x4dc64d;});}return null;};}function removeEntity(_0x3fd8e1,_0x29c44a){return function(_0x2fbd13){if(_0x2fbd13){return _0x2fbd13[_0xc68b('0x29')]()[_0xc68b('0x2a')](function(){_0x3fd8e1[_0xc68b('0x1d')](0xcc)[_0xc68b('0x1e')]();});}};}function handleEntityNotFound(_0x42bcf3,_0x3c6e8f){return function(_0xcc5515){if(!_0xcc5515){_0x42bcf3[_0xc68b('0x1c')](0x194);}return _0xcc5515;};}function handleError(_0x3fc811,_0x2e3540){_0x2e3540=_0x2e3540||0x1f4;return function(_0x204d1c){logger[_0xc68b('0x2b')](_0x204d1c['stack']);if(_0x204d1c[_0xc68b('0x2c')]){delete _0x204d1c[_0xc68b('0x2c')];}_0x3fc811[_0xc68b('0x1d')](_0x2e3540)[_0xc68b('0x2d')](_0x204d1c);};}exports[_0xc68b('0x2e')]=function(_0x4ea610,_0x403760){var _0x1a0269={},_0x18a510={},_0xf5b538={'count':0x0,'rows':[]};var _0xfa187d=_[_0xc68b('0x2f')](db[_0xc68b('0x30')][_0xc68b('0x31')],function(_0x2f231b){return{'name':_0x2f231b[_0xc68b('0x32')],'type':_0x2f231b[_0xc68b('0x33')][_0xc68b('0x34')]};});_0x18a510[_0xc68b('0x35')]=_[_0xc68b('0x2f')](_0xfa187d,_0xc68b('0x2c'));_0x18a510[_0xc68b('0x36')]=_[_0xc68b('0x37')](_0x4ea610[_0xc68b('0x36')]);_0x18a510['filters']=_[_0xc68b('0x38')](_0x18a510[_0xc68b('0x35')],_0x18a510['query']);_0x1a0269[_0xc68b('0x39')]=_[_0xc68b('0x38')](_0x18a510[_0xc68b('0x35')],qs[_0xc68b('0x3a')](_0x4ea610['query']['fields']));_0x1a0269['attributes']=_0x1a0269['attributes'][_0xc68b('0x3b')]?_0x1a0269[_0xc68b('0x39')]:_0x18a510[_0xc68b('0x35')];if(!_0x4ea610[_0xc68b('0x36')][_0xc68b('0x3c')]('nolimit')){_0x1a0269['limit']=qs[_0xc68b('0x23')](_0x4ea610['query'][_0xc68b('0x23')]);_0x1a0269[_0xc68b('0x22')]=qs['offset'](_0x4ea610[_0xc68b('0x36')][_0xc68b('0x22')]);}_0x1a0269[_0xc68b('0x3d')]=qs['sort'](_0x4ea610[_0xc68b('0x36')]['sort']);_0x1a0269['where']=qs[_0xc68b('0x3e')](_[_0xc68b('0x3f')](_0x4ea610[_0xc68b('0x36')],_0x18a510[_0xc68b('0x3e')]),_0xfa187d);if(_0x4ea610[_0xc68b('0x36')][_0xc68b('0x40')]){_0x1a0269[_0xc68b('0x41')]=_['merge'](_0x1a0269[_0xc68b('0x41')],{'$or':_['map'](_0xfa187d,function(_0x2c7951){if(_0x2c7951[_0xc68b('0x33')]!==_0xc68b('0x42')){var _0x4f5632={};_0x4f5632[_0x2c7951[_0xc68b('0x2c')]]={'$like':'%'+_0x4ea610[_0xc68b('0x36')]['filter']+'%'};return _0x4f5632;}})});}_0x1a0269=_[_0xc68b('0x43')]({},_0x1a0269,_0x4ea610[_0xc68b('0x44')]);var _0x3d6169={'where':_0x1a0269[_0xc68b('0x41')]};return db['VoiceQueueReport'][_0xc68b('0x21')](_0x3d6169)['then'](function(_0x577538){_0xf5b538[_0xc68b('0x21')]=_0x577538;if(_0x4ea610[_0xc68b('0x36')][_0xc68b('0x45')]){_0x1a0269[_0xc68b('0x46')]=[{'all':!![]}];}return db[_0xc68b('0x30')][_0xc68b('0x47')](_0x1a0269);})[_0xc68b('0x2a')](function(_0x31045a){_0xf5b538['rows']=_0x31045a;return _0xf5b538;})['then'](respondWithFilteredResult(_0x403760,_0x1a0269))[_0xc68b('0x48')](handleError(_0x403760,null));};exports['show']=function(_0x1512ed,_0x128ab6){var _0x5cd7b5={'raw':![],'where':{'id':_0x1512ed[_0xc68b('0x49')]['id']}},_0x436de4={};_0x436de4[_0xc68b('0x35')]=_[_0xc68b('0x37')](db[_0xc68b('0x30')][_0xc68b('0x31')]);_0x436de4['query']=_['keys'](_0x1512ed[_0xc68b('0x36')]);_0x436de4[_0xc68b('0x3e')]=_[_0xc68b('0x38')](_0x436de4['model'],_0x436de4[_0xc68b('0x36')]);_0x5cd7b5[_0xc68b('0x39')]=_[_0xc68b('0x38')](_0x436de4[_0xc68b('0x35')],qs['fields'](_0x1512ed['query'][_0xc68b('0x3a')]));_0x5cd7b5[_0xc68b('0x39')]=_0x5cd7b5[_0xc68b('0x39')]['length']?_0x5cd7b5[_0xc68b('0x39')]:_0x436de4[_0xc68b('0x35')];if(_0x1512ed[_0xc68b('0x36')][_0xc68b('0x45')]){_0x5cd7b5['include']=[{'all':!![]}];}_0x5cd7b5=_[_0xc68b('0x43')]({},_0x5cd7b5,_0x1512ed[_0xc68b('0x44')]);return db['VoiceQueueReport'][_0xc68b('0x4a')](_0x5cd7b5)['then'](handleEntityNotFound(_0x128ab6,null))[_0xc68b('0x2a')](respondWithResult(_0x128ab6,null))[_0xc68b('0x48')](handleError(_0x128ab6,null));};exports[_0xc68b('0x4b')]=function(_0x308498,_0x3bb036){return db[_0xc68b('0x30')][_0xc68b('0x4b')](_0x308498[_0xc68b('0x4c')],{})['then'](respondWithResult(_0x3bb036,0xc9))[_0xc68b('0x48')](handleError(_0x3bb036,null));};exports['update']=function(_0x53001b,_0x386695){if(_0x53001b[_0xc68b('0x4c')]['id']){delete _0x53001b[_0xc68b('0x4c')]['id'];}return db[_0xc68b('0x30')]['find']({'where':{'id':_0x53001b[_0xc68b('0x49')]['id']}})[_0xc68b('0x2a')](handleEntityNotFound(_0x386695,null))[_0xc68b('0x2a')](saveUpdates(_0x53001b[_0xc68b('0x4c')],null))[_0xc68b('0x2a')](respondWithResult(_0x386695,null))['catch'](handleError(_0x386695,null));};exports[_0xc68b('0x29')]=function(_0x51d705,_0x1cc799){return db[_0xc68b('0x30')][_0xc68b('0x4a')]({'where':{'id':_0x51d705['params']['id']}})[_0xc68b('0x2a')](handleEntityNotFound(_0x1cc799,null))[_0xc68b('0x2a')](removeEntity(_0x1cc799,null))[_0xc68b('0x48')](handleError(_0x1cc799,null));};exports[_0xc68b('0x4d')]=function(_0x1ecbbd,_0x2a806b){return db[_0xc68b('0x30')][_0xc68b('0x4d')]()[_0xc68b('0x2a')](respondWithResult(_0x2a806b,null))[_0xc68b('0x48')](handleError(_0x2a806b,null));};exports[_0xc68b('0x4e')]=function(_0x360b49,_0xc421ab){var _0x25ef3b={},_0x182aa8={},_0x22ab5d={'count':0x0,'rows':[]};_0x182aa8[_0xc68b('0x35')]=_[_0xc68b('0x37')](db[_0xc68b('0x30')][_0xc68b('0x31')]);_0x182aa8[_0xc68b('0x36')]=_[_0xc68b('0x37')](_0x360b49['query']);_0x182aa8[_0xc68b('0x3e')]=_[_0xc68b('0x38')](_0x182aa8[_0xc68b('0x35')],_0x182aa8['query']);_0x25ef3b['attributes']=_[_0xc68b('0x38')](_0x182aa8[_0xc68b('0x35')],qs[_0xc68b('0x3a')](_0x360b49['query'][_0xc68b('0x3a')]));_0x25ef3b[_0xc68b('0x39')]=_0x25ef3b[_0xc68b('0x39')][_0xc68b('0x3b')]?_0x25ef3b[_0xc68b('0x39')]:_0x182aa8['model'];if(!_0x360b49[_0xc68b('0x36')][_0xc68b('0x3c')](_0xc68b('0x4f'))){_0x25ef3b[_0xc68b('0x23')]=qs[_0xc68b('0x23')](_0x360b49[_0xc68b('0x36')][_0xc68b('0x23')]);_0x25ef3b[_0xc68b('0x22')]=qs['offset'](_0x360b49[_0xc68b('0x36')][_0xc68b('0x22')]);}_0x25ef3b[_0xc68b('0x3d')]=qs[_0xc68b('0x50')](_0x360b49[_0xc68b('0x36')][_0xc68b('0x50')]);_0x25ef3b[_0xc68b('0x41')]=qs[_0xc68b('0x3e')](_[_0xc68b('0x3f')](_0x360b49[_0xc68b('0x36')],_0x182aa8['filters']));if(_0x360b49['query'][_0xc68b('0x40')]){_0x25ef3b[_0xc68b('0x41')]=_[_0xc68b('0x43')](_0x25ef3b[_0xc68b('0x41')],{'$or':_[_0xc68b('0x2f')](_0x25ef3b[_0xc68b('0x39')],function(_0x21c56b){var _0x4ee1f5={};_0x4ee1f5[_0x21c56b]={'$like':'%'+_0x360b49[_0xc68b('0x36')][_0xc68b('0x40')]+'%'};return _0x4ee1f5;})});}_0x25ef3b=_[_0xc68b('0x43')]({},_0x25ef3b,_0x360b49['options']);var _0x280caa={'where':_0x25ef3b[_0xc68b('0x41')]};return db[_0xc68b('0x30')][_0xc68b('0x21')](_0x280caa)[_0xc68b('0x2a')](function(_0x56672e){_0x22ab5d[_0xc68b('0x21')]=_0x56672e;if(_0x360b49[_0xc68b('0x36')][_0xc68b('0x45')]){_0x25ef3b[_0xc68b('0x46')]=[{'all':!![]}];}return db[_0xc68b('0x30')][_0xc68b('0x47')](_0x25ef3b);})[_0xc68b('0x2a')](function(_0x50a63f){_0x22ab5d[_0xc68b('0x51')]=_0x50a63f;return _0x22ab5d;})[_0xc68b('0x2a')](respondWithFilteredResult(_0xc421ab,_0x25ef3b,_0xc68b('0x4e')))[_0xc68b('0x48')](handleError(_0xc421ab,null,_0xc68b('0x4e')));};
\ No newline at end of file
index 43d449b..9a040ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3bf=['exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x30b073,_0x47e9a5){var _0x53ff1d=function(_0x55be73){while(--_0x55be73){_0x30b073['push'](_0x30b073['shift']());}};_0x53ff1d(++_0x47e9a5);}(_0xc3bf,0x14b));var _0xfc3b=function(_0x3cf5c7,_0x898e42){_0x3cf5c7=_0x3cf5c7-0x0;var _0x2681f2=_0xc3bf[_0x3cf5c7];return _0x2681f2;};'use strict';var EventEmitter=require(_0xfc3b('0x0'));var VoiceQueueReport=require(_0xfc3b('0x1'))['db'][_0xfc3b('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xfc3b('0x3')](0x0);var events={'afterCreate':_0xfc3b('0x4'),'afterUpdate':_0xfc3b('0x5'),'afterDestroy':_0xfc3b('0x6')};function emitEvent(_0x1ecd8c){return function(_0x102639,_0x81fb5a,_0x33af8b){VoiceQueueReportEvents[_0xfc3b('0x7')](_0x1ecd8c+':'+_0x102639['id'],_0x102639);VoiceQueueReportEvents[_0xfc3b('0x7')](_0x1ecd8c,_0x102639);_0x33af8b(null);};}for(var e in events){if(events[_0xfc3b('0x8')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xfc3b('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x469b=['remove','emit','hasOwnProperty','hook','exports','events','VoiceQueueReport','setMaxListeners','save','update'];(function(_0x42a745,_0x2eb920){var _0x4cb718=function(_0x292778){while(--_0x292778){_0x42a745['push'](_0x42a745['shift']());}};_0x4cb718(++_0x2eb920);}(_0x469b,0x16d));var _0xb469=function(_0x45ee03,_0x2f5319){_0x45ee03=_0x45ee03-0x0;var _0x13d535=_0x469b[_0x45ee03];return _0x13d535;};'use strict';var EventEmitter=require(_0xb469('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0xb469('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xb469('0x2')](0x0);var events={'afterCreate':_0xb469('0x3'),'afterUpdate':_0xb469('0x4'),'afterDestroy':_0xb469('0x5')};function emitEvent(_0x56882e){return function(_0x4c7cc3,_0x4da7ab,_0x19f4ac){VoiceQueueReportEvents['emit'](_0x56882e+':'+_0x4c7cc3['id'],_0x4c7cc3);VoiceQueueReportEvents[_0xb469('0x6')](_0x56882e,_0x4c7cc3);_0x19f4ac(null);};}for(var e in events){if(events[_0xb469('0x7')](e)){var event=events[e];VoiceQueueReport[_0xb469('0x8')](e,emitEvent(event));}}module[_0xb469('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
index 584e64e..5672c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa40b=['bluebird','path','rimraf','../../config/environment','./voiceQueueReport.attributes','define','report_queue','uniqueid','lodash','api','moment'];(function(_0x115b91,_0x50ef17){var _0x306060=function(_0x547979){while(--_0x547979){_0x115b91['push'](_0x115b91['shift']());}};_0x306060(++_0x50ef17);}(_0xa40b,0x147));var _0xba40=function(_0x2d4cb8,_0x2c18f0){_0x2d4cb8=_0x2d4cb8-0x0;var _0x333a07=_0xa40b[_0x2d4cb8];return _0x333a07;};'use strict';var _=require(_0xba40('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xba40('0x1'));var moment=require(_0xba40('0x2'));var BPromise=require(_0xba40('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba40('0x4'));var rimraf=require(_0xba40('0x5'));var config=require(_0xba40('0x6'));var attributes=require(_0xba40('0x7'));module['exports']=function(_0x1fa3ff,_0x55ab13){return _0x1fa3ff[_0xba40('0x8')]('VoiceQueueReport',attributes,{'tableName':_0xba40('0x9'),'paranoid':![],'indexes':[{'fields':[_0xba40('0xa')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0525=['path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','VoiceQueueReport','report_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x269738,_0x13ee69){var _0x1fdf69=function(_0x37c5ac){while(--_0x37c5ac){_0x269738['push'](_0x269738['shift']());}};_0x1fdf69(++_0x13ee69);}(_0x0525,0x116));var _0x5052=function(_0x1b31ba,_0x2ce303){_0x1b31ba=_0x1b31ba-0x0;var _0x39bc9f=_0x0525[_0x1b31ba];return _0x39bc9f;};'use strict';var _=require(_0x5052('0x0'));var util=require(_0x5052('0x1'));var logger=require(_0x5052('0x2'))(_0x5052('0x3'));var moment=require(_0x5052('0x4'));var BPromise=require(_0x5052('0x5'));var rp=require(_0x5052('0x6'));var fs=require('fs');var path=require(_0x5052('0x7'));var rimraf=require(_0x5052('0x8'));var config=require(_0x5052('0x9'));var attributes=require(_0x5052('0xa'));module[_0x5052('0xb')]=function(_0x1af54b,_0x173d6c){return _0x1af54b['define'](_0x5052('0xc'),attributes,{'tableName':_0x5052('0xd'),'paranoid':![],'indexes':[{'fields':[_0x5052('0xe')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index e79646d..c445ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe956=['update','where','UpdateVoiceQueueReport','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','options','raw','attributes','limit','include','map','model','CreateVoiceQueueReport','create','body'];(function(_0x15c389,_0x1e57d0){var _0x4a2544=function(_0x24368d){while(--_0x24368d){_0x15c389['push'](_0x15c389['shift']());}};_0x4a2544(++_0x1e57d0);}(_0xe956,0xab));var _0x6e95=function(_0x3d596a,_0x2872a6){_0x3d596a=_0x3d596a-0x0;var _0x466200=_0xe956[_0x3d596a];return _0x466200;};'use strict';var _=require(_0x6e95('0x0'));var util=require(_0x6e95('0x1'));var moment=require(_0x6e95('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e95('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e95('0x4'))['db'];var utils=require(_0x6e95('0x5'));var logger=require(_0x6e95('0x6'))(_0x6e95('0x7'));var config=require(_0x6e95('0x8'));var jayson=require(_0x6e95('0x9'));var client=jayson['client'][_0x6e95('0xa')]({'port':0x232a});config[_0x6e95('0xb')]=_['defaults'](config[_0x6e95('0xb')],{'host':_0x6e95('0xc'),'port':0x18eb});var socket=require(_0x6e95('0xd'))(new Redis(config['redis']));require(_0x6e95('0xe'))[_0x6e95('0xf')](socket);function respondWithRpcPromise(_0x3f8ca2,_0x1c3b63,_0x4eb4e4){return new BPromise(function(_0x235d7c,_0x341573){return client[_0x6e95('0x10')](_0x3f8ca2,_0x4eb4e4)[_0x6e95('0x11')](function(_0x10f461){logger[_0x6e95('0x12')](_0x6e95('0x13'),_0x1c3b63,'request\x20sent');logger[_0x6e95('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x1c3b63,'request\x20sent',JSON[_0x6e95('0x15')](_0x10f461));if(_0x10f461[_0x6e95('0x16')]){if(_0x10f461[_0x6e95('0x16')][_0x6e95('0x17')]===0x1f4){logger[_0x6e95('0x16')](_0x6e95('0x13'),_0x1c3b63,_0x10f461['error'][_0x6e95('0x18')]);return _0x341573(_0x10f461[_0x6e95('0x16')][_0x6e95('0x18')]);}logger[_0x6e95('0x16')](_0x6e95('0x13'),_0x1c3b63,_0x10f461[_0x6e95('0x16')][_0x6e95('0x18')]);return _0x235d7c(_0x10f461[_0x6e95('0x16')][_0x6e95('0x18')]);}else{logger[_0x6e95('0x12')](_0x6e95('0x13'),_0x1c3b63,'request\x20sent');_0x235d7c(_0x10f461[_0x6e95('0x19')][_0x6e95('0x18')]);}})[_0x6e95('0x1a')](function(_0x4a5e35){logger['error'](_0x6e95('0x13'),_0x1c3b63,_0x4a5e35);_0x341573(_0x4a5e35);});});}exports[_0x6e95('0x1b')]=function(_0x2a18aa){var _0x2fa4ce=this;return new Promise(function(_0x420a22,_0x51ee68){return db[_0x6e95('0x1c')]['findAll']({'raw':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa['options'][_0x6e95('0x1e')]===undefined?!![]:![]:!![],'where':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa[_0x6e95('0x1d')]['where']||null:null,'attributes':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa[_0x6e95('0x1d')][_0x6e95('0x1f')]||null:null,'limit':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa['options'][_0x6e95('0x20')]||null:null,'include':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa[_0x6e95('0x1d')][_0x6e95('0x21')]?_['map'](_0x2a18aa[_0x6e95('0x1d')][_0x6e95('0x21')],function(_0xb4a9ca){return{'model':db[_0xb4a9ca['model']],'as':_0xb4a9ca['as'],'attributes':_0xb4a9ca[_0x6e95('0x1f')],'include':_0xb4a9ca['include']?_[_0x6e95('0x22')](_0xb4a9ca[_0x6e95('0x21')],function(_0x3196f9){return{'model':db[_0x3196f9['model']],'as':_0x3196f9['as'],'attributes':_0x3196f9[_0x6e95('0x1f')],'include':_0x3196f9[_0x6e95('0x21')]?_['map'](_0x3196f9['include'],function(_0x22e60e){return{'model':db[_0x22e60e[_0x6e95('0x23')]],'as':_0x22e60e['as'],'attributes':_0x22e60e[_0x6e95('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6e95('0x11')](function(_0x3f8344){logger[_0x6e95('0x12')]('GetVoiceQueueReport',_0x2a18aa);logger['debug'](_0x6e95('0x1b'),_0x2a18aa,JSON['stringify'](_0x3f8344));_0x420a22(_0x3f8344);})[_0x6e95('0x1a')](function(_0x1e4b9a){logger['error']('GetVoiceQueueReport',_0x1e4b9a[_0x6e95('0x18')],_0x2a18aa);_0x51ee68(_0x2fa4ce['error'](0x1f4,_0x1e4b9a[_0x6e95('0x18')]));});});};exports[_0x6e95('0x24')]=function(_0x10a25a){var _0x4780b0=this;return new Promise(function(_0x4f0147,_0x1d1c87){return db[_0x6e95('0x1c')][_0x6e95('0x25')](_0x10a25a[_0x6e95('0x26')],{'raw':_0x10a25a['options']?_0x10a25a[_0x6e95('0x1d')][_0x6e95('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x4b675d){logger[_0x6e95('0x12')](_0x6e95('0x24'),_0x10a25a);logger[_0x6e95('0x14')](_0x6e95('0x24'),_0x10a25a,JSON[_0x6e95('0x15')](_0x4b675d));_0x4f0147(_0x4b675d);})[_0x6e95('0x1a')](function(_0x2a8f6e){logger[_0x6e95('0x16')](_0x6e95('0x24'),_0x2a8f6e[_0x6e95('0x18')],_0x10a25a);_0x1d1c87(_0x4780b0['error'](0x1f4,_0x2a8f6e[_0x6e95('0x18')]));});});};exports['UpdateVoiceQueueReport']=function(_0x26cab7){var _0x5db702=this;return new Promise(function(_0x3e6450,_0xa0b996){return db[_0x6e95('0x1c')][_0x6e95('0x27')](_0x26cab7[_0x6e95('0x26')],{'raw':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7[_0x6e95('0x1d')][_0x6e95('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7[_0x6e95('0x1d')][_0x6e95('0x28')]||null:null,'attributes':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7['options'][_0x6e95('0x1f')]||null:null,'limit':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7['options'][_0x6e95('0x20')]||null:null})[_0x6e95('0x11')](function(_0x2a26b4){logger[_0x6e95('0x12')](_0x6e95('0x29'),_0x26cab7);logger[_0x6e95('0x14')]('UpdateVoiceQueueReport',_0x26cab7,JSON['stringify'](_0x2a26b4));_0x3e6450(_0x2a26b4);})[_0x6e95('0x1a')](function(_0x3bf4d1){logger['error'](_0x6e95('0x29'),_0x3bf4d1[_0x6e95('0x18')],_0x26cab7);_0xa0b996(_0x5db702[_0x6e95('0x16')](0x1f4,_0x3bf4d1['message']));});});};
\ No newline at end of file
+var _0x1f49=['options','raw','where','attributes','include','map','model','GetVoiceQueueReport','create','body','CreateVoiceQueueReport','update','limit','UpdateVoiceQueueReport','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','VoiceQueueReport','findAll'];(function(_0x28fbbf,_0x11f896){var _0x543af6=function(_0x27fa74){while(--_0x27fa74){_0x28fbbf['push'](_0x28fbbf['shift']());}};_0x543af6(++_0x11f896);}(_0x1f49,0x19e));var _0x91f4=function(_0x43a37c,_0x25a567){_0x43a37c=_0x43a37c-0x0;var _0x5d1d40=_0x1f49[_0x43a37c];return _0x5d1d40;};'use strict';var _=require(_0x91f4('0x0'));var util=require('util');var moment=require(_0x91f4('0x1'));var BPromise=require(_0x91f4('0x2'));var rs=require(_0x91f4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x91f4('0x4'));var logger=require(_0x91f4('0x5'))('rpc');var config=require(_0x91f4('0x6'));var jayson=require(_0x91f4('0x7'));var client=jayson[_0x91f4('0x8')][_0x91f4('0x9')]({'port':0x232a});config[_0x91f4('0xa')]=_[_0x91f4('0xb')](config[_0x91f4('0xa')],{'host':_0x91f4('0xc'),'port':0x18eb});var socket=require(_0x91f4('0xd'))(new Redis(config['redis']));require('./voiceQueueReport.socket')[_0x91f4('0xe')](socket);function respondWithRpcPromise(_0xdf8015,_0x1416fd,_0x5f0b7c){return new BPromise(function(_0x209f2f,_0x1aa243){return client['request'](_0xdf8015,_0x5f0b7c)[_0x91f4('0xf')](function(_0x3068ba){logger[_0x91f4('0x10')](_0x91f4('0x11'),_0x1416fd,_0x91f4('0x12'));logger[_0x91f4('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x1416fd,_0x91f4('0x12'),JSON[_0x91f4('0x14')](_0x3068ba));if(_0x3068ba['error']){if(_0x3068ba['error']['code']===0x1f4){logger[_0x91f4('0x15')]('VoiceQueueReport,\x20%s,\x20%s',_0x1416fd,_0x3068ba['error'][_0x91f4('0x16')]);return _0x1aa243(_0x3068ba[_0x91f4('0x15')]['message']);}logger[_0x91f4('0x15')](_0x91f4('0x11'),_0x1416fd,_0x3068ba[_0x91f4('0x15')][_0x91f4('0x16')]);return _0x209f2f(_0x3068ba['error'][_0x91f4('0x16')]);}else{logger['info'](_0x91f4('0x11'),_0x1416fd,_0x91f4('0x12'));_0x209f2f(_0x3068ba['result'][_0x91f4('0x16')]);}})[_0x91f4('0x17')](function(_0x143dd5){logger[_0x91f4('0x15')](_0x91f4('0x11'),_0x1416fd,_0x143dd5);_0x1aa243(_0x143dd5);});});}exports['GetVoiceQueueReport']=function(_0x24e4ab){var _0x2b3e96=this;return new Promise(function(_0x32fb6a,_0x58b7e1){return db[_0x91f4('0x18')][_0x91f4('0x19')]({'raw':_0x24e4ab['options']?_0x24e4ab[_0x91f4('0x1a')][_0x91f4('0x1b')]===undefined?!![]:![]:!![],'where':_0x24e4ab[_0x91f4('0x1a')]?_0x24e4ab[_0x91f4('0x1a')][_0x91f4('0x1c')]||null:null,'attributes':_0x24e4ab[_0x91f4('0x1a')]?_0x24e4ab[_0x91f4('0x1a')][_0x91f4('0x1d')]||null:null,'limit':_0x24e4ab[_0x91f4('0x1a')]?_0x24e4ab[_0x91f4('0x1a')]['limit']||null:null,'include':_0x24e4ab[_0x91f4('0x1a')]?_0x24e4ab['options'][_0x91f4('0x1e')]?_[_0x91f4('0x1f')](_0x24e4ab[_0x91f4('0x1a')][_0x91f4('0x1e')],function(_0x18f0db){return{'model':db[_0x18f0db[_0x91f4('0x20')]],'as':_0x18f0db['as'],'attributes':_0x18f0db['attributes'],'include':_0x18f0db['include']?_['map'](_0x18f0db['include'],function(_0x39ea7b){return{'model':db[_0x39ea7b[_0x91f4('0x20')]],'as':_0x39ea7b['as'],'attributes':_0x39ea7b[_0x91f4('0x1d')],'include':_0x39ea7b[_0x91f4('0x1e')]?_[_0x91f4('0x1f')](_0x39ea7b['include'],function(_0x99511a){return{'model':db[_0x99511a['model']],'as':_0x99511a['as'],'attributes':_0x99511a[_0x91f4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x91f4('0xf')](function(_0x17d90f){logger[_0x91f4('0x10')](_0x91f4('0x21'),_0x24e4ab);logger[_0x91f4('0x13')](_0x91f4('0x21'),_0x24e4ab,JSON[_0x91f4('0x14')](_0x17d90f));_0x32fb6a(_0x17d90f);})[_0x91f4('0x17')](function(_0x306eda){logger[_0x91f4('0x15')]('GetVoiceQueueReport',_0x306eda['message'],_0x24e4ab);_0x58b7e1(_0x2b3e96[_0x91f4('0x15')](0x1f4,_0x306eda['message']));});});};exports['CreateVoiceQueueReport']=function(_0x37c11a){var _0x1d3296=this;return new Promise(function(_0x43baaa,_0x26a9dd){return db[_0x91f4('0x18')][_0x91f4('0x22')](_0x37c11a[_0x91f4('0x23')],{'raw':_0x37c11a[_0x91f4('0x1a')]?_0x37c11a[_0x91f4('0x1a')][_0x91f4('0x1b')]===undefined?!![]:![]:!![]})[_0x91f4('0xf')](function(_0x1648eb){logger['info'](_0x91f4('0x24'),_0x37c11a);logger[_0x91f4('0x13')](_0x91f4('0x24'),_0x37c11a,JSON[_0x91f4('0x14')](_0x1648eb));_0x43baaa(_0x1648eb);})[_0x91f4('0x17')](function(_0x2d52b8){logger[_0x91f4('0x15')](_0x91f4('0x24'),_0x2d52b8[_0x91f4('0x16')],_0x37c11a);_0x26a9dd(_0x1d3296[_0x91f4('0x15')](0x1f4,_0x2d52b8[_0x91f4('0x16')]));});});};exports['UpdateVoiceQueueReport']=function(_0x27ab7f){var _0x12a5e3=this;return new Promise(function(_0x5aa035,_0xf78a14){return db[_0x91f4('0x18')][_0x91f4('0x25')](_0x27ab7f['body'],{'raw':_0x27ab7f['options']?_0x27ab7f[_0x91f4('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27ab7f[_0x91f4('0x1a')]?_0x27ab7f['options']['where']||null:null,'attributes':_0x27ab7f[_0x91f4('0x1a')]?_0x27ab7f[_0x91f4('0x1a')]['attributes']||null:null,'limit':_0x27ab7f[_0x91f4('0x1a')]?_0x27ab7f[_0x91f4('0x1a')][_0x91f4('0x26')]||null:null})[_0x91f4('0xf')](function(_0xd1666b){logger[_0x91f4('0x10')](_0x91f4('0x27'),_0x27ab7f);logger[_0x91f4('0x13')](_0x91f4('0x27'),_0x27ab7f,JSON[_0x91f4('0x14')](_0xd1666b));_0x5aa035(_0xd1666b);})['catch'](function(_0x27147a){logger[_0x91f4('0x15')]('UpdateVoiceQueueReport',_0x27147a[_0x91f4('0x16')],_0x27ab7f);_0xf78a14(_0x12a5e3[_0x91f4('0x15')](0x1f4,_0x27147a['message']));});});};
\ No newline at end of file
index 1e1e5bb..0fff0fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['./voiceQueueReport.events','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x17e5ff,_0x1a3038){var _0x1d0f39=function(_0x1f095c){while(--_0x1f095c){_0x17e5ff['push'](_0x17e5ff['shift']());}};_0x1d0f39(++_0x1a3038);}(_0x5fdc,0xcb));var _0xc5fd=function(_0x165518,_0x3e63ef){_0x165518=_0x165518-0x0;var _0x3629e9=_0x5fdc[_0x165518];return _0x3629e9;};'use strict';var VoiceQueueReportEvents=require(_0xc5fd('0x0'));var events=['save','remove',_0xc5fd('0x1')];function createListener(_0x3dc4c0,_0x1e042a){return function(_0x517c4c){_0x1e042a[_0xc5fd('0x2')](_0x3dc4c0,_0x517c4c);};}function removeListener(_0x2a36a4,_0x3d4575){return function(){VoiceQueueReportEvents[_0xc5fd('0x3')](_0x2a36a4,_0x3d4575);};}exports[_0xc5fd('0x4')]=function(_0x2a2f9c){for(var _0x34d4d5=0x0,_0x2146df=events[_0xc5fd('0x5')];_0x34d4d5<_0x2146df;_0x34d4d5++){var _0x13d010=events[_0x34d4d5];var _0x494fb3=createListener(_0xc5fd('0x6')+_0x13d010,_0x2a2f9c);VoiceQueueReportEvents['on'](_0x13d010,_0x494fb3);}};
\ No newline at end of file
+var _0xac21=['length','save','remove','emit','register'];(function(_0x35387d,_0x1ba72f){var _0x3aba56=function(_0x42cd08){while(--_0x42cd08){_0x35387d['push'](_0x35387d['shift']());}};_0x3aba56(++_0x1ba72f);}(_0xac21,0x1af));var _0x1ac2=function(_0x3f45de,_0xf53d3d){_0x3f45de=_0x3f45de-0x0;var _0x59d60d=_0xac21[_0x3f45de];return _0x59d60d;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x1ac2('0x0'),_0x1ac2('0x1'),'update'];function createListener(_0x15b8ba,_0x59edcc){return function(_0x466aa0){_0x59edcc[_0x1ac2('0x2')](_0x15b8ba,_0x466aa0);};}function removeListener(_0x5b81be,_0x454461){return function(){VoiceQueueReportEvents['removeListener'](_0x5b81be,_0x454461);};}exports[_0x1ac2('0x3')]=function(_0x21a183){for(var _0x2c4cf2=0x0,_0x189ed3=events[_0x1ac2('0x4')];_0x2c4cf2<_0x189ed3;_0x2c4cf2++){var _0x266522=events[_0x2c4cf2];var _0xade0c4=createListener('voiceQueueReport:'+_0x266522,_0x21a183);VoiceQueueReportEvents['on'](_0x266522,_0xade0c4);}};
\ No newline at end of file
index 474d874..9b2855b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9366=['show','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0x9366,0x14a));var _0x6936=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9366[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x6936('0x0'));var path=require(_0x6936('0x1'));var timeout=require(_0x6936('0x2'));var express=require(_0x6936('0x3'));var router=express[_0x6936('0x4')]();var fs_extra=require(_0x6936('0x5'));var auth=require(_0x6936('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6936('0x7'));var controller=require(_0x6936('0x8'));router[_0x6936('0x9')]('/',auth[_0x6936('0xa')](),controller[_0x6936('0xb')]);router['get']('/:id',auth[_0x6936('0xa')](),controller[_0x6936('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x6936('0xd')](_0x6936('0xe'),auth[_0x6936('0xa')](),controller[_0x6936('0xf')]);router[_0x6936('0x10')]('/:id',auth[_0x6936('0xa')](),controller['destroy']);module[_0x6936('0x11')]=router;
\ No newline at end of file
+var _0xc932=['index','/:id','show','create','put','update','delete','multer','connect-timeout','fs-extra','../../components/auth/service','get','isAuthenticated'];(function(_0x2ef973,_0x26dc30){var _0x545ba6=function(_0x1a4e4b){while(--_0x1a4e4b){_0x2ef973['push'](_0x2ef973['shift']());}};_0x545ba6(++_0x26dc30);}(_0xc932,0x18d));var _0x2c93=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xc932[_0x4d613c];return _0x301fe3;};'use strict';var multer=require(_0x2c93('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2c93('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2c93('0x2'));var auth=require(_0x2c93('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceQueuesLog.controller');router[_0x2c93('0x4')]('/',auth[_0x2c93('0x5')](),controller[_0x2c93('0x6')]);router['get'](_0x2c93('0x7'),auth[_0x2c93('0x5')](),controller[_0x2c93('0x8')]);router['post']('/',auth[_0x2c93('0x5')](),controller[_0x2c93('0x9')]);router[_0x2c93('0xa')](_0x2c93('0x7'),auth[_0x2c93('0x5')](),controller[_0x2c93('0xb')]);router[_0x2c93('0xc')]('/:id',auth[_0x2c93('0x5')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2acfbb6..3962f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fce=['STRING','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports'];(function(_0x5e6cb8,_0x1d1eb5){var _0x41754f=function(_0x5ef4ef){while(--_0x5ef4ef){_0x5e6cb8['push'](_0x5e6cb8['shift']());}};_0x41754f(++_0x1d1eb5);}(_0x9fce,0x99));var _0xe9fc=function(_0x5d88c0,_0x5d7d83){_0x5d88c0=_0x5d88c0-0x0;var _0x1b40f0=_0x9fce[_0x5d88c0];return _0x1b40f0;};'use strict';var Sequelize=require(_0xe9fc('0x0'));var moment=require(_0xe9fc('0x1'));module[_0xe9fc('0x2')]={'time':{'type':Sequelize[_0xe9fc('0x3')]},'callid':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0xe9fc('0x4')](_0xe9fc('0x5'))}};
\ No newline at end of file
+var _0x01db=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x01db,0x171));var _0xb01d=function(_0x57d262,_0x439ebb){_0x57d262=_0x57d262-0x0;var _0x2db226=_0x01db[_0x57d262];return _0x2db226;};'use strict';var Sequelize=require(_0xb01d('0x0'));var moment=require('moment');module['exports']={'time':{'type':Sequelize[_0xb01d('0x1')]},'callid':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xb01d('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xb01d('0x2')],'allowNull':![],'defaultValue':moment()[_0xb01d('0x3')](_0xb01d('0x4'))}};
\ No newline at end of file
index 0a1d886..25f48c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1a1=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','VoiceQueuesLog','count','includeAll','rows','catch','params','keys','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','set','apply','reject','update','then','destroy','send','index','map','rawAttributes','fieldName','key','model','name','query','filters','intersection'];(function(_0x411fb2,_0x3ffec0){var _0xb804a3=function(_0x52107a){while(--_0x52107a){_0x411fb2['push'](_0x411fb2['shift']());}};_0xb804a3(++_0x3ffec0);}(_0xf1a1,0x1c2));var _0x1f1a=function(_0x56b285,_0x4449a2){_0x56b285=_0x56b285-0x0;var _0x261f91=_0xf1a1[_0x56b285];return _0x261f91;};'use strict';var emlformat=require(_0x1f1a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1f1a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1f1a('0x2'));var moment=require(_0x1f1a('0x3'));var BPromise=require(_0x1f1a('0x4'));var Mustache=require('mustache');var util=require(_0x1f1a('0x5'));var path=require('path');var sox=require(_0x1f1a('0x6'));var csv=require(_0x1f1a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1f1a('0x8'));var _=require(_0x1f1a('0x9'));var squel=require(_0x1f1a('0xa'));var crypto=require(_0x1f1a('0xb'));var jsforce=require(_0x1f1a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1f1a('0x7'));var querystring=require('querystring');var Papa=require(_0x1f1a('0xd'));var Redis=require(_0x1f1a('0xe'));var authService=require(_0x1f1a('0xf'));var qs=require(_0x1f1a('0x10'));var as=require(_0x1f1a('0x11'));var hardwareService=require(_0x1f1a('0x12'));var logger=require(_0x1f1a('0x13'))(_0x1f1a('0x14'));var utils=require(_0x1f1a('0x15'));var config=require(_0x1f1a('0x16'));var licenseUtil=require(_0x1f1a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40947f,_0x215dd1){_0x215dd1=_0x215dd1||0xcc;return function(_0x3ba245){if(_0x3ba245){return _0x40947f[_0x1f1a('0x18')](_0x215dd1);}return _0x40947f[_0x1f1a('0x19')](_0x215dd1)[_0x1f1a('0x1a')]();};}function respondWithResult(_0x52043c,_0x3c7947){_0x3c7947=_0x3c7947||0xc8;return function(_0x426643){if(_0x426643){return _0x52043c[_0x1f1a('0x19')](_0x3c7947)[_0x1f1a('0x1b')](_0x426643);}};}function respondWithFilteredResult(_0x5b8de7,_0x3bb3b6){return function(_0x54ca66){if(_0x54ca66){var _0x4e2bb8=typeof _0x3bb3b6[_0x1f1a('0x1c')]==='undefined'&&typeof _0x3bb3b6['limit']==='undefined';var _0x2fdf2a=_0x54ca66['count'];var _0x2f9ce0=_0x4e2bb8?0x0:_0x3bb3b6[_0x1f1a('0x1c')];var _0x2392eb=_0x4e2bb8?_0x54ca66['count']:_0x3bb3b6['offset']+_0x3bb3b6[_0x1f1a('0x1d')];var _0x142294;if(_0x2392eb>=_0x2fdf2a){_0x2392eb=_0x2fdf2a;_0x142294=0xc8;}else{_0x142294=0xce;}_0x5b8de7[_0x1f1a('0x19')](_0x142294);return _0x5b8de7[_0x1f1a('0x1e')]('Content-Range',_0x2f9ce0+'-'+_0x2392eb+'/'+_0x2fdf2a)['json'](_0x54ca66);}return null;};}function patchUpdates(_0x3163f2){return function(_0x14f34f){try{jsonpatch[_0x1f1a('0x1f')](_0x14f34f,_0x3163f2,!![]);}catch(_0x250637){return BPromise[_0x1f1a('0x20')](_0x250637);}return _0x14f34f['save']();};}function saveUpdates(_0x1e1777,_0x1e5f2f){return function(_0x47b001){if(_0x47b001){return _0x47b001[_0x1f1a('0x21')](_0x1e1777)[_0x1f1a('0x22')](function(_0x93c87d){return _0x93c87d;});}return null;};}function removeEntity(_0x212526,_0x26136d){return function(_0x1ba3de){if(_0x1ba3de){return _0x1ba3de[_0x1f1a('0x23')]()['then'](function(){_0x212526['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c9698,_0x1df74d){return function(_0x293aa0){if(!_0x293aa0){_0x3c9698['sendStatus'](0x194);}return _0x293aa0;};}function handleError(_0x2e9f21,_0x27997c){_0x27997c=_0x27997c||0x1f4;return function(_0x39f109){logger['error'](_0x39f109['stack']);if(_0x39f109['name']){delete _0x39f109['name'];}_0x2e9f21[_0x1f1a('0x19')](_0x27997c)[_0x1f1a('0x24')](_0x39f109);};}exports[_0x1f1a('0x25')]=function(_0x546f96,_0x595ba1){var _0xc8ec51={},_0x4c0c59={},_0x281cd8={'count':0x0,'rows':[]};var _0x458514=_[_0x1f1a('0x26')](db['VoiceQueuesLog'][_0x1f1a('0x27')],function(_0x4e6a3f){return{'name':_0x4e6a3f[_0x1f1a('0x28')],'type':_0x4e6a3f['type'][_0x1f1a('0x29')]};});_0x4c0c59[_0x1f1a('0x2a')]=_[_0x1f1a('0x26')](_0x458514,_0x1f1a('0x2b'));_0x4c0c59['query']=_['keys'](_0x546f96[_0x1f1a('0x2c')]);_0x4c0c59[_0x1f1a('0x2d')]=_[_0x1f1a('0x2e')](_0x4c0c59[_0x1f1a('0x2a')],_0x4c0c59['query']);_0xc8ec51[_0x1f1a('0x2f')]=_[_0x1f1a('0x2e')](_0x4c0c59[_0x1f1a('0x2a')],qs[_0x1f1a('0x30')](_0x546f96['query']['fields']));_0xc8ec51[_0x1f1a('0x2f')]=_0xc8ec51[_0x1f1a('0x2f')][_0x1f1a('0x31')]?_0xc8ec51[_0x1f1a('0x2f')]:_0x4c0c59[_0x1f1a('0x2a')];if(!_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x32')](_0x1f1a('0x33'))){_0xc8ec51[_0x1f1a('0x1d')]=qs[_0x1f1a('0x1d')](_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x1d')]);_0xc8ec51[_0x1f1a('0x1c')]=qs[_0x1f1a('0x1c')](_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x1c')]);}_0xc8ec51[_0x1f1a('0x34')]=qs[_0x1f1a('0x35')](_0x546f96['query'][_0x1f1a('0x35')]);_0xc8ec51[_0x1f1a('0x36')]=qs[_0x1f1a('0x2d')](_[_0x1f1a('0x37')](_0x546f96[_0x1f1a('0x2c')],_0x4c0c59[_0x1f1a('0x2d')]),_0x458514);if(_0x546f96[_0x1f1a('0x2c')]['filter']){_0xc8ec51[_0x1f1a('0x36')]=_[_0x1f1a('0x38')](_0xc8ec51[_0x1f1a('0x36')],{'$or':_[_0x1f1a('0x26')](_0x458514,function(_0x3e1e94){if(_0x3e1e94[_0x1f1a('0x39')]!==_0x1f1a('0x3a')){var _0x5c4222={};_0x5c4222[_0x3e1e94[_0x1f1a('0x2b')]]={'$like':'%'+_0x546f96['query'][_0x1f1a('0x3b')]+'%'};return _0x5c4222;}})});}_0xc8ec51=_['merge']({},_0xc8ec51,_0x546f96[_0x1f1a('0x3c')]);var _0x5ccb5b={'where':_0xc8ec51[_0x1f1a('0x36')]};return db[_0x1f1a('0x3d')]['count'](_0x5ccb5b)[_0x1f1a('0x22')](function(_0x22fac8){_0x281cd8[_0x1f1a('0x3e')]=_0x22fac8;if(_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x3f')]){_0xc8ec51['include']=[{'all':!![]}];}return db[_0x1f1a('0x3d')]['findAll'](_0xc8ec51);})[_0x1f1a('0x22')](function(_0x3b1008){_0x281cd8[_0x1f1a('0x40')]=_0x3b1008;return _0x281cd8;})['then'](respondWithFilteredResult(_0x595ba1,_0xc8ec51))[_0x1f1a('0x41')](handleError(_0x595ba1,null));};exports['show']=function(_0x27f6d4,_0x372b08){var _0x4c3c3c={'raw':!![],'where':{'id':_0x27f6d4[_0x1f1a('0x42')]['id']}},_0x469d56={};_0x469d56[_0x1f1a('0x2a')]=_[_0x1f1a('0x43')](db[_0x1f1a('0x3d')][_0x1f1a('0x27')]);_0x469d56[_0x1f1a('0x2c')]=_[_0x1f1a('0x43')](_0x27f6d4[_0x1f1a('0x2c')]);_0x469d56[_0x1f1a('0x2d')]=_['intersection'](_0x469d56[_0x1f1a('0x2a')],_0x469d56['query']);_0x4c3c3c[_0x1f1a('0x2f')]=_[_0x1f1a('0x2e')](_0x469d56['model'],qs[_0x1f1a('0x30')](_0x27f6d4[_0x1f1a('0x2c')]['fields']));_0x4c3c3c[_0x1f1a('0x2f')]=_0x4c3c3c[_0x1f1a('0x2f')][_0x1f1a('0x31')]?_0x4c3c3c[_0x1f1a('0x2f')]:_0x469d56[_0x1f1a('0x2a')];if(_0x27f6d4['query'][_0x1f1a('0x3f')]){_0x4c3c3c['include']=[{'all':!![]}];}_0x4c3c3c=_[_0x1f1a('0x38')]({},_0x4c3c3c,_0x27f6d4[_0x1f1a('0x3c')]);return db[_0x1f1a('0x3d')]['find'](_0x4c3c3c)['then'](handleEntityNotFound(_0x372b08,null))['then'](respondWithResult(_0x372b08,null))[_0x1f1a('0x41')](handleError(_0x372b08,null));};exports[_0x1f1a('0x44')]=function(_0x117393,_0x15904b){return db[_0x1f1a('0x3d')][_0x1f1a('0x44')](_0x117393[_0x1f1a('0x45')],{})[_0x1f1a('0x22')](respondWithResult(_0x15904b,0xc9))[_0x1f1a('0x41')](handleError(_0x15904b,null));};exports[_0x1f1a('0x21')]=function(_0x3942c8,_0x500d19){if(_0x3942c8[_0x1f1a('0x45')]['id']){delete _0x3942c8['body']['id'];}return db[_0x1f1a('0x3d')][_0x1f1a('0x46')]({'where':{'id':_0x3942c8[_0x1f1a('0x42')]['id']}})[_0x1f1a('0x22')](handleEntityNotFound(_0x500d19,null))['then'](saveUpdates(_0x3942c8[_0x1f1a('0x45')],null))[_0x1f1a('0x22')](respondWithResult(_0x500d19,null))[_0x1f1a('0x41')](handleError(_0x500d19,null));};exports[_0x1f1a('0x23')]=function(_0x5d90af,_0x1e8d47){return db[_0x1f1a('0x3d')][_0x1f1a('0x46')]({'where':{'id':_0x5d90af[_0x1f1a('0x42')]['id']}})[_0x1f1a('0x22')](handleEntityNotFound(_0x1e8d47,null))[_0x1f1a('0x22')](removeEntity(_0x1e8d47,null))[_0x1f1a('0x41')](handleError(_0x1e8d47,null));};
\ No newline at end of file
+var _0xa144=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','error','stack','name','index','map','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','options','VoiceQueuesLog','includeAll','include','rows','catch','show','rawAttributes','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3c4cdb,_0x24f9d4){var _0x36935a=function(_0x392443){while(--_0x392443){_0x3c4cdb['push'](_0x3c4cdb['shift']());}};_0x36935a(++_0x24f9d4);}(_0xa144,0xcc));var _0x4a14=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa144[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0x4a14('0x0'));var rimraf=require(_0x4a14('0x1'));var zipdir=require(_0x4a14('0x2'));var jsonpatch=require(_0x4a14('0x3'));var rp=require('request-promise');var moment=require(_0x4a14('0x4'));var BPromise=require(_0x4a14('0x5'));var Mustache=require(_0x4a14('0x6'));var util=require(_0x4a14('0x7'));var path=require('path');var sox=require(_0x4a14('0x8'));var csv=require('to-csv');var ejs=require(_0x4a14('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4a14('0xa'));var squel=require(_0x4a14('0xb'));var crypto=require(_0x4a14('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x4a14('0xd'));var toCsv=require(_0x4a14('0xe'));var querystring=require(_0x4a14('0xf'));var Papa=require(_0x4a14('0x10'));var Redis=require(_0x4a14('0x11'));var authService=require(_0x4a14('0x12'));var qs=require(_0x4a14('0x13'));var as=require(_0x4a14('0x14'));var hardwareService=require(_0x4a14('0x15'));var logger=require(_0x4a14('0x16'))(_0x4a14('0x17'));var utils=require(_0x4a14('0x18'));var config=require(_0x4a14('0x19'));var licenseUtil=require(_0x4a14('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43c095,_0x10b2b5){_0x10b2b5=_0x10b2b5||0xcc;return function(_0x1ead80){if(_0x1ead80){return _0x43c095[_0x4a14('0x1b')](_0x10b2b5);}return _0x43c095[_0x4a14('0x1c')](_0x10b2b5)[_0x4a14('0x1d')]();};}function respondWithResult(_0x53a14d,_0x81830a){_0x81830a=_0x81830a||0xc8;return function(_0x42fa52){if(_0x42fa52){return _0x53a14d['status'](_0x81830a)[_0x4a14('0x1e')](_0x42fa52);}};}function respondWithFilteredResult(_0x59274c,_0x199071){return function(_0x383357){if(_0x383357){var _0x493cfe=typeof _0x199071['offset']==='undefined'&&typeof _0x199071[_0x4a14('0x1f')]===_0x4a14('0x20');var _0x249833=_0x383357[_0x4a14('0x21')];var _0x28756a=_0x493cfe?0x0:_0x199071['offset'];var _0x523e0b=_0x493cfe?_0x383357[_0x4a14('0x21')]:_0x199071[_0x4a14('0x22')]+_0x199071['limit'];var _0x133047;if(_0x523e0b>=_0x249833){_0x523e0b=_0x249833;_0x133047=0xc8;}else{_0x133047=0xce;}_0x59274c[_0x4a14('0x1c')](_0x133047);return _0x59274c[_0x4a14('0x23')]('Content-Range',_0x28756a+'-'+_0x523e0b+'/'+_0x249833)[_0x4a14('0x1e')](_0x383357);}return null;};}function patchUpdates(_0x2cb089){return function(_0x2fc474){try{jsonpatch[_0x4a14('0x24')](_0x2fc474,_0x2cb089,!![]);}catch(_0x29f213){return BPromise[_0x4a14('0x25')](_0x29f213);}return _0x2fc474[_0x4a14('0x26')]();};}function saveUpdates(_0x4064bf,_0x478d34){return function(_0x3de12b){if(_0x3de12b){return _0x3de12b[_0x4a14('0x27')](_0x4064bf)['then'](function(_0xebbd2c){return _0xebbd2c;});}return null;};}function removeEntity(_0x1bd837,_0x4328bb){return function(_0x11f5e5){if(_0x11f5e5){return _0x11f5e5['destroy']()[_0x4a14('0x28')](function(){_0x1bd837['status'](0xcc)[_0x4a14('0x1d')]();});}};}function handleEntityNotFound(_0x113281,_0x18633d){return function(_0x4ec5a1){if(!_0x4ec5a1){_0x113281[_0x4a14('0x1b')](0x194);}return _0x4ec5a1;};}function handleError(_0x46a070,_0x5d444f){_0x5d444f=_0x5d444f||0x1f4;return function(_0x553036){logger[_0x4a14('0x29')](_0x553036[_0x4a14('0x2a')]);if(_0x553036[_0x4a14('0x2b')]){delete _0x553036['name'];}_0x46a070['status'](_0x5d444f)['send'](_0x553036);};}exports[_0x4a14('0x2c')]=function(_0x3349b6,_0x31db7b){var _0x590390={},_0x1f5a6f={},_0x16e8e0={'count':0x0,'rows':[]};var _0x18f07a=_[_0x4a14('0x2d')](db['VoiceQueuesLog']['rawAttributes'],function(_0x4b7741){return{'name':_0x4b7741[_0x4a14('0x2e')],'type':_0x4b7741['type'][_0x4a14('0x2f')]};});_0x1f5a6f[_0x4a14('0x30')]=_[_0x4a14('0x2d')](_0x18f07a,_0x4a14('0x2b'));_0x1f5a6f[_0x4a14('0x31')]=_[_0x4a14('0x32')](_0x3349b6[_0x4a14('0x31')]);_0x1f5a6f['filters']=_[_0x4a14('0x33')](_0x1f5a6f[_0x4a14('0x30')],_0x1f5a6f['query']);_0x590390[_0x4a14('0x34')]=_[_0x4a14('0x33')](_0x1f5a6f['model'],qs[_0x4a14('0x35')](_0x3349b6[_0x4a14('0x31')]['fields']));_0x590390[_0x4a14('0x34')]=_0x590390[_0x4a14('0x34')][_0x4a14('0x36')]?_0x590390[_0x4a14('0x34')]:_0x1f5a6f[_0x4a14('0x30')];if(!_0x3349b6[_0x4a14('0x31')][_0x4a14('0x37')]('nolimit')){_0x590390[_0x4a14('0x1f')]=qs['limit'](_0x3349b6[_0x4a14('0x31')][_0x4a14('0x1f')]);_0x590390[_0x4a14('0x22')]=qs['offset'](_0x3349b6[_0x4a14('0x31')]['offset']);}_0x590390[_0x4a14('0x38')]=qs[_0x4a14('0x39')](_0x3349b6[_0x4a14('0x31')][_0x4a14('0x39')]);_0x590390[_0x4a14('0x3a')]=qs[_0x4a14('0x3b')](_['pick'](_0x3349b6[_0x4a14('0x31')],_0x1f5a6f[_0x4a14('0x3b')]),_0x18f07a);if(_0x3349b6[_0x4a14('0x31')]['filter']){_0x590390['where']=_[_0x4a14('0x3c')](_0x590390[_0x4a14('0x3a')],{'$or':_[_0x4a14('0x2d')](_0x18f07a,function(_0x539569){if(_0x539569['type']!==_0x4a14('0x3d')){var _0xe845e2={};_0xe845e2[_0x539569['name']]={'$like':'%'+_0x3349b6['query']['filter']+'%'};return _0xe845e2;}})});}_0x590390=_['merge']({},_0x590390,_0x3349b6[_0x4a14('0x3e')]);var _0x1448d8={'where':_0x590390[_0x4a14('0x3a')]};return db[_0x4a14('0x3f')][_0x4a14('0x21')](_0x1448d8)[_0x4a14('0x28')](function(_0x2a38f1){_0x16e8e0[_0x4a14('0x21')]=_0x2a38f1;if(_0x3349b6['query'][_0x4a14('0x40')]){_0x590390[_0x4a14('0x41')]=[{'all':!![]}];}return db[_0x4a14('0x3f')]['findAll'](_0x590390);})[_0x4a14('0x28')](function(_0x341bf4){_0x16e8e0[_0x4a14('0x42')]=_0x341bf4;return _0x16e8e0;})['then'](respondWithFilteredResult(_0x31db7b,_0x590390))[_0x4a14('0x43')](handleError(_0x31db7b,null));};exports[_0x4a14('0x44')]=function(_0x7a4dd1,_0xa2c0b8){var _0xf34d79={'raw':!![],'where':{'id':_0x7a4dd1['params']['id']}},_0x3b1115={};_0x3b1115[_0x4a14('0x30')]=_[_0x4a14('0x32')](db['VoiceQueuesLog'][_0x4a14('0x45')]);_0x3b1115[_0x4a14('0x31')]=_[_0x4a14('0x32')](_0x7a4dd1['query']);_0x3b1115['filters']=_[_0x4a14('0x33')](_0x3b1115[_0x4a14('0x30')],_0x3b1115[_0x4a14('0x31')]);_0xf34d79[_0x4a14('0x34')]=_['intersection'](_0x3b1115[_0x4a14('0x30')],qs[_0x4a14('0x35')](_0x7a4dd1[_0x4a14('0x31')][_0x4a14('0x35')]));_0xf34d79['attributes']=_0xf34d79[_0x4a14('0x34')][_0x4a14('0x36')]?_0xf34d79[_0x4a14('0x34')]:_0x3b1115['model'];if(_0x7a4dd1[_0x4a14('0x31')]['includeAll']){_0xf34d79[_0x4a14('0x41')]=[{'all':!![]}];}_0xf34d79=_[_0x4a14('0x3c')]({},_0xf34d79,_0x7a4dd1[_0x4a14('0x3e')]);return db[_0x4a14('0x3f')][_0x4a14('0x46')](_0xf34d79)[_0x4a14('0x28')](handleEntityNotFound(_0xa2c0b8,null))['then'](respondWithResult(_0xa2c0b8,null))[_0x4a14('0x43')](handleError(_0xa2c0b8,null));};exports[_0x4a14('0x47')]=function(_0x4c483d,_0x18d192){return db[_0x4a14('0x3f')][_0x4a14('0x47')](_0x4c483d['body'],{})[_0x4a14('0x28')](respondWithResult(_0x18d192,0xc9))[_0x4a14('0x43')](handleError(_0x18d192,null));};exports[_0x4a14('0x27')]=function(_0x4bbdc6,_0x2caa9d){if(_0x4bbdc6[_0x4a14('0x48')]['id']){delete _0x4bbdc6[_0x4a14('0x48')]['id'];}return db[_0x4a14('0x3f')][_0x4a14('0x46')]({'where':{'id':_0x4bbdc6[_0x4a14('0x49')]['id']}})[_0x4a14('0x28')](handleEntityNotFound(_0x2caa9d,null))[_0x4a14('0x28')](saveUpdates(_0x4bbdc6['body'],null))[_0x4a14('0x28')](respondWithResult(_0x2caa9d,null))[_0x4a14('0x43')](handleError(_0x2caa9d,null));};exports[_0x4a14('0x4a')]=function(_0x1b714a,_0x1f0ca0){return db[_0x4a14('0x3f')]['find']({'where':{'id':_0x1b714a[_0x4a14('0x49')]['id']}})[_0x4a14('0x28')](handleEntityNotFound(_0x1f0ca0,null))['then'](removeEntity(_0x1f0ca0,null))['catch'](handleError(_0x1f0ca0,null));};
\ No newline at end of file
index 17e8860..98e705c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49cb=['path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4fd017,_0x2b96e2){var _0x8c376b=function(_0xca2887){while(--_0xca2887){_0x4fd017['push'](_0x4fd017['shift']());}};_0x8c376b(++_0x2b96e2);}(_0x49cb,0x1e6));var _0xb49c=function(_0x4b0bb1,_0x51e0a9){_0x4b0bb1=_0x4b0bb1-0x0;var _0x496740=_0x49cb[_0x4b0bb1];return _0x496740;};'use strict';var _=require(_0xb49c('0x0'));var util=require(_0xb49c('0x1'));var logger=require(_0xb49c('0x2'))(_0xb49c('0x3'));var moment=require(_0xb49c('0x4'));var BPromise=require(_0xb49c('0x5'));var rp=require(_0xb49c('0x6'));var fs=require('fs');var path=require(_0xb49c('0x7'));var rimraf=require(_0xb49c('0x8'));var config=require(_0xb49c('0x9'));var attributes=require(_0xb49c('0xa'));module[_0xb49c('0xb')]=function(_0x32f52b,_0x5eee6f){return _0x32f52b[_0xb49c('0xc')](_0xb49c('0xd'),attributes,{'tableName':_0xb49c('0xe'),'paranoid':![],'indexes':[{'name':_0xb49c('0xf'),'fields':[_0xb49c('0x10'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0xb763=['request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event','dtm','lodash','util','../../config/logger','api'];(function(_0x4f1256,_0x50ee15){var _0x50d1c3=function(_0x584767){while(--_0x584767){_0x4f1256['push'](_0x4f1256['shift']());}};_0x50d1c3(++_0x50ee15);}(_0xb763,0x155));var _0x3b76=function(_0x3c45b9,_0x43c04b){_0x3c45b9=_0x3c45b9-0x0;var _0x325084=_0xb763[_0x3c45b9];return _0x325084;};'use strict';var _=require(_0x3b76('0x0'));var util=require(_0x3b76('0x1'));var logger=require(_0x3b76('0x2'))(_0x3b76('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3b76('0x4'));var fs=require('fs');var path=require(_0x3b76('0x5'));var rimraf=require(_0x3b76('0x6'));var config=require(_0x3b76('0x7'));var attributes=require(_0x3b76('0x8'));module[_0x3b76('0x9')]=function(_0x54f432,_0x4c5a23){return _0x54f432[_0x3b76('0xa')](_0x3b76('0xb'),attributes,{'tableName':_0x3b76('0xc'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x3b76('0xd'),_0x3b76('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 11159f5..ed43762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8fd=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','error','message','result','catch','util','moment'];(function(_0x375325,_0x57a850){var _0x228f57=function(_0x2ad744){while(--_0x2ad744){_0x375325['push'](_0x375325['shift']());}};_0x228f57(++_0x57a850);}(_0xa8fd,0x17a));var _0xda8f=function(_0x503ba7,_0xe5e1b5){_0x503ba7=_0x503ba7-0x0;var _0x221f30=_0xa8fd[_0x503ba7];return _0x221f30;};'use strict';var _=require('lodash');var util=require(_0xda8f('0x0'));var moment=require(_0xda8f('0x1'));var BPromise=require(_0xda8f('0x2'));var rs=require(_0xda8f('0x3'));var fs=require('fs');var Redis=require(_0xda8f('0x4'));var db=require(_0xda8f('0x5'))['db'];var utils=require(_0xda8f('0x6'));var logger=require(_0xda8f('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xda8f('0x8'));var client=jayson[_0xda8f('0x9')][_0xda8f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e9bf2,_0x53ef1f,_0x5ee116){return new BPromise(function(_0x4c248e,_0x3f1f6b){return client[_0xda8f('0xb')](_0x5e9bf2,_0x5ee116)[_0xda8f('0xc')](function(_0x5f23b0){logger[_0xda8f('0xd')](_0xda8f('0xe'),_0x53ef1f,_0xda8f('0xf'));logger['debug']('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x53ef1f,_0xda8f('0xf'),JSON['stringify'](_0x5f23b0));if(_0x5f23b0[_0xda8f('0x10')]){if(_0x5f23b0[_0xda8f('0x10')]['code']===0x1f4){logger[_0xda8f('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x53ef1f,_0x5f23b0[_0xda8f('0x10')][_0xda8f('0x11')]);return _0x3f1f6b(_0x5f23b0[_0xda8f('0x10')][_0xda8f('0x11')]);}logger[_0xda8f('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x53ef1f,_0x5f23b0[_0xda8f('0x10')]['message']);return _0x4c248e(_0x5f23b0[_0xda8f('0x10')]['message']);}else{logger[_0xda8f('0xd')](_0xda8f('0xe'),_0x53ef1f,_0xda8f('0xf'));_0x4c248e(_0x5f23b0[_0xda8f('0x12')][_0xda8f('0x11')]);}})[_0xda8f('0x13')](function(_0x3194d2){logger[_0xda8f('0x10')](_0xda8f('0xe'),_0x53ef1f,_0x3194d2);_0x3f1f6b(_0x3194d2);});});}
\ No newline at end of file
+var _0xea70=['../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','randomstring','../../mysqldb'];(function(_0x2965d6,_0x4f3c54){var _0x122ef7=function(_0x3f31a6){while(--_0x3f31a6){_0x2965d6['push'](_0x2965d6['shift']());}};_0x122ef7(++_0x4f3c54);}(_0xea70,0x175));var _0x0ea7=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xea70[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x0ea7('0x0'));var util=require(_0x0ea7('0x1'));var moment=require(_0x0ea7('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ea7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0ea7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0ea7('0x5'))(_0x0ea7('0x6'));var config=require(_0x0ea7('0x7'));var jayson=require(_0x0ea7('0x8'));var client=jayson[_0x0ea7('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x144497,_0x1ebefe,_0x51b516){return new BPromise(function(_0x48dedd,_0xc97410){return client['request'](_0x144497,_0x51b516)[_0x0ea7('0xa')](function(_0x107f04){logger[_0x0ea7('0xb')](_0x0ea7('0xc'),_0x1ebefe,'request\x20sent');logger[_0x0ea7('0xd')](_0x0ea7('0xe'),_0x1ebefe,_0x0ea7('0xf'),JSON[_0x0ea7('0x10')](_0x107f04));if(_0x107f04[_0x0ea7('0x11')]){if(_0x107f04['error'][_0x0ea7('0x12')]===0x1f4){logger[_0x0ea7('0x11')](_0x0ea7('0xc'),_0x1ebefe,_0x107f04['error']['message']);return _0xc97410(_0x107f04['error'][_0x0ea7('0x13')]);}logger[_0x0ea7('0x11')](_0x0ea7('0xc'),_0x1ebefe,_0x107f04[_0x0ea7('0x11')]['message']);return _0x48dedd(_0x107f04['error']['message']);}else{logger[_0x0ea7('0xb')](_0x0ea7('0xc'),_0x1ebefe,_0x0ea7('0xf'));_0x48dedd(_0x107f04['result']['message']);}})[_0x0ea7('0x14')](function(_0x2aa4e9){logger[_0x0ea7('0x11')](_0x0ea7('0xc'),_0x1ebefe,_0x2aa4e9);_0xc97410(_0x2aa4e9);});});}
\ No newline at end of file
index 9f6e93e..f881051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd234=['./voiceRecording.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','post','runTranscribe','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2af5ec,_0x5cf1f8){var _0xd144aa=function(_0x1a1c81){while(--_0x1a1c81){_0x2af5ec['push'](_0x2af5ec['shift']());}};_0xd144aa(++_0x5cf1f8);}(_0xd234,0xe1));var _0x4d23=function(_0x3f3062,_0x82c574){_0x3f3062=_0x3f3062-0x0;var _0x22afe0=_0xd234[_0x3f3062];return _0x22afe0;};'use strict';var multer=require(_0x4d23('0x0'));var util=require(_0x4d23('0x1'));var path=require(_0x4d23('0x2'));var timeout=require(_0x4d23('0x3'));var express=require(_0x4d23('0x4'));var router=express[_0x4d23('0x5')]();var fs_extra=require(_0x4d23('0x6'));var auth=require(_0x4d23('0x7'));var interaction=require(_0x4d23('0x8'));var config=require('../../config/environment');var controller=require(_0x4d23('0x9'));router['get']('/',auth[_0x4d23('0xa')](),controller[_0x4d23('0xb')]);router[_0x4d23('0xc')](_0x4d23('0xd'),auth[_0x4d23('0xa')](),controller[_0x4d23('0xe')]);router['get'](_0x4d23('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x4d23('0xc')](_0x4d23('0x10'),auth[_0x4d23('0xa')](),controller[_0x4d23('0x11')]);router[_0x4d23('0xc')](_0x4d23('0x12'),controller[_0x4d23('0x13')]);router[_0x4d23('0xc')](_0x4d23('0x14'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0x4d23('0x15')]('/',auth[_0x4d23('0xa')](),controller['create']);router[_0x4d23('0x15')](_0x4d23('0x14'),auth[_0x4d23('0xa')](),controller[_0x4d23('0x16')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4d23('0x17')]);router[_0x4d23('0x18')]('/:id',auth[_0x4d23('0xa')](),controller['destroy']);module[_0x4d23('0x19')]=router;
\ No newline at end of file
+var _0x197e=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','show','/:id/download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0xbeb808,_0x881ddf){var _0x5d6909=function(_0x37d652){while(--_0x37d652){_0xbeb808['push'](_0xbeb808['shift']());}};_0x5d6909(++_0x881ddf);}(_0x197e,0x1e8));var _0xe197=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x197e[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xe197('0x0'));var util=require('util');var path=require(_0xe197('0x1'));var timeout=require(_0xe197('0x2'));var express=require(_0xe197('0x3'));var router=express[_0xe197('0x4')]();var fs_extra=require(_0xe197('0x5'));var auth=require(_0xe197('0x6'));var interaction=require(_0xe197('0x7'));var config=require(_0xe197('0x8'));var controller=require('./voiceRecording.controller');router[_0xe197('0x9')]('/',auth[_0xe197('0xa')](),controller['index']);router[_0xe197('0x9')](_0xe197('0xb'),auth[_0xe197('0xa')](),controller['describe']);router['get'](_0xe197('0xc'),auth[_0xe197('0xa')](),controller[_0xe197('0xd')]);router[_0xe197('0x9')](_0xe197('0xe'),auth[_0xe197('0xa')](),controller['download']);router[_0xe197('0x9')](_0xe197('0xf'),controller['downloads']);router[_0xe197('0x9')](_0xe197('0x10'),auth[_0xe197('0xa')](),controller[_0xe197('0x11')]);router[_0xe197('0x12')]('/',auth[_0xe197('0xa')](),controller[_0xe197('0x13')]);router[_0xe197('0x12')](_0xe197('0x10'),auth[_0xe197('0xa')](),controller[_0xe197('0x14')]);router[_0xe197('0x15')](_0xe197('0xc'),auth[_0xe197('0xa')](),controller[_0xe197('0x16')]);router[_0xe197('0x17')]('/:id',auth[_0xe197('0xa')](),controller[_0xe197('0x18')]);module[_0xe197('0x19')]=router;
\ No newline at end of file
index cb993cd..dd61413 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(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 ed981d0..43c573b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cfb=['Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','fileText','root','/server/files/transcribes/transcribe_','.txt','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','end','sendStatus','error','stack','name','index','map','VoiceRecording','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','length','options','find','catch','create','body','describe','download','uniqueid','value','format','existsSync','decryptFile','secrets','recording','Sequelize','filename','extname','unlink','message','VoiceRecording\x20not\x20found','send','Not\x20found','downloads','../../components/encryptor','sequelize','MD5','col','token','$and','push','ValidationError','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Setting','transcribe','transcribeAccountId','transcribeRegion','language','bucket'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x9cfb,0x14d));var _0xb9cf=function(_0x3bde45,_0x7da7a8){_0x3bde45=_0x3bde45-0x0;var _0x3bddf9=_0x9cfb[_0x3bde45];return _0x3bddf9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb9cf('0x0'));var jsonpatch=require(_0xb9cf('0x1'));var rp=require(_0xb9cf('0x2'));var moment=require('moment');var BPromise=require(_0xb9cf('0x3'));var Mustache=require(_0xb9cf('0x4'));var util=require(_0xb9cf('0x5'));var path=require('path');var sox=require(_0xb9cf('0x6'));var csv=require(_0xb9cf('0x7'));var ejs=require(_0xb9cf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb9cf('0x9'));var squel=require('squel');var crypto=require(_0xb9cf('0xa'));var jsforce=require(_0xb9cf('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb9cf('0x7'));var querystring=require(_0xb9cf('0xc'));var Papa=require('papaparse');var AWS=require(_0xb9cf('0xd'));var uuidv4=require(_0xb9cf('0xe'));var Redis=require(_0xb9cf('0xf'));var authService=require(_0xb9cf('0x10'));var qs=require(_0xb9cf('0x11'));var as=require(_0xb9cf('0x12'));var hardwareService=require(_0xb9cf('0x13'));var logger=require(_0xb9cf('0x14'))(_0xb9cf('0x15'));var utils=require('../../config/utils');var config=require(_0xb9cf('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb9cf('0x17'))['db'];function respondWithStatusCode(_0x53b2aa,_0xf61a16){_0xf61a16=_0xf61a16||0xcc;return function(_0xf88422){if(_0xf88422){return _0x53b2aa['sendStatus'](_0xf61a16);}return _0x53b2aa[_0xb9cf('0x18')](_0xf61a16)['end']();};}function respondWithResult(_0x1bae30,_0x27cacd){_0x27cacd=_0x27cacd||0xc8;return function(_0x1af700){if(_0x1af700){return _0x1bae30[_0xb9cf('0x18')](_0x27cacd)['json'](_0x1af700);}};}function respondWithFilteredResult(_0x5e040c,_0x388a89){return function(_0x2a745d){if(_0x2a745d){var _0x1654bc=typeof _0x388a89[_0xb9cf('0x19')]===_0xb9cf('0x1a')&&typeof _0x388a89[_0xb9cf('0x1b')]===_0xb9cf('0x1a');var _0x1290ac=_0x2a745d[_0xb9cf('0x1c')];var _0x552abe=_0x1654bc?0x0:_0x388a89[_0xb9cf('0x19')];var _0x3cd3c9=_0x1654bc?_0x2a745d[_0xb9cf('0x1c')]:_0x388a89[_0xb9cf('0x19')]+_0x388a89['limit'];var _0x1eac9c;if(_0x3cd3c9>=_0x1290ac){_0x3cd3c9=_0x1290ac;_0x1eac9c=0xc8;}else{_0x1eac9c=0xce;}_0x5e040c[_0xb9cf('0x18')](_0x1eac9c);return _0x5e040c[_0xb9cf('0x1d')](_0xb9cf('0x1e'),_0x552abe+'-'+_0x3cd3c9+'/'+_0x1290ac)[_0xb9cf('0x1f')](_0x2a745d);}return null;};}function patchUpdates(_0x42c32b){return function(_0x2b52e7){try{jsonpatch[_0xb9cf('0x20')](_0x2b52e7,_0x42c32b,!![]);}catch(_0x3ed48d){return BPromise[_0xb9cf('0x21')](_0x3ed48d);}return _0x2b52e7[_0xb9cf('0x22')]();};}function saveUpdates(_0xe911ea,_0x52dd3d){return function(_0x47a871){if(_0x47a871){return _0x47a871[_0xb9cf('0x23')](_0xe911ea)['then'](function(_0x14b691){return _0x14b691;});}return null;};}function removeEntity(_0x1b8984,_0x5b0075){return function(_0x277eca){if(_0x277eca){return _0x277eca[_0xb9cf('0x24')]()[_0xb9cf('0x25')](function(){_0x1b8984[_0xb9cf('0x18')](0xcc)[_0xb9cf('0x26')]();});}};}function handleEntityNotFound(_0x1ce3d7,_0x2c6582){return function(_0x4978d2){if(!_0x4978d2){_0x1ce3d7[_0xb9cf('0x27')](0x194);}return _0x4978d2;};}function handleError(_0xcc1eb9,_0x433a1c){_0x433a1c=_0x433a1c||0x1f4;return function(_0x5e9eea){logger[_0xb9cf('0x28')](_0x5e9eea[_0xb9cf('0x29')]);if(_0x5e9eea[_0xb9cf('0x2a')]){delete _0x5e9eea[_0xb9cf('0x2a')];}_0xcc1eb9[_0xb9cf('0x18')](_0x433a1c)['send'](_0x5e9eea);};}exports[_0xb9cf('0x2b')]=function(_0x152470,_0x1b41ef){var _0x5cca01={},_0x4c90e0={},_0x2e8e1a={'count':0x0,'rows':[]};var _0x31d164=_[_0xb9cf('0x2c')](db[_0xb9cf('0x2d')][_0xb9cf('0x2e')],function(_0x615dcf){return{'name':_0x615dcf[_0xb9cf('0x2f')],'type':_0x615dcf['type'][_0xb9cf('0x30')]};});_0x4c90e0[_0xb9cf('0x31')]=_[_0xb9cf('0x32')](_[_0xb9cf('0x2c')](_0x31d164,_0xb9cf('0x2a')),['format']);_0x4c90e0[_0xb9cf('0x33')]=_[_0xb9cf('0x34')](_0x152470['query']);_0x4c90e0[_0xb9cf('0x35')]=_[_0xb9cf('0x36')](_0x4c90e0['model'],_0x4c90e0['query']);_0x5cca01[_0xb9cf('0x37')]=_['intersection'](_0x4c90e0['model'],qs[_0xb9cf('0x38')](_0x152470[_0xb9cf('0x33')][_0xb9cf('0x38')]));_0x5cca01['attributes']=_0x5cca01[_0xb9cf('0x37')]['length']?_0x5cca01['attributes']:_0x4c90e0[_0xb9cf('0x31')];if(!_0x152470[_0xb9cf('0x33')][_0xb9cf('0x39')](_0xb9cf('0x3a'))){_0x5cca01[_0xb9cf('0x1b')]=qs[_0xb9cf('0x1b')](_0x152470['query'][_0xb9cf('0x1b')]);_0x5cca01[_0xb9cf('0x19')]=qs[_0xb9cf('0x19')](_0x152470[_0xb9cf('0x33')][_0xb9cf('0x19')]);}_0x5cca01[_0xb9cf('0x3b')]=qs[_0xb9cf('0x3c')](_0x152470[_0xb9cf('0x33')][_0xb9cf('0x3c')]);_0x5cca01['where']=qs[_0xb9cf('0x35')](_[_0xb9cf('0x3d')](_0x152470['query'],_0x4c90e0['filters']),_0x31d164);if(_0x152470[_0xb9cf('0x33')]['filter']){_0x5cca01['where']=_['merge'](_0x5cca01[_0xb9cf('0x3e')],{'$or':_['map'](_0x31d164,function(_0x297796){if(_0x297796[_0xb9cf('0x3f')]!==_0xb9cf('0x40')){var _0x33306e={};_0x33306e[_0x297796[_0xb9cf('0x2a')]]={'$like':'%'+_0x152470['query']['filter']+'%'};return _0x33306e;}})});}_0x5cca01=_[_0xb9cf('0x41')]({},_0x5cca01,_0x152470['options']);var _0x389339={'where':_0x5cca01[_0xb9cf('0x3e')]};return db[_0xb9cf('0x2d')][_0xb9cf('0x1c')](_0x389339)[_0xb9cf('0x25')](function(_0x3e6504){_0x2e8e1a[_0xb9cf('0x1c')]=_0x3e6504;if(_0x152470[_0xb9cf('0x33')][_0xb9cf('0x42')]){_0x5cca01[_0xb9cf('0x43')]=[{'all':!![]}];}return db[_0xb9cf('0x2d')][_0xb9cf('0x44')](_0x5cca01);})[_0xb9cf('0x25')](function(_0x1eedca){_0x2e8e1a[_0xb9cf('0x45')]=_0x1eedca;return _0x2e8e1a;})['then'](respondWithFilteredResult(_0x1b41ef,_0x5cca01))['catch'](handleError(_0x1b41ef,null));};exports[_0xb9cf('0x46')]=function(_0x31d049,_0x395515){var _0x5245e5={'raw':![],'where':{'id':_0x31d049[_0xb9cf('0x47')]['id']}},_0x5435d1={};_0x5435d1[_0xb9cf('0x31')]=_[_0xb9cf('0x34')](db['VoiceRecording'][_0xb9cf('0x2e')]);_0x5435d1['query']=_[_0xb9cf('0x34')](_0x31d049[_0xb9cf('0x33')]);_0x5435d1[_0xb9cf('0x35')]=_[_0xb9cf('0x36')](_0x5435d1['model'],_0x5435d1[_0xb9cf('0x33')]);_0x5245e5[_0xb9cf('0x37')]=_[_0xb9cf('0x36')](_0x5435d1[_0xb9cf('0x31')],qs[_0xb9cf('0x38')](_0x31d049[_0xb9cf('0x33')][_0xb9cf('0x38')]));_0x5245e5[_0xb9cf('0x37')]=_0x5245e5['attributes'][_0xb9cf('0x48')]?_0x5245e5[_0xb9cf('0x37')]:_0x5435d1['model'];if(_0x31d049[_0xb9cf('0x33')][_0xb9cf('0x42')]){_0x5245e5[_0xb9cf('0x43')]=[{'all':!![]}];}_0x5245e5=_[_0xb9cf('0x41')]({},_0x5245e5,_0x31d049[_0xb9cf('0x49')]);return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')](_0x5245e5)[_0xb9cf('0x25')](handleEntityNotFound(_0x395515,null))['then'](respondWithResult(_0x395515,null))[_0xb9cf('0x4b')](handleError(_0x395515,null));};exports[_0xb9cf('0x4c')]=function(_0x5d7cfc,_0x34f799){return db[_0xb9cf('0x2d')]['create'](_0x5d7cfc[_0xb9cf('0x4d')],{})['then'](respondWithResult(_0x34f799,0xc9))[_0xb9cf('0x4b')](handleError(_0x34f799,null));};exports[_0xb9cf('0x23')]=function(_0x227e2b,_0x1eb128){if(_0x227e2b[_0xb9cf('0x4d')]['id']){delete _0x227e2b['body']['id'];}return db['VoiceRecording'][_0xb9cf('0x4a')]({'where':{'id':_0x227e2b[_0xb9cf('0x47')]['id']}})[_0xb9cf('0x25')](handleEntityNotFound(_0x1eb128,null))[_0xb9cf('0x25')](saveUpdates(_0x227e2b[_0xb9cf('0x4d')],null))[_0xb9cf('0x25')](respondWithResult(_0x1eb128,null))[_0xb9cf('0x4b')](handleError(_0x1eb128,null));};exports[_0xb9cf('0x4e')]=function(_0x2eabb4,_0x265149){return db['VoiceRecording'][_0xb9cf('0x4e')]()[_0xb9cf('0x25')](respondWithResult(_0x265149,null))[_0xb9cf('0x4b')](handleError(_0x265149,null));};exports[_0xb9cf('0x4f')]=function(_0x27f883,_0x3e6eef,_0x560bf9){var _0x1c6c4c=require('../../components/encryptor');var _0x436451=![];var _0x17a649={};if(_0x27f883[_0xb9cf('0x33')][_0xb9cf('0x3f')]&&_0x27f883['query']['type']==='uniqueid'){_0x17a649[_0xb9cf('0x50')]=_0x27f883[_0xb9cf('0x47')]['id'];}else{_0x17a649['id']=_0x27f883[_0xb9cf('0x47')]['id'];}return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')]({'where':_0x17a649,'attributes':['id',_0xb9cf('0x51')],'raw':!![]})[_0xb9cf('0x25')](handleEntityNotFound(_0x3e6eef,null))['then'](function(_0x10f10e){if(_0x10f10e){var _0x31f4c7=_0x10f10e[_0xb9cf('0x51')];var _0x4cc814=util[_0xb9cf('0x52')]('%s.cypher',_0x31f4c7);if(fs[_0xb9cf('0x53')](_0x4cc814)){_0x436451=!![];return _0x1c6c4c[_0xb9cf('0x54')](_0x4cc814,_0x31f4c7,config[_0xb9cf('0x55')][_0xb9cf('0x56')])[_0xb9cf('0x25')](function(){return _0x10f10e;});}return _0x10f10e;}})['then'](function(_0x577e45){if(_0x577e45){var _0x4175d7=_0x577e45['value'];if(!fs[_0xb9cf('0x53')](_0x4175d7)){throw new db[(_0xb9cf('0x57'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x577e45[_0xb9cf('0x58')]){return _0x3e6eef[_0xb9cf('0x4f')](_0x4175d7,_0x577e45[_0xb9cf('0x58')]+path[_0xb9cf('0x59')](_0x4175d7),function(){if(_0x436451){fs[_0xb9cf('0x5a')](_0x4175d7);}});}else{return _0x3e6eef[_0xb9cf('0x4f')](_0x4175d7,function(_0x1eb647){if(_0x436451){fs[_0xb9cf('0x5a')](_0x4175d7);}});}}})['catch'](function(_0x43f681){if(_0x43f681[_0xb9cf('0x5b')]===_0xb9cf('0x5c')){_0x3e6eef[_0xb9cf('0x18')](0x194)[_0xb9cf('0x5d')](_0xb9cf('0x5e'));}else{return handleError(_0x3e6eef,null);}});};exports[_0xb9cf('0x5f')]=function(_0x24fe5b,_0x34864b,_0x1e35d9){var _0x4cb22e=require(_0xb9cf('0x60'));var _0x3fb097=![];var _0x502175={'$and':[db['sequelize']['where'](db[_0xb9cf('0x61')]['fn'](_0xb9cf('0x62'),db[_0xb9cf('0x61')][_0xb9cf('0x63')](_0xb9cf('0x50'))),_0x24fe5b[_0xb9cf('0x33')][_0xb9cf('0x64')])]};if(_0x24fe5b[_0xb9cf('0x33')]['type']&&_0x24fe5b[_0xb9cf('0x33')][_0xb9cf('0x3f')]===_0xb9cf('0x50')){_0x502175[_0xb9cf('0x65')][_0xb9cf('0x66')]({'uniqueid':_0x24fe5b[_0xb9cf('0x47')]['id']});}else{_0x502175['$and'][_0xb9cf('0x66')]({'id':_0x24fe5b[_0xb9cf('0x47')]['id']});}return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')]({'where':_0x502175,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x34864b,null))[_0xb9cf('0x25')](function(_0x580a3d){if(_0x580a3d){var _0x2261fc=util['format']('%s.cypher',_0x580a3d[_0xb9cf('0x51')]);if(fs[_0xb9cf('0x53')](_0x2261fc)){_0x3fb097=!![];return _0x4cb22e[_0xb9cf('0x54')](_0x2261fc,_0x580a3d[_0xb9cf('0x51')],config[_0xb9cf('0x55')][_0xb9cf('0x56')])['then'](function(){return _0x580a3d;});}return _0x580a3d;}})[_0xb9cf('0x25')](function(_0x59fbc5){if(_0x59fbc5){if(!fs['existsSync'](_0x59fbc5[_0xb9cf('0x51')])){throw new db[(_0xb9cf('0x57'))][(_0xb9cf('0x67'))]('VoiceRecording\x20not\x20found');}if(_0x59fbc5[_0xb9cf('0x58')]){return _0x34864b['download'](_0x59fbc5[_0xb9cf('0x51')],_0x59fbc5[_0xb9cf('0x58')]+path['extname'](_0x59fbc5['value']),function(){if(_0x3fb097){fs[_0xb9cf('0x5a')](_0x59fbc5[_0xb9cf('0x51')]);}});}else{return _0x34864b['download'](_0x59fbc5[_0xb9cf('0x51')],function(_0x1b35bf){if(_0x3fb097){fs[_0xb9cf('0x5a')](_0x59fbc5['value']);}});}}})[_0xb9cf('0x4b')](handleError(_0x34864b,null));};exports[_0xb9cf('0x24')]=function(_0xbf4b9d,_0x5c5c1b){return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')]({'where':{'id':_0xbf4b9d[_0xb9cf('0x47')]['id']}})['then'](function(_0x4a07c9){if(_[_0xb9cf('0x68')](_0x4a07c9)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4a07c9;})[_0xb9cf('0x25')](function(_0x2aebea){var _0x145333=_0x2aebea[_0xb9cf('0x51')];logger[_0xb9cf('0x69')](_0xb9cf('0x6a'),_0x145333);if(!_['isNil'](_0x2aebea[_0xb9cf('0x51')])&&fs[_0xb9cf('0x53')](_0x145333)){logger[_0xb9cf('0x69')](_0xb9cf('0x6b')+_0x145333+_0xb9cf('0x6c'));fs[_0xb9cf('0x6d')](_0x145333);}_0x145333=_0x145333+_0xb9cf('0x6e');if(!_[_0xb9cf('0x68')](_0x2aebea[_0xb9cf('0x51')])&&fs[_0xb9cf('0x53')](_0x145333)){logger[_0xb9cf('0x69')]('File:\x20\x22'+_0x145333+_0xb9cf('0x6c'));fs[_0xb9cf('0x6d')](_0x145333);}return _0x2aebea;})[_0xb9cf('0x25')](function(_0x101f47){if(!_0x101f47)throw new InternalError();return _0x101f47[_0xb9cf('0x24')]();})['then'](function(){_0x5c5c1b['status'](0xcc)[_0xb9cf('0x26')]();})[_0xb9cf('0x4b')](handleError(_0x5c5c1b,null));};function getBucketslist(_0xe9e1,_0x4ba4b2,_0x4affce){return new Promise(function(_0x530252,_0x400caa){var _0x54afa3=new AWS['S3']({'accessKeyId':_0x4ba4b2,'secretAccessKey':_0xe9e1,'region':_0x4affce});_0x54afa3['listBuckets']({},function(_0x2ac219,_0x6f15c3){if(_0x2ac219){return _0x400caa(_0x2ac219);}else{return _0x530252(_0x6f15c3);}});});}function createBucket(_0x1faf45,_0x219901,_0x3f92ea,_0x3e1a5a){return new Promise(function(_0x1f2e56,_0x3082bd){var _0x536f86=new AWS['S3']({'accessKeyId':_0x219901,'secretAccessKey':_0x1faf45,'region':_0x3f92ea});_0x536f86['createBucket']({'Bucket':_0x3e1a5a},function(_0x554427,_0x1c29b2){if(_0x554427){return _0x3082bd(_0x554427);}else{return _0x1f2e56(_0x1c29b2);}});});}function uploadFile(_0x2d2e02,_0x3015e1,_0x465693,_0x43eb37,_0x23d768,_0x30e1b2){return new Promise(function(_0x5cf404,_0x2dbfdd){var _0x2d7da1=new AWS['S3']({'accessKeyId':_0x3015e1,'secretAccessKey':_0x2d2e02,'region':_0x465693});_0x2d7da1[_0xb9cf('0x6f')]({'Bucket':_0x43eb37,'Key':_0x23d768,'Body':_0x30e1b2},function(_0x2c8aeb,_0x1f40f8){if(_0x2c8aeb){return _0x2dbfdd(_0x2c8aeb);}else{return _0x5cf404(_0x1f40f8);}});});}function startTranscribe(_0x1364f5,_0x33d7fe,_0x31c910,_0xab96e1,_0x22f761,_0x5405a0){return new Promise(function(_0xd0bd0d,_0x1b42fd){var _0x2d65f4=new AWS['TranscribeService']({'accessKeyId':_0x33d7fe,'secretAccessKey':_0x1364f5,'region':_0x31c910});_0x2d65f4['startTranscriptionJob']({'TranscriptionJobName':_0xab96e1,'LanguageCode':_0x22f761,'Media':{'MediaFileUri':_0x5405a0}},function(_0xb67e9c,_0x4b7c79){if(_0xb67e9c){return _0x1b42fd(_0xb67e9c);}else{return _0xd0bd0d(_0x4b7c79);}});});}function transcribe(_0x23936a,_0x50354a,_0x36cdfd,_0x574a48,_0x4cb142,_0x4c3b92,_0x189b8e){return new Promise(function(_0x297646,_0x21b577){var _0x4d297c={};logger[_0xb9cf('0x69')](util['format'](_0xb9cf('0x70'),_0x23936a,_0x4cb142));return uploadFile(_0x50354a,_0x36cdfd,_0x574a48,_0x4cb142,path[_0xb9cf('0x71')](_0x4c3b92),fs['readFileSync'](_0x4c3b92))[_0xb9cf('0x25')](function(_0x4194e2){logger[_0xb9cf('0x69')](util['format']('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x23936a,_0x4cb142,_0x4194e2[_0xb9cf('0x72')]));_0x4d297c['bucket']=_0x4194e2[_0xb9cf('0x73')];_0x4d297c[_0xb9cf('0x74')]=_0x4194e2[_0xb9cf('0x72')];logger['info'](util[_0xb9cf('0x52')](_0xb9cf('0x75'),_0x23936a));return startTranscribe(_0x50354a,_0x36cdfd,_0x574a48,uuidv4(),_0x189b8e,_0x4194e2[_0xb9cf('0x72')]);})[_0xb9cf('0x25')](function(_0x440e7d){logger[_0xb9cf('0x69')](util[_0xb9cf('0x52')](_0xb9cf('0x76'),_0x23936a,_0x440e7d[_0xb9cf('0x77')][_0xb9cf('0x78')]));_0x4d297c[_0xb9cf('0x79')]=_0x440e7d['TranscriptionJob'][_0xb9cf('0x78')];_0x4d297c[_0xb9cf('0x7a')]=_0x440e7d['TranscriptionJob'][_0xb9cf('0x7b')];return _0x297646(_0x4d297c);})[_0xb9cf('0x4b')](function(_0x28c016){return _0x21b577(_0x28c016);});});}exports[_0xb9cf('0x7c')]=function(_0x4a3385,_0xff5317,_0x450e49){var _0xda20f6;var _0x1683d1;var _0x3db98c;var _0x174ead=require(_0xb9cf('0x60'));return db[_0xb9cf('0x2d')][_0xb9cf('0x7d')]({'where':{'id':_0x4a3385['params']['id']}})[_0xb9cf('0x25')](function(_0x5b8833){if(_0x5b8833){var _0xe5a78=util[_0xb9cf('0x52')]('%s.cypher',_0x5b8833[_0xb9cf('0x51')]);if(fs['existsSync'](_0xe5a78)){cypher=!![];return _0x174ead['decryptFile'](_0xe5a78,_0x5b8833[_0xb9cf('0x51')],config['secrets'][_0xb9cf('0x56')])[_0xb9cf('0x25')](function(){return _0x5b8833;});}return _0x5b8833;}})[_0xb9cf('0x25')](function(_0x1b189a){if(!_0x1b189a){throw new db['Sequelize']['ValidationError']('Voice\x20Recording\x20not\x20found');}_0x1683d1=_0x1b189a;return db[_0xb9cf('0x7e')][_0xb9cf('0x7d')]({'where':{'id':0x1}});})[_0xb9cf('0x25')](handleEntityNotFound(_0xff5317,null))[_0xb9cf('0x25')](function(_0x28c2d9){if(_0x28c2d9){_0xda20f6=_0x28c2d9;if(!_0xda20f6[_0xb9cf('0x7f')]||!_0xda20f6[_0xb9cf('0x80')]||!_0xda20f6[_0xb9cf('0x81')]||!_0xda20f6[_0xb9cf('0x82')]||!_0xda20f6[_0xb9cf('0x83')]){throw new db[(_0xb9cf('0x57'))][(_0xb9cf('0x67'))](_0xb9cf('0x84'));}if(_0x4a3385[_0xb9cf('0x4d')][_0xb9cf('0x85')]&&(!_0xda20f6[_0xb9cf('0x86')]||!_0xda20f6[_0xb9cf('0x87')]||!_0xda20f6[_0xb9cf('0x88')]||!_0xda20f6['language']||!_0xda20f6[_0xb9cf('0x83')])){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db[_0xb9cf('0x89')][_0xb9cf('0x7d')]({'where':{'id':_0xda20f6[_0xb9cf('0x80')]}});}})[_0xb9cf('0x25')](function(_0x3bc4c1){if(!_0x3bc4c1){throw new db['Sequelize'][(_0xb9cf('0x67'))](_0xb9cf('0x8a'));}if(!_0x3bc4c1['data1']||!_0x3bc4c1[_0xb9cf('0x8b')]){throw new db['Sequelize']['ValidationError'](_0xb9cf('0x8c'));}_0x3db98c=_0x3bc4c1;return getBucketslist(_0x3db98c[_0xb9cf('0x8d')],_0x3db98c['data2'],_0xda20f6[_0xb9cf('0x81')]);})[_0xb9cf('0x25')](function(_0x540355){if(_0x540355&&_0x540355[_0xb9cf('0x8e')]){var _0x2520b8=_['find'](_0x540355[_0xb9cf('0x8e')],function(_0x4a06f4){return _0x4a06f4[_0xb9cf('0x8f')]===_0xda20f6[_0xb9cf('0x83')];});if(!_0x2520b8){logger['info'](util['format'](_0xb9cf('0x90'),_0x4a3385[_0xb9cf('0x47')]['id'],_0xda20f6[_0xb9cf('0x83')]));return createBucket(_0x3db98c[_0xb9cf('0x8d')],_0x3db98c[_0xb9cf('0x8b')],_0xda20f6[_0xb9cf('0x81')],_0xda20f6['bucket']);}logger[_0xb9cf('0x69')](util[_0xb9cf('0x52')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x4a3385[_0xb9cf('0x47')]['id'],_0xda20f6[_0xb9cf('0x83')]));return;}})[_0xb9cf('0x25')](function(_0x3ab403){if(_0x1683d1[_0xb9cf('0x7a')]===_0xb9cf('0x91')){return transcribe(_0x4a3385[_0xb9cf('0x47')]['id'],_0x3db98c[_0xb9cf('0x8d')],_0x3db98c[_0xb9cf('0x8b')],_0xda20f6[_0xb9cf('0x81')],_0xda20f6['bucket'],_0x1683d1[_0xb9cf('0x51')],_0xda20f6[_0xb9cf('0x82')]);}else{logger[_0xb9cf('0x69')](util[_0xb9cf('0x52')](_0xb9cf('0x92'),_0x4a3385[_0xb9cf('0x47')]['id']));return{'transcribeStatus':_0xb9cf('0x93')};}})['then'](function(_0x3d5471){if(_0x3d5471){_0x3d5471[_0xb9cf('0x94')]=_0x4a3385[_0xb9cf('0x4d')][_0xb9cf('0x85')];return _0x1683d1[_0xb9cf('0x95')](_0x3d5471);}})[_0xb9cf('0x25')](respondWithResult(_0xff5317,null))[_0xb9cf('0x4b')](handleError(_0xff5317,null));};function writeFile(_0x44d2db,_0x182f4a){return new Promise(function(_0x20f92d,_0x5ada2c){fs[_0xb9cf('0x96')](_0x182f4a,_0x44d2db,function(_0x3d6fd0,_0x2bbdbe){if(_0x3d6fd0){return _0x5ada2c(_0x3d6fd0);}else{return _0x20f92d(_0x2bbdbe);}});});}exports['downloadTranscribe']=function(_0x20b8b3,_0x5996ef,_0x304000){return db[_0xb9cf('0x2d')][_0xb9cf('0x7d')]({'where':{'id':_0x20b8b3['params']['id']}})[_0xb9cf('0x25')](handleEntityNotFound(_0x5996ef))[_0xb9cf('0x25')](function(_0x46dd46){if(_0x46dd46&&_0x46dd46[_0xb9cf('0x97')]){var _0x21fc4c=_0x46dd46[_0xb9cf('0x97')];var _0x58fe7b=config[_0xb9cf('0x98')]+_0xb9cf('0x99')+_0x46dd46['id']+_0xb9cf('0x9a');if(fs[_0xb9cf('0x53')](_0x58fe7b)){return _0x58fe7b;}return writeFile(_0x21fc4c,_0x58fe7b)['then'](function(){return _0x58fe7b;});}else{throw new db[(_0xb9cf('0x57'))][(_0xb9cf('0x67'))]('Transcript\x20not\x20available');}})['then'](function(_0x3c3188){return _0x5996ef[_0xb9cf('0x4f')](_0x3c3188);})[_0xb9cf('0x4b')](handleError(_0x5996ef));};
\ No newline at end of file
+var _0x5fe2=['bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','uuid/v4','ioredis','../../components/auth/service','../../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','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceRecording','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','length','options','find','create','body','params','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','existsSync','secrets','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','Not\x20found','sequelize','MD5','col','token','$and','push','decryptFile','recording','extname','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','Location','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','language','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','NEW','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x5fe2,0x136));var _0x25fe=function(_0x563b69,_0x37121a){_0x563b69=_0x563b69-0x0;var _0x29060b=_0x5fe2[_0x563b69];return _0x29060b;};'use strict';var emlformat=require(_0x25fe('0x0'));var rimraf=require(_0x25fe('0x1'));var zipdir=require(_0x25fe('0x2'));var jsonpatch=require(_0x25fe('0x3'));var rp=require(_0x25fe('0x4'));var moment=require(_0x25fe('0x5'));var BPromise=require(_0x25fe('0x6'));var Mustache=require(_0x25fe('0x7'));var util=require('util');var path=require(_0x25fe('0x8'));var sox=require(_0x25fe('0x9'));var csv=require(_0x25fe('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x25fe('0xb'));var squel=require(_0x25fe('0xc'));var crypto=require(_0x25fe('0xd'));var jsforce=require(_0x25fe('0xe'));var deskjs=require(_0x25fe('0xf'));var toCsv=require(_0x25fe('0xa'));var querystring=require(_0x25fe('0x10'));var Papa=require(_0x25fe('0x11'));var AWS=require('aws-sdk');var uuidv4=require(_0x25fe('0x12'));var Redis=require(_0x25fe('0x13'));var authService=require(_0x25fe('0x14'));var qs=require(_0x25fe('0x15'));var as=require(_0x25fe('0x16'));var hardwareService=require(_0x25fe('0x17'));var logger=require(_0x25fe('0x18'))(_0x25fe('0x19'));var utils=require(_0x25fe('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x25fe('0x1b'));var db=require(_0x25fe('0x1c'))['db'];function respondWithStatusCode(_0x4169a3,_0x381e49){_0x381e49=_0x381e49||0xcc;return function(_0x1bbc4e){if(_0x1bbc4e){return _0x4169a3['sendStatus'](_0x381e49);}return _0x4169a3['status'](_0x381e49)[_0x25fe('0x1d')]();};}function respondWithResult(_0x1c302b,_0x3ea22a){_0x3ea22a=_0x3ea22a||0xc8;return function(_0x2ea4c0){if(_0x2ea4c0){return _0x1c302b[_0x25fe('0x1e')](_0x3ea22a)[_0x25fe('0x1f')](_0x2ea4c0);}};}function respondWithFilteredResult(_0x9ebf9e,_0x39f3b6){return function(_0x4269b9){if(_0x4269b9){var _0x56004c=typeof _0x39f3b6[_0x25fe('0x20')]===_0x25fe('0x21')&&typeof _0x39f3b6[_0x25fe('0x22')]===_0x25fe('0x21');var _0xc19f23=_0x4269b9[_0x25fe('0x23')];var _0x56ef1f=_0x56004c?0x0:_0x39f3b6[_0x25fe('0x20')];var _0x30a1fe=_0x56004c?_0x4269b9[_0x25fe('0x23')]:_0x39f3b6[_0x25fe('0x20')]+_0x39f3b6[_0x25fe('0x22')];var _0x4be0fd;if(_0x30a1fe>=_0xc19f23){_0x30a1fe=_0xc19f23;_0x4be0fd=0xc8;}else{_0x4be0fd=0xce;}_0x9ebf9e[_0x25fe('0x1e')](_0x4be0fd);return _0x9ebf9e['set']('Content-Range',_0x56ef1f+'-'+_0x30a1fe+'/'+_0xc19f23)[_0x25fe('0x1f')](_0x4269b9);}return null;};}function patchUpdates(_0x2232f6){return function(_0x2b4690){try{jsonpatch[_0x25fe('0x24')](_0x2b4690,_0x2232f6,!![]);}catch(_0x50f5f3){return BPromise['reject'](_0x50f5f3);}return _0x2b4690[_0x25fe('0x25')]();};}function saveUpdates(_0x4dc18e,_0x37e63b){return function(_0x185a51){if(_0x185a51){return _0x185a51[_0x25fe('0x26')](_0x4dc18e)[_0x25fe('0x27')](function(_0x2a3f34){return _0x2a3f34;});}return null;};}function removeEntity(_0x26cc6a,_0x2a9594){return function(_0x406436){if(_0x406436){return _0x406436[_0x25fe('0x28')]()[_0x25fe('0x27')](function(){_0x26cc6a[_0x25fe('0x1e')](0xcc)[_0x25fe('0x1d')]();});}};}function handleEntityNotFound(_0x4b4773,_0x12895d){return function(_0x457f8c){if(!_0x457f8c){_0x4b4773[_0x25fe('0x29')](0x194);}return _0x457f8c;};}function handleError(_0x147b7f,_0x489a47){_0x489a47=_0x489a47||0x1f4;return function(_0x3cda9b){logger[_0x25fe('0x2a')](_0x3cda9b[_0x25fe('0x2b')]);if(_0x3cda9b[_0x25fe('0x2c')]){delete _0x3cda9b['name'];}_0x147b7f[_0x25fe('0x1e')](_0x489a47)[_0x25fe('0x2d')](_0x3cda9b);};}exports[_0x25fe('0x2e')]=function(_0x2f866f,_0x1eaae4){var _0x25ffc8={},_0x22f81a={},_0x1999c9={'count':0x0,'rows':[]};var _0xca445f=_[_0x25fe('0x2f')](db[_0x25fe('0x30')][_0x25fe('0x31')],function(_0x34c76f){return{'name':_0x34c76f[_0x25fe('0x32')],'type':_0x34c76f[_0x25fe('0x33')][_0x25fe('0x34')]};});_0x22f81a[_0x25fe('0x35')]=_[_0x25fe('0x36')](_[_0x25fe('0x2f')](_0xca445f,_0x25fe('0x2c')),['format']);_0x22f81a[_0x25fe('0x37')]=_[_0x25fe('0x38')](_0x2f866f['query']);_0x22f81a[_0x25fe('0x39')]=_['intersection'](_0x22f81a[_0x25fe('0x35')],_0x22f81a[_0x25fe('0x37')]);_0x25ffc8[_0x25fe('0x3a')]=_[_0x25fe('0x3b')](_0x22f81a[_0x25fe('0x35')],qs[_0x25fe('0x3c')](_0x2f866f[_0x25fe('0x37')][_0x25fe('0x3c')]));_0x25ffc8[_0x25fe('0x3a')]=_0x25ffc8[_0x25fe('0x3a')]['length']?_0x25ffc8[_0x25fe('0x3a')]:_0x22f81a[_0x25fe('0x35')];if(!_0x2f866f[_0x25fe('0x37')][_0x25fe('0x3d')]('nolimit')){_0x25ffc8[_0x25fe('0x22')]=qs[_0x25fe('0x22')](_0x2f866f[_0x25fe('0x37')][_0x25fe('0x22')]);_0x25ffc8[_0x25fe('0x20')]=qs[_0x25fe('0x20')](_0x2f866f['query'][_0x25fe('0x20')]);}_0x25ffc8[_0x25fe('0x3e')]=qs[_0x25fe('0x3f')](_0x2f866f['query'][_0x25fe('0x3f')]);_0x25ffc8[_0x25fe('0x40')]=qs['filters'](_[_0x25fe('0x41')](_0x2f866f[_0x25fe('0x37')],_0x22f81a[_0x25fe('0x39')]),_0xca445f);if(_0x2f866f[_0x25fe('0x37')][_0x25fe('0x42')]){_0x25ffc8[_0x25fe('0x40')]=_['merge'](_0x25ffc8[_0x25fe('0x40')],{'$or':_[_0x25fe('0x2f')](_0xca445f,function(_0x351f5b){if(_0x351f5b[_0x25fe('0x33')]!==_0x25fe('0x43')){var _0x5ea308={};_0x5ea308[_0x351f5b['name']]={'$like':'%'+_0x2f866f['query'][_0x25fe('0x42')]+'%'};return _0x5ea308;}})});}_0x25ffc8=_[_0x25fe('0x44')]({},_0x25ffc8,_0x2f866f['options']);var _0x479fed={'where':_0x25ffc8[_0x25fe('0x40')]};return db[_0x25fe('0x30')][_0x25fe('0x23')](_0x479fed)[_0x25fe('0x27')](function(_0x372b52){_0x1999c9[_0x25fe('0x23')]=_0x372b52;if(_0x2f866f['query'][_0x25fe('0x45')]){_0x25ffc8[_0x25fe('0x46')]=[{'all':!![]}];}return db[_0x25fe('0x30')][_0x25fe('0x47')](_0x25ffc8);})[_0x25fe('0x27')](function(_0x367cfb){_0x1999c9[_0x25fe('0x48')]=_0x367cfb;return _0x1999c9;})[_0x25fe('0x27')](respondWithFilteredResult(_0x1eaae4,_0x25ffc8))[_0x25fe('0x49')](handleError(_0x1eaae4,null));};exports['show']=function(_0x21ce01,_0x471d95){var _0x381c6c={'raw':![],'where':{'id':_0x21ce01['params']['id']}},_0x18e00a={};_0x18e00a[_0x25fe('0x35')]=_['keys'](db[_0x25fe('0x30')]['rawAttributes']);_0x18e00a[_0x25fe('0x37')]=_[_0x25fe('0x38')](_0x21ce01[_0x25fe('0x37')]);_0x18e00a[_0x25fe('0x39')]=_[_0x25fe('0x3b')](_0x18e00a['model'],_0x18e00a['query']);_0x381c6c[_0x25fe('0x3a')]=_[_0x25fe('0x3b')](_0x18e00a[_0x25fe('0x35')],qs[_0x25fe('0x3c')](_0x21ce01['query']['fields']));_0x381c6c[_0x25fe('0x3a')]=_0x381c6c[_0x25fe('0x3a')][_0x25fe('0x4a')]?_0x381c6c['attributes']:_0x18e00a[_0x25fe('0x35')];if(_0x21ce01[_0x25fe('0x37')][_0x25fe('0x45')]){_0x381c6c[_0x25fe('0x46')]=[{'all':!![]}];}_0x381c6c=_[_0x25fe('0x44')]({},_0x381c6c,_0x21ce01[_0x25fe('0x4b')]);return db[_0x25fe('0x30')][_0x25fe('0x4c')](_0x381c6c)[_0x25fe('0x27')](handleEntityNotFound(_0x471d95,null))[_0x25fe('0x27')](respondWithResult(_0x471d95,null))[_0x25fe('0x49')](handleError(_0x471d95,null));};exports[_0x25fe('0x4d')]=function(_0x21f0d0,_0x2f33f9){return db[_0x25fe('0x30')]['create'](_0x21f0d0[_0x25fe('0x4e')],{})['then'](respondWithResult(_0x2f33f9,0xc9))['catch'](handleError(_0x2f33f9,null));};exports[_0x25fe('0x26')]=function(_0x174b0c,_0x238b50){if(_0x174b0c['body']['id']){delete _0x174b0c[_0x25fe('0x4e')]['id'];}return db[_0x25fe('0x30')]['find']({'where':{'id':_0x174b0c[_0x25fe('0x4f')]['id']}})['then'](handleEntityNotFound(_0x238b50,null))['then'](saveUpdates(_0x174b0c['body'],null))['then'](respondWithResult(_0x238b50,null))[_0x25fe('0x49')](handleError(_0x238b50,null));};exports['describe']=function(_0x74403b,_0x58d607){return db['VoiceRecording'][_0x25fe('0x50')]()[_0x25fe('0x27')](respondWithResult(_0x58d607,null))[_0x25fe('0x49')](handleError(_0x58d607,null));};exports[_0x25fe('0x51')]=function(_0x2b214a,_0x2d131e,_0x4f4cb7){var _0x41627b=require(_0x25fe('0x52'));var _0x4ef8da=![];var _0x4a59ef={};if(_0x2b214a[_0x25fe('0x37')][_0x25fe('0x33')]&&_0x2b214a['query'][_0x25fe('0x33')]===_0x25fe('0x53')){_0x4a59ef['uniqueid']=_0x2b214a[_0x25fe('0x4f')]['id'];}else{_0x4a59ef['id']=_0x2b214a[_0x25fe('0x4f')]['id'];}return db[_0x25fe('0x30')][_0x25fe('0x4c')]({'where':_0x4a59ef,'attributes':['id',_0x25fe('0x54')],'raw':!![]})['then'](handleEntityNotFound(_0x2d131e,null))['then'](function(_0x356e8e){if(_0x356e8e){var _0x5e6776=_0x356e8e[_0x25fe('0x54')];var _0x57f71e=util[_0x25fe('0x55')](_0x25fe('0x56'),_0x5e6776);if(fs[_0x25fe('0x57')](_0x57f71e)){_0x4ef8da=!![];return _0x41627b['decryptFile'](_0x57f71e,_0x5e6776,config[_0x25fe('0x58')]['recording'])[_0x25fe('0x27')](function(){return _0x356e8e;});}return _0x356e8e;}})[_0x25fe('0x27')](function(_0x1c93c1){if(_0x1c93c1){var _0xcceeab=_0x1c93c1['value'];if(!fs[_0x25fe('0x57')](_0xcceeab)){throw new db[(_0x25fe('0x59'))][(_0x25fe('0x5a'))](_0x25fe('0x5b'));}if(_0x1c93c1[_0x25fe('0x5c')]){return _0x2d131e[_0x25fe('0x51')](_0xcceeab,_0x1c93c1[_0x25fe('0x5c')]+path['extname'](_0xcceeab),function(){if(_0x4ef8da){fs[_0x25fe('0x5d')](_0xcceeab);}});}else{return _0x2d131e[_0x25fe('0x51')](_0xcceeab,function(_0x22fb38){if(_0x4ef8da){fs['unlink'](_0xcceeab);}});}}})['catch'](function(_0xc2c4c2){if(_0xc2c4c2['message']==='VoiceRecording\x20not\x20found'){_0x2d131e[_0x25fe('0x1e')](0x194)[_0x25fe('0x2d')](_0x25fe('0x5e'));}else{return handleError(_0x2d131e,null);}});};exports['downloads']=function(_0x220bae,_0x29d0d6,_0x5b38a7){var _0x254764=require(_0x25fe('0x52'));var _0x251cc7=![];var _0x20a547={'$and':[db[_0x25fe('0x5f')][_0x25fe('0x40')](db[_0x25fe('0x5f')]['fn'](_0x25fe('0x60'),db[_0x25fe('0x5f')][_0x25fe('0x61')](_0x25fe('0x53'))),_0x220bae[_0x25fe('0x37')][_0x25fe('0x62')])]};if(_0x220bae[_0x25fe('0x37')]['type']&&_0x220bae['query'][_0x25fe('0x33')]==='uniqueid'){_0x20a547[_0x25fe('0x63')][_0x25fe('0x64')]({'uniqueid':_0x220bae['params']['id']});}else{_0x20a547['$and'][_0x25fe('0x64')]({'id':_0x220bae['params']['id']});}return db['VoiceRecording']['find']({'where':_0x20a547,'attributes':['id',_0x25fe('0x54')],'raw':!![]})[_0x25fe('0x27')](handleEntityNotFound(_0x29d0d6,null))[_0x25fe('0x27')](function(_0x391f98){if(_0x391f98){var _0x10b1f9=util[_0x25fe('0x55')](_0x25fe('0x56'),_0x391f98[_0x25fe('0x54')]);if(fs[_0x25fe('0x57')](_0x10b1f9)){_0x251cc7=!![];return _0x254764[_0x25fe('0x65')](_0x10b1f9,_0x391f98[_0x25fe('0x54')],config[_0x25fe('0x58')][_0x25fe('0x66')])[_0x25fe('0x27')](function(){return _0x391f98;});}return _0x391f98;}})[_0x25fe('0x27')](function(_0x3abfd0){if(_0x3abfd0){if(!fs['existsSync'](_0x3abfd0[_0x25fe('0x54')])){throw new db[(_0x25fe('0x59'))][(_0x25fe('0x5a'))]('VoiceRecording\x20not\x20found');}if(_0x3abfd0[_0x25fe('0x5c')]){return _0x29d0d6[_0x25fe('0x51')](_0x3abfd0[_0x25fe('0x54')],_0x3abfd0[_0x25fe('0x5c')]+path[_0x25fe('0x67')](_0x3abfd0[_0x25fe('0x54')]),function(){if(_0x251cc7){fs['unlink'](_0x3abfd0[_0x25fe('0x54')]);}});}else{return _0x29d0d6['download'](_0x3abfd0['value'],function(_0x495474){if(_0x251cc7){fs[_0x25fe('0x5d')](_0x3abfd0[_0x25fe('0x54')]);}});}}})[_0x25fe('0x49')](handleError(_0x29d0d6,null));};exports[_0x25fe('0x28')]=function(_0x4ccd8d,_0x35a134){return db[_0x25fe('0x30')][_0x25fe('0x4c')]({'where':{'id':_0x4ccd8d['params']['id']}})[_0x25fe('0x27')](function(_0x232111){if(_['isNil'](_0x232111)){throw new ReferenceError(_0x25fe('0x68'));}return _0x232111;})[_0x25fe('0x27')](function(_0x5d6ee3){var _0x196c30=_0x5d6ee3[_0x25fe('0x54')];logger[_0x25fe('0x69')](_0x25fe('0x6a'),_0x196c30);if(!_[_0x25fe('0x6b')](_0x5d6ee3[_0x25fe('0x54')])&&fs[_0x25fe('0x57')](_0x196c30)){logger[_0x25fe('0x69')](_0x25fe('0x6c')+_0x196c30+_0x25fe('0x6d'));fs[_0x25fe('0x6e')](_0x196c30);}_0x196c30=_0x196c30+_0x25fe('0x6f');if(!_['isNil'](_0x5d6ee3[_0x25fe('0x54')])&&fs[_0x25fe('0x57')](_0x196c30)){logger['info'](_0x25fe('0x6c')+_0x196c30+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x196c30);}return _0x5d6ee3;})['then'](function(_0x20d9fe){if(!_0x20d9fe)throw new InternalError();return _0x20d9fe['destroy']();})[_0x25fe('0x27')](function(){_0x35a134['status'](0xcc)['end']();})[_0x25fe('0x49')](handleError(_0x35a134,null));};function getBucketslist(_0x1bb804,_0x173598,_0x110386){return new Promise(function(_0x196fed,_0x31b709){var _0x344343=new AWS['S3']({'accessKeyId':_0x173598,'secretAccessKey':_0x1bb804,'region':_0x110386});_0x344343[_0x25fe('0x70')]({},function(_0x2e8c6f,_0x176499){if(_0x2e8c6f){return _0x31b709(_0x2e8c6f);}else{return _0x196fed(_0x176499);}});});}function createBucket(_0x1de031,_0x4aa9a5,_0x559025,_0x374b2b){return new Promise(function(_0xa40999,_0x4bdf8d){var _0x2593ea=new AWS['S3']({'accessKeyId':_0x4aa9a5,'secretAccessKey':_0x1de031,'region':_0x559025});_0x2593ea[_0x25fe('0x71')]({'Bucket':_0x374b2b},function(_0x35ee24,_0x1070a6){if(_0x35ee24){return _0x4bdf8d(_0x35ee24);}else{return _0xa40999(_0x1070a6);}});});}function uploadFile(_0x5258a1,_0x4cdf40,_0x2f9fe4,_0xf6f109,_0x4c8680,_0x489bc5){return new Promise(function(_0x28dc2a,_0x2bcd5a){var _0x511312=new AWS['S3']({'accessKeyId':_0x4cdf40,'secretAccessKey':_0x5258a1,'region':_0x2f9fe4});_0x511312['upload']({'Bucket':_0xf6f109,'Key':_0x4c8680,'Body':_0x489bc5},function(_0x438c80,_0x14a86c){if(_0x438c80){return _0x2bcd5a(_0x438c80);}else{return _0x28dc2a(_0x14a86c);}});});}function startTranscribe(_0x3a4d7a,_0x2dd561,_0x1a0844,_0x42bff0,_0x3c7740,_0xd7c356){return new Promise(function(_0x1d2aeb,_0x5bbf27){var _0x1a4f8f=new AWS['TranscribeService']({'accessKeyId':_0x2dd561,'secretAccessKey':_0x3a4d7a,'region':_0x1a0844});_0x1a4f8f[_0x25fe('0x72')]({'TranscriptionJobName':_0x42bff0,'LanguageCode':_0x3c7740,'Media':{'MediaFileUri':_0xd7c356}},function(_0x1071d9,_0x567688){if(_0x1071d9){return _0x5bbf27(_0x1071d9);}else{return _0x1d2aeb(_0x567688);}});});}function transcribe(_0x2a80e6,_0x4f05bc,_0x44c2a4,_0xa1b362,_0x134f90,_0x5b355a,_0xbc0f15){return new Promise(function(_0x442b3f,_0x457f88){var _0x46fe42={};logger['info'](util[_0x25fe('0x55')](_0x25fe('0x73'),_0x2a80e6,_0x134f90));return uploadFile(_0x4f05bc,_0x44c2a4,_0xa1b362,_0x134f90,path[_0x25fe('0x74')](_0x5b355a),fs[_0x25fe('0x75')](_0x5b355a))['then'](function(_0x1e019d){logger['info'](util[_0x25fe('0x55')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x2a80e6,_0x134f90,_0x1e019d[_0x25fe('0x76')]));_0x46fe42['bucket']=_0x1e019d['Bucket'];_0x46fe42[_0x25fe('0x77')]=_0x1e019d['Location'];logger['info'](util[_0x25fe('0x55')](_0x25fe('0x78'),_0x2a80e6));return startTranscribe(_0x4f05bc,_0x44c2a4,_0xa1b362,uuidv4(),_0xbc0f15,_0x1e019d[_0x25fe('0x76')]);})[_0x25fe('0x27')](function(_0x544e52){logger[_0x25fe('0x69')](util[_0x25fe('0x55')](_0x25fe('0x79'),_0x2a80e6,_0x544e52[_0x25fe('0x7a')][_0x25fe('0x7b')]));_0x46fe42['transcribeName']=_0x544e52[_0x25fe('0x7a')][_0x25fe('0x7b')];_0x46fe42['transcribeStatus']=_0x544e52[_0x25fe('0x7a')][_0x25fe('0x7c')];return _0x442b3f(_0x46fe42);})['catch'](function(_0x4a34fc){return _0x457f88(_0x4a34fc);});});}exports[_0x25fe('0x7d')]=function(_0x3c9d57,_0x3aab42,_0x26f48b){var _0x4a2731;var _0x2ec64e;var _0x5d44c7;var _0x447b6f=require(_0x25fe('0x52'));return db['VoiceRecording']['findOne']({'where':{'id':_0x3c9d57[_0x25fe('0x4f')]['id']}})[_0x25fe('0x27')](function(_0x25dc0c){if(_0x25dc0c){var _0x35dbd4=util[_0x25fe('0x55')](_0x25fe('0x56'),_0x25dc0c[_0x25fe('0x54')]);if(fs[_0x25fe('0x57')](_0x35dbd4)){cypher=!![];return _0x447b6f[_0x25fe('0x65')](_0x35dbd4,_0x25dc0c[_0x25fe('0x54')],config[_0x25fe('0x58')]['recording'])[_0x25fe('0x27')](function(){return _0x25dc0c;});}return _0x25dc0c;}})[_0x25fe('0x27')](function(_0xe71c7){if(!_0xe71c7){throw new db[(_0x25fe('0x59'))][(_0x25fe('0x5a'))](_0x25fe('0x7e'));}_0x2ec64e=_0xe71c7;return db[_0x25fe('0x7f')][_0x25fe('0x80')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x3aab42,null))['then'](function(_0x471de0){if(_0x471de0){_0x4a2731=_0x471de0;if(!_0x4a2731[_0x25fe('0x81')]||!_0x4a2731[_0x25fe('0x82')]||!_0x4a2731[_0x25fe('0x83')]||!_0x4a2731[_0x25fe('0x84')]||!_0x4a2731[_0x25fe('0x85')]){throw new db[(_0x25fe('0x59'))][(_0x25fe('0x5a'))](_0x25fe('0x86'));}if(_0x3c9d57[_0x25fe('0x4e')][_0x25fe('0x87')]&&(!_0x4a2731[_0x25fe('0x88')]||!_0x4a2731[_0x25fe('0x89')]||!_0x4a2731['sentimentRegion']||!_0x4a2731[_0x25fe('0x84')]||!_0x4a2731['bucket'])){throw new db['Sequelize'][(_0x25fe('0x5a'))](_0x25fe('0x8a'));}return db[_0x25fe('0x8b')]['findOne']({'where':{'id':_0x4a2731[_0x25fe('0x82')]}});}})[_0x25fe('0x27')](function(_0x115fd6){if(!_0x115fd6){throw new db[(_0x25fe('0x59'))][(_0x25fe('0x5a'))](_0x25fe('0x8c'));}if(!_0x115fd6['data1']||!_0x115fd6['data2']){throw new db[(_0x25fe('0x59'))][(_0x25fe('0x5a'))]('Cloud\x20Provider\x20not\x20configured');}_0x5d44c7=_0x115fd6;return getBucketslist(_0x5d44c7[_0x25fe('0x8d')],_0x5d44c7[_0x25fe('0x8e')],_0x4a2731['transcribeRegion']);})['then'](function(_0xc50284){if(_0xc50284&&_0xc50284[_0x25fe('0x8f')]){var _0x2a237c=_['find'](_0xc50284['Buckets'],function(_0x1bbf22){return _0x1bbf22[_0x25fe('0x90')]===_0x4a2731[_0x25fe('0x85')];});if(!_0x2a237c){logger[_0x25fe('0x69')](util[_0x25fe('0x55')](_0x25fe('0x91'),_0x3c9d57[_0x25fe('0x4f')]['id'],_0x4a2731[_0x25fe('0x85')]));return createBucket(_0x5d44c7['data1'],_0x5d44c7[_0x25fe('0x8e')],_0x4a2731['transcribeRegion'],_0x4a2731['bucket']);}logger[_0x25fe('0x69')](util[_0x25fe('0x55')](_0x25fe('0x92'),_0x3c9d57[_0x25fe('0x4f')]['id'],_0x4a2731[_0x25fe('0x85')]));return;}})[_0x25fe('0x27')](function(_0x3308b9){if(_0x2ec64e[_0x25fe('0x93')]===_0x25fe('0x94')){return transcribe(_0x3c9d57['params']['id'],_0x5d44c7[_0x25fe('0x8d')],_0x5d44c7[_0x25fe('0x8e')],_0x4a2731[_0x25fe('0x83')],_0x4a2731[_0x25fe('0x85')],_0x2ec64e[_0x25fe('0x54')],_0x4a2731['language']);}else{logger[_0x25fe('0x69')](util[_0x25fe('0x55')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3c9d57[_0x25fe('0x4f')]['id']));return{'transcribeStatus':_0x25fe('0x95')};}})[_0x25fe('0x27')](function(_0x15cc12){if(_0x15cc12){_0x15cc12[_0x25fe('0x96')]=_0x3c9d57[_0x25fe('0x4e')]['runSentiment'];return _0x2ec64e[_0x25fe('0x97')](_0x15cc12);}})[_0x25fe('0x27')](respondWithResult(_0x3aab42,null))[_0x25fe('0x49')](handleError(_0x3aab42,null));};function writeFile(_0x45dd44,_0x1bad99){return new Promise(function(_0x109ddf,_0x59eafd){fs[_0x25fe('0x98')](_0x1bad99,_0x45dd44,function(_0x542dac,_0xfeedae){if(_0x542dac){return _0x59eafd(_0x542dac);}else{return _0x109ddf(_0xfeedae);}});});}exports['downloadTranscribe']=function(_0x266e31,_0x3f43bf,_0x50ef66){return db[_0x25fe('0x30')][_0x25fe('0x80')]({'where':{'id':_0x266e31['params']['id']}})[_0x25fe('0x27')](handleEntityNotFound(_0x3f43bf))[_0x25fe('0x27')](function(_0x4cc0a3){if(_0x4cc0a3&&_0x4cc0a3[_0x25fe('0x99')]){var _0x2f8ce7=_0x4cc0a3[_0x25fe('0x99')];var _0x288049=config[_0x25fe('0x9a')]+_0x25fe('0x9b')+_0x4cc0a3['id']+_0x25fe('0x9c');if(fs[_0x25fe('0x57')](_0x288049)){return _0x288049;}return writeFile(_0x2f8ce7,_0x288049)['then'](function(){return _0x288049;});}else{throw new db['Sequelize'][(_0x25fe('0x5a'))](_0x25fe('0x9d'));}})['then'](function(_0x1b6a56){return _0x3f43bf[_0x25fe('0x51')](_0x1b6a56);})[_0x25fe('0x49')](handleError(_0x3f43bf));};
\ No newline at end of file
index ca57a67..6bfa18f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae7e=['path','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid','lodash','api','moment','bluebird','request-promise'];(function(_0x45ca29,_0x2a4995){var _0x7e08bb=function(_0x3cbbcd){while(--_0x3cbbcd){_0x45ca29['push'](_0x45ca29['shift']());}};_0x7e08bb(++_0x2a4995);}(_0xae7e,0xf2));var _0xeae7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xae7e[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xeae7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeae7('0x1'));var moment=require(_0xeae7('0x2'));var BPromise=require(_0xeae7('0x3'));var rp=require(_0xeae7('0x4'));var fs=require('fs');var path=require(_0xeae7('0x5'));var rimraf=require('rimraf');var config=require(_0xeae7('0x6'));var attributes=require(_0xeae7('0x7'));module[_0xeae7('0x8')]=function(_0x1ebeae,_0x327af6){return _0x1ebeae[_0xeae7('0x9')](_0xeae7('0xa'),attributes,{'tableName':_0xeae7('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xeae7('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c8c=['moment','bluebird','request-promise','rimraf','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid','util','../../config/logger','api'];(function(_0x26434e,_0xd7e437){var _0x17d3a9=function(_0x31dc6d){while(--_0x31dc6d){_0x26434e['push'](_0x26434e['shift']());}};_0x17d3a9(++_0xd7e437);}(_0x2c8c,0x1cb));var _0xc2c8=function(_0x4bbec8,_0x2aa4be){_0x4bbec8=_0x4bbec8-0x0;var _0x275309=_0x2c8c[_0x4bbec8];return _0x275309;};'use strict';var _=require('lodash');var util=require(_0xc2c8('0x0'));var logger=require(_0xc2c8('0x1'))(_0xc2c8('0x2'));var moment=require(_0xc2c8('0x3'));var BPromise=require(_0xc2c8('0x4'));var rp=require(_0xc2c8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc2c8('0x6'));var config=require(_0xc2c8('0x7'));var attributes=require(_0xc2c8('0x8'));module[_0xc2c8('0x9')]=function(_0x5c6b73,_0x3747ce){return _0x5c6b73[_0xc2c8('0xa')](_0xc2c8('0xb'),attributes,{'tableName':_0xc2c8('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc2c8('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 8d1eda0..d4d2336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['request','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','then','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4d5f07,_0x28120f){var _0x38787d=function(_0x376ee3){while(--_0x376ee3){_0x4d5f07['push'](_0x4d5f07['shift']());}};_0x38787d(++_0x28120f);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x58faf0,_0x155add){_0x58faf0=_0x58faf0-0x0;var _0x12d75f=_0xcf2f[_0x58faf0];return _0x12d75f;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41d4bd,_0x157f48,_0x16b6b2){return new BPromise(function(_0x34f444,_0xb4c510){return client[_0xfcf2('0xd')](_0x41d4bd,_0x16b6b2)['then'](function(_0x575f33){logger['info'](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));logger['debug'](_0xfcf2('0x10'),_0x157f48,_0xfcf2('0xf'),JSON[_0xfcf2('0x11')](_0x575f33));if(_0x575f33[_0xfcf2('0x12')]){if(_0x575f33['error']['code']===0x1f4){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x575f33[_0xfcf2('0x12')][_0xfcf2('0x13')]);return _0xb4c510(_0x575f33['error'][_0xfcf2('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x157f48,_0x575f33['error'][_0xfcf2('0x13')]);return _0x34f444(_0x575f33['error'][_0xfcf2('0x13')]);}else{logger[_0xfcf2('0x14')](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));_0x34f444(_0x575f33[_0xfcf2('0x15')][_0xfcf2('0x13')]);}})[_0xfcf2('0x16')](function(_0x4d64ce){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x4d64ce);_0xb4c510(_0x4d64ce);});});}exports[_0xfcf2('0x17')]=function(_0x581d78){var _0xd87472=this;return new Promise(function(_0x1b3c89,_0x33eaa7){return db[_0xfcf2('0x18')][_0xfcf2('0x19')](_0x581d78['body'],{'raw':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1b')]||null:null,'attributes':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1c')]||null:null,'limit':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1d')]||null:null})['then'](function(_0x3790ed){logger[_0xfcf2('0x14')](_0xfcf2('0x17'),_0x581d78);logger['debug'](_0xfcf2('0x17'),_0x581d78,JSON[_0xfcf2('0x11')](_0x3790ed));_0x1b3c89(_0x3790ed);})['catch'](function(_0x3c3774){logger[_0xfcf2('0x12')]('UpdateVoiceRecording',_0x3c3774[_0xfcf2('0x13')],_0x581d78);_0x33eaa7(_0xd87472[_0xfcf2('0x12')](0x1f4,_0x3c3774[_0xfcf2('0x13')]));});});};exports[_0xfcf2('0x1e')]=function(_0x5bb384){var _0x1deca3=this;return new Promise(function(_0x448222,_0x2a9d64){var _0x3779ee=require(_0xfcf2('0x1f'));var _0x2b1d60;return db[_0xfcf2('0x20')][_0xfcf2('0x21')]({'attributes':['id',_0xfcf2('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x4c2935){_0x2b1d60=_0x4c2935;return db[_0xfcf2('0x18')][_0xfcf2('0x23')](_0x5bb384[_0xfcf2('0x24')]);})['then'](function(_0x560898){if(_0x2b1d60['callRecordingEncryption']&&fs[_0xfcf2('0x25')](_0x560898[_0xfcf2('0x26')])){var _0x40c1ae=util[_0xfcf2('0x27')](_0xfcf2('0x28'),_0x560898[_0xfcf2('0x26')]);return _0x3779ee[_0xfcf2('0x29')](_0x560898['value'],_0x40c1ae,config['secrets'][_0xfcf2('0x2a')])[_0xfcf2('0x2b')](function(){fs[_0xfcf2('0x2c')](_0x560898[_0xfcf2('0x26')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x560898;});}return _0x560898;})[_0xfcf2('0x2b')](function(_0x5310e6){logger[_0xfcf2('0x14')](_0xfcf2('0x1e'),_0x5bb384);logger['debug'](_0xfcf2('0x1e'),_0x5bb384,JSON[_0xfcf2('0x11')](_0x5310e6));_0x448222(_0x5310e6);})[_0xfcf2('0x16')](function(_0x4046c6){logger[_0xfcf2('0x12')](_0xfcf2('0x1e'),_0x4046c6[_0xfcf2('0x13')],_0x5bb384);_0x2a9d64(_0x1deca3['error'](0x1f4,_0x4046c6[_0xfcf2('0x13')]));});});};
\ No newline at end of file
+var _0xd4a2=['client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','code','message','UpdateVoiceRecording','update','body','options','raw','attributes','limit','stringify','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','VoiceRecording','create','callRecordingEncryption','existsSync','value','format','%s.cypher','encryptFile','recording','unlink','lodash','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x24e0c9,_0x284109){var _0x4448f0=function(_0x576980){while(--_0x576980){_0x24e0c9['push'](_0x24e0c9['shift']());}};_0x4448f0(++_0x284109);}(_0xd4a2,0x173));var _0x2d4a=function(_0x56a43f,_0x34b663){_0x56a43f=_0x56a43f-0x0;var _0x4ce01f=_0xd4a2[_0x56a43f];return _0x4ce01f;};'use strict';var _=require(_0x2d4a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2d4a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d4a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x2d4a('0x3'));var logger=require('../../config/logger')(_0x2d4a('0x4'));var config=require(_0x2d4a('0x5'));var jayson=require(_0x2d4a('0x6'));var client=jayson[_0x2d4a('0x7')][_0x2d4a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57058f,_0x45fefb,_0x41b161){return new BPromise(function(_0x1f237e,_0x29597e){return client[_0x2d4a('0x9')](_0x57058f,_0x41b161)[_0x2d4a('0xa')](function(_0xb9f016){logger[_0x2d4a('0xb')](_0x2d4a('0xc'),_0x45fefb,_0x2d4a('0xd'));logger[_0x2d4a('0xe')](_0x2d4a('0xf'),_0x45fefb,'request\x20sent',JSON['stringify'](_0xb9f016));if(_0xb9f016[_0x2d4a('0x10')]){if(_0xb9f016['error'][_0x2d4a('0x11')]===0x1f4){logger[_0x2d4a('0x10')](_0x2d4a('0xc'),_0x45fefb,_0xb9f016[_0x2d4a('0x10')][_0x2d4a('0x12')]);return _0x29597e(_0xb9f016[_0x2d4a('0x10')][_0x2d4a('0x12')]);}logger[_0x2d4a('0x10')]('VoiceRecording,\x20%s,\x20%s',_0x45fefb,_0xb9f016['error'][_0x2d4a('0x12')]);return _0x1f237e(_0xb9f016['error'][_0x2d4a('0x12')]);}else{logger[_0x2d4a('0xb')](_0x2d4a('0xc'),_0x45fefb,_0x2d4a('0xd'));_0x1f237e(_0xb9f016['result'][_0x2d4a('0x12')]);}})['catch'](function(_0x2838fa){logger['error'](_0x2d4a('0xc'),_0x45fefb,_0x2838fa);_0x29597e(_0x2838fa);});});}exports[_0x2d4a('0x13')]=function(_0x2188b2){var _0x388371=this;return new Promise(function(_0x498956,_0x4fd169){return db['VoiceRecording'][_0x2d4a('0x14')](_0x2188b2[_0x2d4a('0x15')],{'raw':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2['options']['where']||null:null,'attributes':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x18')]||null:null,'limit':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x19')]||null:null})[_0x2d4a('0xa')](function(_0xa43fb1){logger['info'](_0x2d4a('0x13'),_0x2188b2);logger[_0x2d4a('0xe')](_0x2d4a('0x13'),_0x2188b2,JSON[_0x2d4a('0x1a')](_0xa43fb1));_0x498956(_0xa43fb1);})[_0x2d4a('0x1b')](function(_0xed2822){logger[_0x2d4a('0x10')](_0x2d4a('0x13'),_0xed2822['message'],_0x2188b2);_0x4fd169(_0x388371['error'](0x1f4,_0xed2822['message']));});});};exports[_0x2d4a('0x1c')]=function(_0x5029f3){var _0x410f7d=this;return new Promise(function(_0x3a2fd3,_0x3d5558){var _0x1d2fa6=require(_0x2d4a('0x1d'));var _0x326c38;return db[_0x2d4a('0x1e')][_0x2d4a('0x1f')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x2d4a('0xa')](function(_0x5ce262){_0x326c38=_0x5ce262;return db[_0x2d4a('0x20')][_0x2d4a('0x21')](_0x5029f3[_0x2d4a('0x15')]);})[_0x2d4a('0xa')](function(_0x101382){if(_0x326c38[_0x2d4a('0x22')]&&fs[_0x2d4a('0x23')](_0x101382[_0x2d4a('0x24')])){var _0x51b447=util[_0x2d4a('0x25')](_0x2d4a('0x26'),_0x101382[_0x2d4a('0x24')]);return _0x1d2fa6[_0x2d4a('0x27')](_0x101382[_0x2d4a('0x24')],_0x51b447,config['secrets'][_0x2d4a('0x28')])[_0x2d4a('0xa')](function(){fs[_0x2d4a('0x29')](_0x101382[_0x2d4a('0x24')]);logger[_0x2d4a('0xb')]('CreateVoiceRecording\x20file\x20encrypted');return _0x101382;});}return _0x101382;})[_0x2d4a('0xa')](function(_0x2ae694){logger[_0x2d4a('0xb')](_0x2d4a('0x1c'),_0x5029f3);logger[_0x2d4a('0xe')](_0x2d4a('0x1c'),_0x5029f3,JSON['stringify'](_0x2ae694));_0x3a2fd3(_0x2ae694);})[_0x2d4a('0x1b')](function(_0x28955f){logger[_0x2d4a('0x10')](_0x2d4a('0x1c'),_0x28955f[_0x2d4a('0x12')],_0x5029f3);_0x3d5558(_0x410f7d['error'](0x1f4,_0x28955f[_0x2d4a('0x12')]));});});};
\ No newline at end of file
index 1547121..7df6e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb55c=['describe','show','post','put','/:id','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xb55c,0x7d));var _0xcb55=function(_0x14634f,_0x5ed190){_0x14634f=_0x14634f-0x0;var _0x5021f9=_0xb55c[_0x14634f];return _0x5021f9;};'use strict';var multer=require('multer');var util=require(_0xcb55('0x0'));var path=require('path');var timeout=require(_0xcb55('0x1'));var express=require('express');var router=express[_0xcb55('0x2')]();var fs_extra=require(_0xcb55('0x3'));var auth=require(_0xcb55('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xcb55('0x5'));var controller=require(_0xcb55('0x6'));router[_0xcb55('0x7')]('/',auth[_0xcb55('0x8')](),controller[_0xcb55('0x9')]);router[_0xcb55('0x7')](_0xcb55('0xa'),auth['isAuthenticated'](),controller[_0xcb55('0xb')]);router[_0xcb55('0x7')]('/:id',auth[_0xcb55('0x8')](),controller[_0xcb55('0xc')]);router[_0xcb55('0xd')]('/',auth[_0xcb55('0x8')](),controller['create']);router[_0xcb55('0xe')](_0xcb55('0xf'),auth[_0xcb55('0x8')](),controller['update']);router['delete'](_0xcb55('0xf'),auth[_0xcb55('0x8')](),controller['destroy']);module[_0xcb55('0x10')]=router;
\ No newline at end of file
+var _0x0c8a=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','index','/describe','isAuthenticated'];(function(_0x14db45,_0x25820f){var _0x3f80b2=function(_0x22cd3c){while(--_0x22cd3c){_0x14db45['push'](_0x14db45['shift']());}};_0x3f80b2(++_0x25820f);}(_0x0c8a,0x17a));var _0xa0c8=function(_0x92fadf,_0x36a6cb){_0x92fadf=_0x92fadf-0x0;var _0x3afcf7=_0x0c8a[_0x92fadf];return _0x3afcf7;};'use strict';var multer=require(_0xa0c8('0x0'));var util=require(_0xa0c8('0x1'));var path=require(_0xa0c8('0x2'));var timeout=require(_0xa0c8('0x3'));var express=require(_0xa0c8('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa0c8('0x5'));var interaction=require(_0xa0c8('0x6'));var config=require(_0xa0c8('0x7'));var controller=require(_0xa0c8('0x8'));router[_0xa0c8('0x9')]('/',auth['isAuthenticated'](),controller[_0xa0c8('0xa')]);router[_0xa0c8('0x9')](_0xa0c8('0xb'),auth[_0xa0c8('0xc')](),controller[_0xa0c8('0xd')]);router[_0xa0c8('0x9')](_0xa0c8('0xe'),auth['isAuthenticated'](),controller[_0xa0c8('0xf')]);router[_0xa0c8('0x10')]('/',auth[_0xa0c8('0xc')](),controller[_0xa0c8('0x11')]);router[_0xa0c8('0x12')]('/:id',auth[_0xa0c8('0xc')](),controller[_0xa0c8('0x13')]);router[_0xa0c8('0x14')]('/:id',auth[_0xa0c8('0xc')](),controller[_0xa0c8('0x15')]);module[_0xa0c8('0x16')]=router;
\ No newline at end of file
index f1b38cb..8210e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaadd=['ENUM','blind','attended','STRING','Yes','sequelize','moment'];(function(_0x44376c,_0x123e78){var _0x3746c7=function(_0x4327ec){while(--_0x4327ec){_0x44376c['push'](_0x44376c['shift']());}};_0x3746c7(++_0x123e78);}(_0xaadd,0xde));var _0xdaad=function(_0x5f08a6,_0x400121){_0x5f08a6=_0x5f08a6-0x0;var _0x5d0641=_0xaadd[_0x5f08a6];return _0x5d0641;};'use strict';var Sequelize=require(_0xdaad('0x0'));var moment=require(_0xdaad('0x1'));module['exports']={'type':{'type':Sequelize[_0xdaad('0x2')](_0xdaad('0x3'),_0xdaad('0x4'))},'result':{'type':Sequelize[_0xdaad('0x5')]},'transfererchannel':{'type':Sequelize[_0xdaad('0x5')]},'transferercalleridnum':{'type':Sequelize[_0xdaad('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0xdaad('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0xdaad('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xdaad('0x5')]},'transferercontext':{'type':Sequelize[_0xdaad('0x5')]},'transfererexten':{'type':Sequelize[_0xdaad('0x5')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0xdaad('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0xdaad('0x5')]},'transfereecalleridname':{'type':Sequelize[_0xdaad('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0xdaad('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xdaad('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xdaad('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xdaad('0x5')]},'isexternal':{'type':Sequelize[_0xdaad('0x2')](_0xdaad('0x6'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4cc0=['STRING','ENUM','Yes','moment','exports','blind','attended'];(function(_0x1f5834,_0x421950){var _0x418e31=function(_0x5f5cc4){while(--_0x5f5cc4){_0x1f5834['push'](_0x1f5834['shift']());}};_0x418e31(++_0x421950);}(_0x4cc0,0x161));var _0x04cc=function(_0x3a60b8,_0x47caab){_0x3a60b8=_0x3a60b8-0x0;var _0x4eb583=_0x4cc0[_0x3a60b8];return _0x4eb583;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x04cc('0x0'));module[_0x04cc('0x1')]={'type':{'type':Sequelize['ENUM'](_0x04cc('0x2'),_0x04cc('0x3'))},'result':{'type':Sequelize[_0x04cc('0x4')]},'transfererchannel':{'type':Sequelize[_0x04cc('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x04cc('0x4')]},'transferercalleridname':{'type':Sequelize[_0x04cc('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x04cc('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x04cc('0x4')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x04cc('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x04cc('0x4')]},'transfereechannel':{'type':Sequelize[_0x04cc('0x4')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x04cc('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x04cc('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x04cc('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x04cc('0x4')]},'transfereecontext':{'type':Sequelize[_0x04cc('0x4')]},'transfereeexten':{'type':Sequelize[_0x04cc('0x4')]},'transfereelinkedid':{'type':Sequelize[_0x04cc('0x4')]},'isexternal':{'type':Sequelize[_0x04cc('0x5')](_0x04cc('0x6'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x04cc('0x4')]}};
\ No newline at end of file
index 0f0d3d0..8314748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee42=['undefined','limit','count','status','set','Content-Range','reject','save','then','name','send','index','map','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceTransferReport','include','catch','show','params','keys','includeAll','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xee42,0x155));var _0x2ee4=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xee42[_0x341e0f];return _0x59555a;};'use strict';var emlformat=require(_0x2ee4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2ee4('0x1'));var jsonpatch=require(_0x2ee4('0x2'));var rp=require('request-promise');var moment=require(_0x2ee4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2ee4('0x4'));var util=require(_0x2ee4('0x5'));var path=require(_0x2ee4('0x6'));var sox=require(_0x2ee4('0x7'));var csv=require(_0x2ee4('0x8'));var ejs=require(_0x2ee4('0x9'));var fs=require('fs');var fs_extra=require(_0x2ee4('0xa'));var _=require('lodash');var squel=require(_0x2ee4('0xb'));var crypto=require(_0x2ee4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2ee4('0xd'));var toCsv=require(_0x2ee4('0x8'));var querystring=require(_0x2ee4('0xe'));var Papa=require(_0x2ee4('0xf'));var Redis=require(_0x2ee4('0x10'));var authService=require(_0x2ee4('0x11'));var qs=require(_0x2ee4('0x12'));var as=require(_0x2ee4('0x13'));var hardwareService=require(_0x2ee4('0x14'));var logger=require(_0x2ee4('0x15'))('api');var utils=require(_0x2ee4('0x16'));var config=require(_0x2ee4('0x17'));var licenseUtil=require(_0x2ee4('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4028b5,_0x276a76){_0x276a76=_0x276a76||0xcc;return function(_0xcc99e6){if(_0xcc99e6){return _0x4028b5[_0x2ee4('0x19')](_0x276a76);}return _0x4028b5['status'](_0x276a76)[_0x2ee4('0x1a')]();};}function respondWithResult(_0x15bed5,_0x156f13){_0x156f13=_0x156f13||0xc8;return function(_0x3fac9d){if(_0x3fac9d){return _0x15bed5['status'](_0x156f13)[_0x2ee4('0x1b')](_0x3fac9d);}};}function respondWithFilteredResult(_0x4b0bf3,_0x66aadd){return function(_0xad1a66){if(_0xad1a66){var _0xe2b84f=typeof _0x66aadd[_0x2ee4('0x1c')]===_0x2ee4('0x1d')&&typeof _0x66aadd[_0x2ee4('0x1e')]===_0x2ee4('0x1d');var _0x303a31=_0xad1a66['count'];var _0xf9350a=_0xe2b84f?0x0:_0x66aadd[_0x2ee4('0x1c')];var _0x3a6dd9=_0xe2b84f?_0xad1a66[_0x2ee4('0x1f')]:_0x66aadd[_0x2ee4('0x1c')]+_0x66aadd[_0x2ee4('0x1e')];var _0x35b5e5;if(_0x3a6dd9>=_0x303a31){_0x3a6dd9=_0x303a31;_0x35b5e5=0xc8;}else{_0x35b5e5=0xce;}_0x4b0bf3[_0x2ee4('0x20')](_0x35b5e5);return _0x4b0bf3[_0x2ee4('0x21')](_0x2ee4('0x22'),_0xf9350a+'-'+_0x3a6dd9+'/'+_0x303a31)[_0x2ee4('0x1b')](_0xad1a66);}return null;};}function patchUpdates(_0x25cede){return function(_0xb8c3c9){try{jsonpatch['apply'](_0xb8c3c9,_0x25cede,!![]);}catch(_0xd876f4){return BPromise[_0x2ee4('0x23')](_0xd876f4);}return _0xb8c3c9[_0x2ee4('0x24')]();};}function saveUpdates(_0x29d0b6,_0x25f616){return function(_0x3df497){if(_0x3df497){return _0x3df497['update'](_0x29d0b6)[_0x2ee4('0x25')](function(_0xa41319){return _0xa41319;});}return null;};}function removeEntity(_0x17a827,_0x54c0a5){return function(_0x1f0ba7){if(_0x1f0ba7){return _0x1f0ba7['destroy']()[_0x2ee4('0x25')](function(){_0x17a827[_0x2ee4('0x20')](0xcc)[_0x2ee4('0x1a')]();});}};}function handleEntityNotFound(_0x152ca2,_0x3a41e4){return function(_0x97e97d){if(!_0x97e97d){_0x152ca2['sendStatus'](0x194);}return _0x97e97d;};}function handleError(_0x59bcb7,_0x5c8e43){_0x5c8e43=_0x5c8e43||0x1f4;return function(_0x361ee9){logger['error'](_0x361ee9['stack']);if(_0x361ee9['name']){delete _0x361ee9[_0x2ee4('0x26')];}_0x59bcb7[_0x2ee4('0x20')](_0x5c8e43)[_0x2ee4('0x27')](_0x361ee9);};}exports[_0x2ee4('0x28')]=function(_0x486f98,_0x4012c5){var _0x4f9b57={},_0x45ca70={},_0x2d28e3={'count':0x0,'rows':[]};var _0x3aa6b5=_[_0x2ee4('0x29')](db['VoiceTransferReport'][_0x2ee4('0x2a')],function(_0x327a3b){return{'name':_0x327a3b[_0x2ee4('0x2b')],'type':_0x327a3b['type'][_0x2ee4('0x2c')]};});_0x45ca70['model']=_['map'](_0x3aa6b5,_0x2ee4('0x26'));_0x45ca70[_0x2ee4('0x2d')]=_['keys'](_0x486f98[_0x2ee4('0x2d')]);_0x45ca70[_0x2ee4('0x2e')]=_[_0x2ee4('0x2f')](_0x45ca70[_0x2ee4('0x30')],_0x45ca70[_0x2ee4('0x2d')]);_0x4f9b57[_0x2ee4('0x31')]=_[_0x2ee4('0x2f')](_0x45ca70[_0x2ee4('0x30')],qs[_0x2ee4('0x32')](_0x486f98[_0x2ee4('0x2d')][_0x2ee4('0x32')]));_0x4f9b57[_0x2ee4('0x31')]=_0x4f9b57[_0x2ee4('0x31')][_0x2ee4('0x33')]?_0x4f9b57['attributes']:_0x45ca70[_0x2ee4('0x30')];if(!_0x486f98[_0x2ee4('0x2d')]['hasOwnProperty'](_0x2ee4('0x34'))){_0x4f9b57[_0x2ee4('0x1e')]=qs[_0x2ee4('0x1e')](_0x486f98['query'][_0x2ee4('0x1e')]);_0x4f9b57[_0x2ee4('0x1c')]=qs['offset'](_0x486f98['query']['offset']);}_0x4f9b57[_0x2ee4('0x35')]=qs[_0x2ee4('0x36')](_0x486f98[_0x2ee4('0x2d')][_0x2ee4('0x36')]);_0x4f9b57[_0x2ee4('0x37')]=qs['filters'](_[_0x2ee4('0x38')](_0x486f98[_0x2ee4('0x2d')],_0x45ca70[_0x2ee4('0x2e')]),_0x3aa6b5);if(_0x486f98[_0x2ee4('0x2d')][_0x2ee4('0x39')]){_0x4f9b57['where']=_[_0x2ee4('0x3a')](_0x4f9b57['where'],{'$or':_[_0x2ee4('0x29')](_0x3aa6b5,function(_0x3c70b5){if(_0x3c70b5[_0x2ee4('0x3b')]!==_0x2ee4('0x3c')){var _0x40b35e={};_0x40b35e[_0x3c70b5[_0x2ee4('0x26')]]={'$like':'%'+_0x486f98['query']['filter']+'%'};return _0x40b35e;}})});}_0x4f9b57=_['merge']({},_0x4f9b57,_0x486f98[_0x2ee4('0x3d')]);var _0x49e625={'where':_0x4f9b57[_0x2ee4('0x37')]};return db[_0x2ee4('0x3e')]['count'](_0x49e625)[_0x2ee4('0x25')](function(_0x382b16){_0x2d28e3['count']=_0x382b16;if(_0x486f98['query']['includeAll']){_0x4f9b57[_0x2ee4('0x3f')]=[{'all':!![]}];}return db[_0x2ee4('0x3e')]['findAll'](_0x4f9b57);})[_0x2ee4('0x25')](function(_0x4159bd){_0x2d28e3['rows']=_0x4159bd;return _0x2d28e3;})[_0x2ee4('0x25')](respondWithFilteredResult(_0x4012c5,_0x4f9b57))[_0x2ee4('0x40')](handleError(_0x4012c5,null));};exports[_0x2ee4('0x41')]=function(_0x45fd79,_0x58a0e3){var _0x5979f8={'raw':!![],'where':{'id':_0x45fd79[_0x2ee4('0x42')]['id']}},_0x385efd={};_0x385efd[_0x2ee4('0x30')]=_[_0x2ee4('0x43')](db[_0x2ee4('0x3e')]['rawAttributes']);_0x385efd['query']=_[_0x2ee4('0x43')](_0x45fd79[_0x2ee4('0x2d')]);_0x385efd[_0x2ee4('0x2e')]=_['intersection'](_0x385efd[_0x2ee4('0x30')],_0x385efd[_0x2ee4('0x2d')]);_0x5979f8[_0x2ee4('0x31')]=_['intersection'](_0x385efd[_0x2ee4('0x30')],qs[_0x2ee4('0x32')](_0x45fd79[_0x2ee4('0x2d')][_0x2ee4('0x32')]));_0x5979f8['attributes']=_0x5979f8[_0x2ee4('0x31')][_0x2ee4('0x33')]?_0x5979f8[_0x2ee4('0x31')]:_0x385efd[_0x2ee4('0x30')];if(_0x45fd79[_0x2ee4('0x2d')][_0x2ee4('0x44')]){_0x5979f8[_0x2ee4('0x3f')]=[{'all':!![]}];}_0x5979f8=_[_0x2ee4('0x3a')]({},_0x5979f8,_0x45fd79[_0x2ee4('0x3d')]);return db[_0x2ee4('0x3e')][_0x2ee4('0x45')](_0x5979f8)[_0x2ee4('0x25')](handleEntityNotFound(_0x58a0e3,null))['then'](respondWithResult(_0x58a0e3,null))['catch'](handleError(_0x58a0e3,null));};exports[_0x2ee4('0x46')]=function(_0x2b322e,_0x421915){return db['VoiceTransferReport'][_0x2ee4('0x46')](_0x2b322e[_0x2ee4('0x47')],{})[_0x2ee4('0x25')](respondWithResult(_0x421915,0xc9))[_0x2ee4('0x40')](handleError(_0x421915,null));};exports[_0x2ee4('0x48')]=function(_0x1087ae,_0x1c212d){if(_0x1087ae[_0x2ee4('0x47')]['id']){delete _0x1087ae[_0x2ee4('0x47')]['id'];}return db[_0x2ee4('0x3e')]['find']({'where':{'id':_0x1087ae[_0x2ee4('0x42')]['id']}})[_0x2ee4('0x25')](handleEntityNotFound(_0x1c212d,null))[_0x2ee4('0x25')](saveUpdates(_0x1087ae[_0x2ee4('0x47')],null))['then'](respondWithResult(_0x1c212d,null))[_0x2ee4('0x40')](handleError(_0x1c212d,null));};exports['destroy']=function(_0x56a4a7,_0x4266d4){return db[_0x2ee4('0x3e')][_0x2ee4('0x45')]({'where':{'id':_0x56a4a7[_0x2ee4('0x42')]['id']}})[_0x2ee4('0x25')](handleEntityNotFound(_0x4266d4,null))[_0x2ee4('0x25')](removeEntity(_0x4266d4,null))[_0x2ee4('0x40')](handleError(_0x4266d4,null));};exports[_0x2ee4('0x49')]=function(_0xae3e6e,_0x15d36c){return db['VoiceTransferReport'][_0x2ee4('0x49')]()[_0x2ee4('0x25')](respondWithResult(_0x15d36c,null))[_0x2ee4('0x40')](handleError(_0x15d36c,null));};
\ No newline at end of file
+var _0x5307=['fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','length','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','error','stack','name','send','map','VoiceTransferReport','rawAttributes'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5307,0xf6));var _0x7530=function(_0x128587,_0x28f58e){_0x128587=_0x128587-0x0;var _0x3458c3=_0x5307[_0x128587];return _0x3458c3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7530('0x0'));var zipdir=require(_0x7530('0x1'));var jsonpatch=require(_0x7530('0x2'));var rp=require(_0x7530('0x3'));var moment=require(_0x7530('0x4'));var BPromise=require(_0x7530('0x5'));var Mustache=require(_0x7530('0x6'));var util=require(_0x7530('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7530('0x8'));var ejs=require(_0x7530('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7530('0xa'));var squel=require(_0x7530('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7530('0xc'));var toCsv=require(_0x7530('0x8'));var querystring=require(_0x7530('0xd'));var Papa=require('papaparse');var Redis=require(_0x7530('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x7530('0xf'));var as=require(_0x7530('0x10'));var hardwareService=require(_0x7530('0x11'));var logger=require(_0x7530('0x12'))(_0x7530('0x13'));var utils=require(_0x7530('0x14'));var config=require(_0x7530('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f3b34,_0x5f472b){_0x5f472b=_0x5f472b||0xcc;return function(_0x1564ed){if(_0x1564ed){return _0x2f3b34[_0x7530('0x16')](_0x5f472b);}return _0x2f3b34['status'](_0x5f472b)['end']();};}function respondWithResult(_0x12bc69,_0x4715f5){_0x4715f5=_0x4715f5||0xc8;return function(_0x3b7c25){if(_0x3b7c25){return _0x12bc69[_0x7530('0x17')](_0x4715f5)[_0x7530('0x18')](_0x3b7c25);}};}function respondWithFilteredResult(_0x1595d,_0x2abf22){return function(_0x1da7a9){if(_0x1da7a9){var _0x3e0908=typeof _0x2abf22[_0x7530('0x19')]===_0x7530('0x1a')&&typeof _0x2abf22[_0x7530('0x1b')]==='undefined';var _0x2badc6=_0x1da7a9[_0x7530('0x1c')];var _0x41b810=_0x3e0908?0x0:_0x2abf22[_0x7530('0x19')];var _0xe5f1f1=_0x3e0908?_0x1da7a9[_0x7530('0x1c')]:_0x2abf22[_0x7530('0x19')]+_0x2abf22[_0x7530('0x1b')];var _0x56635a;if(_0xe5f1f1>=_0x2badc6){_0xe5f1f1=_0x2badc6;_0x56635a=0xc8;}else{_0x56635a=0xce;}_0x1595d[_0x7530('0x17')](_0x56635a);return _0x1595d[_0x7530('0x1d')]('Content-Range',_0x41b810+'-'+_0xe5f1f1+'/'+_0x2badc6)[_0x7530('0x18')](_0x1da7a9);}return null;};}function patchUpdates(_0x51cae0){return function(_0x2ec1c0){try{jsonpatch['apply'](_0x2ec1c0,_0x51cae0,!![]);}catch(_0x235c71){return BPromise[_0x7530('0x1e')](_0x235c71);}return _0x2ec1c0[_0x7530('0x1f')]();};}function saveUpdates(_0x2ff5de,_0x34fede){return function(_0x1abdb8){if(_0x1abdb8){return _0x1abdb8[_0x7530('0x20')](_0x2ff5de)['then'](function(_0x2eb138){return _0x2eb138;});}return null;};}function removeEntity(_0x124c8c,_0x10755e){return function(_0xe3f932){if(_0xe3f932){return _0xe3f932[_0x7530('0x21')]()[_0x7530('0x22')](function(){_0x124c8c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f7a3d,_0x4c7228){return function(_0x7442e0){if(!_0x7442e0){_0x2f7a3d[_0x7530('0x16')](0x194);}return _0x7442e0;};}function handleError(_0x4bc518,_0x5172f9){_0x5172f9=_0x5172f9||0x1f4;return function(_0x3b8eb2){logger[_0x7530('0x23')](_0x3b8eb2[_0x7530('0x24')]);if(_0x3b8eb2[_0x7530('0x25')]){delete _0x3b8eb2[_0x7530('0x25')];}_0x4bc518[_0x7530('0x17')](_0x5172f9)[_0x7530('0x26')](_0x3b8eb2);};}exports['index']=function(_0x34917d,_0x32f75f){var _0x19dbc2={},_0x5eeeb7={},_0x1998a4={'count':0x0,'rows':[]};var _0x367a50=_[_0x7530('0x27')](db[_0x7530('0x28')][_0x7530('0x29')],function(_0x5143a3){return{'name':_0x5143a3[_0x7530('0x2a')],'type':_0x5143a3[_0x7530('0x2b')][_0x7530('0x2c')]};});_0x5eeeb7['model']=_[_0x7530('0x27')](_0x367a50,_0x7530('0x25'));_0x5eeeb7[_0x7530('0x2d')]=_[_0x7530('0x2e')](_0x34917d[_0x7530('0x2d')]);_0x5eeeb7[_0x7530('0x2f')]=_[_0x7530('0x30')](_0x5eeeb7[_0x7530('0x31')],_0x5eeeb7['query']);_0x19dbc2[_0x7530('0x32')]=_[_0x7530('0x30')](_0x5eeeb7[_0x7530('0x31')],qs[_0x7530('0x33')](_0x34917d['query'][_0x7530('0x33')]));_0x19dbc2[_0x7530('0x32')]=_0x19dbc2[_0x7530('0x32')]['length']?_0x19dbc2[_0x7530('0x32')]:_0x5eeeb7[_0x7530('0x31')];if(!_0x34917d[_0x7530('0x2d')][_0x7530('0x34')](_0x7530('0x35'))){_0x19dbc2[_0x7530('0x1b')]=qs[_0x7530('0x1b')](_0x34917d[_0x7530('0x2d')][_0x7530('0x1b')]);_0x19dbc2[_0x7530('0x19')]=qs[_0x7530('0x19')](_0x34917d[_0x7530('0x2d')]['offset']);}_0x19dbc2[_0x7530('0x36')]=qs[_0x7530('0x37')](_0x34917d[_0x7530('0x2d')][_0x7530('0x37')]);_0x19dbc2[_0x7530('0x38')]=qs[_0x7530('0x2f')](_[_0x7530('0x39')](_0x34917d['query'],_0x5eeeb7['filters']),_0x367a50);if(_0x34917d[_0x7530('0x2d')][_0x7530('0x3a')]){_0x19dbc2[_0x7530('0x38')]=_[_0x7530('0x3b')](_0x19dbc2[_0x7530('0x38')],{'$or':_['map'](_0x367a50,function(_0x178f0b){if(_0x178f0b[_0x7530('0x2b')]!==_0x7530('0x3c')){var _0x18d9fb={};_0x18d9fb[_0x178f0b[_0x7530('0x25')]]={'$like':'%'+_0x34917d[_0x7530('0x2d')][_0x7530('0x3a')]+'%'};return _0x18d9fb;}})});}_0x19dbc2=_['merge']({},_0x19dbc2,_0x34917d[_0x7530('0x3d')]);var _0x4ca566={'where':_0x19dbc2['where']};return db['VoiceTransferReport'][_0x7530('0x1c')](_0x4ca566)[_0x7530('0x22')](function(_0x2c835e){_0x1998a4['count']=_0x2c835e;if(_0x34917d['query'][_0x7530('0x3e')]){_0x19dbc2['include']=[{'all':!![]}];}return db[_0x7530('0x28')][_0x7530('0x3f')](_0x19dbc2);})[_0x7530('0x22')](function(_0x1983ce){_0x1998a4[_0x7530('0x40')]=_0x1983ce;return _0x1998a4;})['then'](respondWithFilteredResult(_0x32f75f,_0x19dbc2))[_0x7530('0x41')](handleError(_0x32f75f,null));};exports[_0x7530('0x42')]=function(_0x2b1765,_0x58c7ae){var _0x4b9264={'raw':!![],'where':{'id':_0x2b1765['params']['id']}},_0x3e29a5={};_0x3e29a5[_0x7530('0x31')]=_['keys'](db[_0x7530('0x28')][_0x7530('0x29')]);_0x3e29a5[_0x7530('0x2d')]=_[_0x7530('0x2e')](_0x2b1765[_0x7530('0x2d')]);_0x3e29a5[_0x7530('0x2f')]=_[_0x7530('0x30')](_0x3e29a5['model'],_0x3e29a5[_0x7530('0x2d')]);_0x4b9264[_0x7530('0x32')]=_['intersection'](_0x3e29a5[_0x7530('0x31')],qs[_0x7530('0x33')](_0x2b1765['query'][_0x7530('0x33')]));_0x4b9264[_0x7530('0x32')]=_0x4b9264[_0x7530('0x32')][_0x7530('0x43')]?_0x4b9264[_0x7530('0x32')]:_0x3e29a5[_0x7530('0x31')];if(_0x2b1765[_0x7530('0x2d')][_0x7530('0x3e')]){_0x4b9264['include']=[{'all':!![]}];}_0x4b9264=_[_0x7530('0x3b')]({},_0x4b9264,_0x2b1765[_0x7530('0x3d')]);return db['VoiceTransferReport'][_0x7530('0x44')](_0x4b9264)[_0x7530('0x22')](handleEntityNotFound(_0x58c7ae,null))[_0x7530('0x22')](respondWithResult(_0x58c7ae,null))['catch'](handleError(_0x58c7ae,null));};exports[_0x7530('0x45')]=function(_0x1b0900,_0x5442ac){return db[_0x7530('0x28')][_0x7530('0x45')](_0x1b0900[_0x7530('0x46')],{})[_0x7530('0x22')](respondWithResult(_0x5442ac,0xc9))[_0x7530('0x41')](handleError(_0x5442ac,null));};exports[_0x7530('0x20')]=function(_0x5bd67c,_0x1dc9b3){if(_0x5bd67c[_0x7530('0x46')]['id']){delete _0x5bd67c[_0x7530('0x46')]['id'];}return db[_0x7530('0x28')][_0x7530('0x44')]({'where':{'id':_0x5bd67c['params']['id']}})['then'](handleEntityNotFound(_0x1dc9b3,null))[_0x7530('0x22')](saveUpdates(_0x5bd67c[_0x7530('0x46')],null))[_0x7530('0x22')](respondWithResult(_0x1dc9b3,null))[_0x7530('0x41')](handleError(_0x1dc9b3,null));};exports[_0x7530('0x21')]=function(_0x54e0b6,_0x41e375){return db[_0x7530('0x28')][_0x7530('0x44')]({'where':{'id':_0x54e0b6[_0x7530('0x47')]['id']}})[_0x7530('0x22')](handleEntityNotFound(_0x41e375,null))['then'](removeEntity(_0x41e375,null))[_0x7530('0x41')](handleError(_0x41e375,null));};exports['describe']=function(_0x193334,_0x4c4b46){return db[_0x7530('0x28')]['describe']()[_0x7530('0x22')](respondWithResult(_0x4c4b46,null))['catch'](handleError(_0x4c4b46,null));};
\ No newline at end of file
index 1850a19..6539b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9713=['util','../../config/logger','api','bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer','lodash'];(function(_0x4a3605,_0x1da6cf){var _0xf79a39=function(_0x574f2e){while(--_0x574f2e){_0x4a3605['push'](_0x4a3605['shift']());}};_0xf79a39(++_0x1da6cf);}(_0x9713,0x83));var _0x3971=function(_0x5092e2,_0x187ea4){_0x5092e2=_0x5092e2-0x0;var _0x3d4730=_0x9713[_0x5092e2];return _0x3d4730;};'use strict';var _=require(_0x3971('0x0'));var util=require(_0x3971('0x1'));var logger=require(_0x3971('0x2'))(_0x3971('0x3'));var moment=require('moment');var BPromise=require(_0x3971('0x4'));var rp=require(_0x3971('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3971('0x6'));var config=require('../../config/environment');var attributes=require(_0x3971('0x7'));module[_0x3971('0x8')]=function(_0x52edca,_0x4bcdc7){return _0x52edca['define'](_0x3971('0x9'),attributes,{'tableName':_0x3971('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xefac=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer','lodash','util'];(function(_0x310d10,_0x3fe887){var _0x1fb8af=function(_0x42965b){while(--_0x42965b){_0x310d10['push'](_0x310d10['shift']());}};_0x1fb8af(++_0x3fe887);}(_0xefac,0x172));var _0xcefa=function(_0x169a8e,_0x4d248d){_0x169a8e=_0x169a8e-0x0;var _0x310454=_0xefac[_0x169a8e];return _0x310454;};'use strict';var _=require(_0xcefa('0x0'));var util=require(_0xcefa('0x1'));var logger=require(_0xcefa('0x2'))('api');var moment=require(_0xcefa('0x3'));var BPromise=require(_0xcefa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcefa('0x5'));var rimraf=require(_0xcefa('0x6'));var config=require(_0xcefa('0x7'));var attributes=require(_0xcefa('0x8'));module[_0xcefa('0x9')]=function(_0x1f4359,_0x34339b){return _0x1f4359['define'](_0xcefa('0xa'),attributes,{'tableName':_0xcefa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44e391f..3b4c112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc54=['VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xcc54,0x8c));var _0x4cc5=function(_0x14db53,_0x3374b7){_0x14db53=_0x14db53-0x0;var _0x451312=_0xcc54[_0x14db53];return _0x451312;};'use strict';var _=require(_0x4cc5('0x0'));var util=require(_0x4cc5('0x1'));var moment=require('moment');var BPromise=require(_0x4cc5('0x2'));var rs=require(_0x4cc5('0x3'));var fs=require('fs');var Redis=require(_0x4cc5('0x4'));var db=require(_0x4cc5('0x5'))['db'];var utils=require(_0x4cc5('0x6'));var logger=require(_0x4cc5('0x7'))('rpc');var config=require(_0x4cc5('0x8'));var jayson=require(_0x4cc5('0x9'));var client=jayson[_0x4cc5('0xa')][_0x4cc5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x7ecf3f,_0x446ed5,_0x91e5fe){return new BPromise(function(_0x3ff83d,_0x2ac3cd){return client[_0x4cc5('0xc')](_0x7ecf3f,_0x91e5fe)[_0x4cc5('0xd')](function(_0x2c96c0){logger[_0x4cc5('0xe')](_0x4cc5('0xf'),_0x446ed5,_0x4cc5('0x10'));logger[_0x4cc5('0x11')](_0x4cc5('0x12'),_0x446ed5,_0x4cc5('0x10'),JSON[_0x4cc5('0x13')](_0x2c96c0));if(_0x2c96c0['error']){if(_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x15')]===0x1f4){logger['error'](_0x4cc5('0xf'),_0x446ed5,_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x16')]);return _0x2ac3cd(_0x2c96c0['error'][_0x4cc5('0x16')]);}logger[_0x4cc5('0x14')](_0x4cc5('0xf'),_0x446ed5,_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x16')]);return _0x3ff83d(_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x16')]);}else{logger['info'](_0x4cc5('0xf'),_0x446ed5,_0x4cc5('0x10'));_0x3ff83d(_0x2c96c0[_0x4cc5('0x17')][_0x4cc5('0x16')]);}})[_0x4cc5('0x18')](function(_0x1951c3){logger[_0x4cc5('0x14')]('VoiceTransferReport,\x20%s,\x20%s',_0x446ed5,_0x1951c3);_0x2ac3cd(_0x1951c3);});});}exports[_0x4cc5('0x19')]=function(_0x215731){var _0x5bedff=this;return new Promise(function(_0x2ff1c0,_0x1da953){return db[_0x4cc5('0x1a')][_0x4cc5('0x1b')](_0x215731[_0x4cc5('0x1c')],{'raw':_0x215731[_0x4cc5('0x1d')]?_0x215731['options'][_0x4cc5('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x3dab05){logger[_0x4cc5('0xe')](_0x4cc5('0x19'),_0x215731);logger[_0x4cc5('0x11')]('CreateVoiceTransferReport',_0x215731,JSON['stringify'](_0x3dab05));_0x2ff1c0(_0x3dab05);})[_0x4cc5('0x18')](function(_0x57c695){logger[_0x4cc5('0x14')](_0x4cc5('0x19'),_0x57c695['message'],_0x215731);_0x1da953(_0x5bedff[_0x4cc5('0x14')](0x1f4,_0x57c695['message']));});});};
\ No newline at end of file
+var _0x76de=['rpc','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateVoiceTransferReport','VoiceTransferReport','options','raw','catch','lodash','util','moment','bluebird','ioredis','../../config/logger'];(function(_0x466283,_0x2b450b){var _0x41d120=function(_0x18d8ee){while(--_0x18d8ee){_0x466283['push'](_0x466283['shift']());}};_0x41d120(++_0x2b450b);}(_0x76de,0x18f));var _0xe76d=function(_0x3f80c8,_0x285f9b){_0x3f80c8=_0x3f80c8-0x0;var _0x5d091a=_0x76de[_0x3f80c8];return _0x5d091a;};'use strict';var _=require(_0xe76d('0x0'));var util=require(_0xe76d('0x1'));var moment=require(_0xe76d('0x2'));var BPromise=require(_0xe76d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe76d('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe76d('0x5'))(_0xe76d('0x6'));var config=require('../../config/environment');var jayson=require(_0xe76d('0x7'));var client=jayson[_0xe76d('0x8')][_0xe76d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1b71e8,_0x32d556,_0x2d80f5){return new BPromise(function(_0x3847df,_0x2af993){return client[_0xe76d('0xa')](_0x1b71e8,_0x2d80f5)[_0xe76d('0xb')](function(_0x35acb4){logger[_0xe76d('0xc')](_0xe76d('0xd'),_0x32d556,_0xe76d('0xe'));logger[_0xe76d('0xf')](_0xe76d('0x10'),_0x32d556,_0xe76d('0xe'),JSON[_0xe76d('0x11')](_0x35acb4));if(_0x35acb4[_0xe76d('0x12')]){if(_0x35acb4[_0xe76d('0x12')][_0xe76d('0x13')]===0x1f4){logger[_0xe76d('0x12')](_0xe76d('0xd'),_0x32d556,_0x35acb4[_0xe76d('0x12')][_0xe76d('0x14')]);return _0x2af993(_0x35acb4[_0xe76d('0x12')][_0xe76d('0x14')]);}logger['error'](_0xe76d('0xd'),_0x32d556,_0x35acb4['error'][_0xe76d('0x14')]);return _0x3847df(_0x35acb4[_0xe76d('0x12')][_0xe76d('0x14')]);}else{logger[_0xe76d('0xc')](_0xe76d('0xd'),_0x32d556,_0xe76d('0xe'));_0x3847df(_0x35acb4[_0xe76d('0x15')][_0xe76d('0x14')]);}})['catch'](function(_0x563c50){logger['error'](_0xe76d('0xd'),_0x32d556,_0x563c50);_0x2af993(_0x563c50);});});}exports[_0xe76d('0x16')]=function(_0x5cd0fb){var _0x189f39=this;return new Promise(function(_0x5dfeea,_0x44e8ea){return db[_0xe76d('0x17')]['create'](_0x5cd0fb['body'],{'raw':_0x5cd0fb['options']?_0x5cd0fb[_0xe76d('0x18')][_0xe76d('0x19')]===undefined?!![]:![]:!![]})[_0xe76d('0xb')](function(_0xe26a38){logger[_0xe76d('0xc')](_0xe76d('0x16'),_0x5cd0fb);logger[_0xe76d('0xf')]('CreateVoiceTransferReport',_0x5cd0fb,JSON[_0xe76d('0x11')](_0xe26a38));_0x5dfeea(_0xe26a38);})[_0xe76d('0x1a')](function(_0x118433){logger['error'](_0xe76d('0x16'),_0x118433[_0xe76d('0x14')],_0x5cd0fb);_0x44e8ea(_0x189f39[_0xe76d('0x12')](0x1f4,_0x118433[_0xe76d('0x14')]));});});};
\ No newline at end of file
index 96ed7a7..8b77c28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb626=['post','/originate','isAuthenticated','canUpdate','originate','hangup','answer','hold','/unhold','/transfer','transfer','express','../../components/auth/service'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb626,0xa7));var _0x6b62=function(_0x543824,_0x5f4897){_0x543824=_0x543824-0x0;var _0x2d1863=_0xb626[_0x543824];return _0x2d1863;};'use strict';var express=require(_0x6b62('0x0'));var router=express['Router']();var auth=require(_0x6b62('0x1'));var controller=require('./webbar.controller');router[_0x6b62('0x2')](_0x6b62('0x3'),auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller[_0x6b62('0x6')]);router['post']('/hangup',auth[_0x6b62('0x4')](),auth['canUpdate'](),controller[_0x6b62('0x7')]);router[_0x6b62('0x2')]('/answer',auth[_0x6b62('0x4')](),auth['canUpdate'](),controller[_0x6b62('0x8')]);router['post']('/hold',auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller[_0x6b62('0x9')]);router[_0x6b62('0x2')](_0x6b62('0xa'),auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller['unhold']);router[_0x6b62('0x2')]('/calls',auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller['calls']);router['post'](_0x6b62('0xb'),auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller[_0x6b62('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0xf175=['/unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','canUpdate','originate','/hangup','hangup','/answer','answer','/hold','hold'];(function(_0x532745,_0x1a16d6){var _0x37a301=function(_0x380cb7){while(--_0x380cb7){_0x532745['push'](_0x532745['shift']());}};_0x37a301(++_0x1a16d6);}(_0xf175,0x1aa));var _0x5f17=function(_0x4573df,_0x1447c0){_0x4573df=_0x4573df-0x0;var _0x5b5b44=_0xf175[_0x4573df];return _0x5b5b44;};'use strict';var express=require(_0x5f17('0x0'));var router=express[_0x5f17('0x1')]();var auth=require(_0x5f17('0x2'));var controller=require(_0x5f17('0x3'));router[_0x5f17('0x4')](_0x5f17('0x5'),auth[_0x5f17('0x6')](),auth[_0x5f17('0x7')](),controller[_0x5f17('0x8')]);router[_0x5f17('0x4')](_0x5f17('0x9'),auth[_0x5f17('0x6')](),auth[_0x5f17('0x7')](),controller[_0x5f17('0xa')]);router[_0x5f17('0x4')](_0x5f17('0xb'),auth['isAuthenticated'](),auth[_0x5f17('0x7')](),controller[_0x5f17('0xc')]);router[_0x5f17('0x4')](_0x5f17('0xd'),auth[_0x5f17('0x6')](),auth[_0x5f17('0x7')](),controller[_0x5f17('0xe')]);router[_0x5f17('0x4')](_0x5f17('0xf'),auth[_0x5f17('0x6')](),auth['canUpdate'](),controller['unhold']);router['post'](_0x5f17('0x10'),auth[_0x5f17('0x6')](),auth[_0x5f17('0x7')](),controller[_0x5f17('0x11')]);router[_0x5f17('0x4')](_0x5f17('0x12'),auth[_0x5f17('0x6')](),auth['canUpdate'](),controller[_0x5f17('0x13')]);module[_0x5f17('0x14')]=router;
\ No newline at end of file
index 02ca348..656342c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c3=['error','name','send','status','NotFound','request','then','code','message','catch','User','findOne','agent','VoiceChannels','all','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','userId','user:%s','webbar:hangup','hangup\x20executed!','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','unhold\x20executed!','calls\x20fired:','filter','conference\x20fired:','webbar:conference','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:'];(function(_0x36792a,_0xdf39cb){var _0x35a602=function(_0x2f05de){while(--_0x2f05de){_0x36792a['push'](_0x36792a['shift']());}};_0x35a602(++_0xdf39cb);}(_0x07c3,0x1bf));var _0x307c=function(_0x16bf05,_0x4f70da){_0x16bf05=_0x16bf05-0x0;var _0xbcf546=_0x07c3[_0x16bf05];return _0xbcf546;};'use strict';var path=require(_0x307c('0x0'));var fs=require('fs');var _=require(_0x307c('0x1'));var db=require(_0x307c('0x2'))['db'];var config=require(_0x307c('0x3'));var util=require(_0x307c('0x4'));var BPromise=require(_0x307c('0x5'));var jayson=require(_0x307c('0x6'));var amiClient=jayson[_0x307c('0x7')]['http']({'port':0x232a});var logger=require(_0x307c('0x8'))(_0x307c('0x9'));var Redis=require(_0x307c('0xa'));config[_0x307c('0xb')]=_[_0x307c('0xc')](config[_0x307c('0xb')],{'host':_0x307c('0xd'),'port':0x18eb});var io=require(_0x307c('0xe'))(new Redis(config[_0x307c('0xb')]));var Schema=require(_0x307c('0xf'));var originateValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'callNumber':{'type':_0x307c('0x12'),'required':[!![],_0x307c('0x13')]},'callerId':{'type':_0x307c('0x12')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'sessionId':{'type':_0x307c('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x307c('0x12'),'required':[!![],_0x307c('0x14')]},'transferNumber':{'type':'string','required':[!![],_0x307c('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'sessionId':{'type':_0x307c('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'sessionId':{'type':_0x307c('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]}});function emit(_0x424a74,_0x53e2f4,_0x2a3edc){logger[_0x307c('0x16')](_0x424a74,_0x53e2f4,JSON[_0x307c('0x17')](_0x2a3edc));io['to'](_0x424a74)[_0x307c('0x18')](_0x53e2f4,_0x2a3edc);}function handleError(_0x301e1a){return function(_0x2e21a6){console[_0x307c('0x19')](_0x307c('0x1a'),_0x2e21a6,_0x2e21a6 instanceof RangeError);logger[_0x307c('0x1b')](_0x2e21a6['stack']);if(_0x2e21a6 instanceof RangeError){if(_0x2e21a6['name']){delete _0x2e21a6[_0x307c('0x1c')];}_0x301e1a['status'](0x194)[_0x307c('0x1d')](_0x2e21a6);}else{if(_0x2e21a6['name']){delete _0x2e21a6['name'];}_0x301e1a[_0x307c('0x1e')](0x1f4)[_0x307c('0x1d')](_0x2e21a6);}};}function checkError(){return function(_0x5eb73d){if(!_0x5eb73d){throw new RangeError(_0x307c('0x1f'));}return _0x5eb73d;};}function respondWithRpcPromise(_0xa79b24,_0x5b640f){return new BPromise(function(_0x1cdc48,_0x45fe2){var _0x574622=amiClient;return _0x574622[_0x307c('0x20')](_0xa79b24,_0x5b640f)[_0x307c('0x21')](function(_0x9a66a0){if(_0x9a66a0[_0x307c('0x1b')]){if(_0x9a66a0[_0x307c('0x1b')][_0x307c('0x22')]===0x1f4){return _0x45fe2(_0x9a66a0[_0x307c('0x1b')][_0x307c('0x23')]);}return _0x1cdc48(_0x9a66a0[_0x307c('0x1b')][_0x307c('0x23')]);}else{_0x1cdc48(_0x9a66a0['result']);}})[_0x307c('0x24')](function(_0x58c383){_0x45fe2(_0x58c383);});});}function getAgent(_0x598d43){return db[_0x307c('0x25')][_0x307c('0x26')]({'where':{'id':_0x598d43,'role':_0x307c('0x27')}})[_0x307c('0x21')](checkError());}function getAgentCheckSession(_0x25dede,_0x1591d1){return new BPromise(function(_0x4fd125,_0x1fbdda){var _0x181fa2=respondWithRpcPromise(_0x307c('0x28'));var _0x54da33=getAgent(_0x25dede);Promise[_0x307c('0x29')]([_0x181fa2,_0x54da33])[_0x307c('0x21')](function(_0xcb6ae6){var _0x12d9a9=_0xcb6ae6[0x0];var _0x3a58ec=_0xcb6ae6[0x1];var _0x1e5da0=_['filter'](_0x12d9a9[_0x307c('0x2a')],function(_0x1e448e){return _0x1e448e[_0x307c('0x2b')]==_0x3a58ec['id']&&_0x1e448e[_0x307c('0x2c')]==_0x1591d1;});if(_0x1e5da0[_0x307c('0x2d')]==0x1){_0x4fd125(_0x3a58ec);}else{_0x1fbdda(new RangeError(_0x307c('0x2e')+_0x1591d1+_0x307c('0x2f')));}});});}exports[_0x307c('0x30')]=function(_0x12b5f4,_0x55f4c0){logger[_0x307c('0x16')](_0x307c('0x31'),_0x12b5f4[_0x307c('0x32')]);var _0x1a706a=originateValidation[_0x307c('0xf')](_0x12b5f4[_0x307c('0x32')]);if(_0x1a706a[_0x307c('0x2d')]>0x0){return _0x55f4c0[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x1a706a);}var _0x4338e2=_0x12b5f4[_0x307c('0x32')]['userId'];var _0x107518=_0x12b5f4[_0x307c('0x32')]['callNumber'];var _0x383e25=_0x12b5f4[_0x307c('0x32')]['callerId'];var _0x4fa969=_0x12b5f4['body'][_0x307c('0x34')];return getAgent(_0x4338e2)[_0x307c('0x21')](function(_0x878c8c){logger[_0x307c('0x16')](_0x307c('0x35'),_0x878c8c[_0x307c('0x1c')]);emit(util[_0x307c('0x36')]('user:%s',_0x878c8c[_0x307c('0x1c')]),_0x307c('0x37'),{'callNumber':_0x107518,'callerId':_0x383e25,'callbackUrl':_0x4fa969});return _0x55f4c0[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x38')});})[_0x307c('0x24')](handleError(_0x55f4c0));};exports[_0x307c('0x39')]=function(_0x5da51b,_0x5f085a){logger['info'](_0x307c('0x3a'),_0x5da51b[_0x307c('0x32')]);var _0x4e2873=hangupValidation['validate'](_0x5da51b[_0x307c('0x32')]);if(_0x4e2873['length']>0x0){return _0x5f085a[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x4e2873);}var _0x31e3fa=_0x5da51b[_0x307c('0x32')][_0x307c('0x3b')];var _0x70fc50=_0x5da51b[_0x307c('0x32')][_0x307c('0x2c')];return getAgent(_0x31e3fa)['then'](function(_0x2d7544){logger['info'](_0x307c('0x35'),_0x2d7544['name']);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x2d7544[_0x307c('0x1c')]),_0x307c('0x3d'),{'sessionId':_0x70fc50});return _0x5f085a[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x3e')});})[_0x307c('0x24')](handleError(_0x5f085a));};exports[_0x307c('0x3f')]=function(_0x1f645e,_0xaa4479){logger[_0x307c('0x16')]('answer\x20fired:',_0x1f645e['body']);var _0x3c8758=answerValidation[_0x307c('0xf')](_0x1f645e[_0x307c('0x32')]);if(_0x3c8758[_0x307c('0x2d')]>0x0){return _0xaa4479[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x3c8758);}var _0x4a7f36=_0x1f645e['body'][_0x307c('0x3b')];var _0x5d7d0d=_0x1f645e[_0x307c('0x32')][_0x307c('0x2c')];return getAgent(_0x4a7f36)[_0x307c('0x21')](function(_0x4de79e){logger[_0x307c('0x16')](_0x307c('0x35'),_0x4de79e[_0x307c('0x1c')]);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x4de79e['name']),_0x307c('0x40'),{'sessionId':_0x5d7d0d});return _0xaa4479[_0x307c('0x1e')](0xc8)['json']({'error':![],'message':_0x307c('0x41')});})[_0x307c('0x24')](handleError(_0xaa4479));};exports[_0x307c('0x42')]=function(_0x195b90,_0x3a9013){logger[_0x307c('0x16')](_0x307c('0x43'),_0x195b90['body']);var _0x3dee68=holdValidation[_0x307c('0xf')](_0x195b90[_0x307c('0x32')]);if(_0x3dee68['length']>0x0){return _0x3a9013[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x3dee68);}var _0x2ced73=_0x195b90[_0x307c('0x32')]['userId'];var _0xa1faa0=_0x195b90['body']['sessionId'];return getAgent(_0x2ced73)['then'](function(_0x26081b){logger[_0x307c('0x16')](_0x307c('0x35'),_0x26081b[_0x307c('0x1c')]);emit(util['format'](_0x307c('0x3c'),_0x26081b[_0x307c('0x1c')]),_0x307c('0x44'),{'sessionId':_0xa1faa0});return _0x3a9013[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x45')});})[_0x307c('0x24')](handleError(_0x3a9013));};exports['unhold']=function(_0x50876a,_0x1f41c9){logger[_0x307c('0x16')](_0x307c('0x46'),_0x50876a[_0x307c('0x32')]);var _0x4006da=unholdValidation[_0x307c('0xf')](_0x50876a[_0x307c('0x32')]);if(_0x4006da['length']>0x0){return _0x1f41c9['status'](0x190)[_0x307c('0x33')](_0x4006da);}var _0x6d04b8=_0x50876a[_0x307c('0x32')][_0x307c('0x3b')];var _0x46f257=_0x50876a['body']['sessionId'];return getAgent(_0x6d04b8)['then'](function(_0x41cae0){logger[_0x307c('0x16')]('entityFound:',_0x41cae0[_0x307c('0x1c')]);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x41cae0['name']),'webbar:unhold',{'sessionId':_0x46f257});return _0x1f41c9['status'](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x47')});})['catch'](handleError(_0x1f41c9));};exports['calls']=function(_0x46b41e,_0x38d1ff){logger['info'](_0x307c('0x48'),_0x38d1ff[_0x307c('0x32')]);var _0xd27876=callsValidation[_0x307c('0xf')](_0x46b41e['body']);if(_0xd27876[_0x307c('0x2d')]>0x0){return _0x38d1ff[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0xd27876);}var _0x3c2b3d=_0x46b41e[_0x307c('0x32')][_0x307c('0x3b')];var _0x34d223=respondWithRpcPromise(_0x307c('0x28'));var _0x560d36=getAgent(_0x3c2b3d);return Promise[_0x307c('0x29')]([_0x34d223,_0x560d36])[_0x307c('0x21')](function(_0x5d9fb4){var _0x55ecb7=_0x5d9fb4[0x0];var _0x10efed=_0x5d9fb4[0x1];var _0xe1ddea=_[_0x307c('0x49')](_0x55ecb7[_0x307c('0x2a')],function(_0x55c268){return _0x55c268['UserId']==_0x10efed['id'];});return _0x38d1ff[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'count':_0xe1ddea['length'],'rows':_0xe1ddea});})['catch'](handleError(_0x38d1ff));};exports['conference']=function(_0x2bc93a,_0x3b68d2){logger[_0x307c('0x16')](_0x307c('0x4a'),_0x2bc93a[_0x307c('0x32')]);var _0xfe43a2=conferenceValidation['validate'](_0x2bc93a[_0x307c('0x32')]);if(_0xfe43a2[_0x307c('0x2d')]>0x0){return _0x3b68d2[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0xfe43a2);}var _0x54bfb3=_0x2bc93a[_0x307c('0x32')]['userId'];return getAgent(_0x54bfb3)[_0x307c('0x21')](function(_0x15d37b){logger['info'](_0x307c('0x35'),_0x15d37b['name']);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x15d37b['name']),_0x307c('0x4b'));return _0x3b68d2[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x3b68d2));};exports['transfer']=function(_0x38cdfb,_0x32cc40){logger['info'](_0x307c('0x4c'),_0x38cdfb[_0x307c('0x32')]);var _0x580983=transferValidation['validate'](_0x38cdfb[_0x307c('0x32')]);if(_0x580983['length']>0x0){return _0x32cc40[_0x307c('0x1e')](0x190)['json'](_0x580983);}var _0x4307a9=_0x38cdfb['body'][_0x307c('0x3b')];var _0xa82555=_0x38cdfb['body'][_0x307c('0x2c')];var _0x12e471=_0x38cdfb['body']['transferNumber'];return getAgent(_0x4307a9)['then'](function(_0x27d0b2){logger[_0x307c('0x16')](_0x307c('0x35'),_0x27d0b2['name']);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x27d0b2[_0x307c('0x1c')]),_0x307c('0x4d'),{'sessionId':_0xa82555,'transferNumber':_0x12e471});return _0x32cc40[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x4e')});})[_0x307c('0x24')](handleError(_0x32cc40));};
\ No newline at end of file
+var _0x0a9a=['hold\x20executed!','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../config/environment','util','bluebird','jayson/promise','http','../../config/logger','ioredis','redis','defaults','socket.io-emitter','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','send','NotFound','request','then','code','message','result','User','findOne','VoiceChannels','all','filter','rows','UserId','sessionId','sessionId\x20','\x20not\x20found!','body','length','status','json','userId','callNumber','callbackUrl','entityFound:','user:%s','webbar:originate','originate\x20executed!','catch','hangup','hangup\x20fired:','webbar:hangup','answer','format','webbar:answer','answer\x20executed!','hold','hold\x20fired:'];(function(_0xb46e79,_0x646117){var _0x62b60d=function(_0xaf75a2){while(--_0xaf75a2){_0xb46e79['push'](_0xb46e79['shift']());}};_0x62b60d(++_0x646117);}(_0x0a9a,0x183));var _0xa0a9=function(_0x1b20d2,_0x34eec4){_0x1b20d2=_0x1b20d2-0x0;var _0x1d531a=_0x0a9a[_0x1b20d2];return _0x1d531a;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xa0a9('0x0'));var db=require('../../mysqldb')['db'];var config=require(_0xa0a9('0x1'));var util=require(_0xa0a9('0x2'));var BPromise=require(_0xa0a9('0x3'));var jayson=require(_0xa0a9('0x4'));var amiClient=jayson['client'][_0xa0a9('0x5')]({'port':0x232a});var logger=require(_0xa0a9('0x6'))('webbarapi');var Redis=require(_0xa0a9('0x7'));config[_0xa0a9('0x8')]=_[_0xa0a9('0x9')](config[_0xa0a9('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xa0a9('0xa'))(new Redis(config['redis']));var Schema=require(_0xa0a9('0xb'));var originateValidation=new Schema({'userId':{'type':_0xa0a9('0xc'),'required':[!![],_0xa0a9('0xd')]},'callNumber':{'type':_0xa0a9('0xe'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0xa0a9('0xe')},'callbackUrl':{'type':_0xa0a9('0xe')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xa0a9('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xa0a9('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xa0a9('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xa0a9('0xd')]},'sessionId':{'type':'string','required':[!![],_0xa0a9('0xf')]},'transferNumber':{'type':_0xa0a9('0xe'),'required':[!![],_0xa0a9('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0xa0a9('0xc'),'required':[!![],_0xa0a9('0xd')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xa0a9('0xc'),'required':[!![],_0xa0a9('0xd')]},'sessionId':{'type':_0xa0a9('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xa0a9('0xc'),'required':[!![],_0xa0a9('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0xa0a9('0xc'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x176faa,_0x48c315,_0x4a57dd){logger[_0xa0a9('0x11')](_0x176faa,_0x48c315,JSON[_0xa0a9('0x12')](_0x4a57dd));io['to'](_0x176faa)[_0xa0a9('0x13')](_0x48c315,_0x4a57dd);}function handleError(_0x16c3e3){return function(_0x568409){console[_0xa0a9('0x14')](_0xa0a9('0x15'),_0x568409,_0x568409 instanceof RangeError);logger[_0xa0a9('0x16')](_0x568409[_0xa0a9('0x17')]);if(_0x568409 instanceof RangeError){if(_0x568409[_0xa0a9('0x18')]){delete _0x568409[_0xa0a9('0x18')];}_0x16c3e3['status'](0x194)[_0xa0a9('0x19')](_0x568409);}else{if(_0x568409[_0xa0a9('0x18')]){delete _0x568409['name'];}_0x16c3e3['status'](0x1f4)[_0xa0a9('0x19')](_0x568409);}};}function checkError(){return function(_0x1f6955){if(!_0x1f6955){throw new RangeError(_0xa0a9('0x1a'));}return _0x1f6955;};}function respondWithRpcPromise(_0x54a9a9,_0x307d7e){return new BPromise(function(_0x4e6f4c,_0x1fb36b){var _0x5e6148=amiClient;return _0x5e6148[_0xa0a9('0x1b')](_0x54a9a9,_0x307d7e)[_0xa0a9('0x1c')](function(_0x2f0b14){if(_0x2f0b14[_0xa0a9('0x16')]){if(_0x2f0b14['error'][_0xa0a9('0x1d')]===0x1f4){return _0x1fb36b(_0x2f0b14['error'][_0xa0a9('0x1e')]);}return _0x4e6f4c(_0x2f0b14[_0xa0a9('0x16')][_0xa0a9('0x1e')]);}else{_0x4e6f4c(_0x2f0b14[_0xa0a9('0x1f')]);}})['catch'](function(_0x7c1502){_0x1fb36b(_0x7c1502);});});}function getAgent(_0xe49d3b){return db[_0xa0a9('0x20')][_0xa0a9('0x21')]({'where':{'id':_0xe49d3b,'role':'agent'}})[_0xa0a9('0x1c')](checkError());}function getAgentCheckSession(_0x38e454,_0x2eae30){return new BPromise(function(_0x5c446e,_0x54125d){var _0x2b3cbb=respondWithRpcPromise(_0xa0a9('0x22'));var _0x10bbfd=getAgent(_0x38e454);Promise[_0xa0a9('0x23')]([_0x2b3cbb,_0x10bbfd])[_0xa0a9('0x1c')](function(_0xe218ff){var _0x2386c9=_0xe218ff[0x0];var _0x24e744=_0xe218ff[0x1];var _0xc6a4=_[_0xa0a9('0x24')](_0x2386c9[_0xa0a9('0x25')],function(_0x554191){return _0x554191[_0xa0a9('0x26')]==_0x24e744['id']&&_0x554191[_0xa0a9('0x27')]==_0x2eae30;});if(_0xc6a4['length']==0x1){_0x5c446e(_0x24e744);}else{_0x54125d(new RangeError(_0xa0a9('0x28')+_0x2eae30+_0xa0a9('0x29')));}});});}exports['originate']=function(_0x47c19b,_0x45374e){logger['info']('originate\x20fired:',_0x47c19b[_0xa0a9('0x2a')]);var _0x104936=originateValidation[_0xa0a9('0xb')](_0x47c19b[_0xa0a9('0x2a')]);if(_0x104936[_0xa0a9('0x2b')]>0x0){return _0x45374e[_0xa0a9('0x2c')](0x190)[_0xa0a9('0x2d')](_0x104936);}var _0x4bbcc2=_0x47c19b[_0xa0a9('0x2a')][_0xa0a9('0x2e')];var _0x539807=_0x47c19b[_0xa0a9('0x2a')][_0xa0a9('0x2f')];var _0x2363e6=_0x47c19b['body']['callerId'];var _0x3b1a11=_0x47c19b[_0xa0a9('0x2a')][_0xa0a9('0x30')];return getAgent(_0x4bbcc2)[_0xa0a9('0x1c')](function(_0x520817){logger[_0xa0a9('0x11')](_0xa0a9('0x31'),_0x520817[_0xa0a9('0x18')]);emit(util['format'](_0xa0a9('0x32'),_0x520817[_0xa0a9('0x18')]),_0xa0a9('0x33'),{'callNumber':_0x539807,'callerId':_0x2363e6,'callbackUrl':_0x3b1a11});return _0x45374e['status'](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':_0xa0a9('0x34')});})[_0xa0a9('0x35')](handleError(_0x45374e));};exports[_0xa0a9('0x36')]=function(_0x2e11dc,_0x1d6bae){logger[_0xa0a9('0x11')](_0xa0a9('0x37'),_0x2e11dc[_0xa0a9('0x2a')]);var _0x2ea301=hangupValidation[_0xa0a9('0xb')](_0x2e11dc[_0xa0a9('0x2a')]);if(_0x2ea301[_0xa0a9('0x2b')]>0x0){return _0x1d6bae[_0xa0a9('0x2c')](0x190)[_0xa0a9('0x2d')](_0x2ea301);}var _0x1b1aff=_0x2e11dc[_0xa0a9('0x2a')]['userId'];var _0x3f1e4f=_0x2e11dc[_0xa0a9('0x2a')][_0xa0a9('0x27')];return getAgent(_0x1b1aff)['then'](function(_0x757e10){logger[_0xa0a9('0x11')](_0xa0a9('0x31'),_0x757e10[_0xa0a9('0x18')]);emit(util['format'](_0xa0a9('0x32'),_0x757e10[_0xa0a9('0x18')]),_0xa0a9('0x38'),{'sessionId':_0x3f1e4f});return _0x1d6bae[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':'hangup\x20executed!'});})[_0xa0a9('0x35')](handleError(_0x1d6bae));};exports[_0xa0a9('0x39')]=function(_0x39c02a,_0x32d926){logger[_0xa0a9('0x11')]('answer\x20fired:',_0x39c02a[_0xa0a9('0x2a')]);var _0x11c130=answerValidation[_0xa0a9('0xb')](_0x39c02a[_0xa0a9('0x2a')]);if(_0x11c130[_0xa0a9('0x2b')]>0x0){return _0x32d926['status'](0x190)[_0xa0a9('0x2d')](_0x11c130);}var _0x1c8760=_0x39c02a['body']['userId'];var _0x41cd22=_0x39c02a[_0xa0a9('0x2a')][_0xa0a9('0x27')];return getAgent(_0x1c8760)[_0xa0a9('0x1c')](function(_0x4a128f){logger[_0xa0a9('0x11')](_0xa0a9('0x31'),_0x4a128f[_0xa0a9('0x18')]);emit(util[_0xa0a9('0x3a')](_0xa0a9('0x32'),_0x4a128f[_0xa0a9('0x18')]),_0xa0a9('0x3b'),{'sessionId':_0x41cd22});return _0x32d926[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':_0xa0a9('0x3c')});})[_0xa0a9('0x35')](handleError(_0x32d926));};exports[_0xa0a9('0x3d')]=function(_0x2fcc76,_0x3bb0fb){logger[_0xa0a9('0x11')](_0xa0a9('0x3e'),_0x2fcc76[_0xa0a9('0x2a')]);var _0x54e917=holdValidation[_0xa0a9('0xb')](_0x2fcc76['body']);if(_0x54e917[_0xa0a9('0x2b')]>0x0){return _0x3bb0fb[_0xa0a9('0x2c')](0x190)[_0xa0a9('0x2d')](_0x54e917);}var _0x132eca=_0x2fcc76[_0xa0a9('0x2a')][_0xa0a9('0x2e')];var _0x38cb0d=_0x2fcc76[_0xa0a9('0x2a')][_0xa0a9('0x27')];return getAgent(_0x132eca)['then'](function(_0x5d4162){logger[_0xa0a9('0x11')](_0xa0a9('0x31'),_0x5d4162['name']);emit(util[_0xa0a9('0x3a')](_0xa0a9('0x32'),_0x5d4162[_0xa0a9('0x18')]),'webbar:hold',{'sessionId':_0x38cb0d});return _0x3bb0fb[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':_0xa0a9('0x3f')});})[_0xa0a9('0x35')](handleError(_0x3bb0fb));};exports['unhold']=function(_0x398501,_0x45db88){logger[_0xa0a9('0x11')](_0xa0a9('0x40'),_0x398501[_0xa0a9('0x2a')]);var _0x41128b=unholdValidation[_0xa0a9('0xb')](_0x398501['body']);if(_0x41128b[_0xa0a9('0x2b')]>0x0){return _0x45db88[_0xa0a9('0x2c')](0x190)['json'](_0x41128b);}var _0x2cbd5e=_0x398501[_0xa0a9('0x2a')][_0xa0a9('0x2e')];var _0x506168=_0x398501['body'][_0xa0a9('0x27')];return getAgent(_0x2cbd5e)[_0xa0a9('0x1c')](function(_0x3f67ac){logger[_0xa0a9('0x11')]('entityFound:',_0x3f67ac['name']);emit(util[_0xa0a9('0x3a')](_0xa0a9('0x32'),_0x3f67ac['name']),'webbar:unhold',{'sessionId':_0x506168});return _0x45db88[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':_0xa0a9('0x41')});})[_0xa0a9('0x35')](handleError(_0x45db88));};exports[_0xa0a9('0x42')]=function(_0x361bf1,_0x24af09){logger[_0xa0a9('0x11')](_0xa0a9('0x43'),_0x24af09[_0xa0a9('0x2a')]);var _0x2da124=callsValidation['validate'](_0x361bf1[_0xa0a9('0x2a')]);if(_0x2da124[_0xa0a9('0x2b')]>0x0){return _0x24af09[_0xa0a9('0x2c')](0x190)['json'](_0x2da124);}var _0x426ddc=_0x361bf1[_0xa0a9('0x2a')][_0xa0a9('0x2e')];var _0x4a1912=respondWithRpcPromise(_0xa0a9('0x22'));var _0x18893f=getAgent(_0x426ddc);return Promise[_0xa0a9('0x23')]([_0x4a1912,_0x18893f])[_0xa0a9('0x1c')](function(_0x3d47b3){var _0x47107f=_0x3d47b3[0x0];var _0x12f97d=_0x3d47b3[0x1];var _0x577c1f=_[_0xa0a9('0x24')](_0x47107f[_0xa0a9('0x25')],function(_0x3f6ef4){return _0x3f6ef4[_0xa0a9('0x26')]==_0x12f97d['id'];});return _0x24af09[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'count':_0x577c1f[_0xa0a9('0x2b')],'rows':_0x577c1f});})['catch'](handleError(_0x24af09));};exports['conference']=function(_0x4a2307,_0x40d0f5){logger['info'](_0xa0a9('0x44'),_0x4a2307['body']);var _0x349f1b=conferenceValidation[_0xa0a9('0xb')](_0x4a2307[_0xa0a9('0x2a')]);if(_0x349f1b[_0xa0a9('0x2b')]>0x0){return _0x40d0f5[_0xa0a9('0x2c')](0x190)[_0xa0a9('0x2d')](_0x349f1b);}var _0x1c7191=_0x4a2307[_0xa0a9('0x2a')]['userId'];return getAgent(_0x1c7191)['then'](function(_0x471e1a){logger['info'](_0xa0a9('0x31'),_0x471e1a[_0xa0a9('0x18')]);emit(util[_0xa0a9('0x3a')]('user:%s',_0x471e1a[_0xa0a9('0x18')]),'webbar:conference');return _0x40d0f5[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':_0xa0a9('0x45')});})['catch'](handleError(_0x40d0f5));};exports[_0xa0a9('0x46')]=function(_0x478b4e,_0x2648e4){logger['info'](_0xa0a9('0x47'),_0x478b4e['body']);var _0x662a0=transferValidation[_0xa0a9('0xb')](_0x478b4e[_0xa0a9('0x2a')]);if(_0x662a0[_0xa0a9('0x2b')]>0x0){return _0x2648e4[_0xa0a9('0x2c')](0x190)[_0xa0a9('0x2d')](_0x662a0);}var _0x4cc06d=_0x478b4e[_0xa0a9('0x2a')][_0xa0a9('0x2e')];var _0x2e6d3f=_0x478b4e['body'][_0xa0a9('0x27')];var _0x184b0e=_0x478b4e[_0xa0a9('0x2a')][_0xa0a9('0x48')];return getAgent(_0x4cc06d)[_0xa0a9('0x1c')](function(_0x5581c7){logger[_0xa0a9('0x11')](_0xa0a9('0x31'),_0x5581c7[_0xa0a9('0x18')]);emit(util[_0xa0a9('0x3a')](_0xa0a9('0x32'),_0x5581c7[_0xa0a9('0x18')]),_0xa0a9('0x49'),{'sessionId':_0x2e6d3f,'transferNumber':_0x184b0e});return _0x2648e4[_0xa0a9('0x2c')](0xc8)[_0xa0a9('0x2d')]({'error':![],'message':_0xa0a9('0x4a')});})['catch'](handleError(_0x2648e4));};
\ No newline at end of file
index 8b91b80..b884686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8952=['getAgents','/:id/applications','create','/:id/dispositions','addDisposition','post','/:id/canned_answers','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','send','put','update','delete','destroy','removeAgents','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','getAnswers'];(function(_0x14e364,_0xa31983){var _0x9b3288=function(_0x24d6c5){while(--_0x24d6c5){_0x14e364['push'](_0x14e364['shift']());}};_0x9b3288(++_0xa31983);}(_0x8952,0x17e));var _0x2895=function(_0x46a63f,_0x2ba3cc){_0x46a63f=_0x46a63f-0x0;var _0x55069a=_0x8952[_0x46a63f];return _0x55069a;};'use strict';var multer=require('multer');var util=require(_0x2895('0x0'));var path=require(_0x2895('0x1'));var timeout=require(_0x2895('0x2'));var express=require(_0x2895('0x3'));var router=express[_0x2895('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2895('0x5'));var interaction=require(_0x2895('0x6'));var config=require(_0x2895('0x7'));var controller=require('./whatsappAccount.controller');router[_0x2895('0x8')]('/',auth[_0x2895('0x9')](),controller[_0x2895('0xa')]);router['get']('/describe',auth[_0x2895('0x9')](),controller[_0x2895('0xb')]);router[_0x2895('0x8')](_0x2895('0xc'),auth[_0x2895('0x9')](),controller['show']);router[_0x2895('0x8')]('/:id/dispositions',auth[_0x2895('0x9')](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0x2895('0x9')](),controller[_0x2895('0xd')]);router[_0x2895('0x8')]('/:id/users',auth[_0x2895('0x9')](),controller[_0x2895('0xe')]);router['get'](_0x2895('0xf'),auth[_0x2895('0x9')](),controller['getApplications']);router['post']('/',auth[_0x2895('0x9')](),controller[_0x2895('0x10')]);router['post'](_0x2895('0x11'),auth[_0x2895('0x9')](),controller[_0x2895('0x12')]);router[_0x2895('0x13')](_0x2895('0x14'),auth[_0x2895('0x9')](),controller[_0x2895('0x15')]);router[_0x2895('0x13')](_0x2895('0x16'),auth[_0x2895('0x9')](),controller[_0x2895('0x17')]);router[_0x2895('0x13')](_0x2895('0xf'),auth[_0x2895('0x9')](),controller[_0x2895('0x18')]);router[_0x2895('0x13')](_0x2895('0x19'),controller[_0x2895('0x1a')]);router['post']('/:id/send',auth['isAuthenticated'](),controller[_0x2895('0x1b')]);router[_0x2895('0x1c')](_0x2895('0xc'),auth['isAuthenticated'](),controller[_0x2895('0x1d')]);router[_0x2895('0x1e')](_0x2895('0xc'),auth[_0x2895('0x9')](),controller[_0x2895('0x1f')]);router['delete'](_0x2895('0x11'),auth[_0x2895('0x9')](),controller['removeDispositions']);router[_0x2895('0x1e')](_0x2895('0x14'),auth[_0x2895('0x9')](),controller['removeAnswers']);router['delete'](_0x2895('0x16'),auth[_0x2895('0x9')](),controller[_0x2895('0x20')]);module['exports']=router;
\ No newline at end of file
+var _0x57ca=['addDisposition','addAnswer','addApplications','/:id/notify','notify','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','/:id/dispositions'];(function(_0x510a57,_0x26ba84){var _0x4a0d7c=function(_0x15e523){while(--_0x15e523){_0x510a57['push'](_0x510a57['shift']());}};_0x4a0d7c(++_0x26ba84);}(_0x57ca,0x108));var _0xa57c=function(_0x5196d4,_0x38f9eb){_0x5196d4=_0x5196d4-0x0;var _0x154927=_0x57ca[_0x5196d4];return _0x154927;};'use strict';var multer=require('multer');var util=require(_0xa57c('0x0'));var path=require(_0xa57c('0x1'));var timeout=require('connect-timeout');var express=require(_0xa57c('0x2'));var router=express[_0xa57c('0x3')]();var fs_extra=require(_0xa57c('0x4'));var auth=require(_0xa57c('0x5'));var interaction=require(_0xa57c('0x6'));var config=require('../../config/environment');var controller=require(_0xa57c('0x7'));router[_0xa57c('0x8')]('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0xa')]);router[_0xa57c('0x8')](_0xa57c('0xb'),auth[_0xa57c('0x9')](),controller[_0xa57c('0xc')]);router['get'](_0xa57c('0xd'),auth['isAuthenticated'](),controller[_0xa57c('0xe')]);router[_0xa57c('0x8')]('/:id/dispositions',auth[_0xa57c('0x9')](),controller['getDispositions']);router[_0xa57c('0x8')](_0xa57c('0xf'),auth['isAuthenticated'](),controller[_0xa57c('0x10')]);router['get'](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x12')]);router[_0xa57c('0x8')](_0xa57c('0x13'),auth['isAuthenticated'](),controller[_0xa57c('0x14')]);router['post']('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0x15')]);router[_0xa57c('0x16')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x18')]);router[_0xa57c('0x16')]('/:id/canned_answers',auth[_0xa57c('0x9')](),controller[_0xa57c('0x19')]);router[_0xa57c('0x16')]('/:id/users',auth[_0xa57c('0x9')](),controller['addAgents']);router[_0xa57c('0x16')](_0xa57c('0x13'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1a')]);router[_0xa57c('0x16')](_0xa57c('0x1b'),controller[_0xa57c('0x1c')]);router[_0xa57c('0x16')]('/:id/send',auth[_0xa57c('0x9')](),controller['send']);router['put'](_0xa57c('0xd'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1d')]);router[_0xa57c('0x1e')]('/:id',auth[_0xa57c('0x9')](),controller[_0xa57c('0x1f')]);router[_0xa57c('0x1e')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x20')]);router[_0xa57c('0x1e')](_0xa57c('0xf'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x21')]);router[_0xa57c('0x1e')](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x22')]);module[_0xa57c('0x23')]=router;
\ No newline at end of file
index 4038580..1571c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf57e=['name','generate','ENUM','twilio','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','sequelize','randomstring','exports','STRING'];(function(_0x4b84bf,_0x344c66){var _0x29debc=function(_0x16cac8){while(--_0x16cac8){_0x4b84bf['push'](_0x4b84bf['shift']());}};_0x29debc(++_0x344c66);}(_0xf57e,0xec));var _0xef57=function(_0x2f8138,_0x2441b7){_0x2f8138=_0x2f8138-0x0;var _0x36fd78=_0xf57e[_0x2f8138];return _0x36fd78;};'use strict';var Sequelize=require(_0xef57('0x0'));var rs=require(_0xef57('0x1'));module[_0xef57('0x2')]={'name':{'type':Sequelize[_0xef57('0x3')],'unique':_0xef57('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xef57('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xef57('0x3')],'defaultValue':function(){return rs[_0xef57('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xef57('0x6')](_0xef57('0x7'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xef57('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xef57('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xef57('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xef57('0x9')],'comment':_0xef57('0xa')},'mandatoryDisposition':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1e944d){if(!_0x1e944d){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0xef57('0xb')]('mandatoryDisposition',_0x1e944d);}},'description':{'type':Sequelize[_0xef57('0x3')]}};
\ No newline at end of file
+var _0xc80e=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','STRING','name','generate','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x22c490,_0x14e9e0){var _0x3b65d4=function(_0x535bed){while(--_0x535bed){_0x22c490['push'](_0x22c490['shift']());}};_0x3b65d4(++_0x14e9e0);}(_0xc80e,0x18d));var _0xec80=function(_0x507b3b,_0x30c190){_0x507b3b=_0x507b3b-0x0;var _0xe1e48e=_0xc80e[_0x507b3b];return _0xe1e48e;};'use strict';var Sequelize=require(_0xec80('0x0'));var rs=require(_0xec80('0x1'));module['exports']={'name':{'type':Sequelize[_0xec80('0x2')],'unique':_0xec80('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xec80('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xec80('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0xec80('0x5'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xec80('0x2')]},'notificationTemplate':{'type':Sequelize[_0xec80('0x6')],'defaultValue':function(){return _0xec80('0x7');}},'notificationSound':{'type':Sequelize[_0xec80('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xec80('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xec80('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xec80('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xec80('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xec80('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xec80('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xec80('0x9')],'comment':_0xec80('0xa')},'mandatoryDisposition':{'type':Sequelize[_0xec80('0x8')],'defaultValue':![],'comment':_0xec80('0xb'),'set':function(_0x4eb402){if(!_0x4eb402){this[_0xec80('0xc')](_0xec80('0xd'),null);}this[_0xec80('0xc')]('mandatoryDisposition',_0x4eb402);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f3f1d4e..9404af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe509=['stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','client','http','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','WhatsappAccounts','UserProfileResource','destroy','stack','name','send','index','Pause','map','WhatsappAccount','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','type','VIRTUAL','filter','merge','options','includeAll','include','rows','params','mandatoryDispositionPause','rawAttributes','find','create','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addAgents','removeAgents','userWhatsappAccount:remove','emit','getAgents','addApplications','sequelize','transaction','bulkCreate','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','applications','asc','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','replace','whatsapp:','Body','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','ListId','CmContact','Contacts','DESC','list','defaults','contact','WhatsappInteraction','interaction','autoclose','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','entity\x20found'];(function(_0xecc333,_0x3333f0){var _0x5ef316=function(_0x36b3e3){while(--_0x36b3e3){_0xecc333['push'](_0xecc333['shift']());}};_0x5ef316(++_0x3333f0);}(_0xe509,0xc0));var _0x9e50=function(_0x50f392,_0x1d8441){_0x50f392=_0x50f392-0x0;var _0x5926f2=_0xe509[_0x50f392];return _0x5926f2;};'use strict';var emlformat=require(_0x9e50('0x0'));var rimraf=require(_0x9e50('0x1'));var zipdir=require(_0x9e50('0x2'));var jsonpatch=require(_0x9e50('0x3'));var rp=require(_0x9e50('0x4'));var moment=require(_0x9e50('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9e50('0x6'));var util=require(_0x9e50('0x7'));var path=require(_0x9e50('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9e50('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e50('0xa'));var squel=require(_0x9e50('0xb'));var crypto=require('crypto');var jsforce=require(_0x9e50('0xc'));var deskjs=require(_0x9e50('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9e50('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e50('0xf'));var hardwareService=require(_0x9e50('0x10'));var logger=require(_0x9e50('0x11'))(_0x9e50('0x12'));var utils=require(_0x9e50('0x13'));var config=require(_0x9e50('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9e50('0x15'))['db'];config[_0x9e50('0x16')]=_['defaults'](config[_0x9e50('0x16')],{'host':_0x9e50('0x17'),'port':0x18eb});var socket=require(_0x9e50('0x18'))(new Redis(config[_0x9e50('0x16')]));require(_0x9e50('0x19'))['register'](socket);var jayson=require(_0x9e50('0x1a'));var client=jayson[_0x9e50('0x1b')][_0x9e50('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x5cab26,_0x401028,_0x5b504d,_0x2d2685){return new BPromise(function(_0x28c007,_0x59d0dc){var _0x52f338=_0x2d2685||client;return _0x52f338['request'](_0x5cab26,_0x5b504d)['then'](function(_0xb8bd74){logger[_0x9e50('0x1d')](_0x9e50('0x1e'),_0x401028,'request\x20sent');logger[_0x9e50('0x1f')](_0x9e50('0x20'),_0x401028,_0x9e50('0x21'),JSON['stringify'](_0xb8bd74));if(_0xb8bd74[_0x9e50('0x22')]){if(_0xb8bd74[_0x9e50('0x22')]['code']===0x1f4){logger[_0x9e50('0x22')](_0x9e50('0x1e'),_0x401028,_0xb8bd74[_0x9e50('0x22')][_0x9e50('0x23')]);return _0x59d0dc(_0xb8bd74['error']['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x401028,_0xb8bd74['error']['message']);return _0x28c007(_0xb8bd74[_0x9e50('0x22')][_0x9e50('0x23')]);}else{logger[_0x9e50('0x1d')](_0x9e50('0x1e'),_0x401028,_0x9e50('0x21'));_0x28c007(_0xb8bd74[_0x9e50('0x24')]['message']);}})[_0x9e50('0x25')](function(_0x2d7e44){logger[_0x9e50('0x22')](_0x9e50('0x1e'),_0x401028,_0x2d7e44);_0x59d0dc(_0x2d7e44);});});}function respondWithStatusCode(_0x58730c,_0x333a5f){_0x333a5f=_0x333a5f||0xcc;return function(_0x51957b){if(_0x51957b){return _0x58730c[_0x9e50('0x26')](_0x333a5f);}return _0x58730c[_0x9e50('0x27')](_0x333a5f)[_0x9e50('0x28')]();};}function respondWithResult(_0x26fdc8,_0x4759ab){_0x4759ab=_0x4759ab||0xc8;return function(_0x3fc487){if(_0x3fc487){return _0x26fdc8[_0x9e50('0x27')](_0x4759ab)[_0x9e50('0x29')](_0x3fc487);}};}function respondWithFilteredResult(_0x6c095a,_0x434fad){return function(_0x5df340){if(_0x5df340){var _0xd1b869=typeof _0x434fad[_0x9e50('0x2a')]===_0x9e50('0x2b')&&typeof _0x434fad[_0x9e50('0x2c')]===_0x9e50('0x2b');var _0x2c18a8=_0x5df340[_0x9e50('0x2d')];var _0x119ec3=_0xd1b869?0x0:_0x434fad[_0x9e50('0x2a')];var _0x40d4b6=_0xd1b869?_0x5df340[_0x9e50('0x2d')]:_0x434fad[_0x9e50('0x2a')]+_0x434fad[_0x9e50('0x2c')];var _0xc07766;if(_0x40d4b6>=_0x2c18a8){_0x40d4b6=_0x2c18a8;_0xc07766=0xc8;}else{_0xc07766=0xce;}_0x6c095a[_0x9e50('0x27')](_0xc07766);return _0x6c095a[_0x9e50('0x2e')](_0x9e50('0x2f'),_0x119ec3+'-'+_0x40d4b6+'/'+_0x2c18a8)[_0x9e50('0x29')](_0x5df340);}return null;};}function patchUpdates(_0x18bf0b){return function(_0x2f8c70){try{jsonpatch[_0x9e50('0x30')](_0x2f8c70,_0x18bf0b,!![]);}catch(_0xa46379){return BPromise[_0x9e50('0x31')](_0xa46379);}return _0x2f8c70[_0x9e50('0x32')]();};}function saveUpdates(_0x7c4e2f,_0x34af53){return function(_0x1ed9d0){if(_0x1ed9d0){return _0x1ed9d0[_0x9e50('0x33')](_0x7c4e2f)[_0x9e50('0x34')](function(_0x5bfa26){return _0x5bfa26;});}return null;};}function removeEntity(_0x4ab1de,_0x5a0f5c){return function(_0x2adb33){if(_0x2adb33){return _0x2adb33['destroy']()[_0x9e50('0x34')](function(){var _0x9ec78b=_0x2adb33[_0x9e50('0x35')]({'plain':!![]});var _0x9a4806=_0x9e50('0x36');return db[_0x9e50('0x37')][_0x9e50('0x38')]({'where':{'type':_0x9a4806,'resourceId':_0x9ec78b['id']}})[_0x9e50('0x34')](function(){return _0x2adb33;});})['then'](function(){_0x4ab1de['status'](0xcc)[_0x9e50('0x28')]();});}};}function handleEntityNotFound(_0x24d584,_0x34a600){return function(_0x2c3f24){if(!_0x2c3f24){_0x24d584[_0x9e50('0x26')](0x194);}return _0x2c3f24;};}function handleError(_0x35c486,_0x26935e){_0x26935e=_0x26935e||0x1f4;return function(_0x4eff52){logger['error'](_0x4eff52[_0x9e50('0x39')]);if(_0x4eff52[_0x9e50('0x3a')]){delete _0x4eff52[_0x9e50('0x3a')];}_0x35c486[_0x9e50('0x27')](_0x26935e)[_0x9e50('0x3b')](_0x4eff52);};}exports[_0x9e50('0x3c')]=function(_0x50f904,_0x45cd51){var _0x166652={'include':[{'model':db[_0x9e50('0x3d')],'as':'mandatoryDispositionPause'}]},_0x24aed5={},_0x4f7758={'count':0x0,'rows':[]};var _0x24f40d=_[_0x9e50('0x3e')](db[_0x9e50('0x3f')]['rawAttributes'],function(_0x13bb97){return{'name':_0x13bb97['fieldName'],'type':_0x13bb97['type'][_0x9e50('0x40')]};});_0x24aed5[_0x9e50('0x41')]=_[_0x9e50('0x3e')](_0x24f40d,_0x9e50('0x3a'));_0x24aed5[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0x50f904[_0x9e50('0x42')]);_0x24aed5['filters']=_[_0x9e50('0x44')](_0x24aed5[_0x9e50('0x41')],_0x24aed5[_0x9e50('0x42')]);_0x166652['attributes']=_['intersection'](_0x24aed5[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x50f904[_0x9e50('0x42')]['fields']));_0x166652[_0x9e50('0x46')]=_0x166652['attributes'][_0x9e50('0x47')]?_0x166652['attributes']:_0x24aed5[_0x9e50('0x41')];if(!_0x50f904[_0x9e50('0x42')][_0x9e50('0x48')]('nolimit')){_0x166652['limit']=qs['limit'](_0x50f904[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x166652[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x50f904[_0x9e50('0x42')]['offset']);}_0x166652[_0x9e50('0x49')]=qs[_0x9e50('0x4a')](_0x50f904[_0x9e50('0x42')]['sort']);_0x166652[_0x9e50('0x4b')]=qs['filters'](_[_0x9e50('0x4c')](_0x50f904['query'],_0x24aed5[_0x9e50('0x4d')]),_0x24f40d);if(_0x50f904[_0x9e50('0x42')]['filter']){_0x166652[_0x9e50('0x4b')]=_['merge'](_0x166652['where'],{'$or':_['map'](_0x24f40d,function(_0x3fe9ab){if(_0x3fe9ab[_0x9e50('0x4e')]!==_0x9e50('0x4f')){var _0x3722aa={};_0x3722aa[_0x3fe9ab[_0x9e50('0x3a')]]={'$like':'%'+_0x50f904[_0x9e50('0x42')][_0x9e50('0x50')]+'%'};return _0x3722aa;}})});}_0x166652=_[_0x9e50('0x51')]({},_0x166652,_0x50f904[_0x9e50('0x52')]);var _0x395533={'where':_0x166652[_0x9e50('0x4b')]};return db[_0x9e50('0x3f')][_0x9e50('0x2d')](_0x395533)['then'](function(_0x143df7){_0x4f7758[_0x9e50('0x2d')]=_0x143df7;if(_0x50f904[_0x9e50('0x42')][_0x9e50('0x53')]){_0x166652[_0x9e50('0x54')]=[{'all':!![]}];}return db[_0x9e50('0x3f')]['findAll'](_0x166652);})[_0x9e50('0x34')](function(_0x542005){_0x4f7758[_0x9e50('0x55')]=_0x542005;return _0x4f7758;})[_0x9e50('0x34')](respondWithFilteredResult(_0x45cd51,_0x166652))[_0x9e50('0x25')](handleError(_0x45cd51,null));};exports['show']=function(_0xe99c88,_0x171d49){var _0x2a0871={'raw':![],'where':{'id':_0xe99c88[_0x9e50('0x56')]['id']},'include':[{'model':db[_0x9e50('0x3d')],'as':_0x9e50('0x57')}]},_0x4703e1={};_0x4703e1[_0x9e50('0x41')]=_[_0x9e50('0x43')](db[_0x9e50('0x3f')][_0x9e50('0x58')]);_0x4703e1[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0xe99c88[_0x9e50('0x42')]);_0x4703e1['filters']=_['intersection'](_0x4703e1[_0x9e50('0x41')],_0x4703e1[_0x9e50('0x42')]);_0x2a0871[_0x9e50('0x46')]=_[_0x9e50('0x44')](_0x4703e1['model'],qs[_0x9e50('0x45')](_0xe99c88[_0x9e50('0x42')][_0x9e50('0x45')]));_0x2a0871[_0x9e50('0x46')]=_0x2a0871[_0x9e50('0x46')]['length']?_0x2a0871[_0x9e50('0x46')]:_0x4703e1[_0x9e50('0x41')];if(_0xe99c88[_0x9e50('0x42')]['includeAll']){_0x2a0871[_0x9e50('0x54')]=[{'all':!![]}];}_0x2a0871=_[_0x9e50('0x51')]({},_0x2a0871,_0xe99c88[_0x9e50('0x52')]);return db[_0x9e50('0x3f')][_0x9e50('0x59')](_0x2a0871)[_0x9e50('0x34')](handleEntityNotFound(_0x171d49,null))[_0x9e50('0x34')](respondWithResult(_0x171d49,null))[_0x9e50('0x25')](handleError(_0x171d49,null));};exports[_0x9e50('0x5a')]=function(_0x261273,_0x45d280){return db[_0x9e50('0x3f')]['create'](_0x261273['body'],{})[_0x9e50('0x34')](function(_0x551d00){var _0x58d77f=_0x261273[_0x9e50('0x5b')][_0x9e50('0x35')]({'plain':!![]});if(!_0x58d77f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58d77f[_0x9e50('0x5c')]==='user'){var _0x14548a=_0x551d00[_0x9e50('0x35')]({'plain':!![]});var _0x2f0b9e=_0x9e50('0x36');return db[_0x9e50('0x5d')][_0x9e50('0x59')]({'where':{'name':_0x2f0b9e,'userProfileId':_0x58d77f['userProfileId']},'raw':!![]})['then'](function(_0x1ea9a2){if(_0x1ea9a2&&_0x1ea9a2[_0x9e50('0x5e')]===0x0){return db[_0x9e50('0x37')][_0x9e50('0x5a')]({'name':_0x14548a['name'],'resourceId':_0x14548a['id'],'type':_0x1ea9a2[_0x9e50('0x3a')],'sectionId':_0x1ea9a2['id']},{})[_0x9e50('0x34')](function(){return _0x551d00;});}else{return _0x551d00;}})['catch'](function(_0x4caf17){logger['error'](_0x9e50('0x5f'),_0x4caf17);throw _0x4caf17;});}return _0x551d00;})[_0x9e50('0x34')](respondWithResult(_0x45d280,0xc9))[_0x9e50('0x25')](handleError(_0x45d280,null));};exports[_0x9e50('0x33')]=function(_0x51c558,_0x17ed42){if(_0x51c558[_0x9e50('0x60')]['id']){delete _0x51c558['body']['id'];}return db['WhatsappAccount'][_0x9e50('0x59')]({'where':{'id':_0x51c558[_0x9e50('0x56')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x9e50('0x34')](handleEntityNotFound(_0x17ed42,null))[_0x9e50('0x34')](saveUpdates(_0x51c558[_0x9e50('0x60')],null))['then'](respondWithResult(_0x17ed42,null))[_0x9e50('0x25')](handleError(_0x17ed42,null));};exports[_0x9e50('0x38')]=function(_0x2f032f,_0x360a9e){return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x2f032f[_0x9e50('0x56')]['id']}})['then'](handleEntityNotFound(_0x360a9e,null))['then'](removeEntity(_0x360a9e,null))['catch'](handleError(_0x360a9e,null));};exports['describe']=function(_0x1fcbef,_0x2b2e57){return db[_0x9e50('0x3f')][_0x9e50('0x61')]()['then'](respondWithResult(_0x2b2e57,null))[_0x9e50('0x25')](handleError(_0x2b2e57,null));};exports[_0x9e50('0x62')]=function(_0x242d1e,_0x5ee7da,_0x1466bd){if(_0x242d1e[_0x9e50('0x60')]['id']){delete _0x242d1e[_0x9e50('0x60')]['id'];}return db[_0x9e50('0x3f')]['find']({'where':{'id':_0x242d1e[_0x9e50('0x56')]['id']}})['then'](handleEntityNotFound(_0x5ee7da,null))['then'](function(_0x54d2ca){if(_0x54d2ca){_0x242d1e[_0x9e50('0x60')][_0x9e50('0x63')]=_0x54d2ca['id'];return db[_0x9e50('0x64')][_0x9e50('0x5a')](_0x242d1e[_0x9e50('0x60')]);}})[_0x9e50('0x34')](respondWithResult(_0x5ee7da,null))['catch'](handleError(_0x5ee7da,null));};exports[_0x9e50('0x65')]=function(_0x3507ef,_0x429b6e,_0x83160a){var _0x4cd783={'raw':![],'where':{}};var _0x44fba5={};var _0x37ecc9={'count':0x0,'rows':[]};return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x3507ef[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x429b6e,null))[_0x9e50('0x34')](function(_0x174bc9){if(_0x174bc9){_0x44fba5[_0x9e50('0x41')]=_['keys'](db[_0x9e50('0x64')][_0x9e50('0x58')]);_0x44fba5[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0x3507ef[_0x9e50('0x42')]);_0x44fba5[_0x9e50('0x4d')]=_[_0x9e50('0x44')](_0x44fba5[_0x9e50('0x41')],_0x44fba5['query']);_0x4cd783['attributes']=_[_0x9e50('0x44')](_0x44fba5[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x3507ef[_0x9e50('0x42')][_0x9e50('0x45')]));_0x4cd783[_0x9e50('0x46')]=_0x4cd783[_0x9e50('0x46')][_0x9e50('0x47')]?_0x4cd783[_0x9e50('0x46')]:_0x44fba5[_0x9e50('0x41')];if(!_0x3507ef[_0x9e50('0x42')][_0x9e50('0x48')]('nolimit')){_0x4cd783['limit']=qs[_0x9e50('0x2c')](_0x3507ef[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x4cd783[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x3507ef[_0x9e50('0x42')]['offset']);}_0x4cd783[_0x9e50('0x49')]=qs['sort'](_0x3507ef[_0x9e50('0x42')]['sort']);_0x4cd783[_0x9e50('0x4b')]=qs['filters'](_[_0x9e50('0x4c')](_0x3507ef[_0x9e50('0x42')],_0x44fba5[_0x9e50('0x4d')]));_0x4cd783[_0x9e50('0x4b')][_0x9e50('0x63')]=_0x174bc9['id'];if(_0x3507ef[_0x9e50('0x42')][_0x9e50('0x50')]){_0x4cd783['where']=_[_0x9e50('0x51')](_0x4cd783['where'],{'$or':_['map'](_0x4cd783[_0x9e50('0x46')],function(_0xf01549){var _0x3b7f45={};_0x3b7f45[_0xf01549]={'$like':'%'+_0x3507ef[_0x9e50('0x42')]['filter']+'%'};return _0x3b7f45;})});}_0x4cd783=_[_0x9e50('0x51')]({},_0x4cd783,_0x3507ef['options']);return db[_0x9e50('0x64')]['count']({'where':_0x4cd783[_0x9e50('0x4b')]})['then'](function(_0x847944){_0x37ecc9[_0x9e50('0x2d')]=_0x847944;if(_0x3507ef[_0x9e50('0x42')][_0x9e50('0x53')]){_0x4cd783[_0x9e50('0x54')]=[{'all':!![]}];}return db['Disposition'][_0x9e50('0x67')](_0x4cd783);})[_0x9e50('0x34')](function(_0x49455f){_0x37ecc9[_0x9e50('0x55')]=_0x49455f;return _0x37ecc9;});}})['then'](respondWithFilteredResult(_0x429b6e,_0x4cd783))[_0x9e50('0x25')](handleError(_0x429b6e,null));};exports[_0x9e50('0x68')]=function(_0x37a999,_0x4bd106,_0x35c73b){return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x37a999[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4bd106,null))['then'](function(_0x4d019a){if(_0x4d019a){return _0x4d019a[_0x9e50('0x68')](_0x37a999[_0x9e50('0x42')][_0x9e50('0x69')]);}})[_0x9e50('0x34')](respondWithStatusCode(_0x4bd106,null))[_0x9e50('0x25')](handleError(_0x4bd106,null));};exports[_0x9e50('0x6a')]=function(_0x5a0114,_0x24d70d,_0x846fa5){if(_0x5a0114[_0x9e50('0x60')]['id']){delete _0x5a0114['body']['id'];}return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x5a0114[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x24d70d,null))[_0x9e50('0x34')](function(_0x53cadb){if(_0x53cadb){_0x5a0114[_0x9e50('0x60')][_0x9e50('0x63')]=_0x53cadb['id'];return db[_0x9e50('0x6b')]['create'](_0x5a0114[_0x9e50('0x60')]);}})[_0x9e50('0x34')](respondWithResult(_0x24d70d,null))[_0x9e50('0x25')](handleError(_0x24d70d,null));};exports[_0x9e50('0x6c')]=function(_0x4d8e6b,_0x4afab5,_0x102574){var _0x179b58={'raw':![],'where':{}};var _0x158622={};var _0x3499e0={'count':0x0,'rows':[]};return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x4d8e6b[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4afab5,null))[_0x9e50('0x34')](function(_0xb25eab){if(_0xb25eab){_0x158622[_0x9e50('0x41')]=_[_0x9e50('0x43')](db[_0x9e50('0x6b')]['rawAttributes']);_0x158622['query']=_[_0x9e50('0x43')](_0x4d8e6b[_0x9e50('0x42')]);_0x158622[_0x9e50('0x4d')]=_[_0x9e50('0x44')](_0x158622[_0x9e50('0x41')],_0x158622[_0x9e50('0x42')]);_0x179b58[_0x9e50('0x46')]=_[_0x9e50('0x44')](_0x158622['model'],qs['fields'](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x45')]));_0x179b58[_0x9e50('0x46')]=_0x179b58[_0x9e50('0x46')][_0x9e50('0x47')]?_0x179b58['attributes']:_0x158622[_0x9e50('0x41')];if(!_0x4d8e6b['query'][_0x9e50('0x48')](_0x9e50('0x6d'))){_0x179b58[_0x9e50('0x2c')]=qs['limit'](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x179b58[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x2a')]);}_0x179b58[_0x9e50('0x49')]=qs[_0x9e50('0x4a')](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x4a')]);_0x179b58[_0x9e50('0x4b')]=qs[_0x9e50('0x4d')](_['pick'](_0x4d8e6b['query'],_0x158622[_0x9e50('0x4d')]));_0x179b58['where'][_0x9e50('0x63')]=_0xb25eab['id'];if(_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x50')]){_0x179b58[_0x9e50('0x4b')]=_['merge'](_0x179b58[_0x9e50('0x4b')],{'$or':_[_0x9e50('0x3e')](_0x179b58[_0x9e50('0x46')],function(_0x2af386){var _0x512a53={};_0x512a53[_0x2af386]={'$like':'%'+_0x4d8e6b['query']['filter']+'%'};return _0x512a53;})});}_0x179b58=_[_0x9e50('0x51')]({},_0x179b58,_0x4d8e6b[_0x9e50('0x52')]);return db[_0x9e50('0x6b')][_0x9e50('0x2d')]({'where':_0x179b58[_0x9e50('0x4b')]})['then'](function(_0x140b9c){_0x3499e0[_0x9e50('0x2d')]=_0x140b9c;if(_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x53')]){_0x179b58[_0x9e50('0x54')]=[{'all':!![]}];}return db[_0x9e50('0x6b')][_0x9e50('0x67')](_0x179b58);})[_0x9e50('0x34')](function(_0x6343db){_0x3499e0[_0x9e50('0x55')]=_0x6343db;return _0x3499e0;});}})['then'](respondWithFilteredResult(_0x4afab5,_0x179b58))[_0x9e50('0x25')](handleError(_0x4afab5,null));};exports[_0x9e50('0x6e')]=function(_0x2faf2f,_0x4fcfbb,_0xa28ee3){return db['WhatsappAccount']['find']({'where':{'id':_0x2faf2f[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4fcfbb,null))[_0x9e50('0x34')](function(_0x39d316){if(_0x39d316){return _0x39d316[_0x9e50('0x6e')](_0x2faf2f[_0x9e50('0x42')][_0x9e50('0x69')]);}})['then'](respondWithStatusCode(_0x4fcfbb,null))[_0x9e50('0x25')](handleError(_0x4fcfbb,null));};exports[_0x9e50('0x6f')]=function(_0x29dd7b,_0x46e7c3,_0x3c0dda){return db['WhatsappAccount'][_0x9e50('0x59')]({'where':{'id':_0x29dd7b[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x46e7c3,null))[_0x9e50('0x34')](function(_0x4b8af0){if(_0x4b8af0){return _0x4b8af0['addAgents'](_0x29dd7b[_0x9e50('0x60')][_0x9e50('0x69')],_['omit'](_0x29dd7b['body'],[_0x9e50('0x69'),'id'])||{})['spread'](function(_0x2c341f){for(var _0x40e7ba=0x0;_0x40e7ba<_0x29dd7b[_0x9e50('0x60')][_0x9e50('0x69')]['length'];_0x40e7ba+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x29dd7b[_0x9e50('0x60')][_0x9e50('0x69')][_0x40e7ba]),'WhatsappAccountId':Number(_0x29dd7b['params']['id'])});}return _0x2c341f;});}})[_0x9e50('0x34')](respondWithResult(_0x46e7c3,null))[_0x9e50('0x25')](handleError(_0x46e7c3,null));};exports['removeAgents']=function(_0x2cc37d,_0x35c2fd,_0xe64f87){return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x2cc37d[_0x9e50('0x56')]['id']}})['then'](handleEntityNotFound(_0x35c2fd,null))['then'](function(_0x3294d3){if(_0x3294d3){return _0x3294d3[_0x9e50('0x70')](_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')])['then'](function(){if(_['isArray'](_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')])){for(var _0x263d85=0x0;_0x263d85<_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')][_0x9e50('0x47')];_0x263d85+=0x1){socket['emit'](_0x9e50('0x71'),{'UserId':Number(_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')][_0x263d85]),'WhatsappAccountId':Number(_0x2cc37d[_0x9e50('0x56')]['id'])});}}else{socket[_0x9e50('0x72')](_0x9e50('0x71'),{'UserId':Number(_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')]),'WhatsappAccountId':Number(_0x2cc37d['params']['id'])});}});}})['then'](respondWithStatusCode(_0x35c2fd,null))[_0x9e50('0x25')](handleError(_0x35c2fd,null));};exports[_0x9e50('0x73')]=function(_0x40fc39,_0x3c0d51,_0x39538f){var _0x1683a0={};var _0x1b91bf={};var _0x96b267;var _0xfbd3d7;return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x40fc39[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x3c0d51,null))[_0x9e50('0x34')](function(_0x48e775){if(_0x48e775){_0x96b267=_0x48e775;_0x1b91bf[_0x9e50('0x41')]=_[_0x9e50('0x43')](db['User'][_0x9e50('0x58')]);_0x1b91bf[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0x40fc39[_0x9e50('0x42')]);_0x1b91bf[_0x9e50('0x4d')]=_[_0x9e50('0x44')](_0x1b91bf['model'],_0x1b91bf[_0x9e50('0x42')]);_0x1683a0[_0x9e50('0x46')]=_['intersection'](_0x1b91bf[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x45')]));_0x1683a0[_0x9e50('0x46')]=_0x1683a0[_0x9e50('0x46')]['length']?_0x1683a0[_0x9e50('0x46')]:_0x1b91bf[_0x9e50('0x41')];_0x1683a0['order']=qs[_0x9e50('0x4a')](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x4a')]);_0x1683a0[_0x9e50('0x4b')]=qs[_0x9e50('0x4d')](_[_0x9e50('0x4c')](_0x40fc39[_0x9e50('0x42')],_0x1b91bf[_0x9e50('0x4d')]));if(_0x40fc39[_0x9e50('0x42')][_0x9e50('0x50')]){_0x1683a0['where']=_[_0x9e50('0x51')](_0x1683a0[_0x9e50('0x4b')],{'$or':_['map'](_0x1683a0[_0x9e50('0x46')],function(_0x273fe8){var _0x41fc7f={};_0x41fc7f[_0x273fe8]={'$like':'%'+_0x40fc39[_0x9e50('0x42')][_0x9e50('0x50')]+'%'};return _0x41fc7f;})});}_0x1683a0=_[_0x9e50('0x51')]({},_0x1683a0,_0x40fc39[_0x9e50('0x52')]);return _0x96b267['getAgents'](_0x1683a0);}})[_0x9e50('0x34')](function(_0x5c1d9d){if(_0x5c1d9d){_0xfbd3d7=_0x5c1d9d['length'];if(!_0x40fc39[_0x9e50('0x42')][_0x9e50('0x48')](_0x9e50('0x6d'))){_0x1683a0[_0x9e50('0x2c')]=qs['limit'](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x1683a0[_0x9e50('0x2a')]=qs['offset'](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x2a')]);}return _0x96b267[_0x9e50('0x73')](_0x1683a0);}})[_0x9e50('0x34')](function(_0x470cd6){if(_0x470cd6){return _0x470cd6?{'count':_0xfbd3d7,'rows':_0x470cd6}:null;}})[_0x9e50('0x34')](respondWithResult(_0x3c0d51,null))[_0x9e50('0x25')](handleError(_0x3c0d51,null));};exports[_0x9e50('0x74')]=function(_0x47d086,_0x4f9007,_0x35ecf4){return db[_0x9e50('0x3f')]['findOne']({'where':{'id':_0x47d086[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4f9007,null))[_0x9e50('0x34')](function(_0x1eb93a){if(_0x1eb93a){return db[_0x9e50('0x75')][_0x9e50('0x76')](function(_0x5f8a1c){return db['WhatsappApplication'][_0x9e50('0x38')]({'where':{'WhatsappAccountId':_0x47d086[_0x9e50('0x56')]['id']},'transaction':_0x5f8a1c})['then'](function(_0x2db91b){var _0x18e28e=_['map'](_0x47d086['body'],function(_0x2e80fe){_0x2e80fe[_0x9e50('0x63')]=_0x47d086[_0x9e50('0x56')]['id'];return _0x2e80fe;});return db['WhatsappApplication'][_0x9e50('0x77')](_0x18e28e,{'transaction':_0x5f8a1c});});})[_0x9e50('0x34')](function(){return db[_0x9e50('0x78')][_0x9e50('0x79')]({'where':{'WhatsappAccountId':_0x47d086[_0x9e50('0x56')]['id']},'order':_0x9e50('0x7a')});});}})['then'](respondWithResult(_0x4f9007,null))[_0x9e50('0x25')](handleError(_0x4f9007,null));};exports['getApplications']=function(_0x53b778,_0x101094,_0x9c7efe){var _0x2e729f={};var _0x1a5ca1={};var _0x36ae8d;var _0x53a961;return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x53b778[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x101094,null))[_0x9e50('0x34')](function(_0x5b87e5){if(_0x5b87e5){_0x36ae8d=_0x5b87e5;_0x1a5ca1['model']=_[_0x9e50('0x43')](db['WhatsappApplication'][_0x9e50('0x58')]);_0x1a5ca1['query']=_[_0x9e50('0x43')](_0x53b778[_0x9e50('0x42')]);_0x1a5ca1['filters']=_[_0x9e50('0x44')](_0x1a5ca1['model'],_0x1a5ca1[_0x9e50('0x42')]);_0x2e729f[_0x9e50('0x46')]=_[_0x9e50('0x44')](_0x1a5ca1[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x53b778[_0x9e50('0x42')]['fields']));_0x2e729f['attributes']=_0x2e729f[_0x9e50('0x46')][_0x9e50('0x47')]?_0x2e729f[_0x9e50('0x46')]:_0x1a5ca1[_0x9e50('0x41')];_0x2e729f[_0x9e50('0x49')]=qs[_0x9e50('0x4a')](_0x53b778[_0x9e50('0x42')]['sort']);_0x2e729f[_0x9e50('0x4b')]=qs[_0x9e50('0x4d')](_[_0x9e50('0x4c')](_0x53b778['query'],_0x1a5ca1[_0x9e50('0x4d')]));if(_0x53b778[_0x9e50('0x42')][_0x9e50('0x50')]){_0x2e729f[_0x9e50('0x4b')]=_[_0x9e50('0x51')](_0x2e729f[_0x9e50('0x4b')],{'$or':_[_0x9e50('0x3e')](_0x2e729f[_0x9e50('0x46')],function(_0x4cb78f){var _0x504292={};_0x504292[_0x4cb78f]={'$like':'%'+_0x53b778[_0x9e50('0x42')][_0x9e50('0x50')]+'%'};return _0x504292;})});}_0x2e729f=_[_0x9e50('0x51')]({},_0x2e729f,_0x53b778[_0x9e50('0x52')]);return _0x36ae8d[_0x9e50('0x7b')](_0x2e729f);}})[_0x9e50('0x34')](function(_0x23d602){if(_0x23d602){_0x53a961=_0x23d602[_0x9e50('0x47')];if(!_0x53b778[_0x9e50('0x42')][_0x9e50('0x48')]('nolimit')){_0x2e729f['limit']=qs['limit'](_0x53b778['query']['limit']);_0x2e729f[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x53b778[_0x9e50('0x42')][_0x9e50('0x2a')]);}return _0x36ae8d[_0x9e50('0x7b')](_0x2e729f);}})[_0x9e50('0x34')](function(_0x597972){if(_0x597972){return _0x597972?{'count':_0x53a961,'rows':_0x597972}:null;}})[_0x9e50('0x34')](respondWithResult(_0x101094,null))[_0x9e50('0x25')](handleError(_0x101094,null));};exports[_0x9e50('0x7c')]=function(_0x431984,_0x1f96e2,_0x3dc48e){var _0x544dda={'channel':_0x9e50('0x7d')};var _0x8603b6=[];var _0x78cf63=[];var _0x17ac2c={};return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x431984[_0x9e50('0x56')]['id']},'include':[{'model':db[_0x9e50('0x78')],'as':_0x9e50('0x7e')}]})[_0x9e50('0x34')](handleEntityNotFound(_0x1f96e2,null))['then'](function(_0x5a9bb3){_0x544dda[_0x9e50('0x7f')]=_0x5a9bb3;_0x544dda[_0x9e50('0x80')]=_['orderBy'](_0x5a9bb3['Applications'],[_0x9e50('0x7a')],[_0x9e50('0x81')]);if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x7e')]){delete _0x544dda['account']['Applications'];}return db['CmContact'][_0x9e50('0x61')]();})['then'](function(_0x11e360){if(!_0x11e360){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))]('no\x20available\x20attributes');}_0x8603b6=_[_0x9e50('0x84')](_['keys'](_0x11e360),[_0x9e50('0x85'),_0x9e50('0x86')]);_0x78cf63=_[_0x9e50('0x84')](_[_0x9e50('0x43')](_0x11e360),[_0x9e50('0x85'),_0x9e50('0x86'),_0x9e50('0x87'),'ListId']);_0x544dda[_0x9e50('0x60')]={'mapKey':_0x9e50('0x88')};if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x4e')]&&_0x544dda['account'][_0x9e50('0x4e')]===_0x9e50('0x89')){_0x544dda['body'][_0x9e50('0x8a')]=_0x431984[_0x9e50('0x60')][_0x9e50('0x8b')][_0x9e50('0x8c')](_0x9e50('0x8d'),'');_0x544dda[_0x9e50('0x60')][_0x9e50('0x60')]=_0x431984[_0x9e50('0x60')][_0x9e50('0x8e')];_0x544dda['body']['messageId']=_0x431984[_0x9e50('0x60')]['MessageSid'];}if(_0x544dda[_0x9e50('0x60')]['id']){delete _0x544dda[_0x9e50('0x60')]['id'];}if(_[_0x9e50('0x8f')](_0x544dda[_0x9e50('0x60')][_0x9e50('0x8a')])){throw new db[(_0x9e50('0x82'))]['ValidationError'](_0x9e50('0x90'));}if(_[_0x9e50('0x8f')](_0x544dda['body'][_0x9e50('0x60')])||_0x544dda[_0x9e50('0x60')][_0x9e50('0x60')]===''){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))](_0x9e50('0x91'));}if(_[_0x9e50('0x8f')](_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')])){throw new db[(_0x9e50('0x82'))]['ValidationError'](_0x9e50('0x93')+_0x78cf63);}if(!_[_0x9e50('0x94')](_0x78cf63,_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')])){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x78cf63);}_0x17ac2c[_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')]]=_0x544dda[_0x9e50('0x60')][_0x9e50('0x8a')];return db[_0x9e50('0x95')][_0x9e50('0x59')]({'where':{'id':_0x544dda[_0x9e50('0x7f')][_0x9e50('0x96')]},'include':[{'model':db[_0x9e50('0x97')],'as':_0x9e50('0x98'),'where':_0x17ac2c,'limit':0x1,'order':[[_0x9e50('0x86'),_0x9e50('0x99')]]}]});})[_0x9e50('0x34')](handleEntityNotFound(_0x1f96e2,null))[_0x9e50('0x34')](function(_0x3ca729){if(_0x3ca729){_0x544dda[_0x9e50('0x9a')]=_['omit'](_0x3ca729,[_0x9e50('0x98')]);if(_0x3ca729[_0x9e50('0x98')][_0x9e50('0x47')]){return _0x3ca729[_0x9e50('0x98')][0x0];}var _0x2bcc84=_[_0x9e50('0x9b')](_0x544dda[_0x9e50('0x60')],{'firstName':_0x544dda['body'][_0x9e50('0x8a')],'ListId':_0x3ca729['id']});_0x2bcc84[_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')]]=_0x544dda['body']['from'];return db[_0x9e50('0x97')][_0x9e50('0x5a')](_0x2bcc84,{'fields':_0x8603b6,'raw':!![]});}})[_0x9e50('0x34')](handleEntityNotFound(_0x1f96e2,null))[_0x9e50('0x34')](function(_0x4d242e){if(_0x4d242e){_0x544dda[_0x9e50('0x9c')]=_0x4d242e;var _0x5e8164={'ContactId':_0x4d242e['id'],'phone':_0x544dda[_0x9e50('0x60')][_0x9e50('0x8a')],'WhatsappAccountId':_0x431984['params']['id']};var _0x33a54d={'ContactId':_0x4d242e['id'],'WhatsappAccountId':_0x431984[_0x9e50('0x56')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x9e50('0x59')]({'where':_0x33a54d})[_0x9e50('0x34')](function(_0x13cd3e){if(_0x13cd3e){return[_0x13cd3e,![]];}return db[_0x9e50('0x9d')]['create'](_0x5e8164)[_0x9e50('0x34')](function(_0x2b5da1){return[_0x2b5da1,!![]];});});}})['spread'](function(_0x15135a,_0x1d4e29){_0x544dda[_0x9e50('0x9e')]=_0x15135a[_0x9e50('0x35')]({'plain':!![]});_0x544dda[_0x9e50('0x9e')]['created']=![];if(_0x1d4e29){if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x9f')]){_0x544dda['applications'][_0x9e50('0xa0')]({'id':0x0,'priority':_0x544dda[_0x9e50('0x80')][_0x9e50('0x47')]+0x1,'app':_0x9e50('0xa1'),'appdata':_0x9e50('0xa2'),'interval':_0x9e50('0xa3')});}_0x544dda[_0x9e50('0x9e')]['created']=!![];}return db[_0x9e50('0xa4')][_0x9e50('0x5a')]({'phone':_0x544dda[_0x9e50('0x60')]['from'],'messageId':_0x544dda['body']['messageId'],'body':_0x544dda['body'][_0x9e50('0x60')],'WhatsappAccountId':_0x431984['params']['id'],'WhatsappInteractionId':_0x15135a['id'],'direction':'in','ContactId':_0x15135a[_0x9e50('0xa5')],'AttachmentId':_0x544dda['body'][_0x9e50('0xa6')]});})['then'](function(_0x11be37){_0x544dda['message']=_0x11be37;if(_0x544dda[_0x9e50('0x9e')][_0x9e50('0xa7')]){return db[_0x9e50('0xa8')][_0x9e50('0x59')]({'attributes':['id',_0x9e50('0x3a')],'where':{'id':_0x544dda['interaction'][_0x9e50('0xa7')]}})[_0x9e50('0x34')](function(_0x3ac0e1){if(_0x3ac0e1){_0x544dda[_0x9e50('0x80')][_0x9e50('0xa9')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x3ac0e1['name']+','+(_0x544dda[_0x9e50('0x7f')][_0x9e50('0xaa')]||0xa),'interval':_0x9e50('0xa3')});}return respondWithRpcPromise(_0x9e50('0xab'),_0x9e50('0xac'),_0x544dda);});}return respondWithRpcPromise(_0x9e50('0xab'),_0x9e50('0xac'),_0x544dda);})[_0x9e50('0x34')](function(_0x31f94e){if(_0x31f94e){var _0x417d5b=0xc8;var _0x2f23b3='receiveMessage';logger[_0x9e50('0x1d')](_0x9e50('0x20'),_0x2f23b3,_0x417d5b,_0x9e50('0xad'));logger[_0x9e50('0x1f')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x2f23b3,_0x417d5b,_0x9e50('0xad'),JSON[_0x9e50('0xae')](_0x31f94e));if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x4e')]===_0x9e50('0x89')){return _0x1f96e2[_0x9e50('0x27')](_0x417d5b)[_0x9e50('0x2e')](_0x9e50('0xaf'),_0x9e50('0xb0'))[_0x9e50('0x3b')](_0x9e50('0xb1'));}else{return _0x1f96e2[_0x9e50('0x27')](_0x417d5b)[_0x9e50('0x29')](_0x31f94e);}}})['catch'](handleError(_0x1f96e2,null));};exports[_0x9e50('0x3b')]=function(_0x1f8a98,_0x3f1e76,_0x35e4ab){var _0x26d665,_0x464324,_0xf7f31e;if(_[_0x9e50('0x8f')](_0x1f8a98['body'][_0x9e50('0x60')])||_0x1f8a98[_0x9e50('0x60')][_0x9e50('0x60')]===''){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))](_0x9e50('0x91'));}if(_[_0x9e50('0x8f')](_0x1f8a98[_0x9e50('0x60')]['to'])){throw new db['Sequelize']['ValidationError'](_0x9e50('0xb2'));}_0x26d665=_0x1f8a98[_0x9e50('0x60')]['to'];return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x1f8a98[_0x9e50('0x56')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x26d665},'limit':0x1,'order':[[_0x9e50('0x86'),_0x9e50('0x99')]]}]}]})[_0x9e50('0x34')](handleEntityNotFound(_0x3f1e76,null))['then'](function(_0x23272a){if(_0x23272a&&_0x23272a[_0x9e50('0xb3')]){_0x464324=_0x23272a['get']({'plain':!![]});if(_0x464324[_0x9e50('0xb3')]&&_0x464324[_0x9e50('0xb3')][_0x9e50('0x98')]['length']){return _0x464324[_0x9e50('0xb3')]['Contacts'][0x0];}return db[_0x9e50('0x97')][_0x9e50('0x5a')](_['defaults'](_0x1f8a98[_0x9e50('0x60')],{'firstName':_0x26d665,'mobile':_0x26d665,'phone':_0x26d665,'ListId':_0x464324[_0x9e50('0x96')]}));}})[_0x9e50('0x34')](handleEntityNotFound(_0x3f1e76,null))[_0x9e50('0x34')](function(_0x273796){if(_0x273796){_0xf7f31e=_0x273796;return db[_0x9e50('0x9d')]['find']({'where':{'ContactId':_0xf7f31e['id'],'closed':![],'WhatsappAccountId':_0x464324['id']}})[_0x9e50('0x34')](function(_0xc0ca62){if(_0xc0ca62){return[_0xc0ca62,![]];}return db[_0x9e50('0x9d')]['create']({'UserId':_0x1f8a98[_0x9e50('0x5b')]['id'],'ContactId':_0xf7f31e['id'],'WhatsappAccountId':_0x464324['id'],'phone':_0x26d665,'firstMsgDirection':_0x9e50('0xb4'),'Messages':[_[_0x9e50('0x51')](_0x1f8a98[_0x9e50('0x60')],{'read':![],'body':_0x1f8a98[_0x9e50('0x60')]['body'],'phone':_0x26d665,'WhatsappAccountId':_0x464324['id'],'UserId':_0x1f8a98[_0x9e50('0x5b')]['id'],'ContactId':_0xf7f31e['id']})]},{'include':[{'model':db[_0x9e50('0xa4')],'as':_0x9e50('0xb5')}]})['then'](function(_0x10f33a){return[_0x10f33a,!![]];});});}})['spread'](function(_0x17c233,_0x1f4571){if(_0x1f4571){return _0x17c233;}return db[_0x9e50('0xa4')][_0x9e50('0x5a')](_[_0x9e50('0x51')](_0x1f8a98['body'],{'read':![],'body':_0x1f8a98['body']['body'],'phone':_0x26d665,'WhatsappAccountId':_0x464324['id'],'WhatsappInteractionId':_0x17c233['id'],'UserId':_0x1f8a98[_0x9e50('0x5b')]['id'],'ContactId':_0xf7f31e['id']}))[_0x9e50('0x34')](function(_0x21daeb){_0x17c233[_0x9e50('0xb6')][_0x9e50('0xb5')]=[];_0x17c233['dataValues']['Messages'][_0x9e50('0xa0')](_0x21daeb[_0x9e50('0xb6')]);return _0x17c233;});})[_0x9e50('0x34')](respondWithResult(_0x3f1e76,null))[_0x9e50('0x25')](handleError(_0x3f1e76,null));};
\ No newline at end of file
+var _0x648b=['priority','getApplications','notify','whatsapp','Applications','account','orderBy','asc','CmContact','Sequelize','ValidationError','createdAt','updatedAt','difference','ListId','mobile','twilio','from','whatsapp:','Body','messageId','MessageSid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','autoclose','applications','push','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','agent','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','send','List','Messages','spread','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','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','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','then','info','request\x20sent','debug','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','destroy','get','WhatsappAccounts','UserProfileResource','name','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','key','query','keys','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','find','create','body','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addDisposition','Disposition','pick','WhatsappAccountId','include','removeDispositions','addAnswer','CannedAnswer','findOne','removeAnswers','addAgents','ids','omit','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','findAndCountAll'];(function(_0x1c8bc3,_0x4dc0f0){var _0x3d71b9=function(_0x31f889){while(--_0x31f889){_0x1c8bc3['push'](_0x1c8bc3['shift']());}};_0x3d71b9(++_0x4dc0f0);}(_0x648b,0x1ac));var _0xb648=function(_0x49ec1b,_0x2cc0a5){_0x49ec1b=_0x49ec1b-0x0;var _0x3ac703=_0x648b[_0x49ec1b];return _0x3ac703;};'use strict';var emlformat=require(_0xb648('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb648('0x1'));var jsonpatch=require(_0xb648('0x2'));var rp=require(_0xb648('0x3'));var moment=require(_0xb648('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb648('0x5'));var path=require(_0xb648('0x6'));var sox=require(_0xb648('0x7'));var csv=require(_0xb648('0x8'));var ejs=require(_0xb648('0x9'));var fs=require('fs');var fs_extra=require(_0xb648('0xa'));var _=require(_0xb648('0xb'));var squel=require(_0xb648('0xc'));var crypto=require(_0xb648('0xd'));var jsforce=require(_0xb648('0xe'));var deskjs=require(_0xb648('0xf'));var toCsv=require(_0xb648('0x8'));var querystring=require(_0xb648('0x10'));var Papa=require(_0xb648('0x11'));var Redis=require('ioredis');var authService=require(_0xb648('0x12'));var qs=require(_0xb648('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb648('0x14'));var logger=require(_0xb648('0x15'))(_0xb648('0x16'));var utils=require(_0xb648('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb648('0x18'))['db'];config[_0xb648('0x19')]=_[_0xb648('0x1a')](config[_0xb648('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xb648('0x1b'))(new Redis(config[_0xb648('0x19')]));require('./whatsappAccount.socket')[_0xb648('0x1c')](socket);var jayson=require(_0xb648('0x1d'));var client=jayson[_0xb648('0x1e')][_0xb648('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x3df34a,_0x534490,_0xb0404e,_0x3ca0bf){return new BPromise(function(_0x10536c,_0x3c2947){var _0xff5c34=_0x3ca0bf||client;return _0xff5c34['request'](_0x3df34a,_0xb0404e)[_0xb648('0x20')](function(_0x3832bd){logger[_0xb648('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x534490,_0xb648('0x22'));logger[_0xb648('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x534490,_0xb648('0x22'),JSON['stringify'](_0x3832bd));if(_0x3832bd['error']){if(_0x3832bd[_0xb648('0x24')][_0xb648('0x25')]===0x1f4){logger[_0xb648('0x24')](_0xb648('0x26'),_0x534490,_0x3832bd[_0xb648('0x24')][_0xb648('0x27')]);return _0x3c2947(_0x3832bd[_0xb648('0x24')][_0xb648('0x27')]);}logger[_0xb648('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x534490,_0x3832bd[_0xb648('0x24')][_0xb648('0x27')]);return _0x10536c(_0x3832bd[_0xb648('0x24')]['message']);}else{logger['info'](_0xb648('0x26'),_0x534490,_0xb648('0x22'));_0x10536c(_0x3832bd[_0xb648('0x28')][_0xb648('0x27')]);}})[_0xb648('0x29')](function(_0x24822c){logger[_0xb648('0x24')](_0xb648('0x26'),_0x534490,_0x24822c);_0x3c2947(_0x24822c);});});}function respondWithStatusCode(_0x2b4ce3,_0xa51e2f){_0xa51e2f=_0xa51e2f||0xcc;return function(_0x4d2dba){if(_0x4d2dba){return _0x2b4ce3[_0xb648('0x2a')](_0xa51e2f);}return _0x2b4ce3[_0xb648('0x2b')](_0xa51e2f)[_0xb648('0x2c')]();};}function respondWithResult(_0x37afa2,_0x507d9b){_0x507d9b=_0x507d9b||0xc8;return function(_0x2f2dff){if(_0x2f2dff){return _0x37afa2[_0xb648('0x2b')](_0x507d9b)[_0xb648('0x2d')](_0x2f2dff);}};}function respondWithFilteredResult(_0x4dd63b,_0x4709d9){return function(_0x2a3ebf){if(_0x2a3ebf){var _0x1c7f07=typeof _0x4709d9[_0xb648('0x2e')]===_0xb648('0x2f')&&typeof _0x4709d9[_0xb648('0x30')]===_0xb648('0x2f');var _0x25234c=_0x2a3ebf[_0xb648('0x31')];var _0x3ba063=_0x1c7f07?0x0:_0x4709d9[_0xb648('0x2e')];var _0x2b5b28=_0x1c7f07?_0x2a3ebf[_0xb648('0x31')]:_0x4709d9[_0xb648('0x2e')]+_0x4709d9['limit'];var _0x511a64;if(_0x2b5b28>=_0x25234c){_0x2b5b28=_0x25234c;_0x511a64=0xc8;}else{_0x511a64=0xce;}_0x4dd63b[_0xb648('0x2b')](_0x511a64);return _0x4dd63b[_0xb648('0x32')]('Content-Range',_0x3ba063+'-'+_0x2b5b28+'/'+_0x25234c)[_0xb648('0x2d')](_0x2a3ebf);}return null;};}function patchUpdates(_0x1a3170){return function(_0xcdb129){try{jsonpatch[_0xb648('0x33')](_0xcdb129,_0x1a3170,!![]);}catch(_0xcc099e){return BPromise[_0xb648('0x34')](_0xcc099e);}return _0xcdb129['save']();};}function saveUpdates(_0x14a5e8,_0x3e2fbb){return function(_0x19d8ed){if(_0x19d8ed){return _0x19d8ed[_0xb648('0x35')](_0x14a5e8)['then'](function(_0x2ea2d4){return _0x2ea2d4;});}return null;};}function removeEntity(_0x38542b,_0x3bfe57){return function(_0x32d06){if(_0x32d06){return _0x32d06[_0xb648('0x36')]()[_0xb648('0x20')](function(){var _0x582b60=_0x32d06[_0xb648('0x37')]({'plain':!![]});var _0x50075a=_0xb648('0x38');return db[_0xb648('0x39')][_0xb648('0x36')]({'where':{'type':_0x50075a,'resourceId':_0x582b60['id']}})[_0xb648('0x20')](function(){return _0x32d06;});})[_0xb648('0x20')](function(){_0x38542b['status'](0xcc)[_0xb648('0x2c')]();});}};}function handleEntityNotFound(_0x1ee810,_0x9cae51){return function(_0x5c26e5){if(!_0x5c26e5){_0x1ee810[_0xb648('0x2a')](0x194);}return _0x5c26e5;};}function handleError(_0x4a434c,_0x570817){_0x570817=_0x570817||0x1f4;return function(_0x3be931){logger[_0xb648('0x24')](_0x3be931['stack']);if(_0x3be931[_0xb648('0x3a')]){delete _0x3be931[_0xb648('0x3a')];}_0x4a434c['status'](_0x570817)['send'](_0x3be931);};}exports[_0xb648('0x3b')]=function(_0x4836d6,_0x3922de){var _0x24d56f={'include':[{'model':db[_0xb648('0x3c')],'as':_0xb648('0x3d')}]},_0x19da6c={},_0x4bde33={'count':0x0,'rows':[]};var _0x76e152=_[_0xb648('0x3e')](db[_0xb648('0x3f')][_0xb648('0x40')],function(_0x5c4cbb){return{'name':_0x5c4cbb[_0xb648('0x41')],'type':_0x5c4cbb[_0xb648('0x42')][_0xb648('0x43')]};});_0x19da6c['model']=_[_0xb648('0x3e')](_0x76e152,_0xb648('0x3a'));_0x19da6c[_0xb648('0x44')]=_[_0xb648('0x45')](_0x4836d6[_0xb648('0x44')]);_0x19da6c['filters']=_[_0xb648('0x46')](_0x19da6c['model'],_0x19da6c['query']);_0x24d56f['attributes']=_[_0xb648('0x46')](_0x19da6c['model'],qs[_0xb648('0x47')](_0x4836d6[_0xb648('0x44')][_0xb648('0x47')]));_0x24d56f[_0xb648('0x48')]=_0x24d56f[_0xb648('0x48')][_0xb648('0x49')]?_0x24d56f[_0xb648('0x48')]:_0x19da6c[_0xb648('0x4a')];if(!_0x4836d6[_0xb648('0x44')][_0xb648('0x4b')](_0xb648('0x4c'))){_0x24d56f['limit']=qs['limit'](_0x4836d6[_0xb648('0x44')][_0xb648('0x30')]);_0x24d56f[_0xb648('0x2e')]=qs[_0xb648('0x2e')](_0x4836d6[_0xb648('0x44')]['offset']);}_0x24d56f[_0xb648('0x4d')]=qs[_0xb648('0x4e')](_0x4836d6['query'][_0xb648('0x4e')]);_0x24d56f[_0xb648('0x4f')]=qs[_0xb648('0x50')](_['pick'](_0x4836d6[_0xb648('0x44')],_0x19da6c['filters']),_0x76e152);if(_0x4836d6[_0xb648('0x44')][_0xb648('0x51')]){_0x24d56f[_0xb648('0x4f')]=_[_0xb648('0x52')](_0x24d56f[_0xb648('0x4f')],{'$or':_['map'](_0x76e152,function(_0x244081){if(_0x244081[_0xb648('0x42')]!==_0xb648('0x53')){var _0x5d9f2f={};_0x5d9f2f[_0x244081[_0xb648('0x3a')]]={'$like':'%'+_0x4836d6['query']['filter']+'%'};return _0x5d9f2f;}})});}_0x24d56f=_[_0xb648('0x52')]({},_0x24d56f,_0x4836d6[_0xb648('0x54')]);var _0x44aaec={'where':_0x24d56f[_0xb648('0x4f')]};return db[_0xb648('0x3f')]['count'](_0x44aaec)[_0xb648('0x20')](function(_0x53611c){_0x4bde33[_0xb648('0x31')]=_0x53611c;if(_0x4836d6[_0xb648('0x44')][_0xb648('0x55')]){_0x24d56f['include']=[{'all':!![]}];}return db[_0xb648('0x3f')][_0xb648('0x56')](_0x24d56f);})['then'](function(_0x45c514){_0x4bde33[_0xb648('0x57')]=_0x45c514;return _0x4bde33;})[_0xb648('0x20')](respondWithFilteredResult(_0x3922de,_0x24d56f))[_0xb648('0x29')](handleError(_0x3922de,null));};exports[_0xb648('0x58')]=function(_0x1d7a81,_0x37b774){var _0x46c950={'raw':![],'where':{'id':_0x1d7a81[_0xb648('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0xb648('0x3d')}]},_0x5f4f8d={};_0x5f4f8d[_0xb648('0x4a')]=_[_0xb648('0x45')](db[_0xb648('0x3f')]['rawAttributes']);_0x5f4f8d[_0xb648('0x44')]=_[_0xb648('0x45')](_0x1d7a81[_0xb648('0x44')]);_0x5f4f8d[_0xb648('0x50')]=_[_0xb648('0x46')](_0x5f4f8d[_0xb648('0x4a')],_0x5f4f8d['query']);_0x46c950[_0xb648('0x48')]=_[_0xb648('0x46')](_0x5f4f8d[_0xb648('0x4a')],qs['fields'](_0x1d7a81[_0xb648('0x44')][_0xb648('0x47')]));_0x46c950[_0xb648('0x48')]=_0x46c950['attributes'][_0xb648('0x49')]?_0x46c950[_0xb648('0x48')]:_0x5f4f8d['model'];if(_0x1d7a81[_0xb648('0x44')][_0xb648('0x55')]){_0x46c950['include']=[{'all':!![]}];}_0x46c950=_[_0xb648('0x52')]({},_0x46c950,_0x1d7a81[_0xb648('0x54')]);return db[_0xb648('0x3f')][_0xb648('0x5a')](_0x46c950)['then'](handleEntityNotFound(_0x37b774,null))['then'](respondWithResult(_0x37b774,null))[_0xb648('0x29')](handleError(_0x37b774,null));};exports[_0xb648('0x5b')]=function(_0x481aab,_0x5ecb7d){return db[_0xb648('0x3f')][_0xb648('0x5b')](_0x481aab[_0xb648('0x5c')],{})['then'](function(_0x1ec43b){var _0x1904ce=_0x481aab[_0xb648('0x5d')]['get']({'plain':!![]});if(!_0x1904ce)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1904ce[_0xb648('0x5e')]===_0xb648('0x5d')){var _0x249930=_0x1ec43b[_0xb648('0x37')]({'plain':!![]});var _0x4773a3=_0xb648('0x38');return db['UserProfileSection'][_0xb648('0x5a')]({'where':{'name':_0x4773a3,'userProfileId':_0x1904ce[_0xb648('0x5f')]},'raw':!![]})[_0xb648('0x20')](function(_0x269264){if(_0x269264&&_0x269264[_0xb648('0x60')]===0x0){return db[_0xb648('0x39')][_0xb648('0x5b')]({'name':_0x249930['name'],'resourceId':_0x249930['id'],'type':_0x269264[_0xb648('0x3a')],'sectionId':_0x269264['id']},{})[_0xb648('0x20')](function(){return _0x1ec43b;});}else{return _0x1ec43b;}})[_0xb648('0x29')](function(_0x19a935){logger[_0xb648('0x24')](_0xb648('0x61'),_0x19a935);throw _0x19a935;});}return _0x1ec43b;})[_0xb648('0x20')](respondWithResult(_0x5ecb7d,0xc9))['catch'](handleError(_0x5ecb7d,null));};exports[_0xb648('0x35')]=function(_0x5d0172,_0x3a60f0){if(_0x5d0172['body']['id']){delete _0x5d0172[_0xb648('0x5c')]['id'];}return db[_0xb648('0x3f')]['find']({'where':{'id':_0x5d0172[_0xb648('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0xb648('0x3d')}]})['then'](handleEntityNotFound(_0x3a60f0,null))[_0xb648('0x20')](saveUpdates(_0x5d0172[_0xb648('0x5c')],null))[_0xb648('0x20')](respondWithResult(_0x3a60f0,null))['catch'](handleError(_0x3a60f0,null));};exports[_0xb648('0x36')]=function(_0x9653b0,_0xf75240){return db[_0xb648('0x3f')][_0xb648('0x5a')]({'where':{'id':_0x9653b0[_0xb648('0x59')]['id']}})[_0xb648('0x20')](handleEntityNotFound(_0xf75240,null))[_0xb648('0x20')](removeEntity(_0xf75240,null))[_0xb648('0x29')](handleError(_0xf75240,null));};exports['describe']=function(_0x2885a3,_0x2f59b1){return db['WhatsappAccount']['describe']()['then'](respondWithResult(_0x2f59b1,null))[_0xb648('0x29')](handleError(_0x2f59b1,null));};exports[_0xb648('0x62')]=function(_0x1e4aa3,_0x1847f4,_0x2e8347){if(_0x1e4aa3[_0xb648('0x5c')]['id']){delete _0x1e4aa3[_0xb648('0x5c')]['id'];}return db[_0xb648('0x3f')][_0xb648('0x5a')]({'where':{'id':_0x1e4aa3[_0xb648('0x59')]['id']}})['then'](handleEntityNotFound(_0x1847f4,null))[_0xb648('0x20')](function(_0x5bbc85){if(_0x5bbc85){_0x1e4aa3[_0xb648('0x5c')]['WhatsappAccountId']=_0x5bbc85['id'];return db[_0xb648('0x63')]['create'](_0x1e4aa3[_0xb648('0x5c')]);}})[_0xb648('0x20')](respondWithResult(_0x1847f4,null))['catch'](handleError(_0x1847f4,null));};exports['getDispositions']=function(_0x11f93a,_0x22f06a,_0x4ed69e){var _0x20e82e={'raw':![],'where':{}};var _0x2ef87c={};var _0x271d3c={'count':0x0,'rows':[]};return db[_0xb648('0x3f')]['findOne']({'where':{'id':_0x11f93a[_0xb648('0x59')]['id']}})[_0xb648('0x20')](handleEntityNotFound(_0x22f06a,null))[_0xb648('0x20')](function(_0x1e8cce){if(_0x1e8cce){_0x2ef87c['model']=_['keys'](db[_0xb648('0x63')][_0xb648('0x40')]);_0x2ef87c[_0xb648('0x44')]=_[_0xb648('0x45')](_0x11f93a[_0xb648('0x44')]);_0x2ef87c[_0xb648('0x50')]=_[_0xb648('0x46')](_0x2ef87c[_0xb648('0x4a')],_0x2ef87c[_0xb648('0x44')]);_0x20e82e[_0xb648('0x48')]=_[_0xb648('0x46')](_0x2ef87c['model'],qs[_0xb648('0x47')](_0x11f93a[_0xb648('0x44')][_0xb648('0x47')]));_0x20e82e['attributes']=_0x20e82e[_0xb648('0x48')][_0xb648('0x49')]?_0x20e82e[_0xb648('0x48')]:_0x2ef87c['model'];if(!_0x11f93a[_0xb648('0x44')][_0xb648('0x4b')](_0xb648('0x4c'))){_0x20e82e[_0xb648('0x30')]=qs[_0xb648('0x30')](_0x11f93a[_0xb648('0x44')][_0xb648('0x30')]);_0x20e82e[_0xb648('0x2e')]=qs['offset'](_0x11f93a[_0xb648('0x44')][_0xb648('0x2e')]);}_0x20e82e[_0xb648('0x4d')]=qs[_0xb648('0x4e')](_0x11f93a['query']['sort']);_0x20e82e[_0xb648('0x4f')]=qs['filters'](_[_0xb648('0x64')](_0x11f93a[_0xb648('0x44')],_0x2ef87c[_0xb648('0x50')]));_0x20e82e['where'][_0xb648('0x65')]=_0x1e8cce['id'];if(_0x11f93a[_0xb648('0x44')]['filter']){_0x20e82e[_0xb648('0x4f')]=_[_0xb648('0x52')](_0x20e82e[_0xb648('0x4f')],{'$or':_[_0xb648('0x3e')](_0x20e82e[_0xb648('0x48')],function(_0x48b973){var _0x214adf={};_0x214adf[_0x48b973]={'$like':'%'+_0x11f93a[_0xb648('0x44')][_0xb648('0x51')]+'%'};return _0x214adf;})});}_0x20e82e=_[_0xb648('0x52')]({},_0x20e82e,_0x11f93a[_0xb648('0x54')]);return db[_0xb648('0x63')][_0xb648('0x31')]({'where':_0x20e82e[_0xb648('0x4f')]})[_0xb648('0x20')](function(_0xda5001){_0x271d3c[_0xb648('0x31')]=_0xda5001;if(_0x11f93a[_0xb648('0x44')][_0xb648('0x55')]){_0x20e82e[_0xb648('0x66')]=[{'all':!![]}];}return db[_0xb648('0x63')][_0xb648('0x56')](_0x20e82e);})[_0xb648('0x20')](function(_0x2eba52){_0x271d3c['rows']=_0x2eba52;return _0x271d3c;});}})['then'](respondWithFilteredResult(_0x22f06a,_0x20e82e))['catch'](handleError(_0x22f06a,null));};exports[_0xb648('0x67')]=function(_0x2d49f6,_0x382dc4,_0x3e63ec){return db[_0xb648('0x3f')]['find']({'where':{'id':_0x2d49f6['params']['id']}})[_0xb648('0x20')](handleEntityNotFound(_0x382dc4,null))[_0xb648('0x20')](function(_0x5d5476){if(_0x5d5476){return _0x5d5476[_0xb648('0x67')](_0x2d49f6[_0xb648('0x44')]['ids']);}})[_0xb648('0x20')](respondWithStatusCode(_0x382dc4,null))[_0xb648('0x29')](handleError(_0x382dc4,null));};exports[_0xb648('0x68')]=function(_0x548932,_0x1e58a7,_0x11daa5){if(_0x548932[_0xb648('0x5c')]['id']){delete _0x548932[_0xb648('0x5c')]['id'];}return db['WhatsappAccount'][_0xb648('0x5a')]({'where':{'id':_0x548932[_0xb648('0x59')]['id']}})[_0xb648('0x20')](handleEntityNotFound(_0x1e58a7,null))[_0xb648('0x20')](function(_0x17a8a7){if(_0x17a8a7){_0x548932[_0xb648('0x5c')]['WhatsappAccountId']=_0x17a8a7['id'];return db[_0xb648('0x69')][_0xb648('0x5b')](_0x548932[_0xb648('0x5c')]);}})[_0xb648('0x20')](respondWithResult(_0x1e58a7,null))[_0xb648('0x29')](handleError(_0x1e58a7,null));};exports['getAnswers']=function(_0xdb52fb,_0x2d3e31,_0x24a8ec){var _0x487f8a={'raw':![],'where':{}};var _0x3fd9f1={};var _0x1c3d11={'count':0x0,'rows':[]};return db[_0xb648('0x3f')][_0xb648('0x6a')]({'where':{'id':_0xdb52fb[_0xb648('0x59')]['id']}})['then'](handleEntityNotFound(_0x2d3e31,null))[_0xb648('0x20')](function(_0x9c8e6f){if(_0x9c8e6f){_0x3fd9f1[_0xb648('0x4a')]=_['keys'](db[_0xb648('0x69')][_0xb648('0x40')]);_0x3fd9f1[_0xb648('0x44')]=_[_0xb648('0x45')](_0xdb52fb[_0xb648('0x44')]);_0x3fd9f1['filters']=_[_0xb648('0x46')](_0x3fd9f1[_0xb648('0x4a')],_0x3fd9f1[_0xb648('0x44')]);_0x487f8a[_0xb648('0x48')]=_[_0xb648('0x46')](_0x3fd9f1[_0xb648('0x4a')],qs[_0xb648('0x47')](_0xdb52fb[_0xb648('0x44')]['fields']));_0x487f8a['attributes']=_0x487f8a['attributes'][_0xb648('0x49')]?_0x487f8a[_0xb648('0x48')]:_0x3fd9f1[_0xb648('0x4a')];if(!_0xdb52fb[_0xb648('0x44')][_0xb648('0x4b')]('nolimit')){_0x487f8a[_0xb648('0x30')]=qs[_0xb648('0x30')](_0xdb52fb[_0xb648('0x44')][_0xb648('0x30')]);_0x487f8a[_0xb648('0x2e')]=qs['offset'](_0xdb52fb[_0xb648('0x44')][_0xb648('0x2e')]);}_0x487f8a[_0xb648('0x4d')]=qs[_0xb648('0x4e')](_0xdb52fb['query']['sort']);_0x487f8a[_0xb648('0x4f')]=qs[_0xb648('0x50')](_['pick'](_0xdb52fb['query'],_0x3fd9f1[_0xb648('0x50')]));_0x487f8a[_0xb648('0x4f')]['WhatsappAccountId']=_0x9c8e6f['id'];if(_0xdb52fb[_0xb648('0x44')][_0xb648('0x51')]){_0x487f8a[_0xb648('0x4f')]=_[_0xb648('0x52')](_0x487f8a[_0xb648('0x4f')],{'$or':_[_0xb648('0x3e')](_0x487f8a['attributes'],function(_0x36215b){var _0x45f791={};_0x45f791[_0x36215b]={'$like':'%'+_0xdb52fb['query'][_0xb648('0x51')]+'%'};return _0x45f791;})});}_0x487f8a=_[_0xb648('0x52')]({},_0x487f8a,_0xdb52fb[_0xb648('0x54')]);return db['CannedAnswer'][_0xb648('0x31')]({'where':_0x487f8a[_0xb648('0x4f')]})[_0xb648('0x20')](function(_0x39bba0){_0x1c3d11['count']=_0x39bba0;if(_0xdb52fb[_0xb648('0x44')][_0xb648('0x55')]){_0x487f8a[_0xb648('0x66')]=[{'all':!![]}];}return db[_0xb648('0x69')]['findAll'](_0x487f8a);})[_0xb648('0x20')](function(_0x485324){_0x1c3d11[_0xb648('0x57')]=_0x485324;return _0x1c3d11;});}})[_0xb648('0x20')](respondWithFilteredResult(_0x2d3e31,_0x487f8a))['catch'](handleError(_0x2d3e31,null));};exports[_0xb648('0x6b')]=function(_0xd3e18e,_0x4bdce6,_0x3bd5b0){return db['WhatsappAccount'][_0xb648('0x5a')]({'where':{'id':_0xd3e18e['params']['id']}})['then'](handleEntityNotFound(_0x4bdce6,null))[_0xb648('0x20')](function(_0x53f12e){if(_0x53f12e){return _0x53f12e[_0xb648('0x6b')](_0xd3e18e[_0xb648('0x44')]['ids']);}})[_0xb648('0x20')](respondWithStatusCode(_0x4bdce6,null))[_0xb648('0x29')](handleError(_0x4bdce6,null));};exports[_0xb648('0x6c')]=function(_0x3a5199,_0x5857c0,_0x48ff9e){return db[_0xb648('0x3f')][_0xb648('0x5a')]({'where':{'id':_0x3a5199['params']['id']}})[_0xb648('0x20')](handleEntityNotFound(_0x5857c0,null))[_0xb648('0x20')](function(_0x26dd6f){if(_0x26dd6f){return _0x26dd6f[_0xb648('0x6c')](_0x3a5199[_0xb648('0x5c')][_0xb648('0x6d')],_[_0xb648('0x6e')](_0x3a5199[_0xb648('0x5c')],['ids','id'])||{})['spread'](function(_0x2900fb){for(var _0x161f91=0x0;_0x161f91<_0x3a5199['body'][_0xb648('0x6d')][_0xb648('0x49')];_0x161f91+=0x1){socket[_0xb648('0x6f')](_0xb648('0x70'),{'UserId':Number(_0x3a5199['body'][_0xb648('0x6d')][_0x161f91]),'WhatsappAccountId':Number(_0x3a5199[_0xb648('0x59')]['id'])});}return _0x2900fb;});}})[_0xb648('0x20')](respondWithResult(_0x5857c0,null))[_0xb648('0x29')](handleError(_0x5857c0,null));};exports[_0xb648('0x71')]=function(_0x381324,_0x2850f0,_0x2d5f83){return db['WhatsappAccount'][_0xb648('0x5a')]({'where':{'id':_0x381324[_0xb648('0x59')]['id']}})[_0xb648('0x20')](handleEntityNotFound(_0x2850f0,null))[_0xb648('0x20')](function(_0x4094ff){if(_0x4094ff){return _0x4094ff['removeAgents'](_0x381324[_0xb648('0x44')][_0xb648('0x6d')])[_0xb648('0x20')](function(){if(_[_0xb648('0x72')](_0x381324['query']['ids'])){for(var _0x1a871a=0x0;_0x1a871a<_0x381324[_0xb648('0x44')]['ids'][_0xb648('0x49')];_0x1a871a+=0x1){socket[_0xb648('0x6f')](_0xb648('0x73'),{'UserId':Number(_0x381324['query'][_0xb648('0x6d')][_0x1a871a]),'WhatsappAccountId':Number(_0x381324['params']['id'])});}}else{socket[_0xb648('0x6f')](_0xb648('0x73'),{'UserId':Number(_0x381324[_0xb648('0x44')][_0xb648('0x6d')]),'WhatsappAccountId':Number(_0x381324[_0xb648('0x59')]['id'])});}});}})[_0xb648('0x20')](respondWithStatusCode(_0x2850f0,null))[_0xb648('0x29')](handleError(_0x2850f0,null));};exports['getAgents']=function(_0x439a39,_0x97139b,_0x477005){var _0x5ae948={};var _0x1aa972={};var _0x3fd05b;var _0x5d609b;return db[_0xb648('0x3f')]['findOne']({'where':{'id':_0x439a39[_0xb648('0x59')]['id']}})['then'](handleEntityNotFound(_0x97139b,null))[_0xb648('0x20')](function(_0x1fc8bf){if(_0x1fc8bf){_0x3fd05b=_0x1fc8bf;_0x1aa972['model']=_[_0xb648('0x45')](db[_0xb648('0x74')]['rawAttributes']);_0x1aa972[_0xb648('0x44')]=_[_0xb648('0x45')](_0x439a39[_0xb648('0x44')]);_0x1aa972[_0xb648('0x50')]=_[_0xb648('0x46')](_0x1aa972[_0xb648('0x4a')],_0x1aa972[_0xb648('0x44')]);_0x5ae948[_0xb648('0x48')]=_['intersection'](_0x1aa972[_0xb648('0x4a')],qs[_0xb648('0x47')](_0x439a39[_0xb648('0x44')][_0xb648('0x47')]));_0x5ae948[_0xb648('0x48')]=_0x5ae948[_0xb648('0x48')][_0xb648('0x49')]?_0x5ae948[_0xb648('0x48')]:_0x1aa972[_0xb648('0x4a')];_0x5ae948[_0xb648('0x4d')]=qs[_0xb648('0x4e')](_0x439a39[_0xb648('0x44')][_0xb648('0x4e')]);_0x5ae948[_0xb648('0x4f')]=qs[_0xb648('0x50')](_[_0xb648('0x64')](_0x439a39[_0xb648('0x44')],_0x1aa972[_0xb648('0x50')]));if(_0x439a39['query'][_0xb648('0x51')]){_0x5ae948[_0xb648('0x4f')]=_[_0xb648('0x52')](_0x5ae948[_0xb648('0x4f')],{'$or':_['map'](_0x5ae948['attributes'],function(_0x2bfe6c){var _0x15df4f={};_0x15df4f[_0x2bfe6c]={'$like':'%'+_0x439a39['query']['filter']+'%'};return _0x15df4f;})});}_0x5ae948=_[_0xb648('0x52')]({},_0x5ae948,_0x439a39[_0xb648('0x54')]);return _0x3fd05b[_0xb648('0x75')](_0x5ae948);}})[_0xb648('0x20')](function(_0x2211d9){if(_0x2211d9){_0x5d609b=_0x2211d9[_0xb648('0x49')];if(!_0x439a39[_0xb648('0x44')][_0xb648('0x4b')](_0xb648('0x4c'))){_0x5ae948[_0xb648('0x30')]=qs[_0xb648('0x30')](_0x439a39[_0xb648('0x44')][_0xb648('0x30')]);_0x5ae948['offset']=qs[_0xb648('0x2e')](_0x439a39[_0xb648('0x44')][_0xb648('0x2e')]);}return _0x3fd05b[_0xb648('0x75')](_0x5ae948);}})[_0xb648('0x20')](function(_0x2f8351){if(_0x2f8351){return _0x2f8351?{'count':_0x5d609b,'rows':_0x2f8351}:null;}})[_0xb648('0x20')](respondWithResult(_0x97139b,null))[_0xb648('0x29')](handleError(_0x97139b,null));};exports[_0xb648('0x76')]=function(_0x15b516,_0x4dbf4d,_0x5e5b5f){return db[_0xb648('0x3f')][_0xb648('0x6a')]({'where':{'id':_0x15b516[_0xb648('0x59')]['id']}})[_0xb648('0x20')](handleEntityNotFound(_0x4dbf4d,null))[_0xb648('0x20')](function(_0x4ca81a){if(_0x4ca81a){return db[_0xb648('0x77')][_0xb648('0x78')](function(_0x213a8b){return db[_0xb648('0x79')][_0xb648('0x36')]({'where':{'WhatsappAccountId':_0x15b516['params']['id']},'transaction':_0x213a8b})[_0xb648('0x20')](function(_0x5526dd){var _0x21cf39=_[_0xb648('0x3e')](_0x15b516[_0xb648('0x5c')],function(_0x49e8d7){_0x49e8d7['WhatsappAccountId']=_0x15b516['params']['id'];return _0x49e8d7;});return db[_0xb648('0x79')][_0xb648('0x7a')](_0x21cf39,{'transaction':_0x213a8b});});})[_0xb648('0x20')](function(){return db[_0xb648('0x79')][_0xb648('0x7b')]({'where':{'WhatsappAccountId':_0x15b516[_0xb648('0x59')]['id']},'order':_0xb648('0x7c')});});}})['then'](respondWithResult(_0x4dbf4d,null))[_0xb648('0x29')](handleError(_0x4dbf4d,null));};exports[_0xb648('0x7d')]=function(_0x2303c1,_0x1bbb5e,_0x353340){var _0x26149a={};var _0x48c95f={};var _0x628a84;var _0xa17e2d;return db['WhatsappAccount'][_0xb648('0x6a')]({'where':{'id':_0x2303c1[_0xb648('0x59')]['id']}})['then'](handleEntityNotFound(_0x1bbb5e,null))[_0xb648('0x20')](function(_0x4e4a65){if(_0x4e4a65){_0x628a84=_0x4e4a65;_0x48c95f[_0xb648('0x4a')]=_[_0xb648('0x45')](db[_0xb648('0x79')][_0xb648('0x40')]);_0x48c95f['query']=_[_0xb648('0x45')](_0x2303c1[_0xb648('0x44')]);_0x48c95f[_0xb648('0x50')]=_[_0xb648('0x46')](_0x48c95f[_0xb648('0x4a')],_0x48c95f['query']);_0x26149a[_0xb648('0x48')]=_[_0xb648('0x46')](_0x48c95f[_0xb648('0x4a')],qs[_0xb648('0x47')](_0x2303c1[_0xb648('0x44')][_0xb648('0x47')]));_0x26149a[_0xb648('0x48')]=_0x26149a['attributes'][_0xb648('0x49')]?_0x26149a[_0xb648('0x48')]:_0x48c95f[_0xb648('0x4a')];_0x26149a[_0xb648('0x4d')]=qs[_0xb648('0x4e')](_0x2303c1[_0xb648('0x44')]['sort']);_0x26149a[_0xb648('0x4f')]=qs[_0xb648('0x50')](_[_0xb648('0x64')](_0x2303c1[_0xb648('0x44')],_0x48c95f[_0xb648('0x50')]));if(_0x2303c1[_0xb648('0x44')][_0xb648('0x51')]){_0x26149a[_0xb648('0x4f')]=_['merge'](_0x26149a[_0xb648('0x4f')],{'$or':_[_0xb648('0x3e')](_0x26149a[_0xb648('0x48')],function(_0x5e9409){var _0xb2f807={};_0xb2f807[_0x5e9409]={'$like':'%'+_0x2303c1[_0xb648('0x44')][_0xb648('0x51')]+'%'};return _0xb2f807;})});}_0x26149a=_[_0xb648('0x52')]({},_0x26149a,_0x2303c1[_0xb648('0x54')]);return _0x628a84[_0xb648('0x7d')](_0x26149a);}})[_0xb648('0x20')](function(_0x47f417){if(_0x47f417){_0xa17e2d=_0x47f417['length'];if(!_0x2303c1[_0xb648('0x44')][_0xb648('0x4b')](_0xb648('0x4c'))){_0x26149a['limit']=qs[_0xb648('0x30')](_0x2303c1['query']['limit']);_0x26149a[_0xb648('0x2e')]=qs[_0xb648('0x2e')](_0x2303c1['query']['offset']);}return _0x628a84[_0xb648('0x7d')](_0x26149a);}})[_0xb648('0x20')](function(_0x489721){if(_0x489721){return _0x489721?{'count':_0xa17e2d,'rows':_0x489721}:null;}})[_0xb648('0x20')](respondWithResult(_0x1bbb5e,null))[_0xb648('0x29')](handleError(_0x1bbb5e,null));};exports[_0xb648('0x7e')]=function(_0x2ec3b1,_0x9f9e7d,_0x20c115){var _0x368726={'channel':_0xb648('0x7f')};var _0x5a14c7=[];var _0x4d7cb8=[];var _0x176c98={};return db[_0xb648('0x3f')][_0xb648('0x5a')]({'where':{'id':_0x2ec3b1[_0xb648('0x59')]['id']},'include':[{'model':db[_0xb648('0x79')],'as':_0xb648('0x80')}]})[_0xb648('0x20')](handleEntityNotFound(_0x9f9e7d,null))[_0xb648('0x20')](function(_0x32539e){_0x368726[_0xb648('0x81')]=_0x32539e;_0x368726['applications']=_[_0xb648('0x82')](_0x32539e[_0xb648('0x80')],[_0xb648('0x7c')],[_0xb648('0x83')]);if(_0x368726[_0xb648('0x81')][_0xb648('0x80')]){delete _0x368726['account'][_0xb648('0x80')];}return db[_0xb648('0x84')]['describe']();})[_0xb648('0x20')](function(_0x195ff8){if(!_0x195ff8){throw new db[(_0xb648('0x85'))][(_0xb648('0x86'))]('no\x20available\x20attributes');}_0x5a14c7=_['difference'](_[_0xb648('0x45')](_0x195ff8),[_0xb648('0x87'),_0xb648('0x88')]);_0x4d7cb8=_[_0xb648('0x89')](_[_0xb648('0x45')](_0x195ff8),[_0xb648('0x87'),'updatedAt','CompanyId',_0xb648('0x8a')]);_0x368726['body']={'mapKey':_0xb648('0x8b')};if(_0x368726[_0xb648('0x81')][_0xb648('0x42')]&&_0x368726['account'][_0xb648('0x42')]===_0xb648('0x8c')){_0x368726['body'][_0xb648('0x8d')]=_0x2ec3b1[_0xb648('0x5c')]['From']['replace'](_0xb648('0x8e'),'');_0x368726[_0xb648('0x5c')][_0xb648('0x5c')]=_0x2ec3b1[_0xb648('0x5c')][_0xb648('0x8f')];_0x368726[_0xb648('0x5c')][_0xb648('0x90')]=_0x2ec3b1[_0xb648('0x5c')][_0xb648('0x91')];}if(_0x368726[_0xb648('0x5c')]['id']){delete _0x368726[_0xb648('0x5c')]['id'];}if(_[_0xb648('0x92')](_0x368726[_0xb648('0x5c')]['from'])){throw new db['Sequelize']['ValidationError'](_0xb648('0x93'));}if(_[_0xb648('0x92')](_0x368726['body'][_0xb648('0x5c')])||_0x368726[_0xb648('0x5c')]['body']===''){throw new db[(_0xb648('0x85'))][(_0xb648('0x86'))](_0xb648('0x94'));}if(_[_0xb648('0x92')](_0x368726[_0xb648('0x5c')][_0xb648('0x95')])){throw new db[(_0xb648('0x85'))][(_0xb648('0x86'))](_0xb648('0x96')+_0x4d7cb8);}if(!_['includes'](_0x4d7cb8,_0x368726[_0xb648('0x5c')][_0xb648('0x95')])){throw new db[(_0xb648('0x85'))][(_0xb648('0x86'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4d7cb8);}_0x176c98[_0x368726[_0xb648('0x5c')][_0xb648('0x95')]]=_0x368726[_0xb648('0x5c')][_0xb648('0x8d')];return db[_0xb648('0x97')][_0xb648('0x5a')]({'where':{'id':_0x368726[_0xb648('0x81')][_0xb648('0x8a')]},'include':[{'model':db[_0xb648('0x84')],'as':_0xb648('0x98'),'where':_0x176c98,'limit':0x1,'order':[['updatedAt',_0xb648('0x99')]]}]});})[_0xb648('0x20')](handleEntityNotFound(_0x9f9e7d,null))[_0xb648('0x20')](function(_0x5814d3){if(_0x5814d3){_0x368726[_0xb648('0x9a')]=_['omit'](_0x5814d3,[_0xb648('0x98')]);if(_0x5814d3['Contacts'][_0xb648('0x49')]){return _0x5814d3[_0xb648('0x98')][0x0];}var _0x371bda=_['defaults'](_0x368726[_0xb648('0x5c')],{'firstName':_0x368726[_0xb648('0x5c')]['from'],'ListId':_0x5814d3['id']});_0x371bda[_0x368726[_0xb648('0x5c')]['mapKey']]=_0x368726['body']['from'];return db[_0xb648('0x84')][_0xb648('0x5b')](_0x371bda,{'fields':_0x5a14c7,'raw':!![]});}})[_0xb648('0x20')](handleEntityNotFound(_0x9f9e7d,null))[_0xb648('0x20')](function(_0x43150d){if(_0x43150d){_0x368726[_0xb648('0x9b')]=_0x43150d;var _0x41a993={'ContactId':_0x43150d['id'],'phone':_0x368726[_0xb648('0x5c')][_0xb648('0x8d')],'WhatsappAccountId':_0x2ec3b1[_0xb648('0x59')]['id']};var _0x3e7903={'ContactId':_0x43150d['id'],'WhatsappAccountId':_0x2ec3b1['params']['id'],'closed':![]};return db[_0xb648('0x9c')][_0xb648('0x5a')]({'where':_0x3e7903})[_0xb648('0x20')](function(_0x2a3c6f){if(_0x2a3c6f){return[_0x2a3c6f,![]];}return db[_0xb648('0x9c')]['create'](_0x41a993)[_0xb648('0x20')](function(_0x59ad6b){return[_0x59ad6b,!![]];});});}})['spread'](function(_0x192755,_0x26af14){_0x368726[_0xb648('0x9d')]=_0x192755[_0xb648('0x37')]({'plain':!![]});_0x368726[_0xb648('0x9d')][_0xb648('0x9e')]=![];if(_0x26af14){if(_0x368726['account'][_0xb648('0x9f')]){_0x368726[_0xb648('0xa0')][_0xb648('0xa1')]({'id':0x0,'priority':_0x368726[_0xb648('0xa0')][_0xb648('0x49')]+0x1,'app':'close','appdata':_0xb648('0xa2'),'interval':_0xb648('0xa3')});}_0x368726[_0xb648('0x9d')][_0xb648('0x9e')]=!![];}return db[_0xb648('0xa4')][_0xb648('0x5b')]({'phone':_0x368726[_0xb648('0x5c')][_0xb648('0x8d')],'messageId':_0x368726['body']['messageId'],'body':_0x368726['body'][_0xb648('0x5c')],'WhatsappAccountId':_0x2ec3b1[_0xb648('0x59')]['id'],'WhatsappInteractionId':_0x192755['id'],'direction':'in','ContactId':_0x192755[_0xb648('0xa5')],'AttachmentId':_0x368726[_0xb648('0x5c')][_0xb648('0xa6')]});})[_0xb648('0x20')](function(_0x151b5f){_0x368726[_0xb648('0x27')]=_0x151b5f;if(_0x368726[_0xb648('0x9d')]['UserId']){return db[_0xb648('0x74')][_0xb648('0x5a')]({'attributes':['id','name'],'where':{'id':_0x368726[_0xb648('0x9d')][_0xb648('0xa7')]}})['then'](function(_0x309518){if(_0x309518){_0x368726[_0xb648('0xa0')][_0xb648('0xa8')]({'id':0x0,'priority':0x0,'app':_0xb648('0xa9'),'appdata':_0x309518[_0xb648('0x3a')]+','+(_0x368726[_0xb648('0x81')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb648('0xaa'),_0xb648('0xab'),_0x368726);});}return respondWithRpcPromise('Start',_0xb648('0xab'),_0x368726);})['then'](function(_0x4b2016){if(_0x4b2016){var _0x13b1b8=0xc8;var _0x1fa7c8=_0xb648('0xac');logger[_0xb648('0x21')](_0xb648('0xad'),_0x1fa7c8,_0x13b1b8,_0xb648('0xae'));logger['debug'](_0xb648('0xaf'),_0x1fa7c8,_0x13b1b8,_0xb648('0xae'),JSON[_0xb648('0xb0')](_0x4b2016));if(_0x368726[_0xb648('0x81')][_0xb648('0x42')]==='twilio'){return _0x9f9e7d[_0xb648('0x2b')](_0x13b1b8)['set'](_0xb648('0xb1'),'text/xml')['send'](_0xb648('0xb2'));}else{return _0x9f9e7d[_0xb648('0x2b')](_0x13b1b8)[_0xb648('0x2d')](_0x4b2016);}}})['catch'](handleError(_0x9f9e7d,null));};exports[_0xb648('0xb3')]=function(_0x4071b4,_0x44931c,_0x9e89c0){var _0x3209a1,_0x2058d1,_0x165861;if(_[_0xb648('0x92')](_0x4071b4['body'][_0xb648('0x5c')])||_0x4071b4[_0xb648('0x5c')][_0xb648('0x5c')]===''){throw new db[(_0xb648('0x85'))][(_0xb648('0x86'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xb648('0x92')](_0x4071b4[_0xb648('0x5c')]['to'])){throw new db[(_0xb648('0x85'))][(_0xb648('0x86'))]('to\x20is\x20mandatory');}_0x3209a1=_0x4071b4[_0xb648('0x5c')]['to'];return db[_0xb648('0x3f')][_0xb648('0x5a')]({'where':{'id':_0x4071b4[_0xb648('0x59')]['id']},'include':[{'model':db['CmList'],'as':_0xb648('0xb4'),'include':[{'model':db[_0xb648('0x84')],'as':'Contacts','where':{'mobile':_0x3209a1},'limit':0x1,'order':[[_0xb648('0x88'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x44931c,null))[_0xb648('0x20')](function(_0x572716){if(_0x572716&&_0x572716[_0xb648('0xb4')]){_0x2058d1=_0x572716[_0xb648('0x37')]({'plain':!![]});if(_0x2058d1['List']&&_0x2058d1[_0xb648('0xb4')][_0xb648('0x98')][_0xb648('0x49')]){return _0x2058d1[_0xb648('0xb4')][_0xb648('0x98')][0x0];}return db[_0xb648('0x84')][_0xb648('0x5b')](_[_0xb648('0x1a')](_0x4071b4[_0xb648('0x5c')],{'firstName':_0x3209a1,'mobile':_0x3209a1,'phone':_0x3209a1,'ListId':_0x2058d1[_0xb648('0x8a')]}));}})[_0xb648('0x20')](handleEntityNotFound(_0x44931c,null))[_0xb648('0x20')](function(_0x379fe1){if(_0x379fe1){_0x165861=_0x379fe1;return db[_0xb648('0x9c')][_0xb648('0x5a')]({'where':{'ContactId':_0x165861['id'],'closed':![],'WhatsappAccountId':_0x2058d1['id']}})[_0xb648('0x20')](function(_0x5181d9){if(_0x5181d9){return[_0x5181d9,![]];}return db[_0xb648('0x9c')][_0xb648('0x5b')]({'UserId':_0x4071b4[_0xb648('0x5d')]['id'],'ContactId':_0x165861['id'],'WhatsappAccountId':_0x2058d1['id'],'phone':_0x3209a1,'firstMsgDirection':'out','Messages':[_['merge'](_0x4071b4[_0xb648('0x5c')],{'read':![],'body':_0x4071b4[_0xb648('0x5c')][_0xb648('0x5c')],'phone':_0x3209a1,'WhatsappAccountId':_0x2058d1['id'],'UserId':_0x4071b4['user']['id'],'ContactId':_0x165861['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xb648('0xb5')}]})[_0xb648('0x20')](function(_0x470007){return[_0x470007,!![]];});});}})[_0xb648('0xb6')](function(_0xe170c0,_0x1199db){if(_0x1199db){return _0xe170c0;}return db[_0xb648('0xa4')]['create'](_['merge'](_0x4071b4[_0xb648('0x5c')],{'read':![],'body':_0x4071b4[_0xb648('0x5c')]['body'],'phone':_0x3209a1,'WhatsappAccountId':_0x2058d1['id'],'WhatsappInteractionId':_0xe170c0['id'],'UserId':_0x4071b4[_0xb648('0x5d')]['id'],'ContactId':_0x165861['id']}))[_0xb648('0x20')](function(_0x566793){_0xe170c0[_0xb648('0xb7')]['Messages']=[];_0xe170c0[_0xb648('0xb7')][_0xb648('0xb5')][_0xb648('0xa1')](_0x566793['dataValues']);return _0xe170c0;});})[_0xb648('0x20')](respondWithResult(_0x44931c,null))[_0xb648('0x29')](handleError(_0x44931c,null));};
\ No newline at end of file
index 062b68c..ed88569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc018=['remove','emit','hasOwnProperty','exports','events','setMaxListeners','save'];(function(_0x56e7be,_0x5680a4){var _0xc011c0=function(_0x56929a){while(--_0x56929a){_0x56e7be['push'](_0x56e7be['shift']());}};_0xc011c0(++_0x5680a4);}(_0xc018,0x66));var _0x8c01=function(_0x15b01b,_0x6163a0){_0x15b01b=_0x15b01b-0x0;var _0x3055cc=_0xc018[_0x15b01b];return _0x3055cc;};'use strict';var EventEmitter=require(_0x8c01('0x0'));var WhatsappAccount=require('../../mysqldb')['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x8c01('0x1')](0x0);var events={'afterCreate':_0x8c01('0x2'),'afterUpdate':'update','afterDestroy':_0x8c01('0x3')};function emitEvent(_0x45024c){return function(_0x3633fa,_0x4afecf,_0x248fb2){WhatsappAccountEvents['emit'](_0x45024c+':'+_0x3633fa['id'],_0x3633fa);WhatsappAccountEvents[_0x8c01('0x4')](_0x45024c,_0x3633fa);_0x248fb2(null);};}for(var e in events){if(events[_0x8c01('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x8c01('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xd665=['hasOwnProperty','exports','events','../../mysqldb','WhatsappAccount','update','remove','emit'];(function(_0xc83aa0,_0x9ae650){var _0x26989f=function(_0x1f66d5){while(--_0x1f66d5){_0xc83aa0['push'](_0xc83aa0['shift']());}};_0x26989f(++_0x9ae650);}(_0xd665,0x182));var _0x5d66=function(_0x17b85b,_0x4af61d){_0x17b85b=_0x17b85b-0x0;var _0x55801c=_0xd665[_0x17b85b];return _0x55801c;};'use strict';var EventEmitter=require(_0x5d66('0x0'));var WhatsappAccount=require(_0x5d66('0x1'))['db'][_0x5d66('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5d66('0x3'),'afterDestroy':_0x5d66('0x4')};function emitEvent(_0x48a73c){return function(_0x5ccd5b,_0xa560ac,_0x27a3a9){WhatsappAccountEvents['emit'](_0x48a73c+':'+_0x5ccd5b['id'],_0x5ccd5b);WhatsappAccountEvents[_0x5d66('0x5')](_0x48a73c,_0x5ccd5b);_0x27a3a9(null);};}for(var e in events){if(events[_0x5d66('0x6')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x5d66('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index 7727a2e..1ef6d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4be0=['request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2aa6cd,_0x27a894){var _0x332d67=function(_0x539eb8){while(--_0x539eb8){_0x2aa6cd['push'](_0x2aa6cd['shift']());}};_0x332d67(++_0x27a894);}(_0x4be0,0x182));var _0x04be=function(_0x221159,_0x30a62d){_0x221159=_0x221159-0x0;var _0x1c301d=_0x4be0[_0x221159];return _0x1c301d;};'use strict';var _=require(_0x04be('0x0'));var util=require(_0x04be('0x1'));var logger=require(_0x04be('0x2'))(_0x04be('0x3'));var moment=require(_0x04be('0x4'));var BPromise=require(_0x04be('0x5'));var rp=require(_0x04be('0x6'));var fs=require('fs');var path=require(_0x04be('0x7'));var rimraf=require(_0x04be('0x8'));var config=require(_0x04be('0x9'));var attributes=require(_0x04be('0xa'));module[_0x04be('0xb')]=function(_0x23ee1e,_0xdb38c5){return _0x23ee1e[_0x04be('0xc')]('WhatsappAccount',attributes,{'tableName':_0x04be('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0fbf=['rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1337d5,_0x526c5d){var _0x5befb7=function(_0x5ea15e){while(--_0x5ea15e){_0x1337d5['push'](_0x1337d5['shift']());}};_0x5befb7(++_0x526c5d);}(_0x0fbf,0xca));var _0xf0fb=function(_0x319562,_0x48b2a9){_0x319562=_0x319562-0x0;var _0x3e6ef4=_0x0fbf[_0x319562];return _0x3e6ef4;};'use strict';var _=require(_0xf0fb('0x0'));var util=require(_0xf0fb('0x1'));var logger=require(_0xf0fb('0x2'))(_0xf0fb('0x3'));var moment=require(_0xf0fb('0x4'));var BPromise=require(_0xf0fb('0x5'));var rp=require(_0xf0fb('0x6'));var fs=require('fs');var path=require(_0xf0fb('0x7'));var rimraf=require(_0xf0fb('0x8'));var config=require(_0xf0fb('0x9'));var attributes=require(_0xf0fb('0xa'));module[_0xf0fb('0xb')]=function(_0x42fea6,_0x58cc79){return _0x42fea6[_0xf0fb('0xc')]('WhatsappAccount',attributes,{'tableName':_0xf0fb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2ac2ab..a03b880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x242e=['../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','register','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map','model','debug','stringify','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x242e,0x1e5));var _0xe242=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x242e[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0xe242('0x0'));var util=require('util');var moment=require(_0xe242('0x1'));var BPromise=require(_0xe242('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe242('0x3'));var db=require(_0xe242('0x4'))['db'];var utils=require(_0xe242('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xe242('0x6'));var jayson=require(_0xe242('0x7'));var client=jayson[_0xe242('0x8')][_0xe242('0x9')]({'port':0x232a});config[_0xe242('0xa')]=_['defaults'](config['redis'],{'host':_0xe242('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappAccount.socket')[_0xe242('0xc')](socket);function respondWithRpcPromise(_0x5b06f5,_0x7af1d8,_0xdb21ab){return new BPromise(function(_0x56e526,_0x458bc9){return client['request'](_0x5b06f5,_0xdb21ab)[_0xe242('0xd')](function(_0x546016){logger[_0xe242('0xe')](_0xe242('0xf'),_0x7af1d8,_0xe242('0x10'));logger['debug'](_0xe242('0x11'),_0x7af1d8,_0xe242('0x10'),JSON['stringify'](_0x546016));if(_0x546016['error']){if(_0x546016[_0xe242('0x12')][_0xe242('0x13')]===0x1f4){logger[_0xe242('0x12')](_0xe242('0xf'),_0x7af1d8,_0x546016[_0xe242('0x12')][_0xe242('0x14')]);return _0x458bc9(_0x546016[_0xe242('0x12')]['message']);}logger[_0xe242('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x7af1d8,_0x546016[_0xe242('0x12')][_0xe242('0x14')]);return _0x56e526(_0x546016[_0xe242('0x12')][_0xe242('0x14')]);}else{logger[_0xe242('0xe')](_0xe242('0xf'),_0x7af1d8,_0xe242('0x10'));_0x56e526(_0x546016[_0xe242('0x15')][_0xe242('0x14')]);}})[_0xe242('0x16')](function(_0x4242f8){logger['error'](_0xe242('0xf'),_0x7af1d8,_0x4242f8);_0x458bc9(_0x4242f8);});});}exports[_0xe242('0x17')]=function(_0x3be74c){var _0x5e697b=this;return new Promise(function(_0x4d2aa2,_0x4ae358){return db[_0xe242('0x18')][_0xe242('0x19')]({'raw':_0x3be74c[_0xe242('0x1a')]?_0x3be74c[_0xe242('0x1a')][_0xe242('0x1b')]===undefined?!![]:![]:!![],'where':_0x3be74c[_0xe242('0x1a')]?_0x3be74c[_0xe242('0x1a')][_0xe242('0x1c')]||null:null,'attributes':_0x3be74c[_0xe242('0x1a')]?_0x3be74c['options'][_0xe242('0x1d')]||null:null,'include':_0x3be74c[_0xe242('0x1a')]?_0x3be74c[_0xe242('0x1a')][_0xe242('0x1e')]?_[_0xe242('0x1f')](_0x3be74c[_0xe242('0x1a')][_0xe242('0x1e')],function(_0x26d2d8){return{'model':db[_0x26d2d8[_0xe242('0x20')]],'as':_0x26d2d8['as'],'attributes':_0x26d2d8[_0xe242('0x1d')],'include':_0x26d2d8['include']?_[_0xe242('0x1f')](_0x26d2d8[_0xe242('0x1e')],function(_0x1f4af2){return{'model':db[_0x1f4af2[_0xe242('0x20')]],'as':_0x1f4af2['as'],'attributes':_0x1f4af2[_0xe242('0x1d')],'include':_0x1f4af2[_0xe242('0x1e')]?_['map'](_0x1f4af2[_0xe242('0x1e')],function(_0x5a5fb1){return{'model':db[_0x5a5fb1[_0xe242('0x20')]],'as':_0x5a5fb1['as'],'attributes':_0x5a5fb1[_0xe242('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51ffd5){logger[_0xe242('0xe')]('ShowWhatsappAccount',_0x3be74c);logger[_0xe242('0x21')](_0xe242('0x17'),_0x3be74c,JSON[_0xe242('0x22')](_0x51ffd5));_0x4d2aa2(_0x51ffd5);})[_0xe242('0x16')](function(_0x4d4681){logger[_0xe242('0x12')](_0xe242('0x17'),_0x4d4681[_0xe242('0x14')],_0x3be74c);_0x4ae358(_0x5e697b[_0xe242('0x12')](0x1f4,_0x4d4681[_0xe242('0x14')]));});});};
\ No newline at end of file
+var _0x93cc=['ShowWhatsappAccount','find','options','raw','attributes','map','model','include','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','request','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','catch'];(function(_0x1f0b3b,_0xc56231){var _0x4f889a=function(_0x2da852){while(--_0x2da852){_0x1f0b3b['push'](_0x1f0b3b['shift']());}};_0x4f889a(++_0xc56231);}(_0x93cc,0x90));var _0xc93c=function(_0x970c54,_0x1be22c){_0x970c54=_0x970c54-0x0;var _0x282eb6=_0x93cc[_0x970c54];return _0x282eb6;};'use strict';var _=require(_0xc93c('0x0'));var util=require(_0xc93c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc93c('0x2'));var fs=require('fs');var Redis=require(_0xc93c('0x3'));var db=require(_0xc93c('0x4'))['db'];var utils=require(_0xc93c('0x5'));var logger=require(_0xc93c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc93c('0x7')][_0xc93c('0x8')]({'port':0x232a});config[_0xc93c('0x9')]=_[_0xc93c('0xa')](config[_0xc93c('0x9')],{'host':_0xc93c('0xb'),'port':0x18eb});var socket=require(_0xc93c('0xc'))(new Redis(config[_0xc93c('0x9')]));require(_0xc93c('0xd'))['register'](socket);function respondWithRpcPromise(_0x5c1bdf,_0x2175c4,_0x20851d){return new BPromise(function(_0x50c667,_0x5eef92){return client[_0xc93c('0xe')](_0x5c1bdf,_0x20851d)[_0xc93c('0xf')](function(_0x41049d){logger[_0xc93c('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x2175c4,'request\x20sent');logger[_0xc93c('0x11')](_0xc93c('0x12'),_0x2175c4,_0xc93c('0x13'),JSON['stringify'](_0x41049d));if(_0x41049d[_0xc93c('0x14')]){if(_0x41049d['error'][_0xc93c('0x15')]===0x1f4){logger['error'](_0xc93c('0x16'),_0x2175c4,_0x41049d[_0xc93c('0x14')][_0xc93c('0x17')]);return _0x5eef92(_0x41049d['error'][_0xc93c('0x17')]);}logger[_0xc93c('0x14')](_0xc93c('0x16'),_0x2175c4,_0x41049d[_0xc93c('0x14')][_0xc93c('0x17')]);return _0x50c667(_0x41049d[_0xc93c('0x14')][_0xc93c('0x17')]);}else{logger[_0xc93c('0x10')](_0xc93c('0x16'),_0x2175c4,_0xc93c('0x13'));_0x50c667(_0x41049d[_0xc93c('0x18')][_0xc93c('0x17')]);}})[_0xc93c('0x19')](function(_0x5dda39){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x2175c4,_0x5dda39);_0x5eef92(_0x5dda39);});});}exports[_0xc93c('0x1a')]=function(_0x43d976){var _0x3e28f7=this;return new Promise(function(_0x3054f6,_0x3c3a1f){return db['WhatsappAccount'][_0xc93c('0x1b')]({'raw':_0x43d976[_0xc93c('0x1c')]?_0x43d976['options'][_0xc93c('0x1d')]===undefined?!![]:![]:!![],'where':_0x43d976[_0xc93c('0x1c')]?_0x43d976[_0xc93c('0x1c')]['where']||null:null,'attributes':_0x43d976[_0xc93c('0x1c')]?_0x43d976[_0xc93c('0x1c')][_0xc93c('0x1e')]||null:null,'include':_0x43d976[_0xc93c('0x1c')]?_0x43d976[_0xc93c('0x1c')]['include']?_[_0xc93c('0x1f')](_0x43d976[_0xc93c('0x1c')]['include'],function(_0x1f3abb){return{'model':db[_0x1f3abb['model']],'as':_0x1f3abb['as'],'attributes':_0x1f3abb[_0xc93c('0x1e')],'include':_0x1f3abb['include']?_[_0xc93c('0x1f')](_0x1f3abb['include'],function(_0x503271){return{'model':db[_0x503271[_0xc93c('0x20')]],'as':_0x503271['as'],'attributes':_0x503271[_0xc93c('0x1e')],'include':_0x503271['include']?_['map'](_0x503271[_0xc93c('0x21')],function(_0x3a18b4){return{'model':db[_0x3a18b4[_0xc93c('0x20')]],'as':_0x3a18b4['as'],'attributes':_0x3a18b4[_0xc93c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc93c('0xf')](function(_0x120e2f){logger[_0xc93c('0x10')]('ShowWhatsappAccount',_0x43d976);logger[_0xc93c('0x11')]('ShowWhatsappAccount',_0x43d976,JSON['stringify'](_0x120e2f));_0x3054f6(_0x120e2f);})[_0xc93c('0x19')](function(_0x321eaf){logger[_0xc93c('0x14')](_0xc93c('0x1a'),_0x321eaf[_0xc93c('0x17')],_0x43d976);_0x3c3a1f(_0x3e28f7['error'](0x1f4,_0x321eaf['message']));});});};
\ No newline at end of file
index e8f29e2..0b512a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa851=['emit','length','whatsappAccount:','save','update'];(function(_0x460f81,_0x553431){var _0x423f0d=function(_0x267a6b){while(--_0x267a6b){_0x460f81['push'](_0x460f81['shift']());}};_0x423f0d(++_0x553431);}(_0xa851,0x1ca));var _0x1a85=function(_0x544f46,_0x168b65){_0x544f46=_0x544f46-0x0;var _0x21e7f2=_0xa851[_0x544f46];return _0x21e7f2;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x1a85('0x0'),'remove',_0x1a85('0x1')];function createListener(_0x492035,_0x36ba8e){return function(_0x4d2166){_0x36ba8e[_0x1a85('0x2')](_0x492035,_0x4d2166);};}function removeListener(_0x26b43a,_0x589373){return function(){WhatsappAccountEvents['removeListener'](_0x26b43a,_0x589373);};}exports['register']=function(_0xdf1a1f){for(var _0x586de3=0x0,_0x24cd51=events[_0x1a85('0x3')];_0x586de3<_0x24cd51;_0x586de3++){var _0x427904=events[_0x586de3];var _0x2f37d3=createListener(_0x1a85('0x4')+_0x427904,_0xdf1a1f);WhatsappAccountEvents['on'](_0x427904,_0x2f37d3);}};
\ No newline at end of file
+var _0x7c68=['whatsappAccount:','remove','emit','removeListener','register','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7c68,0xfd));var _0x87c6=function(_0x5cd30d,_0x5ea35e){_0x5cd30d=_0x5cd30d-0x0;var _0x2f90d0=_0x7c68[_0x5cd30d];return _0x2f90d0;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=['save',_0x87c6('0x0'),'update'];function createListener(_0x31e474,_0x4a37eb){return function(_0x56e5cc){_0x4a37eb[_0x87c6('0x1')](_0x31e474,_0x56e5cc);};}function removeListener(_0x2eaa07,_0x12abdf){return function(){WhatsappAccountEvents[_0x87c6('0x2')](_0x2eaa07,_0x12abdf);};}exports[_0x87c6('0x3')]=function(_0x1a32fd){for(var _0x41c36a=0x0,_0x153e91=events[_0x87c6('0x4')];_0x41c36a<_0x153e91;_0x41c36a++){var _0x4bdcac=events[_0x41c36a];var _0x4cbf9e=createListener(_0x87c6('0x5')+_0x4bdcac,_0x1a32fd);WhatsappAccountEvents['on'](_0x4bdcac,_0x4cbf9e);}};
\ No newline at end of file
index 5067270..483b5e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde60=['create','update','delete','destroy','multer','path','Router','fs-extra','../../components/auth/service','./whatsappApplication.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x4a94bd,_0x31b0d1){var _0x41a18d=function(_0x2a4b51){while(--_0x2a4b51){_0x4a94bd['push'](_0x4a94bd['shift']());}};_0x41a18d(++_0x31b0d1);}(_0xde60,0xa4));var _0x0de6=function(_0x5e8965,_0x744744){_0x5e8965=_0x5e8965-0x0;var _0x5efd03=_0xde60[_0x5e8965];return _0x5efd03;};'use strict';var multer=require(_0x0de6('0x0'));var util=require('util');var path=require(_0x0de6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0de6('0x2')]();var fs_extra=require(_0x0de6('0x3'));var auth=require(_0x0de6('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0de6('0x5'));router['get']('/',auth[_0x0de6('0x6')](),controller[_0x0de6('0x7')]);router[_0x0de6('0x8')](_0x0de6('0x9'),auth['isAuthenticated'](),controller[_0x0de6('0xa')]);router[_0x0de6('0xb')]('/',auth[_0x0de6('0x6')](),controller[_0x0de6('0xc')]);router['put'](_0x0de6('0x9'),auth[_0x0de6('0x6')](),controller[_0x0de6('0xd')]);router[_0x0de6('0xe')](_0x0de6('0x9'),auth[_0x0de6('0x6')](),controller[_0x0de6('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x0467=['post','put','/:id','delete','destroy','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index'];(function(_0x39a053,_0x81d2d1){var _0x376b67=function(_0x370eec){while(--_0x370eec){_0x39a053['push'](_0x39a053['shift']());}};_0x376b67(++_0x81d2d1);}(_0x0467,0x186));var _0x7046=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x0467[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x7046('0x0'));var util=require('util');var path=require(_0x7046('0x1'));var timeout=require('connect-timeout');var express=require(_0x7046('0x2'));var router=express['Router']();var fs_extra=require(_0x7046('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7046('0x4'));var config=require(_0x7046('0x5'));var controller=require(_0x7046('0x6'));router[_0x7046('0x7')]('/',auth[_0x7046('0x8')](),controller[_0x7046('0x9')]);router[_0x7046('0x7')]('/:id',auth[_0x7046('0x8')](),controller['show']);router[_0x7046('0xa')]('/',auth[_0x7046('0x8')](),controller['create']);router[_0x7046('0xb')](_0x7046('0xc'),auth[_0x7046('0x8')](),controller['update']);router[_0x7046('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x7046('0xe')]);module[_0x7046('0xf')]=router;
\ No newline at end of file
index a343e5f..a35989b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0290=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x2d99e1,_0x1997a7){var _0x47725c=function(_0x3a56d1){while(--_0x3a56d1){_0x2d99e1['push'](_0x2d99e1['shift']());}};_0x47725c(++_0x1997a7);}(_0x0290,0x157));var _0x0029=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x0290[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x0029('0x0'));module[_0x0029('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x0029('0x2')],'allowNull':![],'defaultValue':_0x0029('0x3')},'appdata':{'type':Sequelize[_0x0029('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0029('0x2')],'defaultValue':_0x0029('0x5')}};
\ No newline at end of file
+var _0x9615=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0x4ae20a,_0x3b1aa4){var _0x415ecd=function(_0x2b07f5){while(--_0x2b07f5){_0x4ae20a['push'](_0x4ae20a['shift']());}};_0x415ecd(++_0x3b1aa4);}(_0x9615,0xae));var _0x5961=function(_0x3cbc32,_0x27136c){_0x3cbc32=_0x3cbc32-0x0;var _0x421024=_0x9615[_0x3cbc32];return _0x421024;};'use strict';var Sequelize=require(_0x5961('0x0'));module[_0x5961('0x1')]={'priority':{'type':Sequelize[_0x5961('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5961('0x3')},'appdata':{'type':Sequelize[_0x5961('0x4')]()},'description':{'type':Sequelize[_0x5961('0x5')]},'interval':{'type':Sequelize[_0x5961('0x5')],'defaultValue':_0x5961('0x6')}};
\ No newline at end of file
index 1105c30..451eb89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7374=['to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js'];(function(_0x2e1248,_0x3511fe){var _0x2df12a=function(_0x316d12){while(--_0x316d12){_0x2e1248['push'](_0x2e1248['shift']());}};_0x2df12a(++_0x3511fe);}(_0x7374,0x1b9));var _0x4737=function(_0x28b015,_0x1d5220){_0x28b015=_0x28b015-0x0;var _0x2801aa=_0x7374[_0x28b015];return _0x2801aa;};'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'];function respondWithStatusCode(_0xe662e8,_0x438f1d){_0x438f1d=_0x438f1d||0xcc;return function(_0xa7c11){if(_0xa7c11){return _0xe662e8[_0x4737('0x1a')](_0x438f1d);}return _0xe662e8['status'](_0x438f1d)[_0x4737('0x1b')]();};}function respondWithResult(_0x301753,_0x69f87b){_0x69f87b=_0x69f87b||0xc8;return function(_0xc7fceb){if(_0xc7fceb){return _0x301753[_0x4737('0x1c')](_0x69f87b)['json'](_0xc7fceb);}};}function respondWithFilteredResult(_0x4c1a5a,_0xeb4aa2){return function(_0x48a8c3){if(_0x48a8c3){var _0x470ed4=typeof _0xeb4aa2[_0x4737('0x1d')]==='undefined'&&typeof _0xeb4aa2[_0x4737('0x1e')]===_0x4737('0x1f');var _0xef032a=_0x48a8c3['count'];var _0x2d2c32=_0x470ed4?0x0:_0xeb4aa2['offset'];var _0x37b74d=_0x470ed4?_0x48a8c3[_0x4737('0x20')]:_0xeb4aa2[_0x4737('0x1d')]+_0xeb4aa2[_0x4737('0x1e')];var _0x1b2183;if(_0x37b74d>=_0xef032a){_0x37b74d=_0xef032a;_0x1b2183=0xc8;}else{_0x1b2183=0xce;}_0x4c1a5a['status'](_0x1b2183);return _0x4c1a5a[_0x4737('0x21')](_0x4737('0x22'),_0x2d2c32+'-'+_0x37b74d+'/'+_0xef032a)[_0x4737('0x23')](_0x48a8c3);}return null;};}function patchUpdates(_0x354b71){return function(_0x54c899){try{jsonpatch[_0x4737('0x24')](_0x54c899,_0x354b71,!![]);}catch(_0x5d9ed4){return BPromise[_0x4737('0x25')](_0x5d9ed4);}return _0x54c899[_0x4737('0x26')]();};}function saveUpdates(_0x4c1292,_0x67fac){return function(_0x1c004f){if(_0x1c004f){return _0x1c004f[_0x4737('0x27')](_0x4c1292)[_0x4737('0x28')](function(_0x56d82f){return _0x56d82f;});}return null;};}function removeEntity(_0x116ef4,_0x2ce99e){return function(_0x49eddf){if(_0x49eddf){return _0x49eddf[_0x4737('0x29')]()['then'](function(){_0x116ef4[_0x4737('0x1c')](0xcc)[_0x4737('0x1b')]();});}};}function handleEntityNotFound(_0x3df6c5,_0x10685f){return function(_0xe8e844){if(!_0xe8e844){_0x3df6c5[_0x4737('0x1a')](0x194);}return _0xe8e844;};}function handleError(_0x542c14,_0x1cc0c7){_0x1cc0c7=_0x1cc0c7||0x1f4;return function(_0x52c764){logger[_0x4737('0x2a')](_0x52c764['stack']);if(_0x52c764[_0x4737('0x2b')]){delete _0x52c764[_0x4737('0x2b')];}_0x542c14[_0x4737('0x1c')](_0x1cc0c7)['send'](_0x52c764);};}exports['index']=function(_0x2d7486,_0x43d44a){var _0x14e4a2={},_0x2d587c={},_0x235f7b={'count':0x0,'rows':[]};var _0x5d6a2a=_[_0x4737('0x2c')](db[_0x4737('0x2d')][_0x4737('0x2e')],function(_0x31f2cd){return{'name':_0x31f2cd[_0x4737('0x2f')],'type':_0x31f2cd[_0x4737('0x30')][_0x4737('0x31')]};});_0x2d587c[_0x4737('0x32')]=_['map'](_0x5d6a2a,_0x4737('0x2b'));_0x2d587c[_0x4737('0x33')]=_[_0x4737('0x34')](_0x2d7486[_0x4737('0x33')]);_0x2d587c[_0x4737('0x35')]=_[_0x4737('0x36')](_0x2d587c[_0x4737('0x32')],_0x2d587c[_0x4737('0x33')]);_0x14e4a2[_0x4737('0x37')]=_['intersection'](_0x2d587c['model'],qs[_0x4737('0x38')](_0x2d7486[_0x4737('0x33')]['fields']));_0x14e4a2[_0x4737('0x37')]=_0x14e4a2[_0x4737('0x37')][_0x4737('0x39')]?_0x14e4a2[_0x4737('0x37')]:_0x2d587c[_0x4737('0x32')];if(!_0x2d7486[_0x4737('0x33')][_0x4737('0x3a')](_0x4737('0x3b'))){_0x14e4a2[_0x4737('0x1e')]=qs[_0x4737('0x1e')](_0x2d7486['query'][_0x4737('0x1e')]);_0x14e4a2[_0x4737('0x1d')]=qs[_0x4737('0x1d')](_0x2d7486[_0x4737('0x33')]['offset']);}_0x14e4a2['order']=qs[_0x4737('0x3c')](_0x2d7486['query'][_0x4737('0x3c')]);_0x14e4a2[_0x4737('0x3d')]=qs['filters'](_[_0x4737('0x3e')](_0x2d7486[_0x4737('0x33')],_0x2d587c[_0x4737('0x35')]),_0x5d6a2a);if(_0x2d7486[_0x4737('0x33')][_0x4737('0x3f')]){_0x14e4a2[_0x4737('0x3d')]=_[_0x4737('0x40')](_0x14e4a2['where'],{'$or':_[_0x4737('0x2c')](_0x5d6a2a,function(_0x133744){if(_0x133744[_0x4737('0x30')]!==_0x4737('0x41')){var _0x658ea3={};_0x658ea3[_0x133744[_0x4737('0x2b')]]={'$like':'%'+_0x2d7486['query'][_0x4737('0x3f')]+'%'};return _0x658ea3;}})});}_0x14e4a2=_[_0x4737('0x40')]({},_0x14e4a2,_0x2d7486[_0x4737('0x42')]);var _0x4bd105={'where':_0x14e4a2['where']};return db[_0x4737('0x2d')][_0x4737('0x20')](_0x4bd105)['then'](function(_0x27bc72){_0x235f7b[_0x4737('0x20')]=_0x27bc72;if(_0x2d7486[_0x4737('0x33')][_0x4737('0x43')]){_0x14e4a2[_0x4737('0x44')]=[{'all':!![]}];}return db[_0x4737('0x2d')][_0x4737('0x45')](_0x14e4a2);})[_0x4737('0x28')](function(_0x90fea6){_0x235f7b[_0x4737('0x46')]=_0x90fea6;return _0x235f7b;})[_0x4737('0x28')](respondWithFilteredResult(_0x43d44a,_0x14e4a2))[_0x4737('0x47')](handleError(_0x43d44a,null));};exports[_0x4737('0x48')]=function(_0x1d3620,_0x5eccca){var _0x28ca8a={'raw':!![],'where':{'id':_0x1d3620[_0x4737('0x49')]['id']}},_0xce2e64={};_0xce2e64[_0x4737('0x32')]=_[_0x4737('0x34')](db[_0x4737('0x2d')][_0x4737('0x2e')]);_0xce2e64[_0x4737('0x33')]=_[_0x4737('0x34')](_0x1d3620['query']);_0xce2e64[_0x4737('0x35')]=_[_0x4737('0x36')](_0xce2e64[_0x4737('0x32')],_0xce2e64['query']);_0x28ca8a[_0x4737('0x37')]=_[_0x4737('0x36')](_0xce2e64[_0x4737('0x32')],qs[_0x4737('0x38')](_0x1d3620[_0x4737('0x33')]['fields']));_0x28ca8a['attributes']=_0x28ca8a[_0x4737('0x37')][_0x4737('0x39')]?_0x28ca8a[_0x4737('0x37')]:_0xce2e64[_0x4737('0x32')];if(_0x1d3620[_0x4737('0x33')]['includeAll']){_0x28ca8a[_0x4737('0x44')]=[{'all':!![]}];}_0x28ca8a=_[_0x4737('0x40')]({},_0x28ca8a,_0x1d3620[_0x4737('0x42')]);return db[_0x4737('0x2d')][_0x4737('0x4a')](_0x28ca8a)[_0x4737('0x28')](handleEntityNotFound(_0x5eccca,null))[_0x4737('0x28')](respondWithResult(_0x5eccca,null))['catch'](handleError(_0x5eccca,null));};exports['create']=function(_0x4a78d,_0x2ba038){return db[_0x4737('0x2d')]['create'](_0x4a78d[_0x4737('0x4b')],{})['then'](respondWithResult(_0x2ba038,0xc9))[_0x4737('0x47')](handleError(_0x2ba038,null));};exports[_0x4737('0x27')]=function(_0x2f63d8,_0xffb923){if(_0x2f63d8[_0x4737('0x4b')]['id']){delete _0x2f63d8[_0x4737('0x4b')]['id'];}return db[_0x4737('0x2d')][_0x4737('0x4a')]({'where':{'id':_0x2f63d8[_0x4737('0x49')]['id']}})['then'](handleEntityNotFound(_0xffb923,null))[_0x4737('0x28')](saveUpdates(_0x2f63d8[_0x4737('0x4b')],null))[_0x4737('0x28')](respondWithResult(_0xffb923,null))['catch'](handleError(_0xffb923,null));};exports[_0x4737('0x29')]=function(_0x3608b2,_0x1ffd12){return db['WhatsappApplication'][_0x4737('0x4a')]({'where':{'id':_0x3608b2[_0x4737('0x49')]['id']}})[_0x4737('0x28')](handleEntityNotFound(_0x1ffd12,null))[_0x4737('0x28')](removeEntity(_0x1ffd12,null))[_0x4737('0x47')](handleError(_0x1ffd12,null));};
\ No newline at end of file
+var _0x1c52=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','send','index','map','fieldName','type','key','model','name','query','keys','attributes','intersection','fields','nolimit','order','sort','filters','pick','filter','where','merge','WhatsappApplication','includeAll','include','findAll','rows','catch','params','rawAttributes','length','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils'];(function(_0x529abc,_0x17b97e){var _0x453afa=function(_0x536263){while(--_0x536263){_0x529abc['push'](_0x529abc['shift']());}};_0x453afa(++_0x17b97e);}(_0x1c52,0x7c));var _0x21c5=function(_0x27b2d5,_0x3011b5){_0x27b2d5=_0x27b2d5-0x0;var _0x70a426=_0x1c52[_0x27b2d5];return _0x70a426;};'use strict';var emlformat=require(_0x21c5('0x0'));var rimraf=require(_0x21c5('0x1'));var zipdir=require(_0x21c5('0x2'));var jsonpatch=require(_0x21c5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x21c5('0x4'));var util=require(_0x21c5('0x5'));var path=require('path');var sox=require(_0x21c5('0x6'));var csv=require(_0x21c5('0x7'));var ejs=require(_0x21c5('0x8'));var fs=require('fs');var fs_extra=require(_0x21c5('0x9'));var _=require('lodash');var squel=require(_0x21c5('0xa'));var crypto=require(_0x21c5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x21c5('0xc'));var toCsv=require(_0x21c5('0x7'));var querystring=require(_0x21c5('0xd'));var Papa=require(_0x21c5('0xe'));var Redis=require('ioredis');var authService=require(_0x21c5('0xf'));var qs=require(_0x21c5('0x10'));var as=require(_0x21c5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x21c5('0x12'))('api');var utils=require(_0x21c5('0x13'));var config=require(_0x21c5('0x14'));var licenseUtil=require(_0x21c5('0x15'));var db=require(_0x21c5('0x16'))['db'];function respondWithStatusCode(_0x511e96,_0x36b869){_0x36b869=_0x36b869||0xcc;return function(_0x59bfc2){if(_0x59bfc2){return _0x511e96[_0x21c5('0x17')](_0x36b869);}return _0x511e96[_0x21c5('0x18')](_0x36b869)['end']();};}function respondWithResult(_0x17be3d,_0x4afb87){_0x4afb87=_0x4afb87||0xc8;return function(_0x4791f7){if(_0x4791f7){return _0x17be3d[_0x21c5('0x18')](_0x4afb87)[_0x21c5('0x19')](_0x4791f7);}};}function respondWithFilteredResult(_0x47030b,_0x20902a){return function(_0x15de0c){if(_0x15de0c){var _0x102433=typeof _0x20902a[_0x21c5('0x1a')]==='undefined'&&typeof _0x20902a[_0x21c5('0x1b')]==='undefined';var _0x495f5c=_0x15de0c[_0x21c5('0x1c')];var _0x56696e=_0x102433?0x0:_0x20902a['offset'];var _0x1bc8a4=_0x102433?_0x15de0c['count']:_0x20902a[_0x21c5('0x1a')]+_0x20902a['limit'];var _0x30fb8a;if(_0x1bc8a4>=_0x495f5c){_0x1bc8a4=_0x495f5c;_0x30fb8a=0xc8;}else{_0x30fb8a=0xce;}_0x47030b['status'](_0x30fb8a);return _0x47030b['set'](_0x21c5('0x1d'),_0x56696e+'-'+_0x1bc8a4+'/'+_0x495f5c)[_0x21c5('0x19')](_0x15de0c);}return null;};}function patchUpdates(_0x2840b7){return function(_0x300178){try{jsonpatch[_0x21c5('0x1e')](_0x300178,_0x2840b7,!![]);}catch(_0x1fb82d){return BPromise[_0x21c5('0x1f')](_0x1fb82d);}return _0x300178[_0x21c5('0x20')]();};}function saveUpdates(_0x1905a9,_0x493fbf){return function(_0x8021db){if(_0x8021db){return _0x8021db[_0x21c5('0x21')](_0x1905a9)[_0x21c5('0x22')](function(_0x1aa54e){return _0x1aa54e;});}return null;};}function removeEntity(_0x123a7a,_0x4bf186){return function(_0x251c9d){if(_0x251c9d){return _0x251c9d[_0x21c5('0x23')]()[_0x21c5('0x22')](function(){_0x123a7a[_0x21c5('0x18')](0xcc)[_0x21c5('0x24')]();});}};}function handleEntityNotFound(_0x4d3215,_0x51c0b1){return function(_0x4f877c){if(!_0x4f877c){_0x4d3215[_0x21c5('0x17')](0x194);}return _0x4f877c;};}function handleError(_0x200bc4,_0x442fac){_0x442fac=_0x442fac||0x1f4;return function(_0x2ae029){logger[_0x21c5('0x25')](_0x2ae029['stack']);if(_0x2ae029['name']){delete _0x2ae029['name'];}_0x200bc4[_0x21c5('0x18')](_0x442fac)[_0x21c5('0x26')](_0x2ae029);};}exports[_0x21c5('0x27')]=function(_0x3f056f,_0x52d551){var _0x887b={},_0x428b60={},_0x26dc04={'count':0x0,'rows':[]};var _0x1f3892=_[_0x21c5('0x28')](db['WhatsappApplication']['rawAttributes'],function(_0xda0d70){return{'name':_0xda0d70[_0x21c5('0x29')],'type':_0xda0d70[_0x21c5('0x2a')][_0x21c5('0x2b')]};});_0x428b60[_0x21c5('0x2c')]=_[_0x21c5('0x28')](_0x1f3892,_0x21c5('0x2d'));_0x428b60[_0x21c5('0x2e')]=_[_0x21c5('0x2f')](_0x3f056f[_0x21c5('0x2e')]);_0x428b60['filters']=_['intersection'](_0x428b60[_0x21c5('0x2c')],_0x428b60['query']);_0x887b[_0x21c5('0x30')]=_[_0x21c5('0x31')](_0x428b60[_0x21c5('0x2c')],qs[_0x21c5('0x32')](_0x3f056f['query'][_0x21c5('0x32')]));_0x887b['attributes']=_0x887b[_0x21c5('0x30')]['length']?_0x887b[_0x21c5('0x30')]:_0x428b60[_0x21c5('0x2c')];if(!_0x3f056f[_0x21c5('0x2e')]['hasOwnProperty'](_0x21c5('0x33'))){_0x887b['limit']=qs[_0x21c5('0x1b')](_0x3f056f[_0x21c5('0x2e')][_0x21c5('0x1b')]);_0x887b['offset']=qs[_0x21c5('0x1a')](_0x3f056f['query']['offset']);}_0x887b[_0x21c5('0x34')]=qs[_0x21c5('0x35')](_0x3f056f[_0x21c5('0x2e')][_0x21c5('0x35')]);_0x887b['where']=qs[_0x21c5('0x36')](_[_0x21c5('0x37')](_0x3f056f[_0x21c5('0x2e')],_0x428b60[_0x21c5('0x36')]),_0x1f3892);if(_0x3f056f[_0x21c5('0x2e')][_0x21c5('0x38')]){_0x887b[_0x21c5('0x39')]=_[_0x21c5('0x3a')](_0x887b['where'],{'$or':_[_0x21c5('0x28')](_0x1f3892,function(_0x29f3c1){if(_0x29f3c1[_0x21c5('0x2a')]!=='VIRTUAL'){var _0x44d12e={};_0x44d12e[_0x29f3c1[_0x21c5('0x2d')]]={'$like':'%'+_0x3f056f[_0x21c5('0x2e')][_0x21c5('0x38')]+'%'};return _0x44d12e;}})});}_0x887b=_[_0x21c5('0x3a')]({},_0x887b,_0x3f056f['options']);var _0x5a08ad={'where':_0x887b[_0x21c5('0x39')]};return db[_0x21c5('0x3b')][_0x21c5('0x1c')](_0x5a08ad)[_0x21c5('0x22')](function(_0x59a2fb){_0x26dc04[_0x21c5('0x1c')]=_0x59a2fb;if(_0x3f056f[_0x21c5('0x2e')][_0x21c5('0x3c')]){_0x887b[_0x21c5('0x3d')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x21c5('0x3e')](_0x887b);})[_0x21c5('0x22')](function(_0x4f0e0b){_0x26dc04[_0x21c5('0x3f')]=_0x4f0e0b;return _0x26dc04;})[_0x21c5('0x22')](respondWithFilteredResult(_0x52d551,_0x887b))[_0x21c5('0x40')](handleError(_0x52d551,null));};exports['show']=function(_0x22af70,_0x35693c){var _0x19d698={'raw':!![],'where':{'id':_0x22af70[_0x21c5('0x41')]['id']}},_0x56547e={};_0x56547e['model']=_[_0x21c5('0x2f')](db[_0x21c5('0x3b')][_0x21c5('0x42')]);_0x56547e[_0x21c5('0x2e')]=_[_0x21c5('0x2f')](_0x22af70['query']);_0x56547e['filters']=_['intersection'](_0x56547e[_0x21c5('0x2c')],_0x56547e['query']);_0x19d698[_0x21c5('0x30')]=_[_0x21c5('0x31')](_0x56547e[_0x21c5('0x2c')],qs[_0x21c5('0x32')](_0x22af70['query'][_0x21c5('0x32')]));_0x19d698[_0x21c5('0x30')]=_0x19d698[_0x21c5('0x30')][_0x21c5('0x43')]?_0x19d698[_0x21c5('0x30')]:_0x56547e[_0x21c5('0x2c')];if(_0x22af70[_0x21c5('0x2e')][_0x21c5('0x3c')]){_0x19d698[_0x21c5('0x3d')]=[{'all':!![]}];}_0x19d698=_['merge']({},_0x19d698,_0x22af70[_0x21c5('0x44')]);return db['WhatsappApplication'][_0x21c5('0x45')](_0x19d698)[_0x21c5('0x22')](handleEntityNotFound(_0x35693c,null))[_0x21c5('0x22')](respondWithResult(_0x35693c,null))[_0x21c5('0x40')](handleError(_0x35693c,null));};exports[_0x21c5('0x46')]=function(_0x24242a,_0x29e4d3){return db[_0x21c5('0x3b')][_0x21c5('0x46')](_0x24242a[_0x21c5('0x47')],{})[_0x21c5('0x22')](respondWithResult(_0x29e4d3,0xc9))[_0x21c5('0x40')](handleError(_0x29e4d3,null));};exports['update']=function(_0x5e4586,_0x5513c5){if(_0x5e4586[_0x21c5('0x47')]['id']){delete _0x5e4586[_0x21c5('0x47')]['id'];}return db[_0x21c5('0x3b')]['find']({'where':{'id':_0x5e4586[_0x21c5('0x41')]['id']}})[_0x21c5('0x22')](handleEntityNotFound(_0x5513c5,null))[_0x21c5('0x22')](saveUpdates(_0x5e4586['body'],null))['then'](respondWithResult(_0x5513c5,null))[_0x21c5('0x40')](handleError(_0x5513c5,null));};exports[_0x21c5('0x23')]=function(_0x3fa0c4,_0x2b3ebc){return db['WhatsappApplication'][_0x21c5('0x45')]({'where':{'id':_0x3fa0c4[_0x21c5('0x41')]['id']}})[_0x21c5('0x22')](handleEntityNotFound(_0x2b3ebc,null))[_0x21c5('0x22')](removeEntity(_0x2b3ebc,null))['catch'](handleError(_0x2b3ebc,null));};
\ No newline at end of file
index 140357b..e42f75f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['api','moment','request-promise','path','../../config/environment','exports','define','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x22c495,_0x8dbd8){var _0xdd8429=function(_0x316ad1){while(--_0x316ad1){_0x22c495['push'](_0x22c495['shift']());}};_0xdd8429(++_0x8dbd8);}(_0x2d17,0x17e));var _0x72d1=function(_0x218712,_0x8a181b){_0x218712=_0x218712-0x0;var _0x5d3cc9=_0x2d17[_0x218712];return _0x5d3cc9;};'use strict';var _=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var logger=require('../../config/logger')(_0x72d1('0x2'));var moment=require(_0x72d1('0x3'));var BPromise=require('bluebird');var rp=require(_0x72d1('0x4'));var fs=require('fs');var path=require(_0x72d1('0x5'));var rimraf=require('rimraf');var config=require(_0x72d1('0x6'));var attributes=require('./whatsappApplication.attributes');module[_0x72d1('0x7')]=function(_0x50f551,_0x139ba0){return _0x50f551[_0x72d1('0x8')]('WhatsappApplication',attributes,{'tableName':_0x72d1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x72d1('0xa'),'collate':_0x72d1('0xb')});};
\ No newline at end of file
+var _0x79d3=['WhatsappApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x79d3,0x15f));var _0x379d=function(_0x4cb819,_0x382986){_0x4cb819=_0x4cb819-0x0;var _0x33fb18=_0x79d3[_0x4cb819];return _0x33fb18;};'use strict';var _=require(_0x379d('0x0'));var util=require('util');var logger=require(_0x379d('0x1'))('api');var moment=require(_0x379d('0x2'));var BPromise=require(_0x379d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x379d('0x4'));var rimraf=require(_0x379d('0x5'));var config=require(_0x379d('0x6'));var attributes=require(_0x379d('0x7'));module[_0x379d('0x8')]=function(_0x2078a6,_0x2a1b43){return _0x2078a6['define'](_0x379d('0x9'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x379d('0xa'),'collate':_0x379d('0xb')});};
\ No newline at end of file
index 80f04d5..09fc53a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x190725,_0x4c879f){var _0x4fe2de=function(_0x1d7d72){while(--_0x1d7d72){_0x190725['push'](_0x190725['shift']());}};_0x4fe2de(++_0x4c879f);}(_0x99e9,0xb4));var _0x999e=function(_0x3d5df9,_0x5b3623){_0x3d5df9=_0x3d5df9-0x0;var _0x50ba39=_0x99e9[_0x3d5df9];return _0x50ba39;};'use strict';var _=require('lodash');var util=require(_0x999e('0x0'));var moment=require(_0x999e('0x1'));var BPromise=require(_0x999e('0x2'));var rs=require(_0x999e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x999e('0x4'))['db'];var utils=require(_0x999e('0x5'));var logger=require(_0x999e('0x6'))('rpc');var config=require(_0x999e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x999e('0x8')][_0x999e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x100330,_0x18f337,_0x5c1c17){return new BPromise(function(_0x46aeae,_0x38a692){return client[_0x999e('0xa')](_0x100330,_0x5c1c17)[_0x999e('0xb')](function(_0x2c38cf){logger[_0x999e('0xc')](_0x999e('0xd'),_0x18f337,_0x999e('0xe'));logger[_0x999e('0xf')](_0x999e('0x10'),_0x18f337,_0x999e('0xe'),JSON[_0x999e('0x11')](_0x2c38cf));if(_0x2c38cf[_0x999e('0x12')]){if(_0x2c38cf[_0x999e('0x12')][_0x999e('0x13')]===0x1f4){logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x38a692(_0x2c38cf['error'][_0x999e('0x14')]);}logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x46aeae(_0x2c38cf['error'][_0x999e('0x14')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x18f337,_0x999e('0xe'));_0x46aeae(_0x2c38cf[_0x999e('0x15')][_0x999e('0x14')]);}})[_0x999e('0x16')](function(_0x1e9bff){logger[_0x999e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x18f337,_0x1e9bff);_0x38a692(_0x1e9bff);});});}
\ No newline at end of file
+var _0xbd50=['WhatsappApplication,\x20%s,\x20%s','request\x20sent','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbd50,0x196));var _0x0bd5=function(_0x506181,_0x59cf27){_0x506181=_0x506181-0x0;var _0x758102=_0xbd50[_0x506181];return _0x758102;};'use strict';var _=require(_0x0bd5('0x0'));var util=require(_0x0bd5('0x1'));var moment=require(_0x0bd5('0x2'));var BPromise=require('bluebird');var rs=require(_0x0bd5('0x3'));var fs=require('fs');var Redis=require(_0x0bd5('0x4'));var db=require(_0x0bd5('0x5'))['db'];var utils=require(_0x0bd5('0x6'));var logger=require(_0x0bd5('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0bd5('0x8')][_0x0bd5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xcc6cfa,_0x2c0db1,_0x1b99f3){return new BPromise(function(_0x5ebe64,_0x47e78d){return client[_0x0bd5('0xa')](_0xcc6cfa,_0x1b99f3)[_0x0bd5('0xb')](function(_0x259f4c){logger['info'](_0x0bd5('0xc'),_0x2c0db1,_0x0bd5('0xd'));logger['debug'](_0x0bd5('0xe'),_0x2c0db1,_0x0bd5('0xd'),JSON['stringify'](_0x259f4c));if(_0x259f4c[_0x0bd5('0xf')]){if(_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x10')]===0x1f4){logger['error'](_0x0bd5('0xc'),_0x2c0db1,_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x11')]);return _0x47e78d(_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x11')]);}logger[_0x0bd5('0xf')](_0x0bd5('0xc'),_0x2c0db1,_0x259f4c[_0x0bd5('0xf')]['message']);return _0x5ebe64(_0x259f4c[_0x0bd5('0xf')][_0x0bd5('0x11')]);}else{logger['info'](_0x0bd5('0xc'),_0x2c0db1,_0x0bd5('0xd'));_0x5ebe64(_0x259f4c[_0x0bd5('0x12')][_0x0bd5('0x11')]);}})['catch'](function(_0x14f32c){logger[_0x0bd5('0xf')](_0x0bd5('0xc'),_0x2c0db1,_0x14f32c);_0x47e78d(_0x14f32c);});});}
\ No newline at end of file
index 30344ed..7454269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','tracked','whatsapp','addTags','put','delete','whatsappinteraction:destroy','destroy','exports','util'];(function(_0x3de10f,_0x40ebfb){var _0x2b6bc5=function(_0xa4ed30){while(--_0xa4ed30){_0x3de10f['push'](_0x3de10f['shift']());}};_0x2b6bc5(++_0x40ebfb);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x3b73d1,_0x238eb4){_0x3b73d1=_0x3b73d1-0x0;var _0x5d1ab5=_0xbfe8[_0x3b73d1];return _0x5d1ab5;};'use strict';var multer=require('multer');var util=require(_0x8bfe('0x0'));var path=require('path');var timeout=require(_0x8bfe('0x1'));var express=require(_0x8bfe('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8bfe('0x3'));var interaction=require(_0x8bfe('0x4'));var config=require('../../config/environment');var controller=require(_0x8bfe('0x5'));router[_0x8bfe('0x6')]('/',auth[_0x8bfe('0x7')](),controller['index']);router[_0x8bfe('0x6')](_0x8bfe('0x8'),auth[_0x8bfe('0x7')](),controller[_0x8bfe('0x9')]);router[_0x8bfe('0x6')](_0x8bfe('0xa'),auth[_0x8bfe('0x7')](),controller[_0x8bfe('0xb')]);router[_0x8bfe('0x6')](_0x8bfe('0xc'),auth[_0x8bfe('0x7')](),controller[_0x8bfe('0xd')]);router[_0x8bfe('0x6')](_0x8bfe('0xe'),auth[_0x8bfe('0x7')](),controller['download']);router[_0x8bfe('0xf')]('/',auth['isAuthenticated'](),controller[_0x8bfe('0x10')]);router[_0x8bfe('0xf')](_0x8bfe('0xc'),auth['isAuthenticated'](),controller['addMessage']);router[_0x8bfe('0xf')](_0x8bfe('0x11'),auth[_0x8bfe('0x7')](),interaction[_0x8bfe('0x12')](_0x8bfe('0x13'),'whatsappinteraction:addtags'),controller[_0x8bfe('0x14')]);router[_0x8bfe('0x15')]('/:id',auth[_0x8bfe('0x7')](),interaction[_0x8bfe('0x12')](_0x8bfe('0x13'),'whatsappinteraction:update'),controller['update']);router[_0x8bfe('0x16')]('/:id',auth['isAuthenticated'](),interaction[_0x8bfe('0x12')](_0x8bfe('0x13'),_0x8bfe('0x17')),controller[_0x8bfe('0x18')]);router[_0x8bfe('0x16')](_0x8bfe('0x11'),auth[_0x8bfe('0x7')](),controller['removeTags']);module[_0x8bfe('0x19')]=router;
\ No newline at end of file
+var _0xeff8=['../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','update','whatsappinteraction:destroy','destroy','delete','removeTags','exports','multer','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x25bbea,_0x22557b){var _0x44ba55=function(_0x1796cf){while(--_0x1796cf){_0x25bbea['push'](_0x25bbea['shift']());}};_0x44ba55(++_0x22557b);}(_0xeff8,0x186));var _0x8eff=function(_0x4bc65f,_0x39ec43){_0x4bc65f=_0x4bc65f-0x0;var _0x44f85f=_0xeff8[_0x4bc65f];return _0x44f85f;};'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']('/',auth[_0x8eff('0x9')](),controller[_0x8eff('0xa')]);router[_0x8eff('0xb')](_0x8eff('0xc'),auth['isAuthenticated'](),controller[_0x8eff('0xd')]);router[_0x8eff('0xb')](_0x8eff('0xe'),auth[_0x8eff('0x9')](),controller['show']);router['get'](_0x8eff('0xf'),auth[_0x8eff('0x9')](),controller[_0x8eff('0x10')]);router['get'](_0x8eff('0x11'),auth[_0x8eff('0x9')](),controller['download']);router[_0x8eff('0x12')]('/',auth[_0x8eff('0x9')](),controller['create']);router['post'](_0x8eff('0xf'),auth[_0x8eff('0x9')](),controller[_0x8eff('0x13')]);router[_0x8eff('0x12')](_0x8eff('0x14'),auth['isAuthenticated'](),interaction[_0x8eff('0x15')](_0x8eff('0x16'),_0x8eff('0x17')),controller[_0x8eff('0x18')]);router[_0x8eff('0x19')](_0x8eff('0xe'),auth[_0x8eff('0x9')](),interaction[_0x8eff('0x15')](_0x8eff('0x16'),_0x8eff('0x1a')),controller[_0x8eff('0x1b')]);router['delete'](_0x8eff('0xe'),auth[_0x8eff('0x9')](),interaction[_0x8eff('0x15')](_0x8eff('0x16'),_0x8eff('0x1c')),controller[_0x8eff('0x1d')]);router[_0x8eff('0x1e')](_0x8eff('0x14'),auth[_0x8eff('0x9')](),controller[_0x8eff('0x1f')]);module[_0x8eff('0x20')]=router;
\ No newline at end of file
index 4346116..346fdc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7923=['moment','exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x8cbcf4,_0x493954){var _0x4cf381=function(_0xe27711){while(--_0xe27711){_0x8cbcf4['push'](_0x8cbcf4['shift']());}};_0x4cf381(++_0x493954);}(_0x7923,0x8f));var _0x3792=function(_0xd591b0,_0x5be2d5){_0xd591b0=_0xd591b0-0x0;var _0x3ffd25=_0x7923[_0xd591b0];return _0x3ffd25;};'use strict';var Sequelize=require(_0x3792('0x0'));var moment=require(_0x3792('0x1'));module[_0x3792('0x2')]={'closed':{'type':Sequelize[_0x3792('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3792('0x4')]},'disposition':{'type':Sequelize[_0x3792('0x5')]},'secondDisposition':{'type':Sequelize[_0x3792('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3792('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x3792('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3792('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x3792('0x6')]('in',_0x3792('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x0ec6=['BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x13e801,_0x1f87f7){var _0x41349f=function(_0x40d781){while(--_0x40d781){_0x13e801['push'](_0x13e801['shift']());}};_0x41349f(++_0x1f87f7);}(_0x0ec6,0x1f1));var _0x60ec=function(_0x1c41d1,_0x1ce703){_0x1c41d1=_0x1c41d1-0x0;var _0x5b230a=_0x0ec6[_0x1c41d1];return _0x5b230a;};'use strict';var Sequelize=require(_0x60ec('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0x60ec('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x60ec('0x2')]},'disposition':{'type':Sequelize[_0x60ec('0x3')]},'secondDisposition':{'type':Sequelize[_0x60ec('0x3')]},'thirdDisposition':{'type':Sequelize[_0x60ec('0x3')]},'note':{'type':Sequelize[_0x60ec('0x3')]},'phone':{'type':Sequelize[_0x60ec('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x60ec('0x4')]('in',_0x60ec('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x60ec('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x60ec('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x60ec('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 70412b1..fc72127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc095=['u.id','u.fullname','ui.WhatsappInteractionId','from','left_join','users','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','parse','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','rows','show','params','include','options','create','update','describe','WhatsappMessage','addMessage','ids','getMessages','findOne','nolimit','$gte','format','includeAll','findAll','addTags','setTags','omit','spread','whatsappInteractionTags:save','removeTags','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','fullname','firstName','lastName','createdAt','direction','secret','WhatsappAccount','Account','get','mkdirSync','Whatsapp','Owner','closed','closedAt','Messages','Attachment','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','download','log','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','redis','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','send','map','Tags','TagIds','split','forEach','push','catch','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags'];(function(_0x531d15,_0x599af5){var _0x271a18=function(_0x31284d){while(--_0x31284d){_0x531d15['push'](_0x531d15['shift']());}};_0x271a18(++_0x599af5);}(_0xc095,0x18c));var _0x5c09=function(_0x30d179,_0x129f9a){_0x30d179=_0x30d179-0x0;var _0x30acfe=_0xc095[_0x30d179];return _0x30acfe;};'use strict';var emlformat=require(_0x5c09('0x0'));var rimraf=require(_0x5c09('0x1'));var zipdir=require(_0x5c09('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c09('0x3'));var moment=require(_0x5c09('0x4'));var BPromise=require(_0x5c09('0x5'));var Mustache=require(_0x5c09('0x6'));var util=require(_0x5c09('0x7'));var path=require(_0x5c09('0x8'));var sox=require(_0x5c09('0x9'));var csv=require(_0x5c09('0xa'));var ejs=require(_0x5c09('0xb'));var fs=require('fs');var fs_extra=require(_0x5c09('0xc'));var _=require(_0x5c09('0xd'));var squel=require(_0x5c09('0xe'));var crypto=require(_0x5c09('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x5c09('0x10'));var toCsv=require(_0x5c09('0xa'));var querystring=require(_0x5c09('0x11'));var Papa=require(_0x5c09('0x12'));var Redis=require('ioredis');var authService=require(_0x5c09('0x13'));var qs=require(_0x5c09('0x14'));var as=require(_0x5c09('0x15'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5c09('0x16'))(_0x5c09('0x17'));var utils=require('../../config/utils');var config=require(_0x5c09('0x18'));var licenseUtil=require(_0x5c09('0x19'));var db=require('../../mysqldb')['db'];config[_0x5c09('0x1a')]=_['defaults'](config[_0x5c09('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x5c09('0x1b'))(new Redis(config[_0x5c09('0x1a')]));require(_0x5c09('0x1c'))[_0x5c09('0x1d')](socket);function respondWithStatusCode(_0xcdb0cf,_0x2f63fd){_0x2f63fd=_0x2f63fd||0xcc;return function(_0x15f494){if(_0x15f494){return _0xcdb0cf[_0x5c09('0x1e')](_0x2f63fd);}return _0xcdb0cf[_0x5c09('0x1f')](_0x2f63fd)[_0x5c09('0x20')]();};}function respondWithResult(_0x5d67b0,_0x340564){_0x340564=_0x340564||0xc8;return function(_0x59ad15){if(_0x59ad15){return _0x5d67b0[_0x5c09('0x1f')](_0x340564)[_0x5c09('0x21')](_0x59ad15);}};}function respondWithFilteredResult(_0x230159,_0x28d16a){return function(_0x56584b){if(_0x56584b){var _0x2cd61a=typeof _0x28d16a[_0x5c09('0x22')]===_0x5c09('0x23')&&typeof _0x28d16a[_0x5c09('0x24')]===_0x5c09('0x23');var _0x2e05c2=_0x56584b[_0x5c09('0x25')];var _0x42fdb9=_0x2cd61a?0x0:_0x28d16a[_0x5c09('0x22')];var _0x183800=_0x2cd61a?_0x56584b[_0x5c09('0x25')]:_0x28d16a[_0x5c09('0x22')]+_0x28d16a[_0x5c09('0x24')];var _0x5da446;if(_0x183800>=_0x2e05c2){_0x183800=_0x2e05c2;_0x5da446=0xc8;}else{_0x5da446=0xce;}_0x230159[_0x5c09('0x1f')](_0x5da446);return _0x230159[_0x5c09('0x26')](_0x5c09('0x27'),_0x42fdb9+'-'+_0x183800+'/'+_0x2e05c2)['json'](_0x56584b);}return null;};}function patchUpdates(_0x3aecab){return function(_0x295180){try{jsonpatch[_0x5c09('0x28')](_0x295180,_0x3aecab,!![]);}catch(_0x32b1d4){return BPromise['reject'](_0x32b1d4);}return _0x295180[_0x5c09('0x29')]();};}function saveUpdates(_0x17056d,_0x4e90ad){return function(_0x2182f3){if(_0x2182f3){return _0x2182f3['update'](_0x17056d)[_0x5c09('0x2a')](function(_0x241edf){return _0x241edf;});}return null;};}function removeEntity(_0x717e99,_0x3552f5){return function(_0x2ea46f){if(_0x2ea46f){return _0x2ea46f[_0x5c09('0x2b')]()['then'](function(){_0x717e99[_0x5c09('0x1f')](0xcc)[_0x5c09('0x20')]();});}};}function handleEntityNotFound(_0x3d2604,_0x25f54a){return function(_0x408ead){if(!_0x408ead){_0x3d2604[_0x5c09('0x1e')](0x194);}return _0x408ead;};}function handleError(_0x43049c,_0x4825ed){_0x4825ed=_0x4825ed||0x1f4;return function(_0x575198){logger[_0x5c09('0x2c')](_0x575198[_0x5c09('0x2d')]);if(_0x575198[_0x5c09('0x2e')]){delete _0x575198['name'];}_0x43049c[_0x5c09('0x1f')](_0x4825ed)[_0x5c09('0x2f')](_0x575198);};}function getInteractionUsers(_0x286285,_0x36de88){return new BPromise(function(_0x462bb7,_0x579de8){try{if(_0x36de88[_0x286285['id']]){_0x286285['Users']=_[_0x5c09('0x30')](_0x36de88[_0x286285['id']],function(_0xa59aac){return{'id':_0xa59aac['id'],'fullname':_0xa59aac['fullname']};});}}catch(_0x2c2abc){_0x579de8(_0x2c2abc);}_0x462bb7(_0x286285);});}function getInteractionTags(_0xa3d069,_0x486f26){return new BPromise(function(_0x52bcbd,_0x3748b9){try{if(_0xa3d069['TagIds']){_0xa3d069[_0x5c09('0x31')]=[];_0xa3d069[_0x5c09('0x32')][_0x5c09('0x33')](',')[_0x5c09('0x34')](function(_0x559173){_0xa3d069[_0x5c09('0x31')][_0x5c09('0x35')](_0x486f26[_0x559173]);});}delete _0xa3d069[_0x5c09('0x32')];}catch(_0x16a010){_0x3748b9(_0x16a010);}_0x52bcbd(_0xa3d069);});}function updateWhatsappInteraction(_0x658517,_0x45ba0c,_0x46567c){return new BPromise(function(_0x191531,_0x46167d){return getInteractionUsers(_0x658517,_0x46567c)[_0x5c09('0x2a')](function(_0x5c1ca9){return getInteractionTags(_0x5c1ca9,_0x45ba0c);})[_0x5c09('0x2a')](function(_0x5271fb){_0x191531(_0x5271fb);})[_0x5c09('0x36')](function(_0x523e10){_0x46167d(_0x523e10);});});}exports['index']=function(_0x42bff9,_0x754280){var _0x1d9d1c={},_0x3311c0={},_0x6fe33f={'count':0x0,'rows':[]};var _0x375b6f=_[_0x5c09('0x30')](db[_0x5c09('0x37')][_0x5c09('0x38')],function(_0x5657be){return{'name':_0x5657be[_0x5c09('0x39')],'type':_0x5657be[_0x5c09('0x3a')][_0x5c09('0x3b')]};});_0x3311c0[_0x5c09('0x3c')]=_[_0x5c09('0x30')](_0x375b6f,_0x5c09('0x2e'));_0x3311c0[_0x5c09('0x3d')]=_[_0x5c09('0x3e')](_0x42bff9[_0x5c09('0x3d')]);_0x3311c0[_0x5c09('0x3f')]=_[_0x5c09('0x40')](_0x3311c0[_0x5c09('0x3c')],_0x3311c0[_0x5c09('0x3d')]);_0x1d9d1c[_0x5c09('0x41')]=_[_0x5c09('0x40')](_0x3311c0['model'],qs[_0x5c09('0x42')](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x42')]));_0x1d9d1c[_0x5c09('0x41')]=_0x1d9d1c[_0x5c09('0x41')]['length']?_0x1d9d1c[_0x5c09('0x41')]:_0x3311c0[_0x5c09('0x3c')];if(!_0x42bff9['query'][_0x5c09('0x43')]('nolimit')){_0x1d9d1c[_0x5c09('0x24')]=qs['limit'](_0x42bff9[_0x5c09('0x3d')]['limit']);_0x1d9d1c['offset']=qs[_0x5c09('0x22')](_0x42bff9[_0x5c09('0x3d')]['offset']);}_0x1d9d1c[_0x5c09('0x44')]=qs['sort'](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x45')]);_0x1d9d1c[_0x5c09('0x46')]=qs[_0x5c09('0x3f')](_[_0x5c09('0x47')](_0x42bff9[_0x5c09('0x3d')],_0x3311c0['filters']),_0x375b6f);var _0x567ac6=[];var _0x49c7ee=squel[_0x5c09('0x48')]()[_0x5c09('0x49')]('id')[_0x5c09('0x49')](_0x5c09('0x2e'))[_0x5c09('0x49')](_0x5c09('0x4a'))['from'](_0x5c09('0x4b'));var _0x3fe8b8=squel[_0x5c09('0x48')]()[_0x5c09('0x49')](_0x5c09('0x4c'))[_0x5c09('0x49')](_0x5c09('0x4d'))[_0x5c09('0x49')](_0x5c09('0x4e'))[_0x5c09('0x4f')]('user_has_whatsapp_interactions','ui')[_0x5c09('0x50')](_0x5c09('0x51'),'u','u.id\x20=\x20ui.UserId');var _0x17e03b=squel['select']()[_0x5c09('0x4f')](_0x5c09('0x52'),'i')[_0x5c09('0x50')](_0x5c09('0x53'),'c',_0x5c09('0x54'))[_0x5c09('0x50')](_0x5c09('0x51'),'o',_0x5c09('0x55'))[_0x5c09('0x50')](_0x5c09('0x56'),'a',_0x5c09('0x57'))[_0x5c09('0x50')]('whatsapp_messages','me',_0x5c09('0x58'))['left_join'](_0x5c09('0x59'),'it',_0x5c09('0x5a'))[_0x5c09('0x50')]('tools_tags','t',_0x5c09('0x5b'));var _0x492791=squel['expr']();var _0x17aa91=[];var _0x53147c=squel[_0x5c09('0x5c')]();var _0x3e7c33;if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x5d')]){_0x3e7c33=as['parseSearch'](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x5d')]);var _0x40fc45=_0x3e7c33[_0x5c09('0x5e')];for(var _0x29e245=0x0;_0x29e245<_0x3e7c33[_0x5c09('0x5f')][_0x5c09('0x60')];_0x29e245++){var _0x10b04b=_0x3e7c33['conditions'][_0x29e245];var _0x368da0='i';var _0x179026=_[_0x5c09('0x61')](_0x375b6f,[_0x5c09('0x2e'),_0x10b04b['field']]);if(!_0x179026){switch(_0x10b04b[_0x5c09('0x49')]){case _0x5c09('0x62'):if(_0x10b04b[_0x5c09('0x63')]==0x1){_0x17e03b[_0x5c09('0x64')]('`'+_0x10b04b[_0x5c09('0x49')]+'`\x20=\x200');}else{_0x17e03b[_0x5c09('0x64')]('`'+_0x10b04b[_0x5c09('0x49')]+_0x5c09('0x65'));}break;case _0x5c09('0x66'):if(_0x10b04b[_0x5c09('0x67')]==='$substring'){if(_0x10b04b[_0x5c09('0x63')][_0x5c09('0x33')]('\x20')[_0x5c09('0x60')]>0x1){_0x492791[_0x40fc45](_0x5c09('0x68'),qs['getFullTextValue'](_0x10b04b['value']),null);}else{var _0x321430='%'+_0x10b04b[_0x5c09('0x63')]+'%';_0x492791[_0x40fc45]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x321430,_0x321430,_0x321430);}}else{_0x179026=_[_0x5c09('0x61')](_0x375b6f,[_0x5c09('0x2e'),_0x5c09('0x69')]);_0x10b04b[_0x5c09('0x49')]=_0x5c09('0x69');_0x2a089b=as[_0x5c09('0x6a')](_0x368da0,_0x179026['type'],_0x10b04b);_0x492791[_0x40fc45](_0x2a089b[_0x5c09('0x6b')],_0x2a089b['value'][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x20')]);}break;case _0x5c09('0x6d'):var _0x1c90cb=_0x10b04b['value'][_0x5c09('0x33')](',')[_0x5c09('0x30')](function(_0x5052c2){return Number(_0x5052c2);});_0x1c90cb[_0x5c09('0x34')](function(_0x2e9987){_0x53147c['or'](_0x5c09('0x6e'),'%,'+_0x2e9987+',%');});_0x17aa91=_[_0x5c09('0x6f')](_0x17aa91,_0x1c90cb);break;case _0x5c09('0x70'):if(_0x10b04b[_0x5c09('0x67')]===_0x5c09('0x71')){_0x492791[_0x40fc45](_0x5c09('0x72'),'%'+_0x10b04b[_0x5c09('0x63')]+'%',null);}else{_0x179026=_[_0x5c09('0x61')](_0x375b6f,['name',_0x5c09('0x73')]);_0x10b04b[_0x5c09('0x49')]=_0x5c09('0x73');_0x2a089b=as[_0x5c09('0x6a')](_0x368da0,_0x179026[_0x5c09('0x3a')],_0x10b04b);_0x492791[_0x40fc45](_0x2a089b[_0x5c09('0x6b')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x20')]);}break;case _0x5c09('0x74'):_0x2a089b=as[_0x5c09('0x6a')]('me',null,_0x10b04b);_0x492791[_0x40fc45](_0x2a089b[_0x5c09('0x6b')],_0x2a089b['value'][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x20')]);break;}}else{var _0x2a089b=as[_0x5c09('0x6a')](_0x368da0,_0x179026[_0x5c09('0x3a')],_0x10b04b);_0x492791[_0x40fc45](_0x2a089b['text'],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')]['end']);}}}else{var _0x144e18=_(_0x42bff9[_0x5c09('0x3d')])[_0x5c09('0x3e')]()['map'](function(_0x117aa9){return _['some'](_0x375b6f,[_0x5c09('0x2e'),_0x117aa9])?_0x117aa9:undefined;})[_0x5c09('0x75')]()[_0x5c09('0x63')]();if(!_[_0x5c09('0x76')](_0x144e18)){_0x144e18['forEach'](function(_0x335521){if(_0x335521===_0x5c09('0x77')){_0x17e03b[_0x5c09('0x46')](_0x5c09('0x78'),[]['concat'](_0x42bff9['query'][_0x335521]));}else if(_0x335521==='createdAt'){var _0x323091=JSON['parse'](_0x42bff9[_0x5c09('0x3d')][_0x335521])['$gte'];var _0x208965=JSON[_0x5c09('0x79')](_0x42bff9[_0x5c09('0x3d')][_0x335521])[_0x5c09('0x7a')];_0x17e03b[_0x5c09('0x46')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x323091,_0x208965);}else{if(_0x42bff9['query'][_0x335521]===_0x5c09('0x7b')){_0x17e03b['where']('i.'+_0x335521+_0x5c09('0x7c'));}else{_0x17e03b['where']('i.'+_0x335521+'\x20=\x20?',_0x42bff9[_0x5c09('0x3d')][_0x335521]);}}});}if(_0x42bff9[_0x5c09('0x3d')]['read']){if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x7d')]==0x1){_0x17e03b[_0x5c09('0x64')](_0x5c09('0x7e'));}else{_0x17e03b[_0x5c09('0x64')](_0x5c09('0x7f'));}}if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')]){_0x17aa91=_['isArray'](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')])?_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')]:new Array(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')]);_0x17aa91['forEach'](function(_0x553590){_0x53147c['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x553590+',%');});}if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x81')]){var _0x4ee3da=_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x81')][_0x5c09('0x82')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x5c09('0x83')](_0x4ee3da)){_0x492791['or']('i.id\x20LIKE\x20?',_0x4ee3da+'%')['or'](_0x5c09('0x84'),_0x4ee3da+'%');}else{_0x492791['or'](_0x5c09('0x85'),qs['getFullTextValue'](_0x4ee3da))['or'](_0x5c09('0x86'),_0x4ee3da+'%');}}}_0x17e03b[_0x5c09('0x46')](_0x492791);_0x17e03b[_0x5c09('0x87')](_0x5c09('0x88'));var _0x4a60cb={'type':db[_0x5c09('0x89')][_0x5c09('0x8a')][_0x5c09('0x8b')],'raw':!![]};var _0x3e7224=_0x17e03b[_0x5c09('0x8c')]();_0x3e7224[_0x5c09('0x49')](_0x5c09('0x88'));_0x3e7224[_0x5c09('0x49')](_0x5c09('0x8d'),_0x5c09('0x62'));if(_0x1d9d1c[_0x5c09('0x44')]){_0x1d9d1c['order'][_0x5c09('0x34')](function(_0x2792bb){var _0x3d4faf=_0x2792bb[0x0]===_0x5c09('0x8e')?_0x2792bb[0x0]:'i.'+_0x2792bb[0x0];_0x17e03b[_0x5c09('0x44')](_0x3d4faf,_0x2792bb[0x1]==='DESC'?![]:!![]);});}if(!_[_0x5c09('0x76')](_0x17aa91)){_0x17e03b[_0x5c09('0x64')](_0x53147c);_0x3e7224[_0x5c09('0x46')](_0x5c09('0x8f'),_0x17aa91);}BPromise[_0x5c09('0x90')]()[_0x5c09('0x2a')](function(){if(!_0x3e7c33){if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x77')])return;_0x3e7224[_0x5c09('0x46')](_0x5c09('0x91'));_0x17e03b[_0x5c09('0x46')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x42bff9[_0x5c09('0x92')][_0x5c09('0x93')]!==_0x5c09('0x94'))return;return _0x42bff9[_0x5c09('0x92')][_0x5c09('0x95')]({'attributes':['id'],'raw':!![]})[_0x5c09('0x2a')](function(_0x40fe85){if(_[_0x5c09('0x76')](_0x40fe85)){_0x3e7224[_0x5c09('0x46')](_0x5c09('0x96'));_0x17e03b[_0x5c09('0x46')](_0x5c09('0x96'));}else{_0x3e7224['where'](_0x5c09('0x78'),_[_0x5c09('0x30')](_0x40fe85,'id'));_0x17e03b[_0x5c09('0x46')](_0x5c09('0x78'),_[_0x5c09('0x30')](_0x40fe85,'id'));}});})['then'](function(){if(_0x42bff9['user'][_0x5c09('0x93')]==='agent'&&!_0x3e7c33&&!_0x42bff9[_0x5c09('0x3d')]['WhatsappAccountId'])return[];return db[_0x5c09('0x97')][_0x5c09('0x3d')](_0x3e7224[_0x5c09('0x98')](),_0x4a60cb);})[_0x5c09('0x2a')](function(_0x33e873){_0x6fe33f[_0x5c09('0x25')]=_0x33e873['length'];if(_0x6fe33f['count']===0x0)return[];return db['sequelize'][_0x5c09('0x3d')](_0x49c7ee[_0x5c09('0x98')](),_0x4a60cb)[_0x5c09('0x2a')](function(_0x5ec47f){_0x567ac6=_['keyBy'](_0x5ec47f,'id');_0x4a60cb=_[_0x5c09('0x99')](_0x4a60cb,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x42')]){_0x1d9d1c[_0x5c09('0x41')][_0x5c09('0x34')](function(_0x53ee9c){_0x17e03b[_0x5c09('0x49')]('i.'+_0x53ee9c);});}else{_0x17e03b['field'](_0x5c09('0x8d'),_0x5c09('0x62'));_0x17e03b['field']('a.key',_0x5c09('0x9a'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9b'),_0x5c09('0x9c'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9d'),_0x5c09('0x8e'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9e'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9f'),'Contact.firstName');_0x17e03b['field'](_0x5c09('0xa0'),_0x5c09('0xa1'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa2'),_0x5c09('0xa3'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa4'),_0x5c09('0xa5'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa6'),_0x5c09('0xa7'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa8'),'Contact.fax');_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa9'),'Owner.fullname');_0x17e03b[_0x5c09('0x49')]('o.internal',_0x5c09('0xaa'));_0x17e03b['field']('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x1d9d1c[_0x5c09('0x24')])_0x17e03b['limit'](_0x1d9d1c[_0x5c09('0x24')]);if(_0x1d9d1c[_0x5c09('0x22')])_0x17e03b['offset'](_0x1d9d1c[_0x5c09('0x22')]);return db[_0x5c09('0x97')][_0x5c09('0x3d')](_0x17e03b[_0x5c09('0x98')](),_0x4a60cb);})[_0x5c09('0x2a')](function(_0xa6dc7f){if(_0xa6dc7f[_0x5c09('0x60')]>0x0)_0x3fe8b8[_0x5c09('0x46')](_0x5c09('0xab'),_[_0x5c09('0x30')](_0xa6dc7f,'id'));return db[_0x5c09('0x97')][_0x5c09('0x3d')](_0x3fe8b8[_0x5c09('0x98')](),_0x4a60cb)[_0x5c09('0x2a')](function(_0x115c89){var _0x30a0ab=_['groupBy'](_0x115c89,_0x5c09('0xac'));var _0x5bc3c8=[];_0xa6dc7f[_0x5c09('0x34')](function(_0x4e9f7e){_0x5bc3c8[_0x5c09('0x35')](updateWhatsappInteraction(_0x4e9f7e,_0x567ac6,_0x30a0ab));});return BPromise['all'](_0x5bc3c8);});});})[_0x5c09('0x2a')](function(_0x2e5282){_0x6fe33f[_0x5c09('0xad')]=_0x2e5282;return _0x6fe33f;})['then'](respondWithFilteredResult(_0x754280,_0x1d9d1c))[_0x5c09('0x36')](handleError(_0x754280,null));};exports[_0x5c09('0xae')]=function(_0x50ea14,_0x1c4d8a){var _0x1469b7={'raw':![],'where':{'id':_0x50ea14[_0x5c09('0xaf')]['id']}},_0x279906={};_0x279906[_0x5c09('0x3c')]=_[_0x5c09('0x3e')](db[_0x5c09('0x37')][_0x5c09('0x38')]);_0x279906['query']=_[_0x5c09('0x3e')](_0x50ea14['query']);_0x279906['filters']=_[_0x5c09('0x40')](_0x279906[_0x5c09('0x3c')],_0x279906[_0x5c09('0x3d')]);_0x1469b7[_0x5c09('0x41')]=_['intersection'](_0x279906[_0x5c09('0x3c')],qs[_0x5c09('0x42')](_0x50ea14[_0x5c09('0x3d')]['fields']));_0x1469b7[_0x5c09('0x41')]=_0x1469b7[_0x5c09('0x41')]['length']?_0x1469b7['attributes']:_0x279906[_0x5c09('0x3c')];if(_0x50ea14[_0x5c09('0x3d')]['includeAll']){_0x1469b7[_0x5c09('0xb0')]=[{'all':!![]}];}_0x1469b7=_[_0x5c09('0x99')]({},_0x1469b7,_0x50ea14[_0x5c09('0xb1')]);return db[_0x5c09('0x37')][_0x5c09('0x61')](_0x1469b7)[_0x5c09('0x2a')](handleEntityNotFound(_0x1c4d8a,null))[_0x5c09('0x2a')](respondWithResult(_0x1c4d8a,null))[_0x5c09('0x36')](handleError(_0x1c4d8a,null));};exports['create']=function(_0x4c8cae,_0x76c9ef){return db[_0x5c09('0x37')][_0x5c09('0xb2')](_0x4c8cae[_0x5c09('0x74')],{})[_0x5c09('0x2a')](respondWithResult(_0x76c9ef,0xc9))['catch'](handleError(_0x76c9ef,null));};exports[_0x5c09('0xb3')]=function(_0x4b9f8a,_0x143ed3){if(_0x4b9f8a['body']['id']){delete _0x4b9f8a[_0x5c09('0x74')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x4b9f8a[_0x5c09('0xaf')]['id']}})['then'](handleEntityNotFound(_0x143ed3,null))[_0x5c09('0x2a')](saveUpdates(_0x4b9f8a[_0x5c09('0x74')],null))[_0x5c09('0x2a')](respondWithResult(_0x143ed3,null))[_0x5c09('0x36')](handleError(_0x143ed3,null));};exports[_0x5c09('0x2b')]=function(_0x1f672a,_0x4d33f7){return db[_0x5c09('0x37')][_0x5c09('0x61')]({'where':{'id':_0x1f672a['params']['id']}})['then'](handleEntityNotFound(_0x4d33f7,null))['then'](removeEntity(_0x4d33f7,null))[_0x5c09('0x36')](handleError(_0x4d33f7,null));};exports[_0x5c09('0xb4')]=function(_0x10b077,_0xdd706d){return db[_0x5c09('0x37')][_0x5c09('0xb4')]()['then'](respondWithResult(_0xdd706d,null))['catch'](handleError(_0xdd706d,null));};exports['addMessage']=function(_0x1725e9,_0x16f7eb,_0x4f1fff){return db[_0x5c09('0xb5')][_0x5c09('0x61')]({'where':{'id':_0x1725e9[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x16f7eb,null))['then'](function(_0x261f7e){if(_0x261f7e){return _0x261f7e[_0x5c09('0xb6')](_0x1725e9[_0x5c09('0x74')]['ids'],_['omit'](_0x1725e9[_0x5c09('0x74')],[_0x5c09('0xb7'),'id'])||{});}})['then'](respondWithResult(_0x16f7eb,null))[_0x5c09('0x36')](handleError(_0x16f7eb,null));};exports[_0x5c09('0xb8')]=function(_0x21f72e,_0x339225,_0x47ff77){var _0x265782={'raw':![],'where':{}};var _0x29fa35={};var _0x2ebc45={'count':0x0,'rows':[]};return db[_0x5c09('0x37')][_0x5c09('0xb9')]({'where':{'id':_0x21f72e[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x339225,null))[_0x5c09('0x2a')](function(_0x6a1996){if(_0x6a1996){_0x29fa35[_0x5c09('0x3c')]=_['keys'](db[_0x5c09('0xb5')][_0x5c09('0x38')]);_0x29fa35['query']=_[_0x5c09('0x3e')](_0x21f72e[_0x5c09('0x3d')]);_0x29fa35[_0x5c09('0x3f')]=_['intersection'](_0x29fa35[_0x5c09('0x3c')],_0x29fa35['query']);_0x265782[_0x5c09('0x41')]=_[_0x5c09('0x40')](_0x29fa35[_0x5c09('0x3c')],qs[_0x5c09('0x42')](_0x21f72e[_0x5c09('0x3d')][_0x5c09('0x42')]));_0x265782['attributes']=_0x265782[_0x5c09('0x41')][_0x5c09('0x60')]?_0x265782[_0x5c09('0x41')]:_0x29fa35[_0x5c09('0x3c')];if(!_0x21f72e['query']['hasOwnProperty'](_0x5c09('0xba'))){_0x265782[_0x5c09('0x24')]=qs[_0x5c09('0x24')](_0x21f72e['query'][_0x5c09('0x24')]);_0x265782[_0x5c09('0x22')]=qs[_0x5c09('0x22')](_0x21f72e[_0x5c09('0x3d')][_0x5c09('0x22')]);}_0x265782[_0x5c09('0x44')]=qs[_0x5c09('0x45')](_0x21f72e[_0x5c09('0x3d')][_0x5c09('0x45')]);_0x265782[_0x5c09('0x46')]=qs[_0x5c09('0x3f')](_[_0x5c09('0x47')](_0x21f72e[_0x5c09('0x3d')],_0x29fa35[_0x5c09('0x3f')]));_0x265782[_0x5c09('0x46')][_0x5c09('0xac')]=_0x6a1996['id'];if(_0x21f72e['query'][_0x5c09('0x81')]){_0x265782[_0x5c09('0x46')]=_['merge'](_0x265782[_0x5c09('0x46')],{'$or':_[_0x5c09('0x30')](_0x265782[_0x5c09('0x41')],function(_0x34068b){var _0x53d6b0={};_0x53d6b0[_0x34068b]={'$like':'%'+_0x21f72e[_0x5c09('0x3d')]['filter']+'%'};return _0x53d6b0;})});}if(_0x21f72e[_0x5c09('0x3d')][_0x5c09('0xbb')]){var _0x152de4=_0x21f72e[_0x5c09('0x3d')]['$gte'][_0x5c09('0x33')](',');var _0x873c7c={};_0x873c7c[_0x152de4[0x0]]={'$gte':moment(_0x152de4[0x1])[_0x5c09('0xbc')]('YYYY-MM-DD\x20HH:mm:ss')};_0x265782['where']=_[_0x5c09('0x99')](_0x265782[_0x5c09('0x46')],_0x873c7c);}_0x265782=_[_0x5c09('0x99')]({},_0x265782,_0x21f72e[_0x5c09('0xb1')]);return db[_0x5c09('0xb5')][_0x5c09('0x25')]({'where':_0x265782[_0x5c09('0x46')]})[_0x5c09('0x2a')](function(_0x4bb5f9){_0x2ebc45[_0x5c09('0x25')]=_0x4bb5f9;if(_0x21f72e[_0x5c09('0x3d')][_0x5c09('0xbd')]){_0x265782['include']=[{'all':!![]}];}return db[_0x5c09('0xb5')][_0x5c09('0xbe')](_0x265782);})['then'](function(_0x53b4a6){_0x2ebc45['rows']=_0x53b4a6;return _0x2ebc45;});}})['then'](respondWithFilteredResult(_0x339225,_0x265782))[_0x5c09('0x36')](handleError(_0x339225,null));};exports[_0x5c09('0xbf')]=function(_0x4ec34c,_0x3bf7a4,_0x27da06){return db[_0x5c09('0x37')]['find']({'where':{'id':_0x4ec34c[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x3bf7a4,null))[_0x5c09('0x2a')](function(_0x26a925){if(_0x26a925){return _0x26a925[_0x5c09('0xc0')](_0x4ec34c[_0x5c09('0x74')]['ids'],_[_0x5c09('0xc1')](_0x4ec34c[_0x5c09('0x74')],[_0x5c09('0xb7'),'id'])||{})[_0x5c09('0xc2')](function(){return db[_0x5c09('0x6d')][_0x5c09('0xbe')]({'attributes':['id',_0x5c09('0x2e'),_0x5c09('0x4a')],'where':{'id':_0x4ec34c[_0x5c09('0x74')]['ids']}});})['then'](function(_0x448cbf){socket['emit'](_0x5c09('0xc3'),{'id':Number(_0x4ec34c['params']['id']),'tags':_0x448cbf||[]});return{'id':Number(_0x4ec34c[_0x5c09('0xaf')]['id']),'tags':_0x448cbf||[]};});}})['then'](respondWithResult(_0x3bf7a4,null))[_0x5c09('0x36')](handleError(_0x3bf7a4,null));};exports[_0x5c09('0xc4')]=function(_0x5b1690,_0x3e75ab,_0x4285a0){return db[_0x5c09('0x37')][_0x5c09('0x61')]({'where':{'id':_0x5b1690[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x3e75ab,null))[_0x5c09('0x2a')](function(_0x4cec3b){if(_0x4cec3b){return _0x4cec3b[_0x5c09('0xc4')](_0x5b1690[_0x5c09('0x3d')]['ids']);}})[_0x5c09('0x2a')](respondWithStatusCode(_0x3e75ab,null))[_0x5c09('0x36')](handleError(_0x3e75ab,null));};exports['download']=function(_0xed8f38,_0x406258){var _0x4cc0f4=moment()[_0x5c09('0xc5')]()[_0x5c09('0x98')]();var _0x39312f=path[_0x5c09('0xc6')](config[_0x5c09('0xc7')],_0x5c09('0xc8'),'files',_0x5c09('0xc9'));var _0x2817e8=path[_0x5c09('0xc6')](config[_0x5c09('0xc7')],_0x5c09('0xc8'),_0x5c09('0xca'),_0x5c09('0xcb'));var _0x2540fc=path[_0x5c09('0xc6')](_0x39312f,_0x4cc0f4);var _0x5d60c4=util[_0x5c09('0xbc')](_0x5c09('0xcc'),_0xed8f38[_0x5c09('0xaf')]['id'],_0x4cc0f4);var _0x480956=path['join'](_0x39312f,_0x5d60c4);var _0x3ab937=[];_0x3ab937[_0x5c09('0x35')]({'model':db[_0x5c09('0x70')],'as':_0x5c09('0x70'),'attributes':['id',_0x5c09('0xcd')],'raw':!![]});_0x3ab937[_0x5c09('0x35')]({'model':db['CmContact'],'as':_0x5c09('0x66'),'attributes':['id',_0x5c09('0xce'),_0x5c09('0xcf')],'raw':!![]});if(_0xed8f38[_0x5c09('0x3d')]['attachments']){_0x3ab937[_0x5c09('0x35')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x156ce1=[{'model':db[_0x5c09('0xb5')],'as':'Messages','attributes':['id',_0x5c09('0x74'),_0x5c09('0xd0'),_0x5c09('0xd1'),_0x5c09('0xd2'),_0x5c09('0x7d')],'include':_0x3ab937}];_0x156ce1[_0x5c09('0x35')]({'model':db[_0x5c09('0xd3')],'as':_0x5c09('0xd4'),'attributes':['id',_0x5c09('0x2e')]});_0x156ce1[_0x5c09('0x35')]({'model':db[_0x5c09('0x70')],'as':'Owner','attributes':['id',_0x5c09('0xcd')]});return db['WhatsappInteraction'][_0x5c09('0x61')]({'where':{'id':_0xed8f38[_0x5c09('0xaf')]['id']},'include':_0x156ce1})[_0x5c09('0x2a')](handleEntityNotFound(_0x406258,null))['then'](function(_0x240731){if(_0x240731){var _0x543498=_0x240731[_0x5c09('0xd5')]({'plain':!![]});fs[_0x5c09('0xd6')](_0x2540fc);var _0x4a5740={'channel':_0x5c09('0xd7'),'account':_0x543498[_0x5c09('0xd4')][_0x5c09('0x2e')],'agent':_0x543498['Owner']?_0x543498[_0x5c09('0xd8')]['fullname']:'N.A.','createdAt':moment(_0x543498[_0x5c09('0xd0')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x5c09('0x98')](),'closedAt':_0x543498[_0x5c09('0xd9')]?moment(_0x543498[_0x5c09('0xda')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x5c09('0x98')]():'','disposition':_0x543498['disposition'],'messages':_(_0x543498[_0x5c09('0xdb')])[_0x5c09('0x81')]({'secret':![]})[_0x5c09('0x30')](function(_0x55068f){if(_0x55068f[_0x5c09('0xdc')]){var _0x1b31c4=path[_0x5c09('0xc6')](_0x2817e8,_0x55068f[_0x5c09('0xdc')][_0x5c09('0xdd')]);if(fs[_0x5c09('0xde')](_0x1b31c4)){fs[_0x5c09('0xdf')](_0x1b31c4)[_0x5c09('0xe0')](fs[_0x5c09('0xe1')](path[_0x5c09('0xc6')](_0x2540fc,_0x55068f[_0x5c09('0xdc')][_0x5c09('0xdd')])));}}return{'date':moment(_0x55068f[_0x5c09('0xd0')])[_0x5c09('0xbc')]('YYYY-MM-DD\x20HH:mm:ss')[_0x5c09('0x98')](),'sender':_0x55068f['direction']===_0x5c09('0xe2')?_0x55068f[_0x5c09('0x70')]?_0x55068f['User'][_0x5c09('0xcd')]:_0x5c09('0xe3'):_0x55068f[_0x5c09('0x66')][_0x5c09('0xce')]+(_0x55068f[_0x5c09('0x66')][_0x5c09('0xcf')]?'\x20'+_0x55068f['Contact'][_0x5c09('0xcf')]:''),'body':_0x55068f['Attachment']?_0x55068f[_0x5c09('0xdc')][_0x5c09('0xdd')]:_0x55068f['body'],'direction':_0x55068f[_0x5c09('0xd1')]==='out'?'A':'C','secret':_0x55068f['secret'],'read':_0x55068f[_0x5c09('0x7d')],'attachment':_0x55068f[_0x5c09('0xdc')]};})[_0x5c09('0x63')]()};return ejs[_0x5c09('0xe4')](path[_0x5c09('0xc6')](config[_0x5c09('0xc7')],'server',_0x5c09('0xe5'),_0x5c09('0xe6')),{'interaction':_0x4a5740})[_0x5c09('0x2a')](function(_0x4d2d2d){var _0x587b21=path['join'](_0x2540fc,'transcript-'+_0x543498['id']+'-'+_0x4cc0f4+_0x5c09('0xe7'));var _0x299bcf={'path':_0x587b21,'channel':_0x5c09('0xd7'),'interactionId':_0x543498['id']};return pdf[_0x5c09('0xe8')](_0x4d2d2d,_0x299bcf);})['then'](function(){return new BPromise(function(_0x2d8277,_0x22d814){zipdir(_0x2540fc,{'saveTo':_0x480956},function(_0x2590c8,_0x4c2b03){if(_0x2590c8)return _0x22d814(_0x2590c8);return _0x2d8277(_0x4c2b03);});})[_0x5c09('0x2a')](function(){return new BPromise(function(_0x1ef47e,_0x2fefa9){rimraf(_0x2540fc,function(_0x5de948){if(_0x5de948)_0x2fefa9(_0x5de948);return _0x1ef47e();});});})[_0x5c09('0x2a')](function(){return _0x406258[_0x5c09('0xe9')](_0x480956,_0x5d60c4,function(_0x53ad25){if(_0x53ad25){console[_0x5c09('0xea')]('err',_0x53ad25);}else{fs[_0x5c09('0xeb')](_0x480956);}});});});}else{return _0x406258[_0x5c09('0x1e')](0xc8);}})[_0x5c09('0x36')](handleError(_0x406258,null));};
\ No newline at end of file
+var _0xca54=['color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','whatsapp_accounts','whatsapp_messages','whatsapp_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','unreadMessages','value','having','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','show','params','includeAll','include','merge','options','create','describe','WhatsappMessage','addMessage','ids','omit','getMessages','format','findAll','addTags','setTags','spread','emit','whatsappInteractionTags:save','removeTags','join','files','tmp','root','server','transcript-%d-%s.zip','User','fullname','CmContact','attachments','Attachment','Messages','direction','secret','Owner','get','mkdirSync','Whatsapp','Account','N.A.','closed','closedAt','disposition','basename','YYYY-MM-DD\x20HH:mm:ss','System','lastName','out','renderFile','views','transcript-','.pdf','download','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','end','status','undefined','limit','offset','count','set','Content-Range','json','apply','save','update','then','destroy','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','catch','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','select','field'];(function(_0x70b919,_0x50683c){var _0x28b93b=function(_0x462d12){while(--_0x462d12){_0x70b919['push'](_0x70b919['shift']());}};_0x28b93b(++_0x50683c);}(_0xca54,0x9c));var _0x4ca5=function(_0x4c3242,_0x2f065b){_0x4c3242=_0x4c3242-0x0;var _0x147fd9=_0xca54[_0x4c3242];return _0x147fd9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4ca5('0x0'));var zipdir=require(_0x4ca5('0x1'));var jsonpatch=require(_0x4ca5('0x2'));var rp=require(_0x4ca5('0x3'));var moment=require(_0x4ca5('0x4'));var BPromise=require(_0x4ca5('0x5'));var Mustache=require(_0x4ca5('0x6'));var util=require('util');var path=require(_0x4ca5('0x7'));var sox=require('sox');var csv=require(_0x4ca5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4ca5('0x9'));var _=require(_0x4ca5('0xa'));var squel=require(_0x4ca5('0xb'));var crypto=require('crypto');var jsforce=require(_0x4ca5('0xc'));var deskjs=require(_0x4ca5('0xd'));var toCsv=require(_0x4ca5('0x8'));var querystring=require(_0x4ca5('0xe'));var Papa=require(_0x4ca5('0xf'));var Redis=require(_0x4ca5('0x10'));var authService=require(_0x4ca5('0x11'));var qs=require(_0x4ca5('0x12'));var as=require(_0x4ca5('0x13'));var pdf=require(_0x4ca5('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4ca5('0x15'));var utils=require(_0x4ca5('0x16'));var config=require(_0x4ca5('0x17'));var licenseUtil=require(_0x4ca5('0x18'));var db=require('../../mysqldb')['db'];config[_0x4ca5('0x19')]=_[_0x4ca5('0x1a')](config[_0x4ca5('0x19')],{'host':_0x4ca5('0x1b'),'port':0x18eb});var socket=require(_0x4ca5('0x1c'))(new Redis(config[_0x4ca5('0x19')]));require(_0x4ca5('0x1d'))[_0x4ca5('0x1e')](socket);function respondWithStatusCode(_0x5628c0,_0xb67e4c){_0xb67e4c=_0xb67e4c||0xcc;return function(_0xc3a3c7){if(_0xc3a3c7){return _0x5628c0[_0x4ca5('0x1f')](_0xb67e4c);}return _0x5628c0['status'](_0xb67e4c)[_0x4ca5('0x20')]();};}function respondWithResult(_0x55750e,_0x3165ab){_0x3165ab=_0x3165ab||0xc8;return function(_0x54e3e2){if(_0x54e3e2){return _0x55750e[_0x4ca5('0x21')](_0x3165ab)['json'](_0x54e3e2);}};}function respondWithFilteredResult(_0x364e5b,_0x267010){return function(_0x4c26e8){if(_0x4c26e8){var _0x1b7760=typeof _0x267010['offset']===_0x4ca5('0x22')&&typeof _0x267010[_0x4ca5('0x23')]===_0x4ca5('0x22');var _0x457a26=_0x4c26e8['count'];var _0x3278a7=_0x1b7760?0x0:_0x267010[_0x4ca5('0x24')];var _0x14c197=_0x1b7760?_0x4c26e8[_0x4ca5('0x25')]:_0x267010['offset']+_0x267010[_0x4ca5('0x23')];var _0xf8e449;if(_0x14c197>=_0x457a26){_0x14c197=_0x457a26;_0xf8e449=0xc8;}else{_0xf8e449=0xce;}_0x364e5b[_0x4ca5('0x21')](_0xf8e449);return _0x364e5b[_0x4ca5('0x26')](_0x4ca5('0x27'),_0x3278a7+'-'+_0x14c197+'/'+_0x457a26)[_0x4ca5('0x28')](_0x4c26e8);}return null;};}function patchUpdates(_0x29b6a8){return function(_0x560c6d){try{jsonpatch[_0x4ca5('0x29')](_0x560c6d,_0x29b6a8,!![]);}catch(_0xbac90a){return BPromise['reject'](_0xbac90a);}return _0x560c6d[_0x4ca5('0x2a')]();};}function saveUpdates(_0x1fe06f,_0x1146bf){return function(_0x17edc9){if(_0x17edc9){return _0x17edc9[_0x4ca5('0x2b')](_0x1fe06f)[_0x4ca5('0x2c')](function(_0xc84945){return _0xc84945;});}return null;};}function removeEntity(_0x51a823,_0x33e256){return function(_0x1a464f){if(_0x1a464f){return _0x1a464f[_0x4ca5('0x2d')]()['then'](function(){_0x51a823['status'](0xcc)[_0x4ca5('0x20')]();});}};}function handleEntityNotFound(_0x33acab,_0x3c0145){return function(_0x597cda){if(!_0x597cda){_0x33acab[_0x4ca5('0x1f')](0x194);}return _0x597cda;};}function handleError(_0x5549e2,_0x18b8e6){_0x18b8e6=_0x18b8e6||0x1f4;return function(_0x352db1){logger['error'](_0x352db1[_0x4ca5('0x2e')]);if(_0x352db1[_0x4ca5('0x2f')]){delete _0x352db1['name'];}_0x5549e2[_0x4ca5('0x21')](_0x18b8e6)[_0x4ca5('0x30')](_0x352db1);};}function getInteractionUsers(_0x409e10,_0x397d12){return new BPromise(function(_0x26e3ea,_0x3bd008){try{if(_0x397d12[_0x409e10['id']]){_0x409e10[_0x4ca5('0x31')]=_[_0x4ca5('0x32')](_0x397d12[_0x409e10['id']],function(_0x2871aa){return{'id':_0x2871aa['id'],'fullname':_0x2871aa['fullname']};});}}catch(_0x266302){_0x3bd008(_0x266302);}_0x26e3ea(_0x409e10);});}function getInteractionTags(_0x284e42,_0x2009e8){return new BPromise(function(_0x4ea707,_0x5c2cfb){try{if(_0x284e42[_0x4ca5('0x33')]){_0x284e42[_0x4ca5('0x34')]=[];_0x284e42[_0x4ca5('0x33')][_0x4ca5('0x35')](',')[_0x4ca5('0x36')](function(_0x31cefd){_0x284e42[_0x4ca5('0x34')][_0x4ca5('0x37')](_0x2009e8[_0x31cefd]);});}delete _0x284e42[_0x4ca5('0x33')];}catch(_0x4967d0){_0x5c2cfb(_0x4967d0);}_0x4ea707(_0x284e42);});}function updateWhatsappInteraction(_0x31dbe2,_0x1d8dea,_0x3f3b5e){return new BPromise(function(_0xbbfa9b,_0x1df56e){return getInteractionUsers(_0x31dbe2,_0x3f3b5e)[_0x4ca5('0x2c')](function(_0x8eb488){return getInteractionTags(_0x8eb488,_0x1d8dea);})[_0x4ca5('0x2c')](function(_0x41e18d){_0xbbfa9b(_0x41e18d);})[_0x4ca5('0x38')](function(_0x456c12){_0x1df56e(_0x456c12);});});}exports[_0x4ca5('0x39')]=function(_0x4a22e3,_0x3c8e4a){var _0x237d1a={},_0x2c0f3a={},_0x2b8ab7={'count':0x0,'rows':[]};var _0x5a3812=_['map'](db[_0x4ca5('0x3a')][_0x4ca5('0x3b')],function(_0xd216b6){return{'name':_0xd216b6[_0x4ca5('0x3c')],'type':_0xd216b6[_0x4ca5('0x3d')][_0x4ca5('0x3e')]};});_0x2c0f3a[_0x4ca5('0x3f')]=_[_0x4ca5('0x32')](_0x5a3812,'name');_0x2c0f3a['query']=_[_0x4ca5('0x40')](_0x4a22e3['query']);_0x2c0f3a['filters']=_[_0x4ca5('0x41')](_0x2c0f3a[_0x4ca5('0x3f')],_0x2c0f3a[_0x4ca5('0x42')]);_0x237d1a[_0x4ca5('0x43')]=_[_0x4ca5('0x41')](_0x2c0f3a[_0x4ca5('0x3f')],qs['fields'](_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x44')]));_0x237d1a[_0x4ca5('0x43')]=_0x237d1a[_0x4ca5('0x43')][_0x4ca5('0x45')]?_0x237d1a[_0x4ca5('0x43')]:_0x2c0f3a[_0x4ca5('0x3f')];if(!_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x46')](_0x4ca5('0x47'))){_0x237d1a[_0x4ca5('0x23')]=qs[_0x4ca5('0x23')](_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x23')]);_0x237d1a[_0x4ca5('0x24')]=qs[_0x4ca5('0x24')](_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x24')]);}_0x237d1a[_0x4ca5('0x48')]=qs['sort'](_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x49')]);_0x237d1a[_0x4ca5('0x4a')]=qs[_0x4ca5('0x4b')](_[_0x4ca5('0x4c')](_0x4a22e3[_0x4ca5('0x42')],_0x2c0f3a[_0x4ca5('0x4b')]),_0x5a3812);var _0x594523=[];var _0x35e271=squel[_0x4ca5('0x4d')]()[_0x4ca5('0x4e')]('id')[_0x4ca5('0x4e')](_0x4ca5('0x2f'))[_0x4ca5('0x4e')](_0x4ca5('0x4f'))[_0x4ca5('0x50')](_0x4ca5('0x51'));var _0x362efb=squel['select']()['field'](_0x4ca5('0x52'))['field'](_0x4ca5('0x53'))[_0x4ca5('0x4e')](_0x4ca5('0x54'))[_0x4ca5('0x50')](_0x4ca5('0x55'),'ui')['left_join'](_0x4ca5('0x56'),'u',_0x4ca5('0x57'));var _0x4d8fc5=squel['select']()[_0x4ca5('0x50')]('whatsapp_interactions','i')[_0x4ca5('0x58')](_0x4ca5('0x59'),'c',_0x4ca5('0x5a'))[_0x4ca5('0x58')](_0x4ca5('0x56'),'o','o.id\x20=\x20i.UserId')[_0x4ca5('0x58')](_0x4ca5('0x5b'),'a','a.id\x20=\x20i.WhatsappAccountId')[_0x4ca5('0x58')](_0x4ca5('0x5c'),'me','me.WhatsappInteractionId\x20=\x20i.id')[_0x4ca5('0x58')](_0x4ca5('0x5d'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x4ca5('0x58')](_0x4ca5('0x51'),'t',_0x4ca5('0x5e'));var _0x2dcd60=squel[_0x4ca5('0x5f')]();var _0x47d612=[];var _0x46d252=squel[_0x4ca5('0x5f')]();var _0x5562ca;if(_0x4a22e3[_0x4ca5('0x42')]['search']){_0x5562ca=as[_0x4ca5('0x60')](_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x61')]);var _0x472364=_0x5562ca[_0x4ca5('0x62')];for(var _0x105d02=0x0;_0x105d02<_0x5562ca[_0x4ca5('0x63')][_0x4ca5('0x45')];_0x105d02++){var _0x3a6360=_0x5562ca[_0x4ca5('0x63')][_0x105d02];var _0x1c4ee9='i';var _0x15986b=_['find'](_0x5a3812,[_0x4ca5('0x2f'),_0x3a6360[_0x4ca5('0x4e')]]);if(!_0x15986b){switch(_0x3a6360['field']){case _0x4ca5('0x64'):if(_0x3a6360[_0x4ca5('0x65')]==0x1){_0x4d8fc5[_0x4ca5('0x66')]('`'+_0x3a6360['field']+'`\x20=\x200');}else{_0x4d8fc5['having']('`'+_0x3a6360[_0x4ca5('0x4e')]+'`\x20>\x200');}break;case _0x4ca5('0x67'):if(_0x3a6360[_0x4ca5('0x68')]===_0x4ca5('0x69')){if(_0x3a6360[_0x4ca5('0x65')][_0x4ca5('0x35')]('\x20')[_0x4ca5('0x45')]>0x1){_0x2dcd60[_0x472364](_0x4ca5('0x6a'),qs['getFullTextValue'](_0x3a6360[_0x4ca5('0x65')]),null);}else{var _0x5c136a='%'+_0x3a6360[_0x4ca5('0x65')]+'%';_0x2dcd60[_0x472364](_0x4ca5('0x6b'),_0x5c136a,_0x5c136a,_0x5c136a);}}else{_0x15986b=_[_0x4ca5('0x6c')](_0x5a3812,[_0x4ca5('0x2f'),'ContactId']);_0x3a6360[_0x4ca5('0x4e')]=_0x4ca5('0x6d');_0x277b39=as[_0x4ca5('0x6e')](_0x1c4ee9,_0x15986b[_0x4ca5('0x3d')],_0x3a6360);_0x2dcd60[_0x472364](_0x277b39[_0x4ca5('0x6f')],_0x277b39[_0x4ca5('0x65')]['start'],_0x277b39[_0x4ca5('0x65')]['end']);}break;case _0x4ca5('0x70'):var _0x578f89=_0x3a6360[_0x4ca5('0x65')][_0x4ca5('0x35')](',')[_0x4ca5('0x32')](function(_0x4af2a4){return Number(_0x4af2a4);});_0x578f89[_0x4ca5('0x36')](function(_0x4d8162){_0x46d252['or'](_0x4ca5('0x71'),'%,'+_0x4d8162+',%');});_0x47d612=_[_0x4ca5('0x72')](_0x47d612,_0x578f89);break;case'User':if(_0x3a6360[_0x4ca5('0x68')]==='$substring'){_0x2dcd60[_0x472364](_0x4ca5('0x73'),'%'+_0x3a6360[_0x4ca5('0x65')]+'%',null);}else{_0x15986b=_[_0x4ca5('0x6c')](_0x5a3812,[_0x4ca5('0x2f'),'UserId']);_0x3a6360[_0x4ca5('0x4e')]=_0x4ca5('0x74');_0x277b39=as[_0x4ca5('0x6e')](_0x1c4ee9,_0x15986b[_0x4ca5('0x3d')],_0x3a6360);_0x2dcd60[_0x472364](_0x277b39[_0x4ca5('0x6f')],_0x277b39[_0x4ca5('0x65')][_0x4ca5('0x75')],_0x277b39['value']['end']);}break;case _0x4ca5('0x76'):_0x277b39=as['buildExpression']('me',null,_0x3a6360);_0x2dcd60[_0x472364](_0x277b39['text'],_0x277b39['value'][_0x4ca5('0x75')],_0x277b39[_0x4ca5('0x65')][_0x4ca5('0x20')]);break;}}else{var _0x277b39=as[_0x4ca5('0x6e')](_0x1c4ee9,_0x15986b[_0x4ca5('0x3d')],_0x3a6360);_0x2dcd60[_0x472364](_0x277b39[_0x4ca5('0x6f')],_0x277b39[_0x4ca5('0x65')][_0x4ca5('0x75')],_0x277b39[_0x4ca5('0x65')][_0x4ca5('0x20')]);}}}else{var _0x452450=_(_0x4a22e3[_0x4ca5('0x42')])[_0x4ca5('0x40')]()[_0x4ca5('0x32')](function(_0xc0e4c8){return _['some'](_0x5a3812,[_0x4ca5('0x2f'),_0xc0e4c8])?_0xc0e4c8:undefined;})[_0x4ca5('0x77')]()['value']();if(!_[_0x4ca5('0x78')](_0x452450)){_0x452450['forEach'](function(_0x1f5713){if(_0x1f5713===_0x4ca5('0x79')){_0x4d8fc5[_0x4ca5('0x4a')](_0x4ca5('0x7a'),[][_0x4ca5('0x7b')](_0x4a22e3[_0x4ca5('0x42')][_0x1f5713]));}else if(_0x1f5713===_0x4ca5('0x7c')){var _0xdde885=JSON[_0x4ca5('0x7d')](_0x4a22e3[_0x4ca5('0x42')][_0x1f5713])[_0x4ca5('0x7e')];var _0x350399=JSON['parse'](_0x4a22e3[_0x4ca5('0x42')][_0x1f5713])[_0x4ca5('0x7f')];_0x4d8fc5[_0x4ca5('0x4a')](_0x4ca5('0x80'),_0xdde885,_0x350399);}else{if(_0x4a22e3[_0x4ca5('0x42')][_0x1f5713]===_0x4ca5('0x81')){_0x4d8fc5['where']('i.'+_0x1f5713+'\x20IS\x20NULL');}else{_0x4d8fc5[_0x4ca5('0x4a')]('i.'+_0x1f5713+_0x4ca5('0x82'),_0x4a22e3[_0x4ca5('0x42')][_0x1f5713]);}}});}if(_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x83')]){if(_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x83')]==0x1){_0x4d8fc5['having']('`unreadMessages`\x20=\x200');}else{_0x4d8fc5[_0x4ca5('0x66')](_0x4ca5('0x84'));}}if(_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x85')]){_0x47d612=_[_0x4ca5('0x86')](_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x85')])?_0x4a22e3[_0x4ca5('0x42')]['tag']:new Array(_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x85')]);_0x47d612['forEach'](function(_0x3e78b4){_0x46d252['or'](_0x4ca5('0x71'),'%,'+_0x3e78b4+',%');});}if(_0x4a22e3[_0x4ca5('0x42')][_0x4ca5('0x87')]){var _0x47cb6f=_0x4a22e3[_0x4ca5('0x42')]['filter'][_0x4ca5('0x88')]('\x5c','\x5c\x5c')[_0x4ca5('0x88')](/'/g,'\x27\x27');if(qs[_0x4ca5('0x89')](_0x47cb6f)){_0x2dcd60['or']('i.id\x20LIKE\x20?',_0x47cb6f+'%')['or'](_0x4ca5('0x8a'),_0x47cb6f+'%');}else{_0x2dcd60['or'](_0x4ca5('0x8b'),qs[_0x4ca5('0x8c')](_0x47cb6f))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x47cb6f+'%');}}}_0x4d8fc5[_0x4ca5('0x4a')](_0x2dcd60);_0x4d8fc5[_0x4ca5('0x8d')](_0x4ca5('0x8e'));var _0x1a6b9d={'type':db['Sequelize'][_0x4ca5('0x8f')]['SELECT'],'raw':!![]};var _0x3bd065=_0x4d8fc5[_0x4ca5('0x90')]();_0x3bd065[_0x4ca5('0x4e')](_0x4ca5('0x8e'));_0x3bd065[_0x4ca5('0x4e')](_0x4ca5('0x91'),_0x4ca5('0x64'));if(_0x237d1a[_0x4ca5('0x48')]){_0x237d1a[_0x4ca5('0x48')]['forEach'](function(_0x14d9c4){var _0x34735b=_0x14d9c4[0x0]===_0x4ca5('0x92')?_0x14d9c4[0x0]:'i.'+_0x14d9c4[0x0];_0x4d8fc5[_0x4ca5('0x48')](_0x34735b,_0x14d9c4[0x1]===_0x4ca5('0x93')?![]:!![]);});}if(!_[_0x4ca5('0x78')](_0x47d612)){_0x4d8fc5[_0x4ca5('0x66')](_0x46d252);_0x3bd065[_0x4ca5('0x4a')](_0x4ca5('0x94'),_0x47d612);}BPromise[_0x4ca5('0x95')]()['then'](function(){if(!_0x5562ca){if(_0x4a22e3['query'][_0x4ca5('0x79')])return;_0x3bd065[_0x4ca5('0x4a')](_0x4ca5('0x96'));_0x4d8fc5['where'](_0x4ca5('0x96'));return;}if(_0x4a22e3[_0x4ca5('0x97')]['role']!==_0x4ca5('0x98'))return;return _0x4a22e3['user']['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x4e101f){if(_[_0x4ca5('0x78')](_0x4e101f)){_0x3bd065['where']('i.WhatsappAccountId\x20IS\x20NULL');_0x4d8fc5[_0x4ca5('0x4a')](_0x4ca5('0x99'));}else{_0x3bd065['where'](_0x4ca5('0x7a'),_['map'](_0x4e101f,'id'));_0x4d8fc5[_0x4ca5('0x4a')](_0x4ca5('0x7a'),_[_0x4ca5('0x32')](_0x4e101f,'id'));}});})['then'](function(){if(_0x4a22e3[_0x4ca5('0x97')]['role']===_0x4ca5('0x98')&&!_0x5562ca&&!_0x4a22e3['query'][_0x4ca5('0x79')])return[];return db[_0x4ca5('0x9a')][_0x4ca5('0x42')](_0x3bd065[_0x4ca5('0x9b')](),_0x1a6b9d);})[_0x4ca5('0x2c')](function(_0x15085f){_0x2b8ab7[_0x4ca5('0x25')]=_0x15085f[_0x4ca5('0x45')];if(_0x2b8ab7['count']===0x0)return[];return db[_0x4ca5('0x9a')][_0x4ca5('0x42')](_0x35e271['toString'](),_0x1a6b9d)[_0x4ca5('0x2c')](function(_0x2769f9){_0x594523=_[_0x4ca5('0x9c')](_0x2769f9,'id');_0x1a6b9d=_['merge'](_0x1a6b9d,{'model':db[_0x4ca5('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4a22e3['query']['fields']){_0x237d1a[_0x4ca5('0x43')][_0x4ca5('0x36')](function(_0x2b0150){_0x4d8fc5[_0x4ca5('0x4e')]('i.'+_0x2b0150);});}else{_0x4d8fc5[_0x4ca5('0x4e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x4ca5('0x64'));_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0x9d'),_0x4ca5('0x9e'));_0x4d8fc5[_0x4ca5('0x4e')]('a.mandatoryDisposition',_0x4ca5('0x9f'));_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa0'),'contactName');_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa1'));_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa2'),'Contact.firstName');_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa3'),_0x4ca5('0xa4'));_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa5'),_0x4ca5('0xa6'));_0x4d8fc5[_0x4ca5('0x4e')]('c.phone','Contact.phone');_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa7'),_0x4ca5('0xa8'));_0x4d8fc5[_0x4ca5('0x4e')]('c.fax','Contact.fax');_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xa9'),_0x4ca5('0xaa'));_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xab'),'Owner.internal');_0x4d8fc5[_0x4ca5('0x4e')](_0x4ca5('0xac'),_0x4ca5('0x33'));}if(_0x237d1a[_0x4ca5('0x23')])_0x4d8fc5[_0x4ca5('0x23')](_0x237d1a['limit']);if(_0x237d1a[_0x4ca5('0x24')])_0x4d8fc5[_0x4ca5('0x24')](_0x237d1a[_0x4ca5('0x24')]);return db[_0x4ca5('0x9a')][_0x4ca5('0x42')](_0x4d8fc5[_0x4ca5('0x9b')](),_0x1a6b9d);})[_0x4ca5('0x2c')](function(_0x281cd2){if(_0x281cd2[_0x4ca5('0x45')]>0x0)_0x362efb[_0x4ca5('0x4a')](_0x4ca5('0xad'),_[_0x4ca5('0x32')](_0x281cd2,'id'));return db[_0x4ca5('0x9a')]['query'](_0x362efb['toString'](),_0x1a6b9d)[_0x4ca5('0x2c')](function(_0x4726c0){var _0x955e43=_[_0x4ca5('0xae')](_0x4726c0,_0x4ca5('0xaf'));var _0x132071=[];_0x281cd2['forEach'](function(_0x2922d7){_0x132071['push'](updateWhatsappInteraction(_0x2922d7,_0x594523,_0x955e43));});return BPromise[_0x4ca5('0xb0')](_0x132071);});});})[_0x4ca5('0x2c')](function(_0x5b35d5){_0x2b8ab7[_0x4ca5('0xb1')]=_0x5b35d5;return _0x2b8ab7;})[_0x4ca5('0x2c')](respondWithFilteredResult(_0x3c8e4a,_0x237d1a))[_0x4ca5('0x38')](handleError(_0x3c8e4a,null));};exports[_0x4ca5('0xb2')]=function(_0x5891f6,_0x582172){var _0x12bdb0={'raw':![],'where':{'id':_0x5891f6[_0x4ca5('0xb3')]['id']}},_0x208866={};_0x208866[_0x4ca5('0x3f')]=_[_0x4ca5('0x40')](db['WhatsappInteraction']['rawAttributes']);_0x208866[_0x4ca5('0x42')]=_[_0x4ca5('0x40')](_0x5891f6['query']);_0x208866[_0x4ca5('0x4b')]=_['intersection'](_0x208866[_0x4ca5('0x3f')],_0x208866[_0x4ca5('0x42')]);_0x12bdb0['attributes']=_[_0x4ca5('0x41')](_0x208866[_0x4ca5('0x3f')],qs['fields'](_0x5891f6[_0x4ca5('0x42')]['fields']));_0x12bdb0[_0x4ca5('0x43')]=_0x12bdb0[_0x4ca5('0x43')]['length']?_0x12bdb0['attributes']:_0x208866[_0x4ca5('0x3f')];if(_0x5891f6[_0x4ca5('0x42')][_0x4ca5('0xb4')]){_0x12bdb0[_0x4ca5('0xb5')]=[{'all':!![]}];}_0x12bdb0=_[_0x4ca5('0xb6')]({},_0x12bdb0,_0x5891f6[_0x4ca5('0xb7')]);return db[_0x4ca5('0x3a')][_0x4ca5('0x6c')](_0x12bdb0)[_0x4ca5('0x2c')](handleEntityNotFound(_0x582172,null))['then'](respondWithResult(_0x582172,null))['catch'](handleError(_0x582172,null));};exports[_0x4ca5('0xb8')]=function(_0x4ee273,_0xeb8704){return db[_0x4ca5('0x3a')][_0x4ca5('0xb8')](_0x4ee273[_0x4ca5('0x76')],{})[_0x4ca5('0x2c')](respondWithResult(_0xeb8704,0xc9))['catch'](handleError(_0xeb8704,null));};exports[_0x4ca5('0x2b')]=function(_0x3eab93,_0xef3089){if(_0x3eab93['body']['id']){delete _0x3eab93[_0x4ca5('0x76')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x3eab93[_0x4ca5('0xb3')]['id']}})[_0x4ca5('0x2c')](handleEntityNotFound(_0xef3089,null))[_0x4ca5('0x2c')](saveUpdates(_0x3eab93[_0x4ca5('0x76')],null))[_0x4ca5('0x2c')](respondWithResult(_0xef3089,null))[_0x4ca5('0x38')](handleError(_0xef3089,null));};exports['destroy']=function(_0x1aef93,_0x445863){return db['WhatsappInteraction'][_0x4ca5('0x6c')]({'where':{'id':_0x1aef93[_0x4ca5('0xb3')]['id']}})['then'](handleEntityNotFound(_0x445863,null))['then'](removeEntity(_0x445863,null))['catch'](handleError(_0x445863,null));};exports['describe']=function(_0x42fda1,_0xe28d24){return db['WhatsappInteraction'][_0x4ca5('0xb9')]()[_0x4ca5('0x2c')](respondWithResult(_0xe28d24,null))[_0x4ca5('0x38')](handleError(_0xe28d24,null));};exports['addMessage']=function(_0xef6d31,_0x51a0a8,_0x40af29){return db[_0x4ca5('0xba')][_0x4ca5('0x6c')]({'where':{'id':_0xef6d31[_0x4ca5('0xb3')]['id']}})['then'](handleEntityNotFound(_0x51a0a8,null))[_0x4ca5('0x2c')](function(_0x2aa5c0){if(_0x2aa5c0){return _0x2aa5c0[_0x4ca5('0xbb')](_0xef6d31[_0x4ca5('0x76')][_0x4ca5('0xbc')],_[_0x4ca5('0xbd')](_0xef6d31[_0x4ca5('0x76')],[_0x4ca5('0xbc'),'id'])||{});}})[_0x4ca5('0x2c')](respondWithResult(_0x51a0a8,null))[_0x4ca5('0x38')](handleError(_0x51a0a8,null));};exports[_0x4ca5('0xbe')]=function(_0x45448d,_0x26aa05,_0x33b155){var _0x1f17b9={'raw':![],'where':{}};var _0x20c9e4={};var _0x381fc9={'count':0x0,'rows':[]};return db[_0x4ca5('0x3a')]['findOne']({'where':{'id':_0x45448d[_0x4ca5('0xb3')]['id']}})[_0x4ca5('0x2c')](handleEntityNotFound(_0x26aa05,null))[_0x4ca5('0x2c')](function(_0x6f3629){if(_0x6f3629){_0x20c9e4[_0x4ca5('0x3f')]=_[_0x4ca5('0x40')](db[_0x4ca5('0xba')][_0x4ca5('0x3b')]);_0x20c9e4[_0x4ca5('0x42')]=_[_0x4ca5('0x40')](_0x45448d['query']);_0x20c9e4['filters']=_['intersection'](_0x20c9e4['model'],_0x20c9e4[_0x4ca5('0x42')]);_0x1f17b9['attributes']=_[_0x4ca5('0x41')](_0x20c9e4['model'],qs[_0x4ca5('0x44')](_0x45448d['query'][_0x4ca5('0x44')]));_0x1f17b9[_0x4ca5('0x43')]=_0x1f17b9[_0x4ca5('0x43')][_0x4ca5('0x45')]?_0x1f17b9[_0x4ca5('0x43')]:_0x20c9e4[_0x4ca5('0x3f')];if(!_0x45448d[_0x4ca5('0x42')][_0x4ca5('0x46')]('nolimit')){_0x1f17b9[_0x4ca5('0x23')]=qs[_0x4ca5('0x23')](_0x45448d['query'][_0x4ca5('0x23')]);_0x1f17b9['offset']=qs['offset'](_0x45448d[_0x4ca5('0x42')][_0x4ca5('0x24')]);}_0x1f17b9[_0x4ca5('0x48')]=qs['sort'](_0x45448d[_0x4ca5('0x42')][_0x4ca5('0x49')]);_0x1f17b9[_0x4ca5('0x4a')]=qs[_0x4ca5('0x4b')](_[_0x4ca5('0x4c')](_0x45448d[_0x4ca5('0x42')],_0x20c9e4[_0x4ca5('0x4b')]));_0x1f17b9[_0x4ca5('0x4a')]['WhatsappInteractionId']=_0x6f3629['id'];if(_0x45448d[_0x4ca5('0x42')][_0x4ca5('0x87')]){_0x1f17b9[_0x4ca5('0x4a')]=_[_0x4ca5('0xb6')](_0x1f17b9[_0x4ca5('0x4a')],{'$or':_['map'](_0x1f17b9[_0x4ca5('0x43')],function(_0x358d46){var _0x523a36={};_0x523a36[_0x358d46]={'$like':'%'+_0x45448d['query'][_0x4ca5('0x87')]+'%'};return _0x523a36;})});}if(_0x45448d[_0x4ca5('0x42')][_0x4ca5('0x7e')]){var _0x287a81=_0x45448d[_0x4ca5('0x42')][_0x4ca5('0x7e')][_0x4ca5('0x35')](',');var _0x38a1af={};_0x38a1af[_0x287a81[0x0]]={'$gte':moment(_0x287a81[0x1])[_0x4ca5('0xbf')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1f17b9[_0x4ca5('0x4a')]=_[_0x4ca5('0xb6')](_0x1f17b9[_0x4ca5('0x4a')],_0x38a1af);}_0x1f17b9=_[_0x4ca5('0xb6')]({},_0x1f17b9,_0x45448d[_0x4ca5('0xb7')]);return db[_0x4ca5('0xba')][_0x4ca5('0x25')]({'where':_0x1f17b9['where']})[_0x4ca5('0x2c')](function(_0x592b66){_0x381fc9[_0x4ca5('0x25')]=_0x592b66;if(_0x45448d['query']['includeAll']){_0x1f17b9['include']=[{'all':!![]}];}return db[_0x4ca5('0xba')][_0x4ca5('0xc0')](_0x1f17b9);})['then'](function(_0x1f3ee7){_0x381fc9[_0x4ca5('0xb1')]=_0x1f3ee7;return _0x381fc9;});}})[_0x4ca5('0x2c')](respondWithFilteredResult(_0x26aa05,_0x1f17b9))[_0x4ca5('0x38')](handleError(_0x26aa05,null));};exports[_0x4ca5('0xc1')]=function(_0x1ceced,_0x1c1828,_0x2f414a){return db['WhatsappInteraction'][_0x4ca5('0x6c')]({'where':{'id':_0x1ceced[_0x4ca5('0xb3')]['id']}})[_0x4ca5('0x2c')](handleEntityNotFound(_0x1c1828,null))[_0x4ca5('0x2c')](function(_0xcaf345){if(_0xcaf345){return _0xcaf345[_0x4ca5('0xc2')](_0x1ceced[_0x4ca5('0x76')][_0x4ca5('0xbc')],_[_0x4ca5('0xbd')](_0x1ceced[_0x4ca5('0x76')],[_0x4ca5('0xbc'),'id'])||{})[_0x4ca5('0xc3')](function(){return db[_0x4ca5('0x70')]['findAll']({'attributes':['id',_0x4ca5('0x2f'),_0x4ca5('0x4f')],'where':{'id':_0x1ceced[_0x4ca5('0x76')]['ids']}});})[_0x4ca5('0x2c')](function(_0x4db7e9){socket[_0x4ca5('0xc4')](_0x4ca5('0xc5'),{'id':Number(_0x1ceced[_0x4ca5('0xb3')]['id']),'tags':_0x4db7e9||[]});return{'id':Number(_0x1ceced[_0x4ca5('0xb3')]['id']),'tags':_0x4db7e9||[]};});}})[_0x4ca5('0x2c')](respondWithResult(_0x1c1828,null))[_0x4ca5('0x38')](handleError(_0x1c1828,null));};exports[_0x4ca5('0xc6')]=function(_0x145508,_0x1521c8,_0x1efeb4){return db[_0x4ca5('0x3a')]['find']({'where':{'id':_0x145508['params']['id']}})[_0x4ca5('0x2c')](handleEntityNotFound(_0x1521c8,null))[_0x4ca5('0x2c')](function(_0x36cd8e){if(_0x36cd8e){return _0x36cd8e[_0x4ca5('0xc6')](_0x145508['query'][_0x4ca5('0xbc')]);}})['then'](respondWithStatusCode(_0x1521c8,null))[_0x4ca5('0x38')](handleError(_0x1521c8,null));};exports['download']=function(_0x48e59f,_0x4ebb4c){var _0x59fbc5=moment()['unix']()[_0x4ca5('0x9b')]();var _0x9c599c=path[_0x4ca5('0xc7')](config['root'],'server',_0x4ca5('0xc8'),_0x4ca5('0xc9'));var _0x579ab8=path[_0x4ca5('0xc7')](config[_0x4ca5('0xca')],_0x4ca5('0xcb'),_0x4ca5('0xc8'),'attachments');var _0x3b8350=path[_0x4ca5('0xc7')](_0x9c599c,_0x59fbc5);var _0x5900a4=util[_0x4ca5('0xbf')](_0x4ca5('0xcc'),_0x48e59f[_0x4ca5('0xb3')]['id'],_0x59fbc5);var _0x348155=path['join'](_0x9c599c,_0x5900a4);var _0x11388f=[];_0x11388f['push']({'model':db[_0x4ca5('0xcd')],'as':_0x4ca5('0xcd'),'attributes':['id',_0x4ca5('0xce')],'raw':!![]});_0x11388f[_0x4ca5('0x37')]({'model':db[_0x4ca5('0xcf')],'as':_0x4ca5('0x67'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x48e59f[_0x4ca5('0x42')][_0x4ca5('0xd0')]){_0x11388f['push']({'model':db[_0x4ca5('0xd1')],'as':'Attachment','raw':!![]});}var _0x260d17=[{'model':db[_0x4ca5('0xba')],'as':_0x4ca5('0xd2'),'attributes':['id',_0x4ca5('0x76'),_0x4ca5('0x7c'),_0x4ca5('0xd3'),_0x4ca5('0xd4'),'read'],'include':_0x11388f}];_0x260d17[_0x4ca5('0x37')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0x4ca5('0x2f')]});_0x260d17['push']({'model':db[_0x4ca5('0xcd')],'as':_0x4ca5('0xd5'),'attributes':['id','fullname']});return db['WhatsappInteraction'][_0x4ca5('0x6c')]({'where':{'id':_0x48e59f['params']['id']},'include':_0x260d17})['then'](handleEntityNotFound(_0x4ebb4c,null))[_0x4ca5('0x2c')](function(_0x372763){if(_0x372763){var _0x4b434b=_0x372763[_0x4ca5('0xd6')]({'plain':!![]});fs[_0x4ca5('0xd7')](_0x3b8350);var _0xc1bc0={'channel':_0x4ca5('0xd8'),'account':_0x4b434b[_0x4ca5('0xd9')][_0x4ca5('0x2f')],'agent':_0x4b434b['Owner']?_0x4b434b['Owner'][_0x4ca5('0xce')]:_0x4ca5('0xda'),'createdAt':moment(_0x4b434b[_0x4ca5('0x7c')])[_0x4ca5('0xbf')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x4b434b[_0x4ca5('0xdb')]?moment(_0x4b434b[_0x4ca5('0xdc')])[_0x4ca5('0xbf')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4ca5('0x9b')]():'','disposition':_0x4b434b[_0x4ca5('0xdd')],'messages':_(_0x4b434b[_0x4ca5('0xd2')])[_0x4ca5('0x87')]({'secret':![]})[_0x4ca5('0x32')](function(_0x2a49ba){if(_0x2a49ba[_0x4ca5('0xd1')]){var _0x4b5ba0=path[_0x4ca5('0xc7')](_0x579ab8,_0x2a49ba[_0x4ca5('0xd1')][_0x4ca5('0xde')]);if(fs['existsSync'](_0x4b5ba0)){fs['createReadStream'](_0x4b5ba0)['pipe'](fs['createWriteStream'](path['join'](_0x3b8350,_0x2a49ba[_0x4ca5('0xd1')]['basename'])));}}return{'date':moment(_0x2a49ba['createdAt'])[_0x4ca5('0xbf')](_0x4ca5('0xdf'))[_0x4ca5('0x9b')](),'sender':_0x2a49ba[_0x4ca5('0xd3')]==='out'?_0x2a49ba[_0x4ca5('0xcd')]?_0x2a49ba[_0x4ca5('0xcd')][_0x4ca5('0xce')]:_0x4ca5('0xe0'):_0x2a49ba[_0x4ca5('0x67')]['firstName']+(_0x2a49ba['Contact'][_0x4ca5('0xe1')]?'\x20'+_0x2a49ba[_0x4ca5('0x67')][_0x4ca5('0xe1')]:''),'body':_0x2a49ba[_0x4ca5('0xd1')]?_0x2a49ba['Attachment']['basename']:_0x2a49ba[_0x4ca5('0x76')],'direction':_0x2a49ba['direction']===_0x4ca5('0xe2')?'A':'C','secret':_0x2a49ba[_0x4ca5('0xd4')],'read':_0x2a49ba[_0x4ca5('0x83')],'attachment':_0x2a49ba[_0x4ca5('0xd1')]};})['value']()};return ejs[_0x4ca5('0xe3')](path[_0x4ca5('0xc7')](config[_0x4ca5('0xca')],_0x4ca5('0xcb'),_0x4ca5('0xe4'),'downloadInteraction.ejs'),{'interaction':_0xc1bc0})[_0x4ca5('0x2c')](function(_0x9b6899){var _0x19bd3c=path[_0x4ca5('0xc7')](_0x3b8350,_0x4ca5('0xe5')+_0x4b434b['id']+'-'+_0x59fbc5+_0x4ca5('0xe6'));var _0x42ced8={'path':_0x19bd3c,'channel':_0x4ca5('0xd8'),'interactionId':_0x4b434b['id']};return pdf['createPdfFromHTML'](_0x9b6899,_0x42ced8);})[_0x4ca5('0x2c')](function(){return new BPromise(function(_0x1339ed,_0x5309a1){zipdir(_0x3b8350,{'saveTo':_0x348155},function(_0x21696f,_0x27e4df){if(_0x21696f)return _0x5309a1(_0x21696f);return _0x1339ed(_0x27e4df);});})['then'](function(){return new BPromise(function(_0x436eb9,_0x31d49f){rimraf(_0x3b8350,function(_0x5e26d1){if(_0x5e26d1)_0x31d49f(_0x5e26d1);return _0x436eb9();});});})[_0x4ca5('0x2c')](function(){return _0x4ebb4c[_0x4ca5('0xe7')](_0x348155,_0x5900a4,function(_0x5db3ad){if(_0x5db3ad){console[_0x4ca5('0xe8')](_0x4ca5('0xe9'),_0x5db3ad);}else{fs[_0x4ca5('0xea')](_0x348155);}});});});}else{return _0x4ebb4c[_0x4ca5('0x1f')](0xc8);}})[_0x4ca5('0x38')](handleError(_0x4ebb4c,null));};
\ No newline at end of file
index 2587c91..58a7ce9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','remove','then','Users','map','setDataValue','unreadMessages','emit'];(function(_0x5951e8,_0x42b9a7){var _0x20a1f5=function(_0x2bc968){while(--_0x2bc968){_0x5951e8['push'](_0x5951e8['shift']());}};_0x20a1f5(++_0x42b9a7);}(_0x6c76,0x184));var _0x66c7=function(_0x16abae,_0x280f58){_0x16abae=_0x16abae-0x0;var _0x162049=_0x6c76[_0x16abae];return _0x162049;};'use strict';var EventEmitter=require(_0x66c7('0x0'));var WhatsappInteraction=require(_0x66c7('0x1'))['db'][_0x66c7('0x2')];var WhatsappMessage=require('../../mysqldb')['db'][_0x66c7('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x66c7('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x66c7('0x5')};function emitEvent(_0x2b7cf3){return function(_0x49d437,_0x175da0,_0x45b0a5){_0x49d437['getUsers']({'attributes':['id'],'raw':!![]})[_0x66c7('0x6')](function(_0x4dffcd){_0x49d437['setDataValue'](_0x66c7('0x7'),_0x4dffcd[_0x66c7('0x8')](function(_0x24349f){return{'id':_0x24349f['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x49d437['id'],'direction':'in','read':![]},'raw':!![]});})[_0x66c7('0x6')](function(_0xbc35d9){_0x49d437[_0x66c7('0x9')](_0x66c7('0xa'),_0xbc35d9['length']);WhatsappInteractionEvents[_0x66c7('0xb')](_0x2b7cf3+':'+_0x49d437['id'],_0x49d437);WhatsappInteractionEvents[_0x66c7('0xb')](_0x2b7cf3,_0x49d437);_0x45b0a5(null);})[_0x66c7('0xc')](_0x45b0a5(null));};}for(var e in events){if(events[_0x66c7('0xd')](e)){var event=events[e];WhatsappInteraction[_0x66c7('0xe')](e,emitEvent(event));}}module[_0x66c7('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xfbe2=['length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','setMaxListeners','save','update','getUsers','then','setDataValue','Users','map','unreadMessages'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xfbe2,0x1da));var _0x2fbe=function(_0x4f1375,_0x58d047){_0x4f1375=_0x4f1375-0x0;var _0x3d0262=_0xfbe2[_0x4f1375];return _0x3d0262;};'use strict';var EventEmitter=require(_0x2fbe('0x0'));var WhatsappInteraction=require(_0x2fbe('0x1'))['db'][_0x2fbe('0x2')];var WhatsappMessage=require(_0x2fbe('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x2fbe('0x3')](0x0);var events={'afterCreate':_0x2fbe('0x4'),'afterUpdate':_0x2fbe('0x5'),'afterDestroy':'remove'};function emitEvent(_0x151906){return function(_0x36d13c,_0x85a5c8,_0x399ea8){_0x36d13c[_0x2fbe('0x6')]({'attributes':['id'],'raw':!![]})[_0x2fbe('0x7')](function(_0x1f3340){_0x36d13c[_0x2fbe('0x8')](_0x2fbe('0x9'),_0x1f3340[_0x2fbe('0xa')](function(_0x2fb493){return{'id':_0x2fb493['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x36d13c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x9231df){_0x36d13c[_0x2fbe('0x8')](_0x2fbe('0xb'),_0x9231df[_0x2fbe('0xc')]);WhatsappInteractionEvents[_0x2fbe('0xd')](_0x151906+':'+_0x36d13c['id'],_0x36d13c);WhatsappInteractionEvents[_0x2fbe('0xd')](_0x151906,_0x36d13c);_0x399ea8(null);})[_0x2fbe('0xe')](_0x399ea8(null));};}for(var e in events){if(events[_0x2fbe('0xf')](e)){var event=events[e];WhatsappInteraction[_0x2fbe('0x10')](e,emitEvent(event));}}module[_0x2fbe('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
index f4840eb..0c7e7c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b5f=['format','lodash','util','api','moment','path','rimraf','../../config/environment','./whatsappInteraction.attributes','define','whatsapp_interactions','changed','closed','closedAt'];(function(_0x125396,_0x5c4fbe){var _0x847cd7=function(_0x4a08fa){while(--_0x4a08fa){_0x125396['push'](_0x125396['shift']());}};_0x847cd7(++_0x5c4fbe);}(_0x6b5f,0x119));var _0xf6b5=function(_0x1e5b6d,_0x22dc70){_0x1e5b6d=_0x1e5b6d-0x0;var _0x175c9c=_0x6b5f[_0x1e5b6d];return _0x175c9c;};'use strict';var _=require(_0xf6b5('0x0'));var util=require(_0xf6b5('0x1'));var logger=require('../../config/logger')(_0xf6b5('0x2'));var moment=require(_0xf6b5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6b5('0x4'));var rimraf=require(_0xf6b5('0x5'));var config=require(_0xf6b5('0x6'));var attributes=require(_0xf6b5('0x7'));module['exports']=function(_0x315de7,_0x1371d4){return _0x315de7[_0xf6b5('0x8')]('WhatsappInteraction',attributes,{'tableName':_0xf6b5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4ab297,_0xecc7ff,_0x629fca){if(_0x4ab297[_0xf6b5('0xa')](_0xf6b5('0xb'))){_0x4ab297[_0xf6b5('0xc')]=moment()[_0xf6b5('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x629fca(null,_0x4ab297);}}});};
\ No newline at end of file
+var _0x9a6b=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','changed','closed'];(function(_0xc2a130,_0x900599){var _0x247f87=function(_0x3c78c3){while(--_0x3c78c3){_0xc2a130['push'](_0xc2a130['shift']());}};_0x247f87(++_0x900599);}(_0x9a6b,0xd3));var _0xb9a6=function(_0x56f3fb,_0x188e1a){_0x56f3fb=_0x56f3fb-0x0;var _0x1bff3e=_0x9a6b[_0x56f3fb];return _0x1bff3e;};'use strict';var _=require(_0xb9a6('0x0'));var util=require(_0xb9a6('0x1'));var logger=require(_0xb9a6('0x2'))(_0xb9a6('0x3'));var moment=require('moment');var BPromise=require(_0xb9a6('0x4'));var rp=require(_0xb9a6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb9a6('0x6'));var config=require(_0xb9a6('0x7'));var attributes=require(_0xb9a6('0x8'));module[_0xb9a6('0x9')]=function(_0xd4659c,_0x560197){return _0xd4659c[_0xb9a6('0xa')](_0xb9a6('0xb'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x418224,_0x355a98,_0x980985){if(_0x418224[_0xb9a6('0xc')](_0xb9a6('0xd'))){_0x418224['closedAt']=moment()['format'](_0xb9a6('0xe'));}_0x980985(null,_0x418224);}}});};
\ No newline at end of file
index 9c90785..34ab6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35dc=['localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','where','attributes','debug','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0xfa9f42,_0x3b9207){var _0x4f51db=function(_0x4a1a1e){while(--_0x4a1a1e){_0xfa9f42['push'](_0xfa9f42['shift']());}};_0x4f51db(++_0x3b9207);}(_0x35dc,0xaa));var _0xc35d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x35dc[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc35d('0x0'));var util=require('util');var moment=require(_0xc35d('0x1'));var BPromise=require(_0xc35d('0x2'));var rs=require(_0xc35d('0x3'));var fs=require('fs');var Redis=require(_0xc35d('0x4'));var db=require(_0xc35d('0x5'))['db'];var utils=require(_0xc35d('0x6'));var logger=require(_0xc35d('0x7'))(_0xc35d('0x8'));var config=require(_0xc35d('0x9'));var jayson=require(_0xc35d('0xa'));var client=jayson[_0xc35d('0xb')][_0xc35d('0xc')]({'port':0x232a});config[_0xc35d('0xd')]=_['defaults'](config[_0xc35d('0xd')],{'host':_0xc35d('0xe'),'port':0x18eb});var socket=require(_0xc35d('0xf'))(new Redis(config[_0xc35d('0xd')]));require(_0xc35d('0x10'))[_0xc35d('0x11')](socket);function respondWithRpcPromise(_0x5d296a,_0x5ed9d5,_0x43f9f2){return new BPromise(function(_0x52907d,_0x368a0b){return client[_0xc35d('0x12')](_0x5d296a,_0x43f9f2)[_0xc35d('0x13')](function(_0x1c1ca2){logger[_0xc35d('0x14')](_0xc35d('0x15'),_0x5ed9d5,_0xc35d('0x16'));logger['debug'](_0xc35d('0x17'),_0x5ed9d5,_0xc35d('0x16'),JSON[_0xc35d('0x18')](_0x1c1ca2));if(_0x1c1ca2[_0xc35d('0x19')]){if(_0x1c1ca2[_0xc35d('0x19')][_0xc35d('0x1a')]===0x1f4){logger[_0xc35d('0x19')](_0xc35d('0x15'),_0x5ed9d5,_0x1c1ca2[_0xc35d('0x19')]['message']);return _0x368a0b(_0x1c1ca2[_0xc35d('0x19')][_0xc35d('0x1b')]);}logger[_0xc35d('0x19')](_0xc35d('0x15'),_0x5ed9d5,_0x1c1ca2['error'][_0xc35d('0x1b')]);return _0x52907d(_0x1c1ca2['error'][_0xc35d('0x1b')]);}else{logger[_0xc35d('0x14')]('WhatsappInteraction,\x20%s,\x20%s',_0x5ed9d5,'request\x20sent');_0x52907d(_0x1c1ca2[_0xc35d('0x1c')]['message']);}})['catch'](function(_0x524748){logger[_0xc35d('0x19')](_0xc35d('0x15'),_0x5ed9d5,_0x524748);_0x368a0b(_0x524748);});});}exports[_0xc35d('0x1d')]=function(_0x50cc9f){var _0x8ccc93=this;return new Promise(function(_0x4ab014,_0x5a1f03){return db[_0xc35d('0x1e')][_0xc35d('0x1f')](_0x50cc9f[_0xc35d('0x20')],{'raw':_0x50cc9f[_0xc35d('0x21')]?_0x50cc9f['options'][_0xc35d('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50cc9f[_0xc35d('0x21')]?_0x50cc9f[_0xc35d('0x21')][_0xc35d('0x23')]||null:null,'attributes':_0x50cc9f['options']?_0x50cc9f[_0xc35d('0x21')][_0xc35d('0x24')]||null:null,'limit':_0x50cc9f[_0xc35d('0x21')]?_0x50cc9f[_0xc35d('0x21')]['limit']||null:null})[_0xc35d('0x13')](function(_0x3316da){logger['info']('UpdateWhatsappInteraction',_0x50cc9f);logger[_0xc35d('0x25')](_0xc35d('0x1d'),_0x50cc9f,JSON['stringify'](_0x3316da));_0x4ab014(_0x3316da);})['catch'](function(_0x5d3668){logger[_0xc35d('0x19')](_0xc35d('0x1d'),_0x5d3668[_0xc35d('0x1b')],_0x50cc9f);_0x5a1f03(_0x8ccc93[_0xc35d('0x19')](0x1f4,_0x5d3668[_0xc35d('0x1b')]));});});};exports[_0xc35d('0x26')]=function(_0x1520a3){return new Promise(function(_0x2fcedd,_0x102b6b){return db[_0xc35d('0x1e')][_0xc35d('0x27')]({'where':_0x1520a3[_0xc35d('0x21')]?_0x1520a3[_0xc35d('0x21')][_0xc35d('0x23')]||null:null})['then'](function(_0x31b907){if(_0x31b907){return _0x31b907[_0xc35d('0x28')](_0x1520a3[_0xc35d('0x20')][_0xc35d('0x29')],_[_0xc35d('0x2a')](_0x1520a3[_0xc35d('0x20')],[_0xc35d('0x29'),'id'])||{});}})[_0xc35d('0x2b')](function(_0x32b33f){logger['info'](_0xc35d('0x2c'),_0x1520a3);logger[_0xc35d('0x25')]('AddTags',_0x1520a3,JSON[_0xc35d('0x18')](_0x32b33f));_0x2fcedd(_0x32b33f);})[_0xc35d('0x2d')](function(_0x56aa57){logger[_0xc35d('0x19')](_0xc35d('0x2c'),_0x56aa57[_0xc35d('0x1b')],_0x1520a3);_0x102b6b(_this[_0xc35d('0x19')](0x1f4,_0x56aa57['message']));});});};
\ No newline at end of file
+var _0x228f=['info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','attributes','AddTagsToWhatsappInteraction','where','addTags','ids','omit','body','spread','AddTags','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./whatsappInteraction.socket','request','then'];(function(_0x94983a,_0x35e5d3){var _0x22d569=function(_0x4085c7){while(--_0x4085c7){_0x94983a['push'](_0x94983a['shift']());}};_0x22d569(++_0x35e5d3);}(_0x228f,0x108));var _0xf228=function(_0x10bc79,_0x3d7596){_0x10bc79=_0x10bc79-0x0;var _0x29e9bb=_0x228f[_0x10bc79];return _0x29e9bb;};'use strict';var _=require('lodash');var util=require(_0xf228('0x0'));var moment=require(_0xf228('0x1'));var BPromise=require(_0xf228('0x2'));var rs=require(_0xf228('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf228('0x4'))['db'];var utils=require(_0xf228('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf228('0x6'));var client=jayson[_0xf228('0x7')][_0xf228('0x8')]({'port':0x232a});config['redis']=_[_0xf228('0x9')](config['redis'],{'host':_0xf228('0xa'),'port':0x18eb});var socket=require(_0xf228('0xb'))(new Redis(config[_0xf228('0xc')]));require(_0xf228('0xd'))['register'](socket);function respondWithRpcPromise(_0x49822e,_0xd22fa0,_0x2a7047){return new BPromise(function(_0x19f4ba,_0x52e828){return client[_0xf228('0xe')](_0x49822e,_0x2a7047)[_0xf228('0xf')](function(_0x4a0deb){logger[_0xf228('0x10')](_0xf228('0x11'),_0xd22fa0,_0xf228('0x12'));logger[_0xf228('0x13')](_0xf228('0x14'),_0xd22fa0,_0xf228('0x12'),JSON[_0xf228('0x15')](_0x4a0deb));if(_0x4a0deb[_0xf228('0x16')]){if(_0x4a0deb[_0xf228('0x16')][_0xf228('0x17')]===0x1f4){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0xd22fa0,_0x4a0deb[_0xf228('0x16')][_0xf228('0x18')]);return _0x52e828(_0x4a0deb[_0xf228('0x16')]['message']);}logger[_0xf228('0x16')]('WhatsappInteraction,\x20%s,\x20%s',_0xd22fa0,_0x4a0deb[_0xf228('0x16')][_0xf228('0x18')]);return _0x19f4ba(_0x4a0deb[_0xf228('0x16')][_0xf228('0x18')]);}else{logger['info'](_0xf228('0x11'),_0xd22fa0,_0xf228('0x12'));_0x19f4ba(_0x4a0deb[_0xf228('0x19')]['message']);}})[_0xf228('0x1a')](function(_0x4fd265){logger['error'](_0xf228('0x11'),_0xd22fa0,_0x4fd265);_0x52e828(_0x4fd265);});});}exports[_0xf228('0x1b')]=function(_0x317e57){var _0x59293d=this;return new Promise(function(_0x4cf7a6,_0x564d5f){return db[_0xf228('0x1c')][_0xf228('0x1d')](_0x317e57['body'],{'raw':_0x317e57[_0xf228('0x1e')]?_0x317e57['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x317e57[_0xf228('0x1e')]?_0x317e57[_0xf228('0x1e')]['where']||null:null,'attributes':_0x317e57[_0xf228('0x1e')]?_0x317e57[_0xf228('0x1e')][_0xf228('0x1f')]||null:null,'limit':_0x317e57[_0xf228('0x1e')]?_0x317e57['options']['limit']||null:null})[_0xf228('0xf')](function(_0xf25926){logger['info'](_0xf228('0x1b'),_0x317e57);logger[_0xf228('0x13')](_0xf228('0x1b'),_0x317e57,JSON['stringify'](_0xf25926));_0x4cf7a6(_0xf25926);})[_0xf228('0x1a')](function(_0x1079b6){logger[_0xf228('0x16')](_0xf228('0x1b'),_0x1079b6[_0xf228('0x18')],_0x317e57);_0x564d5f(_0x59293d[_0xf228('0x16')](0x1f4,_0x1079b6['message']));});});};exports[_0xf228('0x20')]=function(_0x49a015){return new Promise(function(_0x4da92b,_0x5d1c83){return db['WhatsappInteraction']['find']({'where':_0x49a015[_0xf228('0x1e')]?_0x49a015[_0xf228('0x1e')][_0xf228('0x21')]||null:null})[_0xf228('0xf')](function(_0x282298){if(_0x282298){return _0x282298[_0xf228('0x22')](_0x49a015['body'][_0xf228('0x23')],_[_0xf228('0x24')](_0x49a015[_0xf228('0x25')],['ids','id'])||{});}})[_0xf228('0x26')](function(_0x30050d){logger[_0xf228('0x10')](_0xf228('0x27'),_0x49a015);logger[_0xf228('0x13')](_0xf228('0x27'),_0x49a015,JSON[_0xf228('0x15')](_0x30050d));_0x4da92b(_0x30050d);})[_0xf228('0x1a')](function(_0x285c21){logger[_0xf228('0x16')](_0xf228('0x27'),_0x285c21[_0xf228('0x18')],_0x49a015);_0x5d1c83(_this['error'](0x1f4,_0x285c21[_0xf228('0x18')]));});});};
\ No newline at end of file
index b75f917..bf347b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6257=['./whatsappInteraction.events','save','update','removeListener','length'];(function(_0x5a47de,_0x57a87c){var _0x400ee6=function(_0x46745b){while(--_0x46745b){_0x5a47de['push'](_0x5a47de['shift']());}};_0x400ee6(++_0x57a87c);}(_0x6257,0x177));var _0x7625=function(_0x43605f,_0x3acab7){_0x43605f=_0x43605f-0x0;var _0x5bccef=_0x6257[_0x43605f];return _0x5bccef;};'use strict';var WhatsappInteractionEvents=require(_0x7625('0x0'));var events=[_0x7625('0x1'),'remove',_0x7625('0x2')];function createListener(_0x39b368,_0x27e6b2){return function(_0x23232f){_0x27e6b2['emit'](_0x39b368,_0x23232f);};}function removeListener(_0x254c77,_0x2f9282){return function(){WhatsappInteractionEvents[_0x7625('0x3')](_0x254c77,_0x2f9282);};}exports['register']=function(_0x152d0d){for(var _0xdaa241=0x0,_0x3399da=events[_0x7625('0x4')];_0xdaa241<_0x3399da;_0xdaa241++){var _0x2c4537=events[_0xdaa241];var _0x20ad46=createListener('whatsappInteraction:'+_0x2c4537,_0x152d0d);WhatsappInteractionEvents['on'](_0x2c4537,_0x20ad46);}};
\ No newline at end of file
+var _0x8589=['remove','emit','removeListener','length','whatsappInteraction:','./whatsappInteraction.events','save'];(function(_0x4d279a,_0x5bf9b9){var _0x4ee516=function(_0x460155){while(--_0x460155){_0x4d279a['push'](_0x4d279a['shift']());}};_0x4ee516(++_0x5bf9b9);}(_0x8589,0x16a));var _0x9858=function(_0x4835e1,_0x5d9674){_0x4835e1=_0x4835e1-0x0;var _0x436686=_0x8589[_0x4835e1];return _0x436686;};'use strict';var WhatsappInteractionEvents=require(_0x9858('0x0'));var events=[_0x9858('0x1'),_0x9858('0x2'),'update'];function createListener(_0x44dc6a,_0x5e68a4){return function(_0x461424){_0x5e68a4[_0x9858('0x3')](_0x44dc6a,_0x461424);};}function removeListener(_0x2eff7e,_0x77d587){return function(){WhatsappInteractionEvents[_0x9858('0x4')](_0x2eff7e,_0x77d587);};}exports['register']=function(_0x350602){for(var _0x2fdbb5=0x0,_0x4ad4d3=events[_0x9858('0x5')];_0x2fdbb5<_0x4ad4d3;_0x2fdbb5++){var _0x294e77=events[_0x2fdbb5];var _0x61e5b=createListener(_0x9858('0x6')+_0x294e77,_0x350602);WhatsappInteractionEvents['on'](_0x294e77,_0x61e5b);}};
\ No newline at end of file
index 68a3566..2963e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5689=['post','tracked','whatsapp','create','/:id/status','status','put','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x450e05,_0x52a4b2){var _0x1edcd2=function(_0x5ee9c2){while(--_0x5ee9c2){_0x450e05['push'](_0x450e05['shift']());}};_0x1edcd2(++_0x52a4b2);}(_0x5689,0x1a4));var _0x9568=function(_0x582a79,_0x2de2a1){_0x582a79=_0x582a79-0x0;var _0x1cb46e=_0x5689[_0x582a79];return _0x1cb46e;};'use strict';var multer=require(_0x9568('0x0'));var util=require(_0x9568('0x1'));var path=require('path');var timeout=require(_0x9568('0x2'));var express=require('express');var router=express[_0x9568('0x3')]();var fs_extra=require(_0x9568('0x4'));var auth=require(_0x9568('0x5'));var interaction=require(_0x9568('0x6'));var config=require(_0x9568('0x7'));var controller=require('./whatsappMessage.controller');router[_0x9568('0x8')]('/',auth[_0x9568('0x9')](),controller[_0x9568('0xa')]);router[_0x9568('0x8')](_0x9568('0xb'),auth['isAuthenticated'](),controller[_0x9568('0xc')]);router[_0x9568('0x8')](_0x9568('0xd'),auth[_0x9568('0x9')](),controller[_0x9568('0xe')]);router[_0x9568('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9568('0x10')](_0x9568('0x11'),'whatsappmessage:create'),controller[_0x9568('0x12')]);router[_0x9568('0xf')](_0x9568('0x13'),controller[_0x9568('0x14')]);router[_0x9568('0x15')](_0x9568('0xd'),auth['isAuthenticated'](),controller[_0x9568('0x16')]);router[_0x9568('0x15')]('/:id/accept',auth[_0x9568('0x9')](),controller[_0x9568('0x17')]);router[_0x9568('0x15')](_0x9568('0x18'),auth[_0x9568('0x9')](),controller[_0x9568('0x19')]);router[_0x9568('0x1a')](_0x9568('0xd'),auth[_0x9568('0x9')](),controller[_0x9568('0x1b')]);module[_0x9568('0x1c')]=router;
\ No newline at end of file
+var _0x4f69=['util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','tracked','whatsapp','whatsappmessage:create','create','post','/:id/status','status','put','/:id/accept','accept','/:id/reject','reject','delete','exports','multer'];(function(_0x2f071f,_0x2437fa){var _0x5fcf65=function(_0x5578b7){while(--_0x5578b7){_0x2f071f['push'](_0x2f071f['shift']());}};_0x5fcf65(++_0x2437fa);}(_0x4f69,0x14f));var _0x94f6=function(_0x1edfd5,_0x4379a2){_0x1edfd5=_0x1edfd5-0x0;var _0x2cfe40=_0x4f69[_0x1edfd5];return _0x2cfe40;};'use strict';var multer=require(_0x94f6('0x0'));var util=require(_0x94f6('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x94f6('0x2'));var router=express[_0x94f6('0x3')]();var fs_extra=require(_0x94f6('0x4'));var auth=require(_0x94f6('0x5'));var interaction=require(_0x94f6('0x6'));var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0x94f6('0x7')]('/',auth[_0x94f6('0x8')](),controller[_0x94f6('0x9')]);router[_0x94f6('0x7')](_0x94f6('0xa'),auth[_0x94f6('0x8')](),controller[_0x94f6('0xb')]);router[_0x94f6('0x7')](_0x94f6('0xc'),auth['isAuthenticated'](),controller[_0x94f6('0xd')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x94f6('0xe')](_0x94f6('0xf'),_0x94f6('0x10')),controller[_0x94f6('0x11')]);router[_0x94f6('0x12')](_0x94f6('0x13'),controller[_0x94f6('0x14')]);router[_0x94f6('0x15')](_0x94f6('0xc'),auth['isAuthenticated'](),controller['update']);router['put'](_0x94f6('0x16'),auth[_0x94f6('0x8')](),controller[_0x94f6('0x17')]);router[_0x94f6('0x15')](_0x94f6('0x18'),auth[_0x94f6('0x8')](),controller[_0x94f6('0x19')]);router[_0x94f6('0x1a')](_0x94f6('0xc'),auth[_0x94f6('0x8')](),controller['destroy']);module[_0x94f6('0x1b')]=router;
\ No newline at end of file
index 7631999..82fce47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd7=['TEXT','medium','out','STRING','DATE','BOOLEAN','sequelize'];(function(_0x2d1324,_0x24de05){var _0x16ab9b=function(_0x59492a){while(--_0x59492a){_0x2d1324['push'](_0x2d1324['shift']());}};_0x16ab9b(++_0x24de05);}(_0x5cd7,0x102));var _0x75cd=function(_0x3b632f,_0x453380){_0x3b632f=_0x3b632f-0x0;var _0x10e788=_0x5cd7[_0x3b632f];return _0x10e788;};'use strict';var Sequelize=require(_0x75cd('0x0'));module['exports']={'body':{'type':Sequelize[_0x75cd('0x1')](_0x75cd('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x75cd('0x3')),'defaultValue':_0x75cd('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x75cd('0x4')](0xbe)},'phone':{'type':Sequelize[_0x75cd('0x4')]},'readAt':{'type':Sequelize[_0x75cd('0x5')]},'secret':{'type':Sequelize[_0x75cd('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x75cd('0x4')]},'providerResponse':{'type':Sequelize[_0x75cd('0x1')]}};
\ No newline at end of file
+var _0x9e29=['BOOLEAN','ENUM','STRING','DATE','sequelize','exports','TEXT','medium'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x9e29,0xf4));var _0x99e2=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9e29[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0x99e2('0x0'));module[_0x99e2('0x1')]={'body':{'type':Sequelize[_0x99e2('0x2')](_0x99e2('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x99e2('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x99e2('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x99e2('0x6')](0xbe)},'phone':{'type':Sequelize[_0x99e2('0x6')]},'readAt':{'type':Sequelize[_0x99e2('0x7')]},'secret':{'type':Sequelize[_0x99e2('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x99e2('0x6')]},'providerResponse':{'type':Sequelize[_0x99e2('0x2')]}};
\ No newline at end of file
index f87ea78..480f338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad91=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappMessage','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','email','internal','agent','manual','interface','format','SIP/%s','channel','event','EventManager','acceptmessage','null','RejectMessage','rejectmessage','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','stringify','error','message','result','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','map','rawAttributes','type','key','query','keys','filters','model','attributes','intersection'];(function(_0x655854,_0x158d34){var _0x2b2aac=function(_0x58917a){while(--_0x58917a){_0x655854['push'](_0x655854['shift']());}};_0x2b2aac(++_0x158d34);}(_0xad91,0xd0));var _0x1ad9=function(_0x575057,_0x14baf3){_0x575057=_0x575057-0x0;var _0x49dbc8=_0xad91[_0x575057];return _0x49dbc8;};'use strict';var emlformat=require(_0x1ad9('0x0'));var rimraf=require(_0x1ad9('0x1'));var zipdir=require(_0x1ad9('0x2'));var jsonpatch=require(_0x1ad9('0x3'));var rp=require('request-promise');var moment=require(_0x1ad9('0x4'));var BPromise=require(_0x1ad9('0x5'));var Mustache=require(_0x1ad9('0x6'));var util=require(_0x1ad9('0x7'));var path=require(_0x1ad9('0x8'));var sox=require(_0x1ad9('0x9'));var csv=require(_0x1ad9('0xa'));var ejs=require(_0x1ad9('0xb'));var fs=require('fs');var fs_extra=require(_0x1ad9('0xc'));var _=require(_0x1ad9('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1ad9('0xe'));var toCsv=require(_0x1ad9('0xa'));var querystring=require(_0x1ad9('0xf'));var Papa=require('papaparse');var Redis=require(_0x1ad9('0x10'));var authService=require(_0x1ad9('0x11'));var qs=require(_0x1ad9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1ad9('0x13'));var logger=require(_0x1ad9('0x14'))(_0x1ad9('0x15'));var utils=require(_0x1ad9('0x16'));var config=require(_0x1ad9('0x17'));var licenseUtil=require(_0x1ad9('0x18'));var db=require(_0x1ad9('0x19'))['db'];config['redis']=_[_0x1ad9('0x1a')](config[_0x1ad9('0x1b')],{'host':_0x1ad9('0x1c'),'port':0x18eb});var socket=require(_0x1ad9('0x1d'))(new Redis(config['redis']));require(_0x1ad9('0x1e'))[_0x1ad9('0x1f')](socket);var jayson=require(_0x1ad9('0x20'));var client=jayson[_0x1ad9('0x21')][_0x1ad9('0x22')]({'port':0x232c});var client9002=jayson[_0x1ad9('0x21')][_0x1ad9('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5a8902,_0x23887f,_0x59c06a,_0x505138){return new BPromise(function(_0x2d3f77,_0x4cfd04){var _0x3ee8f8=_0x505138||client;return _0x3ee8f8[_0x1ad9('0x23')](_0x5a8902,_0x59c06a)[_0x1ad9('0x24')](function(_0xb007ad){logger[_0x1ad9('0x25')](_0x1ad9('0x26'),_0x23887f,'request\x20sent');logger[_0x1ad9('0x27')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x23887f,'request\x20sent',JSON[_0x1ad9('0x28')](_0xb007ad));if(_0xb007ad[_0x1ad9('0x29')]){if(_0xb007ad[_0x1ad9('0x29')]['code']===0x1f4){logger[_0x1ad9('0x29')](_0x1ad9('0x26'),_0x23887f,_0xb007ad[_0x1ad9('0x29')]['message']);return _0x4cfd04(_0xb007ad[_0x1ad9('0x29')][_0x1ad9('0x2a')]);}logger[_0x1ad9('0x29')](_0x1ad9('0x26'),_0x23887f,_0xb007ad['error'][_0x1ad9('0x2a')]);return _0x2d3f77(_0xb007ad['error'][_0x1ad9('0x2a')]);}else{logger[_0x1ad9('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x23887f,'request\x20sent');_0x2d3f77(_0xb007ad[_0x1ad9('0x2b')][_0x1ad9('0x2a')]);}})['catch'](function(_0xc5aca2){logger[_0x1ad9('0x29')](_0x1ad9('0x26'),_0x23887f,_0xc5aca2);_0x4cfd04(_0xc5aca2);});});}function respondWithStatusCode(_0x2206a1,_0x32845d){_0x32845d=_0x32845d||0xcc;return function(_0x36d16c){if(_0x36d16c){return _0x2206a1['sendStatus'](_0x32845d);}return _0x2206a1[_0x1ad9('0x2c')](_0x32845d)['end']();};}function respondWithResult(_0x5bd3ac,_0x1d0ede){_0x1d0ede=_0x1d0ede||0xc8;return function(_0x4bba92){if(_0x4bba92){return _0x5bd3ac[_0x1ad9('0x2c')](_0x1d0ede)[_0x1ad9('0x2d')](_0x4bba92);}};}function respondWithFilteredResult(_0x5438e0,_0x128d78){return function(_0x4f4a76){if(_0x4f4a76){var _0x3b16af=typeof _0x128d78[_0x1ad9('0x2e')]===_0x1ad9('0x2f')&&typeof _0x128d78[_0x1ad9('0x30')]==='undefined';var _0x74c600=_0x4f4a76[_0x1ad9('0x31')];var _0x43c53e=_0x3b16af?0x0:_0x128d78[_0x1ad9('0x2e')];var _0x2e2fe0=_0x3b16af?_0x4f4a76[_0x1ad9('0x31')]:_0x128d78['offset']+_0x128d78[_0x1ad9('0x30')];var _0x27af74;if(_0x2e2fe0>=_0x74c600){_0x2e2fe0=_0x74c600;_0x27af74=0xc8;}else{_0x27af74=0xce;}_0x5438e0[_0x1ad9('0x2c')](_0x27af74);return _0x5438e0['set'](_0x1ad9('0x32'),_0x43c53e+'-'+_0x2e2fe0+'/'+_0x74c600)[_0x1ad9('0x2d')](_0x4f4a76);}return null;};}function patchUpdates(_0x405f01){return function(_0x105694){try{jsonpatch[_0x1ad9('0x33')](_0x105694,_0x405f01,!![]);}catch(_0x4df9f7){return BPromise[_0x1ad9('0x34')](_0x4df9f7);}return _0x105694[_0x1ad9('0x35')]();};}function saveUpdates(_0x2400d1,_0x5cf4a6){return function(_0xcd9a12){if(_0xcd9a12){return _0xcd9a12[_0x1ad9('0x36')](_0x2400d1)[_0x1ad9('0x24')](function(_0x4ea4c0){return _0x4ea4c0;});}return null;};}function removeEntity(_0x41b98c,_0x5d633c){return function(_0x3565fb){if(_0x3565fb){return _0x3565fb[_0x1ad9('0x37')]()['then'](function(){_0x41b98c[_0x1ad9('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2dffb8,_0x19cb61){return function(_0x3467fc){if(!_0x3467fc){_0x2dffb8[_0x1ad9('0x38')](0x194);}return _0x3467fc;};}function handleError(_0x4e07ab,_0x3c41af){_0x3c41af=_0x3c41af||0x1f4;return function(_0x5ecd13){logger[_0x1ad9('0x29')](_0x5ecd13[_0x1ad9('0x39')]);if(_0x5ecd13[_0x1ad9('0x3a')]){delete _0x5ecd13[_0x1ad9('0x3a')];}_0x4e07ab[_0x1ad9('0x2c')](_0x3c41af)[_0x1ad9('0x3b')](_0x5ecd13);};}exports['index']=function(_0x47e636,_0x29a12b){var _0x6834f5={},_0x59112b={},_0x49fa24={'count':0x0,'rows':[]};var _0x1742be=_[_0x1ad9('0x3c')](db['WhatsappMessage'][_0x1ad9('0x3d')],function(_0x128420){return{'name':_0x128420['fieldName'],'type':_0x128420[_0x1ad9('0x3e')][_0x1ad9('0x3f')]};});_0x59112b['model']=_[_0x1ad9('0x3c')](_0x1742be,_0x1ad9('0x3a'));_0x59112b[_0x1ad9('0x40')]=_[_0x1ad9('0x41')](_0x47e636[_0x1ad9('0x40')]);_0x59112b[_0x1ad9('0x42')]=_['intersection'](_0x59112b[_0x1ad9('0x43')],_0x59112b[_0x1ad9('0x40')]);_0x6834f5[_0x1ad9('0x44')]=_[_0x1ad9('0x45')](_0x59112b[_0x1ad9('0x43')],qs[_0x1ad9('0x46')](_0x47e636['query']['fields']));_0x6834f5[_0x1ad9('0x44')]=_0x6834f5[_0x1ad9('0x44')][_0x1ad9('0x47')]?_0x6834f5[_0x1ad9('0x44')]:_0x59112b[_0x1ad9('0x43')];if(!_0x47e636['query'][_0x1ad9('0x48')](_0x1ad9('0x49'))){_0x6834f5[_0x1ad9('0x30')]=qs['limit'](_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x30')]);_0x6834f5[_0x1ad9('0x2e')]=qs[_0x1ad9('0x2e')](_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x2e')]);}_0x6834f5[_0x1ad9('0x4a')]=qs[_0x1ad9('0x4b')](_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x4b')]);_0x6834f5[_0x1ad9('0x4c')]=qs[_0x1ad9('0x42')](_[_0x1ad9('0x4d')](_0x47e636[_0x1ad9('0x40')],_0x59112b[_0x1ad9('0x42')]),_0x1742be);if(_0x47e636['query'][_0x1ad9('0x4e')]){_0x6834f5[_0x1ad9('0x4c')]=_[_0x1ad9('0x4f')](_0x6834f5[_0x1ad9('0x4c')],{'$or':_[_0x1ad9('0x3c')](_0x1742be,function(_0x4378e4){if(_0x4378e4['type']!==_0x1ad9('0x50')){var _0x3f749c={};_0x3f749c[_0x4378e4[_0x1ad9('0x3a')]]={'$like':'%'+_0x47e636[_0x1ad9('0x40')]['filter']+'%'};return _0x3f749c;}})});}_0x6834f5=_[_0x1ad9('0x4f')]({},_0x6834f5,_0x47e636[_0x1ad9('0x51')]);var _0x24d3f1={'where':_0x6834f5['where']};return db[_0x1ad9('0x52')][_0x1ad9('0x31')](_0x24d3f1)[_0x1ad9('0x24')](function(_0x8d6e41){_0x49fa24[_0x1ad9('0x31')]=_0x8d6e41;if(_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x53')]){_0x6834f5[_0x1ad9('0x54')]=[{'all':!![]}];}return db[_0x1ad9('0x52')][_0x1ad9('0x55')](_0x6834f5);})['then'](function(_0x3d4d84){_0x49fa24[_0x1ad9('0x56')]=_0x3d4d84;return _0x49fa24;})[_0x1ad9('0x24')](respondWithFilteredResult(_0x29a12b,_0x6834f5))[_0x1ad9('0x57')](handleError(_0x29a12b,null));};exports[_0x1ad9('0x58')]=function(_0x355328,_0x506a81){var _0x48aaf3={'raw':!![],'where':{'id':_0x355328[_0x1ad9('0x59')]['id']}},_0x6a6e14={};_0x6a6e14[_0x1ad9('0x43')]=_['keys'](db[_0x1ad9('0x52')][_0x1ad9('0x3d')]);_0x6a6e14['query']=_['keys'](_0x355328[_0x1ad9('0x40')]);_0x6a6e14[_0x1ad9('0x42')]=_[_0x1ad9('0x45')](_0x6a6e14[_0x1ad9('0x43')],_0x6a6e14['query']);_0x48aaf3[_0x1ad9('0x44')]=_[_0x1ad9('0x45')](_0x6a6e14[_0x1ad9('0x43')],qs[_0x1ad9('0x46')](_0x355328[_0x1ad9('0x40')][_0x1ad9('0x46')]));_0x48aaf3[_0x1ad9('0x44')]=_0x48aaf3[_0x1ad9('0x44')][_0x1ad9('0x47')]?_0x48aaf3[_0x1ad9('0x44')]:_0x6a6e14['model'];if(_0x355328['query']['includeAll']){_0x48aaf3[_0x1ad9('0x54')]=[{'all':!![]}];}_0x48aaf3=_[_0x1ad9('0x4f')]({},_0x48aaf3,_0x355328['options']);return db['WhatsappMessage'][_0x1ad9('0x5a')](_0x48aaf3)['then'](handleEntityNotFound(_0x506a81,null))['then'](respondWithResult(_0x506a81,null))[_0x1ad9('0x57')](handleError(_0x506a81,null));};exports[_0x1ad9('0x5b')]=function(_0x1882e1,_0x5ca1bf){return db['WhatsappMessage'][_0x1ad9('0x5b')](_0x1882e1['body'],{})[_0x1ad9('0x24')](respondWithResult(_0x5ca1bf,0xc9))[_0x1ad9('0x57')](handleError(_0x5ca1bf,null));};exports[_0x1ad9('0x36')]=function(_0x460343,_0x2f078d){if(_0x460343[_0x1ad9('0x5c')]['id']){delete _0x460343[_0x1ad9('0x5c')]['id'];}return db[_0x1ad9('0x52')]['find']({'where':{'id':_0x460343['params']['id']}})[_0x1ad9('0x24')](handleEntityNotFound(_0x2f078d,null))['then'](saveUpdates(_0x460343[_0x1ad9('0x5c')],null))[_0x1ad9('0x24')](respondWithResult(_0x2f078d,null))[_0x1ad9('0x57')](handleError(_0x2f078d,null));};exports[_0x1ad9('0x37')]=function(_0x1c0ae2,_0x110c2a){return db[_0x1ad9('0x52')][_0x1ad9('0x5a')]({'where':{'id':_0x1c0ae2[_0x1ad9('0x59')]['id']}})[_0x1ad9('0x24')](handleEntityNotFound(_0x110c2a,null))['then'](removeEntity(_0x110c2a,null))[_0x1ad9('0x57')](handleError(_0x110c2a,null));};exports['describe']=function(_0x8fcbdb,_0x532523){return db[_0x1ad9('0x52')][_0x1ad9('0x5d')]()['then'](respondWithResult(_0x532523,null))['catch'](handleError(_0x532523,null));};var interaction_log=require(_0x1ad9('0x14'))(_0x1ad9('0x5e'));exports[_0x1ad9('0x5f')]=function(_0x434446,_0x2e8baa,_0x245e8e){var _0x18ac8f={'agent':{},'channel':_0x1ad9('0x60')};if(_0x434446[_0x1ad9('0x5c')]['id']){delete _0x434446[_0x1ad9('0x5c')]['id'];}_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x61')]=!![];_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x62')]=moment()['format'](_0x1ad9('0x63'));_0x434446[_0x1ad9('0x5c')]['UserId']=_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x64')]||_0x434446[_0x1ad9('0x65')]['id'];_0x18ac8f['agent']['id']=_0x434446['body'][_0x1ad9('0x64')];return db['WhatsappMessage'][_0x1ad9('0x5a')]({'where':{'id':_0x434446[_0x1ad9('0x59')]['id'],'UserId':null}})[_0x1ad9('0x24')](handleEntityNotFound(_0x2e8baa,null))[_0x1ad9('0x24')](saveUpdates(_0x434446[_0x1ad9('0x5c')],null))[_0x1ad9('0x24')](function(_0x33891e){if(_0x33891e){_0x18ac8f['message']=_0x33891e[_0x1ad9('0x66')]({'plain':!![]});return db[_0x1ad9('0x67')]['find']({'where':{'id':_0x33891e[_0x1ad9('0x68')]}});}return null;})[_0x1ad9('0x24')](handleEntityNotFound(_0x2e8baa,null))[_0x1ad9('0x24')](function(_0x5b18ea){if(_0x5b18ea){return _0x5b18ea['update']({'UserId':_0x434446['body'][_0x1ad9('0x64')],'read1stAt':_[_0x1ad9('0x69')](_0x5b18ea[_0x1ad9('0x6a')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x1ad9('0x24')](function(_0x59b3f5){if(_0x59b3f5){_0x18ac8f[_0x1ad9('0x6b')]=_0x59b3f5[_0x1ad9('0x66')]({'plain':!![]});interaction_log['info'](_0x1ad9('0x6c'),_0x434446[_0x1ad9('0x65')]['id'],_0x434446['user'][_0x1ad9('0x3a')],_0x434446['user'][_0x1ad9('0x6d')],_0x18ac8f[_0x1ad9('0x6b')]['id'],_0x434446[_0x1ad9('0x5c')]?JSON[_0x1ad9('0x28')](_0x434446[_0x1ad9('0x5c')]):'null');return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x18ac8f);}return null;})[_0x1ad9('0x24')](function(_0x48e76a){var _0x53c7a0=_0x1ad9('0x6e')+_0x48e76a[_0x1ad9('0x2a')][_0x1ad9('0x6f')];return db[_0x1ad9('0x70')][_0x1ad9('0x40')](_0x53c7a0,{'type':db[_0x1ad9('0x71')]['QueryTypes'][_0x1ad9('0x72')],'raw':!![]})[_0x1ad9('0x24')](function(_0x1038f5){return _0x1038f5;});})[_0x1ad9('0x24')](function(_0x33ec45){if(_0x33ec45){_0x18ac8f['message'][_0x1ad9('0x73')]=_0x33ec45[0x0];if(!_0x434446['body']['UserId'])return;return db[_0x1ad9('0x74')]['find']({'where':{'id':_0x434446[_0x1ad9('0x5c')]['UserId'],'role':'agent'},'attributes':['id','name',_0x1ad9('0x75'),_0x1ad9('0x76'),_0x1ad9('0x77')],'raw':!![]});}return null;})[_0x1ad9('0x24')](function(_0x488c97){if(!_0x488c97)return null;_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x78')]=_0x488c97;return _0x18ac8f;})[_0x1ad9('0x24')](function(_0x43d802){if(_0x43d802){if(_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x79')]){_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x7a')]=util[_0x1ad9('0x7b')](_0x1ad9('0x7c'),_0x434446[_0x1ad9('0x65')][_0x1ad9('0x3a')]);_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x7d')]=_0x18ac8f[_0x1ad9('0x7d')];_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x7e')]=_0x1ad9('0x5f');return respondWithRpcPromise('EventManager',_0x1ad9('0x7f'),{'event':_0x1ad9('0x80'),'message':_0x18ac8f[_0x1ad9('0x2a')]},client9002)[_0x1ad9('0x24')](function(){return _0x18ac8f;});}return _0x18ac8f;}return null;})[_0x1ad9('0x24')](respondWithResult(_0x2e8baa,null))['catch'](handleError(_0x2e8baa,null));};var interaction_log=require(_0x1ad9('0x14'))(_0x1ad9('0x5e'));exports[_0x1ad9('0x34')]=function(_0x11be84,_0x4aeada,_0x47d765){var _0x38b389={'agent':{},'channel':_0x1ad9('0x60')};if(_0x11be84[_0x1ad9('0x5c')]['id']){delete _0x11be84[_0x1ad9('0x5c')]['id'];}_0x11be84['body'][_0x1ad9('0x64')]=_0x11be84[_0x1ad9('0x5c')][_0x1ad9('0x64')]||_0x11be84[_0x1ad9('0x65')]['id'];_0x38b389['agent']['id']=_0x11be84['body'][_0x1ad9('0x64')];return db['WhatsappMessage'][_0x1ad9('0x5a')]({'where':{'id':_0x11be84[_0x1ad9('0x59')]['id'],'UserId':null}})[_0x1ad9('0x24')](handleEntityNotFound(_0x4aeada,null))[_0x1ad9('0x24')](function(_0x5a902c){if(_0x5a902c){_0x38b389[_0x1ad9('0x2a')]=_0x5a902c[_0x1ad9('0x66')]({'plain':!![]});return db[_0x1ad9('0x67')][_0x1ad9('0x5a')]({'where':{'id':_0x5a902c['WhatsappInteractionId']}});}return null;})[_0x1ad9('0x24')](handleEntityNotFound(_0x4aeada,null))[_0x1ad9('0x24')](function(_0x137350){if(_0x137350){_0x38b389['interaction']=_0x137350[_0x1ad9('0x66')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x11be84[_0x1ad9('0x65')]['id'],_0x11be84['user'][_0x1ad9('0x3a')],_0x11be84['user'][_0x1ad9('0x6d')],_0x38b389[_0x1ad9('0x6b')]['id'],_0x11be84[_0x1ad9('0x5c')]?JSON[_0x1ad9('0x28')](_0x11be84[_0x1ad9('0x5c')]):_0x1ad9('0x81'));return respondWithRpcPromise(_0x1ad9('0x82'),'rejectMessage',_0x38b389);}return null;})['then'](function(_0x47065c){var _0x2ca4f9=_0x1ad9('0x6e')+_0x47065c[_0x1ad9('0x2a')][_0x1ad9('0x6f')];return db['sequelize'][_0x1ad9('0x40')](_0x2ca4f9,{'type':db[_0x1ad9('0x71')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1ad9('0x24')](function(_0x5938bb){return _0x5938bb;});})[_0x1ad9('0x24')](function(_0x556309){if(_0x556309){_0x38b389[_0x1ad9('0x2a')][_0x1ad9('0x73')]=_0x556309[0x0];if(!_0x11be84[_0x1ad9('0x5c')][_0x1ad9('0x64')])return;return db['User']['find']({'where':{'id':_0x11be84['body']['UserId'],'role':_0x1ad9('0x78')},'attributes':['id',_0x1ad9('0x3a'),_0x1ad9('0x75'),_0x1ad9('0x76'),_0x1ad9('0x77')],'raw':!![]});}return null;})[_0x1ad9('0x24')](function(_0x38683a){if(!_0x38683a)return null;_0x38b389[_0x1ad9('0x2a')][_0x1ad9('0x78')]=_0x38683a;return _0x38b389;})[_0x1ad9('0x24')](function(_0x4642c1){if(_0x4642c1){_0x4642c1[_0x1ad9('0x2a')][_0x1ad9('0x7a')]=util[_0x1ad9('0x7b')]('SIP/%s',_0x11be84[_0x1ad9('0x65')][_0x1ad9('0x3a')]);_0x4642c1[_0x1ad9('0x2a')][_0x1ad9('0x7d')]=_0x38b389[_0x1ad9('0x7d')];_0x4642c1[_0x1ad9('0x2a')][_0x1ad9('0x7e')]=_0x1ad9('0x34');respondWithRpcPromise('EventManager',_0x1ad9('0x7f'),{'event':_0x1ad9('0x83'),'message':_0x4642c1['message']},client9002);return _0x38b389;}return null;})['then'](respondWithResult(_0x4aeada,null))[_0x1ad9('0x57')](handleError(_0x4aeada,null));};exports[_0x1ad9('0x2c')]=function(_0x4633e2,_0x5bf3d3,_0x501d3d){if(_0x4633e2[_0x1ad9('0x5c')]['id']){delete _0x4633e2[_0x1ad9('0x5c')]['id'];}var _0x412d41;return db['WhatsappMessage'][_0x1ad9('0x5a')]({'where':{'id':_0x4633e2[_0x1ad9('0x59')]['id']}})['then'](handleEntityNotFound(_0x5bf3d3,null))['then'](function(_0x2a931a){if(_0x2a931a){_0x412d41=_0x2a931a;return db['WhatsappAccount'][_0x1ad9('0x5a')]({'where':{'id':_0x2a931a['WhatsappAccountId']}});}})[_0x1ad9('0x24')](handleEntityNotFound(_0x5bf3d3,null))[_0x1ad9('0x24')](function(_0x37322d){if(_0x37322d){logger[_0x1ad9('0x27')](_0x1ad9('0x84'),_0x1ad9('0x2c'),_0x1ad9('0x85'),_0x37322d[_0x1ad9('0x3e')],util[_0x1ad9('0x86')](_0x4633e2[_0x1ad9('0x5c')],{'showHidden':![],'depth':null}));switch(_0x37322d['type']){case _0x1ad9('0x87'):if(_0x4633e2[_0x1ad9('0x5c')]['MessageSid']&&_0x4633e2[_0x1ad9('0x5c')][_0x1ad9('0x88')]===_0x412d41[_0x1ad9('0x89')]&&_0x4633e2[_0x1ad9('0x5c')][_0x1ad9('0x8a')]&&_0x4633e2['body']['MessageStatus']===_0x1ad9('0x61')){return _0x412d41['update']({'read':!![]});}else{logger['error']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x1ad9('0x2c'),_0x1ad9('0x87'),util['inspect'](_0x4633e2[_0x1ad9('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x412d41;}})[_0x1ad9('0x24')](respondWithResult(_0x5bf3d3,null))[_0x1ad9('0x57')](handleError(_0x5bf3d3,null));};
\ No newline at end of file
+var _0x12c0=['register','jayson/promise','client','http','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','sendStatus','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappMessage','includeAll','include','rows','show','params','keys','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','agent','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','ContactId','email','rejectmessage','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x12c0,0x197));var _0x012c=function(_0x19c6d9,_0x164e48){_0x19c6d9=_0x19c6d9-0x0;var _0x2fd37c=_0x12c0[_0x19c6d9];return _0x2fd37c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x012c('0x0'));var jsonpatch=require(_0x012c('0x1'));var rp=require(_0x012c('0x2'));var moment=require('moment');var BPromise=require(_0x012c('0x3'));var Mustache=require(_0x012c('0x4'));var util=require(_0x012c('0x5'));var path=require(_0x012c('0x6'));var sox=require(_0x012c('0x7'));var csv=require(_0x012c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x012c('0x9'));var _=require('lodash');var squel=require(_0x012c('0xa'));var crypto=require(_0x012c('0xb'));var jsforce=require(_0x012c('0xc'));var deskjs=require(_0x012c('0xd'));var toCsv=require(_0x012c('0x8'));var querystring=require(_0x012c('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x012c('0xf'));var qs=require(_0x012c('0x10'));var as=require(_0x012c('0x11'));var hardwareService=require(_0x012c('0x12'));var logger=require(_0x012c('0x13'))('api');var utils=require(_0x012c('0x14'));var config=require(_0x012c('0x15'));var licenseUtil=require(_0x012c('0x16'));var db=require('../../mysqldb')['db'];config[_0x012c('0x17')]=_[_0x012c('0x18')](config['redis'],{'host':_0x012c('0x19'),'port':0x18eb});var socket=require(_0x012c('0x1a'))(new Redis(config['redis']));require(_0x012c('0x1b'))[_0x012c('0x1c')](socket);var jayson=require(_0x012c('0x1d'));var client=jayson[_0x012c('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0x012c('0x1e')][_0x012c('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3cb53b,_0x22b4cc,_0x5cc258,_0x15afdf){return new BPromise(function(_0x652365,_0x445532){var _0x2daa46=_0x15afdf||client;return _0x2daa46['request'](_0x3cb53b,_0x5cc258)['then'](function(_0x267a80){logger['info'](_0x012c('0x20'),_0x22b4cc,'request\x20sent');logger[_0x012c('0x21')](_0x012c('0x22'),_0x22b4cc,_0x012c('0x23'),JSON[_0x012c('0x24')](_0x267a80));if(_0x267a80[_0x012c('0x25')]){if(_0x267a80['error'][_0x012c('0x26')]===0x1f4){logger[_0x012c('0x25')](_0x012c('0x20'),_0x22b4cc,_0x267a80[_0x012c('0x25')]['message']);return _0x445532(_0x267a80['error'][_0x012c('0x27')]);}logger['error'](_0x012c('0x20'),_0x22b4cc,_0x267a80[_0x012c('0x25')][_0x012c('0x27')]);return _0x652365(_0x267a80[_0x012c('0x25')][_0x012c('0x27')]);}else{logger[_0x012c('0x28')](_0x012c('0x20'),_0x22b4cc,_0x012c('0x23'));_0x652365(_0x267a80[_0x012c('0x29')][_0x012c('0x27')]);}})[_0x012c('0x2a')](function(_0x1d54b9){logger[_0x012c('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x22b4cc,_0x1d54b9);_0x445532(_0x1d54b9);});});}function respondWithStatusCode(_0x550e55,_0x13300d){_0x13300d=_0x13300d||0xcc;return function(_0x17dbef){if(_0x17dbef){return _0x550e55['sendStatus'](_0x13300d);}return _0x550e55[_0x012c('0x2b')](_0x13300d)[_0x012c('0x2c')]();};}function respondWithResult(_0x45c21c,_0xae9143){_0xae9143=_0xae9143||0xc8;return function(_0xfcd41d){if(_0xfcd41d){return _0x45c21c['status'](_0xae9143)[_0x012c('0x2d')](_0xfcd41d);}};}function respondWithFilteredResult(_0x5f2afc,_0x5950fb){return function(_0x2cc99f){if(_0x2cc99f){var _0x5a5ceb=typeof _0x5950fb['offset']===_0x012c('0x2e')&&typeof _0x5950fb['limit']===_0x012c('0x2e');var _0x164010=_0x2cc99f[_0x012c('0x2f')];var _0x1d9777=_0x5a5ceb?0x0:_0x5950fb[_0x012c('0x30')];var _0x382657=_0x5a5ceb?_0x2cc99f[_0x012c('0x2f')]:_0x5950fb['offset']+_0x5950fb[_0x012c('0x31')];var _0x2155e3;if(_0x382657>=_0x164010){_0x382657=_0x164010;_0x2155e3=0xc8;}else{_0x2155e3=0xce;}_0x5f2afc[_0x012c('0x2b')](_0x2155e3);return _0x5f2afc[_0x012c('0x32')](_0x012c('0x33'),_0x1d9777+'-'+_0x382657+'/'+_0x164010)[_0x012c('0x2d')](_0x2cc99f);}return null;};}function patchUpdates(_0x4d1faf){return function(_0x4aac64){try{jsonpatch[_0x012c('0x34')](_0x4aac64,_0x4d1faf,!![]);}catch(_0x37ec7e){return BPromise[_0x012c('0x35')](_0x37ec7e);}return _0x4aac64['save']();};}function saveUpdates(_0x29142a,_0x3faeff){return function(_0x230320){if(_0x230320){return _0x230320[_0x012c('0x36')](_0x29142a)[_0x012c('0x37')](function(_0x293771){return _0x293771;});}return null;};}function removeEntity(_0x3d0d34,_0x2b4548){return function(_0x3f32c1){if(_0x3f32c1){return _0x3f32c1[_0x012c('0x38')]()[_0x012c('0x37')](function(){_0x3d0d34['status'](0xcc)[_0x012c('0x2c')]();});}};}function handleEntityNotFound(_0x170f38,_0x2963d5){return function(_0x1b36f7){if(!_0x1b36f7){_0x170f38[_0x012c('0x39')](0x194);}return _0x1b36f7;};}function handleError(_0x2db3b5,_0x11e506){_0x11e506=_0x11e506||0x1f4;return function(_0x1d52e0){logger[_0x012c('0x25')](_0x1d52e0[_0x012c('0x3a')]);if(_0x1d52e0[_0x012c('0x3b')]){delete _0x1d52e0[_0x012c('0x3b')];}_0x2db3b5['status'](_0x11e506)[_0x012c('0x3c')](_0x1d52e0);};}exports['index']=function(_0x48bc47,_0x5a9f5e){var _0x5dedf5={},_0x32c43d={},_0x319c6d={'count':0x0,'rows':[]};var _0x343961=_[_0x012c('0x3d')](db['WhatsappMessage'][_0x012c('0x3e')],function(_0x48abee){return{'name':_0x48abee[_0x012c('0x3f')],'type':_0x48abee[_0x012c('0x40')][_0x012c('0x41')]};});_0x32c43d[_0x012c('0x42')]=_[_0x012c('0x3d')](_0x343961,'name');_0x32c43d[_0x012c('0x43')]=_['keys'](_0x48bc47[_0x012c('0x43')]);_0x32c43d[_0x012c('0x44')]=_['intersection'](_0x32c43d[_0x012c('0x42')],_0x32c43d[_0x012c('0x43')]);_0x5dedf5['attributes']=_[_0x012c('0x45')](_0x32c43d[_0x012c('0x42')],qs[_0x012c('0x46')](_0x48bc47[_0x012c('0x43')][_0x012c('0x46')]));_0x5dedf5[_0x012c('0x47')]=_0x5dedf5[_0x012c('0x47')][_0x012c('0x48')]?_0x5dedf5[_0x012c('0x47')]:_0x32c43d['model'];if(!_0x48bc47[_0x012c('0x43')][_0x012c('0x49')]('nolimit')){_0x5dedf5['limit']=qs[_0x012c('0x31')](_0x48bc47[_0x012c('0x43')][_0x012c('0x31')]);_0x5dedf5[_0x012c('0x30')]=qs['offset'](_0x48bc47['query'][_0x012c('0x30')]);}_0x5dedf5[_0x012c('0x4a')]=qs[_0x012c('0x4b')](_0x48bc47['query'][_0x012c('0x4b')]);_0x5dedf5[_0x012c('0x4c')]=qs[_0x012c('0x44')](_[_0x012c('0x4d')](_0x48bc47['query'],_0x32c43d[_0x012c('0x44')]),_0x343961);if(_0x48bc47[_0x012c('0x43')][_0x012c('0x4e')]){_0x5dedf5[_0x012c('0x4c')]=_[_0x012c('0x4f')](_0x5dedf5['where'],{'$or':_[_0x012c('0x3d')](_0x343961,function(_0x1b7693){if(_0x1b7693['type']!==_0x012c('0x50')){var _0x2dc4d5={};_0x2dc4d5[_0x1b7693[_0x012c('0x3b')]]={'$like':'%'+_0x48bc47[_0x012c('0x43')][_0x012c('0x4e')]+'%'};return _0x2dc4d5;}})});}_0x5dedf5=_[_0x012c('0x4f')]({},_0x5dedf5,_0x48bc47[_0x012c('0x51')]);var _0x1910d8={'where':_0x5dedf5['where']};return db[_0x012c('0x52')][_0x012c('0x2f')](_0x1910d8)[_0x012c('0x37')](function(_0x52507b){_0x319c6d['count']=_0x52507b;if(_0x48bc47[_0x012c('0x43')][_0x012c('0x53')]){_0x5dedf5[_0x012c('0x54')]=[{'all':!![]}];}return db[_0x012c('0x52')]['findAll'](_0x5dedf5);})['then'](function(_0x2a4f36){_0x319c6d[_0x012c('0x55')]=_0x2a4f36;return _0x319c6d;})[_0x012c('0x37')](respondWithFilteredResult(_0x5a9f5e,_0x5dedf5))[_0x012c('0x2a')](handleError(_0x5a9f5e,null));};exports[_0x012c('0x56')]=function(_0x2c0a2c,_0x36cc3f){var _0x3ae98f={'raw':!![],'where':{'id':_0x2c0a2c[_0x012c('0x57')]['id']}},_0x3b1926={};_0x3b1926[_0x012c('0x42')]=_[_0x012c('0x58')](db[_0x012c('0x52')][_0x012c('0x3e')]);_0x3b1926['query']=_['keys'](_0x2c0a2c[_0x012c('0x43')]);_0x3b1926['filters']=_[_0x012c('0x45')](_0x3b1926[_0x012c('0x42')],_0x3b1926[_0x012c('0x43')]);_0x3ae98f[_0x012c('0x47')]=_[_0x012c('0x45')](_0x3b1926[_0x012c('0x42')],qs['fields'](_0x2c0a2c[_0x012c('0x43')]['fields']));_0x3ae98f['attributes']=_0x3ae98f[_0x012c('0x47')][_0x012c('0x48')]?_0x3ae98f[_0x012c('0x47')]:_0x3b1926['model'];if(_0x2c0a2c['query'][_0x012c('0x53')]){_0x3ae98f[_0x012c('0x54')]=[{'all':!![]}];}_0x3ae98f=_[_0x012c('0x4f')]({},_0x3ae98f,_0x2c0a2c['options']);return db[_0x012c('0x52')][_0x012c('0x59')](_0x3ae98f)['then'](handleEntityNotFound(_0x36cc3f,null))[_0x012c('0x37')](respondWithResult(_0x36cc3f,null))[_0x012c('0x2a')](handleError(_0x36cc3f,null));};exports[_0x012c('0x5a')]=function(_0x202aba,_0x5882c5){return db[_0x012c('0x52')][_0x012c('0x5a')](_0x202aba[_0x012c('0x5b')],{})['then'](respondWithResult(_0x5882c5,0xc9))['catch'](handleError(_0x5882c5,null));};exports[_0x012c('0x36')]=function(_0x7e726b,_0x374f28){if(_0x7e726b[_0x012c('0x5b')]['id']){delete _0x7e726b['body']['id'];}return db[_0x012c('0x52')]['find']({'where':{'id':_0x7e726b[_0x012c('0x57')]['id']}})[_0x012c('0x37')](handleEntityNotFound(_0x374f28,null))[_0x012c('0x37')](saveUpdates(_0x7e726b[_0x012c('0x5b')],null))[_0x012c('0x37')](respondWithResult(_0x374f28,null))['catch'](handleError(_0x374f28,null));};exports[_0x012c('0x38')]=function(_0x91312b,_0x4e5627){return db[_0x012c('0x52')][_0x012c('0x59')]({'where':{'id':_0x91312b[_0x012c('0x57')]['id']}})[_0x012c('0x37')](handleEntityNotFound(_0x4e5627,null))[_0x012c('0x37')](removeEntity(_0x4e5627,null))[_0x012c('0x2a')](handleError(_0x4e5627,null));};exports[_0x012c('0x5c')]=function(_0x10ac76,_0x4c926a){return db[_0x012c('0x52')][_0x012c('0x5c')]()[_0x012c('0x37')](respondWithResult(_0x4c926a,null))[_0x012c('0x2a')](handleError(_0x4c926a,null));};var interaction_log=require(_0x012c('0x13'))(_0x012c('0x5d'));exports[_0x012c('0x5e')]=function(_0x81620d,_0x48f12c,_0x51c8c9){var _0x848f40={'agent':{},'channel':_0x012c('0x5f')};if(_0x81620d[_0x012c('0x5b')]['id']){delete _0x81620d['body']['id'];}_0x81620d[_0x012c('0x5b')][_0x012c('0x60')]=!![];_0x81620d[_0x012c('0x5b')][_0x012c('0x61')]=moment()[_0x012c('0x62')](_0x012c('0x63'));_0x81620d[_0x012c('0x5b')][_0x012c('0x64')]=_0x81620d[_0x012c('0x5b')][_0x012c('0x64')]||_0x81620d[_0x012c('0x65')]['id'];_0x848f40['agent']['id']=_0x81620d[_0x012c('0x5b')][_0x012c('0x64')];return db[_0x012c('0x52')][_0x012c('0x59')]({'where':{'id':_0x81620d[_0x012c('0x57')]['id'],'UserId':null}})[_0x012c('0x37')](handleEntityNotFound(_0x48f12c,null))[_0x012c('0x37')](saveUpdates(_0x81620d['body'],null))[_0x012c('0x37')](function(_0x4be687){if(_0x4be687){_0x848f40['message']=_0x4be687[_0x012c('0x66')]({'plain':!![]});return db['WhatsappInteraction'][_0x012c('0x59')]({'where':{'id':_0x4be687[_0x012c('0x67')]}});}return null;})[_0x012c('0x37')](handleEntityNotFound(_0x48f12c,null))['then'](function(_0x3118a){if(_0x3118a){return _0x3118a[_0x012c('0x36')]({'UserId':_0x81620d['body'][_0x012c('0x64')],'read1stAt':_[_0x012c('0x68')](_0x3118a[_0x012c('0x69')])?moment()[_0x012c('0x62')](_0x012c('0x63')):undefined});}return null;})[_0x012c('0x37')](function(_0x3a144a){if(_0x3a144a){_0x848f40[_0x012c('0x6a')]=_0x3a144a[_0x012c('0x66')]({'plain':!![]});interaction_log['info'](_0x012c('0x6b'),_0x81620d[_0x012c('0x65')]['id'],_0x81620d[_0x012c('0x65')][_0x012c('0x3b')],_0x81620d[_0x012c('0x65')]['role'],_0x848f40[_0x012c('0x6a')]['id'],_0x81620d[_0x012c('0x5b')]?JSON[_0x012c('0x24')](_0x81620d[_0x012c('0x5b')]):_0x012c('0x6c'));return respondWithRpcPromise(_0x012c('0x6d'),_0x012c('0x6e'),_0x848f40);}return null;})[_0x012c('0x37')](function(_0x5476a5){var _0x2c275f=_0x012c('0x6f')+_0x5476a5[_0x012c('0x27')]['ContactId'];return db[_0x012c('0x70')][_0x012c('0x43')](_0x2c275f,{'type':db[_0x012c('0x71')][_0x012c('0x72')][_0x012c('0x73')],'raw':!![]})['then'](function(_0x337f37){return _0x337f37;});})[_0x012c('0x37')](function(_0x23d6a5){if(_0x23d6a5){_0x848f40[_0x012c('0x27')][_0x012c('0x74')]=_0x23d6a5[0x0];if(!_0x81620d[_0x012c('0x5b')][_0x012c('0x64')])return;return db[_0x012c('0x75')]['find']({'where':{'id':_0x81620d[_0x012c('0x5b')][_0x012c('0x64')],'role':'agent'},'attributes':['id',_0x012c('0x3b'),_0x012c('0x76'),'email',_0x012c('0x77')],'raw':!![]});}return null;})['then'](function(_0x13fd54){if(!_0x13fd54)return null;_0x848f40[_0x012c('0x27')][_0x012c('0x78')]=_0x13fd54;return _0x848f40;})[_0x012c('0x37')](function(_0x3623b0){if(_0x3623b0){if(_0x81620d['body'][_0x012c('0x79')]){_0x848f40[_0x012c('0x27')]['interface']=util[_0x012c('0x62')](_0x012c('0x7a'),_0x81620d[_0x012c('0x65')][_0x012c('0x3b')]);_0x848f40[_0x012c('0x27')][_0x012c('0x7b')]=_0x848f40[_0x012c('0x7b')];_0x848f40[_0x012c('0x27')][_0x012c('0x7c')]=_0x848f40[_0x012c('0x7b')];_0x848f40[_0x012c('0x27')][_0x012c('0x7d')]=_0x012c('0x5e');return respondWithRpcPromise(_0x012c('0x7e'),_0x012c('0x7e'),{'event':_0x012c('0x7f'),'message':_0x848f40['message']},client9002)[_0x012c('0x37')](function(){return _0x848f40;});}return _0x848f40;}return null;})[_0x012c('0x37')](respondWithResult(_0x48f12c,null))['catch'](handleError(_0x48f12c,null));};var interaction_log=require(_0x012c('0x13'))(_0x012c('0x5d'));exports[_0x012c('0x35')]=function(_0x301da6,_0x3c8327,_0x558de8){var _0x3625d3={'agent':{},'channel':_0x012c('0x5f')};if(_0x301da6[_0x012c('0x5b')]['id']){delete _0x301da6[_0x012c('0x5b')]['id'];}_0x301da6['body'][_0x012c('0x64')]=_0x301da6[_0x012c('0x5b')][_0x012c('0x64')]||_0x301da6[_0x012c('0x65')]['id'];_0x3625d3[_0x012c('0x78')]['id']=_0x301da6[_0x012c('0x5b')][_0x012c('0x64')];return db['WhatsappMessage'][_0x012c('0x59')]({'where':{'id':_0x301da6[_0x012c('0x57')]['id'],'UserId':null}})[_0x012c('0x37')](handleEntityNotFound(_0x3c8327,null))[_0x012c('0x37')](function(_0x27ad1c){if(_0x27ad1c){_0x3625d3[_0x012c('0x27')]=_0x27ad1c['get']({'plain':!![]});return db[_0x012c('0x80')][_0x012c('0x59')]({'where':{'id':_0x27ad1c[_0x012c('0x67')]}});}return null;})[_0x012c('0x37')](handleEntityNotFound(_0x3c8327,null))[_0x012c('0x37')](function(_0x2b6834){if(_0x2b6834){_0x3625d3[_0x012c('0x6a')]=_0x2b6834[_0x012c('0x66')]({'plain':!![]});interaction_log[_0x012c('0x28')](_0x012c('0x81'),_0x301da6[_0x012c('0x65')]['id'],_0x301da6[_0x012c('0x65')][_0x012c('0x3b')],_0x301da6[_0x012c('0x65')][_0x012c('0x82')],_0x3625d3[_0x012c('0x6a')]['id'],_0x301da6[_0x012c('0x5b')]?JSON['stringify'](_0x301da6[_0x012c('0x5b')]):_0x012c('0x6c'));return respondWithRpcPromise(_0x012c('0x83'),_0x012c('0x84'),_0x3625d3);}return null;})[_0x012c('0x37')](function(_0x5f4ed4){var _0x11a3a6=_0x012c('0x6f')+_0x5f4ed4[_0x012c('0x27')][_0x012c('0x85')];return db[_0x012c('0x70')][_0x012c('0x43')](_0x11a3a6,{'type':db['Sequelize'][_0x012c('0x72')][_0x012c('0x73')],'raw':!![]})[_0x012c('0x37')](function(_0x5c5116){return _0x5c5116;});})[_0x012c('0x37')](function(_0x303b7c){if(_0x303b7c){_0x3625d3[_0x012c('0x27')][_0x012c('0x74')]=_0x303b7c[0x0];if(!_0x301da6[_0x012c('0x5b')][_0x012c('0x64')])return;return db[_0x012c('0x75')][_0x012c('0x59')]({'where':{'id':_0x301da6[_0x012c('0x5b')][_0x012c('0x64')],'role':_0x012c('0x78')},'attributes':['id',_0x012c('0x3b'),_0x012c('0x76'),_0x012c('0x86'),_0x012c('0x77')],'raw':!![]});}return null;})['then'](function(_0x279da1){if(!_0x279da1)return null;_0x3625d3['message'][_0x012c('0x78')]=_0x279da1;return _0x3625d3;})[_0x012c('0x37')](function(_0x442bf0){if(_0x442bf0){_0x442bf0['message']['interface']=util[_0x012c('0x62')](_0x012c('0x7a'),_0x301da6['user'][_0x012c('0x3b')]);_0x442bf0[_0x012c('0x27')]['channel']=_0x3625d3['channel'];_0x442bf0['message'][_0x012c('0x7c')]=_0x3625d3[_0x012c('0x7b')];_0x442bf0['message'][_0x012c('0x7d')]='reject';respondWithRpcPromise(_0x012c('0x7e'),_0x012c('0x7e'),{'event':_0x012c('0x87'),'message':_0x442bf0['message']},client9002);return _0x3625d3;}return null;})['then'](respondWithResult(_0x3c8327,null))['catch'](handleError(_0x3c8327,null));};exports[_0x012c('0x2b')]=function(_0x4da5e8,_0x24c773,_0x5b0a59){if(_0x4da5e8['body']['id']){delete _0x4da5e8[_0x012c('0x5b')]['id'];}var _0x1b3f00;return db[_0x012c('0x52')]['find']({'where':{'id':_0x4da5e8[_0x012c('0x57')]['id']}})[_0x012c('0x37')](handleEntityNotFound(_0x24c773,null))[_0x012c('0x37')](function(_0x39ddcd){if(_0x39ddcd){_0x1b3f00=_0x39ddcd;return db['WhatsappAccount'][_0x012c('0x59')]({'where':{'id':_0x39ddcd[_0x012c('0x88')]}});}})[_0x012c('0x37')](handleEntityNotFound(_0x24c773,null))['then'](function(_0x3397e7){if(_0x3397e7){logger[_0x012c('0x21')](_0x012c('0x89'),_0x012c('0x2b'),_0x012c('0x8a'),_0x3397e7[_0x012c('0x40')],util[_0x012c('0x8b')](_0x4da5e8['body'],{'showHidden':![],'depth':null}));switch(_0x3397e7['type']){case _0x012c('0x8c'):if(_0x4da5e8[_0x012c('0x5b')][_0x012c('0x8d')]&&_0x4da5e8[_0x012c('0x5b')][_0x012c('0x8d')]===_0x1b3f00[_0x012c('0x8e')]&&_0x4da5e8['body'][_0x012c('0x8f')]&&_0x4da5e8[_0x012c('0x5b')][_0x012c('0x8f')]===_0x012c('0x60')){return _0x1b3f00[_0x012c('0x36')]({'read':!![]});}else{logger[_0x012c('0x25')](_0x012c('0x90'),_0x012c('0x2b'),_0x012c('0x8c'),util[_0x012c('0x8b')](_0x4da5e8[_0x012c('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x1b3f00;}})[_0x012c('0x37')](respondWithResult(_0x24c773,null))[_0x012c('0x2a')](handleError(_0x24c773,null));};
\ No newline at end of file
index 2721e02..81a7438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['hook','events','update','emit','hasOwnProperty'];(function(_0x1213f0,_0x3525e6){var _0x5796b8=function(_0x190cd5){while(--_0x190cd5){_0x1213f0['push'](_0x1213f0['shift']());}};_0x5796b8(++_0x3525e6);}(_0xf4eb,0xec));var _0xbf4e=function(_0x255f37,_0x1e2419){_0x255f37=_0x255f37-0x0;var _0x3bdbfe=_0xf4eb[_0x255f37];return _0x3bdbfe;};'use strict';var EventEmitter=require(_0xbf4e('0x0'));var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xbf4e('0x1'),'afterDestroy':'remove'};function emitEvent(_0x4e7fa7){return function(_0x2e3070,_0x1c7606,_0x32d1d7){WhatsappMessageEvents[_0xbf4e('0x2')](_0x4e7fa7+':'+_0x2e3070['id'],_0x2e3070);WhatsappMessageEvents[_0xbf4e('0x2')](_0x4e7fa7,_0x2e3070);_0x32d1d7(null);};}for(var e in events){if(events[_0xbf4e('0x3')](e)){var event=events[e];WhatsappMessage[_0xbf4e('0x4')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x5423=['hook','exports','events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5423,0xe3));var _0x3542=function(_0x330db3,_0xd05ab4){_0x330db3=_0x330db3-0x0;var _0xaf2ae=_0x5423[_0x330db3];return _0xaf2ae;};'use strict';var EventEmitter=require(_0x3542('0x0'));var WhatsappMessage=require(_0x3542('0x1'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x3542('0x2')](0x0);var events={'afterCreate':_0x3542('0x3'),'afterUpdate':'update','afterDestroy':_0x3542('0x4')};function emitEvent(_0x1202d5){return function(_0xf0835,_0x2a1864,_0x54ea2f){WhatsappMessageEvents[_0x3542('0x5')](_0x1202d5+':'+_0xf0835['id'],_0xf0835);WhatsappMessageEvents[_0x3542('0x5')](_0x1202d5,_0xf0835);_0x54ea2f(null);};}for(var e in events){if(events[_0x3542('0x6')](e)){var event=events[e];WhatsappMessage[_0x3542('0x7')](e,emitEvent(event));}}module[_0x3542('0x8')]=WhatsappMessageEvents;
\ No newline at end of file
index fa887d1..d4aff4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50c=['out','secret','isNil','UserId','findOne','WhatsappInteractionId','then','update','createdAt','catch','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/api/whatsapp/messages/','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','finally','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','models','toLowerCase','direction'];(function(_0x198fd4,_0x2c5d04){var _0x8b3630=function(_0x1460c2){while(--_0x1460c2){_0x198fd4['push'](_0x198fd4['shift']());}};_0x8b3630(++_0x2c5d04);}(_0xb50c,0x1bb));var _0xcb50=function(_0x43bc0e,_0x18864e){_0x43bc0e=_0x43bc0e-0x0;var _0x5b4081=_0xb50c[_0x43bc0e];return _0x5b4081;};'use strict';var _=require(_0xcb50('0x0'));var util=require(_0xcb50('0x1'));var logger=require(_0xcb50('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcb50('0x3'));var rp=require(_0xcb50('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb50('0x5'));var config=require(_0xcb50('0x6'));var attributes=require(_0xcb50('0x7'));module[_0xcb50('0x8')]=function(_0x144411,_0x59fbb9){return _0x144411['define'](_0xcb50('0x9'),attributes,{'tableName':_0xcb50('0xa'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xcb50('0xb')]},{'name':_0xcb50('0xc'),'fields':[_0xcb50('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x23fa92,_0x424b04,_0x429f13){var _0x247751=_0x144411[_0xcb50('0xe')];var _0x1b6447=_0x23fa92['get']({'plain':!![]});if(_0x1b6447['direction'][_0xcb50('0xf')]()==='in'||_0x1b6447[_0xcb50('0x10')]['toLowerCase']()===_0xcb50('0x11')&&!_0x1b6447[_0xcb50('0x12')]&&!_[_0xcb50('0x13')](_0x1b6447[_0xcb50('0x14')])){_0x247751['WhatsappInteraction'][_0xcb50('0x15')]({'where':{'id':_0x1b6447[_0xcb50('0x16')]}})[_0xcb50('0x17')](function(_0x43e50d){if(_0x43e50d){_0x43e50d[_0xcb50('0x18')]({'lastMsgAt':_0x1b6447[_0xcb50('0x19')],'lastMsgDirection':_0x1b6447[_0xcb50('0x10')]['toLowerCase']()});}})[_0xcb50('0x1a')](function(_0x41ee61){console['error'](_0x41ee61);});}if(_0x1b6447[_0xcb50('0x10')]===_0xcb50('0x11')&&!_0x1b6447[_0xcb50('0x12')]){var _0x20ea9e;_0x247751[_0xcb50('0x1b')][_0xcb50('0x1c')]({'where':{'id':_0x1b6447[_0xcb50('0x1d')]},'raw':!![]})['then'](function(_0x4f93d4){_0x20ea9e=_0x4f93d4;if(_0x20ea9e&&_0x20ea9e[_0xcb50('0x1e')]){switch(_0x20ea9e['type']){case'twilio':var _0x36d2d1=require(_0xcb50('0x1f'));if(_0x20ea9e[_0xcb50('0x20')]&&_0x20ea9e[_0xcb50('0x21')]&&_0x20ea9e[_0xcb50('0x22')]){var _0x5d93a7=new _0x36d2d1(_0x20ea9e[_0xcb50('0x20')],_0x20ea9e['authToken']);_0x5d93a7[_0xcb50('0x23')][_0xcb50('0x24')]({'body':_0x1b6447[_0xcb50('0xd')],'to':_0xcb50('0x25')+_0x1b6447[_0xcb50('0x22')],'from':_0xcb50('0x25')+_0x20ea9e[_0xcb50('0x22')],'statusCallback':_0x20ea9e[_0xcb50('0x26')]+_0xcb50('0x27')+_0x1b6447['id']+'/status?token='+_0x20ea9e['token']})[_0xcb50('0x17')](function(_0x3daebd){if(_0x3daebd[_0xcb50('0x28')]){return _0x23fa92['update']({'messageId':_0x3daebd['sid']});}})[_0xcb50('0x1a')](function(_0x151405){logger[_0xcb50('0x29')](_0xcb50('0x2a'),_0xcb50('0x2b'),_0xcb50('0x1f'),util[_0xcb50('0x2c')](_0x151405,{'showHidden':![],'depth':null}));});}else{logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xcb50('0x2b'),_0xcb50('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0xcb50('0x2d')](function(){_0x429f13();});}else{_0x429f13();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xe35c=['FULLTEXT','models','direction','toLowerCase','out','secret','isNil','findOne','WhatsappInteractionId','then','update','find','WhatsappAccountId','type','twilio','accountSid','messages','create','whatsapp:','phone','/api/whatsapp/messages/','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','error','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body'];(function(_0x13606d,_0x30f265){var _0x1b85b0=function(_0x285c1b){while(--_0x285c1b){_0x13606d['push'](_0x13606d['shift']());}};_0x1b85b0(++_0x30f265);}(_0xe35c,0xd5));var _0xce35=function(_0x278ef1,_0x12c8a6){_0x278ef1=_0x278ef1-0x0;var _0x1ea105=_0xe35c[_0x278ef1];return _0x1ea105;};'use strict';var _=require(_0xce35('0x0'));var util=require(_0xce35('0x1'));var logger=require(_0xce35('0x2'))(_0xce35('0x3'));var moment=require(_0xce35('0x4'));var BPromise=require(_0xce35('0x5'));var rp=require(_0xce35('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xce35('0x7'));var config=require(_0xce35('0x8'));var attributes=require(_0xce35('0x9'));module[_0xce35('0xa')]=function(_0x2bb00d,_0x36a67c){return _0x2bb00d[_0xce35('0xb')](_0xce35('0xc'),attributes,{'tableName':_0xce35('0xd'),'paranoid':![],'indexes':[{'name':_0xce35('0xe'),'fields':[_0xce35('0xe')]},{'name':_0xce35('0xf'),'fields':[_0xce35('0x10')],'type':_0xce35('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x315f84,_0x2ebeb9,_0x4048ae){var _0x252813=_0x2bb00d[_0xce35('0x12')];var _0x39f0ba=_0x315f84['get']({'plain':!![]});if(_0x39f0ba[_0xce35('0x13')][_0xce35('0x14')]()==='in'||_0x39f0ba[_0xce35('0x13')][_0xce35('0x14')]()===_0xce35('0x15')&&!_0x39f0ba[_0xce35('0x16')]&&!_[_0xce35('0x17')](_0x39f0ba['UserId'])){_0x252813['WhatsappInteraction'][_0xce35('0x18')]({'where':{'id':_0x39f0ba[_0xce35('0x19')]}})[_0xce35('0x1a')](function(_0x1fd7ce){if(_0x1fd7ce){_0x1fd7ce[_0xce35('0x1b')]({'lastMsgAt':_0x39f0ba['createdAt'],'lastMsgDirection':_0x39f0ba[_0xce35('0x13')][_0xce35('0x14')]()});}})['catch'](function(_0x2e4057){console['error'](_0x2e4057);});}if(_0x39f0ba[_0xce35('0x13')]===_0xce35('0x15')&&!_0x39f0ba[_0xce35('0x16')]){var _0x3a373e;_0x252813['WhatsappAccount'][_0xce35('0x1c')]({'where':{'id':_0x39f0ba[_0xce35('0x1d')]},'raw':!![]})[_0xce35('0x1a')](function(_0xee75d){_0x3a373e=_0xee75d;if(_0x3a373e&&_0x3a373e[_0xce35('0x1e')]){switch(_0x3a373e[_0xce35('0x1e')]){case _0xce35('0x1f'):var _0x46daa3=require('twilio');if(_0x3a373e[_0xce35('0x20')]&&_0x3a373e['authToken']&&_0x3a373e['phone']){var _0x5b537d=new _0x46daa3(_0x3a373e[_0xce35('0x20')],_0x3a373e['authToken']);_0x5b537d[_0xce35('0x21')][_0xce35('0x22')]({'body':_0x39f0ba[_0xce35('0x10')],'to':_0xce35('0x23')+_0x39f0ba['phone'],'from':_0xce35('0x23')+_0x3a373e[_0xce35('0x24')],'statusCallback':_0x3a373e['remote']+_0xce35('0x25')+_0x39f0ba['id']+'/status?token='+_0x3a373e['token']})[_0xce35('0x1a')](function(_0x3371be){if(_0x3371be[_0xce35('0x26')]){return _0x315f84[_0xce35('0x1b')]({'messageId':_0x3371be[_0xce35('0x26')]});}})['catch'](function(_0x26caab){logger['error'](_0xce35('0x27'),_0xce35('0x28'),_0xce35('0x1f'),util[_0xce35('0x29')](_0x26caab,{'showHidden':![],'depth':null}));});}else{logger[_0xce35('0x2a')](_0xce35('0x27'),_0xce35('0x28'),_0xce35('0x1f'),_0xce35('0x2b'));}break;}}})[_0xce35('0x2c')](function(){_0x4048ae();});}else{_0x4048ae();}}},'charset':'utf8mb4','collate':_0xce35('0x2d')});};
\ No newline at end of file
index 02e7e89..9b692d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b4=['WhatsappMessage,\x20%s,\x20%s','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage','body','options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','request','then','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x497df6,_0x4d0d21){var _0x59a708=function(_0x593ec9){while(--_0x593ec9){_0x497df6['push'](_0x497df6['shift']());}};_0x59a708(++_0x4d0d21);}(_0x88b4,0x69));var _0x488b=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0x88b4[_0x193ddf];return _0x5bc6df;};'use strict';var _=require(_0x488b('0x0'));var util=require(_0x488b('0x1'));var moment=require(_0x488b('0x2'));var BPromise=require(_0x488b('0x3'));var rs=require(_0x488b('0x4'));var fs=require('fs');var Redis=require(_0x488b('0x5'));var db=require(_0x488b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x488b('0x7'))(_0x488b('0x8'));var config=require(_0x488b('0x9'));var jayson=require(_0x488b('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x488b('0xb')]=_[_0x488b('0xc')](config['redis'],{'host':_0x488b('0xd'),'port':0x18eb});var socket=require(_0x488b('0xe'))(new Redis(config[_0x488b('0xb')]));require('./whatsappMessage.socket')['register'](socket);function respondWithRpcPromise(_0x441b7f,_0x2f80a8,_0x2c773d){return new BPromise(function(_0x30dddc,_0x3c2e8b){return client[_0x488b('0xf')](_0x441b7f,_0x2c773d)[_0x488b('0x10')](function(_0x4c30cf){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x2f80a8,_0x488b('0x11'));logger[_0x488b('0x12')](_0x488b('0x13'),_0x2f80a8,_0x488b('0x11'),JSON[_0x488b('0x14')](_0x4c30cf));if(_0x4c30cf[_0x488b('0x15')]){if(_0x4c30cf['error'][_0x488b('0x16')]===0x1f4){logger[_0x488b('0x15')](_0x488b('0x17'),_0x2f80a8,_0x4c30cf[_0x488b('0x15')]['message']);return _0x3c2e8b(_0x4c30cf[_0x488b('0x15')][_0x488b('0x18')]);}logger[_0x488b('0x15')](_0x488b('0x17'),_0x2f80a8,_0x4c30cf[_0x488b('0x15')][_0x488b('0x18')]);return _0x30dddc(_0x4c30cf['error'][_0x488b('0x18')]);}else{logger[_0x488b('0x19')](_0x488b('0x17'),_0x2f80a8,_0x488b('0x11'));_0x30dddc(_0x4c30cf[_0x488b('0x1a')]['message']);}})[_0x488b('0x1b')](function(_0x9be60b){logger[_0x488b('0x15')](_0x488b('0x17'),_0x2f80a8,_0x9be60b);_0x3c2e8b(_0x9be60b);});});}exports[_0x488b('0x1c')]=function(_0x961fce){var _0x3bc4f3=this;return new Promise(function(_0x832fc8,_0x1f92a8){return db[_0x488b('0x1d')]['create'](_0x961fce[_0x488b('0x1e')],{'raw':_0x961fce[_0x488b('0x1f')]?_0x961fce[_0x488b('0x1f')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x37c12b){logger[_0x488b('0x19')](_0x488b('0x1c'),_0x961fce);logger['debug'](_0x488b('0x1c'),_0x961fce,JSON[_0x488b('0x14')](_0x37c12b));_0x832fc8(_0x37c12b);})[_0x488b('0x1b')](function(_0x411916){logger[_0x488b('0x15')](_0x488b('0x1c'),_0x411916[_0x488b('0x18')],_0x961fce);_0x1f92a8(_0x3bc4f3['error'](0x1f4,_0x411916[_0x488b('0x18')]));});});};
\ No newline at end of file
+var _0x51cd=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappMessage,\x20%s,\x20%s','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','lodash','moment'];(function(_0x3af7a7,_0x88701d){var _0x36d47b=function(_0xf540f5){while(--_0xf540f5){_0x3af7a7['push'](_0x3af7a7['shift']());}};_0x36d47b(++_0x88701d);}(_0x51cd,0x9e));var _0xd51c=function(_0x5c188d,_0x3dde2c){_0x5c188d=_0x5c188d-0x0;var _0xc1cef=_0x51cd[_0x5c188d];return _0xc1cef;};'use strict';var _=require(_0xd51c('0x0'));var util=require('util');var moment=require(_0xd51c('0x1'));var BPromise=require(_0xd51c('0x2'));var rs=require(_0xd51c('0x3'));var fs=require('fs');var Redis=require(_0xd51c('0x4'));var db=require(_0xd51c('0x5'))['db'];var utils=require(_0xd51c('0x6'));var logger=require(_0xd51c('0x7'))('rpc');var config=require(_0xd51c('0x8'));var jayson=require(_0xd51c('0x9'));var client=jayson['client'][_0xd51c('0xa')]({'port':0x232a});config[_0xd51c('0xb')]=_[_0xd51c('0xc')](config['redis'],{'host':_0xd51c('0xd'),'port':0x18eb});var socket=require(_0xd51c('0xe'))(new Redis(config[_0xd51c('0xb')]));require('./whatsappMessage.socket')[_0xd51c('0xf')](socket);function respondWithRpcPromise(_0x2531ba,_0x3715e4,_0x393549){return new BPromise(function(_0x2cbb7b,_0x5e34c8){return client[_0xd51c('0x10')](_0x2531ba,_0x393549)[_0xd51c('0x11')](function(_0x7c9ed3){logger[_0xd51c('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x3715e4,'request\x20sent');logger[_0xd51c('0x13')](_0xd51c('0x14'),_0x3715e4,'request\x20sent',JSON[_0xd51c('0x15')](_0x7c9ed3));if(_0x7c9ed3[_0xd51c('0x16')]){if(_0x7c9ed3[_0xd51c('0x16')]['code']===0x1f4){logger['error'](_0xd51c('0x17'),_0x3715e4,_0x7c9ed3[_0xd51c('0x16')][_0xd51c('0x18')]);return _0x5e34c8(_0x7c9ed3[_0xd51c('0x16')][_0xd51c('0x18')]);}logger['error'](_0xd51c('0x17'),_0x3715e4,_0x7c9ed3[_0xd51c('0x16')][_0xd51c('0x18')]);return _0x2cbb7b(_0x7c9ed3[_0xd51c('0x16')][_0xd51c('0x18')]);}else{logger['info'](_0xd51c('0x17'),_0x3715e4,'request\x20sent');_0x2cbb7b(_0x7c9ed3[_0xd51c('0x19')][_0xd51c('0x18')]);}})[_0xd51c('0x1a')](function(_0x947acf){logger['error'](_0xd51c('0x17'),_0x3715e4,_0x947acf);_0x5e34c8(_0x947acf);});});}exports[_0xd51c('0x1b')]=function(_0x50d736){var _0x4b4de3=this;return new Promise(function(_0xe84085,_0x3952e2){return db[_0xd51c('0x1c')][_0xd51c('0x1d')](_0x50d736[_0xd51c('0x1e')],{'raw':_0x50d736[_0xd51c('0x1f')]?_0x50d736[_0xd51c('0x1f')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x24034e){logger[_0xd51c('0x12')](_0xd51c('0x1b'),_0x50d736);logger['debug'](_0xd51c('0x1b'),_0x50d736,JSON[_0xd51c('0x15')](_0x24034e));_0xe84085(_0x24034e);})[_0xd51c('0x1a')](function(_0x27859a){logger[_0xd51c('0x16')](_0xd51c('0x1b'),_0x27859a[_0xd51c('0x18')],_0x50d736);_0x3952e2(_0x4b4de3[_0xd51c('0x16')](0x1f4,_0x27859a['message']));});});};
\ No newline at end of file
index 4ae052f..1e2a435 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08a7=['emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','remove','update'];(function(_0x5d593f,_0x47c3d3){var _0x4a4ef7=function(_0x3a7689){while(--_0x3a7689){_0x5d593f['push'](_0x5d593f['shift']());}};_0x4a4ef7(++_0x47c3d3);}(_0x08a7,0x14d));var _0x708a=function(_0x281305,_0x2998d6){_0x281305=_0x281305-0x0;var _0x56ffbe=_0x08a7[_0x281305];return _0x56ffbe;};'use strict';var WhatsappMessageEvents=require(_0x708a('0x0'));var events=['save',_0x708a('0x1'),_0x708a('0x2')];function createListener(_0x34ff7c,_0x12f9fc){return function(_0x1832a8){_0x12f9fc[_0x708a('0x3')](_0x34ff7c,_0x1832a8);};}function removeListener(_0x133365,_0x469233){return function(){WhatsappMessageEvents[_0x708a('0x4')](_0x133365,_0x469233);};}exports[_0x708a('0x5')]=function(_0x4850ec){for(var _0x480662=0x0,_0x36de84=events[_0x708a('0x6')];_0x480662<_0x36de84;_0x480662++){var _0x943eb3=events[_0x480662];var _0x5599f4=createListener(_0x708a('0x7')+_0x943eb3,_0x4850ec);WhatsappMessageEvents['on'](_0x943eb3,_0x5599f4);}};
\ No newline at end of file
+var _0xfbf8=['update','emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x22fa70,_0x651174){var _0x38a1f7=function(_0x4e2e97){while(--_0x4e2e97){_0x22fa70['push'](_0x22fa70['shift']());}};_0x38a1f7(++_0x651174);}(_0xfbf8,0x19b));var _0x8fbf=function(_0x206cfc,_0x384503){_0x206cfc=_0x206cfc-0x0;var _0x3f99ba=_0xfbf8[_0x206cfc];return _0x3f99ba;};'use strict';var WhatsappMessageEvents=require(_0x8fbf('0x0'));var events=[_0x8fbf('0x1'),_0x8fbf('0x2'),_0x8fbf('0x3')];function createListener(_0x5612e3,_0x156a30){return function(_0x448c3b){_0x156a30[_0x8fbf('0x4')](_0x5612e3,_0x448c3b);};}function removeListener(_0x216f3e,_0x3316d7){return function(){WhatsappMessageEvents[_0x8fbf('0x5')](_0x216f3e,_0x3316d7);};}exports[_0x8fbf('0x6')]=function(_0x3bac6b){for(var _0x585460=0x0,_0x44b7e4=events[_0x8fbf('0x7')];_0x585460<_0x44b7e4;_0x585460++){var _0x50650a=events[_0x585460];var _0x2fdce2=createListener(_0x8fbf('0x8')+_0x50650a,_0x3bac6b);WhatsappMessageEvents['on'](_0x50650a,_0x2fdce2);}};
\ No newline at end of file
index 36df253..55efb1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9be=['getAgents','create','post','addTeams','put','update','delete','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','/:id/teams','/:id/users'];(function(_0x3a6aee,_0x2c7fff){var _0x30ce48=function(_0x280a5f){while(--_0x280a5f){_0x3a6aee['push'](_0x3a6aee['shift']());}};_0x30ce48(++_0x2c7fff);}(_0xd9be,0x1b9));var _0xed9b=function(_0x40eb5a,_0x365e63){_0x40eb5a=_0x40eb5a-0x0;var _0x149574=_0xd9be[_0x40eb5a];return _0x149574;};'use strict';var multer=require(_0xed9b('0x0'));var util=require(_0xed9b('0x1'));var path=require('path');var timeout=require(_0xed9b('0x2'));var express=require(_0xed9b('0x3'));var router=express[_0xed9b('0x4')]();var fs_extra=require(_0xed9b('0x5'));var auth=require(_0xed9b('0x6'));var interaction=require(_0xed9b('0x7'));var config=require('../../config/environment');var controller=require(_0xed9b('0x8'));router[_0xed9b('0x9')]('/',auth[_0xed9b('0xa')](),controller[_0xed9b('0xb')]);router['get'](_0xed9b('0xc'),auth[_0xed9b('0xa')](),controller[_0xed9b('0xd')]);router[_0xed9b('0x9')](_0xed9b('0xe'),auth[_0xed9b('0xa')](),controller['show']);router[_0xed9b('0x9')](_0xed9b('0xf'),auth[_0xed9b('0xa')](),controller['getMembers']);router[_0xed9b('0x9')](_0xed9b('0x10'),auth[_0xed9b('0xa')](),controller['getTeams']);router[_0xed9b('0x9')](_0xed9b('0x11'),auth[_0xed9b('0xa')](),controller[_0xed9b('0x12')]);router['post']('/',auth[_0xed9b('0xa')](),controller[_0xed9b('0x13')]);router[_0xed9b('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xed9b('0x15')]);router[_0xed9b('0x14')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0xed9b('0x16')](_0xed9b('0xe'),auth['isAuthenticated'](),controller[_0xed9b('0x17')]);router[_0xed9b('0x18')](_0xed9b('0xe'),auth[_0xed9b('0xa')](),controller['destroy']);router[_0xed9b('0x18')](_0xed9b('0x10'),auth[_0xed9b('0xa')](),controller[_0xed9b('0x19')]);router[_0xed9b('0x18')]('/:id/users',auth[_0xed9b('0xa')](),controller[_0xed9b('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xa1b4=['get','isAuthenticated','/describe','describe','show','getMembers','getAgents','create','post','/:id/teams','addTeams','addAgents','put','/:id','update','delete','removeTeams','/:id/users','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./whatsappQueue.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa1b4,0x83));var _0x4a1b=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa1b4[_0x3899d1];return _0xeb4a7d;};'use strict';var multer=require(_0x4a1b('0x0'));var util=require(_0x4a1b('0x1'));var path=require(_0x4a1b('0x2'));var timeout=require(_0x4a1b('0x3'));var express=require(_0x4a1b('0x4'));var router=express[_0x4a1b('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4a1b('0x6'));var config=require(_0x4a1b('0x7'));var controller=require(_0x4a1b('0x8'));router[_0x4a1b('0x9')]('/',auth[_0x4a1b('0xa')](),controller['index']);router[_0x4a1b('0x9')](_0x4a1b('0xb'),auth['isAuthenticated'](),controller[_0x4a1b('0xc')]);router[_0x4a1b('0x9')]('/:id',auth[_0x4a1b('0xa')](),controller[_0x4a1b('0xd')]);router['get']('/:id/members',auth[_0x4a1b('0xa')](),controller[_0x4a1b('0xe')]);router[_0x4a1b('0x9')]('/:id/teams',auth[_0x4a1b('0xa')](),controller['getTeams']);router['get']('/:id/users',auth[_0x4a1b('0xa')](),controller[_0x4a1b('0xf')]);router['post']('/',auth[_0x4a1b('0xa')](),controller[_0x4a1b('0x10')]);router[_0x4a1b('0x11')](_0x4a1b('0x12'),auth[_0x4a1b('0xa')](),controller[_0x4a1b('0x13')]);router[_0x4a1b('0x11')]('/:id/users',auth[_0x4a1b('0xa')](),controller[_0x4a1b('0x14')]);router[_0x4a1b('0x15')](_0x4a1b('0x16'),auth[_0x4a1b('0xa')](),controller[_0x4a1b('0x17')]);router[_0x4a1b('0x18')]('/:id',auth[_0x4a1b('0xa')](),controller['destroy']);router[_0x4a1b('0x18')](_0x4a1b('0x12'),auth[_0x4a1b('0xa')](),controller[_0x4a1b('0x19')]);router['delete'](_0x4a1b('0x1a'),auth[_0x4a1b('0xa')](),controller['removeAgents']);module[_0x4a1b('0x1b')]=router;
\ No newline at end of file
index 66b9c8e..1ce004f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['roundrobin','STRING','sequelize','exports','name','INTEGER','ENUM','beepall'];(function(_0x147c96,_0x309657){var _0x4ec711=function(_0x3cf7c9){while(--_0x3cf7c9){_0x147c96['push'](_0x147c96['shift']());}};_0x4ec711(++_0x309657);}(_0xb43b,0x1b2));var _0xbb43=function(_0x395792,_0x123fc2){_0x395792=_0x395792-0x0;var _0xba31dc=_0xb43b[_0x395792];return _0xba31dc;};'use strict';var Sequelize=require(_0xbb43('0x0'));module[_0xbb43('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xbb43('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xbb43('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xbb43('0x4')]('rrmemory',_0xbb43('0x5'),_0xbb43('0x6'))},'description':{'type':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0x5b02=['exports','STRING','name','rrmemory','roundrobin','sequelize'];(function(_0xf2a913,_0x4879f8){var _0x4a2aeb=function(_0x24c0c7){while(--_0x24c0c7){_0xf2a913['push'](_0xf2a913['shift']());}};_0x4a2aeb(++_0x4879f8);}(_0x5b02,0xe9));var _0x25b0=function(_0x1cb0af,_0x3a85cc){_0x1cb0af=_0x1cb0af-0x0;var _0x14bb46=_0x5b02[_0x1cb0af];return _0x14bb46;};'use strict';var Sequelize=require(_0x25b0('0x0'));module[_0x25b0('0x1')]={'name':{'type':Sequelize[_0x25b0('0x2')],'unique':_0x25b0('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x25b0('0x4'),'beepall',_0x25b0('0x5'))},'description':{'type':Sequelize[_0x25b0('0x2')]}};
\ No newline at end of file
index 84b5715..be89bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced3=['../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','WhatsappQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappQueues','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','hasOwnProperty','WhatsappQueueId','UserWhatsappQueue','UserId','agent','format','whatsappPause','findOne','Team','rawAttributes','nolimit','getTeams','ids','User','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','userWhatsappQueue:save','removeTeams','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','removeAgents','forEach','userWhatsappQueue:remove','addAgents','emit','isArray','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils'];(function(_0x38d56b,_0x2be93b){var _0x4046d2=function(_0x50cc6b){while(--_0x50cc6b){_0x38d56b['push'](_0x38d56b['shift']());}};_0x4046d2(++_0x2be93b);}(_0xced3,0xf7));var _0x3ced=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xced3[_0x39c734];return _0xb2a2f9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ced('0x0'));var zipdir=require(_0x3ced('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3ced('0x2'));var moment=require(_0x3ced('0x3'));var BPromise=require(_0x3ced('0x4'));var Mustache=require('mustache');var util=require(_0x3ced('0x5'));var path=require('path');var sox=require(_0x3ced('0x6'));var csv=require(_0x3ced('0x7'));var ejs=require(_0x3ced('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3ced('0x9'));var crypto=require(_0x3ced('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x3ced('0xb'));var toCsv=require(_0x3ced('0x7'));var querystring=require(_0x3ced('0xc'));var Papa=require('papaparse');var Redis=require(_0x3ced('0xd'));var authService=require(_0x3ced('0xe'));var qs=require(_0x3ced('0xf'));var as=require(_0x3ced('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ced('0x11'))('api');var utils=require(_0x3ced('0x12'));var config=require(_0x3ced('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3ced('0x14'))['db'];config[_0x3ced('0x15')]=_[_0x3ced('0x16')](config['redis'],{'host':_0x3ced('0x17'),'port':0x18eb});var socket=require(_0x3ced('0x18'))(new Redis(config[_0x3ced('0x15')]));require(_0x3ced('0x19'))[_0x3ced('0x1a')](socket);function respondWithStatusCode(_0x4a2c88,_0x19623a){_0x19623a=_0x19623a||0xcc;return function(_0x57f00b){if(_0x57f00b){return _0x4a2c88[_0x3ced('0x1b')](_0x19623a);}return _0x4a2c88[_0x3ced('0x1c')](_0x19623a)[_0x3ced('0x1d')]();};}function respondWithResult(_0x131b51,_0x106659){_0x106659=_0x106659||0xc8;return function(_0x5120eb){if(_0x5120eb){return _0x131b51['status'](_0x106659)[_0x3ced('0x1e')](_0x5120eb);}};}function respondWithFilteredResult(_0x3a0250,_0x36ef24){return function(_0x77a9c5){if(_0x77a9c5){var _0x2b2dfb=typeof _0x36ef24[_0x3ced('0x1f')]==='undefined'&&typeof _0x36ef24['limit']===_0x3ced('0x20');var _0x175d0a=_0x77a9c5[_0x3ced('0x21')];var _0x2f26bf=_0x2b2dfb?0x0:_0x36ef24[_0x3ced('0x1f')];var _0x56620c=_0x2b2dfb?_0x77a9c5['count']:_0x36ef24[_0x3ced('0x1f')]+_0x36ef24[_0x3ced('0x22')];var _0x1bf2f7;if(_0x56620c>=_0x175d0a){_0x56620c=_0x175d0a;_0x1bf2f7=0xc8;}else{_0x1bf2f7=0xce;}_0x3a0250[_0x3ced('0x1c')](_0x1bf2f7);return _0x3a0250[_0x3ced('0x23')](_0x3ced('0x24'),_0x2f26bf+'-'+_0x56620c+'/'+_0x175d0a)[_0x3ced('0x1e')](_0x77a9c5);}return null;};}function patchUpdates(_0x1816fa){return function(_0x2ed06d){try{jsonpatch[_0x3ced('0x25')](_0x2ed06d,_0x1816fa,!![]);}catch(_0x10b090){return BPromise[_0x3ced('0x26')](_0x10b090);}return _0x2ed06d['save']();};}function saveUpdates(_0x3815cf,_0x45ecb4){return function(_0x3a4f7){if(_0x3a4f7){return _0x3a4f7[_0x3ced('0x27')](_0x3815cf)[_0x3ced('0x28')](function(_0x328448){return _0x328448;});}return null;};}function removeEntity(_0x40c874,_0x22b025){return function(_0x4bd540){if(_0x4bd540){return _0x4bd540[_0x3ced('0x29')]()[_0x3ced('0x28')](function(){var _0x4a375d=_0x4bd540[_0x3ced('0x2a')]({'plain':!![]});var _0x51bab0='WhatsappQueues';return db[_0x3ced('0x2b')]['destroy']({'where':{'type':_0x51bab0,'resourceId':_0x4a375d['id']}})[_0x3ced('0x28')](function(){return _0x4bd540;});})[_0x3ced('0x28')](function(){_0x40c874[_0x3ced('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11f52f,_0x31caca){return function(_0x2b54c0){if(!_0x2b54c0){_0x11f52f['sendStatus'](0x194);}return _0x2b54c0;};}function handleError(_0x7fe958,_0x1d38ab){_0x1d38ab=_0x1d38ab||0x1f4;return function(_0x149e04){logger['error'](_0x149e04[_0x3ced('0x2c')]);if(_0x149e04[_0x3ced('0x2d')]){delete _0x149e04['name'];}_0x7fe958[_0x3ced('0x1c')](_0x1d38ab)[_0x3ced('0x2e')](_0x149e04);};}exports[_0x3ced('0x2f')]=function(_0x4e17a4,_0x301c5c){var _0x3d9943={},_0x186845={},_0x4c77e5={'count':0x0,'rows':[]};var _0x41e8a9=_[_0x3ced('0x30')](db[_0x3ced('0x31')]['rawAttributes'],function(_0x3279d5){return{'name':_0x3279d5[_0x3ced('0x32')],'type':_0x3279d5[_0x3ced('0x33')][_0x3ced('0x34')]};});_0x186845[_0x3ced('0x35')]=_['map'](_0x41e8a9,_0x3ced('0x2d'));_0x186845[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x4e17a4['query']);_0x186845[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x186845[_0x3ced('0x35')],_0x186845[_0x3ced('0x36')]);_0x3d9943[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x186845[_0x3ced('0x35')],qs[_0x3ced('0x3b')](_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x3d9943['attributes']=_0x3d9943[_0x3ced('0x3a')][_0x3ced('0x3c')]?_0x3d9943[_0x3ced('0x3a')]:_0x186845[_0x3ced('0x35')];if(!_0x4e17a4[_0x3ced('0x36')]['hasOwnProperty']('nolimit')){_0x3d9943[_0x3ced('0x22')]=qs[_0x3ced('0x22')](_0x4e17a4['query']['limit']);_0x3d9943[_0x3ced('0x1f')]=qs[_0x3ced('0x1f')](_0x4e17a4[_0x3ced('0x36')]['offset']);}_0x3d9943[_0x3ced('0x3d')]=qs[_0x3ced('0x3e')](_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x3d9943[_0x3ced('0x3f')]=qs[_0x3ced('0x38')](_[_0x3ced('0x40')](_0x4e17a4['query'],_0x186845[_0x3ced('0x38')]),_0x41e8a9);if(_0x4e17a4[_0x3ced('0x36')]['filter']){_0x3d9943[_0x3ced('0x3f')]=_[_0x3ced('0x41')](_0x3d9943['where'],{'$or':_['map'](_0x41e8a9,function(_0x123f66){if(_0x123f66[_0x3ced('0x33')]!==_0x3ced('0x42')){var _0x1f63fa={};_0x1f63fa[_0x123f66[_0x3ced('0x2d')]]={'$like':'%'+_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x43')]+'%'};return _0x1f63fa;}})});}_0x3d9943=_[_0x3ced('0x41')]({},_0x3d9943,_0x4e17a4[_0x3ced('0x44')]);var _0x585a68={'where':_0x3d9943[_0x3ced('0x3f')]};return db[_0x3ced('0x31')][_0x3ced('0x21')](_0x585a68)[_0x3ced('0x28')](function(_0x1502f1){_0x4c77e5[_0x3ced('0x21')]=_0x1502f1;if(_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x45')]){_0x3d9943['include']=[{'all':!![]}];}return db['WhatsappQueue'][_0x3ced('0x46')](_0x3d9943);})[_0x3ced('0x28')](function(_0x5bc24d){_0x4c77e5[_0x3ced('0x47')]=_0x5bc24d;return _0x4c77e5;})[_0x3ced('0x28')](respondWithFilteredResult(_0x301c5c,_0x3d9943))['catch'](handleError(_0x301c5c,null));};exports['show']=function(_0x156a04,_0x2cb4ee){var _0x4d9857={'raw':!![],'where':{'id':_0x156a04[_0x3ced('0x48')]['id']}},_0x531766={};_0x531766[_0x3ced('0x35')]=_['keys'](db[_0x3ced('0x31')]['rawAttributes']);_0x531766[_0x3ced('0x36')]=_['keys'](_0x156a04['query']);_0x531766['filters']=_[_0x3ced('0x39')](_0x531766[_0x3ced('0x35')],_0x531766[_0x3ced('0x36')]);_0x4d9857[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x531766[_0x3ced('0x35')],qs[_0x3ced('0x3b')](_0x156a04[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x4d9857['attributes']=_0x4d9857[_0x3ced('0x3a')][_0x3ced('0x3c')]?_0x4d9857[_0x3ced('0x3a')]:_0x531766[_0x3ced('0x35')];if(_0x156a04['query'][_0x3ced('0x45')]){_0x4d9857['include']=[{'all':!![]}];}_0x4d9857=_[_0x3ced('0x41')]({},_0x4d9857,_0x156a04[_0x3ced('0x44')]);return db['WhatsappQueue'][_0x3ced('0x49')](_0x4d9857)[_0x3ced('0x28')](handleEntityNotFound(_0x2cb4ee,null))[_0x3ced('0x28')](respondWithResult(_0x2cb4ee,null))[_0x3ced('0x4a')](handleError(_0x2cb4ee,null));};exports[_0x3ced('0x4b')]=function(_0x37ce55,_0x4b552a){return db[_0x3ced('0x31')][_0x3ced('0x4b')](_0x37ce55[_0x3ced('0x4c')],{})['then'](function(_0x3f60d1){var _0x436f07=_0x37ce55[_0x3ced('0x4d')][_0x3ced('0x2a')]({'plain':!![]});if(!_0x436f07)throw new Error(_0x3ced('0x4e'));if(_0x436f07[_0x3ced('0x4f')]===_0x3ced('0x4d')){var _0x33288e=_0x3f60d1[_0x3ced('0x2a')]({'plain':!![]});var _0x1180ed=_0x3ced('0x50');return db['UserProfileSection'][_0x3ced('0x49')]({'where':{'name':_0x1180ed,'userProfileId':_0x436f07[_0x3ced('0x51')]},'raw':!![]})['then'](function(_0x58b6ff){if(_0x58b6ff&&_0x58b6ff['autoAssociation']===0x0){return db[_0x3ced('0x2b')][_0x3ced('0x4b')]({'name':_0x33288e[_0x3ced('0x2d')],'resourceId':_0x33288e['id'],'type':_0x58b6ff[_0x3ced('0x2d')],'sectionId':_0x58b6ff['id']},{})[_0x3ced('0x28')](function(){return _0x3f60d1;});}else{return _0x3f60d1;}})[_0x3ced('0x4a')](function(_0x2dc4ba){logger[_0x3ced('0x52')](_0x3ced('0x53'),_0x2dc4ba);throw _0x2dc4ba;});}return _0x3f60d1;})['then'](respondWithResult(_0x4b552a,0xc9))['catch'](handleError(_0x4b552a,null));};exports[_0x3ced('0x27')]=function(_0x5ceb18,_0x3cdacf){if(_0x5ceb18['body']['id']){delete _0x5ceb18['body']['id'];}return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5ceb18['params']['id']}})['then'](handleEntityNotFound(_0x3cdacf,null))[_0x3ced('0x28')](saveUpdates(_0x5ceb18['body'],null))[_0x3ced('0x28')](respondWithResult(_0x3cdacf,null))['catch'](handleError(_0x3cdacf,null));};exports['destroy']=function(_0x4338a6,_0x44a573){return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x4338a6[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x44a573,null))[_0x3ced('0x28')](removeEntity(_0x44a573,null))[_0x3ced('0x4a')](handleError(_0x44a573,null));};exports['describe']=function(_0x1f8020,_0x157c9e){return db['WhatsappQueue'][_0x3ced('0x54')]()['then'](respondWithResult(_0x157c9e,null))[_0x3ced('0x4a')](handleError(_0x157c9e,null));};exports[_0x3ced('0x55')]=function(_0x2380b2,_0x227e54,_0x169e04){var _0x420566={'raw':!![],'where':{}},_0x30ef0d={},_0x37bf4f;return db[_0x3ced('0x31')]['findOne']({'where':{'id':_0x2380b2[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x227e54,null))[_0x3ced('0x28')](function(_0x5bc862){if(_0x5bc862){_0x37bf4f=_0x5bc862['get']({'plain':!![]});_0x30ef0d[_0x3ced('0x35')]=_[_0x3ced('0x37')](db['UserWhatsappQueue']['rawAttributes']);_0x30ef0d[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x2380b2['query']);_0x30ef0d[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x30ef0d['model'],_0x30ef0d[_0x3ced('0x36')]);_0x420566[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x30ef0d[_0x3ced('0x35')],qs['fields'](_0x2380b2['query'][_0x3ced('0x3b')]));_0x420566['attributes']=_0x420566['attributes'][_0x3ced('0x3c')]?_0x420566[_0x3ced('0x3a')]:_0x30ef0d[_0x3ced('0x35')];if(!_0x2380b2['query'][_0x3ced('0x56')]('nolimit')){_0x420566[_0x3ced('0x22')]=qs['limit'](_0x2380b2[_0x3ced('0x36')][_0x3ced('0x22')]);_0x420566[_0x3ced('0x1f')]=qs[_0x3ced('0x1f')](_0x2380b2[_0x3ced('0x36')][_0x3ced('0x1f')]);}_0x420566['order']=qs[_0x3ced('0x3e')](_0x2380b2[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x420566['where']=qs[_0x3ced('0x38')](_[_0x3ced('0x40')](_0x2380b2[_0x3ced('0x36')],_0x30ef0d['filters']));_0x420566[_0x3ced('0x3f')][_0x3ced('0x57')]=_0x5bc862['id'];if(_0x2380b2['query'][_0x3ced('0x43')]){_0x420566[_0x3ced('0x3f')]=_[_0x3ced('0x41')](_0x420566[_0x3ced('0x3f')],{'$or':_['map'](_0x420566[_0x3ced('0x3a')],function(_0x40d986){var _0x4632c5={};_0x4632c5[_0x40d986]={'$like':'%'+_0x2380b2[_0x3ced('0x36')]['filter']+'%'};return _0x4632c5;})});}_0x420566=_[_0x3ced('0x41')]({},_0x420566,_0x2380b2['options']);return db[_0x3ced('0x58')][_0x3ced('0x46')](_0x420566);}})[_0x3ced('0x28')](function(_0x1890c9){if(_0x1890c9){return db['User']['findAndCountAll']({'where':{'id':_[_0x3ced('0x30')](_0x1890c9,_0x3ced('0x59')),'role':_0x3ced('0x5a')},'attributes':['id','name','whatsappPause','updatedAt','createdAt']});}})[_0x3ced('0x28')](function(_0x52e46b){if(_0x52e46b){return{'count':_0x52e46b[_0x3ced('0x21')],'rows':_[_0x3ced('0x30')](_0x52e46b[_0x3ced('0x47')],function(_0x562b2d){return{'membername':_0x562b2d[_0x3ced('0x2d')],'UserId':_0x562b2d['id'],'queue_name':_0x37bf4f[_0x3ced('0x2d')],'WhatsappQueueId':_0x37bf4f['id'],'interface':util[_0x3ced('0x5b')]('%s/%s','SIP',_0x562b2d[_0x3ced('0x2d')]),'penalty':0x0,'paused':_0x562b2d[_0x3ced('0x5c')],'createdAt':_0x562b2d['createdAt'],'updatedAt':_0x562b2d['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x227e54,_0x420566))[_0x3ced('0x4a')](handleError(_0x227e54,null));};exports['getTeams']=function(_0x5e47b9,_0x53deb3,_0x4aea02){var _0x395320={};var _0x2dae4f={};var _0x58e82b;var _0x30f2f4;return db['WhatsappQueue'][_0x3ced('0x5d')]({'where':{'id':_0x5e47b9[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x53deb3,null))[_0x3ced('0x28')](function(_0x55a2d7){if(_0x55a2d7){_0x58e82b=_0x55a2d7;_0x2dae4f[_0x3ced('0x35')]=_['keys'](db[_0x3ced('0x5e')][_0x3ced('0x5f')]);_0x2dae4f[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x5e47b9[_0x3ced('0x36')]);_0x2dae4f[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x2dae4f[_0x3ced('0x35')],_0x2dae4f[_0x3ced('0x36')]);_0x395320[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x2dae4f[_0x3ced('0x35')],qs['fields'](_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x395320['attributes']=_0x395320[_0x3ced('0x3a')]['length']?_0x395320['attributes']:_0x2dae4f['model'];_0x395320['order']=qs[_0x3ced('0x3e')](_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x395320[_0x3ced('0x3f')]=qs[_0x3ced('0x38')](_[_0x3ced('0x40')](_0x5e47b9['query'],_0x2dae4f['filters']));if(_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x43')]){_0x395320[_0x3ced('0x3f')]=_['merge'](_0x395320[_0x3ced('0x3f')],{'$or':_[_0x3ced('0x30')](_0x395320[_0x3ced('0x3a')],function(_0x2e84ca){var _0x48a4d0={};_0x48a4d0[_0x2e84ca]={'$like':'%'+_0x5e47b9['query'][_0x3ced('0x43')]+'%'};return _0x48a4d0;})});}_0x395320=_[_0x3ced('0x41')]({},_0x395320,_0x5e47b9[_0x3ced('0x44')]);return _0x58e82b['getTeams'](_0x395320);}})[_0x3ced('0x28')](function(_0x5bc44e){if(_0x5bc44e){_0x30f2f4=_0x5bc44e['length'];if(!_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x56')](_0x3ced('0x60'))){_0x395320[_0x3ced('0x22')]=qs['limit'](_0x5e47b9[_0x3ced('0x36')]['limit']);_0x395320[_0x3ced('0x1f')]=qs[_0x3ced('0x1f')](_0x5e47b9[_0x3ced('0x36')]['offset']);}return _0x58e82b[_0x3ced('0x61')](_0x395320);}})[_0x3ced('0x28')](function(_0x3882c7){if(_0x3882c7){return _0x3882c7?{'count':_0x30f2f4,'rows':_0x3882c7}:null;}})['then'](respondWithResult(_0x53deb3,null))[_0x3ced('0x4a')](handleError(_0x53deb3,null));};exports['addTeams']=function(_0x33a0c2,_0x2c8f51,_0x6f166b){var _0x56b953=_0x33a0c2[_0x3ced('0x4c')][_0x3ced('0x62')];return db[_0x3ced('0x5e')][_0x3ced('0x46')]({'where':{'id':_0x56b953},'attributes':['id'],'include':[{'model':db[_0x3ced('0x63')],'as':_0x3ced('0x64'),'attributes':['id',_0x3ced('0x2d'),_0x3ced('0x65'),_0x3ced('0x66'),_0x3ced('0x67')],'raw':!![]}]})[_0x3ced('0x28')](function(_0x92f427){if(_0x92f427){var _0x5d148b=_['flatMap'](_0x92f427,function(_0x33ab97){var _0x43dce5=_0x33ab97[_0x3ced('0x2a')]({'plain':!![]});return _0x43dce5[_0x3ced('0x64')];});return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x33a0c2[_0x3ced('0x48')]['id']}})['then'](function(_0x22dd50){return db[_0x3ced('0x68')][_0x3ced('0x69')](function(_0xfdefc6){return _0x22dd50['addTeams'](_0x56b953,{'transaction':_0xfdefc6})[_0x3ced('0x28')](function(){return BPromise[_0x3ced('0x6a')](_0x5d148b,function(_0x37b3e2){return db[_0x3ced('0x58')][_0x3ced('0x6b')]({'where':{'UserId':_0x37b3e2['id'],'WhatsappQueueId':_0x33a0c2[_0x3ced('0x48')]['id']},'transaction':_0xfdefc6});});})[_0x3ced('0x28')](function(){_0x5d148b['forEach'](function(_0x2ceb5c){socket['emit'](_0x3ced('0x6c'),{'UserId':_0x2ceb5c['id'],'WhatsappQueueId':_0x22dd50['id']});});});});});}})[_0x3ced('0x28')](respondWithStatusCode(_0x2c8f51,null))[_0x3ced('0x4a')](handleError(_0x2c8f51,null));};exports[_0x3ced('0x6d')]=function(_0x5e6477,_0x5ccfd5,_0x318422){return db['Team']['findAll']({'where':{'id':_0x5e6477[_0x3ced('0x36')][_0x3ced('0x62')]},'attributes':['id'],'include':[{'model':db[_0x3ced('0x63')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x3ced('0x28')](handleEntityNotFound(_0x5ccfd5,null))[_0x3ced('0x28')](function(_0x5ecd72){var _0xc94710=_[_0x3ced('0x30')](_0x5ecd72,'id');var _0x1b900e=[];var _0x5641d5=[];var _0x474ca2=squel['select']();_0x474ca2['field']('tq.TeamId')['from'](_0x3ced('0x6e'),'tq')[_0x3ced('0x6f')]('user_has_teams','ut',_0x3ced('0x70'))['where'](_0x3ced('0x71'),_0x5e6477[_0x3ced('0x48')]['id']);for(var _0x3d555e=0x0;_0x3d555e<_0x5ecd72[_0x3ced('0x3c')];_0x3d555e+=0x1){let _0x5cea2a=_0x5ecd72[_0x3d555e];for(var _0x111989=0x0;_0x111989<_0x5cea2a[_0x3ced('0x64')][_0x3ced('0x3c')];_0x111989+=0x1){let _0x28876c=_0x5cea2a[_0x3ced('0x64')][_0x111989];var _0x1439a0=_0x474ca2[_0x3ced('0x72')]();_0x1439a0[_0x3ced('0x3f')](_0x3ced('0x73'),_0x28876c['id']);_0x5641d5[_0x3ced('0x74')](db[_0x3ced('0x68')][_0x3ced('0x36')](_0x1439a0[_0x3ced('0x75')](),{'type':db['sequelize'][_0x3ced('0x76')][_0x3ced('0x77')]})[_0x3ced('0x28')](function(_0x53021a){if(_0x53021a[_0x3ced('0x3c')]===0x1){return _0x28876c['id'];}else{var _0x16ebea=_[_0x3ced('0x78')](_[_0x3ced('0x30')](_0x53021a,_0x3ced('0x79')),function(_0x5b8b9e){return _[_0x3ced('0x7a')](_0xc94710,_0x5b8b9e);});if(_0x16ebea){return _0x28876c['id'];}}}));}}return BPromise[_0x3ced('0x7b')](_0x5641d5)[_0x3ced('0x28')](function(_0x42c20b){_0x1b900e=_(_0x1b900e)['union'](_0x42c20b)[_0x3ced('0x7c')]()[_0x3ced('0x7d')]();return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5e6477[_0x3ced('0x48')]['id']}})['then'](function(_0x2ac1e6){return db[_0x3ced('0x68')][_0x3ced('0x69')](function(_0x5274ad){return _0x2ac1e6['removeTeams'](_0x5e6477[_0x3ced('0x36')]['ids'],{'transaction':_0x5274ad})[_0x3ced('0x28')](function(){if(!_['isEmpty'](_0x1b900e)){return _0x2ac1e6[_0x3ced('0x7e')](_0x1b900e,{'transaction':_0x5274ad});}})[_0x3ced('0x28')](function(){_0x1b900e[_0x3ced('0x7f')](function(_0x2e7c69){socket['emit'](_0x3ced('0x80'),{'UserId':_0x2e7c69,'WhatsappQueueId':_0x2ac1e6['id']});});});});});});})['then'](respondWithStatusCode(_0x5ccfd5,null))['catch'](handleError(_0x5ccfd5,null));};exports[_0x3ced('0x81')]=function(_0x5b87aa,_0x52d472,_0x164c43){return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5b87aa[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x52d472,null))[_0x3ced('0x28')](function(_0x4f71b5){if(_0x4f71b5){return _0x4f71b5['addAgents'](_0x5b87aa[_0x3ced('0x4c')][_0x3ced('0x62')],_['omit'](_0x5b87aa['body'],[_0x3ced('0x62'),'id'])||{})['spread'](function(_0x2f1577){for(var _0x3818be=0x0;_0x3818be<_0x5b87aa[_0x3ced('0x4c')][_0x3ced('0x62')][_0x3ced('0x3c')];_0x3818be+=0x1){socket[_0x3ced('0x82')](_0x3ced('0x6c'),{'UserId':Number(_0x5b87aa[_0x3ced('0x4c')][_0x3ced('0x62')][_0x3818be]),'WhatsappQueueId':Number(_0x5b87aa[_0x3ced('0x48')]['id'])});}return _0x2f1577;});}})[_0x3ced('0x28')](respondWithResult(_0x52d472,null))[_0x3ced('0x4a')](handleError(_0x52d472,null));};exports[_0x3ced('0x7e')]=function(_0x5c7f78,_0x485c77,_0x5c4b07){return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5c7f78[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x485c77,null))[_0x3ced('0x28')](function(_0x1f2b1c){if(_0x1f2b1c){return _0x1f2b1c[_0x3ced('0x7e')](_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')])['then'](function(){if(_[_0x3ced('0x83')](_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')])){for(var _0x3ee390=0x0;_0x3ee390<_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')]['length'];_0x3ee390+=0x1){socket[_0x3ced('0x82')](_0x3ced('0x80'),{'UserId':Number(_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')][_0x3ee390]),'WhatsappQueueId':Number(_0x5c7f78[_0x3ced('0x48')]['id'])});}}else{socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')]),'WhatsappQueueId':Number(_0x5c7f78[_0x3ced('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x485c77,null))[_0x3ced('0x4a')](handleError(_0x485c77,null));};exports[_0x3ced('0x84')]=function(_0x47e233,_0x4d00b9,_0x2e21ad){var _0x3525f2={};var _0x1c5034={};var _0x4f4b92;var _0xea1c9d;return db['WhatsappQueue'][_0x3ced('0x5d')]({'where':{'id':_0x47e233[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x4d00b9,null))[_0x3ced('0x28')](function(_0x109535){if(_0x109535){_0x4f4b92=_0x109535;_0x1c5034[_0x3ced('0x35')]=_[_0x3ced('0x37')](db[_0x3ced('0x63')][_0x3ced('0x5f')]);_0x1c5034[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x47e233['query']);_0x1c5034[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x1c5034[_0x3ced('0x35')],_0x1c5034[_0x3ced('0x36')]);_0x3525f2[_0x3ced('0x3a')]=_['intersection'](_0x1c5034[_0x3ced('0x35')],qs[_0x3ced('0x3b')](_0x47e233[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x3525f2['attributes']=_0x3525f2[_0x3ced('0x3a')]['length']?_0x3525f2[_0x3ced('0x3a')]:_0x1c5034[_0x3ced('0x35')];_0x3525f2[_0x3ced('0x3d')]=qs['sort'](_0x47e233[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x3525f2['where']=qs[_0x3ced('0x38')](_['pick'](_0x47e233['query'],_0x1c5034[_0x3ced('0x38')]));if(_0x47e233[_0x3ced('0x36')][_0x3ced('0x43')]){_0x3525f2[_0x3ced('0x3f')]=_[_0x3ced('0x41')](_0x3525f2['where'],{'$or':_[_0x3ced('0x30')](_0x3525f2[_0x3ced('0x3a')],function(_0x138710){var _0x44639a={};_0x44639a[_0x138710]={'$like':'%'+_0x47e233[_0x3ced('0x36')][_0x3ced('0x43')]+'%'};return _0x44639a;})});}_0x3525f2=_[_0x3ced('0x41')]({},_0x3525f2,_0x47e233['options']);return _0x4f4b92[_0x3ced('0x84')](_0x3525f2);}})[_0x3ced('0x28')](function(_0x2c7f1a){if(_0x2c7f1a){_0xea1c9d=_0x2c7f1a[_0x3ced('0x3c')];if(!_0x47e233['query'][_0x3ced('0x56')](_0x3ced('0x60'))){_0x3525f2['limit']=qs[_0x3ced('0x22')](_0x47e233[_0x3ced('0x36')][_0x3ced('0x22')]);_0x3525f2['offset']=qs[_0x3ced('0x1f')](_0x47e233['query'][_0x3ced('0x1f')]);}return _0x4f4b92[_0x3ced('0x84')](_0x3525f2);}})['then'](function(_0x422272){if(_0x422272){return _0x422272?{'count':_0xea1c9d,'rows':_0x422272}:null;}})[_0x3ced('0x28')](respondWithResult(_0x4d00b9,null))[_0x3ced('0x4a')](handleError(_0x4d00b9,null));};
\ No newline at end of file
+var _0x8945=['getAgents','eml-format','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','destroy','get','WhatsappQueues','then','end','sendStatus','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','describe','getMembers','findOne','UserWhatsappQueue','WhatsappQueueId','findAll','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','SIP','whatsappPause','getTeams','Team','addTeams','ids','online','interface','Agents','find','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread'];(function(_0x4afc92,_0x36f2ea){var _0x39ed8b=function(_0x15d826){while(--_0x15d826){_0x4afc92['push'](_0x4afc92['shift']());}};_0x39ed8b(++_0x36f2ea);}(_0x8945,0x97));var _0x5894=function(_0x26e7ba,_0x1cd7a7){_0x26e7ba=_0x26e7ba-0x0;var _0x286ad0=_0x8945[_0x26e7ba];return _0x286ad0;};'use strict';var emlformat=require(_0x5894('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5894('0x1'));var rp=require(_0x5894('0x2'));var moment=require(_0x5894('0x3'));var BPromise=require(_0x5894('0x4'));var Mustache=require(_0x5894('0x5'));var util=require(_0x5894('0x6'));var path=require(_0x5894('0x7'));var sox=require(_0x5894('0x8'));var csv=require(_0x5894('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5894('0xa'));var _=require(_0x5894('0xb'));var squel=require(_0x5894('0xc'));var crypto=require(_0x5894('0xd'));var jsforce=require(_0x5894('0xe'));var deskjs=require(_0x5894('0xf'));var toCsv=require(_0x5894('0x9'));var querystring=require(_0x5894('0x10'));var Papa=require(_0x5894('0x11'));var Redis=require(_0x5894('0x12'));var authService=require(_0x5894('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5894('0x14'));var logger=require(_0x5894('0x15'))(_0x5894('0x16'));var utils=require(_0x5894('0x17'));var config=require(_0x5894('0x18'));var licenseUtil=require(_0x5894('0x19'));var db=require(_0x5894('0x1a'))['db'];config[_0x5894('0x1b')]=_[_0x5894('0x1c')](config[_0x5894('0x1b')],{'host':_0x5894('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5894('0x1b')]));require('./whatsappQueue.socket')[_0x5894('0x1e')](socket);function respondWithStatusCode(_0x2011bc,_0x4e0e3d){_0x4e0e3d=_0x4e0e3d||0xcc;return function(_0x2ba62f){if(_0x2ba62f){return _0x2011bc['sendStatus'](_0x4e0e3d);}return _0x2011bc[_0x5894('0x1f')](_0x4e0e3d)['end']();};}function respondWithResult(_0x20bc45,_0x5eb6eb){_0x5eb6eb=_0x5eb6eb||0xc8;return function(_0x49a614){if(_0x49a614){return _0x20bc45[_0x5894('0x1f')](_0x5eb6eb)[_0x5894('0x20')](_0x49a614);}};}function respondWithFilteredResult(_0x17ed09,_0x293aa1){return function(_0x4fb43c){if(_0x4fb43c){var _0x29fdf7=typeof _0x293aa1['offset']===_0x5894('0x21')&&typeof _0x293aa1[_0x5894('0x22')]===_0x5894('0x21');var _0x2a0204=_0x4fb43c[_0x5894('0x23')];var _0x350fe3=_0x29fdf7?0x0:_0x293aa1[_0x5894('0x24')];var _0x57de47=_0x29fdf7?_0x4fb43c['count']:_0x293aa1[_0x5894('0x24')]+_0x293aa1[_0x5894('0x22')];var _0x3d138f;if(_0x57de47>=_0x2a0204){_0x57de47=_0x2a0204;_0x3d138f=0xc8;}else{_0x3d138f=0xce;}_0x17ed09[_0x5894('0x1f')](_0x3d138f);return _0x17ed09[_0x5894('0x25')](_0x5894('0x26'),_0x350fe3+'-'+_0x57de47+'/'+_0x2a0204)[_0x5894('0x20')](_0x4fb43c);}return null;};}function patchUpdates(_0x545a8d){return function(_0x15308b){try{jsonpatch[_0x5894('0x27')](_0x15308b,_0x545a8d,!![]);}catch(_0x100b1c){return BPromise['reject'](_0x100b1c);}return _0x15308b['save']();};}function saveUpdates(_0x36502b,_0xc051ab){return function(_0x39c0dd){if(_0x39c0dd){return _0x39c0dd[_0x5894('0x28')](_0x36502b)['then'](function(_0x4dbcf7){return _0x4dbcf7;});}return null;};}function removeEntity(_0x1a5fbb,_0x51afb3){return function(_0x4466b7){if(_0x4466b7){return _0x4466b7[_0x5894('0x29')]()['then'](function(){var _0x30fcf7=_0x4466b7[_0x5894('0x2a')]({'plain':!![]});var _0x568624=_0x5894('0x2b');return db['UserProfileResource'][_0x5894('0x29')]({'where':{'type':_0x568624,'resourceId':_0x30fcf7['id']}})[_0x5894('0x2c')](function(){return _0x4466b7;});})[_0x5894('0x2c')](function(){_0x1a5fbb[_0x5894('0x1f')](0xcc)[_0x5894('0x2d')]();});}};}function handleEntityNotFound(_0x47fcd0,_0x32c27c){return function(_0xe7882c){if(!_0xe7882c){_0x47fcd0[_0x5894('0x2e')](0x194);}return _0xe7882c;};}function handleError(_0x14f2f2,_0x8f44d3){_0x8f44d3=_0x8f44d3||0x1f4;return function(_0x545168){logger[_0x5894('0x2f')](_0x545168[_0x5894('0x30')]);if(_0x545168[_0x5894('0x31')]){delete _0x545168['name'];}_0x14f2f2['status'](_0x8f44d3)[_0x5894('0x32')](_0x545168);};}exports[_0x5894('0x33')]=function(_0xf445f4,_0x254caf){var _0x95bfc5={},_0xd3b3e1={},_0x539561={'count':0x0,'rows':[]};var _0x429f8b=_[_0x5894('0x34')](db[_0x5894('0x35')][_0x5894('0x36')],function(_0x17141c){return{'name':_0x17141c[_0x5894('0x37')],'type':_0x17141c['type'][_0x5894('0x38')]};});_0xd3b3e1[_0x5894('0x39')]=_['map'](_0x429f8b,_0x5894('0x31'));_0xd3b3e1[_0x5894('0x3a')]=_[_0x5894('0x3b')](_0xf445f4[_0x5894('0x3a')]);_0xd3b3e1[_0x5894('0x3c')]=_[_0x5894('0x3d')](_0xd3b3e1[_0x5894('0x39')],_0xd3b3e1[_0x5894('0x3a')]);_0x95bfc5['attributes']=_['intersection'](_0xd3b3e1[_0x5894('0x39')],qs[_0x5894('0x3e')](_0xf445f4['query'][_0x5894('0x3e')]));_0x95bfc5[_0x5894('0x3f')]=_0x95bfc5[_0x5894('0x3f')][_0x5894('0x40')]?_0x95bfc5['attributes']:_0xd3b3e1['model'];if(!_0xf445f4[_0x5894('0x3a')][_0x5894('0x41')](_0x5894('0x42'))){_0x95bfc5[_0x5894('0x22')]=qs[_0x5894('0x22')](_0xf445f4[_0x5894('0x3a')][_0x5894('0x22')]);_0x95bfc5['offset']=qs['offset'](_0xf445f4[_0x5894('0x3a')]['offset']);}_0x95bfc5[_0x5894('0x43')]=qs[_0x5894('0x44')](_0xf445f4[_0x5894('0x3a')][_0x5894('0x44')]);_0x95bfc5[_0x5894('0x45')]=qs[_0x5894('0x3c')](_[_0x5894('0x46')](_0xf445f4[_0x5894('0x3a')],_0xd3b3e1['filters']),_0x429f8b);if(_0xf445f4[_0x5894('0x3a')][_0x5894('0x47')]){_0x95bfc5['where']=_[_0x5894('0x48')](_0x95bfc5[_0x5894('0x45')],{'$or':_['map'](_0x429f8b,function(_0x3abdcf){if(_0x3abdcf[_0x5894('0x49')]!==_0x5894('0x4a')){var _0x4f2bcd={};_0x4f2bcd[_0x3abdcf[_0x5894('0x31')]]={'$like':'%'+_0xf445f4['query'][_0x5894('0x47')]+'%'};return _0x4f2bcd;}})});}_0x95bfc5=_[_0x5894('0x48')]({},_0x95bfc5,_0xf445f4[_0x5894('0x4b')]);var _0x242550={'where':_0x95bfc5['where']};return db[_0x5894('0x35')][_0x5894('0x23')](_0x242550)[_0x5894('0x2c')](function(_0x3e8105){_0x539561['count']=_0x3e8105;if(_0xf445f4[_0x5894('0x3a')][_0x5894('0x4c')]){_0x95bfc5[_0x5894('0x4d')]=[{'all':!![]}];}return db[_0x5894('0x35')]['findAll'](_0x95bfc5);})[_0x5894('0x2c')](function(_0x352d69){_0x539561[_0x5894('0x4e')]=_0x352d69;return _0x539561;})['then'](respondWithFilteredResult(_0x254caf,_0x95bfc5))[_0x5894('0x4f')](handleError(_0x254caf,null));};exports[_0x5894('0x50')]=function(_0x650684,_0xe5da14){var _0x137a5a={'raw':!![],'where':{'id':_0x650684[_0x5894('0x51')]['id']}},_0x4f151f={};_0x4f151f['model']=_[_0x5894('0x3b')](db[_0x5894('0x35')][_0x5894('0x36')]);_0x4f151f[_0x5894('0x3a')]=_[_0x5894('0x3b')](_0x650684[_0x5894('0x3a')]);_0x4f151f['filters']=_[_0x5894('0x3d')](_0x4f151f[_0x5894('0x39')],_0x4f151f[_0x5894('0x3a')]);_0x137a5a[_0x5894('0x3f')]=_[_0x5894('0x3d')](_0x4f151f['model'],qs[_0x5894('0x3e')](_0x650684[_0x5894('0x3a')][_0x5894('0x3e')]));_0x137a5a[_0x5894('0x3f')]=_0x137a5a[_0x5894('0x3f')][_0x5894('0x40')]?_0x137a5a[_0x5894('0x3f')]:_0x4f151f[_0x5894('0x39')];if(_0x650684[_0x5894('0x3a')][_0x5894('0x4c')]){_0x137a5a[_0x5894('0x4d')]=[{'all':!![]}];}_0x137a5a=_[_0x5894('0x48')]({},_0x137a5a,_0x650684[_0x5894('0x4b')]);return db[_0x5894('0x35')]['find'](_0x137a5a)[_0x5894('0x2c')](handleEntityNotFound(_0xe5da14,null))[_0x5894('0x2c')](respondWithResult(_0xe5da14,null))['catch'](handleError(_0xe5da14,null));};exports[_0x5894('0x52')]=function(_0x2d97bb,_0x49983d){return db[_0x5894('0x35')]['create'](_0x2d97bb[_0x5894('0x53')],{})['then'](function(_0x443318){var _0x2f90fa=_0x2d97bb[_0x5894('0x54')][_0x5894('0x2a')]({'plain':!![]});if(!_0x2f90fa)throw new Error(_0x5894('0x55'));if(_0x2f90fa[_0x5894('0x56')]===_0x5894('0x54')){var _0x4382d2=_0x443318['get']({'plain':!![]});var _0x236e8b='WhatsappQueues';return db[_0x5894('0x57')]['find']({'where':{'name':_0x236e8b,'userProfileId':_0x2f90fa[_0x5894('0x58')]},'raw':!![]})[_0x5894('0x2c')](function(_0x3946e8){if(_0x3946e8&&_0x3946e8[_0x5894('0x59')]===0x0){return db[_0x5894('0x5a')]['create']({'name':_0x4382d2[_0x5894('0x31')],'resourceId':_0x4382d2['id'],'type':_0x3946e8[_0x5894('0x31')],'sectionId':_0x3946e8['id']},{})[_0x5894('0x2c')](function(){return _0x443318;});}else{return _0x443318;}})[_0x5894('0x4f')](function(_0xb90987){logger[_0x5894('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb90987);throw _0xb90987;});}return _0x443318;})[_0x5894('0x2c')](respondWithResult(_0x49983d,0xc9))[_0x5894('0x4f')](handleError(_0x49983d,null));};exports['update']=function(_0x479d3f,_0x404de6){if(_0x479d3f['body']['id']){delete _0x479d3f['body']['id'];}return db[_0x5894('0x35')]['find']({'where':{'id':_0x479d3f[_0x5894('0x51')]['id']}})['then'](handleEntityNotFound(_0x404de6,null))[_0x5894('0x2c')](saveUpdates(_0x479d3f[_0x5894('0x53')],null))[_0x5894('0x2c')](respondWithResult(_0x404de6,null))[_0x5894('0x4f')](handleError(_0x404de6,null));};exports[_0x5894('0x29')]=function(_0x4acb05,_0x1bce28){return db[_0x5894('0x35')]['find']({'where':{'id':_0x4acb05[_0x5894('0x51')]['id']}})['then'](handleEntityNotFound(_0x1bce28,null))[_0x5894('0x2c')](removeEntity(_0x1bce28,null))['catch'](handleError(_0x1bce28,null));};exports['describe']=function(_0x37a5aa,_0x10f454){return db[_0x5894('0x35')][_0x5894('0x5b')]()['then'](respondWithResult(_0x10f454,null))[_0x5894('0x4f')](handleError(_0x10f454,null));};exports[_0x5894('0x5c')]=function(_0x51a54a,_0x2d12b6,_0x2a02ff){var _0x23a4c9={'raw':!![],'where':{}},_0x2b331d={},_0x573cc5;return db[_0x5894('0x35')][_0x5894('0x5d')]({'where':{'id':_0x51a54a[_0x5894('0x51')]['id']}})[_0x5894('0x2c')](handleEntityNotFound(_0x2d12b6,null))['then'](function(_0x4ad015){if(_0x4ad015){_0x573cc5=_0x4ad015[_0x5894('0x2a')]({'plain':!![]});_0x2b331d[_0x5894('0x39')]=_['keys'](db[_0x5894('0x5e')]['rawAttributes']);_0x2b331d[_0x5894('0x3a')]=_[_0x5894('0x3b')](_0x51a54a['query']);_0x2b331d[_0x5894('0x3c')]=_[_0x5894('0x3d')](_0x2b331d[_0x5894('0x39')],_0x2b331d[_0x5894('0x3a')]);_0x23a4c9[_0x5894('0x3f')]=_[_0x5894('0x3d')](_0x2b331d['model'],qs['fields'](_0x51a54a[_0x5894('0x3a')][_0x5894('0x3e')]));_0x23a4c9[_0x5894('0x3f')]=_0x23a4c9[_0x5894('0x3f')][_0x5894('0x40')]?_0x23a4c9[_0x5894('0x3f')]:_0x2b331d['model'];if(!_0x51a54a['query'][_0x5894('0x41')](_0x5894('0x42'))){_0x23a4c9[_0x5894('0x22')]=qs['limit'](_0x51a54a[_0x5894('0x3a')]['limit']);_0x23a4c9['offset']=qs[_0x5894('0x24')](_0x51a54a[_0x5894('0x3a')][_0x5894('0x24')]);}_0x23a4c9[_0x5894('0x43')]=qs[_0x5894('0x44')](_0x51a54a[_0x5894('0x3a')][_0x5894('0x44')]);_0x23a4c9[_0x5894('0x45')]=qs[_0x5894('0x3c')](_[_0x5894('0x46')](_0x51a54a[_0x5894('0x3a')],_0x2b331d[_0x5894('0x3c')]));_0x23a4c9[_0x5894('0x45')][_0x5894('0x5f')]=_0x4ad015['id'];if(_0x51a54a[_0x5894('0x3a')][_0x5894('0x47')]){_0x23a4c9[_0x5894('0x45')]=_[_0x5894('0x48')](_0x23a4c9[_0x5894('0x45')],{'$or':_[_0x5894('0x34')](_0x23a4c9[_0x5894('0x3f')],function(_0x4dac31){var _0x39347a={};_0x39347a[_0x4dac31]={'$like':'%'+_0x51a54a[_0x5894('0x3a')][_0x5894('0x47')]+'%'};return _0x39347a;})});}_0x23a4c9=_['merge']({},_0x23a4c9,_0x51a54a[_0x5894('0x4b')]);return db[_0x5894('0x5e')][_0x5894('0x60')](_0x23a4c9);}})[_0x5894('0x2c')](function(_0x58e6e1){if(_0x58e6e1){return db[_0x5894('0x61')][_0x5894('0x62')]({'where':{'id':_[_0x5894('0x34')](_0x58e6e1,_0x5894('0x63')),'role':_0x5894('0x64')},'attributes':['id',_0x5894('0x31'),'whatsappPause',_0x5894('0x65'),_0x5894('0x66')]});}})[_0x5894('0x2c')](function(_0x4e0447){if(_0x4e0447){return{'count':_0x4e0447[_0x5894('0x23')],'rows':_[_0x5894('0x34')](_0x4e0447[_0x5894('0x4e')],function(_0x41eb59){return{'membername':_0x41eb59['name'],'UserId':_0x41eb59['id'],'queue_name':_0x573cc5[_0x5894('0x31')],'WhatsappQueueId':_0x573cc5['id'],'interface':util[_0x5894('0x67')]('%s/%s',_0x5894('0x68'),_0x41eb59[_0x5894('0x31')]),'penalty':0x0,'paused':_0x41eb59[_0x5894('0x69')],'createdAt':_0x41eb59[_0x5894('0x66')],'updatedAt':_0x41eb59[_0x5894('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5894('0x2c')](respondWithFilteredResult(_0x2d12b6,_0x23a4c9))[_0x5894('0x4f')](handleError(_0x2d12b6,null));};exports[_0x5894('0x6a')]=function(_0x39dda1,_0x5f939c,_0x2b96e0){var _0x7be4cf={};var _0x496d6f={};var _0x3204af;var _0x2b1308;return db['WhatsappQueue'][_0x5894('0x5d')]({'where':{'id':_0x39dda1[_0x5894('0x51')]['id']}})[_0x5894('0x2c')](handleEntityNotFound(_0x5f939c,null))[_0x5894('0x2c')](function(_0x14d7c4){if(_0x14d7c4){_0x3204af=_0x14d7c4;_0x496d6f[_0x5894('0x39')]=_['keys'](db[_0x5894('0x6b')]['rawAttributes']);_0x496d6f[_0x5894('0x3a')]=_[_0x5894('0x3b')](_0x39dda1['query']);_0x496d6f[_0x5894('0x3c')]=_['intersection'](_0x496d6f[_0x5894('0x39')],_0x496d6f[_0x5894('0x3a')]);_0x7be4cf[_0x5894('0x3f')]=_['intersection'](_0x496d6f[_0x5894('0x39')],qs[_0x5894('0x3e')](_0x39dda1[_0x5894('0x3a')]['fields']));_0x7be4cf['attributes']=_0x7be4cf['attributes']['length']?_0x7be4cf[_0x5894('0x3f')]:_0x496d6f[_0x5894('0x39')];_0x7be4cf['order']=qs[_0x5894('0x44')](_0x39dda1[_0x5894('0x3a')][_0x5894('0x44')]);_0x7be4cf[_0x5894('0x45')]=qs[_0x5894('0x3c')](_[_0x5894('0x46')](_0x39dda1[_0x5894('0x3a')],_0x496d6f['filters']));if(_0x39dda1[_0x5894('0x3a')][_0x5894('0x47')]){_0x7be4cf[_0x5894('0x45')]=_[_0x5894('0x48')](_0x7be4cf[_0x5894('0x45')],{'$or':_[_0x5894('0x34')](_0x7be4cf[_0x5894('0x3f')],function(_0x3391e0){var _0x3c7099={};_0x3c7099[_0x3391e0]={'$like':'%'+_0x39dda1['query'][_0x5894('0x47')]+'%'};return _0x3c7099;})});}_0x7be4cf=_[_0x5894('0x48')]({},_0x7be4cf,_0x39dda1[_0x5894('0x4b')]);return _0x3204af[_0x5894('0x6a')](_0x7be4cf);}})[_0x5894('0x2c')](function(_0x343025){if(_0x343025){_0x2b1308=_0x343025[_0x5894('0x40')];if(!_0x39dda1[_0x5894('0x3a')]['hasOwnProperty'](_0x5894('0x42'))){_0x7be4cf[_0x5894('0x22')]=qs[_0x5894('0x22')](_0x39dda1['query'][_0x5894('0x22')]);_0x7be4cf[_0x5894('0x24')]=qs[_0x5894('0x24')](_0x39dda1['query'][_0x5894('0x24')]);}return _0x3204af['getTeams'](_0x7be4cf);}})[_0x5894('0x2c')](function(_0x3510b3){if(_0x3510b3){return _0x3510b3?{'count':_0x2b1308,'rows':_0x3510b3}:null;}})['then'](respondWithResult(_0x5f939c,null))[_0x5894('0x4f')](handleError(_0x5f939c,null));};exports[_0x5894('0x6c')]=function(_0xd0f054,_0x35d0a0,_0xf0eec5){var _0x352f67=_0xd0f054[_0x5894('0x53')][_0x5894('0x6d')];return db[_0x5894('0x6b')]['findAll']({'where':{'id':_0x352f67},'attributes':['id'],'include':[{'model':db[_0x5894('0x61')],'as':'Agents','attributes':['id',_0x5894('0x31'),_0x5894('0x6e'),'voicePause',_0x5894('0x6f')],'raw':!![]}]})[_0x5894('0x2c')](function(_0x111a35){if(_0x111a35){var _0x1b84cf=_['flatMap'](_0x111a35,function(_0x26c288){var _0x56e8e7=_0x26c288['get']({'plain':!![]});return _0x56e8e7[_0x5894('0x70')];});return db[_0x5894('0x35')][_0x5894('0x71')]({'where':{'id':_0xd0f054[_0x5894('0x51')]['id']}})[_0x5894('0x2c')](function(_0x3f1ec8){return db[_0x5894('0x72')][_0x5894('0x73')](function(_0x376aab){return _0x3f1ec8[_0x5894('0x6c')](_0x352f67,{'transaction':_0x376aab})[_0x5894('0x2c')](function(){return BPromise[_0x5894('0x74')](_0x1b84cf,function(_0x5ba788){return db[_0x5894('0x5e')][_0x5894('0x75')]({'where':{'UserId':_0x5ba788['id'],'WhatsappQueueId':_0xd0f054['params']['id']},'transaction':_0x376aab});});})[_0x5894('0x2c')](function(){_0x1b84cf[_0x5894('0x76')](function(_0x1a4f8f){socket[_0x5894('0x77')](_0x5894('0x78'),{'UserId':_0x1a4f8f['id'],'WhatsappQueueId':_0x3f1ec8['id']});});});});});}})['then'](respondWithStatusCode(_0x35d0a0,null))[_0x5894('0x4f')](handleError(_0x35d0a0,null));};exports[_0x5894('0x79')]=function(_0xeb5f1a,_0x442693,_0x3f88bf){return db[_0x5894('0x6b')][_0x5894('0x60')]({'where':{'id':_0xeb5f1a[_0x5894('0x3a')][_0x5894('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x5894('0x61')],'as':_0x5894('0x70'),'attributes':['id'],'raw':!![]}]})[_0x5894('0x2c')](handleEntityNotFound(_0x442693,null))['then'](function(_0x23caea){var _0x58728e=_['map'](_0x23caea,'id');var _0x1f47fd=[];var _0x4261c0=[];var _0x44b9f2=squel[_0x5894('0x7a')]();_0x44b9f2[_0x5894('0x7b')](_0x5894('0x7c'))[_0x5894('0x7d')](_0x5894('0x7e'),'tq')[_0x5894('0x7f')](_0x5894('0x80'),'ut',_0x5894('0x81'))['where'](_0x5894('0x82'),_0xeb5f1a[_0x5894('0x51')]['id']);for(var _0x109181=0x0;_0x109181<_0x23caea[_0x5894('0x40')];_0x109181+=0x1){let _0x12bac0=_0x23caea[_0x109181];for(var _0x4dbbe7=0x0;_0x4dbbe7<_0x12bac0[_0x5894('0x70')][_0x5894('0x40')];_0x4dbbe7+=0x1){let _0x45fa58=_0x12bac0[_0x5894('0x70')][_0x4dbbe7];var _0x363a82=_0x44b9f2[_0x5894('0x83')]();_0x363a82[_0x5894('0x45')](_0x5894('0x84'),_0x45fa58['id']);_0x4261c0[_0x5894('0x85')](db[_0x5894('0x72')][_0x5894('0x3a')](_0x363a82['toString'](),{'type':db[_0x5894('0x72')][_0x5894('0x86')][_0x5894('0x87')]})['then'](function(_0x21c1ed){if(_0x21c1ed[_0x5894('0x40')]===0x1){return _0x45fa58['id'];}else{var _0x3a158e=_[_0x5894('0x88')](_[_0x5894('0x34')](_0x21c1ed,_0x5894('0x89')),function(_0x307d71){return _[_0x5894('0x8a')](_0x58728e,_0x307d71);});if(_0x3a158e){return _0x45fa58['id'];}}}));}}return BPromise[_0x5894('0x8b')](_0x4261c0)[_0x5894('0x2c')](function(_0x5ca87e){_0x1f47fd=_(_0x1f47fd)[_0x5894('0x8c')](_0x5ca87e)[_0x5894('0x8d')]()[_0x5894('0x8e')]();return db[_0x5894('0x35')]['find']({'where':{'id':_0xeb5f1a[_0x5894('0x51')]['id']}})[_0x5894('0x2c')](function(_0x43b111){return db[_0x5894('0x72')]['transaction'](function(_0x3aec93){return _0x43b111[_0x5894('0x79')](_0xeb5f1a[_0x5894('0x3a')]['ids'],{'transaction':_0x3aec93})['then'](function(){if(!_[_0x5894('0x8f')](_0x1f47fd)){return _0x43b111[_0x5894('0x90')](_0x1f47fd,{'transaction':_0x3aec93});}})[_0x5894('0x2c')](function(){_0x1f47fd[_0x5894('0x76')](function(_0x2ab1f6){socket[_0x5894('0x77')](_0x5894('0x91'),{'UserId':_0x2ab1f6,'WhatsappQueueId':_0x43b111['id']});});});});});});})[_0x5894('0x2c')](respondWithStatusCode(_0x442693,null))[_0x5894('0x4f')](handleError(_0x442693,null));};exports['addAgents']=function(_0x13d8bc,_0x489798,_0x4a70fc){return db['WhatsappQueue'][_0x5894('0x71')]({'where':{'id':_0x13d8bc[_0x5894('0x51')]['id']}})['then'](handleEntityNotFound(_0x489798,null))['then'](function(_0x516887){if(_0x516887){return _0x516887[_0x5894('0x92')](_0x13d8bc[_0x5894('0x53')]['ids'],_[_0x5894('0x93')](_0x13d8bc[_0x5894('0x53')],[_0x5894('0x6d'),'id'])||{})[_0x5894('0x94')](function(_0x314c95){for(var _0x592f49=0x0;_0x592f49<_0x13d8bc[_0x5894('0x53')][_0x5894('0x6d')][_0x5894('0x40')];_0x592f49+=0x1){socket[_0x5894('0x77')](_0x5894('0x78'),{'UserId':Number(_0x13d8bc['body'][_0x5894('0x6d')][_0x592f49]),'WhatsappQueueId':Number(_0x13d8bc['params']['id'])});}return _0x314c95;});}})[_0x5894('0x2c')](respondWithResult(_0x489798,null))['catch'](handleError(_0x489798,null));};exports['removeAgents']=function(_0x23847b,_0x5aa496,_0x430f34){return db[_0x5894('0x35')][_0x5894('0x71')]({'where':{'id':_0x23847b['params']['id']}})[_0x5894('0x2c')](handleEntityNotFound(_0x5aa496,null))[_0x5894('0x2c')](function(_0x310800){if(_0x310800){return _0x310800[_0x5894('0x90')](_0x23847b[_0x5894('0x3a')]['ids'])[_0x5894('0x2c')](function(){if(_['isArray'](_0x23847b[_0x5894('0x3a')]['ids'])){for(var _0x4e7527=0x0;_0x4e7527<_0x23847b[_0x5894('0x3a')]['ids'][_0x5894('0x40')];_0x4e7527+=0x1){socket[_0x5894('0x77')]('userWhatsappQueue:remove',{'UserId':Number(_0x23847b[_0x5894('0x3a')][_0x5894('0x6d')][_0x4e7527]),'WhatsappQueueId':Number(_0x23847b[_0x5894('0x51')]['id'])});}}else{socket[_0x5894('0x77')](_0x5894('0x91'),{'UserId':Number(_0x23847b['query'][_0x5894('0x6d')]),'WhatsappQueueId':Number(_0x23847b[_0x5894('0x51')]['id'])});}});}})[_0x5894('0x2c')](respondWithStatusCode(_0x5aa496,null))[_0x5894('0x4f')](handleError(_0x5aa496,null));};exports[_0x5894('0x95')]=function(_0x11e01b,_0x39b157,_0x1d9247){var _0xc6cc92={};var _0x2e5f0e={};var _0x9dc603;var _0x47fb0f;return db[_0x5894('0x35')]['findOne']({'where':{'id':_0x11e01b['params']['id']}})['then'](handleEntityNotFound(_0x39b157,null))['then'](function(_0x5d918b){if(_0x5d918b){_0x9dc603=_0x5d918b;_0x2e5f0e[_0x5894('0x39')]=_[_0x5894('0x3b')](db['User'][_0x5894('0x36')]);_0x2e5f0e[_0x5894('0x3a')]=_['keys'](_0x11e01b[_0x5894('0x3a')]);_0x2e5f0e[_0x5894('0x3c')]=_[_0x5894('0x3d')](_0x2e5f0e[_0x5894('0x39')],_0x2e5f0e[_0x5894('0x3a')]);_0xc6cc92[_0x5894('0x3f')]=_[_0x5894('0x3d')](_0x2e5f0e[_0x5894('0x39')],qs[_0x5894('0x3e')](_0x11e01b['query'][_0x5894('0x3e')]));_0xc6cc92[_0x5894('0x3f')]=_0xc6cc92[_0x5894('0x3f')][_0x5894('0x40')]?_0xc6cc92['attributes']:_0x2e5f0e[_0x5894('0x39')];_0xc6cc92[_0x5894('0x43')]=qs[_0x5894('0x44')](_0x11e01b[_0x5894('0x3a')][_0x5894('0x44')]);_0xc6cc92[_0x5894('0x45')]=qs[_0x5894('0x3c')](_['pick'](_0x11e01b[_0x5894('0x3a')],_0x2e5f0e[_0x5894('0x3c')]));if(_0x11e01b['query']['filter']){_0xc6cc92[_0x5894('0x45')]=_[_0x5894('0x48')](_0xc6cc92[_0x5894('0x45')],{'$or':_['map'](_0xc6cc92[_0x5894('0x3f')],function(_0x2ca0b8){var _0x208f9d={};_0x208f9d[_0x2ca0b8]={'$like':'%'+_0x11e01b[_0x5894('0x3a')][_0x5894('0x47')]+'%'};return _0x208f9d;})});}_0xc6cc92=_[_0x5894('0x48')]({},_0xc6cc92,_0x11e01b['options']);return _0x9dc603[_0x5894('0x95')](_0xc6cc92);}})[_0x5894('0x2c')](function(_0x519288){if(_0x519288){_0x47fb0f=_0x519288['length'];if(!_0x11e01b[_0x5894('0x3a')][_0x5894('0x41')](_0x5894('0x42'))){_0xc6cc92[_0x5894('0x22')]=qs['limit'](_0x11e01b['query']['limit']);_0xc6cc92[_0x5894('0x24')]=qs['offset'](_0x11e01b[_0x5894('0x3a')][_0x5894('0x24')]);}return _0x9dc603[_0x5894('0x95')](_0xc6cc92);}})[_0x5894('0x2c')](function(_0x403388){if(_0x403388){return _0x403388?{'count':_0x47fb0f,'rows':_0x403388}:null;}})['then'](respondWithResult(_0x39b157,null))['catch'](handleError(_0x39b157,null));};
\ No newline at end of file
index b036226..9fd5ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x159a=['hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue','update','emit'];(function(_0x5c9ef9,_0x1715ed){var _0x5bc7e0=function(_0xf7696){while(--_0xf7696){_0x5c9ef9['push'](_0x5c9ef9['shift']());}};_0x5bc7e0(++_0x1715ed);}(_0x159a,0x83));var _0xa159=function(_0x32c83f,_0x4cb2d6){_0x32c83f=_0x32c83f-0x0;var _0x15e3cd=_0x159a[_0x32c83f];return _0x15e3cd;};'use strict';var EventEmitter=require(_0xa159('0x0'));var WhatsappQueue=require(_0xa159('0x1'))['db'][_0xa159('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa159('0x3'),'afterDestroy':'remove'};function emitEvent(_0x394819){return function(_0x5c3cfe,_0x301245,_0x197639){WhatsappQueueEvents['emit'](_0x394819+':'+_0x5c3cfe['id'],_0x5c3cfe);WhatsappQueueEvents[_0xa159('0x4')](_0x394819,_0x5c3cfe);_0x197639(null);};}for(var e in events){if(events[_0xa159('0x5')](e)){var event=events[e];WhatsappQueue[_0xa159('0x6')](e,emitEvent(event));}}module[_0xa159('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x3ffb=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x3926a5,_0x3fd455){var _0x443596=function(_0x3d316e){while(--_0x3d316e){_0x3926a5['push'](_0x3926a5['shift']());}};_0x443596(++_0x3fd455);}(_0x3ffb,0x16a));var _0xb3ff=function(_0x44a90,_0xddd3d4){_0x44a90=_0x44a90-0x0;var _0x13bc97=_0x3ffb[_0x44a90];return _0x13bc97;};'use strict';var EventEmitter=require(_0xb3ff('0x0'));var WhatsappQueue=require(_0xb3ff('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xb3ff('0x2'),'afterDestroy':_0xb3ff('0x3')};function emitEvent(_0x5c67d3){return function(_0x5c91c6,_0x33fd14,_0x27b4be){WhatsappQueueEvents['emit'](_0x5c67d3+':'+_0x5c91c6['id'],_0x5c91c6);WhatsappQueueEvents[_0xb3ff('0x4')](_0x5c67d3,_0x5c91c6);_0x27b4be(null);};}for(var e in events){if(events[_0xb3ff('0x5')](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module[_0xb3ff('0x6')]=WhatsappQueueEvents;
\ No newline at end of file
index da24c7f..1ffbc31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x862b=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','WhatsappQueue','whatsapp_queues'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x862b,0x15c));var _0xb862=function(_0x3084d8,_0x2408db){_0x3084d8=_0x3084d8-0x0;var _0x845a67=_0x862b[_0x3084d8];return _0x845a67;};'use strict';var _=require(_0xb862('0x0'));var util=require(_0xb862('0x1'));var logger=require(_0xb862('0x2'))(_0xb862('0x3'));var moment=require(_0xb862('0x4'));var BPromise=require(_0xb862('0x5'));var rp=require(_0xb862('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb862('0x7'));var attributes=require('./whatsappQueue.attributes');module[_0xb862('0x8')]=function(_0x560f4b,_0x25c0b0){return _0x560f4b[_0xb862('0x9')](_0xb862('0xa'),attributes,{'tableName':_0xb862('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x481d=['WhatsappQueue','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x481d,0x8d));var _0xd481=function(_0x15ec4e,_0x40b7e0){_0x15ec4e=_0x15ec4e-0x0;var _0xb5e5dd=_0x481d[_0x15ec4e];return _0xb5e5dd;};'use strict';var _=require(_0xd481('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd481('0x1'));var moment=require('moment');var BPromise=require(_0xd481('0x2'));var rp=require(_0xd481('0x3'));var fs=require('fs');var path=require(_0xd481('0x4'));var rimraf=require(_0xd481('0x5'));var config=require(_0xd481('0x6'));var attributes=require(_0xd481('0x7'));module[_0xd481('0x8')]=function(_0x33952f,_0x7c61a1){return _0x33952f['define'](_0xd481('0x9'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4867086..33c18ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa11c=['client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','GetWhatsappQueue','findAll','options','raw','limit','include','map','attributes','model','ShowWhatsappQueue','WhatsappQueue','find','where','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x568e94,_0x38b9ba){var _0x4732a7=function(_0x2b7c01){while(--_0x2b7c01){_0x568e94['push'](_0x568e94['shift']());}};_0x4732a7(++_0x38b9ba);}(_0xa11c,0x95));var _0xca11=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xa11c[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xca11('0x0'));var util=require(_0xca11('0x1'));var moment=require(_0xca11('0x2'));var BPromise=require('bluebird');var rs=require(_0xca11('0x3'));var fs=require('fs');var Redis=require(_0xca11('0x4'));var db=require(_0xca11('0x5'))['db'];var utils=require(_0xca11('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xca11('0x7')][_0xca11('0x8')]({'port':0x232a});config[_0xca11('0x9')]=_[_0xca11('0xa')](config['redis'],{'host':_0xca11('0xb'),'port':0x18eb});var socket=require(_0xca11('0xc'))(new Redis(config[_0xca11('0x9')]));require(_0xca11('0xd'))['register'](socket);function respondWithRpcPromise(_0x53f594,_0x1d8582,_0x5b73c9){return new BPromise(function(_0x5f5c3d,_0x3883ff){return client[_0xca11('0xe')](_0x53f594,_0x5b73c9)[_0xca11('0xf')](function(_0x15aa43){logger[_0xca11('0x10')](_0xca11('0x11'),_0x1d8582,'request\x20sent');logger[_0xca11('0x12')](_0xca11('0x13'),_0x1d8582,'request\x20sent',JSON['stringify'](_0x15aa43));if(_0x15aa43[_0xca11('0x14')]){if(_0x15aa43['error'][_0xca11('0x15')]===0x1f4){logger['error'](_0xca11('0x11'),_0x1d8582,_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);return _0x3883ff(_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);}logger[_0xca11('0x14')](_0xca11('0x11'),_0x1d8582,_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);return _0x5f5c3d(_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);}else{logger[_0xca11('0x10')](_0xca11('0x11'),_0x1d8582,_0xca11('0x17'));_0x5f5c3d(_0x15aa43['result'][_0xca11('0x16')]);}})[_0xca11('0x18')](function(_0x5d2b5b){logger[_0xca11('0x14')](_0xca11('0x11'),_0x1d8582,_0x5d2b5b);_0x3883ff(_0x5d2b5b);});});}exports[_0xca11('0x19')]=function(_0x168982){var _0x4c0c4f=this;return new Promise(function(_0x575cd0,_0x13326f){return db['WhatsappQueue'][_0xca11('0x1a')]({'raw':_0x168982[_0xca11('0x1b')]?_0x168982[_0xca11('0x1b')][_0xca11('0x1c')]===undefined?!![]:![]:!![],'where':_0x168982['options']?_0x168982['options']['where']||null:null,'attributes':_0x168982['options']?_0x168982[_0xca11('0x1b')]['attributes']||null:null,'limit':_0x168982[_0xca11('0x1b')]?_0x168982['options'][_0xca11('0x1d')]||null:null,'include':_0x168982[_0xca11('0x1b')]?_0x168982['options'][_0xca11('0x1e')]?_[_0xca11('0x1f')](_0x168982[_0xca11('0x1b')][_0xca11('0x1e')],function(_0x48d2c8){return{'model':db[_0x48d2c8['model']],'as':_0x48d2c8['as'],'attributes':_0x48d2c8[_0xca11('0x20')],'include':_0x48d2c8['include']?_[_0xca11('0x1f')](_0x48d2c8['include'],function(_0x5d726a){return{'model':db[_0x5d726a[_0xca11('0x21')]],'as':_0x5d726a['as'],'attributes':_0x5d726a[_0xca11('0x20')],'include':_0x5d726a[_0xca11('0x1e')]?_[_0xca11('0x1f')](_0x5d726a[_0xca11('0x1e')],function(_0x405998){return{'model':db[_0x405998[_0xca11('0x21')]],'as':_0x405998['as'],'attributes':_0x405998['attributes']};}):[]};}):[]};}):[]:[]})[_0xca11('0xf')](function(_0x5238c8){logger[_0xca11('0x10')](_0xca11('0x19'),_0x168982);logger[_0xca11('0x12')](_0xca11('0x19'),_0x168982,JSON['stringify'](_0x5238c8));_0x575cd0(_0x5238c8);})['catch'](function(_0x1b1927){logger['error'](_0xca11('0x19'),_0x1b1927[_0xca11('0x16')],_0x168982);_0x13326f(_0x4c0c4f[_0xca11('0x14')](0x1f4,_0x1b1927[_0xca11('0x16')]));});});};exports[_0xca11('0x22')]=function(_0x2647f2){var _0x387fd3=this;return new Promise(function(_0x64aef7,_0x592378){return db[_0xca11('0x23')][_0xca11('0x24')]({'raw':_0x2647f2[_0xca11('0x1b')]?_0x2647f2[_0xca11('0x1b')][_0xca11('0x1c')]===undefined?!![]:![]:!![],'where':_0x2647f2['options']?_0x2647f2[_0xca11('0x1b')][_0xca11('0x25')]||null:null,'attributes':_0x2647f2[_0xca11('0x1b')]?_0x2647f2[_0xca11('0x1b')][_0xca11('0x20')]||null:null,'include':_0x2647f2[_0xca11('0x1b')]?_0x2647f2[_0xca11('0x1b')]['include']?_['map'](_0x2647f2['options'][_0xca11('0x1e')],function(_0x3b4987){return{'model':db[_0x3b4987[_0xca11('0x21')]],'as':_0x3b4987['as'],'attributes':_0x3b4987['attributes'],'include':_0x3b4987[_0xca11('0x1e')]?_['map'](_0x3b4987[_0xca11('0x1e')],function(_0x4c3093){return{'model':db[_0x4c3093['model']],'as':_0x4c3093['as'],'attributes':_0x4c3093[_0xca11('0x20')],'include':_0x4c3093[_0xca11('0x1e')]?_[_0xca11('0x1f')](_0x4c3093[_0xca11('0x1e')],function(_0x53a8aa){return{'model':db[_0x53a8aa['model']],'as':_0x53a8aa['as'],'attributes':_0x53a8aa['attributes']};}):[]};}):[]};}):[]:[]})[_0xca11('0xf')](function(_0x583eea){logger['info'](_0xca11('0x22'),_0x2647f2);logger[_0xca11('0x12')]('ShowWhatsappQueue',_0x2647f2,JSON[_0xca11('0x26')](_0x583eea));_0x64aef7(_0x583eea);})['catch'](function(_0x389da4){logger[_0xca11('0x14')](_0xca11('0x22'),_0x389da4[_0xca11('0x16')],_0x2647f2);_0x592378(_0x387fd3[_0xca11('0x14')](0x1f4,_0x389da4[_0xca11('0x16')]));});});};
\ No newline at end of file
+var _0xde43=['info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','attributes','limit','include','map','model','ShowWhatsappQueue','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./whatsappQueue.socket','then'];(function(_0x42a6e6,_0x3d422b){var _0x31b46e=function(_0x32912a){while(--_0x32912a){_0x42a6e6['push'](_0x42a6e6['shift']());}};_0x31b46e(++_0x3d422b);}(_0xde43,0x80));var _0x3de4=function(_0x318f1f,_0x4a62d9){_0x318f1f=_0x318f1f-0x0;var _0x99ce5f=_0xde43[_0x318f1f];return _0x99ce5f;};'use strict';var _=require(_0x3de4('0x0'));var util=require(_0x3de4('0x1'));var moment=require('moment');var BPromise=require(_0x3de4('0x2'));var rs=require(_0x3de4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3de4('0x4'))['db'];var utils=require(_0x3de4('0x5'));var logger=require(_0x3de4('0x6'))(_0x3de4('0x7'));var config=require(_0x3de4('0x8'));var jayson=require(_0x3de4('0x9'));var client=jayson[_0x3de4('0xa')][_0x3de4('0xb')]({'port':0x232a});config[_0x3de4('0xc')]=_['defaults'](config[_0x3de4('0xc')],{'host':_0x3de4('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3de4('0xc')]));require(_0x3de4('0xe'))['register'](socket);function respondWithRpcPromise(_0x54182b,_0x189c78,_0x54cdb1){return new BPromise(function(_0x560a40,_0x334153){return client['request'](_0x54182b,_0x54cdb1)[_0x3de4('0xf')](function(_0x7bce66){logger[_0x3de4('0x10')](_0x3de4('0x11'),_0x189c78,_0x3de4('0x12'));logger[_0x3de4('0x13')](_0x3de4('0x14'),_0x189c78,_0x3de4('0x12'),JSON[_0x3de4('0x15')](_0x7bce66));if(_0x7bce66['error']){if(_0x7bce66[_0x3de4('0x16')]['code']===0x1f4){logger[_0x3de4('0x16')](_0x3de4('0x11'),_0x189c78,_0x7bce66[_0x3de4('0x16')][_0x3de4('0x17')]);return _0x334153(_0x7bce66['error'][_0x3de4('0x17')]);}logger[_0x3de4('0x16')](_0x3de4('0x11'),_0x189c78,_0x7bce66[_0x3de4('0x16')]['message']);return _0x560a40(_0x7bce66['error'][_0x3de4('0x17')]);}else{logger[_0x3de4('0x10')](_0x3de4('0x11'),_0x189c78,_0x3de4('0x12'));_0x560a40(_0x7bce66['result'][_0x3de4('0x17')]);}})[_0x3de4('0x18')](function(_0x509966){logger[_0x3de4('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x189c78,_0x509966);_0x334153(_0x509966);});});}exports[_0x3de4('0x19')]=function(_0x43eb50){var _0x1c201c=this;return new Promise(function(_0x907f2d,_0x38c70f){return db[_0x3de4('0x1a')][_0x3de4('0x1b')]({'raw':_0x43eb50[_0x3de4('0x1c')]?_0x43eb50[_0x3de4('0x1c')][_0x3de4('0x1d')]===undefined?!![]:![]:!![],'where':_0x43eb50[_0x3de4('0x1c')]?_0x43eb50[_0x3de4('0x1c')]['where']||null:null,'attributes':_0x43eb50[_0x3de4('0x1c')]?_0x43eb50[_0x3de4('0x1c')][_0x3de4('0x1e')]||null:null,'limit':_0x43eb50[_0x3de4('0x1c')]?_0x43eb50[_0x3de4('0x1c')][_0x3de4('0x1f')]||null:null,'include':_0x43eb50['options']?_0x43eb50[_0x3de4('0x1c')][_0x3de4('0x20')]?_[_0x3de4('0x21')](_0x43eb50[_0x3de4('0x1c')][_0x3de4('0x20')],function(_0x5c5bb9){return{'model':db[_0x5c5bb9[_0x3de4('0x22')]],'as':_0x5c5bb9['as'],'attributes':_0x5c5bb9[_0x3de4('0x1e')],'include':_0x5c5bb9[_0x3de4('0x20')]?_[_0x3de4('0x21')](_0x5c5bb9[_0x3de4('0x20')],function(_0x3a14f2){return{'model':db[_0x3a14f2[_0x3de4('0x22')]],'as':_0x3a14f2['as'],'attributes':_0x3a14f2[_0x3de4('0x1e')],'include':_0x3a14f2[_0x3de4('0x20')]?_[_0x3de4('0x21')](_0x3a14f2['include'],function(_0x5788e0){return{'model':db[_0x5788e0[_0x3de4('0x22')]],'as':_0x5788e0['as'],'attributes':_0x5788e0[_0x3de4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x3de4('0xf')](function(_0x458505){logger[_0x3de4('0x10')](_0x3de4('0x19'),_0x43eb50);logger[_0x3de4('0x13')](_0x3de4('0x19'),_0x43eb50,JSON[_0x3de4('0x15')](_0x458505));_0x907f2d(_0x458505);})[_0x3de4('0x18')](function(_0x17fc9c){logger['error'](_0x3de4('0x19'),_0x17fc9c[_0x3de4('0x17')],_0x43eb50);_0x38c70f(_0x1c201c[_0x3de4('0x16')](0x1f4,_0x17fc9c[_0x3de4('0x17')]));});});};exports[_0x3de4('0x23')]=function(_0x400cdb){var _0xcc5cf8=this;return new Promise(function(_0x5469b9,_0x18734b){return db[_0x3de4('0x1a')]['find']({'raw':_0x400cdb[_0x3de4('0x1c')]?_0x400cdb[_0x3de4('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x400cdb[_0x3de4('0x1c')]?_0x400cdb[_0x3de4('0x1c')]['where']||null:null,'attributes':_0x400cdb['options']?_0x400cdb['options'][_0x3de4('0x1e')]||null:null,'include':_0x400cdb[_0x3de4('0x1c')]?_0x400cdb['options'][_0x3de4('0x20')]?_['map'](_0x400cdb[_0x3de4('0x1c')]['include'],function(_0x36a328){return{'model':db[_0x36a328[_0x3de4('0x22')]],'as':_0x36a328['as'],'attributes':_0x36a328[_0x3de4('0x1e')],'include':_0x36a328['include']?_[_0x3de4('0x21')](_0x36a328['include'],function(_0xe1eac0){return{'model':db[_0xe1eac0['model']],'as':_0xe1eac0['as'],'attributes':_0xe1eac0[_0x3de4('0x1e')],'include':_0xe1eac0[_0x3de4('0x20')]?_['map'](_0xe1eac0[_0x3de4('0x20')],function(_0x377d79){return{'model':db[_0x377d79[_0x3de4('0x22')]],'as':_0x377d79['as'],'attributes':_0x377d79[_0x3de4('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x474312){logger[_0x3de4('0x10')]('ShowWhatsappQueue',_0x400cdb);logger[_0x3de4('0x13')](_0x3de4('0x23'),_0x400cdb,JSON['stringify'](_0x474312));_0x5469b9(_0x474312);})[_0x3de4('0x18')](function(_0xebece4){logger[_0x3de4('0x16')](_0x3de4('0x23'),_0xebece4[_0x3de4('0x17')],_0x400cdb);_0x18734b(_0xcc5cf8[_0x3de4('0x16')](0x1f4,_0xebece4['message']));});});};
\ No newline at end of file
index eb80098..924378c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5abf=['update','removeListener','length','whatsappQueue:','./whatsappQueue.events','save'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x5abf,0x1f0));var _0xf5ab=function(_0x4a5f95,_0x1553d3){_0x4a5f95=_0x4a5f95-0x0;var _0x4dcfa5=_0x5abf[_0x4a5f95];return _0x4dcfa5;};'use strict';var WhatsappQueueEvents=require(_0xf5ab('0x0'));var events=[_0xf5ab('0x1'),'remove',_0xf5ab('0x2')];function createListener(_0x1a2b21,_0x501a8a){return function(_0x1b8915){_0x501a8a['emit'](_0x1a2b21,_0x1b8915);};}function removeListener(_0x2f347c,_0x3cba97){return function(){WhatsappQueueEvents[_0xf5ab('0x3')](_0x2f347c,_0x3cba97);};}exports['register']=function(_0x5d4ca3){for(var _0x2d3ca9=0x0,_0x1a03c6=events[_0xf5ab('0x4')];_0x2d3ca9<_0x1a03c6;_0x2d3ca9++){var _0x278017=events[_0x2d3ca9];var _0x51cf2c=createListener(_0xf5ab('0x5')+_0x278017,_0x5d4ca3);WhatsappQueueEvents['on'](_0x278017,_0x51cf2c);}};
\ No newline at end of file
+var _0x48ee=['length','remove','update','emit','removeListener'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x48ee,0x1aa));var _0xe48e=function(_0x383c57,_0x22e8e0){_0x383c57=_0x383c57-0x0;var _0x1fe7a6=_0x48ee[_0x383c57];return _0x1fe7a6;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0xe48e('0x0'),_0xe48e('0x1')];function createListener(_0x58ebb4,_0x4a3c10){return function(_0x38f535){_0x4a3c10[_0xe48e('0x2')](_0x58ebb4,_0x38f535);};}function removeListener(_0x259ede,_0x28b319){return function(){WhatsappQueueEvents[_0xe48e('0x3')](_0x259ede,_0x28b319);};}exports['register']=function(_0x17c10c){for(var _0x42c2a5=0x0,_0x180105=events[_0xe48e('0x4')];_0x42c2a5<_0x180105;_0x42c2a5++){var _0x43852e=events[_0x42c2a5];var _0x465603=createListener('whatsappQueue:'+_0x43852e,_0x17c10c);WhatsappQueueEvents['on'](_0x43852e,_0x465603);}};
\ No newline at end of file
index 5be5e32..9ef0a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b28=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','/describe'];(function(_0x51eef2,_0x543d35){var _0x583b9b=function(_0x46384b){while(--_0x46384b){_0x51eef2['push'](_0x51eef2['shift']());}};_0x583b9b(++_0x543d35);}(_0x7b28,0xdc));var _0x87b2=function(_0x381710,_0x986626){_0x381710=_0x381710-0x0;var _0x21b265=_0x7b28[_0x381710];return _0x21b265;};'use strict';var multer=require(_0x87b2('0x0'));var util=require('util');var path=require(_0x87b2('0x1'));var timeout=require(_0x87b2('0x2'));var express=require('express');var router=express[_0x87b2('0x3')]();var fs_extra=require(_0x87b2('0x4'));var auth=require(_0x87b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x87b2('0x6'));var controller=require(_0x87b2('0x7'));router[_0x87b2('0x8')]('/',auth[_0x87b2('0x9')](),controller['index']);router[_0x87b2('0x8')](_0x87b2('0xa'),auth['isAuthenticated'](),controller[_0x87b2('0xb')]);router[_0x87b2('0x8')](_0x87b2('0xc'),auth['isAuthenticated'](),controller[_0x87b2('0xd')]);router[_0x87b2('0xe')]('/',auth[_0x87b2('0x9')](),controller[_0x87b2('0xf')]);router[_0x87b2('0x10')](_0x87b2('0xc'),auth[_0x87b2('0x9')](),controller[_0x87b2('0x11')]);router[_0x87b2('0x12')](_0x87b2('0xc'),auth[_0x87b2('0x9')](),controller[_0x87b2('0x13')]);module[_0x87b2('0x14')]=router;
\ No newline at end of file
+var _0x05a1=['create','put','/:id','update','delete','destroy','path','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','index','get','describe','show','post'];(function(_0x4239c1,_0x42dc0c){var _0x305987=function(_0x33c262){while(--_0x33c262){_0x4239c1['push'](_0x4239c1['shift']());}};_0x305987(++_0x42dc0c);}(_0x05a1,0x72));var _0x105a=function(_0x98a8e,_0x9857cc){_0x98a8e=_0x98a8e-0x0;var _0x2e1436=_0x05a1[_0x98a8e];return _0x2e1436;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x105a('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x105a('0x1')]();var fs_extra=require(_0x105a('0x2'));var auth=require(_0x105a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x105a('0x4'));var controller=require(_0x105a('0x5'));router['get']('/',auth[_0x105a('0x6')](),controller[_0x105a('0x7')]);router[_0x105a('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x105a('0x9')]);router[_0x105a('0x8')]('/:id',auth[_0x105a('0x6')](),controller[_0x105a('0xa')]);router[_0x105a('0xb')]('/',auth[_0x105a('0x6')](),controller[_0x105a('0xc')]);router[_0x105a('0xd')](_0x105a('0xe'),auth[_0x105a('0x6')](),controller[_0x105a('0xf')]);router[_0x105a('0x10')](_0x105a('0xe'),auth['isAuthenticated'](),controller[_0x105a('0x11')]);module['exports']=router;
\ No newline at end of file
index c70e85b..36e2b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x574cff,_0x170bab){var _0x2d4e9d=function(_0x166282){while(--_0x166282){_0x574cff['push'](_0x574cff['shift']());}};_0x2d4e9d(++_0x170bab);}(_0x7a54,0x106));var _0x47a5=function(_0x46baf6,_0x46e73c){_0x46baf6=_0x46baf6-0x0;var _0x12014e=_0x7a54[_0x46baf6];return _0x12014e;};'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(_0x50c410,_0x430d16){var _0x1765f8=function(_0x1135d4){while(--_0x1135d4){_0x50c410['push'](_0x50c410['shift']());}};_0x1765f8(++_0x430d16);}(_0x7a54,0x106));var _0x47a5=function(_0x33a32f,_0x5517b1){_0x33a32f=_0x33a32f-0x0;var _0x105e4a=_0x7a54[_0x33a32f];return _0x105e4a;};'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 c462e0f..1859862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','WhatsappQueueReport','catch','show','params','rawAttributes','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end'];(function(_0x5459d1,_0x567cec){var _0x1d99eb=function(_0x250970){while(--_0x250970){_0x5459d1['push'](_0x5459d1['shift']());}};_0x1d99eb(++_0x567cec);}(_0xcf66,0x71));var _0x6cf6=function(_0x181b0c,_0x4e5ca3){_0x181b0c=_0x181b0c-0x0;var _0x2912a9=_0xcf66[_0x181b0c];return _0x2912a9;};'use strict';var emlformat=require(_0x6cf6('0x0'));var rimraf=require(_0x6cf6('0x1'));var zipdir=require(_0x6cf6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6cf6('0x3'));var moment=require(_0x6cf6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6cf6('0x5'));var path=require(_0x6cf6('0x6'));var sox=require('sox');var csv=require(_0x6cf6('0x7'));var ejs=require(_0x6cf6('0x8'));var fs=require('fs');var fs_extra=require(_0x6cf6('0x9'));var _=require('lodash');var squel=require(_0x6cf6('0xa'));var crypto=require(_0x6cf6('0xb'));var jsforce=require(_0x6cf6('0xc'));var deskjs=require(_0x6cf6('0xd'));var toCsv=require(_0x6cf6('0x7'));var querystring=require(_0x6cf6('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6cf6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6cf6('0x10'));var logger=require(_0x6cf6('0x11'))(_0x6cf6('0x12'));var utils=require(_0x6cf6('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fdfea,_0x13b1ad){_0x13b1ad=_0x13b1ad||0xcc;return function(_0x372d12){if(_0x372d12){return _0x3fdfea[_0x6cf6('0x14')](_0x13b1ad);}return _0x3fdfea[_0x6cf6('0x15')](_0x13b1ad)[_0x6cf6('0x16')]();};}function respondWithResult(_0x57909f,_0x32fe64){_0x32fe64=_0x32fe64||0xc8;return function(_0x494ece){if(_0x494ece){return _0x57909f[_0x6cf6('0x15')](_0x32fe64)[_0x6cf6('0x17')](_0x494ece);}};}function respondWithFilteredResult(_0x4b073f,_0x40e413){return function(_0x1b40f8){if(_0x1b40f8){var _0x2d23ab=typeof _0x40e413[_0x6cf6('0x18')]===_0x6cf6('0x19')&&typeof _0x40e413[_0x6cf6('0x1a')]===_0x6cf6('0x19');var _0x39ec25=_0x1b40f8[_0x6cf6('0x1b')];var _0x2ca2b1=_0x2d23ab?0x0:_0x40e413['offset'];var _0x11d994=_0x2d23ab?_0x1b40f8[_0x6cf6('0x1b')]:_0x40e413[_0x6cf6('0x18')]+_0x40e413['limit'];var _0x18abd9;if(_0x11d994>=_0x39ec25){_0x11d994=_0x39ec25;_0x18abd9=0xc8;}else{_0x18abd9=0xce;}_0x4b073f[_0x6cf6('0x15')](_0x18abd9);return _0x4b073f[_0x6cf6('0x1c')](_0x6cf6('0x1d'),_0x2ca2b1+'-'+_0x11d994+'/'+_0x39ec25)[_0x6cf6('0x17')](_0x1b40f8);}return null;};}function patchUpdates(_0x21e903){return function(_0x123993){try{jsonpatch['apply'](_0x123993,_0x21e903,!![]);}catch(_0x19f2cd){return BPromise[_0x6cf6('0x1e')](_0x19f2cd);}return _0x123993[_0x6cf6('0x1f')]();};}function saveUpdates(_0x380a40,_0x5cba3a){return function(_0x470ea4){if(_0x470ea4){return _0x470ea4[_0x6cf6('0x20')](_0x380a40)[_0x6cf6('0x21')](function(_0x5b2767){return _0x5b2767;});}return null;};}function removeEntity(_0x5b30e0,_0x276225){return function(_0x59f838){if(_0x59f838){return _0x59f838[_0x6cf6('0x22')]()[_0x6cf6('0x21')](function(){_0x5b30e0[_0x6cf6('0x15')](0xcc)[_0x6cf6('0x16')]();});}};}function handleEntityNotFound(_0x3f9871,_0x565fad){return function(_0x1c966e){if(!_0x1c966e){_0x3f9871['sendStatus'](0x194);}return _0x1c966e;};}function handleError(_0x2779b7,_0xc7b489){_0xc7b489=_0xc7b489||0x1f4;return function(_0x3eaa31){logger['error'](_0x3eaa31[_0x6cf6('0x23')]);if(_0x3eaa31[_0x6cf6('0x24')]){delete _0x3eaa31[_0x6cf6('0x24')];}_0x2779b7[_0x6cf6('0x15')](_0xc7b489)['send'](_0x3eaa31);};}exports['index']=function(_0x2afe84,_0x4521af){var _0x57099f={},_0x5869e9={},_0x5ccc8f={'count':0x0,'rows':[]};var _0x2afc06=_['map'](db['WhatsappQueueReport']['rawAttributes'],function(_0x10bde5){return{'name':_0x10bde5[_0x6cf6('0x25')],'type':_0x10bde5[_0x6cf6('0x26')][_0x6cf6('0x27')]};});_0x5869e9[_0x6cf6('0x28')]=_['map'](_0x2afc06,_0x6cf6('0x24'));_0x5869e9[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x2afe84['query']);_0x5869e9[_0x6cf6('0x2b')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],_0x5869e9[_0x6cf6('0x29')]);_0x57099f[_0x6cf6('0x2d')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x57099f[_0x6cf6('0x2d')]=_0x57099f[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x57099f[_0x6cf6('0x2d')]:_0x5869e9[_0x6cf6('0x28')];if(!_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x30')](_0x6cf6('0x31'))){_0x57099f['limit']=qs[_0x6cf6('0x1a')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x1a')]);_0x57099f[_0x6cf6('0x18')]=qs[_0x6cf6('0x18')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x18')]);}_0x57099f[_0x6cf6('0x32')]=qs[_0x6cf6('0x33')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x33')]);_0x57099f['where']=qs[_0x6cf6('0x2b')](_[_0x6cf6('0x34')](_0x2afe84[_0x6cf6('0x29')],_0x5869e9[_0x6cf6('0x2b')]),_0x2afc06);if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]){_0x57099f[_0x6cf6('0x36')]=_[_0x6cf6('0x37')](_0x57099f[_0x6cf6('0x36')],{'$or':_['map'](_0x2afc06,function(_0x1c5eda){if(_0x1c5eda[_0x6cf6('0x26')]!==_0x6cf6('0x38')){var _0x3e906f={};_0x3e906f[_0x1c5eda[_0x6cf6('0x24')]]={'$like':'%'+_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]+'%'};return _0x3e906f;}})});}_0x57099f=_[_0x6cf6('0x37')]({},_0x57099f,_0x2afe84[_0x6cf6('0x39')]);var _0x5ed61f={'where':_0x57099f[_0x6cf6('0x36')]};return db['WhatsappQueueReport'][_0x6cf6('0x1b')](_0x5ed61f)[_0x6cf6('0x21')](function(_0x23d280){_0x5ccc8f[_0x6cf6('0x1b')]=_0x23d280;if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x57099f[_0x6cf6('0x3b')]=[{'all':!![]}];}return db[_0x6cf6('0x3c')]['findAll'](_0x57099f);})[_0x6cf6('0x21')](function(_0x335dce){_0x5ccc8f['rows']=_0x335dce;return _0x5ccc8f;})[_0x6cf6('0x21')](respondWithFilteredResult(_0x4521af,_0x57099f))[_0x6cf6('0x3d')](handleError(_0x4521af,null));};exports[_0x6cf6('0x3e')]=function(_0x4874c0,_0x10bb9b){var _0x128f7a={'raw':!![],'where':{'id':_0x4874c0[_0x6cf6('0x3f')]['id']}},_0x51d915={};_0x51d915[_0x6cf6('0x28')]=_[_0x6cf6('0x2a')](db[_0x6cf6('0x3c')][_0x6cf6('0x40')]);_0x51d915[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x4874c0['query']);_0x51d915[_0x6cf6('0x2b')]=_['intersection'](_0x51d915[_0x6cf6('0x28')],_0x51d915[_0x6cf6('0x29')]);_0x128f7a['attributes']=_[_0x6cf6('0x2c')](_0x51d915[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x128f7a['attributes']=_0x128f7a[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x128f7a[_0x6cf6('0x2d')]:_0x51d915['model'];if(_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x128f7a[_0x6cf6('0x3b')]=[{'all':!![]}];}_0x128f7a=_['merge']({},_0x128f7a,_0x4874c0[_0x6cf6('0x39')]);return db['WhatsappQueueReport']['find'](_0x128f7a)[_0x6cf6('0x21')](handleEntityNotFound(_0x10bb9b,null))[_0x6cf6('0x21')](respondWithResult(_0x10bb9b,null))[_0x6cf6('0x3d')](handleError(_0x10bb9b,null));};exports[_0x6cf6('0x41')]=function(_0xb8788a,_0x311745){return db[_0x6cf6('0x3c')][_0x6cf6('0x41')](_0xb8788a[_0x6cf6('0x42')],{})[_0x6cf6('0x21')](respondWithResult(_0x311745,0xc9))[_0x6cf6('0x3d')](handleError(_0x311745,null));};exports[_0x6cf6('0x20')]=function(_0x3786d1,_0x4c8ada){if(_0x3786d1[_0x6cf6('0x42')]['id']){delete _0x3786d1[_0x6cf6('0x42')]['id'];}return db['WhatsappQueueReport']['find']({'where':{'id':_0x3786d1[_0x6cf6('0x3f')]['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x4c8ada,null))[_0x6cf6('0x21')](saveUpdates(_0x3786d1[_0x6cf6('0x42')],null))[_0x6cf6('0x21')](respondWithResult(_0x4c8ada,null))[_0x6cf6('0x3d')](handleError(_0x4c8ada,null));};exports['destroy']=function(_0x115b9b,_0x262c23){return db[_0x6cf6('0x3c')]['find']({'where':{'id':_0x115b9b['params']['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x262c23,null))[_0x6cf6('0x21')](removeEntity(_0x262c23,null))[_0x6cf6('0x3d')](handleError(_0x262c23,null));};exports[_0x6cf6('0x43')]=function(_0x2dbd71,_0x1fb6f1){return db[_0x6cf6('0x3c')][_0x6cf6('0x43')]()[_0x6cf6('0x21')](respondWithResult(_0x1fb6f1,null))[_0x6cf6('0x3d')](handleError(_0x1fb6f1,null));};
\ No newline at end of file
+var _0xb9be=['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','error','stack','name','send','WhatsappQueueReport','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','map','options','includeAll','include','show','params','rawAttributes','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xb9be,0xc5));var _0xeb9b=function(_0x65c50e,_0x1aa926){_0x65c50e=_0x65c50e-0x0;var _0x4573e7=_0xb9be[_0x65c50e];return _0x4573e7;};'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(){_0x142d1c[_0xeb9b('0x1e')](0xcc)[_0xeb9b('0x19')]();});}};}function handleEntityNotFound(_0x434461,_0x4c997e){return function(_0xd57390){if(!_0xd57390){_0x434461['sendStatus'](0x194);}return _0xd57390;};}function handleError(_0x66a567,_0x5d6846){_0x5d6846=_0x5d6846||0x1f4;return function(_0x347ec1){logger[_0xeb9b('0x26')](_0x347ec1[_0xeb9b('0x27')]);if(_0x347ec1[_0xeb9b('0x28')]){delete _0x347ec1['name'];}_0x66a567[_0xeb9b('0x1e')](_0x5d6846)[_0xeb9b('0x29')](_0x347ec1);};}exports['index']=function(_0x35ff07,_0x33bb1d){var _0x5ce745={},_0x2a4b51={},_0x2ea20f={'count':0x0,'rows':[]};var _0x4188d5=_['map'](db[_0xeb9b('0x2a')]['rawAttributes'],function(_0x6bb66){return{'name':_0x6bb66['fieldName'],'type':_0x6bb66[_0xeb9b('0x2b')]['key']};});_0x2a4b51[_0xeb9b('0x2c')]=_['map'](_0x4188d5,_0xeb9b('0x28'));_0x2a4b51['query']=_[_0xeb9b('0x2d')](_0x35ff07[_0xeb9b('0x2e')]);_0x2a4b51[_0xeb9b('0x2f')]=_[_0xeb9b('0x30')](_0x2a4b51[_0xeb9b('0x2c')],_0x2a4b51[_0xeb9b('0x2e')]);_0x5ce745[_0xeb9b('0x31')]=_[_0xeb9b('0x30')](_0x2a4b51[_0xeb9b('0x2c')],qs[_0xeb9b('0x32')](_0x35ff07['query'][_0xeb9b('0x32')]));_0x5ce745[_0xeb9b('0x31')]=_0x5ce745[_0xeb9b('0x31')][_0xeb9b('0x33')]?_0x5ce745[_0xeb9b('0x31')]:_0x2a4b51[_0xeb9b('0x2c')];if(!_0x35ff07[_0xeb9b('0x2e')]['hasOwnProperty'](_0xeb9b('0x34'))){_0x5ce745[_0xeb9b('0x1c')]=qs[_0xeb9b('0x1c')](_0x35ff07['query'][_0xeb9b('0x1c')]);_0x5ce745[_0xeb9b('0x1a')]=qs[_0xeb9b('0x1a')](_0x35ff07[_0xeb9b('0x2e')][_0xeb9b('0x1a')]);}_0x5ce745[_0xeb9b('0x35')]=qs['sort'](_0x35ff07[_0xeb9b('0x2e')][_0xeb9b('0x36')]);_0x5ce745['where']=qs[_0xeb9b('0x2f')](_[_0xeb9b('0x37')](_0x35ff07[_0xeb9b('0x2e')],_0x2a4b51[_0xeb9b('0x2f')]),_0x4188d5);if(_0x35ff07[_0xeb9b('0x2e')][_0xeb9b('0x38')]){_0x5ce745[_0xeb9b('0x39')]=_['merge'](_0x5ce745[_0xeb9b('0x39')],{'$or':_[_0xeb9b('0x3a')](_0x4188d5,function(_0x3b5472){if(_0x3b5472['type']!=='VIRTUAL'){var _0x4eacc3={};_0x4eacc3[_0x3b5472[_0xeb9b('0x28')]]={'$like':'%'+_0x35ff07[_0xeb9b('0x2e')][_0xeb9b('0x38')]+'%'};return _0x4eacc3;}})});}_0x5ce745=_['merge']({},_0x5ce745,_0x35ff07[_0xeb9b('0x3b')]);var _0x9b36ae={'where':_0x5ce745[_0xeb9b('0x39')]};return db[_0xeb9b('0x2a')][_0xeb9b('0x1d')](_0x9b36ae)[_0xeb9b('0x24')](function(_0x377c9d){_0x2ea20f['count']=_0x377c9d;if(_0x35ff07[_0xeb9b('0x2e')][_0xeb9b('0x3c')]){_0x5ce745[_0xeb9b('0x3d')]=[{'all':!![]}];}return db['WhatsappQueueReport']['findAll'](_0x5ce745);})[_0xeb9b('0x24')](function(_0x110122){_0x2ea20f['rows']=_0x110122;return _0x2ea20f;})[_0xeb9b('0x24')](respondWithFilteredResult(_0x33bb1d,_0x5ce745))['catch'](handleError(_0x33bb1d,null));};exports[_0xeb9b('0x3e')]=function(_0xcce4da,_0x28b075){var _0x300565={'raw':!![],'where':{'id':_0xcce4da[_0xeb9b('0x3f')]['id']}},_0xbee63e={};_0xbee63e[_0xeb9b('0x2c')]=_[_0xeb9b('0x2d')](db[_0xeb9b('0x2a')][_0xeb9b('0x40')]);_0xbee63e[_0xeb9b('0x2e')]=_[_0xeb9b('0x2d')](_0xcce4da['query']);_0xbee63e['filters']=_[_0xeb9b('0x30')](_0xbee63e['model'],_0xbee63e[_0xeb9b('0x2e')]);_0x300565[_0xeb9b('0x31')]=_[_0xeb9b('0x30')](_0xbee63e['model'],qs[_0xeb9b('0x32')](_0xcce4da[_0xeb9b('0x2e')]['fields']));_0x300565[_0xeb9b('0x31')]=_0x300565[_0xeb9b('0x31')][_0xeb9b('0x33')]?_0x300565[_0xeb9b('0x31')]:_0xbee63e[_0xeb9b('0x2c')];if(_0xcce4da[_0xeb9b('0x2e')][_0xeb9b('0x3c')]){_0x300565[_0xeb9b('0x3d')]=[{'all':!![]}];}_0x300565=_['merge']({},_0x300565,_0xcce4da['options']);return db[_0xeb9b('0x2a')]['find'](_0x300565)['then'](handleEntityNotFound(_0x28b075,null))[_0xeb9b('0x24')](respondWithResult(_0x28b075,null))[_0xeb9b('0x41')](handleError(_0x28b075,null));};exports[_0xeb9b('0x42')]=function(_0x195f5a,_0x45bc74){return db[_0xeb9b('0x2a')]['create'](_0x195f5a['body'],{})['then'](respondWithResult(_0x45bc74,0xc9))[_0xeb9b('0x41')](handleError(_0x45bc74,null));};exports['update']=function(_0x4901b0,_0x2ee59c){if(_0x4901b0[_0xeb9b('0x43')]['id']){delete _0x4901b0[_0xeb9b('0x43')]['id'];}return db[_0xeb9b('0x2a')][_0xeb9b('0x44')]({'where':{'id':_0x4901b0[_0xeb9b('0x3f')]['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x2ee59c,null))[_0xeb9b('0x24')](saveUpdates(_0x4901b0[_0xeb9b('0x43')],null))['then'](respondWithResult(_0x2ee59c,null))['catch'](handleError(_0x2ee59c,null));};exports[_0xeb9b('0x25')]=function(_0x21c93a,_0x542ef4){return db[_0xeb9b('0x2a')]['find']({'where':{'id':_0x21c93a[_0xeb9b('0x3f')]['id']}})[_0xeb9b('0x24')](handleEntityNotFound(_0x542ef4,null))['then'](removeEntity(_0x542ef4,null))['catch'](handleError(_0x542ef4,null));};exports['describe']=function(_0x211238,_0x32d8cd){return db[_0xeb9b('0x2a')]['describe']()['then'](respondWithResult(_0x32d8cd,null))[_0xeb9b('0x41')](handleError(_0x32d8cd,null));};
\ No newline at end of file
index 4e2ed07..ae94118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc683=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid'];(function(_0x4b058e,_0x59d87c){var _0x2524cc=function(_0x2529d8){while(--_0x2529d8){_0x4b058e['push'](_0x4b058e['shift']());}};_0x2524cc(++_0x59d87c);}(_0xc683,0xb6));var _0x3c68=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0xc683[_0x476bf4];return _0x788ffe;};'use strict';var _=require(_0x3c68('0x0'));var util=require(_0x3c68('0x1'));var logger=require(_0x3c68('0x2'))(_0x3c68('0x3'));var moment=require(_0x3c68('0x4'));var BPromise=require(_0x3c68('0x5'));var rp=require(_0x3c68('0x6'));var fs=require('fs');var path=require(_0x3c68('0x7'));var rimraf=require(_0x3c68('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x1aae9b,_0x40e21e){return _0x1aae9b[_0x3c68('0x9')](_0x3c68('0xa'),attributes,{'tableName':_0x3c68('0xb'),'paranoid':![],'indexes':[{'name':_0x3c68('0xc'),'fields':[_0x3c68('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x44d4=['exports','define','uniqueid','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./whatsappQueueReport.attributes'];(function(_0x440cd2,_0x535809){var _0x419a24=function(_0x48f66c){while(--_0x48f66c){_0x440cd2['push'](_0x440cd2['shift']());}};_0x419a24(++_0x535809);}(_0x44d4,0xf5));var _0x444d=function(_0x5f6b51,_0x3902eb){_0x5f6b51=_0x5f6b51-0x0;var _0x316d99=_0x44d4[_0x5f6b51];return _0x316d99;};'use strict';var _=require('lodash');var util=require(_0x444d('0x0'));var logger=require(_0x444d('0x1'))(_0x444d('0x2'));var moment=require(_0x444d('0x3'));var BPromise=require(_0x444d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x444d('0x5'));var rimraf=require('rimraf');var config=require(_0x444d('0x6'));var attributes=require(_0x444d('0x7'));module[_0x444d('0x8')]=function(_0x38cc5f,_0x497494){return _0x38cc5f[_0x444d('0x9')]('WhatsappQueueReport',attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x444d('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 25f1563..5f6133a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ac=['limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateWhatsappQueueReport','WhatsappQueueReport','create','options','catch','UpdateWhatsappQueueReport','update','raw','where','attributes'];(function(_0x3a6beb,_0x1a5118){var _0x426ced=function(_0x350c2a){while(--_0x350c2a){_0x3a6beb['push'](_0x3a6beb['shift']());}};_0x426ced(++_0x1a5118);}(_0x67ac,0x7d));var _0xc67a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x67ac[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc67a('0x0'));var util=require(_0xc67a('0x1'));var moment=require('moment');var BPromise=require(_0xc67a('0x2'));var rs=require(_0xc67a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc67a('0x4'))['db'];var utils=require(_0xc67a('0x5'));var logger=require('../../config/logger')(_0xc67a('0x6'));var config=require(_0xc67a('0x7'));var jayson=require(_0xc67a('0x8'));var client=jayson[_0xc67a('0x9')][_0xc67a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x79f6a5,_0x15b580,_0x880820){return new BPromise(function(_0x566008,_0x47126a){return client['request'](_0x79f6a5,_0x880820)[_0xc67a('0xb')](function(_0x3897f7){logger[_0xc67a('0xc')](_0xc67a('0xd'),_0x15b580,_0xc67a('0xe'));logger[_0xc67a('0xf')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x15b580,_0xc67a('0xe'),JSON[_0xc67a('0x10')](_0x3897f7));if(_0x3897f7[_0xc67a('0x11')]){if(_0x3897f7[_0xc67a('0x11')][_0xc67a('0x12')]===0x1f4){logger['error'](_0xc67a('0xd'),_0x15b580,_0x3897f7[_0xc67a('0x11')][_0xc67a('0x13')]);return _0x47126a(_0x3897f7[_0xc67a('0x11')]['message']);}logger[_0xc67a('0x11')](_0xc67a('0xd'),_0x15b580,_0x3897f7[_0xc67a('0x11')][_0xc67a('0x13')]);return _0x566008(_0x3897f7['error'][_0xc67a('0x13')]);}else{logger[_0xc67a('0xc')](_0xc67a('0xd'),_0x15b580,'request\x20sent');_0x566008(_0x3897f7['result'][_0xc67a('0x13')]);}})['catch'](function(_0x5b6a60){logger['error'](_0xc67a('0xd'),_0x15b580,_0x5b6a60);_0x47126a(_0x5b6a60);});});}exports[_0xc67a('0x14')]=function(_0x4506ab){var _0x48fe21=this;return new Promise(function(_0x3d23d6,_0x2ff426){return db[_0xc67a('0x15')][_0xc67a('0x16')](_0x4506ab['body'],{'raw':_0x4506ab[_0xc67a('0x17')]?_0x4506ab['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2e9bd1){logger[_0xc67a('0xc')]('CreateWhatsappQueueReport',_0x4506ab);logger['debug'](_0xc67a('0x14'),_0x4506ab,JSON[_0xc67a('0x10')](_0x2e9bd1));_0x3d23d6(_0x2e9bd1);})[_0xc67a('0x18')](function(_0xaffbef){logger[_0xc67a('0x11')]('CreateWhatsappQueueReport',_0xaffbef[_0xc67a('0x13')],_0x4506ab);_0x2ff426(_0x48fe21['error'](0x1f4,_0xaffbef[_0xc67a('0x13')]));});});};exports[_0xc67a('0x19')]=function(_0x2b7a93){var _0x14f02c=this;return new Promise(function(_0x1e3a0d,_0x2a0ef6){return db['WhatsappQueueReport'][_0xc67a('0x1a')](_0x2b7a93['body'],{'raw':_0x2b7a93[_0xc67a('0x17')]?_0x2b7a93['options'][_0xc67a('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b7a93[_0xc67a('0x17')]?_0x2b7a93['options'][_0xc67a('0x1c')]||null:null,'attributes':_0x2b7a93[_0xc67a('0x17')]?_0x2b7a93['options'][_0xc67a('0x1d')]||null:null,'limit':_0x2b7a93['options']?_0x2b7a93[_0xc67a('0x17')][_0xc67a('0x1e')]||null:null})['then'](function(_0xc2a778){logger[_0xc67a('0xc')](_0xc67a('0x19'),_0x2b7a93);logger[_0xc67a('0xf')]('UpdateWhatsappQueueReport',_0x2b7a93,JSON[_0xc67a('0x10')](_0xc2a778));_0x1e3a0d(_0xc2a778);})['catch'](function(_0xa13b70){logger[_0xc67a('0x11')]('UpdateWhatsappQueueReport',_0xa13b70[_0xc67a('0x13')],_0x2b7a93);_0x2a0ef6(_0x14f02c[_0xc67a('0x11')](0x1f4,_0xa13b70['message']));});});};
\ No newline at end of file
+var _0x2ec8=['http','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','stringify','UpdateWhatsappQueueReport','update','raw','attributes','limit','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x357fac,_0x104e7e){var _0x2d9bcf=function(_0x342fde){while(--_0x342fde){_0x357fac['push'](_0x357fac['shift']());}};_0x2d9bcf(++_0x104e7e);}(_0x2ec8,0xfd));var _0x82ec=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x2ec8[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x82ec('0x0'));var util=require('util');var moment=require(_0x82ec('0x1'));var BPromise=require(_0x82ec('0x2'));var rs=require(_0x82ec('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x82ec('0x4'));var logger=require(_0x82ec('0x5'))(_0x82ec('0x6'));var config=require('../../config/environment');var jayson=require(_0x82ec('0x7'));var client=jayson['client'][_0x82ec('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2fb8a4,_0x5bb09d,_0x1b9efa){return new BPromise(function(_0x5cf97f,_0x33fcd3){return client['request'](_0x2fb8a4,_0x1b9efa)[_0x82ec('0x9')](function(_0x448fa9){logger[_0x82ec('0xa')](_0x82ec('0xb'),_0x5bb09d,_0x82ec('0xc'));logger[_0x82ec('0xd')](_0x82ec('0xe'),_0x5bb09d,_0x82ec('0xc'),JSON['stringify'](_0x448fa9));if(_0x448fa9[_0x82ec('0xf')]){if(_0x448fa9[_0x82ec('0xf')]['code']===0x1f4){logger['error'](_0x82ec('0xb'),_0x5bb09d,_0x448fa9['error'][_0x82ec('0x10')]);return _0x33fcd3(_0x448fa9[_0x82ec('0xf')][_0x82ec('0x10')]);}logger[_0x82ec('0xf')](_0x82ec('0xb'),_0x5bb09d,_0x448fa9['error']['message']);return _0x5cf97f(_0x448fa9[_0x82ec('0xf')][_0x82ec('0x10')]);}else{logger['info'](_0x82ec('0xb'),_0x5bb09d,'request\x20sent');_0x5cf97f(_0x448fa9[_0x82ec('0x11')][_0x82ec('0x10')]);}})[_0x82ec('0x12')](function(_0x5e878c){logger[_0x82ec('0xf')](_0x82ec('0xb'),_0x5bb09d,_0x5e878c);_0x33fcd3(_0x5e878c);});});}exports[_0x82ec('0x13')]=function(_0x435ffa){var _0x587a80=this;return new Promise(function(_0x2b35cb,_0x3cbb0f){return db[_0x82ec('0x14')]['create'](_0x435ffa[_0x82ec('0x15')],{'raw':_0x435ffa[_0x82ec('0x16')]?_0x435ffa[_0x82ec('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x82ec('0x9')](function(_0x44bc5d){logger[_0x82ec('0xa')]('CreateWhatsappQueueReport',_0x435ffa);logger['debug'](_0x82ec('0x13'),_0x435ffa,JSON[_0x82ec('0x17')](_0x44bc5d));_0x2b35cb(_0x44bc5d);})[_0x82ec('0x12')](function(_0x5e3ee7){logger[_0x82ec('0xf')]('CreateWhatsappQueueReport',_0x5e3ee7[_0x82ec('0x10')],_0x435ffa);_0x3cbb0f(_0x587a80['error'](0x1f4,_0x5e3ee7[_0x82ec('0x10')]));});});};exports[_0x82ec('0x18')]=function(_0x4c70e7){var _0x3dd883=this;return new Promise(function(_0x2b052c,_0x4ac150){return db[_0x82ec('0x14')][_0x82ec('0x19')](_0x4c70e7[_0x82ec('0x15')],{'raw':_0x4c70e7[_0x82ec('0x16')]?_0x4c70e7[_0x82ec('0x16')][_0x82ec('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c70e7['options']?_0x4c70e7[_0x82ec('0x16')]['where']||null:null,'attributes':_0x4c70e7['options']?_0x4c70e7[_0x82ec('0x16')][_0x82ec('0x1b')]||null:null,'limit':_0x4c70e7[_0x82ec('0x16')]?_0x4c70e7[_0x82ec('0x16')][_0x82ec('0x1c')]||null:null})[_0x82ec('0x9')](function(_0x26d7b7){logger[_0x82ec('0xa')](_0x82ec('0x18'),_0x4c70e7);logger['debug'](_0x82ec('0x18'),_0x4c70e7,JSON['stringify'](_0x26d7b7));_0x2b052c(_0x26d7b7);})[_0x82ec('0x12')](function(_0x17b2e1){logger[_0x82ec('0xf')](_0x82ec('0x18'),_0x17b2e1[_0x82ec('0x10')],_0x4c70e7);_0x4ac150(_0x3dd883[_0x82ec('0xf')](0x1f4,_0x17b2e1[_0x82ec('0x10')]));});});};
\ No newline at end of file
index 3655450..b7a05c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7070=['index','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated'];(function(_0x42cae1,_0x44de7e){var _0x16c4d6=function(_0x550fdf){while(--_0x550fdf){_0x42cae1['push'](_0x42cae1['shift']());}};_0x16c4d6(++_0x44de7e);}(_0x7070,0xfb));var _0x0707=function(_0x5a86ab,_0x2d3945){_0x5a86ab=_0x5a86ab-0x0;var _0x49a461=_0x7070[_0x5a86ab];return _0x49a461;};'use strict';var multer=require(_0x0707('0x0'));var util=require('util');var path=require(_0x0707('0x1'));var timeout=require(_0x0707('0x2'));var express=require(_0x0707('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0707('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0707('0x5'));var controller=require(_0x0707('0x6'));router[_0x0707('0x7')]('/',auth[_0x0707('0x8')](),controller[_0x0707('0x9')]);router['get'](_0x0707('0xa'),auth[_0x0707('0x8')](),controller['describe']);router[_0x0707('0x7')](_0x0707('0xb'),auth['isAuthenticated'](),controller[_0x0707('0xc')]);router[_0x0707('0xd')]('/',auth[_0x0707('0x8')](),controller[_0x0707('0xe')]);router[_0x0707('0xf')](_0x0707('0xb'),auth[_0x0707('0x8')](),controller[_0x0707('0x10')]);router[_0x0707('0x11')]('/:id',auth[_0x0707('0x8')](),controller[_0x0707('0x12')]);module[_0x0707('0x13')]=router;
\ No newline at end of file
+var _0x3e22=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x191ffe,_0x5209a2){var _0x57b617=function(_0x5fa341){while(--_0x5fa341){_0x191ffe['push'](_0x191ffe['shift']());}};_0x57b617(++_0x5209a2);}(_0x3e22,0xcd));var _0x23e2=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0x3e22[_0x521929];return _0x632436;};'use strict';var multer=require('multer');var util=require(_0x23e2('0x0'));var path=require(_0x23e2('0x1'));var timeout=require(_0x23e2('0x2'));var express=require(_0x23e2('0x3'));var router=express[_0x23e2('0x4')]();var fs_extra=require(_0x23e2('0x5'));var auth=require(_0x23e2('0x6'));var interaction=require(_0x23e2('0x7'));var config=require(_0x23e2('0x8'));var controller=require('./whatsappTransferReport.controller');router[_0x23e2('0x9')]('/',auth[_0x23e2('0xa')](),controller[_0x23e2('0xb')]);router['get'](_0x23e2('0xc'),auth[_0x23e2('0xa')](),controller[_0x23e2('0xd')]);router['get'](_0x23e2('0xe'),auth[_0x23e2('0xa')](),controller[_0x23e2('0xf')]);router[_0x23e2('0x10')]('/',auth[_0x23e2('0xa')](),controller[_0x23e2('0x11')]);router[_0x23e2('0x12')](_0x23e2('0xe'),auth['isAuthenticated'](),controller[_0x23e2('0x13')]);router[_0x23e2('0x14')](_0x23e2('0xe'),auth[_0x23e2('0xa')](),controller[_0x23e2('0x15')]);module[_0x23e2('0x16')]=router;
\ No newline at end of file
index e13d7bf..73060c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf6e=['queue','sequelize','ENUM','account','agent'];(function(_0x420194,_0x1e065c){var _0x23f84d=function(_0x275321){while(--_0x275321){_0x420194['push'](_0x420194['shift']());}};_0x23f84d(++_0x1e065c);}(_0xaf6e,0x16e));var _0xeaf6=function(_0x5885be,_0x587a9f){_0x5885be=_0x5885be-0x0;var _0x55b234=_0xaf6e[_0x5885be];return _0x55b234;};'use strict';var Sequelize=require(_0xeaf6('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xeaf6('0x1')](_0xeaf6('0x2'),_0xeaf6('0x3'),_0xeaf6('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x3308=['agent','queue','sequelize','exports','STRING','ENUM','account'];(function(_0x1d4bb6,_0x438f20){var _0x3cd968=function(_0x56d020){while(--_0x56d020){_0x1d4bb6['push'](_0x1d4bb6['shift']());}};_0x3cd968(++_0x438f20);}(_0x3308,0x160));var _0x8330=function(_0x11cdc4,_0x5016a3){_0x11cdc4=_0x11cdc4-0x0;var _0x18d1db=_0x3308[_0x11cdc4];return _0x18d1db;};'use strict';var Sequelize=require(_0x8330('0x0'));module[_0x8330('0x1')]={'uniqueid':{'type':Sequelize[_0x8330('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8330('0x3')](_0x8330('0x4'),_0x8330('0x5'),_0x8330('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index d89dc4c..2b59d90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fe=['params','rawAttributes','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','WhatsappTransferReport','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','filter','options','includeAll','rows','catch','show'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xa5fe,0x163));var _0xea5f=function(_0x548627,_0x4ec392){_0x548627=_0x548627-0x0;var _0x844a84=_0xa5fe[_0x548627];return _0x844a84;};'use strict';var emlformat=require(_0xea5f('0x0'));var rimraf=require(_0xea5f('0x1'));var zipdir=require(_0xea5f('0x2'));var jsonpatch=require(_0xea5f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xea5f('0x4'));var Mustache=require(_0xea5f('0x5'));var util=require('util');var path=require(_0xea5f('0x6'));var sox=require(_0xea5f('0x7'));var csv=require(_0xea5f('0x8'));var ejs=require(_0xea5f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xea5f('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xea5f('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xea5f('0xc'));var Redis=require(_0xea5f('0xd'));var authService=require(_0xea5f('0xe'));var qs=require(_0xea5f('0xf'));var as=require(_0xea5f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xea5f('0x11'))(_0xea5f('0x12'));var utils=require(_0xea5f('0x13'));var config=require(_0xea5f('0x14'));var licenseUtil=require(_0xea5f('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4be33a,_0xfe026a){_0xfe026a=_0xfe026a||0xcc;return function(_0x25ce22){if(_0x25ce22){return _0x4be33a[_0xea5f('0x16')](_0xfe026a);}return _0x4be33a[_0xea5f('0x17')](_0xfe026a)[_0xea5f('0x18')]();};}function respondWithResult(_0x56f898,_0xe06961){_0xe06961=_0xe06961||0xc8;return function(_0x1c6de2){if(_0x1c6de2){return _0x56f898[_0xea5f('0x17')](_0xe06961)['json'](_0x1c6de2);}};}function respondWithFilteredResult(_0x4ff299,_0x187977){return function(_0x2a9fea){if(_0x2a9fea){var _0x378f8b=typeof _0x187977[_0xea5f('0x19')]==='undefined'&&typeof _0x187977[_0xea5f('0x1a')]===_0xea5f('0x1b');var _0x45f079=_0x2a9fea[_0xea5f('0x1c')];var _0x5614c0=_0x378f8b?0x0:_0x187977['offset'];var _0x39f805=_0x378f8b?_0x2a9fea[_0xea5f('0x1c')]:_0x187977[_0xea5f('0x19')]+_0x187977[_0xea5f('0x1a')];var _0x255d62;if(_0x39f805>=_0x45f079){_0x39f805=_0x45f079;_0x255d62=0xc8;}else{_0x255d62=0xce;}_0x4ff299[_0xea5f('0x17')](_0x255d62);return _0x4ff299['set'](_0xea5f('0x1d'),_0x5614c0+'-'+_0x39f805+'/'+_0x45f079)[_0xea5f('0x1e')](_0x2a9fea);}return null;};}function patchUpdates(_0x3131da){return function(_0x376b76){try{jsonpatch[_0xea5f('0x1f')](_0x376b76,_0x3131da,!![]);}catch(_0x4b2022){return BPromise[_0xea5f('0x20')](_0x4b2022);}return _0x376b76[_0xea5f('0x21')]();};}function saveUpdates(_0x5a0cb6,_0xa2e4de){return function(_0x383f6b){if(_0x383f6b){return _0x383f6b[_0xea5f('0x22')](_0x5a0cb6)[_0xea5f('0x23')](function(_0xae8568){return _0xae8568;});}return null;};}function removeEntity(_0x5d79ba,_0x54b12b){return function(_0x5ce948){if(_0x5ce948){return _0x5ce948[_0xea5f('0x24')]()[_0xea5f('0x23')](function(){_0x5d79ba[_0xea5f('0x17')](0xcc)[_0xea5f('0x18')]();});}};}function handleEntityNotFound(_0x499927,_0x33ca83){return function(_0x498cc8){if(!_0x498cc8){_0x499927[_0xea5f('0x16')](0x194);}return _0x498cc8;};}function handleError(_0x59c69c,_0x2e0332){_0x2e0332=_0x2e0332||0x1f4;return function(_0x5eda75){logger[_0xea5f('0x25')](_0x5eda75['stack']);if(_0x5eda75[_0xea5f('0x26')]){delete _0x5eda75[_0xea5f('0x26')];}_0x59c69c[_0xea5f('0x17')](_0x2e0332)[_0xea5f('0x27')](_0x5eda75);};}exports['index']=function(_0x40ea02,_0x1c71ca){var _0x43d642={},_0xe37719={},_0x5c6bff={'count':0x0,'rows':[]};var _0x540711=_[_0xea5f('0x28')](db[_0xea5f('0x29')]['rawAttributes'],function(_0x4b5c9a){return{'name':_0x4b5c9a['fieldName'],'type':_0x4b5c9a[_0xea5f('0x2a')][_0xea5f('0x2b')]};});_0xe37719[_0xea5f('0x2c')]=_[_0xea5f('0x28')](_0x540711,_0xea5f('0x26'));_0xe37719[_0xea5f('0x2d')]=_[_0xea5f('0x2e')](_0x40ea02[_0xea5f('0x2d')]);_0xe37719['filters']=_[_0xea5f('0x2f')](_0xe37719[_0xea5f('0x2c')],_0xe37719[_0xea5f('0x2d')]);_0x43d642[_0xea5f('0x30')]=_[_0xea5f('0x2f')](_0xe37719[_0xea5f('0x2c')],qs[_0xea5f('0x31')](_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x31')]));_0x43d642['attributes']=_0x43d642['attributes'][_0xea5f('0x32')]?_0x43d642['attributes']:_0xe37719[_0xea5f('0x2c')];if(!_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x33')](_0xea5f('0x34'))){_0x43d642[_0xea5f('0x1a')]=qs[_0xea5f('0x1a')](_0x40ea02['query'][_0xea5f('0x1a')]);_0x43d642[_0xea5f('0x19')]=qs[_0xea5f('0x19')](_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x19')]);}_0x43d642[_0xea5f('0x35')]=qs[_0xea5f('0x36')](_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x36')]);_0x43d642['where']=qs[_0xea5f('0x37')](_[_0xea5f('0x38')](_0x40ea02['query'],_0xe37719[_0xea5f('0x37')]),_0x540711);if(_0x40ea02[_0xea5f('0x2d')]['filter']){_0x43d642[_0xea5f('0x39')]=_[_0xea5f('0x3a')](_0x43d642[_0xea5f('0x39')],{'$or':_[_0xea5f('0x28')](_0x540711,function(_0xe709ee){if(_0xe709ee[_0xea5f('0x2a')]!=='VIRTUAL'){var _0x5cecec={};_0x5cecec[_0xe709ee[_0xea5f('0x26')]]={'$like':'%'+_0x40ea02['query'][_0xea5f('0x3b')]+'%'};return _0x5cecec;}})});}_0x43d642=_['merge']({},_0x43d642,_0x40ea02[_0xea5f('0x3c')]);var _0x2a3176={'where':_0x43d642[_0xea5f('0x39')]};return db['WhatsappTransferReport'][_0xea5f('0x1c')](_0x2a3176)[_0xea5f('0x23')](function(_0x5476cf){_0x5c6bff['count']=_0x5476cf;if(_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x3d')]){_0x43d642['include']=[{'all':!![]}];}return db[_0xea5f('0x29')]['findAll'](_0x43d642);})[_0xea5f('0x23')](function(_0x4fa615){_0x5c6bff[_0xea5f('0x3e')]=_0x4fa615;return _0x5c6bff;})[_0xea5f('0x23')](respondWithFilteredResult(_0x1c71ca,_0x43d642))[_0xea5f('0x3f')](handleError(_0x1c71ca,null));};exports[_0xea5f('0x40')]=function(_0xe9b221,_0x1fcb66){var _0x3a4912={'raw':!![],'where':{'id':_0xe9b221[_0xea5f('0x41')]['id']}},_0x31fb05={};_0x31fb05[_0xea5f('0x2c')]=_[_0xea5f('0x2e')](db[_0xea5f('0x29')][_0xea5f('0x42')]);_0x31fb05[_0xea5f('0x2d')]=_[_0xea5f('0x2e')](_0xe9b221[_0xea5f('0x2d')]);_0x31fb05[_0xea5f('0x37')]=_['intersection'](_0x31fb05['model'],_0x31fb05['query']);_0x3a4912[_0xea5f('0x30')]=_[_0xea5f('0x2f')](_0x31fb05['model'],qs[_0xea5f('0x31')](_0xe9b221['query']['fields']));_0x3a4912[_0xea5f('0x30')]=_0x3a4912[_0xea5f('0x30')]['length']?_0x3a4912['attributes']:_0x31fb05['model'];if(_0xe9b221[_0xea5f('0x2d')]['includeAll']){_0x3a4912['include']=[{'all':!![]}];}_0x3a4912=_[_0xea5f('0x3a')]({},_0x3a4912,_0xe9b221[_0xea5f('0x3c')]);return db[_0xea5f('0x29')]['find'](_0x3a4912)[_0xea5f('0x23')](handleEntityNotFound(_0x1fcb66,null))['then'](respondWithResult(_0x1fcb66,null))[_0xea5f('0x3f')](handleError(_0x1fcb66,null));};exports['create']=function(_0x13a925,_0x1c64b7){return db[_0xea5f('0x29')]['create'](_0x13a925[_0xea5f('0x43')],{})[_0xea5f('0x23')](respondWithResult(_0x1c64b7,0xc9))['catch'](handleError(_0x1c64b7,null));};exports[_0xea5f('0x22')]=function(_0x438c17,_0x1c5f5f){if(_0x438c17[_0xea5f('0x43')]['id']){delete _0x438c17[_0xea5f('0x43')]['id'];}return db[_0xea5f('0x29')][_0xea5f('0x44')]({'where':{'id':_0x438c17['params']['id']}})[_0xea5f('0x23')](handleEntityNotFound(_0x1c5f5f,null))[_0xea5f('0x23')](saveUpdates(_0x438c17[_0xea5f('0x43')],null))[_0xea5f('0x23')](respondWithResult(_0x1c5f5f,null))[_0xea5f('0x3f')](handleError(_0x1c5f5f,null));};exports[_0xea5f('0x24')]=function(_0x2bae47,_0x2bb44d){return db['WhatsappTransferReport'][_0xea5f('0x44')]({'where':{'id':_0x2bae47[_0xea5f('0x41')]['id']}})[_0xea5f('0x23')](handleEntityNotFound(_0x2bb44d,null))[_0xea5f('0x23')](removeEntity(_0x2bb44d,null))[_0xea5f('0x3f')](handleError(_0x2bb44d,null));};exports[_0xea5f('0x45')]=function(_0x50f4df,_0x4f67d4){return db[_0xea5f('0x29')]['describe']()[_0xea5f('0x23')](respondWithResult(_0x4f67d4,null))['catch'](handleError(_0x4f67d4,null));};
\ No newline at end of file
+var _0x8aaa=['json','apply','reject','save','update','destroy','then','sendStatus','stack','name','send','index','map','type','model','query','keys','intersection','attributes','fields','length','sort','where','filters','filter','merge','VIRTUAL','WhatsappTransferReport','includeAll','include','findAll','rows','catch','params','rawAttributes','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','Content-Range'];(function(_0x8e8f89,_0x4254f3){var _0x151938=function(_0x21c367){while(--_0x21c367){_0x8e8f89['push'](_0x8e8f89['shift']());}};_0x151938(++_0x4254f3);}(_0x8aaa,0x19f));var _0xa8aa=function(_0x479746,_0x574758){_0x479746=_0x479746-0x0;var _0x36d2aa=_0x8aaa[_0x479746];return _0x36d2aa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa8aa('0x0'));var zipdir=require(_0xa8aa('0x1'));var jsonpatch=require(_0xa8aa('0x2'));var rp=require(_0xa8aa('0x3'));var moment=require(_0xa8aa('0x4'));var BPromise=require(_0xa8aa('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa8aa('0x6'));var sox=require(_0xa8aa('0x7'));var csv=require(_0xa8aa('0x8'));var ejs=require(_0xa8aa('0x9'));var fs=require('fs');var fs_extra=require(_0xa8aa('0xa'));var _=require(_0xa8aa('0xb'));var squel=require(_0xa8aa('0xc'));var crypto=require(_0xa8aa('0xd'));var jsforce=require(_0xa8aa('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa8aa('0xf'));var Papa=require(_0xa8aa('0x10'));var Redis=require(_0xa8aa('0x11'));var authService=require(_0xa8aa('0x12'));var qs=require(_0xa8aa('0x13'));var as=require(_0xa8aa('0x14'));var hardwareService=require(_0xa8aa('0x15'));var logger=require(_0xa8aa('0x16'))(_0xa8aa('0x17'));var utils=require(_0xa8aa('0x18'));var config=require(_0xa8aa('0x19'));var licenseUtil=require(_0xa8aa('0x1a'));var db=require(_0xa8aa('0x1b'))['db'];function respondWithStatusCode(_0x225ad1,_0x4cfaf8){_0x4cfaf8=_0x4cfaf8||0xcc;return function(_0x4c68e5){if(_0x4c68e5){return _0x225ad1['sendStatus'](_0x4cfaf8);}return _0x225ad1[_0xa8aa('0x1c')](_0x4cfaf8)[_0xa8aa('0x1d')]();};}function respondWithResult(_0x21bb30,_0xba501c){_0xba501c=_0xba501c||0xc8;return function(_0x18a314){if(_0x18a314){return _0x21bb30[_0xa8aa('0x1c')](_0xba501c)['json'](_0x18a314);}};}function respondWithFilteredResult(_0x5b3183,_0x3dd6dd){return function(_0x3a67bc){if(_0x3a67bc){var _0x22474c=typeof _0x3dd6dd[_0xa8aa('0x1e')]===_0xa8aa('0x1f')&&typeof _0x3dd6dd['limit']==='undefined';var _0x4be2fd=_0x3a67bc[_0xa8aa('0x20')];var _0x1fb43a=_0x22474c?0x0:_0x3dd6dd[_0xa8aa('0x1e')];var _0x18e0cb=_0x22474c?_0x3a67bc[_0xa8aa('0x20')]:_0x3dd6dd[_0xa8aa('0x1e')]+_0x3dd6dd[_0xa8aa('0x21')];var _0x23a505;if(_0x18e0cb>=_0x4be2fd){_0x18e0cb=_0x4be2fd;_0x23a505=0xc8;}else{_0x23a505=0xce;}_0x5b3183[_0xa8aa('0x1c')](_0x23a505);return _0x5b3183['set'](_0xa8aa('0x22'),_0x1fb43a+'-'+_0x18e0cb+'/'+_0x4be2fd)[_0xa8aa('0x23')](_0x3a67bc);}return null;};}function patchUpdates(_0x427a90){return function(_0x46d880){try{jsonpatch[_0xa8aa('0x24')](_0x46d880,_0x427a90,!![]);}catch(_0x57380b){return BPromise[_0xa8aa('0x25')](_0x57380b);}return _0x46d880[_0xa8aa('0x26')]();};}function saveUpdates(_0x18fded,_0x455274){return function(_0x2b9bc5){if(_0x2b9bc5){return _0x2b9bc5[_0xa8aa('0x27')](_0x18fded)['then'](function(_0x2bd9ae){return _0x2bd9ae;});}return null;};}function removeEntity(_0x597a77,_0x45ec1d){return function(_0x9b999c){if(_0x9b999c){return _0x9b999c[_0xa8aa('0x28')]()[_0xa8aa('0x29')](function(){_0x597a77['status'](0xcc)[_0xa8aa('0x1d')]();});}};}function handleEntityNotFound(_0x176aff,_0x3ed4f1){return function(_0x52acbb){if(!_0x52acbb){_0x176aff[_0xa8aa('0x2a')](0x194);}return _0x52acbb;};}function handleError(_0x2dfd51,_0x304863){_0x304863=_0x304863||0x1f4;return function(_0x1fab8b){logger['error'](_0x1fab8b[_0xa8aa('0x2b')]);if(_0x1fab8b[_0xa8aa('0x2c')]){delete _0x1fab8b['name'];}_0x2dfd51[_0xa8aa('0x1c')](_0x304863)[_0xa8aa('0x2d')](_0x1fab8b);};}exports[_0xa8aa('0x2e')]=function(_0xbc0935,_0x3ff6eb){var _0x25e63e={},_0x5d2549={},_0x28f94b={'count':0x0,'rows':[]};var _0x89dd=_[_0xa8aa('0x2f')](db['WhatsappTransferReport']['rawAttributes'],function(_0x178049){return{'name':_0x178049['fieldName'],'type':_0x178049[_0xa8aa('0x30')]['key']};});_0x5d2549[_0xa8aa('0x31')]=_['map'](_0x89dd,_0xa8aa('0x2c'));_0x5d2549[_0xa8aa('0x32')]=_[_0xa8aa('0x33')](_0xbc0935[_0xa8aa('0x32')]);_0x5d2549['filters']=_[_0xa8aa('0x34')](_0x5d2549[_0xa8aa('0x31')],_0x5d2549['query']);_0x25e63e[_0xa8aa('0x35')]=_[_0xa8aa('0x34')](_0x5d2549[_0xa8aa('0x31')],qs['fields'](_0xbc0935['query'][_0xa8aa('0x36')]));_0x25e63e[_0xa8aa('0x35')]=_0x25e63e[_0xa8aa('0x35')][_0xa8aa('0x37')]?_0x25e63e['attributes']:_0x5d2549[_0xa8aa('0x31')];if(!_0xbc0935[_0xa8aa('0x32')]['hasOwnProperty']('nolimit')){_0x25e63e['limit']=qs[_0xa8aa('0x21')](_0xbc0935[_0xa8aa('0x32')][_0xa8aa('0x21')]);_0x25e63e[_0xa8aa('0x1e')]=qs[_0xa8aa('0x1e')](_0xbc0935[_0xa8aa('0x32')]['offset']);}_0x25e63e['order']=qs[_0xa8aa('0x38')](_0xbc0935[_0xa8aa('0x32')][_0xa8aa('0x38')]);_0x25e63e[_0xa8aa('0x39')]=qs['filters'](_['pick'](_0xbc0935[_0xa8aa('0x32')],_0x5d2549[_0xa8aa('0x3a')]),_0x89dd);if(_0xbc0935['query'][_0xa8aa('0x3b')]){_0x25e63e[_0xa8aa('0x39')]=_[_0xa8aa('0x3c')](_0x25e63e[_0xa8aa('0x39')],{'$or':_[_0xa8aa('0x2f')](_0x89dd,function(_0x3a0041){if(_0x3a0041['type']!==_0xa8aa('0x3d')){var _0x2663b9={};_0x2663b9[_0x3a0041['name']]={'$like':'%'+_0xbc0935[_0xa8aa('0x32')][_0xa8aa('0x3b')]+'%'};return _0x2663b9;}})});}_0x25e63e=_[_0xa8aa('0x3c')]({},_0x25e63e,_0xbc0935['options']);var _0x2ce2c7={'where':_0x25e63e['where']};return db[_0xa8aa('0x3e')][_0xa8aa('0x20')](_0x2ce2c7)['then'](function(_0x54afb8){_0x28f94b['count']=_0x54afb8;if(_0xbc0935['query'][_0xa8aa('0x3f')]){_0x25e63e[_0xa8aa('0x40')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xa8aa('0x41')](_0x25e63e);})[_0xa8aa('0x29')](function(_0x2c3790){_0x28f94b[_0xa8aa('0x42')]=_0x2c3790;return _0x28f94b;})[_0xa8aa('0x29')](respondWithFilteredResult(_0x3ff6eb,_0x25e63e))[_0xa8aa('0x43')](handleError(_0x3ff6eb,null));};exports['show']=function(_0x1d9bce,_0x442b91){var _0x2501e6={'raw':!![],'where':{'id':_0x1d9bce[_0xa8aa('0x44')]['id']}},_0x55ca93={};_0x55ca93[_0xa8aa('0x31')]=_[_0xa8aa('0x33')](db['WhatsappTransferReport'][_0xa8aa('0x45')]);_0x55ca93[_0xa8aa('0x32')]=_[_0xa8aa('0x33')](_0x1d9bce[_0xa8aa('0x32')]);_0x55ca93[_0xa8aa('0x3a')]=_[_0xa8aa('0x34')](_0x55ca93['model'],_0x55ca93['query']);_0x2501e6['attributes']=_[_0xa8aa('0x34')](_0x55ca93['model'],qs['fields'](_0x1d9bce[_0xa8aa('0x32')][_0xa8aa('0x36')]));_0x2501e6[_0xa8aa('0x35')]=_0x2501e6[_0xa8aa('0x35')][_0xa8aa('0x37')]?_0x2501e6[_0xa8aa('0x35')]:_0x55ca93[_0xa8aa('0x31')];if(_0x1d9bce['query'][_0xa8aa('0x3f')]){_0x2501e6[_0xa8aa('0x40')]=[{'all':!![]}];}_0x2501e6=_['merge']({},_0x2501e6,_0x1d9bce[_0xa8aa('0x46')]);return db['WhatsappTransferReport'][_0xa8aa('0x47')](_0x2501e6)[_0xa8aa('0x29')](handleEntityNotFound(_0x442b91,null))['then'](respondWithResult(_0x442b91,null))[_0xa8aa('0x43')](handleError(_0x442b91,null));};exports[_0xa8aa('0x48')]=function(_0x4477b7,_0x3b2542){return db[_0xa8aa('0x3e')][_0xa8aa('0x48')](_0x4477b7[_0xa8aa('0x49')],{})['then'](respondWithResult(_0x3b2542,0xc9))[_0xa8aa('0x43')](handleError(_0x3b2542,null));};exports[_0xa8aa('0x27')]=function(_0x3765b3,_0x5c44a2){if(_0x3765b3[_0xa8aa('0x49')]['id']){delete _0x3765b3['body']['id'];}return db[_0xa8aa('0x3e')][_0xa8aa('0x47')]({'where':{'id':_0x3765b3[_0xa8aa('0x44')]['id']}})[_0xa8aa('0x29')](handleEntityNotFound(_0x5c44a2,null))[_0xa8aa('0x29')](saveUpdates(_0x3765b3[_0xa8aa('0x49')],null))[_0xa8aa('0x29')](respondWithResult(_0x5c44a2,null))[_0xa8aa('0x43')](handleError(_0x5c44a2,null));};exports[_0xa8aa('0x28')]=function(_0x11d207,_0x4c62f0){return db[_0xa8aa('0x3e')]['find']({'where':{'id':_0x11d207[_0xa8aa('0x44')]['id']}})[_0xa8aa('0x29')](handleEntityNotFound(_0x4c62f0,null))[_0xa8aa('0x29')](removeEntity(_0x4c62f0,null))[_0xa8aa('0x43')](handleError(_0x4c62f0,null));};exports['describe']=function(_0xda3358,_0x5dd488){return db['WhatsappTransferReport'][_0xa8aa('0x4a')]()[_0xa8aa('0x29')](respondWithResult(_0x5dd488,null))[_0xa8aa('0x43')](handleError(_0x5dd488,null));};
\ No newline at end of file
index da72746..6f7d346 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a89=['lodash','util','../../config/logger','api','path','rimraf','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x3a89,0x1f4));var _0x93a8=function(_0xcb2044,_0x5ba675){_0xcb2044=_0xcb2044-0x0;var _0x38e65d=_0x3a89[_0xcb2044];return _0x38e65d;};'use strict';var _=require(_0x93a8('0x0'));var util=require(_0x93a8('0x1'));var logger=require(_0x93a8('0x2'))(_0x93a8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x93a8('0x4'));var rimraf=require(_0x93a8('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappTransferReport.attributes');module[_0x93a8('0x6')]=function(_0x1b1e90,_0xbebd49){return _0x1b1e90['define'](_0x93a8('0x7'),attributes,{'tableName':_0x93a8('0x8'),'paranoid':![],'indexes':[{'name':_0x93a8('0x9'),'fields':[_0x93a8('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x926e=['report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport'];(function(_0x38a0db,_0x1310e8){var _0x58b91f=function(_0x4345fc){while(--_0x4345fc){_0x38a0db['push'](_0x38a0db['shift']());}};_0x58b91f(++_0x1310e8);}(_0x926e,0x13a));var _0xe926=function(_0x40276a,_0x47d3ed){_0x40276a=_0x40276a-0x0;var _0x51bf11=_0x926e[_0x40276a];return _0x51bf11;};'use strict';var _=require(_0xe926('0x0'));var util=require(_0xe926('0x1'));var logger=require(_0xe926('0x2'))(_0xe926('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe926('0x4'));var fs=require('fs');var path=require(_0xe926('0x5'));var rimraf=require(_0xe926('0x6'));var config=require('../../config/environment');var attributes=require(_0xe926('0x7'));module[_0xe926('0x8')]=function(_0x11d585,_0x2f8003){return _0x11d585[_0xe926('0x9')](_0xe926('0xa'),attributes,{'tableName':_0xe926('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe926('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4861432..d1f56ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc669=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0xc669,0xcf));var _0x9c66=function(_0x6327e8,_0x1537ed){_0x6327e8=_0x6327e8-0x0;var _0x4433fb=_0xc669[_0x6327e8];return _0x4433fb;};'use strict';var _=require('lodash');var util=require(_0x9c66('0x0'));var moment=require(_0x9c66('0x1'));var BPromise=require(_0x9c66('0x2'));var rs=require(_0x9c66('0x3'));var fs=require('fs');var Redis=require(_0x9c66('0x4'));var db=require(_0x9c66('0x5'))['db'];var utils=require(_0x9c66('0x6'));var logger=require(_0x9c66('0x7'))(_0x9c66('0x8'));var config=require(_0x9c66('0x9'));var jayson=require(_0x9c66('0xa'));var client=jayson[_0x9c66('0xb')][_0x9c66('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x14db5c,_0x13cbcb,_0x421af7){return new BPromise(function(_0x3ba867,_0x4fefd0){return client['request'](_0x14db5c,_0x421af7)[_0x9c66('0xd')](function(_0x1501d0){logger[_0x9c66('0xe')](_0x9c66('0xf'),_0x13cbcb,_0x9c66('0x10'));logger[_0x9c66('0x11')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x13cbcb,_0x9c66('0x10'),JSON[_0x9c66('0x12')](_0x1501d0));if(_0x1501d0[_0x9c66('0x13')]){if(_0x1501d0[_0x9c66('0x13')]['code']===0x1f4){logger[_0x9c66('0x13')](_0x9c66('0xf'),_0x13cbcb,_0x1501d0[_0x9c66('0x13')][_0x9c66('0x14')]);return _0x4fefd0(_0x1501d0[_0x9c66('0x13')][_0x9c66('0x14')]);}logger['error'](_0x9c66('0xf'),_0x13cbcb,_0x1501d0[_0x9c66('0x13')]['message']);return _0x3ba867(_0x1501d0['error'][_0x9c66('0x14')]);}else{logger[_0x9c66('0xe')](_0x9c66('0xf'),_0x13cbcb,'request\x20sent');_0x3ba867(_0x1501d0[_0x9c66('0x15')][_0x9c66('0x14')]);}})[_0x9c66('0x16')](function(_0x2ff967){logger[_0x9c66('0x13')](_0x9c66('0xf'),_0x13cbcb,_0x2ff967);_0x4fefd0(_0x2ff967);});});}
\ No newline at end of file
+var _0xa077=['rpc','../../config/environment','client','request','info','WhatsappTransferReport,\x20%s,\x20%s','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x599397,_0x45c5b6){var _0x1806d0=function(_0x2d8ddf){while(--_0x2d8ddf){_0x599397['push'](_0x599397['shift']());}};_0x1806d0(++_0x45c5b6);}(_0xa077,0x14f));var _0x7a07=function(_0x1889c8,_0x53fa18){_0x1889c8=_0x1889c8-0x0;var _0x20b9c1=_0xa077[_0x1889c8];return _0x20b9c1;};'use strict';var _=require(_0x7a07('0x0'));var util=require(_0x7a07('0x1'));var moment=require('moment');var BPromise=require(_0x7a07('0x2'));var rs=require(_0x7a07('0x3'));var fs=require('fs');var Redis=require(_0x7a07('0x4'));var db=require(_0x7a07('0x5'))['db'];var utils=require(_0x7a07('0x6'));var logger=require('../../config/logger')(_0x7a07('0x7'));var config=require(_0x7a07('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7a07('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47ebb2,_0x4f32a0,_0x483e04){return new BPromise(function(_0x324c5f,_0x135cfa){return client[_0x7a07('0xa')](_0x47ebb2,_0x483e04)['then'](function(_0x2c27d1){logger[_0x7a07('0xb')](_0x7a07('0xc'),_0x4f32a0,'request\x20sent');logger['debug'](_0x7a07('0xd'),_0x4f32a0,'request\x20sent',JSON['stringify'](_0x2c27d1));if(_0x2c27d1[_0x7a07('0xe')]){if(_0x2c27d1['error'][_0x7a07('0xf')]===0x1f4){logger[_0x7a07('0xe')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f32a0,_0x2c27d1[_0x7a07('0xe')][_0x7a07('0x10')]);return _0x135cfa(_0x2c27d1['error'][_0x7a07('0x10')]);}logger[_0x7a07('0xe')](_0x7a07('0xc'),_0x4f32a0,_0x2c27d1[_0x7a07('0xe')]['message']);return _0x324c5f(_0x2c27d1['error']['message']);}else{logger['info'](_0x7a07('0xc'),_0x4f32a0,_0x7a07('0x11'));_0x324c5f(_0x2c27d1['result'][_0x7a07('0x10')]);}})[_0x7a07('0x12')](function(_0xa0f8c2){logger[_0x7a07('0xe')](_0x7a07('0xc'),_0x4f32a0,_0xa0f8c2);_0x135cfa(_0xa0f8c2);});});}
\ No newline at end of file
index 010f9b9..fc89da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b5=['name','Offline\x20apps:','status','None','./config/license','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./rpc','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule','./config/schedule/transcribe','sync','then','listen','info','start','Online\x20apps:','map','filter','online'];(function(_0x57c9a9,_0x48c040){var _0x19a608=function(_0x671481){while(--_0x671481){_0x57c9a9['push'](_0x57c9a9['shift']());}};_0x19a608(++_0x48c040);}(_0x87b5,0x133));var _0x587b=function(_0x289b59,_0x240f71){_0x289b59=_0x289b59-0x0;var _0x13c697=_0x87b5[_0x289b59];return _0x13c697;};'use strict';var _=require(_0x587b('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0x587b('0x1'));var config=require(_0x587b('0x2'));var logger=require(_0x587b('0x3'))(_0x587b('0x4'));var pm2=require('./config/pm2');var pm2Config=require(_0x587b('0x5'));var schedule=require(_0x587b('0x6'));var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x587b('0x7'));function main(){return mysqldb['db']['sequelize'][_0x587b('0x8')]()[_0x587b('0x9')](function(){return rpc[_0x587b('0xa')]();})[_0x587b('0x9')](function(_0x42cf71){logger[_0x587b('0xb')](_0x42cf71);return chat[_0x587b('0xc')]();})[_0x587b('0x9')](function(){return whatsapp[_0x587b('0xc')]();})[_0x587b('0x9')](function(){return schedule[_0x587b('0xc')]();})['then'](function(){return transcribe['start']();})[_0x587b('0x9')](function(_0x1a574e){logger[_0x587b('0xb')](_0x1a574e);return pm2[_0x587b('0xc')](pm2Config);})[_0x587b('0x9')](function(_0x55de00){logger[_0x587b('0xb')](_0x587b('0xd'),_[_0x587b('0xe')](_[_0x587b('0xf')](_0x55de00,{'status':_0x587b('0x10')}),_0x587b('0x11'))['join']());logger[_0x587b('0xb')](_0x587b('0x12'),_[_0x587b('0xe')](_[_0x587b('0xf')](_0x55de00,function(_0x22a4f0){return _0x22a4f0[_0x587b('0x13')]!==_0x587b('0x10');}),'name')['join']()||_0x587b('0x14'));config['seedDB']&&require('./config/seedDB')['default']();require(_0x587b('0x15'))[_0x587b('0x16')]();})[_0x587b('0x17')](function(_0x1dd3bc){logger[_0x587b('0x18')](_0x587b('0x19'),_0x1dd3bc);process[_0x587b('0x1a')](0x1);});}main();
\ No newline at end of file
+var _0x1921=['./config/schedule/transcribe','sequelize','sync','listen','start','then','info','Online\x20apps:','map','online','join','Offline\x20apps:','filter','status','name','./config/seedDB','default','catch','error','lodash','./mysqldb','./rpc','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x1921,0x1ef));var _0x1192=function(_0x13f465,_0x3102ec){_0x13f465=_0x13f465-0x0;var _0x4a464c=_0x1921[_0x13f465];return _0x4a464c;};'use strict';var _=require(_0x1192('0x0'));var mysqldb=require(_0x1192('0x1'));var rpc=require(_0x1192('0x2'));var config=require('./config/environment');var logger=require('./config/logger')(_0x1192('0x3'));var pm2=require(_0x1192('0x4'));var pm2Config=require(_0x1192('0x5'));var schedule=require(_0x1192('0x6'));var chat=require(_0x1192('0x7'));var whatsapp=require(_0x1192('0x8'));var transcribe=require(_0x1192('0x9'));function main(){return mysqldb['db'][_0x1192('0xa')][_0x1192('0xb')]()['then'](function(){return rpc[_0x1192('0xc')]();})['then'](function(_0x145dd1){logger['info'](_0x145dd1);return chat['start']();})['then'](function(){return whatsapp[_0x1192('0xd')]();})[_0x1192('0xe')](function(){return schedule[_0x1192('0xd')]();})[_0x1192('0xe')](function(){return transcribe[_0x1192('0xd')]();})[_0x1192('0xe')](function(_0x3c30f9){logger[_0x1192('0xf')](_0x3c30f9);return pm2['start'](pm2Config);})[_0x1192('0xe')](function(_0x5c6021){logger['info'](_0x1192('0x10'),_[_0x1192('0x11')](_['filter'](_0x5c6021,{'status':_0x1192('0x12')}),'name')[_0x1192('0x13')]());logger['info'](_0x1192('0x14'),_[_0x1192('0x11')](_[_0x1192('0x15')](_0x5c6021,function(_0x1bf215){return _0x1bf215[_0x1192('0x16')]!==_0x1192('0x12');}),_0x1192('0x17'))[_0x1192('0x13')]()||'None');config['seedDB']&&require(_0x1192('0x18'))[_0x1192('0x19')]();require('./config/license')[_0x1192('0x19')]();})[_0x1192('0x1a')](function(_0x398c10){logger[_0x1192('0x1b')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x398c10);process['exit'](0x1);});}main();
\ No newline at end of file
index a148bbe..5b61d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa69e=['retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','getUuid','test','Sequelize','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','ValidationError','splice','unshift','encryptString','join','promisify','secret','payload','options','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','basic-auth','crypto','bluebird','util','moment','secrets','session','role','fullname','internal','email','userpic','permissions','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','hotdesk','interface','privacyEnabled','settingsEnabled','downloadVoiceRecordings','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','findOne','params','closed','disposition','unmanaged','json','Unmanaged.','Forbidden.','use','headers','startsWith','authorization','User','find','name','then','authenticate','pass','status','Wrong\x20credentials.','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','blockDuration','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blockedAt','minutes','User\x20object\x20not\x20found.','getLicense','update','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','send'];(function(_0x1d5de9,_0x34a5f4){var _0x13f62b=function(_0x2f0ee9){while(--_0x2f0ee9){_0x1d5de9['push'](_0x1d5de9['shift']());}};_0x13f62b(++_0x34a5f4);}(_0xa69e,0x1f4));var _0xea69=function(_0x351458,_0xecb212){_0x351458=_0x351458-0x0;var _0x42f241=_0xa69e[_0x351458];return _0x42f241;};'use strict';var db=require(_0xea69('0x0'))['db'];var config=require(_0xea69('0x1'));var hardwareConf=require(_0xea69('0x2'));var licenseUtil=require(_0xea69('0x3'));var encryptor=require('../encryptor');var _=require(_0xea69('0x4'));var jwt=require(_0xea69('0x5'));var expressJwt=require('express-jwt');var compose=require('composable-middleware');var basicAuth=require(_0xea69('0x6'));var crypto=require(_0xea69('0x7'));var BPromise=require(_0xea69('0x8'));var util=require(_0xea69('0x9'));var moment=require(_0xea69('0xa'));var validateJwt=expressJwt({'secret':config[_0xea69('0xb')][_0xea69('0xc')]});var userAttributes=['id',_0xea69('0xd'),_0xea69('0xe'),'name',_0xea69('0xf'),_0xea69('0x10'),_0xea69('0x11'),_0xea69('0x12'),'md5secret','voicePause',_0xea69('0x13'),_0xea69('0x14'),_0xea69('0x15'),_0xea69('0x16'),_0xea69('0x17'),_0xea69('0x18'),_0xea69('0x19'),_0xea69('0x1a'),'lastPauseAt',_0xea69('0x1b'),_0xea69('0x1c'),_0xea69('0x1d'),_0xea69('0x1e'),_0xea69('0x1f'),_0xea69('0x20'),_0xea69('0x21'),_0xea69('0x22'),_0xea69('0x23'),_0xea69('0x24'),_0xea69('0x25'),_0xea69('0x26'),'phoneBarRemoteControl','phoneBarRemoteControlPort',_0xea69('0x27'),_0xea69('0x28'),'userProfileId',_0xea69('0x29'),_0xea69('0x2a'),'wssPort',_0xea69('0x2b'),'downloadOmnichannelInteractions','downloadAttachments'];exports[_0xea69('0x2c')]=function(){return this[_0xea69('0x2d')](!![])['use'](function(_0x3d5262,_0x581206,_0x2215ea){if(_0x3d5262[_0xea69('0x2e')]){_0x2215ea();}else{return db[_0xea69('0x2f')][_0xea69('0x30')]({'where':{'id':_0x3d5262[_0xea69('0x31')]['id']},'attributes':['id',_0xea69('0x32'),_0xea69('0x33')],'raw':!![]})['then'](function(_0x22d1df){if(_0x22d1df&&_0x22d1df['closed']){return _0x581206['status'](_0x22d1df['disposition']===_0xea69('0x34')?0x195:0x193)[_0xea69('0x35')]({'message':_0x22d1df['disposition']==='unmanaged'?_0xea69('0x36'):_0xea69('0x37')});}else{_0x2215ea();}})['catch'](function(_0xa13477){_0x2215ea(_0xa13477);});}});};exports[_0xea69('0x2d')]=function isAuthenticated(_0x241078){return compose()[_0xea69('0x38')](function(_0x1ce2c5,_0x3e8df1,_0x2af5ea){var _0x573680;if(_0x1ce2c5[_0xea69('0x39')]['authorization']){if(_[_0xea69('0x3a')](_0x1ce2c5[_0xea69('0x39')][_0xea69('0x3b')],'Basic')){var _0x11a5cb=basicAuth(_0x1ce2c5);db[_0xea69('0x3c')][_0xea69('0x3d')]({'where':{'name':_0x11a5cb[_0xea69('0x3e')]}})[_0xea69('0x3f')](function(_0x3884f9){if(!_0x3884f9||!_0x3884f9[_0xea69('0x40')](_0x11a5cb[_0xea69('0x41')])){return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':_0xea69('0x43')});}_0x1ce2c5['user']={'id':_0x3884f9['id']};_0x2af5ea();})[_0xea69('0x44')](function(_0x309c05){_0x2af5ea(_0x309c05);});}else if(_[_0xea69('0x3a')](_0x1ce2c5[_0xea69('0x39')][_0xea69('0x3b')],_0xea69('0x45'))){validateJwt(_0x1ce2c5,_0x3e8df1,_0x2af5ea);}else{if(_0x241078){_0x2af5ea();}else{return _0x3e8df1[_0xea69('0x42')](0x193)[_0xea69('0x35')]({'message':_0xea69('0x46')});}}}else if(_0x1ce2c5[_0xea69('0x47')][_0xea69('0x48')]){try{var _0x46ac67={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x1ce2c5[_0xea69('0x47')]['apikey'],_0x46ac67)[_0xea69('0x3f')](function(_0x376918){return db[_0xea69('0x3c')][_0xea69('0x3d')]({'where':{'id':_0x376918['sub']}})[_0xea69('0x3f')](function(_0x4826c7){_0x573680=_0x4826c7;return db['Setting'][_0xea69('0x30')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xea69('0x49')],'raw':!![]});})[_0xea69('0x3f')](function(_0x233080){if(!_0x573680||!_['isEqual'](_0x573680[_0xea69('0x4a')],_0x376918[_0xea69('0x4b')])){return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x573680[_0xea69('0x4c')]){return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':_0xea69('0x4d')});}if(_0x573680['blocked']){if(_0x233080[_0xea69('0x49')]>0x0){if(moment(_0x573680[_0xea69('0x4e')])['add'](_0x233080['blockDuration'],_0xea69('0x4f'))>moment()){return _0x3e8df1['status'](0x191)[_0xea69('0x35')]({'message':_0xea69('0x4d')});}}else{return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x1ce2c5[_0xea69('0x2e')]={'id':_0x573680['id']};_0x2af5ea();});})[_0xea69('0x44')](function(){return _0x3e8df1[_0xea69('0x42')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x3b5b6d){_0x2af5ea(_0x3b5b6d);}}else if(_0x241078){_0x2af5ea();}else{return _0x3e8df1[_0xea69('0x42')](0x193)[_0xea69('0x35')]({'message':_0xea69('0x46')});}})[_0xea69('0x38')](function(_0x8cb03c,_0x4cf8c5,_0x492481){if(_0x8cb03c[_0xea69('0x2e')]){db['User']['find']({'where':{'id':_0x8cb03c[_0xea69('0x2e')]['id']},'attributes':userAttributes})[_0xea69('0x3f')](function(_0x65c2f8){if(!_0x65c2f8){return _0x4cf8c5[_0xea69('0x42')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x8cb03c[_0xea69('0x2e')]=_0x65c2f8;_0x492481();})['catch'](function(_0x8b01dc){_0x492481(_0x8b01dc);});}else if(_0x241078){_0x492481();}else{return _0x4cf8c5['status'](0x194)['json']({'message':_0xea69('0x50')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xea69('0x38')](function(_0x261784,_0x2b9347,_0x414b57){return licenseUtil[_0xea69('0x51')]()['then'](function(_0x5cd7a1){if(_0x5cd7a1[_0xea69('0x52')]){_0x414b57();}else{return _0x2b9347[_0xea69('0x42')](0x193)[_0xea69('0x35')]({'message':_0xea69('0x53')});}})[_0xea69('0x44')](function(_0x4d4910){_0x414b57(_0x4d4910);});});};exports[_0xea69('0x54')]=function(_0x2fe5a6,_0x55792a,_0x234b7c){_0x2fe5a6[_0xea69('0x54')]=!![];return _0x234b7c();};exports['signToken']=function signToken(_0x54a564){return signJwt(_0x54a564);};exports[_0xea69('0x55')]=function(_0x41a669,_0x13260c){if(!_0x41a669[_0xea69('0x2e')]){return _0x13260c[_0xea69('0x42')](0x194)[_0xea69('0x35')]({'message':_0xea69('0x56')});}var _0x2f030b={'payload':{'id':_0x41a669['user']['id'],'role':_0x41a669[_0xea69('0x2e')][_0xea69('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x2f030b)['then'](function(_0x3f2e37){_0x13260c[_0xea69('0x57')](_0xea69('0x58'),_0x3f2e37);_0x13260c['redirect']('/dashboards/general');})['catch'](function(_0xa01e48){return _0x13260c[_0xea69('0x42')](0x1f4)[_0xea69('0x59')](_0xa01e48);});};exports[_0xea69('0x5a')]=function(_0x55d2cf){if(_[_0xea69('0x5b')](_0x55d2cf[_0xea69('0x4a')])||_['isNil'](_0x55d2cf[_0xea69('0x5c')])){return null;}else{return createJwt(_0x55d2cf);}};exports[_0xea69('0x5d')]=function(_0x2287c9){_0x2287c9[_0xea69('0x4a')]=generateNonce();_0x2287c9[_0xea69('0x5c')]=generateIssuedAt();return createJwt(_0x2287c9);};exports[_0xea69('0x5e')]=function(_0x1965db,_0x4004fe){var _0x1bb94b=_0x1965db[_0xea69('0x47')][_0xea69('0x48')];if(_0x1bb94b){var _0xd69389={'nonce':_0x4004fe[_0xea69('0x4a')],'iat':_0x4004fe[_0xea69('0x5c')],'audience':hardwareConf[_0xea69('0x5f')](),'issuer':hardwareConf[_0xea69('0x5f')]()};return verifyJwt(_0x1bb94b,_0xd69389)[_0xea69('0x3f')](function(){return generateApiKey(_0x4004fe);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x501dc9){var _0x698134=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x698134[_0xea69('0x60')](_0x501dc9))throw new db[(_0xea69('0x61'))]['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~!@#$%^&-_=+[{]}.');return;};exports['validatePasswordHistory']=function(_0x5406cd,_0xb8666a,_0x109bf1){var _0x573bcb=encryptor[_0xea69('0x62')](_0xb8666a)[_0xea69('0x63')](',');for(var _0x51351d=0x0;_0x51351d<_0x109bf1;_0x51351d++){if(!_0x573bcb[_0x51351d])break;if(_0x5406cd['toLowerCase']()===_0x573bcb[_0x51351d][_0xea69('0x64')]()){var _0x20a187=util[_0xea69('0x65')](_0xea69('0x66'),_0x109bf1);if(_0x109bf1===0x1){_0x20a187='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xea69('0x61'))][(_0xea69('0x67'))](_0x20a187);}}return;};exports['updatePasswordsHistory']=function(_0x5c17bb,_0x183bf1){var _0x567145=_0x183bf1?encryptor[_0xea69('0x62')](_0x183bf1)[_0xea69('0x63')](','):[];if(_0x567145['length']===0x5){_0x567145[_0xea69('0x68')](-0x1,0x1);}_0x567145[_0xea69('0x69')](_0x5c17bb);return encryptor[_0xea69('0x6a')](_0x567145[_0xea69('0x6b')](','));};function signJwt(_0x11e745){var _0x3fe688=BPromise[_0xea69('0x6c')](jwt['sign'],{'context':jwt});var _0x1bbae1=_0x11e745[_0xea69('0x6d')]||config[_0xea69('0xb')]['session'];return new BPromise(function(_0x1c3ca9,_0x17afa8){_0x3fe688(_0x11e745[_0xea69('0x6e')],_0x1bbae1,_0x11e745[_0xea69('0x6f')])[_0xea69('0x3f')](function(_0x46d8a0){_0x1c3ca9(_0x46d8a0);})[_0xea69('0x44')](function(_0x4bcfb6){_0x17afa8(_0x4bcfb6);});});}function verifyJwt(_0xa7e993,_0x2cdff2,_0x3be002){var _0x110bd2=BPromise[_0xea69('0x6c')](jwt['verify'],{'context':jwt});var _0x1a8d2d=_0x3be002||config[_0xea69('0xb')][_0xea69('0xc')];return new BPromise(function(_0x44dea5,_0x48691f){_0x110bd2(_0xa7e993,_0x1a8d2d,_0x2cdff2)[_0xea69('0x3f')](function(_0x32dab4){_0x44dea5(_0x32dab4);})[_0xea69('0x44')](function(_0x8e6d37){_0x48691f(_0x8e6d37);});});}function generateNonce(){return crypto[_0xea69('0x70')](0x10)[_0xea69('0x71')](_0xea69('0x72'));}function generateIssuedAt(){return Math[_0xea69('0x73')](Date[_0xea69('0x74')]()/0x3e8)[_0xea69('0x71')]();}function createJwt(_0x5f1ecb){var _0x980a0={'payload':{'iat':_0x5f1ecb['apiKeyIat'],'nonce':_0x5f1ecb['apiKeyNonce']},'options':{'algorithm':_0xea69('0x75'),'subject':_0x5f1ecb['id']['toString'](),'issuer':hardwareConf[_0xea69('0x5f')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x980a0)[_0xea69('0x3f')](function(_0x1cc39c){return{'iat':_0x5f1ecb[_0xea69('0x5c')],'nonce':_0x5f1ecb[_0xea69('0x4a')],'token':_0x1cc39c};});}
\ No newline at end of file
+var _0x6a5a=['userpic','voicePause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','use','user','ChatInteraction','params','closed','then','status','disposition','json','unmanaged','Unmanaged.','Forbidden.','catch','isAuthenticated','authorization','startsWith','headers','Basic','find','pass','Wrong\x20credentials.','Bearer','query','apikey','getUuid','User','Setting','blockDuration','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','add','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyNonce','apiKeyIat','generateApiKey','regenerateApiKey','validatePasswordPattern','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~!@#$%^&-_=+[{]}.','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.','ValidationError','updatePasswordsHistory','length','splice','unshift','encryptString','join','secret','secrets','payload','options','promisify','verify','toString','hex','now','HS512','../../mysqldb','../../config/license/hardware','../../config/license/util','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','session','role','fullname','internal'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x6a5a,0x1f1));var _0xa6a5=function(_0x437e39,_0x59fb31){_0x437e39=_0x437e39-0x0;var _0x59af08=_0x6a5a[_0x437e39];return _0x59af08;};'use strict';var db=require(_0xa6a5('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0xa6a5('0x1'));var licenseUtil=require(_0xa6a5('0x2'));var encryptor=require('../encryptor');var _=require('lodash');var jwt=require(_0xa6a5('0x3'));var expressJwt=require(_0xa6a5('0x4'));var compose=require(_0xa6a5('0x5'));var basicAuth=require(_0xa6a5('0x6'));var crypto=require(_0xa6a5('0x7'));var BPromise=require(_0xa6a5('0x8'));var util=require(_0xa6a5('0x9'));var moment=require(_0xa6a5('0xa'));var validateJwt=expressJwt({'secret':config['secrets'][_0xa6a5('0xb')]});var userAttributes=['id',_0xa6a5('0xc'),_0xa6a5('0xd'),'name',_0xa6a5('0xe'),'email',_0xa6a5('0xf'),'permissions','md5secret',_0xa6a5('0x10'),'chatPause',_0xa6a5('0x11'),_0xa6a5('0x12'),_0xa6a5('0x13'),_0xa6a5('0x14'),_0xa6a5('0x15'),_0xa6a5('0x16'),_0xa6a5('0x17'),'lastPauseAt',_0xa6a5('0x18'),_0xa6a5('0x19'),_0xa6a5('0x1a'),'alias',_0xa6a5('0x1b'),_0xa6a5('0x1c'),_0xa6a5('0x1d'),_0xa6a5('0x1e'),_0xa6a5('0x1f'),_0xa6a5('0x20'),_0xa6a5('0x21'),_0xa6a5('0x22'),_0xa6a5('0x23'),_0xa6a5('0x24'),_0xa6a5('0x25'),'interface',_0xa6a5('0x26'),_0xa6a5('0x27'),_0xa6a5('0x28'),'wssPort',_0xa6a5('0x29'),_0xa6a5('0x2a'),_0xa6a5('0x2b')];exports[_0xa6a5('0x2c')]=function(){return this['isAuthenticated'](!![])[_0xa6a5('0x2d')](function(_0x4147f0,_0x1b895b,_0x321c60){if(_0x4147f0[_0xa6a5('0x2e')]){_0x321c60();}else{return db[_0xa6a5('0x2f')]['findOne']({'where':{'id':_0x4147f0[_0xa6a5('0x30')]['id']},'attributes':['id',_0xa6a5('0x31'),'disposition'],'raw':!![]})[_0xa6a5('0x32')](function(_0x40ace9){if(_0x40ace9&&_0x40ace9['closed']){return _0x1b895b[_0xa6a5('0x33')](_0x40ace9[_0xa6a5('0x34')]==='unmanaged'?0x195:0x193)[_0xa6a5('0x35')]({'message':_0x40ace9[_0xa6a5('0x34')]===_0xa6a5('0x36')?_0xa6a5('0x37'):_0xa6a5('0x38')});}else{_0x321c60();}})[_0xa6a5('0x39')](function(_0x34f5cf){_0x321c60(_0x34f5cf);});}});};exports[_0xa6a5('0x3a')]=function isAuthenticated(_0x1a6b49){return compose()[_0xa6a5('0x2d')](function(_0x3c2998,_0x52356b,_0x528981){var _0xa55035;if(_0x3c2998['headers'][_0xa6a5('0x3b')]){if(_[_0xa6a5('0x3c')](_0x3c2998[_0xa6a5('0x3d')]['authorization'],_0xa6a5('0x3e'))){var _0x321dfe=basicAuth(_0x3c2998);db['User'][_0xa6a5('0x3f')]({'where':{'name':_0x321dfe['name']}})['then'](function(_0x35b19c){if(!_0x35b19c||!_0x35b19c['authenticate'](_0x321dfe[_0xa6a5('0x40')])){return _0x52356b[_0xa6a5('0x33')](0x191)[_0xa6a5('0x35')]({'message':_0xa6a5('0x41')});}_0x3c2998[_0xa6a5('0x2e')]={'id':_0x35b19c['id']};_0x528981();})[_0xa6a5('0x39')](function(_0x151859){_0x528981(_0x151859);});}else if(_['startsWith'](_0x3c2998['headers']['authorization'],_0xa6a5('0x42'))){validateJwt(_0x3c2998,_0x52356b,_0x528981);}else{if(_0x1a6b49){_0x528981();}else{return _0x52356b['status'](0x193)[_0xa6a5('0x35')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x3c2998[_0xa6a5('0x43')][_0xa6a5('0x44')]){try{var _0x5806c6={'audience':hardwareConf[_0xa6a5('0x45')](),'issuer':hardwareConf[_0xa6a5('0x45')]()};verifyJwt(_0x3c2998['query'][_0xa6a5('0x44')],_0x5806c6)[_0xa6a5('0x32')](function(_0x1176d4){return db[_0xa6a5('0x46')][_0xa6a5('0x3f')]({'where':{'id':_0x1176d4['sub']}})[_0xa6a5('0x32')](function(_0x2653e6){_0xa55035=_0x2653e6;return db[_0xa6a5('0x47')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xa6a5('0x48')],'raw':!![]});})['then'](function(_0x1dea5a){if(!_0xa55035||!_['isEqual'](_0xa55035['apiKeyNonce'],_0x1176d4[_0xa6a5('0x49')])){return _0x52356b[_0xa6a5('0x33')](0x191)[_0xa6a5('0x35')]({'message':_0xa6a5('0x4a')});}if(_0xa55035[_0xa6a5('0x4b')]){return _0x52356b['status'](0x191)[_0xa6a5('0x35')]({'message':_0xa6a5('0x4c')});}if(_0xa55035[_0xa6a5('0x4d')]){if(_0x1dea5a['blockDuration']>0x0){if(moment(_0xa55035['blockedAt'])[_0xa6a5('0x4e')](_0x1dea5a[_0xa6a5('0x48')],_0xa6a5('0x4f'))>moment()){return _0x52356b[_0xa6a5('0x33')](0x191)[_0xa6a5('0x35')]({'message':_0xa6a5('0x4c')});}}else{return _0x52356b[_0xa6a5('0x33')](0x191)[_0xa6a5('0x35')]({'message':_0xa6a5('0x4c')});}}_0x3c2998[_0xa6a5('0x2e')]={'id':_0xa55035['id']};_0x528981();});})[_0xa6a5('0x39')](function(){return _0x52356b[_0xa6a5('0x33')](0x191)[_0xa6a5('0x35')]({'message':_0xa6a5('0x4c')});});}catch(_0x4b1c90){_0x528981(_0x4b1c90);}}else if(_0x1a6b49){_0x528981();}else{return _0x52356b['status'](0x193)[_0xa6a5('0x35')]({'message':_0xa6a5('0x50')});}})['use'](function(_0x1c8884,_0xafc9e9,_0x325350){if(_0x1c8884[_0xa6a5('0x2e')]){db['User']['find']({'where':{'id':_0x1c8884[_0xa6a5('0x2e')]['id']},'attributes':userAttributes})[_0xa6a5('0x32')](function(_0x5e70ed){if(!_0x5e70ed){return _0xafc9e9['status'](0x194)[_0xa6a5('0x35')]({'message':_0xa6a5('0x51')});}_0x1c8884['user']=_0x5e70ed;_0x325350();})[_0xa6a5('0x39')](function(_0x4b9a2c){_0x325350(_0x4b9a2c);});}else if(_0x1a6b49){_0x325350();}else{return _0xafc9e9[_0xa6a5('0x33')](0x194)[_0xa6a5('0x35')]({'message':_0xa6a5('0x52')});}});};exports[_0xa6a5('0x53')]=function canUpdate(){return compose()[_0xa6a5('0x2d')](function(_0x22d4e7,_0x213f29,_0x1320ff){return licenseUtil[_0xa6a5('0x54')]()[_0xa6a5('0x32')](function(_0x2d249e){if(_0x2d249e[_0xa6a5('0x55')]){_0x1320ff();}else{return _0x213f29['status'](0x193)[_0xa6a5('0x35')]({'message':_0xa6a5('0x56')});}})[_0xa6a5('0x39')](function(_0x1b2b9e){_0x1320ff(_0x1b2b9e);});});};exports[_0xa6a5('0x57')]=function(_0x11677d,_0x19bcec,_0x162519){_0x11677d[_0xa6a5('0x57')]=!![];return _0x162519();};exports[_0xa6a5('0x58')]=function signToken(_0xea8d69){return signJwt(_0xea8d69);};exports[_0xa6a5('0x59')]=function(_0x5efccd,_0x1f1012){if(!_0x5efccd[_0xa6a5('0x2e')]){return _0x1f1012['status'](0x194)[_0xa6a5('0x35')]({'message':_0xa6a5('0x5a')});}var _0x4696ae={'payload':{'id':_0x5efccd['user']['id'],'role':_0x5efccd['user'][_0xa6a5('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x4696ae)[_0xa6a5('0x32')](function(_0x13fd6b){_0x1f1012[_0xa6a5('0x5b')]('motion.token',_0x13fd6b);_0x1f1012[_0xa6a5('0x5c')](_0xa6a5('0x5d'));})['catch'](function(_0x3efc76){return _0x1f1012[_0xa6a5('0x33')](0x1f4)[_0xa6a5('0x5e')](_0x3efc76);});};exports[_0xa6a5('0x5f')]=function(_0x4133fd){if(_[_0xa6a5('0x60')](_0x4133fd[_0xa6a5('0x61')])||_[_0xa6a5('0x60')](_0x4133fd[_0xa6a5('0x62')])){return null;}else{return createJwt(_0x4133fd);}};exports[_0xa6a5('0x63')]=function(_0x548469){_0x548469[_0xa6a5('0x61')]=generateNonce();_0x548469[_0xa6a5('0x62')]=generateIssuedAt();return createJwt(_0x548469);};exports[_0xa6a5('0x64')]=function(_0x49cb52,_0x4925b9){var _0x169aa1=_0x49cb52[_0xa6a5('0x43')]['apikey'];if(_0x169aa1){var _0x523ed4={'nonce':_0x4925b9[_0xa6a5('0x61')],'iat':_0x4925b9['apiKeyIat'],'audience':hardwareConf[_0xa6a5('0x45')](),'issuer':hardwareConf[_0xa6a5('0x45')]()};return verifyJwt(_0x169aa1,_0x523ed4)[_0xa6a5('0x32')](function(){return generateApiKey(_0x4925b9);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0xa6a5('0x65')]=function(_0x448b48){var _0x3703ce=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3703ce[_0xa6a5('0x66')](_0x448b48))throw new db[(_0xa6a5('0x67'))]['ValidationError'](_0xa6a5('0x68'));return;};exports['validatePasswordHistory']=function(_0x241f4f,_0x459bdb,_0x5af905){var _0x125112=encryptor[_0xa6a5('0x69')](_0x459bdb)[_0xa6a5('0x6a')](',');for(var _0x54594a=0x0;_0x54594a<_0x5af905;_0x54594a++){if(!_0x125112[_0x54594a])break;if(_0x241f4f[_0xa6a5('0x6b')]()===_0x125112[_0x54594a][_0xa6a5('0x6b')]()){var _0x2f08e9=util[_0xa6a5('0x6c')](_0xa6a5('0x6d'),_0x5af905);if(_0x5af905===0x1){_0x2f08e9=_0xa6a5('0x6e');}throw new db['Sequelize'][(_0xa6a5('0x6f'))](_0x2f08e9);}}return;};exports[_0xa6a5('0x70')]=function(_0x5ac4cb,_0x5ccd5d){var _0x594ce5=_0x5ccd5d?encryptor[_0xa6a5('0x69')](_0x5ccd5d)[_0xa6a5('0x6a')](','):[];if(_0x594ce5[_0xa6a5('0x71')]===0x5){_0x594ce5[_0xa6a5('0x72')](-0x1,0x1);}_0x594ce5[_0xa6a5('0x73')](_0x5ac4cb);return encryptor[_0xa6a5('0x74')](_0x594ce5[_0xa6a5('0x75')](','));};function signJwt(_0x5e0ed1){var _0x5735c6=BPromise['promisify'](jwt['sign'],{'context':jwt});var _0x5b50aa=_0x5e0ed1[_0xa6a5('0x76')]||config[_0xa6a5('0x77')][_0xa6a5('0xb')];return new BPromise(function(_0x1d8941,_0x46f50c){_0x5735c6(_0x5e0ed1[_0xa6a5('0x78')],_0x5b50aa,_0x5e0ed1[_0xa6a5('0x79')])[_0xa6a5('0x32')](function(_0x5938de){_0x1d8941(_0x5938de);})['catch'](function(_0x3a0170){_0x46f50c(_0x3a0170);});});}function verifyJwt(_0x18e9ad,_0x3274bf,_0x4eb1ac){var _0x44a6e1=BPromise[_0xa6a5('0x7a')](jwt[_0xa6a5('0x7b')],{'context':jwt});var _0x192410=_0x4eb1ac||config[_0xa6a5('0x77')][_0xa6a5('0xb')];return new BPromise(function(_0x154e06,_0x1e1d06){_0x44a6e1(_0x18e9ad,_0x192410,_0x3274bf)[_0xa6a5('0x32')](function(_0x2be733){_0x154e06(_0x2be733);})[_0xa6a5('0x39')](function(_0x2e5558){_0x1e1d06(_0x2e5558);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0xa6a5('0x7c')](_0xa6a5('0x7d'));}function generateIssuedAt(){return Math['floor'](Date[_0xa6a5('0x7e')]()/0x3e8)['toString']();}function createJwt(_0x49adbf){var _0x3f343b={'payload':{'iat':_0x49adbf[_0xa6a5('0x62')],'nonce':_0x49adbf[_0xa6a5('0x61')]},'options':{'algorithm':_0xa6a5('0x7f'),'subject':_0x49adbf['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0xa6a5('0x45')]()}};return signJwt(_0x3f343b)[_0xa6a5('0x32')](function(_0x163b74){return{'iat':_0x49adbf['apiKeyIat'],'nonce':_0x49adbf[_0xa6a5('0x61')],'token':_0x163b74};});}
\ No newline at end of file
index 8ab1b25..2f6f0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35c4=['session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','end','final','write','close','decryptFile','createReadStream','createDecipher','unlink','utf8','base64','decryptString','crypto','bluebird','../../config/environment','app'];(function(_0x44ec14,_0x8a1bb6){var _0x2ffa38=function(_0x4a2ea1){while(--_0x4a2ea1){_0x44ec14['push'](_0x44ec14['shift']());}};_0x2ffa38(++_0x8a1bb6);}(_0x35c4,0x84));var _0x435c=function(_0x227e8f,_0x26b9e3){_0x227e8f=_0x227e8f-0x0;var _0x34bca0=_0x35c4[_0x227e8f];return _0x34bca0;};'use strict';var crypto=require(_0x435c('0x0'));var fs=require('fs');var BPromise=require(_0x435c('0x1'));var _=require('lodash');var config=require(_0x435c('0x2'));var logger=require('../../config/logger')(_0x435c('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x435c('0x4')],'algorithm':_0x435c('0x5')};const fileOptions={'algorithm':_0x435c('0x6')};if(config[_0x435c('0x7')]&&config[_0x435c('0x7')][_0x435c('0x8')]){var isSupported=isAlgorithmSupported(config[_0x435c('0x7')][_0x435c('0x8')]);if(isSupported){fileOptions['algorithm']=config[_0x435c('0x7')][_0x435c('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x435c('0x9')](',\x20');logger[_0x435c('0xa')](config[_0x435c('0x7')][_0x435c('0x8')],_0x435c('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x6db068){return AES_SUPPORTED_RX[_0x435c('0xc')](_0x6db068);}function getSupportedCiphers(){return crypto[_0x435c('0xd')]()[_0x435c('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x4980a8){return getSupportedCiphers()[_0x435c('0xf')](_0x4980a8)>-0x1;}function combineOptions(_0x376fd8){var _0xa008af={};for(var _0x20d64a in fileOptions){if(fileOptions[_0x435c('0x10')](_0x20d64a)){_0xa008af[_0x20d64a]=fileOptions[_0x20d64a];}}if(_0x376fd8){for(var _0x3ee347 in _0x376fd8){if(_0x376fd8[_0x435c('0x10')](_0x3ee347)){_0xa008af[_0x3ee347]=_0x376fd8[_0x3ee347];}}}return _0xa008af;}exports[_0x435c('0x11')]=function(_0x24e5fa,_0x1361be,_0xbb69ef,_0x30ad1f){return new BPromise(function(_0x3ff59d,_0x2a4497){_0x30ad1f=combineOptions(_0x30ad1f);var _0xcebdff=new Buffer(_0xbb69ef);var _0x1ccdf0=fs['createReadStream'](_0x24e5fa);var _0x3dde88=fs[_0x435c('0x12')](_0x1361be);var _0x3f143b=crypto[_0x435c('0x13')](_0x30ad1f['algorithm'],_0xcebdff);_0x1ccdf0['on'](_0x435c('0x14'),function(_0x3d088f){var _0x32cac4=new Buffer(_0x3f143b[_0x435c('0x15')](_0x3d088f),_0x435c('0x16'));_0x3dde88['write'](_0x32cac4);});_0x1ccdf0['on'](_0x435c('0x17'),function(){try{var _0x436192=new Buffer(_0x3f143b[_0x435c('0x18')](_0x435c('0x16')),_0x435c('0x16'));_0x3dde88[_0x435c('0x19')](_0x436192);_0x3dde88[_0x435c('0x17')]();_0x3dde88['on'](_0x435c('0x1a'),function(){return _0x3ff59d(_0x1361be);});}catch(_0x3ff44d){fs['unlink'](_0x1361be);return _0x2a4497(_0x3ff44d);}});});};exports[_0x435c('0x1b')]=function(_0x4b02cd,_0x1fd9e7,_0x17632a,_0x1594cd){return new BPromise(function(_0x5ce116,_0xc1822f){_0x1594cd=combineOptions(_0x1594cd);var _0x5ef4c6=new Buffer(_0x17632a);var _0x272dcd=fs[_0x435c('0x1c')](_0x4b02cd);var _0x1cc81e=fs['createWriteStream'](_0x1fd9e7);var _0x22dc75=crypto[_0x435c('0x1d')](_0x1594cd[_0x435c('0x8')],_0x5ef4c6);_0x272dcd['on'](_0x435c('0x14'),function(_0x2e173d){var _0x509b7c=new Buffer(_0x22dc75[_0x435c('0x15')](_0x2e173d),_0x435c('0x16'));_0x1cc81e['write'](_0x509b7c);});_0x272dcd['on'](_0x435c('0x17'),function(){try{var _0x24f73f=new Buffer(_0x22dc75[_0x435c('0x18')](_0x435c('0x16')),'binary');_0x1cc81e[_0x435c('0x19')](_0x24f73f);_0x1cc81e['end']();_0x1cc81e['on'](_0x435c('0x1a'),function(){return _0x5ce116(_0x1fd9e7);});}catch(_0x59d4d5){fs[_0x435c('0x1e')](_0x1fd9e7);return _0xc1822f(_0x59d4d5);}});});};exports['encryptString']=function(_0x4872c8,_0xdd9fca,_0x2ca322){var _0x54f0db=_0x2ca322||stringOptions[_0x435c('0x8')];var _0x2c55fa=_0xdd9fca||stringOptions['secret'];var _0xa036c2=crypto[_0x435c('0x13')](_0x54f0db,_0x2c55fa);var _0x235e87=_0xa036c2[_0x435c('0x15')](_0x4872c8,_0x435c('0x1f'),_0x435c('0x20'));_0x235e87+=_0xa036c2[_0x435c('0x18')](_0x435c('0x20'));return _0x235e87;};exports[_0x435c('0x21')]=function(_0x547551,_0x71439b,_0x4b48c6){var _0x524e2b=_0x4b48c6||stringOptions['algorithm'];var _0x1dcda1=_0x71439b||stringOptions['secret'];var _0x34c494=crypto[_0x435c('0x1d')](_0x524e2b,_0x1dcda1);var _0xcdb5fc=_0x34c494['update'](_0x547551,'base64',_0x435c('0x1f'));_0xcdb5fc+=_0x34c494[_0x435c('0x18')](_0x435c('0x1f'));return _0xcdb5fc;};
\ No newline at end of file
+var _0x85a1=['encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','filter','hasOwnProperty','encryptFile','createReadStream','createCipher','update','binary','write','end','final','close','unlink','decryptFile','createWriteStream','data','encryptString','secret','utf8','base64','decryptString','createDecipher','crypto','bluebird','../../config/environment','../../config/logger','app','aes-256-ctr'];(function(_0x3a8968,_0x5e44cb){var _0x18fde2=function(_0x349c99){while(--_0x349c99){_0x3a8968['push'](_0x3a8968['shift']());}};_0x18fde2(++_0x5e44cb);}(_0x85a1,0x15a));var _0x185a=function(_0x3762b1,_0x15eb10){_0x3762b1=_0x3762b1-0x0;var _0x1d5303=_0x85a1[_0x3762b1];return _0x1d5303;};'use strict';var crypto=require(_0x185a('0x0'));var fs=require('fs');var BPromise=require(_0x185a('0x1'));var _=require('lodash');var config=require(_0x185a('0x2'));var logger=require(_0x185a('0x3'))(_0x185a('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x185a('0x5')};const fileOptions={'algorithm':'aes192'};if(config[_0x185a('0x6')]&&config[_0x185a('0x6')][_0x185a('0x7')]){var isSupported=isAlgorithmSupported(config[_0x185a('0x6')][_0x185a('0x7')]);if(isSupported){fileOptions[_0x185a('0x7')]=config[_0x185a('0x6')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x185a('0x8')](config[_0x185a('0x6')][_0x185a('0x7')],_0x185a('0x9'),supportedAlgorithms);}}function isASupportedCipher(_0x38d53b){return AES_SUPPORTED_RX[_0x185a('0xa')](_0x38d53b);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x185a('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0xe5fb00){return getSupportedCiphers()['indexOf'](_0xe5fb00)>-0x1;}function combineOptions(_0x5b119b){var _0x728433={};for(var _0x48bb98 in fileOptions){if(fileOptions[_0x185a('0xc')](_0x48bb98)){_0x728433[_0x48bb98]=fileOptions[_0x48bb98];}}if(_0x5b119b){for(var _0x3be8a9 in _0x5b119b){if(_0x5b119b[_0x185a('0xc')](_0x3be8a9)){_0x728433[_0x3be8a9]=_0x5b119b[_0x3be8a9];}}}return _0x728433;}exports[_0x185a('0xd')]=function(_0x3c4727,_0x38569b,_0x1c6c8a,_0x57011c){return new BPromise(function(_0x572857,_0x21da31){_0x57011c=combineOptions(_0x57011c);var _0x2b927f=new Buffer(_0x1c6c8a);var _0x2895cd=fs[_0x185a('0xe')](_0x3c4727);var _0x41f8f1=fs['createWriteStream'](_0x38569b);var _0xf2fb6f=crypto[_0x185a('0xf')](_0x57011c[_0x185a('0x7')],_0x2b927f);_0x2895cd['on']('data',function(_0x334023){var _0x584520=new Buffer(_0xf2fb6f[_0x185a('0x10')](_0x334023),_0x185a('0x11'));_0x41f8f1[_0x185a('0x12')](_0x584520);});_0x2895cd['on'](_0x185a('0x13'),function(){try{var _0x394071=new Buffer(_0xf2fb6f[_0x185a('0x14')](_0x185a('0x11')),_0x185a('0x11'));_0x41f8f1[_0x185a('0x12')](_0x394071);_0x41f8f1['end']();_0x41f8f1['on'](_0x185a('0x15'),function(){return _0x572857(_0x38569b);});}catch(_0x410875){fs[_0x185a('0x16')](_0x38569b);return _0x21da31(_0x410875);}});});};exports[_0x185a('0x17')]=function(_0x52d4b5,_0x3c84e2,_0x57ee06,_0x369890){return new BPromise(function(_0x1057cb,_0xe9e81b){_0x369890=combineOptions(_0x369890);var _0x2ed319=new Buffer(_0x57ee06);var _0x197d6=fs[_0x185a('0xe')](_0x52d4b5);var _0x504475=fs[_0x185a('0x18')](_0x3c84e2);var _0x1eb4de=crypto['createDecipher'](_0x369890[_0x185a('0x7')],_0x2ed319);_0x197d6['on'](_0x185a('0x19'),function(_0x4638e8){var _0x2d5685=new Buffer(_0x1eb4de[_0x185a('0x10')](_0x4638e8),'binary');_0x504475['write'](_0x2d5685);});_0x197d6['on'](_0x185a('0x13'),function(){try{var _0x48b56f=new Buffer(_0x1eb4de[_0x185a('0x14')](_0x185a('0x11')),_0x185a('0x11'));_0x504475['write'](_0x48b56f);_0x504475[_0x185a('0x13')]();_0x504475['on'](_0x185a('0x15'),function(){return _0x1057cb(_0x3c84e2);});}catch(_0x3ae3dc){fs[_0x185a('0x16')](_0x3c84e2);return _0xe9e81b(_0x3ae3dc);}});});};exports[_0x185a('0x1a')]=function(_0x359643,_0x5195e2,_0x28f2dc){var _0x23a945=_0x28f2dc||stringOptions['algorithm'];var _0x268cab=_0x5195e2||stringOptions[_0x185a('0x1b')];var _0x35b26c=crypto[_0x185a('0xf')](_0x23a945,_0x268cab);var _0x371c47=_0x35b26c[_0x185a('0x10')](_0x359643,_0x185a('0x1c'),_0x185a('0x1d'));_0x371c47+=_0x35b26c[_0x185a('0x14')](_0x185a('0x1d'));return _0x371c47;};exports[_0x185a('0x1e')]=function(_0x4e0d56,_0x179ff6,_0x2003f3){var _0xb85739=_0x2003f3||stringOptions['algorithm'];var _0x111585=_0x179ff6||stringOptions[_0x185a('0x1b')];var _0x2291be=crypto[_0x185a('0x1f')](_0xb85739,_0x111585);var _0x3d62e0=_0x2291be[_0x185a('0x10')](_0x4e0d56,'base64',_0x185a('0x1c'));_0x3d62e0+=_0x2291be[_0x185a('0x14')](_0x185a('0x1c'));return _0x3d62e0;};
\ No newline at end of file
index 5719149..68d0a9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['exit','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','then','Empty','length','num','push','format','basename','join','each','csv','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','inspect','Failed'];(function(_0x4a744c,_0x2f2b66){var _0x1cc4c4=function(_0x2e1cf3){while(--_0x2e1cf3){_0x4a744c['push'](_0x4a744c['shift']());}};_0x1cc4c4(++_0x2f2b66);}(_0x1339,0x1ed));var _0x9133=function(_0x5886ff,_0x5bf15a){_0x5886ff=_0x5886ff-0x0;var _0x13429a=_0x1339[_0x5886ff];return _0x13429a;};'use strict';var util=require('util');var path=require('path');var _=require(_0x9133('0x0'));var csv=require(_0x9133('0x1'));var fs=require('fs');var BPromise=require(_0x9133('0x2'));var zipdir=require(_0x9133('0x3'));var rimraf=require(_0x9133('0x4'));var db=require(_0x9133('0x5'))['db'];var dbH=require(_0x9133('0x5'))[_0x9133('0x6')];var logger=require('../../config/logger')(_0x9133('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x9133('0x8')][0x2]);var QUERY=process[_0x9133('0x8')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2758e2,_0x334dcd){var _0x3059c4={'status':_0x2758e2};var _0x431a55={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x334dcd){_0x3059c4[_0x9133('0x9')]=_0x334dcd;}return db[_0x9133('0xa')][_0x9133('0xb')](_0x3059c4,_0x431a55);}function main(){var _0x245134=0x1388;var _0x10a9e4;logger[_0x9133('0xc')](util['format'](_0x9133('0xd'),EXTRACTED_REPORT_ID,_0x9133('0xe')));return db[_0x9133('0xf')][_0x9133('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x9133('0x11'),_0x9133('0x12')]})['then'](function(_0xb64550){if(_0xb64550){_0x10a9e4=_0xb64550;_0x245134=_0x10a9e4[_0x9133('0x12')]||0x1388;}})['then'](function(){return dbH['sequelize'][_0x9133('0x13')](util['format'](_0x9133('0x14'),QUERY),{'type':dbH[_0x9133('0x15')][_0x9133('0x16')][_0x9133('0x17')]});})[_0x9133('0x18')](function(_0x4327b3){if(!_0x4327b3[0x0]['num']){return analyticExtractedReport(_0x9133('0x19'));}var _0x1e23ce=[];var _0x4f4f14=0x0;var _0x28ffcb=!![];if(_0x4327b3&&_0x4327b3[_0x9133('0x1a')]){var _0x3b39ec=_0x4327b3[0x0][_0x9133('0x1b')]%(_0x4f4f14+_0x245134);if(_0x10a9e4['split']){for(;_0x28ffcb;_0x4f4f14+=_0x245134,_0x3b39ec=_0x4327b3[0x0][_0x9133('0x1b')]%(_0x4f4f14+_0x245134)){if(_0x3b39ec==0x0||_0x3b39ec==_0x4327b3[0x0]['num']){_0x28ffcb=![];}_0x1e23ce[_0x9133('0x1c')](dbH['sequelize'][_0x9133('0x13')](util[_0x9133('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x245134,_0x4f4f14),{'type':dbH[_0x9133('0x15')]['QueryTypes'][_0x9133('0x17')]}));}}else{_0x1e23ce['push'](dbH['sequelize'][_0x9133('0x13')](QUERY,{'type':dbH['sequelize'][_0x9133('0x16')]['SELECT']}));}}var _0x5d4608=path['dirname'](PATH);var _0x2e99a1=path[_0x9133('0x1e')](PATH,'.csv');var _0x448f8b=_0x10a9e4[_0x9133('0x11')]&&_0x1e23ce[_0x9133('0x1a')]>0x1;var _0x26190c=[];if(!fs['existsSync'](path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1))&&_0x448f8b){fs['mkdirSync'](path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1));}return BPromise[_0x9133('0x20')](_0x1e23ce,function(_0x3f278d){_0x26190c[_0x9133('0x1c')](_0x3f278d);})[_0x9133('0x18')](function(){for(var _0xe829b=0x0;_0xe829b<_0x26190c[_0x9133('0x1a')];_0xe829b+=0x1){var _0x313d43;var _0x1b6b3e=_0x26190c[_0xe829b];if(_0x448f8b){_0x313d43=path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1,util['format']('%s%d.%s',_0x2e99a1,_0xe829b,_0x9133('0x21')));}else{_0x313d43=path[_0x9133('0x1f')](_0x5d4608,util[_0x9133('0x1d')](_0x9133('0x22'),_0x2e99a1,'csv'));}fs['writeFileSync'](_0x313d43,csv(_0x1b6b3e));}})[_0x9133('0x18')](function(){if(_0x448f8b){zipdir(path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1),{'saveTo':path[_0x9133('0x1f')](_0x5d4608,util[_0x9133('0x1d')](_0x9133('0x22'),_0x2e99a1,_0x9133('0x23')))},function(_0x48c713,_0x58afe0){});rimraf(path['join'](_0x5d4608,_0x2e99a1),function(){});}})[_0x9133('0x18')](function(){logger['info'](util[_0x9133('0x1d')](_0x9133('0x24'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x9133('0x25'),_0x448f8b?util['format'](_0x9133('0x22'),_0x2e99a1,_0x448f8b?_0x9133('0x23'):_0x9133('0x21')):null);});})['catch'](function(_0x32e95a){logger[_0x9133('0xc')](util[_0x9133('0x1d')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x9133('0xe')),util[_0x9133('0x26')](_0x32e95a,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x9133('0x27'));})['finally'](function(){process[_0x9133('0x28')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x02b8=['Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','util','path','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','range','isInteger','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','join','mkdirSync','each','csv','writeFileSync','%s.%s','zip\x20finished'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x02b8,0x11f));var _0x802b=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x02b8[_0x199572];return _0x13cfa3;};'use strict';var util=require(_0x802b('0x0'));var path=require(_0x802b('0x1'));var _=require('lodash');var csv=require(_0x802b('0x2'));var fs=require('fs');var BPromise=require(_0x802b('0x3'));var zipdir=require(_0x802b('0x4'));var rimraf=require(_0x802b('0x5'));var db=require(_0x802b('0x6'))['db'];var dbH=require(_0x802b('0x6'))['dbH'];var logger=require(_0x802b('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x802b('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xad3759,_0x1f9554){var _0x44a356={'status':_0xad3759};var _0xf45db5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1f9554){_0x44a356[_0x802b('0x9')]=_0x1f9554;}return db[_0x802b('0xa')][_0x802b('0xb')](_0x44a356,_0xf45db5);}function main(){var _0x3191a0=0x1388;var _0x1cd05f;logger[_0x802b('0xc')](util[_0x802b('0xd')](_0x802b('0xe'),EXTRACTED_REPORT_ID,_0x802b('0xf')));return db[_0x802b('0x10')][_0x802b('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x802b('0x12'),_0x802b('0x13')]})[_0x802b('0x14')](function(_0x3743b0){if(_0x3743b0){_0x1cd05f=_0x3743b0;_0x3191a0=_0x1cd05f[_0x802b('0x13')]||0x1388;}})[_0x802b('0x14')](function(){return dbH[_0x802b('0x15')]['query'](util[_0x802b('0xd')](_0x802b('0x16'),QUERY),{'type':dbH['sequelize'][_0x802b('0x17')][_0x802b('0x18')]});})[_0x802b('0x14')](function(_0x5c28f6){if(!_0x5c28f6[0x0][_0x802b('0x19')]){return analyticExtractedReport('Empty');}var _0x102328=[];var _0x384a82=0x0;if(_0x1cd05f[_0x802b('0x12')]){if(_0x5c28f6&&_0x5c28f6[_0x802b('0x1a')]){var _0x25f176=_[_0x802b('0x1b')](_0x5c28f6[0x0][_0x802b('0x19')]/_0x3191a0);var _0x49aa50=Number[_0x802b('0x1c')](_0x5c28f6[0x0][_0x802b('0x19')]/_0x3191a0)?_0x5c28f6[0x0]['num']%_0x3191a0:0x0;_0x25f176[_0x802b('0x1d')](function(_0x3dd829){if(_0x3dd829>0x0){_0x384a82+=_0x3191a0;}_0x102328[_0x802b('0x1e')](dbH[_0x802b('0x15')][_0x802b('0x1f')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x3191a0,_0x384a82),{'type':dbH['sequelize'][_0x802b('0x17')][_0x802b('0x18')]}));});if(_0x49aa50>0x0){_0x384a82+=_0x3191a0;_0x102328[_0x802b('0x1e')](dbH[_0x802b('0x15')][_0x802b('0x1f')](util['format'](_0x802b('0x20'),QUERY,_0x49aa50,_0x384a82),{'type':dbH['sequelize']['QueryTypes'][_0x802b('0x18')]}));}}}else{_0x102328['push'](dbH[_0x802b('0x15')][_0x802b('0x1f')](QUERY,{'type':dbH[_0x802b('0x15')][_0x802b('0x17')][_0x802b('0x18')]}));}var _0x3bd9a5=path[_0x802b('0x21')](PATH);var _0x283c4f=path[_0x802b('0x22')](PATH,'.csv');var _0x2a214b=_0x1cd05f[_0x802b('0x12')]&&_0x102328[_0x802b('0x1a')]>0x1;var _0x1ffd87=[];if(!fs['existsSync'](path[_0x802b('0x23')](_0x3bd9a5,_0x283c4f))&&_0x2a214b){fs[_0x802b('0x24')](path[_0x802b('0x23')](_0x3bd9a5,_0x283c4f));}return BPromise[_0x802b('0x25')](_0x102328,function(_0x2d3d69){_0x1ffd87[_0x802b('0x1e')](_0x2d3d69);})[_0x802b('0x14')](function(){for(var _0x18eb99=0x0;_0x18eb99<_0x1ffd87['length'];_0x18eb99+=0x1){var _0x521103;var _0x3943ce=_0x1ffd87[_0x18eb99];if(_0x2a214b){_0x521103=path[_0x802b('0x23')](_0x3bd9a5,_0x283c4f,util['format']('%s%d.%s',_0x283c4f,_0x18eb99,_0x802b('0x26')));}else{_0x521103=path[_0x802b('0x23')](_0x3bd9a5,util['format']('%s.%s',_0x283c4f,_0x802b('0x26')));}fs[_0x802b('0x27')](_0x521103,csv(_0x3943ce));}})[_0x802b('0x14')](function(){if(_0x2a214b){return new Promise(function(_0x35be27){zipdir(path['join'](_0x3bd9a5,_0x283c4f),{'saveTo':path[_0x802b('0x23')](_0x3bd9a5,util['format'](_0x802b('0x28'),_0x283c4f,'zip'))},function(_0x4f0b20,_0x4be0a0){rimraf(path[_0x802b('0x23')](_0x3bd9a5,_0x283c4f),function(){});_0x35be27(_0x802b('0x29'));});});}})['then'](function(){logger[_0x802b('0xc')](util[_0x802b('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x802b('0xf')));return analyticExtractedReport(_0x802b('0x2a'),_0x2a214b?util[_0x802b('0xd')](_0x802b('0x28'),_0x283c4f,_0x2a214b?'zip':_0x802b('0x26')):null);});})['catch'](function(_0x294c17){logger['info'](util[_0x802b('0xd')](_0x802b('0x2b'),EXTRACTED_REPORT_ID,_0x802b('0xf')),util[_0x802b('0x2c')](_0x294c17,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x802b('0x2d')](function(){process[_0x802b('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index e3b6185..3981289 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadd7=['/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','finish','end','createPdfFromHTML','path','moment','pdfmake/src/printer','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','length','body','push','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','format','header','pageBreak','margin','landscape','\x20/\x20','footer','black','num','Empty','%s.%s','pdf','find','split','then','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','join','all','flatten','%s%d.%s','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','zip','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','inspect','Failed','finally'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xadd7,0x9f));var _0x7add=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xadd7[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var fs=require('fs');var util=require('util');var path=require(_0x7add('0x0'));var moment=require(_0x7add('0x1'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x7add('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0x7add('0x3'));var JSDOM=require(_0x7add('0x4'))[_0x7add('0x5')];var window=new JSDOM('')[_0x7add('0x6')];var db=require(_0x7add('0x7'))['db'];var dbH=require('../../mysqldb')[_0x7add('0x8')];var logger=require(_0x7add('0x9'))(_0x7add('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x7add('0xb')][0x2]);var QUERY=process[_0x7add('0xb')][0x3];var PATH=process[_0x7add('0xb')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x7add('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3b16c3,_0x2cc503){var _0x316db4={'status':_0x3b16c3};var _0xa198ff={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2cc503){_0x316db4['savename']=_0x2cc503;}return db[_0x7add('0xd')][_0x7add('0xe')](_0x316db4,_0xa198ff);}function getHeaders(_0x1861f1){return _[_0x7add('0xf')](_0x1861f1,function(_0x1d084e){return{'text':_0x1d084e,'style':_0x7add('0x10')};});}function getRows(_0x49b363,_0x53ff24){return _[_0x7add('0xf')](_0x53ff24,function(_0x5ae429){return _(_0x5ae429)[_0x7add('0x11')](_0x49b363)[_0x7add('0xf')](function(_0x245318){return _0x245318?_[_0x7add('0x12')](_0x245318):'';})[_0x7add('0x13')]();});}function createTable(_0x32fff5,_0xfde84f){var _0x4fb85f={'widths':_[_0x7add('0x14')](Array(_0x32fff5[_0x7add('0x15')]),0x91),'heights':function(_0x160295){return _0x160295===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x182bee=getHeaders(_0x32fff5);_0x4fb85f[_0x7add('0x16')][_0x7add('0x17')](_0x182bee);var _0xa735d=getRows(_0x32fff5,_0xfde84f);_0x4fb85f[_0x7add('0x16')]=_0x4fb85f[_0x7add('0x16')]['concat'](_0xa735d);return _0x4fb85f;}function createTables(_0x3c8252){var _0x331277=[];var _0x919117=_['chunk'](Object[_0x7add('0x18')](_0x3c8252[0x0]),0x5);_0x919117['forEach'](function(_0x5a398d){_0x331277[_0x7add('0x17')](createTable(_0x5a398d,_0x3c8252));});return _0x331277;}function getPDFDocDefinition(_0x1f32a8){var _0x3d9d68=util['format'](_0x7add('0x19'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x7add('0x1a')])[_0x7add('0x1b')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x38611a=[];for(var _0x34393c=0x0;_0x34393c<_0x1f32a8[_0x7add('0x15')];_0x34393c++){var _0xb7c9ae=[];if(_0x34393c===0x0){_0xb7c9ae[_0x7add('0x17')]({'text':_0x3d9d68,'style':_0x7add('0x1c')});}var _0x65459e={'table':_0x1f32a8[_0x34393c]};if(_0x34393c>0x0){_0x65459e[_0x7add('0x1d')]='before';_0x65459e[_0x7add('0x1e')]=[0x0,0x46,0x0,0x0];}_0xb7c9ae['push'](_0x65459e);_0x38611a['push'](_0xb7c9ae);}return{'pageSize':'A4','pageOrientation':_0x7add('0x1f'),'content':_0x38611a,'footer':function(_0x32db77,_0x4285bf){return{'text':_0x32db77[_0x7add('0x12')]()+_0x7add('0x20')+_0x4285bf,'style':_0x7add('0x21')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x7add('0x22')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x28b354){var _0x35b62c=0x1388;var _0x60a2b4;if(!_0x28b354[0x0][_0x7add('0x23')]){return analyticExtractedReport(_0x7add('0x24'));}var _0x1a842e=[];var _0x37542f=0x0;var _0x1a4320=!![];var _0x5b6cd6=path['dirname'](PATH);var _0x575e2f=path['basename'](PATH,'.pdf');var _0x5619e0=path['join'](_0x5b6cd6,util[_0x7add('0x1b')](_0x7add('0x25'),_0x575e2f,_0x7add('0x26')));var _0x4bc788=![];return db['Setting'][_0x7add('0x27')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x7add('0x28'),'splitSizePdf']})[_0x7add('0x29')](function(_0x133dff){if(_0x133dff){_0x60a2b4=_0x133dff;_0x35b62c=_0x60a2b4['splitSizePdf']||0x3e8;}})[_0x7add('0x29')](function(){if(_0x28b354&&_0x28b354[_0x7add('0x15')]){var _0x5d4989=_0x28b354[0x0][_0x7add('0x23')]%(_0x37542f+_0x35b62c);if(_0x60a2b4[_0x7add('0x28')]){for(;_0x1a4320;_0x37542f+=_0x35b62c,_0x5d4989=_0x28b354[0x0][_0x7add('0x23')]%(_0x37542f+_0x35b62c)){if(_0x5d4989==0x0||_0x5d4989==_0x28b354[0x0][_0x7add('0x23')]){_0x1a4320=![];}_0x1a842e[_0x7add('0x17')](dbH[_0x7add('0x2a')][_0x7add('0x2b')](util[_0x7add('0x1b')](_0x7add('0x2c'),QUERY,_0x35b62c,_0x37542f),{'type':dbH[_0x7add('0x2a')]['QueryTypes']['SELECT']}));}}else{_0x1a842e[_0x7add('0x17')](dbH[_0x7add('0x2a')]['query'](QUERY,{'type':dbH['sequelize'][_0x7add('0x2d')][_0x7add('0x2e')]}));}}_0x4bc788=_0x60a2b4[_0x7add('0x28')]&&_0x1a842e[_0x7add('0x15')]>0x1;if(!fs['existsSync'](path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f))&&_0x4bc788){fs['mkdirSync'](path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f));}return Promise[_0x7add('0x30')](_0x1a842e);})[_0x7add('0x29')](function(_0x134840){return createTables(_[_0x7add('0x31')](_0x134840));})[_0x7add('0x29')](function(_0x4f799c){var _0x598d88=getPDFDocDefinition(_0x4f799c);var _0x1a7b36=getPDFPrinter();var _0x2c702c=_0x1a7b36['createPdfKitDocument'](_0x598d88);if(_0x4bc788)_0x5619e0=path['join'](_0x5b6cd6,_0x575e2f,util[_0x7add('0x1b')](_0x7add('0x32'),_0x575e2f,index,_0x7add('0x26')));return writePDFDocument(_0x2c702c,_0x5619e0);})[_0x7add('0x29')](function(){if(!_0x4bc788)return;zipdir(path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f),{'saveTo':path[_0x7add('0x2f')](_0x5b6cd6,util[_0x7add('0x1b')](_0x7add('0x25'),_0x575e2f,'zip'))},function(_0x2a137e){if(_0x2a137e)throw _0x2a137e;return;});})[_0x7add('0x29')](function(){if(!_0x4bc788)return;rimraf(path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f),function(){});})[_0x7add('0x29')](function(){logger['info'](util[_0x7add('0x1b')](_0x7add('0x33'),EXTRACTED_REPORT_ID,_0x7add('0x34')));return analyticExtractedReport(_0x7add('0x35'),_0x4bc788?util[_0x7add('0x1b')](_0x7add('0x25'),_0x575e2f,_0x4bc788?_0x7add('0x36'):_0x7add('0x26')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x7add('0x37')](util[_0x7add('0x1b')](_0x7add('0x38'),EXTRACTED_REPORT_ID,_0x7add('0x39')));return db[_0x7add('0xd')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x12d11e){EXTRACTED_REPORT=_0x12d11e;return dbH[_0x7add('0x2a')][_0x7add('0x2b')](util[_0x7add('0x1b')](_0x7add('0x3a'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x7add('0x2e')]});})['then'](extractReport)[_0x7add('0x3b')](function(_0x28f6eb){logger[_0x7add('0x37')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x7add('0x39')),util[_0x7add('0x3c')](_0x28f6eb,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7add('0x3d'));})[_0x7add('0x3e')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2b2614=new PdfPrinter({'Arial':{'normal':__dirname+_0x7add('0x3f'),'bold':__dirname+_0x7add('0x40'),'italics':__dirname+_0x7add('0x41'),'bolditalics':__dirname+_0x7add('0x42')}});return _0x2b2614;}function getPDFDocDefinitionFromHTML(_0x488250,_0x21bfa1){var _0x287ea5=util[_0x7add('0x1b')]('%s\x20#%d',_0x21bfa1[_0x7add('0x43')],_0x21bfa1['interactionId']);var _0x23f68f=moment()['format'](_0x7add('0x44'))[_0x7add('0x12')]();var _0x2da5ae=htmlToPdfmake(_0x488250,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2da5ae],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x7add('0x45'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x7add('0x45'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x7add('0x45')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x2fb0ce,_0x3f0ee3){return[{'text':util['format'](_0x7add('0x46'),_0x287ea5,_0x2fb0ce,_0x3f0ee3,_0x23f68f),'style':_0x7add('0x21')}];}};}function writePDFDocument(_0x1eabc7,_0x1b05c7){return new Promise(function(_0x5d03d4,_0x5d5845){var _0x5dcd4e=_0x1eabc7['pipe'](fs['createWriteStream'](_0x1b05c7));_0x5dcd4e['on'](_0x7add('0x47'),function(){_0x5d03d4(_0x7add('0x47'));});_0x5dcd4e['on']('error',function(_0x35fc42){_0x5d5845(_0x35fc42);});_0x1eabc7[_0x7add('0x48')]();});}exports[_0x7add('0x49')]=function(_0x4bbae0,_0x19c7a5){var _0x414c31=getPDFPrinter();var _0x5ed694=getPDFDocDefinitionFromHTML(_0x4bbae0,_0x19c7a5);var _0x44fb35=_0x414c31['createPdfKitDocument'](_0x5ed694);return writePDFDocument(_0x44fb35,_0x19c7a5[_0x7add('0x0')])[_0x7add('0x3b')](function(_0x539318){throw _0x539318;});};
\ No newline at end of file
+var _0xd48f=['header','pageBreak','margin','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','query','QueryTypes','dirname','basename','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','finish','error','end','createPdfFromHTML','catch','lodash','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','fill','length','auto','body','push','concat','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xd48f,0x1a3));var _0xfd48=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0xd48f[_0x44bcb0];return _0xfaf881;};'use strict';var _=require(_0xfd48('0x0'));var fs=require('fs');var util=require('util');var path=require(_0xfd48('0x1'));var moment=require(_0xfd48('0x2'));var htmlToPdfmake=require(_0xfd48('0x3'));var PdfPrinter=require(_0xfd48('0x4'));var zipdir=require(_0xfd48('0x5'));var rimraf=require(_0xfd48('0x6'));var JSDOM=require('jsdom')[_0xfd48('0x7')];var window=new JSDOM('')[_0xfd48('0x8')];var BPromise=require(_0xfd48('0x9'));var db=require(_0xfd48('0xa'))['db'];var dbH=require(_0xfd48('0xa'))[_0xfd48('0xb')];var logger=require(_0xfd48('0xc'))(_0xfd48('0xd'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xfd48('0xe')][0x3];var PATH=process[_0xfd48('0xe')][0x4];var NAME=process[_0xfd48('0xe')][0x5];var FORMAT=_0xfd48('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x9c2fac,_0x8bc189){var _0x515c36={'status':_0x9c2fac};var _0xea8645={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x8bc189){_0x515c36[_0xfd48('0x10')]=_0x8bc189;}return db[_0xfd48('0x11')][_0xfd48('0x12')](_0x515c36,_0xea8645);}function getHeaders(_0x2a74ff){return _[_0xfd48('0x13')](_0x2a74ff,function(_0x3c3d88){return{'text':_0x3c3d88,'style':_0xfd48('0x14')};});}function getRows(_0x67bc0d,_0x5d7f04){return _[_0xfd48('0x13')](_0x5d7f04,function(_0xc44953){return _(_0xc44953)[_0xfd48('0x15')](_0x67bc0d)[_0xfd48('0x13')](function(_0x4df78b){return _0x4df78b?_[_0xfd48('0x16')](_0x4df78b):'';})['value']();});}function createTable(_0x2f9e2b,_0x32dc37){var _0x302ce2={'widths':_[_0xfd48('0x17')](Array(_0x2f9e2b[_0xfd48('0x18')]),0x91),'heights':function(_0xe657b){return _0xe657b===0x0?_0xfd48('0x19'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x60dba4=getHeaders(_0x2f9e2b);_0x302ce2[_0xfd48('0x1a')][_0xfd48('0x1b')](_0x60dba4);var _0x23e991=getRows(_0x2f9e2b,_0x32dc37);_0x302ce2['body']=_0x302ce2[_0xfd48('0x1a')][_0xfd48('0x1c')](_0x23e991);return _0x302ce2;}function createTables(_0x5afde8){var _0xa77a96=[];var _0xefbfac=_[_0xfd48('0x1d')](Object['keys'](_0x5afde8[0x0]),0x5);_0xefbfac[_0xfd48('0x1e')](function(_0xf3d8a4){_0xa77a96[_0xfd48('0x1b')](createTable(_0xf3d8a4,_0x5afde8));});return _0xa77a96;}function getPDFDocDefinition(_0x57c8d6){var _0x534674=util[_0xfd48('0x1f')](_0xfd48('0x20'),NAME,EXTRACTED_REPORT[_0xfd48('0x21')],moment(EXTRACTED_REPORT[_0xfd48('0x22')])[_0xfd48('0x1f')](FORMAT),moment(EXTRACTED_REPORT[_0xfd48('0x23')])['format'](FORMAT));var _0x41a9ff=[];for(var _0x3be4ac=0x0;_0x3be4ac<_0x57c8d6['length'];_0x3be4ac++){var _0x3e51b3=[];if(_0x3be4ac===0x0){_0x3e51b3['push']({'text':_0x534674,'style':_0xfd48('0x24')});}var _0x477f9d={'table':_0x57c8d6[_0x3be4ac]};if(_0x3be4ac>0x0){_0x477f9d[_0xfd48('0x25')]='before';_0x477f9d[_0xfd48('0x26')]=[0x0,0x46,0x0,0x0];}_0x3e51b3['push'](_0x477f9d);_0x41a9ff['push'](_0x3e51b3);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x41a9ff,'footer':function(_0x38259f,_0x1ccc34){return{'text':_0x38259f[_0xfd48('0x16')]()+_0xfd48('0x27')+_0x1ccc34,'style':_0xfd48('0x28')};},'defaultStyle':{'font':_0xfd48('0x29')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xfd48('0x2a')},'footer':{'alignment':_0xfd48('0x2b'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x455f0c){var _0xc33a5d=0x1388;var _0x358e76;if(!_0x455f0c[0x0][_0xfd48('0x2c')]){return analyticExtractedReport(_0xfd48('0x2d'));}return db[_0xfd48('0x2e')][_0xfd48('0x2f')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xfd48('0x30'),_0xfd48('0x31')]})['then'](function(_0x373c6c){if(_0x373c6c){_0x358e76=_0x373c6c;_0xc33a5d=_0x358e76['splitSizePdf']||0x3e8;}})[_0xfd48('0x32')](function(){var _0x4d1358=[];var _0x3ee6b5=0x0;if(_0x358e76[_0xfd48('0x30')]){if(_0x455f0c&&_0x455f0c[_0xfd48('0x18')]){var _0x1d7336=_[_0xfd48('0x33')](_0x455f0c[0x0][_0xfd48('0x2c')]/_0xc33a5d);var _0x293bf3=Number[_0xfd48('0x34')](_0x455f0c[0x0]['num']/_0xc33a5d)?_0x455f0c[0x0][_0xfd48('0x2c')]%_0xc33a5d:0x0;_0x1d7336['forEach'](function(_0x411fc5){if(_0x411fc5>0x0){_0x3ee6b5+=_0xc33a5d;}_0x4d1358['push'](dbH[_0xfd48('0x35')]['query'](util[_0xfd48('0x1f')](_0xfd48('0x36'),QUERY,_0xc33a5d,_0x3ee6b5),{'type':dbH[_0xfd48('0x35')]['QueryTypes'][_0xfd48('0x37')]}));});if(_0x293bf3>0x0){_0x3ee6b5+=_0xc33a5d;_0x4d1358[_0xfd48('0x1b')](dbH[_0xfd48('0x35')][_0xfd48('0x38')](util['format'](_0xfd48('0x36'),QUERY,_0x293bf3,_0x3ee6b5),{'type':dbH[_0xfd48('0x35')][_0xfd48('0x39')][_0xfd48('0x37')]}));}}}else{_0x4d1358[_0xfd48('0x1b')](dbH['sequelize'][_0xfd48('0x38')](QUERY,{'type':dbH[_0xfd48('0x35')]['QueryTypes'][_0xfd48('0x37')]}));}var _0x4f0e4f=path[_0xfd48('0x3a')](PATH);var _0x278442=path[_0xfd48('0x3b')](PATH,'.pdf');var _0x5c8a5f=_0x358e76[_0xfd48('0x30')]&&_0x4d1358[_0xfd48('0x18')]>0x1;var _0x41ecf5=[];if(!fs[_0xfd48('0x3c')](path[_0xfd48('0x3d')](_0x4f0e4f,_0x278442))&&_0x5c8a5f){fs[_0xfd48('0x3e')](path['join'](_0x4f0e4f,_0x278442));}return BPromise[_0xfd48('0x3f')](_0x4d1358,function(_0x57a6b6){_0x41ecf5[_0xfd48('0x1b')](_0x57a6b6);})[_0xfd48('0x32')](function(){var _0x3f20b5=[];for(var _0x266f49=0x0;_0x266f49<_0x41ecf5[_0xfd48('0x18')];_0x266f49+=0x1){var _0x473f7e=_0x41ecf5[_0x266f49];var _0x1acd4e=createTables(_[_0xfd48('0x40')](_0x473f7e));var _0x513a7e;var _0x4a413b=getPDFDocDefinition(_0x1acd4e);var _0x4d0655=getPDFPrinter();var _0x58a287=_0x4d0655[_0xfd48('0x41')](_0x4a413b);if(_0x5c8a5f){_0x513a7e=path['join'](_0x4f0e4f,_0x278442,util[_0xfd48('0x1f')](_0xfd48('0x42'),_0x278442,_0x266f49,_0xfd48('0x43')));}else{_0x513a7e=path['join'](_0x4f0e4f,util[_0xfd48('0x1f')](_0xfd48('0x44'),_0x278442,'pdf'));}_0x3f20b5[_0xfd48('0x1b')](writePDFDocument(_0x58a287,_0x513a7e));}return Promise['all'](_0x3f20b5);})['then'](function(){if(_0x5c8a5f){return new Promise(function(_0x4595bf){zipdir(path[_0xfd48('0x3d')](_0x4f0e4f,_0x278442),{'saveTo':path[_0xfd48('0x3d')](_0x4f0e4f,util[_0xfd48('0x1f')]('%s.%s',_0x278442,_0xfd48('0x45')))},function(){rimraf(path[_0xfd48('0x3d')](_0x4f0e4f,_0x278442),function(){});_0x4595bf('zip\x20finished');});});}})['then'](function(){if(!_0x5c8a5f)return;rimraf(path[_0xfd48('0x3d')](_0x4f0e4f,_0x278442),function(){});})[_0xfd48('0x32')](function(){logger[_0xfd48('0x46')](util[_0xfd48('0x1f')](_0xfd48('0x47'),EXTRACTED_REPORT_ID,_0xfd48('0x48')));return analyticExtractedReport(_0xfd48('0x49'),_0x5c8a5f?util['format']('%s.%s',_0x278442,_0x5c8a5f?_0xfd48('0x45'):_0xfd48('0x43')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xfd48('0x46')](util[_0xfd48('0x1f')](_0xfd48('0x4a'),EXTRACTED_REPORT_ID,_0xfd48('0x48')));return db[_0xfd48('0x11')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0xfd48('0x32')](function(_0x9f321a){EXTRACTED_REPORT=_0x9f321a;return dbH[_0xfd48('0x35')]['query'](util[_0xfd48('0x1f')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0xfd48('0x39')][_0xfd48('0x37')]});})[_0xfd48('0x32')](extractReport)['catch'](function(_0x296c33){logger[_0xfd48('0x46')](util['format'](_0xfd48('0x4b'),EXTRACTED_REPORT_ID,_0xfd48('0x48')),util['inspect'](_0x296c33,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xfd48('0x4c'));})[_0xfd48('0x4d')](function(){process[_0xfd48('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x4d356c=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0xfd48('0x4f'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xfd48('0x50')}});return _0x4d356c;}function getPDFDocDefinitionFromHTML(_0x1808bb,_0x5c9f01){var _0x503a5d=util[_0xfd48('0x1f')](_0xfd48('0x51'),_0x5c9f01[_0xfd48('0x52')],_0x5c9f01['interactionId']);var _0x18890f=moment()[_0xfd48('0x1f')](_0xfd48('0x53'))[_0xfd48('0x16')]();var _0x17bcf3=htmlToPdfmake(_0x1808bb,{'window':window,'tableAutoSize':!![]});return{'content':[_0x17bcf3],'defaultStyle':{'font':_0xfd48('0x29')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xfd48('0x54'),'style':_0xfd48('0x24')}];},'footer':function(_0x244e15,_0x2e32fd){return[{'text':util[_0xfd48('0x1f')](_0xfd48('0x55'),_0x503a5d,_0x244e15,_0x2e32fd,_0x18890f),'style':_0xfd48('0x28')}];}};}function writePDFDocument(_0x46a2c8,_0x4e24f8){return new Promise(function(_0x3e24ac,_0x6da207){var _0x3692c4=_0x46a2c8['pipe'](fs['createWriteStream'](_0x4e24f8));_0x3692c4['on'](_0xfd48('0x56'),function(){_0x3e24ac(_0xfd48('0x56'));});_0x3692c4['on'](_0xfd48('0x57'),function(_0x4f455a){_0x6da207(_0x4f455a);});_0x46a2c8[_0xfd48('0x58')]();});}exports[_0xfd48('0x59')]=function(_0x1204c3,_0x3ded7d){var _0x2fbad4=getPDFPrinter();var _0x50bfb7=getPDFDocDefinitionFromHTML(_0x1204c3,_0x3ded7d);var _0x2b65ff=_0x2fbad4['createPdfKitDocument'](_0x50bfb7);return writePDFDocument(_0x2b65ff,_0x3ded7d[_0xfd48('0x1')])[_0xfd48('0x5a')](function(_0x3b15b3){throw _0x3b15b3;});};
\ No newline at end of file
index 7134732..6517fbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8636=['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','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','splitSizeXlsx','then','sequelize','query','QueryTypes','SELECT','Empty','split','length','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','binary','zip'];(function(_0x54c734,_0xc5cf3a){var _0x6bdb37=function(_0x1cd617){while(--_0x1cd617){_0x54c734['push'](_0x54c734['shift']());}};_0x6bdb37(++_0xc5cf3a);}(_0x8636,0x1f1));var _0x6863=function(_0x2a5dc1,_0xc58ca4){_0x2a5dc1=_0x2a5dc1-0x0;var _0x244d63=_0x8636[_0x2a5dc1];return _0x244d63;};'use strict';var util=require(_0x6863('0x0'));var path=require(_0x6863('0x1'));var _=require(_0x6863('0x2'));var fs=require('fs');var json2xls=require(_0x6863('0x3'));var BPromise=require(_0x6863('0x4'));var zipdir=require(_0x6863('0x5'));var rimraf=require(_0x6863('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0x6863('0x7'))['dbH'];var logger=require('../../config/logger')(_0x6863('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x6863('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x6863('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x39b1a1,_0xc4341d){var _0x5f231e={'status':_0x39b1a1};var _0x3fb1c1={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xc4341d){_0x5f231e[_0x6863('0xa')]=_0xc4341d;}return db[_0x6863('0xb')][_0x6863('0xc')](_0x5f231e,_0x3fb1c1);}function main(){var _0x590b39=0x1388;var _0x4a13dd;logger[_0x6863('0xd')](util[_0x6863('0xe')](_0x6863('0xf'),EXTRACTED_REPORT_ID,_0x6863('0x10')));return db[_0x6863('0x11')][_0x6863('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x6863('0x13')]})['then'](function(_0x58b35f){if(_0x58b35f){_0x4a13dd=_0x58b35f;_0x590b39=_0x4a13dd['splitSizeXlsx']||0x1388;}})[_0x6863('0x14')](function(){return dbH[_0x6863('0x15')][_0x6863('0x16')](util[_0x6863('0xe')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x6863('0x15')][_0x6863('0x17')][_0x6863('0x18')]});})[_0x6863('0x14')](function(_0x33467c){if(!_0x33467c[0x0]['num']){return analyticExtractedReport(_0x6863('0x19'));}var _0x4917ca=[];var _0xfb1414=0x0;var _0x337f7e=!![];if(_0x4a13dd[_0x6863('0x1a')]){if(_0x33467c&&_0x33467c[_0x6863('0x1b')]){var _0x2ce6db=_0x33467c[0x0][_0x6863('0x1c')]%(_0xfb1414+_0x590b39);for(;_0x337f7e;_0xfb1414+=_0x590b39,_0x2ce6db=_0x33467c[0x0][_0x6863('0x1c')]%(_0xfb1414+_0x590b39)){if(_0x2ce6db==0x0||_0x2ce6db==_0x33467c[0x0][_0x6863('0x1c')]){_0x337f7e=![];}_0x4917ca[_0x6863('0x1d')](dbH[_0x6863('0x15')][_0x6863('0x16')](util[_0x6863('0xe')](_0x6863('0x1e'),QUERY,_0x590b39,_0xfb1414),{'type':dbH['sequelize'][_0x6863('0x17')][_0x6863('0x18')]}));}}}else{_0x4917ca[_0x6863('0x1d')](dbH[_0x6863('0x15')][_0x6863('0x16')](QUERY,{'type':dbH['sequelize'][_0x6863('0x17')][_0x6863('0x18')]}));}var _0x8bac1c=path['dirname'](PATH);var _0x500200=path[_0x6863('0x1f')](PATH,_0x6863('0x20'));var _0x3753c1=_0x4a13dd[_0x6863('0x1a')]&&_0x4917ca[_0x6863('0x1b')]>0x1;var _0x1217ae=[];if(!fs[_0x6863('0x21')](path[_0x6863('0x22')](_0x8bac1c,_0x500200))&&_0x3753c1){fs[_0x6863('0x23')](path[_0x6863('0x22')](_0x8bac1c,_0x500200));}return BPromise[_0x6863('0x24')](_0x4917ca,function(_0x120f93){_0x1217ae[_0x6863('0x1d')](_0x120f93);})[_0x6863('0x14')](function(){for(var _0x812ae6=0x0;_0x812ae6<_0x1217ae['length'];_0x812ae6+=0x1){var _0x139ef6;var _0x40d85f=_0x1217ae[_0x812ae6];if(_0x3753c1){_0x139ef6=path[_0x6863('0x22')](_0x8bac1c,_0x500200,util[_0x6863('0xe')](_0x6863('0x25'),_0x500200,_0x812ae6,_0x6863('0x26')));}else{_0x139ef6=path[_0x6863('0x22')](_0x8bac1c,util[_0x6863('0xe')](_0x6863('0x27'),_0x500200,_0x6863('0x26')));}fs['writeFileSync'](_0x139ef6,json2xls(_0x40d85f),_0x6863('0x28'));}})['then'](function(){if(_0x3753c1){zipdir(path[_0x6863('0x22')](_0x8bac1c,_0x500200),{'saveTo':path[_0x6863('0x22')](_0x8bac1c,util['format'](_0x6863('0x27'),_0x500200,_0x6863('0x29')))},function(_0x45f189,_0x13d477){});rimraf(path[_0x6863('0x22')](_0x8bac1c,_0x500200),function(){});}})['then'](function(){logger[_0x6863('0xd')](util[_0x6863('0xe')](_0x6863('0x2a'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0x6863('0x2b'),_0x3753c1?util[_0x6863('0xe')](_0x6863('0x27'),_0x500200,_0x3753c1?'zip':_0x6863('0x26')):null);});})[_0x6863('0x2c')](function(_0x17405f){logger[_0x6863('0xd')](util[_0x6863('0xe')](_0x6863('0x2d'),EXTRACTED_REPORT_ID,_0x6863('0x10')),util[_0x6863('0x2e')](_0x17405f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x6863('0x2f')](function(){process[_0x6863('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xd265=['util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','length','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.xlsx','existsSync','join','%s%d.%s','xlsx','%s.%s','writeFileSync','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit'];(function(_0x273cc1,_0x35aa37){var _0x3f7eda=function(_0x1e0b3e){while(--_0x1e0b3e){_0x273cc1['push'](_0x273cc1['shift']());}};_0x3f7eda(++_0x35aa37);}(_0xd265,0xc0));var _0x5d26=function(_0x356576,_0x2169e1){_0x356576=_0x356576-0x0;var _0x11e97c=_0xd265[_0x356576];return _0x11e97c;};'use strict';var util=require(_0x5d26('0x0'));var path=require('path');var _=require(_0x5d26('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x5d26('0x2'));var zipdir=require(_0x5d26('0x3'));var rimraf=require(_0x5d26('0x4'));var db=require(_0x5d26('0x5'))['db'];var dbH=require(_0x5d26('0x5'))[_0x5d26('0x6')];var logger=require(_0x5d26('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x5d26('0x8')][0x2]);var QUERY=process[_0x5d26('0x8')][0x3];var PATH=process[_0x5d26('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3c833d,_0xed5f69){var _0x4437b3={'status':_0x3c833d};var _0x3f14a0={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xed5f69){_0x4437b3[_0x5d26('0x9')]=_0xed5f69;}return db[_0x5d26('0xa')][_0x5d26('0xb')](_0x4437b3,_0x3f14a0);}function main(){var _0x4c3e31=0x1388;var _0x34ee22;logger[_0x5d26('0xc')](util['format'](_0x5d26('0xd'),EXTRACTED_REPORT_ID,_0x5d26('0xe')));return db[_0x5d26('0xf')][_0x5d26('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x5d26('0x11'),_0x5d26('0x12')]})[_0x5d26('0x13')](function(_0x5b5607){if(_0x5b5607){_0x34ee22=_0x5b5607;_0x4c3e31=_0x34ee22[_0x5d26('0x12')]||0x1388;}})[_0x5d26('0x13')](function(){return dbH[_0x5d26('0x14')][_0x5d26('0x15')](util[_0x5d26('0x16')](_0x5d26('0x17'),QUERY),{'type':dbH['sequelize'][_0x5d26('0x18')][_0x5d26('0x19')]});})[_0x5d26('0x13')](function(_0x179f0d){if(!_0x179f0d[0x0]['num']){return analyticExtractedReport(_0x5d26('0x1a'));}var _0x40ecbb=[];var _0x2764b8=0x0;if(_0x34ee22[_0x5d26('0x11')]){if(_0x179f0d&&_0x179f0d[_0x5d26('0x1b')]){var _0x548e1b=_['range'](_0x179f0d[0x0][_0x5d26('0x1c')]/_0x4c3e31);var _0x4dd443=Number[_0x5d26('0x1d')](_0x179f0d[0x0][_0x5d26('0x1c')]/_0x4c3e31)?_0x179f0d[0x0][_0x5d26('0x1c')]%_0x4c3e31:0x0;_0x548e1b[_0x5d26('0x1e')](function(_0x51b9af){if(_0x51b9af>0x0){_0x2764b8+=_0x4c3e31;}_0x40ecbb[_0x5d26('0x1f')](dbH[_0x5d26('0x14')][_0x5d26('0x15')](util['format'](_0x5d26('0x20'),QUERY,_0x4c3e31,_0x2764b8),{'type':dbH[_0x5d26('0x14')][_0x5d26('0x18')][_0x5d26('0x19')]}));});if(_0x4dd443>0x0){_0x2764b8+=_0x4c3e31;_0x40ecbb[_0x5d26('0x1f')](dbH[_0x5d26('0x14')]['query'](util[_0x5d26('0x16')](_0x5d26('0x20'),QUERY,_0x4dd443,_0x2764b8),{'type':dbH['sequelize']['QueryTypes'][_0x5d26('0x19')]}));}}}else{_0x40ecbb[_0x5d26('0x1f')](dbH[_0x5d26('0x14')][_0x5d26('0x15')](QUERY,{'type':dbH['sequelize']['QueryTypes']['SELECT']}));}var _0x1c152a=path[_0x5d26('0x21')](PATH);var _0x3c29d0=path[_0x5d26('0x22')](PATH,_0x5d26('0x23'));var _0x466f6e=_0x34ee22[_0x5d26('0x11')]&&_0x40ecbb[_0x5d26('0x1b')]>0x1;var _0x390d7a=[];if(!fs[_0x5d26('0x24')](path[_0x5d26('0x25')](_0x1c152a,_0x3c29d0))&&_0x466f6e){fs['mkdirSync'](path[_0x5d26('0x25')](_0x1c152a,_0x3c29d0));}return BPromise['each'](_0x40ecbb,function(_0x11a86d){_0x390d7a[_0x5d26('0x1f')](_0x11a86d);})[_0x5d26('0x13')](function(){for(var _0x3eae2c=0x0;_0x3eae2c<_0x390d7a[_0x5d26('0x1b')];_0x3eae2c+=0x1){var _0x50dd33;var _0x5b4fee=_0x390d7a[_0x3eae2c];if(_0x466f6e){_0x50dd33=path['join'](_0x1c152a,_0x3c29d0,util['format'](_0x5d26('0x26'),_0x3c29d0,_0x3eae2c,_0x5d26('0x27')));}else{_0x50dd33=path[_0x5d26('0x25')](_0x1c152a,util[_0x5d26('0x16')](_0x5d26('0x28'),_0x3c29d0,'xlsx'));}fs[_0x5d26('0x29')](_0x50dd33,json2xls(_0x5b4fee),'binary');}})[_0x5d26('0x13')](function(){if(_0x466f6e){return new Promise(function(_0x1f8163){zipdir(path['join'](_0x1c152a,_0x3c29d0),{'saveTo':path[_0x5d26('0x25')](_0x1c152a,util[_0x5d26('0x16')]('%s.%s',_0x3c29d0,_0x5d26('0x2a')))},function(_0x51812b,_0x581bb7){rimraf(path[_0x5d26('0x25')](_0x1c152a,_0x3c29d0),function(){});_0x1f8163('zip\x20finished');});});}})[_0x5d26('0x13')](function(){logger['info'](util[_0x5d26('0x16')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x5d26('0xe')));return analyticExtractedReport('Completed',_0x466f6e?util[_0x5d26('0x16')]('%s.%s',_0x3c29d0,_0x466f6e?'zip':_0x5d26('0x27')):null);});})[_0x5d26('0x2b')](function(_0x1af5e1){logger[_0x5d26('0xc')](util[_0x5d26('0x16')](_0x5d26('0x2c'),EXTRACTED_REPORT_ID,'XLSX'),util[_0x5d26('0x2d')](_0x1af5e1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x5d26('0x2e')](function(){process[_0x5d26('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index 7d6f8db..79731bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f2=['XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','app','toLowerCase','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','error','rewrite','util','models','Interval','findAll','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','then','filter','groupBy','hasOwnProperty','priority','extensions','find','push','type','Set','VoiceExtensionId','inbound','CDR(routeid)=','context','outbound','CDR(destination)=','extension','cutdigits','${EXTEN:','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav'];(function(_0x272dff,_0x5cf78f){var _0x3ddb18=function(_0x144de0){while(--_0x144de0){_0x272dff['push'](_0x272dff['shift']());}};_0x3ddb18(++_0x5cf78f);}(_0xb3f2,0x154));var _0x2b3f=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xb3f2[_0x2dadb9];return _0x2f0097;};'use strict';var _=require('lodash');var util=require(_0x2b3f('0x0'));function rewrite(_0x52ee5d,_0x414a55){var _0x274306=this;return _0x52ee5d[_0x2b3f('0x1')][_0x2b3f('0x2')][_0x2b3f('0x3')]({'raw':!![]})['then'](function(_0x1536b2){_0x274306[_0x2b3f('0x4')]=_0x1536b2;return _0x52ee5d['models'][_0x2b3f('0x5')]['findAll']({'where':{'IntervalId':_0x414a55[_0x2b3f('0x6')]},'raw':!![]});})['then'](function(_0x104642){return _0x52ee5d[_0x2b3f('0x1')][_0x2b3f('0x5')][_0x2b3f('0x3')]({'where':{'exten':{'$in':_[_0x2b3f('0x7')](_[_0x2b3f('0x8')](_0x104642,_0x2b3f('0x9')))}},'order':[{'raw':_0x2b3f('0xa')}],'raw':!![]});})[_0x2b3f('0xb')](function(_0x30e7eb){var _0x6a12b2=_[_0x2b3f('0xc')](_0x30e7eb,{'priority':'1'});var _0x64ac56=_[_0x2b3f('0xc')](_0x30e7eb,{'isApp':0x1});var _0x4bc401=_[_0x2b3f('0xd')](_0x64ac56,_0x2b3f('0x9'));var _0x445a9e=['queue','playback'];var _0x2c2aab=[];var _0x32a1a7=[];for(var _0x1db452 in _0x4bc401){if(_0x4bc401[_0x2b3f('0xe')](_0x1db452)){_0x274306[_0x2b3f('0xf')]=0x2;_0x274306[_0x2b3f('0x10')]=[];_0x274306['extension']=_[_0x2b3f('0x11')](_0x6a12b2,{'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')]});_0x274306['extensions'][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':util['format']('CDR(type)=%s',_0x4bc401[_0x1db452][0x0]['type']),'context':_0x4bc401[_0x1db452][0x0]['context'],'exten':_0x4bc401[_0x1db452][0x0]['exten'],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});if(_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')]===_0x2b3f('0x16')){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x17')+_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')],'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}else if(_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')]===_0x2b3f('0x19')){if(_0x274306['extension']){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x1a')+(_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]?_0x2b3f('0x1d')+_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]+'}':'${EXTEN}'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x17')+_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')],'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});var _0x25950f=_0x274306[_0x2b3f('0xf')]++;_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'ExecIf','appdata':_0x2b3f('0x1e')+(_0x25950f+0x2)+_0x2b3f('0x1f')+(_0x25950f+0x1)+')','context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x25950f,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});if(_0x274306[_0x2b3f('0x1b')]){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]?'CDR(prefix)=${EXTEN:0:'+_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]+'}':_0x2b3f('0x20'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306['priority']++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x21')+_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')],'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});if(_0x274306[_0x2b3f('0x1b')]&&_0x274306['extension'][_0x2b3f('0xe')]('recordingFormat')&&_0x274306['extension'][_0x2b3f('0x22')]!=='none'){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0]['type'],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x23'),'context':_0x4bc401[_0x1db452][0x0]['context'],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306['priority']++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x24')+_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x22')]||_0x2b3f('0x25'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306['priority']++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x26'),'context':_0x4bc401[_0x1db452][0x0]['context'],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x27'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x274306[_0x2b3f('0x10')]['push']({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x28'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});for(var _0x18160a=0x0,_0x545aaa=0x0;_0x18160a<_0x4bc401[_0x1db452][_0x2b3f('0x29')];_0x18160a+=0x1,_0x545aaa=0x0){var _0x301f5d=_0x4bc401[_0x1db452][_0x18160a];if(_0x301f5d[_0x2b3f('0x13')]){_0x301f5d[_0x2b3f('0x13')]=_0x301f5d[_0x2b3f('0x13')]['toLowerCase']();}var _0xa11611=[];var _0x468202=[];delete _0x301f5d['id'];delete _0x301f5d['createdAt'];delete _0x301f5d[_0x2b3f('0x2a')];var _0x150ac9=_0x301f5d[_0x2b3f('0x2b')]!==_0x2b3f('0x2c')?[_0x301f5d['interval']]:_0x301f5d['IntervalId']?_[_0x2b3f('0x8')](_['filter'](_0x274306[_0x2b3f('0x4')],{'IntervalId':_0x301f5d[_0x2b3f('0x6')]}),_0x2b3f('0x2b')):[];if(_0x301f5d[_0x2b3f('0xe')](_0x2b3f('0x2d'))){if(_0x301f5d[_0x2b3f('0x2d')]&&_0x301f5d[_0x2b3f('0x2d')]!=='--'){_0xa11611['push']({'type':_0x301f5d[_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x2e')+_0x301f5d[_0x2b3f('0x2d')],'context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9['length']+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});}}if(_0x301f5d[_0x2b3f('0x13')]===_0x2b3f('0x19')&&_0x301f5d[_0x2b3f('0xe')](_0x2b3f('0x2f'))){if(_0x301f5d[_0x2b3f('0x2f')]){_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d[_0x2b3f('0x13')],'app':_0x2b3f('0x30'),'appdata':_0x2b3f('0x31')+_0x301f5d[_0x2b3f('0x2f')]+')','context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d['VoiceExtensionId']});}else{_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d[_0x2b3f('0x9')],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d['VoiceExtensionId']});}}if(_0x301f5d['hasOwnProperty']('answer')){if(_0x445a9e[_0x2b3f('0x32')](_0x301f5d[_0x2b3f('0x33')][_0x2b3f('0x34')]())>=0x0&&_0x301f5d['appType']!=='custom'){if(_0x301f5d['answer']){_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d['type'],'app':_0x2b3f('0x30'),'appdata':_0x2b3f('0x35'),'context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});_0xa11611['push']({'type':_0x301f5d[_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x36'),'context':_0x301f5d['context'],'exten':_0x301f5d[_0x2b3f('0x9')],'priority':_0x150ac9['length']+_0x274306['priority']+_0x545aaa++,'VoiceExtensionId':_0x301f5d['VoiceExtensionId']});}else{_0xa11611['push']({'type':_0x301f5d['type'],'app':_0x2b3f('0x30'),'appdata':_0x2b3f('0x37'),'context':_0x301f5d['context'],'exten':_0x301f5d['exten'],'priority':_0x150ac9['length']+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d['type'],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x38'),'context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});}}}for(var _0x3eace8=0x0;_0x3eace8<_0x150ac9[_0x2b3f('0x29')];_0x3eace8+=0x1){var _0x54a4a7=_0x274306[_0x2b3f('0xf')]+_0x150ac9[_0x2b3f('0x29')];var _0x14dd44=_0x3eace8===_0x150ac9[_0x2b3f('0x29')]-0x1?_0x274306['priority']+_0xa11611[_0x2b3f('0x29')]+_0x468202[_0x2b3f('0x29')]+0x2:_0x274306[_0x2b3f('0xf')]+_0x3eace8+0x1;_0xa11611['splice'](_0x3eace8,0x0,{'type':_0x301f5d[_0x2b3f('0x13')],'app':_0x2b3f('0x39'),'appdata':_0x150ac9[_0x3eace8]+'?'+_0x301f5d[_0x2b3f('0x18')]+_0x2b3f('0x3a')+_0x54a4a7+':'+_0x301f5d[_0x2b3f('0x18')]+_0x2b3f('0x3a')+_0x14dd44,'exten':_0x301f5d['exten'],'context':_0x301f5d[_0x2b3f('0x18')],'priority':_0x274306['priority']+_0x3eace8,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}_0x301f5d[_0x2b3f('0xf')]=_0xa11611[_0x2b3f('0x29')]?_[_0x2b3f('0x3b')](_0xa11611)['priority']+0x1:_0x274306[_0x2b3f('0xf')];_0x274306['priority']=(_0x468202[_0x2b3f('0x29')]?_[_0x2b3f('0x3b')](_0x468202)['priority']:_0x301f5d[_0x2b3f('0xf')])+0x1;_0x274306[_0x2b3f('0x10')]=_[_0x2b3f('0x3c')](_0x274306[_0x2b3f('0x10')],_0xa11611,[_0x301f5d],_0x468202);}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0]['type'],'app':'Hangup','exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'context':_0x4bc401[_0x1db452][0x0]['context'],'priority':_0x274306[_0x2b3f('0xf')],'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x2c2aab['push'](_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]);_0x32a1a7=_[_0x2b3f('0x3c')](_0x32a1a7,_0x274306[_0x2b3f('0x10')]);}}return _0x52ee5d['transaction'](function(_0x341b55){return _0x52ee5d[_0x2b3f('0x1')]['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':{'$in':_0x2c2aab}},'transaction':_0x341b55})['then'](function(_0x12c6c9){return _0x52ee5d['models'][_0x2b3f('0x5')]['bulkCreate'](_['sortBy'](_0x32a1a7,_0x2b3f('0xf')),{'transaction':_0x341b55});});});})['catch'](function(_0x5b2e73){console[_0x2b3f('0x3d')](_0x5b2e73);});}exports[_0x2b3f('0x3e')]=rewrite;
\ No newline at end of file
+var _0xc1bb=['interval','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','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','transaction','error','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','map','exten','filter','groupBy','queue','hasOwnProperty','priority','extension','find','extensions','push','Set','format','CDR(type)=%s','type','VoiceExtensionId','CDR(routeid)=','context','CDR(destination)=','${EXTEN:','cutdigits','${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-PROGRESS=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','*,*,*,*'];(function(_0x336ee6,_0x41ef27){var _0x5994cf=function(_0x4bc92d){while(--_0x4bc92d){_0x336ee6['push'](_0x336ee6['shift']());}};_0x5994cf(++_0x41ef27);}(_0xc1bb,0x1f1));var _0xbc1b=function(_0x4d24fe,_0x285f65){_0x4d24fe=_0x4d24fe-0x0;var _0x531c77=_0xc1bb[_0x4d24fe];return _0x531c77;};'use strict';var _=require(_0xbc1b('0x0'));var util=require(_0xbc1b('0x1'));function rewrite(_0x51b982,_0x545f9c){var _0x47a24c=this;return _0x51b982[_0xbc1b('0x2')][_0xbc1b('0x3')][_0xbc1b('0x4')]({'raw':!![]})[_0xbc1b('0x5')](function(_0xae1121){_0x47a24c[_0xbc1b('0x6')]=_0xae1121;return _0x51b982[_0xbc1b('0x2')][_0xbc1b('0x7')][_0xbc1b('0x4')]({'where':{'IntervalId':_0x545f9c['IntervalId']},'raw':!![]});})[_0xbc1b('0x5')](function(_0x62b937){return _0x51b982['models'][_0xbc1b('0x7')][_0xbc1b('0x4')]({'where':{'exten':{'$in':_['uniq'](_[_0xbc1b('0x8')](_0x62b937,_0xbc1b('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0xbc1b('0x5')](function(_0x212944){var _0x2b5c0c=_['filter'](_0x212944,{'priority':'1'});var _0x2dc25c=_[_0xbc1b('0xa')](_0x212944,{'isApp':0x1});var _0x143e39=_[_0xbc1b('0xb')](_0x2dc25c,_0xbc1b('0x9'));var _0x39dd62=[_0xbc1b('0xc'),'playback'];var _0x323cb5=[];var _0x4366d5=[];for(var _0xbb0040 in _0x143e39){if(_0x143e39[_0xbc1b('0xd')](_0xbb0040)){_0x47a24c[_0xbc1b('0xe')]=0x2;_0x47a24c['extensions']=[];_0x47a24c[_0xbc1b('0xf')]=_[_0xbc1b('0x10')](_0x2b5c0c,{'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')]});_0x47a24c[_0xbc1b('0x11')][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0]['type'],'app':_0xbc1b('0x13'),'appdata':util[_0xbc1b('0x14')](_0xbc1b('0x15'),_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')]),'context':_0x143e39[_0xbb0040][0x0]['context'],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c['priority']++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')]});if(_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')]==='inbound'){_0x47a24c[_0xbc1b('0x11')][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x18')+_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')],'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});}else if(_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')]==='outbound'){if(_0x47a24c['extension']){_0x47a24c[_0xbc1b('0x11')][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':'Set','appdata':_0xbc1b('0x1a')+(_0x47a24c[_0xbc1b('0xf')]['cutdigits']?_0xbc1b('0x1b')+_0x47a24c['extension'][_0xbc1b('0x1c')]+'}':_0xbc1b('0x1d')),'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});}_0x47a24c[_0xbc1b('0x11')]['push']({'type':_0x143e39[_0xbb0040][0x0]['type'],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x18')+_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')],'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});var _0x474f4e=_0x47a24c[_0xbc1b('0xe')]++;_0x47a24c['extensions'][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':_0xbc1b('0x1e'),'appdata':_0xbc1b('0x1f')+(_0x474f4e+0x2)+_0xbc1b('0x20')+(_0x474f4e+0x1)+')','context':_0x143e39[_0xbb0040][0x0]['context'],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x474f4e,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});if(_0x47a24c[_0xbc1b('0xf')]){_0x47a24c[_0xbc1b('0x11')][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':'Set','appdata':_0x47a24c[_0xbc1b('0xf')][_0xbc1b('0x1c')]?_0xbc1b('0x21')+_0x47a24c[_0xbc1b('0xf')][_0xbc1b('0x1c')]+'}':_0xbc1b('0x22'),'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});}_0x47a24c[_0xbc1b('0x11')]['push']({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x23')+_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')],'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')]});if(_0x47a24c[_0xbc1b('0xf')]&&_0x47a24c[_0xbc1b('0xf')]['hasOwnProperty'](_0xbc1b('0x24'))&&_0x47a24c[_0xbc1b('0xf')][_0xbc1b('0x24')]!==_0xbc1b('0x25')){_0x47a24c['extensions']['push']({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x26'),'context':_0x143e39[_0xbb0040][0x0]['context'],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')]});_0x47a24c['extensions'][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x27')+_0x47a24c[_0xbc1b('0xf')][_0xbc1b('0x24')]||_0xbc1b('0x28'),'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')]});}}_0x47a24c[_0xbc1b('0x11')][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c['priority']++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')]});_0x47a24c['extensions'][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':'Set','appdata':_0xbc1b('0x29'),'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});_0x47a24c[_0xbc1b('0x11')]['push']({'type':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x16')],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x2a'),'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'priority':_0x47a24c[_0xbc1b('0xe')]++,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});for(var _0x3ee240=0x0,_0x361317=0x0;_0x3ee240<_0x143e39[_0xbb0040]['length'];_0x3ee240+=0x1,_0x361317=0x0){var _0x24557b=_0x143e39[_0xbb0040][_0x3ee240];if(_0x24557b['type']){_0x24557b['type']=_0x24557b['type'][_0xbc1b('0x2b')]();}var _0x2e3cd4=[];var _0xcc5234=[];delete _0x24557b['id'];delete _0x24557b[_0xbc1b('0x2c')];delete _0x24557b[_0xbc1b('0x2d')];var _0x181d2a=_0x24557b['interval']!==_0xbc1b('0x2e')?[_0x24557b[_0xbc1b('0x2f')]]:_0x24557b['IntervalId']?_[_0xbc1b('0x8')](_[_0xbc1b('0xa')](_0x47a24c['intervals'],{'IntervalId':_0x24557b['IntervalId']}),'interval'):[];if(_0x24557b[_0xbc1b('0xd')](_0xbc1b('0x30'))){if(_0x24557b[_0xbc1b('0x30')]&&_0x24557b[_0xbc1b('0x30')]!=='--'){_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b['type'],'app':_0xbc1b('0x13'),'appdata':'CDR(tag)='+_0x24557b[_0xbc1b('0x30')],'context':_0x24557b[_0xbc1b('0x19')],'exten':_0x24557b[_0xbc1b('0x9')],'priority':_0x181d2a['length']+_0x47a24c[_0xbc1b('0xe')]+_0x361317++,'VoiceExtensionId':_0x24557b[_0xbc1b('0x17')]});}}if(_0x24557b['type']==='outbound'&&_0x24557b[_0xbc1b('0xd')](_0xbc1b('0x31'))){if(_0x24557b[_0xbc1b('0x31')]){_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b[_0xbc1b('0x16')],'app':_0xbc1b('0x1e'),'appdata':_0xbc1b('0x32')+_0x24557b[_0xbc1b('0x31')]+')','context':_0x24557b[_0xbc1b('0x19')],'exten':_0x24557b[_0xbc1b('0x9')],'priority':_0x181d2a[_0xbc1b('0x33')]+_0x47a24c[_0xbc1b('0xe')]+_0x361317++,'VoiceExtensionId':_0x24557b[_0xbc1b('0x17')]});}else{_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b['type'],'app':_0xbc1b('0x1e'),'appdata':_0xbc1b('0x34'),'context':_0x24557b[_0xbc1b('0x19')],'exten':_0x24557b[_0xbc1b('0x9')],'priority':_0x181d2a['length']+_0x47a24c[_0xbc1b('0xe')]+_0x361317++,'VoiceExtensionId':_0x24557b['VoiceExtensionId']});}}if(_0x24557b[_0xbc1b('0xd')](_0xbc1b('0x35'))){if(_0x39dd62[_0xbc1b('0x36')](_0x24557b[_0xbc1b('0x37')]['toLowerCase']())>=0x0&&_0x24557b[_0xbc1b('0x38')]!==_0xbc1b('0x39')){if(_0x24557b['answer']){_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b[_0xbc1b('0x16')],'app':_0xbc1b('0x1e'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x24557b['context'],'exten':_0x24557b[_0xbc1b('0x9')],'priority':_0x181d2a[_0xbc1b('0x33')]+_0x47a24c['priority']+_0x361317++,'VoiceExtensionId':_0x24557b[_0xbc1b('0x17')]});_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b[_0xbc1b('0x16')],'app':'Set','appdata':_0xbc1b('0x3a'),'context':_0x24557b[_0xbc1b('0x19')],'exten':_0x24557b['exten'],'priority':_0x181d2a['length']+_0x47a24c[_0xbc1b('0xe')]+_0x361317++,'VoiceExtensionId':_0x24557b[_0xbc1b('0x17')]});}else{_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b[_0xbc1b('0x16')],'app':_0xbc1b('0x1e'),'appdata':_0xbc1b('0x3b'),'context':_0x24557b[_0xbc1b('0x19')],'exten':_0x24557b[_0xbc1b('0x9')],'priority':_0x181d2a[_0xbc1b('0x33')]+_0x47a24c[_0xbc1b('0xe')]+_0x361317++,'VoiceExtensionId':_0x24557b[_0xbc1b('0x17')]});_0x2e3cd4[_0xbc1b('0x12')]({'type':_0x24557b['type'],'app':_0xbc1b('0x13'),'appdata':_0xbc1b('0x3c'),'context':_0x24557b[_0xbc1b('0x19')],'exten':_0x24557b[_0xbc1b('0x9')],'priority':_0x181d2a['length']+_0x47a24c[_0xbc1b('0xe')]+_0x361317++,'VoiceExtensionId':_0x24557b[_0xbc1b('0x17')]});}}}for(var _0x55f6de=0x0;_0x55f6de<_0x181d2a[_0xbc1b('0x33')];_0x55f6de+=0x1){var _0x475617=_0x47a24c['priority']+_0x181d2a[_0xbc1b('0x33')];var _0x237adf=_0x55f6de===_0x181d2a[_0xbc1b('0x33')]-0x1?_0x47a24c[_0xbc1b('0xe')]+_0x2e3cd4[_0xbc1b('0x33')]+_0xcc5234[_0xbc1b('0x33')]+0x2:_0x47a24c[_0xbc1b('0xe')]+_0x55f6de+0x1;_0x2e3cd4['splice'](_0x55f6de,0x0,{'type':_0x24557b[_0xbc1b('0x16')],'app':_0xbc1b('0x3d'),'appdata':_0x181d2a[_0x55f6de]+'?'+_0x24557b[_0xbc1b('0x19')]+_0xbc1b('0x3e')+_0x475617+':'+_0x24557b[_0xbc1b('0x19')]+_0xbc1b('0x3e')+_0x237adf,'exten':_0x24557b['exten'],'context':_0x24557b[_0xbc1b('0x19')],'priority':_0x47a24c[_0xbc1b('0xe')]+_0x55f6de,'VoiceExtensionId':_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']});}_0x24557b[_0xbc1b('0xe')]=_0x2e3cd4['length']?_[_0xbc1b('0x3f')](_0x2e3cd4)['priority']+0x1:_0x47a24c[_0xbc1b('0xe')];_0x47a24c['priority']=(_0xcc5234[_0xbc1b('0x33')]?_[_0xbc1b('0x3f')](_0xcc5234)[_0xbc1b('0xe')]:_0x24557b[_0xbc1b('0xe')])+0x1;_0x47a24c[_0xbc1b('0x11')]=_[_0xbc1b('0x40')](_0x47a24c[_0xbc1b('0x11')],_0x2e3cd4,[_0x24557b],_0xcc5234);}_0x47a24c[_0xbc1b('0x11')][_0xbc1b('0x12')]({'type':_0x143e39[_0xbb0040][0x0]['type'],'app':'Hangup','exten':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x9')],'context':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x19')],'priority':_0x47a24c[_0xbc1b('0xe')],'VoiceExtensionId':_0x143e39[_0xbb0040][0x0][_0xbc1b('0x17')]});_0x323cb5[_0xbc1b('0x12')](_0x143e39[_0xbb0040][0x0]['VoiceExtensionId']);_0x4366d5=_[_0xbc1b('0x40')](_0x4366d5,_0x47a24c[_0xbc1b('0x11')]);}}return _0x51b982[_0xbc1b('0x41')](function(_0x36d8e){return _0x51b982[_0xbc1b('0x2')][_0xbc1b('0x7')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x323cb5}},'transaction':_0x36d8e})['then'](function(_0x3ad024){return _0x51b982['models']['VoiceExtension']['bulkCreate'](_['sortBy'](_0x4366d5,_0xbc1b('0xe')),{'transaction':_0x36d8e});});});})['catch'](function(_0x337bae){console[_0xbc1b('0x42')](_0x337bae);});}exports[_0xbc1b('0x43')]=rewrite;
\ No newline at end of file
index ff11bfa..4cb87f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f8=['phone','ContactId','ListId','createdAt','updatedAt','select','field','scheduledAt','toString','NOW()','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','insert','into','cm_hopper','cm_contacts','str','cm_hopper_black','findAll','outbound','Lists','get','dialCheckDuplicateType','always','VoiceQueueId','onlyIfOpen','sequelize','query','VoiceQueue','CmList','BlackLists','CampaignId','all','Campaign','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','../../../config/environment','../../../config/logger','api','defaults','redis','localhost','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','CompanyId','find','duplicate','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','fromQuery'];(function(_0x1e90be,_0x2f6a67){var _0x413fc9=function(_0x29ab0c){while(--_0x29ab0c){_0x1e90be['push'](_0x1e90be['shift']());}};_0x413fc9(++_0x2f6a67);}(_0xf4f8,0x18a));var _0x8f4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf4f8[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var util=require(_0x8f4f('0x0'));var _=require(_0x8f4f('0x1'));var fs=require('fs');var squel=require(_0x8f4f('0x2'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0x8f4f('0x3'));var logger=require(_0x8f4f('0x4'))(_0x8f4f('0x5'));config['redis']=_[_0x8f4f('0x6')](config[_0x8f4f('0x7')],{'host':_0x8f4f('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0x8f4f('0x9')](socket);try{if(!process[_0x8f4f('0xa')][0x2]||process[_0x8f4f('0xa')][0x2]===_0x8f4f('0xb')||process[_0x8f4f('0xa')][0x2]===_0x8f4f('0xc')){throw new Error(_0x8f4f('0xd'));}var FILEPATH=process['argv'][0x2];if(!process[_0x8f4f('0xa')][0x3]||process['argv'][0x3]===_0x8f4f('0xb')||process['argv'][0x3]===_0x8f4f('0xc')||!process[_0x8f4f('0xa')][0x4]||process['argv'][0x4]===_0x8f4f('0xb')||process[_0x8f4f('0xa')][0x4]===_0x8f4f('0xc')){throw new Error(_0x8f4f('0xe'));}var FIELDS=_['zipObject'](process[_0x8f4f('0xa')][0x3][_0x8f4f('0xf')](','),process['argv'][0x4]['split'](','));if(!process['argv'][0x5]||process['argv'][0x5]==='undefined'||process[_0x8f4f('0xa')][0x5]==='null'){throw new Error(_0x8f4f('0x10'));}var LISTID=process[_0x8f4f('0xa')][0x5];var COMPANYID=process[_0x8f4f('0xa')][0x6]&&process[_0x8f4f('0xa')][0x6]!==_0x8f4f('0xb')&&process[_0x8f4f('0xa')][0x6]!=='null'?process[_0x8f4f('0xa')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process['argv'][0x7]!=='undefined'&&process[_0x8f4f('0xa')][0x7]!==_0x8f4f('0xc')?process[_0x8f4f('0xa')][0x7]:null;if(!process[_0x8f4f('0xa')][0x8]||process['argv'][0x8]==='undefined'||process['argv'][0x8]===_0x8f4f('0xc')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x8f4f('0xa')][0x8];}catch(_0x40d82e){logger[_0x8f4f('0x11')](_0x40d82e);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(_0x3f4426,_0x5fd281,_0x8d8a47,_0x479e40){var _0x10ddf3={'message':_0x5fd281};_0x10ddf3[_0x3f4426]=!![];if(_0x8d8a47){_0x10ddf3[_0x8f4f('0x12')]=_0x8d8a47;}if(_0x479e40){_0x10ddf3[_0x8f4f('0x13')]=_0x479e40;}return _0x10ddf3;}function isEmail(_0x4ba942){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))*$/[_0x8f4f('0x14')](_0x4ba942);}function checkRow(_0x415131,_0x48de2b,_0x23f790){return new BPromise(function(_0x3d7836,_0x4f009b){if(_[_0x8f4f('0x15')](_0x415131)){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x16'),null,_0x23f790));}if(_0x415131['errors']&&_0x415131[_0x8f4f('0x17')][_0x8f4f('0x18')]){var _0x1b2ee6=_[_0x8f4f('0x19')](_0x415131[_0x8f4f('0x17')],_0x8f4f('0x1a'))[_0x8f4f('0x1b')](';');return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x1b2ee6,null,_0x23f790));}var _0x3c438c={};for(var _0x75e511 in FIELDS){if(FIELDS[_0x8f4f('0x1c')](_0x75e511)&&FIELDS[_0x75e511]){_0x3c438c[_0x75e511]=_0x415131[_0x8f4f('0x1d')][0x0][FIELDS[_0x75e511]]||_0x415131[_0x8f4f('0x1d')][0x0]['\ufeff'+FIELDS[_0x75e511]];}}if(!_0x3c438c[_0x8f4f('0x1e')]){return _0x4f009b(handleCheckRowError('error',_0x8f4f('0x1f'),null,_0x23f790));}if(!_0x3c438c['phone']){return _0x4f009b(handleCheckRowError('error',_0x8f4f('0x20'),null,_0x23f790));}if(_0x3c438c[_0x8f4f('0x21')]){var _0x57c9ac=moment(_0x3c438c['birthDate'],'YYYY-MM-DD');if(!_0x57c9ac[_0x8f4f('0x22')]()){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x23'),null,_0x23f790));}}if(_0x3c438c[_0x8f4f('0x24')]){if(!isEmail(_0x3c438c[_0x8f4f('0x24')])){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x25'),null,_0x23f790));}}_0x3c438c['ListId']=LISTID;_0x3c438c[_0x8f4f('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x48de2b){var _0x3b9554={};for(var _0x467687=0x0,_0x39261b=DUPLICATES['length'];_0x467687<_0x39261b;_0x467687+=0x1){_0x3b9554[DUPLICATES[_0x467687]]=_0x3c438c[DUPLICATES[_0x467687]];}var _0xbb05a7=_[_0x8f4f('0x27')](_0x48de2b,_0x3b9554);if(_0xbb05a7){return _0x4f009b(handleCheckRowError(_0x8f4f('0x28'),'Duplicate\x20Contact',_0xbb05a7,_0x23f790));}}return db[_0x8f4f('0x29')][_0x8f4f('0x2a')](_0x3c438c,{'raw':!![],'hooks':![],'fields':_[_0x8f4f('0x2b')](_0x3c438c)})[_0x8f4f('0x2c')](function(_0x14ce14){if(DUPLICATES&&DUPLICATES[_0x8f4f('0x18')]&&_0x48de2b){_0x48de2b[_0x8f4f('0x2d')](_[_0x8f4f('0x2e')](_0x3c438c,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x14ce14['id'];return _0x3d7836();})[_0x8f4f('0x2f')](function(_0x315b77){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x30')+(_0x315b77[_0x8f4f('0x1a')]||JSON[_0x8f4f('0x31')](_0x315b77)),null,_0x23f790));});});}function checkHopper(){function _0x413b14(){return function(_0x176b89){logger[_0x8f4f('0x11')](_0x8f4f('0x32'),_0x8f4f('0x33'),util[_0x8f4f('0x34')](_0x176b89,{'showHidden':![],'depth':null}));};}var _0x262ffe=function(_0x5378c2,_0x318299){var _0x4fec2e=squel['insert']()['into']('cm_hopper')[_0x8f4f('0x35')]([_0x8f4f('0x36'),'scheduledAt',_0x8f4f('0x37'),_0x8f4f('0x38'),_0x318299,_0x8f4f('0x39'),_0x8f4f('0x3a')],squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'),_0x8f4f('0x36'))['field']('NOW()',_0x8f4f('0x3d'))[_0x8f4f('0x3c')]('id',_0x8f4f('0x37'))[_0x8f4f('0x3c')](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))[_0x8f4f('0x3c')](_0x5378c2['id'][_0x8f4f('0x3e')](),_0x318299)[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x39'))[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x3a'))[_0x8f4f('0x40')]('cm_contacts')[_0x8f4f('0x41')](_0x8f4f('0x42'))[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())[_0x8f4f('0x41')](_0x8f4f('0x44'))[_0x8f4f('0x41')](_0x8f4f('0x45'),squel['select']()[_0x8f4f('0x3c')](_0x8f4f('0x36'))[_0x8f4f('0x40')]('cm_hopper')[_0x8f4f('0x41')](_0x318299+_0x8f4f('0x46'),_0x5378c2['id']['toString']())))[_0x8f4f('0x3e')]();return _0x4fec2e;};var _0x10e7d4=function(_0x182fc0,_0x476dc1){var _0x34acb1=squel[_0x8f4f('0x47')]()[_0x8f4f('0x48')](_0x8f4f('0x49'))[_0x8f4f('0x35')](['phone','scheduledAt',_0x8f4f('0x37'),'ListId',_0x476dc1,'createdAt',_0x8f4f('0x3a')],squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'),_0x8f4f('0x36'))[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x3d'))[_0x8f4f('0x3c')]('id','ContactId')[_0x8f4f('0x3c')](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))[_0x8f4f('0x3c')](_0x182fc0['id']['toString'](),_0x476dc1)[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x39'))[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x3a'))[_0x8f4f('0x40')](_0x8f4f('0x4a'))[_0x8f4f('0x41')](_0x8f4f('0x42'))[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())[_0x8f4f('0x41')]('id\x20IN\x20?',squel[_0x8f4f('0x4b')](hopperContacts))[_0x8f4f('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0x8f4f('0x41')](_0x8f4f('0x45'),squel['select']()[_0x8f4f('0x3c')]('calleridnum')['from']('cm_hopper_final')[_0x8f4f('0x41')](_0x476dc1+'\x20=\x20?',_0x182fc0['id'][_0x8f4f('0x3e')]()))[_0x8f4f('0x41')](_0x8f4f('0x45'),squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'))[_0x8f4f('0x40')](_0x8f4f('0x49'))[_0x8f4f('0x41')](_0x476dc1+_0x8f4f('0x46'),_0x182fc0['id']['toString']())))[_0x8f4f('0x3e')]();return _0x34acb1;};function _0x386266(_0x38dd0a,_0x17258b){var _0x59588e=squel['insert']()['into'](_0x8f4f('0x49'))[_0x8f4f('0x35')]([_0x8f4f('0x36'),_0x8f4f('0x3d'),_0x8f4f('0x37'),_0x8f4f('0x38'),_0x17258b,_0x8f4f('0x39'),'updatedAt'],squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'),_0x8f4f('0x36'))[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x3d'))[_0x8f4f('0x3c')]('id',_0x8f4f('0x37'))['field'](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))['field'](_0x38dd0a['id'][_0x8f4f('0x3e')](),_0x17258b)[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x39'))[_0x8f4f('0x3c')](_0x8f4f('0x3f'),'updatedAt')[_0x8f4f('0x40')](_0x8f4f('0x4a'))['where']('deletedAt\x20IS\x20NULL')[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())['where']('id\x20IN\x20?',squel['str'](hopperContacts))[_0x8f4f('0x41')](_0x8f4f('0x44')))[_0x8f4f('0x3e')]();return _0x59588e;}function _0x2654ce(_0x319336,_0x10fce5){var _0x4758b0=squel[_0x8f4f('0x47')]()[_0x8f4f('0x48')](_0x8f4f('0x4c'))[_0x8f4f('0x35')]([_0x8f4f('0x36'),_0x8f4f('0x37'),_0x8f4f('0x38'),_0x10fce5,'createdAt',_0x8f4f('0x3a')],squel['select']()[_0x8f4f('0x3c')]('phone',_0x8f4f('0x36'))[_0x8f4f('0x3c')]('id',_0x8f4f('0x37'))[_0x8f4f('0x3c')](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))['field'](_0x319336['id'][_0x8f4f('0x3e')](),_0x10fce5)[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x39'))[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x3a'))[_0x8f4f('0x40')](_0x8f4f('0x4a'))[_0x8f4f('0x41')](_0x8f4f('0x42'))[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())[_0x8f4f('0x41')]('id\x20IN\x20?',squel[_0x8f4f('0x4b')](hopperContacts))[_0x8f4f('0x41')](_0x8f4f('0x44')))[_0x8f4f('0x3e')]();return _0x4758b0;}return db['VoiceQueue'][_0x8f4f('0x4d')]({'where':{'type':_0x8f4f('0x4e')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x8f4f('0x4f'),'where':{'id':LISTID}}]})[_0x8f4f('0x2c')](function(_0x3bfaa8){var _0x31a0c9=[];if(_0x3bfaa8){var _0x5b074b;for(var _0x27cb7d=0x0,_0x4c709a;_0x27cb7d<_0x3bfaa8[_0x8f4f('0x18')];_0x27cb7d+=0x1){_0x4c709a=_0x3bfaa8[_0x27cb7d][_0x8f4f('0x50')]({'plain':!![]});switch(_0x4c709a[_0x8f4f('0x51')]){case _0x8f4f('0x52'):_0x31a0c9['push'](db['sequelize']['query'](_0x10e7d4(_0x4c709a,_0x8f4f('0x53')))['then'](function(){})['catch'](_0x413b14()));break;case _0x8f4f('0x54'):_0x31a0c9['push'](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x262ffe(_0x4c709a,_0x8f4f('0x53')))[_0x8f4f('0x2c')](function(){})['catch'](_0x413b14()));break;default:_0x31a0c9[_0x8f4f('0x2d')](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x386266(_0x4c709a,'VoiceQueueId'))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));}}}return _0x31a0c9;})['all']()[_0x8f4f('0x2c')](function(){return db[_0x8f4f('0x57')][_0x8f4f('0x4d')]({'where':{'type':_0x8f4f('0x4e')},'attributes':['id'],'include':[{'model':db[_0x8f4f('0x58')],'as':_0x8f4f('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x1f007f){var _0x7d9e49=[];if(_0x1f007f){var _0x2599ba;for(var _0x1e8920=0x0,_0x43bcf8;_0x1e8920<_0x1f007f[_0x8f4f('0x18')];_0x1e8920+=0x1){_0x43bcf8=_0x1f007f[_0x1e8920][_0x8f4f('0x50')]({'plain':!![]});_0x7d9e49['push'](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x2654ce(_0x43bcf8,'VoiceQueueId'))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));}}return _0x7d9e49;})['all']();})[_0x8f4f('0x2c')](function(){return db['Campaign'][_0x8f4f('0x4d')]({'attributes':['id',_0x8f4f('0x51')],'include':[{'model':db['CmList'],'as':_0x8f4f('0x4f'),'where':{'id':LISTID}}]})[_0x8f4f('0x2c')](function(_0x2f7aa7){var _0x1c2a00=[];if(_0x2f7aa7){for(var _0x7321e=0x0,_0x34ba27;_0x7321e<_0x2f7aa7[_0x8f4f('0x18')];_0x7321e+=0x1){_0x34ba27=_0x2f7aa7[_0x7321e][_0x8f4f('0x50')]({'plain':!![]});switch(_0x34ba27['dialCheckDuplicateType']){case _0x8f4f('0x52'):_0x1c2a00['push'](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x10e7d4(_0x34ba27,_0x8f4f('0x5a')))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));break;case _0x8f4f('0x54'):_0x1c2a00[_0x8f4f('0x2d')](db['sequelize']['query'](_0x262ffe(_0x34ba27,'CampaignId'))['then'](function(){})[_0x8f4f('0x2f')](_0x413b14()));break;default:_0x1c2a00[_0x8f4f('0x2d')](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x386266(_0x34ba27,'CampaignId'))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));}}}return _0x1c2a00;})[_0x8f4f('0x5b')]();})[_0x8f4f('0x2c')](function(){return db[_0x8f4f('0x5c')][_0x8f4f('0x4d')]({'attributes':['id'],'include':[{'model':db[_0x8f4f('0x58')],'as':_0x8f4f('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x125be9){var _0x186ba4=[];if(_0x125be9){for(var _0x35d586=0x0,_0x3ae70e;_0x35d586<_0x125be9[_0x8f4f('0x18')];_0x35d586+=0x1){_0x3ae70e=_0x125be9[_0x35d586]['get']({'plain':!![]});_0x186ba4[_0x8f4f('0x2d')](db['sequelize'][_0x8f4f('0x56')](_0x2654ce(_0x3ae70e,_0x8f4f('0x5a')))['then'](function(){})['catch'](_0x413b14()));}}return _0x186ba4;})[_0x8f4f('0x5b')]();})[_0x8f4f('0x2f')](function(_0x2aa5c4){logger[_0x8f4f('0x11')](_0x8f4f('0x5d'),_0x8f4f('0x5e'),_0x2aa5c4[_0x8f4f('0x1a')]);});}var processPromises=function(_0x3dd6fa){return BPromise[_0x8f4f('0x5b')](promises)[_0x8f4f('0x2c')](function(_0x2bd6f0){})[_0x8f4f('0x2f')](function(_0x2c01fa){logger['error'](_0x8f4f('0x5f'),JSON[_0x8f4f('0x31')](_0x2c01fa));})[_0x8f4f('0x60')](function(){socket[_0x8f4f('0x61')](_0x8f4f('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3dd6fa){return _0x3dd6fa[_0x8f4f('0x63')]();}});};var endCsv=function(){return BPromise[_0x8f4f('0x64')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x8f4f('0x2c')](function(){socket['emit'](_0x8f4f('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x8f4f('0x65')](FILEPATH);}catch(_0x33c23c){logger[_0x8f4f('0x11')](_0x8f4f('0x66'),JSON[_0x8f4f('0x31')](_0x33c23c));}finally{process[_0x8f4f('0x67')](0x0);}});};process['on'](_0x8f4f('0x68'),function(){logger[_0x8f4f('0x69')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0x8f4f('0x64')]()[_0x8f4f('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x8f4f('0xf')](',');return db[_0x8f4f('0x29')][_0x8f4f('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x8f4f('0x2c')](function(_0x2d4480){var _0x297e4b=fs[_0x8f4f('0x6a')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x8f4f('0x6b')](_0x297e4b,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3b6ca7,_0xd92582){total+=0x1;var _0x39453f=total;promises[_0x8f4f('0x2d')](checkRow(_0x3b6ca7,_0x2d4480,_0x39453f)[_0x8f4f('0x2c')](function(){success+=0x1;})[_0x8f4f('0x2f')](function(_0x18e2f5){if(_0x18e2f5[_0x8f4f('0x11')]){errors+=0x1;delete _0x18e2f5[_0x8f4f('0x11')];}else if(_0x18e2f5[_0x8f4f('0x28')]){duplicates+=0x1;delete _0x18e2f5[_0x8f4f('0x28')];}rows[_0x8f4f('0x2d')](_0x18e2f5);}));if(total%0xc8===0x0){_0xd92582[_0x8f4f('0x6c')]();return processPromises(_0xd92582);}},'complete':function(){return processPromises()[_0x8f4f('0x2c')](function(){logger[_0x8f4f('0x69')](_0x8f4f('0x6d'));endCsv();});},'error':function(_0x3fe52f,_0x21a218){logger[_0x8f4f('0x69')](_0x8f4f('0x6e'),JSON[_0x8f4f('0x31')](_0x3fe52f));endCsv();}});})[_0x8f4f('0x2f')](function(_0x847e1e){logger[_0x8f4f('0x11')](_0x8f4f('0x6f'),JSON[_0x8f4f('0x31')](_0x847e1e));});}main();
\ No newline at end of file
+var _0xe28d=['CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','null','undefined','Missing\x20binding\x20parameters!','zipObject','split','error','test','isNil','errors','length','map','message','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','inspect','insert','into','cm_hopper','scheduledAt','ContactId','ListId','createdAt','updatedAt','field','toString','from','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','fromQuery','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','id\x20IN\x20?','str','calleridnum','\x20=\x20?','cm_hopper_black','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','always','query','onlyIfOpen','VoiceQueueId','sequelize','all','outbound','BlackLists','get','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','resume','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','createReadStream','parse','pause','info','CSV\x20parsed\x20correctly!'];(function(_0x11a12c,_0x197a28){var _0x282daa=function(_0x3acde0){while(--_0x3acde0){_0x11a12c['push'](_0x11a12c['shift']());}};_0x282daa(++_0x197a28);}(_0xe28d,0x140));var _0xde28=function(_0x1d211b,_0x475f3b){_0x1d211b=_0x1d211b-0x0;var _0x47c88b=_0xe28d[_0x1d211b];return _0x47c88b;};'use strict';var BPromise=require('bluebird');var util=require(_0xde28('0x0'));var _=require('lodash');var fs=require('fs');var squel=require(_0xde28('0x1'));var Papa=require(_0xde28('0x2'));var Redis=require(_0xde28('0x3'));var db=require(_0xde28('0x4'))['db'];var config=require(_0xde28('0x5'));var logger=require('../../../config/logger')(_0xde28('0x6'));config['redis']=_[_0xde28('0x7')](config['redis'],{'host':_0xde28('0x8'),'port':0x18eb});var socket=require(_0xde28('0x9'))(new Redis(config['redis']));require(_0xde28('0xa'))['register'](socket);try{if(!process[_0xde28('0xb')][0x2]||process['argv'][0x2]==='undefined'||process[_0xde28('0xb')][0x2]===_0xde28('0xc')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0xde28('0xb')][0x2];if(!process['argv'][0x3]||process[_0xde28('0xb')][0x3]===_0xde28('0xd')||process[_0xde28('0xb')][0x3]===_0xde28('0xc')||!process[_0xde28('0xb')][0x4]||process[_0xde28('0xb')][0x4]===_0xde28('0xd')||process[_0xde28('0xb')][0x4]===_0xde28('0xc')){throw new Error(_0xde28('0xe'));}var FIELDS=_[_0xde28('0xf')](process[_0xde28('0xb')][0x3][_0xde28('0x10')](','),process['argv'][0x4][_0xde28('0x10')](','));if(!process[_0xde28('0xb')][0x5]||process[_0xde28('0xb')][0x5]===_0xde28('0xd')||process[_0xde28('0xb')][0x5]==='null'){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0xde28('0xb')][0x5];var COMPANYID=process[_0xde28('0xb')][0x6]&&process[_0xde28('0xb')][0x6]!==_0xde28('0xd')&&process[_0xde28('0xb')][0x6]!==_0xde28('0xc')?process[_0xde28('0xb')][0x6]:null;var DUPLICATES=process[_0xde28('0xb')][0x7]&&process[_0xde28('0xb')][0x7]!==_0xde28('0xd')&&process[_0xde28('0xb')][0x7]!==_0xde28('0xc')?process[_0xde28('0xb')][0x7]:null;if(!process['argv'][0x8]||process[_0xde28('0xb')][0x8]===_0xde28('0xd')||process[_0xde28('0xb')][0x8]===_0xde28('0xc')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0xde28('0xb')][0x8];}catch(_0x2b2a4e){logger[_0xde28('0x11')](_0x2b2a4e);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(_0x544d89,_0x8d63d2,_0x3acd13,_0x487504){var _0x17c904={'message':_0x8d63d2};_0x17c904[_0x544d89]=!![];if(_0x3acd13){_0x17c904['contact']=_0x3acd13;}if(_0x487504){_0x17c904['index']=_0x487504;}return _0x17c904;}function isEmail(_0x675113){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))*$/[_0xde28('0x12')](_0x675113);}function checkRow(_0x5c4698,_0x42bad4,_0x503ede){return new BPromise(function(_0x4603e3,_0x542e3e){if(_[_0xde28('0x13')](_0x5c4698)){return _0x542e3e(handleCheckRowError(_0xde28('0x11'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x503ede));}if(_0x5c4698['errors']&&_0x5c4698[_0xde28('0x14')][_0xde28('0x15')]){var _0x3547ee=_[_0xde28('0x16')](_0x5c4698['errors'],_0xde28('0x17'))[_0xde28('0x18')](';');return _0x542e3e(handleCheckRowError(_0xde28('0x11'),_0x3547ee,null,_0x503ede));}var _0x1e4d05={};for(var _0xee1290 in FIELDS){if(FIELDS[_0xde28('0x19')](_0xee1290)&&FIELDS[_0xee1290]){_0x1e4d05[_0xee1290]=_0x5c4698[_0xde28('0x1a')][0x0][FIELDS[_0xee1290]]||_0x5c4698['data'][0x0]['\ufeff'+FIELDS[_0xee1290]];}}if(!_0x1e4d05[_0xde28('0x1b')]){return _0x542e3e(handleCheckRowError(_0xde28('0x11'),'firstName\x20not\x20specified!',null,_0x503ede));}if(!_0x1e4d05[_0xde28('0x1c')]){return _0x542e3e(handleCheckRowError(_0xde28('0x11'),_0xde28('0x1d'),null,_0x503ede));}if(_0x1e4d05[_0xde28('0x1e')]){var _0x2edd6d=moment(_0x1e4d05[_0xde28('0x1e')],_0xde28('0x1f'));if(!_0x2edd6d[_0xde28('0x20')]()){return _0x542e3e(handleCheckRowError(_0xde28('0x11'),_0xde28('0x21'),null,_0x503ede));}}if(_0x1e4d05[_0xde28('0x22')]){if(!isEmail(_0x1e4d05[_0xde28('0x22')])){return _0x542e3e(handleCheckRowError(_0xde28('0x11'),_0xde28('0x23'),null,_0x503ede));}}_0x1e4d05['ListId']=LISTID;_0x1e4d05[_0xde28('0x24')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x42bad4){var _0x2cca59={};for(var _0x5984db=0x0,_0x32c29b=DUPLICATES[_0xde28('0x15')];_0x5984db<_0x32c29b;_0x5984db+=0x1){_0x2cca59[DUPLICATES[_0x5984db]]=_0x1e4d05[DUPLICATES[_0x5984db]];}var _0x2780e3=_[_0xde28('0x25')](_0x42bad4,_0x2cca59);if(_0x2780e3){return _0x542e3e(handleCheckRowError(_0xde28('0x26'),_0xde28('0x27'),_0x2780e3,_0x503ede));}}return db[_0xde28('0x28')][_0xde28('0x29')](_0x1e4d05,{'raw':!![],'hooks':![],'fields':_['keys'](_0x1e4d05)})[_0xde28('0x2a')](function(_0x577c52){if(DUPLICATES&&DUPLICATES[_0xde28('0x15')]&&_0x42bad4){_0x42bad4[_0xde28('0x2b')](_['pick'](_0x1e4d05,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x577c52['id'];return _0x4603e3();})[_0xde28('0x2c')](function(_0x584ce5){return _0x542e3e(handleCheckRowError(_0xde28('0x11'),_0xde28('0x2d')+(_0x584ce5[_0xde28('0x17')]||JSON[_0xde28('0x2e')](_0x584ce5)),null,_0x503ede));});});}function checkHopper(){function _0x1c0dfb(){return function(_0x291fbc){logger[_0xde28('0x11')]('cmContact','checkHopper',util[_0xde28('0x2f')](_0x291fbc,{'showHidden':![],'depth':null}));};}var _0x184c16=function(_0x271361,_0x61a43){var _0x9044ac=squel[_0xde28('0x30')]()[_0xde28('0x31')](_0xde28('0x32'))['fromQuery']([_0xde28('0x1c'),_0xde28('0x33'),_0xde28('0x34'),_0xde28('0x35'),_0x61a43,_0xde28('0x36'),_0xde28('0x37')],squel['select']()[_0xde28('0x38')](_0xde28('0x1c'),'phone')[_0xde28('0x38')]('NOW()','scheduledAt')[_0xde28('0x38')]('id',_0xde28('0x34'))[_0xde28('0x38')](LISTID[_0xde28('0x39')](),'ListId')['field'](_0x271361['id'][_0xde28('0x39')](),_0x61a43)['field']('NOW()','createdAt')[_0xde28('0x38')]('NOW()',_0xde28('0x37'))[_0xde28('0x3a')]('cm_contacts')[_0xde28('0x3b')]('deletedAt\x20IS\x20NULL')[_0xde28('0x3b')](_0xde28('0x3c'),LISTID['toString']())[_0xde28('0x3b')](_0xde28('0x3d'))[_0xde28('0x3b')](_0xde28('0x3e'),squel[_0xde28('0x3f')]()[_0xde28('0x38')](_0xde28('0x1c'))['from'](_0xde28('0x32'))[_0xde28('0x3b')](_0x61a43+'\x20=\x20?',_0x271361['id'][_0xde28('0x39')]())))[_0xde28('0x39')]();return _0x9044ac;};var _0x4703f8=function(_0x16f0b4,_0x27925a){var _0x48f10a=squel[_0xde28('0x30')]()[_0xde28('0x31')](_0xde28('0x32'))[_0xde28('0x40')]([_0xde28('0x1c'),_0xde28('0x33'),_0xde28('0x34'),_0xde28('0x35'),_0x27925a,_0xde28('0x36'),_0xde28('0x37')],squel[_0xde28('0x3f')]()[_0xde28('0x38')](_0xde28('0x1c'),_0xde28('0x1c'))[_0xde28('0x38')](_0xde28('0x41'),_0xde28('0x33'))[_0xde28('0x38')]('id',_0xde28('0x34'))[_0xde28('0x38')](LISTID[_0xde28('0x39')](),_0xde28('0x35'))[_0xde28('0x38')](_0x16f0b4['id']['toString'](),_0x27925a)[_0xde28('0x38')](_0xde28('0x41'),_0xde28('0x36'))['field'](_0xde28('0x41'),'updatedAt')['from'](_0xde28('0x42'))[_0xde28('0x3b')](_0xde28('0x43'))['where'](_0xde28('0x3c'),LISTID[_0xde28('0x39')]())[_0xde28('0x3b')](_0xde28('0x44'),squel[_0xde28('0x45')](hopperContacts))[_0xde28('0x3b')](_0xde28('0x3d'))[_0xde28('0x3b')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xde28('0x38')](_0xde28('0x46'))[_0xde28('0x3a')]('cm_hopper_final')[_0xde28('0x3b')](_0x27925a+_0xde28('0x47'),_0x16f0b4['id']['toString']()))[_0xde28('0x3b')](_0xde28('0x3e'),squel[_0xde28('0x3f')]()['field'](_0xde28('0x1c'))[_0xde28('0x3a')](_0xde28('0x32'))[_0xde28('0x3b')](_0x27925a+_0xde28('0x47'),_0x16f0b4['id'][_0xde28('0x39')]())))['toString']();return _0x48f10a;};function _0x341e68(_0x53575b,_0x4a94f6){var _0x5946a9=squel[_0xde28('0x30')]()[_0xde28('0x31')](_0xde28('0x32'))[_0xde28('0x40')](['phone','scheduledAt','ContactId',_0xde28('0x35'),_0x4a94f6,_0xde28('0x36'),_0xde28('0x37')],squel[_0xde28('0x3f')]()[_0xde28('0x38')]('phone',_0xde28('0x1c'))['field']('NOW()',_0xde28('0x33'))[_0xde28('0x38')]('id',_0xde28('0x34'))['field'](LISTID['toString'](),_0xde28('0x35'))[_0xde28('0x38')](_0x53575b['id'][_0xde28('0x39')](),_0x4a94f6)['field']('NOW()',_0xde28('0x36'))[_0xde28('0x38')](_0xde28('0x41'),_0xde28('0x37'))['from'](_0xde28('0x42'))[_0xde28('0x3b')](_0xde28('0x43'))['where'](_0xde28('0x3c'),LISTID[_0xde28('0x39')]())[_0xde28('0x3b')]('id\x20IN\x20?',squel[_0xde28('0x45')](hopperContacts))[_0xde28('0x3b')](_0xde28('0x3d')))[_0xde28('0x39')]();return _0x5946a9;}function _0x5b1f75(_0x56f49a,_0x50bea8){var _0x59006c=squel['insert']()[_0xde28('0x31')](_0xde28('0x48'))['fromQuery'](['phone',_0xde28('0x34'),_0xde28('0x35'),_0x50bea8,_0xde28('0x36'),'updatedAt'],squel[_0xde28('0x3f')]()[_0xde28('0x38')](_0xde28('0x1c'),_0xde28('0x1c'))[_0xde28('0x38')]('id',_0xde28('0x34'))[_0xde28('0x38')](LISTID['toString'](),_0xde28('0x35'))[_0xde28('0x38')](_0x56f49a['id'][_0xde28('0x39')](),_0x50bea8)[_0xde28('0x38')](_0xde28('0x41'),_0xde28('0x36'))[_0xde28('0x38')](_0xde28('0x41'),_0xde28('0x37'))[_0xde28('0x3a')](_0xde28('0x42'))['where']('deletedAt\x20IS\x20NULL')[_0xde28('0x3b')](_0xde28('0x3c'),LISTID['toString']())[_0xde28('0x3b')](_0xde28('0x44'),squel[_0xde28('0x45')](hopperContacts))[_0xde28('0x3b')]('phone\x20IS\x20NOT\x20NULL'))[_0xde28('0x39')]();return _0x59006c;}return db[_0xde28('0x49')][_0xde28('0x4a')]({'where':{'type':'outbound'},'attributes':['id',_0xde28('0x4b')],'include':[{'model':db[_0xde28('0x4c')],'as':_0xde28('0x4d'),'where':{'id':LISTID}}]})[_0xde28('0x2a')](function(_0x3902c4){var _0x3da257=[];if(_0x3902c4){var _0x1ae756;for(var _0x2eebb4=0x0,_0xc1cfff;_0x2eebb4<_0x3902c4[_0xde28('0x15')];_0x2eebb4+=0x1){_0xc1cfff=_0x3902c4[_0x2eebb4]['get']({'plain':!![]});switch(_0xc1cfff[_0xde28('0x4b')]){case _0xde28('0x4e'):_0x3da257['push'](db['sequelize'][_0xde28('0x4f')](_0x4703f8(_0xc1cfff,'VoiceQueueId'))['then'](function(){})[_0xde28('0x2c')](_0x1c0dfb()));break;case _0xde28('0x50'):_0x3da257[_0xde28('0x2b')](db['sequelize'][_0xde28('0x4f')](_0x184c16(_0xc1cfff,_0xde28('0x51')))['then'](function(){})[_0xde28('0x2c')](_0x1c0dfb()));break;default:_0x3da257[_0xde28('0x2b')](db[_0xde28('0x52')][_0xde28('0x4f')](_0x341e68(_0xc1cfff,_0xde28('0x51')))[_0xde28('0x2a')](function(){})[_0xde28('0x2c')](_0x1c0dfb()));}}}return _0x3da257;})[_0xde28('0x53')]()[_0xde28('0x2a')](function(){return db[_0xde28('0x49')][_0xde28('0x4a')]({'where':{'type':_0xde28('0x54')},'attributes':['id'],'include':[{'model':db[_0xde28('0x4c')],'as':_0xde28('0x55'),'where':{'id':LISTID}}]})['then'](function(_0x3677f7){var _0x5b384e=[];if(_0x3677f7){var _0x47fdd1;for(var _0x4c5de1=0x0,_0x404e22;_0x4c5de1<_0x3677f7[_0xde28('0x15')];_0x4c5de1+=0x1){_0x404e22=_0x3677f7[_0x4c5de1][_0xde28('0x56')]({'plain':!![]});_0x5b384e[_0xde28('0x2b')](db[_0xde28('0x52')][_0xde28('0x4f')](_0x5b1f75(_0x404e22,_0xde28('0x51')))[_0xde28('0x2a')](function(){})[_0xde28('0x2c')](_0x1c0dfb()));}}return _0x5b384e;})[_0xde28('0x53')]();})['then'](function(){return db[_0xde28('0x57')][_0xde28('0x4a')]({'attributes':['id',_0xde28('0x4b')],'include':[{'model':db[_0xde28('0x4c')],'as':_0xde28('0x4d'),'where':{'id':LISTID}}]})[_0xde28('0x2a')](function(_0x5cf1e4){var _0x38f69f=[];if(_0x5cf1e4){for(var _0x51be5d=0x0,_0x57aefd;_0x51be5d<_0x5cf1e4[_0xde28('0x15')];_0x51be5d+=0x1){_0x57aefd=_0x5cf1e4[_0x51be5d]['get']({'plain':!![]});switch(_0x57aefd[_0xde28('0x4b')]){case _0xde28('0x4e'):_0x38f69f[_0xde28('0x2b')](db[_0xde28('0x52')]['query'](_0x4703f8(_0x57aefd,'CampaignId'))[_0xde28('0x2a')](function(){})[_0xde28('0x2c')](_0x1c0dfb()));break;case _0xde28('0x50'):_0x38f69f[_0xde28('0x2b')](db[_0xde28('0x52')][_0xde28('0x4f')](_0x184c16(_0x57aefd,_0xde28('0x58')))[_0xde28('0x2a')](function(){})[_0xde28('0x2c')](_0x1c0dfb()));break;default:_0x38f69f[_0xde28('0x2b')](db[_0xde28('0x52')]['query'](_0x341e68(_0x57aefd,_0xde28('0x58')))['then'](function(){})[_0xde28('0x2c')](_0x1c0dfb()));}}}return _0x38f69f;})['all']();})[_0xde28('0x2a')](function(){return db[_0xde28('0x57')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xde28('0x55'),'where':{'id':LISTID}}]})[_0xde28('0x2a')](function(_0x1d09c2){var _0x126e28=[];if(_0x1d09c2){for(var _0x30d815=0x0,_0x35a382;_0x30d815<_0x1d09c2[_0xde28('0x15')];_0x30d815+=0x1){_0x35a382=_0x1d09c2[_0x30d815]['get']({'plain':!![]});_0x126e28[_0xde28('0x2b')](db[_0xde28('0x52')][_0xde28('0x4f')](_0x5b1f75(_0x35a382,_0xde28('0x58')))[_0xde28('0x2a')](function(){})[_0xde28('0x2c')](_0x1c0dfb()));}}return _0x126e28;})[_0xde28('0x53')]();})[_0xde28('0x2c')](function(_0x6b6844){logger[_0xde28('0x11')](_0xde28('0x59'),_0xde28('0x5a'),_0x6b6844[_0xde28('0x17')]);});}var processPromises=function(_0x1a37b6){return BPromise['all'](promises)['then'](function(_0x4808c4){})[_0xde28('0x2c')](function(_0x2c9c3a){logger[_0xde28('0x11')](_0xde28('0x5b'),JSON[_0xde28('0x2e')](_0x2c9c3a));})['finally'](function(){socket[_0xde28('0x5c')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1a37b6){return _0x1a37b6[_0xde28('0x5d')]();}});};var endCsv=function(){return BPromise['resolve']()['then'](function(){if(hopperContacts){return checkHopper();}})[_0xde28('0x2a')](function(){socket[_0xde28('0x5c')](_0xde28('0x5e')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xde28('0x5f')](FILEPATH);}catch(_0x2fb4cb){logger['error'](_0xde28('0x60'),JSON[_0xde28('0x2e')](_0x2fb4cb));}finally{process[_0xde28('0x61')](0x0);}});};process['on'](_0xde28('0x62'),function(){logger['info']('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()[_0xde28('0x2a')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xde28('0x10')](',');return db[_0xde28('0x28')][_0xde28('0x4a')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0xf6dfa5){var _0x130ae2=fs[_0xde28('0x63')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xde28('0x64')](_0x130ae2,{'header':!![],'skipEmptyLines':!![],'step':function(_0x40bde3,_0x30e9a1){total+=0x1;var _0x2399bd=total;promises['push'](checkRow(_0x40bde3,_0xf6dfa5,_0x2399bd)['then'](function(){success+=0x1;})[_0xde28('0x2c')](function(_0x2eea10){if(_0x2eea10[_0xde28('0x11')]){errors+=0x1;delete _0x2eea10['error'];}else if(_0x2eea10[_0xde28('0x26')]){duplicates+=0x1;delete _0x2eea10[_0xde28('0x26')];}rows[_0xde28('0x2b')](_0x2eea10);}));if(total%0xc8===0x0){_0x30e9a1[_0xde28('0x65')]();return processPromises(_0x30e9a1);}},'complete':function(){return processPromises()[_0xde28('0x2a')](function(){logger[_0xde28('0x66')](_0xde28('0x67'));endCsv();});},'error':function(_0x48c2c6,_0x1ae738){logger[_0xde28('0x66')](_0xde28('0x68'),JSON[_0xde28('0x2e')](_0x48c2c6));endCsv();}});})[_0xde28('0x2c')](function(_0x495362){logger['error'](_0xde28('0x69'),JSON[_0xde28('0x2e')](_0x495362));});}main();
\ No newline at end of file
index 636403f..2aa7fe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b2=['firstName','\x20not\x20specified','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','affectedRows','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','UserId','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../config/environment','../../../config/logger','import','redis','defaults','socket.io-emitter','format','test','select','field','phone','from','where','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','into','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','toString','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','errors','push','code','info','sequelize','query','catch','main','stringify','start','binding','socket_timestamp','root','server/files/tmp','writeFileSync','parse','createReadStream','data','length','rows','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','email','dateOfBirth','YYYY-MM-DD'];(function(_0xfdec06,_0x9fa2f4){var _0x58a539=function(_0xfc799c){while(--_0xfc799c){_0xfdec06['push'](_0xfdec06['shift']());}};_0x58a539(++_0x9fa2f4);}(_0x66b2,0x1ad));var _0x266b=function(_0x2a4e2b,_0x423e6b){_0x2a4e2b=_0x2a4e2b-0x0;var _0x4bb0f0=_0x66b2[_0x2a4e2b];return _0x4bb0f0;};'use strict';var fs=require('fs');var path=require(_0x266b('0x0'));var _=require(_0x266b('0x1'));var Papa=require(_0x266b('0x2'));var util=require(_0x266b('0x3'));var BPromise=require('bluebird');var moment=require(_0x266b('0x4'));var squel=require(_0x266b('0x5'));var Redis=require(_0x266b('0x6'));var db=require('../../../mysqldb')['db'];var config=require(_0x266b('0x7'));var logger=require(_0x266b('0x8'))(_0x266b('0x9'));config[_0x266b('0xa')]=_[_0x266b('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x266b('0xc'))(new Redis(config[_0x266b('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x266b('0xd')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0xa74191){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))*$/[_0x266b('0xe')](_0xa74191);}function selectNotIn(_0x500d85,_0x4a905b,_0x3023d9,_0x4ae219,_0x34474f){return squel[_0x266b('0xf')]()[_0x266b('0x10')](_0x266b('0x11'))[_0x266b('0x12')](_0x4ae219)['join'](_0x4a905b,null,_0x4a905b+'.id\x20=\x20'+_0x4ae219+'.'+_0x3023d9)['where'](_0x4ae219+'.'+_0x3023d9+'\x20=\x20'+_0x500d85+'.'+_0x3023d9)[_0x266b('0x13')](_0x4a905b+_0x266b('0x14')+_0x34474f[_0x266b('0x15')]()+')');}function insertCmHopper(_0x3159a9,_0x26847f,_0x1a59bb,_0x2e47b3,_0x72c79){var _0x523fa7=[_0x266b('0x16'),'cm_contacts.scheduledat',_0x266b('0x17'),_0x266b('0x18'),_0x26847f+'.'+_0x2e47b3,_0x266b('0x19'),_0x266b('0x1a'),_0x266b('0x1b'),_0x266b('0x1c'),'\x22'+_0x72c79+'\x22'];return squel[_0x266b('0x1d')]()['into'](_0x266b('0x1e'))[_0x266b('0x1f')]([_0x266b('0x11'),_0x266b('0x20'),_0x266b('0x21'),_0x266b('0x22'),_0x2e47b3,'createdAt',_0x266b('0x23'),_0x266b('0x24'),'UserId',_0x266b('0x25')],squel[_0x266b('0xf')]()[_0x266b('0x26')](_0x523fa7)[_0x266b('0x12')](_0x26847f)[_0x266b('0x15')](_0x266b('0x27'),null,_0x266b('0x28')+_0x26847f+_0x266b('0x29'))[_0x266b('0x15')](_0x1a59bb,null,_0x1a59bb+_0x266b('0x2a')+_0x26847f+'.'+_0x2e47b3)[_0x266b('0x13')](_0x26847f+_0x266b('0x2b'),_0x3159a9)[_0x266b('0x13')](_0x266b('0x2c'),NOW)['where'](_0x266b('0x2d'),selectNotIn(_0x26847f,_0x1a59bb,_0x2e47b3,'cm_hopper',[_0x266b('0x2e'),_0x266b('0x2f')]))[_0x266b('0x13')](_0x266b('0x2d'),selectNotIn(_0x26847f,_0x1a59bb,_0x2e47b3,_0x266b('0x1e'),['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x296da8,_0xcd35ef,_0x332649,_0x24b1ff){var _0x2cdc86=[_0x266b('0x16'),_0x266b('0x17'),_0x266b('0x18'),_0xcd35ef+'.'+_0x24b1ff,_0x266b('0x19'),_0x266b('0x1a')];return squel[_0x266b('0x1d')]()[_0x266b('0x30')](_0x266b('0x31'))[_0x266b('0x1f')]([_0x266b('0x11'),_0x266b('0x21'),'ListId',_0x24b1ff,'createdAt',_0x266b('0x23')],squel[_0x266b('0xf')]()[_0x266b('0x26')](_0x2cdc86)[_0x266b('0x12')](_0xcd35ef)[_0x266b('0x15')](_0x266b('0x27'),null,_0x266b('0x28')+_0xcd35ef+_0x266b('0x29'))['join'](_0x332649,null,_0x332649+_0x266b('0x2a')+_0xcd35ef+'.'+_0x24b1ff)[_0x266b('0x13')](_0xcd35ef+'.CmListId\x20=\x20?',_0x296da8)[_0x266b('0x13')](_0x266b('0x2c'),NOW)[_0x266b('0x13')](_0x266b('0x2d'),squel['select']()['field'](_0x266b('0x11'))['from'](_0x266b('0x31'))[_0x266b('0x13')](_0x266b('0x32'),_0x296da8)[_0x266b('0x13')](_0x24b1ff+_0x266b('0x33'),_0xcd35ef+'.'+_0x24b1ff)))[_0x266b('0x34')]();}function insertCmContact(_0x3e8377,_0x41e69a,_0x7e99d7,_0x38b830){var _0x323b32=_['concat'](_[_0x266b('0x35')](_0x38b830),['ListId',_0x266b('0x36'),'createdAt',_0x266b('0x23')]);return squel[_0x266b('0x1d')]()[_0x266b('0x30')](_0x266b('0x27'))[_0x266b('0x1f')](_0x323b32,squel[_0x266b('0xf')]()[_0x266b('0x26')](_0x323b32)['from'](_0x41e69a)[_0x266b('0x13')]('('+_0x7e99d7[_0x266b('0x15')](',')+_0x266b('0x37'),squel['select']()['fields'](_0x7e99d7)[_0x266b('0x12')]('cm_contacts')['where'](_0x266b('0x32'),_0x3e8377)['where']('deletedAt\x20IS\x20NULL'))['where'](_0x266b('0x38'),squel[_0x266b('0xf')]()[_0x266b('0x10')](_0x266b('0x39'),_0x266b('0x3a'))['from'](_0x41e69a)[_0x266b('0x3b')](_0x7e99d7[_0x266b('0x15')](','))))[_0x266b('0x34')]();}function handleStop(){logger['info'](_0x266b('0x3c'));stopped=!![];}function handleUncaughtException(_0x842d7){logger[_0x266b('0x3d')](_0x842d7[_0x266b('0x3e')]);process[_0x266b('0x3f')](0x1);}function handleError(_0x25f7c1,_0x1a7f0f){stats[_0x266b('0x40')][_0x266b('0x41')]({'name':_0x1a7f0f[_0x266b('0x42')],'message':_0x1a7f0f[_0x266b('0x3e')],'row':_0x25f7c1});}function handleQuery(_0x49a238){logger[_0x266b('0x43')](_0x49a238);return db[_0x266b('0x44')][_0x266b('0x45')](_0x49a238)['spread'](function(_0x5039e8){results[_0x266b('0x41')](_0x5039e8);})[_0x266b('0x46')](function(_0x3e9eb4){logger[_0x266b('0x3d')](_0x3e9eb4[_0x266b('0x3e')]);});}function main(_0x3807f0,_0x375799,_0x1ee58b,_0x349835){logger[_0x266b('0x43')](_0x266b('0x47'),_0x3807f0,JSON[_0x266b('0x48')](_0x375799));process['send'](_0x266b('0x49'));var _0x5ac536=_0x375799[_0x266b('0x4a')];var _0x844215=_0x375799[_0x266b('0x4b')];var _0x1a4ec6=path[_0x266b('0x15')](config[_0x266b('0x4c')],_0x266b('0x4d'),_0x844215+'.csv');var _0x180c4c=_[_0x266b('0x35')](_0x5ac536)[_0x266b('0x15')]();logger[_0x266b('0x43')]('header',_0x180c4c);fs[_0x266b('0x4e')](_0x1a4ec6,_0x180c4c+'\x0a');Papa[_0x266b('0x4f')](fs[_0x266b('0x50')](_0x3807f0),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4bc885,_0x35e62b){try{for(var _0xb55b83=0x0,_0x4824fc=[];_0xb55b83<_0x4bc885[_0x266b('0x51')][_0x266b('0x52')];_0xb55b83++){stats[_0x266b('0x53')]+=0x1;if(_0x4bc885[_0x266b('0x40')][_0xb55b83]){handleError(_0x4bc885['data'][_0xb55b83],_0x4bc885[_0x266b('0x40')][_0xb55b83]);}else{var _0x16beff=[];for(var _0x2a905c in _0x5ac536){if(_0x5ac536['hasOwnProperty'](_0x2a905c)){if(_0x4bc885[_0x266b('0x51')][_0xb55b83][_0x5ac536[_0x2a905c]]){var _0x2f9db3=_['trim'](_0x4bc885[_0x266b('0x51')][_0xb55b83][_0x5ac536[_0x2a905c]][_0x266b('0x54')](/"/g,'\x27'));switch(_0x2a905c){case _0x266b('0x20'):var _0x1df2fe=moment(_0x2f9db3,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x1df2fe[_0x266b('0x55')]()){_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');}else{_0x16beff['push'](_0x266b('0x56'));}break;case'priority':var _0xaab0ed=parseInt(_0x2f9db3);_0x2f9db3=_[_0x266b('0x57')](_0xaab0ed)||_0xaab0ed<0x0||_0xaab0ed>0x4?_0x349835?0x3:0x2:_0xaab0ed;_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');break;case'UserId':var _0x33c52f=parseInt(_0x2f9db3);if(_['isNumber'](_0x33c52f)&&_['includes'](_0x1ee58b,_0x33c52f)){_0x4824fc[_0x266b('0x41')]('\x22'+_0x33c52f+'\x22');}else{_0x16beff[_0x266b('0x41')]('agent\x20not\x20exists');}break;case _0x266b('0x58'):if(isEmail(_0x2f9db3)){_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');}else{_0x16beff[_0x266b('0x41')]('email\x20wrong\x20format');}break;case _0x266b('0x59'):var _0x1acda8=moment(_0x2f9db3,_0x266b('0x5a'),!![]);if(_0x1acda8[_0x266b('0x55')]()){_0x4824fc['push']('\x22'+_0x2f9db3+'\x22');}else{_0x16beff[_0x266b('0x41')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');}}else{switch(_0x2a905c){case _0x266b('0x5b'):case _0x266b('0x11'):_0x16beff[_0x266b('0x41')](_0x2a905c+_0x266b('0x5c'));break;default:_0x4824fc[_0x266b('0x41')]('\x22\x22');}}}}if(_0x16beff[_0x266b('0x52')]){handleError(_0x4bc885[_0x266b('0x51')][_0xb55b83],{'code':'SystemRow','message':_0x16beff[_0x266b('0x15')]()});}else{fs['appendFileSync'](_0x1a4ec6,_0x4824fc['join']()+'\x0a');}_0x4824fc=[];}if(!(stats[_0x266b('0x53')]%0xc8)){socket[_0x266b('0x5d')](_0x266b('0x5e')+_0x844215,stats);stats[_0x266b('0x40')]=[];}}if(stopped){logger['info'](_0x266b('0x5f'));_0x35e62b[_0x266b('0x60')]();}}catch(_0x389f6b){handleError(_0x4bc885[_0x266b('0x51')][_0xb55b83],{'code':_0x266b('0x61'),'message':_0x389f6b['message']});logger[_0x266b('0x3d')](_0x266b('0x62'),_0x389f6b['message']);}},'complete':function(){try{var _0x4ff554=[];var _0x2a7e68='cm_contacts';if(_0x375799[_0x266b('0x63')]&&_0x375799[_0x266b('0x63')][_0x266b('0x52')]){_0x2a7e68=_0x266b('0x64')+_0x844215;_0x4ff554[_0x266b('0x41')](_0x266b('0x65')+_0x2a7e68+'\x20LIKE\x20cm_contacts;');}var _0x2af795=util[_0x266b('0xd')](_0x266b('0x66'),_0x1a4ec6,_0x2a7e68,_0x180c4c,_0x375799[_0x266b('0x22')],_0x375799['CompanyId']||null,NOW,NOW);if(_[_0x266b('0x67')](_0x5ac536[_0x266b('0x20')])){_0x2af795+=_0x266b('0x68');}_0x4ff554[_0x266b('0x41')](_0x2af795);if(_0x375799[_0x266b('0x63')]&&_0x375799['duplicates']['length']){_0x4ff554[_0x266b('0x41')](insertCmContact(_0x375799[_0x266b('0x22')],_0x2a7e68,_0x375799[_0x266b('0x63')],_0x5ac536));_0x4ff554[_0x266b('0x41')](_0x266b('0x69')+_0x2a7e68+';');}_0x4ff554['push'](insertCmHopper(_0x375799[_0x266b('0x22')],_0x266b('0x6a'),_0x266b('0x6b'),_0x266b('0x6c'),_0x349835));_0x4ff554['push'](insertCmHopperBlack(_0x375799[_0x266b('0x22')],_0x266b('0x6d'),_0x266b('0x6b'),_0x266b('0x6c')));_0x4ff554['push'](insertCmHopper(_0x375799[_0x266b('0x22')],'campaigns_has_cm_lists',_0x266b('0x6e'),_0x266b('0x6f'),_0x349835));_0x4ff554['push'](insertCmHopperBlack(_0x375799[_0x266b('0x22')],_0x266b('0x70'),_0x266b('0x6e'),'CampaignId'));BPromise[_0x266b('0x71')](_0x4ff554,handleQuery)[_0x266b('0x72')](function(_0x30b87c){stats['finish']=!![];stats[_0x266b('0x73')]=_0x375799['duplicates']&&_0x375799['duplicates'][_0x266b('0x52')]?results[0x2]['affectedRows']:results[0x0][_0x266b('0x73')];socket[_0x266b('0x5d')](_0x266b('0x5e')+_0x844215,stats);fs[_0x266b('0x74')](_0x3807f0);fs[_0x266b('0x74')](_0x1a4ec6);process[_0x266b('0x3f')](0x0);})[_0x266b('0x46')](function(_0x5cd979){logger[_0x266b('0x3d')](_0x5cd979[_0x266b('0x3e')]);process[_0x266b('0x3f')](0x1);});}catch(_0x5eff07){logger[_0x266b('0x3d')]('complete',_0x5eff07[_0x266b('0x3e')]);process[_0x266b('0x3f')](0x1);}},'error':function(_0x420b8a,_0x597b9b,_0x4c2b7f,_0x237461){throw new Error(_0x237461);}});}function validate(){if(process[_0x266b('0x75')]&&process['argv'][_0x266b('0x52')]<0x4){throw new Error(_0x266b('0x76'));}var _0x351631=path[_0x266b('0x15')](config['root'],'server/files/tmp',process[_0x266b('0x75')][0x2]);if(!fs[_0x266b('0x77')](_0x351631)){throw new Error(_0x266b('0x78'));}var _0x4597d9={};try{_0x4597d9=JSON['parse'](process[_0x266b('0x75')][0x3]);if(!_0x4597d9[_0x266b('0x4a')]){throw new Error(_0x266b('0x79'));}if(!_0x4597d9[_0x266b('0x4a')]['phone']){throw new Error(_0x266b('0x7a'));}if(!_0x4597d9['binding']['firstName']){throw new Error(_0x266b('0x7b'));}var _0x557c03=0x0;if(_0x4597d9[_0x266b('0x4a')][_0x266b('0x7c')]){_0x557c03=0x1;}if(!_0x4597d9[_0x266b('0x22')]){throw new Error(_0x266b('0x7d'));}}catch(_0x5ac7f4){throw new Error(_0x266b('0x7e'));}var _0x6149a6=[];try{_0x6149a6=_['map'](JSON[_0x266b('0x4f')](process[_0x266b('0x75')][0x4]),'id');}catch(_0x37778b){logger[_0x266b('0x43')](_0x266b('0x7f'));}main(_0x351631,_0x4597d9,_0x6149a6,_0x557c03);}validate();process['on'](_0x266b('0x80'),handleStop);process['on'](_0x266b('0x81'),handleUncaughtException);
\ No newline at end of file
+var _0xef05=['util','bluebird','moment','squel','ioredis','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','test','field','phone','from','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','into','cm_hopper_black','select','ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','MIN(id)','min_id','info','Received\x20SIGINT','error','message','exit','errors','push','code','query','spread','catch','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','.csv','parse','createReadStream','rows','hasOwnProperty','data','trim','replace','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','length','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','duplicates','cm_contacts_','CREATE\x20TABLE\x20','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','then','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','papaparse'];(function(_0x31880d,_0x4f0ff3){var _0x423823=function(_0x57cc92){while(--_0x57cc92){_0x31880d['push'](_0x31880d['shift']());}};_0x423823(++_0x4f0ff3);}(_0xef05,0x115));var _0x5ef0=function(_0x1809ea,_0x1f8d65){_0x1809ea=_0x1809ea-0x0;var _0x39b6c2=_0xef05[_0x1809ea];return _0x39b6c2;};'use strict';var fs=require('fs');var path=require(_0x5ef0('0x0'));var _=require(_0x5ef0('0x1'));var Papa=require(_0x5ef0('0x2'));var util=require(_0x5ef0('0x3'));var BPromise=require(_0x5ef0('0x4'));var moment=require(_0x5ef0('0x5'));var squel=require(_0x5ef0('0x6'));var Redis=require(_0x5ef0('0x7'));var db=require('../../../mysqldb')['db'];var config=require(_0x5ef0('0x8'));var logger=require(_0x5ef0('0x9'))(_0x5ef0('0xa'));config[_0x5ef0('0xb')]=_[_0x5ef0('0xc')](config[_0x5ef0('0xb')],{'host':_0x5ef0('0xd'),'port':0x18eb});var socket=require(_0x5ef0('0xe'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x5ef0('0xf')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x438d7c){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))*$/[_0x5ef0('0x10')](_0x438d7c);}function selectNotIn(_0x453de7,_0x1ca971,_0x490d12,_0x3eac6c,_0x1c69fe){return squel['select']()[_0x5ef0('0x11')](_0x5ef0('0x12'))[_0x5ef0('0x13')](_0x3eac6c)[_0x5ef0('0x14')](_0x1ca971,null,_0x1ca971+'.id\x20=\x20'+_0x3eac6c+'.'+_0x490d12)[_0x5ef0('0x15')](_0x3eac6c+'.'+_0x490d12+_0x5ef0('0x16')+_0x453de7+'.'+_0x490d12)['where'](_0x1ca971+_0x5ef0('0x17')+_0x1c69fe[_0x5ef0('0x14')]()+')');}function insertCmHopper(_0x30a293,_0x2e9865,_0x48b0b9,_0x37b844,_0x559ce9){var _0x4e3cb1=['cm_contacts.phone',_0x5ef0('0x18'),_0x5ef0('0x19'),_0x5ef0('0x1a'),_0x2e9865+'.'+_0x37b844,_0x5ef0('0x1b'),_0x5ef0('0x1c'),_0x5ef0('0x1d'),_0x5ef0('0x1e'),'\x22'+_0x559ce9+'\x22'];return squel[_0x5ef0('0x1f')]()['into'](_0x5ef0('0x20'))[_0x5ef0('0x21')]([_0x5ef0('0x12'),'scheduledat',_0x5ef0('0x22'),_0x5ef0('0x23'),_0x37b844,_0x5ef0('0x24'),_0x5ef0('0x25'),_0x5ef0('0x26'),_0x5ef0('0x27'),_0x5ef0('0x28')],squel['select']()[_0x5ef0('0x29')](_0x4e3cb1)[_0x5ef0('0x13')](_0x2e9865)[_0x5ef0('0x14')](_0x5ef0('0x2a'),null,_0x5ef0('0x2b')+_0x2e9865+_0x5ef0('0x2c'))[_0x5ef0('0x14')](_0x48b0b9,null,_0x48b0b9+_0x5ef0('0x2d')+_0x2e9865+'.'+_0x37b844)['where'](_0x2e9865+_0x5ef0('0x2e'),_0x30a293)[_0x5ef0('0x15')](_0x5ef0('0x2f'),NOW)[_0x5ef0('0x15')](_0x5ef0('0x30'),selectNotIn(_0x2e9865,_0x48b0b9,_0x37b844,'cm_hopper',[_0x5ef0('0x31'),_0x5ef0('0x32')]))[_0x5ef0('0x15')](_0x5ef0('0x30'),selectNotIn(_0x2e9865,_0x48b0b9,_0x37b844,_0x5ef0('0x20'),['\x22always\x22'])))[_0x5ef0('0x33')]();}function insertCmHopperBlack(_0x45376c,_0x5ecc82,_0x255316,_0x463684){var _0xd78a1c=['cm_contacts.phone','cm_contacts.id',_0x5ef0('0x1a'),_0x5ecc82+'.'+_0x463684,_0x5ef0('0x1b'),'cm_contacts.updatedAt'];return squel[_0x5ef0('0x1f')]()[_0x5ef0('0x34')](_0x5ef0('0x35'))[_0x5ef0('0x21')]([_0x5ef0('0x12'),_0x5ef0('0x22'),_0x5ef0('0x23'),_0x463684,_0x5ef0('0x24'),'updatedAt'],squel[_0x5ef0('0x36')]()[_0x5ef0('0x29')](_0xd78a1c)[_0x5ef0('0x13')](_0x5ecc82)[_0x5ef0('0x14')](_0x5ef0('0x2a'),null,'cm_contacts.ListId\x20=\x20'+_0x5ecc82+_0x5ef0('0x2c'))[_0x5ef0('0x14')](_0x255316,null,_0x255316+_0x5ef0('0x2d')+_0x5ecc82+'.'+_0x463684)[_0x5ef0('0x15')](_0x5ecc82+_0x5ef0('0x2e'),_0x45376c)['where'](_0x5ef0('0x2f'),NOW)[_0x5ef0('0x15')](_0x5ef0('0x30'),squel[_0x5ef0('0x36')]()[_0x5ef0('0x11')](_0x5ef0('0x12'))[_0x5ef0('0x13')](_0x5ef0('0x35'))[_0x5ef0('0x15')](_0x5ef0('0x37'),_0x45376c)[_0x5ef0('0x15')](_0x463684+'\x20=\x20?',_0x5ecc82+'.'+_0x463684)))[_0x5ef0('0x33')]();}function insertCmContact(_0x33ccce,_0x330d5b,_0x271bc3,_0x4260ca){var _0x203f8b=_[_0x5ef0('0x38')](_[_0x5ef0('0x39')](_0x4260ca),['ListId',_0x5ef0('0x3a'),'createdAt',_0x5ef0('0x25')]);return squel[_0x5ef0('0x1f')]()['into'](_0x5ef0('0x2a'))[_0x5ef0('0x21')](_0x203f8b,squel[_0x5ef0('0x36')]()['fields'](_0x203f8b)['from'](_0x330d5b)[_0x5ef0('0x15')]('('+_0x271bc3[_0x5ef0('0x14')](',')+_0x5ef0('0x3b'),squel[_0x5ef0('0x36')]()['fields'](_0x271bc3)['from']('cm_contacts')[_0x5ef0('0x15')]('ListId\x20=\x20?',_0x33ccce)[_0x5ef0('0x15')](_0x5ef0('0x3c')))[_0x5ef0('0x15')]('id\x20IN\x20?',squel['select']()[_0x5ef0('0x11')](_0x5ef0('0x3d'),_0x5ef0('0x3e'))['from'](_0x330d5b)['group'](_0x271bc3[_0x5ef0('0x14')](','))))['toString']();}function handleStop(){logger[_0x5ef0('0x3f')](_0x5ef0('0x40'));stopped=!![];}function handleUncaughtException(_0x2652fa){logger[_0x5ef0('0x41')](_0x2652fa[_0x5ef0('0x42')]);process[_0x5ef0('0x43')](0x1);}function handleError(_0x10b4e9,_0x4e41ff){stats[_0x5ef0('0x44')][_0x5ef0('0x45')]({'name':_0x4e41ff[_0x5ef0('0x46')],'message':_0x4e41ff[_0x5ef0('0x42')],'row':_0x10b4e9});}function handleQuery(_0x38ac27){logger[_0x5ef0('0x3f')](_0x38ac27);return db['sequelize'][_0x5ef0('0x47')](_0x38ac27)[_0x5ef0('0x48')](function(_0x12ebd5){results['push'](_0x12ebd5);})[_0x5ef0('0x49')](function(_0x2235a2){logger[_0x5ef0('0x41')](_0x2235a2['message']);});}function main(_0x4b73c0,_0x1f7d18,_0x4769fe,_0x17eeb6){logger['info'](_0x5ef0('0x4a'),_0x4b73c0,JSON[_0x5ef0('0x4b')](_0x1f7d18));process[_0x5ef0('0x4c')](_0x5ef0('0x4d'));var _0x541c78=_0x1f7d18[_0x5ef0('0x4e')];var _0x143bcd=_0x1f7d18[_0x5ef0('0x4f')];var _0x1b4fcc=path[_0x5ef0('0x14')](config['root'],_0x5ef0('0x50'),_0x143bcd+_0x5ef0('0x51'));var _0x533947=_[_0x5ef0('0x39')](_0x541c78)[_0x5ef0('0x14')]();logger['info']('header',_0x533947);fs['writeFileSync'](_0x1b4fcc,_0x533947+'\x0a');Papa[_0x5ef0('0x52')](fs[_0x5ef0('0x53')](_0x4b73c0),{'header':!![],'skipEmptyLines':!![],'step':function(_0x582ecd,_0x138e51){try{for(var _0x2eb65e=0x0,_0x500d90=[];_0x2eb65e<_0x582ecd['data']['length'];_0x2eb65e++){stats[_0x5ef0('0x54')]+=0x1;if(_0x582ecd[_0x5ef0('0x44')][_0x2eb65e]){handleError(_0x582ecd['data'][_0x2eb65e],_0x582ecd[_0x5ef0('0x44')][_0x2eb65e]);}else{var _0x55d873=[];for(var _0x533661 in _0x541c78){if(_0x541c78[_0x5ef0('0x55')](_0x533661)){if(_0x582ecd[_0x5ef0('0x56')][_0x2eb65e][_0x541c78[_0x533661]]){var _0x5f07d9=_[_0x5ef0('0x57')](_0x582ecd[_0x5ef0('0x56')][_0x2eb65e][_0x541c78[_0x533661]][_0x5ef0('0x58')](/"/g,'\x27'));switch(_0x533661){case _0x5ef0('0x59'):var _0x71a029=moment(_0x5f07d9,_0x5ef0('0x5a'),!![]);if(_0x71a029[_0x5ef0('0x5b')]()){_0x500d90[_0x5ef0('0x45')]('\x22'+_0x5f07d9+'\x22');}else{_0x55d873[_0x5ef0('0x45')](_0x5ef0('0x5c'));}break;case'priority':var _0xdf7b1f=parseInt(_0x5f07d9);_0x5f07d9=_[_0x5ef0('0x5d')](_0xdf7b1f)||_0xdf7b1f<0x0||_0xdf7b1f>0x4?_0x17eeb6?0x3:0x2:_0xdf7b1f;_0x500d90[_0x5ef0('0x45')]('\x22'+_0x5f07d9+'\x22');break;case _0x5ef0('0x27'):var _0x430d27=parseInt(_0x5f07d9);if(_[_0x5ef0('0x5e')](_0x430d27)&&_[_0x5ef0('0x5f')](_0x4769fe,_0x430d27)){_0x500d90[_0x5ef0('0x45')]('\x22'+_0x430d27+'\x22');}else{_0x55d873[_0x5ef0('0x45')](_0x5ef0('0x60'));}break;case _0x5ef0('0x61'):if(isEmail(_0x5f07d9)){_0x500d90['push']('\x22'+_0x5f07d9+'\x22');}else{_0x55d873[_0x5ef0('0x45')](_0x5ef0('0x62'));}break;case _0x5ef0('0x63'):var _0x425536=moment(_0x5f07d9,_0x5ef0('0x64'),!![]);if(_0x425536[_0x5ef0('0x5b')]()){_0x500d90[_0x5ef0('0x45')]('\x22'+_0x5f07d9+'\x22');}else{_0x55d873['push'](_0x5ef0('0x65'));}break;default:_0x500d90['push']('\x22'+_0x5f07d9+'\x22');}}else{switch(_0x533661){case _0x5ef0('0x66'):case _0x5ef0('0x12'):_0x55d873[_0x5ef0('0x45')](_0x533661+_0x5ef0('0x67'));break;default:_0x500d90[_0x5ef0('0x45')]('\x22\x22');}}}}if(_0x55d873[_0x5ef0('0x68')]){handleError(_0x582ecd[_0x5ef0('0x56')][_0x2eb65e],{'code':_0x5ef0('0x69'),'message':_0x55d873[_0x5ef0('0x14')]()});}else{fs[_0x5ef0('0x6a')](_0x1b4fcc,_0x500d90[_0x5ef0('0x14')]()+'\x0a');}_0x500d90=[];}if(!(stats['rows']%0xc8)){socket[_0x5ef0('0x6b')](_0x5ef0('0x6c')+_0x143bcd,stats);stats[_0x5ef0('0x44')]=[];}}if(stopped){logger['info'](_0x5ef0('0x6d'));_0x138e51['abort']();}}catch(_0x66c23){handleError(_0x582ecd[_0x5ef0('0x56')][_0x2eb65e],{'code':_0x5ef0('0x6e'),'message':_0x66c23[_0x5ef0('0x42')]});logger[_0x5ef0('0x41')]('step',_0x66c23['message']);}},'complete':function(){try{var _0x2fef90=[];var _0x2680d2=_0x5ef0('0x2a');if(_0x1f7d18[_0x5ef0('0x6f')]&&_0x1f7d18['duplicates'][_0x5ef0('0x68')]){_0x2680d2=_0x5ef0('0x70')+_0x143bcd;_0x2fef90[_0x5ef0('0x45')](_0x5ef0('0x71')+_0x2680d2+'\x20LIKE\x20cm_contacts;');}var _0x4e6340=util[_0x5ef0('0xf')]('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',_0x1b4fcc,_0x2680d2,_0x533947,_0x1f7d18[_0x5ef0('0x23')],_0x1f7d18[_0x5ef0('0x3a')]||null,NOW,NOW);if(_[_0x5ef0('0x72')](_0x541c78[_0x5ef0('0x59')])){_0x4e6340+=_0x5ef0('0x73');}_0x2fef90[_0x5ef0('0x45')](_0x4e6340);if(_0x1f7d18[_0x5ef0('0x6f')]&&_0x1f7d18[_0x5ef0('0x6f')][_0x5ef0('0x68')]){_0x2fef90[_0x5ef0('0x45')](insertCmContact(_0x1f7d18['ListId'],_0x2680d2,_0x1f7d18['duplicates'],_0x541c78));_0x2fef90['push'](_0x5ef0('0x74')+_0x2680d2+';');}_0x2fef90[_0x5ef0('0x45')](insertCmHopper(_0x1f7d18[_0x5ef0('0x23')],_0x5ef0('0x75'),_0x5ef0('0x76'),_0x5ef0('0x77'),_0x17eeb6));_0x2fef90[_0x5ef0('0x45')](insertCmHopperBlack(_0x1f7d18[_0x5ef0('0x23')],_0x5ef0('0x78'),_0x5ef0('0x76'),_0x5ef0('0x77')));_0x2fef90['push'](insertCmHopper(_0x1f7d18[_0x5ef0('0x23')],_0x5ef0('0x79'),_0x5ef0('0x7a'),_0x5ef0('0x7b'),_0x17eeb6));_0x2fef90[_0x5ef0('0x45')](insertCmHopperBlack(_0x1f7d18[_0x5ef0('0x23')],_0x5ef0('0x7c'),'campaigns','CampaignId'));BPromise['each'](_0x2fef90,handleQuery)[_0x5ef0('0x7d')](function(_0x4d2a12){stats[_0x5ef0('0x7e')]=!![];stats[_0x5ef0('0x7f')]=_0x1f7d18[_0x5ef0('0x6f')]&&_0x1f7d18[_0x5ef0('0x6f')][_0x5ef0('0x68')]?results[0x2][_0x5ef0('0x7f')]:results[0x0][_0x5ef0('0x7f')];socket[_0x5ef0('0x6b')](_0x5ef0('0x6c')+_0x143bcd,stats);fs['unlink'](_0x4b73c0);fs[_0x5ef0('0x80')](_0x1b4fcc);process['exit'](0x0);})[_0x5ef0('0x49')](function(_0xd9d447){logger[_0x5ef0('0x41')](_0xd9d447['message']);process['exit'](0x1);});}catch(_0x149f6e){logger[_0x5ef0('0x41')](_0x5ef0('0x81'),_0x149f6e[_0x5ef0('0x42')]);process[_0x5ef0('0x43')](0x1);}},'error':function(_0x52c5de,_0x2a314c,_0xdc048,_0x502a39){throw new Error(_0x502a39);}});}function validate(){if(process[_0x5ef0('0x82')]&&process['argv'][_0x5ef0('0x68')]<0x4){throw new Error(_0x5ef0('0x83'));}var _0x51a9de=path['join'](config[_0x5ef0('0x84')],_0x5ef0('0x50'),process['argv'][0x2]);if(!fs['existsSync'](_0x51a9de)){throw new Error(_0x5ef0('0x85'));}var _0x25ae74={};try{_0x25ae74=JSON[_0x5ef0('0x52')](process['argv'][0x3]);if(!_0x25ae74[_0x5ef0('0x4e')]){throw new Error(_0x5ef0('0x86'));}if(!_0x25ae74[_0x5ef0('0x4e')][_0x5ef0('0x12')]){throw new Error(_0x5ef0('0x87'));}if(!_0x25ae74[_0x5ef0('0x4e')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x838f6c=0x0;if(_0x25ae74[_0x5ef0('0x4e')]['UserId']){_0x838f6c=0x1;}if(!_0x25ae74[_0x5ef0('0x23')]){throw new Error(_0x5ef0('0x88'));}}catch(_0x593e87){throw new Error('body\x20id\x20mandatory');}var _0x2880c9=[];try{_0x2880c9=_[_0x5ef0('0x89')](JSON[_0x5ef0('0x52')](process[_0x5ef0('0x82')][0x4]),'id');}catch(_0x566498){logger['info'](_0x5ef0('0x8a'));}main(_0x51a9de,_0x25ae74,_0x2880c9,_0x838f6c);}validate();process['on'](_0x5ef0('0x8b'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index f5f4487..5958678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9315=['getDescriptions','inbound','Caller\x20Number','keyValue','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','Agent\x20Ring','Agent\x20Complete','agentcompleteAt','holdtime','Talk\x20Time','talktime','outbound','***\x20Call\x20Info\x20***','Called\x20Number','membername','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','Complete\x20Time','endtime','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','push','variable','queue','calleridnum','Outbound\x20Call','destcalleridnum'];(function(_0x2cea60,_0x30c5b2){var _0x31fe39=function(_0x287399){while(--_0x287399){_0x2cea60['push'](_0x2cea60['shift']());}};_0x31fe39(++_0x30c5b2);}(_0x9315,0xe0));var _0x5931=function(_0x5df9a2,_0x16a69){_0x5df9a2=_0x5df9a2-0x0;var _0x2a5394=_0x9315[_0x5df9a2];return _0x2a5394;};'use strict';exports[_0x5931('0x0')]=function(_0x1538ec,_0x55b813){var _0x4bef11=[{'type':_0x5931('0x1'),'content':_0x5931('0x2'),'variableName':null}];switch(_0x1538ec[_0x5931('0x3')]()){case _0x5931('0x4'):switch(_0x55b813[_0x5931('0x3')]()){case'inbound':_0x4bef11[_0x5931('0x5')]({'type':_0x5931('0x6'),'content':'','variableName':_0x5931('0x7')});_0x4bef11[_0x5931('0x5')]({'type':_0x5931('0x6'),'content':'','variableName':_0x5931('0x8')});break;case'outbound':_0x4bef11[_0x5931('0x5')]({'type':_0x5931('0x1'),'content':_0x5931('0x9'),'variableName':null});_0x4bef11[_0x5931('0x5')]({'type':'variable','content':'','variableName':_0x5931('0xa')});break;}}return _0x4bef11;};exports[_0x5931('0xb')]=function(_0x1a137a,_0x9998bd){var _0xa3a6e5=[];switch(_0x1a137a[_0x5931('0x3')]()){case _0x5931('0x4'):switch(_0x9998bd[_0x5931('0x3')]()){case _0x5931('0xc'):_0xa3a6e5=[{'type':_0x5931('0x1'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x5931('0xd'),'keyType':_0x5931('0x6'),'variableName':'calleridnum'},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0xf'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x10')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x11'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x12')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x13'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x7')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x14'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x15')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x16'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x17')},{'type':_0x5931('0x1'),'content':_0x5931('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x19'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x1a')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x1b'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0xa')},{'type':_0x5931('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x1c'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x17')},{'type':'keyValue','content':'','key':'Agent\x20Connect','keyType':_0x5931('0x6'),'variableName':'agentconnectAt'},{'type':'keyValue','content':'','key':_0x5931('0x1d'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x1e')},{'type':_0x5931('0xe'),'content':'','key':'Hold\x20Time','keyType':_0x5931('0x6'),'variableName':_0x5931('0x1f')},{'type':'keyValue','content':'','key':_0x5931('0x20'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x21')}];break;case _0x5931('0x22'):_0xa3a6e5=[{'type':_0x5931('0x1'),'content':_0x5931('0x23'),'variableName':null},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x24'),'keyType':'variable','keyContent':'','variableName':'destcalleridnum'},{'type':_0x5931('0xe'),'content':'','key':'Member\x20Name','keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x25')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x14'),'keyType':'variable','keyContent':'','variableName':'uniqueid'},{'type':'keyValue','content':'','key':_0x5931('0x16'),'keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x26')},{'type':_0x5931('0x1'),'content':_0x5931('0x27')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x28'),'keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x29')},{'type':'keyValue','content':'','key':_0x5931('0x2a'),'keyType':'variable','keyContent':'','variableName':_0x5931('0x2b')},{'type':_0x5931('0xe'),'content':'','key':'Duration','keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x2c')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x2d'),'keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x2e')}];break;}}return _0xa3a6e5;};
\ No newline at end of file
+var _0x3d72=['destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','Date','Answer\x20Time','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','billableseconds','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','string','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','Call\x20To','destexten','Queue','uniqueid','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name'];(function(_0x13fa8f,_0x191ea3){var _0x3bb398=function(_0x2310e7){while(--_0x2310e7){_0x13fa8f['push'](_0x13fa8f['shift']());}};_0x3bb398(++_0x191ea3);}(_0x3d72,0x186));var _0x23d7=function(_0x1264dd,_0x5156f3){_0x1264dd=_0x1264dd-0x0;var _0x1d9891=_0x3d72[_0x1264dd];return _0x1d9891;};'use strict';exports['getSubjects']=function(_0x17324e,_0x33259d){var _0x5ebe86=[{'type':'string','content':_0x23d7('0x0'),'variableName':null}];switch(_0x17324e[_0x23d7('0x1')]()){case _0x23d7('0x2'):switch(_0x33259d[_0x23d7('0x1')]()){case _0x23d7('0x3'):_0x5ebe86[_0x23d7('0x4')]({'type':_0x23d7('0x5'),'content':'','variableName':_0x23d7('0x6')});_0x5ebe86[_0x23d7('0x4')]({'type':_0x23d7('0x5'),'content':'','variableName':_0x23d7('0x7')});break;case _0x23d7('0x8'):_0x5ebe86[_0x23d7('0x4')]({'type':_0x23d7('0x9'),'content':_0x23d7('0xa'),'variableName':null});_0x5ebe86['push']({'type':_0x23d7('0x5'),'content':'','variableName':_0x23d7('0xb')});break;}}return _0x5ebe86;};exports[_0x23d7('0xc')]=function(_0x269667,_0x29b006){var _0x20070c=[];switch(_0x269667[_0x23d7('0x1')]()){case _0x23d7('0x2'):switch(_0x29b006[_0x23d7('0x1')]()){case _0x23d7('0x3'):_0x20070c=[{'type':_0x23d7('0x9'),'content':_0x23d7('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0xf'),'keyType':'variable','variableName':'calleridnum'},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x10'),'keyType':_0x23d7('0x5'),'variableName':'calleridname'},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x11'),'keyType':_0x23d7('0x5'),'variableName':_0x23d7('0x12')},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x13'),'keyType':_0x23d7('0x5'),'variableName':_0x23d7('0x6')},{'type':_0x23d7('0xe'),'content':'','key':'UniqueId','keyType':_0x23d7('0x5'),'variableName':_0x23d7('0x14')},{'type':'keyValue','content':'','key':'Date','keyType':'variable','variableName':_0x23d7('0x15')},{'type':'string','content':_0x23d7('0x16'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x23d7('0x17'),'keyType':'variable','variableName':_0x23d7('0x18')},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x19'),'keyType':_0x23d7('0x5'),'variableName':_0x23d7('0xb')},{'type':_0x23d7('0x9'),'content':_0x23d7('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x23d7('0x1b'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x1c'),'keyType':_0x23d7('0x5'),'variableName':_0x23d7('0x1d')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':'variable','variableName':_0x23d7('0x1e')},{'type':_0x23d7('0xe'),'content':'','key':'Hold\x20Time','keyType':_0x23d7('0x5'),'variableName':_0x23d7('0x1f')},{'type':'keyValue','content':'','key':_0x23d7('0x20'),'keyType':_0x23d7('0x5'),'variableName':_0x23d7('0x21')}];break;case _0x23d7('0x8'):_0x20070c=[{'type':_0x23d7('0x9'),'content':_0x23d7('0xd'),'variableName':null},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x22'),'keyType':_0x23d7('0x5'),'keyContent':'','variableName':_0x23d7('0xb')},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x23'),'keyType':_0x23d7('0x5'),'keyContent':'','variableName':_0x23d7('0x24')},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x25'),'keyType':_0x23d7('0x5'),'keyContent':'','variableName':_0x23d7('0x14')},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x26'),'keyType':'variable','keyContent':'','variableName':'starttime'},{'type':_0x23d7('0x9'),'content':_0x23d7('0x1a')},{'type':'keyValue','content':'','key':_0x23d7('0x27'),'keyType':_0x23d7('0x5'),'keyContent':'','variableName':'answertime'},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x28'),'keyType':_0x23d7('0x5'),'keyContent':'','variableName':_0x23d7('0x29')},{'type':_0x23d7('0xe'),'content':'','key':_0x23d7('0x2a'),'keyType':'variable','keyContent':'','variableName':_0x23d7('0x2b')},{'type':'keyValue','content':'','key':_0x23d7('0x2c'),'keyType':_0x23d7('0x5'),'keyContent':'','variableName':_0x23d7('0x2d')}];break;}}return _0x20070c;};
\ No newline at end of file
index 4b5520d..86a53b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09cb=['update','then','info','catch','error','tracked','user','query','clone','body','html','fax','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','findOne'];(function(_0x5cfecb,_0x3dedec){var _0x17af96=function(_0x69c3d4){while(--_0x69c3d4){_0x5cfecb['push'](_0x5cfecb['shift']());}};_0x17af96(++_0x3dedec);}(_0x09cb,0x94));var _0xb09c=function(_0x18fa99,_0x1c4c72){_0x18fa99=_0x18fa99-0x0;var _0x2fec9b=_0x09cb[_0x18fa99];return _0x2fec9b;};'use strict';var _=require(_0xb09c('0x0'));var db=require(_0xb09c('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0xb09c('0x2')),'mail':require('../../config/logger')('mail-interactions'),'fax':require(_0xb09c('0x3'))('fax-interactions'),'sms':require(_0xb09c('0x3'))('sms-interactions'),'chat':require(_0xb09c('0x3'))(_0xb09c('0x4')),'whatsapp':require(_0xb09c('0x3'))(_0xb09c('0x5'))};function getInteractionId(_0xd7bbc4,_0x2684c6,_0x2f7bd7){if(_0xd7bbc4&&_0xd7bbc4[_['upperFirst'](_0x2f7bd7)+_0xb09c('0x6')]){return _0xd7bbc4[_[_0xb09c('0x7')](_0x2f7bd7)+_0xb09c('0x6')];}else if(_0xd7bbc4&&_0xd7bbc4['id']){return _0xd7bbc4['id'];}else if(_0x2684c6&&_0x2684c6['id']){return _0x2684c6['id'];}else{return'unknown';}}function log(_0x27b7e9,_0x460be9,_0x212427,_0x104181,_0x1ba620,_0x321bb9){loggers[_0x1ba620[_0xb09c('0x8')]()][_0x27b7e9](_0xb09c('0x9'),_0x321bb9['toUpperCase'](),_0x460be9?_0x460be9['id']:null,_0x460be9?_0x460be9[_0xb09c('0xa')]:null,_0x460be9?_0x460be9[_0xb09c('0xb')]:null,getInteractionId(_0x212427,_0x104181,_0x1ba620),_0x212427?JSON[_0xb09c('0xc')](_0x212427):'null');}function updateUser(_0x3a8b93,_0x356555,_0x3446ec,_0x36c868,_0x4cd950){db[_['upperFirst'](_0x36c868)+'Interaction'][_0xb09c('0xd')]({'where':{'id':getInteractionId(_0x356555,_0x3446ec,_0x36c868)}})['then'](function(_0xc99c49){if(_0xc99c49){return _0xc99c49[_0xb09c('0xe')]({'UserId':_0x3a8b93?_0x3a8b93['id']:null});}})[_0xb09c('0xf')](function(_0x19dd5d){if(_0x19dd5d){log(_0xb09c('0x10'),_0x3a8b93,_0x356555,_0x3446ec,_0x36c868,_0x4cd950);}})[_0xb09c('0x11')](function(){log(_0xb09c('0x12'),_0x3a8b93,_0x356555,_0x3446ec,_0x36c868,_0x4cd950);});}exports[_0xb09c('0x13')]=function(_0x595391,_0x90c8ac){return function(_0x5c3de0,_0x5bed5b,_0x2f6b69){var _0x757d76=_0x5c3de0[_0xb09c('0x14')];var _0x4b891e={};var _0x808c54=_0x5c3de0[_0xb09c('0x15')];if(_0x4b891e){_0x4b891e=_[_0xb09c('0x16')](_0x5c3de0[_0xb09c('0x17')]);_0x4b891e=_['omit'](_0x4b891e,[_0xb09c('0x17'),_0xb09c('0x18'),'phone',_0xb09c('0x19'),_0xb09c('0x1a')]);}updateUser(_0x757d76,_0x4b891e,_0x808c54,_0x595391,_0x90c8ac);_0x2f6b69(null);};};
\ No newline at end of file
+var _0xb718=['whatsapp-interactions','InteractionId','upperFirst','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','null','Interaction','findOne','then','update','info','catch','error','clone','body','phone','fax','mobile','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','chat-interactions'];(function(_0x33bad8,_0xa77a59){var _0xed1658=function(_0x1864f4){while(--_0x1864f4){_0x33bad8['push'](_0x33bad8['shift']());}};_0xed1658(++_0xa77a59);}(_0xb718,0x67));var _0x8b71=function(_0x3188a3,_0x398499){_0x3188a3=_0x3188a3-0x0;var _0x55d16f=_0xb718[_0x3188a3];return _0x55d16f;};'use strict';var _=require('lodash');var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x8b71('0x0'))(_0x8b71('0x1')),'mail':require(_0x8b71('0x0'))(_0x8b71('0x2')),'fax':require(_0x8b71('0x0'))(_0x8b71('0x3')),'sms':require('../../config/logger')('sms-interactions'),'chat':require(_0x8b71('0x0'))(_0x8b71('0x4')),'whatsapp':require(_0x8b71('0x0'))(_0x8b71('0x5'))};function getInteractionId(_0x37f024,_0x4a925f,_0x5485b8){if(_0x37f024&&_0x37f024[_['upperFirst'](_0x5485b8)+_0x8b71('0x6')]){return _0x37f024[_[_0x8b71('0x7')](_0x5485b8)+_0x8b71('0x6')];}else if(_0x37f024&&_0x37f024['id']){return _0x37f024['id'];}else if(_0x4a925f&&_0x4a925f['id']){return _0x4a925f['id'];}else{return _0x8b71('0x8');}}function log(_0x333a21,_0xfc2d23,_0x2322a8,_0x54da6e,_0x47c1c0,_0x21dc9f){loggers[_0x47c1c0[_0x8b71('0x9')]()][_0x333a21](_0x8b71('0xa'),_0x21dc9f[_0x8b71('0xb')](),_0xfc2d23?_0xfc2d23['id']:null,_0xfc2d23?_0xfc2d23[_0x8b71('0xc')]:null,_0xfc2d23?_0xfc2d23['role']:null,getInteractionId(_0x2322a8,_0x54da6e,_0x47c1c0),_0x2322a8?JSON[_0x8b71('0xd')](_0x2322a8):_0x8b71('0xe'));}function updateUser(_0xed38d9,_0x6ab8d3,_0x165805,_0x3ba23d,_0x2b95c0){db[_[_0x8b71('0x7')](_0x3ba23d)+_0x8b71('0xf')][_0x8b71('0x10')]({'where':{'id':getInteractionId(_0x6ab8d3,_0x165805,_0x3ba23d)}})[_0x8b71('0x11')](function(_0x369c7f){if(_0x369c7f){return _0x369c7f[_0x8b71('0x12')]({'UserId':_0xed38d9?_0xed38d9['id']:null});}})[_0x8b71('0x11')](function(_0x2f2d89){if(_0x2f2d89){log(_0x8b71('0x13'),_0xed38d9,_0x6ab8d3,_0x165805,_0x3ba23d,_0x2b95c0);}})[_0x8b71('0x14')](function(){log(_0x8b71('0x15'),_0xed38d9,_0x6ab8d3,_0x165805,_0x3ba23d,_0x2b95c0);});}exports['tracked']=function(_0x2f8095,_0x487956){return function(_0xf6c598,_0x1af82b,_0xbf146a){var _0x1cb079=_0xf6c598['user'];var _0x12cf8d={};var _0x494a25=_0xf6c598['query'];if(_0x12cf8d){_0x12cf8d=_[_0x8b71('0x16')](_0xf6c598[_0x8b71('0x17')]);_0x12cf8d=_['omit'](_0x12cf8d,[_0x8b71('0x17'),'html',_0x8b71('0x18'),_0x8b71('0x19'),_0x8b71('0x1a')]);}updateUser(_0x1cb079,_0x12cf8d,_0x494a25,_0x2f8095,_0x487956);_0xbf146a(null);};};
\ No newline at end of file
index 0ad2e7f..993f96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e69=['aes-256-ctr','format','update','base64','utf8','final','parse','hasOwnProperty','use','License','then','count','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','isUserLimit','crypto','util','composable-middleware','../../mysqldb','license','data1','split','createDecipher'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x3e69,0x7a));var _0x93e6=function(_0x59162a,_0x10e547){_0x59162a=_0x59162a-0x0;var _0x35e50d=_0x3e69[_0x59162a];return _0x35e50d;};'use strict';var crypto=require(_0x93e6('0x0'));var util=require(_0x93e6('0x1'));var compose=require(_0x93e6('0x2'));var db=require(_0x93e6('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x130171,_0x202b59){if(_0x130171&&_0x202b59){if(_0x202b59['data1']&&_0x202b59[_0x93e6('0x4')]){var _0x52250d=_0x202b59[_0x93e6('0x5')];var _0x3534cd=_0x202b59[_0x93e6('0x4')];var _0x41d556=_0x52250d[_0x93e6('0x6')]('-')[0x4];var _0x492033=_0x52250d['split']('-')[0x0];var _0x245211=crypto[_0x93e6('0x7')](_0x93e6('0x8'),util[_0x93e6('0x9')]('%s:%s:%s',_0x41d556,_0x52250d,_0x492033));var _0x510ac9=_0x245211[_0x93e6('0xa')](_0x3534cd,_0x93e6('0xb'),_0x93e6('0xc'));_0x510ac9+=_0x245211[_0x93e6('0xd')](_0x93e6('0xc'));var _0x23aae0=JSON[_0x93e6('0xe')](_0x510ac9);return _0x23aae0[_0x93e6('0xf')](_0x130171)?_0x23aae0[_0x130171]:null;}}return null;}function isLimit(_0x3d7da8,_0x375dfb,_0x5a3ee6,_0x34155b){var _0x2c476a=_0x375dfb;return compose()[_0x93e6('0x10')](function(_0x2c79b6,_0x3fa532,_0x2cc7c7){return db[_0x93e6('0x11')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x93e6('0x12')](function(_0x114aaa){var _0x28c619=getValueFromLicense(_0x3d7da8,_0x114aaa);return _0x28c619?_0x28c619:_0x2c476a;})['then'](function(_0x3b5e45){_0x2c476a=_0x3b5e45;return _0x5a3ee6[_0x93e6('0x13')](_0x34155b);})[_0x93e6('0x12')](function(_0x1ee037){if(_0x1ee037>=_0x2c476a){return _0x3fa532['status'](0x193)[_0x93e6('0x14')]({'message':util[_0x93e6('0x9')](_0x93e6('0x15'),_0x3d7da8)});}_0x2cc7c7();})[_0x93e6('0x16')](function(_0x187368){_0x2cc7c7(_0x187368);});});}function isUserLimit(){return isLimit(_0x93e6('0x17'),0x1,db['User'],{'where':{'$or':[{'role':_0x93e6('0x18')},{'role':'user'}]}});}exports[_0x93e6('0x19')]=isUserLimit;
\ No newline at end of file
+var _0x102b=['isUserLimit','crypto','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','hasOwnProperty','use','License','findOne','then','count','status','users','User','admin','user'];(function(_0x11a287,_0x57df55){var _0x111e64=function(_0x34be85){while(--_0x34be85){_0x11a287['push'](_0x11a287['shift']());}};_0x111e64(++_0x57df55);}(_0x102b,0xeb));var _0xb102=function(_0x1f4992,_0x298bdc){_0x1f4992=_0x1f4992-0x0;var _0x42a68d=_0x102b[_0x1f4992];return _0x42a68d;};'use strict';var crypto=require(_0xb102('0x0'));var util=require('util');var compose=require(_0xb102('0x1'));var db=require(_0xb102('0x2'))['db'];var config=require(_0xb102('0x3'));function getValueFromLicense(_0x5523dd,_0x24c1db){if(_0x5523dd&&_0x24c1db){if(_0x24c1db[_0xb102('0x4')]&&_0x24c1db[_0xb102('0x5')]){var _0x3d4177=_0x24c1db['data1'];var _0x4a7422=_0x24c1db[_0xb102('0x5')];var _0x940ace=_0x3d4177[_0xb102('0x6')]('-')[0x4];var _0x27dfb0=_0x3d4177[_0xb102('0x6')]('-')[0x0];var _0x229ac9=crypto['createDecipher'](_0xb102('0x7'),util[_0xb102('0x8')](_0xb102('0x9'),_0x940ace,_0x3d4177,_0x27dfb0));var _0x19bac4=_0x229ac9[_0xb102('0xa')](_0x4a7422,_0xb102('0xb'),_0xb102('0xc'));_0x19bac4+=_0x229ac9[_0xb102('0xd')](_0xb102('0xc'));var _0x2e9ecf=JSON['parse'](_0x19bac4);return _0x2e9ecf[_0xb102('0xe')](_0x5523dd)?_0x2e9ecf[_0x5523dd]:null;}}return null;}function isLimit(_0x5aee67,_0x112391,_0x3745ce,_0x2dd01f){var _0x34acce=_0x112391;return compose()[_0xb102('0xf')](function(_0x267974,_0x3b0ebe,_0x48857b){return db[_0xb102('0x10')][_0xb102('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xb102('0x12')](function(_0xdc7800){var _0x33f704=getValueFromLicense(_0x5aee67,_0xdc7800);return _0x33f704?_0x33f704:_0x34acce;})[_0xb102('0x12')](function(_0x5355e6){_0x34acce=_0x5355e6;return _0x3745ce[_0xb102('0x13')](_0x2dd01f);})[_0xb102('0x12')](function(_0x5dd45b){if(_0x5dd45b>=_0x34acce){return _0x3b0ebe[_0xb102('0x14')](0x193)['json']({'message':util['format']('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x5aee67)});}_0x48857b();})['catch'](function(_0x51e0b8){_0x48857b(_0x51e0b8);});});}function isUserLimit(){return isLimit(_0xb102('0x15'),0x1,db[_0xb102('0x16')],{'where':{'$or':[{'role':_0xb102('0x17')},{'role':_0xb102('0x18')}]}});}exports[_0xb102('0x19')]=isUserLimit;
\ No newline at end of file
index 5e0bc22..431e52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6aa=['add','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','split','forEach','filter','map','push','buildExpression','DATE','operator','$between','value','includes','$gt','$lte','format','YYYY-MM-DD','text','CAST(','field','\x20AS\x20','\x20OR\x20','\x20IS\x20NULL)','IN\x20?','$notIn','NOT\x20IN\x20?','$substring','$startsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','$in','start','$endsWith','shift','pop','utcOffset'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xc6aa,0x128));var _0xac6a=function(_0x201c7d,_0x6dfc96){_0x201c7d=_0x201c7d-0x0;var _0x1958d6=_0xc6aa[_0x201c7d];return _0x1958d6;};'use strict';var _=require(_0xac6a('0x0'));var moment=require(_0xac6a('0x1'));exports[_0xac6a('0x2')]=function(_0x166776){var _0x513947={'conditions':[]};_0x513947[_0xac6a('0x3')]=_[_0xac6a('0x4')](_0x166776,_0xac6a('0x5'))?'or':_0xac6a('0x6');var _0x3f957d=_0x166776[_0xac6a('0x7')]('[$and]','')[_0xac6a('0x7')](_0xac6a('0x5'),'')[_0xac6a('0x8')]('||');for(var _0x2e91ab=0x0;_0x2e91ab<_0x3f957d['length'];_0x2e91ab++){var _0x2ee090=_0x3f957d[_0x2e91ab][_0xac6a('0x8')](':=');var _0x472177=_0x2ee090[0x0];var _0x49bd3b=_0x2ee090['slice'](0x1);_0x49bd3b[_0xac6a('0x9')](function(_0x151274){var _0xf1183c=_0x151274['split']('[')['shift']();var _0x4e7917=_0x151274['match'](/\[(.*?)\]/g);_0x4e7917[_0xac6a('0x9')](function(_0x15e6dc){var _0xe9e972=_0x15e6dc['split']('[')[_0xac6a('0xa')](function(_0xac7635){return _0xac7635['indexOf'](']')>-0x1;})[_0xac6a('0xb')](function(_0x4ed08e){return _0x4ed08e[_0xac6a('0x8')](']')[0x0];})[0x0];_0x513947['conditions'][_0xac6a('0xc')]({'field':_0x472177,'operator':_0xf1183c,'value':_0xe9e972});});});}return _0x513947;};exports[_0xac6a('0xd')]=function(_0xbaf67e,_0x3f798a,_0x177e9e){var _0x223ca={};if(_0x3f798a===_0xac6a('0xe')){if(_0x177e9e[_0xac6a('0xf')]==='$eq'){_0x177e9e[_0xac6a('0xf')]=_0xac6a('0x10');_0x177e9e['value']+=','+_0x177e9e[_0xac6a('0x11')];}else if(_[_0xac6a('0x12')]([_0xac6a('0x13'),_0xac6a('0x14')],_0x177e9e['operator'])){_0x177e9e['value']=moment(_0x177e9e[_0xac6a('0x11')])['add'](0x1,'days')[_0xac6a('0x15')](_0xac6a('0x16'));}}if(_0x177e9e['castTo']){_0x3f798a=_0x177e9e['castTo'];_0x223ca[_0xac6a('0x17')]=_0xac6a('0x18')+_0xbaf67e+'.'+_0x177e9e[_0xac6a('0x19')]+_0xac6a('0x1a')+_0x177e9e['castTo']+')\x20'+parseOperator(_0x177e9e[_0xac6a('0xf')]);}else{_0x223ca['text']=_0xbaf67e+'.'+_0x177e9e[_0xac6a('0x19')]+'\x20'+parseOperator(_0x177e9e[_0xac6a('0xf')]);}if(_[_0xac6a('0x12')](['$ne','$notIn'],_0x177e9e[_0xac6a('0xf')]))_0x223ca['text']='('+_0x223ca[_0xac6a('0x17')]+_0xac6a('0x1b')+_0xbaf67e+'.'+_0x177e9e['field']+_0xac6a('0x1c');_0x223ca[_0xac6a('0x11')]=parseValue(_0x3f798a,_0x177e9e[_0xac6a('0xf')],_0x177e9e[_0xac6a('0x11')]);return _0x223ca;};function parseOperator(_0x38ebb2){var _0x583caf;switch(_0x38ebb2){case'$in':_0x583caf=_0xac6a('0x1d');break;case _0xac6a('0x1e'):_0x583caf=_0xac6a('0x1f');break;case'$eq':_0x583caf='=\x20?';break;case'$ne':_0x583caf='<>\x20?';break;case _0xac6a('0x20'):case _0xac6a('0x21'):case'$endsWith':_0x583caf=_0xac6a('0x22');break;case _0xac6a('0x23'):_0x583caf=_0xac6a('0x24');break;case _0xac6a('0x13'):_0x583caf=_0xac6a('0x25');break;case _0xac6a('0x14'):_0x583caf=_0xac6a('0x26');break;case _0xac6a('0x27'):_0x583caf='>=\x20?';break;case'$between':_0x583caf=_0xac6a('0x28');break;}return _0x583caf;}function parseValue(_0x1a45e6,_0x5dd850,_0x1f1774){var _0xdfff4b={'start':undefined,'end':undefined};switch(_0x5dd850){case _0xac6a('0x29'):case _0xac6a('0x1e'):_0xdfff4b[_0xac6a('0x2a')]=_0x1f1774[_0xac6a('0x8')](',');break;case _0xac6a('0x20'):_0xdfff4b['start']='%'+_0x1f1774+'%';break;case _0xac6a('0x21'):_0xdfff4b[_0xac6a('0x2a')]=_0x1f1774+'%';break;case _0xac6a('0x2b'):_0xdfff4b[_0xac6a('0x2a')]='%'+_0x1f1774;break;case _0xac6a('0x10'):var _0x57a428=_0x1f1774[_0xac6a('0x8')](',');var _0x1f1774=_0x57a428[_0xac6a('0x2c')]();var _0x28b43b=_0x57a428[_0xac6a('0x2d')]();if(_0x1a45e6==='DATE'){_0x1f1774=moment(_0x1f1774)[_0xac6a('0x2e')](0x0,!![])[_0xac6a('0x15')]();_0x28b43b=moment(_0x28b43b)[_0xac6a('0x2e')](0x0,!![])[_0xac6a('0x2f')](0x17,'hours')[_0xac6a('0x2f')](0x3b,'minutes')['add'](0x3b,_0xac6a('0x30'))[_0xac6a('0x15')]();}_0xdfff4b={'start':_0x1f1774,'end':_0x28b43b};break;default:_0xdfff4b['start']=_0x1f1774;break;}return _0xdfff4b;}
\ No newline at end of file
+var _0xc3c9=['text','includes','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$ne','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','$gt','>\x20?','$gte','>=\x20?','start','add','minutes','lodash','moment','sqlOperator','and','replace','[$or]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','buildExpression','DATE','operator','$eq','$between','value','$lte','format','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20'];(function(_0xe69bf1,_0x487cbc){var _0x1259d1=function(_0x5e610d){while(--_0x5e610d){_0xe69bf1['push'](_0xe69bf1['shift']());}};_0x1259d1(++_0x487cbc);}(_0xc3c9,0xe7));var _0x9c3c=function(_0x117707,_0x40914b){_0x117707=_0x117707-0x0;var _0x11a9a4=_0xc3c9[_0x117707];return _0x11a9a4;};'use strict';var _=require(_0x9c3c('0x0'));var moment=require(_0x9c3c('0x1'));exports['parseSearch']=function(_0x2412f2){var _0x3d9c13={'conditions':[]};_0x3d9c13[_0x9c3c('0x2')]=_['startsWith'](_0x2412f2,'[$or]')?'or':_0x9c3c('0x3');var _0xa257df=_0x2412f2[_0x9c3c('0x4')]('[$and]','')[_0x9c3c('0x4')](_0x9c3c('0x5'),'')[_0x9c3c('0x6')]('||');for(var _0x18e44c=0x0;_0x18e44c<_0xa257df[_0x9c3c('0x7')];_0x18e44c++){var _0x7b7d6c=_0xa257df[_0x18e44c][_0x9c3c('0x6')](':=');var _0x4a3446=_0x7b7d6c[0x0];var _0x4354e6=_0x7b7d6c[_0x9c3c('0x8')](0x1);_0x4354e6[_0x9c3c('0x9')](function(_0xd513df){var _0xc5203c=_0xd513df[_0x9c3c('0x6')]('[')[_0x9c3c('0xa')]();var _0x38a69e=_0xd513df[_0x9c3c('0xb')](/\[(.*?)\]/g);_0x38a69e['forEach'](function(_0x319d7a){var _0x31bf6f=_0x319d7a['split']('[')[_0x9c3c('0xc')](function(_0x2946af){return _0x2946af[_0x9c3c('0xd')](']')>-0x1;})[_0x9c3c('0xe')](function(_0x264464){return _0x264464[_0x9c3c('0x6')](']')[0x0];})[0x0];_0x3d9c13[_0x9c3c('0xf')]['push']({'field':_0x4a3446,'operator':_0xc5203c,'value':_0x31bf6f});});});}return _0x3d9c13;};exports[_0x9c3c('0x10')]=function(_0x328640,_0x3a810c,_0x55b771){var _0x56307c={};if(_0x3a810c===_0x9c3c('0x11')){if(_0x55b771[_0x9c3c('0x12')]===_0x9c3c('0x13')){_0x55b771['operator']=_0x9c3c('0x14');_0x55b771[_0x9c3c('0x15')]+=','+_0x55b771[_0x9c3c('0x15')];}else if(_['includes'](['$gt',_0x9c3c('0x16')],_0x55b771[_0x9c3c('0x12')])){_0x55b771[_0x9c3c('0x15')]=moment(_0x55b771[_0x9c3c('0x15')])['add'](0x1,'days')[_0x9c3c('0x17')](_0x9c3c('0x18'));}}if(_0x55b771[_0x9c3c('0x19')]){_0x3a810c=_0x55b771['castTo'];_0x56307c['text']=_0x9c3c('0x1a')+_0x328640+'.'+_0x55b771[_0x9c3c('0x1b')]+_0x9c3c('0x1c')+_0x55b771[_0x9c3c('0x19')]+')\x20'+parseOperator(_0x55b771[_0x9c3c('0x12')]);}else{_0x56307c[_0x9c3c('0x1d')]=_0x328640+'.'+_0x55b771[_0x9c3c('0x1b')]+'\x20'+parseOperator(_0x55b771['operator']);}if(_[_0x9c3c('0x1e')](['$ne',_0x9c3c('0x1f')],_0x55b771[_0x9c3c('0x12')]))_0x56307c[_0x9c3c('0x1d')]='('+_0x56307c[_0x9c3c('0x1d')]+_0x9c3c('0x20')+_0x328640+'.'+_0x55b771['field']+_0x9c3c('0x21');_0x56307c[_0x9c3c('0x15')]=parseValue(_0x3a810c,_0x55b771['operator'],_0x55b771[_0x9c3c('0x15')]);return _0x56307c;};function parseOperator(_0x3fbeba){var _0x280803;switch(_0x3fbeba){case _0x9c3c('0x22'):_0x280803=_0x9c3c('0x23');break;case'$notIn':_0x280803=_0x9c3c('0x24');break;case _0x9c3c('0x13'):_0x280803=_0x9c3c('0x25');break;case _0x9c3c('0x26'):_0x280803=_0x9c3c('0x27');break;case _0x9c3c('0x28'):case _0x9c3c('0x29'):case _0x9c3c('0x2a'):_0x280803=_0x9c3c('0x2b');break;case _0x9c3c('0x2c'):_0x280803='<\x20?';break;case _0x9c3c('0x2d'):_0x280803=_0x9c3c('0x2e');break;case'$lte':_0x280803='<=\x20?';break;case _0x9c3c('0x2f'):_0x280803=_0x9c3c('0x30');break;case _0x9c3c('0x14'):_0x280803='BETWEEN\x20?\x20AND\x20?';break;}return _0x280803;}function parseValue(_0x37c23c,_0x588055,_0x231766){var _0x4202ad={'start':undefined,'end':undefined};switch(_0x588055){case _0x9c3c('0x22'):case'$notIn':_0x4202ad[_0x9c3c('0x31')]=_0x231766[_0x9c3c('0x6')](',');break;case'$substring':_0x4202ad[_0x9c3c('0x31')]='%'+_0x231766+'%';break;case _0x9c3c('0x29'):_0x4202ad[_0x9c3c('0x31')]=_0x231766+'%';break;case _0x9c3c('0x2a'):_0x4202ad[_0x9c3c('0x31')]='%'+_0x231766;break;case'$between':var _0x2c1a26=_0x231766[_0x9c3c('0x6')](',');var _0x231766=_0x2c1a26[_0x9c3c('0xa')]();var _0x16d752=_0x2c1a26['pop']();if(_0x37c23c==='DATE'){_0x231766=moment(_0x231766)['utcOffset'](0x0,!![])[_0x9c3c('0x17')]();_0x16d752=moment(_0x16d752)['utcOffset'](0x0,!![])['add'](0x17,'hours')[_0x9c3c('0x32')](0x3b,_0x9c3c('0x33'))[_0x9c3c('0x32')](0x3b,'seconds')[_0x9c3c('0x17')]();}_0x4202ad={'start':_0x231766,'end':_0x16d752};break;default:_0x4202ad['start']=_0x231766;break;}return _0x4202ad;}
\ No newline at end of file
index b410241..0276c1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x605a=['intersection','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL','lower','options','moment','parse','keys','includes','split','isEmpty','forOwn','find','type','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','isObject','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','forEach','push','join','getOptions','$id','query','model','filters'];(function(_0x497b72,_0x3c549b){var _0xa47fbb=function(_0x4582c5){while(--_0x4582c5){_0x497b72['push'](_0x497b72['shift']());}};_0xa47fbb(++_0x3c549b);}(_0x605a,0x133));var _0xa605=function(_0x491785,_0x9106a7){_0x491785=_0x491785-0x0;var _0x4fb113=_0x605a[_0x491785];return _0x4fb113;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0xa605('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x26003f){var _0x435ba4=['ne'];try{var _0xadb5e7=JSON[_0xa605('0x1')](_0x26003f);var _0x52f95a=Object[_0xa605('0x2')](_0xadb5e7)[0x0];return _0x435ba4[_0xa605('0x3')](_0x52f95a);}catch(_0x292739){return![];}}function getOperatorValue(_0x49e20c){var _0x3440e4=JSON['parse'](_0x49e20c);var _0x40b3b7=Object[_0xa605('0x2')](_0x3440e4)[0x0];var _0xbee0d=_0x3440e4[_0x40b3b7];return{['$'+_0x40b3b7]:_0xbee0d};}exports['fields']=function(_0x368a73){var _0x5b9446=null;if(_0x368a73){_0x5b9446=_0x368a73[_0xa605('0x4')](',');}return _0x5b9446;};exports['filters']=function(_0x3b4599,_0x3c07d7){var _0x1b2325={};if(!_[_0xa605('0x5')](_0x3b4599)){_[_0xa605('0x6')](_0x3b4599,function(_0xd0425,_0x1e4c04){try{if(_0x3c07d7){var _0x21ae62=_[_0xa605('0x7')](_0x3c07d7,{'name':_0x1e4c04})||{};if(hasSequelizeOperator(_0xd0425)){_0x1b2325[_0x1e4c04]=getOperatorValue(_0xd0425);}else if(_0x21ae62[_0xa605('0x8')]==='DATE'&&_[_0xa605('0x9')](_0xd0425)){var _0x25aec9=JSON[_0xa605('0x1')](_0xd0425);var _0x188729={'$gte':moment(moment(_0x25aec9[_0xa605('0xa')])[_0xa605('0xb')](_0xa605('0xc')))[_0xa605('0xd')]()[_0xa605('0xb')](),'$lte':moment(moment(_0x25aec9[_0xa605('0xe')])[_0xa605('0xb')]('YYYY-MM-DD'))['utc']()[_0xa605('0xf')](0x1,'s')['format']()};_0x1b2325[_0x1e4c04]=_0x188729;}else if(_0x21ae62[_0xa605('0x10')]===_0xa605('0x11')){_0x1b2325[_0x1e4c04]=_0xd0425;}else{_0x1b2325[_0x1e4c04]=_[_0xa605('0x12')](_0xd0425)?_0xd0425:JSON[_0xa605('0x1')](_0xd0425);}}else{_0x1b2325[_0x1e4c04]=_[_0xa605('0x12')](_0xd0425)?_0xd0425:JSON['parse'](_0xd0425);}}catch(_0x1eeeee){_0x1b2325[_0x1e4c04]=_0xd0425[_0xa605('0x4')](',');}});}return _0x1b2325;};exports[_0xa605('0x13')]=function(_0x33093b){_0x33093b=parseInt(_0x33093b,0xa);if(!_0x33093b||_0x33093b<0x0){_0x33093b=LIMIT_VALUE;}return _0x33093b;};exports[_0xa605('0x14')]=function(_0x1a862d){_0x1a862d=parseInt(_0x1a862d,0xa);if(!_0x1a862d||_0x1a862d<0x0){_0x1a862d=0x0;}return _0x1a862d;};exports[_0xa605('0x15')]=function(_0x3e0634){var _0x5573c2,_0x5dd164=null;if(_0x3e0634){_0x5573c2=_0x3e0634['split'](',');_0x5dd164=_[_0xa605('0x16')](_0x5573c2,function(_0x3f4eae){if(_0x3f4eae[_0xa605('0x17')]('-')===0x0){return[_0x3f4eae===_0xa605('0x18')?sequelize[_0xa605('0x19')](sequelize[_0xa605('0x1a')](_0xa605('0x18')),_0xa605('0x1b')):_0x3f4eae[_0xa605('0x1c')](0x1),_0xa605('0x1d')];}else{return[_0x3f4eae==='priority'?sequelize[_0xa605('0x19')](sequelize[_0xa605('0x1a')](_0xa605('0x18')),'unsigned'):_0x3f4eae,'ASC'];}});}return _0x5dd164;};exports[_0xa605('0x1e')]=function(_0x313a23,_0x1d443d){if(_[_0xa605('0x5')](_0x313a23)){return _0x313a23;}if(_[_0xa605('0x12')](_0x313a23)){for(var _0x12c800=0x0;_0x12c800<_0x313a23['length'];_0x12c800+=0x1){_0x313a23[_0x12c800]=this[_0xa605('0x1e')](_0x313a23[_0x12c800],_0x1d443d);}return _0x313a23;}if(!_[_0xa605('0x1f')](_0x313a23)){return _0x313a23;}if(_[_0xa605('0x20')](_0x1d443d)){_0x1d443d=[_0x1d443d];}if(!_[_0xa605('0x12')](_0x1d443d)){return _0x313a23;}for(var _0x168d62=0x0;_0x168d62<_0x1d443d['length'];_0x168d62+=0x1){_[_0xa605('0x21')](_0x313a23,_0x1d443d[_0x168d62]);}for(var _0x25ee2d in _0x313a23){if(_0x313a23[_0xa605('0x22')](_0x25ee2d)){_0x313a23[_0x25ee2d]=this[_0xa605('0x1e')](_0x313a23[_0x25ee2d],_0x1d443d);}}return _0x313a23;};exports[_0xa605('0x23')]=function(_0x1435a1){return _0x1435a1[_0xa605('0x24')](RegExp(_0xa605('0x25')))?!![]:![];};exports[_0xa605('0x26')]=function(_0x40359b){return _0x40359b[_0xa605('0x24')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x17a7be){var _0x10d609=[];_0x17a7be[_0xa605('0x4')](/[ ,]+/)[_0xa605('0x27')](function(_0x1c9f76){_0x1c9f76=_0x1c9f76['replace'](/([^:]")"+/g,'$1');_0x1c9f76='+'+_0x1c9f76+'*';if(_0x1c9f76[_0xa605('0x3')]('@'))_0x1c9f76='\x22'+_0x1c9f76+'\x22';_0x10d609[_0xa605('0x28')](_0x1c9f76);});return _0x10d609[_0xa605('0x29')]('\x20');};exports[_0xa605('0x2a')]=function(_0x2baa0d,_0x51cdc9,_0x7cffd4){var _0x544694={},_0x59e69e={};if(_0x51cdc9['query'][_0xa605('0x2b')]){_0x51cdc9['query']['id']=_0x51cdc9[_0xa605('0x2c')][_0xa605('0x2b')];delete _0x51cdc9['query'][_0xa605('0x2b')];}_0x544694[_0xa605('0x2d')]=_[_0xa605('0x16')](_0x2baa0d,_0xa605('0x10'));_0x544694[_0xa605('0x2c')]=_['keys'](_0x51cdc9[_0xa605('0x2c')]);_0x544694[_0xa605('0x2e')]=_[_0xa605('0x2f')](_0x544694[_0xa605('0x2d')],_0x544694[_0xa605('0x2c')]);_0x59e69e[_0xa605('0x30')]=_[_0xa605('0x2f')](_0x544694[_0xa605('0x2d')],this['fields'](_0x51cdc9['query']['fields']));_0x59e69e[_0xa605('0x30')]=_0x59e69e['attributes'][_0xa605('0x31')]?_0x59e69e[_0xa605('0x30')]:_0x544694[_0xa605('0x2d')];if(!_0x51cdc9[_0xa605('0x2c')][_0xa605('0x22')](_0xa605('0x32'))){_0x59e69e[_0xa605('0x13')]=this['limit'](_0x51cdc9[_0xa605('0x2c')][_0xa605('0x13')]);_0x59e69e[_0xa605('0x14')]=this['offset'](_0x51cdc9[_0xa605('0x2c')]['offset']);}_0x59e69e[_0xa605('0x33')]=this[_0xa605('0x15')](_0x51cdc9[_0xa605('0x2c')][_0xa605('0x15')]);_0x59e69e[_0xa605('0x34')]=this[_0xa605('0x2e')](_[_0xa605('0x35')](_0x51cdc9['query'],_0x544694['filters']),_0x2baa0d);if(_0x51cdc9[_0xa605('0x2c')][_0xa605('0x36')]){_0x59e69e[_0xa605('0x34')]=_[_0xa605('0x37')](_0x59e69e[_0xa605('0x34')],{'$or':_['map'](_0x2baa0d,function(_0x30a001){if(_0x30a001['type']!==_0xa605('0x38')){if(_0x7cffd4){return sequelize[_0xa605('0x34')](sequelize['fn'](_0xa605('0x39'),sequelize[_0xa605('0x1a')](_0x30a001[_0xa605('0x10')])),{'$like':sequelize['fn'](_0xa605('0x39'),'%'+_0x51cdc9[_0xa605('0x2c')][_0xa605('0x36')]+'%')});}else{var _0xb79928={};_0xb79928[_0x30a001[_0xa605('0x10')]]={'$like':'%'+_0x51cdc9[_0xa605('0x2c')][_0xa605('0x36')]+'%'};return _0xb79928;}}})});}_0x59e69e=_[_0xa605('0x37')]({},_0x59e69e,_0x51cdc9[_0xa605('0x3a')]);return _0x59e69e;};
\ No newline at end of file
+var _0x9347=['nolimit','limit','offset','order','pick','where','merge','VIRTUAL','lower','filter','options','lodash','moment','parse','keys','includes','fields','isEmpty','forOwn','find','type','isPlainObject','$gte','format','$lte','YYYY-MM-DD','utc','subtract','name','uniqueid','isArray','split','sort','map','priority','cast','substr','DESC','col','unsigned','omit','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','query','$id','model','filters','intersection','attributes','length','hasOwnProperty'];(function(_0x1b7d3e,_0xa4cadf){var _0xe9147f=function(_0x4a5dad){while(--_0x4a5dad){_0x1b7d3e['push'](_0x1b7d3e['shift']());}};_0xe9147f(++_0xa4cadf);}(_0x9347,0x1b6));var _0x7934=function(_0x5d12c5,_0x36a5d8){_0x5d12c5=_0x5d12c5-0x0;var _0x3ccedf=_0x9347[_0x5d12c5];return _0x3ccedf;};'use strict';var _=require(_0x7934('0x0'));var sequelize=require('sequelize');var moment=require(_0x7934('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x26098c){var _0x4ff976=['ne'];try{var _0x38cb2d=JSON[_0x7934('0x2')](_0x26098c);var _0x1fb5cf=Object[_0x7934('0x3')](_0x38cb2d)[0x0];return _0x4ff976[_0x7934('0x4')](_0x1fb5cf);}catch(_0x334b26){return![];}}function getOperatorValue(_0x4f71e4){var _0x4fb9d6=JSON[_0x7934('0x2')](_0x4f71e4);var _0x21080f=Object[_0x7934('0x3')](_0x4fb9d6)[0x0];var _0x1f930e=_0x4fb9d6[_0x21080f];return{['$'+_0x21080f]:_0x1f930e};}exports[_0x7934('0x5')]=function(_0x3d47bb){var _0x1194da=null;if(_0x3d47bb){_0x1194da=_0x3d47bb['split'](',');}return _0x1194da;};exports['filters']=function(_0x4472f1,_0x2893f1){var _0x2bf7e6={};if(!_[_0x7934('0x6')](_0x4472f1)){_[_0x7934('0x7')](_0x4472f1,function(_0x1ae9aa,_0x1c2767){try{if(_0x2893f1){var _0x53d194=_[_0x7934('0x8')](_0x2893f1,{'name':_0x1c2767})||{};if(hasSequelizeOperator(_0x1ae9aa)){_0x2bf7e6[_0x1c2767]=getOperatorValue(_0x1ae9aa);}else if(_0x53d194[_0x7934('0x9')]==='DATE'&&_[_0x7934('0xa')](_0x1ae9aa)){var _0x139a72=JSON['parse'](_0x1ae9aa);var _0x5504b2={'$gte':moment(moment(_0x139a72[_0x7934('0xb')])['format']('YYYY-MM-DD'))['utc']()[_0x7934('0xc')](),'$lte':moment(moment(_0x139a72[_0x7934('0xd')])['format'](_0x7934('0xe')))[_0x7934('0xf')]()[_0x7934('0x10')](0x1,'s')[_0x7934('0xc')]()};_0x2bf7e6[_0x1c2767]=_0x5504b2;}else if(_0x53d194[_0x7934('0x11')]===_0x7934('0x12')){_0x2bf7e6[_0x1c2767]=_0x1ae9aa;}else{_0x2bf7e6[_0x1c2767]=_[_0x7934('0x13')](_0x1ae9aa)?_0x1ae9aa:JSON[_0x7934('0x2')](_0x1ae9aa);}}else{_0x2bf7e6[_0x1c2767]=_[_0x7934('0x13')](_0x1ae9aa)?_0x1ae9aa:JSON[_0x7934('0x2')](_0x1ae9aa);}}catch(_0x498f62){_0x2bf7e6[_0x1c2767]=_0x1ae9aa[_0x7934('0x14')](',');}});}return _0x2bf7e6;};exports['limit']=function(_0x25d186){_0x25d186=parseInt(_0x25d186,0xa);if(!_0x25d186||_0x25d186<0x0){_0x25d186=LIMIT_VALUE;}return _0x25d186;};exports['offset']=function(_0x20966d){_0x20966d=parseInt(_0x20966d,0xa);if(!_0x20966d||_0x20966d<0x0){_0x20966d=0x0;}return _0x20966d;};exports[_0x7934('0x15')]=function(_0x34dd39){var _0x21236b,_0x594ad5=null;if(_0x34dd39){_0x21236b=_0x34dd39[_0x7934('0x14')](',');_0x594ad5=_[_0x7934('0x16')](_0x21236b,function(_0x31c082){if(_0x31c082['indexOf']('-')===0x0){return[_0x31c082===_0x7934('0x17')?sequelize[_0x7934('0x18')](sequelize['col'](_0x7934('0x17')),'unsigned'):_0x31c082[_0x7934('0x19')](0x1),_0x7934('0x1a')];}else{return[_0x31c082===_0x7934('0x17')?sequelize[_0x7934('0x18')](sequelize[_0x7934('0x1b')]('priority'),_0x7934('0x1c')):_0x31c082,'ASC'];}});}return _0x594ad5;};exports[_0x7934('0x1d')]=function(_0x43e864,_0x3cc149){if(_[_0x7934('0x6')](_0x43e864)){return _0x43e864;}if(_[_0x7934('0x13')](_0x43e864)){for(var _0x70f09d=0x0;_0x70f09d<_0x43e864['length'];_0x70f09d+=0x1){_0x43e864[_0x70f09d]=this[_0x7934('0x1d')](_0x43e864[_0x70f09d],_0x3cc149);}return _0x43e864;}if(!_[_0x7934('0x1e')](_0x43e864)){return _0x43e864;}if(_[_0x7934('0x1f')](_0x3cc149)){_0x3cc149=[_0x3cc149];}if(!_[_0x7934('0x13')](_0x3cc149)){return _0x43e864;}for(var _0x453f95=0x0;_0x453f95<_0x3cc149['length'];_0x453f95+=0x1){_[_0x7934('0x20')](_0x43e864,_0x3cc149[_0x453f95]);}for(var _0x3804db in _0x43e864){if(_0x43e864['hasOwnProperty'](_0x3804db)){_0x43e864[_0x3804db]=this['omit'](_0x43e864[_0x3804db],_0x3cc149);}}return _0x43e864;};exports[_0x7934('0x21')]=function(_0x3144ac){return _0x3144ac[_0x7934('0x22')](RegExp(_0x7934('0x23')))?!![]:![];};exports[_0x7934('0x24')]=function(_0x193c18){return _0x193c18[_0x7934('0x22')](/^\S+@\S+$/)?!![]:![];};exports[_0x7934('0x25')]=function(_0x14a1da){var _0x3d6ef7=[];_0x14a1da[_0x7934('0x14')](/[ ,]+/)[_0x7934('0x26')](function(_0x451293){_0x451293=_0x451293[_0x7934('0x27')](/([^:]")"+/g,'$1');_0x451293='+'+_0x451293+'*';if(_0x451293[_0x7934('0x4')]('@'))_0x451293='\x22'+_0x451293+'\x22';_0x3d6ef7[_0x7934('0x28')](_0x451293);});return _0x3d6ef7[_0x7934('0x29')]('\x20');};exports['getOptions']=function(_0x55a8b4,_0xd4c45c,_0x247710){var _0x1c65b7={},_0x325ba2={};if(_0xd4c45c[_0x7934('0x2a')][_0x7934('0x2b')]){_0xd4c45c['query']['id']=_0xd4c45c[_0x7934('0x2a')][_0x7934('0x2b')];delete _0xd4c45c[_0x7934('0x2a')]['$id'];}_0x1c65b7[_0x7934('0x2c')]=_[_0x7934('0x16')](_0x55a8b4,_0x7934('0x11'));_0x1c65b7['query']=_[_0x7934('0x3')](_0xd4c45c['query']);_0x1c65b7[_0x7934('0x2d')]=_[_0x7934('0x2e')](_0x1c65b7[_0x7934('0x2c')],_0x1c65b7[_0x7934('0x2a')]);_0x325ba2['attributes']=_[_0x7934('0x2e')](_0x1c65b7['model'],this['fields'](_0xd4c45c['query'][_0x7934('0x5')]));_0x325ba2[_0x7934('0x2f')]=_0x325ba2[_0x7934('0x2f')][_0x7934('0x30')]?_0x325ba2['attributes']:_0x1c65b7[_0x7934('0x2c')];if(!_0xd4c45c[_0x7934('0x2a')][_0x7934('0x31')](_0x7934('0x32'))){_0x325ba2[_0x7934('0x33')]=this[_0x7934('0x33')](_0xd4c45c['query'][_0x7934('0x33')]);_0x325ba2[_0x7934('0x34')]=this['offset'](_0xd4c45c[_0x7934('0x2a')][_0x7934('0x34')]);}_0x325ba2[_0x7934('0x35')]=this['sort'](_0xd4c45c[_0x7934('0x2a')][_0x7934('0x15')]);_0x325ba2['where']=this[_0x7934('0x2d')](_[_0x7934('0x36')](_0xd4c45c[_0x7934('0x2a')],_0x1c65b7[_0x7934('0x2d')]),_0x55a8b4);if(_0xd4c45c[_0x7934('0x2a')]['filter']){_0x325ba2[_0x7934('0x37')]=_[_0x7934('0x38')](_0x325ba2[_0x7934('0x37')],{'$or':_[_0x7934('0x16')](_0x55a8b4,function(_0x4a58f0){if(_0x4a58f0[_0x7934('0x9')]!==_0x7934('0x39')){if(_0x247710){return sequelize[_0x7934('0x37')](sequelize['fn'](_0x7934('0x3a'),sequelize[_0x7934('0x1b')](_0x4a58f0[_0x7934('0x11')])),{'$like':sequelize['fn'](_0x7934('0x3a'),'%'+_0xd4c45c[_0x7934('0x2a')][_0x7934('0x3b')]+'%')});}else{var _0x20f29e={};_0x20f29e[_0x4a58f0['name']]={'$like':'%'+_0xd4c45c[_0x7934('0x2a')]['filter']+'%'};return _0x20f29e;}}})});}_0x325ba2=_['merge']({},_0x325ba2,_0xd4c45c[_0x7934('0x3c')]);return _0x325ba2;};
\ No newline at end of file
index c111251..a7836db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb6e=['appPath','use','json\x20replacer','toISOString','split','static','views','engine','html','renderFile','view\x20engine','urlencoded','50mb','json','express','body-parser','errorhandler','path','passport','cors','./environment','../mysqldb','default','get','env','set','root','development'];(function(_0x533310,_0x1bad41){var _0x4f3d61=function(_0x58c795){while(--_0x58c795){_0x533310['push'](_0x533310['shift']());}};_0x4f3d61(++_0x1bad41);}(_0xdb6e,0x142));var _0xedb6=function(_0x44b0de,_0x213afa){_0x44b0de=_0x44b0de-0x0;var _0x21da2a=_0xdb6e[_0x44b0de];return _0x21da2a;};'use strict';var express=require(_0xedb6('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0xedb6('0x1'));var methodOverride=require('method-override');var cookieParser=require('cookie-parser');var errorHandler=require(_0xedb6('0x2'));var path=require(_0xedb6('0x3'));var passport=require(_0xedb6('0x4'));var cors=require(_0xedb6('0x5'));var moment=require('moment');var config=require(_0xedb6('0x6'));var db=require(_0xedb6('0x7'))['db'];exports[_0xedb6('0x8')]=function(_0x5eed40){var _0x3de2f3=_0x5eed40[_0xedb6('0x9')](_0xedb6('0xa'));if(_0x3de2f3==='production'){_0x5eed40[_0xedb6('0xb')]('appPath',path['join'](config[_0xedb6('0xc')],'public'));}if(_0x3de2f3===_0xedb6('0xd')||_0x3de2f3==='test'){_0x5eed40[_0xedb6('0xb')](_0xedb6('0xe'),path['join'](config[_0xedb6('0xc')],'client'));_0x5eed40[_0xedb6('0xf')](errorHandler());}_0x5eed40[_0xedb6('0xb')](_0xedb6('0x10'),function(_0x4f9e37,_0xee7cb){if(this[_0x4f9e37]instanceof Date){_0xee7cb=this[_0x4f9e37][_0xedb6('0x11')]()[_0xedb6('0x12')]('.')[0x0]+'Z';}return _0xee7cb;});_0x5eed40[_0xedb6('0xf')](express[_0xedb6('0x13')](_0x5eed40[_0xedb6('0x9')](_0xedb6('0xe'))));_0x5eed40['set'](_0xedb6('0x14'),config[_0xedb6('0xc')]+'/server/views');_0x5eed40[_0xedb6('0x15')](_0xedb6('0x16'),require('ejs')[_0xedb6('0x17')]);_0x5eed40['set'](_0xedb6('0x18'),_0xedb6('0x16'));_0x5eed40[_0xedb6('0xf')](bodyParser[_0xedb6('0x19')]({'limit':_0xedb6('0x1a'),'extended':!![]}));_0x5eed40['use'](bodyParser[_0xedb6('0x1b')]({'limit':_0xedb6('0x1a')}));_0x5eed40[_0xedb6('0xf')](cors());_0x5eed40[_0xedb6('0xf')](methodOverride());_0x5eed40[_0xedb6('0xf')](cookieParser());_0x5eed40['use'](passport['initialize']());};
\ No newline at end of file
+var _0x7f6c=['express','method-override','errorhandler','path','cors','moment','./environment','../mysqldb','default','get','env','production','set','appPath','join','root','public','development','client','json\x20replacer','toISOString','split','static','views','engine','html','renderFile','view\x20engine','urlencoded','50mb','use','json','initialize'];(function(_0x34eab3,_0x2d39c9){var _0x11280a=function(_0xb2bbbf){while(--_0xb2bbbf){_0x34eab3['push'](_0x34eab3['shift']());}};_0x11280a(++_0x2d39c9);}(_0x7f6c,0x129));var _0xc7f6=function(_0x3be382,_0x1e70f7){_0x3be382=_0x3be382-0x0;var _0x490263=_0x7f6c[_0x3be382];return _0x490263;};'use strict';var express=require(_0xc7f6('0x0'));var favicon=require('serve-favicon');var bodyParser=require('body-parser');var methodOverride=require(_0xc7f6('0x1'));var cookieParser=require('cookie-parser');var errorHandler=require(_0xc7f6('0x2'));var path=require(_0xc7f6('0x3'));var passport=require('passport');var cors=require(_0xc7f6('0x4'));var moment=require(_0xc7f6('0x5'));var config=require(_0xc7f6('0x6'));var db=require(_0xc7f6('0x7'))['db'];exports[_0xc7f6('0x8')]=function(_0xb9f64a){var _0xee10d0=_0xb9f64a[_0xc7f6('0x9')](_0xc7f6('0xa'));if(_0xee10d0===_0xc7f6('0xb')){_0xb9f64a[_0xc7f6('0xc')](_0xc7f6('0xd'),path[_0xc7f6('0xe')](config[_0xc7f6('0xf')],_0xc7f6('0x10')));}if(_0xee10d0===_0xc7f6('0x11')||_0xee10d0==='test'){_0xb9f64a[_0xc7f6('0xc')](_0xc7f6('0xd'),path[_0xc7f6('0xe')](config[_0xc7f6('0xf')],_0xc7f6('0x12')));_0xb9f64a['use'](errorHandler());}_0xb9f64a['set'](_0xc7f6('0x13'),function(_0x30521b,_0x4685d8){if(this[_0x30521b]instanceof Date){_0x4685d8=this[_0x30521b][_0xc7f6('0x14')]()[_0xc7f6('0x15')]('.')[0x0]+'Z';}return _0x4685d8;});_0xb9f64a['use'](express[_0xc7f6('0x16')](_0xb9f64a['get'](_0xc7f6('0xd'))));_0xb9f64a[_0xc7f6('0xc')](_0xc7f6('0x17'),config['root']+'/server/views');_0xb9f64a[_0xc7f6('0x18')](_0xc7f6('0x19'),require('ejs')[_0xc7f6('0x1a')]);_0xb9f64a[_0xc7f6('0xc')](_0xc7f6('0x1b'),'html');_0xb9f64a['use'](bodyParser[_0xc7f6('0x1c')]({'limit':_0xc7f6('0x1d'),'extended':!![]}));_0xb9f64a[_0xc7f6('0x1e')](bodyParser[_0xc7f6('0x1f')]({'limit':_0xc7f6('0x1d')}));_0xb9f64a[_0xc7f6('0x1e')](cors());_0xb9f64a[_0xc7f6('0x1e')](methodOverride());_0xb9f64a[_0xc7f6('0x1e')](cookieParser());_0xb9f64a[_0xc7f6('0x1e')](passport[_0xc7f6('0x20')]());};
\ No newline at end of file
index 5d5db12..63ddd75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d4f=['child_process','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','head','mac','address','127.0.0.1','model','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','substring','lodash','crypto','bimedia-machine-uuid'];(function(_0x5d81b4,_0x2f08af){var _0x502d45=function(_0x4548dd){while(--_0x4548dd){_0x5d81b4['push'](_0x5d81b4['shift']());}};_0x502d45(++_0x2f08af);}(_0x9d4f,0x9d));var _0xf9d4=function(_0x8af7e7,_0x472402){_0x8af7e7=_0x8af7e7-0x0;var _0x2f6cb5=_0x9d4f[_0x8af7e7];return _0x2f6cb5;};'use strict';var _=require(_0xf9d4('0x0'));var os=require('os');var crypto=require(_0xf9d4('0x1'));var machine=require(_0xf9d4('0x2'));var exec=require(_0xf9d4('0x3'))[_0xf9d4('0x4')];var config=require(_0xf9d4('0x5'));function getInterfaces(){var _0x6eba6f=[];var _0x4f8787=os[_0xf9d4('0x6')]();var _0x8b18d8=_[_0xf9d4('0x7')](_[_0xf9d4('0x8')](_0x4f8787));for(var _0x49f541=0x0;_0x49f541<_0x8b18d8['length'];_0x49f541++){var _0x296070=_0x4f8787[_0x8b18d8[_0x49f541]][_0xf9d4('0x9')](function(_0xa237a9){return _0xa237a9[_0xf9d4('0xa')]===_0xf9d4('0xb')&&_0xa237a9['internal']===![];});_0x6eba6f=_0x6eba6f['concat'](_0x296070);}return _0x6eba6f;}function getFirstInterface(){var _0x1ca596=_[_0xf9d4('0xc')](getInterfaces());return{'macAddress':_0x1ca596&&_0x1ca596[_0xf9d4('0xd')]?_0x1ca596[_0xf9d4('0xd')]:'00:00:00:00:00:00','ipAddress':_0x1ca596&&_0x1ca596['address']?_0x1ca596[_0xf9d4('0xe')]:_0xf9d4('0xf')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x288713=_['orderBy'](os['cpus']()['map'](function(_0x91b3e7){return _0x91b3e7[_0xf9d4('0x10')];}))['join'](':');return crypto[_0xf9d4('0x11')](_0xf9d4('0x12'))[_0xf9d4('0x13')](_0x288713)[_0xf9d4('0x14')](_0xf9d4('0x15'));}exports[_0xf9d4('0x16')]=function(){var _0x1b8137=os[_0xf9d4('0x17')]();var _0x46e3a3=/[0-9a-f-]{36}/;if(config[_0xf9d4('0x18')]&&_0x46e3a3['test'](config[_0xf9d4('0x18')])){return config[_0xf9d4('0x18')];}else if(_0x1b8137===_0xf9d4('0x19')){return exec(_0xf9d4('0x1a'),{'encoding':_0xf9d4('0x1b')})[_0xf9d4('0x1c')]('\x0d\x0a','');}else{var _0x5ce30a=getFirstInterface();var _0x4da49e=getCPUhash();var _0x3871fe=_0x4da49e+'|'+os[_0xf9d4('0x1d')]()+'|'+_0x5ce30a['macAddress']+'|'+_0x5ce30a[_0xf9d4('0x1e')];var _0x39dcc7=crypto[_0xf9d4('0x11')](_0xf9d4('0x12'))['update'](_0x3871fe)[_0xf9d4('0x14')](_0xf9d4('0x15'));return _0x39dcc7['substring'](0x0,0x8)+'-'+_0x39dcc7[_0xf9d4('0x1f')](0x8,0xc)+'-'+_0x39dcc7[_0xf9d4('0x1f')](0xc,0x10)+'-'+_0x39dcc7['substring'](0x10,0x14)+'-'+_0x39dcc7[_0xf9d4('0x1f')](0x14);}};
\ No newline at end of file
+var _0xb8bb=['getFirstInterface','map','join','createHash','md5','update','digest','hex','getUuid','test','licenseToken','win32','utf8','hostname','macAddress','substring','lodash','bimedia-machine-uuid','child_process','orderBy','keys','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address'];(function(_0x5f5022,_0x81346a){var _0x23810c=function(_0xe5bdfe){while(--_0xe5bdfe){_0x5f5022['push'](_0x5f5022['shift']());}};_0x23810c(++_0x81346a);}(_0xb8bb,0xa6));var _0xbb8b=function(_0xd36446,_0xf1987f){_0xd36446=_0xd36446-0x0;var _0x4f7b08=_0xb8bb[_0xd36446];return _0x4f7b08;};'use strict';var _=require(_0xbb8b('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0xbb8b('0x1'));var exec=require(_0xbb8b('0x2'))['execSync'];var config=require('../environment');function getInterfaces(){var _0x1a0509=[];var _0x4d96a9=os['networkInterfaces']();var _0x9e480d=_[_0xbb8b('0x3')](_[_0xbb8b('0x4')](_0x4d96a9));for(var _0x558e17=0x0;_0x558e17<_0x9e480d['length'];_0x558e17++){var _0x103226=_0x4d96a9[_0x9e480d[_0x558e17]][_0xbb8b('0x5')](function(_0x3a6630){return _0x3a6630[_0xbb8b('0x6')]===_0xbb8b('0x7')&&_0x3a6630[_0xbb8b('0x8')]===![];});_0x1a0509=_0x1a0509[_0xbb8b('0x9')](_0x103226);}return _0x1a0509;}function getFirstInterface(){var _0x1ca5c9=_[_0xbb8b('0xa')](getInterfaces());return{'macAddress':_0x1ca5c9&&_0x1ca5c9['mac']?_0x1ca5c9[_0xbb8b('0xb')]:_0xbb8b('0xc'),'ipAddress':_0x1ca5c9&&_0x1ca5c9[_0xbb8b('0xd')]?_0x1ca5c9[_0xbb8b('0xd')]:'127.0.0.1'};}exports[_0xbb8b('0xe')]=getFirstInterface;function getCPUhash(){var _0x2b6ead=_[_0xbb8b('0x3')](os['cpus']()[_0xbb8b('0xf')](function(_0x1a5a52){return _0x1a5a52['model'];}))[_0xbb8b('0x10')](':');return crypto[_0xbb8b('0x11')](_0xbb8b('0x12'))[_0xbb8b('0x13')](_0x2b6ead)[_0xbb8b('0x14')](_0xbb8b('0x15'));}exports[_0xbb8b('0x16')]=function(){var _0x24cc40=os['platform']();var _0x4e6b68=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x4e6b68[_0xbb8b('0x17')](config[_0xbb8b('0x18')])){return config['licenseToken'];}else if(_0x24cc40===_0xbb8b('0x19')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0xbb8b('0x1a')})['replace']('\x0d\x0a','');}else{var _0xf3f3ba=getFirstInterface();var _0x452745=getCPUhash();var _0x79ffab=_0x452745+'|'+os[_0xbb8b('0x1b')]()+'|'+_0xf3f3ba[_0xbb8b('0x1c')]+'|'+_0xf3f3ba['ipAddress'];var _0x347f8f=crypto[_0xbb8b('0x11')]('md5')[_0xbb8b('0x13')](_0x79ffab)['digest'](_0xbb8b('0x15'));return _0x347f8f['substring'](0x0,0x8)+'-'+_0x347f8f[_0xbb8b('0x1d')](0x8,0xc)+'-'+_0x347f8f['substring'](0xc,0x10)+'-'+_0x347f8f[_0xbb8b('0x1d')](0x10,0x14)+'-'+_0x347f8f['substring'](0x14);}};
\ No newline at end of file
index 5a12f5c..29ae33a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd4=['Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','days','error','message','finally','getUuid','License','findOrCreate','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','version','../../mysqldb','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED'];(function(_0x4b2c43,_0x6d3712){var _0x1b8085=function(_0x11cf46){while(--_0x11cf46){_0x4b2c43['push'](_0x4b2c43['shift']());}};_0x1b8085(++_0x6d3712);}(_0xedd4,0x15a));var _0x4edd=function(_0x1f993c,_0x18b478){_0x1f993c=_0x1f993c-0x0;var _0x14bea2=_0xedd4[_0x1f993c];return _0x14bea2;};'use strict';var util=require(_0x4edd('0x0'));var moment=require(_0x4edd('0x1'));var rp=require(_0x4edd('0x2'));var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0x4edd('0x3'));var db=require(_0x4edd('0x4'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x4edd('0x5'));var logger=require(_0x4edd('0x6'))(_0x4edd('0x7'));var HOST=_0x4edd('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x46623c){return new BPromise(function(_0x2d139b,_0x321ca7){var _0x3ea0a3=util[_0x4edd('0x9')](_0x4edd('0xa'),HOST,_0x46623c,module[_0x4edd('0xb')][_0x4edd('0x3')]);if(oldToken){_0x3ea0a3=util[_0x4edd('0x9')](_0x4edd('0xc'),HOST,_0x46623c,module[_0x4edd('0xb')][_0x4edd('0x3')],oldToken);}var _0x4b3d91={'uri':_0x3ea0a3,'method':_0x4edd('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x4b3d91)[_0x4edd('0xe')](function(_0x57e3b7){_0x2d139b(_0x57e3b7);})[_0x4edd('0xf')](function(_0x31c0d6){_0x321ca7(_0x31c0d6);});});}function manageLicense(_0x51379e,_0x55e351){var _0x18da43=_0x55e351[_0x4edd('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x18da43[_0x4edd('0x11')]!==_0x51379e&&!_0x18da43[_0x4edd('0x12')]){oldToken=_0x18da43[_0x4edd('0x11')];}httpRequest(_0x51379e)[_0x4edd('0xe')](function(_0x1fe2c4){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1fe2c4[_0x4edd('0x13')]){isOldTokenSent=![];if(!_0x18da43[_0x4edd('0x7')]&&_0x18da43[_0x4edd('0x7')]!=_0x1fe2c4[_0x4edd('0x7')]||_0x18da43[_0x4edd('0x7')]&&_0x18da43['data2']){logger['info'](_0x4edd('0x14'));}if(_0x18da43[_0x4edd('0x7')]&&!_0x18da43[_0x4edd('0x12')]&&_0x18da43[_0x4edd('0x7')]!=_0x1fe2c4['license']){logger[_0x4edd('0x15')](_0x4edd('0x16'));}if(_0x18da43['license']&&!_0x18da43[_0x4edd('0x12')]&&_0x18da43[_0x4edd('0x7')]==_0x1fe2c4[_0x4edd('0x7')]){return _0x55e351;}return _0x55e351['update']({'data1':_0x51379e,'data2':null,'license':_0x1fe2c4['license']});}else{if(_0x1fe2c4[_0x4edd('0x7')]||_0x18da43[_0x4edd('0x7')]){if(!_0x18da43[_0x4edd('0x12')]){if(_0x18da43[_0x4edd('0x11')]==_0x51379e){GRAY_PERIOD_REASON=_0x4edd('0x17');logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x4edd('0x18');logger['info'](_0x4edd('0x19'),_0x18da43['data1'],_0x51379e);}logger[_0x4edd('0x15')](_0x4edd('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()['format'](_0x4edd('0x1b')));return _0x55e351[_0x4edd('0x1c')]({'data2':encryptor[_0x4edd('0x1d')](moment()[_0x4edd('0x9')](_0x4edd('0x1b')))});}else{if(moment()[_0x4edd('0x1e')](encryptor[_0x4edd('0x1f')](_0x18da43[_0x4edd('0x12')]),_0x4edd('0x20'))>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()[_0x4edd('0x9')](_0x4edd('0x1b')));isOldTokenSent=![];return _0x55e351[_0x4edd('0x1c')]({'data1':_0x51379e,'data2':null,'license':null});}}}else{if(_0x18da43[_0x4edd('0x11')]!=_0x51379e){logger[_0x4edd('0x15')](_0x4edd('0x19'),_0x18da43[_0x4edd('0x11')],_0x51379e);return _0x55e351[_0x4edd('0x1c')]({'data1':_0x51379e,'data2':null,'license':null});}}}return _0x55e351;})['then'](function(_0x12a2db){_0x55e351=_0x12a2db;})['catch'](function(_0x2f54ab){logger[_0x4edd('0x21')](_0x2f54ab[_0x4edd('0x22')]);})[_0x4edd('0x23')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x55e351);},TIME);});}function defaultLicense(){var _0x484066=hardware[_0x4edd('0x24')]();if(_0x484066){return db[_0x4edd('0x25')][_0x4edd('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x484066}})['spread'](function(_0x1885f7,_0x1a37f1){logger[_0x4edd('0x15')](_0x4edd('0x27'),_0x484066);manageLicense(_0x484066,_0x1885f7);})['catch'](function(_0x36a30e){logger[_0x4edd('0x21')](_0x36a30e[_0x4edd('0x22')]);});}}exports[_0x4edd('0x28')]=defaultLicense;
\ No newline at end of file
+var _0xc863=['../../mysqldb','../../components/encryptor','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','version','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','catch','get','data2','data1','then','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','Changed','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','error','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','message','default','moment','request-promise','pkginfo'];(function(_0x22ba2a,_0x42ea92){var _0x1c5489=function(_0x188246){while(--_0x188246){_0x22ba2a['push'](_0x22ba2a['shift']());}};_0x1c5489(++_0x42ea92);}(_0xc863,0x1eb));var _0x3c86=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0xc863[_0x9fd887];return _0x1a54ab;};'use strict';var util=require('util');var moment=require(_0x3c86('0x0'));var rp=require(_0x3c86('0x1'));var BPromise=require('bluebird');var pkginfo=require(_0x3c86('0x2'))(module,'version');var db=require(_0x3c86('0x3'))['db'];var encryptor=require(_0x3c86('0x4'));var hardware=require('./hardware');var logger=require(_0x3c86('0x5'))(_0x3c86('0x6'));var HOST=_0x3c86('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x2544de){return new BPromise(function(_0x77207d,_0x147722){var _0x2021cb=util['format'](_0x3c86('0x8'),HOST,_0x2544de,module[_0x3c86('0x9')][_0x3c86('0xa')]);if(oldToken){_0x2021cb=util[_0x3c86('0xb')](_0x3c86('0xc'),HOST,_0x2544de,module['exports']['version'],oldToken);}var _0x32eee3={'uri':_0x2021cb,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x32eee3)['then'](function(_0x17c497){_0x77207d(_0x17c497);})[_0x3c86('0xd')](function(_0x39307d){_0x147722(_0x39307d);});});}function manageLicense(_0x50b50d,_0x15d34d){var _0x1f6d8b=_0x15d34d[_0x3c86('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x1f6d8b['data1']!==_0x50b50d&&!_0x1f6d8b[_0x3c86('0xf')]){oldToken=_0x1f6d8b[_0x3c86('0x10')];}httpRequest(_0x50b50d)[_0x3c86('0x11')](function(_0x448690){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x448690['active']){isOldTokenSent=![];if(!_0x1f6d8b[_0x3c86('0x6')]&&_0x1f6d8b['license']!=_0x448690[_0x3c86('0x6')]||_0x1f6d8b[_0x3c86('0x6')]&&_0x1f6d8b[_0x3c86('0xf')]){logger[_0x3c86('0x12')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x1f6d8b[_0x3c86('0x6')]&&!_0x1f6d8b['data2']&&_0x1f6d8b['license']!=_0x448690[_0x3c86('0x6')]){logger['info'](_0x3c86('0x13'));}if(_0x1f6d8b[_0x3c86('0x6')]&&!_0x1f6d8b[_0x3c86('0xf')]&&_0x1f6d8b['license']==_0x448690[_0x3c86('0x6')]){return _0x15d34d;}return _0x15d34d[_0x3c86('0x14')]({'data1':_0x50b50d,'data2':null,'license':_0x448690['license']});}else{if(_0x448690[_0x3c86('0x6')]||_0x1f6d8b[_0x3c86('0x6')]){if(!_0x1f6d8b[_0x3c86('0xf')]){if(_0x1f6d8b[_0x3c86('0x10')]==_0x50b50d){GRAY_PERIOD_REASON=_0x3c86('0x15');logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x3c86('0x16');logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1f6d8b['data1'],_0x50b50d);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x3c86('0x17')](),moment()[_0x3c86('0xb')](_0x3c86('0x18')));return _0x15d34d['update']({'data2':encryptor[_0x3c86('0x19')](moment()[_0x3c86('0xb')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x3c86('0x1a')](encryptor[_0x3c86('0x1b')](_0x1f6d8b[_0x3c86('0xf')]),_0x3c86('0x1c'))>DAYS){logger[_0x3c86('0x12')](_0x3c86('0x1d'),moment()['format'](_0x3c86('0x18')));isOldTokenSent=![];return _0x15d34d[_0x3c86('0x14')]({'data1':_0x50b50d,'data2':null,'license':null});}}}else{if(_0x1f6d8b['data1']!=_0x50b50d){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1f6d8b[_0x3c86('0x10')],_0x50b50d);return _0x15d34d[_0x3c86('0x14')]({'data1':_0x50b50d,'data2':null,'license':null});}}}return _0x15d34d;})['then'](function(_0xa7aa0f){_0x15d34d=_0xa7aa0f;})['catch'](function(_0x163235){logger[_0x3c86('0x1e')](_0x163235['message']);})[_0x3c86('0x1f')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x15d34d);},TIME);});}function defaultLicense(){var _0xdfad33=hardware[_0x3c86('0x20')]();if(_0xdfad33){return db['License'][_0x3c86('0x21')]({'where':{'id':0x1},'defaults':{'data1':_0xdfad33}})[_0x3c86('0x22')](function(_0x43c7a1,_0x3bff9a){logger[_0x3c86('0x12')](_0x3c86('0x23'),_0xdfad33);manageLicense(_0xdfad33,_0x43c7a1);})[_0x3c86('0xd')](function(_0x49ea76){logger[_0x3c86('0x1e')](_0x49ea76[_0x3c86('0x24')]);});}}exports[_0x3c86('0x25')]=defaultLicense;
\ No newline at end of file
index a93aae1..bc78a5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x730c=['bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','days','changed','disabled','message','User','findAll','sequelize','col','role','count','user','telephone','users','telephones','forEach','pick','countBy','admin','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','moment'];(function(_0x5a4b88,_0x18eb42){var _0x2c5cde=function(_0x3044af){while(--_0x3044af){_0x5a4b88['push'](_0x5a4b88['shift']());}};_0x2c5cde(++_0x18eb42);}(_0x730c,0x148));var _0xc730=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x730c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xc730('0x0'));var BPromise=require(_0xc730('0x1'));var hardware=require(_0xc730('0x2'));var encryptor=require('../../components/encryptor');var db=require(_0xc730('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc730('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc730('0x5'),'machineUuid':hardware[_0xc730('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xc730('0x7'),'machineUuid':hardware[_0xc730('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1eb402){return new BPromise(function(_0x1eb1ce,_0x549712){return db[_0xc730('0x8')][_0xc730('0x9')](_[_0xc730('0xa')](_0x1eb402,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x46bded){return checkLicense(_0x46bded,null);})[_0xc730('0xb')](function(_0x4abad8){_0x1eb1ce(_0x4abad8);return;})[_0xc730('0xc')](function(_0x257756){_0x549712(_0x257756);});});}function checkLicense(_0x293b74,_0x476df4){if(!_0x293b74){demoLicense[_0xc730('0xd')]=_0x293b74[_0xc730('0xe')];return demoLicense;}try{var _0xad6a88=_0x476df4||_0x293b74[_0xc730('0xf')];if(_[_0xc730('0x10')](_0xad6a88)){throw new Error(_0xc730('0x11'));}var _0x5f5c73=_0x293b74[_0xc730('0xe')];var _0x421f77=_0x293b74['data2'];var _0x274a84=_0x5f5c73[_0xc730('0x12')]('-')[0x4];var _0x594697=_0x5f5c73[_0xc730('0x12')]('-')[0x0];var _0x1b2001=encryptor[_0xc730('0x13')](_0xad6a88,util[_0xc730('0x14')](_0xc730('0x15'),_0x274a84,_0x5f5c73,_0x594697));var _0x4fae2d=JSON[_0xc730('0x16')](_0x1b2001);_0x4fae2d[_0xc730('0x17')]=![];_0x4fae2d[_0xc730('0xd')]=_0x5f5c73;_0x4fae2d[_0xc730('0x18')]=hardware[_0xc730('0x6')]();if(_0x421f77){var _0x11361f=encryptor['decryptString'](_0x421f77);_0x4fae2d[_0xc730('0x19')]=_0x11361f;_0x4fae2d[_0xc730('0x1a')]=moment(_0x11361f)['add'](0x7,_0xc730('0x1b'))[_0xc730('0x14')]();_0x4fae2d['grayReason']=_0x4fae2d['uuid']!=_0x4fae2d[_0xc730('0x18')]?_0xc730('0x1c'):_0xc730('0x1d');}return _0x4fae2d;}catch(_0x126aa7){breakingLicense['uuid']=_0x293b74[_0xc730('0xe')];breakingLicense[_0xc730('0x1e')]=_0x126aa7[_0xc730('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x316784,_0x3739ef){getLicense()[_0xc730('0xb')](function(_0x21aa85){return db[_0xc730('0x1f')][_0xc730('0x20')]({'attributes':['role',[db['sequelize']['fn']('COUNT',db[_0xc730('0x21')][_0xc730('0x22')](_0xc730('0x23'))),_0xc730('0x24')]],'group':_0xc730('0x23'),'where':{'role':{'$or':['admin',_0xc730('0x25'),_0xc730('0x26')]}},'raw':!![]})['then'](function(_0x267aa0){var _0x7346d6={'user':_0x21aa85[_0xc730('0x27')]||0x0,'telephone':_0x21aa85[_0xc730('0x28')]||0x0};_0x267aa0[_0xc730('0x29')](function(_0x2ef056){var _0xb3f719=_0x2ef056[_0xc730('0x23')]==='admin'?'user':_0x2ef056[_0xc730('0x23')];_0x7346d6[_0xb3f719]-=_0x2ef056['count'];if(_0x7346d6[_0xb3f719]<0x0)_0x7346d6[_0xb3f719]=0x0;});_0x316784(_0x7346d6);return;});})['catch'](function(_0x3fe56d){_0x3739ef(_0x3fe56d);});});}function checkUserLimits(_0x2061a3){return new BPromise(function(_0x5dbce3,_0x45b6a8){getLimits()[_0xc730('0xb')](function(_0x31de8f){var _0x59a84d=_[_0xc730('0x2a')](_[_0xc730('0x2b')](_0x2061a3,_0xc730('0x23')),[_0xc730('0x2c'),'user',_0xc730('0x26')]);var _0xf57f17=(_0x59a84d[_0xc730('0x2c')]||0x0)+(_0x59a84d[_0xc730('0x25')]||0x0);var _0x1b6332=_0x59a84d[_0xc730('0x26')]||0x0;if(_0xf57f17>_0x31de8f[_0xc730('0x25')])return _0x45b6a8(_0xc730('0x2d'));if(_0x1b6332>_0x31de8f['telephone'])return _0x45b6a8(_0xc730('0x2e'));return _0x5dbce3();})[_0xc730('0xc')](function(_0xcf55cb){_0x45b6a8(_0xcf55cb);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x19cd=['data1','license','isEmpty','split','format','demo','machineUuid','decryptString','gray','deadline','add','days','grayReason','changed','message','User','findAll','role','sequelize','count','admin','user','users','pick','telephone','lodash','moment','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','find','defaults','then','catch','uuid'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x19cd,0x19f));var _0xd19c=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x19cd[_0x34843e];return _0x598f7f;};'use strict';var util=require('util');var _=require(_0xd19c('0x0'));var moment=require(_0xd19c('0x1'));var BPromise=require('bluebird');var hardware=require('./hardware');var encryptor=require(_0xd19c('0x2'));var db=require(_0xd19c('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xd19c('0x4'),'machineUuid':hardware[_0xd19c('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd19c('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xd19c('0x7'),'machineUuid':hardware[_0xd19c('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x7b0131){return new BPromise(function(_0x441b9b,_0x522009){return db[_0xd19c('0x8')][_0xd19c('0x9')](_[_0xd19c('0xa')](_0x7b0131,{'raw':!![],'where':{'id':0x1}}))[_0xd19c('0xb')](function(_0x3d32f4){return checkLicense(_0x3d32f4,null);})[_0xd19c('0xb')](function(_0x310a82){_0x441b9b(_0x310a82);return;})[_0xd19c('0xc')](function(_0x1d4625){_0x522009(_0x1d4625);});});}function checkLicense(_0xfe1ccc,_0x30a23f){if(!_0xfe1ccc){demoLicense[_0xd19c('0xd')]=_0xfe1ccc[_0xd19c('0xe')];return demoLicense;}try{var _0x4129b0=_0x30a23f||_0xfe1ccc[_0xd19c('0xf')];if(_[_0xd19c('0x10')](_0x4129b0)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x14f9f1=_0xfe1ccc[_0xd19c('0xe')];var _0x2a4ca2=_0xfe1ccc['data2'];var _0x1b0456=_0x14f9f1[_0xd19c('0x11')]('-')[0x4];var _0x31ffe7=_0x14f9f1[_0xd19c('0x11')]('-')[0x0];var _0x2e6798=encryptor['decryptString'](_0x4129b0,util[_0xd19c('0x12')]('%s:%s:%s',_0x1b0456,_0x14f9f1,_0x31ffe7));var _0x204093=JSON['parse'](_0x2e6798);_0x204093[_0xd19c('0x13')]=![];_0x204093['uuid']=_0x14f9f1;_0x204093[_0xd19c('0x14')]=hardware[_0xd19c('0x5')]();if(_0x2a4ca2){var _0x48e4d5=encryptor[_0xd19c('0x15')](_0x2a4ca2);_0x204093[_0xd19c('0x16')]=_0x48e4d5;_0x204093[_0xd19c('0x17')]=moment(_0x48e4d5)[_0xd19c('0x18')](0x7,_0xd19c('0x19'))[_0xd19c('0x12')]();_0x204093[_0xd19c('0x1a')]=_0x204093[_0xd19c('0xd')]!=_0x204093[_0xd19c('0x14')]?_0xd19c('0x1b'):'disabled';}return _0x204093;}catch(_0x1c89e4){breakingLicense[_0xd19c('0xd')]=_0xfe1ccc[_0xd19c('0xe')];breakingLicense[_0xd19c('0x1c')]=_0x1c89e4['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x39fcee,_0x41f1b8){getLicense()[_0xd19c('0xb')](function(_0xb537c6){return db[_0xd19c('0x1d')][_0xd19c('0x1e')]({'attributes':[_0xd19c('0x1f'),[db[_0xd19c('0x20')]['fn']('COUNT',db[_0xd19c('0x20')]['col'](_0xd19c('0x1f'))),_0xd19c('0x21')]],'group':_0xd19c('0x1f'),'where':{'role':{'$or':[_0xd19c('0x22'),_0xd19c('0x23'),'telephone']}},'raw':!![]})[_0xd19c('0xb')](function(_0x1b77f6){var _0x421331={'user':_0xb537c6[_0xd19c('0x24')]||0x0,'telephone':_0xb537c6['telephones']||0x0};_0x1b77f6['forEach'](function(_0xfa9f2e){var _0x198331=_0xfa9f2e[_0xd19c('0x1f')]===_0xd19c('0x22')?_0xd19c('0x23'):_0xfa9f2e[_0xd19c('0x1f')];_0x421331[_0x198331]-=_0xfa9f2e['count'];if(_0x421331[_0x198331]<0x0)_0x421331[_0x198331]=0x0;});_0x39fcee(_0x421331);return;});})[_0xd19c('0xc')](function(_0xb8f66c){_0x41f1b8(_0xb8f66c);});});}function checkUserLimits(_0xa4c4f6){return new BPromise(function(_0x52d85b,_0x112182){getLimits()[_0xd19c('0xb')](function(_0x138f98){var _0x2e3ec3=_[_0xd19c('0x25')](_['countBy'](_0xa4c4f6,_0xd19c('0x1f')),[_0xd19c('0x22'),'user',_0xd19c('0x26')]);var _0x3ece50=(_0x2e3ec3[_0xd19c('0x22')]||0x0)+(_0x2e3ec3[_0xd19c('0x23')]||0x0);var _0x45b876=_0x2e3ec3[_0xd19c('0x26')]||0x0;if(_0x3ece50>_0x138f98['user'])return _0x112182('License\x20limit\x20reached\x20for\x20users');if(_0x45b876>_0x138f98['telephone'])return _0x112182('License\x20limit\x20reached\x20for\x20telephones');return _0x52d85b();})[_0xd19c('0xc')](function(_0xa1247b){_0x112182(_0xa1247b);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 1c0e7e0..23174e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe820=['exports','myappanuglar-secret'];(function(_0x321911,_0x272ef6){var _0x52866e=function(_0x5aff83){while(--_0x5aff83){_0x321911['push'](_0x321911['shift']());}};_0x52866e(++_0x272ef6);}(_0xe820,0xd2));var _0x0e82=function(_0xb8c4c1,_0x186ec9){_0xb8c4c1=_0xb8c4c1-0x0;var _0x5024c2=_0xe820[_0xb8c4c1];return _0x5024c2;};'use strict';module[_0x0e82('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x0e82('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0x47c5=['app-id','secret','exports','http://localhost:9000','myappanuglar-secret'];(function(_0xfdcc2,_0x3297fd){var _0x19e84f=function(_0x323330){while(--_0x323330){_0xfdcc2['push'](_0xfdcc2['shift']());}};_0x19e84f(++_0x3297fd);}(_0x47c5,0x165));var _0x547c=function(_0x258fb5,_0x47c7f5){_0x258fb5=_0x258fb5-0x0;var _0x124437=_0x47c5[_0x258fb5];return _0x124437;};'use strict';module[_0x547c('0x0')]={'DOMAIN':_0x547c('0x1'),'SESSION_SECRET':_0x547c('0x2'),'GOOGLE_ID':_0x547c('0x3'),'GOOGLE_SECRET':_0x547c('0x4'),'DEBUG':''};
\ No newline at end of file
index 2254be0..cfcd286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa42b=['format','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','Logger','%s-%s','error','transports','info','env','debugLevel','moment','path','join','/var','log','xcally'];(function(_0xe928d3,_0x46d1ba){var _0x1cc239=function(_0x3a484d){while(--_0x3a484d){_0xe928d3['push'](_0xe928d3['shift']());}};_0x1cc239(++_0x46d1ba);}(_0xa42b,0x84));var _0xba42=function(_0x3ed3d7,_0x8f4ee5){_0x3ed3d7=_0x3ed3d7-0x0;var _0x55814e=_0xa42b[_0x3ed3d7];return _0x55814e;};'use strict';var moment=require(_0xba42('0x0'));var winston=require('winston');var util=require('util');var path=require(_0xba42('0x1'));var debugLevel='INFO';function filename(_0x1ace38,_0x3b1535){return path[_0xba42('0x2')](_0xba42('0x3'),_0xba42('0x4'),_0xba42('0x5'),util[_0xba42('0x6')](_0xba42('0x7'),_0x1ace38,_0x3b1535));}function formatter(_0x15d577,_0xa6432){_0xa6432[_0xba42('0x8')]=_0xa6432[_0xba42('0x8')][_0xba42('0x9')](/@@{/g,_0xba42('0xa'))[_0xba42('0x9')](/}@@/g,_0xba42('0xb'))[_0xba42('0x9')](/@{/g,'{{')[_0xba42('0x9')](/}@/g,'}}');return util['format'](_0xba42('0xc'),moment()[_0xba42('0x6')](_0xba42('0xd')),_0xa6432[_0xba42('0xe')][_0xba42('0xf')](),_0x15d577,_0xa6432['message']);}module['exports']=function(_0x59a4e1){return new winston[(_0xba42('0x10'))]({'transports':[new winston['transports']['File']({'name':util[_0xba42('0x6')](_0xba42('0x11'),_0x59a4e1,_0xba42('0x12')),'filename':filename(_0x59a4e1,_0xba42('0x12')),'level':_0xba42('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x36c76b){return formatter(_0x59a4e1,_0x36c76b);}}),new winston[(_0xba42('0x13'))]['File']({'name':util[_0xba42('0x6')](_0xba42('0x11'),_0x59a4e1,_0xba42('0x14')),'filename':filename(_0x59a4e1,'info'),'level':_0xba42('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x522ab3){return formatter(_0x59a4e1,_0x522ab3);}}),new winston['transports']['Console']({'level':process[_0xba42('0x15')][_0xba42('0x16')]||debugLevel,'json':![],'formatter':function(_0xaad316){return formatter(_0x59a4e1,_0xaad316);}})]});};
\ No newline at end of file
+var _0xdca0=['replace','format','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','exports','transports','File','error','info','env','debugLevel','winston','util','path','INFO','join','log','xcally','%s-%s.log','message'];(function(_0x491019,_0x1bde05){var _0x16256c=function(_0x50b1b3){while(--_0x50b1b3){_0x491019['push'](_0x491019['shift']());}};_0x16256c(++_0x1bde05);}(_0xdca0,0x8a));var _0x0dca=function(_0xe0f242,_0x2f4ecf){_0xe0f242=_0xe0f242-0x0;var _0x3b801a=_0xdca0[_0xe0f242];return _0x3b801a;};'use strict';var moment=require('moment');var winston=require(_0x0dca('0x0'));var util=require(_0x0dca('0x1'));var path=require(_0x0dca('0x2'));var debugLevel=_0x0dca('0x3');function filename(_0x41173a,_0x5549f3){return path[_0x0dca('0x4')]('/var',_0x0dca('0x5'),_0x0dca('0x6'),util['format'](_0x0dca('0x7'),_0x41173a,_0x5549f3));}function formatter(_0x57a756,_0x138ca7){_0x138ca7[_0x0dca('0x8')]=_0x138ca7[_0x0dca('0x8')][_0x0dca('0x9')](/@@{/g,'{{{')['replace'](/}@@/g,'}}}')[_0x0dca('0x9')](/@{/g,'{{')[_0x0dca('0x9')](/}@/g,'}}');return util[_0x0dca('0xa')](_0x0dca('0xb'),moment()[_0x0dca('0xa')](_0x0dca('0xc')),_0x138ca7[_0x0dca('0xd')]['toUpperCase'](),_0x57a756,_0x138ca7[_0x0dca('0x8')]);}module[_0x0dca('0xe')]=function(_0x4a9e66){return new winston['Logger']({'transports':[new winston[(_0x0dca('0xf'))][(_0x0dca('0x10'))]({'name':util[_0x0dca('0xa')]('%s-%s',_0x4a9e66,'error'),'filename':filename(_0x4a9e66,_0x0dca('0x11')),'level':_0x0dca('0x11'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3c6ea2){return formatter(_0x4a9e66,_0x3c6ea2);}}),new winston['transports'][(_0x0dca('0x10'))]({'name':util[_0x0dca('0xa')]('%s-%s',_0x4a9e66,'info'),'filename':filename(_0x4a9e66,_0x0dca('0x12')),'level':_0x0dca('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x13f3b7){return formatter(_0x4a9e66,_0x13f3b7);}}),new winston[(_0x0dca('0xf'))]['Console']({'level':process[_0x0dca('0x13')][_0x0dca('0x14')]||debugLevel,'json':![],'formatter':function(_0x13cace){return formatter(_0x4a9e66,_0x13cace);}})]});};
\ No newline at end of file
index 8f5f58e..2cbdd83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7121=['../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','ami','../../services/ami/index.js','agi','email'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x7121,0x13e));var _0x1712=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x7121[_0x3d42d8];return _0x27fc41;};'use strict';var path=require(_0x1712('0x0'));var os=require('os');var config={'apps':[{'name':_0x1712('0x1'),'script':path[_0x1712('0x2')](__dirname,'../../services/express/index.js')},{'name':_0x1712('0x3'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0x4'))},{'name':_0x1712('0x5'),'script':path[_0x1712('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0x1712('0x6'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0x7'))},{'name':_0x1712('0x8'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0x9'))},{'name':_0x1712('0xa'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0xb'))}]};module[_0x1712('0xc')]=config;
\ No newline at end of file
+var _0x293a=['email','../../services/email/index.js','routing','xdr','../../services/xdr/index.js','exports','path','../../services/express/index.js','agi','join','../../services/agi/index.js'];(function(_0x368ad9,_0x12f7f9){var _0x13cf87=function(_0x457b62){while(--_0x457b62){_0x368ad9['push'](_0x368ad9['shift']());}};_0x13cf87(++_0x12f7f9);}(_0x293a,0x103));var _0xa293=function(_0x2dbdf6,_0x40f023){_0x2dbdf6=_0x2dbdf6-0x0;var _0x596b65=_0x293a[_0x2dbdf6];return _0x596b65;};'use strict';var path=require(_0xa293('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path['join'](__dirname,_0xa293('0x1'))},{'name':'ami','script':path['join'](__dirname,'../../services/ami/index.js')},{'name':_0xa293('0x2'),'script':path[_0xa293('0x3')](__dirname,_0xa293('0x4'))},{'name':_0xa293('0x5'),'script':path[_0xa293('0x3')](__dirname,_0xa293('0x6'))},{'name':_0xa293('0x7'),'script':path['join'](__dirname,'../../services/routing/index.js')},{'name':_0xa293('0x8'),'script':path['join'](__dirname,_0xa293('0x9'))}]};module[_0xa293('0xa')]=config;
\ No newline at end of file
index f3c7f60..2dd623d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a4=['stop','then','list','describe','delete','dump','bluebird','connect','disconnect'];(function(_0x5cbf0e,_0x4cd140){var _0x1c76f8=function(_0xcc9be4){while(--_0xcc9be4){_0x5cbf0e['push'](_0x5cbf0e['shift']());}};_0x1c76f8(++_0x4cd140);}(_0x25a4,0x10b));var _0x425a=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x25a4[_0xf71120];return _0xbe2fd3;};'use strict';var pm2=require('pm2');var BPromise=require(_0x425a('0x0'));var config=require('./config');function connect(){return new BPromise(function(_0xa9a81e,_0x1a8347){return pm2[_0x425a('0x1')](function(_0x58bc15){if(_0x58bc15){return _0x1a8347(_0x58bc15);}return _0xa9a81e('connected');});});};exports['start']=function(_0x1cca6f){return connect()['then'](function(){return new BPromise(function(_0xbc45dc,_0x59e086){return pm2['start'](_0x1cca6f,function(_0x5af45e,_0x1998eb){if(_0x5af45e){return _0x59e086(_0x5af45e);}pm2[_0x425a('0x2')]();return _0xbc45dc(_0x1998eb);});});});};exports[_0x425a('0x3')]=function(_0x27504b){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x13f937,_0x3501c4){return pm2['stop'](_0x27504b,function(_0x1dc934,_0x18598f){if(_0x1dc934){return _0x3501c4(_0x1dc934);}pm2[_0x425a('0x2')]();return _0x13f937(_0x18598f);});});});};exports['restart']=function(_0x543329){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x5a0e39,_0x2c989b){return pm2['restart'](_0x543329,function(_0x471d52,_0x462151){if(_0x471d52){return _0x2c989b(_0x471d52);}pm2[_0x425a('0x2')]();return _0x5a0e39(_0x462151);});});});};exports['list']=function(){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x313cc1,_0x417873){return pm2[_0x425a('0x5')](function(_0x5d369a,_0x35876d){if(_0x5d369a){return _0x417873(_0x5d369a);}pm2[_0x425a('0x2')]();return _0x313cc1(_0x35876d);});});});};exports[_0x425a('0x6')]=function(_0x396554){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x387865,_0x5d9cfa){return pm2[_0x425a('0x6')](_0x396554,function(_0x3955be,_0x23bbc0){if(_0x3955be){return _0x5d9cfa(_0x3955be);}pm2['disconnect']();return _0x387865(_0x23bbc0);});});});};exports[_0x425a('0x7')]=function(_0x17a128){return connect()['then'](function(){return new BPromise(function(_0x5b8a06,_0x3af02f){return pm2['delete'](_0x17a128,function(_0x21f6e4,_0x383947){if(_0x21f6e4){return _0x3af02f(_0x21f6e4);}pm2[_0x425a('0x2')]();return _0x5b8a06(_0x383947);});});});};exports[_0x425a('0x8')]=function(){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0xc1081d,_0x10d47b){return pm2[_0x425a('0x8')](function(_0x9178a3){if(_0x9178a3){return _0x10d47b(_0x9178a3);}return _0xc1081d('saved');});});});};
\ No newline at end of file
+var _0x0555=['stop','restart','list','disconnect','describe','delete','dump','pm2','./config','connected','start','then'];(function(_0x599a5d,_0x3ba845){var _0x1f0a92=function(_0x4f1151){while(--_0x4f1151){_0x599a5d['push'](_0x599a5d['shift']());}};_0x1f0a92(++_0x3ba845);}(_0x0555,0x1db));var _0x5055=function(_0x31c332,_0x351040){_0x31c332=_0x31c332-0x0;var _0x8df14c=_0x0555[_0x31c332];return _0x8df14c;};'use strict';var pm2=require(_0x5055('0x0'));var BPromise=require('bluebird');var config=require(_0x5055('0x1'));function connect(){return new BPromise(function(_0x59d037,_0x37d464){return pm2['connect'](function(_0x19705c){if(_0x19705c){return _0x37d464(_0x19705c);}return _0x59d037(_0x5055('0x2'));});});};exports[_0x5055('0x3')]=function(_0x19b757){return connect()[_0x5055('0x4')](function(){return new BPromise(function(_0x5dc36a,_0x219192){return pm2['start'](_0x19b757,function(_0xf2abeb,_0x57335b){if(_0xf2abeb){return _0x219192(_0xf2abeb);}pm2['disconnect']();return _0x5dc36a(_0x57335b);});});});};exports[_0x5055('0x5')]=function(_0x5c48f9){return connect()[_0x5055('0x4')](function(){return new BPromise(function(_0x3afab7,_0x56db2b){return pm2['stop'](_0x5c48f9,function(_0x1c993e,_0xfba305){if(_0x1c993e){return _0x56db2b(_0x1c993e);}pm2['disconnect']();return _0x3afab7(_0xfba305);});});});};exports[_0x5055('0x6')]=function(_0x493fcb){return connect()[_0x5055('0x4')](function(){return new BPromise(function(_0x1a0ad2,_0x163545){return pm2['restart'](_0x493fcb,function(_0x4abb23,_0x2af4f6){if(_0x4abb23){return _0x163545(_0x4abb23);}pm2['disconnect']();return _0x1a0ad2(_0x2af4f6);});});});};exports[_0x5055('0x7')]=function(){return connect()['then'](function(){return new BPromise(function(_0x482a51,_0x2bfb25){return pm2[_0x5055('0x7')](function(_0xf64777,_0x19319a){if(_0xf64777){return _0x2bfb25(_0xf64777);}pm2[_0x5055('0x8')]();return _0x482a51(_0x19319a);});});});};exports[_0x5055('0x9')]=function(_0x3ae177){return connect()[_0x5055('0x4')](function(){return new BPromise(function(_0x26c188,_0x2921d9){return pm2[_0x5055('0x9')](_0x3ae177,function(_0x1e59db,_0x3eaef3){if(_0x1e59db){return _0x2921d9(_0x1e59db);}pm2[_0x5055('0x8')]();return _0x26c188(_0x3eaef3);});});});};exports[_0x5055('0xa')]=function(_0x4ce839){return connect()[_0x5055('0x4')](function(){return new BPromise(function(_0x13fc69,_0xab0396){return pm2['delete'](_0x4ce839,function(_0x290113,_0x3ab517){if(_0x290113){return _0xab0396(_0x290113);}pm2[_0x5055('0x8')]();return _0x13fc69(_0x3ab517);});});});};exports[_0x5055('0xb')]=function(){return connect()[_0x5055('0x4')](function(){return new BPromise(function(_0x4a56bb,_0x1e7b45){return pm2[_0x5055('0xb')](function(_0x2f0a62){if(_0x2f0a62){return _0x1e7b45(_0x2f0a62);}return _0x4a56bb('saved');});});});};
\ No newline at end of file
index e9ef33c..b6cd5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe08=['info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','minutes','length','map'];(function(_0x3b9bbc,_0x446623){var _0x1e5100=function(_0x971d8d){while(--_0x971d8d){_0x3b9bbc['push'](_0x3b9bbc['shift']());}};_0x1e5100(++_0x446623);}(_0xfe08,0x12d));var _0x8fe0=function(_0x25cedc,_0x20c76f){_0x25cedc=_0x25cedc-0x0;var _0xbbfe8f=_0xfe08[_0x25cedc];return _0xbbfe8f;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0x8fe0('0x0'));var util=require(_0x8fe0('0x1'));var config=require(_0x8fe0('0x2'));var db=require(_0x8fe0('0x3'))['db'];var logger=require(_0x8fe0('0x4'))(_0x8fe0('0x5'));config[_0x8fe0('0x6')]=_['defaults'](config[_0x8fe0('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x8fe0('0x7'))(new Redis(config['redis']));function closeInteractions(){var _0x3485a3=0x0;var _0x748bac=[];return db[_0x8fe0('0x8')][_0x8fe0('0x9')]({'raw':!![],'attributes':['id',_0x8fe0('0xa')],'where':{'id':0x1}})[_0x8fe0('0xb')](function(_0x22a1a3){_0x3485a3=_0x22a1a3['chatTimeout'];if(_0x3485a3){return db[_0x8fe0('0xc')][_0x8fe0('0xd')]({'raw':!![],'attributes':['id',_0x8fe0('0xe')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x22a1a3[_0x8fe0('0xa')],_0x8fe0('0xf'))}}});}else{return[];}})[_0x8fe0('0xb')](function(_0x431805){if(_0x431805&&_0x431805[_0x8fe0('0x10')]){_0x748bac=_[_0x8fe0('0x11')](_0x431805||[],'id');logger[_0x8fe0('0x12')](_0x8fe0('0x13'),_0x748bac[_0x8fe0('0x14')]());return db[_0x8fe0('0xc')][_0x8fe0('0x15')]({'closeReason':_0x8fe0('0x16'),'disposition':_0x8fe0('0x17'),'closed':!![],'closedAt':moment()[_0x8fe0('0x18')](_0x8fe0('0x19'))},{'where':{'id':_0x748bac}});}})[_0x8fe0('0xb')](function(){if(_0x748bac&&_0x748bac['length']){logger['info'](_0x8fe0('0x1a'),_0x748bac[_0x8fe0('0x14')]());for(var _0x333723=0x0;_0x333723<_0x748bac[_0x8fe0('0x10')];_0x333723++){io[_0x8fe0('0x1b')]('chatInteraction:update',{'id':_0x748bac[_0x333723],'closed':!![]});}}})[_0x8fe0('0x1c')](function(_0x445cb8){logger['error']('[CHAT]\x20Error\x20closing\x20interactions',_0x445cb8?util['inspect'](_0x445cb8,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x32c7=['ChatInteraction','findAll','subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','timeout','format','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','start','lodash','util','../../config/environment','../../mysqldb','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x32c7,0xa1));var _0x732c=function(_0x214b82,_0x784f37){_0x214b82=_0x214b82-0x0;var _0x19deb8=_0x32c7[_0x214b82];return _0x19deb8;};'use strict';var _=require(_0x732c('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0x732c('0x1'));var config=require(_0x732c('0x2'));var db=require(_0x732c('0x3'))['db'];var logger=require('../logger')(_0x732c('0x4'));config[_0x732c('0x5')]=_[_0x732c('0x6')](config['redis'],{'host':_0x732c('0x7'),'port':0x18eb});var io=require(_0x732c('0x8'))(new Redis(config['redis']));function closeInteractions(){var _0x2163de=0x0;var _0x124c4e=[];return db[_0x732c('0x9')][_0x732c('0xa')]({'raw':!![],'attributes':['id',_0x732c('0xb')],'where':{'id':0x1}})[_0x732c('0xc')](function(_0x26ff17){_0x2163de=_0x26ff17['chatTimeout'];if(_0x2163de){return db[_0x732c('0xd')][_0x732c('0xe')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x732c('0xf')](_0x26ff17[_0x732c('0xb')],_0x732c('0x10'))}}});}else{return[];}})['then'](function(_0x3ce8b1){if(_0x3ce8b1&&_0x3ce8b1[_0x732c('0x11')]){_0x124c4e=_[_0x732c('0x12')](_0x3ce8b1||[],'id');logger[_0x732c('0x13')](_0x732c('0x14'),_0x124c4e[_0x732c('0x15')]());return db['ChatInteraction']['update']({'closeReason':'system','disposition':_0x732c('0x16'),'closed':!![],'closedAt':moment()[_0x732c('0x17')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x124c4e}});}})[_0x732c('0xc')](function(){if(_0x124c4e&&_0x124c4e[_0x732c('0x11')]){logger[_0x732c('0x13')](_0x732c('0x18'),_0x124c4e[_0x732c('0x15')]());for(var _0x195c0e=0x0;_0x195c0e<_0x124c4e[_0x732c('0x11')];_0x195c0e++){io[_0x732c('0x19')](_0x732c('0x1a'),{'id':_0x124c4e[_0x195c0e],'closed':!![]});}}})[_0x732c('0x1b')](function(_0x59da08){logger['error']('[CHAT]\x20Error\x20closing\x20interactions',_0x59da08?util['inspect'](_0x59da08,{'showHidden':![],'depth':null}):'');});}exports[_0x732c('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 8162538..5b45472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe668=['active','endAt','update','update\x20cron','stop\x20cron','util','path','lodash','cron-job-manager','jayson/promise','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','existsSync','status','Sent','text','stringify','attachments','message','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','info','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','findAll','MailServerOut','keys','map','keyBy','difference','length','toString','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','isBetween','startAt','add','start','add\x20cron','stop'];(function(_0xaf2c88,_0x4bd7c4){var _0x80d9e=function(_0x4a7fe0){while(--_0x4a7fe0){_0xaf2c88['push'](_0xaf2c88['shift']());}};_0x80d9e(++_0x4bd7c4);}(_0xe668,0x1b8));var _0x8e66=function(_0xf30651,_0x964c8){_0xf30651=_0xf30651-0x0;var _0x5382a0=_0xe668[_0xf30651];return _0x5382a0;};'use strict';var fs=require('fs');var util=require(_0x8e66('0x0'));var path=require(_0x8e66('0x1'));var _=require(_0x8e66('0x2'));var moment=require('moment');var CronJobManager=require(_0x8e66('0x3'));var jayson=require(_0x8e66('0x4'));var BPromise=require('bluebird');var logger=require(_0x8e66('0x5'))(_0x8e66('0x6'));var db=require(_0x8e66('0x7'))['db'];var analyticCustomReportController=require(_0x8e66('0x8'));var analyticDefaultReportController=require(_0x8e66('0x9'));var client=jayson['client'][_0x8e66('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2141eb,_0x53fee3){return function(){logger['info'](_0x8e66('0xb'),_0x2141eb[_0x8e66('0xc')]);var _0x545bc8=!![];var _0x25ef5f={'tls':{'rejectUnauthorized':![]}};if(_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0xf')]){_0x25ef5f[_0x8e66('0xf')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0xf')];}else{_0x25ef5f[_0x8e66('0x10')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')]['host'];_0x25ef5f[_0x8e66('0x11')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x11')];_0x25ef5f[_0x8e66('0x12')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x12')];}if(_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x13')]){_0x25ef5f[_0x8e66('0x14')]={'user':_0x2141eb[_0x8e66('0xd')]['Smtp'][_0x8e66('0x15')],'pass':_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x16')]};}var _0x4e09e3={'account':_0x25ef5f,'message':{'from':util[_0x8e66('0x17')]('\x22%s\x22\x20<%s>',_0x2141eb[_0x8e66('0xd')][_0x8e66('0x18')],_0x2141eb[_0x8e66('0xd')][_0x8e66('0xc')]||_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x15')]),'to':_0x2141eb[_0x8e66('0xc')],'cc':_0x2141eb['cc'],'bcc':_0x2141eb[_0x8e66('0x19')],'subject':util[_0x8e66('0x17')](_0x8e66('0x1a'),_0x53fee3[_0x8e66('0x18')],_0x2141eb[_0x8e66('0x1b')],_0x2141eb[_0x8e66('0x1c')])}};var _0x352bfc=path[_0x8e66('0x1d')](__dirname,_0x8e66('0x1e'));var _0xa2bf84=_0x53fee3[_0x8e66('0x1f')];var _0x2fce14=util[_0x8e66('0x17')]('%s.%s',path[_0x8e66('0x20')](_0x53fee3[_0x8e66('0x1f')],path[_0x8e66('0x21')](_0x53fee3['savename'])),'zip');var _0x1a03c5=path['join'](_0x352bfc,_0xa2bf84);var _0x4b08d0=path['join'](_0x352bfc,_0x2fce14);if(fs[_0x8e66('0x22')](_0x1a03c5)){_0x53fee3[_0x8e66('0x23')]=_0x8e66('0x24');_0x4e09e3['message']['attachments']=[{'filename':_0xa2bf84,'path':_0x1a03c5}];_0x4e09e3['message'][_0x8e66('0x25')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x8e66('0x26')](_0x53fee3,null,0x2));}else if(fs[_0x8e66('0x22')](_0x4b08d0)){_0x53fee3[_0x8e66('0x23')]='Sent';_0x4e09e3['message'][_0x8e66('0x27')]=[{'filename':_0x2fce14,'path':_0x4b08d0}];}else{_0x4e09e3[_0x8e66('0x28')][_0x8e66('0x25')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x2141eb['sendIfEmpty']){_0x545bc8=![];logger['info'](_0x8e66('0x29'));}}if(_0x545bc8){return client['request'](_0x8e66('0x2a'),_0x4e09e3)[_0x8e66('0x2b')](function(_0x1f5cc6){if(_0x1f5cc6[_0x8e66('0x2c')]){return logger[_0x8e66('0x2c')](_0x8e66('0x2d'),JSON[_0x8e66('0x26')](_0x1f5cc6));}return logger[_0x8e66('0x2e')](_0x8e66('0x2f'));})[_0x8e66('0x30')](function(_0x5470ff){return logger[_0x8e66('0x2c')]('error\x20mail',JSON[_0x8e66('0x26')](_0x5470ff));});}};}function handleError(){return function(_0x1501f4){return logger[_0x8e66('0x2c')](JSON[_0x8e66('0x26')](_0x1501f4));};}function handleResult(_0x3eecaa){return function(_0x1a8348){logger['info']('data',JSON[_0x8e66('0x26')](_0x1a8348));if(_0x3eecaa[_0x8e66('0xd')]&&_0x3eecaa['MailAccount'][_0x8e66('0xe')]&&!_[_0x8e66('0x31')](_0x3eecaa['email'])){setTimeout(handleSendEmail(_0x3eecaa,_0x1a8348),0x3c*0x3e8);}};}function handleJob(_0xab9da5){return function(){try{if(_['isNil'](_0xab9da5[_0x8e66('0x1b')])){return logger['info'](_0x8e66('0x32'));}if(_[_0x8e66('0x31')](_0xab9da5[_0x8e66('0x1c')])){return logger[_0x8e66('0x2e')](_0x8e66('0x33'));}var _0x1a85d6={'startDate':moment()['subtract'](_0xab9da5[_0x8e66('0x1b')],_0xab9da5[_0x8e66('0x1c')])[_0x8e66('0x17')](_0x8e66('0x34')),'endDate':moment()[_0x8e66('0x17')](_0x8e66('0x34')),'type':'scheduled','output':_0xab9da5['output'],'name':_0xab9da5[_0x8e66('0x18')]};if(!_['isNil'](_0xab9da5[_0x8e66('0x35')])){logger['info'](_0x8e66('0x36'),_0xab9da5[_0x8e66('0x35')]);return analyticDefaultReportController['runReport']({'id':_0xab9da5[_0x8e66('0x35')]},_0x1a85d6)[_0x8e66('0x2b')](handleResult(_0xab9da5))[_0x8e66('0x30')](handleError());}if(!_[_0x8e66('0x31')](_0xab9da5[_0x8e66('0x37')])){logger[_0x8e66('0x2e')](_0x8e66('0x38'),_0xab9da5[_0x8e66('0x37')]);return analyticCustomReportController[_0x8e66('0x39')]({'id':_0xab9da5[_0x8e66('0x37')]},_0x1a85d6)[_0x8e66('0x2b')](handleResult(_0xab9da5))[_0x8e66('0x30')](handleError());}}catch(_0x50fe4d){logger[_0x8e66('0x2c')](JSON['stringify'](_0x50fe4d));}return logger['info'](_0x8e66('0x3a'));};}function getJobs(_0x242887){var _0x598fc2={};if(_0x242887){_0x598fc2['id']=_0x242887;}return db['Schedule'][_0x8e66('0x3b')]({'where':_0x598fc2,'include':[{'model':db['MailAccount'],'attributes':['id',_0x8e66('0x18'),_0x8e66('0xc')],'include':[{'model':db[_0x8e66('0x3c')],'as':_0x8e66('0xe')}]}]})[_0x8e66('0x2b')](function(_0xba2e07){var _0x170537=_[_0x8e66('0x3d')](manager['jobs']);var _0x3dd71e=_[_0x8e66('0x3e')](_0xba2e07,function(_0x5394cc){return _0x5394cc['id']['toString']();});var _0x36db6c=_[_0x8e66('0x3f')](_0xba2e07,function(_0x26549b){return _0x26549b['id']['toString']();});var _0x27c9a9=_0x242887?_0x3dd71e:_['difference'](_0x3dd71e,_0x170537);var _0x37e5d1=_['intersection'](_0x3dd71e,_0x170537);var _0x16ac07=_[_0x8e66('0x40')](_0x170537,_0x3dd71e);var _0x206863;var _0x33d926;for(_0x206863=0x0;_0x206863<_0x16ac07[_0x8e66('0x41')]&&!_0x242887;_0x206863+=0x1){_0x33d926=_0x16ac07[_0x206863][_0x8e66('0x42')]();if(manager[_0x8e66('0x43')](_0x33d926)){manager['stop'](_0x33d926);manager[_0x8e66('0x44')](_0x33d926);logger['info'](_0x8e66('0x45'),_0x33d926);}}logger['info'](_0x8e66('0x46'),JSON[_0x8e66('0x26')](_0x27c9a9));for(_0x206863=0x0;_0x206863<_0x27c9a9[_0x8e66('0x41')];_0x206863+=0x1){_0x33d926=_0x27c9a9[_0x206863][_0x8e66('0x42')]();logger[_0x8e66('0x2e')](_0x8e66('0x47'),_0x33d926);if(_0x242887){logger[_0x8e66('0x2e')](_0x8e66('0x48'),_0x242887);logger[_0x8e66('0x2e')](JSON['stringify'](_0x36db6c[_0x33d926]));BPromise[_0x8e66('0x49')]()[_0x8e66('0x2b')](handleJob(_0x36db6c[_0x33d926]));logger[_0x8e66('0x2e')](_0x8e66('0x4a'),_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}else if(_0x36db6c[_0x33d926]['cron']&&_0x36db6c[_0x33d926]['active']&&moment()[_0x8e66('0x4c')](_0x36db6c[_0x33d926][_0x8e66('0x4d')],_0x36db6c[_0x33d926]['endAt'])){manager[_0x8e66('0x4e')](_0x33d926,_0x36db6c[_0x33d926]['cron'],handleJob(_0x36db6c[_0x33d926]));manager[_0x8e66('0x4f')](_0x33d926);logger[_0x8e66('0x2e')](_0x8e66('0x50'),_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}else if(manager[_0x8e66('0x43')](_0x33d926)){manager[_0x8e66('0x51')](_0x33d926);manager[_0x8e66('0x44')](_0x33d926);logger[_0x8e66('0x2e')]('stop\x20cron',_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926]['cron']);}}for(_0x206863=0x0,_0x33d926;_0x206863<_0x37e5d1[_0x8e66('0x41')]&&!_0x242887;_0x206863+=0x1){_0x33d926=_0x37e5d1[_0x206863][_0x8e66('0x42')]();if(manager[_0x8e66('0x43')](_0x33d926)){if(_0x36db6c[_0x33d926][_0x8e66('0x4b')]&&_0x36db6c[_0x33d926][_0x8e66('0x52')]&&moment()[_0x8e66('0x4c')](_0x36db6c[_0x33d926]['startAt'],_0x36db6c[_0x33d926][_0x8e66('0x53')])){manager[_0x8e66('0x54')](_0x33d926,_0x36db6c[_0x33d926][_0x8e66('0x4b')],handleJob(_0x36db6c[_0x33d926]));logger[_0x8e66('0x2e')](_0x8e66('0x55'),_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}else{manager['stop'](_0x33d926);manager[_0x8e66('0x44')](_0x33d926);logger[_0x8e66('0x2e')](_0x8e66('0x56'),_0x36db6c[_0x33d926]['name'],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}}}})[_0x8e66('0x30')](function(_0x274c09){logger[_0x8e66('0x2c')](JSON[_0x8e66('0x26')](_0x274c09));});}exports['run']=function(_0x2fd3bc){return getJobs(_0x2fd3bc);};exports[_0x8e66('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x3215=['catch','error','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','Schedule','keys','jobs','toString','keyBy','difference','intersection','stop','toRun','length','index','resolve','run\x20job','cron','isBetween','startAt','endAt','add','start','add\x20cron','deleteJob','exists','active','update','update\x20cron','stop\x20cron','util','path','moment','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','service','Smtp','host','port','secure','authentication','user','pass','format','\x22%s\x22\x20<%s>','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','savename','%s.%s','extname','join','status','Sent','message','attachments','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error\x20mail'];(function(_0x3a2442,_0x5e33ac){var _0x40103e=function(_0x94ee33){while(--_0x94ee33){_0x3a2442['push'](_0x3a2442['shift']());}};_0x40103e(++_0x5e33ac);}(_0x3215,0x120));var _0x5321=function(_0x1e163d,_0x17746a){_0x1e163d=_0x1e163d-0x0;var _0x5992ab=_0x3215[_0x1e163d];return _0x5992ab;};'use strict';var fs=require('fs');var util=require(_0x5321('0x0'));var path=require(_0x5321('0x1'));var _=require('lodash');var moment=require(_0x5321('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require('../logger')(_0x5321('0x3'));var db=require(_0x5321('0x4'))['db'];var analyticCustomReportController=require(_0x5321('0x5'));var analyticDefaultReportController=require(_0x5321('0x6'));var client=jayson['client'][_0x5321('0x7')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x21eac4,_0x410ba8){return function(){logger[_0x5321('0x8')](_0x5321('0x9'),_0x21eac4[_0x5321('0xa')]);var _0x8d1b96=!![];var _0x4e01b4={'tls':{'rejectUnauthorized':![]}};if(_0x21eac4[_0x5321('0xb')]['Smtp'][_0x5321('0xc')]){_0x4e01b4[_0x5321('0xc')]=_0x21eac4[_0x5321('0xb')][_0x5321('0xd')]['service'];}else{_0x4e01b4[_0x5321('0xe')]=_0x21eac4[_0x5321('0xb')][_0x5321('0xd')][_0x5321('0xe')];_0x4e01b4['port']=_0x21eac4[_0x5321('0xb')][_0x5321('0xd')][_0x5321('0xf')];_0x4e01b4[_0x5321('0x10')]=_0x21eac4[_0x5321('0xb')][_0x5321('0xd')]['secure'];}if(_0x21eac4[_0x5321('0xb')][_0x5321('0xd')][_0x5321('0x11')]){_0x4e01b4['auth']={'user':_0x21eac4[_0x5321('0xb')][_0x5321('0xd')][_0x5321('0x12')],'pass':_0x21eac4[_0x5321('0xb')][_0x5321('0xd')][_0x5321('0x13')]};}var _0x164684={'account':_0x4e01b4,'message':{'from':util[_0x5321('0x14')](_0x5321('0x15'),_0x21eac4[_0x5321('0xb')][_0x5321('0x16')],_0x21eac4[_0x5321('0xb')]['email']||_0x21eac4[_0x5321('0xb')][_0x5321('0xd')][_0x5321('0x12')]),'to':_0x21eac4[_0x5321('0xa')],'cc':_0x21eac4['cc'],'bcc':_0x21eac4[_0x5321('0x17')],'subject':util['format'](_0x5321('0x18'),_0x410ba8[_0x5321('0x16')],_0x21eac4[_0x5321('0x19')],_0x21eac4[_0x5321('0x1a')])}};var _0x5e3398=path['join'](__dirname,_0x5321('0x1b'));var _0x3f57a1=_0x410ba8[_0x5321('0x1c')];var _0x434046=util['format'](_0x5321('0x1d'),path['basename'](_0x410ba8['savename'],path[_0x5321('0x1e')](_0x410ba8[_0x5321('0x1c')])),'zip');var _0xe6828e=path[_0x5321('0x1f')](_0x5e3398,_0x3f57a1);var _0x3c3ee8=path['join'](_0x5e3398,_0x434046);if(fs['existsSync'](_0xe6828e)){_0x410ba8[_0x5321('0x20')]=_0x5321('0x21');_0x164684[_0x5321('0x22')][_0x5321('0x23')]=[{'filename':_0x3f57a1,'path':_0xe6828e}];_0x164684['message']['text']=util[_0x5321('0x14')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x5321('0x24')](_0x410ba8,null,0x2));}else if(fs['existsSync'](_0x3c3ee8)){_0x410ba8[_0x5321('0x20')]=_0x5321('0x21');_0x164684[_0x5321('0x22')]['attachments']=[{'filename':_0x434046,'path':_0x3c3ee8}];}else{_0x164684[_0x5321('0x22')]['text']=_0x5321('0x25');if(!_0x21eac4[_0x5321('0x26')]){_0x8d1b96=![];logger['info'](_0x5321('0x27'));}}if(_0x8d1b96){return client[_0x5321('0x28')](_0x5321('0x29'),_0x164684)[_0x5321('0x2a')](function(_0x4aa242){if(_0x4aa242['error']){return logger['error'](_0x5321('0x2b'),JSON[_0x5321('0x24')](_0x4aa242));}return logger[_0x5321('0x8')]('email\x20sent');})[_0x5321('0x2c')](function(_0x1271ae){return logger[_0x5321('0x2d')]('error\x20mail',JSON[_0x5321('0x24')](_0x1271ae));});}};}function handleError(){return function(_0xceef7a){return logger[_0x5321('0x2d')](JSON[_0x5321('0x24')](_0xceef7a));};}function handleResult(_0x4493b7){return function(_0x3bc170){logger[_0x5321('0x8')](_0x5321('0x2e'),JSON['stringify'](_0x3bc170));if(_0x4493b7[_0x5321('0xb')]&&_0x4493b7[_0x5321('0xb')][_0x5321('0xd')]&&!_[_0x5321('0x2f')](_0x4493b7['email'])){setTimeout(handleSendEmail(_0x4493b7,_0x3bc170),0x3c*0x3e8);}};}function handleJob(_0x317449){return function(){try{if(_[_0x5321('0x2f')](_0x317449[_0x5321('0x19')])){return logger[_0x5321('0x8')](_0x5321('0x30'));}if(_['isNil'](_0x317449['subtractUnit'])){return logger[_0x5321('0x8')]('subtractUnit\x20null\x20or\x20undefined');}var _0x2c2e0c={'startDate':moment()[_0x5321('0x31')](_0x317449['subtractNumber'],_0x317449[_0x5321('0x1a')])[_0x5321('0x14')](_0x5321('0x32')),'endDate':moment()[_0x5321('0x14')](_0x5321('0x32')),'type':_0x5321('0x33'),'output':_0x317449['output'],'name':_0x317449[_0x5321('0x16')]};if(!_[_0x5321('0x2f')](_0x317449['DefaultReportId'])){logger[_0x5321('0x8')](_0x5321('0x34'),_0x317449[_0x5321('0x35')]);return analyticDefaultReportController[_0x5321('0x36')]({'id':_0x317449['DefaultReportId']},_0x2c2e0c)['then'](handleResult(_0x317449))[_0x5321('0x2c')](handleError());}if(!_[_0x5321('0x2f')](_0x317449[_0x5321('0x37')])){logger[_0x5321('0x8')](_0x5321('0x38'),_0x317449[_0x5321('0x37')]);return analyticCustomReportController['runReport']({'id':_0x317449[_0x5321('0x37')]},_0x2c2e0c)[_0x5321('0x2a')](handleResult(_0x317449))[_0x5321('0x2c')](handleError());}}catch(_0x59dbe9){logger[_0x5321('0x2d')](JSON['stringify'](_0x59dbe9));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x38a1d4){var _0x3fb96e={};if(_0x38a1d4){_0x3fb96e['id']=_0x38a1d4;}return db[_0x5321('0x39')]['findAll']({'where':_0x3fb96e,'include':[{'model':db[_0x5321('0xb')],'attributes':['id','name',_0x5321('0xa')],'include':[{'model':db['MailServerOut'],'as':_0x5321('0xd')}]}]})[_0x5321('0x2a')](function(_0x266ff8){var _0x45d92e=_[_0x5321('0x3a')](manager[_0x5321('0x3b')]);var _0x34687e=_['map'](_0x266ff8,function(_0x75ee1){return _0x75ee1['id'][_0x5321('0x3c')]();});var _0x1ced54=_[_0x5321('0x3d')](_0x266ff8,function(_0x105df6){return _0x105df6['id'][_0x5321('0x3c')]();});var _0x333b71=_0x38a1d4?_0x34687e:_[_0x5321('0x3e')](_0x34687e,_0x45d92e);var _0x2825c8=_[_0x5321('0x3f')](_0x34687e,_0x45d92e);var _0xcb569=_[_0x5321('0x3e')](_0x45d92e,_0x34687e);var _0x470ab7;var _0x569c62;for(_0x470ab7=0x0;_0x470ab7<_0xcb569['length']&&!_0x38a1d4;_0x470ab7+=0x1){_0x569c62=_0xcb569[_0x470ab7]['toString']();if(manager['exists'](_0x569c62)){manager[_0x5321('0x40')](_0x569c62);manager['deleteJob'](_0x569c62);logger[_0x5321('0x8')]('delete\x20cron',_0x569c62);}}logger['info'](_0x5321('0x41'),JSON[_0x5321('0x24')](_0x333b71));for(_0x470ab7=0x0;_0x470ab7<_0x333b71[_0x5321('0x42')];_0x470ab7+=0x1){_0x569c62=_0x333b71[_0x470ab7][_0x5321('0x3c')]();logger[_0x5321('0x8')](_0x5321('0x43'),_0x569c62);if(_0x38a1d4){logger['info']('my\x20id',_0x38a1d4);logger['info'](JSON[_0x5321('0x24')](_0x1ced54[_0x569c62]));BPromise[_0x5321('0x44')]()[_0x5321('0x2a')](handleJob(_0x1ced54[_0x569c62]));logger[_0x5321('0x8')](_0x5321('0x45'),_0x1ced54[_0x569c62][_0x5321('0x16')],_0x1ced54[_0x569c62][_0x5321('0x46')]);}else if(_0x1ced54[_0x569c62][_0x5321('0x46')]&&_0x1ced54[_0x569c62]['active']&&moment()[_0x5321('0x47')](_0x1ced54[_0x569c62][_0x5321('0x48')],_0x1ced54[_0x569c62][_0x5321('0x49')])){manager[_0x5321('0x4a')](_0x569c62,_0x1ced54[_0x569c62][_0x5321('0x46')],handleJob(_0x1ced54[_0x569c62]));manager[_0x5321('0x4b')](_0x569c62);logger[_0x5321('0x8')](_0x5321('0x4c'),_0x1ced54[_0x569c62][_0x5321('0x16')],_0x1ced54[_0x569c62][_0x5321('0x46')]);}else if(manager['exists'](_0x569c62)){manager['stop'](_0x569c62);manager[_0x5321('0x4d')](_0x569c62);logger[_0x5321('0x8')]('stop\x20cron',_0x1ced54[_0x569c62][_0x5321('0x16')],_0x1ced54[_0x569c62][_0x5321('0x46')]);}}for(_0x470ab7=0x0,_0x569c62;_0x470ab7<_0x2825c8['length']&&!_0x38a1d4;_0x470ab7+=0x1){_0x569c62=_0x2825c8[_0x470ab7][_0x5321('0x3c')]();if(manager[_0x5321('0x4e')](_0x569c62)){if(_0x1ced54[_0x569c62][_0x5321('0x46')]&&_0x1ced54[_0x569c62][_0x5321('0x4f')]&&moment()[_0x5321('0x47')](_0x1ced54[_0x569c62][_0x5321('0x48')],_0x1ced54[_0x569c62][_0x5321('0x49')])){manager[_0x5321('0x50')](_0x569c62,_0x1ced54[_0x569c62][_0x5321('0x46')],handleJob(_0x1ced54[_0x569c62]));logger[_0x5321('0x8')](_0x5321('0x51'),_0x1ced54[_0x569c62][_0x5321('0x16')],_0x1ced54[_0x569c62][_0x5321('0x46')]);}else{manager[_0x5321('0x40')](_0x569c62);manager['deleteJob'](_0x569c62);logger['info'](_0x5321('0x52'),_0x1ced54[_0x569c62]['name'],_0x1ced54[_0x569c62]['cron']);}}}})['catch'](function(_0x34fd33){logger[_0x5321('0x2d')](JSON[_0x5321('0x24')](_0x34fd33));});}exports['run']=function(_0x22805a){return getJobs(_0x22805a);};exports[_0x5321('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index f4ccbf9..c46c92a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e8=['Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','Mixed','catch','name','error','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','all','SequelizeValidationError','start','lodash','request-promise','util','bluebird','../../config/logger','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','TranscriptFileUri','format','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','Sequelize','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','resolve','language','bucket'];(function(_0x4030de,_0x938bb){var _0x522221=function(_0x50f0e2){while(--_0x50f0e2){_0x4030de['push'](_0x4030de['shift']());}};_0x522221(++_0x938bb);}(_0xa1e8,0x1af));var _0x8a1e=function(_0x599be0,_0x14b081){_0x599be0=_0x599be0-0x0;var _0x185da6=_0xa1e8[_0x599be0];return _0x185da6;};var _=require(_0x8a1e('0x0'));var AWS=require('aws-sdk');var rp=require(_0x8a1e('0x1'));var util=require(_0x8a1e('0x2'));var BPromise=require(_0x8a1e('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x8a1e('0x4'))('transcribe');function getTranscriptionJob(_0x341cb0,_0x4f642b,_0x20fe9d,_0x5b46f1){return new Promise(function(_0x5730e0,_0x2ddb27){var _0x1463b3=new AWS[(_0x8a1e('0x5'))]({'accessKeyId':_0x4f642b,'secretAccessKey':_0x341cb0,'region':_0x20fe9d});_0x1463b3[_0x8a1e('0x6')]({'TranscriptionJobName':_0x5b46f1},function(_0x483e06,_0x14f902){if(_0x483e06){return _0x2ddb27(_0x483e06);}else{return _0x5730e0(_0x14f902);}});});}function sentiment(_0x365845,_0x22d916,_0x537de3,_0x31afa4,_0x5d3318){return new Promise(function(_0x413ef7,_0xe9a595){var _0x5aa5e5=new AWS['Comprehend']({'accessKeyId':_0x22d916,'secretAccessKey':_0x365845,'region':_0x537de3});_0x5aa5e5[_0x8a1e('0x7')]({'Text':_0x31afa4,'LanguageCode':_0x5d3318[_0x8a1e('0x8')](0x0,0x2)},function(_0x2c092f,_0x20a2ec){if(_0x2c092f){return _0xe9a595(_0x2c092f);}else{return _0x413ef7(_0x20a2ec);}});});}function checkTranscribeJob(_0xd09d9b,_0x8aebf4,_0x22a562){var _0x4d8829;return new BPromise(function(_0x25d23d,_0x131ba6){logger[_0x8a1e('0x9')](util['format'](_0x8a1e('0xa'),_0xd09d9b['id'],_0xd09d9b[_0x8a1e('0xb')]));return getTranscriptionJob(_0x22a562[_0x8a1e('0xc')],_0x22a562['data2'],_0x8aebf4[_0x8a1e('0xd')],_0xd09d9b[_0x8a1e('0xb')])[_0x8a1e('0xe')](function(_0x4a31d0){logger['info'](util['format'](_0x8a1e('0xf'),_0xd09d9b['id'],_0xd09d9b[_0x8a1e('0xb')],_0x4a31d0['TranscriptionJob'][_0x8a1e('0x10')]));if(!_0xd09d9b[_0x8a1e('0x11')]){switch(_0x4a31d0[_0x8a1e('0x12')][_0x8a1e('0x10')]){case _0x8a1e('0x13'):var _0x13670e={'transcribeStatus':_0x4a31d0['TranscriptionJob'][_0x8a1e('0x10')],'fileUri':_0x4a31d0[_0x8a1e('0x12')]['Transcript'][_0x8a1e('0x14')]};logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x16'),_0xd09d9b['id']));return rp({'uri':_0x4a31d0['TranscriptionJob']['Transcript'][_0x8a1e('0x14')],'json':!![]})[_0x8a1e('0xe')](function(_0x2b2334){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x17'),_0xd09d9b['id']));if(_0x2b2334&&_0x2b2334[_0x8a1e('0x18')]&&_0x2b2334[_0x8a1e('0x18')][_0x8a1e('0x19')]&&_0x2b2334[_0x8a1e('0x18')][_0x8a1e('0x19')]['length']){_0x13670e[_0x8a1e('0x11')]='';for(var _0x2e0798=0x0;_0x2e0798<_0x2b2334[_0x8a1e('0x18')]['transcripts'][_0x8a1e('0x1a')];_0x2e0798++){_0x13670e[_0x8a1e('0x11')]+=_0x2b2334[_0x8a1e('0x18')][_0x8a1e('0x19')][_0x2e0798]['transcript']+'';}}return _0xd09d9b[_0x8a1e('0x1b')](_0x13670e);})[_0x8a1e('0xe')](function(){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x1c'),_0xd09d9b['id']));if(!_0xd09d9b[_0x8a1e('0x1d')]){throw new db['Sequelize'][(_0x8a1e('0x1e'))](_0x8a1e('0x1f'));}if(!_0x8aebf4[_0x8a1e('0x20')]||!_0x8aebf4[_0x8a1e('0x21')]||!_0x8aebf4[_0x8a1e('0x22')]||!_0x8aebf4['language']||!_0x8aebf4['bucket']){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x13670e[_0x8a1e('0x11')]){throw new Error(_0x8a1e('0x24'));}if(_0x8aebf4[_0x8a1e('0x21')]===_0x22a562['id']){return _0x22a562;}else{return db[_0x8a1e('0x25')][_0x8a1e('0x26')]({'where':{'id':_settings[_0x8a1e('0x21')]}});}})[_0x8a1e('0xe')](function(_0x5d08e0){if(!_0x5d08e0){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5d08e0['data1']||!_0x5d08e0['data2']){throw new db['Sequelize'][(_0x8a1e('0x1e'))](_0x8a1e('0x27'));}_0x4d8829=_0x5d08e0;logger[_0x8a1e('0x9')](util['format'](_0x8a1e('0x28'),_0xd09d9b['id']));return sentiment(_0x4d8829[_0x8a1e('0xc')],_0x4d8829[_0x8a1e('0x29')],_0x8aebf4[_0x8a1e('0x22')],_0x13670e['fileText'],_0x8aebf4['language']);})[_0x8a1e('0xe')](function(_0x5f4d59){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x2a'),_0xd09d9b['id']));return _0xd09d9b[_0x8a1e('0x1b')]({'sentiment':_0x5f4d59[_0x8a1e('0x2b')],'sPositive':_0x5f4d59[_0x8a1e('0x2c')][_0x8a1e('0x2d')],'sNegative':_0x5f4d59['SentimentScore'][_0x8a1e('0x2e')],'sMixed':_0x5f4d59[_0x8a1e('0x2c')]['Mixed'],'sNeutral':_0x5f4d59[_0x8a1e('0x2c')][_0x8a1e('0x2f')]});})[_0x8a1e('0xe')](function(){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x1c'),_0xd09d9b['id']));_0x25d23d();});case'FAILED':return _0xd09d9b['update']({'transcribeStatus':_0x8a1e('0x30'),'failureReason':_0x4a31d0[_0x8a1e('0x12')]['FailureReason']})['then'](function(){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xd09d9b['id']));_0x25d23d();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0xd09d9b['id']));break;}}else{return BPromise[_0x8a1e('0x31')]()[_0x8a1e('0xe')](function(){if(!_0xd09d9b[_0x8a1e('0x1d')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x8aebf4[_0x8a1e('0x20')]||!_0x8aebf4[_0x8a1e('0x21')]||!_0x8aebf4[_0x8a1e('0x22')]||!_0x8aebf4[_0x8a1e('0x32')]||!_0x8aebf4[_0x8a1e('0x33')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x34'));}if(!_0xd09d9b[_0x8a1e('0x11')]){throw new Error(_0x8a1e('0x24'));}if(_0x8aebf4[_0x8a1e('0x21')]===_0x22a562['id']){return _0x22a562;}else{return db[_0x8a1e('0x25')][_0x8a1e('0x26')]({'where':{'id':_settings[_0x8a1e('0x21')]}});}})['then'](function(_0x2c728a){if(!_0x2c728a){throw new db[(_0x8a1e('0x23'))]['ValidationError'](_0x8a1e('0x35'));}if(!_0x2c728a[_0x8a1e('0xc')]||!_0x2c728a[_0x8a1e('0x29')]){throw new db[(_0x8a1e('0x23'))]['ValidationError'](_0x8a1e('0x27'));}_0x4d8829=_0x2c728a;logger[_0x8a1e('0x9')](util['format'](_0x8a1e('0x28'),_0xd09d9b['id']));return sentiment(_0x4d8829[_0x8a1e('0xc')],_0x4d8829['data2'],_0x8aebf4[_0x8a1e('0x22')],_0xd09d9b[_0x8a1e('0x11')],_0x8aebf4[_0x8a1e('0x32')]);})[_0x8a1e('0xe')](function(_0x8e8deb){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x2a'),_0xd09d9b['id']));return _0xd09d9b[_0x8a1e('0x1b')]({'sentiment':_0x8e8deb[_0x8a1e('0x2b')],'sPositive':_0x8e8deb['SentimentScore'][_0x8a1e('0x2d')],'sNegative':_0x8e8deb['SentimentScore']['Negative'],'sMixed':_0x8e8deb[_0x8a1e('0x2c')][_0x8a1e('0x36')],'sNeutral':_0x8e8deb[_0x8a1e('0x2c')][_0x8a1e('0x2f')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger['info'](util[_0x8a1e('0x15')](_0x8a1e('0x1c'),_0xd09d9b['id']));_0x25d23d();});}})[_0x8a1e('0x37')](function(_0x12f8ff){if(_0x12f8ff){if(!_0x12f8ff[_0x8a1e('0x38')]||_0x12f8ff[_0x8a1e('0x38')]!=='SequelizeValidationError'){logger[_0x8a1e('0x39')](util[_0x8a1e('0x15')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0xd09d9b['id']),util[_0x8a1e('0x3a')](_0x12f8ff,{'showHidden':![],'depth':null}));}}_0x25d23d();});});}function checkTranscribe(){var _0x3fb2b4;var _0x4cf52d;var _0x49cb8e;return db['VoiceRecording'][_0x8a1e('0x3b')]({'where':{'transcribeStatus':_0x8a1e('0x3c')}})[_0x8a1e('0xe')](function(_0x2dc4b3){if(!_0x2dc4b3||!_0x2dc4b3['length']){throw new db['Sequelize'][(_0x8a1e('0x1e'))](_0x8a1e('0x3d'));}_0x3fb2b4=_0x2dc4b3;return db[_0x8a1e('0x3e')][_0x8a1e('0x26')]({'where':{'id':0x1}});})['then'](function(_0x251ff2){if(!_0x251ff2){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x3f'));}_0x4cf52d=_0x251ff2;if(!_0x4cf52d[_0x8a1e('0x40')]||!_0x4cf52d[_0x8a1e('0x41')]||!_0x4cf52d[_0x8a1e('0xd')]||!_0x4cf52d['language']||!_0x4cf52d[_0x8a1e('0x33')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x8a1e('0x26')]({'where':{'id':_0x4cf52d['transcribeAccountId']}});})[_0x8a1e('0xe')](function(_0x901565){if(!_0x901565){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x35'));}if(!_0x901565[_0x8a1e('0xc')]||!_0x901565[_0x8a1e('0x29')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x27'));}_0x49cb8e=_0x901565;var _0x4f164d=[];_0x3fb2b4['forEach'](function(_0xa6be75){_0x4f164d['push'](checkTranscribeJob(_0xa6be75,_0x4cf52d,_0x49cb8e));});return BPromise[_0x8a1e('0x42')](_0x4f164d);})['catch'](function(_0x3aff36){if(_0x3aff36){if(!_0x3aff36[_0x8a1e('0x38')]||_0x3aff36[_0x8a1e('0x38')]!==_0x8a1e('0x43')){logger[_0x8a1e('0x39')](util[_0x8a1e('0x3a')](_0x3aff36,{'showHidden':![],'depth':null}));}}});}exports[_0x8a1e('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x263f=['data1','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','FAILED','FailureReason','resolve','tempSentiment','CloudProvider','Cloud\x20Provider\x20not\x20configured','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','info','format','transcribeName','data2','transcribeRegion','then','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','findOne','Cloud\x20Provider\x20not\x20available'];(function(_0x60992c,_0x5d0981){var _0x2d7b62=function(_0x52567a){while(--_0x52567a){_0x60992c['push'](_0x60992c['shift']());}};_0x2d7b62(++_0x5d0981);}(_0x263f,0x182));var _0xf263=function(_0x42f708,_0x5c4dc8){_0x42f708=_0x42f708-0x0;var _0x10ee0e=_0x263f[_0x42f708];return _0x10ee0e;};var _=require(_0xf263('0x0'));var AWS=require(_0xf263('0x1'));var rp=require(_0xf263('0x2'));var util=require(_0xf263('0x3'));var BPromise=require(_0xf263('0x4'));var db=require(_0xf263('0x5'))['db'];var logger=require('../../config/logger')(_0xf263('0x6'));function getTranscriptionJob(_0x3c76e4,_0x453b6e,_0x528b98,_0xbd1369){return new Promise(function(_0xdb2fc1,_0x4c7ab2){var _0x4fded6=new AWS[(_0xf263('0x7'))]({'accessKeyId':_0x453b6e,'secretAccessKey':_0x3c76e4,'region':_0x528b98});_0x4fded6[_0xf263('0x8')]({'TranscriptionJobName':_0xbd1369},function(_0xa2e77e,_0x16ff53){if(_0xa2e77e){return _0x4c7ab2(_0xa2e77e);}else{return _0xdb2fc1(_0x16ff53);}});});}function sentiment(_0x5dcaa0,_0x3bde50,_0x26504c,_0x3d8092,_0x34c634){return new Promise(function(_0xb9fb31,_0x4fc090){var _0x1e9057=new AWS['Comprehend']({'accessKeyId':_0x3bde50,'secretAccessKey':_0x5dcaa0,'region':_0x26504c});_0x1e9057[_0xf263('0x9')]({'Text':_0x3d8092,'LanguageCode':_0x34c634['substring'](0x0,0x2)},function(_0x254c66,_0x5cf56d){if(_0x254c66){return _0x4fc090(_0x254c66);}else{return _0xb9fb31(_0x5cf56d);}});});}function checkTranscribeJob(_0x5e46a6,_0x2fc9f0,_0x2b1145){var _0x17471d;return new BPromise(function(_0xd7a907,_0x1037a4){logger[_0xf263('0xa')](util[_0xf263('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x5e46a6['id'],_0x5e46a6[_0xf263('0xc')]));return getTranscriptionJob(_0x2b1145['data1'],_0x2b1145[_0xf263('0xd')],_0x2fc9f0[_0xf263('0xe')],_0x5e46a6[_0xf263('0xc')])[_0xf263('0xf')](function(_0x16b4dd){logger[_0xf263('0xa')](util[_0xf263('0xb')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x5e46a6['id'],_0x5e46a6['transcribeName'],_0x16b4dd[_0xf263('0x10')][_0xf263('0x11')]));if(!_0x5e46a6[_0xf263('0x12')]){switch(_0x16b4dd[_0xf263('0x10')][_0xf263('0x11')]){case'COMPLETED':var _0x1adb66={'transcribeStatus':_0x16b4dd['TranscriptionJob'][_0xf263('0x11')],'fileUri':_0x16b4dd[_0xf263('0x10')][_0xf263('0x13')]['TranscriptFileUri']};logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x14'),_0x5e46a6['id']));return rp({'uri':_0x16b4dd['TranscriptionJob'][_0xf263('0x13')][_0xf263('0x15')],'json':!![]})[_0xf263('0xf')](function(_0x426667){logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x16'),_0x5e46a6['id']));if(_0x426667&&_0x426667[_0xf263('0x17')]&&_0x426667[_0xf263('0x17')][_0xf263('0x18')]&&_0x426667[_0xf263('0x17')]['transcripts']['length']){_0x1adb66['fileText']='';for(var _0x2de7aa=0x0;_0x2de7aa<_0x426667[_0xf263('0x17')][_0xf263('0x18')][_0xf263('0x19')];_0x2de7aa++){_0x1adb66[_0xf263('0x12')]+=_0x426667[_0xf263('0x17')][_0xf263('0x18')][_0x2de7aa][_0xf263('0x1a')]+'';}}return _0x5e46a6[_0xf263('0x1b')](_0x1adb66);})[_0xf263('0xf')](function(){logger[_0xf263('0xa')](util['format'](_0xf263('0x1c'),_0x5e46a6['id']));if(!_0x5e46a6['tempSentiment']){throw new db[(_0xf263('0x1d'))]['ValidationError'](_0xf263('0x1e'));}if(!_0x2fc9f0[_0xf263('0x1f')]||!_0x2fc9f0['sentimentAccountId']||!_0x2fc9f0['sentimentRegion']||!_0x2fc9f0[_0xf263('0x20')]||!_0x2fc9f0[_0xf263('0x21')]){throw new db[(_0xf263('0x1d'))][(_0xf263('0x22'))](_0xf263('0x23'));}if(!_0x1adb66[_0xf263('0x12')]){throw new Error(_0xf263('0x24'));}if(_0x2fc9f0[_0xf263('0x25')]===_0x2b1145['id']){return _0x2b1145;}else{return db['CloudProvider'][_0xf263('0x26')]({'where':{'id':_settings[_0xf263('0x25')]}});}})[_0xf263('0xf')](function(_0x43d78e){if(!_0x43d78e){throw new db[(_0xf263('0x1d'))][(_0xf263('0x22'))](_0xf263('0x27'));}if(!_0x43d78e[_0xf263('0x28')]||!_0x43d78e[_0xf263('0xd')]){throw new db['Sequelize'][(_0xf263('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x17471d=_0x43d78e;logger['info'](util[_0xf263('0xb')](_0xf263('0x29'),_0x5e46a6['id']));return sentiment(_0x17471d['data1'],_0x17471d[_0xf263('0xd')],_0x2fc9f0[_0xf263('0x2a')],_0x1adb66['fileText'],_0x2fc9f0[_0xf263('0x20')]);})[_0xf263('0xf')](function(_0x37a475){logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x2b'),_0x5e46a6['id']));return _0x5e46a6['update']({'sentiment':_0x37a475[_0xf263('0x2c')],'sPositive':_0x37a475[_0xf263('0x2d')]['Positive'],'sNegative':_0x37a475['SentimentScore'][_0xf263('0x2e')],'sMixed':_0x37a475[_0xf263('0x2d')][_0xf263('0x2f')],'sNeutral':_0x37a475[_0xf263('0x2d')]['Neutral']});})[_0xf263('0xf')](function(){logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x1c'),_0x5e46a6['id']));_0xd7a907();});case _0xf263('0x30'):return _0x5e46a6['update']({'transcribeStatus':_0xf263('0x30'),'failureReason':_0x16b4dd[_0xf263('0x10')][_0xf263('0x31')]})['then'](function(){logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x1c'),_0x5e46a6['id']));_0xd7a907();});default:logger[_0xf263('0xa')](util[_0xf263('0xb')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x5e46a6['id']));break;}}else{return BPromise[_0xf263('0x32')]()[_0xf263('0xf')](function(){if(!_0x5e46a6[_0xf263('0x33')]){throw new db['Sequelize'][(_0xf263('0x22'))](_0xf263('0x1e'));}if(!_0x2fc9f0[_0xf263('0x1f')]||!_0x2fc9f0['sentimentAccountId']||!_0x2fc9f0[_0xf263('0x2a')]||!_0x2fc9f0['language']||!_0x2fc9f0[_0xf263('0x21')]){throw new db[(_0xf263('0x1d'))][(_0xf263('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x5e46a6['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x2fc9f0[_0xf263('0x25')]===_0x2b1145['id']){return _0x2b1145;}else{return db[_0xf263('0x34')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xf263('0xf')](function(_0x1e1dbf){if(!_0x1e1dbf){throw new db[(_0xf263('0x1d'))][(_0xf263('0x22'))](_0xf263('0x27'));}if(!_0x1e1dbf['data1']||!_0x1e1dbf[_0xf263('0xd')]){throw new db[(_0xf263('0x1d'))][(_0xf263('0x22'))](_0xf263('0x35'));}_0x17471d=_0x1e1dbf;logger[_0xf263('0xa')](util['format'](_0xf263('0x29'),_0x5e46a6['id']));return sentiment(_0x17471d[_0xf263('0x28')],_0x17471d[_0xf263('0xd')],_0x2fc9f0['sentimentRegion'],_0x5e46a6['fileText'],_0x2fc9f0[_0xf263('0x20')]);})['then'](function(_0x4c7283){logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x2b'),_0x5e46a6['id']));return _0x5e46a6['update']({'sentiment':_0x4c7283[_0xf263('0x2c')],'sPositive':_0x4c7283[_0xf263('0x2d')]['Positive'],'sNegative':_0x4c7283[_0xf263('0x2d')][_0xf263('0x2e')],'sMixed':_0x4c7283['SentimentScore'][_0xf263('0x2f')],'sNeutral':_0x4c7283[_0xf263('0x2d')]['Neutral'],'transcribeStatus':_0xf263('0x36')});})[_0xf263('0xf')](function(){logger[_0xf263('0xa')](util[_0xf263('0xb')](_0xf263('0x1c'),_0x5e46a6['id']));_0xd7a907();});}})[_0xf263('0x37')](function(_0xd5f916){if(_0xd5f916){if(!_0xd5f916['name']||_0xd5f916[_0xf263('0x38')]!==_0xf263('0x39')){logger[_0xf263('0x3a')](util[_0xf263('0xb')](_0xf263('0x3b'),_0x5e46a6['id']),util[_0xf263('0x3c')](_0xd5f916,{'showHidden':![],'depth':null}));}}_0xd7a907();});});}function checkTranscribe(){var _0x24da59;var _0x1505a9;var _0x5da8ba;return db[_0xf263('0x3d')][_0xf263('0x3e')]({'where':{'transcribeStatus':_0xf263('0x3f')}})[_0xf263('0xf')](function(_0x54ddf8){if(!_0x54ddf8||!_0x54ddf8[_0xf263('0x19')]){throw new db['Sequelize'][(_0xf263('0x22'))](_0xf263('0x40'));}_0x24da59=_0x54ddf8;return db[_0xf263('0x41')]['findOne']({'where':{'id':0x1}});})['then'](function(_0x5b5585){if(!_0x5b5585){throw new db['Sequelize']['ValidationError'](_0xf263('0x42'));}_0x1505a9=_0x5b5585;if(!_0x1505a9[_0xf263('0x6')]||!_0x1505a9['transcribeAccountId']||!_0x1505a9[_0xf263('0xe')]||!_0x1505a9[_0xf263('0x20')]||!_0x1505a9[_0xf263('0x21')]){throw new db[(_0xf263('0x1d'))][(_0xf263('0x22'))](_0xf263('0x43'));}return db[_0xf263('0x34')][_0xf263('0x26')]({'where':{'id':_0x1505a9[_0xf263('0x44')]}});})[_0xf263('0xf')](function(_0x12c84f){if(!_0x12c84f){throw new db[(_0xf263('0x1d'))]['ValidationError'](_0xf263('0x27'));}if(!_0x12c84f['data1']||!_0x12c84f['data2']){throw new db[(_0xf263('0x1d'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x5da8ba=_0x12c84f;var _0x382460=[];_0x24da59[_0xf263('0x45')](function(_0x499859){_0x382460[_0xf263('0x46')](checkTranscribeJob(_0x499859,_0x1505a9,_0x5da8ba));});return BPromise['all'](_0x382460);})[_0xf263('0x37')](function(_0x2c4b20){if(_0x2c4b20){if(!_0x2c4b20['name']||_0x2c4b20[_0xf263('0x38')]!==_0xf263('0x39')){logger['error'](util[_0xf263('0x3c')](_0x2c4b20,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index f42b771..eacf986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa269=['update','system','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','length','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','moment','util','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:'];(function(_0x3bd973,_0x4fe046){var _0x106770=function(_0x27f017){while(--_0x27f017){_0x3bd973['push'](_0x3bd973['shift']());}};_0x106770(++_0x4fe046);}(_0xa269,0x14c));var _0x9a26=function(_0x565199,_0x213319){_0x565199=_0x565199-0x0;var _0xd72c63=_0xa269[_0x565199];return _0xd72c63;};'use strict';var _=require('lodash');var moment=require(_0x9a26('0x0'));var Redis=require('ioredis');var util=require(_0x9a26('0x1'));var config=require(_0x9a26('0x2'));var db=require(_0x9a26('0x3'))['db'];var logger=require('../logger')('schedule');config[_0x9a26('0x4')]=_[_0x9a26('0x5')](config[_0x9a26('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x9a26('0x6'))(new Redis(config[_0x9a26('0x4')]));function closeInteractions(){var _0x11d37b=[];return db[_0x9a26('0x7')][_0x9a26('0x8')]({'raw':!![],'attributes':['id',_0x9a26('0x9')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x9a26('0xa')](0x18,_0x9a26('0xb'))}}})[_0x9a26('0xc')](function(_0x4bed7b){if(_0x4bed7b&&_0x4bed7b['length']){_0x11d37b=_[_0x9a26('0xd')](_0x4bed7b||[],'id');logger[_0x9a26('0xe')](_0x9a26('0xf'),_0x11d37b['join']());return db['WhatsappInteraction'][_0x9a26('0x10')]({'closeReason':_0x9a26('0x11'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x9a26('0x12')](_0x9a26('0x13'))},{'where':{'id':_0x11d37b}});}})[_0x9a26('0xc')](function(){if(_0x11d37b&&_0x11d37b['length']){logger[_0x9a26('0xe')](_0x9a26('0x14'),_0x11d37b[_0x9a26('0x15')]());for(var _0x44be52=0x0;_0x44be52<_0x11d37b[_0x9a26('0x16')];_0x44be52++){io[_0x9a26('0x17')](_0x9a26('0x18'),{'id':_0x11d37b[_0x44be52],'closed':!![]});}}})[_0x9a26('0x19')](function(_0x4057bb){logger[_0x9a26('0x1a')](_0x9a26('0x1b'),_0x4057bb?util['inspect'](_0x4057bb,{'showHidden':![],'depth':null}):'');});}exports[_0x9a26('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x351f=['subtract','hours','then','length','map','[WHATSAPP]\x20Interactions\x20to\x20close:','join','system','timeout','YYYY-MM-DD\x20HH:mm:ss','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','../../config/environment','../logger','schedule','redis','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt'];(function(_0x564292,_0x3853f1){var _0x15d3dd=function(_0x2185ca){while(--_0x2185ca){_0x564292['push'](_0x564292['shift']());}};_0x15d3dd(++_0x3853f1);}(_0x351f,0xd5));var _0xf351=function(_0x5e5bdb,_0x260692){_0x5e5bdb=_0x5e5bdb-0x0;var _0x2f570f=_0x351f[_0x5e5bdb];return _0x2f570f;};'use strict';var _=require(_0xf351('0x0'));var moment=require(_0xf351('0x1'));var Redis=require(_0xf351('0x2'));var util=require('util');var config=require(_0xf351('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xf351('0x4'))(_0xf351('0x5'));config[_0xf351('0x6')]=_['defaults'](config[_0xf351('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xf351('0x7'))(new Redis(config[_0xf351('0x6')]));function closeInteractions(){var _0x361542=[];return db[_0xf351('0x8')][_0xf351('0x9')]({'raw':!![],'attributes':['id',_0xf351('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf351('0xb')](0x18,_0xf351('0xc'))}}})[_0xf351('0xd')](function(_0x58c2a9){if(_0x58c2a9&&_0x58c2a9[_0xf351('0xe')]){_0x361542=_[_0xf351('0xf')](_0x58c2a9||[],'id');logger['info'](_0xf351('0x10'),_0x361542[_0xf351('0x11')]());return db['WhatsappInteraction']['update']({'closeReason':_0xf351('0x12'),'disposition':_0xf351('0x13'),'closed':!![],'closedAt':moment()['format'](_0xf351('0x14'))},{'where':{'id':_0x361542}});}})[_0xf351('0xd')](function(){if(_0x361542&&_0x361542[_0xf351('0xe')]){logger[_0xf351('0x15')](_0xf351('0x16'),_0x361542[_0xf351('0x11')]());for(var _0x5c017f=0x0;_0x5c017f<_0x361542[_0xf351('0xe')];_0x5c017f++){io['emit'](_0xf351('0x17'),{'id':_0x361542[_0x5c017f],'closed':!![]});}}})[_0xf351('0x18')](function(_0x3539fb){logger[_0xf351('0x19')](_0xf351('0x1a'),_0x3539fb?util[_0xf351('0x1b')](_0x3539fb,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index f2c7f95..b90440b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf5c=['log','finished\x20populating','contacts1','hopper1','contacts2','CmHopper','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','then','bulkCreate'];(function(_0x179e6c,_0x8eb35f){var _0x319d84=function(_0x248f87){while(--_0x248f87){_0x179e6c['push'](_0x179e6c['shift']());}};_0x319d84(++_0x8eb35f);}(_0xdf5c,0xa8));var _0xcdf5=function(_0x2d9d48,_0x334119){_0x2d9d48=_0x2d9d48-0x0;var _0xb5812d=_0xdf5c[_0x2d9d48];return _0xb5812d;};'use strict';var util=require(_0xcdf5('0x0'));var db=require(_0xcdf5('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xcdf5('0x2')]({'id':i,'firstName':_0xcdf5('0x3')+i,'lastName':_0xcdf5('0x4')+i,'phone':0xf879fb460+i,'email':_0xcdf5('0x5')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xcdf5('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xcdf5('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xcdf5('0x6')](),'updatedAt':Date[_0xcdf5('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xcdf5('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0xcdf5('0x5')+i+_0xcdf5('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xcdf5('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xcdf5('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0xcdf5('0x8')][_0xcdf5('0x9')]({'where':{}})[_0xcdf5('0xa')](function(){return db[_0xcdf5('0x8')][_0xcdf5('0xb')](contacts);})[_0xcdf5('0xa')](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),_0xcdf5('0xe'));return db['CmHopper'][_0xcdf5('0x9')]({'where':{}});})[_0xcdf5('0xa')](function(){return db['CmHopper']['bulkCreate'](hopper);})['then'](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),_0xcdf5('0xf'));return db[_0xcdf5('0x8')]['bulkCreate'](contacts2);})[_0xcdf5('0xa')](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),_0xcdf5('0x10'));return db[_0xcdf5('0x11')][_0xcdf5('0xb')](hopper2);})[_0xcdf5('0xa')](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),'hopper2');})['catch'](function(_0x2f6750){console[_0xcdf5('0xc')](_0x2f6750);});
\ No newline at end of file
+var _0x45b3=['destroy','then','finished\x20populating','hopper1','bulkCreate','contacts2','hopper2','catch','util','../mysqldb','push','Innocenzo','innocenzo.biondo','@xcally.com','now','Biondo','CmContact','log','contacts1','CmHopper'];(function(_0x14effa,_0x4d6974){var _0x271f3a=function(_0x4a4536){while(--_0x4a4536){_0x14effa['push'](_0x14effa['shift']());}};_0x271f3a(++_0x4d6974);}(_0x45b3,0x15c));var _0x345b=function(_0x5ab556,_0x5216da){_0x5ab556=_0x5ab556-0x0;var _0x54765b=_0x45b3[_0x5ab556];return _0x54765b;};'use strict';var util=require(_0x345b('0x0'));var db=require(_0x345b('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x345b('0x2')]({'id':i,'firstName':_0x345b('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x345b('0x4')+i+_0x345b('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x345b('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x345b('0x6')](),'updatedAt':Date[_0x345b('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x345b('0x2')]({'id':i,'firstName':_0x345b('0x3')+i,'lastName':_0x345b('0x7')+i,'phone':0xf879fb460+i,'email':_0x345b('0x4')+i+_0x345b('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x345b('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x345b('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x345b('0x6')](),'updatedAt':Date['now']()});}db[_0x345b('0x8')]['destroy']({'where':{}})['then'](function(){return db[_0x345b('0x8')]['bulkCreate'](contacts);})['then'](function(){console[_0x345b('0x9')]('finished\x20populating',_0x345b('0xa'));return db[_0x345b('0xb')][_0x345b('0xc')]({'where':{}});})[_0x345b('0xd')](function(){return db['CmHopper']['bulkCreate'](hopper);})[_0x345b('0xd')](function(){console['log'](_0x345b('0xe'),_0x345b('0xf'));return db['CmContact'][_0x345b('0x10')](contacts2);})['then'](function(){console[_0x345b('0x9')](_0x345b('0xe'),_0x345b('0x11'));return db['CmHopper'][_0x345b('0x10')](hopper2);})[_0x345b('0xd')](function(){console[_0x345b('0x9')](_0x345b('0xe'),_0x345b('0x12'));})[_0x345b('0x13')](function(_0x465691){console[_0x345b('0x9')](_0x465691);});
\ No newline at end of file
index e1e3b18..d440a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aa0=['/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','../mysqldb','push','%s%s','agent','format','password','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt'];(function(_0x3da6a8,_0xe43384){var _0x3fa4fe=function(_0xebec68){while(--_0xebec68){_0x3da6a8['push'](_0x3da6a8['shift']());}};_0x3fa4fe(++_0xe43384);}(_0x2aa0,0x11a));var _0x02aa=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x2aa0[_0x19950b];return _0x3c6b41;};'use strict';var util=require('util');var db=require(_0x02aa('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x02aa('0x1')]({'name':util['format'](_0x02aa('0x2'),'agent',i),'fullname':util['format'](_0x02aa('0x2'),_0x02aa('0x3'),i),'email':util[_0x02aa('0x4')]('%s%s@xcally.com','agent',i),'role':_0x02aa('0x3'),'password':_0x02aa('0x5'),'internal':0xfa0+i,'type':'friend','transport':[_0x02aa('0x6'),'ws',_0x02aa('0x7')],'disallow':[_0x02aa('0x8')],'allow':[_0x02aa('0x9')],'defaultuser':util[_0x02aa('0x4')](_0x02aa('0x2'),_0x02aa('0x3'),i),'encryption':_0x02aa('0xa'),'avpf':'yes','force_avp':'yes','icesupport':_0x02aa('0xa'),'dtlsenable':_0x02aa('0xa'),'dtlsverify':'no','dtlscertfile':_0x02aa('0xb'),'dtlsprivatekey':_0x02aa('0xc'),'dtlssetup':_0x02aa('0xd'),'callerid':util[_0x02aa('0x4')](_0x02aa('0xe'),util[_0x02aa('0x4')](_0x02aa('0x2'),_0x02aa('0x3'),i),0xfa0+i)});}db[_0x02aa('0xf')][_0x02aa('0x10')](users)[_0x02aa('0x11')](function(){console[_0x02aa('0x12')](_0x02aa('0x13'));})[_0x02aa('0x14')](function(_0x4d0399){console[_0x02aa('0x12')](_0x4d0399);});
\ No newline at end of file
+var _0x9680=['util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','wss','all','ulaw','yes','actpass','\x22%s\x22\x20<%s>','User','then','log','add\x20user','catch'];(function(_0xd0b7c,_0x4b74b3){var _0x4bc984=function(_0x33d61b){while(--_0x33d61b){_0xd0b7c['push'](_0xd0b7c['shift']());}};_0x4bc984(++_0x4b74b3);}(_0x9680,0xa2));var _0x0968=function(_0x4d702b,_0x5dce5c){_0x4d702b=_0x4d702b-0x0;var _0x44fdc0=_0x9680[_0x4d702b];return _0x44fdc0;};'use strict';var util=require(_0x0968('0x0'));var db=require(_0x0968('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x0968('0x2')]({'name':util[_0x0968('0x3')](_0x0968('0x4'),'agent',i),'fullname':util[_0x0968('0x3')]('%s%s',_0x0968('0x5'),i),'email':util[_0x0968('0x3')](_0x0968('0x6'),_0x0968('0x5'),i),'role':_0x0968('0x5'),'password':'password','internal':0xfa0+i,'type':'friend','transport':['udp','ws',_0x0968('0x7')],'disallow':[_0x0968('0x8')],'allow':[_0x0968('0x9')],'defaultuser':util[_0x0968('0x3')](_0x0968('0x4'),_0x0968('0x5'),i),'encryption':_0x0968('0xa'),'avpf':'yes','force_avp':'yes','icesupport':'yes','dtlsenable':_0x0968('0xa'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x0968('0xb'),'callerid':util[_0x0968('0x3')](_0x0968('0xc'),util[_0x0968('0x3')](_0x0968('0x4'),_0x0968('0x5'),i),0xfa0+i)});}db[_0x0968('0xd')]['bulkCreate'](users)[_0x0968('0xe')](function(){console[_0x0968('0xf')](_0x0968('0x10'));})[_0x0968('0x11')](function(_0x5afdb8){console['log'](_0x5afdb8);});
\ No newline at end of file
index fd4105b..2852354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ace=['remoteAddress','remotePort','connectedAt','nsp','disconnect','CONNECTED','util','bluebird','../mysqldb','name','Agents','role','agent','telephone','type','ivr','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','then','map','where','Campaign','format','%s:queue:%s','length','user:%s','User','handshake','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','VoiceQueue','ChatQueue','FaxQueue','MailQueue','push','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','VoiceQueues','userProfileId','SmsQueue','MailQueues','Trunks','getVoiceQueues','getFaxQueues','getSmsQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','telephone:%s','trunk:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_whatsapp_interactions:remove','catch','log','join','setMaxListeners','address','request','connection'];(function(_0x5c21ea,_0x436c10){var _0x2d7455=function(_0x4f4fe9){while(--_0x4f4fe9){_0x5c21ea['push'](_0x5c21ea['shift']());}};_0x2d7455(++_0x436c10);}(_0x2ace,0x17e));var _0xe2ac=function(_0x24f870,_0x2c8a88){_0x24f870=_0x24f870-0x0;var _0x5d065b=_0x2ace[_0x24f870];return _0x5d065b;};'use strict';var _=require('lodash');var util=require(_0xe2ac('0x0'));var BPromise=require(_0xe2ac('0x1'));var db=require(_0xe2ac('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xe2ac('0x3')],'include':[{'as':_0xe2ac('0x4'),'model':db['User'],'attributes':['id',_0xe2ac('0x3'),_0xe2ac('0x5')],'raw':!![],'where':{'role':_0xe2ac('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe2ac('0x3')],'where':{'role':_0xe2ac('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0xe2ac('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xe2ac('0x3')],'where':{'role':_0xe2ac('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe2ac('0x3'),_0xe2ac('0x8')],'where':{'type':_0xe2ac('0x9')}};function getAssociatedResources(_0x3ae734,_0x6e8bd2,_0x4fb111){return db['UserProfileSection'][_0xe2ac('0xa')]({'where':{'name':_0x3ae734,'userProfileId':_0x6e8bd2},'raw':!![]})['then'](function(_0xcf81f4){if(_0xcf81f4){if(_0xcf81f4[_0xe2ac('0xb')]){switch(_0x3ae734){case'VoiceQueues':case _0xe2ac('0xc'):case _0xe2ac('0xd'):case _0xe2ac('0xe'):case'MailQueues':case _0xe2ac('0xf'):case _0xe2ac('0x10'):return db[_0x4fb111][_0xe2ac('0x11')](queryQueues);case _0xe2ac('0x12'):return db[_0x4fb111][_0xe2ac('0x11')](queryTelephones);case'Trunks':return db[_0x4fb111][_0xe2ac('0x11')](queryTrunks);case'IvrCampaigns':return db[_0x4fb111][_0xe2ac('0x11')](queryCampaigns);}}else{return db[_0xe2ac('0x13')][_0xe2ac('0x11')]({'attributes':[_0xe2ac('0x14')],'where':{'sectionId':_0xcf81f4['id']},'raw':!![]})[_0xe2ac('0x15')](function(_0xbddfba){if(_0xbddfba){var _0x445bca={'where':{'id':_[_0xe2ac('0x16')](_0xbddfba,_0xe2ac('0x14'))},'raw':!![]};switch(_0x4fb111){case'User':_0x445bca[_0xe2ac('0x17')][_0xe2ac('0x5')]='telephone';break;case _0xe2ac('0x18'):_0x445bca[_0xe2ac('0x17')][_0xe2ac('0x8')]=_0xe2ac('0x9');break;}return db[_0x4fb111]['findAll'](_0x445bca);}else{return[];}});}}else{return[];}})['then'](function(_0x5bafe4){return _0x5bafe4;});}function joinOrLeaveQueues(_0x19784b,_0x190983,_0x3dd2ef,_0x62d6e2){_0x19784b[_0x190983](util[_0xe2ac('0x19')](_0xe2ac('0x1a'),_0x3dd2ef,_0x62d6e2['name']));if(_0x62d6e2['Agents']){for(var _0x3cfc45=0x0;_0x3cfc45<_0x62d6e2['Agents'][_0xe2ac('0x1b')];_0x3cfc45+=0x1){_0x19784b[_0x190983](util[_0xe2ac('0x19')](_0xe2ac('0x1c'),_0x62d6e2[_0xe2ac('0x4')][_0x3cfc45][_0xe2ac('0x3')]));}}}function joinOrLeave(_0x1224c5,_0x504ffd,_0x20a59e){var _0xbf5817;if(_0x1224c5['handshake']['query']['id']){db[_0xe2ac('0x1d')]['find']({'attributes':['id',_0xe2ac('0x3'),_0xe2ac('0x5'),'userProfileId'],'where':{'id':_0x1224c5[_0xe2ac('0x1e')]['query']['id']},'include':[{'model':db[_0xe2ac('0x1f')],'as':_0xe2ac('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x21')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x22')],'as':_0xe2ac('0x23'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x24')],'as':_0xe2ac('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x26')],'as':_0xe2ac('0x27'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2ccd98){if(_0x2ccd98){_0xbf5817=_0x2ccd98;_0x1224c5[_0x504ffd](util['format'](_0xe2ac('0x1c'),_0x2ccd98[_0xe2ac('0x3')]));var _0x4479d6=[];switch(_0x2ccd98[_0xe2ac('0x5')]){case _0xe2ac('0x28'):_0x1224c5[_0x504ffd](_0xe2ac('0x29'));_0x1224c5[_0x504ffd]('voice:outbound');if(queryQueues[_0xe2ac('0x2a')]('include')){delete queryQueues['include'];}_0x4479d6['push'](db[_0xe2ac('0x2b')][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db[_0xe2ac('0x2c')][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db[_0xe2ac('0x2d')][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db['SmsQueue'][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db[_0xe2ac('0x2e')][_0xe2ac('0x11')](queryQueues));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x30')][_0xe2ac('0x11')](queryQueues));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x31')][_0xe2ac('0x11')](queryQueues));_0x4479d6[_0xe2ac('0x2f')](db['User'][_0xe2ac('0x11')](queryTelephones));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x32')][_0xe2ac('0x11')](queryTrunks));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x18')]['findAll'](queryCampaigns));_0x4479d6[_0xe2ac('0x2f')](db['User'][_0xe2ac('0x11')](queryAgents));break;case _0xe2ac('0x33'):_0x1224c5[_0x504ffd](_0xe2ac('0x29'));_0x1224c5[_0x504ffd](_0xe2ac('0x34'));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0x35'),_0x2ccd98['userProfileId'],'VoiceQueue'));_0x4479d6['push'](getAssociatedResources('ChatQueues',_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x2c')));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0xd'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x2d')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0xe'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x37')));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0x38'),_0x2ccd98['userProfileId'],'MailQueue'));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0xf'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x30')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0x10'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x31')));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0x12'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x1d')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0x39'),_0x2ccd98['userProfileId'],_0xe2ac('0x32')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources('IvrCampaigns',_0x2ccd98['userProfileId'],_0xe2ac('0x18')));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x1d')][_0xe2ac('0x11')](queryAgents));break;case _0xe2ac('0x6'):_0x1224c5[_0x504ffd]('voice:inbound');_0x1224c5[_0x504ffd](_0xe2ac('0x34'));_0x4479d6['push'](_0x2ccd98[_0xe2ac('0x3a')]({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98['getChatQueues']({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98[_0xe2ac('0x3b')]({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98[_0xe2ac('0x3c')]({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98['getMailQueues']({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6['push'](_0x2ccd98['getOpenchannelQueues']({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98[_0xe2ac('0x3d')]({'attributes':['id',_0xe2ac('0x3')]}));break;}return BPromise[_0xe2ac('0x3e')](_0x4479d6);}})[_0xe2ac('0x15')](function(_0x3715ad){if(_0x3715ad&&_0x3715ad[_0xe2ac('0x1b')]){for(var _0x56e868=0x0;_0x56e868<_0x3715ad[_0xe2ac('0x1b')];_0x56e868+=0x1){for(var _0x4c17b1=0x0;_0x4c17b1<_0x3715ad[_0x56e868][_0xe2ac('0x1b')];_0x4c17b1+=0x1){switch(_0x56e868){case 0x0:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x3f'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x1:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x40'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x2:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x41'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x3:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x42'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x4:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x43'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x5:joinOrLeaveQueues(_0x1224c5,_0x504ffd,'openchannel',_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x6:joinOrLeaveQueues(_0x1224c5,_0x504ffd,'whatsapp',_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x7:if(_0xbf5817['role']!==_0xe2ac('0x6'))_0x1224c5[_0x504ffd](util[_0xe2ac('0x19')](_0xe2ac('0x44'),_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x3')]));break;case 0x8:if(_0xbf5817[_0xe2ac('0x5')]!=='agent')_0x1224c5[_0x504ffd](util['format'](_0xe2ac('0x45'),_0x3715ad[_0x56e868][_0x4c17b1]['name']));break;case 0x9:if(_0xbf5817['role']!==_0xe2ac('0x6'))_0x1224c5[_0x504ffd](util[_0xe2ac('0x19')](_0xe2ac('0x46'),_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x8')],_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x3')]));break;case 0xa:_0x1224c5[_0x504ffd](util[_0xe2ac('0x19')](_0xe2ac('0x1c'),_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x3')]));break;}}}}})[_0xe2ac('0x15')](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x5c8dd9=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x20')],'id');return _0xbf5817['removeChatInteractions'](_0x5c8dd9)[_0xe2ac('0x15')](function(){for(var _0x3e5df6=0x0;_0x3e5df6<_0x5c8dd9['length'];_0x3e5df6+=0x1){_0x20a59e[_0xe2ac('0x48')](_0xe2ac('0x49'),{'ChatInteractionId':Number(_0x5c8dd9[_0x3e5df6]),'UserId':Number(_0xbf5817['id'])});}});}})['then'](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x633f72=_['map'](_0xbf5817[_0xe2ac('0x4a')],'id');return _0xbf5817[_0xe2ac('0x4b')](_0x633f72)[_0xe2ac('0x15')](function(){for(var _0x3f70a=0x0;_0x3f70a<_0x633f72['length'];_0x3f70a+=0x1){_0x20a59e[_0xe2ac('0x48')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x633f72[_0x3f70a]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x15')](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x4aed54=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x23')],'id');return _0xbf5817['removeFaxInteractions'](_0x4aed54)[_0xe2ac('0x15')](function(){for(var _0xd98da8=0x0;_0xd98da8<_0x4aed54[_0xe2ac('0x1b')];_0xd98da8+=0x1){_0x20a59e[_0xe2ac('0x48')](_0xe2ac('0x4c'),{'FaxInteractionId':Number(_0x4aed54[_0xd98da8]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x15')](function(){if(_0x504ffd==='leave'){var _0x33b635=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x4d')],'id');return _0xbf5817[_0xe2ac('0x4e')](_0x33b635)[_0xe2ac('0x15')](function(){for(var _0xceaf52=0x0;_0xceaf52<_0x33b635[_0xe2ac('0x1b')];_0xceaf52+=0x1){_0x20a59e[_0xe2ac('0x48')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x33b635[_0xceaf52]),'UserId':Number(_0xbf5817['id'])});}});}})['then'](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x2dfe56=_['map'](_0xbf5817[_0xe2ac('0x25')],'id');return _0xbf5817[_0xe2ac('0x4f')](_0x2dfe56)[_0xe2ac('0x15')](function(){for(var _0x39867d=0x0;_0x39867d<_0x2dfe56['length'];_0x39867d+=0x1){_0x20a59e['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x2dfe56[_0x39867d]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x15')](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x1076ab=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x27')],'id');return _0xbf5817['removeWhatsappInteractions'](_0x1076ab)[_0xe2ac('0x15')](function(){for(var _0x1b9dac=0x0;_0x1b9dac<_0x1076ab[_0xe2ac('0x1b')];_0x1b9dac+=0x1){_0x20a59e[_0xe2ac('0x48')](_0xe2ac('0x50'),{'WhatsappInteractionId':Number(_0x1076ab[_0x1b9dac]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x51')](function(_0x1d127c){_0x1224c5[_0xe2ac('0x52')](_0x1d127c);});}}function onDisconnect(_0xbfbab5,_0x5cddd6){joinOrLeave(_0xbfbab5,'leave',_0x5cddd6);}function onConnect(_0x8dd497){joinOrLeave(_0x8dd497,_0xe2ac('0x53'));}exports['default']=function(_0x56ae14){_0x56ae14['on']('connection',function(_0x2efba6){_0x2efba6[_0xe2ac('0x54')](0x0);_0x2efba6[_0xe2ac('0x55')]=_0x2efba6[_0xe2ac('0x56')][_0xe2ac('0x57')][_0xe2ac('0x58')]+':'+_0x2efba6[_0xe2ac('0x56')]['connection'][_0xe2ac('0x59')];_0x2efba6[_0xe2ac('0x5a')]=new Date();_0x2efba6['log']=function(_0x2e98e1){console[_0xe2ac('0x52')]('SocketIO\x20'+_0x2efba6[_0xe2ac('0x5b')][_0xe2ac('0x3')]+'['+_0x2efba6[_0xe2ac('0x55')]+']',_0x2e98e1);};_0x2efba6['on'](_0xe2ac('0x5c'),function(){onDisconnect(_0x2efba6,_0x56ae14);_0x2efba6[_0xe2ac('0x52')]('DISCONNECTED');});onConnect(_0x2efba6);_0x2efba6[_0xe2ac('0x52')](_0xe2ac('0x5d'));});};
\ No newline at end of file
+var _0xd47f=['SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','include','VoiceQueue','ChatQueue','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','WhatsappQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','length','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','emit','user_has_fax_interactions:remove','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','UserProfileSection','findOne','then','ChatQueues','MailQueues','Telephones','Trunks','findAll','IvrCampaigns','UserProfileResource','resourceId','map','Campaign','where','type','format','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions'];(function(_0x849e8d,_0x21b681){var _0x53d15d=function(_0x5b0f51){while(--_0x5b0f51){_0x849e8d['push'](_0x849e8d['shift']());}};_0x53d15d(++_0x21b681);}(_0xd47f,0x1bd));var _0xfd47=function(_0x2f3be2,_0x224419){_0x2f3be2=_0x2f3be2-0x0;var _0x4cf7b0=_0xd47f[_0x2f3be2];return _0x4cf7b0;};'use strict';var _=require(_0xfd47('0x0'));var util=require('util');var BPromise=require(_0xfd47('0x1'));var db=require(_0xfd47('0x2'))['db'];var config=require(_0xfd47('0x3'));var queryQueues={'attributes':['id',_0xfd47('0x4')],'include':[{'as':_0xfd47('0x5'),'model':db[_0xfd47('0x6')],'attributes':['id',_0xfd47('0x4'),_0xfd47('0x7')],'raw':!![],'where':{'role':_0xfd47('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xfd47('0x4')],'where':{'role':_0xfd47('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0xfd47('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfd47('0x4'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x4fa356,_0xa2ef6a,_0x1d67e7){return db[_0xfd47('0xa')][_0xfd47('0xb')]({'where':{'name':_0x4fa356,'userProfileId':_0xa2ef6a},'raw':!![]})[_0xfd47('0xc')](function(_0x2cb7c2){if(_0x2cb7c2){if(_0x2cb7c2['autoAssociation']){switch(_0x4fa356){case'VoiceQueues':case _0xfd47('0xd'):case'FaxQueues':case'SmsQueues':case _0xfd47('0xe'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x1d67e7]['findAll'](queryQueues);case _0xfd47('0xf'):return db[_0x1d67e7]['findAll'](queryTelephones);case _0xfd47('0x10'):return db[_0x1d67e7][_0xfd47('0x11')](queryTrunks);case _0xfd47('0x12'):return db[_0x1d67e7]['findAll'](queryCampaigns);}}else{return db[_0xfd47('0x13')][_0xfd47('0x11')]({'attributes':[_0xfd47('0x14')],'where':{'sectionId':_0x2cb7c2['id']},'raw':!![]})[_0xfd47('0xc')](function(_0x584fe1){if(_0x584fe1){var _0x791937={'where':{'id':_[_0xfd47('0x15')](_0x584fe1,_0xfd47('0x14'))},'raw':!![]};switch(_0x1d67e7){case'User':_0x791937['where'][_0xfd47('0x7')]=_0xfd47('0x9');break;case _0xfd47('0x16'):_0x791937[_0xfd47('0x17')][_0xfd47('0x18')]='ivr';break;}return db[_0x1d67e7][_0xfd47('0x11')](_0x791937);}else{return[];}});}}else{return[];}})[_0xfd47('0xc')](function(_0x16aea0){return _0x16aea0;});}function joinOrLeaveQueues(_0x231106,_0x21cdb0,_0x3e2d03,_0x5d3c0f){_0x231106[_0x21cdb0](util[_0xfd47('0x19')]('%s:queue:%s',_0x3e2d03,_0x5d3c0f[_0xfd47('0x4')]));if(_0x5d3c0f[_0xfd47('0x5')]){for(var _0x4153f6=0x0;_0x4153f6<_0x5d3c0f[_0xfd47('0x5')]['length'];_0x4153f6+=0x1){_0x231106[_0x21cdb0](util[_0xfd47('0x19')](_0xfd47('0x1a'),_0x5d3c0f[_0xfd47('0x5')][_0x4153f6][_0xfd47('0x4')]));}}}function joinOrLeave(_0x4bbeb9,_0x511dbd,_0x285f2a){var _0xc06999;if(_0x4bbeb9[_0xfd47('0x1b')][_0xfd47('0x1c')]['id']){db[_0xfd47('0x6')]['find']({'attributes':['id',_0xfd47('0x4'),'role',_0xfd47('0x1d')],'where':{'id':_0x4bbeb9[_0xfd47('0x1b')][_0xfd47('0x1c')]['id']},'include':[{'model':db[_0xfd47('0x1e')],'as':_0xfd47('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x20')],'as':_0xfd47('0x21'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xfd47('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x23')],'as':_0xfd47('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x25')],'as':_0xfd47('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x27')],'as':_0xfd47('0x28'),'attributes':['id'],'raw':!![]}]})[_0xfd47('0xc')](function(_0x3dfd47){if(_0x3dfd47){_0xc06999=_0x3dfd47;_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x1a'),_0x3dfd47[_0xfd47('0x4')]));var _0x4972bf=[];switch(_0x3dfd47[_0xfd47('0x7')]){case _0xfd47('0x29'):_0x4bbeb9[_0x511dbd](_0xfd47('0x2a'));_0x4bbeb9[_0x511dbd]('voice:outbound');if(queryQueues[_0xfd47('0x2b')]('include')){delete queryQueues[_0xfd47('0x2c')];}_0x4972bf['push'](db[_0xfd47('0x2d')][_0xfd47('0x11')](queryQueues));_0x4972bf['push'](db[_0xfd47('0x2e')][_0xfd47('0x11')](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x30')][_0xfd47('0x11')](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x31')]['findAll'](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x32')]['findAll'](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x33')][_0xfd47('0x11')](queryQueues));_0x4972bf['push'](db[_0xfd47('0x34')]['findAll'](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x6')]['findAll'](queryTelephones));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x35')][_0xfd47('0x11')](queryTrunks));_0x4972bf['push'](db[_0xfd47('0x16')][_0xfd47('0x11')](queryCampaigns));_0x4972bf[_0xfd47('0x2f')](db['User'][_0xfd47('0x11')](queryAgents));break;case _0xfd47('0x36'):_0x4bbeb9[_0x511dbd]('voice:inbound');_0x4bbeb9[_0x511dbd](_0xfd47('0x37'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources('VoiceQueues',_0x3dfd47['userProfileId'],_0xfd47('0x2d')));_0x4972bf['push'](getAssociatedResources(_0xfd47('0xd'),_0x3dfd47['userProfileId'],_0xfd47('0x2e')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources('FaxQueues',_0x3dfd47[_0xfd47('0x1d')],'FaxQueue'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources('SmsQueues',_0x3dfd47[_0xfd47('0x1d')],'SmsQueue'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0xe'),_0x3dfd47[_0xfd47('0x1d')],'MailQueue'));_0x4972bf['push'](getAssociatedResources('OpenchannelQueues',_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x33')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0x38'),_0x3dfd47[_0xfd47('0x1d')],'WhatsappQueue'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0xf'),_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x6')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0x10'),_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x35')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0x12'),_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x16')));_0x4972bf['push'](db[_0xfd47('0x6')][_0xfd47('0x11')](queryAgents));break;case _0xfd47('0x8'):_0x4bbeb9[_0x511dbd](_0xfd47('0x2a'));_0x4bbeb9[_0x511dbd](_0xfd47('0x37'));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47['getVoiceQueues']({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x39')]({'attributes':['id','name']}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x3a')]({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x3b')]({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47['getMailQueues']({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x3c')]({'attributes':['id','name']}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47['getWhatsappQueues']({'attributes':['id',_0xfd47('0x4')]}));break;}return BPromise[_0xfd47('0x3d')](_0x4972bf);}})['then'](function(_0x2db46b){if(_0x2db46b&&_0x2db46b[_0xfd47('0x3e')]){for(var _0x19af79=0x0;_0x19af79<_0x2db46b[_0xfd47('0x3e')];_0x19af79+=0x1){for(var _0x517908=0x0;_0x517908<_0x2db46b[_0x19af79][_0xfd47('0x3e')];_0x517908+=0x1){switch(_0x19af79){case 0x0:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,'voice',_0x2db46b[_0x19af79][_0x517908]);break;case 0x1:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,'chat',_0x2db46b[_0x19af79][_0x517908]);break;case 0x2:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x3f'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x3:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x40'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x4:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,'mail',_0x2db46b[_0x19af79][_0x517908]);break;case 0x5:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x41'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x6:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x42'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x7:if(_0xc06999['role']!==_0xfd47('0x8'))_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x43'),_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;case 0x8:if(_0xc06999[_0xfd47('0x7')]!=='agent')_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x44'),_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;case 0x9:if(_0xc06999['role']!=='agent')_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x45'),_0x2db46b[_0x19af79][_0x517908]['type'],_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;case 0xa:_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x1a'),_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;}}}}})['then'](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x2c4a6e=_[_0xfd47('0x15')](_0xc06999['ChatInteractions'],'id');return _0xc06999[_0xfd47('0x47')](_0x2c4a6e)[_0xfd47('0xc')](function(){for(var _0x596b99=0x0;_0x596b99<_0x2c4a6e[_0xfd47('0x3e')];_0x596b99+=0x1){_0x285f2a['emit'](_0xfd47('0x48'),{'ChatInteractionId':Number(_0x2c4a6e[_0x596b99]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x4c0272=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x21')],'id');return _0xc06999[_0xfd47('0x49')](_0x4c0272)[_0xfd47('0xc')](function(){for(var _0x3ed00e=0x0;_0x3ed00e<_0x4c0272[_0xfd47('0x3e')];_0x3ed00e+=0x1){_0x285f2a['emit'](_0xfd47('0x4a'),{'MailInteractionId':Number(_0x4c0272[_0x3ed00e]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x49e995=_['map'](_0xc06999[_0xfd47('0x22')],'id');return _0xc06999[_0xfd47('0x4b')](_0x49e995)[_0xfd47('0xc')](function(){for(var _0x158b78=0x0;_0x158b78<_0x49e995[_0xfd47('0x3e')];_0x158b78+=0x1){_0x285f2a[_0xfd47('0x4c')](_0xfd47('0x4d'),{'FaxInteractionId':Number(_0x49e995[_0x158b78]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x212d17=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x24')],'id');return _0xc06999['removeSmsInteractions'](_0x212d17)[_0xfd47('0xc')](function(){for(var _0x29a10c=0x0;_0x29a10c<_0x212d17[_0xfd47('0x3e')];_0x29a10c+=0x1){_0x285f2a['emit'](_0xfd47('0x4e'),{'SmsInteractionId':Number(_0x212d17[_0x29a10c]),'UserId':Number(_0xc06999['id'])});}});}})['then'](function(){if(_0x511dbd==='leave'){var _0x174593=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x26')],'id');return _0xc06999['removeOpenchannelInteractions'](_0x174593)[_0xfd47('0xc')](function(){for(var _0x4c3cca=0x0;_0x4c3cca<_0x174593[_0xfd47('0x3e')];_0x4c3cca+=0x1){_0x285f2a[_0xfd47('0x4c')](_0xfd47('0x4f'),{'OpenchannelInteractionId':Number(_0x174593[_0x4c3cca]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x2c7615=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x28')],'id');return _0xc06999[_0xfd47('0x50')](_0x2c7615)['then'](function(){for(var _0x365d1f=0x0;_0x365d1f<_0x2c7615['length'];_0x365d1f+=0x1){_0x285f2a[_0xfd47('0x4c')](_0xfd47('0x51'),{'WhatsappInteractionId':Number(_0x2c7615[_0x365d1f]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0x52')](function(_0x55de49){_0x4bbeb9[_0xfd47('0x53')](_0x55de49);});}}function onDisconnect(_0x3721f3,_0x241bcf){joinOrLeave(_0x3721f3,_0xfd47('0x46'),_0x241bcf);}function onConnect(_0x549b79){joinOrLeave(_0x549b79,_0xfd47('0x54'));}exports[_0xfd47('0x55')]=function(_0x256b9c){_0x256b9c['on'](_0xfd47('0x56'),function(_0x41f4a8){_0x41f4a8[_0xfd47('0x57')](0x0);_0x41f4a8[_0xfd47('0x58')]=_0x41f4a8[_0xfd47('0x59')][_0xfd47('0x56')]['remoteAddress']+':'+_0x41f4a8[_0xfd47('0x59')][_0xfd47('0x56')][_0xfd47('0x5a')];_0x41f4a8[_0xfd47('0x5b')]=new Date();_0x41f4a8['log']=function(_0x4f6af0){console[_0xfd47('0x53')]('SocketIO\x20'+_0x41f4a8[_0xfd47('0x5c')][_0xfd47('0x4')]+'['+_0x41f4a8[_0xfd47('0x58')]+']',_0x4f6af0);};_0x41f4a8['on'](_0xfd47('0x5d'),function(){onDisconnect(_0x41f4a8,_0x256b9c);_0x41f4a8[_0xfd47('0x53')](_0xfd47('0x5e'));});onConnect(_0x41f4a8);_0x41f4a8[_0xfd47('0x53')](_0xfd47('0x5f'));});};
\ No newline at end of file
index 62dde5e..36398e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4702=['WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','then','Trigger,\x20%s','EventManager','error','code','catch','get','channel','event','direction','sequelize','query','Sequelize','QueryTypes','contact','UserId','User','find','fullname','interface','format','SIP/%s','name','agent','incomingmessage','outgoingmessage','opened','ContactId','SELECT','changed','closed','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','email','internal','default','hasOwnProperty','model','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','lodash','client','http','Chat','afterCreate','newinteraction','ChatInteraction','closedinteraction','ChatMessage','SmsInteraction','afterUpdate','Sms','newmessage','WhatsappInteraction','Whatsapp'];(function(_0x30d87a,_0xf3a07f){var _0x48f64b=function(_0x2078b7){while(--_0x2078b7){_0x30d87a['push'](_0x30d87a['shift']());}};_0x48f64b(++_0xf3a07f);}(_0x4702,0x1d7));var _0x2470=function(_0xc26d95,_0x1e1ee6){_0xc26d95=_0xc26d95-0x0;var _0x3c6a03=_0x4702[_0xc26d95];return _0x3c6a03;};'use strict';var util=require(_0x2470('0x0'));var db=require(_0x2470('0x1'))['db'];var jayson=require(_0x2470('0x2'));var logger=require('../logger')(_0x2470('0x3'));var _=require(_0x2470('0x4'));var client=jayson[_0x2470('0x5')][_0x2470('0x6')]({'port':0x232a});var triggers=[{'channel':_0x2470('0x7'),'model':'ChatInteraction','event':_0x2470('0x8'),'condition':_0x2470('0x9'),'callback':afterCreate},{'channel':_0x2470('0x7'),'model':_0x2470('0xa'),'event':'afterUpdate','condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0x2470('0xc'),'event':_0x2470('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Sms','model':_0x2470('0xd'),'event':_0x2470('0x8'),'condition':_0x2470('0x9'),'callback':afterCreate},{'channel':'Sms','model':_0x2470('0xd'),'event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0xf'),'model':'SmsMessage','event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x2470('0x11'),'event':'afterCreate','condition':_0x2470('0x9'),'callback':afterCreate},{'channel':_0x2470('0x12'),'model':_0x2470('0x11'),'event':_0x2470('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x2470('0x12'),'model':_0x2470('0x13'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':_0x2470('0x14'),'model':_0x2470('0x15'),'event':_0x2470('0x8'),'condition':_0x2470('0x9'),'callback':afterCreate},{'channel':_0x2470('0x14'),'model':'FaxInteraction','event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0x14'),'model':_0x2470('0x16'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':_0x2470('0x17'),'model':_0x2470('0x18'),'event':_0x2470('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x2470('0x17'),'model':_0x2470('0x18'),'event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0x17'),'model':_0x2470('0x19'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x2470('0x1a'),'event':_0x2470('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x2470('0x1b'),'model':_0x2470('0x1a'),'event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0x1b'),'model':_0x2470('0x1c'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage}];function request(_0x148720){return client[_0x2470('0x1d')]('EventManager',_0x148720)[_0x2470('0x1e')](function(_0x50c97e){logger['info'](_0x2470('0x1f'),_0x2470('0x20'),_0x50c97e);if(_0x50c97e[_0x2470('0x21')]){if(_0x50c97e[_0x2470('0x21')][_0x2470('0x22')]===0x1f4){logger[_0x2470('0x21')]('Trigger,\x20%s','EventManager',_0x50c97e['error']);}}})[_0x2470('0x23')](function(_0x2881f4){logger[_0x2470('0x21')](_0x2470('0x1f'),_0x2470('0x20'),_0x2881f4);});}function afterCreateMessage(_0x35f868,_0x5664ca){return function(_0xd7e660,_0x44f521){_0xd7e660=_0xd7e660[_0x2470('0x24')]({'plain':!![]});_0xd7e660[_0x2470('0x25')]=_0x35f868;_0xd7e660[_0x2470('0x26')]=_0xd7e660[_0x2470('0x27')];var _0x43b862='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xd7e660['ContactId'];return db[_0x2470('0x28')][_0x2470('0x29')](_0x43b862,{'type':db[_0x2470('0x2a')][_0x2470('0x2b')]['SELECT'],'raw':!![]})['then'](function(_0x50dfb3){return _0x50dfb3;})[_0x2470('0x1e')](function(_0x4cad34){if(_0x4cad34){_0xd7e660[_0x2470('0x2c')]=_0x4cad34[0x0];}if(_0xd7e660[_0x2470('0x2d')]){return db[_0x2470('0x2e')][_0x2470('0x2f')]({'where':{'id':_0xd7e660[_0x2470('0x2d')]},'attributes':['id','name',_0x2470('0x30'),'email','internal'],'raw':!![]})[_0x2470('0x1e')](function(_0x9c96d0){_0xd7e660[_0x2470('0x31')]=util[_0x2470('0x32')](_0x2470('0x33'),_0x9c96d0[_0x2470('0x34')]);_0xd7e660[_0x2470('0x25')]=_0x35f868;_0xd7e660[_0x2470('0x35')]=_0x9c96d0;return request({'event':_0x2470('0x36'),'message':_0xd7e660});})['catch'](function(_0x2ec6a8){console[_0x2470('0x21')](_0x2ec6a8);});}else{return request({'event':_0x2470('0x37'),'message':_0xd7e660});}});};}function afterCreate(_0x3241a4,_0x40d4fa){return function(_0x2d386d,_0x46e5f6){_0x2d386d=_0x2d386d[_0x2470('0x24')]({'plain':!![]});_0x2d386d[_0x2470('0x25')]=_0x3241a4;_0x2d386d[_0x2470('0x26')]=_0x2470('0x38');var _0x87a895='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2d386d[_0x2470('0x39')];return db[_0x2470('0x28')][_0x2470('0x29')](_0x87a895,{'type':db[_0x2470('0x2a')][_0x2470('0x2b')][_0x2470('0x3a')],'raw':!![]})['then'](function(_0x29a976){return _0x29a976;})['then'](function(_0x1e4144){if(_0x1e4144){_0x2d386d[_0x2470('0x2c')]=_0x1e4144[0x0];}return request({'event':_0x40d4fa,'message':_0x2d386d});});};}function afterUpdate(_0xd8aa30,_0x2b7c9b){return function(_0x4670dc,_0xfcc863){if(_0x4670dc[_0x2470('0x3b')](_0x2470('0x3c'))&&_0x4670dc[_0x2470('0x3c')]){_0x4670dc=_0x4670dc[_0x2470('0x24')]({'plain':!![]});_0x4670dc[_0x2470('0x25')]=_0xd8aa30;_0x4670dc['event']=_0x2470('0x3c');var _0x4294dc=_0x2470('0x3d')+_0x4670dc[_0x2470('0x39')];return db[_0x2470('0x28')][_0x2470('0x29')](_0x4294dc,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x2470('0x1e')](function(_0x1f6935){return _0x1f6935;})[_0x2470('0x1e')](function(_0x486617){if(_0x486617){_0x4670dc[_0x2470('0x2c')]=_0x486617[0x0];}if(_0x4670dc[_0x2470('0x2d')]){return db['User'][_0x2470('0x2f')]({'where':{'id':_0x4670dc[_0x2470('0x2d')]},'attributes':['id',_0x2470('0x34'),_0x2470('0x30'),_0x2470('0x3e'),_0x2470('0x3f')],'raw':!![]})[_0x2470('0x1e')](function(_0x3262bc){_0x4670dc['interface']=util['format'](_0x2470('0x33'),_0x3262bc[_0x2470('0x34')]);_0x4670dc[_0x2470('0x35')]=_0x3262bc;return request({'event':_0x2b7c9b,'message':_0x4670dc});})[_0x2470('0x23')](function(_0x1b77ff){console[_0x2470('0x21')](_0x1b77ff);});}else{return request({'event':_0x2b7c9b,'message':_0x4670dc});}});}};}exports[_0x2470('0x40')]=function(){for(var _0x35d516=0x0;_0x35d516<triggers['length'];_0x35d516+=0x1){if(db[_0x2470('0x41')](triggers[_0x35d516]['model'])){db[triggers[_0x35d516][_0x2470('0x42')]]['hook'](triggers[_0x35d516][_0x2470('0x26')],triggers[_0x35d516][_0x2470('0x43')](triggers[_0x35d516][_0x2470('0x25')][_0x2470('0x44')](),triggers[_0x35d516][_0x2470('0x45')]));}}};
\ No newline at end of file
+var _0x2da5=['sequelize','Sequelize','SELECT','contact','UserId','User','find','fullname','internal','format','SIP/%s','channel','agent','incomingmessage','opened','ContactId','query','QueryTypes','closed','get','name','email','interface','default','length','model','hook','util','../../mysqldb','jayson/promise','triggers','lodash','client','Chat','ChatInteraction','afterCreate','ChatMessage','newmessage','Sms','SmsInteraction','newinteraction','afterUpdate','closedinteraction','SmsMessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxMessage','Mail','MailInteraction','substatus','MailMessage','Openchannel','OpenchannelInteraction','request','then','EventManager','error','code','catch','Trigger,\x20%s','motionChannel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x2da5,0x123));var _0x52da=function(_0x214091,_0x1cdaa0){_0x214091=_0x214091-0x0;var _0x4d7acc=_0x2da5[_0x214091];return _0x4d7acc;};'use strict';var util=require(_0x52da('0x0'));var db=require(_0x52da('0x1'))['db'];var jayson=require(_0x52da('0x2'));var logger=require('../logger')(_0x52da('0x3'));var _=require(_0x52da('0x4'));var client=jayson[_0x52da('0x5')]['http']({'port':0x232a});var triggers=[{'channel':_0x52da('0x6'),'model':_0x52da('0x7'),'event':_0x52da('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x52da('0x6'),'model':'ChatInteraction','event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x52da('0x6'),'model':_0x52da('0x9'),'event':_0x52da('0x8'),'condition':_0x52da('0xa'),'callback':afterCreateMessage},{'channel':_0x52da('0xb'),'model':_0x52da('0xc'),'event':_0x52da('0x8'),'condition':_0x52da('0xd'),'callback':afterCreate},{'channel':'Sms','model':_0x52da('0xc'),'event':_0x52da('0xe'),'condition':_0x52da('0xf'),'callback':afterUpdate},{'channel':_0x52da('0xb'),'model':_0x52da('0x10'),'event':'afterCreate','condition':_0x52da('0xa'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x52da('0x11'),'event':_0x52da('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x52da('0x12'),'model':_0x52da('0x11'),'event':_0x52da('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x52da('0x12'),'model':_0x52da('0x13'),'event':_0x52da('0x8'),'condition':_0x52da('0xa'),'callback':afterCreateMessage},{'channel':_0x52da('0x14'),'model':'FaxInteraction','event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x52da('0x14'),'model':'FaxInteraction','event':_0x52da('0xe'),'condition':_0x52da('0xf'),'callback':afterUpdate},{'channel':'Fax','model':_0x52da('0x15'),'event':'afterCreate','condition':_0x52da('0xa'),'callback':afterCreateMessage},{'channel':_0x52da('0x16'),'model':_0x52da('0x17'),'event':_0x52da('0x8'),'condition':_0x52da('0xd'),'callback':afterCreate},{'channel':'Mail','model':_0x52da('0x17'),'event':_0x52da('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Mail','model':_0x52da('0x17'),'event':_0x52da('0x18'),'condition':_0x52da('0x18'),'callback':afterUpdate},{'channel':_0x52da('0x16'),'model':_0x52da('0x19'),'event':_0x52da('0x8'),'condition':_0x52da('0xa'),'callback':afterCreateMessage},{'channel':_0x52da('0x1a'),'model':_0x52da('0x1b'),'event':_0x52da('0x8'),'condition':_0x52da('0xd'),'callback':afterCreate},{'channel':_0x52da('0x1a'),'model':_0x52da('0x1b'),'event':_0x52da('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x52da('0x1a'),'model':'OpenchannelMessage','event':'afterCreate','condition':_0x52da('0xa'),'callback':afterCreateMessage}];function request(_0x43dbeb){return client[_0x52da('0x1c')]('EventManager',_0x43dbeb)[_0x52da('0x1d')](function(_0x1c266d){logger['info']('Trigger,\x20%s',_0x52da('0x1e'),_0x1c266d);if(_0x1c266d[_0x52da('0x1f')]){if(_0x1c266d[_0x52da('0x1f')][_0x52da('0x20')]===0x1f4){logger['error']('Trigger,\x20%s','EventManager',_0x1c266d['error']);}}})[_0x52da('0x21')](function(_0x1ab3d9){logger[_0x52da('0x1f')](_0x52da('0x22'),_0x52da('0x1e'),_0x1ab3d9);});}function afterCreateMessage(_0x3739e0,_0xace4f5){return function(_0x4a2eae,_0x459ff8){_0x4a2eae=_0x4a2eae['get']({'plain':!![]});_0x4a2eae['channel']=_0x3739e0;_0x4a2eae[_0x52da('0x23')]=_0x3739e0;_0x4a2eae[_0x52da('0x24')]=_0x4a2eae[_0x52da('0x25')];var _0x524ee9=_0x52da('0x26')+_0x4a2eae['ContactId'];return db[_0x52da('0x27')]['query'](_0x524ee9,{'type':db[_0x52da('0x28')]['QueryTypes'][_0x52da('0x29')],'raw':!![]})[_0x52da('0x1d')](function(_0x286630){return _0x286630;})[_0x52da('0x1d')](function(_0x2b4fbc){if(_0x2b4fbc){_0x4a2eae[_0x52da('0x2a')]=_0x2b4fbc[0x0];}if(_0x4a2eae[_0x52da('0x2b')]){return db[_0x52da('0x2c')][_0x52da('0x2d')]({'where':{'id':_0x4a2eae['UserId']},'attributes':['id','name',_0x52da('0x2e'),'email',_0x52da('0x2f')],'raw':!![]})[_0x52da('0x1d')](function(_0x5f3a5a){_0x4a2eae['interface']=util[_0x52da('0x30')](_0x52da('0x31'),_0x5f3a5a['name']);_0x4a2eae[_0x52da('0x32')]=_0x3739e0;_0x4a2eae[_0x52da('0x33')]=_0x5f3a5a;return request({'event':_0x52da('0x34'),'message':_0x4a2eae});})[_0x52da('0x21')](function(_0x5ac01f){console[_0x52da('0x1f')](_0x5ac01f);});}else{return request({'event':'outgoingmessage','message':_0x4a2eae});}});};}function afterCreate(_0x1055b1,_0x24eaea){return function(_0x4adee8,_0x420db1){_0x4adee8=_0x4adee8['get']({'plain':!![]});_0x4adee8['channel']=_0x1055b1;_0x4adee8['motionChannel']=_0x1055b1;_0x4adee8[_0x52da('0x24')]=_0x52da('0x35');var _0x588da6='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4adee8[_0x52da('0x36')];return db[_0x52da('0x27')][_0x52da('0x37')](_0x588da6,{'type':db[_0x52da('0x28')][_0x52da('0x38')][_0x52da('0x29')],'raw':!![]})[_0x52da('0x1d')](function(_0x49c688){return _0x49c688;})[_0x52da('0x1d')](function(_0x201e43){if(_0x201e43){_0x4adee8[_0x52da('0x2a')]=_0x201e43[0x0];}return request({'event':_0x24eaea,'message':_0x4adee8});});};}function afterUpdate(_0x4278a7,_0x37d56e){return function(_0x1b45db,_0x522031){if(_0x1b45db['changed'](_0x52da('0x39'))&&_0x1b45db['closed']){_0x1b45db=_0x1b45db[_0x52da('0x3a')]({'plain':!![]});_0x1b45db[_0x52da('0x32')]=_0x4278a7;_0x1b45db[_0x52da('0x23')]=_0x4278a7;_0x1b45db[_0x52da('0x24')]=_0x52da('0x39');var _0x1893f4=_0x52da('0x26')+_0x1b45db[_0x52da('0x36')];return db['sequelize'][_0x52da('0x37')](_0x1893f4,{'type':db[_0x52da('0x28')]['QueryTypes'][_0x52da('0x29')],'raw':!![]})[_0x52da('0x1d')](function(_0x192bd8){return _0x192bd8;})[_0x52da('0x1d')](function(_0x5efdb3){if(_0x5efdb3){_0x1b45db[_0x52da('0x2a')]=_0x5efdb3[0x0];}if(_0x1b45db[_0x52da('0x2b')]){return db['User'][_0x52da('0x2d')]({'where':{'id':_0x1b45db['UserId']},'attributes':['id',_0x52da('0x3b'),_0x52da('0x2e'),_0x52da('0x3c'),_0x52da('0x2f')],'raw':!![]})[_0x52da('0x1d')](function(_0x1695b9){_0x1b45db[_0x52da('0x3d')]=util[_0x52da('0x30')](_0x52da('0x31'),_0x1695b9['name']);_0x1b45db[_0x52da('0x33')]=_0x1695b9;return request({'event':_0x37d56e,'message':_0x1b45db});})[_0x52da('0x21')](function(_0x5c2d38){console[_0x52da('0x1f')](_0x5c2d38);});}else{return request({'event':_0x37d56e,'message':_0x1b45db});}});}else if(_0x1b45db['changed'](_0x52da('0x18'))){_0x1b45db=_0x1b45db[_0x52da('0x3a')]({'plain':!![]});_0x1b45db[_0x52da('0x32')]=_0x4278a7;_0x1b45db['event']=_0x52da('0x18');var _0x1893f4=_0x52da('0x26')+_0x1b45db['ContactId'];return db[_0x52da('0x27')]['query'](_0x1893f4,{'type':db['Sequelize'][_0x52da('0x38')][_0x52da('0x29')],'raw':!![]})[_0x52da('0x1d')](function(_0x164064){return _0x164064;})[_0x52da('0x1d')](function(_0x115fb7){if(_0x115fb7){_0x1b45db[_0x52da('0x2a')]=_0x115fb7[0x0];}if(_0x1b45db[_0x52da('0x2b')]){return db[_0x52da('0x2c')][_0x52da('0x2d')]({'where':{'id':_0x1b45db['UserId']},'attributes':['id','name','fullname','email','internal'],'raw':!![]})['then'](function(_0x492a3a){_0x1b45db[_0x52da('0x3d')]=util['format']('SIP/%s',_0x492a3a['name']);_0x1b45db[_0x52da('0x33')]=_0x492a3a;return request({'event':_0x37d56e,'message':_0x1b45db});})[_0x52da('0x21')](function(_0x3f0daa){console[_0x52da('0x1f')](_0x3f0daa);});}else{return request({'event':_0x37d56e,'message':_0x1b45db});}});}};}exports[_0x52da('0x3e')]=function(){for(var _0x22db4c=0x0;_0x22db4c<triggers[_0x52da('0x3f')];_0x22db4c+=0x1){if(db['hasOwnProperty'](triggers[_0x22db4c][_0x52da('0x40')])){db[triggers[_0x22db4c][_0x52da('0x40')]][_0x52da('0x41')](triggers[_0x22db4c]['event'],triggers[_0x22db4c]['callback'](triggers[_0x22db4c][_0x52da('0x32')]['toLowerCase'](),triggers[_0x22db4c]['condition']));}}};
\ No newline at end of file
index 5564a6f..e62bdea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf39=['User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','isUndefined','blockedAt','updateAttributes','getLicense','role','agent'];(function(_0x1eba32,_0x362c7f){var _0x40462e=function(_0x43f3cf){while(--_0x43f3cf){_0x1eba32['push'](_0x1eba32['shift']());}};_0x40462e(++_0x362c7f);}(_0xcf39,0xff));var _0x9cf3=function(_0x408758,_0x548c1f){_0x408758=_0x408758-0x0;var _0x2e25ae=_0xcf39[_0x408758];return _0x2e25ae;};'use strict';var _=require(_0x9cf3('0x0'));var BPromise=require(_0x9cf3('0x1'));var db=require(_0x9cf3('0x2'))['db'];var util=require(_0x9cf3('0x3'));var channels=[_0x9cf3('0x4'),_0x9cf3('0x5'),_0x9cf3('0x6'),_0x9cf3('0x7'),_0x9cf3('0x8'),_0x9cf3('0x9'),_0x9cf3('0xa')];exports[_0x9cf3('0xb')]=function(){return channels;};exports[_0x9cf3('0xc')]=function(_0xa40261){_0xa40261=_0xa40261[_0x9cf3('0xd')]();return _['includes'](channels,_0xa40261);};exports['clearBlockUser']=function(_0x64da9d,_0x564d20,_0x960c86,_0x4e0996){var _0x219a37={'loginAttempts':_0x564d20,'blocked':_0x960c86};if(!_[_0x9cf3('0xe')](_0x4e0996)){_0x219a37[_0x9cf3('0xf')]=_0x4e0996;}return _0x64da9d[_0x9cf3('0x10')](_0x219a37);};exports[_0x9cf3('0x11')]=function(_0x572849){return new BPromise(function(_0x5ecf7e,_0xe793c){var _0x4a21e2=0x0;if(_0x572849[_0x9cf3('0x12')]!==_0x9cf3('0x13')){_0x5ecf7e(_0x572849);}db[_0x9cf3('0x14')][_0x9cf3('0x15')]({'where':{'role':_0x9cf3('0x13'),'online':!![],'id':{'$ne':_0x572849['id']}}})['then'](function(_0x147f66){_0x4a21e2=_0x147f66;return util[_0x9cf3('0x11')]();})[_0x9cf3('0x16')](function(_0x14b0cf){if(_0x14b0cf&&_0x14b0cf[_0x9cf3('0x17')]&&_0x4a21e2>=_0x14b0cf['agents']){throw Error(_0x9cf3('0x18'));}_0x5ecf7e(_0x572849);})['catch'](function(_0xfcd880){_0xe793c(_0xfcd880);});});};
\ No newline at end of file
+var _0x5878=['chat','fax','sms','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','../mysqldb','voice'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x5878,0x195));var _0x8587=function(_0xe61951,_0x518f71){_0xe61951=_0xe61951-0x0;var _0x3b8cf4=_0x5878[_0xe61951];return _0x3b8cf4;};'use strict';var _=require(_0x8587('0x0'));var BPromise=require('bluebird');var db=require(_0x8587('0x1'))['db'];var util=require('./license/util');var channels=[_0x8587('0x2'),'mail',_0x8587('0x3'),_0x8587('0x4'),_0x8587('0x5'),'whatsapp',_0x8587('0x6')];exports[_0x8587('0x7')]=function(){return channels;};exports[_0x8587('0x8')]=function(_0xbf5642){_0xbf5642=_0xbf5642[_0x8587('0x9')]();return _[_0x8587('0xa')](channels,_0xbf5642);};exports[_0x8587('0xb')]=function(_0x25764b,_0x33e4f8,_0x415453,_0x1f3b2a){var _0x2cc208={'loginAttempts':_0x33e4f8,'blocked':_0x415453};if(!_[_0x8587('0xc')](_0x1f3b2a)){_0x2cc208[_0x8587('0xd')]=_0x1f3b2a;}return _0x25764b[_0x8587('0xe')](_0x2cc208);};exports[_0x8587('0xf')]=function(_0xb70cbb){return new BPromise(function(_0x3d15c1,_0x117313){var _0x31433c=0x0;if(_0xb70cbb[_0x8587('0x10')]!==_0x8587('0x11')){_0x3d15c1(_0xb70cbb);}db[_0x8587('0x12')][_0x8587('0x13')]({'where':{'role':_0x8587('0x11'),'online':!![],'id':{'$ne':_0xb70cbb['id']}}})[_0x8587('0x14')](function(_0x2a6a36){_0x31433c=_0x2a6a36;return util[_0x8587('0xf')]();})[_0x8587('0x14')](function(_0x1112b7){if(_0x1112b7&&_0x1112b7[_0x8587('0x15')]&&_0x31433c>=_0x1112b7[_0x8587('0x15')]){throw Error(_0x8587('0x16'));}_0x3d15c1(_0xb70cbb);})[_0x8587('0x17')](function(_0x15a1b1){_0x117313(_0x15a1b1);});});};
\ No newline at end of file
index 1bce49f..14e122b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf1=['status','send','exports','404'];(function(_0x3ab031,_0x42eb99){var _0x212155=function(_0x13544a){while(--_0x13544a){_0x3ab031['push'](_0x3ab031['shift']());}};_0x212155(++_0x42eb99);}(_0x1cf1,0x10e));var _0x11cf=function(_0x5009a0,_0x5956c2){_0x5009a0=_0x5009a0-0x0;var _0x28f36b=_0x1cf1[_0x5009a0];return _0x28f36b;};'use strict';module[_0x11cf('0x0')][0x194]=function pageNotFound(_0x5547ac,_0x33899c){var _0x1e6f0c=_0x11cf('0x1');var _0x2db10c=0x194;var _0x4b2f31={'status':_0x2db10c};_0x33899c[_0x11cf('0x2')](_0x4b2f31['status']);_0x33899c['render'](_0x1e6f0c,{},function(_0x1859df,_0x3d9ead){if(_0x1859df){return _0x33899c[_0x11cf('0x2')](_0x4b2f31[_0x11cf('0x2')])['json'](_0x4b2f31);}_0x33899c[_0x11cf('0x3')](_0x3d9ead);});};
\ No newline at end of file
+var _0xe82b=['json','send','exports','404','status'];(function(_0x306941,_0x256ed0){var _0x2837ed=function(_0x200ed8){while(--_0x200ed8){_0x306941['push'](_0x306941['shift']());}};_0x2837ed(++_0x256ed0);}(_0xe82b,0x11a));var _0xbe82=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xe82b[_0x4fc9e6];return _0x551d28;};'use strict';module[_0xbe82('0x0')][0x194]=function pageNotFound(_0x267e53,_0x4fdeda){var _0x2c6165=_0xbe82('0x1');var _0xac5be3=0x194;var _0x1a3033={'status':_0xac5be3};_0x4fdeda[_0xbe82('0x2')](_0x1a3033[_0xbe82('0x2')]);_0x4fdeda['render'](_0x2c6165,{},function(_0x4494b7,_0x46c178){if(_0x4494b7){return _0x4fdeda['status'](_0x1a3033[_0xbe82('0x2')])[_0xbe82('0x3')](_0x1a3033);}_0x4fdeda[_0xbe82('0x4')](_0x46c178);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
new file mode 100644 (file)
index 0000000..c74843c
--- /dev/null
@@ -0,0 +1,178 @@
+'use strict';\r
+\r
+var BPromise = require('bluebird');\r
+var util = require('util');\r
+\r
+var logger = require('../config/logger')('migration');\r
+\r
+var Sequence = function() {};\r
+\r
+Sequence.prototype.enqueue = function(fn) {\r
+  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
+};\r
+\r
+var Migration = function(queryInterface) {\r
+  this.queryInterface = queryInterface;\r
+  this.sequence = new Sequence();\r
+};\r
+\r
+Migration.prototype.changeColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .changeColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Changed column %s in table %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Added column %s to %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.dropTable = function(table) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .dropTable(table, {\r
+        force: true\r
+      })\r
+      .then(function() {\r
+        logger.info('table dropped %s', table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addIndex = function(table, column, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addIndex(table, column, {\r
+        indexName: indexName\r
+      })\r
+      .then(function() {\r
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeIndex = function(table, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeIndex(table, indexName)\r
+      .then(function() {\r
+        logger.info('removeIndex %s %s', table, indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.query = function(sql) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface.sequelize\r
+      .query(sql)\r
+      .then(function() {\r
+        logger.info('query %s', sql);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeColumn = function(table, column) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeColumn(table, column)\r
+      .then(function() {\r
+        logger.info('Removed column %s from %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .renameColumn(table, oldColumn, newColumn)\r
+      .then(function() {\r
+        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.final = function(resolve) {\r
+  this.sequence.enqueue(function() {\r
+    return resolve();\r
+  });\r
+};\r
+\r
+module.exports = {\r
+  up: function(queryInterface, Sequelize) {\r
+    return new BPromise(function(resolve) {\r
+      var migration = new Migration(queryInterface);\r
+\r
+      // START team_has_voice_prefixes\r
+      migration.query('CREATE TABLE `team_has_voice_prefixes` ( \\r
+  `createdAt` datetime NOT NULL, \\r
+  `updatedAt` datetime NOT NULL, \\r
+  `VoicePrefixesId` int(11) DEFAULT NULL, \\r
+  PRIMARY KEY (`id`), \\r
+  KEY `VoicePrefixesId` (`VoicePrefixesId`), \\r
+  KEY `TeamsId` (`TeamsId`), \\r
+  CONSTRAINT `team_has_voice_prefixes_ibfk_1` FOREIGN KEY (`VoicePrefixesId`) REFERENCES `voice_prefixes` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,\\r
+  CONSTRAINT `team_has_voice_prefixes_ibfk_2` FOREIGN KEY (`TeamsId`) REFERENCES `teams` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,\\r
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;');\r
+      // END team_has_voice_prefixes\r
+\r
+      // START FINAL\r
+      migration.final(resolve);\r
+      // END FINAL\r
+    });\r
+  },\r
+\r
+  down: function(queryInterface, Sequelize) {\r
+    // var migration = new Migration(queryInterface);\r
+  }\r
+};
\ No newline at end of file
index 72a2533..b04d894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf839=['AttachmentId','team_has_fax_queues','SmsAccountId','user_has_sms_accounts','sms_interaction_has_tags','ThroughTags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelQueueId','openchannel_interaction_has_tags','user_has_openchannel_interactions','OpenchannelInteractionId','team_has_openchannel_queues','ChatApplication','OpenchannelQueueReport','Agent','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','chat_group_has_users','ChatProactiveAction','CompanyId','Hoppers','JscriptySessions','FaxInteractions','Company','cm_contact_has_tags','CampaignId','OwnerId','OneAll','Any','OneAny','AutomationAnyId','AutomationId','Intervals','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','Mohs','AllConditions','TriggerAllId','AnyConditions','AnyCondition','Actions','Fields','CustomReportId','MetricId','Configurations','AccountId','SalesforceField','Subjects','Descriptions','DescriptionId','FieldId','Subject','SubjectId','Description','Field','Variable','SugarcrmConfiguration','SugarcrmField','VariableId','int_desk_configuration_has_tags','ZohoField','int_zendesk_configuration_has_tags','FreshdeskField','VtigerConfiguration','VtigerField','ChatQueueReport','FromId','SessionId','JscriptyAnswerReport','SmsQueueReport','ProjectId','team_has_chat_queues','team_has_sms_queues','OpenchannelQueues','team_has_whatsapp_queues','WhatsappQueues','TrunkId','SquareProjectId','campaigns_has_cm_lists','ChatOfflineMessageId','FromMailAccountId','FromUserId','FromAgent','ToUserId','ToQueue','ToMailAccountId','ToAccount','ToAgent','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','FromAccount','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSections','UserProfileResource','Resources','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','whatsapp_interaction_has_tags','ToQueueId','WhatsappQueueId','exports','sequelize','lodash','jstz','determine','defaultsDeep','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','motion2','utf8','database','username','password','options','User','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','import','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceQueueReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelMessage','OpenchannelQueue','ChatWebsite','../api/chatWebsite/chatWebsite.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','Condition','../api/interval/interval.model','Pause','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/template/template.model','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','Network','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','hasOne','UserId','hasMany','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','SmsInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','CmContact','Contacts','cm_user_has_contacts','CmList','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_sms_interactions','user_has_whatsapp_interactions','VoiceQueues','UserVoiceQueue','MailQueues','ChatQueues','FaxQueues','SmsQueues','cm_user_has_lists','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProject','user_has_square_projects','SpiedAgents','cascade','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','TrunkBackup','TrunkBackupId','Interval','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','VoiceMailMessage','mailboxuser','VoiceCallReport','QueueCalls','VoiceAgentReport','AgentReports','uniqueid','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','Answers','Interactions','MailApplication','List','ListId','Template','Owner','mail_interaction_has_tags','Tags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','restrict','TagId','Dashboard','Items','FaxInteractionId','Account','FaxAccountId'];(function(_0x47aded,_0xb76625){var _0x505e9a=function(_0x68696d){while(--_0x68696d){_0x47aded['push'](_0x47aded['shift']());}};_0x505e9a(++_0xb76625);}(_0xf839,0x74));var _0x9f83=function(_0x1bd424,_0x3f4cb7){_0x1bd424=_0x1bd424-0x0;var _0x407431=_0xf839[_0x1bd424];return _0x407431;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x9f83('0x0'));var _=require(_0x9f83('0x1'));var jstz=require(_0x9f83('0x2'));var timezone=jstz[_0x9f83('0x3')]();config[_0x9f83('0x0')]=_[_0x9f83('0x4')](config[_0x9f83('0x0')],{'database':'motion2','username':_0x9f83('0x5'),'password':_0x9f83('0x6'),'options':{'host':_0x9f83('0x7'),'port':0xcea,'dialect':_0x9f83('0x8'),'dialectOptions':{'charset':_0x9f83('0x9')},'logging':![],'timezone':timezone[_0x9f83('0xa')](),'define':{'charset':'utf8','collate':_0x9f83('0xb')}}});config['sequelizeHistory']=_[_0x9f83('0x4')](config[_0x9f83('0xc')],{'database':_0x9f83('0xd'),'username':_0x9f83('0x5'),'password':_0x9f83('0x6'),'options':{'host':_0x9f83('0x7'),'port':0xcea,'dialect':_0x9f83('0x8'),'dialectOptions':{'charset':_0x9f83('0x9')},'logging':![],'timezone':timezone[_0x9f83('0xa')](),'define':{'charset':_0x9f83('0xe'),'collate':_0x9f83('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9f83('0x0')][_0x9f83('0xf')],config[_0x9f83('0x0')][_0x9f83('0x10')],config['sequelize'][_0x9f83('0x11')],config[_0x9f83('0x0')][_0x9f83('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9f83('0xc')][_0x9f83('0xf')],config[_0x9f83('0xc')][_0x9f83('0x10')],config[_0x9f83('0xc')][_0x9f83('0x11')],config[_0x9f83('0xc')][_0x9f83('0x12')])};db[_0x9f83('0x13')]=db['sequelize']['import'](_0x9f83('0x14'));db[_0x9f83('0x15')]=db['sequelize']['import'](_0x9f83('0x16'));db[_0x9f83('0x17')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x19'));db['VoiceExtension']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x1a'));db[_0x9f83('0x1b')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x9f83('0x1c')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceQueue/voiceQueue.model');db[_0x9f83('0x1d')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x1e'));db['ScreenRecording']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x1f'));db[_0x9f83('0x20')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x21'));db['VoiceMailMessage']=db['sequelize']['import'](_0x9f83('0x22'));db['VoiceCallReport']=db[_0x9f83('0x0')]['import'](_0x9f83('0x23'));db[_0x9f83('0x24')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x25'));db['VoiceAgentReport']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x9f83('0x26')]=db['sequelize'][_0x9f83('0x18')]('../api/voiceQueueReport/voiceQueueReport.model');db['MemberReport']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x27'));db[_0x9f83('0x28')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x29'));db[_0x9f83('0x2a')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0x9f83('0x2b')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db['UserVoiceQueue']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x9f83('0x2c')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x2d'));db[_0x9f83('0x2e')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x2f'));db[_0x9f83('0x30')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x31'));db[_0x9f83('0x32')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x33'));db[_0x9f83('0x34')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x35'));db[_0x9f83('0x36')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x37'));db[_0x9f83('0x38')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x39'));db[_0x9f83('0x3a')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x3b'));db['MailAccount']=db['sequelize']['import'](_0x9f83('0x3c'));db[_0x9f83('0x3d')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x3e'));db[_0x9f83('0x3f')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x40'));db[_0x9f83('0x41')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x42'));db[_0x9f83('0x43')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x44'));db['MailApplication']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x45'));db[_0x9f83('0x46')]=db['sequelize'][_0x9f83('0x18')]('../api/mailQueueReport/mailQueueReport.model');db['Dashboard']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x47'));db[_0x9f83('0x48')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x49'));db[_0x9f83('0x4a')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x4b'));db[_0x9f83('0x4c')]=db['sequelize']['import'](_0x9f83('0x4d'));db[_0x9f83('0x4e')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x4f'));db[_0x9f83('0x50')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x51'));db[_0x9f83('0x52')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/faxQueue/faxQueue.model');db[_0x9f83('0x53')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x54'));db['SmsAccount']=db[_0x9f83('0x0')]['import']('../api/smsAccount/smsAccount.model');db[_0x9f83('0x55')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x56'));db[_0x9f83('0x57')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x58'));db[_0x9f83('0x59')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x5a'));db[_0x9f83('0x5b')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x5c'));db[_0x9f83('0x5d')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x5e'));db[_0x9f83('0x5f')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x60'));db['OpenchannelInteraction']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x9f83('0x61')]=db['sequelize'][_0x9f83('0x18')]('../api/openchannelMessage/openchannelMessage.model');db[_0x9f83('0x62')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/openchannelQueue/openchannelQueue.model');db[_0x9f83('0x63')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x64'));db['OpenchannelQueueReport']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/chatApplication/chatApplication.model');db[_0x9f83('0x65')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x66'));db[_0x9f83('0x67')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x68'));db[_0x9f83('0x69')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x6a'));db[_0x9f83('0x6b')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x6c'));db[_0x9f83('0x6d')]=db['sequelize']['import'](_0x9f83('0x6e'));db['ChatProactiveAction']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x6f'));db[_0x9f83('0x70')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/cmCompany/cmCompany.model');db['CmContact']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x71'));db[_0x9f83('0x72')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x73'));db[_0x9f83('0x74')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x75'));db[_0x9f83('0x76')]=db['sequelize']['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0x9f83('0x77')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x78'));db[_0x9f83('0x79')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x7a'));db[_0x9f83('0x7b')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x7c'));db[_0x9f83('0x7d')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/action/action.model');db[_0x9f83('0x7e')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x7f'));db[_0x9f83('0x80')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x81'));db[_0x9f83('0x82')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/disposition/disposition.model');db[_0x9f83('0x83')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/condition/condition.model');db['Interval']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x84'));db[_0x9f83('0x85')]=db[_0x9f83('0x0')]['import']('../api/pause/pause.model');db['Cdr']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x86'));db[_0x9f83('0x87')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x88'));db[_0x9f83('0x89')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x8a'));db[_0x9f83('0x8b')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x8c'));db[_0x9f83('0x8d')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/tag/tag.model');db['Template']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x8e'));db[_0x9f83('0x8f')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x90'));db['Variable']=db['sequelize']['import'](_0x9f83('0x91'));db[_0x9f83('0x92')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x93'));db['IntegrationReport']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/integrationReport/integrationReport.model');db['AnalyticCustomReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x94'));db[_0x9f83('0x95')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x96'));db['AnalyticExtractedReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x97'));db[_0x9f83('0x98')]=db[_0x9f83('0x0')]['import']('../api/analyticMetric/analyticMetric.model');db[_0x9f83('0x99')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x9a'));db[_0x9f83('0x9b')]=db['sequelize'][_0x9f83('0x18')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x9f83('0x9c')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x9d'));db[_0x9f83('0x9e')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x9f'));db['SalesforceField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xa0'));db[_0x9f83('0xa1')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xa2'));db['SugarcrmConfiguration']=db[_0x9f83('0x0')]['import'](_0x9f83('0xa3'));db['SugarcrmField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xa4'));db[_0x9f83('0xa5')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xa6'));db[_0x9f83('0xa7')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x9f83('0xa8')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xa9'));db[_0x9f83('0xaa')]=db['sequelize']['import'](_0x9f83('0xab'));db[_0x9f83('0xac')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xad'));db['ZohoField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xae'));db[_0x9f83('0xaf')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x9f83('0xb0')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x9f83('0xb1')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xb2'));db[_0x9f83('0xb3')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x9f83('0xb4')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xb5'));db['FreshdeskField']=db[_0x9f83('0x0')]['import'](_0x9f83('0xb6'));db[_0x9f83('0xb7')]=db[_0x9f83('0x0')]['import']('../api/intVtigerAccount/intVtigerAccount.model');db['VtigerConfiguration']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db['VtigerField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xb8'));db[_0x9f83('0xb9')]=db['sequelize']['import'](_0x9f83('0xba'));db[_0x9f83('0xbb')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xbc'));db[_0x9f83('0xbd')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intServicenowField/intServicenowField.model');db[_0x9f83('0xbe')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x9f83('0xbf')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xc0'));db[_0x9f83('0xc1')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xc2'));db[_0x9f83('0xc3')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xc4'));db[_0x9f83('0xc5')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0x9f83('0xc6')]=db['sequelize'][_0x9f83('0x18')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x9f83('0x92')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x93'));db[_0x9f83('0xc7')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xc8'));db['ChatQueueReport']=db[_0x9f83('0x0')]['import'](_0x9f83('0xc9'));db[_0x9f83('0xca')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xcb'));db['JscriptyAnswerReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xcc'));db[_0x9f83('0xcd')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xce'));db[_0x9f83('0xcf')]=db['sequelize']['import'](_0x9f83('0xd0'));db['SmsQueueReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xd1'));db[_0x9f83('0xd2')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xd3'));db[_0x9f83('0xd4')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xd5'));db[_0x9f83('0xd6')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xd7'));db[_0x9f83('0xd8')]=db['sequelize'][_0x9f83('0x18')]('../api/setting/setting.model');db[_0x9f83('0xd9')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xda'));db['SquareProject']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/squareProject/squareProject.model');db['SquareRecording']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xdb'));db['SquareMessage']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xdc'));db[_0x9f83('0xdd')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xde'));db['License']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xdf'));db[_0x9f83('0xe0')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xe1'));db[_0x9f83('0xe2')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xe3'));db[_0x9f83('0xe4')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xe5'));db['Plugin']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xe6'));db[_0x9f83('0xe7')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/mailTransferReport/mailTransferReport.model');db[_0x9f83('0xe8')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xe9'));db[_0x9f83('0xea')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xeb'));db[_0x9f83('0xec')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xed'));db[_0x9f83('0xee')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xef'));db['CmList']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xf0'));db[_0x9f83('0xf1')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voicePrefix/voicePrefix.model');db[_0x9f83('0xf2')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xf3'));db[_0x9f83('0xf4')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xf5'));db['UserProfileResource']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xf6'));db[_0x9f83('0xf7')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xf8'));db[_0x9f83('0xf9')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xfa'));db['WhatsappApplication']=db[_0x9f83('0x0')]['import'](_0x9f83('0xfb'));db[_0x9f83('0xfc')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x9f83('0xfd')]=db['sequelize'][_0x9f83('0x18')]('../api/whatsappMessage/whatsappMessage.model');db[_0x9f83('0xfe')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xff'));db[_0x9f83('0x100')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x101'));db[_0x9f83('0x102')]=db['sequelize']['import'](_0x9f83('0x103'));db['CloudProvider']=db[_0x9f83('0x0')]['import'](_0x9f83('0x104'));db[_0x9f83('0x105')]=db[_0x9f83('0x0')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x9f83('0x13')][_0x9f83('0x106')](db[_0x9f83('0x20')],{'as':_0x9f83('0x20'),'onDelete':'cascade','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x1d')],{'as':'Recordings','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x2b')],{'as':_0x9f83('0x109'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')]['hasMany'](db[_0x9f83('0x10a')],{'as':_0x9f83('0x10b'),'onDelete':'cascade','hooks':!![]});db['User'][_0x9f83('0x108')](db['CmHopperFinal'],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')]['hasMany'](db[_0x9f83('0x77')],{'as':_0x9f83('0x10d'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db['ReportAgentPreview'],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x107')});db['User'][_0x9f83('0x108')](db[_0x9f83('0x10e')],{'as':_0x9f83('0x10f'),'foreignKey':_0x9f83('0x107')});db['User']['hasMany'](db[_0x9f83('0x65')],{'as':'ChatInteractions','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x57')],{'as':_0x9f83('0x110'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x4e')],{'as':'FaxInteractions','foreignKey':'UserId'});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x41')],{'as':_0x9f83('0x111'),'foreignKey':'UserId'});db[_0x9f83('0x13')][_0x9f83('0x108')](db['WhatsappInteraction'],{'as':_0x9f83('0x112'),'foreignKey':'UserId'});db['User'][_0x9f83('0x108')](db[_0x9f83('0xf7')],{'as':_0x9f83('0x113'),'foreignKey':_0x9f83('0x114')});db[_0x9f83('0x13')][_0x9f83('0x115')](db[_0x9f83('0xf2')],{'as':_0x9f83('0xf2'),'foreignKey':_0x9f83('0x116')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x6d')],{'as':'Groups','through':'chat_group_has_users'});db['User']['belongsToMany'](db[_0x9f83('0x118')],{'as':_0x9f83('0x119'),'through':_0x9f83('0x11a')});db[_0x9f83('0x13')]['belongsToMany'](db[_0x9f83('0x11b')],{'as':'Lists','through':'cm_user_has_lists'});db[_0x9f83('0x13')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':_0x9f83('0x11c')});db[_0x9f83('0x13')]['belongsToMany'](db[_0x9f83('0x41')],{'as':'MailInteractions','through':_0x9f83('0x11d')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x65')],{'as':'ChatInteractions','through':_0x9f83('0x11e')});db['User'][_0x9f83('0x117')](db['FaxInteraction'],{'as':'FaxInteractions','through':'user_has_fax_interactions'});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x57')],{'as':_0x9f83('0x110'),'through':_0x9f83('0x11f')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x10e')],{'as':_0x9f83('0x10f'),'through':'user_has_openchannel_interactions'});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0xfc')],{'as':_0x9f83('0x112'),'through':_0x9f83('0x120')});db[_0x9f83('0x13')][_0x9f83('0x117')](db['VoiceQueue'],{'as':_0x9f83('0x121'),'through':_0x9f83('0x122'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x3d')],{'as':_0x9f83('0x123'),'through':_0x9f83('0x2e'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x6b')],{'as':_0x9f83('0x124'),'through':_0x9f83('0x2c'),'required':![],'hooks':!![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x52')],{'as':_0x9f83('0x125'),'through':_0x9f83('0x30'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x5b')],{'as':_0x9f83('0x126'),'through':_0x9f83('0x32'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x62')],{'as':'OpenchannelQueues','through':_0x9f83('0x34'),'required':![]});db['User'][_0x9f83('0x117')](db[_0x9f83('0x102')],{'as':'WhatsappQueues','through':_0x9f83('0x36'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'through':_0x9f83('0x127')});db[_0x9f83('0x13')][_0x9f83('0x117')](db['VoicePrefix'],{'as':_0x9f83('0x128'),'through':_0x9f83('0x129'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x63')],{'as':_0x9f83('0x12a'),'through':_0x9f83('0x12b')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x4a')],{'as':'FaxAccounts','through':_0x9f83('0x12c')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x12d')],{'as':_0x9f83('0x12e'),'through':_0x9f83('0x12f')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x5d')],{'as':'OpenchannelAccounts','through':_0x9f83('0x130')});db['User']['belongsToMany'](db[_0x9f83('0x131')],{'as':_0x9f83('0x132'),'through':'user_has_sms_accounts'});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0xf9')],{'as':_0x9f83('0x133'),'through':_0x9f83('0x134')});db['User']['belongsToMany'](db[_0x9f83('0x135')],{'as':'SquareProjects','through':_0x9f83('0x136')});db[_0x9f83('0x15')][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'as':_0x9f83('0x137'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x139')});db[_0x9f83('0x17')][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'onDelete':_0x9f83('0x138')});db[_0x9f83('0x10a')][_0x9f83('0x108')](db['VoiceExtension'],{'as':_0x9f83('0x13a'),'onDelete':'cascade'});db[_0x9f83('0x1b')]['belongsToMany'](db[_0x9f83('0x8b')],{'as':_0x9f83('0x13b'),'through':_0x9f83('0x13c')});db[_0x9f83('0x1c')][_0x9f83('0x108')](db['UserVoiceQueueRt'],{'as':_0x9f83('0x13d'),'foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')][_0x9f83('0x108')](db[_0x9f83('0x72')],{'as':'Hoppers','foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')][_0x9f83('0x108')](db[_0x9f83('0x76')],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x13e')});db['VoiceQueue'][_0x9f83('0x108')](db['CmHopperHistory'],{'as':_0x9f83('0x13f'),'foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')]['hasMany'](db[_0x9f83('0x79')],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x13e')});db['VoiceQueue'][_0x9f83('0x108')](db[_0x9f83('0x74')],{'as':_0x9f83('0x140'),'foreignKey':_0x9f83('0x13e')});db['VoiceQueue'][_0x9f83('0x108')](db[_0x9f83('0xcf')],{'as':'JscriptySessions','foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')][_0x9f83('0x115')](db['Trunk'],{'as':'Trunk','foreignKey':'TrunkId'});db[_0x9f83('0x1c')][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':_0x9f83('0x141'),'foreignKey':_0x9f83('0x142')});db[_0x9f83('0x1c')][_0x9f83('0x115')](db[_0x9f83('0x143')],{'as':_0x9f83('0x143'),'foreignKey':_0x9f83('0x144')});db['VoiceQueue'][_0x9f83('0x115')](db['Pause'],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db[_0x9f83('0x1c')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x147'),'through':_0x9f83('0x148')});db[_0x9f83('0x1c')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x122')});db[_0x9f83('0x1c')][_0x9f83('0x117')](db[_0x9f83('0xdd')],{'as':_0x9f83('0x14a'),'through':'TeamVoiceQueue'});db[_0x9f83('0x1c')]['belongsToMany'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x14b'),'through':_0x9f83('0x14c')});db['VoiceRecording'][_0x9f83('0x115')](db['User'],{'as':'User','foreignKey':_0x9f83('0x107')});db['ScreenRecording'][_0x9f83('0x115')](db['User'],{'as':_0x9f83('0x13'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x20')][_0x9f83('0x108')](db['VoiceMailMessage'],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':'mailboxuser','sourceKey':_0x9f83('0x14e')});db[_0x9f83('0x14f')]['belongsTo'](db['VoiceMail'],{'foreignKey':_0x9f83('0x150'),'targetKey':_0x9f83('0x14e')});db[_0x9f83('0x151')][_0x9f83('0x108')](db[_0x9f83('0x26')],{'as':_0x9f83('0x152'),'foreignKey':'uniqueid','constraints':![]});db[_0x9f83('0x151')]['hasMany'](db[_0x9f83('0x153')],{'as':_0x9f83('0x154'),'foreignKey':_0x9f83('0x155'),'constraints':![]});db['VoiceCallReport'][_0x9f83('0x115')](db['User'],{'as':'User','foreignKey':'UserId'});db[_0x9f83('0x151')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x38')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'as':_0x9f83('0x12d'),'foreignKey':'MailAccountId'});db['MailServerOut'][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'as':_0x9f83('0x12d'),'foreignKey':_0x9f83('0x158')});db[_0x9f83('0x12d')]['hasOne'](db[_0x9f83('0x38')],{'as':_0x9f83('0x159'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x12d')][_0x9f83('0x106')](db[_0x9f83('0x3a')],{'as':_0x9f83('0x15a'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x12d')]['hasMany'](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':_0x9f83('0x158'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x12d')][_0x9f83('0x108')](db['CannedAnswer'],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x158')});db[_0x9f83('0x12d')][_0x9f83('0x108')](db['MailMessage'],{'as':'Messages','foreignKey':_0x9f83('0x158')});db[_0x9f83('0x12d')]['hasMany'](db['MailInteraction'],{'as':_0x9f83('0x15d')});db[_0x9f83('0x12d')][_0x9f83('0x108')](db[_0x9f83('0x15e')],{'as':_0x9f83('0x13a')});db['MailAccount'][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['MailAccount']['belongsTo'](db['Template'],{'as':_0x9f83('0x161'),'foreignKey':'TemplateId'});db['MailAccount'][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db[_0x9f83('0x12d')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x12f')});db[_0x9f83('0x3d')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x149'),'through':_0x9f83('0x2e')});db[_0x9f83('0x3d')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':'team_has_mail_queues','as':_0x9f83('0x14a')});db['MailInteraction']['hasMany'](db[_0x9f83('0x43')],{'as':'Messages','onDelete':_0x9f83('0x138'),'foreignKey':'MailInteractionId'});db['MailInteraction']['belongsTo'](db[_0x9f83('0x12d')],{'as':'Account','foreignKey':'MailAccountId'});db['MailInteraction'][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x41')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x162'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x41')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x163'),'as':_0x9f83('0x164')});db[_0x9f83('0x41')][_0x9f83('0x117')](db['Tag'],{'through':'mail_interaction_has_tags','as':'ThroughTags'});db[_0x9f83('0x41')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x165'),'through':_0x9f83('0x11d'),'foreignKey':_0x9f83('0x166')});db[_0x9f83('0x43')]['hasMany'](db[_0x9f83('0xe4')],{'as':_0x9f83('0x167'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x43')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':'User'});db[_0x9f83('0x43')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x43')]['belongsTo'](db[_0x9f83('0x41')],{'as':_0x9f83('0x168'),'foreignKey':_0x9f83('0x166')});db[_0x9f83('0x43')]['belongsTo'](db['MailAccount'],{'as':'Account','foreignKey':'MailAccountId'});db[_0x9f83('0x43')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':_0x9f83('0x63'),'foreignKey':_0x9f83('0x169')});db[_0x9f83('0x43')][_0x9f83('0x115')](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db[_0x9f83('0x15e')][_0x9f83('0x115')](db['User'],{'onDelete':'restrict'});db[_0x9f83('0x15e')][_0x9f83('0x115')](db[_0x9f83('0x3d')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x15e')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'onDelete':'restrict'});db[_0x9f83('0x15e')][_0x9f83('0x115')](db[_0x9f83('0x143')],{'onDelete':'restrict','foreignKey':_0x9f83('0x144')});db[_0x9f83('0x15e')]['belongsTo'](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x16b')});db['MailQueueReport'][_0x9f83('0x115')](db['MailAccount'],{});db[_0x9f83('0x46')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x46')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x46')][_0x9f83('0x115')](db['MailInteraction'],{});db[_0x9f83('0x46')][_0x9f83('0x115')](db['MailMessage'],{});db[_0x9f83('0x46')]['belongsTo'](db[_0x9f83('0x13')],{});db[_0x9f83('0x46')][_0x9f83('0x115')](db[_0x9f83('0x3d')],{});db[_0x9f83('0x16c')][_0x9f83('0x108')](db['DashboardItem'],{'as':_0x9f83('0x16d'),'onDelete':_0x9f83('0x138')});db['FaxAccount'][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':'FaxAccountId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x4a')][_0x9f83('0x108')](db[_0x9f83('0x80')],{'as':'Answers','foreignKey':'FaxAccountId'});db[_0x9f83('0x4a')][_0x9f83('0x108')](db[_0x9f83('0x4e')],{'as':_0x9f83('0x15d')});db['FaxAccount']['hasMany'](db[_0x9f83('0x4c')],{'as':'Applications'});db['FaxAccount'][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'as':'Exntensions','onDelete':_0x9f83('0x138')});db[_0x9f83('0x4a')][_0x9f83('0x108')](db[_0x9f83('0x50')],{'as':_0x9f83('0x14d')});db[_0x9f83('0x4a')][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':_0x9f83('0x28')});db[_0x9f83('0x4a')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['FaxAccount'][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':'mandatoryDispositionPauseId'});db['FaxAccount'][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':'user_has_fax_accounts'});db[_0x9f83('0x4c')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x16a')});db['FaxApplication'][_0x9f83('0x115')](db['FaxQueue'],{'onDelete':'restrict'});db[_0x9f83('0x4c')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x4c')][_0x9f83('0x115')](db[_0x9f83('0x8d')],{'onDelete':'restrict','foreignKey':_0x9f83('0x16b')});db[_0x9f83('0x4e')][_0x9f83('0x108')](db[_0x9f83('0x50')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x16e')});db[_0x9f83('0x4e')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x170')});db[_0x9f83('0x4e')]['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId'});db[_0x9f83('0x4e')][_0x9f83('0x115')](db['User'],{'as':_0x9f83('0x162'),'foreignKey':'UserId'});db['FaxInteraction'][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'fax_interaction_has_tags','as':_0x9f83('0x164')});db['FaxInteraction'][_0x9f83('0x117')](db['Tag'],{'through':'fax_interaction_has_tags','as':'ThroughTags'});db[_0x9f83('0x4e')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':'user_has_fax_interactions','foreignKey':_0x9f83('0x16e')});db['FaxMessage']['belongsTo'](db['User'],{'onDelete':'cascade','as':_0x9f83('0x13')});db[_0x9f83('0x50')]['belongsTo'](db[_0x9f83('0x4e')],{'as':_0x9f83('0x168'),'foreignKey':_0x9f83('0x16e')});db[_0x9f83('0x50')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x50')][_0x9f83('0x115')](db['Attachment'],{'as':_0x9f83('0xe4'),'foreignKey':_0x9f83('0x171')});db[_0x9f83('0x50')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x170')});db[_0x9f83('0x52')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x30')});db['FaxQueue'][_0x9f83('0x117')](db[_0x9f83('0xdd')],{'through':_0x9f83('0x172'),'as':'Teams'});db[_0x9f83('0x53')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{});db[_0x9f83('0x53')]['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x53')]['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x53')]['belongsTo'](db[_0x9f83('0x4e')],{});db[_0x9f83('0x53')][_0x9f83('0x115')](db['FaxMessage'],{});db[_0x9f83('0x53')][_0x9f83('0x115')](db['User'],{});db[_0x9f83('0x53')][_0x9f83('0x115')](db['FaxQueue'],{});db[_0x9f83('0x131')][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':_0x9f83('0x173'),'onDelete':'cascade'});db[_0x9f83('0x131')]['hasMany'](db[_0x9f83('0x80')],{'as':'Answers','foreignKey':'SmsAccountId'});db['SmsAccount']['hasMany'](db[_0x9f83('0x59')],{'as':_0x9f83('0x14d'),'foreignKey':_0x9f83('0x173')});db[_0x9f83('0x131')]['hasMany'](db[_0x9f83('0x57')],{'as':'Interactions'});db[_0x9f83('0x131')][_0x9f83('0x108')](db[_0x9f83('0x55')],{'as':'Applications'});db[_0x9f83('0x131')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x131')]['belongsTo'](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x9f83('0x146')});db[_0x9f83('0x131')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x174')});db['SmsApplication'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':'restrict'});db[_0x9f83('0x55')]['belongsTo'](db[_0x9f83('0x5b')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x55')][_0x9f83('0x115')](db[_0x9f83('0x131')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x55')][_0x9f83('0x115')](db[_0x9f83('0x143')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0x55')]['belongsTo'](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x16b')});db[_0x9f83('0x57')][_0x9f83('0x108')](db[_0x9f83('0x59')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':'SmsInteractionId'});db[_0x9f83('0x57')]['belongsTo'](db[_0x9f83('0x131')],{'as':'Account','foreignKey':'SmsAccountId'});db['SmsInteraction']['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x57')]['belongsTo'](db[_0x9f83('0x13')],{'as':'Owner','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x57')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x175'),'as':_0x9f83('0x164')});db[_0x9f83('0x57')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x175'),'as':_0x9f83('0x176')});db[_0x9f83('0x57')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':'user_has_sms_interactions','foreignKey':_0x9f83('0x177')});db['SmsMessage'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':'User'});db[_0x9f83('0x59')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x59')][_0x9f83('0x115')](db[_0x9f83('0x57')],{'onDelete':_0x9f83('0x138'),'as':'Interaction','foreignKey':_0x9f83('0x177')});db[_0x9f83('0x59')][_0x9f83('0x115')](db[_0x9f83('0x131')],{'as':_0x9f83('0x16f'),'foreignKey':'SmsAccountId'});db[_0x9f83('0x5b')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x32'),'foreignKey':_0x9f83('0x178')});db[_0x9f83('0x5b')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':'team_has_sms_queues','as':'Teams'});db[_0x9f83('0x5d')][_0x9f83('0x108')](db['Disposition'],{'as':_0x9f83('0x15b'),'foreignKey':'OpenchannelAccountId','onDelete':_0x9f83('0x138')});db['OpenchannelAccount'][_0x9f83('0x108')](db[_0x9f83('0x80')],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x179')});db['OpenchannelAccount'][_0x9f83('0x108')](db[_0x9f83('0x10e')],{'as':_0x9f83('0x15d'),'foreignKey':_0x9f83('0x179')});db[_0x9f83('0x5d')][_0x9f83('0x108')](db[_0x9f83('0x61')],{'as':_0x9f83('0x14d'),'foreignKey':_0x9f83('0x179')});db[_0x9f83('0x5d')][_0x9f83('0x108')](db[_0x9f83('0x5f')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x5d')][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db['OpenchannelAccount'][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x130')});db[_0x9f83('0x5f')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x16a')});db['OpenchannelApplication'][_0x9f83('0x115')](db['OpenchannelQueue'],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x17a')});db[_0x9f83('0x5f')]['belongsTo'](db[_0x9f83('0x5d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x179')});db['OpenchannelApplication'][_0x9f83('0x115')](db[_0x9f83('0x143')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x144')});db['OpenchannelApplication'][_0x9f83('0x115')](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':'TagId'});db[_0x9f83('0x10e')]['hasMany'](db['OpenchannelMessage'],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelInteraction'][_0x9f83('0x115')](db[_0x9f83('0x5d')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x179')});db['OpenchannelInteraction']['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId'});db[_0x9f83('0x10e')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x162'),'foreignKey':'UserId'});db[_0x9f83('0x10e')][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x17b'),'as':_0x9f83('0x164')});db[_0x9f83('0x10e')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'openchannel_interaction_has_tags','as':'ThroughTags'});db[_0x9f83('0x10e')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x165'),'through':_0x9f83('0x17c'),'foreignKey':_0x9f83('0x17d')});db['OpenchannelMessage'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x13')});db[_0x9f83('0x61')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x61')][_0x9f83('0x115')](db[_0x9f83('0x10e')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x168'),'foreignKey':'OpenchannelInteractionId'});db[_0x9f83('0x61')][_0x9f83('0x115')](db[_0x9f83('0xe4')],{'as':'Attachment','foreignKey':_0x9f83('0x171')});db[_0x9f83('0x61')][_0x9f83('0x115')](db['OpenchannelAccount'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x179')});db[_0x9f83('0x62')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x149'),'through':_0x9f83('0x34'),'foreignKey':_0x9f83('0x17a')});db[_0x9f83('0x62')][_0x9f83('0x117')](db[_0x9f83('0xdd')],{'through':_0x9f83('0x17e'),'as':_0x9f83('0x14a')});db[_0x9f83('0x63')][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':'Dispositions','foreignKey':_0x9f83('0x169'),'onDelete':'cascade'});db['ChatWebsite'][_0x9f83('0x108')](db[_0x9f83('0x80')],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x169')});db['ChatWebsite'][_0x9f83('0x108')](db['ChatProactiveAction'],{'as':'ProactiveActions'});db[_0x9f83('0x63')][_0x9f83('0x108')](db[_0x9f83('0x65')],{'as':_0x9f83('0x15d')});db[_0x9f83('0x63')][_0x9f83('0x108')](db[_0x9f83('0x17f')],{'as':'Applications'});db[_0x9f83('0x63')]['hasMany'](db[_0x9f83('0x67')],{'as':_0x9f83('0x14d')});db['ChatWebsite']['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['ChatWebsite'][_0x9f83('0x115')](db['Interval'],{'as':_0x9f83('0x143'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0x63')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'as':'MailAccount','foreignKey':_0x9f83('0x158')});db[_0x9f83('0x63')][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db['ChatWebsite'][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x149'),'through':_0x9f83('0x12b')});db['OpenchannelQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x5d')],{});db[_0x9f83('0x180')][_0x9f83('0x115')](db['CmList'],{'as':_0x9f83('0x15f'),'foreignKey':'ListId'});db['OpenchannelQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':'Contact','foreignKey':_0x9f83('0x157')});db['OpenchannelQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x10e')],{});db[_0x9f83('0x180')]['belongsTo'](db['OpenchannelMessage'],{});db[_0x9f83('0x180')]['belongsTo'](db[_0x9f83('0x13')],{});db[_0x9f83('0x180')][_0x9f83('0x115')](db[_0x9f83('0x62')],{});db[_0x9f83('0x17f')]['belongsTo'](db[_0x9f83('0x13')],{'as':_0x9f83('0x181'),'foreignKey':_0x9f83('0x107'),'onDelete':_0x9f83('0x16a')});db['ChatApplication'][_0x9f83('0x115')](db[_0x9f83('0x6b')],{'as':'Queue','foreignKey':_0x9f83('0x182'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x17f')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':_0x9f83('0x183'),'foreignKey':_0x9f83('0x169'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x17f')][_0x9f83('0x115')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x9f83('0x65')][_0x9f83('0x108')](db[_0x9f83('0x67')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x184')});db['ChatInteraction'][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x169')});db[_0x9f83('0x65')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId'});db['ChatInteraction'][_0x9f83('0x115')](db['User'],{'as':'Owner','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x65')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'chat_interaction_has_tags','as':_0x9f83('0x164')});db[_0x9f83('0x65')][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x185'),'as':'ThroughTags'});db['ChatInteraction'][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x165'),'through':_0x9f83('0x11e'),'foreignKey':_0x9f83('0x184')});db[_0x9f83('0x67')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x13')});db[_0x9f83('0x67')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x67')][_0x9f83('0x115')](db[_0x9f83('0x65')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x168'),'foreignKey':_0x9f83('0x184')});db[_0x9f83('0x67')][_0x9f83('0x115')](db[_0x9f83('0xe4')],{'as':_0x9f83('0xe4'),'foreignKey':'AttachmentId'});db[_0x9f83('0x67')][_0x9f83('0x115')](db['ChatWebsite'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x169')});db[_0x9f83('0x69')][_0x9f83('0x108')](db['Attachment'],{'as':_0x9f83('0x167'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x9f83('0x69')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':'Contact','foreignKey':_0x9f83('0x157')});db[_0x9f83('0x69')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':'Account','foreignKey':_0x9f83('0x169')});db[_0x9f83('0x6b')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x2c'),'hooks':!![]});db['ChatQueue'][_0x9f83('0x117')](db['Team'],{'through':'team_has_chat_queues','as':_0x9f83('0x14a')});db['ChatGroup'][_0x9f83('0x108')](db[_0x9f83('0xca')],{'as':'Messages','foreignKey':_0x9f83('0x186'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x6d')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x13d'),'through':_0x9f83('0x187')});db[_0x9f83('0x188')][_0x9f83('0x115')](db['ChatWebsite'],{'as':_0x9f83('0x183'),'foreignKey':'ChatWebsiteId'});db[_0x9f83('0x70')][_0x9f83('0x108')](db[_0x9f83('0x118')],{'as':_0x9f83('0x119'),'foreignKey':_0x9f83('0x189')});db[_0x9f83('0x118')]['hasMany'](db['CmHopper'],{'as':_0x9f83('0x18a'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x118')]['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'ContactId'});db[_0x9f83('0x118')][_0x9f83('0x108')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'ContactId'});db['CmContact'][_0x9f83('0x108')](db[_0x9f83('0x79')],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x118')][_0x9f83('0x108')](db[_0x9f83('0xcf')],{'as':_0x9f83('0x18b'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x118')]['hasMany'](db[_0x9f83('0x10e')],{'as':_0x9f83('0x10f'),'foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db[_0x9f83('0x65')],{'as':'ChatInteractions','foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db[_0x9f83('0x57')],{'as':_0x9f83('0x110'),'foreignKey':'ContactId','onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db['FaxInteraction'],{'as':_0x9f83('0x18c'),'foreignKey':'ContactId','onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db['MailInteraction'],{'as':_0x9f83('0x111'),'foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x115')](db['CmCompany'],{'as':_0x9f83('0x18d'),'foreignKey':_0x9f83('0x189')});db[_0x9f83('0x118')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':'List','foreignKey':_0x9f83('0x160'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x118')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':_0x9f83('0x11a')});db[_0x9f83('0x118')]['belongsToMany'](db[_0x9f83('0x8d')],{'as':_0x9f83('0x164'),'through':_0x9f83('0x18e')});db['CmContact'][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x18e'),'as':'ThroughTags'});db[_0x9f83('0x72')][_0x9f83('0x115')](db['CmContact'],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x72')]['belongsTo'](db['CmList'],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160'),'onDelete':_0x9f83('0x138')});db['CmHopper'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x181'),'foreignKey':'UserId'});db['CmHopper'][_0x9f83('0x115')](db['VoiceQueue'],{'as':'Queue','foreignKey':_0x9f83('0x13e'),'onDelete':_0x9f83('0x138')});db['CmHopper']['belongsTo'](db[_0x9f83('0xe0')],{'as':_0x9f83('0xe0'),'foreignKey':_0x9f83('0x18f'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x72')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':'Owner','foreignKey':_0x9f83('0x190')});db[_0x9f83('0x74')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x74')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160'),'onDelete':_0x9f83('0x138')});db['CmHopperBlack'][_0x9f83('0x115')](db[_0x9f83('0x1c')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x74')][_0x9f83('0x115')](db[_0x9f83('0xe0')],{'as':'Campaign','foreignKey':_0x9f83('0x18f'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x7e')]['hasMany'](db[_0x9f83('0x83')],{'as':{'plural':'All','singular':_0x9f83('0x191')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x9f83('0x7e')]['hasMany'](db[_0x9f83('0x83')],{'as':{'plural':_0x9f83('0x192'),'singular':_0x9f83('0x193')},'foreignKey':_0x9f83('0x194'),'onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x7e')][_0x9f83('0x108')](db[_0x9f83('0x7d')],{'as':'Actions','foreignKey':_0x9f83('0x195'),'onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x82')][_0x9f83('0x108')](db['Disposition'],{'as':_0x9f83('0x15b'),'foreignKey':'ParentId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x143')][_0x9f83('0x108')](db[_0x9f83('0x143')],{'as':_0x9f83('0x196'),'foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0x9f83('0x143')]['hasMany'](db[_0x9f83('0x10a')],{'as':_0x9f83('0x10b'),'foreignKey':'IntervalId','onDelete':_0x9f83('0x16a')});db[_0x9f83('0x143')]['hasMany'](db[_0x9f83('0x15e')],{'as':'MailApplications','foreignKey':'IntervalId'});db[_0x9f83('0x143')]['hasMany'](db[_0x9f83('0x17f')],{'as':_0x9f83('0x197'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0x143')][_0x9f83('0x108')](db[_0x9f83('0x4c')],{'as':_0x9f83('0x198'),'foreignKey':'IntervalId'});db[_0x9f83('0x143')][_0x9f83('0x108')](db[_0x9f83('0x55')],{'as':_0x9f83('0x199'),'foreignKey':'IntervalId'});db[_0x9f83('0x89')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{});db[_0x9f83('0x89')][_0x9f83('0x115')](db['AnalyticDefaultReport'],{'foreignKey':_0x9f83('0x19a')});db[_0x9f83('0x89')][_0x9f83('0x115')](db['AnalyticCustomReport'],{'foreignKey':'CustomReportId'});db[_0x9f83('0x8b')][_0x9f83('0x117')](db['VoiceMusicOnHold'],{'as':_0x9f83('0x19b'),'through':_0x9f83('0x13c'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x8d')][_0x9f83('0x117')](db[_0x9f83('0x118')],{'through':'cm_contact_has_tags'});db['Tag'][_0x9f83('0x117')](db[_0x9f83('0x65')],{'through':'chat_interaction_has_tags'});db[_0x9f83('0x8d')][_0x9f83('0x117')](db[_0x9f83('0x41')],{'through':_0x9f83('0x163')});db[_0x9f83('0x8d')]['belongsToMany'](db[_0x9f83('0x57')],{'through':_0x9f83('0x175')});db[_0x9f83('0x8d')][_0x9f83('0x117')](db[_0x9f83('0x4e')],{'through':'fax_interaction_has_tags'});db[_0x9f83('0x8d')][_0x9f83('0x117')](db['OpenchannelInteraction'],{'through':_0x9f83('0x17b')});db['Tag'][_0x9f83('0x117')](db[_0x9f83('0xfc')],{'through':'whatsapp_interaction_has_tags'});db[_0x9f83('0x8f')][_0x9f83('0x108')](db['Condition'],{'as':{'plural':_0x9f83('0x19c'),'singular':'AllCondition'},'foreignKey':_0x9f83('0x19d'),'onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x8f')]['hasMany'](db[_0x9f83('0x83')],{'as':{'plural':_0x9f83('0x19e'),'singular':_0x9f83('0x19f')},'foreignKey':'TriggerAnyId','onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x8f')][_0x9f83('0x108')](db['Action'],{'as':_0x9f83('0x1a0'),'foreignKey':'TriggerId','onDelete':_0x9f83('0x138'),'hooks':!![]});db['AnalyticCustomReport']['hasMany'](db[_0x9f83('0x99')],{'as':_0x9f83('0x1a1'),'onDelete':'cascade','foreignKey':_0x9f83('0x1a2'),'hooks':!![]});db['AnalyticDefaultReport'][_0x9f83('0x108')](db['AnalyticFieldReport'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x19a')});db[_0x9f83('0x98')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a3')});db[_0x9f83('0x99')][_0x9f83('0x115')](db[_0x9f83('0x98')],{'foreignKey':'MetricId'});db['SalesforceAccount'][_0x9f83('0x108')](db[_0x9f83('0x9e')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0x9e')][_0x9f83('0x108')](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1a7'),'onDelete':_0x9f83('0x138'),'foreignKey':'SubjectId'});db[_0x9f83('0x9e')]['hasMany'](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1a8'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x9e')]['hasMany'](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db['SalesforceConfiguration'][_0x9f83('0x115')](db[_0x9f83('0x9c')],{'as':'Account','foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0x1a6')][_0x9f83('0x108')](db['SalesforceField'],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0x1a6')]['hasMany'](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1a6')][_0x9f83('0x108')](db['SalesforceField'],{'as':_0x9f83('0x1ae'),'foreignKey':'FieldId'});db[_0x9f83('0x1a6')]['belongsTo'](db[_0x9f83('0x1af')],{'as':'Variable','foreignKey':'VariableId'});db['SugarcrmAccount'][_0x9f83('0x108')](db[_0x9f83('0x1b0')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':'AccountId'});db[_0x9f83('0x1b0')][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':_0x9f83('0x1a7'),'onDelete':_0x9f83('0x138'),'foreignKey':'SubjectId'});db['SugarcrmConfiguration'][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b0')][_0x9f83('0x108')](db['SugarcrmField'],{'as':_0x9f83('0x1a1'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x9f83('0x1b0')][_0x9f83('0x115')](db['SugarcrmAccount'],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db['SugarcrmField'][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0x1b1')][_0x9f83('0x108')](db['SugarcrmField'],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b1')][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db['SugarcrmField']['belongsTo'](db[_0x9f83('0x1af')],{'as':'Variable','foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xa5')][_0x9f83('0x108')](db['DeskConfiguration'],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xa7')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1a7'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1ac')});db['DeskConfiguration']['hasMany'](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1a8'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xa7')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xa7')]['belongsTo'](db['DeskAccount'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xa7')]['belongsToMany'](db[_0x9f83('0x8d')],{'through':_0x9f83('0x1b3')});db[_0x9f83('0xa8')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xa8')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xa8')]['hasMany'](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1ae'),'foreignKey':'FieldId'});db[_0x9f83('0xa8')][_0x9f83('0x115')](db['Variable'],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xaa')][_0x9f83('0x108')](db[_0x9f83('0xac')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xac')][_0x9f83('0x108')](db['ZohoField'],{'as':'Subjects','onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1ac')});db['ZohoConfiguration'][_0x9f83('0x108')](db['ZohoField'],{'as':'Descriptions','onDelete':_0x9f83('0x138'),'foreignKey':'DescriptionId'});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':'FieldId'});db[_0x9f83('0xac')][_0x9f83('0x115')](db['ZohoAccount'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0x1b4')][_0x9f83('0x108')](db[_0x9f83('0x1b4')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x9f83('0x1b4')][_0x9f83('0x108')](db['ZohoField'],{'as':'Description','foreignKey':_0x9f83('0x1a9')});db['ZohoField']['hasMany'](db['ZohoField'],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0x1b4')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':'Variable','foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xaf')][_0x9f83('0x108')](db['ZendeskConfiguration'],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xb0')][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1a7'),'foreignKey':_0x9f83('0x1ac')});db['ZendeskConfiguration'][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1a8'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xb0')][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1a1'),'foreignKey':'FieldId'});db['ZendeskConfiguration'][_0x9f83('0x115')](db[_0x9f83('0xaf')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db['ZendeskConfiguration'][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x1b5')});db['ZendeskField'][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xb1')]['hasMany'](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1ad'),'foreignKey':'DescriptionId'});db['ZendeskField']['hasMany'](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1ae'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xb1')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xb3')][_0x9f83('0x108')](db[_0x9f83('0xb4')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xb4')][_0x9f83('0x108')](db['FreshdeskField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x9f83('0x1ac')});db['FreshdeskConfiguration'][_0x9f83('0x108')](db[_0x9f83('0x1b6')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xb4')][_0x9f83('0x108')](db[_0x9f83('0x1b6')],{'as':'Fields','onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db['FreshdeskConfiguration'][_0x9f83('0x115')](db[_0x9f83('0xb3')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xb4')][_0x9f83('0x117')](db['Tag'],{'through':'int_freshdesk_configuration_has_tags'});db[_0x9f83('0x1b6')][_0x9f83('0x108')](db['FreshdeskField'],{'as':'Subject','foreignKey':_0x9f83('0x1ac')});db['FreshdeskField'][_0x9f83('0x108')](db[_0x9f83('0x1b6')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b6')][_0x9f83('0x108')](db['FreshdeskField'],{'as':_0x9f83('0x1ae'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0x1b6')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xb7')][_0x9f83('0x108')](db[_0x9f83('0x1b7')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':'AccountId'});db[_0x9f83('0x1b7')][_0x9f83('0x108')](db[_0x9f83('0x1b8')],{'as':_0x9f83('0x1a7'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0x1b7')][_0x9f83('0x108')](db[_0x9f83('0x1b8')],{'as':_0x9f83('0x1a8'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b7')][_0x9f83('0x108')](db['VtigerField'],{'as':_0x9f83('0x1a1'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0x1b7')]['belongsTo'](db[_0x9f83('0xb7')],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db[_0x9f83('0x1b8')][_0x9f83('0x108')](db['VtigerField'],{'as':_0x9f83('0x1ab'),'foreignKey':'SubjectId'});db[_0x9f83('0x1b8')]['hasMany'](db[_0x9f83('0x1b8')],{'as':_0x9f83('0x1ad'),'foreignKey':'DescriptionId'});db[_0x9f83('0x1b8')][_0x9f83('0x108')](db[_0x9f83('0x1b8')],{'as':'Field','foreignKey':'FieldId'});db[_0x9f83('0x1b8')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xb9')][_0x9f83('0x108')](db[_0x9f83('0xbb')],{'as':_0x9f83('0x1a4'),'onDelete':'cascade','foreignKey':'AccountId'});db['ServicenowConfiguration'][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1a7'),'foreignKey':_0x9f83('0x1ac')});db['ServicenowConfiguration']['hasMany'](db['ServicenowField'],{'as':'Descriptions','foreignKey':_0x9f83('0x1a9')});db['ServicenowConfiguration'][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1a1'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xbb')][_0x9f83('0x115')](db['ServicenowAccount'],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db['ServicenowField'][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xbd')][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xbd')][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xbd')]['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xbe')][_0x9f83('0x108')](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db['Dynamics365Configuration'][_0x9f83('0x108')](db['Dynamics365Field'],{'as':'Subjects','onDelete':_0x9f83('0x138'),'foreignKey':'SubjectId'});db[_0x9f83('0xbf')][_0x9f83('0x108')](db[_0x9f83('0xc1')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xbf')][_0x9f83('0x108')](db['Dynamics365Field'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xbf')][_0x9f83('0x115')](db[_0x9f83('0xbe')],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db[_0x9f83('0xc1')][_0x9f83('0x108')](db[_0x9f83('0xc1')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db['Dynamics365Field'][_0x9f83('0x108')](db[_0x9f83('0xc1')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xc1')]['hasMany'](db[_0x9f83('0xc1')],{'as':_0x9f83('0x1ae'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xc1')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xc3')][_0x9f83('0x108')](db['FreshsalesConfiguration'],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db['FreshsalesConfiguration']['hasMany'](db['FreshsalesField'],{'as':_0x9f83('0x1a7'),'foreignKey':'SubjectId'});db[_0x9f83('0xc5')][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':'Descriptions','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xc5')][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':_0x9f83('0x1a1'),'foreignKey':'FieldId'});db['FreshsalesConfiguration']['belongsTo'](db[_0x9f83('0xc3')],{'as':'Account','foreignKey':_0x9f83('0x1a5')});db['FreshsalesField'][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xc6')]['hasMany'](db[_0x9f83('0xc6')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xc6')][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xc6')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':'VariableId'});db[_0x9f83('0x1b9')][_0x9f83('0x115')](db['ChatWebsite'],{});db[_0x9f83('0x1b9')]['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['ChatQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x1b9')]['belongsTo'](db[_0x9f83('0x65')],{});db[_0x9f83('0x1b9')][_0x9f83('0x115')](db[_0x9f83('0x67')],{});db[_0x9f83('0x1b9')]['belongsTo'](db['User'],{});db['ChatQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x6b')],{});db['ChatInternalMessage'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1ba')});db[_0x9f83('0xca')]['belongsTo'](db['User'],{'onDelete':_0x9f83('0x138'),'foreignKey':'ToId'});db[_0x9f83('0xcf')][_0x9f83('0x108')](db[_0x9f83('0xcd')],{'foreignKey':_0x9f83('0x1bb'),'onDelete':'cascade'});db['JscriptySessionReport'][_0x9f83('0x108')](db[_0x9f83('0x1bc')],{'foreignKey':_0x9f83('0x1bb'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x1bd')]['belongsTo'](db['SmsAccount'],{});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db['CmList'],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db['CmContact'],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db[_0x9f83('0x57')],{});db[_0x9f83('0x1bd')]['belongsTo'](db[_0x9f83('0x59')],{});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db[_0x9f83('0x13')],{});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db[_0x9f83('0x5b')],{});db[_0x9f83('0xd6')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x9f83('0x1be')});db[_0x9f83('0xd6')][_0x9f83('0x108')](db[_0x9f83('0xcd')],{'foreignKey':_0x9f83('0x1be')});db[_0x9f83('0xd6')][_0x9f83('0x108')](db[_0x9f83('0x1bc')],{'foreignKey':_0x9f83('0x1be')});db[_0x9f83('0x135')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':_0x9f83('0x136')});db[_0x9f83('0xdd')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x11c')});db['Team'][_0x9f83('0x117')](db[_0x9f83('0x1c')],{'through':_0x9f83('0x105'),'as':_0x9f83('0x121')});db[_0x9f83('0xdd')]['belongsToMany'](db[_0x9f83('0x3d')],{'through':'team_has_mail_queues','as':_0x9f83('0x123')});db['Team'][_0x9f83('0x117')](db[_0x9f83('0x6b')],{'through':_0x9f83('0x1bf'),'as':_0x9f83('0x124')});db[_0x9f83('0xdd')][_0x9f83('0x117')](db[_0x9f83('0x52')],{'through':'team_has_fax_queues','as':_0x9f83('0x125')});db[_0x9f83('0xdd')]['belongsToMany'](db[_0x9f83('0x5b')],{'through':_0x9f83('0x1c0'),'as':_0x9f83('0x126')});db[_0x9f83('0xdd')]['belongsToMany'](db[_0x9f83('0x62')],{'through':_0x9f83('0x17e'),'as':_0x9f83('0x1c1')});db[_0x9f83('0xdd')][_0x9f83('0x117')](db['WhatsappQueue'],{'through':_0x9f83('0x1c2'),'as':_0x9f83('0x1c3')});db[_0x9f83('0xe0')]['hasMany'](db[_0x9f83('0x72')],{'as':_0x9f83('0x18a'),'foreignKey':_0x9f83('0x18f')});db['Campaign'][_0x9f83('0x108')](db[_0x9f83('0x76')],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x18f')});db[_0x9f83('0xe0')][_0x9f83('0x108')](db[_0x9f83('0x77')],{'as':_0x9f83('0x13f'),'foreignKey':_0x9f83('0x18f')});db[_0x9f83('0xe0')][_0x9f83('0x108')](db['CmHopperBlack'],{'as':_0x9f83('0x140'),'foreignKey':_0x9f83('0x18f')});db['Campaign'][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':_0x9f83('0x28'),'foreignKey':_0x9f83('0x1c4')});db[_0x9f83('0xe0')][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':'TrunkBackup','foreignKey':_0x9f83('0x142')});db['Campaign'][_0x9f83('0x115')](db[_0x9f83('0x143')],{'as':_0x9f83('0x143'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0xe0')][_0x9f83('0x115')](db[_0x9f83('0x135')],{'as':'SquareProject','foreignKey':_0x9f83('0x1c5')});db[_0x9f83('0xe0')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x147'),'through':_0x9f83('0x1c6')});db[_0x9f83('0xe0')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x14b'),'through':'campaigns_has_cm_blacklists'});db[_0x9f83('0xe4')][_0x9f83('0x115')](db[_0x9f83('0x69')],{'as':'ChatOfflineMessage','foreignKey':_0x9f83('0x1c7')});db[_0x9f83('0xe7')][_0x9f83('0x115')](db[_0x9f83('0x43')],{});db[_0x9f83('0xe7')][_0x9f83('0x115')](db[_0x9f83('0x41')],{});db['MailTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'foreignKey':_0x9f83('0x1c8'),'as':'FromAccount'});db['MailTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':_0x9f83('0x1ca')});db[_0x9f83('0xe7')]['belongsTo'](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':'ToAgent'});db[_0x9f83('0xe7')][_0x9f83('0x115')](db[_0x9f83('0x3d')],{'foreignKey':'ToMailQueueId','as':_0x9f83('0x1cc')});db['MailTransferReport']['belongsTo'](db['MailAccount'],{'foreignKey':_0x9f83('0x1cd'),'as':_0x9f83('0x1ce')});db[_0x9f83('0xe8')][_0x9f83('0x115')](db['ChatMessage'],{});db['ChatTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x65')],{});db[_0x9f83('0xe8')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db[_0x9f83('0xe8')][_0x9f83('0x115')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x9f83('0xe8')]['belongsTo'](db['User'],{'foreignKey':_0x9f83('0x1cb'),'as':_0x9f83('0x1cf')});db['ChatTransferReport']['belongsTo'](db[_0x9f83('0x6b')],{'foreignKey':_0x9f83('0x1d0'),'as':_0x9f83('0x1cc')});db[_0x9f83('0xe8')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'foreignKey':_0x9f83('0x1d1'),'as':'ToAccount'});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x50')],{});db[_0x9f83('0xea')]['belongsTo'](db[_0x9f83('0x4e')],{});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'foreignKey':_0x9f83('0x1d2'),'as':'FromAccount'});db[_0x9f83('0xea')]['belongsTo'](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':'FromAgent'});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':'ToAgent'});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x52')],{'foreignKey':'ToFaxQueueId','as':_0x9f83('0x1cc')});db['FaxTransferReport']['belongsTo'](db[_0x9f83('0x4a')],{'foreignKey':_0x9f83('0x1d3'),'as':_0x9f83('0x1ce')});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x61')],{});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x10e')],{});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x5d')],{'foreignKey':_0x9f83('0x1d4'),'as':_0x9f83('0x1d5')});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':_0x9f83('0x1ca')});db['OpenchannelTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':'ToUserId','as':_0x9f83('0x1cf')});db[_0x9f83('0xec')]['belongsTo'](db[_0x9f83('0x62')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x5d')],{'foreignKey':_0x9f83('0x1d6'),'as':_0x9f83('0x1ce')});db[_0x9f83('0xee')][_0x9f83('0x115')](db[_0x9f83('0x59')],{});db[_0x9f83('0xee')][_0x9f83('0x115')](db[_0x9f83('0x57')],{});db[_0x9f83('0xee')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x9f83('0x1d7'),'as':_0x9f83('0x1d5')});db[_0x9f83('0xee')][_0x9f83('0x115')](db['User'],{'foreignKey':_0x9f83('0x1c9'),'as':_0x9f83('0x1ca')});db[_0x9f83('0xee')]['belongsTo'](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':'ToAgent'});db['SmsTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x5b')],{'foreignKey':_0x9f83('0x1d8'),'as':_0x9f83('0x1cc')});db[_0x9f83('0xee')][_0x9f83('0x115')](db[_0x9f83('0x131')],{'foreignKey':_0x9f83('0x1d9'),'as':_0x9f83('0x1ce')});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':_0x9f83('0x160'),'onDelete':'cascade'});db['CmList'][_0x9f83('0x108')](db[_0x9f83('0x7b')],{'as':_0x9f83('0x1da'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x118')],{'as':_0x9f83('0x119'),'onDelete':_0x9f83('0x138'),'foreignKey':'ListId'});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x76')],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x77')],{'as':_0x9f83('0x10d'),'foreignKey':'ListId'});db[_0x9f83('0x11b')]['hasMany'](db[_0x9f83('0x79')],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x11b')][_0x9f83('0x117')](db[_0x9f83('0x1c')],{'as':'Queues','through':_0x9f83('0x148')});db[_0x9f83('0x11b')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x127')});db[_0x9f83('0xf1')][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'as':_0x9f83('0x10b'),'onDelete':'cascade'});db['VoicePrefix'][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':'Agents','through':_0x9f83('0x129')});db[_0x9f83('0xf2')][_0x9f83('0x108')](db[_0x9f83('0x13')],{'as':'Users','foreignKey':_0x9f83('0x116')});db[_0x9f83('0xf2')][_0x9f83('0x108')](db[_0x9f83('0xf4')],{'as':_0x9f83('0x1db'),'foreignKey':_0x9f83('0x116'),'onDelete':_0x9f83('0x138')});db['UserProfileSection']['hasMany'](db[_0x9f83('0x1dc')],{'as':_0x9f83('0x1dd'),'foreignKey':'sectionId','onDelete':_0x9f83('0x138')});db['WhatsappAccount'][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':'Dispositions','foreignKey':_0x9f83('0x1de'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0xf9')]['hasMany'](db['CannedAnswer'],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x1de')});db['WhatsappAccount'][_0x9f83('0x108')](db[_0x9f83('0xfd')],{'as':'Messages','foreignKey':_0x9f83('0x1de')});db['WhatsappAccount'][_0x9f83('0x108')](db[_0x9f83('0xfc')],{'as':_0x9f83('0x15d')});db[_0x9f83('0xf9')][_0x9f83('0x108')](db[_0x9f83('0x1df')],{'as':_0x9f83('0x13a')});db[_0x9f83('0xf9')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0x9f83('0x160')});db[_0x9f83('0xf9')][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':'mandatoryDispositionPauseId'});db['WhatsappAccount']['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x134')});db[_0x9f83('0x1df')]['belongsTo'](db['User'],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x1df')]['belongsTo'](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0x9f83('0x1df')]['belongsTo'](db[_0x9f83('0xf9')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x1df')][_0x9f83('0x115')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x9f83('0x144')});db[_0x9f83('0x1df')][_0x9f83('0x115')](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x16b')});db[_0x9f83('0xfc')][_0x9f83('0x108')](db[_0x9f83('0xfd')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1e0')});db['WhatsappInteraction']['belongsTo'](db[_0x9f83('0xf9')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1de')});db[_0x9f83('0xfc')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':'Contact','foreignKey':'ContactId'});db['WhatsappInteraction'][_0x9f83('0x115')](db['User'],{'as':_0x9f83('0x162'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0xfc')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'whatsapp_interaction_has_tags','as':_0x9f83('0x164')});db[_0x9f83('0xfc')][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x1e1'),'as':_0x9f83('0x176')});db[_0x9f83('0xfc')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':_0x9f83('0x120'),'foreignKey':_0x9f83('0x1e0')});db[_0x9f83('0xfd')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x13')});db[_0x9f83('0xfd')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':'Contact'});db[_0x9f83('0xfd')]['belongsTo'](db[_0x9f83('0xfc')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x9f83('0x1e0')});db['WhatsappMessage'][_0x9f83('0x115')](db[_0x9f83('0xf9')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1de')});db['WhatsappQueueReport'][_0x9f83('0x115')](db[_0x9f83('0xf9')],{});db[_0x9f83('0xfe')]['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0xfe')]['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0xfe')][_0x9f83('0x115')](db[_0x9f83('0xfc')],{});db[_0x9f83('0xfe')][_0x9f83('0x115')](db[_0x9f83('0x102')],{});db[_0x9f83('0xfe')]['belongsTo'](db[_0x9f83('0xfd')],{});db[_0x9f83('0xfe')][_0x9f83('0x115')](db[_0x9f83('0x13')],{});db[_0x9f83('0x100')][_0x9f83('0x115')](db['WhatsappMessage'],{});db['WhatsappTransferReport'][_0x9f83('0x115')](db['WhatsappInteraction'],{});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0xf9')],{'foreignKey':'FromWhatsappAccountId','as':_0x9f83('0x1d5')});db['WhatsappTransferReport'][_0x9f83('0x115')](db[_0x9f83('0xf9')],{'foreignKey':'ToWhatsappAccountId','as':_0x9f83('0x1ce')});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0x102')],{'foreignKey':_0x9f83('0x1e2'),'as':_0x9f83('0x1cc')});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':'FromAgent'});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':_0x9f83('0x1cf')});db[_0x9f83('0x102')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x36'),'foreignKey':_0x9f83('0x1e3')});db[_0x9f83('0x102')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':_0x9f83('0x1c2'),'as':_0x9f83('0x14a')});module[_0x9f83('0x1e4')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xc66c=['SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/interval/interval.model','Pause','../api/pause/pause.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','../api/integration/integration.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','../api/intServicenowField/intServicenowField.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','SmsQueueReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Migration','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/cloudProvider/cloudProvider.model','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','VoiceMail','cascade','UserId','hasMany','VoiceRecording','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','MailInteractions','belongsTo','userProfileId','chat_group_has_users','belongsToMany','Contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','SmsInteractions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','ChatQueue','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','UserWhatsappQueue','ChatWebsite','ChatWebsites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProject','user_has_square_projects','ChanSpyId','Applications','Sound','Sounds','moh_has_sounds','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','mandatoryDispositionPause','Teams','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','mailboxuser','mailbox','uniqueid','AgentReports','ContactId','MailAccountId','hasOne','MailServerIn','Imap','Smtp','Dispositions','Answers','Messages','ListId','TemplateId','mandatoryDispositionPauseId','Agents','team_has_mail_queues','MailInteractionId','Account','Contact','Owner','Tags','mail_interaction_has_tags','ThroughTags','Users','Attachments','ChatOfflineMessageId','restrict','Interval','IntervalId','TagId','Items','FaxAccountId','Interactions','FaxApplication','Exntensions','List','FaxInteractionId','fax_interaction_has_tags','AttachmentId','SmsAccountId','SmsMessage','sms_interaction_has_tags','SmsInteractionId','Interaction','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ChatWebsiteId','ChatApplication','ChatMessage','user_has_chat_websites','Agent','Website','chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','ChatGroupId','Members','CompanyId','Company','cm_user_has_contacts','cm_contact_has_tags','Queue','Campaign','CampaignId','OwnerId','AutomationAllId','Any','OneAny','AutomationAnyId','AutomationId','ParentId','Intervals','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllConditions','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','Variable','VariableId','SugarcrmConfiguration','Configurations','int_desk_configuration_has_tags','ZohoAccount','ZohoField','int_zendesk_configuration_has_tags','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowAccount','ServicenowField','Dynamics365Field','ChatQueueReport','FromId','JscriptyQuestionReport','SessionId','ProjectId','team_has_sms_queues','team_has_whatsapp_queues','TeamVoicePrefix','VoicePrefixes','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromAccount','FromAgent','ToAgent','ToQueue','ToMailAccountId','ToAccount','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToUserId','ToFaxQueueId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','voice_queues_has_cm_lists','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','utf8_general_ci','sequelizeHistory','motion2','utf8','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../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','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication'];(function(_0x18b009,_0x136e4d){var _0x4679d1=function(_0x20c10a){while(--_0x20c10a){_0x18b009['push'](_0x18b009['shift']());}};_0x4679d1(++_0x136e4d);}(_0xc66c,0x19b));var _0xcc66=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xc66c[_0x17d9e3];return _0x14192d;};'use strict';var config=require(_0xcc66('0x0'));var Sequelize=require(_0xcc66('0x1'));var _=require(_0xcc66('0x2'));var jstz=require(_0xcc66('0x3'));var timezone=jstz[_0xcc66('0x4')]();config[_0xcc66('0x1')]=_[_0xcc66('0x5')](config['sequelize'],{'database':'motion2','username':_0xcc66('0x6'),'password':_0xcc66('0x7'),'options':{'host':_0xcc66('0x8'),'port':0xcea,'dialect':_0xcc66('0x9'),'dialectOptions':{'charset':_0xcc66('0xa')},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0xcc66('0xb')}}});config[_0xcc66('0xc')]=_[_0xcc66('0x5')](config[_0xcc66('0xc')],{'database':_0xcc66('0xd'),'username':_0xcc66('0x6'),'password':'xC@LL1234','options':{'host':_0xcc66('0x8'),'port':0xcea,'dialect':_0xcc66('0x9'),'dialectOptions':{'charset':_0xcc66('0xa')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xcc66('0xe'),'collate':_0xcc66('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xcc66('0x1')][_0xcc66('0xf')],config['sequelize'][_0xcc66('0x10')],config['sequelize'][_0xcc66('0x11')],config[_0xcc66('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0xcc66('0xf')],config[_0xcc66('0xc')][_0xcc66('0x10')],config[_0xcc66('0xc')][_0xcc66('0x11')],config[_0xcc66('0xc')][_0xcc66('0x12')])};db[_0xcc66('0x13')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/user/user.model');db[_0xcc66('0x15')]=db['sequelize']['import'](_0xcc66('0x16'));db[_0xcc66('0x17')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x18'));db[_0xcc66('0x19')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x1a'));db[_0xcc66('0x1b')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x1c'));db[_0xcc66('0x1d')]=db['sequelize'][_0xcc66('0x14')]('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x1e'));db[_0xcc66('0x1f')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x20'));db['VoiceMail']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x21'));db[_0xcc66('0x22')]=db[_0xcc66('0x1')]['import']('../api/voiceMailMessage/voiceMailMessage.model');db[_0xcc66('0x23')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x24'));db[_0xcc66('0x25')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x26'));db[_0xcc66('0x27')]=db['sequelize']['import'](_0xcc66('0x28'));db[_0xcc66('0x29')]=db['sequelize'][_0xcc66('0x14')]('../api/voiceQueueReport/voiceQueueReport.model');db[_0xcc66('0x2a')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x2b'));db[_0xcc66('0x2c')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x2d'));db['VoiceTransferReport']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x2e'));db[_0xcc66('0x2f')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x30'));db[_0xcc66('0x31')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x32'));db[_0xcc66('0x33')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x34'));db[_0xcc66('0x35')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x36'));db[_0xcc66('0x37')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x38'));db[_0xcc66('0x39')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x3a'));db['UserOpenchannelQueue']=db[_0xcc66('0x1')]['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db['UserWhatsappQueue']=db['sequelize']['import'](_0xcc66('0x3b'));db['MailServerIn']=db[_0xcc66('0x1')]['import']('../api/mailServerIn/mailServerIn.model');db[_0xcc66('0x3c')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x3d'));db[_0xcc66('0x3e')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x3f'));db[_0xcc66('0x40')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x41'));db['MailSubstatus']=db[_0xcc66('0x1')]['import'](_0xcc66('0x42'));db[_0xcc66('0x43')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x44'));db[_0xcc66('0x45')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x46'));db[_0xcc66('0x47')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x48'));db[_0xcc66('0x49')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/mailQueueReport/mailQueueReport.model');db[_0xcc66('0x4a')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x4b'));db[_0xcc66('0x4c')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x4d'));db[_0xcc66('0x4e')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x4f'));db['FaxApplication']=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/faxApplication/faxApplication.model');db[_0xcc66('0x50')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x51'));db[_0xcc66('0x52')]=db['sequelize']['import']('../api/faxMessage/faxMessage.model');db[_0xcc66('0x53')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x54'));db[_0xcc66('0x55')]=db[_0xcc66('0x1')]['import']('../api/faxQueueReport/faxQueueReport.model');db[_0xcc66('0x56')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x57'));db[_0xcc66('0x58')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/smsApplication/smsApplication.model');db[_0xcc66('0x59')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x5a'));db['SmsMessage']=db[_0xcc66('0x1')]['import'](_0xcc66('0x5b'));db[_0xcc66('0x5c')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x5d'));db[_0xcc66('0x5e')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x5f'));db[_0xcc66('0x60')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x61'));db[_0xcc66('0x62')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x63'));db[_0xcc66('0x64')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x65'));db['OpenchannelQueue']=db[_0xcc66('0x1')]['import']('../api/openchannelQueue/openchannelQueue.model');db['ChatWebsite']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x66'));db[_0xcc66('0x67')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x68'));db['ChatApplication']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x69'));db[_0xcc66('0x6a')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x6b'));db['ChatMessage']=db['sequelize']['import'](_0xcc66('0x6c'));db[_0xcc66('0x6d')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x6e'));db['ChatQueue']=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/chatQueue/chatQueue.model');db[_0xcc66('0x6f')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x70'));db[_0xcc66('0x71')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x72'));db[_0xcc66('0x73')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x74'));db[_0xcc66('0x75')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x76'));db[_0xcc66('0x77')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x78'));db[_0xcc66('0x79')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x7a'));db[_0xcc66('0x7b')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x7c'));db[_0xcc66('0x7d')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x7e'));db[_0xcc66('0x7f')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x80'));db['CmCustomField']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x81'));db[_0xcc66('0x82')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x83'));db[_0xcc66('0x84')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/automation/automation.model');db[_0xcc66('0x85')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/cannedAnswer/cannedAnswer.model');db[_0xcc66('0x86')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x87'));db[_0xcc66('0x88')]=db['sequelize'][_0xcc66('0x14')]('../api/condition/condition.model');db['Interval']=db[_0xcc66('0x1')]['import'](_0xcc66('0x89'));db[_0xcc66('0x8a')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x8b'));db['Cdr']=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/cdr/cdr.model');db[_0xcc66('0x8c')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x8d'));db[_0xcc66('0x8e')]=db[_0xcc66('0x1')]['import']('../api/schedule/schedule.model');db['Sound']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x8f'));db[_0xcc66('0x90')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x91'));db[_0xcc66('0x92')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x93'));db[_0xcc66('0x94')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x95'));db['Variable']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x96'));db['Integration']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x97'));db['IntegrationReport']=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/integrationReport/integrationReport.model');db[_0xcc66('0x98')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x99'));db[_0xcc66('0x9a')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xcc66('0x9b')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x9c'));db[_0xcc66('0x9d')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x9e'));db[_0xcc66('0x9f')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xa0'));db[_0xcc66('0xa1')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xa2'));db[_0xcc66('0xa3')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xa4'));db[_0xcc66('0xa5')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xa6'));db[_0xcc66('0xa7')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xa8'));db[_0xcc66('0xa9')]=db['sequelize'][_0xcc66('0x14')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db['SugarcrmConfiguration']=db[_0xcc66('0x1')]['import']('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0xcc66('0xaa')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xab'));db[_0xcc66('0xac')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xad'));db[_0xcc66('0xae')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xaf'));db[_0xcc66('0xb0')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xb1'));db['ZohoAccount']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xb2'));db[_0xcc66('0xb3')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xb4'));db['ZohoField']=db[_0xcc66('0x1')]['import']('../api/intZohoField/intZohoField.model');db[_0xcc66('0xb5')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xb6'));db[_0xcc66('0xb7')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0xcc66('0xb8')]=db['sequelize']['import'](_0xcc66('0xb9'));db[_0xcc66('0xba')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db[_0xcc66('0x1')]['import']('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0xcc66('0xbb')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xbc'));db['VtigerAccount']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xbd'));db[_0xcc66('0xbe')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xbf'));db[_0xcc66('0xc0')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xc1'));db['ServicenowAccount']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xc2'));db[_0xcc66('0xc3')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xc4'));db['ServicenowField']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xc5'));db[_0xcc66('0xc6')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0xcc66('0xc7')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db['Dynamics365Field']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xc8'));db[_0xcc66('0xc9')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xca'));db[_0xcc66('0xcb')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xcc66('0xcc')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xcd'));db[_0xcc66('0xce')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x97'));db['Network']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xcf'));db['ChatQueueReport']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xd0'));db[_0xcc66('0xd1')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xd2'));db[_0xcc66('0xd3')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xd4'));db['JscriptyQuestionReport']=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xd5'));db['JscriptySessionReport']=db[_0xcc66('0x1')]['import']('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0xcc66('0xd6')]=db['sequelize'][_0xcc66('0x14')]('../api/smsQueueReport/smsQueueReport.model');db['SquareReport']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xd7'));db[_0xcc66('0xd8')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xd9'));db[_0xcc66('0xda')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xdb'));db['Setting']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xdc'));db[_0xcc66('0xdd')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xde'));db['SquareProject']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xdf'));db[_0xcc66('0xe0')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xe1'));db[_0xcc66('0xe2')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xe3'));db[_0xcc66('0xe4')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xe5'));db[_0xcc66('0xe6')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xe7'));db['Campaign']=db[_0xcc66('0x1')]['import']('../api/campaign/campaign.model');db[_0xcc66('0xe8')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xe9'));db[_0xcc66('0xea')]=db[_0xcc66('0x1')][_0xcc66('0x14')]('../api/attachment/attachment.model');db[_0xcc66('0xeb')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xec'));db[_0xcc66('0xed')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xee'));db[_0xcc66('0xef')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xf0'));db[_0xcc66('0xf1')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xf2'));db[_0xcc66('0xf3')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xf4'));db[_0xcc66('0xf5')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xf6'));db[_0xcc66('0xf7')]=db[_0xcc66('0x1')]['import'](_0xcc66('0xf8'));db[_0xcc66('0xf9')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0xfa'));db[_0xcc66('0xfb')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xfc'));db[_0xcc66('0xfd')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0xfe'));db[_0xcc66('0xff')]=db[_0xcc66('0x1')]['import']('../api/userProfileResource/userProfileResource.model');db[_0xcc66('0x100')]=db['sequelize']['import'](_0xcc66('0x101'));db[_0xcc66('0x102')]=db[_0xcc66('0x1')]['import'](_0xcc66('0x103'));db['WhatsappApplication']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x104'));db[_0xcc66('0x105')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x106'));db[_0xcc66('0x107')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x108'));db[_0xcc66('0x109')]=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x10a'));db[_0xcc66('0x10b')]=db['sequelize']['import']('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0xcc66('0x10c')]=db[_0xcc66('0x1')]['import']('../api/whatsappQueue/whatsappQueue.model');db['CloudProvider']=db[_0xcc66('0x1')]['import'](_0xcc66('0x10d'));db['TeamVoiceQueue']=db[_0xcc66('0x1')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db[_0xcc66('0x1')][_0xcc66('0x14')](_0xcc66('0x10e'));db[_0xcc66('0x10f')]=db['sequelize'][_0xcc66('0x14')](_0xcc66('0x110'));db[_0xcc66('0x13')]['hasOne'](db[_0xcc66('0x111')],{'as':'VoiceMail','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')][_0xcc66('0x114')](db[_0xcc66('0x115')],{'as':'Recordings','foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')]['hasMany'](db[_0xcc66('0x2f')],{'as':'VoiceQueuesRt','foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')][_0xcc66('0x114')](db[_0xcc66('0x19')],{'as':_0xcc66('0x116'),'onDelete':_0xcc66('0x112'),'hooks':!![]});db[_0xcc66('0x13')][_0xcc66('0x114')](db['CmHopperFinal'],{'as':_0xcc66('0x117'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')][_0xcc66('0x114')](db['CmHopperHistory'],{'as':_0xcc66('0x118'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')]['hasMany'](db[_0xcc66('0x7f')],{'as':_0xcc66('0x7f'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')]['hasMany'](db[_0xcc66('0x62')],{'as':_0xcc66('0x119'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')][_0xcc66('0x114')](db[_0xcc66('0x6a')],{'as':_0xcc66('0x11a'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')][_0xcc66('0x114')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')]['hasMany'](db[_0xcc66('0x50')],{'as':'FaxInteractions','foreignKey':_0xcc66('0x113')});db[_0xcc66('0x13')][_0xcc66('0x114')](db[_0xcc66('0x43')],{'as':_0xcc66('0x11b'),'foreignKey':'UserId'});db[_0xcc66('0x13')][_0xcc66('0x114')](db[_0xcc66('0x105')],{'as':'WhatsappInteractions','foreignKey':'UserId'});db[_0xcc66('0x13')][_0xcc66('0x114')](db[_0xcc66('0x100')],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0xcc66('0x13')][_0xcc66('0x11c')](db['UserProfile'],{'as':'UserProfile','foreignKey':_0xcc66('0x11d')});db['User']['belongsToMany'](db[_0xcc66('0x6f')],{'as':'Groups','through':_0xcc66('0x11e')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db['CmContact'],{'as':_0xcc66('0x120'),'through':'cm_user_has_contacts'});db[_0xcc66('0x13')]['belongsToMany'](db[_0xcc66('0xf7')],{'as':_0xcc66('0x121'),'through':_0xcc66('0x122')});db['User'][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':_0xcc66('0x123')});db[_0xcc66('0x13')]['belongsToMany'](db[_0xcc66('0x43')],{'as':_0xcc66('0x11b'),'through':_0xcc66('0x124')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x6a')],{'as':_0xcc66('0x11a'),'through':_0xcc66('0x125')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x50')],{'as':_0xcc66('0x126'),'through':_0xcc66('0x127')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x59')],{'as':_0xcc66('0x128'),'through':_0xcc66('0x129')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x62')],{'as':_0xcc66('0x119'),'through':_0xcc66('0x12a')});db['User'][_0xcc66('0x11f')](db[_0xcc66('0x105')],{'as':'WhatsappInteractions','through':_0xcc66('0x12b')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x1d')],{'as':_0xcc66('0x12c'),'through':_0xcc66('0x31'),'required':![]});db[_0xcc66('0x13')][_0xcc66('0x11f')](db['VoicePrefix'],{'as':'VoicePrefixes','through':_0xcc66('0x10f'),'required':![]});db[_0xcc66('0x13')][_0xcc66('0x11f')](db['MailQueue'],{'as':_0xcc66('0x12d'),'through':'UserMailQueue','required':![]});db['User'][_0xcc66('0x11f')](db[_0xcc66('0x12e')],{'as':_0xcc66('0x12f'),'through':_0xcc66('0x33'),'required':![],'hooks':!![]});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x53')],{'as':_0xcc66('0x130'),'through':_0xcc66('0x37'),'required':![]});db[_0xcc66('0x13')][_0xcc66('0x11f')](db['SmsQueue'],{'as':_0xcc66('0x131'),'through':'UserSmsQueue','required':![]});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x132')],{'as':_0xcc66('0x133'),'through':_0xcc66('0x134'),'required':![]});db['User']['belongsToMany'](db[_0xcc66('0x10c')],{'as':_0xcc66('0x135'),'through':_0xcc66('0x136'),'required':![]});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0xf7')],{'through':'cm_user_has_lists'});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x137')],{'as':_0xcc66('0x138'),'through':'user_has_chat_websites'});db[_0xcc66('0x13')][_0xcc66('0x11f')](db['FaxAccount'],{'as':_0xcc66('0x139'),'through':_0xcc66('0x13a')});db['User'][_0xcc66('0x11f')](db[_0xcc66('0x3e')],{'as':_0xcc66('0x13b'),'through':_0xcc66('0x13c')});db['User'][_0xcc66('0x11f')](db[_0xcc66('0x5e')],{'as':'OpenchannelAccounts','through':_0xcc66('0x13d')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x56')],{'as':_0xcc66('0x13e'),'through':_0xcc66('0x13f')});db[_0xcc66('0x13')]['belongsToMany'](db[_0xcc66('0x102')],{'as':_0xcc66('0x140'),'through':_0xcc66('0x141')});db[_0xcc66('0x13')][_0xcc66('0x11f')](db[_0xcc66('0x142')],{'as':'SquareProjects','through':_0xcc66('0x143')});db[_0xcc66('0x15')][_0xcc66('0x114')](db[_0xcc66('0x19')],{'as':'SpiedAgents','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x144')});db[_0xcc66('0x17')][_0xcc66('0x114')](db['VoiceExtension'],{'onDelete':_0xcc66('0x112')});db['VoiceExtension'][_0xcc66('0x114')](db[_0xcc66('0x19')],{'as':_0xcc66('0x145'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x1b')][_0xcc66('0x11f')](db[_0xcc66('0x146')],{'as':_0xcc66('0x147'),'through':_0xcc66('0x148')});db[_0xcc66('0x1d')][_0xcc66('0x114')](db['UserVoiceQueueRt'],{'as':'Members','foreignKey':_0xcc66('0x149')});db[_0xcc66('0x1d')][_0xcc66('0x114')](db[_0xcc66('0x77')],{'as':_0xcc66('0x14a'),'foreignKey':_0xcc66('0x149')});db[_0xcc66('0x1d')][_0xcc66('0x114')](db['CmHopperFinal'],{'as':_0xcc66('0x117'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xcc66('0x114')](db[_0xcc66('0x7d')],{'as':_0xcc66('0x14b'),'foreignKey':_0xcc66('0x149')});db[_0xcc66('0x1d')]['hasMany'](db['ReportAgentPreview'],{'as':_0xcc66('0x7f'),'foreignKey':_0xcc66('0x149')});db[_0xcc66('0x1d')][_0xcc66('0x114')](db[_0xcc66('0x79')],{'as':_0xcc66('0x14c'),'foreignKey':_0xcc66('0x149')});db[_0xcc66('0x1d')]['hasMany'](db[_0xcc66('0x14d')],{'as':_0xcc66('0x14e'),'foreignKey':_0xcc66('0x149')});db[_0xcc66('0x1d')][_0xcc66('0x11c')](db[_0xcc66('0x2c')],{'as':_0xcc66('0x2c'),'foreignKey':_0xcc66('0x14f')});db['VoiceQueue'][_0xcc66('0x11c')](db['Trunk'],{'as':_0xcc66('0x150'),'foreignKey':_0xcc66('0x151')});db[_0xcc66('0x1d')]['belongsTo'](db['Interval'],{'as':'Interval','foreignKey':'IntervalId'});db[_0xcc66('0x1d')][_0xcc66('0x11c')](db[_0xcc66('0x8a')],{'as':_0xcc66('0x152'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xcc66('0x1d')][_0xcc66('0x11f')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x121'),'through':'voice_queues_has_cm_lists'});db['VoiceQueue'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':'Agents','through':_0xcc66('0x31')});db[_0xcc66('0x1d')][_0xcc66('0x11f')](db['Team'],{'as':_0xcc66('0x153'),'through':_0xcc66('0x154')});db[_0xcc66('0x1d')][_0xcc66('0x11f')](db['CmList'],{'as':_0xcc66('0x155'),'through':_0xcc66('0x156')});db[_0xcc66('0x115')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':_0xcc66('0x13'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x1f')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':'User','foreignKey':_0xcc66('0x113')});db['VoiceMail'][_0xcc66('0x114')](db[_0xcc66('0x22')],{'as':'Messages','onDelete':_0xcc66('0x112'),'foreignKey':'mailboxuser','sourceKey':'mailbox'});db[_0xcc66('0x22')][_0xcc66('0x11c')](db['VoiceMail'],{'foreignKey':_0xcc66('0x157'),'targetKey':_0xcc66('0x158')});db[_0xcc66('0x23')][_0xcc66('0x114')](db[_0xcc66('0x29')],{'as':'QueueCalls','foreignKey':_0xcc66('0x159'),'constraints':![]});db[_0xcc66('0x23')][_0xcc66('0x114')](db['VoiceAgentReport'],{'as':_0xcc66('0x15a'),'foreignKey':_0xcc66('0x159'),'constraints':![]});db[_0xcc66('0x23')][_0xcc66('0x11c')](db['User'],{'as':_0xcc66('0x13'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x23')][_0xcc66('0x11c')](db['CmContact'],{'as':'Contact','foreignKey':_0xcc66('0x15b')});db['MailServerIn']['belongsTo'](db[_0xcc66('0x3e')],{'as':_0xcc66('0x3e'),'foreignKey':_0xcc66('0x15c')});db['MailServerOut']['belongsTo'](db[_0xcc66('0x3e')],{'as':'MailAccount','foreignKey':_0xcc66('0x15c')});db[_0xcc66('0x3e')][_0xcc66('0x15d')](db[_0xcc66('0x15e')],{'as':_0xcc66('0x15f'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x3e')][_0xcc66('0x15d')](db[_0xcc66('0x3c')],{'as':_0xcc66('0x160'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x3e')][_0xcc66('0x114')](db[_0xcc66('0x86')],{'as':_0xcc66('0x161'),'foreignKey':'MailAccountId','onDelete':_0xcc66('0x112')});db[_0xcc66('0x3e')][_0xcc66('0x114')](db['CannedAnswer'],{'as':_0xcc66('0x162'),'foreignKey':_0xcc66('0x15c')});db[_0xcc66('0x3e')][_0xcc66('0x114')](db[_0xcc66('0x45')],{'as':_0xcc66('0x163'),'foreignKey':'MailAccountId'});db[_0xcc66('0x3e')]['hasMany'](db[_0xcc66('0x43')],{'as':'Interactions'});db[_0xcc66('0x3e')][_0xcc66('0x114')](db['MailApplication'],{'as':_0xcc66('0x145')});db[_0xcc66('0x3e')][_0xcc66('0x11c')](db['CmList'],{'as':'List','foreignKey':_0xcc66('0x164')});db[_0xcc66('0x3e')][_0xcc66('0x11c')](db['Template'],{'as':_0xcc66('0x92'),'foreignKey':_0xcc66('0x165')});db[_0xcc66('0x3e')][_0xcc66('0x11c')](db['Pause'],{'as':_0xcc66('0x152'),'foreignKey':_0xcc66('0x166')});db[_0xcc66('0x3e')][_0xcc66('0x11f')](db['User'],{'as':_0xcc66('0x167'),'through':_0xcc66('0x13c')});db[_0xcc66('0x40')][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':'UserMailQueue'});db[_0xcc66('0x40')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':_0xcc66('0x168'),'as':_0xcc66('0x153')});db[_0xcc66('0x43')]['hasMany'](db[_0xcc66('0x45')],{'as':_0xcc66('0x163'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x169')});db['MailInteraction'][_0xcc66('0x11c')](db[_0xcc66('0x3e')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x15c')});db[_0xcc66('0x43')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x43')][_0xcc66('0x11c')](db['User'],{'as':_0xcc66('0x16c'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x43')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':'mail_interaction_has_tags','as':_0xcc66('0x16d')});db[_0xcc66('0x43')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x16e'),'as':_0xcc66('0x16f')});db[_0xcc66('0x43')][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db['MailMessage'][_0xcc66('0x114')](db[_0xcc66('0xea')],{'as':_0xcc66('0x171'),'onDelete':_0xcc66('0x112')});db['MailMessage'][_0xcc66('0x11c')](db['User'],{'as':'User'});db[_0xcc66('0x45')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'onDelete':'cascade','as':_0xcc66('0x16b')});db['MailMessage'][_0xcc66('0x11c')](db['MailInteraction'],{'as':'Interaction','foreignKey':'MailInteractionId'});db['MailMessage'][_0xcc66('0x11c')](db[_0xcc66('0x3e')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x15c')});db[_0xcc66('0x45')]['belongsTo'](db[_0xcc66('0x137')],{'as':'ChatWebsite','foreignKey':'ChatWebsiteId'});db[_0xcc66('0x45')][_0xcc66('0x11c')](db[_0xcc66('0x6d')],{'as':_0xcc66('0x6d'),'foreignKey':_0xcc66('0x172')});db['MailApplication'][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x47')][_0xcc66('0x11c')](db['MailQueue'],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x47')][_0xcc66('0x11c')](db[_0xcc66('0x3e')],{'onDelete':_0xcc66('0x173')});db['MailApplication'][_0xcc66('0x11c')](db[_0xcc66('0x174')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x175')});db[_0xcc66('0x47')][_0xcc66('0x11c')](db[_0xcc66('0x90')],{'onDelete':'restrict','foreignKey':_0xcc66('0x176')});db['MailQueueReport']['belongsTo'](db[_0xcc66('0x3e')],{});db[_0xcc66('0x49')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0xcc66('0x164')});db['MailQueueReport']['belongsTo'](db[_0xcc66('0x75')],{'as':_0xcc66('0x16b'),'foreignKey':'ContactId'});db[_0xcc66('0x49')][_0xcc66('0x11c')](db[_0xcc66('0x43')],{});db[_0xcc66('0x49')][_0xcc66('0x11c')](db[_0xcc66('0x45')],{});db[_0xcc66('0x49')]['belongsTo'](db['User'],{});db[_0xcc66('0x49')][_0xcc66('0x11c')](db[_0xcc66('0x40')],{});db['Dashboard'][_0xcc66('0x114')](db[_0xcc66('0x4c')],{'as':_0xcc66('0x177'),'onDelete':_0xcc66('0x112')});db['FaxAccount']['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':_0xcc66('0x178'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x4e')][_0xcc66('0x114')](db[_0xcc66('0x85')],{'as':'Answers','foreignKey':'FaxAccountId'});db['FaxAccount'][_0xcc66('0x114')](db['FaxInteraction'],{'as':_0xcc66('0x179')});db[_0xcc66('0x4e')][_0xcc66('0x114')](db[_0xcc66('0x17a')],{'as':_0xcc66('0x145')});db[_0xcc66('0x4e')][_0xcc66('0x114')](db[_0xcc66('0x19')],{'as':_0xcc66('0x17b'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x4e')][_0xcc66('0x114')](db[_0xcc66('0x52')],{'as':_0xcc66('0x163')});db[_0xcc66('0x4e')][_0xcc66('0x11c')](db[_0xcc66('0x2c')],{'as':_0xcc66('0x2c')});db['FaxAccount'][_0xcc66('0x11c')](db['CmList'],{'as':_0xcc66('0x17c'),'foreignKey':'ListId'});db[_0xcc66('0x4e')][_0xcc66('0x11c')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xcc66('0x166')});db['FaxAccount'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x13a')});db[_0xcc66('0x17a')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x17a')][_0xcc66('0x11c')](db[_0xcc66('0x53')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x17a')]['belongsTo'](db[_0xcc66('0x4e')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x17a')][_0xcc66('0x11c')](db[_0xcc66('0x90')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x176')});db[_0xcc66('0x50')][_0xcc66('0x114')](db[_0xcc66('0x52')],{'as':'Messages','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x17d')});db['FaxInteraction'][_0xcc66('0x11c')](db[_0xcc66('0x4e')],{'as':_0xcc66('0x16a'),'foreignKey':'FaxAccountId'});db['FaxInteraction'][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':'Contact','foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x50')]['belongsTo'](db[_0xcc66('0x13')],{'as':_0xcc66('0x16c'),'foreignKey':_0xcc66('0x113')});db['FaxInteraction'][_0xcc66('0x11f')](db['Tag'],{'through':_0xcc66('0x17e'),'as':_0xcc66('0x16d')});db[_0xcc66('0x50')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x17e'),'as':'ThroughTags'});db['FaxInteraction'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'through':'user_has_fax_interactions','foreignKey':_0xcc66('0x17d')});db[_0xcc66('0x52')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x13')});db[_0xcc66('0x52')][_0xcc66('0x11c')](db['FaxInteraction'],{'as':'Interaction','foreignKey':_0xcc66('0x17d')});db[_0xcc66('0x52')]['belongsTo'](db[_0xcc66('0x75')],{'onDelete':_0xcc66('0x112'),'as':'Contact'});db[_0xcc66('0x52')][_0xcc66('0x11c')](db[_0xcc66('0xea')],{'as':_0xcc66('0xea'),'foreignKey':_0xcc66('0x17f')});db[_0xcc66('0x52')][_0xcc66('0x11c')](db[_0xcc66('0x4e')],{'as':'Account','foreignKey':_0xcc66('0x178')});db[_0xcc66('0x53')][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':'Agents','through':_0xcc66('0x37')});db[_0xcc66('0x53')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':'team_has_fax_queues','as':_0xcc66('0x153')});db[_0xcc66('0x55')][_0xcc66('0x11c')](db[_0xcc66('0x4e')],{});db[_0xcc66('0x55')]['belongsTo'](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':'ListId'});db[_0xcc66('0x55')][_0xcc66('0x11c')](db['CmContact'],{'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db['FaxQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0x50')],{});db[_0xcc66('0x55')][_0xcc66('0x11c')](db[_0xcc66('0x52')],{});db['FaxQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0x13')],{});db[_0xcc66('0x55')]['belongsTo'](db[_0xcc66('0x53')],{});db[_0xcc66('0x56')][_0xcc66('0x114')](db[_0xcc66('0x86')],{'as':'Dispositions','foreignKey':'SmsAccountId','onDelete':_0xcc66('0x112')});db[_0xcc66('0x56')][_0xcc66('0x114')](db[_0xcc66('0x85')],{'as':'Answers','foreignKey':_0xcc66('0x180')});db[_0xcc66('0x56')][_0xcc66('0x114')](db[_0xcc66('0x181')],{'as':_0xcc66('0x163'),'foreignKey':_0xcc66('0x180')});db[_0xcc66('0x56')][_0xcc66('0x114')](db['SmsInteraction'],{'as':_0xcc66('0x179')});db[_0xcc66('0x56')][_0xcc66('0x114')](db[_0xcc66('0x58')],{'as':_0xcc66('0x145')});db['SmsAccount']['belongsTo'](db[_0xcc66('0xf7')],{'as':'List','foreignKey':_0xcc66('0x164')});db[_0xcc66('0x56')][_0xcc66('0x11c')](db['Pause'],{'as':_0xcc66('0x152'),'foreignKey':'mandatoryDispositionPauseId'});db['SmsAccount'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':'user_has_sms_accounts'});db[_0xcc66('0x58')][_0xcc66('0x11c')](db['User'],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x58')][_0xcc66('0x11c')](db[_0xcc66('0x5c')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x58')][_0xcc66('0x11c')](db[_0xcc66('0x56')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x58')][_0xcc66('0x11c')](db[_0xcc66('0x174')],{'onDelete':'restrict','foreignKey':_0xcc66('0x175')});db[_0xcc66('0x58')][_0xcc66('0x11c')](db[_0xcc66('0x90')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x176')});db[_0xcc66('0x59')][_0xcc66('0x114')](db[_0xcc66('0x181')],{'as':'Messages','onDelete':_0xcc66('0x112'),'foreignKey':'SmsInteractionId'});db[_0xcc66('0x59')][_0xcc66('0x11c')](db[_0xcc66('0x56')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x180')});db[_0xcc66('0x59')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':_0xcc66('0x16b'),'foreignKey':'ContactId'});db[_0xcc66('0x59')][_0xcc66('0x11c')](db['User'],{'as':_0xcc66('0x16c'),'foreignKey':'UserId'});db[_0xcc66('0x59')]['belongsToMany'](db[_0xcc66('0x90')],{'through':_0xcc66('0x182'),'as':'Tags'});db[_0xcc66('0x59')][_0xcc66('0x11f')](db['Tag'],{'through':_0xcc66('0x182'),'as':_0xcc66('0x16f')});db[_0xcc66('0x59')][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':'Users','through':_0xcc66('0x129'),'foreignKey':_0xcc66('0x183')});db[_0xcc66('0x181')]['belongsTo'](db[_0xcc66('0x13')],{'as':_0xcc66('0x13')});db[_0xcc66('0x181')]['belongsTo'](db[_0xcc66('0x75')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x16b')});db['SmsMessage'][_0xcc66('0x11c')](db[_0xcc66('0x59')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x184'),'foreignKey':_0xcc66('0x183')});db[_0xcc66('0x181')][_0xcc66('0x11c')](db[_0xcc66('0x56')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x180')});db['SmsQueue'][_0xcc66('0x11f')](db['User'],{'as':'Agents','through':_0xcc66('0x39'),'foreignKey':'SmsQueueId'});db[_0xcc66('0x5c')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':'team_has_sms_queues','as':_0xcc66('0x153')});db[_0xcc66('0x5e')]['hasMany'](db[_0xcc66('0x86')],{'as':_0xcc66('0x161'),'foreignKey':_0xcc66('0x185'),'onDelete':_0xcc66('0x112')});db['OpenchannelAccount'][_0xcc66('0x114')](db[_0xcc66('0x85')],{'as':_0xcc66('0x162'),'foreignKey':_0xcc66('0x185')});db['OpenchannelAccount'][_0xcc66('0x114')](db[_0xcc66('0x62')],{'as':_0xcc66('0x179'),'foreignKey':_0xcc66('0x185')});db[_0xcc66('0x5e')][_0xcc66('0x114')](db[_0xcc66('0x64')],{'as':_0xcc66('0x163'),'foreignKey':_0xcc66('0x185')});db[_0xcc66('0x5e')][_0xcc66('0x114')](db[_0xcc66('0x60')],{'as':_0xcc66('0x145'),'foreignKey':_0xcc66('0x185')});db[_0xcc66('0x5e')][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0x5e')][_0xcc66('0x11c')](db['Pause'],{'as':_0xcc66('0x152'),'foreignKey':_0xcc66('0x166')});db['OpenchannelAccount'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x13d')});db['OpenchannelApplication'][_0xcc66('0x11c')](db['User'],{'onDelete':'restrict'});db[_0xcc66('0x60')][_0xcc66('0x11c')](db[_0xcc66('0x132')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x186')});db[_0xcc66('0x60')][_0xcc66('0x11c')](db[_0xcc66('0x5e')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x185')});db[_0xcc66('0x60')]['belongsTo'](db[_0xcc66('0x174')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x175')});db['OpenchannelApplication'][_0xcc66('0x11c')](db['Tag'],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x176')});db[_0xcc66('0x62')]['hasMany'](db[_0xcc66('0x64')],{'as':_0xcc66('0x163'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x187')});db[_0xcc66('0x62')][_0xcc66('0x11c')](db['OpenchannelAccount'],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x185')});db[_0xcc66('0x62')][_0xcc66('0x11c')](db['CmContact'],{'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x62')]['belongsTo'](db[_0xcc66('0x13')],{'as':'Owner','foreignKey':'UserId'});db[_0xcc66('0x62')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x188'),'as':_0xcc66('0x16d')});db[_0xcc66('0x62')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x188'),'as':_0xcc66('0x16f')});db[_0xcc66('0x62')]['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'through':_0xcc66('0x12a'),'foreignKey':_0xcc66('0x187')});db[_0xcc66('0x64')]['belongsTo'](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x13')});db['OpenchannelMessage'][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x16b')});db['OpenchannelMessage']['belongsTo'](db[_0xcc66('0x62')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x184'),'foreignKey':'OpenchannelInteractionId'});db[_0xcc66('0x64')]['belongsTo'](db['Attachment'],{'as':_0xcc66('0xea'),'foreignKey':_0xcc66('0x17f')});db['OpenchannelMessage'][_0xcc66('0x11c')](db[_0xcc66('0x5e')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x185')});db[_0xcc66('0x132')][_0xcc66('0x11f')](db['User'],{'as':_0xcc66('0x167'),'through':_0xcc66('0x134'),'foreignKey':_0xcc66('0x186')});db[_0xcc66('0x132')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':_0xcc66('0x189'),'as':_0xcc66('0x153')});db[_0xcc66('0x137')]['hasMany'](db[_0xcc66('0x86')],{'as':_0xcc66('0x161'),'foreignKey':'ChatWebsiteId','onDelete':_0xcc66('0x112')});db[_0xcc66('0x137')]['hasMany'](db[_0xcc66('0x85')],{'as':_0xcc66('0x162'),'foreignKey':_0xcc66('0x18a')});db[_0xcc66('0x137')][_0xcc66('0x114')](db[_0xcc66('0x71')],{'as':'ProactiveActions'});db[_0xcc66('0x137')]['hasMany'](db[_0xcc66('0x6a')],{'as':'Interactions'});db[_0xcc66('0x137')]['hasMany'](db[_0xcc66('0x18b')],{'as':_0xcc66('0x145')});db['ChatWebsite'][_0xcc66('0x114')](db[_0xcc66('0x18c')],{'as':'Messages'});db[_0xcc66('0x137')][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0x137')][_0xcc66('0x11c')](db[_0xcc66('0x174')],{'as':_0xcc66('0x174'),'foreignKey':_0xcc66('0x175')});db['ChatWebsite'][_0xcc66('0x11c')](db['MailAccount'],{'as':_0xcc66('0x3e'),'foreignKey':_0xcc66('0x15c')});db[_0xcc66('0x137')][_0xcc66('0x11c')](db['Pause'],{'as':_0xcc66('0x152'),'foreignKey':_0xcc66('0x166')});db[_0xcc66('0x137')]['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x18d')});db[_0xcc66('0x67')][_0xcc66('0x11c')](db['OpenchannelAccount'],{});db[_0xcc66('0x67')][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0x67')]['belongsTo'](db[_0xcc66('0x75')],{'as':'Contact','foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x67')][_0xcc66('0x11c')](db[_0xcc66('0x62')],{});db[_0xcc66('0x67')][_0xcc66('0x11c')](db[_0xcc66('0x64')],{});db[_0xcc66('0x67')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{});db[_0xcc66('0x67')][_0xcc66('0x11c')](db[_0xcc66('0x132')],{});db['ChatApplication'][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':_0xcc66('0x18e'),'foreignKey':_0xcc66('0x113'),'onDelete':_0xcc66('0x173')});db['ChatApplication'][_0xcc66('0x11c')](db[_0xcc66('0x12e')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':'restrict'});db['ChatApplication'][_0xcc66('0x11c')](db['ChatWebsite'],{'as':_0xcc66('0x18f'),'foreignKey':_0xcc66('0x18a'),'onDelete':_0xcc66('0x173')});db['ChatApplication']['belongsTo'](db[_0xcc66('0x90')],{'onDelete':_0xcc66('0x173'),'foreignKey':'TagId'});db[_0xcc66('0x6a')]['hasMany'](db['ChatMessage'],{'as':_0xcc66('0x163'),'onDelete':_0xcc66('0x112'),'foreignKey':'ChatInteractionId'});db[_0xcc66('0x6a')]['belongsTo'](db['ChatWebsite'],{'as':'Account','foreignKey':_0xcc66('0x18a')});db[_0xcc66('0x6a')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':'Contact','foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x6a')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':_0xcc66('0x16c'),'foreignKey':'UserId'});db['ChatInteraction'][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':'chat_interaction_has_tags','as':_0xcc66('0x16d')});db[_0xcc66('0x6a')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x190'),'as':_0xcc66('0x16f')});db['ChatInteraction'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'through':_0xcc66('0x125'),'foreignKey':_0xcc66('0x191')});db[_0xcc66('0x18c')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':'cascade','as':_0xcc66('0x13')});db[_0xcc66('0x18c')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db['ChatMessage'][_0xcc66('0x11c')](db[_0xcc66('0x6a')],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x184'),'foreignKey':_0xcc66('0x191')});db[_0xcc66('0x18c')][_0xcc66('0x11c')](db['Attachment'],{'as':_0xcc66('0xea'),'foreignKey':_0xcc66('0x17f')});db[_0xcc66('0x18c')][_0xcc66('0x11c')](db['ChatWebsite'],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x18a')});db[_0xcc66('0x6d')][_0xcc66('0x114')](db[_0xcc66('0xea')],{'as':_0xcc66('0x171'),'foreignKey':_0xcc66('0x172'),'onDelete':_0xcc66('0x112'),'hooks':!![]});db[_0xcc66('0x6d')][_0xcc66('0x11c')](db['CmContact'],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x6d')][_0xcc66('0x11c')](db[_0xcc66('0x137')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x18a')});db['ChatQueue']['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x33'),'hooks':!![]});db[_0xcc66('0x12e')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':_0xcc66('0x192'),'as':_0xcc66('0x153')});db[_0xcc66('0x6f')][_0xcc66('0x114')](db[_0xcc66('0xd1')],{'as':_0xcc66('0x163'),'foreignKey':_0xcc66('0x193'),'onDelete':_0xcc66('0x112')});db['ChatGroup'][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x194'),'through':_0xcc66('0x11e')});db[_0xcc66('0x71')]['belongsTo'](db[_0xcc66('0x137')],{'as':_0xcc66('0x18f'),'foreignKey':'ChatWebsiteId'});db[_0xcc66('0x73')][_0xcc66('0x114')](db[_0xcc66('0x75')],{'as':_0xcc66('0x120'),'foreignKey':_0xcc66('0x195')});db[_0xcc66('0x75')]['hasMany'](db[_0xcc66('0x77')],{'as':_0xcc66('0x14a'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x75')]['hasMany'](db[_0xcc66('0x7b')],{'as':'HopperFinals','foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x75')][_0xcc66('0x114')](db[_0xcc66('0x7d')],{'as':_0xcc66('0x14b'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x75')][_0xcc66('0x114')](db[_0xcc66('0x7f')],{'as':_0xcc66('0x7f'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x75')][_0xcc66('0x114')](db[_0xcc66('0x14d')],{'as':_0xcc66('0x14e'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x75')][_0xcc66('0x114')](db[_0xcc66('0x62')],{'as':_0xcc66('0x119'),'foreignKey':_0xcc66('0x15b'),'onDelete':'restrict'});db['CmContact']['hasMany'](db[_0xcc66('0x6a')],{'as':'ChatInteractions','foreignKey':_0xcc66('0x15b'),'onDelete':_0xcc66('0x173')});db[_0xcc66('0x75')][_0xcc66('0x114')](db[_0xcc66('0x59')],{'as':_0xcc66('0x128'),'foreignKey':_0xcc66('0x15b'),'onDelete':_0xcc66('0x173')});db[_0xcc66('0x75')][_0xcc66('0x114')](db['FaxInteraction'],{'as':_0xcc66('0x126'),'foreignKey':_0xcc66('0x15b'),'onDelete':_0xcc66('0x173')});db[_0xcc66('0x75')]['hasMany'](db[_0xcc66('0x43')],{'as':_0xcc66('0x11b'),'foreignKey':'ContactId','onDelete':_0xcc66('0x173')});db[_0xcc66('0x75')][_0xcc66('0x11c')](db['CmCompany'],{'as':_0xcc66('0x196'),'foreignKey':_0xcc66('0x195')});db[_0xcc66('0x75')]['belongsTo'](db[_0xcc66('0xf7')],{'as':'List','foreignKey':_0xcc66('0x164'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x75')][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'through':_0xcc66('0x197')});db[_0xcc66('0x75')][_0xcc66('0x11f')](db['Tag'],{'as':_0xcc66('0x16d'),'through':_0xcc66('0x198')});db['CmContact'][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x198'),'as':_0xcc66('0x16f')});db[_0xcc66('0x77')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':_0xcc66('0x16b'),'foreignKey':'ContactId','onDelete':_0xcc66('0x112')});db[_0xcc66('0x77')][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164'),'onDelete':'cascade'});db[_0xcc66('0x77')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':_0xcc66('0x18e'),'foreignKey':'UserId'});db[_0xcc66('0x77')][_0xcc66('0x11c')](db[_0xcc66('0x1d')],{'as':_0xcc66('0x199'),'foreignKey':'VoiceQueueId','onDelete':_0xcc66('0x112')});db[_0xcc66('0x77')][_0xcc66('0x11c')](db[_0xcc66('0x19a')],{'as':_0xcc66('0x19a'),'foreignKey':_0xcc66('0x19b'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x77')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':'Owner','foreignKey':_0xcc66('0x19c')});db[_0xcc66('0x79')][_0xcc66('0x11c')](db['CmContact'],{'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x79')][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164'),'onDelete':'cascade'});db['CmHopperBlack'][_0xcc66('0x11c')](db['VoiceQueue'],{'as':_0xcc66('0x199'),'foreignKey':_0xcc66('0x149'),'onDelete':_0xcc66('0x112')});db['CmHopperBlack'][_0xcc66('0x11c')](db[_0xcc66('0x19a')],{'as':_0xcc66('0x19a'),'foreignKey':'CampaignId','onDelete':_0xcc66('0x112')});db['Automation']['hasMany'](db[_0xcc66('0x88')],{'as':{'plural':'All','singular':'OneAll'},'foreignKey':_0xcc66('0x19d'),'onDelete':_0xcc66('0x112'),'hooks':!![]});db[_0xcc66('0x84')][_0xcc66('0x114')](db[_0xcc66('0x88')],{'as':{'plural':_0xcc66('0x19e'),'singular':_0xcc66('0x19f')},'foreignKey':_0xcc66('0x1a0'),'onDelete':_0xcc66('0x112'),'hooks':!![]});db['Automation'][_0xcc66('0x114')](db[_0xcc66('0x82')],{'as':'Actions','foreignKey':_0xcc66('0x1a1'),'onDelete':_0xcc66('0x112'),'hooks':!![]});db[_0xcc66('0x86')][_0xcc66('0x114')](db[_0xcc66('0x86')],{'as':'Dispositions','foreignKey':_0xcc66('0x1a2'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0x174')][_0xcc66('0x114')](db['Interval'],{'as':_0xcc66('0x1a3'),'foreignKey':_0xcc66('0x175'),'onDelete':_0xcc66('0x112'),'hooks':!![],'required':![]});db[_0xcc66('0x174')][_0xcc66('0x114')](db[_0xcc66('0x19')],{'as':_0xcc66('0x116'),'foreignKey':_0xcc66('0x175'),'onDelete':'restrict'});db[_0xcc66('0x174')][_0xcc66('0x114')](db[_0xcc66('0x47')],{'as':'MailApplications','foreignKey':'IntervalId'});db['Interval']['hasMany'](db[_0xcc66('0x18b')],{'as':_0xcc66('0x1a4'),'foreignKey':_0xcc66('0x175')});db[_0xcc66('0x174')][_0xcc66('0x114')](db[_0xcc66('0x17a')],{'as':_0xcc66('0x1a5'),'foreignKey':'IntervalId'});db[_0xcc66('0x174')][_0xcc66('0x114')](db[_0xcc66('0x58')],{'as':_0xcc66('0x1a6'),'foreignKey':_0xcc66('0x175')});db[_0xcc66('0x8e')][_0xcc66('0x11c')](db[_0xcc66('0x3e')],{});db[_0xcc66('0x8e')][_0xcc66('0x11c')](db['AnalyticDefaultReport'],{'foreignKey':_0xcc66('0x1a7')});db[_0xcc66('0x8e')][_0xcc66('0x11c')](db['AnalyticCustomReport'],{'foreignKey':_0xcc66('0x1a8')});db[_0xcc66('0x146')][_0xcc66('0x11f')](db[_0xcc66('0x1b')],{'as':_0xcc66('0x1a9'),'through':'moh_has_sounds','onDelete':_0xcc66('0x173')});db['Tag'][_0xcc66('0x11f')](db['CmContact'],{'through':'cm_contact_has_tags'});db[_0xcc66('0x90')][_0xcc66('0x11f')](db[_0xcc66('0x6a')],{'through':'chat_interaction_has_tags'});db[_0xcc66('0x90')][_0xcc66('0x11f')](db['MailInteraction'],{'through':'mail_interaction_has_tags'});db[_0xcc66('0x90')][_0xcc66('0x11f')](db[_0xcc66('0x59')],{'through':_0xcc66('0x182')});db[_0xcc66('0x90')][_0xcc66('0x11f')](db[_0xcc66('0x50')],{'through':_0xcc66('0x17e')});db['Tag']['belongsToMany'](db[_0xcc66('0x62')],{'through':_0xcc66('0x188')});db[_0xcc66('0x90')][_0xcc66('0x11f')](db[_0xcc66('0x105')],{'through':_0xcc66('0x1aa')});db[_0xcc66('0x94')][_0xcc66('0x114')](db['Condition'],{'as':{'plural':_0xcc66('0x1ab'),'singular':'AllCondition'},'foreignKey':'TriggerAllId','onDelete':_0xcc66('0x112'),'hooks':!![]});db[_0xcc66('0x94')]['hasMany'](db[_0xcc66('0x88')],{'as':{'plural':_0xcc66('0x1ac'),'singular':_0xcc66('0x1ad')},'foreignKey':_0xcc66('0x1ae'),'onDelete':'cascade','hooks':!![]});db[_0xcc66('0x94')][_0xcc66('0x114')](db['Action'],{'as':'Actions','foreignKey':_0xcc66('0x1af'),'onDelete':_0xcc66('0x112'),'hooks':!![]});db['AnalyticCustomReport']['hasMany'](db[_0xcc66('0x9f')],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1a8'),'hooks':!![]});db[_0xcc66('0x9a')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1a7')});db[_0xcc66('0x9d')][_0xcc66('0x114')](db[_0xcc66('0x9f')],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b1')});db['AnalyticFieldReport'][_0xcc66('0x11c')](db[_0xcc66('0x9d')],{'foreignKey':_0xcc66('0x1b1')});db['SalesforceAccount'][_0xcc66('0x114')](db['SalesforceConfiguration'],{'as':'Configurations','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0xa5')][_0xcc66('0x114')](db[_0xcc66('0xa7')],{'as':_0xcc66('0x1b3'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xa5')]['hasMany'](db[_0xcc66('0xa7')],{'as':_0xcc66('0x1b5'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xa5')][_0xcc66('0x114')](db[_0xcc66('0xa7')],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b7')});db['SalesforceConfiguration'][_0xcc66('0x11c')](db['SalesforceAccount'],{'as':'Account','foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0xa7')]['hasMany'](db['SalesforceField'],{'as':_0xcc66('0x1b8'),'foreignKey':_0xcc66('0x1b4')});db['SalesforceField']['hasMany'](db[_0xcc66('0xa7')],{'as':_0xcc66('0x1b9'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xa7')][_0xcc66('0x114')](db[_0xcc66('0xa7')],{'as':_0xcc66('0x1ba'),'foreignKey':'FieldId'});db[_0xcc66('0xa7')][_0xcc66('0x11c')](db[_0xcc66('0x1bb')],{'as':_0xcc66('0x1bb'),'foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0xa9')]['hasMany'](db[_0xcc66('0x1bd')],{'as':_0xcc66('0x1be'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0x1bd')][_0xcc66('0x114')](db[_0xcc66('0xaa')],{'as':_0xcc66('0x1b3'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b4')});db['SugarcrmConfiguration']['hasMany'](db[_0xcc66('0xaa')],{'as':_0xcc66('0x1b5'),'onDelete':'cascade','foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0x1bd')]['hasMany'](db[_0xcc66('0xaa')],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0x1bd')][_0xcc66('0x11c')](db['SugarcrmAccount'],{'as':_0xcc66('0x16a'),'foreignKey':'AccountId'});db[_0xcc66('0xaa')][_0xcc66('0x114')](db[_0xcc66('0xaa')],{'as':_0xcc66('0x1b8'),'foreignKey':'SubjectId'});db[_0xcc66('0xaa')][_0xcc66('0x114')](db[_0xcc66('0xaa')],{'as':_0xcc66('0x1b9'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xaa')][_0xcc66('0x114')](db[_0xcc66('0xaa')],{'as':'Field','foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xaa')][_0xcc66('0x11c')](db[_0xcc66('0x1bb')],{'as':_0xcc66('0x1bb'),'foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0xac')][_0xcc66('0x114')](db[_0xcc66('0xae')],{'as':_0xcc66('0x1be'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b2')});db['DeskConfiguration']['hasMany'](db[_0xcc66('0xb0')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xae')]['hasMany'](db[_0xcc66('0xb0')],{'as':_0xcc66('0x1b5'),'onDelete':_0xcc66('0x112'),'foreignKey':'DescriptionId'});db['DeskConfiguration'][_0xcc66('0x114')](db['DeskField'],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xae')]['belongsTo'](db[_0xcc66('0xac')],{'as':'Account','foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0xae')][_0xcc66('0x11f')](db['Tag'],{'through':_0xcc66('0x1bf')});db[_0xcc66('0xb0')][_0xcc66('0x114')](db['DeskField'],{'as':_0xcc66('0x1b8'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xb0')][_0xcc66('0x114')](db[_0xcc66('0xb0')],{'as':_0xcc66('0x1b9'),'foreignKey':'DescriptionId'});db[_0xcc66('0xb0')][_0xcc66('0x114')](db['DeskField'],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xb0')][_0xcc66('0x11c')](db[_0xcc66('0x1bb')],{'as':_0xcc66('0x1bb'),'foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0x1c0')][_0xcc66('0x114')](db[_0xcc66('0xb3')],{'as':_0xcc66('0x1be'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b2')});db['ZohoConfiguration'][_0xcc66('0x114')](db[_0xcc66('0x1c1')],{'as':_0xcc66('0x1b3'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b4')});db['ZohoConfiguration'][_0xcc66('0x114')](db['ZohoField'],{'as':_0xcc66('0x1b5'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xcc66('0xb3')]['hasMany'](db[_0xcc66('0x1c1')],{'as':'Fields','onDelete':_0xcc66('0x112'),'foreignKey':'FieldId'});db[_0xcc66('0xb3')]['belongsTo'](db[_0xcc66('0x1c0')],{'as':'Account','foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0x1c1')][_0xcc66('0x114')](db['ZohoField'],{'as':'Subject','foreignKey':_0xcc66('0x1b4')});db['ZohoField'][_0xcc66('0x114')](db['ZohoField'],{'as':_0xcc66('0x1b9'),'foreignKey':'DescriptionId'});db['ZohoField']['hasMany'](db[_0xcc66('0x1c1')],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0x1c1')][_0xcc66('0x11c')](db['Variable'],{'as':'Variable','foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0xb5')]['hasMany'](db['ZendeskConfiguration'],{'as':_0xcc66('0x1be'),'onDelete':'cascade','foreignKey':'AccountId'});db['ZendeskConfiguration'][_0xcc66('0x114')](db[_0xcc66('0xb8')],{'as':_0xcc66('0x1b3'),'foreignKey':_0xcc66('0x1b4')});db['ZendeskConfiguration'][_0xcc66('0x114')](db[_0xcc66('0xb8')],{'as':'Descriptions','foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xb7')][_0xcc66('0x114')](db[_0xcc66('0xb8')],{'as':_0xcc66('0x1b0'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xb7')][_0xcc66('0x11c')](db[_0xcc66('0xb5')],{'as':_0xcc66('0x16a'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x1c2')});db['ZendeskField'][_0xcc66('0x114')](db[_0xcc66('0xb8')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xcc66('0xb8')][_0xcc66('0x114')](db[_0xcc66('0xb8')],{'as':'Description','foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xb8')][_0xcc66('0x114')](db[_0xcc66('0xb8')],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xb8')][_0xcc66('0x11c')](db[_0xcc66('0x1bb')],{'as':_0xcc66('0x1bb'),'foreignKey':'VariableId'});db['FreshdeskAccount'][_0xcc66('0x114')](db[_0xcc66('0x1c3')],{'as':_0xcc66('0x1be'),'onDelete':'cascade','foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0x1c3')][_0xcc66('0x114')](db[_0xcc66('0xbb')],{'as':_0xcc66('0x1b3'),'onDelete':_0xcc66('0x112'),'foreignKey':'SubjectId'});db[_0xcc66('0x1c3')][_0xcc66('0x114')](db[_0xcc66('0xbb')],{'as':'Descriptions','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0x1c3')][_0xcc66('0x114')](db[_0xcc66('0xbb')],{'as':_0xcc66('0x1b0'),'onDelete':_0xcc66('0x112'),'foreignKey':'FieldId'});db[_0xcc66('0x1c3')]['belongsTo'](db[_0xcc66('0xba')],{'as':_0xcc66('0x16a'),'foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0x1c3')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':_0xcc66('0x1c4')});db['FreshdeskField'][_0xcc66('0x114')](db['FreshdeskField'],{'as':_0xcc66('0x1b8'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xbb')][_0xcc66('0x114')](db[_0xcc66('0xbb')],{'as':_0xcc66('0x1b9'),'foreignKey':'DescriptionId'});db['FreshdeskField']['hasMany'](db[_0xcc66('0xbb')],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db['FreshdeskField'][_0xcc66('0x11c')](db[_0xcc66('0x1bb')],{'as':'Variable','foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0x1c5')]['hasMany'](db['VtigerConfiguration'],{'as':_0xcc66('0x1be'),'onDelete':_0xcc66('0x112'),'foreignKey':'AccountId'});db[_0xcc66('0xbe')]['hasMany'](db[_0xcc66('0xc0')],{'as':_0xcc66('0x1b3'),'foreignKey':'SubjectId'});db['VtigerConfiguration'][_0xcc66('0x114')](db[_0xcc66('0xc0')],{'as':'Descriptions','foreignKey':_0xcc66('0x1b6')});db['VtigerConfiguration'][_0xcc66('0x114')](db[_0xcc66('0xc0')],{'as':'Fields','foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xbe')][_0xcc66('0x11c')](db[_0xcc66('0x1c5')],{'as':'Account','foreignKey':_0xcc66('0x1b2')});db['VtigerField'][_0xcc66('0x114')](db['VtigerField'],{'as':'Subject','foreignKey':'SubjectId'});db['VtigerField']['hasMany'](db['VtigerField'],{'as':_0xcc66('0x1b9'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xc0')][_0xcc66('0x114')](db[_0xcc66('0xc0')],{'as':_0xcc66('0x1ba'),'foreignKey':'FieldId'});db['VtigerField'][_0xcc66('0x11c')](db[_0xcc66('0x1bb')],{'as':_0xcc66('0x1bb'),'foreignKey':'VariableId'});db[_0xcc66('0x1c6')][_0xcc66('0x114')](db[_0xcc66('0xc3')],{'as':_0xcc66('0x1be'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0xc3')]['hasMany'](db['ServicenowField'],{'as':'Subjects','foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xc3')][_0xcc66('0x114')](db[_0xcc66('0x1c7')],{'as':_0xcc66('0x1b5'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xc3')][_0xcc66('0x114')](db['ServicenowField'],{'as':_0xcc66('0x1b0'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xc3')][_0xcc66('0x11c')](db[_0xcc66('0x1c6')],{'as':_0xcc66('0x16a'),'foreignKey':'AccountId'});db[_0xcc66('0x1c7')]['hasMany'](db['ServicenowField'],{'as':_0xcc66('0x1b8'),'foreignKey':'SubjectId'});db[_0xcc66('0x1c7')][_0xcc66('0x114')](db[_0xcc66('0x1c7')],{'as':_0xcc66('0x1b9'),'foreignKey':_0xcc66('0x1b6')});db['ServicenowField']['hasMany'](db[_0xcc66('0x1c7')],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0x1c7')]['belongsTo'](db[_0xcc66('0x1bb')],{'as':_0xcc66('0x1bb'),'foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0xc6')][_0xcc66('0x114')](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0xcc66('0x112'),'foreignKey':'AccountId'});db['Dynamics365Configuration']['hasMany'](db['Dynamics365Field'],{'as':_0xcc66('0x1b3'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xc7')][_0xcc66('0x114')](db[_0xcc66('0x1c8')],{'as':_0xcc66('0x1b5'),'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xc7')][_0xcc66('0x114')](db['Dynamics365Field'],{'as':'Fields','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xc7')][_0xcc66('0x11c')](db[_0xcc66('0xc6')],{'as':_0xcc66('0x16a'),'foreignKey':'AccountId'});db[_0xcc66('0x1c8')]['hasMany'](db[_0xcc66('0x1c8')],{'as':_0xcc66('0x1b8'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0x1c8')][_0xcc66('0x114')](db[_0xcc66('0x1c8')],{'as':'Description','foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0x1c8')]['hasMany'](db[_0xcc66('0x1c8')],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0x1c8')][_0xcc66('0x11c')](db['Variable'],{'as':_0xcc66('0x1bb'),'foreignKey':_0xcc66('0x1bc')});db[_0xcc66('0xc9')][_0xcc66('0x114')](db[_0xcc66('0xcb')],{'as':_0xcc66('0x1be'),'onDelete':_0xcc66('0x112'),'foreignKey':'AccountId'});db['FreshsalesConfiguration'][_0xcc66('0x114')](db[_0xcc66('0xcc')],{'as':_0xcc66('0x1b3'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xcb')]['hasMany'](db[_0xcc66('0xcc')],{'as':_0xcc66('0x1b5'),'foreignKey':_0xcc66('0x1b6')});db['FreshsalesConfiguration'][_0xcc66('0x114')](db[_0xcc66('0xcc')],{'as':'Fields','foreignKey':_0xcc66('0x1b7')});db[_0xcc66('0xcb')][_0xcc66('0x11c')](db['FreshsalesAccount'],{'as':'Account','foreignKey':_0xcc66('0x1b2')});db[_0xcc66('0xcc')]['hasMany'](db[_0xcc66('0xcc')],{'as':_0xcc66('0x1b8'),'foreignKey':_0xcc66('0x1b4')});db[_0xcc66('0xcc')][_0xcc66('0x114')](db[_0xcc66('0xcc')],{'as':_0xcc66('0x1b9'),'foreignKey':_0xcc66('0x1b6')});db[_0xcc66('0xcc')][_0xcc66('0x114')](db[_0xcc66('0xcc')],{'as':_0xcc66('0x1ba'),'foreignKey':_0xcc66('0x1b7')});db['FreshsalesField'][_0xcc66('0x11c')](db['Variable'],{'as':_0xcc66('0x1bb'),'foreignKey':_0xcc66('0x1bc')});db['ChatQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0x137')],{});db['ChatQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0x1c9')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':'Contact','foreignKey':_0xcc66('0x15b')});db['ChatQueueReport']['belongsTo'](db[_0xcc66('0x6a')],{});db['ChatQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0x18c')],{});db['ChatQueueReport']['belongsTo'](db[_0xcc66('0x13')],{});db[_0xcc66('0x1c9')][_0xcc66('0x11c')](db[_0xcc66('0x12e')],{});db['ChatInternalMessage'][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x1ca')});db[_0xcc66('0xd1')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x112'),'foreignKey':'ToId'});db[_0xcc66('0x14d')][_0xcc66('0x114')](db[_0xcc66('0x1cb')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0xcc66('0x14d')][_0xcc66('0x114')](db[_0xcc66('0xd3')],{'foreignKey':_0xcc66('0x1cc'),'onDelete':_0xcc66('0x112')});db[_0xcc66('0xd6')][_0xcc66('0x11c')](db[_0xcc66('0x56')],{});db[_0xcc66('0xd6')][_0xcc66('0x11c')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0xcc66('0xd6')][_0xcc66('0x11c')](db[_0xcc66('0x75')],{'as':'Contact','foreignKey':_0xcc66('0x15b')});db[_0xcc66('0xd6')]['belongsTo'](db['SmsInteraction'],{});db[_0xcc66('0xd6')]['belongsTo'](db[_0xcc66('0x181')],{});db['SmsQueueReport']['belongsTo'](db[_0xcc66('0x13')],{});db[_0xcc66('0xd6')]['belongsTo'](db[_0xcc66('0x5c')],{});db[_0xcc66('0xda')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0xcc66('0x1cd')});db[_0xcc66('0xda')][_0xcc66('0x114')](db[_0xcc66('0x1cb')],{'foreignKey':_0xcc66('0x1cd')});db['JscriptyProject']['hasMany'](db['JscriptyAnswerReport'],{'foreignKey':_0xcc66('0x1cd')});db['SquareProject'][_0xcc66('0x11f')](db['User'],{'as':_0xcc66('0x170'),'through':_0xcc66('0x143')});db['Team']['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x123')});db[_0xcc66('0xe4')][_0xcc66('0x11f')](db['VoiceQueue'],{'through':_0xcc66('0x154'),'as':_0xcc66('0x12c')});db[_0xcc66('0xe4')]['belongsToMany'](db['MailQueue'],{'through':_0xcc66('0x168'),'as':_0xcc66('0x12d')});db[_0xcc66('0xe4')]['belongsToMany'](db[_0xcc66('0x12e')],{'through':_0xcc66('0x192'),'as':_0xcc66('0x12f')});db['Team']['belongsToMany'](db[_0xcc66('0x53')],{'through':'team_has_fax_queues','as':_0xcc66('0x130')});db[_0xcc66('0xe4')][_0xcc66('0x11f')](db[_0xcc66('0x5c')],{'through':_0xcc66('0x1ce'),'as':_0xcc66('0x131')});db[_0xcc66('0xe4')][_0xcc66('0x11f')](db[_0xcc66('0x132')],{'through':_0xcc66('0x189'),'as':_0xcc66('0x133')});db['Team'][_0xcc66('0x11f')](db[_0xcc66('0x10c')],{'through':_0xcc66('0x1cf'),'as':_0xcc66('0x135')});db[_0xcc66('0xe4')][_0xcc66('0x11f')](db['VoicePrefix'],{'through':_0xcc66('0x1d0'),'as':_0xcc66('0x1d1')});db[_0xcc66('0x19a')][_0xcc66('0x114')](db['CmHopper'],{'as':_0xcc66('0x14a'),'foreignKey':'CampaignId'});db[_0xcc66('0x19a')][_0xcc66('0x114')](db['CmHopperFinal'],{'as':_0xcc66('0x117'),'foreignKey':_0xcc66('0x19b')});db[_0xcc66('0x19a')][_0xcc66('0x114')](db[_0xcc66('0x7d')],{'as':_0xcc66('0x14b'),'foreignKey':'CampaignId'});db[_0xcc66('0x19a')][_0xcc66('0x114')](db[_0xcc66('0x79')],{'as':_0xcc66('0x14c'),'foreignKey':_0xcc66('0x19b')});db[_0xcc66('0x19a')]['belongsTo'](db[_0xcc66('0x2c')],{'as':_0xcc66('0x2c'),'foreignKey':_0xcc66('0x14f')});db[_0xcc66('0x19a')]['belongsTo'](db[_0xcc66('0x2c')],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0xcc66('0x19a')]['belongsTo'](db[_0xcc66('0x174')],{'as':'Interval','foreignKey':_0xcc66('0x175')});db[_0xcc66('0x19a')][_0xcc66('0x11c')](db['SquareProject'],{'as':_0xcc66('0x142'),'foreignKey':_0xcc66('0x1d2')});db[_0xcc66('0x19a')]['belongsToMany'](db[_0xcc66('0xf7')],{'as':'Lists','through':_0xcc66('0x1d3')});db['Campaign']['belongsToMany'](db['CmList'],{'as':_0xcc66('0x155'),'through':_0xcc66('0x1d4')});db[_0xcc66('0xea')][_0xcc66('0x11c')](db[_0xcc66('0x6d')],{'as':_0xcc66('0x6d'),'foreignKey':_0xcc66('0x172')});db[_0xcc66('0xed')][_0xcc66('0x11c')](db[_0xcc66('0x45')],{});db[_0xcc66('0xed')][_0xcc66('0x11c')](db[_0xcc66('0x43')],{});db[_0xcc66('0xed')][_0xcc66('0x11c')](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':_0xcc66('0x1d5')});db[_0xcc66('0xed')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':'FromUserId','as':_0xcc66('0x1d6')});db[_0xcc66('0xed')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':'ToUserId','as':_0xcc66('0x1d7')});db[_0xcc66('0xed')][_0xcc66('0x11c')](db[_0xcc66('0x40')],{'foreignKey':'ToMailQueueId','as':_0xcc66('0x1d8')});db['MailTransferReport'][_0xcc66('0x11c')](db[_0xcc66('0x3e')],{'foreignKey':_0xcc66('0x1d9'),'as':_0xcc66('0x1da')});db['ChatTransferReport'][_0xcc66('0x11c')](db[_0xcc66('0x18c')],{});db[_0xcc66('0xef')]['belongsTo'](db[_0xcc66('0x6a')],{});db[_0xcc66('0xef')][_0xcc66('0x11c')](db[_0xcc66('0x137')],{'foreignKey':'FromChatWebsiteId','as':_0xcc66('0x1d5')});db[_0xcc66('0xef')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':_0xcc66('0x1db'),'as':'FromAgent'});db['ChatTransferReport'][_0xcc66('0x11c')](db['User'],{'foreignKey':'ToUserId','as':_0xcc66('0x1d7')});db['ChatTransferReport'][_0xcc66('0x11c')](db[_0xcc66('0x12e')],{'foreignKey':_0xcc66('0x1dc'),'as':'ToQueue'});db[_0xcc66('0xef')]['belongsTo'](db[_0xcc66('0x137')],{'foreignKey':_0xcc66('0x1dd'),'as':_0xcc66('0x1da')});db['FaxTransferReport'][_0xcc66('0x11c')](db[_0xcc66('0x52')],{});db[_0xcc66('0xf1')]['belongsTo'](db['FaxInteraction'],{});db[_0xcc66('0xf1')]['belongsTo'](db[_0xcc66('0x4e')],{'foreignKey':_0xcc66('0x1de'),'as':_0xcc66('0x1d5')});db['FaxTransferReport'][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':_0xcc66('0x1db'),'as':_0xcc66('0x1d6')});db[_0xcc66('0xf1')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':_0xcc66('0x1df'),'as':_0xcc66('0x1d7')});db[_0xcc66('0xf1')][_0xcc66('0x11c')](db[_0xcc66('0x53')],{'foreignKey':_0xcc66('0x1e0'),'as':'ToQueue'});db[_0xcc66('0xf1')][_0xcc66('0x11c')](db[_0xcc66('0x4e')],{'foreignKey':'ToFaxAccountId','as':_0xcc66('0x1da')});db[_0xcc66('0xf3')][_0xcc66('0x11c')](db[_0xcc66('0x64')],{});db[_0xcc66('0xf3')][_0xcc66('0x11c')](db[_0xcc66('0x62')],{});db[_0xcc66('0xf3')]['belongsTo'](db[_0xcc66('0x5e')],{'foreignKey':_0xcc66('0x1e1'),'as':_0xcc66('0x1d5')});db[_0xcc66('0xf3')][_0xcc66('0x11c')](db['User'],{'foreignKey':_0xcc66('0x1db'),'as':_0xcc66('0x1d6')});db[_0xcc66('0xf3')][_0xcc66('0x11c')](db['User'],{'foreignKey':'ToUserId','as':_0xcc66('0x1d7')});db[_0xcc66('0xf3')][_0xcc66('0x11c')](db[_0xcc66('0x132')],{'foreignKey':_0xcc66('0x1e2'),'as':_0xcc66('0x1d8')});db['OpenchannelTransferReport']['belongsTo'](db[_0xcc66('0x5e')],{'foreignKey':_0xcc66('0x1e3'),'as':_0xcc66('0x1da')});db[_0xcc66('0xf5')][_0xcc66('0x11c')](db['SmsMessage'],{});db[_0xcc66('0xf5')]['belongsTo'](db[_0xcc66('0x59')],{});db[_0xcc66('0xf5')][_0xcc66('0x11c')](db[_0xcc66('0x56')],{'foreignKey':_0xcc66('0x1e4'),'as':_0xcc66('0x1d5')});db[_0xcc66('0xf5')][_0xcc66('0x11c')](db['User'],{'foreignKey':'FromUserId','as':_0xcc66('0x1d6')});db[_0xcc66('0xf5')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':_0xcc66('0x1df'),'as':_0xcc66('0x1d7')});db[_0xcc66('0xf5')][_0xcc66('0x11c')](db['SmsQueue'],{'foreignKey':_0xcc66('0x1e5'),'as':_0xcc66('0x1d8')});db[_0xcc66('0xf5')][_0xcc66('0x11c')](db[_0xcc66('0x56')],{'foreignKey':_0xcc66('0x1e6'),'as':_0xcc66('0x1da')});db[_0xcc66('0xf7')]['hasMany'](db['Disposition'],{'as':_0xcc66('0x161'),'foreignKey':_0xcc66('0x164'),'onDelete':'cascade'});db[_0xcc66('0xf7')]['hasMany'](db[_0xcc66('0x1e7')],{'as':_0xcc66('0x1e8'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0xf7')][_0xcc66('0x114')](db[_0xcc66('0x75')],{'as':'Contacts','onDelete':_0xcc66('0x112'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0xf7')][_0xcc66('0x114')](db[_0xcc66('0x7b')],{'as':_0xcc66('0x117'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0xf7')][_0xcc66('0x114')](db[_0xcc66('0x7d')],{'as':'HopperHistory','foreignKey':'ListId'});db[_0xcc66('0xf7')][_0xcc66('0x114')](db[_0xcc66('0x7f')],{'as':_0xcc66('0x7f'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0xf7')][_0xcc66('0x11f')](db[_0xcc66('0x1d')],{'as':_0xcc66('0x1e9'),'through':_0xcc66('0x1ea')});db[_0xcc66('0xf7')][_0xcc66('0x11f')](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x122')});db['VoicePrefix'][_0xcc66('0x114')](db[_0xcc66('0x19')],{'as':_0xcc66('0x116'),'onDelete':_0xcc66('0x112')});db['VoicePrefix']['belongsToMany'](db[_0xcc66('0x13')],{'as':'Agents','through':_0xcc66('0x10f')});db[_0xcc66('0xf9')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':_0xcc66('0x1d0'),'as':_0xcc66('0x153')});db[_0xcc66('0xfb')][_0xcc66('0x114')](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'foreignKey':_0xcc66('0x11d')});db[_0xcc66('0xfb')][_0xcc66('0x114')](db['UserProfileSection'],{'as':_0xcc66('0x1eb'),'foreignKey':'userProfileId','onDelete':'cascade'});db[_0xcc66('0xfd')]['hasMany'](db['UserProfileResource'],{'as':_0xcc66('0x1ec'),'foreignKey':_0xcc66('0x1ed'),'onDelete':'cascade'});db[_0xcc66('0x102')][_0xcc66('0x114')](db[_0xcc66('0x86')],{'as':_0xcc66('0x161'),'foreignKey':_0xcc66('0x1ee'),'onDelete':_0xcc66('0x112')});db['WhatsappAccount']['hasMany'](db['CannedAnswer'],{'as':_0xcc66('0x162'),'foreignKey':_0xcc66('0x1ee')});db[_0xcc66('0x102')]['hasMany'](db[_0xcc66('0x107')],{'as':'Messages','foreignKey':'WhatsappAccountId'});db[_0xcc66('0x102')][_0xcc66('0x114')](db[_0xcc66('0x105')],{'as':'Interactions'});db['WhatsappAccount']['hasMany'](db['WhatsappApplication'],{'as':_0xcc66('0x145')});db[_0xcc66('0x102')][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0x102')][_0xcc66('0x11c')](db[_0xcc66('0x8a')],{'as':_0xcc66('0x152'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xcc66('0x102')]['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x141')});db[_0xcc66('0x1ef')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'onDelete':_0xcc66('0x173')});db['WhatsappApplication'][_0xcc66('0x11c')](db[_0xcc66('0x10c')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x1ef')][_0xcc66('0x11c')](db[_0xcc66('0x102')],{'onDelete':_0xcc66('0x173')});db[_0xcc66('0x1ef')][_0xcc66('0x11c')](db[_0xcc66('0x174')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x175')});db[_0xcc66('0x1ef')][_0xcc66('0x11c')](db[_0xcc66('0x90')],{'onDelete':_0xcc66('0x173'),'foreignKey':_0xcc66('0x176')});db[_0xcc66('0x105')][_0xcc66('0x114')](db[_0xcc66('0x107')],{'as':'Messages','onDelete':_0xcc66('0x112'),'foreignKey':'WhatsappInteractionId'});db[_0xcc66('0x105')]['belongsTo'](db[_0xcc66('0x102')],{'as':_0xcc66('0x16a'),'foreignKey':'WhatsappAccountId'});db[_0xcc66('0x105')]['belongsTo'](db['CmContact'],{'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x105')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'as':_0xcc66('0x16c'),'foreignKey':_0xcc66('0x113')});db[_0xcc66('0x105')][_0xcc66('0x11f')](db['Tag'],{'through':_0xcc66('0x1aa'),'as':_0xcc66('0x16d')});db[_0xcc66('0x105')][_0xcc66('0x11f')](db[_0xcc66('0x90')],{'through':'whatsapp_interaction_has_tags','as':_0xcc66('0x16f')});db['WhatsappInteraction']['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x170'),'through':_0xcc66('0x12b'),'foreignKey':'WhatsappInteractionId'});db[_0xcc66('0x107')]['belongsTo'](db[_0xcc66('0x13')],{'as':_0xcc66('0x13')});db[_0xcc66('0x107')]['belongsTo'](db['CmContact'],{'onDelete':_0xcc66('0x112'),'as':_0xcc66('0x16b')});db[_0xcc66('0x107')][_0xcc66('0x11c')](db[_0xcc66('0x105')],{'onDelete':'cascade','as':_0xcc66('0x184'),'foreignKey':_0xcc66('0x1f0')});db[_0xcc66('0x107')][_0xcc66('0x11c')](db[_0xcc66('0x102')],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0xcc66('0x109')][_0xcc66('0x11c')](db[_0xcc66('0x102')],{});db['WhatsappQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0xf7')],{'as':_0xcc66('0x17c'),'foreignKey':_0xcc66('0x164')});db[_0xcc66('0x109')]['belongsTo'](db[_0xcc66('0x75')],{'as':_0xcc66('0x16b'),'foreignKey':_0xcc66('0x15b')});db[_0xcc66('0x109')][_0xcc66('0x11c')](db[_0xcc66('0x105')],{});db[_0xcc66('0x109')][_0xcc66('0x11c')](db[_0xcc66('0x10c')],{});db[_0xcc66('0x109')][_0xcc66('0x11c')](db[_0xcc66('0x107')],{});db['WhatsappQueueReport'][_0xcc66('0x11c')](db[_0xcc66('0x13')],{});db[_0xcc66('0x10b')][_0xcc66('0x11c')](db[_0xcc66('0x107')],{});db['WhatsappTransferReport']['belongsTo'](db['WhatsappInteraction'],{});db[_0xcc66('0x10b')][_0xcc66('0x11c')](db[_0xcc66('0x102')],{'foreignKey':'FromWhatsappAccountId','as':'FromAccount'});db[_0xcc66('0x10b')][_0xcc66('0x11c')](db[_0xcc66('0x102')],{'foreignKey':'ToWhatsappAccountId','as':_0xcc66('0x1da')});db['WhatsappTransferReport']['belongsTo'](db[_0xcc66('0x10c')],{'foreignKey':_0xcc66('0x1f1'),'as':_0xcc66('0x1d8')});db[_0xcc66('0x10b')][_0xcc66('0x11c')](db['User'],{'foreignKey':_0xcc66('0x1db'),'as':_0xcc66('0x1d6')});db[_0xcc66('0x10b')][_0xcc66('0x11c')](db[_0xcc66('0x13')],{'foreignKey':'ToUserId','as':_0xcc66('0x1d7')});db[_0xcc66('0x10c')]['belongsToMany'](db[_0xcc66('0x13')],{'as':_0xcc66('0x167'),'through':_0xcc66('0x136'),'foreignKey':_0xcc66('0x1f2')});db[_0xcc66('0x10c')][_0xcc66('0x11f')](db[_0xcc66('0xe4')],{'through':_0xcc66('0x1cf'),'as':_0xcc66('0x153')});module[_0xcc66('0x1f3')]={'db':db,'dbH':dbH};
\ No newline at end of file
index be7f433..c607ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9df=['/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','static','join','root','/apidoc','/www','/demo','/snippet','snippet','3.0.0','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','username','newPassword','apiKey','firstName','phone','fax','email','clientId','clientSecret','securityToken','code','accessKey','channelSecret','authToken','consumerSecret','membername','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','key','accountSid','localstationid','dsn','secret','registry','oldPassword','isArray','length','isPlainObject','isString','replace','@@{','}@@','lodash','path','express-winston','util','./config/environment','./config/logger','auth','default','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','method','headers','x-forwarded-for','connection','statusCode','responseTime','user','logger','device','format','remoteAddress','url','name','other','agent_id','agent_name','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','./api/mailAccount','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowField','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','./api/license','/api/campaigns','/api/migrations','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userNotification','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0xc9df,0x17d));var _0xfc9d=function(_0x472a9b,_0x4c9486){_0x472a9b=_0x472a9b-0x0;var _0x3c4d57=_0xc9df[_0x472a9b];return _0x3c4d57;};'use strict';var _=require(_0xfc9d('0x0'));var path=require(_0xfc9d('0x1'));var express=require('express');var ewinston=require(_0xfc9d('0x2'));var util=require(_0xfc9d('0x3'));var errors=require('./errors');var config=require(_0xfc9d('0x4'));var logger=require('./config/logger')('api');var authLogger=require(_0xfc9d('0x5'))(_0xfc9d('0x6'));exports[_0xfc9d('0x7')]=function(_0x539649){_0x539649[_0xfc9d('0x8')](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x560d31,_0xa185c0){var _0x3dde5a=_0xfc9d('0x9');if(!_['isEmpty'](_0x560d31[_0xfc9d('0xa')])){_0x3dde5a+=_0xfc9d('0xb');var _0x33b3b8=_0x560d31[_0xfc9d('0xa')];maskSensitiveData(_0x33b3b8);}return util['format'](_0x3dde5a,_0x560d31[_0xfc9d('0xc')],_0x560d31[_0xfc9d('0xd')][_0xfc9d('0xe')]?_0x560d31[_0xfc9d('0xd')][_0xfc9d('0xe')]:_0x560d31[_0xfc9d('0xf')]['remoteAddress']||_0x560d31['ip'],_0x560d31['url'],_0xa185c0[_0xfc9d('0x10')],_0xa185c0[_0xfc9d('0x11')],_0x560d31[_0xfc9d('0x12')]?_0x560d31[_0xfc9d('0x12')]['id']:null,_0x560d31['user']?_0x560d31[_0xfc9d('0x12')]['name']:null,_0x560d31[_0xfc9d('0x12')]?_0x560d31['user']['role']:null,_0x33b3b8?util['inspect'](_0x33b3b8,![],null):'');}}));_0x539649['use'](ewinston[_0xfc9d('0x13')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x13beb6,_0x465569){var _0x5cf316='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x14')]&&_0x13beb6[_0xfc9d('0xa')]['agent_id']){_0x5cf316='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0xfc9d('0x15')](_0x5cf316,_0x13beb6[_0xfc9d('0xc')],_0x13beb6[_0xfc9d('0xd')][_0xfc9d('0xe')]?_0x13beb6['headers'][_0xfc9d('0xe')]:_0x13beb6[_0xfc9d('0xf')][_0xfc9d('0x16')]||_0x13beb6['ip'],_0x13beb6[_0xfc9d('0x17')],_0x465569[_0xfc9d('0x10')],_0x465569[_0xfc9d('0x11')],_0x13beb6['user']?_0x13beb6[_0xfc9d('0x12')]['id']:null,_0x13beb6[_0xfc9d('0x12')]?_0x13beb6['user'][_0xfc9d('0x18')]:null,_0x13beb6[_0xfc9d('0x12')]?_0x13beb6[_0xfc9d('0x12')]['role']:null,_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x14')]?_0x13beb6[_0xfc9d('0xa')]['device']:_0xfc9d('0x19'),_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1a')]?_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1a')]:'',_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1b')]?_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1b')]:'');},'ignoreRoute':function(_0x3622a2){var _0x48a26e=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x48a26e['test'](_0x3622a2['url']);}}));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x1c'),require('./api/user'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x1d'),require(_0xfc9d('0x1e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x1f'),require('./api/voiceContext'));_0x539649['use'](_0xfc9d('0x20'),require(_0xfc9d('0x21')));_0x539649[_0xfc9d('0x8')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x539649['use'](_0xfc9d('0x22'),require(_0xfc9d('0x23')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x24'),require(_0xfc9d('0x25')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x26'),require(_0xfc9d('0x27')));_0x539649[_0xfc9d('0x8')]('/api/voice/mails',require(_0xfc9d('0x28')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x29'),require(_0xfc9d('0x2a')));_0x539649['use']('/api/voice/calls/reports',require(_0xfc9d('0x2b')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x2c'),require(_0xfc9d('0x2d')));_0x539649['use'](_0xfc9d('0x2e'),require(_0xfc9d('0x2f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x30'),require(_0xfc9d('0x31')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x32'),require('./api/memberReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x33'),require(_0xfc9d('0x34')));_0x539649['use'](_0xfc9d('0x35'),require(_0xfc9d('0x36')));_0x539649[_0xfc9d('0x8')]('/api/mail/out_servers',require(_0xfc9d('0x37')));_0x539649[_0xfc9d('0x8')]('/api/mail/accounts',require(_0xfc9d('0x38')));_0x539649['use'](_0xfc9d('0x39'),require('./api/mailQueue'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x3a'),require(_0xfc9d('0x3b')));_0x539649['use']('/api/mail/interactions',require(_0xfc9d('0x3c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x3d'),require(_0xfc9d('0x3e')));_0x539649['use'](_0xfc9d('0x3f'),require(_0xfc9d('0x40')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x41'),require(_0xfc9d('0x42')));_0x539649[_0xfc9d('0x8')]('/api/dashboards',require('./api/dashboard'));_0x539649[_0xfc9d('0x8')]('/api/dashboards/items',require(_0xfc9d('0x43')));_0x539649['use'](_0xfc9d('0x44'),require(_0xfc9d('0x45')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x46'),require('./api/faxApplication'));_0x539649['use'](_0xfc9d('0x47'),require(_0xfc9d('0x48')));_0x539649[_0xfc9d('0x8')]('/api/fax/messages',require(_0xfc9d('0x49')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x4a'),require(_0xfc9d('0x4b')));_0x539649['use'](_0xfc9d('0x4c'),require('./api/faxQueueReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x4d'),require(_0xfc9d('0x4e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x4f'),require('./api/smsApplication'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x50'),require(_0xfc9d('0x51')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x52'),require(_0xfc9d('0x53')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x54'),require(_0xfc9d('0x55')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x56'),require('./api/openchannelAccount'));_0x539649[_0xfc9d('0x8')]('/api/openchannel/applications',require(_0xfc9d('0x57')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x58'),require(_0xfc9d('0x59')));_0x539649['use']('/api/openchannel/messages',require(_0xfc9d('0x5a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x5b'),require(_0xfc9d('0x5c')));_0x539649[_0xfc9d('0x8')]('/api/chat/websites',require(_0xfc9d('0x5d')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x5e'),require(_0xfc9d('0x5f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x60'),require(_0xfc9d('0x61')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x62'),require('./api/chatInteraction'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x63'),require(_0xfc9d('0x64')));_0x539649['use']('/api/chat/offline_messages',require(_0xfc9d('0x65')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x66'),require('./api/chatQueue'));_0x539649[_0xfc9d('0x8')]('/api/chat/groups',require(_0xfc9d('0x67')));_0x539649['use'](_0xfc9d('0x68'),require('./api/chatProactiveAction'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x69'),require(_0xfc9d('0x6a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x6b'),require('./api/cmContact'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x6c'),require(_0xfc9d('0x6d')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x6e'),require(_0xfc9d('0x6f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x70'),require(_0xfc9d('0x71')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x72'),require(_0xfc9d('0x73')));_0x539649['use'](_0xfc9d('0x74'),require('./api/cmCustomField'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x75'),require(_0xfc9d('0x76')));_0x539649['use'](_0xfc9d('0x77'),require(_0xfc9d('0x78')));_0x539649['use']('/api/canned_answers',require(_0xfc9d('0x79')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x7a'),require(_0xfc9d('0x7b')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x7c'),require(_0xfc9d('0x7d')));_0x539649[_0xfc9d('0x8')]('/api/intervals',require('./api/interval'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x7e'),require(_0xfc9d('0x7f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x80'),require(_0xfc9d('0x81')));_0x539649[_0xfc9d('0x8')]('/api/voiceQueuesLog',require(_0xfc9d('0x82')));_0x539649[_0xfc9d('0x8')]('/api/schedules',require(_0xfc9d('0x83')));_0x539649['use'](_0xfc9d('0x84'),require(_0xfc9d('0x85')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x86'),require('./api/tag'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x87'),require(_0xfc9d('0x88')));_0x539649[_0xfc9d('0x8')]('/api/triggers',require('./api/trigger'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x89'),require(_0xfc9d('0x8a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x8b'),require(_0xfc9d('0x8c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x8d'),require(_0xfc9d('0x8e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x8f'),require(_0xfc9d('0x90')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x91'),require('./api/analyticDefaultReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x92'),require(_0xfc9d('0x93')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x94'),require('./api/analyticMetric'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x95'),require(_0xfc9d('0x96')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x97'),require(_0xfc9d('0x98')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x99'),require(_0xfc9d('0x9a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x9b'),require(_0xfc9d('0x9c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x9d'),require(_0xfc9d('0x9e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x9f'),require('./api/intSugarcrmAccount'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa0'),require('./api/intSugarcrmConfiguration'));_0x539649[_0xfc9d('0x8')]('/api/integrations/sugarcrm/fields',require(_0xfc9d('0xa1')));_0x539649[_0xfc9d('0x8')]('/api/integrations/desk/accounts',require(_0xfc9d('0xa2')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa3'),require(_0xfc9d('0xa4')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa5'),require(_0xfc9d('0xa6')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa7'),require('./api/intZohoAccount'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa8'),require(_0xfc9d('0xa9')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xaa'),require(_0xfc9d('0xab')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xac'),require(_0xfc9d('0xad')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xae'),require(_0xfc9d('0xaf')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xb0'),require('./api/intZendeskField'));_0x539649['use'](_0xfc9d('0xb1'),require(_0xfc9d('0xb2')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xb3'),require('./api/intFreshdeskConfiguration'));_0x539649['use'](_0xfc9d('0xb4'),require(_0xfc9d('0xb5')));_0x539649[_0xfc9d('0x8')]('/api/integrations/vtiger/accounts',require(_0xfc9d('0xb6')));_0x539649['use'](_0xfc9d('0xb7'),require(_0xfc9d('0xb8')));_0x539649['use'](_0xfc9d('0xb9'),require(_0xfc9d('0xba')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xbb'),require(_0xfc9d('0xbc')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xbd'),require('./api/intServicenowConfiguration'));_0x539649[_0xfc9d('0x8')]('/api/integrations/servicenow/fields',require(_0xfc9d('0xbe')));_0x539649['use']('/api/integrations/dynamics365/accounts',require('./api/intDynamics365Account'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xbf'),require(_0xfc9d('0xc0')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xc1'),require(_0xfc9d('0xc2')));_0x539649[_0xfc9d('0x8')]('/api/integrations/freshsales/accounts',require(_0xfc9d('0xc3')));_0x539649['use'](_0xfc9d('0xc4'),require(_0xfc9d('0xc5')));_0x539649['use']('/api/integrations/freshsales/fields',require(_0xfc9d('0xc6')));_0x539649['use'](_0xfc9d('0xc7'),require(_0xfc9d('0xc8')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xc9'),require(_0xfc9d('0xca')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xcb'),require(_0xfc9d('0xcc')));_0x539649['use']('/api/jscripty/answers/reports',require(_0xfc9d('0xcd')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xce'),require(_0xfc9d('0xcf')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd0'),require(_0xfc9d('0xd1')));_0x539649['use'](_0xfc9d('0xd2'),require(_0xfc9d('0xd3')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd4'),require('./api/squareReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd5'),require('./api/squareReportDetail'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd6'),require(_0xfc9d('0xd7')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd8'),require(_0xfc9d('0xd9')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xda'),require(_0xfc9d('0xdb')));_0x539649['use'](_0xfc9d('0xdc'),require('./api/squareProject'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xdd'),require(_0xfc9d('0xde')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xdf'),require('./api/squareMessage'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe0'),require(_0xfc9d('0xe1')));_0x539649[_0xfc9d('0x8')]('/api/license',require(_0xfc9d('0xe2')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe3'),require('./api/campaign'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe4'),require('./api/migration'));_0x539649[_0xfc9d('0x8')]('/api/attachments',require(_0xfc9d('0xe5')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe6'),require(_0xfc9d('0xe7')));_0x539649['use'](_0xfc9d('0xe8'),require(_0xfc9d('0xe9')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xea'),require('./api/chatTransferReport'));_0x539649['use'](_0xfc9d('0xeb'),require(_0xfc9d('0xec')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xed'),require(_0xfc9d('0xee')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xef'),require(_0xfc9d('0xf0')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xf1'),require(_0xfc9d('0xf2')));_0x539649[_0xfc9d('0x8')]('/api/voice/prefixes',require(_0xfc9d('0xf3')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xf4'),require(_0xfc9d('0xf5')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xf6'),require(_0xfc9d('0xf7')));_0x539649['use'](_0xfc9d('0xf8'),require('./api/userProfileResource'));_0x539649[_0xfc9d('0x8')]('/api/userNotifications',require(_0xfc9d('0xf9')));_0x539649[_0xfc9d('0x8')]('/api/whatsapp/accounts',require('./api/whatsappAccount'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xfa'),require(_0xfc9d('0xfb')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xfc'),require(_0xfc9d('0xfd')));_0x539649[_0xfc9d('0x8')]('/api/whatsapp/messages',require(_0xfc9d('0xfe')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xff'),require(_0xfc9d('0x100')));_0x539649[_0xfc9d('0x8')]('/api/whatsapp/reports/transfer',require('./api/whatsappTransferReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x101'),require(_0xfc9d('0x102')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x103'),require(_0xfc9d('0x104')));_0x539649[_0xfc9d('0x8')]('/api/realtime',require('./api/realtime'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x105'),require(_0xfc9d('0x106')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x107'),require(_0xfc9d('0x108')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x109'),require(_0xfc9d('0x10a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x10b'),require(_0xfc9d('0x10c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x10d'),require(_0xfc9d('0x10e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x10f'),require(_0xfc9d('0x110')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x111'),require(_0xfc9d('0x112')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x113'),require(_0xfc9d('0x114')));_0x539649[_0xfc9d('0x8')]('/apidoc',express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x118'))));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x119'),express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x119'))));_0x539649['use'](_0xfc9d('0x11a'),express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x11a'))));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x11b'),express[_0xfc9d('0x115')](path['join'](config['root'],_0xfc9d('0x11c'),_0xfc9d('0x11d'))));_0x539649['use']('/plugins',express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x11e'))));_0x539649[_0xfc9d('0x11f')](_0xfc9d('0x120'))[_0xfc9d('0x121')](errors[0x194]);_0x539649[_0xfc9d('0x11f')]('/*')[_0xfc9d('0x121')](function(_0x27640d,_0x5b7c52){_0x5b7c52['sendFile'](path[_0xfc9d('0x122')](_0x539649[_0xfc9d('0x121')]('appPath')+'/index.html'));});};var sensitiveFields=[_0xfc9d('0x123'),'password',_0xfc9d('0x124'),_0xfc9d('0x125'),_0xfc9d('0x126'),'lastName','street',_0xfc9d('0x127'),'mobile',_0xfc9d('0x128'),_0xfc9d('0x129'),_0xfc9d('0x12a'),_0xfc9d('0x12b'),_0xfc9d('0x12c'),_0xfc9d('0x12d'),_0xfc9d('0x12e'),'tenantId','token',_0xfc9d('0x12f'),'accessToken','accessTokenSecret',_0xfc9d('0x130'),'consumerKey',_0xfc9d('0x131'),_0xfc9d('0x132'),'calleridname',_0xfc9d('0x133'),_0xfc9d('0x134'),_0xfc9d('0x135'),'clientEmail',_0xfc9d('0x136'),'accesskeyid',_0xfc9d('0x137'),_0xfc9d('0x138'),_0xfc9d('0x12'),'pass',_0xfc9d('0x139'),_0xfc9d('0x13a'),_0xfc9d('0x13b'),_0xfc9d('0x13c'),_0xfc9d('0x13d'),_0xfc9d('0x13e')];function maskSensitiveData(_0x1b78d5){var _0x324b5e=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0x1b78d5))return;for(var _0x1339fb in _0x1b78d5){if(_[_0xfc9d('0x13f')](_0x1b78d5[_0x1339fb])){for(var _0xcb5ba7=0x0;_0xcb5ba7<_0x1b78d5[_0x1339fb][_0xfc9d('0x140')];_0xcb5ba7++){maskSensitiveData(_0x1b78d5[_0x1339fb][_0xcb5ba7]);}}else if(_[_0xfc9d('0x141')](_0x1b78d5[_0x1339fb])){maskSensitiveData(_0x1b78d5[_0x1339fb]);}else if(_[_0xfc9d('0x142')](_0x1b78d5[_0x1339fb])){_0x1b78d5[_0x1339fb]=_0x1b78d5[_0x1339fb][_0xfc9d('0x143')](/{{{/g,_0xfc9d('0x144'))[_0xfc9d('0x143')](/}}}/g,_0xfc9d('0x145'))[_0xfc9d('0x143')](/{{/g,'@{')[_0xfc9d('0x143')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x1339fb)){_0x1b78d5[_0x1339fb]=_0x1b78d5[_0x1339fb][_0xfc9d('0x143')](_0x324b5e,'*');}}}}
\ No newline at end of file
+var _0xaa63=['./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesConfiguration','./api/intFreshsalesField','./api/chatQueueReport','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','/api/license','/api/migrations','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','/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/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','clientSecret','securityToken','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','pass','accountSid','localstationid','registry','oldPassword','isPlainObject','length','isString','replace','@@{','}@@','lodash','path','express','express-winston','util','./errors','./config/logger','api','default','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','body','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','user','role','inspect','agent_id','responseTime','name','device','other','agent_name','test','/api/users','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/queues','./api/mailSubstatus','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/openchannelApplication','/api/openchannel/interactions','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','./api/chatQueue','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperHistory','/api/cm/custom_fields','./api/action','./api/automation','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','./api/schedule','/api/sounds','/api/tags','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts'];(function(_0x70bc73,_0x43fa85){var _0x297557=function(_0xa5c419){while(--_0xa5c419){_0x70bc73['push'](_0x70bc73['shift']());}};_0x297557(++_0x43fa85);}(_0xaa63,0x1d3));var _0x3aa6=function(_0x39f1f6,_0x1c9ce7){_0x39f1f6=_0x39f1f6-0x0;var _0x12cfab=_0xaa63[_0x39f1f6];return _0x12cfab;};'use strict';var _=require(_0x3aa6('0x0'));var path=require(_0x3aa6('0x1'));var express=require(_0x3aa6('0x2'));var ewinston=require(_0x3aa6('0x3'));var util=require(_0x3aa6('0x4'));var errors=require(_0x3aa6('0x5'));var config=require('./config/environment');var logger=require(_0x3aa6('0x6'))(_0x3aa6('0x7'));var authLogger=require(_0x3aa6('0x6'))('auth');exports[_0x3aa6('0x8')]=function(_0x54a61c){_0x54a61c[_0x3aa6('0x9')](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x2f1d2e,_0x14b7be){var _0x3e1a0a=_0x3aa6('0xa');if(!_[_0x3aa6('0xb')](_0x2f1d2e['body'])){_0x3e1a0a+=_0x3aa6('0xc');var _0x47fdc4=_0x2f1d2e[_0x3aa6('0xd')];maskSensitiveData(_0x47fdc4);}return util[_0x3aa6('0xe')](_0x3e1a0a,_0x2f1d2e[_0x3aa6('0xf')],_0x2f1d2e[_0x3aa6('0x10')][_0x3aa6('0x11')]?_0x2f1d2e[_0x3aa6('0x10')][_0x3aa6('0x11')]:_0x2f1d2e[_0x3aa6('0x12')][_0x3aa6('0x13')]||_0x2f1d2e['ip'],_0x2f1d2e[_0x3aa6('0x14')],_0x14b7be[_0x3aa6('0x15')],_0x14b7be['responseTime'],_0x2f1d2e[_0x3aa6('0x16')]?_0x2f1d2e[_0x3aa6('0x16')]['id']:null,_0x2f1d2e[_0x3aa6('0x16')]?_0x2f1d2e[_0x3aa6('0x16')]['name']:null,_0x2f1d2e[_0x3aa6('0x16')]?_0x2f1d2e[_0x3aa6('0x16')][_0x3aa6('0x17')]:null,_0x47fdc4?util[_0x3aa6('0x18')](_0x47fdc4,![],null):'');}}));_0x54a61c['use'](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x260f1d,_0x1c818e){var _0x4e01d7='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x260f1d[_0x3aa6('0xd')]&&_0x260f1d[_0x3aa6('0xd')]['device']&&_0x260f1d[_0x3aa6('0xd')][_0x3aa6('0x19')]){_0x4e01d7='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x3aa6('0xe')](_0x4e01d7,_0x260f1d[_0x3aa6('0xf')],_0x260f1d[_0x3aa6('0x10')][_0x3aa6('0x11')]?_0x260f1d['headers']['x-forwarded-for']:_0x260f1d[_0x3aa6('0x12')][_0x3aa6('0x13')]||_0x260f1d['ip'],_0x260f1d[_0x3aa6('0x14')],_0x1c818e[_0x3aa6('0x15')],_0x1c818e[_0x3aa6('0x1a')],_0x260f1d[_0x3aa6('0x16')]?_0x260f1d[_0x3aa6('0x16')]['id']:null,_0x260f1d[_0x3aa6('0x16')]?_0x260f1d[_0x3aa6('0x16')][_0x3aa6('0x1b')]:null,_0x260f1d[_0x3aa6('0x16')]?_0x260f1d[_0x3aa6('0x16')][_0x3aa6('0x17')]:null,_0x260f1d[_0x3aa6('0xd')]&&_0x260f1d['body'][_0x3aa6('0x1c')]?_0x260f1d['body'][_0x3aa6('0x1c')]:_0x3aa6('0x1d'),_0x260f1d['body']&&_0x260f1d[_0x3aa6('0xd')][_0x3aa6('0x19')]?_0x260f1d['body'][_0x3aa6('0x19')]:'',_0x260f1d[_0x3aa6('0xd')]&&_0x260f1d['body'][_0x3aa6('0x1e')]?_0x260f1d['body'][_0x3aa6('0x1e')]:'');},'ignoreRoute':function(_0x5b939e){var _0x57142c=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x57142c[_0x3aa6('0x1f')](_0x5b939e['url']);}}));_0x54a61c['use'](_0x3aa6('0x20'),require('./api/user'));_0x54a61c[_0x3aa6('0x9')]('/api/voice/chanspy',require(_0x3aa6('0x21')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x22'),require(_0x3aa6('0x23')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x24'),require(_0x3aa6('0x25')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x26'),require('./api/voiceMusicOnHold'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x27'),require('./api/voiceQueue'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x28'),require(_0x3aa6('0x29')));_0x54a61c[_0x3aa6('0x9')]('/api/screen/recordings',require('./api/screenRecording'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x2a'),require(_0x3aa6('0x2b')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x2c'),require('./api/voiceMailMessage'));_0x54a61c[_0x3aa6('0x9')]('/api/voice/calls/reports',require('./api/voiceCallReport'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x2d'),require(_0x3aa6('0x2e')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x2f'),require(_0x3aa6('0x30')));_0x54a61c[_0x3aa6('0x9')]('/api/voice/queues/reports',require(_0x3aa6('0x31')));_0x54a61c['use'](_0x3aa6('0x32'),require(_0x3aa6('0x33')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x34'),require('./api/trunk'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x35'),require(_0x3aa6('0x36')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x37'),require(_0x3aa6('0x38')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x39'),require('./api/mailAccount'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x3a'),require('./api/mailQueue'));_0x54a61c[_0x3aa6('0x9')]('/api/mail/substatuses',require(_0x3aa6('0x3b')));_0x54a61c[_0x3aa6('0x9')]('/api/mail/interactions',require('./api/mailInteraction'));_0x54a61c['use']('/api/mail/messages',require(_0x3aa6('0x3c')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x3d'),require('./api/mailApplication'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x3e'),require(_0x3aa6('0x3f')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x40'),require(_0x3aa6('0x41')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x42'),require(_0x3aa6('0x43')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x44'),require(_0x3aa6('0x45')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x46'),require(_0x3aa6('0x47')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x48'),require(_0x3aa6('0x49')));_0x54a61c['use'](_0x3aa6('0x4a'),require(_0x3aa6('0x4b')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x4c'),require(_0x3aa6('0x4d')));_0x54a61c[_0x3aa6('0x9')]('/api/fax/reports/queue',require(_0x3aa6('0x4e')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x4f'),require(_0x3aa6('0x50')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x51'),require(_0x3aa6('0x52')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x53'),require(_0x3aa6('0x54')));_0x54a61c['use'](_0x3aa6('0x55'),require('./api/smsMessage'));_0x54a61c['use'](_0x3aa6('0x56'),require('./api/smsQueue'));_0x54a61c[_0x3aa6('0x9')]('/api/openchannel/accounts',require('./api/openchannelAccount'));_0x54a61c['use']('/api/openchannel/applications',require(_0x3aa6('0x57')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x58'),require('./api/openchannelInteraction'));_0x54a61c[_0x3aa6('0x9')]('/api/openchannel/messages',require('./api/openchannelMessage'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x59'),require(_0x3aa6('0x5a')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x5b'),require(_0x3aa6('0x5c')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x5d'),require(_0x3aa6('0x5e')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x5f'),require(_0x3aa6('0x60')));_0x54a61c['use'](_0x3aa6('0x61'),require('./api/chatInteraction'));_0x54a61c['use'](_0x3aa6('0x62'),require(_0x3aa6('0x63')));_0x54a61c[_0x3aa6('0x9')]('/api/chat/offline_messages',require(_0x3aa6('0x64')));_0x54a61c[_0x3aa6('0x9')]('/api/chat/queues',require(_0x3aa6('0x65')));_0x54a61c[_0x3aa6('0x9')]('/api/chat/groups',require('./api/chatGroup'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x66'),require(_0x3aa6('0x67')));_0x54a61c['use'](_0x3aa6('0x68'),require(_0x3aa6('0x69')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x6a'),require('./api/cmContact'));_0x54a61c[_0x3aa6('0x9')]('/api/cm/hopper',require(_0x3aa6('0x6b')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x6c'),require(_0x3aa6('0x6d')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x6e'),require('./api/cmHopperFinal'));_0x54a61c[_0x3aa6('0x9')]('/api/cm/hopper_history',require(_0x3aa6('0x6f')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x70'),require('./api/cmCustomField'));_0x54a61c[_0x3aa6('0x9')]('/api/actions',require(_0x3aa6('0x71')));_0x54a61c[_0x3aa6('0x9')]('/api/automations',require(_0x3aa6('0x72')));_0x54a61c[_0x3aa6('0x9')]('/api/canned_answers',require('./api/cannedAnswer'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x73'),require(_0x3aa6('0x74')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x75'),require(_0x3aa6('0x76')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x77'),require(_0x3aa6('0x78')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x79'),require(_0x3aa6('0x7a')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x7b'),require(_0x3aa6('0x7c')));_0x54a61c[_0x3aa6('0x9')]('/api/voiceQueuesLog',require(_0x3aa6('0x7d')));_0x54a61c[_0x3aa6('0x9')]('/api/schedules',require(_0x3aa6('0x7e')));_0x54a61c['use'](_0x3aa6('0x7f'),require('./api/sound'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x80'),require('./api/tag'));_0x54a61c[_0x3aa6('0x9')]('/api/templates',require('./api/template'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x81'),require(_0x3aa6('0x82')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x83'),require(_0x3aa6('0x84')));_0x54a61c['use'](_0x3aa6('0x85'),require(_0x3aa6('0x86')));_0x54a61c['use']('/api/integrations/reports',require(_0x3aa6('0x87')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x88'),require(_0x3aa6('0x89')));_0x54a61c[_0x3aa6('0x9')]('/api/analytics/default_reports',require(_0x3aa6('0x8a')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x8b'),require(_0x3aa6('0x8c')));_0x54a61c['use'](_0x3aa6('0x8d'),require(_0x3aa6('0x8e')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x8f'),require('./api/analyticFieldReport'));_0x54a61c['use'](_0x3aa6('0x90'),require('./api/analyticTreeReport'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x91'),require(_0x3aa6('0x92')));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/salesforce/configurations',require(_0x3aa6('0x93')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x94'),require('./api/intSalesforceField'));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/sugarcrm/accounts',require(_0x3aa6('0x95')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x96'),require(_0x3aa6('0x97')));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/sugarcrm/fields',require(_0x3aa6('0x98')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x99'),require(_0x3aa6('0x9a')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x9b'),require(_0x3aa6('0x9c')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x9d'),require(_0x3aa6('0x9e')));_0x54a61c['use'](_0x3aa6('0x9f'),require(_0x3aa6('0xa0')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xa1'),require(_0x3aa6('0xa2')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xa3'),require('./api/intZohoField'));_0x54a61c['use'](_0x3aa6('0xa4'),require(_0x3aa6('0xa5')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xa6'),require('./api/intZendeskConfiguration'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xa7'),require(_0x3aa6('0xa8')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xa9'),require(_0x3aa6('0xaa')));_0x54a61c['use'](_0x3aa6('0xab'),require('./api/intFreshdeskConfiguration'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xac'),require(_0x3aa6('0xad')));_0x54a61c['use'](_0x3aa6('0xae'),require('./api/intVtigerAccount'));_0x54a61c['use'](_0x3aa6('0xaf'),require('./api/intVtigerConfiguration'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xb0'),require(_0x3aa6('0xb1')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xb2'),require(_0x3aa6('0xb3')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xb4'),require(_0x3aa6('0xb5')));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/servicenow/fields',require(_0x3aa6('0xb6')));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/dynamics365/accounts',require(_0x3aa6('0xb7')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xb8'),require(_0x3aa6('0xb9')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xba'),require(_0x3aa6('0xbb')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xbc'),require('./api/intFreshsalesAccount'));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/freshsales/configurations',require(_0x3aa6('0xbd')));_0x54a61c[_0x3aa6('0x9')]('/api/integrations/freshsales/fields',require(_0x3aa6('0xbe')));_0x54a61c[_0x3aa6('0x9')]('/api/networks',require('./api/network'));_0x54a61c['use']('/api/chat/reports/queue',require(_0x3aa6('0xbf')));_0x54a61c[_0x3aa6('0x9')]('/api/chat/internal/messages',require(_0x3aa6('0xc0')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xc1'),require(_0x3aa6('0xc2')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xc3'),require(_0x3aa6('0xc4')));_0x54a61c['use'](_0x3aa6('0xc5'),require(_0x3aa6('0xc6')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xc7'),require('./api/smsQueueReport'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xc8'),require(_0x3aa6('0xc9')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xca'),require(_0x3aa6('0xcb')));_0x54a61c[_0x3aa6('0x9')]('/api/jscripty/projects',require('./api/jscriptyProject'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xcc'),require('./api/setting'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xcd'),require(_0x3aa6('0xce')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xcf'),require(_0x3aa6('0xd0')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xd1'),require(_0x3aa6('0xd2')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xd3'),require(_0x3aa6('0xd4')));_0x54a61c['use'](_0x3aa6('0xd5'),require('./api/team'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xd6'),require('./api/license'));_0x54a61c[_0x3aa6('0x9')]('/api/campaigns',require('./api/campaign'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xd7'),require('./api/migration'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xd8'),require(_0x3aa6('0xd9')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xda'),require(_0x3aa6('0xdb')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xdc'),require('./api/mailTransferReport'));_0x54a61c['use']('/api/chat/reports/transfer',require(_0x3aa6('0xdd')));_0x54a61c[_0x3aa6('0x9')]('/api/fax/reports/transfer',require(_0x3aa6('0xde')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xdf'),require('./api/openchannelTransferReport'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xe0'),require(_0x3aa6('0xe1')));_0x54a61c[_0x3aa6('0x9')]('/api/cm/lists',require(_0x3aa6('0xe2')));_0x54a61c['use'](_0x3aa6('0xe3'),require('./api/voicePrefix'));_0x54a61c[_0x3aa6('0x9')]('/api/userProfiles',require('./api/userProfile'));_0x54a61c['use'](_0x3aa6('0xe4'),require(_0x3aa6('0xe5')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xe6'),require(_0x3aa6('0xe7')));_0x54a61c['use'](_0x3aa6('0xe8'),require('./api/userNotification'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xe9'),require('./api/whatsappAccount'));_0x54a61c['use'](_0x3aa6('0xea'),require('./api/whatsappApplication'));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xeb'),require(_0x3aa6('0xec')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xed'),require(_0x3aa6('0xee')));_0x54a61c['use'](_0x3aa6('0xef'),require(_0x3aa6('0xf0')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xf1'),require(_0x3aa6('0xf2')));_0x54a61c[_0x3aa6('0x9')]('/api/whatsapp/queues',require('./api/whatsappQueue'));_0x54a61c[_0x3aa6('0x9')]('/api/cloudProviders',require(_0x3aa6('0xf3')));_0x54a61c['use'](_0x3aa6('0xf4'),require(_0x3aa6('0xf5')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xf6'),require(_0x3aa6('0xf7')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xf8'),require(_0x3aa6('0xf9')));_0x54a61c[_0x3aa6('0x9')]('/api/jira',require(_0x3aa6('0xfa')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0xfb'),require(_0x3aa6('0xfc')));_0x54a61c[_0x3aa6('0x9')]('/api/version',require(_0x3aa6('0xfd')));_0x54a61c['use'](_0x3aa6('0xfe'),require('./api/system'));_0x54a61c[_0x3aa6('0x9')]('/api/pm2',require(_0x3aa6('0xff')));_0x54a61c['use'](_0x3aa6('0x100'),require(_0x3aa6('0x101')));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x102'),express[_0x3aa6('0x103')](path[_0x3aa6('0x104')](config[_0x3aa6('0x105')],_0x3aa6('0x102'))));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x106'),express[_0x3aa6('0x103')](path['join'](config[_0x3aa6('0x105')],_0x3aa6('0x106'))));_0x54a61c[_0x3aa6('0x9')]('/demo',express[_0x3aa6('0x103')](path['join'](config[_0x3aa6('0x105')],_0x3aa6('0x107'))));_0x54a61c['use'](_0x3aa6('0x108'),express['static'](path[_0x3aa6('0x104')](config['root'],_0x3aa6('0x109'),_0x3aa6('0x10a'))));_0x54a61c[_0x3aa6('0x9')](_0x3aa6('0x10b'),express[_0x3aa6('0x103')](path[_0x3aa6('0x104')](config[_0x3aa6('0x105')],_0x3aa6('0x10c'))));_0x54a61c[_0x3aa6('0x10d')](_0x3aa6('0x10e'))[_0x3aa6('0x10f')](errors[0x194]);_0x54a61c[_0x3aa6('0x10d')]('/*')['get'](function(_0x3d1bf6,_0x4af2eb){_0x4af2eb[_0x3aa6('0x110')](path[_0x3aa6('0x111')](_0x54a61c[_0x3aa6('0x10f')](_0x3aa6('0x112'))+_0x3aa6('0x113')));});};var sensitiveFields=[_0x3aa6('0x114'),_0x3aa6('0x115'),_0x3aa6('0x116'),_0x3aa6('0x117'),_0x3aa6('0x118'),_0x3aa6('0x119'),_0x3aa6('0x11a'),_0x3aa6('0x11b'),_0x3aa6('0x11c'),_0x3aa6('0x11d'),'email','clientId',_0x3aa6('0x11e'),_0x3aa6('0x11f'),'code',_0x3aa6('0x120'),_0x3aa6('0x121'),_0x3aa6('0x122'),_0x3aa6('0x123'),_0x3aa6('0x124'),_0x3aa6('0x125'),_0x3aa6('0x126'),_0x3aa6('0x127'),_0x3aa6('0x128'),_0x3aa6('0x129'),_0x3aa6('0x12a'),'calleridnum',_0x3aa6('0x12b'),_0x3aa6('0x12c'),_0x3aa6('0x12d'),_0x3aa6('0x12e'),_0x3aa6('0x12f'),_0x3aa6('0x130'),'key',_0x3aa6('0x16'),_0x3aa6('0x131'),_0x3aa6('0x132'),_0x3aa6('0x133'),'dsn','secret',_0x3aa6('0x134'),_0x3aa6('0x135')];function maskSensitiveData(_0x1af643){var _0x711d40=/(?!^)[\s\S](?!$)/g;if(!_[_0x3aa6('0x136')](_0x1af643))return;for(var _0x3e4664 in _0x1af643){if(_['isArray'](_0x1af643[_0x3e4664])){for(var _0x519644=0x0;_0x519644<_0x1af643[_0x3e4664][_0x3aa6('0x137')];_0x519644++){maskSensitiveData(_0x1af643[_0x3e4664][_0x519644]);}}else if(_['isPlainObject'](_0x1af643[_0x3e4664])){maskSensitiveData(_0x1af643[_0x3e4664]);}else if(_[_0x3aa6('0x138')](_0x1af643[_0x3e4664])){_0x1af643[_0x3e4664]=_0x1af643[_0x3e4664][_0x3aa6('0x139')](/{{{/g,_0x3aa6('0x13a'))['replace'](/}}}/g,_0x3aa6('0x13b'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x3e4664)){_0x1af643[_0x3e4664]=_0x1af643[_0x3e4664][_0x3aa6('0x139')](_0x711d40,'*');}}}}
\ No newline at end of file
index 1536381..1dc5d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x029b=['../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/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.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/chatQueueReport/chatQueueReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','../config/environment','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x029b,0x66));var _0xb029=function(_0x505e1e,_0xb36b0){_0x505e1e=_0x505e1e-0x0;var _0xbcfb10=_0x029b[_0x505e1e];return _0xbcfb10;};'use strict';var jayson=require(_0xb029('0x0'));var BPromise=require(_0xb029('0x1'));var _=require('lodash');var config=require(_0xb029('0x2'));exports[_0xb029('0x3')]=function(){return new BPromise(function(_0x4e6bbd,_0x41cdc7){var _0xd6ac43={};_0xd6ac43=_['merge'](_0xd6ac43,require('../api/user/user.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x5')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x6')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceRecording/voiceRecording.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceCallReport/voiceCallReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceDialReport/voiceDialReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x7')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x8')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x9')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xa')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0xb')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0xc')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xd')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/mailInteraction/mailInteraction.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xe')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/mailApplication/mailApplication.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xf')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x10')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x11')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x12')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/faxMessage/faxMessage.rpc'));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x13')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x14')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x15')));_0xd6ac43=_['merge'](_0xd6ac43,require('../api/smsInteraction/smsInteraction.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x16')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x17')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x18')));_0xd6ac43=_['merge'](_0xd6ac43,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0xd6ac43=_['merge'](_0xd6ac43,require('../api/openchannelMessage/openchannelMessage.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x19')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1a')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x1b')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1c')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1d')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1e')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1f')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x20')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x21')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x22')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x23')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x24')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x25')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x26')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x27')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x28')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x29')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/intDeskAccount/intDeskAccount.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/intZohoAccount/intZohoAccount.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2a')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2b')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2c')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2d')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x2e')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2f')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x30')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/smsQueueReport/smsQueueReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/squareReport/squareReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/squareReportDetail/squareReportDetail.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x31')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x32')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x33')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/squareRecording/squareRecording.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x34')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x35')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x36')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/plugin/plugin.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x37')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x38')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x39')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x3a')));var _0x2328b0=jayson[_0xb029('0x3b')](_0xd6ac43)[_0xb029('0x3c')]();var _0x1392af=config['rpc'][_0xb029('0x3d')]||config[_0xb029('0x3d')]+0x1;var _0x117b1a=config['rpc']['ip']||'localhost';_0x2328b0['on']('error',function(_0x31477a){return _0x41cdc7(_0x31477a);});_0x2328b0[_0xb029('0x3')](_0x1392af,_0x117b1a,function(){console['log'](_0xb029('0x3e'),_0x117b1a,_0x1392af);require(_0xb029('0x3f'))[_0xb029('0x40')]();return _0x4e6bbd(_0xb029('0x41')+_0x117b1a+':'+_0x1392af);});});};
\ No newline at end of file
+var _0x099d=['../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','jayson/promise','bluebird','lodash','listen','../api/user/user.rpc','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelMessage/openchannelMessage.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/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc'];(function(_0x483e3a,_0x568361){var _0x43fca9=function(_0x273d7e){while(--_0x273d7e){_0x483e3a['push'](_0x483e3a['shift']());}};_0x43fca9(++_0x568361);}(_0x099d,0x1a2));var _0xd099=function(_0x4d7176,_0x3427d3){_0x4d7176=_0x4d7176-0x0;var _0x22e7d1=_0x099d[_0x4d7176];return _0x22e7d1;};'use strict';var jayson=require(_0xd099('0x0'));var BPromise=require(_0xd099('0x1'));var _=require(_0xd099('0x2'));var config=require('../config/environment');exports[_0xd099('0x3')]=function(){return new BPromise(function(_0x4cda42,_0x268559){var _0x1075bf={};_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x4')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x6')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x7')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x8')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x9')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0xa')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0xb')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0xc')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/memberReport/memberReport.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0xd')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0xe')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0xf')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x10')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x11')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x12')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/mailInteraction/mailInteraction.rpc'));_0x1075bf=_['merge'](_0x1075bf,require('../api/mailMessage/mailMessage.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/mailApplication/mailApplication.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x13')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x14')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x15')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x16')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x17')));_0x1075bf=_['merge'](_0x1075bf,require('../api/faxQueue/faxQueue.rpc'));_0x1075bf=_['merge'](_0x1075bf,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/smsAccount/smsAccount.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x18')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x19')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x1a')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x1075bf=_['merge'](_0x1075bf,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x1b')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x1c')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x1d')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x1e')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x1f')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x20')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x21')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x22')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x23')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x24')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x25')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x26')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x27')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x28')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/sound/sound.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/template/template.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/trigger/trigger.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/variable/variable.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x29')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x2a')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x2b')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x2c')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x2d')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x2e')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x2f')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x30')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x31')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x32')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/squareReport/squareReport.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x33')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/squareOdbc/squareOdbc.rpc'));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x34')));_0x1075bf=_['merge'](_0x1075bf,require('../api/squareRecording/squareRecording.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x35')));_0x1075bf=_['merge'](_0x1075bf,require(_0xd099('0x36')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x37')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x38')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x39')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x3a')));_0x1075bf=_[_0xd099('0x5')](_0x1075bf,require(_0xd099('0x3b')));var _0x4bac67=jayson[_0xd099('0x3c')](_0x1075bf)['http']();var _0x198383=config[_0xd099('0x3d')][_0xd099('0x3e')]||config[_0xd099('0x3e')]+0x1;var _0x1f0420=config[_0xd099('0x3d')]['ip']||_0xd099('0x3f');_0x4bac67['on'](_0xd099('0x40'),function(_0x1a5c2b){return _0x268559(_0x1a5c2b);});_0x4bac67[_0xd099('0x3')](_0x198383,_0x1f0420,function(){console[_0xd099('0x41')](_0xd099('0x42'),_0x1f0420,_0x198383);require('../config/triggers')['default']();return _0x4cda42('RPC\x20listening\x20on\x20'+_0x1f0420+':'+_0x198383);});});};
\ No newline at end of file
index 790f459..25b6f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d06=['result=','substr','indexOf','split','length','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','write','destroy','prototype','sendRequest','sync','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','isArray','format','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','extension','setContext','setExtension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','lodash','events','EventEmitter','./reply','call','setEncoding','setTimeout','headers','emit','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','replace'];(function(_0x4ab3fb,_0x776775){var _0x34fe1e=function(_0x1c94c5){while(--_0x1c94c5){_0x4ab3fb['push'](_0x4ab3fb['shift']());}};_0x34fe1e(++_0x776775);}(_0x2d06,0x157));var _0x62d0=function(_0x73bb7,_0x2feaa6){_0x73bb7=_0x73bb7-0x0;var _0x13b334=_0x2d06[_0x73bb7];return _0x13b334;};'use strict';var util=require('util');var _=require(_0x62d0('0x0'));var EventEmitter=require(_0x62d0('0x1'))[_0x62d0('0x2')];var AGIReply=require(_0x62d0('0x3'));var AGIError=require('./error');function AGIChannel(_0x55f61a){var _0x32be50=this,_0x2487bb=new AGIReply(),_0x984713=![],_0x5cf315={};EventEmitter[_0x62d0('0x4')](_0x32be50);_0x55f61a[_0x62d0('0x5')]('utf8');_0x55f61a[_0x62d0('0x6')](0x8*0x3c*0x3c*0x3e8);_0x2487bb[_0x62d0('0x5')]('utf8');_0x2487bb['on'](_0x62d0('0x7'),function(_0xc4dacc){for(var _0x6a487f in _0xc4dacc){_0x32be50[_0x6a487f]=_0xc4dacc[_0x6a487f];}_0x32be50[_0x62d0('0x8')]('ready');});_0x2487bb['on']('line',function(_0x2942cd){if(_0x2942cd[_0x62d0('0x9')]()==_0x62d0('0xa')){_0x32be50[_0x62d0('0x8')](_0x62d0('0xa'));return;}if(_0x2942cd[_0x62d0('0xb')](0x0,0xb)==_0x62d0('0xc')){_0x984713=!![];}if(_0x984713){_0x5cf315['rx']+=_0x2942cd+'\x0a';if(_0x2942cd[_0x62d0('0xd')](_0x62d0('0xe'))!=-0x1){_0x984713=![];}}else{_0x5cf315['rx']=_0x2942cd;}if(_0x984713){return;}if(typeof _0x5cf315['cb']==_0x62d0('0xf')){var _0x1670ca=_0x5cf315['rx'][_0x62d0('0xb')](0x0,0x3),_0x1ff948=null,_0x3a5678=null;_0x1670ca=parseInt(_0x1670ca);if(isNaN(_0x1670ca)){_0x5cf315['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x1670ca!=0xc8){_0x5cf315['cb'](null,{'code':_0x1670ca,'result':-0x1,'extra':'KO'});return;}_0x1ff948=_0x5cf315['rx'][_0x62d0('0xb')](0x4)[_0x62d0('0x10')](_0x62d0('0x11'),'');if(_0x1ff948['indexOf']('\x20')!=-0x1){_0x1ff948=_0x1ff948[_0x62d0('0x12')](0x0,_0x1ff948[_0x62d0('0x13')]('\x20'));}if(_['startsWith'](_0x1ff948,'-1')){_0x1ff948=parseInt(_0x1ff948);}_0x3a5678=_0x5cf315['rx'][_0x62d0('0x14')]('\x20');if(_0x3a5678[_0x62d0('0x15')]==0x3){_0x3a5678=_0x3a5678[0x2][_0x62d0('0xb')](0x1,_0x3a5678[0x2][_0x62d0('0x15')]-0x1);}else if(_0x3a5678['length']>0x3){var _0x5a803c=/\((.+)\)/;var _0x1cbeba=_0x5cf315['rx']['match'](_0x5a803c);if(_0x1cbeba){_0x3a5678=_0x1cbeba[0x1];}else{_0x3a5678=null;}}else{_0x3a5678=null;}_0x5cf315['cb'](null,{'code':_0x1670ca,'result':_0x1ff948,'extra':_0x3a5678});}});_0x55f61a['on'](_0x62d0('0x16'),function(_0x12036c){_0x32be50['emit'](_0x62d0('0x16'),new AGIError('E_AGI_SOCKET_ERROR',_0x12036c[_0x62d0('0x17')]));});_0x55f61a['on'](_0x62d0('0x18'),function(){_0x32be50[_0x62d0('0x8')]('close',new AGIError(_0x62d0('0x19')));});_0x55f61a['on'](_0x62d0('0x1a'),function(){_0x32be50[_0x62d0('0x8')]('timeout',new AGIError(_0x62d0('0x1b')));_0x55f61a['destroy']();});_0x55f61a[_0x62d0('0x1c')](_0x2487bb);this['command']=function(_0x43d3fd,_0x522bd6){var _0x43d3fd=_0x43d3fd||'',_0x522bd6=typeof _0x522bd6=='function'?_0x522bd6:new Function();_0x5cf315={'tx':_0x43d3fd,'rx':'','cb':_0x522bd6};_0x55f61a[_0x62d0('0x1d')](_0x43d3fd+'\x0a');},this['close']=function(){_0x55f61a[_0x62d0('0x1e')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x62d0('0x1f')][_0x62d0('0x20')]=function(_0x44cd6e){return this['command'][_0x62d0('0x21')](this,_0x44cd6e);};AGIChannel[_0x62d0('0x1f')]['answer']=function(){return this['sendRequest']('ANSWER');};AGIChannel['prototype'][_0x62d0('0x22')]=function(_0x15de54,_0x84324a,_0x2d5279){_0x15de54=_0x15de54===undefined?_0x62d0('0x23'):_0x15de54;_0x84324a=_0x84324a===undefined?'5':_0x84324a;_0x2d5279=_0x2d5279===undefined?'1':_0x2d5279;return this['sendRequest'](util['format'](_0x62d0('0x24'),_0x15de54,_0x84324a*0x3e8,_0x2d5279));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x25')]=function(_0x2472cd){_0x2472cd=_0x2472cd||'NO\x20MESSAGE';return this[_0x62d0('0x20')](util['format'](_0x62d0('0x26'),_0x2472cd));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x27')]=function(_0xfa13b9,_0x35dd07){if(_[_0x62d0('0x28')](_0x35dd07)){return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x2a'),_0xfa13b9,_0x35dd07[_0x62d0('0x2b')](',')));}return this[_0x62d0('0x20')](util[_0x62d0('0x29')]('EXEC\x20%s\x20%s',_0xfa13b9,_0x35dd07));};AGIChannel['prototype']['setContext']=function(_0x45c47c){return this[_0x62d0('0x20')](util['format'](_0x62d0('0x2c'),_0x45c47c));};AGIChannel[_0x62d0('0x1f')]['setExtension']=function(_0x38e835){return this[_0x62d0('0x20')](util[_0x62d0('0x29')]('SET\x20EXTENSION\x20%s',_0x38e835));};AGIChannel[_0x62d0('0x1f')]['setPriority']=function(_0x5f12a9){return this[_0x62d0('0x20')](util[_0x62d0('0x29')]('SET\x20PRIORITY\x20%s',_0x5f12a9));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0xa')]=function(){return this[_0x62d0('0x20')]('HANGUP');};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x2d')]=function(_0x331363,_0x135bec){var _0x4f90e2=_['isBoolean'](_0x135bec)||_[_0x62d0('0x2e')](_0x135bec)?_0x135bec[_0x62d0('0x2f')]():_0x135bec;return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x30'),_0x331363,_0x4f90e2?_0x4f90e2[_0x62d0('0x2f')]()[_0x62d0('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x62d0('0x31')]=function(_0x59c27a,_0x4a9ccb){return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x32'),_0x59c27a,_0x4a9ccb));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x33')]=function(_0x2a285e,_0x447984){return this['sendRequest'](util['format'](_0x62d0('0x34'),_0x2a285e,_0x447984));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x35')]=function(_0x4c3d8c,_0x84be43){return this[_0x62d0('0x20')](util['format']('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x4c3d8c,_0x84be43));};AGIChannel[_0x62d0('0x1f')]['continueAt']=function(_0xa7def2,_0x1e3883,_0x48d8c3){_0x1e3883=_0x1e3883||this[_0x62d0('0x36')];_0x48d8c3=_0x48d8c3||0x1;this[_0x62d0('0x37')](_0xa7def2);this[_0x62d0('0x38')](_0x1e3883);this[_0x62d0('0x39')](_0x48d8c3);return this[_0x62d0('0x25')](util[_0x62d0('0x29')](_0x62d0('0x3a'),_0xa7def2,_0x1e3883,_0x48d8c3));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x3b')]=function(_0x40ccad){return this['sendRequest'](util[_0x62d0('0x29')](_0x62d0('0x3c'),_0x40ccad));};AGIChannel['prototype'][_0x62d0('0x3d')]=function(_0x9a6e59,_0x3316e0,_0x41ea12,_0x275b83,_0x1d8a28,_0x18533a){_0x3316e0=_0x3316e0||_0x62d0('0x3e');_0x41ea12=_0x41ea12||'';_0x275b83=_0x275b83===undefined?-0x1:_0x275b83==='-1'?-0x1:_0x275b83*0x3e8;_0x1d8a28=_0x1d8a28===undefined?'':'s='+_0x1d8a28;_0x18533a=_0x18533a?'BEEP':'';return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x3f'),_0x9a6e59,_0x3316e0,_0x41ea12,_0x275b83,_0x18533a,_0x1d8a28));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x40')]=function(_0x159e54,_0x5d1b9f){_0x5d1b9f=_0x5d1b9f||'';return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x41'),_0x159e54,_0x5d1b9f));};AGIChannel['prototype'][_0x62d0('0x42')]=function(_0xaf3634){return this[_0x62d0('0x27')](_0x62d0('0x43'),_0xaf3634);};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x44')]=function(_0x16f007){return this[_0x62d0('0x27')](_0x62d0('0x45'),_0x16f007);};AGIChannel[_0x62d0('0x1f')]['error']=function(_0x3fd8d8,_0x11cb13){this['noop'](util['format'](_0x62d0('0x46'),_0x3fd8d8['id'],_0x3fd8d8[_0x62d0('0x47')],_0x11cb13));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0x07e8=['pipe','command','write','destroy','inherits','prototype','sendRequest','ANSWER','beep','format','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','continueAt','setExtension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','AGI','wait','exec','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','./reply','call','utf8','setTimeout','setEncoding','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout'];(function(_0x26fd38,_0x46f8d6){var _0xff7e4d=function(_0xbfc205){while(--_0xbfc205){_0x26fd38['push'](_0x26fd38['shift']());}};_0xff7e4d(++_0x46f8d6);}(_0x07e8,0x10f));var _0x807e=function(_0x334ca2,_0x4a02e6){_0x334ca2=_0x334ca2-0x0;var _0x66bedd=_0x07e8[_0x334ca2];return _0x66bedd;};'use strict';var util=require(_0x807e('0x0'));var _=require(_0x807e('0x1'));var EventEmitter=require(_0x807e('0x2'))['EventEmitter'];var AGIReply=require(_0x807e('0x3'));var AGIError=require('./error');function AGIChannel(_0x100014){var _0x51e9d4=this,_0x47d154=new AGIReply(),_0x2c423b=![],_0x2dddb4={};EventEmitter[_0x807e('0x4')](_0x51e9d4);_0x100014['setEncoding'](_0x807e('0x5'));_0x100014[_0x807e('0x6')](0x8*0x3c*0x3c*0x3e8);_0x47d154[_0x807e('0x7')](_0x807e('0x5'));_0x47d154['on'](_0x807e('0x8'),function(_0x54e3cb){for(var _0x31f652 in _0x54e3cb){_0x51e9d4[_0x31f652]=_0x54e3cb[_0x31f652];}_0x51e9d4[_0x807e('0x9')](_0x807e('0xa'));});_0x47d154['on'](_0x807e('0xb'),function(_0x1c2fdd){if(_0x1c2fdd[_0x807e('0xc')]()==_0x807e('0xd')){_0x51e9d4[_0x807e('0x9')](_0x807e('0xd'));return;}if(_0x1c2fdd[_0x807e('0xe')](0x0,0xb)==_0x807e('0xf')){_0x2c423b=!![];}if(_0x2c423b){_0x2dddb4['rx']+=_0x1c2fdd+'\x0a';if(_0x1c2fdd[_0x807e('0x10')](_0x807e('0x11'))!=-0x1){_0x2c423b=![];}}else{_0x2dddb4['rx']=_0x1c2fdd;}if(_0x2c423b){return;}if(typeof _0x2dddb4['cb']==_0x807e('0x12')){var _0x518844=_0x2dddb4['rx'][_0x807e('0xe')](0x0,0x3),_0x33cf9e=null,_0x3b3d12=null;_0x518844=parseInt(_0x518844);if(isNaN(_0x518844)){_0x2dddb4['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x807e('0x13')});return;}if(_0x518844!=0xc8){_0x2dddb4['cb'](null,{'code':_0x518844,'result':-0x1,'extra':'KO'});return;}_0x33cf9e=_0x2dddb4['rx'][_0x807e('0xe')](0x4)[_0x807e('0x14')](_0x807e('0x15'),'');if(_0x33cf9e['indexOf']('\x20')!=-0x1){_0x33cf9e=_0x33cf9e['substr'](0x0,_0x33cf9e[_0x807e('0x16')]('\x20'));}if(_[_0x807e('0x17')](_0x33cf9e,'-1')){_0x33cf9e=parseInt(_0x33cf9e);}_0x3b3d12=_0x2dddb4['rx'][_0x807e('0x18')]('\x20');if(_0x3b3d12[_0x807e('0x19')]==0x3){_0x3b3d12=_0x3b3d12[0x2]['substring'](0x1,_0x3b3d12[0x2][_0x807e('0x19')]-0x1);}else if(_0x3b3d12[_0x807e('0x19')]>0x3){var _0x1ffc81=/\((.+)\)/;var _0x2009a2=_0x2dddb4['rx'][_0x807e('0x1a')](_0x1ffc81);if(_0x2009a2){_0x3b3d12=_0x2009a2[0x1];}else{_0x3b3d12=null;}}else{_0x3b3d12=null;}_0x2dddb4['cb'](null,{'code':_0x518844,'result':_0x33cf9e,'extra':_0x3b3d12});}});_0x100014['on'](_0x807e('0x1b'),function(_0x535987){_0x51e9d4[_0x807e('0x9')]('error',new AGIError(_0x807e('0x1c'),_0x535987[_0x807e('0x1d')]));});_0x100014['on'](_0x807e('0x1e'),function(){_0x51e9d4[_0x807e('0x9')](_0x807e('0x1e'),new AGIError(_0x807e('0x1f')));});_0x100014['on'](_0x807e('0x20'),function(){_0x51e9d4[_0x807e('0x9')](_0x807e('0x20'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x100014['destroy']();});_0x100014[_0x807e('0x21')](_0x47d154);this[_0x807e('0x22')]=function(_0x261137,_0x42358e){var _0x261137=_0x261137||'',_0x42358e=typeof _0x42358e==_0x807e('0x12')?_0x42358e:new Function();_0x2dddb4={'tx':_0x261137,'rx':'','cb':_0x42358e};_0x100014[_0x807e('0x23')](_0x261137+'\x0a');},this['close']=function(){_0x100014[_0x807e('0x24')]();};}util[_0x807e('0x25')](AGIChannel,EventEmitter);AGIChannel[_0x807e('0x26')][_0x807e('0x27')]=function(_0x21c32d){return this[_0x807e('0x22')]['sync'](this,_0x21c32d);};AGIChannel[_0x807e('0x26')]['answer']=function(){return this[_0x807e('0x27')](_0x807e('0x28'));};AGIChannel[_0x807e('0x26')]['getData']=function(_0x36bb30,_0xfe6cb6,_0x16530c){_0x36bb30=_0x36bb30===undefined?_0x807e('0x29'):_0x36bb30;_0xfe6cb6=_0xfe6cb6===undefined?'5':_0xfe6cb6;_0x16530c=_0x16530c===undefined?'1':_0x16530c;return this[_0x807e('0x27')](util[_0x807e('0x2a')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x36bb30,_0xfe6cb6*0x3e8,_0x16530c));};AGIChannel[_0x807e('0x26')]['noop']=function(_0x154a18){_0x154a18=_0x154a18||_0x807e('0x2b');return this[_0x807e('0x27')](util['format'](_0x807e('0x2c'),_0x154a18));};AGIChannel[_0x807e('0x26')]['exec']=function(_0xf0138b,_0x11fc8d){if(_['isArray'](_0x11fc8d)){return this[_0x807e('0x27')](util[_0x807e('0x2a')](_0x807e('0x2d'),_0xf0138b,_0x11fc8d[_0x807e('0x2e')](',')));}return this[_0x807e('0x27')](util[_0x807e('0x2a')]('EXEC\x20%s\x20%s',_0xf0138b,_0x11fc8d));};AGIChannel['prototype'][_0x807e('0x2f')]=function(_0x3cfc5f){return this[_0x807e('0x27')](util[_0x807e('0x2a')](_0x807e('0x30'),_0x3cfc5f));};AGIChannel['prototype']['setExtension']=function(_0x33791a){return this[_0x807e('0x27')](util['format'](_0x807e('0x31'),_0x33791a));};AGIChannel[_0x807e('0x26')][_0x807e('0x32')]=function(_0x1532aa){return this[_0x807e('0x27')](util[_0x807e('0x2a')](_0x807e('0x33'),_0x1532aa));};AGIChannel[_0x807e('0x26')][_0x807e('0xd')]=function(){return this[_0x807e('0x27')]('HANGUP');};AGIChannel[_0x807e('0x26')][_0x807e('0x34')]=function(_0x216c8f,_0x498301){var _0x199409=_[_0x807e('0x35')](_0x498301)||_[_0x807e('0x36')](_0x498301)?_0x498301['toString']():_0x498301;return this['sendRequest'](util[_0x807e('0x2a')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x216c8f,_0x199409?_0x199409['toString']()[_0x807e('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x807e('0x26')][_0x807e('0x37')]=function(_0x293451,_0x3dcd43){return this[_0x807e('0x27')](util[_0x807e('0x2a')](_0x807e('0x38'),_0x293451,_0x3dcd43));};AGIChannel[_0x807e('0x26')]['sayDigits']=function(_0x540edf,_0x45036a){return this['sendRequest'](util[_0x807e('0x2a')](_0x807e('0x39'),_0x540edf,_0x45036a));};AGIChannel[_0x807e('0x26')]['sayPhonetic']=function(_0x36d498,_0x104494){return this[_0x807e('0x27')](util[_0x807e('0x2a')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x36d498,_0x104494));};AGIChannel['prototype'][_0x807e('0x3a')]=function(_0x4da2b5,_0xfede06,_0x256051){_0xfede06=_0xfede06||this['extension'];_0x256051=_0x256051||0x1;this['setContext'](_0x4da2b5);this[_0x807e('0x3b')](_0xfede06);this[_0x807e('0x32')](_0x256051);return this[_0x807e('0x3c')](util[_0x807e('0x2a')](_0x807e('0x3d'),_0x4da2b5,_0xfede06,_0x256051));};AGIChannel[_0x807e('0x26')][_0x807e('0x3e')]=function(_0x904874){return this[_0x807e('0x27')](util[_0x807e('0x2a')](_0x807e('0x3f'),_0x904874));};AGIChannel[_0x807e('0x26')][_0x807e('0x40')]=function(_0x54900f,_0x26e98f,_0x57d8e9,_0x26cbb7,_0x33c3de,_0x51aea9){_0x26e98f=_0x26e98f||_0x807e('0x41');_0x57d8e9=_0x57d8e9||'';_0x26cbb7=_0x26cbb7===undefined?-0x1:_0x26cbb7==='-1'?-0x1:_0x26cbb7*0x3e8;_0x33c3de=_0x33c3de===undefined?'':'s='+_0x33c3de;_0x51aea9=_0x51aea9?_0x807e('0x42'):'';return this['sendRequest'](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x54900f,_0x26e98f,_0x57d8e9,_0x26cbb7,_0x51aea9,_0x33c3de));};AGIChannel['prototype'][_0x807e('0x43')]=function(_0x24099f,_0x329cf1){_0x329cf1=_0x329cf1||'';return this[_0x807e('0x27')](util[_0x807e('0x2a')](_0x807e('0x44'),_0x24099f,_0x329cf1));};AGIChannel[_0x807e('0x26')]['agi']=function(_0x555724){return this['exec'](_0x807e('0x45'),_0x555724);};AGIChannel[_0x807e('0x26')][_0x807e('0x46')]=function(_0x127f76){return this[_0x807e('0x47')](_0x807e('0x48'),_0x127f76);};AGIChannel['prototype'][_0x807e('0x1b')]=function(_0x25d874,_0x2c7037){this[_0x807e('0x3c')](util[_0x807e('0x2a')](_0x807e('0x49'),_0x25d874['id'],_0x25d874[_0x807e('0x4a')],_0x2c7037));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x807e('0x4b')]=AGIChannel;
\ No newline at end of file
index a609df7..4408d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2fe=['format','exports','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push'];(function(_0x522d9d,_0x13104a){var _0x377218=function(_0x5f59ba){while(--_0x5f59ba){_0x522d9d['push'](_0x522d9d['shift']());}};_0x377218(++_0x13104a);}(_0xd2fe,0x154));var _0xed2f=function(_0x1c4782,_0x2e04da){_0x1c4782=_0x1c4782-0x0;var _0x1dae38=_0xd2fe[_0x1c4782];return _0x1dae38;};'use strict';var util=require(_0xed2f('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xed2f('0x1'),'E_AGI_SERVER_ERROR':_0xed2f('0x2'),'E_AGI_SERVER_CLOSE':_0xed2f('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xed2f('0x4'),'E_AGI_SOCKET_CLOSE':_0xed2f('0x5'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xed2f('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xed2f('0x7'),'E_AGI_IVR_ENTRY':_0xed2f('0x8')};function AGIError(_0x2415d4){var _0x2415d4=_0x2415d4||null,_0x5d47f8=_0x5d47f8||[],_0x49c21b=0x1,_0x3cb081='';if(!error[_0x2415d4]){_0x2415d4=_0xed2f('0x9');}_0x5d47f8[_0xed2f('0xa')](error[_0x2415d4]);while(arguments[_0x49c21b]){_0x5d47f8['push'](arguments[_0x49c21b]);_0x49c21b++;}_0x3cb081=util[_0xed2f('0xb')]['apply'](util,_0x5d47f8);this['message']=_0x3cb081;this['name']=_0x2415d4;}module[_0xed2f('0xc')]=AGIError;
\ No newline at end of file
+var _0x109a=['[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','exports','util','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x109a,0x137));var _0xa109=function(_0x931abe,_0xc4aa52){_0x931abe=_0x931abe-0x0;var _0x8a195f=_0x109a[_0x931abe];return _0x8a195f;};'use strict';var util=require(_0xa109('0x0'));var error={'E_AGI_UNDEFINED':_0xa109('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0xa109('0x2'),'E_AGI_SERVER_CLOSE':_0xa109('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xa109('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xa109('0x5'),'E_AGI_SOCKET_ERROR':_0xa109('0x6'),'E_AGI_SOCKET_CLOSE':_0xa109('0x7'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xa109('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xa109('0x9'),'E_AGI_IVR_ENTRY':_0xa109('0xa')};function AGIError(_0x99c619){var _0x99c619=_0x99c619||null,_0x3fba7b=_0x3fba7b||[],_0x49bffd=0x1,_0x28e9ef='';if(!error[_0x99c619]){_0x99c619=_0xa109('0xb');}_0x3fba7b['push'](error[_0x99c619]);while(arguments[_0x49bffd]){_0x3fba7b[_0xa109('0xc')](arguments[_0x49bffd]);_0x49bffd++;}_0x28e9ef=util['format'][_0xa109('0xd')](util,_0x3fba7b);this['message']=_0x28e9ef;this['name']=_0x99c619;}module[_0xa109('0xe')]=AGIError;
\ No newline at end of file
index e755d6a..6d1b6ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6108=['default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','numberOfEdges','prototype','addVertex','edges','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','target','default','vswitch'];(function(_0x44a78c,_0x10dfca){var _0x1ec349=function(_0x273d35){while(--_0x273d35){_0x44a78c['push'](_0x44a78c['shift']());}};_0x1ec349(++_0x10dfca);}(_0x6108,0x12e));var _0x8610=function(_0x4b87e2,_0x4ddbc9){_0x4b87e2=_0x4b87e2-0x0;var _0x1c8861=_0x6108[_0x4b87e2];return _0x1c8861;};'use strict';var _=require(_0x8610('0x0'));var logger=require(_0x8610('0x1'))(_0x8610('0x2'));var verticesWithRetry=[_0x8610('0x3'),_0x8610('0x4'),_0x8610('0x5')];var Graph=function(){this[_0x8610('0x6')]={};this['edges']={};this[_0x8610('0x7')]=0x0;};Graph[_0x8610('0x8')][_0x8610('0x9')]=function(_0x20c56c){this['vertices'][_0x20c56c['id']]=_0x20c56c;this[_0x8610('0xa')][_0x20c56c['id']]=[];};Graph[_0x8610('0x8')][_0x8610('0xb')]=function(_0x51ea82,_0x178f1e,_0x29749d){this['edges'][_0x51ea82][_0x8610('0xc')]({'target':_0x178f1e,'condition':_0x29749d});this[_0x8610('0x7')]+=0x1;};Graph[_0x8610('0x8')][_0x8610('0xd')]=function(){return _[_0x8610('0xd')](this['vertices']);};Graph['prototype'][_0x8610('0xe')]=function(){return this[_0x8610('0x7')];};Graph[_0x8610('0x8')][_0x8610('0xf')]=function(_0x108fa1){return this[_0x8610('0x6')][_0x108fa1];};Graph[_0x8610('0x8')][_0x8610('0x10')]=function(_0x13ade6,_0xaae1a){if(!this[_0x8610('0x6')][_0x13ade6]){return logger[_0x8610('0x11')](_0x8610('0x12'));}var _0x1470ab=_0xaae1a(this[_0x8610('0x6')][_0x13ade6]);if(!_0x1470ab){return logger[_0x8610('0x11')](_0x8610('0x13'));}if(this['edges'][_0x13ade6][_0x8610('0x14')]===0x0){return logger['info'](_0x8610('0x15'));}for(var _0x2cf009=0x0,_0x1d779f=[],_0x406a46=![];_0x2cf009<this['edges'][_0x13ade6][_0x8610('0x14')];_0x2cf009+=0x1){if(this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x16')]){_0x1d779f=this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x16')][_0x8610('0x17')](',');for(var _0x58e2bc=0x0;_0x58e2bc<_0x1d779f[_0x8610('0x14')];_0x58e2bc+=0x1){if(this[_0x8610('0x6')][_0x13ade6][_0x8610('0x18')]==='vswitch'&&_0x1d779f[_0x58e2bc]==='-'){_0x406a46=this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x19')];logger[_0x8610('0x11')](_0x8610('0x1a'),_0x1d779f[_0x58e2bc],this['edges'][_0x13ade6][_0x2cf009][_0x8610('0x19')]);}else if(this[_0x8610('0x6')][_0x13ade6]['agicommand']===_0x8610('0x3')&&_0x1d779f[_0x58e2bc]==='i'){_0x406a46=this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x19')];logger[_0x8610('0x11')]('invalid',_0x1d779f[_0x58e2bc],this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x19')]);}if(_0x1d779f[_0x58e2bc]===_0x1470ab){return this[_0x8610('0x10')](this['edges'][_0x13ade6][_0x2cf009][_0x8610('0x19')],_0xaae1a);}}}else{return this['traverseBFS'](this[_0x8610('0xa')][_0x13ade6][_0x2cf009]['target'],_0xaae1a);}}if(_0x1d779f['length']){if(this[_0x8610('0x6')][_0x13ade6][_0x8610('0x18')]===_0x8610('0x1b')){if(_0x406a46){return this['traverseBFS'](_0x406a46,_0xaae1a);}return logger[_0x8610('0x11')](_0x8610('0x1c'));}else if(_[_0x8610('0x1d')](verticesWithRetry,this[_0x8610('0x6')][_0x13ade6][_0x8610('0x18')])){if(_0x1470ab==='-'){return logger[_0x8610('0x11')](_0x8610('0x1e'));}if(_0x406a46&&_0x1470ab!=='t'){return this[_0x8610('0x10')](_0x406a46,_0xaae1a);}return this[_0x8610('0x10')](_0x13ade6,_0xaae1a);}return logger[_0x8610('0x11')](_0x8610('0x1f'));}};module[_0x8610('0x20')]=Graph;
\ No newline at end of file
+var _0x590b=['agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','size','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split'];(function(_0x3fb3f9,_0x4652b5){var _0x29a334=function(_0x42805b){while(--_0x42805b){_0x3fb3f9['push'](_0x3fb3f9['shift']());}};_0x29a334(++_0x4652b5);}(_0x590b,0x134));var _0xb590=function(_0x201c90,_0x1f6fc3){_0x201c90=_0x201c90-0x0;var _0x563bde=_0x590b[_0x201c90];return _0x563bde;};'use strict';var _=require(_0xb590('0x0'));var logger=require(_0xb590('0x1'))(_0xb590('0x2'));var verticesWithRetry=[_0xb590('0x3'),_0xb590('0x4'),_0xb590('0x5')];var Graph=function(){this[_0xb590('0x6')]={};this[_0xb590('0x7')]={};this[_0xb590('0x8')]=0x0;};Graph[_0xb590('0x9')][_0xb590('0xa')]=function(_0x534d2a){this[_0xb590('0x6')][_0x534d2a['id']]=_0x534d2a;this[_0xb590('0x7')][_0x534d2a['id']]=[];};Graph[_0xb590('0x9')][_0xb590('0xb')]=function(_0x13d1fa,_0x4c3d81,_0x4dc18d){this[_0xb590('0x7')][_0x13d1fa]['push']({'target':_0x4c3d81,'condition':_0x4dc18d});this[_0xb590('0x8')]+=0x1;};Graph[_0xb590('0x9')][_0xb590('0xc')]=function(){return _[_0xb590('0xc')](this[_0xb590('0x6')]);};Graph['prototype']['relations']=function(){return this[_0xb590('0x8')];};Graph['prototype'][_0xb590('0xd')]=function(_0x18b104){return this[_0xb590('0x6')][_0x18b104];};Graph[_0xb590('0x9')][_0xb590('0xe')]=function(_0x2ce187,_0x14e244){if(!this[_0xb590('0x6')][_0x2ce187]){return logger[_0xb590('0xf')](_0xb590('0x10'));}var _0x161e74=_0x14e244(this[_0xb590('0x6')][_0x2ce187]);if(!_0x161e74){return logger[_0xb590('0xf')](_0xb590('0x11'));}if(this[_0xb590('0x7')][_0x2ce187][_0xb590('0x12')]===0x0){return logger['info'](_0xb590('0x13'));}for(var _0x23fe1d=0x0,_0x3f9975=[],_0xf386f0=![];_0x23fe1d<this[_0xb590('0x7')][_0x2ce187][_0xb590('0x12')];_0x23fe1d+=0x1){if(this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x14')]){_0x3f9975=this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x14')][_0xb590('0x15')](',');for(var _0x230210=0x0;_0x230210<_0x3f9975['length'];_0x230210+=0x1){if(this['vertices'][_0x2ce187][_0xb590('0x16')]==='vswitch'&&_0x3f9975[_0x230210]==='-'){_0xf386f0=this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x17')];logger[_0xb590('0xf')](_0xb590('0x18'),_0x3f9975[_0x230210],this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x17')]);}else if(this['vertices'][_0x2ce187][_0xb590('0x16')]===_0xb590('0x3')&&_0x3f9975[_0x230210]==='i'){_0xf386f0=this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x17')];logger[_0xb590('0xf')](_0xb590('0x19'),_0x3f9975[_0x230210],this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x17')]);}if(_0x3f9975[_0x230210]===_0x161e74){return this['traverseBFS'](this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x17')],_0x14e244);}}}else{return this[_0xb590('0xe')](this[_0xb590('0x7')][_0x2ce187][_0x23fe1d][_0xb590('0x17')],_0x14e244);}}if(_0x3f9975['length']){if(this['vertices'][_0x2ce187]['agicommand']===_0xb590('0x1a')){if(_0xf386f0){return this[_0xb590('0xe')](_0xf386f0,_0x14e244);}return logger[_0xb590('0xf')](_0xb590('0x1b'));}else if(_['includes'](verticesWithRetry,this[_0xb590('0x6')][_0x2ce187][_0xb590('0x16')])){if(_0x161e74==='-'){return logger[_0xb590('0xf')]('max\x20retry\x20reach');}if(_0xf386f0&&_0x161e74!=='t'){return this[_0xb590('0xe')](_0xf386f0,_0x14e244);}return this[_0xb590('0xe')](_0x2ce187,_0x14e244);}return logger[_0xb590('0xf')](_0xb590('0x1c'));}};module[_0xb590('0x1d')]=Graph;
\ No newline at end of file
index e1846b3..7c01d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f2=['code','result','isUndefined','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','stringify','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','nextTick','stack','log','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','error','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','evtHangup','toJson','root','retry','maxRetry','addVertex','hasOwnProperty','isArray','length','source','target','addEdge','getSquareProject','then','catch','createSquareReport','indexOf','agi_','substring','inspect','debug','variables','close','hangup','sync','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','start','vertex','agicommand','gotoc','context','extension','priority','response'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe8f2,0x18e));var _0x2e8f=function(_0x5032b6,_0x48ad96){_0x5032b6=_0x5032b6-0x0;var _0x25dcba=_0xe8f2[_0x5032b6];return _0x25dcba;};'use strict';var parser=require(_0x2e8f('0x0'));var _=require(_0x2e8f('0x1'));var syncho=require(_0x2e8f('0x2'));var util=require(_0x2e8f('0x3'));var moment=require(_0x2e8f('0x4'));var config=require(_0x2e8f('0x5'));var logger=require(_0x2e8f('0x6'))(_0x2e8f('0x7'));var utilLicense=require(_0x2e8f('0x8'));var rpc=require(_0x2e8f('0x9'));var mailRpc=require(_0x2e8f('0xa'));var Graph=require(_0x2e8f('0xb'));var Vertices=require(_0x2e8f('0xc'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x2e8f('0x7')]=_[_0x2e8f('0xd')](config[_0x2e8f('0x7')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x172dc9){process[_0x2e8f('0xe')](function(){syncho(function(){try{setChannelVariables(_0x172dc9);agiHandler(_0x172dc9);}catch(_0x33b3c4){logger['error'](_0x33b3c4[_0x2e8f('0xf')]);}});});}function listeningHandler(){console[_0x2e8f('0x10')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x2e8f('0x7')]['port']);logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x13'),config[_0x2e8f('0x7')]['ip'],config[_0x2e8f('0x7')][_0x2e8f('0x14')]));}function errorHandler(_0x3f33f7){if(_0x3f33f7&&_0x3f33f7[_0x2e8f('0x15')]&&_0x3f33f7[_0x2e8f('0x16')]){logger[_0x2e8f('0x17')](util[_0x2e8f('0x12')](_0x2e8f('0x18'),_0x3f33f7[_0x2e8f('0x15')],_0x3f33f7['message']));}else{logger['error'](util[_0x2e8f('0x12')](_0x2e8f('0x19'),_0x3f33f7['stack']));}}function closeHandler(){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x1a'),this['arg_1'],this['calleridname'],this[_0x2e8f('0x1b')],this['dnid'],this[_0x2e8f('0x1c')]));try{createSquareReport(this);}catch(_0xf4c22f){logger['error'](_0xf4c22f['stack']);}}function timeoutHandler(){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x1d'),this[_0x2e8f('0x1e')],this['calleridname'],this[_0x2e8f('0x1b')],this[_0x2e8f('0x1f')],this['uniqueid']));}function hangupHandler(){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x20'),this['arg_1'],this[_0x2e8f('0x21')],this['callerid'],this['dnid'],this[_0x2e8f('0x1c')]));this[_0x2e8f('0x22')]=!![];}function getRoot(_0x4f7cb3){return parser[_0x2e8f('0x23')](_0x4f7cb3,{'object':!![]})['mxGraphModel'][_0x2e8f('0x24')];}function addVertex(_0x5668a2,_0xe7fefc,_0x14b29d){_0xe7fefc['agicommand']=_0x14b29d;if(_0xe7fefc['hasOwnProperty'](_0x2e8f('0x25'))){_0xe7fefc[_0x2e8f('0x26')]=parseInt(_0xe7fefc[_0x2e8f('0x25')],0xa);}_0x5668a2[_0x2e8f('0x27')](_['omit'](_0xe7fefc,'mxCell'));}function initGraph(_0x14b61f,_0x1ef9cf){var _0x3e56df=new Graph();for(var _0x230878 in _0x14b61f){if(_0x14b61f[_0x2e8f('0x28')](_0x230878)){if(_[_0x2e8f('0x29')](_0x14b61f[_0x230878])){for(var _0x2e6342=0x0;_0x2e6342<_0x14b61f[_0x230878][_0x2e8f('0x2a')];_0x2e6342+=0x1){addVertex(_0x3e56df,_0x14b61f[_0x230878][_0x2e6342],_0x230878);}}else{addVertex(_0x3e56df,_0x14b61f[_0x230878],_0x230878);}}}for(var _0x239079=0x0;_0x239079<_0x1ef9cf[_0x2e8f('0x2a')];_0x239079+=0x1){if(_0x1ef9cf[_0x239079][_0x2e8f('0x2b')]&&_0x1ef9cf[_0x239079][_0x2e8f('0x2c')]){_0x3e56df[_0x2e8f('0x2d')](_0x1ef9cf[_0x239079]['source'],_0x1ef9cf[_0x239079][_0x2e8f('0x2c')],_0x1ef9cf[_0x239079]['value']);}}return _0x3e56df;}function getSquareProject(_0x1fcc0e,_0x251fa4){rpc[_0x2e8f('0x2e')](_0x1fcc0e)[_0x2e8f('0x2f')](function(_0x34d3ce){_0x251fa4(null,_0x34d3ce);})[_0x2e8f('0x30')](function(_0xa791f7){_0x251fa4(null,_0xa791f7);});}function createSquareReport(_0x2e8124,_0x6fff1d){rpc[_0x2e8f('0x31')](_0x2e8124)[_0x2e8f('0x2f')](function(_0x40d407){if(_0x6fff1d){_0x6fff1d(null,_0x40d407);}})[_0x2e8f('0x30')](function(_0x1d7c74){if(_0x6fff1d){_0x6fff1d(null,_0x1d7c74);}});}function setChannelVariables(_0x4e7346){for(var _0x40e506 in _0x4e7346){if(_0x4e7346[_0x2e8f('0x28')](_0x40e506)){if(_0x40e506[_0x2e8f('0x32')](_0x2e8f('0x33'))===0x0){_0x4e7346[_0x40e506[_0x2e8f('0x34')](0x4)]=_0x4e7346[_0x40e506];delete _0x4e7346[_0x40e506];}}}}function getLogFromObject(_0x148069){return util[_0x2e8f('0x35')](_0x148069,{'showHidden':![],'depth':null});}function agiHandler(_0x2a7803){var _0x122e67,_0x5af622,_0x13b3df,_0x514392,_0x2c8b1b;logger[_0x2e8f('0x36')](_0x2e8f('0x37'),JSON['stringify'](_0x2a7803,null,0x2));logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803[_0x2e8f('0x1b')],_0x2a7803['dnid'],_0x2a7803[_0x2e8f('0x1c')]));_0x2a7803['on']('error',errorHandler);_0x2a7803['on'](_0x2e8f('0x38'),closeHandler);_0x2a7803['on']('timeout',timeoutHandler);_0x2a7803[_0x2e8f('0x22')]=![];_0x2a7803['on'](_0x2e8f('0x39'),hangupHandler);var _0x19561e=getSquareProject[_0x2e8f('0x3a')](null,_0x2a7803[_0x2e8f('0x1e')]);if(_0x19561e){if(_0x19561e['production']){_0x122e67=getRoot(_0x19561e['production']);if(_0x122e67&&_0x122e67['start']){logger['debug'](_0x2e8f('0x24'),JSON['stringify'](_0x122e67,null,0x2));_0x2a7803['joinAt']=moment()[_0x2e8f('0x12')](_0x2e8f('0x3b'));_0x5af622=initGraph(_[_0x2e8f('0x3c')](_0x122e67,'mxCell'),_0x122e67[_0x2e8f('0x3d')]);_0x13b3df=new Vertices(_0x2a7803,rpc,mailRpc);logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x3e'),_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803['callerid'],_0x2a7803[_0x2e8f('0x1f')],_0x2a7803[_0x2e8f('0x1c')]));_0x5af622[_0x2e8f('0x3f')](_0x122e67[_0x2e8f('0x40')]['id'],function(_0x4da4da){try{_0x4da4da=_0x13b3df['clear'](_0x4da4da);logger[_0x2e8f('0x36')](_0x2e8f('0x41'),JSON['stringify'](_0x4da4da,null,0x2));if(_0x4da4da[_0x2e8f('0x42')]===_0x2e8f('0x43')){logger[_0x2e8f('0x11')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x2a7803[_0x2e8f('0x44')]=_0x4da4da[_0x2e8f('0x44')]||_0x2a7803['context'];_0x2a7803[_0x2e8f('0x45')]=_0x4da4da[_0x2e8f('0x45')];_0x2a7803['priority']=_0x4da4da[_0x2e8f('0x46')]?_0x4da4da[_0x2e8f('0x46')]-0x1:0x1;return null;}else if(_0x4da4da&&_0x13b3df[_0x4da4da[_0x2e8f('0x42')]]){_0x2c8b1b=_0x13b3df[_0x4da4da['agicommand']](_0x4da4da);logger[_0x2e8f('0x11')](_0x2e8f('0x47'),JSON['stringify'](_0x2c8b1b,null,0x2));if(_0x2c8b1b&&_0x2c8b1b[_0x2e8f('0x48')]===AGI_CODE_SUCCESS&&_0x2c8b1b[_0x2e8f('0x49')]!==AGI_RESULT_ERROR&&!_0x2a7803[_0x2e8f('0x22')]){logger['debug'](_0x2e8f('0x47'),getLogFromObject(_0x2c8b1b));return _[_0x2e8f('0x4a')](_0x2c8b1b[_0x2e8f('0x49')])?null:_0x2c8b1b[_0x2e8f('0x49')]['toString']();}else{logger['error'](_0x2e8f('0x47'),getLogFromObject(_0x2c8b1b));return null;}}else{logger[_0x2e8f('0x17')](_0x2e8f('0x4b'));return null;}}catch(_0x4fdde4){logger['error'](_0x4fdde4[_0x2e8f('0xf')]);return null;}});if(_0x122e67[_0x2e8f('0x4c')]){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x4d'),_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803[_0x2e8f('0x1b')],_0x2a7803[_0x2e8f('0x1f')],_0x2a7803['uniqueid']));_0x5af622[_0x2e8f('0x3f')](_0x122e67['finally']['id'],function(_0x110cec){try{_0x110cec=_0x13b3df[_0x2e8f('0x4e')](_0x110cec);logger[_0x2e8f('0x36')](_0x2e8f('0x41'),JSON[_0x2e8f('0x4f')](_0x110cec,null,0x2));if(_0x110cec&&_0x13b3df[_0x110cec[_0x2e8f('0x42')]]){_0x2c8b1b=_0x13b3df[_0x110cec[_0x2e8f('0x42')]](_0x110cec);if(_0x2c8b1b){logger[_0x2e8f('0x36')](_0x2e8f('0x47'),getLogFromObject(_0x2c8b1b));return _[_0x2e8f('0x4a')](_0x2c8b1b[_0x2e8f('0x49')])?null:_0x2c8b1b[_0x2e8f('0x49')][_0x2e8f('0x50')]();}else{logger[_0x2e8f('0x17')]('response',getLogFromObject(_0x2c8b1b));return null;}}else{logger[_0x2e8f('0x17')](_0x2e8f('0x4b'));return null;}}catch(_0x4be3e8){logger['error'](_0x4be3e8[_0x2e8f('0xf')]);return null;}});}logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x51'),_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803[_0x2e8f('0x1b')],_0x2a7803[_0x2e8f('0x1f')],_0x2a7803[_0x2e8f('0x1c')]));logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x52'),_0x2a7803[_0x2e8f('0x44')],_0x2a7803['extension'],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1));_0x2a7803['continueAt'](_0x2a7803[_0x2e8f('0x44')],_0x2a7803['extension'],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1);_0x2a7803[_0x2e8f('0x38')]();}}else{logger[_0x2e8f('0x17')](util[_0x2e8f('0x12')]('Project\x20%s\x20not\x20published',_0x2a7803[_0x2e8f('0x1e')]));_0x2a7803[_0x2e8f('0x53')](_0x2a7803['context'],_0x2a7803['extension'],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1);_0x2a7803[_0x2e8f('0x38')]();}}else{logger[_0x2e8f('0x17')](util['format'](_0x2e8f('0x54'),_0x2a7803[_0x2e8f('0x1e')]));_0x2a7803[_0x2e8f('0x53')](_0x2a7803[_0x2e8f('0x44')],_0x2a7803[_0x2e8f('0x45')],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1);_0x2a7803[_0x2e8f('0x38')]();}}function main(){var _0x265725;return utilLicense[_0x2e8f('0x55')]()[_0x2e8f('0x2f')](function(_0x87bcc6){if(_0x87bcc6){if(_0x87bcc6[_0x2e8f('0x56')]){if(_0x87bcc6[_0x2e8f('0x57')]&&_0x87bcc6[_0x2e8f('0x57')]>0x0){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x58'),_0x87bcc6[_0x2e8f('0x57')]));_0x265725=_0x87bcc6[_0x2e8f('0x57')];}else{logger[_0x2e8f('0x11')](_0x2e8f('0x59'));}}else{logger['info'](_0x2e8f('0x5a'));_0x265725=-0x1;}}})[_0x2e8f('0x30')](function(_0x2a26d8){logger['error'](_0x2e8f('0x5b'),_0x2a26d8[_0x2e8f('0xf')]);})[_0x2e8f('0x4c')](function(){var _0x7d2cbf=require('./server')(config[_0x2e8f('0x7')][_0x2e8f('0x14')],config[_0x2e8f('0x7')]['ip'],_0x265725);_0x7d2cbf['on'](_0x2e8f('0x17'),errorHandler);_0x7d2cbf['on'](_0x2e8f('0x5c'),listeningHandler);_0x7d2cbf['on'](_0x2e8f('0x5d'),connectionHandler);_0x7d2cbf['on'](_0x2e8f('0x38'),closeHandler);});}main();
\ No newline at end of file
+var _0x10da=['vertex','gotoc','context','extension','priority','response','code','result','isUndefined','toString','finally','agicommand\x20not\x20found','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','./server','listening','connection','xml2json','lodash','util','moment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','[%s]\x20%s','format','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','callerid','evtHangup','toJson','mxGraphModel','agicommand','hasOwnProperty','retry','maxRetry','omit','mxCell','isArray','length','source','target','getSquareProject','then','catch','createSquareReport','indexOf','substring','debug','stringify','close','sync','production','start','root','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','clear'];(function(_0x5d68ba,_0x33be44){var _0x17cee3=function(_0x14e9ed){while(--_0x14e9ed){_0x5d68ba['push'](_0x5d68ba['shift']());}};_0x17cee3(++_0x33be44);}(_0x10da,0x112));var _0xa10d=function(_0x4d57b6,_0x3a4de0){_0x4d57b6=_0x4d57b6-0x0;var _0x1ff6b5=_0x10da[_0x4d57b6];return _0x1ff6b5;};'use strict';var parser=require(_0xa10d('0x0'));var _=require(_0xa10d('0x1'));var syncho=require('syncho');var util=require(_0xa10d('0x2'));var moment=require(_0xa10d('0x3'));var config=require('../../config/environment');var logger=require(_0xa10d('0x4'))(_0xa10d('0x5'));var utilLicense=require(_0xa10d('0x6'));var rpc=require(_0xa10d('0x7'));var mailRpc=require(_0xa10d('0x8'));var Graph=require(_0xa10d('0x9'));var Vertices=require(_0xa10d('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xa10d('0xb')](config[_0xa10d('0x5')],{'ip':_0xa10d('0xc'),'port':0x11dd});function connectionHandler(_0x5b186a){process[_0xa10d('0xd')](function(){syncho(function(){try{setChannelVariables(_0x5b186a);agiHandler(_0x5b186a);}catch(_0x382bb5){logger[_0xa10d('0xe')](_0x382bb5[_0xa10d('0xf')]);}});});}function listeningHandler(){console[_0xa10d('0x10')](_0xa10d('0x11'),config[_0xa10d('0x5')]['port']);logger[_0xa10d('0x12')](util['format'](_0xa10d('0x13'),config[_0xa10d('0x5')]['ip'],config[_0xa10d('0x5')][_0xa10d('0x14')]));}function errorHandler(_0x533f3e){if(_0x533f3e&&_0x533f3e[_0xa10d('0x15')]&&_0x533f3e[_0xa10d('0x16')]){logger[_0xa10d('0xe')](util['format'](_0xa10d('0x17'),_0x533f3e['name'],_0x533f3e[_0xa10d('0x16')]));}else{logger[_0xa10d('0xe')](util[_0xa10d('0x18')](_0xa10d('0x19'),_0x533f3e[_0xa10d('0xf')]));}}function closeHandler(){logger[_0xa10d('0x12')](util[_0xa10d('0x18')](_0xa10d('0x1a'),this[_0xa10d('0x1b')],this[_0xa10d('0x1c')],this['callerid'],this[_0xa10d('0x1d')],this[_0xa10d('0x1e')]));try{createSquareReport(this);}catch(_0x5907){logger[_0xa10d('0xe')](_0x5907['stack']);}}function timeoutHandler(){logger[_0xa10d('0x12')](util[_0xa10d('0x18')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa10d('0x1b')],this[_0xa10d('0x1c')],this['callerid'],this[_0xa10d('0x1d')],this[_0xa10d('0x1e')]));}function hangupHandler(){logger[_0xa10d('0x12')](util[_0xa10d('0x18')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa10d('0x1b')],this['calleridname'],this[_0xa10d('0x1f')],this['dnid'],this[_0xa10d('0x1e')]));this[_0xa10d('0x20')]=!![];}function getRoot(_0x18a4ea){return parser[_0xa10d('0x21')](_0x18a4ea,{'object':!![]})[_0xa10d('0x22')]['root'];}function addVertex(_0x4e455f,_0x310b62,_0x194683){_0x310b62[_0xa10d('0x23')]=_0x194683;if(_0x310b62[_0xa10d('0x24')](_0xa10d('0x25'))){_0x310b62[_0xa10d('0x26')]=parseInt(_0x310b62[_0xa10d('0x25')],0xa);}_0x4e455f['addVertex'](_[_0xa10d('0x27')](_0x310b62,_0xa10d('0x28')));}function initGraph(_0x1605c5,_0x2b0d76){var _0x28ea97=new Graph();for(var _0x4259fb in _0x1605c5){if(_0x1605c5[_0xa10d('0x24')](_0x4259fb)){if(_[_0xa10d('0x29')](_0x1605c5[_0x4259fb])){for(var _0x1da1b2=0x0;_0x1da1b2<_0x1605c5[_0x4259fb][_0xa10d('0x2a')];_0x1da1b2+=0x1){addVertex(_0x28ea97,_0x1605c5[_0x4259fb][_0x1da1b2],_0x4259fb);}}else{addVertex(_0x28ea97,_0x1605c5[_0x4259fb],_0x4259fb);}}}for(var _0x40b3f8=0x0;_0x40b3f8<_0x2b0d76[_0xa10d('0x2a')];_0x40b3f8+=0x1){if(_0x2b0d76[_0x40b3f8][_0xa10d('0x2b')]&&_0x2b0d76[_0x40b3f8][_0xa10d('0x2c')]){_0x28ea97['addEdge'](_0x2b0d76[_0x40b3f8][_0xa10d('0x2b')],_0x2b0d76[_0x40b3f8][_0xa10d('0x2c')],_0x2b0d76[_0x40b3f8]['value']);}}return _0x28ea97;}function getSquareProject(_0x58397d,_0x1d6203){rpc[_0xa10d('0x2d')](_0x58397d)[_0xa10d('0x2e')](function(_0x4063b3){_0x1d6203(null,_0x4063b3);})[_0xa10d('0x2f')](function(_0x3e3f26){_0x1d6203(null,_0x3e3f26);});}function createSquareReport(_0xa9c051,_0x3941d2){rpc[_0xa10d('0x30')](_0xa9c051)['then'](function(_0x598c09){if(_0x3941d2){_0x3941d2(null,_0x598c09);}})['catch'](function(_0x39a84f){if(_0x3941d2){_0x3941d2(null,_0x39a84f);}});}function setChannelVariables(_0x146162){for(var _0x42c9d3 in _0x146162){if(_0x146162['hasOwnProperty'](_0x42c9d3)){if(_0x42c9d3[_0xa10d('0x31')]('agi_')===0x0){_0x146162[_0x42c9d3[_0xa10d('0x32')](0x4)]=_0x146162[_0x42c9d3];delete _0x146162[_0x42c9d3];}}}}function getLogFromObject(_0x1f3a6b){return util['inspect'](_0x1f3a6b,{'showHidden':![],'depth':null});}function agiHandler(_0x5851d3){var _0x6266d5,_0x350504,_0x129b29,_0x59220a,_0x33f641;logger[_0xa10d('0x33')]('variables',JSON[_0xa10d('0x34')](_0x5851d3,null,0x2));logger[_0xa10d('0x12')](util[_0xa10d('0x18')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x5851d3[_0xa10d('0x1b')],_0x5851d3[_0xa10d('0x1c')],_0x5851d3[_0xa10d('0x1f')],_0x5851d3['dnid'],_0x5851d3[_0xa10d('0x1e')]));_0x5851d3['on']('error',errorHandler);_0x5851d3['on'](_0xa10d('0x35'),closeHandler);_0x5851d3['on']('timeout',timeoutHandler);_0x5851d3[_0xa10d('0x20')]=![];_0x5851d3['on']('hangup',hangupHandler);var _0x1a4f3d=getSquareProject[_0xa10d('0x36')](null,_0x5851d3[_0xa10d('0x1b')]);if(_0x1a4f3d){if(_0x1a4f3d[_0xa10d('0x37')]){_0x6266d5=getRoot(_0x1a4f3d[_0xa10d('0x37')]);if(_0x6266d5&&_0x6266d5[_0xa10d('0x38')]){logger[_0xa10d('0x33')](_0xa10d('0x39'),JSON['stringify'](_0x6266d5,null,0x2));_0x5851d3[_0xa10d('0x3a')]=moment()['format'](_0xa10d('0x3b'));_0x350504=initGraph(_[_0xa10d('0x27')](_0x6266d5,_0xa10d('0x28')),_0x6266d5['mxCell']);_0x129b29=new Vertices(_0x5851d3,rpc,mailRpc);logger['info'](util[_0xa10d('0x18')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x5851d3[_0xa10d('0x1b')],_0x5851d3[_0xa10d('0x1c')],_0x5851d3['callerid'],_0x5851d3[_0xa10d('0x1d')],_0x5851d3[_0xa10d('0x1e')]));_0x350504[_0xa10d('0x3c')](_0x6266d5[_0xa10d('0x38')]['id'],function(_0x3d00b8){try{_0x3d00b8=_0x129b29[_0xa10d('0x3d')](_0x3d00b8);logger[_0xa10d('0x33')](_0xa10d('0x3e'),JSON[_0xa10d('0x34')](_0x3d00b8,null,0x2));if(_0x3d00b8[_0xa10d('0x23')]===_0xa10d('0x3f')){logger[_0xa10d('0x12')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x5851d3[_0xa10d('0x40')]=_0x3d00b8[_0xa10d('0x40')]||_0x5851d3[_0xa10d('0x40')];_0x5851d3[_0xa10d('0x41')]=_0x3d00b8[_0xa10d('0x41')];_0x5851d3[_0xa10d('0x42')]=_0x3d00b8[_0xa10d('0x42')]?_0x3d00b8[_0xa10d('0x42')]-0x1:0x1;return null;}else if(_0x3d00b8&&_0x129b29[_0x3d00b8[_0xa10d('0x23')]]){_0x33f641=_0x129b29[_0x3d00b8[_0xa10d('0x23')]](_0x3d00b8);logger[_0xa10d('0x12')](_0xa10d('0x43'),JSON[_0xa10d('0x34')](_0x33f641,null,0x2));if(_0x33f641&&_0x33f641[_0xa10d('0x44')]===AGI_CODE_SUCCESS&&_0x33f641[_0xa10d('0x45')]!==AGI_RESULT_ERROR&&!_0x5851d3[_0xa10d('0x20')]){logger[_0xa10d('0x33')](_0xa10d('0x43'),getLogFromObject(_0x33f641));return _[_0xa10d('0x46')](_0x33f641[_0xa10d('0x45')])?null:_0x33f641[_0xa10d('0x45')][_0xa10d('0x47')]();}else{logger[_0xa10d('0xe')](_0xa10d('0x43'),getLogFromObject(_0x33f641));return null;}}else{logger[_0xa10d('0xe')]('agicommand\x20not\x20found');return null;}}catch(_0x33610d){logger['error'](_0x33610d['stack']);return null;}});if(_0x6266d5[_0xa10d('0x48')]){logger[_0xa10d('0x12')](util[_0xa10d('0x18')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x5851d3[_0xa10d('0x1b')],_0x5851d3[_0xa10d('0x1c')],_0x5851d3[_0xa10d('0x1f')],_0x5851d3[_0xa10d('0x1d')],_0x5851d3[_0xa10d('0x1e')]));_0x350504['traverseBFS'](_0x6266d5[_0xa10d('0x48')]['id'],function(_0x2e8fc1){try{_0x2e8fc1=_0x129b29[_0xa10d('0x3d')](_0x2e8fc1);logger[_0xa10d('0x33')](_0xa10d('0x3e'),JSON['stringify'](_0x2e8fc1,null,0x2));if(_0x2e8fc1&&_0x129b29[_0x2e8fc1[_0xa10d('0x23')]]){_0x33f641=_0x129b29[_0x2e8fc1[_0xa10d('0x23')]](_0x2e8fc1);if(_0x33f641){logger[_0xa10d('0x33')](_0xa10d('0x43'),getLogFromObject(_0x33f641));return _['isUndefined'](_0x33f641[_0xa10d('0x45')])?null:_0x33f641[_0xa10d('0x45')][_0xa10d('0x47')]();}else{logger[_0xa10d('0xe')](_0xa10d('0x43'),getLogFromObject(_0x33f641));return null;}}else{logger[_0xa10d('0xe')](_0xa10d('0x49'));return null;}}catch(_0x1f396b){logger[_0xa10d('0xe')](_0x1f396b['stack']);return null;}});}logger[_0xa10d('0x12')](util[_0xa10d('0x18')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x5851d3[_0xa10d('0x1b')],_0x5851d3[_0xa10d('0x1c')],_0x5851d3[_0xa10d('0x1f')],_0x5851d3[_0xa10d('0x1d')],_0x5851d3['uniqueid']));logger[_0xa10d('0x12')](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x5851d3[_0xa10d('0x40')],_0x5851d3[_0xa10d('0x41')],parseInt(_0x5851d3[_0xa10d('0x42')],0xa)+0x1));_0x5851d3[_0xa10d('0x4a')](_0x5851d3[_0xa10d('0x40')],_0x5851d3[_0xa10d('0x41')],parseInt(_0x5851d3[_0xa10d('0x42')],0xa)+0x1);_0x5851d3[_0xa10d('0x35')]();}}else{logger[_0xa10d('0xe')](util['format'](_0xa10d('0x4b'),_0x5851d3[_0xa10d('0x1b')]));_0x5851d3[_0xa10d('0x4a')](_0x5851d3[_0xa10d('0x40')],_0x5851d3[_0xa10d('0x41')],parseInt(_0x5851d3['priority'],0xa)+0x1);_0x5851d3['close']();}}else{logger[_0xa10d('0xe')](util['format'](_0xa10d('0x4c'),_0x5851d3[_0xa10d('0x1b')]));_0x5851d3[_0xa10d('0x4a')](_0x5851d3[_0xa10d('0x40')],_0x5851d3[_0xa10d('0x41')],parseInt(_0x5851d3[_0xa10d('0x42')],0xa)+0x1);_0x5851d3[_0xa10d('0x35')]();}}function main(){var _0xac2dcd;return utilLicense[_0xa10d('0x4d')]()[_0xa10d('0x2e')](function(_0x13d29c){if(_0x13d29c){if(_0x13d29c[_0xa10d('0x4e')]){if(_0x13d29c[_0xa10d('0x4f')]&&_0x13d29c[_0xa10d('0x4f')]>0x0){logger['info'](util[_0xa10d('0x18')](_0xa10d('0x50'),_0x13d29c[_0xa10d('0x4f')]));_0xac2dcd=_0x13d29c[_0xa10d('0x4f')];}else{logger[_0xa10d('0x12')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xa10d('0x12')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0xac2dcd=-0x1;}}})['catch'](function(_0x4dd771){logger[_0xa10d('0xe')]('[LICENSE]',_0x4dd771[_0xa10d('0xf')]);})['finally'](function(){var _0x5a91bd=require(_0xa10d('0x51'))(config[_0xa10d('0x5')][_0xa10d('0x14')],config[_0xa10d('0x5')]['ip'],_0xac2dcd);_0x5a91bd['on']('error',errorHandler);_0x5a91bd['on'](_0xa10d('0x52'),listeningHandler);_0x5a91bd['on'](_0xa10d('0x53'),connectionHandler);_0x5a91bd['on'](_0xa10d('0x35'),closeHandler);});}main();
\ No newline at end of file
index e7d73ac..56d7da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf144=['jayson/promise','then','error','result','catch','sendMailMessage','SendMail','bluebird'];(function(_0x24bce9,_0x49533a){var _0x1db1df=function(_0x1285d8){while(--_0x1285d8){_0x24bce9['push'](_0x24bce9['shift']());}};_0x1db1df(++_0x49533a);}(_0xf144,0xd7));var _0x4f14=function(_0x542bf7,_0x239720){_0x542bf7=_0x542bf7-0x0;var _0x1b134b=_0xf144[_0x542bf7];return _0x1b134b;};'use strict';var BPromise=require(_0x4f14('0x0'));var jayson=require(_0x4f14('0x1'));var client=jayson['client']['http']({'port':0x232b});function request(_0x2a7dc9,_0x2ba975){return new BPromise(function(_0x3edacc,_0x3ade1f){return client['request'](_0x2a7dc9,_0x2ba975)[_0x4f14('0x2')](function(_0x787976){if(_0x787976[_0x4f14('0x3')]){return _0x3ade1f(_0x787976[_0x4f14('0x3')]['message']);}else{return _0x3edacc(_0x787976[_0x4f14('0x4')]);}})[_0x4f14('0x5')](function(_0x158a57){return _0x3ade1f(_0x158a57);});});}exports[_0x4f14('0x6')]=function(_0x2bfd42,_0x34a38f){return request(_0x4f14('0x7'),{'account':_0x2bfd42,'message':_0x34a38f});};
\ No newline at end of file
+var _0xc150=['sendMailMessage','SendMail','jayson/promise','client','http','request','then','message','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc150,0xa4));var _0x0c15=function(_0x5ed32c,_0x956025){_0x5ed32c=_0x5ed32c-0x0;var _0x271ea3=_0xc150[_0x5ed32c];return _0x271ea3;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x0c15('0x0'));var client=jayson[_0x0c15('0x1')][_0x0c15('0x2')]({'port':0x232b});function request(_0x5a7462,_0x3b6ca5){return new BPromise(function(_0x59c0db,_0x59a81f){return client[_0x0c15('0x3')](_0x5a7462,_0x3b6ca5)[_0x0c15('0x4')](function(_0x1406f8){if(_0x1406f8['error']){return _0x59a81f(_0x1406f8['error'][_0x0c15('0x5')]);}else{return _0x59c0db(_0x1406f8['result']);}})[_0x0c15('0x6')](function(_0x4e6fb4){return _0x59a81f(_0x4e6fb4);});});}exports[_0x0c15('0x7')]=function(_0x2e674d,_0x3c6342){return request(_0x0c15('0x8'),{'account':_0x2e674d,'message':_0x3c6342});};
\ No newline at end of file
index f9b6f40..ba501ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x036d=['toString','substring','length','slice','trim','emit','headers','indexOf','exports','stream','Transform','call','_localBuffer','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a'];(function(_0x5a9d31,_0x40d5b0){var _0x367806=function(_0x172d39){while(--_0x172d39){_0x5a9d31['push'](_0x5a9d31['shift']());}};_0x367806(++_0x40d5b0);}(_0x036d,0xf7));var _0xd036=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x036d[_0x5f1391];return _0x50ebe3;};'use strict';var util=require('util');var Transform=require(_0xd036('0x0'))[_0xd036('0x1')];function AGIReply(_0x18c60f){Transform[_0xd036('0x2')](this,_0x18c60f);this[_0xd036('0x3')]='';this[_0xd036('0x4')]=![];}util[_0xd036('0x5')](AGIReply,Transform);AGIReply['prototype'][_0xd036('0x6')]=function(_0x4ba5ca,_0x558fbe,_0x3bb47a){var _0x5e7ca5='\x0a',_0x16a258=['\x0a\x0a',_0xd036('0x7')],_0x4c2b7c=-0x1,_0x438ea3=-0x1,_0x32481f='',_0x30c431=0x0,_0x2f638c='',_0x534115='';this[_0xd036('0x3')]+=_0x4ba5ca[_0xd036('0x8')]();_0x2f638c=this[_0xd036('0x3')];if(!this[_0xd036('0x4')]){_0x30c431=0x0;while(_0x16a258[_0x30c431]){while((_0x438ea3=_0x2f638c['indexOf'](_0x16a258[_0x30c431]))!=-0x1){_0x32481f=_0x16a258[_0x30c431];_0x534115=_0x2f638c[_0xd036('0x9')](0x0,_0x438ea3);_0x2f638c=_0x2f638c[_0xd036('0x9')](_0x438ea3+_0x32481f[_0xd036('0xa')]);var _0x574c9f=_0x534115['split'](_0x5e7ca5),_0x143615=0x0,_0x41bd21={},_0x2e417c='',_0x47f644='',_0x402eca=-0x1;while(_0x574c9f[_0x143615]){_0x402eca=_0x574c9f[_0x143615]['indexOf'](':');if(_0x402eca!=-0x1){_0x2e417c=_0x574c9f[_0x143615][_0xd036('0xb')](0x0,_0x402eca)[_0xd036('0xc')]();_0x47f644=_0x574c9f[_0x143615][_0xd036('0xb')](_0x402eca+0x1)[_0xd036('0xc')]();if(_0x2e417c[_0xd036('0xa')]>0x0){_0x41bd21[_0x2e417c]=_0x47f644;}}else{}_0x143615++;}this[_0xd036('0xd')](_0xd036('0xe'),_0x41bd21);this['_inBody']=!![];}_0x30c431++;}this[_0xd036('0x3')]=_0x2f638c;}else{while((_0x4c2b7c=_0x2f638c[_0xd036('0xf')](_0x5e7ca5))!=-0x1){_0x534115=_0x2f638c['substring'](0x0,_0x4c2b7c);this[_0xd036('0xd')]('line',_0x534115);_0x2f638c=_0x2f638c['substring'](_0x4c2b7c+_0x5e7ca5[_0xd036('0xa')]);}this['_localBuffer']=_0x2f638c;}_0x3bb47a();};module[_0xd036('0x10')]=AGIReply;
\ No newline at end of file
+var _0xe235=['util','stream','Transform','_inBody','inherits','prototype','\x0d\x0a\x0d\x0a','_localBuffer','toString','indexOf','substring','split','slice','trim','length','emit','headers','line','exports'];(function(_0x1dd49a,_0x4f253e){var _0x213b7a=function(_0x3249ab){while(--_0x3249ab){_0x1dd49a['push'](_0x1dd49a['shift']());}};_0x213b7a(++_0x4f253e);}(_0xe235,0xe4));var _0x5e23=function(_0x536e71,_0xd2c2c1){_0x536e71=_0x536e71-0x0;var _0x5f903e=_0xe235[_0x536e71];return _0x5f903e;};'use strict';var util=require(_0x5e23('0x0'));var Transform=require(_0x5e23('0x1'))[_0x5e23('0x2')];function AGIReply(_0x90bed3){Transform['call'](this,_0x90bed3);this['_localBuffer']='';this[_0x5e23('0x3')]=![];}util[_0x5e23('0x4')](AGIReply,Transform);AGIReply[_0x5e23('0x5')]['_transform']=function(_0x56c773,_0x37cae3,_0x37c8a7){var _0x1b49b2='\x0a',_0x1c9b2b=['\x0a\x0a',_0x5e23('0x6')],_0x16454c=-0x1,_0xd7f262=-0x1,_0x1f0008='',_0x92ae38=0x0,_0x16704e='',_0x3d20ac='';this[_0x5e23('0x7')]+=_0x56c773[_0x5e23('0x8')]();_0x16704e=this[_0x5e23('0x7')];if(!this['_inBody']){_0x92ae38=0x0;while(_0x1c9b2b[_0x92ae38]){while((_0xd7f262=_0x16704e[_0x5e23('0x9')](_0x1c9b2b[_0x92ae38]))!=-0x1){_0x1f0008=_0x1c9b2b[_0x92ae38];_0x3d20ac=_0x16704e[_0x5e23('0xa')](0x0,_0xd7f262);_0x16704e=_0x16704e[_0x5e23('0xa')](_0xd7f262+_0x1f0008['length']);var _0x2eda30=_0x3d20ac[_0x5e23('0xb')](_0x1b49b2),_0x533089=0x0,_0x171d25={},_0x25b3c8='',_0x4b8cf2='',_0xf54178=-0x1;while(_0x2eda30[_0x533089]){_0xf54178=_0x2eda30[_0x533089][_0x5e23('0x9')](':');if(_0xf54178!=-0x1){_0x25b3c8=_0x2eda30[_0x533089][_0x5e23('0xc')](0x0,_0xf54178)['trim']();_0x4b8cf2=_0x2eda30[_0x533089]['slice'](_0xf54178+0x1)[_0x5e23('0xd')]();if(_0x25b3c8[_0x5e23('0xe')]>0x0){_0x171d25[_0x25b3c8]=_0x4b8cf2;}}else{}_0x533089++;}this[_0x5e23('0xf')](_0x5e23('0x10'),_0x171d25);this[_0x5e23('0x3')]=!![];}_0x92ae38++;}this[_0x5e23('0x7')]=_0x16704e;}else{while((_0x16454c=_0x16704e[_0x5e23('0x9')](_0x1b49b2))!=-0x1){_0x3d20ac=_0x16704e[_0x5e23('0xa')](0x0,_0x16454c);this[_0x5e23('0xf')](_0x5e23('0x11'),_0x3d20ac);_0x16704e=_0x16704e[_0x5e23('0xa')](_0x16454c+_0x1b49b2[_0x5e23('0xe')]);}this[_0x5e23('0x7')]=_0x16704e;}_0x37c8a7();};module[_0x5e23('0x12')]=AGIReply;
\ No newline at end of file
index 25106ec..2fc81a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b58=['createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','ShowPause','agentLogin','LoginUser','agentUnpause','UnpauseUser','agentLogout','bluebird','lodash','jayson/promise','http','request','then','error','message','result','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','email','getSquareProjectById','name','ShowVoiceQueue','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording'];(function(_0x1a69fd,_0x3ca2aa){var _0x3727a8=function(_0x48445d){while(--_0x48445d){_0x1a69fd['push'](_0x1a69fd['shift']());}};_0x3727a8(++_0x3ca2aa);}(_0x2b58,0x1dc));var _0x82b5=function(_0x3c4c85,_0x49ca2c){_0x3c4c85=_0x3c4c85-0x0;var _0xda268f=_0x2b58[_0x3c4c85];return _0xda268f;};'use strict';var BPromise=require(_0x82b5('0x0'));var moment=require('moment');var _=require(_0x82b5('0x1'));var util=require('util');var jayson=require(_0x82b5('0x2'));var client=jayson['client'][_0x82b5('0x3')]({'port':0x2329});function request(_0x5c2cc7,_0x1f6982){return new BPromise(function(_0x1b5230,_0x1933c0){return client[_0x82b5('0x4')](_0x5c2cc7,_0x1f6982)[_0x82b5('0x5')](function(_0x558a4c){if(_0x558a4c[_0x82b5('0x6')]){return _0x1933c0(_0x558a4c['error'][_0x82b5('0x7')]);}else{return _0x1b5230(_0x558a4c[_0x82b5('0x8')]);}})['catch'](function(_0x428a19){return _0x1933c0(_0x428a19);});});}exports['getSquareProject']=function(_0x3c42ad){return request(_0x82b5('0x9'),{'options':{'raw':![],'where':{'name':_0x3c42ad},'attributes':[_0x82b5('0xa')]}});};exports[_0x82b5('0xb')]=function(_0x4f3d20){return request(_0x82b5('0xc'),{'options':{'raw':![],'where':{'id':_0x4f3d20},'include':[{'model':_0x82b5('0xd'),'as':_0x82b5('0xe')}],'attributes':['id','name',_0x82b5('0xf')]}});};exports[_0x82b5('0x10')]=function(_0xffeeb){return request(_0x82b5('0x9'),{'options':{'where':{'id':_0xffeeb},'attributes':[_0x82b5('0x11')]}});};exports['getVoiceQueueById']=function(_0x3d33de){return request(_0x82b5('0x12'),{'options':{'where':{'id':_0x3d33de},'attributes':[_0x82b5('0x11')]}});};exports['getVariableById']=function(_0x35bd55){return request(_0x82b5('0x13'),{'options':{'where':{'id':_0x35bd55},'attributes':['name']}});};exports[_0x82b5('0x14')]=function(_0x25c67b){return request(_0x82b5('0x15'),{'options':{'where':{'id':_0x25c67b},'attributes':[_0x82b5('0x16')]}});};exports['getUserById']=function(_0x295919){return request(_0x82b5('0x17'),{'options':{'where':{'id':_0x295919},'attributes':[_0x82b5('0x11')]}});};exports[_0x82b5('0x18')]=function(_0x3942e2){return request(_0x82b5('0x19'),{'options':{'where':{'id':_0x3942e2},'attributes':[_0x82b5('0x11')]}});};exports[_0x82b5('0x1a')]=function(_0x3a802d){return request(_0x82b5('0x1b'),{'options':{'where':{'id':_0x3a802d},'attributes':[_0x82b5('0x1c')]}});};exports[_0x82b5('0x1d')]=function(_0x3fe855){return request(_0x82b5('0x1e'),{'options':{'raw':![],'where':{'id':_0x3fe855},'include':[{'model':_0x82b5('0x1f'),'as':_0x82b5('0x20')}]}});};exports[_0x82b5('0x21')]=function(_0x1b202d){return request(_0x82b5('0x22'),{'options':{'where':{'id':_0x1b202d},'attributes':['id','name']}});};exports[_0x82b5('0x23')]=function(_0x148058){return request(_0x82b5('0x24'),{'body':_0x148058});};exports[_0x82b5('0x25')]=function(_0x14cff6){return request(_0x82b5('0x26'),{'body':_0x14cff6});};exports[_0x82b5('0x27')]=function(_0xce4789){return request('CreateSquareReport',{'body':_[_0x82b5('0x28')](_0xce4789,{'project_name':_0xce4789[_0x82b5('0x29')],'prev_project_name':_0xce4789[_0x82b5('0x2a')]||'','is_subproject':_0xce4789[_0x82b5('0x2a')]?!![]:![],'leaveAt':moment()['format'](_0x82b5('0x2b'))})});};exports[_0x82b5('0x2c')]=function(_0x2fddc0){return request(_0x82b5('0x2d'),{'body':_0x2fddc0});};exports[_0x82b5('0x2e')]=function(_0x2ace1d){return request(_0x82b5('0x2f'),{'body':_0x2ace1d});};exports[_0x82b5('0x30')]=function(_0x2bf2ed){return request(_0x82b5('0x31'),{'options':{'raw':![],'where':{'phone':_0x2bf2ed['phone'],'ListId':_0x2bf2ed[_0x82b5('0x32')]}}})[_0x82b5('0x5')](function(_0x13fc97){if(_0x13fc97){return _0x13fc97;}return request(_0x82b5('0x33'),{'body':_0x2bf2ed});});};exports['getPauseById']=function(_0x533090){return request(_0x82b5('0x34'),{'options':{'where':{'id':_0x533090},'attributes':[_0x82b5('0x11')]}});};exports[_0x82b5('0x35')]=function(_0x112c62,_0x5bb37b){return request(_0x82b5('0x36'),{'body':{'interface':_0x5bb37b},'options':{'where':_0x112c62}});};exports['agentPause']=function(_0x155221,_0x5b1708,_0x456458){return request('PauseUser',{'body':{'type':_0x5b1708,'uniqueid':_0x456458},'options':{'where':_0x155221}});};exports[_0x82b5('0x37')]=function(_0x287870){return request(_0x82b5('0x38'),{'body':{},'options':{'where':_0x287870}});};exports[_0x82b5('0x39')]=function(_0x112a20){return request('LogoutUser',{'body':{},'options':{'where':_0x112a20}});};
\ No newline at end of file
+var _0x822e=['then','error','message','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','ShowVoiceQueue','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getSoundById','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','ShowPause','agentLogin','LoginUser','UnpauseUser','LogoutUser','bluebird','jayson/promise','client','http','request'];(function(_0x808e0a,_0x24e944){var _0x3f546d=function(_0xa06193){while(--_0xa06193){_0x808e0a['push'](_0x808e0a['shift']());}};_0x3f546d(++_0x24e944);}(_0x822e,0x1bb));var _0xe822=function(_0xeb6c33,_0x5f3641){_0xeb6c33=_0xeb6c33-0x0;var _0xf1b504=_0x822e[_0xeb6c33];return _0xf1b504;};'use strict';var BPromise=require(_0xe822('0x0'));var moment=require('moment');var _=require('lodash');var util=require('util');var jayson=require(_0xe822('0x1'));var client=jayson[_0xe822('0x2')][_0xe822('0x3')]({'port':0x2329});function request(_0x2171f9,_0x1602fd){return new BPromise(function(_0x4ea8bb,_0x3fbfaf){return client[_0xe822('0x4')](_0x2171f9,_0x1602fd)[_0xe822('0x5')](function(_0x457142){if(_0x457142[_0xe822('0x6')]){return _0x3fbfaf(_0x457142['error'][_0xe822('0x7')]);}else{return _0x4ea8bb(_0x457142['result']);}})['catch'](function(_0x191a35){return _0x3fbfaf(_0x191a35);});});}exports[_0xe822('0x8')]=function(_0x39699d){return request(_0xe822('0x9'),{'options':{'raw':![],'where':{'name':_0x39699d},'attributes':[_0xe822('0xa')]}});};exports[_0xe822('0xb')]=function(_0x5e017c){return request(_0xe822('0xc'),{'options':{'raw':![],'where':{'id':_0x5e017c},'include':[{'model':_0xe822('0xd'),'as':_0xe822('0xe')}],'attributes':['id',_0xe822('0xf'),_0xe822('0x10')]}});};exports[_0xe822('0x11')]=function(_0x5481e7){return request(_0xe822('0x9'),{'options':{'where':{'id':_0x5481e7},'attributes':['name']}});};exports['getVoiceQueueById']=function(_0x244f57){return request(_0xe822('0x12'),{'options':{'where':{'id':_0x244f57},'attributes':['name']}});};exports['getVariableById']=function(_0x189c0f){return request(_0xe822('0x13'),{'options':{'where':{'id':_0x189c0f},'attributes':[_0xe822('0xf')]}});};exports[_0xe822('0x14')]=function(_0x6a5ba9){return request(_0xe822('0x15'),{'options':{'where':{'id':_0x6a5ba9},'attributes':[_0xe822('0x16')]}});};exports[_0xe822('0x17')]=function(_0x429ee7){return request(_0xe822('0x18'),{'options':{'where':{'id':_0x429ee7},'attributes':[_0xe822('0xf')]}});};exports['getTrunkById']=function(_0x3358c8){return request('ShowTrunk',{'options':{'where':{'id':_0x3358c8},'attributes':[_0xe822('0xf')]}});};exports[_0xe822('0x19')]=function(_0x29c70b){return request(_0xe822('0x1a'),{'options':{'where':{'id':_0x29c70b},'attributes':[_0xe822('0x1b')]}});};exports[_0xe822('0x1c')]=function(_0x599bcb){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x599bcb},'include':[{'model':_0xe822('0x1d'),'as':_0xe822('0x1e')}]}});};exports[_0xe822('0x1f')]=function(_0x496671){return request(_0xe822('0x20'),{'options':{'where':{'id':_0x496671},'attributes':['id',_0xe822('0xf')]}});};exports[_0xe822('0x21')]=function(_0x33df18){return request(_0xe822('0x22'),{'body':_0x33df18});};exports['createSquareDetailsReport']=function(_0x350596){return request(_0xe822('0x23'),{'body':_0x350596});};exports[_0xe822('0x24')]=function(_0x521e21){return request(_0xe822('0x25'),{'body':_[_0xe822('0x26')](_0x521e21,{'project_name':_0x521e21[_0xe822('0x27')],'prev_project_name':_0x521e21[_0xe822('0x28')]||'','is_subproject':_0x521e21[_0xe822('0x28')]?!![]:![],'leaveAt':moment()[_0xe822('0x29')](_0xe822('0x2a'))})});};exports[_0xe822('0x2b')]=function(_0x30ab3c){return request(_0xe822('0x2c'),{'body':_0x30ab3c});};exports['createSquareMessage']=function(_0x24a8ad){return request(_0xe822('0x2d'),{'body':_0x24a8ad});};exports[_0xe822('0x2e')]=function(_0x46ca29){return request(_0xe822('0x2f'),{'options':{'raw':![],'where':{'phone':_0x46ca29[_0xe822('0x30')],'ListId':_0x46ca29[_0xe822('0x31')]}}})[_0xe822('0x5')](function(_0x441206){if(_0x441206){return _0x441206;}return request(_0xe822('0x32'),{'body':_0x46ca29});});};exports['getPauseById']=function(_0x588020){return request(_0xe822('0x33'),{'options':{'where':{'id':_0x588020},'attributes':[_0xe822('0xf')]}});};exports[_0xe822('0x34')]=function(_0x26c6b3,_0xd84d97){return request(_0xe822('0x35'),{'body':{'interface':_0xd84d97},'options':{'where':_0x26c6b3}});};exports['agentPause']=function(_0x510e57,_0xc75189,_0x5d97c0){return request('PauseUser',{'body':{'type':_0xc75189,'uniqueid':_0x5d97c0},'options':{'where':_0x510e57}});};exports['agentUnpause']=function(_0x4074c3){return request(_0xe822('0x36'),{'body':{},'options':{'where':_0x4074c3}});};exports['agentLogout']=function(_0x18f659){return request(_0xe822('0x37'),{'body':{},'options':{'where':_0x18f659}});};
\ No newline at end of file
index 60c496f..3035509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c48=['./lex','exports','./polly'];(function(_0x341e71,_0x2612fe){var _0x274fe0=function(_0x228d1b){while(--_0x228d1b){_0x341e71['push'](_0x341e71['shift']());}};_0x274fe0(++_0x2612fe);}(_0x9c48,0xa1));var _0x89c4=function(_0x1dca51,_0x44b5b1){_0x1dca51=_0x1dca51-0x0;var _0x598366=_0x9c48[_0x1dca51];return _0x598366;};var polly=require(_0x89c4('0x0'));var lex=require(_0x89c4('0x1'));module[_0x89c4('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x4489=['./polly','./lex'];(function(_0x213c63,_0x420de6){var _0x300bfb=function(_0x5d0b2e){while(--_0x5d0b2e){_0x213c63['push'](_0x213c63['shift']());}};_0x300bfb(++_0x420de6);}(_0x4489,0x164));var _0x9448=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4489[_0x3dd15e];return _0x231fd0;};var polly=require(_0x9448('0x0'));var lex=require(_0x9448('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index 114f763..14ee285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['exports','./lib/api'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xa571,0x107));var _0x1a57=function(_0x491b34,_0x27723d){_0x491b34=_0x491b34-0x0;var _0x1d929c=_0xa571[_0x491b34];return _0x1d929c;};'use strict';var lex=require(_0x1a57('0x0'));module[_0x1a57('0x1')]=function(_0x206f1b,_0x1067d9,_0x48485e,_0x1a071f,_0x2eebaa,_0x4d5f7a){return lex(_0x206f1b,_0x1067d9,_0x48485e,_0x1a071f,_0x2eebaa,_0x4d5f7a);};
\ No newline at end of file
+var _0x2dae=['./lib/api'];(function(_0x3a4e92,_0x3d5009){var _0x31d72b=function(_0x4cbf19){while(--_0x4cbf19){_0x3a4e92['push'](_0x3a4e92['shift']());}};_0x31d72b(++_0x3d5009);}(_0x2dae,0xc3));var _0xe2da=function(_0x12e073,_0x4d43db){_0x12e073=_0x12e073-0x0;var _0x267748=_0x2dae[_0x12e073];return _0x267748;};'use strict';var lex=require(_0xe2da('0x0'));module['exports']=function(_0x11ec30,_0x31359d,_0xcd0055,_0x167432,_0x99b46f,_0x481d97){return lex(_0x11ec30,_0x31359d,_0xcd0055,_0x167432,_0x99b46f,_0x481d97);};
\ No newline at end of file
index a1ae44c..b13992a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x5f41b3,_0x43040b){var _0x56f5c4=function(_0x23c230){while(--_0x23c230){_0x5f41b3['push'](_0x5f41b3['shift']());}};_0x56f5c4(++_0x43040b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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(_0xa45d96,_0x4bb86d){var _0x7a7361=function(_0x1eed6a){while(--_0x1eed6a){_0xa45d96['push'](_0xa45d96['shift']());}};_0x7a7361(++_0x4bb86d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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 d347a6d..7fb021e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x251d=['exports','./lib/api'];(function(_0x7ad8f8,_0x145cba){var _0x2d23c6=function(_0x2e4135){while(--_0x2e4135){_0x7ad8f8['push'](_0x7ad8f8['shift']());}};_0x2d23c6(++_0x145cba);}(_0x251d,0x8d));var _0xd251=function(_0xfe2037,_0x16ad62){_0xfe2037=_0xfe2037-0x0;var _0x5c0cb7=_0x251d[_0xfe2037];return _0x5c0cb7;};'use strict';var polly=require(_0xd251('0x0'));module[_0xd251('0x1')]=function(_0x5709da,_0x39126c,_0x4e611b,_0x4be348,_0x511e9e,_0x226aed,_0x5b5f58){return polly(_0x5709da,_0x39126c,_0x4e611b,_0x4be348,_0x511e9e,_0x226aed,_0x5b5f58);};
\ No newline at end of file
+var _0x9b95=['exports','./lib/api'];(function(_0x5ea34f,_0xb3d1db){var _0x4b9e25=function(_0x4191ff){while(--_0x4191ff){_0x5ea34f['push'](_0x5ea34f['shift']());}};_0x4b9e25(++_0xb3d1db);}(_0x9b95,0x113));var _0x59b9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9b95[_0x2641f9];return _0x585741;};'use strict';var polly=require(_0x59b9('0x0'));module[_0x59b9('0x1')]=function(_0x3d4942,_0x157e35,_0x50b299,_0x199001,_0x1e1886,_0x938a90,_0x327546){return polly(_0x3d4942,_0x157e35,_0x50b299,_0x199001,_0x1e1886,_0x938a90,_0x327546);};
\ No newline at end of file
index 5569a0a..bba6a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc1a=['exports','text','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x15d97e,_0x1225f5){var _0x876b70=function(_0xfddf8){while(--_0xfddf8){_0x15d97e['push'](_0x15d97e['shift']());}};_0x876b70(++_0x1225f5);}(_0xcc1a,0x1aa));var _0xacc1=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0xcc1a[_0x29d915];return _0x160f86;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0xacc1('0x0'));var rs=require(_0xacc1('0x1'));var AWS=require(_0xacc1('0x2'));function pollyResult(_0x50a309,_0x17fda6,_0x634e1c){return new BPromise(function(_0x52b924,_0x31a3be){_0x50a309[_0xacc1('0x3')](_0x17fda6,function(_0x1a4d31,_0x37b5b3){if(_0x1a4d31){_0x31a3be(_0x1a4d31);}else if(_0x37b5b3){if(_0x37b5b3['AudioStream']instanceof Buffer){fs['writeFile'](_0x634e1c,_0x37b5b3[_0xacc1('0x4')],function(_0x5065f7){if(_0x5065f7){_0x31a3be(_0x5065f7);}else{_0x52b924();}});}else{_0x31a3be(new Error(_0xacc1('0x5')));}}else{_0x31a3be(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xacc1('0x6')]=function(_0x101a7a,_0x1545bc,_0xf7c0a6,_0x53a796,_0x191d3b,_0x3be92d,_0x95ec1d){var _0x29c88b=new AWS['Polly']({'accessKeyId':_0x101a7a,'secretAccessKey':_0x1545bc,'region':_0xf7c0a6});var _0x14fbef={'Text':_0x191d3b,'TextType':_0x3be92d||_0xacc1('0x7'),'OutputFormat':'mp3','VoiceId':_0x53a796};return pollyResult(_0x29c88b,_0x14fbef,_0x95ec1d);};
\ No newline at end of file
+var _0x010e=['path','bluebird','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','Polly'];(function(_0xe11781,_0x3f0d00){var _0x4285a7=function(_0x2c4276){while(--_0x2c4276){_0xe11781['push'](_0xe11781['shift']());}};_0x4285a7(++_0x3f0d00);}(_0x010e,0x1c2));var _0xe010=function(_0x120190,_0xa100e1){_0x120190=_0x120190-0x0;var _0x11f2f5=_0x010e[_0x120190];return _0x11f2f5;};'use strict';var fs=require('fs');var path=require(_0xe010('0x0'));var BPromise=require(_0xe010('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x133ab2,_0x492b73,_0x57f996){return new BPromise(function(_0x4e604a,_0xda4bc8){_0x133ab2[_0xe010('0x2')](_0x492b73,function(_0x116fae,_0x3ed6af){if(_0x116fae){_0xda4bc8(_0x116fae);}else if(_0x3ed6af){if(_0x3ed6af[_0xe010('0x3')]instanceof Buffer){fs['writeFile'](_0x57f996,_0x3ed6af[_0xe010('0x3')],function(_0xc49578){if(_0xc49578){_0xda4bc8(_0xc49578);}else{_0x4e604a();}});}else{_0xda4bc8(new Error(_0xe010('0x4')));}}else{_0xda4bc8(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module['exports']=function(_0x51511b,_0x41848f,_0x608aca,_0x57830f,_0x5fc982,_0x557521,_0x680bd0){var _0x538d94=new AWS[(_0xe010('0x5'))]({'accessKeyId':_0x51511b,'secretAccessKey':_0x41848f,'region':_0x608aca});var _0x150053={'Text':_0x5fc982,'TextType':_0x557521||'text','OutputFormat':'mp3','VoiceId':_0x57830f};return pollyResult(_0x538d94,_0x150053,_0x680bd0);};
\ No newline at end of file
index afde35c..beeb3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223d=['./lib/api'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x223d,0xc4));var _0xd223=function(_0x21051a,_0x220a7d){_0x21051a=_0x21051a-0x0;var _0x3cab06=_0x223d[_0x21051a];return _0x3cab06;};'use strict';var asr=require(_0xd223('0x0'));module['exports']=function(_0x30516f,_0x293dfc,_0x10fbbf,_0x9fdcbe){return asr(_0x30516f,_0x293dfc,_0x10fbbf);};
\ No newline at end of file
+var _0xce72=['exports'];(function(_0x79bfb9,_0x45fe5f){var _0x2d88a5=function(_0x597778){while(--_0x597778){_0x79bfb9['push'](_0x79bfb9['shift']());}};_0x2d88a5(++_0x45fe5f);}(_0xce72,0xca));var _0x2ce7=function(_0x573edc,_0x35c5f4){_0x573edc=_0x573edc-0x0;var _0x2cb215=_0xce72[_0x573edc];return _0x2cb215;};'use strict';var asr=require('./lib/api');module[_0x2ce7('0x0')]=function(_0x344f5c,_0x4a8f76,_0x11a88f,_0xe9601d){return asr(_0x344f5c,_0x4a8f76,_0x11a88f);};
\ No newline at end of file
index af873ad..d7ffe57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac55=['8000','url','bluebird','https://speech.googleapis.com','exports','string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','POST','LINEAR16'];(function(_0x1c9a70,_0x5880b1){var _0x257364=function(_0x4ef3d2){while(--_0x4ef3d2){_0x1c9a70['push'](_0x1c9a70['shift']());}};_0x257364(++_0x5880b1);}(_0xac55,0x1c8));var _0x5ac5=function(_0x1f4d2b,_0x133c23){_0x1f4d2b=_0x1f4d2b-0x0;var _0xf38e12=_0xac55[_0x1f4d2b];return _0xf38e12;};'use strict';var url=require(_0x5ac5('0x0'));var BPromise=require(_0x5ac5('0x1'));var fs=require('fs');var host=_0x5ac5('0x2');module[_0x5ac5('0x3')]=function(_0x5ac30d,_0x17b1d9,_0x13fcc6){return new BPromise(function(_0x192f9d,_0x1cdfec){var _0x3706ee;if(typeof _0x5ac30d!==_0x5ac5('0x4')||_0x5ac30d[_0x5ac5('0x5')]===0x0){return _0x1cdfec('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x17b1d9!=='string'||_0x17b1d9[_0x5ac5('0x5')]===0x0){return _0x1cdfec(_0x5ac5('0x6'));}if(typeof _0x13fcc6!==_0x5ac5('0x7')&&(typeof _0x13fcc6!==_0x5ac5('0x4')||_0x13fcc6[_0x5ac5('0x5')]===0x0)){return _0x1cdfec(_0x5ac5('0x8'));}try{_0x3706ee=fs[_0x5ac5('0x9')](_0x5ac30d)['toString']('base64');}catch(_0x2414f9){return _0x1cdfec(_0x2414f9);}return _0x192f9d({'method':_0x5ac5('0xa'),'uri':host+'/v1/speech:recognize?key='+_0x17b1d9,'body':{'config':{'encoding':_0x5ac5('0xb'),'sampleRateHertz':_0x5ac5('0xc'),'languageCode':_0x13fcc6},'audio':{'content':_0x3706ee}},'json':!![]});});};
\ No newline at end of file
+var _0xb07f=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','8000','url'];(function(_0x5b4ec4,_0x5c90b3){var _0x1e3fb0=function(_0x2f3c3f){while(--_0x2f3c3f){_0x5b4ec4['push'](_0x5b4ec4['shift']());}};_0x1e3fb0(++_0x5c90b3);}(_0xb07f,0x109));var _0xfb07=function(_0x2c3e93,_0x55e60a){_0x2c3e93=_0x2c3e93-0x0;var _0x3dae02=_0xb07f[_0x2c3e93];return _0x3dae02;};'use strict';var url=require(_0xfb07('0x0'));var BPromise=require(_0xfb07('0x1'));var fs=require('fs');var host=_0xfb07('0x2');module[_0xfb07('0x3')]=function(_0x2e561d,_0xc9317c,_0x3a262e){return new BPromise(function(_0x25212c,_0x3b3c05){var _0x2fc1ce;if(typeof _0x2e561d!==_0xfb07('0x4')||_0x2e561d['length']===0x0){return _0x3b3c05(_0xfb07('0x5'));}if(typeof _0xc9317c!==_0xfb07('0x4')||_0xc9317c[_0xfb07('0x6')]===0x0){return _0x3b3c05(_0xfb07('0x7'));}if(typeof _0x3a262e!==_0xfb07('0x8')&&(typeof _0x3a262e!==_0xfb07('0x4')||_0x3a262e[_0xfb07('0x6')]===0x0)){return _0x3b3c05(_0xfb07('0x9'));}try{_0x2fc1ce=fs[_0xfb07('0xa')](_0x2e561d)[_0xfb07('0xb')](_0xfb07('0xc'));}catch(_0x360df9){return _0x3b3c05(_0x360df9);}return _0x25212c({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0xc9317c,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0xfb07('0xd'),'languageCode':_0x3a262e},'audio':{'content':_0x2fc1ce}},'json':!![]});});};
\ No newline at end of file
index b353ff7..0a328a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f36=['exports','./asr'];(function(_0x4f1d58,_0x64dbf){var _0x12dd38=function(_0x44ada3){while(--_0x44ada3){_0x4f1d58['push'](_0x4f1d58['shift']());}};_0x12dd38(++_0x64dbf);}(_0x6f36,0x91));var _0x66f3=function(_0x399df9,_0x3ed8ec){_0x399df9=_0x399df9-0x0;var _0x5d4935=_0x6f36[_0x399df9];return _0x5d4935;};var asr=require(_0x66f3('0x0'));module[_0x66f3('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x1550=['./asr','exports'];(function(_0x2b18ba,_0x5bbe72){var _0x5db9a2=function(_0x59f702){while(--_0x59f702){_0x2b18ba['push'](_0x2b18ba['shift']());}};_0x5db9a2(++_0x5bbe72);}(_0x1550,0x162));var _0x0155=function(_0x4940e0,_0x294d17){_0x4940e0=_0x4940e0-0x0;var _0xdb786d=_0x1550[_0x4940e0];return _0xdb786d;};var asr=require(_0x0155('0x0'));module[_0x0155('0x1')]={'asr':asr};
\ No newline at end of file
index 2eec52a..0f856c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e3d=['status','code','metadata','endConversation','googleDialogflowV2','SessionsClient','detectIntent','length','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','dialogflow','http','https','path','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','statusCode','createWriteStream','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','host','transcode','wav','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','then','from','audioContent','googleTTS','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','slice','parse\x20response\x20failed:\x0a','data','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','googleDialogflow','result','source','action','actionIncomplete','fulfillment','speech'];(function(_0x5f58bb,_0x3f0bad){var _0xcc672d=function(_0x4a0765){while(--_0x4a0765){_0x5f58bb['push'](_0x5f58bb['shift']());}};_0xcc672d(++_0x3f0bad);}(_0x6e3d,0x134));var _0xd6e3=function(_0x54f3e8,_0x3ed493){_0x54f3e8=_0x54f3e8-0x0;var _0x267b37=_0x6e3d[_0x54f3e8];return _0x267b37;};'use strict';var apiai=require(_0xd6e3('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0xd6e3('0x1'));var fs=require('fs');var http=require(_0xd6e3('0x2'));var https=require(_0xd6e3('0x3'));var md5=require('md5');var path=require(_0xd6e3('0x4'));var querystring=require('querystring');var rp=require('request-promise');var rs=require(_0xd6e3('0x5'));var sox=require(_0xd6e3('0x6'));var tts=require(_0xd6e3('0x7'));var urlParse=require('url')[_0xd6e3('0x8')];var util=require(_0xd6e3('0x9'));var aws=require(_0xd6e3('0xa'));var google=require(_0xd6e3('0xb'));var sestek=require(_0xd6e3('0xc'));var tilde=require(_0xd6e3('0xd'));var logger=require(_0xd6e3('0xe'))('agi');var ISPEECH_API=_0xd6e3('0xf');function downloadFile(_0xbca6cf,_0x1ed592){return new BPromise(function(_0x1f67da,_0x33ad60){var _0x47cd8c=urlParse(_0xbca6cf);var _0x1ed88c=_0x47cd8c[_0xd6e3('0x10')]===_0xd6e3('0x11')?https:http;var _0x366993={'host':_0x47cd8c['host'],'path':_0x47cd8c[_0xd6e3('0x4')],'headers':{'user-agent':_0xd6e3('0x12')}};_0x1ed88c[_0xd6e3('0x13')](_0x366993,function(_0x192350){if(_0x192350['statusCode']!==0xc8){logger[_0xd6e3('0x14')](_0xd6e3('0x15')+_0xbca6cf+'\x20failed,\x20status\x20code\x20=\x20'+_0x192350['statusCode']+'\x20('+_0x192350[_0xd6e3('0x16')]+')');_0x33ad60(new Error('request\x20to\x20'+_0xbca6cf+_0xd6e3('0x17')+_0x192350[_0xd6e3('0x18')]+'\x20('+_0x192350[_0xd6e3('0x16')]+')'));return;}var _0x4c09aa=fs[_0xd6e3('0x19')](_0x1ed592);_0x4c09aa['on']('finish',function(){logger['info'](_0xd6e3('0x1a'));_0x4c09aa[_0xd6e3('0x1b')](_0x1f67da);});_0x4c09aa['on']('error',function(_0x46d30a){fs[_0xd6e3('0x1c')](_0x1ed592);logger[_0xd6e3('0x14')](_0xd6e3('0x1d'),_0x46d30a);_0x33ad60(_0x46d30a);});_0x192350[_0xd6e3('0x1e')](_0x4c09aa);})['on'](_0xd6e3('0x14'),function(_0x33ae31){logger[_0xd6e3('0x14')](_0x33ae31);_0x33ad60(_0x33ae31);})[_0xd6e3('0x1f')]();});}function uploadFile(_0xee5380){return new BPromise(function(_0x530f7a,_0x1c9e17){var _0x44cab9=urlParse(_0xee5380);var _0x4e93b4=_0x44cab9[_0xd6e3('0x10')]===_0xd6e3('0x11')?https:http;var _0x294af3={'host':_0x44cab9[_0xd6e3('0x20')],'path':_0x44cab9['path'],'headers':{'user-agent':_0xd6e3('0x12')}};_0x4e93b4[_0xd6e3('0x13')](_0x294af3,function(_0x4f350f){if(_0x4f350f[_0xd6e3('0x18')]!==0xc8){_0x1c9e17(new Error(_0xd6e3('0x15')+_0xee5380+_0xd6e3('0x17')+_0x4f350f[_0xd6e3('0x18')]+'\x20('+_0x4f350f[_0xd6e3('0x16')]+')'));return;}var _0x55074c='';_0x4f350f['on']('data',function(_0x31555d){_0x55074c+=_0x31555d;});_0x4f350f['on'](_0xd6e3('0x1f'),function(){_0x530f7a(_0x55074c);});})['on'](_0xd6e3('0x14'),function(_0x3b6a89){_0x1c9e17(_0x3b6a89);})[_0xd6e3('0x1f')]();});}function convertFile(_0x7984df,_0x58b558){return new BPromise(function(_0x16bb52,_0x434bbd){var _0x2fcbc5=sox[_0xd6e3('0x21')](_0x7984df,_0x58b558,{'sampleRate':0x1f40,'format':_0xd6e3('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2fcbc5['on'](_0xd6e3('0x14'),function(_0x4a0ec6){logger['error'](_0xd6e3('0x23'),_0x4a0ec6);_0x434bbd(_0x4a0ec6);});_0x2fcbc5['on'](_0xd6e3('0x1f'),function(){logger[_0xd6e3('0x24')](_0xd6e3('0x25'));_0x16bb52();});_0x2fcbc5[_0xd6e3('0x26')]();});}function base64Decode(_0x560197,_0x493e41){var _0x3278cf=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x2a'));fs[_0xd6e3('0x2b')](_0x3278cf,_0x560197,_0xd6e3('0x2c'));return convertFile(_0x3278cf,_0x493e41)['then'](function(){try{fs['unlink'](_0x3278cf);fs[_0xd6e3('0x2d')](_0x493e41,_0xd6e3('0x2e'));}catch(_0xe80699){logger[_0xd6e3('0x14')](_0xe80699);}return _0x493e41[_0xd6e3('0x2f')]('.')[0x0];});}function base64Encode(_0x38dd96){var _0x5a3e9c=fs[_0xd6e3('0x30')](_0x38dd96);return new Buffer(_0x5a3e9c)[_0xd6e3('0x31')](_0xd6e3('0x2c'));}exports[_0xd6e3('0x32')]=function(_0x4531ba,_0x18e318,_0x40fa2d,_0x1c7426,_0x4ececb,_0x2e95a1){var _0x3e1464,_0x489812;var _0x3a744b=_0xd6e3('0x33');var _0x30e853=_0xd6e3('0x34')+_0x4531ba;var _0x4e853c={};if(_0x18e318===_0xd6e3('0x35')){_0x4e853c[_0xd6e3('0x36')]={'ssml':_0x40fa2d};}else{_0x4e853c[_0xd6e3('0x36')]={'text':_0x40fa2d};};_0x4e853c[_0xd6e3('0x37')]={'languageCode':_0x1c7426,'ssmlGender':_0x4ececb};_0x4e853c[_0xd6e3('0x38')]={'audioEncoding':_0xd6e3('0x39'),'sampleRateHertz':0x1f40};var _0x3371bc={'url':_0x3a744b+_0xd6e3('0x3a')+_0x30e853,'method':_0xd6e3('0x3b'),'json':!![],'body':_0x4e853c};return rp(_0x3371bc)[_0xd6e3('0x3c')](function(_0x42619f){return new BPromise(function(_0x4d734f,_0x423d15){_0x3e1464=path['resolve'](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+'.mp3');var _0x4d23bc=Buffer[_0xd6e3('0x3d')](_0x42619f[_0xd6e3('0x3e')],'base64');return fs['writeFile'](_0x3e1464,_0x4d23bc,function(_0x4c84e2){_0x423d15(_0x4c84e2);},function(_0x60b43){fs[_0xd6e3('0x2d')](_0x3e1464,'777');_0x4d734f(_0x60b43);});});})[_0xd6e3('0x3c')](function(_0x5b13cf){_0x489812=path['resolve'](__dirname,_0xd6e3('0x28'),rs['generate'](0x4)+_0xd6e3('0x2a'));return convertFile(_0x3e1464,_0x489812);})['then'](function(){try{fs[_0xd6e3('0x1c')](_0x3e1464);fs[_0xd6e3('0x2d')](_0x489812,_0xd6e3('0x2e'));}catch(_0xf4c3c9){logger[_0xd6e3('0x14')](_0xf4c3c9);}logger['info']('googleCloudTTS\x20path',_0x489812['split']('.')[0x0]);return _0x489812[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x3f')]=function(_0x4ada70,_0x2a3678){var _0x2f59e8='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x18a188,_0x10ee24;var _0x13555f;var _0x23f76b={'encoding':_0xd6e3('0x40'),'method':'POST','timeout':0x2710,'url':_0x2f59e8,'headers':{'Content-Type':_0xd6e3('0x41')},'body':'f.req='+encodeURIComponent(JSON[_0xd6e3('0x42')]([[[_0xd6e3('0x43'),JSON[_0xd6e3('0x42')]([_0x4ada70,_0x2a3678||'en',![],'null']),null,'generic']]]))};return rp(_0x23f76b)[_0xd6e3('0x3c')](function(_0x48be3d){try{_0x13555f=eval(_0x48be3d[_0xd6e3('0x44')](0x5))[0x0][0x2];}catch(_0xc2827a){throw new Error(_0xd6e3('0x45')+_0x48be3d[_0xd6e3('0x46')]);}if(!_0x13555f){if(_0x4ada70['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xd6e3('0x47')+_0x2a3678+_0xd6e3('0x48'));}}try{_0x13555f=eval(_0x13555f)[0x0];}catch(_0x484456){throw new Error(_0xd6e3('0x45')+res[_0xd6e3('0x46')]);}const _0x39877b=_0x13555f;_0x18a188=path['resolve'](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x49'));fs['writeFileSync'](_0x18a188,_0x13555f,{'encoding':'base64'});_0x10ee24=path[_0xd6e3('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xd6e3('0x2a'));return convertFile(_0x18a188,_0x10ee24);})[_0xd6e3('0x3c')](function(){try{fs[_0xd6e3('0x1c')](_0x18a188);fs[_0xd6e3('0x2d')](_0x10ee24,_0xd6e3('0x2e'));}catch(_0x3be7a0){logger['error'](_0x3be7a0);}logger[_0xd6e3('0x24')]('goggleTTS\x20path',_0x10ee24[_0xd6e3('0x2f')]('.')[0x0]);return _0x10ee24[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x4a')]=function(_0x2055be,_0x2a25c6,_0x1192bc){return google[_0xd6e3('0x4b')](_0x2055be,_0x2a25c6,_0x1192bc)['then'](function(_0x369cff){logger['info'](_0x369cff[_0xd6e3('0x4c')]);return rp(_0x369cff);})['then'](function(_0x1f78a7){var _0x425446='';var _0x5c1093=0x0;try{fs[_0xd6e3('0x1c')](_0x2055be);}catch(_0x4e721a){logger['error'](_0x4e721a);}if(_0x1f78a7&&_0x1f78a7[_0xd6e3('0x4d')]){_0x425446=_0x1f78a7['results'][_0xd6e3('0x4e')](function(_0x25a0b6){return _0x25a0b6&&_0x25a0b6[_0xd6e3('0x4f')][0x0]&&_0x25a0b6[_0xd6e3('0x4f')][0x0][_0xd6e3('0x50')]?_0x25a0b6[_0xd6e3('0x4f')][0x0]['transcript']:'';})['join']('\x0a');_0x5c1093=_0x1f78a7[_0xd6e3('0x4d')][_0xd6e3('0x4e')](function(_0x42ccab){return _0x42ccab&&_0x42ccab['alternatives'][0x0]&&_0x42ccab[_0xd6e3('0x4f')][0x0][_0xd6e3('0x51')]?_0x42ccab[_0xd6e3('0x4f')][0x0][_0xd6e3('0x51')]:0x0;})[_0xd6e3('0x52')]('\x0a');}logger[_0xd6e3('0x24')](_0xd6e3('0x53'),_0x425446);logger[_0xd6e3('0x24')]('googleASR\x20confidence',_0x5c1093);return{'transcript':_0x425446,'confidence':_0x5c1093};})[_0xd6e3('0x54')](function(_0x107d61){logger[_0xd6e3('0x14')](_0xd6e3('0x55'),_0x107d61[_0xd6e3('0x18')],_0x107d61[_0xd6e3('0x56')],_0x107d61['message']);});};exports[_0xd6e3('0x57')]=function(_0x7fac2e,_0x558f81,_0x3219fe,_0x4d2267){var _0x10bc93=apiai(_0x558f81,{'language':_0x4d2267||'en'});return _0x10bc93['textRequest'](_0x3219fe,{'sessionId':md5(_0x7fac2e)})['then'](function(_0x3f01d0){logger[_0xd6e3('0x24')](JSON[_0xd6e3('0x42')](_0x3f01d0));return{'source':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x59')],'resolvedQuery':_0x3f01d0[_0xd6e3('0x58')]['resolvedQuery'],'action':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x5a')],'actionIncomplete':_0x3f01d0['result'][_0xd6e3('0x5b')],'speech':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x5c')][_0xd6e3('0x5d')],'score':_0x3f01d0['result']['score'],'statusCode':_0x3f01d0[_0xd6e3('0x5e')][_0xd6e3('0x5f')],'endConversation':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x60')][_0xd6e3('0x61')]||![],'isFallbackIntent':_0x3f01d0[_0xd6e3('0x58')]['metadata']['isFallbackIntent']};});};exports[_0xd6e3('0x62')]=function(_0x3db448,_0x253092,_0x215fcf,_0x91c324,_0x936667,_0x2eac44){var _0x401111=_0x91c324['replace'](/\\n/g,'\x0a');var _0x4c2bd7={'credentials':{'private_key':_0x401111,'client_email':_0x215fcf}};var _0x2b0053=new dialogflow[(_0xd6e3('0x63'))](_0x4c2bd7);var _0x322dc1=_0x2b0053['sessionPath'](_0x253092,md5(_0x3db448));var _0xf172f4={'session':_0x322dc1,'queryInput':{'text':{'text':_0x936667,'languageCode':_0x2eac44}}};return _0x2b0053[_0xd6e3('0x64')](_0xf172f4)[_0xd6e3('0x3c')](function(_0x347796){if(_0x347796&&_0x347796[_0xd6e3('0x65')]){logger[_0xd6e3('0x24')]('Dialogflow\x20V2\x20response:',JSON['stringify'](_0x347796));var _0xb54f90=_0x347796[0x0];if(_0xb54f90){var _0x2ba939={'action':_0xb54f90[_0xd6e3('0x66')]['action'],'allRequiredParamsPresent':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x67')],'endConversation':_0xb54f90[_0xd6e3('0x66')]['diagnosticInfo']&&_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x68')][_0xd6e3('0x69')]?_0xb54f90['queryResult'][_0xd6e3('0x68')][_0xd6e3('0x69')][_0xd6e3('0x6a')][_0xd6e3('0x6b')]:![],'fulfillmentText':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6c')],'intentName':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6d')][_0xd6e3('0x56')],'intentDisplayName':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6d')][_0xd6e3('0x6e')],'isFallbackIntent':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6d')][_0xd6e3('0x6f')],'languageCode':_0xb54f90['queryResult']['languageCode'],'queryText':_0xb54f90['queryResult'][_0xd6e3('0x70')],'responseId':_0xb54f90[_0xd6e3('0x71')],'score':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x72')],'speech':_0xb54f90[_0xd6e3('0x66')]['fulfillmentText'],'providerResponse':JSON[_0xd6e3('0x42')](_0x347796)};return _0x2ba939;}}});};exports[_0xd6e3('0x73')]=function(_0x14d387,_0x22347a,_0x278703,_0x2a8330){return tilde[_0xd6e3('0x4b')](_0x14d387,_0x22347a,_0x278703,_0x2a8330)[_0xd6e3('0x3c')](function(_0x17007c){try{fs[_0xd6e3('0x1c')](_0x14d387);}catch(_0x397c18){logger['error'](_0x397c18);}logger[_0xd6e3('0x24')](_0xd6e3('0x74'),_0x17007c[_0xd6e3('0x50')]);logger['info'](_0xd6e3('0x75'),_0x17007c[_0xd6e3('0x51')]);return _0x17007c;});};exports['awsPolly']=function(_0x5d909c,_0x1d57a7,_0x4bef42,_0x23226e,_0x4107ab,_0x7a913){var _0x37f207=path['resolve'](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x49'));var _0x3170ae;return aws[_0xd6e3('0x76')](_0x5d909c,_0x1d57a7,_0x4bef42,_0x23226e,_0x4107ab,_0x7a913,_0x37f207)[_0xd6e3('0x3c')](function(){_0x3170ae=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+'.wav');return convertFile(_0x37f207,_0x3170ae);})[_0xd6e3('0x3c')](function(){try{fs[_0xd6e3('0x1c')](_0x37f207);fs[_0xd6e3('0x2d')](_0x3170ae,_0xd6e3('0x2e'));}catch(_0x18b51c){logger[_0xd6e3('0x14')](_0x18b51c);}return _0x3170ae[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x77')]=function(_0x29fb6e,_0x4db779,_0x5e3876,_0x4b6178,_0x4461cc,_0x54851d){return aws[_0xd6e3('0x78')](_0x29fb6e,_0x4db779,_0x5e3876,_0x4b6178,_0x4461cc,_0x54851d)[_0xd6e3('0x3c')](function(_0x7c66d){logger['info'](JSON['stringify'](_0x7c66d));return _0x7c66d;});};exports[_0xd6e3('0x79')]=function(_0x2d0f0f,_0x518d77,_0x1b9c6a,_0x221ff8){var _0x4f88da=util[_0xd6e3('0x7a')](_0xd6e3('0x7b'),ISPEECH_API,_0x2d0f0f,encodeURIComponent(_0x518d77),_0x1b9c6a,_0x221ff8);var _0x28348e=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x49'));var _0x45304f;return downloadFile(_0x4f88da,_0x28348e)[_0xd6e3('0x3c')](function(){_0x45304f=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs['generate'](0x4)+_0xd6e3('0x2a'));return convertFile(_0x28348e,_0x45304f);})[_0xd6e3('0x3c')](function(){try{fs[_0xd6e3('0x1c')](_0x28348e);fs[_0xd6e3('0x2d')](_0x45304f,'777');}catch(_0x31ab05){logger[_0xd6e3('0x14')](_0x31ab05);}return _0x45304f[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x7c')]=function(_0x5a9fb1,_0x431799,_0x367c74,_0x36b908){var _0x50f2eb=util[_0xd6e3('0x7a')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x431799,_0x367c74,base64Encode(_0x5a9fb1),_0x36b908?util[_0xd6e3('0x7a')](_0xd6e3('0x7d'),encodeURIComponent(_0x36b908)):_0xd6e3('0x7e'));return uploadFile(_0x50f2eb)[_0xd6e3('0x3c')](function(_0x45db13){return querystring['parse'](_0x45db13);});};exports[_0xd6e3('0x7f')]=function(_0x387223,_0x23fc5b){return sestek[_0xd6e3('0x80')](_0x387223,_0x23fc5b)[_0xd6e3('0x3c')](function(_0x3aa316){logger['info'](JSON[_0xd6e3('0x42')](_0x3aa316));var _0x5d8c25={'speech':_0x3aa316['text'],'action':_0x3aa316[_0xd6e3('0x81')]?_0x3aa316[_0xd6e3('0x81')]['CustomAction']:undefined,'actiondata':_0x3aa316[_0xd6e3('0x81')]?_0x3aa316[_0xd6e3('0x81')][_0xd6e3('0x82')]:undefined};if(_0x3aa316['channelData']&&_0x3aa316[_0xd6e3('0x81')][_0xd6e3('0x83')]){return base64Decode(_0x3aa316[_0xd6e3('0x81')][_0xd6e3('0x83')][_0xd6e3('0x84')],path[_0xd6e3('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xd6e3('0x2a')))['then'](function(_0x2ea676){_0x5d8c25[_0xd6e3('0x85')]=_0x2ea676;return _0x5d8c25;});}return _0x5d8c25;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x1038=['tmp','from','audioContent','chmodSync','generate','.wav','777','info','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','.mp3','googleASR','asr','uri','results','map','alternatives','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','source','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','googleDialogflowV2','replace','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','isFallback','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','transcript','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','bluebird','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','statusCode','createWriteStream','finish','finish\x20download\x20file','close','unlink','download\x20error','pipe','WHAT_EVER','get','data','end','transcode','wav','finish\x20to\x20convert','start','resolve','writeFileSync','base64','then','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1038,0xd9));var _0x8103=function(_0x24f862,_0x4b645a){_0x24f862=_0x24f862-0x0;var _0x198aa4=_0x1038[_0x24f862];return _0x198aa4;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x8103('0x0'));var dialogflow=require(_0x8103('0x1'));var fs=require('fs');var http=require(_0x8103('0x2'));var https=require(_0x8103('0x3'));var md5=require('md5');var path=require(_0x8103('0x4'));var querystring=require(_0x8103('0x5'));var rp=require(_0x8103('0x6'));var rs=require(_0x8103('0x7'));var sox=require(_0x8103('0x8'));var tts=require('google-tts-api');var urlParse=require('url')[_0x8103('0x9')];var util=require(_0x8103('0xa'));var aws=require('./aws');var google=require(_0x8103('0xb'));var sestek=require(_0x8103('0xc'));var tilde=require(_0x8103('0xd'));var logger=require(_0x8103('0xe'))(_0x8103('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2576c7,_0x5e6b4b){return new BPromise(function(_0x6a8f4f,_0x5c9304){var _0x229ec0=urlParse(_0x2576c7);var _0x255d36=_0x229ec0[_0x8103('0x10')]===_0x8103('0x11')?https:http;var _0x13cf67={'host':_0x229ec0[_0x8103('0x12')],'path':_0x229ec0[_0x8103('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x255d36['get'](_0x13cf67,function(_0x3153bc){if(_0x3153bc['statusCode']!==0xc8){logger[_0x8103('0x13')](_0x8103('0x14')+_0x2576c7+_0x8103('0x15')+_0x3153bc['statusCode']+'\x20('+_0x3153bc[_0x8103('0x16')]+')');_0x5c9304(new Error(_0x8103('0x14')+_0x2576c7+_0x8103('0x15')+_0x3153bc[_0x8103('0x17')]+'\x20('+_0x3153bc[_0x8103('0x16')]+')'));return;}var _0x29d728=fs[_0x8103('0x18')](_0x5e6b4b);_0x29d728['on'](_0x8103('0x19'),function(){logger['info'](_0x8103('0x1a'));_0x29d728[_0x8103('0x1b')](_0x6a8f4f);});_0x29d728['on'](_0x8103('0x13'),function(_0x48901f){fs[_0x8103('0x1c')](_0x5e6b4b);logger[_0x8103('0x13')](_0x8103('0x1d'),_0x48901f);_0x5c9304(_0x48901f);});_0x3153bc[_0x8103('0x1e')](_0x29d728);})['on'](_0x8103('0x13'),function(_0x93bc82){logger[_0x8103('0x13')](_0x93bc82);_0x5c9304(_0x93bc82);})['end']();});}function uploadFile(_0x5d2c64){return new BPromise(function(_0x1a1497,_0x5dc76d){var _0x15b42c=urlParse(_0x5d2c64);var _0x434b89=_0x15b42c['protocol']===_0x8103('0x11')?https:http;var _0x27baa1={'host':_0x15b42c[_0x8103('0x12')],'path':_0x15b42c[_0x8103('0x4')],'headers':{'user-agent':_0x8103('0x1f')}};_0x434b89[_0x8103('0x20')](_0x27baa1,function(_0x234b0b){if(_0x234b0b[_0x8103('0x17')]!==0xc8){_0x5dc76d(new Error(_0x8103('0x14')+_0x5d2c64+_0x8103('0x15')+_0x234b0b[_0x8103('0x17')]+'\x20('+_0x234b0b[_0x8103('0x16')]+')'));return;}var _0x31d6cf='';_0x234b0b['on'](_0x8103('0x21'),function(_0x1072b6){_0x31d6cf+=_0x1072b6;});_0x234b0b['on']('end',function(){_0x1a1497(_0x31d6cf);});})['on'](_0x8103('0x13'),function(_0x3d2bcb){_0x5dc76d(_0x3d2bcb);})[_0x8103('0x22')]();});}function convertFile(_0x5ae249,_0x47960c){return new BPromise(function(_0x2872e6,_0x10d978){var _0x58ca84=sox[_0x8103('0x23')](_0x5ae249,_0x47960c,{'sampleRate':0x1f40,'format':_0x8103('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x58ca84['on'](_0x8103('0x13'),function(_0x2937bf){logger[_0x8103('0x13')]('error\x20convert',_0x2937bf);_0x10d978(_0x2937bf);});_0x58ca84['on'](_0x8103('0x22'),function(){logger['info'](_0x8103('0x25'));_0x2872e6();});_0x58ca84[_0x8103('0x26')]();});}function base64Decode(_0x34dd13,_0x31060b){var _0x459f42=path[_0x8103('0x27')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0x8103('0x28')](_0x459f42,_0x34dd13,_0x8103('0x29'));return convertFile(_0x459f42,_0x31060b)[_0x8103('0x2a')](function(){try{fs[_0x8103('0x1c')](_0x459f42);fs['chmodSync'](_0x31060b,'777');}catch(_0x1c3eb6){logger[_0x8103('0x13')](_0x1c3eb6);}return _0x31060b[_0x8103('0x2b')]('.')[0x0];});}function base64Encode(_0x56aa0c){var _0x5a31c2=fs['readFileSync'](_0x56aa0c);return new Buffer(_0x5a31c2)[_0x8103('0x2c')](_0x8103('0x29'));}exports[_0x8103('0x2d')]=function(_0x2a7e5e,_0x2aa24b,_0x13fafa,_0x444e8f,_0x69de44,_0x141b66){var _0x2eb9ad,_0x2e9a6f;var _0x4b84cc=_0x8103('0x2e');var _0xb68931=_0x8103('0x2f')+_0x2a7e5e;var _0x4268d1={};if(_0x2aa24b===_0x8103('0x30')){_0x4268d1['input']={'ssml':_0x13fafa};}else{_0x4268d1[_0x8103('0x31')]={'text':_0x13fafa};};_0x4268d1[_0x8103('0x32')]={'languageCode':_0x444e8f,'ssmlGender':_0x69de44};_0x4268d1[_0x8103('0x33')]={'audioEncoding':_0x8103('0x34'),'sampleRateHertz':0x1f40};var _0x3f6325={'url':_0x4b84cc+_0x8103('0x35')+_0xb68931,'method':_0x8103('0x36'),'json':!![],'body':_0x4268d1};return rp(_0x3f6325)[_0x8103('0x2a')](function(_0x1e7209){return new BPromise(function(_0x53436f,_0x6418c0){_0x2eb9ad=path[_0x8103('0x27')](__dirname,_0x8103('0x37'),rs['generate'](0x4)+'.mp3');var _0x280f35=Buffer[_0x8103('0x38')](_0x1e7209[_0x8103('0x39')],'base64');return fs['writeFile'](_0x2eb9ad,_0x280f35,function(_0xd5d770){_0x6418c0(_0xd5d770);},function(_0x5a1a78){fs[_0x8103('0x3a')](_0x2eb9ad,'777');_0x53436f(_0x5a1a78);});});})['then'](function(_0x5c0c7e){_0x2e9a6f=path[_0x8103('0x27')](__dirname,_0x8103('0x37'),rs[_0x8103('0x3b')](0x4)+_0x8103('0x3c'));return convertFile(_0x2eb9ad,_0x2e9a6f);})[_0x8103('0x2a')](function(){try{fs[_0x8103('0x1c')](_0x2eb9ad);fs[_0x8103('0x3a')](_0x2e9a6f,_0x8103('0x3d'));}catch(_0x4a69f8){logger['error'](_0x4a69f8);}logger[_0x8103('0x3e')]('googleCloudTTS\x20path',_0x2e9a6f[_0x8103('0x2b')]('.')[0x0]);return _0x2e9a6f[_0x8103('0x2b')]('.')[0x0];});};exports[_0x8103('0x3f')]=function(_0x2c5fcf,_0x1fefcb){var _0x115279=_0x8103('0x40');var _0x343e09,_0x366a0a;var _0x14ce13;var _0x218409={'encoding':_0x8103('0x41'),'method':_0x8103('0x36'),'timeout':0x2710,'url':_0x115279,'headers':{'Content-Type':_0x8103('0x42')},'body':'f.req='+encodeURIComponent(JSON[_0x8103('0x43')]([[[_0x8103('0x44'),JSON[_0x8103('0x43')]([_0x2c5fcf,_0x1fefcb||'en',![],_0x8103('0x45')]),null,_0x8103('0x46')]]]))};return rp(_0x218409)[_0x8103('0x2a')](function(_0xbe450b){try{_0x14ce13=eval(_0xbe450b[_0x8103('0x47')](0x5))[0x0][0x2];}catch(_0x320001){throw new Error(_0x8103('0x48')+_0xbe450b[_0x8103('0x21')]);}if(!_0x14ce13){if(_0x2c5fcf['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x8103('0x49')+_0x1fefcb+'\x22\x20might\x20not\x20exist');}}try{_0x14ce13=eval(_0x14ce13)[0x0];}catch(_0xe2589e){throw new Error(_0x8103('0x48')+res[_0x8103('0x21')]);}const _0x265bb3=_0x14ce13;_0x343e09=path[_0x8103('0x27')](__dirname,'tmp',rs[_0x8103('0x3b')](0x4)+_0x8103('0x4a'));fs[_0x8103('0x28')](_0x343e09,_0x14ce13,{'encoding':'base64'});_0x366a0a=path[_0x8103('0x27')](__dirname,_0x8103('0x37'),rs[_0x8103('0x3b')](0x4)+_0x8103('0x3c'));return convertFile(_0x343e09,_0x366a0a);})[_0x8103('0x2a')](function(){try{fs[_0x8103('0x1c')](_0x343e09);fs[_0x8103('0x3a')](_0x366a0a,_0x8103('0x3d'));}catch(_0x36e9bf){logger[_0x8103('0x13')](_0x36e9bf);}logger[_0x8103('0x3e')]('goggleTTS\x20path',_0x366a0a[_0x8103('0x2b')]('.')[0x0]);return _0x366a0a[_0x8103('0x2b')]('.')[0x0];});};exports[_0x8103('0x4b')]=function(_0xcb8ab0,_0x2d27a7,_0x3ddd9a){return google[_0x8103('0x4c')](_0xcb8ab0,_0x2d27a7,_0x3ddd9a)[_0x8103('0x2a')](function(_0x56ad8a){logger[_0x8103('0x3e')](_0x56ad8a[_0x8103('0x4d')]);return rp(_0x56ad8a);})[_0x8103('0x2a')](function(_0x41978a){var _0x47a4a0='';var _0x2f9526=0x0;try{fs[_0x8103('0x1c')](_0xcb8ab0);}catch(_0x516a87){logger[_0x8103('0x13')](_0x516a87);}if(_0x41978a&&_0x41978a[_0x8103('0x4e')]){_0x47a4a0=_0x41978a[_0x8103('0x4e')][_0x8103('0x4f')](function(_0x1f0608){return _0x1f0608&&_0x1f0608[_0x8103('0x50')][0x0]&&_0x1f0608['alternatives'][0x0]['transcript']?_0x1f0608[_0x8103('0x50')][0x0]['transcript']:'';})['join']('\x0a');_0x2f9526=_0x41978a['results'][_0x8103('0x4f')](function(_0x23bf21){return _0x23bf21&&_0x23bf21['alternatives'][0x0]&&_0x23bf21[_0x8103('0x50')][0x0][_0x8103('0x51')]?_0x23bf21['alternatives'][0x0]['confidence']:0x0;})['join']('\x0a');}logger[_0x8103('0x3e')]('googleASR\x20transcription',_0x47a4a0);logger['info'](_0x8103('0x52'),_0x2f9526);return{'transcript':_0x47a4a0,'confidence':_0x2f9526};})[_0x8103('0x53')](function(_0x2103e2){logger['error'](_0x8103('0x54'),_0x2103e2['statusCode'],_0x2103e2[_0x8103('0x55')],_0x2103e2[_0x8103('0x56')]);});};exports[_0x8103('0x57')]=function(_0x106100,_0x2bbe89,_0x14d093,_0x520000){var _0x4dfb69=apiai(_0x2bbe89,{'language':_0x520000||'en'});return _0x4dfb69[_0x8103('0x58')](_0x14d093,{'sessionId':md5(_0x106100)})['then'](function(_0x3b3bc9){logger[_0x8103('0x3e')](JSON[_0x8103('0x43')](_0x3b3bc9));return{'source':_0x3b3bc9['result'][_0x8103('0x59')],'resolvedQuery':_0x3b3bc9[_0x8103('0x5a')][_0x8103('0x5b')],'action':_0x3b3bc9[_0x8103('0x5a')][_0x8103('0x5c')],'actionIncomplete':_0x3b3bc9[_0x8103('0x5a')][_0x8103('0x5d')],'speech':_0x3b3bc9[_0x8103('0x5a')][_0x8103('0x5e')][_0x8103('0x5f')],'score':_0x3b3bc9[_0x8103('0x5a')][_0x8103('0x60')],'statusCode':_0x3b3bc9[_0x8103('0x61')]['code'],'endConversation':_0x3b3bc9[_0x8103('0x5a')][_0x8103('0x62')][_0x8103('0x63')]||![],'isFallbackIntent':_0x3b3bc9['result'][_0x8103('0x62')]['isFallbackIntent']};});};exports[_0x8103('0x64')]=function(_0x190b17,_0x201078,_0x3d7343,_0x524924,_0x3daaf6,_0x7b7b06){var _0x81ae39=_0x524924[_0x8103('0x65')](/\\n/g,'\x0a');var _0x43f0af={'credentials':{'private_key':_0x81ae39,'client_email':_0x3d7343}};var _0x41ee66=new dialogflow[(_0x8103('0x66'))](_0x43f0af);var _0x339b0e=_0x41ee66['sessionPath'](_0x201078,md5(_0x190b17));var _0x270bb4={'session':_0x339b0e,'queryInput':{'text':{'text':_0x3daaf6,'languageCode':_0x7b7b06}}};return _0x41ee66[_0x8103('0x67')](_0x270bb4)[_0x8103('0x2a')](function(_0x2f3806){if(_0x2f3806&&_0x2f3806[_0x8103('0x68')]){logger[_0x8103('0x3e')](_0x8103('0x69'),JSON[_0x8103('0x43')](_0x2f3806));var _0x10659b=_0x2f3806[0x0];if(_0x10659b){var _0x80c352={'action':_0x10659b['queryResult'][_0x8103('0x5c')],'allRequiredParamsPresent':_0x10659b[_0x8103('0x6a')][_0x8103('0x6b')],'endConversation':_0x10659b[_0x8103('0x6a')][_0x8103('0x6c')]&&_0x10659b[_0x8103('0x6a')][_0x8103('0x6c')][_0x8103('0x6d')]?_0x10659b[_0x8103('0x6a')][_0x8103('0x6c')][_0x8103('0x6d')]['end_conversation'][_0x8103('0x6e')]:![],'fulfillmentText':_0x10659b[_0x8103('0x6a')][_0x8103('0x6f')],'intentName':_0x10659b[_0x8103('0x6a')][_0x8103('0x70')][_0x8103('0x55')],'intentDisplayName':_0x10659b[_0x8103('0x6a')][_0x8103('0x70')]['displayName'],'isFallbackIntent':_0x10659b['queryResult'][_0x8103('0x70')][_0x8103('0x71')],'languageCode':_0x10659b[_0x8103('0x6a')]['languageCode'],'queryText':_0x10659b[_0x8103('0x6a')][_0x8103('0x72')],'responseId':_0x10659b['responseId'],'score':_0x10659b['queryResult'][_0x8103('0x73')],'speech':_0x10659b[_0x8103('0x6a')][_0x8103('0x6f')],'providerResponse':JSON[_0x8103('0x43')](_0x2f3806)};return _0x80c352;}}});};exports[_0x8103('0x74')]=function(_0x2d1c1e,_0x5c79ee,_0x402709,_0x11edc2){return tilde[_0x8103('0x4c')](_0x2d1c1e,_0x5c79ee,_0x402709,_0x11edc2)['then'](function(_0x5b59a9){try{fs['unlink'](_0x2d1c1e);}catch(_0x593d05){logger[_0x8103('0x13')](_0x593d05);}logger[_0x8103('0x3e')](_0x8103('0x75'),_0x5b59a9[_0x8103('0x76')]);logger[_0x8103('0x3e')](_0x8103('0x77'),_0x5b59a9[_0x8103('0x51')]);return _0x5b59a9;});};exports[_0x8103('0x78')]=function(_0x32f993,_0xa7eaa5,_0x3a8004,_0x1d227f,_0x1e0da2,_0x442105){var _0x5d8ff1=path['resolve'](__dirname,_0x8103('0x37'),rs[_0x8103('0x3b')](0x4)+_0x8103('0x4a'));var _0x18273e;return aws[_0x8103('0x79')](_0x32f993,_0xa7eaa5,_0x3a8004,_0x1d227f,_0x1e0da2,_0x442105,_0x5d8ff1)['then'](function(){_0x18273e=path[_0x8103('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0x8103('0x3c'));return convertFile(_0x5d8ff1,_0x18273e);})[_0x8103('0x2a')](function(){try{fs['unlink'](_0x5d8ff1);fs[_0x8103('0x3a')](_0x18273e,_0x8103('0x3d'));}catch(_0x1e7be2){logger[_0x8103('0x13')](_0x1e7be2);}return _0x18273e['split']('.')[0x0];});};exports[_0x8103('0x7a')]=function(_0x34f881,_0x827f92,_0x165b0f,_0x547f4b,_0x25cc85,_0x250af6){return aws[_0x8103('0x7b')](_0x34f881,_0x827f92,_0x165b0f,_0x547f4b,_0x25cc85,_0x250af6)[_0x8103('0x2a')](function(_0x1b8660){logger[_0x8103('0x3e')](JSON[_0x8103('0x43')](_0x1b8660));return _0x1b8660;});};exports['ispeechTTS']=function(_0x8c1ded,_0x11b2ca,_0x203151,_0x1ced6d){var _0x59df99=util[_0x8103('0x7c')](_0x8103('0x7d'),ISPEECH_API,_0x8c1ded,encodeURIComponent(_0x11b2ca),_0x203151,_0x1ced6d);var _0x4b1e06=path['resolve'](__dirname,_0x8103('0x37'),rs[_0x8103('0x3b')](0x4)+_0x8103('0x4a'));var _0x2bedfb;return downloadFile(_0x59df99,_0x4b1e06)[_0x8103('0x2a')](function(){_0x2bedfb=path['resolve'](__dirname,_0x8103('0x37'),rs[_0x8103('0x3b')](0x4)+_0x8103('0x3c'));return convertFile(_0x4b1e06,_0x2bedfb);})[_0x8103('0x2a')](function(){try{fs[_0x8103('0x1c')](_0x4b1e06);fs[_0x8103('0x3a')](_0x2bedfb,'777');}catch(_0x535ff0){logger[_0x8103('0x13')](_0x535ff0);}return _0x2bedfb[_0x8103('0x2b')]('.')[0x0];});};exports[_0x8103('0x7e')]=function(_0x5cf975,_0x1efe17,_0x6aeb3f,_0x1cee43){var _0x3834b8=util[_0x8103('0x7c')](_0x8103('0x7f'),ISPEECH_API,_0x1efe17,_0x6aeb3f,base64Encode(_0x5cf975),_0x1cee43?util[_0x8103('0x7c')](_0x8103('0x80'),encodeURIComponent(_0x1cee43)):_0x8103('0x81'));return uploadFile(_0x3834b8)[_0x8103('0x2a')](function(_0x5d6ad9){return querystring['parse'](_0x5d6ad9);});};exports[_0x8103('0x82')]=function(_0x388dd7,_0xdd5886){return sestek['nda'](_0x388dd7,_0xdd5886)['then'](function(_0x2da985){logger[_0x8103('0x3e')](JSON[_0x8103('0x43')](_0x2da985));var _0x3c6d21={'speech':_0x2da985['text'],'action':_0x2da985[_0x8103('0x83')]?_0x2da985[_0x8103('0x83')][_0x8103('0x84')]:undefined,'actiondata':_0x2da985[_0x8103('0x83')]?_0x2da985[_0x8103('0x83')][_0x8103('0x85')]:undefined};if(_0x2da985[_0x8103('0x83')]&&_0x2da985[_0x8103('0x83')][_0x8103('0x86')]){return base64Decode(_0x2da985[_0x8103('0x83')][_0x8103('0x86')]['Data'],path[_0x8103('0x27')](__dirname,_0x8103('0x37'),rs[_0x8103('0x3b')](0x4)+_0x8103('0x3c')))[_0x8103('0x2a')](function(_0x4cdfec){_0x3c6d21[_0x8103('0x87')]=_0x4cdfec;return _0x3c6d21;});}return _0x3c6d21;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 515e779..2d6ad55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ead=['./nda','exports'];(function(_0x22d3f9,_0x264524){var _0x4749e7=function(_0x4bb53d){while(--_0x4bb53d){_0x22d3f9['push'](_0x22d3f9['shift']());}};_0x4749e7(++_0x264524);}(_0x0ead,0x1b6));var _0xd0ea=function(_0x1fab2b,_0x2d772e){_0x1fab2b=_0x1fab2b-0x0;var _0x40926d=_0x0ead[_0x1fab2b];return _0x40926d;};var nda=require(_0xd0ea('0x0'));module[_0xd0ea('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x95cb=['exports','./nda'];(function(_0x286b27,_0x4a92a7){var _0x91a574=function(_0x53a656){while(--_0x53a656){_0x286b27['push'](_0x286b27['shift']());}};_0x91a574(++_0x4a92a7);}(_0x95cb,0xd9));var _0xb95c=function(_0x20113f,_0x1fd289){_0x20113f=_0x20113f-0x0;var _0x49ba42=_0x95cb[_0x20113f];return _0x49ba42;};var nda=require(_0xb95c('0x0'));module[_0xb95c('0x1')]={'nda':nda};
\ No newline at end of file
index 4550eaa..d1fc9db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a62=['project','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action_data','CustomActionData','info','stringify','url','../../../../../config/logger','exports','POST','resolve','ndauth_url','/token','password','username','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','extension','text','body','channelData'];(function(_0x184319,_0x282aee){var _0x46c6a4=function(_0x44c0b1){while(--_0x44c0b1){_0x184319['push'](_0x184319['shift']());}};_0x46c6a4(++_0x282aee);}(_0x9a62,0x1bc));var _0x29a6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9a62[_0x57b54c];return _0x59cc19;};'use strict';var rp=require('request-promise');var url=require(_0x29a6('0x0'));var logger=require(_0x29a6('0x1'))('agi');module[_0x29a6('0x2')]=function(_0x2d49a0,_0x585d58){var _0x58a8b3={'method':_0x29a6('0x3'),'uri':url[_0x29a6('0x4')](_0x585d58[_0x29a6('0x5')],_0x29a6('0x6')),'form':{'grant_type':_0x29a6('0x7'),'username':_0x585d58[_0x29a6('0x8')],'password':_0x585d58[_0x29a6('0x7')]},'json':!![]};return rp(_0x58a8b3)['then'](function(_0x5b325a){var _0x72dde2={'method':_0x29a6('0x3'),'uri':url['resolve'](_0x585d58['ndassistant_url'],_0x29a6('0x9')),'body':{'type':_0x585d58[_0x29a6('0xa')]||_0x29a6('0xb'),'channelId':_0x29a6('0xc'),'conversation':{'id':_0x2d49a0[_0x29a6('0xd')]},'from':{'id':_0x2d49a0[_0x29a6('0xe')],'name':_0x2d49a0[_0x29a6('0xf')]},'recipient':{'id':_0x2d49a0['dnid'],'name':_0x2d49a0[_0x29a6('0x10')]},'text':_0x585d58[_0x29a6('0x11')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x5b325a['access_token']},'json':!![]};if(_0x585d58['project']){_0x72dde2[_0x29a6('0x12')][_0x29a6('0x13')]['ProjectName']=_0x585d58[_0x29a6('0x14')];}if(_0x585d58[_0x29a6('0x15')]=='1'){_0x72dde2['body']['channelData'][_0x29a6('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x29a6('0x17')};}if(_0x585d58['custom_action']){_0x72dde2[_0x29a6('0x12')][_0x29a6('0x13')][_0x29a6('0x18')]=_0x585d58['custom_action'];if(_0x585d58[_0x29a6('0x19')]){_0x72dde2[_0x29a6('0x12')][_0x29a6('0x13')][_0x29a6('0x1a')]=_0x585d58[_0x29a6('0x19')];}}logger[_0x29a6('0x1b')](JSON[_0x29a6('0x1c')](_0x72dde2));return rp(_0x72dde2);});};
\ No newline at end of file
+var _0xc577=['username','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','extension','text','Bearer\x20','access_token','project','body','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','CustomActionData','custom_action_data','info','request-promise','agi','exports','POST','resolve','/token','password'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc577,0x172));var _0x7c57=function(_0x251d43,_0xd5a05a){_0x251d43=_0x251d43-0x0;var _0x3d7759=_0xc577[_0x251d43];return _0x3d7759;};'use strict';var rp=require(_0x7c57('0x0'));var url=require('url');var logger=require('../../../../../config/logger')(_0x7c57('0x1'));module[_0x7c57('0x2')]=function(_0xe9a500,_0x2a2415){var _0x3abdb2={'method':_0x7c57('0x3'),'uri':url[_0x7c57('0x4')](_0x2a2415['ndauth_url'],_0x7c57('0x5')),'form':{'grant_type':_0x7c57('0x6'),'username':_0x2a2415[_0x7c57('0x7')],'password':_0x2a2415[_0x7c57('0x6')]},'json':!![]};return rp(_0x3abdb2)[_0x7c57('0x8')](function(_0x4bb81b){var _0x4e5cb2={'method':'POST','uri':url[_0x7c57('0x4')](_0x2a2415['ndassistant_url'],_0x7c57('0x9')),'body':{'type':_0x2a2415[_0x7c57('0xa')]||_0x7c57('0xb'),'channelId':_0x7c57('0xc'),'conversation':{'id':_0xe9a500['uniqueid']},'from':{'id':_0xe9a500[_0x7c57('0xd')],'name':_0xe9a500[_0x7c57('0xe')]},'recipient':{'id':_0xe9a500['dnid'],'name':_0xe9a500[_0x7c57('0xf')]},'text':_0x2a2415[_0x7c57('0x10')],'channelData':{}},'headers':{'Authorization':_0x7c57('0x11')+_0x4bb81b[_0x7c57('0x12')]},'json':!![]};if(_0x2a2415[_0x7c57('0x13')]){_0x4e5cb2[_0x7c57('0x14')][_0x7c57('0x15')]['ProjectName']=_0x2a2415['project'];}if(_0x2a2415['ndagenerate_audio']=='1'){_0x4e5cb2[_0x7c57('0x14')][_0x7c57('0x15')][_0x7c57('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7c57('0x17')};}if(_0x2a2415[_0x7c57('0x18')]){_0x4e5cb2[_0x7c57('0x14')][_0x7c57('0x15')][_0x7c57('0x19')]=_0x2a2415['custom_action'];if(_0x2a2415['custom_action_data']){_0x4e5cb2[_0x7c57('0x14')][_0x7c57('0x15')][_0x7c57('0x1a')]=_0x2a2415[_0x7c57('0x1b')];}}logger[_0x7c57('0x1c')](JSON['stringify'](_0x4e5cb2));return rp(_0x4e5cb2);});};
\ No newline at end of file
index fb497e1..cc17cd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe165=['./lib/api'];(function(_0x4abc8f,_0xef597d){var _0x5d7939=function(_0x145f23){while(--_0x145f23){_0x4abc8f['push'](_0x4abc8f['shift']());}};_0x5d7939(++_0xef597d);}(_0xe165,0x11c));var _0x5e16=function(_0x184eaa,_0x4843da){_0x184eaa=_0x184eaa-0x0;var _0x5c247c=_0xe165[_0x184eaa];return _0x5c247c;};'use strict';var asr=require(_0x5e16('0x0'));module['exports']=function(_0x140743,_0x4e1678,_0xb0d955,_0x313c40){return asr(_0x140743,_0x4e1678,_0xb0d955,_0x313c40);};
\ No newline at end of file
+var _0xfb1a=['./lib/api','exports'];(function(_0x49ebed,_0x2ed245){var _0x247194=function(_0x5384b9){while(--_0x5384b9){_0x49ebed['push'](_0x49ebed['shift']());}};_0x247194(++_0x2ed245);}(_0xfb1a,0xf0));var _0xafb1=function(_0xa09851,_0x46ec5e){_0xa09851=_0xa09851-0x0;var _0xc5e910=_0xfb1a[_0xa09851];return _0xc5e910;};'use strict';var asr=require(_0xafb1('0x0'));module[_0xafb1('0x1')]=function(_0x301066,_0x1b8401,_0x538064,_0x473682){return asr(_0x301066,_0x1b8401,_0x538064,_0x473682);};
\ No newline at end of file
index 9daba08..e3950ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11c2=['send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','crypto','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','hex','Open\x20Tilde\x20ASR\x20socket','unix'];(function(_0x1a6e19,_0x3d67f0){var _0x122bc2=function(_0x2ae2dc){while(--_0x2ae2dc){_0x1a6e19['push'](_0x1a6e19['shift']());}};_0x122bc2(++_0x3d67f0);}(_0x11c2,0xbd));var _0x211c=function(_0x5b1f5e,_0x4a0667){_0x5b1f5e=_0x5b1f5e-0x0;var _0xa97ade=_0x11c2[_0x5b1f5e];return _0xa97ade;};'use strict';var BPromise=require(_0x211c('0x0'));var _=require(_0x211c('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x211c('0x2'));var crypto=require(_0x211c('0x3'));var logger=require('../../../../../../config/logger')(_0x211c('0x4'));module[_0x211c('0x5')]=function(_0x4c5625,_0x5f078b,_0xc382ab,_0x33fd72){return new BPromise(function(_0x5871c2,_0x2119cf){logger[_0x211c('0x6')](_0x211c('0x7'),_0x33fd72||_0x211c('0x8'));var _0x33d5f9=new WebSocket(_0x33fd72||_0x211c('0x8'),{'perMessageDeflate':![]});var _0x52bca3='';var _0x48751c='0';var _0x2f3810='1';var _0x3137b7=_0x211c('0x9');function _0x1021e8(_0x188795){var _0x451037=crypto[_0x211c('0xa')](_0x211c('0xb'));_0x451037[_0x211c('0xc')](_0x188795);return _0x451037['digest'](_0x211c('0xd'));}function _0x1084d1(){try{logger[_0x211c('0x6')](_0x211c('0xe'));var _0x2117d1=moment()[_0x211c('0xf')]();var _0x14d529=_0x1021e8(_0x2117d1+_0x5f078b+_0xc382ab);_0x33d5f9[_0x211c('0x10')](JSON[_0x211c('0x11')]({'appID':_0x5f078b,'timestamp':_0x2117d1,'appKey':_0x14d529}));var _0xed72fd=fs[_0x211c('0x12')](_0x4c5625);_0xed72fd['on'](_0x211c('0x13'),function(_0xfb10b9){_0x33d5f9['send'](_0xfb10b9);});_0xed72fd['on'](_0x211c('0x14'),function(){_0x33d5f9[_0x211c('0x10')]('EOS');});}catch(_0x16b65a){logger[_0x211c('0x15')](_0x211c('0x16'),JSON[_0x211c('0x11')](_0x16b65a));_0x33d5f9[_0x211c('0x17')]();}}function _0x35aa98(_0x25b891){try{if(_0x25b891){var _0x3d3eec=JSON[_0x211c('0x18')](_0x25b891);switch(_0x3d3eec['status']){case 0x0:if(_0x3d3eec['result']){if(_0x3d3eec[_0x211c('0x19')][_0x211c('0x1a')]){logger['info'](_0x211c('0x1b'),JSON[_0x211c('0x11')](_0x3d3eec[_0x211c('0x19')][_0x211c('0x1c')]));_0x52bca3=_0x3d3eec[_0x211c('0x19')][_0x211c('0x1c')][0x0][_0x211c('0x1d')];_0x48751c=_0x3d3eec['result']['hypotheses'][0x0][_0x211c('0x1e')];_0x2f3810='0';_0x3137b7=_0x211c('0x1f');_0x33d5f9[_0x211c('0x17')]();}}break;case 0x1:logger[_0x211c('0x6')](_0x211c('0x9'));_0x2f3810='1';_0x3137b7=_0x211c('0x9');break;case 0x2:logger['info'](_0x211c('0x20'));_0x2f3810='2';_0x3137b7='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x211c('0x6')](_0x211c('0x21'));_0x2f3810='9';_0x3137b7=_0x211c('0x21');break;case 0xa:logger[_0x211c('0x6')]('Authentication\x20failed.');_0x2f3810='10';_0x3137b7=_0x211c('0x22');break;case 0xb:logger['info'](_0x211c('0x23'));_0x2f3810='11';_0x3137b7=_0x211c('0x23');}}}catch(_0xf5147d){logger[_0x211c('0x15')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x211c('0x11')](_0xf5147d));_0x33d5f9[_0x211c('0x17')]();}}function _0x55d4fd(){logger['info']('Close\x20Tilde\x20ASR\x20socket');_0x5871c2({'transcript':_0x52bca3,'confidence':_0x48751c,'status':_0x2f3810,'status_message':_0x3137b7});}function _0x5ba789(_0x891164){logger[_0x211c('0x15')](_0x211c('0x24'));if(!_[_0x211c('0x25')](_0x891164)){logger[_0x211c('0x15')](_[_0x211c('0x26')](_0x891164)?JSON[_0x211c('0x11')](_0x891164):_0x891164);}}_0x33d5f9['on'](_0x211c('0x27'),_0x1084d1);_0x33d5f9['on'](_0x211c('0x28'),_0x35aa98);_0x33d5f9['on'](_0x211c('0x14'),_0x55d4fd);_0x33d5f9['on']('error',_0x5ba789);});};
\ No newline at end of file
+var _0x6368=['Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','close','bluebird','moment','crypto','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','stringify','hypotheses','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x6368,0x115));var _0x8636=function(_0x1ab8fa,_0x538fea){_0x1ab8fa=_0x1ab8fa-0x0;var _0x5c1c17=_0x6368[_0x1ab8fa];return _0x5c1c17;};'use strict';var BPromise=require(_0x8636('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x8636('0x1'));var crypto=require(_0x8636('0x2'));var logger=require('../../../../../../config/logger')(_0x8636('0x3'));module[_0x8636('0x4')]=function(_0x453b1a,_0xac94d7,_0x551b27,_0x1ab3d2){return new BPromise(function(_0x382cf8,_0x5669b1){logger[_0x8636('0x5')](_0x8636('0x6'),_0x1ab3d2||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x39140e=new WebSocket(_0x1ab3d2||_0x8636('0x7'),{'perMessageDeflate':![]});var _0x5f32c1='';var _0x25d82b='0';var _0x3adfce='1';var _0x53a473=_0x8636('0x8');function _0x5e4103(_0xa0b9f1){var _0x2f50b1=crypto[_0x8636('0x9')](_0x8636('0xa'));_0x2f50b1['update'](_0xa0b9f1);return _0x2f50b1['digest'](_0x8636('0xb'));}function _0x4594af(){try{logger[_0x8636('0x5')](_0x8636('0xc'));var _0x49365e=moment()[_0x8636('0xd')]();var _0x208a76=_0x5e4103(_0x49365e+_0xac94d7+_0x551b27);_0x39140e[_0x8636('0xe')](JSON['stringify']({'appID':_0xac94d7,'timestamp':_0x49365e,'appKey':_0x208a76}));var _0x56535e=fs[_0x8636('0xf')](_0x453b1a);_0x56535e['on']('data',function(_0x3f837c){_0x39140e['send'](_0x3f837c);});_0x56535e['on']('close',function(){_0x39140e[_0x8636('0xe')]('EOS');});}catch(_0x1ae2b7){logger[_0x8636('0x10')]('Tilde\x20ASR\x20send\x20error',JSON['stringify'](_0x1ae2b7));_0x39140e[_0x8636('0x11')]();}}function _0x4df696(_0x2850ec){try{if(_0x2850ec){var _0x3b2f46=JSON[_0x8636('0x12')](_0x2850ec);switch(_0x3b2f46[_0x8636('0x13')]){case 0x0:if(_0x3b2f46[_0x8636('0x14')]){if(_0x3b2f46[_0x8636('0x14')][_0x8636('0x15')]){logger[_0x8636('0x5')](_0x8636('0x16'),JSON[_0x8636('0x17')](_0x3b2f46[_0x8636('0x14')][_0x8636('0x18')]));_0x5f32c1=_0x3b2f46[_0x8636('0x14')]['hypotheses'][0x0]['transcript'];_0x25d82b=_0x3b2f46['result'][_0x8636('0x18')][0x0]['likelihood'];_0x3adfce='0';_0x53a473=_0x8636('0x19');_0x39140e[_0x8636('0x11')]();}}break;case 0x1:logger[_0x8636('0x5')](_0x8636('0x8'));_0x3adfce='1';_0x53a473=_0x8636('0x8');break;case 0x2:logger[_0x8636('0x5')](_0x8636('0x1a'));_0x3adfce='2';_0x53a473=_0x8636('0x1a');break;case 0x9:logger[_0x8636('0x5')](_0x8636('0x1b'));_0x3adfce='9';_0x53a473='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x8636('0x5')](_0x8636('0x1c'));_0x3adfce='10';_0x53a473='Authentication\x20failed.';break;case 0xb:logger[_0x8636('0x5')](_0x8636('0x1d'));_0x3adfce='11';_0x53a473=_0x8636('0x1d');}}}catch(_0x6c44a9){logger[_0x8636('0x10')](_0x8636('0x1e'),JSON[_0x8636('0x17')](_0x6c44a9));_0x39140e[_0x8636('0x11')]();}}function _0x45a955(){logger['info'](_0x8636('0x1f'));_0x382cf8({'transcript':_0x5f32c1,'confidence':_0x25d82b,'status':_0x3adfce,'status_message':_0x53a473});}function _0x2983e4(_0x577bea){logger['error'](_0x8636('0x20'));if(!_[_0x8636('0x21')](_0x577bea)){logger[_0x8636('0x10')](_[_0x8636('0x22')](_0x577bea)?JSON['stringify'](_0x577bea):_0x577bea);}}_0x39140e['on'](_0x8636('0x23'),_0x4594af);_0x39140e['on'](_0x8636('0x24'),_0x4df696);_0x39140e['on'](_0x8636('0x25'),_0x45a955);_0x39140e['on'](_0x8636('0x10'),_0x2983e4);});};
\ No newline at end of file
index 83b78e0..d70f788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47de=['./asr','exports'];(function(_0x4edb65,_0x2b2b5a){var _0x3ce96e=function(_0x3f211f){while(--_0x3f211f){_0x4edb65['push'](_0x4edb65['shift']());}};_0x3ce96e(++_0x2b2b5a);}(_0x47de,0xdc));var _0xe47d=function(_0x44657a,_0xce7fb2){_0x44657a=_0x44657a-0x0;var _0x22dc59=_0x47de[_0x44657a];return _0x22dc59;};var asr=require(_0xe47d('0x0'));module[_0xe47d('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x6272=['./asr','exports'];(function(_0x5b3c4b,_0x481b65){var _0x41c1b5=function(_0x2df80d){while(--_0x2df80d){_0x5b3c4b['push'](_0x5b3c4b['shift']());}};_0x41c1b5(++_0x481b65);}(_0x6272,0x198));var _0x2627=function(_0x410703,_0x255edd){_0x410703=_0x410703-0x0;var _0x1c8a02=_0x6272[_0x410703];return _0x1c8a02;};var asr=require(_0x2627('0x0'));module[_0x2627('0x1')]={'asr':asr};
\ No newline at end of file
index f3efc55..6007f97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc7=['connection','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','nextTick','inherits','util','EventEmitter','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening'];(function(_0x3216c6,_0x4f1cb7){var _0x156549=function(_0x16db03){while(--_0x16db03){_0x3216c6['push'](_0x3216c6['shift']());}};_0x156549(++_0x4f1cb7);}(_0x3dc7,0x130));var _0x73dc=function(_0x394f64,_0x39c44f){_0x394f64=_0x394f64-0x0;var _0x59e0f1=_0x3dc7[_0x394f64];return _0x59e0f1;};'use strict';var util=require(_0x73dc('0x0'));var net=require('net');var EventEmitter=require('events')[_0x73dc('0x1')];var AGIError=require(_0x73dc('0x2'));var AGIChannel=require(_0x73dc('0x3'));var AGIServer=function(_0x39c57f,_0x2be234,_0xc390db){var _0x35ce6d=this,_0x39c57f=_0x39c57f||0x11dd,_0x2be234=_0x2be234||_0x73dc('0x4'),_0x16d6fe=null,_0x3aa7bf=0x0;EventEmitter[_0x73dc('0x5')](_0x35ce6d);function _0xd1171b(){if(!_0x39c57f){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError(_0x73dc('0x8')));return![];}_0x16d6fe=net['createServer']();_0x16d6fe[_0x73dc('0x9')](_0x39c57f,_0x2be234);_0x16d6fe['on'](_0x73dc('0xa'),function(){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0xa'));});_0x16d6fe['on'](_0x73dc('0xb'),function(_0x5cd04b){_0x16d6fe[_0x73dc('0xc')](function(_0x139ca8,_0x149881){if(_0x139ca8){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x139ca8));}else if(_0xc390db&&_0xc390db<0x0){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError(_0x73dc('0xd')));_0x5cd04b[_0x73dc('0xe')]();}else if(_0xc390db&&_0xc390db>0x0&&_0xc390db<_0x149881){_0x3aa7bf+=0x1;_0x35ce6d[_0x73dc('0x6')]('error',new AGIError(_0x73dc('0xf'),_0x3aa7bf));_0x5cd04b[_0x73dc('0xe')]();}else{var _0x460130=new AGIChannel(_0x5cd04b);_0x460130['on'](_0x73dc('0x10'),function(){_0x35ce6d[_0x73dc('0x6')]('connection',_0x460130);});}});});_0x16d6fe['on']('error',function(_0x1c844b){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x1c844b[_0x73dc('0x11')]));});_0x16d6fe['on'](_0x73dc('0x12'),function(){_0x35ce6d[_0x73dc('0x6')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x73dc('0x13')](function(){_0xd1171b();});};util[_0x73dc('0x14')](AGIServer,EventEmitter);module['exports']=function(_0x372048,_0x5601a0,_0x5eae4d){return new AGIServer(_0x372048,_0x5601a0,_0x5eae4d);};
\ No newline at end of file
+var _0xf792=['./error','./channel','127.0.0.1','emit','error','E_AGI_ARGUMENT_PORT','createServer','listening','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','net','EventEmitter'];(function(_0x46bb48,_0x4eb49a){var _0x2a8d03=function(_0x451a65){while(--_0x451a65){_0x46bb48['push'](_0x46bb48['shift']());}};_0x2a8d03(++_0x4eb49a);}(_0xf792,0x10f));var _0x2f79=function(_0x43c49b,_0x4e86ba){_0x43c49b=_0x43c49b-0x0;var _0xbdf3b6=_0xf792[_0x43c49b];return _0xbdf3b6;};'use strict';var util=require('util');var net=require(_0x2f79('0x0'));var EventEmitter=require('events')[_0x2f79('0x1')];var AGIError=require(_0x2f79('0x2'));var AGIChannel=require(_0x2f79('0x3'));var AGIServer=function(_0x4e884,_0x39ce93,_0x1f73e7){var _0x1c3c99=this,_0x4e884=_0x4e884||0x11dd,_0x39ce93=_0x39ce93||_0x2f79('0x4'),_0x434b4d=null,_0x1246eb=0x0;EventEmitter['call'](_0x1c3c99);function _0x49e6c4(){if(!_0x4e884){_0x1c3c99[_0x2f79('0x5')](_0x2f79('0x6'),new AGIError(_0x2f79('0x7')));return![];}_0x434b4d=net[_0x2f79('0x8')]();_0x434b4d['listen'](_0x4e884,_0x39ce93);_0x434b4d['on'](_0x2f79('0x9'),function(){_0x1c3c99[_0x2f79('0x5')](_0x2f79('0x9'));});_0x434b4d['on']('connection',function(_0x2c1dac){_0x434b4d['getConnections'](function(_0x31f474,_0x2db467){if(_0x31f474){_0x1c3c99[_0x2f79('0x5')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x31f474));}else if(_0x1f73e7&&_0x1f73e7<0x0){_0x1c3c99[_0x2f79('0x5')]('error',new AGIError(_0x2f79('0xa')));_0x2c1dac[_0x2f79('0xb')]();}else if(_0x1f73e7&&_0x1f73e7>0x0&&_0x1f73e7<_0x2db467){_0x1246eb+=0x1;_0x1c3c99[_0x2f79('0x5')](_0x2f79('0x6'),new AGIError(_0x2f79('0xc'),_0x1246eb));_0x2c1dac[_0x2f79('0xb')]();}else{var _0x3fa7e0=new AGIChannel(_0x2c1dac);_0x3fa7e0['on']('ready',function(){_0x1c3c99['emit'](_0x2f79('0xd'),_0x3fa7e0);});}});});_0x434b4d['on'](_0x2f79('0x6'),function(_0x11aded){_0x1c3c99[_0x2f79('0x5')](_0x2f79('0x6'),new AGIError(_0x2f79('0xe'),_0x11aded[_0x2f79('0xf')]));});_0x434b4d['on'](_0x2f79('0x10'),function(){_0x1c3c99[_0x2f79('0x5')](_0x2f79('0x10'),new AGIError(_0x2f79('0x11')));});}process[_0x2f79('0x12')](function(){_0x49e6c4();});};util[_0x2f79('0x13')](AGIServer,EventEmitter);module[_0x2f79('0x14')]=function(_0x4774c1,_0x4505c7,_0x2389c6){return new AGIServer(_0x4774c1,_0x4505c7,_0x2389c6);};
\ No newline at end of file
index b9c62fc..59df0e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa209=['no\x20trunk\x20selected','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','%s/recordings/%s','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','beep','ispeech\x20%s\x20file\x20created','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','position','recordingFormat','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','sayNumber','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','user','bcc','subject','service','host','secure','authentication','pass','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','Executed\x20command\x20%s\x20%s','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','command','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\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','exports','path','util','lodash','shelljs','randomstring','moment','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','menu','getsecretdigits','channel','rpc','then','name','catch','prototype','getVoiceQueue','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','sendMailMessage','mailRpc','getIntervals','getIntervalById','interval','map','Intervals','format','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','accountcode','dnid','createSquareMessage','uniqueid','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','method','timeout','includes','POST','toUpperCase','body','rawBody','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','computedVariables','sync','uri','url','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','dialogflowV2_project_id','client_email','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_access_key_id','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','hasOwnProperty','replaceObjectAllVariables','recursiveNodeIndex','isArray','isString','replaceAllVariables','saveRestApiResult','isPlainObject','%s.%s','length','setVariable','split','getVariable','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','noop','no\x20text\x20configured','exec','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DIALOGFLOW_%s','dialogflowV2','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','getTrunk','trunk_name'];(function(_0x411e71,_0xf9652){var _0x226ae3=function(_0x1339f6){while(--_0x1339f6){_0x411e71['push'](_0x411e71['shift']());}};_0x226ae3(++_0xf9652);}(_0xa209,0xb6));var _0x9a20=function(_0x3d4a77,_0x10f1a1){_0x3d4a77=_0x3d4a77-0x0;var _0x474f11=_0xa209[_0x3d4a77];return _0x474f11;};'use strict';var fs=require('fs');var path=require(_0x9a20('0x0'));var util=require(_0x9a20('0x1'));var _=require(_0x9a20('0x2'));var sh=require(_0x9a20('0x3'));var odbc=require('odbc')();var rs=require(_0x9a20('0x4'));var moment=require(_0x9a20('0x5'));var Mustache=require('mustache');var rp=require('request-promise');var logger=require(_0x9a20('0x6'))(_0x9a20('0x7'));var config=require(_0x9a20('0x8'));var scripts=require(_0x9a20('0x9'));var FILES_PATH=_0x9a20('0xa');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=[_0x9a20('0xb'),'getdigits',_0x9a20('0xc')];var AGIVertices=function(_0x110cfe,_0x13c152,_0x1f2dd8){this[_0x9a20('0xd')]=_0x110cfe;this[_0x9a20('0xe')]=_0x13c152;this['mailRpc']=_0x1f2dd8;};AGIVertices['prototype']['getVariable']=function(_0x56ef29,_0xcf37f9){this[_0x9a20('0xe')]['getVariableById'](_0x56ef29)[_0x9a20('0xf')](function(_0x2f0263){_0xcf37f9(null,_0x2f0263?_0x2f0263[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x1460b0){_0xcf37f9(_0x1460b0);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x13')]=function(_0x4bf057,_0x39864f){this[_0x9a20('0xe')]['getVoiceQueueById'](_0x4bf057)[_0x9a20('0xf')](function(_0x2793a4){_0x39864f(null,_0x2793a4?_0x2793a4['name']:![]);})[_0x9a20('0x11')](function(_0x19ad57){_0x39864f(_0x19ad57);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x14')]=function(_0x4bbaf5,_0x479b1f){this[_0x9a20('0xe')][_0x9a20('0x15')](_0x4bbaf5)[_0x9a20('0xf')](function(_0x24d930){_0x479b1f(null,_0x24d930?_0x24d930[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x3cc68e){_0x479b1f(_0x3cc68e);});};AGIVertices['prototype'][_0x9a20('0x16')]=function(_0x9eda36,_0x17fdf0){this[_0x9a20('0xe')][_0x9a20('0x17')](_0x9eda36)[_0x9a20('0xf')](function(_0x2f075d){_0x17fdf0(null,_0x2f075d?_0x2f075d[_0x9a20('0x18')]:![]);})['catch'](function(_0xe2ff02){_0x17fdf0(_0xe2ff02);});};AGIVertices['prototype'][_0x9a20('0x19')]=function(_0x486745,_0x145991){this[_0x9a20('0xe')][_0x9a20('0x1a')](_0x486745)['then'](function(_0x5e8ed3){_0x145991(null,_0x5e8ed3?_0x5e8ed3[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x461006){_0x145991(_0x461006);});};AGIVertices[_0x9a20('0x12')]['getTrunk']=function(_0x538212,_0x2b41ab){this[_0x9a20('0xe')][_0x9a20('0x1b')](_0x538212)[_0x9a20('0xf')](function(_0x5c6eda){_0x2b41ab(null,_0x5c6eda?_0x5c6eda[_0x9a20('0x10')]:![]);})['catch'](function(_0x30e678){_0x2b41ab(_0x30e678);});};AGIVertices['prototype'][_0x9a20('0x1c')]=function(_0x538770,_0x2de39a){var _0x341f15=this;this[_0x9a20('0xe')][_0x9a20('0x1d')](_0x538770)[_0x9a20('0xf')](function(_0x5a38af){_0x2de39a(null,_0x5a38af?_0x341f15[_0x9a20('0x1e')](_0x5a38af['save_name']):![]);})[_0x9a20('0x11')](function(_0x26000f){_0x2de39a(_0x26000f);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1f')]=function(_0x32bfae,_0x2cfbc4){this['rpc']['getMailAccountById'](_0x32bfae)[_0x9a20('0xf')](function(_0xe2ea34){_0x2cfbc4(null,_0xe2ea34?_0xe2ea34:![]);})['catch'](function(_0x2d44b6){_0x2cfbc4(_0x2d44b6);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x20')]=function(_0x2ad270,_0x2ea344,_0x30d423){this[_0x9a20('0x21')][_0x9a20('0x20')](_0x2ad270,_0x2ea344)[_0x9a20('0xf')](function(){_0x30d423(null);})['catch'](function(_0xee8c72){_0x30d423(_0xee8c72);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x22')]=function(_0x50d45f,_0x594f12){this[_0x9a20('0xe')][_0x9a20('0x23')](_0x50d45f)[_0x9a20('0xf')](function(_0x2ccd8c){if(_0x2ccd8c){if(_0x2ccd8c['IntervalId']){_0x594f12(null,[_0x2ccd8c[_0x9a20('0x24')]]);}else{_0x594f12(null,_[_0x9a20('0x25')](_0x2ccd8c[_0x9a20('0x26')],_0x9a20('0x24')));}}else{_0x594f12(null,![]);}})[_0x9a20('0x11')](function(_0x4635b2){_0x594f12(_0x4635b2);});};AGIVertices[_0x9a20('0x12')]['getSoundPath']=function(_0x18d157){return util[_0x9a20('0x27')]('%s/sounds/converted/%s',FILES_PATH,_0x18d157);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x28')]=function(_0x2bf202,_0x4abcf8,_0x22a9ed){odbc[_0x9a20('0x29')](_0x2bf202,function(_0x45c68c){if(_0x45c68c){logger[_0x9a20('0x2a')](_0x9a20('0x2b'),_0x45c68c);_0x22a9ed(_0x45c68c);}else{logger[_0x9a20('0x2c')](_0x9a20('0x2d'));odbc[_0x9a20('0x2e')](_0x4abcf8,function(_0x2f9c33,_0x39f2fd){if(_0x2f9c33){logger[_0x9a20('0x2c')]('Error\x20executing\x20query\x20%s',_0x4abcf8);_0x22a9ed(_0x2f9c33);}else{logger[_0x9a20('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x4abcf8);odbc[_0x9a20('0x2f')](function(_0xfb39a3){if(_0xfb39a3){logger['error'](_0x9a20('0x30'),_0xfb39a3);}_0x22a9ed(null,_0x39f2fd);});}});}});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x31')]=function(_0x5bc64e,_0x424b11){this[_0x9a20('0xe')][_0x9a20('0x32')](_0x5bc64e)[_0x9a20('0xf')](function(_0x84a715){_0x424b11(null,_0x84a715?_0x84a715:![]);})[_0x9a20('0x11')](function(_0x343e6a){_0x424b11(_0x343e6a);});};AGIVertices[_0x9a20('0x12')]['createSmsMessage']=function(_0x397d9f,_0x172ec0){this['rpc'][_0x9a20('0x33')](_0x397d9f)[_0x9a20('0xf')](function(_0x511a7f){_0x172ec0(null,_0x511a7f);})['catch'](function(_0x38b80f){_0x172ec0(_0x38b80f);});};AGIVertices['prototype'][_0x9a20('0x34')]=function(_0x48835b,_0x57a7d3,_0x5cabab){this['rpc'][_0x9a20('0x34')]({'uniqueid':this[_0x9a20('0xd')]['uniqueid'],'node':_0x48835b[_0x9a20('0x35')],'application':_0x48835b[_0x9a20('0x36')],'data':_0x57a7d3||null,'project_name':this[_0x9a20('0xd')][_0x9a20('0x37')],'callerid':this[_0x9a20('0xd')][_0x9a20('0x38')]})['then'](function(_0x423182){if(_0x5cabab){_0x5cabab(null,_0x423182);}})[_0x9a20('0x11')](function(_0x5baaeb){if(_0x5cabab){_0x5cabab(_0x5baaeb);}});};AGIVertices['prototype']['createSquareRecording']=function(_0x496078,_0x19cc3b,_0x579ef8,_0x576a72){this[_0x9a20('0xe')][_0x9a20('0x39')]({'uniqueid':this[_0x9a20('0xd')]['uniqueid'],'callerid':this[_0x9a20('0xd')][_0x9a20('0x38')],'calleridname':this['channel'][_0x9a20('0x3a')],'context':this['channel'][_0x9a20('0x3b')],'extension':this[_0x9a20('0xd')][_0x9a20('0x3c')],'priority':this[_0x9a20('0xd')]['priority'],'accountcode':this[_0x9a20('0xd')][_0x9a20('0x3d')],'dnid':this['channel'][_0x9a20('0x3e')],'projectName':this[_0x9a20('0xd')][_0x9a20('0x37')],'saveName':_0x19cc3b,'filename':_0x496078['file']||_0x19cc3b,'savePath':_0x579ef8})[_0x9a20('0xf')](function(_0x28e728){_0x576a72(null,_0x28e728);})[_0x9a20('0x11')](function(_0x40909d){_0x576a72(_0x40909d);});};AGIVertices['prototype'][_0x9a20('0x3f')]=function(_0x36b97c,_0x491bf9,_0x36b024,_0x4736b9,_0x2a2db7){this['rpc'][_0x9a20('0x3f')]({'uniqueid':this[_0x9a20('0xd')][_0x9a20('0x40')],'body':_0x36b97c,'direction':_0x491bf9,'providerName':_0x36b024,'providerResponse':_0x4736b9})[_0x9a20('0xf')](function(_0x81a4ff){if(_0x2a2db7){_0x2a2db7(null,_0x81a4ff);}})['catch'](function(_0x1f955f){if(_0x2a2db7){_0x2a2db7(_0x1f955f);}});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x41')]=function(_0x26f516,_0x4f6800){this['rpc'][_0x9a20('0x41')]({'firstName':_[_0x9a20('0x42')](_0x26f516['name'])||_[_0x9a20('0x43')](_0x26f516[_0x9a20('0x10')])?_0x9a20('0x44')+Math[_0x9a20('0x45')]():_0x26f516[_0x9a20('0x10')],'lastName':_[_0x9a20('0x42')](_0x26f516[_0x9a20('0x46')])||_[_0x9a20('0x43')](_0x26f516['lastName'])?null:_0x26f516['lastName'],'phone':_0x26f516[_0x9a20('0x47')],'ListId':_0x26f516[_0x9a20('0x48')],'scheduledat':_0x26f516[_0x9a20('0x49')],'callbackUniqueid':this[_0x9a20('0xd')][_0x9a20('0x40')],'tags':_0x9a20('0x4a'),'description':_0x9a20('0x4b')+_0x26f516[_0x9a20('0x49')][_0x9a20('0x4c')](),'priority':_0x26f516[_0x9a20('0x4d')]})[_0x9a20('0xf')](function(_0x14a57e){_0x4f6800(null,_0x14a57e);})['catch'](function(_0x5b6e83){_0x4f6800(_0x5b6e83);});};AGIVertices[_0x9a20('0x12')]['getPause']=function(_0x3c254f,_0x8fe00f){this[_0x9a20('0xe')][_0x9a20('0x4e')](_0x3c254f)[_0x9a20('0xf')](function(_0x473dfe){_0x8fe00f(null,_0x473dfe?_0x473dfe[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x5e686e){_0x8fe00f(_0x5e686e);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x4f')]=function(_0x16764a,_0x358c65,_0x34f9e9){var _0x4c6066={'role':_0x9a20('0x50')};_0x4c6066[_0x16764a]=this['channel'][_0x9a20('0x38')];this[_0x9a20('0xe')][_0x9a20('0x4f')](_0x4c6066,_0x358c65,this[_0x9a20('0xd')]['uniqueid'])[_0x9a20('0xf')](function(_0x5d3275){_0x34f9e9(null,_['isNil'](_0x5d3275)?![]:!![]);})[_0x9a20('0x11')](function(_0x4121c6){logger[_0x9a20('0x2a')](_0x4121c6);_0x34f9e9(null,![]);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x51')]=function(_0x1363b2,_0x477410){var _0x4a8a94={'role':_0x9a20('0x50')};_0x4a8a94[_0x1363b2]=this[_0x9a20('0xd')]['callerid'];this[_0x9a20('0xe')][_0x9a20('0x51')](_0x4a8a94)[_0x9a20('0xf')](function(_0x193850){_0x477410(null,_[_0x9a20('0x43')](_0x193850)?![]:!![]);})['catch'](function(_0x4d64e4){logger[_0x9a20('0x2a')](_0x4d64e4);_0x477410(null,![]);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x52')]=function(_0x52b72f,_0x3644a3){var _0x468b36={'role':_0x9a20('0x50')};_0x468b36[_0x52b72f]=this[_0x9a20('0xd')]['callerid'];this[_0x9a20('0xe')][_0x9a20('0x52')](_0x468b36)[_0x9a20('0xf')](function(_0x71e47){_0x3644a3(null,_['isNil'](_0x71e47)?![]:!![]);})['catch'](function(_0x4eed65){logger[_0x9a20('0x2a')](_0x4eed65);_0x3644a3(null,![]);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x53')]=function(_0x408aa1,_0x155e2c){var _0x317b29={'role':_0x9a20('0x50')};_0x317b29[_0x408aa1]=this['channel']['callerid'];var _0x5066ed=_0x408aa1!=_0x9a20('0x54')?util[_0x9a20('0x27')](_0x9a20('0x55'),_0x9a20('0x56'),this[_0x9a20('0xd')][_0x9a20('0x38')]):undefined;this['rpc'][_0x9a20('0x53')](_0x317b29,_0x5066ed)[_0x9a20('0xf')](function(_0x3c598b){_0x155e2c(null,_[_0x9a20('0x43')](_0x3c598b)?![]:!![]);})[_0x9a20('0x11')](function(_0x1a55f1){logger['error'](_0x1a55f1);_0x155e2c(null,![]);});};AGIVertices['prototype'][_0x9a20('0x57')]=function(_0x3cba87,_0x15ea09){sh['exec'](_[_0x9a20('0x58')](_0x3cba87),function(_0x462c4a,_0x3574dc){var _0x57829f=_0x3574dc[_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'');_0x15ea09(null,_0x57829f);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x5a')]=function(_0x335c61,_0x587439){scripts[_0x9a20('0x5a')](_0x335c61[_0x9a20('0x5b')],_0x335c61[_0x9a20('0x5c')]||'text',_0x335c61[_0x9a20('0x5d')],_0x335c61['languageCode']||'en-US',_0x335c61[_0x9a20('0x5e')]||'MALE',_0x335c61[_0x9a20('0x5f')]||_0x9a20('0x60'))[_0x9a20('0xf')](function(_0x35fb13){_0x587439(null,_0x35fb13);})[_0x9a20('0x11')](function(_0x3cba6f){_0x587439(_0x3cba6f);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x61')]=function(_0x599b70,_0x557dcb){scripts[_0x9a20('0x61')](_0x599b70[_0x9a20('0x5d')],_0x599b70[_0x9a20('0x62')]||'en',0x1)[_0x9a20('0xf')](function(_0x59a7ca){_0x557dcb(null,_0x59a7ca);})[_0x9a20('0x11')](function(_0x7e5b10){_0x557dcb(_0x7e5b10);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x63')]=function(_0x36dd34,_0x3abc1e){var _0x34bae5={'uri':_0x36dd34['url'],'method':_0x36dd34[_0x9a20('0x64')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x36dd34['timeout'])==='number'&&parseInt(_0x36dd34[_0x9a20('0x65')])>=0x1?parseInt(_0x36dd34['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x9a20('0x66')]([_0x9a20('0x67'),'PUT'],_0x34bae5[_0x9a20('0x64')][_0x9a20('0x68')]())){try{_0x34bae5[_0x9a20('0x69')]=_0x36dd34[_0x9a20('0x6a')]?JSON[_0x9a20('0x6b')](_0x36dd34[_0x9a20('0x6a')]):{};}catch(_0x483d8c){logger[_0x9a20('0x2a')](_0x9a20('0x6c'),_0x483d8c);}}try{_0x34bae5[_0x9a20('0x6d')]=_0x36dd34[_0x9a20('0x6e')]?JSON[_0x9a20('0x6b')](_0x36dd34[_0x9a20('0x6e')]):{};}catch(_0x5884fb){logger[_0x9a20('0x2a')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5884fb);}if(_0x36dd34['computedVariables']){try{var _0x5bb734=require(_0x36dd34[_0x9a20('0x6f')])[_0x9a20('0x70')](this,_0x34bae5);_0x34bae5[_0x9a20('0x71')]=Mustache['render'](_0x36dd34[_0x9a20('0x72')],_0x5bb734,{},['$$','$$']);if(_0x34bae5[_0x9a20('0x6d')]){_0x34bae5[_0x9a20('0x6d')]=JSON['parse'](Mustache[_0x9a20('0x73')](JSON[_0x9a20('0x74')](_0x34bae5[_0x9a20('0x6d')]),_0x5bb734,{},['$$','$$']));}if(_0x34bae5['body']){_0x34bae5[_0x9a20('0x69')]=JSON[_0x9a20('0x6b')](Mustache['render'](JSON[_0x9a20('0x74')](_0x34bae5[_0x9a20('0x69')]),_0x5bb734,{},['$$','$$']));}}catch(_0x839401){logger['error'](_0x9a20('0x75'),_0x839401);}}rp(_0x34bae5)[_0x9a20('0xf')](function(_0x98b25c){var _0x42fd51={'statusCode':_0x98b25c[_0x9a20('0x76')]||0xc8,'statusMessage':_0x98b25c[_0x9a20('0x77')]||'OK','headers':_0x98b25c[_0x9a20('0x6d')]||{},'body':_0x98b25c[_0x9a20('0x69')]||{}};_0x3abc1e(null,_0x42fd51);})[_0x9a20('0x11')](function(_0x3f7b27){var _0x5cf0bc={'statusCode':_0x3f7b27['statusCode']||0x1f4,'statusMessage':_0x3f7b27[_0x9a20('0x78')]||_0x9a20('0x79'),'headers':_0x3f7b27[_0x9a20('0x7a')]['headers']||{},'body':_0x3f7b27[_0x9a20('0x7a')][_0x9a20('0x69')]||{}};_0x3abc1e(null,_0x5cf0bc);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x7b')]=function(_0xbd0171,_0x179c6c){scripts['googleDialogflow'](this['channel'][_0x9a20('0x40')],_0xbd0171[_0x9a20('0x7c')],_0xbd0171[_0x9a20('0x5d')],_0xbd0171[_0x9a20('0x7d')]||'en')[_0x9a20('0xf')](function(_0x5bd206){_0x179c6c(null,_0x5bd206);})[_0x9a20('0x11')](function(_0x596b7d){_0x179c6c(_0x596b7d);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x7e')]=function(_0x466f0f,_0x4e4878){scripts[_0x9a20('0x7e')](this[_0x9a20('0xd')][_0x9a20('0x40')],_0x466f0f[_0x9a20('0x7f')],_0x466f0f[_0x9a20('0x80')],_0x466f0f['private_key'],_0x466f0f[_0x9a20('0x5d')],_0x466f0f['dialogflowV2_language']||'en')['then'](function(_0x498b88){_0x4e4878(null,_0x498b88);})[_0x9a20('0x11')](function(_0x6b1380){_0x4e4878(_0x6b1380);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x81')]=function(_0x23ed60,_0x3bc945){scripts[_0x9a20('0x81')](this['channel'],_0x23ed60)[_0x9a20('0xf')](function(_0x466177){_0x3bc945(null,_0x466177);})[_0x9a20('0x11')](function(_0x37048e){_0x3bc945(_0x37048e);});};AGIVertices[_0x9a20('0x12')]['ispeechTTS']=function(_0x5022fa,_0x328adc){scripts[_0x9a20('0x82')](_0x5022fa[_0x9a20('0x7c')],_0x5022fa[_0x9a20('0x5d')],_0x5022fa[_0x9a20('0x83')]||_0x9a20('0x84'),_0x5022fa[_0x9a20('0x85')])[_0x9a20('0xf')](function(_0x248efe){_0x328adc(null,_0x248efe);})[_0x9a20('0x11')](function(_0x9cb069){_0x328adc(_0x9cb069);});};AGIVertices[_0x9a20('0x12')]['ispeechASR']=function(_0x3aaef2,_0x5581e4,_0x246779){scripts[_0x9a20('0x86')](_0x5581e4,_0x3aaef2[_0x9a20('0x7c')],_0x3aaef2[_0x9a20('0x87')]||_0x9a20('0x84'),this[_0x9a20('0x88')](_0x3aaef2[_0x9a20('0x89')])?_0x3aaef2['model']:undefined)[_0x9a20('0xf')](function(_0xf670ce){_0x246779(null,_0xf670ce);})[_0x9a20('0x11')](function(_0x4f4d14){_0x246779(_0x4f4d14);});};AGIVertices[_0x9a20('0x12')]['awsPolly']=function(_0x848505,_0x1af040){scripts[_0x9a20('0x8a')](_0x848505['aws_access_key_id'],_0x848505[_0x9a20('0x8b')],_0x848505[_0x9a20('0x8c')],_0x848505[_0x9a20('0x8d')]||'Amy',_0x848505['text'],_0x848505[_0x9a20('0x8e')]||_0x9a20('0x5d'))[_0x9a20('0xf')](function(_0x33d7f1){_0x1af040(null,_0x33d7f1);})[_0x9a20('0x11')](function(_0x4370d1){_0x1af040(_0x4370d1);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x8f')]=function(_0x16baf0,_0x599404){scripts[_0x9a20('0x8f')](this[_0x9a20('0xd')][_0x9a20('0x40')],_0x16baf0[_0x9a20('0x90')],_0x16baf0[_0x9a20('0x8b')],_0x16baf0[_0x9a20('0x91')],_0x16baf0['text'],_0x16baf0[_0x9a20('0x92')])[_0x9a20('0xf')](function(_0xae1dd4){_0x599404(null,_0xae1dd4);})['catch'](function(_0x133931){_0x599404(_0x133931);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x93')]=function(_0x2db680,_0x5ba480,_0x190373){scripts[_0x9a20('0x93')](_0x5ba480,_0x2db680['key'],_0x2db680[_0x9a20('0x94')]||'en-US')[_0x9a20('0xf')](function(_0x51d6c6){_0x190373(null,_0x51d6c6);})[_0x9a20('0x11')](function(_0x3b9e30){_0x190373(_0x3b9e30);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x95')]=function(_0xba6bc5,_0x1a457c,_0x2ffb62){scripts[_0x9a20('0x95')](_0x1a457c,_0xba6bc5[_0x9a20('0x96')],_0xba6bc5['appsecret'],_0xba6bc5[_0x9a20('0x71')])[_0x9a20('0xf')](function(_0x2a72cb){_0x2ffb62(null,_0x2a72cb);})[_0x9a20('0x11')](function(_0x326d4d){_0x2ffb62(_0x326d4d);});};AGIVertices[_0x9a20('0x12')]['clear']=function(_0x34931b){var _0x132a51=_[_0x9a20('0x66')](verticesWithRetry,_0x34931b[_0x9a20('0x36')])?_0x34931b:_['clone'](_0x34931b);for(var _0x413c17 in _0x132a51){if(_0x132a51[_0x9a20('0x97')](_0x413c17)){if(_0x132a51[_0x413c17]&&_['isString'](_0x132a51[_0x413c17])){if(_[_0x9a20('0x66')](recursiveMapAttributes,_0x413c17)){_0x132a51[_0x413c17]=this[_0x9a20('0x98')](_0x132a51[_0x413c17]);}else{_0x132a51[_0x413c17]=this['replaceAllVariables'](_0x132a51[_0x413c17]);}}}}return _0x132a51;};AGIVertices[_0x9a20('0x12')][_0x9a20('0x99')]=function(_0x5823fb){for(var _0x27564e in _0x5823fb){if(_0x5823fb[_0x9a20('0x97')](_0x27564e)){if(_['isPlainObject'](_0x5823fb[_0x27564e])){this[_0x9a20('0x99')](_0x5823fb[_0x27564e]);}else if(_[_0x9a20('0x9a')](_0x5823fb[_0x27564e])){for(var _0x214572=0x0;_0x214572<_0x5823fb[_0x27564e]['length'];_0x214572++){this[_0x9a20('0x99')](_0x5823fb[_0x27564e][_0x214572]);}}else if(_[_0x9a20('0x9b')](_0x5823fb[_0x27564e])){_0x5823fb[_0x27564e]=this[_0x9a20('0x9c')](_0x5823fb[_0x27564e]);}}}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x9d')]=function(_0x477285,_0x3f318e){for(var _0x2e21d0 in _0x477285){if(_0x477285[_0x9a20('0x97')](_0x2e21d0)){if(_[_0x9a20('0x9e')](_0x477285[_0x2e21d0])){if(!_[_0x9a20('0x42')](_0x477285[_0x2e21d0])){this['saveRestApiResult'](_0x477285[_0x2e21d0],util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x3f318e,_0x2e21d0));}}else if(_[_0x9a20('0x9a')](_0x477285[_0x2e21d0])){for(var _0x12f47e=0x0;_0x12f47e<_0x477285[_0x2e21d0][_0x9a20('0xa0')];_0x12f47e++){this[_0x9a20('0x9d')](_0x477285[_0x2e21d0][_0x12f47e],util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x3f318e,_0x2e21d0+'['+_0x12f47e+']'));}}else{if(!_['isNil'](_0x477285[_0x2e21d0])){this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x3f318e,_0x2e21d0),_0x477285[_0x2e21d0]);}}}}};AGIVertices[_0x9a20('0x12')]['replaceObjectAllVariables']=function(_0x139be1){try{var _0x1b8ccf=JSON[_0x9a20('0x6b')](_0x139be1);this[_0x9a20('0x99')](_0x1b8ccf);return JSON['stringify'](_0x1b8ccf);}catch(_0x2e4400){return this[_0x9a20('0x9c')](_0x139be1);}};AGIVertices[_0x9a20('0x12')]['replaceAllVariables']=function(_0x486c4a){var _0x182995=_0x486c4a[_0x9a20('0xa2')]('{');for(var _0x378ef1=0x1;_0x378ef1<_0x182995[_0x9a20('0xa0')];_0x378ef1+=0x1){var _0x3960e9=_0x182995[_0x378ef1][_0x9a20('0xa2')]('}');if(_0x3960e9['length']>0x1){_0x486c4a=_0x486c4a['replaceAll']('{'+_0x3960e9[0x0]+'}',this['channel'][_0x9a20('0xa3')](_0x3960e9[0x0])[_0x9a20('0xa4')]||_0x3960e9[0x0]);}}if(_0x182995[_0x9a20('0xa0')]===0x1){return _0x486c4a[_0x9a20('0x4c')]();}return this[_0x9a20('0x9c')](_0x486c4a);};AGIVertices['prototype'][_0x9a20('0xa5')]=function(_0x3ef33b,_0x5a9eb1){var _0x295904=this['channel'][_0x9a20('0xa3')](_0x3ef33b);if(_0x295904[_0x9a20('0xa6')]===-0x1){return _0x295904;}logger['info'](util[_0x9a20('0x27')](_0x9a20('0xa7'),_0x5a9eb1,_0x295904[_0x9a20('0xa4')]));return this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x5a9eb1,_0x295904['extra']);};AGIVertices['prototype'][_0x9a20('0x88')]=function(_0x196527){return _0x196527&&_0x196527!=='0'&&_0x196527!=='-1'&&_0x196527!=='';};AGIVertices[_0x9a20('0x12')][_0x9a20('0xa8')]=function(_0x57f702){this[_0x9a20('0x34')]['sync'](this,_0x57f702,'-');_0x57f702[_0x9a20('0xa9')]=_0x57f702[_0x9a20('0xa8')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x5b4a20){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5b4a20[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x5b4a20[_0x9a20('0x5d')])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0xab'));}var _0x3f2ef0='\x22'+_0x5b4a20[_0x9a20('0x5d')]+'\x22';if(this[_0x9a20('0x88')](_0x5b4a20['options'])){_0x3f2ef0+=','+_0x5b4a20[_0x9a20('0x7a')];}var _0x4927d6=this[_0x9a20('0xd')][_0x9a20('0xac')]('MRCPSynth',_0x3f2ef0);if(_0x4927d6['result']===-0x1){return _0x4927d6;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0xad'),_0x3f2ef0));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xae')]=function(_0x151c84){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x151c84[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x151c84['grammar'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xaf'));}var _0x364e19=_0x151c84[_0x9a20('0xb0')];if(this[_0x9a20('0x88')](_0x151c84[_0x9a20('0x7a')])){_0x364e19+=','+_0x151c84[_0x9a20('0x7a')];}var _0xa3b5e3=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xb1'),_0x364e19);if(_0xa3b5e3[_0x9a20('0xa6')]===-0x1){return _0xa3b5e3;}var _0x54e259=this[_0x9a20('0xa5')](_0x9a20('0xb2'),_0x9a20('0xb3'));if(_0x54e259['result']===-0x1){return _0x54e259;}var _0x155687=this[_0x9a20('0xa5')](_0x9a20('0xb4'),_0x9a20('0xb5'));if(_0x155687['result']===-0x1){return _0x155687;}var _0x5bc00f=this[_0x9a20('0xa5')](_0x9a20('0xb6'),_0x9a20('0xb7'));if(_0x5bc00f[_0x9a20('0xa6')]===-0x1){return _0x5bc00f;}return this[_0x9a20('0xd')]['noop'](util['format'](_0x9a20('0xb8'),_0x364e19));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x7')]=function(_0xfdd963){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xb9'),_0xfdd963[_0x9a20('0x35')]));return this[_0x9a20('0xd')][_0x9a20('0x7')]([_0xfdd963['command'],_0xfdd963[_0x9a20('0xba')]]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0xbb')]=function(_0x40eb1){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x40eb1[_0x9a20('0x35')]));if(this[_0x9a20('0x88')](_0x40eb1[_0x9a20('0x65')])){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xbc'),_0x40eb1[_0x9a20('0x65')]));var _0x95d0bc=this['channel'][_0x9a20('0xbd')](_0x40eb1[_0x9a20('0x65')]);if(_0x95d0bc[_0x9a20('0xa6')]===-0x1){return _0x95d0bc;}}return this[_0x9a20('0xd')][_0x9a20('0xbb')]();};AGIVertices['prototype']['callback']=function(_0x5ff02c){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xbe'),_0x5ff02c[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x5ff02c[_0x9a20('0x48')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x5ff02c,_0x9a20('0xbf'));}_0x5ff02c['scheduledAt']=moment();if(this['isConfigured'](_0x5ff02c[_0x9a20('0xc0')])){_0x5ff02c[_0x9a20('0x49')]=moment()[_0x9a20('0xc1')](_0x5ff02c[_0x9a20('0xc0')],_0x9a20('0xc2'));}if(!this[_0x9a20('0x88')](_0x5ff02c[_0x9a20('0x4d')])){_0x5ff02c['callback_priority']=0x2;}this[_0x9a20('0x41')]['sync'](this,_0x5ff02c);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x5ff02c['phone'],_0x5ff02c['list_id'],_0x5ff02c['scheduledAt']));};AGIVertices[_0x9a20('0x12')]['custom_app']=function(_0x2169e9){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xc3'),_0x2169e9[_0x9a20('0x35')]));var _0x24eaf3=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x2169e9[_0x9a20('0xc4')],_0x2169e9[_0x9a20('0x7a')]);if(_0x24eaf3[_0x9a20('0xa6')]===-0x1){return _0x24eaf3;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format']('Executed\x20command\x20%s\x20%s',_0x2169e9[_0x9a20('0xc4')],_0x2169e9[_0x9a20('0x7a')]));};AGIVertices[_0x9a20('0x12')]['lumenvoxtts']=function(_0x2ef8f7){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xc5'),_0x2ef8f7[_0x9a20('0x35')]));if(!this['isConfigured'](_0x2ef8f7[_0x9a20('0x5d')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}var _0x4d7e8d='\x22'+_0x2ef8f7['text']+'\x22';if(this[_0x9a20('0x88')](_0x2ef8f7[_0x9a20('0x7a')])){_0x4d7e8d+=','+_0x2ef8f7[_0x9a20('0x7a')];}var _0x1399b4=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xc6'),_0x4d7e8d);if(_0x1399b4[_0x9a20('0xa6')]===-0x1){return _0x1399b4;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4d7e8d));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xc7')]=function(_0x36b61b){logger['info'](util[_0x9a20('0x27')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x36b61b[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x36b61b['text'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}var _0x354a6b='\x22'+_0x36b61b[_0x9a20('0x5d')]+'\x22';if(this[_0x9a20('0x88')](_0x36b61b['options'])){_0x354a6b+=','+_0x36b61b[_0x9a20('0x7a')];}var _0x3e20de=this['channel'][_0x9a20('0xac')]('MRCPSynth',_0x354a6b);if(_0x3e20de[_0x9a20('0xa6')]===-0x1){return _0x3e20de;}return this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xad'),_0x354a6b));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xc8')]=function(_0x4f6dda){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xc9'),_0x4f6dda[_0x9a20('0x35')]));if(!this['isConfigured'](_0x4f6dda[_0x9a20('0xb0')])){return this[_0x9a20('0xd')]['noop']('no\x20grammar\x20configured');}var _0x5cd52d=_0x4f6dda[_0x9a20('0xb0')];if(this[_0x9a20('0x88')](_0x4f6dda[_0x9a20('0x7a')])){_0x5cd52d+=','+_0x4f6dda[_0x9a20('0x7a')];}var _0x28bf2e=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xb1'),_0x5cd52d);if(_0x28bf2e[_0x9a20('0xa6')]===-0x1){return _0x28bf2e;}var _0xafad7d=this['getAndSetVariable'](_0x9a20('0xb2'),'LUMENVOX_ASR_CONFIDENCE');if(_0xafad7d[_0x9a20('0xa6')]===-0x1){return _0xafad7d;}var _0x919f39=this['getAndSetVariable'](_0x9a20('0xb4'),_0x9a20('0xca'));if(_0x919f39[_0x9a20('0xa6')]===-0x1){return _0x919f39;}var _0x12ed8f=this[_0x9a20('0xa5')](_0x9a20('0xb6'),_0x9a20('0xcb'));if(_0x12ed8f['result']===-0x1){return _0x12ed8f;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xb8'),_0x5cd52d));};AGIVertices[_0x9a20('0x12')]['sestekasr']=function(_0x2d0d38){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xcc'),_0x2d0d38[_0x9a20('0x35')]));if(!this['isConfigured'](_0x2d0d38[_0x9a20('0xb0')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xaf'));}var _0x556b6d=_0x2d0d38['grammar'];if(this[_0x9a20('0x88')](_0x2d0d38['options'])){_0x556b6d+=','+_0x2d0d38['options'];}var _0x3f2181=this[_0x9a20('0xd')]['exec'](_0x9a20('0xb1'),_0x556b6d);if(_0x3f2181[_0x9a20('0xa6')]===-0x1){return _0x3f2181;}var _0x11b0be=this[_0x9a20('0xa5')](_0x9a20('0xb2'),_0x9a20('0xcd'));if(_0x11b0be[_0x9a20('0xa6')]===-0x1){return _0x11b0be;}var _0x553752=this['getAndSetVariable'](_0x9a20('0xb4'),_0x9a20('0xce'));if(_0x553752[_0x9a20('0xa6')]===-0x1){return _0x553752;}var _0x5b12d0=this[_0x9a20('0xa5')](_0x9a20('0xb6'),_0x9a20('0xcf'));if(_0x5b12d0[_0x9a20('0xa6')]===-0x1){return _0x5b12d0;}return this[_0x9a20('0xd')]['noop'](util['format'](_0x9a20('0xb8'),_0x556b6d));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xd0')]=function(_0x2568a2){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x2568a2['label']));if(!this[_0x9a20('0x88')](_0x2568a2[_0x9a20('0xd1')])){return this['channel'][_0x9a20('0x2a')](_0x2568a2,_0x9a20('0xd2'));}var _0x3ab68e=this['getSquareOdbc']['sync'](this,_0x2568a2[_0x9a20('0xd1')]);if(!_0x3ab68e){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x2568a2,_0x9a20('0xd3'));}if(!this['isConfigured'](_0x2568a2['query'])){return this['channel'][_0x9a20('0x2a')](_0x2568a2,'no\x20query\x20configured');}var _0x9681e6=_0x2568a2[_0x9a20('0x2e')][_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xd4'),_0x9681e6));var _0x3fe43a=this['getQueryOdbc'][_0x9a20('0x70')](this,_0x3ab68e,_0x9681e6);this['createSquareDetailsReport'][_0x9a20('0x70')](this,_0x2568a2,_0x9681e6);if(!this[_0x9a20('0x88')](_0x2568a2['variable_id'])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0xd5'));}var _0x3a6f8d=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x2568a2[_0x9a20('0xd6')]);if(!_0x3a6f8d){return this[_0x9a20('0xd')]['error'](_0x2568a2,_0x9a20('0xd7'));}var _0x5334b3=this;_0x3fe43a[_0x9a20('0xd8')](function(_0x6b5b6e,_0x487e53){Object['keys'](_0x6b5b6e)[_0x9a20('0xd8')](function(_0x5f1dea){_0x5334b3['channel'][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0xd9'),_0x3a6f8d,_0x487e53,_0x5f1dea),_0x6b5b6e[_0x5f1dea]);});});this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0xda'),_0x3a6f8d),_0x3fe43a['length']);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xdb'),_0x3a6f8d));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xdc')]=function(_0xea1072){logger['debug'](util[_0x9a20('0x27')](_0x9a20('0xdd'),_0xea1072[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0xea1072['sip_id'])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0xea1072,_0x9a20('0xde'));}var _0xc8db3c=this[_0x9a20('0x19')]['sync'](this,_0xea1072[_0x9a20('0xdf')]);if(!_0xc8db3c){return this['channel'][_0x9a20('0x2a')](_0xea1072,_0x9a20('0xe0'));}var _0x46a429=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xe1'),[util['format'](_0x9a20('0xe2'),_0xc8db3c),_0xea1072['timeout'],_0xea1072['opts'],_0xea1072[_0x9a20('0x72')]]);if(_0x46a429[_0x9a20('0xa6')]===-0x1){return _0x46a429;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xe3'),_0x9a20('0xe1')));};AGIVertices['prototype'][_0x9a20('0xe4')]=function(_0x3c4a3f){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0xe5'),_0x3c4a3f['label']));if(!this['isConfigured'](_0x3c4a3f[_0x9a20('0x7c')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xe6'));}if(!this[_0x9a20('0x88')](_0x3c4a3f[_0x9a20('0x5d')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xe7')]=!![];this['createSquareDetailsReport'](_0x3c4a3f);this[_0x9a20('0x3f')](_0x3c4a3f['text'],'in','','');this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0xe8'),_0x3c4a3f[_0x9a20('0x5d')]));var _0x17c4ae=this[_0x9a20('0x7b')]['sync'](this,_0x3c4a3f);if(_0x17c4ae){for(var _0x50cf77 in _0x17c4ae){if(_0x17c4ae[_0x9a20('0x97')](_0x50cf77)){this['channel'][_0x9a20('0xa1')](util['format']('DIALOGFLOW_%s',_0x50cf77['toUpperCase']()),_0x17c4ae[_0x50cf77]);}}this[_0x9a20('0x3f')](_0x17c4ae[_0x9a20('0xe9')],_0x9a20('0xea'),'dialogflow','');return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xeb'),_0x17c4ae[_0x9a20('0xe9')]));}return this['channel']['error'](_0x3c4a3f,_0x9a20('0xec'));};AGIVertices[_0x9a20('0x12')]['dialogflowV2']=function(_0x2c379e){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xed'),_0x2c379e[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0x7f')])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0xee'));}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0x80')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xef'));}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0xf0')])){return this['channel'][_0x9a20('0xaa')]('no\x20private_key\x20configured');}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0xf1')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xf2'));}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0x5d')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20text\x20configured');}this[_0x9a20('0xd')][_0x9a20('0xe7')]=!![];this['createSquareDetailsReport'](_0x2c379e);this[_0x9a20('0x3f')](_0x2c379e['text'],'in','','');this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0xf3'),_0x2c379e[_0x9a20('0x5d')]));var _0x5007bf=this[_0x9a20('0x7e')][_0x9a20('0x70')](this,_0x2c379e);if(_0x5007bf){for(var _0x385f17 in _0x5007bf){if(_0x5007bf[_0x9a20('0x97')](_0x385f17)){if(_0x385f17!==_0x9a20('0xf4')){this[_0x9a20('0xd')][_0x9a20('0xa1')](util['format'](_0x9a20('0xf5'),_0x385f17['toUpperCase']()),_0x5007bf[_0x385f17]);}}}this[_0x9a20('0x3f')](_0x5007bf[_0x9a20('0xe9')],_0x9a20('0xea'),_0x9a20('0xf6'),_0x5007bf['providerResponse']);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xf7'),_0x5007bf[_0x9a20('0xe9')]));}return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x2c379e,_0x9a20('0xf8'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xf9')]=function(_0x56d30f){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x56d30f['label']));if(!this['isConfigured'](_0x56d30f[_0x9a20('0xfa')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xfb'));}if(!this[_0x9a20('0x88')](_0x56d30f['username'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xfc'));}if(!this[_0x9a20('0x88')](_0x56d30f['password'])){return this['channel'][_0x9a20('0xaa')]('no\x20password\x20configured');}if(!this[_0x9a20('0x88')](_0x56d30f[_0x9a20('0xfd')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20text\x20configured');}this['channel'][_0x9a20('0xe7')]=!![];this[_0x9a20('0x34')](_0x56d30f);this[_0x9a20('0x3f')](_0x56d30f[_0x9a20('0x5d')],'in','','');this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xfe'),_0x56d30f['text']));var _0x208901=this[_0x9a20('0x81')][_0x9a20('0x70')](this,_0x56d30f);if(_0x208901){for(var _0x2aa75b in _0x208901){if(_0x208901[_0x9a20('0x97')](_0x2aa75b)){this['channel'][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0xff'),_0x2aa75b['toUpperCase']()),_0x208901[_0x2aa75b]);}}this[_0x9a20('0x3f')](_0x208901[_0x9a20('0xe9')],'out','sesteknda','');if(_0x208901['audiofile']){this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x100'),_0x208901['audiofile']));var _0x363116=this[_0x9a20('0xd')][_0x9a20('0x101')](_0x208901['audiofile']);try{fs[_0x9a20('0x102')](_0x208901['audiofile']+_0x9a20('0x103'));}catch(_0x50750a){logger[_0x9a20('0x2a')](_0x50750a);}return _0x363116;}else{return this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x104'),_0x208901[_0x9a20('0xe9')]));}}return this[_0x9a20('0xd')]['error'](_0x56d30f,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0x9a20('0x12')][_0x9a20('0x105')]=function(_0x5e6b71){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x106'),_0x5e6b71[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['noop'](_0x9a20('0x105'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x107')]=function(_0x4ba5ed){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x108'),_0x4ba5ed[_0x9a20('0x35')]));var _0x116e5b='';if(_0x4ba5ed['trunk_id']){if(!this[_0x9a20('0x88')](_0x4ba5ed[_0x9a20('0x109')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x4ba5ed,'no\x20trunk\x20selected');}else{var _0x3ec7a5=parseInt(_0x4ba5ed[_0x9a20('0x109')],0xa);if(isNaN(_0x3ec7a5)){_0x116e5b=_0x4ba5ed[_0x9a20('0x109')];}else{_0x116e5b=this[_0x9a20('0x10a')][_0x9a20('0x70')](this,_0x4ba5ed[_0x9a20('0x109')]);if(!_0x116e5b){return this['channel'][_0x9a20('0x2a')](_0x4ba5ed,'no\x20trunk\x20found');}}}}else if(_0x4ba5ed['trunk_name']){_0x116e5b=_0x4ba5ed[_0x9a20('0x10b')];}else{return this['channel'][_0x9a20('0x2a')](_0x4ba5ed,_0x9a20('0x10c'));}var _0x3014ba=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xe1'),[util[_0x9a20('0x27')]('SIP/%s/%s',_0x116e5b,_0x4ba5ed[_0x9a20('0x47')]),_0x4ba5ed[_0x9a20('0x65')],_0x4ba5ed[_0x9a20('0x10d')],_0x4ba5ed[_0x9a20('0x72')]]);if(_0x3014ba[_0x9a20('0xa6')]===-0x1){return _0x3014ba;}return this['channel']['noop'](util['format'](_0x9a20('0xe3'),_0x9a20('0xe1')));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x10e')]=function(_0x4a85e3){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x10f'),_0x4a85e3[_0x9a20('0x35')]));return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x10e'));};AGIVertices['prototype']['getdigits']=function(_0x18c2d8){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x18c2d8[_0x9a20('0x35')]));if(_0x18c2d8['retry']===0x0){return this[_0x9a20('0xa8')](_0x18c2d8);}_0x18c2d8[_0x9a20('0xa9')]-=0x1;if(!this['isConfigured'](_0x18c2d8[_0x9a20('0x110')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x18c2d8,'no\x20file\x20audio\x20selected');}var _0x4593d8=this[_0x9a20('0x1c')]['sync'](this,_0x18c2d8['file_id']);if(!_0x4593d8){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x18c2d8,_0x9a20('0x111'));}if(!this[_0x9a20('0x88')](_0x18c2d8['variable_id'])){return this[_0x9a20('0xd')][_0x9a20('0x2a')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x34688f=this[_0x9a20('0xd')][_0x9a20('0x112')](_0x4593d8,_0x18c2d8[_0x9a20('0x113')],_0x18c2d8[_0x9a20('0x114')]);var _0x953fd1=_0x34688f[_0x9a20('0xa6')]?_0x34688f['result'][_0x9a20('0x4c')]():'';logger[_0x9a20('0x2c')](_0x9a20('0x115'),JSON[_0x9a20('0x74')](_0x34688f));if(_0x34688f[_0x9a20('0xa6')]===-0x1){this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x18c2d8,_0x953fd1);return _0x34688f;}else if(_0x34688f[_0x9a20('0xa4')]===_0x9a20('0x65')){_0x34688f[_0x9a20('0xa6')]=_0x953fd1[_0x9a20('0xa0')]>=parseInt(_0x18c2d8[_0x9a20('0x116')])?'x':'i';}else{_0x34688f[_0x9a20('0xa6')]=_0x953fd1[_0x9a20('0xa0')]>=parseInt(_0x18c2d8[_0x9a20('0x116')])&&_0x953fd1[_0x9a20('0xa0')]<=parseInt(_0x18c2d8['maxdigit'])?'x':'i';}var _0xfe6398=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x18c2d8[_0x9a20('0xd6')]);if(!_0xfe6398){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x18c2d8,_0x9a20('0xd7'));}this[_0x9a20('0xd')]['setVariable'](_0xfe6398,_0x953fd1);if(this[_0x9a20('0x88')](_0x18c2d8['hiddendigitsnum'])){var _0xd97a51=parseInt(_0x18c2d8['hiddendigitsnum'],0xa);var _0x50f55a=rs[_0x9a20('0x117')]({'charset':'*','length':_0xd97a51});var _0x396edd=_0x953fd1['length'];if(_0x396edd>0x0){if(_0x396edd>_0xd97a51){this['createSquareDetailsReport']['sync'](this,_0x18c2d8,_0x18c2d8[_0x9a20('0x118')]==='first'?_0x50f55a+_0x953fd1[_0x9a20('0x119')](_0xd97a51):_0x953fd1[_0x9a20('0x119')](0x0,_0x396edd-_0xd97a51)+_0x50f55a);}else{this['createSquareDetailsReport'][_0x9a20('0x70')](this,_0x18c2d8,rs[_0x9a20('0x117')]({'charset':'*','length':_0x396edd}));}}else{this['createSquareDetailsReport']['sync'](this,_0x18c2d8,'');}}else{this[_0x9a20('0x34')]['sync'](this,_0x18c2d8,_0x953fd1);}return _0x34688f;};AGIVertices[_0x9a20('0x12')]['getsecretdigits']=function(_0x4f3d1f){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x11a'),_0x4f3d1f['label']));return this['getdigits'](_0x4f3d1f);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x11b')]=function(_0x350da5){logger['info'](util['format'](_0x9a20('0x11c'),_0x350da5[_0x9a20('0x35')]));this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x350da5,_0x350da5[_0x9a20('0x11d')]);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x11e'),_0x350da5[_0x9a20('0x11d')]));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x11f')]=function(_0x358917){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x120'),_0x358917[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x358917[_0x9a20('0x90')])||!this[_0x9a20('0x88')](_0x358917[_0x9a20('0x8b')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x121'));}if(!this[_0x9a20('0x88')](_0x358917['text'])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x122'),_0x358917[_0x9a20('0x5d')]));var _0x4defff=this['awsPolly'][_0x9a20('0x70')](this,_0x358917);if(_0x4defff){this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x123'),_0x4defff));var _0x1b443f=this[_0x9a20('0xd')]['streamFile'](_0x4defff);try{fs[_0x9a20('0x102')](_0x4defff+_0x9a20('0x103'));}catch(_0x2d1e43){logger[_0x9a20('0x2a')](_0x2d1e43);}return _0x1b443f;}return this['channel'][_0x9a20('0x2a')](_0x358917,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x9a20('0x12')]['awslex']=function(_0x2779a4){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x124'),_0x2779a4[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x2779a4[_0x9a20('0x90')])||!this['isConfigured'](_0x2779a4[_0x9a20('0x8b')])){return this[_0x9a20('0xd')]['noop']('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x2779a4[_0x9a20('0x92')])){return this['channel'][_0x9a20('0xaa')]('no\x20bot\x20name\x20configured');}if(!this[_0x9a20('0x88')](_0x2779a4['text'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xe7')]=!![];this[_0x9a20('0x34')](_0x2779a4);this[_0x9a20('0x3f')](_0x2779a4['text'],'in','','');this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x125'),_0x2779a4[_0x9a20('0x5d')]));var _0x566d03=this[_0x9a20('0x8f')][_0x9a20('0x70')](this,_0x2779a4);if(_0x566d03){for(var _0x4b1a54 in _0x566d03){if(_0x566d03[_0x9a20('0x97')](_0x4b1a54)&&_[_0x9a20('0x9b')](_0x566d03[_0x4b1a54])){this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0x126'),_0x4b1a54[_0x9a20('0x68')]()),_0x566d03[_0x4b1a54]);}}if(_[_0x9a20('0x43')](_0x566d03[_0x9a20('0x78')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x127'));}else{this[_0x9a20('0x3f')](_0x566d03[_0x9a20('0x78')],_0x9a20('0xea'),'amazonlex','');return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Amazon\x20Lex\x20Result\x20%s',_0x566d03[_0x9a20('0x78')]));}}return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x2779a4,_0x9a20('0x128'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x129')]=function(_0x438060){logger['info'](util['format'](_0x9a20('0x12a'),_0x438060[_0x9a20('0x35')],_0x438060[_0x9a20('0x65')]));if(!this[_0x9a20('0x88')](_0x438060[_0x9a20('0x7c')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20key\x20configured');}var _0x5caad0='wav';var _0x2f1c25=util[_0x9a20('0x27')](_0x9a20('0x12b'),FILES_PATH,rs[_0x9a20('0x117')](0x4));var _0x5eafa3=util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x2f1c25,_0x5caad0);var _0x3b5274=!![];if(_0x438060['beep']===_0x9a20('0x12c')){_0x3b5274=![];}var _0x38a62d=this[_0x9a20('0xd')][_0x9a20('0x12d')](_0x2f1c25,_0x5caad0,_0x438060[_0x9a20('0x12e')],_0x438060[_0x9a20('0x65')],undefined,_0x3b5274);if(_0x38a62d[_0x9a20('0xa6')]!==-0x1){this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x12f'),_0x5eafa3));var _0x346eb5=this[_0x9a20('0x93')][_0x9a20('0x70')](this,_0x438060,_0x5eafa3);if(_0x346eb5){for(var _0x161aa8 in _0x346eb5){if(_0x346eb5[_0x9a20('0x97')](_0x161aa8)){this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')]('GOOGLE_ASR_%s',_0x161aa8[_0x9a20('0x68')]()),_0x346eb5[_0x161aa8]);}}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x130'),JSON[_0x9a20('0x74')](_0x346eb5)));}}return _0x38a62d;};AGIVertices[_0x9a20('0x12')][_0x9a20('0x131')]=function(_0x15ef6e){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x132'),_0x15ef6e['label']));if(!this['isConfigured'](_0x15ef6e['appid'])){return this['channel']['noop'](_0x9a20('0x133'));}if(!this[_0x9a20('0x88')](_0x15ef6e['appsecret'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x134'));}var _0x1184a8=_0x9a20('0x135');var _0xfc56de=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x9a20('0x117')](0x4));var _0x4e3e58=util['format'](_0x9a20('0x9f'),_0xfc56de,_0x1184a8);var _0x27c28b=!![];if(_0x15ef6e['beep']==='NOBEEP'){_0x27c28b=![];}var _0x457e10=this[_0x9a20('0xd')][_0x9a20('0x12d')](_0xfc56de,_0x1184a8,_0x15ef6e[_0x9a20('0x12e')],_0x15ef6e[_0x9a20('0x65')],undefined,_0x27c28b);if(_0x457e10['result']!==-0x1){this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x136'),_0x4e3e58));var _0x4a0b97=this[_0x9a20('0x95')][_0x9a20('0x70')](this,_0x15ef6e,_0x4e3e58);if(_0x4a0b97){for(var _0x4f374d in _0x4a0b97){if(_0x4a0b97['hasOwnProperty'](_0x4f374d)){this[_0x9a20('0xd')]['setVariable'](util['format'](_0x9a20('0x137'),_0x4f374d[_0x9a20('0x68')]()),_0x4a0b97[_0x4f374d]);}}return this[_0x9a20('0xd')]['noop'](util['format']('TildeASR\x20Result\x20%s',JSON[_0x9a20('0x74')](_0x4a0b97)));}}return _0x457e10;};AGIVertices['prototype'][_0x9a20('0x138')]=function(_0x5dc591){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x5dc591[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['continueAt'](_0x5dc591[_0x9a20('0x3b')],_0x5dc591['extension'],_0x5dc591[_0x9a20('0x139')]);};AGIVertices['prototype'][_0x9a20('0x13a')]=function(_0x23e990){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x13b'),_0x23e990[_0x9a20('0x35')]));if(!this['isConfigured'](_0x23e990[_0x9a20('0x13c')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x23e990,_0x9a20('0x13d'));}try{var _0x1bd81d=eval(_0x23e990[_0x9a20('0x13c')])?_0x9a20('0x13e'):_0x9a20('0x13f');this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x140'),_0x23e990[_0x9a20('0x13c')],_0x1bd81d));return{'code':0xc8,'result':_0x1bd81d};}catch(_0x5c5112){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x141')]=function(_0x319cd4){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x142'),_0x319cd4[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x319cd4[_0x9a20('0x143')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x319cd4,_0x9a20('0x144'));}var _0x315ce1=this[_0x9a20('0x22')][_0x9a20('0x70')](this,_0x319cd4[_0x9a20('0x143')]);if(!_0x315ce1){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x319cd4,_0x9a20('0x145'));}for(var _0x33ab5b=0x0;_0x33ab5b<_0x315ce1['length'];_0x33ab5b+=0x1){var _0x5b860d=this['channel'][_0x9a20('0xa3')](util[_0x9a20('0x27')](_0x9a20('0x146'),_0x315ce1[_0x33ab5b]));if(_0x5b860d['result']===-0x1){return _0x5b860d;}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],_0x5b860d[_0x9a20('0xa4')]));if(_0x5b860d[_0x9a20('0xa4')]===_0x9a20('0x13e')){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],'true'));this['channel']['noop'](util['format'](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],_0x9a20('0x13e')));return{'code':0xc8,'result':_0x9a20('0x13e')};}else{logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],_0x9a20('0x13f')));this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')]('IFTIME\x20%s\x20%s',_0x315ce1[_0x33ab5b],_0x9a20('0x13f')));}}return{'code':0xc8,'result':_0x9a20('0x13f')};};AGIVertices[_0x9a20('0x12')][_0x9a20('0x148')]=function(_0x4ae6d9){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x4ae6d9['label']));return this[_0x9a20('0xd')][_0x9a20('0x148')]();};AGIVertices[_0x9a20('0x12')][_0x9a20('0x149')]=function(_0xa80e2c){logger['info'](util[_0x9a20('0x27')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0xa80e2c['label']));if(!this[_0x9a20('0x88')](_0xa80e2c[_0x9a20('0x7c')])){return this['channel'][_0x9a20('0xaa')]('no\x20key\x20configured');}var _0x3a94f2=_0x9a20('0x135');var _0x487a1e=util[_0x9a20('0x27')](_0x9a20('0x12b'),FILES_PATH,rs[_0x9a20('0x117')](0x4));var _0x404d02=util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x487a1e,_0x3a94f2);var _0x34f87d=!![];if(_0xa80e2c[_0x9a20('0x14a')]==='NOBEEP'){_0x34f87d=![];}var _0x203b41=this[_0x9a20('0xd')][_0x9a20('0x12d')](_0x487a1e,_0x3a94f2,_0xa80e2c[_0x9a20('0x12e')],_0xa80e2c['timeout'],undefined,_0x34f87d);if(_0x203b41['result']!==-0x1){this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x14b'),_0x404d02));var _0x5102f6=this[_0x9a20('0x86')][_0x9a20('0x70')](this,_0xa80e2c,_0x404d02);if(_0x5102f6){for(var _0x2b9e6d in _0x5102f6){if(_0x5102f6[_0x9a20('0x97')](_0x2b9e6d)){this['channel'][_0x9a20('0xa1')](util[_0x9a20('0x27')]('ISPEECH_ASR_%s',_0x2b9e6d['toUpperCase']()),_0x5102f6[_0x2b9e6d]);}}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('IspeechASR\x20Result\x20%s',JSON[_0x9a20('0x74')](_0x5102f6)));}}return _0x203b41;};AGIVertices['prototype'][_0x9a20('0x14c')]=function(_0x448505){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x14d'),_0x448505[_0x9a20('0x35')]));if(!this['isConfigured'](_0x448505[_0x9a20('0x7c')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xe6'));}if(!this[_0x9a20('0x88')](_0x448505[_0x9a20('0x5d')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Trying\x20ispeech\x20TTS\x20%s',_0x448505['text']));var _0x10cda5=this[_0x9a20('0x82')]['sync'](this,_0x448505);if(_0x10cda5){this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x14b'),_0x10cda5));var _0x4b0d39=this[_0x9a20('0xd')][_0x9a20('0x101')](_0x10cda5,_0x448505['intKey']);try{fs[_0x9a20('0x102')](_0x10cda5+_0x9a20('0x103'));}catch(_0x2b0f4d){logger[_0x9a20('0x2a')](_0x2b0f4d);}return _0x4b0d39;}return this['channel'][_0x9a20('0x2a')](_0x448505,_0x9a20('0x14e'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x14f')]=function(_0x52a417){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x52a417[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x52a417[_0x9a20('0x150')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x52a417,_0x9a20('0x151'));}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this['channel']['callerid'],_0x52a417[_0x9a20('0x150')]));var _0x3e5b87=this[_0x9a20('0x53')][_0x9a20('0x70')](this,_0x52a417[_0x9a20('0x150')]);if(_0x3e5b87){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x52a417['findBy']));this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x153'),this['channel'][_0x9a20('0x38')],_0x52a417[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger['info'](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x52a417[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x52a417[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x156')};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x157')]=function(_0x150a4f){logger['info'](util[_0x9a20('0x27')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x150a4f[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x150a4f[_0x9a20('0x150')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x150a4f,'no\x20find\x20by\x20configured');}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x150a4f[_0x9a20('0x150')]));var _0x430422=this[_0x9a20('0x52')][_0x9a20('0x70')](this,_0x150a4f[_0x9a20('0x150')]);if(_0x430422){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x150a4f['findBy']));this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x153'),this['channel'][_0x9a20('0x38')],_0x150a4f[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x155'),this['channel'][_0x9a20('0x38')],_0x150a4f[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x155'),this[_0x9a20('0xd')]['callerid'],_0x150a4f[_0x9a20('0x150')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x158')]=function(_0x40bea3){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x159'),_0x40bea3[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x40bea3[_0x9a20('0x15a')])){return this['channel'][_0x9a20('0x2a')](_0x40bea3,'no\x20operation\x20configured');}this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x15b'),_0x40bea3[_0x9a20('0x15a')]));var _0x1c6cec=eval(_0x40bea3[_0x9a20('0x15a')]);if(!this[_0x9a20('0x88')](_0x40bea3[_0x9a20('0xd6')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xd5'));}var _0x22bdb8=this[_0x9a20('0xa3')]['sync'](this,_0x40bea3[_0x9a20('0xd6')]);if(!_0x22bdb8){return this['channel'][_0x9a20('0x2a')](_0x40bea3,_0x9a20('0xd7'));}if(_['isArray'](_0x1c6cec)){var _0x458b39=this;_0x1c6cec[_0x9a20('0xd8')](function(_0x11efa5,_0x49bd70){_0x458b39[_0x9a20('0xd')]['setVariable'](util[_0x9a20('0x27')](_0x9a20('0x15c'),_0x22bdb8,_0x49bd70),_0x11efa5);});return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x15d'),_0x22bdb8));}else{return this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x22bdb8,_0x1c6cec);}};AGIVertices[_0x9a20('0x12')][_0x9a20('0xb')]=function(_0x27f2b7){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x15e'),_0x27f2b7[_0x9a20('0x35')]));if(_0x27f2b7[_0x9a20('0xa9')]===0x0){return this[_0x9a20('0xa8')](_0x27f2b7);}_0x27f2b7['retry']-=0x1;if(!this['isConfigured'](_0x27f2b7[_0x9a20('0x110')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x27f2b7,_0x9a20('0x15f'));}var _0x862ff4=this['getSound'][_0x9a20('0x70')](this,_0x27f2b7[_0x9a20('0x110')]);if(!_0x862ff4){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x27f2b7,_0x9a20('0x111'));}var _0x20da13=this['channel'][_0x9a20('0x112')](_0x862ff4,_0x27f2b7[_0x9a20('0x113')],_0x27f2b7[_0x9a20('0x160')]);var _0x5af32e=_0x20da13[_0x9a20('0xa6')];if(_0x20da13[_0x9a20('0xa6')]===-0x1){this[_0x9a20('0x34')]['sync'](this,_0x27f2b7,'-1');return _0x20da13;}else if(_0x20da13[_0x9a20('0xa4')]==='timeout'){_0x20da13[_0x9a20('0xa6')]=_0x20da13['result'][_0x9a20('0xa0')]>0x0?_0x20da13['result']:'t';}else if(_[_0x9a20('0x42')](_0x20da13[_0x9a20('0xa6')])){_0x20da13[_0x9a20('0xa6')]='#';_0x5af32e='#';}if(!this[_0x9a20('0x88')](_0x27f2b7[_0x9a20('0xd6')])){this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x123055=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x27f2b7[_0x9a20('0xd6')]);if(!_0x123055){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x27f2b7,_0x9a20('0xd7'));}this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x123055,_0x5af32e);}this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x27f2b7,_0x5af32e);return _0x20da13;};AGIVertices[_0x9a20('0x12')][_0x9a20('0xaa')]=function(_0x2fccf0){logger['info'](util['format'](_0x9a20('0x161'),_0x2fccf0[_0x9a20('0x35')]));return this['channel'][_0x9a20('0xaa')](_0x2fccf0[_0x9a20('0x162')]||_0x2fccf0['label']);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x163')]=function(_0x1c5d65){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1c5d65[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x1c5d65[_0x9a20('0x150')])){return this[_0x9a20('0xd')]['error'](_0x1c5d65,_0x9a20('0x151'));}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this[_0x9a20('0xd')]['callerid'],_0x1c5d65[_0x9a20('0x150')]));var _0x4b87af=this['getPause'][_0x9a20('0x70')](this,_0x1c5d65[_0x9a20('0x164')]);var _0x546ae4=this[_0x9a20('0x4f')]['sync'](this,_0x1c5d65[_0x9a20('0x150')],_0x4b87af);if(_0x546ae4){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x156')};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x165')]=function(_0x7e296f){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x166'),_0x7e296f[_0x9a20('0x35')]));if(!this['isConfigured'](_0x7e296f[_0x9a20('0x110')])){return this['channel'][_0x9a20('0x2a')](_0x7e296f,_0x9a20('0x15f'));}var _0x33b022=this[_0x9a20('0x1c')][_0x9a20('0x70')](this,_0x7e296f[_0x9a20('0x110')]);if(!_0x33b022){return this[_0x9a20('0xd')]['error'](_0x7e296f,_0x9a20('0x111'));}var _0x525f7d=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0x167'),[_0x33b022,_0x7e296f[_0x9a20('0x10d')]]);if(_0x525f7d['result']===-0x1){return _0x525f7d;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x33b022));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x168')]=function(_0x3f5c3e){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x169'),_0x3f5c3e[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x3f5c3e[_0x9a20('0x16a')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x3f5c3e,'no\x20queue\x20selected');}var _0x2c4ff2='';var _0x536541=parseInt(_0x3f5c3e[_0x9a20('0x16a')],0xa);if(isNaN(_0x536541)){_0x2c4ff2=_0x3f5c3e['queue_id'];}else{_0x2c4ff2=this[_0x9a20('0x13')][_0x9a20('0x70')](this,_0x3f5c3e[_0x9a20('0x16a')]);if(!_0x2c4ff2){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x3f5c3e,_0x9a20('0x16b'));}}var _0x4b01bc='';if(this[_0x9a20('0x88')](_0x3f5c3e[_0x9a20('0x110')])){var _0x246e97=this[_0x9a20('0x1c')]['sync'](this,_0x3f5c3e[_0x9a20('0x110')]);if(_0x246e97){_0x4b01bc=_0x246e97;}}this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x3f5c3e,_0x2c4ff2);if(_0x3f5c3e[_0x9a20('0x10d')][_0x9a20('0x16c')]('x')<0x0){_0x3f5c3e[_0x9a20('0x10d')]+='x';}if(_0x3f5c3e['opts'][_0x9a20('0x16c')]('X')<0x0){_0x3f5c3e[_0x9a20('0x10d')]+='X';}this['channel'][_0x9a20('0xa1')](_0x9a20('0x16d'),_0x2c4ff2?_0x2c4ff2['toLowerCase']():'');var _0x4711ff=this[_0x9a20('0xd')]['exec'](_0x9a20('0x16e'),[_0x2c4ff2,_0x3f5c3e['opts'],_0x3f5c3e[_0x9a20('0x72')],_0x4b01bc,_0x3f5c3e[_0x9a20('0x65')],_0x3f5c3e[_0x9a20('0x7')],_0x3f5c3e['macro'],_0x3f5c3e['gosub'],'',_0x3f5c3e[_0x9a20('0x16f')]]);if(_0x4711ff['result']===-0x1){return _0x4711ff;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Executed\x20command\x20%s\x20%s',_0x9a20('0x16e'),_0x2c4ff2));};AGIVertices[_0x9a20('0x12')]['record']=function(_0x5c2f5b){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x5c2f5b[_0x9a20('0x35')]));var _0x45a6d2=_0x5c2f5b[_0x9a20('0x170')]||'wav';var _0x4e51fd=util['format']('%s_%s',this['channel'][_0x9a20('0x40')],rs['generate'](0x5));var _0x4b43d9=util[_0x9a20('0x27')](_0x9a20('0x171'),FILES_PATH,_0x4e51fd,_0x45a6d2);var _0x4933bd=util[_0x9a20('0x27')](_0x9a20('0x12b'),FILES_PATH,_0x4e51fd);this[_0x9a20('0x39')]['sync'](this,_0x5c2f5b,_0x4e51fd,_0x4b43d9);this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x9a20('0x172'),_0x4e51fd);logger['info'](_0x9a20('0x173'),_0x4933bd,_0x45a6d2,_0x5c2f5b[_0x9a20('0x174')],_0x5c2f5b[_0x9a20('0x65')]);return this[_0x9a20('0xd')][_0x9a20('0x12d')](_0x4933bd,_0x45a6d2,_0x5c2f5b['escape_digits'],_0x5c2f5b[_0x9a20('0x65')],undefined,!![]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x175')]=function(_0x52c9cf){logger['info'](util['format']('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x52c9cf[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x52c9cf[_0x9a20('0x72')])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0x176'));}var _0x27f152=this['restAPI'][_0x9a20('0x70')](this,_0x52c9cf);logger['info'](util['format'](_0x9a20('0x177'),util[_0x9a20('0x178')](_0x27f152,{'showHidden':![],'depth':null})));if(!this[_0x9a20('0x88')](_0x52c9cf[_0x9a20('0xd6')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0x179'));}var _0x3785ba=this['getVariable']['sync'](this,_0x52c9cf[_0x9a20('0xd6')]);if(!_0x3785ba){return this['channel']['error'](_0x52c9cf,_0x9a20('0xd7'));}this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0x17a'),_0x3785ba),_0x27f152[_0x9a20('0x76')]?_0x27f152[_0x9a20('0x76')]:'200');this[_0x9a20('0xd')]['setVariable'](util[_0x9a20('0x27')](_0x9a20('0x17b'),_0x3785ba),_0x27f152[_0x9a20('0x77')]?_0x27f152[_0x9a20('0x77')]:'OK');if(_0x27f152[_0x9a20('0x69')]){try{this[_0x9a20('0x9d')](_0x27f152[_0x9a20('0x69')],_0x3785ba);}catch(_0x475da7){logger[_0x9a20('0x2a')](util[_0x9a20('0x27')](_0x9a20('0x17c'),_0x3785ba));}}return this['channel']['noop'](util[_0x9a20('0x27')]('variable\x20%s\x20set',_0x3785ba));};AGIVertices['prototype'][_0x9a20('0x17d')]=function(_0x362e5c){logger['info'](util['format'](_0x9a20('0x17e'),_0x362e5c[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['sayDigits'](_0x362e5c[_0x9a20('0x17f')][_0x9a20('0x59')](/\s+/g,''),_0x362e5c[_0x9a20('0x174')]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x180')]=function(_0x145cee){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x145cee['label']));return this[_0x9a20('0xd')][_0x9a20('0x181')](_0x145cee['number'][_0x9a20('0x59')](/\s+/g,''),_0x145cee[_0x9a20('0x174')]);};AGIVertices[_0x9a20('0x12')]['sayphonetic']=function(_0x42cb5d){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x42cb5d['label']));return this[_0x9a20('0xd')][_0x9a20('0x182')](_0x42cb5d['text'],_0x42cb5d['escape_digits']);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x183')]=function(_0x30fb42){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x184'),_0x30fb42[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x30fb42[_0x9a20('0x185')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0x186'));}var _0x41a7d2=this[_0x9a20('0x1f')][_0x9a20('0x70')](this,_0x30fb42[_0x9a20('0x185')]);if(!_0x41a7d2||!_0x41a7d2[_0x9a20('0x187')]){return this[_0x9a20('0xd')]['error'](_0x30fb42,_0x9a20('0x188'));}var _0x17ac07={'from':util['format'](_0x9a20('0x189'),_0x41a7d2[_0x9a20('0x10')],_0x41a7d2[_0x9a20('0x18a')]||_0x41a7d2['Smtp'][_0x9a20('0x18b')]),'to':_0x30fb42['to']||'','cc':_0x30fb42['cc']||'','bcc':_0x30fb42[_0x9a20('0x18c')]||'','subject':_0x30fb42[_0x9a20('0x18d')],'html':_0x30fb42['text'],'text':_0x30fb42[_0x9a20('0x5d')]};var _0x1eca8e={'tls':{'rejectUnauthorized':![]}};if(_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x18e')]){_0x1eca8e['service']=_0x41a7d2['Smtp'][_0x9a20('0x18e')];}else{_0x1eca8e[_0x9a20('0x18f')]=_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x18f')];_0x1eca8e['port']=_0x41a7d2[_0x9a20('0x187')]['port'];_0x1eca8e[_0x9a20('0x190')]=_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x190')];}if(_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x191')]){_0x1eca8e['auth']={'user':_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x18b')],'pass':_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x192')]};}if(this[_0x9a20('0x88')](_0x30fb42[_0x9a20('0x193')])){}logger['debug'](_0x9a20('0x194'),JSON[_0x9a20('0x74')](_0x17ac07));this['createSquareDetailsReport']['sync'](this,_0x30fb42,_0x30fb42[_0x9a20('0x185')]);this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x195'),_0x41a7d2[_0x9a20('0x10')]));this[_0x9a20('0x20')]['sync'](this,_0x1eca8e,_0x17ac07);return this[_0x9a20('0xd')]['noop'](_0x9a20('0x196'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x197')]=function(_0x4f2b47){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x4f2b47[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['noop'](_0x9a20('0x198'));};AGIVertices[_0x9a20('0x12')]['sendSMS']=function(_0x37f0e4){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x199'),_0x37f0e4[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x37f0e4['sms_account_id'])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0x19a'));}var _0x45e438=this[_0x9a20('0x31')][_0x9a20('0x70')](this,_0x37f0e4[_0x9a20('0x19b')]);if(!_0x45e438){return this[_0x9a20('0xd')]['error'](_0x37f0e4,_0x9a20('0x19c'));}var _0x3eef86={'body':_0x37f0e4[_0x9a20('0x19d')],'phone':_0x37f0e4['to']||'','SmsAccountId':_0x45e438['id']};logger['debug'](_0x9a20('0x19e'),JSON[_0x9a20('0x74')](_0x3eef86));this['createSquareDetailsReport']['sync'](this,_0x37f0e4,_0x37f0e4[_0x9a20('0x19b')]);this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x19f'),_0x45e438[_0x9a20('0x10')]));this[_0x9a20('0x33')][_0x9a20('0x70')](this,_0x3eef86);return this[_0x9a20('0xd')][_0x9a20('0xaa')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x9a20('0x12')]['set']=function(_0x470f83){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1a0'),_0x470f83[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x470f83['variable_id'])){return this['channel'][_0x9a20('0x2a')](_0x470f83,_0x9a20('0x1a1'));}var _0x19b161=this[_0x9a20('0xa3')]['sync'](this,_0x470f83[_0x9a20('0xd6')]);if(!_0x19b161){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x470f83,_0x9a20('0xd7'));}return this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x19b161,_0x470f83[_0x9a20('0x1a2')]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1a3')]=function(_0x33e182){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1a4'),_0x33e182[_0x9a20('0x35')]));this[_0x9a20('0xd')][_0x9a20('0xaa')]('START\x20CALLY\x20SQUARE');if(_0x33e182[_0x9a20('0xbb')]===_0x9a20('0x1a5')){this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x1a6'));return this[_0x9a20('0xd')]['answer']();}return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x1a7'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1a8')]=function(_0x40902b){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1a9'),_0x40902b['label']));if(!this['isConfigured'](_0x40902b[_0x9a20('0x1aa')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x40902b,_0x9a20('0x1ab'));}var _0x4b645a=this[_0x9a20('0x14')][_0x9a20('0x70')](this,_0x40902b[_0x9a20('0x1aa')]);if(!this[_0x9a20('0x88')](_0x4b645a)){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x40902b,util[_0x9a20('0x27')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x40902b[_0x9a20('0x1aa')]));}if(_0x4b645a===this[_0x9a20('0xd')][_0x9a20('0x37')]){return this['channel'][_0x9a20('0x2a')](_0x40902b,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x9a20('0x34')]['sync'](this,_0x40902b,_0x4b645a);var _0x15c793=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0x1ac'),util['format'](_0x9a20('0x1ad'),config['agi']['host']||'127.0.0.1',_0x4b645a,this[_0x9a20('0xd')]['arg_1']));if(_0x15c793[_0x9a20('0xa6')]===-0x1){return _0x15c793;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x1ae'),'AGI',_0x4b645a));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1af')]=function(_0x8f6ae8){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1b0'),_0x8f6ae8[_0x9a20('0x35')]));var _0x4478e5=this[_0x9a20('0x57')][_0x9a20('0x70')](this,_0x8f6ae8['command']);this['createSquareDetailsReport']['sync'](this,_0x8f6ae8,_0x8f6ae8['command']);if(this[_0x9a20('0x88')](_0x8f6ae8[_0x9a20('0xd6')])){var _0x2d524d=this[_0x9a20('0xa3')]['sync'](this,_0x8f6ae8[_0x9a20('0xd6')]);if(_0x2d524d){this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x2d524d,_0x4478e5);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x1b1'),_0x8f6ae8[_0x9a20('0x1b2')],_0x2d524d));}}return this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x1b3'),_0x8f6ae8[_0x9a20('0x1b2')]));};AGIVertices['prototype'][_0x9a20('0x1b4')]=function(_0x54253c){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1b5'),_0x54253c[_0x9a20('0x35')]));_0x54253c['text']=_0x54253c[_0x9a20('0x5d')][_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a20('0x88')](_0x54253c['apiKey'])){return this['channel']['noop'](_0x9a20('0x1b6'));}if(!this['isConfigured'](_0x54253c[_0x9a20('0x5d')])){return this['channel']['noop'](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x1b7'),_0x54253c[_0x9a20('0x5d')]));var _0x220f94=this[_0x9a20('0x5a')][_0x9a20('0x70')](this,_0x54253c);if(_0x220f94){this[_0x9a20('0xd')]['noop'](util['format']('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x220f94));var _0x30741e=this['channel'][_0x9a20('0x101')](_0x220f94);try{fs[_0x9a20('0x102')](_0x220f94+_0x9a20('0x103'));}catch(_0x321f97){logger['error'](_0x321f97);}return _0x30741e;}return this['channel']['error'](_0x54253c,_0x9a20('0x1b8'));};AGIVertices['prototype'][_0x9a20('0x1b9')]=function(_0x16b111){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x1ba'),_0x16b111[_0x9a20('0x35')]));_0x16b111[_0x9a20('0x5d')]=_0x16b111[_0x9a20('0x5d')][_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a20('0x88')](_0x16b111[_0x9a20('0x5d')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xab'));}this['channel'][_0x9a20('0xaa')](util['format'](_0x9a20('0x1bb'),_0x16b111[_0x9a20('0x5d')]));var _0x35da42=this[_0x9a20('0x61')][_0x9a20('0x70')](this,_0x16b111);if(_0x35da42){this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x1bc'),_0x35da42));var _0x3054d4=this[_0x9a20('0xd')][_0x9a20('0x101')](_0x35da42);try{fs['unlink'](_0x35da42+_0x9a20('0x103'));}catch(_0x5520b8){logger[_0x9a20('0x2a')](_0x5520b8);}return _0x3054d4;}return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x16b111,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x9a20('0x12')]['unpause']=function(_0x5e94ae){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x5e94ae[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x5e94ae[_0x9a20('0x150')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x5e94ae,'no\x20find\x20by\x20configured');}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this[_0x9a20('0xd')]['callerid'],_0x5e94ae[_0x9a20('0x150')]));var _0x4c037d=this['agentUnpause'][_0x9a20('0x70')](this,_0x5e94ae[_0x9a20('0x150')]);if(_0x4c037d){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x5e94ae[_0x9a20('0x150')]));this[_0x9a20('0xd')]['noop'](util['format'](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x5e94ae[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')]['callerid'],_0x5e94ae[_0x9a20('0x150')]));this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x5e94ae[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x156')};}};AGIVertices[_0x9a20('0x12')]['voicemail']=function(_0x11b3da){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x11b3da[_0x9a20('0x35')]));var _0x256e16=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0x1bd'),[_0x11b3da['mailbox'],_0x11b3da[_0x9a20('0x7a')]]);if(_0x256e16['result']===-0x1){return _0x256e16;}return this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x1ae'),'VOICEMAIL',_0x11b3da['mailbox']));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1be')]=function(_0x383729){logger['info'](util['format'](_0x9a20('0x1bf'),_0x383729[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x383729[_0x9a20('0xd6')])){return this['channel'][_0x9a20('0x2a')](_0x383729,'no\x20variable\x20selected');}var _0x1551e4=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x383729['variable_id']);if(!_0x1551e4){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x383729,_0x9a20('0xd7'));}var _0x41f6d5=this[_0x9a20('0xd')][_0x9a20('0xa3')](_0x1551e4);return{'code':0xc8,'result':_0x41f6d5[_0x9a20('0xa4')]?_0x41f6d5[_0x9a20('0xa4')]:'-'};};String[_0x9a20('0x12')][_0x9a20('0x1c0')]=function(_0x5c3978,_0x4c9251){return this[_0x9a20('0xa2')](_0x5c3978)['join'](_0x4c9251);};module[_0x9a20('0x1c1')]=AGIVertices;
\ No newline at end of file
+var _0x2bca=['map','Intervals','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','file','createSquareMessage','createCmContact','isEmpty','callback_','random','isNil','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','format','LOCAL','exec','trim','replace','googleCloudTTS','apiKey','text','languageCode','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','url','method','timeout','number','includes','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_lex_region','googleASR','tildeASR','appid','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','saveRestApiResult','%s.%s','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','setVariable','isConfigured','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','MRCPSynth','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','Executed\x20command\x20MRCPRecog\x20%s','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','SESTEK_ASR_CONFIDENCE','RECOG_INSTANCE()','SESTEK_ASR_INSTANCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','googleDialogflow','DIALOGFLOW_%s','speech','Dialogflow\x20Result\x20%s','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','client_email','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','providerResponse','out','DialogflowV2\x20Result\x20%s','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','ndassistant_url','bot','Trying\x20SestekNDA:\x20%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','.wav','SestekNDA\x20Result\x20%s','end','ext_dial','trunk_id','no\x20trunk\x20selected','trunk_name','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','getData','maxdigit','hiddendigitsnum','hiddendigitspos','substr','generate','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','streamFile','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','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','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','appsecret','wav','%s/recordings/%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','condition','no\x20condition\x20configured','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','success','failure','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','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','getVoiceQueue','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','agi','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','inspect','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','statusMessage','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','sayNumber','sayphonetic','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20configured','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','Smtp','bcc','service','host','port','secure','authentication','auth','user','pass','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','start','Enter\x20in\x20START\x20(%s)\x20block','yes','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','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','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','path','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','mailRpc','prototype','getVariable','getVariableById','then','name','catch','rpc','getSquareProject','getSquareOdbc','getUser','getUserById','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId'];(function(_0x4541b5,_0x7639e0){var _0x3fa342=function(_0x4a869f){while(--_0x4a869f){_0x4541b5['push'](_0x4541b5['shift']());}};_0x3fa342(++_0x7639e0);}(_0x2bca,0x19a));var _0xa2bc=function(_0x13db82,_0x391b15){_0x13db82=_0x13db82-0x0;var _0x12205f=_0x2bca[_0x13db82];return _0x12205f;};'use strict';var fs=require('fs');var path=require(_0xa2bc('0x0'));var util=require('util');var _=require(_0xa2bc('0x1'));var sh=require(_0xa2bc('0x2'));var odbc=require(_0xa2bc('0x3'))();var rs=require(_0xa2bc('0x4'));var moment=require(_0xa2bc('0x5'));var Mustache=require(_0xa2bc('0x6'));var rp=require(_0xa2bc('0x7'));var logger=require(_0xa2bc('0x8'))('agi');var config=require(_0xa2bc('0x9'));var scripts=require(_0xa2bc('0xa'));var FILES_PATH=_0xa2bc('0xb');var recursiveMapAttributes=[_0xa2bc('0xc'),_0xa2bc('0xd')];var verticesWithRetry=[_0xa2bc('0xe'),_0xa2bc('0xf'),_0xa2bc('0x10')];var AGIVertices=function(_0x7d4446,_0x11c4b6,_0x2f1a8b){this[_0xa2bc('0x11')]=_0x7d4446;this['rpc']=_0x11c4b6;this[_0xa2bc('0x12')]=_0x2f1a8b;};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x14')]=function(_0xb521f9,_0x5b58f1){this['rpc'][_0xa2bc('0x15')](_0xb521f9)[_0xa2bc('0x16')](function(_0x227816){_0x5b58f1(null,_0x227816?_0x227816[_0xa2bc('0x17')]:![]);})[_0xa2bc('0x18')](function(_0x18dfe4){_0x5b58f1(_0x18dfe4);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x95a878,_0x514b3e){this[_0xa2bc('0x19')]['getVoiceQueueById'](_0x95a878)['then'](function(_0x55fe83){_0x514b3e(null,_0x55fe83?_0x55fe83[_0xa2bc('0x17')]:![]);})['catch'](function(_0x407fe0){_0x514b3e(_0x407fe0);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1a')]=function(_0x3f2437,_0x51268){this[_0xa2bc('0x19')]['getSquareProjectById'](_0x3f2437)['then'](function(_0x1bde69){_0x51268(null,_0x1bde69?_0x1bde69[_0xa2bc('0x17')]:![]);})[_0xa2bc('0x18')](function(_0x51f466){_0x51268(_0x51f466);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1b')]=function(_0x13758e,_0x2e842d){this[_0xa2bc('0x19')]['getSquareOdbcById'](_0x13758e)[_0xa2bc('0x16')](function(_0x3d8c02){_0x2e842d(null,_0x3d8c02?_0x3d8c02['dsn']:![]);})['catch'](function(_0x1318f9){_0x2e842d(_0x1318f9);});};AGIVertices['prototype'][_0xa2bc('0x1c')]=function(_0x1691ca,_0x25c1a1){this[_0xa2bc('0x19')][_0xa2bc('0x1d')](_0x1691ca)[_0xa2bc('0x16')](function(_0x3e8ba8){_0x25c1a1(null,_0x3e8ba8?_0x3e8ba8[_0xa2bc('0x17')]:![]);})[_0xa2bc('0x18')](function(_0x20d6e1){_0x25c1a1(_0x20d6e1);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1e')]=function(_0x2f7d56,_0x194bf5){this[_0xa2bc('0x19')]['getTrunkById'](_0x2f7d56)['then'](function(_0x2640ed){_0x194bf5(null,_0x2640ed?_0x2640ed[_0xa2bc('0x17')]:![]);})[_0xa2bc('0x18')](function(_0x215ff){_0x194bf5(_0x215ff);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1f')]=function(_0x2cef7b,_0x185dd8){var _0x520010=this;this[_0xa2bc('0x19')][_0xa2bc('0x20')](_0x2cef7b)[_0xa2bc('0x16')](function(_0x38c37f){_0x185dd8(null,_0x38c37f?_0x520010[_0xa2bc('0x21')](_0x38c37f[_0xa2bc('0x22')]):![]);})[_0xa2bc('0x18')](function(_0x5ed8ee){_0x185dd8(_0x5ed8ee);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x23')]=function(_0x5578a8,_0x3ba62d){this[_0xa2bc('0x19')][_0xa2bc('0x24')](_0x5578a8)[_0xa2bc('0x16')](function(_0x3f42e3){_0x3ba62d(null,_0x3f42e3?_0x3f42e3:![]);})[_0xa2bc('0x18')](function(_0x5a1ebd){_0x3ba62d(_0x5a1ebd);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x25')]=function(_0x7fe456,_0x463eec,_0xa6ecc9){this[_0xa2bc('0x12')]['sendMailMessage'](_0x7fe456,_0x463eec)['then'](function(){_0xa6ecc9(null);})[_0xa2bc('0x18')](function(_0x2914a0){_0xa6ecc9(_0x2914a0);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x26')]=function(_0x2508a2,_0x13b255){this['rpc'][_0xa2bc('0x27')](_0x2508a2)[_0xa2bc('0x16')](function(_0x5811f9){if(_0x5811f9){if(_0x5811f9[_0xa2bc('0x28')]){_0x13b255(null,[_0x5811f9['interval']]);}else{_0x13b255(null,_[_0xa2bc('0x29')](_0x5811f9[_0xa2bc('0x2a')],'interval'));}}else{_0x13b255(null,![]);}})[_0xa2bc('0x18')](function(_0x4069b6){_0x13b255(_0x4069b6);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x21')]=function(_0x288f9d){return util['format']('%s/sounds/converted/%s',FILES_PATH,_0x288f9d);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x2b')]=function(_0x4f223d,_0x2f4337,_0x58abf6){odbc[_0xa2bc('0x2c')](_0x4f223d,function(_0x4a8c9b){if(_0x4a8c9b){logger[_0xa2bc('0x2d')](_0xa2bc('0x2e'),_0x4a8c9b);_0x58abf6(_0x4a8c9b);}else{logger['info'](_0xa2bc('0x2f'));odbc['query'](_0x2f4337,function(_0x4954fc,_0x260da3){if(_0x4954fc){logger['info']('Error\x20executing\x20query\x20%s',_0x2f4337);_0x58abf6(_0x4954fc);}else{logger[_0xa2bc('0x30')]('Query\x20executed\x20correctly\x20%s',_0x2f4337);odbc[_0xa2bc('0x31')](function(_0x29d88b){if(_0x29d88b){logger['error'](_0xa2bc('0x32'),_0x29d88b);}_0x58abf6(null,_0x260da3);});}});}});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x33')]=function(_0x55556a,_0x4e1e1e){this[_0xa2bc('0x19')][_0xa2bc('0x34')](_0x55556a)[_0xa2bc('0x16')](function(_0x35aefe){_0x4e1e1e(null,_0x35aefe?_0x35aefe:![]);})[_0xa2bc('0x18')](function(_0x17e9f8){_0x4e1e1e(_0x17e9f8);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x35')]=function(_0x42f490,_0x352ff2){this[_0xa2bc('0x19')][_0xa2bc('0x35')](_0x42f490)[_0xa2bc('0x16')](function(_0x3e02b0){_0x352ff2(null,_0x3e02b0);})['catch'](function(_0x3dc791){_0x352ff2(_0x3dc791);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x36')]=function(_0x2dcb39,_0x32cc8e,_0x435877){this[_0xa2bc('0x19')][_0xa2bc('0x36')]({'uniqueid':this[_0xa2bc('0x11')][_0xa2bc('0x37')],'node':_0x2dcb39[_0xa2bc('0x38')],'application':_0x2dcb39[_0xa2bc('0x39')],'data':_0x32cc8e||null,'project_name':this[_0xa2bc('0x11')][_0xa2bc('0x3a')],'callerid':this[_0xa2bc('0x11')][_0xa2bc('0x3b')]})[_0xa2bc('0x16')](function(_0x253cf7){if(_0x435877){_0x435877(null,_0x253cf7);}})['catch'](function(_0x52262d){if(_0x435877){_0x435877(_0x52262d);}});};AGIVertices['prototype'][_0xa2bc('0x3c')]=function(_0x4edc32,_0x5379ef,_0x2bc42f,_0x42f9d7){this[_0xa2bc('0x19')]['createSquareRecording']({'uniqueid':this[_0xa2bc('0x11')][_0xa2bc('0x37')],'callerid':this['channel'][_0xa2bc('0x3b')],'calleridname':this[_0xa2bc('0x11')][_0xa2bc('0x3d')],'context':this[_0xa2bc('0x11')][_0xa2bc('0x3e')],'extension':this['channel'][_0xa2bc('0x3f')],'priority':this['channel'][_0xa2bc('0x40')],'accountcode':this[_0xa2bc('0x11')][_0xa2bc('0x41')],'dnid':this[_0xa2bc('0x11')]['dnid'],'projectName':this[_0xa2bc('0x11')][_0xa2bc('0x3a')],'saveName':_0x5379ef,'filename':_0x4edc32[_0xa2bc('0x42')]||_0x5379ef,'savePath':_0x2bc42f})['then'](function(_0x1d9e61){_0x42f9d7(null,_0x1d9e61);})[_0xa2bc('0x18')](function(_0x7d73b2){_0x42f9d7(_0x7d73b2);});};AGIVertices['prototype']['createSquareMessage']=function(_0x16f56a,_0x57d9ca,_0x2a1ae1,_0x537b9c,_0x23e66a){this[_0xa2bc('0x19')][_0xa2bc('0x43')]({'uniqueid':this[_0xa2bc('0x11')][_0xa2bc('0x37')],'body':_0x16f56a,'direction':_0x57d9ca,'providerName':_0x2a1ae1,'providerResponse':_0x537b9c})['then'](function(_0x331110){if(_0x23e66a){_0x23e66a(null,_0x331110);}})[_0xa2bc('0x18')](function(_0x5130e7){if(_0x23e66a){_0x23e66a(_0x5130e7);}});};AGIVertices['prototype']['createCmContact']=function(_0x58937c,_0x4b5dae){this[_0xa2bc('0x19')][_0xa2bc('0x44')]({'firstName':_[_0xa2bc('0x45')](_0x58937c[_0xa2bc('0x17')])||_['isNil'](_0x58937c[_0xa2bc('0x17')])?_0xa2bc('0x46')+Math[_0xa2bc('0x47')]():_0x58937c[_0xa2bc('0x17')],'lastName':_[_0xa2bc('0x45')](_0x58937c['lastName'])||_[_0xa2bc('0x48')](_0x58937c[_0xa2bc('0x49')])?null:_0x58937c['lastName'],'phone':_0x58937c[_0xa2bc('0x4a')],'ListId':_0x58937c[_0xa2bc('0x4b')],'scheduledat':_0x58937c['scheduledAt'],'callbackUniqueid':this['channel'][_0xa2bc('0x37')],'tags':_0xa2bc('0x4c'),'description':_0xa2bc('0x4d')+_0x58937c[_0xa2bc('0x4e')][_0xa2bc('0x4f')](),'priority':_0x58937c[_0xa2bc('0x50')]})[_0xa2bc('0x16')](function(_0x5c6d9c){_0x4b5dae(null,_0x5c6d9c);})[_0xa2bc('0x18')](function(_0x3d6345){_0x4b5dae(_0x3d6345);});};AGIVertices['prototype'][_0xa2bc('0x51')]=function(_0x3ad549,_0x321fdf){this[_0xa2bc('0x19')][_0xa2bc('0x52')](_0x3ad549)[_0xa2bc('0x16')](function(_0x550a12){_0x321fdf(null,_0x550a12?_0x550a12['name']:![]);})['catch'](function(_0x284b46){_0x321fdf(_0x284b46);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x53')]=function(_0x350559,_0x5c0eeb,_0x1fdbcc){var _0x2f1fb7={'role':_0xa2bc('0x54')};_0x2f1fb7[_0x350559]=this['channel'][_0xa2bc('0x3b')];this['rpc'][_0xa2bc('0x53')](_0x2f1fb7,_0x5c0eeb,this[_0xa2bc('0x11')][_0xa2bc('0x37')])[_0xa2bc('0x16')](function(_0xc279fa){_0x1fdbcc(null,_['isNil'](_0xc279fa)?![]:!![]);})[_0xa2bc('0x18')](function(_0xd939f1){logger[_0xa2bc('0x2d')](_0xd939f1);_0x1fdbcc(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x2d692d,_0x274001){var _0xc7a8dd={'role':_0xa2bc('0x54')};_0xc7a8dd[_0x2d692d]=this[_0xa2bc('0x11')]['callerid'];this[_0xa2bc('0x19')][_0xa2bc('0x55')](_0xc7a8dd)['then'](function(_0x3d0ce5){_0x274001(null,_['isNil'](_0x3d0ce5)?![]:!![]);})['catch'](function(_0x34e916){logger['error'](_0x34e916);_0x274001(null,![]);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x56')]=function(_0x1a262c,_0x4eb172){var _0x430656={'role':'agent'};_0x430656[_0x1a262c]=this[_0xa2bc('0x11')]['callerid'];this[_0xa2bc('0x19')]['agentLogout'](_0x430656)['then'](function(_0x443e8a){_0x4eb172(null,_[_0xa2bc('0x48')](_0x443e8a)?![]:!![]);})[_0xa2bc('0x18')](function(_0x41c49f){logger['error'](_0x41c49f);_0x4eb172(null,![]);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x57')]=function(_0x23e28c,_0x253dbf){var _0x4d4994={'role':'agent'};_0x4d4994[_0x23e28c]=this[_0xa2bc('0x11')][_0xa2bc('0x3b')];var _0x326588=_0x23e28c!=_0xa2bc('0x58')?util[_0xa2bc('0x59')]('%s/%s@from-sip/n',_0xa2bc('0x5a'),this[_0xa2bc('0x11')]['callerid']):undefined;this[_0xa2bc('0x19')]['agentLogin'](_0x4d4994,_0x326588)['then'](function(_0x5ec9f6){_0x253dbf(null,_['isNil'](_0x5ec9f6)?![]:!![]);})[_0xa2bc('0x18')](function(_0x37d01e){logger[_0xa2bc('0x2d')](_0x37d01e);_0x253dbf(null,![]);});};AGIVertices[_0xa2bc('0x13')]['shellCommand']=function(_0x5e51c,_0x3e37fd){sh[_0xa2bc('0x5b')](_[_0xa2bc('0x5c')](_0x5e51c),function(_0xdd008d,_0x190fc8){var _0x5b84f9=_0x190fc8[_0xa2bc('0x5d')](/(\r\n|\n|\r)/gm,'');_0x3e37fd(null,_0x5b84f9);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x5e')]=function(_0xa7c06c,_0x51667d){scripts['googleCloudTTS'](_0xa7c06c[_0xa2bc('0x5f')],_0xa7c06c['google_cloud_tts_text_type']||_0xa2bc('0x60'),_0xa7c06c['text'],_0xa7c06c[_0xa2bc('0x61')]||'en-US',_0xa7c06c[_0xa2bc('0x62')]||_0xa2bc('0x63'),_0xa7c06c[_0xa2bc('0x64')]||_0xa2bc('0x65'))[_0xa2bc('0x16')](function(_0x3e7120){_0x51667d(null,_0x3e7120);})['catch'](function(_0x2d6dc6){_0x51667d(_0x2d6dc6);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x66')]=function(_0xea8734,_0x465d7c){scripts[_0xa2bc('0x66')](_0xea8734['text'],_0xea8734['google_tts_language']||'en',0x1)[_0xa2bc('0x16')](function(_0xc1b98b){_0x465d7c(null,_0xc1b98b);})[_0xa2bc('0x18')](function(_0x30d347){_0x465d7c(_0x30d347);});};AGIVertices['prototype'][_0xa2bc('0x67')]=function(_0x1d17ce,_0x247935){var _0x57c98a={'uri':_0x1d17ce[_0xa2bc('0x68')],'method':_0x1d17ce[_0xa2bc('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x1d17ce[_0xa2bc('0x6a')])===_0xa2bc('0x6b')&&parseInt(_0x1d17ce['timeout'])>=0x1?parseInt(_0x1d17ce[_0xa2bc('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0xa2bc('0x6c')](['POST',_0xa2bc('0x6d')],_0x57c98a[_0xa2bc('0x69')][_0xa2bc('0x6e')]())){try{_0x57c98a[_0xa2bc('0x6f')]=_0x1d17ce['rawBody']?JSON[_0xa2bc('0x70')](_0x1d17ce['rawBody']):{};}catch(_0xdd2dea){logger['error'](_0xa2bc('0x71'),_0xdd2dea);}}try{_0x57c98a[_0xa2bc('0x72')]=_0x1d17ce['rawHeaders']?JSON['parse'](_0x1d17ce['rawHeaders']):{};}catch(_0xe0ce9a){logger['error'](_0xa2bc('0x73'),_0xe0ce9a);}if(_0x1d17ce[_0xa2bc('0x74')]){try{var _0x1736eb=require(_0x1d17ce[_0xa2bc('0x74')])[_0xa2bc('0x75')](this,_0x57c98a);_0x57c98a[_0xa2bc('0x76')]=Mustache[_0xa2bc('0x77')](_0x1d17ce[_0xa2bc('0x68')],_0x1736eb,{},['$$','$$']);if(_0x57c98a[_0xa2bc('0x72')]){_0x57c98a[_0xa2bc('0x72')]=JSON[_0xa2bc('0x70')](Mustache[_0xa2bc('0x77')](JSON[_0xa2bc('0x78')](_0x57c98a[_0xa2bc('0x72')]),_0x1736eb,{},['$$','$$']));}if(_0x57c98a[_0xa2bc('0x6f')]){_0x57c98a['body']=JSON['parse'](Mustache[_0xa2bc('0x77')](JSON[_0xa2bc('0x78')](_0x57c98a['body']),_0x1736eb,{},['$$','$$']));}}catch(_0x178248){logger[_0xa2bc('0x2d')](_0xa2bc('0x79'),_0x178248);}}rp(_0x57c98a)[_0xa2bc('0x16')](function(_0x4a763b){var _0x2b3835={'statusCode':_0x4a763b[_0xa2bc('0x7a')]||0xc8,'statusMessage':_0x4a763b['statusMessage']||'OK','headers':_0x4a763b[_0xa2bc('0x72')]||{},'body':_0x4a763b[_0xa2bc('0x6f')]||{}};_0x247935(null,_0x2b3835);})['catch'](function(_0x181f33){var _0x5819c9={'statusCode':_0x181f33[_0xa2bc('0x7a')]||0x1f4,'statusMessage':_0x181f33[_0xa2bc('0x7b')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x181f33[_0xa2bc('0x7c')][_0xa2bc('0x72')]||{},'body':_0x181f33['options']['body']||{}};_0x247935(null,_0x5819c9);});};AGIVertices[_0xa2bc('0x13')]['googleDialogflow']=function(_0xc4a096,_0x5417c0){scripts['googleDialogflow'](this[_0xa2bc('0x11')]['uniqueid'],_0xc4a096[_0xa2bc('0x7d')],_0xc4a096['text'],_0xc4a096[_0xa2bc('0x7e')]||'en')[_0xa2bc('0x16')](function(_0x2a44e1){_0x5417c0(null,_0x2a44e1);})[_0xa2bc('0x18')](function(_0x23f70c){_0x5417c0(_0x23f70c);});};AGIVertices['prototype'][_0xa2bc('0x7f')]=function(_0x2e57ca,_0x1ac3fe){scripts[_0xa2bc('0x7f')](this['channel'][_0xa2bc('0x37')],_0x2e57ca[_0xa2bc('0x80')],_0x2e57ca['client_email'],_0x2e57ca[_0xa2bc('0x81')],_0x2e57ca[_0xa2bc('0x60')],_0x2e57ca['dialogflowV2_language']||'en')[_0xa2bc('0x16')](function(_0x31eab3){_0x1ac3fe(null,_0x31eab3);})[_0xa2bc('0x18')](function(_0x2ac5a6){_0x1ac3fe(_0x2ac5a6);});};AGIVertices['prototype']['sestekNDA']=function(_0x260b4b,_0xde3447){scripts[_0xa2bc('0x82')](this['channel'],_0x260b4b)['then'](function(_0x36e7f0){_0xde3447(null,_0x36e7f0);})[_0xa2bc('0x18')](function(_0x489e2b){_0xde3447(_0x489e2b);});};AGIVertices['prototype']['ispeechTTS']=function(_0x73f49b,_0x288e1e){scripts['ispeechTTS'](_0x73f49b[_0xa2bc('0x7d')],_0x73f49b[_0xa2bc('0x60')],_0x73f49b[_0xa2bc('0x83')]||_0xa2bc('0x84'),_0x73f49b[_0xa2bc('0x85')])[_0xa2bc('0x16')](function(_0x2241bc){_0x288e1e(null,_0x2241bc);})[_0xa2bc('0x18')](function(_0x324fd3){_0x288e1e(_0x324fd3);});};AGIVertices[_0xa2bc('0x13')]['ispeechASR']=function(_0x32aa8a,_0x5ab28b,_0x2b578b){scripts[_0xa2bc('0x86')](_0x5ab28b,_0x32aa8a[_0xa2bc('0x7d')],_0x32aa8a[_0xa2bc('0x87')]||'en-US',this['isConfigured'](_0x32aa8a['model'])?_0x32aa8a[_0xa2bc('0x88')]:undefined)[_0xa2bc('0x16')](function(_0x364a96){_0x2b578b(null,_0x364a96);})[_0xa2bc('0x18')](function(_0x38ea47){_0x2b578b(_0x38ea47);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x89')]=function(_0x5a634a,_0x17168c){scripts[_0xa2bc('0x89')](_0x5a634a[_0xa2bc('0x8a')],_0x5a634a[_0xa2bc('0x8b')],_0x5a634a[_0xa2bc('0x8c')],_0x5a634a['aws_polly_voice']||_0xa2bc('0x8d'),_0x5a634a[_0xa2bc('0x60')],_0x5a634a[_0xa2bc('0x8e')]||_0xa2bc('0x60'))['then'](function(_0x419e82){_0x17168c(null,_0x419e82);})[_0xa2bc('0x18')](function(_0x19bf50){_0x17168c(_0x19bf50);});};AGIVertices['prototype'][_0xa2bc('0x8f')]=function(_0x4a2788,_0x57b653){scripts[_0xa2bc('0x8f')](this['channel'][_0xa2bc('0x37')],_0x4a2788[_0xa2bc('0x8a')],_0x4a2788[_0xa2bc('0x8b')],_0x4a2788[_0xa2bc('0x90')],_0x4a2788['text'],_0x4a2788['aws_bot_name'])[_0xa2bc('0x16')](function(_0x2baae3){_0x57b653(null,_0x2baae3);})[_0xa2bc('0x18')](function(_0x28b674){_0x57b653(_0x28b674);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x91')]=function(_0x314738,_0x7b6c34,_0x4520c1){scripts[_0xa2bc('0x91')](_0x7b6c34,_0x314738[_0xa2bc('0x7d')],_0x314738['google_asr_language']||'en-US')[_0xa2bc('0x16')](function(_0x44be7d){_0x4520c1(null,_0x44be7d);})[_0xa2bc('0x18')](function(_0x1f4413){_0x4520c1(_0x1f4413);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x92')]=function(_0x510205,_0x272e81,_0x4e3186){scripts[_0xa2bc('0x92')](_0x272e81,_0x510205[_0xa2bc('0x93')],_0x510205['appsecret'],_0x510205[_0xa2bc('0x76')])[_0xa2bc('0x16')](function(_0x26a7aa){_0x4e3186(null,_0x26a7aa);})[_0xa2bc('0x18')](function(_0x3d3e93){_0x4e3186(_0x3d3e93);});};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x94')]=function(_0x8cea31){var _0x3c0fc8=_[_0xa2bc('0x6c')](verticesWithRetry,_0x8cea31[_0xa2bc('0x39')])?_0x8cea31:_['clone'](_0x8cea31);for(var _0x358ac0 in _0x3c0fc8){if(_0x3c0fc8[_0xa2bc('0x95')](_0x358ac0)){if(_0x3c0fc8[_0x358ac0]&&_[_0xa2bc('0x96')](_0x3c0fc8[_0x358ac0])){if(_[_0xa2bc('0x6c')](recursiveMapAttributes,_0x358ac0)){_0x3c0fc8[_0x358ac0]=this[_0xa2bc('0x97')](_0x3c0fc8[_0x358ac0]);}else{_0x3c0fc8[_0x358ac0]=this[_0xa2bc('0x98')](_0x3c0fc8[_0x358ac0]);}}}}return _0x3c0fc8;};AGIVertices[_0xa2bc('0x13')]['recursiveNodeIndex']=function(_0x1f15fd){for(var _0x456832 in _0x1f15fd){if(_0x1f15fd[_0xa2bc('0x95')](_0x456832)){if(_[_0xa2bc('0x99')](_0x1f15fd[_0x456832])){this[_0xa2bc('0x9a')](_0x1f15fd[_0x456832]);}else if(_[_0xa2bc('0x9b')](_0x1f15fd[_0x456832])){for(var _0x1a8874=0x0;_0x1a8874<_0x1f15fd[_0x456832][_0xa2bc('0x9c')];_0x1a8874++){this[_0xa2bc('0x9a')](_0x1f15fd[_0x456832][_0x1a8874]);}}else if(_['isString'](_0x1f15fd[_0x456832])){_0x1f15fd[_0x456832]=this[_0xa2bc('0x98')](_0x1f15fd[_0x456832]);}}}};AGIVertices['prototype'][_0xa2bc('0x9d')]=function(_0x160d2c,_0x57c5fc){for(var _0x457beb in _0x160d2c){if(_0x160d2c['hasOwnProperty'](_0x457beb)){if(_[_0xa2bc('0x99')](_0x160d2c[_0x457beb])){if(!_[_0xa2bc('0x45')](_0x160d2c[_0x457beb])){this['saveRestApiResult'](_0x160d2c[_0x457beb],util[_0xa2bc('0x59')](_0xa2bc('0x9e'),_0x57c5fc,_0x457beb));}}else if(_[_0xa2bc('0x9b')](_0x160d2c[_0x457beb])){for(var _0xc97893=0x0;_0xc97893<_0x160d2c[_0x457beb]['length'];_0xc97893++){this[_0xa2bc('0x9d')](_0x160d2c[_0x457beb][_0xc97893],util[_0xa2bc('0x59')]('%s.%s',_0x57c5fc,_0x457beb+'['+_0xc97893+']'));}}else{if(!_[_0xa2bc('0x48')](_0x160d2c[_0x457beb])){this['channel']['setVariable'](util['format']('%s.%s',_0x57c5fc,_0x457beb),_0x160d2c[_0x457beb]);}}}}};AGIVertices['prototype'][_0xa2bc('0x97')]=function(_0x48f54d){try{var _0x5581a6=JSON[_0xa2bc('0x70')](_0x48f54d);this[_0xa2bc('0x9a')](_0x5581a6);return JSON[_0xa2bc('0x78')](_0x5581a6);}catch(_0x244b43){return this['replaceAllVariables'](_0x48f54d);}};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x98')]=function(_0x15346f){var _0x4c2a08=_0x15346f[_0xa2bc('0x9f')]('{');for(var _0x4833ee=0x1;_0x4833ee<_0x4c2a08[_0xa2bc('0x9c')];_0x4833ee+=0x1){var _0x5af2af=_0x4c2a08[_0x4833ee][_0xa2bc('0x9f')]('}');if(_0x5af2af['length']>0x1){_0x15346f=_0x15346f[_0xa2bc('0xa0')]('{'+_0x5af2af[0x0]+'}',this[_0xa2bc('0x11')][_0xa2bc('0x14')](_0x5af2af[0x0])[_0xa2bc('0xa1')]||_0x5af2af[0x0]);}}if(_0x4c2a08[_0xa2bc('0x9c')]===0x1){return _0x15346f[_0xa2bc('0x4f')]();}return this[_0xa2bc('0x98')](_0x15346f);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xa2')]=function(_0x50a8ab,_0x1ac7f3){var _0x30ec6a=this[_0xa2bc('0x11')][_0xa2bc('0x14')](_0x50a8ab);if(_0x30ec6a[_0xa2bc('0xa3')]===-0x1){return _0x30ec6a;}logger['info'](util['format'](_0xa2bc('0xa4'),_0x1ac7f3,_0x30ec6a[_0xa2bc('0xa1')]));return this['channel'][_0xa2bc('0xa5')](_0x1ac7f3,_0x30ec6a[_0xa2bc('0xa1')]);};AGIVertices['prototype'][_0xa2bc('0xa6')]=function(_0x49b043){return _0x49b043&&_0x49b043!=='0'&&_0x49b043!=='-1'&&_0x49b043!=='';};AGIVertices[_0xa2bc('0x13')]['maxRetry']=function(_0x280a53){this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x280a53,'-');_0x280a53[_0xa2bc('0xa7')]=_0x280a53[_0xa2bc('0xa8')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xa9')]=function(_0x4f1ad9){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0xaa'),_0x4f1ad9[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x4f1ad9['text'])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xac'));}var _0x14ee19='\x22'+_0x4f1ad9[_0xa2bc('0x60')]+'\x22';if(this[_0xa2bc('0xa6')](_0x4f1ad9['options'])){_0x14ee19+=','+_0x4f1ad9[_0xa2bc('0x7c')];}var _0x3f6500=this['channel'][_0xa2bc('0x5b')](_0xa2bc('0xad'),_0x14ee19);if(_0x3f6500[_0xa2bc('0xa3')]===-0x1){return _0x3f6500;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x14ee19));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xae')]=function(_0x1757f8){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0xaf'),_0x1757f8[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x1757f8[_0xa2bc('0xb0')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20grammar\x20configured');}var _0x351eca=_0x1757f8[_0xa2bc('0xb0')];if(this[_0xa2bc('0xa6')](_0x1757f8['options'])){_0x351eca+=','+_0x1757f8['options'];}var _0x309e17=this[_0xa2bc('0x11')][_0xa2bc('0x5b')](_0xa2bc('0xb1'),_0x351eca);if(_0x309e17[_0xa2bc('0xa3')]===-0x1){return _0x309e17;}var _0x23d792=this[_0xa2bc('0xa2')](_0xa2bc('0xb2'),_0xa2bc('0xb3'));if(_0x23d792[_0xa2bc('0xa3')]===-0x1){return _0x23d792;}var _0xe1076f=this[_0xa2bc('0xa2')]('RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT');if(_0xe1076f[_0xa2bc('0xa3')]===-0x1){return _0xe1076f;}var _0x4b4487=this['getAndSetVariable']('RECOG_INSTANCE()','MRCP_RECOG_INSTANCE');if(_0x4b4487['result']===-0x1){return _0x4b4487;}return this['channel'][_0xa2bc('0xab')](util['format'](_0xa2bc('0xb4'),_0x351eca));};AGIVertices[_0xa2bc('0x13')]['agi']=function(_0x300c8c){logger['info'](util[_0xa2bc('0x59')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x300c8c[_0xa2bc('0x38')]));return this[_0xa2bc('0x11')]['agi']([_0x300c8c[_0xa2bc('0xb5')],_0x300c8c[_0xa2bc('0xb6')]]);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xb7')]=function(_0x49843f){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xb8'),_0x49843f[_0xa2bc('0x38')]));if(this[_0xa2bc('0xa6')](_0x49843f[_0xa2bc('0x6a')])){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xb9'),_0x49843f['timeout']));var _0x21efb2=this['channel'][_0xa2bc('0xba')](_0x49843f[_0xa2bc('0x6a')]);if(_0x21efb2[_0xa2bc('0xa3')]===-0x1){return _0x21efb2;}}return this[_0xa2bc('0x11')][_0xa2bc('0xb7')]();};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x4c')]=function(_0x9d6b32){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xbb'),_0x9d6b32[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x9d6b32[_0xa2bc('0x4b')])){return this['channel']['error'](_0x9d6b32,_0xa2bc('0xbc'));}_0x9d6b32['scheduledAt']=moment();if(this['isConfigured'](_0x9d6b32['delay'])){_0x9d6b32[_0xa2bc('0x4e')]=moment()[_0xa2bc('0xbd')](_0x9d6b32['delay'],_0xa2bc('0xbe'));}if(!this[_0xa2bc('0xa6')](_0x9d6b32[_0xa2bc('0x50')])){_0x9d6b32[_0xa2bc('0x50')]=0x2;}this['createCmContact'][_0xa2bc('0x75')](this,_0x9d6b32);return this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xbf'),_0x9d6b32[_0xa2bc('0x4a')],_0x9d6b32['list_id'],_0x9d6b32[_0xa2bc('0x4e')]));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xc0')]=function(_0x279b5e){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xc1'),_0x279b5e['label']));var _0x3c2f5f=this['channel'][_0xa2bc('0x5b')](_0x279b5e['application'],_0x279b5e['options']);if(_0x3c2f5f[_0xa2bc('0xa3')]===-0x1){return _0x3c2f5f;}return this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')](_0xa2bc('0xc2'),_0x279b5e[_0xa2bc('0xc3')],_0x279b5e[_0xa2bc('0x7c')]));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xc4')]=function(_0x3a224d){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xc5'),_0x3a224d[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x3a224d[_0xa2bc('0x60')])){return this['channel'][_0xa2bc('0xab')]('no\x20text\x20configured');}var _0x2831f1='\x22'+_0x3a224d[_0xa2bc('0x60')]+'\x22';if(this[_0xa2bc('0xa6')](_0x3a224d[_0xa2bc('0x7c')])){_0x2831f1+=','+_0x3a224d[_0xa2bc('0x7c')];}var _0x82584c=this['channel'][_0xa2bc('0x5b')]('MRCPSynth',_0x2831f1);if(_0x82584c['result']===-0x1){return _0x82584c;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xc6'),_0x2831f1));};AGIVertices['prototype']['sestektts']=function(_0x3ba3c9){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xc7'),_0x3ba3c9[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x3ba3c9[_0xa2bc('0x60')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xac'));}var _0x2ce7a5='\x22'+_0x3ba3c9[_0xa2bc('0x60')]+'\x22';if(this['isConfigured'](_0x3ba3c9[_0xa2bc('0x7c')])){_0x2ce7a5+=','+_0x3ba3c9['options'];}var _0x459522=this[_0xa2bc('0x11')][_0xa2bc('0x5b')](_0xa2bc('0xad'),_0x2ce7a5);if(_0x459522['result']===-0x1){return _0x459522;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xc6'),_0x2ce7a5));};AGIVertices[_0xa2bc('0x13')]['lumenvoxasr']=function(_0x14dfc4){logger['info'](util[_0xa2bc('0x59')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x14dfc4[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x14dfc4[_0xa2bc('0xb0')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xc8'));}var _0x5c516a=_0x14dfc4[_0xa2bc('0xb0')];if(this[_0xa2bc('0xa6')](_0x14dfc4['options'])){_0x5c516a+=','+_0x14dfc4[_0xa2bc('0x7c')];}var _0x18015c=this[_0xa2bc('0x11')][_0xa2bc('0x5b')](_0xa2bc('0xb1'),_0x5c516a);if(_0x18015c[_0xa2bc('0xa3')]===-0x1){return _0x18015c;}var _0x5589b3=this[_0xa2bc('0xa2')](_0xa2bc('0xb2'),_0xa2bc('0xc9'));if(_0x5589b3[_0xa2bc('0xa3')]===-0x1){return _0x5589b3;}var _0x16e7b3=this[_0xa2bc('0xa2')]('RECOG_INPUT()',_0xa2bc('0xca'));if(_0x16e7b3['result']===-0x1){return _0x16e7b3;}var _0x3e7b89=this[_0xa2bc('0xa2')]('RECOG_INSTANCE()',_0xa2bc('0xcb'));if(_0x3e7b89[_0xa2bc('0xa3')]===-0x1){return _0x3e7b89;}return this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5c516a));};AGIVertices[_0xa2bc('0x13')]['sestekasr']=function(_0x8ad8e4){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x8ad8e4[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x8ad8e4[_0xa2bc('0xb0')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20grammar\x20configured');}var _0x526f01=_0x8ad8e4[_0xa2bc('0xb0')];if(this[_0xa2bc('0xa6')](_0x8ad8e4['options'])){_0x526f01+=','+_0x8ad8e4[_0xa2bc('0x7c')];}var _0x1ba3bb=this[_0xa2bc('0x11')][_0xa2bc('0x5b')](_0xa2bc('0xb1'),_0x526f01);if(_0x1ba3bb[_0xa2bc('0xa3')]===-0x1){return _0x1ba3bb;}var _0x51f820=this[_0xa2bc('0xa2')](_0xa2bc('0xb2'),_0xa2bc('0xcc'));if(_0x51f820[_0xa2bc('0xa3')]===-0x1){return _0x51f820;}var _0x3ed0f4=this[_0xa2bc('0xa2')]('RECOG_INPUT()','SESTEK_ASR_TRANSCRIPT');if(_0x3ed0f4[_0xa2bc('0xa3')]===-0x1){return _0x3ed0f4;}var _0x1b9712=this[_0xa2bc('0xa2')](_0xa2bc('0xcd'),_0xa2bc('0xce'));if(_0x1b9712[_0xa2bc('0xa3')]===-0x1){return _0x1b9712;}return this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')](_0xa2bc('0xb4'),_0x526f01));};AGIVertices[_0xa2bc('0x13')]['database']=function(_0x1efeb7){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0xcf'),_0x1efeb7[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x1efeb7[_0xa2bc('0xd0')])){return this[_0xa2bc('0x11')]['error'](_0x1efeb7,_0xa2bc('0xd1'));}var _0xcd2103=this['getSquareOdbc'][_0xa2bc('0x75')](this,_0x1efeb7[_0xa2bc('0xd0')]);if(!_0xcd2103){return this[_0xa2bc('0x11')]['error'](_0x1efeb7,_0xa2bc('0xd2'));}if(!this['isConfigured'](_0x1efeb7[_0xa2bc('0xd3')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x1efeb7,'no\x20query\x20configured');}var _0x185d4d=_0x1efeb7[_0xa2bc('0xd3')][_0xa2bc('0x5d')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xd4'),_0x185d4d));var _0x498795=this[_0xa2bc('0x2b')][_0xa2bc('0x75')](this,_0xcd2103,_0x185d4d);this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x1efeb7,_0x185d4d);if(!this[_0xa2bc('0xa6')](_0x1efeb7[_0xa2bc('0xd5')])){return this['channel'][_0xa2bc('0xab')](_0xa2bc('0xd6'));}var _0x17143d=this[_0xa2bc('0x14')]['sync'](this,_0x1efeb7['variable_id']);if(!_0x17143d){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x1efeb7,_0xa2bc('0xd7'));}var _0x3bbc74=this;_0x498795[_0xa2bc('0xd8')](function(_0x14ac20,_0x2d9942){Object[_0xa2bc('0xd9')](_0x14ac20)[_0xa2bc('0xd8')](function(_0x5309ba){_0x3bbc74[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0xda'),_0x17143d,_0x2d9942,_0x5309ba),_0x14ac20[_0x5309ba]);});});this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0xdb'),_0x17143d),_0x498795[_0xa2bc('0x9c')]);return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xdc'),_0x17143d));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xdd')]=function(_0x4db391){logger[_0xa2bc('0xde')](util[_0xa2bc('0x59')](_0xa2bc('0xdf'),_0x4db391[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x4db391[_0xa2bc('0xe0')])){return this[_0xa2bc('0x11')]['error'](_0x4db391,_0xa2bc('0xe1'));}var _0x4779e4=this['getUser'][_0xa2bc('0x75')](this,_0x4db391[_0xa2bc('0xe0')]);if(!_0x4779e4){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x4db391,_0xa2bc('0xe2'));}var _0x2d9bb7=this['channel']['exec'](_0xa2bc('0xe3'),[util[_0xa2bc('0x59')]('SIP/%s',_0x4779e4),_0x4db391[_0xa2bc('0x6a')],_0x4db391[_0xa2bc('0xe4')],_0x4db391['url']]);if(_0x2d9bb7['result']===-0x1){return _0x2d9bb7;}return this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')]('Executed\x20command\x20%s',_0xa2bc('0xe3')));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xe5')]=function(_0x212bf3){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0xe6'),_0x212bf3['label']));if(!this['isConfigured'](_0x212bf3['key'])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xe7'));}if(!this['isConfigured'](_0x212bf3[_0xa2bc('0x60')])){return this['channel'][_0xa2bc('0xab')]('no\x20text\x20configured');}this[_0xa2bc('0x11')]['bot']=!![];this[_0xa2bc('0x36')](_0x212bf3);this[_0xa2bc('0x43')](_0x212bf3[_0xa2bc('0x60')],'in','','');this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xe8'),_0x212bf3['text']));var _0x56ba36=this[_0xa2bc('0xe9')][_0xa2bc('0x75')](this,_0x212bf3);if(_0x56ba36){for(var _0x5b9ba2 in _0x56ba36){if(_0x56ba36[_0xa2bc('0x95')](_0x5b9ba2)){this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0xea'),_0x5b9ba2[_0xa2bc('0x6e')]()),_0x56ba36[_0x5b9ba2]);}}this[_0xa2bc('0x43')](_0x56ba36[_0xa2bc('0xeb')],'out','dialogflow','');return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0xec'),_0x56ba36[_0xa2bc('0xeb')]));}return this[_0xa2bc('0x11')]['error'](_0x212bf3,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype'][_0xa2bc('0xed')]=function(_0x442229){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0xee'),_0x442229[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x442229['dialogflowV2_project_id'])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20project_id\x20configured');}if(!this[_0xa2bc('0xa6')](_0x442229[_0xa2bc('0xef')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20client_email\x20configured');}if(!this[_0xa2bc('0xa6')](_0x442229['private_key'])){return this['channel'][_0xa2bc('0xab')](_0xa2bc('0xf0'));}if(!this['isConfigured'](_0x442229[_0xa2bc('0xf1')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xf2'));}if(!this[_0xa2bc('0xa6')](_0x442229[_0xa2bc('0x60')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xac'));}this[_0xa2bc('0x11')]['bot']=!![];this[_0xa2bc('0x36')](_0x442229);this[_0xa2bc('0x43')](_0x442229[_0xa2bc('0x60')],'in','','');this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')]('Trying\x20DialogflowV2:\x20%s',_0x442229[_0xa2bc('0x60')]));var _0x305310=this[_0xa2bc('0x7f')]['sync'](this,_0x442229);if(_0x305310){for(var _0x3e62b5 in _0x305310){if(_0x305310[_0xa2bc('0x95')](_0x3e62b5)){if(_0x3e62b5!==_0xa2bc('0xf3')){this['channel'][_0xa2bc('0xa5')](util['format']('DIALOGFLOW_%s',_0x3e62b5[_0xa2bc('0x6e')]()),_0x305310[_0x3e62b5]);}}}this[_0xa2bc('0x43')](_0x305310['speech'],_0xa2bc('0xf4'),_0xa2bc('0xed'),_0x305310[_0xa2bc('0xf3')]);return this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xf5'),_0x305310[_0xa2bc('0xeb')]));}return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x442229,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xa2bc('0x13')]['sesteknda']=function(_0x17611b){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0xf6'),_0x17611b['label']));if(!this[_0xa2bc('0xa6')](_0x17611b[_0xa2bc('0xf7')])){return this[_0xa2bc('0x11')]['noop'](_0xa2bc('0xf8'));}if(!this['isConfigured'](_0x17611b[_0xa2bc('0xf9')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xfa'));}if(!this[_0xa2bc('0xa6')](_0x17611b['password'])){return this[_0xa2bc('0x11')]['noop']('no\x20password\x20configured');}if(!this[_0xa2bc('0xa6')](_0x17611b[_0xa2bc('0xfb')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20text\x20configured');}this[_0xa2bc('0x11')][_0xa2bc('0xfc')]=!![];this[_0xa2bc('0x36')](_0x17611b);this['createSquareMessage'](_0x17611b[_0xa2bc('0x60')],'in','','');this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0xfd'),_0x17611b[_0xa2bc('0x60')]));var _0x52b568=this[_0xa2bc('0x82')]['sync'](this,_0x17611b);if(_0x52b568){for(var _0x176631 in _0x52b568){if(_0x52b568['hasOwnProperty'](_0x176631)){this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')]('SESTEK_NDA_%s',_0x176631['toUpperCase']()),_0x52b568[_0x176631]);}}this[_0xa2bc('0x43')](_0x52b568[_0xa2bc('0xeb')],_0xa2bc('0xf4'),'sesteknda','');if(_0x52b568[_0xa2bc('0xfe')]){this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0xff'),_0x52b568[_0xa2bc('0xfe')]));var _0x27580a=this['channel']['streamFile'](_0x52b568[_0xa2bc('0xfe')]);try{fs[_0xa2bc('0x100')](_0x52b568[_0xa2bc('0xfe')]+_0xa2bc('0x101'));}catch(_0x3ff38e){logger[_0xa2bc('0x2d')](_0x3ff38e);}return _0x27580a;}else{return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x102'),_0x52b568['speech']));}}return this['channel']['error'](_0x17611b,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x103')]=function(_0x214ddf){logger[_0xa2bc('0x30')](util['format']('Enter\x20in\x20END\x20(%s)\x20block',_0x214ddf['label']));return this['channel']['noop'](_0xa2bc('0x103'));};AGIVertices['prototype'][_0xa2bc('0x104')]=function(_0x3f84d0){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x3f84d0[_0xa2bc('0x38')]));var _0x26cb31='';if(_0x3f84d0[_0xa2bc('0x105')]){if(!this[_0xa2bc('0xa6')](_0x3f84d0[_0xa2bc('0x105')])){return this['channel'][_0xa2bc('0x2d')](_0x3f84d0,_0xa2bc('0x106'));}else{var _0x41c733=parseInt(_0x3f84d0[_0xa2bc('0x105')],0xa);if(isNaN(_0x41c733)){_0x26cb31=_0x3f84d0[_0xa2bc('0x105')];}else{_0x26cb31=this['getTrunk'][_0xa2bc('0x75')](this,_0x3f84d0[_0xa2bc('0x105')]);if(!_0x26cb31){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x3f84d0,'no\x20trunk\x20found');}}}}else if(_0x3f84d0['trunk_name']){_0x26cb31=_0x3f84d0[_0xa2bc('0x107')];}else{return this['channel'][_0xa2bc('0x2d')](_0x3f84d0,_0xa2bc('0x106'));}var _0x33e1ec=this['channel'][_0xa2bc('0x5b')](_0xa2bc('0xe3'),[util[_0xa2bc('0x59')]('SIP/%s/%s',_0x26cb31,_0x3f84d0[_0xa2bc('0x4a')]),_0x3f84d0['timeout'],_0x3f84d0[_0xa2bc('0xe4')],_0x3f84d0['url']]);if(_0x33e1ec[_0xa2bc('0xa3')]===-0x1){return _0x33e1ec;}return this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')]('Executed\x20command\x20%s',_0xa2bc('0xe3')));};AGIVertices[_0xa2bc('0x13')]['finally']=function(_0x8dbbf9){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x108'),_0x8dbbf9['label']));return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x109'));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xf')]=function(_0x53bc06){logger['info'](util['format'](_0xa2bc('0x10a'),_0x53bc06[_0xa2bc('0x38')]));if(_0x53bc06[_0xa2bc('0xa7')]===0x0){return this[_0xa2bc('0xa8')](_0x53bc06);}_0x53bc06[_0xa2bc('0xa7')]-=0x1;if(!this[_0xa2bc('0xa6')](_0x53bc06['file_id'])){return this['channel'][_0xa2bc('0x2d')](_0x53bc06,'no\x20file\x20audio\x20selected');}var _0xf96d5=this[_0xa2bc('0x1f')]['sync'](this,_0x53bc06[_0xa2bc('0x10b')]);if(!_0xf96d5){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x53bc06,_0xa2bc('0x10c'));}if(!this[_0xa2bc('0xa6')](_0x53bc06[_0xa2bc('0xd5')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0xa2bc('0xd6'));}var _0x2b3750=this[_0xa2bc('0x11')][_0xa2bc('0x10d')](_0xf96d5,_0x53bc06['response'],_0x53bc06[_0xa2bc('0x10e')]);var _0x3d1068=_0x2b3750[_0xa2bc('0xa3')]?_0x2b3750[_0xa2bc('0xa3')][_0xa2bc('0x4f')]():'';logger['info']('test',JSON[_0xa2bc('0x78')](_0x2b3750));if(_0x2b3750['result']===-0x1){this[_0xa2bc('0x36')]['sync'](this,_0x53bc06,_0x3d1068);return _0x2b3750;}else if(_0x2b3750[_0xa2bc('0xa1')]===_0xa2bc('0x6a')){_0x2b3750[_0xa2bc('0xa3')]=_0x3d1068[_0xa2bc('0x9c')]>=parseInt(_0x53bc06['mindigit'])?'x':'i';}else{_0x2b3750[_0xa2bc('0xa3')]=_0x3d1068[_0xa2bc('0x9c')]>=parseInt(_0x53bc06['mindigit'])&&_0x3d1068[_0xa2bc('0x9c')]<=parseInt(_0x53bc06[_0xa2bc('0x10e')])?'x':'i';}var _0x156118=this['getVariable'][_0xa2bc('0x75')](this,_0x53bc06[_0xa2bc('0xd5')]);if(!_0x156118){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x53bc06,_0xa2bc('0xd7'));}this[_0xa2bc('0x11')][_0xa2bc('0xa5')](_0x156118,_0x3d1068);if(this[_0xa2bc('0xa6')](_0x53bc06[_0xa2bc('0x10f')])){var _0x178a1f=parseInt(_0x53bc06[_0xa2bc('0x10f')],0xa);var _0x55e751=rs['generate']({'charset':'*','length':_0x178a1f});var _0x309018=_0x3d1068['length'];if(_0x309018>0x0){if(_0x309018>_0x178a1f){this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x53bc06,_0x53bc06[_0xa2bc('0x110')]==='first'?_0x55e751+_0x3d1068[_0xa2bc('0x111')](_0x178a1f):_0x3d1068[_0xa2bc('0x111')](0x0,_0x309018-_0x178a1f)+_0x55e751);}else{this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x53bc06,rs[_0xa2bc('0x112')]({'charset':'*','length':_0x309018}));}}else{this['createSquareDetailsReport'][_0xa2bc('0x75')](this,_0x53bc06,'');}}else{this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x53bc06,_0x3d1068);}return _0x2b3750;};AGIVertices['prototype'][_0xa2bc('0x10')]=function(_0x13516e){logger[_0xa2bc('0x30')](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x13516e[_0xa2bc('0x38')]));return this[_0xa2bc('0xf')](_0x13516e);};AGIVertices[_0xa2bc('0x13')]['goal']=function(_0x430488){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x113'),_0x430488['label']));this['createSquareDetailsReport'][_0xa2bc('0x75')](this,_0x430488,_0x430488[_0xa2bc('0x114')]);return this['channel']['noop'](util[_0xa2bc('0x59')]('GOAL\x20%s',_0x430488[_0xa2bc('0x114')]));};AGIVertices['prototype'][_0xa2bc('0x115')]=function(_0x12d694){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x116'),_0x12d694['label']));if(!this['isConfigured'](_0x12d694[_0xa2bc('0x8a')])||!this[_0xa2bc('0xa6')](_0x12d694[_0xa2bc('0x8b')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x117'));}if(!this['isConfigured'](_0x12d694[_0xa2bc('0x60')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x118'),_0x12d694[_0xa2bc('0x60')]));var _0x27c06c=this[_0xa2bc('0x89')][_0xa2bc('0x75')](this,_0x12d694);if(_0x27c06c){this[_0xa2bc('0x11')]['noop'](util['format'](_0xa2bc('0x119'),_0x27c06c));var _0x425d5e=this[_0xa2bc('0x11')][_0xa2bc('0x11a')](_0x27c06c);try{fs['unlink'](_0x27c06c+'.wav');}catch(_0x55adb8){logger[_0xa2bc('0x2d')](_0x55adb8);}return _0x425d5e;}return this['channel']['error'](_0x12d694,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0xa2bc('0x11b')]=function(_0x1fef49){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x11c'),_0x1fef49[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x1fef49['aws_access_key_id'])||!this[_0xa2bc('0xa6')](_0x1fef49[_0xa2bc('0x8b')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x117'));}if(!this['isConfigured'](_0x1fef49[_0xa2bc('0x11d')])){return this[_0xa2bc('0x11')]['noop']('no\x20bot\x20name\x20configured');}if(!this[_0xa2bc('0xa6')](_0x1fef49[_0xa2bc('0x60')])){return this['channel']['noop'](_0xa2bc('0xac'));}this['channel']['bot']=!![];this[_0xa2bc('0x36')](_0x1fef49);this[_0xa2bc('0x43')](_0x1fef49[_0xa2bc('0x60')],'in','','');this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x11e'),_0x1fef49[_0xa2bc('0x60')]));var _0x27233c=this[_0xa2bc('0x8f')][_0xa2bc('0x75')](this,_0x1fef49);if(_0x27233c){for(var _0x38397d in _0x27233c){if(_0x27233c['hasOwnProperty'](_0x38397d)&&_[_0xa2bc('0x96')](_0x27233c[_0x38397d])){this[_0xa2bc('0x11')]['setVariable'](util[_0xa2bc('0x59')](_0xa2bc('0x11f'),_0x38397d['toUpperCase']()),_0x27233c[_0x38397d]);}}if(_[_0xa2bc('0x48')](_0x27233c['message'])){return this['channel'][_0xa2bc('0xab')](_0xa2bc('0x120'));}else{this['createSquareMessage'](_0x27233c[_0xa2bc('0x7b')],'out',_0xa2bc('0x121'),'');return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x122'),_0x27233c[_0xa2bc('0x7b')]));}}return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x1fef49,_0xa2bc('0x123'));};AGIVertices[_0xa2bc('0x13')]['googleasr']=function(_0x7f6d2f){logger['info'](util['format'](_0xa2bc('0x124'),_0x7f6d2f[_0xa2bc('0x38')],_0x7f6d2f['timeout']));if(!this[_0xa2bc('0xa6')](_0x7f6d2f[_0xa2bc('0x7d')])){return this['channel'][_0xa2bc('0xab')]('no\x20key\x20configured');}var _0x5939b5='wav';var _0xf7b192=util['format']('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x2ba2f2=util[_0xa2bc('0x59')]('%s.%s',_0xf7b192,_0x5939b5);var _0x6daca2=!![];if(_0x7f6d2f[_0xa2bc('0x125')]===_0xa2bc('0x126')){_0x6daca2=![];}var _0x165f66=this['channel'][_0xa2bc('0x127')](_0xf7b192,_0x5939b5,_0x7f6d2f[_0xa2bc('0x128')],_0x7f6d2f[_0xa2bc('0x6a')],undefined,_0x6daca2);if(_0x165f66[_0xa2bc('0xa3')]!==-0x1){this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')](_0xa2bc('0x129'),_0x2ba2f2));var _0x36a15d=this[_0xa2bc('0x91')][_0xa2bc('0x75')](this,_0x7f6d2f,_0x2ba2f2);if(_0x36a15d){for(var _0x428e09 in _0x36a15d){if(_0x36a15d[_0xa2bc('0x95')](_0x428e09)){this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0x12a'),_0x428e09[_0xa2bc('0x6e')]()),_0x36a15d[_0x428e09]);}}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x12b'),JSON[_0xa2bc('0x78')](_0x36a15d)));}}return _0x165f66;};AGIVertices['prototype'][_0xa2bc('0x12c')]=function(_0x5a4129){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x12d'),_0x5a4129[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x5a4129[_0xa2bc('0x93')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x12e'));}if(!this[_0xa2bc('0xa6')](_0x5a4129[_0xa2bc('0x12f')])){return this['channel']['noop']('no\x20appsecret\x20configured');}var _0x165220=_0xa2bc('0x130');var _0x2a5bf0=util[_0xa2bc('0x59')](_0xa2bc('0x131'),FILES_PATH,rs['generate'](0x4));var _0x55637f=util[_0xa2bc('0x59')](_0xa2bc('0x9e'),_0x2a5bf0,_0x165220);var _0x30f189=!![];if(_0x5a4129[_0xa2bc('0x125')]==='NOBEEP'){_0x30f189=![];}var _0x41cbda=this[_0xa2bc('0x11')]['recordFile'](_0x2a5bf0,_0x165220,_0x5a4129['intKey'],_0x5a4129[_0xa2bc('0x6a')],undefined,_0x30f189);if(_0x41cbda['result']!==-0x1){this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format']('tilde\x20%s\x20file\x20created',_0x55637f));var _0x50d40f=this[_0xa2bc('0x92')]['sync'](this,_0x5a4129,_0x55637f);if(_0x50d40f){for(var _0x26abd2 in _0x50d40f){if(_0x50d40f[_0xa2bc('0x95')](_0x26abd2)){this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util['format']('TILDE_ASR_%s',_0x26abd2[_0xa2bc('0x6e')]()),_0x50d40f[_0x26abd2]);}}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x132'),JSON['stringify'](_0x50d40f)));}}return _0x41cbda;};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x133')]=function(_0x2529b5){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x134'),_0x2529b5['label']));return this['channel'][_0xa2bc('0x135')](_0x2529b5[_0xa2bc('0x3e')],_0x2529b5[_0xa2bc('0x3f')],_0x2529b5[_0xa2bc('0x40')]);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x136')]=function(_0x513049){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x513049[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x513049[_0xa2bc('0x137')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x513049,_0xa2bc('0x138'));}try{var _0x474839=eval(_0x513049[_0xa2bc('0x137')])?'true':'false';this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')](_0xa2bc('0x139'),_0x513049['condition'],_0x474839));return{'code':0xc8,'result':_0x474839};}catch(_0x4c8b68){return{'code':0xc8,'result':_0xa2bc('0x13a')};}};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x13b')]=function(_0x3d5fa2){logger['info'](util[_0xa2bc('0x59')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x3d5fa2[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x3d5fa2[_0xa2bc('0x13c')])){return this[_0xa2bc('0x11')]['error'](_0x3d5fa2,'no\x20interval\x20configured');}var _0x2dd5ce=this[_0xa2bc('0x26')][_0xa2bc('0x75')](this,_0x3d5fa2[_0xa2bc('0x13c')]);if(!_0x2dd5ce){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x3d5fa2,'no\x20intervals\x20found');}for(var _0x4fc9f1=0x0;_0x4fc9f1<_0x2dd5ce[_0xa2bc('0x9c')];_0x4fc9f1+=0x1){var _0x2977fd=this[_0xa2bc('0x11')][_0xa2bc('0x14')](util[_0xa2bc('0x59')](_0xa2bc('0x13d'),_0x2dd5ce[_0x4fc9f1]));if(_0x2977fd['result']===-0x1){return _0x2977fd;}logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x13e'),_0x2dd5ce[_0x4fc9f1],_0x2977fd['extra']));if(_0x2977fd[_0xa2bc('0xa1')]===_0xa2bc('0x13f')){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x13e'),_0x2dd5ce[_0x4fc9f1],_0xa2bc('0x13f')));this['channel']['noop'](util[_0xa2bc('0x59')]('IFTIME\x20%s\x20%s',_0x2dd5ce[_0x4fc9f1],_0xa2bc('0x13f')));return{'code':0xc8,'result':'true'};}else{logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x13e'),_0x2dd5ce[_0x4fc9f1],_0xa2bc('0x13a')));this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x13e'),_0x2dd5ce[_0x4fc9f1],'false'));}}return{'code':0xc8,'result':'false'};};AGIVertices['prototype'][_0xa2bc('0x140')]=function(_0x536234){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x141'),_0x536234[_0xa2bc('0x38')]));return this['channel']['hangup']();};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x142')]=function(_0x42d147){logger['info'](util['format']('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x42d147[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x42d147['key'])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xe7'));}var _0x69e70a=_0xa2bc('0x130');var _0x379cf1=util[_0xa2bc('0x59')](_0xa2bc('0x131'),FILES_PATH,rs[_0xa2bc('0x112')](0x4));var _0x2d79e6=util[_0xa2bc('0x59')](_0xa2bc('0x9e'),_0x379cf1,_0x69e70a);var _0x9ac637=!![];if(_0x42d147['beep']===_0xa2bc('0x126')){_0x9ac637=![];}var _0x33f0b6=this[_0xa2bc('0x11')]['recordFile'](_0x379cf1,_0x69e70a,_0x42d147['intKey'],_0x42d147[_0xa2bc('0x6a')],undefined,_0x9ac637);if(_0x33f0b6[_0xa2bc('0xa3')]!==-0x1){this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x143'),_0x2d79e6));var _0x4acc79=this[_0xa2bc('0x86')]['sync'](this,_0x42d147,_0x2d79e6);if(_0x4acc79){for(var _0x282067 in _0x4acc79){if(_0x4acc79[_0xa2bc('0x95')](_0x282067)){this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0x144'),_0x282067[_0xa2bc('0x6e')]()),_0x4acc79[_0x282067]);}}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x145'),JSON[_0xa2bc('0x78')](_0x4acc79)));}}return _0x33f0b6;};AGIVertices['prototype']['ispeechtts']=function(_0x419cb7){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x419cb7[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x419cb7[_0xa2bc('0x7d')])){return this[_0xa2bc('0x11')]['noop']('no\x20key\x20configured');}if(!this[_0xa2bc('0xa6')](_0x419cb7[_0xa2bc('0x60')])){return this['channel'][_0xa2bc('0xab')](_0xa2bc('0xac'));}this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x146'),_0x419cb7[_0xa2bc('0x60')]));var _0x3e9dc1=this['ispeechTTS'][_0xa2bc('0x75')](this,_0x419cb7);if(_0x3e9dc1){this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')]('ispeech\x20%s\x20file\x20created',_0x3e9dc1));var _0x5720af=this[_0xa2bc('0x11')][_0xa2bc('0x11a')](_0x3e9dc1,_0x419cb7['intKey']);try{fs['unlink'](_0x3e9dc1+_0xa2bc('0x101'));}catch(_0x5bcb76){logger[_0xa2bc('0x2d')](_0x5bcb76);}return _0x5720af;}return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x419cb7,_0xa2bc('0x147'));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x148')]=function(_0x44e5ce){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x44e5ce[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x44e5ce[_0xa2bc('0x149')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x44e5ce,_0xa2bc('0x14a'));}logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x14b'),this[_0xa2bc('0x11')]['callerid'],_0x44e5ce[_0xa2bc('0x149')]));var _0x273110=this[_0xa2bc('0x57')][_0xa2bc('0x75')](this,_0x44e5ce[_0xa2bc('0x149')]);if(_0x273110){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x14c'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x44e5ce[_0xa2bc('0x149')]));this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0x14c'),this['channel'][_0xa2bc('0x3b')],_0x44e5ce['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x14d'),this['channel']['callerid'],_0x44e5ce['findBy']));this['channel'][_0xa2bc('0xab')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xa2bc('0x3b')],_0x44e5ce[_0xa2bc('0x149')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x14e')]=function(_0x419f01){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x419f01[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x419f01[_0xa2bc('0x149')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x419f01,_0xa2bc('0x14a'));}logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x14b'),this[_0xa2bc('0x11')]['callerid'],_0x419f01[_0xa2bc('0x149')]));var _0x335e44=this['agentLogout']['sync'](this,_0x419f01[_0xa2bc('0x149')]);if(_0x335e44){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x14c'),this[_0xa2bc('0x11')]['callerid'],_0x419f01[_0xa2bc('0x149')]));this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x419f01[_0xa2bc('0x149')]));return{'code':0xc8,'result':_0xa2bc('0x14f')};}else{logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x14d'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x419f01[_0xa2bc('0x149')]));this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x14d'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x419f01[_0xa2bc('0x149')]));return{'code':0xc8,'result':_0xa2bc('0x150')};}};AGIVertices['prototype'][_0xa2bc('0x151')]=function(_0x54531e){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x152'),_0x54531e[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x54531e[_0xa2bc('0x153')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x54531e,_0xa2bc('0x154'));}this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x155'),_0x54531e[_0xa2bc('0x153')]));var _0x2792a7=eval(_0x54531e[_0xa2bc('0x153')]);if(!this[_0xa2bc('0xa6')](_0x54531e[_0xa2bc('0xd5')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xd6'));}var _0x5afc98=this[_0xa2bc('0x14')]['sync'](this,_0x54531e[_0xa2bc('0xd5')]);if(!_0x5afc98){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x54531e,_0xa2bc('0xd7'));}if(_['isArray'](_0x2792a7)){var _0x3a492f=this;_0x2792a7['forEach'](function(_0x2d45cc,_0x38a6f5){_0x3a492f[_0xa2bc('0x11')]['setVariable'](util[_0xa2bc('0x59')](_0xa2bc('0x156'),_0x5afc98,_0x38a6f5),_0x2d45cc);});return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x157'),_0x5afc98));}else{return this[_0xa2bc('0x11')][_0xa2bc('0xa5')](_0x5afc98,_0x2792a7);}};AGIVertices[_0xa2bc('0x13')]['menu']=function(_0x15a58e){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x158'),_0x15a58e['label']));if(_0x15a58e['retry']===0x0){return this[_0xa2bc('0xa8')](_0x15a58e);}_0x15a58e['retry']-=0x1;if(!this['isConfigured'](_0x15a58e['file_id'])){return this[_0xa2bc('0x11')]['error'](_0x15a58e,_0xa2bc('0x159'));}var _0x3a6f8d=this[_0xa2bc('0x1f')][_0xa2bc('0x75')](this,_0x15a58e[_0xa2bc('0x10b')]);if(!_0x3a6f8d){return this[_0xa2bc('0x11')]['error'](_0x15a58e,_0xa2bc('0x10c'));}var _0x13e92f=this['channel'][_0xa2bc('0x10d')](_0x3a6f8d,_0x15a58e['response'],_0x15a58e[_0xa2bc('0x15a')]);var _0x246949=_0x13e92f[_0xa2bc('0xa3')];if(_0x13e92f[_0xa2bc('0xa3')]===-0x1){this[_0xa2bc('0x36')]['sync'](this,_0x15a58e,'-1');return _0x13e92f;}else if(_0x13e92f['extra']==='timeout'){_0x13e92f[_0xa2bc('0xa3')]=_0x13e92f[_0xa2bc('0xa3')][_0xa2bc('0x9c')]>0x0?_0x13e92f[_0xa2bc('0xa3')]:'t';}else if(_[_0xa2bc('0x45')](_0x13e92f[_0xa2bc('0xa3')])){_0x13e92f[_0xa2bc('0xa3')]='#';_0x246949='#';}if(!this[_0xa2bc('0xa6')](_0x15a58e[_0xa2bc('0xd5')])){this[_0xa2bc('0x11')]['noop'](_0xa2bc('0xd6'));}else{var _0x5a023c=this[_0xa2bc('0x14')]['sync'](this,_0x15a58e[_0xa2bc('0xd5')]);if(!_0x5a023c){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x15a58e,_0xa2bc('0xd7'));}this[_0xa2bc('0x11')][_0xa2bc('0xa5')](_0x5a023c,_0x246949);}this['createSquareDetailsReport'][_0xa2bc('0x75')](this,_0x15a58e,_0x246949);return _0x13e92f;};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0xab')]=function(_0x10c706){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x15b'),_0x10c706['label']));return this['channel']['noop'](_0x10c706[_0xa2bc('0x15c')]||_0x10c706['label']);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x15d')]=function(_0x31221b){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x15e'),_0x31221b[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x31221b[_0xa2bc('0x149')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x31221b,'no\x20find\x20by\x20configured');}logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x14b'),this['channel'][_0xa2bc('0x3b')],_0x31221b[_0xa2bc('0x149')]));var _0x33c18b=this[_0xa2bc('0x51')]['sync'](this,_0x31221b[_0xa2bc('0x15f')]);var _0x481ab3=this[_0xa2bc('0x53')][_0xa2bc('0x75')](this,_0x31221b[_0xa2bc('0x149')],_0x33c18b);if(_0x481ab3){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x14c'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x31221b['findBy']));this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0x14c'),this[_0xa2bc('0x11')]['callerid'],_0x31221b[_0xa2bc('0x149')]));return{'code':0xc8,'result':_0xa2bc('0x14f')};}else{logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x14d'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x31221b[_0xa2bc('0x149')]));this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x31221b['findBy']));return{'code':0xc8,'result':_0xa2bc('0x150')};}};AGIVertices['prototype'][_0xa2bc('0x160')]=function(_0x46aed1){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x161'),_0x46aed1[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x46aed1[_0xa2bc('0x10b')])){return this['channel'][_0xa2bc('0x2d')](_0x46aed1,'no\x20file\x20audio\x20selected');}var _0x11325b=this[_0xa2bc('0x1f')]['sync'](this,_0x46aed1[_0xa2bc('0x10b')]);if(!_0x11325b){return this[_0xa2bc('0x11')]['error'](_0x46aed1,'no\x20file\x20audio\x20found');}var _0x210502=this['channel']['exec'](_0xa2bc('0x162'),[_0x11325b,_0x46aed1[_0xa2bc('0xe4')]]);if(_0x210502[_0xa2bc('0xa3')]===-0x1){return _0x210502;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0xc2'),_0xa2bc('0x162'),_0x11325b));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x163')]=function(_0x587034){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x164'),_0x587034['label']));if(!this['isConfigured'](_0x587034[_0xa2bc('0x165')])){return this['channel'][_0xa2bc('0x2d')](_0x587034,'no\x20queue\x20selected');}var _0x4f75ec='';var _0x37b0ce=parseInt(_0x587034[_0xa2bc('0x165')],0xa);if(isNaN(_0x37b0ce)){_0x4f75ec=_0x587034[_0xa2bc('0x165')];}else{_0x4f75ec=this[_0xa2bc('0x166')][_0xa2bc('0x75')](this,_0x587034[_0xa2bc('0x165')]);if(!_0x4f75ec){return this[_0xa2bc('0x11')]['error'](_0x587034,'no\x20queue\x20found');}}var _0x584674='';if(this[_0xa2bc('0xa6')](_0x587034['file_id'])){var _0x48c49c=this['getSound'][_0xa2bc('0x75')](this,_0x587034['file_id']);if(_0x48c49c){_0x584674=_0x48c49c;}}this[_0xa2bc('0x36')]['sync'](this,_0x587034,_0x4f75ec);if(_0x587034[_0xa2bc('0xe4')][_0xa2bc('0x167')]('x')<0x0){_0x587034['opts']+='x';}if(_0x587034['opts'][_0xa2bc('0x167')]('X')<0x0){_0x587034[_0xa2bc('0xe4')]+='X';}this['channel'][_0xa2bc('0xa5')](_0xa2bc('0x168'),_0x4f75ec?_0x4f75ec[_0xa2bc('0x169')]():'');var _0x22ada9=this[_0xa2bc('0x11')]['exec'](_0xa2bc('0x16a'),[_0x4f75ec,_0x587034['opts'],_0x587034[_0xa2bc('0x68')],_0x584674,_0x587034[_0xa2bc('0x6a')],_0x587034[_0xa2bc('0x16b')],_0x587034['macro'],_0x587034[_0xa2bc('0x16c')],'',_0x587034[_0xa2bc('0x16d')]]);if(_0x22ada9[_0xa2bc('0xa3')]===-0x1){return _0x22ada9;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xc2'),_0xa2bc('0x16a'),_0x4f75ec));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x16e')]=function(_0x19814e){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x16f'),_0x19814e[_0xa2bc('0x38')]));var _0x4a73e2=_0x19814e[_0xa2bc('0x170')]||_0xa2bc('0x130');var _0x3a9275=util['format'](_0xa2bc('0x171'),this[_0xa2bc('0x11')][_0xa2bc('0x37')],rs[_0xa2bc('0x112')](0x5));var _0xe2c078=util[_0xa2bc('0x59')](_0xa2bc('0x172'),FILES_PATH,_0x3a9275,_0x4a73e2);var _0x3c2b6e=util[_0xa2bc('0x59')](_0xa2bc('0x131'),FILES_PATH,_0x3a9275);this[_0xa2bc('0x3c')][_0xa2bc('0x75')](this,_0x19814e,_0x3a9275,_0xe2c078);this[_0xa2bc('0x11')][_0xa2bc('0xa5')](_0xa2bc('0x173'),_0x3a9275);logger['info']('Recording\x20%s\x20%s\x20%s\x20%s',_0x3c2b6e,_0x4a73e2,_0x19814e[_0xa2bc('0x174')],_0x19814e[_0xa2bc('0x6a')]);return this['channel'][_0xa2bc('0x127')](_0x3c2b6e,_0x4a73e2,_0x19814e[_0xa2bc('0x174')],_0x19814e[_0xa2bc('0x6a')],undefined,!![]);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x175')]=function(_0x408920){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x176'),_0x408920[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x408920[_0xa2bc('0x68')])){return this[_0xa2bc('0x11')]['noop'](_0xa2bc('0x177'));}var _0x4bed49=this[_0xa2bc('0x67')]['sync'](this,_0x408920);logger[_0xa2bc('0x30')](util['format']('Response:',util[_0xa2bc('0x178')](_0x4bed49,{'showHidden':![],'depth':null})));if(!this[_0xa2bc('0xa6')](_0x408920['variable_id'])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x2164ee=this[_0xa2bc('0x14')][_0xa2bc('0x75')](this,_0x408920[_0xa2bc('0xd5')]);if(!_0x2164ee){return this['channel'][_0xa2bc('0x2d')](_0x408920,_0xa2bc('0xd7'));}this[_0xa2bc('0x11')][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0x179'),_0x2164ee),_0x4bed49[_0xa2bc('0x7a')]?_0x4bed49['statusCode']:_0xa2bc('0x17a'));this['channel'][_0xa2bc('0xa5')](util[_0xa2bc('0x59')](_0xa2bc('0x17b'),_0x2164ee),_0x4bed49[_0xa2bc('0x17c')]?_0x4bed49[_0xa2bc('0x17c')]:'OK');if(_0x4bed49[_0xa2bc('0x6f')]){try{this[_0xa2bc('0x9d')](_0x4bed49[_0xa2bc('0x6f')],_0x2164ee);}catch(_0x4fa23d){logger['error'](util[_0xa2bc('0x59')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x2164ee));}}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xdc'),_0x2164ee));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x17d')]=function(_0x25123f){logger['info'](util['format'](_0xa2bc('0x17e'),_0x25123f[_0xa2bc('0x38')]));return this[_0xa2bc('0x11')][_0xa2bc('0x17f')](_0x25123f[_0xa2bc('0x180')][_0xa2bc('0x5d')](/\s+/g,''),_0x25123f['escape_digits']);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x181')]=function(_0x11c6fc){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x11c6fc[_0xa2bc('0x38')]));return this[_0xa2bc('0x11')][_0xa2bc('0x182')](_0x11c6fc[_0xa2bc('0x6b')]['replace'](/\s+/g,''),_0x11c6fc[_0xa2bc('0x174')]);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x183')]=function(_0x24bd2c){logger['info'](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x24bd2c[_0xa2bc('0x38')]));return this[_0xa2bc('0x11')][_0xa2bc('0x184')](_0x24bd2c[_0xa2bc('0x60')],_0x24bd2c[_0xa2bc('0x174')]);};AGIVertices['prototype'][_0xa2bc('0x185')]=function(_0x5ba6b3){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x5ba6b3[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x5ba6b3[_0xa2bc('0x186')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x187'));}var _0x4f9ac5=this[_0xa2bc('0x23')][_0xa2bc('0x75')](this,_0x5ba6b3[_0xa2bc('0x186')]);if(!_0x4f9ac5||!_0x4f9ac5['Smtp']){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x5ba6b3,_0xa2bc('0x188'));}var _0x14cf68={'from':util['format'](_0xa2bc('0x189'),_0x4f9ac5[_0xa2bc('0x17')],_0x4f9ac5['email']||_0x4f9ac5[_0xa2bc('0x18a')]['user']),'to':_0x5ba6b3['to']||'','cc':_0x5ba6b3['cc']||'','bcc':_0x5ba6b3[_0xa2bc('0x18b')]||'','subject':_0x5ba6b3['subject'],'html':_0x5ba6b3[_0xa2bc('0x60')],'text':_0x5ba6b3[_0xa2bc('0x60')]};var _0x349e80={'tls':{'rejectUnauthorized':![]}};if(_0x4f9ac5[_0xa2bc('0x18a')][_0xa2bc('0x18c')]){_0x349e80[_0xa2bc('0x18c')]=_0x4f9ac5[_0xa2bc('0x18a')][_0xa2bc('0x18c')];}else{_0x349e80[_0xa2bc('0x18d')]=_0x4f9ac5[_0xa2bc('0x18a')][_0xa2bc('0x18d')];_0x349e80[_0xa2bc('0x18e')]=_0x4f9ac5[_0xa2bc('0x18a')]['port'];_0x349e80[_0xa2bc('0x18f')]=_0x4f9ac5[_0xa2bc('0x18a')][_0xa2bc('0x18f')];}if(_0x4f9ac5['Smtp'][_0xa2bc('0x190')]){_0x349e80[_0xa2bc('0x191')]={'user':_0x4f9ac5[_0xa2bc('0x18a')][_0xa2bc('0x192')],'pass':_0x4f9ac5[_0xa2bc('0x18a')][_0xa2bc('0x193')]};}if(this[_0xa2bc('0xa6')](_0x5ba6b3[_0xa2bc('0x194')])){}logger['debug'](_0xa2bc('0x195'),JSON[_0xa2bc('0x78')](_0x14cf68));this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x5ba6b3,_0x5ba6b3[_0xa2bc('0x186')]);this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format'](_0xa2bc('0x196'),_0x4f9ac5[_0xa2bc('0x17')]));this['sendMailMessage'][_0xa2bc('0x75')](this,_0x349e80,_0x14cf68);return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x197'));};AGIVertices['prototype']['sendFax']=function(_0x19d37e){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x198'),_0x19d37e[_0xa2bc('0x38')]));return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x199'));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x19a')]=function(_0x12d312){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x19b'),_0x12d312[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x12d312[_0xa2bc('0x19c')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')]('no\x20sms\x20account\x20configured');}var _0x283cf4=this['getSmsAccount'][_0xa2bc('0x75')](this,_0x12d312[_0xa2bc('0x19c')]);if(!_0x283cf4){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x12d312,_0xa2bc('0x19d'));}var _0x4e5625={'body':_0x12d312[_0xa2bc('0x19e')],'phone':_0x12d312['to']||'','SmsAccountId':_0x283cf4['id']};logger[_0xa2bc('0xde')]('sendSMS\x20message',JSON[_0xa2bc('0x78')](_0x4e5625));this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x12d312,_0x12d312[_0xa2bc('0x19c')]);this['channel'][_0xa2bc('0xab')](util['format'](_0xa2bc('0x19f'),_0x283cf4[_0xa2bc('0x17')]));this[_0xa2bc('0x35')][_0xa2bc('0x75')](this,_0x4e5625);return this['channel']['noop'](_0xa2bc('0x1a0'));};AGIVertices['prototype'][_0xa2bc('0x1a1')]=function(_0x20cfc2){logger['info'](util['format'](_0xa2bc('0x1a2'),_0x20cfc2['label']));if(!this['isConfigured'](_0x20cfc2[_0xa2bc('0xd5')])){return this['channel'][_0xa2bc('0x2d')](_0x20cfc2,_0xa2bc('0x1a3'));}var _0x453e21=this['getVariable']['sync'](this,_0x20cfc2['variable_id']);if(!_0x453e21){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x20cfc2,_0xa2bc('0xd7'));}return this[_0xa2bc('0x11')][_0xa2bc('0xa5')](_0x453e21,_0x20cfc2['variable_value']);};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1a4')]=function(_0x12cd56){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x1a5'),_0x12cd56[_0xa2bc('0x38')]));this['channel']['noop']('START\x20CALLY\x20SQUARE');if(_0x12cd56[_0xa2bc('0xb7')]===_0xa2bc('0x1a6')){this[_0xa2bc('0x11')][_0xa2bc('0xab')]('Answer');return this[_0xa2bc('0x11')][_0xa2bc('0xb7')]();}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x1a7'));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1a8')]=function(_0x26539e){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x1a9'),_0x26539e[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x26539e[_0xa2bc('0x1aa')])){return this[_0xa2bc('0x11')]['error'](_0x26539e,_0xa2bc('0x1ab'));}var _0x434876=this['getSquareProject'][_0xa2bc('0x75')](this,_0x26539e[_0xa2bc('0x1aa')]);if(!this[_0xa2bc('0xa6')](_0x434876)){return this['channel'][_0xa2bc('0x2d')](_0x26539e,util['format'](_0xa2bc('0x1ac'),_0x26539e['project_id']));}if(_0x434876===this[_0xa2bc('0x11')][_0xa2bc('0x3a')]){return this[_0xa2bc('0x11')]['error'](_0x26539e,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0xa2bc('0x36')][_0xa2bc('0x75')](this,_0x26539e,_0x434876);var _0x195d3a=this[_0xa2bc('0x11')][_0xa2bc('0x5b')](_0xa2bc('0x1ad'),util[_0xa2bc('0x59')](_0xa2bc('0x1ae'),config[_0xa2bc('0x16b')][_0xa2bc('0x18d')]||_0xa2bc('0x1af'),_0x434876,this['channel'][_0xa2bc('0x3a')]));if(_0x195d3a['result']===-0x1){return _0x195d3a;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0xc2'),_0xa2bc('0x1ad'),_0x434876));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1b0')]=function(_0x3567ad){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x1b1'),_0x3567ad['label']));var _0x455ae0=this[_0xa2bc('0x1b2')][_0xa2bc('0x75')](this,_0x3567ad['command']);this['createSquareDetailsReport'][_0xa2bc('0x75')](this,_0x3567ad,_0x3567ad[_0xa2bc('0xb5')]);if(this[_0xa2bc('0xa6')](_0x3567ad[_0xa2bc('0xd5')])){var _0x2606d0=this[_0xa2bc('0x14')][_0xa2bc('0x75')](this,_0x3567ad[_0xa2bc('0xd5')]);if(_0x2606d0){this[_0xa2bc('0x11')][_0xa2bc('0xa5')](_0x2606d0,_0x455ae0);return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x1b3'),_0x3567ad['command'],_0x2606d0));}}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x1b4'),_0x3567ad[_0xa2bc('0xb5')]));};AGIVertices['prototype'][_0xa2bc('0x1b5')]=function(_0x3af5f3){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x3af5f3[_0xa2bc('0x38')]));_0x3af5f3[_0xa2bc('0x60')]=_0x3af5f3[_0xa2bc('0x60')][_0xa2bc('0x5d')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa2bc('0xa6')](_0x3af5f3[_0xa2bc('0x5f')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0x1b6'));}if(!this[_0xa2bc('0xa6')](_0x3af5f3['text'])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xac'));}this[_0xa2bc('0x11')][_0xa2bc('0xab')](util['format']('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x3af5f3[_0xa2bc('0x60')]));var _0x5e6bf1=this[_0xa2bc('0x5e')]['sync'](this,_0x3af5f3);if(_0x5e6bf1){this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x5e6bf1));var _0x549df7=this[_0xa2bc('0x11')][_0xa2bc('0x11a')](_0x5e6bf1);try{fs['unlink'](_0x5e6bf1+'.wav');}catch(_0x294304){logger[_0xa2bc('0x2d')](_0x294304);}return _0x549df7;}return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x3af5f3,_0xa2bc('0x1b7'));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1b8')]=function(_0x4b6016){logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x1b9'),_0x4b6016['label']));_0x4b6016['text']=_0x4b6016['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa2bc('0xa6')](_0x4b6016[_0xa2bc('0x60')])){return this[_0xa2bc('0x11')][_0xa2bc('0xab')](_0xa2bc('0xac'));}this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')]('Trying\x20Google\x20TTS\x20%s',_0x4b6016[_0xa2bc('0x60')]));var _0x337a69=this['googleTTS']['sync'](this,_0x4b6016);if(_0x337a69){this[_0xa2bc('0x11')]['noop'](util[_0xa2bc('0x59')](_0xa2bc('0x1ba'),_0x337a69));var _0x40957e=this[_0xa2bc('0x11')][_0xa2bc('0x11a')](_0x337a69);try{fs['unlink'](_0x337a69+_0xa2bc('0x101'));}catch(_0x1b1897){logger[_0xa2bc('0x2d')](_0x1b1897);}return _0x40957e;}return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x4b6016,_0xa2bc('0x1bb'));};AGIVertices['prototype']['unpause']=function(_0x1011b7){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x1011b7[_0xa2bc('0x38')]));if(!this[_0xa2bc('0xa6')](_0x1011b7['findBy'])){return this[_0xa2bc('0x11')]['error'](_0x1011b7,_0xa2bc('0x14a'));}logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x14b'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x1011b7[_0xa2bc('0x149')]));var _0x4cc3d6=this[_0xa2bc('0x55')]['sync'](this,_0x1011b7[_0xa2bc('0x149')]);if(_0x4cc3d6){logger[_0xa2bc('0x30')](util['format'](_0xa2bc('0x14c'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x1011b7[_0xa2bc('0x149')]));this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x14c'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x1011b7['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0xa2bc('0x59')](_0xa2bc('0x14d'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x1011b7[_0xa2bc('0x149')]));this['channel'][_0xa2bc('0xab')](util[_0xa2bc('0x59')](_0xa2bc('0x14d'),this[_0xa2bc('0x11')][_0xa2bc('0x3b')],_0x1011b7[_0xa2bc('0x149')]));return{'code':0xc8,'result':_0xa2bc('0x150')};}};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1bc')]=function(_0x161286){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x1bd'),_0x161286[_0xa2bc('0x38')]));var _0x312af9=this[_0xa2bc('0x11')]['exec'](_0xa2bc('0x1be'),[_0x161286[_0xa2bc('0x1bf')],_0x161286[_0xa2bc('0x7c')]]);if(_0x312af9[_0xa2bc('0xa3')]===-0x1){return _0x312af9;}return this[_0xa2bc('0x11')][_0xa2bc('0xab')](util[_0xa2bc('0x59')]('Executed\x20command\x20%s\x20%s',_0xa2bc('0x1be'),_0x161286[_0xa2bc('0x1bf')]));};AGIVertices[_0xa2bc('0x13')][_0xa2bc('0x1c0')]=function(_0x42a2d0){logger[_0xa2bc('0x30')](util[_0xa2bc('0x59')](_0xa2bc('0x1c1'),_0x42a2d0[_0xa2bc('0x38')]));if(!this['isConfigured'](_0x42a2d0[_0xa2bc('0xd5')])){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x42a2d0,_0xa2bc('0x1a3'));}var _0x3cfbf2=this[_0xa2bc('0x14')][_0xa2bc('0x75')](this,_0x42a2d0[_0xa2bc('0xd5')]);if(!_0x3cfbf2){return this[_0xa2bc('0x11')][_0xa2bc('0x2d')](_0x42a2d0,_0xa2bc('0xd7'));}var _0x420445=this['channel'][_0xa2bc('0x14')](_0x3cfbf2);return{'code':0xc8,'result':_0x420445[_0xa2bc('0xa1')]?_0x420445['extra']:'-'};};String['prototype'][_0xa2bc('0xa0')]=function(_0xa77074,_0x477d35){return this[_0xa2bc('0x9f')](_0xa77074)['join'](_0x477d35);};module[_0xa2bc('0x1c2')]=AGIVertices;
\ No newline at end of file
index f1b9285..e4736f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d1c=['syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncAgentConnectPreview','milliseconds','seconds','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','attended','destlinkedid','savePause','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','uniqueid','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','prototype','[ACW][syncAgentConnect]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','syncAgentConnect','bind','syncHangupRequest','hangup','agentringnoanswer'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x4d1c,0x180));var _0xc4d1=function(_0xf9c75,_0x5844a2){_0xf9c75=_0xf9c75-0x0;var _0x33c9b3=_0x4d1c[_0xf9c75];return _0x33c9b3;};'use strict';var util=require(_0xc4d1('0x0'));var _=require(_0xc4d1('0x1'));var moment=require(_0xc4d1('0x2'));var ami=require(_0xc4d1('0x3'));var logger=require(_0xc4d1('0x4'))(_0xc4d1('0x5'));var RpcUser=require(_0xc4d1('0x6'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x2deb73){this[_0xc4d1('0x7')]=_0x2deb73[_0xc4d1('0x7')];this[_0xc4d1('0x8')]=_0x2deb73[_0xc4d1('0x8')];this[_0xc4d1('0x9')]=_0x2deb73['timers'];this[_0xc4d1('0xa')]={};ami['on']('agentconnect',this[_0xc4d1('0xb')][_0xc4d1('0xc')](this));ami['on']('hanguprequest',this[_0xc4d1('0xd')][_0xc4d1('0xc')](this));ami['on'](_0xc4d1('0xe'),this['syncHangup'][_0xc4d1('0xc')](this));ami['on'](_0xc4d1('0xf'),this[_0xc4d1('0x10')]['bind'](this));ami['on'](_0xc4d1('0x11'),this[_0xc4d1('0x12')][_0xc4d1('0xc')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xc4d1('0xc')](this));ami['on']('custom:agentConnectPreview',this[_0xc4d1('0x13')]['bind'](this));}function getDiff(_0x136e27){var _0x4b09e6=moment()[_0xc4d1('0x14')](0x0);var _0x328430=moment(_0x136e27)[_0xc4d1('0x14')](0x0);return _0x4b09e6['diff'](_0x328430,_0xc4d1('0x15'));}Acw['prototype'][_0xc4d1('0x16')]=function(_0x1390f0){try{var _0x3119ca=this;var _0x29fd6b=this[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x17')];var _0xf3b142=this[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x18')];var _0xa98e8d=this[_0xc4d1('0x7')][_0xf3b142];var _0x4d5faf=![];var _0x46a05c=_0xc4d1('0x19');if(_0xa98e8d[_0xc4d1('0x1a')]){if(_0xa98e8d[_0xc4d1('0x1b')][_0xc4d1('0x1c')]){_0x4d5faf=!![];_0x46a05c=_0xa98e8d[_0xc4d1('0x1b')][_0xc4d1('0x1c')];}}ami[_0xc4d1('0x1d')]({'action':_0xc4d1('0x1e'),'interface':_0x29fd6b,'paused':!![],'reason':_0x46a05c})[_0xc4d1('0x1f')](function(_0x5174ca){if(_0x3119ca[_0xc4d1('0x8')][_0x29fd6b]){return RpcUser['getAgent'](_0x3119ca[_0xc4d1('0x8')][_0x29fd6b]['id'])[_0xc4d1('0x1f')](function(_0x109f6a){if(_0x109f6a&&!_0x109f6a[_0xc4d1('0x20')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x1390f0,_0x29fd6b,_0xf3b142);var _0x2be7aa=_0x3119ca[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x21')]&&_0x3119ca['channels'][_0x1390f0][_0xc4d1('0x22')]?_0x3119ca[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x22')]:_0x1390f0;return RpcUser[_0xc4d1('0x23')](_0x3119ca[_0xc4d1('0x8')][_0x29fd6b],_0x46a05c,_0x2be7aa)[_0xc4d1('0x1f')](function(_0x20ccea){if(!_0x4d5faf){_0x3119ca['timers'][_0x29fd6b]={};logger[_0xc4d1('0x24')](_0xc4d1('0x25'),_0x1390f0,_0x3119ca[_0xc4d1('0x7')][_0xf3b142][_0xc4d1('0x26')],_0x29fd6b,_0xf3b142);_0x3119ca[_0xc4d1('0x9')][_0x29fd6b][_0xc4d1('0x27')]=setTimeout(_0x3119ca[_0xc4d1('0x28')][_0xc4d1('0xc')](_0x3119ca,_0x29fd6b),_0x3119ca[_0xc4d1('0x7')][_0xf3b142][_0xc4d1('0x26')]*0x3e8);_0x3119ca['timers'][_0x29fd6b][_0xc4d1('0x29')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3119ca[_0xc4d1('0x9')][_0x29fd6b][_0xc4d1('0x2a')]=_0x1390f0;_0x3119ca[_0xc4d1('0x9')][_0x29fd6b][_0xc4d1('0x18')]=_0xf3b142;_0x3119ca['timers'][_0x29fd6b]['updateAcw']=function(){var _0x259709=getDiff(_0x3119ca[_0xc4d1('0x9')][_0x29fd6b]['lastPauseAt']);clearTimeout(_0x3119ca['timers'][_0x29fd6b]['timer']);_0x3119ca['timers'][_0x29fd6b][_0xc4d1('0x27')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x259709},_0x3119ca[_0xc4d1('0x9')][_0x29fd6b]['uniqueid'],_0x29fd6b)[_0xc4d1('0x1f')](function(_0x5f099d){logger[_0xc4d1('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x1390f0,_0x259709,_0x5f099d);})[_0xc4d1('0x2b')](function(_0x881b47){logger['error'](_0xc4d1('0x2c'),_0x1390f0,_0x881b47);});delete _0x3119ca[_0xc4d1('0x9')][_0x29fd6b];};}});}else{logger[_0xc4d1('0x24')](_0xc4d1('0x2d'),_0x1390f0,_0x29fd6b,_0xf3b142);}});}})[_0xc4d1('0x2b')](function(_0x156803){logger[_0xc4d1('0x2e')](_0xc4d1('0x25'),_0x1390f0,_0x3119ca['voiceQueues'][_0xf3b142][_0xc4d1('0x26')],_0x29fd6b,_0xf3b142);})['finally'](function(){delete _0x3119ca[_0xc4d1('0xa')][_0x1390f0];});}catch(_0x24b57a){logger[_0xc4d1('0x2e')](_0xc4d1('0x2f'),_0x24b57a['message']);}};Acw['prototype'][_0xc4d1('0x28')]=function(_0x178cc2){try{var _0x41334c=this;if(_0x41334c['timers'][_0x178cc2]){_0x41334c['timers'][_0x178cc2]['timer']=![];var _0x2131de=_0x41334c[_0xc4d1('0x9')][_0x178cc2]['uniqueid'];var _0x2d1aeb=_0x41334c[_0xc4d1('0x9')][_0x178cc2][_0xc4d1('0x18')];var _0x15278c=_0x41334c['voiceQueues'][_0x2d1aeb]['acwTimeout'];logger[_0xc4d1('0x24')](_0xc4d1('0x30'),_0x2131de,_0x178cc2);RpcUser[_0xc4d1('0x31')](this[_0xc4d1('0x8')][_0x178cc2]);RpcVoiceAgentReport[_0xc4d1('0x32')]({'acwtime':_0x15278c,'agentacw':!![]},_0x2131de,_0x178cc2)[_0xc4d1('0x1f')](function(_0x3d354c){logger[_0xc4d1('0x24')](_0xc4d1('0x33'),_0x2131de,_0x15278c,_0x3d354c);})[_0xc4d1('0x2b')](function(_0x3a1e70){logger[_0xc4d1('0x2e')](_0xc4d1('0x2c'),_0x2131de,_0x3a1e70);});}else{logger[_0xc4d1('0x2e')](_0xc4d1('0x34'),_0x178cc2);if(_0x41334c[_0xc4d1('0x9')]){logger[_0xc4d1('0x24')](_0xc4d1('0x35'),JSON[_0xc4d1('0x36')](_0x41334c[_0xc4d1('0x9')]));}}}catch(_0x5ec874){logger[_0xc4d1('0x2e')](_0xc4d1('0x37'),_0x5ec874['message']);}};Acw[_0xc4d1('0x38')]['syncAgentConnect']=function(_0xf6b8c8){try{if(this[_0xc4d1('0x7')][_0xf6b8c8[_0xc4d1('0x18')]]&&(this['voiceQueues'][_0xf6b8c8[_0xc4d1('0x18')]][_0xc4d1('0x5')]||this[_0xc4d1('0x7')][_0xf6b8c8[_0xc4d1('0x18')]][_0xc4d1('0x1a')])){if(this[_0xc4d1('0x8')][_0xf6b8c8[_0xc4d1('0x17')]]){this[_0xc4d1('0xa')][_0xf6b8c8[_0xc4d1('0x2a')]]={'queue':_0xf6b8c8['queue'],'interface':_0xf6b8c8[_0xc4d1('0x17')],'destlinkedid':_0xf6b8c8['destlinkedid']};}}}catch(_0x4c4498){logger[_0xc4d1('0x2e')](_0xc4d1('0x39'),_0x4c4498[_0xc4d1('0x3a')]);}};Acw['prototype'][_0xc4d1('0x13')]=function(_0x43a38c){try{if(this[_0xc4d1('0x7')][_0x43a38c['queue']]&&(this[_0xc4d1('0x7')][_0x43a38c[_0xc4d1('0x18')]]['acw']||this[_0xc4d1('0x7')][_0x43a38c['queue']][_0xc4d1('0x1a')])){if(this[_0xc4d1('0x8')][_0x43a38c[_0xc4d1('0x17')]]){this['channels'][_0x43a38c['uniqueid']]={'queue':_0x43a38c[_0xc4d1('0x18')],'interface':_0x43a38c[_0xc4d1('0x17')]};}}}catch(_0x1d33f3){logger[_0xc4d1('0x2e')](_0xc4d1('0x3b'),_0x1d33f3[_0xc4d1('0x3a')]);}};Acw[_0xc4d1('0x38')][_0xc4d1('0xd')]=function(_0x42ba0d){try{if(this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x2a')]]&&_[_0xc4d1('0x3c')](this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x2a')]][_0xc4d1('0x21')])){logger[_0xc4d1('0x24')](_0xc4d1('0x3d'),_0x42ba0d[_0xc4d1('0x2a')]);this[_0xc4d1('0x16')](_0x42ba0d['uniqueid']);}else if(this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x3e')]]&&_[_0xc4d1('0x3c')](this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x3e')]][_0xc4d1('0x21')])){logger[_0xc4d1('0x24')](_0xc4d1('0x3f'),_0x42ba0d['linkedid']);this[_0xc4d1('0x16')](_0x42ba0d[_0xc4d1('0x3e')]);}}catch(_0x45d5ba){logger[_0xc4d1('0x2e')](_0xc4d1('0x40'),_0x45d5ba[_0xc4d1('0x3a')]);}};Acw[_0xc4d1('0x38')]['syncHangup']=function(_0x39cf3e){try{if(this['channels'][_0x39cf3e['uniqueid']]&&this['channels'][_0x39cf3e[_0xc4d1('0x2a')]][_0xc4d1('0x21')]){logger['info'](_0xc4d1('0x41'),_0x39cf3e[_0xc4d1('0x2a')]);this[_0xc4d1('0x16')](_0x39cf3e[_0xc4d1('0x2a')]);}else if(this[_0xc4d1('0xa')][_0x39cf3e[_0xc4d1('0x3e')]]&&this[_0xc4d1('0xa')][_0x39cf3e['linkedid']][_0xc4d1('0x21')]){logger[_0xc4d1('0x24')](_0xc4d1('0x42'),_0x39cf3e[_0xc4d1('0x3e')]);this[_0xc4d1('0x16')](_0x39cf3e[_0xc4d1('0x3e')]);}}catch(_0x880bbe){logger[_0xc4d1('0x2e')](_0xc4d1('0x43'),_0x880bbe['message']);}};Acw['prototype'][_0xc4d1('0x12')]=function(_0x50e2e4){try{if(!_['isNil'](this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x44')]])){this['startAcw'](_0x50e2e4[_0xc4d1('0x44')]);if(this[_0xc4d1('0xa')][_0x50e2e4['secondtransfereruniqueid']]){this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x45')]][_0xc4d1('0x21')]=!![];this['channels'][_0x50e2e4[_0xc4d1('0x46')]]=this['channels'][_0x50e2e4['secondtransfereruniqueid']];delete this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x45')]];}}else if(!_[_0xc4d1('0x47')](this['channels'][_0x50e2e4[_0xc4d1('0x46')]])){this['startAcw'](_0x50e2e4[_0xc4d1('0x46')]);if(this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x48')]]){this['channels'][_0x50e2e4[_0xc4d1('0x48')]][_0xc4d1('0x21')]=!![];this['channels'][_0x50e2e4[_0xc4d1('0x44')]]=this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x48')]];delete this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x48')]];}}}catch(_0x2c5e4a){logger[_0xc4d1('0x2e')](_0xc4d1('0x49'),_0x2c5e4a[_0xc4d1('0x3a')]);}};Acw[_0xc4d1('0x38')]['syncBlindTransfer']=function(_0x5dc9e4){try{if(this[_0xc4d1('0xa')][_0x5dc9e4[_0xc4d1('0x4a')]]){logger[_0xc4d1('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xc4d1('0x36')](_0x5dc9e4[_0xc4d1('0x4a')]));this['startAcw'](_0x5dc9e4[_0xc4d1('0x4a')]);}else if(this[_0xc4d1('0xa')][_0x5dc9e4[_0xc4d1('0x4b')]]){logger[_0xc4d1('0x24')](_0xc4d1('0x4c'),JSON['stringify'](_0x5dc9e4[_0xc4d1('0x4b')]));this['startAcw'](_0x5dc9e4[_0xc4d1('0x4b')]);}}catch(_0x14a30f){logger[_0xc4d1('0x2e')]('[ACW][syncBlindTransfer]\x20%s',_0x14a30f['message']);}};Acw[_0xc4d1('0x38')][_0xc4d1('0x10')]=function(_0x1a476e){try{if(this[_0xc4d1('0x7')][_0x1a476e[_0xc4d1('0x18')]]&&this['voiceQueues'][_0x1a476e[_0xc4d1('0x18')]][_0xc4d1('0x4d')]==='all'){if(this[_0xc4d1('0x8')][_0x1a476e['interface']]){logger[_0xc4d1('0x24')](_0xc4d1('0x4e'),_0x1a476e[_0xc4d1('0x2a')],_0x1a476e[_0xc4d1('0x17')],_0x1a476e[_0xc4d1('0x18')]);return RpcUser[_0xc4d1('0x23')](this[_0xc4d1('0x8')][_0x1a476e[_0xc4d1('0x17')]],'Auto-Pause',_0x1a476e['uniqueid']);}}}catch(_0x514256){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x514256[_0xc4d1('0x3a')]);}};module[_0xc4d1('0x4f')]=Acw;
\ No newline at end of file
+var _0x5ee8=['savePause','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','message','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','startAcw','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid'];(function(_0x3e1e32,_0x3d4c0e){var _0x448f7a=function(_0x39fa1e){while(--_0x39fa1e){_0x3e1e32['push'](_0x3e1e32['shift']());}};_0x448f7a(++_0x3d4c0e);}(_0x5ee8,0xe3));var _0x85ee=function(_0x577929,_0x30b109){_0x577929=_0x577929-0x0;var _0xa48414=_0x5ee8[_0x577929];return _0xa48414;};'use strict';var util=require(_0x85ee('0x0'));var _=require(_0x85ee('0x1'));var moment=require(_0x85ee('0x2'));var ami=require(_0x85ee('0x3'));var logger=require(_0x85ee('0x4'))(_0x85ee('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x53359a){this[_0x85ee('0x6')]=_0x53359a['voiceQueues'];this[_0x85ee('0x7')]=_0x53359a[_0x85ee('0x7')];this[_0x85ee('0x8')]=_0x53359a[_0x85ee('0x8')];this[_0x85ee('0x9')]={};ami['on']('agentconnect',this[_0x85ee('0xa')][_0x85ee('0xb')](this));ami['on'](_0x85ee('0xc'),this[_0x85ee('0xd')][_0x85ee('0xb')](this));ami['on'](_0x85ee('0xe'),this[_0x85ee('0xf')][_0x85ee('0xb')](this));ami['on'](_0x85ee('0x10'),this[_0x85ee('0x11')]['bind'](this));ami['on'](_0x85ee('0x12'),this[_0x85ee('0x13')][_0x85ee('0xb')](this));ami['on']('blindtransfer',this[_0x85ee('0x14')]['bind'](this));ami['on'](_0x85ee('0x15'),this[_0x85ee('0x16')][_0x85ee('0xb')](this));}function getDiff(_0x4015e1){var _0x3f1ae2=moment()[_0x85ee('0x17')](0x0);var _0x528640=moment(_0x4015e1)[_0x85ee('0x17')](0x0);return _0x3f1ae2[_0x85ee('0x18')](_0x528640,'seconds');}Acw['prototype'][_0x85ee('0x19')]=function(_0x413977){try{var _0x4e589c=this;var _0x9308b9=this[_0x85ee('0x9')][_0x413977][_0x85ee('0x1a')];var _0x2b6cd8=this[_0x85ee('0x9')][_0x413977][_0x85ee('0x1b')];var _0x2e03d7=this['voiceQueues'][_0x2b6cd8];var _0x8fd7e9=![];var _0x1986a4=_0x85ee('0x1c');if(_0x2e03d7['mandatoryDisposition']){if(_0x2e03d7[_0x85ee('0x1d')][_0x85ee('0x1e')]){_0x8fd7e9=!![];_0x1986a4=_0x2e03d7[_0x85ee('0x1d')]['name'];}}ami[_0x85ee('0x1f')]({'action':_0x85ee('0x20'),'interface':_0x9308b9,'paused':!![],'reason':_0x1986a4})[_0x85ee('0x21')](function(_0x1d029e){if(_0x4e589c[_0x85ee('0x7')][_0x9308b9]){return RpcUser[_0x85ee('0x22')](_0x4e589c[_0x85ee('0x7')][_0x9308b9]['id'])[_0x85ee('0x21')](function(_0xe4e36){if(_0xe4e36&&!_0xe4e36[_0x85ee('0x23')]){logger[_0x85ee('0x24')](_0x85ee('0x25'),_0x413977,_0x9308b9,_0x2b6cd8);var _0xcfb1af=_0x4e589c['channels'][_0x413977][_0x85ee('0x26')]&&_0x4e589c[_0x85ee('0x9')][_0x413977][_0x85ee('0x27')]?_0x4e589c[_0x85ee('0x9')][_0x413977][_0x85ee('0x27')]:_0x413977;return RpcUser[_0x85ee('0x28')](_0x4e589c['agents'][_0x9308b9],_0x1986a4,_0xcfb1af)[_0x85ee('0x21')](function(_0x2cea78){if(!_0x8fd7e9){_0x4e589c[_0x85ee('0x8')][_0x9308b9]={};logger[_0x85ee('0x24')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x413977,_0x4e589c[_0x85ee('0x6')][_0x2b6cd8][_0x85ee('0x29')],_0x9308b9,_0x2b6cd8);_0x4e589c[_0x85ee('0x8')][_0x9308b9]['timer']=setTimeout(_0x4e589c[_0x85ee('0x2a')]['bind'](_0x4e589c,_0x9308b9),_0x4e589c[_0x85ee('0x6')][_0x2b6cd8][_0x85ee('0x29')]*0x3e8);_0x4e589c['timers'][_0x9308b9][_0x85ee('0x2b')]=moment()[_0x85ee('0x2c')](_0x85ee('0x2d'));_0x4e589c[_0x85ee('0x8')][_0x9308b9][_0x85ee('0x2e')]=_0x413977;_0x4e589c[_0x85ee('0x8')][_0x9308b9]['queue']=_0x2b6cd8;_0x4e589c['timers'][_0x9308b9][_0x85ee('0x2f')]=function(){var _0x407167=getDiff(_0x4e589c[_0x85ee('0x8')][_0x9308b9][_0x85ee('0x2b')]);clearTimeout(_0x4e589c[_0x85ee('0x8')][_0x9308b9][_0x85ee('0x30')]);_0x4e589c[_0x85ee('0x8')][_0x9308b9]['timer']=![];RpcVoiceAgentReport[_0x85ee('0x31')]({'acwtime':_0x407167},_0x4e589c[_0x85ee('0x8')][_0x9308b9][_0x85ee('0x2e')],_0x9308b9)['then'](function(_0x53794d){logger[_0x85ee('0x24')](_0x85ee('0x32'),_0x413977,_0x407167,_0x53794d);})[_0x85ee('0x33')](function(_0x14bbe4){logger[_0x85ee('0x34')](_0x85ee('0x35'),_0x413977,_0x14bbe4);});delete _0x4e589c[_0x85ee('0x8')][_0x9308b9];};}});}else{logger['info'](_0x85ee('0x36'),_0x413977,_0x9308b9,_0x2b6cd8);}});}})[_0x85ee('0x33')](function(_0x4b66df){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x413977,_0x4e589c['voiceQueues'][_0x2b6cd8][_0x85ee('0x29')],_0x9308b9,_0x2b6cd8);})['finally'](function(){delete _0x4e589c[_0x85ee('0x9')][_0x413977];});}catch(_0x5e887e){logger[_0x85ee('0x34')]('[ACW][START]\x20%s',_0x5e887e[_0x85ee('0x37')]);}};Acw[_0x85ee('0x38')][_0x85ee('0x2a')]=function(_0x14a1b2){try{var _0x1b52c7=this;if(_0x1b52c7[_0x85ee('0x8')][_0x14a1b2]){_0x1b52c7['timers'][_0x14a1b2][_0x85ee('0x30')]=![];var _0x16f54b=_0x1b52c7[_0x85ee('0x8')][_0x14a1b2][_0x85ee('0x2e')];var _0x4ab803=_0x1b52c7['timers'][_0x14a1b2]['queue'];var _0xb330ac=_0x1b52c7['voiceQueues'][_0x4ab803][_0x85ee('0x29')];logger[_0x85ee('0x24')](_0x85ee('0x39'),_0x16f54b,_0x14a1b2);RpcUser[_0x85ee('0x3a')](this[_0x85ee('0x7')][_0x14a1b2]);RpcVoiceAgentReport[_0x85ee('0x31')]({'acwtime':_0xb330ac,'agentacw':!![]},_0x16f54b,_0x14a1b2)[_0x85ee('0x21')](function(_0x8d5596){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x16f54b,_0xb330ac,_0x8d5596);})[_0x85ee('0x33')](function(_0x3fbd73){logger[_0x85ee('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x16f54b,_0x3fbd73);});}else{logger[_0x85ee('0x34')](_0x85ee('0x3b'),_0x14a1b2);if(_0x1b52c7[_0x85ee('0x8')]){logger[_0x85ee('0x24')](_0x85ee('0x3c'),JSON[_0x85ee('0x3d')](_0x1b52c7[_0x85ee('0x8')]));}}}catch(_0x4645ff){logger[_0x85ee('0x34')]('[ACW][STOP]\x20%s',_0x4645ff[_0x85ee('0x37')]);}};Acw[_0x85ee('0x38')][_0x85ee('0xa')]=function(_0x5a48f0){try{if(this['voiceQueues'][_0x5a48f0[_0x85ee('0x1b')]]&&(this[_0x85ee('0x6')][_0x5a48f0[_0x85ee('0x1b')]]['acw']||this[_0x85ee('0x6')][_0x5a48f0[_0x85ee('0x1b')]][_0x85ee('0x3e')])){if(this[_0x85ee('0x7')][_0x5a48f0[_0x85ee('0x1a')]]){this['channels'][_0x5a48f0['uniqueid']]={'queue':_0x5a48f0[_0x85ee('0x1b')],'interface':_0x5a48f0[_0x85ee('0x1a')],'destlinkedid':_0x5a48f0['destlinkedid']};}}}catch(_0x3659d2){logger[_0x85ee('0x34')](_0x85ee('0x3f'),_0x3659d2[_0x85ee('0x37')]);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x65f7ee){try{if(this['voiceQueues'][_0x65f7ee[_0x85ee('0x1b')]]&&(this[_0x85ee('0x6')][_0x65f7ee[_0x85ee('0x1b')]][_0x85ee('0x5')]||this[_0x85ee('0x6')][_0x65f7ee[_0x85ee('0x1b')]][_0x85ee('0x3e')])){if(this[_0x85ee('0x7')][_0x65f7ee['interface']]){this[_0x85ee('0x9')][_0x65f7ee['uniqueid']]={'queue':_0x65f7ee['queue'],'interface':_0x65f7ee['interface']};}}}catch(_0x4f2c7e){logger['error'](_0x85ee('0x40'),_0x4f2c7e[_0x85ee('0x37')]);}};Acw[_0x85ee('0x38')][_0x85ee('0xd')]=function(_0x400222){try{if(this['channels'][_0x400222[_0x85ee('0x2e')]]&&_[_0x85ee('0x41')](this[_0x85ee('0x9')][_0x400222['uniqueid']][_0x85ee('0x26')])){logger[_0x85ee('0x24')](_0x85ee('0x42'),_0x400222['uniqueid']);this[_0x85ee('0x19')](_0x400222[_0x85ee('0x2e')]);}else if(this['channels'][_0x400222['linkedid']]&&_[_0x85ee('0x41')](this[_0x85ee('0x9')][_0x400222[_0x85ee('0x43')]][_0x85ee('0x26')])){logger['info'](_0x85ee('0x44'),_0x400222[_0x85ee('0x43')]);this[_0x85ee('0x19')](_0x400222[_0x85ee('0x43')]);}}catch(_0x4976c5){logger[_0x85ee('0x34')](_0x85ee('0x45'),_0x4976c5[_0x85ee('0x37')]);}};Acw[_0x85ee('0x38')]['syncHangup']=function(_0x385904){try{if(this[_0x85ee('0x9')][_0x385904[_0x85ee('0x2e')]]&&this[_0x85ee('0x9')][_0x385904[_0x85ee('0x2e')]][_0x85ee('0x26')]){logger[_0x85ee('0x24')](_0x85ee('0x46'),_0x385904[_0x85ee('0x2e')]);this['startAcw'](_0x385904[_0x85ee('0x2e')]);}else if(this['channels'][_0x385904['linkedid']]&&this['channels'][_0x385904['linkedid']][_0x85ee('0x26')]){logger[_0x85ee('0x24')](_0x85ee('0x47'),_0x385904['linkedid']);this[_0x85ee('0x19')](_0x385904[_0x85ee('0x43')]);}}catch(_0x111cbe){logger[_0x85ee('0x34')](_0x85ee('0x48'),_0x111cbe[_0x85ee('0x37')]);}};Acw[_0x85ee('0x38')][_0x85ee('0x13')]=function(_0x2d8a7f){try{if(!_[_0x85ee('0x49')](this['channels'][_0x2d8a7f[_0x85ee('0x4a')]])){this[_0x85ee('0x19')](_0x2d8a7f[_0x85ee('0x4a')]);if(this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4b')]]){this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4b')]]['attended']=!![];this['channels'][_0x2d8a7f[_0x85ee('0x4c')]]=this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4b')]];delete this['channels'][_0x2d8a7f[_0x85ee('0x4b')]];}}else if(!_[_0x85ee('0x49')](this['channels'][_0x2d8a7f['transfertargetuniqueid']])){this[_0x85ee('0x19')](_0x2d8a7f[_0x85ee('0x4c')]);if(this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4d')]]){this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4d')]][_0x85ee('0x26')]=!![];this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4a')]]=this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4d')]];delete this[_0x85ee('0x9')][_0x2d8a7f[_0x85ee('0x4d')]];}}}catch(_0x442117){logger[_0x85ee('0x34')](_0x85ee('0x4e'),_0x442117[_0x85ee('0x37')]);}};Acw[_0x85ee('0x38')][_0x85ee('0x14')]=function(_0x44b19a){try{if(this[_0x85ee('0x9')][_0x44b19a['transfereruniqueid']]){logger[_0x85ee('0x24')](_0x85ee('0x4f'),JSON[_0x85ee('0x3d')](_0x44b19a[_0x85ee('0x50')]));this[_0x85ee('0x19')](_0x44b19a['transfereruniqueid']);}else if(this[_0x85ee('0x9')][_0x44b19a[_0x85ee('0x51')]]){logger[_0x85ee('0x24')](_0x85ee('0x52'),JSON[_0x85ee('0x3d')](_0x44b19a[_0x85ee('0x51')]));this[_0x85ee('0x19')](_0x44b19a[_0x85ee('0x51')]);}}catch(_0x4b1285){logger[_0x85ee('0x34')](_0x85ee('0x53'),_0x4b1285['message']);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x3934ba){try{if(this[_0x85ee('0x6')][_0x3934ba['queue']]&&this[_0x85ee('0x6')][_0x3934ba[_0x85ee('0x1b')]][_0x85ee('0x54')]==='all'){if(this[_0x85ee('0x7')][_0x3934ba[_0x85ee('0x1a')]]){logger[_0x85ee('0x24')](_0x85ee('0x55'),_0x3934ba['uniqueid'],_0x3934ba[_0x85ee('0x1a')],_0x3934ba['queue']);return RpcUser['savePause'](this[_0x85ee('0x7')][_0x3934ba[_0x85ee('0x1a')]],_0x85ee('0x56'),_0x3934ba[_0x85ee('0x2e')]);}}}catch(_0x41f682){logger[_0x85ee('0x34')](_0x85ee('0x57'),_0x41f682['message']);}};module[_0x85ee('0x58')]=Acw;
\ No newline at end of file
index 2826923..8f0ac6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae9b=['then','actionDeviceStateList','catch','log','exports','asterisk-manager','bluebird','util','lodash','ami','../../config/environment','asterisk','username','password','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','port','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve'];(function(_0x3ef3f0,_0x431dae){var _0x1afd5b=function(_0x83f478){while(--_0x83f478){_0x3ef3f0['push'](_0x3ef3f0['shift']());}};_0x1afd5b(++_0x431dae);}(_0xae9b,0x195));var _0xbae9=function(_0x458f49,_0x1a1af1){_0x458f49=_0x458f49-0x0;var _0x36e8c9=_0xae9b[_0x458f49];return _0x36e8c9;};'use strict';var Manager=require(_0xbae9('0x0'));var BPromise=require(_0xbae9('0x1'));var moment=require('moment');var util=require(_0xbae9('0x2'));var _=require(_0xbae9('0x3'));var logger=require('../../config/logger')(_0xbae9('0x4'));var config=require(_0xbae9('0x5'));var ami=new Manager(config[_0xbae9('0x6')]['port'],config[_0xbae9('0x6')]['ip'],config[_0xbae9('0x6')][_0xbae9('0x7')],config['asterisk'][_0xbae9('0x8')],!![]);ami[_0xbae9('0x9')]();ami[_0xbae9('0xa')]=BPromise[_0xbae9('0xb')](ami[_0xbae9('0xc')]);function error(_0x147f90){logger[_0xbae9('0xd')](util[_0xbae9('0xe')](_0xbae9('0xf'),config[_0xbae9('0x6')][_0xbae9('0x7')],config[_0xbae9('0x6')]['ip'],config[_0xbae9('0x6')][_0xbae9('0x10')],util[_0xbae9('0x11')](_0x147f90,![],null)));}function close(){logger[_0xbae9('0xd')](util[_0xbae9('0xe')](_0xbae9('0x12'),config['asterisk']['username'],config[_0xbae9('0x6')]['ip'],config[_0xbae9('0x6')]['port']));}ami[_0xbae9('0x13')]=function(){return function(){return ami[_0xbae9('0xa')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0xbae9('0xa')]({'action':_0xbae9('0x14')});};};ami[_0xbae9('0x15')]=function(){return function(){return ami[_0xbae9('0xa')]({'action':_0xbae9('0x16')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0xbae9('0xa')]({'action':_0xbae9('0x17')});};};ami[_0xbae9('0x18')]=function(){return function(){return ami['Action']({'action':_0xbae9('0x19')});};};function connect(_0x1ec268){logger[_0xbae9('0x1a')](util[_0xbae9('0xe')](_0xbae9('0x1b'),config[_0xbae9('0x6')][_0xbae9('0x7')],config[_0xbae9('0x6')]['ip'],config['asterisk']['port']));ami['once']('error',error);ami[_0xbae9('0x1c')](_0xbae9('0x1d'),close);}ami['on'](_0xbae9('0x1e'),connect);ami['on'](_0xbae9('0x1f'),function(_0x465eff){logger[_0xbae9('0x1a')](util[_0xbae9('0xe')](_0xbae9('0x20'),config[_0xbae9('0x6')][_0xbae9('0x7')],config['asterisk']['ip'],config[_0xbae9('0x6')]['port'],util[_0xbae9('0x11')](_0x465eff,![],null)));});ami['on']('fullybooted',function(_0x2af984){logger[_0xbae9('0x1a')](util[_0xbae9('0xe')](_0xbae9('0x21'),config['asterisk'][_0xbae9('0x7')],config['asterisk']['ip'],config[_0xbae9('0x6')][_0xbae9('0x10')]));return BPromise[_0xbae9('0x22')]()['then'](ami[_0xbae9('0x13')]())[_0xbae9('0x23')](ami[_0xbae9('0x24')]())['then'](ami['actionSipPeerStatus']())[_0xbae9('0x23')](ami['actionQueueSummary']())[_0xbae9('0x23')](ami[_0xbae9('0x18')]())[_0xbae9('0x25')](function(_0x3b0fc6){console[_0xbae9('0x26')](_0x3b0fc6);});});ami[_0xbae9('0x1c')](_0xbae9('0xd'),error);ami[_0xbae9('0x1c')](_0xbae9('0x1d'),close);module[_0xbae9('0x27')]=ami;
\ No newline at end of file
+var _0xd1a3=['asterisk','port','username','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','inspect','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionDeviceStateList','actionCoreShowChannels','catch','log','exports','asterisk-manager','moment','lodash','ami'];(function(_0x2618d5,_0x54487d){var _0x40b152=function(_0x1ebeec){while(--_0x1ebeec){_0x2618d5['push'](_0x2618d5['shift']());}};_0x40b152(++_0x54487d);}(_0xd1a3,0x1d0));var _0x3d1a=function(_0x11507a,_0x1b9de9){_0x11507a=_0x11507a-0x0;var _0x39f763=_0xd1a3[_0x11507a];return _0x39f763;};'use strict';var Manager=require(_0x3d1a('0x0'));var BPromise=require('bluebird');var moment=require(_0x3d1a('0x1'));var util=require('util');var _=require(_0x3d1a('0x2'));var logger=require('../../config/logger')(_0x3d1a('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x3d1a('0x4')][_0x3d1a('0x5')],config[_0x3d1a('0x4')]['ip'],config[_0x3d1a('0x4')][_0x3d1a('0x6')],config[_0x3d1a('0x4')]['password'],!![]);ami[_0x3d1a('0x7')]();ami[_0x3d1a('0x8')]=BPromise[_0x3d1a('0x9')](ami[_0x3d1a('0xa')]);function error(_0x5e76d1){logger[_0x3d1a('0xb')](util[_0x3d1a('0xc')](_0x3d1a('0xd'),config[_0x3d1a('0x4')]['username'],config[_0x3d1a('0x4')]['ip'],config[_0x3d1a('0x4')][_0x3d1a('0x5')],util['inspect'](_0x5e76d1,![],null)));}function close(){logger['error'](util[_0x3d1a('0xc')](_0x3d1a('0xe'),config['asterisk']['username'],config[_0x3d1a('0x4')]['ip'],config['asterisk']['port']));}ami[_0x3d1a('0xf')]=function(){return function(){return ami['Action']({'action':_0x3d1a('0x10')});};};ami['actionDeviceStateList']=function(){return function(){return ami['Action']({'action':_0x3d1a('0x11')});};};ami[_0x3d1a('0x12')]=function(){return function(){return ami['Action']({'action':_0x3d1a('0x13')});};};ami[_0x3d1a('0x14')]=function(){return function(){return ami[_0x3d1a('0x8')]({'action':_0x3d1a('0x15')});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0x3d1a('0x8')]({'action':'coreshowchannels'});};};function connect(_0x2ecf52){logger[_0x3d1a('0x16')](util[_0x3d1a('0xc')](_0x3d1a('0x17'),config[_0x3d1a('0x4')][_0x3d1a('0x6')],config['asterisk']['ip'],config[_0x3d1a('0x4')][_0x3d1a('0x5')]));ami['once']('error',error);ami[_0x3d1a('0x18')](_0x3d1a('0x19'),close);}ami['on'](_0x3d1a('0x1a'),connect);ami['on'](_0x3d1a('0x1b'),function(_0x913a84){logger[_0x3d1a('0x16')](util[_0x3d1a('0xc')](_0x3d1a('0x1c'),config['asterisk'][_0x3d1a('0x6')],config[_0x3d1a('0x4')]['ip'],config[_0x3d1a('0x4')]['port'],util[_0x3d1a('0x1d')](_0x913a84,![],null)));});ami['on'](_0x3d1a('0x1e'),function(_0x4f15e5){logger[_0x3d1a('0x16')](util[_0x3d1a('0xc')](_0x3d1a('0x1f'),config[_0x3d1a('0x4')]['username'],config[_0x3d1a('0x4')]['ip'],config[_0x3d1a('0x4')]['port']));return BPromise[_0x3d1a('0x20')]()[_0x3d1a('0x21')](ami[_0x3d1a('0xf')]())[_0x3d1a('0x21')](ami[_0x3d1a('0x22')]())['then'](ami['actionSipPeerStatus']())[_0x3d1a('0x21')](ami[_0x3d1a('0x14')]())['then'](ami[_0x3d1a('0x23')]())[_0x3d1a('0x24')](function(_0xde8ea3){console[_0x3d1a('0x25')](_0xde8ea3);});});ami[_0x3d1a('0x18')](_0x3d1a('0xb'),error);ami[_0x3d1a('0x18')](_0x3d1a('0x19'),close);module[_0x3d1a('0x26')]=ami;
\ No newline at end of file
index 3358d88..cd281fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x4b0290,_0x188c34){var _0x4bd9f4=function(_0x357f3f){while(--_0x357f3f){_0x4b0290['push'](_0x4b0290['shift']());}};_0x4bd9f4(++_0x188c34);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xb7e7[_0x1f9f37];return _0x21c080;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
+var _0x9ffd=['catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','then','debug','rpc','memberReport','error','result'];(function(_0x563ee6,_0x5d8c71){var _0x467982=function(_0x585a78){while(--_0x585a78){_0x563ee6['push'](_0x563ee6['shift']());}};_0x467982(++_0x5d8c71);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x4cab2a,_0x3bf60f){_0x4cab2a=_0x4cab2a-0x0;var _0x175807=_0x9ffd[_0x4cab2a];return _0x175807;};'use strict';var jayson=require(_0xd9ff('0x0'));var BPromise=require(_0xd9ff('0x1'));var logger=require(_0xd9ff('0x2'))('ami');var client=jayson[_0xd9ff('0x3')][_0xd9ff('0x4')]({'port':0x2329});client[_0xd9ff('0x5')]=function(_0x5493ae,_0x53e962){return new BPromise(function(_0x1c9460,_0x111697){return client['request'](_0x5493ae,_0x53e962)[_0xd9ff('0x6')](function(_0x2982c3){logger[_0xd9ff('0x7')](_0xd9ff('0x8'),_0xd9ff('0x9'),_0x5493ae,_0x53e962,_0x2982c3);if(_0x2982c3[_0xd9ff('0xa')]){logger[_0xd9ff('0xa')](_0xd9ff('0x8'),_0xd9ff('0x9'),_0x5493ae,_0x2982c3['error']['message'],_0x53e962);return _0x111697(_0x2982c3['error']['message']);}else{return _0x1c9460(_0x2982c3[_0xd9ff('0xb')]);}})[_0xd9ff('0xc')](function(_0x193537){logger[_0xd9ff('0xa')](_0xd9ff('0x8'),_0xd9ff('0x9'),_0x5493ae,_0x193537,_0x53e962);return _0x111697(_0x193537);});});};module[_0xd9ff('0xd')]=client;
\ No newline at end of file
index aaaba29..28e1f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f50=['VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','getQueue','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId'];(function(_0x2f47eb,_0x710a87){var _0x522de5=function(_0x1616d2){while(--_0x1616d2){_0x2f47eb['push'](_0x2f47eb['shift']());}};_0x522de5(++_0x710a87);}(_0x7f50,0x15d));var _0x07f5=function(_0x441c2d,_0x35731e){_0x441c2d=_0x441c2d-0x0;var _0x365499=_0x7f50[_0x441c2d];return _0x365499;};'use strict';var util=require(_0x07f5('0x0'));var _=require(_0x07f5('0x1'));var moment=require(_0x07f5('0x2'));function checkNameSurname(_0x3f84ea,_0xb74f71,_0x48e87d){var _0xfa34f7='';if(!_[_0x07f5('0x3')](_0xb74f71)&&_0x07f5('0x4')===typeof _0xb74f71){_0xfa34f7+=_0xb74f71;}if(!_[_0x07f5('0x3')](_0x48e87d)&&'string'===typeof _0x48e87d){_0xfa34f7+='\x20'+_0x48e87d;}if(_0xfa34f7!==''){return _0xfa34f7;}return _0x3f84ea;}function Action(_0xdee80d,_0x16bb8f,_0x2be17c){this[_0x07f5('0x5')]=_0xdee80d;this[_0x07f5('0x6')]=_0x2be17c||undefined;this[_0x07f5('0x7')]=checkNameSurname(_0x16bb8f[_0x07f5('0x8')][_0x07f5('0x9')],_0x16bb8f[_0x07f5('0x8')]['firstName'],_0x16bb8f[_0x07f5('0x8')][_0x07f5('0xa')]);this[_0x07f5('0xb')]=_0x16bb8f[_0x07f5('0x8')][_0x07f5('0x9')];this[_0x07f5('0xc')]=_0xdee80d[_0x07f5('0x7')];this[_0x07f5('0xd')]=_0x16bb8f[_0x07f5('0xd')]||![];this[_0x07f5('0xe')]=_0xdee80d['type'];this[_0x07f5('0xf')]=_0xdee80d[_0x07f5('0xf')]||0x3;this[_0x07f5('0x10')]=_0x16bb8f[_0x07f5('0x10')];this[_0x07f5('0x11')]=_0x16bb8f[_0x07f5('0x11')];this[_0x07f5('0x12')]=_0x16bb8f[_0x07f5('0x12')];this['countnoanswerretry']=_0x16bb8f['countnoanswerretry'];this['countnosuchnumberretry']=_0x16bb8f[_0x07f5('0x13')];this[_0x07f5('0x14')]=_0x16bb8f[_0x07f5('0x14')];this[_0x07f5('0x15')]=_0x16bb8f['countabandonedretry'];this['countmachineretry']=_0x16bb8f[_0x07f5('0x16')];this[_0x07f5('0x17')]=_0x16bb8f[_0x07f5('0x17')];this[_0x07f5('0x18')]=_0x16bb8f[_0x07f5('0x18')];this[_0x07f5('0x19')]=_0x16bb8f[_0x07f5('0x19')];this[_0x07f5('0x1a')]=_0x16bb8f['UserId'];this[_0x07f5('0x1b')]=_0x16bb8f[_0x07f5('0x1b')];this[_0x07f5('0x1c')]=_0x16bb8f[_0x07f5('0x1c')];this[_0x07f5('0x1d')]=_0x16bb8f['id'];this[_0x07f5('0x1e')]=_0x16bb8f[_0x07f5('0x8')][_0x07f5('0x1f')]||'';this[_0x07f5('0x20')]=moment()[_0x07f5('0x21')](_0x07f5('0x22'));this[_0x07f5('0x23')]=_0x16bb8f['callback'];this[_0x07f5('0x24')]=_0x16bb8f[_0x07f5('0x24')];this[_0x07f5('0x25')]=_0x16bb8f[_0x07f5('0x25')];this[_0x07f5('0x26')]=_0x16bb8f['recallme'];this[_0x07f5('0x27')]='';this[_0x07f5('0x28')]='';}Action['prototype'][_0x07f5('0x29')]=function(){return util['format'](_0x07f5('0x2a'),this['name'],this['voiceQueue'][_0x07f5('0x2b')]>0x0?this[_0x07f5('0xb')][_0x07f5('0x2c')](this[_0x07f5('0x5')]['dialCutDigit']):this['number']);};Action[_0x07f5('0x2d')][_0x07f5('0x2e')]=function(){return this[_0x07f5('0xc')];};module['exports']=Action;
\ No newline at end of file
+var _0x10bd=['getQueue','queue','lodash','moment','isNil','voiceQueue','name','Contact','phone','firstName','number','active','type','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','substring','dialCutDigit'];(function(_0x590d71,_0x233993){var _0x3e6667=function(_0x5595ff){while(--_0x5595ff){_0x590d71['push'](_0x590d71['shift']());}};_0x3e6667(++_0x233993);}(_0x10bd,0xaa));var _0xd10b=function(_0x427d1b,_0xd9f7d2){_0x427d1b=_0x427d1b-0x0;var _0x81b627=_0x10bd[_0x427d1b];return _0x81b627;};'use strict';var util=require('util');var _=require(_0xd10b('0x0'));var moment=require(_0xd10b('0x1'));function checkNameSurname(_0x49463e,_0x384d85,_0x169a87){var _0x3ec50a='';if(!_[_0xd10b('0x2')](_0x384d85)&&'string'===typeof _0x384d85){_0x3ec50a+=_0x384d85;}if(!_[_0xd10b('0x2')](_0x169a87)&&'string'===typeof _0x169a87){_0x3ec50a+='\x20'+_0x169a87;}if(_0x3ec50a!==''){return _0x3ec50a;}return _0x49463e;}function Action(_0x3ecdde,_0x309385,_0x508558){this[_0xd10b('0x3')]=_0x3ecdde;this['uniqueid']=_0x508558||undefined;this[_0xd10b('0x4')]=checkNameSurname(_0x309385[_0xd10b('0x5')][_0xd10b('0x6')],_0x309385[_0xd10b('0x5')][_0xd10b('0x7')],_0x309385['Contact']['lastName']);this[_0xd10b('0x8')]=_0x309385['Contact'][_0xd10b('0x6')];this['queue']=_0x3ecdde['name'];this['active']=_0x309385[_0xd10b('0x9')]||![];this[_0xd10b('0xa')]=_0x3ecdde[_0xd10b('0xa')];this['dialQueueTimeout']=_0x3ecdde[_0xd10b('0xb')]||0x3;this['scheduledat']=_0x309385['scheduledat'];this[_0xd10b('0xc')]=_0x309385[_0xd10b('0xc')];this[_0xd10b('0xd')]=_0x309385[_0xd10b('0xd')];this[_0xd10b('0xe')]=_0x309385[_0xd10b('0xe')];this[_0xd10b('0xf')]=_0x309385[_0xd10b('0xf')];this[_0xd10b('0x10')]=_0x309385[_0xd10b('0x10')];this[_0xd10b('0x11')]=_0x309385['countabandonedretry'];this[_0xd10b('0x12')]=_0x309385[_0xd10b('0x12')];this['countagentrejectretry']=_0x309385[_0xd10b('0x13')];this[_0xd10b('0x14')]=_0x309385[_0xd10b('0x14')];this[_0xd10b('0x15')]=_0x309385[_0xd10b('0x15')];this['UserId']=_0x309385[_0xd10b('0x16')];this[_0xd10b('0x17')]=_0x309385[_0xd10b('0x17')];this['CampaignId']=_0x309385[_0xd10b('0x18')];this[_0xd10b('0x19')]=_0x309385['id'];this[_0xd10b('0x1a')]=_0x309385[_0xd10b('0x5')][_0xd10b('0x7')]||'';this[_0xd10b('0x1b')]=moment()['format'](_0xd10b('0x1c'));this['callback']=_0x309385[_0xd10b('0x1d')];this[_0xd10b('0x1e')]=_0x309385[_0xd10b('0x1e')];this[_0xd10b('0x1f')]=_0x309385[_0xd10b('0x1f')];this[_0xd10b('0x20')]=_0x309385[_0xd10b('0x20')];this[_0xd10b('0x21')]='';this[_0xd10b('0x22')]='';}Action[_0xd10b('0x23')][_0xd10b('0x24')]=function(){return util[_0xd10b('0x25')]('\x22%s\x22\x20<%s>',this['name'],this[_0xd10b('0x3')]['dialCutDigit']>0x0?this[_0xd10b('0x8')][_0xd10b('0x26')](this[_0xd10b('0x3')][_0xd10b('0x27')]):this[_0xd10b('0x8')]);};Action[_0xd10b('0x23')][_0xd10b('0x28')]=function(){return this[_0xd10b('0x29')];};module['exports']=Action;
\ No newline at end of file
index 6384ddd..94dd499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc878=['campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','statedesc','Answer','scheduledat','type'];(function(_0x27a511,_0x2dcbb1){var _0x2aedc9=function(_0x57e903){while(--_0x57e903){_0x27a511['push'](_0x27a511['shift']());}};_0x2aedc9(++_0x2dcbb1);}(_0xc878,0x133));var _0x8c87=function(_0x4350c2,_0x112f3c){_0x4350c2=_0x4350c2-0x0;var _0x8b6406=_0xc878[_0x4350c2];return _0x8b6406;};'use strict';var util=require(_0x8c87('0x0'));var _=require(_0x8c87('0x1'));var moment=require('moment');function getSeconds(_0x325203,_0x324af7){var _0x2f4961=moment(_0x325203)[_0x8c87('0x2')](0x0);var _0x53deff=moment(_0x324af7)[_0x8c87('0x2')](0x0);return _0x2f4961[_0x8c87('0x3')](_0x53deff,'seconds');}function AgentComplete(_0xd8575,_0x7e50f9){this['state']=0x4;this[_0x8c87('0x4')]=_0x8c87('0x5');this[_0x8c87('0x6')]=_0xd8575[_0x8c87('0x6')];this[_0x8c87('0x7')]=_0xd8575['type'];this[_0x8c87('0x8')]=_0xd8575[_0x8c87('0x7')]===_0x8c87('0x9')?_0x8c87('0xa'):_0xd8575[_0x8c87('0x7')];this[_0x8c87('0xb')]=_0xd8575[_0x8c87('0xb')];this[_0x8c87('0xc')]=_0xd8575[_0x8c87('0xc')];this[_0x8c87('0xd')]=_0xd8575['countnoanswerretry'];this[_0x8c87('0xe')]=_0xd8575[_0x8c87('0xb')]+_0xd8575[_0x8c87('0xc')]+_0xd8575[_0x8c87('0xd')]+_0xd8575[_0x8c87('0xf')]+_0xd8575[_0x8c87('0x10')]+_0xd8575[_0x8c87('0x11')]+_0xd8575[_0x8c87('0x12')]+_0xd8575[_0x8c87('0x13')];this[_0x8c87('0xf')]=_0xd8575[_0x8c87('0xf')];this['countdropretry']=_0xd8575['countdropretry'];this['countabandonedretry']=_0xd8575[_0x8c87('0x11')];this['countmachineretry']=_0xd8575[_0x8c87('0x12')];this['countagentrejectretry']=_0xd8575['countagentrejectretry'];this['uniqueid']=_0x7e50f9[_0x8c87('0x14')];this[_0x8c87('0x15')]=_0xd8575[_0x8c87('0x16')];this[_0x8c87('0x17')]=_0xd8575['number'];this[_0x8c87('0x18')]=_0xd8575['starttime'];this[_0x8c87('0x19')]=_0xd8575[_0x8c87('0x19')];this[_0x8c87('0x1a')]=_0xd8575[_0x8c87('0x1a')];this[_0x8c87('0x1b')]=moment()[_0x8c87('0x1c')](_0x8c87('0x1d'));this['ringtime']=getSeconds(_0xd8575[_0x8c87('0x19')],_0xd8575[_0x8c87('0x18')]);this[_0x8c87('0x1e')]=getSeconds(_0xd8575[_0x8c87('0x1a')],_0xd8575[_0x8c87('0x19')]);this[_0x8c87('0x1f')]=getSeconds(this['endtime'],_0xd8575[_0x8c87('0x1a')]);this[_0x8c87('0xa')]=_0x7e50f9[_0x8c87('0xa')];this['membername']=_0x7e50f9['membername'];this[_0x8c87('0x20')]=_0x7e50f9[_0x8c87('0x20')];this[_0x8c87('0x21')]=_0xd8575[_0x8c87('0x21')];this[_0x8c87('0x22')]=_0xd8575[_0x8c87('0x22')];this[_0x8c87('0x23')]=_0xd8575[_0x8c87('0x23')];this[_0x8c87('0x24')]=_0xd8575['recallme'];this[_0x8c87('0x25')]=_0xd8575[_0x8c87('0x25')];this[_0x8c87('0x26')]=_0xd8575[_0x8c87('0x26')];this['UserId']=_0xd8575[_0x8c87('0x27')];this[_0x8c87('0x28')]=_0xd8575[_0x8c87('0x28')];this[_0x8c87('0x29')]=_0xd8575[_0x8c87('0x29')];this[_0x8c87('0x2a')]=_0xd8575['originatecalleridnum']||'';this[_0x8c87('0x2b')]=_0xd8575[_0x8c87('0x2b')]||'';}module[_0x8c87('0x2c')]=AgentComplete;
\ No newline at end of file
+var _0x1f00=['YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','state','statedesc','scheduledat','type','queue','countbusyretry','countnoanswerretry','countcongestionretry','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','name','starttime','responsetime','answertime','endtime','format'];(function(_0x1a94e4,_0x218478){var _0x47ea72=function(_0x1fc9c2){while(--_0x1fc9c2){_0x1a94e4['push'](_0x1a94e4['shift']());}};_0x47ea72(++_0x218478);}(_0x1f00,0x113));var _0x01f0=function(_0x224311,_0x461f7b){_0x224311=_0x224311-0x0;var _0x55e012=_0x1f00[_0x224311];return _0x55e012;};'use strict';var util=require(_0x01f0('0x0'));var _=require(_0x01f0('0x1'));var moment=require(_0x01f0('0x2'));function getSeconds(_0x267440,_0x540e3d){var _0x3795c6=moment(_0x267440)[_0x01f0('0x3')](0x0);var _0x142385=moment(_0x540e3d)[_0x01f0('0x3')](0x0);return _0x3795c6['diff'](_0x142385,_0x01f0('0x4'));}function AgentComplete(_0x184cda,_0x59dc3e){this[_0x01f0('0x5')]=0x4;this[_0x01f0('0x6')]='Answer';this[_0x01f0('0x7')]=_0x184cda[_0x01f0('0x7')];this[_0x01f0('0x8')]=_0x184cda['type'];this['campaigntype']=_0x184cda[_0x01f0('0x8')]==='outbound'?_0x01f0('0x9'):_0x184cda['type'];this['countbusyretry']=_0x184cda[_0x01f0('0xa')];this['countcongestionretry']=_0x184cda['countcongestionretry'];this[_0x01f0('0xb')]=_0x184cda[_0x01f0('0xb')];this['countglobal']=_0x184cda['countbusyretry']+_0x184cda[_0x01f0('0xc')]+_0x184cda['countnoanswerretry']+_0x184cda['countnosuchnumberretry']+_0x184cda[_0x01f0('0xd')]+_0x184cda['countabandonedretry']+_0x184cda[_0x01f0('0xe')]+_0x184cda[_0x01f0('0xf')];this[_0x01f0('0x10')]=_0x184cda[_0x01f0('0x10')];this[_0x01f0('0xd')]=_0x184cda[_0x01f0('0xd')];this['countabandonedretry']=_0x184cda[_0x01f0('0x11')];this[_0x01f0('0xe')]=_0x184cda['countmachineretry'];this[_0x01f0('0xf')]=_0x184cda['countagentrejectretry'];this[_0x01f0('0x12')]=_0x59dc3e[_0x01f0('0x12')];this[_0x01f0('0x13')]=_0x184cda[_0x01f0('0x14')];this['calleridnum']=_0x184cda['number'];this[_0x01f0('0x15')]=_0x184cda['starttime'];this[_0x01f0('0x16')]=_0x184cda['responsetime'];this[_0x01f0('0x17')]=_0x184cda['answertime'];this[_0x01f0('0x18')]=moment()[_0x01f0('0x19')](_0x01f0('0x1a'));this['ringtime']=getSeconds(_0x184cda[_0x01f0('0x16')],_0x184cda[_0x01f0('0x15')]);this[_0x01f0('0x1b')]=getSeconds(_0x184cda[_0x01f0('0x17')],_0x184cda[_0x01f0('0x16')]);this[_0x01f0('0x1c')]=getSeconds(this[_0x01f0('0x18')],_0x184cda['answertime']);this[_0x01f0('0x9')]=_0x59dc3e[_0x01f0('0x9')];this[_0x01f0('0x1d')]=_0x59dc3e['membername'];this[_0x01f0('0x1e')]=_0x59dc3e[_0x01f0('0x1e')];this[_0x01f0('0x1f')]=_0x184cda['callback'];this['callbackuniqueid']=_0x184cda[_0x01f0('0x20')];this[_0x01f0('0x21')]=_0x184cda[_0x01f0('0x21')];this[_0x01f0('0x22')]=_0x184cda[_0x01f0('0x22')];this['ContactId']=_0x184cda[_0x01f0('0x23')];this[_0x01f0('0x24')]=_0x184cda['ListId'];this['UserId']=_0x184cda[_0x01f0('0x25')];this[_0x01f0('0x26')]=_0x184cda[_0x01f0('0x26')];this['CampaignId']=_0x184cda[_0x01f0('0x27')];this[_0x01f0('0x28')]=_0x184cda['originatecalleridnum']||'';this[_0x01f0('0x29')]=_0x184cda[_0x01f0('0x29')]||'';}module[_0x01f0('0x2a')]=AgentComplete;
\ No newline at end of file
index a8aba40..3e1813a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3561=['seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff'];(function(_0x578640,_0x3ead24){var _0x52f43f=function(_0x1aa5d8){while(--_0x1aa5d8){_0x578640['push'](_0x578640['shift']());}};_0x52f43f(++_0x3ead24);}(_0x3561,0x94));var _0x1356=function(_0x3bc19d,_0x1680f8){_0x3bc19d=_0x3bc19d-0x0;var _0x1a9867=_0x3561[_0x3bc19d];return _0x1a9867;};'use strict';var util=require(_0x1356('0x0'));var _=require('lodash');var moment=require(_0x1356('0x1'));function getSeconds(_0x23a086,_0x8ef5f){var _0x14465e=moment(_0x23a086)[_0x1356('0x2')](0x0);var _0x313999=moment(_0x8ef5f)[_0x1356('0x2')](0x0);return _0x14465e[_0x1356('0x3')](_0x313999,_0x1356('0x4'));}function Final(_0x23a659){this[_0x1356('0x5')]=_0x23a659[_0x1356('0x5')];this[_0x1356('0x6')]=_0x23a659['scheduledat'];this[_0x1356('0x7')]=_0x23a659[_0x1356('0x7')];this[_0x1356('0x8')]=_0x23a659['type']==='outbound'?_0x1356('0x9'):_0x23a659[_0x1356('0x7')];this['countbusyretry']=_0x23a659[_0x1356('0xa')];this['countcongestionretry']=_0x23a659[_0x1356('0xb')];this[_0x1356('0xc')]=_0x23a659['countnoanswerretry'];this[_0x1356('0xd')]=_0x23a659[_0x1356('0xa')]+_0x23a659['countcongestionretry']+_0x23a659[_0x1356('0xc')]+_0x23a659[_0x1356('0xe')]+_0x23a659[_0x1356('0xf')]+_0x23a659[_0x1356('0x10')]+_0x23a659[_0x1356('0x11')]+_0x23a659[_0x1356('0x12')];this[_0x1356('0xe')]=_0x23a659[_0x1356('0xe')];this[_0x1356('0xf')]=_0x23a659[_0x1356('0xf')];this[_0x1356('0x10')]=_0x23a659[_0x1356('0x10')];this[_0x1356('0x11')]=_0x23a659['countmachineretry'];this['countagentrejectretry']=_0x23a659[_0x1356('0x12')];this[_0x1356('0x9')]=_0x23a659[_0x1356('0x9')];this['calleridname']=_0x23a659[_0x1356('0x13')];this[_0x1356('0x14')]=_0x23a659[_0x1356('0x14')];this[_0x1356('0x15')]=_0x23a659[_0x1356('0x15')];this[_0x1356('0x16')]=_0x23a659[_0x1356('0x16')];this[_0x1356('0x17')]=_0x23a659[_0x1356('0x16')];this[_0x1356('0x18')]=_0x23a659[_0x1356('0x18')]||0x0;this[_0x1356('0x19')]=_0x23a659[_0x1356('0x19')]||0x0;this['talktime']=_0x23a659[_0x1356('0x1a')]||0x0;this['callback']=_0x23a659[_0x1356('0x1b')];this['callbackuniqueid']=_0x23a659[_0x1356('0x1c')];this[_0x1356('0x1d')]=_0x23a659[_0x1356('0x1d')];this[_0x1356('0x1e')]=_0x23a659[_0x1356('0x1e')];this[_0x1356('0x1f')]=_0x23a659['ContactId'];this[_0x1356('0x20')]=_0x23a659[_0x1356('0x20')];this['UserId']=_0x23a659[_0x1356('0x21')];this[_0x1356('0x22')]=_0x23a659[_0x1356('0x22')];this['CampaignId']=_0x23a659[_0x1356('0x23')];this[_0x1356('0x24')]=_0x23a659[_0x1356('0x24')]||'';this[_0x1356('0x25')]=_0x23a659['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
+var _0xb66c=['ringtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','calleridnum','starttime','responsetime'];(function(_0x1c546c,_0x5c57cb){var _0x2cc384=function(_0x4dee11){while(--_0x4dee11){_0x1c546c['push'](_0x1c546c['shift']());}};_0x2cc384(++_0x5c57cb);}(_0xb66c,0x175));var _0xcb66=function(_0x162d57,_0x17fdf8){_0x162d57=_0x162d57-0x0;var _0x221753=_0xb66c[_0x162d57];return _0x221753;};'use strict';var util=require(_0xcb66('0x0'));var _=require('lodash');var moment=require(_0xcb66('0x1'));function getSeconds(_0x55a57b,_0x2afcb8){var _0x24ea13=moment(_0x55a57b)[_0xcb66('0x2')](0x0);var _0x5f487c=moment(_0x2afcb8)[_0xcb66('0x2')](0x0);return _0x24ea13[_0xcb66('0x3')](_0x5f487c,_0xcb66('0x4'));}function Final(_0x21be55){this['uniqueid']=_0x21be55['uniqueid'];this[_0xcb66('0x5')]=_0x21be55[_0xcb66('0x5')];this[_0xcb66('0x6')]=_0x21be55[_0xcb66('0x6')];this[_0xcb66('0x7')]=_0x21be55['type']===_0xcb66('0x8')?_0xcb66('0x9'):_0x21be55[_0xcb66('0x6')];this[_0xcb66('0xa')]=_0x21be55[_0xcb66('0xa')];this['countcongestionretry']=_0x21be55[_0xcb66('0xb')];this[_0xcb66('0xc')]=_0x21be55[_0xcb66('0xc')];this[_0xcb66('0xd')]=_0x21be55['countbusyretry']+_0x21be55[_0xcb66('0xb')]+_0x21be55[_0xcb66('0xc')]+_0x21be55[_0xcb66('0xe')]+_0x21be55[_0xcb66('0xf')]+_0x21be55['countabandonedretry']+_0x21be55[_0xcb66('0x10')]+_0x21be55[_0xcb66('0x11')];this[_0xcb66('0xe')]=_0x21be55[_0xcb66('0xe')];this['countdropretry']=_0x21be55[_0xcb66('0xf')];this['countabandonedretry']=_0x21be55[_0xcb66('0x12')];this['countmachineretry']=_0x21be55[_0xcb66('0x10')];this['countagentrejectretry']=_0x21be55['countagentrejectretry'];this[_0xcb66('0x9')]=_0x21be55[_0xcb66('0x9')];this[_0xcb66('0x13')]=_0x21be55[_0xcb66('0x13')];this['calleridnum']=_0x21be55[_0xcb66('0x14')];this[_0xcb66('0x15')]=_0x21be55[_0xcb66('0x15')];this['responsetime']=_0x21be55[_0xcb66('0x16')];this['endtime']=_0x21be55[_0xcb66('0x16')];this[_0xcb66('0x17')]=_0x21be55[_0xcb66('0x17')]||0x0;this[_0xcb66('0x18')]=_0x21be55['holdtime']||0x0;this['talktime']=_0x21be55['talktime']||0x0;this[_0xcb66('0x19')]=_0x21be55['callback'];this['callbackuniqueid']=_0x21be55[_0xcb66('0x1a')];this['callbackat']=_0x21be55[_0xcb66('0x1b')];this[_0xcb66('0x1c')]=_0x21be55[_0xcb66('0x1c')];this[_0xcb66('0x1d')]=_0x21be55[_0xcb66('0x1d')];this[_0xcb66('0x1e')]=_0x21be55[_0xcb66('0x1e')];this['UserId']=_0x21be55[_0xcb66('0x1f')];this['VoiceQueueId']=_0x21be55['VoiceQueueId'];this[_0xcb66('0x20')]=_0x21be55[_0xcb66('0x20')];this[_0xcb66('0x21')]=_0x21be55['originatecalleridnum']||'';this[_0xcb66('0x22')]=_0x21be55[_0xcb66('0x22')]||'';}module[_0xcb66('0x23')]=Final;
\ No newline at end of file
index 5280114..6d6c570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ad=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0xd7ad,0x95));var _0xdd7a=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xd7ad[_0x3d42d8];return _0x27fc41;};'use strict';var util=require(_0xdd7a('0x0'));var _=require(_0xdd7a('0x1'));var moment=require(_0xdd7a('0x2'));function getSeconds(_0xd64cb6,_0x26c91b){var _0x2af562=moment(_0xd64cb6)[_0xdd7a('0x3')](0x0);var _0x2390e8=moment(_0x26c91b)[_0xdd7a('0x3')](0x0);return _0x2af562['diff'](_0x2390e8,'seconds');}function Hangup(_0x598bd9,_0x2c2c39){this['state']=0x4;this[_0xdd7a('0x4')]=_0xdd7a('0x5');this[_0xdd7a('0x6')]=_0x598bd9['scheduledat'];this[_0xdd7a('0x7')]=_0x598bd9['type'];this[_0xdd7a('0x8')]=_0x598bd9['type']===_0xdd7a('0x9')?_0xdd7a('0xa'):_0x598bd9[_0xdd7a('0x7')];this['countbusyretry']=_0x598bd9[_0xdd7a('0xb')];this['countcongestionretry']=_0x598bd9['countcongestionretry'];this[_0xdd7a('0xc')]=_0x598bd9[_0xdd7a('0xc')];this[_0xdd7a('0xd')]=_0x598bd9[_0xdd7a('0xb')]+_0x598bd9[_0xdd7a('0xe')]+_0x598bd9['countnoanswerretry']+_0x598bd9[_0xdd7a('0xf')]+_0x598bd9['countdropretry']+_0x598bd9['countabandonedretry']+_0x598bd9[_0xdd7a('0x10')]+_0x598bd9[_0xdd7a('0x11')];this[_0xdd7a('0xf')]=_0x598bd9[_0xdd7a('0xf')];this[_0xdd7a('0x12')]=_0x598bd9['countdropretry'];this[_0xdd7a('0x13')]=_0x598bd9[_0xdd7a('0x13')];this[_0xdd7a('0x10')]=_0x598bd9[_0xdd7a('0x10')];this[_0xdd7a('0x11')]=_0x598bd9[_0xdd7a('0x11')];this[_0xdd7a('0x14')]=_0x2c2c39[_0xdd7a('0x14')];this[_0xdd7a('0x15')]=_0x598bd9[_0xdd7a('0x16')];this[_0xdd7a('0x17')]=_0x598bd9[_0xdd7a('0x18')];this[_0xdd7a('0x19')]=_0x598bd9[_0xdd7a('0x19')];this[_0xdd7a('0x1a')]=_0x598bd9[_0xdd7a('0x1a')];this[_0xdd7a('0x1b')]=moment()[_0xdd7a('0x1c')](_0xdd7a('0x1d'));this[_0xdd7a('0x1e')]=getSeconds(_0x598bd9[_0xdd7a('0x1a')],_0x598bd9[_0xdd7a('0x19')]);this[_0xdd7a('0x1f')]=0x0;this[_0xdd7a('0x20')]=getSeconds(this[_0xdd7a('0x1b')],_0x598bd9['responsetime']);this['queue']=_0x598bd9[_0xdd7a('0xa')];this[_0xdd7a('0x21')]=_0xdd7a('0x22');this[_0xdd7a('0x23')]=_0x2c2c39[_0xdd7a('0x24')];this[_0xdd7a('0x25')]=_0x598bd9[_0xdd7a('0x25')];this[_0xdd7a('0x26')]=_0x598bd9[_0xdd7a('0x26')];this['callbackat']=_0x598bd9[_0xdd7a('0x27')];this[_0xdd7a('0x28')]=_0x598bd9['recallme'];this[_0xdd7a('0x29')]=_0x598bd9[_0xdd7a('0x29')];this[_0xdd7a('0x2a')]=_0x598bd9[_0xdd7a('0x2a')];this[_0xdd7a('0x2b')]=_0x598bd9[_0xdd7a('0x2b')];this[_0xdd7a('0x2c')]=_0x598bd9[_0xdd7a('0x2c')];this[_0xdd7a('0x2d')]=_0x598bd9[_0xdd7a('0x2d')];}module[_0xdd7a('0x2e')]=Hangup;
\ No newline at end of file
+var _0x99cb=['seconds','state','statedesc','Answer','scheduledat','type','campaigntype','queue','countcongestionretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','diff'];(function(_0x392ec2,_0x4e9f85){var _0x16e517=function(_0x379e8b){while(--_0x379e8b){_0x392ec2['push'](_0x392ec2['shift']());}};_0x16e517(++_0x4e9f85);}(_0x99cb,0xac));var _0xb99c=function(_0x2c3a28,_0xc0d536){_0x2c3a28=_0x2c3a28-0x0;var _0x2409b7=_0x99cb[_0x2c3a28];return _0x2409b7;};'use strict';var util=require(_0xb99c('0x0'));var _=require(_0xb99c('0x1'));var moment=require('moment');function getSeconds(_0x16102a,_0xdb4e3d){var _0x4447c8=moment(_0x16102a)[_0xb99c('0x2')](0x0);var _0x2ca03d=moment(_0xdb4e3d)[_0xb99c('0x2')](0x0);return _0x4447c8[_0xb99c('0x3')](_0x2ca03d,_0xb99c('0x4'));}function Hangup(_0x347c0d,_0x1b5daf){this[_0xb99c('0x5')]=0x4;this[_0xb99c('0x6')]=_0xb99c('0x7');this[_0xb99c('0x8')]=_0x347c0d[_0xb99c('0x8')];this[_0xb99c('0x9')]=_0x347c0d[_0xb99c('0x9')];this[_0xb99c('0xa')]=_0x347c0d[_0xb99c('0x9')]==='outbound'?_0xb99c('0xb'):_0x347c0d[_0xb99c('0x9')];this['countbusyretry']=_0x347c0d['countbusyretry'];this[_0xb99c('0xc')]=_0x347c0d['countcongestionretry'];this['countnoanswerretry']=_0x347c0d['countnoanswerretry'];this[_0xb99c('0xd')]=_0x347c0d[_0xb99c('0xe')]+_0x347c0d[_0xb99c('0xc')]+_0x347c0d['countnoanswerretry']+_0x347c0d[_0xb99c('0xf')]+_0x347c0d[_0xb99c('0x10')]+_0x347c0d['countabandonedretry']+_0x347c0d['countmachineretry']+_0x347c0d[_0xb99c('0x11')];this['countnosuchnumberretry']=_0x347c0d[_0xb99c('0xf')];this['countdropretry']=_0x347c0d[_0xb99c('0x10')];this[_0xb99c('0x12')]=_0x347c0d['countabandonedretry'];this[_0xb99c('0x13')]=_0x347c0d[_0xb99c('0x13')];this[_0xb99c('0x11')]=_0x347c0d['countagentrejectretry'];this[_0xb99c('0x14')]=_0x1b5daf[_0xb99c('0x14')];this['calleridname']=_0x347c0d[_0xb99c('0x15')];this[_0xb99c('0x16')]=_0x347c0d[_0xb99c('0x17')];this[_0xb99c('0x18')]=_0x347c0d['starttime'];this[_0xb99c('0x19')]=_0x347c0d[_0xb99c('0x19')];this[_0xb99c('0x1a')]=moment()[_0xb99c('0x1b')](_0xb99c('0x1c'));this[_0xb99c('0x1d')]=getSeconds(_0x347c0d[_0xb99c('0x19')],_0x347c0d[_0xb99c('0x18')]);this[_0xb99c('0x1e')]=0x0;this['talktime']=getSeconds(this[_0xb99c('0x1a')],_0x347c0d[_0xb99c('0x19')]);this[_0xb99c('0xb')]=_0x347c0d[_0xb99c('0xb')];this[_0xb99c('0x1f')]=_0xb99c('0x20');this[_0xb99c('0x21')]=_0x1b5daf[_0xb99c('0x22')];this[_0xb99c('0x23')]=_0x347c0d['callback'];this[_0xb99c('0x24')]=_0x347c0d[_0xb99c('0x24')];this[_0xb99c('0x25')]=_0x347c0d[_0xb99c('0x25')];this[_0xb99c('0x26')]=_0x347c0d['recallme'];this['ContactId']=_0x347c0d[_0xb99c('0x27')];this['ListId']=_0x347c0d['ListId'];this[_0xb99c('0x28')]=_0x347c0d[_0xb99c('0x28')];this[_0xb99c('0x29')]=_0x347c0d[_0xb99c('0x29')];this[_0xb99c('0x2a')]=_0x347c0d[_0xb99c('0x2a')];}module[_0xb99c('0x2b')]=Hangup;
\ No newline at end of file
index 8365e9c..96a84ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x949d=['starttime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','name','calleridnum','number','responsetime','endtime','ringtime'];(function(_0x53f04f,_0x419aa8){var _0x16a824=function(_0x5712c9){while(--_0x5712c9){_0x53f04f['push'](_0x53f04f['shift']());}};_0x16a824(++_0x419aa8);}(_0x949d,0x81));var _0xd949=function(_0x18b5b3,_0x55ad90){_0x18b5b3=_0x18b5b3-0x0;var _0x2ae5c7=_0x949d[_0x18b5b3];return _0x2ae5c7;};'use strict';var util=require(_0xd949('0x0'));var _=require(_0xd949('0x1'));var moment=require(_0xd949('0x2'));function getSeconds(_0x35c14b,_0x381e70){var _0x27fb48=moment(_0x35c14b)[_0xd949('0x3')](0x0);var _0x420fb8=moment(_0x381e70)[_0xd949('0x3')](0x0);return _0x27fb48['diff'](_0x420fb8,_0xd949('0x4'));}function History(_0x57f78b){this[_0xd949('0x5')]=_0x57f78b[_0xd949('0x5')];this['scheduledat']=_0x57f78b[_0xd949('0x6')]||undefined;this[_0xd949('0x7')]=_0x57f78b[_0xd949('0x7')];this[_0xd949('0x8')]=_0x57f78b[_0xd949('0x7')]===_0xd949('0x9')?'queue':_0x57f78b['type'];this[_0xd949('0xa')]=_0x57f78b['countbusyretry'];this['countcongestionretry']=_0x57f78b[_0xd949('0xb')];this[_0xd949('0xc')]=_0x57f78b[_0xd949('0xc')];this[_0xd949('0xd')]=_0x57f78b[_0xd949('0xa')]+_0x57f78b[_0xd949('0xb')]+_0x57f78b['countnoanswerretry']+_0x57f78b[_0xd949('0xe')]+_0x57f78b[_0xd949('0xf')]+_0x57f78b[_0xd949('0x10')]+_0x57f78b[_0xd949('0x11')]+_0x57f78b[_0xd949('0x12')];this[_0xd949('0xe')]=_0x57f78b[_0xd949('0xe')];this[_0xd949('0xf')]=_0x57f78b[_0xd949('0xf')];this[_0xd949('0x10')]=_0x57f78b[_0xd949('0x10')];this[_0xd949('0x11')]=_0x57f78b['countmachineretry'];this['countagentrejectretry']=_0x57f78b[_0xd949('0x12')];this[_0xd949('0x13')]=_0x57f78b[_0xd949('0x13')];this[_0xd949('0x14')]=_0x57f78b[_0xd949('0x15')];this[_0xd949('0x16')]=_0x57f78b[_0xd949('0x17')];this['starttime']=_0x57f78b['starttime'];this['responsetime']=_0x57f78b[_0xd949('0x18')];this[_0xd949('0x19')]=_0x57f78b[_0xd949('0x18')];this[_0xd949('0x1a')]=getSeconds(_0x57f78b[_0xd949('0x18')],_0x57f78b[_0xd949('0x1b')]);this['holdtime']=0x0;this['talktime']=0x0;this[_0xd949('0x1c')]=_0x57f78b[_0xd949('0x1c')];this['callbackuniqueid']=_0x57f78b[_0xd949('0x1d')];this[_0xd949('0x1e')]=_0x57f78b[_0xd949('0x1e')];this[_0xd949('0x1f')]=_0x57f78b[_0xd949('0x1f')];this[_0xd949('0x20')]=_0x57f78b[_0xd949('0x20')];this['ListId']=_0x57f78b[_0xd949('0x21')];this[_0xd949('0x22')]=_0x57f78b[_0xd949('0x22')];this[_0xd949('0x23')]=_0x57f78b[_0xd949('0x23')];this[_0xd949('0x24')]=_0x57f78b[_0xd949('0x24')];this['originatecalleridnum']=_0x57f78b['originatecalleridnum']||'';this[_0xd949('0x25')]=_0x57f78b[_0xd949('0x25')]||'';}module[_0xd949('0x26')]=History;
\ No newline at end of file
+var _0x7947=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','calleridnum','number','starttime','responsetime','endtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x1ccb95,_0x1b3be8){var _0x1a9725=function(_0x1a6bf7){while(--_0x1a6bf7){_0x1ccb95['push'](_0x1ccb95['shift']());}};_0x1a9725(++_0x1b3be8);}(_0x7947,0x188));var _0x7794=function(_0x111ad9,_0x535da0){_0x111ad9=_0x111ad9-0x0;var _0x3cc440=_0x7947[_0x111ad9];return _0x3cc440;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x7794('0x0'));function getSeconds(_0x30b8f8,_0x38600b){var _0x49eeee=moment(_0x30b8f8)[_0x7794('0x1')](0x0);var _0x2999d4=moment(_0x38600b)[_0x7794('0x1')](0x0);return _0x49eeee[_0x7794('0x2')](_0x2999d4,'seconds');}function History(_0xe4091b){this['uniqueid']=_0xe4091b[_0x7794('0x3')];this[_0x7794('0x4')]=_0xe4091b[_0x7794('0x4')]||undefined;this[_0x7794('0x5')]=_0xe4091b[_0x7794('0x5')];this[_0x7794('0x6')]=_0xe4091b[_0x7794('0x5')]===_0x7794('0x7')?_0x7794('0x8'):_0xe4091b['type'];this['countbusyretry']=_0xe4091b[_0x7794('0x9')];this['countcongestionretry']=_0xe4091b[_0x7794('0xa')];this['countnoanswerretry']=_0xe4091b['countnoanswerretry'];this[_0x7794('0xb')]=_0xe4091b[_0x7794('0x9')]+_0xe4091b[_0x7794('0xa')]+_0xe4091b['countnoanswerretry']+_0xe4091b['countnosuchnumberretry']+_0xe4091b[_0x7794('0xc')]+_0xe4091b['countabandonedretry']+_0xe4091b[_0x7794('0xd')]+_0xe4091b[_0x7794('0xe')];this[_0x7794('0xf')]=_0xe4091b[_0x7794('0xf')];this['countdropretry']=_0xe4091b['countdropretry'];this['countabandonedretry']=_0xe4091b[_0x7794('0x10')];this['countmachineretry']=_0xe4091b[_0x7794('0xd')];this[_0x7794('0xe')]=_0xe4091b[_0x7794('0xe')];this[_0x7794('0x8')]=_0xe4091b['queue'];this['calleridname']=_0xe4091b['name'];this[_0x7794('0x11')]=_0xe4091b[_0x7794('0x12')];this[_0x7794('0x13')]=_0xe4091b[_0x7794('0x13')];this[_0x7794('0x14')]=_0xe4091b[_0x7794('0x14')];this[_0x7794('0x15')]=_0xe4091b[_0x7794('0x14')];this['ringtime']=getSeconds(_0xe4091b[_0x7794('0x14')],_0xe4091b[_0x7794('0x13')]);this['holdtime']=0x0;this[_0x7794('0x16')]=0x0;this[_0x7794('0x17')]=_0xe4091b[_0x7794('0x17')];this[_0x7794('0x18')]=_0xe4091b[_0x7794('0x18')];this[_0x7794('0x19')]=_0xe4091b[_0x7794('0x19')];this[_0x7794('0x1a')]=_0xe4091b['recallme'];this[_0x7794('0x1b')]=_0xe4091b[_0x7794('0x1b')];this['ListId']=_0xe4091b[_0x7794('0x1c')];this['UserId']=_0xe4091b[_0x7794('0x1d')];this[_0x7794('0x1e')]=_0xe4091b[_0x7794('0x1e')];this[_0x7794('0x1f')]=_0xe4091b[_0x7794('0x1f')];this[_0x7794('0x20')]=_0xe4091b[_0x7794('0x20')]||'';this[_0x7794('0x21')]=_0xe4091b[_0x7794('0x21')]||'';}module[_0x7794('0x22')]=History;
\ No newline at end of file
index b386428..a028959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757f=['dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','channel','actionid','locked','paused','stateinterface','push','queueStatusComplete','[unlockQueueStatus][undefined]','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','indexOf','Action','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','Timezone:\x20','power','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','syncQueueSummary','dialGlobalInterval','dialTimezone','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','pow','random','match','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','ACTIVE','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','dialPrefix','dialCutDigit','SIP/%s/%s%s','trim','from-sip','[originateError]:\x20%s','[originate][error]','responsetime','getQueue','response','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','callProgressDetecting','[callProgressDetecting]','entity\x20is\x20undefine','object','evt\x20is\x20undefine','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','busy','reason\x205\x20busy','Congestion','custom:agentcongestion','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','handlePower','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Max\x20Drop\x20','started\x20in\x20predictive\x20at','getDataPredictive','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','abandonmentRate','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','agentBusyFactor','[CatchErlangB]','erlangCallToSecond','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','actionOriginate','scheduledat','Agent','[rescheduleContact][dialRecallInQueue]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','maxNumberOriginate','RUNNING','Contact.phone','loggerHandler','[getContactDialer2]','tryOriginatePredictive','not_inuse','[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','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Umin\x20=\x20','exports','util','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','../ami','redis','defaults','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','sequence','preview','voiceQueues','campaigns','agents','trunks','channels','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','hangup','syncHangup','newexten','syncNewExten','varset','queuemember','syncQueueStatusComplete','loopClearZombieChannels','isUndefined','message','name','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Interval','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','outbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','format','voice:queue:%s','type','ivr','campaign:ivr:%s','campaign:save','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','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','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','length','originated','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','pTalking','sendMessageOneNotActive','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','starttime','clearZombieChannels','actions','undefined','enqueue','isNil','status','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','merge','pick','ContactId','ListId','UserId','[emptyContact][createHistory]','isSuccess','Success','isTrunkReachable','active','SIP/%s','reachable','unmonitored','saveInDb','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HangupInAMD','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','MACHINE','Machine','membername','countglobal','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','countmachineretry','dialMachineMaxRetry','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','countagentrejectretry','createStateFinal','reason\x2019\x20machine....','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','outboundUnknownCallsDay','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','[syncQueueCallerAbandon]\x20[Drop]','droptime','dialQueueTimeout','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','Drop','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','countabandonedretry'];(function(_0x60581d,_0xa3e313){var _0x43dd38=function(_0x38c017){while(--_0x38c017){_0x60581d['push'](_0x60581d['shift']());}};_0x43dd38(++_0xa3e313);}(_0x757f,0xee));var _0xf757=function(_0x47afba,_0x290a9d){_0x47afba=_0x47afba-0x0;var _0x55d7b4=_0x757f[_0x47afba];return _0x55d7b4;};'use strict';var util=require(_0xf757('0x0'));var _=require('lodash');var BPromise=require(_0xf757('0x1'));var uuid=require(_0xf757('0x2'));var moment=require(_0xf757('0x3'));var rr=require('rr');var md5=require(_0xf757('0x4'));var Redis=require(_0xf757('0x5'));var ut=require(_0xf757('0x6'));var config=require(_0xf757('0x7'));var logger=require(_0xf757('0x8'))(_0xf757('0x9'));var loggerBooked=require('../../../config/logger')(_0xf757('0xa'));var loggerPredictive=require(_0xf757('0x8'))(_0xf757('0xb'));var loggerPredictiveCalls=require(_0xf757('0x8'))(_0xf757('0xc'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0xf757('0xd'));config[_0xf757('0xe')]=_[_0xf757('0xf')](config[_0xf757('0xe')],{'host':'localhost','port':0x18eb});var io=require(_0xf757('0x10'))(new Redis(config[_0xf757('0xe')]));var cmHopper=require(_0xf757('0x11'));var cmHopperHistory=require(_0xf757('0x12'));var cmHopperBlack=require(_0xf757('0x13'));var voiceQueueRt=require(_0xf757('0x14'));var Action=require(_0xf757('0x15'));var History=require(_0xf757('0x16'));var Final=require(_0xf757('0x17'));var AgentComplete=require(_0xf757('0x18'));var QueueCallerAbandon=require(_0xf757('0x19'));var Hangup=require(_0xf757('0x1a'));var ipAgi=process[_0xf757('0x1b')][_0xf757('0x1c')]||_0xf757('0x1d');var strategy={'rrmemory':_0xf757('0x1e'),'roundrobin':_0xf757('0x1f')};var Sequence=function(){};Sequence[_0xf757('0x20')]['enqueue']=function(_0x328fed){this[_0xf757('0x21')]=this['tail']?this[_0xf757('0x21')][_0xf757('0x22')](_0x328fed):_0x328fed();};function Dialer(_0x10f49e,_0x53fdce){this[_0xf757('0x23')]=new Sequence();this[_0xf757('0x24')]=_0x53fdce;this[_0xf757('0x25')]=_0x10f49e[_0xf757('0x25')];this['campaigns']=_0x10f49e[_0xf757('0x26')];this[_0xf757('0x27')]=_0x10f49e[_0xf757('0x27')];this[_0xf757('0x28')]=_0x10f49e[_0xf757('0x28')];this['maxNumberOriginate']=config['maxNumberOriginate']||0x2;this[_0xf757('0x29')]={};this['actions']={};this['contactsId']={};this[_0xf757('0x2a')]={};this[_0xf757('0x2b')]={};this['startPredictive']={};this[_0xf757('0x2c')]={};this[_0xf757('0x2d')]={};this[_0xf757('0x2e')]={};this[_0xf757('0x2f')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0xf757('0x30')](this));ami['on'](_0xf757('0x31'),this[_0xf757('0x32')][_0xf757('0x30')](this));ami['on'](_0xf757('0x33'),this[_0xf757('0x34')][_0xf757('0x30')](this));ami['on'](_0xf757('0x35'),this[_0xf757('0x36')][_0xf757('0x30')](this));ami['on']('custom:queuesummary',this['syncQueueSummary'][_0xf757('0x30')](this));ami['on'](_0xf757('0x37'),this[_0xf757('0x38')][_0xf757('0x30')](this));ami['on'](_0xf757('0x39'),this[_0xf757('0x3a')][_0xf757('0x30')](this));ami['on'](_0xf757('0x3b'),this['syncVarSet']['bind'](this));ami['on'](_0xf757('0x3c'),this['syncQueueMember'][_0xf757('0x30')](this));ami['on']('queuestatuscomplete',this[_0xf757('0x3d')][_0xf757('0x30')](this));this['loopCampaigns']();this[_0xf757('0x3e')]();}function isNotNull(_0x269388){return _0x269388!==null&&!_[_0xf757('0x3f')](_0x269388);}function checkIsLoggedIn(_0x3ad266,_0x542b16){return function(){if(_0x542b16<=0x0){_0x3ad266[_0xf757('0x40')]='AGENTS_NOT_LOGGED';throw _0x3ad266[_0xf757('0x41')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0xa03db8){return _0xa03db8;}function checkIsActive(_0x5b751c,_0x1df95d){return function(){if(!isActive(_0x1df95d)){_0x5b751c[_0xf757('0x40')]='NOT_ACTIVE';throw _0x5b751c[_0xf757('0x41')]+'\x20NOT\x20Active';}};}function checkInterval(_0x3e7489){return function(){if(!isNotNull(_0x3e7489['Interval'])){_0x3e7489[_0xf757('0x40')]=_0xf757('0x42');throw _0x3e7489[_0xf757('0x41')]+_0xf757('0x43');}if(!isNotNull(_0x3e7489['Interval'][_0xf757('0x44')])){_0x3e7489[_0xf757('0x40')]=_0xf757('0x42');throw _0x3e7489[_0xf757('0x41')]+_0xf757('0x43');}if(!isNotNull(_[_0xf757('0x45')](_0x3e7489[_0xf757('0x46')][_0xf757('0x44')]))){_0x3e7489[_0xf757('0x40')]='INTERVAL_IS_NULL';throw _0x3e7489[_0xf757('0x41')]+_0xf757('0x43');}};}function msgResponse(_0x444886,_0x4645dc,_0x3718fb){return{'action':_0x444886,'response':_0x4645dc,'message':_0x3718fb,'stack':_0x3718fb};}function myreject(_0x3eaaf2){return function(_0x29d6b0){return _0x3eaaf2(msgResponse(_0xf757('0x47'),_0xf757('0x48'),JSON[_0xf757('0x49')](_0x29d6b0)));};}function getSeconds(_0x555393,_0x56174b){var _0x530c8a=moment(_0x555393)['milliseconds'](0x0);var _0x2584e8=moment(_0x56174b)[_0xf757('0x4a')](0x0);return _0x530c8a[_0xf757('0x4b')](_0x2584e8,_0xf757('0x4c'));}function emit(_0x3d06c3,_0x54a332,_0x5ed195){io['to'](_0x3d06c3)[_0xf757('0x4d')](_0x54a332,_0x5ed195);}function emitVoiceQueueSummary(_0x39963b){if(_0x39963b['type']===_0xf757('0x4e')){var _0x1cb9ba={'id':_0x39963b['id'],'name':_0x39963b['name'],'strategy':_0x39963b[_0xf757('0x4f')],'answered':_0x39963b[_0xf757('0x50')],'available':_0x39963b[_0xf757('0x51')],'loggedIn':_0x39963b[_0xf757('0x52')],'pTalking':_0x39963b['pTalking'],'sumBillable':_0x39963b[_0xf757('0x53')],'sumDuration':_0x39963b[_0xf757('0x54')],'sumHoldTime':_0x39963b[_0xf757('0x55')]||0x0,'talking':_0x39963b[_0xf757('0x56')],'total':_0x39963b[_0xf757('0x57')],'type':_0x39963b['type'],'unmanaged':_0x39963b['unmanaged'],'abandoned':_0x39963b[_0xf757('0x58')],'waiting':_0x39963b[_0xf757('0x59')],'loggedInDb':_0x39963b[_0xf757('0x5a')],'dialActive':_0x39963b[_0xf757('0x5b')],'dialMethod':_0x39963b[_0xf757('0x5c')],'dialOriginateCallerIdName':_0x39963b['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x39963b['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x39963b[_0xf757('0x5d')],'dialPrefix':_0x39963b['dialPrefix'],'outboundAnswerAgiCallsDay':_0x39963b[_0xf757('0x5e')],'outboundAnswerCallsDay':_0x39963b[_0xf757('0x5f')],'outboundBlacklistCallsDay':_0x39963b[_0xf757('0x60')],'outboundBusyCallsDay':_0x39963b['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x39963b[_0xf757('0x61')],'outboundDropCallsDayACS':_0x39963b[_0xf757('0x62')],'outboundDropCallsDayCallersExit':_0x39963b['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x39963b[_0xf757('0x63')],'outboundNoAnswerCallsDay':_0x39963b[_0xf757('0x64')],'outboundNoSuchCallsDay':_0x39963b[_0xf757('0x65')],'outboundOriginateFailureCallsDay':_0x39963b[_0xf757('0x66')],'outboundReCallsDay':_0x39963b[_0xf757('0x67')],'outboundRejectCallsDay':_0x39963b[_0xf757('0x68')],'outboundUnknownCallsDay':_0x39963b['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x39963b[_0xf757('0x69')],'predictiveIntervalAvgHoldtime':_0x39963b['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x39963b[_0xf757('0x6a')],'predictiveIntervalDroppedCallsCallersExit':_0x39963b[_0xf757('0x6b')],'predictiveIntervalDroppedCallsTimeout':_0x39963b[_0xf757('0x6c')],'predictiveIntervalErlangCalls':_0x39963b['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x39963b[_0xf757('0x6d')],'predictiveIntervalHitRate':_0x39963b[_0xf757('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x39963b['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x39963b[_0xf757('0x6f')],'predictiveIntervalAvailable':_0x39963b[_0xf757('0x70')],'predictiveIntervalTotalCalls':_0x39963b[_0xf757('0x71')],'message':_0x39963b[_0xf757('0x40')],'originated':_0x39963b['originated'],'erlangCalls':_0x39963b[_0xf757('0x72')],'erlangCallToSecond':_0x39963b['erlangCallToSecond'],'erlangAbandonmentRate':_0x39963b[_0xf757('0x73')],'erlangBusyFactor':_0x39963b[_0xf757('0x74')],'startPredictive':_0x39963b[_0xf757('0x75')],'startProgressive':_0x39963b[_0xf757('0x2c')]};if(_0x39963b[_0xf757('0x76')]){_0x1cb9ba[_0xf757('0x76')]={'id':_0x39963b['Trunk']['id'],'name':_0x39963b[_0xf757('0x76')][_0xf757('0x41')],'active':_0x39963b['Trunk']['active'],'callerid':_0x39963b[_0xf757('0x76')]['callerid']};}if(_0x39963b[_0xf757('0x46')]){_0x1cb9ba[_0xf757('0x46')]={'id':_0x39963b[_0xf757('0x46')]['id'],'name':_0x39963b[_0xf757('0x46')][_0xf757('0x41')]};}var _0x27ac4d=md5(JSON[_0xf757('0x49')](_0x1cb9ba));if(_0x39963b[_0xf757('0x4')]!==_0x27ac4d){_0x39963b[_0xf757('0x4')]=_0x27ac4d;emit(util[_0xf757('0x77')](_0xf757('0x78'),_0x1cb9ba[_0xf757('0x41')]),'voice_queue:save',_0x1cb9ba);}}}function emitCampaignSummary(_0x295fd7){if(_0x295fd7[_0xf757('0x79')]===_0xf757('0x7a')){emit(util['format'](_0xf757('0x7b'),_0x295fd7[_0xf757('0x41')]),_0xf757('0x7c'),_0x295fd7);}}function checkGetDataPredictive(_0x61c367){if(isNotNull(_0x61c367)&&!_['isEmpty'](_0x61c367)){loggerPredictive[_0xf757('0x7d')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xf757('0x7d')](_0xf757('0x7e'),_0x61c367[_0xf757('0x71')]);loggerPredictive[_0xf757('0x7d')](_0xf757('0x7f'),_0x61c367['predictiveIntervalAnsweredCalls']);loggerPredictive['info'](_0xf757('0x80'),_0x61c367[_0xf757('0x6c')]);loggerPredictive['info'](_0xf757('0x81'),_0x61c367['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xf757('0x7d')](_0xf757('0x82'),_0x61c367[_0xf757('0x83')]);loggerPredictive['info'](_0xf757('0x84'),_0x61c367[_0xf757('0x6a')]);loggerPredictive['info'](_0xf757('0x85'));if(_0x61c367['predictiveIntervalTotalCalls']>0x0){if(!_[_0xf757('0x3f')](_0x61c367['predictiveIntervalAvgTalktime'])&&_0x61c367[_0xf757('0x6a')]>0x0){return!![];}loggerPredictive[_0xf757('0x7d')](_0xf757('0x86'));if(!_['isUndefined'](_0x61c367[_0xf757('0x83')])&&_0x61c367[_0xf757('0x83')]>0x0){return!![];}loggerPredictive[_0xf757('0x7d')](_0xf757('0x87'));}else{loggerPredictive[_0xf757('0x7d')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xf757('0x7d')](_0xf757('0x88'));}return![];}function mergeDataErlangB(_0x574509){return function(_0x3f74bf){loggerPredictive[_0xf757('0x7d')](_0xf757('0x89'));loggerPredictive[_0xf757('0x7d')](_0xf757('0x8a'),_0x3f74bf[_0xf757('0x72')]);loggerPredictive[_0xf757('0x7d')](_0xf757('0x8b'),_0x3f74bf['erlangCallToSecond']);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3f74bf['erlangAbandonmentRate']);loggerPredictive[_0xf757('0x7d')](_0xf757('0x8c'),_0x3f74bf['erlangBusyFactor']);loggerPredictive[_0xf757('0x7d')](_0xf757('0x8d'),_0x3f74bf[_0xf757('0x73')]);loggerPredictive[_0xf757('0x7d')](_0xf757('0x85'));_['merge'](_0x574509,_0x3f74bf);};}function getDiff(_0x42b2be){var _0xe892f2=moment()[_0xf757('0x4a')](0x0);var _0x30acc9=moment(_0x42b2be)['milliseconds'](0x0);return _0xe892f2[_0xf757('0x4b')](_0x30acc9,_0xf757('0x4c'));}function ifInterval(_0x3e140e,_0xe0cbb6){if(_[_0xf757('0x3f')](_0xe0cbb6)){return![];}return getDiff(_0xe0cbb6)<_0x3e140e*0x3c;}function freeVariablesPredictive(_0x14f918){if(isNotNull(_0x14f918)){if(!_[_0xf757('0x3f')](_0x14f918['startProgressive'])){_0x14f918[_0xf757('0x2c')]=undefined;loggerPredictive[_0xf757('0x7d')](_0x14f918[_0xf757('0x41')],_0xf757('0x8e'));}if(!_[_0xf757('0x3f')](_0x14f918[_0xf757('0x75')])){_0x14f918[_0xf757('0x75')]=undefined;loggerPredictive[_0xf757('0x7d')](_0x14f918[_0xf757('0x41')],_0xf757('0x8f'));}if(!_[_0xf757('0x3f')](_0x14f918[_0xf757('0x90')])){clearInterval(_0x14f918[_0xf757('0x90')]);_0x14f918[_0xf757('0x90')]=undefined;loggerPredictive[_0xf757('0x7d')](_0x14f918[_0xf757('0x41')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x54049b,_0x5675b1){if(_0x5675b1===0x0){return 0x0;}var _0x7f648c=0x1;for(var _0x58121f=0x1;_0x58121f<=_0x5675b1;_0x58121f+=0x1){_0x7f648c=0x1+_0x7f648c*_0x58121f/_0x54049b;}return 0x1/_0x7f648c;}function isVoiceQueueOutbound(_0x55f81e){return _0x55f81e===_0xf757('0x4e');}function isNotPreview(_0x37aa87){return _0x37aa87!==_0xf757('0x24');}function isCampaignIvr(_0x248866){return _0x248866===_0xf757('0x7a');}function getCallerId(_0x48b8d9,_0x1e315a,_0x562e88){if(!_[_0xf757('0x3f')](_0x562e88)&&typeof _0x562e88===_0xf757('0x91')&&!_[_0xf757('0x45')](_0x562e88)){if(!_['isUndefined'](_0x1e315a)&&typeof _0x1e315a===_0xf757('0x91')&&!_[_0xf757('0x45')](_0x1e315a)){return util['format']('\x22%s\x22\x20<%s>',_0x1e315a,_0x562e88);}return util[_0xf757('0x77')](_0xf757('0x92'),_0x562e88,_0x562e88);}if(!_[_0xf757('0x3f')](_0x48b8d9)&&typeof _0x48b8d9===_0xf757('0x91')&&!_[_0xf757('0x45')](_0x48b8d9)){return _0x48b8d9;}return _0xf757('0x93');}function loggerCatchQueueSummary(_0x3fe8e6,_0x4fdab7){return function(_0x34a7dc){freeVariablesPredictive(_0x4fdab7);emitVoiceQueueSummary(_0x4fdab7);emitCampaignSummary(_0x4fdab7);loggerSyncQueueSummary['error'](_0x3fe8e6,util[_0xf757('0x94')](_0x34a7dc,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x5c7eea,_0x528602){return function(_0x34a5ad){loggerPredictive['error'](_0x528602['name'],_0x5c7eea);loggerPredictive[_0xf757('0x95')](_0x34a5ad['stack']);freeVariablesPredictive(_0x528602);};}function loggerCatch(_0x3b0aa5){return function(_0x1b8e66){logger[_0xf757('0x95')](_0x3b0aa5,util[_0xf757('0x94')](_0x1b8e66,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x180441){return _0x180441&&!_['isUndefined'](_0x180441)&&_0x180441[_0xf757('0x96')]>0x0;}function decremetOriginate(_0x5802dd){if(!_[_0xf757('0x3f')](_0x5802dd)&&_0x5802dd!==null){if(typeof _0x5802dd[_0xf757('0x97')]!=='undefined'){if(_0x5802dd[_0xf757('0x97')]>0x0){_0x5802dd[_0xf757('0x97')]-=0x1;}else{logger[_0xf757('0x95')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xf757('0x95')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0xb7ae49,_0x17502c,_0x14ee04){if(_0x17502c>_0x14ee04){for(var _0x245eca=0x0;_0x245eca<_0x17502c-_0x14ee04;_0x245eca+=0x1){decremetOriginate(_0xb7ae49);}}}function loggerGetContactDialer(_0x3c189e,_0x1d2d7a,_0x331a81){return function(_0x14ef2f){checkContactLowerLimitOriginate(_0x1d2d7a,_0x331a81,0x0);logger[_0xf757('0x95')](_0x3c189e,util['inspect'](_0x14ef2f,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x563688){return function(_0x252738){if(isNotNull(_0x252738)&&isNotNull(_0x252738[0x0])){if(_0x252738[0x0][_0xf757('0x98')]>0x0){_0x563688['message']=_0xf757('0x99');logger['info'](_0xf757('0x9a')+_0x563688['name'],_0x252738[0x0][_0xf757('0x98')],_0xf757('0x9b'));}else{_0x563688[_0xf757('0x40')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0xf757('0x9c')+_0x563688[_0xf757('0x41')]);}}};}function notSendMessagesQueue(_0x9f3d01){if(_0x9f3d01['sendMessageOneNotActive']){freeVariablesPredictive(_0x9f3d01);if(_0x9f3d01[_0xf757('0x97')]===0x0&&_0x9f3d01['talking']===0x0&&_0x9f3d01[_0xf757('0x59')]===0x0&&(_0x9f3d01[_0xf757('0x9d')]||0x0)===0x0){_0x9f3d01[_0xf757('0x9e')]=![];_0x9f3d01[_0xf757('0x51')]=0x0;_0x9f3d01['message']=_0xf757('0x9f');loggerSyncQueueSummary[_0xf757('0x95')](_0xf757('0xa0'),_0x9f3d01[_0xf757('0x41')],_0xf757('0xa1'));}else{_0x9f3d01[_0xf757('0x40')]=_0xf757('0xa2');loggerSyncQueueSummary[_0xf757('0x95')](_0xf757('0xa0'),_0x9f3d01['name'],'is\x20disactive');}emitVoiceQueueSummary(_0x9f3d01);}}function notSendMessagesCampaign(_0x509e9a){if(_0x509e9a[_0xf757('0x9e')]){if(_0x509e9a['originated']===0x0){_0x509e9a[_0xf757('0x9e')]=![];_0x509e9a[_0xf757('0x40')]=_0xf757('0x9f');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x509e9a['name'],_0xf757('0xa1'));}else{_0x509e9a[_0xf757('0x40')]=_0xf757('0xa2');loggerSyncQueueSummary[_0xf757('0x95')](_0xf757('0xa3'),_0x509e9a[_0xf757('0x41')],_0xf757('0xa4'));}emitCampaignSummary(_0x509e9a);}}function createObjHistory(_0x10b9d7,_0x209b85,_0x45ab07,_0x2aa349,_0x6e69db){_0x10b9d7[_0xf757('0x40')]=_0x45ab07;var _0x3e31cb=new Action(_0x10b9d7,_0x209b85);var _0x45c8be=new History(_0x3e31cb);_0x45c8be[_0xf757('0xa5')]=_0x2aa349;_0x45c8be[_0xf757('0xa6')]=_0x6e69db;_0x45c8be['endtime']=_0x3e31cb[_0xf757('0xa7')];return _0x45c8be;}Dialer[_0xf757('0x20')][_0xf757('0x3e')]=function(){var _0x1d98b3=this;setInterval(function(){_0x1d98b3[_0xf757('0xa8')](_0x1d98b3[_0xf757('0x2a')],'[uniqueid]');_0x1d98b3['clearZombieChannels'](_0x1d98b3[_0xf757('0xa9')],'[actions]');},0x32c8);};Dialer[_0xf757('0x20')][_0xf757('0xa8')]=function(_0x438508,_0x109513){var _0xdd0af3=this;for(var _0x479bef in _0x438508){if(typeof _0x438508[_0x479bef]!==_0xf757('0xaa')){this[_0xf757('0x23')][_0xf757('0xab')](function(){if(!_[_0xf757('0xac')](_0x438508[_0x479bef])){return ami['Action']({'action':_0xf757('0xad'),'channel':_0x438508[_0x479bef]['channel']})[_0xf757('0xae')](function(_0x197349){if(_0x197349[_0xf757('0x40')]===_0xf757('0xaf')){setTimeout(function(){if(_0x438508[_0x479bef]&&_0x438508[_0x479bef]['type']!==_0xf757('0x7a')){_0xdd0af3[_0xf757('0xb0')](_0xdd0af3['voiceQueues'][_0x438508[_0x479bef][_0xf757('0xb1')]]);logger[_0xf757('0x95')](_0xf757('0xb2'),_0x109513,_0x479bef,_0x438508[_0x479bef][_0xf757('0xb1')]);delete _0x438508[_0x479bef];}if(_0x438508[_0x479bef]&&_0x438508[_0x479bef]['type']===_0xf757('0x7a')){_0xdd0af3['updateOriginated'](_0xdd0af3[_0xf757('0x26')][_0x438508[_0x479bef][_0xf757('0xb1')]]);logger[_0xf757('0x95')]('[Dialer][checkChannel][ivr]',_0x109513,_0x479bef,_0x438508[_0x479bef]['queue']);delete _0x438508[_0x479bef];}},0x2328);}});}});}}};Dialer[_0xf757('0x20')][_0xf757('0xb3')]=function(_0x267d59){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper['countReScheduled'](_0x267d59))['catch'](loggerCatch(_0xf757('0xb6')));};Dialer[_0xf757('0x20')][_0xf757('0xb7')]=function(_0x52c339){return BPromise['resolve']()[_0xf757('0xb5')](cmHopperBlack['checkIsBlackList'](_0x52c339))[_0xf757('0xae')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0xf757('0x20')][_0xf757('0xb8')]=function(_0x7b78c7){return BPromise[_0xf757('0xb4')]()['then'](cmHopperBlack[_0xf757('0xb8')](_0x7b78c7))['catch'](loggerCatch(_0xf757('0xb9')));};Dialer[_0xf757('0x20')][_0xf757('0xba')]=function(_0xd903a6){return BPromise['resolve']()[_0xf757('0xb5')](cmHopperHistory['avgHandleTime'](_0xd903a6))[_0xf757('0xae')](loggerCatch(_0xf757('0xbb')));};Dialer['prototype'][_0xf757('0xbc')]=function(_0x1ccb6e){return BPromise[_0xf757('0xb4')]()['then'](cmHopper[_0xf757('0xbc')](_0x1ccb6e))[_0xf757('0xae')](loggerCatch(_0xf757('0xbd')));};Dialer[_0xf757('0x20')]['unlockContact']=function(_0x22a1f5,_0x3bc126,_0x27a50b){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper[_0xf757('0xbe')](_0x22a1f5,_0x3bc126,_0x27a50b))[_0xf757('0xae')](loggerCatch(_0xf757('0xbf')));};Dialer[_0xf757('0x20')]['getContactDialer']=function(_0x4f7301,_0x34a58c,_0x42af84,_0x17e303,_0x2d9759){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper['getContactDialer'](_0x4f7301,_0x34a58c,_0x42af84,_0x17e303))[_0xf757('0xae')](function(_0x3efa23){_0x2d9759['temp']-=_0x42af84;_0x2d9759[_0xf757('0xc0')]=_0x2d9759[_0xf757('0xc0')]>0x0?_0x2d9759[_0xf757('0xc0')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x3efa23);});};Dialer[_0xf757('0x20')][_0xf757('0xc1')]=function(_0x46c6d4,_0x9820a3,_0x5b1ddf,_0x1cd212){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper[_0xf757('0xc1')](_0x46c6d4,_0x9820a3,_0x5b1ddf))[_0xf757('0xae')](function(_0x4e1ebe){_0x1cd212['temp']-=_0x9820a3;_0x1cd212[_0xf757('0xc0')]=_0x1cd212[_0xf757('0xc0')]>0x0?_0x1cd212[_0xf757('0xc0')]:0x0;loggerCatch(_0xf757('0xc2'))(_0x4e1ebe);});};Dialer[_0xf757('0x20')]['getVoiceQueueRtPauses']=function(_0x56e67d){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](voiceQueueRt[_0xf757('0xc3')](_0x56e67d))[_0xf757('0xae')](loggerCatch(_0xf757('0xc4')));};Dialer[_0xf757('0x20')]['moveContactManagedDialer']=function(_0x492637){return BPromise['resolve']()[_0xf757('0xb5')](cmHopper[_0xf757('0xc5')](_0x492637))['catch'](loggerCatch(_0xf757('0xc6')));};Dialer[_0xf757('0x20')][_0xf757('0xc7')]=function(_0x57daf0){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopperHistory[_0xf757('0xc7')](_0x57daf0))[_0xf757('0xae')](loggerCatch('[createHistory]\x20'));};Dialer['prototype'][_0xf757('0xb0')]=function(_0x1dea58){if(!_['isUndefined'](_0x1dea58)&&_0x1dea58!==null){if(typeof _0x1dea58[_0xf757('0x97')]!==_0xf757('0xaa')){if(_0x1dea58[_0xf757('0x97')]>0x0){_0x1dea58[_0xf757('0x97')]-=0x1;}else{logger['error']('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger['error'](_0xf757('0xc8'));}};Dialer[_0xf757('0x20')]['loggerHandler']=function(_0x5b68c4,_0x73c677){var _0x5a6088=this;return function(_0x47fe66){_0x5a6088['updateOriginated'](_0x73c677);logger['error'](_0x5b68c4,util['inspect'](_0x47fe66,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0xf757('0xc9')]=function(_0x353387,_0x340082,_0x2f41fb){var _0x42890b={'state':0x19,'statedesc':_0xf757('0xca')};this[_0xf757('0xb0')](_0x340082);this['saveInDb'](_[_0xf757('0xcb')](_0x42890b,_[_0xf757('0xcc')](_0x2f41fb,[_0xf757('0xcd'),_0xf757('0xce'),_0xf757('0xcf'),'VoiceQueueId','CampaignId'])),_0xf757('0xd0'),'[emptyContact]');logger[_0xf757('0x95')](_0x353387);};Dialer['prototype'][_0xf757('0xd1')]=function(_0x3d4287){return _0x3d4287===_0xf757('0xd2');};Dialer['prototype'][_0xf757('0xd3')]=function(_0x3ce113){return!_[_0xf757('0x3f')](_0x3ce113)&&_0x3ce113&&!_['isUndefined'](_0x3ce113[_0xf757('0x41')])&&!_[_0xf757('0x3f')](_0x3ce113['active'])&&_0x3ce113[_0xf757('0xd4')]&&(this['trunks'][util['format'](_0xf757('0xd5'),_0x3ce113['name'])][_0xf757('0xad')]===_0xf757('0xd6')||this[_0xf757('0x28')][util[_0xf757('0x77')](_0xf757('0xd5'),_0x3ce113[_0xf757('0x41')])][_0xf757('0xad')]===_0xf757('0xd7'));};Dialer[_0xf757('0x20')][_0xf757('0xd8')]=function(_0xc71617,_0x1cfddc,_0x5e6dd5){this[_0xf757('0xc7')](_0xc71617)[_0xf757('0xae')](loggerCatch(_0x1cfddc));this[_0xf757('0xc5')](_0xc71617)[_0xf757('0xae')](loggerCatch(_0x5e6dd5));};Dialer[_0xf757('0x20')]['syncVarSet']=function(_0x489ef9){var _0x3a249f=this['uniqueId'][_0x489ef9[_0xf757('0xd9')]];var _0x16b216;if(!_['isNil'](_0x489ef9)&&!_[_0xf757('0xac')](_0x489ef9[_0xf757('0xda')])&&!_[_0xf757('0xac')](_0x489ef9[_0xf757('0xda')][_0xf757('0xdb')])&&_0x489ef9[_0xf757('0xdc')]===_0xf757('0xdd')&&_0x3a249f){if(_0x3a249f[_0xf757('0x79')]!==_0xf757('0x7a')&&this[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]==='HANGUP'){delete this[_0xf757('0x2a')][_0x489ef9[_0xf757('0xd9')]];this[_0xf757('0xb0')](this[_0xf757('0x25')][_0x3a249f['queue']]);this[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5f')]+=0x1;this['voiceQueues'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5e')]+=0x1;_0x16b216=new Hangup(_0x3a249f,_0x489ef9);_0x16b216['state']=0x12;_0x16b216['statedesc']=_0xf757('0xe0');_0x16b216['membername']=_0xf757('0xe1');ami['emit'](_0xf757('0xe2'),ut[_0xf757('0xe3')](_0x16b216,_0xf757('0xe4')));this[_0xf757('0xd8')](_0x16b216,_0xf757('0xe5'),'[syncHangupInAMD]');}if(_0x3a249f['type']!==_0xf757('0x7a')&&this[_0xf757('0x25')][_0x3a249f['queue']][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]===_0xf757('0xe6')){var _0x5e9ddc=this;return new BPromise(function(_0x27c08b,_0x542b3d){delete _0x5e9ddc[_0xf757('0x2a')][_0x489ef9[_0xf757('0xd9')]];_0x5e9ddc[_0xf757('0xb0')](_0x5e9ddc[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]]);_0x5e9ddc[_0xf757('0x25')][_0x3a249f['queue']][_0xf757('0x5f')]+=0x1;_0x5e9ddc[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5e')]+=0x1;var _0x284888=_0x5e9ddc[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]];var _0x178a05=new Hangup(_0x3a249f,_0x489ef9);_0x178a05[_0xf757('0xa5')]=0x13;_0x178a05[_0xf757('0xa6')]=_0xf757('0xe7');_0x178a05[_0xf757('0xe8')]=_0xf757('0xe1');_0x178a05['countmachineretry']+=0x1;_0x178a05[_0xf757('0xe9')]+=0x1;_0x178a05['amd']=!![];ami[_0xf757('0x4d')](_0xf757('0xe2'),ut[_0xf757('0xe3')](_0x178a05,_0xf757('0xe4')));_0x5e9ddc[_0xf757('0xc7')](_0x178a05)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x178a05[_0xf757('0xea')]+_0x178a05[_0xf757('0xeb')]+_0x178a05[_0xf757('0xec')]+_0x178a05[_0xf757('0xed')]+_0x178a05[_0xf757('0xee')]+_0x178a05['countabandonedretry']+_0x178a05['countmachineretry']+_0x178a05['countagentrejectretry']>=_0x284888[_0xf757('0xef')]){_0x5e9ddc[_0xf757('0xf0')](_0x178a05,_0x27c08b,_0x542b3d,_0xf757('0xf1'));}else{if(_0x178a05[_0xf757('0xf2')]>=_0x284888[_0xf757('0xf3')]){_0x5e9ddc['createStateFinal'](_0x178a05,_0x27c08b,_0x542b3d,'reason\x2019\x20machine....');}else{_0x5e9ddc[_0xf757('0xbc')]({'active':![],'countmachineretry':_0x178a05[_0xf757('0xf2')],'scheduledat':moment()[_0xf757('0xf4')](_0x284888[_0xf757('0xf5')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x178a05[_0xf757('0xcd')],'ListId':_0x178a05[_0xf757('0xce')],'VoiceQueueId':_0x178a05[_0xf757('0xf8')]||undefined,'CampaignId':_0x178a05[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0xfa')));_0x27c08b({'reschedule':0x1});}}});}if(_0x3a249f[_0xf757('0x79')]===_0xf757('0x7a')&&this['campaigns'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]==='HANGUP'){delete this[_0xf757('0x2a')][_0x489ef9['uniqueid']];this[_0xf757('0xb0')](this[_0xf757('0x26')][_0x3a249f[_0xf757('0xb1')]]);_0x16b216=new Hangup(_0x3a249f,_0x489ef9);_0x16b216[_0xf757('0xa5')]=0x12;_0x16b216[_0xf757('0xa6')]=_0xf757('0xe0');_0x16b216['membername']=_0xf757('0xe1');ami[_0xf757('0x4d')]('custom:amd',ut['buildObj'](_0x16b216,_0xf757('0xe4')));this['saveInDb'](_0x16b216,_0xf757('0xfb'),_0xf757('0xfc'));}if(_0x3a249f[_0xf757('0x79')]==='ivr'&&this['campaigns'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]===_0xf757('0xe6')){var _0x5e9ddc=this;return new BPromise(function(_0x169cf5,_0xe38dc1){delete _0x5e9ddc[_0xf757('0x2a')][_0x489ef9[_0xf757('0xd9')]];_0x5e9ddc['updateOriginated'](_0x5e9ddc[_0xf757('0x26')][_0x3a249f[_0xf757('0xb1')]]);_0x5e9ddc['campaigns'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5f')]+=0x1;_0x5e9ddc['campaigns'][_0x3a249f['queue']][_0xf757('0x5e')]+=0x1;var _0x5a5834=_0x5e9ddc['campaigns'][_0x3a249f[_0xf757('0xb1')]];var _0x13e3d5=new Hangup(_0x3a249f,_0x489ef9);_0x13e3d5['state']=0x13;_0x13e3d5['statedesc']=_0xf757('0xe7');_0x13e3d5[_0xf757('0xe8')]=_0xf757('0xe1');_0x13e3d5[_0xf757('0xf2')]+=0x1;_0x13e3d5[_0xf757('0xe9')]+=0x1;_0x13e3d5[_0xf757('0xe4')]=!![];ami[_0xf757('0x4d')](_0xf757('0xe2'),ut[_0xf757('0xe3')](_0x13e3d5,'amd'));_0x5e9ddc[_0xf757('0xc7')](_0x13e3d5)[_0xf757('0xae')](loggerCatch(_0xf757('0xfd')));if(_0x13e3d5[_0xf757('0xea')]+_0x13e3d5['countcongestionretry']+_0x13e3d5[_0xf757('0xec')]+_0x13e3d5[_0xf757('0xed')]+_0x13e3d5[_0xf757('0xee')]+_0x13e3d5['countabandonedretry']+_0x13e3d5[_0xf757('0xf2')]+_0x13e3d5[_0xf757('0xfe')]>=_0x5a5834[_0xf757('0xef')]){_0x5e9ddc[_0xf757('0xf0')](_0x13e3d5,_0x169cf5,_0xe38dc1,_0xf757('0xf1'));}else{if(_0x13e3d5[_0xf757('0xf2')]>=_0x5a5834[_0xf757('0xf3')]){_0x5e9ddc[_0xf757('0xff')](_0x13e3d5,_0x169cf5,_0xe38dc1,_0xf757('0x100'));}else{_0x5e9ddc['rescheduleContact']({'active':![],'countmachineretry':_0x13e3d5[_0xf757('0xf2')],'scheduledat':moment()[_0xf757('0xf4')](_0x5a5834[_0xf757('0xf5')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x13e3d5[_0xf757('0xcd')],'ListId':_0x13e3d5[_0xf757('0xce')],'VoiceQueueId':_0x13e3d5[_0xf757('0xf8')]||undefined,'CampaignId':_0x13e3d5[_0xf757('0xf9')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x169cf5({'reschedule':0x1});}}});}}};Dialer[_0xf757('0x20')]['syncHangup']=function(_0x3c33fe){var _0x242d02=this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];var _0x53f8fa=this;var _0x104310;if(_0x242d02&&_0x242d02[_0xf757('0x79')]==='ivr'){delete this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];this[_0xf757('0xb0')](this[_0xf757('0x26')][_0x242d02[_0xf757('0xb1')]]);this['campaigns'][_0x242d02[_0xf757('0xb1')]][_0xf757('0x101')]+=0x1;_0x104310=new Hangup(_0x242d02,_0x3c33fe);this[_0xf757('0xc7')](_0x104310)[_0xf757('0xae')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xf757('0xc5')](_0x104310)[_0xf757('0xae')](loggerCatch(_0xf757('0x102')));}if(_0x242d02&&_0x242d02[_0xf757('0x79')]!=='ivr'&&isNotNull(this['voiceQueues'][_0x242d02[_0xf757('0xb1')]][_0xf757('0x103')])){delete this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];this[_0xf757('0xb0')](this['voiceQueues'][_0x242d02[_0xf757('0xb1')]]);this[_0xf757('0x25')][_0x242d02['queue']][_0xf757('0x5f')]+=0x1;this['voiceQueues'][_0x242d02[_0xf757('0xb1')]]['outboundAnswerAgiCallsDay']+=0x1;_0x104310=new Hangup(_0x242d02,_0x3c33fe);_0x104310['state']=0x10;_0x104310['statedesc']=_0xf757('0x104');_0x104310[_0xf757('0xe8')]=_0xf757('0x105');this[_0xf757('0xc7')](_0x104310)['catch'](loggerCatch(_0xf757('0x106')));this[_0xf757('0xc5')](_0x104310)['catch'](loggerCatch(_0xf757('0x102')));}if(_0x242d02&&_0x242d02[_0xf757('0x79')]!==_0xf757('0x7a')&&!isNotNull(this[_0xf757('0x25')][_0x242d02[_0xf757('0xb1')]][_0xf757('0x103')])){delete this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];this['updateOriginated'](this[_0xf757('0x25')][_0x242d02[_0xf757('0xb1')]]);this['voiceQueues'][_0x242d02[_0xf757('0xb1')]][_0xf757('0x107')]+=0x1;_0x104310=new Hangup(_0x242d02,_0x3c33fe);_0x104310[_0xf757('0xa5')]=0xc;_0x104310['statedesc']=_0x3c33fe[_0xf757('0x108')];_0x104310[_0xf757('0xe8')]=_0xf757('0x109');this[_0xf757('0xc7')](_0x104310)[_0xf757('0xae')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xf757('0xc5')](_0x104310)[_0xf757('0xae')](loggerCatch(_0xf757('0x102')));}};Dialer[_0xf757('0x20')][_0xf757('0x36')]=function(_0x45161b){var _0x5bbecc=this[_0xf757('0x2a')][_0x45161b[_0xf757('0xd9')]];var _0x55cd32=this;if(this[_0xf757('0x25')][_0x45161b[_0xf757('0xb1')]]){if(_0x5bbecc&&_0x5bbecc[_0xf757('0x79')]!==_0xf757('0x7a')){delete this['uniqueId'][_0x45161b['uniqueid']];this['voiceQueues'][_0x45161b['queue']][_0xf757('0x5f')]+=0x1;var _0x1a20c2=new AgentComplete(_0x5bbecc,_0x45161b);if(_0x45161b[_0xf757('0x10a')]===_0xf757('0x10b')){_0x1a20c2[_0xf757('0x10c')]=this[_0xf757('0x25')][_0x45161b[_0xf757('0xb1')]][_0xf757('0x10d')]&&this['voiceQueues'][_0x45161b['queue']][_0xf757('0x10e')]?moment()[_0xf757('0x77')](_0xf757('0xf7')):undefined;}this[_0xf757('0xc7')](_0x1a20c2)['catch'](loggerCatch(_0xf757('0x10f')));this['moveContactManagedDialer'](_0x1a20c2)['catch'](loggerCatch(_0xf757('0x110')));}}};Dialer[_0xf757('0x20')][_0xf757('0x111')]=function(_0x47f60a){if(this['voiceQueues'][_0x47f60a[_0xf757('0xb1')]]){if(this[_0xf757('0x2a')][_0x47f60a[_0xf757('0xd9')]]&&this[_0xf757('0x2a')][_0x47f60a[_0xf757('0xd9')]]['type']!=='ivr'){this['updateOriginated'](this[_0xf757('0x25')][_0x47f60a[_0xf757('0xb1')]]);this[_0xf757('0x2a')][_0x47f60a['uniqueid']]['answertime']=moment()[_0xf757('0x77')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xf757('0x20')]['queueCallerAbandonCreateState']=function(_0x24bd1a){this[_0xf757('0xc7')](_0x24bd1a)[_0xf757('0xae')](loggerCatch(_0xf757('0x10f')));this[_0xf757('0xc5')](_0x24bd1a)['catch'](loggerCatch(_0xf757('0x112')));};Dialer[_0xf757('0x20')]['syncQueueCallerAbandon']=function(_0x3fa3e4){var _0x13daff=this[_0xf757('0x2a')][_0x3fa3e4[_0xf757('0xd9')]];var _0x1ebfee=this;if(this['voiceQueues'][_0x3fa3e4[_0xf757('0xb1')]]){if(_0x13daff&&_0x13daff[_0xf757('0x79')]!=='ivr'){delete this[_0xf757('0x2a')][_0x3fa3e4[_0xf757('0xd9')]];this[_0xf757('0xb0')](this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]]);_0x13daff[_0xf757('0x113')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));var _0x344cf2=new QueueCallerAbandon(_0x13daff,_0x3fa3e4);if(getSeconds(_0x13daff[_0xf757('0x113')],_0x13daff['responsetime'])>=_0x13daff[_0xf757('0x114')]){this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x6c')]+=0x1;this[_0xf757('0x25')][_0x3fa3e4['queue']]['outboundDropCallsDayTimeout']+=0x1;this[_0xf757('0x25')][_0x3fa3e4['queue']][_0xf757('0x6d')]+=0x1;_0x344cf2[_0xf757('0xa5')]=0xa;_0x344cf2[_0xf757('0xa6')]='Drop';_0x344cf2[_0xf757('0x115')]=_0xf757('0x116');_0x344cf2[_0xf757('0x10c')]=this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]]['dialQueueProject2']?moment()[_0xf757('0x77')](_0xf757('0xf7')):undefined;_0x344cf2[_0xf757('0xee')]+=0x1;_0x344cf2[_0xf757('0xe9')]+=0x1;if(_0x344cf2[_0xf757('0xee')]>=this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x117')]){this['queueCallerAbandonCreateState'](_0x344cf2);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x344cf2[_0xf757('0xee')],'scheduledat':moment()[_0xf757('0xf4')](this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x118')],'minutes')[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x13daff['ContactId'],'ListId':_0x13daff['ListId'],'VoiceQueueId':_0x13daff[_0xf757('0xf8')]||undefined,'CampaignId':_0x13daff['CampaignId']||undefined})[_0xf757('0xae')](loggerCatch('[rescheduleContact][Drop]'));var _0x3ea98c=new History(_0x344cf2);_0x3ea98c[_0xf757('0xa5')]=0xa;_0x3ea98c[_0xf757('0xa6')]=_0xf757('0x119');_0x3ea98c[_0xf757('0xa7')]=moment()['format'](_0xf757('0xf7'));_0x3ea98c[_0xf757('0x11a')]=_0x3ea98c[_0xf757('0xa7')];_0x3ea98c['calleridname']=_0x344cf2[_0xf757('0x11b')];_0x3ea98c['calleridnum']=_0x344cf2[_0xf757('0x11c')];this[_0xf757('0xc7')](_0x3ea98c)['catch'](loggerCatch(_0xf757('0x11d')));}}else{this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x11e')]+=0x1;_0x344cf2['state']=0xb;_0x344cf2[_0xf757('0xa6')]=_0xf757('0x11f');_0x344cf2[_0xf757('0x115')]=_0xf757('0x120');_0x344cf2[_0xf757('0x121')]+=0x1;_0x344cf2['countglobal']+=0x1;if(_0x344cf2[_0xf757('0x121')]>=this['voiceQueues'][_0x3fa3e4['queue']]['dialAbandonedMaxRetry']){this['queueCallerAbandonCreateState'](_0x344cf2);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x344cf2[_0xf757('0x121')],'scheduledat':moment()[_0xf757('0xf4')](this['voiceQueues'][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x122')],'minutes')[_0xf757('0x77')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x13daff[_0xf757('0xcd')],'ListId':_0x13daff['ListId'],'VoiceQueueId':_0x13daff[_0xf757('0xf8')]||undefined,'CampaignId':_0x13daff[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x123')));var _0x3ea98c=new History(_0x344cf2);_0x3ea98c['state']=0xb;_0x3ea98c[_0xf757('0xa6')]=_0xf757('0x11f');_0x3ea98c[_0xf757('0xa7')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));_0x3ea98c['endtime']=_0x3ea98c['starttime'];_0x3ea98c[_0xf757('0x11b')]=_0x344cf2[_0xf757('0x11b')];_0x3ea98c[_0xf757('0x11c')]=_0x344cf2['calleridnum'];this[_0xf757('0xc7')](_0x3ea98c)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0xf757('0x20')][_0xf757('0x3a')]=function(_0x4b91b0){if(this[_0xf757('0xa9')][_0x4b91b0[_0xf757('0xd9')]]){this[_0xf757('0xa9')][_0x4b91b0[_0xf757('0xd9')]][_0xf757('0x124')]=_0x4b91b0[_0xf757('0x124')];}if(this[_0xf757('0x2a')][_0x4b91b0[_0xf757('0xd9')]]){this[_0xf757('0x2a')][_0x4b91b0[_0xf757('0xd9')]]['channel']=_0x4b91b0['channel'];}};Dialer[_0xf757('0x20')]['syncQueueMember']=function(_0x3e6114){if(strategy[this['voiceQueues'][this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]===_0xf757('0x1f')){if(this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]]&&_[_0xf757('0xac')](this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0x126')])&&_0x3e6114[_0xf757('0xad')]==='1'&&_0x3e6114[_0xf757('0x127')]==='0'){if(this[_0xf757('0x27')][_0x3e6114[_0xf757('0x128')]]){if(!this[_0xf757('0x27')][_0x3e6114['stateinterface']][_0xf757('0x126')]){this['agents'][_0x3e6114[_0xf757('0x128')]][_0xf757('0x126')]=!![];this['actions'][_0x3e6114[_0xf757('0x125')]][_0xf757('0x126')]=!![];this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0x128')]=_0x3e6114[_0xf757('0x128')];}}}}else if((strategy[this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]||_0xf757('0x1e'))===_0xf757('0x1e')){if(this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]]){if(this['agents'][_0x3e6114[_0xf757('0x128')]]){this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0x128')]=_0x3e6114[_0xf757('0x128')];if(_[_0xf757('0xac')](this[_0xf757('0x2e')][this['actions'][_0x3e6114['actionid']][_0xf757('0xb1')]])){this[_0xf757('0x2e')][this['actions'][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]]=[];}this[_0xf757('0x2e')][this['actions'][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x129')](_[_0xf757('0xcb')](_[_0xf757('0xcc')](this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]],['idHopper',_0xf757('0x128')]),{'status':_0x3e6114[_0xf757('0xad')],'paused':_0x3e6114['paused']}));}}}};function unlockQueueStatus(_0x228a4f,_0x28c870){setTimeout(function(){if(_[_0xf757('0x3f')](_0x228a4f[_0xf757('0x12a')])){loggerBooked['error'](_0xf757('0x12b'),_0x28c870);}_0x228a4f['queueStatusComplete']=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x28c870,JSON[_0xf757('0x49')](_['pick'](_0x228a4f,[_0xf757('0x41'),_0xf757('0x12a')])));},0x1f3);}Dialer[_0xf757('0x20')]['syncQueueStatusComplete']=function(_0x5a4a61){var _0x3d9115=this;var _0x57a352=_0x3d9115[_0xf757('0x25')][_0x3d9115['actions'][_0x5a4a61[_0xf757('0x125')]]['queue']];if(strategy[this['voiceQueues'][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]===_0xf757('0x1f')){if(this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]&&this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0x128')]){this[_0xf757('0x24')][_0xf757('0x12c')](this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0x12d')],this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0x128')])['catch'](function(_0x374a5f){logger[_0xf757('0x95')](_0xf757('0x12e'),util[_0xf757('0x94')](_0x374a5f,{'showHidden':![],'depth':null}));})[_0xf757('0x22')](function(){_0x3d9115[_0xf757('0xb0')](_0x3d9115[_0xf757('0x25')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]);_0x3d9115[_0xf757('0x27')][_0x3d9115['actions'][_0x5a4a61['actionid']]['stateinterface']]['locked']=![];delete _0x3d9115['actions'][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);});}else{this['updateOriginated'](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this['actions'][_0x5a4a61[_0xf757('0x125')]]['ContactId'],'ListId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['ListId'],'VoiceQueueId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf8')]||undefined,'CampaignId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x12f')));delete this['actions'][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}}else if((strategy[this['voiceQueues'][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]||_0xf757('0x1e'))===_0xf757('0x1e')){var _0x10f2ab;if(this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]&&!_[_0xf757('0x45')](this[_0xf757('0x2e')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]])){if(this[_0xf757('0x2f')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]){this[_0xf757('0x2f')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]=this[_0xf757('0x2f')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]?this[_0xf757('0x2f')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]:this['queueBooked'][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]?this[_0xf757('0x2e')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x130')]||0x0:0x0;}this[_0xf757('0x2e')][this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x130')]=this[_0xf757('0x2f')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]];for(var _0x1226c1=0x0;_0x1226c1<this['queueBooked'][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]][_0xf757('0x96')];_0x1226c1+=0x1){_0x10f2ab=rr(this[_0xf757('0x2e')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]);this[_0xf757('0x2f')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]=this[_0xf757('0x2e')][this['actions'][_0x5a4a61[_0xf757('0x125')]]['queue']][_0xf757('0x130')];if(_0x10f2ab[_0xf757('0xad')]==='1'&&_0x10f2ab[_0xf757('0x127')]==='0'){break;}}if(!_['isNil'](_0x10f2ab)){this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]=_[_0xf757('0x3f')](this[_0xf757('0x27')][_0x10f2ab['stateinterface']]['unlockRR'])?!![]:this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')];}loggerBooked[_0xf757('0x7d')](_0xf757('0x132'),_0x5a4a61[_0xf757('0x125')],_0xf757('0x133'),JSON[_0xf757('0x49')](_[_0xf757('0xcc')](this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]],[_0xf757('0x41'),_0xf757('0x131')])),'contactAgent-idHopper:\x20',JSON[_0xf757('0x49')](_0x10f2ab['idHopper']));if(!_[_0xf757('0xac')](_0x10f2ab)&&_0x10f2ab[_0xf757('0xad')]==='1'&&_0x10f2ab[_0xf757('0x127')]==='0'&&this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]){this['agents'][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]=![];this['queueBooked'][_0x3d9115['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]=[];this[_0xf757('0x24')][_0xf757('0x12c')](_0x10f2ab[_0xf757('0x12d')],_0x10f2ab[_0xf757('0x128')])[_0xf757('0xae')](function(_0x4815b0){logger[_0xf757('0x95')](_0xf757('0x12e'),util['inspect'](_0x4815b0,{'showHidden':![],'depth':null}));})['finally'](function(){_0x3d9115[_0xf757('0xb0')](_0x3d9115[_0xf757('0x25')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['queue']]);setTimeout(function(){_0x3d9115[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]=!![];loggerBooked[_0xf757('0x7d')]('[booked][RR][finaly]',_0x5a4a61[_0xf757('0x125')],_0xf757('0x133'),JSON[_0xf757('0x49')](_[_0xf757('0xcc')](_0x3d9115[_0xf757('0x27')][_0x10f2ab['stateinterface']],[_0xf757('0x41'),_0xf757('0x131')])),'contactAgent-idHopper:\x20',JSON[_0xf757('0x49')](_0x10f2ab[_0xf757('0x12d')]));},0xc7);delete _0x3d9115[_0xf757('0xa9')][_0x5a4a61['actionid']];unlockQueueStatus(_0x57a352,_0x5a4a61[_0xf757('0x125')]);});}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x134'));this[_0xf757('0xb0')](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xcd')],'ListId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xce')],'VoiceQueueId':this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xf8')]||undefined,'CampaignId':this['actions'][_0x5a4a61[_0xf757('0x125')]]['CampaignId']||undefined})['catch'](loggerCatch(_0xf757('0x12f')));delete this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x135'));this[_0xf757('0xb0')](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xcd')],'ListId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['ListId'],'VoiceQueueId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x136')));delete this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x137'));this[_0xf757('0xb0')](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xcd')],'ListId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xce')],'VoiceQueueId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf8')]||undefined,'CampaignId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x138')));delete this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}};Dialer['prototype'][_0xf757('0x139')]=function(){var _0x3598b9=this;setInterval(function(){_0x3598b9[_0xf757('0x13a')]();},0x3e8);};Dialer['prototype'][_0xf757('0x13b')]=function(_0x4ac96e){var _0x1b5ea5=this;return function(){if(!_0x1b5ea5[_0xf757('0xd3')](_0x4ac96e[_0xf757('0x76')])){if(!_0x1b5ea5[_0xf757('0xd3')](_0x4ac96e[_0xf757('0x13c')])){_0x4ac96e[_0xf757('0x40')]=_0xf757('0x13d');throw _0x4ac96e['name']+_0xf757('0x13e');}}};};Dialer[_0xf757('0x20')][_0xf757('0x13f')]=function(_0x38b56a,_0x2d4e68,_0x1ca53c,_0x542b4d){var _0x27f983=this;return function(){var _0x27a739=!![];return _0x27f983['ifTime'](_0x38b56a,_0x2d4e68,_0x1ca53c,_0x542b4d,_0x27a739);};};Dialer[_0xf757('0x20')][_0xf757('0x140')]=function(_0x10ca6e,_0x5943a5,_0x592a52,_0x4084e9){var _0x5a4fe0=this;return function(){var _0xa8c81b=![];return _0x5a4fe0[_0xf757('0x141')](_0x10ca6e[_0xf757('0x44')],_0x5943a5,_0x592a52,_0x4084e9,_0xa8c81b);};};Dialer[_0xf757('0x20')][_0xf757('0x141')]=function(_0x53fd44,_0xbbdcc4,_0x39510f,_0xef5504,_0x56e9a8){var _0x42c189=[];return new BPromise(function(_0x355a37,_0x406f78){if(!isNotNull(_0x53fd44)){_0xef5504[_0xf757('0x40')]=_0xf757('0x42');return _0x406f78(msgResponse('ifTime','Failure',_0x39510f+_0xf757('0x142')));}if(_[_0xf757('0x45')](_0x53fd44)){_0xef5504[_0xf757('0x40')]=_0xf757('0x143');return _0x406f78(msgResponse(_0xf757('0x141'),_0xf757('0x144'),_0x39510f+_0xf757('0x145')));}if(_0xbbdcc4&&_[_0xf757('0x3f')](config[_0xf757('0x146')][_0xbbdcc4])){_0xef5504[_0xf757('0x40')]=_0xf757('0x147');return _0x406f78(msgResponse(_0xf757('0x141'),'Failure',_0x39510f+'\x20Timezone\x20unknow\x20'+_0xbbdcc4));}if(_['isArray'](_0x53fd44)){for(var _0x5c0308=0x0;_0x5c0308<_0x53fd44[_0xf757('0x96')];_0x5c0308+=0x1){_0x42c189[_0xf757('0x129')](ami['Action']({'action':_0xf757('0x148'),'command':util[_0xf757('0x77')](_0xf757('0x149'),_0x53fd44[_0x5c0308]['interval'],!_[_0xf757('0x3f')](config['timezones'][_0xbbdcc4])?_0xbbdcc4:'')})[_0xf757('0xb5')](function(_0x4b4935){return _0x4b4935['content'][_0xf757('0x14a')]('true')>=0x0;})[_0xf757('0xae')](myreject(_0x406f78)));}}else{_0x42c189[_0xf757('0x129')](ami[_0xf757('0x14b')]({'action':_0xf757('0x148'),'command':util[_0xf757('0x77')](_0xf757('0x149'),_0x53fd44,!_[_0xf757('0x3f')](config[_0xf757('0x146')][_0xbbdcc4])?_0xbbdcc4:'')})['then'](function(_0x17b0f5){return _0x17b0f5['content'][_0xf757('0x14a')](_0xf757('0x14c'))>=0x0;})[_0xf757('0xae')](myreject(_0x406f78)));}BPromise[_0xf757('0x14d')](_0x42c189)[_0xf757('0xb5')](function(_0x55e812){var _0x541feb=_[_0xf757('0x14e')](_0x55e812);if(_0x541feb){return _0x355a37(_0x541feb);}else{_0xef5504[_0xf757('0x40')]=_0x56e9a8?_0xf757('0x14f'):_0xf757('0x150');return _0x406f78(msgResponse('[ifTime][promiseAll]','Failure',_0xf757('0x151')+_0x56e9a8+'\x20'+_0x39510f+'\x20Interval\x20is\x20overtime:\x20'+util[_0xf757('0x94')](_0x53fd44,{'showHidden':![],'depth':null})+_0xf757('0x152')+_0xbbdcc4));}})[_0xf757('0xae')](function(_0x26f88f){return _0x406f78(msgResponse(_0xf757('0x141'),_0xf757('0x144'),JSON[_0xf757('0x49')](_0x26f88f)));});});};Dialer['prototype']['checkDialMethod']=function(_0x123532){var _0x4b0934=this;return function(){switch(_0x123532[_0xf757('0x5c')]){case'progressive':freeVariablesPredictive(_0x123532);_0x4b0934['handlePower'](_0x123532,0x1);break;case _0xf757('0x153'):freeVariablesPredictive(_0x123532);_0x4b0934['handlePower'](_0x123532,_0x123532[_0xf757('0x154')]);break;case _0xf757('0xb'):_0x4b0934[_0xf757('0xb')](_0x123532);break;case _0xf757('0xa'):freeVariablesPredictive(_0x123532);_0x4b0934['handlePower'](_0x123532,0x1);break;default:freeVariablesPredictive(_0x123532);logger[_0xf757('0x95')](_0xf757('0x155'),_0x123532[_0xf757('0x41')],_0xf757('0x156'));}};};Dialer[_0xf757('0x20')][_0xf757('0x157')]=function(_0x57879a){var _0x528307=this;return function(){_0x528307[_0xf757('0x158')](_0x57879a);};};Dialer['prototype'][_0xf757('0x159')]=function(_0x26183d){var _0x166214=this;if(isNotPreview(_0x26183d[_0xf757('0x5c')])){if(isVoiceQueueOutbound(_0x26183d['type'])&&isActive(_0x26183d[_0xf757('0x5b')])){_0x26183d[_0xf757('0x9e')]=!![];BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](checkIsLoggedIn(_0x26183d,_0x26183d[_0xf757('0x52')]))[_0xf757('0xb5')](checkIsActive(_0x26183d,_0x26183d[_0xf757('0x5b')]))[_0xf757('0xb5')](checkInterval(_0x26183d))[_0xf757('0xb5')](_0x166214[_0xf757('0x13b')](_0x26183d))['then'](_0x166214['checkIfTime'](_0x26183d[_0xf757('0x15a')],_0x26183d[_0xf757('0x15b')],_0x26183d[_0xf757('0x41')],_0x26183d))[_0xf757('0xb5')](_0x166214['checkIfTimeIntervals'](_0x26183d[_0xf757('0x46')],_0x26183d[_0xf757('0x15b')],_0x26183d[_0xf757('0x41')],_0x26183d))[_0xf757('0xb5')](_0x166214['checkDialMethod'](_0x26183d))[_0xf757('0xae')](loggerCatchQueueSummary(_0xf757('0x15c'),_0x26183d));}else{notSendMessagesQueue(_0x26183d);}}else{freeVariablesPredictive(_0x26183d);}};Dialer[_0xf757('0x20')][_0xf757('0x13a')]=function(){var _0x3ce93f=this;var _0x204b04;for(var _0x1167c4 in this[_0xf757('0x26')]){if(typeof this[_0xf757('0x26')][_0x1167c4]!==_0xf757('0xaa')){_0x204b04=this[_0xf757('0x26')][_0x1167c4];if(isCampaignIvr(_0x204b04['type'])&&isActive(_0x204b04[_0xf757('0xd4')])){_0x204b04['sendMessageOneNotActive']=!![];BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](checkIsActive(_0x204b04,_0x204b04[_0xf757('0xd4')]))['then'](checkInterval(_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x13b')](_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x13f')](_0x204b04[_0xf757('0x15a')],_0x204b04[_0xf757('0x15b')],_0x204b04[_0xf757('0x41')],_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x140')](_0x204b04[_0xf757('0x46')],_0x204b04[_0xf757('0x15b')],_0x204b04[_0xf757('0x41')],_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x157')](_0x204b04))[_0xf757('0xae')](loggerCatchQueueSummary(_0xf757('0x15d'),_0x204b04));}else{notSendMessagesCampaign(_0x204b04);}}}};function getCallerIdRandom(_0x385527,_0x2bf8fb){var _0x251f71;var _0x515871;var _0x5cc98a;if(_0x2bf8fb<=0x0){_0x2bf8fb=0x1;}_0x251f71=new RegExp(_0xf757('0x15e')+_0x2bf8fb+'}$');_0x515871=Math[_0xf757('0x15f')](0xa,_0x2bf8fb-0x1);_0x5cc98a=Math[_0xf757('0x15f')](0xa,_0x2bf8fb)-0x1;return util[_0xf757('0x77')]('%s',_['replace'](_0x385527,_0x251f71,_[_0xf757('0x160')](_0x515871,_0x5cc98a)));}function extractCalleridName(_0x3f6287){var _0x1dc212=_0x3f6287[_0xf757('0x161')](/"(.*?)"/);return _0x1dc212?_0x1dc212[0x1]:_0x3f6287;}function extractCalleridNumber(_0x72b3b1){var _0x2407d7=_0x72b3b1[_0xf757('0x161')](/<(.*?)>/);return _0x2407d7?_0x2407d7[0x1]:_0x72b3b1;}Dialer['prototype']['actionOriginate']=function(_0x1d09ab,_0x2619c4){var _0x182eac=this;var _0xaeabf3=uuid['v4']();this['actions'][_0xaeabf3]=new Action(_0x1d09ab,_0x2619c4,_0xaeabf3);return new BPromise(function(_0x287ca8,_0x4cad94){if(_[_0xf757('0x3f')](_0x1d09ab)&&typeof _0x1d09ab!=='object'){return _0x4cad94(msgResponse(_0xf757('0x162'),_0xf757('0x144'),_0xf757('0x163')));}if(_[_0xf757('0x3f')](_0x2619c4[_0xf757('0x164')][_0xf757('0x165')])||_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]===null){return _0x4cad94(msgResponse(_0xf757('0x162'),_0xf757('0x144'),_0xf757('0x166')));}var _0x531c43={'XMD-CALLERID':_0x182eac[_0xf757('0xa9')][_0xaeabf3][_0xf757('0x167')](),'XMD-AGI':_0x1d09ab[_0xf757('0x103')]?util[_0xf757('0x77')](_0xf757('0x168'),ipAgi,_0x1d09ab[_0xf757('0x103')]):_0xf757('0x169'),'XMD-AGIAFTER':_0x1d09ab['dialQueueProject2']?util[_0xf757('0x77')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1d09ab['dialQueueProject2']):_0xf757('0x169'),'XMD-QUEUE':_0x1d09ab[_0xf757('0x79')]===_0xf757('0x4e')?util[_0xf757('0x77')](_0xf757('0x16a'),_0x1d09ab[_0xf757('0x41')],_0x1d09ab['dialQueueOptions']||'',_0x1d09ab['dialAgiAfterHangupAgent']?'c':'',_0x1d09ab[_0xf757('0x114')]||0x3):_0xf757('0x169'),'XMD-CONTACTID':_0x2619c4['ContactId'],'XMD-CDRTYPE':_0xf757('0x9'),'CALLERID(all)':_0x182eac['actions'][_0xaeabf3][_0xf757('0x167')](),'XMD-AMD':_0x1d09ab[_0xf757('0xde')]?_0xf757('0x16b'):'NONE','XMD-DESTINATION':_0xf757('0xdd')};if(_0x1d09ab[_0xf757('0xde')]){_0x531c43[_0xf757('0x16c')]=_0x1d09ab['dialAMDInitialSilence']||0x9c4;_0x531c43[_0xf757('0x16d')]=_0x1d09ab['dialAMDGreeting']||0x5dc;_0x531c43[_0xf757('0x16e')]=_0x1d09ab['dialAMDAfterGreetingSilence']||0x320;_0x531c43[_0xf757('0x16f')]=_0x1d09ab[_0xf757('0x170')]||0x1388;_0x531c43['XMD-AMDMINWORDLENGTH']=_0x1d09ab['dialAMDMinWordLength']||0x64;_0x531c43['XMD-AMDBETWEENWORDSSILENCE']=_0x1d09ab[_0xf757('0x171')]||0x32;_0x531c43[_0xf757('0x172')]=_0x1d09ab['dialAMDMaximumNumberOfWords']||0x3;_0x531c43[_0xf757('0x173')]=_0x1d09ab[_0xf757('0x174')]||0x100;_0x531c43[_0xf757('0x175')]=_0x1d09ab[_0xf757('0x176')]||0x1388;}if(_0x1d09ab[_0xf757('0x79')]==='outbound'){_0x531c43[_0xf757('0x177')]=_0x2619c4[_0xf757('0xf8')];}else{_0x531c43[_0xf757('0x178')]=_0x2619c4[_0xf757('0xf9')];}for(var _0x245c91 in _0x2619c4[_0xf757('0x164')]){if(typeof _0x2619c4['Contact'][_0x245c91]!==_0xf757('0xaa')){if(isNotNull(_0x2619c4['Contact'][_0x245c91])&&_0x245c91!=='id'&&_0x245c91!==_0xf757('0x179')&&_0x245c91!==_0xf757('0x17a')&&_0x245c91!==_0xf757('0x17b')){_0x531c43[util['format'](_0xf757('0x17c'),_0xf757('0x17d'),_[_0xf757('0x17e')](_0x245c91))]=_0x2619c4['Contact'][_0x245c91];}}}var _0x4d6815=_0x182eac[_0xf757('0xd3')](_0x1d09ab[_0xf757('0x76')])?getCallerId(_0x1d09ab[_0xf757('0x76')][_0xf757('0x17f')],_0x1d09ab[_0xf757('0x180')],_0x1d09ab[_0xf757('0x181')]>0x0?getCallerIdRandom(_0x1d09ab[_0xf757('0x182')],_0x1d09ab[_0xf757('0x181')]):_0x1d09ab[_0xf757('0x182')]):getCallerId(_[_0xf757('0xac')](_0x1d09ab[_0xf757('0x13c')])?_0x1d09ab['Trunk']['callerid']:_0x1d09ab[_0xf757('0x13c')]['callerid'],_0x1d09ab[_0xf757('0x180')],_0x1d09ab[_0xf757('0x181')]>0x0?getCallerIdRandom(_0x1d09ab[_0xf757('0x182')],_0x1d09ab[_0xf757('0x181')]):_0x1d09ab[_0xf757('0x182')]);if(_0x4d6815){_0x531c43[_0xf757('0x183')]=_0x182eac[_0xf757('0xa9')][_0xaeabf3][_0xf757('0x184')]=extractCalleridName(_0x4d6815);_0x531c43[_0xf757('0x185')]=_0x182eac['actions'][_0xaeabf3][_0xf757('0x186')]=extractCalleridNumber(_0x4d6815);}return ami[_0xf757('0x14b')]({'actionid':_0xaeabf3,'action':_0xf757('0x162'),'channel':_0x182eac['isTrunkReachable'](_0x1d09ab[_0xf757('0x76')])?util['format']('SIP/%s/%s%s',_0x1d09ab[_0xf757('0x76')]['name'],isNotNull(_0x1d09ab[_0xf757('0x187')])?_0x1d09ab[_0xf757('0x187')]['trim']()||'':'',_0x1d09ab[_0xf757('0x188')]>0x0?_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]['substring'](_0x1d09ab[_0xf757('0x188')]):_0x2619c4[_0xf757('0x164')]['phone']):util[_0xf757('0x77')](_0xf757('0x189'),_[_0xf757('0xac')](_0x1d09ab[_0xf757('0x13c')])?_0x1d09ab[_0xf757('0x76')]['name']:_0x1d09ab[_0xf757('0x13c')][_0xf757('0x41')],isNotNull(_0x1d09ab[_0xf757('0x187')])?_0x1d09ab[_0xf757('0x187')][_0xf757('0x18a')]()||'':'',_0x1d09ab[_0xf757('0x188')]>0x0?_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]['substring'](_0x1d09ab[_0xf757('0x188')]):_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]),'callerid':_0x4d6815,'Exten':_0xf757('0xdd'),'Context':_0xf757('0x18b'),'Priority':'1','variable':_0x531c43,'timeout':(_0x1d09ab[_0xf757('0x5d')]||0x1e)*0x3e8,'async':!![],'channelid':_0xaeabf3})[_0xf757('0xb5')](function(_0x12cecb){return _0x287ca8(_0x12cecb);})[_0xf757('0xae')](function(_0x56b3c6){_0x1d09ab[_0xf757('0x66')]+=0x1;var _0x39109d=new History(_0x182eac[_0xf757('0xa9')][_0xaeabf3]);logger[_0xf757('0x95')](util[_0xf757('0x77')](_0xf757('0x18c'),JSON[_0xf757('0x49')](_0x56b3c6)));_0x39109d[_0xf757('0xa5')]=0xe;_0x39109d['statedesc']='OriginateError';_0x39109d[_0xf757('0xa7')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));_0x39109d[_0xf757('0x11a')]=_0x39109d[_0xf757('0xa7')];_0x182eac[_0xf757('0xc7')](_0x39109d)[_0xf757('0xae')](loggerCatch(_0xf757('0x18d')));_0x182eac[_0xf757('0xc5')](_0x39109d)[_0xf757('0xae')](loggerCatch(_0xf757('0x18d')))[_0xf757('0x22')](function(){delete _0x182eac['actions'][_0xaeabf3];return _0x4cad94(msgResponse(_0xf757('0x162'),_0xf757('0x48'),'originate\x20action\x20Error'));});});});};Dialer[_0xf757('0x20')][_0xf757('0x34')]=function(_0x5bab19){var _0x55f0fc=this[_0xf757('0xa9')][_0x5bab19[_0xf757('0x125')]];if(_0x55f0fc){delete this[_0xf757('0xa9')][_0x5bab19[_0xf757('0x125')]];_0x55f0fc[_0xf757('0x18e')]=moment()['format'](_0xf757('0xf7'));var _0x5b4ad4=_0x55f0fc['type']==='ivr'?this[_0xf757('0x26')][_0x55f0fc[_0xf757('0xb1')]]:this[_0xf757('0x25')][_0x55f0fc[_0xf757('0x18f')]()];if(!this[_0xf757('0xd1')](_0x5bab19[_0xf757('0x190')])){this[_0xf757('0xb0')](_0x5b4ad4);return this['callProgressDetecting'](_0x55f0fc,_0x5b4ad4,_0x5bab19)[_0xf757('0xae')](loggerCatch('[callProgressDetecting]\x20'));}this['uniqueId'][_0x5bab19[_0xf757('0xd9')]]=_0x55f0fc;}};Dialer[_0xf757('0x20')][_0xf757('0x191')]=function(_0x5136ef,_0x5b3b41,_0x1b54ea){var _0x2779fd=new History(_0x5b3b41);if(_0x2779fd[_0xf757('0xea')]+_0x2779fd[_0xf757('0xeb')]+_0x2779fd['countnoanswerretry']+_0x2779fd[_0xf757('0xed')]+_0x2779fd[_0xf757('0xee')]+_0x2779fd['countabandonedretry']+_0x2779fd['countmachineretry']+_0x2779fd['countagentrejectretry']>=_0x1b54ea['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x5136ef){case 0x3:if(_0x2779fd[_0xf757('0xec')]>=_0x1b54ea[_0xf757('0x192')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countnoanswerretry':_0x2779fd[_0xf757('0xec')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0x193')],'minutes')['format'](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x194')));break;case 0x5:if(_0x2779fd[_0xf757('0xea')]>=_0x1b54ea[_0xf757('0x195')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countbusyretry':_0x2779fd[_0xf757('0xea')]+=0x1,'scheduledat':moment()['add'](_0x1b54ea['dialBusyRetryFrequency'],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch(_0xf757('0x196')));break;case 0x8:if(_0x2779fd['countcongestionretry']>=_0x1b54ea[_0xf757('0x197')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countcongestionretry':_0x2779fd[_0xf757('0xeb')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0x198')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch(_0xf757('0x199')));break;case 0x0:if(_0x2779fd[_0xf757('0xed')]>=_0x1b54ea[_0xf757('0x19a')]-0x1){return!![];}else{this[_0xf757('0xbc')]({'active':![],'countnosuchnumberretry':_0x2779fd[_0xf757('0xed')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0x19b')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x2779fd[_0xf757('0xee')]>=_0x1b54ea[_0xf757('0x117')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countdropretry':_0x2779fd[_0xf757('0xee')]+=0x1,'scheduledat':moment()['add'](_0x1b54ea[_0xf757('0x118')],'minutes')[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd['ContactId'],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x2779fd[_0xf757('0x121')]>=_0x1b54ea[_0xf757('0x19c')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x2779fd['countabandonedretry']+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea['dialAbandonedRetryFrequency'],'minutes')['format'](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x123')));break;case 0x13:if(_0x2779fd[_0xf757('0xf2')]>=_0x1b54ea['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x2779fd[_0xf757('0xf2')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0xf5')],_0xf757('0xf6'))[_0xf757('0x77')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0xfa')));break;case 0x14:if(_0x2779fd['countagentrejectretry']>=_0x1b54ea[_0xf757('0x19d')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countagentrejectretry':_0x2779fd[_0xf757('0xfe')]+=0x1,'scheduledat':moment()['add'](_0x1b54ea[_0xf757('0x19e')],'minutes')[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd['ContactId'],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch(_0xf757('0x19f')));break;default:return!![];}};Dialer['prototype'][_0xf757('0x1a0')]=function(_0x4ddf09,_0xaf1d0,_0x21d364){var _0xe828cb=this;var _0x584e9c=new History(_0x4ddf09);return new BPromise(function(_0x199b96,_0x5cc765){if(_[_0xf757('0x3f')](_0xaf1d0)&&typeof _0xaf1d0!=='object'){return _0x5cc765(msgResponse(_0xf757('0x1a1'),_0xf757('0x144'),_0xf757('0x1a2')));}if(_['isUndefined'](_0x21d364)&&typeof _0x21d364!==_0xf757('0x1a3')){return _0x5cc765(msgResponse(_0xf757('0x1a1'),_0xf757('0x144'),_0xf757('0x1a4')));}switch(_0x21d364[_0xf757('0x10a')]){case'0':_0xaf1d0[_0xf757('0x65')]+=0x1;_0x584e9c['state']=0x0;_0x584e9c['statedesc']='NoSuchNumber';_0x584e9c[_0xf757('0xed')]+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami[_0xf757('0x4d')]('custom:agentnosuchnumber',ut[_0xf757('0xe3')](_0x4ddf09,'nosuchnumber'));_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0xfd')));if(_0xe828cb[_0xf757('0x191')](0x0,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xed')]>=_0xaf1d0[_0xf757('0x19a')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,'reason\x200\x20no\x20such\x20number....');}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1a5'));}}break;case'3':_0xaf1d0['outboundNoAnswerCallsDay']+=0x1;_0x584e9c[_0xf757('0xa5')]=0x3;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1a6');_0x584e9c['countnoanswerretry']+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami[_0xf757('0x4d')](_0xf757('0x1a7'),ut[_0xf757('0xe3')](_0x4ddf09,'noanswer'));_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0x1a8')));if(_0xe828cb[_0xf757('0x191')](0x3,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xec')]>=_0xaf1d0[_0xf757('0x192')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1a9'));}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1a9'));}}break;case'5':_0xaf1d0[_0xf757('0x1aa')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0x5;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1ab');_0x584e9c['countbusyretry']+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami['emit']('custom:agentbusy',ut['buildObj'](_0x4ddf09,_0xf757('0x1ac')));_0xe828cb['createHistory'](_0x584e9c)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0xe828cb[_0xf757('0x191')](0x5,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xea')]>=_0xaf1d0[_0xf757('0x195')]){_0xe828cb['createStateFinal'](_0x584e9c,_0x199b96,_0x5cc765,'reason\x205\x20busy');}else{_0xe828cb['stateGlobal'](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1ad'));}}break;case'8':_0xaf1d0[_0xf757('0x61')]+=0x1;_0x584e9c['state']=0x8;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1ae');_0x584e9c[_0xf757('0xeb')]+=0x1;_0x584e9c['countglobal']+=0x1;ami[_0xf757('0x4d')](_0xf757('0x1af'),ut['buildObj'](_0x4ddf09,'congestion'));_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0xe828cb['checkRetriveMax'](0x8,_0x4ddf09,_0xaf1d0)){if(_0x584e9c['countcongestionretry']>=_0xaf1d0[_0xf757('0x197')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b0'));}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b0'));}}break;case'11':_0xaf1d0[_0xf757('0x1b1')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0xb;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x11f');_0x584e9c[_0xf757('0x121')]+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0x1b2')));if(_0xe828cb[_0xf757('0x191')](0xb,_0x4ddf09,_0xaf1d0)){if(_0x584e9c['countabandonedretry']>=_0xaf1d0[_0xf757('0x19c')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,'reason\x2011\x20abandoned');}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b3'));}}break;case'20':_0xaf1d0[_0xf757('0x68')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0x14;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1b4');_0x584e9c[_0xf757('0xfe')]+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami[_0xf757('0x4d')](_0xf757('0x1b5'),ut['buildObj'](_0x4ddf09,_0xf757('0x1b6')));_0xe828cb[_0xf757('0xc7')](_0x584e9c)['catch'](loggerCatch(_0xf757('0x1b7')));if(_0xe828cb['checkRetriveMax'](0x14,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xfe')]>=_0xaf1d0['dialAgentRejectMaxRetry']){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b8'));}else{_0xe828cb['stateGlobal'](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b8'));}}break;default:_0xaf1d0[_0xf757('0x107')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0xc;_0x584e9c[_0xf757('0xa6')]=_0x21d364[_0xf757('0x10a')];_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0x1b9')));if(_0xe828cb[_0xf757('0x191')](_0x21d364[_0xf757('0x10a')],_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xea')]+_0x584e9c[_0xf757('0xeb')]+_0x584e9c[_0xf757('0xec')]+_0x584e9c[_0xf757('0xed')]+_0x584e9c[_0xf757('0xee')]+_0x584e9c[_0xf757('0x121')]+_0x584e9c['countmachineretry']+_0x584e9c[_0xf757('0xfe')]>=_0xaf1d0[_0xf757('0xef')]){_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0x21d364[_0xf757('0x10a')]);}else{_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0x21d364[_0xf757('0x10a')]);}}}});};Dialer['prototype'][_0xf757('0xf0')]=function(_0x18a0a4,_0x8452bd,_0x239935,_0x4bee07){var _0x4d4247=new Final(_0x18a0a4);_0x4d4247[_0xf757('0xa5')]=0xf;_0x4d4247['statedesc']=_0xf757('0x1ba');this[_0xf757('0xff')](_0x4d4247,_0x8452bd,_0x239935,_0x4bee07);};Dialer[_0xf757('0x20')]['createStateFinal']=function(_0x28f035,_0x523202,_0x18490a,_0xfcfea7){this[_0xf757('0xc5')](_0x28f035)[_0xf757('0xb5')](function(){return _0x523202(msgResponse(_0xf757('0x1a1'),_0xf757('0xd2'),_0xfcfea7));})[_0xf757('0xae')](function(){return _0x18490a(msgResponse('[moveContactManagedDialer][0]','Failure','contact\x20not\x20moved'));});};Dialer[_0xf757('0x20')][_0xf757('0xb')]=function(_0xf62bd0){var _0x45639e=_0xf62bd0[_0xf757('0x1bb')]/0x64;var _0x181ec2=_0xf62bd0[_0xf757('0x63')]/(_0xf62bd0[_0xf757('0x63')]+_0xf62bd0[_0xf757('0x5f')]);var _0x391fb4=Math[_0xf757('0x1bc')](_0xf62bd0['predictiveIntervalAvailable']*(_0xf62bd0[_0xf757('0x1bd')]/0x64));var _0x2ebb91=Math[_0xf757('0x1bc')](_0xf62bd0[_0xf757('0x70')]*(_0xf62bd0[_0xf757('0x1be')]/0x64));var _0x28be27=_0xf62bd0[_0xf757('0x51')]+_0xf62bd0[_0xf757('0x56')];var _0x5bc988=Math[_0xf757('0x1bf')](_0xf62bd0[_0xf757('0x72')]*_0xf62bd0[_0xf757('0x73')]*_0xf62bd0['predictiveIntervalHitRate']*_0xf62bd0[_0xf757('0x1c0')]);if(_[_0xf757('0x3f')](_0xf62bd0[_0xf757('0x2c')])){if(!_[_0xf757('0x3f')](_0xf62bd0['startPredictive'])){_0xf62bd0[_0xf757('0x75')]=undefined;loggerPredictive[_0xf757('0x95')](_0xf757('0x1c1'),_0xf757('0x1c2'));}if(!_[_0xf757('0x3f')](_0xf62bd0[_0xf757('0x90')])){loggerPredictive[_0xf757('0x95')](_0xf757('0x1c1'),_0xf757('0x1c3'));clearInterval(_0xf62bd0[_0xf757('0x90')]);_0xf62bd0['handlePredictive']=undefined;}_0xf62bd0[_0xf757('0x2c')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1c4'),_0xf62bd0[_0xf757('0x2c')]);this[_0xf757('0x1c5')](_0xf62bd0,0x1);}else if(ifInterval(_0xf62bd0[_0xf757('0x1c6')],_0xf62bd0['startProgressive'])){this['handlePower'](_0xf62bd0,0x1);loggerPredictiveCalls['info'](_0xf757('0x1c7'),_0xf62bd0['startProgressive'],_0xf62bd0['name']);_0xf62bd0['erlangCalls']=0x0;_0xf62bd0[_0xf757('0x6d')]=0x0;}else if(_0x45639e<_0x181ec2&&_0xf62bd0[_0xf757('0x1c8')]===_0xf757('0x1c9')){freeVariablesPredictive(_0xf62bd0);loggerPredictive[_0xf757('0x7d')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day',_0x181ec2,_0xf757('0x2c'),_0xf62bd0[_0xf757('0x41')]);}else if(_0x5bc988<_0xf62bd0['predictiveIntervalErlangCallsDroppedCalls']&&_0xf62bd0[_0xf757('0x1c8')]===_0xf757('0x1c9')){freeVariablesPredictive(_0xf62bd0);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0xf757('0x1ca'),_0x5bc988,'Drop\x20in\x20this\x20interval',_0xf62bd0[_0xf757('0x6d')],_0xf757('0x2c'),_0xf62bd0[_0xf757('0x41')]);}else if(!ifInterval(_0xf62bd0[_0xf757('0x1c6')],_0xf62bd0[_0xf757('0x2c')])&&_['isUndefined'](_0xf62bd0[_0xf757('0x75')])&&!_[_0xf757('0x3f')](_0xf62bd0[_0xf757('0x2c')])){_0xf62bd0['startPredictive']=moment()['format'](_0xf757('0xf7'));loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1cb'),_0xf62bd0[_0xf757('0x75')]);this['averageHandleTime'](_0xf62bd0[_0xf757('0x1c6')])['then'](this[_0xf757('0x1cc')](_0xf62bd0))[_0xf757('0xb5')](mergeDataErlangB(_0xf62bd0))['then'](this['startMethodPredictive'](_0xf62bd0))['catch'](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0xf62bd0));}else if(!ifInterval(_0xf62bd0['dialPredictiveInterval'],_0xf62bd0[_0xf757('0x75')])){_0xf62bd0[_0xf757('0x6d')]=0x0;_0xf62bd0[_0xf757('0x75')]=moment()['format'](_0xf757('0xf7'));loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1cd'),_0xf62bd0['startPredictive']);clearInterval(_0xf62bd0['handlePredictive']);_0xf62bd0[_0xf757('0x90')]=undefined;this[_0xf757('0xba')](_0xf62bd0[_0xf757('0x1c6')])[_0xf757('0xb5')](this[_0xf757('0x1cc')](_0xf62bd0))[_0xf757('0xb5')](mergeDataErlangB(_0xf62bd0))[_0xf757('0xb5')](this[_0xf757('0x1ce')](_0xf62bd0))['catch'](loggerCatchPredictive(_0xf757('0x1cf'),_0xf62bd0));}else if(_0xf62bd0[_0xf757('0x70')]&&_0x28be27<_0xf62bd0[_0xf757('0x70')]-_0x2ebb91){freeVariablesPredictive(_0xf62bd0);loggerPredictive['info'](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1d0'),_0x28be27,_0xf757('0x1d1'),_0xf62bd0['predictiveIntervalAvailable'],'-',_0x2ebb91,'=',_0xf62bd0[_0xf757('0x70')]-_0x2ebb91,')');}else if(_0xf62bd0['predictiveIntervalAvailable']&&_0x28be27>_0xf62bd0['predictiveIntervalAvailable']+_0x391fb4){freeVariablesPredictive(_0xf62bd0);loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1d0'),_0x28be27,')\x20are\x20more\x20than\x20threshold\x20(',_0xf62bd0['predictiveIntervalAvailable'],'+',_0x391fb4,'=',_0xf62bd0[_0xf757('0x70')]+_0x391fb4,')');}};Dialer['prototype']['getDataPredictive']=function(_0x5c1043){var _0x296984=this;return function(_0x5a1b04){return new BPromise(function(_0x2b3f95,_0x287531){_['merge'](_0x5c1043,_0x5a1b04[0x0]);if(checkGetDataPredictive(_0x5a1b04[0x0])){var _0x127818=_0x5c1043[_0xf757('0x70')]=_0x5c1043['talking']+_0x5c1043[_0xf757('0x51')];var _0xab4b65=_0x5c1043['dialPredictiveInterval']*0x3c;var _0xa32bde=_0x5a1b04[0x0][_0xf757('0x6a')]+_0x5a1b04[0x0][_0xf757('0x83')];var _0x452f8e=(_0x5a1b04[0x0][_0xf757('0x69')]+_0x5a1b04[0x0][_0xf757('0x6c')]+_0x5a1b04[0x0][_0xf757('0x6b')])/_0x5a1b04[0x0][_0xf757('0x71')];_0x5c1043[_0xf757('0x6e')]=_0x452f8e>0x0?_0x452f8e:0x1;switch(_0x5c1043[_0xf757('0x1c8')]){case _0xf757('0x1c9'):var _0x9ab3e5=_0x5c1043[_0xf757('0x1bb')]/0x64;return _0x296984[_0xf757('0x1d2')](_0x127818,_0xab4b65,_0xa32bde,_0x452f8e,_0x9ab3e5)[_0xf757('0xb5')](function(_0x5c8744){return _0x2b3f95(_0x5c8744);});case'agentBusyFactor':var _0x5a38ee=_0x5c1043['dialPredictiveOptimizationPercentage']/0x64;return _0x296984[_0xf757('0x1d3')](_0x127818,_0xab4b65,_0xa32bde,_0x452f8e,_0x5a38ee)[_0xf757('0xb5')](function(_0xee3ee8){return _0x2b3f95(_0xee3ee8);});default:return _0x287531(msgResponse('[getDataPredictive]',_0xf757('0x144'),_0xf757('0x1d4')));}}else{return _0x287531(msgResponse(_0xf757('0x1d5'),'Failure',_0xf757('0x1d6')));}});};};Dialer[_0xf757('0x20')][_0xf757('0x1d7')]=function(_0x50e621){var _0x51d498=this;return function(_0x4d1f53){return new BPromise(function(_0x162ee7,_0x2fbe58){_['merge'](_0x50e621,_0x4d1f53[0x0]);if(checkGetDataPredictive(_0x4d1f53[0x0])){loggerPredictive[_0xf757('0x7d')](JSON['stringify'](_0x4d1f53[0x0]));if(_0x50e621[_0xf757('0x1c8')]==='dropRate'){return _0x51d498[_0xf757('0xc3')](_0x50e621['id'])[_0xf757('0xb5')](function(_0x431577){var _0x5f1815=_0x50e621[_0xf757('0x52')]-_0x431577[0x0]['outboundQueuePauses'];var _0x5e0c55=_0x50e621[_0xf757('0x1c6')]*0x3c;var _0x1b786d=_0x4d1f53[0x0]['predictiveIntervalAvgTalktime']+_0x4d1f53[0x0][_0xf757('0x83')];var _0x18bf48=(_0x4d1f53[0x0][_0xf757('0x69')]+_0x4d1f53[0x0][_0xf757('0x6c')]+_0x4d1f53[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x4d1f53[0x0][_0xf757('0x71')];var _0x4c6a4a=_0x50e621[_0xf757('0x1bb')]/0x64;_0x50e621['predictiveIntervalPauses']=_0x431577[0x0][_0xf757('0x1d8')]||0x0;_0x50e621[_0xf757('0x6e')]=_0x18bf48>0x0?_0x18bf48:0x1;return _0x51d498[_0xf757('0x1d2')](_0x5f1815,_0x5e0c55,_0x1b786d,_0x18bf48,_0x4c6a4a);})[_0xf757('0xb5')](function(_0x3e86c4){return _0x162ee7(_0x3e86c4);})[_0xf757('0xae')](function(_0x3495a1){return _0x2fbe58(msgResponse('[CatchErlangB]',_0xf757('0x144'),JSON[_0xf757('0x49')](_0x3495a1)));});}if(_0x50e621[_0xf757('0x1c8')]===_0xf757('0x1d9')){return _0x51d498[_0xf757('0xc3')](_0x50e621['id'])[_0xf757('0xb5')](function(_0x46b4c8){var _0x5ea2c0=_0x50e621['loggedIn']-_0x46b4c8[0x0][_0xf757('0x1d8')];var _0x417721=_0x50e621[_0xf757('0x1c6')]*0x3c;var _0x1de6da=_0x4d1f53[0x0][_0xf757('0x6a')]+_0x4d1f53[0x0][_0xf757('0x83')];var _0x5a53ba=(_0x4d1f53[0x0][_0xf757('0x69')]+_0x4d1f53[0x0][_0xf757('0x6c')]+_0x4d1f53[0x0][_0xf757('0x6b')])/_0x4d1f53[0x0]['predictiveIntervalTotalCalls'];var _0x3d6759=_0x50e621[_0xf757('0x1bb')]/0x64;_0x50e621[_0xf757('0x6f')]=_0x46b4c8[0x0][_0xf757('0x1d8')]||0x0;_0x50e621['predictiveIntervalHitRate']=_0x5a53ba>0x0?_0x5a53ba:0x1;return _0x51d498[_0xf757('0x1d3')](_0x5ea2c0,_0x417721,_0x1de6da,_0x5a53ba,_0x3d6759);})[_0xf757('0xb5')](function(_0x36486e){return _0x162ee7(_0x36486e);})[_0xf757('0xae')](function(_0x4cda10){return _0x2fbe58(msgResponse(_0xf757('0x1da'),_0xf757('0x144'),JSON[_0xf757('0x49')](_0x4cda10)));});}}else{return _0x2fbe58(msgResponse(_0xf757('0x1d5'),_0xf757('0x144'),_0xf757('0x1d6')));}});};};Dialer[_0xf757('0x20')][_0xf757('0x1ce')]=function(_0x18496e){var _0x409071=this;return function(){var _0x38d627=0x0;var _0x787337=Math[_0xf757('0x1bf')](_0x18496e[_0xf757('0x1db')]*0x3e8);if(_0x787337>0x0){_0x787337=_0x787337<0x64?0x64:_0x787337;loggerPredictive['info'](_0x18496e[_0xf757('0x41')],_0xf757('0x1dc'),_0x787337,_0xf757('0x4a'));_0x18496e[_0xf757('0x90')]=setInterval(function(){_0x409071[_0xf757('0x90')](_0x18496e);loggerPredictiveCalls[_0xf757('0x7d')](_0xf757('0x1dd'),_0x38d627+=0x1);},_0x787337);}else{loggerPredictive[_0xf757('0x7d')](_0x18496e['name'],_0xf757('0x1de'));}};};Dialer[_0xf757('0x20')][_0xf757('0x1df')]=function(_0x4fb641,_0x2ac034){var _0x1bdb3e=this;return function(_0x2a1e13){if(_['isEmpty'](_0x2a1e13)){if(_[_0xf757('0xac')](_0x2ac034['UserId'])||!_0x2ac034['recallme']){if(_0x4fb641[_0xf757('0x5c')]===_0xf757('0xa')){_0x4fb641[_0xf757('0x12a')]=_[_0xf757('0x3f')](_0x4fb641[_0xf757('0x12a')])?!![]:_0x4fb641[_0xf757('0x12a')];var _0xb55499=uuid['v4']();_0x1bdb3e[_0xf757('0xa9')][_0xb55499]=new Action(_0x4fb641,_0x2ac034,_0xb55499);loggerBooked[_0xf757('0x7d')]('[booked][checkContactBlack]',_0xb55499,'queueStatusComplete:\x20',JSON[_0xf757('0x49')](_0x4fb641[_0xf757('0x12a')]),_0xf757('0x1e0'),_0x4fb641[_0xf757('0x41')]);if(_0x4fb641['queueStatusComplete']){_0x4fb641['queueStatusComplete']=![];_0x1bdb3e['queueBooked'][_0x1bdb3e['actions'][_0xb55499][_0xf757('0xb1')]]=[];ami[_0xf757('0x14b')]({'actionid':_0xb55499,'action':_0xf757('0x1e1'),'queue':_0x4fb641['name']})[_0xf757('0xae')](function(){_0x1bdb3e[_0xf757('0xb0')](_0x4fb641);_0x1bdb3e[_0xf757('0xbc')]({'active':![],'ContactId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499][_0xf757('0xcd')],'ListId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['ListId'],'VoiceQueueId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['VoiceQueueId']||undefined,'CampaignId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1bdb3e[_0xf757('0xa9')][_0xb55499];});}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x1e2'),JSON[_0xf757('0x49')](_0x4fb641[_0xf757('0x12a')]),_0xf757('0x1e0'),_0x4fb641['name']);_0x1bdb3e[_0xf757('0xb0')](_0x4fb641);_0x1bdb3e[_0xf757('0xbc')]({'active':![],'ContactId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499][_0xf757('0xcd')],'ListId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['ListId'],'VoiceQueueId':_0x1bdb3e['actions'][_0xb55499][_0xf757('0xf8')]||undefined,'CampaignId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['CampaignId']||undefined})[_0xf757('0xae')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1bdb3e[_0xf757('0xa9')][_0xb55499];}}else{return _0x1bdb3e[_0xf757('0x1e3')](_0x4fb641,_0x2ac034);}}else{if(getDiff(_0x2ac034[_0xf757('0x1e4')])<_0x4fb641['dialRecallMeTimeout']*0x3c){if(_0x2ac034[_0xf757('0x1e5')]&&!_0x2ac034[_0xf757('0x1e5')]['voicePause']){_0x1bdb3e['preview'][_0xf757('0x12c')](_0x2ac034['id'])[_0xf757('0x22')](function(){_0x1bdb3e['updateOriginated'](_0x4fb641);});}else{_0x1bdb3e['unlockContact']({'active':![]},_0x2ac034['id'],0x1)[_0xf757('0x22')](function(){_0x1bdb3e[_0xf757('0xb0')](_0x4fb641);});}}else{_0x4fb641[_0xf757('0x67')]+=0x1;_0x1bdb3e['updateOriginated'](_0x4fb641);if(_0x4fb641['dialRecallInQueue']){_0x1bdb3e[_0xf757('0xbc')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2ac034[_0xf757('0xcd')],'ListId':_0x2ac034[_0xf757('0xce')],'VoiceQueueId':_0x2ac034[_0xf757('0xf8')]||undefined,'CampaignId':_0x2ac034[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x1e6')));_0x1bdb3e[_0xf757('0xc7')](createObjHistory(_0x4fb641,_0x2ac034,'RECALLINQUEUE',0x17,'RecallInQueue'))[_0xf757('0xae')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x1bdb3e[_0xf757('0xd8')](createObjHistory(_0x4fb641,_0x2ac034,_0xf757('0x1e7'),0x16,_0xf757('0x1e8')),_0xf757('0x1e9'),'[Originate][HistoryRecallClose]');}}}}else{_0x4fb641['outboundBlacklistCallsDay']+=0x1;_0x1bdb3e[_0xf757('0xd8')](createObjHistory(_0x4fb641,_0x2ac034,_0xf757('0x1ea'),0xd,_0xf757('0x1eb')),_0xf757('0x1ec'),_0xf757('0x1ed'));throw'inBlackList';}};};Dialer['prototype'][_0xf757('0x158')]=function(_0x322807){var _0x492e42=this;var _0xc67df1=_0x322807[_0xf757('0x1ee')]-_0x322807[_0xf757('0x97')]-_0x322807[_0xf757('0xc0')];emitCampaignSummary(_0x322807);if(_0xc67df1>0x0){if(_0xc67df1>this['maxNumberOriginate']){_0xc67df1=this['maxNumberOriginate'];}_0x322807[_0xf757('0xc0')]+=_0xc67df1;this['getContactDialerIvr'](_0x322807['id'],_0xc67df1,_0x322807[_0xf757('0x1ef')],_0x322807)[_0xf757('0xb5')](function(_0x3dd7e4){_0x322807[_0xf757('0xc0')]-=_0xc67df1;_0x322807[_0xf757('0xc0')]=_0x322807['temp']>0x0?_0x322807[_0xf757('0xc0')]:0x0;if(!checkContactEmpty(_0x3dd7e4)){_0x322807[_0xf757('0x40')]=_0xf757('0x1f0');logger[_0xf757('0x7d')](_0xf757('0x1f1')+_0x322807[_0xf757('0x41')]);}else{_0x322807[_0xf757('0x97')]+=_0x3dd7e4[_0xf757('0x96')];_0x322807[_0xf757('0x40')]='RUNNING';for(var _0x246ed6=0x0;_0x246ed6<_0x3dd7e4[_0xf757('0x96')];_0x246ed6+=0x1){_0x322807[_0xf757('0x1f2')]+=0x1;if(_['isNil'](_0x3dd7e4[_0x246ed6])||_[_0xf757('0xac')](_0x3dd7e4[_0x246ed6][_0xf757('0x164')])||_[_0xf757('0xac')](_0x3dd7e4[_0x246ed6][_0xf757('0x164')][_0xf757('0x165')])){_0x492e42[_0xf757('0xc9')](_0xf757('0x1f3'),_0x322807,_0x3dd7e4[_0x246ed6]);}else{_0x492e42[_0xf757('0xb8')](_[_0xf757('0xcc')](_0x3dd7e4[_0x246ed6],['CampaignId','Contact.phone']))[_0xf757('0xb5')](_0x492e42['checkContactBlack'](_0x322807,_0x3dd7e4[_0x246ed6]))[_0xf757('0xae')](_0x492e42['loggerHandler'](_0xf757('0x1f4'),_0x322807));}}}})[_0xf757('0xae')](loggerGetContactDialer(_0xf757('0x1f5'),_0x322807,_0xc67df1));}};Dialer[_0xf757('0x20')][_0xf757('0x1c5')]=function(_0x1a5b2f,_0x484fc0){var _0x2647c6=this;var _0x471044=[];var _0x3e71ef=_0x484fc0>=0x1?_0x484fc0:0x1;if(_0x1a5b2f[_0xf757('0x5c')]===_0xf757('0xa')){_0x3e71ef=0x1;}var _0xac959a=Math[_0xf757('0x1bf')](_0x1a5b2f[_0xf757('0x51')]*_0x3e71ef)-_0x1a5b2f[_0xf757('0x97')]-_0x1a5b2f['temp'];emitVoiceQueueSummary(_0x1a5b2f);if(_0x1a5b2f[_0xf757('0x1f6')]>0x0){var _0x43a38f=_0x1a5b2f['dialLimitQueue']-_0x1a5b2f[_0xf757('0x97')]-_0x1a5b2f['talking']-_0x1a5b2f[_0xf757('0xc0')]-_0x1a5b2f[_0xf757('0x9d')];if(_0xac959a>_0x43a38f){_0xac959a=_0x43a38f;}}if(_0xac959a>0x0){if(_0x1a5b2f[_0xf757('0x5c')]===_0xf757('0xa')){_0xac959a=0x1;}if(_0xac959a>this[_0xf757('0x1f7')]){_0xac959a=this['maxNumberOriginate'];}_0x1a5b2f['temp']+=_0xac959a;for(var _0x9cbedc in this['agents']){if(typeof this[_0xf757('0x27')][_0x9cbedc]!=='undefined'){if(this[_0xf757('0x27')][_0x9cbedc][_0xf757('0xa5')]==='not_inuse'&&this['agents'][_0x9cbedc][_0xf757('0xad')]===_0xf757('0xd6')){_0x471044[_0xf757('0x129')](this[_0xf757('0x27')][_0x9cbedc]['id']);}}}this['getContactDialer'](_0x1a5b2f['id'],_0x471044,_0xac959a,_0x1a5b2f[_0xf757('0x1ef')],_0x1a5b2f)[_0xf757('0xb5')](function(_0x29e603){_0x1a5b2f[_0xf757('0xc0')]-=_0xac959a;_0x1a5b2f[_0xf757('0xc0')]=_0x1a5b2f[_0xf757('0xc0')]>0x0?_0x1a5b2f[_0xf757('0xc0')]:0x0;if(!checkContactEmpty(_0x29e603)){_0x2647c6['countReScheduled'](_0x1a5b2f)[_0xf757('0xb5')](sendMessageReschedule(_0x1a5b2f))[_0xf757('0xae')](loggerCatch(_0xf757('0xb6')));}else{_0x1a5b2f[_0xf757('0x97')]+=_0x29e603[_0xf757('0x96')];_0x1a5b2f['message']=_0x1a5b2f[_0xf757('0x5c')]===_0xf757('0xa')?_0xf757('0x16b'):_0xf757('0x1f8');for(var _0x1e0316=0x0;_0x1e0316<_0x29e603[_0xf757('0x96')];_0x1e0316+=0x1){if(_[_0xf757('0xac')](_0x29e603[_0x1e0316])||_[_0xf757('0xac')](_0x29e603[_0x1e0316][_0xf757('0x164')])||_[_0xf757('0xac')](_0x29e603[_0x1e0316][_0xf757('0x164')][_0xf757('0x165')])){_0x2647c6[_0xf757('0xc9')](_0xf757('0x1f3'),_0x1a5b2f,_0x29e603[_0x1e0316]);}else{_0x2647c6[_0xf757('0xb7')](_[_0xf757('0xcc')](_0x29e603[_0x1e0316],[_0xf757('0xf8'),_0xf757('0x1f9')]))['then'](_0x2647c6[_0xf757('0x1df')](_0x1a5b2f,_0x29e603[_0x1e0316]))[_0xf757('0xae')](_0x2647c6[_0xf757('0x1fa')](_0xf757('0x1f3'),_0x1a5b2f));}}}})['catch'](loggerGetContactDialer(_0xf757('0x1fb'),_0x1a5b2f,_0xac959a));}};Dialer[_0xf757('0x20')]['handlePredictive']=function(_0x56bdb9){if(_0x56bdb9[_0xf757('0x1f6')]>0x0){var _0x46d131=_0x56bdb9['dialLimitQueue']-_0x56bdb9[_0xf757('0x97')]-_0x56bdb9[_0xf757('0x56')];if(_0x46d131>0x0){this[_0xf757('0x1fc')](_0x56bdb9);}else{loggerPredictiveCalls[_0xf757('0x7d')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x56bdb9);}};Dialer[_0xf757('0x20')][_0xf757('0x1fc')]=function(_0x19de88){var _0x2648e4=this;var _0x1d7873=[];_0x19de88[_0xf757('0x97')]+=0x1;for(var _0x2a1158 in this[_0xf757('0x27')]){if(typeof this['agents'][_0x2a1158]!=='undefined'){if(this[_0xf757('0x27')][_0x2a1158][_0xf757('0xa5')]===_0xf757('0x1fd')&&this[_0xf757('0x27')][_0x2a1158][_0xf757('0xad')]==='reachable'){_0x1d7873['push'](this[_0xf757('0x27')][_0x2a1158]['id']);}}}this['getContactDialer'](_0x19de88['id'],_0x1d7873,0x1,_0x19de88[_0xf757('0x1ef')],_0x19de88)[_0xf757('0xb5')](function(_0x556c88){if(!checkContactEmpty(_0x556c88)){checkContactLowerLimitOriginate(_0x19de88,0x1,0x0);_0x2648e4[_0xf757('0xb3')](_0x19de88)[_0xf757('0xb5')](sendMessageReschedule(_0x19de88))[_0xf757('0xae')](loggerCatch(_0xf757('0xb6')));}else{_0x19de88['message']=_0xf757('0x1f8');if(_['isNil'](_0x556c88[0x0])||_[_0xf757('0xac')](_0x556c88[0x0][_0xf757('0x164')])||_[_0xf757('0xac')](_0x556c88[0x0][_0xf757('0x164')]['phone'])){_0x2648e4['emptyContact'](_0xf757('0x1f3'),_0x19de88,_0x556c88[0x0]);}else{_0x2648e4[_0xf757('0xb7')](_[_0xf757('0xcc')](_0x556c88[0x0],[_0xf757('0xf8'),_0xf757('0x1f9')]))['then'](_0x2648e4[_0xf757('0x1df')](_0x19de88,_0x556c88[0x0]))[_0xf757('0xae')](_0x2648e4[_0xf757('0x1fa')](_0xf757('0x1fe'),_0x19de88));}}})[_0xf757('0xae')](loggerGetContactDialer(_0xf757('0x1ff'),_0x19de88,0x1));emitVoiceQueueSummary(_0x19de88);};Dialer['prototype'][_0xf757('0x1d2')]=function(_0x2200b8,_0x6eaf26,_0x32795a,_0x254fc1,_0x1cf908,_0x1a4132){loggerPredictive[_0xf757('0x7d')](_0xf757('0x200'));loggerPredictive['info'](_0xf757('0x201'),_0x2200b8);loggerPredictive[_0xf757('0x7d')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x6eaf26);loggerPredictive[_0xf757('0x7d')]('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',_0x32795a);loggerPredictive[_0xf757('0x7d')](_0xf757('0x202'),_0x254fc1);loggerPredictive[_0xf757('0x7d')](_0xf757('0x203'),_0x1cf908);loggerPredictive[_0xf757('0x7d')](_0xf757('0x85'));return new BPromise(function(_0x32bd9d,_0x55b223){if(_0x2200b8<=0x0||isNaN(_0x2200b8)){return _0x55b223(msgResponse('[abandonmentRate]',_0xf757('0x48'),'m\x20=\x20'+_0x2200b8));}if(_0x32795a<=0x0||isNaN(_0x32795a)){return _0x55b223(msgResponse(_0xf757('0x204'),_0xf757('0x48'),'Ts\x20=\x20'+_0x32795a));}if(_0x254fc1<=0x0||isNaN(_0x254fc1)){return _0x55b223(msgResponse(_0xf757('0x204'),'Error',_0xf757('0x205')+_0x254fc1));}if(_0x6eaf26<=0x0||isNaN(_0x6eaf26)){return _0x55b223(msgResponse(_0xf757('0x204'),_0xf757('0x48'),'interval\x20=\x20'+_0x6eaf26));}if(_0x1cf908<=0x0||isNaN(_0x1cf908)){return _0x55b223(msgResponse(_0xf757('0x204'),_0xf757('0x48'),_0xf757('0x206')+_0x1cf908));}_0x1a4132=_0x1a4132||0x0;var _0x4b05d2=0x1/_0x32795a;var _0x41d2e0=0x0;var _0x1a68db=0x0;var _0x19f301=0x0;var _0x2fde2f=0x0;for(var _0xe65f3d=0x0;_0x19f301<_0x1cf908;_0xe65f3d+=0x1){_0x1a68db=_0xe65f3d/_0x6eaf26;_0x41d2e0=(_0x254fc1*_0x1a68db+_0x1a4132)/_0x4b05d2;_0x19f301=erlangb(_0x41d2e0,_0x2200b8);_0x2fde2f=_0x41d2e0/_0x2200b8*(0x1-erlangb(_0x41d2e0,_0x2200b8));}return _0x32bd9d({'erlangCalls':_0xe65f3d,'erlangCallToSecond':_0x6eaf26/_0xe65f3d,'erlangAbandonmentRate':_0x19f301,'erlangBusyFactor':_0x2fde2f});});};Dialer[_0xf757('0x20')]['busyFactor']=function(_0x26d596,_0x1cbcf5,_0x2da8a4,_0x4826bd,_0x8ff065,_0x1b2c9c){loggerPredictive[_0xf757('0x7d')](_0xf757('0x207'));loggerPredictive[_0xf757('0x7d')](_0xf757('0x201'),_0x26d596);loggerPredictive[_0xf757('0x7d')](_0xf757('0x208'),_0x1cbcf5);loggerPredictive[_0xf757('0x7d')](_0xf757('0x209'),_0x2da8a4);loggerPredictive[_0xf757('0x7d')](_0xf757('0x202'),_0x4826bd);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x8ff065);loggerPredictive['info'](_0xf757('0x85'));return new BPromise(function(_0x35ba56,_0x2317b3){if(_0x26d596<=0x0||isNaN(_0x26d596)){return _0x2317b3(msgResponse(_0xf757('0x20a'),_0xf757('0x48'),_0xf757('0x20b')+_0x26d596));}if(_0x2da8a4<=0x0||isNaN(_0x2da8a4)){return _0x2317b3(msgResponse(_0xf757('0x20a'),_0xf757('0x48'),_0xf757('0x20c')+_0x2da8a4));}if(_0x4826bd<=0x0||isNaN(_0x4826bd)){return _0x2317b3(msgResponse(_0xf757('0x20a'),'Error',_0xf757('0x205')+_0x4826bd));}if(_0x1cbcf5<=0x0||isNaN(_0x1cbcf5)){return _0x2317b3(msgResponse(_0xf757('0x20a'),_0xf757('0x48'),_0xf757('0x20d')+_0x1cbcf5));}if(_0x8ff065<=0x0||isNaN(_0x8ff065)){return _0x2317b3(msgResponse('[busyFactor]',_0xf757('0x48'),_0xf757('0x20e')+_0x8ff065));}_0x1b2c9c=_0x1b2c9c||0x0;var _0x285967=0x1/_0x2da8a4;var _0x22de5b=0x0;var _0x1b2307=0x0;var _0x584d6e=0x0;var _0x5eec5c=0x0;for(var _0x4628c5=0x0;_0x5eec5c<_0x8ff065;_0x4628c5+=0x1){_0x1b2307=_0x4628c5/_0x1cbcf5;_0x22de5b=(_0x4826bd*_0x1b2307+_0x1b2c9c)/_0x285967;_0x584d6e=erlangb(_0x22de5b,_0x26d596);_0x5eec5c=_0x22de5b/_0x26d596*(0x1-erlangb(_0x22de5b,_0x26d596));}return _0x35ba56({'erlangCalls':_0x4628c5,'erlangCallToSecond':_0x1cbcf5/_0x4628c5,'erlangAbandonmentRate':_0x584d6e,'erlangBusyFactor':_0x5eec5c});});};module[_0xf757('0x20f')]=Dialer;
\ No newline at end of file
+var _0x238f=['\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialer','getCaller','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','updatedAt','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','response','callProgressDetecting','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','dialDropRetryFrequency','[rescheduleContact][Drop]','[rescheduleContact][Abandoned]','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','reason','custom:agentnosuchnumber','[syncAgentComplete][createHistory][0]','reason\x200\x20no\x20such\x20number....','custom:agentnoanswer','noanswer','Busy','busy','[syncAgentComplete][createHistory][5]','checkRetriveMax','dialBusyMaxRetry','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','predictiveIntervalErlangCallsDroppedCalls','started\x20in\x20predictive\x20at','averageHandleTime','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','agentBusyFactor','busyFactor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','[actionOriginate]\x20','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','RUNNING','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','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','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','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','exports','util','lodash','bluebird','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','syncQueueSummary','../ami','redis','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./agentComplete','./queueCallerAbandon','./hangup','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','isUndefined','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','\x20NOT\x20Active','Interval','\x20INTERVAL_IS_NULL','Intervals','INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type','outbound','pTalking','sumBillable','sumDuration','sumHoldTime','talking','abandoned','waiting','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangBusyFactor','Trunk','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','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','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','merge','seconds','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','stack','inspect','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','starttime','loopClearZombieChannels','clearZombieChannels','[uniqueid]','enqueue','isNil','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','checkIsBlackListIvr','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','loggerHandler','emptyContact','notFound','saveInDb','pick','UserId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','active','SIP/%s','uniqueid','variable','xcally-motion-dialer','dialAMDActive','HANGUP','HangupInAMD','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','MACHINE','statedesc','Machine','membername','countmachineretry','countglobal','countnosuchnumberretry','countabandonedretry','dialGlobalMaxRetry','stateGlobal','dialMachineMaxRetry','createStateFinal','dialMachineRetryFrequency','YYYY-MM-DD\x20HH:mm:ss','ContactId','CampaignId','[rescheduleContact][Machine]','value','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','outboundAnswerAgiCallsDay','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countagentrejectretry','reason19\x20machine....','add','minutes','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr]','cause-txt','Unknow','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dialDropMaxRetry','ListId','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','actionid','locked','stateinterface','strategy','idHopper','paused','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','run','Agent:\x20','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','push','command','iftime\x20%s,%s','interval','content','indexOf','true','all','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','progressive','handlePower','power','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialMethod','dialActive','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkDialMethod','[syncQueueSummary]','pow','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE'];(function(_0x1e775b,_0x3fb5ee){var _0x3e38cd=function(_0x7505ee){while(--_0x7505ee){_0x1e775b['push'](_0x1e775b['shift']());}};_0x3e38cd(++_0x3fb5ee);}(_0x238f,0xa5));var _0xf238=function(_0x2c038b,_0x5a2430){_0x2c038b=_0x2c038b-0x0;var _0x1c596d=_0x238f[_0x2c038b];return _0x1c596d;};'use strict';var util=require(_0xf238('0x0'));var _=require(_0xf238('0x1'));var BPromise=require(_0xf238('0x2'));var uuid=require('uuid');var moment=require(_0xf238('0x3'));var rr=require('rr');var md5=require(_0xf238('0x4'));var Redis=require(_0xf238('0x5'));var ut=require(_0xf238('0x6'));var config=require(_0xf238('0x7'));var logger=require(_0xf238('0x8'))('dialer');var loggerBooked=require(_0xf238('0x8'))(_0xf238('0x9'));var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require(_0xf238('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require(_0xf238('0x8'))(_0xf238('0xa'));var ami=require(_0xf238('0xb'));config[_0xf238('0xc')]=_['defaults'](config[_0xf238('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0xf238('0xd'))(new Redis(config[_0xf238('0xc')]));var cmHopper=require(_0xf238('0xe'));var cmHopperHistory=require(_0xf238('0xf'));var cmHopperBlack=require(_0xf238('0x10'));var voiceQueueRt=require(_0xf238('0x11'));var Action=require(_0xf238('0x12'));var History=require(_0xf238('0x13'));var Final=require('./final');var AgentComplete=require(_0xf238('0x14'));var QueueCallerAbandon=require(_0xf238('0x15'));var Hangup=require(_0xf238('0x16'));var ipAgi=process['env'][_0xf238('0x17')]||_0xf238('0x18');var strategy={'rrmemory':_0xf238('0x19'),'roundrobin':_0xf238('0x1a')};var Sequence=function(){};Sequence[_0xf238('0x1b')]['enqueue']=function(_0x1cd074){this['tail']=this[_0xf238('0x1c')]?this[_0xf238('0x1c')][_0xf238('0x1d')](_0x1cd074):_0x1cd074();};function Dialer(_0x8b3218,_0x2c7906){this[_0xf238('0x1e')]=new Sequence();this[_0xf238('0x1f')]=_0x2c7906;this['voiceQueues']=_0x8b3218[_0xf238('0x20')];this[_0xf238('0x21')]=_0x8b3218[_0xf238('0x21')];this[_0xf238('0x22')]=_0x8b3218['agents'];this[_0xf238('0x23')]=_0x8b3218[_0xf238('0x23')];this[_0xf238('0x24')]=config[_0xf238('0x24')]||0x2;this[_0xf238('0x25')]={};this[_0xf238('0x26')]={};this[_0xf238('0x27')]={};this[_0xf238('0x28')]={};this[_0xf238('0x29')]={};this[_0xf238('0x2a')]={};this[_0xf238('0x2b')]={};this[_0xf238('0x2c')]={};this[_0xf238('0x2d')]={};this[_0xf238('0x2e')]={};ami['on'](_0xf238('0x2f'),this[_0xf238('0x30')][_0xf238('0x31')](this));ami['on'](_0xf238('0x32'),this[_0xf238('0x33')][_0xf238('0x31')](this));ami['on'](_0xf238('0x34'),this[_0xf238('0x35')][_0xf238('0x31')](this));ami['on'](_0xf238('0x36'),this[_0xf238('0x37')][_0xf238('0x31')](this));ami['on'](_0xf238('0x38'),this[_0xf238('0xa')]['bind'](this));ami['on'](_0xf238('0x39'),this[_0xf238('0x3a')][_0xf238('0x31')](this));ami['on']('newexten',this[_0xf238('0x3b')][_0xf238('0x31')](this));ami['on'](_0xf238('0x3c'),this[_0xf238('0x3d')][_0xf238('0x31')](this));ami['on'](_0xf238('0x3e'),this[_0xf238('0x3f')][_0xf238('0x31')](this));ami['on'](_0xf238('0x40'),this[_0xf238('0x41')][_0xf238('0x31')](this));this['loopCampaigns']();this['loopClearZombieChannels']();}function isNotNull(_0x5a1132){return _0x5a1132!==null&&!_[_0xf238('0x42')](_0x5a1132);}function checkIsLoggedIn(_0x17dc91,_0x51b27b){return function(){if(_0x51b27b<=0x0){_0x17dc91['message']='AGENTS_NOT_LOGGED';throw _0x17dc91[_0xf238('0x43')]+_0xf238('0x44');}};}function isActive(_0x28f132){return _0x28f132;}function checkIsActive(_0x112f21,_0x4d40d3){return function(){if(!isActive(_0x4d40d3)){_0x112f21[_0xf238('0x45')]=_0xf238('0x46');throw _0x112f21[_0xf238('0x43')]+_0xf238('0x47');}};}function checkInterval(_0x34869e){return function(){if(!isNotNull(_0x34869e[_0xf238('0x48')])){_0x34869e['message']='INTERVAL_IS_NULL';throw _0x34869e[_0xf238('0x43')]+_0xf238('0x49');}if(!isNotNull(_0x34869e[_0xf238('0x48')][_0xf238('0x4a')])){_0x34869e[_0xf238('0x45')]=_0xf238('0x4b');throw _0x34869e['name']+_0xf238('0x49');}if(!isNotNull(_[_0xf238('0x4c')](_0x34869e['Interval'][_0xf238('0x4a')]))){_0x34869e[_0xf238('0x45')]='INTERVAL_IS_NULL';throw _0x34869e[_0xf238('0x43')]+_0xf238('0x49');}};}function msgResponse(_0x1cfbf1,_0x5a0171,_0x8a265){return{'action':_0x1cfbf1,'response':_0x5a0171,'message':_0x8a265,'stack':_0x8a265};}function myreject(_0x1206ec){return function(_0x410cff){return _0x1206ec(msgResponse(_0xf238('0x4d'),_0xf238('0x4e'),JSON[_0xf238('0x4f')](_0x410cff)));};}function getSeconds(_0x1d89c3,_0x1e576c){var _0x59dc92=moment(_0x1d89c3)['milliseconds'](0x0);var _0x1a2eaa=moment(_0x1e576c)[_0xf238('0x50')](0x0);return _0x59dc92[_0xf238('0x51')](_0x1a2eaa,'seconds');}function emit(_0x29c761,_0x49d2d0,_0x2cc4d8){io['to'](_0x29c761)[_0xf238('0x52')](_0x49d2d0,_0x2cc4d8);}function emitVoiceQueueSummary(_0x58a894){if(_0x58a894[_0xf238('0x53')]===_0xf238('0x54')){var _0x5b7516={'id':_0x58a894['id'],'name':_0x58a894[_0xf238('0x43')],'strategy':_0x58a894['strategy'],'answered':_0x58a894['answered'],'available':_0x58a894['available'],'loggedIn':_0x58a894['loggedIn'],'pTalking':_0x58a894[_0xf238('0x55')],'sumBillable':_0x58a894[_0xf238('0x56')],'sumDuration':_0x58a894[_0xf238('0x57')],'sumHoldTime':_0x58a894[_0xf238('0x58')]||0x0,'talking':_0x58a894[_0xf238('0x59')],'total':_0x58a894['total'],'type':_0x58a894['type'],'unmanaged':_0x58a894['unmanaged'],'abandoned':_0x58a894[_0xf238('0x5a')],'waiting':_0x58a894[_0xf238('0x5b')],'loggedInDb':_0x58a894['loggedInDb'],'dialActive':_0x58a894['dialActive'],'dialMethod':_0x58a894['dialMethod'],'dialOriginateCallerIdName':_0x58a894[_0xf238('0x5c')],'dialOriginateCallerIdNumber':_0x58a894[_0xf238('0x5d')],'dialOriginateTimeout':_0x58a894['dialOriginateTimeout'],'dialPrefix':_0x58a894[_0xf238('0x5e')],'outboundAnswerAgiCallsDay':_0x58a894['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x58a894[_0xf238('0x5f')],'outboundBlacklistCallsDay':_0x58a894[_0xf238('0x60')],'outboundBusyCallsDay':_0x58a894['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x58a894[_0xf238('0x61')],'outboundDropCallsDayACS':_0x58a894[_0xf238('0x62')],'outboundDropCallsDayCallersExit':_0x58a894[_0xf238('0x63')],'outboundDropCallsDayTimeout':_0x58a894[_0xf238('0x64')],'outboundNoAnswerCallsDay':_0x58a894[_0xf238('0x65')],'outboundNoSuchCallsDay':_0x58a894[_0xf238('0x66')],'outboundOriginateFailureCallsDay':_0x58a894[_0xf238('0x67')],'outboundReCallsDay':_0x58a894[_0xf238('0x68')],'outboundRejectCallsDay':_0x58a894[_0xf238('0x69')],'outboundUnknownCallsDay':_0x58a894[_0xf238('0x6a')],'predictiveIntervalAnsweredCalls':_0x58a894[_0xf238('0x6b')],'predictiveIntervalAvgHoldtime':_0x58a894[_0xf238('0x6c')],'predictiveIntervalAvgTalktime':_0x58a894[_0xf238('0x6d')],'predictiveIntervalDroppedCallsCallersExit':_0x58a894[_0xf238('0x6e')],'predictiveIntervalDroppedCallsTimeout':_0x58a894[_0xf238('0x6f')],'predictiveIntervalErlangCalls':_0x58a894[_0xf238('0x70')],'predictiveIntervalErlangCallsDroppedCalls':_0x58a894['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x58a894[_0xf238('0x71')],'predictiveIntervalMultiplicativeFactor':_0x58a894[_0xf238('0x72')],'predictiveIntervalPauses':_0x58a894[_0xf238('0x73')],'predictiveIntervalAvailable':_0x58a894[_0xf238('0x74')],'predictiveIntervalTotalCalls':_0x58a894[_0xf238('0x75')],'message':_0x58a894[_0xf238('0x45')],'originated':_0x58a894[_0xf238('0x76')],'erlangCalls':_0x58a894['erlangCalls'],'erlangCallToSecond':_0x58a894[_0xf238('0x77')],'erlangAbandonmentRate':_0x58a894['erlangAbandonmentRate'],'erlangBusyFactor':_0x58a894[_0xf238('0x78')],'startPredictive':_0x58a894['startPredictive'],'startProgressive':_0x58a894[_0xf238('0x2b')]};if(_0x58a894[_0xf238('0x79')]){_0x5b7516[_0xf238('0x79')]={'id':_0x58a894[_0xf238('0x79')]['id'],'name':_0x58a894[_0xf238('0x79')][_0xf238('0x43')],'active':_0x58a894[_0xf238('0x79')]['active'],'callerid':_0x58a894[_0xf238('0x79')][_0xf238('0x7a')]};}if(_0x58a894[_0xf238('0x48')]){_0x5b7516[_0xf238('0x48')]={'id':_0x58a894['Interval']['id'],'name':_0x58a894[_0xf238('0x48')][_0xf238('0x43')]};}var _0x2ee461=md5(JSON[_0xf238('0x4f')](_0x5b7516));if(_0x58a894[_0xf238('0x4')]!==_0x2ee461){_0x58a894['md5']=_0x2ee461;emit(util[_0xf238('0x7b')](_0xf238('0x7c'),_0x5b7516[_0xf238('0x43')]),_0xf238('0x7d'),_0x5b7516);}}}function emitCampaignSummary(_0x2d27fc){if(_0x2d27fc[_0xf238('0x53')]===_0xf238('0x7e')){emit(util[_0xf238('0x7b')](_0xf238('0x7f'),_0x2d27fc[_0xf238('0x43')]),'campaign:save',_0x2d27fc);}}function checkGetDataPredictive(_0x22880c){if(isNotNull(_0x22880c)&&!_[_0xf238('0x4c')](_0x22880c)){loggerPredictive[_0xf238('0x80')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xf238('0x80')](_0xf238('0x81'),_0x22880c[_0xf238('0x75')]);loggerPredictive[_0xf238('0x80')](_0xf238('0x82'),_0x22880c[_0xf238('0x6b')]);loggerPredictive[_0xf238('0x80')](_0xf238('0x83'),_0x22880c[_0xf238('0x6f')]);loggerPredictive[_0xf238('0x80')](_0xf238('0x84'),_0x22880c[_0xf238('0x6e')]);loggerPredictive[_0xf238('0x80')](_0xf238('0x85'),_0x22880c[_0xf238('0x6c')]);loggerPredictive[_0xf238('0x80')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x22880c['predictiveIntervalAvgTalktime']);loggerPredictive['info']('---------------------------');if(_0x22880c[_0xf238('0x75')]>0x0){if(!_[_0xf238('0x42')](_0x22880c[_0xf238('0x6d')])&&_0x22880c[_0xf238('0x6d')]>0x0){return!![];}loggerPredictive[_0xf238('0x80')](_0xf238('0x86'));if(!_['isUndefined'](_0x22880c[_0xf238('0x6c')])&&_0x22880c[_0xf238('0x6c')]>0x0){return!![];}loggerPredictive['info'](_0xf238('0x87'));}else{loggerPredictive[_0xf238('0x80')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive['info'](_0xf238('0x88'));}return![];}function mergeDataErlangB(_0x3e24b5){return function(_0x59f07d){loggerPredictive['info'](_0xf238('0x89'));loggerPredictive[_0xf238('0x80')](_0xf238('0x8a'),_0x59f07d[_0xf238('0x8b')]);loggerPredictive[_0xf238('0x80')](_0xf238('0x8c'),_0x59f07d[_0xf238('0x77')]);loggerPredictive[_0xf238('0x80')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x59f07d[_0xf238('0x8d')]);loggerPredictive['info'](_0xf238('0x8e'),_0x59f07d['erlangBusyFactor']);loggerPredictive[_0xf238('0x80')](_0xf238('0x8f'),_0x59f07d[_0xf238('0x8d')]);loggerPredictive[_0xf238('0x80')](_0xf238('0x90'));_[_0xf238('0x91')](_0x3e24b5,_0x59f07d);};}function getDiff(_0x27c0c1){var _0x2d406d=moment()[_0xf238('0x50')](0x0);var _0xa5ad25=moment(_0x27c0c1)[_0xf238('0x50')](0x0);return _0x2d406d[_0xf238('0x51')](_0xa5ad25,_0xf238('0x92'));}function ifInterval(_0x563a7b,_0x52db23){if(_[_0xf238('0x42')](_0x52db23)){return![];}return getDiff(_0x52db23)<_0x563a7b*0x3c;}function freeVariablesPredictive(_0x49ad74){if(isNotNull(_0x49ad74)){if(!_['isUndefined'](_0x49ad74[_0xf238('0x2b')])){_0x49ad74['startProgressive']=undefined;loggerPredictive[_0xf238('0x80')](_0x49ad74[_0xf238('0x43')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0xf238('0x42')](_0x49ad74[_0xf238('0x2a')])){_0x49ad74[_0xf238('0x2a')]=undefined;loggerPredictive[_0xf238('0x80')](_0x49ad74['name'],_0xf238('0x93'));}if(!_[_0xf238('0x42')](_0x49ad74[_0xf238('0x94')])){clearInterval(_0x49ad74[_0xf238('0x94')]);_0x49ad74[_0xf238('0x94')]=undefined;loggerPredictive[_0xf238('0x80')](_0x49ad74[_0xf238('0x43')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x19bd25,_0x337354){if(_0x337354===0x0){return 0x0;}var _0x1754dc=0x1;for(var _0x380fa9=0x1;_0x380fa9<=_0x337354;_0x380fa9+=0x1){_0x1754dc=0x1+_0x1754dc*_0x380fa9/_0x19bd25;}return 0x1/_0x1754dc;}function isVoiceQueueOutbound(_0x22976f){return _0x22976f===_0xf238('0x54');}function isNotPreview(_0x1ef05d){return _0x1ef05d!=='preview';}function isCampaignIvr(_0x55805b){return _0x55805b===_0xf238('0x7e');}function getCallerId(_0x10e29c,_0x303861,_0x541dde){if(!_[_0xf238('0x42')](_0x541dde)&&typeof _0x541dde===_0xf238('0x95')&&!_[_0xf238('0x4c')](_0x541dde)){if(!_[_0xf238('0x42')](_0x303861)&&typeof _0x303861===_0xf238('0x95')&&!_[_0xf238('0x4c')](_0x303861)){return util[_0xf238('0x7b')](_0xf238('0x96'),_0x303861,_0x541dde);}return util['format'](_0xf238('0x96'),_0x541dde,_0x541dde);}if(!_[_0xf238('0x42')](_0x10e29c)&&typeof _0x10e29c==='string'&&!_[_0xf238('0x4c')](_0x10e29c)){return _0x10e29c;}return _0xf238('0x97');}function loggerCatchQueueSummary(_0x29cbbd,_0x31a3f4){return function(_0x18466b){freeVariablesPredictive(_0x31a3f4);emitVoiceQueueSummary(_0x31a3f4);emitCampaignSummary(_0x31a3f4);loggerSyncQueueSummary[_0xf238('0x98')](_0x29cbbd,util['inspect'](_0x18466b,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x228dc0,_0x36f204){return function(_0x2e9341){loggerPredictive[_0xf238('0x98')](_0x36f204[_0xf238('0x43')],_0x228dc0);loggerPredictive[_0xf238('0x98')](_0x2e9341[_0xf238('0x99')]);freeVariablesPredictive(_0x36f204);};}function loggerCatch(_0x4ccc15){return function(_0x55b6c9){logger[_0xf238('0x98')](_0x4ccc15,util[_0xf238('0x9a')](_0x55b6c9,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0xb3e18e){return _0xb3e18e&&!_['isUndefined'](_0xb3e18e)&&_0xb3e18e[_0xf238('0x9b')]>0x0;}function decremetOriginate(_0x582fc7){if(!_['isUndefined'](_0x582fc7)&&_0x582fc7!==null){if(typeof _0x582fc7['originated']!==_0xf238('0x9c')){if(_0x582fc7[_0xf238('0x76')]>0x0){_0x582fc7['originated']-=0x1;}else{logger[_0xf238('0x98')](_0xf238('0x9d'));}}}else{logger[_0xf238('0x98')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x47e20f,_0x4cac4a,_0x619de4){if(_0x4cac4a>_0x619de4){for(var _0x4c560a=0x0;_0x4c560a<_0x4cac4a-_0x619de4;_0x4c560a+=0x1){decremetOriginate(_0x47e20f);}}}function loggerGetContactDialer(_0x34fed3,_0x39e6b3,_0x23db5c){return function(_0x1fd4c9){checkContactLowerLimitOriginate(_0x39e6b3,_0x23db5c,0x0);logger[_0xf238('0x98')](_0x34fed3,util['inspect'](_0x1fd4c9,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x2be02){return function(_0x1b8b6a){if(isNotNull(_0x1b8b6a)&&isNotNull(_0x1b8b6a[0x0])){if(_0x1b8b6a[0x0][_0xf238('0x9e')]>0x0){_0x2be02[_0xf238('0x45')]=_0xf238('0x9f');logger[_0xf238('0x80')](_0xf238('0xa0')+_0x2be02['name'],_0x1b8b6a[0x0][_0xf238('0x9e')],'contacts');}else{_0x2be02[_0xf238('0x45')]=_0xf238('0xa1');logger[_0xf238('0x80')](_0xf238('0xa2')+_0x2be02[_0xf238('0x43')]);}}};}function notSendMessagesQueue(_0x1b1ee6){if(_0x1b1ee6[_0xf238('0xa3')]){freeVariablesPredictive(_0x1b1ee6);if(_0x1b1ee6[_0xf238('0x76')]===0x0&&_0x1b1ee6['talking']===0x0&&_0x1b1ee6[_0xf238('0x5b')]===0x0&&(_0x1b1ee6[_0xf238('0x55')]||0x0)===0x0){_0x1b1ee6[_0xf238('0xa3')]=![];_0x1b1ee6[_0xf238('0xa4')]=0x0;_0x1b1ee6[_0xf238('0x45')]=_0xf238('0x46');loggerSyncQueueSummary['error'](_0xf238('0xa5'),_0x1b1ee6[_0xf238('0x43')],'is\x20not\x20active');}else{_0x1b1ee6[_0xf238('0x45')]=_0xf238('0xa6');loggerSyncQueueSummary[_0xf238('0x98')](_0xf238('0xa5'),_0x1b1ee6[_0xf238('0x43')],_0xf238('0xa7'));}emitVoiceQueueSummary(_0x1b1ee6);}}function notSendMessagesCampaign(_0x25d7ae){if(_0x25d7ae['sendMessageOneNotActive']){if(_0x25d7ae[_0xf238('0x76')]===0x0){_0x25d7ae[_0xf238('0xa3')]=![];_0x25d7ae[_0xf238('0x45')]=_0xf238('0x46');loggerSyncQueueSummary[_0xf238('0x98')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x25d7ae['name'],_0xf238('0xa8'));}else{_0x25d7ae['message']=_0xf238('0xa6');loggerSyncQueueSummary[_0xf238('0x98')](_0xf238('0xa9'),_0x25d7ae[_0xf238('0x43')],_0xf238('0xa7'));}emitCampaignSummary(_0x25d7ae);}}function createObjHistory(_0x9c4641,_0x15aa18,_0x37978e,_0x1019b4,_0x1f7310){_0x9c4641['message']=_0x37978e;var _0x340640=new Action(_0x9c4641,_0x15aa18);var _0x169b19=new History(_0x340640);_0x169b19[_0xf238('0xaa')]=_0x1019b4;_0x169b19['statedesc']=_0x1f7310;_0x169b19['endtime']=_0x340640[_0xf238('0xab')];return _0x169b19;}Dialer[_0xf238('0x1b')][_0xf238('0xac')]=function(){var _0x250a9a=this;setInterval(function(){_0x250a9a[_0xf238('0xad')](_0x250a9a[_0xf238('0x28')],_0xf238('0xae'));_0x250a9a[_0xf238('0xad')](_0x250a9a[_0xf238('0x26')],'[actions]');},0x32c8);};Dialer[_0xf238('0x1b')][_0xf238('0xad')]=function(_0x28e4f7,_0x3d73e8){var _0x196779=this;for(var _0xb3c2dc in _0x28e4f7){if(typeof _0x28e4f7[_0xb3c2dc]!=='undefined'){this['sequence'][_0xf238('0xaf')](function(){if(!_[_0xf238('0xb0')](_0x28e4f7[_0xb3c2dc])){return ami[_0xf238('0xb1')]({'action':_0xf238('0xb2'),'channel':_0x28e4f7[_0xb3c2dc][_0xf238('0xb3')]})[_0xf238('0xb4')](function(_0x41ac1d){if(_0x41ac1d['message']===_0xf238('0xb5')){setTimeout(function(){if(_0x28e4f7[_0xb3c2dc]&&_0x28e4f7[_0xb3c2dc][_0xf238('0x53')]!==_0xf238('0x7e')){_0x196779[_0xf238('0xb6')](_0x196779['voiceQueues'][_0x28e4f7[_0xb3c2dc]['queue']]);logger[_0xf238('0x98')]('[Dialer][checkChannel]',_0x3d73e8,_0xb3c2dc,_0x28e4f7[_0xb3c2dc][_0xf238('0xb7')]);delete _0x28e4f7[_0xb3c2dc];}if(_0x28e4f7[_0xb3c2dc]&&_0x28e4f7[_0xb3c2dc][_0xf238('0x53')]===_0xf238('0x7e')){_0x196779[_0xf238('0xb6')](_0x196779[_0xf238('0x21')][_0x28e4f7[_0xb3c2dc]['queue']]);logger[_0xf238('0x98')](_0xf238('0xb8'),_0x3d73e8,_0xb3c2dc,_0x28e4f7[_0xb3c2dc][_0xf238('0xb7')]);delete _0x28e4f7[_0xb3c2dc];}},0x2328);}});}});}}};Dialer['prototype'][_0xf238('0xb9')]=function(_0x495070){return BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](cmHopper[_0xf238('0xb9')](_0x495070))['catch'](loggerCatch(_0xf238('0xbc')));};Dialer[_0xf238('0x1b')]['checkIsBlackList']=function(_0x36c592){return BPromise['resolve']()[_0xf238('0xbb')](cmHopperBlack[_0xf238('0xbd')](_0x36c592))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer['prototype'][_0xf238('0xbe')]=function(_0x4e64de){return BPromise['resolve']()['then'](cmHopperBlack['checkIsBlackListIvr'](_0x4e64de))['catch'](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0xf238('0x1b')]['averageHandleTime']=function(_0x48b017){return BPromise['resolve']()[_0xf238('0xbb')](cmHopperHistory[_0xf238('0xbf')](_0x48b017))[_0xf238('0xb4')](loggerCatch(_0xf238('0xc0')));};Dialer[_0xf238('0x1b')][_0xf238('0xc1')]=function(_0x1e4101){return BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](cmHopper[_0xf238('0xc1')](_0x1e4101))[_0xf238('0xb4')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xf238('0x1b')][_0xf238('0xc2')]=function(_0x4c7608,_0x461d01,_0x24a1ac){return BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](cmHopper[_0xf238('0xc2')](_0x4c7608,_0x461d01,_0x24a1ac))[_0xf238('0xb4')](loggerCatch(_0xf238('0xc3')));};Dialer[_0xf238('0x1b')][_0xf238('0xc4')]=function(_0x13bc76,_0x392436,_0x1a8264,_0x584a45,_0x53558b){return BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](cmHopper[_0xf238('0xc4')](_0x13bc76,_0x392436,_0x1a8264,_0x584a45))[_0xf238('0xb4')](function(_0x5e994b){_0x53558b[_0xf238('0xc5')]-=_0x1a8264;_0x53558b[_0xf238('0xc5')]=_0x53558b[_0xf238('0xc5')]>0x0?_0x53558b[_0xf238('0xc5')]:0x0;loggerCatch(_0xf238('0xc6'))(_0x5e994b);});};Dialer['prototype'][_0xf238('0xc7')]=function(_0x1e5528,_0x50c9e7,_0x29533d,_0x8d0ccf){return BPromise['resolve']()[_0xf238('0xbb')](cmHopper[_0xf238('0xc7')](_0x1e5528,_0x50c9e7,_0x29533d))[_0xf238('0xb4')](function(_0x115e06){_0x8d0ccf[_0xf238('0xc5')]-=_0x50c9e7;_0x8d0ccf['temp']=_0x8d0ccf[_0xf238('0xc5')]>0x0?_0x8d0ccf[_0xf238('0xc5')]:0x0;loggerCatch(_0xf238('0xc8'))(_0x115e06);});};Dialer[_0xf238('0x1b')][_0xf238('0xc9')]=function(_0x157686){return BPromise['resolve']()['then'](voiceQueueRt[_0xf238('0xc9')](_0x157686))['catch'](loggerCatch(_0xf238('0xca')));};Dialer[_0xf238('0x1b')][_0xf238('0xcb')]=function(_0x554562){return BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](cmHopper[_0xf238('0xcb')](_0x554562))[_0xf238('0xb4')](loggerCatch(_0xf238('0xcc')));};Dialer['prototype'][_0xf238('0xcd')]=function(_0x300da4){return BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](cmHopperHistory[_0xf238('0xcd')](_0x300da4))[_0xf238('0xb4')](loggerCatch('[createHistory]\x20'));};Dialer[_0xf238('0x1b')][_0xf238('0xb6')]=function(_0x2784b8){if(!_[_0xf238('0x42')](_0x2784b8)&&_0x2784b8!==null){if(typeof _0x2784b8[_0xf238('0x76')]!==_0xf238('0x9c')){if(_0x2784b8[_0xf238('0x76')]>0x0){_0x2784b8['originated']-=0x1;}else{logger[_0xf238('0x98')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xf238('0x98')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer['prototype'][_0xf238('0xce')]=function(_0x1f2bda,_0x4ae8f5){var _0x2f75ab=this;return function(_0x59881f){_0x2f75ab[_0xf238('0xb6')](_0x4ae8f5);logger[_0xf238('0x98')](_0x1f2bda,util[_0xf238('0x9a')](_0x59881f,{'showHidden':![],'depth':null}));};};Dialer[_0xf238('0x1b')][_0xf238('0xcf')]=function(_0x13976d,_0x30ae83,_0x55fdb9){var _0x1d7fa0={'state':0x19,'statedesc':_0xf238('0xd0')};this['updateOriginated'](_0x30ae83);this[_0xf238('0xd1')](_[_0xf238('0x91')](_0x1d7fa0,_[_0xf238('0xd2')](_0x55fdb9,['ContactId','ListId',_0xf238('0xd3'),_0xf238('0xd4'),'CampaignId'])),_0xf238('0xd5'),_0xf238('0xd6'));logger[_0xf238('0x98')](_0x13976d);};Dialer['prototype'][_0xf238('0xd7')]=function(_0x370ed4){return _0x370ed4===_0xf238('0xd8');};Dialer[_0xf238('0x1b')][_0xf238('0xd9')]=function(_0x4137bc){return!_[_0xf238('0x42')](_0x4137bc)&&_0x4137bc&&!_[_0xf238('0x42')](_0x4137bc['name'])&&!_[_0xf238('0x42')](_0x4137bc['active'])&&_0x4137bc[_0xf238('0xda')]&&(this[_0xf238('0x23')][util['format'](_0xf238('0xdb'),_0x4137bc[_0xf238('0x43')])][_0xf238('0xb2')]==='reachable'||this['trunks'][util[_0xf238('0x7b')](_0xf238('0xdb'),_0x4137bc[_0xf238('0x43')])][_0xf238('0xb2')]==='unmonitored');};Dialer[_0xf238('0x1b')][_0xf238('0xd1')]=function(_0xd541b,_0x10a5b0,_0x469f38){this['createHistory'](_0xd541b)[_0xf238('0xb4')](loggerCatch(_0x10a5b0));this[_0xf238('0xcb')](_0xd541b)['catch'](loggerCatch(_0x469f38));};Dialer[_0xf238('0x1b')][_0xf238('0x3d')]=function(_0x369c78){var _0x391cfa=this[_0xf238('0x28')][_0x369c78[_0xf238('0xdc')]];var _0x382893;if(!_[_0xf238('0xb0')](_0x369c78)&&!_[_0xf238('0xb0')](_0x369c78[_0xf238('0xdd')])&&!_[_0xf238('0xb0')](_0x369c78[_0xf238('0xdd')]['amdstatus'])&&_0x369c78['exten']===_0xf238('0xde')&&_0x391cfa){if(_0x391cfa[_0xf238('0x53')]!==_0xf238('0x7e')&&this[_0xf238('0x20')][_0x391cfa['queue']][_0xf238('0xdf')]&&_0x369c78['value']===_0xf238('0xe0')){delete this[_0xf238('0x28')][_0x369c78[_0xf238('0xdc')]];this['updateOriginated'](this[_0xf238('0x20')][_0x391cfa['queue']]);this[_0xf238('0x20')][_0x391cfa[_0xf238('0xb7')]][_0xf238('0x5f')]+=0x1;this[_0xf238('0x20')][_0x391cfa[_0xf238('0xb7')]]['outboundAnswerAgiCallsDay']+=0x1;_0x382893=new Hangup(_0x391cfa,_0x369c78);_0x382893[_0xf238('0xaa')]=0x12;_0x382893['statedesc']=_0xf238('0xe1');_0x382893['membername']=_0xf238('0xe2');ami[_0xf238('0x52')](_0xf238('0xe3'),ut[_0xf238('0xe4')](_0x382893,_0xf238('0xe5')));this['saveInDb'](_0x382893,_0xf238('0xe6'),'[syncHangupInAMD]');}if(_0x391cfa[_0xf238('0x53')]!==_0xf238('0x7e')&&this['voiceQueues'][_0x391cfa[_0xf238('0xb7')]][_0xf238('0xdf')]&&_0x369c78['value']===_0xf238('0xe7')){var _0x5473e4=this;return new BPromise(function(_0x39e6db,_0x16bbac){delete _0x5473e4[_0xf238('0x28')][_0x369c78[_0xf238('0xdc')]];_0x5473e4[_0xf238('0xb6')](_0x5473e4[_0xf238('0x20')][_0x391cfa[_0xf238('0xb7')]]);_0x5473e4[_0xf238('0x20')][_0x391cfa[_0xf238('0xb7')]][_0xf238('0x5f')]+=0x1;_0x5473e4['voiceQueues'][_0x391cfa[_0xf238('0xb7')]]['outboundAnswerAgiCallsDay']+=0x1;var _0xf0e7a3=_0x5473e4['voiceQueues'][_0x391cfa[_0xf238('0xb7')]];var _0x3acab3=new Hangup(_0x391cfa,_0x369c78);_0x3acab3[_0xf238('0xaa')]=0x13;_0x3acab3[_0xf238('0xe8')]=_0xf238('0xe9');_0x3acab3[_0xf238('0xea')]=_0xf238('0xe2');_0x3acab3[_0xf238('0xeb')]+=0x1;_0x3acab3[_0xf238('0xec')]+=0x1;_0x3acab3[_0xf238('0xe5')]=!![];ami[_0xf238('0x52')](_0xf238('0xe3'),ut[_0xf238('0xe4')](_0x3acab3,'amd'));_0x5473e4[_0xf238('0xcd')](_0x3acab3)[_0xf238('0xb4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x3acab3['countbusyretry']+_0x3acab3['countcongestionretry']+_0x3acab3['countnoanswerretry']+_0x3acab3[_0xf238('0xed')]+_0x3acab3['countdropretry']+_0x3acab3[_0xf238('0xee')]+_0x3acab3[_0xf238('0xeb')]+_0x3acab3['countagentrejectretry']>=_0xf0e7a3[_0xf238('0xef')]){_0x5473e4[_0xf238('0xf0')](_0x3acab3,_0x39e6db,_0x16bbac,'reason19\x20machine....');}else{if(_0x3acab3['countmachineretry']>=_0xf0e7a3[_0xf238('0xf1')]){_0x5473e4[_0xf238('0xf2')](_0x3acab3,_0x39e6db,_0x16bbac,'reason\x2019\x20machine....');}else{_0x5473e4[_0xf238('0xc1')]({'active':![],'countmachineretry':_0x3acab3[_0xf238('0xeb')],'scheduledat':moment()['add'](_0xf0e7a3[_0xf238('0xf3')],'minutes')['format'](_0xf238('0xf4')),'ContactId':_0x3acab3[_0xf238('0xf5')],'ListId':_0x3acab3['ListId'],'VoiceQueueId':_0x3acab3[_0xf238('0xd4')]||undefined,'CampaignId':_0x3acab3[_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0xf7')));_0x39e6db({'reschedule':0x1});}}});}if(_0x391cfa[_0xf238('0x53')]===_0xf238('0x7e')&&this[_0xf238('0x21')][_0x391cfa['queue']][_0xf238('0xdf')]&&_0x369c78[_0xf238('0xf8')]==='HANGUP'){delete this[_0xf238('0x28')][_0x369c78[_0xf238('0xdc')]];this[_0xf238('0xb6')](this['campaigns'][_0x391cfa[_0xf238('0xb7')]]);_0x382893=new Hangup(_0x391cfa,_0x369c78);_0x382893[_0xf238('0xaa')]=0x12;_0x382893[_0xf238('0xe8')]='HangupInAMD';_0x382893[_0xf238('0xea')]=_0xf238('0xe2');ami['emit'](_0xf238('0xe3'),ut[_0xf238('0xe4')](_0x382893,_0xf238('0xe5')));this[_0xf238('0xd1')](_0x382893,_0xf238('0xf9'),_0xf238('0xfa'));}if(_0x391cfa[_0xf238('0x53')]==='ivr'&&this[_0xf238('0x21')][_0x391cfa['queue']][_0xf238('0xdf')]&&_0x369c78[_0xf238('0xf8')]===_0xf238('0xe7')){var _0x5473e4=this;return new BPromise(function(_0x43c8e9,_0x55b519){delete _0x5473e4['uniqueId'][_0x369c78['uniqueid']];_0x5473e4[_0xf238('0xb6')](_0x5473e4['campaigns'][_0x391cfa[_0xf238('0xb7')]]);_0x5473e4[_0xf238('0x21')][_0x391cfa[_0xf238('0xb7')]][_0xf238('0x5f')]+=0x1;_0x5473e4[_0xf238('0x21')][_0x391cfa['queue']][_0xf238('0xfb')]+=0x1;var _0x3e0306=_0x5473e4[_0xf238('0x21')][_0x391cfa[_0xf238('0xb7')]];var _0x5d6ffd=new Hangup(_0x391cfa,_0x369c78);_0x5d6ffd[_0xf238('0xaa')]=0x13;_0x5d6ffd[_0xf238('0xe8')]='Machine';_0x5d6ffd['membername']=_0xf238('0xe2');_0x5d6ffd[_0xf238('0xeb')]+=0x1;_0x5d6ffd[_0xf238('0xec')]+=0x1;_0x5d6ffd[_0xf238('0xe5')]=!![];ami[_0xf238('0x52')](_0xf238('0xe3'),ut['buildObj'](_0x5d6ffd,_0xf238('0xe5')));_0x5473e4[_0xf238('0xcd')](_0x5d6ffd)[_0xf238('0xb4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x5d6ffd[_0xf238('0xfc')]+_0x5d6ffd[_0xf238('0xfd')]+_0x5d6ffd[_0xf238('0xfe')]+_0x5d6ffd['countnosuchnumberretry']+_0x5d6ffd[_0xf238('0xff')]+_0x5d6ffd[_0xf238('0xee')]+_0x5d6ffd['countmachineretry']+_0x5d6ffd[_0xf238('0x100')]>=_0x3e0306[_0xf238('0xef')]){_0x5473e4[_0xf238('0xf0')](_0x5d6ffd,_0x43c8e9,_0x55b519,_0xf238('0x101'));}else{if(_0x5d6ffd[_0xf238('0xeb')]>=_0x3e0306[_0xf238('0xf1')]){_0x5473e4[_0xf238('0xf2')](_0x5d6ffd,_0x43c8e9,_0x55b519,'reason\x2019\x20machine....');}else{_0x5473e4[_0xf238('0xc1')]({'active':![],'countmachineretry':_0x5d6ffd['countmachineretry'],'scheduledat':moment()[_0xf238('0x102')](_0x3e0306[_0xf238('0xf3')],_0xf238('0x103'))[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0x5d6ffd[_0xf238('0xf5')],'ListId':_0x5d6ffd['ListId'],'VoiceQueueId':_0x5d6ffd[_0xf238('0xd4')]||undefined,'CampaignId':_0x5d6ffd[_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0xf7')));_0x43c8e9({'reschedule':0x1});}}});}}};Dialer[_0xf238('0x1b')][_0xf238('0x3a')]=function(_0x2b7a87){var _0x3c9b3b=this[_0xf238('0x28')][_0x2b7a87[_0xf238('0xdc')]];var _0xf3971c=this;var _0x1e8da3;if(_0x3c9b3b&&_0x3c9b3b[_0xf238('0x53')]==='ivr'){delete this[_0xf238('0x28')][_0x2b7a87[_0xf238('0xdc')]];this[_0xf238('0xb6')](this[_0xf238('0x21')][_0x3c9b3b['queue']]);this[_0xf238('0x21')][_0x3c9b3b['queue']]['ivrAnswerCallsDay']+=0x1;_0x1e8da3=new Hangup(_0x3c9b3b,_0x2b7a87);this[_0xf238('0xcd')](_0x1e8da3)[_0xf238('0xb4')](loggerCatch(_0xf238('0x104')));this[_0xf238('0xcb')](_0x1e8da3)[_0xf238('0xb4')](loggerCatch('[syncHangupIvr]'));}if(_0x3c9b3b&&_0x3c9b3b[_0xf238('0x53')]!==_0xf238('0x7e')&&isNotNull(this[_0xf238('0x20')][_0x3c9b3b[_0xf238('0xb7')]][_0xf238('0x105')])){delete this[_0xf238('0x28')][_0x2b7a87[_0xf238('0xdc')]];this[_0xf238('0xb6')](this[_0xf238('0x20')][_0x3c9b3b['queue']]);this[_0xf238('0x20')][_0x3c9b3b['queue']][_0xf238('0x5f')]+=0x1;this[_0xf238('0x20')][_0x3c9b3b[_0xf238('0xb7')]][_0xf238('0xfb')]+=0x1;_0x1e8da3=new Hangup(_0x3c9b3b,_0x2b7a87);_0x1e8da3['state']=0x10;_0x1e8da3[_0xf238('0xe8')]=_0xf238('0x106');_0x1e8da3[_0xf238('0xea')]=_0xf238('0x107');this[_0xf238('0xcd')](_0x1e8da3)['catch'](loggerCatch(_0xf238('0x104')));this['moveContactManagedDialer'](_0x1e8da3)[_0xf238('0xb4')](loggerCatch(_0xf238('0x108')));}if(_0x3c9b3b&&_0x3c9b3b[_0xf238('0x53')]!=='ivr'&&!isNotNull(this[_0xf238('0x20')][_0x3c9b3b[_0xf238('0xb7')]]['dialQueueProject'])){delete this[_0xf238('0x28')][_0x2b7a87['uniqueid']];this['updateOriginated'](this[_0xf238('0x20')][_0x3c9b3b[_0xf238('0xb7')]]);this[_0xf238('0x20')][_0x3c9b3b[_0xf238('0xb7')]][_0xf238('0x6a')]+=0x1;_0x1e8da3=new Hangup(_0x3c9b3b,_0x2b7a87);_0x1e8da3[_0xf238('0xaa')]=0xc;_0x1e8da3[_0xf238('0xe8')]=_0x2b7a87[_0xf238('0x109')];_0x1e8da3['membername']=_0xf238('0x10a');this[_0xf238('0xcd')](_0x1e8da3)[_0xf238('0xb4')](loggerCatch(_0xf238('0x104')));this[_0xf238('0xcb')](_0x1e8da3)[_0xf238('0xb4')](loggerCatch(_0xf238('0x108')));}};Dialer[_0xf238('0x1b')]['syncAgentComplete']=function(_0x1f1b35){var _0xe4fd46=this[_0xf238('0x28')][_0x1f1b35[_0xf238('0xdc')]];var _0x8a0e30=this;if(this['voiceQueues'][_0x1f1b35[_0xf238('0xb7')]]){if(_0xe4fd46&&_0xe4fd46[_0xf238('0x53')]!==_0xf238('0x7e')){delete this[_0xf238('0x28')][_0x1f1b35['uniqueid']];this[_0xf238('0x20')][_0x1f1b35[_0xf238('0xb7')]]['outboundAnswerCallsDay']+=0x1;var _0x4e2ded=new AgentComplete(_0xe4fd46,_0x1f1b35);if(_0x1f1b35['reason']===_0xf238('0x10b')){_0x4e2ded[_0xf238('0x10c')]=this[_0xf238('0x20')][_0x1f1b35[_0xf238('0xb7')]][_0xf238('0x10d')]&&this[_0xf238('0x20')][_0x1f1b35[_0xf238('0xb7')]][_0xf238('0x10e')]?moment()[_0xf238('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this['createHistory'](_0x4e2ded)[_0xf238('0xb4')](loggerCatch(_0xf238('0x10f')));this['moveContactManagedDialer'](_0x4e2ded)[_0xf238('0xb4')](loggerCatch(_0xf238('0x110')));}}};Dialer[_0xf238('0x1b')][_0xf238('0x30')]=function(_0x243698){if(this[_0xf238('0x20')][_0x243698[_0xf238('0xb7')]]){if(this[_0xf238('0x28')][_0x243698[_0xf238('0xdc')]]&&this[_0xf238('0x28')][_0x243698[_0xf238('0xdc')]][_0xf238('0x53')]!=='ivr'){this[_0xf238('0xb6')](this[_0xf238('0x20')][_0x243698[_0xf238('0xb7')]]);this['uniqueId'][_0x243698['uniqueid']]['answertime']=moment()[_0xf238('0x7b')](_0xf238('0xf4'));}}};Dialer['prototype'][_0xf238('0x111')]=function(_0x545029){this['createHistory'](_0x545029)[_0xf238('0xb4')](loggerCatch(_0xf238('0x10f')));this[_0xf238('0xcb')](_0x545029)['catch'](loggerCatch(_0xf238('0x112')));};Dialer[_0xf238('0x1b')][_0xf238('0x33')]=function(_0x5df31d){var _0xbb90eb=this[_0xf238('0x28')][_0x5df31d['uniqueid']];var _0x450e05=this;if(this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]]){if(_0xbb90eb&&_0xbb90eb[_0xf238('0x53')]!==_0xf238('0x7e')){delete this[_0xf238('0x28')][_0x5df31d[_0xf238('0xdc')]];this[_0xf238('0xb6')](this[_0xf238('0x20')][_0x5df31d['queue']]);_0xbb90eb[_0xf238('0x113')]=moment()[_0xf238('0x7b')](_0xf238('0xf4'));var _0x7da6b0=new QueueCallerAbandon(_0xbb90eb,_0x5df31d);if(getSeconds(_0xbb90eb['droptime'],_0xbb90eb[_0xf238('0x114')])>=_0xbb90eb[_0xf238('0x115')]){this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]][_0xf238('0x6f')]+=0x1;this['voiceQueues'][_0x5df31d[_0xf238('0xb7')]]['outboundDropCallsDayTimeout']+=0x1;this['voiceQueues'][_0x5df31d[_0xf238('0xb7')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x7da6b0[_0xf238('0xaa')]=0xa;_0x7da6b0[_0xf238('0xe8')]=_0xf238('0x116');_0x7da6b0['dropreason']='TIMEOUT';_0x7da6b0[_0xf238('0x10c')]=this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]][_0xf238('0x10d')]?moment()[_0xf238('0x7b')](_0xf238('0xf4')):undefined;_0x7da6b0[_0xf238('0xff')]+=0x1;_0x7da6b0[_0xf238('0xec')]+=0x1;if(_0x7da6b0['countdropretry']>=this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]][_0xf238('0x117')]){this[_0xf238('0x111')](_0x7da6b0);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x7da6b0[_0xf238('0xff')],'scheduledat':moment()['add'](this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]]['dialDropRetryFrequency'],_0xf238('0x103'))['format'](_0xf238('0xf4')),'ContactId':_0xbb90eb[_0xf238('0xf5')],'ListId':_0xbb90eb[_0xf238('0x118')],'VoiceQueueId':_0xbb90eb[_0xf238('0xd4')]||undefined,'CampaignId':_0xbb90eb[_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch('[rescheduleContact][Drop]'));var _0x429275=new History(_0x7da6b0);_0x429275[_0xf238('0xaa')]=0xa;_0x429275[_0xf238('0xe8')]=_0xf238('0x116');_0x429275['starttime']=moment()[_0xf238('0x7b')](_0xf238('0xf4'));_0x429275[_0xf238('0x119')]=_0x429275[_0xf238('0xab')];_0x429275[_0xf238('0x11a')]=_0x7da6b0[_0xf238('0x11a')];_0x429275[_0xf238('0x11b')]=_0x7da6b0['calleridnum'];this['createHistory'](_0x429275)['catch'](loggerCatch(_0xf238('0x11c')));}}else{this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]][_0xf238('0x6e')]+=0x1;this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]][_0xf238('0x63')]+=0x1;_0x7da6b0[_0xf238('0xaa')]=0xb;_0x7da6b0[_0xf238('0xe8')]=_0xf238('0x11d');_0x7da6b0[_0xf238('0x11e')]=_0xf238('0x11f');_0x7da6b0[_0xf238('0xee')]+=0x1;_0x7da6b0[_0xf238('0xec')]+=0x1;if(_0x7da6b0[_0xf238('0xee')]>=this[_0xf238('0x20')][_0x5df31d['queue']][_0xf238('0x120')]){this['queueCallerAbandonCreateState'](_0x7da6b0);}else{this[_0xf238('0xc1')]({'active':![],'countabandonedretry':_0x7da6b0['countabandonedretry'],'scheduledat':moment()['add'](this[_0xf238('0x20')][_0x5df31d[_0xf238('0xb7')]][_0xf238('0x121')],_0xf238('0x103'))[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0xbb90eb[_0xf238('0xf5')],'ListId':_0xbb90eb[_0xf238('0x118')],'VoiceQueueId':_0xbb90eb[_0xf238('0xd4')]||undefined,'CampaignId':_0xbb90eb['CampaignId']||undefined})[_0xf238('0xb4')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x429275=new History(_0x7da6b0);_0x429275[_0xf238('0xaa')]=0xb;_0x429275[_0xf238('0xe8')]='Abandoned';_0x429275[_0xf238('0xab')]=moment()[_0xf238('0x7b')](_0xf238('0xf4'));_0x429275[_0xf238('0x119')]=_0x429275['starttime'];_0x429275['calleridname']=_0x7da6b0[_0xf238('0x11a')];_0x429275[_0xf238('0x11b')]=_0x7da6b0[_0xf238('0x11b')];this[_0xf238('0xcd')](_0x429275)[_0xf238('0xb4')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0xf238('0x1b')][_0xf238('0x3b')]=function(_0x4c8859){if(this[_0xf238('0x26')][_0x4c8859[_0xf238('0xdc')]]){this[_0xf238('0x26')][_0x4c8859['uniqueid']][_0xf238('0xb3')]=_0x4c8859[_0xf238('0xb3')];}if(this['uniqueId'][_0x4c8859[_0xf238('0xdc')]]){this[_0xf238('0x28')][_0x4c8859[_0xf238('0xdc')]][_0xf238('0xb3')]=_0x4c8859[_0xf238('0xb3')];}};Dialer[_0xf238('0x1b')][_0xf238('0x3f')]=function(_0x42bc1a){if(strategy[this[_0xf238('0x20')][this['actions'][_0x42bc1a[_0xf238('0x122')]][_0xf238('0xb7')]]['strategy']]===_0xf238('0x1a')){if(this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]]&&_[_0xf238('0xb0')](this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]][_0xf238('0x123')])&&_0x42bc1a[_0xf238('0xb2')]==='1'&&_0x42bc1a['paused']==='0'){if(this['agents'][_0x42bc1a[_0xf238('0x124')]]){if(!this['agents'][_0x42bc1a[_0xf238('0x124')]][_0xf238('0x123')]){this[_0xf238('0x22')][_0x42bc1a[_0xf238('0x124')]][_0xf238('0x123')]=!![];this[_0xf238('0x26')][_0x42bc1a['actionid']][_0xf238('0x123')]=!![];this[_0xf238('0x26')][_0x42bc1a['actionid']][_0xf238('0x124')]=_0x42bc1a[_0xf238('0x124')];}}}}else if((strategy[this[_0xf238('0x20')][this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]][_0xf238('0xb7')]][_0xf238('0x125')]]||_0xf238('0x19'))===_0xf238('0x19')){if(this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]]){if(this[_0xf238('0x22')][_0x42bc1a[_0xf238('0x124')]]){this[_0xf238('0x26')][_0x42bc1a['actionid']][_0xf238('0x124')]=_0x42bc1a[_0xf238('0x124')];if(_['isNil'](this['queueBooked'][this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]]['queue']])){this['queueBooked'][this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]][_0xf238('0xb7')]]=[];}this[_0xf238('0x2d')][this['actions'][_0x42bc1a[_0xf238('0x122')]]['queue']]['push'](_['merge'](_[_0xf238('0xd2')](this[_0xf238('0x26')][_0x42bc1a[_0xf238('0x122')]],[_0xf238('0x126'),_0xf238('0x124')]),{'status':_0x42bc1a['status'],'paused':_0x42bc1a[_0xf238('0x127')]}));}}}};function unlockQueueStatus(_0x29d78f,_0x1d3716){setTimeout(function(){if(_[_0xf238('0x42')](_0x29d78f[_0xf238('0x128')])){loggerBooked['error'](_0xf238('0x129'),_0x1d3716);}_0x29d78f[_0xf238('0x128')]=!![];loggerBooked['info'](_0xf238('0x12a'),_0x1d3716,JSON[_0xf238('0x4f')](_[_0xf238('0xd2')](_0x29d78f,[_0xf238('0x43'),_0xf238('0x128')])));},0x1f3);}Dialer['prototype']['syncQueueStatusComplete']=function(_0x158c07){var _0x151d86=this;var _0xb83ad=_0x151d86[_0xf238('0x20')][_0x151d86[_0xf238('0x26')][_0x158c07['actionid']][_0xf238('0xb7')]];if(strategy[this['voiceQueues'][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]['queue']][_0xf238('0x125')]]===_0xf238('0x1a')){if(this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]&&this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]['stateinterface']){this[_0xf238('0x1f')]['run'](this[_0xf238('0x26')][_0x158c07['actionid']][_0xf238('0x126')],this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]['stateinterface'])[_0xf238('0xb4')](function(_0x2d11ad){logger[_0xf238('0x98')](_0xf238('0x12b'),util[_0xf238('0x9a')](_0x2d11ad,{'showHidden':![],'depth':null}));})[_0xf238('0x1d')](function(){_0x151d86['updateOriginated'](_0x151d86[_0xf238('0x20')][_0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]);_0x151d86[_0xf238('0x22')][_0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0x124')]][_0xf238('0x123')]=![];delete _0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]];unlockQueueStatus(_0xb83ad);});}else{this[_0xf238('0xb6')](this['voiceQueues'][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]);this[_0xf238('0xc1')]({'active':![],'ContactId':this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0xf5')],'ListId':this['actions'][_0x158c07[_0xf238('0x122')]]['ListId'],'VoiceQueueId':this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xd4')]||undefined,'CampaignId':this[_0xf238('0x26')][_0x158c07['actionid']][_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x12c')));delete this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]];unlockQueueStatus(_0xb83ad);}}else if((strategy[this[_0xf238('0x20')][this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]][_0xf238('0x125')]]||'rrmemory')===_0xf238('0x19')){var _0x37142b;if(this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]&&!_['isEmpty'](this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]])){if(this['queueBookedRR'][_0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]){this['queueBookedRR'][_0x151d86['actions'][_0x158c07['actionid']][_0xf238('0xb7')]]=this[_0xf238('0x2e')][this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]?this['queueBookedRR'][this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]:this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07['actionid']][_0xf238('0xb7')]]?this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]][_0xf238('0x12d')]||0x0:0x0;}this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]['_rr']=this[_0xf238('0x2e')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]];for(var _0x3cbc1e=0x0;_0x3cbc1e<this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]['queue']]['length'];_0x3cbc1e+=0x1){_0x37142b=rr(this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]);this[_0xf238('0x2e')][_0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]['queue']]=this[_0xf238('0x2d')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]]['queue']][_0xf238('0x12d')];if(_0x37142b['status']==='1'&&_0x37142b['paused']==='0'){break;}}if(!_['isNil'](_0x37142b)){this['agents'][_0x37142b[_0xf238('0x124')]][_0xf238('0x12e')]=_[_0xf238('0x42')](this['agents'][_0x37142b[_0xf238('0x124')]][_0xf238('0x12e')])?!![]:this['agents'][_0x37142b[_0xf238('0x124')]][_0xf238('0x12e')];}loggerBooked['info'](_0xf238('0x12f'),_0x158c07[_0xf238('0x122')],'Agent:\x20',JSON['stringify'](_['pick'](this[_0xf238('0x22')][_0x37142b['stateinterface']],['name','unlockRR'])),_0xf238('0x130'),JSON['stringify'](_0x37142b[_0xf238('0x126')]));if(!_['isNil'](_0x37142b)&&_0x37142b[_0xf238('0xb2')]==='1'&&_0x37142b[_0xf238('0x127')]==='0'&&this[_0xf238('0x22')][_0x37142b[_0xf238('0x124')]][_0xf238('0x12e')]){this[_0xf238('0x22')][_0x37142b[_0xf238('0x124')]]['unlockRR']=![];this[_0xf238('0x2d')][_0x151d86['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]=[];this[_0xf238('0x1f')][_0xf238('0x131')](_0x37142b[_0xf238('0x126')],_0x37142b[_0xf238('0x124')])[_0xf238('0xb4')](function(_0x311ebb){logger[_0xf238('0x98')](_0xf238('0x12b'),util['inspect'](_0x311ebb,{'showHidden':![],'depth':null}));})[_0xf238('0x1d')](function(){_0x151d86[_0xf238('0xb6')](_0x151d86[_0xf238('0x20')][_0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]);setTimeout(function(){_0x151d86[_0xf238('0x22')][_0x37142b['stateinterface']][_0xf238('0x12e')]=!![];loggerBooked[_0xf238('0x80')]('[booked][RR][finaly]',_0x158c07['actionid'],_0xf238('0x132'),JSON['stringify'](_[_0xf238('0xd2')](_0x151d86['agents'][_0x37142b['stateinterface']],[_0xf238('0x43'),_0xf238('0x12e')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x37142b[_0xf238('0x126')]));},0xc7);delete _0x151d86[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]];unlockQueueStatus(_0xb83ad,_0x158c07[_0xf238('0x122')]);});}else{loggerBooked['info'](_0xf238('0x133'));this[_0xf238('0xb6')](this[_0xf238('0x20')][this[_0xf238('0x26')][_0x158c07['actionid']]['queue']]);this[_0xf238('0xc1')]({'active':![],'ContactId':this['actions'][_0x158c07[_0xf238('0x122')]]['ContactId'],'ListId':this['actions'][_0x158c07['actionid']][_0xf238('0x118')],'VoiceQueueId':this['actions'][_0x158c07[_0xf238('0x122')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x158c07['actionid']][_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x12c')));delete this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]];unlockQueueStatus(_0xb83ad);}}else{loggerBooked['info']('[booked][unlock2]');this[_0xf238('0xb6')](this[_0xf238('0x20')][this[_0xf238('0x26')][_0x158c07['actionid']]['queue']]);this[_0xf238('0xc1')]({'active':![],'ContactId':this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0xf5')],'ListId':this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0x118')],'VoiceQueueId':this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xd4')]||undefined,'CampaignId':this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xf6')]||undefined})['catch'](loggerCatch(_0xf238('0x134')));delete this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]];unlockQueueStatus(_0xb83ad);}}else{loggerBooked['info'](_0xf238('0x135'));this['updateOriginated'](this[_0xf238('0x20')][this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xb7')]]);this[_0xf238('0xc1')]({'active':![],'ContactId':this[_0xf238('0x26')][_0x158c07['actionid']][_0xf238('0xf5')],'ListId':this['actions'][_0x158c07[_0xf238('0x122')]][_0xf238('0x118')],'VoiceQueueId':this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xd4')]||undefined,'CampaignId':this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]][_0xf238('0xf6')]||undefined})['catch'](loggerCatch(_0xf238('0x136')));delete this[_0xf238('0x26')][_0x158c07[_0xf238('0x122')]];unlockQueueStatus(_0xb83ad);}};Dialer['prototype'][_0xf238('0x137')]=function(){var _0x3c1591=this;setInterval(function(){_0x3c1591[_0xf238('0x138')]();},0x3e8);};Dialer[_0xf238('0x1b')]['checkIsTrunkReachable']=function(_0x469e34){var _0x24fd46=this;return function(){if(!_0x24fd46[_0xf238('0xd9')](_0x469e34['Trunk'])){if(!_0x24fd46[_0xf238('0xd9')](_0x469e34[_0xf238('0x139')])){_0x469e34[_0xf238('0x45')]=_0xf238('0x13a');throw _0x469e34[_0xf238('0x43')]+_0xf238('0x13b');}}};};Dialer[_0xf238('0x1b')][_0xf238('0x13c')]=function(_0x276f1c,_0x56522c,_0x38fe62,_0x4da3f8){var _0x9c2a27=this;return function(){var _0x4819c7=!![];return _0x9c2a27[_0xf238('0x13d')](_0x276f1c,_0x56522c,_0x38fe62,_0x4da3f8,_0x4819c7);};};Dialer['prototype'][_0xf238('0x13e')]=function(_0x47c72a,_0x216e05,_0x541a14,_0x42a7ae){var _0x40aef2=this;return function(){var _0x718a59=![];return _0x40aef2[_0xf238('0x13d')](_0x47c72a[_0xf238('0x4a')],_0x216e05,_0x541a14,_0x42a7ae,_0x718a59);};};Dialer[_0xf238('0x1b')][_0xf238('0x13d')]=function(_0x480164,_0x44e025,_0x279708,_0xf0e863,_0x43c2a8){var _0x16c432=[];return new BPromise(function(_0x527b69,_0x1cf1d4){if(!isNotNull(_0x480164)){_0xf0e863['message']=_0xf238('0x4b');return _0x1cf1d4(msgResponse('ifTime',_0xf238('0x13f'),_0x279708+_0xf238('0x140')));}if(_[_0xf238('0x4c')](_0x480164)){_0xf0e863[_0xf238('0x45')]='INTERVAL_IS_EMPTY';return _0x1cf1d4(msgResponse(_0xf238('0x13d'),_0xf238('0x13f'),_0x279708+'\x20Intervals\x20is\x20empty\x20'));}if(_0x44e025&&_[_0xf238('0x42')](config[_0xf238('0x141')][_0x44e025])){_0xf0e863[_0xf238('0x45')]=_0xf238('0x142');return _0x1cf1d4(msgResponse('ifTime',_0xf238('0x13f'),_0x279708+_0xf238('0x143')+_0x44e025));}if(_[_0xf238('0x144')](_0x480164)){for(var _0x14f3dd=0x0;_0x14f3dd<_0x480164['length'];_0x14f3dd+=0x1){_0x16c432[_0xf238('0x145')](ami[_0xf238('0xb1')]({'action':_0xf238('0x146'),'command':util['format'](_0xf238('0x147'),_0x480164[_0x14f3dd][_0xf238('0x148')],!_[_0xf238('0x42')](config[_0xf238('0x141')][_0x44e025])?_0x44e025:'')})[_0xf238('0xbb')](function(_0x3eec32){return _0x3eec32[_0xf238('0x149')][_0xf238('0x14a')](_0xf238('0x14b'))>=0x0;})[_0xf238('0xb4')](myreject(_0x1cf1d4)));}}else{_0x16c432[_0xf238('0x145')](ami[_0xf238('0xb1')]({'action':'command','command':util[_0xf238('0x7b')]('iftime\x20%s,%s',_0x480164,!_['isUndefined'](config[_0xf238('0x141')][_0x44e025])?_0x44e025:'')})[_0xf238('0xbb')](function(_0x2dc56c){return _0x2dc56c['content'][_0xf238('0x14a')](_0xf238('0x14b'))>=0x0;})[_0xf238('0xb4')](myreject(_0x1cf1d4)));}BPromise[_0xf238('0x14c')](_0x16c432)[_0xf238('0xbb')](function(_0x2b39cd){var _0x1519a6=_['some'](_0x2b39cd);if(_0x1519a6){return _0x527b69(_0x1519a6);}else{_0xf0e863[_0xf238('0x45')]=_0x43c2a8?'GLOBAL_INTERVAL_IS_OVERTIME':_0xf238('0x14d');return _0x1cf1d4(msgResponse(_0xf238('0x14e'),_0xf238('0x13f'),_0xf238('0x14f')+_0x43c2a8+'\x20'+_0x279708+_0xf238('0x150')+util[_0xf238('0x9a')](_0x480164,{'showHidden':![],'depth':null})+_0xf238('0x151')+_0x44e025));}})['catch'](function(_0x395d1d){return _0x1cf1d4(msgResponse(_0xf238('0x13d'),_0xf238('0x13f'),JSON['stringify'](_0x395d1d)));});});};Dialer['prototype']['checkDialMethod']=function(_0x3075a7){var _0x394596=this;return function(){switch(_0x3075a7['dialMethod']){case _0xf238('0x152'):freeVariablesPredictive(_0x3075a7);_0x394596[_0xf238('0x153')](_0x3075a7,0x1);break;case _0xf238('0x154'):freeVariablesPredictive(_0x3075a7);_0x394596[_0xf238('0x153')](_0x3075a7,_0x3075a7[_0xf238('0x155')]);break;case _0xf238('0x156'):_0x394596[_0xf238('0x156')](_0x3075a7);break;case _0xf238('0x9'):freeVariablesPredictive(_0x3075a7);_0x394596['handlePower'](_0x3075a7,0x1);break;default:freeVariablesPredictive(_0x3075a7);logger[_0xf238('0x98')](_0xf238('0x157'),_0x3075a7['name'],_0xf238('0x158'));}};};Dialer['prototype'][_0xf238('0x159')]=function(_0x5688c6){var _0x20f732=this;return function(){_0x20f732[_0xf238('0x15a')](_0x5688c6);};};Dialer[_0xf238('0x1b')][_0xf238('0xa')]=function(_0x82e78d){var _0x33a817=this;if(isNotPreview(_0x82e78d[_0xf238('0x15b')])){if(isVoiceQueueOutbound(_0x82e78d['type'])&&isActive(_0x82e78d[_0xf238('0x15c')])){_0x82e78d['sendMessageOneNotActive']=!![];BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](checkIsLoggedIn(_0x82e78d,_0x82e78d['loggedIn']))['then'](checkIsActive(_0x82e78d,_0x82e78d[_0xf238('0x15c')]))[_0xf238('0xbb')](checkInterval(_0x82e78d))[_0xf238('0xbb')](_0x33a817[_0xf238('0x15d')](_0x82e78d))[_0xf238('0xbb')](_0x33a817[_0xf238('0x13c')](_0x82e78d[_0xf238('0x15e')],_0x82e78d[_0xf238('0x15f')],_0x82e78d['name'],_0x82e78d))[_0xf238('0xbb')](_0x33a817[_0xf238('0x13e')](_0x82e78d[_0xf238('0x48')],_0x82e78d['dialTimezone'],_0x82e78d[_0xf238('0x43')],_0x82e78d))[_0xf238('0xbb')](_0x33a817[_0xf238('0x160')](_0x82e78d))[_0xf238('0xb4')](loggerCatchQueueSummary(_0xf238('0x161'),_0x82e78d));}else{notSendMessagesQueue(_0x82e78d);}}else{freeVariablesPredictive(_0x82e78d);}};Dialer['prototype'][_0xf238('0x138')]=function(){var _0x573c26=this;var _0x4d3d09;for(var _0x3f4231 in this[_0xf238('0x21')]){if(typeof this['campaigns'][_0x3f4231]!==_0xf238('0x9c')){_0x4d3d09=this[_0xf238('0x21')][_0x3f4231];if(isCampaignIvr(_0x4d3d09[_0xf238('0x53')])&&isActive(_0x4d3d09[_0xf238('0xda')])){_0x4d3d09['sendMessageOneNotActive']=!![];BPromise[_0xf238('0xba')]()[_0xf238('0xbb')](checkIsActive(_0x4d3d09,_0x4d3d09[_0xf238('0xda')]))[_0xf238('0xbb')](checkInterval(_0x4d3d09))[_0xf238('0xbb')](_0x573c26[_0xf238('0x15d')](_0x4d3d09))['then'](_0x573c26['checkIfTime'](_0x4d3d09[_0xf238('0x15e')],_0x4d3d09[_0xf238('0x15f')],_0x4d3d09[_0xf238('0x43')],_0x4d3d09))[_0xf238('0xbb')](_0x573c26['checkIfTimeIntervals'](_0x4d3d09[_0xf238('0x48')],_0x4d3d09['dialTimezone'],_0x4d3d09[_0xf238('0x43')],_0x4d3d09))['then'](_0x573c26[_0xf238('0x159')](_0x4d3d09))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0x4d3d09));}else{notSendMessagesCampaign(_0x4d3d09);}}}};function getCallerIdRandom(_0x44d98e,_0x468799){var _0xa923b0;var _0x6d5c2e;var _0x34b4d7;if(_0x468799<=0x0){_0x468799=0x1;}_0xa923b0=new RegExp('\x5cw{0,'+_0x468799+'}$');_0x6d5c2e=Math[_0xf238('0x162')](0xa,_0x468799-0x1);_0x34b4d7=Math['pow'](0xa,_0x468799)-0x1;return util['format']('%s',_['replace'](_0x44d98e,_0xa923b0,_[_0xf238('0x163')](_0x6d5c2e,_0x34b4d7)));}function extractCalleridName(_0x5d5126){var _0x1662f2=_0x5d5126[_0xf238('0x164')](/"(.*?)"/);return _0x1662f2?_0x1662f2[0x1]:_0x5d5126;}function extractCalleridNumber(_0xaea533){var _0x2b8280=_0xaea533[_0xf238('0x164')](/<(.*?)>/);return _0x2b8280?_0x2b8280[0x1]:_0xaea533;}Dialer[_0xf238('0x1b')][_0xf238('0x165')]=function(_0x2055bf,_0x5c4460){var _0x5e15e0=this;var _0x5961d7=uuid['v4']();this[_0xf238('0x26')][_0x5961d7]=new Action(_0x2055bf,_0x5c4460,_0x5961d7);return new BPromise(function(_0x14dd8b,_0x2cc221){if(_[_0xf238('0x42')](_0x2055bf)&&typeof _0x2055bf!==_0xf238('0x166')){return _0x2cc221(msgResponse(_0xf238('0x167'),_0xf238('0x13f'),_0xf238('0x168')));}if(_['isUndefined'](_0x5c4460[_0xf238('0x169')][_0xf238('0x16a')])||_0x5c4460[_0xf238('0x169')][_0xf238('0x16a')]===null){return _0x2cc221(msgResponse('originate','Failure',_0xf238('0x16b')));}var _0x11f028={'XMD-CALLERID':_0x5e15e0[_0xf238('0x26')][_0x5961d7]['getCaller'](),'XMD-AGI':_0x2055bf[_0xf238('0x105')]?util[_0xf238('0x7b')](_0xf238('0x16c'),ipAgi,_0x2055bf['dialQueueProject']):_0xf238('0x16d'),'XMD-AGIAFTER':_0x2055bf[_0xf238('0x10d')]?util[_0xf238('0x7b')](_0xf238('0x16c'),ipAgi,_0x2055bf[_0xf238('0x10d')]):_0xf238('0x16d'),'XMD-QUEUE':_0x2055bf[_0xf238('0x53')]===_0xf238('0x54')?util[_0xf238('0x7b')](_0xf238('0x16e'),_0x2055bf[_0xf238('0x43')],_0x2055bf[_0xf238('0x16f')]||'',_0x2055bf['dialAgiAfterHangupAgent']?'c':'',_0x2055bf[_0xf238('0x115')]||0x3):_0xf238('0x16d'),'XMD-CONTACTID':_0x5c4460[_0xf238('0xf5')],'XMD-CDRTYPE':_0xf238('0x170'),'CALLERID(all)':_0x5e15e0[_0xf238('0x26')][_0x5961d7][_0xf238('0x171')](),'XMD-AMD':_0x2055bf[_0xf238('0xdf')]?_0xf238('0x172'):_0xf238('0x16d'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x2055bf[_0xf238('0xdf')]){_0x11f028[_0xf238('0x173')]=_0x2055bf[_0xf238('0x174')]||0x9c4;_0x11f028[_0xf238('0x175')]=_0x2055bf[_0xf238('0x176')]||0x5dc;_0x11f028[_0xf238('0x177')]=_0x2055bf[_0xf238('0x178')]||0x320;_0x11f028[_0xf238('0x179')]=_0x2055bf[_0xf238('0x17a')]||0x1388;_0x11f028[_0xf238('0x17b')]=_0x2055bf[_0xf238('0x17c')]||0x64;_0x11f028[_0xf238('0x17d')]=_0x2055bf['dialAMDBetweenWordsSilence']||0x32;_0x11f028['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x2055bf[_0xf238('0x17e')]||0x3;_0x11f028['XMD-AMDSILENCETHRESHOLD']=_0x2055bf[_0xf238('0x17f')]||0x100;_0x11f028[_0xf238('0x180')]=_0x2055bf['dialAMDMaximumWordLength']||0x1388;}if(_0x2055bf['type']===_0xf238('0x54')){_0x11f028[_0xf238('0x181')]=_0x5c4460[_0xf238('0xd4')];}else{_0x11f028[_0xf238('0x182')]=_0x5c4460[_0xf238('0xf6')];}for(var _0x2755d0 in _0x5c4460[_0xf238('0x169')]){if(typeof _0x5c4460[_0xf238('0x169')][_0x2755d0]!==_0xf238('0x9c')){if(isNotNull(_0x5c4460[_0xf238('0x169')][_0x2755d0])&&_0x2755d0!=='id'&&_0x2755d0!=='tags'&&_0x2755d0!=='createdAt'&&_0x2755d0!==_0xf238('0x183')){_0x11f028[util[_0xf238('0x7b')]('%s%s','XMD-',_[_0xf238('0x184')](_0x2755d0))]=_0x5c4460['Contact'][_0x2755d0];}}}var _0x344eeb=_0x5e15e0['isTrunkReachable'](_0x2055bf[_0xf238('0x79')])?getCallerId(_0x2055bf[_0xf238('0x79')][_0xf238('0x7a')],_0x2055bf[_0xf238('0x5c')],_0x2055bf['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x2055bf['dialOriginateCallerIdNumber'],_0x2055bf['dialRandomLastDigitCallerIdNumber']):_0x2055bf[_0xf238('0x5d')]):getCallerId(_[_0xf238('0xb0')](_0x2055bf['TrunkBackup'])?_0x2055bf[_0xf238('0x79')][_0xf238('0x7a')]:_0x2055bf[_0xf238('0x139')][_0xf238('0x7a')],_0x2055bf[_0xf238('0x5c')],_0x2055bf[_0xf238('0x185')]>0x0?getCallerIdRandom(_0x2055bf[_0xf238('0x5d')],_0x2055bf[_0xf238('0x185')]):_0x2055bf[_0xf238('0x5d')]);if(_0x344eeb){_0x11f028[_0xf238('0x186')]=_0x5e15e0[_0xf238('0x26')][_0x5961d7][_0xf238('0x187')]=extractCalleridName(_0x344eeb);_0x11f028[_0xf238('0x188')]=_0x5e15e0[_0xf238('0x26')][_0x5961d7][_0xf238('0x189')]=extractCalleridNumber(_0x344eeb);}return ami[_0xf238('0xb1')]({'actionid':_0x5961d7,'action':_0xf238('0x167'),'channel':_0x5e15e0[_0xf238('0xd9')](_0x2055bf[_0xf238('0x79')])?util['format'](_0xf238('0x18a'),_0x2055bf[_0xf238('0x79')][_0xf238('0x43')],isNotNull(_0x2055bf['dialPrefix'])?_0x2055bf[_0xf238('0x5e')][_0xf238('0x18b')]()||'':'',_0x2055bf[_0xf238('0x18c')]>0x0?_0x5c4460[_0xf238('0x169')]['phone'][_0xf238('0x18d')](_0x2055bf['dialCutDigit']):_0x5c4460[_0xf238('0x169')][_0xf238('0x16a')]):util[_0xf238('0x7b')](_0xf238('0x18a'),_[_0xf238('0xb0')](_0x2055bf['TrunkBackup'])?_0x2055bf['Trunk']['name']:_0x2055bf['TrunkBackup'][_0xf238('0x43')],isNotNull(_0x2055bf[_0xf238('0x5e')])?_0x2055bf[_0xf238('0x5e')][_0xf238('0x18b')]()||'':'',_0x2055bf[_0xf238('0x18c')]>0x0?_0x5c4460[_0xf238('0x169')][_0xf238('0x16a')][_0xf238('0x18d')](_0x2055bf[_0xf238('0x18c')]):_0x5c4460[_0xf238('0x169')][_0xf238('0x16a')]),'callerid':_0x344eeb,'Exten':'xcally-motion-dialer','Context':'from-sip','Priority':'1','variable':_0x11f028,'timeout':(_0x2055bf['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x5961d7})[_0xf238('0xbb')](function(_0x4a1df6){return _0x14dd8b(_0x4a1df6);})[_0xf238('0xb4')](function(_0x2543c4){_0x2055bf[_0xf238('0x67')]+=0x1;var _0x561a7e=new History(_0x5e15e0[_0xf238('0x26')][_0x5961d7]);logger['error'](util['format'](_0xf238('0x18e'),JSON['stringify'](_0x2543c4)));_0x561a7e[_0xf238('0xaa')]=0xe;_0x561a7e[_0xf238('0xe8')]=_0xf238('0x18f');_0x561a7e[_0xf238('0xab')]=moment()[_0xf238('0x7b')](_0xf238('0xf4'));_0x561a7e[_0xf238('0x119')]=_0x561a7e[_0xf238('0xab')];_0x5e15e0[_0xf238('0xcd')](_0x561a7e)[_0xf238('0xb4')](loggerCatch('[originate][error]'));_0x5e15e0[_0xf238('0xcb')](_0x561a7e)[_0xf238('0xb4')](loggerCatch(_0xf238('0x190')))[_0xf238('0x1d')](function(){delete _0x5e15e0[_0xf238('0x26')][_0x5961d7];return _0x2cc221(msgResponse(_0xf238('0x167'),_0xf238('0x4e'),_0xf238('0x191')));});});});};Dialer['prototype'][_0xf238('0x35')]=function(_0x3da946){var _0x167f52=this[_0xf238('0x26')][_0x3da946[_0xf238('0x122')]];if(_0x167f52){delete this[_0xf238('0x26')][_0x3da946[_0xf238('0x122')]];_0x167f52[_0xf238('0x114')]=moment()[_0xf238('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5c9482=_0x167f52[_0xf238('0x53')]===_0xf238('0x7e')?this[_0xf238('0x21')][_0x167f52['queue']]:this['voiceQueues'][_0x167f52['getQueue']()];if(!this[_0xf238('0xd7')](_0x3da946[_0xf238('0x192')])){this[_0xf238('0xb6')](_0x5c9482);return this[_0xf238('0x193')](_0x167f52,_0x5c9482,_0x3da946)['catch'](loggerCatch('[callProgressDetecting]\x20'));}this[_0xf238('0x28')][_0x3da946[_0xf238('0xdc')]]=_0x167f52;}};Dialer[_0xf238('0x1b')]['checkRetriveMax']=function(_0x4fcd2d,_0x77bd9d,_0x5c5281){var _0x19344e=new History(_0x77bd9d);if(_0x19344e[_0xf238('0xfc')]+_0x19344e[_0xf238('0xfd')]+_0x19344e['countnoanswerretry']+_0x19344e['countnosuchnumberretry']+_0x19344e[_0xf238('0xff')]+_0x19344e[_0xf238('0xee')]+_0x19344e[_0xf238('0xeb')]+_0x19344e[_0xf238('0x100')]>=_0x5c5281['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x4fcd2d){case 0x3:if(_0x19344e[_0xf238('0xfe')]>=_0x5c5281[_0xf238('0x194')]-0x1){return!![];}this[_0xf238('0xc1')]({'active':![],'countnoanswerretry':_0x19344e[_0xf238('0xfe')]+=0x1,'scheduledat':moment()['add'](_0x5c5281[_0xf238('0x195')],_0xf238('0x103'))[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0x19344e[_0xf238('0xf5')],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e['CampaignId']||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x196')));break;case 0x5:if(_0x19344e[_0xf238('0xfc')]>=_0x5c5281['dialBusyMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x19344e[_0xf238('0xfc')]+=0x1,'scheduledat':moment()[_0xf238('0x102')](_0x5c5281[_0xf238('0x197')],'minutes')[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0x19344e[_0xf238('0xf5')],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e['VoiceQueueId']||undefined,'CampaignId':_0x19344e[_0xf238('0xf6')]||undefined})['catch'](loggerCatch(_0xf238('0x198')));break;case 0x8:if(_0x19344e[_0xf238('0xfd')]>=_0x5c5281[_0xf238('0x199')]-0x1){return!![];}this[_0xf238('0xc1')]({'active':![],'countcongestionretry':_0x19344e[_0xf238('0xfd')]+=0x1,'scheduledat':moment()['add'](_0x5c5281['dialCongestionRetryFrequency'],_0xf238('0x103'))[_0xf238('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x19344e[_0xf238('0xf5')],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e[_0xf238('0xf6')]||undefined})['catch'](loggerCatch(_0xf238('0x19a')));break;case 0x0:if(_0x19344e[_0xf238('0xed')]>=_0x5c5281[_0xf238('0x19b')]-0x1){return!![];}else{this[_0xf238('0xc1')]({'active':![],'countnosuchnumberretry':_0x19344e[_0xf238('0xed')]+=0x1,'scheduledat':moment()['add'](_0x5c5281['dialNoSuchNumberRetryFrequency'],_0xf238('0x103'))[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0x19344e[_0xf238('0xf5')],'ListId':_0x19344e['ListId'],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e[_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x19c')));}break;case 0xa:if(_0x19344e['countdropretry']>=_0x5c5281[_0xf238('0x117')]-0x1){return!![];}this[_0xf238('0xc1')]({'active':![],'countdropretry':_0x19344e['countdropretry']+=0x1,'scheduledat':moment()[_0xf238('0x102')](_0x5c5281[_0xf238('0x19d')],_0xf238('0x103'))['format'](_0xf238('0xf4')),'ContactId':_0x19344e['ContactId'],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e[_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x19e')));break;case 0xb:if(_0x19344e['countabandonedretry']>=_0x5c5281[_0xf238('0x120')]-0x1){return!![];}this[_0xf238('0xc1')]({'active':![],'countabandonedretry':_0x19344e[_0xf238('0xee')]+=0x1,'scheduledat':moment()[_0xf238('0x102')](_0x5c5281['dialAbandonedRetryFrequency'],_0xf238('0x103'))[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0x19344e['ContactId'],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e[_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x19f')));break;case 0x13:if(_0x19344e['countmachineretry']>=_0x5c5281[_0xf238('0xf1')]-0x1){return!![];}this[_0xf238('0xc1')]({'active':![],'countmachineretry':_0x19344e[_0xf238('0xeb')]+=0x1,'scheduledat':moment()[_0xf238('0x102')](_0x5c5281['dialMachineRetryFrequency'],_0xf238('0x103'))[_0xf238('0x7b')](_0xf238('0xf4')),'ContactId':_0x19344e['ContactId'],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e['CampaignId']||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0xf7')));break;case 0x14:if(_0x19344e[_0xf238('0x100')]>=_0x5c5281['dialAgentRejectMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x19344e[_0xf238('0x100')]+=0x1,'scheduledat':moment()[_0xf238('0x102')](_0x5c5281[_0xf238('0x1a0')],_0xf238('0x103'))['format'](_0xf238('0xf4')),'ContactId':_0x19344e['ContactId'],'ListId':_0x19344e[_0xf238('0x118')],'VoiceQueueId':_0x19344e[_0xf238('0xd4')]||undefined,'CampaignId':_0x19344e['CampaignId']||undefined})['catch'](loggerCatch(_0xf238('0x1a1')));break;default:return!![];}};Dialer[_0xf238('0x1b')][_0xf238('0x193')]=function(_0x17f301,_0x399761,_0x45cc1f){var _0x3d26d4=this;var _0x1988a2=new History(_0x17f301);return new BPromise(function(_0x49eed8,_0x327201){if(_[_0xf238('0x42')](_0x399761)&&typeof _0x399761!==_0xf238('0x166')){return _0x327201(msgResponse('[callProgressDetecting]',_0xf238('0x13f'),'entity\x20is\x20undefine'));}if(_[_0xf238('0x42')](_0x45cc1f)&&typeof _0x45cc1f!==_0xf238('0x166')){return _0x327201(msgResponse(_0xf238('0x1a2'),_0xf238('0x13f'),_0xf238('0x1a3')));}switch(_0x45cc1f[_0xf238('0x1a4')]){case'0':_0x399761[_0xf238('0x66')]+=0x1;_0x1988a2[_0xf238('0xaa')]=0x0;_0x1988a2['statedesc']='NoSuchNumber';_0x1988a2[_0xf238('0xed')]+=0x1;_0x1988a2[_0xf238('0xec')]+=0x1;ami[_0xf238('0x52')](_0xf238('0x1a5'),ut[_0xf238('0xe4')](_0x17f301,'nosuchnumber'));_0x3d26d4['createHistory'](_0x1988a2)[_0xf238('0xb4')](loggerCatch(_0xf238('0x1a6')));if(_0x3d26d4['checkRetriveMax'](0x0,_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0xed')]>=_0x399761[_0xf238('0x19b')]){_0x3d26d4[_0xf238('0xf2')](_0x1988a2,_0x49eed8,_0x327201,'reason\x200\x20no\x20such\x20number....');}else{_0x3d26d4[_0xf238('0xf0')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1a7'));}}break;case'3':_0x399761[_0xf238('0x65')]+=0x1;_0x1988a2[_0xf238('0xaa')]=0x3;_0x1988a2[_0xf238('0xe8')]='NoAnswer';_0x1988a2[_0xf238('0xfe')]+=0x1;_0x1988a2['countglobal']+=0x1;ami[_0xf238('0x52')](_0xf238('0x1a8'),ut[_0xf238('0xe4')](_0x17f301,_0xf238('0x1a9')));_0x3d26d4['createHistory'](_0x1988a2)[_0xf238('0xb4')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x3d26d4['checkRetriveMax'](0x3,_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0xfe')]>=_0x399761['dialNoAnswerMaxRetry']){_0x3d26d4['createStateFinal'](_0x1988a2,_0x49eed8,_0x327201,'reason\x203\x20ringing\x20no\x20answer');}else{_0x3d26d4[_0xf238('0xf0')](_0x1988a2,_0x49eed8,_0x327201,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x399761['outboundBusyCallsDay']+=0x1;_0x1988a2[_0xf238('0xaa')]=0x5;_0x1988a2['statedesc']=_0xf238('0x1aa');_0x1988a2['countbusyretry']+=0x1;_0x1988a2[_0xf238('0xec')]+=0x1;ami['emit']('custom:agentbusy',ut[_0xf238('0xe4')](_0x17f301,_0xf238('0x1ab')));_0x3d26d4[_0xf238('0xcd')](_0x1988a2)[_0xf238('0xb4')](loggerCatch(_0xf238('0x1ac')));if(_0x3d26d4[_0xf238('0x1ad')](0x5,_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0xfc')]>=_0x399761[_0xf238('0x1ae')]){_0x3d26d4[_0xf238('0xf2')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1af'));}else{_0x3d26d4[_0xf238('0xf0')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1af'));}}break;case'8':_0x399761[_0xf238('0x61')]+=0x1;_0x1988a2[_0xf238('0xaa')]=0x8;_0x1988a2[_0xf238('0xe8')]=_0xf238('0x1b0');_0x1988a2[_0xf238('0xfd')]+=0x1;_0x1988a2['countglobal']+=0x1;ami[_0xf238('0x52')](_0xf238('0x1b1'),ut['buildObj'](_0x17f301,_0xf238('0x1b2')));_0x3d26d4[_0xf238('0xcd')](_0x1988a2)[_0xf238('0xb4')](loggerCatch(_0xf238('0x1b3')));if(_0x3d26d4['checkRetriveMax'](0x8,_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0xfd')]>=_0x399761[_0xf238('0x199')]){_0x3d26d4['createStateFinal'](_0x1988a2,_0x49eed8,_0x327201,'reason\x208\x20congestion');}else{_0x3d26d4[_0xf238('0xf0')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1b4'));}}break;case'11':_0x399761[_0xf238('0x1b5')]+=0x1;_0x1988a2[_0xf238('0xaa')]=0xb;_0x1988a2['statedesc']='Abandoned';_0x1988a2['countabandonedretry']+=0x1;_0x1988a2[_0xf238('0xec')]+=0x1;_0x3d26d4['createHistory'](_0x1988a2)[_0xf238('0xb4')](loggerCatch(_0xf238('0x1b6')));if(_0x3d26d4[_0xf238('0x1ad')](0xb,_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0xee')]>=_0x399761[_0xf238('0x120')]){_0x3d26d4[_0xf238('0xf2')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1b7'));}else{_0x3d26d4['stateGlobal'](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1b7'));}}break;case'20':_0x399761[_0xf238('0x69')]+=0x1;_0x1988a2['state']=0x14;_0x1988a2[_0xf238('0xe8')]=_0xf238('0x1b8');_0x1988a2[_0xf238('0x100')]+=0x1;_0x1988a2[_0xf238('0xec')]+=0x1;ami[_0xf238('0x52')](_0xf238('0x1b9'),ut[_0xf238('0xe4')](_0x17f301,_0xf238('0x1ba')));_0x3d26d4[_0xf238('0xcd')](_0x1988a2)[_0xf238('0xb4')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x3d26d4['checkRetriveMax'](0x14,_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0x100')]>=_0x399761['dialAgentRejectMaxRetry']){_0x3d26d4[_0xf238('0xf2')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1bb'));}else{_0x3d26d4[_0xf238('0xf0')](_0x1988a2,_0x49eed8,_0x327201,_0xf238('0x1bb'));}}break;default:_0x399761[_0xf238('0x6a')]+=0x1;_0x1988a2[_0xf238('0xaa')]=0xc;_0x1988a2[_0xf238('0xe8')]=_0x45cc1f[_0xf238('0x1a4')];_0x3d26d4['createHistory'](_0x1988a2)['catch'](loggerCatch(_0xf238('0x1bc')));if(_0x3d26d4['checkRetriveMax'](_0x45cc1f[_0xf238('0x1a4')],_0x17f301,_0x399761)){if(_0x1988a2[_0xf238('0xfc')]+_0x1988a2['countcongestionretry']+_0x1988a2[_0xf238('0xfe')]+_0x1988a2[_0xf238('0xed')]+_0x1988a2[_0xf238('0xff')]+_0x1988a2['countabandonedretry']+_0x1988a2[_0xf238('0xeb')]+_0x1988a2[_0xf238('0x100')]>=_0x399761['dialGlobalMaxRetry']){_0x3d26d4[_0xf238('0xf0')](_0x1988a2,_0x49eed8,_0x327201,_0x45cc1f[_0xf238('0x1a4')]);}else{_0x3d26d4[_0xf238('0xf2')](_0x1988a2,_0x49eed8,_0x327201,_0x45cc1f[_0xf238('0x1a4')]);}}}});};Dialer['prototype'][_0xf238('0xf0')]=function(_0x90789d,_0x512384,_0x1c9d18,_0x6f19f4){var _0x511c1c=new Final(_0x90789d);_0x511c1c[_0xf238('0xaa')]=0xf;_0x511c1c[_0xf238('0xe8')]='Global';this['createStateFinal'](_0x511c1c,_0x512384,_0x1c9d18,_0x6f19f4);};Dialer[_0xf238('0x1b')]['createStateFinal']=function(_0x1e9164,_0x4de87c,_0x64ca94,_0x25269b){this[_0xf238('0xcb')](_0x1e9164)['then'](function(){return _0x4de87c(msgResponse(_0xf238('0x1a2'),_0xf238('0xd8'),_0x25269b));})[_0xf238('0xb4')](function(){return _0x64ca94(msgResponse('[moveContactManagedDialer][0]',_0xf238('0x13f'),_0xf238('0x1bd')));});};Dialer[_0xf238('0x1b')][_0xf238('0x156')]=function(_0x267c23){var _0x306604=_0x267c23[_0xf238('0x1be')]/0x64;var _0x47db0a=_0x267c23[_0xf238('0x64')]/(_0x267c23[_0xf238('0x64')]+_0x267c23[_0xf238('0x5f')]);var _0x4761d1=Math[_0xf238('0x1bf')](_0x267c23[_0xf238('0x74')]*(_0x267c23[_0xf238('0x1c0')]/0x64));var _0x1593a7=Math[_0xf238('0x1bf')](_0x267c23[_0xf238('0x74')]*(_0x267c23[_0xf238('0x1c1')]/0x64));var _0x54ff10=_0x267c23[_0xf238('0xa4')]+_0x267c23[_0xf238('0x59')];var _0x565648=Math[_0xf238('0x1c2')](_0x267c23[_0xf238('0x8b')]*_0x267c23[_0xf238('0x8d')]*_0x267c23['predictiveIntervalHitRate']*_0x267c23[_0xf238('0x72')]);if(_['isUndefined'](_0x267c23[_0xf238('0x2b')])){if(!_[_0xf238('0x42')](_0x267c23['startPredictive'])){_0x267c23[_0xf238('0x2a')]=undefined;loggerPredictive[_0xf238('0x98')](_0xf238('0x1c3'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0xf238('0x42')](_0x267c23[_0xf238('0x94')])){loggerPredictive[_0xf238('0x98')]('[startMethodPredictive][StartProgressive]',_0xf238('0x1c4'));clearInterval(_0x267c23['handlePredictive']);_0x267c23[_0xf238('0x94')]=undefined;}_0x267c23['startProgressive']=moment()[_0xf238('0x7b')](_0xf238('0xf4'));loggerPredictive[_0xf238('0x80')](_0x267c23[_0xf238('0x43')],_0xf238('0x1c5'),_0x267c23[_0xf238('0x2b')]);this['handlePower'](_0x267c23,0x1);}else if(ifInterval(_0x267c23[_0xf238('0x1c6')],_0x267c23['startProgressive'])){this['handlePower'](_0x267c23,0x1);loggerPredictiveCalls[_0xf238('0x80')](_0xf238('0x1c7'),_0x267c23[_0xf238('0x2b')],_0x267c23[_0xf238('0x43')]);_0x267c23[_0xf238('0x8b')]=0x0;_0x267c23['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x306604<_0x47db0a&&_0x267c23[_0xf238('0x1c8')]===_0xf238('0x1c9')){freeVariablesPredictive(_0x267c23);loggerPredictive[_0xf238('0x80')](_0xf238('0x1ca'),_0xf238('0x1cb'),_0x47db0a,_0xf238('0x2b'),_0x267c23[_0xf238('0x43')]);}else if(_0x565648<_0x267c23['predictiveIntervalErlangCallsDroppedCalls']&&_0x267c23[_0xf238('0x1c8')]===_0xf238('0x1c9')){freeVariablesPredictive(_0x267c23);loggerPredictive['info'](_0xf238('0x1cc'),'Max\x20Drop\x20',_0x565648,_0xf238('0x1cd'),_0x267c23[_0xf238('0x1ce')],_0xf238('0x2b'),_0x267c23[_0xf238('0x43')]);}else if(!ifInterval(_0x267c23['dialPredictiveInterval'],_0x267c23['startProgressive'])&&_[_0xf238('0x42')](_0x267c23[_0xf238('0x2a')])&&!_['isUndefined'](_0x267c23['startProgressive'])){_0x267c23[_0xf238('0x2a')]=moment()[_0xf238('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x267c23[_0xf238('0x43')],_0xf238('0x1cf'),_0x267c23[_0xf238('0x2a')]);this[_0xf238('0x1d0')](_0x267c23[_0xf238('0x1c6')])['then'](this['getDataPredictive'](_0x267c23))['then'](mergeDataErlangB(_0x267c23))[_0xf238('0xbb')](this[_0xf238('0x1d1')](_0x267c23))[_0xf238('0xb4')](loggerCatchPredictive(_0xf238('0x1d2'),_0x267c23));}else if(!ifInterval(_0x267c23['dialPredictiveInterval'],_0x267c23['startPredictive'])){_0x267c23[_0xf238('0x1ce')]=0x0;_0x267c23['startPredictive']=moment()['format'](_0xf238('0xf4'));loggerPredictive[_0xf238('0x80')](_0x267c23['name'],_0xf238('0x1d3'),_0x267c23[_0xf238('0x2a')]);clearInterval(_0x267c23[_0xf238('0x94')]);_0x267c23[_0xf238('0x94')]=undefined;this[_0xf238('0x1d0')](_0x267c23[_0xf238('0x1c6')])[_0xf238('0xbb')](this[_0xf238('0x1d4')](_0x267c23))[_0xf238('0xbb')](mergeDataErlangB(_0x267c23))[_0xf238('0xbb')](this['startMethodPredictive'](_0x267c23))['catch'](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x267c23));}else if(_0x267c23[_0xf238('0x74')]&&_0x54ff10<_0x267c23[_0xf238('0x74')]-_0x1593a7){freeVariablesPredictive(_0x267c23);loggerPredictive[_0xf238('0x80')](_0x267c23[_0xf238('0x43')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x54ff10,_0xf238('0x1d5'),_0x267c23['predictiveIntervalAvailable'],'-',_0x1593a7,'=',_0x267c23['predictiveIntervalAvailable']-_0x1593a7,')');}else if(_0x267c23[_0xf238('0x74')]&&_0x54ff10>_0x267c23[_0xf238('0x74')]+_0x4761d1){freeVariablesPredictive(_0x267c23);loggerPredictive[_0xf238('0x80')](_0x267c23[_0xf238('0x43')],_0xf238('0x1d6'),_0x54ff10,_0xf238('0x1d7'),_0x267c23[_0xf238('0x74')],'+',_0x4761d1,'=',_0x267c23['predictiveIntervalAvailable']+_0x4761d1,')');}};Dialer['prototype'][_0xf238('0x1d4')]=function(_0x91dc16){var _0x5b3550=this;return function(_0x4b5734){return new BPromise(function(_0x6bb31a,_0x24d716){_[_0xf238('0x91')](_0x91dc16,_0x4b5734[0x0]);if(checkGetDataPredictive(_0x4b5734[0x0])){var _0x2ff42f=_0x91dc16['predictiveIntervalAvailable']=_0x91dc16[_0xf238('0x59')]+_0x91dc16[_0xf238('0xa4')];var _0x76ae16=_0x91dc16['dialPredictiveInterval']*0x3c;var _0x49e41b=_0x4b5734[0x0]['predictiveIntervalAvgTalktime']+_0x4b5734[0x0]['predictiveIntervalAvgHoldtime'];var _0x109142=(_0x4b5734[0x0]['predictiveIntervalAnsweredCalls']+_0x4b5734[0x0][_0xf238('0x6f')]+_0x4b5734[0x0][_0xf238('0x6e')])/_0x4b5734[0x0][_0xf238('0x75')];_0x91dc16[_0xf238('0x71')]=_0x109142>0x0?_0x109142:0x1;switch(_0x91dc16['dialPredictiveOptimization']){case _0xf238('0x1c9'):var _0x18f170=_0x91dc16['dialPredictiveOptimizationPercentage']/0x64;return _0x5b3550[_0xf238('0x1d8')](_0x2ff42f,_0x76ae16,_0x49e41b,_0x109142,_0x18f170)[_0xf238('0xbb')](function(_0x1c545b){return _0x6bb31a(_0x1c545b);});case'agentBusyFactor':var _0x5cf2ee=_0x91dc16[_0xf238('0x1be')]/0x64;return _0x5b3550['busyFactor'](_0x2ff42f,_0x76ae16,_0x49e41b,_0x109142,_0x5cf2ee)[_0xf238('0xbb')](function(_0x4ceef4){return _0x6bb31a(_0x4ceef4);});default:return _0x24d716(msgResponse('[getDataPredictive]',_0xf238('0x13f'),_0xf238('0x1d9')));}}else{return _0x24d716(msgResponse(_0xf238('0x1da'),_0xf238('0x13f'),_0xf238('0x1db')));}});};};Dialer[_0xf238('0x1b')][_0xf238('0x1dc')]=function(_0x4d0db7){var _0x1f9012=this;return function(_0x4c8016){return new BPromise(function(_0x434603,_0x3407ba){_[_0xf238('0x91')](_0x4d0db7,_0x4c8016[0x0]);if(checkGetDataPredictive(_0x4c8016[0x0])){loggerPredictive[_0xf238('0x80')](JSON[_0xf238('0x4f')](_0x4c8016[0x0]));if(_0x4d0db7['dialPredictiveOptimization']===_0xf238('0x1c9')){return _0x1f9012[_0xf238('0xc9')](_0x4d0db7['id'])['then'](function(_0x5ab95c){var _0x3db2f4=_0x4d0db7[_0xf238('0x1dd')]-_0x5ab95c[0x0]['outboundQueuePauses'];var _0x3b23f2=_0x4d0db7[_0xf238('0x1c6')]*0x3c;var _0x2bbc7c=_0x4c8016[0x0]['predictiveIntervalAvgTalktime']+_0x4c8016[0x0][_0xf238('0x6c')];var _0x21a6e4=(_0x4c8016[0x0]['predictiveIntervalAnsweredCalls']+_0x4c8016[0x0][_0xf238('0x6f')]+_0x4c8016[0x0][_0xf238('0x6e')])/_0x4c8016[0x0][_0xf238('0x75')];var _0x3ba3bd=_0x4d0db7[_0xf238('0x1be')]/0x64;_0x4d0db7[_0xf238('0x73')]=_0x5ab95c[0x0][_0xf238('0x1de')]||0x0;_0x4d0db7['predictiveIntervalHitRate']=_0x21a6e4>0x0?_0x21a6e4:0x1;return _0x1f9012[_0xf238('0x1d8')](_0x3db2f4,_0x3b23f2,_0x2bbc7c,_0x21a6e4,_0x3ba3bd);})[_0xf238('0xbb')](function(_0x19b61c){return _0x434603(_0x19b61c);})[_0xf238('0xb4')](function(_0x463603){return _0x3407ba(msgResponse('[CatchErlangB]',_0xf238('0x13f'),JSON['stringify'](_0x463603)));});}if(_0x4d0db7[_0xf238('0x1c8')]===_0xf238('0x1df')){return _0x1f9012[_0xf238('0xc9')](_0x4d0db7['id'])[_0xf238('0xbb')](function(_0x1c27c9){var _0x49c479=_0x4d0db7[_0xf238('0x1dd')]-_0x1c27c9[0x0][_0xf238('0x1de')];var _0x4573f1=_0x4d0db7[_0xf238('0x1c6')]*0x3c;var _0x4ea39d=_0x4c8016[0x0][_0xf238('0x6d')]+_0x4c8016[0x0][_0xf238('0x6c')];var _0x975c6f=(_0x4c8016[0x0][_0xf238('0x6b')]+_0x4c8016[0x0][_0xf238('0x6f')]+_0x4c8016[0x0][_0xf238('0x6e')])/_0x4c8016[0x0][_0xf238('0x75')];var _0x22dba3=_0x4d0db7[_0xf238('0x1be')]/0x64;_0x4d0db7[_0xf238('0x73')]=_0x1c27c9[0x0][_0xf238('0x1de')]||0x0;_0x4d0db7[_0xf238('0x71')]=_0x975c6f>0x0?_0x975c6f:0x1;return _0x1f9012[_0xf238('0x1e0')](_0x49c479,_0x4573f1,_0x4ea39d,_0x975c6f,_0x22dba3);})[_0xf238('0xbb')](function(_0x18c973){return _0x434603(_0x18c973);})[_0xf238('0xb4')](function(_0x2ed780){return _0x3407ba(msgResponse('[CatchErlangB]',_0xf238('0x13f'),JSON[_0xf238('0x4f')](_0x2ed780)));});}}else{return _0x3407ba(msgResponse(_0xf238('0x1da'),_0xf238('0x13f'),_0xf238('0x1db')));}});};};Dialer[_0xf238('0x1b')][_0xf238('0x1d1')]=function(_0x1733c7){var _0x11340b=this;return function(){var _0x587764=0x0;var _0x1ee508=Math[_0xf238('0x1c2')](_0x1733c7[_0xf238('0x77')]*0x3e8);if(_0x1ee508>0x0){_0x1ee508=_0x1ee508<0x64?0x64:_0x1ee508;loggerPredictive[_0xf238('0x80')](_0x1733c7['name'],_0xf238('0x1e1'),_0x1ee508,_0xf238('0x50'));_0x1733c7[_0xf238('0x94')]=setInterval(function(){_0x11340b[_0xf238('0x94')](_0x1733c7);loggerPredictiveCalls['info']('[handlePredictive]',_0x587764+=0x1);},_0x1ee508);}else{loggerPredictive['info'](_0x1733c7['name'],_0xf238('0x1e2'));}};};Dialer[_0xf238('0x1b')][_0xf238('0x1e3')]=function(_0x1c0903,_0x372a4f){var _0x7dca13=this;return function(_0x590118){if(_[_0xf238('0x4c')](_0x590118)){if(_[_0xf238('0xb0')](_0x372a4f['UserId'])||!_0x372a4f[_0xf238('0x1e4')]){if(_0x1c0903['dialMethod']===_0xf238('0x9')){_0x1c0903[_0xf238('0x128')]=_['isUndefined'](_0x1c0903[_0xf238('0x128')])?!![]:_0x1c0903[_0xf238('0x128')];var _0x47e5d0=uuid['v4']();_0x7dca13[_0xf238('0x26')][_0x47e5d0]=new Action(_0x1c0903,_0x372a4f,_0x47e5d0);loggerBooked[_0xf238('0x80')]('[booked][checkContactBlack]',_0x47e5d0,'queueStatusComplete:\x20',JSON[_0xf238('0x4f')](_0x1c0903[_0xf238('0x128')]),_0xf238('0x1e5'),_0x1c0903[_0xf238('0x43')]);if(_0x1c0903['queueStatusComplete']){_0x1c0903[_0xf238('0x128')]=![];_0x7dca13['queueBooked'][_0x7dca13[_0xf238('0x26')][_0x47e5d0][_0xf238('0xb7')]]=[];ami[_0xf238('0xb1')]({'actionid':_0x47e5d0,'action':_0xf238('0x1e6'),'queue':_0x1c0903['name']})[_0xf238('0xb4')](function(){_0x7dca13[_0xf238('0xb6')](_0x1c0903);_0x7dca13[_0xf238('0xc1')]({'active':![],'ContactId':_0x7dca13[_0xf238('0x26')][_0x47e5d0][_0xf238('0xf5')],'ListId':_0x7dca13[_0xf238('0x26')][_0x47e5d0][_0xf238('0x118')],'VoiceQueueId':_0x7dca13['actions'][_0x47e5d0][_0xf238('0xd4')]||undefined,'CampaignId':_0x7dca13[_0xf238('0x26')][_0x47e5d0][_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x1e7')));delete _0x7dca13['actions'][_0x47e5d0];});}else{loggerBooked[_0xf238('0x80')](_0xf238('0x1e8'),JSON['stringify'](_0x1c0903['queueStatusComplete']),_0xf238('0x1e5'),_0x1c0903[_0xf238('0x43')]);_0x7dca13[_0xf238('0xb6')](_0x1c0903);_0x7dca13['rescheduleContact']({'active':![],'ContactId':_0x7dca13[_0xf238('0x26')][_0x47e5d0]['ContactId'],'ListId':_0x7dca13['actions'][_0x47e5d0]['ListId'],'VoiceQueueId':_0x7dca13['actions'][_0x47e5d0][_0xf238('0xd4')]||undefined,'CampaignId':_0x7dca13[_0xf238('0x26')][_0x47e5d0][_0xf238('0xf6')]||undefined})[_0xf238('0xb4')](loggerCatch(_0xf238('0x1e7')));delete _0x7dca13[_0xf238('0x26')][_0x47e5d0];}}else{return _0x7dca13[_0xf238('0x165')](_0x1c0903,_0x372a4f);}}else{if(getDiff(_0x372a4f[_0xf238('0x1e9')])<_0x1c0903[_0xf238('0x1ea')]*0x3c){if(_0x372a4f[_0xf238('0x1eb')]&&!_0x372a4f[_0xf238('0x1eb')][_0xf238('0x1ec')]){_0x7dca13[_0xf238('0x1f')][_0xf238('0x131')](_0x372a4f['id'])[_0xf238('0x1d')](function(){_0x7dca13[_0xf238('0xb6')](_0x1c0903);});}else{_0x7dca13[_0xf238('0xc2')]({'active':![]},_0x372a4f['id'],0x1)[_0xf238('0x1d')](function(){_0x7dca13[_0xf238('0xb6')](_0x1c0903);});}}else{_0x1c0903[_0xf238('0x68')]+=0x1;_0x7dca13[_0xf238('0xb6')](_0x1c0903);if(_0x1c0903[_0xf238('0x1ed')]){_0x7dca13[_0xf238('0xc1')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x372a4f[_0xf238('0xf5')],'ListId':_0x372a4f['ListId'],'VoiceQueueId':_0x372a4f[_0xf238('0xd4')]||undefined,'CampaignId':_0x372a4f[_0xf238('0xf6')]||undefined})['catch'](loggerCatch(_0xf238('0x1ee')));_0x7dca13[_0xf238('0xcd')](createObjHistory(_0x1c0903,_0x372a4f,_0xf238('0x1ef'),0x17,_0xf238('0x1f0')))[_0xf238('0xb4')](loggerCatch(_0xf238('0x1f1')));}else{_0x7dca13[_0xf238('0xd1')](createObjHistory(_0x1c0903,_0x372a4f,_0xf238('0x1f2'),0x16,'RecallFailedTimeout'),_0xf238('0x1f3'),_0xf238('0x1f4'));}}}}else{_0x1c0903['outboundBlacklistCallsDay']+=0x1;_0x7dca13[_0xf238('0xd1')](createObjHistory(_0x1c0903,_0x372a4f,'BLACKLIST',0xd,'Blacklist'),_0xf238('0x1f5'),_0xf238('0x1f6'));throw _0xf238('0x1f7');}};};Dialer[_0xf238('0x1b')]['handleIvr']=function(_0x5ba168){var _0x7c9265=this;var _0x1f7952=_0x5ba168[_0xf238('0x1f8')]-_0x5ba168['originated']-_0x5ba168[_0xf238('0xc5')];emitCampaignSummary(_0x5ba168);if(_0x1f7952>0x0){if(_0x1f7952>this[_0xf238('0x24')]){_0x1f7952=this[_0xf238('0x24')];}_0x5ba168[_0xf238('0xc5')]+=_0x1f7952;this[_0xf238('0xc7')](_0x5ba168['id'],_0x1f7952,_0x5ba168[_0xf238('0x1f9')],_0x5ba168)['then'](function(_0x57cbff){_0x5ba168['temp']-=_0x1f7952;_0x5ba168[_0xf238('0xc5')]=_0x5ba168[_0xf238('0xc5')]>0x0?_0x5ba168[_0xf238('0xc5')]:0x0;if(!checkContactEmpty(_0x57cbff)){_0x5ba168[_0xf238('0x45')]=_0xf238('0xa1');logger[_0xf238('0x80')](_0xf238('0x1fa')+_0x5ba168[_0xf238('0x43')]);}else{_0x5ba168[_0xf238('0x76')]+=_0x57cbff['length'];_0x5ba168['message']='RUNNING';for(var _0x2a2e51=0x0;_0x2a2e51<_0x57cbff[_0xf238('0x9b')];_0x2a2e51+=0x1){_0x5ba168[_0xf238('0x1fb')]+=0x1;if(_[_0xf238('0xb0')](_0x57cbff[_0x2a2e51])||_[_0xf238('0xb0')](_0x57cbff[_0x2a2e51][_0xf238('0x169')])||_[_0xf238('0xb0')](_0x57cbff[_0x2a2e51][_0xf238('0x169')][_0xf238('0x16a')])){_0x7c9265[_0xf238('0xcf')]('[actionOriginate]\x20',_0x5ba168,_0x57cbff[_0x2a2e51]);}else{_0x7c9265[_0xf238('0xbe')](_['pick'](_0x57cbff[_0x2a2e51],['CampaignId','Contact.phone']))[_0xf238('0xbb')](_0x7c9265[_0xf238('0x1e3')](_0x5ba168,_0x57cbff[_0x2a2e51]))['catch'](_0x7c9265[_0xf238('0xce')](_0xf238('0x1fc'),_0x5ba168));}}}})[_0xf238('0xb4')](loggerGetContactDialer(_0xf238('0x1fd'),_0x5ba168,_0x1f7952));}};Dialer[_0xf238('0x1b')][_0xf238('0x153')]=function(_0x139e30,_0x10f2e2){var _0x28a909=this;var _0x1da64b=[];var _0x126f26=_0x10f2e2>=0x1?_0x10f2e2:0x1;if(_0x139e30[_0xf238('0x15b')]==='booked'){_0x126f26=0x1;}var _0x3f1051=Math[_0xf238('0x1c2')](_0x139e30['available']*_0x126f26)-_0x139e30[_0xf238('0x76')]-_0x139e30[_0xf238('0xc5')];emitVoiceQueueSummary(_0x139e30);if(_0x139e30[_0xf238('0x1fe')]>0x0){var _0x232b2e=_0x139e30[_0xf238('0x1fe')]-_0x139e30[_0xf238('0x76')]-_0x139e30[_0xf238('0x59')]-_0x139e30[_0xf238('0xc5')]-_0x139e30[_0xf238('0x55')];if(_0x3f1051>_0x232b2e){_0x3f1051=_0x232b2e;}}if(_0x3f1051>0x0){if(_0x139e30[_0xf238('0x15b')]===_0xf238('0x9')){_0x3f1051=0x1;}if(_0x3f1051>this['maxNumberOriginate']){_0x3f1051=this[_0xf238('0x24')];}_0x139e30['temp']+=_0x3f1051;for(var _0x3ca188 in this[_0xf238('0x22')]){if(typeof this['agents'][_0x3ca188]!=='undefined'){if(this['agents'][_0x3ca188][_0xf238('0xaa')]===_0xf238('0x1ff')&&this[_0xf238('0x22')][_0x3ca188][_0xf238('0xb2')]===_0xf238('0x200')){_0x1da64b[_0xf238('0x145')](this[_0xf238('0x22')][_0x3ca188]['id']);}}}this[_0xf238('0xc4')](_0x139e30['id'],_0x1da64b,_0x3f1051,_0x139e30['dialOrderByScheduledAt'],_0x139e30)['then'](function(_0x343d8d){_0x139e30[_0xf238('0xc5')]-=_0x3f1051;_0x139e30[_0xf238('0xc5')]=_0x139e30[_0xf238('0xc5')]>0x0?_0x139e30[_0xf238('0xc5')]:0x0;if(!checkContactEmpty(_0x343d8d)){_0x28a909[_0xf238('0xb9')](_0x139e30)[_0xf238('0xbb')](sendMessageReschedule(_0x139e30))[_0xf238('0xb4')](loggerCatch(_0xf238('0xbc')));}else{_0x139e30[_0xf238('0x76')]+=_0x343d8d['length'];_0x139e30[_0xf238('0x45')]=_0x139e30[_0xf238('0x15b')]===_0xf238('0x9')?_0xf238('0x172'):'RUNNING';for(var _0x87c96b=0x0;_0x87c96b<_0x343d8d[_0xf238('0x9b')];_0x87c96b+=0x1){if(_['isNil'](_0x343d8d[_0x87c96b])||_[_0xf238('0xb0')](_0x343d8d[_0x87c96b][_0xf238('0x169')])||_[_0xf238('0xb0')](_0x343d8d[_0x87c96b][_0xf238('0x169')]['phone'])){_0x28a909[_0xf238('0xcf')](_0xf238('0x201'),_0x139e30,_0x343d8d[_0x87c96b]);}else{_0x28a909[_0xf238('0xbd')](_[_0xf238('0xd2')](_0x343d8d[_0x87c96b],['VoiceQueueId','Contact.phone']))['then'](_0x28a909['checkContactBlack'](_0x139e30,_0x343d8d[_0x87c96b]))[_0xf238('0xb4')](_0x28a909[_0xf238('0xce')](_0xf238('0x201'),_0x139e30));}}}})[_0xf238('0xb4')](loggerGetContactDialer(_0xf238('0x202'),_0x139e30,_0x3f1051));}};Dialer[_0xf238('0x1b')][_0xf238('0x94')]=function(_0x2dc1e4){if(_0x2dc1e4[_0xf238('0x1fe')]>0x0){var _0x3d9e1d=_0x2dc1e4[_0xf238('0x1fe')]-_0x2dc1e4[_0xf238('0x76')]-_0x2dc1e4['talking'];if(_0x3d9e1d>0x0){this[_0xf238('0x203')](_0x2dc1e4);}else{loggerPredictiveCalls[_0xf238('0x80')](_0xf238('0x204'));}}else{this['tryOriginatePredictive'](_0x2dc1e4);}};Dialer[_0xf238('0x1b')][_0xf238('0x203')]=function(_0x47d0c8){var _0x51ca42=this;var _0x114c15=[];_0x47d0c8['originated']+=0x1;for(var _0x35bb30 in this['agents']){if(typeof this[_0xf238('0x22')][_0x35bb30]!==_0xf238('0x9c')){if(this['agents'][_0x35bb30][_0xf238('0xaa')]==='not_inuse'&&this[_0xf238('0x22')][_0x35bb30][_0xf238('0xb2')]==='reachable'){_0x114c15[_0xf238('0x145')](this[_0xf238('0x22')][_0x35bb30]['id']);}}}this[_0xf238('0xc4')](_0x47d0c8['id'],_0x114c15,0x1,_0x47d0c8[_0xf238('0x1f9')],_0x47d0c8)['then'](function(_0x1a1059){if(!checkContactEmpty(_0x1a1059)){checkContactLowerLimitOriginate(_0x47d0c8,0x1,0x0);_0x51ca42[_0xf238('0xb9')](_0x47d0c8)[_0xf238('0xbb')](sendMessageReschedule(_0x47d0c8))[_0xf238('0xb4')](loggerCatch(_0xf238('0xbc')));}else{_0x47d0c8['message']=_0xf238('0x205');if(_['isNil'](_0x1a1059[0x0])||_[_0xf238('0xb0')](_0x1a1059[0x0][_0xf238('0x169')])||_[_0xf238('0xb0')](_0x1a1059[0x0][_0xf238('0x169')]['phone'])){_0x51ca42[_0xf238('0xcf')](_0xf238('0x201'),_0x47d0c8,_0x1a1059[0x0]);}else{_0x51ca42[_0xf238('0xbd')](_[_0xf238('0xd2')](_0x1a1059[0x0],[_0xf238('0xd4'),'Contact.phone']))[_0xf238('0xbb')](_0x51ca42['checkContactBlack'](_0x47d0c8,_0x1a1059[0x0]))['catch'](_0x51ca42[_0xf238('0xce')](_0xf238('0x206'),_0x47d0c8));}}})[_0xf238('0xb4')](loggerGetContactDialer(_0xf238('0x207'),_0x47d0c8,0x1));emitVoiceQueueSummary(_0x47d0c8);};Dialer[_0xf238('0x1b')][_0xf238('0x1d8')]=function(_0x137a44,_0x45a42d,_0x3e8ddd,_0x5e3e68,_0x1bc88f,_0x3f950c){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xf238('0x80')](_0xf238('0x208'),_0x137a44);loggerPredictive[_0xf238('0x80')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x45a42d);loggerPredictive[_0xf238('0x80')]('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',_0x3e8ddd);loggerPredictive['info'](_0xf238('0x209'),_0x5e3e68);loggerPredictive[_0xf238('0x80')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1bc88f);loggerPredictive['info']('---------------------------');return new BPromise(function(_0x140cfb,_0x50c756){if(_0x137a44<=0x0||isNaN(_0x137a44)){return _0x50c756(msgResponse(_0xf238('0x20a'),_0xf238('0x4e'),_0xf238('0x20b')+_0x137a44));}if(_0x3e8ddd<=0x0||isNaN(_0x3e8ddd)){return _0x50c756(msgResponse(_0xf238('0x20a'),_0xf238('0x4e'),_0xf238('0x20c')+_0x3e8ddd));}if(_0x5e3e68<=0x0||isNaN(_0x5e3e68)){return _0x50c756(msgResponse(_0xf238('0x20a'),_0xf238('0x4e'),_0xf238('0x20d')+_0x5e3e68));}if(_0x45a42d<=0x0||isNaN(_0x45a42d)){return _0x50c756(msgResponse(_0xf238('0x20a'),_0xf238('0x4e'),_0xf238('0x20e')+_0x45a42d));}if(_0x1bc88f<=0x0||isNaN(_0x1bc88f)){return _0x50c756(msgResponse(_0xf238('0x20a'),_0xf238('0x4e'),'Amax\x20=\x20'+_0x1bc88f));}_0x3f950c=_0x3f950c||0x0;var _0x457587=0x1/_0x3e8ddd;var _0x489c3d=0x0;var _0x410bdb=0x0;var _0x231c3b=0x0;var _0x18fd99=0x0;for(var _0xed8a40=0x0;_0x231c3b<_0x1bc88f;_0xed8a40+=0x1){_0x410bdb=_0xed8a40/_0x45a42d;_0x489c3d=(_0x5e3e68*_0x410bdb+_0x3f950c)/_0x457587;_0x231c3b=erlangb(_0x489c3d,_0x137a44);_0x18fd99=_0x489c3d/_0x137a44*(0x1-erlangb(_0x489c3d,_0x137a44));}return _0x140cfb({'erlangCalls':_0xed8a40,'erlangCallToSecond':_0x45a42d/_0xed8a40,'erlangAbandonmentRate':_0x231c3b,'erlangBusyFactor':_0x18fd99});});};Dialer[_0xf238('0x1b')]['busyFactor']=function(_0x321625,_0x5a567b,_0x135ced,_0x28b1dd,_0x26723e,_0x41b9a7){loggerPredictive[_0xf238('0x80')](_0xf238('0x20f'));loggerPredictive[_0xf238('0x80')](_0xf238('0x208'),_0x321625);loggerPredictive[_0xf238('0x80')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5a567b);loggerPredictive[_0xf238('0x80')](_0xf238('0x210'),_0x135ced);loggerPredictive[_0xf238('0x80')](_0xf238('0x209'),_0x28b1dd);loggerPredictive[_0xf238('0x80')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x26723e);loggerPredictive[_0xf238('0x80')](_0xf238('0x90'));return new BPromise(function(_0x383c3f,_0x6b555f){if(_0x321625<=0x0||isNaN(_0x321625)){return _0x6b555f(msgResponse(_0xf238('0x211'),_0xf238('0x4e'),_0xf238('0x20b')+_0x321625));}if(_0x135ced<=0x0||isNaN(_0x135ced)){return _0x6b555f(msgResponse(_0xf238('0x211'),_0xf238('0x4e'),_0xf238('0x20c')+_0x135ced));}if(_0x28b1dd<=0x0||isNaN(_0x28b1dd)){return _0x6b555f(msgResponse(_0xf238('0x211'),_0xf238('0x4e'),_0xf238('0x20d')+_0x28b1dd));}if(_0x5a567b<=0x0||isNaN(_0x5a567b)){return _0x6b555f(msgResponse(_0xf238('0x211'),_0xf238('0x4e'),_0xf238('0x20e')+_0x5a567b));}if(_0x26723e<=0x0||isNaN(_0x26723e)){return _0x6b555f(msgResponse(_0xf238('0x211'),'Error','Umin\x20=\x20'+_0x26723e));}_0x41b9a7=_0x41b9a7||0x0;var _0x13c017=0x1/_0x135ced;var _0x4380b8=0x0;var _0x553c63=0x0;var _0x1fac65=0x0;var _0x5ed6ac=0x0;for(var _0x4571dc=0x0;_0x5ed6ac<_0x26723e;_0x4571dc+=0x1){_0x553c63=_0x4571dc/_0x5a567b;_0x4380b8=(_0x28b1dd*_0x553c63+_0x41b9a7)/_0x13c017;_0x1fac65=erlangb(_0x4380b8,_0x321625);_0x5ed6ac=_0x4380b8/_0x321625*(0x1-erlangb(_0x4380b8,_0x321625));}return _0x383c3f({'erlangCalls':_0x4571dc,'erlangCallToSecond':_0x5a567b/_0x4571dc,'erlangAbandonmentRate':_0x1fac65,'erlangBusyFactor':_0x5ed6ac});});};module[_0xf238('0x212')]=Dialer;
\ No newline at end of file
index 856a45a..bbd59ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6a=['countagentrejectretry','countdropretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry'];(function(_0xed6f46,_0x1c9006){var _0x5b267c=function(_0x59f0d2){while(--_0x59f0d2){_0xed6f46['push'](_0xed6f46['shift']());}};_0x5b267c(++_0x1c9006);}(_0x8d6a,0x143));var _0xa8d6=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x8d6a[_0x37bd26];return _0xe83dc4;};'use strict';var util=require(_0xa8d6('0x0'));var _=require(_0xa8d6('0x1'));var moment=require(_0xa8d6('0x2'));function getSeconds(_0x5d7773,_0x4fc258){var _0x4349ec=moment(_0x5d7773)['milliseconds'](0x0);var _0x176324=moment(_0x4fc258)[_0xa8d6('0x3')](0x0);return _0x4349ec['diff'](_0x176324,_0xa8d6('0x4'));}function QueueCallerAbandon(_0x35979e,_0x433e35){this['scheduledat']=_0x35979e['scheduledat'];this[_0xa8d6('0x5')]=_0x35979e[_0xa8d6('0x5')];this['campaigntype']=_0x35979e[_0xa8d6('0x5')]===_0xa8d6('0x6')?'queue':_0x35979e[_0xa8d6('0x5')];this['countbusyretry']=_0x35979e[_0xa8d6('0x7')];this[_0xa8d6('0x8')]=_0x35979e['countcongestionretry'];this['countnoanswerretry']=_0x35979e[_0xa8d6('0x9')];this[_0xa8d6('0xa')]=_0x35979e['countbusyretry']+_0x35979e[_0xa8d6('0x8')]+_0x35979e['countnoanswerretry']+_0x35979e[_0xa8d6('0xb')]+_0x35979e['countdropretry']+_0x35979e[_0xa8d6('0xc')]+_0x35979e['countmachineretry']+_0x35979e[_0xa8d6('0xd')];this['countnosuchnumberretry']=_0x35979e[_0xa8d6('0xb')];this[_0xa8d6('0xe')]=_0x35979e[_0xa8d6('0xe')];this[_0xa8d6('0xc')]=_0x35979e[_0xa8d6('0xc')];this['countmachineretry']=_0x35979e[_0xa8d6('0xf')];this[_0xa8d6('0xd')]=_0x35979e[_0xa8d6('0xd')];this[_0xa8d6('0x10')]=_0x433e35[_0xa8d6('0x10')];this[_0xa8d6('0x11')]=_0x35979e[_0xa8d6('0x12')];this[_0xa8d6('0x13')]=_0x35979e[_0xa8d6('0x14')];this[_0xa8d6('0x15')]=_0x35979e[_0xa8d6('0x15')];this[_0xa8d6('0x16')]=_0x35979e[_0xa8d6('0x16')];this[_0xa8d6('0x17')]=_0x35979e[_0xa8d6('0x17')];this[_0xa8d6('0x18')]=this[_0xa8d6('0x17')];this[_0xa8d6('0x19')]=getSeconds(_0x35979e[_0xa8d6('0x16')],_0x35979e[_0xa8d6('0x15')]);this[_0xa8d6('0x1a')]=getSeconds(this['droptime'],_0x35979e[_0xa8d6('0x16')]);this[_0xa8d6('0x1b')]=0x0;this['queue']=_0x433e35[_0xa8d6('0x1c')];this[_0xa8d6('0x1d')]=_0x433e35[_0xa8d6('0x1e')];this[_0xa8d6('0x1f')]=_0x433e35['reason'];this[_0xa8d6('0x20')]=_0x35979e[_0xa8d6('0x20')];this[_0xa8d6('0x21')]=_0x35979e[_0xa8d6('0x21')];this['callbackat']=_0x35979e['callbackat'];this['recallme']=_0x35979e['recallme'];this[_0xa8d6('0x22')]=_0x35979e[_0xa8d6('0x22')];this[_0xa8d6('0x23')]=_0x35979e[_0xa8d6('0x23')];this[_0xa8d6('0x24')]=_0x35979e[_0xa8d6('0x24')];this[_0xa8d6('0x25')]=_0x35979e['VoiceQueueId'];this[_0xa8d6('0x26')]=_0x35979e['CampaignId'];this[_0xa8d6('0x27')]=_0x35979e[_0xa8d6('0x27')]||'';this[_0xa8d6('0x28')]=_0x35979e['originatecalleridname']||'';}module[_0xa8d6('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xe90c=['originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x487f61,_0x5af03f){var _0x2477a4=function(_0xea7971){while(--_0xea7971){_0x487f61['push'](_0x487f61['shift']());}};_0x2477a4(++_0x5af03f);}(_0xe90c,0x153));var _0xce90=function(_0x5a0bca,_0x59a3e9){_0x5a0bca=_0x5a0bca-0x0;var _0x11c005=_0xe90c[_0x5a0bca];return _0x11c005;};'use strict';var util=require(_0xce90('0x0'));var _=require(_0xce90('0x1'));var moment=require(_0xce90('0x2'));function getSeconds(_0x5091fd,_0x32776b){var _0x3a60c0=moment(_0x5091fd)['milliseconds'](0x0);var _0x4c7a9e=moment(_0x32776b)[_0xce90('0x3')](0x0);return _0x3a60c0[_0xce90('0x4')](_0x4c7a9e,_0xce90('0x5'));}function QueueCallerAbandon(_0x44245b,_0xe52512){this[_0xce90('0x6')]=_0x44245b['scheduledat'];this[_0xce90('0x7')]=_0x44245b[_0xce90('0x7')];this['campaigntype']=_0x44245b[_0xce90('0x7')]==='outbound'?'queue':_0x44245b[_0xce90('0x7')];this[_0xce90('0x8')]=_0x44245b[_0xce90('0x8')];this[_0xce90('0x9')]=_0x44245b[_0xce90('0x9')];this[_0xce90('0xa')]=_0x44245b[_0xce90('0xa')];this[_0xce90('0xb')]=_0x44245b[_0xce90('0x8')]+_0x44245b[_0xce90('0x9')]+_0x44245b[_0xce90('0xa')]+_0x44245b[_0xce90('0xc')]+_0x44245b[_0xce90('0xd')]+_0x44245b[_0xce90('0xe')]+_0x44245b[_0xce90('0xf')]+_0x44245b[_0xce90('0x10')];this[_0xce90('0xc')]=_0x44245b['countnosuchnumberretry'];this[_0xce90('0xd')]=_0x44245b['countdropretry'];this['countabandonedretry']=_0x44245b['countabandonedretry'];this['countmachineretry']=_0x44245b[_0xce90('0xf')];this[_0xce90('0x10')]=_0x44245b['countagentrejectretry'];this[_0xce90('0x11')]=_0xe52512[_0xce90('0x11')];this[_0xce90('0x12')]=_0x44245b[_0xce90('0x13')];this[_0xce90('0x14')]=_0x44245b[_0xce90('0x15')];this[_0xce90('0x16')]=_0x44245b['starttime'];this[_0xce90('0x17')]=_0x44245b[_0xce90('0x17')];this[_0xce90('0x18')]=_0x44245b['droptime'];this[_0xce90('0x19')]=this[_0xce90('0x18')];this['ringtime']=getSeconds(_0x44245b[_0xce90('0x17')],_0x44245b[_0xce90('0x16')]);this[_0xce90('0x1a')]=getSeconds(this['droptime'],_0x44245b[_0xce90('0x17')]);this[_0xce90('0x1b')]=0x0;this[_0xce90('0x1c')]=_0xe52512['queue'];this[_0xce90('0x1d')]=_0xe52512['connectedlinename'];this[_0xce90('0x1e')]=_0xe52512[_0xce90('0x1e')];this[_0xce90('0x1f')]=_0x44245b['callback'];this['callbackuniqueid']=_0x44245b[_0xce90('0x20')];this['callbackat']=_0x44245b['callbackat'];this['recallme']=_0x44245b[_0xce90('0x21')];this['ContactId']=_0x44245b[_0xce90('0x22')];this[_0xce90('0x23')]=_0x44245b[_0xce90('0x23')];this['UserId']=_0x44245b[_0xce90('0x24')];this[_0xce90('0x25')]=_0x44245b[_0xce90('0x25')];this[_0xce90('0x26')]=_0x44245b['CampaignId'];this[_0xce90('0x27')]=_0x44245b[_0xce90('0x27')]||'';this['originatecalleridname']=_0x44245b[_0xce90('0x28')]||'';}module[_0xce90('0x29')]=QueueCallerAbandon;
\ No newline at end of file
index 846a2cb..8fbb601 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(_0x42eaee,_0x5abb66){var _0x15d69e=function(_0x59c52d){while(--_0x59c52d){_0x42eaee['push'](_0x42eaee['shift']());}};_0x15d69e(++_0x5abb66);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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(_0x31609e,_0x4f99f8){var _0x2f50e3=function(_0x2833a4){while(--_0x2833a4){_0x31609e['push'](_0x31609e['shift']());}};_0x2f50e3(++_0x4f99f8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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 cc9e3de..670d820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cdf=['parse','name','.pdf','application/pdf','then','notify','catch','stringify','\x20receiveFax\x20','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED','FaxAccountId','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','execOriginate','addVariables','isNil','active','format','SIP/%s','checkTrunk','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','syncNewchannel','varset','syncVarSet','bind','syncNewState','newexten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','info','actions','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message'];(function(_0x4dd6c4,_0x1d4afb){var _0xa8e0b=function(_0xb86de7){while(--_0xb86de7){_0x4dd6c4['push'](_0x4dd6c4['shift']());}};_0xa8e0b(++_0x1d4afb);}(_0x9cdf,0x19e));var _0xf9cd=function(_0x7e4e16,_0x4072bf){_0x7e4e16=_0x7e4e16-0x0;var _0x1df5cb=_0x9cdf[_0x7e4e16];return _0x1df5cb;};'use strict';var util=require(_0xf9cd('0x0'));var _=require('lodash');var BPromise=require(_0xf9cd('0x1'));var uuid=require(_0xf9cd('0x2'));var moment=require(_0xf9cd('0x3'));var path=require('path');var tiff2pdf=require(_0xf9cd('0x4'));var gs=require(_0xf9cd('0x5'));var logger=require(_0xf9cd('0x6'))(_0xf9cd('0x7'));var ami=require(_0xf9cd('0x8'));var rpcDb=require(_0xf9cd('0x9'));var Channel=require(_0xf9cd('0xa'));var ut=require(_0xf9cd('0xb'));var Action=require('./action');var faxAccount=require(_0xf9cd('0xc'));var attachment=require(_0xf9cd('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x3487da){this[_0xf9cd('0xe')]={};this['faxAccounts']=_0x3487da[_0xf9cd('0xf')];this[_0xf9cd('0x10')]=_0x3487da[_0xf9cd('0x10')];this['actions']={};ami['on']('newchannel',this[_0xf9cd('0x11')]['bind'](this));ami['on'](_0xf9cd('0x12'),this[_0xf9cd('0x13')][_0xf9cd('0x14')](this));ami['on']('newstate',this[_0xf9cd('0x15')][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x16'),this['syncNewExten'][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x17'),this[_0xf9cd('0x18')][_0xf9cd('0x14')](this));ami['on']('receivefax',this[_0xf9cd('0x19')][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x1a'),this['syncHangup'][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x1b'),this[_0xf9cd('0x1c')]['bind'](this));}Fax[_0xf9cd('0x1d')][_0xf9cd('0x11')]=function(_0x52e0cc){if(_0x52e0cc[_0xf9cd('0x1e')]===_0xf9cd('0x1f')){for(var _0x28510a in this[_0xf9cd('0xf')]){if(this[_0xf9cd('0xf')][_0xf9cd('0x20')](_0x28510a)){if(_0x52e0cc[_0xf9cd('0x21')]===this[_0xf9cd('0xf')][_0x28510a][_0xf9cd('0x22')]){this['channels'][_0x52e0cc[_0xf9cd('0x23')]]={};this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]][_0xf9cd('0x24')]=_0x52e0cc['channel'];this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]]['id']=this['faxAccounts'][_0x28510a]['id'];this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]]['name']=this[_0xf9cd('0xf')][_0x28510a]['name'];logger[_0xf9cd('0x25')](_0x52e0cc[_0xf9cd('0x23')],'\x20syncNewchannel\x20');}}}}if(this[_0xf9cd('0x26')][_0x52e0cc['uniqueid']]){this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]]={};this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]][_0xf9cd('0x24')]=_0x52e0cc[_0xf9cd('0x24')];logger[_0xf9cd('0x25')](_0x52e0cc[_0xf9cd('0x23')],_0xf9cd('0x27'));}};Fax[_0xf9cd('0x1d')]['syncVarSet']=function(_0x33c59b){if(this[_0xf9cd('0xe')][_0x33c59b[_0xf9cd('0x23')]]){for(var _0x58e148 in _0x33c59b[_0xf9cd('0x28')]){if(_0x33c59b[_0xf9cd('0x28')][_0xf9cd('0x20')](_0x58e148)){this[_0xf9cd('0xe')][_0x33c59b[_0xf9cd('0x23')]][_0x58e148]=_0x33c59b[_0xf9cd('0x29')];}}}};Fax['prototype']['syncNewState']=function(_0x277dfb){if(this['channels'][_0x277dfb[_0xf9cd('0x23')]]){this[_0xf9cd('0xe')][_0x277dfb['uniqueid']][_0xf9cd('0x2a')]=_0x277dfb[_0xf9cd('0x2a')];this[_0xf9cd('0xe')][_0x277dfb[_0xf9cd('0x23')]][_0xf9cd('0x2b')]=_0x277dfb[_0xf9cd('0x2b')];}};Fax[_0xf9cd('0x1d')]['syncNewExten']=function(_0x12f7b9){if(this[_0xf9cd('0xe')][_0x12f7b9['uniqueid']]){for(var _0x31c369 in _0x12f7b9[_0xf9cd('0x28')]){if(_0x12f7b9['variable']['hasOwnProperty'](_0x31c369)){this[_0xf9cd('0xe')][_0x12f7b9['uniqueid']][_0x31c369]=_0x12f7b9[_0xf9cd('0x29')];}}}};Fax[_0xf9cd('0x1d')][_0xf9cd('0x18')]=function(_0x26f769){if(this[_0xf9cd('0xe')][_0x26f769['uniqueid']]){this[_0xf9cd('0xe')][_0x26f769[_0xf9cd('0x23')]][_0xf9cd('0x2c')]=_0x26f769[_0xf9cd('0x2c')];this[_0xf9cd('0xe')][_0x26f769[_0xf9cd('0x23')]][_0xf9cd('0x2d')]=_0x26f769[_0xf9cd('0x2d')];this[_0xf9cd('0xe')][_0x26f769[_0xf9cd('0x23')]][_0xf9cd('0x22')]=_0x26f769[_0xf9cd('0x22')];this['channels'][_0x26f769['uniqueid']][_0xf9cd('0x2e')]=_0x26f769[_0xf9cd('0x2e')];logger[_0xf9cd('0x25')](_0x26f769[_0xf9cd('0x23')],'\x20syncFaxStatus\x20');}};Fax[_0xf9cd('0x1d')][_0xf9cd('0x19')]=function(_0x2cd56d){var _0x2c45bc=this;if(this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]){var _0x4092f5=this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]['id'];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]['remotestationid']=_0x2cd56d[_0xf9cd('0x2f')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x30')]=_0x2cd56d[_0xf9cd('0x30')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x22')]=_0x2cd56d[_0xf9cd('0x22')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x31')]=_0x2cd56d['resolution'];this[_0xf9cd('0xe')][_0x2cd56d['uniqueid']][_0xf9cd('0x32')]=_0x2cd56d[_0xf9cd('0x32')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]['filename']=_0x2cd56d[_0xf9cd('0x2e')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x33')]=_0x2cd56d[_0xf9cd('0x33')];if(this['channels'][_0x2cd56d[_0xf9cd('0x23')]]['pagestransferred']>0x0){tiff2pdf(_0x2cd56d['filename'],_0xf9cd('0x34'),function(_0x126214){logger[_0xf9cd('0x25')](_0x2cd56d['uniqueid'],'\x20result\x20conversion\x20file\x20',_0x126214[_0xf9cd('0x35')]);attachment['create']({'name':path[_0xf9cd('0x36')](_0x2cd56d[_0xf9cd('0x2e')])['name'],'basename':path['parse'](_0x2cd56d[_0xf9cd('0x2e')])[_0xf9cd('0x37')]+_0xf9cd('0x38'),'type':_0xf9cd('0x39')})[_0xf9cd('0x3a')](function(_0x2e9e98){faxAccount[_0xf9cd('0x3b')](_0x4092f5,{'from':_0x2cd56d[_0xf9cd('0x33')],'mapKey':_0xf9cd('0x7'),'body':path[_0xf9cd('0x36')](_0x2cd56d[_0xf9cd('0x2e')])[_0xf9cd('0x37')]+'.pdf','AttachmentId':_0x2e9e98['id']})[_0xf9cd('0x3c')](function(_0x1a7032){logger['error'](_0x2cd56d[_0xf9cd('0x23')],'\x20notify\x20',JSON[_0xf9cd('0x3d')](_0x1a7032));});})[_0xf9cd('0x3c')](function(_0x17b236){logger['error'](_0x2cd56d[_0xf9cd('0x23')],_0xf9cd('0x3e'),JSON[_0xf9cd('0x3d')](_0x17b236));});});}logger[_0xf9cd('0x25')](_0x2cd56d['uniqueid'],_0xf9cd('0x3e'));}};Fax[_0xf9cd('0x1d')][_0xf9cd('0x1c')]=function(_0x769ccc){if(this[_0xf9cd('0x26')][_0x769ccc[_0xf9cd('0x23')]]){_['merge'](this[_0xf9cd('0xe')][_0x769ccc[_0xf9cd('0x23')]],_[_0xf9cd('0x3f')](_0x769ccc,[_0xf9cd('0x40'),_0xf9cd('0x41')]));}};function updateStatus(_0x12b52a){if(_0x12b52a[_0xf9cd('0x42')]){faxMessage[_0xf9cd('0x43')](_0x12b52a[_0xf9cd('0x42')],{'failMessage':_0xf9cd('0x44')})[_0xf9cd('0x3a')](function(_0x5c364c){ut['logger'](_0xf9cd('0x45'),_0x5c364c);})[_0xf9cd('0x3c')](function(_0x1ef11a){ut[_0xf9cd('0x46')](_0xf9cd('0x47'),_0x1ef11a);});}else{ut[_0xf9cd('0x46')](_0xf9cd('0x48'));}}Fax[_0xf9cd('0x1d')][_0xf9cd('0x49')]=function(_0x5ddc53,_0xa2a7d2,_0x54a915){var _0x4fe28b=this;var _0x171a5b={};if(_0xa2a7d2){_0x171a5b={'read':_0xa2a7d2};}else{_0x171a5b={'failMessage':_0x54a915};}if(this[_0xf9cd('0x26')][_0x5ddc53][_0xf9cd('0x42')]){faxMessage[_0xf9cd('0x43')](this[_0xf9cd('0x26')][_0x5ddc53]['AttachmentId'],_0x171a5b)[_0xf9cd('0x3a')](function(_0x51564a){ut[_0xf9cd('0x46')](_0xf9cd('0x4a'),_0x51564a);})[_0xf9cd('0x3c')](function(_0x399143){ut['logger'](_0xf9cd('0x4b'),_0x399143);})[_0xf9cd('0x4c')](function(){delete _0x4fe28b[_0xf9cd('0xe')][_0x5ddc53];delete _0x4fe28b['actions'][_0x5ddc53];});}else{ut[_0xf9cd('0x46')](_0xf9cd('0x4d'));delete this[_0xf9cd('0xe')][_0x5ddc53];delete this[_0xf9cd('0x26')][_0x5ddc53];}};Fax['prototype'][_0xf9cd('0x4e')]=function(_0x240edb){var _0x1d64df=this;if(this['channels'][_0x240edb[_0xf9cd('0x23')]]){if(this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]]){this[_0xf9cd('0xe')][_0x240edb[_0xf9cd('0x23')]]['id']=this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]]['id'];this[_0xf9cd('0xe')][_0x240edb[_0xf9cd('0x23')]]['name']=this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]][_0xf9cd('0x37')];}logger[_0xf9cd('0x25')](_0x240edb[_0xf9cd('0x23')],this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]]?_0xf9cd('0x4f'):_0xf9cd('0x50'),JSON[_0xf9cd('0x3d')](this[_0xf9cd('0xe')][_0x240edb[_0xf9cd('0x23')]]));if(this['actions'][_0x240edb['uniqueid']]){if(this[_0xf9cd('0xe')][_0x240edb['uniqueid']][_0xf9cd('0x51')]>0x0&&this['channels'][_0x240edb[_0xf9cd('0x23')]]['faxstatus']===_0xf9cd('0x52')){this[_0xf9cd('0x49')](_0x240edb[_0xf9cd('0x23')],!![]);}else{this[_0xf9cd('0x49')](_0x240edb['uniqueid'],![],this[_0xf9cd('0xe')][_0x240edb['uniqueid']][_0xf9cd('0x53')]?'SENDING\x20FAILED:\x20'+this['channels'][_0x240edb['uniqueid']][_0xf9cd('0x53')]:_0xf9cd('0x54'));}}}};Fax[_0xf9cd('0x1d')]['send']=function(_0x5ecd0c){var _0x485d2f=this;return new BPromise(function(_0xa84491,_0x50d3a4){_0x485d2f['execOriginate'](_0x5ecd0c,_0x485d2f[_0xf9cd('0xf')][_0x5ecd0c[_0xf9cd('0x55')]])[_0xf9cd('0x3a')](function(_0x42fbf6){ut[_0xf9cd('0x46')](_0xf9cd('0x56'),_0x42fbf6);_0xa84491(ut[_0xf9cd('0x35')]('Fax\x20received'));})[_0xf9cd('0x3c')](function(_0x1f395f){ut[_0xf9cd('0x46')](_0xf9cd('0x57'),_0x1f395f);updateStatus(_0x5ecd0c);_0x50d3a4(ut[_0xf9cd('0x35')](_0xf9cd('0x58')));});});};Fax[_0xf9cd('0x1d')][_0xf9cd('0x59')]=function(_0x57df94){var _0x275cfe=this;return new BPromise(function(_0x5bf27a,_0x5a812b){var _0x5ecdb9=_0x275cfe['checkTrunk'](_0x275cfe['faxAccounts'][_0x57df94[_0xf9cd('0x55')]][_0xf9cd('0x5a')],_0x57df94);if(_0x5ecdb9[_0xf9cd('0x5b')]){_0x5bf27a(ut[_0xf9cd('0x35')](_0xf9cd('0x5c')));}else{_0x5a812b(ut[_0xf9cd('0x35')](_0x5ecdb9[_0xf9cd('0x35')]));}});};function originate(_0x312f61,_0x886e46,_0x5dcd32){return new BPromise(function(_0x2e2416,_0x4ded78){if(_0x5dcd32){var _0x3fa65e=util['format'](_0xf9cd('0x5d'),path[_0xf9cd('0x36')](_0x312f61['path'])[_0xf9cd('0x37')],_0x312f61[_0xf9cd('0x5e')]);gs[_0xf9cd('0x5f')](_0x3fa65e)['then'](function(){_0x312f61[_0xf9cd('0x5e')]=util['format'](_0xf9cd('0x60'),path[_0xf9cd('0x36')](_0x312f61['path'])[_0xf9cd('0x61')],path[_0xf9cd('0x36')](_0x312f61[_0xf9cd('0x5e')])[_0xf9cd('0x37')]);_0x886e46[_0xf9cd('0x62')]=_0x312f61['path'];ut['logger'](_0xf9cd('0x63'),'');ami['Action'](ut[_0xf9cd('0x64')](_0x312f61,_0x886e46))[_0xf9cd('0x3a')](function(_0xc7dde2){_0x2e2416(_0xc7dde2);})['catch'](function(_0x287674){_0x4ded78(_0x287674);});})[_0xf9cd('0x3c')](function(_0x29543a){_0x4ded78(_0x29543a);});}else{ami[_0xf9cd('0x65')](ut[_0xf9cd('0x64')](_0x312f61,_0x886e46))['then'](function(_0x44253d){_0x2e2416(_0x44253d);})[_0xf9cd('0x3c')](function(_0x1677c7){_0x4ded78(_0x1677c7);});}});}Fax[_0xf9cd('0x1d')][_0xf9cd('0x66')]=function(_0x5e6f06,_0x315b3c){var _0x4a3f90=this;return new BPromise(function(_0x29d2cc,_0x31b023){var _0x2d4274=uuid['v4']();var _0x2b40f0=ut[_0xf9cd('0x67')](_0x5e6f06,_0x315b3c);_0x4a3f90[_0xf9cd('0x26')][_0x2d4274]=new Action(_0x2d4274,_0x315b3c,_0x5e6f06);var _0x2fe8dd=_0x4a3f90[_0xf9cd('0x26')][_0x2d4274];if(path[_0xf9cd('0x36')](_0x5e6f06[_0xf9cd('0x5e')])['ext']===_0xf9cd('0x38')){originate(_0x2fe8dd,_0x2b40f0,!![])[_0xf9cd('0x3a')](function(_0x5dabdc){_0x29d2cc(_0x5dabdc);})[_0xf9cd('0x3c')](function(_0x29e423){_0x31b023(_0x29e423);});}else{originate(_0x2fe8dd,_0x2b40f0,![])[_0xf9cd('0x3a')](function(_0x5336c6){_0x29d2cc(_0x5336c6);})[_0xf9cd('0x3c')](function(_0x311efe){_0x31b023(_0x311efe);});}});};Fax[_0xf9cd('0x1d')]['isTrunkReachable']=function(_0x5270b3){return!_[_0xf9cd('0x68')](_0x5270b3)&&!_[_0xf9cd('0x68')](_0x5270b3[_0xf9cd('0x37')])&&!_[_0xf9cd('0x68')](_0x5270b3[_0xf9cd('0x69')])&&_0x5270b3[_0xf9cd('0x69')]&&!_[_0xf9cd('0x68')](this['trunks'][util[_0xf9cd('0x6a')](_0xf9cd('0x6b'),_0x5270b3[_0xf9cd('0x37')])])&&!_['isNil'](this[_0xf9cd('0x10')][util[_0xf9cd('0x6a')]('SIP/%s',_0x5270b3[_0xf9cd('0x37')])]['status'])&&(this[_0xf9cd('0x10')][util[_0xf9cd('0x6a')]('SIP/%s',_0x5270b3['name'])][_0xf9cd('0x2d')]==='reachable'||this[_0xf9cd('0x10')][util['format']('SIP/%s',_0x5270b3[_0xf9cd('0x37')])][_0xf9cd('0x2d')]==='unmonitored');};Fax['prototype'][_0xf9cd('0x6c')]=function(_0x3d8dbe,_0x19cc04){if(!this[_0xf9cd('0x6d')](_0x3d8dbe)){ut[_0xf9cd('0x46')](_0xf9cd('0x6e'),_['isNil'](_0x3d8dbe)?'':_0x3d8dbe[_0xf9cd('0x37')]+_0xf9cd('0x6f'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xf9cd('0x68')](_0x19cc04[_0xf9cd('0x7')])){ut[_0xf9cd('0x46')](_0xf9cd('0x70'),JSON[_0xf9cd('0x3d')](_0x19cc04));return{'isValid':![],'message':_0xf9cd('0x71')};}if(_[_0xf9cd('0x68')](_0x19cc04['path'])){ut['logger'](_0xf9cd('0x72'),JSON[_0xf9cd('0x3d')](_0x19cc04));return{'isValid':![],'message':_0xf9cd('0x73')};}return{'isValid':!![],'message':_0xf9cd('0x74')};};module['exports']=Fax;
\ No newline at end of file
+var _0x2b14=['execute','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','then','addVariables','ext','isNil','active','SIP/%s','reachable','unmonitored','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','moment','path','../../../config/logger','fax','../ami','./rpcDb','./channel','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','newexten','syncFaxStatus','syncReceiveFax','hangup','syncHangup','faxAccounts','hasOwnProperty','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','variable','value','prototype','channelstatedesc','operation','status','filename','info','\x20syncFaxStatus\x20','remotestationid','pagestransferred','transferrate','/var/opt/motion2/server/files/attachments/','message','create','parse','.pdf','application/pdf','notify','calleridnum','error','\x20notify\x20','stringify','\x20receiveFax\x20','syncOriginateResponse','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','catch','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','Trunk','isValid','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'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x2b14,0x1db));var _0x42b1=function(_0x2cf5cf,_0x3ab1d6){_0x2cf5cf=_0x2cf5cf-0x0;var _0x581e8a=_0x2b14[_0x2cf5cf];return _0x581e8a;};'use strict';var util=require(_0x42b1('0x0'));var _=require(_0x42b1('0x1'));var BPromise=require('bluebird');var uuid=require(_0x42b1('0x2'));var moment=require(_0x42b1('0x3'));var path=require(_0x42b1('0x4'));var tiff2pdf=require('tiff2pdf');var gs=require('./util/gs');var logger=require(_0x42b1('0x5'))(_0x42b1('0x6'));var ami=require(_0x42b1('0x7'));var rpcDb=require(_0x42b1('0x8'));var Channel=require(_0x42b1('0x9'));var ut=require('./util/util');var Action=require(_0x42b1('0xa'));var faxAccount=require(_0x42b1('0xb'));var attachment=require(_0x42b1('0xc'));var faxMessage=require(_0x42b1('0xd'));function Fax(_0x9292b8){this[_0x42b1('0xe')]={};this['faxAccounts']=_0x9292b8['faxAccounts'];this[_0x42b1('0xf')]=_0x9292b8[_0x42b1('0xf')];this[_0x42b1('0x10')]={};ami['on'](_0x42b1('0x11'),this[_0x42b1('0x12')][_0x42b1('0x13')](this));ami['on'](_0x42b1('0x14'),this[_0x42b1('0x15')][_0x42b1('0x13')](this));ami['on'](_0x42b1('0x16'),this['syncNewState'][_0x42b1('0x13')](this));ami['on'](_0x42b1('0x17'),this['syncNewExten']['bind'](this));ami['on']('faxstatus',this[_0x42b1('0x18')][_0x42b1('0x13')](this));ami['on']('receivefax',this[_0x42b1('0x19')][_0x42b1('0x13')](this));ami['on'](_0x42b1('0x1a'),this[_0x42b1('0x1b')]['bind'](this));ami['on']('originateresponse',this['syncOriginateResponse']['bind'](this));}Fax['prototype'][_0x42b1('0x12')]=function(_0x16d950){if(_0x16d950['context']==='from-voip-provider'){for(var _0x459ed9 in this['faxAccounts']){if(this[_0x42b1('0x1c')][_0x42b1('0x1d')](_0x459ed9)){if(_0x16d950['exten']===this[_0x42b1('0x1c')][_0x459ed9][_0x42b1('0x1e')]){this[_0x42b1('0xe')][_0x16d950[_0x42b1('0x1f')]]={};this[_0x42b1('0xe')][_0x16d950[_0x42b1('0x1f')]][_0x42b1('0x20')]=_0x16d950[_0x42b1('0x20')];this[_0x42b1('0xe')][_0x16d950[_0x42b1('0x1f')]]['id']=this[_0x42b1('0x1c')][_0x459ed9]['id'];this[_0x42b1('0xe')][_0x16d950[_0x42b1('0x1f')]][_0x42b1('0x21')]=this[_0x42b1('0x1c')][_0x459ed9]['name'];logger['info'](_0x16d950[_0x42b1('0x1f')],_0x42b1('0x22'));}}}}if(this[_0x42b1('0x10')][_0x16d950[_0x42b1('0x1f')]]){this[_0x42b1('0xe')][_0x16d950[_0x42b1('0x1f')]]={};this[_0x42b1('0xe')][_0x16d950[_0x42b1('0x1f')]][_0x42b1('0x20')]=_0x16d950[_0x42b1('0x20')];logger['info'](_0x16d950['uniqueid'],'\x20syncNewchannel\x20');}};Fax['prototype']['syncVarSet']=function(_0x134a0a){if(this[_0x42b1('0xe')][_0x134a0a[_0x42b1('0x1f')]]){for(var _0x253e74 in _0x134a0a[_0x42b1('0x23')]){if(_0x134a0a[_0x42b1('0x23')][_0x42b1('0x1d')](_0x253e74)){this[_0x42b1('0xe')][_0x134a0a[_0x42b1('0x1f')]][_0x253e74]=_0x134a0a[_0x42b1('0x24')];}}}};Fax[_0x42b1('0x25')]['syncNewState']=function(_0x91d79a){if(this[_0x42b1('0xe')][_0x91d79a[_0x42b1('0x1f')]]){this[_0x42b1('0xe')][_0x91d79a[_0x42b1('0x1f')]]['channelstate']=_0x91d79a['channelstate'];this[_0x42b1('0xe')][_0x91d79a['uniqueid']]['channelstatedesc']=_0x91d79a[_0x42b1('0x26')];}};Fax[_0x42b1('0x25')]['syncNewExten']=function(_0x4737e3){if(this['channels'][_0x4737e3[_0x42b1('0x1f')]]){for(var _0x446044 in _0x4737e3[_0x42b1('0x23')]){if(_0x4737e3[_0x42b1('0x23')][_0x42b1('0x1d')](_0x446044)){this[_0x42b1('0xe')][_0x4737e3[_0x42b1('0x1f')]][_0x446044]=_0x4737e3[_0x42b1('0x24')];}}}};Fax['prototype'][_0x42b1('0x18')]=function(_0x52624a){if(this['channels'][_0x52624a[_0x42b1('0x1f')]]){this['channels'][_0x52624a[_0x42b1('0x1f')]][_0x42b1('0x27')]=_0x52624a[_0x42b1('0x27')];this[_0x42b1('0xe')][_0x52624a[_0x42b1('0x1f')]][_0x42b1('0x28')]=_0x52624a[_0x42b1('0x28')];this[_0x42b1('0xe')][_0x52624a[_0x42b1('0x1f')]][_0x42b1('0x1e')]=_0x52624a[_0x42b1('0x1e')];this[_0x42b1('0xe')][_0x52624a[_0x42b1('0x1f')]]['filename']=_0x52624a[_0x42b1('0x29')];logger[_0x42b1('0x2a')](_0x52624a[_0x42b1('0x1f')],_0x42b1('0x2b'));}};Fax[_0x42b1('0x25')]['syncReceiveFax']=function(_0x27b315){var _0x592eee=this;if(this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]]){var _0x2d1f31=this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]]['id'];this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]][_0x42b1('0x2c')]=_0x27b315[_0x42b1('0x2c')];this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]][_0x42b1('0x2d')]=_0x27b315[_0x42b1('0x2d')];this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]][_0x42b1('0x1e')]=_0x27b315['localstationid'];this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]]['resolution']=_0x27b315['resolution'];this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]]['transferrate']=_0x27b315[_0x42b1('0x2e')];this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]]['filename']=_0x27b315[_0x42b1('0x29')];this['channels'][_0x27b315[_0x42b1('0x1f')]]['calleridnum']=_0x27b315['calleridnum'];if(this[_0x42b1('0xe')][_0x27b315[_0x42b1('0x1f')]][_0x42b1('0x2d')]>0x0){tiff2pdf(_0x27b315[_0x42b1('0x29')],_0x42b1('0x2f'),function(_0x1087a6){logger[_0x42b1('0x2a')](_0x27b315[_0x42b1('0x1f')],'\x20result\x20conversion\x20file\x20',_0x1087a6[_0x42b1('0x30')]);attachment[_0x42b1('0x31')]({'name':path[_0x42b1('0x32')](_0x27b315[_0x42b1('0x29')])['name'],'basename':path['parse'](_0x27b315[_0x42b1('0x29')])['name']+_0x42b1('0x33'),'type':_0x42b1('0x34')})['then'](function(_0x381533){faxAccount[_0x42b1('0x35')](_0x2d1f31,{'from':_0x27b315[_0x42b1('0x36')],'mapKey':_0x42b1('0x6'),'body':path[_0x42b1('0x32')](_0x27b315[_0x42b1('0x29')])[_0x42b1('0x21')]+_0x42b1('0x33'),'AttachmentId':_0x381533['id']})['catch'](function(_0x533b37){logger[_0x42b1('0x37')](_0x27b315[_0x42b1('0x1f')],_0x42b1('0x38'),JSON[_0x42b1('0x39')](_0x533b37));});})['catch'](function(_0x2942e9){logger[_0x42b1('0x37')](_0x27b315[_0x42b1('0x1f')],_0x42b1('0x3a'),JSON['stringify'](_0x2942e9));});});}logger[_0x42b1('0x2a')](_0x27b315[_0x42b1('0x1f')],'\x20receiveFax\x20');}};Fax[_0x42b1('0x25')][_0x42b1('0x3b')]=function(_0x329456){if(this[_0x42b1('0x10')][_0x329456[_0x42b1('0x1f')]]){_['merge'](this[_0x42b1('0xe')][_0x329456['uniqueid']],_[_0x42b1('0x3c')](_0x329456,[_0x42b1('0x3d'),_0x42b1('0x3e')]));}};function updateStatus(_0x2c1e37){if(_0x2c1e37[_0x42b1('0x3f')]){faxMessage[_0x42b1('0x40')](_0x2c1e37[_0x42b1('0x3f')],{'failMessage':_0x42b1('0x41')})['then'](function(_0x2e744f){ut[_0x42b1('0x42')](_0x42b1('0x43'),_0x2e744f);})[_0x42b1('0x44')](function(_0x1f61d2){ut['logger'](_0x42b1('0x45'),_0x1f61d2);});}else{ut['logger'](_0x42b1('0x46'));}}Fax[_0x42b1('0x25')][_0x42b1('0x47')]=function(_0x14b8b2,_0x5d3b3c,_0x33934d){var _0x3792b2=this;var _0x41e722={};if(_0x5d3b3c){_0x41e722={'read':_0x5d3b3c};}else{_0x41e722={'failMessage':_0x33934d};}if(this['actions'][_0x14b8b2][_0x42b1('0x3f')]){faxMessage[_0x42b1('0x40')](this['actions'][_0x14b8b2][_0x42b1('0x3f')],_0x41e722)['then'](function(_0x4e58bd){ut[_0x42b1('0x42')]('[Fax][Message][Updated]',_0x4e58bd);})[_0x42b1('0x44')](function(_0x4031ef){ut[_0x42b1('0x42')](_0x42b1('0x48'),_0x4031ef);})[_0x42b1('0x49')](function(){delete _0x3792b2[_0x42b1('0xe')][_0x14b8b2];delete _0x3792b2[_0x42b1('0x10')][_0x14b8b2];});}else{ut[_0x42b1('0x42')](_0x42b1('0x4a'));delete this[_0x42b1('0xe')][_0x14b8b2];delete this[_0x42b1('0x10')][_0x14b8b2];}};Fax[_0x42b1('0x25')]['syncHangup']=function(_0x3dcf57){var _0x2338b4=this;if(this['channels'][_0x3dcf57[_0x42b1('0x1f')]]){if(this[_0x42b1('0x10')][_0x3dcf57[_0x42b1('0x1f')]]){this[_0x42b1('0xe')][_0x3dcf57[_0x42b1('0x1f')]]['id']=this[_0x42b1('0x10')][_0x3dcf57[_0x42b1('0x1f')]]['id'];this[_0x42b1('0xe')][_0x3dcf57[_0x42b1('0x1f')]]['name']=this[_0x42b1('0x10')][_0x3dcf57[_0x42b1('0x1f')]]['name'];}logger[_0x42b1('0x2a')](_0x3dcf57[_0x42b1('0x1f')],this['actions'][_0x3dcf57['uniqueid']]?'\x20hangup\x20sendFile\x20':'\x20hangup\x20faxRiceive\x20',JSON[_0x42b1('0x39')](this['channels'][_0x3dcf57[_0x42b1('0x1f')]]));if(this[_0x42b1('0x10')][_0x3dcf57['uniqueid']]){if(this[_0x42b1('0xe')][_0x3dcf57['uniqueid']][_0x42b1('0x4b')]>0x0&&this[_0x42b1('0xe')][_0x3dcf57[_0x42b1('0x1f')]]['faxstatus']===_0x42b1('0x4c')){this[_0x42b1('0x47')](_0x3dcf57[_0x42b1('0x1f')],!![]);}else{this[_0x42b1('0x47')](_0x3dcf57[_0x42b1('0x1f')],![],this['channels'][_0x3dcf57['uniqueid']][_0x42b1('0x4d')]?_0x42b1('0x4e')+this['channels'][_0x3dcf57[_0x42b1('0x1f')]][_0x42b1('0x4d')]:'SENDING\x20FAILED');}}}};Fax['prototype'][_0x42b1('0x4f')]=function(_0x1a197c){var _0x2e5b12=this;return new BPromise(function(_0x4d26ef,_0x6a8a60){_0x2e5b12[_0x42b1('0x50')](_0x1a197c,_0x2e5b12[_0x42b1('0x1c')][_0x1a197c[_0x42b1('0x51')]])['then'](function(_0x1896b7){ut[_0x42b1('0x42')](_0x42b1('0x52'),_0x1896b7);_0x4d26ef(ut[_0x42b1('0x30')](_0x42b1('0x53')));})[_0x42b1('0x44')](function(_0x3edbe7){ut[_0x42b1('0x42')]('[Fax][execOriginate][failure]',_0x3edbe7);updateStatus(_0x1a197c);_0x6a8a60(ut[_0x42b1('0x30')]('Fax\x20failed'));});});};Fax[_0x42b1('0x25')][_0x42b1('0x54')]=function(_0xd37566){var _0x21dda2=this;return new BPromise(function(_0x47e853,_0x2e8c36){var _0x2da733=_0x21dda2[_0x42b1('0x55')](_0x21dda2['faxAccounts'][_0xd37566[_0x42b1('0x51')]][_0x42b1('0x56')],_0xd37566);if(_0x2da733[_0x42b1('0x57')]){_0x47e853(ut['message']('Trunk\x20Reachable'));}else{_0x2e8c36(ut[_0x42b1('0x30')](_0x2da733[_0x42b1('0x30')]));}});};function originate(_0x19081b,_0x16e7a4,_0x49dcf1){return new BPromise(function(_0x287476,_0x60e48c){if(_0x49dcf1){var _0x130665=util[_0x42b1('0x58')](_0x42b1('0x59'),path['parse'](_0x19081b[_0x42b1('0x4')])['name'],_0x19081b[_0x42b1('0x4')]);gs[_0x42b1('0x5a')](_0x130665)['then'](function(){_0x19081b[_0x42b1('0x4')]=util[_0x42b1('0x58')]('%s/%s.tif',path[_0x42b1('0x32')](_0x19081b['path'])[_0x42b1('0x5b')],path[_0x42b1('0x32')](_0x19081b[_0x42b1('0x4')])[_0x42b1('0x21')]);_0x16e7a4[_0x42b1('0x5c')]=_0x19081b[_0x42b1('0x4')];ut[_0x42b1('0x42')](_0x42b1('0x5d'),'');ami[_0x42b1('0x5e')](ut[_0x42b1('0x5f')](_0x19081b,_0x16e7a4))[_0x42b1('0x60')](function(_0x53f652){_0x287476(_0x53f652);})[_0x42b1('0x44')](function(_0x36697d){_0x60e48c(_0x36697d);});})[_0x42b1('0x44')](function(_0xcf594){_0x60e48c(_0xcf594);});}else{ami[_0x42b1('0x5e')](ut[_0x42b1('0x5f')](_0x19081b,_0x16e7a4))['then'](function(_0x3e5539){_0x287476(_0x3e5539);})['catch'](function(_0x3447eb){_0x60e48c(_0x3447eb);});}});}Fax[_0x42b1('0x25')][_0x42b1('0x50')]=function(_0x230585,_0x53cc41){var _0x291eca=this;return new BPromise(function(_0xfef5f5,_0x4f6664){var _0x4848b5=uuid['v4']();var _0x213e30=ut[_0x42b1('0x61')](_0x230585,_0x53cc41);_0x291eca[_0x42b1('0x10')][_0x4848b5]=new Action(_0x4848b5,_0x53cc41,_0x230585);var _0x35a289=_0x291eca[_0x42b1('0x10')][_0x4848b5];if(path['parse'](_0x230585[_0x42b1('0x4')])[_0x42b1('0x62')]===_0x42b1('0x33')){originate(_0x35a289,_0x213e30,!![])[_0x42b1('0x60')](function(_0x35f4d2){_0xfef5f5(_0x35f4d2);})['catch'](function(_0x453213){_0x4f6664(_0x453213);});}else{originate(_0x35a289,_0x213e30,![])[_0x42b1('0x60')](function(_0x38c4a7){_0xfef5f5(_0x38c4a7);})[_0x42b1('0x44')](function(_0x2d49e4){_0x4f6664(_0x2d49e4);});}});};Fax[_0x42b1('0x25')]['isTrunkReachable']=function(_0x27c036){return!_[_0x42b1('0x63')](_0x27c036)&&!_[_0x42b1('0x63')](_0x27c036['name'])&&!_[_0x42b1('0x63')](_0x27c036['active'])&&_0x27c036[_0x42b1('0x64')]&&!_[_0x42b1('0x63')](this['trunks'][util['format']('SIP/%s',_0x27c036[_0x42b1('0x21')])])&&!_[_0x42b1('0x63')](this[_0x42b1('0xf')][util['format']('SIP/%s',_0x27c036[_0x42b1('0x21')])][_0x42b1('0x28')])&&(this['trunks'][util[_0x42b1('0x58')](_0x42b1('0x65'),_0x27c036['name'])][_0x42b1('0x28')]===_0x42b1('0x66')||this[_0x42b1('0xf')][util['format'](_0x42b1('0x65'),_0x27c036[_0x42b1('0x21')])][_0x42b1('0x28')]===_0x42b1('0x67'));};Fax['prototype'][_0x42b1('0x55')]=function(_0xa5c647,_0x110840){if(!this[_0x42b1('0x68')](_0xa5c647)){ut[_0x42b1('0x42')](_0x42b1('0x69'),_[_0x42b1('0x63')](_0xa5c647)?'':_0xa5c647[_0x42b1('0x21')]+_0x42b1('0x6a'));return{'isValid':![],'message':_0x42b1('0x6b')};}if(_[_0x42b1('0x63')](_0x110840['fax'])){ut[_0x42b1('0x42')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x42b1('0x39')](_0x110840));return{'isValid':![],'message':_0x42b1('0x6c')};}if(_[_0x42b1('0x63')](_0x110840[_0x42b1('0x4')])){ut[_0x42b1('0x42')](_0x42b1('0x6d'),JSON[_0x42b1('0x39')](_0x110840));return{'isValid':![],'message':_0x42b1('0x6e')};}return{'isValid':!![],'message':_0x42b1('0x6f')};};module[_0x42b1('0x70')]=Fax;
\ No newline at end of file
index adeccff..96a6660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b2b=['error','inspect','notify','then','bluebird','lodash','../rpc/faxAccount'];(function(_0x5c1d9,_0x1a295a){var _0x392ee6=function(_0x32828e){while(--_0x32828e){_0x5c1d9['push'](_0x5c1d9['shift']());}};_0x392ee6(++_0x1a295a);}(_0x4b2b,0x66));var _0xb4b2=function(_0x1aa001,_0x1d703c){_0x1aa001=_0x1aa001-0x0;var _0x300e12=_0x4b2b[_0x1aa001];return _0x300e12;};'use strict';var util=require('util');var BPromise=require(_0xb4b2('0x0'));var logger=require('../../../config/logger')('preview');var _=require(_0xb4b2('0x1'));var faxAccount=require(_0xb4b2('0x2'));function loggerCatch(_0x3e7007){return function(_0x1f62d3){logger[_0xb4b2('0x3')](_0x3e7007,util[_0xb4b2('0x4')](_0x1f62d3,{'showHidden':![],'depth':null}));};}exports[_0xb4b2('0x5')]=function(_0x3527a8,_0x3dc82d){return BPromise['resolve']()[_0xb4b2('0x6')](faxAccount['notify'](_0x3527a8,_0x3dc82d))['catch'](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0xc698=['notify','catch','[Notify]\x20','util','../../../config/logger','preview','lodash','error','inspect'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0xc698,0x17d));var _0x8c69=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xc698[_0x311c35];return _0x5cc50c;};'use strict';var util=require(_0x8c69('0x0'));var BPromise=require('bluebird');var logger=require(_0x8c69('0x1'))(_0x8c69('0x2'));var _=require(_0x8c69('0x3'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x140b36){return function(_0x27199d){logger[_0x8c69('0x4')](_0x140b36,util[_0x8c69('0x5')](_0x27199d,{'showHidden':![],'depth':null}));};}exports[_0x8c69('0x6')]=function(_0x22c728,_0x4eb057){return BPromise['resolve']()['then'](faxAccount[_0x8c69('0x6')](_0x22c728,_0x4eb057))[_0x8c69('0x7')](loggerCatch(_0x8c69('0x8')));};
\ No newline at end of file
index 93f1dd4..9df6cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e75=['execute','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','child_process','exec'];(function(_0x1d171d,_0x500054){var _0x27b651=function(_0x24e272){while(--_0x24e272){_0x1d171d['push'](_0x1d171d['shift']());}};_0x27b651(++_0x500054);}(_0x6e75,0x100));var _0x56e7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e75[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x56e7('0x0'));var logger=require(_0x56e7('0x1'))(_0x56e7('0x2'));var BPromise=require('bluebird');var exec=require(_0x56e7('0x3'))[_0x56e7('0x4')];exports[_0x56e7('0x5')]=function(_0x4764fa){return new BPromise(function(_0x1da270,_0xf00c93){exec(_0x4764fa,function(_0x2d49f9,_0x40088c,_0xe9cae6){logger['info'](_0x56e7('0x6'),_0x40088c);if(_0x2d49f9){logger['info'](_0x56e7('0x6'),_0x56e7('0x7'),util[_0x56e7('0x8')](_0x2d49f9,{'showHidden':![],'depth':null}),_0x40088c,_0xe9cae6);_0xf00c93(_0x2d49f9);}_0x1da270(_0x40088c);});});};
\ No newline at end of file
+var _0x824c=['info','\x20Error\x20:','inspect','util','../../../../config/logger','fax','child_process'];(function(_0xb4bbd8,_0x48dea5){var _0x4db714=function(_0x4c79d5){while(--_0x4c79d5){_0xb4bbd8['push'](_0xb4bbd8['shift']());}};_0x4db714(++_0x48dea5);}(_0x824c,0xc0));var _0xc824=function(_0x4d86c0,_0x581fad){_0x4d86c0=_0x4d86c0-0x0;var _0xface66=_0x824c[_0x4d86c0];return _0xface66;};'use strict';var util=require(_0xc824('0x0'));var logger=require(_0xc824('0x1'))(_0xc824('0x2'));var BPromise=require('bluebird');var exec=require(_0xc824('0x3'))['exec'];exports['execute']=function(_0x269151){return new BPromise(function(_0x5f479a,_0x5ccf0e){exec(_0x269151,function(_0x300e4b,_0x171b2e,_0x2ab041){logger[_0xc824('0x4')]('Exec\x20gs',_0x171b2e);if(_0x300e4b){logger[_0xc824('0x4')]('Exec\x20gs',_0xc824('0x5'),util[_0xc824('0x6')](_0x300e4b,{'showHidden':![],'depth':null}),_0x171b2e,_0x2ab041);_0x5ccf0e(_0x300e4b);}_0x5f479a(_0x171b2e);});});};
\ No newline at end of file
index 6cb6f6f..e697160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f1=['util','lodash','moment','../../../../config/logger','fax','logger','info','inspect','headerinfo','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','from-sip','localstationid'];(function(_0x3f87f3,_0x2d69cf){var _0x3fabac=function(_0x3dc890){while(--_0x3dc890){_0x3f87f3['push'](_0x3f87f3['shift']());}};_0x3fabac(++_0x2d69cf);}(_0x83f1,0x1cc));var _0x183f=function(_0x4e065d,_0x4990db){_0x4e065d=_0x4e065d-0x0;var _0x1a1e78=_0x83f1[_0x4e065d];return _0x1a1e78;};'use strict';var util=require(_0x183f('0x0'));var _=require(_0x183f('0x1'));var moment=require(_0x183f('0x2'));var logger=require(_0x183f('0x3'))(_0x183f('0x4'));exports['message']=function(_0x52688c){return{'message':_0x52688c};};exports[_0x183f('0x5')]=function(_0x2668ca,_0x7f265){logger[_0x183f('0x6')](_0x2668ca,util[_0x183f('0x7')](_0x7f265,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x5c1cbd,_0xf702f5){var _0x364cc4={'XMF-ECM':_0xf702f5['ecm'],'XMF-HEADERINFO':_0xf702f5[_0x183f('0x8')],'XMF-MINRATE':_0xf702f5['minrate'],'XMF-MAXRATE':_0xf702f5[_0x183f('0x9')],'XMF-MODEM':util[_0x183f('0xa')](_0x183f('0xb'),_0xf702f5[_0x183f('0xc')]),'XMF-GATEWAY':_0xf702f5[_0x183f('0xd')],'XMF-FAXDETECT':_0xf702f5[_0x183f('0xe')],'XMF-T38TIMEOUT':_0xf702f5[_0x183f('0xf')],'XMF-LOCALSTATIONID':_0xf702f5['localstationid'],'XMF-PATH':_0x5c1cbd[_0x183f('0x10')]};return _0x364cc4;};exports[_0x183f('0x11')]=function(_0x3a99ee,_0x178ae7){return{'actionid':_0x3a99ee[_0x183f('0x12')],'action':_0x183f('0x13'),'channel':_0x3a99ee[_0x183f('0x14')],'Exten':'xcally-motion-fax','Context':_0x183f('0x15'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x3a99ee[_0x183f('0x8')]?_0x3a99ee[_0x183f('0x8')]:'',_0x3a99ee[_0x183f('0x16')]),'variable':_0x178ae7,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3a99ee[_0x183f('0x12')]};};
\ No newline at end of file
+var _0x9f92=['uniqueid','originate','xcally-motion-fax','\x22%s\x22\x20<%s>','localstationid','util','moment','../../../../config/logger','fax','logger','info','inspect','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction'];(function(_0x4cb5bc,_0x139dc8){var _0xaa4f82=function(_0xe2aa09){while(--_0xe2aa09){_0x4cb5bc['push'](_0x4cb5bc['shift']());}};_0xaa4f82(++_0x139dc8);}(_0x9f92,0x125));var _0x29f9=function(_0x51eb91,_0x4799d5){_0x51eb91=_0x51eb91-0x0;var _0x1c4fc4=_0x9f92[_0x51eb91];return _0x1c4fc4;};'use strict';var util=require(_0x29f9('0x0'));var _=require('lodash');var moment=require(_0x29f9('0x1'));var logger=require(_0x29f9('0x2'))(_0x29f9('0x3'));exports['message']=function(_0x38e3fc){return{'message':_0x38e3fc};};exports[_0x29f9('0x4')]=function(_0x38fb6c,_0x4fba16){logger[_0x29f9('0x5')](_0x38fb6c,util[_0x29f9('0x6')](_0x4fba16,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x12a09e,_0x135d6d){var _0x5cce01={'XMF-ECM':_0x135d6d[_0x29f9('0x7')],'XMF-HEADERINFO':_0x135d6d[_0x29f9('0x8')],'XMF-MINRATE':_0x135d6d[_0x29f9('0x9')],'XMF-MAXRATE':_0x135d6d[_0x29f9('0xa')],'XMF-MODEM':util[_0x29f9('0xb')](_0x29f9('0xc'),_0x135d6d[_0x29f9('0xd')]),'XMF-GATEWAY':_0x135d6d[_0x29f9('0xe')],'XMF-FAXDETECT':_0x135d6d[_0x29f9('0xf')],'XMF-T38TIMEOUT':_0x135d6d[_0x29f9('0x10')],'XMF-LOCALSTATIONID':_0x135d6d['localstationid'],'XMF-PATH':_0x12a09e[_0x29f9('0x11')]};return _0x5cce01;};exports[_0x29f9('0x12')]=function(_0x1ec142,_0x1708da){return{'actionid':_0x1ec142[_0x29f9('0x13')],'action':_0x29f9('0x14'),'channel':_0x1ec142['channel'],'Exten':_0x29f9('0x15'),'Context':'from-sip','Priority':'1','callerid':util[_0x29f9('0xb')](_0x29f9('0x16'),_0x1ec142[_0x29f9('0x8')]?_0x1ec142[_0x29f9('0x8')]:'',_0x1ec142[_0x29f9('0x17')]),'variable':_0x1708da,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x1ec142[_0x29f9('0x13')]};};
\ No newline at end of file
index 246ad77..862b6ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78a9=['get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','log','listen','sync','bluebird','moment','./server','./realtime','./acw','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/servicenow','./rpc/integrations/dynamics365'];(function(_0x113ba9,_0xc4d2ba){var _0x4a8e33=function(_0x21fcda){while(--_0x21fcda){_0x113ba9['push'](_0x113ba9['shift']());}};_0x4a8e33(++_0xc4d2ba);}(_0x78a9,0x1ea));var _0x978a=function(_0x318a7f,_0x1a74f3){_0x318a7f=_0x318a7f-0x0;var _0x388423=_0x78a9[_0x318a7f];return _0x388423;};'use strict';var BPromise=require(_0x978a('0x0'));var util=require('util');var moment=require(_0x978a('0x1'));var server=require(_0x978a('0x2'));var Realtime=require(_0x978a('0x3'));var Report=require('./report');var Acw=require(_0x978a('0x4'));var Trigger=require('./trigger');var Dialer=require(_0x978a('0x5'));var Preview=require(_0x978a('0x6'));var Fax=require(_0x978a('0x7'));var user=require('./rpc/user');var voiceQueue=require(_0x978a('0x8'));var voiceQueueReport=require(_0x978a('0x9'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x978a('0xa'));var trigger=require(_0x978a('0xb'));var template=require('./rpc/template');var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x978a('0xc'));var voiceExtension=require(_0x978a('0xd'));var faxAccount=require(_0x978a('0xe'));var zendesk=require(_0x978a('0xf'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x978a('0x10'));var freshdesk=require(_0x978a('0x11'));var desk=require(_0x978a('0x12'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x978a('0x13'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x978a('0x14'));var dynamics365=require(_0x978a('0x15'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x978a('0x16')](_0x978a('0x17'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x978a('0x16')](_0x978a('0x17'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x978a('0x18')]()['then'](user[_0x978a('0x19')]())[_0x978a('0x1a')](realtime[_0x978a('0x1b')]())[_0x978a('0x1a')](user[_0x978a('0x1c')]())[_0x978a('0x1a')](realtime[_0x978a('0x1d')]())[_0x978a('0x1a')](trunk['getTrunks']())[_0x978a('0x1a')](realtime[_0x978a('0x1e')]())[_0x978a('0x1a')](voiceQueue[_0x978a('0x1f')]())[_0x978a('0x1a')](realtime[_0x978a('0x20')]())['then'](trigger[_0x978a('0x21')]())['then'](realtime[_0x978a('0x22')]())['then'](template[_0x978a('0x23')]())['then'](realtime[_0x978a('0x24')]())[_0x978a('0x1a')](zendesk[_0x978a('0x25')]())[_0x978a('0x1a')](realtime['initZendeskAccounts']())[_0x978a('0x1a')](salesforce['getSalesforceAccounts']())[_0x978a('0x1a')](realtime[_0x978a('0x26')]())[_0x978a('0x1a')](sugarcrm['getSugarcrmAccounts']())[_0x978a('0x1a')](realtime[_0x978a('0x27')]())[_0x978a('0x1a')](freshdesk[_0x978a('0x28')]())[_0x978a('0x1a')](realtime[_0x978a('0x29')]())['then'](desk['getDeskAccounts']())[_0x978a('0x1a')](realtime['initDeskAccounts']())[_0x978a('0x1a')](zoho['getZohoAccounts']())[_0x978a('0x1a')](realtime[_0x978a('0x2a')]())['then'](vtiger[_0x978a('0x2b')]())[_0x978a('0x1a')](realtime['initVtigerAccounts']())[_0x978a('0x1a')](freshsales[_0x978a('0x2c')]())[_0x978a('0x1a')](realtime[_0x978a('0x2d')]())[_0x978a('0x1a')](servicenow[_0x978a('0x2e')]())[_0x978a('0x1a')](realtime['initServicenowAccounts']())['then'](dynamics365[_0x978a('0x2f')]())[_0x978a('0x1a')](realtime[_0x978a('0x30')]())[_0x978a('0x1a')](campaign[_0x978a('0x31')]())[_0x978a('0x1a')](realtime[_0x978a('0x32')]())[_0x978a('0x1a')](voiceExtension[_0x978a('0x33')]())[_0x978a('0x1a')](realtime[_0x978a('0x34')]())[_0x978a('0x1a')](faxAccount['getFaxAccounts']())['then'](realtime[_0x978a('0x35')]())[_0x978a('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0x978a('0x18')]()[_0x978a('0x1a')](voiceQueueReport[_0x978a('0x36')]())[_0x978a('0x1a')](realtime[_0x978a('0x37')]())[_0x978a('0x1a')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x978a('0x1a')](realtime[_0x978a('0x38')]())[_0x978a('0x1a')](cmHopperHistory[_0x978a('0x39')]())[_0x978a('0x1a')](realtime[_0x978a('0x3a')]())[_0x978a('0x1a')](voiceCallReport[_0x978a('0x3b')]())[_0x978a('0x1a')](realtime['initVoiceCallReports']())[_0x978a('0x1a')](function(_0x175945){})[_0x978a('0x3c')](function(_0x828eb){console[_0x978a('0x3d')](_0x828eb);});}function main(){return server[_0x978a('0x3e')](realtime,preview,fax)[_0x978a('0x1a')](function(_0x3efb4a){return initRealtime();})['then'](function(){return initParams();})[_0x978a('0x1a')](function(){report[_0x978a('0x3f')]();setInterval(initRealtime,0x1388);})[_0x978a('0x3c')](function(_0x15873a){console[_0x978a('0x3d')](_0x15873a);});}main();
\ No newline at end of file
+var _0xa8a2=['initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','sync','bluebird','util','moment','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initSalesforceAccounts'];(function(_0x2c5c65,_0x36bc1d){var _0x22c000=function(_0x463c9d){while(--_0x463c9d){_0x2c5c65['push'](_0x2c5c65['shift']());}};_0x22c000(++_0x36bc1d);}(_0xa8a2,0x1b6));var _0x2a8a=function(_0x46184a,_0x271e37){_0x46184a=_0x46184a-0x0;var _0x14f1dd=_0xa8a2[_0x46184a];return _0x14f1dd;};'use strict';var BPromise=require(_0x2a8a('0x0'));var util=require(_0x2a8a('0x1'));var moment=require(_0x2a8a('0x2'));var server=require('./server');var Realtime=require(_0x2a8a('0x3'));var Report=require(_0x2a8a('0x4'));var Acw=require(_0x2a8a('0x5'));var Trigger=require(_0x2a8a('0x6'));var Dialer=require('./dialer');var Preview=require(_0x2a8a('0x7'));var Fax=require(_0x2a8a('0x8'));var user=require('./rpc/user');var voiceQueue=require(_0x2a8a('0x9'));var voiceQueueReport=require(_0x2a8a('0xa'));var voiceCallReport=require(_0x2a8a('0xb'));var trunk=require(_0x2a8a('0xc'));var trigger=require(_0x2a8a('0xd'));var template=require(_0x2a8a('0xe'));var cmHopperHistory=require(_0x2a8a('0xf'));var campaign=require(_0x2a8a('0x10'));var voiceExtension=require(_0x2a8a('0x11'));var faxAccount=require(_0x2a8a('0x12'));var zendesk=require(_0x2a8a('0x13'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x2a8a('0x14'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x2a8a('0x15'));var zoho=require(_0x2a8a('0x16'));var vtiger=require(_0x2a8a('0x17'));var freshsales=require(_0x2a8a('0x18'));var servicenow=require(_0x2a8a('0x19'));var dynamics365=require(_0x2a8a('0x1a'));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 isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x2a8a('0x1b')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x2a8a('0x1b')](_0x2a8a('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x2a8a('0x1d')]()[_0x2a8a('0x1e')](user[_0x2a8a('0x1f')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x20')]())['then'](user[_0x2a8a('0x21')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x22')]())[_0x2a8a('0x1e')](trunk[_0x2a8a('0x23')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x24')]())['then'](voiceQueue[_0x2a8a('0x25')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x26')]())[_0x2a8a('0x1e')](trigger[_0x2a8a('0x27')]())['then'](realtime[_0x2a8a('0x28')]())['then'](template[_0x2a8a('0x29')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x2a')]())[_0x2a8a('0x1e')](zendesk[_0x2a8a('0x2b')]())[_0x2a8a('0x1e')](realtime['initZendeskAccounts']())[_0x2a8a('0x1e')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x2a8a('0x2c')]())[_0x2a8a('0x1e')](sugarcrm['getSugarcrmAccounts']())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x2d')]())[_0x2a8a('0x1e')](freshdesk['getFreshdeskAccounts']())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x2e')]())[_0x2a8a('0x1e')](desk[_0x2a8a('0x2f')]())['then'](realtime['initDeskAccounts']())[_0x2a8a('0x1e')](zoho[_0x2a8a('0x30')]())['then'](realtime[_0x2a8a('0x31')]())[_0x2a8a('0x1e')](vtiger[_0x2a8a('0x32')]())[_0x2a8a('0x1e')](realtime['initVtigerAccounts']())[_0x2a8a('0x1e')](freshsales[_0x2a8a('0x33')]())[_0x2a8a('0x1e')](realtime['initFreshsalesAccounts']())[_0x2a8a('0x1e')](servicenow[_0x2a8a('0x34')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x35')]())[_0x2a8a('0x1e')](dynamics365[_0x2a8a('0x36')]())[_0x2a8a('0x1e')](realtime['initDynamics365Accounts']())[_0x2a8a('0x1e')](campaign[_0x2a8a('0x37')]())['then'](realtime[_0x2a8a('0x38')]())[_0x2a8a('0x1e')](voiceExtension['getVoiceExtensions']())['then'](realtime[_0x2a8a('0x39')]())[_0x2a8a('0x1e')](faxAccount[_0x2a8a('0x3a')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x3b')]())[_0x2a8a('0x1e')](function(){return realtime;});}function initParams(){return BPromise[_0x2a8a('0x1d')]()['then'](voiceQueueReport['getVoiceQueueReports']())['then'](realtime['initVoiceQueueReports']())[_0x2a8a('0x1e')](cmHopperHistory[_0x2a8a('0x3c')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x3d')]())[_0x2a8a('0x1e')](cmHopperHistory[_0x2a8a('0x3e')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x3f')]())[_0x2a8a('0x1e')](voiceCallReport[_0x2a8a('0x40')]())[_0x2a8a('0x1e')](realtime[_0x2a8a('0x41')]())[_0x2a8a('0x1e')](function(_0x570c44){})[_0x2a8a('0x42')](function(_0x5c8f42){console[_0x2a8a('0x43')](_0x5c8f42);});}function main(){return server['listen'](realtime,preview,fax)[_0x2a8a('0x1e')](function(_0x20a9d8){return initRealtime();})[_0x2a8a('0x1e')](function(){return initParams();})['then'](function(){report[_0x2a8a('0x44')]();setInterval(initRealtime,0x1388);})[_0x2a8a('0x42')](function(_0x457301){console[_0x2a8a('0x43')](_0x457301);});}main();
\ No newline at end of file
index 29cb05f..b17c189 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(_0x5d1c9d,_0x8bb82d){var _0x8edfe4=function(_0x30fdc4){while(--_0x30fdc4){_0x5d1c9d['push'](_0x5d1c9d['shift']());}};_0x8edfe4(++_0x8bb82d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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 _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(_0x21f934,_0x4d0bc5){var _0x30dac2=function(_0x22f7c3){while(--_0x22f7c3){_0x21f934['push'](_0x21f934['shift']());}};_0x30dac2(++_0x4d0bc5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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
index 2e3294d..e9bbfe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db7=['dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','sendMessageOneNotActive','active','limitCalls','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry'];(function(_0x264a77,_0x5c9831){var _0x4c2673=function(_0x14ee50){while(--_0x14ee50){_0x264a77['push'](_0x264a77['shift']());}};_0x4c2673(++_0x5c9831);}(_0x1db7,0x71));var _0x71db=function(_0x1f1644,_0x65c7ed){_0x1f1644=_0x1f1644-0x0;var _0x28cffc=_0x1db7[_0x1f1644];return _0x28cffc;};'use strict';function Campaign(_0x5dc934){this['id']=_0x5dc934['id']||0x0;this[_0x71db('0x0')]=_0x5dc934[_0x71db('0x0')]||'';this[_0x71db('0x1')]=_0x5dc934[_0x71db('0x1')]||_0x71db('0x2');this[_0x71db('0x3')]=0x0;this['temp']=0x0;this[_0x71db('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x71db('0x5')]=!![];this['active']=_0x5dc934[_0x71db('0x6')];this[_0x71db('0x7')]=_0x5dc934[_0x71db('0x7')];this['dialTimezone']=_0x5dc934['dialTimezone']||null;this[_0x71db('0x8')]=_0x5dc934[_0x71db('0x8')]?_0x5dc934[_0x71db('0x8')]:null;this[_0x71db('0x9')]=_0x5dc934[_0x71db('0x9')];this[_0x71db('0xa')]=_0x5dc934[_0x71db('0xa')];this['dialOriginateTimeout']=_0x5dc934[_0x71db('0xb')]||0x1e;this['dialCongestionMaxRetry']=_0x5dc934['dialCongestionMaxRetry'];this[_0x71db('0xc')]=_0x5dc934[_0x71db('0xc')];this[_0x71db('0xd')]=_0x5dc934[_0x71db('0xd')];this['dialBusyRetryFrequency']=_0x5dc934[_0x71db('0xe')];this[_0x71db('0xf')]=_0x5dc934[_0x71db('0xf')];this[_0x71db('0x10')]=_0x5dc934[_0x71db('0x10')];this[_0x71db('0x11')]=_0x5dc934['dialGlobalMaxRetry'];this[_0x71db('0x12')]=_0x5dc934[_0x71db('0x12')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x5dc934[_0x71db('0x13')]||0x96;this['dialDropMaxRetry']=_0x5dc934[_0x71db('0x14')]||0x3;this[_0x71db('0x15')]=_0x5dc934[_0x71db('0x15')]||0x96;this[_0x71db('0x16')]=_0x5dc934[_0x71db('0x16')]||0x3;this[_0x71db('0x17')]=_0x5dc934[_0x71db('0x17')]||0x96;this[_0x71db('0x18')]=_0x5dc934[_0x71db('0x18')]||0x3;this[_0x71db('0x19')]=_0x5dc934[_0x71db('0x19')]||0x96;this[_0x71db('0x1a')]=_0x5dc934[_0x71db('0x1a')]||0x3;this[_0x71db('0x1b')]=_0x5dc934[_0x71db('0x1b')]||0x96;this[_0x71db('0x1c')]=_0x5dc934['dialOrderByScheduledAt']||'DESC';this[_0x71db('0x1d')]=_0x5dc934[_0x71db('0x1d')]||undefined;this[_0x71db('0x1e')]=_0x5dc934[_0x71db('0x1e')]||undefined;this['dialCutDigit']=_0x5dc934[_0x71db('0x1f')]||undefined;this[_0x71db('0x20')]=_0x5dc934[_0x71db('0x20')]?_0x5dc934['TrunkBackup']:undefined;this[_0x71db('0x21')]=_0x5dc934[_0x71db('0x21')]?_0x5dc934[_0x71db('0x21')]:undefined;this[_0x71db('0x22')]=_0x5dc934[_0x71db('0x22')]?_0x5dc934[_0x71db('0x22')]:undefined;this[_0x71db('0x23')]=_0x5dc934[_0x71db('0x23')]?_0x5dc934[_0x71db('0x23')]:undefined;this['dialQueueProject']=_0x5dc934[_0x71db('0x23')]?_0x5dc934[_0x71db('0x23')]['name']:undefined;this['dialAMDActive']=_0x5dc934['dialAMDActive']||![];this[_0x71db('0x24')]=_0x5dc934[_0x71db('0x24')];this[_0x71db('0x25')]=_0x5dc934['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x5dc934[_0x71db('0x26')];this[_0x71db('0x27')]=_0x5dc934[_0x71db('0x27')];this[_0x71db('0x28')]=_0x5dc934[_0x71db('0x28')];this[_0x71db('0x29')]=_0x5dc934['dialAMDBetweenWordsSilence'];this[_0x71db('0x2a')]=_0x5dc934[_0x71db('0x2a')];this[_0x71db('0x2b')]=_0x5dc934[_0x71db('0x2b')];this[_0x71db('0x2c')]=_0x5dc934[_0x71db('0x2c')];}module[_0x71db('0x2d')]=Campaign;
\ No newline at end of file
+var _0x903d=['Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup'];(function(_0x340240,_0x494af9){var _0x97a286=function(_0x3f50de){while(--_0x3f50de){_0x340240['push'](_0x340240['shift']());}};_0x97a286(++_0x494af9);}(_0x903d,0xa0));var _0xd903=function(_0x205c55,_0xee7f3b){_0x205c55=_0x205c55-0x0;var _0x43643a=_0x903d[_0x205c55];return _0x43643a;};'use strict';function Campaign(_0x2bd500){this['id']=_0x2bd500['id']||0x0;this['name']=_0x2bd500[_0xd903('0x0')]||'';this[_0xd903('0x1')]=_0x2bd500[_0xd903('0x1')]||'campaign';this[_0xd903('0x2')]=0x0;this[_0xd903('0x3')]=0x0;this[_0xd903('0x4')]=0x0;this[_0xd903('0x5')]=0x0;this['message']='';this['sendMessageOneNotActive']=!![];this[_0xd903('0x6')]=_0x2bd500[_0xd903('0x6')];this[_0xd903('0x7')]=_0x2bd500[_0xd903('0x7')];this[_0xd903('0x8')]=_0x2bd500[_0xd903('0x8')]||null;this[_0xd903('0x9')]=_0x2bd500['dialGlobalInterval']?_0x2bd500[_0xd903('0x9')]:null;this['dialOriginateCallerIdName']=_0x2bd500[_0xd903('0xa')];this[_0xd903('0xb')]=_0x2bd500[_0xd903('0xb')];this['dialOriginateTimeout']=_0x2bd500[_0xd903('0xc')]||0x1e;this[_0xd903('0xd')]=_0x2bd500['dialCongestionMaxRetry'];this[_0xd903('0xe')]=_0x2bd500[_0xd903('0xe')];this[_0xd903('0xf')]=_0x2bd500[_0xd903('0xf')];this[_0xd903('0x10')]=_0x2bd500[_0xd903('0x10')];this['dialNoAnswerMaxRetry']=_0x2bd500[_0xd903('0x11')];this[_0xd903('0x12')]=_0x2bd500[_0xd903('0x12')];this[_0xd903('0x13')]=_0x2bd500[_0xd903('0x13')];this[_0xd903('0x14')]=_0x2bd500[_0xd903('0x14')]||0x3;this[_0xd903('0x15')]=_0x2bd500[_0xd903('0x15')]||0x96;this[_0xd903('0x16')]=_0x2bd500[_0xd903('0x16')]||0x3;this[_0xd903('0x17')]=_0x2bd500[_0xd903('0x17')]||0x96;this[_0xd903('0x18')]=_0x2bd500['dialAbandonedMaxRetry']||0x3;this[_0xd903('0x19')]=_0x2bd500['dialAbandonedRetryFrequency']||0x96;this[_0xd903('0x1a')]=_0x2bd500[_0xd903('0x1a')]||0x3;this[_0xd903('0x1b')]=_0x2bd500[_0xd903('0x1b')]||0x96;this[_0xd903('0x1c')]=_0x2bd500[_0xd903('0x1c')]||0x3;this[_0xd903('0x1d')]=_0x2bd500[_0xd903('0x1d')]||0x96;this['dialOrderByScheduledAt']=_0x2bd500[_0xd903('0x1e')]||_0xd903('0x1f');this[_0xd903('0x20')]=_0x2bd500['dialPrefix']||undefined;this[_0xd903('0x21')]=_0x2bd500[_0xd903('0x21')]||undefined;this[_0xd903('0x22')]=_0x2bd500['dialCutDigit']||undefined;this[_0xd903('0x23')]=_0x2bd500[_0xd903('0x23')]?_0x2bd500['TrunkBackup']:undefined;this['Trunk']=_0x2bd500[_0xd903('0x24')]?_0x2bd500['Trunk']:undefined;this[_0xd903('0x25')]=_0x2bd500['Interval']?_0x2bd500['Interval']:undefined;this['SquareProject']=_0x2bd500['SquareProject']?_0x2bd500['SquareProject']:undefined;this['dialQueueProject']=_0x2bd500[_0xd903('0x26')]?_0x2bd500[_0xd903('0x26')][_0xd903('0x0')]:undefined;this['dialAMDActive']=_0x2bd500[_0xd903('0x27')]||![];this[_0xd903('0x28')]=_0x2bd500[_0xd903('0x28')];this[_0xd903('0x29')]=_0x2bd500[_0xd903('0x29')];this[_0xd903('0x2a')]=_0x2bd500[_0xd903('0x2a')];this[_0xd903('0x2b')]=_0x2bd500[_0xd903('0x2b')];this[_0xd903('0x2c')]=_0x2bd500['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x2bd500[_0xd903('0x2d')];this['dialAMDMaximumNumberOfWords']=_0x2bd500[_0xd903('0x2e')];this['dialAMDSilenceThreshold']=_0x2bd500[_0xd903('0x2f')];this['dialAMDMaximumWordLength']=_0x2bd500[_0xd903('0x30')];}module['exports']=Campaign;
\ No newline at end of file
index 32eb8e6..c0ed2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d1=['answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','tag','disposition','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','starttime','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','context','uniqueid','linkedid','exten'];(function(_0x4071df,_0x55dada){var _0x157dc4=function(_0x52389b){while(--_0x52389b){_0x4071df['push'](_0x4071df['shift']());}};_0x157dc4(++_0x55dada);}(_0x99d1,0x104));var _0x199d=function(_0x559bd3,_0x1532c1){_0x559bd3=_0x559bd3-0x0;var _0xe62ee8=_0x99d1[_0x559bd3];return _0xe62ee8;};'use strict';function Channel(){this[_0x199d('0x0')]=null;this['channel']='';this[_0x199d('0x1')]='';this[_0x199d('0x2')]=0x0;this[_0x199d('0x3')]='';this[_0x199d('0x4')]=undefined;this[_0x199d('0x5')]=undefined;this['accountcode']=0x0;this[_0x199d('0x6')]='';this[_0x199d('0x7')]=0x0;this[_0x199d('0x8')]=0x0;this[_0x199d('0x9')]=0x0;this[_0x199d('0xa')]=![];this[_0x199d('0xb')]=null;this[_0x199d('0xc')]=null;this[_0x199d('0xd')]=![];this[_0x199d('0xe')]=![];this[_0x199d('0xf')]='';this[_0x199d('0x10')]='';this[_0x199d('0x11')]=0x0;this[_0x199d('0x12')]=0x0;this[_0x199d('0x13')]=0x0;this['type']=null;this[_0x199d('0x14')]=null;this[_0x199d('0x15')]=null;this['monitor']=![];this[_0x199d('0x16')]=null;this[_0x199d('0x17')]=null;this[_0x199d('0x18')]=[];this['transfercalleridnum']=undefined;this[_0x199d('0x19')]=undefined;this[_0x199d('0x1a')]=undefined;this['mohtime']=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x83d4=['lastapplication','lastdata','duration','billableseconds','holdtime','tag','monitor','monitorFilename','monitors','transfercalleridnum','exports','starttime','calleridnum','connectedlinenum','accountcode','context','uniqueid','linkedid','exten','answertime','endtime','unmanaged','abandoned'];(function(_0x7f8e40,_0x252a43){var _0x4c769e=function(_0x498b38){while(--_0x498b38){_0x7f8e40['push'](_0x7f8e40['shift']());}};_0x4c769e(++_0x252a43);}(_0x83d4,0xf1));var _0x483d=function(_0x1a4df9,_0x422e03){_0x1a4df9=_0x1a4df9-0x0;var _0x34f200=_0x83d4[_0x1a4df9];return _0x34f200;};'use strict';function Channel(){this[_0x483d('0x0')]=null;this['channel']='';this['destinationchannel']='';this[_0x483d('0x1')]=0x0;this['calleridname']='';this[_0x483d('0x2')]=undefined;this['connectedlinename']=undefined;this[_0x483d('0x3')]=0x0;this[_0x483d('0x4')]='';this[_0x483d('0x5')]=0x0;this[_0x483d('0x6')]=0x0;this[_0x483d('0x7')]=0x0;this['answered']=![];this[_0x483d('0x8')]=null;this[_0x483d('0x9')]=null;this[_0x483d('0xa')]=![];this[_0x483d('0xb')]=![];this[_0x483d('0xc')]='';this[_0x483d('0xd')]='';this[_0x483d('0xe')]=0x0;this[_0x483d('0xf')]=0x0;this[_0x483d('0x10')]=0x0;this['type']=null;this[_0x483d('0x11')]=null;this['disposition']=null;this[_0x483d('0x12')]=![];this[_0x483d('0x13')]=null;this['queue']=null;this[_0x483d('0x14')]=[];this[_0x483d('0x15')]=undefined;this['transferconnectedlinenum']=undefined;this['transferType']=undefined;this['mohtime']=0x0;}module[_0x483d('0x16')]=Channel;
\ No newline at end of file
index 1f9c8db..0378270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x442b=['consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','consumerKey'];(function(_0x3e8111,_0x4749db){var _0x45af02=function(_0x20666b){while(--_0x20666b){_0x3e8111['push'](_0x3e8111['shift']());}};_0x45af02(++_0x4749db);}(_0x442b,0xa3));var _0xb442=function(_0x4b3817,_0x2ba4ef){_0x4b3817=_0x4b3817-0x0;var _0x4b447c=_0x442b[_0x4b3817];return _0x4b447c;};'use strict';function DeskAccount(_0xebc3fd){this['id']=_0xebc3fd['id']||0x0;this[_0xb442('0x0')]=_0xebc3fd[_0xb442('0x0')]||'';this[_0xb442('0x1')]=_0xebc3fd[_0xb442('0x1')]||'';this[_0xb442('0x2')]=_0xebc3fd[_0xb442('0x2')]||'';this[_0xb442('0x3')]=_0xebc3fd[_0xb442('0x3')]||'';this['password']=_0xebc3fd['password']||'';this[_0xb442('0x4')]=_0xebc3fd[_0xb442('0x4')]||'';this[_0xb442('0x5')]=_0xebc3fd[_0xb442('0x5')]||'';this[_0xb442('0x6')]=_0xebc3fd[_0xb442('0x6')]||'';this[_0xb442('0x7')]=_0xebc3fd[_0xb442('0x7')]||'';this[_0xb442('0x8')]=_0xebc3fd[_0xb442('0x8')]||'';this[_0xb442('0x9')]=_0xebc3fd[_0xb442('0x9')]||'';this[_0xb442('0xa')]=_0xebc3fd[_0xb442('0xa')]||{};}module[_0xb442('0xb')]=DeskAccount;
\ No newline at end of file
+var _0xc6b5=['consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password'];(function(_0x791c2a,_0x20d6f1){var _0x577daa=function(_0x24d23f){while(--_0x24d23f){_0x791c2a['push'](_0x791c2a['shift']());}};_0x577daa(++_0x20d6f1);}(_0xc6b5,0x8a));var _0x5c6b=function(_0x50dd48,_0x255c6e){_0x50dd48=_0x50dd48-0x0;var _0x40385f=_0xc6b5[_0x50dd48];return _0x40385f;};'use strict';function DeskAccount(_0x2b89cd){this['id']=_0x2b89cd['id']||0x0;this[_0x5c6b('0x0')]=_0x2b89cd[_0x5c6b('0x0')]||'';this[_0x5c6b('0x1')]=_0x2b89cd[_0x5c6b('0x1')]||'';this[_0x5c6b('0x2')]=_0x2b89cd[_0x5c6b('0x2')]||'';this[_0x5c6b('0x3')]=_0x2b89cd[_0x5c6b('0x3')]||'';this[_0x5c6b('0x4')]=_0x2b89cd[_0x5c6b('0x4')]||'';this[_0x5c6b('0x5')]=_0x2b89cd[_0x5c6b('0x5')]||'';this[_0x5c6b('0x6')]=_0x2b89cd[_0x5c6b('0x6')]||'';this['token']=_0x2b89cd[_0x5c6b('0x7')]||'';this[_0x5c6b('0x8')]=_0x2b89cd[_0x5c6b('0x8')]||'';this[_0x5c6b('0x9')]=_0x2b89cd[_0x5c6b('0x9')]||'';this[_0x5c6b('0xa')]=_0x2b89cd[_0x5c6b('0xa')]||'';this[_0x5c6b('0xb')]=_0x2b89cd[_0x5c6b('0xb')]||{};}module[_0x5c6b('0xc')]=DeskAccount;
\ No newline at end of file
index 0409996..5f9abcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','name','username'];(function(_0x1236f7,_0x50c076){var _0x10bc30=function(_0x381075){while(--_0x381075){_0x1236f7['push'](_0x1236f7['shift']());}};_0x10bc30(++_0x50c076);}(_0x6324,0x142));var _0x4632=function(_0x3e9650,_0x15c3d9){_0x3e9650=_0x3e9650-0x0;var _0x2921f7=_0x6324[_0x3e9650];return _0x2921f7;};'use strict';function Dynamics365Account(_0x3396c7){this['id']=_0x3396c7['id']||0x0;this[_0x4632('0x0')]=_0x3396c7[_0x4632('0x0')]||'';this[_0x4632('0x1')]=_0x3396c7['username']||'';this[_0x4632('0x2')]=_0x3396c7['password']||'';this[_0x4632('0x3')]=_0x3396c7['remoteUri']||'';this[_0x4632('0x4')]=_0x3396c7['tenantId']||'';this[_0x4632('0x5')]=_0x3396c7[_0x4632('0x5')]||'';this[_0x4632('0x6')]=_0x3396c7[_0x4632('0x6')]||{};this['serverUrl']=_0x3396c7[_0x4632('0x7')]||'';this[_0x4632('0x8')]=_0x3396c7[_0x4632('0x8')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0xf4eb=['tenantId','clientId','clientSecret','serverUrl','exports','password','remoteUri'];(function(_0x3e954d,_0x4cc3a0){var _0x59649b=function(_0x9c6eac){while(--_0x9c6eac){_0x3e954d['push'](_0x3e954d['shift']());}};_0x59649b(++_0x4cc3a0);}(_0xf4eb,0xec));var _0xbf4e=function(_0x50b704,_0x45f6fb){_0x50b704=_0x50b704-0x0;var _0x186b47=_0xf4eb[_0x50b704];return _0x186b47;};'use strict';function Dynamics365Account(_0x3e6fbd){this['id']=_0x3e6fbd['id']||0x0;this['name']=_0x3e6fbd['name']||'';this['username']=_0x3e6fbd['username']||'';this[_0xbf4e('0x0')]=_0x3e6fbd['password']||'';this['remoteUri']=_0x3e6fbd[_0xbf4e('0x1')]||'';this[_0xbf4e('0x2')]=_0x3e6fbd[_0xbf4e('0x2')]||'';this[_0xbf4e('0x3')]=_0x3e6fbd[_0xbf4e('0x3')]||'';this[_0xbf4e('0x4')]=_0x3e6fbd[_0xbf4e('0x4')]||{};this['serverUrl']=_0x3e6fbd[_0xbf4e('0x5')]||'';this['Configurations']=_0x3e6fbd['Configurations']||{};}module[_0xbf4e('0x6')]=Dynamics365Account;
\ No newline at end of file
index c7161db..5da1142 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb682=['modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','localstationid','minrate'];(function(_0x5d8ee4,_0x472c11){var _0x36d705=function(_0x5df09d){while(--_0x5df09d){_0x5d8ee4['push'](_0x5d8ee4['shift']());}};_0x36d705(++_0x472c11);}(_0xb682,0x1ab));var _0x2b68=function(_0x1acdd7,_0x1b63d6){_0x1acdd7=_0x1acdd7-0x0;var _0x5eed04=_0xb682[_0x1acdd7];return _0x5eed04;};'use strict';function FaxAccount(_0x518172){this['id']=_0x518172['id']||0x0;this[_0x2b68('0x0')]=_0x518172[_0x2b68('0x0')]||'';this['description']=_0x518172[_0x2b68('0x1')];this[_0x2b68('0x2')]=_0x518172[_0x2b68('0x2')];this['headerinfo']=_0x518172['headerinfo'];this[_0x2b68('0x3')]=_0x518172['localstationid'];this[_0x2b68('0x4')]=_0x518172[_0x2b68('0x4')]||0x960;this['maxrate']=_0x518172['maxrate']||0x3840;this[_0x2b68('0x5')]=_0x518172[_0x2b68('0x5')]||_0x2b68('0x6');this[_0x2b68('0x7')]=_0x518172[_0x2b68('0x7')]||'no';this['faxdetect']=_0x518172[_0x2b68('0x8')]||'no';this[_0x2b68('0x9')]=_0x518172['t38timeout']||0x1388;this[_0x2b68('0xa')]=_0x518172[_0x2b68('0xa')]||_0x2b68('0xb');this['Trunk']=_0x518172['Trunk']?_0x518172[_0x2b68('0xc')]:undefined;this[_0x2b68('0xd')]=_0x518172[_0x2b68('0xd')];this[_0x2b68('0xe')]=_0x518172[_0x2b68('0xe')];}module[_0x2b68('0xf')]=FaxAccount;
\ No newline at end of file
+var _0xa936=['Trunk','ListId','exports','name','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP'];(function(_0x51f81d,_0x2a6f7c){var _0x48c6d7=function(_0x306042){while(--_0x306042){_0x51f81d['push'](_0x51f81d['shift']());}};_0x48c6d7(++_0x2a6f7c);}(_0xa936,0x183));var _0x6a93=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xa936[_0x1da527];return _0x40fc7c;};'use strict';function FaxAccount(_0x368666){this['id']=_0x368666['id']||0x0;this[_0x6a93('0x0')]=_0x368666['name']||'';this['description']=_0x368666['description'];this[_0x6a93('0x1')]=_0x368666[_0x6a93('0x1')];this[_0x6a93('0x2')]=_0x368666[_0x6a93('0x2')];this['localstationid']=_0x368666[_0x6a93('0x3')];this[_0x6a93('0x4')]=_0x368666[_0x6a93('0x4')]||0x960;this[_0x6a93('0x5')]=_0x368666[_0x6a93('0x5')]||0x3840;this[_0x6a93('0x6')]=_0x368666['modem']||_0x6a93('0x7');this[_0x6a93('0x8')]=_0x368666['gateway']||'no';this[_0x6a93('0x9')]=_0x368666[_0x6a93('0x9')]||'no';this[_0x6a93('0xa')]=_0x368666['t38timeout']||0x1388;this[_0x6a93('0xb')]=_0x368666['tech']||_0x6a93('0xc');this[_0x6a93('0xd')]=_0x368666['Trunk']?_0x368666[_0x6a93('0xd')]:undefined;this[_0x6a93('0xe')]=_0x368666[_0x6a93('0xe')];this['key']=_0x368666['key'];}module[_0x6a93('0xf')]=FaxAccount;
\ No newline at end of file
index 9d83f56..9784c6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00ea=['name','remoteUri','serverUrl','Configurations'];(function(_0x9c9c32,_0x2e1a14){var _0x28bfeb=function(_0x4a2d01){while(--_0x4a2d01){_0x9c9c32['push'](_0x9c9c32['shift']());}};_0x28bfeb(++_0x2e1a14);}(_0x00ea,0x144));var _0xa00e=function(_0x36b591,_0x1bffc0){_0x36b591=_0x36b591-0x0;var _0x34c71d=_0x00ea[_0x36b591];return _0x34c71d;};'use strict';function FreshdeskAccount(_0x1a3a2d){this['id']=_0x1a3a2d['id']||0x0;this[_0xa00e('0x0')]=_0x1a3a2d[_0xa00e('0x0')]||'';this['username']=_0x1a3a2d['username']||'';this['apiKey']=_0x1a3a2d['token']||'';this[_0xa00e('0x1')]=_0x1a3a2d['remoteUri']||'';this[_0xa00e('0x2')]=_0x1a3a2d[_0xa00e('0x2')]||'';this[_0xa00e('0x3')]=_0x1a3a2d[_0xa00e('0x3')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0x6805=['username','apiKey','token','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x4d1849,_0x295b40){var _0x1d5241=function(_0x10e04b){while(--_0x10e04b){_0x4d1849['push'](_0x4d1849['shift']());}};_0x1d5241(++_0x295b40);}(_0x6805,0x1d7));var _0x5680=function(_0x482117,_0x104466){_0x482117=_0x482117-0x0;var _0x2bc0cb=_0x6805[_0x482117];return _0x2bc0cb;};'use strict';function FreshdeskAccount(_0x5906a0){this['id']=_0x5906a0['id']||0x0;this['name']=_0x5906a0[_0x5680('0x0')]||'';this[_0x5680('0x1')]=_0x5906a0['username']||'';this[_0x5680('0x2')]=_0x5906a0[_0x5680('0x3')]||'';this['remoteUri']=_0x5906a0[_0x5680('0x4')]||'';this[_0x5680('0x5')]=_0x5906a0[_0x5680('0x5')]||'';this[_0x5680('0x6')]=_0x5906a0[_0x5680('0x6')]||{};}module[_0x5680('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 9f8a85c..cccb99d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a63=['username','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x7251b5,_0x26f4b4){var _0x2b6e7a=function(_0x11aa86){while(--_0x11aa86){_0x7251b5['push'](_0x7251b5['shift']());}};_0x2b6e7a(++_0x26f4b4);}(_0x5a63,0xe3));var _0x35a6=function(_0x4100ad,_0x4e9616){_0x4100ad=_0x4100ad-0x0;var _0x1cd5ea=_0x5a63[_0x4100ad];return _0x1cd5ea;};'use strict';function FreshsalesAccount(_0x21eb37){this['id']=_0x21eb37['id']||0x0;this[_0x35a6('0x0')]=_0x21eb37['name']||'';this['username']=_0x21eb37[_0x35a6('0x1')]||'';this['apiKey']=_0x21eb37['token']||'';this[_0x35a6('0x2')]=_0x21eb37[_0x35a6('0x2')]||'';this[_0x35a6('0x3')]=_0x21eb37[_0x35a6('0x3')]||'';this[_0x35a6('0x4')]=_0x21eb37['Configurations']||{};}module[_0x35a6('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0x4d49=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x362dda,_0x591da3){var _0xe5d3a8=function(_0x2e40d7){while(--_0x2e40d7){_0x362dda['push'](_0x362dda['shift']());}};_0xe5d3a8(++_0x591da3);}(_0x4d49,0x141));var _0x94d4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4d49[_0x14add3];return _0x4a174f;};'use strict';function FreshsalesAccount(_0x5efebf){this['id']=_0x5efebf['id']||0x0;this[_0x94d4('0x0')]=_0x5efebf['name']||'';this[_0x94d4('0x1')]=_0x5efebf[_0x94d4('0x1')]||'';this[_0x94d4('0x2')]=_0x5efebf[_0x94d4('0x3')]||'';this[_0x94d4('0x4')]=_0x5efebf[_0x94d4('0x4')]||'';this[_0x94d4('0x5')]=_0x5efebf[_0x94d4('0x5')]||'';this[_0x94d4('0x6')]=_0x5efebf['Configurations']||{};}module[_0x94d4('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 9aba354..dc42b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd38b=['connectedlinename','accountcode','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','variables','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum'];(function(_0x2d1c01,_0x5bea38){var _0x2f1924=function(_0x3e01da){while(--_0x3e01da){_0x2d1c01['push'](_0x2d1c01['shift']());}};_0x2f1924(++_0x5bea38);}(_0xd38b,0x168));var _0xbd38=function(_0x34f0fb,_0x3323b2){_0x34f0fb=_0x34f0fb-0x0;var _0x9b7b2b=_0xd38b[_0x34f0fb];return _0x9b7b2b;};'use strict';function QueueReport(){this[_0xbd38('0x0')]=_0xbd38('0x1');this[_0xbd38('0x2')]='';this[_0xbd38('0x3')]='';this[_0xbd38('0x4')]='';this[_0xbd38('0x5')]='';this[_0xbd38('0x6')]=null;this[_0xbd38('0x7')]=null;this[_0xbd38('0x8')]=0x1;this[_0xbd38('0x9')]=0x1;this[_0xbd38('0xa')]=![];this[_0xbd38('0xb')]=null;this[_0xbd38('0xc')]=![];this['queuecallercompleteAt']=null;this[_0xbd38('0xd')]=![];this[_0xbd38('0xe')]=null;this[_0xbd38('0xf')]=0x1;this[_0xbd38('0x10')]='';this[_0xbd38('0x11')]='';this[_0xbd38('0x12')]='';this[_0xbd38('0x13')]='';this['context']='';this[_0xbd38('0x14')]='';this[_0xbd38('0x15')]='';this[_0xbd38('0x16')]=0x0;this[_0xbd38('0x17')]=![];this[_0xbd38('0x18')]='';this[_0xbd38('0x19')]=0x0;this[_0xbd38('0x1a')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0xaa2d=['uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinenum','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','motionChannel','voice','exports','type','inbound'];(function(_0x1bef07,_0x2a4e64){var _0x29edf6=function(_0x3e0230){while(--_0x3e0230){_0x1bef07['push'](_0x1bef07['shift']());}};_0x29edf6(++_0x2a4e64);}(_0xaa2d,0x136));var _0xdaa2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaa2d[_0x3dd15e];return _0x231fd0;};'use strict';function QueueReport(){this[_0xdaa2('0x0')]=_0xdaa2('0x1');this[_0xdaa2('0x2')]='';this[_0xdaa2('0x3')]='';this[_0xdaa2('0x4')]='';this['queue']='';this[_0xdaa2('0x5')]=null;this[_0xdaa2('0x6')]=null;this[_0xdaa2('0x7')]=0x1;this[_0xdaa2('0x8')]=0x1;this['queuecallerabandon']=![];this[_0xdaa2('0x9')]=null;this[_0xdaa2('0xa')]=![];this[_0xdaa2('0xb')]=null;this[_0xdaa2('0xc')]=![];this[_0xdaa2('0xd')]=null;this['originalposition']=0x1;this[_0xdaa2('0xe')]='';this[_0xdaa2('0xf')]='';this['connectedlinename']='';this[_0xdaa2('0x10')]='';this[_0xdaa2('0x11')]='';this[_0xdaa2('0x12')]='';this[_0xdaa2('0x13')]='';this[_0xdaa2('0x14')]=0x0;this[_0xdaa2('0x15')]=![];this[_0xdaa2('0x16')]='';this[_0xdaa2('0x17')]=_0xdaa2('0x18');this['mohtime']=0x0;this['variables']={};}module[_0xdaa2('0x19')]=QueueReport;
\ No newline at end of file
index 0f7ea61..f1a03c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22ea=['username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x22ea,0xb3));var _0xa22e=function(_0x1f858a,_0xff7047){_0x1f858a=_0x1f858a-0x0;var _0x3e3b18=_0x22ea[_0x1f858a];return _0x3e3b18;};'use strict';function SalesforceAccount(_0x19c58e){this['id']=_0x19c58e['id']||0x0;this[_0xa22e('0x0')]=_0x19c58e[_0xa22e('0x0')]||'';this[_0xa22e('0x1')]=_0x19c58e['username']||'';this[_0xa22e('0x2')]=_0x19c58e['remoteUri']||'';this[_0xa22e('0x3')]=_0x19c58e[_0xa22e('0x3')]||'';this[_0xa22e('0x4')]=_0x19c58e[_0xa22e('0x4')]||'';this[_0xa22e('0x5')]=_0x19c58e['clientSecret']||'';this['securityToken']=_0x19c58e[_0xa22e('0x6')]||'';this[_0xa22e('0x7')]=_0x19c58e[_0xa22e('0x7')]||_0xa22e('0x8');this[_0xa22e('0x9')]=_0x19c58e[_0xa22e('0x9')]||'';this[_0xa22e('0xa')]=_0x19c58e[_0xa22e('0xa')]||{};}module[_0xa22e('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x556a=['password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri'];(function(_0x5b98e9,_0xa73bb4){var _0x2ccd15=function(_0x3c52ca){while(--_0x3c52ca){_0x5b98e9['push'](_0x5b98e9['shift']());}};_0x2ccd15(++_0xa73bb4);}(_0x556a,0x1dd));var _0xa556=function(_0x7e4249,_0xd9b3c5){_0x7e4249=_0x7e4249-0x0;var _0x6a7152=_0x556a[_0x7e4249];return _0x6a7152;};'use strict';function SalesforceAccount(_0x3b8fda){this['id']=_0x3b8fda['id']||0x0;this[_0xa556('0x0')]=_0x3b8fda[_0xa556('0x0')]||'';this[_0xa556('0x1')]=_0x3b8fda[_0xa556('0x1')]||'';this[_0xa556('0x2')]=_0x3b8fda[_0xa556('0x2')]||'';this[_0xa556('0x3')]=_0x3b8fda[_0xa556('0x3')]||'';this['clientId']=_0x3b8fda[_0xa556('0x4')]||'';this[_0xa556('0x5')]=_0x3b8fda[_0xa556('0x5')]||'';this[_0xa556('0x6')]=_0x3b8fda[_0xa556('0x6')]||'';this['type']=_0x3b8fda[_0xa556('0x7')]||_0xa556('0x8');this[_0xa556('0x9')]=_0x3b8fda[_0xa556('0x9')]||'';this['Configurations']=_0x3b8fda[_0xa556('0xa')]||{};}module[_0xa556('0xb')]=SalesforceAccount;
\ No newline at end of file
index 599c45d..62c888d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef19=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x2fb7c1,_0x13ff42){var _0x2521c3=function(_0x1c747b){while(--_0x1c747b){_0x2fb7c1['push'](_0x2fb7c1['shift']());}};_0x2521c3(++_0x13ff42);}(_0xef19,0x101));var _0x9ef1=function(_0x3b16e1,_0x3bda3e){_0x3b16e1=_0x3b16e1-0x0;var _0x311d1b=_0xef19[_0x3b16e1];return _0x311d1b;};'use strict';function ServicenowAccount(_0x44abb3){this['id']=_0x44abb3['id']||0x0;this[_0x9ef1('0x0')]=_0x44abb3['name']||'';this[_0x9ef1('0x1')]=_0x44abb3['username']||'';this[_0x9ef1('0x2')]=_0x44abb3[_0x9ef1('0x2')]||'';this[_0x9ef1('0x3')]=_0x44abb3[_0x9ef1('0x3')]||'';this[_0x9ef1('0x4')]=_0x44abb3[_0x9ef1('0x4')]||'';this['Configurations']=_0x44abb3[_0x9ef1('0x5')]||{};}module[_0x9ef1('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x92cb=['remoteUri','serverUrl','Configurations','name','username','password'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x92cb,0x135));var _0xb92c=function(_0x4a75b5,_0x1acdaf){_0x4a75b5=_0x4a75b5-0x0;var _0x3d9fff=_0x92cb[_0x4a75b5];return _0x3d9fff;};'use strict';function ServicenowAccount(_0x2ee67b){this['id']=_0x2ee67b['id']||0x0;this[_0xb92c('0x0')]=_0x2ee67b[_0xb92c('0x0')]||'';this[_0xb92c('0x1')]=_0x2ee67b[_0xb92c('0x1')]||'';this[_0xb92c('0x2')]=_0x2ee67b['password']||'';this[_0xb92c('0x3')]=_0x2ee67b[_0xb92c('0x3')]||'';this[_0xb92c('0x4')]=_0x2ee67b[_0xb92c('0x4')]||'';this['Configurations']=_0x2ee67b[_0xb92c('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 61cb9e8..91ef99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['username','password','serverUrl','Configurations','exports','name'];(function(_0x29fe1b,_0x1ba165){var _0x14ed43=function(_0x1a6a81){while(--_0x1a6a81){_0x29fe1b['push'](_0x29fe1b['shift']());}};_0x14ed43(++_0x1ba165);}(_0x7096,0x1c7));var _0x6709=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7096[_0x6c993a];return _0x27f547;};'use strict';function SugarcrmAccount(_0x13ee89){this['id']=_0x13ee89['id']||0x0;this[_0x6709('0x0')]=_0x13ee89[_0x6709('0x0')]||'';this['username']=_0x13ee89[_0x6709('0x1')]||'';this[_0x6709('0x2')]=_0x13ee89['password']||'';this['remoteUri']=_0x13ee89['remoteUri']||'';this[_0x6709('0x3')]=_0x13ee89[_0x6709('0x3')]||'';this[_0x6709('0x4')]=_0x13ee89[_0x6709('0x4')]||{};}module[_0x6709('0x5')]=SugarcrmAccount;
\ No newline at end of file
+var _0xb3be=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x5b5b8b,_0x4459bc){var _0xd9fefd=function(_0x22f7f7){while(--_0x22f7f7){_0x5b5b8b['push'](_0x5b5b8b['shift']());}};_0xd9fefd(++_0x4459bc);}(_0xb3be,0xc3));var _0xeb3b=function(_0x5e6bae,_0x55f80e){_0x5e6bae=_0x5e6bae-0x0;var _0x1ceaf4=_0xb3be[_0x5e6bae];return _0x1ceaf4;};'use strict';function SugarcrmAccount(_0x3f7103){this['id']=_0x3f7103['id']||0x0;this[_0xeb3b('0x0')]=_0x3f7103[_0xeb3b('0x0')]||'';this[_0xeb3b('0x1')]=_0x3f7103['username']||'';this[_0xeb3b('0x2')]=_0x3f7103[_0xeb3b('0x2')]||'';this['remoteUri']=_0x3f7103[_0xeb3b('0x3')]||'';this[_0xeb3b('0x4')]=_0x3f7103['serverUrl']||'';this[_0xeb3b('0x5')]=_0x3f7103[_0xeb3b('0x5')]||{};}module[_0xeb3b('0x6')]=SugarcrmAccount;
\ No newline at end of file
index ddcc964..2c5808d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfecd=['unknown','status','address','exports','name','accountcode','state'];(function(_0x5a8168,_0x547ce1){var _0x3ea1d1=function(_0x5b4776){while(--_0x5b4776){_0x5a8168['push'](_0x5a8168['shift']());}};_0x3ea1d1(++_0x547ce1);}(_0xfecd,0x107));var _0xdfec=function(_0x5f031b,_0x4d92c3){_0x5f031b=_0x5f031b-0x0;var _0x575d95=_0xfecd[_0x5f031b];return _0x575d95;};'use strict';function Telephone(_0x5bc5d7){this['id']=_0x5bc5d7['id']||0x0;this['name']=_0x5bc5d7[_0xdfec('0x0')]||'';this[_0xdfec('0x1')]=_0x5bc5d7['accountcode']||'';this[_0xdfec('0x2')]=_0xdfec('0x3');this['stateTime']=0x0;this[_0xdfec('0x4')]='unknown';this[_0xdfec('0x5')]='';}module[_0xdfec('0x6')]=Telephone;
\ No newline at end of file
+var _0xaa5e=['unknown','stateTime','address','exports','name','accountcode','state'];(function(_0x43b330,_0xda5898){var _0x471f4d=function(_0x59cb77){while(--_0x59cb77){_0x43b330['push'](_0x43b330['shift']());}};_0x471f4d(++_0xda5898);}(_0xaa5e,0xa5));var _0xeaa5=function(_0x396994,_0x33e711){_0x396994=_0x396994-0x0;var _0x4092ae=_0xaa5e[_0x396994];return _0x4092ae;};'use strict';function Telephone(_0x5b7fcc){this['id']=_0x5b7fcc['id']||0x0;this[_0xeaa5('0x0')]=_0x5b7fcc['name']||'';this[_0xeaa5('0x1')]=_0x5b7fcc[_0xeaa5('0x1')]||'';this[_0xeaa5('0x2')]=_0xeaa5('0x3');this[_0xeaa5('0x4')]=0x0;this['status']=_0xeaa5('0x3');this[_0xeaa5('0x5')]='';}module[_0xeaa5('0x6')]=Telephone;
\ No newline at end of file
index c2f99e1..238939b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x57aa5e,_0x2365f7){var _0x4a3e31=function(_0x393dc1){while(--_0x393dc1){_0x57aa5e['push'](_0x57aa5e['shift']());}};_0x4a3e31(++_0x2365f7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 _0xa9e0=['exports','name'];(function(_0x12e972,_0x3b59ef){var _0x1d0851=function(_0x1ac025){while(--_0x1ac025){_0x12e972['push'](_0x12e972['shift']());}};_0x1d0851(++_0x3b59ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 9ad1ce3..4b881a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['Actions','name','status','AllConditions','AnyConditions'];(function(_0x202611,_0x5366c6){var _0x31aa0f=function(_0x5dfe24){while(--_0x5dfe24){_0x202611['push'](_0x202611['shift']());}};_0x31aa0f(++_0x5366c6);}(_0xda3f,0xec));var _0xfda3=function(_0x1e901a,_0x18a8b7){_0x1e901a=_0x1e901a-0x0;var _0x195341=_0xda3f[_0x1e901a];return _0x195341;};'use strict';function Trigger(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['channel']=_0x33f0ce['channel']||'voice';this[_0xfda3('0x1')]=_0x33f0ce['status']||![];this[_0xfda3('0x2')]=_0x33f0ce[_0xfda3('0x2')]||[];this['AnyConditions']=_0x33f0ce[_0xfda3('0x3')]||[];this[_0xfda3('0x4')]=_0x33f0ce['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0xb7e7=['Actions','exports','name','channel','status','AllConditions','AnyConditions'];(function(_0x2dbcef,_0x1cfecb){var _0x5a90ea=function(_0x189054){while(--_0x189054){_0x2dbcef['push'](_0x2dbcef['shift']());}};_0x5a90ea(++_0x1cfecb);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xb7e7[_0x3ab9ee];return _0x82ee88;};'use strict';function Trigger(_0x2e5e07){this['id']=_0x2e5e07['id']||0x0;this['name']=_0x2e5e07[_0x7b7e('0x0')]||'';this['channel']=_0x2e5e07[_0x7b7e('0x1')]||'voice';this[_0x7b7e('0x2')]=_0x2e5e07['status']||![];this[_0x7b7e('0x3')]=_0x2e5e07[_0x7b7e('0x3')]||[];this[_0x7b7e('0x4')]=_0x2e5e07['AnyConditions']||[];this['Actions']=_0x2e5e07[_0x7b7e('0x5')]||[];}module[_0x7b7e('0x6')]=Trigger;
\ No newline at end of file
index 3c97421..323c97e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4273=['state','unknown','stateTime','status','registry','indexOf','split','port','domainport','stateRegistry','defaultuser','exports','active','name'];(function(_0xe22f40,_0x3331e2){var _0x226c12=function(_0x213935){while(--_0x213935){_0xe22f40['push'](_0xe22f40['shift']());}};_0x226c12(++_0x3331e2);}(_0x4273,0x1b0));var _0x3427=function(_0x1a817b,_0x439314){_0x1a817b=_0x1a817b-0x0;var _0x17f56b=_0x4273[_0x1a817b];return _0x17f56b;};'use strict';function Trunk(_0x516e13){this['id']=_0x516e13['id']||0x0;this[_0x3427('0x0')]=_0x516e13[_0x3427('0x0')]||![];this[_0x3427('0x1')]=_0x516e13['name']||'';this[_0x3427('0x2')]=_0x3427('0x3');this[_0x3427('0x4')]=0x0;this[_0x3427('0x5')]='unknown';this[_0x3427('0x6')]=_0x516e13['registry']&&_0x516e13[_0x3427('0x6')][_0x3427('0x7')](':')?_0x516e13[_0x3427('0x6')][_0x3427('0x8')](':')[0x0]:'';this['host']='';this[_0x3427('0x9')]='';this['domain']='';this[_0x3427('0xa')]='';this['refresh']='';this[_0x3427('0xb')]=_0x3427('0x3');this['registrationtime']='';this['address']='';this[_0x3427('0xc')]=_0x516e13[_0x3427('0xc')]||'';}module[_0x3427('0xd')]=Trunk;
\ No newline at end of file
+var _0xffac=['port','domain','stateRegistry','registrationtime','address','defaultuser','active','stateTime','status','unknown','registry','indexOf','split','host'];(function(_0x4059a4,_0xdef8a8){var _0xf9ce05=function(_0x716377){while(--_0x716377){_0x4059a4['push'](_0x4059a4['shift']());}};_0xf9ce05(++_0xdef8a8);}(_0xffac,0x18e));var _0xcffa=function(_0x1fec6e,_0x48a43b){_0x1fec6e=_0x1fec6e-0x0;var _0x1a7946=_0xffac[_0x1fec6e];return _0x1a7946;};'use strict';function Trunk(_0x2526b0){this['id']=_0x2526b0['id']||0x0;this[_0xcffa('0x0')]=_0x2526b0['active']||![];this['name']=_0x2526b0['name']||'';this['state']='unknown';this[_0xcffa('0x1')]=0x0;this[_0xcffa('0x2')]=_0xcffa('0x3');this[_0xcffa('0x4')]=_0x2526b0[_0xcffa('0x4')]&&_0x2526b0[_0xcffa('0x4')][_0xcffa('0x5')](':')?_0x2526b0[_0xcffa('0x4')][_0xcffa('0x6')](':')[0x0]:'';this[_0xcffa('0x7')]='';this[_0xcffa('0x8')]='';this[_0xcffa('0x9')]='';this['domainport']='';this['refresh']='';this[_0xcffa('0xa')]=_0xcffa('0x3');this[_0xcffa('0xb')]='';this[_0xcffa('0xc')]='';this[_0xcffa('0xd')]=_0x2526b0[_0xcffa('0xd')]||'';}module['exports']=Trunk;
\ No newline at end of file
index 0bfd211..e67d77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7520=['recordingFormat','none','mandatoryDisposition','exten'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x7520,0xcb));var _0x0752=function(_0x34be5c,_0x44fc9c){_0x34be5c=_0x34be5c-0x0;var _0x17a529=_0x7520[_0x34be5c];return _0x17a529;};'use strict';function voiceExtension(_0x7c8d0){this['id']=_0x7c8d0['id']||0x0;this[_0x0752('0x0')]=_0x7c8d0[_0x0752('0x0')]||'';this[_0x0752('0x1')]=_0x7c8d0[_0x0752('0x1')]||_0x0752('0x2');this[_0x0752('0x3')]=_0x7c8d0[_0x0752('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0xeba9=['mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xeba9,0xa6));var _0x9eba=function(_0x3ba493,_0x3766af){_0x3ba493=_0x3ba493-0x0;var _0x33cbc7=_0xeba9[_0x3ba493];return _0x33cbc7;};'use strict';function voiceExtension(_0x4f2072){this['id']=_0x4f2072['id']||0x0;this[_0x9eba('0x0')]=_0x4f2072[_0x9eba('0x0')]||'';this[_0x9eba('0x1')]=_0x4f2072[_0x9eba('0x1')]||'none';this[_0x9eba('0x2')]=_0x4f2072[_0x9eba('0x2')]||![];}module[_0x9eba('0x3')]=voiceExtension;
\ No newline at end of file
index b4e3131..af932ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f76=['dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','onhold','wav','gsm','roundrobin','name','monitor_format','type','inbound','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive'];(function(_0x59ac25,_0x41e23a){var _0x32842d=function(_0x163a92){while(--_0x163a92){_0x59ac25['push'](_0x59ac25['shift']());}};_0x32842d(++_0x41e23a);}(_0x3f76,0x1a4));var _0x63f7=function(_0x2b69f7,_0x1c5b68){_0x2b69f7=_0x2b69f7-0x0;var _0x531fc2=_0x3f76[_0x2b69f7];return _0x531fc2;};'use strict';var statusDesc=[_0x63f7('0x0'),_0x63f7('0x1'),_0x63f7('0x2'),'busy',_0x63f7('0x3'),_0x63f7('0x4'),_0x63f7('0x5'),_0x63f7('0x6'),_0x63f7('0x7')];var monitorFormat={'wav':_0x63f7('0x8'),'wav49':'wav49','gsm':_0x63f7('0x9')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x63f7('0xa')};function VoiceQueue(_0x43e1ca){this['id']=_0x43e1ca['id']||0x0;this[_0x63f7('0xb')]=_0x43e1ca[_0x63f7('0xb')]||'';this[_0x63f7('0xc')]=_0x43e1ca[_0x63f7('0xc')]||'';this[_0x63f7('0xd')]=_0x43e1ca[_0x63f7('0xd')]||_0x63f7('0xe');this[_0x63f7('0xf')]=0x0;this['talking']=0x0;this[_0x63f7('0x10')]=0x0;this[_0x63f7('0x11')]=0x0;this[_0x63f7('0x12')]=0x0;this[_0x63f7('0x13')]=0x0;this[_0x63f7('0x14')]=0x0;this[_0x63f7('0x15')]=0x0;this[_0x63f7('0x16')]=0x0;this[_0x63f7('0x17')]=0x0;this[_0x63f7('0x18')]=0x0;this[_0x63f7('0x19')]=_0x43e1ca[_0x63f7('0x19')]||![];this['acwTimeout']=_0x43e1ca[_0x63f7('0x1a')]||0xa;this[_0x63f7('0x1b')]=_0x43e1ca[_0x63f7('0x1b')]||'no';this[_0x63f7('0x1c')]=!![];this['message']='';this[_0x63f7('0x1d')]=0x0;this[_0x63f7('0x1e')]=0x0;this[_0x63f7('0x1f')]=_0x43e1ca[_0x63f7('0x1f')]||null;this[_0x63f7('0x20')]=_0x43e1ca[_0x63f7('0x20')]?_0x43e1ca['dialGlobalInterval']:null;this[_0x63f7('0x21')]=_0x43e1ca['dialActive'];this[_0x63f7('0x22')]=_0x43e1ca[_0x63f7('0x22')]||_0x63f7('0x23');this['dialLimitChannel']=_0x43e1ca[_0x63f7('0x24')]||0x0;this[_0x63f7('0x25')]=_0x43e1ca[_0x63f7('0x25')]||0x0;this[_0x63f7('0x26')]=_0x43e1ca['dialPowerLevel']||0x1;this[_0x63f7('0x27')]=_0x43e1ca['dialPredictiveOptimization']||'dropRate';this[_0x63f7('0x28')]=_0x43e1ca[_0x63f7('0x28')]||0.03;this[_0x63f7('0x29')]=_0x43e1ca['dialPredictiveInterval']||0x258;this[_0x63f7('0x2a')]=_0x43e1ca['dialOriginateCallerIdName']||_0x63f7('0x2b');this[_0x63f7('0x2c')]=_0x43e1ca[_0x63f7('0x2c')]||_0x63f7('0x2b');this[_0x63f7('0x2d')]=_0x43e1ca['dialOriginateTimeout']||0x1e;this['dialQueueOptions']=_0x43e1ca[_0x63f7('0x2e')]||'tTxX';this[_0x63f7('0x2f')]=_0x43e1ca[_0x63f7('0x2f')]||0x3;this[_0x63f7('0x30')]=_0x43e1ca['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0x43e1ca['dialCongestionMaxRetry']||0x3;this[_0x63f7('0x31')]=_0x43e1ca[_0x63f7('0x31')]||0x96;this[_0x63f7('0x32')]=_0x43e1ca[_0x63f7('0x32')]||0x3;this[_0x63f7('0x33')]=_0x43e1ca[_0x63f7('0x33')]||0x96;this[_0x63f7('0x34')]=_0x43e1ca[_0x63f7('0x34')]||0x3;this[_0x63f7('0x35')]=_0x43e1ca[_0x63f7('0x35')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x43e1ca[_0x63f7('0x36')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x43e1ca[_0x63f7('0x37')]||0x96;this['dialDropMaxRetry']=_0x43e1ca['dialDropMaxRetry']||0x3;this[_0x63f7('0x38')]=_0x43e1ca[_0x63f7('0x38')]||0x96;this['dialAbandonedMaxRetry']=_0x43e1ca[_0x63f7('0x39')]||0x3;this[_0x63f7('0x3a')]=_0x43e1ca[_0x63f7('0x3a')]||0x96;this[_0x63f7('0x3b')]=_0x43e1ca['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x43e1ca[_0x63f7('0x3c')]||0x96;this[_0x63f7('0x3d')]=_0x43e1ca[_0x63f7('0x3d')]||0x3;this[_0x63f7('0x3e')]=_0x43e1ca[_0x63f7('0x3e')]||0x96;this[_0x63f7('0x3f')]=_0x43e1ca['dialGlobalMaxRetry']||0x4;this[_0x63f7('0x40')]=_0x43e1ca[_0x63f7('0x40')]?_0x43e1ca['Trunk']:undefined;this['TrunkBackup']=_0x43e1ca[_0x63f7('0x41')]?_0x43e1ca[_0x63f7('0x41')]:undefined;this['dialPrefix']=_0x43e1ca[_0x63f7('0x42')]||undefined;this[_0x63f7('0x43')]=_0x43e1ca[_0x63f7('0x43')]?_0x43e1ca[_0x63f7('0x43')]:undefined;this['dialOrderByScheduledAt']=_0x43e1ca['dialOrderByScheduledAt']||_0x63f7('0x44');this['dialRandomLastDigitCallerIdNumber']=_0x43e1ca[_0x63f7('0x45')]||undefined;this['dialCutDigit']=_0x43e1ca[_0x63f7('0x46')]||undefined;this['strategy']=strategy[_0x43e1ca[_0x63f7('0x47')]]||_0x63f7('0x48');this[_0x63f7('0x49')]=!![];this[_0x63f7('0x4a')]=_0x43e1ca['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x43e1ca[_0x63f7('0x4b')];this['dialAMDGreeting']=_0x43e1ca[_0x63f7('0x4c')];this[_0x63f7('0x4d')]=_0x43e1ca[_0x63f7('0x4d')];this[_0x63f7('0x4e')]=_0x43e1ca[_0x63f7('0x4e')];this['dialAMDMinWordLength']=_0x43e1ca['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x43e1ca['dialAMDBetweenWordsSilence'];this[_0x63f7('0x4f')]=_0x43e1ca[_0x63f7('0x4f')];this['dialAMDSilenceThreshold']=_0x43e1ca['dialAMDSilenceThreshold'];this[_0x63f7('0x50')]=_0x43e1ca['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this['pTalking']=0x0;this[_0x63f7('0x51')]=_0x43e1ca[_0x63f7('0x51')];this[_0x63f7('0x52')]=0x0;this[_0x63f7('0x53')]=0x0;this[_0x63f7('0x54')]=0x0;this[_0x63f7('0x55')]=0x0;this[_0x63f7('0x56')]=0x0;this[_0x63f7('0x57')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x63f7('0x58')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0x63f7('0x59')]=0x0;this[_0x63f7('0x5a')]=0x0;this[_0x63f7('0x5b')]=0x0;this[_0x63f7('0x5c')]=0x0;this[_0x63f7('0x5d')]=0x0;this['startProgressive']=undefined;this[_0x63f7('0x5e')]=undefined;this[_0x63f7('0x5f')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x63f7('0x60')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x63f7('0x61')]=0x0;this[_0x63f7('0x62')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x63f7('0x63')]=0x0;this[_0x63f7('0x64')]=0x0;this[_0x63f7('0x65')]=_0x43e1ca[_0x63f7('0x66')]||0x14;this['predictiveIntervalMinThreshold']=_0x43e1ca['dialPredictiveIntervalMaxThreshold']||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x63f7('0x67')]=0x1;this[_0x63f7('0x68')]=0x0;this[_0x63f7('0x69')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0x63f7('0x6a')]=0x0;this[_0x63f7('0x6b')]=_0x43e1ca[_0x63f7('0x6b')]||0x1e;this[_0x63f7('0x6c')]=_0x43e1ca[_0x63f7('0x6c')]||![];this[_0x63f7('0x6d')]=_0x43e1ca['dialQueueProject2']||undefined;this[_0x63f7('0x6e')]=_0x43e1ca[_0x63f7('0x6e')]||![];this[_0x63f7('0x6f')]=_0x43e1ca[_0x63f7('0x6f')]||![];this[_0x63f7('0xc')]=monitorFormat[_0x43e1ca[_0x63f7('0xc')]]?monitorFormat[_0x43e1ca[_0x63f7('0xc')]]:undefined;this[_0x63f7('0x70')]=_0x43e1ca['mandatoryDisposition']||![];this[_0x63f7('0x71')]=_0x43e1ca[_0x63f7('0x71')]?_0x43e1ca['mandatoryDispositionPause']:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0xfe7c=['anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','sendMessageOneNotActive','originated','temp','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName'];(function(_0x4593f9,_0x4b88c3){var _0x35a8c6=function(_0x1f0a5f){while(--_0x1f0a5f){_0x4593f9['push'](_0x4593f9['shift']());}};_0x35a8c6(++_0x4b88c3);}(_0xfe7c,0xc8));var _0xcfe7=function(_0x4de113,_0x1defd2){_0x4de113=_0x4de113-0x0;var _0x72015d=_0xfe7c[_0x4de113];return _0x72015d;};'use strict';var statusDesc=[_0xcfe7('0x0'),_0xcfe7('0x1'),_0xcfe7('0x2'),'busy',_0xcfe7('0x3'),_0xcfe7('0x4'),_0xcfe7('0x5'),_0xcfe7('0x6'),'onhold'];var monitorFormat={'wav':_0xcfe7('0x7'),'wav49':_0xcfe7('0x8'),'gsm':_0xcfe7('0x9')};var strategy={'rrmemory':_0xcfe7('0xa'),'roundrobin':_0xcfe7('0xb')};function VoiceQueue(_0x5945df){this['id']=_0x5945df['id']||0x0;this[_0xcfe7('0xc')]=_0x5945df[_0xcfe7('0xc')]||'';this[_0xcfe7('0xd')]=_0x5945df[_0xcfe7('0xd')]||'';this[_0xcfe7('0xe')]=_0x5945df['type']||_0xcfe7('0xf');this[_0xcfe7('0x10')]=0x0;this[_0xcfe7('0x11')]=0x0;this[_0xcfe7('0x12')]=0x0;this[_0xcfe7('0x13')]=0x0;this['sumDuration']=0x0;this[_0xcfe7('0x14')]=0x0;this[_0xcfe7('0x15')]=0x0;this[_0xcfe7('0x16')]=0x0;this[_0xcfe7('0x17')]=0x0;this[_0xcfe7('0x18')]=0x0;this[_0xcfe7('0x19')]=0x0;this[_0xcfe7('0x1a')]=_0x5945df[_0xcfe7('0x1a')]||![];this['acwTimeout']=_0x5945df[_0xcfe7('0x1b')]||0xa;this['autopause']=_0x5945df['autopause']||'no';this[_0xcfe7('0x1c')]=!![];this['message']='';this[_0xcfe7('0x1d')]=0x0;this[_0xcfe7('0x1e')]=0x0;this['dialTimezone']=_0x5945df['dialTimezone']||null;this[_0xcfe7('0x1f')]=_0x5945df[_0xcfe7('0x1f')]?_0x5945df[_0xcfe7('0x1f')]:null;this[_0xcfe7('0x20')]=_0x5945df['dialActive'];this[_0xcfe7('0x21')]=_0x5945df[_0xcfe7('0x21')]||'progressive';this['dialLimitChannel']=_0x5945df[_0xcfe7('0x22')]||0x0;this[_0xcfe7('0x23')]=_0x5945df['dialLimitQueue']||0x0;this['dialPowerLevel']=_0x5945df[_0xcfe7('0x24')]||0x1;this[_0xcfe7('0x25')]=_0x5945df[_0xcfe7('0x25')]||_0xcfe7('0x26');this[_0xcfe7('0x27')]=_0x5945df[_0xcfe7('0x27')]||0.03;this[_0xcfe7('0x28')]=_0x5945df[_0xcfe7('0x28')]||0x258;this[_0xcfe7('0x29')]=_0x5945df[_0xcfe7('0x29')]||_0xcfe7('0x2a');this[_0xcfe7('0x2b')]=_0x5945df[_0xcfe7('0x2b')]||_0xcfe7('0x2a');this['dialOriginateTimeout']=_0x5945df[_0xcfe7('0x2c')]||0x1e;this[_0xcfe7('0x2d')]=_0x5945df[_0xcfe7('0x2d')]||'tTxX';this['dialQueueTimeout']=_0x5945df['dialQueueTimeout']||0x3;this[_0xcfe7('0x2e')]=_0x5945df[_0xcfe7('0x2e')]||undefined;this[_0xcfe7('0x2f')]=_0x5945df[_0xcfe7('0x2f')]||0x3;this['dialCongestionRetryFrequency']=_0x5945df[_0xcfe7('0x30')]||0x96;this[_0xcfe7('0x31')]=_0x5945df[_0xcfe7('0x31')]||0x3;this[_0xcfe7('0x32')]=_0x5945df['dialBusyRetryFrequency']||0x96;this[_0xcfe7('0x33')]=_0x5945df[_0xcfe7('0x33')]||0x3;this[_0xcfe7('0x34')]=_0x5945df[_0xcfe7('0x34')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x5945df[_0xcfe7('0x35')]||0x3;this[_0xcfe7('0x36')]=_0x5945df[_0xcfe7('0x36')]||0x96;this[_0xcfe7('0x37')]=_0x5945df[_0xcfe7('0x37')]||0x3;this[_0xcfe7('0x38')]=_0x5945df[_0xcfe7('0x38')]||0x96;this[_0xcfe7('0x39')]=_0x5945df['dialAbandonedMaxRetry']||0x3;this[_0xcfe7('0x3a')]=_0x5945df['dialAbandonedRetryFrequency']||0x96;this[_0xcfe7('0x3b')]=_0x5945df['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x5945df[_0xcfe7('0x3c')]||0x96;this[_0xcfe7('0x3d')]=_0x5945df[_0xcfe7('0x3d')]||0x3;this['dialAgentRejectRetryFrequency']=_0x5945df[_0xcfe7('0x3e')]||0x96;this[_0xcfe7('0x3f')]=_0x5945df[_0xcfe7('0x3f')]||0x4;this[_0xcfe7('0x40')]=_0x5945df['Trunk']?_0x5945df[_0xcfe7('0x40')]:undefined;this[_0xcfe7('0x41')]=_0x5945df['TrunkBackup']?_0x5945df[_0xcfe7('0x41')]:undefined;this[_0xcfe7('0x42')]=_0x5945df[_0xcfe7('0x42')]||undefined;this[_0xcfe7('0x43')]=_0x5945df[_0xcfe7('0x43')]?_0x5945df[_0xcfe7('0x43')]:undefined;this[_0xcfe7('0x44')]=_0x5945df[_0xcfe7('0x44')]||'DESC';this[_0xcfe7('0x45')]=_0x5945df[_0xcfe7('0x45')]||undefined;this[_0xcfe7('0x46')]=_0x5945df[_0xcfe7('0x46')]||undefined;this[_0xcfe7('0x47')]=strategy[_0x5945df[_0xcfe7('0x47')]]||'rrmemory';this[_0xcfe7('0x48')]=!![];this[_0xcfe7('0x49')]=_0x5945df[_0xcfe7('0x49')]||![];this[_0xcfe7('0x4a')]=_0x5945df[_0xcfe7('0x4a')];this[_0xcfe7('0x4b')]=_0x5945df[_0xcfe7('0x4b')];this[_0xcfe7('0x4c')]=_0x5945df['dialAMDAfterGreetingSilence'];this[_0xcfe7('0x4d')]=_0x5945df['dialAMDTotalAnalysisTime'];this[_0xcfe7('0x4e')]=_0x5945df[_0xcfe7('0x4e')];this[_0xcfe7('0x4f')]=_0x5945df[_0xcfe7('0x4f')];this[_0xcfe7('0x50')]=_0x5945df[_0xcfe7('0x50')];this[_0xcfe7('0x51')]=_0x5945df[_0xcfe7('0x51')];this[_0xcfe7('0x52')]=_0x5945df['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this[_0xcfe7('0x53')]=0x0;this[_0xcfe7('0x54')]=_0x5945df[_0xcfe7('0x54')];this[_0xcfe7('0x55')]=0x0;this[_0xcfe7('0x56')]=0x0;this[_0xcfe7('0x57')]=0x0;this[_0xcfe7('0x58')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xcfe7('0x59')]=0x0;this[_0xcfe7('0x5a')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xcfe7('0x5b')]=0x0;this[_0xcfe7('0x5c')]=0x0;this[_0xcfe7('0x5d')]=0x0;this[_0xcfe7('0x5e')]=0x0;this[_0xcfe7('0x5f')]=0x0;this[_0xcfe7('0x60')]=0x0;this['startProgressive']=undefined;this[_0xcfe7('0x61')]=undefined;this[_0xcfe7('0x62')]=undefined;this[_0xcfe7('0x63')]=1.05;this[_0xcfe7('0x64')]=0x0;this[_0xcfe7('0x65')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xcfe7('0x66')]=0x0;this[_0xcfe7('0x67')]=0x0;this[_0xcfe7('0x68')]=0x0;this[_0xcfe7('0x69')]=0x0;this[_0xcfe7('0x6a')]=0x0;this['predictiveIntervalMaxThreshold']=_0x5945df[_0xcfe7('0x6b')]||0x14;this['predictiveIntervalMinThreshold']=_0x5945df[_0xcfe7('0x6b')]||0xa;this[_0xcfe7('0x6c')]=0x0;this[_0xcfe7('0x6d')]=0x0;this[_0xcfe7('0x6e')]=0x1;this[_0xcfe7('0x6f')]=0x0;this[_0xcfe7('0x70')]=0x0;this[_0xcfe7('0x71')]=0x0;this[_0xcfe7('0x72')]=0x0;this[_0xcfe7('0x73')]=_0x5945df[_0xcfe7('0x73')]||0x1e;this[_0xcfe7('0x74')]=_0x5945df[_0xcfe7('0x74')]||![];this[_0xcfe7('0x75')]=_0x5945df[_0xcfe7('0x75')]||undefined;this[_0xcfe7('0x76')]=_0x5945df[_0xcfe7('0x76')]||![];this['dialAgiAfterHangupAgent']=_0x5945df['dialAgiAfterHangupAgent']||![];this['monitor_format']=monitorFormat[_0x5945df[_0xcfe7('0xd')]]?monitorFormat[_0x5945df['monitor_format']]:undefined;this['mandatoryDisposition']=_0x5945df[_0xcfe7('0x77')]||![];this[_0xcfe7('0x78')]=_0x5945df[_0xcfe7('0x78')]?_0x5945df[_0xcfe7('0x78')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index f93446e..9507b19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b24=['accessKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x2827f9,_0x2682a8){var _0x5a00a5=function(_0x5b2dec){while(--_0x5b2dec){_0x2827f9['push'](_0x2827f9['shift']());}};_0x5a00a5(++_0x2682a8);}(_0x0b24,0x19b));var _0x40b2=function(_0xdc6000,_0x452224){_0xdc6000=_0xdc6000-0x0;var _0x51ff91=_0x0b24[_0xdc6000];return _0x51ff91;};'use strict';function VtigerAccount(_0x156c41){this['id']=_0x156c41['id']||0x0;this[_0x40b2('0x0')]=_0x156c41['name']||'';this[_0x40b2('0x1')]=_0x156c41[_0x40b2('0x1')]||'';this['accessKey']=_0x156c41[_0x40b2('0x2')]||'';this[_0x40b2('0x3')]=_0x156c41[_0x40b2('0x3')]||'';this[_0x40b2('0x4')]=_0x156c41['serverUrl']||'';this[_0x40b2('0x5')]=_0x156c41[_0x40b2('0x5')]||{};}module[_0x40b2('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x6835=['serverUrl','Configurations','name','username','accessKey','remoteUri'];(function(_0x441d58,_0x269ea6){var _0xa82e04=function(_0x249e2f){while(--_0x249e2f){_0x441d58['push'](_0x441d58['shift']());}};_0xa82e04(++_0x269ea6);}(_0x6835,0x188));var _0x5683=function(_0x12fb66,_0x33f22e){_0x12fb66=_0x12fb66-0x0;var _0x2ae569=_0x6835[_0x12fb66];return _0x2ae569;};'use strict';function VtigerAccount(_0x40a8ab){this['id']=_0x40a8ab['id']||0x0;this[_0x5683('0x0')]=_0x40a8ab[_0x5683('0x0')]||'';this[_0x5683('0x1')]=_0x40a8ab[_0x5683('0x1')]||'';this[_0x5683('0x2')]=_0x40a8ab['accessKey']||'';this[_0x5683('0x3')]=_0x40a8ab['remoteUri']||'';this[_0x5683('0x4')]=_0x40a8ab[_0x5683('0x4')]||'';this['Configurations']=_0x40a8ab[_0x5683('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index c5bb95b..6765080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7810=['integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type'];(function(_0x5620ce,_0x44383f){var _0x5d0b7d=function(_0x39558a){while(--_0x39558a){_0x5620ce['push'](_0x5620ce['shift']());}};_0x5d0b7d(++_0x44383f);}(_0x7810,0x1b1));var _0x0781=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x7810[_0x1694f5];return _0x5b4321;};'use strict';function ZendeskAccount(_0x580913){this['id']=_0x580913['id']||0x0;this[_0x0781('0x0')]=_0x580913[_0x0781('0x0')]||'';this[_0x0781('0x1')]=_0x580913[_0x0781('0x1')]||'';this[_0x0781('0x2')]=_0x580913[_0x0781('0x2')]||'';this[_0x0781('0x3')]=_0x580913[_0x0781('0x3')]||'';this['remoteUri']=_0x580913[_0x0781('0x4')]||'';this['authType']=_0x580913[_0x0781('0x5')]||'';this[_0x0781('0x6')]=_0x580913[_0x0781('0x6')]||_0x0781('0x7');this[_0x0781('0x8')]=_0x580913[_0x0781('0x8')]||'';this[_0x0781('0x9')]=_0x580913[_0x0781('0x9')]||{};}module[_0x0781('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x1aed=['Configurations','exports','name','username','password','remoteUri','authType','type','serverUrl'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x1aed,0x1df));var _0xd1ae=function(_0xe9dd1a,_0x3ef2c6){_0xe9dd1a=_0xe9dd1a-0x0;var _0x5dc3d8=_0x1aed[_0xe9dd1a];return _0x5dc3d8;};'use strict';function ZendeskAccount(_0x29b21d){this['id']=_0x29b21d['id']||0x0;this['name']=_0x29b21d[_0xd1ae('0x0')]||'';this[_0xd1ae('0x1')]=_0x29b21d['username']||'';this[_0xd1ae('0x2')]=_0x29b21d['password']||'';this['token']=_0x29b21d['token']||'';this[_0xd1ae('0x3')]=_0x29b21d['remoteUri']||'';this[_0xd1ae('0x4')]=_0x29b21d[_0xd1ae('0x4')]||'';this['type']=_0x29b21d[_0xd1ae('0x5')]||'integrationTab';this[_0xd1ae('0x6')]=_0x29b21d[_0xd1ae('0x6')]||'';this[_0xd1ae('0x7')]=_0x29b21d['Configurations']||{};}module[_0xd1ae('0x8')]=ZendeskAccount;
\ No newline at end of file
index e9326a2..f56f2c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2789=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x2789,0x145));var _0x9278=function(_0x4404fa,_0x34f28f){_0x4404fa=_0x4404fa-0x0;var _0x45998f=_0x2789[_0x4404fa];return _0x45998f;};'use strict';function ZohoAccount(_0x2399be){this['id']=_0x2399be['id']||0x0;this['name']=_0x2399be[_0x9278('0x0')]||'';this[_0x9278('0x1')]=_0x2399be['description']||'';this['host']=_0x2399be[_0x9278('0x2')]||'';this[_0x9278('0x3')]=_0x2399be[_0x9278('0x3')]||'';this[_0x9278('0x4')]=_0x2399be['clientId']||'';this[_0x9278('0x5')]=_0x2399be[_0x9278('0x5')]||'';this[_0x9278('0x6')]=_0x2399be[_0x9278('0x6')]||'';this[_0x9278('0x7')]=_0x2399be[_0x9278('0x7')]||'';this[_0x9278('0x8')]=_0x2399be[_0x9278('0x8')]||'';this['Configurations']=_0x2399be[_0x9278('0x9')]||{};}module[_0x9278('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x4070=['serverUrl','code','refreshToken','Configurations','name','description','host','zone','clientId','clientSecret'];(function(_0x4c96af,_0x1ed64a){var _0x5d9395=function(_0x2c21cb){while(--_0x2c21cb){_0x4c96af['push'](_0x4c96af['shift']());}};_0x5d9395(++_0x1ed64a);}(_0x4070,0x108));var _0x0407=function(_0x141176,_0x3f70c2){_0x141176=_0x141176-0x0;var _0x5dd29e=_0x4070[_0x141176];return _0x5dd29e;};'use strict';function ZohoAccount(_0x3726f8){this['id']=_0x3726f8['id']||0x0;this[_0x0407('0x0')]=_0x3726f8[_0x0407('0x0')]||'';this[_0x0407('0x1')]=_0x3726f8[_0x0407('0x1')]||'';this[_0x0407('0x2')]=_0x3726f8['host']||'';this['zone']=_0x3726f8[_0x0407('0x3')]||'';this[_0x0407('0x4')]=_0x3726f8['clientId']||'';this[_0x0407('0x5')]=_0x3726f8['clientSecret']||'';this['serverUrl']=_0x3726f8[_0x0407('0x6')]||'';this[_0x0407('0x7')]=_0x3726f8[_0x0407('0x7')]||'';this[_0x0407('0x8')]=_0x3726f8[_0x0407('0x8')]||'';this[_0x0407('0x9')]=_0x3726f8[_0x0407('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 7532ff9..005c6c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec25=['Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','\x22%s\x22\x20<%s>','number','exports','lodash','moment','isNil','string','uniqueid','name','type','queue','dialAnswer','membername'];(function(_0x432940,_0x284a59){var _0x286e77=function(_0x7e2c72){while(--_0x7e2c72){_0x432940['push'](_0x432940['shift']());}};_0x286e77(++_0x284a59);}(_0xec25,0x156));var _0x5ec2=function(_0x3a3d8b,_0x55c991){_0x3a3d8b=_0x3a3d8b-0x0;var _0x5b4dc3=_0xec25[_0x3a3d8b];return _0x5b4dc3;};'use strict';var util=require('util');var _=require(_0x5ec2('0x0'));var moment=require(_0x5ec2('0x1'));function checkNameSurname(_0x55a356,_0x2d839c,_0x177c60){var _0x14dfbe='';if(!_['isNil'](_0x2d839c)&&'string'===typeof _0x2d839c){_0x14dfbe+=_0x2d839c;}if(!_[_0x5ec2('0x2')](_0x177c60)&&_0x5ec2('0x3')===typeof _0x177c60){_0x14dfbe+='\x20'+_0x177c60;}if(_0x14dfbe!==''){return _0x14dfbe;}return _0x55a356;}function Action(_0x5c518d,_0x54dbc1,_0x4c03ab,_0x25cd47,_0x2dfd56){this[_0x5ec2('0x4')]=_0x4c03ab||undefined;this['idContact']=_0x5c518d['id'];this['queue']=_0x54dbc1[_0x5ec2('0x5')];this[_0x5ec2('0x6')]=_0x54dbc1[_0x5ec2('0x6')];this['campaigntype']=_0x5ec2('0x7');this[_0x5ec2('0x8')]=![];this[_0x5ec2('0x9')]=_[_0x5ec2('0x2')](_0x5c518d['Agent'])?undefined:_0x5c518d[_0x5ec2('0xa')]['name'];this[_0x5ec2('0xb')]=this[_0x5ec2('0x9')]?util[_0x5ec2('0xc')](_0x5ec2('0xd'),this['membername']):_0x25cd47||undefined;this[_0x5ec2('0xe')]=checkNameSurname(_0x5c518d[_0x5ec2('0xf')][_0x5ec2('0x10')],_0x5c518d[_0x5ec2('0xf')][_0x5ec2('0x11')],_0x5c518d[_0x5ec2('0xf')][_0x5ec2('0x12')]);this[_0x5ec2('0x13')]=_0x5c518d['active']||![];this[_0x5ec2('0x14')]=_0x5c518d[_0x5ec2('0xf')]['phone'];this[_0x5ec2('0x15')]=_0x5c518d['scheduledat'];this[_0x5ec2('0x16')]=_0x5c518d[_0x5ec2('0x16')]||0x0;this['countcongestionretry']=_0x5c518d[_0x5ec2('0x17')]||0x0;this[_0x5ec2('0x18')]=_0x5c518d['countnoanswerretry']||0x0;this[_0x5ec2('0x19')]=(_0x5c518d[_0x5ec2('0x16')]||0x0)+(_0x5c518d[_0x5ec2('0x17')]||0x0)+(_0x5c518d['countnoanswerretry']||0x0)+(_0x5c518d[_0x5ec2('0x1a')]||0x0)+(_0x5c518d[_0x5ec2('0x1b')]||0x0)+(_0x5c518d[_0x5ec2('0x1c')]||0x0)+(_0x5c518d[_0x5ec2('0x1d')]||0x0)+(_0x5c518d[_0x5ec2('0x1e')]||0x0);this['countnosuchnumberretry']=_0x5c518d[_0x5ec2('0x1a')]||0x0;this[_0x5ec2('0x1b')]=_0x5c518d[_0x5ec2('0x1b')]||0x0;this[_0x5ec2('0x1c')]=_0x5c518d[_0x5ec2('0x1c')]||0x0;this[_0x5ec2('0x1d')]=_0x5c518d[_0x5ec2('0x1d')]||0x0;this[_0x5ec2('0x1e')]=_0x5c518d[_0x5ec2('0x1e')]||0x0;this['callback']=_0x5c518d[_0x5ec2('0x1f')];this[_0x5ec2('0x20')]=_0x5c518d[_0x5ec2('0x20')];this[_0x5ec2('0x21')]=_0x5c518d[_0x5ec2('0x21')];this[_0x5ec2('0x22')]=_0x5c518d[_0x5ec2('0x22')];this[_0x5ec2('0x23')]=_0x5c518d[_0x5ec2('0x23')];this['ListId']=_0x5c518d[_0x5ec2('0x24')];this['UserId']=_[_0x5ec2('0x2')](_0x5c518d[_0x5ec2('0xa')])?_0x5c518d[_0x5ec2('0x25')]:_0x5c518d[_0x5ec2('0xa')]['id'];this['VoiceQueueId']=_0x5c518d[_0x5ec2('0x26')];this[_0x5ec2('0x27')]='';this['originatecalleridname']='';}Action[_0x5ec2('0x28')]['getCaller']=function(){return util['format'](_0x5ec2('0x29'),this[_0x5ec2('0xe')],this[_0x5ec2('0x2a')]);};module[_0x5ec2('0x2b')]=Action;
\ No newline at end of file
+var _0xa27e=['calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','name','campaigntype','queue','dialAnswer','Agent','channelAgent','format','SIP/%s','membername'];(function(_0x34bbd5,_0x3c810a){var _0x46244f=function(_0x5884b9){while(--_0x5884b9){_0x34bbd5['push'](_0x34bbd5['shift']());}};_0x46244f(++_0x3c810a);}(_0xa27e,0x12b));var _0xea27=function(_0xc7d589,_0x149b6f){_0xc7d589=_0xc7d589-0x0;var _0x2df393=_0xa27e[_0xc7d589];return _0x2df393;};'use strict';var util=require(_0xea27('0x0'));var _=require(_0xea27('0x1'));var moment=require(_0xea27('0x2'));function checkNameSurname(_0x41041b,_0x2bfa46,_0x1bd05e){var _0x1590a5='';if(!_[_0xea27('0x3')](_0x2bfa46)&&_0xea27('0x4')===typeof _0x2bfa46){_0x1590a5+=_0x2bfa46;}if(!_[_0xea27('0x3')](_0x1bd05e)&&_0xea27('0x4')===typeof _0x1bd05e){_0x1590a5+='\x20'+_0x1bd05e;}if(_0x1590a5!==''){return _0x1590a5;}return _0x41041b;}function Action(_0xe645d4,_0x361418,_0x422d6a,_0x480816,_0x32e922){this[_0xea27('0x5')]=_0x422d6a||undefined;this[_0xea27('0x6')]=_0xe645d4['id'];this['queue']=_0x361418[_0xea27('0x7')];this['type']=_0x361418['type'];this[_0xea27('0x8')]=_0xea27('0x9');this[_0xea27('0xa')]=![];this['membername']=_[_0xea27('0x3')](_0xe645d4['Agent'])?undefined:_0xe645d4[_0xea27('0xb')][_0xea27('0x7')];this[_0xea27('0xc')]=this['membername']?util[_0xea27('0xd')](_0xea27('0xe'),this[_0xea27('0xf')]):_0x480816||undefined;this[_0xea27('0x10')]=checkNameSurname(_0xe645d4[_0xea27('0x11')][_0xea27('0x12')],_0xe645d4[_0xea27('0x11')][_0xea27('0x13')],_0xe645d4['Contact']['lastName']);this[_0xea27('0x14')]=_0xe645d4[_0xea27('0x14')]||![];this[_0xea27('0x15')]=_0xe645d4[_0xea27('0x11')][_0xea27('0x12')];this[_0xea27('0x16')]=_0xe645d4['scheduledat'];this[_0xea27('0x17')]=_0xe645d4[_0xea27('0x17')]||0x0;this['countcongestionretry']=_0xe645d4[_0xea27('0x18')]||0x0;this[_0xea27('0x19')]=_0xe645d4[_0xea27('0x19')]||0x0;this['countglobal']=(_0xe645d4[_0xea27('0x17')]||0x0)+(_0xe645d4[_0xea27('0x18')]||0x0)+(_0xe645d4[_0xea27('0x19')]||0x0)+(_0xe645d4['countnosuchnumberretry']||0x0)+(_0xe645d4[_0xea27('0x1a')]||0x0)+(_0xe645d4[_0xea27('0x1b')]||0x0)+(_0xe645d4[_0xea27('0x1c')]||0x0)+(_0xe645d4[_0xea27('0x1d')]||0x0);this[_0xea27('0x1e')]=_0xe645d4[_0xea27('0x1e')]||0x0;this[_0xea27('0x1a')]=_0xe645d4[_0xea27('0x1a')]||0x0;this['countabandonedretry']=_0xe645d4[_0xea27('0x1b')]||0x0;this[_0xea27('0x1c')]=_0xe645d4[_0xea27('0x1c')]||0x0;this[_0xea27('0x1d')]=_0xe645d4[_0xea27('0x1d')]||0x0;this[_0xea27('0x1f')]=_0xe645d4['callback'];this[_0xea27('0x20')]=_0xe645d4[_0xea27('0x20')];this[_0xea27('0x21')]=_0xe645d4[_0xea27('0x21')];this[_0xea27('0x22')]=_0xe645d4[_0xea27('0x22')];this['ContactId']=_0xe645d4['ContactId'];this[_0xea27('0x23')]=_0xe645d4[_0xea27('0x23')];this['UserId']=_['isNil'](_0xe645d4[_0xea27('0xb')])?_0xe645d4[_0xea27('0x24')]:_0xe645d4['Agent']['id'];this[_0xea27('0x25')]=_0xe645d4[_0xea27('0x25')];this[_0xea27('0x26')]='';this[_0xea27('0x27')]='';}Action[_0xea27('0x28')][_0xea27('0x29')]=function(){return util['format'](_0xea27('0x2a'),this[_0xea27('0x10')],this[_0xea27('0x2b')]);};module[_0xea27('0x2c')]=Action;
\ No newline at end of file
index 2cf2afc..c738b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e2d=['\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','starttime','variablesAction','channelAgent','calleridnum','user:%s','user:agentconnect','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','isFailure','response','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','syncHangupRequest','variables','filterKey','addVariable','keys','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','bind','hangup','syncHangup','hanguprequest','syncDialEnd','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','name','strategy','answered','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','dialActive','dialMethod','dialOriginateCallerIdName','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','Interval','stringify','format','voice:queue:%s','voice_queue_presence:remove','sendMessageOneNotActive','available','paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','prototype','hasOwnProperty','preview','booked','clearZombieChannels','outbound','setMessage','clearZombieChannel','info','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','agentReadyId','then','length','scheduledat','Agent','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','[HistoryDialRecallInQueue][historyCatch]','logCustomer','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','loggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','countnosuchnumberretry','unlockAgent','activeContact','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','outboundAnswerCallsDay','decrementTalkink','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','linkedid','BUSY','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','countbusyretry','dialBusyRetryFrequency','countnoanswerretry','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','[callProgressDetectingCustomer][logCongestion]','countcongestionretry','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','reason','logAgent','createAgentHistory','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','isNil','Contact','phone','lookAgent','execCall','[Preview][execCall][success]','Queue:\x20','idContact','custom:agentcalled','Calling','logger','logBlacklist','createHistory','[Blacklist][error]','SIP/%s','status','reachable','unmonitored','execRun','unlock','unlockContact','recallme','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9e2d,0x189));var _0xd9e2=function(_0xadbe21,_0x1f367e){_0xadbe21=_0xadbe21-0x0;var _0x283c67=_0x9e2d[_0xadbe21];return _0x283c67;};'use strict';var util=require(_0xd9e2('0x0'));var _=require(_0xd9e2('0x1'));var BPromise=require(_0xd9e2('0x2'));var uuid=require(_0xd9e2('0x3'));var moment=require(_0xd9e2('0x4'));var md5=require(_0xd9e2('0x5'));var Redis=require(_0xd9e2('0x6'));var config=require(_0xd9e2('0x7'));var logger=require('../../../config/logger')('preview');var loggerAction=require(_0xd9e2('0x8'))(_0xd9e2('0x9'));var ami=require('../ami');var rpcDb=require(_0xd9e2('0xa'));var Action=require(_0xd9e2('0xb'));var ut=require(_0xd9e2('0xc'));config[_0xd9e2('0xd')]=_[_0xd9e2('0xe')](config[_0xd9e2('0xd')],{'host':_0xd9e2('0xf'),'port':0x18eb});var io=require(_0xd9e2('0x10'))(new Redis(config[_0xd9e2('0xd')]));var Sequence=function(){};Sequence['prototype'][_0xd9e2('0x11')]=function(_0x1ddc29){this[_0xd9e2('0x12')]=this[_0xd9e2('0x12')]?this[_0xd9e2('0x12')][_0xd9e2('0x13')](_0x1ddc29):_0x1ddc29();};function Preview(_0x12310b){this[_0xd9e2('0x14')]=new Sequence();this[_0xd9e2('0x15')]=_0x12310b[_0xd9e2('0x16')];this['trunks']=_0x12310b[_0xd9e2('0x17')];this[_0xd9e2('0x18')]={};this[_0xd9e2('0x19')]=_0x12310b[_0xd9e2('0x19')];this[_0xd9e2('0x1a')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x1c'),this[_0xd9e2('0x1d')][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x1e'),this['syncHangupRequest'][_0xd9e2('0x1b')](this));ami['on']('dialend',this[_0xd9e2('0x1f')]['bind'](this));ami['on'](_0xd9e2('0x20'),this['syncNewExten'][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x21'),this[_0xd9e2('0x22')][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x23'),this[_0xd9e2('0x24')][_0xd9e2('0x1b')](this));ami['on']('blindtransfer',this[_0xd9e2('0x25')][_0xd9e2('0x1b')](this));this[_0xd9e2('0x26')](this['campaignsPreview']);}function emit(_0x497d73,_0x3e96de,_0x1b4d7a){io['to'](_0x497d73)[_0xd9e2('0x27')](_0x3e96de,_0x1b4d7a);}function emitCampaignPreview(_0x3fada4){if(_0x3fada4['type']==='outbound'){var _0x4e35f8={'id':_0x3fada4['id'],'name':_0x3fada4[_0xd9e2('0x28')],'strategy':_0x3fada4[_0xd9e2('0x29')],'answered':_0x3fada4[_0xd9e2('0x2a')],'available':_0x3fada4['available'],'loggedIn':_0x3fada4['loggedIn'],'pTalking':_0x3fada4[_0xd9e2('0x2b')],'sumBillable':_0x3fada4[_0xd9e2('0x2c')],'sumDuration':_0x3fada4[_0xd9e2('0x2d')],'sumHoldTime':_0x3fada4[_0xd9e2('0x2e')]||0x0,'talking':_0x3fada4[_0xd9e2('0x2f')],'total':_0x3fada4[_0xd9e2('0x30')],'type':_0x3fada4['type'],'unmanaged':_0x3fada4[_0xd9e2('0x31')],'abandoned':_0x3fada4['abandoned'],'waiting':_0x3fada4[_0xd9e2('0x32')],'loggedInDb':_0x3fada4['loggedInDb'],'dialActive':_0x3fada4[_0xd9e2('0x33')],'dialMethod':_0x3fada4[_0xd9e2('0x34')],'dialOriginateCallerIdName':_0x3fada4[_0xd9e2('0x35')],'dialOriginateCallerIdNumber':_0x3fada4['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x3fada4['dialOriginateTimeout'],'dialPrefix':_0x3fada4['dialPrefix'],'outboundAnswerAgiCallsDay':_0x3fada4['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3fada4['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x3fada4[_0xd9e2('0x36')],'outboundBusyCallsDay':_0x3fada4[_0xd9e2('0x37')],'outboundCongestionCallsDay':_0x3fada4['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x3fada4['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3fada4[_0xd9e2('0x38')],'outboundDropCallsDayTimeout':_0x3fada4['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x3fada4[_0xd9e2('0x39')],'outboundNoSuchCallsDay':_0x3fada4[_0xd9e2('0x3a')],'outboundOriginateFailureCallsDay':_0x3fada4['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x3fada4[_0xd9e2('0x3b')],'outboundRejectCallsDay':_0x3fada4[_0xd9e2('0x3c')],'outboundUnknownCallsDay':_0x3fada4[_0xd9e2('0x3d')],'outboundAbandonedCallsDay':_0x3fada4[_0xd9e2('0x3e')],'predictiveIntervalAnsweredCalls':_0x3fada4[_0xd9e2('0x3f')],'predictiveIntervalAvgHoldtime':_0x3fada4[_0xd9e2('0x40')],'predictiveIntervalAvgTalktime':_0x3fada4[_0xd9e2('0x41')],'predictiveIntervalDroppedCallsCallersExit':_0x3fada4[_0xd9e2('0x42')],'predictiveIntervalDroppedCallsTimeout':_0x3fada4[_0xd9e2('0x43')],'predictiveIntervalErlangCalls':_0x3fada4['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x3fada4[_0xd9e2('0x44')],'predictiveIntervalHitRate':_0x3fada4[_0xd9e2('0x45')],'predictiveIntervalMultiplicativeFactor':_0x3fada4[_0xd9e2('0x46')],'predictiveIntervalPauses':_0x3fada4['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x3fada4[_0xd9e2('0x47')],'predictiveIntervalTotalCalls':_0x3fada4[_0xd9e2('0x48')],'message':_0x3fada4[_0xd9e2('0x49')],'originated':_0x3fada4[_0xd9e2('0x4a')],'erlangCalls':_0x3fada4[_0xd9e2('0x4b')],'erlangCallToSecond':_0x3fada4[_0xd9e2('0x4c')],'erlangAbandonmentRate':_0x3fada4[_0xd9e2('0x4d')],'erlangBusyFactor':_0x3fada4[_0xd9e2('0x4e')],'startPredictive':_0x3fada4['startPredictive'],'startProgressive':_0x3fada4['startProgressive']};if(_0x3fada4[_0xd9e2('0x4f')]){_0x4e35f8[_0xd9e2('0x4f')]={'id':_0x3fada4[_0xd9e2('0x4f')]['id'],'name':_0x3fada4[_0xd9e2('0x4f')][_0xd9e2('0x28')],'active':_0x3fada4[_0xd9e2('0x4f')][_0xd9e2('0x50')],'callerid':_0x3fada4[_0xd9e2('0x4f')][_0xd9e2('0x51')]};}if(_0x3fada4[_0xd9e2('0x52')]){_0x4e35f8[_0xd9e2('0x52')]={'id':_0x3fada4[_0xd9e2('0x52')]['id'],'name':_0x3fada4[_0xd9e2('0x52')]['name']};}var _0x15d733=md5(JSON[_0xd9e2('0x53')](_0x4e35f8));if(_0x3fada4[_0xd9e2('0x5')]!==_0x15d733){_0x3fada4[_0xd9e2('0x5')]=_0x15d733;emit(util[_0xd9e2('0x54')](_0xd9e2('0x55'),_0x4e35f8['name']),'voice_queue:save',_0x4e35f8);}}}function emitVoiceQueueChannelRemove(_0x136d6c){logger['info']('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0xd9e2('0x53')](_0x136d6c));emit(util[_0xd9e2('0x54')](_0xd9e2('0x55'),_0x136d6c[_0xd9e2('0x28')]),'voice_queue_channel:remove',_0x136d6c);io[_0xd9e2('0x27')](_0xd9e2('0x56'),_0x136d6c);}function notSendMessagesQueue(_0x1da97f){if(_0x1da97f[_0xd9e2('0x57')]){if(_0x1da97f['originated']===0x0&&_0x1da97f['pTalking']===0x0){_0x1da97f[_0xd9e2('0x57')]=![];_0x1da97f[_0xd9e2('0x58')]=0x0;_0x1da97f[_0xd9e2('0x59')]=0x0;_0x1da97f['message']=_0xd9e2('0x5a');ut['logger'](_0xd9e2('0x5b'),_0x1da97f['name']+_0xd9e2('0x5c'));}else{_0x1da97f[_0xd9e2('0x49')]=_0xd9e2('0x5d');ut['logger'](_0xd9e2('0x5b'),_0x1da97f[_0xd9e2('0x28')]+_0xd9e2('0x5e'));}emitCampaignPreview(_0x1da97f);}}Preview[_0xd9e2('0x5f')][_0xd9e2('0x26')]=function(){var _0x5a055d=this;setInterval(function(){_0x5a055d['syncCampaigns']();},0x7cf);};Preview['prototype']['syncCampaigns']=function(){var _0x14ece6=this['campaignsPreview'];this[_0xd9e2('0x1a')]+=0x1;for(var _0x413814 in _0x14ece6){if(_0x14ece6[_0xd9e2('0x60')](_0x413814)&&(_0x14ece6[_0x413814][_0xd9e2('0x34')]===_0xd9e2('0x61')||_0x14ece6[_0x413814]['dialMethod']===_0xd9e2('0x62'))&&_0x14ece6[_0x413814]['type']==='outbound'){if(this[_0xd9e2('0x1a')]>0x7){this[_0xd9e2('0x1a')]=0x0;this[_0xd9e2('0x63')]();}}if(_0x14ece6[_0xd9e2('0x60')](_0x413814)&&_0x14ece6[_0x413814]['dialMethod']===_0xd9e2('0x61')&&_0x14ece6[_0x413814]['type']===_0xd9e2('0x64')){if(_0x14ece6[_0x413814][_0xd9e2('0x33')]){this[_0xd9e2('0x65')](_0x14ece6[_0x413814]);this['recallMe'](_0x14ece6[_0x413814]);}else{notSendMessagesQueue(_0x14ece6[_0x413814]);}}}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x66')]=function(_0x5dfb90){var _0x26054f=this;this[_0xd9e2('0x14')][_0xd9e2('0x11')](function(){if(!_['isNil'](_0x26054f[_0xd9e2('0x18')][_0x5dfb90])){loggerAction[_0xd9e2('0x67')](_0xd9e2('0x68'),_0x5dfb90,_0xd9e2('0x69'),_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')],_0xd9e2('0x6b'),JSON[_0xd9e2('0x53')](_0x26054f[_0xd9e2('0x15')][_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]][_0xd9e2('0x4a')]),_0xd9e2('0x6c'),JSON['stringify'](_0x26054f[_0xd9e2('0x15')][_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]][_0xd9e2('0x2b')]),JSON['stringify'](_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6d')]),JSON[_0xd9e2('0x53')](_[_0xd9e2('0x6e')](_0x26054f[_0xd9e2('0x18')][_0x5dfb90],[_0xd9e2('0x6f'),'UserId',_0xd9e2('0x70'),_0xd9e2('0x71')])));return ami[_0xd9e2('0x72')]({'action':'status','channel':_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x73')]})[_0xd9e2('0x74')](function(_0x5591d8){if(_0x5591d8[_0xd9e2('0x49')]===_0xd9e2('0x75')){setTimeout(function(){if(_0x26054f['actions'][_0x5dfb90]){ut[_0xd9e2('0x76')](_0x26054f['campaignsPreview'][_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]],'[clearZombieChannel]');if(_0x26054f['actions'][_0x5dfb90][_0xd9e2('0x6d')]===!![]){ut['decrementTalkink'](_0x26054f['campaignsPreview'][_0x26054f[_0xd9e2('0x18')][_0x5dfb90]['queue']],_0xd9e2('0x77'));ut[_0xd9e2('0x78')](_0xd9e2('0x79')+_0x5dfb90,_0x26054f[_0xd9e2('0x18')][_0x5dfb90]['queue']);}ut[_0xd9e2('0x78')]('[Dialer][checkChannel][Preview]'+_0x5dfb90,_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]);delete _0x26054f[_0xd9e2('0x18')][_0x5dfb90];}},0x2328);}});}});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x63')]=function(){var _0x4dcf66=this;loggerAction[_0xd9e2('0x67')](_0xd9e2('0x7a'),_[_0xd9e2('0x7b')](this[_0xd9e2('0x18')]));for(var _0x31b208 in this[_0xd9e2('0x18')]){if(_0x4dcf66[_0xd9e2('0x18')][_0xd9e2('0x60')](_0x31b208)){_0x4dcf66[_0xd9e2('0x66')](_0x31b208);}}};Preview[_0xd9e2('0x5f')]['recallMe']=function(_0x4b0a35){var _0x1908f1=this;rpcDb['getContactRecallMe'](_0x4b0a35['id'],ut[_0xd9e2('0x7c')](this[_0xd9e2('0x19')]))[_0xd9e2('0x7d')](function(_0x4799c2){if(!_['isNil'](_0x4799c2)){for(var _0x4ab447=0x0;_0x4ab447<_0x4799c2[_0xd9e2('0x7e')];_0x4ab447+=0x1){if(ut['getDiff'](_0x4799c2[_0x4ab447][_0xd9e2('0x7f')])<_0x4b0a35['dialRecallMeTimeout']*0x3c){if(_0x4799c2[_0x4ab447][_0xd9e2('0x80')]&&!_0x4799c2[_0x4ab447][_0xd9e2('0x80')]['voicePause']){_0x1908f1[_0xd9e2('0x81')](_0x4799c2[_0x4ab447]['id'])[_0xd9e2('0x7d')](ut[_0xd9e2('0x82')]('[RecallMe]'))[_0xd9e2('0x74')](ut[_0xd9e2('0x82')](_0xd9e2('0x83')));}else{rpcDb[_0xd9e2('0x84')](_0x4799c2[_0x4ab447]['id']);}}else{var _0x2c2c26=new Action(_0x4799c2[_0x4ab447],_0x4b0a35);_0x2c2c26['starttime']=moment()['format'](_0xd9e2('0x85'));_0x4b0a35['outboundReCallsDay']+=0x1;ut['logCustomer'](_0x2c2c26,0x17,_0xd9e2('0x86'));if(_0x4b0a35[_0xd9e2('0x87')]){rpcDb[_0xd9e2('0x88')](ut[_0xd9e2('0x89')](_0x4799c2[_0x4ab447]));rpcDb['createCustomerHistory'](_0x2c2c26,_0xd9e2('0x8a'));}else{ut[_0xd9e2('0x8b')](_0x2c2c26,0x16,_0xd9e2('0x8c'));rpcDb[_0xd9e2('0x8d')](_0x2c2c26,_0xd9e2('0x8e'));rpcDb[_0xd9e2('0x8f')](_0x2c2c26,'[HistoryRecallClose]');}}}}})['catch'](ut['logger2'](_0xd9e2('0x90')));};Preview['prototype']['setMessage']=function(_0x44bae3){_0x44bae3[_0xd9e2('0x57')]=!![];if(ut[_0xd9e2('0x91')](_0x44bae3[_0xd9e2('0x92')])){_0x44bae3['message']=_0xd9e2('0x93');}else if(!ut[_0xd9e2('0x94')](_0x44bae3[_0xd9e2('0x33')])){_0x44bae3[_0xd9e2('0x49')]=_0xd9e2('0x5a');}else if(!this[_0xd9e2('0x95')](_0x44bae3[_0xd9e2('0x4f')])){if(!this[_0xd9e2('0x95')](_0x44bae3[_0xd9e2('0x96')])){_0x44bae3[_0xd9e2('0x49')]='TRUNK_IS_NOT_REACHABLE';}else{_0x44bae3['message']='ACTIVE';}}else{_0x44bae3[_0xd9e2('0x49')]=_0xd9e2('0x97');}emitCampaignPreview(_0x44bae3);};Preview['prototype'][_0xd9e2('0x98')]=function(_0x3c498a,_0xce1b09,_0x2d85cb){var _0x46bd0a=this;var _0x2be24a=this[_0xd9e2('0x18')][_0xce1b09];var _0x15e3d7=this['campaignsPreview'][_0x2be24a[_0xd9e2('0x6a')]];var _0x31ac72;if(_0x15e3d7){switch(_0x2d85cb){case'1':_0x15e3d7[_0xd9e2('0x3a')]+=0x1;_0x2be24a['countnosuchnumberretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x0,_0xd9e2('0x9b'));ami[_0xd9e2('0x27')]('custom:agentnosuchnumber',ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0x9d')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0x9e'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7['dialGlobalMaxRetry']){_0x31ac72=ut['cloneAction'](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb['createCustomerFinal'](_0x31ac72,_0xd9e2('0xa0'));}else{if(_0x2be24a['countnosuchnumberretry']>=_0x15e3d7[_0xd9e2('0xa1')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xa0'));}else{rpcDb[_0xd9e2('0xa2')](ut[_0xd9e2('0xa3')](_0x2be24a,_0xd9e2('0xa4'),_0x15e3d7['dialNoSuchNumberRetryFrequency']),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}delete this[_0xd9e2('0x18')][_0x3c498a['linkedid']];break;case _0xd9e2('0xa7'):var _0x2b122e=moment()[_0xd9e2('0x54')](_0xd9e2('0x85'));_0x2be24a[_0xd9e2('0xa8')]=_0x2b122e;_0x2be24a['answertime']=_0x2b122e;_0x2be24a[_0xd9e2('0x6d')]=!![];_0x15e3d7['pTalking']+=0x1;logger[_0xd9e2('0x67')](_0xd9e2('0xa9'),_0x2be24a[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x15e3d7[_0xd9e2('0x28')],'pTalking:\x20',_0x15e3d7['pTalking']);ami[_0xd9e2('0x27')](_0xd9e2('0xac'),ut['buildObj'](_0x2be24a,_0xd9e2('0xad'),this['campaignsPreview'][_0x2be24a['queue']]));if(_0x15e3d7[_0xd9e2('0xae')]){ami['emit'](_0xd9e2('0xaf'),ut[_0xd9e2('0xb0')](_0x2be24a));}break;case'16':ami[_0xd9e2('0x27')](_0xd9e2('0xb1'),ut[_0xd9e2('0x9c')](_0x2be24a,'complete',this[_0xd9e2('0x15')][_0x2be24a[_0xd9e2('0x6a')]]));emitVoiceQueueChannelRemove(ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xb2')));_0x15e3d7[_0xd9e2('0xb3')]+=0x1;_0x15e3d7['total']+=0x1;_0x15e3d7[_0xd9e2('0x2a')]+=0x1;ut[_0xd9e2('0xb4')](_0x15e3d7,_0xd9e2('0xb5'));_0x2be24a['countglobal']=ut[_0xd9e2('0x9a')](_0x2be24a);ut['logCustomer'](_0x2be24a,0x4,'Answer');rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xb6'));rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xb7'));rpcDb[_0xd9e2('0xb8')](_0x2be24a);_0x15e3d7[_0xd9e2('0x2d')]+=_0x2be24a[_0xd9e2('0xb9')];_0x15e3d7[_0xd9e2('0x2c')]+=_0x2be24a[_0xd9e2('0xb9')];logger[_0xd9e2('0x67')](_0xd9e2('0xba'),_0x2be24a[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x15e3d7['name'],'pTalking:\x20',_0x15e3d7[_0xd9e2('0x2b')]);delete this[_0xd9e2('0x18')][_0x3c498a[_0xd9e2('0xbb')]];break;case _0xd9e2('0xbc'):_0x15e3d7[_0xd9e2('0x37')]+=0x1;_0x2be24a['countbusyretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x5,_0xd9e2('0xbd'));ami[_0xd9e2('0x27')](_0xd9e2('0xbe'),ut['buildObj'](_0x2be24a,_0xd9e2('0xbf')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xc0'));if(ut['totalGlobal'](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xc3'));}else{if(_0x2be24a['countbusyretry']>=_0x15e3d7[_0xd9e2('0xc4')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xc0'));}else{rpcDb[_0xd9e2('0xa2')](ut['scheduledAt'](_0x2be24a,_0xd9e2('0xc5'),_0x15e3d7[_0xd9e2('0xc6')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case'NOANSWER':_0x15e3d7[_0xd9e2('0x39')]+=0x1;_0x2be24a[_0xd9e2('0xc7')]+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut['logCustomer'](_0x2be24a,0x3,'NoAnswer');ami['emit'](_0xd9e2('0xc8'),ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xc9')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xca'));if(ut['totalGlobal'](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xcb'));}else{if(_0x2be24a[_0xd9e2('0xc7')]>=_0x15e3d7[_0xd9e2('0xcc')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xca'));}else{rpcDb[_0xd9e2('0xa2')](ut[_0xd9e2('0xa3')](_0x2be24a,_0xd9e2('0xc7'),_0x15e3d7['dialNoAnswerRetryFrequency']),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case _0xd9e2('0xcd'):_0x15e3d7['outboundCongestionCallsDay']+=0x1;_0x2be24a['countcongestionretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x8,'Congestion');ami[_0xd9e2('0x27')]('custom:agentcongestion',ut['buildObj'](_0x2be24a,_0xd9e2('0xce')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xcf'));}else{if(_0x2be24a['countcongestionretry']>=_0x15e3d7['dialCongestionMaxRetry']){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xd0'));}else{rpcDb['rescheduleContact'](ut[_0xd9e2('0xa3')](_0x2be24a,_0xd9e2('0xd1'),_0x15e3d7[_0xd9e2('0xc6')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case'CANCEL':_0x15e3d7['outboundRejectCallsDay']+=0x1;_0x2be24a['countagentrejectretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x14,'AgentReject');ami[_0xd9e2('0x27')]('custom:agentreject',ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xd2')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xd3'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0x14,_0xd9e2('0xd4'));rpcDb['createCustomerFinal'](_0x31ac72,_0xd9e2('0xd5'));}else{if(_0x2be24a[_0xd9e2('0xd6')]>=_0x15e3d7[_0xd9e2('0xd7')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xd5'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2be24a,'countagentrejectretry',_0x15e3d7[_0xd9e2('0xd8')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case'ABANDONED':_0x15e3d7[_0xd9e2('0x3e')]+=0x1;_0x2be24a[_0xd9e2('0xd9')]+=0x1;_0x2be24a['countglobal']=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0xb,_0xd9e2('0xda'));rpcDb[_0xd9e2('0x8d')](_0x2be24a,'[callProgressDetectingCustomer][logAbandoned]');if(ut['totalGlobal'](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xdb'));}else{if(_0x2be24a[_0xd9e2('0xdc')]>=_0x15e3d7[_0xd9e2('0xdd')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xdb'));}else{rpcDb[_0xd9e2('0xa2')](ut['scheduledAt'](_0x2be24a,_0xd9e2('0xd9'),_0x15e3d7[_0xd9e2('0xde')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a['activeContact']);}}break;case'18':_0x15e3d7[_0xd9e2('0x3d')]+=0x1;_0x2be24a['countmachineretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x12,_0x3c498a[_0xd9e2('0xdf')]||_0x3c498a[_0xd9e2('0xe0')]);ami['emit'](_0xd9e2('0xe1'),ut['buildObj'](_0x2be24a,_0xd9e2('0xe2')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xe3'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xe3'));}else{rpcDb['createCustomerFinal'](_0x2be24a,_0xd9e2('0xe3'));}delete this[_0xd9e2('0x18')][_0x3c498a['linkedid']];break;case'19':_0x15e3d7[_0xd9e2('0x3d')]+=0x1;_0x2be24a['countglobal']=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x13,_0x3c498a[_0xd9e2('0xdf')]||_0x3c498a[_0xd9e2('0xe0')]);ami[_0xd9e2('0x27')](_0xd9e2('0xe1'),ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xe2')));rpcDb['createCustomerHistory'](_0x2be24a,_0xd9e2('0xe4'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xe4'));}else{rpcDb['createCustomerFinal'](_0x2be24a,_0xd9e2('0xe4'));}delete this[_0xd9e2('0x18')][_0x3c498a['linkedid']];break;default:if(_0x2be24a[_0xd9e2('0x6d')]){ut[_0xd9e2('0xb4')](_0x15e3d7,'[default]');ut[_0xd9e2('0x78')](_0xd9e2('0xe5')+_0x15e3d7['name'],_0x3c498a);}_0x15e3d7[_0xd9e2('0x3d')]+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut['logCustomer'](_0x2be24a,0xc,_0x3c498a[_0xd9e2('0xdf')]||_0x3c498a['dialstatus']);rpcDb[_0xd9e2('0x8d')](_0x2be24a,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut['cloneAction'](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xe6'));}else{rpcDb[_0xd9e2('0x8f')](_0x2be24a,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xd9e2('0x18')][_0x3c498a[_0xd9e2('0xbb')]];}if(!(_0x2be24a[_0xd9e2('0x6d')]&&_0x2d85cb==='16')){ut[_0xd9e2('0x76')](_0x15e3d7,_0xd9e2('0xe7'));logger[_0xd9e2('0x67')]('[originated][decrement][callProgressDetectingCustomer]',_0x2be24a[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x15e3d7['name'],_0xd9e2('0x6b'),_0x15e3d7[_0xd9e2('0x4a')]);}if(_0x2d85cb!==_0xd9e2('0xa7')){delete this[_0xd9e2('0x18')][_0x3c498a[_0xd9e2('0xbb')]];delete this[_0xd9e2('0x18')][_0x3c498a['destlinkedid']];}}};Preview[_0xd9e2('0x5f')][_0xd9e2('0xe8')]=function(_0x323711,_0x242511,_0x4e196b){if(_['isUndefined'](_0x242511)&&'object'!==typeof _0x242511){return;}if(_[_0xd9e2('0xe9')](_0x4e196b)&&'object'!==typeof _0x4e196b){return;}switch(_0x4e196b[_0xd9e2('0xea')]){case'0':ut[_0xd9e2('0xeb')](_0x323711,0x0,_0xd9e2('0x9b'));rpcDb[_0xd9e2('0xec')](_0x323711,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x323711,0x3,_0xd9e2('0xed'));rpcDb[_0xd9e2('0xec')](_0x323711,_0xd9e2('0xee'));break;case'5':ut[_0xd9e2('0xeb')](_0x323711,0x5,_0xd9e2('0xbd'));rpcDb[_0xd9e2('0xec')](_0x323711,_0xd9e2('0xef'));break;case'8':ut[_0xd9e2('0xeb')](_0x323711,0x8,_0xd9e2('0xf0'));rpcDb['createAgentHistory'](_0x323711,_0xd9e2('0xf1'));break;case'22':ut['logAgent'](_0x323711,0x16,_0xd9e2('0xf2'));rpcDb[_0xd9e2('0xec')](_0x323711,_0xd9e2('0xf3'));break;default:ut['logAgent'](_0x323711,0xc,_0x4e196b[_0xd9e2('0xea')]);rpcDb[_0xd9e2('0xec')](_0x323711,'[callProgressDetectingAgent][logCongestion]');}ut[_0xd9e2('0x76')](_0x242511,_0xd9e2('0xf4'));logger[_0xd9e2('0x67')](_0xd9e2('0xf5'),_0x323711[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x242511['name'],'originated:\x20',_0x242511[_0xd9e2('0x4a')]);delete this['actions'][_0x323711[_0xd9e2('0xaa')]];};Preview[_0xd9e2('0x5f')][_0xd9e2('0xf6')]=function(_0x3bdca8,_0x3f9dfb,_0x1f030f,_0x1da4ad,_0x180674){var _0x4fe086=this;return new BPromise(function(_0xe4c9c8,_0x3ae24a){if(_[_0xd9e2('0xf7')](_0x3f9dfb)||_[_0xd9e2('0xf7')](_0x3f9dfb[_0xd9e2('0xf8')])||_[_0xd9e2('0xf7')](_0x3f9dfb[_0xd9e2('0xf8')][_0xd9e2('0xf9')])||_[_0xd9e2('0xf7')](_0x3f9dfb[_0xd9e2('0x70')])){_0x3ae24a(ut[_0xd9e2('0x49')]('Contact\x20is\x20undefined',_0x1da4ad,_0x180674));return;}var _0x5edbd5=uuid['v4']();var _0x18395b=_0x4fe086[_0xd9e2('0x15')][_0x3f9dfb[_0xd9e2('0x69')][_0xd9e2('0x28')]];var _0x4f3e8c=_0x1f030f?_0x4fe086[_0xd9e2('0x19')][_0x1f030f]['id']:undefined;_0x4fe086[_0xd9e2('0x18')][_0x5edbd5]=new Action(_0x3f9dfb,_0x18395b,_0x5edbd5,_0x1f030f,_0x4f3e8c);var _0x58eaa0=_0x4fe086[_0xd9e2('0x18')][_0x5edbd5];_0x58eaa0[_0xd9e2('0xa5')]=_0x1da4ad;_0x58eaa0['activeContact']=_0x180674;_0x58eaa0[_0xd9e2('0xfa')]=_0x1f030f;if(_['isEmpty'](_0x3bdca8)){_0x4fe086[_0xd9e2('0xfb')](_0x58eaa0,_0x18395b,_0x3f9dfb,_0x1f030f)[_0xd9e2('0x7d')](function(_0x5c1b6b){logger[_0xd9e2('0x67')](_0xd9e2('0xfc'),_0xd9e2('0xfd')+_0x58eaa0[_0xd9e2('0x6a')]+'\x20IdHopper:\x20'+_0x58eaa0[_0xd9e2('0xfe')],JSON[_0xd9e2('0x53')](_0x5c1b6b));ami['emit'](_0xd9e2('0xff'),ut[_0xd9e2('0x9c')](_0x58eaa0,'called',_0x4fe086['campaignsPreview'][_0x58eaa0[_0xd9e2('0x6a')]]));_0xe4c9c8(ut[_0xd9e2('0x49')](_0xd9e2('0x100')));})[_0xd9e2('0x74')](function(_0x4026e4){ut[_0xd9e2('0x101')]('[Preview][execCall][failure]',_0x4026e4);_0x3ae24a(ut[_0xd9e2('0x49')]('Call\x20failed',_0x1da4ad,_0x180674));});}else{_0x18395b[_0xd9e2('0x36')]+=0x1;ut[_0xd9e2('0x102')](_0x58eaa0);rpcDb[_0xd9e2('0x103')](_0x58eaa0,_0xd9e2('0x104'));delete _0x4fe086[_0xd9e2('0x18')][_0x5edbd5];_0x3ae24a(ut[_0xd9e2('0x49')]('Contact\x20in\x20black\x20List',_0x1da4ad,_0x180674));}});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x95')]=function(_0x3fcdee){return!_[_0xd9e2('0xf7')](_0x3fcdee)&&!_[_0xd9e2('0xf7')](_0x3fcdee[_0xd9e2('0x28')])&&!_[_0xd9e2('0xf7')](_0x3fcdee['active'])&&_0x3fcdee[_0xd9e2('0x50')]&&!_[_0xd9e2('0xf7')](this[_0xd9e2('0x17')][util[_0xd9e2('0x54')](_0xd9e2('0x105'),_0x3fcdee[_0xd9e2('0x28')])])&&!_['isNil'](this[_0xd9e2('0x17')][util['format'](_0xd9e2('0x105'),_0x3fcdee[_0xd9e2('0x28')])]['status'])&&(this['trunks'][util[_0xd9e2('0x54')](_0xd9e2('0x105'),_0x3fcdee['name'])][_0xd9e2('0x106')]===_0xd9e2('0x107')||this[_0xd9e2('0x17')][util['format'](_0xd9e2('0x105'),_0x3fcdee[_0xd9e2('0x28')])][_0xd9e2('0x106')]===_0xd9e2('0x108'));};Preview['prototype'][_0xd9e2('0x81')]=function(_0x5d3c35,_0x5e081e){var _0x481d0f=this;return new BPromise(function(_0x49eacb,_0x3a2051){_0x481d0f[_0xd9e2('0x109')](_0x5d3c35,_0x5e081e)[_0xd9e2('0x7d')](function(_0x3c4184){_0x49eacb(_[_0xd9e2('0x6e')](_0x3c4184,['message']));})[_0xd9e2('0x74')](function(_0x1cd1b3){if(_0x1cd1b3[_0xd9e2('0x10a')]){rpcDb[_0xd9e2('0x10b')](_0x5d3c35);}if(_0x1cd1b3[_0xd9e2('0x50')]){rpcDb['disableContact'](_0x5d3c35);}_0x3a2051(_['pick'](_0x1cd1b3,[_0xd9e2('0x49')]));});});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x109')]=function(_0xc71aa3,_0x2cb10d){var _0x26288d=this;return new BPromise(function(_0x2f8202,_0x6930a8){var _0x334624,_0x45acf4;rpcDb['getContactPreview'](_0xc71aa3)[_0xd9e2('0x7d')](function(_0x34be66){if(!_[_0xd9e2('0xf7')](_0x34be66[0x0])){_0x45acf4=_0x34be66[0x0][_0xd9e2('0x10c')]?![]:!![];_0x334624=_0x34be66[0x0]['recallme']?!![]:![];_0x334624=_0x2cb10d?!![]:_0x334624;}var _0x14b5aa=_0x26288d['validateContact'](_0x34be66);if(_0x14b5aa[_0xd9e2('0x10d')]){rpcDb[_0xd9e2('0x10e')](_[_0xd9e2('0x6e')](_0x34be66[0x0],[_0xd9e2('0x70'),_0xd9e2('0x10f')]))['then'](function(_0x1a29e9){_0x26288d['checkInBlack'](_0x1a29e9,_0x34be66[0x0],_0x2cb10d,_0x45acf4,_0x334624)[_0xd9e2('0x7d')](function(_0x5166c2){_0x2f8202(_0x5166c2);})['catch'](function(_0x3bab28){_0x6930a8(_0x3bab28);});})['catch'](function(_0x39e914){ut[_0xd9e2('0x101')](_0xd9e2('0x110'),_0x39e914);_0x6930a8(ut[_0xd9e2('0x49')](_0xd9e2('0x111'),_0x45acf4,_0x334624));});}else{_0x6930a8(ut[_0xd9e2('0x49')](_0x14b5aa[_0xd9e2('0x49')],_0x45acf4,_0x334624));}})[_0xd9e2('0x74')](function(_0x4c7511){ut[_0xd9e2('0x101')]('[Preview][getContactPreview]',_0x4c7511);_0x6930a8(ut[_0xd9e2('0x49')](_0xd9e2('0x111'),![],!![]));});});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x112')]=function(_0x312742){if(_[_0xd9e2('0xf7')](_0x312742)||_['isEmpty'](_0x312742)||!_[_0xd9e2('0xf7')](_0x312742[0x0][_0xd9e2('0x80')])&&_[_0xd9e2('0xf7')](_0x312742[0x0]['Agent'][_0xd9e2('0x28')])){ut[_0xd9e2('0x101')](_0xd9e2('0x113'),_0x312742);return{'isValid':![],'message':_0xd9e2('0x114')};}var _0x510328=this['campaignsPreview'][_0x312742[0x0]['Queue'][_0xd9e2('0x28')]];_0x510328[_0xd9e2('0x49')]=_0xd9e2('0x97');if(_[_0xd9e2('0xf7')](_0x510328)){ut[_0xd9e2('0x101')](_0xd9e2('0x115'),_0x510328);return{'isValid':![],'message':_0xd9e2('0x116')};}if(!this[_0xd9e2('0x95')](_0x510328[_0xd9e2('0x4f')])){ut[_0xd9e2('0x101')](_0xd9e2('0x117'),_0xd9e2('0x118')+_0x510328['name']+_0xd9e2('0x119'));if(!this[_0xd9e2('0x95')](_0x510328[_0xd9e2('0x96')])){ut[_0xd9e2('0x101')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x510328['name']+_0xd9e2('0x11a'));return{'isValid':![],'message':_0xd9e2('0x11b')};}}if(!ut[_0xd9e2('0x94')](_0x510328[_0xd9e2('0x33')])){ut[_0xd9e2('0x101')](_0xd9e2('0x11c'),_0x510328[_0xd9e2('0x28')]+_0xd9e2('0x11d'));return{'isValid':![],'message':_0xd9e2('0x118')+_0x510328[_0xd9e2('0x28')]+_0xd9e2('0x11d')};}return{'isValid':!![],'message':_0xd9e2('0x11e')};};Preview['prototype'][_0xd9e2('0xfb')]=function(_0x2a91d1,_0x4cc567,_0xaf0ab0,_0x1297eb){var _0x41bb4d=this;return new BPromise(function(_0x3d1339,_0x2a273c){var _0x1b84a9=_0x2a91d1[_0xd9e2('0xaa')];var _0xb0be64=_0x41bb4d[_0xd9e2('0x95')](_0x4cc567[_0xd9e2('0x4f')])?util[_0xd9e2('0x54')](_0xd9e2('0x11f'),_0x4cc567[_0xd9e2('0x4f')]['name'],_[_0xd9e2('0xf7')](_0x4cc567[_0xd9e2('0x120')])?'':_0x4cc567[_0xd9e2('0x120')][_0xd9e2('0x121')]()||'',_0x4cc567[_0xd9e2('0x122')]>0x0?_0xaf0ab0[_0xd9e2('0xf8')][_0xd9e2('0xf9')][_0xd9e2('0x123')](_0x4cc567['dialCutDigit']):_0xaf0ab0[_0xd9e2('0xf8')]['phone']):util[_0xd9e2('0x54')](_0xd9e2('0x11f'),_[_0xd9e2('0xf7')](_0x4cc567[_0xd9e2('0x96')])?_0x4cc567[_0xd9e2('0x4f')][_0xd9e2('0x28')]:_0x4cc567['TrunkBackup']['name'],_['isNil'](_0x4cc567[_0xd9e2('0x120')])?'':_0x4cc567[_0xd9e2('0x120')][_0xd9e2('0x121')]()||'',_0x4cc567[_0xd9e2('0x122')]>0x0?_0xaf0ab0[_0xd9e2('0xf8')][_0xd9e2('0xf9')][_0xd9e2('0x123')](_0x4cc567[_0xd9e2('0x122')]):_0xaf0ab0[_0xd9e2('0xf8')][_0xd9e2('0xf9')]);var _0x2ffc19=_0x41bb4d['isTrunkReachable'](_0x4cc567['Trunk'])?ut['getCallerId'](_0x4cc567['Trunk'][_0xd9e2('0x51')],_0x4cc567[_0xd9e2('0x35')],_0x4cc567[_0xd9e2('0x124')]>0x0?ut[_0xd9e2('0x125')](_0x4cc567[_0xd9e2('0x126')],_0x4cc567[_0xd9e2('0x124')]):_0x4cc567[_0xd9e2('0x126')]):ut['getCallerId'](_[_0xd9e2('0xf7')](_0x4cc567[_0xd9e2('0x96')])?_0x4cc567[_0xd9e2('0x4f')][_0xd9e2('0x51')]:_0x4cc567[_0xd9e2('0x96')][_0xd9e2('0x51')],_0x4cc567['dialOriginateCallerIdName'],_0x4cc567[_0xd9e2('0x124')]>0x0?ut[_0xd9e2('0x125')](_0x4cc567[_0xd9e2('0x126')],_0x4cc567['dialRandomLastDigitCallerIdNumber']):_0x4cc567[_0xd9e2('0x126')]);if(_0x2ffc19){_0x2a91d1['originatecalleridname']=ut[_0xd9e2('0x127')](_0x2ffc19);_0x2a91d1[_0xd9e2('0x128')]=ut[_0xd9e2('0x129')](_0x2ffc19);}var _0x3b7e52=ut[_0xd9e2('0x12a')](_0x4cc567,_0xaf0ab0,_0xb0be64,_0x2ffc19,_0x1b84a9,_0x2a91d1);_[_0xd9e2('0x12b')](_0x2a91d1,ut[_0xd9e2('0x12c')](_0x3b7e52));_0x2a91d1[_0xd9e2('0x12d')]=moment()[_0xd9e2('0x54')](_0xd9e2('0x85'));ami[_0xd9e2('0x72')](ut[_0xd9e2('0x12e')](_0x2a91d1,_0x4cc567,_0x3b7e52,_0x2a91d1[_0xd9e2('0xa6')],_0x1297eb))['then'](function(_0x51fc87){var _0xfe5f9b=_0x2a91d1[_0xd9e2('0x12f')];if(!_[_0xd9e2('0xf7')](_0xfe5f9b)){if(!_[_0xd9e2('0xf7')](_0x41bb4d[_0xd9e2('0x19')][_0xfe5f9b])){_0x41bb4d[_0xd9e2('0x19')][_0xfe5f9b]['destconnectedlinenum']=_0x2a91d1[_0xd9e2('0x130')];emit(util['format'](_0xd9e2('0x131'),_0x41bb4d[_0xd9e2('0x19')][_0xfe5f9b][_0xd9e2('0x28')]),_0xd9e2('0x132'),{'destaccountcode':_0x41bb4d['agents'][_0xfe5f9b][_0xd9e2('0x133')],'destconnectedlinenum':_0x2a91d1[_0xd9e2('0x130')]});}}_0x4cc567['originated']+=0x1;logger[_0xd9e2('0x67')](_0xd9e2('0x134'),_0x1b84a9,'\x20Queue',_0x4cc567['name'],_0xd9e2('0x6b'),_0x4cc567[_0xd9e2('0x4a')]);_0x3d1339(_0x51fc87);})[_0xd9e2('0x74')](function(_0x19d750){ut['logAgent'](_0x2a91d1,0xe,_0xd9e2('0x135'));rpcDb['createAgentHistory'](_0x2a91d1,_0xd9e2('0x136'));_0x2a273c(_0x19d750);});});};Preview[_0xd9e2('0x5f')]['syncNewExten']=function(_0x3dc33c){if(this[_0xd9e2('0x18')][_0x3dc33c['linkedid']]){this[_0xd9e2('0x18')][_0x3dc33c[_0xd9e2('0xbb')]][_0xd9e2('0x73')]=_0x3dc33c[_0xd9e2('0x73')];}};Preview[_0xd9e2('0x5f')]['syncOriginateResponse']=function(_0x142f07){var _0x32b95a=this;var _0x3bc957=this[_0xd9e2('0x18')][_0x142f07[_0xd9e2('0x137')]];if(_0x3bc957){if(_0x3bc957[_0xd9e2('0xfa')]&&this[_0xd9e2('0x19')][_0x3bc957[_0xd9e2('0xfa')]]){ut[_0xd9e2('0x138')](_0x3bc957,this[_0xd9e2('0x19')][_0x3bc957['lookAgent']][_0xd9e2('0x28')],this[_0xd9e2('0x19')][_0x3bc957['lookAgent']]['id']);}var _0xfc7d7=_['clone'](_0x3bc957);_0xfc7d7[_0xd9e2('0xa8')]=moment()[_0xd9e2('0x54')](_0xd9e2('0x85'));var _0x14e2b7=_0x32b95a[_0xd9e2('0x15')][_0x3bc957[_0xd9e2('0x6a')]];if(ut[_0xd9e2('0x139')](_0x142f07[_0xd9e2('0x13a')])){if(_0x3bc957['unlockAgent']){rpcDb[_0xd9e2('0x10b')](_0x3bc957['idContact']);}if(_0x3bc957[_0xd9e2('0xa6')]){rpcDb[_0xd9e2('0x84')](_0x3bc957[_0xd9e2('0xfe')]);}ami[_0xd9e2('0x27')](_0xd9e2('0x13b'),ut['buildObj'](_0x3bc957,_0xd9e2('0x13c'),this[_0xd9e2('0x15')][_0x3bc957[_0xd9e2('0x6a')]]));this[_0xd9e2('0xe8')](_0xfc7d7,_0x14e2b7,_0x142f07);}else{_0x3bc957[_0xd9e2('0x12d')]=moment()[_0xd9e2('0x54')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0xd9e2('0xeb')](_0xfc7d7,0x4,_0xd9e2('0x13d'));rpcDb[_0xd9e2('0xec')](_0xfc7d7,_0xd9e2('0x13e'));}}};Preview['prototype'][_0xd9e2('0x1d')]=function(_0x2403d3){var _0xc48b76=this;var _0x20ea59=this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]];var _0x392def;if(_0x20ea59){_0x392def=this['campaignsPreview'][_0x20ea59[_0xd9e2('0x6a')]];logger['info'](_0xd9e2('0x13f'),_0x2403d3[_0xd9e2('0xbb')],'\x20Queue',_0x392def[_0xd9e2('0x28')],'pTalking:\x20',_0x392def[_0xd9e2('0x2b')]);}if(this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]]&&_0x2403d3[_0xd9e2('0xbb')]!==_0x2403d3['uniqueid']){if(_0x2403d3[_0xd9e2('0x140')]==='16'&&this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]][_0xd9e2('0x6d')]){this['callProgressDetectingCustomer'](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3[_0xd9e2('0x140')]);}else if(this[_0xd9e2('0x18')][_0x2403d3['linkedid']][_0xd9e2('0x6d')]){logger[_0xd9e2('0x67')](_0xd9e2('0x141'),_0x2403d3['linkedid'],_0x2403d3[_0xd9e2('0x140')],_0xd9e2('0xab'),_0x392def[_0xd9e2('0x28')],'pTalking:\x20',_0x392def[_0xd9e2('0x2b')]);this[_0xd9e2('0x98')](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3['cause']);}}else if(_0x20ea59&&_[_0xd9e2('0xf7')](_0x20ea59[_0xd9e2('0x142')])&&_0x392def[_0xd9e2('0x143')]&&_0x2403d3[_0xd9e2('0xbb')]===_0x2403d3['uniqueid']&&_[_0xd9e2('0xf7')](_0x2403d3[_0xd9e2('0xea')])&&_0x2403d3[_0xd9e2('0x140')]==='16'&&_0x2403d3[_0xd9e2('0x144')]==='6'&&_[_0xd9e2('0xe9')](_0x20ea59[_0xd9e2('0x145')])){if(_0x20ea59[_0xd9e2('0xa5')]){rpcDb[_0xd9e2('0x10b')](_0x20ea59[_0xd9e2('0xfe')]);}if(_0x20ea59[_0xd9e2('0xa6')]){rpcDb[_0xd9e2('0x84')](_0x20ea59[_0xd9e2('0xfe')]);}_0x2403d3['reason']='22';this[_0xd9e2('0xe8')](_0x20ea59,_0x392def,_0x2403d3);}else if(_0x20ea59&&_0x20ea59['transfer']){if(_0x2403d3[_0xd9e2('0x140')]==='16'&&this[_0xd9e2('0x18')][_0x2403d3['linkedid']]['dialAnswer']){logger['info'](_0xd9e2('0x146'),_0x2403d3['linkedid'],_0x2403d3[_0xd9e2('0x140')],_0xd9e2('0xab'),_0x392def[_0xd9e2('0x28')],_0xd9e2('0x6c'),_0x392def[_0xd9e2('0x2b')]);this['callProgressDetectingCustomer'](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3[_0xd9e2('0x140')]);}else if(this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]][_0xd9e2('0x6d')]){logger[_0xd9e2('0x67')](_0xd9e2('0x141'),_0x2403d3[_0xd9e2('0xbb')],_0x2403d3[_0xd9e2('0x140')],_0xd9e2('0xab'),_0x392def['name'],_0xd9e2('0x6c'),_0x392def[_0xd9e2('0x2b')]);this[_0xd9e2('0x98')](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3['cause']);}}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x1f')]=function(_0x3b5036){if(this[_0xd9e2('0x18')][_0x3b5036[_0xd9e2('0x147')]]&&_0x3b5036[_0xd9e2('0x147')]!==_0x3b5036[_0xd9e2('0x148')]){this[_0xd9e2('0x98')](_0x3b5036,_0x3b5036[_0xd9e2('0x147')],_0x3b5036[_0xd9e2('0xe0')]);}};Preview['prototype'][_0xd9e2('0x149')]=function(_0x5939bd){if(this['actions'][_0x5939bd[_0xd9e2('0xbb')]]&&_0x5939bd[_0xd9e2('0xbb')]!==_0x5939bd[_0xd9e2('0xaa')]&&!this['actions'][_0x5939bd[_0xd9e2('0xbb')]][_0xd9e2('0x6d')]){if(_0x5939bd['cause']==='1'){this['callProgressDetectingCustomer'](_0x5939bd,_0x5939bd[_0xd9e2('0xbb')],_0x5939bd[_0xd9e2('0x140')]);}}};Preview[_0xd9e2('0x5f')]['addVariable']=function(_0x2b5ca9,_0x5926a5,_0x30f29f){if(this[_0xd9e2('0x18')][_0x2b5ca9]){if(_[_0xd9e2('0xf7')](this[_0xd9e2('0x18')][_0x2b5ca9][_0xd9e2('0x14a')])){this[_0xd9e2('0x18')][_0x2b5ca9]['variables']={};}this[_0xd9e2('0x18')][_0x2b5ca9][_0xd9e2('0x14a')][_0x5926a5]=_0x30f29f;}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x22')]=function(_0x3c766a){try{if(!_[_0xd9e2('0xf7')](_0x3c766a)){if(ut[_0xd9e2('0x14b')](_['keys'](_0x3c766a['variable'])[0x0])){this[_0xd9e2('0x14c')](_0x3c766a[_0xd9e2('0xaa')],_[_0xd9e2('0x14d')](_0x3c766a['variable'])[0x0],_0x3c766a['value']);}}}catch(_0x5b5ddd){logger['error'](_0xd9e2('0x14e'),util[_0xd9e2('0x14f')](_0x5b5ddd,{'showHidden':![],'depth':null}));}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x24')]=function(_0x792c44){if(_0x792c44){if(this[_0xd9e2('0x18')][_0x792c44[_0xd9e2('0x150')]]){this[_0xd9e2('0x18')][_0x792c44[_0xd9e2('0x150')]][_0xd9e2('0x145')]=!![];}}};Preview['prototype'][_0xd9e2('0x25')]=function(_0x274b64){if(_0x274b64){if(this[_0xd9e2('0x18')][_0x274b64[_0xd9e2('0x151')]]){this[_0xd9e2('0x18')][_0x274b64[_0xd9e2('0x151')]][_0xd9e2('0x145')]=!![];}}};module[_0xd9e2('0x152')]=Preview;
\ No newline at end of file
+var _0xb56e=['NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','syncCampaigns','hasOwnProperty','dialMethod','booked','clearZombieChannels','setMessage','isNil','info','queue','pTalking:\x20','pick','UserId','VoiceQueueId','ListId','status','channel','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','recallMe','agentReadyId','then','length','getDiff','scheduledat','Agent','voicePause','run','logger2','[RecallMe]','catch','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','totalGlobal','NoSuchNumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','ANSWER','responsetime','answertime','dialAnswer','[syncHangup][talking][increment]','uniqueid','\x20Queue','buildObj','acw','custom:agentConnectPreview','buildAcw','answered','[16]','countglobal','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','sumBillable','[syncHangup][talking][decrement]','linkedid','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyRetryFrequency','NOANSWER','NoAnswer','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerRetryFrequency','activeContact','CONGESTION','outboundCongestionCallsDay','countcongestionretry','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','outboundAbandonedCallsDay','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][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','originated:\x20','checkInBlack','Contact','Contact\x20is\x20undefined','Queue','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','called','Calling','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','phone','substring','dialCutDigit','getCallerIdRandom','getCallerId','dialRandomLastDigitCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','Action','channelAgent','user:%s','user:agentconnect','calleridnum','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','isFailure','response','unlockContact','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncDialEnd','destuniqueid','addVariable','variables','filterKey','keys','variable','value','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','uuid','moment','md5','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','defaults','prototype','enqueue','tail','finally','sequence','campaignsPreview','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','outbound','name','strategy','available','loggedIn','pTalking','sumDuration','sumHoldTime','talking','total','type','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','stringify','format','voice:queue:%s','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','message'];(function(_0x53d0d0,_0x33e8fc){var _0x59a50a=function(_0x550d8c){while(--_0x550d8c){_0x53d0d0['push'](_0x53d0d0['shift']());}};_0x59a50a(++_0x33e8fc);}(_0xb56e,0xfa));var _0xeb56=function(_0x1258ac,_0x9f8430){_0x1258ac=_0x1258ac-0x0;var _0x5d71dc=_0xb56e[_0x1258ac];return _0x5d71dc;};'use strict';var util=require(_0xeb56('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0xeb56('0x1'));var moment=require(_0xeb56('0x2'));var md5=require(_0xeb56('0x3'));var Redis=require(_0xeb56('0x4'));var config=require(_0xeb56('0x5'));var logger=require(_0xeb56('0x6'))(_0xeb56('0x7'));var loggerAction=require(_0xeb56('0x6'))(_0xeb56('0x8'));var ami=require(_0xeb56('0x9'));var rpcDb=require(_0xeb56('0xa'));var Action=require(_0xeb56('0xb'));var ut=require('./util/util');config['redis']=_[_0xeb56('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xeb56('0xd')][_0xeb56('0xe')]=function(_0x484d66){this[_0xeb56('0xf')]=this[_0xeb56('0xf')]?this[_0xeb56('0xf')][_0xeb56('0x10')](_0x484d66):_0x484d66();};function Preview(_0x371959){this[_0xeb56('0x11')]=new Sequence();this[_0xeb56('0x12')]=_0x371959['voiceQueues'];this[_0xeb56('0x13')]=_0x371959[_0xeb56('0x13')];this[_0xeb56('0x14')]={};this[_0xeb56('0x15')]=_0x371959['agents'];this[_0xeb56('0x16')]=0x0;ami['on'](_0xeb56('0x17'),this[_0xeb56('0x18')][_0xeb56('0x19')](this));ami['on'](_0xeb56('0x1a'),this[_0xeb56('0x1b')][_0xeb56('0x19')](this));ami['on'](_0xeb56('0x1c'),this[_0xeb56('0x1d')][_0xeb56('0x19')](this));ami['on'](_0xeb56('0x1e'),this['syncDialEnd']['bind'](this));ami['on'](_0xeb56('0x1f'),this[_0xeb56('0x20')][_0xeb56('0x19')](this));ami['on'](_0xeb56('0x21'),this[_0xeb56('0x22')][_0xeb56('0x19')](this));ami['on'](_0xeb56('0x23'),this[_0xeb56('0x24')]['bind'](this));ami['on'](_0xeb56('0x25'),this[_0xeb56('0x26')][_0xeb56('0x19')](this));this[_0xeb56('0x27')](this[_0xeb56('0x12')]);}function emit(_0x23ca63,_0x10ca75,_0x159292){io['to'](_0x23ca63)[_0xeb56('0x28')](_0x10ca75,_0x159292);}function emitCampaignPreview(_0x34d05c){if(_0x34d05c['type']===_0xeb56('0x29')){var _0x50c040={'id':_0x34d05c['id'],'name':_0x34d05c[_0xeb56('0x2a')],'strategy':_0x34d05c[_0xeb56('0x2b')],'answered':_0x34d05c['answered'],'available':_0x34d05c[_0xeb56('0x2c')],'loggedIn':_0x34d05c[_0xeb56('0x2d')],'pTalking':_0x34d05c[_0xeb56('0x2e')],'sumBillable':_0x34d05c['sumBillable'],'sumDuration':_0x34d05c[_0xeb56('0x2f')],'sumHoldTime':_0x34d05c[_0xeb56('0x30')]||0x0,'talking':_0x34d05c[_0xeb56('0x31')],'total':_0x34d05c[_0xeb56('0x32')],'type':_0x34d05c[_0xeb56('0x33')],'unmanaged':_0x34d05c['unmanaged'],'abandoned':_0x34d05c['abandoned'],'waiting':_0x34d05c[_0xeb56('0x34')],'loggedInDb':_0x34d05c[_0xeb56('0x35')],'dialActive':_0x34d05c[_0xeb56('0x36')],'dialMethod':_0x34d05c['dialMethod'],'dialOriginateCallerIdName':_0x34d05c[_0xeb56('0x37')],'dialOriginateCallerIdNumber':_0x34d05c[_0xeb56('0x38')],'dialOriginateTimeout':_0x34d05c['dialOriginateTimeout'],'dialPrefix':_0x34d05c[_0xeb56('0x39')],'outboundAnswerAgiCallsDay':_0x34d05c[_0xeb56('0x3a')],'outboundAnswerCallsDay':_0x34d05c[_0xeb56('0x3b')],'outboundBlacklistCallsDay':_0x34d05c['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x34d05c[_0xeb56('0x3c')],'outboundCongestionCallsDay':_0x34d05c['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x34d05c[_0xeb56('0x3d')],'outboundDropCallsDayCallersExit':_0x34d05c[_0xeb56('0x3e')],'outboundDropCallsDayTimeout':_0x34d05c['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x34d05c[_0xeb56('0x3f')],'outboundNoSuchCallsDay':_0x34d05c[_0xeb56('0x40')],'outboundOriginateFailureCallsDay':_0x34d05c['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x34d05c[_0xeb56('0x41')],'outboundRejectCallsDay':_0x34d05c[_0xeb56('0x42')],'outboundUnknownCallsDay':_0x34d05c[_0xeb56('0x43')],'outboundAbandonedCallsDay':_0x34d05c['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x34d05c[_0xeb56('0x44')],'predictiveIntervalAvgHoldtime':_0x34d05c['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x34d05c[_0xeb56('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x34d05c[_0xeb56('0x46')],'predictiveIntervalDroppedCallsTimeout':_0x34d05c[_0xeb56('0x47')],'predictiveIntervalErlangCalls':_0x34d05c[_0xeb56('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0x34d05c['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x34d05c[_0xeb56('0x49')],'predictiveIntervalMultiplicativeFactor':_0x34d05c[_0xeb56('0x4a')],'predictiveIntervalPauses':_0x34d05c['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x34d05c['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x34d05c[_0xeb56('0x4b')],'message':_0x34d05c['message'],'originated':_0x34d05c[_0xeb56('0x4c')],'erlangCalls':_0x34d05c[_0xeb56('0x4d')],'erlangCallToSecond':_0x34d05c['erlangCallToSecond'],'erlangAbandonmentRate':_0x34d05c[_0xeb56('0x4e')],'erlangBusyFactor':_0x34d05c[_0xeb56('0x4f')],'startPredictive':_0x34d05c[_0xeb56('0x50')],'startProgressive':_0x34d05c[_0xeb56('0x51')]};if(_0x34d05c['Trunk']){_0x50c040[_0xeb56('0x52')]={'id':_0x34d05c[_0xeb56('0x52')]['id'],'name':_0x34d05c[_0xeb56('0x52')][_0xeb56('0x2a')],'active':_0x34d05c[_0xeb56('0x52')][_0xeb56('0x53')],'callerid':_0x34d05c[_0xeb56('0x52')]['callerid']};}if(_0x34d05c[_0xeb56('0x54')]){_0x50c040[_0xeb56('0x54')]={'id':_0x34d05c[_0xeb56('0x54')]['id'],'name':_0x34d05c['Interval'][_0xeb56('0x2a')]};}var _0x1158bf=md5(JSON[_0xeb56('0x55')](_0x50c040));if(_0x34d05c['md5']!==_0x1158bf){_0x34d05c[_0xeb56('0x3')]=_0x1158bf;emit(util[_0xeb56('0x56')](_0xeb56('0x57'),_0x50c040[_0xeb56('0x2a')]),_0xeb56('0x58'),_0x50c040);}}}function emitVoiceQueueChannelRemove(_0x4298ce){logger['info'](_0xeb56('0x59'),JSON[_0xeb56('0x55')](_0x4298ce));emit(util[_0xeb56('0x56')](_0xeb56('0x57'),_0x4298ce[_0xeb56('0x2a')]),_0xeb56('0x5a'),_0x4298ce);io[_0xeb56('0x28')](_0xeb56('0x5b'),_0x4298ce);}function notSendMessagesQueue(_0x415e25){if(_0x415e25[_0xeb56('0x5c')]){if(_0x415e25[_0xeb56('0x4c')]===0x0&&_0x415e25[_0xeb56('0x2e')]===0x0){_0x415e25[_0xeb56('0x5c')]=![];_0x415e25[_0xeb56('0x2c')]=0x0;_0x415e25[_0xeb56('0x5d')]=0x0;_0x415e25[_0xeb56('0x5e')]=_0xeb56('0x5f');ut[_0xeb56('0x60')](_0xeb56('0x61'),_0x415e25['name']+_0xeb56('0x62'));}else{_0x415e25[_0xeb56('0x5e')]='IS_DISACTIVED';ut[_0xeb56('0x60')](_0xeb56('0x61'),_0x415e25['name']+'\x20is\x20disactive');}emitCampaignPreview(_0x415e25);}}Preview[_0xeb56('0xd')][_0xeb56('0x27')]=function(){var _0xcb9d64=this;setInterval(function(){_0xcb9d64['syncCampaigns']();},0x7cf);};Preview[_0xeb56('0xd')][_0xeb56('0x63')]=function(){var _0x2cf673=this[_0xeb56('0x12')];this[_0xeb56('0x16')]+=0x1;for(var _0x4f3142 in _0x2cf673){if(_0x2cf673[_0xeb56('0x64')](_0x4f3142)&&(_0x2cf673[_0x4f3142][_0xeb56('0x65')]===_0xeb56('0x7')||_0x2cf673[_0x4f3142][_0xeb56('0x65')]===_0xeb56('0x66'))&&_0x2cf673[_0x4f3142]['type']==='outbound'){if(this['clockClearZombieChannels']>0x7){this['clockClearZombieChannels']=0x0;this[_0xeb56('0x67')]();}}if(_0x2cf673[_0xeb56('0x64')](_0x4f3142)&&_0x2cf673[_0x4f3142][_0xeb56('0x65')]===_0xeb56('0x7')&&_0x2cf673[_0x4f3142][_0xeb56('0x33')]===_0xeb56('0x29')){if(_0x2cf673[_0x4f3142]['dialActive']){this[_0xeb56('0x68')](_0x2cf673[_0x4f3142]);this['recallMe'](_0x2cf673[_0x4f3142]);}else{notSendMessagesQueue(_0x2cf673[_0x4f3142]);}}}};Preview[_0xeb56('0xd')]['clearZombieChannel']=function(_0x31bf54){var _0x6d6bfa=this;this[_0xeb56('0x11')][_0xeb56('0xe')](function(){if(!_[_0xeb56('0x69')](_0x6d6bfa['actions'][_0x31bf54])){loggerAction[_0xeb56('0x6a')]('[clearZombieChannels][talking]',_0x31bf54,'Queue',_0x6d6bfa['actions'][_0x31bf54]['queue'],'originated:\x20',JSON[_0xeb56('0x55')](_0x6d6bfa[_0xeb56('0x12')][_0x6d6bfa[_0xeb56('0x14')][_0x31bf54][_0xeb56('0x6b')]][_0xeb56('0x4c')]),_0xeb56('0x6c'),JSON[_0xeb56('0x55')](_0x6d6bfa[_0xeb56('0x12')][_0x6d6bfa[_0xeb56('0x14')][_0x31bf54][_0xeb56('0x6b')]][_0xeb56('0x2e')]),JSON[_0xeb56('0x55')](_0x6d6bfa[_0xeb56('0x14')][_0x31bf54]['dialAnswer']),JSON[_0xeb56('0x55')](_[_0xeb56('0x6d')](_0x6d6bfa['actions'][_0x31bf54],['contactId',_0xeb56('0x6e'),_0xeb56('0x6f'),_0xeb56('0x70')])));return ami['Action']({'action':_0xeb56('0x71'),'channel':_0x6d6bfa[_0xeb56('0x14')][_0x31bf54][_0xeb56('0x72')]})['catch'](function(_0x5980e6){if(_0x5980e6[_0xeb56('0x5e')]===_0xeb56('0x73')){setTimeout(function(){if(_0x6d6bfa[_0xeb56('0x14')][_0x31bf54]){ut[_0xeb56('0x74')](_0x6d6bfa[_0xeb56('0x12')][_0x6d6bfa[_0xeb56('0x14')][_0x31bf54]['queue']],_0xeb56('0x75'));if(_0x6d6bfa[_0xeb56('0x14')][_0x31bf54]['dialAnswer']===!![]){ut[_0xeb56('0x76')](_0x6d6bfa[_0xeb56('0x12')][_0x6d6bfa[_0xeb56('0x14')][_0x31bf54]['queue']],_0xeb56('0x75'));ut[_0xeb56('0x77')](_0xeb56('0x78')+_0x31bf54,_0x6d6bfa[_0xeb56('0x14')][_0x31bf54][_0xeb56('0x6b')]);}ut[_0xeb56('0x77')](_0xeb56('0x79')+_0x31bf54,_0x6d6bfa['actions'][_0x31bf54]['queue']);delete _0x6d6bfa[_0xeb56('0x14')][_0x31bf54];}},0x2328);}});}});};Preview[_0xeb56('0xd')]['clearZombieChannels']=function(){var _0x2b8e6c=this;loggerAction[_0xeb56('0x6a')](_0xeb56('0x7a'),_[_0xeb56('0x7b')](this['actions']));for(var _0x445184 in this[_0xeb56('0x14')]){if(_0x2b8e6c[_0xeb56('0x14')]['hasOwnProperty'](_0x445184)){_0x2b8e6c[_0xeb56('0x7c')](_0x445184);}}};Preview[_0xeb56('0xd')][_0xeb56('0x7d')]=function(_0x35f4a8){var _0x54aa0a=this;rpcDb['getContactRecallMe'](_0x35f4a8['id'],ut[_0xeb56('0x7e')](this[_0xeb56('0x15')]))[_0xeb56('0x7f')](function(_0x46a005){if(!_[_0xeb56('0x69')](_0x46a005)){for(var _0x38859e=0x0;_0x38859e<_0x46a005[_0xeb56('0x80')];_0x38859e+=0x1){if(ut[_0xeb56('0x81')](_0x46a005[_0x38859e][_0xeb56('0x82')])<_0x35f4a8['dialRecallMeTimeout']*0x3c){if(_0x46a005[_0x38859e][_0xeb56('0x83')]&&!_0x46a005[_0x38859e][_0xeb56('0x83')][_0xeb56('0x84')]){_0x54aa0a[_0xeb56('0x85')](_0x46a005[_0x38859e]['id'])['then'](ut[_0xeb56('0x86')](_0xeb56('0x87')))[_0xeb56('0x88')](ut['logger2'](_0xeb56('0x87')));}else{rpcDb[_0xeb56('0x89')](_0x46a005[_0x38859e]['id']);}}else{var _0x8f6511=new Action(_0x46a005[_0x38859e],_0x35f4a8);_0x8f6511[_0xeb56('0x8a')]=moment()[_0xeb56('0x56')](_0xeb56('0x8b'));_0x35f4a8[_0xeb56('0x41')]+=0x1;ut[_0xeb56('0x8c')](_0x8f6511,0x17,_0xeb56('0x8d'));if(_0x35f4a8['dialRecallInQueue']){rpcDb['rescheduleContactInQueue'](ut[_0xeb56('0x8e')](_0x46a005[_0x38859e]));rpcDb[_0xeb56('0x8f')](_0x8f6511,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xeb56('0x8c')](_0x8f6511,0x16,_0xeb56('0x90'));rpcDb[_0xeb56('0x8f')](_0x8f6511,_0xeb56('0x91'));rpcDb[_0xeb56('0x92')](_0x8f6511,_0xeb56('0x91'));}}}}})[_0xeb56('0x88')](ut[_0xeb56('0x86')](_0xeb56('0x93')));};Preview[_0xeb56('0xd')][_0xeb56('0x68')]=function(_0x5bdfab){_0x5bdfab[_0xeb56('0x5c')]=!![];if(ut[_0xeb56('0x94')](_0x5bdfab[_0xeb56('0x2d')])){_0x5bdfab[_0xeb56('0x5e')]=_0xeb56('0x95');}else if(!ut[_0xeb56('0x96')](_0x5bdfab[_0xeb56('0x36')])){_0x5bdfab[_0xeb56('0x5e')]=_0xeb56('0x5f');}else if(!this[_0xeb56('0x97')](_0x5bdfab[_0xeb56('0x52')])){if(!this['isTrunkReachable'](_0x5bdfab[_0xeb56('0x98')])){_0x5bdfab['message']=_0xeb56('0x99');}else{_0x5bdfab[_0xeb56('0x5e')]='ACTIVE';}}else{_0x5bdfab[_0xeb56('0x5e')]=_0xeb56('0x9a');}emitCampaignPreview(_0x5bdfab);};Preview[_0xeb56('0xd')][_0xeb56('0x9b')]=function(_0xf5cd82,_0x100b64,_0x11bba1){var _0x1cdd32=this;var _0x1efb94=this['actions'][_0x100b64];var _0x26fda9=this[_0xeb56('0x12')][_0x1efb94[_0xeb56('0x6b')]];var _0x5be233;if(_0x26fda9){switch(_0x11bba1){case'1':_0x26fda9[_0xeb56('0x40')]+=0x1;_0x1efb94[_0xeb56('0x9c')]+=0x1;_0x1efb94['countglobal']=ut[_0xeb56('0x9d')](_0x1efb94);ut[_0xeb56('0x8c')](_0x1efb94,0x0,_0xeb56('0x9e'));ami[_0xeb56('0x28')]('custom:agentnosuchnumber',ut['buildObj'](_0x1efb94,_0xeb56('0x9f')));rpcDb['createCustomerHistory'](_0x1efb94,_0xeb56('0xa0'));if(ut['totalGlobal'](_0x1efb94)>=_0x26fda9[_0xeb56('0xa1')]){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb['createCustomerFinal'](_0x5be233,_0xeb56('0xa4'));}else{if(_0x1efb94['countnosuchnumberretry']>=_0x26fda9[_0xeb56('0xa5')]){rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xa4'));}else{rpcDb[_0xeb56('0xa6')](ut[_0xeb56('0xa7')](_0x1efb94,_0xeb56('0x9c'),_0x26fda9[_0xeb56('0xa8')]),_0x1efb94[_0xeb56('0xa9')],_0x1efb94['activeContact']);}}delete this['actions'][_0xf5cd82['linkedid']];break;case _0xeb56('0xaa'):var _0x5d2bbf=moment()['format'](_0xeb56('0x8b'));_0x1efb94[_0xeb56('0xab')]=_0x5d2bbf;_0x1efb94[_0xeb56('0xac')]=_0x5d2bbf;_0x1efb94[_0xeb56('0xad')]=!![];_0x26fda9['pTalking']+=0x1;logger[_0xeb56('0x6a')](_0xeb56('0xae'),_0x1efb94[_0xeb56('0xaf')],_0xeb56('0xb0'),_0x26fda9[_0xeb56('0x2a')],_0xeb56('0x6c'),_0x26fda9[_0xeb56('0x2e')]);ami['emit']('custom:agentconnect',ut[_0xeb56('0xb1')](_0x1efb94,'connect',this[_0xeb56('0x12')][_0x1efb94[_0xeb56('0x6b')]]));if(_0x26fda9[_0xeb56('0xb2')]){ami['emit'](_0xeb56('0xb3'),ut[_0xeb56('0xb4')](_0x1efb94));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0xeb56('0xb1')](_0x1efb94,'complete',this[_0xeb56('0x12')][_0x1efb94['queue']]));emitVoiceQueueChannelRemove(ut[_0xeb56('0xb1')](_0x1efb94,'complete'));_0x26fda9['outboundAnswerCallsDay']+=0x1;_0x26fda9[_0xeb56('0x32')]+=0x1;_0x26fda9[_0xeb56('0xb5')]+=0x1;ut[_0xeb56('0x76')](_0x26fda9,_0xeb56('0xb6'));_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut['logCustomer'](_0x1efb94,0x4,'Answer');rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xb8'));rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xb9'));rpcDb[_0xeb56('0xba')](_0x1efb94);_0x26fda9[_0xeb56('0x2f')]+=_0x1efb94[_0xeb56('0xbb')];_0x26fda9[_0xeb56('0xbc')]+=_0x1efb94['talktime'];logger[_0xeb56('0x6a')](_0xeb56('0xbd'),_0x1efb94[_0xeb56('0xaf')],_0xeb56('0xb0'),_0x26fda9[_0xeb56('0x2a')],_0xeb56('0x6c'),_0x26fda9[_0xeb56('0x2e')]);delete this[_0xeb56('0x14')][_0xf5cd82[_0xeb56('0xbe')]];break;case _0xeb56('0xbf'):_0x26fda9['outboundBusyCallsDay']+=0x1;_0x1efb94[_0xeb56('0xc0')]+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut['logCustomer'](_0x1efb94,0x5,_0xeb56('0xc1'));ami[_0xeb56('0x28')](_0xeb56('0xc2'),ut[_0xeb56('0xb1')](_0x1efb94,_0xeb56('0xc3')));rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xc4'));if(ut[_0xeb56('0x9d')](_0x1efb94)>=_0x26fda9['dialGlobalMaxRetry']){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb[_0xeb56('0x92')](_0x5be233,_0xeb56('0xc5'));}else{if(_0x1efb94[_0xeb56('0xc0')]>=_0x26fda9['dialBusyMaxRetry']){rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xc4'));}else{rpcDb[_0xeb56('0xa6')](ut[_0xeb56('0xa7')](_0x1efb94,'countbusyretry',_0x26fda9[_0xeb56('0xc6')]),_0x1efb94['unlockAgent'],_0x1efb94['activeContact']);}}break;case _0xeb56('0xc7'):_0x26fda9[_0xeb56('0x3f')]+=0x1;_0x1efb94['countnoanswerretry']+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut[_0xeb56('0x8c')](_0x1efb94,0x3,_0xeb56('0xc8'));ami['emit'](_0xeb56('0xc9'),ut[_0xeb56('0xb1')](_0x1efb94,'noanswer'));rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xca'));if(ut[_0xeb56('0x9d')](_0x1efb94)>=_0x26fda9[_0xeb56('0xa1')]){_0x5be233=ut['cloneAction'](_0x1efb94,0xf,'Global');rpcDb[_0xeb56('0x92')](_0x5be233,_0xeb56('0xcb'));}else{if(_0x1efb94[_0xeb56('0xcc')]>=_0x26fda9['dialNoAnswerMaxRetry']){rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xca'));}else{rpcDb['rescheduleContact'](ut[_0xeb56('0xa7')](_0x1efb94,_0xeb56('0xcc'),_0x26fda9[_0xeb56('0xcd')]),_0x1efb94['unlockAgent'],_0x1efb94[_0xeb56('0xce')]);}}break;case _0xeb56('0xcf'):_0x26fda9[_0xeb56('0xd0')]+=0x1;_0x1efb94[_0xeb56('0xd1')]+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut['logCustomer'](_0x1efb94,0x8,'Congestion');ami['emit'](_0xeb56('0xd2'),ut[_0xeb56('0xb1')](_0x1efb94,_0xeb56('0xd3')));rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xd4'));if(ut[_0xeb56('0x9d')](_0x1efb94)>=_0x26fda9[_0xeb56('0xa1')]){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb[_0xeb56('0x92')](_0x5be233,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x1efb94['countcongestionretry']>=_0x26fda9[_0xeb56('0xd5')]){rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xd4'));}else{rpcDb['rescheduleContact'](ut[_0xeb56('0xa7')](_0x1efb94,'countcongestionretry',_0x26fda9['dialBusyRetryFrequency']),_0x1efb94[_0xeb56('0xa9')],_0x1efb94['activeContact']);}}break;case _0xeb56('0xd6'):_0x26fda9[_0xeb56('0x42')]+=0x1;_0x1efb94[_0xeb56('0xd7')]+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut['totalGlobal'](_0x1efb94);ut[_0xeb56('0x8c')](_0x1efb94,0x14,_0xeb56('0xd8'));ami['emit'](_0xeb56('0xd9'),ut[_0xeb56('0xb1')](_0x1efb94,_0xeb56('0xda')));rpcDb[_0xeb56('0x8f')](_0x1efb94,'[syncHangupRequest][logAgentReject]');if(ut['totalGlobal'](_0x1efb94)>=_0x26fda9['dialGlobalMaxRetry']){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0x14,_0xeb56('0xd8'));rpcDb[_0xeb56('0x92')](_0x5be233,_0xeb56('0xdb'));}else{if(_0x1efb94[_0xeb56('0xd7')]>=_0x26fda9[_0xeb56('0xdc')]){rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xdb'));}else{rpcDb['rescheduleContact'](ut[_0xeb56('0xa7')](_0x1efb94,_0xeb56('0xd7'),_0x26fda9[_0xeb56('0xdd')]),_0x1efb94[_0xeb56('0xa9')],_0x1efb94[_0xeb56('0xce')]);}}break;case _0xeb56('0xde'):_0x26fda9[_0xeb56('0xdf')]+=0x1;_0x1efb94[_0xeb56('0xe0')]+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut[_0xeb56('0x8c')](_0x1efb94,0xb,_0xeb56('0xe1'));rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xe2'));if(ut[_0xeb56('0x9d')](_0x1efb94)>=_0x26fda9[_0xeb56('0xa1')]){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb[_0xeb56('0x92')](_0x5be233,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x1efb94[_0xeb56('0xe3')]>=_0x26fda9[_0xeb56('0xe4')]){rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xe2'));}else{rpcDb[_0xeb56('0xa6')](ut['scheduledAt'](_0x1efb94,_0xeb56('0xe0'),_0x26fda9[_0xeb56('0xe5')]),_0x1efb94[_0xeb56('0xa9')],_0x1efb94['activeContact']);}}break;case'18':_0x26fda9[_0xeb56('0x43')]+=0x1;_0x1efb94[_0xeb56('0xe6')]+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut['logCustomer'](_0x1efb94,0x12,_0xf5cd82[_0xeb56('0xe7')]||_0xf5cd82[_0xeb56('0xe8')]);ami[_0xeb56('0x28')](_0xeb56('0xe9'),ut[_0xeb56('0xb1')](_0x1efb94,_0xeb56('0xea')));rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xeb'));if(ut[_0xeb56('0x9d')](_0x1efb94)>=_0x26fda9[_0xeb56('0xa1')]){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb[_0xeb56('0x92')](_0x5be233,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0xeb56('0x92')](_0x1efb94,_0xeb56('0xeb'));}delete this[_0xeb56('0x14')][_0xf5cd82[_0xeb56('0xbe')]];break;case'19':_0x26fda9[_0xeb56('0x43')]+=0x1;_0x1efb94[_0xeb56('0xb7')]=ut[_0xeb56('0x9d')](_0x1efb94);ut[_0xeb56('0x8c')](_0x1efb94,0x13,_0xf5cd82[_0xeb56('0xe7')]||_0xf5cd82[_0xeb56('0xe8')]);ami['emit'](_0xeb56('0xe9'),ut[_0xeb56('0xb1')](_0x1efb94,_0xeb56('0xea')));rpcDb[_0xeb56('0x8f')](_0x1efb94,_0xeb56('0xec'));if(ut['totalGlobal'](_0x1efb94)>=_0x26fda9[_0xeb56('0xa1')]){_0x5be233=ut['cloneAction'](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb[_0xeb56('0x92')](_0x5be233,_0xeb56('0xec'));}else{rpcDb[_0xeb56('0x92')](_0x1efb94,'[callProgressDetectingCustomer][machine]');}delete this[_0xeb56('0x14')][_0xf5cd82[_0xeb56('0xbe')]];break;default:if(_0x1efb94[_0xeb56('0xad')]){ut[_0xeb56('0x76')](_0x26fda9,_0xeb56('0xed'));ut[_0xeb56('0x77')](_0xeb56('0xee')+_0x26fda9[_0xeb56('0x2a')],_0xf5cd82);}_0x26fda9[_0xeb56('0x43')]+=0x1;_0x1efb94['countglobal']=ut[_0xeb56('0x9d')](_0x1efb94);ut['logCustomer'](_0x1efb94,0xc,_0xf5cd82['cause-txt']||_0xf5cd82[_0xeb56('0xe8')]);rpcDb[_0xeb56('0x8f')](_0x1efb94,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0xeb56('0x9d')](_0x1efb94)>=_0x26fda9['dialGlobalMaxRetry']){_0x5be233=ut[_0xeb56('0xa2')](_0x1efb94,0xf,_0xeb56('0xa3'));rpcDb['createCustomerFinal'](_0x5be233,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb['createCustomerFinal'](_0x1efb94,_0xeb56('0xef'));}delete this[_0xeb56('0x14')][_0xf5cd82[_0xeb56('0xbe')]];}if(!(_0x1efb94['dialAnswer']&&_0x11bba1==='16')){ut[_0xeb56('0x74')](_0x26fda9,_0xeb56('0xf0'));logger[_0xeb56('0x6a')](_0xeb56('0xf1'),_0x1efb94[_0xeb56('0xaf')],_0xeb56('0xb0'),_0x26fda9[_0xeb56('0x2a')],'originated:\x20',_0x26fda9['originated']);}if(_0x11bba1!=='ANSWER'){delete this[_0xeb56('0x14')][_0xf5cd82[_0xeb56('0xbe')]];delete this[_0xeb56('0x14')][_0xf5cd82[_0xeb56('0xf2')]];}}};Preview[_0xeb56('0xd')][_0xeb56('0xf3')]=function(_0x2cbd85,_0x29c063,_0x5337c1){if(_[_0xeb56('0xf4')](_0x29c063)&&_0xeb56('0xf5')!==typeof _0x29c063){return;}if(_[_0xeb56('0xf4')](_0x5337c1)&&_0xeb56('0xf5')!==typeof _0x5337c1){return;}switch(_0x5337c1[_0xeb56('0xf6')]){case'0':ut[_0xeb56('0xf7')](_0x2cbd85,0x0,_0xeb56('0x9e'));rpcDb[_0xeb56('0xf8')](_0x2cbd85,_0xeb56('0xf9'));break;case'3':ut[_0xeb56('0xf7')](_0x2cbd85,0x3,_0xeb56('0xc8'));rpcDb[_0xeb56('0xf8')](_0x2cbd85,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xeb56('0xf7')](_0x2cbd85,0x5,_0xeb56('0xc1'));rpcDb[_0xeb56('0xf8')](_0x2cbd85,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0xeb56('0xf7')](_0x2cbd85,0x8,_0xeb56('0xfa'));rpcDb[_0xeb56('0xf8')](_0x2cbd85,_0xeb56('0xfb'));break;case'22':ut[_0xeb56('0xf7')](_0x2cbd85,0x16,_0xeb56('0xfc'));rpcDb['createAgentHistory'](_0x2cbd85,_0xeb56('0xfd'));break;default:ut[_0xeb56('0xf7')](_0x2cbd85,0xc,_0x5337c1['reason']);rpcDb[_0xeb56('0xf8')](_0x2cbd85,'[callProgressDetectingAgent][logCongestion]');}ut[_0xeb56('0x74')](_0x29c063,_0xeb56('0xfe'));logger['info'](_0xeb56('0xff'),_0x2cbd85[_0xeb56('0xaf')],_0xeb56('0xb0'),_0x29c063[_0xeb56('0x2a')],_0xeb56('0x100'),_0x29c063[_0xeb56('0x4c')]);delete this['actions'][_0x2cbd85[_0xeb56('0xaf')]];};Preview[_0xeb56('0xd')][_0xeb56('0x101')]=function(_0x43e75d,_0x26c249,_0x3dc8db,_0x12ce78,_0x137632){var _0x50bf2a=this;return new BPromise(function(_0x37d345,_0x396e2a){if(_[_0xeb56('0x69')](_0x26c249)||_['isNil'](_0x26c249[_0xeb56('0x102')])||_['isNil'](_0x26c249[_0xeb56('0x102')]['phone'])||_[_0xeb56('0x69')](_0x26c249[_0xeb56('0x6f')])){_0x396e2a(ut[_0xeb56('0x5e')](_0xeb56('0x103'),_0x12ce78,_0x137632));return;}var _0x3aaf10=uuid['v4']();var _0x177b83=_0x50bf2a[_0xeb56('0x12')][_0x26c249[_0xeb56('0x104')]['name']];var _0x203e9d=_0x3dc8db?_0x50bf2a[_0xeb56('0x15')][_0x3dc8db]['id']:undefined;_0x50bf2a[_0xeb56('0x14')][_0x3aaf10]=new Action(_0x26c249,_0x177b83,_0x3aaf10,_0x3dc8db,_0x203e9d);var _0x13808f=_0x50bf2a['actions'][_0x3aaf10];_0x13808f[_0xeb56('0xa9')]=_0x12ce78;_0x13808f[_0xeb56('0xce')]=_0x137632;_0x13808f[_0xeb56('0x105')]=_0x3dc8db;if(_[_0xeb56('0x106')](_0x43e75d)){_0x50bf2a[_0xeb56('0x107')](_0x13808f,_0x177b83,_0x26c249,_0x3dc8db)['then'](function(_0x51909c){logger[_0xeb56('0x6a')](_0xeb56('0x108'),_0xeb56('0x109')+_0x13808f['queue']+_0xeb56('0x10a')+_0x13808f[_0xeb56('0x10b')],JSON[_0xeb56('0x55')](_0x51909c));ami['emit']('custom:agentcalled',ut['buildObj'](_0x13808f,_0xeb56('0x10c'),_0x50bf2a['campaignsPreview'][_0x13808f[_0xeb56('0x6b')]]));_0x37d345(ut[_0xeb56('0x5e')](_0xeb56('0x10d')));})['catch'](function(_0x23ca88){ut[_0xeb56('0x60')]('[Preview][execCall][failure]',_0x23ca88);_0x396e2a(ut['message'](_0xeb56('0x10e'),_0x12ce78,_0x137632));});}else{_0x177b83['outboundBlacklistCallsDay']+=0x1;ut['logBlacklist'](_0x13808f);rpcDb[_0xeb56('0x10f')](_0x13808f,_0xeb56('0x110'));delete _0x50bf2a[_0xeb56('0x14')][_0x3aaf10];_0x396e2a(ut[_0xeb56('0x5e')](_0xeb56('0x111'),_0x12ce78,_0x137632));}});};Preview[_0xeb56('0xd')][_0xeb56('0x97')]=function(_0x139218){return!_[_0xeb56('0x69')](_0x139218)&&!_['isNil'](_0x139218['name'])&&!_[_0xeb56('0x69')](_0x139218[_0xeb56('0x53')])&&_0x139218[_0xeb56('0x53')]&&!_['isNil'](this['trunks'][util[_0xeb56('0x56')](_0xeb56('0x112'),_0x139218[_0xeb56('0x2a')])])&&!_['isNil'](this['trunks'][util['format'](_0xeb56('0x112'),_0x139218[_0xeb56('0x2a')])]['status'])&&(this[_0xeb56('0x13')][util[_0xeb56('0x56')](_0xeb56('0x112'),_0x139218['name'])][_0xeb56('0x71')]===_0xeb56('0x113')||this[_0xeb56('0x13')][util[_0xeb56('0x56')]('SIP/%s',_0x139218[_0xeb56('0x2a')])]['status']===_0xeb56('0x114'));};Preview[_0xeb56('0xd')][_0xeb56('0x85')]=function(_0x5de2b5,_0x5a7f2e){var _0x5e2095=this;return new BPromise(function(_0x402a03,_0x5f0439){_0x5e2095[_0xeb56('0x115')](_0x5de2b5,_0x5a7f2e)[_0xeb56('0x7f')](function(_0x39b021){_0x402a03(_[_0xeb56('0x6d')](_0x39b021,[_0xeb56('0x5e')]));})[_0xeb56('0x88')](function(_0x17d8cd){if(_0x17d8cd[_0xeb56('0x116')]){rpcDb['unlockContact'](_0x5de2b5);}if(_0x17d8cd[_0xeb56('0x53')]){rpcDb['disableContact'](_0x5de2b5);}_0x5f0439(_[_0xeb56('0x6d')](_0x17d8cd,['message']));});});};Preview[_0xeb56('0xd')][_0xeb56('0x115')]=function(_0x3c80aa,_0x476480){var _0x5ea9ef=this;return new BPromise(function(_0x11bfc2,_0x36772c){var _0x1d63b4,_0x1b4b6a;rpcDb[_0xeb56('0x117')](_0x3c80aa)[_0xeb56('0x7f')](function(_0x4ccc99){if(!_[_0xeb56('0x69')](_0x4ccc99[0x0])){_0x1b4b6a=_0x4ccc99[0x0][_0xeb56('0x118')]?![]:!![];_0x1d63b4=_0x4ccc99[0x0][_0xeb56('0x118')]?!![]:![];_0x1d63b4=_0x476480?!![]:_0x1d63b4;}var _0x2f2738=_0x5ea9ef[_0xeb56('0x119')](_0x4ccc99);if(_0x2f2738[_0xeb56('0x11a')]){rpcDb[_0xeb56('0x11b')](_[_0xeb56('0x6d')](_0x4ccc99[0x0],[_0xeb56('0x6f'),'Contact.phone']))[_0xeb56('0x7f')](function(_0x2793c2){_0x5ea9ef[_0xeb56('0x101')](_0x2793c2,_0x4ccc99[0x0],_0x476480,_0x1b4b6a,_0x1d63b4)[_0xeb56('0x7f')](function(_0x276251){_0x11bfc2(_0x276251);})[_0xeb56('0x88')](function(_0x4f9259){_0x36772c(_0x4f9259);});})[_0xeb56('0x88')](function(_0x4278b0){ut[_0xeb56('0x60')](_0xeb56('0x11c'),_0x4278b0);_0x36772c(ut[_0xeb56('0x5e')](_0xeb56('0x11d'),_0x1b4b6a,_0x1d63b4));});}else{_0x36772c(ut[_0xeb56('0x5e')](_0x2f2738[_0xeb56('0x5e')],_0x1b4b6a,_0x1d63b4));}})[_0xeb56('0x88')](function(_0x5005c5){ut['logger']('[Preview][getContactPreview]',_0x5005c5);_0x36772c(ut[_0xeb56('0x5e')](_0xeb56('0x11d'),![],!![]));});});};Preview[_0xeb56('0xd')]['validateContact']=function(_0x1b59ba){if(_[_0xeb56('0x69')](_0x1b59ba)||_['isEmpty'](_0x1b59ba)||!_[_0xeb56('0x69')](_0x1b59ba[0x0][_0xeb56('0x83')])&&_['isNil'](_0x1b59ba[0x0][_0xeb56('0x83')]['name'])){ut[_0xeb56('0x60')]('[Preview][validateContact][Empty\x20Contact]',_0x1b59ba);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x2cf91a=this['campaignsPreview'][_0x1b59ba[0x0]['Queue'][_0xeb56('0x2a')]];_0x2cf91a[_0xeb56('0x5e')]=_0xeb56('0x9a');if(_[_0xeb56('0x69')](_0x2cf91a)){ut[_0xeb56('0x60')](_0xeb56('0x11e'),_0x2cf91a);return{'isValid':![],'message':_0xeb56('0x11f')};}if(!this[_0xeb56('0x97')](_0x2cf91a['Trunk'])){ut['logger'](_0xeb56('0x120'),'campaign\x20Name:\x20'+_0x2cf91a['name']+'\x20Trunk\x20is\x20not\x20active');if(!this[_0xeb56('0x97')](_0x2cf91a[_0xeb56('0x98')])){ut['logger'](_0xeb56('0x120'),_0x2cf91a[_0xeb56('0x2a')]+_0xeb56('0x121'));return{'isValid':![],'message':_0xeb56('0x122')};}}if(!ut['isActive'](_0x2cf91a[_0xeb56('0x36')])){ut['logger'](_0xeb56('0x123'),_0x2cf91a[_0xeb56('0x2a')]+_0xeb56('0x124'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x2cf91a[_0xeb56('0x2a')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xeb56('0x125')};};Preview[_0xeb56('0xd')]['execCall']=function(_0x5bf34d,_0x25ee5f,_0xf41c84,_0x43abf4){var _0xbe8180=this;return new BPromise(function(_0x456a94,_0x193ff1){var _0x5950ef=_0x5bf34d[_0xeb56('0xaf')];var _0x3ff733=_0xbe8180[_0xeb56('0x97')](_0x25ee5f[_0xeb56('0x52')])?util[_0xeb56('0x56')](_0xeb56('0x126'),_0x25ee5f[_0xeb56('0x52')]['name'],_['isNil'](_0x25ee5f['dialPrefix'])?'':_0x25ee5f[_0xeb56('0x39')][_0xeb56('0x127')]()||'',_0x25ee5f['dialCutDigit']>0x0?_0xf41c84['Contact'][_0xeb56('0x128')][_0xeb56('0x129')](_0x25ee5f[_0xeb56('0x12a')]):_0xf41c84[_0xeb56('0x102')][_0xeb56('0x128')]):util[_0xeb56('0x56')](_0xeb56('0x126'),_[_0xeb56('0x69')](_0x25ee5f[_0xeb56('0x98')])?_0x25ee5f[_0xeb56('0x52')][_0xeb56('0x2a')]:_0x25ee5f[_0xeb56('0x98')][_0xeb56('0x2a')],_['isNil'](_0x25ee5f[_0xeb56('0x39')])?'':_0x25ee5f[_0xeb56('0x39')]['trim']()||'',_0x25ee5f[_0xeb56('0x12a')]>0x0?_0xf41c84[_0xeb56('0x102')][_0xeb56('0x128')][_0xeb56('0x129')](_0x25ee5f[_0xeb56('0x12a')]):_0xf41c84[_0xeb56('0x102')][_0xeb56('0x128')]);var _0x1fd1d7=_0xbe8180[_0xeb56('0x97')](_0x25ee5f[_0xeb56('0x52')])?ut['getCallerId'](_0x25ee5f[_0xeb56('0x52')]['callerid'],_0x25ee5f['dialOriginateCallerIdName'],_0x25ee5f['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xeb56('0x12b')](_0x25ee5f[_0xeb56('0x38')],_0x25ee5f['dialRandomLastDigitCallerIdNumber']):_0x25ee5f[_0xeb56('0x38')]):ut[_0xeb56('0x12c')](_[_0xeb56('0x69')](_0x25ee5f[_0xeb56('0x98')])?_0x25ee5f[_0xeb56('0x52')]['callerid']:_0x25ee5f['TrunkBackup']['callerid'],_0x25ee5f[_0xeb56('0x37')],_0x25ee5f['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xeb56('0x12b')](_0x25ee5f[_0xeb56('0x38')],_0x25ee5f[_0xeb56('0x12d')]):_0x25ee5f[_0xeb56('0x38')]);if(_0x1fd1d7){_0x5bf34d[_0xeb56('0x12e')]=ut[_0xeb56('0x12f')](_0x1fd1d7);_0x5bf34d[_0xeb56('0x130')]=ut[_0xeb56('0x131')](_0x1fd1d7);}var _0x207bb7=ut[_0xeb56('0x132')](_0x25ee5f,_0xf41c84,_0x3ff733,_0x1fd1d7,_0x5950ef,_0x5bf34d);_[_0xeb56('0x133')](_0x5bf34d,ut[_0xeb56('0x134')](_0x207bb7));_0x5bf34d[_0xeb56('0x8a')]=moment()[_0xeb56('0x56')](_0xeb56('0x8b'));ami[_0xeb56('0x135')](ut['variablesAction'](_0x5bf34d,_0x25ee5f,_0x207bb7,_0x5bf34d['activeContact'],_0x43abf4))[_0xeb56('0x7f')](function(_0xd12477){var _0x414074=_0x5bf34d[_0xeb56('0x136')];if(!_[_0xeb56('0x69')](_0x414074)){if(!_['isNil'](_0xbe8180[_0xeb56('0x15')][_0x414074])){_0xbe8180[_0xeb56('0x15')][_0x414074]['destconnectedlinenum']=_0x5bf34d['calleridnum'];emit(util[_0xeb56('0x56')](_0xeb56('0x137'),_0xbe8180['agents'][_0x414074][_0xeb56('0x2a')]),_0xeb56('0x138'),{'destaccountcode':_0xbe8180[_0xeb56('0x15')][_0x414074]['accountcode'],'destconnectedlinenum':_0x5bf34d[_0xeb56('0x139')]});}}_0x25ee5f[_0xeb56('0x4c')]+=0x1;logger['info']('[originated][increment]',_0x5950ef,_0xeb56('0xb0'),_0x25ee5f[_0xeb56('0x2a')],_0xeb56('0x100'),_0x25ee5f[_0xeb56('0x4c')]);_0x456a94(_0xd12477);})['catch'](function(_0x41945b){ut[_0xeb56('0xf7')](_0x5bf34d,0xe,_0xeb56('0x13a'));rpcDb[_0xeb56('0xf8')](_0x5bf34d,_0xeb56('0x13b'));_0x193ff1(_0x41945b);});});};Preview[_0xeb56('0xd')][_0xeb56('0x20')]=function(_0x4a306c){if(this[_0xeb56('0x14')][_0x4a306c['linkedid']]){this[_0xeb56('0x14')][_0x4a306c['linkedid']]['channel']=_0x4a306c[_0xeb56('0x72')];}};Preview[_0xeb56('0xd')][_0xeb56('0x18')]=function(_0x29755a){var _0x16d720=this;var _0x321c48=this[_0xeb56('0x14')][_0x29755a[_0xeb56('0x13c')]];if(_0x321c48){if(_0x321c48[_0xeb56('0x105')]&&this[_0xeb56('0x15')][_0x321c48[_0xeb56('0x105')]]){ut[_0xeb56('0x13d')](_0x321c48,this['agents'][_0x321c48['lookAgent']][_0xeb56('0x2a')],this[_0xeb56('0x15')][_0x321c48[_0xeb56('0x105')]]['id']);}var _0x208a08=_[_0xeb56('0x13e')](_0x321c48);_0x208a08[_0xeb56('0xab')]=moment()[_0xeb56('0x56')](_0xeb56('0x8b'));var _0x496b65=_0x16d720[_0xeb56('0x12')][_0x321c48[_0xeb56('0x6b')]];if(ut[_0xeb56('0x13f')](_0x29755a[_0xeb56('0x140')])){if(_0x321c48[_0xeb56('0xa9')]){rpcDb[_0xeb56('0x141')](_0x321c48[_0xeb56('0x10b')]);}if(_0x321c48[_0xeb56('0xce')]){rpcDb['disableContact'](_0x321c48[_0xeb56('0x10b')]);}ami[_0xeb56('0x28')]('custom:agentringnoanswer',ut[_0xeb56('0xb1')](_0x321c48,_0xeb56('0x142'),this[_0xeb56('0x12')][_0x321c48[_0xeb56('0x6b')]]));this[_0xeb56('0xf3')](_0x208a08,_0x496b65,_0x29755a);}else{_0x321c48[_0xeb56('0x8a')]=moment()[_0xeb56('0x56')](_0xeb56('0x8b'));ut[_0xeb56('0xf7')](_0x208a08,0x4,_0xeb56('0x143'));rpcDb[_0xeb56('0xf8')](_0x208a08,_0xeb56('0x144'));}}};Preview[_0xeb56('0xd')][_0xeb56('0x1b')]=function(_0x3d3eab){var _0x36270c=this;var _0x1d1648=this[_0xeb56('0x14')][_0x3d3eab['linkedid']];var _0x5b1856;if(_0x1d1648){_0x5b1856=this['campaignsPreview'][_0x1d1648[_0xeb56('0x6b')]];logger[_0xeb56('0x6a')](_0xeb56('0x145'),_0x3d3eab[_0xeb56('0xbe')],_0xeb56('0xb0'),_0x5b1856[_0xeb56('0x2a')],'pTalking:\x20',_0x5b1856['pTalking']);}if(this[_0xeb56('0x14')][_0x3d3eab[_0xeb56('0xbe')]]&&_0x3d3eab[_0xeb56('0xbe')]!==_0x3d3eab[_0xeb56('0xaf')]){if(_0x3d3eab[_0xeb56('0x146')]==='16'&&this['actions'][_0x3d3eab['linkedid']]['dialAnswer']){this[_0xeb56('0x9b')](_0x3d3eab,_0x3d3eab[_0xeb56('0xbe')],_0x3d3eab['cause']);}else if(this[_0xeb56('0x14')][_0x3d3eab['linkedid']]['dialAnswer']){logger[_0xeb56('0x6a')](_0xeb56('0x147'),_0x3d3eab[_0xeb56('0xbe')],_0x3d3eab[_0xeb56('0x146')],_0xeb56('0xb0'),_0x5b1856[_0xeb56('0x2a')],'pTalking:\x20',_0x5b1856[_0xeb56('0x2e')]);this['callProgressDetectingCustomer'](_0x3d3eab,_0x3d3eab[_0xeb56('0xbe')],_0x3d3eab[_0xeb56('0x146')]);}}else if(_0x1d1648&&_[_0xeb56('0x69')](_0x1d1648['statedesc'])&&_0x5b1856[_0xeb56('0x148')]&&_0x3d3eab[_0xeb56('0xbe')]===_0x3d3eab[_0xeb56('0xaf')]&&_[_0xeb56('0x69')](_0x3d3eab[_0xeb56('0xf6')])&&_0x3d3eab['cause']==='16'&&_0x3d3eab[_0xeb56('0x149')]==='6'&&_['isUndefined'](_0x1d1648[_0xeb56('0x14a')])){if(_0x1d1648[_0xeb56('0xa9')]){rpcDb['unlockContact'](_0x1d1648['idContact']);}if(_0x1d1648[_0xeb56('0xce')]){rpcDb[_0xeb56('0x89')](_0x1d1648[_0xeb56('0x10b')]);}_0x3d3eab[_0xeb56('0xf6')]='22';this[_0xeb56('0xf3')](_0x1d1648,_0x5b1856,_0x3d3eab);}else if(_0x1d1648&&_0x1d1648[_0xeb56('0x14a')]){if(_0x3d3eab[_0xeb56('0x146')]==='16'&&this[_0xeb56('0x14')][_0x3d3eab[_0xeb56('0xbe')]]['dialAnswer']){logger[_0xeb56('0x6a')](_0xeb56('0x14b'),_0x3d3eab['linkedid'],_0x3d3eab[_0xeb56('0x146')],_0xeb56('0xb0'),_0x5b1856[_0xeb56('0x2a')],'pTalking:\x20',_0x5b1856[_0xeb56('0x2e')]);this[_0xeb56('0x9b')](_0x3d3eab,_0x3d3eab['linkedid'],_0x3d3eab[_0xeb56('0x146')]);}else if(this[_0xeb56('0x14')][_0x3d3eab[_0xeb56('0xbe')]]['dialAnswer']){logger[_0xeb56('0x6a')](_0xeb56('0x147'),_0x3d3eab[_0xeb56('0xbe')],_0x3d3eab[_0xeb56('0x146')],'\x20Queue',_0x5b1856[_0xeb56('0x2a')],'pTalking:\x20',_0x5b1856[_0xeb56('0x2e')]);this[_0xeb56('0x9b')](_0x3d3eab,_0x3d3eab[_0xeb56('0xbe')],_0x3d3eab['cause']);}}};Preview[_0xeb56('0xd')][_0xeb56('0x14c')]=function(_0x25678e){if(this[_0xeb56('0x14')][_0x25678e['destlinkedid']]&&_0x25678e[_0xeb56('0xf2')]!==_0x25678e[_0xeb56('0x14d')]){this[_0xeb56('0x9b')](_0x25678e,_0x25678e[_0xeb56('0xf2')],_0x25678e['dialstatus']);}};Preview['prototype'][_0xeb56('0x1d')]=function(_0x587270){if(this[_0xeb56('0x14')][_0x587270[_0xeb56('0xbe')]]&&_0x587270['linkedid']!==_0x587270[_0xeb56('0xaf')]&&!this[_0xeb56('0x14')][_0x587270[_0xeb56('0xbe')]][_0xeb56('0xad')]){if(_0x587270[_0xeb56('0x146')]==='1'){this['callProgressDetectingCustomer'](_0x587270,_0x587270[_0xeb56('0xbe')],_0x587270['cause']);}}};Preview[_0xeb56('0xd')][_0xeb56('0x14e')]=function(_0xf8d6ec,_0x2a9160,_0x108377){if(this[_0xeb56('0x14')][_0xf8d6ec]){if(_['isNil'](this[_0xeb56('0x14')][_0xf8d6ec]['variables'])){this['actions'][_0xf8d6ec][_0xeb56('0x14f')]={};}this['actions'][_0xf8d6ec][_0xeb56('0x14f')][_0x2a9160]=_0x108377;}};Preview['prototype'][_0xeb56('0x22')]=function(_0x124945){try{if(!_[_0xeb56('0x69')](_0x124945)){if(ut[_0xeb56('0x150')](_[_0xeb56('0x151')](_0x124945[_0xeb56('0x152')])[0x0])){this['addVariable'](_0x124945[_0xeb56('0xaf')],_[_0xeb56('0x151')](_0x124945[_0xeb56('0x152')])[0x0],_0x124945[_0xeb56('0x153')]);}}}catch(_0xa32a0c){logger['error'](_0xeb56('0x154'),util[_0xeb56('0x155')](_0xa32a0c,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x1b922c){if(_0x1b922c){if(this[_0xeb56('0x14')][_0x1b922c[_0xeb56('0x156')]]){this[_0xeb56('0x14')][_0x1b922c[_0xeb56('0x156')]][_0xeb56('0x14a')]=!![];}}};Preview[_0xeb56('0xd')]['syncBlindTransfer']=function(_0x5e5212){if(_0x5e5212){if(this['actions'][_0x5e5212[_0xeb56('0x157')]]){this[_0xeb56('0x14')][_0x5e5212[_0xeb56('0x157')]][_0xeb56('0x14a')]=!![];}}};module[_0xeb56('0x158')]=Preview;
\ No newline at end of file
index c0fc859..c3f7a60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1072=['createHistory','catch','[createHistory]\x20','then','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','context','from-sip','exten','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve'];(function(_0x5311a1,_0x304912){var _0x2acb9f=function(_0x4803e7){while(--_0x4803e7){_0x5311a1['push'](_0x5311a1['shift']());}};_0x2acb9f(++_0x304912);}(_0x1072,0xdb));var _0x2107=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0x1072[_0x9dfc10];return _0x4f938a;};'use strict';var util=require('util');var BPromise=require(_0x2107('0x0'));var logger=require(_0x2107('0x1'))(_0x2107('0x2'));var _=require(_0x2107('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0x2107('0x4'));var cmHopperHistory=require(_0x2107('0x5'));var cmHopperBlack=require(_0x2107('0x6'));var voiceQueueRt=require(_0x2107('0x7'));var agentReportPreview=require(_0x2107('0x8'));var voiceQueueReport=require(_0x2107('0x9'));function loggerCatch(_0x451e3b){return function(_0x19591b){logger[_0x2107('0xa')](_0x451e3b,util[_0x2107('0xb')](_0x19591b,{'showHidden':![],'depth':null}));};}function create(_0x5df310){return BPromise[_0x2107('0xc')]()['then'](cmHopperHistory[_0x2107('0xd')](_0x5df310))[_0x2107('0xe')](loggerCatch(_0x2107('0xf')));}function createAgent(_0x5affe4){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](agentReportPreview[_0x2107('0xd')](_0x5affe4))['catch'](loggerCatch(_0x2107('0xf')));}function moveContact(_0x23a1b7){return BPromise['resolve']()[_0x2107('0x10')](cmHopper['moveContactManagedDialer'](_0x23a1b7,!![]))[_0x2107('0xe')](loggerCatch(_0x2107('0x11')));}exports['checkIsBlackList']=function(_0x198043){return BPromise[_0x2107('0xc')]()['then'](cmHopperBlack[_0x2107('0x12')](_0x198043))[_0x2107('0xe')](loggerCatch(_0x2107('0x13')));};exports[_0x2107('0x14')]=function(_0x2060bc){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x14')](_0x2060bc))['catch'](loggerCatch('[getContactPreview]\x20'));};exports[_0x2107('0xd')]=function(_0x3b0d16,_0x430cad){create(_0x3b0d16)['catch'](loggerCatch(_0x430cad));moveContact(_0x3b0d16)['catch'](loggerCatch(_0x430cad));};exports[_0x2107('0x15')]=function(_0x28db47,_0x5555d6){createAgent(_0x28db47)['catch'](loggerCatch(_0x5555d6));};exports[_0x2107('0x16')]=function(_0x42f079,_0x426ef3){create(_0x42f079)['catch'](loggerCatch(_0x426ef3));};exports[_0x2107('0x17')]=function(_0x4ee22f,_0x46cd54){moveContact(_0x4ee22f)[_0x2107('0xe')](loggerCatch(_0x46cd54));};exports[_0x2107('0x18')]=function(_0x3fe2d8,_0x821305,_0xbcfef7){if(_0x821305){_0x3fe2d8[_0x2107('0x19')]=null;}if(_0xbcfef7){_0x3fe2d8['active']=![];}return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x18')](_0x3fe2d8))['catch'](loggerCatch(_0x2107('0x1a')));};exports['countReScheduled']=function(_0x23e357){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x1b')](_0x23e357))[_0x2107('0xe')](loggerCatch(_0x2107('0x1c')));};exports[_0x2107('0x1d')]=function(_0x57bab3){return BPromise[_0x2107('0xc')]()['then'](cmHopper[_0x2107('0x1d')]({'UserId':null},_0x57bab3,0x1))[_0x2107('0xe')](loggerCatch(_0x2107('0x1e')));};exports[_0x2107('0x1f')]=function(_0x31762){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x1d')]({'active':![]},_0x31762,0x1))['catch'](loggerCatch(_0x2107('0x20')));};exports[_0x2107('0x21')]=function(_0x388435){var _0x58ea1d={};_0x58ea1d['type']=_0x388435[_0x2107('0x22')];_0x58ea1d['uniqueid']=_0x388435[_0x2107('0x23')];_0x58ea1d[_0x2107('0x24')]=_0x388435[_0x2107('0x24')];_0x58ea1d[_0x2107('0x25')]=_0x388435[_0x2107('0x25')];_0x58ea1d['queue']=_0x388435[_0x2107('0x26')];_0x58ea1d[_0x2107('0x27')]=_0x388435[_0x2107('0x28')];_0x58ea1d['queuecallerleaveAt']=_0x388435[_0x2107('0x28')];_0x58ea1d[_0x2107('0x29')]=0x1;_0x58ea1d[_0x2107('0x2a')]=_0x388435[_0x2107('0x2b')];_0x58ea1d[_0x2107('0x2c')]=_0x388435['membername'];_0x58ea1d[_0x2107('0x2d')]=_0x2107('0x2e');_0x58ea1d[_0x2107('0x2f')]='xcally-motion-preview';_0x58ea1d[_0x2107('0x30')]=0x0;_0x58ea1d[_0x2107('0x31')]=0x1;_0x58ea1d[_0x2107('0x32')]=_0x388435['membername'];_0x58ea1d[_0x2107('0x33')]=_0x2107('0x34');return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](voiceQueueReport[_0x2107('0x35')](_0x58ea1d))[_0x2107('0xe')](loggerCatch(_0x2107('0x36')));};exports[_0x2107('0x37')]=function(_0x5d848f,_0x19643b){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x37')](_0x5d848f,_0x19643b))[_0x2107('0xe')](loggerCatch(_0x2107('0x38')));};exports['rescheduleContactInQueue']=function(_0x28500d){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x18')](_0x28500d,!![],!![]))[_0x2107('0xe')](loggerCatch(_0x2107('0x39')));};
\ No newline at end of file
+var _0x1799=['catch','resolve','then','[createHistory]\x20','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','type','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','util','bluebird','preview','lodash','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','error','inspect','createHistory'];(function(_0x46b6c4,_0x47c081){var _0x20f5b5=function(_0x3ad442){while(--_0x3ad442){_0x46b6c4['push'](_0x46b6c4['shift']());}};_0x20f5b5(++_0x47c081);}(_0x1799,0x1a5));var _0x9179=function(_0x4f8066,_0x3cd1b6){_0x4f8066=_0x4f8066-0x0;var _0xe7e725=_0x1799[_0x4f8066];return _0xe7e725;};'use strict';var util=require(_0x9179('0x0'));var BPromise=require(_0x9179('0x1'));var logger=require('../../../config/logger')(_0x9179('0x2'));var _=require(_0x9179('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0x9179('0x4'));var cmHopperHistory=require(_0x9179('0x5'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x9179('0x6'));var agentReportPreview=require(_0x9179('0x7'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x8cc6d4){return function(_0x2f4d0e){logger[_0x9179('0x8')](_0x8cc6d4,util[_0x9179('0x9')](_0x2f4d0e,{'showHidden':![],'depth':null}));};}function create(_0x55a634){return BPromise['resolve']()['then'](cmHopperHistory[_0x9179('0xa')](_0x55a634))[_0x9179('0xb')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x4cbf93){return BPromise[_0x9179('0xc')]()[_0x9179('0xd')](agentReportPreview['createHistory'](_0x4cbf93))['catch'](loggerCatch(_0x9179('0xe')));}function moveContact(_0x45b3b9){return BPromise['resolve']()[_0x9179('0xd')](cmHopper['moveContactManagedDialer'](_0x45b3b9,!![]))[_0x9179('0xb')](loggerCatch(_0x9179('0xf')));}exports[_0x9179('0x10')]=function(_0x37190a){return BPromise[_0x9179('0xc')]()[_0x9179('0xd')](cmHopperBlack[_0x9179('0x10')](_0x37190a))[_0x9179('0xb')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x9179('0x11')]=function(_0x446a36){return BPromise['resolve']()[_0x9179('0xd')](cmHopper[_0x9179('0x11')](_0x446a36))[_0x9179('0xb')](loggerCatch(_0x9179('0x12')));};exports[_0x9179('0xa')]=function(_0xa91e0e,_0x310bd9){create(_0xa91e0e)[_0x9179('0xb')](loggerCatch(_0x310bd9));moveContact(_0xa91e0e)[_0x9179('0xb')](loggerCatch(_0x310bd9));};exports['createAgentHistory']=function(_0x17c39c,_0x493f70){createAgent(_0x17c39c)[_0x9179('0xb')](loggerCatch(_0x493f70));};exports[_0x9179('0x13')]=function(_0x4cdbb9,_0x5e1659){create(_0x4cdbb9)['catch'](loggerCatch(_0x5e1659));};exports[_0x9179('0x14')]=function(_0x984f01,_0x31b5c3){moveContact(_0x984f01)['catch'](loggerCatch(_0x31b5c3));};exports[_0x9179('0x15')]=function(_0x512803,_0x4b529e,_0x1de1e8){if(_0x4b529e){_0x512803[_0x9179('0x16')]=null;}if(_0x1de1e8){_0x512803['active']=![];}return BPromise[_0x9179('0xc')]()['then'](cmHopper[_0x9179('0x15')](_0x512803))[_0x9179('0xb')](loggerCatch(_0x9179('0x17')));};exports[_0x9179('0x18')]=function(_0x137a8b){return BPromise[_0x9179('0xc')]()['then'](cmHopper[_0x9179('0x18')](_0x137a8b))['catch'](loggerCatch(_0x9179('0x19')));};exports[_0x9179('0x1a')]=function(_0x233075){return BPromise['resolve']()[_0x9179('0xd')](cmHopper[_0x9179('0x1a')]({'UserId':null},_0x233075,0x1))[_0x9179('0xb')](loggerCatch('[unlockContact]\x20'));};exports[_0x9179('0x1b')]=function(_0x21ba14){return BPromise[_0x9179('0xc')]()[_0x9179('0xd')](cmHopper[_0x9179('0x1a')]({'active':![]},_0x21ba14,0x1))[_0x9179('0xb')](loggerCatch(_0x9179('0x1c')));};exports['crateCustomerReportQueue']=function(_0x598c4a){var _0x2611f1={};_0x2611f1[_0x9179('0x1d')]=_0x598c4a[_0x9179('0x1d')];_0x2611f1['uniqueid']=_0x598c4a['uniqueid'];_0x2611f1[_0x9179('0x1e')]=_0x598c4a[_0x9179('0x1e')];_0x2611f1[_0x9179('0x1f')]=_0x598c4a[_0x9179('0x1f')];_0x2611f1[_0x9179('0x20')]=_0x598c4a[_0x9179('0x20')];_0x2611f1[_0x9179('0x21')]=_0x598c4a[_0x9179('0x22')];_0x2611f1[_0x9179('0x23')]=_0x598c4a[_0x9179('0x22')];_0x2611f1[_0x9179('0x24')]=0x1;_0x2611f1[_0x9179('0x25')]=_0x598c4a[_0x9179('0x26')];_0x2611f1[_0x9179('0x27')]=_0x598c4a[_0x9179('0x28')];_0x2611f1[_0x9179('0x29')]=_0x9179('0x2a');_0x2611f1[_0x9179('0x2b')]='xcally-motion-preview';_0x2611f1[_0x9179('0x2c')]=0x0;_0x2611f1[_0x9179('0x2d')]=0x1;_0x2611f1[_0x9179('0x2e')]=_0x598c4a[_0x9179('0x28')];_0x2611f1[_0x9179('0x2f')]=_0x9179('0x30');return BPromise[_0x9179('0xc')]()['then'](voiceQueueReport[_0x9179('0x31')](_0x2611f1))[_0x9179('0xb')](loggerCatch(_0x9179('0x32')));};exports['getContactRecallMe']=function(_0x5217d4,_0x25044b){return BPromise[_0x9179('0xc')]()[_0x9179('0xd')](cmHopper[_0x9179('0x33')](_0x5217d4,_0x25044b))[_0x9179('0xb')](loggerCatch(_0x9179('0x34')));};exports['rescheduleContactInQueue']=function(_0x4a57f7){return BPromise[_0x9179('0xc')]()[_0x9179('0xd')](cmHopper['rescheduleContact'](_0x4a57f7,!![],!![]))[_0x9179('0xb')](loggerCatch(_0x9179('0x35')));};
\ No newline at end of file
index 497fa33..9b6f404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x382a=['campaigntype','dialAnswer','countglobal','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','bridgepeer','getCallerIdRandom','pow','replace','random','match','extractCalleridNumber','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','milliseconds','diff','seconds','loggerCatch','error','inspect','logger','info','loggerError','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','Queue','name','calleridnum','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_UNIQUEID','Contact','isNil','%s%s','toUpper','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logLookAgent','membername','UserId','logCustomer','ringtime','talktime','answertime','Failure','variablesAction','calleridname','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','scheduledat','add','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','createBody','CampaignId','filterKey','idContact'];(function(_0x575cf0,_0x2ac511){var _0x1c3205=function(_0x52c73f){while(--_0x52c73f){_0x575cf0['push'](_0x575cf0['shift']());}};_0x1c3205(++_0x2ac511);}(_0x382a,0xaa));var _0xa382=function(_0x2cdf4e,_0x210079){_0x2cdf4e=_0x2cdf4e-0x0;var _0x5a4400=_0x382a[_0x2cdf4e];return _0x5a4400;};'use strict';var util=require('util');var _=require(_0xa382('0x0'));var moment=require(_0xa382('0x1'));var logger=require(_0xa382('0x2'))(_0xa382('0x3'));var ipAgi=process[_0xa382('0x4')][_0xa382('0x5')]||'127.0.0.1';function getSeconds(_0x5e86f5,_0x181e7c){var _0x6fa488=moment(_0x5e86f5)['milliseconds'](0x0);var _0x200a89=moment(_0x181e7c)[_0xa382('0x6')](0x0);return _0x6fa488[_0xa382('0x7')](_0x200a89,_0xa382('0x8'));}exports[_0xa382('0x9')]=function(_0x32cbee){return function(_0x545b15){logger[_0xa382('0xa')](_0x32cbee,util[_0xa382('0xb')](_0x545b15,{'showHidden':![],'depth':null}));};};exports[_0xa382('0xc')]=function(_0x219b87,_0x39b8e8){logger[_0xa382('0xd')](_0x219b87,util[_0xa382('0xb')](_0x39b8e8,{'showHidden':![],'depth':null}));};exports[_0xa382('0xe')]=function(_0x1b2a3b,_0x47f461){logger['error'](_0x1b2a3b,util['inspect'](_0x47f461,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x558cba){return function(_0x56b66f){logger[_0xa382('0xd')](_0x558cba,util[_0xa382('0xb')](_0x56b66f,{'showHidden':![],'depth':null}));};};exports[_0xa382('0xf')]=function(_0x62ce84,_0x4cd51f,_0x4b2500){return{'message':_0x62ce84,'unlock':_0x4cd51f,'active':_0x4b2500};};exports[_0xa382('0x10')]=function(_0x12d782,_0x259574,_0x5c570b){if(!_[_0xa382('0x11')](_0x5c570b)&&_0xa382('0x12')===typeof _0x5c570b&&!_[_0xa382('0x13')](_0x5c570b)){if(!_['isUndefined'](_0x259574)&&_0xa382('0x12')===typeof _0x259574&&!_[_0xa382('0x13')](_0x259574)){return util[_0xa382('0x14')](_0xa382('0x15'),_0x259574,_0x5c570b);}return util[_0xa382('0x14')](_0xa382('0x15'),_0x5c570b,_0x5c570b);}if(!_['isUndefined'](_0x12d782)&&_0xa382('0x12')===typeof _0x12d782&&!_[_0xa382('0x13')](_0x12d782)){return _0x12d782;}return _0xa382('0x16');};exports['isActive']=function(_0x52b9ad){if(_['isNil'](_0x52b9ad)){return![];}return _0x52b9ad;};exports['addVariables']=function(_0x253143,_0x1b93bc,_0x533a57,_0x12e146,_0x91328f,_0x420cc0){var _0x1b42ba={'XMD-QUEUE':_0x1b93bc[_0xa382('0x17')]?_0x1b93bc[_0xa382('0x17')][_0xa382('0x18')]:'','XMD-CALLERID':_0x12e146,'XMD-CALLERID-PREVIEW':_0x420cc0?util[_0xa382('0x14')](_0xa382('0x15'),_0x420cc0['calleridname'],_0x420cc0[_0xa382('0x19')]):_0x12e146,'XMD-DIALID':_0x91328f,'XMD-CONTACTID':_0x1b93bc[_0xa382('0x1a')],'XMD-CDRTYPE':_0xa382('0x1b'),'CALLERID(all)':_0x12e146,'XMD-VOICEQUEUEID':_0x1b93bc[_0xa382('0x1c')],'XMD-DIALCHANNEL':_0x533a57,'XMD-DIALTIMEOUT':_0x253143['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0xa382('0x14')](_0xa382('0x1d'),_0x253143[_0xa382('0x1e')]?'g':'',_[_0xa382('0x13')](_0x253143[_0xa382('0x1f')])?'':_0xa382('0x20')),'XMD-DIALURL':_0x253143[_0xa382('0x21')]||'','XMD-AGI':_0x253143['dialQueueProject']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x253143[_0xa382('0x22')]):_0xa382('0x23'),'XMD-AGIAFTER':_0x253143[_0xa382('0x1e')]?util[_0xa382('0x14')](_0xa382('0x24'),ipAgi,_0x253143[_0xa382('0x1e')]):_0xa382('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x420cc0?_0x420cc0[_0xa382('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x420cc0?_0x420cc0[_0xa382('0x26')]:'','XMD-DESTINATION':_0xa382('0x27')};if(!_['isEmpty'](_0x253143[_0xa382('0x1f')])){_0x1b42ba[util[_0xa382('0x14')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x253143['monitor_format'];_0x1b42ba[util[_0xa382('0x14')]('%s',_0xa382('0x28'))]=_0x91328f;}if(_0x1b93bc&&_0x1b93bc['Contact']){for(var _0x46692a in _0x1b93bc[_0xa382('0x29')]){if(_0x1b93bc[_0xa382('0x29')]['hasOwnProperty'](_0x46692a)){if(!_[_0xa382('0x2a')](_0x1b93bc['Contact'][_0x46692a])&&_0x46692a!=='id'&&_0x46692a!=='tags'&&_0x46692a!=='createdAt'&&_0x46692a!=='updatedAt'){_0x1b42ba[util[_0xa382('0x14')](_0xa382('0x2b'),'XMD-',_[_0xa382('0x2c')](_0x46692a))]=_0x1b93bc['Contact'][_0x46692a];}}}}return _0x1b42ba;};exports['toLowerVariables']=function(_0x41436f){var _0x367aca={};for(var _0x46ed9d in _0x41436f){if(_0x41436f[_0xa382('0x2d')](_0x46ed9d)){_0x367aca[util[_0xa382('0x14')]('%s',_[_0xa382('0x2e')](_0x46ed9d))]=_0x41436f[_0x46ed9d];}}return{'variables':_0x367aca};};exports[_0xa382('0x2f')]=function(_0x24917e,_0x298498){if(!_[_0xa382('0x2a')](_0x24917e)){if(_0x24917e[_0xa382('0x2d')]('originated')){if(_0x24917e[_0xa382('0x30')]>0x0){_0x24917e[_0xa382('0x30')]-=0x1;}else{logger['error'](_0xa382('0x31'),_0x298498);}}}else{logger[_0xa382('0xa')](_0xa382('0x32'),_0x298498);}};exports[_0xa382('0x33')]=function(_0x3d7278){var _0x3586a1=moment()['format'](_0xa382('0x34'));_0x3d7278[_0xa382('0x35')]=0xd;_0x3d7278[_0xa382('0x36')]=_0xa382('0x37');_0x3d7278[_0xa382('0x38')]=_0x3586a1;_0x3d7278[_0xa382('0x39')]=_0x3586a1;_0x3d7278[_0xa382('0x3a')]=_0x3586a1;};exports['logAgent']=function(_0x20b7c4,_0xff18d8,_0x17b599){var _0x52e46a=moment()[_0xa382('0x14')](_0xa382('0x34'));_0x20b7c4[_0xa382('0x35')]=_0xff18d8;_0x20b7c4['statedesc']=_0x17b599;_0x20b7c4[_0xa382('0x39')]=_0x52e46a;_0x20b7c4['ringtime']=getSeconds(_0x20b7c4[_0xa382('0x39')],_0x20b7c4[_0xa382('0x38')]);};exports[_0xa382('0x3b')]=function(_0x41987a,_0x14a37a,_0xe442c8){_0x41987a[_0xa382('0x3c')]=_0x14a37a;_0x41987a[_0xa382('0x3d')]=_0xe442c8;};exports[_0xa382('0x3e')]=function(_0x1cdf68,_0x5206ca,_0x4f6260){var _0x23b049=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1cdf68[_0xa382('0x35')]=_0x5206ca;_0x1cdf68[_0xa382('0x36')]=_0x4f6260;_0x1cdf68['responsetime']=_0x1cdf68[_0xa382('0x39')]?_0x1cdf68[_0xa382('0x39')]:_0x23b049;_0x1cdf68['endtime']=_0x1cdf68['endtime']?_0x1cdf68[_0xa382('0x3a')]:_0x23b049;_0x1cdf68[_0xa382('0x3f')]=getSeconds(_0x1cdf68[_0xa382('0x39')]||0x0,_0x1cdf68[_0xa382('0x38')]||0x0);_0x1cdf68[_0xa382('0x40')]=_0x1cdf68[_0xa382('0x41')]?getSeconds(_0x1cdf68[_0xa382('0x3a')],_0x1cdf68[_0xa382('0x41')]):0x0;};exports['isFailure']=function(_0x200839){return _0x200839===_0xa382('0x42');};exports[_0xa382('0x43')]=function(_0x163aae,_0x4010bd,_0x214a1d,_0x255aa1,_0x1ec720){var _0x564c33=_0x255aa1?'RECALL':_0x163aae[_0xa382('0x44')];_0x564c33=_0x1ec720?'BOOKED':_0x564c33;return{'actionid':_0x163aae[_0xa382('0x45')],'action':_0xa382('0x46'),'channel':_0x163aae[_0xa382('0x47')],'callerid':util[_0xa382('0x14')]('\x22%s\x22\x20<%s>',_0x564c33,_0x163aae['calleridnum']),'Exten':'xcally-motion-preview','Context':_0xa382('0x48'),'Priority':'1','variable':_0x214a1d,'timeout':(_0x4010bd[_0xa382('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0x163aae['uniqueid']};};exports[_0xa382('0x4a')]=function(_0x5369cc){return _0x5369cc[_0xa382('0x4b')]+_0x5369cc[_0xa382('0x4c')]+_0x5369cc['countnoanswerretry']+_0x5369cc[_0xa382('0x4d')]+_0x5369cc[_0xa382('0x4e')];};exports[_0xa382('0x4f')]=function(_0x2915a1){var _0xc900af=_[_0xa382('0x50')](_0x2915a1);_0xc900af['state']=0xf;_0xc900af[_0xa382('0x36')]=_0xa382('0x51');return _0xc900af;};exports[_0xa382('0x52')]=function(_0x53fb7a,_0xae0182,_0x494c46){var _0x402cad={};_0x402cad[_0xae0182]=_0x53fb7a[_0xae0182];_0x402cad[_0xa382('0x53')]=![];_0x402cad[_0xa382('0x54')]=moment()[_0xa382('0x55')](_0x494c46,'minutes')[_0xa382('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x402cad['ContactId']=_0x53fb7a[_0xa382('0x1a')];_0x402cad[_0xa382('0x56')]=_0x53fb7a['ListId'];_0x402cad['VoiceQueueId']=_0x53fb7a[_0xa382('0x1c')]||undefined;return _0x402cad;};exports[_0xa382('0x57')]=function(_0x1a3817,_0x1b7ca8){if(!_['isNil'](_0x1a3817)){if(_0x1a3817[_0xa382('0x58')]>0x0){_0x1a3817['pTalking']-=0x1;}else{logger[_0xa382('0xa')](_0x1b7ca8,_0xa382('0x59'));}}else{logger['error'](_0x1b7ca8,_0xa382('0x5a'));}};exports[_0xa382('0x5b')]=function(_0x34f39a){if(_0x34f39a<=0x0){return!![];}return![];};exports[_0xa382('0x5c')]=function(_0x23d1a6,_0x57ecd0,_0x50ab60){_0x23d1a6[_0xa382('0x5d')]=_0x57ecd0;_0x23d1a6['name']=_0x23d1a6[_0xa382('0x5e')];_0x23d1a6[_0xa382('0x5f')]=_0x23d1a6[_0xa382('0x47')];if(_0x50ab60){_0x23d1a6[_0xa382('0x60')]=_0x50ab60['mandatoryDisposition'];}return _0x23d1a6;};exports[_0xa382('0x61')]=function(_0x5016a3){var _0x1bce2f={};_0x1bce2f[_0xa382('0x5e')]=_0x5016a3[_0xa382('0x5e')];_0x1bce2f[_0xa382('0x5f')]=_0x5016a3['channelAgent'];_0x1bce2f['uniqueid']=_0x5016a3[_0xa382('0x45')];return _0x1bce2f;};exports[_0xa382('0x62')]=function(_0x4e685e){var _0x21946b=[];for(var _0x3046e3 in _0x4e685e){if(_0x4e685e[_0xa382('0x2d')](_0x3046e3)){if(!_[_0xa382('0x2a')](_0x4e685e[_0x3046e3])&&_0x4e685e[_0x3046e3][_0xa382('0x35')]===_0xa382('0x63')&&_0x4e685e[_0x3046e3][_0xa382('0x64')]===_0xa382('0x65')){_0x21946b[_0xa382('0x66')](_0x4e685e[_0x3046e3]['id']);}}}return _0x21946b;};exports[_0xa382('0x67')]=function(_0x40c808){var _0x262ae2=moment()[_0xa382('0x6')](0x0);var _0x500176=moment(_0x40c808)['milliseconds'](0x0);return _0x262ae2[_0xa382('0x7')](_0x500176,_0xa382('0x8'));};exports[_0xa382('0x68')]=function(_0x451365){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x451365['ContactId'],'ListId':_0x451365[_0xa382('0x56')],'VoiceQueueId':_0x451365[_0xa382('0x1c')]||undefined,'CampaignId':_0x451365[_0xa382('0x69')]||undefined};};exports[_0xa382('0x6a')]=function(_0xbd5c3e){if(_0xbd5c3e===_0xa382('0x45')||_0xbd5c3e===_0xa382('0x6b')||_0xbd5c3e===_0xa382('0x5e')||_0xbd5c3e==='type'||_0xbd5c3e===_0xa382('0x6c')||_0xbd5c3e===_0xa382('0x6d')||_0xbd5c3e==='membername'||_0xbd5c3e===_0xa382('0x47')||_0xbd5c3e===_0xa382('0x44')||_0xbd5c3e==='active'||_0xbd5c3e==='calleridnum'||_0xbd5c3e===_0xa382('0x54')||_0xbd5c3e==='countbusyretry'||_0xbd5c3e===_0xa382('0x4c')||_0xbd5c3e==='countnoanswerretry'||_0xbd5c3e===_0xa382('0x6e')||_0xbd5c3e==='callback'||_0xbd5c3e===_0xa382('0x6f')||_0xbd5c3e===_0xa382('0x70')||_0xbd5c3e===_0xa382('0x71')||_0xbd5c3e===_0xa382('0x1a')||_0xbd5c3e==='ListId'||_0xbd5c3e==='UserId'||_0xbd5c3e==='VoiceQueueId'||_0xbd5c3e===_0xa382('0x72')||_0xbd5c3e===_0xa382('0x73')||_0xbd5c3e===_0xa382('0x74')||_0xbd5c3e==='xmd-phone'||_0xbd5c3e===_0xa382('0x75')||_0xbd5c3e===_0xa382('0x76')||_0xbd5c3e==='xmd-dialtimeout'||_0xbd5c3e==='xmd-dialoptions'||_0xbd5c3e===_0xa382('0x77')||_0xbd5c3e===_0xa382('0x78')||_0xbd5c3e===_0xa382('0x79')||_0xbd5c3e===_0xa382('0x7a')||_0xbd5c3e==='xmd-callerid'||_0xbd5c3e==='xmd-agiafter'||_0xbd5c3e===_0xa382('0x7b')||_0xbd5c3e===_0xa382('0x7c')||_0xbd5c3e===_0xa382('0x7d')||_0xbd5c3e==='rtpaudioqosjitter'||_0xbd5c3e===_0xa382('0x7e')||_0xbd5c3e===_0xa382('0x7f')||_0xbd5c3e===_0xa382('0x80')||_0xbd5c3e===_0xa382('0x81')||_0xbd5c3e===_0xa382('0x82')||_0xbd5c3e===_0xa382('0x7c')||_0xbd5c3e===_0xa382('0x7d')||_0xbd5c3e===_0xa382('0x83')||_0xbd5c3e==='rtpaudioqosjitterbridged'||_0xbd5c3e===_0xa382('0x7f')||_0xbd5c3e===_0xa382('0x80')||_0xbd5c3e===_0xa382('0x81')||_0xbd5c3e===_0xa382('0x82')||_0xbd5c3e===_0xa382('0x84')||_0xbd5c3e==='bridgepvtcallid'||_0xbd5c3e===_0xa382('0x35')||_0xbd5c3e===_0xa382('0x36')){return![];}return!![];};exports[_0xa382('0x85')]=function(_0x5901aa,_0x57a05c){var _0xfeb2f6,_0x2a09c9,_0x4d7bb7;if(_0x57a05c<=0x0){_0x57a05c=0x1;}_0xfeb2f6=new RegExp('\x5cw{0,'+_0x57a05c+'}$');_0x2a09c9=Math[_0xa382('0x86')](0xa,_0x57a05c-0x1);_0x4d7bb7=Math[_0xa382('0x86')](0xa,_0x57a05c)-0x1;return util['format']('%s',_[_0xa382('0x87')](_0x5901aa,_0xfeb2f6,_[_0xa382('0x88')](_0x2a09c9,_0x4d7bb7)));};exports['extractCalleridName']=function(_0x510d5e){var _0x5cc4a4=_0x510d5e[_0xa382('0x89')](/"(.*?)"/);return _0x5cc4a4?_0x5cc4a4[0x1]:_0x510d5e;};exports[_0xa382('0x8a')]=function(_0x580c3e){var _0x5be344=_0x580c3e[_0xa382('0x89')](/<(.*?)>/);return _0x5be344?_0x5be344[0x1]:_0x580c3e;};
\ No newline at end of file
+var _0xde21=['sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosbridged','rtpaudioqosloss','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','env','XCALLY_IP_AGI','milliseconds','diff','loggerCatch','logger','info','loggerError','error','inspect','logger2','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','_XCALLY_MIXMONITOR_UNIQUEID','Contact','createdAt','%s%s','toUpper','hasOwnProperty','toLower','updateOriginated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','responsetime','endtime','logAgent','ringtime','starttime','logLookAgent','membername','UserId','logCustomer','answertime','Failure','RECALL','uniqueid','originate','channelAgent','xcally-motion-preview','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','active','scheduledat','minutes','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','lastevent','queue','interface','voice','mandatoryDisposition','agentReadyId','not_inuse','status','reachable','push','getDiff','seconds','createBody','filterKey','idContact','type','campaigntype','dialAnswer','countglobal','callback','callbackuniqueid','callbackat'];(function(_0x153dbf,_0xa721aa){var _0x49e357=function(_0x2e1a7f){while(--_0x2e1a7f){_0x153dbf['push'](_0x153dbf['shift']());}};_0x49e357(++_0xa721aa);}(_0xde21,0x125));var _0x1de2=function(_0x403154,_0x221c68){_0x403154=_0x403154-0x0;var _0x5dbf07=_0xde21[_0x403154];return _0x5dbf07;};'use strict';var util=require(_0x1de2('0x0'));var _=require(_0x1de2('0x1'));var moment=require('moment');var logger=require(_0x1de2('0x2'))(_0x1de2('0x3'));var ipAgi=process[_0x1de2('0x4')][_0x1de2('0x5')]||'127.0.0.1';function getSeconds(_0x29ccb0,_0x3168b6){var _0x5b5445=moment(_0x29ccb0)[_0x1de2('0x6')](0x0);var _0x1a6875=moment(_0x3168b6)[_0x1de2('0x6')](0x0);return _0x5b5445[_0x1de2('0x7')](_0x1a6875,'seconds');}exports[_0x1de2('0x8')]=function(_0xf3897e){return function(_0x23e0c7){logger['error'](_0xf3897e,util['inspect'](_0x23e0c7,{'showHidden':![],'depth':null}));};};exports[_0x1de2('0x9')]=function(_0x26317b,_0x16ef91){logger[_0x1de2('0xa')](_0x26317b,util['inspect'](_0x16ef91,{'showHidden':![],'depth':null}));};exports[_0x1de2('0xb')]=function(_0x4826d2,_0x30052e){logger[_0x1de2('0xc')](_0x4826d2,util[_0x1de2('0xd')](_0x30052e,{'showHidden':![],'depth':null}));};exports[_0x1de2('0xe')]=function(_0x29f0de){return function(_0x255d16){logger[_0x1de2('0xa')](_0x29f0de,util[_0x1de2('0xd')](_0x255d16,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x3d4802,_0x255045,_0x30d2e0){return{'message':_0x3d4802,'unlock':_0x255045,'active':_0x30d2e0};};exports[_0x1de2('0xf')]=function(_0x1f188f,_0x5bf656,_0xbd89d1){if(!_[_0x1de2('0x10')](_0xbd89d1)&&_0x1de2('0x11')===typeof _0xbd89d1&&!_[_0x1de2('0x12')](_0xbd89d1)){if(!_['isUndefined'](_0x5bf656)&&_0x1de2('0x11')===typeof _0x5bf656&&!_[_0x1de2('0x12')](_0x5bf656)){return util['format']('\x22%s\x22\x20<%s>',_0x5bf656,_0xbd89d1);}return util[_0x1de2('0x13')](_0x1de2('0x14'),_0xbd89d1,_0xbd89d1);}if(!_[_0x1de2('0x10')](_0x1f188f)&&_0x1de2('0x11')===typeof _0x1f188f&&!_['isEmpty'](_0x1f188f)){return _0x1f188f;}return'\x22\x22\x20<>';};exports['isActive']=function(_0x31beff){if(_[_0x1de2('0x15')](_0x31beff)){return![];}return _0x31beff;};exports[_0x1de2('0x16')]=function(_0x4af05a,_0x20208a,_0x1f9027,_0x341631,_0x101adf,_0x41ef5e){var _0x2ba660={'XMD-QUEUE':_0x20208a[_0x1de2('0x17')]?_0x20208a[_0x1de2('0x17')][_0x1de2('0x18')]:'','XMD-CALLERID':_0x341631,'XMD-CALLERID-PREVIEW':_0x41ef5e?util[_0x1de2('0x13')]('\x22%s\x22\x20<%s>',_0x41ef5e[_0x1de2('0x19')],_0x41ef5e[_0x1de2('0x1a')]):_0x341631,'XMD-DIALID':_0x101adf,'XMD-CONTACTID':_0x20208a[_0x1de2('0x1b')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x341631,'XMD-VOICEQUEUEID':_0x20208a[_0x1de2('0x1c')],'XMD-DIALCHANNEL':_0x1f9027,'XMD-DIALTIMEOUT':_0x4af05a[_0x1de2('0x1d')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x1de2('0x1e'),_0x4af05a[_0x1de2('0x1f')]?'g':'',_['isEmpty'](_0x4af05a[_0x1de2('0x20')])?'':_0x1de2('0x21')),'XMD-DIALURL':_0x4af05a[_0x1de2('0x22')]||'','XMD-AGI':_0x4af05a[_0x1de2('0x23')]?util[_0x1de2('0x13')](_0x1de2('0x24'),ipAgi,_0x4af05a[_0x1de2('0x23')]):_0x1de2('0x25'),'XMD-AGIAFTER':_0x4af05a[_0x1de2('0x1f')]?util[_0x1de2('0x13')](_0x1de2('0x24'),ipAgi,_0x4af05a[_0x1de2('0x1f')]):_0x1de2('0x25'),'XMD-ORIGINATECALLERIDNUM':_0x41ef5e?_0x41ef5e[_0x1de2('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x41ef5e?_0x41ef5e['originatecalleridname']:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x1de2('0x12')](_0x4af05a[_0x1de2('0x20')])){_0x2ba660[util[_0x1de2('0x13')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x4af05a[_0x1de2('0x20')];_0x2ba660[util[_0x1de2('0x13')]('%s',_0x1de2('0x27'))]=_0x101adf;}if(_0x20208a&&_0x20208a[_0x1de2('0x28')]){for(var _0x547b0f in _0x20208a[_0x1de2('0x28')]){if(_0x20208a[_0x1de2('0x28')]['hasOwnProperty'](_0x547b0f)){if(!_[_0x1de2('0x15')](_0x20208a[_0x1de2('0x28')][_0x547b0f])&&_0x547b0f!=='id'&&_0x547b0f!=='tags'&&_0x547b0f!==_0x1de2('0x29')&&_0x547b0f!=='updatedAt'){_0x2ba660[util[_0x1de2('0x13')](_0x1de2('0x2a'),'XMD-',_[_0x1de2('0x2b')](_0x547b0f))]=_0x20208a[_0x1de2('0x28')][_0x547b0f];}}}}return _0x2ba660;};exports['toLowerVariables']=function(_0x50b6e5){var _0x24fa68={};for(var _0x193f13 in _0x50b6e5){if(_0x50b6e5[_0x1de2('0x2c')](_0x193f13)){_0x24fa68[util[_0x1de2('0x13')]('%s',_[_0x1de2('0x2d')](_0x193f13))]=_0x50b6e5[_0x193f13];}}return{'variables':_0x24fa68};};exports[_0x1de2('0x2e')]=function(_0x4aeeff,_0x2d8d51){if(!_[_0x1de2('0x15')](_0x4aeeff)){if(_0x4aeeff['hasOwnProperty']('originated')){if(_0x4aeeff['originated']>0x0){_0x4aeeff['originated']-=0x1;}else{logger[_0x1de2('0xc')](_0x1de2('0x2f'),_0x2d8d51);}}}else{logger[_0x1de2('0xc')](_0x1de2('0x30'),_0x2d8d51);}};exports[_0x1de2('0x31')]=function(_0x207ac0){var _0x3a8f25=moment()[_0x1de2('0x13')](_0x1de2('0x32'));_0x207ac0[_0x1de2('0x33')]=0xd;_0x207ac0[_0x1de2('0x34')]='Blacklist';_0x207ac0['starttime']=_0x3a8f25;_0x207ac0[_0x1de2('0x35')]=_0x3a8f25;_0x207ac0[_0x1de2('0x36')]=_0x3a8f25;};exports[_0x1de2('0x37')]=function(_0x386d0b,_0x4688c8,_0x51d285){var _0x7e69b9=moment()[_0x1de2('0x13')](_0x1de2('0x32'));_0x386d0b['state']=_0x4688c8;_0x386d0b[_0x1de2('0x34')]=_0x51d285;_0x386d0b[_0x1de2('0x35')]=_0x7e69b9;_0x386d0b[_0x1de2('0x38')]=getSeconds(_0x386d0b[_0x1de2('0x35')],_0x386d0b[_0x1de2('0x39')]);};exports[_0x1de2('0x3a')]=function(_0x254daf,_0x2cf6e8,_0x81f380){_0x254daf[_0x1de2('0x3b')]=_0x2cf6e8;_0x254daf[_0x1de2('0x3c')]=_0x81f380;};exports[_0x1de2('0x3d')]=function(_0x9e9c67,_0x1f4089,_0x4b90ea){var _0xc3eafb=moment()[_0x1de2('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x9e9c67[_0x1de2('0x33')]=_0x1f4089;_0x9e9c67['statedesc']=_0x4b90ea;_0x9e9c67[_0x1de2('0x35')]=_0x9e9c67[_0x1de2('0x35')]?_0x9e9c67['responsetime']:_0xc3eafb;_0x9e9c67[_0x1de2('0x36')]=_0x9e9c67[_0x1de2('0x36')]?_0x9e9c67[_0x1de2('0x36')]:_0xc3eafb;_0x9e9c67['ringtime']=getSeconds(_0x9e9c67[_0x1de2('0x35')]||0x0,_0x9e9c67['starttime']||0x0);_0x9e9c67['talktime']=_0x9e9c67[_0x1de2('0x3e')]?getSeconds(_0x9e9c67[_0x1de2('0x36')],_0x9e9c67[_0x1de2('0x3e')]):0x0;};exports['isFailure']=function(_0x441cd6){return _0x441cd6===_0x1de2('0x3f');};exports['variablesAction']=function(_0x2311f5,_0x3ce422,_0x4e3f2e,_0xfcbeb6,_0x446e86){var _0x19427f=_0xfcbeb6?_0x1de2('0x40'):_0x2311f5[_0x1de2('0x19')];_0x19427f=_0x446e86?'BOOKED':_0x19427f;return{'actionid':_0x2311f5[_0x1de2('0x41')],'action':_0x1de2('0x42'),'channel':_0x2311f5[_0x1de2('0x43')],'callerid':util[_0x1de2('0x13')](_0x1de2('0x14'),_0x19427f,_0x2311f5[_0x1de2('0x1a')]),'Exten':_0x1de2('0x44'),'Context':'from-sip','Priority':'1','variable':_0x4e3f2e,'timeout':(_0x3ce422['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x2311f5[_0x1de2('0x41')]};};exports['totalGlobal']=function(_0x496584){return _0x496584[_0x1de2('0x45')]+_0x496584[_0x1de2('0x46')]+_0x496584[_0x1de2('0x47')]+_0x496584['countagentrejectretry']+_0x496584[_0x1de2('0x48')];};exports[_0x1de2('0x49')]=function(_0x4267ff){var _0x165067=_['clone'](_0x4267ff);_0x165067[_0x1de2('0x33')]=0xf;_0x165067[_0x1de2('0x34')]=_0x1de2('0x4a');return _0x165067;};exports[_0x1de2('0x4b')]=function(_0x223f6b,_0x348f75,_0x6d6837){var _0x34d924={};_0x34d924[_0x348f75]=_0x223f6b[_0x348f75];_0x34d924[_0x1de2('0x4c')]=![];_0x34d924[_0x1de2('0x4d')]=moment()['add'](_0x6d6837,_0x1de2('0x4e'))[_0x1de2('0x13')](_0x1de2('0x32'));_0x34d924[_0x1de2('0x1b')]=_0x223f6b[_0x1de2('0x1b')];_0x34d924[_0x1de2('0x4f')]=_0x223f6b['ListId'];_0x34d924[_0x1de2('0x1c')]=_0x223f6b[_0x1de2('0x1c')]||undefined;return _0x34d924;};exports['decrementTalkink']=function(_0x4bbb1c,_0x1cf4d8){if(!_[_0x1de2('0x15')](_0x4bbb1c)){if(_0x4bbb1c[_0x1de2('0x50')]>0x0){_0x4bbb1c[_0x1de2('0x50')]-=0x1;}else{logger[_0x1de2('0xc')](_0x1cf4d8,_0x1de2('0x51'));}}else{logger['error'](_0x1cf4d8,_0x1de2('0x52'));}};exports['IsNotLoggedIn']=function(_0x3acab0){if(_0x3acab0<=0x0){return!![];}return![];};exports[_0x1de2('0x53')]=function(_0x295728,_0x5e9e58,_0x4c0e90){_0x295728[_0x1de2('0x54')]=_0x5e9e58;_0x295728[_0x1de2('0x18')]=_0x295728[_0x1de2('0x55')];_0x295728[_0x1de2('0x56')]=_0x295728[_0x1de2('0x43')];_0x295728['motionChannel']=_0x1de2('0x57');if(_0x4c0e90){_0x295728[_0x1de2('0x58')]=_0x4c0e90[_0x1de2('0x58')];}return _0x295728;};exports['buildAcw']=function(_0x4397e1){var _0x1b3198={};_0x1b3198['queue']=_0x4397e1[_0x1de2('0x55')];_0x1b3198[_0x1de2('0x56')]=_0x4397e1[_0x1de2('0x43')];_0x1b3198['uniqueid']=_0x4397e1[_0x1de2('0x41')];return _0x1b3198;};exports[_0x1de2('0x59')]=function(_0x983dbe){var _0x34a2ba=[];for(var _0x5bff93 in _0x983dbe){if(_0x983dbe['hasOwnProperty'](_0x5bff93)){if(!_[_0x1de2('0x15')](_0x983dbe[_0x5bff93])&&_0x983dbe[_0x5bff93][_0x1de2('0x33')]===_0x1de2('0x5a')&&_0x983dbe[_0x5bff93][_0x1de2('0x5b')]===_0x1de2('0x5c')){_0x34a2ba[_0x1de2('0x5d')](_0x983dbe[_0x5bff93]['id']);}}}return _0x34a2ba;};exports[_0x1de2('0x5e')]=function(_0x1472f3){var _0x325664=moment()[_0x1de2('0x6')](0x0);var _0x29170f=moment(_0x1472f3)[_0x1de2('0x6')](0x0);return _0x325664[_0x1de2('0x7')](_0x29170f,_0x1de2('0x5f'));};exports[_0x1de2('0x60')]=function(_0x58f2b2){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x58f2b2[_0x1de2('0x1b')],'ListId':_0x58f2b2[_0x1de2('0x4f')],'VoiceQueueId':_0x58f2b2[_0x1de2('0x1c')]||undefined,'CampaignId':_0x58f2b2['CampaignId']||undefined};};exports[_0x1de2('0x61')]=function(_0x5b7a43){if(_0x5b7a43===_0x1de2('0x41')||_0x5b7a43===_0x1de2('0x62')||_0x5b7a43===_0x1de2('0x55')||_0x5b7a43===_0x1de2('0x63')||_0x5b7a43===_0x1de2('0x64')||_0x5b7a43===_0x1de2('0x65')||_0x5b7a43===_0x1de2('0x3b')||_0x5b7a43==='channelAgent'||_0x5b7a43==='calleridname'||_0x5b7a43===_0x1de2('0x4c')||_0x5b7a43===_0x1de2('0x1a')||_0x5b7a43==='scheduledat'||_0x5b7a43===_0x1de2('0x45')||_0x5b7a43===_0x1de2('0x46')||_0x5b7a43===_0x1de2('0x47')||_0x5b7a43===_0x1de2('0x66')||_0x5b7a43===_0x1de2('0x67')||_0x5b7a43===_0x1de2('0x68')||_0x5b7a43===_0x1de2('0x69')||_0x5b7a43==='recallme'||_0x5b7a43===_0x1de2('0x1b')||_0x5b7a43===_0x1de2('0x4f')||_0x5b7a43===_0x1de2('0x3c')||_0x5b7a43===_0x1de2('0x1c')||_0x5b7a43===_0x1de2('0x6a')||_0x5b7a43===_0x1de2('0x6b')||_0x5b7a43===_0x1de2('0x6c')||_0x5b7a43===_0x1de2('0x6d')||_0x5b7a43===_0x1de2('0x6e')||_0x5b7a43==='xmd-dialurl'||_0x5b7a43===_0x1de2('0x6f')||_0x5b7a43===_0x1de2('0x70')||_0x5b7a43===_0x1de2('0x71')||_0x5b7a43===_0x1de2('0x72')||_0x5b7a43==='xmd-contactid'||_0x5b7a43==='xmd-cdrtype'||_0x5b7a43===_0x1de2('0x73')||_0x5b7a43===_0x1de2('0x74')||_0x5b7a43===_0x1de2('0x75')||_0x5b7a43===_0x1de2('0x76')||_0x5b7a43==='rtpaudioqosbridged'||_0x5b7a43===_0x1de2('0x77')||_0x5b7a43==='rtpaudioqosjitterbridged'||_0x5b7a43==='rtpaudioqosloss'||_0x5b7a43===_0x1de2('0x78')||_0x5b7a43===_0x1de2('0x79')||_0x5b7a43==='rtpaudioqosrttbridged'||_0x5b7a43===_0x1de2('0x76')||_0x5b7a43===_0x1de2('0x7a')||_0x5b7a43===_0x1de2('0x77')||_0x5b7a43==='rtpaudioqosjitterbridged'||_0x5b7a43===_0x1de2('0x7b')||_0x5b7a43===_0x1de2('0x78')||_0x5b7a43===_0x1de2('0x79')||_0x5b7a43==='rtpaudioqosrttbridged'||_0x5b7a43===_0x1de2('0x7c')||_0x5b7a43===_0x1de2('0x7d')||_0x5b7a43===_0x1de2('0x33')||_0x5b7a43==='statedesc'){return![];}return!![];};exports[_0x1de2('0x7e')]=function(_0x463a5e,_0x5ee814){var _0x2daa78,_0x4b25da,_0x212183;if(_0x5ee814<=0x0){_0x5ee814=0x1;}_0x2daa78=new RegExp(_0x1de2('0x7f')+_0x5ee814+'}$');_0x4b25da=Math[_0x1de2('0x80')](0xa,_0x5ee814-0x1);_0x212183=Math[_0x1de2('0x80')](0xa,_0x5ee814)-0x1;return util['format']('%s',_[_0x1de2('0x81')](_0x463a5e,_0x2daa78,_[_0x1de2('0x82')](_0x4b25da,_0x212183)));};exports['extractCalleridName']=function(_0x481eaa){var _0x328d80=_0x481eaa[_0x1de2('0x83')](/"(.*?)"/);return _0x328d80?_0x328d80[0x1]:_0x481eaa;};exports[_0x1de2('0x84')]=function(_0x43f770){var _0x5695b8=_0x43f770[_0x1de2('0x83')](/<(.*?)>/);return _0x5695b8?_0x5695b8[0x1]:_0x43f770;};
\ No newline at end of file
index d467fde..7e53f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b07=['queueremove','queuepause','voicechannel','voicequeuechannelredirect','queueadd','string','number','boolean'];(function(_0x906990,_0x391756){var _0x399b4a=function(_0x9e82e7){while(--_0x9e82e7){_0x906990['push'](_0x906990['shift']());}};_0x399b4a(++_0x391756);}(_0x2b07,0xe4));var _0x72b0=function(_0x5f1617,_0x46277b){_0x5f1617=_0x5f1617-0x0;var _0x3af5da=_0x2b07[_0x5f1617];return _0x3af5da;};'use strict';exports[_0x72b0('0x0')]={'queue':{'type':_0x72b0('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x72b0('0x1'),'required':!![]},'penalty':{'type':_0x72b0('0x2'),'required':![]},'paused':{'type':_0x72b0('0x3'),'required':![]}};exports[_0x72b0('0x4')]={'queue':{'type':_0x72b0('0x1'),'required':!![]},'interface':{'type':_0x72b0('0x1'),'required':!![]}};exports[_0x72b0('0x5')]={'interface':{'type':_0x72b0('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x72b0('0x1'),'required':![]}};exports['reload']={'module':{'type':_0x72b0('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]}};exports[_0x72b0('0x6')]={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]},'filename':{'type':_0x72b0('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x72b0('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]}};exports[_0x72b0('0x7')]={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]},'exten':{'type':_0x72b0('0x1'),'required':!![]},'context':{'type':_0x72b0('0x1')}};
\ No newline at end of file
+var _0x3883=['queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean','queueremove'];(function(_0x57cb4f,_0x541f57){var _0x29bb45=function(_0x462bee){while(--_0x462bee){_0x57cb4f['push'](_0x57cb4f['shift']());}};_0x29bb45(++_0x541f57);}(_0x3883,0x145));var _0x3388=function(_0x5c9600,_0x6ba7d3){_0x5c9600=_0x5c9600-0x0;var _0x1678a4=_0x3883[_0x5c9600];return _0x1678a4;};'use strict';exports[_0x3388('0x0')]={'queue':{'type':_0x3388('0x1'),'required':!![]},'interface':{'type':_0x3388('0x1'),'required':!![]},'membername':{'type':_0x3388('0x1'),'required':!![]},'penalty':{'type':_0x3388('0x2'),'required':![]},'paused':{'type':_0x3388('0x3'),'required':![]}};exports[_0x3388('0x4')]={'queue':{'type':_0x3388('0x1'),'required':!![]},'interface':{'type':_0x3388('0x1'),'required':!![]}};exports[_0x3388('0x5')]={'interface':{'type':_0x3388('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x3388('0x1'),'required':![]}};exports[_0x3388('0x6')]={'module':{'type':_0x3388('0x1'),'required':![]}};exports[_0x3388('0x7')]={'uniqueid':{'type':_0x3388('0x1'),'required':!![]}};exports[_0x3388('0x8')]={'uniqueid':{'type':_0x3388('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x3388('0x1')},'mixmonitorid':{'type':'string'}};exports[_0x3388('0x9')]={'uniqueid':{'type':_0x3388('0x1'),'required':!![]}};exports[_0x3388('0xa')]={'uniqueid':{'type':_0x3388('0x1'),'required':!![]},'exten':{'type':_0x3388('0x1'),'required':!![]},'context':{'type':_0x3388('0x1')}};
\ No newline at end of file
index 5f556f1..6381f12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8049=['isEmpty','ivrTotalCallsDays','answered','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','prototype','isNil','isUndefined','mergeFromDatabase','initTelephones','length','initTriggers','initTemplates','initZendeskAccounts','salesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','queue','queuecallerexit','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','seconds','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','bluebird','util','lodash','moment','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','name','interface','hasOwnProperty','total','sumHoldTime','sumDuration','sumBillable'];(function(_0x4bae71,_0x2d5388){var _0xef05=function(_0x6830e1){while(--_0x6830e1){_0x4bae71['push'](_0x4bae71['shift']());}};_0xef05(++_0x2d5388);}(_0x8049,0x107));var _0x9804=function(_0x996a48,_0x291ed7){_0x996a48=_0x996a48-0x0;var _0x47d3fb=_0x8049[_0x996a48];return _0x47d3fb;};'use strict';var BPromise=require(_0x9804('0x0'));var util=require(_0x9804('0x1'));var _=require(_0x9804('0x2'));var moment=require(_0x9804('0x3'));var Agent=require(_0x9804('0x4'));var Telephone=require('../model/telephone');var Trunk=require(_0x9804('0x5'));var VoiceQueue=require(_0x9804('0x6'));var Trigger=require(_0x9804('0x7'));var Template=require(_0x9804('0x8'));var Campaign=require(_0x9804('0x9'));var VoiceExtension=require(_0x9804('0xa'));var ZendeskAccount=require(_0x9804('0xb'));var SalesforceAccount=require(_0x9804('0xc'));var FreshdeskAccount=require(_0x9804('0xd'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x9804('0xe'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x9804('0xf'));var Dynamics365Account=require(_0x9804('0x10'));var FreshsalesAccount=require(_0x9804('0x11'));var FaxAccount=require(_0x9804('0x12'));var Realtime=function(){this[_0x9804('0x13')]={};this[_0x9804('0x14')]={};this[_0x9804('0x15')]={};this[_0x9804('0x16')]={};this[_0x9804('0x17')]={};this[_0x9804('0x18')]={};this[_0x9804('0x19')]={};this[_0x9804('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x9804('0x1b')]={};this[_0x9804('0x1c')]={};this[_0x9804('0x1d')]={};this[_0x9804('0x1e')]={};this[_0x9804('0x1f')]={};this[_0x9804('0x20')]={};this['salesforceAccounts']={};this[_0x9804('0x21')]={};this[_0x9804('0x22')]={};this[_0x9804('0x23')]={};this[_0x9804('0x24')]={};this[_0x9804('0x25')]={};this[_0x9804('0x26')]={};this[_0x9804('0x27')]={};this[_0x9804('0x28')]={};this[_0x9804('0x29')]={};};function freeIsNotKey(_0xf7c0e0,_0x45016d,_0x337c6f){var _0x60406b=_['mapKeys'](_0xf7c0e0,function(_0x5cb487,_0x1f49d3){return _0x5cb487[_0x337c6f];});for(var _0x134721 in _0x45016d){if(_0x45016d['hasOwnProperty'](_0x134721)){if(!_0x60406b[_0x134721]){delete _0x45016d[_0x134721];}}}}function freeIsNotKeySip(_0x2c548b,_0x4f6c4b){var _0x206936=_[_0x9804('0x2a')](_0x2c548b,function(_0x48bfd2,_0x35e674){return util[_0x9804('0x2b')](_0x9804('0x2c'),_0x48bfd2[_0x9804('0x2d')]);});for(var _0x14ed6a in _0x4f6c4b){if(_0x4f6c4b['hasOwnProperty'](_0x14ed6a)){if(!_0x206936[_0x14ed6a]){delete _0x4f6c4b[_0x14ed6a];}}}}function freeIsNotKeyAgent(_0x384a44,_0x3b818a){var _0x47ba16=_[_0x9804('0x2a')](_0x384a44,function(_0xf5bae7,_0x461e30){var _0x4a056a=_['isNil'](_0xf5bae7[_0x9804('0x2e')])?util[_0x9804('0x2b')](_0x9804('0x2c'),_0xf5bae7[_0x9804('0x2d')]):_0xf5bae7[_0x9804('0x2e')];return _0x4a056a;});for(var _0x19f2de in _0x3b818a){if(_0x3b818a[_0x9804('0x2f')](_0x19f2de)){if(!_0x47ba16[_0x19f2de]){delete _0x3b818a[_0x19f2de];}}}}function clearVoiceCallReports(_0xb7cc87){_0xb7cc87[_0x9804('0x30')]=0x0;_0xb7cc87['answered']=0x0;_0xb7cc87[_0x9804('0x31')]=0x0;_0xb7cc87[_0x9804('0x32')]=0x0;_0xb7cc87[_0x9804('0x33')]=0x0;}function clearCampaigns(_0x450522){if(!_[_0x9804('0x34')](_0x450522)){for(var _0x161d3a in _0x450522){if(_0x450522[_0x9804('0x2f')](_0x161d3a)){_0x450522[_0x161d3a][_0x9804('0x35')]=0x0;_0x450522[_0x161d3a]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x424a16){if(!_[_0x9804('0x34')](_0x424a16)){for(var _0x53e306 in _0x424a16){if(_0x424a16[_0x9804('0x2f')](_0x53e306)){_0x424a16[_0x53e306]['total']=0x0;_0x424a16[_0x53e306][_0x9804('0x36')]=0x0;_0x424a16[_0x53e306][_0x9804('0x37')]=0x0;_0x424a16[_0x53e306][_0x9804('0x38')]=0x0;_0x424a16[_0x53e306]['sumHoldTime']=0x0;_0x424a16[_0x53e306]['sumDuration']=0x0;_0x424a16[_0x53e306]['sumBillable']=0x0;_0x424a16[_0x53e306][_0x9804('0x39')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3a')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3b')]=0x0;_0x424a16[_0x53e306]['outboundCongestionCallsDay']=0x0;_0x424a16[_0x53e306][_0x9804('0x3c')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3d')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3e')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3f')]=0x0;_0x424a16[_0x53e306][_0x9804('0x40')]=0x0;_0x424a16[_0x53e306]['outboundOriginateFailureCallsDay']=0x0;_0x424a16[_0x53e306][_0x9804('0x41')]=0x0;_0x424a16[_0x53e306]['outboundReCallsDay']=0x0;_0x424a16[_0x53e306][_0x9804('0x39')]=0x0;_0x424a16[_0x53e306][_0x9804('0x42')]=0x0;_0x424a16[_0x53e306]['queueStatusComplete']=!![];}}}}Realtime[_0x9804('0x43')]['mergeFromDatabase']=function(_0x591a31,_0x65d26a){for(var _0x4eafed in _0x65d26a){if(_0x591a31[_0x9804('0x2f')](_0x4eafed)){_0x591a31[_0x4eafed]=_0x65d26a[_0x4eafed];}}};Realtime[_0x9804('0x43')]['initAgents']=function(){var _0x297f1c=this;return function(_0x4ce29){if(_0x4ce29){freeIsNotKeyAgent(_0x4ce29,_0x297f1c[_0x9804('0x13')]);for(var _0x293c66=0x0,_0x459093={},_0x227a66={};_0x293c66<_0x4ce29['length'];_0x293c66+=0x1){_0x459093=_0x4ce29[_0x293c66];var _0x3f567a=_[_0x9804('0x44')](_0x459093[_0x9804('0x2e')])?util[_0x9804('0x2b')](_0x9804('0x2c'),_0x459093[_0x9804('0x2d')]):_0x459093[_0x9804('0x2e')];if(_[_0x9804('0x45')](_0x297f1c[_0x9804('0x13')][_0x3f567a])){_0x297f1c[_0x9804('0x13')][_0x3f567a]=new Agent(_0x459093);}else{_0x297f1c[_0x9804('0x46')](_0x297f1c['agents'][_0x3f567a],_0x459093);}}}return _0x297f1c['agents'];};};Realtime[_0x9804('0x43')][_0x9804('0x47')]=function(){var _0x214f02=this;return function(_0x5e3f5){if(_0x5e3f5){freeIsNotKeySip(_0x5e3f5,_0x214f02[_0x9804('0x14')]);for(var _0x30067f=0x0,_0x3c6381={},_0x211b4a={};_0x30067f<_0x5e3f5[_0x9804('0x48')];_0x30067f+=0x1){_0x3c6381=_0x5e3f5[_0x30067f];if(_[_0x9804('0x45')](_0x214f02[_0x9804('0x14')][util[_0x9804('0x2b')]('SIP/%s',_0x3c6381['name'])])){_0x214f02[_0x9804('0x14')][util['format'](_0x9804('0x2c'),_0x3c6381['name'])]=new Telephone(_0x3c6381);}else{_0x214f02[_0x9804('0x46')](_0x214f02[_0x9804('0x14')][util[_0x9804('0x2b')](_0x9804('0x2c'),_0x3c6381[_0x9804('0x2d')])],_0x3c6381);}}}return _0x214f02[_0x9804('0x14')];};};Realtime[_0x9804('0x43')]['initTrunks']=function(){var _0x4569d3=this;return function(_0x2dacd9){if(_0x2dacd9){freeIsNotKeySip(_0x2dacd9,_0x4569d3[_0x9804('0x15')]);for(var _0x36592a=0x0,_0xc44632={},_0x52b277={};_0x36592a<_0x2dacd9[_0x9804('0x48')];_0x36592a+=0x1){_0xc44632=_0x2dacd9[_0x36592a];if(_[_0x9804('0x45')](_0x4569d3['trunks'][util[_0x9804('0x2b')](_0x9804('0x2c'),_0xc44632[_0x9804('0x2d')])])){_0x4569d3[_0x9804('0x15')][util[_0x9804('0x2b')]('SIP/%s',_0xc44632[_0x9804('0x2d')])]=new Trunk(_0xc44632);}else{_0x4569d3[_0x9804('0x46')](_0x4569d3[_0x9804('0x15')][util[_0x9804('0x2b')](_0x9804('0x2c'),_0xc44632['name'])],_0xc44632);}}}return _0x4569d3[_0x9804('0x15')];};};Realtime[_0x9804('0x43')]['initVoiceQueues']=function(){var _0x35d452=this;return function(_0x21d323){if(_0x21d323){freeIsNotKey(_0x21d323,_0x35d452[_0x9804('0x16')],'name');for(var _0x2c6b48=0x0,_0x5cf6a2={},_0x4e4d70={};_0x2c6b48<_0x21d323['length'];_0x2c6b48+=0x1){_0x5cf6a2=_0x21d323[_0x2c6b48];if(_[_0x9804('0x45')](_0x35d452[_0x9804('0x16')][_0x5cf6a2['name']])){_0x35d452['voiceQueues'][_0x5cf6a2[_0x9804('0x2d')]]=new VoiceQueue(_0x5cf6a2);}else{_0x35d452[_0x9804('0x46')](_0x35d452[_0x9804('0x16')][_0x5cf6a2['name']],_0x5cf6a2);}}}return _0x35d452[_0x9804('0x16')];};};Realtime['prototype'][_0x9804('0x49')]=function(){var _0x5c6cb8=this;return function(_0xa39cbb){if(_0xa39cbb){freeIsNotKey(_0xa39cbb,_0x5c6cb8['triggers'],'id');for(var _0x8d0831=0x0,_0x2b67b0={},_0x208e4e={};_0x8d0831<_0xa39cbb[_0x9804('0x48')];_0x8d0831+=0x1){_0x2b67b0=_0xa39cbb[_0x8d0831];if(_[_0x9804('0x45')](_0x5c6cb8[_0x9804('0x17')][_0x2b67b0['id']])){_0x5c6cb8[_0x9804('0x17')][_0x2b67b0['id']]=new Trigger(_0x2b67b0);}else{_0x5c6cb8[_0x9804('0x46')](_0x5c6cb8[_0x9804('0x17')][_0x2b67b0['id']],_0x2b67b0);}}}return _0x5c6cb8[_0x9804('0x17')];};};Realtime[_0x9804('0x43')][_0x9804('0x4a')]=function(){var _0x428c8c=this;return function(_0x6fe592){if(_0x6fe592){freeIsNotKey(_0x6fe592,_0x428c8c[_0x9804('0x19')],'id');for(var _0x4ce3e9=0x0,_0xd1ed25={},_0x4e2be1={};_0x4ce3e9<_0x6fe592[_0x9804('0x48')];_0x4ce3e9+=0x1){_0xd1ed25=_0x6fe592[_0x4ce3e9];if(_[_0x9804('0x45')](_0x428c8c[_0x9804('0x19')][_0xd1ed25['id']])){_0x428c8c[_0x9804('0x19')][_0xd1ed25['id']]=new Template(_0xd1ed25);}else{_0x428c8c[_0x9804('0x46')](_0x428c8c[_0x9804('0x19')][_0xd1ed25['id']],_0xd1ed25);}}}return _0x428c8c[_0x9804('0x19')];};};Realtime[_0x9804('0x43')][_0x9804('0x4b')]=function(){var _0x160adb=this;return function(_0x205502){if(_0x205502){freeIsNotKey(_0x205502,_0x160adb[_0x9804('0x20')],'id');for(var _0x22da90=0x0,_0x21d013={},_0x563c59={};_0x22da90<_0x205502[_0x9804('0x48')];_0x22da90+=0x1){_0x21d013=_0x205502[_0x22da90];if(_['isUndefined'](_0x160adb['zendeskAccounts'][_0x21d013['id']])){_0x160adb[_0x9804('0x20')][_0x21d013['id']]=new ZendeskAccount(_0x21d013);}else{_0x160adb[_0x9804('0x46')](_0x160adb['zendeskAccounts'][_0x21d013['id']],_0x21d013);}}}return _0x160adb[_0x9804('0x20')];};};Realtime[_0x9804('0x43')]['initSalesforceAccounts']=function(){var _0x35be23=this;return function(_0x31241b){if(_0x31241b){freeIsNotKey(_0x31241b,_0x35be23[_0x9804('0x4c')],'id');for(var _0x1bfdc1=0x0,_0xfe91c6={},_0x3209bc={};_0x1bfdc1<_0x31241b[_0x9804('0x48')];_0x1bfdc1+=0x1){_0xfe91c6=_0x31241b[_0x1bfdc1];if(_[_0x9804('0x45')](_0x35be23[_0x9804('0x4c')][_0xfe91c6['id']])){_0x35be23['salesforceAccounts'][_0xfe91c6['id']]=new SalesforceAccount(_0xfe91c6);}else{_0x35be23[_0x9804('0x46')](_0x35be23['salesforceAccounts'][_0xfe91c6['id']],_0xfe91c6);}}}return _0x35be23[_0x9804('0x4c')];};};Realtime[_0x9804('0x43')][_0x9804('0x4d')]=function(){var _0x26d469=this;return function(_0x56abd8){if(_0x56abd8){freeIsNotKey(_0x56abd8,_0x26d469[_0x9804('0x22')],'id');for(var _0x64cf73=0x0,_0x2cadd6={},_0x5e3c34={};_0x64cf73<_0x56abd8['length'];_0x64cf73+=0x1){_0x2cadd6=_0x56abd8[_0x64cf73];if(_[_0x9804('0x45')](_0x26d469[_0x9804('0x22')][_0x2cadd6['id']])){_0x26d469['freshdeskAccounts'][_0x2cadd6['id']]=new FreshdeskAccount(_0x2cadd6);}else{_0x26d469[_0x9804('0x46')](_0x26d469['freshdeskAccounts'][_0x2cadd6['id']],_0x2cadd6);}}}return _0x26d469[_0x9804('0x22')];};};Realtime[_0x9804('0x43')]['initZohoAccounts']=function(){var _0x4eb467=this;return function(_0x5ddea7){if(_0x5ddea7){freeIsNotKey(_0x5ddea7,_0x4eb467[_0x9804('0x23')],'id');for(var _0x1857fe=0x0,_0x13206a={},_0x47429c={};_0x1857fe<_0x5ddea7[_0x9804('0x48')];_0x1857fe+=0x1){_0x13206a=_0x5ddea7[_0x1857fe];if(_[_0x9804('0x45')](_0x4eb467[_0x9804('0x23')][_0x13206a['id']])){_0x4eb467[_0x9804('0x23')][_0x13206a['id']]=new ZohoAccount(_0x13206a);}else{_0x4eb467[_0x9804('0x46')](_0x4eb467[_0x9804('0x23')][_0x13206a['id']],_0x13206a);}}}return _0x4eb467['zohoAccounts'];};};Realtime['prototype'][_0x9804('0x4e')]=function(){var _0x3ea227=this;return function(_0x29037e){if(_0x29037e){freeIsNotKey(_0x29037e,_0x3ea227['deskAccounts'],'id');for(var _0x217961=0x0,_0x101016={},_0x179f61={};_0x217961<_0x29037e['length'];_0x217961+=0x1){_0x101016=_0x29037e[_0x217961];if(_[_0x9804('0x45')](_0x3ea227[_0x9804('0x24')][_0x101016['id']])){_0x3ea227[_0x9804('0x24')][_0x101016['id']]=new DeskAccount(_0x101016);}else{_0x3ea227[_0x9804('0x46')](_0x3ea227[_0x9804('0x24')][_0x101016['id']],_0x101016);}}}return _0x3ea227[_0x9804('0x24')];};};Realtime[_0x9804('0x43')][_0x9804('0x4f')]=function(){var _0x2cdb93=this;return function(_0x44a1e4){if(_0x44a1e4){freeIsNotKey(_0x44a1e4,_0x2cdb93[_0x9804('0x21')],'id');for(var _0x49d326=0x0,_0x4196c7={},_0x81c181={};_0x49d326<_0x44a1e4[_0x9804('0x48')];_0x49d326+=0x1){_0x4196c7=_0x44a1e4[_0x49d326];if(_[_0x9804('0x45')](_0x2cdb93[_0x9804('0x21')][_0x4196c7['id']])){_0x2cdb93[_0x9804('0x21')][_0x4196c7['id']]=new SugarcrmAccount(_0x4196c7);}else{_0x2cdb93[_0x9804('0x46')](_0x2cdb93[_0x9804('0x21')][_0x4196c7['id']],_0x4196c7);}}}return _0x2cdb93[_0x9804('0x21')];};};Realtime[_0x9804('0x43')]['initVtigerAccounts']=function(){var _0x463791=this;return function(_0x2e49df){if(_0x2e49df){freeIsNotKey(_0x2e49df,_0x463791[_0x9804('0x25')],'id');for(var _0x2ad270=0x0,_0x37117c={},_0x2ea361={};_0x2ad270<_0x2e49df['length'];_0x2ad270+=0x1){_0x37117c=_0x2e49df[_0x2ad270];if(_[_0x9804('0x45')](_0x463791[_0x9804('0x25')][_0x37117c['id']])){_0x463791['vtigerAccounts'][_0x37117c['id']]=new VtigerAccount(_0x37117c);}else{_0x463791['mergeFromDatabase'](_0x463791['vtigerAccounts'][_0x37117c['id']],_0x37117c);}}}return _0x463791[_0x9804('0x25')];};};Realtime[_0x9804('0x43')]['initServicenowAccounts']=function(){var _0x2891ff=this;return function(_0x5773a1){if(_0x5773a1){freeIsNotKey(_0x5773a1,_0x2891ff[_0x9804('0x26')],'id');for(var _0x48583d=0x0,_0x18d884={},_0xadd0de={};_0x48583d<_0x5773a1[_0x9804('0x48')];_0x48583d+=0x1){_0x18d884=_0x5773a1[_0x48583d];if(_[_0x9804('0x45')](_0x2891ff[_0x9804('0x26')][_0x18d884['id']])){_0x2891ff[_0x9804('0x26')][_0x18d884['id']]=new ServicenowAccount(_0x18d884);}else{_0x2891ff['mergeFromDatabase'](_0x2891ff[_0x9804('0x26')][_0x18d884['id']],_0x18d884);}}}return _0x2891ff[_0x9804('0x26')];};};Realtime[_0x9804('0x43')]['initDynamics365Accounts']=function(){var _0x22f9b6=this;return function(_0x56c675){if(_0x56c675){freeIsNotKey(_0x56c675,_0x22f9b6['dynamics365Accounts'],'id');for(var _0x26c704=0x0,_0x3e6e29={},_0x352dce={};_0x26c704<_0x56c675[_0x9804('0x48')];_0x26c704+=0x1){_0x3e6e29=_0x56c675[_0x26c704];if(_[_0x9804('0x45')](_0x22f9b6[_0x9804('0x27')][_0x3e6e29['id']])){_0x22f9b6[_0x9804('0x27')][_0x3e6e29['id']]=new Dynamics365Account(_0x3e6e29);}else{_0x22f9b6[_0x9804('0x46')](_0x22f9b6[_0x9804('0x27')][_0x3e6e29['id']],_0x3e6e29);}}}return _0x22f9b6[_0x9804('0x27')];};};Realtime[_0x9804('0x43')][_0x9804('0x50')]=function(){var _0x31b160=this;return function(_0x55511f){if(_0x55511f){freeIsNotKey(_0x55511f,_0x31b160[_0x9804('0x28')],'id');for(var _0x575a2f=0x0,_0x4fa2f5={},_0x393da6={};_0x575a2f<_0x55511f['length'];_0x575a2f+=0x1){_0x4fa2f5=_0x55511f[_0x575a2f];if(_['isUndefined'](_0x31b160[_0x9804('0x28')][_0x4fa2f5['id']])){_0x31b160[_0x9804('0x28')][_0x4fa2f5['id']]=new FreshsalesAccount(_0x4fa2f5);}else{_0x31b160[_0x9804('0x46')](_0x31b160[_0x9804('0x28')][_0x4fa2f5['id']],_0x4fa2f5);}}}return _0x31b160['freshsalesAccounts'];};};Realtime[_0x9804('0x43')][_0x9804('0x51')]=function(){var _0x478d62=this;return function(_0x2831a7){for(var _0x48d888=0x0;_0x48d888<_0x2831a7[_0x9804('0x48')];_0x48d888+=0x1){_[_0x9804('0x52')](_0x478d62[_0x9804('0x16')][_0x2831a7[_0x48d888][_0x9804('0x2d')]],_0x2831a7[_0x48d888]);}return _0x478d62['voiceQueues'];};};Realtime[_0x9804('0x43')]['initVoiceQueueReports']=function(){var _0x5930b0=this;return function(_0x51321b){clearVoiceQueues(_0x5930b0['voiceQueues']);if(_0x51321b){_0x51321b=_['groupBy'](_0x51321b,'uniqueid');for(var _0x4e30e9 in _0x51321b){if(_0x51321b[_0x9804('0x2f')](_0x4e30e9)){var _0x57e941={};for(var _0x233888=0x0;_0x233888<_0x51321b[_0x4e30e9]['length'];_0x233888+=0x1){var _0x7212ad=_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x53')];if(_0x5930b0[_0x9804('0x16')][_0x7212ad]){if(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x54')]){_0x5930b0['voiceQueues'][_0x7212ad][_0x9804('0x37')]+=0x1;}if(_0x51321b[_0x4e30e9][_0x233888]['queuecallerabandon']){_0x5930b0['voiceQueues'][_0x7212ad][_0x9804('0x38')]+=0x1;}_0x5930b0['voiceQueues'][_0x7212ad][_0x9804('0x31')]+=moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x55')])[_0x9804('0x56')](moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x57')]),'seconds')||0x0;if(_0x233888===_0x51321b[_0x4e30e9][_0x9804('0x48')]-0x1){_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x32')]+=moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x58')]||_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x59')]||_0x51321b[_0x4e30e9][_0x233888]['queuecallerexitAt'])[_0x9804('0x56')](moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x57')]),_0x9804('0x5a'))||0x0;_0x5930b0[_0x9804('0x16')][_0x7212ad]['total']+=0x1;if(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x5b')]){_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x36')]+=0x1;_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x33')]+=moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x58')])[_0x9804('0x56')](moment(_0x51321b[_0x4e30e9][_0x233888]['queuecallerleaveAt']),_0x9804('0x5a'))||0x0;}}else{_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x32')]+=_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x31')]||0x0;}}}}}}return _0x5930b0[_0x9804('0x16')];};};Realtime[_0x9804('0x43')][_0x9804('0x5c')]=function(){var _0x4de485=this;return function(_0x16fd8c){clearVoiceCallReports(_0x4de485[_0x9804('0x1a')]);if(_0x16fd8c){for(var _0x32a619=0x0;_0x32a619<_0x16fd8c[_0x9804('0x48')];_0x32a619+=0x1){_0x4de485['outbound'][_0x9804('0x30')]+=0x1;_0x4de485[_0x9804('0x1a')][_0x9804('0x32')]+=_0x16fd8c[_0x32a619][_0x9804('0x5d')];if(_0x16fd8c[_0x32a619][_0x9804('0x5e')]===_0x9804('0x5f')){_0x4de485[_0x9804('0x1a')][_0x9804('0x36')]+=0x1;_0x4de485['outbound'][_0x9804('0x31')]+=_0x16fd8c[_0x32a619]['duration']-_0x16fd8c[_0x32a619][_0x9804('0x60')]||0x0;_0x4de485[_0x9804('0x1a')][_0x9804('0x33')]+=_0x16fd8c[_0x32a619][_0x9804('0x60')];}}}return _0x4de485[_0x9804('0x1a')];};};Realtime['prototype'][_0x9804('0x61')]=function(){var _0x3548ee=this;return function(_0x3f9043){if(_0x3f9043){freeIsNotKey(_0x3f9043,_0x3548ee[_0x9804('0x18')],_0x9804('0x2d'));for(var _0x3e9f21=0x0,_0x334cee={};_0x3e9f21<_0x3f9043[_0x9804('0x48')];_0x3e9f21+=0x1){_0x334cee=_0x3f9043[_0x3e9f21];if(_['isUndefined'](_0x3548ee[_0x9804('0x18')][_0x334cee['name']])){_0x3548ee['campaigns'][_0x334cee[_0x9804('0x2d')]]=new Campaign(_0x334cee);}else{_0x3548ee['mergeFromDatabase'](_0x3548ee['campaigns'][_0x334cee['name']],_0x334cee);_0x3548ee[_0x9804('0x18')][_0x334cee[_0x9804('0x2d')]][_0x9804('0x62')]=_0x334cee['SquareProject']?_0x334cee[_0x9804('0x63')][_0x9804('0x2d')]:undefined;}}}return _0x3548ee[_0x9804('0x18')];};};Realtime['prototype'][_0x9804('0x64')]=function(){var _0x34371f=this;return function(_0x15ee46){if(_0x15ee46){freeIsNotKey(_0x15ee46,_0x34371f['voiceExtensions'],'id');for(var _0x315c60=0x0,_0x5a59af={};_0x315c60<_0x15ee46[_0x9804('0x48')];_0x315c60+=0x1){_0x5a59af=_0x15ee46[_0x315c60];if(_[_0x9804('0x45')](_0x34371f['voiceExtensions'][_0x5a59af['id']])){_0x34371f[_0x9804('0x65')][_0x5a59af['id']]=new VoiceExtension(_0x5a59af);}else{_0x34371f[_0x9804('0x46')](_0x34371f[_0x9804('0x65')][_0x5a59af['id']],_0x5a59af);}}}return _0x34371f['voiceExtensions'];};};Realtime['prototype'][_0x9804('0x66')]=function(){var _0x32811b=this;return function(_0xae5581){clearCampaigns(_0x32811b['campaigns']);for(var _0x401660=0x0;_0x401660<_0xae5581[_0x9804('0x48')];_0x401660+=0x1){_[_0x9804('0x52')](_0x32811b[_0x9804('0x18')][_0xae5581[_0x401660][_0x9804('0x2d')]],_0xae5581[_0x401660]);}return _0x32811b[_0x9804('0x18')];};};Realtime[_0x9804('0x43')][_0x9804('0x67')]=function(){var _0x39276f=this;return function(_0xd0924a){if(_0xd0924a){freeIsNotKey(_0xd0924a,_0x39276f['faxAccounts'],'id');for(var _0x2e446f=0x0,_0x317a1b={},_0x373988={};_0x2e446f<_0xd0924a['length'];_0x2e446f+=0x1){_0x317a1b=_0xd0924a[_0x2e446f];if(_[_0x9804('0x45')](_0x39276f['faxAccounts'][_0x317a1b['id']])){_0x39276f[_0x9804('0x29')][_0x317a1b['id']]=new FaxAccount(_0x317a1b);}else{_0x39276f[_0x9804('0x46')](_0x39276f[_0x9804('0x29')][_0x317a1b['id']],_0x317a1b);}}}return _0x39276f[_0x9804('0x29')];};};module[_0x9804('0x68')]=Realtime;
\ No newline at end of file
+var _0xe904=['initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','freshsalesAccounts','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallerabandonAt','queuecallerexitAt','seconds','queuecallercomplete','answered','initVoiceCallReports','disposition','ANSWERED','duration','billableseconds','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','exports','util','lodash','moment','../model/trigger','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','sugarcrmAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','sumHoldTime','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','isUndefined','initTelephones','initTrunks','initTriggers','zendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe904,0x8c));var _0x4e90=function(_0x2ef3ce,_0x546fa4){_0x2ef3ce=_0x2ef3ce-0x0;var _0xe87a57=_0xe904[_0x2ef3ce];return _0xe87a57;};'use strict';var BPromise=require('bluebird');var util=require(_0x4e90('0x0'));var _=require(_0x4e90('0x1'));var moment=require(_0x4e90('0x2'));var Agent=require('../model/agent');var Telephone=require('../model/telephone');var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x4e90('0x3'));var Template=require('../model/template');var Campaign=require(_0x4e90('0x4'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x4e90('0x5'));var SalesforceAccount=require(_0x4e90('0x6'));var FreshdeskAccount=require(_0x4e90('0x7'));var SugarcrmAccount=require(_0x4e90('0x8'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require(_0x4e90('0x9'));var VtigerAccount=require(_0x4e90('0xa'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x4e90('0xb'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x4e90('0xc'));var Realtime=function(){this[_0x4e90('0xd')]={};this[_0x4e90('0xe')]={};this[_0x4e90('0xf')]={};this[_0x4e90('0x10')]={};this[_0x4e90('0x11')]={};this['campaigns']={};this[_0x4e90('0x12')]={};this[_0x4e90('0x13')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x4e90('0x14')]={};this[_0x4e90('0x15')]={};this[_0x4e90('0x16')]={};this[_0x4e90('0x17')]={};this[_0x4e90('0x18')]={};this['settings']={};this['zendeskAccounts']={};this['salesforceAccounts']={};this[_0x4e90('0x19')]={};this['freshdeskAccounts']={};this['zohoAccounts']={};this[_0x4e90('0x1a')]={};this[_0x4e90('0x1b')]={};this[_0x4e90('0x1c')]={};this[_0x4e90('0x1d')]={};this['freshsalesAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x34c6ce,_0x18b13a,_0x405636){var _0x1cf1a6=_[_0x4e90('0x1e')](_0x34c6ce,function(_0x65799,_0x298e56){return _0x65799[_0x405636];});for(var _0x11e12a in _0x18b13a){if(_0x18b13a[_0x4e90('0x1f')](_0x11e12a)){if(!_0x1cf1a6[_0x11e12a]){delete _0x18b13a[_0x11e12a];}}}}function freeIsNotKeySip(_0x1d3fa9,_0x95abe4){var _0x4b61cc=_[_0x4e90('0x1e')](_0x1d3fa9,function(_0x345b76,_0x1c88f3){return util[_0x4e90('0x20')](_0x4e90('0x21'),_0x345b76[_0x4e90('0x22')]);});for(var _0x523e21 in _0x95abe4){if(_0x95abe4[_0x4e90('0x1f')](_0x523e21)){if(!_0x4b61cc[_0x523e21]){delete _0x95abe4[_0x523e21];}}}}function freeIsNotKeyAgent(_0x139e3f,_0x2ae58c){var _0x2cf60d=_[_0x4e90('0x1e')](_0x139e3f,function(_0x287a03,_0x1072e9){var _0x371e07=_[_0x4e90('0x23')](_0x287a03[_0x4e90('0x24')])?util[_0x4e90('0x20')]('SIP/%s',_0x287a03[_0x4e90('0x22')]):_0x287a03['interface'];return _0x371e07;});for(var _0x415763 in _0x2ae58c){if(_0x2ae58c[_0x4e90('0x1f')](_0x415763)){if(!_0x2cf60d[_0x415763]){delete _0x2ae58c[_0x415763];}}}}function clearVoiceCallReports(_0x233a3b){_0x233a3b[_0x4e90('0x25')]=0x0;_0x233a3b['answered']=0x0;_0x233a3b[_0x4e90('0x26')]=0x0;_0x233a3b['sumDuration']=0x0;_0x233a3b[_0x4e90('0x27')]=0x0;}function clearCampaigns(_0x3d1121){if(!_[_0x4e90('0x28')](_0x3d1121)){for(var _0x2ed633 in _0x3d1121){if(_0x3d1121['hasOwnProperty'](_0x2ed633)){_0x3d1121[_0x2ed633][_0x4e90('0x29')]=0x0;_0x3d1121[_0x2ed633][_0x4e90('0x2a')]=0x0;}}}}function clearVoiceQueues(_0x134a69){if(!_[_0x4e90('0x28')](_0x134a69)){for(var _0x260f45 in _0x134a69){if(_0x134a69[_0x4e90('0x1f')](_0x260f45)){_0x134a69[_0x260f45]['total']=0x0;_0x134a69[_0x260f45]['answered']=0x0;_0x134a69[_0x260f45][_0x4e90('0x2b')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x2c')]=0x0;_0x134a69[_0x260f45]['sumHoldTime']=0x0;_0x134a69[_0x260f45][_0x4e90('0x2d')]=0x0;_0x134a69[_0x260f45]['sumBillable']=0x0;_0x134a69[_0x260f45][_0x4e90('0x2e')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x2f')]=0x0;_0x134a69[_0x260f45]['outboundBusyCallsDay']=0x0;_0x134a69[_0x260f45][_0x4e90('0x30')]=0x0;_0x134a69[_0x260f45]['outboundNoSuchCallsDay']=0x0;_0x134a69[_0x260f45]['outboundUnknownCallsDay']=0x0;_0x134a69[_0x260f45][_0x4e90('0x31')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x32')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x33')]=0x0;_0x134a69[_0x260f45]['outboundOriginateFailureCallsDay']=0x0;_0x134a69[_0x260f45][_0x4e90('0x34')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x35')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x2e')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x36')]=0x0;_0x134a69[_0x260f45][_0x4e90('0x37')]=!![];}}}}Realtime[_0x4e90('0x38')][_0x4e90('0x39')]=function(_0x658e3d,_0x3cdaa4){for(var _0x477efd in _0x3cdaa4){if(_0x658e3d[_0x4e90('0x1f')](_0x477efd)){_0x658e3d[_0x477efd]=_0x3cdaa4[_0x477efd];}}};Realtime[_0x4e90('0x38')][_0x4e90('0x3a')]=function(){var _0x34f5f2=this;return function(_0x598f60){if(_0x598f60){freeIsNotKeyAgent(_0x598f60,_0x34f5f2[_0x4e90('0xd')]);for(var _0x17438d=0x0,_0x5d8ee4={},_0x4e8af6={};_0x17438d<_0x598f60[_0x4e90('0x3b')];_0x17438d+=0x1){_0x5d8ee4=_0x598f60[_0x17438d];var _0x279a5b=_[_0x4e90('0x23')](_0x5d8ee4[_0x4e90('0x24')])?util[_0x4e90('0x20')](_0x4e90('0x21'),_0x5d8ee4['name']):_0x5d8ee4[_0x4e90('0x24')];if(_[_0x4e90('0x3c')](_0x34f5f2[_0x4e90('0xd')][_0x279a5b])){_0x34f5f2[_0x4e90('0xd')][_0x279a5b]=new Agent(_0x5d8ee4);}else{_0x34f5f2[_0x4e90('0x39')](_0x34f5f2['agents'][_0x279a5b],_0x5d8ee4);}}}return _0x34f5f2[_0x4e90('0xd')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x3d')]=function(){var _0x5f4115=this;return function(_0x37e1f7){if(_0x37e1f7){freeIsNotKeySip(_0x37e1f7,_0x5f4115['telephones']);for(var _0x3f059a=0x0,_0x58301e={},_0x2d7df2={};_0x3f059a<_0x37e1f7['length'];_0x3f059a+=0x1){_0x58301e=_0x37e1f7[_0x3f059a];if(_[_0x4e90('0x3c')](_0x5f4115[_0x4e90('0xe')][util[_0x4e90('0x20')](_0x4e90('0x21'),_0x58301e[_0x4e90('0x22')])])){_0x5f4115[_0x4e90('0xe')][util[_0x4e90('0x20')](_0x4e90('0x21'),_0x58301e[_0x4e90('0x22')])]=new Telephone(_0x58301e);}else{_0x5f4115[_0x4e90('0x39')](_0x5f4115[_0x4e90('0xe')][util[_0x4e90('0x20')](_0x4e90('0x21'),_0x58301e[_0x4e90('0x22')])],_0x58301e);}}}return _0x5f4115[_0x4e90('0xe')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x3e')]=function(){var _0x428dc7=this;return function(_0x232dbe){if(_0x232dbe){freeIsNotKeySip(_0x232dbe,_0x428dc7[_0x4e90('0xf')]);for(var _0x41364d=0x0,_0x4c0946={},_0x470dde={};_0x41364d<_0x232dbe[_0x4e90('0x3b')];_0x41364d+=0x1){_0x4c0946=_0x232dbe[_0x41364d];if(_[_0x4e90('0x3c')](_0x428dc7['trunks'][util[_0x4e90('0x20')]('SIP/%s',_0x4c0946[_0x4e90('0x22')])])){_0x428dc7[_0x4e90('0xf')][util[_0x4e90('0x20')]('SIP/%s',_0x4c0946['name'])]=new Trunk(_0x4c0946);}else{_0x428dc7['mergeFromDatabase'](_0x428dc7[_0x4e90('0xf')][util[_0x4e90('0x20')](_0x4e90('0x21'),_0x4c0946[_0x4e90('0x22')])],_0x4c0946);}}}return _0x428dc7[_0x4e90('0xf')];};};Realtime[_0x4e90('0x38')]['initVoiceQueues']=function(){var _0x2426c2=this;return function(_0x50c477){if(_0x50c477){freeIsNotKey(_0x50c477,_0x2426c2[_0x4e90('0x10')],'name');for(var _0x53b872=0x0,_0x46477d={},_0x5f174a={};_0x53b872<_0x50c477[_0x4e90('0x3b')];_0x53b872+=0x1){_0x46477d=_0x50c477[_0x53b872];if(_[_0x4e90('0x3c')](_0x2426c2[_0x4e90('0x10')][_0x46477d['name']])){_0x2426c2[_0x4e90('0x10')][_0x46477d['name']]=new VoiceQueue(_0x46477d);}else{_0x2426c2[_0x4e90('0x39')](_0x2426c2[_0x4e90('0x10')][_0x46477d[_0x4e90('0x22')]],_0x46477d);}}}return _0x2426c2[_0x4e90('0x10')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x3f')]=function(){var _0x4348f0=this;return function(_0x18fa17){if(_0x18fa17){freeIsNotKey(_0x18fa17,_0x4348f0['triggers'],'id');for(var _0x43a741=0x0,_0xbab18b={},_0x2b1602={};_0x43a741<_0x18fa17['length'];_0x43a741+=0x1){_0xbab18b=_0x18fa17[_0x43a741];if(_['isUndefined'](_0x4348f0[_0x4e90('0x11')][_0xbab18b['id']])){_0x4348f0['triggers'][_0xbab18b['id']]=new Trigger(_0xbab18b);}else{_0x4348f0[_0x4e90('0x39')](_0x4348f0[_0x4e90('0x11')][_0xbab18b['id']],_0xbab18b);}}}return _0x4348f0[_0x4e90('0x11')];};};Realtime[_0x4e90('0x38')]['initTemplates']=function(){var _0x2b9f5b=this;return function(_0x22409d){if(_0x22409d){freeIsNotKey(_0x22409d,_0x2b9f5b[_0x4e90('0x12')],'id');for(var _0x2e08e4=0x0,_0x8470b4={},_0x2305b6={};_0x2e08e4<_0x22409d['length'];_0x2e08e4+=0x1){_0x8470b4=_0x22409d[_0x2e08e4];if(_[_0x4e90('0x3c')](_0x2b9f5b['templates'][_0x8470b4['id']])){_0x2b9f5b[_0x4e90('0x12')][_0x8470b4['id']]=new Template(_0x8470b4);}else{_0x2b9f5b[_0x4e90('0x39')](_0x2b9f5b[_0x4e90('0x12')][_0x8470b4['id']],_0x8470b4);}}}return _0x2b9f5b[_0x4e90('0x12')];};};Realtime[_0x4e90('0x38')]['initZendeskAccounts']=function(){var _0x558ea8=this;return function(_0x2b9468){if(_0x2b9468){freeIsNotKey(_0x2b9468,_0x558ea8[_0x4e90('0x40')],'id');for(var _0x5963c9=0x0,_0x3834e9={},_0x1e4b8d={};_0x5963c9<_0x2b9468[_0x4e90('0x3b')];_0x5963c9+=0x1){_0x3834e9=_0x2b9468[_0x5963c9];if(_[_0x4e90('0x3c')](_0x558ea8[_0x4e90('0x40')][_0x3834e9['id']])){_0x558ea8[_0x4e90('0x40')][_0x3834e9['id']]=new ZendeskAccount(_0x3834e9);}else{_0x558ea8['mergeFromDatabase'](_0x558ea8[_0x4e90('0x40')][_0x3834e9['id']],_0x3834e9);}}}return _0x558ea8['zendeskAccounts'];};};Realtime['prototype'][_0x4e90('0x41')]=function(){var _0x3a00b9=this;return function(_0x382251){if(_0x382251){freeIsNotKey(_0x382251,_0x3a00b9[_0x4e90('0x42')],'id');for(var _0x244b57=0x0,_0x4e3721={},_0x45186c={};_0x244b57<_0x382251[_0x4e90('0x3b')];_0x244b57+=0x1){_0x4e3721=_0x382251[_0x244b57];if(_[_0x4e90('0x3c')](_0x3a00b9['salesforceAccounts'][_0x4e3721['id']])){_0x3a00b9[_0x4e90('0x42')][_0x4e3721['id']]=new SalesforceAccount(_0x4e3721);}else{_0x3a00b9[_0x4e90('0x39')](_0x3a00b9[_0x4e90('0x42')][_0x4e3721['id']],_0x4e3721);}}}return _0x3a00b9[_0x4e90('0x42')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x43')]=function(){var _0x5e1943=this;return function(_0x13d26f){if(_0x13d26f){freeIsNotKey(_0x13d26f,_0x5e1943[_0x4e90('0x44')],'id');for(var _0xd00b83=0x0,_0x9f714b={},_0xbea57b={};_0xd00b83<_0x13d26f[_0x4e90('0x3b')];_0xd00b83+=0x1){_0x9f714b=_0x13d26f[_0xd00b83];if(_['isUndefined'](_0x5e1943['freshdeskAccounts'][_0x9f714b['id']])){_0x5e1943['freshdeskAccounts'][_0x9f714b['id']]=new FreshdeskAccount(_0x9f714b);}else{_0x5e1943[_0x4e90('0x39')](_0x5e1943[_0x4e90('0x44')][_0x9f714b['id']],_0x9f714b);}}}return _0x5e1943[_0x4e90('0x44')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x45')]=function(){var _0x1fc6d7=this;return function(_0x342af7){if(_0x342af7){freeIsNotKey(_0x342af7,_0x1fc6d7['zohoAccounts'],'id');for(var _0x195b6e=0x0,_0x2c2bd5={},_0x222d9f={};_0x195b6e<_0x342af7[_0x4e90('0x3b')];_0x195b6e+=0x1){_0x2c2bd5=_0x342af7[_0x195b6e];if(_['isUndefined'](_0x1fc6d7[_0x4e90('0x46')][_0x2c2bd5['id']])){_0x1fc6d7['zohoAccounts'][_0x2c2bd5['id']]=new ZohoAccount(_0x2c2bd5);}else{_0x1fc6d7[_0x4e90('0x39')](_0x1fc6d7[_0x4e90('0x46')][_0x2c2bd5['id']],_0x2c2bd5);}}}return _0x1fc6d7[_0x4e90('0x46')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x47')]=function(){var _0x2c46e9=this;return function(_0x43d184){if(_0x43d184){freeIsNotKey(_0x43d184,_0x2c46e9['deskAccounts'],'id');for(var _0x41c1b3=0x0,_0x30be19={},_0x1eea70={};_0x41c1b3<_0x43d184['length'];_0x41c1b3+=0x1){_0x30be19=_0x43d184[_0x41c1b3];if(_[_0x4e90('0x3c')](_0x2c46e9[_0x4e90('0x1a')][_0x30be19['id']])){_0x2c46e9[_0x4e90('0x1a')][_0x30be19['id']]=new DeskAccount(_0x30be19);}else{_0x2c46e9['mergeFromDatabase'](_0x2c46e9['deskAccounts'][_0x30be19['id']],_0x30be19);}}}return _0x2c46e9[_0x4e90('0x1a')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x48')]=function(){var _0x14a0eb=this;return function(_0x54a598){if(_0x54a598){freeIsNotKey(_0x54a598,_0x14a0eb[_0x4e90('0x19')],'id');for(var _0x506ee8=0x0,_0xf7908f={},_0x2dbc8f={};_0x506ee8<_0x54a598['length'];_0x506ee8+=0x1){_0xf7908f=_0x54a598[_0x506ee8];if(_[_0x4e90('0x3c')](_0x14a0eb[_0x4e90('0x19')][_0xf7908f['id']])){_0x14a0eb[_0x4e90('0x19')][_0xf7908f['id']]=new SugarcrmAccount(_0xf7908f);}else{_0x14a0eb[_0x4e90('0x39')](_0x14a0eb['sugarcrmAccounts'][_0xf7908f['id']],_0xf7908f);}}}return _0x14a0eb[_0x4e90('0x19')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x49')]=function(){var _0x46296d=this;return function(_0x4405dd){if(_0x4405dd){freeIsNotKey(_0x4405dd,_0x46296d[_0x4e90('0x1b')],'id');for(var _0x5474bd=0x0,_0x4188a6={},_0x513063={};_0x5474bd<_0x4405dd[_0x4e90('0x3b')];_0x5474bd+=0x1){_0x4188a6=_0x4405dd[_0x5474bd];if(_[_0x4e90('0x3c')](_0x46296d[_0x4e90('0x1b')][_0x4188a6['id']])){_0x46296d[_0x4e90('0x1b')][_0x4188a6['id']]=new VtigerAccount(_0x4188a6);}else{_0x46296d[_0x4e90('0x39')](_0x46296d[_0x4e90('0x1b')][_0x4188a6['id']],_0x4188a6);}}}return _0x46296d[_0x4e90('0x1b')];};};Realtime['prototype'][_0x4e90('0x4a')]=function(){var _0x25fbbc=this;return function(_0x16a71e){if(_0x16a71e){freeIsNotKey(_0x16a71e,_0x25fbbc[_0x4e90('0x1c')],'id');for(var _0x41fa0b=0x0,_0x3655fc={},_0x4bcce7={};_0x41fa0b<_0x16a71e[_0x4e90('0x3b')];_0x41fa0b+=0x1){_0x3655fc=_0x16a71e[_0x41fa0b];if(_[_0x4e90('0x3c')](_0x25fbbc['servicenowAccounts'][_0x3655fc['id']])){_0x25fbbc[_0x4e90('0x1c')][_0x3655fc['id']]=new ServicenowAccount(_0x3655fc);}else{_0x25fbbc[_0x4e90('0x39')](_0x25fbbc[_0x4e90('0x1c')][_0x3655fc['id']],_0x3655fc);}}}return _0x25fbbc[_0x4e90('0x1c')];};};Realtime['prototype'][_0x4e90('0x4b')]=function(){var _0x3be04f=this;return function(_0x5e8081){if(_0x5e8081){freeIsNotKey(_0x5e8081,_0x3be04f[_0x4e90('0x1d')],'id');for(var _0x33267d=0x0,_0x3108b1={},_0x433929={};_0x33267d<_0x5e8081[_0x4e90('0x3b')];_0x33267d+=0x1){_0x3108b1=_0x5e8081[_0x33267d];if(_['isUndefined'](_0x3be04f[_0x4e90('0x1d')][_0x3108b1['id']])){_0x3be04f[_0x4e90('0x1d')][_0x3108b1['id']]=new Dynamics365Account(_0x3108b1);}else{_0x3be04f['mergeFromDatabase'](_0x3be04f['dynamics365Accounts'][_0x3108b1['id']],_0x3108b1);}}}return _0x3be04f[_0x4e90('0x1d')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x4c')]=function(){var _0x38e349=this;return function(_0x5d0766){if(_0x5d0766){freeIsNotKey(_0x5d0766,_0x38e349[_0x4e90('0x4d')],'id');for(var _0x116c47=0x0,_0x4aa518={},_0x56f451={};_0x116c47<_0x5d0766[_0x4e90('0x3b')];_0x116c47+=0x1){_0x4aa518=_0x5d0766[_0x116c47];if(_[_0x4e90('0x3c')](_0x38e349[_0x4e90('0x4d')][_0x4aa518['id']])){_0x38e349['freshsalesAccounts'][_0x4aa518['id']]=new FreshsalesAccount(_0x4aa518);}else{_0x38e349['mergeFromDatabase'](_0x38e349[_0x4e90('0x4d')][_0x4aa518['id']],_0x4aa518);}}}return _0x38e349[_0x4e90('0x4d')];};};Realtime[_0x4e90('0x38')]['initVoiceQueueHopperHistory']=function(){var _0x5e2c06=this;return function(_0x3acdf8){for(var _0x53ff16=0x0;_0x53ff16<_0x3acdf8[_0x4e90('0x3b')];_0x53ff16+=0x1){_[_0x4e90('0x4e')](_0x5e2c06[_0x4e90('0x10')][_0x3acdf8[_0x53ff16][_0x4e90('0x22')]],_0x3acdf8[_0x53ff16]);}return _0x5e2c06[_0x4e90('0x10')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x4f')]=function(){var _0x3ae5a2=this;return function(_0x127912){clearVoiceQueues(_0x3ae5a2[_0x4e90('0x10')]);if(_0x127912){_0x127912=_[_0x4e90('0x50')](_0x127912,_0x4e90('0x51'));for(var _0x5c4513 in _0x127912){if(_0x127912[_0x4e90('0x1f')](_0x5c4513)){var _0xc968f1={};for(var _0xf4d9f3=0x0;_0xf4d9f3<_0x127912[_0x5c4513][_0x4e90('0x3b')];_0xf4d9f3+=0x1){var _0x1ba8eb=_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x52')];if(_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb]){if(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x53')]){_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb][_0x4e90('0x2b')]+=0x1;}if(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x54')]){_0x3ae5a2['voiceQueues'][_0x1ba8eb][_0x4e90('0x2c')]+=0x1;}_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb]['sumHoldTime']+=moment(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x55')])[_0x4e90('0x56')](moment(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x57')]),'seconds')||0x0;if(_0xf4d9f3===_0x127912[_0x5c4513]['length']-0x1){_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb]['sumDuration']+=moment(_0x127912[_0x5c4513][_0xf4d9f3]['queuecallercompleteAt']||_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x58')]||_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x59')])[_0x4e90('0x56')](moment(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x57')]),_0x4e90('0x5a'))||0x0;_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb][_0x4e90('0x25')]+=0x1;if(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x5b')]){_0x3ae5a2['voiceQueues'][_0x1ba8eb][_0x4e90('0x5c')]+=0x1;_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb][_0x4e90('0x27')]+=moment(_0x127912[_0x5c4513][_0xf4d9f3]['queuecallercompleteAt'])['diff'](moment(_0x127912[_0x5c4513][_0xf4d9f3][_0x4e90('0x55')]),_0x4e90('0x5a'))||0x0;}}else{_0x3ae5a2[_0x4e90('0x10')][_0x1ba8eb][_0x4e90('0x2d')]+=_0x3ae5a2['voiceQueues'][_0x1ba8eb][_0x4e90('0x26')]||0x0;}}}}}}return _0x3ae5a2[_0x4e90('0x10')];};};Realtime['prototype'][_0x4e90('0x5d')]=function(){var _0x1c94ad=this;return function(_0x5a4351){clearVoiceCallReports(_0x1c94ad[_0x4e90('0x13')]);if(_0x5a4351){for(var _0x13e046=0x0;_0x13e046<_0x5a4351['length'];_0x13e046+=0x1){_0x1c94ad[_0x4e90('0x13')][_0x4e90('0x25')]+=0x1;_0x1c94ad[_0x4e90('0x13')][_0x4e90('0x2d')]+=_0x5a4351[_0x13e046]['duration'];if(_0x5a4351[_0x13e046][_0x4e90('0x5e')]===_0x4e90('0x5f')){_0x1c94ad[_0x4e90('0x13')][_0x4e90('0x5c')]+=0x1;_0x1c94ad[_0x4e90('0x13')][_0x4e90('0x26')]+=_0x5a4351[_0x13e046][_0x4e90('0x60')]-_0x5a4351[_0x13e046][_0x4e90('0x61')]||0x0;_0x1c94ad[_0x4e90('0x13')][_0x4e90('0x27')]+=_0x5a4351[_0x13e046][_0x4e90('0x61')];}}}return _0x1c94ad[_0x4e90('0x13')];};};Realtime['prototype']['initCampaigns']=function(){var _0x58e65f=this;return function(_0x44cf78){if(_0x44cf78){freeIsNotKey(_0x44cf78,_0x58e65f[_0x4e90('0x62')],_0x4e90('0x22'));for(var _0x1e0118=0x0,_0x59aba0={};_0x1e0118<_0x44cf78[_0x4e90('0x3b')];_0x1e0118+=0x1){_0x59aba0=_0x44cf78[_0x1e0118];if(_['isUndefined'](_0x58e65f[_0x4e90('0x62')][_0x59aba0[_0x4e90('0x22')]])){_0x58e65f[_0x4e90('0x62')][_0x59aba0[_0x4e90('0x22')]]=new Campaign(_0x59aba0);}else{_0x58e65f[_0x4e90('0x39')](_0x58e65f[_0x4e90('0x62')][_0x59aba0[_0x4e90('0x22')]],_0x59aba0);_0x58e65f[_0x4e90('0x62')][_0x59aba0[_0x4e90('0x22')]][_0x4e90('0x63')]=_0x59aba0[_0x4e90('0x64')]?_0x59aba0['SquareProject'][_0x4e90('0x22')]:undefined;}}}return _0x58e65f[_0x4e90('0x62')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x65')]=function(){var _0x2cfca3=this;return function(_0xe26b75){if(_0xe26b75){freeIsNotKey(_0xe26b75,_0x2cfca3[_0x4e90('0x14')],'id');for(var _0xf1cb81=0x0,_0x37f89b={};_0xf1cb81<_0xe26b75['length'];_0xf1cb81+=0x1){_0x37f89b=_0xe26b75[_0xf1cb81];if(_[_0x4e90('0x3c')](_0x2cfca3[_0x4e90('0x14')][_0x37f89b['id']])){_0x2cfca3[_0x4e90('0x14')][_0x37f89b['id']]=new VoiceExtension(_0x37f89b);}else{_0x2cfca3[_0x4e90('0x39')](_0x2cfca3[_0x4e90('0x14')][_0x37f89b['id']],_0x37f89b);}}}return _0x2cfca3[_0x4e90('0x14')];};};Realtime[_0x4e90('0x38')][_0x4e90('0x66')]=function(){var _0x4e5c69=this;return function(_0x3591b2){clearCampaigns(_0x4e5c69[_0x4e90('0x62')]);for(var _0x2d2279=0x0;_0x2d2279<_0x3591b2['length'];_0x2d2279+=0x1){_[_0x4e90('0x4e')](_0x4e5c69[_0x4e90('0x62')][_0x3591b2[_0x2d2279]['name']],_0x3591b2[_0x2d2279]);}return _0x4e5c69[_0x4e90('0x62')];};};Realtime['prototype'][_0x4e90('0x67')]=function(){var _0x4ebd0e=this;return function(_0x295fe8){if(_0x295fe8){freeIsNotKey(_0x295fe8,_0x4ebd0e['faxAccounts'],'id');for(var _0x2f0d6e=0x0,_0x2eea30={},_0x2079af={};_0x2f0d6e<_0x295fe8['length'];_0x2f0d6e+=0x1){_0x2eea30=_0x295fe8[_0x2f0d6e];if(_['isUndefined'](_0x4ebd0e[_0x4e90('0x68')][_0x2eea30['id']])){_0x4ebd0e[_0x4e90('0x68')][_0x2eea30['id']]=new FaxAccount(_0x2eea30);}else{_0x4ebd0e[_0x4e90('0x39')](_0x4ebd0e[_0x4e90('0x68')][_0x2eea30['id']],_0x2eea30);}}}return _0x4ebd0e['faxAccounts'];};};module[_0x4e90('0x69')]=Realtime;
\ No newline at end of file
index 5f6cd8c..7b8b499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d3=['create','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','Local','indexOf','mobile','phone','lastIndexOf','membername','voiceDialReport','transfererlinkedid','exports','lodash','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','disabled','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','voiceAgentReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','isNil','format','SIP/%s','name','length','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','match','destination','exten','type','dialer','lastapplication','queue','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridnum','destinationchannel','channel','calleridpreview','originatecalleridnum','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid'];(function(_0x14437f,_0xc14167){var _0x4d0175=function(_0xb74854){while(--_0xb74854){_0x14437f['push'](_0x14437f['shift']());}};_0x4d0175(++_0xc14167);}(_0x23d3,0x64));var _0x323d=function(_0x23c71f,_0xd26259){_0x23c71f=_0x23c71f-0x0;var _0x1da90e=_0x23d3[_0x23c71f];return _0x1da90e;};'use strict';var _=require(_0x323d('0x0'));var moment=require(_0x323d('0x1'));var util=require('util');var config=require(_0x323d('0x2'));var ami=require(_0x323d('0x3'));var RpcVoiceAgentReport=require(_0x323d('0x4'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0x323d('0x5'));var RpcMemberReport=require(_0x323d('0x6'));var RpcVoiceQueueReport=require(_0x323d('0x7'));var RpcVoiceRecording=require(_0x323d('0x8'));var RpcVoiceTransferReport=require(_0x323d('0x9'));var VoiceQueueReport=require(_0x323d('0xa'));var VoiceCallReport=require(_0x323d('0xb'));var VoiceAgentReport=require(_0x323d('0xc'));var VoiceDialReport=require(_0x323d('0xd'));var UserReport=require('./userReport');function Report(_0x5805bc){this[_0x323d('0xe')]=_0x5805bc;this[_0x323d('0xf')]=_0x5805bc[_0x323d('0xf')];this[_0x323d('0x10')]=_0x5805bc[_0x323d('0x10')];}Report[_0x323d('0x11')][_0x323d('0x12')]=function(_0x538c64){var _0x4e2894=new VoiceQueueReport(this[_0x323d('0xe')]);var _0x5c25a7=new VoiceAgentReport(this[_0x323d('0xe')]);var _0x57d373=new VoiceDialReport(this[_0x323d('0xe')]);var _0x49982c=new VoiceCallReport(this[_0x323d('0xe')]);var _0x5d4478=new UserReport(this[_0x323d('0xe')]);if(config['xdr']&&config[_0x323d('0x13')][_0x323d('0x14')]){ami['on']('custom:voiceQueueReport',this[_0x323d('0x15')][_0x323d('0x16')](this));ami['on'](_0x323d('0x17'),this[_0x323d('0x18')]['bind'](this));ami['on']('custom:voiceAgentReport',this[_0x323d('0x19')][_0x323d('0x16')](this));ami['on']('custom:voiceDialReport',this['voiceDialReport'][_0x323d('0x16')](this));ami['on'](_0x323d('0x1a'),this[_0x323d('0x1b')][_0x323d('0x16')](this));ami['on'](_0x323d('0x1c'),this[_0x323d('0x1d')][_0x323d('0x16')](this));}};Report[_0x323d('0x11')][_0x323d('0x1e')]=function(_0x2790e4){var _0x3dd819;_0x3dd819=_[_0x323d('0x1f')](this[_0x323d('0xf')],function(_0x5286c4){return _0x5286c4[_0x323d('0x20')]==_0x2790e4||_0x5286c4['name']==_0x2790e4;});if(_[_0x323d('0x21')](_0x3dd819)){var _0x4c582b=_[_0x323d('0x1f')](this['telephones'],function(_0x2590ee){return _0x2590ee[_0x323d('0x20')]==_0x2790e4||_0x2590ee['name']==_0x2790e4;});if(_0x4c582b){_0x3dd819=_[_0x323d('0x1f')](this['agents'],function(_0x5ce941){return _0x5ce941['interface']==util[_0x323d('0x22')](_0x323d('0x23'),_0x4c582b[_0x323d('0x24')]);});}}return _0x3dd819;};Report[_0x323d('0x11')][_0x323d('0x15')]=function(_0x488181){for(var _0x3c84ca=0x0;_0x3c84ca<_0x488181[_0x323d('0x25')];_0x3c84ca+=0x1){var _0x471db0=this[_0x323d('0x1e')](_0x488181[_0x3c84ca]['connectedlinenum']);if(_0x471db0){_0x488181[_0x3c84ca][_0x323d('0x20')]=_0x471db0[_0x323d('0x20')];_0x488181[_0x3c84ca]['assigned']=!![];_0x488181[_0x3c84ca][_0x323d('0x26')]=_0x471db0[_0x323d('0x24')];_0x488181[_0x3c84ca][_0x323d('0x27')]=_['isNil'](_0x471db0[_0x323d('0x27')])?util[_0x323d('0x22')](_0x323d('0x23'),_0x471db0[_0x323d('0x24')]):_0x471db0[_0x323d('0x27')];if(_0x488181[_0x3c84ca][_0x323d('0x28')]){_0x488181[_0x3c84ca][_0x323d('0x29')]=moment()[_0x323d('0x22')](_0x323d('0x2a'));}if(_0x488181[_0x3c84ca]['queuecallerexit']){_0x488181[_0x3c84ca]['queuecallerexitAt']=moment()[_0x323d('0x22')](_0x323d('0x2a'));}RpcMemberReport[_0x323d('0x15')](_0x488181[_0x3c84ca]);}RpcVoiceQueueReport['create'](_0x488181[_0x3c84ca]);}};function extractCalleridNumber(_0x54e382){var _0x1f3f26=_0x54e382[_0x323d('0x2b')](/<(.*?)>/);return _0x1f3f26?_0x1f3f26[0x1]:_0x54e382;}Report['prototype'][_0x323d('0x18')]=function(_0x1b0720){_0x1b0720[_0x323d('0x2c')]=_0x1b0720[_0x323d('0x2c')]||_0x1b0720[_0x323d('0x2d')];if(_0x1b0720[_0x323d('0x2e')]==_0x323d('0x2f')){_0x1b0720[_0x323d('0x30')]=_0x323d('0x31');_0x1b0720['lastdata']=_0x1b0720[_0x323d('0x31')];if(_0x1b0720['context']==_0x323d('0x32')){_0x1b0720[_0x323d('0x20')]='';_0x1b0720[_0x323d('0x2c')]=extractCalleridNumber(_0x1b0720[_0x323d('0x33')]);}else if(_0x1b0720[_0x323d('0x34')]==_0x323d('0x35')){if(_0x1b0720['destination']==_0x323d('0x36')){_0x1b0720[_0x323d('0x2c')]=extractCalleridNumber(_0x1b0720['calleridpreview']);_0x1b0720[_0x323d('0x37')]=_0x1b0720['originatecalleridnum'];_0x1b0720[_0x323d('0x38')]=[_0x1b0720[_0x323d('0x39')],_0x1b0720['channel']=_0x1b0720['destinationchannel']][0x0];_0x1b0720['callerid']=_0x1b0720[_0x323d('0x3a')];}else{_0x1b0720[_0x323d('0x2c')]=_0x1b0720[_0x323d('0x37')];_0x1b0720[_0x323d('0x37')]=_0x1b0720[_0x323d('0x3b')];if(_0x1b0720['disposition']=='ANSWERED'){_0x1b0720[_0x323d('0x20')]=_0x1b0720[_0x323d('0x3c')];}else{_0x1b0720['accountcode']='';}}}}else{_0x1b0720[_0x323d('0x33')]=util['format'](_0x323d('0x3d'),_0x1b0720[_0x323d('0x3e')],_0x1b0720[_0x323d('0x37')]);}if(RpcVoiceTransferReport[_0x323d('0x3f')][_0x1b0720['linkedid']]){var _0x5a7c11=RpcVoiceTransferReport[_0x323d('0x3f')][_0x1b0720[_0x323d('0x40')]];_0x5a7c11[_0x323d('0x41')]=_0x1b0720['uniqueid'];RpcVoiceTransferReport[_0x323d('0x1b')](_0x5a7c11);delete RpcVoiceTransferReport[_0x323d('0x3f')][_0x1b0720[_0x323d('0x40')]];}RpcVoiceCallReport[_0x323d('0x42')](_0x1b0720);if(_0x1b0720['monitor']){for(var _0x155c97=0x0;_0x155c97<_0x1b0720[_0x323d('0x43')][_0x323d('0x25')];_0x155c97+=0x1){_0x1b0720[_0x323d('0x44')]=_0x1b0720[_0x323d('0x43')][_0x155c97][_0x323d('0x45')];_0x1b0720[_0x323d('0x46')]=_0x1b0720[_0x323d('0x43')][_0x155c97][_0x323d('0x46')];if(_0x1b0720['exten']==_0x323d('0x36')){_0x1b0720[_0x323d('0x37')]=_0x1b0720['connectedlinenum'];_0x1b0720[_0x323d('0x3e')]=_0x1b0720[_0x323d('0x47')];_0x1b0720['connectedlinenum']=_0x1b0720['accountcode'];_0x1b0720[_0x323d('0x47')]=_0x1b0720['membername'];_0x1b0720[_0x323d('0x2d')]=_0x1b0720[_0x323d('0x3b')];}else if(_0x1b0720[_0x323d('0x2d')]==_0x323d('0x48')){_0x1b0720[_0x323d('0x37')]=_0x1b0720[_0x323d('0x2c')];_0x1b0720[_0x323d('0x2d')]=_0x1b0720[_0x323d('0x3b')];}RpcVoiceRecording['create'](_0x1b0720);}}};Report[_0x323d('0x11')][_0x323d('0x19')]=function(_0x35357a){if(_[_0x323d('0x49')](_0x35357a)){_0x35357a['forEach'](function(_0x4e19cc){RpcVoiceAgentReport[_0x323d('0x42')](_0x4e19cc);});}else{RpcVoiceAgentReport[_0x323d('0x42')](_0x35357a);}};Report[_0x323d('0x11')]['voiceDialReport']=function(_0x3a0a58){RpcVoiceDialReport[_0x323d('0x42')](_0x3a0a58);var _0x54e386;var _0x64a5d9;var _0x4b8506=_0x3a0a58[_0x323d('0x39')];if(_['startsWith'](_0x4b8506,_0x323d('0x4a'))){_0x64a5d9=_0x4b8506['substring'](_0x4b8506[_0x323d('0x4b')]('/')+0x1,_0x4b8506[_0x323d('0x4b')]('@'));_0x54e386=_['find'](this[_0x323d('0xf')],function(_0x403172){return _0x403172[_0x323d('0x4c')]==_0x64a5d9||_0x403172[_0x323d('0x4d')]==_0x64a5d9||_0x403172[_0x323d('0x20')]==_0x64a5d9;});}else{_0x64a5d9=_0x4b8506['substring'](_0x4b8506[_0x323d('0x4b')]('/')+0x1,_0x4b8506[_0x323d('0x4e')]('-'));_0x54e386=this[_0x323d('0x1e')](_0x64a5d9);}if(_0x54e386){_0x3a0a58[_0x323d('0x27')]=_[_0x323d('0x21')](_0x54e386['interface'])?util['format'](_0x323d('0x23'),_0x54e386[_0x323d('0x24')]):_0x54e386[_0x323d('0x27')];_0x3a0a58[_0x323d('0x4f')]=_0x54e386[_0x323d('0x24')];_0x3a0a58['accountcode']=_0x54e386['accountcode'];RpcMemberReport[_0x323d('0x50')](_0x3a0a58);}};Report[_0x323d('0x11')][_0x323d('0x1b')]=function(_0x4587a8){RpcVoiceTransferReport[_0x323d('0x3f')][_0x4587a8[_0x323d('0x51')]]=_0x4587a8;};Report[_0x323d('0x11')]['attendedTransfer']=function(_0x2b53e0){RpcVoiceTransferReport[_0x323d('0x1d')](_0x2b53e0);};module[_0x323d('0x52')]=Report;
\ No newline at end of file
+var _0x69fe=['length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','queuecallerexitAt','create','match','destination','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','calleridnum','originatecalleridnum','destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','monitor','monitors','monitorFilename','filename','createdAt','xcally-motion-preview','connectedlinename','exten','forEach','startsWith','Local','substring','mobile','indexOf','lastIndexOf','membername','transfererlinkedid','exports','util','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','prototype','sync','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','voiceAgentReport','voiceDialReport','blindTransfer','attendedtransfer','attendedTransfer','findAgent','accountcode','name','isNil','find','telephones','interface','format','SIP/%s','voiceQueueReport'];(function(_0x5bc537,_0x12bc2a){var _0x315231=function(_0x277783){while(--_0x277783){_0x5bc537['push'](_0x5bc537['shift']());}};_0x315231(++_0x12bc2a);}(_0x69fe,0x17f));var _0xe69f=function(_0x9d3ae,_0x48add1){_0x9d3ae=_0x9d3ae-0x0;var _0x6ff66b=_0x69fe[_0x9d3ae];return _0x6ff66b;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0xe69f('0x0'));var config=require('../../../config/environment');var ami=require(_0xe69f('0x1'));var RpcVoiceAgentReport=require(_0xe69f('0x2'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xe69f('0x3'));var RpcMemberReport=require(_0xe69f('0x4'));var RpcVoiceQueueReport=require(_0xe69f('0x5'));var RpcVoiceRecording=require(_0xe69f('0x6'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xe69f('0x7'));var VoiceCallReport=require(_0xe69f('0x8'));var VoiceAgentReport=require(_0xe69f('0x9'));var VoiceDialReport=require(_0xe69f('0xa'));var UserReport=require(_0xe69f('0xb'));function Report(_0x485c1e){this[_0xe69f('0xc')]=_0x485c1e;this['agents']=_0x485c1e[_0xe69f('0xd')];this['telephones']=_0x485c1e['telephones'];}Report[_0xe69f('0xe')][_0xe69f('0xf')]=function(_0x5d9c49){var _0x2139e4=new VoiceQueueReport(this[_0xe69f('0xc')]);var _0x294482=new VoiceAgentReport(this['realtime']);var _0x263cbd=new VoiceDialReport(this[_0xe69f('0xc')]);var _0x583f48=new VoiceCallReport(this[_0xe69f('0xc')]);var _0x25a702=new UserReport(this[_0xe69f('0xc')]);if(config[_0xe69f('0x10')]&&config[_0xe69f('0x10')][_0xe69f('0x11')]){ami['on'](_0xe69f('0x12'),this['voiceQueueReport'][_0xe69f('0x13')](this));ami['on'](_0xe69f('0x14'),this[_0xe69f('0x15')][_0xe69f('0x13')](this));ami['on']('custom:voiceAgentReport',this[_0xe69f('0x16')][_0xe69f('0x13')](this));ami['on']('custom:voiceDialReport',this[_0xe69f('0x17')]['bind'](this));ami['on']('blindtransfer',this[_0xe69f('0x18')][_0xe69f('0x13')](this));ami['on'](_0xe69f('0x19'),this[_0xe69f('0x1a')][_0xe69f('0x13')](this));}};Report[_0xe69f('0xe')][_0xe69f('0x1b')]=function(_0x54cd94){var _0x151e2b;_0x151e2b=_['find'](this[_0xe69f('0xd')],function(_0x41c330){return _0x41c330[_0xe69f('0x1c')]==_0x54cd94||_0x41c330[_0xe69f('0x1d')]==_0x54cd94;});if(_[_0xe69f('0x1e')](_0x151e2b)){var _0x4a37c3=_[_0xe69f('0x1f')](this[_0xe69f('0x20')],function(_0x490d94){return _0x490d94[_0xe69f('0x1c')]==_0x54cd94||_0x490d94[_0xe69f('0x1d')]==_0x54cd94;});if(_0x4a37c3){_0x151e2b=_[_0xe69f('0x1f')](this[_0xe69f('0xd')],function(_0x2224c0){return _0x2224c0[_0xe69f('0x21')]==util[_0xe69f('0x22')](_0xe69f('0x23'),_0x4a37c3[_0xe69f('0x1d')]);});}}return _0x151e2b;};Report['prototype'][_0xe69f('0x24')]=function(_0x3419b3){for(var _0x7aec7=0x0;_0x7aec7<_0x3419b3[_0xe69f('0x25')];_0x7aec7+=0x1){var _0x576754=this[_0xe69f('0x1b')](_0x3419b3[_0x7aec7][_0xe69f('0x26')]);if(_0x576754){_0x3419b3[_0x7aec7]['accountcode']=_0x576754[_0xe69f('0x1c')];_0x3419b3[_0x7aec7][_0xe69f('0x27')]=!![];_0x3419b3[_0x7aec7][_0xe69f('0x28')]=_0x576754['name'];_0x3419b3[_0x7aec7][_0xe69f('0x21')]=_['isNil'](_0x576754[_0xe69f('0x21')])?util[_0xe69f('0x22')]('SIP/%s',_0x576754['name']):_0x576754[_0xe69f('0x21')];if(_0x3419b3[_0x7aec7][_0xe69f('0x29')]){_0x3419b3[_0x7aec7][_0xe69f('0x2a')]=moment()[_0xe69f('0x22')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3419b3[_0x7aec7]['queuecallerexit']){_0x3419b3[_0x7aec7][_0xe69f('0x2b')]=moment()[_0xe69f('0x22')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0xe69f('0x24')](_0x3419b3[_0x7aec7]);}RpcVoiceQueueReport[_0xe69f('0x2c')](_0x3419b3[_0x7aec7]);}};function extractCalleridNumber(_0x3fd12c){var _0x2f97d3=_0x3fd12c[_0xe69f('0x2d')](/<(.*?)>/);return _0x2f97d3?_0x2f97d3[0x1]:_0x3fd12c;}Report[_0xe69f('0xe')][_0xe69f('0x15')]=function(_0x3ace0e){_0x3ace0e[_0xe69f('0x2e')]=_0x3ace0e[_0xe69f('0x2e')]||_0x3ace0e['exten'];if(_0x3ace0e[_0xe69f('0x2f')]==_0xe69f('0x30')){_0x3ace0e[_0xe69f('0x31')]=_0xe69f('0x32');_0x3ace0e[_0xe69f('0x33')]=_0x3ace0e[_0xe69f('0x32')];if(_0x3ace0e[_0xe69f('0x34')]==_0xe69f('0x35')){_0x3ace0e['accountcode']='';_0x3ace0e[_0xe69f('0x2e')]=extractCalleridNumber(_0x3ace0e[_0xe69f('0x36')]);}else if(_0x3ace0e[_0xe69f('0x34')]=='from-sip'){if(_0x3ace0e['destination']=='xcally-motion-preview'){_0x3ace0e[_0xe69f('0x2e')]=extractCalleridNumber(_0x3ace0e['calleridpreview']);_0x3ace0e[_0xe69f('0x37')]=_0x3ace0e[_0xe69f('0x38')];_0x3ace0e[_0xe69f('0x39')]=[_0x3ace0e['channel'],_0x3ace0e['channel']=_0x3ace0e['destinationchannel']][0x0];_0x3ace0e['callerid']=_0x3ace0e['calleridpreview'];}else{_0x3ace0e[_0xe69f('0x2e')]=_0x3ace0e[_0xe69f('0x37')];_0x3ace0e[_0xe69f('0x37')]=_0x3ace0e[_0xe69f('0x38')];if(_0x3ace0e[_0xe69f('0x3a')]==_0xe69f('0x3b')){_0x3ace0e[_0xe69f('0x1c')]=_0x3ace0e[_0xe69f('0x26')];}else{_0x3ace0e[_0xe69f('0x1c')]='';}}}}else{_0x3ace0e['callerid']=util[_0xe69f('0x22')](_0xe69f('0x3c'),_0x3ace0e[_0xe69f('0x3d')],_0x3ace0e['calleridnum']);}if(RpcVoiceTransferReport[_0xe69f('0x3e')][_0x3ace0e[_0xe69f('0x3f')]]){var _0x41cc58=RpcVoiceTransferReport[_0xe69f('0x3e')][_0x3ace0e[_0xe69f('0x3f')]];_0x41cc58[_0xe69f('0x40')]=_0x3ace0e[_0xe69f('0x41')];RpcVoiceTransferReport['blindTransfer'](_0x41cc58);delete RpcVoiceTransferReport[_0xe69f('0x3e')][_0x3ace0e[_0xe69f('0x3f')]];}RpcVoiceCallReport[_0xe69f('0x2c')](_0x3ace0e);if(_0x3ace0e[_0xe69f('0x42')]){for(var _0x165c18=0x0;_0x165c18<_0x3ace0e[_0xe69f('0x43')][_0xe69f('0x25')];_0x165c18+=0x1){_0x3ace0e[_0xe69f('0x44')]=_0x3ace0e[_0xe69f('0x43')][_0x165c18][_0xe69f('0x45')];_0x3ace0e[_0xe69f('0x46')]=_0x3ace0e['monitors'][_0x165c18][_0xe69f('0x46')];if(_0x3ace0e['exten']==_0xe69f('0x47')){_0x3ace0e[_0xe69f('0x37')]=_0x3ace0e['connectedlinenum'];_0x3ace0e['calleridname']=_0x3ace0e[_0xe69f('0x48')];_0x3ace0e[_0xe69f('0x26')]=_0x3ace0e[_0xe69f('0x1c')];_0x3ace0e[_0xe69f('0x48')]=_0x3ace0e['membername'];_0x3ace0e['exten']=_0x3ace0e['originatecalleridnum'];}else if(_0x3ace0e[_0xe69f('0x49')]=='xcally-motion-dialer'){_0x3ace0e[_0xe69f('0x37')]=_0x3ace0e[_0xe69f('0x2e')];_0x3ace0e['exten']=_0x3ace0e[_0xe69f('0x38')];}RpcVoiceRecording[_0xe69f('0x2c')](_0x3ace0e);}}};Report[_0xe69f('0xe')][_0xe69f('0x16')]=function(_0x2a8d4a){if(_['isArray'](_0x2a8d4a)){_0x2a8d4a[_0xe69f('0x4a')](function(_0x1c22cf){RpcVoiceAgentReport[_0xe69f('0x2c')](_0x1c22cf);});}else{RpcVoiceAgentReport[_0xe69f('0x2c')](_0x2a8d4a);}};Report[_0xe69f('0xe')][_0xe69f('0x17')]=function(_0x2ed3a8){RpcVoiceDialReport[_0xe69f('0x2c')](_0x2ed3a8);var _0x2adcab;var _0x44bdc5;var _0x34ea6b=_0x2ed3a8['channel'];if(_[_0xe69f('0x4b')](_0x34ea6b,_0xe69f('0x4c'))){_0x44bdc5=_0x34ea6b[_0xe69f('0x4d')](_0x34ea6b['indexOf']('/')+0x1,_0x34ea6b['indexOf']('@'));_0x2adcab=_[_0xe69f('0x1f')](this['agents'],function(_0x2c0c22){return _0x2c0c22[_0xe69f('0x4e')]==_0x44bdc5||_0x2c0c22['phone']==_0x44bdc5||_0x2c0c22['accountcode']==_0x44bdc5;});}else{_0x44bdc5=_0x34ea6b[_0xe69f('0x4d')](_0x34ea6b[_0xe69f('0x4f')]('/')+0x1,_0x34ea6b[_0xe69f('0x50')]('-'));_0x2adcab=this[_0xe69f('0x1b')](_0x44bdc5);}if(_0x2adcab){_0x2ed3a8[_0xe69f('0x21')]=_[_0xe69f('0x1e')](_0x2adcab[_0xe69f('0x21')])?util[_0xe69f('0x22')]('SIP/%s',_0x2adcab[_0xe69f('0x1d')]):_0x2adcab[_0xe69f('0x21')];_0x2ed3a8[_0xe69f('0x51')]=_0x2adcab[_0xe69f('0x1d')];_0x2ed3a8[_0xe69f('0x1c')]=_0x2adcab[_0xe69f('0x1c')];RpcMemberReport['voiceDialReport'](_0x2ed3a8);}};Report[_0xe69f('0xe')][_0xe69f('0x18')]=function(_0x2ac435){RpcVoiceTransferReport[_0xe69f('0x3e')][_0x2ac435[_0xe69f('0x52')]]=_0x2ac435;};Report[_0xe69f('0xe')]['attendedTransfer']=function(_0x21c205){RpcVoiceTransferReport[_0xe69f('0x1a')](_0x21c205);};module[_0xe69f('0x53')]=Report;
\ No newline at end of file
index 50fffc0..9b524c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a5=['devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','stateRegistry','merge','event','actionid','format','trunk:%s','trunk:save','[userReport][registry]','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','substring','indexOf','find','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry'];(function(_0x546f9f,_0xcce640){var _0x3513dd=function(_0x2e5c79){while(--_0x2e5c79){_0x546f9f['push'](_0x546f9f['shift']());}};_0x3513dd(++_0xcce640);}(_0x93a5,0x1ae));var _0x593a=function(_0x26f1b2,_0x33d843){_0x26f1b2=_0x26f1b2-0x0;var _0x1624a4=_0x93a5[_0x26f1b2];return _0x1624a4;};'use strict';var _=require(_0x593a('0x0'));var moment=require(_0x593a('0x1'));var util=require(_0x593a('0x2'));var Redis=require(_0x593a('0x3'));var BPromise=require(_0x593a('0x4'));var config=require(_0x593a('0x5'));var logger=require(_0x593a('0x6'))(_0x593a('0x7'));var ami=require(_0x593a('0x8'));config[_0x593a('0x9')]=_[_0x593a('0xa')](config[_0x593a('0x9')],{'host':_0x593a('0xb'),'port':0x18eb});var io=require(_0x593a('0xc'))(new Redis(config[_0x593a('0x9')]));function UserReport(_0x16d9eb){this[_0x593a('0xd')]=_0x16d9eb[_0x593a('0xd')];this['agents']=_0x16d9eb[_0x593a('0xe')];this[_0x593a('0xf')]=_0x16d9eb['telephones'];ami['on'](_0x593a('0x10'),this[_0x593a('0x11')][_0x593a('0x12')](this));ami['on'](_0x593a('0x13'),this[_0x593a('0x11')][_0x593a('0x12')](this));ami['on'](_0x593a('0x14'),this[_0x593a('0x15')][_0x593a('0x12')](this));ami['on'](_0x593a('0x16'),this[_0x593a('0x17')][_0x593a('0x12')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x593a('0x18')]()[_0x593a('0x19')](ami[_0x593a('0x1a')]())[_0x593a('0x1b')](function(_0x425d73){logger[_0x593a('0x1c')](_0x593a('0x1d'),util[_0x593a('0x1e')](_0x425d73,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x593a('0x19')](ami[_0x593a('0x1f')]())[_0x593a('0x1b')](function(_0x31553d){logger[_0x593a('0x1c')](_0x593a('0x20'),util[_0x593a('0x1e')](_0x31553d,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x593a('0x19')](ami[_0x593a('0x21')]())['catch'](function(_0x1df826){logger[_0x593a('0x1c')](_0x593a('0x22'),util['inspect'](_0x1df826,{'showHidden':![],'depth':null}));});}UserReport[_0x593a('0x23')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()[_0x593a('0x19')](showSipRegistrations())['then'](listDeviceStates())[_0x593a('0x19')](showPeersStatus());},0x32c8);};UserReport[_0x593a('0x23')][_0x593a('0x24')]=function(_0x2ee401){return _0x2ee401!==null&&!_[_0x593a('0x25')](_0x2ee401);};UserReport['prototype']['emit']=function(_0x3cd896,_0x3c5486,_0xed9765){io['to'](_0x3cd896)[_0x593a('0x26')](_0x3c5486,_0xed9765);};UserReport[_0x593a('0x23')][_0x593a('0x11')]=function(_0x30d8ed){try{if(this[_0x593a('0x24')](_0x30d8ed)){logger[_0x593a('0x27')](_0x593a('0x28'),_0x30d8ed[_0x593a('0x29')],_0x30d8ed[_0x593a('0x2a')]);logger[_0x593a('0x2b')]('[userReport][registry]',util[_0x593a('0x1e')](_0x30d8ed,{'showHidden':![],'depth':null}));var _0x469a51=_['find'](this[_0x593a('0xd')],{'defaultuser':_0x30d8ed[_0x593a('0x29')]});if(_0x469a51){_0x30d8ed[_0x593a('0x2c')]=_0x30d8ed[_0x593a('0x2a')];_[_0x593a('0x2d')](_0x469a51,_['omit'](_0x30d8ed,[_0x593a('0x2e'),_0x593a('0x2f'),'username',_0x593a('0x2a')]));logger[_0x593a('0x2b')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x593a('0x1e')](_0x469a51,{'showHidden':![],'depth':null}));this['emit'](util[_0x593a('0x30')](_0x593a('0x31'),_0x469a51['name']),_0x593a('0x32'),_0x469a51);}}}catch(_0x24c844){logger[_0x593a('0x1c')](_0x593a('0x33'),util['inspect'](_0x24c844,{'showHidden':![],'depth':null}));}};UserReport[_0x593a('0x23')][_0x593a('0x15')]=function(_0xadf8b7){try{if(this[_0x593a('0x24')](_0xadf8b7)){logger[_0x593a('0x27')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0xadf8b7[_0x593a('0x34')],_0xadf8b7[_0x593a('0x2a')]);logger[_0x593a('0x2b')](_0x593a('0x35'),util['inspect'](_0xadf8b7,{'showHidden':![],'depth':null}));if(this[_0x593a('0xe')][_0xadf8b7[_0x593a('0x34')]]){if(!this[_0x593a('0xe')][_0xadf8b7['device']][_0x593a('0x36')]||_0xadf8b7['state'][_0x593a('0x37')]()==_0x593a('0x38')){this[_0x593a('0xe')][_0xadf8b7[_0x593a('0x34')]]['local']=![];if(this['agents'][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]!==_0xadf8b7['state'][_0x593a('0x37')]()){this['agents'][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x39')]=_['toNumber'](moment()[_0x593a('0x30')]('x'));}this[_0x593a('0xe')][_0xadf8b7['device']][_0x593a('0x2a')]=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();this['agents'][_0xadf8b7[_0x593a('0x34')]]['updateStatusRealtime'](_0xadf8b7);}}else if(this[_0x593a('0xf')][_0xadf8b7[_0x593a('0x34')]]){if(this[_0x593a('0xf')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]!==_0xadf8b7['state'][_0x593a('0x37')]()){this['telephones'][_0xadf8b7[_0x593a('0x34')]]['stateTime']=_[_0x593a('0x3a')](moment()[_0x593a('0x30')]('x'));}this[_0x593a('0xf')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();logger[_0x593a('0x2b')](_0x593a('0x3b'),util['inspect'](this[_0x593a('0xf')][_0xadf8b7['device']],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x3c'),this['telephones'][_0xadf8b7['device']][_0x593a('0x3d')]),_0x593a('0x3e'),this['telephones'][_0xadf8b7['device']]);}else if(this[_0x593a('0xd')][_0xadf8b7['device']]){if(this['trunks'][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]!==_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]()){this[_0x593a('0xd')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x39')]=_[_0x593a('0x3a')](moment()[_0x593a('0x30')]('x'));}this[_0x593a('0xd')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x593a('0x1e')](this['trunks'][_0xadf8b7[_0x593a('0x34')]],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x31'),this[_0x593a('0xd')][_0xadf8b7[_0x593a('0x34')]]['name']),_0x593a('0x32'),this[_0x593a('0xd')][_0xadf8b7['device']]);}else if(_['startsWith'](_0xadf8b7[_0x593a('0x34')],'Local')){var _0x2e0c19=_0xadf8b7['device'];var _0x1541e0=_0x2e0c19[_0x593a('0x3f')](_0x2e0c19['indexOf']('/')+0x1,_0x2e0c19[_0x593a('0x40')]('@'));var _0x2144ae=_[_0x593a('0x41')](this[_0x593a('0xe')],function(_0x2eb3c2){return _0x2eb3c2['mobile']==_0x1541e0||_0x2eb3c2['phone']==_0x1541e0||_0x2eb3c2[_0x593a('0x42')]==_0x1541e0;});if(_0x2144ae){if(_0x2144ae[_0x593a('0x2a')]!==_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]()){_0x2144ae['stateTime']=_[_0x593a('0x3a')](moment()[_0x593a('0x30')]('x'));}_0x2144ae['state']=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();_0x2144ae[_0x593a('0x36')]=!![];_0x2144ae[_0x593a('0x43')](_0xadf8b7);}}}}catch(_0x4ef0fe){logger['error']('[userReport][devicestatechange]',util[_0x593a('0x1e')](_0x4ef0fe,{'showHidden':![],'depth':null}));}};UserReport[_0x593a('0x23')]['syncPeerStatus']=function(_0x1d9662){try{if(this[_0x593a('0x24')](_0x1d9662)&&this[_0x593a('0x24')](_0x1d9662[_0x593a('0x16')])){logger[_0x593a('0x27')](_0x593a('0x44'),_0x1d9662[_0x593a('0x45')],_0x1d9662[_0x593a('0x46')],_0x1d9662[_0x593a('0x16')]);logger['debug']('[userReport][peerstatus]',util[_0x593a('0x1e')](_0x1d9662,{'showHidden':![],'depth':null}));if(this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]]){if(!this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]][_0x593a('0x36')]||_0x1d9662[_0x593a('0x16')][_0x593a('0x37')]()==_0x593a('0x47')){this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]][_0x593a('0x36')]=![];this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]]['status']=_0x1d9662[_0x593a('0x16')][_0x593a('0x37')]();this['agents'][_0x1d9662[_0x593a('0x45')]][_0x593a('0x46')]=_0x1d9662['address'];this['agents'][_0x1d9662['peer']][_0x593a('0x43')](_0x1d9662);}}else if(this[_0x593a('0xf')][_0x1d9662[_0x593a('0x45')]]){this['telephones'][_0x1d9662['peer']][_0x593a('0x48')]=_0x1d9662[_0x593a('0x16')]['toLowerCase']();this[_0x593a('0xf')][_0x1d9662[_0x593a('0x45')]][_0x593a('0x46')]=_0x1d9662[_0x593a('0x46')];logger['debug'](_0x593a('0x49'),util['inspect'](this[_0x593a('0xf')][_0x1d9662[_0x593a('0x45')]],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x3c'),this['telephones'][_0x1d9662[_0x593a('0x45')]][_0x593a('0x3d')]),_0x593a('0x3e'),this[_0x593a('0xf')][_0x1d9662['peer']]);}else if(this[_0x593a('0xd')][_0x1d9662[_0x593a('0x45')]]){this[_0x593a('0xd')][_0x1d9662['peer']][_0x593a('0x48')]=_0x1d9662[_0x593a('0x16')][_0x593a('0x37')]();this['trunks'][_0x1d9662[_0x593a('0x45')]][_0x593a('0x46')]=_0x1d9662['address'];logger[_0x593a('0x2b')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x593a('0x1e')](this[_0x593a('0xd')][_0x1d9662[_0x593a('0x45')]],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x31'),this[_0x593a('0xd')][_0x1d9662['peer']][_0x593a('0x3d')]),_0x593a('0x32'),this[_0x593a('0xd')][_0x1d9662[_0x593a('0x45')]]);}}}catch(_0x42e437){logger[_0x593a('0x1c')]('[userReport][peerstatus]',util[_0x593a('0x1e')](_0x42e437,{'showHidden':![],'depth':null}));}};module[_0x593a('0x4a')]=UserReport;
\ No newline at end of file
+var _0x6e06=['debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','toLowerCase','inuse','stateTime','format','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','find','mobile','accountcode','syncPeerStatus','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','exports','util','ioredis','bluebird','../../../config/environment','ami','../ami','redis','defaults','localhost','trunks','agents','telephones','registryentry','syncRegistry','registry','devicestatechange','bind','syncRealtimeShow','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','resolve','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','stateRegistry','merge','omit','event'];(function(_0x1a107,_0x4a5459){var _0x2cbd37=function(_0x1c04b5){while(--_0x1c04b5){_0x1a107['push'](_0x1a107['shift']());}};_0x2cbd37(++_0x4a5459);}(_0x6e06,0x1f1));var _0x66e0=function(_0xdc1384,_0x1c8609){_0xdc1384=_0xdc1384-0x0;var _0x94183=_0x6e06[_0xdc1384];return _0x94183;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x66e0('0x0'));var Redis=require(_0x66e0('0x1'));var BPromise=require(_0x66e0('0x2'));var config=require(_0x66e0('0x3'));var logger=require('../../../config/logger')(_0x66e0('0x4'));var ami=require(_0x66e0('0x5'));config[_0x66e0('0x6')]=_[_0x66e0('0x7')](config['redis'],{'host':_0x66e0('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x66e0('0x6')]));function UserReport(_0x557dd3){this[_0x66e0('0x9')]=_0x557dd3[_0x66e0('0x9')];this[_0x66e0('0xa')]=_0x557dd3[_0x66e0('0xa')];this[_0x66e0('0xb')]=_0x557dd3[_0x66e0('0xb')];ami['on'](_0x66e0('0xc'),this[_0x66e0('0xd')]['bind'](this));ami['on'](_0x66e0('0xe'),this['syncRegistry']['bind'](this));ami['on'](_0x66e0('0xf'),this['syncDeviceState']['bind'](this));ami['on']('peerstatus',this['syncPeerStatus'][_0x66e0('0x10')](this));return this[_0x66e0('0x11')]();}function showSipRegistrations(){Promise['resolve']()[_0x66e0('0x12')](ami[_0x66e0('0x13')]())[_0x66e0('0x14')](function(_0x526209){logger[_0x66e0('0x15')](_0x66e0('0x16'),util['inspect'](_0x526209,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x66e0('0x17')]()[_0x66e0('0x12')](ami[_0x66e0('0x18')]())[_0x66e0('0x14')](function(_0x177344){logger[_0x66e0('0x15')](_0x66e0('0x19'),util[_0x66e0('0x1a')](_0x177344,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x66e0('0x12')](ami[_0x66e0('0x1b')]())['catch'](function(_0x145fc5){logger[_0x66e0('0x15')](_0x66e0('0x1c'),util[_0x66e0('0x1a')](_0x145fc5,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x66e0('0x11')]=function(){setInterval(function(){BPromise['resolve']()[_0x66e0('0x12')](showSipRegistrations())[_0x66e0('0x12')](listDeviceStates())[_0x66e0('0x12')](showPeersStatus());},0x32c8);};UserReport[_0x66e0('0x1d')]['isNotNull']=function(_0x534291){return _0x534291!==null&&!_[_0x66e0('0x1e')](_0x534291);};UserReport[_0x66e0('0x1d')][_0x66e0('0x1f')]=function(_0x562114,_0x481541,_0xa1f2a8){io['to'](_0x562114)[_0x66e0('0x1f')](_0x481541,_0xa1f2a8);};UserReport[_0x66e0('0x1d')]['syncRegistry']=function(_0x1ded0e){try{if(this[_0x66e0('0x20')](_0x1ded0e)){logger[_0x66e0('0x21')](_0x66e0('0x22'),_0x1ded0e[_0x66e0('0x23')],_0x1ded0e[_0x66e0('0x24')]);logger['debug'](_0x66e0('0x25'),util['inspect'](_0x1ded0e,{'showHidden':![],'depth':null}));var _0x23b809=_['find'](this[_0x66e0('0x9')],{'defaultuser':_0x1ded0e[_0x66e0('0x23')]});if(_0x23b809){_0x1ded0e[_0x66e0('0x26')]=_0x1ded0e['state'];_[_0x66e0('0x27')](_0x23b809,_[_0x66e0('0x28')](_0x1ded0e,[_0x66e0('0x29'),'actionid',_0x66e0('0x23'),'state']));logger[_0x66e0('0x2a')](_0x66e0('0x2b'),util[_0x66e0('0x1a')](_0x23b809,{'showHidden':![],'depth':null}));this[_0x66e0('0x1f')](util['format'](_0x66e0('0x2c'),_0x23b809['name']),_0x66e0('0x2d'),_0x23b809);}}}catch(_0x3c04c6){logger[_0x66e0('0x15')](_0x66e0('0x25'),util[_0x66e0('0x1a')](_0x3c04c6,{'showHidden':![],'depth':null}));}};UserReport[_0x66e0('0x1d')][_0x66e0('0x2e')]=function(_0x5495a9){try{if(this[_0x66e0('0x20')](_0x5495a9)){logger[_0x66e0('0x21')](_0x66e0('0x2f'),_0x5495a9['device'],_0x5495a9[_0x66e0('0x24')]);logger[_0x66e0('0x2a')](_0x66e0('0x30'),util[_0x66e0('0x1a')](_0x5495a9,{'showHidden':![],'depth':null}));if(this['agents'][_0x5495a9[_0x66e0('0x31')]]){if(!this[_0x66e0('0xa')][_0x5495a9[_0x66e0('0x31')]][_0x66e0('0x32')]||_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]()==_0x66e0('0x34')){this[_0x66e0('0xa')][_0x5495a9['device']]['local']=![];if(this[_0x66e0('0xa')][_0x5495a9[_0x66e0('0x31')]]['state']!==_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]()){this['agents'][_0x5495a9['device']][_0x66e0('0x35')]=_['toNumber'](moment()[_0x66e0('0x36')]('x'));}this[_0x66e0('0xa')][_0x5495a9[_0x66e0('0x31')]][_0x66e0('0x24')]=_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]();this[_0x66e0('0xa')][_0x5495a9[_0x66e0('0x31')]][_0x66e0('0x37')](_0x5495a9);}}else if(this['telephones'][_0x5495a9[_0x66e0('0x31')]]){if(this['telephones'][_0x5495a9['device']][_0x66e0('0x24')]!==_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]()){this[_0x66e0('0xb')][_0x5495a9['device']]['stateTime']=_[_0x66e0('0x38')](moment()['format']('x'));}this['telephones'][_0x5495a9[_0x66e0('0x31')]]['state']=_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]();logger['debug'](_0x66e0('0x39'),util[_0x66e0('0x1a')](this[_0x66e0('0xb')][_0x5495a9[_0x66e0('0x31')]],{'showHidden':![],'depth':null}));this[_0x66e0('0x1f')](util[_0x66e0('0x36')](_0x66e0('0x3a'),this[_0x66e0('0xb')][_0x5495a9['device']][_0x66e0('0x3b')]),_0x66e0('0x3c'),this['telephones'][_0x5495a9['device']]);}else if(this[_0x66e0('0x9')][_0x5495a9['device']]){if(this[_0x66e0('0x9')][_0x5495a9[_0x66e0('0x31')]][_0x66e0('0x24')]!==_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]()){this[_0x66e0('0x9')][_0x5495a9['device']][_0x66e0('0x35')]=_[_0x66e0('0x38')](moment()['format']('x'));}this[_0x66e0('0x9')][_0x5495a9['device']]['state']=_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]();logger['debug'](_0x66e0('0x3d'),util[_0x66e0('0x1a')](this[_0x66e0('0x9')][_0x5495a9[_0x66e0('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x66e0('0x36')](_0x66e0('0x2c'),this['trunks'][_0x5495a9[_0x66e0('0x31')]][_0x66e0('0x3b')]),_0x66e0('0x2d'),this[_0x66e0('0x9')][_0x5495a9['device']]);}else if(_[_0x66e0('0x3e')](_0x5495a9['device'],'Local')){var _0x5b395e=_0x5495a9[_0x66e0('0x31')];var _0x152a97=_0x5b395e[_0x66e0('0x3f')](_0x5b395e[_0x66e0('0x40')]('/')+0x1,_0x5b395e[_0x66e0('0x40')]('@'));var _0x2ae2db=_[_0x66e0('0x41')](this[_0x66e0('0xa')],function(_0x37fc40){return _0x37fc40[_0x66e0('0x42')]==_0x152a97||_0x37fc40['phone']==_0x152a97||_0x37fc40[_0x66e0('0x43')]==_0x152a97;});if(_0x2ae2db){if(_0x2ae2db[_0x66e0('0x24')]!==_0x5495a9[_0x66e0('0x24')][_0x66e0('0x33')]()){_0x2ae2db[_0x66e0('0x35')]=_['toNumber'](moment()['format']('x'));}_0x2ae2db[_0x66e0('0x24')]=_0x5495a9[_0x66e0('0x24')]['toLowerCase']();_0x2ae2db[_0x66e0('0x32')]=!![];_0x2ae2db['updateStatusRealtime'](_0x5495a9);}}}}catch(_0x4c76c7){logger[_0x66e0('0x15')](_0x66e0('0x30'),util[_0x66e0('0x1a')](_0x4c76c7,{'showHidden':![],'depth':null}));}};UserReport[_0x66e0('0x1d')][_0x66e0('0x44')]=function(_0x257854){try{if(this[_0x66e0('0x20')](_0x257854)&&this[_0x66e0('0x20')](_0x257854[_0x66e0('0x45')])){logger[_0x66e0('0x21')](_0x66e0('0x46'),_0x257854[_0x66e0('0x47')],_0x257854['address'],_0x257854[_0x66e0('0x45')]);logger[_0x66e0('0x2a')](_0x66e0('0x48'),util[_0x66e0('0x1a')](_0x257854,{'showHidden':![],'depth':null}));if(this[_0x66e0('0xa')][_0x257854[_0x66e0('0x47')]]){if(!this[_0x66e0('0xa')][_0x257854[_0x66e0('0x47')]]['local']||_0x257854[_0x66e0('0x45')]['toLowerCase']()==_0x66e0('0x49')){this[_0x66e0('0xa')][_0x257854[_0x66e0('0x47')]][_0x66e0('0x32')]=![];this[_0x66e0('0xa')][_0x257854[_0x66e0('0x47')]][_0x66e0('0x4a')]=_0x257854[_0x66e0('0x45')][_0x66e0('0x33')]();this[_0x66e0('0xa')][_0x257854['peer']]['address']=_0x257854[_0x66e0('0x4b')];this['agents'][_0x257854[_0x66e0('0x47')]][_0x66e0('0x37')](_0x257854);}}else if(this[_0x66e0('0xb')][_0x257854[_0x66e0('0x47')]]){this[_0x66e0('0xb')][_0x257854[_0x66e0('0x47')]][_0x66e0('0x4a')]=_0x257854['peerstatus'][_0x66e0('0x33')]();this[_0x66e0('0xb')][_0x257854[_0x66e0('0x47')]][_0x66e0('0x4b')]=_0x257854[_0x66e0('0x4b')];logger[_0x66e0('0x2a')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x66e0('0x1a')](this[_0x66e0('0xb')][_0x257854[_0x66e0('0x47')]],{'showHidden':![],'depth':null}));this[_0x66e0('0x1f')](util[_0x66e0('0x36')]('telephone:%s',this[_0x66e0('0xb')][_0x257854['peer']][_0x66e0('0x3b')]),_0x66e0('0x3c'),this['telephones'][_0x257854[_0x66e0('0x47')]]);}else if(this[_0x66e0('0x9')][_0x257854[_0x66e0('0x47')]]){this[_0x66e0('0x9')][_0x257854['peer']][_0x66e0('0x4a')]=_0x257854[_0x66e0('0x45')]['toLowerCase']();this[_0x66e0('0x9')][_0x257854['peer']][_0x66e0('0x4b')]=_0x257854['address'];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x66e0('0x1a')](this[_0x66e0('0x9')][_0x257854[_0x66e0('0x47')]],{'showHidden':![],'depth':null}));this[_0x66e0('0x1f')](util[_0x66e0('0x36')](_0x66e0('0x2c'),this[_0x66e0('0x9')][_0x257854[_0x66e0('0x47')]][_0x66e0('0x3b')]),'trunk:save',this[_0x66e0('0x9')][_0x257854[_0x66e0('0x47')]]);}}}catch(_0xa4dfbd){logger[_0x66e0('0x15')](_0x66e0('0x48'),util['inspect'](_0xa4dfbd,{'showHidden':![],'depth':null}));}};module[_0x66e0('0x4c')]=UserReport;
\ No newline at end of file
index cab644f..94ed9a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%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]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x1a70c4,_0x43c5a0){var _0x6bce17=function(_0x44aa10){while(--_0x44aa10){_0x1a70c4['push'](_0x1a70c4['shift']());}};_0x6bce17(++_0x43c5a0);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0x9a96=['syncMusicOnHoldStop','attendedtransfer','emit','prototype','isNotNull','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','inspect','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','type','inbound','voice','merge','omit','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstatedesc','holdtime','lastevent','connect','voiceChannels','routealias','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','syncQueueCallerAbandon','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','reason','transfer','agent','talktime','acw','acwtime','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','syncBlindTransfer','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','onhold','[%s][voiceAgentReport][musiconholdstart]','substring','lastIndexOf','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues','agents','variables','agentcalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','varset','syncVarSet','musiconholdstart','syncMusicOnHoldStart','musiconholdstop'];(function(_0x54ea24,_0x48ea72){var _0x435356=function(_0x56e8e1){while(--_0x56e8e1){_0x54ea24['push'](_0x54ea24['shift']());}};_0x435356(++_0x48ea72);}(_0x9a96,0x117));var _0x69a9=function(_0x4cffd5,_0x104950){_0x4cffd5=_0x4cffd5-0x0;var _0x2d3663=_0x9a96[_0x4cffd5];return _0x2d3663;};'use strict';var _=require(_0x69a9('0x0'));var moment=require('moment');var util=require(_0x69a9('0x1'));var Redis=require(_0x69a9('0x2'));var config=require(_0x69a9('0x3'));var logger=require(_0x69a9('0x4'))(_0x69a9('0x5'));var ami=require(_0x69a9('0x6'));config[_0x69a9('0x7')]=_[_0x69a9('0x8')](config['redis'],{'host':_0x69a9('0x9'),'port':0x18eb});var io=require(_0x69a9('0xa'))(new Redis(config[_0x69a9('0x7')]));function VoiceAgentReport(_0x425497){this[_0x69a9('0xb')]={};this['voiceChannels']=_0x425497[_0x69a9('0xb')];this[_0x69a9('0xc')]=_0x425497[_0x69a9('0xc')];this[_0x69a9('0xd')]=_0x425497['agents'];this[_0x69a9('0xe')]={};ami['on'](_0x69a9('0xf'),this['syncAgentCalled'][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x11'),this[_0x69a9('0x12')][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x13'),this[_0x69a9('0x14')][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x15'),this['syncQueueCallerAbandon'][_0x69a9('0x10')](this));ami['on']('agentcomplete',this['syncAgentComplete'][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x16'),this[_0x69a9('0x17')][_0x69a9('0x10')](this));ami['on']('hangup',this['syncHangup'][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x18'),this[_0x69a9('0x19')][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x1a'),this[_0x69a9('0x1b')][_0x69a9('0x10')](this));ami['on'](_0x69a9('0x1c'),this['syncAttendedTransfer'][_0x69a9('0x10')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x69a9('0x10')](this));}VoiceAgentReport['prototype'][_0x69a9('0x1d')]=function(_0x23e07b,_0x24ef0d,_0x1f1c1e){io['to'](_0x23e07b)[_0x69a9('0x1d')](_0x24ef0d,_0x1f1c1e);};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x1f')]=function(_0xc2bb0b){return _0xc2bb0b!==null&&!_[_0x69a9('0x20')](_0xc2bb0b);};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x21')]=function(_0x48248c){try{if(this[_0x69a9('0x1f')](_0x48248c)){logger[_0x69a9('0x22')](_0x69a9('0x23'),_0x48248c[_0x69a9('0x24')],_0x48248c[_0x69a9('0x25')],_0x48248c[_0x69a9('0x26')]);logger[_0x69a9('0x27')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x48248c['uniqueid'],util[_0x69a9('0x28')](_0x48248c,{'showHidden':![],'depth':null}));if(_[_0x69a9('0x20')](this[_0x69a9('0xb')][_0x48248c['uniqueid']])){this[_0x69a9('0xb')][_0x48248c['uniqueid']]={};}if(_['isUndefined'](this[_0x69a9('0xb')][_0x48248c[_0x69a9('0x24')]][_0x48248c[_0x69a9('0x26')]])){this[_0x69a9('0xb')][_0x48248c['uniqueid']][_0x48248c[_0x69a9('0x26')]]={'agentcalledAt':moment()[_0x69a9('0x29')](_0x69a9('0x2a')),'lastevent':_0x69a9('0x2b'),'mandatoryDisposition':this[_0x69a9('0xc')][_0x48248c[_0x69a9('0x2c')]]?this[_0x69a9('0xc')][_0x48248c['queue']][_0x69a9('0x2d')]||![]:![],'type':this[_0x69a9('0xc')][_0x48248c[_0x69a9('0x2c')]]?this[_0x69a9('0xc')][_0x48248c[_0x69a9('0x2c')]][_0x69a9('0x2e')]||_0x69a9('0x2f'):'inbound','variables':this[_0x69a9('0xe')][_0x48248c[_0x69a9('0x24')]],'motionChannel':_0x69a9('0x30')};}_[_0x69a9('0x31')](this[_0x69a9('0xb')][_0x48248c['uniqueid']][_0x48248c[_0x69a9('0x26')]],_[_0x69a9('0x32')](_0x48248c,['event',_0x69a9('0x33')]));logger['debug'](_0x69a9('0x34'),_0x48248c[_0x69a9('0x24')],util[_0x69a9('0x28')](this[_0x69a9('0xb')][_0x48248c[_0x69a9('0x24')]][_0x48248c[_0x69a9('0x26')]],{'showHidden':![],'depth':null}));ami[_0x69a9('0x1d')](_0x69a9('0x35'),this[_0x69a9('0xb')][_0x48248c[_0x69a9('0x24')]][_0x48248c['destuniqueid']]);logger[_0x69a9('0x27')](_0x69a9('0x36'),_0x48248c[_0x69a9('0x24')],util[_0x69a9('0x28')](this[_0x69a9('0xb')][_0x48248c[_0x69a9('0x24')]][_0x48248c[_0x69a9('0x26')]],{'showHidden':![],'depth':null}));this[_0x69a9('0x1d')](util[_0x69a9('0x29')](_0x69a9('0x37'),_0x48248c[_0x69a9('0x25')]),_0x69a9('0x38'),this[_0x69a9('0xb')][_0x48248c[_0x69a9('0x24')]][_0x48248c[_0x69a9('0x26')]]);}}catch(_0x46fc92){logger[_0x69a9('0x39')](_0x69a9('0x3a'),_0x48248c[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x46fc92,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x12')]=function(_0x2db88b){try{if(this[_0x69a9('0x1f')](_0x2db88b)){if(this[_0x69a9('0xb')][_0x2db88b['uniqueid']]){logger['debug']('[%s][voiceAgentReport][agentconnect]\x20event:',_0x2db88b[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x2db88b,{'showHidden':![],'depth':null}));for(var _0x8176dd in this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]]){if(this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x69a9('0x3b')](_0x8176dd)){if(_0x2db88b[_0x69a9('0x26')]===_0x8176dd){logger[_0x69a9('0x22')](_0x69a9('0x3c'),_0x2db88b[_0x69a9('0x24')],_0x2db88b[_0x69a9('0x25')],_0x2db88b['destuniqueid']);this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x3d')]=moment()['format'](_0x69a9('0x2a'));this['channels'][_0x2db88b['uniqueid']][_0x8176dd][_0x69a9('0x3e')]=_0x2db88b[_0x69a9('0x3e')];this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd]['connectedlinenum']=_0x2db88b[_0x69a9('0x3f')];this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd]['destchannelstate']=_0x2db88b['destchannelstate'];this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd]['destchannelstatedesc']=_0x2db88b[_0x69a9('0x40')];this['channels'][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x41')]=_0x2db88b[_0x69a9('0x41')];this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd][_0x69a9('0x42')]=_0x69a9('0x43');if(this[_0x69a9('0x44')][this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd]['uniqueid']]){var _0x1f80f4=this[_0x69a9('0x44')][this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x24')]][_0x69a9('0x45')];this['channels'][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x45')]=_0x1f80f4;_0x2db88b[_0x69a9('0x45')]=_0x1f80f4;}_[_0x69a9('0x31')](this[_0x69a9('0xd')][_0x2db88b[_0x69a9('0x46')]],_[_0x69a9('0x47')](_0x2db88b,[_0x69a9('0x2c'),_0x69a9('0x48'),_0x69a9('0x45')]));logger[_0x69a9('0x27')](_0x69a9('0x49'),_0x2db88b['uniqueid'],util['inspect'](this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x2db88b[_0x69a9('0x26')]],{'showHidden':![],'depth':null}));ami[_0x69a9('0x1d')]('custom:agentconnect',this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x2db88b[_0x69a9('0x26')]]);logger['debug'](_0x69a9('0x4a'),_0x2db88b[_0x69a9('0x24')],util[_0x69a9('0x28')](this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x2db88b[_0x69a9('0x26')]],{'showHidden':![],'depth':null}));this[_0x69a9('0x1d')](util[_0x69a9('0x29')](_0x69a9('0x37'),_0x2db88b['membername']),_0x69a9('0x4b'),this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x2db88b['destuniqueid']]);}else if(!this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd]['agentringnoanswer']&&!this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd][_0x69a9('0x4c')]){logger[_0x69a9('0x22')](_0x69a9('0x4d'),_0x2db88b[_0x69a9('0x24')],this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x25')],_0x8176dd);this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x13')]=!![];this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd][_0x69a9('0x4e')]=moment()['format'](_0x69a9('0x2a'));this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd][_0x69a9('0x4f')]=_0x2db88b['destuniqueid'];this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd]['answeredelsewheremembername']=_0x2db88b['membername'];this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd][_0x69a9('0x42')]=_0x69a9('0x50');this[_0x69a9('0xb')][_0x2db88b[_0x69a9('0x24')]][_0x8176dd]['reason']=_0x69a9('0x50');logger[_0x69a9('0x27')](_0x69a9('0x51'),_0x2db88b[_0x69a9('0x24')],util[_0x69a9('0x28')](this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd],{'showHidden':![],'depth':null}));ami[_0x69a9('0x1d')](_0x69a9('0x52'),this[_0x69a9('0xb')][_0x2db88b['uniqueid']][_0x8176dd]);}}}}}}catch(_0x364657){logger['error']('[%s][voiceAgentReport][agentconnect]',_0x2db88b[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x364657,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x69a9('0x14')]=function(_0x113940){try{if(this[_0x69a9('0x1f')](_0x113940)){logger[_0x69a9('0x27')](_0x69a9('0x53'),_0x113940[_0x69a9('0x24')],util['inspect'](_0x113940,{'showHidden':![],'depth':null}));if(this[_0x69a9('0xb')][_0x113940['uniqueid']]&&this['channels'][_0x113940[_0x69a9('0x24')]][_0x113940['destuniqueid']]){logger[_0x69a9('0x22')](_0x69a9('0x54'),_0x113940['uniqueid'],_0x113940[_0x69a9('0x25')],_0x113940[_0x69a9('0x26')]);this[_0x69a9('0xb')][_0x113940[_0x69a9('0x24')]][_0x113940[_0x69a9('0x26')]][_0x69a9('0x13')]=!![];this[_0x69a9('0xb')][_0x113940[_0x69a9('0x24')]][_0x113940[_0x69a9('0x26')]][_0x69a9('0x4e')]=moment()[_0x69a9('0x29')](_0x69a9('0x2a'));this[_0x69a9('0xb')][_0x113940[_0x69a9('0x24')]][_0x113940[_0x69a9('0x26')]]['lastevent']=_0x69a9('0x55');this[_0x69a9('0xb')][_0x113940['uniqueid']][_0x113940[_0x69a9('0x26')]]['reason']=_0x69a9('0x55');logger['debug'](_0x69a9('0x56'),_0x113940[_0x69a9('0x24')],util['inspect'](this[_0x69a9('0xb')][_0x113940[_0x69a9('0x24')]][_0x113940[_0x69a9('0x26')]],{'showHidden':![],'depth':null}));ami['emit'](_0x69a9('0x57'),this[_0x69a9('0xb')][_0x113940['uniqueid']][_0x113940[_0x69a9('0x26')]]);}}}catch(_0x3ffb6a){logger[_0x69a9('0x39')](_0x69a9('0x58'),_0x113940[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x3ffb6a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x59')]=function(_0x22c6af){try{if(this[_0x69a9('0x1f')](_0x22c6af)){logger['debug']('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x22c6af['uniqueid'],util['inspect'](_0x22c6af,{'showHidden':![],'depth':null}));if(this['channels'][_0x22c6af[_0x69a9('0x24')]]){for(var _0x23025b in this[_0x69a9('0xb')][_0x22c6af[_0x69a9('0x24')]]){if(this['channels'][_0x22c6af[_0x69a9('0x24')]][_0x69a9('0x3b')](_0x23025b)&&!this['channels'][_0x22c6af[_0x69a9('0x24')]][_0x23025b][_0x69a9('0x13')]&&!this[_0x69a9('0xb')][_0x22c6af['uniqueid']][_0x23025b][_0x69a9('0x4c')]){logger[_0x69a9('0x22')](_0x69a9('0x5a'),_0x22c6af[_0x69a9('0x24')],this[_0x69a9('0xb')][_0x22c6af[_0x69a9('0x24')]][_0x23025b][_0x69a9('0x25')],_0x23025b);this[_0x69a9('0xb')][_0x22c6af[_0x69a9('0x24')]][_0x23025b][_0x69a9('0x13')]=!![];this[_0x69a9('0xb')][_0x22c6af[_0x69a9('0x24')]][_0x23025b][_0x69a9('0x4e')]=moment()[_0x69a9('0x29')](_0x69a9('0x2a'));this[_0x69a9('0xb')][_0x22c6af[_0x69a9('0x24')]][_0x23025b][_0x69a9('0x42')]=_0x69a9('0x5b');this[_0x69a9('0xb')][_0x22c6af['uniqueid']][_0x23025b]['reason']=_0x69a9('0x5b');logger[_0x69a9('0x27')](_0x69a9('0x5c'),_0x22c6af[_0x69a9('0x24')],util['inspect'](this[_0x69a9('0xb')][_0x22c6af[_0x69a9('0x24')]][_0x23025b],{'showHidden':![],'depth':null}));ami[_0x69a9('0x1d')](_0x69a9('0x5d'),this['channels'][_0x22c6af[_0x69a9('0x24')]][_0x23025b]);}}}}}catch(_0x427f23){logger[_0x69a9('0x39')]('[%s][voiceAgentReport][queuecallerabandon]',_0x22c6af[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x427f23,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x5e')]=function(_0x4a11b5){try{if(this['isNotNull'](_0x4a11b5)){logger[_0x69a9('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x4a11b5[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x4a11b5,{'showHidden':![],'depth':null}));if(this[_0x69a9('0xb')][_0x4a11b5['uniqueid']]){for(var _0x3b0a80 in this['channels'][_0x4a11b5['uniqueid']]){if(this[_0x69a9('0xb')][_0x4a11b5['uniqueid']][_0x69a9('0x3b')](_0x3b0a80)){if(this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80][_0x69a9('0x3d')]&&!this[_0x69a9('0xb')][_0x4a11b5['uniqueid']][_0x3b0a80][_0x69a9('0x4c')]){logger[_0x69a9('0x22')](_0x69a9('0x5f'),_0x4a11b5[_0x69a9('0x24')],this[_0x69a9('0xb')][_0x4a11b5['uniqueid']][_0x3b0a80]['membername'],_0x3b0a80);this[_0x69a9('0xb')][_0x4a11b5['uniqueid']][_0x3b0a80]['agentcomplete']=!![];this[_0x69a9('0xb')][_0x4a11b5['uniqueid']][_0x3b0a80][_0x69a9('0x60')]=moment()[_0x69a9('0x29')](_0x69a9('0x2a'));this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80]['lastevent']=_0x69a9('0x61');this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80][_0x69a9('0x62')]=_0x4a11b5['reason']==_0x69a9('0x63')?_0x69a9('0x64'):_0x4a11b5[_0x69a9('0x62')];this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80][_0x69a9('0x65')]=_0x4a11b5[_0x69a9('0x65')];if(this[_0x69a9('0xc')][_0x4a11b5[_0x69a9('0x2c')]]&&this['voiceQueues'][_0x4a11b5[_0x69a9('0x2c')]][_0x69a9('0x66')]){this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80][_0x69a9('0x67')]=this[_0x69a9('0xc')][_0x4a11b5[_0x69a9('0x2c')]]['acwTimeout'];this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80]['agentacw']=!![];}this[_0x69a9('0xd')][_0x4a11b5['interface']]=_[_0x69a9('0x32')](this[_0x69a9('0xd')][_0x4a11b5[_0x69a9('0x46')]],[_0x69a9('0x2c'),_0x69a9('0x48')]);logger[_0x69a9('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x4a11b5[_0x69a9('0x24')],util[_0x69a9('0x28')](this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80],{'showHidden':![],'depth':null}));ami['emit'](_0x69a9('0x68'),this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80]);logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x4a11b5[_0x69a9('0x24')],util[_0x69a9('0x28')](this['channels'][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80],{'showHidden':![],'depth':null}));this[_0x69a9('0x1d')](util[_0x69a9('0x29')](_0x69a9('0x37'),_0x4a11b5[_0x69a9('0x25')]),'user:agentcomplete',this[_0x69a9('0xb')][_0x4a11b5[_0x69a9('0x24')]][_0x3b0a80]);}}}}}}catch(_0x4e5c67){logger[_0x69a9('0x39')](_0x69a9('0x69'),_0x4a11b5['uniqueid'],util['inspect'](_0x4e5c67,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x17')]=function(_0x375744){try{if(this[_0x69a9('0x1f')](_0x375744)){logger[_0x69a9('0x27')](_0x69a9('0x6a'),_0x375744[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x375744,{'showHidden':![],'depth':null}));this[_0x69a9('0x6b')](_0x375744[_0x69a9('0x24')],_[_0x69a9('0x6c')](_0x375744[_0x69a9('0x6d')])[0x0],_0x375744['value']);if(this['channels'][_0x375744[_0x69a9('0x24')]]){for(var _0x4b2770 in this[_0x69a9('0xb')][_0x375744[_0x69a9('0x24')]]){if(this[_0x69a9('0xb')][_0x375744[_0x69a9('0x24')]]['hasOwnProperty'](_0x4b2770)){logger['info'](_0x69a9('0x6e'),_0x375744[_0x69a9('0x24')],_0x4b2770,_[_0x69a9('0x6c')](_0x375744[_0x69a9('0x6d')])[0x0],_0x375744[_0x69a9('0x6f')]);if(_[_0x69a9('0x20')](this['channels'][_0x375744[_0x69a9('0x24')]][_0x4b2770]['variables'])){this[_0x69a9('0xb')][_0x375744[_0x69a9('0x24')]][_0x4b2770][_0x69a9('0xe')]={};}this[_0x69a9('0xb')][_0x375744['uniqueid']][_0x4b2770][_0x69a9('0xe')]=this['variables'][_0x375744[_0x69a9('0x24')]];}}}}}catch(_0x7fa8a7){logger[_0x69a9('0x39')](_0x69a9('0x70'),_0x375744[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x7fa8a7,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x69a9('0x6b')]=function(_0xae1ef3,_0x5464bb,_0x337d0c){var _0x23c283=[_0x69a9('0x71'),'rtpaudioqosbridged',_0x69a9('0x72'),_0x69a9('0x73'),'rtpaudioqosloss',_0x69a9('0x74'),_0x69a9('0x75'),_0x69a9('0x76'),_0x69a9('0x77'),_0x69a9('0x78'),_0x69a9('0x79'),_0x69a9('0x7a'),'membercalls',_0x69a9('0x7b'),_0x69a9('0x7c'),_0x69a9('0x7d'),'membername',_0x69a9('0x7e'),_0x69a9('0x7f')];if(!_['isNil'](_0x5464bb)&&!_[_0x69a9('0x80')](_0x23c283,_0x5464bb)){if(_[_0x69a9('0x20')](this['variables'][_0xae1ef3])){this[_0x69a9('0xe')][_0xae1ef3]={};}this[_0x69a9('0xe')][_0xae1ef3][_0x5464bb]=_0x337d0c;}};VoiceAgentReport[_0x69a9('0x1e')][_0x69a9('0x81')]=function(_0x46807b){try{if(this[_0x69a9('0x1f')](_0x46807b)){logger[_0x69a9('0x27')](_0x69a9('0x82'),_0x46807b[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x46807b,{'showHidden':![],'depth':null}));if(this['channels'][_0x46807b[_0x69a9('0x24')]]){for(var _0x37fb06 in this[_0x69a9('0xb')][_0x46807b[_0x69a9('0x24')]]){if(this['channels'][_0x46807b[_0x69a9('0x24')]][_0x69a9('0x3b')](_0x37fb06)){if(this[_0x69a9('0xb')][_0x46807b['uniqueid']][_0x37fb06][_0x69a9('0x62')]==_0x69a9('0x63')&&this['channels'][_0x46807b[_0x69a9('0x24')]][_0x37fb06][_0x69a9('0x4c')]){logger[_0x69a9('0x22')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x46807b[_0x69a9('0x24')],_0x37fb06);this[_0x69a9('0xb')][_0x46807b[_0x69a9('0x24')]][_0x37fb06]['agentcompleteAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x69a9('0x27')](_0x69a9('0x83'),_0x46807b['uniqueid'],util[_0x69a9('0x28')](_[_0x69a9('0x84')](this[_0x69a9('0xb')][_0x46807b[_0x69a9('0x24')]]),{'showHidden':![],'depth':null}));ami[_0x69a9('0x1d')](_0x69a9('0x85'),_['values'](this['channels'][_0x46807b[_0x69a9('0x24')]]));delete this[_0x69a9('0xb')][_0x46807b[_0x69a9('0x24')]];}if(this[_0x69a9('0xe')][_0x46807b[_0x69a9('0x24')]]){delete this[_0x69a9('0xe')][_0x46807b[_0x69a9('0x24')]];}}}catch(_0x372876){logger[_0x69a9('0x39')](_0x69a9('0x86'),_0x46807b['uniqueid'],util[_0x69a9('0x28')](_0x372876,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x69a9('0x87')]=function(_0x5f4675){try{if(this[_0x69a9('0x1f')](_0x5f4675)){logger[_0x69a9('0x27')](_0x69a9('0x88'),_0x5f4675[_0x69a9('0x24')],util['inspect'](_0x5f4675,{'showHidden':![],'depth':null}));if(this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]]){for(var _0x2cfb25 in this['channels'][_0x5f4675[_0x69a9('0x89')]]){if(this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]][_0x69a9('0x3b')](_0x2cfb25)){if(_0x5f4675['origtransfereruniqueid']===_0x2cfb25){logger[_0x69a9('0x22')](_0x69a9('0x8a'),_0x5f4675[_0x69a9('0x24')],this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]][_0x2cfb25][_0x69a9('0x25')],_0x2cfb25);var _0x535132=moment();this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]][_0x2cfb25][_0x69a9('0x4c')]=!![];this[_0x69a9('0xb')][_0x5f4675['transfereeuniqueid']][_0x2cfb25][_0x69a9('0x60')]=moment()[_0x69a9('0x29')](_0x69a9('0x2a'));this[_0x69a9('0xb')][_0x5f4675['transfereeuniqueid']][_0x2cfb25]['lastevent']=_0x69a9('0x61');this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]][_0x2cfb25][_0x69a9('0x62')]=_0x69a9('0x63');this['channels'][_0x5f4675[_0x69a9('0x89')]][_0x2cfb25][_0x69a9('0x65')]=_0x535132['diff'](this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]][_0x2cfb25][_0x69a9('0x3d')],_0x69a9('0x8b'));}}}}if(this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x8c')]]){var _0x2a367d=this['channels'][_0x5f4675[_0x69a9('0x8c')]];this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x8c')]]=this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]];this[_0x69a9('0xb')][_0x5f4675[_0x69a9('0x89')]]=_0x2a367d;}}}catch(_0x237904){logger['error'](_0x69a9('0x8d'),_0x5f4675[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x237904,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x69a9('0x8e')]=function(_0x1eeb32){try{if(this[_0x69a9('0x1f')](_0x1eeb32)){logger[_0x69a9('0x27')](_0x69a9('0x8f'),_0x1eeb32[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x1eeb32,{'showHidden':![],'depth':null}));if(this[_0x69a9('0xb')][_0x1eeb32[_0x69a9('0x89')]]){for(var _0x4a522e in this[_0x69a9('0xb')][_0x1eeb32[_0x69a9('0x89')]]){if(this[_0x69a9('0xb')][_0x1eeb32[_0x69a9('0x89')]]['hasOwnProperty'](_0x4a522e)){if(_0x1eeb32[_0x69a9('0x90')]===_0x4a522e){logger[_0x69a9('0x22')](_0x69a9('0x91'),_0x1eeb32['uniqueid'],this[_0x69a9('0xb')][_0x1eeb32[_0x69a9('0x89')]][_0x4a522e][_0x69a9('0x25')],_0x4a522e);var _0x407c54=moment();this[_0x69a9('0xb')][_0x1eeb32['transfereeuniqueid']][_0x4a522e][_0x69a9('0x4c')]=!![];this[_0x69a9('0xb')][_0x1eeb32[_0x69a9('0x89')]][_0x4a522e][_0x69a9('0x60')]=_0x407c54;this['channels'][_0x1eeb32[_0x69a9('0x89')]][_0x4a522e][_0x69a9('0x42')]=_0x69a9('0x61');this[_0x69a9('0xb')][_0x1eeb32[_0x69a9('0x89')]][_0x4a522e]['reason']=_0x69a9('0x63');this[_0x69a9('0xb')][_0x1eeb32['transfereeuniqueid']][_0x4a522e][_0x69a9('0x65')]=_0x407c54['diff'](this['channels'][_0x1eeb32[_0x69a9('0x89')]][_0x4a522e]['agentconnectAt'],'seconds');}}}}}}catch(_0x3e080d){logger[_0x69a9('0x39')](_0x69a9('0x92'),_0x1eeb32[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x3e080d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x69a9('0x1e')]['syncMusicOnHoldStart']=function(_0x2daee3){var _0x36ea5a='';try{if(this[_0x69a9('0x1f')](_0x2daee3)){logger[_0x69a9('0x27')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x2daee3['uniqueid'],util['inspect'](_0x2daee3,{'showHidden':![],'depth':null}));if(_0x2daee3[_0x69a9('0x93')]){_0x36ea5a=_0x2daee3[_0x69a9('0x93')]['substring'](0x0,_0x2daee3['channel']['lastIndexOf']('-'));if(this['agents'][_0x36ea5a]){logger[_0x69a9('0x22')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x2daee3[_0x69a9('0x24')],_0x36ea5a);this[_0x69a9('0xd')][_0x36ea5a][_0x69a9('0x94')]=!![];}}}}catch(_0x524b06){logger['error'](_0x69a9('0x95'),_0x2daee3[_0x69a9('0x24')],util['inspect'](_0x524b06,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x69a9('0x1b')]=function(_0x161cd2){var _0x1fcd70='';try{if(this[_0x69a9('0x1f')](_0x161cd2)){logger[_0x69a9('0x27')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x161cd2[_0x69a9('0x24')],util['inspect'](_0x161cd2,{'showHidden':![],'depth':null}));if(_0x161cd2[_0x69a9('0x93')]){_0x1fcd70=_0x161cd2['channel'][_0x69a9('0x96')](0x0,_0x161cd2[_0x69a9('0x93')][_0x69a9('0x97')]('-'));if(this[_0x69a9('0xd')][_0x1fcd70]){logger[_0x69a9('0x22')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x161cd2[_0x69a9('0x24')],_0x1fcd70);this[_0x69a9('0xd')][_0x1fcd70][_0x69a9('0x94')]=![];}}}}catch(_0x3b45b0){logger[_0x69a9('0x39')]('[%s][voiceAgentReport][musiconholdstop]',_0x161cd2[_0x69a9('0x24')],util[_0x69a9('0x28')](_0x3b45b0,{'showHidden':![],'depth':null}));}};module[_0x69a9('0x98')]=VoiceAgentReport;
\ No newline at end of file
index dd7a58a..d29b708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0f5=['diff','billableseconds','holdtime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','undefined','getSettings','stopRecordingOnTransfer','StopMixMonitor','catch','webbar:stopmonitors','event','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','BlindTransfer','transfererchannel','syncMusicOnHoldStart','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','unavailable','ringinuse','set','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncAttendedTransfer','blindtransfer','musiconholdstart','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','isNotNull','isUndefined','prototype','emit','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','pick','keys','context','channel','xcally-motion-preview','split','destconnectedlinenum','connectedlinenum','format','user:agentconnect','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','exten','starttime','disposition','toNumber','channelstate','merge','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:%s','name','accountcode','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','appdata','applicationdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','lastdata','startsWith','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','answertime','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','monitor','endsWith','.wav49','replace','.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','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','mixmonitor_filename','sipcalllinkedid','cause-txt'];(function(_0x9f0a08,_0x185a5a){var _0x2e4203=function(_0x9207cd){while(--_0x9207cd){_0x9f0a08['push'](_0x9f0a08['shift']());}};_0x2e4203(++_0x185a5a);}(_0xd0f5,0x1be));var _0x5d0f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd0f5[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x5d0f('0x0'));var _=require(_0x5d0f('0x1'));var moment=require(_0x5d0f('0x2'));var util=require('util');var path=require(_0x5d0f('0x3'));var Redis=require(_0x5d0f('0x4'));var config=require(_0x5d0f('0x5'));var logger=require(_0x5d0f('0x6'))(_0x5d0f('0x7'));var ami=require(_0x5d0f('0x8'));var Channel=require(_0x5d0f('0x9'));var RpcSetting=require(_0x5d0f('0xa'));var statusDesc=[_0x5d0f('0xb'),_0x5d0f('0xc'),_0x5d0f('0xd'),'busy','invalid',_0x5d0f('0xe'),'ringing',_0x5d0f('0xf'),'onhold'];var applications=[_0x5d0f('0x10'),'queue',_0x5d0f('0x11'),_0x5d0f('0x12'),_0x5d0f('0x13'),'voicemail'];var dispositions=[_0x5d0f('0x14'),_0x5d0f('0x15'),_0x5d0f('0x15'),_0x5d0f('0x14'),_0x5d0f('0x14'),_0x5d0f('0x14'),_0x5d0f('0x16'),_0x5d0f('0x17'),'FAILED',_0x5d0f('0x15'),'FAILED'];var actions={};config['redis']=_[_0x5d0f('0x18')](config[_0x5d0f('0x19')],{'host':_0x5d0f('0x1a'),'port':0x18eb});var io=require(_0x5d0f('0x1b'))(new Redis(config[_0x5d0f('0x19')]));function VoiceCallReport(_0x3343e3){this[_0x5d0f('0x1c')]=_0x3343e3['channels'];this[_0x5d0f('0x1d')]=_0x3343e3['agents'];this[_0x5d0f('0x1e')]={};ami['on'](_0x5d0f('0x1f'),this[_0x5d0f('0x20')][_0x5d0f('0x21')](this));ami['on']('newexten',this[_0x5d0f('0x20')][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x22'),this[_0x5d0f('0x23')][_0x5d0f('0x21')](this));ami['on']('newstate',this[_0x5d0f('0x24')]['bind'](this));ami['on'](_0x5d0f('0x25'),this[_0x5d0f('0x26')][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x27'),this[_0x5d0f('0x28')]['bind'](this));ami['on'](_0x5d0f('0x29'),this['syncNewCallerId'][_0x5d0f('0x21')](this));ami['on']('attendedtransfer',this[_0x5d0f('0x2a')]['bind'](this));ami['on'](_0x5d0f('0x2b'),this['syncBlindTransfer'][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x2c'),this['syncMusicOnHoldStart'][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x2d'),this['syncMusicOnHoldStop'][_0x5d0f('0x21')](this));try{logger[_0x5d0f('0x2e')](_0x5d0f('0x2f'));ami[_0x5d0f('0x30')]();}catch(_0x191aec){logger[_0x5d0f('0x31')]('[voiceCallReport][coreshowchannels]',util['inspect'](_0x191aec,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x5d0f('0x32')]=function(_0x520561){return _0x520561!==null&&!_[_0x5d0f('0x33')](_0x520561);};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x35')]=function(_0x2c4638,_0x38cef7,_0x479cab){io['to'](_0x2c4638)[_0x5d0f('0x35')](_0x38cef7,_0x479cab);};VoiceCallReport['prototype']['syncNewCallerId']=function(_0x5837ae){try{if(this['isNotNull'](_0x5837ae)){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x5837ae[_0x5d0f('0x36')],_0x5837ae[_0x5d0f('0x37')],_0x5837ae[_0x5d0f('0x38')]);logger[_0x5d0f('0x39')](_0x5d0f('0x3a'),_0x5837ae[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5837ae,{'showHidden':![],'depth':null}));if(_0x5837ae[_0x5d0f('0x36')]===_0x5837ae[_0x5d0f('0x3c')]){if(!_['isUndefined'](this[_0x5d0f('0x1c')][_0x5837ae[_0x5d0f('0x36')]])){_['merge'](this[_0x5d0f('0x1c')][_0x5837ae[_0x5d0f('0x36')]],_[_0x5d0f('0x3d')](_0x5837ae,_[_0x5d0f('0x3e')](this[_0x5d0f('0x1c')][_0x5837ae['uniqueid']])));}}if(_0x5837ae[_0x5d0f('0x3f')]==='from-sip'){if(this[_0x5d0f('0x1d')][_0x5837ae[_0x5d0f('0x40')]['split']('-')[0x0]]){if(_0x5837ae['exten']==_0x5d0f('0x41')){this[_0x5d0f('0x1d')][_0x5837ae[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x43')]=_0x5837ae[_0x5d0f('0x44')];this['emit'](util[_0x5d0f('0x45')]('user:%s',this[_0x5d0f('0x1d')][_0x5837ae[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['name']),_0x5d0f('0x46'),{'destaccountcode':this['agents'][_0x5837ae[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x5837ae[_0x5d0f('0x44')]});}}}}}catch(_0x117323){logger[_0x5d0f('0x31')](_0x5d0f('0x47'),_0x5837ae[_0x5d0f('0x36')],util['inspect'](_0x117323,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x23')]=function(_0xcd08bb){try{if(this[_0x5d0f('0x32')](_0xcd08bb)){logger[_0x5d0f('0x39')](_0x5d0f('0x48'),_0xcd08bb['uniqueid'],util[_0x5d0f('0x3b')](_0xcd08bb,{'showHidden':![],'depth':null}));if(_0xcd08bb['uniqueid']===_0xcd08bb[_0x5d0f('0x3c')]&&_0xcd08bb[_0x5d0f('0x40')]!=_0x5d0f('0x49')){if(_['isUndefined'](this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]])){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0xcd08bb[_0x5d0f('0x36')],_0xcd08bb[_0x5d0f('0x3f')],_0xcd08bb[_0x5d0f('0x4a')]);this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]]=new Channel();this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]][_0x5d0f('0x4b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]][_0x5d0f('0x4c')]=dispositions[_[_0x5d0f('0x4d')](_0xcd08bb[_0x5d0f('0x4e')])];_[_0x5d0f('0x4f')](this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]],_[_0x5d0f('0x3d')](_0xcd08bb,_[_0x5d0f('0x3e')](this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]])));if(_0xcd08bb[_0x5d0f('0x3f')]===_0x5d0f('0x50')){if(this['agents'][_0xcd08bb[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]){if(_[_0x5d0f('0x33')](this[_0x5d0f('0x1d')][_0xcd08bb['channel']['split']('-')[0x0]]['destconnectedlinenum'])){this[_0x5d0f('0x1d')][_0xcd08bb['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x43')]=_0xcd08bb[_0x5d0f('0x4a')];logger[_0x5d0f('0x39')](_0x5d0f('0x51'),_0xcd08bb[_0x5d0f('0x36')],util[_0x5d0f('0x3b')]({'destaccountcode':this[_0x5d0f('0x1d')][_0xcd08bb['channel'][_0x5d0f('0x42')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xcd08bb['exten']},{'showHidden':![],'depth':null}));this[_0x5d0f('0x35')](util['format'](_0x5d0f('0x52'),this[_0x5d0f('0x1d')][_0xcd08bb[_0x5d0f('0x40')]['split']('-')[0x0]][_0x5d0f('0x53')]),_0x5d0f('0x46'),{'destaccountcode':this[_0x5d0f('0x1d')][_0xcd08bb['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')],'destconnectedlinenum':_0xcd08bb[_0x5d0f('0x4a')]});}}}}}}}catch(_0x492968){logger[_0x5d0f('0x31')](_0x5d0f('0x55'),_0xcd08bb[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x492968,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewExten']=function(_0x2ee210){try{if(this[_0x5d0f('0x32')](_0x2ee210)){logger['debug'](_0x5d0f('0x56'),_0x2ee210[_0x5d0f('0x36')],util['inspect'](_0x2ee210,{'showHidden':![],'depth':null}));if(_0x2ee210[_0x5d0f('0x36')]===_0x2ee210['linkedid']&&_0x2ee210[_0x5d0f('0x4a')]!='h'&&_0x2ee210['channel']!=_0x5d0f('0x49')){_0x2ee210['application']=_0x2ee210[_0x5d0f('0x57')][_0x5d0f('0x58')]();_0x2ee210['applicationdata']=_0x2ee210[_0x5d0f('0x59')]&&_0x2ee210[_0x5d0f('0x59')]['startsWith']('CDR(routeAlias)')?_0x2ee210[_0x5d0f('0x59')]:(_0x2ee210[_0x5d0f('0x59')]||_0x2ee210[_0x5d0f('0x5a')])[_0x5d0f('0x58')]();logger['info'](_0x5d0f('0x5b'),_0x2ee210[_0x5d0f('0x36')],_0x2ee210[_0x5d0f('0x57')],_0x2ee210['applicationdata']);if(_[_0x5d0f('0x33')](this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']])){this['channels'][_0x2ee210[_0x5d0f('0x36')]]=new Channel();this[_0x5d0f('0x1c')][_0x2ee210[_0x5d0f('0x36')]][_0x5d0f('0x4b')]=_0x2ee210[_0x5d0f('0x5c')]?moment()['subtract'](moment[_0x5d0f('0x5c')](_0x2ee210[_0x5d0f('0x5c')])['seconds'](),_0x5d0f('0x5d'))['format'](_0x5d0f('0x5e')):moment()[_0x5d0f('0x45')](_0x5d0f('0x5e'));this[_0x5d0f('0x1c')][_0x2ee210[_0x5d0f('0x36')]][_0x5d0f('0x4c')]='NO\x20ANSWER';}_['merge'](this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']],_[_0x5d0f('0x3d')](_0x2ee210,_[_0x5d0f('0x3e')](this['channels'][_0x2ee210[_0x5d0f('0x36')]])));if(_['includes'](applications,_0x2ee210['application'])){this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']]['lastapplication']=_0x2ee210[_0x5d0f('0x57')];this[_0x5d0f('0x1c')][_0x2ee210[_0x5d0f('0x36')]][_0x5d0f('0x5f')]=_0x2ee210[_0x5d0f('0x5a')];if(_0x2ee210[_0x5d0f('0x57')]===_0x5d0f('0x10')&&_[_0x5d0f('0x60')](_0x2ee210[_0x5d0f('0x5a')][_0x5d0f('0x58')](),'cdr(')){var _0x187657=_0x2ee210[_0x5d0f('0x5a')][_0x5d0f('0x42')]('=');var _0x3cb248=_0x187657[0x0][_0x5d0f('0x58')]()[_0x5d0f('0x61')](/cdr\((.*)\)/);if(_0x3cb248){this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']][_0x3cb248[0x1]]=_0x187657[0x1];}}else if(_0x2ee210[_0x5d0f('0x57')]==='queue'){this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']][_0x5d0f('0x62')]=_0x2ee210['applicationdata'][_0x5d0f('0x42')](',')[0x0];}}}}}catch(_0x5ac3a5){logger[_0x5d0f('0x31')](_0x5d0f('0x63'),_0x2ee210[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5ac3a5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x24')]=function(_0xce4fd5){try{if(this[_0x5d0f('0x32')](_0xce4fd5)){logger['info'](_0x5d0f('0x64'),_0xce4fd5['uniqueid'],_0xce4fd5[_0x5d0f('0x3c')],_0xce4fd5[_0x5d0f('0x37')],_0xce4fd5[_0x5d0f('0x38')]);logger[_0x5d0f('0x39')]('[%s][voiceCallReport][newstate]\x20event:',_0xce4fd5['uniqueid'],util[_0x5d0f('0x3b')](_0xce4fd5,{'showHidden':![],'depth':null}));if(_0xce4fd5[_0x5d0f('0x36')]!==_0xce4fd5['linkedid']){if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]]){if(_0xce4fd5[_0x5d0f('0x4e')]==='6'){if(!this[_0x5d0f('0x1c')][_0xce4fd5['linkedid']][_0x5d0f('0x65')]){var _0x592e83=moment();this['channels'][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x65')]=!![];this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x66')]=_0x592e83[_0x5d0f('0x45')](_0x5d0f('0x5e'));if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x4b')]){this['channels'][_0xce4fd5[_0x5d0f('0x3c')]]['holdtime']=_0x592e83['diff'](this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x4b')],_0x5d0f('0x5d'));}}this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x3c')]=_0xce4fd5[_0x5d0f('0x36')];if(_0xce4fd5['calleridnum']!=='xcally-motion-preview'){this['channels'][_0xce4fd5['linkedid']][_0x5d0f('0x44')]=_0xce4fd5[_0x5d0f('0x38')];}this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x67')]=_0xce4fd5['calleridname'];this[_0x5d0f('0x1c')][_0xce4fd5['linkedid']][_0x5d0f('0x68')]=_0xce4fd5[_0x5d0f('0x40')];this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]]['disposition']=dispositions[_[_0x5d0f('0x4d')](_0xce4fd5[_0x5d0f('0x4e')])];if(this[_0x5d0f('0x1d')][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]]){this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x69')]=this['agents'][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['id'];this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x6a')]=this[_0x5d0f('0x1d')][_0xce4fd5[_0x5d0f('0x40')]['split']('-')[0x0]]['name'];}}}}else{if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]]){if(_0xce4fd5[_0x5d0f('0x4e')]==='6'){if(this['agents'][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]){this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]][_0x5d0f('0x69')]=this[_0x5d0f('0x1d')][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]]['id'];this[_0x5d0f('0x1c')][_0xce4fd5['uniqueid']]['membername']=this[_0x5d0f('0x1d')][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x53')];}}}}if(_0xce4fd5[_0x5d0f('0x4e')]==='6'&&_0xce4fd5['context']==='from-sip'){if(this['agents'][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]]){this[_0x5d0f('0x1d')][_0xce4fd5['channel']['split']('-')[0x0]]['destconnectedlinenum']=_0xce4fd5[_0x5d0f('0x4a')];var _0x599c80;if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]])_0x599c80=this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]][_0x5d0f('0x6b')];else if(this['channels'][_0xce4fd5[_0x5d0f('0x3c')]])_0x599c80=this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x6b')];logger[_0x5d0f('0x39')](_0x5d0f('0x6c'),_0xce4fd5[_0x5d0f('0x36')],util[_0x5d0f('0x3b')]({'destaccountcode':this[_0x5d0f('0x1d')][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')],'destconnectedlinenum':_0xce4fd5[_0x5d0f('0x4a')],'routealias':_0x599c80},{'showHidden':![],'depth':null}));this[_0x5d0f('0x35')](util['format'](_0x5d0f('0x52'),this[_0x5d0f('0x1d')][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x53')]),_0x5d0f('0x46'),{'destaccountcode':this['agents'][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')],'destconnectedlinenum':_0xce4fd5[_0x5d0f('0x4a')],'routealias':_0x599c80});}}}}catch(_0x339a44){logger[_0x5d0f('0x31')](_0x5d0f('0x6d'),_0xce4fd5[_0x5d0f('0x36')],util['inspect'](_0x339a44,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x6e')]=function(_0x1d7b15,_0xdaab8d){try{if(this[_0x5d0f('0x1c')][_0x1d7b15]){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x1d7b15,_0xdaab8d);this[_0x5d0f('0x1c')][_0x1d7b15][_0x5d0f('0x6f')]=!![];if(_[_0x5d0f('0x70')](_0xdaab8d,_0x5d0f('0x71'))){_0xdaab8d=_0xdaab8d[_0x5d0f('0x72')](_0x5d0f('0x71'),_0x5d0f('0x73'));}this[_0x5d0f('0x1c')][_0x1d7b15]['monitorFilename']=_0xdaab8d;var _0x343918=_[_0x5d0f('0x74')](this[_0x5d0f('0x1c')][_0x1d7b15][_0x5d0f('0x75')],{'filename':_0xdaab8d});if(_[_0x5d0f('0x76')](_0x343918)){this[_0x5d0f('0x1c')][_0x1d7b15]['monitors'][_0x5d0f('0x77')]({'filename':_0xdaab8d,'createdAt':moment()['format'](_0x5d0f('0x5e')),'mixmonitorid':'','status':_0x5d0f('0x78')});}}}catch(_0x42710e){logger[_0x5d0f('0x31')](_0x5d0f('0x79'),_0x1d7b15,util[_0x5d0f('0x3b')](_0x42710e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x26')]=function(_0x13a347){try{if(this['isNotNull'](_0x13a347)){logger['debug'](_0x5d0f('0x7a'),_0x13a347[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x13a347,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]]&&_0x13a347[_0x5d0f('0x40')]!=_0x5d0f('0x49')){if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')])){if(this['isNotNull'](_0x13a347[_0x5d0f('0x7b')]['mixmonitor_filename'])){logger[_0x5d0f('0x2e')](_0x5d0f('0x7c'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x6e')](_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);}else if(this['isNotNull'](_0x13a347['variable'][_0x5d0f('0x7e')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x7f'),_0x13a347['uniqueid'],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347['uniqueid']][_0x5d0f('0x38')]=_0x13a347['value'];}else if(this['isNotNull'](_0x13a347['variable']['xmd-callerid'])){logger['info'](_0x5d0f('0x80'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]]['callerid']=_0x13a347['value'];}else if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x81')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x82'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this['channels'][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x83')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347['variable'][_0x5d0f('0x84')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x85'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')][_0x5d0f('0x42')](',')[0x0]);this[_0x5d0f('0x1c')][_0x13a347['uniqueid']]['queue']=_0x13a347[_0x5d0f('0x7d')][_0x5d0f('0x42')](',')[0x0];}else if(this['isNotNull'](_0x13a347['variable']['xmd-originatecalleridnum'])){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x86')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x87')])){logger['info'](_0x5d0f('0x88'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x89')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347['variable'][_0x5d0f('0x8a')])){logger['info'](_0x5d0f('0x8b'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x8c')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x8d')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x8e'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x62')]=_0x13a347[_0x5d0f('0x7d')];}else if(this['isNotNull'](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x8f')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x90'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]]['sipcalluniqueid']=_0x13a347[_0x5d0f('0x7d')];}}}else if(this[_0x5d0f('0x32')](_0x13a347['variable'][_0x5d0f('0x91')])){if(_0x13a347['value']){var _0x29fe74=path['parse'](_0x13a347[_0x5d0f('0x7d')])[_0x5d0f('0x53')];logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x29fe74,_0x13a347['value']);this['syncMixMonitorFilename'](_0x29fe74,_0x13a347['value']);}}else if(this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x3c')]]){if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')])){if(this['isNotNull'](_0x13a347[_0x5d0f('0x7b')]['sipcallid'])){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x13a347[_0x5d0f('0x3c')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x3c')]][_0x5d0f('0x92')]=_0x13a347['value'];}}}}}catch(_0x51ab5b){logger[_0x5d0f('0x31')]('[%s][voiceCallReport][varset]',_0x13a347[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x51ab5b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x28')]=function(_0x51c080){try{if(this['isNotNull'](_0x51c080)){logger[_0x5d0f('0x39')]('[%s][voiceCallReport][hangup]\x20event:',_0x51c080['uniqueid'],util['inspect'](_0x51c080,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x51c080['uniqueid']]){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x51c080[_0x5d0f('0x36')],_0x51c080[_0x5d0f('0x93')]);var _0x503c4a=moment();this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]]['endtime']=_0x503c4a['format'](_0x5d0f('0x5e'));this['channels'][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x5c')]=_0x503c4a[_0x5d0f('0x94')](this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x4b')],_0x5d0f('0x5d'));if(this['channels'][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x65')]){this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x95')]=_0x503c4a['diff'](this['channels'][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x66')],_0x5d0f('0x5d'));this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x96')]=this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x5c')]-this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x95')];}if(_0x51c080[_0x5d0f('0x3f')]===_0x5d0f('0x50')){if(this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]){this['agents'][_0x51c080[_0x5d0f('0x40')]['split']('-')[0x0]]=_[_0x5d0f('0x97')](this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]],[_0x5d0f('0x43')]);logger[_0x5d0f('0x39')](_0x5d0f('0x98'),_0x51c080[_0x5d0f('0x36')],util['inspect']({'id':this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['id'],'destaccountcode':this[_0x5d0f('0x1d')][_0x51c080['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')]},{'showHidden':![],'depth':null}));this[_0x5d0f('0x35')](util[_0x5d0f('0x45')](_0x5d0f('0x52'),this['agents'][_0x51c080['channel']['split']('-')[0x0]][_0x5d0f('0x53')]),_0x5d0f('0x99'),{'id':this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['id'],'destaccountcode':this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['accountcode']});}}var _0x31bb42=this;Promise[_0x5d0f('0x9a')]()[_0x5d0f('0x9b')](function(){var _0xcaedd5=_0x31bb42[_0x5d0f('0x1c')][_0x51c080['uniqueid']];if(typeof _0xcaedd5[_0x5d0f('0x9c')]===_0x5d0f('0x9d'))return;if(_['isEmpty'](_0xcaedd5[_0x5d0f('0x75')]))return;return RpcSetting[_0x5d0f('0x9e')]()[_0x5d0f('0x9b')](function(_0x2c1124){if(!_0x2c1124[_0x5d0f('0x9f')])return;return Promise[_0x5d0f('0x9a')]()[_0x5d0f('0x9b')](function(){return ami['Action']({'action':_0x5d0f('0xa0'),'channel':_0xcaedd5[_0x5d0f('0x40')]})[_0x5d0f('0xa1')](function(){});})[_0x5d0f('0x9b')](function(){return ami['Action']({'action':_0x5d0f('0xa0'),'channel':_0xcaedd5[_0x5d0f('0x68')]})['catch'](function(){})['finally'](function(){var _0x34b61f=_0x31bb42[_0x5d0f('0x1d')][_0xcaedd5[_0x5d0f('0x68')][_0x5d0f('0x42')]('-')[0x0]];if(!_0x34b61f)return;io[_0x5d0f('0x35')](_0x5d0f('0xa2'),{'agentId':_0x34b61f['id'],'uniqueid':_0xcaedd5[_0x5d0f('0x36')]});});});});})[_0x5d0f('0x9b')](function(){if(_0x51c080[_0x5d0f('0xa3')]==='BlindTransfer'){_0x31bb42[_0x5d0f('0x1e')][_0x51c080[_0x5d0f('0x36')]]=_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]];}else{if(_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x83')]==='outbound'&&_0x31bb42['blindTransfers'][_0x51c080['uniqueid']]){_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]]['uniqueid']=[_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x3c')],_0x31bb42[_0x5d0f('0x1c')][_0x51c080['uniqueid']][_0x5d0f('0x3c')]=_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x36')]][0x0];delete _0x31bb42[_0x5d0f('0x1e')][_0x51c080['uniqueid']];}}logger[_0x5d0f('0x39')](_0x5d0f('0xa4'),_0x51c080['uniqueid'],util[_0x5d0f('0x3b')](_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]],{'showHidden':![],'depth':null}));ami[_0x5d0f('0x35')](_0x5d0f('0xa5'),_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]]);delete _0x31bb42['channels'][_0x51c080[_0x5d0f('0x36')]];});}}}catch(_0x40a929){logger['error'](_0x5d0f('0xa6'),_0x51c080[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x40a929,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')]['syncAttendedTransfer']=function(_0x5d088e){try{if(this[_0x5d0f('0x32')](_0x5d088e)){logger[_0x5d0f('0x2e')](_0x5d0f('0xa7'),_0x5d088e['uniqueid'],_0x5d088e[_0x5d0f('0xa8')],_0x5d088e[_0x5d0f('0xa9')]);logger[_0x5d0f('0x39')](_0x5d0f('0xaa'),_0x5d088e[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5d088e,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xab')]]){this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xab')]][_0x5d0f('0xac')]=_0x5d088e[_0x5d0f('0xa8')];this['channels'][_0x5d088e[_0x5d0f('0xab')]]['transferconnectedlinenum']=_0x5d088e[_0x5d0f('0xa9')];if(this[_0x5d0f('0x1c')][_0x5d088e['secondtransfereruniqueid']]){var _0x207104=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xad')]];this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xad')]]=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xab')]];this['channels'][_0x5d088e[_0x5d0f('0xab')]]=_0x207104;}}else if(this[_0x5d0f('0x1c')][_0x5d088e['transfertargetuniqueid']]){this[_0x5d0f('0x1c')][_0x5d088e['transfertargetuniqueid']][_0x5d0f('0xac')]=_0x5d088e[_0x5d0f('0xa8')];this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xae')]][_0x5d0f('0xaf')]=_0x5d088e[_0x5d0f('0xa9')];if(this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]]){var _0x207104=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]];this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]]=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xae')]];this['channels'][_0x5d088e[_0x5d0f('0xae')]]=_0x207104;}}if((this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]]||this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb1')]])&&this[_0x5d0f('0x1c')][_0x5d088e['secondtransfereruniqueid']]){var _0x24ef01=_[_0x5d0f('0xb2')]([this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]],this['channels'][_0x5d088e[_0x5d0f('0xb1')]],this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xad')]]],function(_0x24df3f){return _0x24df3f&&_0x24df3f[_0x5d0f('0x83')]==='outbound'&&_0x24df3f[_0x5d0f('0xb3')];});if(_0x24ef01){if(this['channels'][_0x5d088e[_0x5d0f('0xb0')]])this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]][_0x5d0f('0x9c')]=_0x5d0f('0xb4');if(this[_0x5d0f('0x1c')][_0x5d088e['origtransfererlinkedid']])this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb1')]][_0x5d0f('0x9c')]=_0x5d0f('0xb4');this['channels'][_0x5d088e['secondtransfereruniqueid']][_0x5d0f('0x9c')]=_0x5d0f('0xb4');}}}}catch(_0x5f3c5f){logger['error'](_0x5d0f('0xb5'),_0x5d088e[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5f3c5f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0xb6')]=function(_0x20c098){try{if(this['isNotNull'](_0x20c098)){logger['info'](_0x5d0f('0xb7'),_0x20c098[_0x5d0f('0x36')],_0x20c098[_0x5d0f('0xb8')],_0x20c098['extension']);logger[_0x5d0f('0x39')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x20c098[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x20c098,{'showHidden':![],'depth':null}));if(this['channels'][_0x20c098['transfereeuniqueid']]){this[_0x5d0f('0x1c')][_0x20c098[_0x5d0f('0xab')]]['transfercalleridnum']=_0x20c098['transfereecalleridnum'];this[_0x5d0f('0x1c')][_0x20c098[_0x5d0f('0xab')]][_0x5d0f('0xaf')]=_0x20c098[_0x5d0f('0xb9')];this[_0x5d0f('0x1c')][_0x20c098[_0x5d0f('0xab')]][_0x5d0f('0x9c')]=_0x5d0f('0xba');this[_0x5d0f('0x28')]({'event':_0x5d0f('0xbb'),'uniqueid':_0x20c098[_0x5d0f('0xab')],'context':_0x20c098[_0x5d0f('0x3f')],'channel':_0x20c098[_0x5d0f('0xbc')]});}else{this[_0x5d0f('0x1c')][_0x20c098['transfereruniqueid']][_0x5d0f('0x9c')]=_0x5d0f('0xba');}}}catch(_0x162068){logger[_0x5d0f('0x31')]('[%s][voiceCallReport][blindtransfer]',_0x20c098[_0x5d0f('0x36')],util['inspect'](_0x162068,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0xbd')]=function(_0x1f2f16){try{if(this[_0x5d0f('0x32')](_0x1f2f16)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x1f2f16[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x1f2f16,{'showHidden':![],'depth':null}));if(this['channels'][_0x1f2f16[_0x5d0f('0x36')]]){if(!_[_0x5d0f('0x76')](this['channels'][_0x1f2f16[_0x5d0f('0x36')]]['answertime'])){this[_0x5d0f('0x1c')][_0x1f2f16[_0x5d0f('0x36')]][_0x5d0f('0xbe')]=moment()['format'](_0x5d0f('0x5e'));logger['info'](_0x5d0f('0xbf'),_0x1f2f16[_0x5d0f('0x36')],this['channels'][_0x1f2f16[_0x5d0f('0x36')]]['mohstarttime']);}}}}catch(_0xd2e2f2){logger[_0x5d0f('0x31')]('[%s][voiceCallReport][musiconholdstart]',_0x1f2f16['uniqueid'],util[_0x5d0f('0x3b')](_0xd2e2f2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0xc0')]=function(_0x36fff2){try{if(this[_0x5d0f('0x32')](_0x36fff2)){logger[_0x5d0f('0x39')](_0x5d0f('0xc1'),_0x36fff2[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x36fff2,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]]){if(!_[_0x5d0f('0x76')](this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]][_0x5d0f('0xbe')])){this['channels'][_0x36fff2['uniqueid']][_0x5d0f('0xc2')]+=moment()['milliseconds'](0x0)[_0x5d0f('0x94')](this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]][_0x5d0f('0xbe')],'seconds');logger[_0x5d0f('0x2e')](_0x5d0f('0xc3'),_0x36fff2[_0x5d0f('0x36')],this['channels'][_0x36fff2[_0x5d0f('0x36')]]['mohtime']);delete this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]][_0x5d0f('0xbe')];}}}}catch(_0x58eb66){logger[_0x5d0f('0x31')](_0x5d0f('0xc4'),_0x36fff2[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x58eb66,{'showHidden':![],'depth':null}));}};module[_0x5d0f('0xc5')]=VoiceCallReport;
\ No newline at end of file
+var _0xf45e=['Action','webbar:stopmonitors','event','BlindTransfer','blindTransfers','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','transfertargetcalleridnum','transfereeuniqueid','origtransferercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','origtransfereruniqueid','transfertargetuniqueid','origtransfererlinkedid','some','outbound','routeid','ATTENDED','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','unknown','unavailable','ringing','onhold','queue','agi','voicemail','FAILED','NO\x20ANSWER','BUSY','defaults','localhost','socket.io-emitter','redis','channels','agents','coreshowchannel','syncNewExten','bind','syncNewChannel','newstate','syncNewState','varset','syncVarSet','syncHangup','syncAttendedTransfer','blindtransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','isNotNull','isUndefined','prototype','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','linkedid','merge','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','pick','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','diff','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','replace','.wav49','.WAV','monitors','isNil','push','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','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','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','holdtime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','then','transferType','getSettings','stopRecordingOnTransfer','resolve','StopMixMonitor','catch'];(function(_0x1d67f3,_0x40bb17){var _0x148639=function(_0x531f83){while(--_0x531f83){_0x1d67f3['push'](_0x1d67f3['shift']());}};_0x148639(++_0x40bb17);}(_0xf45e,0xef));var _0xef45=function(_0x6dcf3f,_0x4f8f30){_0x6dcf3f=_0x6dcf3f-0x0;var _0x16fec7=_0xf45e[_0x6dcf3f];return _0x16fec7;};'use strict';var BPromise=require(_0xef45('0x0'));var _=require(_0xef45('0x1'));var moment=require(_0xef45('0x2'));var util=require(_0xef45('0x3'));var path=require('path');var Redis=require(_0xef45('0x4'));var config=require(_0xef45('0x5'));var logger=require(_0xef45('0x6'))(_0xef45('0x7'));var ami=require(_0xef45('0x8'));var Channel=require(_0xef45('0x9'));var RpcSetting=require('../rpc/setting');var statusDesc=[_0xef45('0xa'),'not_inuse','inuse','busy','invalid',_0xef45('0xb'),_0xef45('0xc'),'ringinuse',_0xef45('0xd')];var applications=['set',_0xef45('0xe'),_0xef45('0xf'),'dial','playback',_0xef45('0x10')];var dispositions=['NO\x20ANSWER',_0xef45('0x11'),'FAILED','NO\x20ANSWER',_0xef45('0x12'),_0xef45('0x12'),'ANSWERED',_0xef45('0x13'),_0xef45('0x11'),_0xef45('0x11'),_0xef45('0x11')];var actions={};config['redis']=_[_0xef45('0x14')](config['redis'],{'host':_0xef45('0x15'),'port':0x18eb});var io=require(_0xef45('0x16'))(new Redis(config[_0xef45('0x17')]));function VoiceCallReport(_0x33feb8){this[_0xef45('0x18')]=_0x33feb8[_0xef45('0x18')];this[_0xef45('0x19')]=_0x33feb8['agents'];this['blindTransfers']={};ami['on'](_0xef45('0x1a'),this[_0xef45('0x1b')][_0xef45('0x1c')](this));ami['on']('newexten',this['syncNewExten']['bind'](this));ami['on']('newchannel',this[_0xef45('0x1d')][_0xef45('0x1c')](this));ami['on'](_0xef45('0x1e'),this[_0xef45('0x1f')]['bind'](this));ami['on'](_0xef45('0x20'),this[_0xef45('0x21')]['bind'](this));ami['on']('hangup',this[_0xef45('0x22')][_0xef45('0x1c')](this));ami['on']('newcallerid',this['syncNewCallerId']['bind'](this));ami['on']('attendedtransfer',this[_0xef45('0x23')]['bind'](this));ami['on'](_0xef45('0x24'),this['syncBlindTransfer']['bind'](this));ami['on'](_0xef45('0x25'),this[_0xef45('0x26')][_0xef45('0x1c')](this));ami['on'](_0xef45('0x27'),this[_0xef45('0x28')][_0xef45('0x1c')](this));try{logger[_0xef45('0x29')](_0xef45('0x2a'));ami[_0xef45('0x2b')]();}catch(_0xe033){logger[_0xef45('0x2c')](_0xef45('0x2d'),util[_0xef45('0x2e')](_0xe033,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xef45('0x2f')]=function(_0x5e7638){return _0x5e7638!==null&&!_[_0xef45('0x30')](_0x5e7638);};VoiceCallReport[_0xef45('0x31')][_0xef45('0x32')]=function(_0x4d628d,_0x4836c6,_0x18d036){io['to'](_0x4d628d)[_0xef45('0x32')](_0x4836c6,_0x18d036);};VoiceCallReport[_0xef45('0x31')][_0xef45('0x33')]=function(_0x369087){try{if(this[_0xef45('0x2f')](_0x369087)){logger[_0xef45('0x29')](_0xef45('0x34'),_0x369087[_0xef45('0x35')],_0x369087[_0xef45('0x36')],_0x369087[_0xef45('0x37')]);logger[_0xef45('0x38')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x369087[_0xef45('0x35')],util[_0xef45('0x2e')](_0x369087,{'showHidden':![],'depth':null}));if(_0x369087[_0xef45('0x35')]===_0x369087[_0xef45('0x39')]){if(!_[_0xef45('0x30')](this[_0xef45('0x18')][_0x369087['uniqueid']])){_[_0xef45('0x3a')](this[_0xef45('0x18')][_0x369087[_0xef45('0x35')]],_['pick'](_0x369087,_[_0xef45('0x3b')](this[_0xef45('0x18')][_0x369087[_0xef45('0x35')]])));}}if(_0x369087[_0xef45('0x3c')]===_0xef45('0x3d')){if(this[_0xef45('0x19')][_0x369087[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]){if(_0x369087[_0xef45('0x40')]==_0xef45('0x41')){this[_0xef45('0x19')][_0x369087[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x42')]=_0x369087[_0xef45('0x43')];this[_0xef45('0x32')](util[_0xef45('0x44')](_0xef45('0x45'),this[_0xef45('0x19')][_0x369087[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x46')]),_0xef45('0x47'),{'destaccountcode':this[_0xef45('0x19')][_0x369087[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x369087[_0xef45('0x43')]});}}}}}catch(_0x3e4534){logger[_0xef45('0x2c')](_0xef45('0x48'),_0x369087[_0xef45('0x35')],util['inspect'](_0x3e4534,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xef45('0x31')][_0xef45('0x1d')]=function(_0xe475b0){try{if(this[_0xef45('0x2f')](_0xe475b0)){logger[_0xef45('0x38')](_0xef45('0x49'),_0xe475b0['uniqueid'],util['inspect'](_0xe475b0,{'showHidden':![],'depth':null}));if(_0xe475b0[_0xef45('0x35')]===_0xe475b0['linkedid']&&_0xe475b0[_0xef45('0x3e')]!=_0xef45('0x4a')){if(_[_0xef45('0x30')](this[_0xef45('0x18')][_0xe475b0[_0xef45('0x35')]])){logger['info'](_0xef45('0x4b'),_0xe475b0[_0xef45('0x35')],_0xe475b0[_0xef45('0x3c')],_0xe475b0[_0xef45('0x40')]);this[_0xef45('0x18')][_0xe475b0[_0xef45('0x35')]]=new Channel();this[_0xef45('0x18')][_0xe475b0[_0xef45('0x35')]][_0xef45('0x4c')]=moment()['format'](_0xef45('0x4d'));this[_0xef45('0x18')][_0xe475b0[_0xef45('0x35')]][_0xef45('0x4e')]=dispositions[_[_0xef45('0x4f')](_0xe475b0[_0xef45('0x50')])];_[_0xef45('0x3a')](this['channels'][_0xe475b0[_0xef45('0x35')]],_[_0xef45('0x51')](_0xe475b0,_[_0xef45('0x3b')](this[_0xef45('0x18')][_0xe475b0[_0xef45('0x35')]])));if(_0xe475b0[_0xef45('0x3c')]===_0xef45('0x3d')){if(this[_0xef45('0x19')][_0xe475b0[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]){if(_[_0xef45('0x30')](this['agents'][_0xe475b0[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x42')])){this[_0xef45('0x19')][_0xe475b0['channel'][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x42')]=_0xe475b0[_0xef45('0x40')];logger[_0xef45('0x38')](_0xef45('0x52'),_0xe475b0[_0xef45('0x35')],util[_0xef45('0x2e')]({'destaccountcode':this[_0xef45('0x19')][_0xe475b0['channel'][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x53')],'destconnectedlinenum':_0xe475b0[_0xef45('0x40')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xef45('0x44')]('user:%s',this[_0xef45('0x19')][_0xe475b0[_0xef45('0x3e')]['split']('-')[0x0]][_0xef45('0x46')]),_0xef45('0x47'),{'destaccountcode':this[_0xef45('0x19')][_0xe475b0[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x53')],'destconnectedlinenum':_0xe475b0[_0xef45('0x40')]});}}}}}}}catch(_0x413c44){logger[_0xef45('0x2c')](_0xef45('0x54'),_0xe475b0[_0xef45('0x35')],util[_0xef45('0x2e')](_0x413c44,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xef45('0x1b')]=function(_0x145133){try{if(this[_0xef45('0x2f')](_0x145133)){logger[_0xef45('0x38')](_0xef45('0x55'),_0x145133[_0xef45('0x35')],util[_0xef45('0x2e')](_0x145133,{'showHidden':![],'depth':null}));if(_0x145133['uniqueid']===_0x145133['linkedid']&&_0x145133[_0xef45('0x40')]!='h'&&_0x145133[_0xef45('0x3e')]!=_0xef45('0x4a')){_0x145133['application']=_0x145133[_0xef45('0x56')][_0xef45('0x57')]();_0x145133[_0xef45('0x58')]=_0x145133[_0xef45('0x59')]&&_0x145133['appdata'][_0xef45('0x5a')](_0xef45('0x5b'))?_0x145133[_0xef45('0x59')]:(_0x145133['appdata']||_0x145133[_0xef45('0x58')])[_0xef45('0x57')]();logger['info'](_0xef45('0x5c'),_0x145133[_0xef45('0x35')],_0x145133[_0xef45('0x56')],_0x145133[_0xef45('0x58')]);if(_['isUndefined'](this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]])){this['channels'][_0x145133[_0xef45('0x35')]]=new Channel();this['channels'][_0x145133['uniqueid']][_0xef45('0x4c')]=_0x145133[_0xef45('0x5d')]?moment()[_0xef45('0x5e')](moment[_0xef45('0x5d')](_0x145133[_0xef45('0x5d')])[_0xef45('0x5f')](),_0xef45('0x5f'))[_0xef45('0x44')](_0xef45('0x4d')):moment()[_0xef45('0x44')](_0xef45('0x4d'));this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]][_0xef45('0x4e')]='NO\x20ANSWER';}_[_0xef45('0x3a')](this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]],_[_0xef45('0x51')](_0x145133,_[_0xef45('0x3b')](this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]])));if(_[_0xef45('0x60')](applications,_0x145133[_0xef45('0x56')])){this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]][_0xef45('0x61')]=_0x145133[_0xef45('0x56')];this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]][_0xef45('0x62')]=_0x145133[_0xef45('0x58')];if(_0x145133[_0xef45('0x56')]==='set'&&_[_0xef45('0x5a')](_0x145133[_0xef45('0x58')]['toLowerCase'](),_0xef45('0x63'))){var _0x564891=_0x145133[_0xef45('0x58')]['split']('=');var _0xf6bfa=_0x564891[0x0][_0xef45('0x57')]()[_0xef45('0x64')](/cdr\((.*)\)/);if(_0xf6bfa){this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]][_0xf6bfa[0x1]]=_0x564891[0x1];}}else if(_0x145133[_0xef45('0x56')]===_0xef45('0xe')){this[_0xef45('0x18')][_0x145133[_0xef45('0x35')]][_0xef45('0xe')]=_0x145133[_0xef45('0x58')][_0xef45('0x3f')](',')[0x0];}}}}}catch(_0x5a0ee5){logger['error'](_0xef45('0x65'),_0x145133[_0xef45('0x35')],util[_0xef45('0x2e')](_0x5a0ee5,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xef45('0x1f')]=function(_0x4a856a){try{if(this[_0xef45('0x2f')](_0x4a856a)){logger[_0xef45('0x29')](_0xef45('0x66'),_0x4a856a['uniqueid'],_0x4a856a['linkedid'],_0x4a856a[_0xef45('0x36')],_0x4a856a['calleridnum']);logger[_0xef45('0x38')](_0xef45('0x67'),_0x4a856a['uniqueid'],util[_0xef45('0x2e')](_0x4a856a,{'showHidden':![],'depth':null}));if(_0x4a856a[_0xef45('0x35')]!==_0x4a856a['linkedid']){if(this['channels'][_0x4a856a[_0xef45('0x39')]]){if(_0x4a856a['channelstate']==='6'){if(!this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x68')]){var _0x2ae5ad=moment();this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x68')]=!![];this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]]['answertime']=_0x2ae5ad[_0xef45('0x44')](_0xef45('0x4d'));if(this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x4c')]){this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]]['holdtime']=_0x2ae5ad[_0xef45('0x69')](this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]]['starttime'],'seconds');}}this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x39')]=_0x4a856a[_0xef45('0x35')];if(_0x4a856a[_0xef45('0x37')]!==_0xef45('0x41')){this[_0xef45('0x18')][_0x4a856a['linkedid']][_0xef45('0x43')]=_0x4a856a[_0xef45('0x37')];}this['channels'][_0x4a856a['linkedid']][_0xef45('0x6a')]=_0x4a856a[_0xef45('0x36')];this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x6b')]=_0x4a856a[_0xef45('0x3e')];this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x4e')]=dispositions[_['toNumber'](_0x4a856a['channelstate'])];if(this['agents'][_0x4a856a[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]){this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x6c')]=this[_0xef45('0x19')][_0x4a856a[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]['id'];this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]][_0xef45('0x6d')]=this[_0xef45('0x19')][_0x4a856a['channel'][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x46')];}}}}else{if(this[_0xef45('0x18')][_0x4a856a['uniqueid']]){if(_0x4a856a['channelstate']==='6'){if(this[_0xef45('0x19')][_0x4a856a[_0xef45('0x3e')]['split']('-')[0x0]]){this['channels'][_0x4a856a[_0xef45('0x35')]][_0xef45('0x6c')]=this[_0xef45('0x19')][_0x4a856a[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]['id'];this[_0xef45('0x18')][_0x4a856a[_0xef45('0x35')]][_0xef45('0x6d')]=this[_0xef45('0x19')][_0x4a856a['channel'][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x46')];}}}}if(_0x4a856a['channelstate']==='6'&&_0x4a856a[_0xef45('0x3c')]==='from-sip'){if(this[_0xef45('0x19')][_0x4a856a['channel'][_0xef45('0x3f')]('-')[0x0]]){this['agents'][_0x4a856a['channel']['split']('-')[0x0]][_0xef45('0x42')]=_0x4a856a['exten'];var _0x6f8c16;if(this[_0xef45('0x18')][_0x4a856a[_0xef45('0x35')]])_0x6f8c16=this[_0xef45('0x18')][_0x4a856a[_0xef45('0x35')]][_0xef45('0x6e')];else if(this['channels'][_0x4a856a[_0xef45('0x39')]])_0x6f8c16=this[_0xef45('0x18')][_0x4a856a[_0xef45('0x39')]]['routealias'];logger['debug'](_0xef45('0x6f'),_0x4a856a[_0xef45('0x35')],util[_0xef45('0x2e')]({'destaccountcode':this['agents'][_0x4a856a[_0xef45('0x3e')]['split']('-')[0x0]][_0xef45('0x53')],'destconnectedlinenum':_0x4a856a[_0xef45('0x40')],'routealias':_0x6f8c16},{'showHidden':![],'depth':null}));this['emit'](util[_0xef45('0x44')](_0xef45('0x45'),this[_0xef45('0x19')][_0x4a856a[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x46')]),_0xef45('0x47'),{'destaccountcode':this['agents'][_0x4a856a['channel'][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x53')],'destconnectedlinenum':_0x4a856a[_0xef45('0x40')],'routealias':_0x6f8c16});}}}}catch(_0x2be615){logger[_0xef45('0x2c')](_0xef45('0x70'),_0x4a856a[_0xef45('0x35')],util[_0xef45('0x2e')](_0x2be615,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xef45('0x31')][_0xef45('0x71')]=function(_0x390488,_0x2052e6){try{if(this['channels'][_0x390488]){logger['info'](_0xef45('0x72'),_0x390488,_0x2052e6);this[_0xef45('0x18')][_0x390488][_0xef45('0x73')]=!![];if(_['endsWith'](_0x2052e6,'.wav49')){_0x2052e6=_0x2052e6[_0xef45('0x74')](_0xef45('0x75'),_0xef45('0x76'));}this[_0xef45('0x18')][_0x390488]['monitorFilename']=_0x2052e6;var _0x5485d5=_['find'](this[_0xef45('0x18')][_0x390488][_0xef45('0x77')],{'filename':_0x2052e6});if(_[_0xef45('0x78')](_0x5485d5)){this[_0xef45('0x18')][_0x390488][_0xef45('0x77')][_0xef45('0x79')]({'filename':_0x2052e6,'createdAt':moment()[_0xef45('0x44')](_0xef45('0x4d')),'mixmonitorid':'','status':'rec'});}}}catch(_0x42d6f2){logger['error']('[%s][voiceCallReport][mixMonitorFilename]',_0x390488,util['inspect'](_0x42d6f2,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xef45('0x21')]=function(_0x2dc2b1){try{if(this['isNotNull'](_0x2dc2b1)){logger[_0xef45('0x38')](_0xef45('0x7a'),_0x2dc2b1[_0xef45('0x35')],util[_0xef45('0x2e')](_0x2dc2b1,{'showHidden':![],'depth':null}));if(this[_0xef45('0x18')][_0x2dc2b1[_0xef45('0x35')]]&&_0x2dc2b1[_0xef45('0x3e')]!='OutgoingSpoolFailed'){if(this[_0xef45('0x2f')](_0x2dc2b1['variable'])){if(this[_0xef45('0x2f')](_0x2dc2b1[_0xef45('0x7b')][_0xef45('0x7c')])){logger[_0xef45('0x29')](_0xef45('0x7d'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);this['syncMixMonitorFilename'](_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);}else if(this[_0xef45('0x2f')](_0x2dc2b1[_0xef45('0x7b')]['xmd-phone'])){logger['info'](_0xef45('0x7f'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);this['channels'][_0x2dc2b1[_0xef45('0x35')]][_0xef45('0x37')]=_0x2dc2b1[_0xef45('0x7e')];}else if(this['isNotNull'](_0x2dc2b1['variable'][_0xef45('0x80')])){logger[_0xef45('0x29')](_0xef45('0x81'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);this['channels'][_0x2dc2b1[_0xef45('0x35')]][_0xef45('0x82')]=_0x2dc2b1[_0xef45('0x7e')];}else if(this[_0xef45('0x2f')](_0x2dc2b1['variable'][_0xef45('0x83')])){logger[_0xef45('0x29')](_0xef45('0x84'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1['value']);this[_0xef45('0x18')][_0x2dc2b1['uniqueid']][_0xef45('0x85')]=_0x2dc2b1[_0xef45('0x7e')];}else if(this[_0xef45('0x2f')](_0x2dc2b1['variable'][_0xef45('0x86')])){logger[_0xef45('0x29')](_0xef45('0x87'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')][_0xef45('0x3f')](',')[0x0]);this['channels'][_0x2dc2b1[_0xef45('0x35')]][_0xef45('0xe')]=_0x2dc2b1['value'][_0xef45('0x3f')](',')[0x0];}else if(this[_0xef45('0x2f')](_0x2dc2b1[_0xef45('0x7b')][_0xef45('0x88')])){logger[_0xef45('0x29')](_0xef45('0x89'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);this[_0xef45('0x18')][_0x2dc2b1[_0xef45('0x35')]][_0xef45('0x8a')]=_0x2dc2b1[_0xef45('0x7e')];}else if(this[_0xef45('0x2f')](_0x2dc2b1[_0xef45('0x7b')][_0xef45('0x8b')])){logger[_0xef45('0x29')](_0xef45('0x8c'),_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);this[_0xef45('0x18')][_0x2dc2b1[_0xef45('0x35')]]['destination']=_0x2dc2b1[_0xef45('0x7e')];}else if(this[_0xef45('0x2f')](_0x2dc2b1['variable'][_0xef45('0x8d')])){logger[_0xef45('0x29')](_0xef45('0x8e'),_0x2dc2b1['uniqueid'],_0x2dc2b1[_0xef45('0x7e')]);this['channels'][_0x2dc2b1[_0xef45('0x35')]][_0xef45('0x8f')]=_0x2dc2b1[_0xef45('0x7e')];}else if(this[_0xef45('0x2f')](_0x2dc2b1[_0xef45('0x7b')][_0xef45('0x90')])){logger[_0xef45('0x29')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x2dc2b1[_0xef45('0x35')],_0x2dc2b1[_0xef45('0x7e')]);this[_0xef45('0x18')][_0x2dc2b1[_0xef45('0x35')]][_0xef45('0xe')]=_0x2dc2b1['value'];}else if(this['isNotNull'](_0x2dc2b1[_0xef45('0x7b')]['sipcallid'])){logger[_0xef45('0x29')](_0xef45('0x91'),_0x2dc2b1['uniqueid'],_0x2dc2b1[_0xef45('0x7e')]);this[_0xef45('0x18')][_0x2dc2b1[_0xef45('0x35')]]['sipcalluniqueid']=_0x2dc2b1[_0xef45('0x7e')];}}}else if(this['isNotNull'](_0x2dc2b1[_0xef45('0x7b')][_0xef45('0x7c')])){if(_0x2dc2b1[_0xef45('0x7e')]){var _0x44033f=path[_0xef45('0x92')](_0x2dc2b1[_0xef45('0x7e')])[_0xef45('0x46')];logger[_0xef45('0x29')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x44033f,_0x2dc2b1['value']);this[_0xef45('0x71')](_0x44033f,_0x2dc2b1['value']);}}else if(this[_0xef45('0x18')][_0x2dc2b1[_0xef45('0x39')]]){if(this['isNotNull'](_0x2dc2b1['variable'])){if(this[_0xef45('0x2f')](_0x2dc2b1[_0xef45('0x7b')]['sipcallid'])){logger[_0xef45('0x29')](_0xef45('0x91'),_0x2dc2b1[_0xef45('0x39')],_0x2dc2b1[_0xef45('0x7e')]);this['channels'][_0x2dc2b1['linkedid']][_0xef45('0x93')]=_0x2dc2b1[_0xef45('0x7e')];}}}}}catch(_0x15bada){logger[_0xef45('0x2c')](_0xef45('0x94'),_0x2dc2b1[_0xef45('0x35')],util[_0xef45('0x2e')](_0x15bada,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xef45('0x31')]['syncHangup']=function(_0x1566e4){try{if(this[_0xef45('0x2f')](_0x1566e4)){logger[_0xef45('0x38')](_0xef45('0x95'),_0x1566e4[_0xef45('0x35')],util[_0xef45('0x2e')](_0x1566e4,{'showHidden':![],'depth':null}));if(this[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]]){logger[_0xef45('0x29')](_0xef45('0x96'),_0x1566e4['uniqueid'],_0x1566e4[_0xef45('0x97')]);var _0x2503a8=moment();this[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]][_0xef45('0x98')]=_0x2503a8[_0xef45('0x44')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]][_0xef45('0x5d')]=_0x2503a8[_0xef45('0x69')](this['channels'][_0x1566e4[_0xef45('0x35')]][_0xef45('0x4c')],'seconds');if(this[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]][_0xef45('0x68')]){this['channels'][_0x1566e4[_0xef45('0x35')]][_0xef45('0x99')]=_0x2503a8['diff'](this['channels'][_0x1566e4['uniqueid']]['answertime'],_0xef45('0x5f'));this[_0xef45('0x18')][_0x1566e4['uniqueid']][_0xef45('0x9a')]=this['channels'][_0x1566e4[_0xef45('0x35')]][_0xef45('0x5d')]-this[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]]['billableseconds'];}if(_0x1566e4[_0xef45('0x3c')]===_0xef45('0x3d')){if(this[_0xef45('0x19')][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]){this[_0xef45('0x19')][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]=_[_0xef45('0x9b')](this['agents'][_0x1566e4[_0xef45('0x3e')]['split']('-')[0x0]],[_0xef45('0x42')]);logger[_0xef45('0x38')](_0xef45('0x9c'),_0x1566e4['uniqueid'],util[_0xef45('0x2e')]({'id':this['agents'][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]['id'],'destaccountcode':this[_0xef45('0x19')][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x53')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xef45('0x44')](_0xef45('0x45'),this[_0xef45('0x19')][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]][_0xef45('0x46')]),_0xef45('0x9d'),{'id':this[_0xef45('0x19')][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]['id'],'destaccountcode':this[_0xef45('0x19')][_0x1566e4[_0xef45('0x3e')][_0xef45('0x3f')]('-')[0x0]]['accountcode']});}}var _0x933d5d=this;Promise['resolve']()[_0xef45('0x9e')](function(){var _0x8595b=_0x933d5d[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]];if(typeof _0x8595b[_0xef45('0x9f')]==='undefined')return;if(_['isEmpty'](_0x8595b[_0xef45('0x77')]))return;return RpcSetting[_0xef45('0xa0')]()['then'](function(_0x4853ab){if(!_0x4853ab[_0xef45('0xa1')])return;return Promise[_0xef45('0xa2')]()['then'](function(){return ami['Action']({'action':_0xef45('0xa3'),'channel':_0x8595b[_0xef45('0x3e')]})[_0xef45('0xa4')](function(){});})[_0xef45('0x9e')](function(){return ami[_0xef45('0xa5')]({'action':_0xef45('0xa3'),'channel':_0x8595b[_0xef45('0x6b')]})[_0xef45('0xa4')](function(){})['finally'](function(){var _0x106854=_0x933d5d[_0xef45('0x19')][_0x8595b[_0xef45('0x6b')][_0xef45('0x3f')]('-')[0x0]];if(!_0x106854)return;io['emit'](_0xef45('0xa6'),{'agentId':_0x106854['id'],'uniqueid':_0x8595b[_0xef45('0x35')]});});});});})[_0xef45('0x9e')](function(){if(_0x1566e4[_0xef45('0xa7')]===_0xef45('0xa8')){_0x933d5d[_0xef45('0xa9')][_0x1566e4[_0xef45('0x35')]]=_0x933d5d['channels'][_0x1566e4['uniqueid']];}else{if(_0x933d5d[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]][_0xef45('0x85')]==='outbound'&&_0x933d5d['blindTransfers'][_0x1566e4['uniqueid']]){_0x933d5d[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]][_0xef45('0x35')]=[_0x933d5d['channels'][_0x1566e4['uniqueid']][_0xef45('0x39')],_0x933d5d[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]][_0xef45('0x39')]=_0x933d5d['channels'][_0x1566e4[_0xef45('0x35')]][_0xef45('0x35')]][0x0];delete _0x933d5d[_0xef45('0xa9')][_0x1566e4['uniqueid']];}}logger[_0xef45('0x38')](_0xef45('0xaa'),_0x1566e4[_0xef45('0x35')],util[_0xef45('0x2e')](_0x933d5d[_0xef45('0x18')][_0x1566e4['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xef45('0x32')](_0xef45('0xab'),_0x933d5d[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]]);delete _0x933d5d[_0xef45('0x18')][_0x1566e4[_0xef45('0x35')]];});}}}catch(_0x1b6999){logger[_0xef45('0x2c')](_0xef45('0xac'),_0x1566e4[_0xef45('0x35')],util['inspect'](_0x1b6999,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xef45('0x31')][_0xef45('0x23')]=function(_0x33e1fa){try{if(this[_0xef45('0x2f')](_0x33e1fa)){logger[_0xef45('0x29')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x33e1fa[_0xef45('0x35')],_0x33e1fa['origtransferercalleridnum'],_0x33e1fa[_0xef45('0xad')]);logger[_0xef45('0x38')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x33e1fa[_0xef45('0x35')],util['inspect'](_0x33e1fa,{'showHidden':![],'depth':null}));if(this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xae')]]){this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xae')]]['transfercalleridnum']=_0x33e1fa[_0xef45('0xaf')];this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xae')]][_0xef45('0xb0')]=_0x33e1fa[_0xef45('0xad')];if(this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb1')]]){var _0x24eac=this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb1')]];this[_0xef45('0x18')][_0x33e1fa['secondtransfereruniqueid']]=this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xae')]];this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xae')]]=_0x24eac;}}else if(this['channels'][_0x33e1fa['transfertargetuniqueid']]){this[_0xef45('0x18')][_0x33e1fa['transfertargetuniqueid']]['transfercalleridnum']=_0x33e1fa['origtransferercalleridnum'];this[_0xef45('0x18')][_0x33e1fa['transfertargetuniqueid']][_0xef45('0xb0')]=_0x33e1fa[_0xef45('0xad')];if(this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb2')]]){var _0x24eac=this[_0xef45('0x18')][_0x33e1fa['origtransfereruniqueid']];this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb2')]]=this[_0xef45('0x18')][_0x33e1fa['transfertargetuniqueid']];this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb3')]]=_0x24eac;}}if((this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb2')]]||this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb4')]])&&this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb1')]]){var _0x40b029=_[_0xef45('0xb5')]([this[_0xef45('0x18')][_0x33e1fa['origtransfereruniqueid']],this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb4')]],this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb1')]]],function(_0x237767){return _0x237767&&_0x237767['type']===_0xef45('0xb6')&&_0x237767[_0xef45('0xb7')];});if(_0x40b029){if(this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb2')]])this['channels'][_0x33e1fa[_0xef45('0xb2')]][_0xef45('0x9f')]=_0xef45('0xb8');if(this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb4')]])this[_0xef45('0x18')][_0x33e1fa['origtransfererlinkedid']][_0xef45('0x9f')]=_0xef45('0xb8');this[_0xef45('0x18')][_0x33e1fa[_0xef45('0xb1')]]['transferType']=_0xef45('0xb8');}}}}catch(_0x26cd44){logger[_0xef45('0x2c')]('[%s][voiceCallReport][attendedtransfer]',_0x33e1fa['uniqueid'],util[_0xef45('0x2e')](_0x26cd44,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xef45('0x31')]['syncBlindTransfer']=function(_0x52c842){try{if(this['isNotNull'](_0x52c842)){logger['info'](_0xef45('0xb9'),_0x52c842[_0xef45('0x35')],_0x52c842[_0xef45('0xba')],_0x52c842[_0xef45('0xbb')]);logger[_0xef45('0x38')](_0xef45('0xbc'),_0x52c842[_0xef45('0x35')],util[_0xef45('0x2e')](_0x52c842,{'showHidden':![],'depth':null}));if(this['channels'][_0x52c842['transfereeuniqueid']]){this[_0xef45('0x18')][_0x52c842[_0xef45('0xae')]]['transfercalleridnum']=_0x52c842[_0xef45('0xba')];this[_0xef45('0x18')][_0x52c842[_0xef45('0xae')]][_0xef45('0xb0')]=_0x52c842['extension'];this['channels'][_0x52c842[_0xef45('0xae')]][_0xef45('0x9f')]=_0xef45('0xbd');this[_0xef45('0x22')]({'event':_0xef45('0xa8'),'uniqueid':_0x52c842[_0xef45('0xae')],'context':_0x52c842[_0xef45('0x3c')],'channel':_0x52c842[_0xef45('0xbe')]});}else{this[_0xef45('0x18')][_0x52c842[_0xef45('0xbf')]][_0xef45('0x9f')]=_0xef45('0xbd');}}}catch(_0x423125){logger[_0xef45('0x2c')](_0xef45('0xc0'),_0x52c842['uniqueid'],util[_0xef45('0x2e')](_0x423125,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xef45('0x26')]=function(_0x14a397){try{if(this[_0xef45('0x2f')](_0x14a397)){logger[_0xef45('0x38')](_0xef45('0xc1'),_0x14a397[_0xef45('0x35')],util['inspect'](_0x14a397,{'showHidden':![],'depth':null}));if(this[_0xef45('0x18')][_0x14a397[_0xef45('0x35')]]){if(!_['isNil'](this[_0xef45('0x18')][_0x14a397['uniqueid']]['answertime'])){this[_0xef45('0x18')][_0x14a397['uniqueid']][_0xef45('0xc2')]=moment()[_0xef45('0x44')](_0xef45('0x4d'));logger['info'](_0xef45('0xc3'),_0x14a397[_0xef45('0x35')],this[_0xef45('0x18')][_0x14a397[_0xef45('0x35')]][_0xef45('0xc2')]);}}}}catch(_0x4008e3){logger['error'](_0xef45('0xc4'),_0x14a397[_0xef45('0x35')],util[_0xef45('0x2e')](_0x4008e3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xef45('0x31')][_0xef45('0x28')]=function(_0x5e807){try{if(this[_0xef45('0x2f')](_0x5e807)){logger['debug'](_0xef45('0xc5'),_0x5e807[_0xef45('0x35')],util[_0xef45('0x2e')](_0x5e807,{'showHidden':![],'depth':null}));if(this[_0xef45('0x18')][_0x5e807[_0xef45('0x35')]]){if(!_[_0xef45('0x78')](this['channels'][_0x5e807['uniqueid']][_0xef45('0xc2')])){this['channels'][_0x5e807[_0xef45('0x35')]][_0xef45('0xc6')]+=moment()['milliseconds'](0x0)[_0xef45('0x69')](this[_0xef45('0x18')][_0x5e807['uniqueid']]['mohstarttime'],_0xef45('0x5f'));logger[_0xef45('0x29')](_0xef45('0xc7'),_0x5e807['uniqueid'],this[_0xef45('0x18')][_0x5e807[_0xef45('0x35')]][_0xef45('0xc6')]);delete this['channels'][_0x5e807[_0xef45('0x35')]]['mohstarttime'];}}}}catch(_0x30f15c){logger['error'](_0xef45('0xc8'),_0x5e807['uniqueid'],util[_0xef45('0x2e')](_0x30f15c,{'showHidden':![],'depth':null}));}};module[_0xef45('0xc9')]=VoiceCallReport;
\ No newline at end of file
index 908d7e0..3f16b5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc11e=['localhost','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','substring','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','voice_outbound_channel:save','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','cause-txt','endtime','diff','starttime','seconds','complete','answered','holdtime','billableseconds','sumHoldTime','sumBillable','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','syncNewExten','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x361843,_0x5eb2e5){var _0x1dbbba=function(_0x31e33d){while(--_0x31e33d){_0x361843['push'](_0x361843['shift']());}};_0x1dbbba(++_0x5eb2e5);}(_0xc11e,0x6b));var _0xec11=function(_0x3195f8,_0x3aeeba){_0x3195f8=_0x3195f8-0x0;var _0x54cd9f=_0xc11e[_0x3195f8];return _0x54cd9f;};'use strict';var _=require(_0xec11('0x0'));var moment=require(_0xec11('0x1'));var util=require(_0xec11('0x2'));var Redis=require('ioredis');var config=require(_0xec11('0x3'));var logger=require(_0xec11('0x4'))(_0xec11('0x5'));var ami=require(_0xec11('0x6'));config[_0xec11('0x7')]=_[_0xec11('0x8')](config[_0xec11('0x7')],{'host':_0xec11('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xec11('0x7')]));function VoiceDialReport(_0x51f5f0){this[_0xec11('0xa')]=_0x51f5f0[_0xec11('0xb')];this[_0xec11('0xc')]=_0x51f5f0['outbound'];this[_0xec11('0xd')]={};this[_0xec11('0xe')]={};ami['on'](_0xec11('0xf'),this[_0xec11('0x10')][_0xec11('0x11')](this));ami['on'](_0xec11('0x12'),this[_0xec11('0x13')][_0xec11('0x11')](this));ami['on'](_0xec11('0x14'),this[_0xec11('0x15')][_0xec11('0x11')](this));ami['on'](_0xec11('0x16'),this['syncNewExten']['bind'](this));ami['on']('hangup',this[_0xec11('0x17')][_0xec11('0x11')](this));}VoiceDialReport[_0xec11('0x18')][_0xec11('0x19')]=function(_0x5affcf){return _0x5affcf!==null&&!_[_0xec11('0x1a')](_0x5affcf);};VoiceDialReport[_0xec11('0x18')]['emit']=function(_0x177814,_0x144b4b,_0x4a8cde){io['to'](_0x177814)[_0xec11('0x1b')](_0x144b4b,_0x4a8cde);};VoiceDialReport[_0xec11('0x18')][_0xec11('0x10')]=function(_0x2901cb){try{if(this['isNotNull'](_0x2901cb)){logger[_0xec11('0x1c')](_0xec11('0x1d'),_0x2901cb[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x2901cb,{'showHidden':![],'depth':null}));if(this[_0xec11('0xa')][_0x2901cb['uniqueid']]){_[_0xec11('0x20')](this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]],{'starttime':moment()[_0xec11('0x21')](_0xec11('0x22')),'lastevent':_0xec11('0x23'),'interface':_0x2901cb['channel']['substring'](0x0,_0x2901cb[_0xec11('0x24')]['lastIndexOf']('-')),'membername':_0x2901cb[_0xec11('0x24')]['substring'](_0x2901cb[_0xec11('0x24')][_0xec11('0x25')]('/')+0x1,_0x2901cb['channel'][_0xec11('0x25')]('-'))},_['omit'](_0x2901cb,[_0xec11('0x26'),_0xec11('0x27')]));logger[_0xec11('0x28')](_0xec11('0x29'),_0x2901cb[_0xec11('0x1e')],this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]]['membername'],this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]][_0xec11('0x2a')]);logger[_0xec11('0x1c')](_0xec11('0x2b'),_0x2901cb[_0xec11('0x1e')],util['inspect'](this['channels'][_0x2901cb['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xec11('0xd')][_0x2901cb[_0xec11('0x1e')]])_[_0xec11('0x20')](this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]],this[_0xec11('0xd')][_0x2901cb[_0xec11('0x1e')]]);this[_0xec11('0x1b')](_0xec11('0x2c'),'voice_outbound_channel:save',this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]]);logger['debug'](_0xec11('0x2d'),_0x2901cb[_0xec11('0x1e')],util[_0xec11('0x1f')](this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xec11('0x1b')](_0xec11('0x2e'),this['channels'][_0x2901cb['uniqueid']]);}}}catch(_0x3f7fef){logger[_0xec11('0x2f')](_0xec11('0x30'),_0x2901cb['uniqueid'],util[_0xec11('0x1f')](_0x3f7fef,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xec11('0x13')]=function(_0x1da47c){try{if(this[_0xec11('0x19')](_0x1da47c)){logger[_0xec11('0x1c')](_0xec11('0x31'),_0x1da47c[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x1da47c,{'showHidden':![],'depth':null}));if(this[_0xec11('0xa')][_0x1da47c['uniqueid']]){this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x32')]=_0x1da47c['dialstatus'];if(_0x1da47c['dialstatus']===_0xec11('0x33')){this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x34')]=_0x1da47c[_0xec11('0x34')];this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x35')]=_0x1da47c[_0xec11('0x35')];this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x36')]=moment()[_0xec11('0x21')](_0xec11('0x22'));this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x37')]=_0xec11('0x38');logger[_0xec11('0x28')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x1da47c[_0xec11('0x1e')],_0x1da47c[_0xec11('0x24')][_0xec11('0x39')](_0x1da47c[_0xec11('0x24')][_0xec11('0x25')]('/')+0x1,_0x1da47c['channel'][_0xec11('0x25')]('-')));logger[_0xec11('0x1c')](_0xec11('0x3a'),_0x1da47c[_0xec11('0x1e')],util[_0xec11('0x1f')](this['channels'][_0x1da47c[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0xec11('0x3b'),this['channels'][_0x1da47c[_0xec11('0x1e')]]);}logger['debug'](_0xec11('0x3c'),_0x1da47c[_0xec11('0x1e')],util['inspect'](this[_0xec11('0xa')][_0x1da47c['uniqueid']],{'showHidden':![],'depth':null}));this[_0xec11('0x1b')](_0xec11('0x2c'),'voice_outbound_channel:save',this['channels'][_0x1da47c['uniqueid']]);}}}catch(_0x3f6cfd){logger['error'](_0xec11('0x3d'),_0x1da47c[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x3f6cfd,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xec11('0x18')]['syncVarSet']=function(_0x2cf5fe){try{if(this[_0xec11('0x19')](_0x2cf5fe)){logger[_0xec11('0x1c')](_0xec11('0x3e'),_0x2cf5fe[_0xec11('0x1e')],util['inspect'](_0x2cf5fe,{'showHidden':![],'depth':null}));this[_0xec11('0x3f')](_0x2cf5fe[_0xec11('0x1e')],_['keys'](_0x2cf5fe[_0xec11('0x40')])[0x0],_0x2cf5fe[_0xec11('0x41')]);if(this[_0xec11('0x19')](_0x2cf5fe['variable'])&&this[_0xec11('0x19')](_0x2cf5fe[_0xec11('0x40')][_0xec11('0x42')])){if(_[_0xec11('0x1a')](this[_0xec11('0xa')][_0x2cf5fe['uniqueid']])){this[_0xec11('0xa')][_0x2cf5fe[_0xec11('0x1e')]]={'routeId':_0x2cf5fe[_0xec11('0x41')],'variables':this[_0xec11('0xe')][_0x2cf5fe['uniqueid']]};logger[_0xec11('0x28')](_0xec11('0x43'),_0x2cf5fe[_0xec11('0x1e')],_0x2cf5fe[_0xec11('0x40')]['outboundrouteid'],_[_0xec11('0x44')](_0x2cf5fe[_0xec11('0x40')])[0x0],_0x2cf5fe[_0xec11('0x41')]);logger['debug']('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2cf5fe[_0xec11('0x1e')],util[_0xec11('0x1f')](this[_0xec11('0xa')][_0x2cf5fe[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));this[_0xec11('0x1b')](_0xec11('0x2c'),_0xec11('0x45'),this[_0xec11('0xa')][_0x2cf5fe[_0xec11('0x1e')]]);}}}}catch(_0x150beb){logger['error'](_0xec11('0x46'),_0x2cf5fe[_0xec11('0x1e')],util['inspect'](_0x150beb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xec11('0x18')][_0xec11('0x3f')]=function(_0x1476cd,_0x2a2782,_0x4bba3b){var _0x26bd4c=['rtpaudioqos',_0xec11('0x47'),_0xec11('0x48'),'rtpaudioqosjitterbridged',_0xec11('0x49'),_0xec11('0x4a'),'rtpaudioqosrtt','rtpaudioqosrttbridged',_0xec11('0x4b'),_0xec11('0x4c'),_0xec11('0x4d'),'bridgepvtcallid','membercalls',_0xec11('0x4e'),_0xec11('0x4f'),_0xec11('0x50'),_0xec11('0x51'),_0xec11('0x52'),_0xec11('0x53')];if(!_[_0xec11('0x54')](_0x2a2782)&&!_['includes'](_0x26bd4c,_0x2a2782)){if(_[_0xec11('0x1a')](this[_0xec11('0xe')][_0x1476cd])){this['variables'][_0x1476cd]={};}this[_0xec11('0xe')][_0x1476cd][_0x2a2782]=_0x4bba3b;}};VoiceDialReport[_0xec11('0x18')]['syncHangup']=function(_0x3eb6be){try{if(this[_0xec11('0x19')](_0x3eb6be)){logger[_0xec11('0x1c')]('[%s][voiceDialReport][hangup]\x20event:',_0x3eb6be[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x3eb6be,{'showHidden':![],'depth':null}));if(this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]]){logger[_0xec11('0x28')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x3eb6be['uniqueid'],_0x3eb6be[_0xec11('0x55')]);this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x56')]=moment()[_0xec11('0x21')](_0xec11('0x22'));this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]]['duration']=moment(this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x56')])[_0xec11('0x57')](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x58')],_0xec11('0x59'));this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x37')]=_0xec11('0x5a');this[_0xec11('0xc')]['total']+=0x1;if(this['channels'][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x36')]){this['outbound'][_0xec11('0x5b')]+=0x1;this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x5c')]=moment(this[_0xec11('0xa')][_0x3eb6be['uniqueid']]['answertime'])[_0xec11('0x57')](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x58')],_0xec11('0x59'));this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x5d')]=moment(this[_0xec11('0xa')][_0x3eb6be['uniqueid']]['endtime'])[_0xec11('0x57')](this[_0xec11('0xa')][_0x3eb6be['uniqueid']][_0xec11('0x36')],_0xec11('0x59'));this[_0xec11('0xc')][_0xec11('0x5e')]+=this[_0xec11('0xa')][_0x3eb6be['uniqueid']][_0xec11('0x5c')]||0x0;this[_0xec11('0xc')][_0xec11('0x5f')]+=this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x5d')];}this[_0xec11('0xc')]['sumDuration']+=this[_0xec11('0xa')][_0x3eb6be['uniqueid']]['duration'];logger[_0xec11('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x3eb6be['uniqueid'],util['inspect'](this[_0xec11('0xa')][_0x3eb6be['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xec11('0x1b')](_0xec11('0x60'),this[_0xec11('0xa')][_0x3eb6be['uniqueid']]);logger[_0xec11('0x1c')](_0xec11('0x61'),_0x3eb6be['uniqueid'],util['inspect'](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xec11('0x1b')]('custom:dialend',this[_0xec11('0xa')][_0x3eb6be['uniqueid']]);logger[_0xec11('0x1c')](_0xec11('0x62'),_0x3eb6be[_0xec11('0x1e')],util[_0xec11('0x1f')](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));this['emit'](_0xec11('0x2c'),_0xec11('0x63'),this[_0xec11('0xc')]);logger[_0xec11('0x28')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0xec11('0x64')](this[_0xec11('0xa')][_0x3eb6be['uniqueid']]));logger[_0xec11('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x3eb6be['uniqueid'],util['inspect'](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));this[_0xec11('0x1b')](_0xec11('0x2c'),_0xec11('0x65'),this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]]);delete this[_0xec11('0xa')][_0x3eb6be['uniqueid']];}else if(this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x66')]]){this[_0xec11('0xa')][_0x3eb6be['linkedid']][_0xec11('0x1e')]=this['channels'][_0x3eb6be[_0xec11('0x66')]]['destuniqueid'];}if(this[_0xec11('0xe')][_0x3eb6be[_0xec11('0x1e')]]){delete this['variables'][_0x3eb6be[_0xec11('0x1e')]];}}}catch(_0x286c7d){logger['error'](_0xec11('0x67'),_0x3eb6be['uniqueid'],util[_0xec11('0x1f')](_0x286c7d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xec11('0x18')][_0xec11('0x68')]=function(_0xf230dc){try{if(this['isNotNull'](_0xf230dc)){logger['debug']('[%s][voiceDialReport][newexten]\x20event:',_0xf230dc['uniqueid'],util[_0xec11('0x1f')](_0xf230dc,{'showHidden':![],'depth':null}));if(_0xf230dc[_0xec11('0x69')]['toLowerCase']()===_0xec11('0x6a')){_0xf230dc[_0xec11('0x6b')]=(_0xf230dc[_0xec11('0x6c')]||_0xf230dc[_0xec11('0x6b')])[_0xec11('0x6d')]();if(_[_0xec11('0x6e')](_0xf230dc[_0xec11('0x6b')],_0xec11('0x6f'))){if(_[_0xec11('0x1a')](this[_0xec11('0xd')][_0xf230dc[_0xec11('0x1e')]]))this['applications'][_0xf230dc[_0xec11('0x1e')]]={};logger[_0xec11('0x28')](_0xec11('0x70'),_0xf230dc[_0xec11('0x1e')],_0xf230dc[_0xec11('0x69')],_0xf230dc[_0xec11('0x6b')]);var _0x27e203=_0xf230dc[_0xec11('0x6b')]['split']('=');var _0x4e7d65=_0x27e203[0x0][_0xec11('0x71')](/cdr\((.*)\)/);if(_0x4e7d65)this[_0xec11('0xd')][_0xf230dc[_0xec11('0x1e')]][_0x4e7d65[0x1]]=_0x27e203[0x1];}}}}catch(_0x1c1c4d){logger['error'](_0xec11('0x72'),_0xf230dc[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x1c1c4d,{'showHidden':![],'depth':null}));}};module[_0xec11('0x73')]=VoiceDialReport;
\ No newline at end of file
+var _0x07fa=['[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','duration','diff','starttime','seconds','complete','answertime','answered','holdtime','billableseconds','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','custom:dialend','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','appdata','applicationdata','toLowerCase','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','moment','ioredis','../../../config/environment','../../../config/logger','../ami','redis','channels','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','syncNewExten','hangup','isNotNull','isUndefined','prototype','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','called','channel','substring','lastIndexOf','omit','event','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','voice_outbound_channel:save','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','dialstatus','connectedlinenum','YYYY-MM-DD\x20HH:mm:ss','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:'];(function(_0x54b53c,_0x2d5b3b){var _0x4f846e=function(_0x16008d){while(--_0x16008d){_0x54b53c['push'](_0x54b53c['shift']());}};_0x4f846e(++_0x2d5b3b);}(_0x07fa,0x11b));var _0xa07f=function(_0xc8a931,_0x260690){_0xc8a931=_0xc8a931-0x0;var _0x28bd27=_0x07fa[_0xc8a931];return _0x28bd27;};'use strict';var _=require('lodash');var moment=require(_0xa07f('0x0'));var util=require('util');var Redis=require(_0xa07f('0x1'));var config=require(_0xa07f('0x2'));var logger=require(_0xa07f('0x3'))('ami');var ami=require(_0xa07f('0x4'));config[_0xa07f('0x5')]=_['defaults'](config[_0xa07f('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa07f('0x5')]));function VoiceDialReport(_0x34d5d6){this[_0xa07f('0x6')]=_0x34d5d6[_0xa07f('0x7')];this[_0xa07f('0x8')]=_0x34d5d6[_0xa07f('0x8')];this['applications']={};this[_0xa07f('0x9')]={};ami['on'](_0xa07f('0xa'),this[_0xa07f('0xb')][_0xa07f('0xc')](this));ami['on'](_0xa07f('0xd'),this[_0xa07f('0xe')][_0xa07f('0xc')](this));ami['on'](_0xa07f('0xf'),this[_0xa07f('0x10')]['bind'](this));ami['on']('newexten',this[_0xa07f('0x11')][_0xa07f('0xc')](this));ami['on'](_0xa07f('0x12'),this['syncHangup'][_0xa07f('0xc')](this));}VoiceDialReport['prototype'][_0xa07f('0x13')]=function(_0x1afceb){return _0x1afceb!==null&&!_[_0xa07f('0x14')](_0x1afceb);};VoiceDialReport[_0xa07f('0x15')][_0xa07f('0x16')]=function(_0x34cd54,_0x72d140,_0x5dbb8e){io['to'](_0x34cd54)[_0xa07f('0x16')](_0x72d140,_0x5dbb8e);};VoiceDialReport[_0xa07f('0x15')][_0xa07f('0xb')]=function(_0x2f101f){try{if(this['isNotNull'](_0x2f101f)){logger['debug'](_0xa07f('0x17'),_0x2f101f[_0xa07f('0x18')],util[_0xa07f('0x19')](_0x2f101f,{'showHidden':![],'depth':null}));if(this['channels'][_0x2f101f[_0xa07f('0x18')]]){_[_0xa07f('0x1a')](this[_0xa07f('0x6')][_0x2f101f['uniqueid']],{'starttime':moment()[_0xa07f('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xa07f('0x1c'),'interface':_0x2f101f[_0xa07f('0x1d')][_0xa07f('0x1e')](0x0,_0x2f101f[_0xa07f('0x1d')][_0xa07f('0x1f')]('-')),'membername':_0x2f101f[_0xa07f('0x1d')][_0xa07f('0x1e')](_0x2f101f[_0xa07f('0x1d')][_0xa07f('0x1f')]('/')+0x1,_0x2f101f[_0xa07f('0x1d')][_0xa07f('0x1f')]('-'))},_[_0xa07f('0x20')](_0x2f101f,[_0xa07f('0x21'),'privilege']));logger[_0xa07f('0x22')](_0xa07f('0x23'),_0x2f101f['uniqueid'],this[_0xa07f('0x6')][_0x2f101f[_0xa07f('0x18')]][_0xa07f('0x24')],this['channels'][_0x2f101f[_0xa07f('0x18')]]['interface']);logger[_0xa07f('0x25')](_0xa07f('0x26'),_0x2f101f[_0xa07f('0x18')],util['inspect'](this['channels'][_0x2f101f[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));if(this[_0xa07f('0x27')][_0x2f101f[_0xa07f('0x18')]])_[_0xa07f('0x1a')](this[_0xa07f('0x6')][_0x2f101f[_0xa07f('0x18')]],this['applications'][_0x2f101f[_0xa07f('0x18')]]);this[_0xa07f('0x16')](_0xa07f('0x28'),_0xa07f('0x29'),this[_0xa07f('0x6')][_0x2f101f[_0xa07f('0x18')]]);logger[_0xa07f('0x25')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x2f101f['uniqueid'],util[_0xa07f('0x19')](this[_0xa07f('0x6')][_0x2f101f[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));ami[_0xa07f('0x16')](_0xa07f('0x2a'),this[_0xa07f('0x6')][_0x2f101f[_0xa07f('0x18')]]);}}}catch(_0xfbf659){logger[_0xa07f('0x2b')](_0xa07f('0x2c'),_0x2f101f[_0xa07f('0x18')],util['inspect'](_0xfbf659,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa07f('0x15')]['syncDialEnd']=function(_0x4d89a1){try{if(this[_0xa07f('0x13')](_0x4d89a1)){logger[_0xa07f('0x25')]('[%s][voiceDialReport][dialend]\x20event:',_0x4d89a1[_0xa07f('0x18')],util[_0xa07f('0x19')](_0x4d89a1,{'showHidden':![],'depth':null}));if(this[_0xa07f('0x6')][_0x4d89a1[_0xa07f('0x18')]]){this[_0xa07f('0x6')][_0x4d89a1[_0xa07f('0x18')]][_0xa07f('0x2d')]=_0x4d89a1[_0xa07f('0x2d')];if(_0x4d89a1[_0xa07f('0x2d')]==='ANSWER'){this[_0xa07f('0x6')][_0x4d89a1[_0xa07f('0x18')]][_0xa07f('0x2e')]=_0x4d89a1[_0xa07f('0x2e')];this['channels'][_0x4d89a1[_0xa07f('0x18')]]['connectedlinename']=_0x4d89a1['connectedlinename'];this['channels'][_0x4d89a1['uniqueid']]['answertime']=moment()[_0xa07f('0x1b')](_0xa07f('0x2f'));this[_0xa07f('0x6')][_0x4d89a1[_0xa07f('0x18')]][_0xa07f('0x30')]=_0xa07f('0x31');logger['info'](_0xa07f('0x32'),_0x4d89a1[_0xa07f('0x18')],_0x4d89a1[_0xa07f('0x1d')][_0xa07f('0x1e')](_0x4d89a1[_0xa07f('0x1d')][_0xa07f('0x1f')]('/')+0x1,_0x4d89a1[_0xa07f('0x1d')][_0xa07f('0x1f')]('-')));logger[_0xa07f('0x25')](_0xa07f('0x33'),_0x4d89a1['uniqueid'],util['inspect'](this[_0xa07f('0x6')][_0x4d89a1[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this['channels'][_0x4d89a1['uniqueid']]);}logger[_0xa07f('0x25')](_0xa07f('0x34'),_0x4d89a1[_0xa07f('0x18')],util[_0xa07f('0x19')](this['channels'][_0x4d89a1[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));this[_0xa07f('0x16')](_0xa07f('0x28'),'voice_outbound_channel:save',this[_0xa07f('0x6')][_0x4d89a1[_0xa07f('0x18')]]);}}}catch(_0x560711){logger[_0xa07f('0x2b')](_0xa07f('0x35'),_0x4d89a1['uniqueid'],util[_0xa07f('0x19')](_0x560711,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa07f('0x15')][_0xa07f('0x10')]=function(_0xa271b1){try{if(this[_0xa07f('0x13')](_0xa271b1)){logger[_0xa07f('0x25')](_0xa07f('0x36'),_0xa271b1[_0xa07f('0x18')],util[_0xa07f('0x19')](_0xa271b1,{'showHidden':![],'depth':null}));this[_0xa07f('0x37')](_0xa271b1[_0xa07f('0x18')],_[_0xa07f('0x38')](_0xa271b1['variable'])[0x0],_0xa271b1[_0xa07f('0x39')]);if(this[_0xa07f('0x13')](_0xa271b1[_0xa07f('0x3a')])&&this['isNotNull'](_0xa271b1[_0xa07f('0x3a')][_0xa07f('0x3b')])){if(_['isUndefined'](this['channels'][_0xa271b1[_0xa07f('0x18')]])){this[_0xa07f('0x6')][_0xa271b1[_0xa07f('0x18')]]={'routeId':_0xa271b1['value'],'variables':this[_0xa07f('0x9')][_0xa271b1[_0xa07f('0x18')]],'motionChannel':_0xa07f('0x3c')};logger[_0xa07f('0x22')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0xa271b1['uniqueid'],_0xa271b1[_0xa07f('0x3a')][_0xa07f('0x3b')],_[_0xa07f('0x38')](_0xa271b1[_0xa07f('0x3a')])[0x0],_0xa271b1['value']);logger[_0xa07f('0x25')](_0xa07f('0x3d'),_0xa271b1[_0xa07f('0x18')],util[_0xa07f('0x19')](this[_0xa07f('0x6')][_0xa271b1['uniqueid']],{'showHidden':![],'depth':null}));this[_0xa07f('0x16')](_0xa07f('0x28'),_0xa07f('0x29'),this['channels'][_0xa271b1['uniqueid']]);}}}}catch(_0x4ecac7){logger[_0xa07f('0x2b')](_0xa07f('0x3e'),_0xa271b1[_0xa07f('0x18')],util[_0xa07f('0x19')](_0x4ecac7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa07f('0x15')][_0xa07f('0x37')]=function(_0x3b776a,_0x176eb5,_0x3b3de7){var _0x12eb20=['rtpaudioqos','rtpaudioqosbridged',_0xa07f('0x3f'),_0xa07f('0x40'),_0xa07f('0x41'),'rtpaudioqoslossbridged',_0xa07f('0x42'),_0xa07f('0x43'),_0xa07f('0x44'),_0xa07f('0x45'),_0xa07f('0x46'),_0xa07f('0x47'),_0xa07f('0x48'),_0xa07f('0x49'),_0xa07f('0x4a'),_0xa07f('0x4b'),'membername','memberpenalty',_0xa07f('0x4c')];if(!_['isNil'](_0x176eb5)&&!_[_0xa07f('0x4d')](_0x12eb20,_0x176eb5)){if(_[_0xa07f('0x14')](this['variables'][_0x3b776a])){this[_0xa07f('0x9')][_0x3b776a]={};}this[_0xa07f('0x9')][_0x3b776a][_0x176eb5]=_0x3b3de7;}};VoiceDialReport[_0xa07f('0x15')][_0xa07f('0x4e')]=function(_0x3e319d){try{if(this['isNotNull'](_0x3e319d)){logger[_0xa07f('0x25')](_0xa07f('0x4f'),_0x3e319d['uniqueid'],util['inspect'](_0x3e319d,{'showHidden':![],'depth':null}));if(this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]]){logger['info'](_0xa07f('0x50'),_0x3e319d['uniqueid'],_0x3e319d['cause-txt']);this['channels'][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x51')]=moment()[_0xa07f('0x1b')](_0xa07f('0x2f'));this[_0xa07f('0x6')][_0x3e319d['uniqueid']][_0xa07f('0x52')]=moment(this[_0xa07f('0x6')][_0x3e319d['uniqueid']][_0xa07f('0x51')])[_0xa07f('0x53')](this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x54')],_0xa07f('0x55'));this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x30')]=_0xa07f('0x56');this['outbound']['total']+=0x1;if(this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x57')]){this[_0xa07f('0x8')][_0xa07f('0x58')]+=0x1;this['channels'][_0x3e319d['uniqueid']][_0xa07f('0x59')]=moment(this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x57')])[_0xa07f('0x53')](this['channels'][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x54')],_0xa07f('0x55'));this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x5a')]=moment(this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]]['endtime'])[_0xa07f('0x53')](this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x57')],_0xa07f('0x55'));this[_0xa07f('0x8')]['sumHoldTime']+=this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]][_0xa07f('0x59')]||0x0;this[_0xa07f('0x8')][_0xa07f('0x5b')]+=this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]]['billableseconds'];}this[_0xa07f('0x8')][_0xa07f('0x5c')]+=this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]]['duration'];logger[_0xa07f('0x25')](_0xa07f('0x5d'),_0x3e319d[_0xa07f('0x18')],util[_0xa07f('0x19')](this[_0xa07f('0x6')][_0x3e319d['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0xa07f('0x5e'),this['channels'][_0x3e319d[_0xa07f('0x18')]]);logger[_0xa07f('0x25')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x3e319d['uniqueid'],util[_0xa07f('0x19')](this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));ami['emit'](_0xa07f('0x5f'),this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]]);logger[_0xa07f('0x25')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x3e319d[_0xa07f('0x18')],util[_0xa07f('0x19')](this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));this[_0xa07f('0x16')]('voice:outbound','voice_outbound:save',this[_0xa07f('0x8')]);logger[_0xa07f('0x22')](_0xa07f('0x60'),JSON[_0xa07f('0x61')](this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]]));logger['debug'](_0xa07f('0x62'),_0x3e319d[_0xa07f('0x18')],util[_0xa07f('0x19')](this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]],{'showHidden':![],'depth':null}));this[_0xa07f('0x16')](_0xa07f('0x28'),_0xa07f('0x63'),this[_0xa07f('0x6')][_0x3e319d['uniqueid']]);delete this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x18')]];}else if(this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x64')]]){this[_0xa07f('0x6')][_0x3e319d[_0xa07f('0x64')]]['uniqueid']=this[_0xa07f('0x6')][_0x3e319d['linkedid']][_0xa07f('0x65')];}if(this['variables'][_0x3e319d[_0xa07f('0x18')]]){delete this['variables'][_0x3e319d['uniqueid']];}}}catch(_0x51cb55){logger[_0xa07f('0x2b')](_0xa07f('0x66'),_0x3e319d[_0xa07f('0x18')],util[_0xa07f('0x19')](_0x51cb55,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa07f('0x15')][_0xa07f('0x11')]=function(_0x2679bd){try{if(this[_0xa07f('0x13')](_0x2679bd)){logger[_0xa07f('0x25')](_0xa07f('0x67'),_0x2679bd[_0xa07f('0x18')],util['inspect'](_0x2679bd,{'showHidden':![],'depth':null}));if(_0x2679bd[_0xa07f('0x68')]['toLowerCase']()==='set'){_0x2679bd['applicationdata']=(_0x2679bd[_0xa07f('0x69')]||_0x2679bd[_0xa07f('0x6a')])[_0xa07f('0x6b')]();if(_['startsWith'](_0x2679bd[_0xa07f('0x6a')],_0xa07f('0x6c'))){if(_['isUndefined'](this['applications'][_0x2679bd[_0xa07f('0x18')]]))this[_0xa07f('0x27')][_0x2679bd[_0xa07f('0x18')]]={};logger[_0xa07f('0x22')](_0xa07f('0x6d'),_0x2679bd[_0xa07f('0x18')],_0x2679bd[_0xa07f('0x68')],_0x2679bd[_0xa07f('0x6a')]);var _0x92b67b=_0x2679bd[_0xa07f('0x6a')][_0xa07f('0x6e')]('=');var _0x5d6aae=_0x92b67b[0x0]['match'](/cdr\((.*)\)/);if(_0x5d6aae)this['applications'][_0x2679bd[_0xa07f('0x18')]][_0x5d6aae[0x1]]=_0x92b67b[0x1];}}}}catch(_0x7cf3a8){logger[_0xa07f('0x2b')](_0xa07f('0x6f'),_0x2679bd[_0xa07f('0x18')],util['inspect'](_0x7cf3a8,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index e311ca3..0e289f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc961=['[voiceQueueReport][queuesummary]\x20event:','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','available','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','push','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','syncQueueCallerLeave','connectedlinenum','connectedlinename','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','startsWith','toLowerCase','local/','linkedid','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','keys','value','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','EXITWITHKEY','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','[%s][voiceQueueReport][hangup]','length','abandoned','diff','milliseconds','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','sumHoldTime','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transferuniqueid','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','BLINDTRANSFER','BLIND','extension','BlindTransfer','transfererchannel','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','mohtime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../model/queueReport','defaults','localhost','socket.io-emitter','redis','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','campaigns','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncAgentComplete','syncAgentConnect','syncVarSet','hangup','syncFullyBooted','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','clearZombieChannels','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','inspect','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice:queue:%s','voice_queue_channel:remove','emitVoiceQueueSummary','type','strategy','answered','loggedIn','sumDuration','total','unmanaged','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','then','flagQueueSummary','[voiceQueueReport][queuesummary]','isNotNull'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc961,0x17a));var _0x1c96=function(_0x56418c,_0xd90668){_0x56418c=_0x56418c-0x0;var _0x1c838d=_0xc961[_0x56418c];return _0x1c838d;};'use strict';var _=require(_0x1c96('0x0'));var moment=require(_0x1c96('0x1'));var util=require(_0x1c96('0x2'));var md5=require(_0x1c96('0x3'));var Redis=require(_0x1c96('0x4'));var config=require(_0x1c96('0x5'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x1c96('0x6'));config['redis']=_[_0x1c96('0x7')](config['redis'],{'host':_0x1c96('0x8'),'port':0x18eb});var io=require(_0x1c96('0x9'))(new Redis(config[_0x1c96('0xa')]));var Sequence=function(){};Sequence[_0x1c96('0xb')][_0x1c96('0xc')]=function(_0x473a4c){this['tail']=this[_0x1c96('0xd')]?this[_0x1c96('0xd')][_0x1c96('0xe')](_0x473a4c):_0x473a4c();};function VoiceQueueReport(_0x34497e){this[_0x1c96('0xf')]=new Sequence();this[_0x1c96('0x10')]={};this[_0x1c96('0x11')]=_0x34497e[_0x1c96('0x11')];this[_0x1c96('0x12')]=_0x34497e[_0x1c96('0x13')];this[_0x1c96('0x14')]=_0x34497e[_0x1c96('0x14')];this['flagQueueSummary']=!![];this[_0x1c96('0x15')]=_0x34497e[_0x1c96('0x15')];this['variables']={};ami['on'](_0x1c96('0x16'),this[_0x1c96('0x17')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x19'),this[_0x1c96('0x1a')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x1b'),this[_0x1c96('0x1c')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x1d'),this[_0x1c96('0x1e')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x1f'),this['syncQueueCallerLeave'][_0x1c96('0x18')](this));ami['on']('agentcomplete',this[_0x1c96('0x20')][_0x1c96('0x18')](this));ami['on']('agentconnect',this[_0x1c96('0x21')]['bind'](this));ami['on']('varset',this[_0x1c96('0x22')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x23'),this['syncHangup'][_0x1c96('0x18')](this));ami['on']('fullybooted',this[_0x1c96('0x24')][_0x1c96('0x18')](this));ami['on']('newexten',this[_0x1c96('0x25')]['bind'](this));ami['on'](_0x1c96('0x26'),this[_0x1c96('0x27')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x28'),this[_0x1c96('0x29')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x2a'),this[_0x1c96('0x2b')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x2c'),this['syncBlindTransfer'][_0x1c96('0x18')](this));this[_0x1c96('0x2d')]();this[_0x1c96('0x2e')]();}function clearChannels(_0x528afc){if(!_['isEmpty'](_0x528afc)){for(var _0x2d5aaa in _0x528afc){if(_0x528afc[_0x1c96('0x2f')](_0x2d5aaa)){delete _0x528afc[_0x2d5aaa];}}}}function clearCampaigns(_0x48798a){if(!_[_0x1c96('0x30')](_0x48798a)){for(var _0x43b822 in _0x48798a){if(_0x48798a[_0x1c96('0x2f')](_0x43b822)){_0x48798a[_0x43b822]['originated']=0x0;}}}}function clearVoiceQueues(_0x4d588d){if(!_[_0x1c96('0x30')](_0x4d588d)){for(var _0x8d0b51 in _0x4d588d){if(_0x4d588d['hasOwnProperty'](_0x8d0b51)){_0x4d588d[_0x8d0b51][_0x1c96('0x31')]=0x0;_0x4d588d[_0x8d0b51][_0x1c96('0x32')]=0x0;_0x4d588d[_0x8d0b51][_0x1c96('0x33')]=0x0;_0x4d588d[_0x8d0b51][_0x1c96('0x34')]=0x0;_0x4d588d[_0x8d0b51]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x523b43){if(!_[_0x1c96('0x30')](_0x523b43)){for(var _0x556730 in _0x523b43){if(_0x523b43[_0x1c96('0x2f')](_0x556730)){_0x523b43[_0x556730]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x1c96('0x35')]=function(){var _0x4438fb=this;for(var _0x104b15 in this[_0x1c96('0x12')]){if(this[_0x1c96('0x12')][_0x1c96('0x2f')](_0x104b15)&&!this['channels'][_0x104b15]['switch']){this[_0x1c96('0xf')][_0x1c96('0xc')](function(){if(!_[_0x1c96('0x36')](_0x4438fb[_0x1c96('0x12')][_0x104b15])){return ami[_0x1c96('0x37')]({'action':_0x1c96('0x38'),'channel':_0x4438fb[_0x1c96('0x12')][_0x104b15][_0x1c96('0x39')]})[_0x1c96('0x3a')](function(_0x5346ac){if(_0x5346ac[_0x1c96('0x3b')]===_0x1c96('0x3c')){setTimeout(function(){if(_0x4438fb[_0x1c96('0x12')][_0x104b15]){delete _0x4438fb[_0x1c96('0x12')][_0x104b15];logger[_0x1c96('0x3d')](_0x1c96('0x3e'),_0x104b15,util['inspect'](_0x5346ac,{'showHidden':![],'depth':null}));}if(_0x4438fb[_0x1c96('0x10')][_0x104b15]){delete _0x4438fb[_0x1c96('0x10')][_0x104b15];logger['error'](_0x1c96('0x3f'),_0x104b15,util[_0x1c96('0x40')](_0x5346ac,{'showHidden':![],'depth':null}));}if(_0x4438fb[_0x1c96('0x41')][_0x104b15]){delete _0x4438fb[_0x1c96('0x41')][_0x104b15];logger[_0x1c96('0x3d')](_0x1c96('0x42'),_0x104b15,util[_0x1c96('0x40')](_0x5346ac,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger[_0x1c96('0x3d')](_0x1c96('0x43'));clearChannels(this['channels']);this[_0x1c96('0x44')](this['queueReports']);clearAgentBooked(this[_0x1c96('0x11')]);clearVoiceQueues(this[_0x1c96('0x14')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x1c96('0x44')]=function(_0xbcc634){var _0x194546=this;if(!_[_0x1c96('0x30')](_0xbcc634)){for(var _0x15f14c in _0xbcc634){if(_0xbcc634[_0x1c96('0x2f')](_0x15f14c)){_0x194546[_0x1c96('0x45')](_0xbcc634[_0x15f14c],'clearqueuereport');delete _0xbcc634[_0x15f14c];}}}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x46')]=function(_0x5e0df7,_0x2bdcb6,_0x595037){io['to'](_0x5e0df7)[_0x1c96('0x46')](_0x2bdcb6,_0x595037);};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x47')]=function(_0x435748,_0x53c183){logger[_0x1c96('0x48')](_0x1c96('0x49')+_0x53c183+_0x1c96('0x4a'),_0x435748[_0x1c96('0x4b')],util['inspect'](_0x435748,{'showHidden':![],'depth':null}));this[_0x1c96('0x46')](util[_0x1c96('0x4c')]('voice:queue:%s',_0x435748[_0x1c96('0x4d')]),_0x1c96('0x4e'),_0x435748);io[_0x1c96('0x46')](_0x1c96('0x4f'),_0x435748);};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x45')]=function(_0x1f1213,_0xb74171){logger['debug'](_0x1c96('0x49')+_0xb74171+_0x1c96('0x50'),_0x1f1213[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x1f1213,{'showHidden':![],'depth':null}));this[_0x1c96('0x46')](util[_0x1c96('0x4c')](_0x1c96('0x51'),_0x1f1213[_0x1c96('0x4d')]),_0x1c96('0x52'),_0x1f1213);io['emit']('voice_queue_presence:remove',_0x1f1213);};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x53')]=function(_0xaf5b6f,_0x25f8e7){if(_0xaf5b6f[_0x1c96('0x54')]==='inbound'){var _0x55da15={'id':_0xaf5b6f['id'],'name':_0xaf5b6f[_0x1c96('0x4d')],'strategy':_0xaf5b6f[_0x1c96('0x55')],'answered':_0xaf5b6f[_0x1c96('0x56')],'available':_0xaf5b6f['available'],'loggedIn':_0xaf5b6f[_0x1c96('0x57')],'pTalking':_0xaf5b6f[_0x1c96('0x33')],'sumBillable':_0xaf5b6f['sumBillable'],'sumDuration':_0xaf5b6f[_0x1c96('0x58')],'sumHoldTime':_0xaf5b6f['sumHoldTime']||0x0,'talking':_0xaf5b6f['talking'],'total':_0xaf5b6f[_0x1c96('0x59')],'type':_0xaf5b6f[_0x1c96('0x54')],'unmanaged':_0xaf5b6f[_0x1c96('0x5a')],'abandoned':_0xaf5b6f['abandoned'],'waiting':_0xaf5b6f['waiting']};if(_0xaf5b6f['Trunk']){_0x55da15[_0x1c96('0x5b')]={'id':_0xaf5b6f['Trunk']['id'],'name':_0xaf5b6f[_0x1c96('0x5b')]['name'],'active':_0xaf5b6f[_0x1c96('0x5b')][_0x1c96('0x5c')],'callerid':_0xaf5b6f[_0x1c96('0x5b')][_0x1c96('0x5d')]};}if(_0xaf5b6f['Interval']){_0x55da15[_0x1c96('0x5e')]={'id':_0xaf5b6f[_0x1c96('0x5e')]['id'],'name':_0xaf5b6f[_0x1c96('0x5e')][_0x1c96('0x4d')]};}var _0x5b711c=md5(JSON[_0x1c96('0x5f')](_0x55da15));if(_0xaf5b6f[_0x1c96('0x3')]!==_0x5b711c){_0xaf5b6f[_0x1c96('0x3')]=_0x5b711c;logger[_0x1c96('0x48')](_0x1c96('0x60')+_0x25f8e7+_0x1c96('0x61'),util[_0x1c96('0x40')](_0x55da15,{'showHidden':![],'depth':null}));this['emit'](util[_0x1c96('0x4c')]('voice:queue:%s',_0x55da15[_0x1c96('0x4d')]),_0x1c96('0x62'),_0x55da15);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0x4692b5){return _0x4692b5!==null&&!_[_0x1c96('0x63')](_0x4692b5);};VoiceQueueReport[_0x1c96('0xb')]['loopQueueShow']=function(){var _0x1265af=this;setInterval(function(){_0x1265af[_0x1c96('0x35')]();ami[_0x1c96('0x37')]({'action':'queues'})['catch'](function(_0x33c8fc){logger['error']('[voiceQueueReport][queues]',util['inspect'](_0x33c8fc,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x1c96('0x2d')]=function(){var _0x4b5a50=this;setInterval(function(){if(_0x4b5a50['flagQueueSummary']){return ami['Action']({'action':_0x1c96('0x16')})[_0x1c96('0x64')](function(_0x160720){_0x4b5a50[_0x1c96('0x65')]=![];})[_0x1c96('0x3a')](function(_0x24130d){logger[_0x1c96('0x3d')](_0x1c96('0x66'),util[_0x1c96('0x40')](_0x24130d,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x1c96('0x17')]=function(_0x12be3f){try{if(this[_0x1c96('0x67')](_0x12be3f)&&this[_0x1c96('0x67')](_0x12be3f['queue'])){logger[_0x1c96('0x48')](_0x1c96('0x68'),util[_0x1c96('0x40')](_0x12be3f,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]){logger[_0x1c96('0x6a')](_0x1c96('0x6b'),_0x12be3f[_0x1c96('0x69')]);var _0x4a55bf=_[_0x1c96('0x6c')](this[_0x1c96('0x12')],_0x1c96('0x69'))[_0x12be3f['queue']]||0x0;var _0x28cb48=_0x4a55bf-_0x12be3f[_0x1c96('0x6d')];if(this[_0x1c96('0x14')][_0x12be3f['queue']]['waiting']!==_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x6d')])||this['voiceQueues'][_0x12be3f['queue']]['loggedIn']!==_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x6f')])||this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]['available']!==_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x70')])||this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x32')]!==_0x28cb48){this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]['waiting']=_['toNumber'](_0x12be3f[_0x1c96('0x6d')]);this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x57')]=_[_0x1c96('0x6e')](_0x12be3f['loggedin']);this['voiceQueues'][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x70')]=_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x70')]);this[_0x1c96('0x14')][_0x12be3f['queue']]['talking']=_0x28cb48>0x0?_0x28cb48:0x0;this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x32')]=this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]['talking']>_['toNumber'](_0x12be3f[_0x1c96('0x6f')])?_[_0x1c96('0x6e')](_0x12be3f['loggedin']):this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x32')];this[_0x1c96('0x53')](this['voiceQueues'][_0x12be3f[_0x1c96('0x69')]],'queuesummary');}logger['debug'](_0x1c96('0x71'),util[_0x1c96('0x40')](this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]],{'showHidden':![],'depth':null}));ami['emit'](_0x1c96('0x72'),this[_0x1c96('0x14')][_0x12be3f['queue']]);}}}catch(_0x2b3b77){logger[_0x1c96('0x3d')](_0x1c96('0x66'),util['inspect'](_0x2b3b77,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')]['syncQueueSummaryComplete']=function(_0x5d0006){logger[_0x1c96('0x48')](_0x1c96('0x73'),util['inspect'](_0x5d0006,{'showHidden':![],'depth':null}));this[_0x1c96('0x65')]=!![];};VoiceQueueReport[_0x1c96('0xb')]['syncQueueCallerJoin']=function(_0x146b35){try{if(this[_0x1c96('0x67')](_0x146b35)){logger[_0x1c96('0x48')](_0x1c96('0x74'),_0x146b35['uniqueid'],util['inspect'](_0x146b35,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x1c96('0x10')][_0x146b35[_0x1c96('0x4b')]]))this[_0x1c96('0x10')][_0x146b35[_0x1c96('0x4b')]]=[];if(_[_0x1c96('0x63')](this[_0x1c96('0x12')][_0x146b35[_0x1c96('0x4b')]]))this['channels'][_0x146b35[_0x1c96('0x4b')]]={};var _0x36ee41=new QueueReport();_0x36ee41[_0x1c96('0x4d')]=_0x146b35[_0x1c96('0x69')];_0x36ee41[_0x1c96('0x54')]=this['voiceQueues'][_0x36ee41[_0x1c96('0x4d')]]&&this[_0x1c96('0x14')][_0x36ee41[_0x1c96('0x4d')]][_0x1c96('0x54')]?this[_0x1c96('0x14')][_0x36ee41[_0x1c96('0x4d')]][_0x1c96('0x54')]||'inbound':_0x1c96('0x75');_0x36ee41[_0x1c96('0x69')]=_0x146b35[_0x1c96('0x69')];_0x36ee41[_0x1c96('0x76')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x36ee41['position']=_0x146b35['position'];_0x36ee41[_0x1c96('0x78')]=_0x146b35[_0x1c96('0x78')];_0x36ee41[_0x1c96('0x4b')]=_0x146b35['uniqueid'];_0x36ee41[_0x1c96('0x79')]=this[_0x1c96('0x12')][_0x146b35[_0x1c96('0x4b')]]['routealias'];logger[_0x1c96('0x6a')](_0x1c96('0x7a'),_0x36ee41['name'],_0x36ee41[_0x1c96('0x54')]);_[_0x1c96('0x7b')](_0x36ee41,_[_0x1c96('0x7c')](_0x146b35,_['keys'](_0x36ee41)));this[_0x1c96('0x10')][_0x146b35['uniqueid']][_0x1c96('0x7d')](_0x36ee41);this[_0x1c96('0x12')][_0x146b35[_0x1c96('0x4b')]]=_0x36ee41;this[_0x1c96('0x47')](_0x36ee41,_0x1c96('0x1b'));}}catch(_0x27b49c){logger[_0x1c96('0x3d')](_0x1c96('0x74'),_0x146b35[_0x1c96('0x4b')],util['inspect'](_0x27b49c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x1e')]=function(_0x416d21){try{if(this[_0x1c96('0x67')](_0x416d21)){logger['debug']('[%s][voiceQueueReport][queuecallerabandon]',_0x416d21[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x416d21,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x416d21[_0x1c96('0x4b')]]){var _0x1c3816=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x416d21[_0x1c96('0x4b')]]);_0x1c3816[_0x1c96('0x7f')]=![];_0x1c3816[_0x1c96('0x80')]=null;_0x1c3816['holdtime']=_0x416d21[_0x1c96('0x81')];_0x1c3816[_0x1c96('0x82')]=_0x416d21['originalposition'];_0x1c3816[_0x1c96('0x1d')]=!![];_0x1c3816['queuecallerabandonAt']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x1c3816[_0x1c96('0x83')]=_0x1c96('0x84');_0x1c3816[_0x1c96('0x85')]=null;logger[_0x1c96('0x6a')](_0x1c96('0x86'),_0x1c3816[_0x1c96('0x4d')],_0x1c3816[_0x1c96('0x54')]);this[_0x1c96('0x12')][_0x416d21[_0x1c96('0x4b')]]=_0x1c3816;this['emitVoiceQueueChannelRemove'](_0x1c3816,_0x1c96('0x1d'));}}}catch(_0x18358f){logger[_0x1c96('0x3d')](_0x1c96('0x87'),_0x416d21[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x18358f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x88')]=function(_0x179ced){try{if(this[_0x1c96('0x67')](_0x179ced)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][queuecallerleave]',_0x179ced[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x179ced,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x179ced[_0x1c96('0x4b')]]){var _0x2235e8=_['last'](this['queueReports'][_0x179ced['uniqueid']]);_0x2235e8['queuecallerleaveAt']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x2235e8['connectedlinenum']=_0x179ced[_0x1c96('0x89')];_0x2235e8[_0x1c96('0x8a')]=_0x179ced['connectedlinename'];logger[_0x1c96('0x6a')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2235e8['name'],_0x2235e8[_0x1c96('0x54')],_0x179ced['connectedlinenum'],_0x179ced[_0x1c96('0x8a')]);this['channels'][_0x179ced[_0x1c96('0x4b')]]=_0x2235e8;this[_0x1c96('0x47')](_0x2235e8,_0x1c96('0x1f'));}}}catch(_0x399945){logger[_0x1c96('0x3d')]('[%s][voiceQueueReport][queuecallerleave]',_0x179ced[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x399945,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x21')]=function(_0x2e9867){try{if(this[_0x1c96('0x67')](_0x2e9867)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][agentconnect]',_0x2e9867[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x2e9867,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2e9867['uniqueid']]){var _0x41ed68=_[_0x1c96('0x7e')](this['queueReports'][_0x2e9867[_0x1c96('0x4b')]]);_0x41ed68[_0x1c96('0x7f')]=!![];_0x41ed68['queuecallerexitreason']='COMPLETEDBYAGENT';logger['info'](_0x1c96('0x8b'),_0x41ed68[_0x1c96('0x4d')],_0x41ed68[_0x1c96('0x54')]);}}}catch(_0x4ea7e4){logger['error'](_0x1c96('0x8c'),_0x2e9867[_0x1c96('0x4b')],util['inspect'](_0x4ea7e4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x20')]=function(_0x134bc7){try{if(this[_0x1c96('0x67')](_0x134bc7)){logger['debug'](_0x1c96('0x8d'),_0x134bc7[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x134bc7,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x134bc7['uniqueid']]){var _0x828af=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x4b')]]);_0x828af['queuecallerabandon']=![];_0x828af[_0x1c96('0x8e')]=null;_0x828af['assigned']=!![];_0x828af[_0x1c96('0x85')]=_0x134bc7[_0x1c96('0x8f')];_0x828af[_0x1c96('0x81')]=_0x134bc7[_0x1c96('0x81')];_0x828af[_0x1c96('0x7f')]=!![];_0x828af[_0x1c96('0x90')]=![];_0x828af[_0x1c96('0x91')]=null;if(!_0x828af[_0x1c96('0x92')]){if(_0x134bc7[_0x1c96('0x93')]=='transfer'){_0x828af[_0x1c96('0x83')]=_0x1c96('0x94');logger[_0x1c96('0x6a')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x828af[_0x1c96('0x4d')],_0x828af[_0x1c96('0x54')]);}else{if(_[_0x1c96('0x95')](_0x134bc7[_0x1c96('0x39')][_0x1c96('0x96')](),_0x1c96('0x97'))){if(this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x98')]]){var _0x496012=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x98')]]);_0x496012[_0x1c96('0x7f')]=![];_0x496012[_0x1c96('0x90')]=!![];_0x496012[_0x1c96('0x91')]=moment(_0x828af[_0x1c96('0x76')])['add'](_0x134bc7[_0x1c96('0x81')],_0x1c96('0x99'))[_0x1c96('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x496012[_0x1c96('0x83')]=_0x1c96('0x9a');_0x496012[_0x1c96('0x92')]=!![];_0x496012[_0x1c96('0x9b')]=_0x1c96('0x9c');_0x496012[_0x1c96('0x9d')]=_0x134bc7[_0x1c96('0x9e')];_0x496012['transferuniqueid']=_0x134bc7[_0x1c96('0x4b')];logger[_0x1c96('0x6a')](_0x1c96('0x9f'),_0x496012[_0x1c96('0x4d')],_0x496012[_0x1c96('0x54')]);var _0x58cadd=this['queueReports'][_0x134bc7[_0x1c96('0x98')]];this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x98')]]=this['queueReports'][_0x134bc7[_0x1c96('0x4b')]];this['queueReports'][_0x134bc7['uniqueid']]=_0x58cadd;}}else{_0x828af[_0x1c96('0x83')]=_0x1c96('0xa0')+_0x134bc7[_0x1c96('0x93')][_0x1c96('0xa1')]();logger[_0x1c96('0x6a')](_0x1c96('0xa2'),_0x828af['name'],_0x828af[_0x1c96('0x54')],_0x828af['queuecallerexitreason']);}}}this[_0x1c96('0x12')][_0x134bc7['uniqueid']]=_0x828af;this[_0x1c96('0x45')](_0x828af,'agentcomplete');}}}catch(_0x2fe4f6){logger[_0x1c96('0x3d')](_0x1c96('0x8d'),_0x134bc7[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x2fe4f6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1c96('0x22')]=function(_0x1e109d){try{if(this[_0x1c96('0x67')](_0x1e109d)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][varset]',_0x1e109d[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x1e109d,{'showHidden':![],'depth':null}));this[_0x1c96('0xa3')](_0x1e109d['uniqueid'],_[_0x1c96('0xa4')](_0x1e109d['variable'])[0x0],_0x1e109d[_0x1c96('0xa5')]);if(this[_0x1c96('0x10')][_0x1e109d[_0x1c96('0x4b')]]){var _0x8c1015=_['last'](this[_0x1c96('0x10')][_0x1e109d[_0x1c96('0x4b')]]);if(_0x8c1015){if(this[_0x1c96('0x67')](_0x1e109d[_0x1c96('0xa6')])&&this['isNotNull'](_0x1e109d['variable'][_0x1c96('0xa7')])){switch(_0x1e109d[_0x1c96('0xa5')]){case _0x1c96('0xa8'):_0x8c1015[_0x1c96('0x90')]=![];_0x8c1015[_0x1c96('0x91')]=null;break;case _0x1c96('0xa9'):_0x8c1015[_0x1c96('0xaa')]='timeout';_0x8c1015['queuecallerexit']=!![];_0x8c1015['queuecallerexitAt']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x8c1015[_0x1c96('0xab')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));logger[_0x1c96('0x48')](_0x1c96('0xac'),_0x1e109d[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x8c1015,{'showHidden':![],'depth':null}));ami[_0x1c96('0x46')](_0x1c96('0xad'),_0x8c1015);break;default:_0x8c1015[_0x1c96('0x90')]=!![];_0x8c1015['queuecallerexitAt']=moment()['format'](_0x1c96('0x77'));_0x8c1015[_0x1c96('0xab')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));}_0x8c1015[_0x1c96('0x1d')]=![];_0x8c1015[_0x1c96('0x8e')]=null;_0x8c1015['queuecallerexitreason']=_0x1e109d['value'];this[_0x1c96('0x12')][_0x1e109d[_0x1c96('0x4b')]]=_0x8c1015;this[_0x1c96('0x45')](_0x8c1015,_0x1c96('0xae'));}else if(this[_0x1c96('0x67')](_0x1e109d[_0x1c96('0xa6')])&&this[_0x1c96('0x67')](_0x1e109d[_0x1c96('0xa6')]['queueposition'])){if(!_0x8c1015[_0x1c96('0x1d')]){_0x8c1015[_0x1c96('0x90')]=!![];_0x8c1015[_0x1c96('0x91')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x8c1015['queuecallerexitreason']=_0x1c96('0xaf');_0x8c1015[_0x1c96('0xab')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));this[_0x1c96('0x12')][_0x1e109d[_0x1c96('0x4b')]]=_0x8c1015;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x1e109d[_0x1c96('0x4b')],_0x8c1015[_0x1c96('0x4d')],_0x8c1015[_0x1c96('0x54')],_['keys'](_0x1e109d[_0x1c96('0xa6')])[0x0],_0x1e109d[_0x1c96('0xa5')]);_0x8c1015['variables']=this[_0x1c96('0x41')][_0x1e109d['uniqueid']];}}}}catch(_0x401fab){logger[_0x1c96('0x3d')]('[%s][voiceQueueReport][varset]',_0x1e109d['uniqueid'],util[_0x1c96('0x40')](_0x401fab,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['addVariable']=function(_0x5e0d1c,_0x2ad449,_0xd01eed){var _0x1d31b4=[_0x1c96('0xb0'),'rtpaudioqosbridged',_0x1c96('0xb1'),'rtpaudioqosjitterbridged',_0x1c96('0xb2'),'rtpaudioqoslossbridged',_0x1c96('0xb3'),_0x1c96('0xb4'),_0x1c96('0xb5'),_0x1c96('0xb6'),_0x1c96('0xb7'),_0x1c96('0xb8'),'membercalls',_0x1c96('0xb9'),_0x1c96('0xba'),_0x1c96('0xbb'),_0x1c96('0x8f'),_0x1c96('0xbc'),_0x1c96('0xbd')];if(!_['isNil'](_0x2ad449)&&!_[_0x1c96('0xbe')](_0x1d31b4,_0x2ad449)){if(_[_0x1c96('0x63')](this[_0x1c96('0x41')][_0x5e0d1c])){this[_0x1c96('0x41')][_0x5e0d1c]={};}this[_0x1c96('0x41')][_0x5e0d1c][_0x2ad449]=_0xd01eed;}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0xbf')]=function(_0x2cc413){try{if(this[_0x1c96('0x67')](_0x2cc413)){logger[_0x1c96('0x48')](_0x1c96('0xc0'),_0x2cc413[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x2cc413,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]]){for(var _0x35b16b=0x0,_0xd71ca7={};_0x35b16b<this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]][_0x1c96('0xc1')];_0x35b16b+=0x1){_0xd71ca7=this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]][_0x35b16b];if(this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]]){if(_0xd71ca7['queuecallerexit']&&_0xd71ca7[_0x1c96('0x92')]!=!![]){this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0x5a')]+=0x1;}if(_0xd71ca7['queuecallerabandon']){this['voiceQueues'][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0xc2')]+=0x1;}this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]]['sumHoldTime']+=moment(_0xd71ca7[_0x1c96('0xab')])[_0x1c96('0xc3')](_0xd71ca7['queuecallerjoinAt'],_0x1c96('0x99'))||0x0;if(_0x35b16b===this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]][_0x1c96('0xc1')]-0x1){this['voiceQueues'][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0x58')]+=moment()[_0x1c96('0xc4')](0x0)[_0x1c96('0xc3')](_0xd71ca7[_0x1c96('0x76')],'seconds');this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0x59')]+=0x1;if(_0xd71ca7['queuecallercomplete']){this['voiceQueues'][_0xd71ca7[_0x1c96('0x69')]]['answered']+=0x1;this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0xc5')]+=moment()['milliseconds'](0x0)['diff'](_0xd71ca7['queuecallerleaveAt'],_0x1c96('0x99'));_0xd71ca7[_0x1c96('0x80')]=moment()['format'](_0x1c96('0x77'));_0xd71ca7['queuecallerexit']=![];_0xd71ca7[_0x1c96('0x91')]=null;}if(_0xd71ca7['queuecallerexit']&&_0xd71ca7[_0x1c96('0x92')]!=!![]){_0xd71ca7[_0x1c96('0xaa')]=_0x1c96('0x5a');logger[_0x1c96('0x48')](_0x1c96('0xc6'),_0x2cc413['uniqueid'],util[_0x1c96('0x40')](_0xd71ca7,{'showHidden':![],'depth':null}));ami['emit'](_0x1c96('0xc7'),_0xd71ca7);}if(_0xd71ca7[_0x1c96('0x1d')]){_0xd71ca7[_0x1c96('0xaa')]=_0x1c96('0xc2');logger[_0x1c96('0x48')](_0x1c96('0xc8'),_0x2cc413[_0x1c96('0x4b')],util['inspect'](_0xd71ca7,{'showHidden':![],'depth':null}));ami['emit'](_0x1c96('0xc9'),_0xd71ca7);}}else{this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]]['sumDuration']+=this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0xca')];}logger[_0x1c96('0x6a')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x2cc413[_0x1c96('0x4b')],_0xd71ca7[_0x1c96('0x4d')],_0xd71ca7['type'],_0x2cc413[_0x1c96('0xcb')]);this[_0x1c96('0x12')][_0x2cc413[_0x1c96('0x4b')]]=_0xd71ca7;this[_0x1c96('0x45')](_0xd71ca7,_0x1c96('0x23'));this[_0x1c96('0x53')](this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]],_0x1c96('0x23'));}}logger[_0x1c96('0x48')](_0x1c96('0xcc'),_0x2cc413[_0x1c96('0x4b')],util[_0x1c96('0x40')](this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]],{'showHidden':![],'depth':null}));ami[_0x1c96('0x46')](_0x1c96('0xcd'),this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]]);delete this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]];delete this['channels'][_0x2cc413[_0x1c96('0x4b')]];}if(this[_0x1c96('0x41')][_0x2cc413[_0x1c96('0x4b')]]){delete this[_0x1c96('0x41')][_0x2cc413['uniqueid']];}}}catch(_0x5224dc){logger[_0x1c96('0x3d')]('[%s][voiceQueueReport][hangup]',_0x2cc413[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x5224dc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x2b')]=function(_0x16b83c){try{if(this[_0x1c96('0x67')](_0x16b83c)){logger[_0x1c96('0x48')](_0x1c96('0xce'),_0x16b83c[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x16b83c,{'showHidden':![],'depth':null}));var _0x1392c3;if(this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xcf')]]){_0x1392c3=_[_0x1c96('0x7e')](this['queueReports'][_0x16b83c[_0x1c96('0xcf')]]);_0x1392c3[_0x1c96('0x9d')]=_0x16b83c[_0x1c96('0xd0')];_0x1392c3['transferuniqueid']=_0x16b83c[_0x1c96('0xd1')];_0x1392c3['queuecallerexitreason']=_0x1c96('0xd2');_0x1392c3[_0x1c96('0x92')]=!![];_0x1392c3[_0x1c96('0x9b')]='ATTENDED';if(this[_0x1c96('0x10')][_0x16b83c['secondtransfereruniqueid']]){var _0x3847f9=this[_0x1c96('0x10')][_0x16b83c['secondtransfereruniqueid']];this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd1')]]=this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xcf')]];this['queueReports'][_0x16b83c['transfereeuniqueid']]=_0x3847f9;var _0xecfeb3=_['last'](this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xcf')]]);_0xecfeb3[_0x1c96('0xd3')]=!![];}logger['info'](_0x1c96('0xd4'),_0x16b83c[_0x1c96('0x4b')],_0x1392c3[_0x1c96('0x4d')],_0x1392c3[_0x1c96('0x54')],_0x1392c3[_0x1c96('0x9d')],_0x1392c3[_0x1c96('0xd5')]);}else if(this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]]){_0x1392c3=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]]);_0x1392c3['transferexten']=_0x16b83c[_0x1c96('0xd7')];_0x1392c3[_0x1c96('0xd5')]=_0x16b83c[_0x1c96('0xd8')];_0x1392c3[_0x1c96('0x83')]=_0x1c96('0xd2');_0x1392c3[_0x1c96('0x92')]=!![];_0x1392c3[_0x1c96('0x9b')]='ATTENDED';if(this[_0x1c96('0x10')][_0x16b83c['origtransfereruniqueid']]){var _0x3847f9=this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd8')]];this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd8')]]=this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]];this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]]=_0x3847f9;var _0xecfeb3=_['last'](this[_0x1c96('0x10')][_0x16b83c['transfertargetuniqueid']]);_0xecfeb3[_0x1c96('0xd3')]=!![];}logger[_0x1c96('0x6a')](_0x1c96('0xd4'),_0x16b83c[_0x1c96('0x4b')],_0x1392c3[_0x1c96('0x4d')],_0x1392c3['type'],_0x1392c3[_0x1c96('0x9d')],_0x1392c3[_0x1c96('0xd5')]);}}}catch(_0x270d95){logger[_0x1c96('0x3d')](_0x1c96('0xce'),_0x16b83c[_0x1c96('0x4b')],util['inspect'](_0x270d95,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0xd9')]=function(_0x4b05da){try{if(this['isNotNull'](_0x4b05da)){logger['debug']('[%s][voiceQueueReport][blindtransfer]',_0x4b05da['uniqueid'],util[_0x1c96('0x40')](_0x4b05da,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x4b05da['transfereeuniqueid']]){var _0x4fe089=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x4b05da['transfereeuniqueid']]);_0x4fe089[_0x1c96('0x83')]=_0x1c96('0xda');_0x4fe089[_0x1c96('0x92')]=!![];_0x4fe089[_0x1c96('0x9b')]=_0x1c96('0xdb');_0x4fe089[_0x1c96('0x9d')]=_0x4b05da[_0x1c96('0xdc')];_0x4fe089['transferuniqueid']=_0x4b05da[_0x1c96('0xcf')];logger[_0x1c96('0x6a')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x4b05da[_0x1c96('0x4b')],_0x4fe089[_0x1c96('0x4d')],_0x4fe089[_0x1c96('0x54')],_0x4fe089[_0x1c96('0x9d')],_0x4fe089['transferuniqueid']);this[_0x1c96('0xbf')]({'event':_0x1c96('0xdd'),'uniqueid':_0x4b05da[_0x1c96('0xcf')],'context':_0x4b05da['context'],'channel':_0x4b05da[_0x1c96('0xde')]});}}}catch(_0x3dbf37){logger[_0x1c96('0x3d')](_0x1c96('0xdf'),_0x4b05da[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x3dbf37,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x27')]=function(_0x15795a){try{if(this['isNotNull'](_0x15795a)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][musiconholdstart]',_0x15795a[_0x1c96('0x4b')],util['inspect'](_0x15795a,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x15795a[_0x1c96('0x4b')]]){var _0x28aa5b=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x15795a['uniqueid']]);if(!_['isNil'](_0x28aa5b[_0x1c96('0xab')])){_0x28aa5b['mohstarttime']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));logger[_0x1c96('0x6a')](_0x1c96('0xe0'),_0x15795a[_0x1c96('0x4b')],_0x28aa5b[_0x1c96('0xe1')]);}}}}catch(_0x217b83){logger[_0x1c96('0x3d')](_0x1c96('0xe2'),_0x15795a[_0x1c96('0x4b')],util['inspect'](_0x217b83,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x29')]=function(_0x3cf35d){try{if(this['isNotNull'](_0x3cf35d)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x3cf35d[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x3cf35d,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x3cf35d[_0x1c96('0x4b')]]){var _0x28d786=_['last'](this[_0x1c96('0x10')][_0x3cf35d[_0x1c96('0x4b')]]);if(!_[_0x1c96('0x36')](_0x28d786[_0x1c96('0xe1')])){_0x28d786[_0x1c96('0xe3')]+=moment()[_0x1c96('0xc4')](0x0)[_0x1c96('0xc3')](_0x28d786[_0x1c96('0xe1')],_0x1c96('0x99'));logger[_0x1c96('0x6a')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x3cf35d[_0x1c96('0x4b')],_0x28d786[_0x1c96('0xe3')]);delete _0x28d786[_0x1c96('0xe1')];}}}}catch(_0x59962e){logger[_0x1c96('0x3d')](_0x1c96('0xe4'),_0x3cf35d['uniqueid'],util['inspect'](_0x59962e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x25')]=function(_0x29a40c){try{if(this[_0x1c96('0x67')](_0x29a40c)){logger[_0x1c96('0x48')](_0x1c96('0xe5'),_0x29a40c[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x29a40c,{'showHidden':![],'depth':null}));if(_0x29a40c[_0x1c96('0xe6')]['toLowerCase']()===_0x1c96('0xe7')){_0x29a40c[_0x1c96('0xe8')]=_0x29a40c['appdata']&&_0x29a40c[_0x1c96('0xe9')][_0x1c96('0x95')](_0x1c96('0xea'))?_0x29a40c['appdata']:(_0x29a40c[_0x1c96('0xe9')]||_0x29a40c[_0x1c96('0xe8')])['toLowerCase']();if(_[_0x1c96('0x95')](_0x29a40c[_0x1c96('0xe8')][_0x1c96('0x96')](),_0x1c96('0xeb'))){logger['info'](_0x1c96('0xec'),_0x29a40c[_0x1c96('0x4b')],_0x29a40c[_0x1c96('0xe6')],_0x29a40c['applicationdata']);if(_[_0x1c96('0x63')](this['channels'][_0x29a40c[_0x1c96('0x4b')]]))this['channels'][_0x29a40c[_0x1c96('0x4b')]]={};var _0x31b2d0=_0x29a40c[_0x1c96('0xe8')][_0x1c96('0xed')]('=');var _0x5ccb44=_0x31b2d0[0x0][_0x1c96('0x96')]()[_0x1c96('0xee')](/cdr\((.*)\)/);if(_0x5ccb44)this[_0x1c96('0x12')][_0x29a40c[_0x1c96('0x4b')]][_0x5ccb44[0x1]]=_0x31b2d0[0x1];}}}}catch(_0x587782){logger[_0x1c96('0x3d')](_0x1c96('0xef'),_0x29a40c[_0x1c96('0x4b')],util['inspect'](_0x587782,{'showHidden':![],'depth':null}));}};module[_0x1c96('0xf0')]=VoiceQueueReport;
\ No newline at end of file
+var _0x74b1=['pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','switch','enqueue','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','emitVoiceQueueChannelRemove','debug','voice_queue_channel:remove','emitVoiceQueueSummary','inbound','strategy','available','sumBillable','sumDuration','sumHoldTime','total','abandoned','Trunk','active','callerid','Interval','stringify','voice_queue:save','isNotNull','Action','queues','then','[voiceQueueReport][queuesummary]','queue','countBy','toNumber','callers','loggedIn','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','isUndefined','type','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','info','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','syncAgentConnect','queuecallercomplete','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','linkedid','queuecallerjoinAt','add','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','addVariable','keys','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','[%s][voiceQueueReport][hangup]','length','seconds','diff','answered','milliseconds','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','syncAttendedTransfer','secondtransfererexten','secondtransfereruniqueid','transfereeuniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','toLowerCase','cdr(','split','[%s][voiceQueueReport][newexten]','lodash','moment','md5','ioredis','../../../config/logger','ami','defaults','redis','localhost','prototype','tail','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncNewExten','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking'];(function(_0x2163ba,_0x1a46e7){var _0x1287cd=function(_0x5e2da5){while(--_0x5e2da5){_0x2163ba['push'](_0x2163ba['shift']());}};_0x1287cd(++_0x1a46e7);}(_0x74b1,0xb5));var _0x174b=function(_0x2d8d69,_0x8e47ff){_0x2d8d69=_0x2d8d69-0x0;var _0x39ae22=_0x74b1[_0x2d8d69];return _0x39ae22;};'use strict';var _=require(_0x174b('0x0'));var moment=require(_0x174b('0x1'));var util=require('util');var md5=require(_0x174b('0x2'));var Redis=require(_0x174b('0x3'));var config=require('../../../config/environment');var logger=require(_0x174b('0x4'))(_0x174b('0x5'));var ami=require('../ami');var QueueReport=require('../model/queueReport');config['redis']=_[_0x174b('0x6')](config[_0x174b('0x7')],{'host':_0x174b('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x174b('0x7')]));var Sequence=function(){};Sequence[_0x174b('0x9')]['enqueue']=function(_0x483ec9){this[_0x174b('0xa')]=this['tail']?this[_0x174b('0xa')]['finally'](_0x483ec9):_0x483ec9();};function VoiceQueueReport(_0x5a270f){this[_0x174b('0xb')]=new Sequence();this[_0x174b('0xc')]={};this[_0x174b('0xd')]=_0x5a270f[_0x174b('0xd')];this[_0x174b('0xe')]=_0x5a270f[_0x174b('0xf')];this[_0x174b('0x10')]=_0x5a270f[_0x174b('0x10')];this[_0x174b('0x11')]=!![];this['campaigns']=_0x5a270f[_0x174b('0x12')];this[_0x174b('0x13')]={};ami['on'](_0x174b('0x14'),this[_0x174b('0x15')][_0x174b('0x16')](this));ami['on'](_0x174b('0x17'),this[_0x174b('0x18')][_0x174b('0x16')](this));ami['on'](_0x174b('0x19'),this['syncQueueCallerJoin'][_0x174b('0x16')](this));ami['on'](_0x174b('0x1a'),this[_0x174b('0x1b')]['bind'](this));ami['on']('queuecallerleave',this[_0x174b('0x1c')][_0x174b('0x16')](this));ami['on'](_0x174b('0x1d'),this[_0x174b('0x1e')][_0x174b('0x16')](this));ami['on'](_0x174b('0x1f'),this['syncAgentConnect'][_0x174b('0x16')](this));ami['on'](_0x174b('0x20'),this[_0x174b('0x21')][_0x174b('0x16')](this));ami['on'](_0x174b('0x22'),this[_0x174b('0x23')][_0x174b('0x16')](this));ami['on'](_0x174b('0x24'),this[_0x174b('0x25')][_0x174b('0x16')](this));ami['on']('newexten',this[_0x174b('0x26')]['bind'](this));ami['on']('musiconholdstart',this[_0x174b('0x27')]['bind'](this));ami['on']('musiconholdstop',this[_0x174b('0x28')][_0x174b('0x16')](this));ami['on'](_0x174b('0x29'),this['syncAttendedTransfer'][_0x174b('0x16')](this));ami['on']('blindtransfer',this[_0x174b('0x2a')][_0x174b('0x16')](this));this[_0x174b('0x2b')]();this[_0x174b('0x2c')]();}function clearChannels(_0x3c7052){if(!_[_0x174b('0x2d')](_0x3c7052)){for(var _0x487929 in _0x3c7052){if(_0x3c7052['hasOwnProperty'](_0x487929)){delete _0x3c7052[_0x487929];}}}}function clearCampaigns(_0x326836){if(!_[_0x174b('0x2d')](_0x326836)){for(var _0x7c34f1 in _0x326836){if(_0x326836[_0x174b('0x2e')](_0x7c34f1)){_0x326836[_0x7c34f1]['originated']=0x0;}}}}function clearVoiceQueues(_0x276384){if(!_[_0x174b('0x2d')](_0x276384)){for(var _0x583b0c in _0x276384){if(_0x276384[_0x174b('0x2e')](_0x583b0c)){_0x276384[_0x583b0c][_0x174b('0x2f')]=0x0;_0x276384[_0x583b0c][_0x174b('0x30')]=0x0;_0x276384[_0x583b0c][_0x174b('0x31')]=0x0;_0x276384[_0x583b0c][_0x174b('0x32')]=0x0;_0x276384[_0x583b0c][_0x174b('0x33')]=!![];}}}}function clearAgentBooked(_0x557d62){if(!_[_0x174b('0x2d')](_0x557d62)){for(var _0x555dc1 in _0x557d62){if(_0x557d62[_0x174b('0x2e')](_0x555dc1)){_0x557d62[_0x555dc1][_0x174b('0x34')]=!![];}}}}VoiceQueueReport[_0x174b('0x9')][_0x174b('0x35')]=function(){var _0x2a7ec2=this;for(var _0x580731 in this[_0x174b('0xe')]){if(this[_0x174b('0xe')][_0x174b('0x2e')](_0x580731)&&!this['channels'][_0x580731][_0x174b('0x36')]){this[_0x174b('0xb')][_0x174b('0x37')](function(){if(!_['isNil'](_0x2a7ec2[_0x174b('0xe')][_0x580731])){return ami['Action']({'action':'status','channel':_0x2a7ec2[_0x174b('0xe')][_0x580731][_0x174b('0x38')]})[_0x174b('0x39')](function(_0x42c6bd){if(_0x42c6bd['message']===_0x174b('0x3a')){setTimeout(function(){if(_0x2a7ec2[_0x174b('0xe')][_0x580731]){delete _0x2a7ec2[_0x174b('0xe')][_0x580731];logger[_0x174b('0x3b')](_0x174b('0x3c'),_0x580731,util[_0x174b('0x3d')](_0x42c6bd,{'showHidden':![],'depth':null}));}if(_0x2a7ec2[_0x174b('0xc')][_0x580731]){delete _0x2a7ec2['queueReports'][_0x580731];logger[_0x174b('0x3b')]('[%s][voiceQueueReport][checkQueueReport]',_0x580731,util['inspect'](_0x42c6bd,{'showHidden':![],'depth':null}));}if(_0x2a7ec2[_0x174b('0x13')][_0x580731]){delete _0x2a7ec2[_0x174b('0x13')][_0x580731];logger[_0x174b('0x3b')](_0x174b('0x3e'),_0x580731,util[_0x174b('0x3d')](_0x42c6bd,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x174b('0x25')]=function(){logger[_0x174b('0x3b')](_0x174b('0x3f'));clearChannels(this[_0x174b('0xe')]);this[_0x174b('0x40')](this[_0x174b('0xc')]);clearAgentBooked(this[_0x174b('0xd')]);clearVoiceQueues(this[_0x174b('0x10')]);clearCampaigns(this[_0x174b('0x12')]);};VoiceQueueReport['prototype']['clearQueueReport']=function(_0x296765){var _0x3e3181=this;if(!_[_0x174b('0x2d')](_0x296765)){for(var _0x4178e5 in _0x296765){if(_0x296765[_0x174b('0x2e')](_0x4178e5)){_0x3e3181['emitVoiceQueueChannelRemove'](_0x296765[_0x4178e5],'clearqueuereport');delete _0x296765[_0x4178e5];}}}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x41')]=function(_0x47b6b4,_0x4405ef,_0x32cfca){io['to'](_0x47b6b4)[_0x174b('0x41')](_0x4405ef,_0x32cfca);};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x42')]=function(_0xcbae0f,_0x56360a){logger['debug'](_0x174b('0x43')+_0x56360a+_0x174b('0x44'),_0xcbae0f[_0x174b('0x45')],util['inspect'](_0xcbae0f,{'showHidden':![],'depth':null}));this[_0x174b('0x41')](util[_0x174b('0x46')](_0x174b('0x47'),_0xcbae0f[_0x174b('0x48')]),_0x174b('0x49'),_0xcbae0f);io[_0x174b('0x41')](_0x174b('0x4a'),_0xcbae0f);};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x4b')]=function(_0x41991d,_0x4f2c68){logger[_0x174b('0x4c')](_0x174b('0x43')+_0x4f2c68+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x41991d[_0x174b('0x45')],util['inspect'](_0x41991d,{'showHidden':![],'depth':null}));this[_0x174b('0x41')](util[_0x174b('0x46')](_0x174b('0x47'),_0x41991d['name']),_0x174b('0x4d'),_0x41991d);io[_0x174b('0x41')]('voice_queue_presence:remove',_0x41991d);};VoiceQueueReport['prototype'][_0x174b('0x4e')]=function(_0x3730a8,_0x5bbe73){if(_0x3730a8['type']===_0x174b('0x4f')){var _0x21bce2={'id':_0x3730a8['id'],'name':_0x3730a8[_0x174b('0x48')],'strategy':_0x3730a8[_0x174b('0x50')],'answered':_0x3730a8['answered'],'available':_0x3730a8[_0x174b('0x51')],'loggedIn':_0x3730a8['loggedIn'],'pTalking':_0x3730a8['pTalking'],'sumBillable':_0x3730a8[_0x174b('0x52')],'sumDuration':_0x3730a8[_0x174b('0x53')],'sumHoldTime':_0x3730a8[_0x174b('0x54')]||0x0,'talking':_0x3730a8['talking'],'total':_0x3730a8[_0x174b('0x55')],'type':_0x3730a8['type'],'unmanaged':_0x3730a8['unmanaged'],'abandoned':_0x3730a8[_0x174b('0x56')],'waiting':_0x3730a8[_0x174b('0x32')]};if(_0x3730a8['Trunk']){_0x21bce2[_0x174b('0x57')]={'id':_0x3730a8[_0x174b('0x57')]['id'],'name':_0x3730a8[_0x174b('0x57')][_0x174b('0x48')],'active':_0x3730a8[_0x174b('0x57')][_0x174b('0x58')],'callerid':_0x3730a8[_0x174b('0x57')][_0x174b('0x59')]};}if(_0x3730a8[_0x174b('0x5a')]){_0x21bce2['Interval']={'id':_0x3730a8['Interval']['id'],'name':_0x3730a8['Interval'][_0x174b('0x48')]};}var _0x156051=md5(JSON[_0x174b('0x5b')](_0x21bce2));if(_0x3730a8[_0x174b('0x2')]!==_0x156051){_0x3730a8[_0x174b('0x2')]=_0x156051;logger[_0x174b('0x4c')]('[voiceQueueReport]['+_0x5bbe73+']\x20sending\x20voice_queue:save\x20event:',util[_0x174b('0x3d')](_0x21bce2,{'showHidden':![],'depth':null}));this[_0x174b('0x41')](util[_0x174b('0x46')](_0x174b('0x47'),_0x21bce2[_0x174b('0x48')]),_0x174b('0x5c'),_0x21bce2);}}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x5d')]=function(_0x17d04b){return _0x17d04b!==null&&!_['isUndefined'](_0x17d04b);};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x2c')]=function(){var _0x6e217a=this;setInterval(function(){_0x6e217a[_0x174b('0x35')]();ami[_0x174b('0x5e')]({'action':_0x174b('0x5f')})[_0x174b('0x39')](function(_0x363106){logger[_0x174b('0x3b')]('[voiceQueueReport][queues]',util[_0x174b('0x3d')](_0x363106,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype']['loopQueueSummary']=function(){var _0x10aa71=this;setInterval(function(){if(_0x10aa71['flagQueueSummary']){return ami['Action']({'action':_0x174b('0x14')})[_0x174b('0x60')](function(_0xf565d3){_0x10aa71[_0x174b('0x11')]=![];})[_0x174b('0x39')](function(_0x20b6d1){logger['error'](_0x174b('0x61'),util[_0x174b('0x3d')](_0x20b6d1,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x174b('0x15')]=function(_0x256d6e){try{if(this[_0x174b('0x5d')](_0x256d6e)&&this['isNotNull'](_0x256d6e['queue'])){logger[_0x174b('0x4c')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x256d6e,{'showHidden':![],'depth':null}));if(this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x256d6e[_0x174b('0x62')]);var _0x1f26dc=_[_0x174b('0x63')](this['channels'],_0x174b('0x62'))[_0x256d6e[_0x174b('0x62')]]||0x0;var _0x1f4f3c=_0x1f26dc-_0x256d6e['callers'];if(this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]][_0x174b('0x32')]!==_[_0x174b('0x64')](_0x256d6e[_0x174b('0x65')])||this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]][_0x174b('0x66')]!==_['toNumber'](_0x256d6e[_0x174b('0x67')])||this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]][_0x174b('0x51')]!==_[_0x174b('0x64')](_0x256d6e[_0x174b('0x51')])||this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]]['talking']!==_0x1f4f3c){this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]][_0x174b('0x32')]=_[_0x174b('0x64')](_0x256d6e[_0x174b('0x65')]);this[_0x174b('0x10')][_0x256d6e['queue']][_0x174b('0x66')]=_['toNumber'](_0x256d6e[_0x174b('0x67')]);this[_0x174b('0x10')][_0x256d6e['queue']][_0x174b('0x51')]=_[_0x174b('0x64')](_0x256d6e[_0x174b('0x51')]);this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]][_0x174b('0x30')]=_0x1f4f3c>0x0?_0x1f4f3c:0x0;this['voiceQueues'][_0x256d6e[_0x174b('0x62')]][_0x174b('0x30')]=this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]][_0x174b('0x30')]>_[_0x174b('0x64')](_0x256d6e[_0x174b('0x67')])?_[_0x174b('0x64')](_0x256d6e[_0x174b('0x67')]):this['voiceQueues'][_0x256d6e['queue']]['talking'];this['emitVoiceQueueSummary'](this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]],_0x174b('0x14'));}logger[_0x174b('0x4c')](_0x174b('0x68'),util[_0x174b('0x3d')](this['voiceQueues'][_0x256d6e[_0x174b('0x62')]],{'showHidden':![],'depth':null}));ami[_0x174b('0x41')]('custom:queuesummary',this[_0x174b('0x10')][_0x256d6e[_0x174b('0x62')]]);}}}catch(_0x44d45e){logger[_0x174b('0x3b')](_0x174b('0x61'),util[_0x174b('0x3d')](_0x44d45e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x18')]=function(_0x180cd0){logger[_0x174b('0x4c')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x174b('0x3d')](_0x180cd0,{'showHidden':![],'depth':null}));this['flagQueueSummary']=!![];};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x69')]=function(_0x274674){try{if(this[_0x174b('0x5d')](_0x274674)){logger[_0x174b('0x4c')](_0x174b('0x6a'),_0x274674['uniqueid'],util['inspect'](_0x274674,{'showHidden':![],'depth':null}));if(_[_0x174b('0x6b')](this[_0x174b('0xc')][_0x274674[_0x174b('0x45')]]))this[_0x174b('0xc')][_0x274674[_0x174b('0x45')]]=[];if(_[_0x174b('0x6b')](this['channels'][_0x274674[_0x174b('0x45')]]))this['channels'][_0x274674[_0x174b('0x45')]]={};var _0xde3e08=new QueueReport();_0xde3e08[_0x174b('0x48')]=_0x274674[_0x174b('0x62')];_0xde3e08['type']=this['voiceQueues'][_0xde3e08['name']]&&this[_0x174b('0x10')][_0xde3e08[_0x174b('0x48')]][_0x174b('0x6c')]?this[_0x174b('0x10')][_0xde3e08['name']][_0x174b('0x6c')]||'inbound':_0x174b('0x4f');_0xde3e08['queue']=_0x274674['queue'];_0xde3e08['queuecallerjoinAt']=moment()['format'](_0x174b('0x6d'));_0xde3e08[_0x174b('0x6e')]=_0x274674[_0x174b('0x6e')];_0xde3e08[_0x174b('0x6f')]=_0x274674[_0x174b('0x6f')];_0xde3e08[_0x174b('0x45')]=_0x274674[_0x174b('0x45')];_0xde3e08['routealias']=this[_0x174b('0xe')][_0x274674[_0x174b('0x45')]][_0x174b('0x70')];logger['info'](_0x174b('0x71'),_0xde3e08[_0x174b('0x48')],_0xde3e08[_0x174b('0x6c')]);_[_0x174b('0x72')](_0xde3e08,_[_0x174b('0x73')](_0x274674,_['keys'](_0xde3e08)));this[_0x174b('0xc')][_0x274674[_0x174b('0x45')]][_0x174b('0x74')](_0xde3e08);this[_0x174b('0xe')][_0x274674[_0x174b('0x45')]]=_0xde3e08;this[_0x174b('0x42')](_0xde3e08,_0x174b('0x19'));}}catch(_0xd51279){logger['error']('[%s][voiceQueueReport][queuecallerjoin]',_0x274674[_0x174b('0x45')],util[_0x174b('0x3d')](_0xd51279,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x1b')]=function(_0xc26cc9){try{if(this['isNotNull'](_0xc26cc9)){logger[_0x174b('0x4c')](_0x174b('0x75'),_0xc26cc9[_0x174b('0x45')],util[_0x174b('0x3d')](_0xc26cc9,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0xc26cc9[_0x174b('0x45')]]){var _0xafb358=_[_0x174b('0x76')](this[_0x174b('0xc')][_0xc26cc9['uniqueid']]);_0xafb358['queuecallercomplete']=![];_0xafb358[_0x174b('0x77')]=null;_0xafb358[_0x174b('0x78')]=_0xc26cc9[_0x174b('0x78')];_0xafb358[_0x174b('0x79')]=_0xc26cc9[_0x174b('0x79')];_0xafb358['queuecallerabandon']=!![];_0xafb358[_0x174b('0x7a')]=moment()[_0x174b('0x46')](_0x174b('0x6d'));_0xafb358[_0x174b('0x7b')]=_0x174b('0x7c');_0xafb358[_0x174b('0x7d')]=null;logger[_0x174b('0x7e')](_0x174b('0x7f'),_0xafb358[_0x174b('0x48')],_0xafb358[_0x174b('0x6c')]);this[_0x174b('0xe')][_0xc26cc9['uniqueid']]=_0xafb358;this[_0x174b('0x4b')](_0xafb358,_0x174b('0x1a'));}}}catch(_0x2c1bbb){logger[_0x174b('0x3b')](_0x174b('0x75'),_0xc26cc9[_0x174b('0x45')],util[_0x174b('0x3d')](_0x2c1bbb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x1c')]=function(_0x2e7967){try{if(this[_0x174b('0x5d')](_0x2e7967)){logger[_0x174b('0x4c')](_0x174b('0x80'),_0x2e7967[_0x174b('0x45')],util[_0x174b('0x3d')](_0x2e7967,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0x2e7967['uniqueid']]){var _0x153867=_['last'](this['queueReports'][_0x2e7967[_0x174b('0x45')]]);_0x153867[_0x174b('0x81')]=moment()[_0x174b('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x153867[_0x174b('0x82')]=_0x2e7967['connectedlinenum'];_0x153867[_0x174b('0x83')]=_0x2e7967[_0x174b('0x83')];logger['info'](_0x174b('0x84'),_0x153867[_0x174b('0x48')],_0x153867['type'],_0x2e7967[_0x174b('0x82')],_0x2e7967[_0x174b('0x83')]);this[_0x174b('0xe')][_0x2e7967['uniqueid']]=_0x153867;this[_0x174b('0x42')](_0x153867,_0x174b('0x85'));}}}catch(_0x124148){logger[_0x174b('0x3b')]('[%s][voiceQueueReport][queuecallerleave]',_0x2e7967[_0x174b('0x45')],util[_0x174b('0x3d')](_0x124148,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x86')]=function(_0x39893a){try{if(this[_0x174b('0x5d')](_0x39893a)){logger['debug']('[%s][voiceQueueReport][agentconnect]',_0x39893a[_0x174b('0x45')],util[_0x174b('0x3d')](_0x39893a,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0x39893a['uniqueid']]){var _0x21c82c=_[_0x174b('0x76')](this[_0x174b('0xc')][_0x39893a[_0x174b('0x45')]]);_0x21c82c[_0x174b('0x87')]=!![];_0x21c82c[_0x174b('0x7b')]='COMPLETEDBYAGENT';logger[_0x174b('0x7e')](_0x174b('0x88'),_0x21c82c['name'],_0x21c82c[_0x174b('0x6c')]);}}}catch(_0xd92d04){logger[_0x174b('0x3b')](_0x174b('0x89'),_0x39893a[_0x174b('0x45')],util[_0x174b('0x3d')](_0xd92d04,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x1e')]=function(_0x5b4634){try{if(this[_0x174b('0x5d')](_0x5b4634)){logger[_0x174b('0x4c')]('[%s][voiceQueueReport][agentcomplete]',_0x5b4634['uniqueid'],util['inspect'](_0x5b4634,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5b4634[_0x174b('0x45')]]){var _0x201ad8=_[_0x174b('0x76')](this['queueReports'][_0x5b4634[_0x174b('0x45')]]);_0x201ad8[_0x174b('0x1a')]=![];_0x201ad8['queuecallerabandonAt']=null;_0x201ad8[_0x174b('0x8a')]=!![];_0x201ad8['lastAssignedTo']=_0x5b4634[_0x174b('0x8b')];_0x201ad8[_0x174b('0x78')]=_0x5b4634['holdtime'];_0x201ad8['queuecallercomplete']=!![];_0x201ad8[_0x174b('0x8c')]=![];_0x201ad8[_0x174b('0x8d')]=null;if(!_0x201ad8[_0x174b('0x8e')]){if(_0x5b4634[_0x174b('0x8f')]=='transfer'){_0x201ad8[_0x174b('0x7b')]=_0x174b('0x90');logger[_0x174b('0x7e')](_0x174b('0x91'),_0x201ad8[_0x174b('0x48')],_0x201ad8[_0x174b('0x6c')]);}else{if(_[_0x174b('0x92')](_0x5b4634[_0x174b('0x38')]['toLowerCase'](),'local/')){if(this[_0x174b('0xc')][_0x5b4634['linkedid']]){var _0x1e17ad=_[_0x174b('0x76')](this[_0x174b('0xc')][_0x5b4634[_0x174b('0x93')]]);_0x1e17ad[_0x174b('0x87')]=![];_0x1e17ad['queuecallerexit']=!![];_0x1e17ad[_0x174b('0x8d')]=moment(_0x201ad8[_0x174b('0x94')])[_0x174b('0x95')](_0x5b4634[_0x174b('0x78')],'seconds')[_0x174b('0x46')](_0x174b('0x6d'));_0x1e17ad['queuecallerexitreason']='FORWARDTRANSFER';_0x1e17ad[_0x174b('0x8e')]=!![];_0x1e17ad[_0x174b('0x96')]=_0x174b('0x97');_0x1e17ad[_0x174b('0x98')]=_0x5b4634[_0x174b('0x99')];_0x1e17ad[_0x174b('0x9a')]=_0x5b4634[_0x174b('0x45')];logger['info'](_0x174b('0x9b'),_0x1e17ad['name'],_0x1e17ad['type']);var _0x794a7e=this[_0x174b('0xc')][_0x5b4634[_0x174b('0x93')]];this[_0x174b('0xc')][_0x5b4634[_0x174b('0x93')]]=this['queueReports'][_0x5b4634[_0x174b('0x45')]];this[_0x174b('0xc')][_0x5b4634[_0x174b('0x45')]]=_0x794a7e;}}else{_0x201ad8[_0x174b('0x7b')]='COMPLETEDBY'+_0x5b4634[_0x174b('0x8f')][_0x174b('0x9c')]();logger[_0x174b('0x7e')](_0x174b('0x9d'),_0x201ad8[_0x174b('0x48')],_0x201ad8[_0x174b('0x6c')],_0x201ad8[_0x174b('0x7b')]);}}}this[_0x174b('0xe')][_0x5b4634[_0x174b('0x45')]]=_0x201ad8;this['emitVoiceQueueChannelRemove'](_0x201ad8,_0x174b('0x1d'));}}}catch(_0x57eb30){logger[_0x174b('0x3b')](_0x174b('0x9e'),_0x5b4634[_0x174b('0x45')],util[_0x174b('0x3d')](_0x57eb30,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x3fa2ac){try{if(this['isNotNull'](_0x3fa2ac)){logger['debug']('[%s][voiceQueueReport][varset]',_0x3fa2ac['uniqueid'],util[_0x174b('0x3d')](_0x3fa2ac,{'showHidden':![],'depth':null}));this[_0x174b('0x9f')](_0x3fa2ac[_0x174b('0x45')],_[_0x174b('0xa0')](_0x3fa2ac[_0x174b('0xa1')])[0x0],_0x3fa2ac[_0x174b('0xa2')]);if(this[_0x174b('0xc')][_0x3fa2ac['uniqueid']]){var _0x1aca72=_[_0x174b('0x76')](this[_0x174b('0xc')][_0x3fa2ac['uniqueid']]);if(_0x1aca72){if(this['isNotNull'](_0x3fa2ac[_0x174b('0xa1')])&&this[_0x174b('0x5d')](_0x3fa2ac[_0x174b('0xa1')][_0x174b('0xa3')])){switch(_0x3fa2ac[_0x174b('0xa2')]){case _0x174b('0xa4'):_0x1aca72[_0x174b('0x8c')]=![];_0x1aca72['queuecallerexitAt']=null;break;case _0x174b('0xa5'):_0x1aca72[_0x174b('0xa6')]=_0x174b('0xa7');_0x1aca72[_0x174b('0x8c')]=!![];_0x1aca72['queuecallerexitAt']=moment()[_0x174b('0x46')](_0x174b('0x6d'));_0x1aca72[_0x174b('0x81')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x174b('0x4c')](_0x174b('0xa8'),_0x3fa2ac[_0x174b('0x45')],util['inspect'](_0x1aca72,{'showHidden':![],'depth':null}));ami[_0x174b('0x41')](_0x174b('0xa9'),_0x1aca72);break;default:_0x1aca72[_0x174b('0x8c')]=!![];_0x1aca72[_0x174b('0x8d')]=moment()['format'](_0x174b('0x6d'));_0x1aca72[_0x174b('0x81')]=moment()['format'](_0x174b('0x6d'));}_0x1aca72[_0x174b('0x1a')]=![];_0x1aca72[_0x174b('0x7a')]=null;_0x1aca72[_0x174b('0x7b')]=_0x3fa2ac[_0x174b('0xa2')];this['channels'][_0x3fa2ac[_0x174b('0x45')]]=_0x1aca72;this[_0x174b('0x4b')](_0x1aca72,_0x174b('0x20'));}else if(this[_0x174b('0x5d')](_0x3fa2ac['variable'])&&this[_0x174b('0x5d')](_0x3fa2ac[_0x174b('0xa1')]['queueposition'])){if(!_0x1aca72[_0x174b('0x1a')]){_0x1aca72[_0x174b('0x8c')]=!![];_0x1aca72['queuecallerexitAt']=moment()[_0x174b('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x1aca72[_0x174b('0x7b')]=_0x174b('0xaa');_0x1aca72[_0x174b('0x81')]=moment()[_0x174b('0x46')](_0x174b('0x6d'));this[_0x174b('0xe')][_0x3fa2ac[_0x174b('0x45')]]=_0x1aca72;}}logger['info'](_0x174b('0xab'),_0x3fa2ac['uniqueid'],_0x1aca72[_0x174b('0x48')],_0x1aca72['type'],_['keys'](_0x3fa2ac['variable'])[0x0],_0x3fa2ac[_0x174b('0xa2')]);_0x1aca72[_0x174b('0x13')]=this['variables'][_0x3fa2ac[_0x174b('0x45')]];}}}}catch(_0x1b8066){logger['error'](_0x174b('0xac'),_0x3fa2ac[_0x174b('0x45')],util[_0x174b('0x3d')](_0x1b8066,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x174b('0x9f')]=function(_0x31f8d2,_0x4c257b,_0x2d0a39){var _0x5a0536=[_0x174b('0xad'),_0x174b('0xae'),'rtpaudioqosjitter',_0x174b('0xaf'),'rtpaudioqosloss',_0x174b('0xb0'),_0x174b('0xb1'),_0x174b('0xb2'),_0x174b('0xb3'),_0x174b('0xb4'),_0x174b('0xb5'),_0x174b('0xb6'),_0x174b('0xb7'),_0x174b('0xb8'),_0x174b('0xb9'),_0x174b('0xba'),_0x174b('0x8b'),'memberpenalty',_0x174b('0xbb')];if(!_[_0x174b('0xbc')](_0x4c257b)&&!_['includes'](_0x5a0536,_0x4c257b)){if(_[_0x174b('0x6b')](this[_0x174b('0x13')][_0x31f8d2])){this[_0x174b('0x13')][_0x31f8d2]={};}this['variables'][_0x31f8d2][_0x4c257b]=_0x2d0a39;}};VoiceQueueReport['prototype']['syncHangup']=function(_0xeb403b){try{if(this[_0x174b('0x5d')](_0xeb403b)){logger[_0x174b('0x4c')](_0x174b('0xbd'),_0xeb403b[_0x174b('0x45')],util[_0x174b('0x3d')](_0xeb403b,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0xeb403b['uniqueid']]){for(var _0x55578f=0x0,_0x175318={};_0x55578f<this[_0x174b('0xc')][_0xeb403b[_0x174b('0x45')]][_0x174b('0xbe')];_0x55578f+=0x1){_0x175318=this[_0x174b('0xc')][_0xeb403b['uniqueid']][_0x55578f];if(this[_0x174b('0x10')][_0x175318[_0x174b('0x62')]]){if(_0x175318[_0x174b('0x8c')]&&_0x175318[_0x174b('0x8e')]!=!![]){this[_0x174b('0x10')][_0x175318['queue']]['unmanaged']+=0x1;}if(_0x175318[_0x174b('0x1a')]){this['voiceQueues'][_0x175318['queue']][_0x174b('0x56')]+=0x1;}this[_0x174b('0x10')][_0x175318['queue']][_0x174b('0x54')]+=moment(_0x175318[_0x174b('0x81')])['diff'](_0x175318[_0x174b('0x94')],_0x174b('0xbf'))||0x0;if(_0x55578f===this[_0x174b('0xc')][_0xeb403b[_0x174b('0x45')]][_0x174b('0xbe')]-0x1){this[_0x174b('0x10')][_0x175318[_0x174b('0x62')]][_0x174b('0x53')]+=moment()['milliseconds'](0x0)[_0x174b('0xc0')](_0x175318[_0x174b('0x94')],_0x174b('0xbf'));this[_0x174b('0x10')][_0x175318[_0x174b('0x62')]][_0x174b('0x55')]+=0x1;if(_0x175318[_0x174b('0x87')]){this['voiceQueues'][_0x175318['queue']][_0x174b('0xc1')]+=0x1;this[_0x174b('0x10')][_0x175318['queue']][_0x174b('0x52')]+=moment()[_0x174b('0xc2')](0x0)[_0x174b('0xc0')](_0x175318['queuecallerleaveAt'],'seconds');_0x175318[_0x174b('0x77')]=moment()[_0x174b('0x46')](_0x174b('0x6d'));_0x175318[_0x174b('0x8c')]=![];_0x175318['queuecallerexitAt']=null;}if(_0x175318[_0x174b('0x8c')]&&_0x175318[_0x174b('0x8e')]!=!![]){_0x175318['lastevent']='unmanaged';logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0xeb403b['uniqueid'],util[_0x174b('0x3d')](_0x175318,{'showHidden':![],'depth':null}));ami['emit'](_0x174b('0xc3'),_0x175318);}if(_0x175318[_0x174b('0x1a')]){_0x175318[_0x174b('0xa6')]=_0x174b('0x56');logger[_0x174b('0x4c')](_0x174b('0xc4'),_0xeb403b[_0x174b('0x45')],util[_0x174b('0x3d')](_0x175318,{'showHidden':![],'depth':null}));ami[_0x174b('0x41')](_0x174b('0xc5'),_0x175318);}}else{this[_0x174b('0x10')][_0x175318['queue']]['sumDuration']+=this[_0x174b('0x10')][_0x175318[_0x174b('0x62')]][_0x174b('0x54')];}logger[_0x174b('0x7e')](_0x174b('0xc6'),_0xeb403b['uniqueid'],_0x175318[_0x174b('0x48')],_0x175318['type'],_0xeb403b[_0x174b('0xc7')]);this['channels'][_0xeb403b[_0x174b('0x45')]]=_0x175318;this[_0x174b('0x4b')](_0x175318,_0x174b('0x22'));this[_0x174b('0x4e')](this[_0x174b('0x10')][_0x175318[_0x174b('0x62')]],'hangup');}}logger['debug'](_0x174b('0xc8'),_0xeb403b[_0x174b('0x45')],util['inspect'](this[_0x174b('0xc')][_0xeb403b['uniqueid']],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceQueueReport',this['queueReports'][_0xeb403b[_0x174b('0x45')]]);delete this[_0x174b('0xc')][_0xeb403b['uniqueid']];delete this['channels'][_0xeb403b['uniqueid']];}if(this[_0x174b('0x13')][_0xeb403b['uniqueid']]){delete this[_0x174b('0x13')][_0xeb403b['uniqueid']];}}}catch(_0x467b05){logger[_0x174b('0x3b')](_0x174b('0xbd'),_0xeb403b['uniqueid'],util[_0x174b('0x3d')](_0x467b05,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0xc9')]=function(_0xbc5a20){try{if(this[_0x174b('0x5d')](_0xbc5a20)){logger[_0x174b('0x4c')]('[%s][voiceQueueReport][attendedtransfer]',_0xbc5a20[_0x174b('0x45')],util[_0x174b('0x3d')](_0xbc5a20,{'showHidden':![],'depth':null}));var _0x2ceff6;if(this['queueReports'][_0xbc5a20['transfereeuniqueid']]){_0x2ceff6=_['last'](this[_0x174b('0xc')][_0xbc5a20['transfereeuniqueid']]);_0x2ceff6['transferexten']=_0xbc5a20[_0x174b('0xca')];_0x2ceff6[_0x174b('0x9a')]=_0xbc5a20[_0x174b('0xcb')];_0x2ceff6[_0x174b('0x7b')]='ATTENDEDTRANSFER';_0x2ceff6['transfer']=!![];_0x2ceff6[_0x174b('0x96')]='ATTENDED';if(this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xcb')]]){var _0x308d7f=this['queueReports'][_0xbc5a20[_0x174b('0xcb')]];this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xcb')]]=this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xcc')]];this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xcc')]]=_0x308d7f;var _0x223112=_['last'](this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xcc')]]);_0x223112[_0x174b('0x36')]=!![];}logger[_0x174b('0x7e')](_0x174b('0xcd'),_0xbc5a20[_0x174b('0x45')],_0x2ceff6['name'],_0x2ceff6[_0x174b('0x6c')],_0x2ceff6[_0x174b('0x98')],_0x2ceff6[_0x174b('0x9a')]);}else if(this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xce')]]){_0x2ceff6=_['last'](this[_0x174b('0xc')][_0xbc5a20['transfertargetuniqueid']]);_0x2ceff6['transferexten']=_0xbc5a20['origtransfererexten'];_0x2ceff6[_0x174b('0x9a')]=_0xbc5a20[_0x174b('0xcf')];_0x2ceff6[_0x174b('0x7b')]=_0x174b('0xd0');_0x2ceff6[_0x174b('0x8e')]=!![];_0x2ceff6[_0x174b('0x96')]='ATTENDED';if(this['queueReports'][_0xbc5a20[_0x174b('0xcf')]]){var _0x308d7f=this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xcf')]];this[_0x174b('0xc')][_0xbc5a20['origtransfereruniqueid']]=this[_0x174b('0xc')][_0xbc5a20[_0x174b('0xce')]];this['queueReports'][_0xbc5a20[_0x174b('0xce')]]=_0x308d7f;var _0x223112=_[_0x174b('0x76')](this[_0x174b('0xc')][_0xbc5a20['transfertargetuniqueid']]);_0x223112[_0x174b('0x36')]=!![];}logger[_0x174b('0x7e')](_0x174b('0xcd'),_0xbc5a20['uniqueid'],_0x2ceff6[_0x174b('0x48')],_0x2ceff6[_0x174b('0x6c')],_0x2ceff6[_0x174b('0x98')],_0x2ceff6[_0x174b('0x9a')]);}}}catch(_0x11b618){logger[_0x174b('0x3b')](_0x174b('0xd1'),_0xbc5a20[_0x174b('0x45')],util[_0x174b('0x3d')](_0x11b618,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x174b('0x2a')]=function(_0xa0c0de){try{if(this['isNotNull'](_0xa0c0de)){logger['debug'](_0x174b('0xd2'),_0xa0c0de['uniqueid'],util[_0x174b('0x3d')](_0xa0c0de,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0xa0c0de[_0x174b('0xcc')]]){var _0x4ad3fb=_[_0x174b('0x76')](this[_0x174b('0xc')][_0xa0c0de[_0x174b('0xcc')]]);_0x4ad3fb['queuecallerexitreason']=_0x174b('0xd3');_0x4ad3fb[_0x174b('0x8e')]=!![];_0x4ad3fb['transfertype']='BLIND';_0x4ad3fb['transferexten']=_0xa0c0de['extension'];_0x4ad3fb[_0x174b('0x9a')]=_0xa0c0de[_0x174b('0xcc')];logger[_0x174b('0x7e')](_0x174b('0xd4'),_0xa0c0de['uniqueid'],_0x4ad3fb[_0x174b('0x48')],_0x4ad3fb['type'],_0x4ad3fb[_0x174b('0x98')],_0x4ad3fb[_0x174b('0x9a')]);this[_0x174b('0x23')]({'event':_0x174b('0xd5'),'uniqueid':_0xa0c0de[_0x174b('0xcc')],'context':_0xa0c0de[_0x174b('0xd6')],'channel':_0xa0c0de['transfererchannel']});}}}catch(_0x1e0326){logger[_0x174b('0x3b')](_0x174b('0xd2'),_0xa0c0de[_0x174b('0x45')],util[_0x174b('0x3d')](_0x1e0326,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')][_0x174b('0x27')]=function(_0x445c8f){try{if(this[_0x174b('0x5d')](_0x445c8f)){logger[_0x174b('0x4c')](_0x174b('0xd7'),_0x445c8f[_0x174b('0x45')],util[_0x174b('0x3d')](_0x445c8f,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0x445c8f[_0x174b('0x45')]]){var _0x2b28a2=_[_0x174b('0x76')](this[_0x174b('0xc')][_0x445c8f['uniqueid']]);if(!_['isNil'](_0x2b28a2[_0x174b('0x81')])){_0x2b28a2[_0x174b('0xd8')]=moment()[_0x174b('0x46')](_0x174b('0x6d'));logger[_0x174b('0x7e')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x445c8f[_0x174b('0x45')],_0x2b28a2['mohstarttime']);}}}}catch(_0x3ecb28){logger[_0x174b('0x3b')](_0x174b('0xd7'),_0x445c8f[_0x174b('0x45')],util[_0x174b('0x3d')](_0x3ecb28,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')]['syncMusicOnHoldStop']=function(_0x211746){try{if(this['isNotNull'](_0x211746)){logger[_0x174b('0x4c')](_0x174b('0xd9'),_0x211746[_0x174b('0x45')],util['inspect'](_0x211746,{'showHidden':![],'depth':null}));if(this[_0x174b('0xc')][_0x211746[_0x174b('0x45')]]){var _0x3485bd=_[_0x174b('0x76')](this[_0x174b('0xc')][_0x211746[_0x174b('0x45')]]);if(!_[_0x174b('0xbc')](_0x3485bd[_0x174b('0xd8')])){_0x3485bd[_0x174b('0xda')]+=moment()['milliseconds'](0x0)[_0x174b('0xc0')](_0x3485bd['mohstarttime'],'seconds');logger['info'](_0x174b('0xdb'),_0x211746['uniqueid'],_0x3485bd[_0x174b('0xda')]);delete _0x3485bd['mohstarttime'];}}}}catch(_0x506ca1){logger[_0x174b('0x3b')](_0x174b('0xd9'),_0x211746['uniqueid'],util[_0x174b('0x3d')](_0x506ca1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x174b('0x9')]['syncNewExten']=function(_0xedcf10){try{if(this[_0x174b('0x5d')](_0xedcf10)){logger[_0x174b('0x4c')](_0x174b('0xdc'),_0xedcf10[_0x174b('0x45')],util[_0x174b('0x3d')](_0xedcf10,{'showHidden':![],'depth':null}));if(_0xedcf10[_0x174b('0xdd')]['toLowerCase']()===_0x174b('0xde')){_0xedcf10[_0x174b('0xdf')]=_0xedcf10['appdata']&&_0xedcf10[_0x174b('0xe0')][_0x174b('0x92')](_0x174b('0xe1'))?_0xedcf10[_0x174b('0xe0')]:(_0xedcf10['appdata']||_0xedcf10[_0x174b('0xdf')])[_0x174b('0xe2')]();if(_[_0x174b('0x92')](_0xedcf10[_0x174b('0xdf')][_0x174b('0xe2')](),_0x174b('0xe3'))){logger[_0x174b('0x7e')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0xedcf10['uniqueid'],_0xedcf10[_0x174b('0xdd')],_0xedcf10['applicationdata']);if(_[_0x174b('0x6b')](this[_0x174b('0xe')][_0xedcf10['uniqueid']]))this['channels'][_0xedcf10['uniqueid']]={};var _0xc1f18f=_0xedcf10['applicationdata'][_0x174b('0xe4')]('=');var _0x724779=_0xc1f18f[0x0][_0x174b('0xe2')]()['match'](/cdr\((.*)\)/);if(_0x724779)this[_0x174b('0xe')][_0xedcf10['uniqueid']][_0x724779[0x1]]=_0xc1f18f[0x1];}}}}catch(_0x390e66){logger[_0x174b('0x3b')](_0x174b('0xe5'),_0xedcf10[_0x174b('0x45')],util[_0x174b('0x3d')](_0x390e66,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index f6455d1..a068f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x079e=['Request','CreateReportAgentPreview','../client','campaign','queue'];(function(_0xca1cb1,_0x645692){var _0x154eed=function(_0x56d51d){while(--_0x56d51d){_0xca1cb1['push'](_0xca1cb1['shift']());}};_0x154eed(++_0x645692);}(_0x079e,0x160));var _0xe079=function(_0x12db1e,_0x46156b){_0x12db1e=_0x12db1e-0x0;var _0x3a0e11=_0x079e[_0x12db1e];return _0x3a0e11;};'use strict';var client=require(_0xe079('0x0'));exports['createHistory']=function(_0x35c5b7){return function(){_0x35c5b7[_0xe079('0x1')]=_0x35c5b7[_0xe079('0x2')];return client[_0xe079('0x3')](_0xe079('0x4'),{'body':_0x35c5b7,'log':_0xe079('0x4')});};};
\ No newline at end of file
+var _0x0f74=['Request','../client','campaign'];(function(_0x4804ec,_0x386ff4){var _0x28bf2f=function(_0x191b8f){while(--_0x191b8f){_0x4804ec['push'](_0x4804ec['shift']());}};_0x28bf2f(++_0x386ff4);}(_0x0f74,0x127));var _0x40f7=function(_0x43d50c,_0x116ad6){_0x43d50c=_0x43d50c-0x0;var _0x3aca75=_0x0f74[_0x43d50c];return _0x3aca75;};'use strict';var client=require(_0x40f7('0x0'));exports['createHistory']=function(_0x2969d1){return function(){_0x2969d1[_0x40f7('0x1')]=_0x2969d1['queue'];return client[_0x40f7('0x2')]('CreateReportAgentPreview',{'body':_0x2969d1,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index f0ce394..b011746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd802=['create','CreateAttachment'];(function(_0x1dfb68,_0x55753c){var _0x3f834a=function(_0x1e17af){while(--_0x1e17af){_0x1dfb68['push'](_0x1dfb68['shift']());}};_0x3f834a(++_0x55753c);}(_0xd802,0x7a));var _0x2d80=function(_0x4f4e4b,_0x46ea73){_0x4f4e4b=_0x4f4e4b-0x0;var _0x23a628=_0xd802[_0x4f4e4b];return _0x23a628;};'use strict';var client=require('../client');exports[_0x2d80('0x0')]=function(_0x65fad4){return client['Request'](_0x2d80('0x1'),{'body':_0x65fad4,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x7edd=['Request','CreateAttachment','../client','create'];(function(_0x1e5c89,_0x40e4b7){var _0x41a01a=function(_0x1bbeee){while(--_0x1bbeee){_0x1e5c89['push'](_0x1e5c89['shift']());}};_0x41a01a(++_0x40e4b7);}(_0x7edd,0x72));var _0xd7ed=function(_0x1d9b4b,_0x1d5823){_0x1d9b4b=_0x1d9b4b-0x0;var _0x23f2de=_0x7edd[_0x1d9b4b];return _0x23f2de;};'use strict';var client=require(_0xd7ed('0x0'));exports[_0xd7ed('0x1')]=function(_0x36613d){return client[_0xd7ed('0x2')](_0xd7ed('0x3'),{'body':_0x36613d,'log':'CreateAttachment'});};
\ No newline at end of file
index 71c98a4..556190a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0x27b7c7,_0x3ac0d0){var _0x42cb5e=function(_0x1cdec6){while(--_0x1cdec6){_0x27b7c7['push'](_0x27b7c7['shift']());}};_0x42cb5e(++_0x3ac0d0);}(_0xdb28,0x106));var _0x8db2=function(_0x62e35b,_0x41cc42){_0x62e35b=_0x62e35b-0x0;var _0x6a1335=_0xdb28[_0x62e35b];return _0x6a1335;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
+var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x18b3ad,_0x2a0be7){var _0x23057a=function(_0x3a1d84){while(--_0x3a1d84){_0x18b3ad['push'](_0x18b3ad['shift']());}};_0x23057a(++_0x2a0be7);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xc4aa[_0x11005e];return _0x29338f;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
index 863cb7f..4f9a228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8076=['getContacts','GetCmContact','../client','createContact','Request','CreateCmContact'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8076,0xe6));var _0x6807=function(_0x4b8ecb,_0x59decc){_0x4b8ecb=_0x4b8ecb-0x0;var _0x504478=_0x8076[_0x4b8ecb];return _0x504478;};'use strict';var client=require(_0x6807('0x0'));exports[_0x6807('0x1')]=function(_0x47adfa){return function(){return client[_0x6807('0x2')](_0x6807('0x3'),{'body':_0x47adfa,'log':_0x6807('0x3')});};};exports[_0x6807('0x4')]=function(_0x13a2fe){return function(){return client['Request'](_0x6807('0x5'),{'options':_0x13a2fe,'log':_0x6807('0x5')});};};
\ No newline at end of file
+var _0x7299=['../client','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x9ceae2,_0x488a24){var _0x16544c=function(_0x12f209){while(--_0x12f209){_0x9ceae2['push'](_0x9ceae2['shift']());}};_0x16544c(++_0x488a24);}(_0x7299,0x1d6));var _0x9729=function(_0x39b130,_0xe2a1bd){_0x39b130=_0x39b130-0x0;var _0x4c2b4a=_0x7299[_0x39b130];return _0x4c2b4a;};'use strict';var client=require(_0x9729('0x0'));exports['createContact']=function(_0xee6a1e){return function(){return client[_0x9729('0x1')](_0x9729('0x2'),{'body':_0xee6a1e,'log':_0x9729('0x2')});};};exports[_0x9729('0x3')]=function(_0xbb317a){return function(){return client[_0x9729('0x1')](_0x9729('0x4'),{'options':_0xbb317a,'log':_0x9729('0x4')});};};
\ No newline at end of file
index f469b59..a3609d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3922=['CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','format','priority','CmContact','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','ListId','VoiceQueueId','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','GetContactRecallMe','DESC','voicePause','db.CmHopper.UserId','../client','moment','lodash','getContacts','Request','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId'];(function(_0x122f7c,_0x23fd32){var _0xe17566=function(_0x5c4099){while(--_0x5c4099){_0x122f7c['push'](_0x122f7c['shift']());}};_0xe17566(++_0x23fd32);}(_0x3922,0x75));var _0x2392=function(_0x380e21,_0x3782a7){_0x380e21=_0x380e21-0x0;var _0x46b982=_0x3922[_0x380e21];return _0x46b982;};'use strict';var client=require(_0x2392('0x0'));var moment=require(_0x2392('0x1'));var _=require(_0x2392('0x2'));exports[_0x2392('0x3')]=function(_0x5b06b9,_0x4aaadc){return function(){return client[_0x2392('0x4')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x5b06b9},'include':[{'model':'CmContact','as':_0x2392('0x5')}],'limit':_0x4aaadc,'raw':![]},'log':_0x2392('0x6')});};};exports[_0x2392('0x7')]=function(_0x167c44,_0x38186b,_0x5097b2){return function(){return client[_0x2392('0x4')](_0x2392('0x8'),{'body':_0x167c44,'options':{'where':{'VoiceQueueId':_0x38186b,'scheduledat':{'$lte':moment()['format'](_0x2392('0x9'))}},'limit':_0x5097b2},'log':_0x2392('0x8')});};};exports[_0x2392('0xa')]=function(_0x4da9a9){return function(){return client[_0x2392('0x4')](_0x2392('0x8'),{'body':_0x4da9a9,'options':{'where':{'ContactId':_0x4da9a9[_0x2392('0xb')],'ListId':_0x4da9a9['ListId'],'VoiceQueueId':_0x4da9a9['VoiceQueueId'],'CampaignId':_0x4da9a9[_0x2392('0xc')]}},'log':'rescheduleContact'});};};exports[_0x2392('0xd')]=function(_0x580881,_0x11d5f0,_0x27417e){return function(){return client[_0x2392('0x4')](_0x2392('0xe'),{'options':{'where':{'VoiceQueueId':_0x580881,'ListId':_0x11d5f0,'ContactId':_0x27417e}},'log':_0x2392('0xe')});};};exports[_0x2392('0xf')]=function(_0x13d546,_0x6d5de8,_0x56b2e2,_0x23b4c8){return function(){return client[_0x2392('0x4')](_0x2392('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x13d546,'active':![],'scheduledat':{'$lte':moment()[_0x2392('0x11')](_0x2392('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x6d5de8}}]},'order':[[_0x2392('0x12'),'DESC'],['scheduledat',_0x23b4c8],['id','ASC']],'raw':!![],'limit':_0x56b2e2},'log':_0x2392('0x10')});};};exports['getContactDialerIvr']=function(_0x5240b5,_0x116e4e,_0x5e1bf9){return function(){return client['Request'](_0x2392('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5240b5,'active':![],'scheduledat':{'$lte':moment()[_0x2392('0x11')](_0x2392('0x9'))}},'include':[{'model':_0x2392('0x13'),'as':_0x2392('0x5')}],'order':[[_0x2392('0x12'),'DESC'],[_0x2392('0x14'),_0x5e1bf9],['id',_0x2392('0x15')]],'raw':!![],'limit':_0x116e4e},'log':_0x2392('0x16')});};};exports[_0x2392('0x17')]=function(_0xf073fd,_0x5b4adb){return function(){_0xf073fd[_0x2392('0x18')]=_0xf073fd[_0x2392('0x19')];return client['Request']('MoveContactManagedDialer',{'body':_0xf073fd,'options':{'where':{'ContactId':_0xf073fd[_0x2392('0xb')],'ListId':_0xf073fd[_0x2392('0x1a')],'VoiceQueueId':_0xf073fd[_0x2392('0x1b')],'CampaignId':_0xf073fd[_0x2392('0xc')],'active':_0x5b4adb?undefined:!![]}},'log':_0x2392('0x1c')});};};exports[_0x2392('0x1d')]=function(_0x4f184e){return function(){return client[_0x2392('0x4')](_0x2392('0x1e'),{'options':{'where':{'VoiceQueueId':_0x4f184e['id']?_0x4f184e['id']||null:null}},'log':'countReScheduled'});};};exports[_0x2392('0x1f')]=function(_0x2ffd20){return function(){return client['Request'](_0x2392('0x20'),{'options':{'where':{'id':_0x2ffd20},'include':[{'model':_0x2392('0x13'),'as':_0x2392('0x5')},{'model':_0x2392('0x21'),'as':_0x2392('0x22'),'attributes':['id',_0x2392('0x23')]},{'model':_0x2392('0x24'),'as':_0x2392('0x25'),'attributes':['id','name']}],'raw':!![]},'log':_0x2392('0x6')});};};exports[_0x2392('0x26')]=function(_0x21b76c,_0x3c040b,_0x1a8fa2){return function(){return client[_0x2392('0x4')]('UpdateCmHopper',{'body':_0x21b76c,'options':{'where':{'id':_0x3c040b},'limit':_0x1a8fa2},'log':_0x2392('0x8')});};};exports['getContactRecallMe']=function(_0x54ea1f,_0x1b5ee0){return function(){return client[_0x2392('0x4')](_0x2392('0x27'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x54ea1f,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2392('0x11')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x1b5ee0}},'order':[['priority',_0x2392('0x28')],[_0x2392('0x14'),_0x2392('0x28')],['id',_0x2392('0x15')]],'include':[{'model':_0x2392('0x13'),'as':_0x2392('0x5')},{'model':_0x2392('0x21'),'as':_0x2392('0x22'),'attributes':['id',_0x2392('0x23'),_0x2392('0x29')]}],'group':_0x2392('0x2a'),'raw':!![]},'log':_0x2392('0x10')});};};
\ No newline at end of file
+var _0x555b=['Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','priority','DESC','scheduledat','ASC','GetContactDialer','getContactDialerIvr','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','CmContact','User','name','Queue','unlockContact','GetContactRecallMe','Agent','db.CmHopper.UserId','../client','lodash','getContacts','GetCmHopper','Contact','updateContacts'];(function(_0x1322be,_0xbf40cc){var _0x500810=function(_0x138a37){while(--_0x138a37){_0x1322be['push'](_0x1322be['shift']());}};_0x500810(++_0xbf40cc);}(_0x555b,0x180));var _0xb555=function(_0x432c11,_0xfbc2e7){_0x432c11=_0x432c11-0x0;var _0x5b3327=_0x555b[_0x432c11];return _0x5b3327;};'use strict';var client=require(_0xb555('0x0'));var moment=require('moment');var _=require(_0xb555('0x1'));exports[_0xb555('0x2')]=function(_0x5da1ff,_0x2cbddb){return function(){return client['Request'](_0xb555('0x3'),{'options':{'where':{'VoiceQueueId':_0x5da1ff},'include':[{'model':'CmContact','as':_0xb555('0x4')}],'limit':_0x2cbddb,'raw':![]},'log':'getCmHopper'});};};exports[_0xb555('0x5')]=function(_0x41e8ce,_0x2d207d,_0x5d0c53){return function(){return client[_0xb555('0x6')](_0xb555('0x7'),{'body':_0x41e8ce,'options':{'where':{'VoiceQueueId':_0x2d207d,'scheduledat':{'$lte':moment()[_0xb555('0x8')](_0xb555('0x9'))}},'limit':_0x5d0c53},'log':_0xb555('0x7')});};};exports['rescheduleContact']=function(_0x242399){return function(){return client[_0xb555('0x6')](_0xb555('0x7'),{'body':_0x242399,'options':{'where':{'ContactId':_0x242399[_0xb555('0xa')],'ListId':_0x242399[_0xb555('0xb')],'VoiceQueueId':_0x242399[_0xb555('0xc')],'CampaignId':_0x242399[_0xb555('0xd')]}},'log':'rescheduleContact'});};};exports[_0xb555('0xe')]=function(_0x4a1f6e,_0x5be99d,_0x3f26a8){return function(){return client[_0xb555('0x6')](_0xb555('0xf'),{'options':{'where':{'VoiceQueueId':_0x4a1f6e,'ListId':_0x5be99d,'ContactId':_0x3f26a8}},'log':_0xb555('0xf')});};};exports['getContactDialer']=function(_0x2fe27f,_0x53bd34,_0xf74f5a,_0x4b32a2){return function(){return client[_0xb555('0x6')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2fe27f,'active':![],'scheduledat':{'$lte':moment()[_0xb555('0x8')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x53bd34}}]},'order':[[_0xb555('0x10'),_0xb555('0x11')],[_0xb555('0x12'),_0x4b32a2],['id',_0xb555('0x13')]],'raw':!![],'limit':_0xf74f5a},'log':_0xb555('0x14')});};};exports[_0xb555('0x15')]=function(_0x39941f,_0x46e804,_0x55e8b5){return function(){return client[_0xb555('0x6')](_0xb555('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x39941f,'active':![],'scheduledat':{'$lte':moment()[_0xb555('0x8')](_0xb555('0x9'))}},'include':[{'model':'CmContact','as':'Contact'}],'order':[[_0xb555('0x10'),'DESC'],['scheduledat',_0x55e8b5],['id',_0xb555('0x13')]],'raw':!![],'limit':_0x46e804},'log':_0xb555('0x16')});};};exports[_0xb555('0x17')]=function(_0x55ee63,_0xba3bd1){return function(){_0x55ee63[_0xb555('0x18')]=_0x55ee63[_0xb555('0x19')];return client[_0xb555('0x6')](_0xb555('0x1a'),{'body':_0x55ee63,'options':{'where':{'ContactId':_0x55ee63['ContactId'],'ListId':_0x55ee63['ListId'],'VoiceQueueId':_0x55ee63[_0xb555('0xc')],'CampaignId':_0x55ee63[_0xb555('0xd')],'active':_0xba3bd1?undefined:!![]}},'log':_0xb555('0x1a')});};};exports[_0xb555('0x1b')]=function(_0x11139a){return function(){return client[_0xb555('0x6')](_0xb555('0x1c'),{'options':{'where':{'VoiceQueueId':_0x11139a['id']?_0x11139a['id']||null:null}},'log':'countReScheduled'});};};exports[_0xb555('0x1d')]=function(_0x1004cc){return function(){return client[_0xb555('0x6')](_0xb555('0x1e'),{'options':{'where':{'id':_0x1004cc},'include':[{'model':_0xb555('0x1f'),'as':'Contact'},{'model':_0xb555('0x20'),'as':'Agent','attributes':['id',_0xb555('0x21')]},{'model':'VoiceQueue','as':_0xb555('0x22'),'attributes':['id',_0xb555('0x21')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0xb555('0x23')]=function(_0xf2e4a1,_0x19e023,_0x3590f8){return function(){return client[_0xb555('0x6')](_0xb555('0x7'),{'body':_0xf2e4a1,'options':{'where':{'id':_0x19e023},'limit':_0x3590f8},'log':_0xb555('0x7')});};};exports['getContactRecallMe']=function(_0xc1b16d,_0x189655){return function(){return client[_0xb555('0x6')](_0xb555('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xc1b16d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xb555('0x8')](_0xb555('0x9'))},'UserId':{'$in':_0x189655}},'order':[[_0xb555('0x10'),_0xb555('0x11')],['scheduledat',_0xb555('0x11')],['id','ASC']],'include':[{'model':_0xb555('0x1f'),'as':_0xb555('0x4')},{'model':_0xb555('0x20'),'as':_0xb555('0x25'),'attributes':['id',_0xb555('0x21'),'voicePause']}],'group':_0xb555('0x26'),'raw':!![]},'log':_0xb555('0x14')});};};
\ No newline at end of file
index be51291..985ece3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['VoiceQueueId','phone','checkIsBlackListIvr','Request','CampaignId','Contact','../client','GetCmHopperBlack'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x4b970a,_0x377608){_0x4b970a=_0x4b970a-0x0;var _0x5bfe4f=_0xdd4f[_0x4b970a];return _0x5bfe4f;};'use strict';var client=require(_0xfdd4('0x0'));exports['checkIsBlackList']=function(_0x5656ab){return function(){return client['Request'](_0xfdd4('0x1'),{'options':{'where':{'VoiceQueueId':_0x5656ab[_0xfdd4('0x2')],'phone':_0x5656ab['Contact'][_0xfdd4('0x3')]},'raw':![]},'log':_0xfdd4('0x1')});};};exports[_0xfdd4('0x4')]=function(_0x554e44){return function(){return client[_0xfdd4('0x5')](_0xfdd4('0x1'),{'options':{'where':{'CampaignId':_0x554e44[_0xfdd4('0x6')],'phone':_0x554e44[_0xfdd4('0x7')][_0xfdd4('0x3')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x4cf8=['Contact','phone','checkIsBlackListIvr','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x4f7554,_0x466442){var _0x1bc380=function(_0xb43d59){while(--_0xb43d59){_0x4f7554['push'](_0x4f7554['shift']());}};_0x1bc380(++_0x466442);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x502036,_0x502686){_0x502036=_0x502036-0x0;var _0x485247=_0x4cf8[_0x502036];return _0x485247;};'use strict';var client=require(_0x84cf('0x0'));exports[_0x84cf('0x1')]=function(_0x287eb2){return function(){return client[_0x84cf('0x2')](_0x84cf('0x3'),{'options':{'where':{'VoiceQueueId':_0x287eb2[_0x84cf('0x4')],'phone':_0x287eb2[_0x84cf('0x5')][_0x84cf('0x6')]},'raw':![]},'log':_0x84cf('0x3')});};};exports[_0x84cf('0x7')]=function(_0x5844d7){return function(){return client[_0x84cf('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x5844d7['CampaignId'],'phone':_0x5844d7[_0x84cf('0x5')]['phone']},'raw':![]},'log':_0x84cf('0x8')});};};
\ No newline at end of file
index 6f3ed94..7ef5bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd794=['campaign','queue','Request','CreateCmHopperFinal','../client','createContact'];(function(_0x201e3c,_0x36220d){var _0x140904=function(_0x2b7781){while(--_0x2b7781){_0x201e3c['push'](_0x201e3c['shift']());}};_0x140904(++_0x36220d);}(_0xd794,0x15a));var _0x4d79=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd794[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x4d79('0x0'));exports[_0x4d79('0x1')]=function(_0x49745b){return function(){_0x49745b[_0x4d79('0x2')]=_0x49745b[_0x4d79('0x3')];return client[_0x4d79('0x4')]('CreateCmHopperFinal',{'body':_0x49745b,'log':_0x4d79('0x5')});};};
\ No newline at end of file
+var _0xdb76=['../client','createContact','campaign','queue','Request','CreateCmHopperFinal'];(function(_0x16c7fe,_0x599b13){var _0x12f4b3=function(_0x4df123){while(--_0x4df123){_0x16c7fe['push'](_0x16c7fe['shift']());}};_0x12f4b3(++_0x599b13);}(_0xdb76,0x192));var _0x6db7=function(_0x46eecb,_0x3f8f9f){_0x46eecb=_0x46eecb-0x0;var _0x4335b6=_0xdb76[_0x46eecb];return _0x4335b6;};'use strict';var client=require(_0x6db7('0x0'));exports[_0x6db7('0x1')]=function(_0x3b68f8){return function(){_0x3b68f8[_0x6db7('0x2')]=_0x3b68f8[_0x6db7('0x3')];return client[_0x6db7('0x4')](_0x6db7('0x5'),{'body':_0x3b68f8,'log':_0x6db7('0x5')});};};
\ No newline at end of file
index ddf59b1..e91875d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7a1=['avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','createHistory','campaign','queue','Request','CreateCmHopperHistory'];(function(_0x2b9e8a,_0x7b21d4){var _0x520e67=function(_0x22bce8){while(--_0x22bce8){_0x2b9e8a['push'](_0x2b9e8a['shift']());}};_0x520e67(++_0x7b21d4);}(_0xb7a1,0xb7));var _0x1b7a=function(_0x57f079,_0x369d37){_0x57f079=_0x57f079-0x0;var _0x3aac06=_0xb7a1[_0x57f079];return _0x3aac06;};'use strict';var client=require(_0x1b7a('0x0'));var moment=require('moment');exports[_0x1b7a('0x1')]=function(_0x1a433f){return function(){_0x1a433f[_0x1b7a('0x2')]=_0x1a433f[_0x1b7a('0x3')];return client[_0x1b7a('0x4')]('CreateCmHopperHistory',{'body':_0x1a433f,'log':_0x1b7a('0x5')});};};exports[_0x1b7a('0x6')]=function(_0x7b066f){return function(){return client[_0x1b7a('0x4')](_0x1b7a('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x1b7a('0x8')](_0x7b066f,_0x1b7a('0x9'))[_0x1b7a('0xa')](_0x1b7a('0xb')),moment()[_0x1b7a('0xa')](_0x1b7a('0xb'))]}},'raw':![]},'log':_0x1b7a('0xc')});};};exports[_0x1b7a('0xd')]=function(_0x513b3b){return function(){return client[_0x1b7a('0x4')](_0x1b7a('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x1b7a('0xf')]('day')[_0x1b7a('0xa')](_0x1b7a('0xb')),moment()[_0x1b7a('0x10')](_0x1b7a('0x11'))[_0x1b7a('0xa')](_0x1b7a('0xb'))]},'campaigntype':_0x1b7a('0x3')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x1b7a('0x12')]=function(_0x2d4614){return function(){return client[_0x1b7a('0x4')](_0x1b7a('0x13'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x1b7a('0xf')](_0x1b7a('0x11'))['format'](_0x1b7a('0xb')),moment()[_0x1b7a('0x10')](_0x1b7a('0x11'))[_0x1b7a('0xa')](_0x1b7a('0xb'))]},'campaigntype':_0x1b7a('0x14')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0xaf15=['getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','GetCampaignHopperHistory','ivr','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaf15,0x139));var _0x5af1=function(_0x1b4546,_0x2e29d2){_0x1b4546=_0x1b4546-0x0;var _0x49b425=_0xaf15[_0x1b4546];return _0x49b425;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x5af1('0x0')]=function(_0x186f8d){return function(){_0x186f8d[_0x5af1('0x1')]=_0x186f8d[_0x5af1('0x2')];return client[_0x5af1('0x3')]('CreateCmHopperHistory',{'body':_0x186f8d,'log':_0x5af1('0x4')});};};exports[_0x5af1('0x5')]=function(_0x56a069){return function(){return client[_0x5af1('0x3')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x5af1('0x6')](_0x56a069,_0x5af1('0x7'))[_0x5af1('0x8')](_0x5af1('0x9')),moment()[_0x5af1('0x8')](_0x5af1('0x9'))]}},'raw':![]},'log':_0x5af1('0xa')});};};exports[_0x5af1('0xb')]=function(_0x1824ba){return function(){return client['Request'](_0x5af1('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x5af1('0xd')](_0x5af1('0xe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x5af1('0xf')](_0x5af1('0xe'))['format'](_0x5af1('0x9'))]},'campaigntype':_0x5af1('0x2')},'raw':![]},'log':_0x5af1('0xc')});};};exports['getCampaignHopperHistory']=function(_0x5727ea){return function(){return client['Request'](_0x5af1('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x5af1('0xd')](_0x5af1('0xe'))[_0x5af1('0x8')](_0x5af1('0x9')),moment()[_0x5af1('0xf')](_0x5af1('0xe'))[_0x5af1('0x8')](_0x5af1('0x9'))]},'campaigntype':_0x5af1('0x11')},'raw':![]},'log':_0x5af1('0x10')});};};
\ No newline at end of file
index 0d18030..c60ebe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x431b=['Request','name','description','ecm','headerinfo','localstationid','minrate','maxrate','gateway','t38timeout','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts'];(function(_0x4b9978,_0x58eb71){var _0x42f0e5=function(_0x4ff5dc){while(--_0x4ff5dc){_0x4b9978['push'](_0x4b9978['shift']());}};_0x42f0e5(++_0x58eb71);}(_0x431b,0x18d));var _0xb431=function(_0x473766,_0x46ead9){_0x473766=_0x473766-0x0;var _0x4d1e5a=_0x431b[_0x473766];return _0x4d1e5a;};'use strict';var client=require(_0xb431('0x0'));exports[_0xb431('0x1')]=function(){return function(){return client[_0xb431('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xb431('0x3'),_0xb431('0x4'),_0xb431('0x5'),_0xb431('0x6'),_0xb431('0x7'),_0xb431('0x8'),_0xb431('0x9'),'modem',_0xb431('0xa'),'faxdetect',_0xb431('0xb'),'tech','TrunkId',_0xb431('0xc'),'key'],'include':[{'model':'Trunk','as':_0xb431('0xd'),'attributes':['id',_0xb431('0x3'),_0xb431('0xe'),_0xb431('0xf')]}]},'log':_0xb431('0x10')});};};exports[_0xb431('0x11')]=function(_0x413c63,_0x492f5c){return client[_0xb431('0x2')](_0xb431('0x12'),{'account':{'id':_0x413c63},'body':_0x492f5c,'log':_0xb431('0x12')});};
\ No newline at end of file
+var _0x9ccd=['Request','GetFaxAccount','ecm','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','name','callerid','active','notify','NotifyFaxAccount','../client'];(function(_0x2f2f05,_0x9541f8){var _0x52cbb6=function(_0x1eeb1d){while(--_0x1eeb1d){_0x2f2f05['push'](_0x2f2f05['shift']());}};_0x52cbb6(++_0x9541f8);}(_0x9ccd,0x1a3));var _0xd9cc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9ccd[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xd9cc('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0xd9cc('0x1')](_0xd9cc('0x2'),{'options':{'raw':![],'attributes':['id','name','description',_0xd9cc('0x3'),'headerinfo',_0xd9cc('0x4'),_0xd9cc('0x5'),_0xd9cc('0x6'),_0xd9cc('0x7'),_0xd9cc('0x8'),_0xd9cc('0x9'),_0xd9cc('0xa'),_0xd9cc('0xb'),_0xd9cc('0xc'),_0xd9cc('0xd'),_0xd9cc('0xe')],'include':[{'model':_0xd9cc('0xf'),'as':_0xd9cc('0xf'),'attributes':['id',_0xd9cc('0x10'),_0xd9cc('0x11'),_0xd9cc('0x12')]}]},'log':'getFaxAccount'});};};exports[_0xd9cc('0x13')]=function(_0x2b17db,_0x2bdd83){return client[_0xd9cc('0x1')](_0xd9cc('0x14'),{'account':{'id':_0x2b17db},'body':_0x2bdd83,'log':_0xd9cc('0x14')});};
\ No newline at end of file
index 636eb4e..4ed4130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19db=['UpdateFaxMessage','Request'];(function(_0x1d30a3,_0x5f428c){var _0x32bba1=function(_0x5a60cc){while(--_0x5a60cc){_0x1d30a3['push'](_0x1d30a3['shift']());}};_0x32bba1(++_0x5f428c);}(_0x19db,0x165));var _0xb19d=function(_0x11d25d,_0x1c92f4){_0x11d25d=_0x11d25d-0x0;var _0x5a7003=_0x19db[_0x11d25d];return _0x5a7003;};'use strict';var client=require('../client');exports['update']=function(_0x466f14,_0x3920a8){return client[_0xb19d('0x0')]('UpdateFaxMessage',{'body':_0x3920a8,'options':{'where':{'AttachmentId':_0x466f14}},'log':_0xb19d('0x1')});};
\ No newline at end of file
+var _0xe4ca=['../client','update','UpdateFaxMessage'];(function(_0x3d38d1,_0x2ef647){var _0x51cb32=function(_0x5e8866){while(--_0x5e8866){_0x3d38d1['push'](_0x3d38d1['shift']());}};_0x51cb32(++_0x2ef647);}(_0xe4ca,0x171));var _0xae4c=function(_0x22185a,_0x2c9c0f){_0x22185a=_0x22185a-0x0;var _0x27e1f1=_0xe4ca[_0x22185a];return _0x27e1f1;};'use strict';var client=require(_0xae4c('0x0'));exports[_0xae4c('0x1')]=function(_0x149e7b,_0x333795){return client['Request']('UpdateFaxMessage',{'body':_0x333795,'options':{'where':{'AttachmentId':_0x149e7b}},'log':_0xae4c('0x2')});};
\ No newline at end of file
index e755381..fd945f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f7b=['getDeskAccounts','Request','description','username','password','remoteUri','serverUrl','Configurations','name','DeskField','Subjects','type','content','variableName','Variable','keyType','keyContent','Fields','idField','nameField','Tag','GetDeskAccount'];(function(_0x406d63,_0x26daf8){var _0x45e42e=function(_0x159ea4){while(--_0x159ea4){_0x406d63['push'](_0x406d63['shift']());}};_0x45e42e(++_0x26daf8);}(_0x7f7b,0xb0));var _0xb7f7=function(_0xab4c07,_0x1fc52c){_0xab4c07=_0xab4c07-0x0;var _0x5cfcb7=_0x7f7b[_0xab4c07];return _0x5cfcb7;};'use strict';var client=require('../../client');exports[_0xb7f7('0x0')]=function(){return function(_0x490764){return client[_0xb7f7('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id','name',_0xb7f7('0x2'),_0xb7f7('0x3'),_0xb7f7('0x4'),_0xb7f7('0x5'),'authType','type',_0xb7f7('0x6')],'include':[{'model':'DeskConfiguration','as':_0xb7f7('0x7'),'attributes':['id',_0xb7f7('0x8')],'include':[{'model':_0xb7f7('0x9'),'as':_0xb7f7('0xa'),'attributes':['id',_0xb7f7('0xb'),_0xb7f7('0xc'),_0xb7f7('0xd')],'include':[{'model':_0xb7f7('0xe'),'as':_0xb7f7('0xe'),'attributes':['id',_0xb7f7('0x8')]}]},{'model':_0xb7f7('0x9'),'as':'Descriptions','attributes':['id','type',_0xb7f7('0xc'),'key',_0xb7f7('0xf'),_0xb7f7('0x10'),'variableName'],'include':[{'model':_0xb7f7('0xe'),'as':_0xb7f7('0xe'),'attributes':['id',_0xb7f7('0x8')]}]},{'model':'DeskField','as':_0xb7f7('0x11'),'attributes':['id','type',_0xb7f7('0xc'),_0xb7f7('0x12'),_0xb7f7('0x13'),'customField',_0xb7f7('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb7f7('0x8')]}]},{'model':_0xb7f7('0x14'),'as':'Tags','attributes':['id',_0xb7f7('0x8')]}]}]},'log':_0xb7f7('0x15')});};};
\ No newline at end of file
+var _0xd17f=['keyContent','Fields','idField','nameField','customField','Tag','Tags','../../client','Request','GetDeskAccount','name','description','username','password','type','serverUrl','Configurations','Subjects','content','variableName','Variable','DeskField','Descriptions','key'];(function(_0x1f08e7,_0x41d1){var _0x16d33a=function(_0x5526c9){while(--_0x5526c9){_0x1f08e7['push'](_0x1f08e7['shift']());}};_0x16d33a(++_0x41d1);}(_0xd17f,0x1e7));var _0xfd17=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xd17f[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0xfd17('0x0'));exports['getDeskAccounts']=function(){return function(_0x25a1cd){return client[_0xfd17('0x1')](_0xfd17('0x2'),{'options':{'raw':![],'attributes':['id',_0xfd17('0x3'),_0xfd17('0x4'),_0xfd17('0x5'),_0xfd17('0x6'),'remoteUri','authType',_0xfd17('0x7'),_0xfd17('0x8')],'include':[{'model':'DeskConfiguration','as':_0xfd17('0x9'),'attributes':['id',_0xfd17('0x3')],'include':[{'model':'DeskField','as':_0xfd17('0xa'),'attributes':['id','type',_0xfd17('0xb'),_0xfd17('0xc')],'include':[{'model':_0xfd17('0xd'),'as':_0xfd17('0xd'),'attributes':['id',_0xfd17('0x3')]}]},{'model':_0xfd17('0xe'),'as':_0xfd17('0xf'),'attributes':['id',_0xfd17('0x7'),_0xfd17('0xb'),_0xfd17('0x10'),'keyType',_0xfd17('0x11'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xfd17('0x3')]}]},{'model':_0xfd17('0xe'),'as':_0xfd17('0x12'),'attributes':['id',_0xfd17('0x7'),_0xfd17('0xb'),_0xfd17('0x13'),_0xfd17('0x14'),_0xfd17('0x15'),_0xfd17('0xc')],'include':[{'model':'Variable','as':_0xfd17('0xd'),'attributes':['id',_0xfd17('0x3')]}]},{'model':_0xfd17('0x16'),'as':_0xfd17('0x17'),'attributes':['id',_0xfd17('0x3')]}]}]},'log':_0xfd17('0x2')});};};
\ No newline at end of file
index dd57c6a..838455e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x048b=['key','keyContent','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId','clientSecret','description','Dynamics365Configuration','Configurations','Dynamics365Field','Subjects','content','variableName','Variable','Descriptions','type'];(function(_0x55aa22,_0x375514){var _0x3124df=function(_0x2e691c){while(--_0x2e691c){_0x55aa22['push'](_0x55aa22['shift']());}};_0x3124df(++_0x375514);}(_0x048b,0x171));var _0xb048=function(_0x2ab6d9,_0x2139e8){_0x2ab6d9=_0x2ab6d9-0x0;var _0x1a7a04=_0x048b[_0x2ab6d9];return _0x1a7a04;};'use strict';var client=require(_0xb048('0x0'));exports[_0xb048('0x1')]=function(){return function(_0x7f9b7d){return client[_0xb048('0x2')](_0xb048('0x3'),{'options':{'raw':![],'attributes':['id',_0xb048('0x4'),_0xb048('0x5'),_0xb048('0x6'),_0xb048('0x7'),_0xb048('0x8'),_0xb048('0x9'),_0xb048('0xa'),'serverUrl',_0xb048('0xb')],'include':[{'model':_0xb048('0xc'),'as':_0xb048('0xd'),'attributes':['id',_0xb048('0x4'),'ticketType'],'include':[{'model':_0xb048('0xe'),'as':_0xb048('0xf'),'attributes':['id','type',_0xb048('0x10'),_0xb048('0x11')],'include':[{'model':'Variable','as':_0xb048('0x12'),'attributes':['id',_0xb048('0x4')]}]},{'model':_0xb048('0xe'),'as':_0xb048('0x13'),'attributes':['id',_0xb048('0x14'),_0xb048('0x10'),_0xb048('0x15'),'keyType',_0xb048('0x16'),'variableName'],'include':[{'model':_0xb048('0x12'),'as':_0xb048('0x12'),'attributes':['id',_0xb048('0x4')]}]},{'model':_0xb048('0xe'),'as':'Fields','attributes':['id',_0xb048('0x14'),_0xb048('0x10'),_0xb048('0x17'),_0xb048('0x18'),_0xb048('0x19'),_0xb048('0x11')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb048('0x4')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0x49f1=['Variable','Descriptions','type','keyContent','variableName','Fields','idField','nameField','getDynamics365Accounts','GetDynamics365Account','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','name','Dynamics365Field','Subjects','content'];(function(_0x175209,_0x538c77){var _0x487d3d=function(_0x21b66b){while(--_0x21b66b){_0x175209['push'](_0x175209['shift']());}};_0x487d3d(++_0x538c77);}(_0x49f1,0xd7));var _0x149f=function(_0x2e8775,_0x310049){_0x2e8775=_0x2e8775-0x0;var _0x4cbf35=_0x49f1[_0x2e8775];return _0x4cbf35;};'use strict';var client=require('../../client');exports[_0x149f('0x0')]=function(){return function(_0x2bbab0){return client['Request'](_0x149f('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x149f('0x2'),_0x149f('0x3'),_0x149f('0x4'),_0x149f('0x5'),_0x149f('0x6'),_0x149f('0x7'),_0x149f('0x8'),_0x149f('0x9')],'include':[{'model':_0x149f('0xa'),'as':'Configurations','attributes':['id',_0x149f('0xb'),'ticketType'],'include':[{'model':_0x149f('0xc'),'as':_0x149f('0xd'),'attributes':['id','type',_0x149f('0xe'),'variableName'],'include':[{'model':_0x149f('0xf'),'as':_0x149f('0xf'),'attributes':['id',_0x149f('0xb')]}]},{'model':_0x149f('0xc'),'as':_0x149f('0x10'),'attributes':['id',_0x149f('0x11'),_0x149f('0xe'),'key','keyType',_0x149f('0x12'),_0x149f('0x13')],'include':[{'model':_0x149f('0xf'),'as':_0x149f('0xf'),'attributes':['id',_0x149f('0xb')]}]},{'model':_0x149f('0xc'),'as':_0x149f('0x14'),'attributes':['id','type',_0x149f('0xe'),_0x149f('0x15'),_0x149f('0x16'),'customField','variableName'],'include':[{'model':_0x149f('0xf'),'as':_0x149f('0xf'),'attributes':['id',_0x149f('0xb')]}]}]}]},'log':_0x149f('0x1')});};};
\ No newline at end of file
index ca8f66e..9a4b8bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff2=['GetFreshdeskAccount','name','username','apiKey','remoteUri','FreshdeskConfiguration','Configurations','FreshdeskField','Subjects','content','Variable','type','key','keyType','variableName','Fields','idField','customField','../../client','getFreshdeskAccounts','Request'];(function(_0x2d174f,_0x32735f){var _0x5ae59=function(_0x2318ab){while(--_0x2318ab){_0x2d174f['push'](_0x2d174f['shift']());}};_0x5ae59(++_0x32735f);}(_0xbff2,0x10e));var _0x2bff=function(_0x1bd869,_0x375ea2){_0x1bd869=_0x1bd869-0x0;var _0x43153a=_0xbff2[_0x1bd869];return _0x43153a;};'use strict';var client=require(_0x2bff('0x0'));exports[_0x2bff('0x1')]=function(){return function(_0x352980){return client[_0x2bff('0x2')](_0x2bff('0x3'),{'options':{'raw':![],'attributes':['id',_0x2bff('0x4'),_0x2bff('0x5'),_0x2bff('0x6'),_0x2bff('0x7'),'serverUrl'],'include':[{'model':_0x2bff('0x8'),'as':_0x2bff('0x9'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x2bff('0xa'),'as':_0x2bff('0xb'),'attributes':['id','type',_0x2bff('0xc'),'variableName'],'include':[{'model':'Variable','as':_0x2bff('0xd'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x2bff('0xe'),'content',_0x2bff('0xf'),_0x2bff('0x10'),'keyContent',_0x2bff('0x11')],'include':[{'model':_0x2bff('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x2bff('0xa'),'as':_0x2bff('0x12'),'attributes':['id','type',_0x2bff('0xc'),_0x2bff('0x13'),'nameField',_0x2bff('0x14'),_0x2bff('0x11')],'include':[{'model':_0x2bff('0xd'),'as':_0x2bff('0xd'),'attributes':['id','name']}]}]}]},'log':_0x2bff('0x3')});};};
\ No newline at end of file
+var _0x0c1a=['serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','content','variableName','Variable','type','key','Fields','idField','nameField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','apiKey','remoteUri'];(function(_0x2b757b,_0x3537fd){var _0x4974ee=function(_0x3db32b){while(--_0x3db32b){_0x2b757b['push'](_0x2b757b['shift']());}};_0x4974ee(++_0x3537fd);}(_0x0c1a,0x127));var _0xa0c1=function(_0x4edc5c,_0x4c63d9){_0x4edc5c=_0x4edc5c-0x0;var _0x21fb7a=_0x0c1a[_0x4edc5c];return _0x21fb7a;};'use strict';var client=require(_0xa0c1('0x0'));exports[_0xa0c1('0x1')]=function(){return function(_0x403058){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0xa0c1('0x2'),'username',_0xa0c1('0x3'),_0xa0c1('0x4'),_0xa0c1('0x5')],'include':[{'model':_0xa0c1('0x6'),'as':_0xa0c1('0x7'),'attributes':['id',_0xa0c1('0x2')],'include':[{'model':_0xa0c1('0x8'),'attributes':['id',_0xa0c1('0x2')]},{'model':_0xa0c1('0x9'),'as':_0xa0c1('0xa'),'attributes':['id','type',_0xa0c1('0xb'),_0xa0c1('0xc')],'include':[{'model':_0xa0c1('0xd'),'as':_0xa0c1('0xd'),'attributes':['id',_0xa0c1('0x2')]}]},{'model':_0xa0c1('0x9'),'as':'Descriptions','attributes':['id',_0xa0c1('0xe'),'content',_0xa0c1('0xf'),'keyType','keyContent',_0xa0c1('0xc')],'include':[{'model':_0xa0c1('0xd'),'as':_0xa0c1('0xd'),'attributes':['id','name']}]},{'model':_0xa0c1('0x9'),'as':_0xa0c1('0x10'),'attributes':['id',_0xa0c1('0xe'),_0xa0c1('0xb'),_0xa0c1('0x11'),_0xa0c1('0x12'),'customField','variableName'],'include':[{'model':_0xa0c1('0xd'),'as':_0xa0c1('0xd'),'attributes':['id',_0xa0c1('0x2')]}]}]}]},'log':_0xa0c1('0x13')});};};
\ No newline at end of file
index 3fd3564..d847017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['Configurations','name','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','remoteUri','serverUrl','FreshsalesConfiguration'];(function(_0x463697,_0xccfdc4){var _0x33cfe1=function(_0x5c74ec){while(--_0x5c74ec){_0x463697['push'](_0x463697['shift']());}};_0x33cfe1(++_0xccfdc4);}(_0xba34,0x119));var _0x4ba3=function(_0x2161c8,_0x4615ba){_0x2161c8=_0x2161c8-0x0;var _0x1c38ae=_0xba34[_0x2161c8];return _0x1c38ae;};'use strict';var client=require(_0x4ba3('0x0'));exports[_0x4ba3('0x1')]=function(){return function(_0xb04f7b){return client[_0x4ba3('0x2')](_0x4ba3('0x3'),{'options':{'raw':![],'attributes':['id','name','username','apiKey',_0x4ba3('0x4'),_0x4ba3('0x5')],'include':[{'model':_0x4ba3('0x6'),'as':_0x4ba3('0x7'),'attributes':['id',_0x4ba3('0x8')],'include':[{'model':_0x4ba3('0x9'),'as':_0x4ba3('0xa'),'attributes':['id','type',_0x4ba3('0xb'),_0x4ba3('0xc')],'include':[{'model':_0x4ba3('0xd'),'as':_0x4ba3('0xd'),'attributes':['id',_0x4ba3('0x8')]}]},{'model':_0x4ba3('0x9'),'as':_0x4ba3('0xe'),'attributes':['id',_0x4ba3('0xf'),_0x4ba3('0xb'),_0x4ba3('0x10'),_0x4ba3('0x11'),'keyContent',_0x4ba3('0xc')],'include':[{'model':_0x4ba3('0xd'),'as':'Variable','attributes':['id',_0x4ba3('0x8')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x02a7=['apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','GetFreshsalesAccount','name','username'];(function(_0x588cbd,_0x43b872){var _0x571e75=function(_0x12de7b){while(--_0x12de7b){_0x588cbd['push'](_0x588cbd['shift']());}};_0x571e75(++_0x43b872);}(_0x02a7,0x7a));var _0x702a=function(_0x97bd2b,_0x5cea1c){_0x97bd2b=_0x97bd2b-0x0;var _0x25d540=_0x02a7[_0x97bd2b];return _0x25d540;};'use strict';var client=require('../../client');exports[_0x702a('0x0')]=function(){return function(_0x51c09f){return client['Request'](_0x702a('0x1'),{'options':{'raw':![],'attributes':['id',_0x702a('0x2'),_0x702a('0x3'),_0x702a('0x4'),_0x702a('0x5'),_0x702a('0x6')],'include':[{'model':_0x702a('0x7'),'as':'Configurations','attributes':['id',_0x702a('0x2')],'include':[{'model':'FreshsalesField','as':_0x702a('0x8'),'attributes':['id',_0x702a('0x9'),_0x702a('0xa'),_0x702a('0xb')],'include':[{'model':_0x702a('0xc'),'as':_0x702a('0xc'),'attributes':['id',_0x702a('0x2')]}]},{'model':'FreshsalesField','as':_0x702a('0xd'),'attributes':['id','type','content',_0x702a('0xe'),_0x702a('0xf'),_0x702a('0x10'),_0x702a('0xb')],'include':[{'model':'Variable','as':_0x702a('0xc'),'attributes':['id',_0x702a('0x2')]}]}]}]},'log':_0x702a('0x11')});};};
\ No newline at end of file
index 6ca69cd..b43e469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['SalesforceField','Variable','Fields','GetSalesforceAccount','../../client','Request','name','username','password','remoteUri','clientSecret','securityToken','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead'];(function(_0x27e1bc,_0x29630d){var _0x8967f7=function(_0x3d43c7){while(--_0x3d43c7){_0x27e1bc['push'](_0x27e1bc['shift']());}};_0x8967f7(++_0x29630d);}(_0x6b19,0xf4));var _0x96b1=function(_0x3bdd7f,_0x20a918){_0x3bdd7f=_0x3bdd7f-0x0;var _0x463261=_0x6b19[_0x3bdd7f];return _0x463261;};'use strict';var client=require(_0x96b1('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x3dc1ab){return client[_0x96b1('0x1')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x96b1('0x2'),_0x96b1('0x3'),_0x96b1('0x4'),_0x96b1('0x5'),'clientId',_0x96b1('0x6'),_0x96b1('0x7'),'serverUrl','type'],'include':[{'model':_0x96b1('0x8'),'as':_0x96b1('0x9'),'attributes':['id','name',_0x96b1('0xa'),_0x96b1('0xb'),'ticketType',_0x96b1('0xc'),_0x96b1('0xd'),_0x96b1('0xe'),_0x96b1('0xf')],'include':[{'model':_0x96b1('0x10'),'as':'Subjects','include':[{'model':_0x96b1('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0x96b1('0x11'),'as':_0x96b1('0x11'),'attributes':['id',_0x96b1('0x2')]}]},{'model':_0x96b1('0x10'),'as':_0x96b1('0x12'),'include':[{'model':'Variable','as':_0x96b1('0x11'),'attributes':['id',_0x96b1('0x2')]}]}]}]},'log':_0x96b1('0x13')});};};
\ No newline at end of file
+var _0x4959=['Fields','Request','GetSalesforceAccount','username','password','remoteUri','clientId','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','name','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','SalesforceField','Descriptions','Variable'];(function(_0x2cc842,_0xd6800d){var _0x24adab=function(_0x41ab67){while(--_0x41ab67){_0x2cc842['push'](_0x2cc842['shift']());}};_0x24adab(++_0xd6800d);}(_0x4959,0x9b));var _0x9495=function(_0x339f6b,_0x36c35b){_0x339f6b=_0x339f6b-0x0;var _0x5ae54a=_0x4959[_0x339f6b];return _0x5ae54a;};'use strict';var client=require('../../client');exports['getSalesforceAccounts']=function(){return function(_0x3e0066){return client[_0x9495('0x0')](_0x9495('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x9495('0x2'),_0x9495('0x3'),_0x9495('0x4'),_0x9495('0x5'),'clientSecret',_0x9495('0x6'),_0x9495('0x7'),_0x9495('0x8')],'include':[{'model':_0x9495('0x9'),'as':_0x9495('0xa'),'attributes':['id',_0x9495('0xb'),_0x9495('0xc'),_0x9495('0xd'),_0x9495('0xe'),_0x9495('0xf'),_0x9495('0x10'),'additionalSearchContact',_0x9495('0x11')],'include':[{'model':'SalesforceField','as':'Subjects','include':[{'model':'Variable','as':'Variable','attributes':['id',_0x9495('0xb')]}]},{'model':_0x9495('0x12'),'as':_0x9495('0x13'),'include':[{'model':_0x9495('0x14'),'as':_0x9495('0x14'),'attributes':['id',_0x9495('0xb')]}]},{'model':_0x9495('0x12'),'as':_0x9495('0x15'),'include':[{'model':_0x9495('0x14'),'as':_0x9495('0x14'),'attributes':['id',_0x9495('0xb')]}]}]}]},'log':_0x9495('0x1')});};};
\ No newline at end of file
index b8b479e..72cbce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','type','content'];(function(_0x38e04b,_0x38f1eb){var _0x181bd5=function(_0x5a57f0){while(--_0x5a57f0){_0x38e04b['push'](_0x38e04b['shift']());}};_0x181bd5(++_0x38f1eb);}(_0x814b,0x1a2));var _0xb814=function(_0x2302a1,_0x4bc33d){_0x2302a1=_0x2302a1-0x0;var _0x413cae=_0x814b[_0x2302a1];return _0x413cae;};'use strict';var client=require(_0xb814('0x0'));exports[_0xb814('0x1')]=function(){return function(_0x434f30){return client[_0xb814('0x2')](_0xb814('0x3'),{'options':{'raw':![],'attributes':['id',_0xb814('0x4'),'description',_0xb814('0x5'),_0xb814('0x6'),_0xb814('0x7'),_0xb814('0x8'),_0xb814('0x9')],'include':[{'model':_0xb814('0xa'),'as':'Configurations','attributes':['id',_0xb814('0x4')],'include':[{'model':_0xb814('0xb'),'as':'Subjects','attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0xe')],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]},{'model':_0xb814('0xb'),'as':_0xb814('0x10'),'attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0x11'),'keyType',_0xb814('0x12'),'variableName'],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]},{'model':_0xb814('0xb'),'as':_0xb814('0x13'),'attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0x14'),_0xb814('0x15'),_0xb814('0x16'),_0xb814('0xe')],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]}]}]},'log':_0xb814('0x17')});};};
\ No newline at end of file
+var _0xabce=['password','email','ServicenowConfiguration','name','Subjects','type','content','Variable','ServicenowField','Descriptions','key','keyType','keyContent','variableName','Fields','idField','nameField','../../client','getServicenowAccounts','Request','GetServicenowAccount','username'];(function(_0x363a38,_0x5b9088){var _0x2c6a0c=function(_0x422eff){while(--_0x422eff){_0x363a38['push'](_0x363a38['shift']());}};_0x2c6a0c(++_0x5b9088);}(_0xabce,0x103));var _0xeabc=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xabce[_0x397e5f];return _0x5302b8;};'use strict';var client=require(_0xeabc('0x0'));exports[_0xeabc('0x1')]=function(){return function(_0x357cda){return client[_0xeabc('0x2')](_0xeabc('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0xeabc('0x4'),_0xeabc('0x5'),_0xeabc('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0xeabc('0x7'),'as':'Configurations','attributes':['id',_0xeabc('0x8')],'include':[{'model':'ServicenowField','as':_0xeabc('0x9'),'attributes':['id',_0xeabc('0xa'),_0xeabc('0xb'),'variableName'],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]},{'model':_0xeabc('0xd'),'as':_0xeabc('0xe'),'attributes':['id',_0xeabc('0xa'),_0xeabc('0xb'),_0xeabc('0xf'),_0xeabc('0x10'),_0xeabc('0x11'),_0xeabc('0x12')],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]},{'model':_0xeabc('0xd'),'as':_0xeabc('0x13'),'attributes':['id','type',_0xeabc('0xb'),_0xeabc('0x14'),_0xeabc('0x15'),'customField','variableName'],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 1abff5b..324fc17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x56ea6f,_0x15535a){var _0x43ac31=function(_0x1b6d99){while(--_0x1b6d99){_0x56ea6f['push'](_0x56ea6f['shift']());}};_0x43ac31(++_0x15535a);}(_0x14a0,0x8e));var _0x014a=function(_0x406720,_0x4502fc){_0x406720=_0x406720-0x0;var _0x3c0262=_0x14a0[_0x406720];return _0x3c0262;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
+var _0x5f2f=['username','password','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','variableName','Variable','Descriptions','key','Fields','content','idField','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5f2f,0x73));var _0xf5f2=function(_0x12072f,_0x234194){_0x12072f=_0x12072f-0x0;var _0x2cb246=_0x5f2f[_0x12072f];return _0x2cb246;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(_0x2dcf60){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0xf5f2('0x7'),'as':_0xf5f2('0x8'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x9'),'as':_0xf5f2('0xa'),'attributes':['id',_0xf5f2('0xb'),'content',_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':_0xf5f2('0xd'),'attributes':['id','name']}]},{'model':_0xf5f2('0x9'),'as':_0xf5f2('0xe'),'attributes':['id',_0xf5f2('0xb'),'content',_0xf5f2('0xf'),'keyType','keyContent',_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':'Variable','attributes':['id',_0xf5f2('0x4')]}]},{'model':_0xf5f2('0x9'),'as':_0xf5f2('0x10'),'attributes':['id',_0xf5f2('0xb'),_0xf5f2('0x11'),_0xf5f2('0x12'),'nameField',_0xf5f2('0x13'),_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':_0xf5f2('0xd'),'attributes':['id',_0xf5f2('0x4')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
index b985127..db7ac85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10a0=['Configurations','VtigerField','type','content','variableName','Variable','Descriptions','key','Fields','idField','nameField','GetVtigerAccount','../../client','getVtigerAccounts','Request','name','description','accessKey','remoteUri','VtigerConfiguration'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x10a0,0x124));var _0x010a=function(_0xd6bcdb,_0x44853c){_0xd6bcdb=_0xd6bcdb-0x0;var _0x199a86=_0x10a0[_0xd6bcdb];return _0x199a86;};'use strict';var client=require(_0x010a('0x0'));exports[_0x010a('0x1')]=function(){return function(_0x30f561){return client[_0x010a('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x010a('0x3'),_0x010a('0x4'),'username',_0x010a('0x5'),_0x010a('0x6'),'serverUrl'],'include':[{'model':_0x010a('0x7'),'as':_0x010a('0x8'),'attributes':['id','name'],'include':[{'model':_0x010a('0x9'),'as':'Subjects','attributes':['id',_0x010a('0xa'),_0x010a('0xb'),_0x010a('0xc')],'include':[{'model':'Variable','as':_0x010a('0xd'),'attributes':['id',_0x010a('0x3')]}]},{'model':_0x010a('0x9'),'as':_0x010a('0xe'),'attributes':['id','type',_0x010a('0xb'),_0x010a('0xf'),'keyType','keyContent',_0x010a('0xc')],'include':[{'model':_0x010a('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x010a('0x9'),'as':_0x010a('0x10'),'attributes':['id',_0x010a('0xa'),_0x010a('0xb'),_0x010a('0x11'),_0x010a('0x12'),'customField',_0x010a('0xc')],'include':[{'model':_0x010a('0xd'),'as':_0x010a('0xd'),'attributes':['id',_0x010a('0x3')]}]}]}]},'log':_0x010a('0x13')});};};
\ No newline at end of file
+var _0x264b=['Fields','idField','nameField','customField','../../client','getVtigerAccounts','GetVtigerAccount','name','description','username','accessKey','remoteUri','serverUrl','Configurations','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent'];(function(_0x27d9c2,_0x4713b1){var _0x2fcf3c=function(_0xacaddf){while(--_0xacaddf){_0x27d9c2['push'](_0x27d9c2['shift']());}};_0x2fcf3c(++_0x4713b1);}(_0x264b,0x13c));var _0xb264=function(_0x5365b1,_0x2c7140){_0x5365b1=_0x5365b1-0x0;var _0x7d4af2=_0x264b[_0x5365b1];return _0x7d4af2;};'use strict';var client=require(_0xb264('0x0'));exports[_0xb264('0x1')]=function(){return function(_0x1862f4){return client['Request'](_0xb264('0x2'),{'options':{'raw':![],'attributes':['id',_0xb264('0x3'),_0xb264('0x4'),_0xb264('0x5'),_0xb264('0x6'),_0xb264('0x7'),_0xb264('0x8')],'include':[{'model':'VtigerConfiguration','as':_0xb264('0x9'),'attributes':['id',_0xb264('0x3')],'include':[{'model':_0xb264('0xa'),'as':_0xb264('0xb'),'attributes':['id',_0xb264('0xc'),_0xb264('0xd'),_0xb264('0xe')],'include':[{'model':'Variable','as':_0xb264('0xf'),'attributes':['id',_0xb264('0x3')]}]},{'model':_0xb264('0xa'),'as':_0xb264('0x10'),'attributes':['id','type',_0xb264('0xd'),_0xb264('0x11'),_0xb264('0x12'),_0xb264('0x13'),_0xb264('0xe')],'include':[{'model':'Variable','as':_0xb264('0xf'),'attributes':['id',_0xb264('0x3')]}]},{'model':_0xb264('0xa'),'as':_0xb264('0x14'),'attributes':['id',_0xb264('0xc'),_0xb264('0xd'),_0xb264('0x15'),_0xb264('0x16'),_0xb264('0x17'),_0xb264('0xe')],'include':[{'model':_0xb264('0xf'),'as':_0xb264('0xf'),'attributes':['id',_0xb264('0x3')]}]}]}]},'log':_0xb264('0x2')});};};
\ No newline at end of file
index 728c570..747b903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77fc=['nameField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','Variable','Descriptions','content','key','variableName','Fields','idField'];(function(_0x7f92f3,_0x233917){var _0xe35281=function(_0x1c1052){while(--_0x1c1052){_0x7f92f3['push'](_0x7f92f3['shift']());}};_0xe35281(++_0x233917);}(_0x77fc,0x9b));var _0xc77f=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x77fc[_0x45d55e];return _0x29812a;};'use strict';var client=require(_0xc77f('0x0'));exports[_0xc77f('0x1')]=function(){return function(_0x318216){return client[_0xc77f('0x2')](_0xc77f('0x3'),{'options':{'raw':![],'attributes':['id',_0xc77f('0x4'),_0xc77f('0x5'),_0xc77f('0x6'),'token',_0xc77f('0x7'),_0xc77f('0x8'),_0xc77f('0x9'),_0xc77f('0xa')],'include':[{'model':_0xc77f('0xb'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xc77f('0xc'),'attributes':['id',_0xc77f('0x4')]},{'model':_0xc77f('0xd'),'as':'Subjects','attributes':['id',_0xc77f('0xa'),'content','variableName'],'include':[{'model':'Variable','as':_0xc77f('0xe'),'attributes':['id','name']}]},{'model':_0xc77f('0xd'),'as':_0xc77f('0xf'),'attributes':['id',_0xc77f('0xa'),_0xc77f('0x10'),_0xc77f('0x11'),'keyType','keyContent',_0xc77f('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0xc77f('0xd'),'as':_0xc77f('0x13'),'attributes':['id',_0xc77f('0xa'),'content',_0xc77f('0x14'),_0xc77f('0x15'),'customField',_0xc77f('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]}]}]},'log':_0xc77f('0x3')});};};
\ No newline at end of file
+var _0x571e=['authType','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','getZendeskAccounts','Request','name','username','password','remoteUri'];(function(_0x14fbed,_0x454d2d){var _0x227b7f=function(_0x420de2){while(--_0x420de2){_0x14fbed['push'](_0x14fbed['shift']());}};_0x227b7f(++_0x454d2d);}(_0x571e,0x13a));var _0xe571=function(_0x13c0b8,_0x2ab519){_0x13c0b8=_0x13c0b8-0x0;var _0x150771=_0x571e[_0x13c0b8];return _0x150771;};'use strict';var client=require('../../client');exports[_0xe571('0x0')]=function(){return function(_0x2db17d){return client[_0xe571('0x1')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0xe571('0x2'),_0xe571('0x3'),_0xe571('0x4'),'token',_0xe571('0x5'),_0xe571('0x6'),'serverUrl',_0xe571('0x7')],'include':[{'model':_0xe571('0x8'),'as':_0xe571('0x9'),'attributes':['id',_0xe571('0x2')],'include':[{'model':_0xe571('0xa'),'attributes':['id',_0xe571('0x2')]},{'model':_0xe571('0xb'),'as':'Subjects','attributes':['id','type',_0xe571('0xc'),_0xe571('0xd')],'include':[{'model':_0xe571('0xe'),'as':_0xe571('0xe'),'attributes':['id',_0xe571('0x2')]}]},{'model':'ZendeskField','as':_0xe571('0xf'),'attributes':['id',_0xe571('0x7'),_0xe571('0xc'),_0xe571('0x10'),_0xe571('0x11'),_0xe571('0x12'),_0xe571('0xd')],'include':[{'model':_0xe571('0xe'),'as':'Variable','attributes':['id',_0xe571('0x2')]}]},{'model':'ZendeskField','as':_0xe571('0x13'),'attributes':['id','type',_0xe571('0xc'),'idField','nameField','customField',_0xe571('0xd')],'include':[{'model':_0xe571('0xe'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 06eaa66..59e9c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a60=['content','variableName','Variable','ZohoField','Descriptions','key','keyType','keyContent','idField','customField','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleSearch','Subjects','type'];(function(_0x4729d5,_0x4c585b){var _0x380482=function(_0x1bf23e){while(--_0x1bf23e){_0x4729d5['push'](_0x4729d5['shift']());}};_0x380482(++_0x4c585b);}(_0x7a60,0xfd));var _0x07a6=function(_0x44ebe1,_0x44650a){_0x44ebe1=_0x44ebe1-0x0;var _0x20eedc=_0x7a60[_0x44ebe1];return _0x20eedc;};'use strict';var client=require('../../client');exports[_0x07a6('0x0')]=function(){return function(_0x2da5c6){return client[_0x07a6('0x1')](_0x07a6('0x2'),{'options':{'raw':![],'attributes':['id',_0x07a6('0x3'),_0x07a6('0x4'),_0x07a6('0x5'),_0x07a6('0x6'),_0x07a6('0x7'),_0x07a6('0x8'),_0x07a6('0x9'),_0x07a6('0xa'),_0x07a6('0xb')],'include':[{'model':_0x07a6('0xc'),'as':_0x07a6('0xd'),'attributes':['id',_0x07a6('0x3'),'moduleCreate',_0x07a6('0xe'),_0x07a6('0x4')],'include':[{'model':'ZohoField','as':_0x07a6('0xf'),'attributes':['id',_0x07a6('0x10'),_0x07a6('0x11'),_0x07a6('0x12')],'include':[{'model':'Variable','as':_0x07a6('0x13'),'attributes':['id',_0x07a6('0x3')]}]},{'model':_0x07a6('0x14'),'as':_0x07a6('0x15'),'attributes':['id','type',_0x07a6('0x11'),_0x07a6('0x16'),_0x07a6('0x17'),_0x07a6('0x18'),_0x07a6('0x12')],'include':[{'model':_0x07a6('0x13'),'as':'Variable','attributes':['id','name']}]},{'model':_0x07a6('0x14'),'as':'Fields','attributes':['id',_0x07a6('0x10'),_0x07a6('0x11'),_0x07a6('0x19'),'nameField',_0x07a6('0x1a'),'variableName'],'include':[{'model':_0x07a6('0x13'),'as':'Variable','attributes':['id',_0x07a6('0x3')]}]}]}]},'log':_0x07a6('0x2')});};};
\ No newline at end of file
+var _0x31b3=['description','zone','clientId','serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','keyContent','Fields','customField','../../client','getZohoAccounts','GetZohoAccount','name'];(function(_0x17cca1,_0x4cd1f6){var _0x2a1d4a=function(_0x33c8a1){while(--_0x33c8a1){_0x17cca1['push'](_0x17cca1['shift']());}};_0x2a1d4a(++_0x4cd1f6);}(_0x31b3,0x146));var _0x331b=function(_0x51ce14,_0x5cd58b){_0x51ce14=_0x51ce14-0x0;var _0x301a2d=_0x31b3[_0x51ce14];return _0x301a2d;};'use strict';var client=require(_0x331b('0x0'));exports[_0x331b('0x1')]=function(){return function(_0x28de31){return client['Request'](_0x331b('0x2'),{'options':{'raw':![],'attributes':['id',_0x331b('0x3'),_0x331b('0x4'),'host',_0x331b('0x5'),_0x331b('0x6'),'clientSecret',_0x331b('0x7'),'code',_0x331b('0x8')],'include':[{'model':_0x331b('0x9'),'as':_0x331b('0xa'),'attributes':['id','name','moduleCreate',_0x331b('0xb'),_0x331b('0x4')],'include':[{'model':_0x331b('0xc'),'as':_0x331b('0xd'),'attributes':['id',_0x331b('0xe'),_0x331b('0xf'),_0x331b('0x10')],'include':[{'model':_0x331b('0x11'),'as':'Variable','attributes':['id',_0x331b('0x3')]}]},{'model':_0x331b('0xc'),'as':_0x331b('0x12'),'attributes':['id',_0x331b('0xe'),'content','key','keyType',_0x331b('0x13'),'variableName'],'include':[{'model':_0x331b('0x11'),'as':_0x331b('0x11'),'attributes':['id','name']}]},{'model':_0x331b('0xc'),'as':_0x331b('0x14'),'attributes':['id',_0x331b('0xe'),_0x331b('0xf'),'idField','nameField',_0x331b('0x15'),_0x331b('0x10')],'include':[{'model':_0x331b('0x11'),'as':_0x331b('0x11'),'attributes':['id','name']}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 205000e..a9f3de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc8=['queuecallerleaveAt','seconds','inbound','exten','queue','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','Request','membername','TALKING','endtime','diff','starttime','outbound','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallerexitAt','voice','lastAssignedTo','isNil','interface','format'];(function(_0x2fe50c,_0x2ec4f8){var _0x58224b=function(_0x2c26aa){while(--_0x2c26aa){_0x2fe50c['push'](_0x2fe50c['shift']());}};_0x58224b(++_0x2ec4f8);}(_0x1dc8,0xe5));var _0x81dc=function(_0x377a7d,_0x45aa46){_0x377a7d=_0x377a7d-0x0;var _0x3fd6a1=_0x1dc8[_0x377a7d];return _0x3fd6a1;};'use strict';var moment=require(_0x81dc('0x0'));var _=require(_0x81dc('0x1'));var util=require(_0x81dc('0x2'));var client=require(_0x81dc('0x3'));exports[_0x81dc('0x4')]=function(_0x5cf1c5){var _0x1daaf7=_0x5cf1c5['queuecallercompleteAt']||_0x5cf1c5[_0x81dc('0x5')];return client['Request']('CreateMemberReport',{'body':{'channel':_0x81dc('0x6'),'membername':_0x5cf1c5[_0x81dc('0x7')],'interface':_[_0x81dc('0x8')](_0x5cf1c5[_0x81dc('0x9')])?util[_0x81dc('0xa')]('SIP/%s',_0x5cf1c5[_0x81dc('0x7')]):_0x5cf1c5[_0x81dc('0x9')],'type':'TALKING','enterAt':_0x5cf1c5[_0x81dc('0xb')],'exitAt':_0x1daaf7,'duration':moment(_0x1daaf7)['diff'](_0x5cf1c5[_0x81dc('0xb')],_0x81dc('0xc')),'data1':_0x81dc('0xd'),'data2':_0x5cf1c5['calleridnum'],'data3':_0x5cf1c5[_0x81dc('0xe')],'data4':null,'data5':_0x5cf1c5[_0x81dc('0xf')],'role':_0x81dc('0x10'),'internal':_0x5cf1c5[_0x81dc('0x11')]?_[_0x81dc('0x12')](_0x5cf1c5[_0x81dc('0x11')]):undefined,'uniqueid':_0x5cf1c5[_0x81dc('0x13')]},'log':_0x81dc('0x14')});};exports[_0x81dc('0x15')]=function(_0x5e5264){return client[_0x81dc('0x16')](_0x81dc('0x14'),{'body':{'channel':_0x81dc('0x6'),'membername':_0x5e5264[_0x81dc('0x17')],'interface':_0x5e5264['interface'],'type':_0x81dc('0x18'),'enterAt':_0x5e5264['starttime'],'exitAt':_0x5e5264[_0x81dc('0x19')],'duration':moment(_0x5e5264[_0x81dc('0x19')])[_0x81dc('0x1a')](_0x5e5264[_0x81dc('0x1b')],'seconds')>=0x0?moment(_0x5e5264[_0x81dc('0x19')])['diff'](_0x5e5264[_0x81dc('0x1b')],_0x81dc('0xc')):null,'data1':_0x81dc('0x1c'),'data2':_0x5e5264[_0x81dc('0x11')],'data3':_0x5e5264[_0x81dc('0xe')],'data4':_0x5e5264[_0x81dc('0x1d')]||null,'role':_0x81dc('0x10'),'internal':_0x5e5264['accountcode']?_[_0x81dc('0x12')](_0x5e5264[_0x81dc('0x11')]):undefined,'uniqueid':_0x5e5264['uniqueid']},'log':_0x81dc('0x14')});};
\ No newline at end of file
+var _0x0755=['../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','inbound','calleridnum','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','membername','starttime','endtime','outbound','exten','dialstring','moment','util'];(function(_0x142fe9,_0xd62236){var _0x26f320=function(_0x2e8d58){while(--_0x2e8d58){_0x142fe9['push'](_0x142fe9['shift']());}};_0x26f320(++_0xd62236);}(_0x0755,0xee));var _0x5075=function(_0x23d823,_0x493473){_0x23d823=_0x23d823-0x0;var _0x3617d0=_0x0755[_0x23d823];return _0x3617d0;};'use strict';var moment=require(_0x5075('0x0'));var _=require('lodash');var util=require(_0x5075('0x1'));var client=require(_0x5075('0x2'));exports[_0x5075('0x3')]=function(_0x4665b8){var _0x164a13=_0x4665b8[_0x5075('0x4')]||_0x4665b8[_0x5075('0x5')];return client['Request']('CreateMemberReport',{'body':{'channel':_0x5075('0x6'),'membername':_0x4665b8[_0x5075('0x7')],'interface':_[_0x5075('0x8')](_0x4665b8[_0x5075('0x9')])?util[_0x5075('0xa')](_0x5075('0xb'),_0x4665b8['lastAssignedTo']):_0x4665b8['interface'],'type':_0x5075('0xc'),'enterAt':_0x4665b8[_0x5075('0xd')],'exitAt':_0x164a13,'duration':moment(_0x164a13)[_0x5075('0xe')](_0x4665b8[_0x5075('0xd')],_0x5075('0xf')),'data1':_0x5075('0x10'),'data2':_0x4665b8[_0x5075('0x11')],'data3':_0x4665b8['exten'],'data4':null,'data5':_0x4665b8['queue'],'role':_0x5075('0x12'),'internal':_0x4665b8[_0x5075('0x13')]?_[_0x5075('0x14')](_0x4665b8['accountcode']):undefined,'uniqueid':_0x4665b8[_0x5075('0x15')]},'log':_0x5075('0x16')});};exports[_0x5075('0x17')]=function(_0x4f61f9){return client['Request'](_0x5075('0x16'),{'body':{'channel':_0x5075('0x6'),'membername':_0x4f61f9[_0x5075('0x18')],'interface':_0x4f61f9[_0x5075('0x9')],'type':'TALKING','enterAt':_0x4f61f9[_0x5075('0x19')],'exitAt':_0x4f61f9['endtime'],'duration':moment(_0x4f61f9[_0x5075('0x1a')])[_0x5075('0xe')](_0x4f61f9['starttime'],_0x5075('0xf'))>=0x0?moment(_0x4f61f9[_0x5075('0x1a')])[_0x5075('0xe')](_0x4f61f9['starttime'],_0x5075('0xf')):null,'data1':_0x5075('0x1b'),'data2':_0x4f61f9[_0x5075('0x13')],'data3':_0x4f61f9[_0x5075('0x1c')],'data4':_0x4f61f9[_0x5075('0x1d')]||null,'role':_0x5075('0x12'),'internal':_0x4f61f9[_0x5075('0x13')]?_[_0x5075('0x14')](_0x4f61f9['accountcode']):undefined,'uniqueid':_0x4f61f9[_0x5075('0x15')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 3ccfef5..b17a902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be2=['Request','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x2706a5,_0x2208fc){var _0x34c552=function(_0x3b09ba){while(--_0x3b09ba){_0x2706a5['push'](_0x2706a5['shift']());}};_0x34c552(++_0x2208fc);}(_0x9be2,0x85));var _0x29be=function(_0x2ed7bd,_0x212461){_0x2ed7bd=_0x2ed7bd-0x0;var _0x352472=_0x9be2[_0x2ed7bd];return _0x352472;};'use strict';var client=require(_0x29be('0x0'));exports[_0x29be('0x1')]=function(){return client[_0x29be('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x29be('0x3')]},'log':_0x29be('0x4')});};
\ No newline at end of file
+var _0x0507=['../client','getSettings','Request','ShowSetting','GetSettings'];(function(_0x2a6f21,_0x7b9eab){var _0x1419f7=function(_0x13f966){while(--_0x13f966){_0x2a6f21['push'](_0x2a6f21['shift']());}};_0x1419f7(++_0x7b9eab);}(_0x0507,0x15e));var _0x7050=function(_0x5b7629,_0xb6a285){_0x5b7629=_0x5b7629-0x0;var _0x5c22e5=_0x0507[_0x5b7629];return _0x5c22e5;};'use strict';var client=require(_0x7050('0x0'));exports[_0x7050('0x1')]=function(){return client[_0x7050('0x2')](_0x7050('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x7050('0x4')});};
\ No newline at end of file
index f77808d..cd074d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf35d=['../client','Request','GetTemplate','html'];(function(_0x299718,_0x27afc8){var _0xc9c41f=function(_0x695f8e){while(--_0x695f8e){_0x299718['push'](_0x299718['shift']());}};_0xc9c41f(++_0x27afc8);}(_0xf35d,0x17c));var _0xdf35=function(_0x20294b,_0x409f4c){_0x20294b=_0x20294b-0x0;var _0x3c1c5d=_0xf35d[_0x20294b];return _0x3c1c5d;};'use strict';var client=require(_0xdf35('0x0'));exports['getTemplates']=function(_0xe0e7c9){return function(_0x5d041e){return client[_0xdf35('0x1')](_0xdf35('0x2'),{'options':{'raw':!![],'attributes':['id','name',_0xdf35('0x3')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x7455=['html','getTemplates','Request','GetTemplate','name'];(function(_0x389aac,_0xa31159){var _0x3f29f2=function(_0x4f8487){while(--_0x4f8487){_0x389aac['push'](_0x389aac['shift']());}};_0x3f29f2(++_0xa31159);}(_0x7455,0x17d));var _0x5745=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7455[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../client');exports[_0x5745('0x0')]=function(_0x27a100){return function(_0x52d9bb){return client[_0x5745('0x1')](_0x5745('0x2'),{'options':{'raw':!![],'attributes':['id',_0x5745('0x3'),_0x5745('0x4')]},'log':_0x5745('0x2')});};};
\ No newline at end of file
index 8e2e98c..5d5fc36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20dd=['Action','Actions','action','data1','data3','data4','data6','data7','../client','getTriggers','Request','GetTrigger','name','channel','status','Condition','operator','AnyConditions'];(function(_0x19cf72,_0x37be00){var _0x2e5b3b=function(_0x3024e8){while(--_0x3024e8){_0x19cf72['push'](_0x19cf72['shift']());}};_0x2e5b3b(++_0x37be00);}(_0x20dd,0xbc));var _0xd20d=function(_0x2ff0b8,_0x39d6ac){_0x2ff0b8=_0x2ff0b8-0x0;var _0x58dcbe=_0x20dd[_0x2ff0b8];return _0x58dcbe;};'use strict';var client=require(_0xd20d('0x0'));exports[_0xd20d('0x1')]=function(_0x31d7e6){return function(_0x3f6b44){return client[_0xd20d('0x2')](_0xd20d('0x3'),{'options':{'raw':![],'attributes':['id',_0xd20d('0x4'),_0xd20d('0x5'),_0xd20d('0x6')],'include':[{'model':_0xd20d('0x7'),'as':'AllConditions','attributes':['id','field',_0xd20d('0x8'),'value']},{'model':_0xd20d('0x7'),'as':_0xd20d('0x9'),'attributes':['id','field',_0xd20d('0x8'),'value']},{'model':_0xd20d('0xa'),'as':_0xd20d('0xb'),'attributes':['id',_0xd20d('0xc'),_0xd20d('0xd'),'data2',_0xd20d('0xe'),_0xd20d('0xf'),'data5',_0xd20d('0x10'),_0xd20d('0x11')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0x6857=['value','AnyConditions','action','data1','data3','data4','data5','data6','GetTrigger','getTriggers','Request','channel','status','Condition','field','operator'];(function(_0x56d90c,_0x4da2ed){var _0x26a21f=function(_0x5a1f00){while(--_0x5a1f00){_0x56d90c['push'](_0x56d90c['shift']());}};_0x26a21f(++_0x4da2ed);}(_0x6857,0x69));var _0x7685=function(_0x266b01,_0x3e333f){_0x266b01=_0x266b01-0x0;var _0x394dac=_0x6857[_0x266b01];return _0x394dac;};'use strict';var client=require('../client');exports[_0x7685('0x0')]=function(_0x561e32){return function(_0x2032cf){return client[_0x7685('0x1')]('GetTrigger',{'options':{'raw':![],'attributes':['id','name',_0x7685('0x2'),_0x7685('0x3')],'include':[{'model':_0x7685('0x4'),'as':'AllConditions','attributes':['id',_0x7685('0x5'),_0x7685('0x6'),_0x7685('0x7')]},{'model':_0x7685('0x4'),'as':_0x7685('0x8'),'attributes':['id',_0x7685('0x5'),_0x7685('0x6'),'value']},{'model':'Action','as':'Actions','attributes':['id',_0x7685('0x9'),_0x7685('0xa'),'data2',_0x7685('0xb'),_0x7685('0xc'),_0x7685('0xd'),_0x7685('0xe'),'data7']}]},'log':_0x7685('0xf')});};};
\ No newline at end of file
index 0534708..846a36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab44=['Request','GetTrunk','name','registry','../client','getTrunks'];(function(_0x55d856,_0x20a983){var _0x273c03=function(_0x531302){while(--_0x531302){_0x55d856['push'](_0x55d856['shift']());}};_0x273c03(++_0x20a983);}(_0xab44,0xe2));var _0x4ab4=function(_0x2c27a2,_0x5321cb){_0x2c27a2=_0x2c27a2-0x0;var _0xf7295d=_0xab44[_0x2c27a2];return _0xf7295d;};'use strict';var client=require(_0x4ab4('0x0'));exports[_0x4ab4('0x1')]=function(_0x3b09a0){return function(_0x2f665b){return client[_0x4ab4('0x2')](_0x4ab4('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x4ab4('0x4'),_0x4ab4('0x5'),'defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0xc39c=['name','registry','getTrunks','GetTrunk'];(function(_0x160136,_0x2ca160){var _0x5d5eff=function(_0x38d90f){while(--_0x38d90f){_0x160136['push'](_0x160136['shift']());}};_0x5d5eff(++_0x2ca160);}(_0xc39c,0xd2));var _0xcc39=function(_0x1e9f9a,_0xc77704){_0x1e9f9a=_0x1e9f9a-0x0;var _0x3662fd=_0xc39c[_0x1e9f9a];return _0x3662fd;};'use strict';var client=require('../client');exports[_0xcc39('0x0')]=function(_0x3380ff){return function(_0x30ad32){return client['Request'](_0xcc39('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xcc39('0x2'),_0xcc39('0x3'),'defaultuser']},'log':_0xcc39('0x1')});};};
\ No newline at end of file
index e8cdb39..e4a6529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x2d8a6c,_0x5c8da8){var _0x5a680a=function(_0x30bce6){while(--_0x30bce6){_0x2d8a6c['push'](_0x2d8a6c['shift']());}};_0x5a680a(++_0x5c8da8);}(_0x9c44,0x178));var _0x49c4=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x9c44[_0x3511d3];return _0x5d6321;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
+var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0x57fe96,_0x148281){var _0x2d7822=function(_0x33d8cc){while(--_0x33d8cc){_0x57fe96['push'](_0x57fe96['shift']());}};_0x2d7822(++_0x148281);}(_0x70e0,0x17b));var _0x070e=function(_0x1f99d0,_0x28d667){_0x1f99d0=_0x1f99d0-0x0;var _0x568b9c=_0x70e0[_0x1f99d0];return _0x568b9c;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5'),_0x070e('0x6'),'online',_0x070e('0x7'),'pauseType',_0x070e('0x8'),'voicePause','phone','mobile',_0x070e('0x9')]},'log':_0x070e('0x1')});};};exports[_0x070e('0xa')]=function(){return function(){return client[_0x070e('0x2')](_0x070e('0xb'),{'options':{'raw':!![],'where':{'role':_0x070e('0xc')},'attributes':['id',_0x070e('0x3'),'accountcode','internal']},'log':_0x070e('0xa')});};};exports[_0x070e('0xd')]=function(_0x12bb37,_0xb8d819,_0xa927a2){return client[_0x070e('0x2')](_0x070e('0xe'),{'body':{'type':_0xb8d819,'uniqueid':_0xa927a2},'options':{'where':{'id':_0x12bb37['id']}},'log':_0x070e('0xd')});};exports[_0x070e('0xf')]=function(_0x5bf079){return client[_0x070e('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5bf079['id']}},'log':'savePause'});};exports[_0x070e('0x10')]=function(_0x56c7ba){return client['Request']('ShowUser',{'options':{'raw':![],'where':{'role':_0x070e('0x11'),'id':_0x56c7ba},'attributes':['id',_0x070e('0x3'),'email','accountcode',_0x070e('0x6'),_0x070e('0x12'),_0x070e('0x7'),_0x070e('0x13'),'lastPauseAt','voicePause',_0x070e('0x9')]},'log':_0x070e('0x10')});};
\ No newline at end of file
index 5d62371..c491797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8852=['CreateVoiceAgentReport','Request','UpdateVoiceAgentReport','create'];(function(_0x331d2e,_0x29a093){var _0x4ace25=function(_0x2fc9d3){while(--_0x2fc9d3){_0x331d2e['push'](_0x331d2e['shift']());}};_0x4ace25(++_0x29a093);}(_0x8852,0x147));var _0x2885=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x8852[_0x3ab9ee];return _0x82ee88;};'use strict';var client=require('../client');exports[_0x2885('0x0')]=function(_0x5a0c24){return client['Request'](_0x2885('0x1'),{'body':_0x5a0c24,'log':_0x2885('0x1')});};exports['update']=function(_0x16b7b7,_0x34393e,_0x2e1fc2){return client[_0x2885('0x2')]('UpdateVoiceAgentReport',{'body':_0x16b7b7,'options':{'where':{'uniqueid':_0x34393e,'interface':_0x2e1fc2,'agentcomplete':!![]}},'log':_0x2885('0x3')});};
\ No newline at end of file
+var _0xf4a4=['update','../client','Request','CreateVoiceAgentReport'];(function(_0x39ec3b,_0x853748){var _0x104228=function(_0x575224){while(--_0x575224){_0x39ec3b['push'](_0x39ec3b['shift']());}};_0x104228(++_0x853748);}(_0xf4a4,0x1ed));var _0x4f4a=function(_0x201c9c,_0x284bce){_0x201c9c=_0x201c9c-0x0;var _0x49b1ea=_0xf4a4[_0x201c9c];return _0x49b1ea;};'use strict';var client=require(_0x4f4a('0x0'));exports['create']=function(_0x34c1c8){return client[_0x4f4a('0x1')](_0x4f4a('0x2'),{'body':_0x34c1c8,'log':_0x4f4a('0x2')});};exports[_0x4f4a('0x3')]=function(_0x150c16,_0x63e956,_0x37510b){return client[_0x4f4a('0x1')]('UpdateVoiceAgentReport',{'body':_0x150c16,'options':{'where':{'uniqueid':_0x63e956,'interface':_0x37510b,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index 4f97fc3..f0d38db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb67d=['callerid','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','GetVoiceCallReports','moment','util','lodash','../client','Request','CreateVoiceCallReport'];(function(_0x100d08,_0x1233f9){var _0x439f38=function(_0xa39521){while(--_0xa39521){_0x100d08['push'](_0x100d08['shift']());}};_0x439f38(++_0x1233f9);}(_0xb67d,0x192));var _0xdb67=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb67d[_0x3b380d];return _0x54502b;};'use strict';var moment=require(_0xdb67('0x0'));var util=require(_0xdb67('0x1'));var _=require(_0xdb67('0x2'));var client=require(_0xdb67('0x3'));exports['create']=function(_0x1ca099){return client[_0xdb67('0x4')](_0xdb67('0x5'),{'body':_['merge'](_0x1ca099,{'source':_0x1ca099['calleridnum'],'destinationcontext':_0x1ca099['context'],'callerid':_0x1ca099[_0xdb67('0x6')],'amaflags':'DOCUMENTATION'}),'log':_0xdb67('0x5')});};exports[_0xdb67('0x7')]=function(){return function(){return client[_0xdb67('0x4')](_0xdb67('0x8'),{'options':{'where':{'type':[_0xdb67('0x9')],'createdAt':{'$between':[moment()[_0xdb67('0xa')](_0xdb67('0xb'))[_0xdb67('0xc')](_0xdb67('0xd')),moment()[_0xdb67('0xe')]('day')[_0xdb67('0xc')](_0xdb67('0xd'))]}},'attributes':[_0xdb67('0xf'),'disposition','duration','billableseconds']},'log':_0xdb67('0x10')});};};
\ No newline at end of file
+var _0x26d8=['billableseconds','util','lodash','../client','merge','calleridnum','DOCUMENTATION','Request','GetVoiceCallReport','startOf','YYYY-MM-DD\x20HH:mm:ss','day','format','type','duration'];(function(_0x24b3ff,_0x38569f){var _0x1b2b15=function(_0x4d5316){while(--_0x4d5316){_0x24b3ff['push'](_0x24b3ff['shift']());}};_0x1b2b15(++_0x38569f);}(_0x26d8,0x15a));var _0x826d=function(_0x4874c1,_0x3d1071){_0x4874c1=_0x4874c1-0x0;var _0x3212a5=_0x26d8[_0x4874c1];return _0x3212a5;};'use strict';var moment=require('moment');var util=require(_0x826d('0x0'));var _=require(_0x826d('0x1'));var client=require(_0x826d('0x2'));exports['create']=function(_0x35f157){return client['Request']('CreateVoiceCallReport',{'body':_[_0x826d('0x3')](_0x35f157,{'source':_0x35f157[_0x826d('0x4')],'destinationcontext':_0x35f157['context'],'callerid':_0x35f157['callerid'],'amaflags':_0x826d('0x5')}),'log':'CreateVoiceCallReport'});};exports['getVoiceCallReports']=function(){return function(){return client[_0x826d('0x6')](_0x826d('0x7'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x826d('0x8')]('day')['format'](_0x826d('0x9')),moment()['endOf'](_0x826d('0xa'))[_0x826d('0xb')](_0x826d('0x9'))]}},'attributes':[_0x826d('0xc'),'disposition',_0x826d('0xd'),_0x826d('0xe')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 42fdbd6..1a45c0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4760=['../client','Request','CreateVoiceDialReport'];(function(_0x55ff63,_0x52e36c){var _0x41841f=function(_0x23da47){while(--_0x23da47){_0x55ff63['push'](_0x55ff63['shift']());}};_0x41841f(++_0x52e36c);}(_0x4760,0x9c));var _0x0476=function(_0x40186e,_0x2530d6){_0x40186e=_0x40186e-0x0;var _0x5c388f=_0x4760[_0x40186e];return _0x5c388f;};'use strict';var client=require(_0x0476('0x0'));exports['create']=function(_0x37cb27){return client[_0x0476('0x1')](_0x0476('0x2'),{'body':_0x37cb27,'log':_0x0476('0x2')});};
\ No newline at end of file
+var _0x6fc4=['CreateVoiceDialReport','../client','create','Request'];(function(_0x101f97,_0x5bb72e){var _0x137bcb=function(_0x16aeae){while(--_0x16aeae){_0x101f97['push'](_0x101f97['shift']());}};_0x137bcb(++_0x5bb72e);}(_0x6fc4,0xa5));var _0x46fc=function(_0x2865c9,_0x575948){_0x2865c9=_0x2865c9-0x0;var _0x585985=_0x6fc4[_0x2865c9];return _0x585985;};'use strict';var client=require(_0x46fc('0x0'));exports[_0x46fc('0x1')]=function(_0x30b683){return client[_0x46fc('0x2')](_0x46fc('0x3'),{'body':_0x30b683,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index b8a443a..69f4398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db0=['recordingFormat','../client','getVoiceExtensions','GetVoiceExtension','exten'];(function(_0x1ebce2,_0x10e903){var _0x4a330c=function(_0x4fd810){while(--_0x4fd810){_0x1ebce2['push'](_0x1ebce2['shift']());}};_0x4a330c(++_0x10e903);}(_0x8db0,0x65));var _0x08db=function(_0x5d7227,_0x12aebe){_0x5d7227=_0x5d7227-0x0;var _0x15ac55=_0x8db0[_0x5d7227];return _0x15ac55;};'use strict';var client=require(_0x08db('0x0'));exports[_0x08db('0x1')]=function(){return function(){return client['Request'](_0x08db('0x2'),{'options':{'raw':!![],'attributes':['id',_0x08db('0x3'),_0x08db('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0x81a5=['../client','getVoiceExtensions','Request','GetVoiceExtension','exten','recordingFormat'];(function(_0x5c3ae9,_0x450f9a){var _0x3f5950=function(_0x594c1f){while(--_0x594c1f){_0x5c3ae9['push'](_0x5c3ae9['shift']());}};_0x3f5950(++_0x450f9a);}(_0x81a5,0x1c8));var _0x581a=function(_0x321659,_0x10cc4f){_0x321659=_0x321659-0x0;var _0x6bd2cd=_0x81a5[_0x321659];return _0x6bd2cd;};'use strict';var client=require(_0x581a('0x0'));exports[_0x581a('0x1')]=function(){return function(){return client[_0x581a('0x2')](_0x581a('0x3'),{'options':{'raw':!![],'attributes':['id',_0x581a('0x4'),_0x581a('0x5')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index cf194c1..912dc59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x795d=['dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialQueueProject2','monitor_format','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','Trunk','Pause','TrunkBackup','callerid','active','Interval','Intervals','getVoiceQueues','../client','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x795d,0x16c));var _0xd795=function(_0xe540c0,_0x2d98e5){_0xe540c0=_0xe540c0-0x0;var _0x130549=_0x795d[_0xe540c0];return _0x130549;};'use strict';var client=require(_0xd795('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0xd795('0x1')](_0xd795('0x2'),{'options':{'raw':![],'attributes':['id',_0xd795('0x3'),_0xd795('0x4'),_0xd795('0x5'),_0xd795('0x6'),'monitor_format',_0xd795('0x7'),_0xd795('0x8'),_0xd795('0x9'),_0xd795('0xa'),_0xd795('0xb'),_0xd795('0xc'),'dialPredictiveOptimization',_0xd795('0xd'),_0xd795('0xe'),_0xd795('0xf'),_0xd795('0x10'),_0xd795('0x11'),_0xd795('0x12'),_0xd795('0x13'),_0xd795('0x14'),_0xd795('0x15'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0xd795('0x16'),_0xd795('0x17'),_0xd795('0x18'),_0xd795('0x19'),_0xd795('0x1a'),_0xd795('0x1b'),_0xd795('0x1c'),_0xd795('0x1d'),_0xd795('0x1e'),_0xd795('0x1f'),_0xd795('0x20'),_0xd795('0x21'),_0xd795('0x22'),_0xd795('0x23'),_0xd795('0x24'),_0xd795('0x25'),_0xd795('0x26'),_0xd795('0x27'),_0xd795('0x28'),_0xd795('0x29'),_0xd795('0x2a'),'dialOrderByScheduledAt',_0xd795('0x2b'),'dialAgiAfterHangupClient',_0xd795('0x2c'),_0xd795('0x2d'),'strategy',_0xd795('0x2e'),_0xd795('0x2f'),_0xd795('0x30'),'dialNoSuchNumberRetryFrequency',_0xd795('0x31'),_0xd795('0x32'),_0xd795('0x33'),_0xd795('0x34'),_0xd795('0x35'),'dialMachineRetryFrequency',_0xd795('0x36'),_0xd795('0x37'),_0xd795('0x38'),'dialPredictiveIntervalMaxThreshold',_0xd795('0x39')],'include':[{'model':_0xd795('0x3a'),'as':_0xd795('0x3a'),'attributes':['id','name','callerid','active']},{'model':_0xd795('0x3b'),'as':'mandatoryDispositionPause','attributes':['id',_0xd795('0x3')]},{'model':'Trunk','as':_0xd795('0x3c'),'attributes':['id','name',_0xd795('0x3d'),_0xd795('0x3e')]},{'model':_0xd795('0x3f'),'as':_0xd795('0x3f'),'attributes':['id',_0xd795('0x3')],'include':[{'model':'Interval','as':_0xd795('0x40'),'attributes':['id','name','interval']}]}]},'log':_0xd795('0x41')});};};
\ No newline at end of file
+var _0xf3d1=['dialPredictiveInterval','dialOriginateCallerIdName','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','Trunk','Pause','mandatoryDispositionPause','TrunkBackup','active','Interval','Intervals','getVoiceQueues','../client','Request','GetVoiceQueue','name','acw','autopause','monitor_format','type','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage'];(function(_0x582a0b,_0x1e18eb){var _0x4722b1=function(_0x6ff751){while(--_0x6ff751){_0x582a0b['push'](_0x582a0b['shift']());}};_0x4722b1(++_0x1e18eb);}(_0xf3d1,0x1b3));var _0x1f3d=function(_0x2f10f9,_0x141c5d){_0x2f10f9=_0x2f10f9-0x0;var _0x319e4c=_0xf3d1[_0x2f10f9];return _0x319e4c;};'use strict';var client=require(_0x1f3d('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x1f3d('0x1')](_0x1f3d('0x2'),{'options':{'raw':![],'attributes':['id',_0x1f3d('0x3'),_0x1f3d('0x4'),'acwTimeout',_0x1f3d('0x5'),_0x1f3d('0x6'),_0x1f3d('0x7'),'dialActive','dialMethod',_0x1f3d('0x8'),_0x1f3d('0x9'),_0x1f3d('0xa'),_0x1f3d('0xb'),_0x1f3d('0xc'),_0x1f3d('0xd'),_0x1f3d('0xe'),'dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions',_0x1f3d('0xf'),_0x1f3d('0x10'),_0x1f3d('0x11'),_0x1f3d('0x12'),_0x1f3d('0x13'),_0x1f3d('0x14'),_0x1f3d('0x15'),_0x1f3d('0x16'),_0x1f3d('0x17'),_0x1f3d('0x18'),_0x1f3d('0x19'),_0x1f3d('0x1a'),_0x1f3d('0x1b'),_0x1f3d('0x1c'),_0x1f3d('0x1d'),_0x1f3d('0x1e'),_0x1f3d('0x1f'),'dialAMDTotalAnalysisTime',_0x1f3d('0x20'),_0x1f3d('0x21'),_0x1f3d('0x22'),_0x1f3d('0x23'),_0x1f3d('0x24'),_0x1f3d('0x25'),_0x1f3d('0x26'),_0x1f3d('0x27'),'dialOrderByScheduledAt',_0x1f3d('0x28'),_0x1f3d('0x29'),_0x1f3d('0x2a'),_0x1f3d('0x6'),_0x1f3d('0x2b'),_0x1f3d('0x2c'),_0x1f3d('0x2d'),_0x1f3d('0x2e'),'dialNoSuchNumberRetryFrequency',_0x1f3d('0x2f'),_0x1f3d('0x30'),_0x1f3d('0x31'),_0x1f3d('0x32'),_0x1f3d('0x33'),_0x1f3d('0x34'),_0x1f3d('0x35'),_0x1f3d('0x36'),_0x1f3d('0x37'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold'],'include':[{'model':'Trunk','as':_0x1f3d('0x38'),'attributes':['id',_0x1f3d('0x3'),'callerid','active']},{'model':_0x1f3d('0x39'),'as':_0x1f3d('0x3a'),'attributes':['id','name']},{'model':_0x1f3d('0x38'),'as':_0x1f3d('0x3b'),'attributes':['id',_0x1f3d('0x3'),'callerid',_0x1f3d('0x3c')]},{'model':_0x1f3d('0x3d'),'as':'Interval','attributes':['id',_0x1f3d('0x3')],'include':[{'model':'Interval','as':_0x1f3d('0x3e'),'attributes':['id','name','interval']}]}]},'log':_0x1f3d('0x3f')});};};
\ No newline at end of file
index 90c03bd..4fbd26b 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(_0x155fea,_0x1afd1e){var _0x4394bb=function(_0x1b82c8){while(--_0x1b82c8){_0x155fea['push'](_0x155fea['shift']());}};_0x4394bb(++_0x1afd1e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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(_0x35a23e,_0x13e3df){var _0x3bb776=function(_0x46a80a){while(--_0x46a80a){_0x35a23e['push'](_0x35a23e['shift']());}};_0x3bb776(++_0x13e3df);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 385203b..e9e0a23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf5=['../client','getVoiceQueueRtPauses','Request'];(function(_0x2f73ab,_0x55a68b){var _0x281996=function(_0x544eb9){while(--_0x544eb9){_0x2f73ab['push'](_0x2f73ab['shift']());}};_0x281996(++_0x55a68b);}(_0x7cf5,0x10b));var _0x57cf=function(_0x162be4,_0x513841){_0x162be4=_0x162be4-0x0;var _0x1d0b27=_0x7cf5[_0x162be4];return _0x1d0b27;};'use strict';var client=require(_0x57cf('0x0'));exports[_0x57cf('0x1')]=function(_0x3174c5){return function(){return client[_0x57cf('0x2')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x3174c5,'paused':!![]},'raw':!![]},'log':_0x57cf('0x1')});};};
\ No newline at end of file
+var _0x39a2=['Request','getVoiceQueueRtPauses'];(function(_0x587c0f,_0x4e548a){var _0x4931b5=function(_0x960fb4){while(--_0x960fb4){_0x587c0f['push'](_0x587c0f['shift']());}};_0x4931b5(++_0x4e548a);}(_0x39a2,0x1db));var _0x239a=function(_0xf61d62,_0x5e1ce1){_0xf61d62=_0xf61d62-0x0;var _0x1b8b00=_0x39a2[_0xf61d62];return _0x1b8b00;};'use strict';var client=require('../client');exports[_0x239a('0x0')]=function(_0x380919){return function(){return client[_0x239a('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x380919,'paused':!![]},'raw':!![]},'log':_0x239a('0x0')});};};
\ No newline at end of file
index 38b996f..b8fd8f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x176512,_0x20ff5c){var _0x53397e=function(_0x4f8354){while(--_0x4f8354){_0x176512['push'](_0x176512['shift']());}};_0x53397e(++_0x20ff5c);}(_0x7a54,0x106));var _0x47a5=function(_0x439f9e,_0x2804c3){_0x439f9e=_0x439f9e-0x0;var _0x11f9b1=_0x7a54[_0x439f9e];return _0x11f9b1;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x474ffd,_0x51b669){var _0x1a1e8b=function(_0x5bf343){while(--_0x5bf343){_0x474ffd['push'](_0x474ffd['shift']());}};_0x1a1e8b(++_0x51b669);}(_0x7a54,0x106));var _0x47a5=function(_0x2d4c02,_0x471924){_0x2d4c02=_0x2d4c02-0x0;var _0x42b25c=_0x7a54[_0x2d4c02];return _0x42b25c;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index cf852da..1c3bd9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2244=['transfereechannel','transfereeconnectedlinename','transfereeaccountcode','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','CreateVoiceTransferReport','attendedTransfer','Request','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','origtransferercontext','attended','../client','transfers','blindTransfer','result','transfererchannel','transferercalleridname','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid'];(function(_0x566606,_0x51640a){var _0xfb2557=function(_0x5e63af){while(--_0x5e63af){_0x566606['push'](_0x566606['shift']());}};_0xfb2557(++_0x51640a);}(_0x2244,0x1b2));var _0x4224=function(_0x64d243,_0x4852f3){_0x64d243=_0x64d243-0x0;var _0x275046=_0x2244[_0x64d243];return _0x275046;};'use strict';var client=require(_0x4224('0x0'));exports[_0x4224('0x1')]={};exports[_0x4224('0x2')]=function(_0x41f303){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x41f303[_0x4224('0x3')],'transfererchannel':_0x41f303[_0x4224('0x4')],'transferercalleridnum':_0x41f303['transferercalleridnum'],'transferercalleridname':_0x41f303[_0x4224('0x5')],'transfererconnectedlinenum':_0x41f303['transfererconnectedlinenum'],'transfererconnectedlinename':_0x41f303['transfererconnectedlinename'],'transfereraccountcode':_0x41f303[_0x4224('0x6')],'transferercontext':_0x41f303[_0x4224('0x7')],'transfererexten':_0x41f303[_0x4224('0x8')],'transfererlinkedid':_0x41f303[_0x4224('0x9')],'transfereechannel':_0x41f303[_0x4224('0xa')],'transfereecalleridnum':_0x41f303['transfereecalleridnum'],'transfereecalleridname':_0x41f303['transfereecalleridname'],'transfereeconnectedlinenum':_0x41f303['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x41f303[_0x4224('0xb')],'transfereeaccountcode':_0x41f303[_0x4224('0xc')],'transfereecontext':_0x41f303['transfereecontext'],'transfereeexten':_0x41f303[_0x4224('0xd')],'transfereelinkedid':_0x41f303[_0x4224('0xe')],'isexternal':_0x41f303[_0x4224('0xf')],'context':_0x41f303[_0x4224('0x10')],'extension':_0x41f303[_0x4224('0x11')],'type':_0x4224('0x12')},'log':_0x4224('0x13')});};exports[_0x4224('0x14')]=function(_0xee0532){return client[_0x4224('0x15')](_0x4224('0x13'),{'body':{'result':_0xee0532[_0x4224('0x3')],'transfererchannel':_0xee0532['origtransfererchannel'],'transferercalleridnum':_0xee0532['origtransferercalleridnum'],'transferercalleridname':_0xee0532[_0x4224('0x16')],'transfererconnectedlinenum':_0xee0532['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0xee0532[_0x4224('0x17')],'transfereraccountcode':_0xee0532[_0x4224('0x18')],'transferercontext':_0xee0532[_0x4224('0x19')],'transfererexten':_0xee0532[_0x4224('0x1a')],'transfererlinkedid':_0xee0532['origtransfererlinkedid'],'transfereechannel':_0xee0532[_0x4224('0x1b')],'transfereecalleridnum':_0xee0532[_0x4224('0x1c')],'transfereecalleridname':_0xee0532[_0x4224('0x1d')],'transfereeconnectedlinenum':_0xee0532[_0x4224('0x1e')],'transfereeconnectedlinename':_0xee0532[_0x4224('0x1f')],'transfereeaccountcode':_0xee0532[_0x4224('0x20')],'transfereecontext':_0xee0532['transfertargetcontext'],'transfereeexten':_0xee0532[_0x4224('0x21')],'transfereelinkedid':_0xee0532[_0x4224('0x22')],'isexternal':_0xee0532[_0x4224('0xf')],'context':_0xee0532[_0x4224('0x23')],'extension':_0xee0532['origtransfererexten'],'type':_0x4224('0x24')},'log':_0x4224('0x13')});};
\ No newline at end of file
+var _0x2f98=['attended','../client','blindTransfer','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','blind','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten'];(function(_0x49e2b1,_0x3e0ad2){var _0x508a4e=function(_0x5905af){while(--_0x5905af){_0x49e2b1['push'](_0x49e2b1['shift']());}};_0x508a4e(++_0x3e0ad2);}(_0x2f98,0x1e5));var _0x82f9=function(_0x763cb8,_0x42e553){_0x763cb8=_0x763cb8-0x0;var _0x2a4c59=_0x2f98[_0x763cb8];return _0x2a4c59;};'use strict';var client=require(_0x82f9('0x0'));exports['transfers']={};exports[_0x82f9('0x1')]=function(_0x495d44){return client[_0x82f9('0x2')](_0x82f9('0x3'),{'body':{'result':_0x495d44['result'],'transfererchannel':_0x495d44[_0x82f9('0x4')],'transferercalleridnum':_0x495d44['transferercalleridnum'],'transferercalleridname':_0x495d44[_0x82f9('0x5')],'transfererconnectedlinenum':_0x495d44[_0x82f9('0x6')],'transfererconnectedlinename':_0x495d44[_0x82f9('0x7')],'transfereraccountcode':_0x495d44[_0x82f9('0x8')],'transferercontext':_0x495d44[_0x82f9('0x9')],'transfererexten':_0x495d44[_0x82f9('0xa')],'transfererlinkedid':_0x495d44[_0x82f9('0xb')],'transfereechannel':_0x495d44[_0x82f9('0xc')],'transfereecalleridnum':_0x495d44[_0x82f9('0xd')],'transfereecalleridname':_0x495d44['transfereecalleridname'],'transfereeconnectedlinenum':_0x495d44['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x495d44[_0x82f9('0xe')],'transfereeaccountcode':_0x495d44[_0x82f9('0xf')],'transfereecontext':_0x495d44[_0x82f9('0x10')],'transfereeexten':_0x495d44[_0x82f9('0x11')],'transfereelinkedid':_0x495d44[_0x82f9('0x12')],'isexternal':_0x495d44[_0x82f9('0x13')],'context':_0x495d44[_0x82f9('0x14')],'extension':_0x495d44['extension'],'type':_0x82f9('0x15')},'log':_0x82f9('0x3')});};exports[_0x82f9('0x16')]=function(_0x26f48e){return client[_0x82f9('0x2')](_0x82f9('0x3'),{'body':{'result':_0x26f48e[_0x82f9('0x17')],'transfererchannel':_0x26f48e[_0x82f9('0x18')],'transferercalleridnum':_0x26f48e[_0x82f9('0x19')],'transferercalleridname':_0x26f48e[_0x82f9('0x1a')],'transfererconnectedlinenum':_0x26f48e['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x26f48e[_0x82f9('0x1b')],'transfereraccountcode':_0x26f48e[_0x82f9('0x1c')],'transferercontext':_0x26f48e[_0x82f9('0x1d')],'transfererexten':_0x26f48e[_0x82f9('0x1e')],'transfererlinkedid':_0x26f48e[_0x82f9('0x1f')],'transfereechannel':_0x26f48e[_0x82f9('0x20')],'transfereecalleridnum':_0x26f48e[_0x82f9('0x21')],'transfereecalleridname':_0x26f48e[_0x82f9('0x22')],'transfereeconnectedlinenum':_0x26f48e[_0x82f9('0x23')],'transfereeconnectedlinename':_0x26f48e[_0x82f9('0x24')],'transfereeaccountcode':_0x26f48e[_0x82f9('0x25')],'transfereecontext':_0x26f48e[_0x82f9('0x26')],'transfereeexten':_0x26f48e[_0x82f9('0x27')],'transfereelinkedid':_0x26f48e[_0x82f9('0x28')],'isexternal':_0x26f48e[_0x82f9('0x13')],'context':_0x26f48e[_0x82f9('0x29')],'extension':_0x26f48e[_0x82f9('0x2a')],'type':_0x82f9('0x2b')},'log':_0x82f9('0x3')});};
\ No newline at end of file
index d26bb2e..a92e732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce68=['error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','catch','isConnected','command','Command','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','length','voicechannel','uniqueid','channel','filename','format','MixMonitor','ai(mixmonitorid)','then','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','channels','resolve','StopMixMonitor','destinationchannel','stop','%s.%s','queueChannels','voicequeuechannel','map','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','bluebird','moment','../../../config/environment','../ami','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xce68,0x10c));var _0x8ce6=function(_0x333779,_0x32d631){_0x333779=_0x333779-0x0;var _0x2b43ef=_0xce68[_0x333779];return _0x2b43ef;};'use strict';var _=require(_0x8ce6('0x0'));var util=require('util');var jayson=require(_0x8ce6('0x1'));var schema=require(_0x8ce6('0x2'));var BPromise=require(_0x8ce6('0x3'));var moment=require(_0x8ce6('0x4'));var config=require(_0x8ce6('0x5'));var properties=require('../properties');var ami=require(_0x8ce6('0x6'));exports[_0x8ce6('0x7')]=function(_0x39301d,_0x5cd417,_0x116e0a){return new BPromise(function(_0x10b3ca,_0x4fed90){var _0x4e5471={'QueuePause':function(_0x34b134){return new Promise(function(_0x357fbb,_0x17811e){var _0x258d09=util['format'](_0x8ce6('0x8'),_0x8ce6('0x9'),_0x34b134[_0x8ce6('0xa')]);if(_0x39301d[_0x8ce6('0xb')]&&_0x39301d[_0x8ce6('0xb')][_0x258d09]&&_0x39301d[_0x8ce6('0xb')][_0x258d09][_0x8ce6('0xc')]){_0x39301d[_0x8ce6('0xb')][_0x258d09][_0x8ce6('0xd')]();}if(_0x39301d[_0x8ce6('0xe')][_0x258d09]){_0x39301d[_0x8ce6('0xe')][_0x258d09][_0x8ce6('0xf')]({'statePause':_0x34b134[_0x8ce6('0x10')]?!![]:![]});}_0x357fbb({'code':0xc8,'message':_0x8ce6('0x11')});});},'Reload':function(_0x1e8b85){var _0x3db848=this;return new Promise(function(_0x38252e,_0x1d7aaf){if(ami['isConnected']()==![]){return _0x1d7aaf(_0x3db848[_0x8ce6('0x12')](0x1f4,[config['asterisk']['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}_0x1e8b85=_[_0x8ce6('0x17')](_0x1e8b85,_[_0x8ce6('0x18')](properties[_0x8ce6('0x19')]));_0x1e8b85[_0x8ce6('0x1a')]=_0x8ce6('0x1b');return ami[_0x8ce6('0x1c')](_0x1e8b85)['then'](function(_0x4474d0){_0x38252e({'code':0xc8,'message':_0x4474d0['message']});})[_0x8ce6('0x1d')](function(_0x175a74){_0x1d7aaf(_0x3db848[_0x8ce6('0x12')](0x1f5,_0x175a74['message']));});});},'Command':function(_0x4ffe5e){var _0x30e233=this;return new Promise(function(_0x2bf89c,_0x4eb0df){if(ami[_0x8ce6('0x1e')]()==![]){return _0x4eb0df(_0x30e233[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}_0x4ffe5e=_[_0x8ce6('0x17')](_0x4ffe5e,_0x8ce6('0x1f'));_0x4ffe5e[_0x8ce6('0x1a')]=_0x8ce6('0x20');return ami[_0x8ce6('0x1c')](_0x4ffe5e)['then'](function(_0x462c8b){_0x2bf89c({'code':0xc8,'message':_0x462c8b['content']});})[_0x8ce6('0x1d')](function(_0x28c639){_0x4eb0df(_0x30e233[_0x8ce6('0x12')](0x1f5,_0x28c639['message']));});});},'VoiceQueues':function(_0x4862b0){return new Promise(function(_0x5d72b0,_0x5c2b61){var _0x3a8325=[];for(var _0x1e95cb in _0x39301d[_0x8ce6('0x21')]){if(_0x39301d[_0x8ce6('0x21')][_0x8ce6('0x22')](_0x1e95cb)){var _0xadc624=_0x39301d['voiceQueues'][_0x1e95cb];var _0x5656ab={'id':_0xadc624['id'],'name':_0xadc624[_0x8ce6('0xa')],'strategy':_0xadc624[_0x8ce6('0x23')],'answered':_0xadc624[_0x8ce6('0x24')],'available':_0xadc624[_0x8ce6('0x25')],'loggedIn':_0xadc624[_0x8ce6('0x26')],'pTalking':_0xadc624[_0x8ce6('0x27')],'sumBillable':_0xadc624['sumBillable'],'sumDuration':_0xadc624['sumDuration'],'sumHoldTime':_0xadc624[_0x8ce6('0x28')]||0x0,'talking':_0xadc624[_0x8ce6('0x29')],'total':_0xadc624[_0x8ce6('0x2a')],'type':_0xadc624['type'],'unmanaged':_0xadc624[_0x8ce6('0x2b')],'abandoned':_0xadc624[_0x8ce6('0x2c')],'waiting':_0xadc624[_0x8ce6('0x2d')],'loggedInDb':_0xadc624[_0x8ce6('0x2e')]};if(_0xadc624['type']===_0x8ce6('0x2f')){_0x5656ab[_0x8ce6('0x30')]=_0xadc624['dialActive'];_0x5656ab['dialMethod']=_0xadc624[_0x8ce6('0x31')];_0x5656ab[_0x8ce6('0x32')]=_0xadc624[_0x8ce6('0x32')];_0x5656ab[_0x8ce6('0x33')]=_0xadc624[_0x8ce6('0x33')];_0x5656ab[_0x8ce6('0x34')]=_0xadc624[_0x8ce6('0x34')];_0x5656ab[_0x8ce6('0x35')]=_0xadc624[_0x8ce6('0x35')];_0x5656ab[_0x8ce6('0x36')]=_0xadc624[_0x8ce6('0x36')];_0x5656ab[_0x8ce6('0x37')]=_0xadc624[_0x8ce6('0x37')];_0x5656ab[_0x8ce6('0x38')]=_0xadc624[_0x8ce6('0x38')];_0x5656ab[_0x8ce6('0x39')]=_0xadc624[_0x8ce6('0x39')];_0x5656ab[_0x8ce6('0x3a')]=_0xadc624[_0x8ce6('0x3a')];_0x5656ab['outboundCongestionCallsDay']=_0xadc624[_0x8ce6('0x3b')];_0x5656ab[_0x8ce6('0x3c')]=_0xadc624[_0x8ce6('0x3c')];_0x5656ab[_0x8ce6('0x3d')]=_0xadc624[_0x8ce6('0x3d')];_0x5656ab['outboundDropCallsDayTimeout']=_0xadc624['outboundDropCallsDayTimeout'];_0x5656ab[_0x8ce6('0x3e')]=_0xadc624[_0x8ce6('0x3e')];_0x5656ab['outboundNoSuchCallsDay']=_0xadc624['outboundNoSuchCallsDay'];_0x5656ab[_0x8ce6('0x3f')]=_0xadc624[_0x8ce6('0x3f')];_0x5656ab[_0x8ce6('0x40')]=_0xadc624[_0x8ce6('0x40')];_0x5656ab[_0x8ce6('0x41')]=_0xadc624[_0x8ce6('0x41')];_0x5656ab['outboundUnknownCallsDay']=_0xadc624[_0x8ce6('0x42')];_0x5656ab['predictiveIntervalAnsweredCalls']=_0xadc624[_0x8ce6('0x43')];_0x5656ab['predictiveIntervalAvgHoldtime']=_0xadc624[_0x8ce6('0x44')];_0x5656ab[_0x8ce6('0x45')]=_0xadc624[_0x8ce6('0x45')];_0x5656ab[_0x8ce6('0x46')]=_0xadc624['predictiveIntervalDroppedCallsCallersExit'];_0x5656ab[_0x8ce6('0x47')]=_0xadc624['predictiveIntervalDroppedCallsTimeout'];_0x5656ab[_0x8ce6('0x48')]=_0xadc624['predictiveIntervalErlangCalls'];_0x5656ab[_0x8ce6('0x49')]=_0xadc624[_0x8ce6('0x49')];_0x5656ab[_0x8ce6('0x4a')]=_0xadc624['predictiveIntervalHitRate'];_0x5656ab[_0x8ce6('0x4b')]=_0xadc624[_0x8ce6('0x4b')];_0x5656ab[_0x8ce6('0x4c')]=_0xadc624[_0x8ce6('0x4c')];_0x5656ab[_0x8ce6('0x4d')]=_0xadc624[_0x8ce6('0x4d')];_0x5656ab['predictiveIntervalTotalCalls']=_0xadc624[_0x8ce6('0x4e')];_0x5656ab[_0x8ce6('0x4f')]=_0xadc624[_0x8ce6('0x4f')];_0x5656ab['originated']=_0xadc624[_0x8ce6('0x50')];_0x5656ab[_0x8ce6('0x51')]=_0xadc624[_0x8ce6('0x51')];_0x5656ab[_0x8ce6('0x52')]=_0xadc624[_0x8ce6('0x52')];_0x5656ab[_0x8ce6('0x53')]=_0xadc624[_0x8ce6('0x53')];_0x5656ab[_0x8ce6('0x54')]=_0xadc624[_0x8ce6('0x54')];_0x5656ab[_0x8ce6('0x55')]=_0xadc624[_0x8ce6('0x55')];_0x5656ab[_0x8ce6('0x56')]=_0xadc624[_0x8ce6('0x56')];}if(_0xadc624[_0x8ce6('0x57')]){_0x5656ab[_0x8ce6('0x57')]={'id':_0xadc624['Trunk']['id'],'name':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0xa')],'active':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0x58')],'callerid':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0x59')]};}if(_0xadc624[_0x8ce6('0x5a')]){_0x5656ab[_0x8ce6('0x5a')]={'id':_0xadc624[_0x8ce6('0x5a')]['id'],'name':_0xadc624[_0x8ce6('0x5a')][_0x8ce6('0xa')]};}_0x3a8325[_0x8ce6('0x5b')](_0x5656ab);}}_0x5d72b0({'count':_0x3a8325['length'],'rows':_0x3a8325});});},'UpdateVoiceQueue':function(_0x1d18a6){return new Promise(function(_0x29b020,_0x16ba59){var _0x28d685=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x21')],{'id':parseInt(_0x1d18a6['id'])});var _0x58d54f=_[_0x8ce6('0x5d')](_0x1d18a6,['id']);if(_0x28d685){for(var _0x3137bb in _0x58d54f){if(typeof _0x58d54f[_0x3137bb]!==_0x8ce6('0x5e')&&typeof _0x28d685[_0x3137bb]!==_0x8ce6('0x5e')){_0x28d685[_0x3137bb]=_0x58d54f[_0x3137bb];}}_0x29b020(_0x28d685);}else{_0x16ba59();}});},'VoiceChannels':function(_0x563641){return new Promise(function(_0x212d18,_0x527133){var _0x106c9a=_[_0x8ce6('0x5f')](_0x39301d['channels']);_0x212d18({'count':_0x106c9a[_0x8ce6('0x60')],'rows':_0x106c9a});});},'VoiceChannelMixMonitor':function(_0x102fae){var _0x3c70a9=this;return new Promise(function(_0x154d01,_0xe74d6a){if(ami['isConnected']()==![]){return _0xe74d6a(_0x3c70a9[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config['asterisk'][_0x8ce6('0x14')],'ami\x20disconnected']['join']('\x20')));}var _0x5b3551=schema(properties[_0x8ce6('0x61')])[_0x8ce6('0x2')](_0x102fae);if(_0x5b3551['length']>0x0){return _0xe74d6a(_0x3c70a9['error'](0x1f4,_['map'](_0x5b3551,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0xf81694=_[_0x8ce6('0x5c')](_0x39301d['channels'],{'uniqueid':_0x102fae[_0x8ce6('0x62')]});if(_0xf81694&&_0xf81694[_0x8ce6('0x63')]){var _0x25e894=util['format']('%s.%s',_0x102fae[_0x8ce6('0x64')]||_0x102fae[_0x8ce6('0x62')],_0x102fae[_0x8ce6('0x65')]||'wav');return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x66'),'channel':_0xf81694[_0x8ce6('0x63')],'file':_0x25e894,'options':_0x8ce6('0x67')})[_0x8ce6('0x68')](function(_0x4e5ed7){var _0x3dc9e4=_[_0x8ce6('0x5c')](_0xf81694[_0x8ce6('0x69')],{'filename':_0x8ce6('0x6a')+_0x25e894['toLowerCase']()});if(_[_0x8ce6('0x6b')](_0x3dc9e4)){_0xf81694[_0x8ce6('0x69')][_0x8ce6('0x5b')]({'filename':_0x8ce6('0x6a')+_0x25e894[_0x8ce6('0x6c')](),'createdAt':moment()[_0x8ce6('0x65')](_0x8ce6('0x6d')),'mixmonitorid':_0x4e5ed7[_0x8ce6('0x6e')],'status':_0x8ce6('0x6f')});}else{_0x3dc9e4[_0x8ce6('0x6e')]=_0x4e5ed7['mixmonitorid'];_0x3dc9e4['status']=_0x8ce6('0x6f');}_0x154d01({'code':0xc8,'message':[_0x102fae[_0x8ce6('0x62')],'MixMonitor\x20Success',_0x4e5ed7[_0x8ce6('0x6e')]]['join']('\x20'),'mixmonitorid':_0x4e5ed7[_0x8ce6('0x6e')]});})[_0x8ce6('0x1d')](function(_0x1ef538){_0xe74d6a(_0x3c70a9['error'](0x1f5,[_0x102fae[_0x8ce6('0x62')],_0x1ef538[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0xe74d6a(_0x3c70a9[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x1e5383){var _0xaa5624=this;return new Promise(function(_0x2f78f7,_0x3a86d0){if(ami['isConnected']()==![]){return _0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config[_0x8ce6('0x13')]['username'],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}var _0x2a26c0=schema(properties[_0x8ce6('0x61')])[_0x8ce6('0x2')](_0x1e5383);if(_0x2a26c0['length']>0x0){return _0x3a86d0(_0xaa5624['error'](0x1f4,_['map'](_0x2a26c0,'message')[_0x8ce6('0x16')](',\x20')));}var _0x5e45d6=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x71')],{'uniqueid':_0x1e5383[_0x8ce6('0x62')]});if(_0x5e45d6){return BPromise[_0x8ce6('0x72')]()['then'](function(){if(_0x5e45d6[_0x8ce6('0x63')]){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x73'),'channel':_0x5e45d6[_0x8ce6('0x63')],'mixmonitorid':_0x1e5383[_0x8ce6('0x6e')]})['catch'](function(_0x218fee){});}})['then'](function(){if(_0x5e45d6[_0x8ce6('0x74')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x5e45d6[_0x8ce6('0x74')],'mixmonitorid':_0x1e5383['mixmonitorid']})[_0x8ce6('0x1d')](function(_0x4485be){});}})[_0x8ce6('0x68')](function(_0x370a8c){var _0x6a8ee9=_['find'](_0x5e45d6[_0x8ce6('0x69')],{'mixmonitorid':_0x1e5383[_0x8ce6('0x6e')]});if(_0x6a8ee9){_0x6a8ee9['status']=_0x8ce6('0x75');}})[_0x8ce6('0x68')](function(){var _0x3eb715=util['format'](_0x8ce6('0x76'),_0x1e5383[_0x8ce6('0x64')]||_0x1e5383[_0x8ce6('0x62')],_0x1e5383[_0x8ce6('0x65')]||'wav');var _0x1db316=_['find'](_0x5e45d6[_0x8ce6('0x69')],{'filename':_0x8ce6('0x6a')+_0x3eb715[_0x8ce6('0x6c')]()});if(_0x1db316){_0x1db316['status']=_0x8ce6('0x75');}})[_0x8ce6('0x68')](function(){_0x2f78f7({'code':0xc8,'message':[_0x1e5383[_0x8ce6('0x62')],'StopMixMonitor\x20Success'][_0x8ce6('0x16')]('\x20')});})[_0x8ce6('0x1d')](function(_0x21d38a){_0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f5,[_0x1e5383[_0x8ce6('0x62')],_0x21d38a[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceQueuesChannels':function(_0x216dc3){return new Promise(function(_0x7314e5,_0xdb5554){var _0x55d7cd=_['values'](_0x39301d[_0x8ce6('0x77')]);_0x7314e5({'count':_0x55d7cd['length'],'rows':_0x55d7cd});});},'VoiceQueuesChannel':function(_0x46de33){var _0x1b2dbb=this;return new Promise(function(_0x393177,_0x239d38){var _0x3b4e8b=schema(properties[_0x8ce6('0x78')])[_0x8ce6('0x2')](_0x46de33);if(_0x3b4e8b['length']>0x0){return _0x239d38(_0x1b2dbb[_0x8ce6('0x12')](0x1f4,_[_0x8ce6('0x79')](_0x3b4e8b,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0x3eda12=_['find'](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x46de33[_0x8ce6('0x62')]});if(_0x3eda12){_0x393177(_0x3eda12);}else{return _0x239d38(_0x1b2dbb[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x11241e){var _0xb2b3c2=this;return new Promise(function(_0x39f31d,_0x47d17f){if(ami[_0x8ce6('0x1e')]()==![]){return _0x47d17f(_0xb2b3c2['error'](0x1f4,[config['asterisk']['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')]['join']('\x20')));}var _0x319588=schema(properties[_0x8ce6('0x7a')])[_0x8ce6('0x2')](_0x11241e);if(_0x319588[_0x8ce6('0x60')]>0x0){return _0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f4,_['map'](_0x319588,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0x31de73=_['find'](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x11241e['uniqueid']});if(_0x31de73&&_0x31de73['channel']){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x7b'),'channel':_0x31de73[_0x8ce6('0x63')]})['then'](function(_0xebe36d){_0x39f31d({'code':0xc8,'message':[_0x11241e[_0x8ce6('0x62')],_0xebe36d[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')});})['catch'](function(_0x39b33d){_0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f5,[_0x11241e[_0x8ce6('0x62')],_0x39b33d[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x267e30){var _0x20f27=this;return new Promise(function(_0x5382b6,_0x178bb1){if(ami[_0x8ce6('0x1e')]()==![]){return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}var _0x22bfd3=schema(properties[_0x8ce6('0x7c')])[_0x8ce6('0x2')](_0x267e30);if(_0x22bfd3[_0x8ce6('0x60')]>0x0){return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f4,_['map'](_0x22bfd3,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0xfc059b=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x267e30[_0x8ce6('0x62')]});if(_0xfc059b&&_0xfc059b[_0x8ce6('0x63')]){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x7d'),'channel':_0xfc059b[_0x8ce6('0x63')],'exten':_0x267e30[_0x8ce6('0x7e')],'context':_0x267e30[_0x8ce6('0x7f')]||_0xfc059b[_0x8ce6('0x7f')],'priority':0x1})[_0x8ce6('0x68')](function(_0x458f09){_0x5382b6({'code':0xc8,'message':[_0x267e30[_0x8ce6('0x62')],_0x458f09[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')});})[_0x8ce6('0x1d')](function(_0x1d3843){_0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f5,[_0x267e30[_0x8ce6('0x62')],_0x1d3843[_0x8ce6('0x4f')]['toLowerCase']()]['join']('\x20')));});}else{return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'Agents':function(_0xc07c3){return new Promise(function(_0x2429f2,_0x4bf699){var _0x13e61a=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0xe')]);_0x2429f2({'count':_0x13e61a[_0x8ce6('0x60')],'rows':_0x13e61a});});},'Telephones':function(_0x23fc30){return new Promise(function(_0x26a28e,_0x1213aa){var _0x1bdc7f=_['values'](_0x39301d[_0x8ce6('0x80')]);_0x26a28e({'count':_0x1bdc7f[_0x8ce6('0x60')],'rows':_0x1bdc7f});});},'Trunks':function(_0x156390){return new Promise(function(_0x6d3475,_0x36339c){var _0x15c5e1=_[_0x8ce6('0x5f')](_0x39301d['trunks']);_0x6d3475({'count':_0x15c5e1[_0x8ce6('0x60')],'rows':_0x15c5e1});});},'OutboundChannels':function(_0x5e31b4){return new Promise(function(_0xc25857,_0x19d8a8){var _0x1587c7=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0x81')]);_0xc25857({'count':_0x1587c7[_0x8ce6('0x60')],'rows':_0x1587c7});});},'Outbound':function(_0x3616bc){return new Promise(function(_0x444d6b,_0x31bfc4){_0x444d6b(_0x39301d[_0x8ce6('0x2f')]);});},'Campaigns':function(_0x285c3d){return new Promise(function(_0x2172af,_0x12a792){var _0x212a7a=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0x82')]);_0x2172af({'count':_0x212a7a['length'],'rows':_0x212a7a});});},'VoiceQueuesPreview':function(_0x3454b9){var _0x2a6fb=this;return new Promise(function(_0x598830,_0x211cfc){_0x5cd417[_0x8ce6('0x83')](_0x3454b9['id'])[_0x8ce6('0x68')](function(_0x59b718){_0x598830({'code':0xc8,'message':_0x59b718[_0x8ce6('0x4f')]});})['catch'](function(_0x54d62c){_0x211cfc(_0x2a6fb['error'](0x1f4,_0x54d62c[_0x8ce6('0x4f')]));});});},'EventManager':function(_0x4c5a19){var _0x2eb897=this;return new Promise(function(_0x3c6352,_0x425649){if(!_0x4c5a19[_0x8ce6('0x84')]){return _0x425649(_0x2eb897['error'](0x1f4,_0x8ce6('0x85')));}ami[_0x8ce6('0x86')](_0x8ce6('0x87')+_0x4c5a19['event'],_0x4c5a19[_0x8ce6('0x4f')]);_0x3c6352({'code':0xc8,'message':_0x4c5a19});});},'FaxAccounts':function(_0x470dd9){return new Promise(function(_0x2817bd,_0x3e4f27){var _0x5b20db=_[_0x8ce6('0x5f')](_0x39301d['faxAccounts']);_0x2817bd({'count':_0x5b20db[_0x8ce6('0x60')],'rows':_0x5b20db});});},'SendFax':function(_0x59a21d){var _0xda8278=this;return new Promise(function(_0x50cf5b,_0x46b34a){_0x116e0a['send'](_0x59a21d)[_0x8ce6('0x68')](function(_0x27ba25){_0x50cf5b({'code':0xc8,'message':_0x27ba25[_0x8ce6('0x4f')]});})[_0x8ce6('0x1d')](function(_0x529af4){_0x46b34a(_0xda8278['error'](0x1f4,_0x529af4['message']));});});},'CheckAfterSend':function(_0x29927a){var _0x3dec6a=this;return new Promise(function(_0x41bb74,_0x26530e){_0x116e0a[_0x8ce6('0x88')](_0x29927a)[_0x8ce6('0x68')](function(_0x52ba74){_0x41bb74({'code':0xc8,'message':_0x52ba74[_0x8ce6('0x4f')]});})[_0x8ce6('0x1d')](function(_0xe3d0c3){_0x26530e(_0x3dec6a[_0x8ce6('0x12')](0x1f4,_0xe3d0c3[_0x8ce6('0x4f')]));});});}};var _0x2e4ae1=jayson[_0x8ce6('0x89')](_0x4e5471)[_0x8ce6('0x8a')]();_0x2e4ae1['on'](_0x8ce6('0x12'),function(_0x286648){return _0x4fed90(_0x286648);});_0x2e4ae1['listen'](0x232a,_0x8ce6('0x8b'),function(){console[_0x8ce6('0x8c')](_0x8ce6('0x8d'),0x232a);return _0x10b3ca(_0x8ce6('0x8e')+0x232a);});});};
\ No newline at end of file
+var _0x7b84=['QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Action','catch','command','Command','then','message','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','sumBillable','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','map','uniqueid','%s.%s','wav','channel','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','status','stop','filename','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','context','trunks','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../ami','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause'];(function(_0x1f2477,_0x474649){var _0x114c5e=function(_0x43f657){while(--_0x43f657){_0x1f2477['push'](_0x1f2477['shift']());}};_0x114c5e(++_0x474649);}(_0x7b84,0x17c));var _0x47b8=function(_0x32a8ea,_0x10fb11){_0x32a8ea=_0x32a8ea-0x0;var _0x51868e=_0x7b84[_0x32a8ea];return _0x51868e;};'use strict';var _=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var jayson=require(_0x47b8('0x2'));var schema=require(_0x47b8('0x3'));var BPromise=require(_0x47b8('0x4'));var moment=require(_0x47b8('0x5'));var config=require(_0x47b8('0x6'));var properties=require('../properties');var ami=require(_0x47b8('0x7'));exports[_0x47b8('0x8')]=function(_0x2279ea,_0x7013d7,_0x2e6853){return new BPromise(function(_0xafe88a,_0x53e656){var _0x3867ca={'QueuePause':function(_0x3ce846){return new Promise(function(_0x46245a,_0xb845c9){var _0x2289d5=util[_0x47b8('0x9')](_0x47b8('0xa'),_0x47b8('0xb'),_0x3ce846[_0x47b8('0xc')]);if(_0x2279ea[_0x47b8('0xd')]&&_0x2279ea[_0x47b8('0xd')][_0x2289d5]&&_0x2279ea[_0x47b8('0xd')][_0x2289d5][_0x47b8('0xe')]){_0x2279ea[_0x47b8('0xd')][_0x2289d5][_0x47b8('0xf')]();}if(_0x2279ea[_0x47b8('0x10')][_0x2289d5]){_0x2279ea[_0x47b8('0x10')][_0x2289d5][_0x47b8('0x11')]({'statePause':_0x3ce846[_0x47b8('0x12')]?!![]:![]});}_0x46245a({'code':0xc8,'message':_0x47b8('0x13')});});},'Reload':function(_0x1edb4b){var _0x127d42=this;return new Promise(function(_0x2d1aaf,_0x268440){if(ami[_0x47b8('0x14')]()==![]){return _0x268440(_0x127d42[_0x47b8('0x15')](0x1f4,[config[_0x47b8('0x16')]['ip'],config['asterisk'][_0x47b8('0x17')],_0x47b8('0x18')][_0x47b8('0x19')]('\x20')));}_0x1edb4b=_[_0x47b8('0x1a')](_0x1edb4b,_[_0x47b8('0x1b')](properties[_0x47b8('0x1c')]));_0x1edb4b[_0x47b8('0x1d')]='Reload';return ami[_0x47b8('0x1e')](_0x1edb4b)['then'](function(_0x525fd6){_0x2d1aaf({'code':0xc8,'message':_0x525fd6['message']});})[_0x47b8('0x1f')](function(_0x36faf1){_0x268440(_0x127d42[_0x47b8('0x15')](0x1f5,_0x36faf1['message']));});});},'Command':function(_0x502a23){var _0x4f6716=this;return new Promise(function(_0x1c5bfd,_0x5531a2){if(ami[_0x47b8('0x14')]()==![]){return _0x5531a2(_0x4f6716[_0x47b8('0x15')](0x1f4,[config[_0x47b8('0x16')]['ip'],config[_0x47b8('0x16')]['username'],_0x47b8('0x18')][_0x47b8('0x19')]('\x20')));}_0x502a23=_[_0x47b8('0x1a')](_0x502a23,_0x47b8('0x20'));_0x502a23[_0x47b8('0x1d')]=_0x47b8('0x21');return ami['Action'](_0x502a23)[_0x47b8('0x22')](function(_0x2a22e3){_0x1c5bfd({'code':0xc8,'message':_0x2a22e3['content']});})[_0x47b8('0x1f')](function(_0x247429){_0x5531a2(_0x4f6716[_0x47b8('0x15')](0x1f5,_0x247429[_0x47b8('0x23')]));});});},'VoiceQueues':function(_0x5604c9){return new Promise(function(_0x35b327,_0x332c23){var _0x319d17=[];for(var _0x3e3de0 in _0x2279ea[_0x47b8('0x24')]){if(_0x2279ea[_0x47b8('0x24')][_0x47b8('0x25')](_0x3e3de0)){var _0x568c1e=_0x2279ea[_0x47b8('0x24')][_0x3e3de0];var _0x1f719a={'id':_0x568c1e['id'],'name':_0x568c1e['name'],'strategy':_0x568c1e[_0x47b8('0x26')],'answered':_0x568c1e[_0x47b8('0x27')],'available':_0x568c1e[_0x47b8('0x28')],'loggedIn':_0x568c1e[_0x47b8('0x29')],'pTalking':_0x568c1e['pTalking'],'sumBillable':_0x568c1e[_0x47b8('0x2a')],'sumDuration':_0x568c1e['sumDuration'],'sumHoldTime':_0x568c1e[_0x47b8('0x2b')]||0x0,'talking':_0x568c1e[_0x47b8('0x2c')],'total':_0x568c1e[_0x47b8('0x2d')],'type':_0x568c1e[_0x47b8('0x2e')],'unmanaged':_0x568c1e['unmanaged'],'abandoned':_0x568c1e[_0x47b8('0x2f')],'waiting':_0x568c1e[_0x47b8('0x30')],'loggedInDb':_0x568c1e[_0x47b8('0x31')]};if(_0x568c1e[_0x47b8('0x2e')]===_0x47b8('0x32')){_0x1f719a[_0x47b8('0x33')]=_0x568c1e['dialActive'];_0x1f719a['dialMethod']=_0x568c1e['dialMethod'];_0x1f719a[_0x47b8('0x34')]=_0x568c1e[_0x47b8('0x34')];_0x1f719a[_0x47b8('0x35')]=_0x568c1e['dialOriginateCallerIdNumber'];_0x1f719a['dialOriginateTimeout']=_0x568c1e['dialOriginateTimeout'];_0x1f719a['dialPrefix']=_0x568c1e[_0x47b8('0x36')];_0x1f719a[_0x47b8('0x37')]=_0x568c1e[_0x47b8('0x37')];_0x1f719a[_0x47b8('0x38')]=_0x568c1e[_0x47b8('0x38')];_0x1f719a[_0x47b8('0x39')]=_0x568c1e[_0x47b8('0x39')];_0x1f719a[_0x47b8('0x3a')]=_0x568c1e[_0x47b8('0x3a')];_0x1f719a['outboundBusyCallsDay']=_0x568c1e['outboundBusyCallsDay'];_0x1f719a[_0x47b8('0x3b')]=_0x568c1e[_0x47b8('0x3b')];_0x1f719a['outboundDropCallsDayACS']=_0x568c1e['outboundDropCallsDayACS'];_0x1f719a[_0x47b8('0x3c')]=_0x568c1e[_0x47b8('0x3c')];_0x1f719a[_0x47b8('0x3d')]=_0x568c1e['outboundDropCallsDayTimeout'];_0x1f719a[_0x47b8('0x3e')]=_0x568c1e[_0x47b8('0x3e')];_0x1f719a['outboundNoSuchCallsDay']=_0x568c1e['outboundNoSuchCallsDay'];_0x1f719a['outboundOriginateFailureCallsDay']=_0x568c1e['outboundOriginateFailureCallsDay'];_0x1f719a[_0x47b8('0x3f')]=_0x568c1e[_0x47b8('0x3f')];_0x1f719a[_0x47b8('0x40')]=_0x568c1e[_0x47b8('0x40')];_0x1f719a[_0x47b8('0x41')]=_0x568c1e[_0x47b8('0x41')];_0x1f719a['predictiveIntervalAnsweredCalls']=_0x568c1e['predictiveIntervalAnsweredCalls'];_0x1f719a[_0x47b8('0x42')]=_0x568c1e[_0x47b8('0x42')];_0x1f719a[_0x47b8('0x43')]=_0x568c1e['predictiveIntervalAvgTalktime'];_0x1f719a['predictiveIntervalDroppedCallsCallersExit']=_0x568c1e[_0x47b8('0x44')];_0x1f719a[_0x47b8('0x45')]=_0x568c1e['predictiveIntervalDroppedCallsTimeout'];_0x1f719a[_0x47b8('0x46')]=_0x568c1e[_0x47b8('0x46')];_0x1f719a['predictiveIntervalErlangCallsDroppedCalls']=_0x568c1e['predictiveIntervalErlangCallsDroppedCalls'];_0x1f719a['predictiveIntervalHitRate']=_0x568c1e['predictiveIntervalHitRate'];_0x1f719a[_0x47b8('0x47')]=_0x568c1e[_0x47b8('0x47')];_0x1f719a[_0x47b8('0x48')]=_0x568c1e[_0x47b8('0x48')];_0x1f719a[_0x47b8('0x49')]=_0x568c1e['predictiveIntervalAvailable'];_0x1f719a[_0x47b8('0x4a')]=_0x568c1e['predictiveIntervalTotalCalls'];_0x1f719a[_0x47b8('0x23')]=_0x568c1e[_0x47b8('0x23')];_0x1f719a[_0x47b8('0x4b')]=_0x568c1e['originated'];_0x1f719a[_0x47b8('0x4c')]=_0x568c1e[_0x47b8('0x4c')];_0x1f719a[_0x47b8('0x4d')]=_0x568c1e[_0x47b8('0x4d')];_0x1f719a[_0x47b8('0x4e')]=_0x568c1e[_0x47b8('0x4e')];_0x1f719a[_0x47b8('0x4f')]=_0x568c1e['erlangBusyFactor'];_0x1f719a[_0x47b8('0x50')]=_0x568c1e['startPredictive'];_0x1f719a[_0x47b8('0x51')]=_0x568c1e[_0x47b8('0x51')];}if(_0x568c1e[_0x47b8('0x52')]){_0x1f719a[_0x47b8('0x52')]={'id':_0x568c1e[_0x47b8('0x52')]['id'],'name':_0x568c1e[_0x47b8('0x52')]['name'],'active':_0x568c1e['Trunk'][_0x47b8('0x53')],'callerid':_0x568c1e[_0x47b8('0x52')][_0x47b8('0x54')]};}if(_0x568c1e['Interval']){_0x1f719a[_0x47b8('0x55')]={'id':_0x568c1e['Interval']['id'],'name':_0x568c1e[_0x47b8('0x55')][_0x47b8('0xc')]};}_0x319d17[_0x47b8('0x56')](_0x1f719a);}}_0x35b327({'count':_0x319d17[_0x47b8('0x57')],'rows':_0x319d17});});},'UpdateVoiceQueue':function(_0x3f13ae){return new Promise(function(_0x5c26c7,_0x40ff24){var _0xfb8041=_[_0x47b8('0x58')](_0x2279ea[_0x47b8('0x24')],{'id':parseInt(_0x3f13ae['id'])});var _0x1dce38=_[_0x47b8('0x59')](_0x3f13ae,['id']);if(_0xfb8041){for(var _0x46e648 in _0x1dce38){if(typeof _0x1dce38[_0x46e648]!=='undefined'&&typeof _0xfb8041[_0x46e648]!==_0x47b8('0x5a')){_0xfb8041[_0x46e648]=_0x1dce38[_0x46e648];}}_0x5c26c7(_0xfb8041);}else{_0x40ff24();}});},'VoiceChannels':function(_0x4bc93d){return new Promise(function(_0x4020f2,_0x2b46da){var _0x4a46eb=_[_0x47b8('0x5b')](_0x2279ea[_0x47b8('0x5c')]);_0x4020f2({'count':_0x4a46eb[_0x47b8('0x57')],'rows':_0x4a46eb});});},'VoiceChannelMixMonitor':function(_0x33ae87){var _0x223443=this;return new Promise(function(_0x167f24,_0x1b1733){if(ami[_0x47b8('0x14')]()==![]){return _0x1b1733(_0x223443['error'](0x1f4,[config[_0x47b8('0x16')]['ip'],config[_0x47b8('0x16')][_0x47b8('0x17')],'ami\x20disconnected'][_0x47b8('0x19')]('\x20')));}var _0x5645e6=schema(properties[_0x47b8('0x5d')])[_0x47b8('0x3')](_0x33ae87);if(_0x5645e6['length']>0x0){return _0x1b1733(_0x223443[_0x47b8('0x15')](0x1f4,_[_0x47b8('0x5e')](_0x5645e6,'message')[_0x47b8('0x19')](',\x20')));}var _0x263698=_[_0x47b8('0x58')](_0x2279ea['channels'],{'uniqueid':_0x33ae87[_0x47b8('0x5f')]});if(_0x263698&&_0x263698['channel']){var _0x178427=util['format'](_0x47b8('0x60'),_0x33ae87['filename']||_0x33ae87[_0x47b8('0x5f')],_0x33ae87[_0x47b8('0x9')]||_0x47b8('0x61'));return ami[_0x47b8('0x1e')]({'action':'MixMonitor','channel':_0x263698[_0x47b8('0x62')],'file':_0x178427,'options':_0x47b8('0x63')})[_0x47b8('0x22')](function(_0x115da1){var _0x586cf6=_[_0x47b8('0x58')](_0x263698[_0x47b8('0x64')],{'filename':_0x47b8('0x65')+_0x178427['toLowerCase']()});if(_['isNil'](_0x586cf6)){_0x263698[_0x47b8('0x64')]['push']({'filename':_0x47b8('0x65')+_0x178427[_0x47b8('0x66')](),'createdAt':moment()[_0x47b8('0x9')](_0x47b8('0x67')),'mixmonitorid':_0x115da1['mixmonitorid'],'status':_0x47b8('0x68')});}else{_0x586cf6[_0x47b8('0x69')]=_0x115da1[_0x47b8('0x69')];_0x586cf6['status']='rec';}_0x167f24({'code':0xc8,'message':[_0x33ae87[_0x47b8('0x5f')],_0x47b8('0x6a'),_0x115da1[_0x47b8('0x69')]]['join']('\x20'),'mixmonitorid':_0x115da1[_0x47b8('0x69')]});})[_0x47b8('0x1f')](function(_0x23a759){_0x1b1733(_0x223443[_0x47b8('0x15')](0x1f5,[_0x33ae87['uniqueid'],_0x23a759[_0x47b8('0x23')][_0x47b8('0x66')]()][_0x47b8('0x19')]('\x20')));});}else{return _0x1b1733(_0x223443['error'](0x1f5,_0x47b8('0x6b')));}});},'VoiceChannelStopMixMonitor':function(_0x480d8c){var _0x1311aa=this;return new Promise(function(_0x4fc8ac,_0x447ff7){if(ami[_0x47b8('0x14')]()==![]){return _0x447ff7(_0x1311aa[_0x47b8('0x15')](0x1f4,[config['asterisk']['ip'],config[_0x47b8('0x16')][_0x47b8('0x17')],'ami\x20disconnected'][_0x47b8('0x19')]('\x20')));}var _0x4e1aa7=schema(properties['voicechannel'])['validate'](_0x480d8c);if(_0x4e1aa7[_0x47b8('0x57')]>0x0){return _0x447ff7(_0x1311aa['error'](0x1f4,_[_0x47b8('0x5e')](_0x4e1aa7,'message')[_0x47b8('0x19')](',\x20')));}var _0x4be9dc=_[_0x47b8('0x58')](_0x2279ea[_0x47b8('0x5c')],{'uniqueid':_0x480d8c[_0x47b8('0x5f')]});if(_0x4be9dc){return BPromise[_0x47b8('0x6c')]()[_0x47b8('0x22')](function(){if(_0x4be9dc['channel']){return ami[_0x47b8('0x1e')]({'action':_0x47b8('0x6d'),'channel':_0x4be9dc[_0x47b8('0x62')],'mixmonitorid':_0x480d8c[_0x47b8('0x69')]})[_0x47b8('0x1f')](function(_0x4ada28){});}})[_0x47b8('0x22')](function(){if(_0x4be9dc[_0x47b8('0x6e')]){return ami['Action']({'action':_0x47b8('0x6d'),'channel':_0x4be9dc[_0x47b8('0x6e')],'mixmonitorid':_0x480d8c[_0x47b8('0x69')]})[_0x47b8('0x1f')](function(_0x5f3771){});}})[_0x47b8('0x22')](function(_0x226d29){var _0x44b461=_[_0x47b8('0x58')](_0x4be9dc[_0x47b8('0x64')],{'mixmonitorid':_0x480d8c[_0x47b8('0x69')]});if(_0x44b461){_0x44b461[_0x47b8('0x6f')]=_0x47b8('0x70');}})[_0x47b8('0x22')](function(){var _0xd55e85=util[_0x47b8('0x9')](_0x47b8('0x60'),_0x480d8c[_0x47b8('0x71')]||_0x480d8c[_0x47b8('0x5f')],_0x480d8c[_0x47b8('0x9')]||_0x47b8('0x61'));var _0x5e4b95=_[_0x47b8('0x58')](_0x4be9dc['monitors'],{'filename':_0x47b8('0x65')+_0xd55e85['toLowerCase']()});if(_0x5e4b95){_0x5e4b95[_0x47b8('0x6f')]=_0x47b8('0x70');}})[_0x47b8('0x22')](function(){_0x4fc8ac({'code':0xc8,'message':[_0x480d8c[_0x47b8('0x5f')],'StopMixMonitor\x20Success'][_0x47b8('0x19')]('\x20')});})[_0x47b8('0x1f')](function(_0x5a7cbe){_0x447ff7(_0x1311aa[_0x47b8('0x15')](0x1f5,[_0x480d8c[_0x47b8('0x5f')],_0x5a7cbe[_0x47b8('0x23')][_0x47b8('0x66')]()][_0x47b8('0x19')]('\x20')));});}else{return _0x447ff7(_0x1311aa[_0x47b8('0x15')](0x1f5,_0x47b8('0x6b')));}});},'VoiceQueuesChannels':function(_0x1a38fe){return new Promise(function(_0x56545b,_0x355d01){var _0x1246f9=_[_0x47b8('0x5b')](_0x2279ea[_0x47b8('0x72')]);_0x56545b({'count':_0x1246f9[_0x47b8('0x57')],'rows':_0x1246f9});});},'VoiceQueuesChannel':function(_0x3cf1b6){var _0x547df3=this;return new Promise(function(_0x578a3e,_0x1829f8){var _0xe2c20c=schema(properties[_0x47b8('0x73')])['validate'](_0x3cf1b6);if(_0xe2c20c['length']>0x0){return _0x1829f8(_0x547df3[_0x47b8('0x15')](0x1f4,_[_0x47b8('0x5e')](_0xe2c20c,_0x47b8('0x23'))['join'](',\x20')));}var _0x6ed009=_[_0x47b8('0x58')](_0x2279ea[_0x47b8('0x72')],{'uniqueid':_0x3cf1b6[_0x47b8('0x5f')]});if(_0x6ed009){_0x578a3e(_0x6ed009);}else{return _0x1829f8(_0x547df3[_0x47b8('0x15')](0x1f5,_0x47b8('0x6b')));}});},'VoiceQueuesChannelHangup':function(_0xbac225){var _0x4ad83a=this;return new Promise(function(_0xde73a6,_0x2930cc){if(ami['isConnected']()==![]){return _0x2930cc(_0x4ad83a[_0x47b8('0x15')](0x1f4,[config[_0x47b8('0x16')]['ip'],config['asterisk'][_0x47b8('0x17')],_0x47b8('0x18')]['join']('\x20')));}var _0xdf662d=schema(properties[_0x47b8('0x74')])['validate'](_0xbac225);if(_0xdf662d[_0x47b8('0x57')]>0x0){return _0x2930cc(_0x4ad83a['error'](0x1f4,_['map'](_0xdf662d,_0x47b8('0x23'))[_0x47b8('0x19')](',\x20')));}var _0x2ded9a=_[_0x47b8('0x58')](_0x2279ea[_0x47b8('0x72')],{'uniqueid':_0xbac225[_0x47b8('0x5f')]});if(_0x2ded9a&&_0x2ded9a[_0x47b8('0x62')]){return ami[_0x47b8('0x1e')]({'action':_0x47b8('0x75'),'channel':_0x2ded9a['channel']})['then'](function(_0x341bf5){_0xde73a6({'code':0xc8,'message':[_0xbac225[_0x47b8('0x5f')],_0x341bf5['message'][_0x47b8('0x66')]()]['join']('\x20')});})[_0x47b8('0x1f')](function(_0x116691){_0x2930cc(_0x4ad83a[_0x47b8('0x15')](0x1f5,[_0xbac225[_0x47b8('0x5f')],_0x116691[_0x47b8('0x23')][_0x47b8('0x66')]()][_0x47b8('0x19')]('\x20')));});}else{return _0x2930cc(_0x4ad83a[_0x47b8('0x15')](0x1f5,_0x47b8('0x6b')));}});},'VoiceQueuesChannelRedirect':function(_0x5e4b92){var _0x437cc5=this;return new Promise(function(_0x590577,_0x22f163){if(ami[_0x47b8('0x14')]()==![]){return _0x22f163(_0x437cc5['error'](0x1f4,[config[_0x47b8('0x16')]['ip'],config[_0x47b8('0x16')][_0x47b8('0x17')],_0x47b8('0x18')][_0x47b8('0x19')]('\x20')));}var _0x1dc765=schema(properties['voicequeuechannelredirect'])[_0x47b8('0x3')](_0x5e4b92);if(_0x1dc765[_0x47b8('0x57')]>0x0){return _0x22f163(_0x437cc5[_0x47b8('0x15')](0x1f4,_[_0x47b8('0x5e')](_0x1dc765,_0x47b8('0x23'))[_0x47b8('0x19')](',\x20')));}var _0x398d44=_['find'](_0x2279ea['queueChannels'],{'uniqueid':_0x5e4b92[_0x47b8('0x5f')]});if(_0x398d44&&_0x398d44[_0x47b8('0x62')]){return ami['Action']({'action':'Redirect','channel':_0x398d44[_0x47b8('0x62')],'exten':_0x5e4b92['exten'],'context':_0x5e4b92[_0x47b8('0x76')]||_0x398d44['context'],'priority':0x1})['then'](function(_0x438fc1){_0x590577({'code':0xc8,'message':[_0x5e4b92['uniqueid'],_0x438fc1['message'][_0x47b8('0x66')]()][_0x47b8('0x19')]('\x20')});})['catch'](function(_0x83c650){_0x22f163(_0x437cc5[_0x47b8('0x15')](0x1f5,[_0x5e4b92[_0x47b8('0x5f')],_0x83c650['message']['toLowerCase']()][_0x47b8('0x19')]('\x20')));});}else{return _0x22f163(_0x437cc5[_0x47b8('0x15')](0x1f5,_0x47b8('0x6b')));}});},'Agents':function(_0x19354e){return new Promise(function(_0x23bf13,_0x5237c3){var _0x41e4a7=_[_0x47b8('0x5b')](_0x2279ea[_0x47b8('0x10')]);_0x23bf13({'count':_0x41e4a7['length'],'rows':_0x41e4a7});});},'Telephones':function(_0x50cd3d){return new Promise(function(_0x2dab51,_0x182d57){var _0x37effe=_['values'](_0x2279ea['telephones']);_0x2dab51({'count':_0x37effe[_0x47b8('0x57')],'rows':_0x37effe});});},'Trunks':function(_0x5baf1a){return new Promise(function(_0x9d58bc,_0x45c6e0){var _0x5ab3be=_[_0x47b8('0x5b')](_0x2279ea[_0x47b8('0x77')]);_0x9d58bc({'count':_0x5ab3be['length'],'rows':_0x5ab3be});});},'OutboundChannels':function(_0x57e1f8){return new Promise(function(_0x398685,_0x4ef77b){var _0x4aa570=_[_0x47b8('0x5b')](_0x2279ea[_0x47b8('0x78')]);_0x398685({'count':_0x4aa570[_0x47b8('0x57')],'rows':_0x4aa570});});},'Outbound':function(_0x5703e3){return new Promise(function(_0x3559f4,_0x36e455){_0x3559f4(_0x2279ea[_0x47b8('0x32')]);});},'Campaigns':function(_0xe6cc93){return new Promise(function(_0x2faf37,_0x43c5ce){var _0x34e2cb=_['values'](_0x2279ea[_0x47b8('0x79')]);_0x2faf37({'count':_0x34e2cb[_0x47b8('0x57')],'rows':_0x34e2cb});});},'VoiceQueuesPreview':function(_0x347240){var _0x3c784e=this;return new Promise(function(_0x4281be,_0x289fa7){_0x7013d7[_0x47b8('0x7a')](_0x347240['id'])[_0x47b8('0x22')](function(_0x2136d0){_0x4281be({'code':0xc8,'message':_0x2136d0[_0x47b8('0x23')]});})[_0x47b8('0x1f')](function(_0x1b646e){_0x289fa7(_0x3c784e[_0x47b8('0x15')](0x1f4,_0x1b646e[_0x47b8('0x23')]));});});},'EventManager':function(_0x3df892){var _0x199933=this;return new Promise(function(_0x1524e6,_0x4690a5){if(!_0x3df892[_0x47b8('0x7b')]){return _0x4690a5(_0x199933[_0x47b8('0x15')](0x1f4,_0x47b8('0x7c')));}ami['emit'](_0x47b8('0x7d')+_0x3df892[_0x47b8('0x7b')],_0x3df892['message']);_0x1524e6({'code':0xc8,'message':_0x3df892});});},'FaxAccounts':function(_0xc2596d){return new Promise(function(_0xca5d3d,_0x349cc4){var _0x4dbf55=_[_0x47b8('0x5b')](_0x2279ea[_0x47b8('0x7e')]);_0xca5d3d({'count':_0x4dbf55[_0x47b8('0x57')],'rows':_0x4dbf55});});},'SendFax':function(_0xe0e869){var _0x3565ec=this;return new Promise(function(_0xd0a81a,_0xa7efe3){_0x2e6853[_0x47b8('0x7f')](_0xe0e869)[_0x47b8('0x22')](function(_0x37aa38){_0xd0a81a({'code':0xc8,'message':_0x37aa38[_0x47b8('0x23')]});})['catch'](function(_0x2ce472){_0xa7efe3(_0x3565ec[_0x47b8('0x15')](0x1f4,_0x2ce472[_0x47b8('0x23')]));});});},'CheckAfterSend':function(_0x3ed98e){var _0x3e1971=this;return new Promise(function(_0xc10a53,_0x579df5){_0x2e6853[_0x47b8('0x80')](_0x3ed98e)[_0x47b8('0x22')](function(_0x2db02c){_0xc10a53({'code':0xc8,'message':_0x2db02c['message']});})[_0x47b8('0x1f')](function(_0x542c38){_0x579df5(_0x3e1971[_0x47b8('0x15')](0x1f4,_0x542c38[_0x47b8('0x23')]));});});}};var _0x258f13=jayson[_0x47b8('0x81')](_0x3867ca)[_0x47b8('0x82')]();_0x258f13['on'](_0x47b8('0x15'),function(_0x74851f){return _0x53e656(_0x74851f);});_0x258f13['listen'](0x232a,_0x47b8('0x83'),function(){console[_0x47b8('0x84')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0xafe88a('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index b0651f6..830dffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6086=['../../rpc/cmContact','redis','defaults','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum','mobile','ListId','createdAt','scheduledAt','updatedAt','union','resolve','then','isEmpty','length','uniqueid','join','data4','isNil','firstName','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Autocreate\x20disabled','calleridname','format','name','trigger:%s','action','toLowerCase','merge','lodash','../../../../config/environment','../../../../config/logger','trigger'];(function(_0x3050b5,_0x182c6a){var _0x37cceb=function(_0x49b797){while(--_0x49b797){_0x3050b5['push'](_0x3050b5['shift']());}};_0x37cceb(++_0x182c6a);}(_0x6086,0x95));var _0x6608=function(_0xa49986,_0x13e35d){_0xa49986=_0xa49986-0x0;var _0x4d56c2=_0x6086[_0xa49986];return _0x4d56c2;};'use strict';var _=require(_0x6608('0x0'));var BPromise=require('bluebird');var Redis=require('ioredis');var util=require('util');var config=require(_0x6608('0x1'));var logger=require(_0x6608('0x2'))(_0x6608('0x3'));var cmContactRpc=require(_0x6608('0x4'));config[_0x6608('0x5')]=_[_0x6608('0x6')](config[_0x6608('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x6608('0x7'))(new Redis(config['redis']));function emit(_0xa0d2d1,_0x555e49,_0x509689,_0x40e1e7,_0x4572dc){logger[_0x6608('0x8')](_0x6608('0x9'),_0xa0d2d1,_0x555e49['id'],_0x509689,_0x40e1e7,JSON[_0x6608('0xa')](_0x4572dc));io['to'](_0x509689)[_0x6608('0xb')](_0x40e1e7,_0x4572dc);}exports[_0x6608('0xc')]=function(_0x84f53f,_0x30af60,_0x54cedc,_0x3f549e){var _0x3abf1a,_0x3745db;var _0x5c1272={};var _0x36b3c7=Number(_0x54cedc[_0x6608('0xd')]);var _0x238dd9=_0x54cedc[_0x6608('0xe')]?Boolean(Number(_0x54cedc[_0x6608('0xe')])):![];var _0x20d1b9;if(_0x3f549e[_0x6608('0xf')]){_0x5c1272['id']=_0x3f549e['xmd-contactid'];}if(!_0x5c1272['id']){_0x5c1272['ListId']=_0x36b3c7;_0x20d1b9=_0x54cedc[_0x6608('0x10')]&&_0x54cedc[_0x6608('0x10')]!=='0'?_0x54cedc[_0x6608('0x10')][_0x6608('0x11')](','):[_0x6608('0x12')];_0x5c1272[_0x6608('0x13')]=_[_0x6608('0x14')](_0x20d1b9,function(_0x2dff4c){var _0x4adb29={};_0x4adb29[_0x2dff4c]=_0x3f549e[_0x6608('0x15')]?_0x3f549e[_0x6608('0x16')]:_0x3f549e[_0x6608('0x17')];return _0x4adb29;});}var _0x204779=['id','firstName','lastName',_0x6608('0x12'),_0x6608('0x18'),'fax',_0x6608('0x19'),_0x6608('0x1a'),_0x6608('0x1b'),_0x6608('0x1c')];var _0x1931dc=_[_0x6608('0x1d')](_0x204779,_0x20d1b9);BPromise[_0x6608('0x1e')]()[_0x6608('0x1f')](cmContactRpc['getContacts']({'attributes':_0x1931dc,'where':_0x5c1272}))[_0x6608('0x1f')](function(_0xac0eb9){_0x3745db=_0xac0eb9;if(!_[_0x6608('0x20')](_0x3745db)){if(_0x3745db[_0x6608('0x21')]===0x1){_0x3abf1a=_0x3745db[0x0];logger[_0x6608('0x8')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x3f549e[_0x6608('0x22')],_0x30af60['id'],_0x3abf1a['id']);}else{logger[_0x6608('0x8')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x3f549e['uniqueid'],_0x30af60['id'],_[_0x6608('0x14')](_0x3745db,'id')[_0x6608('0x23')](','));}return;}else{logger[_0x6608('0x8')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x3f549e[_0x6608('0x22')],_0x30af60['id']);var _0x44c7a9={'ListId':_0x36b3c7};var _0x1974c8=_0x54cedc[_0x6608('0x24')]&&_0x54cedc[_0x6608('0x24')]!=='0'?_0x54cedc[_0x6608('0x24')]:'phone';if(_0x238dd9){logger[_0x6608('0x8')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x3f549e['uniqueid'],_0x30af60['id']);_0x44c7a9[_0x1974c8]=_['isNil'](_0x3f549e['routeId'])?_0x3f549e[_0x6608('0x17')]:_0x3f549e[_0x6608('0x16')];if(_[_0x6608('0x25')](_0x3f549e['routeId'])){_0x44c7a9[_0x6608('0x26')]=_0x3f549e['calleridname']&&_0x3f549e['calleridname']!==_0x6608('0x27')?_0x3f549e['calleridname']:_0x6608('0x28');}else{_0x44c7a9[_0x6608('0x26')]=_0x3f549e[_0x6608('0x29')]&&_0x3f549e[_0x6608('0x29')]!=='<unknown>'?_0x3f549e[_0x6608('0x29')]:_0x6608('0x28');}return BPromise[_0x6608('0x1e')]()[_0x6608('0x1f')](cmContactRpc['createContact'](_0x44c7a9))[_0x6608('0x1f')](function(_0x3ff07c){_0x3abf1a=_0x3ff07c;_0x3745db[_0x6608('0x2a')](_0x3ff07c);if(_0x3abf1a){logger['info']('[CM][%s][%s]\x20Contact\x20created:%s',_0x3f549e[_0x6608('0x22')],_0x30af60['id'],_0x3abf1a['id']);}return;});}else{logger[_0x6608('0x8')](_0x6608('0x2b'),_0x3f549e[_0x6608('0x22')],_0x30af60['id']);_0x44c7a9[_0x1974c8]=_['isNil'](_0x3f549e[_0x6608('0x15')])?_0x3f549e[_0x6608('0x17')]:_0x3f549e[_0x6608('0x16')];if(_['isNil'](_0x3f549e[_0x6608('0x15')])){_0x44c7a9[_0x6608('0x26')]=_0x3f549e['calleridname']&&_0x3f549e[_0x6608('0x2c')]!==_0x6608('0x27')?_0x3f549e[_0x6608('0x2c')]:_0x6608('0x28');}else{_0x44c7a9[_0x6608('0x26')]=_0x3f549e['destcalleridname']&&_0x3f549e[_0x6608('0x29')]!=='<unknown>'?_0x3f549e['destcalleridname']:_0x6608('0x28');}_0x3abf1a=_0x44c7a9;_0x3745db['push'](_0x44c7a9);return;}}})[_0x6608('0x1f')](function(){if(_0x84f53f){emit(_0x3f549e[_0x6608('0x22')],_0x30af60,util[_0x6608('0x2d')]('user:%s',_0x84f53f[_0x6608('0x2e')]),util[_0x6608('0x2d')](_0x6608('0x2f'),_0x54cedc[_0x6608('0x30')][_0x6608('0x31')]()),{'evt':_[_0x6608('0x32')](_0x3f549e,{'autoCreate':_0x238dd9}),'contact':_0x3abf1a===undefined?{}:_0x3abf1a,'contacts':_0x3745db['length']===0x0?undefined:_0x3745db});}});};
\ No newline at end of file
+var _0x2fce=['Unknown','firstName','destcalleridname','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','<unknown>','name','format','trigger:%s','action','toLowerCase','merge','lodash','ioredis','../../../../config/environment','../../../../config/logger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','stringify','emit','data1','data2','xmd-contactid','ListId','data3','split','$or','map','routeId','calleridnum','lastName','phone','mobile','createdAt','scheduledAt','union','resolve','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','destcalleridnum','calleridname'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2fce,0xb2));var _0xe2fc=function(_0x1d1fa1,_0x1d56a3){_0x1d1fa1=_0x1d1fa1-0x0;var _0x3f5618=_0x2fce[_0x1d1fa1];return _0x3f5618;};'use strict';var _=require(_0xe2fc('0x0'));var BPromise=require('bluebird');var Redis=require(_0xe2fc('0x1'));var util=require('util');var config=require(_0xe2fc('0x2'));var logger=require(_0xe2fc('0x3'))('trigger');var cmContactRpc=require(_0xe2fc('0x4'));config[_0xe2fc('0x5')]=_[_0xe2fc('0x6')](config[_0xe2fc('0x5')],{'host':_0xe2fc('0x7'),'port':0x18eb});var io=require(_0xe2fc('0x8'))(new Redis(config[_0xe2fc('0x5')]));function emit(_0x517f19,_0x2fc36a,_0x3ca067,_0x40e41f,_0xc86e32){logger[_0xe2fc('0x9')]('[CM][%s][%s]',_0x517f19,_0x2fc36a['id'],_0x3ca067,_0x40e41f,JSON[_0xe2fc('0xa')](_0xc86e32));io['to'](_0x3ca067)[_0xe2fc('0xb')](_0x40e41f,_0xc86e32);}exports['exec']=function(_0x19cd97,_0x4d2f64,_0x431e15,_0x1bf860){var _0xae24ab,_0x5d2082;var _0x470f24={};var _0x23c7c2=Number(_0x431e15[_0xe2fc('0xc')]);var _0x306114=_0x431e15[_0xe2fc('0xd')]?Boolean(Number(_0x431e15[_0xe2fc('0xd')])):![];var _0x2b9bd3;if(_0x1bf860[_0xe2fc('0xe')]){_0x470f24['id']=_0x1bf860[_0xe2fc('0xe')];}if(!_0x470f24['id']){_0x470f24[_0xe2fc('0xf')]=_0x23c7c2;_0x2b9bd3=_0x431e15[_0xe2fc('0x10')]&&_0x431e15[_0xe2fc('0x10')]!=='0'?_0x431e15[_0xe2fc('0x10')][_0xe2fc('0x11')](','):['phone'];_0x470f24[_0xe2fc('0x12')]=_[_0xe2fc('0x13')](_0x2b9bd3,function(_0x364d29){var _0x334626={};_0x334626[_0x364d29]=_0x1bf860[_0xe2fc('0x14')]?_0x1bf860['destcalleridnum']:_0x1bf860[_0xe2fc('0x15')];return _0x334626;});}var _0x578a5e=['id','firstName',_0xe2fc('0x16'),_0xe2fc('0x17'),_0xe2fc('0x18'),'fax',_0xe2fc('0xf'),_0xe2fc('0x19'),_0xe2fc('0x1a'),'updatedAt'];var _0x36330c=_[_0xe2fc('0x1b')](_0x578a5e,_0x2b9bd3);BPromise[_0xe2fc('0x1c')]()['then'](cmContactRpc['getContacts']({'attributes':_0x36330c,'where':_0x470f24}))[_0xe2fc('0x1d')](function(_0x4c6e85){_0x5d2082=_0x4c6e85;if(!_[_0xe2fc('0x1e')](_0x5d2082)){if(_0x5d2082[_0xe2fc('0x1f')]===0x1){_0xae24ab=_0x5d2082[0x0];logger[_0xe2fc('0x9')](_0xe2fc('0x20'),_0x1bf860[_0xe2fc('0x21')],_0x4d2f64['id'],_0xae24ab['id']);}else{logger[_0xe2fc('0x9')](_0xe2fc('0x22'),_0x1bf860[_0xe2fc('0x21')],_0x4d2f64['id'],_[_0xe2fc('0x13')](_0x5d2082,'id')[_0xe2fc('0x23')](','));}return;}else{logger[_0xe2fc('0x9')](_0xe2fc('0x24'),_0x1bf860[_0xe2fc('0x21')],_0x4d2f64['id']);var _0x1fd0fd={'ListId':_0x23c7c2};var _0xb18536=_0x431e15[_0xe2fc('0x25')]&&_0x431e15['data4']!=='0'?_0x431e15['data4']:_0xe2fc('0x17');if(_0x306114){logger[_0xe2fc('0x9')](_0xe2fc('0x26'),_0x1bf860[_0xe2fc('0x21')],_0x4d2f64['id']);_0x1fd0fd[_0xb18536]=_[_0xe2fc('0x27')](_0x1bf860[_0xe2fc('0x14')])?_0x1bf860[_0xe2fc('0x15')]:_0x1bf860[_0xe2fc('0x28')];if(_[_0xe2fc('0x27')](_0x1bf860['routeId'])){_0x1fd0fd['firstName']=_0x1bf860[_0xe2fc('0x29')]&&_0x1bf860[_0xe2fc('0x29')]!=='<unknown>'?_0x1bf860[_0xe2fc('0x29')]:_0xe2fc('0x2a');}else{_0x1fd0fd[_0xe2fc('0x2b')]=_0x1bf860['destcalleridname']&&_0x1bf860[_0xe2fc('0x2c')]!=='<unknown>'?_0x1bf860[_0xe2fc('0x2c')]:'Unknown';}return BPromise[_0xe2fc('0x1c')]()[_0xe2fc('0x1d')](cmContactRpc['createContact'](_0x1fd0fd))['then'](function(_0x3d1cdf){_0xae24ab=_0x3d1cdf;_0x5d2082[_0xe2fc('0x2d')](_0x3d1cdf);if(_0xae24ab){logger[_0xe2fc('0x9')](_0xe2fc('0x2e'),_0x1bf860[_0xe2fc('0x21')],_0x4d2f64['id'],_0xae24ab['id']);}return;});}else{logger['info'](_0xe2fc('0x2f'),_0x1bf860[_0xe2fc('0x21')],_0x4d2f64['id']);_0x1fd0fd[_0xb18536]=_[_0xe2fc('0x27')](_0x1bf860[_0xe2fc('0x14')])?_0x1bf860[_0xe2fc('0x15')]:_0x1bf860['destcalleridnum'];if(_[_0xe2fc('0x27')](_0x1bf860[_0xe2fc('0x14')])){_0x1fd0fd[_0xe2fc('0x2b')]=_0x1bf860['calleridname']&&_0x1bf860[_0xe2fc('0x29')]!==_0xe2fc('0x30')?_0x1bf860[_0xe2fc('0x29')]:_0xe2fc('0x2a');}else{_0x1fd0fd[_0xe2fc('0x2b')]=_0x1bf860[_0xe2fc('0x2c')]&&_0x1bf860['destcalleridname']!==_0xe2fc('0x30')?_0x1bf860['destcalleridname']:_0xe2fc('0x2a');}_0xae24ab=_0x1fd0fd;_0x5d2082[_0xe2fc('0x2d')](_0x1fd0fd);return;}}})[_0xe2fc('0x1d')](function(){if(_0x19cd97){emit(_0x1bf860[_0xe2fc('0x21')],_0x4d2f64,util['format']('user:%s',_0x19cd97[_0xe2fc('0x31')]),util[_0xe2fc('0x32')](_0xe2fc('0x33'),_0x431e15[_0xe2fc('0x34')][_0xe2fc('0x35')]()),{'evt':_[_0xe2fc('0x36')](_0x1bf860,{'autoCreate':_0x306114}),'contact':_0xae24ab===undefined?{}:_0xae24ab,'contacts':_0x5d2082[_0xe2fc('0x1f')]===0x0?undefined:_0x5d2082});}});};
\ No newline at end of file
index 38485f2..49bc6fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30e=['templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','info','stringify','emit','interface','checkTriggers','checkTrigger','merge','variables','Actions','toLowerCase','browser','data1','TemplateId','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','data6','winapp','winApplication','winArguments','format','user:%s','trigger:%s:%s','action','jscripty','trigger:%s','name','contactmanager','exec','integration','routeId','script','parse','query','search','replace','length','every','AllConditions','AnyConditions','some','checkConditions','channel','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','membername','lastevent','util','url','mustache','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','popup','triggers','agents','voiceQueues'];(function(_0x2519b6,_0x4bafa9){var _0x28b7b0=function(_0xdc366a){while(--_0xdc366a){_0x2519b6['push'](_0x2519b6['shift']());}};_0x28b7b0(++_0x4bafa9);}(_0xa30e,0x152));var _0xea30=function(_0x22fe5c,_0x28645c){_0x22fe5c=_0x22fe5c-0x0;var _0x17a217=_0xa30e[_0x22fe5c];return _0x17a217;};'use strict';var util=require(_0xea30('0x0'));var _=require('lodash');var url=require(_0xea30('0x1'));var Mustache=require(_0xea30('0x2'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require(_0xea30('0x3'));var script=require(_0xea30('0x4'));var config=require(_0xea30('0x5'));var logger=require(_0xea30('0x6'))(_0xea30('0x7'));var ami=require(_0xea30('0x8'));config[_0xea30('0x9')]=_[_0xea30('0xa')](config[_0xea30('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xea30('0xb'))(new Redis(config['redis']));var operators={'equals':function(_0x360bb2,_0x1470d9){return _0x360bb2==_0x1470d9;},'not_equals':function(_0x2c0356,_0x3d993d){return _0x2c0356!=_0x3d993d;}};var barAndWebActions=[_0xea30('0xc'),'url','winapp'];function Trigger(_0x1434dc){this[_0xea30('0xd')]=_0x1434dc[_0xea30('0xd')];this[_0xea30('0xe')]=_0x1434dc[_0xea30('0xe')];this[_0xea30('0xf')]=_0x1434dc[_0xea30('0xf')];this[_0xea30('0x10')]=_0x1434dc[_0xea30('0x10')];this[_0xea30('0x11')]=_0x1434dc[_0xea30('0x11')];this[_0xea30('0x12')]=_0x1434dc[_0xea30('0x12')];this[_0xea30('0x13')]=_0x1434dc[_0xea30('0x13')];this['salesforceAccounts']=_0x1434dc[_0xea30('0x14')];this[_0xea30('0x15')]=_0x1434dc[_0xea30('0x15')];this['zohoAccounts']=_0x1434dc[_0xea30('0x16')];this[_0xea30('0x17')]=_0x1434dc[_0xea30('0x17')];this[_0xea30('0x18')]=_0x1434dc['vtigerAccounts'];this[_0xea30('0x19')]=_0x1434dc[_0xea30('0x19')];this[_0xea30('0x1a')]=_0x1434dc[_0xea30('0x1a')];this['freshsalesAccounts']=_0x1434dc[_0xea30('0x1b')];this[_0xea30('0x1c')]={'zendesk':this[_0xea30('0x12')],'salesforce':this[_0xea30('0x14')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0xea30('0x16')],'desk':this['deskAccounts'],'vtiger':this[_0xea30('0x18')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xea30('0x1b')],'servicenow':this[_0xea30('0x19')]};ami['on']('custom:agentcalled',this[_0xea30('0x1d')]['bind'](this));ami['on'](_0xea30('0x1e'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x20'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x21'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on']('custom:agentnosuchnumber',this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x22'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on']('custom:agentbusy',this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x23'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x24'),this[_0xea30('0x1d')]['bind'](this));ami['on'](_0xea30('0x25'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on'](_0xea30('0x26'),this['syncCustomEvent']['bind'](this));ami['on'](_0xea30('0x27'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on'](_0xea30('0x28'),this['syncAgentDial']['bind'](this));ami['on'](_0xea30('0x29'),this[_0xea30('0x2a')]['bind'](this));ami['on'](_0xea30('0x2b'),this[_0xea30('0x2a')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2c'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2d'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2e'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2f'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on']('custom:acceptmessage',this[_0xea30('0x1d')]['bind'](this));ami['on'](_0xea30('0x30'),this[_0xea30('0x1d')]['bind'](this));}Trigger[_0xea30('0x31')]['emit']=function(_0x3389f6,_0x3f1291,_0x1f58d7){logger[_0xea30('0x32')](_0x3389f6,_0x3f1291,JSON[_0xea30('0x33')](_0x1f58d7));io['to'](_0x3389f6)[_0xea30('0x34')](_0x3f1291,_0x1f58d7);};Trigger[_0xea30('0x31')]['syncCustomEvent']=function(_0x36d1d7){var _0x147a50=_['clone'](_0x36d1d7);this['checkTriggers'](_0x147a50);};Trigger['prototype']['syncAgentDial']=function(_0x1cf5ce){if(this['agents'][_0x1cf5ce[_0xea30('0x35')]]){this['syncCustomEvent'](_0x1cf5ce);}};Trigger[_0xea30('0x31')][_0xea30('0x36')]=function(_0x11d0e9){var _0x6a4bb6;for(var _0x404904 in this[_0xea30('0xd')]){if(this[_0xea30('0xd')]['hasOwnProperty'](_0x404904)){if(this['triggers'][_0x404904]['status']){_0x6a4bb6=this[_0xea30('0x37')](this[_0xea30('0xd')][_0x404904],_0x11d0e9);if(_0x6a4bb6){_[_0xea30('0x38')](_0x11d0e9,_0x11d0e9[_0xea30('0x39')]);for(var _0x3459c2=0x0,_0x49c4e1,_0x1d5181,_0x482145;_0x3459c2<this[_0xea30('0xd')][_0x404904][_0xea30('0x3a')]['length'];_0x3459c2+=0x1){_0x49c4e1=this['triggers'][_0x404904][_0xea30('0x3a')][_0x3459c2];if(this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]]){switch(_0x49c4e1['action'][_0xea30('0x3b')]()){case'contactmanager':break;case'motionbar':case _0xea30('0x3c'):var _0x26997b={};switch(barAndWebActions[_0x49c4e1[_0xea30('0x3d')]]){case _0xea30('0xc'):_0x26997b[_0xea30('0x3e')]=_0x49c4e1['data2'];_0x26997b['html']=this[_0xea30('0x10')][_0x49c4e1[_0xea30('0x3f')]]?Mustache[_0xea30('0x40')](this[_0xea30('0x10')][_0x49c4e1[_0xea30('0x3f')]][_0xea30('0x41')],_0x11d0e9):_0xea30('0x42');break;case _0xea30('0x1'):_0x26997b[_0xea30('0x43')]=this[_0xea30('0x44')](_0x49c4e1['data2'],_0x11d0e9,_[_0xea30('0x45')](_0x49c4e1['data3'])?!![]:parseInt(_0x49c4e1[_0xea30('0x46')],0xa));if(_[_0xea30('0x45')](_0x49c4e1[_0xea30('0x47')])){_0x26997b[_0xea30('0x48')]='0';}else{_0x26997b[_0xea30('0x49')]=_0x49c4e1[_0xea30('0x47')];_0x26997b[_0xea30('0x4a')]=_['isNil'](_0x49c4e1[_0xea30('0x4b')])?_0xea30('0x4c'):_0x49c4e1['data5'];_0x26997b['windowHeight']=_[_0xea30('0x45')](_0x49c4e1[_0xea30('0x4d')])?'600':_0x49c4e1[_0xea30('0x4d')];}break;case _0xea30('0x4e'):_0x26997b[_0xea30('0x4f')]=_0x49c4e1[_0xea30('0x3f')]?Mustache[_0xea30('0x40')](_0x49c4e1[_0xea30('0x3f')],_0x11d0e9):'';_0x26997b[_0xea30('0x50')]=_0x49c4e1['data3']?Mustache['render'](_0x49c4e1['data3'],_0x11d0e9):'';break;}this[_0xea30('0x34')](util[_0xea30('0x51')](_0xea30('0x52'),this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]]['name']),util[_0xea30('0x51')](_0xea30('0x53'),_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')](),barAndWebActions[_0x49c4e1[_0xea30('0x3d')]]),_[_0xea30('0x38')](_0x26997b,_0x11d0e9));break;case _0xea30('0x55'):this['emit'](util[_0xea30('0x51')]('user:%s',this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]]['name']),util['format'](_0xea30('0x56'),_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')]()),_[_0xea30('0x38')]({'ProjectId':parseInt(_0x49c4e1[_0xea30('0x3d')],0xa)},_0x11d0e9));break;default:this[_0xea30('0x34')](util[_0xea30('0x51')](_0xea30('0x52'),this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]][_0xea30('0x57')]),util[_0xea30('0x51')](_0xea30('0x56'),_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')]()),_[_0xea30('0x38')]({},_0x49c4e1,_0x11d0e9));}}switch(_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')]()){case _0xea30('0x58'):cmContact[_0xea30('0x59')](this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]],this[_0xea30('0xd')][_0x404904],_0x49c4e1,_0x11d0e9);break;case _0xea30('0x5a'):integration['exec'](_0x49c4e1,_0x11d0e9,this[_0xea30('0x1c')],this[_0xea30('0xe')][_0x11d0e9['interface']],this[_0xea30('0xf')][_0x11d0e9['queue']],this[_0xea30('0x11')][_0x11d0e9[_0xea30('0x5b')]]);break;case'urlforward':urlforward['exec'](_0x49c4e1,_0x11d0e9);break;case _0xea30('0x5c'):script[_0xea30('0x59')](_0x49c4e1,_0x11d0e9);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x1f8538,_0x259bde,_0x18ff17){var _0xa8223c=url[_0xea30('0x5d')](Mustache[_0xea30('0x40')](_0x1f8538,_0x259bde),!![]);if(_0x18ff17){_[_0xea30('0x38')](_0xa8223c[_0xea30('0x5e')],_0x259bde);}delete _0xa8223c[_0xea30('0x5f')];var _0x2eff66=url[_0xea30('0x51')](_0xa8223c);_0x2eff66=_0x2eff66[_0xea30('0x60')](/\/\?/g,'?');return _0x2eff66;};Trigger[_0xea30('0x31')][_0xea30('0x37')]=function(_0x530f08,_0x17ec91){var _0x3b9b9b=!![],_0x4d1177=!![];if(_0x530f08['AllConditions'][_0xea30('0x61')]){_0x3b9b9b=_[_0xea30('0x62')](_0x530f08[_0xea30('0x63')],this['checkConditions'](_0x17ec91,_0x530f08['channel']));}if(_0x530f08[_0xea30('0x64')][_0xea30('0x61')]){_0x4d1177=_[_0xea30('0x65')](_0x530f08[_0xea30('0x64')],this[_0xea30('0x66')](_0x17ec91,_0x530f08[_0xea30('0x67')]));}return _0x3b9b9b&&_0x4d1177;};Trigger['prototype'][_0xea30('0x66')]=function(_0x1ce2d2,_0x5ed45e){return function(_0x3f9e94){switch(_0x3f9e94[_0xea30('0x68')]){case _0xea30('0x69'):if(_0x1ce2d2[_0xea30('0x67')]===_0x5ed45e){if(_0x5ed45e===_0xea30('0x6a')){return _0x1ce2d2[_0xea30('0x6b')]?operators[_0x3f9e94[_0xea30('0x6c')]](Number(_0x3f9e94[_0xea30('0x6d')]),_0x1ce2d2[_0xea30('0x6b')]):![];}else{return _0x1ce2d2[_[_0xea30('0x6e')](_0x5ed45e)+_0xea30('0x6f')]?operators[_0x3f9e94['operator']](Number(_0x3f9e94[_0xea30('0x6d')]),_0x1ce2d2[_[_0xea30('0x6e')](_0x5ed45e)+_0xea30('0x6f')]):![];}}break;case _0xea30('0x70'):case _0xea30('0x71'):if(_0x1ce2d2['channel']===_0x5ed45e){return _0x1ce2d2[_0xea30('0x72')]?operators[_0x3f9e94['operator']](_0x3f9e94['value'],_0x1ce2d2[_0xea30('0x72')]):![];}break;case _0xea30('0x73'):return _0x1ce2d2['queue']?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2[_0xea30('0x73')]):![];case'agent':return _0x1ce2d2['membername']?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2[_0xea30('0x74')]):![];case'lastevent':return _0x1ce2d2[_0xea30('0x75')]?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2['lastevent']):![];case _0xea30('0x5b'):return _0x1ce2d2[_0xea30('0x5b')]?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2['routeId']):![];}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0x3eef=['voiceQueues','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','freshsalesAccounts','accounts','dynamics365Accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:acceptmessage','custom:rejectmessage','emit','info','stringify','prototype','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','merge','variables','Actions','length','action','toLowerCase','contactmanager','motionbar','data1','TemplateId','data2','html','templates','render','buildUri','isNil','data4','location','uriLocation','windowWidth','data5','800','data6','600','winapp','winApplication','winArguments','data3','user:%s','jscripty','format','name','trigger:%s','integration','exec','routeId','urlforward','query','search','replace','checkTrigger','AllConditions','every','checkConditions','channel','AnyConditions','some','field','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','exports','util','lodash','url','ioredis','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','redis','localhost','socket.io-emitter','popup','triggers','agents'];(function(_0x3a0dc1,_0xe008f){var _0x4e4e3e=function(_0x35e45f){while(--_0x35e45f){_0x3a0dc1['push'](_0x3a0dc1['shift']());}};_0x4e4e3e(++_0xe008f);}(_0x3eef,0xe0));var _0xf3ee=function(_0x185d54,_0x4a61cb){_0x185d54=_0x185d54-0x0;var _0x49d7e0=_0x3eef[_0x185d54];return _0x49d7e0;};'use strict';var util=require(_0xf3ee('0x0'));var _=require(_0xf3ee('0x1'));var url=require(_0xf3ee('0x2'));var Mustache=require('mustache');var Redis=require(_0xf3ee('0x3'));var urlforward=require('./urlforward');var integration=require(_0xf3ee('0x4'));var cmContact=require(_0xf3ee('0x5'));var script=require(_0xf3ee('0x6'));var config=require(_0xf3ee('0x7'));var logger=require(_0xf3ee('0x8'))(_0xf3ee('0x9'));var ami=require('../ami');config[_0xf3ee('0xa')]=_['defaults'](config['redis'],{'host':_0xf3ee('0xb'),'port':0x18eb});var io=require(_0xf3ee('0xc'))(new Redis(config[_0xf3ee('0xa')]));var operators={'equals':function(_0x94ad1b,_0x27ae00){return _0x94ad1b==_0x27ae00;},'not_equals':function(_0x259d51,_0x43aa47){return _0x259d51!=_0x43aa47;}};var barAndWebActions=[_0xf3ee('0xd'),_0xf3ee('0x2'),'winapp'];function Trigger(_0x178f87){this['triggers']=_0x178f87[_0xf3ee('0xe')];this[_0xf3ee('0xf')]=_0x178f87[_0xf3ee('0xf')];this[_0xf3ee('0x10')]=_0x178f87['voiceQueues'];this['templates']=_0x178f87['templates'];this[_0xf3ee('0x11')]=_0x178f87[_0xf3ee('0x11')];this[_0xf3ee('0x12')]=_0x178f87[_0xf3ee('0x12')];this['freshdeskAccounts']=_0x178f87[_0xf3ee('0x13')];this[_0xf3ee('0x14')]=_0x178f87['salesforceAccounts'];this[_0xf3ee('0x15')]=_0x178f87[_0xf3ee('0x15')];this[_0xf3ee('0x16')]=_0x178f87[_0xf3ee('0x16')];this[_0xf3ee('0x17')]=_0x178f87[_0xf3ee('0x17')];this[_0xf3ee('0x18')]=_0x178f87[_0xf3ee('0x18')];this[_0xf3ee('0x19')]=_0x178f87[_0xf3ee('0x19')];this['dynamics365Accounts']=_0x178f87['dynamics365Accounts'];this[_0xf3ee('0x1a')]=_0x178f87[_0xf3ee('0x1a')];this[_0xf3ee('0x1b')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0xf3ee('0x14')],'freshdesk':this[_0xf3ee('0x13')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this['zohoAccounts'],'desk':this['deskAccounts'],'vtiger':this[_0xf3ee('0x18')],'dynamics365':this[_0xf3ee('0x1c')],'freshsales':this[_0xf3ee('0x1a')],'servicenow':this[_0xf3ee('0x19')]};ami['on'](_0xf3ee('0x1d'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x20'),this['syncCustomEvent'][_0xf3ee('0x1f')](this));ami['on']('custom:agentringnoanswer',this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x21'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x22'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x23'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x24'),this[_0xf3ee('0x1e')]['bind'](this));ami['on'](_0xf3ee('0x25'),this[_0xf3ee('0x1e')]['bind'](this));ami['on'](_0xf3ee('0x26'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x27'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x28'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on']('custom:timeout',this['syncCustomEvent']['bind'](this));ami['on'](_0xf3ee('0x29'),this[_0xf3ee('0x2a')][_0xf3ee('0x1f')](this));ami['on']('custom:dialconnect',this[_0xf3ee('0x2a')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x2b'),this[_0xf3ee('0x2a')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x2c'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x2d'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on']('custom:incomingmessage',this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on']('custom:outgoingmessage',this['syncCustomEvent'][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x2e'),this[_0xf3ee('0x1e')][_0xf3ee('0x1f')](this));ami['on'](_0xf3ee('0x2f'),this[_0xf3ee('0x1e')]['bind'](this));}Trigger['prototype'][_0xf3ee('0x30')]=function(_0x5b9d3d,_0x4ab984,_0x3663e8){logger[_0xf3ee('0x31')](_0x5b9d3d,_0x4ab984,JSON[_0xf3ee('0x32')](_0x3663e8));io['to'](_0x5b9d3d)[_0xf3ee('0x30')](_0x4ab984,_0x3663e8);};Trigger[_0xf3ee('0x33')][_0xf3ee('0x1e')]=function(_0xbbae89){var _0x161dd7=_['clone'](_0xbbae89);if(typeof _0x161dd7[_0xf3ee('0x34')]===_0xf3ee('0x35')){_0x161dd7['motionChannel']=_0xf3ee('0x36');}this[_0xf3ee('0x37')](_0x161dd7);};Trigger['prototype'][_0xf3ee('0x2a')]=function(_0xe1cf71){if(this[_0xf3ee('0xf')][_0xe1cf71[_0xf3ee('0x38')]]){this[_0xf3ee('0x1e')](_0xe1cf71);}};Trigger[_0xf3ee('0x33')][_0xf3ee('0x37')]=function(_0x11b9e0){var _0x2060cb;for(var _0x33ba07 in this[_0xf3ee('0xe')]){if(this[_0xf3ee('0xe')][_0xf3ee('0x39')](_0x33ba07)){if(this[_0xf3ee('0xe')][_0x33ba07]['status']){_0x2060cb=this['checkTrigger'](this[_0xf3ee('0xe')][_0x33ba07],_0x11b9e0);if(_0x2060cb){_[_0xf3ee('0x3a')](_0x11b9e0,_0x11b9e0[_0xf3ee('0x3b')]);for(var _0x2eb9e3=0x0,_0x2cd0c9,_0xec7ff4,_0x3778cd;_0x2eb9e3<this[_0xf3ee('0xe')][_0x33ba07][_0xf3ee('0x3c')][_0xf3ee('0x3d')];_0x2eb9e3+=0x1){_0x2cd0c9=this['triggers'][_0x33ba07][_0xf3ee('0x3c')][_0x2eb9e3];if(this[_0xf3ee('0xf')][_0x11b9e0['interface']]){switch(_0x2cd0c9[_0xf3ee('0x3e')][_0xf3ee('0x3f')]()){case _0xf3ee('0x40'):break;case _0xf3ee('0x41'):case'browser':var _0x51e87e={};switch(barAndWebActions[_0x2cd0c9[_0xf3ee('0x42')]]){case'popup':_0x51e87e[_0xf3ee('0x43')]=_0x2cd0c9[_0xf3ee('0x44')];_0x51e87e[_0xf3ee('0x45')]=this[_0xf3ee('0x46')][_0x2cd0c9[_0xf3ee('0x44')]]?Mustache[_0xf3ee('0x47')](this[_0xf3ee('0x46')][_0x2cd0c9[_0xf3ee('0x44')]]['html'],_0x11b9e0):'template\x20not\x20found';break;case _0xf3ee('0x2'):_0x51e87e['uri']=this[_0xf3ee('0x48')](_0x2cd0c9[_0xf3ee('0x44')],_0x11b9e0,_[_0xf3ee('0x49')](_0x2cd0c9['data3'])?!![]:parseInt(_0x2cd0c9['data3'],0xa));if(_[_0xf3ee('0x49')](_0x2cd0c9[_0xf3ee('0x4a')])){_0x51e87e[_0xf3ee('0x4b')]='0';}else{_0x51e87e[_0xf3ee('0x4c')]=_0x2cd0c9['data4'];_0x51e87e[_0xf3ee('0x4d')]=_[_0xf3ee('0x49')](_0x2cd0c9[_0xf3ee('0x4e')])?_0xf3ee('0x4f'):_0x2cd0c9[_0xf3ee('0x4e')];_0x51e87e['windowHeight']=_['isNil'](_0x2cd0c9[_0xf3ee('0x50')])?_0xf3ee('0x51'):_0x2cd0c9[_0xf3ee('0x50')];}break;case _0xf3ee('0x52'):_0x51e87e[_0xf3ee('0x53')]=_0x2cd0c9[_0xf3ee('0x44')]?Mustache[_0xf3ee('0x47')](_0x2cd0c9[_0xf3ee('0x44')],_0x11b9e0):'';_0x51e87e[_0xf3ee('0x54')]=_0x2cd0c9[_0xf3ee('0x55')]?Mustache['render'](_0x2cd0c9[_0xf3ee('0x55')],_0x11b9e0):'';break;}this[_0xf3ee('0x30')](util['format'](_0xf3ee('0x56'),this[_0xf3ee('0xf')][_0x11b9e0[_0xf3ee('0x38')]]['name']),util['format']('trigger:%s:%s',_0x2cd0c9[_0xf3ee('0x3e')][_0xf3ee('0x3f')](),barAndWebActions[_0x2cd0c9[_0xf3ee('0x42')]]),_[_0xf3ee('0x3a')](_0x51e87e,_0x11b9e0));break;case _0xf3ee('0x57'):this[_0xf3ee('0x30')](util[_0xf3ee('0x58')]('user:%s',this[_0xf3ee('0xf')][_0x11b9e0[_0xf3ee('0x38')]][_0xf3ee('0x59')]),util[_0xf3ee('0x58')]('trigger:%s',_0x2cd0c9[_0xf3ee('0x3e')]['toLowerCase']()),_[_0xf3ee('0x3a')]({'ProjectId':parseInt(_0x2cd0c9['data1'],0xa)},_0x11b9e0));break;default:this['emit'](util['format'](_0xf3ee('0x56'),this[_0xf3ee('0xf')][_0x11b9e0[_0xf3ee('0x38')]]['name']),util[_0xf3ee('0x58')](_0xf3ee('0x5a'),_0x2cd0c9['action'][_0xf3ee('0x3f')]()),_[_0xf3ee('0x3a')]({},_0x2cd0c9,_0x11b9e0));}}switch(_0x2cd0c9[_0xf3ee('0x3e')][_0xf3ee('0x3f')]()){case _0xf3ee('0x40'):cmContact['exec'](this[_0xf3ee('0xf')][_0x11b9e0['interface']],this[_0xf3ee('0xe')][_0x33ba07],_0x2cd0c9,_0x11b9e0);break;case _0xf3ee('0x5b'):integration[_0xf3ee('0x5c')](_0x2cd0c9,_0x11b9e0,this['accounts'],this[_0xf3ee('0xf')][_0x11b9e0[_0xf3ee('0x38')]],this[_0xf3ee('0x10')][_0x11b9e0['queue']],this[_0xf3ee('0x11')][_0x11b9e0[_0xf3ee('0x5d')]]);break;case _0xf3ee('0x5e'):urlforward[_0xf3ee('0x5c')](_0x2cd0c9,_0x11b9e0);break;case'script':script['exec'](_0x2cd0c9,_0x11b9e0);break;}}}}}}};Trigger[_0xf3ee('0x33')][_0xf3ee('0x48')]=function(_0x5cad1b,_0x458b46,_0x15ef86){var _0x59a627=url['parse'](Mustache['render'](_0x5cad1b,_0x458b46),!![]);if(_0x15ef86){_['merge'](_0x59a627[_0xf3ee('0x5f')],_0x458b46);}delete _0x59a627[_0xf3ee('0x60')];var _0x1945a3=url[_0xf3ee('0x58')](_0x59a627);_0x1945a3=_0x1945a3[_0xf3ee('0x61')](/\/\?/g,'?');return _0x1945a3;};Trigger[_0xf3ee('0x33')][_0xf3ee('0x62')]=function(_0x414da7,_0x38b3a2){var _0x29a4f2=!![];var _0x555ce5=!![];var _0x75ef75=![];if(_0x414da7['channel']===_0x38b3a2[_0xf3ee('0x34')]){_0x75ef75=!![];}if(_0x414da7[_0xf3ee('0x63')][_0xf3ee('0x3d')]){_0x29a4f2=_[_0xf3ee('0x64')](_0x414da7[_0xf3ee('0x63')],this[_0xf3ee('0x65')](_0x38b3a2,_0x414da7[_0xf3ee('0x66')]));}if(_0x414da7[_0xf3ee('0x67')][_0xf3ee('0x3d')]){_0x555ce5=_[_0xf3ee('0x68')](_0x414da7[_0xf3ee('0x67')],this['checkConditions'](_0x38b3a2,_0x414da7[_0xf3ee('0x66')]));}return _0x75ef75&&_0x29a4f2&&_0x555ce5;};Trigger[_0xf3ee('0x33')][_0xf3ee('0x65')]=function(_0x521023,_0x3b181b){return function(_0x408262){switch(_0x408262[_0xf3ee('0x69')]){case'account':if(_0x521023[_0xf3ee('0x66')]===_0x3b181b){if(_0x3b181b===_0xf3ee('0x6a')){return _0x521023[_0xf3ee('0x6b')]?operators[_0x408262[_0xf3ee('0x6c')]](Number(_0x408262[_0xf3ee('0x6d')]),_0x521023['ChatWebsiteId']):![];}else{return _0x521023[_[_0xf3ee('0x6e')](_0x3b181b)+'AccountId']?operators[_0x408262['operator']](Number(_0x408262['value']),_0x521023[_[_0xf3ee('0x6e')](_0x3b181b)+_0xf3ee('0x6f')]):![];}}break;case _0xf3ee('0x70'):case _0xf3ee('0x71'):if(_0x521023[_0xf3ee('0x66')]===_0x3b181b){return _0x521023[_0xf3ee('0x72')]?operators[_0x408262[_0xf3ee('0x6c')]](_0x408262[_0xf3ee('0x6d')],_0x521023[_0xf3ee('0x72')]):![];}break;case _0xf3ee('0x73'):return _0x521023[_0xf3ee('0x73')]?operators[_0x408262[_0xf3ee('0x6c')]](_0x408262['value'],_0x521023[_0xf3ee('0x73')]):![];case _0xf3ee('0x74'):return _0x521023[_0xf3ee('0x75')]?operators[_0x408262[_0xf3ee('0x6c')]](_0x408262[_0xf3ee('0x6d')],_0x521023[_0xf3ee('0x75')]):![];case _0xf3ee('0x76'):return _0x521023[_0xf3ee('0x76')]?operators[_0x408262[_0xf3ee('0x6c')]](_0x408262[_0xf3ee('0x6d')],_0x521023[_0xf3ee('0x76')]):![];case'routeId':return _0x521023[_0xf3ee('0x5d')]?operators[_0x408262[_0xf3ee('0x6c')]](_0x408262[_0xf3ee('0x6d')],_0x521023[_0xf3ee('0x5d')]):![];}return![];};};module[_0xf3ee('0x77')]=Trigger;
\ No newline at end of file
index 6db1717..17d5436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['catch','stringify','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','then','total_entries','_embedded','entries','Agent\x20found!','format','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','debug','[HTTP]','GET','authType','basic','password','%s/token:%s','Basic\x20%s','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','getString','Subjects','xCALLY','concat','Descriptions','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','integrationTab','%s/agent/tickets/%s'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x326f,0xd1));var _0xf326=function(_0xed609a,_0x31d2d9){_0xed609a=_0xed609a-0x0;var _0x1404c9=_0x326f[_0xed609a];return _0x1404c9;};'use strict';var _=require(_0xf326('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var intUtil=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var logger=require(_0xf326('0x5'))(_0xf326('0x6'));config[_0xf326('0x7')]=_[_0xf326('0x8')](config[_0xf326('0x7')],{'host':_0xf326('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf326('0x7')]));function emit(_0x3851eb,_0x165f95,_0x1e7b8a){io['to'](_0x3851eb)['emit'](_0x165f95,_0x1e7b8a);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x3bacf2,_0x1fc80e){if(intUtil[_0xf326('0xa')](_0x1fc80e)===!![]){logger[_0xf326('0xb')](_0xf326('0xc'),_0x1fc80e);return request({'uri':util['format'](_0xf326('0xd'),_0x3bacf2['remoteUri'])})[_0xf326('0xe')](function(_0x4aaf3a){if(_0x4aaf3a[_0xf326('0xf')]){return _['find'](_0x4aaf3a[_0xf326('0x10')][_0xf326('0x11')],{'email':_0x1fc80e});}})['then'](function(_0x342fe5){if(_0x342fe5){logger[_0xf326('0xb')](_0xf326('0x12'));return _0x342fe5;}else{logger[_0xf326('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf326('0x13')]('%s/users/me',_0x3bacf2['remoteUri'])});}});}else{logger[_0xf326('0xb')](_0xf326('0x14'));return request({'uri':util[_0xf326('0x13')](_0xf326('0x15'),_0x3bacf2[_0xf326('0x16')])});}}function request(_0x287a2a){logger[_0xf326('0x17')](_0xf326('0x18'),JSON['stringify'](_0x287a2a));return rp(_[_0xf326('0x8')](_0x287a2a,{'method':_0xf326('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x18bee3){var _0x31ffb9;if(_0x18bee3[_0xf326('0x1a')]===_0xf326('0x1b')){_0x31ffb9=util['format']('%s:%s',_0x18bee3['username'],_0x18bee3[_0xf326('0x1c')]);}else if(_0x18bee3[_0xf326('0x1a')]==='token'){_0x31ffb9=util['format'](_0xf326('0x1d'),_0x18bee3['username'],_0x18bee3['token']);}return util[_0xf326('0x13')](_0xf326('0x1e'),new Buffer(_0x31ffb9)['toString']('base64'));}function getEndUser(_0x19b8ba,_0xb1efcf,_0x5f21a2){logger[_0xf326('0xb')](_0xf326('0x1f'),_0x5f21a2);return request({'uri':util[_0xf326('0x13')](_0xf326('0x20'),_0x19b8ba[_0xf326('0x16')]),'qs':{'phone':_0x5f21a2}})[_0xf326('0xe')](function(_0x5ce532){if(_0x5ce532['total_entries']){logger['info'](_0xf326('0x21'));return _0x5ce532[_0xf326('0x10')][_0xf326('0x11')][0x0];}else{logger[_0xf326('0xb')](_0xf326('0x22'));return request({'uri':util[_0xf326('0x13')]('%s/customers',_0x19b8ba[_0xf326('0x16')]),'method':_0xf326('0x23'),'body':{'first_name':_0xb1efcf,'title':_0xb1efcf,'phone_numbers':[{'type':_0xf326('0x24'),'value':_0x5f21a2}]}});}});}function getTags(_0x581531,_0x1617d2){var _0x55ad0f=[];if(_0x581531&&_0x581531['length']>0x0){_0x55ad0f=_[_0xf326('0x25')](_0x581531,_0x1617d2);}return _0x55ad0f;}function getCustomFields(_0x1ae23a,_0x2fa28e){var _0x5dbe63=[];var _0xc115d9={'custom_fields':{}};if(_0x1ae23a[_0xf326('0x26')]>0x0){_['forEach'](_0x1ae23a,function(_0x225776){if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776[_0xf326('0x2a')])&&_0x225776[_0xf326('0x2b')]&&!_0x225776[_0xf326('0x2c')]){_0xc115d9[_0x225776[_0xf326('0x2b')][_0xf326('0x2d')]()]=_0x225776[_0xf326('0x2e')]['toString']();}else if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776['type'])&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x225776['content'][_0xf326('0x31')]();}else if(_0x225776[_0xf326('0x2a')]===_0xf326('0x32')&&_0x225776[_0xf326('0x33')]&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776[_0xf326('0x33')]]&&(_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x2fa28e[_0x225776[_0xf326('0x33')]][_0xf326('0x31')]());}else if(_0x225776['type']===_0xf326('0x34')&&_0x225776['Variable']&&_0x225776[_0xf326('0x35')]['name']&&_0x225776['idField']&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776['Variable'][_0xf326('0x36')]['toLowerCase']()]&&(_0xc115d9[_0xf326('0x30')][_0x225776[_0xf326('0x2f')]]=_0x2fa28e[_0x225776[_0xf326('0x35')]['name'][_0xf326('0x2d')]()][_0xf326('0x31')]());}});}if(_0xc115d9['priority']){_0xc115d9[_0xf326('0x37')]=Number(_0xc115d9[_0xf326('0x37')]);}return _0xc115d9;}function getTicket(_0x40fa7a,_0xaf65e0,_0x51076c,_0x2c4416,_0xb1ef35){logger[_0xf326('0xb')](_0xf326('0x38'));var _0x1d88ed=_['merge']({'subject':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3a')],_0xb1ef35,'\x20'),'type':'phone','status':'new','labels':[_0xf326('0x3b'),'Motion','CTI'][_0xf326('0x3c')](getTags(_0x2c4416['Tags'],_0xf326('0x36'))),'description':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a'),'_links':{'assigned_user':{'href':util[_0xf326('0x13')]('/api/v2/users/%d',_0xaf65e0['id']),'class':_0xf326('0x3e')}},'message':{'direction':'in','body':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a')}},getCustomFields(_0x2c4416[_0xf326('0x3f')],_0xb1ef35));return request({'uri':util[_0xf326('0x13')](_0xf326('0x40'),_0x40fa7a[_0xf326('0x16')],_0x51076c['id']),'method':_0xf326('0x23'),'body':_0x1d88ed});}exports[_0xf326('0x41')]=function(_0x1227d3,_0x361776,_0x2bab13,_0x50d63f,_0x1b6126,_0x1637dc){var _0x2ed1a7,_0x270288;_0x1637dc[_0xf326('0x16')]=intUtil[_0xf326('0x42')](_0x1637dc['remoteUri']);_0x1637dc[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x1637dc['serverUrl']);if(_0x1b6126&&_0x1b6126[_0xf326('0x44')]){logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x46'));_0x361776[_0xf326('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1637dc[_0xf326('0x43')],_0x361776[_0xf326('0x48')],md5(_0x361776['uniqueid']));}else{_0x361776['recordingURL']='';}headers[_0xf326('0x49')]=getAuth(_0x1637dc);return getUser(_0x1637dc,_0x50d63f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x5b3705){_0x2ed1a7=_0x5b3705;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2ed1a7['id']);return getEndUser(_0x1637dc,_0x361776[_0xf326('0x4c')],_0x361776[_0xf326('0x4d')]);})[_0xf326('0xe')](function(_0x2d9bba){_0x270288=_0x2d9bba;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x270288['id']);return getTicket(_0x1637dc,_0x2ed1a7,_0x270288,_0x2bab13,_0x361776);})[_0xf326('0xe')](function(_0x27ced1){if(_0x27ced1){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x27ced1['id']);switch(_0x1637dc[_0xf326('0x2a')]){case'integrationTab':logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x51'));emit(util[_0xf326('0x13')]('user:%s',_0x50d63f[_0xf326('0x36')]),_0xf326('0x52'),{'recordId':_0x27ced1['id']});break;case _0xf326('0x53'):logger[_0xf326('0xb')]('[QUEUE]',_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x50d63f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x27ced1['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x45'),_0xf326('0x58'));}}})['catch'](function(_0x102fba){console[_0xf326('0x57')](_0x102fba);logger[_0xf326('0x57')]('[QUEUE]',JSON['stringify'](_0x102fba));});};exports[_0xf326('0x59')]=function(_0x5b4832,_0x1cf58f,_0x554277,_0x458e5f,_0x7ee57,_0x28c959,_0x25e091){var _0x212594,_0x35d3c8;_0x28c959[_0xf326('0x16')]=intUtil['stripTrailingSlash'](_0x28c959[_0xf326('0x16')]);_0x28c959[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28c959['serverUrl']);if(_0x25e091&&_0x25e091[_0xf326('0x5a')]&&_0x25e091[_0xf326('0x5a')]!==_0xf326('0x5b')){logger[_0xf326('0xb')](_0xf326('0x5c'),'Recording\x20is\x20enabled!');_0x1cf58f[_0xf326('0x47')]=util[_0xf326('0x13')](_0xf326('0x5d'),_0x28c959[_0xf326('0x43')],_0x1cf58f['uniqueid'],md5(_0x1cf58f[_0xf326('0x48')]));}headers[_0xf326('0x49')]=getAuth(_0x28c959);return getUser(_0x28c959,_0x458e5f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x4d3b9e){_0x212594=_0x4d3b9e;logger['info'](_0xf326('0x4b'),_0x212594['id']);return getEndUser(_0x28c959,_0x1cf58f[_0xf326('0x5e')],_0x1cf58f['destcalleridnum']);})[_0xf326('0xe')](function(_0x29de71){_0x35d3c8=_0x29de71;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x35d3c8['id']);return getTicket(_0x28c959,_0x212594,_0x35d3c8,_0x554277,_0x1cf58f);})['then'](function(_0xb1c18c){if(_0xb1c18c){logger['info']('Ticket\x20created!');logger[_0xf326('0xb')]('The\x20Ticket\x20ID\x20is:',_0xb1c18c['id']);switch(_0x28c959[_0xf326('0x2a')]){case _0xf326('0x5f'):logger[_0xf326('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),'trigger:desk:display',{'recordId':_0xb1c18c['id']});break;case _0xf326('0x53'):logger['info'](_0xf326('0x45'),_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util[_0xf326('0x13')](_0xf326('0x60'),_0x28c959[_0xf326('0x16')],_0xb1c18c['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x5c'),_0xf326('0x58'));}}})[_0xf326('0x61')](function(_0x4ca1b8){logger[_0xf326('0x57')]('[OUTBOUND]',JSON[_0xf326('0x62')](_0x4ca1b8));});};exports[_0xf326('0x63')]=function(_0x5e858d,_0x2b770c,_0x5283da,_0x3255b2,_0xd55246,_0x28f3cb){var _0x2d45c9,_0x31b6dd;_0x28f3cb['remoteUri']=intUtil['stripTrailingSlash'](_0x28f3cb[_0xf326('0x16')]);_0x28f3cb[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28f3cb[_0xf326('0x43')]);if(_0xd55246&&_0xd55246[_0xf326('0x44')]){logger['info']('['+_0x2b770c[_0xf326('0x64')][_0xf326('0x65')]()+']','Recording\x20is\x20enabled!');_0x2b770c['recordingURL']=util['format'](_0xf326('0x5d'),_0x28f3cb[_0xf326('0x43')],_0x2b770c[_0xf326('0x48')],md5(_0x2b770c[_0xf326('0x48')]));}else{_0x2b770c[_0xf326('0x47')]='';}headers[_0xf326('0x49')]=getAuth(_0x28f3cb);return getUser(_0x28f3cb)[_0xf326('0xe')](function(_0x4b9013){_0x2d45c9=_0x4b9013;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2d45c9['id']);return getEndUser(_0x28f3cb,_0x2b770c[_0xf326('0x4c')],_0x2b770c[_0xf326('0x4d')]);})['then'](function(_0x3717fe){_0x31b6dd=_0x3717fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x31b6dd['id']);return getTicket(_0x28f3cb,_0x2d45c9,_0x31b6dd,_0x5283da,_0x2b770c);})[_0xf326('0xe')](function(_0x540fa0){if(_0x540fa0){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x540fa0['id']);}})[_0xf326('0x61')](function(_0x541491){logger['error']('['+_0x2b770c['lastevent'][_0xf326('0x65')]()+']',JSON[_0xf326('0x62')](_0x541491));});};
\ No newline at end of file
+var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0xb62707,_0x4e26dd){var _0x591a23=function(_0x1f2c22){while(--_0x1f2c22){_0xb62707['push'](_0xb62707['shift']());}};_0x591a23(++_0x4e26dd);}(_0x814b,0x1a2));var _0xb814=function(_0xee3051,_0xbe4f18){_0xee3051=_0xee3051-0x0;var _0x139e81=_0x814b[_0xee3051];return _0x139e81;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
index 86fa2d2..c2971d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1955=['defaults','redis','localhost','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','toUpperCase','userEmail','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','message','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','forEach','includes','string','picklist','type','nameField','customField','idField','indexOf','content','incidents','getString','Subjects','Descriptions','/contacts(','enduserId','ticketType','phonecall','phonecalls','assign','callDirection','queue','Fields','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment'];(function(_0x359220,_0x46c310){var _0x240d9d=function(_0x551ce6){while(--_0x551ce6){_0x359220['push'](_0x359220['shift']());}};_0x240d9d(++_0x46c310);}(_0x1955,0xc0));var _0x5195=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x1955[_0x46e363];return _0x3fb059;};'use strict';var _=require('lodash');var BPromise=require(_0x5195('0x0'));var rp=require(_0x5195('0x1'));var util=require('util');var intUtil=require(_0x5195('0x2'));var md5=require(_0x5195('0x3'));var Redis=require(_0x5195('0x4'));var logger=require(_0x5195('0x5'))(_0x5195('0x6'));var config=require(_0x5195('0x7'));config['redis']=_[_0x5195('0x8')](config[_0x5195('0x9')],{'host':_0x5195('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAuthToken(_0xc1bf6a,_0x17ba22,_0x4f77d8){var _0x19204b={'method':_0x5195('0xb'),'uri':_0x17ba22,'form':{'client_id':_0xc1bf6a[_0x5195('0xc')],'resource':_0xc1bf6a[_0x5195('0xd')],'username':_0xc1bf6a[_0x5195('0xe')],'password':_0xc1bf6a[_0x5195('0xf')],'grant_type':_0x5195('0xf'),'client_secret':_0xc1bf6a[_0x5195('0x10')]},'json':!![]};return rp(_0x19204b)[_0x5195('0x11')](function(_0xa4d66){return _0xa4d66[_0x5195('0x12')];})[_0x5195('0x13')](function(_0x5847f5){logger[_0x5195('0x14')]('['+[_0x4f77d8['toUpperCase']()]+_0x5195('0x15'));return _0x5847f5['message'];});}function getUser(_0xd89e70,_0xc67ef,_0x5d99e5,_0x48e06a,_0x24ee60,_0x4cd9be){return new BPromise(function(_0x1caa58,_0x556e1d){return getAuthToken(_0xc67ef,_0x48e06a,_0x4cd9be)['then'](function(_0x22e848){var _0x447eb0={'method':_0x5195('0x16'),'uri':_0x24ee60+_0x5195('0x17'),'headers':{'Authorization':_0x5195('0x18')+_0x22e848,'OData-Version':_0x5195('0x19')},'json':!![]};return rp(_0x447eb0);})[_0x5195('0x11')](function(_0x3aaa92){var _0x267caa=_0x3aaa92[_0x5195('0x1a')];var _0x4c6570=![];var _0x5b7840=null;if(!_[_0x5195('0x1b')](_0x5d99e5)){if(intUtil['validateEmail'](_0x5d99e5[_0x5195('0x1c')])){_0xd89e70['userEmail']=_0x5d99e5[_0x5195('0x1c')];for(_0x5b7840=0x0;_0x5b7840<_0x267caa[_0x5195('0x1d')];_0x5b7840++){if(_0x267caa[_0x5b7840][_0x5195('0x1e')]===_0x5d99e5[_0x5195('0x1c')]&&!_0x267caa[_0x5b7840][_0x5195('0x1f')]){_0x4c6570=!![];logger[_0x5195('0x20')]('['+[_0x4cd9be['toUpperCase']()]+_0x5195('0x21')+_0x267caa[_0x5b7840][_0x5195('0x22')]+'!');_0xd89e70[_0x5195('0x23')]=_0x267caa[_0x5b7840]['systemuserid'];}}}}if(!_0x4c6570){logger[_0x5195('0x20')]('['+[_0x4cd9be[_0x5195('0x24')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0xd89e70[_0x5195('0x25')]=_0xc67ef[_0x5195('0xe')];for(_0x5b7840=0x0;_0x5b7840<_0x267caa[_0x5195('0x1d')];_0x5b7840++){if(_0x267caa[_0x5b7840][_0x5195('0x1e')]===_0xc67ef[_0x5195('0xe')]){_0xd89e70[_0x5195('0x23')]=_0x267caa[_0x5b7840][_0x5195('0x22')];}}}_0x1caa58(_0xd89e70);})['catch'](function(_0x56e7e1){_0x556e1d(_0x56e7e1['message']);});});}function createEndUser(_0x35e98d,_0x2aca59,_0x56e218,_0x5edbec,_0x3a4adb,_0x29d748){return new BPromise(function(_0x29a0b4,_0x441e58){return getAuthToken(_0x2aca59,_0x56e218,_0x29d748)[_0x5195('0x11')](function(_0x32acbc){var _0xd2c7e7=_0x29d748[_0x5195('0x26')]()===_0x5195('0x27')?_0x3a4adb[_0x5195('0x28')]:_0x3a4adb[_0x5195('0x29')];var _0xb3b1ca={'method':'POST','uri':_0x5edbec+_0x5195('0x2a'),'body':{'telephone1':_0xd2c7e7,'fullname':_0xd2c7e7,'firstname':_0xd2c7e7,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x5195('0x2b')+_0x35e98d[_0x5195('0x23')]+')'},'headers':{'Authorization':_0x5195('0x18')+_0x32acbc,'OData-Version':_0x5195('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0xb3b1ca);})['then'](function(_0x5ac813){var _0xd87aba=_0x5ac813[_0x5195('0x2c')][_0x5195('0x2d')];var _0xd3e341=_0xd87aba[_0x5195('0x2e')](_0xd87aba['lastIndexOf']('(')+0x1,_0xd87aba[_0x5195('0x2f')](')'));_0x35e98d['enduserId']=_0xd3e341;_0x29a0b4(_0x35e98d);})[_0x5195('0x13')](function(_0x342c){_0x441e58(_0x342c[_0x5195('0x30')]);});});}function getEndUser(_0x437d38,_0x24a92e,_0x5b46ad,_0x15e695,_0x385103,_0x15a213){return new BPromise(function(_0x2847be,_0x2c45fe){var _0xb2fbfd=_0x15a213['toLowerCase']()==='outbound'?_0x385103[_0x5195('0x28')]:_0x385103[_0x5195('0x29')];return getAuthToken(_0x24a92e,_0x5b46ad,_0x15a213)[_0x5195('0x11')](function(_0x3a13d8){var _0x2b637d={'method':'GET','uri':_0x15e695+_0x5195('0x31')+_0xb2fbfd[_0x5195('0x32')]('+',_0x5195('0x33'))+'\x27','headers':{'Authorization':_0x5195('0x18')+_0x3a13d8,'If-None-Match':null,'OData-Version':_0x5195('0x19')},'json':!![]};return rp(_0x2b637d);})[_0x5195('0x11')](function(_0x1de4d9){var _0x5c05d0=null;if(_0x1de4d9){var _0x43dafc=_0x1de4d9[_0x5195('0x1a')];var _0x23f1ae=![];for(_0x5c05d0=0x0;_0x5c05d0<_0x43dafc['length'];_0x5c05d0++){if(_0x43dafc[_0x5c05d0][_0x5195('0x34')]===_0xb2fbfd){_0x23f1ae=!![];_0x437d38['enduserId']=_0x43dafc[_0x5c05d0]['contactid'];}}if(_0x23f1ae){_0x2847be(_0x437d38);}else{return createEndUser(_0x437d38,_0x24a92e,_0x5b46ad,_0x15e695,_0x385103,_0x15a213)[_0x5195('0x11')](function(_0x4e3fdf){logger['info']('['+[_0x15a213[_0x5195('0x24')]()]+']\x20Enduser\x20created!',_0x4e3fdf['enduserId']);_0x2847be(_0x4e3fdf);});}}else{return createEndUser(_0x437d38,_0x24a92e,_0x5b46ad,_0x15e695,_0x385103,_0x15a213)[_0x5195('0x11')](function(_0x255b01){logger['info']('['+[_0x15a213['toUpperCase']()]+']\x20Enduser\x20Created!',_0x255b01['enduserId']);_0x2847be(_0x255b01);});}});});}function getCustomFields(_0x12e326,_0x1b009f,_0xe3ee3c){var _0x35c67d={};if(_0x12e326[_0x5195('0x1d')]>0x0){_[_0x5195('0x35')](_0x12e326,function(_0x5d1753){if(_[_0x5195('0x36')]([_0x5195('0x37'),_0x5195('0x38')],_0x5d1753[_0x5195('0x39')])&&_0x5d1753[_0x5195('0x3a')]&&!_0x5d1753[_0x5195('0x3b')]){var _0x438fb5=_0x5d1753[_0x5195('0x3c')][_0x5195('0x26')]();var _0x15cd51=_0x438fb5[_0x5195('0x2e')](0x0,_0x438fb5['indexOf']('_'));var _0x147562=_0x438fb5[_0x5195('0x2e')](_0x438fb5[_0x5195('0x3d')]('_')+0x1);if(_0x15cd51===_0xe3ee3c){_0x35c67d[_0x147562]=_0x5d1753[_0x5195('0x3e')];}}});}return _0x35c67d;}function getTicket(_0x1a5e74,_0x1622e9,_0x3fc886,_0x5ec289,_0x59cdc2,_0xd79526,_0x1906e5){return new BPromise(function(_0x308310,_0x5b7e89){var _0x4cb470;return getAuthToken(_0x1622e9,_0x3fc886,_0x1906e5)[_0x5195('0x11')](function(_0x40632c){if(_0xd79526['ticketType']==='incident'){_0x4cb470={'method':_0x5195('0xb'),'uri':_0x5ec289+_0x5195('0x3f'),'body':Object['assign']({},{'title':intUtil[_0x5195('0x40')](_0xd79526[_0x5195('0x41')],_0x59cdc2,'\x20'),'description':intUtil[_0x5195('0x40')](_0xd79526[_0x5195('0x42')],_0x59cdc2,'\x0a'),'customerid_contact@odata.bind':_0x5195('0x43')+_0x1a5e74[_0x5195('0x44')]+')','ownerid@odata.bind':_0x5195('0x2b')+_0x1a5e74[_0x5195('0x23')]+')','caseorigincode':'1'},getCustomFields(_0xd79526['Fields'],_0x59cdc2,_0xd79526[_0x5195('0x45')])),'headers':{'Authorization':_0x5195('0x18')+_0x40632c,'OData-Version':_0x5195('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xd79526[_0x5195('0x45')]===_0x5195('0x46')){_0x4cb470={'method':_0x5195('0xb'),'uri':_0x5ec289+_0x5195('0x47'),'body':Object[_0x5195('0x48')]({},{'subject':intUtil[_0x5195('0x40')](_0xd79526[_0x5195('0x41')],_0x59cdc2,'\x20'),'phonenumber':String(_0x59cdc2[_0x5195('0x29')]),'description':intUtil['getString'](_0xd79526[_0x5195('0x42')],_0x59cdc2,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x1a5e74[_0x5195('0x44')]+')','ownerid@odata.bind':_0x5195('0x2b')+_0x1a5e74[_0x5195('0x23')]+')','directioncode':_0x1a5e74[_0x5195('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x5195('0x2b')+_0x1a5e74[_0x5195('0x23')]+')','participationtypemask':_0x1a5e74[_0x5195('0x49')]===_0x5195('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0x5195('0x43')+_0x1a5e74[_0x5195('0x44')]+')','participationtypemask':_0x1a5e74['callDirection']===_0x5195('0x4a')?0x1:0x2}]},getCustomFields(_0xd79526[_0x5195('0x4b')],_0x59cdc2,_0xd79526[_0x5195('0x45')])),'headers':{'Authorization':_0x5195('0x18')+_0x40632c,'OData-Version':_0x5195('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4cb470);})[_0x5195('0x11')](function(_0x2a4408){var _0x377d20=_0x2a4408[_0x5195('0x2c')][_0x5195('0x2d')];var _0x561c93=_0x377d20['substring'](_0x377d20[_0x5195('0x2f')]('(')+0x1,_0x377d20[_0x5195('0x2f')](')'));_0x1a5e74[_0x5195('0x4c')]=_0x561c93;_0x308310(_0x1a5e74);})[_0x5195('0x13')](function(_0x4caf5b){_0x5b7e89(_0x4caf5b[_0x5195('0x30')]);});});}function emit(_0x46c7a5,_0x385ca2,_0x27276f,_0x22f356){var _0xb2eff3={'uri':util[_0x5195('0x4d')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x46c7a5,_0x27276f,_0x22f356)};io['to'](util[_0x5195('0x4d')](_0x5195('0x4e'),_0x385ca2))[_0x5195('0x4f')](_0x5195('0x50'),_0xb2eff3);}exports['cs']=function(_0x40dd58,_0x477284,_0x15b3a7,_0x1617da,_0x25291b,_0x27afed,_0x2c39ec,_0x28ac62){var _0x29a674={};_0x27afed[_0x5195('0xd')]=intUtil[_0x5195('0x51')](_0x27afed['remoteUri']);_0x27afed[_0x5195('0x52')]=intUtil[_0x5195('0x51')](_0x27afed[_0x5195('0x52')]);_0x29a674['callDirection']=_0x28ac62===_0x5195('0x4a')||_0x28ac62===_0x5195('0x53')?_0x5195('0x4a'):'outbound';var _0x360118=util[_0x5195('0x4d')]('%s/api/data/v9.0/',_0x27afed[_0x5195('0xd')]);var _0x518efd=util[_0x5195('0x4d')](_0x5195('0x54'),_0x27afed[_0x5195('0x55')]);var _0x57a4f5=util[_0x5195('0x4d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x27afed[_0x5195('0x52')],_0x477284[_0x5195('0x56')],md5(_0x477284[_0x5195('0x56')]));if(_0x25291b&&_0x25291b[_0x5195('0x57')]){logger[_0x5195('0x20')](_0x5195('0x58'),'Recording\x20is\x20enabled!');_0x477284[_0x5195('0x59')]=_0x57a4f5;}else if(_0x2c39ec&&_0x2c39ec[_0x5195('0x5a')]&&_0x2c39ec[_0x5195('0x5a')]!==_0x5195('0x5b')){logger[_0x5195('0x20')]('[OUTBOUND]',_0x5195('0x5c'));_0x477284[_0x5195('0x59')]=_0x57a4f5;}else{_0x477284['recordingURL']='';}return getUser(_0x29a674,_0x27afed,_0x1617da,_0x518efd,_0x360118,_0x28ac62)[_0x5195('0x11')](function(_0x5b8354){logger[_0x5195('0x20')]('['+_0x28ac62[_0x5195('0x24')]()+']\x20The\x20User\x20ID\x20is:',_0x5b8354['userId']);logger[_0x5195('0x20')]('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x5d'),_0x5b8354[_0x5195('0x25')]);return getEndUser(_0x5b8354,_0x27afed,_0x518efd,_0x360118,_0x477284,_0x28ac62);})['then'](function(_0x49d99e){logger['info']('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x5e'),_0x49d99e[_0x5195('0x44')]);logger[_0x5195('0x20')]('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x5f'),_0x477284[_0x5195('0x29')]);return getTicket(_0x49d99e,_0x27afed,_0x518efd,_0x360118,_0x477284,_0x15b3a7,_0x28ac62);})[_0x5195('0x11')](function(_0x555138){logger[_0x5195('0x20')](util[_0x5195('0x4d')]('['+_0x28ac62['toUpperCase']()+_0x5195('0x60'),_0x15b3a7['ticketType'],_0x555138[_0x5195('0x4c')]));logger[_0x5195('0x20')](util['format']('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x61'),_0x28ac62));if(_0x28ac62!=='unmanaged'){logger['info']('['+_0x28ac62[_0x5195('0x24')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x27afed[_0x5195('0xd')],_0x1617da['name'],_0x15b3a7[_0x5195('0x45')],_0x555138[_0x5195('0x4c')]);}})[_0x5195('0x13')](function(_0x2baddd){logger['error']('['+_0x28ac62['toUpperCase']()+_0x5195('0x62'),util[_0x5195('0x63')](_0x2baddd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4ae5=['recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','util','md5','ioredis','../../../../config/logger','dynamics365','redis','defaults','POST','clientId','username','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','4.0','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userEmail','toLowerCase','outbound','destcalleridnum','calleridnum','/systemusers(','userId','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','value','telephone1','contactid',']\x20Enduser\x20created!','forEach','includes','string','nameField','customField','indexOf','content','ticketType','incident','incidents','assign','Subjects','Fields','phonecall','phonecalls','getString','Descriptions','/contacts(','callDirection','queue','ticketId','format','user:%s','serverUrl','stripTrailingSlash','%s/api/data/v9.0/','remoteUri','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x4ae5,0x189));var _0x54ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4ae5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x54ae('0x0'));var BPromise=require('bluebird');var rp=require(_0x54ae('0x1'));var util=require(_0x54ae('0x2'));var intUtil=require('./util');var md5=require(_0x54ae('0x3'));var Redis=require(_0x54ae('0x4'));var logger=require(_0x54ae('0x5'))(_0x54ae('0x6'));var config=require('../../../../config/environment');config[_0x54ae('0x7')]=_[_0x54ae('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x54ae('0x7')]));function getAuthToken(_0xda2d9e,_0x52dfc2,_0xa49f1){var _0x153b50={'method':_0x54ae('0x9'),'uri':_0x52dfc2,'form':{'client_id':_0xda2d9e[_0x54ae('0xa')],'resource':_0xda2d9e['remoteUri'],'username':_0xda2d9e[_0x54ae('0xb')],'password':_0xda2d9e[_0x54ae('0xc')],'grant_type':'password','client_secret':_0xda2d9e[_0x54ae('0xd')]},'json':!![]};return rp(_0x153b50)[_0x54ae('0xe')](function(_0x331b4f){return _0x331b4f[_0x54ae('0xf')];})[_0x54ae('0x10')](function(_0x4295ee){logger[_0x54ae('0x11')]('['+[_0xa49f1['toUpperCase']()]+_0x54ae('0x12'));return _0x4295ee[_0x54ae('0x13')];});}function getUser(_0x2c88b6,_0x3ae89b,_0x274881,_0x291a41,_0x1ff66d,_0x584354){return new BPromise(function(_0x158570,_0x47fd6c){return getAuthToken(_0x3ae89b,_0x291a41,_0x584354)[_0x54ae('0xe')](function(_0x5214dc){var _0x11e131={'method':_0x54ae('0x14'),'uri':_0x1ff66d+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x54ae('0x15')+_0x5214dc,'OData-Version':_0x54ae('0x16')},'json':!![]};return rp(_0x11e131);})[_0x54ae('0xe')](function(_0x289a85){var _0x36b717=_0x289a85['value'];var _0x5476ba=![];var _0xd90a54=null;if(!_[_0x54ae('0x17')](_0x274881)){if(intUtil[_0x54ae('0x18')](_0x274881[_0x54ae('0x19')])){_0x2c88b6['userEmail']=_0x274881[_0x54ae('0x19')];for(_0xd90a54=0x0;_0xd90a54<_0x36b717[_0x54ae('0x1a')];_0xd90a54++){if(_0x36b717[_0xd90a54][_0x54ae('0x1b')]===_0x274881[_0x54ae('0x19')]&&!_0x36b717[_0xd90a54][_0x54ae('0x1c')]){_0x5476ba=!![];logger[_0x54ae('0x1d')]('['+[_0x584354[_0x54ae('0x1e')]()]+_0x54ae('0x1f')+_0x36b717[_0xd90a54][_0x54ae('0x20')]+'!');_0x2c88b6['userId']=_0x36b717[_0xd90a54][_0x54ae('0x20')];}}}}if(!_0x5476ba){logger['info']('['+[_0x584354[_0x54ae('0x1e')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x2c88b6[_0x54ae('0x21')]=_0x3ae89b[_0x54ae('0xb')];for(_0xd90a54=0x0;_0xd90a54<_0x36b717[_0x54ae('0x1a')];_0xd90a54++){if(_0x36b717[_0xd90a54][_0x54ae('0x1b')]===_0x3ae89b['username']){_0x2c88b6['userId']=_0x36b717[_0xd90a54]['systemuserid'];}}}_0x158570(_0x2c88b6);})[_0x54ae('0x10')](function(_0x29606e){_0x47fd6c(_0x29606e[_0x54ae('0x13')]);});});}function createEndUser(_0x1b34dc,_0x37cd7c,_0x384f05,_0x5d08a7,_0x3d2e44,_0x2d2a3e){return new BPromise(function(_0x241394,_0x65e42b){return getAuthToken(_0x37cd7c,_0x384f05,_0x2d2a3e)['then'](function(_0x5bb479){var _0x36304b=_0x2d2a3e[_0x54ae('0x22')]()===_0x54ae('0x23')?_0x3d2e44[_0x54ae('0x24')]:_0x3d2e44[_0x54ae('0x25')];var _0x295cb1={'method':_0x54ae('0x9'),'uri':_0x5d08a7+'contacts','body':{'telephone1':_0x36304b,'fullname':_0x36304b,'firstname':_0x36304b,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x54ae('0x26')+_0x1b34dc[_0x54ae('0x27')]+')'},'headers':{'Authorization':_0x54ae('0x15')+_0x5bb479,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x295cb1);})[_0x54ae('0xe')](function(_0x630ae){var _0x4acc4e=_0x630ae[_0x54ae('0x28')][_0x54ae('0x29')];var _0x333b19=_0x4acc4e[_0x54ae('0x2a')](_0x4acc4e[_0x54ae('0x2b')]('(')+0x1,_0x4acc4e[_0x54ae('0x2b')](')'));_0x1b34dc[_0x54ae('0x2c')]=_0x333b19;_0x241394(_0x1b34dc);})[_0x54ae('0x10')](function(_0x1497e6){_0x65e42b(_0x1497e6[_0x54ae('0x13')]);});});}function getEndUser(_0x248a2a,_0x19b9f7,_0x53271a,_0x931a90,_0x8afc6b,_0x2605ef){return new BPromise(function(_0x184147,_0xa3ffd){var _0x78efea=_0x2605ef[_0x54ae('0x22')]()===_0x54ae('0x23')?_0x8afc6b[_0x54ae('0x24')]:_0x8afc6b[_0x54ae('0x25')];return getAuthToken(_0x19b9f7,_0x53271a,_0x2605ef)['then'](function(_0x5bea61){var _0x50e53b={'method':'GET','uri':_0x931a90+_0x54ae('0x2d')+_0x78efea['replace']('+','%2b')+'\x27','headers':{'Authorization':_0x54ae('0x15')+_0x5bea61,'If-None-Match':null,'OData-Version':_0x54ae('0x16')},'json':!![]};return rp(_0x50e53b);})['then'](function(_0x1e1ff3){var _0x1d8a99=null;if(_0x1e1ff3){var _0x332e57=_0x1e1ff3[_0x54ae('0x2e')];var _0x3b3f8e=![];for(_0x1d8a99=0x0;_0x1d8a99<_0x332e57[_0x54ae('0x1a')];_0x1d8a99++){if(_0x332e57[_0x1d8a99][_0x54ae('0x2f')]===_0x78efea){_0x3b3f8e=!![];_0x248a2a[_0x54ae('0x2c')]=_0x332e57[_0x1d8a99][_0x54ae('0x30')];}}if(_0x3b3f8e){_0x184147(_0x248a2a);}else{return createEndUser(_0x248a2a,_0x19b9f7,_0x53271a,_0x931a90,_0x8afc6b,_0x2605ef)['then'](function(_0x8b4a9c){logger[_0x54ae('0x1d')]('['+[_0x2605ef[_0x54ae('0x1e')]()]+_0x54ae('0x31'),_0x8b4a9c[_0x54ae('0x2c')]);_0x184147(_0x8b4a9c);});}}else{return createEndUser(_0x248a2a,_0x19b9f7,_0x53271a,_0x931a90,_0x8afc6b,_0x2605ef)[_0x54ae('0xe')](function(_0x1c90db){logger[_0x54ae('0x1d')]('['+[_0x2605ef['toUpperCase']()]+']\x20Enduser\x20Created!',_0x1c90db[_0x54ae('0x2c')]);_0x184147(_0x1c90db);});}});});}function getCustomFields(_0x70bce3,_0xb2b57b,_0x44ec1f){var _0x4da438={};if(_0x70bce3['length']>0x0){_[_0x54ae('0x32')](_0x70bce3,function(_0x47e76c){if(_[_0x54ae('0x33')]([_0x54ae('0x34'),'picklist'],_0x47e76c['type'])&&_0x47e76c[_0x54ae('0x35')]&&!_0x47e76c[_0x54ae('0x36')]){var _0x2ee8cc=_0x47e76c['idField'][_0x54ae('0x22')]();var _0x1e3efd=_0x2ee8cc[_0x54ae('0x2a')](0x0,_0x2ee8cc[_0x54ae('0x37')]('_'));var _0xa06bf2=_0x2ee8cc[_0x54ae('0x2a')](_0x2ee8cc[_0x54ae('0x37')]('_')+0x1);if(_0x1e3efd===_0x44ec1f){_0x4da438[_0xa06bf2]=_0x47e76c[_0x54ae('0x38')];}}});}return _0x4da438;}function getTicket(_0x4d1d84,_0x25b0dd,_0x3601de,_0x152393,_0x26e9b4,_0x3f058b,_0x3cef6f){return new BPromise(function(_0x477d1d,_0x3a43bc){var _0x3e992f;return getAuthToken(_0x25b0dd,_0x3601de,_0x3cef6f)[_0x54ae('0xe')](function(_0x1c9253){if(_0x3f058b[_0x54ae('0x39')]===_0x54ae('0x3a')){_0x3e992f={'method':'POST','uri':_0x152393+_0x54ae('0x3b'),'body':Object[_0x54ae('0x3c')]({},{'title':intUtil['getString'](_0x3f058b[_0x54ae('0x3d')],_0x26e9b4,'\x20'),'description':intUtil['getString'](_0x3f058b['Descriptions'],_0x26e9b4,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x4d1d84[_0x54ae('0x2c')]+')','ownerid@odata.bind':_0x54ae('0x26')+_0x4d1d84[_0x54ae('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x3f058b[_0x54ae('0x3e')],_0x26e9b4,_0x3f058b[_0x54ae('0x39')])),'headers':{'Authorization':_0x54ae('0x15')+_0x1c9253,'OData-Version':_0x54ae('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3f058b[_0x54ae('0x39')]===_0x54ae('0x3f')){_0x3e992f={'method':_0x54ae('0x9'),'uri':_0x152393+_0x54ae('0x40'),'body':Object['assign']({},{'subject':intUtil[_0x54ae('0x41')](_0x3f058b[_0x54ae('0x3d')],_0x26e9b4,'\x20'),'phonenumber':String(_0x26e9b4['calleridnum']),'description':intUtil[_0x54ae('0x41')](_0x3f058b[_0x54ae('0x42')],_0x26e9b4,'\x0a'),'regardingobjectid_contact@odata.bind':_0x54ae('0x43')+_0x4d1d84[_0x54ae('0x2c')]+')','ownerid@odata.bind':'/systemusers('+_0x4d1d84[_0x54ae('0x27')]+')','directioncode':_0x4d1d84[_0x54ae('0x44')]===_0x54ae('0x45')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4d1d84[_0x54ae('0x27')]+')','participationtypemask':_0x4d1d84[_0x54ae('0x44')]===_0x54ae('0x45')?0x2:0x1},{'partyid_contact@odata.bind':_0x54ae('0x43')+_0x4d1d84[_0x54ae('0x2c')]+')','participationtypemask':_0x4d1d84['callDirection']==='queue'?0x1:0x2}]},getCustomFields(_0x3f058b[_0x54ae('0x3e')],_0x26e9b4,_0x3f058b['ticketType'])),'headers':{'Authorization':_0x54ae('0x15')+_0x1c9253,'OData-Version':_0x54ae('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3e992f);})[_0x54ae('0xe')](function(_0x5708da){var _0x5801fb=_0x5708da['headers'][_0x54ae('0x29')];var _0x12a249=_0x5801fb[_0x54ae('0x2a')](_0x5801fb['lastIndexOf']('(')+0x1,_0x5801fb[_0x54ae('0x2b')](')'));_0x4d1d84[_0x54ae('0x46')]=_0x12a249;_0x477d1d(_0x4d1d84);})['catch'](function(_0x26f6c4){_0x3a43bc(_0x26f6c4[_0x54ae('0x13')]);});});}function emit(_0xde6ae,_0x275488,_0x264d6e,_0xbe0a48){var _0x2c91eb={'uri':util[_0x54ae('0x47')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0xde6ae,_0x264d6e,_0xbe0a48)};io['to'](util[_0x54ae('0x47')](_0x54ae('0x48'),_0x275488))['emit']('trigger:browser:url',_0x2c91eb);}exports['cs']=function(_0x40ab09,_0x4fef57,_0x35d734,_0x5eed17,_0x182b5d,_0x4dcdfa,_0x5095c,_0x113ea9){var _0x577618={};_0x4dcdfa['remoteUri']=intUtil['stripTrailingSlash'](_0x4dcdfa['remoteUri']);_0x4dcdfa[_0x54ae('0x49')]=intUtil[_0x54ae('0x4a')](_0x4dcdfa[_0x54ae('0x49')]);_0x577618[_0x54ae('0x44')]=_0x113ea9===_0x54ae('0x45')||_0x113ea9==='unmanaged'?'queue':_0x54ae('0x23');var _0x16193f=util[_0x54ae('0x47')](_0x54ae('0x4b'),_0x4dcdfa[_0x54ae('0x4c')]);var _0x4a7862=util[_0x54ae('0x47')]('https://login.microsoftonline.com/%s/oauth2/token',_0x4dcdfa[_0x54ae('0x4d')]);var _0x199d78=util[_0x54ae('0x47')](_0x54ae('0x4e'),_0x4dcdfa[_0x54ae('0x49')],_0x4fef57[_0x54ae('0x4f')],md5(_0x4fef57[_0x54ae('0x4f')]));if(_0x182b5d&&_0x182b5d['monitor_format']){logger[_0x54ae('0x1d')](_0x54ae('0x50'),_0x54ae('0x51'));_0x4fef57[_0x54ae('0x52')]=_0x199d78;}else if(_0x5095c&&_0x5095c[_0x54ae('0x53')]&&_0x5095c[_0x54ae('0x53')]!==_0x54ae('0x54')){logger[_0x54ae('0x1d')](_0x54ae('0x55'),_0x54ae('0x51'));_0x4fef57[_0x54ae('0x52')]=_0x199d78;}else{_0x4fef57[_0x54ae('0x52')]='';}return getUser(_0x577618,_0x4dcdfa,_0x5eed17,_0x4a7862,_0x16193f,_0x113ea9)['then'](function(_0x567f77){logger['info']('['+_0x113ea9[_0x54ae('0x1e')]()+_0x54ae('0x56'),_0x567f77[_0x54ae('0x27')]);logger[_0x54ae('0x1d')]('['+_0x113ea9[_0x54ae('0x1e')]()+_0x54ae('0x57'),_0x567f77[_0x54ae('0x21')]);return getEndUser(_0x567f77,_0x4dcdfa,_0x4a7862,_0x16193f,_0x4fef57,_0x113ea9);})['then'](function(_0x4b322e){logger[_0x54ae('0x1d')]('['+_0x113ea9[_0x54ae('0x1e')]()+_0x54ae('0x58'),_0x4b322e[_0x54ae('0x2c')]);logger[_0x54ae('0x1d')]('['+_0x113ea9[_0x54ae('0x1e')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x4fef57[_0x54ae('0x25')]);return getTicket(_0x4b322e,_0x4dcdfa,_0x4a7862,_0x16193f,_0x4fef57,_0x35d734,_0x113ea9);})['then'](function(_0x1cb990){logger['info'](util['format']('['+_0x113ea9[_0x54ae('0x1e')]()+_0x54ae('0x59'),_0x35d734['ticketType'],_0x1cb990[_0x54ae('0x46')]));logger[_0x54ae('0x1d')](util['format']('['+_0x113ea9[_0x54ae('0x1e')]()+_0x54ae('0x5a'),_0x113ea9));if(_0x113ea9!==_0x54ae('0x5b')){logger[_0x54ae('0x1d')]('['+_0x113ea9[_0x54ae('0x1e')]()+']',_0x54ae('0x5c'));emit(_0x4dcdfa[_0x54ae('0x4c')],_0x5eed17[_0x54ae('0x5d')],_0x35d734[_0x54ae('0x39')],_0x1cb990['ticketId']);}})['catch'](function(_0x42b749){logger['error']('['+_0x113ea9['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0x54ae('0x5e')](_0x42b749,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 46e1040..a983a41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb30=['Ticket\x20created!','validateEmail','then','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variable','variableName','Variable','name','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:browser:url','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','<br>','Tags','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','info'];(function(_0x1a3eaa,_0x8c27ae){var _0x44639c=function(_0x420397){while(--_0x420397){_0x1a3eaa['push'](_0x1a3eaa['shift']());}};_0x44639c(++_0x8c27ae);}(_0xbb30,0x1b7));var _0x0bb3=function(_0x33c9ae,_0x534733){_0x33c9ae=_0x33c9ae-0x0;var _0xcf1526=_0xbb30[_0x33c9ae];return _0xcf1526;};'use strict';var _=require(_0x0bb3('0x0'));var rp=require(_0x0bb3('0x1'));var md5=require(_0x0bb3('0x2'));var util=require(_0x0bb3('0x3'));var Redis=require(_0x0bb3('0x4'));var intUtil=require('./util');var config=require(_0x0bb3('0x5'));var logger=require(_0x0bb3('0x6'))(_0x0bb3('0x7'));config[_0x0bb3('0x8')]=_[_0x0bb3('0x9')](config[_0x0bb3('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x0bb3('0xa'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x0bb3('0xb')};function emit(_0x114e67,_0x453ac1,_0x361f43){io['to'](_0x114e67)[_0x0bb3('0xc')](_0x453ac1,_0x361f43);}function getTicket(_0x36d082,_0x36c9a8,_0x5167d2,_0x33d1f1,_0x134fdd){logger['info'](_0x0bb3('0xd'));var _0x369623=_[_0x0bb3('0xe')]({'responder_id':_0x36c9a8['id'],'requester_id':_0x5167d2['id'],'name':util[_0x0bb3('0xf')](_0x0bb3('0x10'),_0x134fdd['calleridname']),'phone':_0x134fdd[_0x0bb3('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x33d1f1['Subjects'],_0x134fdd,'\x20'),'description':intUtil[_0x0bb3('0x12')](_0x33d1f1[_0x0bb3('0x13')],_0x134fdd,_0x0bb3('0x14')),'tags':getTags(_0x33d1f1[_0x0bb3('0x15')],'name')},getCustomFields(_0x33d1f1[_0x0bb3('0x16')],_0x134fdd));_0x369623['custom_fields']=_[_0x0bb3('0x17')](_[_0x0bb3('0x18')](_0x369623[_0x0bb3('0x19')],'id'),_0x0bb3('0x1a'));return request({'uri':util[_0x0bb3('0xf')](_0x0bb3('0x1b'),_0x36d082[_0x0bb3('0x1c')]),'method':_0x0bb3('0x1d'),'body':_0x369623})['then'](function(_0x204a8b){logger[_0x0bb3('0x1e')](_0x0bb3('0x1f'));return _0x204a8b;});}function getUser(_0x3be1d7,_0xfe0700){if(intUtil[_0x0bb3('0x20')](_0xfe0700)){return request({'uri':util[_0x0bb3('0xf')]('%s/api/v2/agents',_0x3be1d7['remoteUri']),'qs':{'email':_0xfe0700}})[_0x0bb3('0x21')](function(_0x1456b6){if(_0x1456b6[_0x0bb3('0x22')]){logger[_0x0bb3('0x1e')](_0x0bb3('0x23'));return _[_0x0bb3('0x24')](_0x1456b6,function(_0x463d5c){return _0x463d5c[_0x0bb3('0x25')][_0x0bb3('0x26')]===_0xfe0700;});}else{logger[_0x0bb3('0x1e')](_0x0bb3('0x27'));return request({'uri':util[_0x0bb3('0xf')]('%s/api/v2/agents/me',_0x3be1d7[_0x0bb3('0x1c')])})['then'](function(_0x383f99){logger[_0x0bb3('0x1e')](_0x0bb3('0x28'));return _0x383f99;});}});}else{logger[_0x0bb3('0x1e')](_0x0bb3('0x29'));return request({'uri':util[_0x0bb3('0xf')](_0x0bb3('0x2a'),_0x3be1d7[_0x0bb3('0x1c')])})[_0x0bb3('0x21')](function(_0x3fdab5){logger['info']('Admin\x20account\x20selected.');return _0x3fdab5;});}}function getEndUser(_0x12f5ad,_0x5801cb,_0x46db13){logger[_0x0bb3('0x1e')](_0x0bb3('0x2b'),_0x46db13);return request({'uri':util[_0x0bb3('0xf')](_0x0bb3('0x2c'),_0x12f5ad[_0x0bb3('0x1c')]),'qs':{'phone':_0x46db13}})[_0x0bb3('0x21')](function(_0x5b3303){if(_0x5b3303[_0x0bb3('0x22')]){logger[_0x0bb3('0x1e')]('Enduser\x20found!');return _[_0x0bb3('0x24')](_0x5b3303,{'phone':_0x46db13});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x0bb3('0x2c'),_0x12f5ad[_0x0bb3('0x1c')]),'method':_0x0bb3('0x1d'),'body':{'name':_0x5801cb,'phone':_0x46db13}})[_0x0bb3('0x21')](function(_0x587ae2){logger[_0x0bb3('0x1e')](_0x0bb3('0x2d'));return _0x587ae2;});}});}function getAuth(_0x46d304){return util[_0x0bb3('0xf')](_0x0bb3('0x2e'),new Buffer(_0x46d304[_0x0bb3('0x2f')]+':X')[_0x0bb3('0x30')](_0x0bb3('0x31')));}function request(_0xbbd43e){logger[_0x0bb3('0x32')](_0x0bb3('0x33'),JSON[_0x0bb3('0x34')](_0xbbd43e));return rp(_['defaults'](_0xbbd43e,{'method':_0x0bb3('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x10b2d7,_0xdd98ac){var _0x4ccd36=[];if(_0x10b2d7&&_0x10b2d7[_0x0bb3('0x22')]>0x0){_0x4ccd36=_[_0x0bb3('0x36')](_0x10b2d7,_0xdd98ac);}return _0x4ccd36;}function getCustomFields(_0x18a967,_0x13613d){var _0x3f2bdf=[];var _0x2c8641={'custom_fields':[]};if(_0x18a967[_0x0bb3('0x22')]>0x0){_[_0x0bb3('0x37')](_0x18a967,function(_0x18013a){if(_['includes']([_0x0bb3('0x38'),_0x0bb3('0x39')],_0x18013a[_0x0bb3('0x3a')])&&_0x18013a[_0x0bb3('0x3b')]&&!_0x18013a[_0x0bb3('0x3c')]){_0x2c8641[_0x18013a[_0x0bb3('0x3b')][_0x0bb3('0x3d')]()]=_0x18013a[_0x0bb3('0x3e')][_0x0bb3('0x30')]();}else if(_['includes']([_0x0bb3('0x38'),_0x0bb3('0x39')],_0x18013a[_0x0bb3('0x3a')])&&_0x18013a[_0x0bb3('0x3f')]&&_0x18013a[_0x0bb3('0x3c')]){_0x2c8641[_0x0bb3('0x19')][_0x0bb3('0x40')]({'id':_0x18013a['idField'],'value':_0x18013a[_0x0bb3('0x3e')][_0x0bb3('0x30')]()});}else if(_0x18013a[_0x0bb3('0x3a')]===_0x0bb3('0x41')&&_0x18013a['variableName']&&_0x18013a['idField']&&_0x18013a[_0x0bb3('0x3c')]){_0x13613d[_0x18013a[_0x0bb3('0x42')]]&&_0x2c8641[_0x0bb3('0x19')]['push']({'id':_0x18013a[_0x0bb3('0x3f')],'value':_0x13613d[_0x18013a[_0x0bb3('0x42')]][_0x0bb3('0x30')]()});}else if(_0x18013a[_0x0bb3('0x3a')]==='customVariable'&&_0x18013a['Variable']&&_0x18013a[_0x0bb3('0x43')]['name']&&_0x18013a[_0x0bb3('0x3f')]&&_0x18013a[_0x0bb3('0x3c')]){_0x13613d[_0x18013a['Variable'][_0x0bb3('0x44')]['toLowerCase']()]&&_0x2c8641['custom_fields'][_0x0bb3('0x40')]({'id':_0x18013a['idField'],'value':_0x13613d[_0x18013a[_0x0bb3('0x43')][_0x0bb3('0x44')][_0x0bb3('0x3d')]()][_0x0bb3('0x30')]()});}});}return _0x2c8641;}exports['queue']=function(_0x4db9b0,_0x3a7103,_0x15daaf,_0x1189cc,_0x56d70c,_0x5afbe1){var _0x105468,_0x31ead0;_0x5afbe1[_0x0bb3('0x1c')]=intUtil[_0x0bb3('0x45')](_0x5afbe1['remoteUri']);_0x5afbe1['serverUrl']=intUtil[_0x0bb3('0x45')](_0x5afbe1[_0x0bb3('0x46')]);if(_0x56d70c&&_0x56d70c[_0x0bb3('0x47')]){logger[_0x0bb3('0x1e')]('[QUEUE]',_0x0bb3('0x48'));_0x3a7103['recordingURL']=util[_0x0bb3('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5afbe1[_0x0bb3('0x46')],_0x3a7103[_0x0bb3('0x49')],md5(_0x3a7103[_0x0bb3('0x49')]));}else{_0x3a7103[_0x0bb3('0x4a')]='';}headers[_0x0bb3('0x4b')]=getAuth(_0x5afbe1);return getUser(_0x5afbe1,_0x1189cc[_0x0bb3('0x26')])[_0x0bb3('0x21')](function(_0x270f5){_0x105468=_0x270f5;logger['info'](_0x0bb3('0x4c'),_0x105468['id']);return getEndUser(_0x5afbe1,_0x3a7103[_0x0bb3('0x4d')],_0x3a7103[_0x0bb3('0x11')]);})[_0x0bb3('0x21')](function(_0x3d6539){_0x31ead0=_0x3d6539;logger[_0x0bb3('0x1e')]('The\x20Enduser\x20ID\x20is:',_0x31ead0['id']);return getTicket(_0x5afbe1,_0x105468,_0x31ead0,_0x15daaf,_0x3a7103);})[_0x0bb3('0x21')](function(_0x4d40ee){if(_0x4d40ee&&_0x4d40ee['id']){logger[_0x0bb3('0x1e')](_0x0bb3('0x1f'));logger[_0x0bb3('0x1e')](_0x0bb3('0x4e'),_0x4d40ee['id']);logger[_0x0bb3('0x1e')](_0x0bb3('0x4f'),_0x0bb3('0x50'));emit(util[_0x0bb3('0xf')]('user:%s',_0x1189cc[_0x0bb3('0x44')]),'trigger:browser:url',{'uri':util['format'](_0x0bb3('0x51'),_0x5afbe1[_0x0bb3('0x1c')],_0x4d40ee['id'])});}})[_0x0bb3('0x52')](function(_0x3d0943){logger['error'](_0x0bb3('0x4f'),JSON[_0x0bb3('0x34')](_0x3d0943));});};exports[_0x0bb3('0x53')]=function(_0x4163cb,_0x287f84,_0x32fa3c,_0x50e5df,_0x52fc2c,_0x248aff,_0x120a2a){var _0x531aae,_0x1dffe8;_0x248aff[_0x0bb3('0x1c')]=intUtil[_0x0bb3('0x45')](_0x248aff[_0x0bb3('0x1c')]);_0x248aff[_0x0bb3('0x46')]=intUtil['stripTrailingSlash'](_0x248aff[_0x0bb3('0x46')]);if(_0x120a2a&&_0x120a2a[_0x0bb3('0x54')]&&_0x120a2a['recordingFormat']!==_0x0bb3('0x55')){logger[_0x0bb3('0x1e')](_0x0bb3('0x56'),_0x0bb3('0x48'));_0x287f84[_0x0bb3('0x4a')]=util['format'](_0x0bb3('0x57'),_0x248aff[_0x0bb3('0x46')],_0x287f84['uniqueid'],md5(_0x287f84[_0x0bb3('0x49')]));}headers[_0x0bb3('0x4b')]=getAuth(_0x248aff);return getUser(_0x248aff,_0x50e5df[_0x0bb3('0x26')])[_0x0bb3('0x21')](function(_0x1debb8){_0x531aae=_0x1debb8;logger['info'](_0x0bb3('0x4c'),_0x531aae['id']);return getEndUser(_0x248aff,_0x287f84[_0x0bb3('0x58')],_0x287f84[_0x0bb3('0x59')]);})['then'](function(_0x460c61){_0x1dffe8=_0x460c61;logger[_0x0bb3('0x1e')](_0x0bb3('0x5a'),_0x1dffe8['id']);return getTicket(_0x248aff,_0x531aae,_0x1dffe8,_0x32fa3c,_0x287f84);})[_0x0bb3('0x21')](function(_0x2de398){if(_0x2de398&&_0x2de398['id']){logger[_0x0bb3('0x1e')](_0x0bb3('0x1f'));logger[_0x0bb3('0x1e')]('The\x20Ticket\x20ID\x20is:',_0x2de398['id']);logger[_0x0bb3('0x1e')](_0x0bb3('0x56'),_0x0bb3('0x50'));emit(util[_0x0bb3('0xf')]('user:%s',_0x50e5df[_0x0bb3('0x44')]),_0x0bb3('0x5b'),{'uri':util[_0x0bb3('0xf')](_0x0bb3('0x51'),_0x248aff['remoteUri'],_0x2de398['id'])});}})[_0x0bb3('0x52')](function(_0x4bbbf6){logger['error'](_0x0bb3('0x56'),JSON[_0x0bb3('0x34')](_0x4bbbf6));});};exports['unmanaged']=function(_0x5f4394,_0x59d4c0,_0x168427,_0x5bb044,_0x315d3d,_0x5eff45){var _0x5f097d,_0x384907;_0x5eff45['remoteUri']=intUtil['stripTrailingSlash'](_0x5eff45['remoteUri']);_0x5eff45['serverUrl']=intUtil[_0x0bb3('0x45')](_0x5eff45[_0x0bb3('0x46')]);if(_0x315d3d&&_0x315d3d[_0x0bb3('0x47')]){logger['info']('['+_0x59d4c0[_0x0bb3('0x5c')][_0x0bb3('0x5d')]()+']',_0x0bb3('0x48'));_0x59d4c0[_0x0bb3('0x4a')]=util[_0x0bb3('0xf')](_0x0bb3('0x57'),_0x5eff45[_0x0bb3('0x46')],_0x59d4c0[_0x0bb3('0x49')],md5(_0x59d4c0[_0x0bb3('0x49')]));}else{_0x59d4c0[_0x0bb3('0x4a')]='';}headers[_0x0bb3('0x4b')]=getAuth(_0x5eff45);return getUser(_0x5eff45,'')['then'](function(_0x2d2cd5){_0x5f097d=_0x2d2cd5;logger['info'](_0x0bb3('0x4c'),_0x5f097d['id']);return getEndUser(_0x5eff45,_0x59d4c0['calleridname'],_0x59d4c0[_0x0bb3('0x11')]);})[_0x0bb3('0x21')](function(_0xaa1e3e){_0x384907=_0xaa1e3e;logger[_0x0bb3('0x1e')](_0x0bb3('0x5a'),_0x384907['id']);return getTicket(_0x5eff45,_0x5f097d,_0x384907,_0x168427,_0x59d4c0);})[_0x0bb3('0x21')](function(_0x38c51b){if(_0x38c51b){logger[_0x0bb3('0x1e')]('Ticket\x20created!');logger['info'](_0x0bb3('0x4e'),_0x38c51b['id']);}})['catch'](function(_0x1a6308){logger['error']('['+_0x59d4c0[_0x0bb3('0x5c')][_0x0bb3('0x5d')]()+']',JSON[_0x0bb3('0x34')](_0x1a6308));});};
\ No newline at end of file
+var _0x303f=['Caller\x20-\x20%s','calleridnum','getString','Descriptions','<br>','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','validateEmail','%s/api/v2/agents','then','length','Agent\x20found!','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','GET','forEach','string','picklist','type','nameField','customField','toLowerCase','content','includes','idField','push','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','stringify','outbound','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','error','unmanaged','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','lodash','md5','util','ioredis','./util','freshdesk','redis','localhost','application/json','info','Creating\x20new\x20ticket...','format'];(function(_0x1fe5f5,_0x171ac6){var _0x4b6d9d=function(_0x247f88){while(--_0x247f88){_0x1fe5f5['push'](_0x1fe5f5['shift']());}};_0x4b6d9d(++_0x171ac6);}(_0x303f,0x1b6));var _0xf303=function(_0x3ebdeb,_0x39ad30){_0x3ebdeb=_0x3ebdeb-0x0;var _0xcb7638=_0x303f[_0x3ebdeb];return _0xcb7638;};'use strict';var _=require(_0xf303('0x0'));var rp=require('request-promise');var md5=require(_0xf303('0x1'));var util=require(_0xf303('0x2'));var Redis=require(_0xf303('0x3'));var intUtil=require(_0xf303('0x4'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xf303('0x5'));config['redis']=_['defaults'](config[_0xf303('0x6')],{'host':_0xf303('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf303('0x6')]));var headers={'Content-Type':_0xf303('0x8'),'Accept':_0xf303('0x8')};function emit(_0x539854,_0x4dc4d2,_0x4a4775){io['to'](_0x539854)['emit'](_0x4dc4d2,_0x4a4775);}function getTicket(_0xb73f4d,_0x558257,_0x52ff61,_0x1d6dee,_0x27b3fd){logger[_0xf303('0x9')](_0xf303('0xa'));var _0x2954c6=_['merge']({'responder_id':_0x558257['id'],'requester_id':_0x52ff61['id'],'name':util[_0xf303('0xb')](_0xf303('0xc'),_0x27b3fd['calleridname']),'phone':_0x27b3fd[_0xf303('0xd')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xf303('0xe')](_0x1d6dee['Subjects'],_0x27b3fd,'\x20'),'description':intUtil[_0xf303('0xe')](_0x1d6dee[_0xf303('0xf')],_0x27b3fd,_0xf303('0x10')),'tags':getTags(_0x1d6dee['Tags'],_0xf303('0x11'))},getCustomFields(_0x1d6dee[_0xf303('0x12')],_0x27b3fd));_0x2954c6[_0xf303('0x13')]=_[_0xf303('0x14')](_[_0xf303('0x15')](_0x2954c6[_0xf303('0x13')],'id'),_0xf303('0x16'));return request({'uri':util['format'](_0xf303('0x17'),_0xb73f4d[_0xf303('0x18')]),'method':_0xf303('0x19'),'body':_0x2954c6})['then'](function(_0x42795d){logger[_0xf303('0x9')]('Ticket\x20created!');return _0x42795d;});}function getUser(_0x89013,_0x40364a){if(intUtil[_0xf303('0x1a')](_0x40364a)){return request({'uri':util['format'](_0xf303('0x1b'),_0x89013[_0xf303('0x18')]),'qs':{'email':_0x40364a}})[_0xf303('0x1c')](function(_0x2f3772){if(_0x2f3772[_0xf303('0x1d')]){logger[_0xf303('0x9')](_0xf303('0x1e'));return _['find'](_0x2f3772,function(_0x2e70c0){return _0x2e70c0['contact'][_0xf303('0x1f')]===_0x40364a;});}else{logger[_0xf303('0x9')](_0xf303('0x20'));return request({'uri':util[_0xf303('0xb')](_0xf303('0x21'),_0x89013['remoteUri'])})[_0xf303('0x1c')](function(_0x2a447a){logger[_0xf303('0x9')](_0xf303('0x22'));return _0x2a447a;});}});}else{logger[_0xf303('0x9')](_0xf303('0x23'));return request({'uri':util[_0xf303('0xb')]('%s/api/v2/agents/me',_0x89013[_0xf303('0x18')])})['then'](function(_0x11d0b3){logger[_0xf303('0x9')](_0xf303('0x22'));return _0x11d0b3;});}}function getEndUser(_0x10c45a,_0x247e2e,_0x5491fc){logger[_0xf303('0x9')](_0xf303('0x24'),_0x5491fc);return request({'uri':util[_0xf303('0xb')](_0xf303('0x25'),_0x10c45a['remoteUri']),'qs':{'phone':_0x5491fc}})['then'](function(_0x3d598e){if(_0x3d598e['length']){logger[_0xf303('0x9')]('Enduser\x20found!');return _[_0xf303('0x26')](_0x3d598e,{'phone':_0x5491fc});}else{logger['info'](_0xf303('0x27'));return request({'uri':util[_0xf303('0xb')](_0xf303('0x25'),_0x10c45a['remoteUri']),'method':_0xf303('0x19'),'body':{'name':_0x247e2e,'phone':_0x5491fc}})[_0xf303('0x1c')](function(_0x4d7318){logger['info'](_0xf303('0x28'));return _0x4d7318;});}});}function getAuth(_0x31356c){return util[_0xf303('0xb')](_0xf303('0x29'),new Buffer(_0x31356c[_0xf303('0x2a')]+':X')[_0xf303('0x2b')](_0xf303('0x2c')));}function request(_0x5ba44e){logger[_0xf303('0x2d')](_0xf303('0x2e'),JSON['stringify'](_0x5ba44e));return rp(_['defaults'](_0x5ba44e,{'method':_0xf303('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x4cf127,_0x458f7c){var _0x4798a4=[];if(_0x4cf127&&_0x4cf127[_0xf303('0x1d')]>0x0){_0x4798a4=_['map'](_0x4cf127,_0x458f7c);}return _0x4798a4;}function getCustomFields(_0x494fd9,_0xd569da){var _0x43fa93=[];var _0x2cb7e8={'custom_fields':[]};if(_0x494fd9[_0xf303('0x1d')]>0x0){_[_0xf303('0x30')](_0x494fd9,function(_0x282650){if(_['includes']([_0xf303('0x31'),_0xf303('0x32')],_0x282650[_0xf303('0x33')])&&_0x282650[_0xf303('0x34')]&&!_0x282650[_0xf303('0x35')]){_0x2cb7e8[_0x282650[_0xf303('0x34')][_0xf303('0x36')]()]=_0x282650[_0xf303('0x37')][_0xf303('0x2b')]();}else if(_[_0xf303('0x38')]([_0xf303('0x31'),_0xf303('0x32')],_0x282650['type'])&&_0x282650[_0xf303('0x39')]&&_0x282650[_0xf303('0x35')]){_0x2cb7e8['custom_fields'][_0xf303('0x3a')]({'id':_0x282650['idField'],'value':_0x282650['content'][_0xf303('0x2b')]()});}else if(_0x282650[_0xf303('0x33')]==='variable'&&_0x282650[_0xf303('0x3b')]&&_0x282650[_0xf303('0x39')]&&_0x282650[_0xf303('0x35')]){_0xd569da[_0x282650[_0xf303('0x3b')]]&&_0x2cb7e8[_0xf303('0x13')]['push']({'id':_0x282650[_0xf303('0x39')],'value':_0xd569da[_0x282650['variableName']][_0xf303('0x2b')]()});}else if(_0x282650[_0xf303('0x33')]===_0xf303('0x3c')&&_0x282650[_0xf303('0x3d')]&&_0x282650[_0xf303('0x3d')][_0xf303('0x11')]&&_0x282650[_0xf303('0x39')]&&_0x282650[_0xf303('0x35')]){_0xd569da[_0x282650[_0xf303('0x3d')][_0xf303('0x11')][_0xf303('0x36')]()]&&_0x2cb7e8['custom_fields'][_0xf303('0x3a')]({'id':_0x282650[_0xf303('0x39')],'value':_0xd569da[_0x282650['Variable'][_0xf303('0x11')][_0xf303('0x36')]()][_0xf303('0x2b')]()});}});}return _0x2cb7e8;}exports[_0xf303('0x3e')]=function(_0x26058d,_0x3f4aab,_0x4645b3,_0x5bebf5,_0x27092b,_0x2860c8){var _0xee87f3,_0x56ff70;_0x2860c8['remoteUri']=intUtil[_0xf303('0x3f')](_0x2860c8['remoteUri']);_0x2860c8['serverUrl']=intUtil['stripTrailingSlash'](_0x2860c8[_0xf303('0x40')]);if(_0x27092b&&_0x27092b[_0xf303('0x41')]){logger[_0xf303('0x9')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3f4aab[_0xf303('0x42')]=util['format'](_0xf303('0x43'),_0x2860c8[_0xf303('0x40')],_0x3f4aab['uniqueid'],md5(_0x3f4aab[_0xf303('0x44')]));}else{_0x3f4aab[_0xf303('0x42')]='';}headers[_0xf303('0x45')]=getAuth(_0x2860c8);return getUser(_0x2860c8,_0x5bebf5[_0xf303('0x1f')])[_0xf303('0x1c')](function(_0x1a4cfa){_0xee87f3=_0x1a4cfa;logger[_0xf303('0x9')](_0xf303('0x46'),_0xee87f3['id']);return getEndUser(_0x2860c8,_0x3f4aab[_0xf303('0x47')],_0x3f4aab['calleridnum']);})[_0xf303('0x1c')](function(_0x5eac64){_0x56ff70=_0x5eac64;logger['info']('The\x20Enduser\x20ID\x20is:',_0x56ff70['id']);return getTicket(_0x2860c8,_0xee87f3,_0x56ff70,_0x4645b3,_0x3f4aab);})['then'](function(_0x565795){if(_0x565795&&_0x565795['id']){logger[_0xf303('0x9')](_0xf303('0x48'));logger['info'](_0xf303('0x49'),_0x565795['id']);logger[_0xf303('0x9')](_0xf303('0x4a'),_0xf303('0x4b'));emit(util['format']('user:%s',_0x5bebf5[_0xf303('0x11')]),_0xf303('0x4c'),{'uri':util[_0xf303('0xb')]('%s/helpdesk/tickets/%d',_0x2860c8[_0xf303('0x18')],_0x565795['id'])});}})[_0xf303('0x4d')](function(_0x13728d){logger['error'](_0xf303('0x4a'),JSON[_0xf303('0x4e')](_0x13728d));});};exports[_0xf303('0x4f')]=function(_0x2365dd,_0x1b8873,_0x458d3f,_0x4cbe4a,_0x4d8c18,_0x50372c,_0x295f71){var _0x17ad8f,_0x3ee073;_0x50372c[_0xf303('0x18')]=intUtil[_0xf303('0x3f')](_0x50372c[_0xf303('0x18')]);_0x50372c[_0xf303('0x40')]=intUtil[_0xf303('0x3f')](_0x50372c['serverUrl']);if(_0x295f71&&_0x295f71['recordingFormat']&&_0x295f71['recordingFormat']!==_0xf303('0x50')){logger[_0xf303('0x9')](_0xf303('0x51'),_0xf303('0x52'));_0x1b8873[_0xf303('0x42')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x50372c[_0xf303('0x40')],_0x1b8873['uniqueid'],md5(_0x1b8873[_0xf303('0x44')]));}headers['Authorization']=getAuth(_0x50372c);return getUser(_0x50372c,_0x4cbe4a['email'])['then'](function(_0x407a9d){_0x17ad8f=_0x407a9d;logger[_0xf303('0x9')]('The\x20User\x20ID\x20is:',_0x17ad8f['id']);return getEndUser(_0x50372c,_0x1b8873[_0xf303('0x53')],_0x1b8873[_0xf303('0x54')]);})[_0xf303('0x1c')](function(_0x4dd448){_0x3ee073=_0x4dd448;logger[_0xf303('0x9')]('The\x20Enduser\x20ID\x20is:',_0x3ee073['id']);return getTicket(_0x50372c,_0x17ad8f,_0x3ee073,_0x458d3f,_0x1b8873);})[_0xf303('0x1c')](function(_0x3384ff){if(_0x3384ff&&_0x3384ff['id']){logger[_0xf303('0x9')](_0xf303('0x48'));logger[_0xf303('0x9')](_0xf303('0x49'),_0x3384ff['id']);logger[_0xf303('0x9')](_0xf303('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf303('0xb')]('user:%s',_0x4cbe4a[_0xf303('0x11')]),'trigger:browser:url',{'uri':util[_0xf303('0xb')]('%s/helpdesk/tickets/%d',_0x50372c['remoteUri'],_0x3384ff['id'])});}})[_0xf303('0x4d')](function(_0x39892d){logger[_0xf303('0x55')](_0xf303('0x51'),JSON[_0xf303('0x4e')](_0x39892d));});};exports[_0xf303('0x56')]=function(_0x60b549,_0x22622b,_0x4d5251,_0x3a2f4b,_0x243b09,_0x551f02){var _0x2ab467,_0x331bfc;_0x551f02[_0xf303('0x18')]=intUtil[_0xf303('0x3f')](_0x551f02[_0xf303('0x18')]);_0x551f02[_0xf303('0x40')]=intUtil[_0xf303('0x3f')](_0x551f02['serverUrl']);if(_0x243b09&&_0x243b09[_0xf303('0x41')]){logger[_0xf303('0x9')]('['+_0x22622b[_0xf303('0x57')][_0xf303('0x58')]()+']','Recording\x20is\x20enabled!');_0x22622b[_0xf303('0x42')]=util[_0xf303('0xb')](_0xf303('0x43'),_0x551f02[_0xf303('0x40')],_0x22622b[_0xf303('0x44')],md5(_0x22622b[_0xf303('0x44')]));}else{_0x22622b['recordingURL']='';}headers[_0xf303('0x45')]=getAuth(_0x551f02);return getUser(_0x551f02,'')[_0xf303('0x1c')](function(_0x3fd06d){_0x2ab467=_0x3fd06d;logger[_0xf303('0x9')]('The\x20User\x20ID\x20is:',_0x2ab467['id']);return getEndUser(_0x551f02,_0x22622b['calleridname'],_0x22622b[_0xf303('0xd')]);})[_0xf303('0x1c')](function(_0x103190){_0x331bfc=_0x103190;logger[_0xf303('0x9')](_0xf303('0x59'),_0x331bfc['id']);return getTicket(_0x551f02,_0x2ab467,_0x331bfc,_0x4d5251,_0x22622b);})[_0xf303('0x1c')](function(_0x25bbde){if(_0x25bbde){logger[_0xf303('0x9')]('Ticket\x20created!');logger[_0xf303('0x9')](_0xf303('0x49'),_0x25bbde['id']);}})[_0xf303('0x4d')](function(_0x492951){logger['error']('['+_0x22622b[_0xf303('0x57')][_0xf303('0x58')]()+']',JSON[_0xf303('0x4e')](_0x492951));});};
\ No newline at end of file
index 809011d..7d090c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e72=['catch','error','toUpperCase','message','GET','Getting\x20user\x20list','then','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Subjects','Descriptions','Contact','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','info','Getting\x20admin\x20information','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found'];(function(_0x37cd10,_0x423bec){var _0x45539d=function(_0x57433c){while(--_0x57433c){_0x37cd10['push'](_0x37cd10['shift']());}};_0x45539d(++_0x423bec);}(_0x8e72,0x139));var _0x28e7=function(_0x518eb9,_0x4388bb){_0x518eb9=_0x518eb9-0x0;var _0x11f33c=_0x8e72[_0x518eb9];return _0x11f33c;};'use strict';var _=require(_0x28e7('0x0'));var rp=require(_0x28e7('0x1'));var md5=require('md5');var util=require(_0x28e7('0x2'));var moment=require(_0x28e7('0x3'));var Promise=require(_0x28e7('0x4'));var Redis=require(_0x28e7('0x5'));var intUtil=require(_0x28e7('0x6'));var config=require(_0x28e7('0x7'));var logger=require(_0x28e7('0x8'))(_0x28e7('0x9'));config[_0x28e7('0xa')]=_[_0x28e7('0xb')](config[_0x28e7('0xa')],{'host':_0x28e7('0xc'),'port':0x18eb});var io=require(_0x28e7('0xd'))(new Redis(config[_0x28e7('0xa')]));function getAdminId(_0x1bbd14,_0x4fd820,_0x165dfe,_0x286700){return new Promise(function(_0xfeb2df,_0x11305e){var _0x2c095e=![];var _0x351146={'method':'GET','uri':_0x286700+_0x28e7('0xe'),'json':!![]};_0x351146['headers']=_0x165dfe;logger[_0x28e7('0xf')](_0x28e7('0x10'));return rp(_0x351146)['then'](function(_0x1a96f1){if(_0x1a96f1){var _0x2e0f9b=_0x1a96f1['users'];var _0x4c649a=null;for(_0x4c649a=0x0;_0x4c649a<_0x2e0f9b[_0x28e7('0x11')];_0x4c649a++){if(_0x2e0f9b[_0x4c649a][_0x28e7('0x12')]===_0x1bbd14[_0x28e7('0x13')]){_0x1bbd14[_0x28e7('0x14')]=_0x2e0f9b[_0x4c649a]['id'];_0x2c095e=!![];}}if(_0x2c095e){logger[_0x28e7('0xf')](_0x28e7('0x15'),_0x1bbd14['adminId']);_0xfeb2df(_0x1bbd14);}else{_0x11305e({'statusCode':0x194,'message':_0x28e7('0x16')});}}else{_0x11305e({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x28e7('0x17')](function(_0x37e38f){logger[_0x28e7('0x18')]('['+[_0x4fd820[_0x28e7('0x19')]()]+']',_0x37e38f[_0x28e7('0x1a')]);_0x11305e(_0x37e38f);});});}function getUser(_0x138d6b,_0x23cf42,_0x24dcb0){return function(_0x54ac12){return new Promise(function(_0x5b2d86,_0x308686){var _0x29317c={'method':_0x28e7('0x1b'),'uri':_0x24dcb0+'/api/selector/owners','json':!![]};_0x29317c['headers']=_0x23cf42;logger['info'](_0x28e7('0x1c'));return rp(_0x29317c)[_0x28e7('0x1d')](function(_0x140381){if(_0x140381){var _0x5c3f41=_0x140381[_0x28e7('0x1e')];var _0x5ae82d=![];var _0x2b736c=null;if(_0x54ac12[_0x28e7('0x1f')]!==null){logger[_0x28e7('0xf')](_0x28e7('0x20'),_0x54ac12[_0x28e7('0x1f')]);_0x54ac12[_0x28e7('0x21')]=_0x54ac12['agentEmail'];for(_0x2b736c=0x0;_0x2b736c<_0x5c3f41[_0x28e7('0x11')];_0x2b736c++){if(_0x5c3f41[_0x2b736c][_0x28e7('0x12')]===_0x54ac12['agentEmail']){_0x5ae82d=!![];_0x54ac12['userId']=_0x5c3f41[_0x2b736c]['id'];logger[_0x28e7('0xf')]('User\x20found:',_0x54ac12[_0x28e7('0x22')]);}}}if(!_0x5ae82d){logger[_0x28e7('0xf')](_0x28e7('0x23'));_0x54ac12[_0x28e7('0x21')]=_0x54ac12[_0x28e7('0x13')];_0x54ac12[_0x28e7('0x22')]=_0x54ac12['adminId'];_0x5ae82d=!![];}if(_0x5ae82d){_0x5b2d86(_0x54ac12);}else{_0x308686({'statusCode':0x194,'message':_0x28e7('0x16')});}}else{_0x308686({'statusCode':0x194,'message':_0x28e7('0x16')});}})[_0x28e7('0x17')](function(_0x3f8377){logger[_0x28e7('0x18')]('['+[_0x138d6b[_0x28e7('0x19')]()]+']',_0x3f8377['message']);_0x308686(_0x3f8377);});});};}function searchContact(_0x4a1141,_0x20aa22,_0x557e67,_0x32a892){return new Promise(function(_0x30bd97,_0x3b4a9d){var _0x22f11b={'method':'GET','headers':_0x20aa22,'uri':_0x4a1141+'/api/lookup?q='+_0x32a892+_0x28e7('0x24')+_0x557e67+'&entities=contact','json':!![]};rp(_0x22f11b)['then'](function(_0xf2d155){var _0x3ebb4b=_[_0x28e7('0x25')](_0xf2d155[_0x28e7('0x26')][_0x28e7('0x26')],[_0x557e67,_0x32a892]);_0x30bd97(_0x3ebb4b);})['catch'](function(_0x194297){_0x3b4a9d(_0x194297);});});}function getEndUser(_0x5d6c08,_0x49e63e,_0x28b788){return function(_0x21e247){return new Promise(function(_0x9ec71b,_0xfd3ab1){logger[_0x28e7('0xf')](util[_0x28e7('0x27')](_0x28e7('0x28'),_0x21e247[_0x28e7('0x29')]));searchContact(_0x28b788,_0x49e63e,_0x28e7('0x2a'),_0x21e247[_0x28e7('0x29')])['then'](function(_0xadc4d8){if(_0xadc4d8){_0x21e247[_0x28e7('0x2b')]=_0xadc4d8['id'];logger['info'](_0x28e7('0x2c'),_0x21e247[_0x28e7('0x2b')]);return _0x9ec71b(_0x21e247);}searchContact(_0x28b788,_0x49e63e,_0x28e7('0x2d'),_0x21e247[_0x28e7('0x29')])[_0x28e7('0x1d')](function(_0x56e43c){if(_0x56e43c){_0x21e247[_0x28e7('0x2b')]=_0x56e43c['id'];logger[_0x28e7('0xf')](_0x28e7('0x2e'),_0x21e247[_0x28e7('0x2b')]);return _0x9ec71b(_0x21e247);}createEndUser(_0x21e247,_0x5d6c08,_0x49e63e,_0x28b788)[_0x28e7('0x1d')](function(_0x322bd7){logger[_0x28e7('0xf')](_0x28e7('0x2f'),_0x322bd7[_0x28e7('0x2b')]);return _0x9ec71b(_0x322bd7);});});})['catch'](function(_0x5dc75c){_0xfd3ab1(_0x5dc75c);});});};}function createEndUser(_0x186f69,_0x2cd283,_0x4451ab,_0x31fcf6){return new Promise(function(_0x589e9a,_0x43e65c){var _0x122621=moment();var _0x11e1f7={'method':_0x28e7('0x30'),'uri':_0x31fcf6+'/api/contacts','body':{'contact':{'last_name':_0x186f69['contactNumber'],'work_number':_0x186f69[_0x28e7('0x29')],'mobile_number':_0x186f69['contactNumber'],'owner_id':_0x186f69[_0x28e7('0x22')],'created_at':_0x122621[_0x28e7('0x27')](_0x28e7('0x31'))}},'json':!![]};_0x11e1f7[_0x28e7('0x32')]=_0x4451ab;logger[_0x28e7('0xf')](_0x28e7('0x33'));return rp(_0x11e1f7)[_0x28e7('0x1d')](function(_0x2fb8e8){_0x186f69[_0x28e7('0x2b')]=_0x2fb8e8[_0x28e7('0x34')]['id'];_0x589e9a(_0x186f69);})[_0x28e7('0x17')](function(_0x505a0d){logger[_0x28e7('0x18')]('['+[_0x2cd283[_0x28e7('0x19')]()]+']',_0x505a0d[_0x28e7('0x1a')]);_0x43e65c(_0x505a0d['message']);});});}function getTicket(_0x29b74b,_0x3e0b58,_0x3621f1,_0x4a4494,_0x53fac5){return function(_0x15bfff){logger[_0x28e7('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x5d85ae,_0x5bbaad){var _0x1e8df9=moment();var _0x4a91ba={'method':_0x28e7('0x30'),'uri':_0x3621f1+'/api/tasks','body':{'title':intUtil[_0x28e7('0x35')](_0x4a4494[_0x28e7('0x36')],_0x53fac5,'\x20'),'description':intUtil[_0x28e7('0x35')](_0x4a4494[_0x28e7('0x37')],_0x53fac5,'\x0a'),'owner_id':_0x15bfff[_0x28e7('0x22')],'creater_id':_0x15bfff['adminId'],'targetable_id':_0x15bfff[_0x28e7('0x2b')],'targetable_type':_0x28e7('0x38'),'created_at':_0x1e8df9['format'](_0x28e7('0x31')),'due_date':_0x1e8df9['add'](0x1e,'m')['format'](_0x28e7('0x31'))},'json':!![]};_0x4a91ba['headers']=_0x3e0b58;return rp(_0x4a91ba)[_0x28e7('0x1d')](function(_0x14c576){_0x15bfff[_0x28e7('0x39')]=_0x14c576[_0x28e7('0x3a')]['id'];logger['info'](_0x28e7('0x3b'),_0x15bfff[_0x28e7('0x39')]);_0x5d85ae(_0x15bfff);})[_0x28e7('0x17')](function(_0x1e4752){logger[_0x28e7('0x18')]('['+[_0x29b74b['toUpperCase']()]+']',_0x1e4752[_0x28e7('0x1a')]);_0x5bbaad(_0x1e4752['message']);});});};}function emit(_0x222d90,_0x221bf3,_0x303b5b){var _0x13010c={'uri':_0x222d90+_0x28e7('0x3c')+_0x303b5b};io['to'](util[_0x28e7('0x27')](_0x28e7('0x3d'),_0x221bf3))[_0x28e7('0x3e')](_0x28e7('0x3f'),_0x13010c);}exports['cs']=function(_0x580620,_0x16e7e7,_0xd583b9,_0x3685d5,_0x294baf,_0x20d938,_0x3e0d5c,_0x50ceb1){var _0xa0ee07={};var _0x3b0e7e={'Authorization':'Token\x20token='+_0x20d938[_0x28e7('0x40')]};_0x20d938[_0x28e7('0x41')]=intUtil[_0x28e7('0x42')](_0x20d938[_0x28e7('0x41')]);_0x20d938[_0x28e7('0x43')]=intUtil[_0x28e7('0x42')](_0x20d938['serverUrl']);var _0x429d3a=_0x20d938[_0x28e7('0x41')];_0xa0ee07['adminEmail']=_0x20d938[_0x28e7('0x44')];_0xa0ee07[_0x28e7('0x29')]=_0x50ceb1[_0x28e7('0x45')]()===_0x28e7('0x46')?_0x16e7e7['destcalleridnum']:_0x16e7e7['calleridnum'];_0xa0ee07['callDirection']=_0x50ceb1===_0x28e7('0x47')||_0x50ceb1==='unmanaged'?_0x28e7('0x47'):_0x28e7('0x46');if(_0x3685d5){_0xa0ee07[_0x28e7('0x1f')]=_0x3685d5['email'];}var _0x238808=util[_0x28e7('0x27')](_0x28e7('0x48'),_0x20d938[_0x28e7('0x43')],_0x16e7e7[_0x28e7('0x49')],md5(_0x16e7e7[_0x28e7('0x49')]));if(_0x294baf&&_0x294baf[_0x28e7('0x4a')]){logger['info'](_0x28e7('0x4b'),_0x28e7('0x4c'));_0x16e7e7['recordingURL']=_0x238808;}else if(_0x3e0d5c&&_0x3e0d5c[_0x28e7('0x4d')]&&_0x3e0d5c['recordingFormat']!==_0x28e7('0x4e')){logger[_0x28e7('0xf')](_0x28e7('0x4f'),_0x28e7('0x4c'));_0x16e7e7[_0x28e7('0x50')]=_0x238808;}else{_0x16e7e7['recordingURL']='';}return getAdminId(_0xa0ee07,_0x50ceb1,_0x3b0e7e,_0x429d3a)[_0x28e7('0x1d')](getUser(_0x50ceb1,_0x3b0e7e,_0x429d3a))[_0x28e7('0x1d')](getEndUser(_0x50ceb1,_0x3b0e7e,_0x429d3a))[_0x28e7('0x1d')](getTicket(_0x50ceb1,_0x3b0e7e,_0x429d3a,_0xd583b9,_0x16e7e7))['then'](function(_0x21b115){logger[_0x28e7('0xf')](util[_0x28e7('0x27')]('The\x20ticket\x20ID\x20is:\x20%s',_0x21b115['ticketId']));if(_0x50ceb1!=='unmanaged'){logger[_0x28e7('0xf')]('['+[_0x50ceb1['toUpperCase']()]+']',_0x28e7('0x51'));emit(_0x429d3a,_0x3685d5[_0x28e7('0x52')],_0x21b115[_0x28e7('0x2b')]);}})['catch'](function(_0x3bd9ea){logger[_0x28e7('0x18')]('['+[_0x50ceb1['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x28e7('0x53')](_0x3bd9ea,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xfb98=['ticketId','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','catch','toUpperCase','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','task'];(function(_0x18089a,_0x2c2ff3){var _0xdafb3e=function(_0x2997cd){while(--_0x2997cd){_0x18089a['push'](_0x18089a['shift']());}};_0xdafb3e(++_0x2c2ff3);}(_0xfb98,0xbd));var _0x8fb9=function(_0x53cfcf,_0x353ea2){_0x53cfcf=_0x53cfcf-0x0;var _0x2328a4=_0xfb98[_0x53cfcf];return _0x2328a4;};'use strict';var _=require(_0x8fb9('0x0'));var rp=require(_0x8fb9('0x1'));var md5=require(_0x8fb9('0x2'));var util=require(_0x8fb9('0x3'));var moment=require(_0x8fb9('0x4'));var Promise=require(_0x8fb9('0x5'));var Redis=require(_0x8fb9('0x6'));var intUtil=require(_0x8fb9('0x7'));var config=require(_0x8fb9('0x8'));var logger=require(_0x8fb9('0x9'))('freshsales');config[_0x8fb9('0xa')]=_[_0x8fb9('0xb')](config['redis'],{'host':_0x8fb9('0xc'),'port':0x18eb});var io=require(_0x8fb9('0xd'))(new Redis(config[_0x8fb9('0xa')]));function getAdminId(_0x43dde0,_0x4f8c5b,_0x4a850c,_0x5edc1b){return new Promise(function(_0x48d4de,_0x477c0e){var _0x28119c=![];var _0xe5a1c1={'method':'GET','uri':_0x5edc1b+_0x8fb9('0xe'),'json':!![]};_0xe5a1c1[_0x8fb9('0xf')]=_0x4a850c;logger[_0x8fb9('0x10')](_0x8fb9('0x11'));return rp(_0xe5a1c1)[_0x8fb9('0x12')](function(_0x364d8e){if(_0x364d8e){var _0x37658e=_0x364d8e[_0x8fb9('0x13')];var _0x32e779=null;for(_0x32e779=0x0;_0x32e779<_0x37658e[_0x8fb9('0x14')];_0x32e779++){if(_0x37658e[_0x32e779][_0x8fb9('0x15')]===_0x43dde0[_0x8fb9('0x16')]){_0x43dde0[_0x8fb9('0x17')]=_0x37658e[_0x32e779]['id'];_0x28119c=!![];}}if(_0x28119c){logger['info'](_0x8fb9('0x18'),_0x43dde0[_0x8fb9('0x17')]);_0x48d4de(_0x43dde0);}else{_0x477c0e({'statusCode':0x194,'message':_0x8fb9('0x19')});}}else{_0x477c0e({'statusCode':0x194,'message':_0x8fb9('0x19')});}})['catch'](function(_0xfe184){logger[_0x8fb9('0x1a')]('['+[_0x4f8c5b['toUpperCase']()]+']',_0xfe184[_0x8fb9('0x1b')]);_0x477c0e(_0xfe184);});});}function getUser(_0xd5767f,_0x250795,_0x3d850a){return function(_0x576c4f){return new Promise(function(_0xd38ecf,_0x569c4d){var _0x574852={'method':'GET','uri':_0x3d850a+_0x8fb9('0xe'),'json':!![]};_0x574852[_0x8fb9('0xf')]=_0x250795;logger['info'](_0x8fb9('0x1c'));return rp(_0x574852)[_0x8fb9('0x12')](function(_0x192813){if(_0x192813){var _0x4aa50b=_0x192813['users'];var _0x589e33=![];var _0x2e01c2=null;if(_0x576c4f[_0x8fb9('0x1d')]!==null){logger[_0x8fb9('0x10')](_0x8fb9('0x1e'),_0x576c4f['agentEmail']);_0x576c4f[_0x8fb9('0x1f')]=_0x576c4f[_0x8fb9('0x1d')];for(_0x2e01c2=0x0;_0x2e01c2<_0x4aa50b[_0x8fb9('0x14')];_0x2e01c2++){if(_0x4aa50b[_0x2e01c2][_0x8fb9('0x15')]===_0x576c4f[_0x8fb9('0x1d')]){_0x589e33=!![];_0x576c4f[_0x8fb9('0x20')]=_0x4aa50b[_0x2e01c2]['id'];logger[_0x8fb9('0x10')](_0x8fb9('0x21'),_0x576c4f['userId']);}}}if(!_0x589e33){logger[_0x8fb9('0x10')](_0x8fb9('0x22'));_0x576c4f[_0x8fb9('0x1f')]=_0x576c4f[_0x8fb9('0x16')];_0x576c4f[_0x8fb9('0x20')]=_0x576c4f[_0x8fb9('0x17')];_0x589e33=!![];}if(_0x589e33){_0xd38ecf(_0x576c4f);}else{_0x569c4d({'statusCode':0x194,'message':_0x8fb9('0x19')});}}else{_0x569c4d({'statusCode':0x194,'message':_0x8fb9('0x19')});}})[_0x8fb9('0x23')](function(_0x2aeb55){logger['error']('['+[_0xd5767f[_0x8fb9('0x24')]()]+']',_0x2aeb55[_0x8fb9('0x1b')]);_0x569c4d(_0x2aeb55);});});};}function searchContact(_0x3ac5ed,_0x15d81d,_0x1efe21,_0x1c8efe){return new Promise(function(_0x40db22,_0x20b7e2){var _0x5b7011={'method':'GET','headers':_0x15d81d,'uri':_0x3ac5ed+_0x8fb9('0x25')+_0x1c8efe+'&f='+_0x1efe21+_0x8fb9('0x26'),'json':!![]};rp(_0x5b7011)[_0x8fb9('0x12')](function(_0x1e51c4){var _0x361d60=_[_0x8fb9('0x27')](_0x1e51c4[_0x8fb9('0x28')]['contacts'],[_0x1efe21,_0x1c8efe]);_0x40db22(_0x361d60);})['catch'](function(_0x4085e2){_0x20b7e2(_0x4085e2);});});}function getEndUser(_0x27da76,_0xb285c8,_0x5c1817){return function(_0x974282){return new Promise(function(_0x1a3dee,_0x5ab92){logger[_0x8fb9('0x10')](util[_0x8fb9('0x29')](_0x8fb9('0x2a'),_0x974282[_0x8fb9('0x2b')]));searchContact(_0x5c1817,_0xb285c8,'mobile_number',_0x974282['contactNumber'])[_0x8fb9('0x12')](function(_0xb18414){if(_0xb18414){_0x974282[_0x8fb9('0x2c')]=_0xb18414['id'];logger['info'](_0x8fb9('0x2d'),_0x974282['endUserId']);return _0x1a3dee(_0x974282);}searchContact(_0x5c1817,_0xb285c8,'work_number',_0x974282[_0x8fb9('0x2b')])['then'](function(_0x18dafb){if(_0x18dafb){_0x974282['endUserId']=_0x18dafb['id'];logger[_0x8fb9('0x10')](_0x8fb9('0x2e'),_0x974282[_0x8fb9('0x2c')]);return _0x1a3dee(_0x974282);}createEndUser(_0x974282,_0x27da76,_0xb285c8,_0x5c1817)[_0x8fb9('0x12')](function(_0x4dd56b){logger[_0x8fb9('0x10')](_0x8fb9('0x2f'),_0x4dd56b['endUserId']);return _0x1a3dee(_0x4dd56b);});});})['catch'](function(_0x444b71){_0x5ab92(_0x444b71);});});};}function createEndUser(_0x2db79f,_0x47fcc1,_0xf3623c,_0x5329fe){return new Promise(function(_0x4ad3ad,_0x2e8fc6){var _0x388427=moment();var _0x5caf5e={'method':'POST','uri':_0x5329fe+'/api/contacts','body':{'contact':{'last_name':_0x2db79f[_0x8fb9('0x2b')],'work_number':_0x2db79f[_0x8fb9('0x2b')],'mobile_number':_0x2db79f[_0x8fb9('0x2b')],'owner_id':_0x2db79f['userId'],'created_at':_0x388427[_0x8fb9('0x29')](_0x8fb9('0x30'))}},'json':!![]};_0x5caf5e['headers']=_0xf3623c;logger[_0x8fb9('0x10')](_0x8fb9('0x31'));return rp(_0x5caf5e)[_0x8fb9('0x12')](function(_0x45e84e){_0x2db79f['endUserId']=_0x45e84e[_0x8fb9('0x32')]['id'];_0x4ad3ad(_0x2db79f);})['catch'](function(_0x3a4eb7){logger['error']('['+[_0x47fcc1[_0x8fb9('0x24')]()]+']',_0x3a4eb7[_0x8fb9('0x1b')]);_0x2e8fc6(_0x3a4eb7[_0x8fb9('0x1b')]);});});}function getTicket(_0xb4bde3,_0x2c2cf1,_0x2eec29,_0x5da9d1,_0x4e670b){return function(_0x41e9bb){logger[_0x8fb9('0x10')](_0x8fb9('0x33'));return new Promise(function(_0x3e82d2,_0x19aef7){var _0x1a6089=moment();var _0x7dbc1d={'method':'POST','uri':_0x2eec29+_0x8fb9('0x34'),'body':{'title':intUtil[_0x8fb9('0x35')](_0x5da9d1[_0x8fb9('0x36')],_0x4e670b,'\x20'),'description':intUtil['getString'](_0x5da9d1[_0x8fb9('0x37')],_0x4e670b,'\x0a'),'owner_id':_0x41e9bb[_0x8fb9('0x20')],'creater_id':_0x41e9bb['adminId'],'targetable_id':_0x41e9bb[_0x8fb9('0x2c')],'targetable_type':'Contact','created_at':_0x1a6089[_0x8fb9('0x29')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x1a6089['add'](0x1e,'m')[_0x8fb9('0x29')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x7dbc1d[_0x8fb9('0xf')]=_0x2c2cf1;return rp(_0x7dbc1d)[_0x8fb9('0x12')](function(_0x56fdec){_0x41e9bb['ticketId']=_0x56fdec[_0x8fb9('0x38')]['id'];logger[_0x8fb9('0x10')]('Task\x20created:',_0x41e9bb[_0x8fb9('0x39')]);_0x3e82d2(_0x41e9bb);})[_0x8fb9('0x23')](function(_0x5bf36b){logger[_0x8fb9('0x1a')]('['+[_0xb4bde3[_0x8fb9('0x24')]()]+']',_0x5bf36b[_0x8fb9('0x1b')]);_0x19aef7(_0x5bf36b[_0x8fb9('0x1b')]);});});};}function emit(_0xc7b8f2,_0x3fd38f,_0x9365f4){var _0x22d8f8={'uri':_0xc7b8f2+'/contacts/'+_0x9365f4};io['to'](util[_0x8fb9('0x29')](_0x8fb9('0x3a'),_0x3fd38f))[_0x8fb9('0x3b')]('trigger:browser:url',_0x22d8f8);}exports['cs']=function(_0x23b55c,_0x2e52d,_0x4a91ed,_0x142b0c,_0x19e9a2,_0x344d49,_0x8c58fb,_0x3d8f6a){var _0x40529e={};var _0x44694d={'Authorization':_0x8fb9('0x3c')+_0x344d49[_0x8fb9('0x3d')]};_0x344d49[_0x8fb9('0x3e')]=intUtil[_0x8fb9('0x3f')](_0x344d49[_0x8fb9('0x3e')]);_0x344d49['serverUrl']=intUtil[_0x8fb9('0x3f')](_0x344d49[_0x8fb9('0x40')]);var _0x28e55f=_0x344d49['remoteUri'];_0x40529e[_0x8fb9('0x16')]=_0x344d49[_0x8fb9('0x41')];_0x40529e[_0x8fb9('0x2b')]=_0x3d8f6a[_0x8fb9('0x42')]()===_0x8fb9('0x43')?_0x2e52d[_0x8fb9('0x44')]:_0x2e52d['calleridnum'];_0x40529e[_0x8fb9('0x45')]=_0x3d8f6a===_0x8fb9('0x46')||_0x3d8f6a===_0x8fb9('0x47')?'queue':_0x8fb9('0x43');if(_0x142b0c){_0x40529e[_0x8fb9('0x1d')]=_0x142b0c['email'];}var _0x2b57f2=util[_0x8fb9('0x29')](_0x8fb9('0x48'),_0x344d49[_0x8fb9('0x40')],_0x2e52d['uniqueid'],md5(_0x2e52d['uniqueid']));if(_0x19e9a2&&_0x19e9a2['monitor_format']){logger[_0x8fb9('0x10')](_0x8fb9('0x49'),_0x8fb9('0x4a'));_0x2e52d[_0x8fb9('0x4b')]=_0x2b57f2;}else if(_0x8c58fb&&_0x8c58fb[_0x8fb9('0x4c')]&&_0x8c58fb[_0x8fb9('0x4c')]!=='none'){logger[_0x8fb9('0x10')](_0x8fb9('0x4d'),'Recording\x20is\x20enabled!');_0x2e52d[_0x8fb9('0x4b')]=_0x2b57f2;}else{_0x2e52d[_0x8fb9('0x4b')]='';}return getAdminId(_0x40529e,_0x3d8f6a,_0x44694d,_0x28e55f)[_0x8fb9('0x12')](getUser(_0x3d8f6a,_0x44694d,_0x28e55f))[_0x8fb9('0x12')](getEndUser(_0x3d8f6a,_0x44694d,_0x28e55f))[_0x8fb9('0x12')](getTicket(_0x3d8f6a,_0x44694d,_0x28e55f,_0x4a91ed,_0x2e52d))['then'](function(_0x1c1ec5){logger[_0x8fb9('0x10')](util['format'](_0x8fb9('0x4e'),_0x1c1ec5[_0x8fb9('0x39')]));if(_0x3d8f6a!==_0x8fb9('0x47')){logger[_0x8fb9('0x10')]('['+[_0x3d8f6a[_0x8fb9('0x24')]()]+']',_0x8fb9('0x4f'));emit(_0x28e55f,_0x142b0c[_0x8fb9('0x50')],_0x1c1ec5['endUserId']);}})[_0x8fb9('0x23')](function(_0x13ef03){logger[_0x8fb9('0x1a')]('['+[_0x3d8f6a[_0x8fb9('0x24')]()]+_0x8fb9('0x51'),util['inspect'](_0x13ef03,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0c2493f..ef80096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x249e=['./desk','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','routeId','outbound','log','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','util','./zendesk','./sugarcrm','./freshdesk'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x249e,0x1d0));var _0xe249=function(_0x5b0a5a,_0x438f3c){_0x5b0a5a=_0x5b0a5a-0x0;var _0x586b54=_0x249e[_0x5b0a5a];return _0x586b54;};'use strict';var _=require('lodash');var util=require(_0xe249('0x0'));var zendesk=require(_0xe249('0x1'));var salesforce=require('./salesforce');var sugarcrm=require(_0xe249('0x2'));var freshdesk=require(_0xe249('0x3'));var zoho=require('./zoho');var desk=require(_0xe249('0x4'));var vtiger=require('./vtiger');var servicenow=require(_0xe249('0x5'));var dynamics365=require(_0xe249('0x6'));var freshsales=require(_0xe249('0x7'));var integrations=[_0xe249('0x8'),_0xe249('0x9'),_0xe249('0xa'),_0xe249('0xb'),_0xe249('0xc'),_0xe249('0xd'),_0xe249('0xe'),_0xe249('0xf'),_0xe249('0x10'),_0xe249('0x11')];exports[_0xe249('0x12')]=function(_0x3f99a9,_0x224cb5,_0x1deb4e,_0x5ddd18,_0x48ced1,_0x149a5f){if(_0x1deb4e){if(_[_0xe249('0x13')](integrations,_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')]())){try{var _0x227aae=null;var _0x4245a5='';var _0x5a842a=_0x1deb4e[_0x3f99a9['data1']['toLowerCase']()];if(_0x5a842a){var _0x155bb6=_0x5a842a[_0x3f99a9[_0xe249('0x16')]];if(_0x155bb6){var _0x19bea7=_[_0xe249('0x17')](_0x155bb6[_0xe249('0x18')],{'id':parseInt(_0x3f99a9[_0xe249('0x19')],0xa)});if(_0x19bea7){if(_0x5ddd18){if(_0x48ced1&&_0x224cb5['queue']){_0x4245a5='queue';}else if(_0x224cb5[_0xe249('0x1a')]){_0x4245a5=_0xe249('0x1b');}else{console[_0xe249('0x1c')]('EVENT\x20UNKNOWN',_0x224cb5);}}else{_0x4245a5=_0xe249('0x1d');}switch(_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')]()){case'zendesk':zendesk[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0x9'):salesforce[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0xa'):sugarcrm[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case'freshdesk':freshdesk[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0xc'):zoho[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0xd'):desk[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case'vtiger':vtiger[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0x10'):freshsales['cs'](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f,_0x4245a5);break;case _0xe249('0x11'):servicenow['cs'](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f,_0x4245a5);break;case _0xe249('0xf'):dynamics365['cs'](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f,_0x4245a5);break;default:console[_0xe249('0x1c')](_0xe249('0x1e'));}}else{_0x227aae=require(_0xe249('0x1f'))(_0x3f99a9['data1'][_0xe249('0x15')]());_0x227aae[_0xe249('0x20')](_0xe249('0x21'),util[_0xe249('0x22')](_0xe249('0x23'),_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')](),_0x3f99a9[_0xe249('0x19')]));}}else{_0x227aae=require(_0xe249('0x1f'))(_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')]());_0x227aae['error'](_0xe249('0x21'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')](),_0x3f99a9['data2']));}}else{}}catch(_0x4a2993){console[_0xe249('0x20')](_0x4a2993);}}}};
\ No newline at end of file
+var _0x9976=['sugarcrm','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./servicenow','./dynamics365','./freshsales','zendesk','freshdesk','zoho','dynamics365','freshsales','servicenow','exec','data1','toLowerCase','data2','Configurations','data3','queue','routeId','log','EVENT\x20UNKNOWN','unmanaged'];(function(_0x6c8b9b,_0xc36fb5){var _0x3c9b08=function(_0x27b754){while(--_0x27b754){_0x6c8b9b['push'](_0x6c8b9b['shift']());}};_0x3c9b08(++_0xc36fb5);}(_0x9976,0x11f));var _0x6997=function(_0x23ef8a,_0x29c790){_0x23ef8a=_0x23ef8a-0x0;var _0x5560a4=_0x9976[_0x23ef8a];return _0x5560a4;};'use strict';var _=require(_0x6997('0x0'));var util=require(_0x6997('0x1'));var zendesk=require(_0x6997('0x2'));var salesforce=require(_0x6997('0x3'));var sugarcrm=require(_0x6997('0x4'));var freshdesk=require(_0x6997('0x5'));var zoho=require(_0x6997('0x6'));var desk=require(_0x6997('0x7'));var vtiger=require('./vtiger');var servicenow=require(_0x6997('0x8'));var dynamics365=require(_0x6997('0x9'));var freshsales=require(_0x6997('0xa'));var integrations=[_0x6997('0xb'),'salesforce','sugarcrm',_0x6997('0xc'),_0x6997('0xd'),'desk','vtiger',_0x6997('0xe'),_0x6997('0xf'),_0x6997('0x10')];exports[_0x6997('0x11')]=function(_0x3a8c,_0x4ac37e,_0x424955,_0x207cf2,_0x53567d,_0x3f1642){if(_0x424955){if(_['includes'](integrations,_0x3a8c[_0x6997('0x12')][_0x6997('0x13')]())){try{var _0x28f3a2=null;var _0x1d07ad='';var _0x3dc8cc=_0x424955[_0x3a8c['data1']['toLowerCase']()];if(_0x3dc8cc){var _0x59b076=_0x3dc8cc[_0x3a8c[_0x6997('0x14')]];if(_0x59b076){var _0x3e0ba2=_['find'](_0x59b076[_0x6997('0x15')],{'id':parseInt(_0x3a8c[_0x6997('0x16')],0xa)});if(_0x3e0ba2){if(_0x207cf2){if(_0x53567d&&_0x4ac37e[_0x6997('0x17')]){_0x1d07ad='queue';}else if(_0x4ac37e[_0x6997('0x18')]){_0x1d07ad='outbound';}else{console[_0x6997('0x19')](_0x6997('0x1a'),_0x4ac37e);}}else{_0x1d07ad=_0x6997('0x1b');}switch(_0x3a8c[_0x6997('0x12')]['toLowerCase']()){case'zendesk':zendesk[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case'salesforce':salesforce[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case _0x6997('0x1c'):sugarcrm[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case'freshdesk':freshdesk[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case _0x6997('0xd'):zoho[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case'desk':desk[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case'vtiger':vtiger[_0x1d07ad](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642);break;case _0x6997('0xf'):freshsales['cs'](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642,_0x1d07ad);break;case _0x6997('0x10'):servicenow['cs'](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642,_0x1d07ad);break;case _0x6997('0xe'):dynamics365['cs'](_0x3a8c,_0x4ac37e,_0x3e0ba2,_0x207cf2,_0x53567d,_0x59b076,_0x3f1642,_0x1d07ad);break;default:console[_0x6997('0x19')](_0x6997('0x1d'));}}else{_0x28f3a2=require(_0x6997('0x1e'))(_0x3a8c[_0x6997('0x12')][_0x6997('0x13')]());_0x28f3a2[_0x6997('0x1f')](_0x6997('0x20'),util[_0x6997('0x21')](_0x6997('0x22'),_0x3a8c[_0x6997('0x12')][_0x6997('0x13')](),_0x3a8c['data3']));}}else{_0x28f3a2=require(_0x6997('0x1e'))(_0x3a8c['data1']['toLowerCase']());_0x28f3a2[_0x6997('0x1f')](_0x6997('0x20'),util[_0x6997('0x21')]('%s\x20account\x20#%s\x20not\x20found',_0x3a8c['data1'][_0x6997('0x13')](),_0x3a8c[_0x6997('0x14')]));}}else{}}catch(_0x1d599f){console['error'](_0x1d599f);}}}};
\ No newline at end of file
index bdeb5c3..b330044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc909=['unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','md5','jsforce','util','ioredis','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','contact','WhoId','account','Case','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','isNil','validateEmail','User','find','execute','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','then','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','Phone','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','create','string','picklist','idField','content','variable','variableName','toString','customVariable','Variable','name','securityToken','Connection','remoteUri','https://login.salesforce.com','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','email','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','%s/%s/e','instanceUrl','error','catch','recordingFormat','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','Fields','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','trigger:browser:url','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized'];(function(_0x56ec38,_0xeeb83c){var _0x1ba2be=function(_0x4ec0f8){while(--_0x4ec0f8){_0x56ec38['push'](_0x56ec38['shift']());}};_0x1ba2be(++_0xeeb83c);}(_0xc909,0x85));var _0x9c90=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xc909[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x9c90('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0x9c90('0x1'));var jsforce=require(_0x9c90('0x2'));var util=require(_0x9c90('0x3'));var Redis=require(_0x9c90('0x4'));var intUtil=require('./util');var config=require(_0x9c90('0x5'));var logger=require(_0x9c90('0x6'))(_0x9c90('0x7'));config[_0x9c90('0x8')]=_[_0x9c90('0x9')](config[_0x9c90('0x8')],{'host':_0x9c90('0xa'),'port':0x18eb});var io=require(_0x9c90('0xb'))(new Redis(config['redis']));function emit(_0xb0bdf,_0x52f1a3,_0x540b3e){io['to'](_0xb0bdf)['emit'](_0x52f1a3,_0x540b3e);}function getTicket(_0x1a0ff0,_0x3ba37b,_0x160af8,_0x21f132,_0x12ecfb,_0x500ff9,_0x41c933,_0x5ce3d5){var _0x11b87e=Object[_0x9c90('0xc')]({},{'OwnerId':_0x3ba37b['id'],'Subject':intUtil[_0x9c90('0xd')](_0x21f132[_0x9c90('0xe')],_0x12ecfb,'\x20'),'Description':intUtil['getString'](_0x21f132[_0x9c90('0xf')],_0x12ecfb,'\x0a')},getCustomFields(_0x500ff9,_0x12ecfb));if(_0x160af8){if(_0x21f132[_0x9c90('0x10')]===_0x9c90('0x11')){_0x11b87e[_0x9c90('0x12')]=moment[_0x9c90('0x13')]();_0x11b87e['IsReminderSet']=![];_0x11b87e[_0x9c90('0x14')]=![];if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x16')||_0x160af8[_0x9c90('0x15')]==='lead'){_0x11b87e[_0x9c90('0x17')]=_0x160af8['id'];}else if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x18')){_0x11b87e['WhatId']=_0x160af8['id'];}}else if(_0x21f132[_0x9c90('0x10')]===_0x9c90('0x19')){if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x16')){_0x11b87e[_0x9c90('0x1a')]=_0x160af8['id'];}else if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x18')){_0x11b87e[_0x9c90('0x1b')]=_0x160af8['id'];}else if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x1c')&&_0x21f132[_0x9c90('0x1d')]){_0x11b87e[_0x21f132[_0x9c90('0x1d')]]=_0x160af8['id'];}else{logger[_0x9c90('0x1e')](_0x9c90('0x1f'));}}}return _0x41c933[_0x9c90('0x20')](_0x21f132[_0x9c90('0x10')])['create'](_0x11b87e);}function getUser(_0x2f8174,_0x146429,_0x49266a){if(!_[_0x9c90('0x21')](_0x146429)&&intUtil[_0x9c90('0x22')](_0x146429)){var _0x323df9={'Email':_0x146429};var _0x16c1e3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x49266a[_0x9c90('0x20')](_0x9c90('0x23'))[_0x9c90('0x24')](_0x323df9,_0x16c1e3)[_0x9c90('0x25')]()['then'](function(_0x144db9){if(_0x144db9[_0x9c90('0x26')]){var _0x2008e5=_[_0x9c90('0x24')](_0x144db9,function(_0x311a6f){return _0x311a6f[_0x9c90('0x27')]===_0x146429;});if(_0x2008e5){logger[_0x9c90('0x1e')](_0x9c90('0x28'),_0x146429);return BPromise[_0x9c90('0x29')]({'id':_0x2008e5['Id'],'name':_0x2008e5[_0x9c90('0x2a')]});}}else{logger[_0x9c90('0x1e')](_0x9c90('0x2b'),_0x146429);return _0x49266a[_0x9c90('0x2c')]()['then'](function(_0x3ef147){return BPromise[_0x9c90('0x29')]({'id':_0x3ef147[_0x9c90('0x2d')],'name':_0x3ef147['display_name']});});}});}else{logger[_0x9c90('0x1e')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x146429);return _0x49266a[_0x9c90('0x2c')]()['then'](function(_0x49491a){return BPromise[_0x9c90('0x29')]({'id':_0x49491a[_0x9c90('0x2d')],'name':_0x49491a[_0x9c90('0x2e')]});});}}function getEndUser(_0x24c234,_0x542091,_0x3a7f01,_0x2cbedd,_0xba5f5){var _0x2126ab={'$or':{'Phone':_0x2cbedd}};var _0x235e46={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x9c90('0x29')]()['then'](function(){logger[_0x9c90('0x1e')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x2cbedd,_0x542091['moduleSearch']);switch(_0x542091[_0x9c90('0x2f')]){case _0x9c90('0x30'):var _0x5354e0=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x32')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x32')]]=_0x2cbedd;_['merge'](_0x5354e0[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x34'))[_0x9c90('0x24')](_0x5354e0,_0x235e46)['execute']()[_0x9c90('0x35')](function(_0x8565){if(_0x8565&&_0x8565[_0x9c90('0x26')]){return _0x8565;}else{var _0xf7c6fe=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x36')]){var _0x3697b9={};_0x3697b9[_0x542091[_0x9c90('0x36')]]=_0x2cbedd;_[_0x9c90('0x37')](_0xf7c6fe[_0x9c90('0x33')],_0x3697b9);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x38'))['find'](_0xf7c6fe,_0x235e46);}});case _0x9c90('0x39'):var _0x652e8f=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x3a')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x3a')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x652e8f[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5['sobject'](_0x9c90('0x3b'))['find'](_0x652e8f,_0x235e46)[_0x9c90('0x25')]()[_0x9c90('0x35')](function(_0x3ba921){if(_0x3ba921&&_0x3ba921[_0x9c90('0x26')]){return _0x3ba921;}else{var _0x18ac12=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x32')]){var _0x51e615={};_0x51e615[_0x542091[_0x9c90('0x32')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x18ac12[_0x9c90('0x33')],_0x51e615);}return _0xba5f5['sobject'](_0x9c90('0x34'))[_0x9c90('0x24')](_0x18ac12,_0x235e46)[_0x9c90('0x35')](function(_0x19ae32){if(_0x19ae32&&_0x19ae32[_0x9c90('0x26')]){return _0x19ae32;}else{var _0x5a9c9c=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x36')]){var _0x26f5a2={};_0x26f5a2[_0x542091[_0x9c90('0x36')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x5a9c9c[_0x9c90('0x33')],_0x26f5a2);}return _0xba5f5['sobject'](_0x9c90('0x38'))['find'](_0x5a9c9c,_0x235e46);}});}});case _0x9c90('0x16'):var _0x5354e0=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x32')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x32')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x5354e0[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x34'))['find'](_0x5354e0,_0x235e46)[_0x9c90('0x25')]();case _0x9c90('0x1c'):var _0x25849e=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x36')]){var _0x3af32d={};_0x3af32d[_0x542091['additionalSearchLead']]=_0x2cbedd;_[_0x9c90('0x37')](_0x25849e[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')]('Lead')[_0x9c90('0x24')](_0x25849e,_0x235e46);case _0x9c90('0x18'):var _0x652e8f=_['cloneDeep'](_0x2126ab);if(_0x542091[_0x9c90('0x3a')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x3a')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x652e8f[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x3b'))[_0x9c90('0x24')](_0x652e8f,_0x235e46);default:return null;}})['then'](function(_0x5d4e02){if(_0x5d4e02&&_0x5d4e02[_0x9c90('0x26')]){var _0xfb61cb=_['first'](_0x5d4e02);if(_0xfb61cb){return BPromise[_0x9c90('0x29')]({'id':_0xfb61cb['Id'],'name':_0xfb61cb[_0x9c90('0x2a')],'phone':_0xfb61cb[_0x9c90('0x3c')],'endUserType':_0xfb61cb['attributes'][_0x9c90('0x3d')][_0x9c90('0x3e')]()});}}})[_0x9c90('0x35')](function(_0x131c01){if(_0x131c01){logger[_0x9c90('0x1e')](_0x9c90('0x3f'),_0x131c01[_0x9c90('0x15')],_0x2cbedd);return BPromise[_0x9c90('0x29')](_0x131c01);}else{logger[_0x9c90('0x1e')](_0x9c90('0x40'),_0x2cbedd);var _0x4e589b={'Phone':_0x2cbedd};if(_0x542091[_0x9c90('0x41')]){if(_0x542091['moduleCreate']===_0x9c90('0x16')){logger['info'](_0x9c90('0x42'),_0x2cbedd,_0x542091['moduleCreate']);_0x4e589b[_0x9c90('0x43')]=_0x3a7f01!==_0x9c90('0x44')?_0x3a7f01:util[_0x9c90('0x45')](_0x9c90('0x46'),_0x2cbedd);}else if(_0x542091['moduleCreate']===_0x9c90('0x1c')){logger[_0x9c90('0x1e')](_0x9c90('0x42'),_0x2cbedd,_0x542091[_0x9c90('0x41')]);_0x4e589b['LastName']=_0x3a7f01!=='<unknown>'?_0x3a7f01:util['format'](_0x9c90('0x46'),_0x2cbedd);_0x4e589b[_0x9c90('0x47')]=_0x9c90('0x48');}else if(_0x542091[_0x9c90('0x41')]==='account'){logger[_0x9c90('0x1e')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x2cbedd,_0x542091[_0x9c90('0x41')]);_0x4e589b[_0x9c90('0x2a')]=_0x3a7f01!==_0x9c90('0x44')?_0x3a7f01:util[_0x9c90('0x45')](_0x9c90('0x46'),_0x2cbedd);}else{return null;}}return _0xba5f5[_0x9c90('0x20')](_[_0x9c90('0x49')](_0x542091['moduleCreate']))[_0x9c90('0x4a')](_0x4e589b)['then'](function(_0x13e38a){return BPromise[_0x9c90('0x29')]({'id':_0x13e38a['id'],'endUserType':_0x542091[_0x9c90('0x41')]});});}});}function getCustomFields(_0x58ca46,_0x172ecc){var _0x303d20={};if(_0x58ca46['length']>0x0){_['forEach'](_0x58ca46,function(_0x2ef429){if(_['includes']([_0x9c90('0x4b'),_0x9c90('0x4c')],_0x2ef429['type'])&&_0x2ef429[_0x9c90('0x4d')]){_0x303d20[_0x2ef429['idField']]=_0x2ef429[_0x9c90('0x4e')]['toString']();}else if(_0x2ef429[_0x9c90('0x3d')]===_0x9c90('0x4f')&&_0x2ef429[_0x9c90('0x50')]&&_0x2ef429[_0x9c90('0x4d')]){_0x172ecc[_0x2ef429['variableName']]&&(_0x303d20[_0x2ef429[_0x9c90('0x4d')]]=_0x172ecc[_0x2ef429[_0x9c90('0x50')]][_0x9c90('0x51')]());}else if(_0x2ef429['type']===_0x9c90('0x52')&&_0x2ef429[_0x9c90('0x53')]&&_0x2ef429['Variable'][_0x9c90('0x54')]&&_0x2ef429[_0x9c90('0x4d')]){_0x172ecc[_0x2ef429[_0x9c90('0x53')][_0x9c90('0x54')][_0x9c90('0x3e')]()]&&(_0x303d20[_0x2ef429[_0x9c90('0x4d')]]=_0x172ecc[_0x2ef429[_0x9c90('0x53')][_0x9c90('0x54')][_0x9c90('0x3e')]()][_0x9c90('0x51')]());}});}return _0x303d20;}function getConnection(_0x200cef){var _0x717338=_0x200cef['password']['concat'](_0x200cef[_0x9c90('0x55')]);var _0x13bdfb=new jsforce[(_0x9c90('0x56'))]({'oauth2':{'loginUrl':_0x200cef[_0x9c90('0x57')]||_0x9c90('0x58'),'clientId':_0x200cef['clientId'],'clientSecret':_0x200cef[_0x9c90('0x59')]}});return _0x13bdfb[_0x9c90('0x5a')](_0x200cef[_0x9c90('0x5b')],_0x717338)[_0x9c90('0x35')](function(){logger[_0x9c90('0x1e')](_0x9c90('0x5c'));return _0x13bdfb;});}exports[_0x9c90('0x5d')]=function(_0x56014a,_0x10c146,_0x917301,_0x2c14d3,_0x3dc9fe,_0x3444cc){var _0x16155d,_0x4dfa34,_0x577dec,_0x4aaac6;_0x3444cc[_0x9c90('0x5e')]=intUtil[_0x9c90('0x5f')](_0x3444cc[_0x9c90('0x5e')]);_0x3444cc[_0x9c90('0x57')]=intUtil[_0x9c90('0x5f')](_0x3444cc[_0x9c90('0x57')]);if(_0x3dc9fe&&_0x3dc9fe[_0x9c90('0x60')]){logger['info'](_0x9c90('0x61'),_0x9c90('0x62'));_0x10c146['recordingURL']=util[_0x9c90('0x45')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3444cc[_0x9c90('0x5e')],_0x10c146[_0x9c90('0x63')],md5(_0x10c146['uniqueid']));}else{_0x10c146['recordingURL']='';}return getConnection(_0x3444cc)[_0x9c90('0x35')](function(_0x1f5af8){_0x4aaac6=_0x1f5af8;return getUser(_0x3444cc,_0x2c14d3[_0x9c90('0x64')],_0x4aaac6);})[_0x9c90('0x35')](function(_0xf06189){_0x16155d=_0xf06189;return getEndUser(_0x3444cc,_0x917301,_0x10c146['calleridname'],_0x10c146[_0x9c90('0x65')],_0x4aaac6);})[_0x9c90('0x35')](function(_0x156d1c){_0x4dfa34=_0x156d1c;return getTicket(_0x3444cc,_0x16155d,_0x4dfa34,_0x917301,_0x10c146,_0x917301['Fields'],_0x4aaac6,_0x9c90('0x5d'));})[_0x9c90('0x35')](function(_0x30ee07){_0x577dec=_0x30ee07;logger['info'](_0x9c90('0x66'),_0x577dec['id']);logger['info'](_0x9c90('0x67'),_0x577dec['id'],_0x2c14d3['name'],_0x3444cc[_0x9c90('0x3d')]);switch(_0x3444cc[_0x9c90('0x3d')]){case'integrationTab':emit(util[_0x9c90('0x45')](_0x9c90('0x68'),_0x2c14d3['name']),_0x9c90('0x69'),{'recordId':_0x577dec['id']});break;case'newTab':emit(util['format'](_0x9c90('0x68'),_0x2c14d3[_0x9c90('0x54')]),'trigger:browser:url',{'uri':util[_0x9c90('0x45')](_0x9c90('0x6a'),_0x4aaac6[_0x9c90('0x6b')],_0x577dec['id'])});break;default:logger[_0x9c90('0x6c')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x9c90('0x6d')](function(_0x40f606){logger['error'](_0x9c90('0x61'),_0x40f606);});};exports['outbound']=function(_0x29d7ba,_0x27c477,_0x2a3a78,_0x42674b,_0x5cc6c5,_0x48194a,_0x112243){var _0x16c534,_0x56ab5c,_0x388834,_0x4e0377;_0x48194a[_0x9c90('0x5e')]=intUtil[_0x9c90('0x5f')](_0x48194a[_0x9c90('0x5e')]);_0x48194a['remoteUri']=intUtil['stripTrailingSlash'](_0x48194a[_0x9c90('0x57')]);if(_0x112243&&_0x112243[_0x9c90('0x6e')]&&_0x112243[_0x9c90('0x6e')]!=='none'){logger[_0x9c90('0x1e')]('[OUTBOUND]',_0x9c90('0x62'));_0x27c477[_0x9c90('0x6f')]=util[_0x9c90('0x45')](_0x9c90('0x70'),_0x48194a[_0x9c90('0x5e')],_0x27c477[_0x9c90('0x63')],md5(_0x27c477[_0x9c90('0x63')]));}return getConnection(_0x48194a)[_0x9c90('0x35')](function(_0x5d3242){_0x4e0377=_0x5d3242;return getUser(_0x48194a,_0x42674b[_0x9c90('0x64')],_0x4e0377);})['then'](function(_0x4a6c07){_0x16c534=_0x4a6c07;return getEndUser(_0x48194a,_0x2a3a78,_0x27c477[_0x9c90('0x71')],_0x27c477['destcalleridnum'],_0x4e0377);})[_0x9c90('0x35')](function(_0x37c315){_0x56ab5c=_0x37c315;return getTicket(_0x48194a,_0x16c534,_0x56ab5c,_0x2a3a78,_0x27c477,_0x2a3a78[_0x9c90('0x72')],_0x4e0377,_0x9c90('0x73'));})[_0x9c90('0x35')](function(_0x4d6eec){_0x388834=_0x4d6eec;logger[_0x9c90('0x1e')](_0x9c90('0x74'),_0x388834['id']);logger[_0x9c90('0x1e')](_0x9c90('0x75'),_0x388834['id'],_0x42674b[_0x9c90('0x54')],_0x48194a[_0x9c90('0x3d')]);switch(_0x48194a[_0x9c90('0x3d')]){case _0x9c90('0x76'):emit(util[_0x9c90('0x45')](_0x9c90('0x68'),_0x42674b[_0x9c90('0x54')]),_0x9c90('0x69'),{'recordId':_0x388834['id']});break;case _0x9c90('0x77'):emit(util[_0x9c90('0x45')]('user:%s',_0x42674b[_0x9c90('0x54')]),_0x9c90('0x78'),{'uri':util['format'](_0x9c90('0x6a'),_0x4e0377[_0x9c90('0x6b')],_0x388834['id'])});break;default:logger[_0x9c90('0x6c')](_0x9c90('0x79'),_0x9c90('0x7a'));}})['catch'](function(_0x503135){logger[_0x9c90('0x6c')](_0x9c90('0x79'),_0x503135);});};exports[_0x9c90('0x7b')]=function(_0x244777,_0x28d7a4,_0x73679c,_0x535e45,_0x52fe9d,_0xf17c68){var _0xe4540,_0x5553cd,_0x493973,_0x4077cc;_0xf17c68[_0x9c90('0x5e')]=intUtil[_0x9c90('0x5f')](_0xf17c68[_0x9c90('0x5e')]);_0xf17c68[_0x9c90('0x57')]=intUtil[_0x9c90('0x5f')](_0xf17c68[_0x9c90('0x57')]);if(_0x52fe9d&&_0x52fe9d[_0x9c90('0x60')]){logger[_0x9c90('0x1e')]('['+_0x28d7a4[_0x9c90('0x7c')][_0x9c90('0x7d')]()+']','Recording\x20is\x20enabled!');_0x28d7a4['recordingURL']=util[_0x9c90('0x45')](_0x9c90('0x70'),_0xf17c68[_0x9c90('0x5e')],_0x28d7a4[_0x9c90('0x63')],md5(_0x28d7a4[_0x9c90('0x63')]));}else{_0x28d7a4[_0x9c90('0x6f')]='';}return getConnection(_0xf17c68)['then'](function(_0x37fee2){_0x4077cc=_0x37fee2;if(!_[_0x9c90('0x21')](_0x535e45)){return getUser(_0xf17c68,_0x535e45['name'],_0x4077cc);}else{return getUser(_0xf17c68,null,_0x4077cc);}})['then'](function(_0x553581){_0xe4540=_0x553581;return getEndUser(_0xf17c68,_0x73679c,_0x28d7a4['calleridname'],_0x28d7a4[_0x9c90('0x65')],_0x4077cc);})['then'](function(_0x172cce){_0x5553cd=_0x172cce;return getTicket(_0xf17c68,_0xe4540,_0x5553cd,_0x73679c,_0x28d7a4,_0x73679c[_0x9c90('0x72')],_0x4077cc);})['then'](function(_0x23283a){_0x493973=_0x23283a;logger['info']('['+_0x28d7a4['lastevent'][_0x9c90('0x7d')]()+_0x9c90('0x7e'),_0x493973['id']);logger[_0x9c90('0x1e')]('['+_0x28d7a4[_0x9c90('0x7c')][_0x9c90('0x7d')]()+_0x9c90('0x7f'),_0xf17c68[_0x9c90('0x3d')]);})['catch'](function(_0x27d3fd){logger[_0x9c90('0x6c')]('['+_0x28d7a4[_0x9c90('0x7c')]['toUpperCase']()+']',_0x27d3fd);});};
\ No newline at end of file
+var _0x0315=['emit','assign','getString','ticketType','Task','ActivityDate','utc','endUserType','contact','lead','WhoId','account','Case','ContactId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','isNil','validateEmail','sobject','User','find','then','length','Agent\x20%s\x20found.','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','display_name','resolve','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','$or','Contact','execute','additionalSearchLead','Lead','account_contact_lead','cloneDeep','additionalSearchAccount','Account','first','Name','attributes','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','picklist','idField','content','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','login','username','Connection\x20established.','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','recordingFormat','none','[OUTBOUND]','destcalleridname','[OUTBOUND]\x20Ticket\x20%s\x20created.','%s/%s/e','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x0315,0x160));var _0x5031=function(_0x46c865,_0x154b2f){_0x46c865=_0x46c865-0x0;var _0x200973=_0x0315[_0x46c865];return _0x200973;};'use strict';var _=require(_0x5031('0x0'));var rp=require(_0x5031('0x1'));var moment=require(_0x5031('0x2'));var BPromise=require(_0x5031('0x3'));var md5=require(_0x5031('0x4'));var jsforce=require(_0x5031('0x5'));var util=require('util');var Redis=require(_0x5031('0x6'));var intUtil=require(_0x5031('0x7'));var config=require(_0x5031('0x8'));var logger=require('../../../../config/logger')(_0x5031('0x9'));config[_0x5031('0xa')]=_[_0x5031('0xb')](config[_0x5031('0xa')],{'host':_0x5031('0xc'),'port':0x18eb});var io=require(_0x5031('0xd'))(new Redis(config[_0x5031('0xa')]));function emit(_0x52f734,_0x5e579a,_0x2e8525){io['to'](_0x52f734)[_0x5031('0xe')](_0x5e579a,_0x2e8525);}function getTicket(_0x2d12bc,_0x224b6f,_0x51c844,_0x14e989,_0x79a26f,_0x2c6fd4,_0x31c187,_0x35798c){var _0x598a9c=Object[_0x5031('0xf')]({},{'OwnerId':_0x224b6f['id'],'Subject':intUtil[_0x5031('0x10')](_0x14e989['Subjects'],_0x79a26f,'\x20'),'Description':intUtil[_0x5031('0x10')](_0x14e989['Descriptions'],_0x79a26f,'\x0a')},getCustomFields(_0x2c6fd4,_0x79a26f));if(_0x51c844){if(_0x14e989[_0x5031('0x11')]===_0x5031('0x12')){_0x598a9c[_0x5031('0x13')]=moment[_0x5031('0x14')]();_0x598a9c['IsReminderSet']=![];_0x598a9c['IsRecurrence']=![];if(_0x51c844[_0x5031('0x15')]===_0x5031('0x16')||_0x51c844[_0x5031('0x15')]===_0x5031('0x17')){_0x598a9c[_0x5031('0x18')]=_0x51c844['id'];}else if(_0x51c844[_0x5031('0x15')]===_0x5031('0x19')){_0x598a9c['WhatId']=_0x51c844['id'];}}else if(_0x14e989[_0x5031('0x11')]===_0x5031('0x1a')){if(_0x51c844[_0x5031('0x15')]==='contact'){_0x598a9c[_0x5031('0x1b')]=_0x51c844['id'];}else if(_0x51c844[_0x5031('0x15')]===_0x5031('0x19')){_0x598a9c['AccountId']=_0x51c844['id'];}else if(_0x51c844['endUserType']==='lead'&&_0x14e989[_0x5031('0x1c')]){_0x598a9c[_0x14e989['leadId']]=_0x51c844['id'];}else{logger[_0x5031('0x1d')](_0x5031('0x1e'));}}}return _0x31c187['sobject'](_0x14e989[_0x5031('0x11')])[_0x5031('0x1f')](_0x598a9c);}function getUser(_0x6b72fd,_0x135e36,_0x48b641){if(!_[_0x5031('0x20')](_0x135e36)&&intUtil[_0x5031('0x21')](_0x135e36)){var _0x54322c={'Email':_0x135e36};var _0x1687e7={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x48b641[_0x5031('0x22')](_0x5031('0x23'))[_0x5031('0x24')](_0x54322c,_0x1687e7)['execute']()[_0x5031('0x25')](function(_0x2babc8){if(_0x2babc8[_0x5031('0x26')]){var _0x1abb2c=_[_0x5031('0x24')](_0x2babc8,function(_0x5d5151){return _0x5d5151['Email']===_0x135e36;});if(_0x1abb2c){logger['info'](_0x5031('0x27'),_0x135e36);return BPromise['resolve']({'id':_0x1abb2c['Id'],'name':_0x1abb2c['Name']});}}else{logger[_0x5031('0x1d')](_0x5031('0x28'),_0x135e36);return _0x48b641[_0x5031('0x29')]()['then'](function(_0x1d1a12){return BPromise['resolve']({'id':_0x1d1a12['user_id'],'name':_0x1d1a12[_0x5031('0x2a')]});});}});}else{logger[_0x5031('0x1d')](_0x5031('0x28'),_0x135e36);return _0x48b641[_0x5031('0x29')]()[_0x5031('0x25')](function(_0x1b59e3){return BPromise[_0x5031('0x2b')]({'id':_0x1b59e3[_0x5031('0x2c')],'name':_0x1b59e3[_0x5031('0x2a')]});});}}function getEndUser(_0x142d90,_0xfe7e41,_0x4d525c,_0x55f84e,_0x1bfa9a){var _0x4acf80={'$or':{'Phone':_0x55f84e}};var _0x45b6aa={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()['then'](function(){logger[_0x5031('0x1d')](_0x5031('0x2d'),_0x55f84e,_0xfe7e41['moduleSearch']);switch(_0xfe7e41[_0x5031('0x2e')]){case _0x5031('0x2f'):var _0x53cb0d=_['cloneDeep'](_0x4acf80);if(_0xfe7e41[_0x5031('0x30')]){var _0x337343={};_0x337343[_0xfe7e41[_0x5031('0x30')]]=_0x55f84e;_[_0x5031('0x31')](_0x53cb0d[_0x5031('0x32')],_0x337343);}return _0x1bfa9a['sobject'](_0x5031('0x33'))[_0x5031('0x24')](_0x53cb0d,_0x45b6aa)[_0x5031('0x34')]()['then'](function(_0x1872df){if(_0x1872df&&_0x1872df[_0x5031('0x26')]){return _0x1872df;}else{var _0x42edce=_['cloneDeep'](_0x4acf80);if(_0xfe7e41[_0x5031('0x35')]){var _0x5926e7={};_0x5926e7[_0xfe7e41['additionalSearchLead']]=_0x55f84e;_[_0x5031('0x31')](_0x42edce[_0x5031('0x32')],_0x5926e7);}return _0x1bfa9a[_0x5031('0x22')](_0x5031('0x36'))[_0x5031('0x24')](_0x42edce,_0x45b6aa);}});case _0x5031('0x37'):var _0x8f76eb=_[_0x5031('0x38')](_0x4acf80);if(_0xfe7e41[_0x5031('0x39')]){var _0x337343={};_0x337343[_0xfe7e41['additionalSearchAccount']]=_0x55f84e;_[_0x5031('0x31')](_0x8f76eb[_0x5031('0x32')],_0x337343);}return _0x1bfa9a['sobject']('Account')[_0x5031('0x24')](_0x8f76eb,_0x45b6aa)['execute']()[_0x5031('0x25')](function(_0x54f9f5){if(_0x54f9f5&&_0x54f9f5[_0x5031('0x26')]){return _0x54f9f5;}else{var _0x255881=_[_0x5031('0x38')](_0x4acf80);if(_0xfe7e41['additionalSearchContact']){var _0x1a19e0={};_0x1a19e0[_0xfe7e41['additionalSearchContact']]=_0x55f84e;_[_0x5031('0x31')](_0x255881[_0x5031('0x32')],_0x1a19e0);}return _0x1bfa9a[_0x5031('0x22')](_0x5031('0x33'))[_0x5031('0x24')](_0x255881,_0x45b6aa)[_0x5031('0x25')](function(_0x480304){if(_0x480304&&_0x480304[_0x5031('0x26')]){return _0x480304;}else{var _0x227523=_['cloneDeep'](_0x4acf80);if(_0xfe7e41['additionalSearchLead']){var _0x22938={};_0x22938[_0xfe7e41[_0x5031('0x35')]]=_0x55f84e;_['merge'](_0x227523[_0x5031('0x32')],_0x22938);}return _0x1bfa9a[_0x5031('0x22')]('Lead')['find'](_0x227523,_0x45b6aa);}});}});case _0x5031('0x16'):var _0x53cb0d=_[_0x5031('0x38')](_0x4acf80);if(_0xfe7e41[_0x5031('0x30')]){var _0x337343={};_0x337343[_0xfe7e41[_0x5031('0x30')]]=_0x55f84e;_[_0x5031('0x31')](_0x53cb0d['$or'],_0x337343);}return _0x1bfa9a[_0x5031('0x22')]('Contact')[_0x5031('0x24')](_0x53cb0d,_0x45b6aa)['execute']();case _0x5031('0x17'):var _0x54de46=_[_0x5031('0x38')](_0x4acf80);if(_0xfe7e41[_0x5031('0x35')]){var _0x337343={};_0x337343[_0xfe7e41[_0x5031('0x35')]]=_0x55f84e;_[_0x5031('0x31')](_0x54de46[_0x5031('0x32')],_0x337343);}return _0x1bfa9a[_0x5031('0x22')](_0x5031('0x36'))['find'](_0x54de46,_0x45b6aa);case _0x5031('0x19'):var _0x8f76eb=_[_0x5031('0x38')](_0x4acf80);if(_0xfe7e41[_0x5031('0x39')]){var _0x337343={};_0x337343[_0xfe7e41['additionalSearchAccount']]=_0x55f84e;_[_0x5031('0x31')](_0x8f76eb[_0x5031('0x32')],_0x337343);}return _0x1bfa9a[_0x5031('0x22')](_0x5031('0x3a'))[_0x5031('0x24')](_0x8f76eb,_0x45b6aa);default:return null;}})[_0x5031('0x25')](function(_0x16feb6){if(_0x16feb6&&_0x16feb6[_0x5031('0x26')]){var _0x298a1f=_[_0x5031('0x3b')](_0x16feb6);if(_0x298a1f){return BPromise[_0x5031('0x2b')]({'id':_0x298a1f['Id'],'name':_0x298a1f[_0x5031('0x3c')],'phone':_0x298a1f['Phone'],'endUserType':_0x298a1f[_0x5031('0x3d')][_0x5031('0x3e')][_0x5031('0x3f')]()});}}})[_0x5031('0x25')](function(_0x22be9b){if(_0x22be9b){logger[_0x5031('0x1d')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x22be9b[_0x5031('0x15')],_0x55f84e);return BPromise['resolve'](_0x22be9b);}else{logger[_0x5031('0x1d')](_0x5031('0x40'),_0x55f84e);var _0x1f09f2={'Phone':_0x55f84e};if(_0xfe7e41['moduleCreate']){if(_0xfe7e41[_0x5031('0x41')]===_0x5031('0x16')){logger[_0x5031('0x1d')](_0x5031('0x42'),_0x55f84e,_0xfe7e41[_0x5031('0x41')]);_0x1f09f2[_0x5031('0x43')]=_0x4d525c!=='<unknown>'?_0x4d525c:util['format']('Caller\x20-\x20%s',_0x55f84e);}else if(_0xfe7e41[_0x5031('0x41')]===_0x5031('0x17')){logger[_0x5031('0x1d')](_0x5031('0x42'),_0x55f84e,_0xfe7e41[_0x5031('0x41')]);_0x1f09f2[_0x5031('0x43')]=_0x4d525c!==_0x5031('0x44')?_0x4d525c:util['format'](_0x5031('0x45'),_0x55f84e);_0x1f09f2[_0x5031('0x46')]=_0x5031('0x47');}else if(_0xfe7e41['moduleCreate']===_0x5031('0x19')){logger[_0x5031('0x1d')](_0x5031('0x42'),_0x55f84e,_0xfe7e41[_0x5031('0x41')]);_0x1f09f2[_0x5031('0x3c')]=_0x4d525c!=='<unknown>'?_0x4d525c:util['format'](_0x5031('0x45'),_0x55f84e);}else{return null;}}return _0x1bfa9a[_0x5031('0x22')](_[_0x5031('0x48')](_0xfe7e41[_0x5031('0x41')]))['create'](_0x1f09f2)[_0x5031('0x25')](function(_0x590e82){return BPromise[_0x5031('0x2b')]({'id':_0x590e82['id'],'endUserType':_0xfe7e41[_0x5031('0x41')]});});}});}function getCustomFields(_0x2bce2e,_0x3319d7){var _0x1e735e={};if(_0x2bce2e[_0x5031('0x26')]>0x0){_[_0x5031('0x49')](_0x2bce2e,function(_0x4a4a4b){if(_['includes'](['string',_0x5031('0x4a')],_0x4a4a4b[_0x5031('0x3e')])&&_0x4a4a4b[_0x5031('0x4b')]){_0x1e735e[_0x4a4a4b[_0x5031('0x4b')]]=_0x4a4a4b[_0x5031('0x4c')]['toString']();}else if(_0x4a4a4b[_0x5031('0x3e')]===_0x5031('0x4d')&&_0x4a4a4b[_0x5031('0x4e')]&&_0x4a4a4b['idField']){_0x3319d7[_0x4a4a4b[_0x5031('0x4e')]]&&(_0x1e735e[_0x4a4a4b[_0x5031('0x4b')]]=_0x3319d7[_0x4a4a4b['variableName']]['toString']());}else if(_0x4a4a4b[_0x5031('0x3e')]===_0x5031('0x4f')&&_0x4a4a4b['Variable']&&_0x4a4a4b[_0x5031('0x50')]['name']&&_0x4a4a4b[_0x5031('0x4b')]){_0x3319d7[_0x4a4a4b[_0x5031('0x50')][_0x5031('0x51')][_0x5031('0x3f')]()]&&(_0x1e735e[_0x4a4a4b['idField']]=_0x3319d7[_0x4a4a4b['Variable'][_0x5031('0x51')][_0x5031('0x3f')]()]['toString']());}});}return _0x1e735e;}function getConnection(_0x82b3a8){var _0x5bc373=_0x82b3a8['password'][_0x5031('0x52')](_0x82b3a8[_0x5031('0x53')]);var _0x735515=new jsforce[(_0x5031('0x54'))]({'oauth2':{'loginUrl':_0x82b3a8[_0x5031('0x55')]||_0x5031('0x56'),'clientId':_0x82b3a8[_0x5031('0x57')],'clientSecret':_0x82b3a8['clientSecret']}});return _0x735515[_0x5031('0x58')](_0x82b3a8[_0x5031('0x59')],_0x5bc373)['then'](function(){logger[_0x5031('0x1d')](_0x5031('0x5a'));return _0x735515;});}exports['queue']=function(_0x4b1fa1,_0x307f2c,_0x48818e,_0x38a5b2,_0xf0d990,_0x42c94b){var _0x5f4e79,_0x479c10,_0x5c0bc9,_0x4235a1;_0x42c94b['serverUrl']=intUtil[_0x5031('0x5b')](_0x42c94b[_0x5031('0x5c')]);_0x42c94b[_0x5031('0x55')]=intUtil['stripTrailingSlash'](_0x42c94b[_0x5031('0x55')]);if(_0xf0d990&&_0xf0d990[_0x5031('0x5d')]){logger['info'](_0x5031('0x5e'),_0x5031('0x5f'));_0x307f2c['recordingURL']=util[_0x5031('0x60')](_0x5031('0x61'),_0x42c94b['serverUrl'],_0x307f2c['uniqueid'],md5(_0x307f2c[_0x5031('0x62')]));}else{_0x307f2c[_0x5031('0x63')]='';}return getConnection(_0x42c94b)[_0x5031('0x25')](function(_0x45193){_0x4235a1=_0x45193;return getUser(_0x42c94b,_0x38a5b2[_0x5031('0x64')],_0x4235a1);})[_0x5031('0x25')](function(_0x5af178){_0x5f4e79=_0x5af178;return getEndUser(_0x42c94b,_0x48818e,_0x307f2c[_0x5031('0x65')],_0x307f2c[_0x5031('0x66')],_0x4235a1);})['then'](function(_0x252514){_0x479c10=_0x252514;return getTicket(_0x42c94b,_0x5f4e79,_0x479c10,_0x48818e,_0x307f2c,_0x48818e[_0x5031('0x67')],_0x4235a1,'queue');})[_0x5031('0x25')](function(_0x28c534){_0x5c0bc9=_0x28c534;logger['info']('[QUEUE]\x20Ticket\x20%s\x20created',_0x5c0bc9['id']);logger['info'](_0x5031('0x68'),_0x5c0bc9['id'],_0x38a5b2[_0x5031('0x51')],_0x42c94b[_0x5031('0x3e')]);switch(_0x42c94b[_0x5031('0x3e')]){case _0x5031('0x69'):emit(util[_0x5031('0x60')](_0x5031('0x6a'),_0x38a5b2[_0x5031('0x51')]),_0x5031('0x6b'),{'recordId':_0x5c0bc9['id']});break;case'newTab':emit(util[_0x5031('0x60')]('user:%s',_0x38a5b2[_0x5031('0x51')]),_0x5031('0x6c'),{'uri':util[_0x5031('0x60')]('%s/%s/e',_0x4235a1[_0x5031('0x6d')],_0x5c0bc9['id'])});break;default:logger[_0x5031('0x6e')](_0x5031('0x6f'));}})[_0x5031('0x70')](function(_0x4ab8dd){logger['error'](_0x5031('0x5e'),_0x4ab8dd);});};exports['outbound']=function(_0x5ee80d,_0x7a8720,_0x44c86a,_0x163b2c,_0x3de06f,_0x582168,_0x287cbf){var _0x5610c2,_0x4d821e,_0x2183ea,_0x34821d;_0x582168['serverUrl']=intUtil['stripTrailingSlash'](_0x582168[_0x5031('0x5c')]);_0x582168[_0x5031('0x55')]=intUtil[_0x5031('0x5b')](_0x582168[_0x5031('0x55')]);if(_0x287cbf&&_0x287cbf['recordingFormat']&&_0x287cbf[_0x5031('0x71')]!==_0x5031('0x72')){logger['info'](_0x5031('0x73'),'Recording\x20is\x20enabled!');_0x7a8720['recordingURL']=util['format'](_0x5031('0x61'),_0x582168[_0x5031('0x5c')],_0x7a8720[_0x5031('0x62')],md5(_0x7a8720[_0x5031('0x62')]));}return getConnection(_0x582168)[_0x5031('0x25')](function(_0x185e15){_0x34821d=_0x185e15;return getUser(_0x582168,_0x163b2c[_0x5031('0x64')],_0x34821d);})['then'](function(_0x63a5ad){_0x5610c2=_0x63a5ad;return getEndUser(_0x582168,_0x44c86a,_0x7a8720[_0x5031('0x74')],_0x7a8720['destcalleridnum'],_0x34821d);})[_0x5031('0x25')](function(_0x28abd1){_0x4d821e=_0x28abd1;return getTicket(_0x582168,_0x5610c2,_0x4d821e,_0x44c86a,_0x7a8720,_0x44c86a['Fields'],_0x34821d,'outbound');})[_0x5031('0x25')](function(_0x5b89ea){_0x2183ea=_0x5b89ea;logger['info'](_0x5031('0x75'),_0x2183ea['id']);logger[_0x5031('0x1d')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x2183ea['id'],_0x163b2c[_0x5031('0x51')],_0x582168[_0x5031('0x3e')]);switch(_0x582168[_0x5031('0x3e')]){case _0x5031('0x69'):emit(util['format'](_0x5031('0x6a'),_0x163b2c['name']),_0x5031('0x6b'),{'recordId':_0x2183ea['id']});break;case'newTab':emit(util[_0x5031('0x60')](_0x5031('0x6a'),_0x163b2c[_0x5031('0x51')]),_0x5031('0x6c'),{'uri':util['format'](_0x5031('0x76'),_0x34821d[_0x5031('0x6d')],_0x2183ea['id'])});break;default:logger[_0x5031('0x6e')]('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x5031('0x70')](function(_0x461bea){logger[_0x5031('0x6e')](_0x5031('0x73'),_0x461bea);});};exports['unmanaged']=function(_0x300e9f,_0x51ecf5,_0x425038,_0x18e201,_0x428ed9,_0x47922f){var _0x5dd159,_0x3712dc,_0x4c2c40,_0x528f3c;_0x47922f[_0x5031('0x5c')]=intUtil[_0x5031('0x5b')](_0x47922f[_0x5031('0x5c')]);_0x47922f[_0x5031('0x55')]=intUtil[_0x5031('0x5b')](_0x47922f[_0x5031('0x55')]);if(_0x428ed9&&_0x428ed9[_0x5031('0x5d')]){logger['info']('['+_0x51ecf5[_0x5031('0x77')][_0x5031('0x78')]()+']',_0x5031('0x5f'));_0x51ecf5[_0x5031('0x63')]=util[_0x5031('0x60')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x47922f[_0x5031('0x5c')],_0x51ecf5[_0x5031('0x62')],md5(_0x51ecf5['uniqueid']));}else{_0x51ecf5[_0x5031('0x63')]='';}return getConnection(_0x47922f)[_0x5031('0x25')](function(_0x3a1ee5){_0x528f3c=_0x3a1ee5;if(!_[_0x5031('0x20')](_0x18e201)){return getUser(_0x47922f,_0x18e201[_0x5031('0x51')],_0x528f3c);}else{return getUser(_0x47922f,null,_0x528f3c);}})['then'](function(_0x4c9d8b){_0x5dd159=_0x4c9d8b;return getEndUser(_0x47922f,_0x425038,_0x51ecf5[_0x5031('0x65')],_0x51ecf5[_0x5031('0x66')],_0x528f3c);})[_0x5031('0x25')](function(_0x790fe2){_0x3712dc=_0x790fe2;return getTicket(_0x47922f,_0x5dd159,_0x3712dc,_0x425038,_0x51ecf5,_0x425038['Fields'],_0x528f3c);})['then'](function(_0x4c90cd){_0x4c2c40=_0x4c90cd;logger['info']('['+_0x51ecf5[_0x5031('0x77')]['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x4c2c40['id']);logger['info']('['+_0x51ecf5[_0x5031('0x77')]['toUpperCase']()+_0x5031('0x79'),_0x47922f[_0x5031('0x3e')]);})[_0x5031('0x70')](function(_0x44c9af){logger['error']('['+_0x51ecf5[_0x5031('0x77')][_0x5031('0x78')]()+']',_0x44c9af);});};
\ No newline at end of file
index ae4233a..da67e48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe809=[']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','socket.io-emitter','GET','then','result','info','],\x20getAdminUser\x20crm','error','message','toUpperCase','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','active','true','userId','sys_id','adminId','adminEmail','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','endUserId','forEach','string','picklist','type','nameField','customField','toLowerCase','content','toString','includes','idField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','number','label','?sysparm_query=name%3D','ticketNumber','push','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','unmanaged','queue','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe809,0x136));var _0x9e80=function(_0x7f8f9c,_0x427d17){_0x7f8f9c=_0x7f8f9c-0x0;var _0x298f93=_0xe809[_0x7f8f9c];return _0x298f93;};'use strict';var _=require(_0x9e80('0x0'));var Promise=require(_0x9e80('0x1'));var rp=require(_0x9e80('0x2'));var util=require(_0x9e80('0x3'));var md5=require(_0x9e80('0x4'));var Redis=require(_0x9e80('0x5'));var intUtil=require(_0x9e80('0x6'));var config=require('../../../../config/environment');var logger=require(_0x9e80('0x7'))(_0x9e80('0x8'));config[_0x9e80('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x9e80('0xa'))(new Redis(config[_0x9e80('0x9')]));function getAdminUser(_0x432d15,_0x696efb,_0x14e35d,_0x30ee6d,_0x1d436b,_0x580d21){return new Promise(function(_0x5eac29,_0x50859e){var _0x2355f3={'method':_0x9e80('0xb'),'uri':_0x30ee6d+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1d436b+'&'+_0x580d21,'auth':_0x696efb,'json':!![]};return rp(_0x2355f3)[_0x9e80('0xc')](function(_0x3f0f82){if(_0x3f0f82[_0x9e80('0xd')]['length']>0x0){_0x14e35d['adminId']=_0x3f0f82[_0x9e80('0xd')][0x0]['sys_id'];}logger[_0x9e80('0xe')]('['+[_0x432d15['toUpperCase']()]+_0x9e80('0xf'),_0x14e35d);_0x5eac29(_0x14e35d);})['catch'](function(_0x12670c){logger[_0x9e80('0x10')]('['+[_0x432d15['toUpperCase']()]+']',_0x12670c[_0x9e80('0x11')]);_0x50859e(_0x12670c[_0x9e80('0x11')]);});});}function getUser(_0x10fae4,_0x537894,_0x7b96c5,_0x56316e,_0x1c4ae6){return function(_0x5464de){logger['info']('['+[_0x10fae4[_0x9e80('0x12')]()]+_0x9e80('0x13'),_0x5464de);return new Promise(function(_0x49be6f,_0x25a869){if(intUtil['validateEmail'](_0x5464de[_0x9e80('0x14')])){var _0x2d5e27={'method':_0x9e80('0xb'),'uri':_0x7b96c5+_0x9e80('0x15')+_0x5464de[_0x9e80('0x14')]+'&'+_0x56316e+'&'+_0x1c4ae6,'auth':_0x537894,'json':!![]};logger[_0x9e80('0xe')]('['+[_0x10fae4[_0x9e80('0x12')]()]+_0x9e80('0x16'),_0x2d5e27);return rp(_0x2d5e27)['then'](function(_0x27b7c0){logger[_0x9e80('0xe')]('['+[_0x10fae4['toUpperCase']()]+_0x9e80('0x17'),_0x27b7c0);if(_0x27b7c0[_0x9e80('0xd')][_0x9e80('0x18')]>0x0&&String(_0x27b7c0[_0x9e80('0xd')][0x0][_0x9e80('0x19')])===_0x9e80('0x1a')){_0x5464de[_0x9e80('0x1b')]=_0x27b7c0[_0x9e80('0xd')][0x0][_0x9e80('0x1c')];}else{_0x5464de[_0x9e80('0x1b')]=_0x5464de[_0x9e80('0x1d')];_0x5464de['userEmail']=_0x5464de[_0x9e80('0x1e')];}logger['info']('['+[_0x10fae4['toUpperCase']()]+_0x9e80('0x1f'),_0x5464de);_0x49be6f(_0x5464de);})[_0x9e80('0x20')](function(_0x242c7d){logger['error']('['+[_0x10fae4[_0x9e80('0x12')]()]+']',_0x242c7d[_0x9e80('0x11')]);_0x25a869(_0x242c7d['message']);});}else{logger[_0x9e80('0xe')]('['+[_0x10fae4[_0x9e80('0x12')]()]+_0x9e80('0x21'));_0x5464de[_0x9e80('0x1b')]=_0x5464de[_0x9e80('0x1d')];_0x5464de['userEmail']=_0x5464de['adminEmail'];_0x49be6f(_0x5464de);}});};}function createEndUser(_0x30442d,_0xc810df,_0x4863da,_0xa06562,_0x4a0e07){logger[_0x9e80('0xe')]('['+[_0x30442d[_0x9e80('0x12')]()]+_0x9e80('0x22'),_0x4863da);return new Promise(function(_0x24ecf8,_0x173aac){var _0xa3553d={'method':_0x9e80('0x23'),'uri':_0xa06562+_0x9e80('0x24')+_0x4a0e07,'body':{'user_name':_0x4863da[_0x9e80('0x25')],'roles':_0x9e80('0x26'),'first_name':_0x4863da[_0x9e80('0x25')],'active':_0x9e80('0x1a'),'date_format':_0x9e80('0x27'),'phone':_0x4863da[_0x9e80('0x25')]},'auth':_0xc810df,'json':!![]};return rp(_0xa3553d)[_0x9e80('0xc')](function(_0x385fb5){logger[_0x9e80('0xe')]('['+[_0x30442d[_0x9e80('0x12')]()]+_0x9e80('0x28'),_0x385fb5[_0x9e80('0xd')]);_0x4863da['endUserId']=_0x385fb5[_0x9e80('0xd')][_0x9e80('0x1c')];_0x24ecf8(_0x4863da);})[_0x9e80('0x20')](function(_0x1a55a0){logger['error']('['+[_0x30442d[_0x9e80('0x12')]()]+']',_0x1a55a0[_0x9e80('0x11')]);_0x173aac(_0x1a55a0[_0x9e80('0x11')]);});});}function getEndUser(_0xbea647,_0x35dcd9,_0x5e07e6,_0x308130,_0x1e43e9){return function(_0x31dfdd){logger[_0x9e80('0xe')]('['+[_0xbea647[_0x9e80('0x12')]()]+'],\x20getEndUser\x20input\x20crm',_0x31dfdd);return new Promise(function(_0x456906,_0x2b9371){var _0x563708={'method':_0x9e80('0xb'),'uri':_0x5e07e6+_0x9e80('0x29')+_0x31dfdd[_0x9e80('0x25')]+'&'+_0x308130+'&'+_0x1e43e9,'auth':_0x35dcd9,'json':!![]};return rp(_0x563708)[_0x9e80('0xc')](function(_0xef4e3b){if(_0xef4e3b[_0x9e80('0xd')][_0x9e80('0x18')]>0x0){_0x31dfdd[_0x9e80('0x2a')]=_0xef4e3b['result'][0x0][_0x9e80('0x1c')];logger[_0x9e80('0xe')]('['+[_0xbea647['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x31dfdd);_0x456906(_0x31dfdd);}else{return createEndUser(_0xbea647,_0x35dcd9,_0x31dfdd,_0x5e07e6,_0x308130)[_0x9e80('0xc')](function(_0x17288e){logger[_0x9e80('0xe')]('['+[_0xbea647[_0x9e80('0x12')]()]+'],\x20createEndUser\x20crm',_0x17288e);_0x456906(_0x17288e);});}})[_0x9e80('0x20')](function(_0x50e0f0){logger[_0x9e80('0x10')]('['+[_0xbea647['toUpperCase']()]+']',_0x50e0f0[_0x9e80('0x11')]);_0x2b9371(_0x50e0f0[_0x9e80('0x11')]);});});};}function getCustomFields(_0x3f783e,_0x132f6e){var _0xa6a370={};if(_0x3f783e[_0x9e80('0x18')]>0x0){_[_0x9e80('0x2b')](_0x3f783e,function(_0x150965){if(_['includes']([_0x9e80('0x2c'),_0x9e80('0x2d')],_0x150965[_0x9e80('0x2e')])&&_0x150965[_0x9e80('0x2f')]&&!_0x150965[_0x9e80('0x30')]){_0xa6a370[_0x150965[_0x9e80('0x2f')][_0x9e80('0x31')]()]=_0x150965[_0x9e80('0x32')][_0x9e80('0x33')]();}else if(_[_0x9e80('0x34')]([_0x9e80('0x2c'),'picklist'],_0x150965['type'])&&_0x150965[_0x9e80('0x35')]&&_0x150965['customField']){_0xa6a370[_0x150965['idField']['toLowerCase']()]=_0x150965['content'][_0x9e80('0x33')]();}else if(_0x150965[_0x9e80('0x2e')]==='variable'&&_0x150965[_0x9e80('0x36')]&&_0x150965[_0x9e80('0x35')]&&_0x150965[_0x9e80('0x30')]){_0xa6a370[_0x150965['idField'][_0x9e80('0x31')]()]=_0x132f6e[_0x150965[_0x9e80('0x36')]][_0x9e80('0x33')]();}else if(_0x150965[_0x9e80('0x2e')]===_0x9e80('0x37')&&_0x150965[_0x9e80('0x38')]&&_0x150965[_0x9e80('0x38')][_0x9e80('0x39')]&&_0x150965[_0x9e80('0x35')]&&_0x150965['customField']){_0xa6a370[_0x150965['idField']['toLowerCase']()]=_0x132f6e[_0x150965[_0x9e80('0x38')][_0x9e80('0x39')][_0x9e80('0x31')]()]['toString']();}});}return _0xa6a370;}function getTicket(_0x483744,_0x55bf0c,_0xbfe01c,_0x5a8e60,_0x4e835e,_0x1a1e9f){return function(_0x399d66){logger['info']('['+[_0x483744[_0x9e80('0x12')]()]+_0x9e80('0x3a'),_0x399d66);return new Promise(function(_0x27d489,_0x567942){var _0x120466=_0x483744[_0x9e80('0x31')]()===_0x9e80('0x3b')?_0x399d66['userId']:_0x399d66[_0x9e80('0x2a')];var _0x4b0ea2={'method':_0x9e80('0x23'),'uri':_0xbfe01c+_0x9e80('0x3c')+'?'+_0x1a1e9f,'body':Object[_0x9e80('0x3d')]({},{'active':_0x9e80('0x1a'),'caller_id':_0x120466,'assigned_to':_0x399d66[_0x9e80('0x1b')],'short_description':intUtil[_0x9e80('0x3e')](_0x5a8e60[_0x9e80('0x3f')],_0x4e835e,'\x20'),'description':intUtil[_0x9e80('0x3e')](_0x5a8e60[_0x9e80('0x40')],_0x4e835e,'\x0a')},getCustomFields(_0x5a8e60['Fields'],_0x4e835e)),'auth':_0x55bf0c,'json':!![]};return rp(_0x4b0ea2)[_0x9e80('0xc')](function(_0x4c6734){logger[_0x9e80('0xe')]('['+[_0x483744[_0x9e80('0x12')]()]+_0x9e80('0x41'),_0x4c6734[_0x9e80('0xd')]);_0x399d66[_0x9e80('0x42')]=_0x4c6734[_0x9e80('0xd')]['sys_id'];_0x399d66['ticketNumber']=_0x4c6734[_0x9e80('0xd')][_0x9e80('0x43')];logger['info']('['+[_0x483744[_0x9e80('0x12')]()]+']\x20getTicket\x20crm',_0x399d66);_0x27d489(_0x399d66);})['catch'](function(_0x34e109){logger[_0x9e80('0x10')]('['+[_0x483744[_0x9e80('0x12')]()]+']',_0x34e109['message']);_0x567942(_0x34e109[_0x9e80('0x11')]);});});};}function createRemoteTag(_0x12ba34,_0x57c285,_0x542be9,_0x44a2bc){return new Promise(function(_0x2c563b,_0x103212){var _0x1b612b={'method':_0x9e80('0x23'),'uri':_0x542be9+_0x9e80('0x44')+'?'+_0x44a2bc,'body':{'short_description':_0x12ba34,'global':!![],'active':!![],'name':_0x12ba34},'auth':_0x57c285,'json':!![]};return rp(_0x1b612b)[_0x9e80('0xc')](function(_0x5ab04e){var _0x48b760=_0x5ab04e[_0x9e80('0xd')][_0x9e80('0x1c')];_0x2c563b(_0x48b760);});});}function getRemoteTag(_0x1f2be9,_0x2effbe,_0x22efca,_0x3c4030,_0x3e2402){return new Promise(function(_0x1c65a1,_0x465306){var _0x43d897={'method':_0x9e80('0xb'),'uri':_0x22efca+_0x9e80('0x44')+_0x9e80('0x45')+_0x1f2be9+'&'+_0x3c4030,'auth':_0x2effbe,'json':!![]};return rp(_0x43d897)['then'](function(_0x567331){if(_0x567331['result'][_0x9e80('0x18')]>0x0){var _0x28504f=_0x567331[_0x9e80('0xd')][0x0][_0x9e80('0x1c')];_0x1c65a1(_0x28504f);}else{return createRemoteTag(_0x1f2be9,_0x2effbe,_0x22efca,_0x3c4030)[_0x9e80('0xc')](function(_0x38a09e){_0x1c65a1(_0x38a09e);});}});});}function assignTagToIncident(_0x903fd2,_0x6df740,_0x104f84,_0x5bd208,_0x51e9d9){return new Promise(function(_0x34f798,_0x573cae){var _0x570c60={'method':_0x9e80('0x23'),'uri':_0x104f84+'label_entry'+'?'+_0x51e9d9,'body':{'label':_0x903fd2,'table':'incident','id_type':'Incident','table_key':_0x5bd208[_0x9e80('0x42')],'title':'Incident\x20-\x20'+_0x5bd208[_0x9e80('0x46')],'id_display':_0x5bd208[_0x9e80('0x46')]},'auth':_0x6df740,'json':!![]};return rp(_0x570c60)[_0x9e80('0xc')](function(_0x32b9c6){_0x34f798();})[_0x9e80('0x20')](function(){_0x34f798();});});}function manageTags(_0xadb3bc,_0x3ae3db,_0x287b7b,_0x5d0c91,_0x456a5e,_0x2a1586,_0x3dccab){return new Promise(function(_0x1498f3,_0x5aee18){var _0x1769e7=[];_0x3ae3db[_0x9e80('0x2b')](function(_0x243009){_0x1769e7[_0x9e80('0x47')](getRemoteTag(_0x243009,_0x287b7b,_0x5d0c91,_0x2a1586,_0x3dccab));});return Promise['all'](_0x1769e7)[_0x9e80('0xc')](function(_0x204242){if(_0x204242[_0x9e80('0x18')]){logger[_0x9e80('0xe')]('['+[_0xadb3bc[_0x9e80('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x204242);var _0x390975=[];_0x204242[_0x9e80('0x2b')](function(_0x28ab31){_0x390975[_0x9e80('0x47')](assignTagToIncident(_0x28ab31,_0x287b7b,_0x5d0c91,_0x456a5e,_0x2a1586));});return Promise[_0x9e80('0x48')](_0x390975)[_0x9e80('0xc')](function(){_0x1498f3();})[_0x9e80('0x20')](function(){_0x1498f3();});}else{_0x1498f3();}});});}function getTags(_0x270aa3,_0x584885,_0x4ce4b9,_0x28086b,_0x4b003a,_0x2a0696){return function(_0x2abba0){return new Promise(function(_0x18af00,_0x44c60f){var _0x54000f=[];var _0x568a25=_0x28086b['Tags'];if(_0x568a25&&_0x568a25['length']>0x0){_0x54000f=_[_0x9e80('0x49')](_0x568a25,_0x9e80('0x39'));}if(_0x54000f['length']>0x0){return manageTags(_0x270aa3,_0x54000f,_0x584885,_0x4ce4b9,_0x2abba0,_0x4b003a,_0x2a0696)[_0x9e80('0xc')](function(){_0x18af00(_0x2abba0);});}else{_0x18af00(_0x2abba0);}});};}function emit(_0x98250c,_0x2f1172,_0x447cf3){var _0x2bd0ef=_0x9e80('0x4a')+_0x9e80('0x4b')+_0x9e80('0x4c')+_0x9e80('0x4d');var _0x504f84={'uri':_0x98250c+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x447cf3+_0x2bd0ef};io['to'](util[_0x9e80('0x4e')](_0x9e80('0x4f'),_0x2f1172))[_0x9e80('0x50')](_0x9e80('0x51'),_0x504f84);}exports['cs']=function(_0x22a6c6,_0x31fcb5,_0x1ccbd2,_0xa3b486,_0x2c8c45,_0x354679,_0x92dc94,_0x9eac7a){var _0x1f1752={};var _0x4ae8e4={'user':_0x354679['username'],'pass':_0x354679[_0x9e80('0x52')]};var _0x39cae9=_0x9e80('0x53');var _0x1c5772='sysparm_display_value=true';_0x354679[_0x9e80('0x54')]=intUtil[_0x9e80('0x55')](_0x354679['remoteUri']);_0x354679[_0x9e80('0x56')]=intUtil[_0x9e80('0x55')](_0x354679[_0x9e80('0x56')]);var _0x229ca0=util['format']('%s/api/now/table/',_0x354679[_0x9e80('0x54')]);_0x1f1752[_0x9e80('0x14')]=!_[_0x9e80('0x57')](_0xa3b486)?_0xa3b486[_0x9e80('0x58')]:null;_0x1f1752[_0x9e80('0x1e')]=_0x354679['email'];_0x1f1752[_0x9e80('0x25')]=_0x9eac7a[_0x9e80('0x31')]()===_0x9e80('0x3b')?_0x31fcb5[_0x9e80('0x59')]:_0x31fcb5[_0x9e80('0x5a')];_0x1f1752[_0x9e80('0x5b')]=_0x9eac7a==='queue'||_0x9eac7a===_0x9e80('0x5c')?_0x9e80('0x5d'):'outbound';var _0x18dce1=util[_0x9e80('0x4e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x354679[_0x9e80('0x56')],_0x31fcb5[_0x9e80('0x5e')],md5(_0x31fcb5[_0x9e80('0x5e')]));if(_0x2c8c45&&_0x2c8c45[_0x9e80('0x5f')]){logger['info']('[QUEUE]',_0x9e80('0x60'));_0x31fcb5[_0x9e80('0x61')]=_0x18dce1;}else if(_0x92dc94&&_0x92dc94[_0x9e80('0x62')]&&_0x92dc94[_0x9e80('0x62')]!==_0x9e80('0x63')){logger[_0x9e80('0xe')]('[OUTBOUND]',_0x9e80('0x60'));_0x31fcb5[_0x9e80('0x61')]=_0x18dce1;}else{_0x31fcb5[_0x9e80('0x61')]='';}return getAdminUser(_0x9eac7a,_0x4ae8e4,_0x1f1752,_0x229ca0,_0x1c5772,_0x39cae9)['then'](getUser(_0x9eac7a,_0x4ae8e4,_0x229ca0,_0x1c5772,_0x39cae9))[_0x9e80('0xc')](getEndUser(_0x9eac7a,_0x4ae8e4,_0x229ca0,_0x1c5772,_0x39cae9))['then'](getTicket(_0x9eac7a,_0x4ae8e4,_0x229ca0,_0x1ccbd2,_0x31fcb5,_0x1c5772))[_0x9e80('0xc')](function(_0x50288f){logger[_0x9e80('0xe')](util['format'](_0x9e80('0x64'),_0x50288f['ticketId']));logger[_0x9e80('0xe')](util['format']('call\x20direction:\x20%s',_0x9eac7a));if(_0x9eac7a!==_0x9e80('0x5c')){logger['info']('['+[_0x9eac7a[_0x9e80('0x12')]()]+']',_0x9e80('0x65'));emit(_0x354679[_0x9e80('0x54')],_0xa3b486['name'],_0x50288f['ticketId']);}})[_0x9e80('0x20')](function(_0x1c777f){logger[_0x9e80('0x10')]('['+[_0x9eac7a[_0x9e80('0x12')]()]+_0x9e80('0x66'),util['inspect'](_0x1c777f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xda5c=['forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','email','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','result','length','adminId','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','userEmail','then','],\x20getUser\x20entity','active','sys_id','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','true','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','string','picklist','type','nameField','customField','content','toString','includes','idField','toLowerCase','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','endUserId','incident','assign','Subjects','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20'];(function(_0x2576d7,_0x167624){var _0x16a08c=function(_0x19de1e){while(--_0x19de1e){_0x2576d7['push'](_0x2576d7['shift']());}};_0x16a08c(++_0x167624);}(_0xda5c,0xf8));var _0xcda5=function(_0x4243a9,_0x1ef1ca){_0x4243a9=_0x4243a9-0x0;var _0x553eff=_0xda5c[_0x4243a9];return _0x553eff;};'use strict';var _=require(_0xcda5('0x0'));var Promise=require(_0xcda5('0x1'));var rp=require(_0xcda5('0x2'));var util=require('util');var md5=require('md5');var Redis=require(_0xcda5('0x3'));var intUtil=require(_0xcda5('0x4'));var config=require(_0xcda5('0x5'));var logger=require(_0xcda5('0x6'))(_0xcda5('0x7'));config[_0xcda5('0x8')]=_['defaults'](config[_0xcda5('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xcda5('0x9'))(new Redis(config[_0xcda5('0x8')]));function getAdminUser(_0x40a677,_0x2cc853,_0x5a7170,_0x457aeb,_0x1be069,_0x182603){return new Promise(function(_0x533274,_0x32ddc2){var _0x5f3cbe={'method':_0xcda5('0xa'),'uri':_0x457aeb+_0xcda5('0xb')+'&'+_0x1be069+'&'+_0x182603,'auth':_0x2cc853,'json':!![]};return rp(_0x5f3cbe)['then'](function(_0x4ed109){if(_0x4ed109[_0xcda5('0xc')][_0xcda5('0xd')]>0x0){_0x5a7170[_0xcda5('0xe')]=_0x4ed109[_0xcda5('0xc')][0x0]['sys_id'];}logger[_0xcda5('0xf')]('['+[_0x40a677[_0xcda5('0x10')]()]+_0xcda5('0x11'),_0x5a7170);_0x533274(_0x5a7170);})[_0xcda5('0x12')](function(_0xe0d927){logger[_0xcda5('0x13')]('['+[_0x40a677[_0xcda5('0x10')]()]+']',_0xe0d927[_0xcda5('0x14')]);_0x32ddc2(_0xe0d927['message']);});});}function getUser(_0x39ed19,_0x8a53a0,_0xd556d2,_0x34bc81,_0x44e8cb){return function(_0x1a16e2){logger['info']('['+[_0x39ed19[_0xcda5('0x10')]()]+_0xcda5('0x15'),_0x1a16e2);return new Promise(function(_0x3131ef,_0x1ce7eb){if(intUtil[_0xcda5('0x16')](_0x1a16e2['userEmail'])){var _0x46dad6={'method':_0xcda5('0xa'),'uri':_0xd556d2+_0xcda5('0x17')+_0x1a16e2[_0xcda5('0x18')]+'&'+_0x34bc81+'&'+_0x44e8cb,'auth':_0x8a53a0,'json':!![]};logger[_0xcda5('0xf')]('['+[_0x39ed19[_0xcda5('0x10')]()]+'],\x20getUser\x20rp\x20obj',_0x46dad6);return rp(_0x46dad6)[_0xcda5('0x19')](function(_0x182c7f){logger[_0xcda5('0xf')]('['+[_0x39ed19['toUpperCase']()]+_0xcda5('0x1a'),_0x182c7f);if(_0x182c7f[_0xcda5('0xc')]['length']>0x0&&String(_0x182c7f[_0xcda5('0xc')][0x0][_0xcda5('0x1b')])==='true'){_0x1a16e2['userId']=_0x182c7f[_0xcda5('0xc')][0x0][_0xcda5('0x1c')];}else{_0x1a16e2[_0xcda5('0x1d')]=_0x1a16e2[_0xcda5('0xe')];_0x1a16e2[_0xcda5('0x18')]=_0x1a16e2[_0xcda5('0x1e')];}logger[_0xcda5('0xf')]('['+[_0x39ed19[_0xcda5('0x10')]()]+'],\x20getUser\x20crm',_0x1a16e2);_0x3131ef(_0x1a16e2);})[_0xcda5('0x12')](function(_0x46ef9f){logger[_0xcda5('0x13')]('['+[_0x39ed19[_0xcda5('0x10')]()]+']',_0x46ef9f[_0xcda5('0x14')]);_0x1ce7eb(_0x46ef9f[_0xcda5('0x14')]);});}else{logger[_0xcda5('0xf')]('['+[_0x39ed19[_0xcda5('0x10')]()]+_0xcda5('0x1f'));_0x1a16e2[_0xcda5('0x1d')]=_0x1a16e2[_0xcda5('0xe')];_0x1a16e2[_0xcda5('0x18')]=_0x1a16e2[_0xcda5('0x1e')];_0x3131ef(_0x1a16e2);}});};}function createEndUser(_0x2ec66d,_0x4f7b3c,_0x924f80,_0x3f4715,_0x4a4147){logger[_0xcda5('0xf')]('['+[_0x2ec66d['toUpperCase']()]+_0xcda5('0x20'),_0x924f80);return new Promise(function(_0x3fe89a,_0x24b306){var _0x3909eb={'method':_0xcda5('0x21'),'uri':_0x3f4715+_0xcda5('0x22')+_0x4a4147,'body':{'user_name':_0x924f80[_0xcda5('0x23')],'roles':_0xcda5('0x24'),'first_name':_0x924f80[_0xcda5('0x23')],'active':_0xcda5('0x25'),'date_format':'System','phone':_0x924f80[_0xcda5('0x23')]},'auth':_0x4f7b3c,'json':!![]};return rp(_0x3909eb)['then'](function(_0x3ecda6){logger[_0xcda5('0xf')]('['+[_0x2ec66d[_0xcda5('0x10')]()]+_0xcda5('0x26'),_0x3ecda6[_0xcda5('0xc')]);_0x924f80['endUserId']=_0x3ecda6[_0xcda5('0xc')][_0xcda5('0x1c')];_0x3fe89a(_0x924f80);})[_0xcda5('0x12')](function(_0x5e431e){logger[_0xcda5('0x13')]('['+[_0x2ec66d[_0xcda5('0x10')]()]+']',_0x5e431e[_0xcda5('0x14')]);_0x24b306(_0x5e431e['message']);});});}function getEndUser(_0x3c16ec,_0x734076,_0x3dbdf6,_0x49bce4,_0x78748c){return function(_0x5c128f){logger['info']('['+[_0x3c16ec[_0xcda5('0x10')]()]+'],\x20getEndUser\x20input\x20crm',_0x5c128f);return new Promise(function(_0x485bc1,_0x59ce93){var _0x95780c={'method':_0xcda5('0xa'),'uri':_0x3dbdf6+_0xcda5('0x27')+_0x5c128f['endUserNumber']+'&'+_0x49bce4+'&'+_0x78748c,'auth':_0x734076,'json':!![]};return rp(_0x95780c)[_0xcda5('0x19')](function(_0x34430e){if(_0x34430e['result'][_0xcda5('0xd')]>0x0){_0x5c128f['endUserId']=_0x34430e[_0xcda5('0xc')][0x0][_0xcda5('0x1c')];logger[_0xcda5('0xf')]('['+[_0x3c16ec[_0xcda5('0x10')]()]+_0xcda5('0x28'),_0x5c128f);_0x485bc1(_0x5c128f);}else{return createEndUser(_0x3c16ec,_0x734076,_0x5c128f,_0x3dbdf6,_0x49bce4)[_0xcda5('0x19')](function(_0x44950e){logger[_0xcda5('0xf')]('['+[_0x3c16ec[_0xcda5('0x10')]()]+_0xcda5('0x29'),_0x44950e);_0x485bc1(_0x44950e);});}})[_0xcda5('0x12')](function(_0x2a1e3a){logger['error']('['+[_0x3c16ec[_0xcda5('0x10')]()]+']',_0x2a1e3a[_0xcda5('0x14')]);_0x59ce93(_0x2a1e3a[_0xcda5('0x14')]);});});};}function getCustomFields(_0x2dd71f,_0x1e94fa){var _0x45f88={};if(_0x2dd71f['length']>0x0){_['forEach'](_0x2dd71f,function(_0x3756be){if(_['includes']([_0xcda5('0x2a'),_0xcda5('0x2b')],_0x3756be[_0xcda5('0x2c')])&&_0x3756be[_0xcda5('0x2d')]&&!_0x3756be[_0xcda5('0x2e')]){_0x45f88[_0x3756be['nameField']['toLowerCase']()]=_0x3756be[_0xcda5('0x2f')][_0xcda5('0x30')]();}else if(_[_0xcda5('0x31')]([_0xcda5('0x2a'),'picklist'],_0x3756be[_0xcda5('0x2c')])&&_0x3756be[_0xcda5('0x32')]&&_0x3756be[_0xcda5('0x2e')]){_0x45f88[_0x3756be[_0xcda5('0x32')][_0xcda5('0x33')]()]=_0x3756be['content'][_0xcda5('0x30')]();}else if(_0x3756be[_0xcda5('0x2c')]==='variable'&&_0x3756be[_0xcda5('0x34')]&&_0x3756be['idField']&&_0x3756be[_0xcda5('0x2e')]){_0x45f88[_0x3756be[_0xcda5('0x32')][_0xcda5('0x33')]()]=_0x1e94fa[_0x3756be['variableName']][_0xcda5('0x30')]();}else if(_0x3756be['type']===_0xcda5('0x35')&&_0x3756be['Variable']&&_0x3756be[_0xcda5('0x36')]['name']&&_0x3756be[_0xcda5('0x32')]&&_0x3756be[_0xcda5('0x2e')]){_0x45f88[_0x3756be[_0xcda5('0x32')][_0xcda5('0x33')]()]=_0x1e94fa[_0x3756be[_0xcda5('0x36')][_0xcda5('0x37')]['toLowerCase']()][_0xcda5('0x30')]();}});}return _0x45f88;}function getTicket(_0x35d42e,_0x421a03,_0x17519f,_0x2a29b2,_0xb96193,_0x2523e2){return function(_0x38295c){logger[_0xcda5('0xf')]('['+[_0x35d42e[_0xcda5('0x10')]()]+_0xcda5('0x38'),_0x38295c);return new Promise(function(_0x299353,_0x2c95a2){var _0x526e9a=_0x35d42e[_0xcda5('0x33')]()===_0xcda5('0x39')?_0x38295c['userId']:_0x38295c[_0xcda5('0x3a')];var _0x5b5869={'method':_0xcda5('0x21'),'uri':_0x17519f+_0xcda5('0x3b')+'?'+_0x2523e2,'body':Object[_0xcda5('0x3c')]({},{'active':_0xcda5('0x25'),'caller_id':_0x526e9a,'assigned_to':_0x38295c[_0xcda5('0x1d')],'short_description':intUtil['getString'](_0x2a29b2[_0xcda5('0x3d')],_0xb96193,'\x20'),'description':intUtil[_0xcda5('0x3e')](_0x2a29b2[_0xcda5('0x3f')],_0xb96193,'\x0a')},getCustomFields(_0x2a29b2[_0xcda5('0x40')],_0xb96193)),'auth':_0x421a03,'json':!![]};return rp(_0x5b5869)['then'](function(_0x58fc1a){logger[_0xcda5('0xf')]('['+[_0x35d42e['toUpperCase']()]+_0xcda5('0x41'),_0x58fc1a[_0xcda5('0xc')]);_0x38295c[_0xcda5('0x42')]=_0x58fc1a[_0xcda5('0xc')][_0xcda5('0x1c')];_0x38295c[_0xcda5('0x43')]=_0x58fc1a['result'][_0xcda5('0x44')];logger[_0xcda5('0xf')]('['+[_0x35d42e[_0xcda5('0x10')]()]+']\x20getTicket\x20crm',_0x38295c);_0x299353(_0x38295c);})[_0xcda5('0x12')](function(_0xfa930a){logger[_0xcda5('0x13')]('['+[_0x35d42e[_0xcda5('0x10')]()]+']',_0xfa930a[_0xcda5('0x14')]);_0x2c95a2(_0xfa930a['message']);});});};}function createRemoteTag(_0x3d59d6,_0xdb38df,_0x4ac83f,_0x2f2e8c){return new Promise(function(_0x397fe8,_0x34ed57){var _0x1b1fcd={'method':_0xcda5('0x21'),'uri':_0x4ac83f+_0xcda5('0x45')+'?'+_0x2f2e8c,'body':{'short_description':_0x3d59d6,'global':!![],'active':!![],'name':_0x3d59d6},'auth':_0xdb38df,'json':!![]};return rp(_0x1b1fcd)[_0xcda5('0x19')](function(_0x1eff20){var _0x57019f=_0x1eff20['result'][_0xcda5('0x1c')];_0x397fe8(_0x57019f);});});}function getRemoteTag(_0x5bb900,_0x460105,_0x57712e,_0xfe7dfe,_0x40b5ff){return new Promise(function(_0x57ad7d,_0x5de789){var _0x4c5b1d={'method':_0xcda5('0xa'),'uri':_0x57712e+_0xcda5('0x45')+_0xcda5('0x46')+_0x5bb900+'&'+_0xfe7dfe,'auth':_0x460105,'json':!![]};return rp(_0x4c5b1d)['then'](function(_0xba2cd4){if(_0xba2cd4[_0xcda5('0xc')][_0xcda5('0xd')]>0x0){var _0x37a104=_0xba2cd4[_0xcda5('0xc')][0x0][_0xcda5('0x1c')];_0x57ad7d(_0x37a104);}else{return createRemoteTag(_0x5bb900,_0x460105,_0x57712e,_0xfe7dfe)[_0xcda5('0x19')](function(_0x65fa3e){_0x57ad7d(_0x65fa3e);});}});});}function assignTagToIncident(_0x38a45e,_0x4bc622,_0x3212b2,_0x253234,_0x1db812){return new Promise(function(_0x147bb9,_0x105a66){var _0x4832d4={'method':_0xcda5('0x21'),'uri':_0x3212b2+_0xcda5('0x47')+'?'+_0x1db812,'body':{'label':_0x38a45e,'table':'incident','id_type':'Incident','table_key':_0x253234[_0xcda5('0x42')],'title':_0xcda5('0x48')+_0x253234['ticketNumber'],'id_display':_0x253234[_0xcda5('0x43')]},'auth':_0x4bc622,'json':!![]};return rp(_0x4832d4)['then'](function(_0x468322){_0x147bb9();})['catch'](function(){_0x147bb9();});});}function manageTags(_0x236c46,_0x47e0ff,_0x2026d8,_0x24dabb,_0x34fd36,_0x488ac1,_0x5cef7d){return new Promise(function(_0x28b034,_0x5b8000){var _0x2109bd=[];_0x47e0ff[_0xcda5('0x49')](function(_0x5e9b69){_0x2109bd[_0xcda5('0x4a')](getRemoteTag(_0x5e9b69,_0x2026d8,_0x24dabb,_0x488ac1,_0x5cef7d));});return Promise[_0xcda5('0x4b')](_0x2109bd)['then'](function(_0x4a798f){if(_0x4a798f['length']){logger[_0xcda5('0xf')]('['+[_0x236c46['toUpperCase']()]+_0xcda5('0x4c'),_0x4a798f);var _0x194272=[];_0x4a798f[_0xcda5('0x49')](function(_0x36bbcd){_0x194272[_0xcda5('0x4a')](assignTagToIncident(_0x36bbcd,_0x2026d8,_0x24dabb,_0x34fd36,_0x488ac1));});return Promise[_0xcda5('0x4b')](_0x194272)[_0xcda5('0x19')](function(){_0x28b034();})[_0xcda5('0x12')](function(){_0x28b034();});}else{_0x28b034();}});});}function getTags(_0xb12661,_0x4952a4,_0x26f7d1,_0x17c16e,_0x16b613,_0x167daa){return function(_0x246739){return new Promise(function(_0x5d55f6,_0x5c3ffc){var _0x186bb2=[];var _0x2ab3f1=_0x17c16e['Tags'];if(_0x2ab3f1&&_0x2ab3f1[_0xcda5('0xd')]>0x0){_0x186bb2=_[_0xcda5('0x4d')](_0x2ab3f1,_0xcda5('0x37'));}if(_0x186bb2[_0xcda5('0xd')]>0x0){return manageTags(_0xb12661,_0x186bb2,_0x4952a4,_0x26f7d1,_0x246739,_0x16b613,_0x167daa)[_0xcda5('0x19')](function(){_0x5d55f6(_0x246739);});}else{_0x5d55f6(_0x246739);}});};}function emit(_0x23554e,_0x2ca1f3,_0x2bdd0a){var _0x427d85='%26sysparm_record_target%3Dincident'+_0xcda5('0x4e')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xcda5('0x4f');var _0x178948={'uri':_0x23554e+_0xcda5('0x50')+_0x2bdd0a+_0x427d85};io['to'](util[_0xcda5('0x51')](_0xcda5('0x52'),_0x2ca1f3))[_0xcda5('0x53')](_0xcda5('0x54'),_0x178948);}exports['cs']=function(_0x29de7c,_0x5b5097,_0x55cbaf,_0x308680,_0x5e4b7b,_0x27d6e7,_0xc1cea7,_0xf9026b){var _0x1b48bb={};var _0x2e4a0b={'user':_0x27d6e7[_0xcda5('0x55')],'pass':_0x27d6e7[_0xcda5('0x56')]};var _0x4ab440=_0xcda5('0x57');var _0x21d7b6='sysparm_display_value=true';_0x27d6e7[_0xcda5('0x58')]=intUtil[_0xcda5('0x59')](_0x27d6e7[_0xcda5('0x58')]);_0x27d6e7['serverUrl']=intUtil['stripTrailingSlash'](_0x27d6e7[_0xcda5('0x5a')]);var _0x21b757=util[_0xcda5('0x51')]('%s/api/now/table/',_0x27d6e7[_0xcda5('0x58')]);_0x1b48bb[_0xcda5('0x18')]=!_['isNil'](_0x308680)?_0x308680[_0xcda5('0x5b')]:null;_0x1b48bb[_0xcda5('0x1e')]=_0x27d6e7[_0xcda5('0x5b')];_0x1b48bb[_0xcda5('0x23')]=_0xf9026b['toLowerCase']()===_0xcda5('0x39')?_0x5b5097['destcalleridnum']:_0x5b5097[_0xcda5('0x5c')];_0x1b48bb[_0xcda5('0x5d')]=_0xf9026b===_0xcda5('0x5e')||_0xf9026b===_0xcda5('0x5f')?_0xcda5('0x5e'):_0xcda5('0x39');var _0x22e9e3=util[_0xcda5('0x51')](_0xcda5('0x60'),_0x27d6e7['serverUrl'],_0x5b5097[_0xcda5('0x61')],md5(_0x5b5097['uniqueid']));if(_0x5e4b7b&&_0x5e4b7b['monitor_format']){logger[_0xcda5('0xf')](_0xcda5('0x62'),_0xcda5('0x63'));_0x5b5097[_0xcda5('0x64')]=_0x22e9e3;}else if(_0xc1cea7&&_0xc1cea7['recordingFormat']&&_0xc1cea7[_0xcda5('0x65')]!==_0xcda5('0x66')){logger[_0xcda5('0xf')](_0xcda5('0x67'),_0xcda5('0x63'));_0x5b5097['recordingURL']=_0x22e9e3;}else{_0x5b5097['recordingURL']='';}return getAdminUser(_0xf9026b,_0x2e4a0b,_0x1b48bb,_0x21b757,_0x21d7b6,_0x4ab440)['then'](getUser(_0xf9026b,_0x2e4a0b,_0x21b757,_0x21d7b6,_0x4ab440))[_0xcda5('0x19')](getEndUser(_0xf9026b,_0x2e4a0b,_0x21b757,_0x21d7b6,_0x4ab440))[_0xcda5('0x19')](getTicket(_0xf9026b,_0x2e4a0b,_0x21b757,_0x55cbaf,_0x5b5097,_0x21d7b6))[_0xcda5('0x19')](function(_0x1c5959){logger['info'](util[_0xcda5('0x51')](_0xcda5('0x68'),_0x1c5959[_0xcda5('0x42')]));logger['info'](util[_0xcda5('0x51')]('call\x20direction:\x20%s',_0xf9026b));if(_0xf9026b!==_0xcda5('0x5f')){logger[_0xcda5('0xf')]('['+[_0xf9026b[_0xcda5('0x10')]()]+']',_0xcda5('0x69'));emit(_0x27d6e7[_0xcda5('0x58')],_0x308680[_0xcda5('0x37')],_0x1c5959['ticketId']);}})[_0xcda5('0x12')](function(_0x16e1cb){logger['error']('['+[_0xf9026b[_0xcda5('0x10')]()]+_0xcda5('0x6a'),util['inspect'](_0x16e1cb,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 6478561..c1b43d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5490=['getString','Descriptions','date_start','toISOString','slice','replace','duration_minutes','parent_id','parent_type','Contacts','parent_name','forEach','variableName','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','first_name','debug','map','type','string','nameField','customField','content','push','variable','custom_fields','Variable','toLowerCase','POST','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','calleridname','calleridnum','Fields','Inbound','The\x20Ticket\x20ID\x20is:','contacts','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','trigger:browser:url','catch','error','outbound','stripTrailingSlash','recordingFormat','none','Recording\x20is\x20enabled!','uniqueid','destcalleridname','destcalleridnum','Ticket\x20created!','users','charAt','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','unmanaged','monitor_format','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','lodash','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','name','Subjects','assigned_user_id','created_by','description'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x5490,0x1e2));var _0x0549=function(_0x8912d9,_0x361140){_0x8912d9=_0x8912d9-0x0;var _0x3918e3=_0x5490[_0x8912d9];return _0x3918e3;};'use strict';var _=require(_0x0549('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x0549('0x1'));var Redis=require('ioredis');var intUtil=require(_0x0549('0x2'));var config=require(_0x0549('0x3'));var logger=require(_0x0549('0x4'))(_0x0549('0x5'));config[_0x0549('0x6')]=_[_0x0549('0x7')](config[_0x0549('0x6')],{'host':_0x0549('0x8'),'port':0x18eb});var io=require(_0x0549('0x9'))(new Redis(config[_0x0549('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x3f5c08,_0x50a4a2,_0x4f8858){io['to'](_0x3f5c08)[_0x0549('0xa')](_0x50a4a2,_0x4f8858);}function getTicket(_0x124c0b,_0x13c718,_0x53e7b5,_0x3b4442,_0x237cbd,_0x16f98c,_0x4473b5,_0x3ee625){logger[_0x0549('0xb')](_0x0549('0xc'));var _0x184282=new Date();var _0x15e31e=[{'name':_0x0549('0xd'),'value':intUtil['getString'](_0x3b4442[_0x0549('0xe')],_0x237cbd,'\x20')},{'name':_0x0549('0xf'),'value':_0x13c718['id']},{'name':_0x0549('0x10'),'value':_0x13c718['id']},{'name':_0x0549('0x11'),'value':intUtil[_0x0549('0x12')](_0x3b4442[_0x0549('0x13')],_0x237cbd,'\x0a')},{'name':_0x0549('0x14'),'value':_0x184282[_0x0549('0x15')]()[_0x0549('0x16')](0x0,0x13)[_0x0549('0x17')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x0549('0x18'),'value':'15'},{'name':_0x0549('0x19'),'value':_0x53e7b5['id']},{'name':_0x0549('0x1a'),'value':_0x0549('0x1b')},{'name':_0x0549('0x1c'),'value':_0x53e7b5[_0x0549('0xd')]},{'name':'direction','value':_0x3ee625}];if(_0x16f98c['length']){_[_0x0549('0x1d')](_0x16f98c,function(_0x3c0741){if(_0x237cbd[_0x3c0741[_0x0549('0x1e')]]){_0x15e31e['push']({'name':_0x3c0741[_0x0549('0x1f')],'value':_0x237cbd[_0x3c0741[_0x0549('0x1e')]]});}});}return request({'form':{'method':_0x0549('0x20'),'input_type':'JSON','response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x4473b5['id'],'module_name':_0x0549('0x23'),'name_value_list':_0x15e31e})}});}function getAuth(_0x4b7143){return util[_0x0549('0x24')](_0x0549('0x25'),new Buffer(_0x4b7143[_0x0549('0x26')]+':X')[_0x0549('0x27')](_0x0549('0x28')));}function getServerInfo(_0x123923){return request({'form':{'method':_0x0549('0x29'),'input_type':_0x0549('0x21'),'response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x123923['id']})}});}function getUser(_0x59f3c5,_0x32a911,_0x492b17){if(!_[_0x0549('0x2a')](_0x32a911)){logger[_0x0549('0xb')](_0x0549('0x2b'),_0x32a911);return request({'form':{'method':_0x0549('0x2c'),'input_type':_0x0549('0x21'),'response_type':'JSON','rest_data':JSON[_0x0549('0x22')]({'session':_0x492b17['id'],'module_name':'Employees','query':util[_0x0549('0x24')](_0x0549('0x2d'),_0x32a911),'order_by':'','offset':'0','select_fields':['id','name',_0x0549('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0549('0x2f')](function(_0x1e078a){if(_0x1e078a[_0x0549('0x30')][_0x0549('0x31')]){var _0x44f250=_[_0x0549('0x32')](_0x1e078a[_0x0549('0x30')],function(_0x1553a3){return _0x1553a3[_0x0549('0x33')]['user_name'][_0x0549('0x34')]===_0x32a911;});if(_0x44f250){logger[_0x0549('0xb')](_0x0549('0x35'));return BPromise['resolve']({'id':_0x44f250[_0x0549('0x33')]['id'][_0x0549('0x34')],'name':_0x44f250[_0x0549('0x33')][_0x0549('0xd')][_0x0549('0x34')]});}}logger[_0x0549('0xb')](_0x0549('0x36'));return BPromise[_0x0549('0x37')]({'id':_0x492b17[_0x0549('0x33')]['user_id'][_0x0549('0x34')],'name':_0x492b17[_0x0549('0x33')]['user_name']['value']});});}else{logger['info'](_0x0549('0x38'));return BPromise[_0x0549('0x37')]({'id':_0x492b17[_0x0549('0x33')][_0x0549('0x39')]['value'],'name':_0x492b17[_0x0549('0x33')][_0x0549('0x2e')][_0x0549('0x34')]});}}function getEndUser(_0x178ca0,_0x4886ab,_0x407f94,_0x2dc828){logger[_0x0549('0xb')](_0x0549('0x3a'),_0x407f94);return request({'form':{'method':_0x0549('0x2c'),'input_type':_0x0549('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x2dc828['id'],'module_name':_0x0549('0x1b'),'query':util[_0x0549('0x24')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x407f94),'order_by':'','offset':'0','select_fields':['id',_0x0549('0xd'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0549('0x2f')](function(_0x212fdd){if(_0x212fdd['entry_list']['length']){var _0x3a2317=_[_0x0549('0x32')](_0x212fdd[_0x0549('0x30')],function(_0x2dbae8){return _0x2dbae8['name_value_list'][_0x0549('0x3b')][_0x0549('0x34')]===_0x407f94;});if(_0x3a2317){logger[_0x0549('0xb')](_0x0549('0x3c'));return BPromise[_0x0549('0x37')]({'id':_0x3a2317[_0x0549('0x33')]['id'][_0x0549('0x34')],'name':_0x3a2317[_0x0549('0x33')][_0x0549('0xd')]['value'],'phone':_0x3a2317['name_value_list'][_0x0549('0x3b')][_0x0549('0x34')]});}}else{logger['info'](_0x0549('0x3d'));return request({'form':{'method':_0x0549('0x20'),'input_type':'JSON','response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x2dc828['id'],'module_name':_0x0549('0x1b'),'name_value_list':[{'name':'first_name','value':_0x4886ab!==_0x0549('0x3e')?_0x4886ab:util[_0x0549('0x24')](_0x0549('0x3f'),_0x407f94)},{'name':'phone_home','value':_0x407f94}]})}})['then'](function(_0xbe1988){logger[_0x0549('0xb')]('Enduser\x20created.');return BPromise['resolve']({'id':_0xbe1988['id'],'name':_0xbe1988[_0x0549('0x30')][_0x0549('0x40')][_0x0549('0x34')],'phone':_0xbe1988['entry_list']['phone_home'][_0x0549('0x34')]});});}});}function request(_0x1318c9){logger[_0x0549('0x41')]('[HTTP]',JSON['stringify'](_0x1318c9));return rp(_['merge'](def,_0x1318c9));}function getTags(_0x7d870c,_0x13aabd){var _0x5a2e9c=[];if(_0x7d870c&&_0x7d870c['length']>0x0){_0x5a2e9c=_[_0x0549('0x42')](_0x7d870c,_0x13aabd);}return _0x5a2e9c;}function getCustomFields(_0x2c41b8,_0x4c1f16){var _0x20fd29=[];var _0x3d9bcd={'custom_fields':[]};if(_0x2c41b8[_0x0549('0x31')]>0x0){_['forEach'](_0x2c41b8,function(_0x1469ff){if(_0x1469ff[_0x0549('0x43')]===_0x0549('0x44')&&_0x1469ff[_0x0549('0x45')]&&!_0x1469ff[_0x0549('0x46')]){_0x3d9bcd[_0x1469ff[_0x0549('0x45')]['toLowerCase']()]=_0x1469ff[_0x0549('0x47')][_0x0549('0x27')]();}else if(_0x1469ff[_0x0549('0x43')]===_0x0549('0x44')&&_0x1469ff[_0x0549('0x1f')]&&_0x1469ff[_0x0549('0x46')]){_0x3d9bcd['custom_fields'][_0x0549('0x48')]({'id':_0x1469ff[_0x0549('0x1f')],'value':_0x1469ff[_0x0549('0x47')][_0x0549('0x27')]()});}else if(_0x1469ff[_0x0549('0x43')]===_0x0549('0x49')&&_0x1469ff[_0x0549('0x1e')]&&_0x1469ff[_0x0549('0x1f')]&&_0x1469ff[_0x0549('0x46')]){_0x4c1f16[_0x1469ff[_0x0549('0x1e')]]&&_0x3d9bcd[_0x0549('0x4a')][_0x0549('0x48')]({'id':_0x1469ff['idField'],'value':_0x4c1f16[_0x1469ff[_0x0549('0x1e')]][_0x0549('0x27')]()});}else if(_0x1469ff[_0x0549('0x43')]==='customVariable'&&_0x1469ff[_0x0549('0x4b')]&&_0x1469ff['Variable']['name']&&_0x1469ff['idField']&&_0x1469ff[_0x0549('0x46')]){_0x4c1f16[_0x1469ff['Variable'][_0x0549('0xd')][_0x0549('0x4c')]()]&&_0x3d9bcd['custom_fields'][_0x0549('0x48')]({'id':_0x1469ff[_0x0549('0x1f')],'value':_0x4c1f16[_0x1469ff[_0x0549('0x4b')][_0x0549('0xd')][_0x0549('0x4c')]()][_0x0549('0x27')]()});}});}return _0x3d9bcd;}function getConnection(_0x3259ff){return request({'method':_0x0549('0x4d'),'form':{'method':_0x0549('0x4e'),'input_type':_0x0549('0x21'),'response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'user_auth':{'user_name':_0x3259ff[_0x0549('0x4f')],'password':_0x3259ff[_0x0549('0x50')],'encryption':'PLAIN'},'application':_0x0549('0x51')})}})[_0x0549('0x2f')](function(_0x150aa8){var _0x300ec2=_0x150aa8;if(_0x300ec2['id']){def[_0x0549('0x52')]=_0x300ec2['id'];return BPromise[_0x0549('0x37')](_0x300ec2);}else{throw new Error(util['format'](_0x0549('0x53'),_0x3259ff['id']));}});}function setRelationship(_0x7f93ae,_0x4b4ad7,_0x459750,_0x3efb97){return request({'form':{'method':_0x0549('0x54'),'input_type':_0x0549('0x21'),'response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x7f93ae['id'],'module_name':_0x0549('0x23'),'module_id':_0x459750['id'],'link_field_name':_0x3efb97,'related_ids':[_0x4b4ad7['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x0549('0x55')]=function(_0x3ea37b,_0x4f2339,_0x161453,_0x22c832,_0x1e38d6,_0x1a1e2d){var _0x579732,_0xd045c4,_0x5c0f74,_0x100676;_0x1a1e2d[_0x0549('0x56')]=intUtil['stripTrailingSlash'](_0x1a1e2d[_0x0549('0x56')]);_0x1a1e2d[_0x0549('0x57')]=intUtil['stripTrailingSlash'](_0x1a1e2d[_0x0549('0x57')]);def[_0x0549('0x58')]=util['format'](_0x0549('0x59'),_0x1a1e2d[_0x0549('0x56')]);if(_0x1e38d6&&_0x1e38d6['monitor_format']){logger['info'](_0x0549('0x5a'),'Recording\x20is\x20enabled!');_0x4f2339[_0x0549('0x5b')]=util[_0x0549('0x24')](_0x0549('0x5c'),_0x1a1e2d[_0x0549('0x57')],_0x4f2339['uniqueid'],md5(_0x4f2339['uniqueid']));}else{_0x4f2339[_0x0549('0x5b')]='';}return getConnection(_0x1a1e2d)['then'](function(_0x19fcef){_0x100676=_0x19fcef;return getUser(_0x1a1e2d,_0x22c832[_0x0549('0xd')],_0x100676);})[_0x0549('0x2f')](function(_0x3adf28){_0x579732=_0x3adf28;logger['info'](_0x0549('0x5d'),_0x579732['id']);return getEndUser(_0x1a1e2d,_0x4f2339[_0x0549('0x5e')],_0x4f2339[_0x0549('0x5f')],_0x100676);})[_0x0549('0x2f')](function(_0x27b86a){_0xd045c4=_0x27b86a;logger['info']('The\x20Enduser\x20ID\x20is:',_0xd045c4['id']);return getTicket(_0x1a1e2d,_0x579732,_0xd045c4,_0x161453,_0x4f2339,_0x161453[_0x0549('0x60')],_0x100676,_0x0549('0x61'));})[_0x0549('0x2f')](function(_0x5d8204){_0x5c0f74=_0x5d8204;logger[_0x0549('0xb')]('Ticket\x20created!');logger[_0x0549('0xb')](_0x0549('0x62'),_0x5c0f74['id']);return setRelationship(_0x100676,_0x579732,_0x5c0f74,'users');})['then'](function(){return setRelationship(_0x100676,_0xd045c4,_0x5c0f74,_0x0549('0x63'));})[_0x0549('0x2f')](function(){return getServerInfo(_0x100676);})[_0x0549('0x2f')](function(_0x15dd75){var _0x47fe48=parseInt(_0x15dd75[_0x0549('0x64')]['charAt'](0x0));var _0x4b4455=util['format'](_0x0549('0x65'),_0x1a1e2d[_0x0549('0x56')],_0x5c0f74['id']);if(_0x47fe48>0x6){_0x4b4455=util['format'](_0x0549('0x66'),_0x1a1e2d['remoteUri'],_0x5c0f74['id']);}logger[_0x0549('0xb')](_0x0549('0x5a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0549('0x24')]('user:%s',_0x22c832[_0x0549('0xd')]),_0x0549('0x67'),{'uri':_0x4b4455});})[_0x0549('0x68')](function(_0x23729f){logger[_0x0549('0x69')](_0x0549('0x5a'),JSON[_0x0549('0x22')](_0x23729f));});};exports[_0x0549('0x6a')]=function(_0x4859e7,_0x498481,_0x5087f2,_0x53496a,_0x1ba704,_0x58bfab,_0x542b59){var _0x11a44a,_0x5ef351,_0x2f2a28,_0x491c46;_0x58bfab[_0x0549('0x56')]=intUtil[_0x0549('0x6b')](_0x58bfab['remoteUri']);_0x58bfab[_0x0549('0x57')]=intUtil[_0x0549('0x6b')](_0x58bfab[_0x0549('0x57')]);def[_0x0549('0x58')]=util[_0x0549('0x24')](_0x0549('0x59'),_0x58bfab[_0x0549('0x56')]);if(_0x542b59&&_0x542b59[_0x0549('0x6c')]&&_0x542b59['recordingFormat']!==_0x0549('0x6d')){logger['info']('[OUTBOUND]',_0x0549('0x6e'));_0x498481[_0x0549('0x5b')]=util[_0x0549('0x24')](_0x0549('0x5c'),_0x58bfab['serverUrl'],_0x498481[_0x0549('0x6f')],md5(_0x498481[_0x0549('0x6f')]));}return getConnection(_0x58bfab)['then'](function(_0x575a1c){_0x491c46=_0x575a1c;return getUser(_0x58bfab,_0x53496a[_0x0549('0xd')],_0x491c46);})[_0x0549('0x2f')](function(_0x3245a6){_0x11a44a=_0x3245a6;logger[_0x0549('0xb')](_0x0549('0x5d'),_0x11a44a['id']);return getEndUser(_0x58bfab,_0x498481[_0x0549('0x70')],_0x498481[_0x0549('0x71')],_0x491c46);})[_0x0549('0x2f')](function(_0x207e88){_0x5ef351=_0x207e88;logger[_0x0549('0xb')]('The\x20Enduser\x20ID\x20is:',_0x5ef351['id']);return getTicket(_0x58bfab,_0x11a44a,_0x5ef351,_0x5087f2,_0x498481,_0x5087f2[_0x0549('0x60')],_0x491c46,'Outbound');})[_0x0549('0x2f')](function(_0xfb2b1c){_0x2f2a28=_0xfb2b1c;logger[_0x0549('0xb')](_0x0549('0x72'));logger[_0x0549('0xb')](_0x0549('0x62'),_0x2f2a28['id']);return setRelationship(_0x491c46,_0x11a44a,_0x2f2a28,_0x0549('0x73'));})[_0x0549('0x2f')](function(){return setRelationship(_0x491c46,_0x5ef351,_0x2f2a28,'contacts');})['then'](function(){return getServerInfo(_0x491c46);})[_0x0549('0x2f')](function(_0x136679){var _0x3faa99=parseInt(_0x136679[_0x0549('0x64')][_0x0549('0x74')](0x0));var _0x2f0b7e=util['format'](_0x0549('0x65'),_0x58bfab[_0x0549('0x56')],_0x2f2a28['id']);if(_0x3faa99>0x6){_0x2f0b7e=util[_0x0549('0x24')](_0x0549('0x66'),_0x58bfab['remoteUri'],_0x2f2a28['id']);}logger[_0x0549('0xb')](_0x0549('0x75'),_0x0549('0x76'));emit(util['format'](_0x0549('0x77'),_0x53496a[_0x0549('0xd')]),'trigger:browser:url',{'uri':_0x2f0b7e});})[_0x0549('0x68')](function(_0x431f14){logger[_0x0549('0x69')](_0x0549('0x75'),JSON[_0x0549('0x22')](_0x431f14));});};exports[_0x0549('0x78')]=function(_0xc0b042,_0x19e852,_0x46253a,_0x1ab730,_0x32ac3a,_0x53fe1f){var _0x2e0232,_0x29e826,_0x200ffa,_0x1283c1;_0x53fe1f['remoteUri']=intUtil[_0x0549('0x6b')](_0x53fe1f['remoteUri']);_0x53fe1f['serverUrl']=intUtil[_0x0549('0x6b')](_0x53fe1f[_0x0549('0x57')]);def[_0x0549('0x58')]=util[_0x0549('0x24')]('%s/service/v4_1/rest.php',_0x53fe1f['remoteUri']);if(_0x32ac3a&&_0x32ac3a[_0x0549('0x79')]){logger['info']('['+_0x19e852[_0x0549('0x7a')][_0x0549('0x7b')]()+']','Recording\x20is\x20enabled!');_0x19e852[_0x0549('0x5b')]=util[_0x0549('0x24')](_0x0549('0x5c'),_0x53fe1f[_0x0549('0x57')],_0x19e852['uniqueid'],md5(_0x19e852['uniqueid']));}else{_0x19e852['recordingURL']='';}return getConnection(_0x53fe1f)[_0x0549('0x2f')](function(_0x2b9482){_0x1283c1=_0x2b9482;if(!_[_0x0549('0x2a')](_0x1ab730)){return getUser(_0x53fe1f,_0x1ab730[_0x0549('0xd')],_0x1283c1);}else{return getUser(_0x53fe1f,null,_0x1283c1);}})['then'](function(_0xdb3da){_0x2e0232=_0xdb3da;logger['info'](_0x0549('0x5d'),_0x2e0232['id']);return getEndUser(_0x53fe1f,_0x19e852['calleridname'],_0x19e852['calleridnum'],_0x1283c1);})[_0x0549('0x2f')](function(_0x45ccd0){_0x29e826=_0x45ccd0;logger[_0x0549('0xb')](_0x0549('0x7c'),_0x29e826['id']);return getTicket(_0x53fe1f,_0x2e0232,_0x29e826,_0x46253a,_0x19e852,_0x46253a[_0x0549('0x60')],_0x1283c1,_0x0549('0x61'));})['then'](function(_0x14beea){_0x200ffa=_0x14beea;logger[_0x0549('0xb')]('Ticket\x20created!');logger[_0x0549('0xb')](_0x0549('0x62'),_0x200ffa['id']);return setRelationship(_0x1283c1,_0x2e0232,_0x200ffa,'users');})[_0x0549('0x2f')](function(){return setRelationship(_0x1283c1,_0x29e826,_0x200ffa,'contacts');})['then'](function(){return getServerInfo(_0x1283c1);})[_0x0549('0x68')](function(_0xd32369){logger[_0x0549('0x69')]('['+_0x19e852['lastevent'][_0x0549('0x7b')]()+']',JSON[_0x0549('0x22')](_0xd32369));});};
\ No newline at end of file
+var _0xf18b=['Recording\x20is\x20enabled!','isNil','calleridname','lastevent','lodash','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','get_server_info','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','name_value_list','Agent\x20found!','resolve','value','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','length','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','[HTTP]','merge','map','customField','nameField','toLowerCase','type','string','custom_fields','Variable','POST','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','stripTrailingSlash','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','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','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','charAt','[OUTBOUND]','unmanaged','toUpperCase'];(function(_0x287ad0,_0x2a893b){var _0x473369=function(_0x468e4c){while(--_0x468e4c){_0x287ad0['push'](_0x287ad0['shift']());}};_0x473369(++_0x2a893b);}(_0xf18b,0xfe));var _0xbf18=function(_0x212bf3,_0x30e400){_0x212bf3=_0x212bf3-0x0;var _0x144c19=_0xf18b[_0x212bf3];return _0x144c19;};'use strict';var _=require(_0xbf18('0x0'));var rp=require('request-promise');var BPromise=require(_0xbf18('0x1'));var md5=require(_0xbf18('0x2'));var util=require('util');var Redis=require(_0xbf18('0x3'));var intUtil=require(_0xbf18('0x4'));var config=require(_0xbf18('0x5'));var logger=require(_0xbf18('0x6'))(_0xbf18('0x7'));config[_0xbf18('0x8')]=_[_0xbf18('0x9')](config[_0xbf18('0x8')],{'host':_0xbf18('0xa'),'port':0x18eb});var io=require(_0xbf18('0xb'))(new Redis(config[_0xbf18('0x8')]));var def={'method':'POST','json':!![]};function emit(_0x1081c6,_0x7c0ebd,_0xfb5a43){io['to'](_0x1081c6)['emit'](_0x7c0ebd,_0xfb5a43);}function getTicket(_0x541264,_0x26cc0e,_0x4e8eaa,_0x93e9f3,_0xeb7913,_0xe2e3c1,_0x1859c3,_0x5cca35){logger[_0xbf18('0xc')](_0xbf18('0xd'));var _0x30053d=new Date();var _0x3436d3=[{'name':_0xbf18('0xe'),'value':intUtil[_0xbf18('0xf')](_0x93e9f3[_0xbf18('0x10')],_0xeb7913,'\x20')},{'name':_0xbf18('0x11'),'value':_0x26cc0e['id']},{'name':_0xbf18('0x12'),'value':_0x26cc0e['id']},{'name':_0xbf18('0x13'),'value':intUtil['getString'](_0x93e9f3['Descriptions'],_0xeb7913,'\x0a')},{'name':_0xbf18('0x14'),'value':_0x30053d[_0xbf18('0x15')]()['slice'](0x0,0x13)[_0xbf18('0x16')]('T','\x20')},{'name':_0xbf18('0x17'),'value':'0'},{'name':_0xbf18('0x18'),'value':'15'},{'name':_0xbf18('0x19'),'value':_0x4e8eaa['id']},{'name':_0xbf18('0x1a'),'value':'Contacts'},{'name':_0xbf18('0x1b'),'value':_0x4e8eaa['name']},{'name':_0xbf18('0x1c'),'value':_0x5cca35}];if(_0xe2e3c1['length']){_[_0xbf18('0x1d')](_0xe2e3c1,function(_0x3c0bcc){if(_0xeb7913[_0x3c0bcc[_0xbf18('0x1e')]]){_0x3436d3[_0xbf18('0x1f')]({'name':_0x3c0bcc[_0xbf18('0x20')],'value':_0xeb7913[_0x3c0bcc['variableName']]});}});}return request({'form':{'method':_0xbf18('0x21'),'input_type':_0xbf18('0x22'),'response_type':_0xbf18('0x22'),'rest_data':JSON[_0xbf18('0x23')]({'session':_0x1859c3['id'],'module_name':_0xbf18('0x24'),'name_value_list':_0x3436d3})}});}function getAuth(_0x28ac24){return util[_0xbf18('0x25')](_0xbf18('0x26'),new Buffer(_0x28ac24[_0xbf18('0x27')]+':X')[_0xbf18('0x28')]('base64'));}function getServerInfo(_0x2e4498){return request({'form':{'method':_0xbf18('0x29'),'input_type':_0xbf18('0x22'),'response_type':'JSON','rest_data':JSON[_0xbf18('0x23')]({'session':_0x2e4498['id']})}});}function getUser(_0x4e0f37,_0x15f07b,_0xcccbe){if(!_['isNil'](_0x15f07b)){logger[_0xbf18('0xc')]('Getting\x20agent\x20with\x20name',_0x15f07b);return request({'form':{'method':_0xbf18('0x2a'),'input_type':_0xbf18('0x22'),'response_type':_0xbf18('0x22'),'rest_data':JSON['stringify']({'session':_0xcccbe['id'],'module_name':_0xbf18('0x2b'),'query':util[_0xbf18('0x25')](_0xbf18('0x2c'),_0x15f07b),'order_by':'','offset':'0','select_fields':['id','name',_0xbf18('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xbf18('0x2e')](function(_0x5b91e8){if(_0x5b91e8[_0xbf18('0x2f')]['length']){var _0x548c6b=_['find'](_0x5b91e8[_0xbf18('0x2f')],function(_0x2138bd){return _0x2138bd[_0xbf18('0x30')][_0xbf18('0x2d')]['value']===_0x15f07b;});if(_0x548c6b){logger[_0xbf18('0xc')](_0xbf18('0x31'));return BPromise[_0xbf18('0x32')]({'id':_0x548c6b[_0xbf18('0x30')]['id']['value'],'name':_0x548c6b[_0xbf18('0x30')][_0xbf18('0xe')][_0xbf18('0x33')]});}}logger[_0xbf18('0xc')](_0xbf18('0x34'));return BPromise['resolve']({'id':_0xcccbe['name_value_list'][_0xbf18('0x35')][_0xbf18('0x33')],'name':_0xcccbe['name_value_list'][_0xbf18('0x2d')][_0xbf18('0x33')]});});}else{logger[_0xbf18('0xc')](_0xbf18('0x36'));return BPromise[_0xbf18('0x32')]({'id':_0xcccbe[_0xbf18('0x30')]['user_id']['value'],'name':_0xcccbe[_0xbf18('0x30')][_0xbf18('0x2d')][_0xbf18('0x33')]});}}function getEndUser(_0x2b2e35,_0x278b82,_0x572200,_0x4ad2a2){logger[_0xbf18('0xc')](_0xbf18('0x37'),_0x572200);return request({'form':{'method':'get_entry_list','input_type':_0xbf18('0x22'),'response_type':_0xbf18('0x22'),'rest_data':JSON[_0xbf18('0x23')]({'session':_0x4ad2a2['id'],'module_name':'Contacts','query':util[_0xbf18('0x25')](_0xbf18('0x38'),_0x572200),'order_by':'','offset':'0','select_fields':['id',_0xbf18('0xe'),_0xbf18('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xbf18('0x2e')](function(_0x5c617d){if(_0x5c617d[_0xbf18('0x2f')][_0xbf18('0x3a')]){var _0x5c2357=_['find'](_0x5c617d[_0xbf18('0x2f')],function(_0x1d702d){return _0x1d702d[_0xbf18('0x30')][_0xbf18('0x39')]['value']===_0x572200;});if(_0x5c2357){logger[_0xbf18('0xc')]('Enduser\x20found!');return BPromise[_0xbf18('0x32')]({'id':_0x5c2357['name_value_list']['id']['value'],'name':_0x5c2357['name_value_list'][_0xbf18('0xe')][_0xbf18('0x33')],'phone':_0x5c2357[_0xbf18('0x30')][_0xbf18('0x39')][_0xbf18('0x33')]});}}else{logger[_0xbf18('0xc')](_0xbf18('0x3b'));return request({'form':{'method':'set_entry','input_type':'JSON','response_type':_0xbf18('0x22'),'rest_data':JSON[_0xbf18('0x23')]({'session':_0x4ad2a2['id'],'module_name':_0xbf18('0x3c'),'name_value_list':[{'name':'first_name','value':_0x278b82!==_0xbf18('0x3d')?_0x278b82:util[_0xbf18('0x25')](_0xbf18('0x3e'),_0x572200)},{'name':_0xbf18('0x39'),'value':_0x572200}]})}})['then'](function(_0x13e45a){logger[_0xbf18('0xc')](_0xbf18('0x3f'));return BPromise[_0xbf18('0x32')]({'id':_0x13e45a['id'],'name':_0x13e45a[_0xbf18('0x2f')][_0xbf18('0x40')][_0xbf18('0x33')],'phone':_0x13e45a[_0xbf18('0x2f')]['phone_home'][_0xbf18('0x33')]});});}});}function request(_0x3cf6f5){logger['debug'](_0xbf18('0x41'),JSON[_0xbf18('0x23')](_0x3cf6f5));return rp(_[_0xbf18('0x42')](def,_0x3cf6f5));}function getTags(_0x58dc6c,_0x152fa5){var _0x3ef346=[];if(_0x58dc6c&&_0x58dc6c[_0xbf18('0x3a')]>0x0){_0x3ef346=_[_0xbf18('0x43')](_0x58dc6c,_0x152fa5);}return _0x3ef346;}function getCustomFields(_0x4b78f3,_0x50f211){var _0x206ed0=[];var _0x1be192={'custom_fields':[]};if(_0x4b78f3[_0xbf18('0x3a')]>0x0){_[_0xbf18('0x1d')](_0x4b78f3,function(_0x43001f){if(_0x43001f['type']==='string'&&_0x43001f['nameField']&&!_0x43001f[_0xbf18('0x44')]){_0x1be192[_0x43001f[_0xbf18('0x45')][_0xbf18('0x46')]()]=_0x43001f['content'][_0xbf18('0x28')]();}else if(_0x43001f[_0xbf18('0x47')]===_0xbf18('0x48')&&_0x43001f[_0xbf18('0x20')]&&_0x43001f[_0xbf18('0x44')]){_0x1be192[_0xbf18('0x49')]['push']({'id':_0x43001f[_0xbf18('0x20')],'value':_0x43001f['content']['toString']()});}else if(_0x43001f[_0xbf18('0x47')]==='variable'&&_0x43001f['variableName']&&_0x43001f['idField']&&_0x43001f[_0xbf18('0x44')]){_0x50f211[_0x43001f[_0xbf18('0x1e')]]&&_0x1be192['custom_fields'][_0xbf18('0x1f')]({'id':_0x43001f['idField'],'value':_0x50f211[_0x43001f[_0xbf18('0x1e')]][_0xbf18('0x28')]()});}else if(_0x43001f[_0xbf18('0x47')]==='customVariable'&&_0x43001f[_0xbf18('0x4a')]&&_0x43001f[_0xbf18('0x4a')][_0xbf18('0xe')]&&_0x43001f[_0xbf18('0x20')]&&_0x43001f['customField']){_0x50f211[_0x43001f[_0xbf18('0x4a')][_0xbf18('0xe')][_0xbf18('0x46')]()]&&_0x1be192['custom_fields']['push']({'id':_0x43001f[_0xbf18('0x20')],'value':_0x50f211[_0x43001f[_0xbf18('0x4a')][_0xbf18('0xe')]['toLowerCase']()]['toString']()});}});}return _0x1be192;}function getConnection(_0x1a2aca){return request({'method':_0xbf18('0x4b'),'form':{'method':_0xbf18('0x4c'),'input_type':_0xbf18('0x22'),'response_type':_0xbf18('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1a2aca[_0xbf18('0x4d')],'password':_0x1a2aca[_0xbf18('0x4e')],'encryption':_0xbf18('0x4f')},'application':_0xbf18('0x50')})}})[_0xbf18('0x2e')](function(_0x2be9e0){var _0x1b57a5=_0x2be9e0;if(_0x1b57a5['id']){def[_0xbf18('0x51')]=_0x1b57a5['id'];return BPromise['resolve'](_0x1b57a5);}else{throw new Error(util[_0xbf18('0x25')]('Account\x20%d\x20is\x20not\x20valid',_0x1a2aca['id']));}});}function setRelationship(_0x2c52d6,_0xbe734f,_0x410eb5,_0x2cea3b){return request({'form':{'method':_0xbf18('0x52'),'input_type':'JSON','response_type':_0xbf18('0x22'),'rest_data':JSON[_0xbf18('0x23')]({'session':_0x2c52d6['id'],'module_name':'Calls','module_id':_0x410eb5['id'],'link_field_name':_0x2cea3b,'related_ids':[_0xbe734f['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xbf18('0x53')]=function(_0x14de9c,_0x52c72b,_0x4ae633,_0x2f3a30,_0x264966,_0x45f042){var _0x1454a7,_0x5791c6,_0x1364d5,_0x260acd;_0x45f042['remoteUri']=intUtil[_0xbf18('0x54')](_0x45f042[_0xbf18('0x55')]);_0x45f042[_0xbf18('0x56')]=intUtil[_0xbf18('0x54')](_0x45f042[_0xbf18('0x56')]);def[_0xbf18('0x57')]=util['format'](_0xbf18('0x58'),_0x45f042[_0xbf18('0x55')]);if(_0x264966&&_0x264966[_0xbf18('0x59')]){logger[_0xbf18('0xc')](_0xbf18('0x5a'),'Recording\x20is\x20enabled!');_0x52c72b[_0xbf18('0x5b')]=util[_0xbf18('0x25')](_0xbf18('0x5c'),_0x45f042[_0xbf18('0x56')],_0x52c72b[_0xbf18('0x5d')],md5(_0x52c72b[_0xbf18('0x5d')]));}else{_0x52c72b[_0xbf18('0x5b')]='';}return getConnection(_0x45f042)[_0xbf18('0x2e')](function(_0x1067e0){_0x260acd=_0x1067e0;return getUser(_0x45f042,_0x2f3a30[_0xbf18('0xe')],_0x260acd);})[_0xbf18('0x2e')](function(_0x164d94){_0x1454a7=_0x164d94;logger[_0xbf18('0xc')](_0xbf18('0x5e'),_0x1454a7['id']);return getEndUser(_0x45f042,_0x52c72b['calleridname'],_0x52c72b[_0xbf18('0x5f')],_0x260acd);})['then'](function(_0x26cddd){_0x5791c6=_0x26cddd;logger[_0xbf18('0xc')]('The\x20Enduser\x20ID\x20is:',_0x5791c6['id']);return getTicket(_0x45f042,_0x1454a7,_0x5791c6,_0x4ae633,_0x52c72b,_0x4ae633[_0xbf18('0x60')],_0x260acd,_0xbf18('0x61'));})['then'](function(_0x2abc54){_0x1364d5=_0x2abc54;logger['info'](_0xbf18('0x62'));logger['info'](_0xbf18('0x63'),_0x1364d5['id']);return setRelationship(_0x260acd,_0x1454a7,_0x1364d5,_0xbf18('0x64'));})[_0xbf18('0x2e')](function(){return setRelationship(_0x260acd,_0x5791c6,_0x1364d5,_0xbf18('0x65'));})[_0xbf18('0x2e')](function(){return getServerInfo(_0x260acd);})['then'](function(_0x58e27e){var _0x359b1b=parseInt(_0x58e27e[_0xbf18('0x66')]['charAt'](0x0));var _0x28f61a=util[_0xbf18('0x25')](_0xbf18('0x67'),_0x45f042['remoteUri'],_0x1364d5['id']);if(_0x359b1b>0x6){_0x28f61a=util['format'](_0xbf18('0x68'),_0x45f042['remoteUri'],_0x1364d5['id']);}logger[_0xbf18('0xc')]('[QUEUE]',_0xbf18('0x69'));emit(util[_0xbf18('0x25')](_0xbf18('0x6a'),_0x2f3a30[_0xbf18('0xe')]),_0xbf18('0x6b'),{'uri':_0x28f61a});})[_0xbf18('0x6c')](function(_0xd09de8){logger[_0xbf18('0x6d')](_0xbf18('0x5a'),JSON[_0xbf18('0x23')](_0xd09de8));});};exports[_0xbf18('0x6e')]=function(_0x362f88,_0x5e0be1,_0x239614,_0x19f338,_0x4dbd68,_0x167b76,_0x5c5fad){var _0x12e2c0,_0x519629,_0x40487b,_0x8cb791;_0x167b76['remoteUri']=intUtil[_0xbf18('0x54')](_0x167b76['remoteUri']);_0x167b76[_0xbf18('0x56')]=intUtil[_0xbf18('0x54')](_0x167b76[_0xbf18('0x56')]);def[_0xbf18('0x57')]=util[_0xbf18('0x25')]('%s/service/v4_1/rest.php',_0x167b76[_0xbf18('0x55')]);if(_0x5c5fad&&_0x5c5fad[_0xbf18('0x6f')]&&_0x5c5fad[_0xbf18('0x6f')]!==_0xbf18('0x70')){logger[_0xbf18('0xc')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x5e0be1['recordingURL']=util[_0xbf18('0x25')](_0xbf18('0x5c'),_0x167b76[_0xbf18('0x56')],_0x5e0be1[_0xbf18('0x5d')],md5(_0x5e0be1[_0xbf18('0x5d')]));}return getConnection(_0x167b76)[_0xbf18('0x2e')](function(_0x278070){_0x8cb791=_0x278070;return getUser(_0x167b76,_0x19f338[_0xbf18('0xe')],_0x8cb791);})[_0xbf18('0x2e')](function(_0x2eb04d){_0x12e2c0=_0x2eb04d;logger[_0xbf18('0xc')](_0xbf18('0x5e'),_0x12e2c0['id']);return getEndUser(_0x167b76,_0x5e0be1[_0xbf18('0x71')],_0x5e0be1[_0xbf18('0x72')],_0x8cb791);})[_0xbf18('0x2e')](function(_0x3ecd4f){_0x519629=_0x3ecd4f;logger[_0xbf18('0xc')](_0xbf18('0x73'),_0x519629['id']);return getTicket(_0x167b76,_0x12e2c0,_0x519629,_0x239614,_0x5e0be1,_0x239614[_0xbf18('0x60')],_0x8cb791,_0xbf18('0x74'));})[_0xbf18('0x2e')](function(_0xd4a1b){_0x40487b=_0xd4a1b;logger[_0xbf18('0xc')](_0xbf18('0x62'));logger[_0xbf18('0xc')]('The\x20Ticket\x20ID\x20is:',_0x40487b['id']);return setRelationship(_0x8cb791,_0x12e2c0,_0x40487b,_0xbf18('0x64'));})[_0xbf18('0x2e')](function(){return setRelationship(_0x8cb791,_0x519629,_0x40487b,_0xbf18('0x65'));})[_0xbf18('0x2e')](function(){return getServerInfo(_0x8cb791);})[_0xbf18('0x2e')](function(_0x51222d){var _0x26002e=parseInt(_0x51222d['version'][_0xbf18('0x75')](0x0));var _0x16b743=util[_0xbf18('0x25')](_0xbf18('0x67'),_0x167b76[_0xbf18('0x55')],_0x40487b['id']);if(_0x26002e>0x6){_0x16b743=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x167b76[_0xbf18('0x55')],_0x40487b['id']);}logger[_0xbf18('0xc')](_0xbf18('0x76'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xbf18('0x25')]('user:%s',_0x19f338[_0xbf18('0xe')]),_0xbf18('0x6b'),{'uri':_0x16b743});})['catch'](function(_0xba919c){logger[_0xbf18('0x6d')](_0xbf18('0x76'),JSON['stringify'](_0xba919c));});};exports[_0xbf18('0x77')]=function(_0x38527a,_0x7e7eae,_0x3d1b5c,_0x178344,_0x24f4cb,_0x1e1203){var _0x3711fd,_0x13b995,_0x4f4ac8,_0x52627c;_0x1e1203[_0xbf18('0x55')]=intUtil[_0xbf18('0x54')](_0x1e1203[_0xbf18('0x55')]);_0x1e1203[_0xbf18('0x56')]=intUtil[_0xbf18('0x54')](_0x1e1203[_0xbf18('0x56')]);def[_0xbf18('0x57')]=util[_0xbf18('0x25')]('%s/service/v4_1/rest.php',_0x1e1203['remoteUri']);if(_0x24f4cb&&_0x24f4cb['monitor_format']){logger[_0xbf18('0xc')]('['+_0x7e7eae['lastevent'][_0xbf18('0x78')]()+']',_0xbf18('0x79'));_0x7e7eae['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1e1203[_0xbf18('0x56')],_0x7e7eae[_0xbf18('0x5d')],md5(_0x7e7eae[_0xbf18('0x5d')]));}else{_0x7e7eae[_0xbf18('0x5b')]='';}return getConnection(_0x1e1203)[_0xbf18('0x2e')](function(_0x1bb9f9){_0x52627c=_0x1bb9f9;if(!_[_0xbf18('0x7a')](_0x178344)){return getUser(_0x1e1203,_0x178344[_0xbf18('0xe')],_0x52627c);}else{return getUser(_0x1e1203,null,_0x52627c);}})[_0xbf18('0x2e')](function(_0x3287d7){_0x3711fd=_0x3287d7;logger[_0xbf18('0xc')](_0xbf18('0x5e'),_0x3711fd['id']);return getEndUser(_0x1e1203,_0x7e7eae[_0xbf18('0x7b')],_0x7e7eae[_0xbf18('0x5f')],_0x52627c);})[_0xbf18('0x2e')](function(_0x30cd23){_0x13b995=_0x30cd23;logger[_0xbf18('0xc')](_0xbf18('0x73'),_0x13b995['id']);return getTicket(_0x1e1203,_0x3711fd,_0x13b995,_0x3d1b5c,_0x7e7eae,_0x3d1b5c['Fields'],_0x52627c,_0xbf18('0x61'));})['then'](function(_0x1f24b9){_0x4f4ac8=_0x1f24b9;logger[_0xbf18('0xc')]('Ticket\x20created!');logger[_0xbf18('0xc')](_0xbf18('0x63'),_0x4f4ac8['id']);return setRelationship(_0x52627c,_0x3711fd,_0x4f4ac8,_0xbf18('0x64'));})['then'](function(){return setRelationship(_0x52627c,_0x13b995,_0x4f4ac8,'contacts');})[_0xbf18('0x2e')](function(){return getServerInfo(_0x52627c);})[_0xbf18('0x6c')](function(_0x109f70){logger[_0xbf18('0x6d')]('['+_0x7e7eae[_0xbf18('0x7c')]['toUpperCase']()+']',JSON[_0xbf18('0x23')](_0x109f70));});};
\ No newline at end of file
index d493942..c9143b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71c9=['util','getString','length','sortBy','type','string','push','content','variable','variableName','toString','Variable','name','toLowerCase','keyValue','keyType','key','format','%s:\x20%s','keyContent','customVariable','slice','substring','lastIndexOf','isNil','test'];(function(_0xdea1b1,_0x455f12){var _0x38377e=function(_0x11da70){while(--_0x11da70){_0xdea1b1['push'](_0xdea1b1['shift']());}};_0x38377e(++_0x455f12);}(_0x71c9,0x68));var _0x971c=function(_0xbe66d4,_0x38c785){_0xbe66d4=_0xbe66d4-0x0;var _0x51101d=_0x71c9[_0xbe66d4];return _0x51101d;};'use strict';var _=require('lodash');var util=require(_0x971c('0x0'));exports[_0x971c('0x1')]=function(_0x282b1c,_0xaf1276,_0x1f7f32){var _0x1cc9f5=[];if(_0x282b1c[_0x971c('0x2')]>0x0){var _0x55d2c3=_[_0x971c('0x3')](_0x282b1c,['id']);for(var _0x5a6470=0x0;_0x5a6470<_0x55d2c3['length'];_0x5a6470++){var _0x49f621=_0x55d2c3[_0x5a6470];if(_0x49f621[_0x971c('0x4')]===_0x971c('0x5')){_0x1cc9f5[_0x971c('0x6')](_0x49f621[_0x971c('0x7')]);}else if(_0x49f621[_0x971c('0x4')]===_0x971c('0x8')&&_0x49f621[_0x971c('0x9')]){_0xaf1276[_0x49f621[_0x971c('0x9')]]&&_0x1cc9f5['push'](_0xaf1276[_0x49f621[_0x971c('0x9')]][_0x971c('0xa')]());}else if(_0x49f621[_0x971c('0x4')]==='customVariable'&&_0x49f621[_0x971c('0xb')]&&_0x49f621['Variable'][_0x971c('0xc')]){_0xaf1276[_0x49f621[_0x971c('0xb')][_0x971c('0xc')][_0x971c('0xd')]()]&&_0x1cc9f5[_0x971c('0x6')](_0xaf1276[_0x49f621['Variable'][_0x971c('0xc')][_0x971c('0xd')]()][_0x971c('0xa')]());}else if(_0x49f621[_0x971c('0x4')]===_0x971c('0xe')){if(_0x49f621[_0x971c('0xf')]===_0x971c('0x5')&&_0x49f621[_0x971c('0x10')]){_0x1cc9f5['push'](util[_0x971c('0x11')](_0x971c('0x12'),_0x49f621['key'],_0x49f621[_0x971c('0x13')]));}else if(_0x49f621[_0x971c('0xf')]===_0x971c('0x8')&&_0x49f621[_0x971c('0x9')]&&_0x49f621[_0x971c('0x10')]){_0xaf1276[_0x49f621[_0x971c('0x9')]]&&_0x1cc9f5[_0x971c('0x6')](util[_0x971c('0x11')](_0x971c('0x12'),_0x49f621[_0x971c('0x10')],_0xaf1276[_0x49f621[_0x971c('0x9')]]));}else if(_0x49f621[_0x971c('0xf')]===_0x971c('0x14')&&_0x49f621[_0x971c('0xb')]&&_0x49f621['Variable'][_0x971c('0xc')]&&_0x49f621[_0x971c('0x10')]){_0xaf1276[_0x49f621[_0x971c('0xb')][_0x971c('0xc')][_0x971c('0xd')]()]&&_0x1cc9f5[_0x971c('0x6')](util[_0x971c('0x11')](_0x971c('0x12'),_0x49f621[_0x971c('0x10')],_0xaf1276[_0x49f621[_0x971c('0xb')][_0x971c('0xc')][_0x971c('0xd')]()]));}}}}return _0x1cc9f5['join'](_0x1f7f32);};exports['stripTrailingSlash']=function(_0x5bed30){var _0xcdbc6d=_0x5bed30[_0x971c('0x15')](-0x1);if(_0xcdbc6d==='/'){_0x5bed30=_0x5bed30[_0x971c('0x16')](0x0,_0x5bed30[_0x971c('0x17')](_0xcdbc6d));}return _0x5bed30;};exports['validateEmail']=function(_0x159221){if(!_[_0x971c('0x18')](_0x159221)&&_0x159221!==''){var _0x5c0b0c=/^(([^<>()\[\]\\.,;:\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 _0x5c0b0c[_0x971c('0x19')](String(_0x159221)[_0x971c('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x9456=['keyValue','keyType','string','key','format','%s:\x20%s','variable','join','stripTrailingSlash','slice','lastIndexOf','validateEmail','isNil','getString','length','sortBy','type','push','variableName','Variable','name','toLowerCase','toString'];(function(_0x3bb41c,_0x3ac6c3){var _0x578d4b=function(_0x543b6f){while(--_0x543b6f){_0x3bb41c['push'](_0x3bb41c['shift']());}};_0x578d4b(++_0x3ac6c3);}(_0x9456,0x1ab));var _0x6945=function(_0x262f80,_0x507554){_0x262f80=_0x262f80-0x0;var _0x837d85=_0x9456[_0x262f80];return _0x837d85;};'use strict';var _=require('lodash');var util=require('util');exports[_0x6945('0x0')]=function(_0x48309c,_0x16a3dc,_0x596cef){var _0x2661c0=[];if(_0x48309c[_0x6945('0x1')]>0x0){var _0x25b00a=_[_0x6945('0x2')](_0x48309c,['id']);for(var _0x346de7=0x0;_0x346de7<_0x25b00a['length'];_0x346de7++){var _0x187815=_0x25b00a[_0x346de7];if(_0x187815[_0x6945('0x3')]==='string'){_0x2661c0[_0x6945('0x4')](_0x187815['content']);}else if(_0x187815[_0x6945('0x3')]==='variable'&&_0x187815['variableName']){_0x16a3dc[_0x187815[_0x6945('0x5')]]&&_0x2661c0[_0x6945('0x4')](_0x16a3dc[_0x187815[_0x6945('0x5')]]['toString']());}else if(_0x187815[_0x6945('0x3')]==='customVariable'&&_0x187815[_0x6945('0x6')]&&_0x187815[_0x6945('0x6')]['name']){_0x16a3dc[_0x187815[_0x6945('0x6')][_0x6945('0x7')]['toLowerCase']()]&&_0x2661c0[_0x6945('0x4')](_0x16a3dc[_0x187815[_0x6945('0x6')]['name'][_0x6945('0x8')]()][_0x6945('0x9')]());}else if(_0x187815[_0x6945('0x3')]===_0x6945('0xa')){if(_0x187815[_0x6945('0xb')]===_0x6945('0xc')&&_0x187815[_0x6945('0xd')]){_0x2661c0[_0x6945('0x4')](util[_0x6945('0xe')](_0x6945('0xf'),_0x187815[_0x6945('0xd')],_0x187815['keyContent']));}else if(_0x187815[_0x6945('0xb')]===_0x6945('0x10')&&_0x187815[_0x6945('0x5')]&&_0x187815[_0x6945('0xd')]){_0x16a3dc[_0x187815[_0x6945('0x5')]]&&_0x2661c0[_0x6945('0x4')](util[_0x6945('0xe')](_0x6945('0xf'),_0x187815[_0x6945('0xd')],_0x16a3dc[_0x187815['variableName']]));}else if(_0x187815[_0x6945('0xb')]==='customVariable'&&_0x187815['Variable']&&_0x187815['Variable'][_0x6945('0x7')]&&_0x187815[_0x6945('0xd')]){_0x16a3dc[_0x187815[_0x6945('0x6')][_0x6945('0x7')][_0x6945('0x8')]()]&&_0x2661c0['push'](util['format'](_0x6945('0xf'),_0x187815[_0x6945('0xd')],_0x16a3dc[_0x187815[_0x6945('0x6')][_0x6945('0x7')][_0x6945('0x8')]()]));}}}}return _0x2661c0[_0x6945('0x11')](_0x596cef);};exports[_0x6945('0x12')]=function(_0x25539d){var _0x19077b=_0x25539d[_0x6945('0x13')](-0x1);if(_0x19077b==='/'){_0x25539d=_0x25539d['substring'](0x0,_0x25539d[_0x6945('0x14')](_0x19077b));}return _0x25539d;};exports[_0x6945('0x15')]=function(_0xe2c94f){if(!_[_0x6945('0x16')](_0xe2c94f)&&_0xe2c94f!==''){var _0x4d237e=/^(([^<>()\[\]\\.,;:\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 _0x4d237e['test'](String(_0xe2c94f)[_0x6945('0x8')]());}else{return![];}};
\ No newline at end of file
index 7496903..20a6482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x6189a5,_0x3c64e0){var _0x55043=function(_0x26a4f0){while(--_0x26a4f0){_0x6189a5['push'](_0x6189a5['shift']());}};_0x55043(++_0x3c64e0);}(_0xe706,0xa3));var _0x6e70=function(_0x5b8262,_0x93ab76){_0x5b8262=_0x5b8262-0x0;var _0x21f734=_0xe706[_0x5b8262];return _0x21f734;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
+var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x43f7e3,_0x13702b){var _0x1d0090=function(_0x4a1987){while(--_0x4a1987){_0x43f7e3['push'](_0x43f7e3['shift']());}};_0x1d0090(++_0x13702b);}(_0x9c44,0x178));var _0x49c4=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x9c44[_0x6cf19c];return _0xce14f3;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index c7450d3..fe59f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65c8=['integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','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','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','%s/channels/voice/agents/%d/tickets/%d/display.json','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','Tags','getString','Descriptions','Fields','then','info','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','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','length','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','[HTTP]','map','forEach','string','picklist','type','customField','nameField','toLowerCase','content','includes','push','idField','variable','variableName','custom_fields','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:'];(function(_0x30266b,_0x4ab80a){var _0x1d8791=function(_0x38c513){while(--_0x38c513){_0x30266b['push'](_0x30266b['shift']());}};_0x1d8791(++_0x4ab80a);}(_0x65c8,0x165));var _0x865c=function(_0x10a264,_0x37b9ac){_0x10a264=_0x10a264-0x0;var _0x15bbdf=_0x65c8[_0x10a264];return _0x15bbdf;};'use strict';var _=require(_0x865c('0x0'));var rp=require(_0x865c('0x1'));var md5=require(_0x865c('0x2'));var util=require('util');var Redis=require(_0x865c('0x3'));var intUtil=require(_0x865c('0x4'));var config=require(_0x865c('0x5'));var logger=require('../../../../config/logger')('zendesk');config['redis']=_[_0x865c('0x6')](config[_0x865c('0x7')],{'host':_0x865c('0x8'),'port':0x18eb});var io=require(_0x865c('0x9'))(new Redis(config[_0x865c('0x7')]));function emit(_0x3bb798,_0x3d57e1,_0x52c1e6){io['to'](_0x3bb798)[_0x865c('0xa')](_0x3d57e1,_0x52c1e6);}var headers={'Content-Type':_0x865c('0xb'),'Accept':_0x865c('0xb')};function getTicket(_0x28f935,_0x134d9f,_0x5016d4,_0x72541a,_0x155673){logger['info'](_0x865c('0xc'));return request({'uri':util['format'](_0x865c('0xd'),_0x28f935[_0x865c('0xe')]),'method':_0x865c('0xf'),'body':{'ticket':_['merge']({'requester_id':_0x5016d4['id'],'submitter_id':_0x134d9f?_0x134d9f['id']:undefined,'assignee_id':_0x134d9f?_0x134d9f['id']:undefined,'tags':getTags(_0x72541a[_0x865c('0x10')],'name'),'subject':intUtil[_0x865c('0x11')](_0x72541a['Subjects'],_0x155673,'\x20'),'description':intUtil[_0x865c('0x11')](_0x72541a[_0x865c('0x12')],_0x155673,'\x0a'),'comment':{'public':![],'body':intUtil[_0x865c('0x11')](_0x72541a[_0x865c('0x12')],_0x155673,'\x0a')}},getCustomFields(_0x72541a[_0x865c('0x13')],_0x155673))}})[_0x865c('0x14')](function(_0x539aff){logger[_0x865c('0x15')](_0x865c('0x16'));return _0x539aff['ticket'];});}function getUser(_0xdf995d,_0x129d2c){if(intUtil[_0x865c('0x17')](_0x129d2c)){logger[_0x865c('0x15')](_0x865c('0x18'),_0x129d2c);return request({'uri':util[_0x865c('0x19')](_0x865c('0x1a'),_0xdf995d[_0x865c('0xe')]),'qs':{'query':util[_0x865c('0x19')](_0x865c('0x1b'),_0x129d2c)}})[_0x865c('0x14')](function(_0x2418e4){if(_0x2418e4['count']){logger[_0x865c('0x15')](_0x865c('0x1c'));return _[_0x865c('0x1d')](_0x2418e4[_0x865c('0x1e')],{'email':_0x129d2c,'role':'agent'});}else{logger[_0x865c('0x15')](_0x865c('0x1f'));return request({'uri':util[_0x865c('0x19')]('%s/users/me.json',_0xdf995d['remoteUri'])})[_0x865c('0x14')](function(_0x4bceec){logger[_0x865c('0x15')](_0x865c('0x20'));return _0x4bceec[_0x865c('0x21')];});}});}else{logger[_0x865c('0x15')](_0x865c('0x1f'));return request({'uri':util[_0x865c('0x19')](_0x865c('0x22'),_0xdf995d[_0x865c('0xe')])})[_0x865c('0x14')](function(_0x4b1a33){logger[_0x865c('0x15')]('Admin\x20account\x20selected.');return _0x4b1a33[_0x865c('0x21')];});}}function getEndUser(_0x493c7d,_0x14ed55,_0x2ff96d){logger[_0x865c('0x15')](_0x865c('0x23'),_0x2ff96d);return request({'uri':util[_0x865c('0x19')]('%s/search.json',_0x493c7d[_0x865c('0xe')]),'qs':{'query':util[_0x865c('0x19')](_0x865c('0x24'),_0x2ff96d)}})[_0x865c('0x14')](function(_0x3e805d){var _0x1643d8;if(_0x3e805d[_0x865c('0x1e')][_0x865c('0x25')]){_0x3e805d['results']=_['filter'](_0x3e805d[_0x865c('0x1e')],{'suspended':![],'role':_0x865c('0x26')});if(_0x3e805d['results'][_0x865c('0x25')]){_0x1643d8=_[_0x865c('0x27')](_0x3e805d[_0x865c('0x1e')]);}}if(_0x1643d8){logger[_0x865c('0x15')](_0x865c('0x28'));return _0x1643d8;}else{logger[_0x865c('0x15')](_0x865c('0x29'));return request({'uri':util[_0x865c('0x19')]('%s/users.json',_0x493c7d['remoteUri']),'method':_0x865c('0xf'),'body':{'user':{'role':_0x865c('0x26'),'name':util['format'](_0x865c('0x2a'),_0x14ed55||_0x2ff96d),'phone':_0x2ff96d}}})[_0x865c('0x14')](function(_0x345780){logger[_0x865c('0x15')](_0x865c('0x2b'));return _0x345780[_0x865c('0x21')];});}});}function getAuth(_0x31717b){var _0x4bd515;if(_0x31717b[_0x865c('0x2c')]===_0x865c('0x2d')){_0x4bd515=util['format'](_0x865c('0x2e'),_0x31717b[_0x865c('0x2f')],_0x31717b['password']);}else if(_0x31717b[_0x865c('0x2c')]===_0x865c('0x30')){_0x4bd515=util[_0x865c('0x19')](_0x865c('0x31'),_0x31717b[_0x865c('0x2f')],_0x31717b[_0x865c('0x30')]);}return util[_0x865c('0x19')](_0x865c('0x32'),new Buffer(_0x4bd515)[_0x865c('0x33')](_0x865c('0x34')));}function request(_0x1406b5){logger['debug'](_0x865c('0x35'),JSON['stringify'](_0x1406b5));return rp(_[_0x865c('0x6')](_0x1406b5,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x59e07d,_0x5afb57){var _0x52f0b1=[];if(_0x59e07d&&_0x59e07d['length']>0x0){_0x52f0b1=_[_0x865c('0x36')](_0x59e07d,_0x5afb57);}return _0x52f0b1;}function getCustomFields(_0x11ee58,_0x5a0f9f){var _0x487637=[];var _0x38a2a8={'custom_fields':[]};if(_0x11ee58['length']>0x0){_[_0x865c('0x37')](_0x11ee58,function(_0x3ff770){if(_['includes']([_0x865c('0x38'),_0x865c('0x39')],_0x3ff770[_0x865c('0x3a')])&&_0x3ff770['nameField']&&!_0x3ff770[_0x865c('0x3b')]){_0x38a2a8[_0x3ff770[_0x865c('0x3c')][_0x865c('0x3d')]()]=_0x3ff770[_0x865c('0x3e')][_0x865c('0x33')]();}else if(_[_0x865c('0x3f')](['string',_0x865c('0x39')],_0x3ff770[_0x865c('0x3a')])&&_0x3ff770['idField']&&_0x3ff770[_0x865c('0x3b')]){_0x38a2a8['custom_fields'][_0x865c('0x40')]({'id':_0x3ff770[_0x865c('0x41')],'value':_0x3ff770['content']['toString']()});}else if(_0x3ff770['type']===_0x865c('0x42')&&_0x3ff770['variableName']&&_0x3ff770[_0x865c('0x41')]&&_0x3ff770['customField']){_0x5a0f9f[_0x3ff770[_0x865c('0x43')]]&&_0x38a2a8[_0x865c('0x44')][_0x865c('0x40')]({'id':_0x3ff770['idField'],'value':_0x5a0f9f[_0x3ff770[_0x865c('0x43')]][_0x865c('0x33')]()});}else if(_0x3ff770['type']===_0x865c('0x45')&&_0x3ff770[_0x865c('0x46')]&&_0x3ff770['Variable'][_0x865c('0x47')]&&_0x3ff770[_0x865c('0x41')]&&_0x3ff770[_0x865c('0x3b')]){_0x5a0f9f[_0x3ff770['Variable'][_0x865c('0x47')]['toLowerCase']()]&&_0x38a2a8['custom_fields'][_0x865c('0x40')]({'id':_0x3ff770[_0x865c('0x41')],'value':_0x5a0f9f[_0x3ff770[_0x865c('0x46')][_0x865c('0x47')][_0x865c('0x3d')]()][_0x865c('0x33')]()});}});}return _0x38a2a8;}exports[_0x865c('0x48')]=function(_0x333f32,_0x288309,_0x2f24de,_0x50f043,_0x2dd11b,_0x1f5b37){var _0x3de94d,_0x54c250;_0x1f5b37[_0x865c('0xe')]=intUtil[_0x865c('0x49')](_0x1f5b37[_0x865c('0xe')]);_0x1f5b37[_0x865c('0x4a')]=intUtil[_0x865c('0x49')](_0x1f5b37[_0x865c('0x4a')]);if(_0x2dd11b&&_0x2dd11b[_0x865c('0x4b')]){logger['info'](_0x865c('0x4c'),_0x865c('0x4d'));_0x288309[_0x865c('0x4e')]=util['format'](_0x865c('0x4f'),_0x1f5b37[_0x865c('0x4a')],_0x288309['uniqueid'],md5(_0x288309[_0x865c('0x50')]));}else{_0x288309[_0x865c('0x4e')]='';}headers[_0x865c('0x51')]=getAuth(_0x1f5b37);return getUser(_0x1f5b37,_0x50f043[_0x865c('0x52')])['then'](function(_0x1180a7){_0x3de94d=_0x1180a7;logger[_0x865c('0x15')](_0x865c('0x53'),_0x3de94d['id']);return getEndUser(_0x1f5b37,_0x288309['calleridname'],_0x288309[_0x865c('0x54')]);})[_0x865c('0x14')](function(_0x1c5240){_0x54c250=_0x1c5240;logger[_0x865c('0x15')](_0x865c('0x55'),_0x54c250['id']);return getTicket(_0x1f5b37,_0x3de94d,_0x54c250,_0x2f24de,_0x288309);})['then'](function(_0x455f67){if(_0x455f67){logger[_0x865c('0x15')](_0x865c('0x56'),_0x455f67['id']);switch(_0x1f5b37['type']){case _0x865c('0x57'):logger[_0x865c('0x15')](_0x865c('0x4c'),_0x865c('0x58'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x1f5b37[_0x865c('0xe')],_0x3de94d['id'],_0x455f67['id']),'method':_0x865c('0xf')});case _0x865c('0x59'):logger[_0x865c('0x15')](_0x865c('0x4c'),_0x865c('0x5a'));emit(util[_0x865c('0x19')](_0x865c('0x5b'),_0x50f043[_0x865c('0x47')]),'trigger:browser:url',{'uri':util['format'](_0x865c('0x5c'),_0x1f5b37[_0x865c('0xe')][_0x865c('0x5d')](_0x865c('0x5e'),''),_0x455f67['id'])});break;default:logger[_0x865c('0x5f')](_0x865c('0x4c'),_0x865c('0x60'));}}})[_0x865c('0x61')](function(_0x493917){logger['error'](_0x865c('0x62'),util['inspect'](_0x493917,{'showHidden':!![],'depth':null}));});};exports[_0x865c('0x63')]=function(_0x594d49,_0x10a437,_0xf03492,_0x1611a6,_0x23bc4e,_0xfbbbfc,_0x12bf36){var _0x127f13,_0x568879;_0xfbbbfc[_0x865c('0xe')]=intUtil[_0x865c('0x49')](_0xfbbbfc[_0x865c('0xe')]);_0xfbbbfc['serverUrl']=intUtil['stripTrailingSlash'](_0xfbbbfc['serverUrl']);if(_0x12bf36&&_0x12bf36['recordingFormat']&&_0x12bf36[_0x865c('0x64')]!=='none'){logger[_0x865c('0x15')](_0x865c('0x65'),'Recording\x20is\x20enabled!');_0x10a437[_0x865c('0x4e')]=util[_0x865c('0x19')](_0x865c('0x4f'),_0xfbbbfc[_0x865c('0x4a')],_0x10a437[_0x865c('0x50')],md5(_0x10a437[_0x865c('0x50')]));}headers[_0x865c('0x51')]=getAuth(_0xfbbbfc);return getUser(_0xfbbbfc,_0x1611a6['email'])[_0x865c('0x14')](function(_0x3da939){_0x127f13=_0x3da939;logger[_0x865c('0x15')](_0x865c('0x53'),_0x127f13['id']);return getEndUser(_0xfbbbfc,_0x10a437[_0x865c('0x66')],_0x10a437[_0x865c('0x67')]);})['then'](function(_0x17503d){_0x568879=_0x17503d;logger['info'](_0x865c('0x55'),_0x568879['id']);return getTicket(_0xfbbbfc,_0x127f13,_0x568879,_0xf03492,_0x10a437);})[_0x865c('0x14')](function(_0x33f73a){if(_0x33f73a){logger[_0x865c('0x15')](_0x865c('0x56'),_0x33f73a['id']);switch(_0xfbbbfc[_0x865c('0x3a')]){case _0x865c('0x57'):logger[_0x865c('0x15')](_0x865c('0x65'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0x865c('0x68'),_0xfbbbfc[_0x865c('0xe')],_0x127f13['id'],_0x33f73a['id']),'method':_0x865c('0xf')});case _0x865c('0x59'):logger[_0x865c('0x15')]('[OUTBOUND]',_0x865c('0x5a'));emit(util[_0x865c('0x19')]('user:%s',_0x1611a6['name']),'trigger:browser:url',{'uri':util['format'](_0x865c('0x5c'),_0xfbbbfc['remoteUri'][_0x865c('0x5d')](_0x865c('0x5e'),''),_0x33f73a['id'])});break;default:logger[_0x865c('0x5f')](_0x865c('0x65'),_0x865c('0x60'));}}})['catch'](function(_0x130393){logger[_0x865c('0x5f')](_0x865c('0x69'),util[_0x865c('0x6a')](_0x130393,{'showHidden':!![],'depth':null}));});};exports[_0x865c('0x6b')]=function(_0x21233b,_0x493d18,_0x3569b8,_0x1136d4,_0x2ab25a,_0x58e436){var _0x27f919,_0x4b4240;_0x58e436['remoteUri']=intUtil['stripTrailingSlash'](_0x58e436['remoteUri']);_0x58e436[_0x865c('0x4a')]=intUtil[_0x865c('0x49')](_0x58e436[_0x865c('0x4a')]);if(_0x2ab25a&&_0x2ab25a[_0x865c('0x4b')]){logger[_0x865c('0x15')]('['+_0x493d18[_0x865c('0x6c')][_0x865c('0x6d')]()+']',_0x865c('0x4d'));_0x493d18[_0x865c('0x4e')]=util[_0x865c('0x19')](_0x865c('0x4f'),_0x58e436['serverUrl'],_0x493d18[_0x865c('0x50')],md5(_0x493d18[_0x865c('0x50')]));}else{_0x493d18[_0x865c('0x4e')]='';}headers['Authorization']=getAuth(_0x58e436);return getUser(_0x58e436)[_0x865c('0x14')](function(_0x12c6a0){_0x27f919=_0x12c6a0;logger[_0x865c('0x15')](_0x865c('0x53'),_0x27f919['id']);return getEndUser(_0x58e436,_0x493d18[_0x865c('0x6e')],_0x493d18[_0x865c('0x54')]);})[_0x865c('0x14')](function(_0x50d0e8){_0x4b4240=_0x50d0e8;logger[_0x865c('0x15')](_0x865c('0x55'),_0x4b4240['id']);return getTicket(_0x58e436,_0x27f919,_0x4b4240,_0x3569b8,_0x493d18);})[_0x865c('0x14')](function(_0xfdfa7){if(_0xfdfa7){logger[_0x865c('0x15')](_0x865c('0x56'),_0xfdfa7['id']);}})['catch'](function(_0x4e6881){logger[_0x865c('0x5f')]('['+_0x493d18['lastevent'][_0x865c('0x6d')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x865c('0x6a')](_0x4e6881,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb4e8=['map','forEach','includes','string','picklist','toLowerCase','content','type','idField','customField','custom_fields','push','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Authorization','destcalleridname','trigger:browser:url','replace','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridnum','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','POST','Tags','name','Subjects','getString','Fields','then','Ticket\x20created!','ticket','validateEmail','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','filter','length','first','Enduser\x20found!','%s/users.json','end-user','Enduser\x20created.','authType','%s:%s','username','password','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET'];(function(_0x4f7551,_0x5a19e6){var _0x3a58d5=function(_0xa165c4){while(--_0xa165c4){_0x4f7551['push'](_0x4f7551['shift']());}};_0x3a58d5(++_0x5a19e6);}(_0xb4e8,0xa4));var _0x8b4e=function(_0x50c5b7,_0x5422cd){_0x50c5b7=_0x50c5b7-0x0;var _0x1b2209=_0xb4e8[_0x50c5b7];return _0x1b2209;};'use strict';var _=require(_0x8b4e('0x0'));var rp=require(_0x8b4e('0x1'));var md5=require(_0x8b4e('0x2'));var util=require(_0x8b4e('0x3'));var Redis=require(_0x8b4e('0x4'));var intUtil=require(_0x8b4e('0x5'));var config=require(_0x8b4e('0x6'));var logger=require('../../../../config/logger')('zendesk');config[_0x8b4e('0x7')]=_[_0x8b4e('0x8')](config['redis'],{'host':_0x8b4e('0x9'),'port':0x18eb});var io=require(_0x8b4e('0xa'))(new Redis(config[_0x8b4e('0x7')]));function emit(_0x172414,_0x398b3d,_0x3c1718){io['to'](_0x172414)[_0x8b4e('0xb')](_0x398b3d,_0x3c1718);}var headers={'Content-Type':_0x8b4e('0xc'),'Accept':'application/json'};function getTicket(_0x29d5e6,_0x3a52b4,_0x3312e9,_0x4be456,_0x14646d){logger[_0x8b4e('0xd')](_0x8b4e('0xe'));return request({'uri':util[_0x8b4e('0xf')]('%s/tickets.json',_0x29d5e6['remoteUri']),'method':_0x8b4e('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x3312e9['id'],'submitter_id':_0x3a52b4?_0x3a52b4['id']:undefined,'assignee_id':_0x3a52b4?_0x3a52b4['id']:undefined,'tags':getTags(_0x4be456[_0x8b4e('0x11')],_0x8b4e('0x12')),'subject':intUtil['getString'](_0x4be456[_0x8b4e('0x13')],_0x14646d,'\x20'),'description':intUtil[_0x8b4e('0x14')](_0x4be456['Descriptions'],_0x14646d,'\x0a'),'comment':{'public':![],'body':intUtil[_0x8b4e('0x14')](_0x4be456['Descriptions'],_0x14646d,'\x0a')}},getCustomFields(_0x4be456[_0x8b4e('0x15')],_0x14646d))}})[_0x8b4e('0x16')](function(_0x1ccc84){logger[_0x8b4e('0xd')](_0x8b4e('0x17'));return _0x1ccc84[_0x8b4e('0x18')];});}function getUser(_0x2be529,_0x12a7b0){if(intUtil[_0x8b4e('0x19')](_0x12a7b0)){logger[_0x8b4e('0xd')]('Getting\x20agent\x20with\x20email',_0x12a7b0);return request({'uri':util[_0x8b4e('0xf')](_0x8b4e('0x1a'),_0x2be529[_0x8b4e('0x1b')]),'qs':{'query':util[_0x8b4e('0xf')](_0x8b4e('0x1c'),_0x12a7b0)}})[_0x8b4e('0x16')](function(_0x3edb9d){if(_0x3edb9d['count']){logger[_0x8b4e('0xd')]('Agent\x20found!');return _[_0x8b4e('0x1d')](_0x3edb9d['results'],{'email':_0x12a7b0,'role':_0x8b4e('0x1e')});}else{logger[_0x8b4e('0xd')](_0x8b4e('0x1f'));return request({'uri':util['format']('%s/users/me.json',_0x2be529['remoteUri'])})[_0x8b4e('0x16')](function(_0x3e57c2){logger['info'](_0x8b4e('0x20'));return _0x3e57c2[_0x8b4e('0x21')];});}});}else{logger[_0x8b4e('0xd')](_0x8b4e('0x1f'));return request({'uri':util[_0x8b4e('0xf')]('%s/users/me.json',_0x2be529[_0x8b4e('0x1b')])})['then'](function(_0x4e0880){logger[_0x8b4e('0xd')](_0x8b4e('0x20'));return _0x4e0880[_0x8b4e('0x21')];});}}function getEndUser(_0x6a4eca,_0xc0f7d0,_0x316445){logger[_0x8b4e('0xd')](_0x8b4e('0x22'),_0x316445);return request({'uri':util['format']('%s/search.json',_0x6a4eca[_0x8b4e('0x1b')]),'qs':{'query':util[_0x8b4e('0xf')](_0x8b4e('0x23'),_0x316445)}})[_0x8b4e('0x16')](function(_0x5f138b){var _0x2a7ddc;if(_0x5f138b['results']['length']){_0x5f138b[_0x8b4e('0x24')]=_[_0x8b4e('0x25')](_0x5f138b['results'],{'suspended':![],'role':'end-user'});if(_0x5f138b[_0x8b4e('0x24')][_0x8b4e('0x26')]){_0x2a7ddc=_[_0x8b4e('0x27')](_0x5f138b[_0x8b4e('0x24')]);}}if(_0x2a7ddc){logger['info'](_0x8b4e('0x28'));return _0x2a7ddc;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x8b4e('0xf')](_0x8b4e('0x29'),_0x6a4eca[_0x8b4e('0x1b')]),'method':'POST','body':{'user':{'role':_0x8b4e('0x2a'),'name':util[_0x8b4e('0xf')]('Caller\x20-\x20%s',_0xc0f7d0||_0x316445),'phone':_0x316445}}})[_0x8b4e('0x16')](function(_0x2fc393){logger[_0x8b4e('0xd')](_0x8b4e('0x2b'));return _0x2fc393[_0x8b4e('0x21')];});}});}function getAuth(_0x45d7df){var _0x3c396d;if(_0x45d7df[_0x8b4e('0x2c')]==='password'){_0x3c396d=util['format'](_0x8b4e('0x2d'),_0x45d7df[_0x8b4e('0x2e')],_0x45d7df[_0x8b4e('0x2f')]);}else if(_0x45d7df[_0x8b4e('0x2c')]===_0x8b4e('0x30')){_0x3c396d=util[_0x8b4e('0xf')]('%s/token:%s',_0x45d7df[_0x8b4e('0x2e')],_0x45d7df['token']);}return util[_0x8b4e('0xf')](_0x8b4e('0x31'),new Buffer(_0x3c396d)[_0x8b4e('0x32')](_0x8b4e('0x33')));}function request(_0x35a850){logger[_0x8b4e('0x34')](_0x8b4e('0x35'),JSON[_0x8b4e('0x36')](_0x35a850));return rp(_[_0x8b4e('0x8')](_0x35a850,{'method':_0x8b4e('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x1099ab,_0x7e5190){var _0x3c09c5=[];if(_0x1099ab&&_0x1099ab['length']>0x0){_0x3c09c5=_[_0x8b4e('0x38')](_0x1099ab,_0x7e5190);}return _0x3c09c5;}function getCustomFields(_0x25ba6a,_0x2a3369){var _0x2deeca=[];var _0xb37b2f={'custom_fields':[]};if(_0x25ba6a[_0x8b4e('0x26')]>0x0){_[_0x8b4e('0x39')](_0x25ba6a,function(_0xade493){if(_[_0x8b4e('0x3a')]([_0x8b4e('0x3b'),_0x8b4e('0x3c')],_0xade493['type'])&&_0xade493['nameField']&&!_0xade493['customField']){_0xb37b2f[_0xade493['nameField'][_0x8b4e('0x3d')]()]=_0xade493[_0x8b4e('0x3e')]['toString']();}else if(_[_0x8b4e('0x3a')]([_0x8b4e('0x3b'),'picklist'],_0xade493[_0x8b4e('0x3f')])&&_0xade493[_0x8b4e('0x40')]&&_0xade493[_0x8b4e('0x41')]){_0xb37b2f[_0x8b4e('0x42')][_0x8b4e('0x43')]({'id':_0xade493[_0x8b4e('0x40')],'value':_0xade493[_0x8b4e('0x3e')][_0x8b4e('0x32')]()});}else if(_0xade493[_0x8b4e('0x3f')]==='variable'&&_0xade493[_0x8b4e('0x44')]&&_0xade493['idField']&&_0xade493[_0x8b4e('0x41')]){_0x2a3369[_0xade493[_0x8b4e('0x44')]]&&_0xb37b2f[_0x8b4e('0x42')][_0x8b4e('0x43')]({'id':_0xade493['idField'],'value':_0x2a3369[_0xade493[_0x8b4e('0x44')]][_0x8b4e('0x32')]()});}else if(_0xade493['type']===_0x8b4e('0x45')&&_0xade493[_0x8b4e('0x46')]&&_0xade493[_0x8b4e('0x46')][_0x8b4e('0x12')]&&_0xade493[_0x8b4e('0x40')]&&_0xade493[_0x8b4e('0x41')]){_0x2a3369[_0xade493[_0x8b4e('0x46')][_0x8b4e('0x12')][_0x8b4e('0x3d')]()]&&_0xb37b2f[_0x8b4e('0x42')]['push']({'id':_0xade493[_0x8b4e('0x40')],'value':_0x2a3369[_0xade493[_0x8b4e('0x46')][_0x8b4e('0x12')][_0x8b4e('0x3d')]()][_0x8b4e('0x32')]()});}});}return _0xb37b2f;}exports[_0x8b4e('0x47')]=function(_0x40a3c7,_0x64b11c,_0x4685d9,_0x5e01be,_0x4a3862,_0x11f250){var _0x409420,_0x264dac;_0x11f250[_0x8b4e('0x1b')]=intUtil[_0x8b4e('0x48')](_0x11f250[_0x8b4e('0x1b')]);_0x11f250['serverUrl']=intUtil[_0x8b4e('0x48')](_0x11f250[_0x8b4e('0x49')]);if(_0x4a3862&&_0x4a3862[_0x8b4e('0x4a')]){logger[_0x8b4e('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x64b11c[_0x8b4e('0x4b')]=util[_0x8b4e('0xf')](_0x8b4e('0x4c'),_0x11f250['serverUrl'],_0x64b11c[_0x8b4e('0x4d')],md5(_0x64b11c['uniqueid']));}else{_0x64b11c[_0x8b4e('0x4b')]='';}headers['Authorization']=getAuth(_0x11f250);return getUser(_0x11f250,_0x5e01be['email'])[_0x8b4e('0x16')](function(_0x3b41d8){_0x409420=_0x3b41d8;logger[_0x8b4e('0xd')](_0x8b4e('0x4e'),_0x409420['id']);return getEndUser(_0x11f250,_0x64b11c[_0x8b4e('0x4f')],_0x64b11c['calleridnum']);})[_0x8b4e('0x16')](function(_0x59d566){_0x264dac=_0x59d566;logger[_0x8b4e('0xd')](_0x8b4e('0x50'),_0x264dac['id']);return getTicket(_0x11f250,_0x409420,_0x264dac,_0x4685d9,_0x64b11c);})[_0x8b4e('0x16')](function(_0x2496b3){if(_0x2496b3){logger[_0x8b4e('0xd')](_0x8b4e('0x51'),_0x2496b3['id']);switch(_0x11f250['type']){case _0x8b4e('0x52'):logger[_0x8b4e('0xd')]('[QUEUE]',_0x8b4e('0x53'));return request({'uri':util[_0x8b4e('0xf')](_0x8b4e('0x54'),_0x11f250[_0x8b4e('0x1b')],_0x409420['id'],_0x2496b3['id']),'method':_0x8b4e('0x10')});case _0x8b4e('0x55'):logger[_0x8b4e('0xd')](_0x8b4e('0x56'),_0x8b4e('0x57'));emit(util['format'](_0x8b4e('0x58'),_0x5e01be[_0x8b4e('0x12')]),'trigger:browser:url',{'uri':util['format'](_0x8b4e('0x59'),_0x11f250[_0x8b4e('0x1b')]['replace'](_0x8b4e('0x5a'),''),_0x2496b3['id'])});break;default:logger['error'](_0x8b4e('0x56'),_0x8b4e('0x5b'));}}})['catch'](function(_0x499472){logger[_0x8b4e('0x5c')](_0x8b4e('0x5d'),util[_0x8b4e('0x5e')](_0x499472,{'showHidden':!![],'depth':null}));});};exports[_0x8b4e('0x5f')]=function(_0x28a287,_0x8657b2,_0x46384c,_0x39bcf0,_0x1e2c77,_0x479685,_0x4f90d0){var _0x17600,_0x22f6f5;_0x479685['remoteUri']=intUtil['stripTrailingSlash'](_0x479685[_0x8b4e('0x1b')]);_0x479685[_0x8b4e('0x49')]=intUtil[_0x8b4e('0x48')](_0x479685['serverUrl']);if(_0x4f90d0&&_0x4f90d0[_0x8b4e('0x60')]&&_0x4f90d0[_0x8b4e('0x60')]!==_0x8b4e('0x61')){logger[_0x8b4e('0xd')](_0x8b4e('0x62'),_0x8b4e('0x63'));_0x8657b2['recordingURL']=util[_0x8b4e('0xf')](_0x8b4e('0x4c'),_0x479685[_0x8b4e('0x49')],_0x8657b2[_0x8b4e('0x4d')],md5(_0x8657b2[_0x8b4e('0x4d')]));}headers[_0x8b4e('0x64')]=getAuth(_0x479685);return getUser(_0x479685,_0x39bcf0['email'])[_0x8b4e('0x16')](function(_0x2bd94d){_0x17600=_0x2bd94d;logger['info'](_0x8b4e('0x4e'),_0x17600['id']);return getEndUser(_0x479685,_0x8657b2[_0x8b4e('0x65')],_0x8657b2['destcalleridnum']);})['then'](function(_0x44dc55){_0x22f6f5=_0x44dc55;logger[_0x8b4e('0xd')](_0x8b4e('0x50'),_0x22f6f5['id']);return getTicket(_0x479685,_0x17600,_0x22f6f5,_0x46384c,_0x8657b2);})[_0x8b4e('0x16')](function(_0x1c9081){if(_0x1c9081){logger[_0x8b4e('0xd')](_0x8b4e('0x51'),_0x1c9081['id']);switch(_0x479685[_0x8b4e('0x3f')]){case _0x8b4e('0x52'):logger[_0x8b4e('0xd')](_0x8b4e('0x62'),_0x8b4e('0x53'));return request({'uri':util[_0x8b4e('0xf')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x479685[_0x8b4e('0x1b')],_0x17600['id'],_0x1c9081['id']),'method':'POST'});case'newTab':logger[_0x8b4e('0xd')](_0x8b4e('0x62'),_0x8b4e('0x57'));emit(util[_0x8b4e('0xf')](_0x8b4e('0x58'),_0x39bcf0[_0x8b4e('0x12')]),_0x8b4e('0x66'),{'uri':util['format'](_0x8b4e('0x59'),_0x479685[_0x8b4e('0x1b')][_0x8b4e('0x67')](_0x8b4e('0x5a'),''),_0x1c9081['id'])});break;default:logger[_0x8b4e('0x5c')](_0x8b4e('0x62'),_0x8b4e('0x5b'));}}})[_0x8b4e('0x68')](function(_0xe1f120){logger[_0x8b4e('0x5c')](_0x8b4e('0x69'),util[_0x8b4e('0x5e')](_0xe1f120,{'showHidden':!![],'depth':null}));});};exports[_0x8b4e('0x6a')]=function(_0x178a94,_0x4a9292,_0x39f0ff,_0x2c7889,_0x1b5ef7,_0x389449){var _0x11e7dc,_0x426d10;_0x389449[_0x8b4e('0x1b')]=intUtil['stripTrailingSlash'](_0x389449[_0x8b4e('0x1b')]);_0x389449[_0x8b4e('0x49')]=intUtil[_0x8b4e('0x48')](_0x389449[_0x8b4e('0x49')]);if(_0x1b5ef7&&_0x1b5ef7['monitor_format']){logger[_0x8b4e('0xd')]('['+_0x4a9292[_0x8b4e('0x6b')][_0x8b4e('0x6c')]()+']',_0x8b4e('0x63'));_0x4a9292[_0x8b4e('0x4b')]=util[_0x8b4e('0xf')](_0x8b4e('0x4c'),_0x389449[_0x8b4e('0x49')],_0x4a9292[_0x8b4e('0x4d')],md5(_0x4a9292[_0x8b4e('0x4d')]));}else{_0x4a9292[_0x8b4e('0x4b')]='';}headers[_0x8b4e('0x64')]=getAuth(_0x389449);return getUser(_0x389449)[_0x8b4e('0x16')](function(_0x31f538){_0x11e7dc=_0x31f538;logger[_0x8b4e('0xd')]('The\x20User\x20ID\x20is:',_0x11e7dc['id']);return getEndUser(_0x389449,_0x4a9292[_0x8b4e('0x4f')],_0x4a9292[_0x8b4e('0x6d')]);})['then'](function(_0x2befd4){_0x426d10=_0x2befd4;logger[_0x8b4e('0xd')](_0x8b4e('0x50'),_0x426d10['id']);return getTicket(_0x389449,_0x11e7dc,_0x426d10,_0x39f0ff,_0x4a9292);})[_0x8b4e('0x16')](function(_0x430ea3){if(_0x430ea3){logger[_0x8b4e('0xd')](_0x8b4e('0x51'),_0x430ea3['id']);}})[_0x8b4e('0x68')](function(_0x17a6fd){logger['error']('['+_0x4a9292[_0x8b4e('0x6b')][_0x8b4e('0x6c')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x17a6fd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index cb90ff3..739cdef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261b=['complete','connect','rejected','Rejected','abandoned','Call_Start_Time','outbound','Call_Type','Fields','Call\x20created!','err','stack','log','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridnum','Inbound','The\x20Call\x20ID\x20is:','user:%s','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','unmanaged','toUpperCase','calleridname','lodash','request-promise','ioredis','../../../../config/environment','zoho','defaults','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','includes','string','picklist','type','idField','variable','variableName','toString','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','info','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','findIndex','email','Agent\x20found!','profile','Administrator','user','Using\x20the\x20admin\x20account!','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','https://www.zohoapis.','/crm/v2/','moduleCreate','role','first_name','last_name','code','data','details','startCase','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','nothing','lead','Creating\x20new\x20call...','Owner','administrator','Subjects','Description','getString','Descriptions','Full_Name','Last_Name','What_Id','First_Name','$se_module','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called'];(function(_0x1c7889,_0x24cd26){var _0x2f14e5=function(_0x9ae1b1){while(--_0x9ae1b1){_0x1c7889['push'](_0x1c7889['shift']());}};_0x2f14e5(++_0x24cd26);}(_0x261b,0x15a));var _0xb261=function(_0xfecd9e,_0x25e4e8){_0xfecd9e=_0xfecd9e-0x0;var _0x464064=_0x261b[_0xfecd9e];return _0x464064;};'use strict';var _=require(_0xb261('0x0'));var rp=require(_0xb261('0x1'));var md5=require('md5');var util=require('util');var intUtil=require('./util');var moment=require('moment');var Redis=require(_0xb261('0x2'));var BPromise=require('bluebird');var config=require(_0xb261('0x3'));var logger=require('../../../../config/logger')(_0xb261('0x4'));config['redis']=_[_0xb261('0x5')](config[_0xb261('0x6')],{'host':_0xb261('0x7'),'port':0x18eb});var io=require(_0xb261('0x8'))(new Redis(config['redis']));function emit(_0x756381,_0x7a0aaa,_0x46bd41){io['to'](_0x756381)[_0xb261('0x9')](_0x7a0aaa,_0x46bd41);}function request(_0x599c92){logger[_0xb261('0xa')](_0xb261('0xb'),JSON[_0xb261('0xc')](_0x599c92));return rp(_0x599c92);}function getCustomFields(_0x2b8dc3,_0x32606f){var _0xdf7398={};if(_0x2b8dc3['length']>0x0){_['forEach'](_0x2b8dc3,function(_0x488310){if(_[_0xb261('0xd')]([_0xb261('0xe'),_0xb261('0xf')],_0x488310[_0xb261('0x10')])&&_0x488310[_0xb261('0x11')]){_0xdf7398[_0x488310[_0xb261('0x11')]]=_0x488310['content']['toString']();}else if(_0x488310[_0xb261('0x10')]===_0xb261('0x12')&&_0x488310[_0xb261('0x13')]&&_0x488310[_0xb261('0x11')]&&_0x32606f[_0x488310[_0xb261('0x13')]]){_0xdf7398[_0x488310[_0xb261('0x11')]]=_0x32606f[_0x488310[_0xb261('0x13')]][_0xb261('0x14')]();}else if(_0x488310[_0xb261('0x10')]===_0xb261('0x15')&&_0x488310[_0xb261('0x16')]&&_0x488310[_0xb261('0x16')]['name']&&_0x488310[_0xb261('0x11')]&&_0x32606f[_0x488310[_0xb261('0x16')][_0xb261('0x17')][_0xb261('0x18')]()]){_0xdf7398[_0x488310['idField']]=_0x32606f[_0x488310[_0xb261('0x16')][_0xb261('0x17')][_0xb261('0x18')]()][_0xb261('0x14')]();}});}return _0xdf7398;}function getName(_0x38d35d){if(_0x38d35d[_0xb261('0x19')]('\x20')>0x0){var _0x3a9f9f=_0x38d35d[_0xb261('0x1a')](/ (.+)/);if(_0x3a9f9f[0x1]){return _0x3a9f9f;}}return[_0x38d35d,_0x38d35d];}var accountsTokens={};function getAccessToken(_0x45f6d8){return new Promise(function(_0x3681bc,_0x147059){if(!_[_0xb261('0x1b')](accountsTokens[_0x45f6d8['id']])&&!_[_0xb261('0x1b')](accountsTokens[_0x45f6d8['id']][_0xb261('0x1c')])){if(moment()[_0xb261('0x1d')](accountsTokens[_0x45f6d8['id']][_0xb261('0x1e')])){_0x3681bc(accountsTokens[_0x45f6d8['id']][_0xb261('0x1c')]);}}var _0x5ac0d9;switch(_0x45f6d8[_0xb261('0x1f')]){case'US':_0x5ac0d9='https://accounts.zoho.com';break;case'AU':_0x5ac0d9=_0xb261('0x20');break;case'EU':_0x5ac0d9='https://accounts.zoho.eu';break;case'IN':_0x5ac0d9=_0xb261('0x21');break;case'CN':_0x5ac0d9=_0xb261('0x22');break;default:_0x5ac0d9=_0xb261('0x23');break;}var _0x1dbe11={'method':_0xb261('0x24'),'uri':_0x5ac0d9+_0xb261('0x25'),'qs':{'refresh_token':_0x45f6d8[_0xb261('0x26')],'client_id':_0x45f6d8['clientId'],'client_secret':_0x45f6d8[_0xb261('0x27')],'grant_type':_0xb261('0x28')},'json':!![]};return rp(_0x1dbe11)[_0xb261('0x29')](function(_0x4fbd81){accountsTokens[_0x45f6d8['id']]={'access_token':_0x4fbd81['access_token'],'expires_in':moment()[_0xb261('0x2a')](_0x4fbd81[_0xb261('0x1e')],_0xb261('0x2b'))};_0x3681bc(_0x4fbd81[_0xb261('0x1c')]);})[_0xb261('0x2c')](function(_0x5ecfad){logger[_0xb261('0x2d')](_0xb261('0x2e'),_0x5ecfad['stack']);_0x147059(_0x5ecfad);});});}function getUser(_0x1c9c9a,_0x2c121b,_0x86ddef,_0x4bc2db){logger[_0xb261('0x2f')]('Search\x20user');return request({'method':_0xb261('0x30'),'uri':util[_0xb261('0x31')](_0xb261('0x32'),_0x2c121b),'qs':{'type':_0xb261('0x33')},'headers':{'Authorization':_0xb261('0x34')+_0x1c9c9a},'json':!![]})[_0xb261('0x29')](function(_0x32032d){if(_0x32032d[_0xb261('0x35')]){var _0x349901=-0x1;if(_['isArrayLikeObject'](_0x32032d[_0xb261('0x35')])){if(!_[_0xb261('0x1b')](_0x4bc2db)){_0x349901=_[_0xb261('0x36')](_0x32032d[_0xb261('0x35')],function(_0x533c0f){return _0x533c0f[_0xb261('0x37')]===_0x4bc2db;});}if(_0x349901>=0x0){logger[_0xb261('0x2f')](_0xb261('0x38'));}else{logger[_0xb261('0x2f')]('Using\x20the\x20admin\x20account!');_0x349901=_['findIndex'](_0x32032d[_0xb261('0x35')],function(_0x53b991){return _0x53b991[_0xb261('0x39')][_0xb261('0x17')]===_0xb261('0x3a');});}return _0x32032d[_0xb261('0x35')][_0x349901];}else{if(_0x32032d[_0xb261('0x3b')][_0xb261('0x39')][_0xb261('0x17')]===_0xb261('0x3a')){logger['info'](_0xb261('0x3c'));user=_0x32032d[_0xb261('0x3b')];return user;}else{logger['error'](_0xb261('0x3d'),JSON['stringify'](_0x32032d));throw new Error(_0xb261('0x3e')+JSON[_0xb261('0xc')](_0x32032d));}}}else{logger[_0xb261('0x2d')](_0xb261('0x3d'),JSON['stringify'](_0x32032d));throw new Error(_0xb261('0x3e')+JSON[_0xb261('0xc')](_0x32032d));}})[_0xb261('0x2c')](function(_0x85f3f3){console[_0xb261('0x2d')](_0x85f3f3);});}function getZohoUser(_0x4f38b6,_0x2a642d){return new BPromise(function(_0x265cf5,_0xeb82e3){request(_0x4f38b6)[_0xb261('0x29')](function(_0x40c5f5){var _0x3acdf1=null;if(_0x40c5f5){_0x3acdf1=_0x40c5f5['data'][0x0];_0x3acdf1[_0xb261('0x3f')]=_0x2a642d;}_0x265cf5(_0x3acdf1);})['catch'](function(_0x22f508){_0xeb82e3(_0x22f508);});});}function createEndUser(_0x58a24d,_0x35a238,_0xf16298,_0x20ee37,_0x58bebd,_0x4f8af2){var _0xf16298=getName(_0xf16298);return request({'method':'POST','uri':_0xb261('0x40')+_0x35a238+_0xb261('0x41')+_['startCase'](_0x4f8af2[_0xb261('0x42')])+'s','body':{'data':[{'Last_Name':_0xf16298[0x1],'First_Name':_0xf16298[0x0],'Phone':_0x20ee37,'Owner':{'name':!_['isNil'](_0x58bebd[_0xb261('0x43')][_0xb261('0x17')])?_0x58bebd['role'][_0xb261('0x17')]:!_[_0xb261('0x1b')](_0x58bebd[_0xb261('0x44')])?_0x58bebd[_0xb261('0x44')]+'\x20'+_0x58bebd[_0xb261('0x45')]:_0x58bebd[_0xb261('0x45')],'id':_0x58bebd['id']}}]},'headers':{'Authorization':_0xb261('0x34')+_0x58a24d},'json':!![]})['then'](function(_0x3e4c14){if(_0x3e4c14&&_0x3e4c14['data'][0x0][_0xb261('0x46')]==='SUCCESS'){var _0x16d53a=_0x3e4c14[_0xb261('0x47')][0x0][_0xb261('0x48')];_0x16d53a[_0xb261('0x3f')]=_[_0xb261('0x49')](_0x4f8af2[_0xb261('0x42')])+'s';return _0x16d53a;}logger['error'](_0xb261('0x3d'),JSON[_0xb261('0xc')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})['catch'](function(_0x148202){console['log'](_0xb261('0x4a'),_0x148202);});}function getEndUser(_0x3b174a,_0x20a926,_0x51ec8c,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41){var _0x264c5d={'method':_0xb261('0x30'),'uri':'','headers':{'Authorization':_0xb261('0x34')+_0x3b174a},'json':!![]};switch(_0x234d41[_0xb261('0x4b')]){case _0xb261('0x4c'):_0x264c5d[_0xb261('0x4d')]=_0xb261('0x40')+_0x20a926+_0xb261('0x4e')+_0x5205a2+'))';return getZohoUser(_0x264c5d,_0xb261('0x4f'))[_0xb261('0x29')](function(_0x378273){if(_0x378273)return _0x378273;_0x264c5d['uri']='https://www.zohoapis.'+_0x20a926+_0xb261('0x50')+_0x5205a2+'))';return getZohoUser(_0x264c5d,_0xb261('0x51'))[_0xb261('0x29')](function(_0x51bb24){if(_0x51bb24)return _0x51bb24;if(_0x234d41[_0xb261('0x42')]!='nothing'){return createEndUser(_0x3b174a,_0x20a926,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41);}else{return{};}});});break;case _0xb261('0x52'):_0x264c5d[_0xb261('0x4d')]=_0xb261('0x40')+_0x20a926+_0xb261('0x4e')+_0x5205a2+'))';return getZohoUser(_0x264c5d,_0xb261('0x4f'))[_0xb261('0x29')](function(_0x2796a2){if(_0x2796a2)return _0x2796a2;if(_0x234d41[_0xb261('0x42')]!=_0xb261('0x53')){return createEndUser(_0x3b174a,_0x20a926,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41);}else{return{};}});break;case _0xb261('0x54'):_0x264c5d['uri']='https://www.zohoapis.'+_0x20a926+_0xb261('0x50')+_0x5205a2+'))';return getZohoUser(_0x264c5d,'Leads')['then'](function(_0x1ad3d1){if(_0x1ad3d1)return _0x1ad3d1;if(_0x234d41['moduleCreate']!='nothing'){return createEndUser(_0x3b174a,_0x20a926,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41);}else{return{};}});break;}}function getCall(_0x3447c6,_0x366e7f,_0x5a5bb0,_0x37cf27,_0x4b34ab,_0x252948,_0x4ed148,_0x184b1e){logger['info'](_0xb261('0x55'));var _0x51e340={};_0x51e340[_0xb261('0x56')]={'name':!_['isNil'](_0x37cf27['role'][_0xb261('0x17')])&&!_[_0xb261('0x1b')](_0x37cf27[_0xb261('0x39')][_0xb261('0x17')])&&_0x37cf27['profile'][_0xb261('0x17')]===_0xb261('0x57')?_0x37cf27[_0xb261('0x43')][_0xb261('0x17')]:!_['isNil'](_0x37cf27[_0xb261('0x44')])?_0x37cf27[_0xb261('0x44')]+'\x20'+_0x37cf27[_0xb261('0x45')]:_0x37cf27['last_name'],'id':_0x37cf27['id']};_0x51e340['Subject']=intUtil['getString'](_0x252948[_0xb261('0x58')],_0x4ed148,'\x20');_0x51e340[_0xb261('0x59')]=intUtil[_0xb261('0x5a')](_0x252948[_0xb261('0x5b')],_0x4ed148,'\x0a');if(_0x4b34ab[_0xb261('0x3f')]===_0xb261('0x4f')){_0x51e340['Who_Id']={'name':!_[_0xb261('0x1b')](_0x4b34ab['Full_Name'])?_0x4b34ab[_0xb261('0x5c')]:!_[_0xb261('0x1b')](_0x4b34ab['First_Name'])?_0x4b34ab['First_Name']+'\x20'+_0x4b34ab[_0xb261('0x5d')]:_0x4b34ab[_0xb261('0x5d')],'id':_0x4b34ab['id']};}if(_0x4b34ab[_0xb261('0x3f')]===_0xb261('0x51')){_0x51e340[_0xb261('0x5e')]={'name':!_['isNil'](_0x4b34ab[_0xb261('0x5c')])?_0x4b34ab[_0xb261('0x5c')]:!_[_0xb261('0x1b')](_0x4b34ab[_0xb261('0x5f')])?_0x4b34ab['First_Name']+'\x20'+_0x4b34ab[_0xb261('0x5d')]:_0x4b34ab[_0xb261('0x5d')],'id':_0x4b34ab['id']};_0x51e340[_0xb261('0x60')]=_[_0xb261('0x49')](_0x4b34ab[_0xb261('0x3f')]);}if(_0x4ed148['talktime']){_0x51e340[_0xb261('0x61')]=moment[_0xb261('0x62')](parseInt(_0x4ed148[_0xb261('0x63')])*0x3e8)[_0xb261('0x31')](_0xb261('0x64'));}else if(_0x4ed148[_0xb261('0x65')]&&_0x4ed148[_0xb261('0x66')]){_0x51e340['Call_Duration']=moment[_0xb261('0x62')](moment(_0x4ed148['endtime'],_0xb261('0x67'))[_0xb261('0x68')](moment(_0x4ed148[_0xb261('0x69')],'YYYY-MM-DDTHH:mm:ss')))['format'](_0xb261('0x64'));}switch(_0x4ed148[_0xb261('0x6a')]){case _0xb261('0x6b'):_0x51e340[_0xb261('0x6c')]=_0xb261('0x6d');break;case _0xb261('0x6e'):case _0xb261('0x6f'):_0x51e340['Call_Result']='Answered';break;case _0xb261('0x70'):_0x51e340[_0xb261('0x6c')]=_0xb261('0x71');break;case _0xb261('0x72'):_0x51e340[_0xb261('0x6c')]='Abandoned';break;case'timeout':_0x51e340[_0xb261('0x6c')]='Timeout';default:}_0x51e340[_0xb261('0x73')]=(_0x184b1e===_0xb261('0x74')?moment(_0x4ed148['starttime'])[_0xb261('0x31')](_0xb261('0x67')):moment(_0x4ed148['agentcalledAt'])[_0xb261('0x31')](_0xb261('0x67')))||moment()[_0xb261('0x31')]('YYYY-MM-DDTHH:mm:ss');_0x51e340[_0xb261('0x75')]=_0x184b1e||'Inbound';_0x51e340=_['merge'](_0x51e340,getCustomFields(_0x252948[_0xb261('0x76')],_0x4ed148));return request({'method':_0xb261('0x24'),'uri':_0xb261('0x40')+_0x366e7f+'/crm/v2/Calls','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3447c6},'body':{'data':[_0x51e340]},'json':!![]})[_0xb261('0x29')](function(_0x33c3a7){if(_0x33c3a7&&_0x33c3a7[_0xb261('0x47')][0x0][_0xb261('0x46')]==='SUCCESS'){logger['info'](_0xb261('0x77'));return{'id':_0x33c3a7[_0xb261('0x47')][0x0][_0xb261('0x48')]['id']};}})[_0xb261('0x2c')](function(_0x4b509c){logger[_0xb261('0x2f')](_0xb261('0x78'),_0x4b509c[_0xb261('0x79')]);console[_0xb261('0x7a')](_0xb261('0x78'),_0x4b509c);});}exports['queue']=function(_0x55bc13,_0x5bff9e,_0x18ab6a,_0x5721b1,_0x17ac31,_0x245d97){var _0x1be109,_0x3cc9aa,_0x1d0875;_0x245d97[_0xb261('0x7b')]=intUtil[_0xb261('0x7c')](_0x245d97['host']);_0x245d97[_0xb261('0x7d')]=intUtil[_0xb261('0x7c')](_0x245d97[_0xb261('0x7d')]);if(_0x17ac31&&_0x17ac31[_0xb261('0x7e')]){logger[_0xb261('0x2f')](_0xb261('0x7f'),'Recording\x20is\x20enabled!');_0x5bff9e[_0xb261('0x80')]=_0x245d97[_0xb261('0x7d')]+_0xb261('0x81')+_0x5bff9e[_0xb261('0x82')]+_0xb261('0x83')+md5(_0x5bff9e['uniqueid']);}else{_0x5bff9e[_0xb261('0x80')]='';}var _0x254e7c=_0x245d97[_0xb261('0x7b')]===_0xb261('0x84')?'eu':_0xb261('0x85');return getAccessToken(_0x245d97)['then'](function(_0x218aae){_0x1d0875=_0x218aae;return getUser(_0x1d0875,_0x254e7c,_0x245d97,_0x5721b1['email']);})['then'](function(_0xd04ab9){_0x1be109=_0xd04ab9;logger['info'](_0xb261('0x86'),_0x1be109['id']);return getEndUser(_0x1d0875,_0x254e7c,_0x245d97,_0x5bff9e['calleridname'],_0x5bff9e[_0xb261('0x87')],_0x1be109,_0x18ab6a);})[_0xb261('0x29')](function(_0x286fdd){_0x3cc9aa=_0x286fdd;return getCall(_0x1d0875,_0x254e7c,_0x245d97,_0x1be109,_0x3cc9aa,_0x18ab6a,_0x5bff9e,_0xb261('0x88'));})[_0xb261('0x29')](function(_0x535197){if(_0x535197){logger['info'](_0xb261('0x89'),_0x535197['id']);logger[_0xb261('0x2f')](_0xb261('0x7f'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb261('0x31')](_0xb261('0x8a'),_0x5721b1['name']),'trigger:browser:url',{'uri':'https://crm.'+_0x245d97[_0xb261('0x7b')]+_0xb261('0x8b')+_0x535197['id']});}})['catch'](function(_0x197727){logger[_0xb261('0x2d')](_0xb261('0x7f'),JSON[_0xb261('0xc')](_0x197727));});};exports[_0xb261('0x74')]=function(_0x5026a1,_0x479f4b,_0x31b66c,_0x545987,_0x36c3d0,_0x278453,_0x16f1fa){var _0xf2632,_0x100021,_0x903c5a;_0x278453[_0xb261('0x7b')]=intUtil[_0xb261('0x7c')](_0x278453[_0xb261('0x7b')]);_0x278453[_0xb261('0x7d')]=intUtil[_0xb261('0x7c')](_0x278453[_0xb261('0x7d')]);if(_0x16f1fa&&_0x16f1fa['recordingFormat']&&_0x16f1fa[_0xb261('0x8c')]!==_0xb261('0x8d')){logger[_0xb261('0x2f')]('[OUTBOUND]',_0xb261('0x8e'));_0x479f4b['recordingURL']=_0x278453[_0xb261('0x7d')]+_0xb261('0x81')+_0x479f4b['uniqueid']+_0xb261('0x83')+md5(_0x479f4b['uniqueid']);}var _0x27961b=_0x278453[_0xb261('0x7b')]===_0xb261('0x84')?'eu':_0xb261('0x85');return getAccessToken(_0x278453)['then'](function(_0x5c13c0){_0x903c5a=_0x5c13c0;return getUser(_0x903c5a,_0x27961b,_0x278453,_0x545987[_0xb261('0x37')]);})[_0xb261('0x29')](function(_0x1d5ef3){_0xf2632=_0x1d5ef3;logger['info'](_0xb261('0x86'),_0xf2632['id']);return getEndUser(_0x903c5a,_0x27961b,_0x278453,_0x479f4b[_0xb261('0x8f')],_0x479f4b[_0xb261('0x90')],_0xf2632,_0x31b66c);})[_0xb261('0x29')](function(_0x48bc77){_0x100021=_0x48bc77;return getCall(_0x903c5a,_0x27961b,_0x278453,_0xf2632,_0x100021,_0x31b66c,_0x479f4b,_0xb261('0x91'));})[_0xb261('0x29')](function(_0x5045f7){if(_0x5045f7){logger[_0xb261('0x2f')](_0xb261('0x89'),_0x5045f7['id']);logger[_0xb261('0x2f')](_0xb261('0x92'),_0xb261('0x93'));emit(util[_0xb261('0x31')](_0xb261('0x8a'),_0x545987[_0xb261('0x17')]),'trigger:browser:url',{'uri':_0xb261('0x94')+_0x278453[_0xb261('0x7b')]+_0xb261('0x8b')+_0x5045f7['id']});}})[_0xb261('0x2c')](function(_0x24a8aa){logger[_0xb261('0x2d')]('[OUTBOUND]',JSON[_0xb261('0xc')](_0x24a8aa));});};exports[_0xb261('0x95')]=function(_0x1f424e,_0x103020,_0x8a6dbc,_0x3a8ff4,_0xf7ef99,_0xa4da51){var _0x3ade2a,_0x2d36f2,_0x38b8eb;_0xa4da51[_0xb261('0x7b')]=intUtil[_0xb261('0x7c')](_0xa4da51[_0xb261('0x7b')]);_0xa4da51['serverUrl']=intUtil['stripTrailingSlash'](_0xa4da51[_0xb261('0x7d')]);if(_0xf7ef99&&_0xf7ef99[_0xb261('0x7e')]){logger[_0xb261('0x2f')]('['+_0x103020[_0xb261('0x6a')][_0xb261('0x96')]()+']',_0xb261('0x8e'));_0x103020[_0xb261('0x80')]=_0xa4da51[_0xb261('0x7d')]+_0xb261('0x81')+_0x103020[_0xb261('0x82')]+_0xb261('0x83')+md5(_0x103020[_0xb261('0x82')]);}else{_0x103020[_0xb261('0x80')]='';}var _0x33ca4b=_0xa4da51[_0xb261('0x7b')]==='zoho.eu'?'eu':'com';return getAccessToken(_0xa4da51)[_0xb261('0x29')](function(_0x1bb4ec){_0x38b8eb=_0x1bb4ec;return getUser(_0x38b8eb,_0x33ca4b,_0xa4da51);})['then'](function(_0x500ca2){_0x3ade2a=_0x500ca2;logger[_0xb261('0x2f')](_0xb261('0x86'),_0x3ade2a['id']);return getEndUser(_0x38b8eb,_0x33ca4b,_0xa4da51,_0x103020[_0xb261('0x97')],_0x103020['calleridnum'],_0x3ade2a,_0x8a6dbc);})[_0xb261('0x29')](function(_0xdd3a5d){_0x2d36f2=_0xdd3a5d;return getCall(_0x38b8eb,_0x33ca4b,_0xa4da51,_0x3ade2a,_0x2d36f2,_0x8a6dbc,_0x103020,_0xb261('0x88'));})[_0xb261('0x29')](function(_0x2fb3c4){if(_0x2fb3c4){logger[_0xb261('0x2f')](_0xb261('0x89'),_0x2fb3c4['id']);}})['catch'](function(_0x1634a0){logger[_0xb261('0x2d')]('['+_0x103020[_0xb261('0x6a')]['toUpperCase']()+']',JSON[_0xb261('0xc')](_0x1634a0));});};
\ No newline at end of file
+var _0x9990=['startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','details','enduserType','Error:\x20','log','CREATE\x20ERROR','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','Last_Name','First_Name','$se_module','Call_Duration','utc','talktime','mm:ss','endtime','YYYY-MM-DDTHH:mm:ss','diff','lastevent','called','Call_Result','Called','complete','connect','rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Fields','/crm/v2/Calls','code','SUCCESS','err','stack','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','https://crm.','recordingFormat','none','/api/voice/recordings/','The\x20User\x20ID\x20is:','destcalleridname','Outbound','[OUTBOUND]','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','unmanaged','toUpperCase','request-promise','md5','util','./util','moment','ioredis','bluebird','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','string','picklist','type','idField','toString','variable','variableName','customVariable','Variable','toLowerCase','name','indexOf','split','isNil','expires_in','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','then','seconds','catch','error','Failing\x20creating\x20the\x20access_token','info','GET','format','https://www.zohoapis.%s/crm/v2/users','isArrayLikeObject','users','findIndex','email','Agent\x20found!','profile','user','Administrator','Using\x20the\x20admin\x20account!','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','https://www.zohoapis.','/crm/v2/'];(function(_0x40a7da,_0x45dafd){var _0x427adf=function(_0x58ec92){while(--_0x58ec92){_0x40a7da['push'](_0x40a7da['shift']());}};_0x427adf(++_0x45dafd);}(_0x9990,0xf6));var _0x0999=function(_0x61780e,_0x44b778){_0x61780e=_0x61780e-0x0;var _0x460363=_0x9990[_0x61780e];return _0x460363;};'use strict';var _=require('lodash');var rp=require(_0x0999('0x0'));var md5=require(_0x0999('0x1'));var util=require(_0x0999('0x2'));var intUtil=require(_0x0999('0x3'));var moment=require(_0x0999('0x4'));var Redis=require(_0x0999('0x5'));var BPromise=require(_0x0999('0x6'));var config=require(_0x0999('0x7'));var logger=require('../../../../config/logger')(_0x0999('0x8'));config[_0x0999('0x9')]=_[_0x0999('0xa')](config['redis'],{'host':_0x0999('0xb'),'port':0x18eb});var io=require(_0x0999('0xc'))(new Redis(config[_0x0999('0x9')]));function emit(_0x304f75,_0x384a4e,_0x36c863){io['to'](_0x304f75)[_0x0999('0xd')](_0x384a4e,_0x36c863);}function request(_0x52d196){logger[_0x0999('0xe')](_0x0999('0xf'),JSON[_0x0999('0x10')](_0x52d196));return rp(_0x52d196);}function getCustomFields(_0x5f1333,_0x128b31){var _0x471d9c={};if(_0x5f1333[_0x0999('0x11')]>0x0){_['forEach'](_0x5f1333,function(_0x43f15c){if(_['includes']([_0x0999('0x12'),_0x0999('0x13')],_0x43f15c[_0x0999('0x14')])&&_0x43f15c[_0x0999('0x15')]){_0x471d9c[_0x43f15c[_0x0999('0x15')]]=_0x43f15c['content'][_0x0999('0x16')]();}else if(_0x43f15c[_0x0999('0x14')]===_0x0999('0x17')&&_0x43f15c[_0x0999('0x18')]&&_0x43f15c[_0x0999('0x15')]&&_0x128b31[_0x43f15c['variableName']]){_0x471d9c[_0x43f15c[_0x0999('0x15')]]=_0x128b31[_0x43f15c[_0x0999('0x18')]][_0x0999('0x16')]();}else if(_0x43f15c[_0x0999('0x14')]===_0x0999('0x19')&&_0x43f15c[_0x0999('0x1a')]&&_0x43f15c[_0x0999('0x1a')]['name']&&_0x43f15c[_0x0999('0x15')]&&_0x128b31[_0x43f15c[_0x0999('0x1a')]['name'][_0x0999('0x1b')]()]){_0x471d9c[_0x43f15c[_0x0999('0x15')]]=_0x128b31[_0x43f15c['Variable'][_0x0999('0x1c')][_0x0999('0x1b')]()][_0x0999('0x16')]();}});}return _0x471d9c;}function getName(_0x470c84){if(_0x470c84[_0x0999('0x1d')]('\x20')>0x0){var _0x2e880b=_0x470c84[_0x0999('0x1e')](/ (.+)/);if(_0x2e880b[0x1]){return _0x2e880b;}}return[_0x470c84,_0x470c84];}var accountsTokens={};function getAccessToken(_0x113017){return new Promise(function(_0x8a5ef6,_0x4d451b){if(!_[_0x0999('0x1f')](accountsTokens[_0x113017['id']])&&!_[_0x0999('0x1f')](accountsTokens[_0x113017['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x113017['id']][_0x0999('0x20')])){_0x8a5ef6(accountsTokens[_0x113017['id']][_0x0999('0x21')]);}}var _0x2404be;switch(_0x113017[_0x0999('0x22')]){case'US':_0x2404be=_0x0999('0x23');break;case'AU':_0x2404be=_0x0999('0x24');break;case'EU':_0x2404be='https://accounts.zoho.eu';break;case'IN':_0x2404be=_0x0999('0x25');break;case'CN':_0x2404be='https://accounts.zoho.com.cn';break;default:_0x2404be=_0x0999('0x26');break;}var _0x5618b3={'method':_0x0999('0x27'),'uri':_0x2404be+_0x0999('0x28'),'qs':{'refresh_token':_0x113017[_0x0999('0x29')],'client_id':_0x113017[_0x0999('0x2a')],'client_secret':_0x113017['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x5618b3)[_0x0999('0x2b')](function(_0x5e5681){accountsTokens[_0x113017['id']]={'access_token':_0x5e5681[_0x0999('0x21')],'expires_in':moment()['add'](_0x5e5681[_0x0999('0x20')],_0x0999('0x2c'))};_0x8a5ef6(_0x5e5681[_0x0999('0x21')]);})[_0x0999('0x2d')](function(_0x358f45){logger[_0x0999('0x2e')](_0x0999('0x2f'),_0x358f45['stack']);_0x4d451b(_0x358f45);});});}function getUser(_0x1df4cf,_0x199df7,_0x36cd03,_0x24411f){logger[_0x0999('0x30')]('Search\x20user');return request({'method':_0x0999('0x31'),'uri':util[_0x0999('0x32')](_0x0999('0x33'),_0x199df7),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1df4cf},'json':!![]})[_0x0999('0x2b')](function(_0x138eab){if(_0x138eab['users']){var _0xdf8b8b=-0x1;if(_[_0x0999('0x34')](_0x138eab[_0x0999('0x35')])){if(!_['isNil'](_0x24411f)){_0xdf8b8b=_[_0x0999('0x36')](_0x138eab['users'],function(_0x38cd21){return _0x38cd21[_0x0999('0x37')]===_0x24411f;});}if(_0xdf8b8b>=0x0){logger[_0x0999('0x30')](_0x0999('0x38'));}else{logger[_0x0999('0x30')]('Using\x20the\x20admin\x20account!');_0xdf8b8b=_['findIndex'](_0x138eab[_0x0999('0x35')],function(_0x3bb5da){return _0x3bb5da[_0x0999('0x39')][_0x0999('0x1c')]==='Administrator';});}return _0x138eab[_0x0999('0x35')][_0xdf8b8b];}else{if(_0x138eab[_0x0999('0x3a')]['profile'][_0x0999('0x1c')]===_0x0999('0x3b')){logger[_0x0999('0x30')](_0x0999('0x3c'));user=_0x138eab[_0x0999('0x3a')];return user;}else{logger[_0x0999('0x2e')]('The\x20failing\x20result\x20is',JSON[_0x0999('0x10')](_0x138eab));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x0999('0x10')](_0x138eab));}}}else{logger[_0x0999('0x2e')](_0x0999('0x3d'),JSON['stringify'](_0x138eab));throw new Error(_0x0999('0x3e')+JSON[_0x0999('0x10')](_0x138eab));}})[_0x0999('0x2d')](function(_0x699e1c){console[_0x0999('0x2e')](_0x699e1c);});}function getZohoUser(_0x32eedc,_0x4724d5){return new BPromise(function(_0x2b0b0e,_0x25cfdc){request(_0x32eedc)[_0x0999('0x2b')](function(_0x485d83){var _0x4224d0=null;if(_0x485d83){_0x4224d0=_0x485d83[_0x0999('0x3f')][0x0];_0x4224d0['enduserType']=_0x4724d5;}_0x2b0b0e(_0x4224d0);})[_0x0999('0x2d')](function(_0x2b1f9c){_0x25cfdc(_0x2b1f9c);});});}function createEndUser(_0x26ac17,_0xb96f4a,_0x41da42,_0x47ab00,_0x16820b,_0x286740){var _0x41da42=getName(_0x41da42);return request({'method':'POST','uri':_0x0999('0x40')+_0xb96f4a+_0x0999('0x41')+_[_0x0999('0x42')](_0x286740[_0x0999('0x43')])+'s','body':{'data':[{'Last_Name':_0x41da42[0x1],'First_Name':_0x41da42[0x0],'Phone':_0x47ab00,'Owner':{'name':!_[_0x0999('0x1f')](_0x16820b[_0x0999('0x44')][_0x0999('0x1c')])?_0x16820b[_0x0999('0x44')][_0x0999('0x1c')]:!_[_0x0999('0x1f')](_0x16820b[_0x0999('0x45')])?_0x16820b[_0x0999('0x45')]+'\x20'+_0x16820b['last_name']:_0x16820b[_0x0999('0x46')],'id':_0x16820b['id']}}]},'headers':{'Authorization':_0x0999('0x47')+_0x26ac17},'json':!![]})['then'](function(_0x51956e){if(_0x51956e&&_0x51956e[_0x0999('0x3f')][0x0]['code']==='SUCCESS'){var _0x119722=_0x51956e[_0x0999('0x3f')][0x0][_0x0999('0x48')];_0x119722[_0x0999('0x49')]=_[_0x0999('0x42')](_0x286740[_0x0999('0x43')])+'s';return _0x119722;}logger[_0x0999('0x2e')](_0x0999('0x3d'),JSON[_0x0999('0x10')](data));throw new Error(_0x0999('0x4a')+JSON[_0x0999('0x10')](data));})['catch'](function(_0x4d86ee){console[_0x0999('0x4b')](_0x0999('0x4c'),_0x4d86ee);});}function getEndUser(_0x130cce,_0x18722a,_0x4431b4,_0xd6a019,_0x1133ee,_0x2be7a2,_0x59438b){var _0x51443f={'method':_0x0999('0x31'),'uri':'','headers':{'Authorization':_0x0999('0x47')+_0x130cce},'json':!![]};switch(_0x59438b['moduleSearch']){case _0x0999('0x4d'):_0x51443f['uri']='https://www.zohoapis.'+_0x18722a+_0x0999('0x4e')+_0x1133ee+'))';return getZohoUser(_0x51443f,_0x0999('0x4f'))[_0x0999('0x2b')](function(_0xaace1c){if(_0xaace1c)return _0xaace1c;_0x51443f[_0x0999('0x50')]=_0x0999('0x40')+_0x18722a+_0x0999('0x51')+_0x1133ee+'))';return getZohoUser(_0x51443f,_0x0999('0x52'))[_0x0999('0x2b')](function(_0x508e42){if(_0x508e42)return _0x508e42;if(_0x59438b[_0x0999('0x43')]!=_0x0999('0x53')){return createEndUser(_0x130cce,_0x18722a,_0xd6a019,_0x1133ee,_0x2be7a2,_0x59438b);}else{return{};}});});break;case _0x0999('0x54'):_0x51443f[_0x0999('0x50')]=_0x0999('0x40')+_0x18722a+_0x0999('0x4e')+_0x1133ee+'))';return getZohoUser(_0x51443f,_0x0999('0x4f'))[_0x0999('0x2b')](function(_0x429c18){if(_0x429c18)return _0x429c18;if(_0x59438b['moduleCreate']!=_0x0999('0x53')){return createEndUser(_0x130cce,_0x18722a,_0xd6a019,_0x1133ee,_0x2be7a2,_0x59438b);}else{return{};}});break;case'lead':_0x51443f[_0x0999('0x50')]=_0x0999('0x40')+_0x18722a+_0x0999('0x51')+_0x1133ee+'))';return getZohoUser(_0x51443f,_0x0999('0x52'))[_0x0999('0x2b')](function(_0x5848ee){if(_0x5848ee)return _0x5848ee;if(_0x59438b[_0x0999('0x43')]!=_0x0999('0x53')){return createEndUser(_0x130cce,_0x18722a,_0xd6a019,_0x1133ee,_0x2be7a2,_0x59438b);}else{return{};}});break;}}function getCall(_0x3de0bf,_0x17942e,_0x3f42f8,_0x3f4f33,_0x563869,_0x1e3d89,_0x1a90f1,_0x3faafa){logger[_0x0999('0x30')](_0x0999('0x55'));var _0x2995ef={};_0x2995ef[_0x0999('0x56')]={'name':!_['isNil'](_0x3f4f33[_0x0999('0x44')][_0x0999('0x1c')])&&!_[_0x0999('0x1f')](_0x3f4f33[_0x0999('0x39')]['name'])&&_0x3f4f33[_0x0999('0x39')][_0x0999('0x1c')]===_0x0999('0x57')?_0x3f4f33['role'][_0x0999('0x1c')]:!_[_0x0999('0x1f')](_0x3f4f33[_0x0999('0x45')])?_0x3f4f33['first_name']+'\x20'+_0x3f4f33[_0x0999('0x46')]:_0x3f4f33[_0x0999('0x46')],'id':_0x3f4f33['id']};_0x2995ef[_0x0999('0x58')]=intUtil[_0x0999('0x59')](_0x1e3d89[_0x0999('0x5a')],_0x1a90f1,'\x20');_0x2995ef[_0x0999('0x5b')]=intUtil[_0x0999('0x59')](_0x1e3d89[_0x0999('0x5c')],_0x1a90f1,'\x0a');if(_0x563869[_0x0999('0x49')]==='Contacts'){_0x2995ef[_0x0999('0x5d')]={'name':!_[_0x0999('0x1f')](_0x563869[_0x0999('0x5e')])?_0x563869[_0x0999('0x5e')]:!_[_0x0999('0x1f')](_0x563869['First_Name'])?_0x563869['First_Name']+'\x20'+_0x563869[_0x0999('0x5f')]:_0x563869[_0x0999('0x5f')],'id':_0x563869['id']};}if(_0x563869['enduserType']==='Leads'){_0x2995ef['What_Id']={'name':!_[_0x0999('0x1f')](_0x563869[_0x0999('0x5e')])?_0x563869[_0x0999('0x5e')]:!_[_0x0999('0x1f')](_0x563869[_0x0999('0x60')])?_0x563869[_0x0999('0x60')]+'\x20'+_0x563869[_0x0999('0x5f')]:_0x563869[_0x0999('0x5f')],'id':_0x563869['id']};_0x2995ef[_0x0999('0x61')]=_['startCase'](_0x563869[_0x0999('0x49')]);}if(_0x1a90f1['talktime']){_0x2995ef[_0x0999('0x62')]=moment[_0x0999('0x63')](parseInt(_0x1a90f1[_0x0999('0x64')])*0x3e8)[_0x0999('0x32')](_0x0999('0x65'));}else if(_0x1a90f1['answertime']&&_0x1a90f1['endtime']){_0x2995ef[_0x0999('0x62')]=moment[_0x0999('0x63')](moment(_0x1a90f1[_0x0999('0x66')],_0x0999('0x67'))[_0x0999('0x68')](moment(_0x1a90f1['starttime'],_0x0999('0x67'))))[_0x0999('0x32')](_0x0999('0x65'));}switch(_0x1a90f1[_0x0999('0x69')]){case _0x0999('0x6a'):_0x2995ef[_0x0999('0x6b')]=_0x0999('0x6c');break;case _0x0999('0x6d'):case _0x0999('0x6e'):_0x2995ef[_0x0999('0x6b')]='Answered';break;case _0x0999('0x6f'):_0x2995ef[_0x0999('0x6b')]='Rejected';break;case _0x0999('0x70'):_0x2995ef[_0x0999('0x6b')]=_0x0999('0x71');break;case _0x0999('0x72'):_0x2995ef['Call_Result']=_0x0999('0x73');default:}_0x2995ef[_0x0999('0x74')]=(_0x3faafa===_0x0999('0x75')?moment(_0x1a90f1['starttime'])['format'](_0x0999('0x67')):moment(_0x1a90f1[_0x0999('0x76')])[_0x0999('0x32')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x0999('0x32')](_0x0999('0x67'));_0x2995ef[_0x0999('0x77')]=_0x3faafa||'Inbound';_0x2995ef=_['merge'](_0x2995ef,getCustomFields(_0x1e3d89[_0x0999('0x78')],_0x1a90f1));return request({'method':_0x0999('0x27'),'uri':_0x0999('0x40')+_0x17942e+_0x0999('0x79'),'headers':{'Authorization':_0x0999('0x47')+_0x3de0bf},'body':{'data':[_0x2995ef]},'json':!![]})['then'](function(_0x511941){if(_0x511941&&_0x511941['data'][0x0][_0x0999('0x7a')]===_0x0999('0x7b')){logger[_0x0999('0x30')]('Call\x20created!');return{'id':_0x511941[_0x0999('0x3f')][0x0][_0x0999('0x48')]['id']};}})[_0x0999('0x2d')](function(_0x4e57e2){logger[_0x0999('0x30')](_0x0999('0x7c'),_0x4e57e2[_0x0999('0x7d')]);console['log']('err',_0x4e57e2);});}exports[_0x0999('0x7e')]=function(_0x576272,_0x3b73ba,_0x4dd2d4,_0x189f3f,_0x7789a4,_0x23193d){var _0x4fe9a8,_0x305434,_0x492d83;_0x23193d[_0x0999('0x7f')]=intUtil[_0x0999('0x80')](_0x23193d[_0x0999('0x7f')]);_0x23193d[_0x0999('0x81')]=intUtil[_0x0999('0x80')](_0x23193d[_0x0999('0x81')]);if(_0x7789a4&&_0x7789a4[_0x0999('0x82')]){logger[_0x0999('0x30')](_0x0999('0x83'),_0x0999('0x84'));_0x3b73ba[_0x0999('0x85')]=_0x23193d[_0x0999('0x81')]+'/api/voice/recordings/'+_0x3b73ba[_0x0999('0x86')]+_0x0999('0x87')+md5(_0x3b73ba['uniqueid']);}else{_0x3b73ba[_0x0999('0x85')]='';}var _0x363e29=_0x23193d[_0x0999('0x7f')]===_0x0999('0x88')?'eu':_0x0999('0x89');return getAccessToken(_0x23193d)[_0x0999('0x2b')](function(_0x10ef5f){_0x492d83=_0x10ef5f;return getUser(_0x492d83,_0x363e29,_0x23193d,_0x189f3f[_0x0999('0x37')]);})[_0x0999('0x2b')](function(_0x5a3cca){_0x4fe9a8=_0x5a3cca;logger[_0x0999('0x30')]('The\x20User\x20ID\x20is:',_0x4fe9a8['id']);return getEndUser(_0x492d83,_0x363e29,_0x23193d,_0x3b73ba[_0x0999('0x8a')],_0x3b73ba[_0x0999('0x8b')],_0x4fe9a8,_0x4dd2d4);})[_0x0999('0x2b')](function(_0xaa6006){_0x305434=_0xaa6006;return getCall(_0x492d83,_0x363e29,_0x23193d,_0x4fe9a8,_0x305434,_0x4dd2d4,_0x3b73ba,_0x0999('0x8c'));})['then'](function(_0x474990){if(_0x474990){logger['info'](_0x0999('0x8d'),_0x474990['id']);logger[_0x0999('0x30')](_0x0999('0x83'),_0x0999('0x8e'));emit(util[_0x0999('0x32')](_0x0999('0x8f'),_0x189f3f['name']),'trigger:browser:url',{'uri':_0x0999('0x90')+_0x23193d[_0x0999('0x7f')]+'/crm/EntityInfo.do?module=Calls&id='+_0x474990['id']});}})[_0x0999('0x2d')](function(_0x1d7821){logger[_0x0999('0x2e')]('[QUEUE]',JSON[_0x0999('0x10')](_0x1d7821));});};exports[_0x0999('0x75')]=function(_0x4d3d7b,_0x1d65e7,_0x362b54,_0x55c64e,_0x131f04,_0x2f503d,_0x7e6651){var _0x5038dd,_0x198620,_0x4e8b45;_0x2f503d['host']=intUtil[_0x0999('0x80')](_0x2f503d['host']);_0x2f503d[_0x0999('0x81')]=intUtil[_0x0999('0x80')](_0x2f503d[_0x0999('0x81')]);if(_0x7e6651&&_0x7e6651[_0x0999('0x91')]&&_0x7e6651[_0x0999('0x91')]!==_0x0999('0x92')){logger[_0x0999('0x30')]('[OUTBOUND]',_0x0999('0x84'));_0x1d65e7['recordingURL']=_0x2f503d['serverUrl']+_0x0999('0x93')+_0x1d65e7[_0x0999('0x86')]+_0x0999('0x87')+md5(_0x1d65e7['uniqueid']);}var _0x57ba52=_0x2f503d['host']==='zoho.eu'?'eu':_0x0999('0x89');return getAccessToken(_0x2f503d)[_0x0999('0x2b')](function(_0x10d564){_0x4e8b45=_0x10d564;return getUser(_0x4e8b45,_0x57ba52,_0x2f503d,_0x55c64e['email']);})[_0x0999('0x2b')](function(_0x214846){_0x5038dd=_0x214846;logger[_0x0999('0x30')](_0x0999('0x94'),_0x5038dd['id']);return getEndUser(_0x4e8b45,_0x57ba52,_0x2f503d,_0x1d65e7[_0x0999('0x95')],_0x1d65e7['destcalleridnum'],_0x5038dd,_0x362b54);})[_0x0999('0x2b')](function(_0x505994){_0x198620=_0x505994;return getCall(_0x4e8b45,_0x57ba52,_0x2f503d,_0x5038dd,_0x198620,_0x362b54,_0x1d65e7,_0x0999('0x96'));})[_0x0999('0x2b')](function(_0x32fcde){if(_0x32fcde){logger[_0x0999('0x30')](_0x0999('0x8d'),_0x32fcde['id']);logger[_0x0999('0x30')](_0x0999('0x97'),_0x0999('0x8e'));emit(util[_0x0999('0x32')](_0x0999('0x8f'),_0x55c64e['name']),_0x0999('0x98'),{'uri':_0x0999('0x90')+_0x2f503d[_0x0999('0x7f')]+_0x0999('0x99')+_0x32fcde['id']});}})[_0x0999('0x2d')](function(_0x3e9cf4){logger[_0x0999('0x2e')](_0x0999('0x97'),JSON[_0x0999('0x10')](_0x3e9cf4));});};exports[_0x0999('0x9a')]=function(_0x429111,_0x3226a0,_0x18327f,_0xf88c86,_0x1aa05b,_0x54e753){var _0x2753ff,_0x247221,_0x489189;_0x54e753[_0x0999('0x7f')]=intUtil[_0x0999('0x80')](_0x54e753[_0x0999('0x7f')]);_0x54e753[_0x0999('0x81')]=intUtil[_0x0999('0x80')](_0x54e753[_0x0999('0x81')]);if(_0x1aa05b&&_0x1aa05b[_0x0999('0x82')]){logger[_0x0999('0x30')]('['+_0x3226a0['lastevent'][_0x0999('0x9b')]()+']','Recording\x20is\x20enabled!');_0x3226a0[_0x0999('0x85')]=_0x54e753['serverUrl']+_0x0999('0x93')+_0x3226a0[_0x0999('0x86')]+_0x0999('0x87')+md5(_0x3226a0[_0x0999('0x86')]);}else{_0x3226a0[_0x0999('0x85')]='';}var _0x3964b3=_0x54e753[_0x0999('0x7f')]==='zoho.eu'?'eu':_0x0999('0x89');return getAccessToken(_0x54e753)[_0x0999('0x2b')](function(_0x2db077){_0x489189=_0x2db077;return getUser(_0x489189,_0x3964b3,_0x54e753);})[_0x0999('0x2b')](function(_0x546896){_0x2753ff=_0x546896;logger[_0x0999('0x30')]('The\x20User\x20ID\x20is:',_0x2753ff['id']);return getEndUser(_0x489189,_0x3964b3,_0x54e753,_0x3226a0[_0x0999('0x8a')],_0x3226a0[_0x0999('0x8b')],_0x2753ff,_0x18327f);})[_0x0999('0x2b')](function(_0x532355){_0x247221=_0x532355;return getCall(_0x489189,_0x3964b3,_0x54e753,_0x2753ff,_0x247221,_0x18327f,_0x3226a0,_0x0999('0x8c'));})[_0x0999('0x2b')](function(_0x8c5ec8){if(_0x8c5ec8){logger['info'](_0x0999('0x8d'),_0x8c5ec8['id']);}})[_0x0999('0x2d')](function(_0x623bf1){logger[_0x0999('0x2e')]('['+_0x3226a0['lastevent'][_0x0999('0x9b')]()+']',JSON[_0x0999('0x10')](_0x623bf1));});};
\ No newline at end of file
index e252ab5..8154cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x638c=['data3','render','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','trigger','data2','Script'];(function(_0x24ebaf,_0x3351a2){var _0x127279=function(_0x27e14d){while(--_0x27e14d){_0x24ebaf['push'](_0x24ebaf['shift']());}};_0x127279(++_0x3351a2);}(_0x638c,0x186));var _0xc638=function(_0x13c17e,_0x332c91){_0x13c17e=_0x13c17e-0x0;var _0x2de4e7=_0x638c[_0x13c17e];return _0x2de4e7;};'use strict';var util=require(_0xc638('0x0'));var sh=require(_0xc638('0x1'));var Mustache=require(_0xc638('0x2'));var logger=require('../../../../config/logger')(_0xc638('0x3'));exports['exec']=function(_0x211ba9,_0x35d52d){var _0x3a52f8=_0x211ba9['data2']?_0x211ba9[_0xc638('0x4')]:_0xc638('0x5');var _0x36d9e7=_0x211ba9[_0xc638('0x6')]?Mustache[_0xc638('0x7')](_0x211ba9[_0xc638('0x6')],_0x35d52d):_0x35d52d;sh['exec'](_0x36d9e7,function(_0x1353ce,_0x5eca94,_0x5ae74d){if(_0x1353ce!==0x0){logger['error'](util[_0xc638('0x8')](_0xc638('0x9'),_0x3a52f8,_0x36d9e7,_0x1353ce,_0x5ae74d));}else{logger[_0xc638('0xa')](util['format'](_0xc638('0xb'),_0x3a52f8,_0x36d9e7,_0x5eca94));}});};
\ No newline at end of file
+var _0x9328=['trigger','exec','data2','Script','data3','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger'];(function(_0x36efa9,_0x134486){var _0x4800db=function(_0x26e15d){while(--_0x26e15d){_0x36efa9['push'](_0x36efa9['shift']());}};_0x4800db(++_0x134486);}(_0x9328,0x1ca));var _0x8932=function(_0x2aa3dd,_0x44747a){_0x2aa3dd=_0x2aa3dd-0x0;var _0x192c66=_0x9328[_0x2aa3dd];return _0x192c66;};'use strict';var util=require(_0x8932('0x0'));var sh=require(_0x8932('0x1'));var Mustache=require(_0x8932('0x2'));var logger=require(_0x8932('0x3'))(_0x8932('0x4'));exports[_0x8932('0x5')]=function(_0x158887,_0x3fabc5){var _0xc57b53=_0x158887[_0x8932('0x6')]?_0x158887[_0x8932('0x6')]:_0x8932('0x7');var _0x5bc273=_0x158887[_0x8932('0x8')]?Mustache['render'](_0x158887['data3'],_0x3fabc5):_0x3fabc5;sh[_0x8932('0x5')](_0x5bc273,function(_0x53ce43,_0x5b5255,_0x2b4a20){if(_0x53ce43!==0x0){logger[_0x8932('0x9')](util[_0x8932('0xa')](_0x8932('0xb'),_0xc57b53,_0x5bc273,_0x53ce43,_0x2b4a20));}else{logger[_0x8932('0xc')](util[_0x8932('0xa')](_0x8932('0xd'),_0xc57b53,_0x5bc273,_0x5b5255));}});};
\ No newline at end of file
index 180e119..d4f7b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x833c=['statusCode','message','request-promise','mustache','../../../../config/logger','trigger','exec','data1','render','data2','data5','number','headers','data6','parse','error','stack','toUpperCase','GET','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s'];(function(_0x5ebb4d,_0x48edbb){var _0x51cea5=function(_0x54fb30){while(--_0x54fb30){_0x5ebb4d['push'](_0x5ebb4d['shift']());}};_0x51cea5(++_0x48edbb);}(_0x833c,0xe9));var _0xc833=function(_0x354712,_0x4fa631){_0x354712=_0x354712-0x0;var _0x3a3c7a=_0x833c[_0x354712];return _0x3a3c7a;};'use strict';var rp=require(_0xc833('0x0'));var util=require('util');var _=require('lodash');var Mustache=require(_0xc833('0x1'));var logger=require(_0xc833('0x2'))(_0xc833('0x3'));exports[_0xc833('0x4')]=function(_0x175360,_0x22c17c){var _0x471113,_0x22aab1;var _0x34a5a4={'method':_0x175360[_0xc833('0x5')]['toUpperCase'](),'uri':Mustache[_0xc833('0x6')](_0x175360[_0xc833('0x7')],_0x22c17c),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x175360[_0xc833('0x8')])===_0xc833('0x9')&&parseInt(_0x175360[_0xc833('0x8')])>=0x1&&parseInt(_0x175360[_0xc833('0x8')])<=0xa?parseInt(_0x175360[_0xc833('0x8')])*0x3e8:0x5*0x3e8};try{_0x34a5a4[_0xc833('0xa')]=_0x175360[_0xc833('0xb')]?JSON[_0xc833('0xc')](Mustache[_0xc833('0x6')](_0x175360[_0xc833('0xb')],_0x22c17c)):{};}catch(_0x5264f1){logger[_0xc833('0xd')](_0x5264f1[_0xc833('0xe')]);}switch(_0x175360['data1'][_0xc833('0xf')]()){case _0xc833('0x10'):case'DELETE':_0x471113=null;_0x34a5a4['qs']=_0x22c17c;break;case _0xc833('0x11'):case _0xc833('0x12'):if(_0x175360[_0xc833('0x13')]){try{_0x471113=JSON[_0xc833('0xc')](Mustache[_0xc833('0x6')](_0x175360[_0xc833('0x13')],_0x22c17c));_0x34a5a4[_0xc833('0x14')]=_0x471113;}catch(_0x475b58){logger[_0xc833('0xd')](_0x475b58['stack']);logger[_0xc833('0xd')](_0xc833('0x15'));}}else{_0x471113=_0x22c17c;_0x34a5a4[_0xc833('0x14')]=_0x471113;}break;}logger[_0xc833('0x16')](util[_0xc833('0x17')](_0xc833('0x18'),_0x175360[_0xc833('0x5')],_0x175360[_0xc833('0x7')],JSON[_0xc833('0x19')](_0x34a5a4)));rp(_0x34a5a4)[_0xc833('0x1a')](function(_0x58d078){_0x471113=!_[_0xc833('0x1b')](_0x471113)?_0xc833('0x1c')+_0x471113:'';_0x22aab1=typeof _0x58d078[_0xc833('0x14')]==='object'?JSON[_0xc833('0x19')](_0x58d078['body']):_0x58d078['body'];logger[_0xc833('0x16')](util[_0xc833('0x17')](_0xc833('0x1d'),_0x175360['data1'],_0x175360[_0xc833('0x7')],_0x58d078['statusCode'],_0x22aab1));})['catch'](function(_0x33f0fc){logger['error'](util[_0xc833('0x17')](_0xc833('0x1e'),_0x175360[_0xc833('0x5')],_0x175360['data2'],_0x33f0fc[_0xc833('0x1f')],_0x33f0fc['name'],_0x33f0fc[_0xc833('0x20')]));});};
\ No newline at end of file
+var _0x7573=['format','isNil',',\x20request\x20body:\x20','stringify','statusCode','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','number','data5','headers','parse','data6','error','stack','GET','DELETE','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info'];(function(_0x30e0f5,_0x5e4826){var _0x3b5800=function(_0x3d9155){while(--_0x3d9155){_0x30e0f5['push'](_0x30e0f5['shift']());}};_0x3b5800(++_0x5e4826);}(_0x7573,0xef));var _0x3757=function(_0x54f7ed,_0x24edcb){_0x54f7ed=_0x54f7ed-0x0;var _0x24afbc=_0x7573[_0x54f7ed];return _0x24afbc;};'use strict';var rp=require(_0x3757('0x0'));var util=require(_0x3757('0x1'));var _=require('lodash');var Mustache=require(_0x3757('0x2'));var logger=require(_0x3757('0x3'))(_0x3757('0x4'));exports[_0x3757('0x5')]=function(_0xe0c7c8,_0x352bd9){var _0x304a57,_0x1c3a5c;var _0x25ba42={'method':_0xe0c7c8[_0x3757('0x6')][_0x3757('0x7')](),'uri':Mustache[_0x3757('0x8')](_0xe0c7c8[_0x3757('0x9')],_0x352bd9),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0xe0c7c8['data5'])===_0x3757('0xa')&&parseInt(_0xe0c7c8[_0x3757('0xb')])>=0x1&&parseInt(_0xe0c7c8[_0x3757('0xb')])<=0xa?parseInt(_0xe0c7c8[_0x3757('0xb')])*0x3e8:0x5*0x3e8};try{_0x25ba42[_0x3757('0xc')]=_0xe0c7c8['data6']?JSON[_0x3757('0xd')](Mustache[_0x3757('0x8')](_0xe0c7c8[_0x3757('0xe')],_0x352bd9)):{};}catch(_0x33c8f3){logger[_0x3757('0xf')](_0x33c8f3[_0x3757('0x10')]);}switch(_0xe0c7c8[_0x3757('0x6')][_0x3757('0x7')]()){case _0x3757('0x11'):case _0x3757('0x12'):_0x304a57=null;_0x25ba42['qs']=_0x352bd9;break;case _0x3757('0x13'):case _0x3757('0x14'):if(_0xe0c7c8[_0x3757('0x15')]){try{_0x304a57=JSON[_0x3757('0xd')](Mustache[_0x3757('0x8')](_0xe0c7c8[_0x3757('0x15')],_0x352bd9));_0x25ba42[_0x3757('0x16')]=_0x304a57;}catch(_0x59209d){logger['error'](_0x59209d['stack']);logger[_0x3757('0xf')](_0x3757('0x17'));}}else{_0x304a57=_0x352bd9;_0x25ba42[_0x3757('0x16')]=_0x304a57;}break;}logger[_0x3757('0x18')](util[_0x3757('0x19')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0xe0c7c8['data1'],_0xe0c7c8[_0x3757('0x9')],JSON['stringify'](_0x25ba42)));rp(_0x25ba42)['then'](function(_0x573f69){_0x304a57=!_[_0x3757('0x1a')](_0x304a57)?_0x3757('0x1b')+_0x304a57:'';_0x1c3a5c=typeof _0x573f69[_0x3757('0x16')]==='object'?JSON[_0x3757('0x1c')](_0x573f69[_0x3757('0x16')]):_0x573f69[_0x3757('0x16')];logger['info'](util[_0x3757('0x19')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0xe0c7c8[_0x3757('0x6')],_0xe0c7c8['data2'],_0x573f69[_0x3757('0x1d')],_0x1c3a5c));})['catch'](function(_0x5bb291){logger[_0x3757('0xf')](util[_0x3757('0x19')](_0x3757('0x1e'),_0xe0c7c8[_0x3757('0x6')],_0xe0c7c8['data2'],_0x5bb291[_0x3757('0x1d')],_0x5bb291[_0x3757('0x1f')],_0x5bb291[_0x3757('0x20')]));});};
\ No newline at end of file
index 95d6bb9..cf2e3db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af7=['error','message','result','catch','exports','client','http','Request','request','rpc','routing'];(function(_0x49cb71,_0x2f0149){var _0x3a50fd=function(_0x48c304){while(--_0x48c304){_0x49cb71['push'](_0x49cb71['shift']());}};_0x3a50fd(++_0x2f0149);}(_0x1af7,0xaa));var _0x71af=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1af7[_0x122ef9];return _0x42fba0;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require('../../config/logger')('routing');var client=jayson[_0x71af('0x0')][_0x71af('0x1')]({'port':0x2329});client[_0x71af('0x2')]=function(_0x126791,_0x1ba33c){return new BPromise(function(_0x3511b8,_0x2f2d6e){return client[_0x71af('0x3')](_0x126791,_0x1ba33c)['then'](function(_0x23fa69){logger['debug'](_0x71af('0x4'),_0x71af('0x5'),_0x126791,_0x1ba33c,_0x23fa69);if(_0x23fa69[_0x71af('0x6')]){logger[_0x71af('0x6')]('rpc',_0x71af('0x5'),_0x126791,_0x23fa69[_0x71af('0x6')][_0x71af('0x7')],_0x1ba33c);return _0x2f2d6e(_0x23fa69[_0x71af('0x6')]['message']);}else{return _0x3511b8(_0x23fa69[_0x71af('0x8')]);}})[_0x71af('0x9')](function(_0x19a2a1){logger[_0x71af('0x6')](_0x71af('0x4'),_0x71af('0x5'),_0x126791,_0x19a2a1,_0x1ba33c);return _0x2f2d6e(_0x19a2a1);});});};module[_0x71af('0xa')]=client;
\ No newline at end of file
+var _0xe581=['error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','request','rpc'];(function(_0x3eb4a9,_0x359d73){var _0x48dbad=function(_0x3a3ca6){while(--_0x3a3ca6){_0x3eb4a9['push'](_0x3eb4a9['shift']());}};_0x48dbad(++_0x359d73);}(_0xe581,0xc8));var _0x1e58=function(_0x4ce3e9,_0x440057){_0x4ce3e9=_0x4ce3e9-0x0;var _0x5cdd21=_0xe581[_0x4ce3e9];return _0x5cdd21;};'use strict';var jayson=require(_0x1e58('0x0'));var BPromise=require(_0x1e58('0x1'));var logger=require(_0x1e58('0x2'))(_0x1e58('0x3'));var client=jayson[_0x1e58('0x4')][_0x1e58('0x5')]({'port':0x2329});client['Request']=function(_0x27ddfc,_0x47d63a){return new BPromise(function(_0x49aed8,_0x1f56b1){return client[_0x1e58('0x6')](_0x27ddfc,_0x47d63a)['then'](function(_0x135251){logger['debug'](_0x1e58('0x7'),'routing',_0x27ddfc,_0x47d63a,_0x135251);if(_0x135251['error']){logger[_0x1e58('0x8')](_0x1e58('0x7'),'routing',_0x27ddfc,_0x135251[_0x1e58('0x8')][_0x1e58('0x9')],_0x47d63a);return _0x1f56b1(_0x135251[_0x1e58('0x8')]['message']);}else{return _0x49aed8(_0x135251[_0x1e58('0xa')]);}})[_0x1e58('0xb')](function(_0x22a128){logger[_0x1e58('0x8')](_0x1e58('0x7'),_0x1e58('0x3'),_0x27ddfc,_0x22a128,_0x47d63a);return _0x1f56b1(_0x22a128);});});};module[_0x1e58('0xc')]=client;
\ No newline at end of file
index fc8b493..63faca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc0e=['loginMailFrequency','catch','log','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen'];(function(_0x59cf43,_0x50c140){var _0x58c221=function(_0x31c72e){while(--_0x31c72e){_0x59cf43['push'](_0x59cf43['shift']());}};_0x58c221(++_0x50c140);}(_0xdc0e,0xa8));var _0xedc0=function(_0xb77d35,_0x291854){_0xb77d35=_0xb77d35-0x0;var _0x5389a8=_0xdc0e[_0xb77d35];return _0x5389a8;};'use strict';var BPromise=require('bluebird');var server=require(_0xedc0('0x0'));var Realtime=require(_0xedc0('0x1'));var EmailChannel=require(_0xedc0('0x2'));var mailAccount=require(_0xedc0('0x3'));var setting=require(_0xedc0('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xedc0('0x5')]()[_0xedc0('0x6')](mailAccount[_0xedc0('0x7')]())[_0xedc0('0x6')](realtime[_0xedc0('0x8')]())[_0xedc0('0x6')](function(){email[_0xedc0('0x9')](realtime[_0xedc0('0xa')]);return realtime;});}function main(){return server[_0xedc0('0xb')](realtime,email)[_0xedc0('0x6')](function(){return initRealtime();})[_0xedc0('0x6')](function(){return setting['getSettings']();})['then'](function(_0xf75062){return setInterval(initRealtime,_0xf75062[_0xedc0('0xc')]*0x3e8);})[_0xedc0('0xd')](function(_0x2ea874){console[_0xedc0('0xe')](_0x2ea874);});}main();
\ No newline at end of file
+var _0x10ff=['refresh','mailAccounts','listen','loginMailFrequency','log','bluebird','./lib/email','./rpc/mailAccount','resolve','then','getMailAccounts','initMailAccounts'];(function(_0x48dda2,_0x251d33){var _0x197638=function(_0x251239){while(--_0x251239){_0x48dda2['push'](_0x48dda2['shift']());}};_0x197638(++_0x251d33);}(_0x10ff,0x1b5));var _0xf10f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x10ff[_0xfae23b];return _0x200640;};'use strict';var BPromise=require(_0xf10f('0x0'));var server=require('./server');var Realtime=require('./realtime');var EmailChannel=require(_0xf10f('0x1'));var mailAccount=require(_0xf10f('0x2'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xf10f('0x3')]()[_0xf10f('0x4')](mailAccount[_0xf10f('0x5')]())[_0xf10f('0x4')](realtime[_0xf10f('0x6')]())[_0xf10f('0x4')](function(){email[_0xf10f('0x7')](realtime[_0xf10f('0x8')]);return realtime;});}function main(){return server[_0xf10f('0x9')](realtime,email)[_0xf10f('0x4')](function(){return initRealtime();})['then'](function(){return setting['getSettings']();})['then'](function(_0x3dbdb1){return setInterval(initRealtime,_0x3dbdb1[_0xf10f('0xa')]*0x3e8);})['catch'](function(_0x1ccd00){console[_0xf10f('0xb')](_0x1ccd00);});}main();
\ No newline at end of file
index abe9882..0699a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe62f=['../rpc/mailAccount','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','total','isNil','stringify','refresh','hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','status','disabled','messageStatus','connected','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','verifySmtp','Smtp','verify','verified','bluebird','md5','ioredis','../../../config/logger','email','redis','localhost','socket.io-emitter'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xe62f,0x8e));var _0xfe62=function(_0x3effbf,_0xe2236b){_0x3effbf=_0x3effbf-0x0;var _0x2f4c11=_0xe62f[_0x3effbf];return _0x2f4c11;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0xfe62('0x0'));var md5=require(_0xfe62('0x1'));var Redis=require(_0xfe62('0x2'));var config=require('../../../config/environment');var logger=require(_0xfe62('0x3'))(_0xfe62('0x4'));config['redis']=_['defaults'](config[_0xfe62('0x5')],{'host':_0xfe62('0x6'),'port':0x18eb});var io=require(_0xfe62('0x7'))(new Redis(config[_0xfe62('0x5')]));var EmailImap=require('./imap');var EmailSmtp=require('./smtp');var mailAccount=require(_0xfe62('0x8'));var md5Accounts={};function EmailChannel(_0x56db6b){logger['info']('start\x20email\x20channel');this[_0xfe62('0x9')]=_0x56db6b[_0xfe62('0x9')];this[_0xfe62('0xa')]={};this[_0xfe62('0xb')]=new EmailSmtp();}EmailChannel[_0xfe62('0xc')][_0xfe62('0xd')]=function(_0x2c010f){var _0x12f264=this[_0xfe62('0x9')][_0x2c010f];var _0x38e362={'id':_0x12f264['id'],'name':_0x12f264[_0xfe62('0xe')],'key':_0x12f264[_0xfe62('0xf')],'active':_0x12f264[_0xfe62('0x10')],'Imap':{'status':_0x12f264[_0xfe62('0x11')]['status'],'messageStatus':_0x12f264[_0xfe62('0x11')]['messageStatus'],'total':_0x12f264[_0xfe62('0x11')][_0xfe62('0x12')]}};if(_[_0xfe62('0x13')](md5Accounts[_0x2c010f])){md5Accounts[_0x2c010f]={};}var _0xe3df82=md5(JSON[_0xfe62('0x14')](_0x38e362));if(md5Accounts[_0x2c010f]['md5']!==_0xe3df82){md5Accounts[_0x2c010f][_0xfe62('0x1')]=_0xe3df82;io[_0xfe62('0xd')]('mailAccount:update',_0x38e362);}};EmailChannel['prototype'][_0xfe62('0x15')]=function(_0x382c0a){for(var _0x5ebb2d in _0x382c0a){if(_0x382c0a[_0xfe62('0x16')](_0x5ebb2d)){if(_0x382c0a[_0x5ebb2d][_0xfe62('0x11')]&&_0x382c0a[_0x5ebb2d][_0xfe62('0x10')]){var _0x509dcb=_0x382c0a[_0x5ebb2d][_0xfe62('0x11')];if(!this['imapAccounts'][_0xfe62('0x16')](_0x509dcb['id'])){this['imapAccounts'][_0x509dcb['id']]=new EmailImap(_0x509dcb,_0x382c0a[_0x5ebb2d]['email']);this[_0xfe62('0xa')][_0x509dcb['id']]['on'](_0xfe62('0x17'),this[_0xfe62('0x18')][_0xfe62('0x19')](this,_0x5ebb2d));this['imapAccounts'][_0x509dcb['id']]['on'](_0xfe62('0x4'),this[_0xfe62('0x1a')]['bind'](this,_0x5ebb2d));this[_0xfe62('0xa')][_0x509dcb['id']]['on'](_0xfe62('0x1b'),this[_0xfe62('0x1c')][_0xfe62('0x19')](this,_0x5ebb2d));this[_0xfe62('0xa')][_0x509dcb['id']]['on'](_0xfe62('0x1d'),this[_0xfe62('0x1e')]['bind'](this,_0x5ebb2d));}}else{if(_[_0xfe62('0x13')](this[_0xfe62('0x9')][_0x5ebb2d][_0xfe62('0x11')])){this['mailAccounts'][_0x5ebb2d][_0xfe62('0x11')]={};}this[_0xfe62('0x9')][_0x5ebb2d][_0xfe62('0x11')][_0xfe62('0x1f')]=_0xfe62('0x20');this['mailAccounts'][_0x5ebb2d][_0xfe62('0x11')][_0xfe62('0x21')]='';this['emit'](_0x5ebb2d);}}}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x18')]=function(_0x5ab7db,_0x15a101){if(this[_0xfe62('0x9')][_0x5ab7db]){this['mailAccounts'][_0x5ab7db][_0xfe62('0x11')][_0xfe62('0x1f')]=_0xfe62('0x22');this['mailAccounts'][_0x5ab7db][_0xfe62('0x11')][_0xfe62('0x21')]=_0x15a101[_0xfe62('0xe')];if(_0x15a101[_0xfe62('0x23')]){this[_0xfe62('0x9')][_0x5ab7db]['Imap'][_0xfe62('0x12')]=_0x15a101[_0xfe62('0x23')][_0xfe62('0x12')];}return this[_0xfe62('0xd')](_0x5ab7db);}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x1a')]=function(_0x26a5a1,_0x281f3c){logger[_0xfe62('0x24')](_0xfe62('0x25'),_0x281f3c[_0xfe62('0x26')],_0x281f3c['lastName'],_0x281f3c[_0xfe62('0x27')],_0x26a5a1);if(this[_0xfe62('0x9')][_0x26a5a1]){return mailAccount['notify'](_0x26a5a1,_0x281f3c)[_0xfe62('0x28')](function(_0x444e0d){if(_0x444e0d){logger[_0xfe62('0x24')](_0xfe62('0x29'));}})[_0xfe62('0x2a')](function(_0x1f1b3a){logger[_0xfe62('0x1d')](_0xfe62('0x2b'),JSON[_0xfe62('0x14')](_0x1f1b3a));});}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x1c')]=function(_0x4a7c2e){if(this[_0xfe62('0x9')][_0x4a7c2e]&&this[_0xfe62('0x9')][_0x4a7c2e]['Imap']){if(this[_0xfe62('0xa')][this['mailAccounts'][_0x4a7c2e]['Imap']['id']]){delete this[_0xfe62('0xa')][this['mailAccounts'][_0x4a7c2e][_0xfe62('0x11')]['id']];}this[_0xfe62('0x9')][_0x4a7c2e][_0xfe62('0x11')][_0xfe62('0x2c')]=moment();this[_0xfe62('0xd')](_0x4a7c2e);}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x1e')]=function(_0x4c7145,_0x2884d7){if(this['mailAccounts'][_0x4c7145]){this['mailAccounts'][_0x4c7145][_0xfe62('0x11')][_0xfe62('0x1f')]='error';this['mailAccounts'][_0x4c7145][_0xfe62('0x11')][_0xfe62('0x21')]=_0x2884d7;return this[_0xfe62('0xd')](_0x4c7145);}};EmailChannel['prototype'][_0xfe62('0x2d')]=function(_0x3a9eaf,_0x373b5d){return this[_0xfe62('0xb')]['send'](_0x3a9eaf,_0x373b5d);};EmailChannel[_0xfe62('0xc')][_0xfe62('0x2e')]=function(_0x457dec){var _0x20d94e=this;if(this[_0xfe62('0x9')][_0x457dec['id']]){if(_['isNil'](this[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')])){this['mailAccounts'][_0x457dec['id']][_0xfe62('0x2f')]={};}this[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')][_0xfe62('0x2c')]=moment();return new BPromise(function(_0x51812a,_0x341ee0){return _0x20d94e[_0xfe62('0xb')][_0xfe62('0x30')](_0x457dec)['then'](function(_0x3cc881){_0x20d94e[_0xfe62('0x9')][_0x457dec['id']]['Smtp'][_0xfe62('0x1f')]=_0xfe62('0x31');_0x20d94e['mailAccounts'][_0x457dec['id']][_0xfe62('0x2f')][_0xfe62('0x21')]='';_0x20d94e['emit'](_0x457dec['id']);_0x51812a(_0x3cc881);})['catch'](function(_0x14933d){_0x20d94e[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')][_0xfe62('0x1f')]=_0xfe62('0x1d');_0x20d94e[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')]['messageStatus']=_0x14933d;_0x20d94e[_0xfe62('0xd')](_0x457dec['id']);_0x341ee0(_0x14933d);});});}return this[_0xfe62('0xb')][_0xfe62('0x30')](_0x457dec);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0xccd5=['Imap','messageStatus','total','mailAccount:update','refresh','hasOwnProperty','box','handleImapBox','bind','email','handleImapEmail','end','handleImapEnd','isNil','disabled','emit','connected','messages','firstName','lastName','notify','then','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','handleImapError','error','sendMail','send','verifySmtp','Smtp','lastSync','verify','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','name','key','active','status'];(function(_0x3eac75,_0x2d0e9b){var _0x4bb153=function(_0x535489){while(--_0x535489){_0x3eac75['push'](_0x3eac75['shift']());}};_0x4bb153(++_0x2d0e9b);}(_0xccd5,0x13a));var _0x5ccd=function(_0x351453,_0x34718d){_0x351453=_0x351453-0x0;var _0x37be69=_0xccd5[_0x351453];return _0x37be69;};'use strict';var _=require(_0x5ccd('0x0'));var moment=require(_0x5ccd('0x1'));var BPromise=require(_0x5ccd('0x2'));var md5=require(_0x5ccd('0x3'));var Redis=require(_0x5ccd('0x4'));var config=require(_0x5ccd('0x5'));var logger=require(_0x5ccd('0x6'))('email');config[_0x5ccd('0x7')]=_[_0x5ccd('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5ccd('0x9'))(new Redis(config['redis']));var EmailImap=require(_0x5ccd('0xa'));var EmailSmtp=require(_0x5ccd('0xb'));var mailAccount=require(_0x5ccd('0xc'));var md5Accounts={};function EmailChannel(_0x5c48a9){logger[_0x5ccd('0xd')]('start\x20email\x20channel');this[_0x5ccd('0xe')]=_0x5c48a9['mailAccounts'];this[_0x5ccd('0xf')]={};this[_0x5ccd('0x10')]=new EmailSmtp();}EmailChannel[_0x5ccd('0x11')]['emit']=function(_0x59b6d1){var _0xe32c79=this[_0x5ccd('0xe')][_0x59b6d1];var _0x2c3575={'id':_0xe32c79['id'],'name':_0xe32c79[_0x5ccd('0x12')],'key':_0xe32c79[_0x5ccd('0x13')],'active':_0xe32c79[_0x5ccd('0x14')],'Imap':{'status':_0xe32c79['Imap'][_0x5ccd('0x15')],'messageStatus':_0xe32c79[_0x5ccd('0x16')][_0x5ccd('0x17')],'total':_0xe32c79['Imap'][_0x5ccd('0x18')]}};if(_['isNil'](md5Accounts[_0x59b6d1])){md5Accounts[_0x59b6d1]={};}var _0x528d3d=md5(JSON['stringify'](_0x2c3575));if(md5Accounts[_0x59b6d1][_0x5ccd('0x3')]!==_0x528d3d){md5Accounts[_0x59b6d1][_0x5ccd('0x3')]=_0x528d3d;io['emit'](_0x5ccd('0x19'),_0x2c3575);}};EmailChannel[_0x5ccd('0x11')][_0x5ccd('0x1a')]=function(_0x384f1f){for(var _0x3578ab in _0x384f1f){if(_0x384f1f[_0x5ccd('0x1b')](_0x3578ab)){if(_0x384f1f[_0x3578ab][_0x5ccd('0x16')]&&_0x384f1f[_0x3578ab][_0x5ccd('0x14')]){var _0x5cff9c=_0x384f1f[_0x3578ab]['Imap'];if(!this[_0x5ccd('0xf')]['hasOwnProperty'](_0x5cff9c['id'])){this[_0x5ccd('0xf')][_0x5cff9c['id']]=new EmailImap(_0x5cff9c,_0x384f1f[_0x3578ab]['email']);this['imapAccounts'][_0x5cff9c['id']]['on'](_0x5ccd('0x1c'),this[_0x5ccd('0x1d')][_0x5ccd('0x1e')](this,_0x3578ab));this['imapAccounts'][_0x5cff9c['id']]['on'](_0x5ccd('0x1f'),this[_0x5ccd('0x20')]['bind'](this,_0x3578ab));this[_0x5ccd('0xf')][_0x5cff9c['id']]['on'](_0x5ccd('0x21'),this[_0x5ccd('0x22')][_0x5ccd('0x1e')](this,_0x3578ab));this[_0x5ccd('0xf')][_0x5cff9c['id']]['on']('error',this['handleImapError']['bind'](this,_0x3578ab));}}else{if(_[_0x5ccd('0x23')](this[_0x5ccd('0xe')][_0x3578ab]['Imap'])){this[_0x5ccd('0xe')][_0x3578ab][_0x5ccd('0x16')]={};}this[_0x5ccd('0xe')][_0x3578ab][_0x5ccd('0x16')][_0x5ccd('0x15')]=_0x5ccd('0x24');this['mailAccounts'][_0x3578ab][_0x5ccd('0x16')][_0x5ccd('0x17')]='';this[_0x5ccd('0x25')](_0x3578ab);}}}};EmailChannel[_0x5ccd('0x11')][_0x5ccd('0x1d')]=function(_0x3496f2,_0x544481){if(this[_0x5ccd('0xe')][_0x3496f2]){this['mailAccounts'][_0x3496f2][_0x5ccd('0x16')]['status']=_0x5ccd('0x26');this[_0x5ccd('0xe')][_0x3496f2][_0x5ccd('0x16')][_0x5ccd('0x17')]=_0x544481[_0x5ccd('0x12')];if(_0x544481[_0x5ccd('0x27')]){this['mailAccounts'][_0x3496f2]['Imap'][_0x5ccd('0x18')]=_0x544481[_0x5ccd('0x27')][_0x5ccd('0x18')];}return this[_0x5ccd('0x25')](_0x3496f2);}};EmailChannel[_0x5ccd('0x11')][_0x5ccd('0x20')]=function(_0xcae756,_0x2a1722){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x2a1722[_0x5ccd('0x28')],_0x2a1722[_0x5ccd('0x29')],_0x2a1722['from'],_0xcae756);if(this[_0x5ccd('0xe')][_0xcae756]){return mailAccount[_0x5ccd('0x2a')](_0xcae756,_0x2a1722)[_0x5ccd('0x2b')](function(_0x2446d7){if(_0x2446d7){logger[_0x5ccd('0xd')](_0x5ccd('0x2c'));}})['catch'](function(_0x4f212d){logger['error'](_0x5ccd('0x2d'),JSON[_0x5ccd('0x2e')](_0x4f212d));});}};EmailChannel['prototype'][_0x5ccd('0x22')]=function(_0xe57abf){if(this[_0x5ccd('0xe')][_0xe57abf]&&this[_0x5ccd('0xe')][_0xe57abf][_0x5ccd('0x16')]){if(this[_0x5ccd('0xf')][this[_0x5ccd('0xe')][_0xe57abf][_0x5ccd('0x16')]['id']]){delete this[_0x5ccd('0xf')][this[_0x5ccd('0xe')][_0xe57abf][_0x5ccd('0x16')]['id']];}this[_0x5ccd('0xe')][_0xe57abf][_0x5ccd('0x16')]['lastSync']=moment();this[_0x5ccd('0x25')](_0xe57abf);}};EmailChannel['prototype'][_0x5ccd('0x2f')]=function(_0xb4242,_0x266e3f){if(this['mailAccounts'][_0xb4242]){this[_0x5ccd('0xe')][_0xb4242]['Imap'][_0x5ccd('0x15')]=_0x5ccd('0x30');this[_0x5ccd('0xe')][_0xb4242][_0x5ccd('0x16')][_0x5ccd('0x17')]=_0x266e3f;return this[_0x5ccd('0x25')](_0xb4242);}};EmailChannel[_0x5ccd('0x11')][_0x5ccd('0x31')]=function(_0x5ba414,_0x57e797){return this[_0x5ccd('0x10')][_0x5ccd('0x32')](_0x5ba414,_0x57e797);};EmailChannel['prototype'][_0x5ccd('0x33')]=function(_0x307610){var _0x1d3e3d=this;if(this[_0x5ccd('0xe')][_0x307610['id']]){if(_[_0x5ccd('0x23')](this[_0x5ccd('0xe')][_0x307610['id']][_0x5ccd('0x34')])){this[_0x5ccd('0xe')][_0x307610['id']]['Smtp']={};}this[_0x5ccd('0xe')][_0x307610['id']][_0x5ccd('0x34')][_0x5ccd('0x35')]=moment();return new BPromise(function(_0x3a958a,_0xffd50f){return _0x1d3e3d[_0x5ccd('0x10')][_0x5ccd('0x36')](_0x307610)[_0x5ccd('0x2b')](function(_0x202564){_0x1d3e3d[_0x5ccd('0xe')][_0x307610['id']][_0x5ccd('0x34')]['status']='verified';_0x1d3e3d['mailAccounts'][_0x307610['id']][_0x5ccd('0x34')][_0x5ccd('0x17')]='';_0x1d3e3d[_0x5ccd('0x25')](_0x307610['id']);_0x3a958a(_0x202564);})['catch'](function(_0x274b99){_0x1d3e3d['mailAccounts'][_0x307610['id']][_0x5ccd('0x34')][_0x5ccd('0x15')]=_0x5ccd('0x30');_0x1d3e3d['mailAccounts'][_0x307610['id']][_0x5ccd('0x34')][_0x5ccd('0x17')]=_0x274b99;_0x1d3e3d[_0x5ccd('0x25')](_0x307610['id']);_0xffd50f(_0x274b99);});});}return this['smtp']['verify'](_0x307610);};module[_0x5ccd('0x37')]=EmailChannel;
\ No newline at end of file
index 496796c..e560a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf98=['connect','inherits','connTimeout','authTimeout','user','password','host','port','tls','autotls','required','getHost','service','anonymous@xcally.com','handleReady','openBox','handleOpenBox','prototype','handleError','box','readUnseen','handleCloseBox','end','search','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleMessageBody','handleSimpleParser','handleMessageEnd','emit','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','imap','lodash','randomstring','mailparser','simpleParser','Iconv','EventEmitter','./utils','../../../config/logger','email','mailbox','INBOX','account','ready','once','handleEnd','bind','error'];(function(_0x514088,_0x54d21a){var _0x217d05=function(_0xcf77be){while(--_0xcf77be){_0x514088['push'](_0x514088['shift']());}};_0x217d05(++_0x54d21a);}(_0xaf98,0x11d));var _0x8af9=function(_0xa0b239,_0x1faa74){_0xa0b239=_0xa0b239-0x0;var _0x2e2592=_0xaf98[_0xa0b239];return _0x2e2592;};'use strict';var fs=require('fs');var path=require(_0x8af9('0x0'));var util=require(_0x8af9('0x1'));var Imap=require(_0x8af9('0x2'));var _=require(_0x8af9('0x3'));var rs=require(_0x8af9('0x4'));var simpleParser=require(_0x8af9('0x5'))[_0x8af9('0x6')];var Iconv=require('iconv')[_0x8af9('0x7')];var EventEmitter=require('events')[_0x8af9('0x8')];var utils=require(_0x8af9('0x9'));var logger=require(_0x8af9('0xa'))(_0x8af9('0xb'));function EmailImap(_0x7e316a,_0x197b3b){this[_0x8af9('0xc')]=_0x8af9('0xd');this[_0x8af9('0xe')]=this['getAccount'](_0x7e316a,_0x197b3b);this[_0x8af9('0x2')]=new Imap(this[_0x8af9('0xe')]);this[_0x8af9('0x2')]['once'](_0x8af9('0xf'),this['handleReady']['bind'](this));this[_0x8af9('0x2')][_0x8af9('0x10')]('end',this[_0x8af9('0x11')][_0x8af9('0x12')](this));this[_0x8af9('0x2')]['on'](_0x8af9('0x13'),this['handleError'][_0x8af9('0x12')](this));this[_0x8af9('0x2')][_0x8af9('0x14')]();}util[_0x8af9('0x15')](EmailImap,EventEmitter);EmailImap['prototype']['getAccount']=function(_0x9dbaae,_0x5738f7){var _0x85f7a6={'connTimeout':_0x9dbaae[_0x8af9('0x16')]?_0x9dbaae[_0x8af9('0x16')]*0x3e8:0x2710,'authTimeout':_0x9dbaae['authTimeout']?_0x9dbaae[_0x8af9('0x17')]*0x3e8:0x1388};if(_['isNil'](_0x9dbaae['service'])){if(_0x9dbaae['authentication']){_0x85f7a6[_0x8af9('0x18')]=_0x9dbaae[_0x8af9('0x18')];_0x85f7a6[_0x8af9('0x19')]=_0x9dbaae[_0x8af9('0x19')];}_0x85f7a6[_0x8af9('0x1a')]=_0x9dbaae[_0x8af9('0x1a')];_0x85f7a6[_0x8af9('0x1b')]=_0x9dbaae[_0x8af9('0x1b')]||0x3e1;if(_0x9dbaae[_0x8af9('0x1c')]){_0x85f7a6['tls']=!![];}else{_0x85f7a6[_0x8af9('0x1c')]=![];_0x85f7a6[_0x8af9('0x1d')]=_0x8af9('0x1e');}}else{_0x85f7a6[_0x8af9('0x18')]=_0x9dbaae[_0x8af9('0x18')];_0x85f7a6[_0x8af9('0x19')]=_0x9dbaae[_0x8af9('0x19')];_0x85f7a6[_0x8af9('0x1a')]=utils[_0x8af9('0x1f')](_0x9dbaae[_0x8af9('0x20')]);_0x85f7a6[_0x8af9('0x1b')]=0x3e1;_0x85f7a6[_0x8af9('0x1c')]=!![];}_0x85f7a6[_0x8af9('0xb')]=_0x5738f7||_0x9dbaae[_0x8af9('0x18')]||_0x8af9('0x21');return _0x85f7a6;};EmailImap['prototype'][_0x8af9('0x22')]=function(){this[_0x8af9('0x2')][_0x8af9('0x23')](this[_0x8af9('0xc')],![],this[_0x8af9('0x24')]['bind'](this));};EmailImap[_0x8af9('0x25')]['handleOpenBox']=function(_0x387c0e,_0x29eacd){if(_0x387c0e){this[_0x8af9('0x26')](_0x387c0e,!![]);}else{this['emit'](_0x8af9('0x27'),_0x29eacd);this[_0x8af9('0x28')]();}};EmailImap[_0x8af9('0x25')][_0x8af9('0x29')]=function(_0x477d9c){if(_0x477d9c){this['handleError'](_0x477d9c,!![]);}else{this['imap'][_0x8af9('0x2a')]();}};EmailImap['prototype'][_0x8af9('0x28')]=function(){this[_0x8af9('0x2')][_0x8af9('0x2b')](['UNSEEN'],this[_0x8af9('0x2c')]['bind'](this));};EmailImap['prototype'][_0x8af9('0x2c')]=function(_0x4d8691,_0x1c6773){if(_0x4d8691){this[_0x8af9('0x26')](_0x4d8691,!![]);}else{if(_0x1c6773[_0x8af9('0x2d')]){try{var _0x49591e=this['imap'][_0x8af9('0x2e')](_0x1c6773,{'bodies':'','markSeen':!![]});_0x49591e['on'](_0x8af9('0x2f'),this[_0x8af9('0x30')][_0x8af9('0x12')](this));_0x49591e['once'](_0x8af9('0x13'),this[_0x8af9('0x31')][_0x8af9('0x12')](this));_0x49591e[_0x8af9('0x10')]('end',this[_0x8af9('0x32')][_0x8af9('0x12')](this));}catch(_0x127386){logger[_0x8af9('0x13')](_0x127386);}}else{this[_0x8af9('0x2')][_0x8af9('0x33')](!![],this[_0x8af9('0x29')]['bind'](this));}}};EmailImap[_0x8af9('0x25')]['handleFetchMessage']=function(_0x49acc0,_0x3af169){_0x49acc0['on']('body',this[_0x8af9('0x34')][_0x8af9('0x12')](this));_0x49acc0[_0x8af9('0x10')]('attributes',this['handleMessageAttributes'][_0x8af9('0x12')](this));_0x49acc0[_0x8af9('0x10')](_0x8af9('0x2a'),this['handleMessageEnd'][_0x8af9('0x12')](this));};EmailImap[_0x8af9('0x25')][_0x8af9('0x34')]=function(_0x4b2340,_0x560005){simpleParser(_0x4b2340,{'Iconv':Iconv},this[_0x8af9('0x35')]['bind'](this));};EmailImap['prototype']['handleMessageAttributes']=function(_0x4f57fa){};EmailImap[_0x8af9('0x25')][_0x8af9('0x36')]=function(){};EmailImap[_0x8af9('0x25')][_0x8af9('0x35')]=function(_0xe1019c,_0x2eb150){if(_0xe1019c){logger['error'](_0xe1019c);}else{var _0x100d87=this;utils['parser'](this['account'],_0x2eb150,function(_0x1782b1){_0x100d87['emit'](_0x8af9('0xb'),_0x1782b1);});}};EmailImap['prototype'][_0x8af9('0x32')]=function(){this[_0x8af9('0x2')][_0x8af9('0x33')](!![],this['handleCloseBox'][_0x8af9('0x12')](this));};EmailImap[_0x8af9('0x25')]['handleFetchError']=function(_0x589555){this[_0x8af9('0x26')](_0x589555);this[_0x8af9('0x2')][_0x8af9('0x33')](!![],this[_0x8af9('0x29')][_0x8af9('0x12')](this));};EmailImap[_0x8af9('0x25')][_0x8af9('0x11')]=function(){this[_0x8af9('0x37')](_0x8af9('0x2a'));};EmailImap['prototype']['handleError']=function(_0xfa2826,_0x5da88c){logger['error'](_0x8af9('0x26'),this[_0x8af9('0xe')][_0x8af9('0xb')],JSON[_0x8af9('0x38')](_0xfa2826));var _0x4bb1b8='';if(_0xfa2826){if(_0xfa2826[_0x8af9('0x39')]){_0x4bb1b8=_0xfa2826[_0x8af9('0x39')];}else{for(var _0x475036 in _0xfa2826){if(_0xfa2826[_0x8af9('0x3a')](_0x475036)){_0x4bb1b8+=_[_0x8af9('0x3b')](_0x475036)+':\x20'+_0xfa2826[_0x475036]+'\x0a';}}}}if(_0x5da88c){this['imap'][_0x8af9('0x2a')]();}else{this[_0x8af9('0x37')](_0x8af9('0x13'),_0x4bb1b8);this[_0x8af9('0x37')](_0x8af9('0x2a'));}};module[_0x8af9('0x3c')]=EmailImap;
\ No newline at end of file
+var _0x43b8=['error','connect','inherits','authTimeout','service','authentication','user','password','host','port','tls','autotls','required','getHost','email','prototype','openBox','handleOpenBox','handleError','emit','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','stringify','hasOwnProperty','upperFirst','exports','path','util','imap','lodash','randomstring','mailparser','simpleParser','Iconv','events','./utils','../../../config/logger','mailbox','account','getAccount','once','ready','bind','end','handleEnd'];(function(_0x25bd0c,_0x10a934){var _0x1c8e6e=function(_0x4acbfc){while(--_0x4acbfc){_0x25bd0c['push'](_0x25bd0c['shift']());}};_0x1c8e6e(++_0x10a934);}(_0x43b8,0x1bd));var _0x843b=function(_0x352039,_0x270e6f){_0x352039=_0x352039-0x0;var _0x3c97c9=_0x43b8[_0x352039];return _0x3c97c9;};'use strict';var fs=require('fs');var path=require(_0x843b('0x0'));var util=require(_0x843b('0x1'));var Imap=require(_0x843b('0x2'));var _=require(_0x843b('0x3'));var rs=require(_0x843b('0x4'));var simpleParser=require(_0x843b('0x5'))[_0x843b('0x6')];var Iconv=require('iconv')[_0x843b('0x7')];var EventEmitter=require(_0x843b('0x8'))['EventEmitter'];var utils=require(_0x843b('0x9'));var logger=require(_0x843b('0xa'))('email');function EmailImap(_0x16b94f,_0x4c21b3){this[_0x843b('0xb')]='INBOX';this[_0x843b('0xc')]=this[_0x843b('0xd')](_0x16b94f,_0x4c21b3);this[_0x843b('0x2')]=new Imap(this[_0x843b('0xc')]);this[_0x843b('0x2')][_0x843b('0xe')](_0x843b('0xf'),this['handleReady'][_0x843b('0x10')](this));this['imap'][_0x843b('0xe')](_0x843b('0x11'),this[_0x843b('0x12')][_0x843b('0x10')](this));this[_0x843b('0x2')]['on'](_0x843b('0x13'),this['handleError'][_0x843b('0x10')](this));this[_0x843b('0x2')][_0x843b('0x14')]();}util[_0x843b('0x15')](EmailImap,EventEmitter);EmailImap['prototype'][_0x843b('0xd')]=function(_0x26f1b9,_0x73ba4d){var _0x437ac7={'connTimeout':_0x26f1b9['connTimeout']?_0x26f1b9['connTimeout']*0x3e8:0x2710,'authTimeout':_0x26f1b9[_0x843b('0x16')]?_0x26f1b9[_0x843b('0x16')]*0x3e8:0x1388};if(_['isNil'](_0x26f1b9[_0x843b('0x17')])){if(_0x26f1b9[_0x843b('0x18')]){_0x437ac7['user']=_0x26f1b9[_0x843b('0x19')];_0x437ac7[_0x843b('0x1a')]=_0x26f1b9['password'];}_0x437ac7[_0x843b('0x1b')]=_0x26f1b9[_0x843b('0x1b')];_0x437ac7[_0x843b('0x1c')]=_0x26f1b9[_0x843b('0x1c')]||0x3e1;if(_0x26f1b9[_0x843b('0x1d')]){_0x437ac7['tls']=!![];}else{_0x437ac7[_0x843b('0x1d')]=![];_0x437ac7[_0x843b('0x1e')]=_0x843b('0x1f');}}else{_0x437ac7[_0x843b('0x19')]=_0x26f1b9[_0x843b('0x19')];_0x437ac7[_0x843b('0x1a')]=_0x26f1b9[_0x843b('0x1a')];_0x437ac7[_0x843b('0x1b')]=utils[_0x843b('0x20')](_0x26f1b9['service']);_0x437ac7[_0x843b('0x1c')]=0x3e1;_0x437ac7[_0x843b('0x1d')]=!![];}_0x437ac7[_0x843b('0x21')]=_0x73ba4d||_0x26f1b9[_0x843b('0x19')]||'anonymous@xcally.com';return _0x437ac7;};EmailImap[_0x843b('0x22')]['handleReady']=function(){this[_0x843b('0x2')][_0x843b('0x23')](this[_0x843b('0xb')],![],this[_0x843b('0x24')][_0x843b('0x10')](this));};EmailImap[_0x843b('0x22')][_0x843b('0x24')]=function(_0x460a4b,_0x34fcbd){if(_0x460a4b){this[_0x843b('0x25')](_0x460a4b,!![]);}else{this[_0x843b('0x26')](_0x843b('0x27'),_0x34fcbd);this[_0x843b('0x28')]();}};EmailImap[_0x843b('0x22')][_0x843b('0x29')]=function(_0x124ef4){if(_0x124ef4){this[_0x843b('0x25')](_0x124ef4,!![]);}else{this[_0x843b('0x2')][_0x843b('0x11')]();}};EmailImap['prototype'][_0x843b('0x28')]=function(){this[_0x843b('0x2')][_0x843b('0x2a')]([_0x843b('0x2b')],this[_0x843b('0x2c')]['bind'](this));};EmailImap[_0x843b('0x22')][_0x843b('0x2c')]=function(_0x35d06a,_0x5e8db3){if(_0x35d06a){this['handleError'](_0x35d06a,!![]);}else{if(_0x5e8db3['length']){try{var _0x3131f7=this[_0x843b('0x2')]['fetch'](_0x5e8db3,{'bodies':'','markSeen':!![]});_0x3131f7['on'](_0x843b('0x2d'),this[_0x843b('0x2e')][_0x843b('0x10')](this));_0x3131f7[_0x843b('0xe')](_0x843b('0x13'),this[_0x843b('0x2f')][_0x843b('0x10')](this));_0x3131f7[_0x843b('0xe')](_0x843b('0x11'),this[_0x843b('0x30')][_0x843b('0x10')](this));}catch(_0x3fa1cf){logger[_0x843b('0x13')](_0x3fa1cf);}}else{this[_0x843b('0x2')][_0x843b('0x31')](!![],this[_0x843b('0x29')][_0x843b('0x10')](this));}}};EmailImap[_0x843b('0x22')][_0x843b('0x2e')]=function(_0x4adf2a,_0x98d162){_0x4adf2a['on']('body',this['handleMessageBody'][_0x843b('0x10')](this));_0x4adf2a[_0x843b('0xe')]('attributes',this['handleMessageAttributes'][_0x843b('0x10')](this));_0x4adf2a[_0x843b('0xe')]('end',this[_0x843b('0x32')][_0x843b('0x10')](this));};EmailImap[_0x843b('0x22')]['handleMessageBody']=function(_0x374b3e,_0x390dd3){simpleParser(_0x374b3e,{'Iconv':Iconv},this[_0x843b('0x33')][_0x843b('0x10')](this));};EmailImap['prototype'][_0x843b('0x34')]=function(_0x2a5ef3){};EmailImap['prototype'][_0x843b('0x32')]=function(){};EmailImap[_0x843b('0x22')][_0x843b('0x33')]=function(_0x34b225,_0x2fea38){if(_0x34b225){logger[_0x843b('0x13')](_0x34b225);}else{var _0x5d92af=this;utils[_0x843b('0x35')](this['account'],_0x2fea38,function(_0x14a7eb){_0x5d92af[_0x843b('0x26')](_0x843b('0x21'),_0x14a7eb);});}};EmailImap[_0x843b('0x22')]['handleFetchEnd']=function(){this['imap'][_0x843b('0x31')](!![],this[_0x843b('0x29')][_0x843b('0x10')](this));};EmailImap[_0x843b('0x22')]['handleFetchError']=function(_0x2682ad){this[_0x843b('0x25')](_0x2682ad);this[_0x843b('0x2')][_0x843b('0x31')](!![],this[_0x843b('0x29')]['bind'](this));};EmailImap[_0x843b('0x22')][_0x843b('0x12')]=function(){this[_0x843b('0x26')](_0x843b('0x11'));};EmailImap[_0x843b('0x22')][_0x843b('0x25')]=function(_0x1dbdb9,_0x4bdd60){logger['error'](_0x843b('0x25'),this[_0x843b('0xc')][_0x843b('0x21')],JSON[_0x843b('0x36')](_0x1dbdb9));var _0x207e86='';if(_0x1dbdb9){if(_0x1dbdb9['textCode']){_0x207e86=_0x1dbdb9['textCode'];}else{for(var _0x4bb2ec in _0x1dbdb9){if(_0x1dbdb9[_0x843b('0x37')](_0x4bb2ec)){_0x207e86+=_[_0x843b('0x38')](_0x4bb2ec)+':\x20'+_0x1dbdb9[_0x4bb2ec]+'\x0a';}}}}if(_0x4bdd60){this['imap'][_0x843b('0x11')]();}else{this[_0x843b('0x26')](_0x843b('0x13'),_0x207e86);this[_0x843b('0x26')](_0x843b('0x11'));}};module[_0x843b('0x39')]=EmailImap;
\ No newline at end of file
index b9e0b2b..b4ca0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2251=['prototype','send','use','sendMail','verify','createTransport','toString','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2251,0x1c5));var _0x1225=function(_0x511497,_0x302dde){_0x511497=_0x511497-0x0;var _0x3ad9b3=_0x2251[_0x511497];return _0x3ad9b3;};'use strict';var nodemailer=require(_0x1225('0x0'));var BPromise=require(_0x1225('0x1'));var inlineBase64=require(_0x1225('0x2'));function EmailSmtp(){}EmailSmtp[_0x1225('0x3')][_0x1225('0x4')]=function(_0x3000e8,_0x2d300b){return new BPromise(function(_0x1cfb90,_0x31196a){var _0x50bf26=nodemailer['createTransport'](_0x3000e8);_0x50bf26[_0x1225('0x5')]('compile',inlineBase64());_0x50bf26[_0x1225('0x6')](_0x2d300b,function(_0x3d5848,_0x24dca3){if(_0x3d5848){_0x31196a(_0x3d5848['toString']());}else{_0x1cfb90(_0x24dca3);}});});};EmailSmtp['prototype'][_0x1225('0x7')]=function(_0x3bd49f){return new BPromise(function(_0x149f97,_0x43be78){var _0x1651a8=nodemailer[_0x1225('0x8')](_0x3bd49f);_0x1651a8[_0x1225('0x7')](function(_0x248e1d,_0x24221f){if(_0x248e1d){_0x43be78(_0x248e1d[_0x1225('0x9')]());}else{if(_0x24221f){_0x149f97(_0x24221f);}else{_0x43be78(_0x1225('0xa'));}}});});};module[_0x1225('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0x87d1=['nodemailer','bluebird','nodemailer-plugin-inline-base64','createTransport','use','sendMail','toString','prototype','verify','Not\x20verifired','exports'];(function(_0x4b2b03,_0xbf34ee){var _0x1bf0ed=function(_0x562785){while(--_0x562785){_0x4b2b03['push'](_0x4b2b03['shift']());}};_0x1bf0ed(++_0xbf34ee);}(_0x87d1,0x1a2));var _0x187d=function(_0x2cfb33,_0x2af8e5){_0x2cfb33=_0x2cfb33-0x0;var _0x3fb7b7=_0x87d1[_0x2cfb33];return _0x3fb7b7;};'use strict';var nodemailer=require(_0x187d('0x0'));var BPromise=require(_0x187d('0x1'));var inlineBase64=require(_0x187d('0x2'));function EmailSmtp(){}EmailSmtp['prototype']['send']=function(_0x279983,_0x46c3f6){return new BPromise(function(_0x58a9bd,_0x2ecfef){var _0x52368b=nodemailer[_0x187d('0x3')](_0x279983);_0x52368b[_0x187d('0x4')]('compile',inlineBase64());_0x52368b[_0x187d('0x5')](_0x46c3f6,function(_0x582aef,_0x4f2006){if(_0x582aef){_0x2ecfef(_0x582aef[_0x187d('0x6')]());}else{_0x58a9bd(_0x4f2006);}});});};EmailSmtp[_0x187d('0x7')][_0x187d('0x8')]=function(_0x3b8c1f){return new BPromise(function(_0x2066a2,_0x427896){var _0x487587=nodemailer[_0x187d('0x3')](_0x3b8c1f);_0x487587[_0x187d('0x8')](function(_0x5738e2,_0x289f4f){if(_0x5738e2){_0x427896(_0x5738e2[_0x187d('0x6')]());}else{if(_0x289f4f){_0x2066a2(_0x289f4f);}else{_0x427896(_0x187d('0x9'));}}});});};module[_0x187d('0xa')]=EmailSmtp;
\ No newline at end of file
index 7503c23..ab0fb41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c99=['message','originCc','includes','bcc','attach','attachment','attachment-','%s-%s','now','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','filter','application/ms-tnef','info','format','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','getHost','gmail','yahoo','imap-mail.outlook.com','outlook.office365.com','lodash','randomstring','../../../config/logger','email','value','generate','@xcally.com','head','name','address','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','anonymous','html','test','<img','attachments','forEach','push','filename','replace','_IMG','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c99,0x1ec));var _0x94c9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4c99[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x94c9('0x0'));var moment=require('moment');var random=require(_0x94c9('0x1'));var fs=require('fs');var path=require('path');var util=require('util');var tnef=require('node-tnef');var logger=require(_0x94c9('0x2'))(_0x94c9('0x3'));var config=require('../../../config/environment');function getAddress(_0x2e39a6){var _0x244ae9=_['head'](_0x2e39a6[_0x94c9('0x4')]);return _0x244ae9&&_0x244ae9['address']?_0x244ae9['address']:'anonymous'+random[_0x94c9('0x5')](0x6)+_0x94c9('0x6');}function getFirstName(_0x3a1743){var _0x53bd2d=_[_0x94c9('0x7')](_0x3a1743[_0x94c9('0x4')]);if(_0x53bd2d&&_0x53bd2d[_0x94c9('0x8')]){if(_0x53bd2d[_0x94c9('0x8')]==_0x53bd2d[_0x94c9('0x9')]){return _0x53bd2d[_0x94c9('0x8')]['substring'](0x0,_0x53bd2d[_0x94c9('0x8')][_0x94c9('0xa')]('@'));}var _0xef9ed0=_0x53bd2d['name'][_0x94c9('0xb')](/\s+/);return _0xef9ed0[_0x94c9('0xc')]>0x1?_0xef9ed0[_0x94c9('0xd')](0x0,-0x1)[_0x94c9('0xe')]('\x20'):_0x53bd2d[_0x94c9('0x8')];}return _0x94c9('0xf');}function getLastName(_0x44a017){var _0x132e5e=_['head'](_0x44a017['value']);if(_0x132e5e&&_0x132e5e['name']){var _0x3afa3=_0x132e5e[_0x94c9('0x8')]['split'](/\s+/);return _0x3afa3[_0x94c9('0xc')]>0x1?_0x3afa3[_0x94c9('0x10')]():'';}return'';}function getMails(_0x372b66,_0x56609d){var _0x5db248='';for(var _0x447937=0x0;_0x447937<_0x56609d[_0x94c9('0x4')][_0x94c9('0xc')];_0x447937+=0x1){if(_0x56609d[_0x94c9('0x4')][_0x447937]['address']!==_0x372b66){if(!_[_0x94c9('0x11')](_0x5db248)){_0x5db248+=',';}_0x5db248+=_0x56609d[_0x94c9('0x4')][_0x447937][_0x94c9('0x8')]||_0x56609d[_0x94c9('0x4')][_0x447937][_0x94c9('0x9')]||'';_0x5db248+='\x20<';_0x5db248+=_0x56609d[_0x94c9('0x4')][_0x447937][_0x94c9('0x9')]?_0x56609d['value'][_0x447937][_0x94c9('0x9')]:_0x94c9('0x12')+random['generate'](0x6)+_0x94c9('0x6');_0x5db248+='>';}}return _0x5db248;}function parseEmail(_0x10c163,_0x114828,_0x1bb3f0){if(_0x114828[_0x94c9('0x13')]){var _0x2892d1=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2892d1[_0x94c9('0x14')](_0x114828[_0x94c9('0x13')])){_0x114828[_0x94c9('0x13')]=_0x114828[_0x94c9('0x13')]['replace'](_0x2892d1,'');}if(_0x114828[_0x94c9('0x13')]['includes'](_0x94c9('0x15'))){var _0x497c31=[];_0x114828[_0x94c9('0x16')][_0x94c9('0x17')](_0x2e5398=>{_0x497c31[_0x94c9('0x18')](_0x2e5398[_0x94c9('0x19')]);});var _0x158db9=/<img.*? _SRC(.*?)[^>]+>/g;var _0x578ca5=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xeb9f1=_0x114828[_0x94c9('0x13')][_0x94c9('0x1a')](_0x578ca5,'_SRC');var _0x2ea850=_0xeb9f1['replace'](_0x158db9,_0x94c9('0x1b'));for(let _0x79575e=0x0;_0x79575e<_0x497c31[_0x94c9('0xc')];_0x79575e++){var _0x37b09a=_0x2ea850[_0x94c9('0x1a')](_0x94c9('0x1b'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x497c31[_0x79575e]+_0x94c9('0x1c'));_0x2ea850=_0x37b09a;}_0x114828[_0x94c9('0x13')]=_0x2ea850;}_0x1bb3f0[_0x94c9('0x1d')]=_0x114828['html'];}else{_0x1bb3f0[_0x94c9('0x1d')]=_0x114828[_0x94c9('0x1e')];}if(_0x1bb3f0[_0x94c9('0x1d')]){_0x1bb3f0[_0x94c9('0x1d')]=_0x1bb3f0['body'][_0x94c9('0x1a')](/<a\s+/gi,_0x94c9('0x1f'));}if(_0x114828['to']){_0x1bb3f0['message'][_0x94c9('0x20')]=getMails(null,_0x114828['to']);var _0x4b62ea=getMails(_0x10c163[_0x94c9('0x3')],_0x114828['to']);if(!_[_0x94c9('0x11')](_0x4b62ea)){_0x1bb3f0[_0x94c9('0x21')]['cc']+=_0x4b62ea;}}if(_0x114828['cc']){_0x1bb3f0[_0x94c9('0x21')][_0x94c9('0x22')]=getMails(null,_0x114828['cc']);var _0x589926=getMails(_0x10c163[_0x94c9('0x3')],_0x114828['cc']);if(!_[_0x94c9('0x11')](_0x589926)){if(!_[_0x94c9('0x11')](_0x1bb3f0[_0x94c9('0x21')]['cc'])){_0x1bb3f0['message']['cc']+=',';}_0x1bb3f0[_0x94c9('0x21')]['cc']+=_0x589926;}}if(!_[_0x94c9('0x23')](_0x1bb3f0['message'][_0x94c9('0x20')],_0x10c163[_0x94c9('0x3')])&&!_[_0x94c9('0x23')](_0x1bb3f0['message'][_0x94c9('0x22')],_0x10c163[_0x94c9('0x3')])){_0x1bb3f0['message'][_0x94c9('0x24')]=_0x10c163['email'];}if(_0x114828['attachments']&&_0x114828[_0x94c9('0x16')]['length']){_0x1bb3f0[_0x94c9('0x21')][_0x94c9('0x25')]=_0x114828[_0x94c9('0x16')][_0x94c9('0xc')];for(var _0x2a2db3=0x0,_0x3c6341,_0x504337,_0x34f8e6;_0x2a2db3<_0x114828[_0x94c9('0x16')][_0x94c9('0xc')];_0x2a2db3+=0x1){if(_0x114828[_0x94c9('0x16')][_0x2a2db3]['type']===_0x94c9('0x26')){_0x34f8e6=_0x114828[_0x94c9('0x16')][_0x2a2db3][_0x94c9('0x19')]||_0x94c9('0x27')+_0x2a2db3;_0x3c6341=util['format'](_0x94c9('0x28'),Date[_0x94c9('0x29')](),_0x34f8e6);_0x504337=path[_0x94c9('0xe')](config['root'],_0x94c9('0x2a'),_0x3c6341);fs[_0x94c9('0x2b')](_0x504337,_0x114828[_0x94c9('0x16')][_0x2a2db3][_0x94c9('0x2c')]);_0x1bb3f0[_0x94c9('0x21')][_0x94c9('0x16')][_0x94c9('0x18')]({'name':_0x34f8e6,'basename':_0x3c6341,'type':_0x114828[_0x94c9('0x16')][_0x2a2db3][_0x94c9('0x2d')],'filepath':_0x504337});}}}if(_0x114828[_0x94c9('0x2e')]&&_0x114828[_0x94c9('0x2e')][_0x94c9('0xc')]>0x0){var _0x3cfcc3=[_0x94c9('0x2f'),_0x94c9('0x30'),_0x94c9('0x31')];for(var _0x1117cf=0x0;_0x1117cf<_0x114828[_0x94c9('0x2e')][_0x94c9('0xc')];_0x1117cf++){var _0xd8f228=_[_0x94c9('0xa')](_0x3cfcc3,_0x114828['headerLines'][_0x1117cf][_0x94c9('0x32')]);if(_0xd8f228>=0x0){_0x1bb3f0[_0x94c9('0x33')]=!![];}}}return _0x1bb3f0;}exports[_0x94c9('0x34')]=function(_0x4ed9bd,_0x19cfe6,_0x58475c){var _0x2557a1={'from':getAddress(_0x19cfe6[_0x94c9('0x35')]),'firstName':getFirstName(_0x19cfe6[_0x94c9('0x35')]),'lastName':getLastName(_0x19cfe6['from']),'mapKey':_0x94c9('0x3'),'message':{'from':getMails(_0x4ed9bd['email'],_0x19cfe6[_0x94c9('0x35')]),'to':_0x4ed9bd[_0x94c9('0x3')],'cc':'','subject':_0x19cfe6[_0x94c9('0x36')]||'','messageId':_0x19cfe6[_0x94c9('0x37')],'inReplyTo':_0x19cfe6[_0x94c9('0x38')],'sentAt':moment(_0x19cfe6[_0x94c9('0x39')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x19cfe6['html']&&!_0x19cfe6[_0x94c9('0x1e')]){var _0x32d955=_[_0x94c9('0x3a')](_0x19cfe6['attachments'],{'contentType':_0x94c9('0x3b')});if(_0x32d955['length']){logger[_0x94c9('0x3c')](util[_0x94c9('0x3d')](_0x94c9('0x3e'),_0x19cfe6[_0x94c9('0x37')]));tnef[_0x94c9('0x3f')](_[_0x94c9('0x40')](_0x32d955)[_0x94c9('0x2c')],function(_0x52ca34,_0xe800ed){if(_0xe800ed){_0x19cfe6['html']=_0xe800ed[_0x94c9('0x41')]||_0x94c9('0x42');if(_0xe800ed[_0x94c9('0x43')]){for(var _0x9db0af=0x0;_0x9db0af<_0xe800ed[_0x94c9('0x43')][_0x94c9('0xc')];_0x9db0af++){var _0x2240e1=_0xe800ed[_0x94c9('0x43')][_0x9db0af];_0x2557a1['message'][_0x94c9('0x16')][_0x94c9('0x18')]({'filename':_0x2240e1[_0x94c9('0x44')],'content':Buffer[_0x94c9('0x35')](_0x2240e1[_0x94c9('0x45')])});}}}_0x58475c(parseEmail(_0x4ed9bd,_0x19cfe6,_0x2557a1));});}else{_0x19cfe6['html']=_0x94c9('0x42');_0x58475c(parseEmail(_0x4ed9bd,_0x19cfe6,_0x2557a1));}}else{_0x58475c(parseEmail(_0x4ed9bd,_0x19cfe6,_0x2557a1));}};exports[_0x94c9('0x46')]=function(_0x5cb82d){switch(_0x5cb82d){case _0x94c9('0x47'):return'imap.gmail.com';case _0x94c9('0x48'):return'imap.mail.yahoo.com';case'hotmail':return _0x94c9('0x49');case'outlook365':return _0x94c9('0x4a');}return'127.0.0.1';};
\ No newline at end of file
+var _0x1e82=['node-tnef','email','../../../config/environment','value','address','anonymous','@xcally.com','name','length','join','Anonymous','pop','isEmpty','generate','html','test','replace','includes','<img','attachments','forEach','push','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','message','originCc','bcc','attach','type','attachment','filename','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','indexOf','line','parser','from','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','content','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','imap-mail.outlook.com','outlook365','127.0.0.1','lodash','moment','randomstring','path','util'];(function(_0x102ff9,_0x907658){var _0x24fa97=function(_0x3622ff){while(--_0x3622ff){_0x102ff9['push'](_0x102ff9['shift']());}};_0x24fa97(++_0x907658);}(_0x1e82,0x8b));var _0x21e8=function(_0x4d5913,_0x5a03ca){_0x4d5913=_0x4d5913-0x0;var _0x4f395e=_0x1e82[_0x4d5913];return _0x4f395e;};'use strict';var _=require(_0x21e8('0x0'));var moment=require(_0x21e8('0x1'));var random=require(_0x21e8('0x2'));var fs=require('fs');var path=require(_0x21e8('0x3'));var util=require(_0x21e8('0x4'));var tnef=require(_0x21e8('0x5'));var logger=require('../../../config/logger')(_0x21e8('0x6'));var config=require(_0x21e8('0x7'));function getAddress(_0x59fa8f){var _0x468459=_['head'](_0x59fa8f[_0x21e8('0x8')]);return _0x468459&&_0x468459[_0x21e8('0x9')]?_0x468459[_0x21e8('0x9')]:_0x21e8('0xa')+random['generate'](0x6)+_0x21e8('0xb');}function getFirstName(_0x3754c9){var _0x43a873=_['head'](_0x3754c9[_0x21e8('0x8')]);if(_0x43a873&&_0x43a873[_0x21e8('0xc')]){if(_0x43a873[_0x21e8('0xc')]==_0x43a873[_0x21e8('0x9')]){return _0x43a873['name']['substring'](0x0,_0x43a873[_0x21e8('0xc')]['indexOf']('@'));}var _0x131349=_0x43a873[_0x21e8('0xc')]['split'](/\s+/);return _0x131349[_0x21e8('0xd')]>0x1?_0x131349['slice'](0x0,-0x1)[_0x21e8('0xe')]('\x20'):_0x43a873[_0x21e8('0xc')];}return _0x21e8('0xf');}function getLastName(_0x4eb523){var _0x217605=_['head'](_0x4eb523[_0x21e8('0x8')]);if(_0x217605&&_0x217605[_0x21e8('0xc')]){var _0x158da6=_0x217605['name']['split'](/\s+/);return _0x158da6[_0x21e8('0xd')]>0x1?_0x158da6[_0x21e8('0x10')]():'';}return'';}function getMails(_0x2b6ad6,_0x18915a){var _0x1697d4='';for(var _0x13da4f=0x0;_0x13da4f<_0x18915a[_0x21e8('0x8')][_0x21e8('0xd')];_0x13da4f+=0x1){if(_0x18915a[_0x21e8('0x8')][_0x13da4f]['address']!==_0x2b6ad6){if(!_[_0x21e8('0x11')](_0x1697d4)){_0x1697d4+=',';}_0x1697d4+=_0x18915a['value'][_0x13da4f]['name']||_0x18915a[_0x21e8('0x8')][_0x13da4f][_0x21e8('0x9')]||'';_0x1697d4+='\x20<';_0x1697d4+=_0x18915a[_0x21e8('0x8')][_0x13da4f][_0x21e8('0x9')]?_0x18915a['value'][_0x13da4f][_0x21e8('0x9')]:_0x21e8('0xa')+random[_0x21e8('0x12')](0x6)+_0x21e8('0xb');_0x1697d4+='>';}}return _0x1697d4;}function parseEmail(_0xa969eb,_0x12a935,_0x3426d1){if(_0x12a935[_0x21e8('0x13')]){var _0x4bcb4c=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x4bcb4c[_0x21e8('0x14')](_0x12a935[_0x21e8('0x13')])){_0x12a935['html']=_0x12a935[_0x21e8('0x13')][_0x21e8('0x15')](_0x4bcb4c,'');}if(_0x12a935[_0x21e8('0x13')][_0x21e8('0x16')](_0x21e8('0x17'))){var _0xfa4021=[];_0x12a935[_0x21e8('0x18')][_0x21e8('0x19')](_0x565c96=>{_0xfa4021[_0x21e8('0x1a')](_0x565c96['filename']);});var _0x232351=/<img.*? _SRC(.*?)[^>]+>/g;var _0x364dad=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x29bc23=_0x12a935['html'][_0x21e8('0x15')](_0x364dad,'_SRC');var _0x537902=_0x29bc23[_0x21e8('0x15')](_0x232351,_0x21e8('0x1b'));for(let _0x4e7b45=0x0;_0x4e7b45<_0xfa4021[_0x21e8('0xd')];_0x4e7b45++){var _0x2312a5=_0x537902[_0x21e8('0x15')]('_IMG',_0x21e8('0x1c')+_0xfa4021[_0x4e7b45]+_0x21e8('0x1d'));_0x537902=_0x2312a5;}_0x12a935[_0x21e8('0x13')]=_0x537902;}_0x3426d1[_0x21e8('0x1e')]=_0x12a935[_0x21e8('0x13')];}else{_0x3426d1[_0x21e8('0x1e')]=_0x12a935[_0x21e8('0x1f')];}if(_0x3426d1[_0x21e8('0x1e')]){_0x3426d1[_0x21e8('0x1e')]=_0x3426d1[_0x21e8('0x1e')][_0x21e8('0x15')](/<a\s+/gi,_0x21e8('0x20'));}if(_0x12a935['to']){_0x3426d1['message'][_0x21e8('0x21')]=getMails(null,_0x12a935['to']);var _0x418d46=getMails(_0xa969eb['email'],_0x12a935['to']);if(!_['isEmpty'](_0x418d46)){_0x3426d1['message']['cc']+=_0x418d46;}}if(_0x12a935['cc']){_0x3426d1[_0x21e8('0x22')]['originCc']=getMails(null,_0x12a935['cc']);var _0x45be6f=getMails(_0xa969eb[_0x21e8('0x6')],_0x12a935['cc']);if(!_[_0x21e8('0x11')](_0x45be6f)){if(!_[_0x21e8('0x11')](_0x3426d1['message']['cc'])){_0x3426d1['message']['cc']+=',';}_0x3426d1[_0x21e8('0x22')]['cc']+=_0x45be6f;}}if(!_['includes'](_0x3426d1[_0x21e8('0x22')][_0x21e8('0x21')],_0xa969eb[_0x21e8('0x6')])&&!_[_0x21e8('0x16')](_0x3426d1['message'][_0x21e8('0x23')],_0xa969eb[_0x21e8('0x6')])){_0x3426d1[_0x21e8('0x22')][_0x21e8('0x24')]=_0xa969eb[_0x21e8('0x6')];}if(_0x12a935['attachments']&&_0x12a935[_0x21e8('0x18')][_0x21e8('0xd')]){_0x3426d1[_0x21e8('0x22')][_0x21e8('0x25')]=_0x12a935[_0x21e8('0x18')][_0x21e8('0xd')];for(var _0x1abde0=0x0,_0x12c410,_0x1b7ae0,_0x2b2d14;_0x1abde0<_0x12a935[_0x21e8('0x18')][_0x21e8('0xd')];_0x1abde0+=0x1){if(_0x12a935[_0x21e8('0x18')][_0x1abde0][_0x21e8('0x26')]===_0x21e8('0x27')){_0x2b2d14=_0x12a935['attachments'][_0x1abde0][_0x21e8('0x28')]||_0x21e8('0x29')+_0x1abde0;_0x12c410=util[_0x21e8('0x2a')](_0x21e8('0x2b'),Date[_0x21e8('0x2c')](),_0x2b2d14);_0x1b7ae0=path[_0x21e8('0xe')](config[_0x21e8('0x2d')],_0x21e8('0x2e'),_0x12c410);fs[_0x21e8('0x2f')](_0x1b7ae0,_0x12a935[_0x21e8('0x18')][_0x1abde0]['content']);_0x3426d1[_0x21e8('0x22')]['attachments'][_0x21e8('0x1a')]({'name':_0x2b2d14,'basename':_0x12c410,'type':_0x12a935[_0x21e8('0x18')][_0x1abde0]['contentType'],'filepath':_0x1b7ae0});}}}if(_0x12a935[_0x21e8('0x30')]&&_0x12a935[_0x21e8('0x30')][_0x21e8('0xd')]>0x0){var _0x462872=[_0x21e8('0x31'),'X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply'];for(var _0x40102b=0x0;_0x40102b<_0x12a935[_0x21e8('0x30')][_0x21e8('0xd')];_0x40102b++){var _0x2dd840=_[_0x21e8('0x32')](_0x462872,_0x12a935[_0x21e8('0x30')][_0x40102b][_0x21e8('0x33')]);if(_0x2dd840>=0x0){_0x3426d1['isAutoreply']=!![];}}}return _0x3426d1;}exports[_0x21e8('0x34')]=function(_0x5af28d,_0x44094d,_0x1671f2){var _0x1aee55={'from':getAddress(_0x44094d[_0x21e8('0x35')]),'firstName':getFirstName(_0x44094d[_0x21e8('0x35')]),'lastName':getLastName(_0x44094d[_0x21e8('0x35')]),'mapKey':_0x21e8('0x6'),'message':{'from':getMails(_0x5af28d[_0x21e8('0x6')],_0x44094d[_0x21e8('0x35')]),'to':_0x5af28d[_0x21e8('0x6')],'cc':'','subject':_0x44094d['subject']||'','messageId':_0x44094d[_0x21e8('0x36')],'inReplyTo':_0x44094d[_0x21e8('0x37')],'sentAt':moment(_0x44094d[_0x21e8('0x38')])['format'](_0x21e8('0x39')),'attach':![],'attachments':[]}};if(!_0x44094d[_0x21e8('0x13')]&&!_0x44094d[_0x21e8('0x1f')]){var _0x5553fc=_['filter'](_0x44094d[_0x21e8('0x18')],{'contentType':'application/ms-tnef'});if(_0x5553fc['length']){logger['info'](util[_0x21e8('0x2a')](_0x21e8('0x3a'),_0x44094d[_0x21e8('0x36')]));tnef[_0x21e8('0x3b')](_[_0x21e8('0x3c')](_0x5553fc)[_0x21e8('0x3d')],function(_0x3063eb,_0x11d622){if(_0x11d622){_0x44094d[_0x21e8('0x13')]=_0x11d622['BodyHTML']||_0x21e8('0x3e');if(_0x11d622[_0x21e8('0x3f')]){for(var _0x298446=0x0;_0x298446<_0x11d622[_0x21e8('0x3f')]['length'];_0x298446++){var _0x11bf53=_0x11d622['Attachments'][_0x298446];_0x1aee55[_0x21e8('0x22')][_0x21e8('0x18')]['push']({'filename':_0x11bf53[_0x21e8('0x40')],'content':Buffer[_0x21e8('0x35')](_0x11bf53[_0x21e8('0x41')])});}}}_0x1671f2(parseEmail(_0x5af28d,_0x44094d,_0x1aee55));});}else{_0x44094d['html']='<p>Empty\x20message</p>';_0x1671f2(parseEmail(_0x5af28d,_0x44094d,_0x1aee55));}}else{_0x1671f2(parseEmail(_0x5af28d,_0x44094d,_0x1aee55));}};exports[_0x21e8('0x42')]=function(_0x366430){switch(_0x366430){case _0x21e8('0x43'):return _0x21e8('0x44');case'yahoo':return'imap.mail.yahoo.com';case'hotmail':return _0x21e8('0x45');case _0x21e8('0x46'):return'outlook.office365.com';}return _0x21e8('0x47');};
\ No newline at end of file
index 04e1d85..4b1115a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x158c=['active','Imap','Smtp','exports','lodash','name','Service','key','SERV'];(function(_0xe2d001,_0x4e9338){var _0x504025=function(_0x9a607b){while(--_0x9a607b){_0xe2d001['push'](_0xe2d001['shift']());}};_0x504025(++_0x4e9338);}(_0x158c,0x67));var _0xc158=function(_0x3ecf9f,_0x2ecd76){_0x3ecf9f=_0x3ecf9f-0x0;var _0x239c38=_0x158c[_0x3ecf9f];return _0x239c38;};'use strict';var _=require(_0xc158('0x0'));function MailAccount(_0x1c3134){this['id']=_0x1c3134['id']||0x0;this[_0xc158('0x1')]=_0x1c3134['name']||_0xc158('0x2');this['key']=_0x1c3134[_0xc158('0x3')]||_0xc158('0x4');this['active']=_0x1c3134[_0xc158('0x5')]||![];this[_0xc158('0x6')]=_0x1c3134['Imap']||[];this[_0xc158('0x7')]=_0x1c3134['Smtp']||[];}module[_0xc158('0x8')]=MailAccount;
\ No newline at end of file
+var _0x6239=['lodash','name','Service','active','Imap','Smtp'];(function(_0x2e9187,_0x3763f6){var _0x1fc3a8=function(_0xb30d96){while(--_0xb30d96){_0x2e9187['push'](_0x2e9187['shift']());}};_0x1fc3a8(++_0x3763f6);}(_0x6239,0xcc));var _0x9623=function(_0xba22f4,_0x4f1626){_0xba22f4=_0xba22f4-0x0;var _0x1d9a19=_0x6239[_0xba22f4];return _0x1d9a19;};'use strict';var _=require(_0x9623('0x0'));function MailAccount(_0x438012){this['id']=_0x438012['id']||0x0;this[_0x9623('0x1')]=_0x438012[_0x9623('0x1')]||_0x9623('0x2');this['key']=_0x438012['key']||'SERV';this[_0x9623('0x3')]=_0x438012[_0x9623('0x3')]||![];this['Imap']=_0x438012[_0x9623('0x4')]||[];this[_0x9623('0x5')]=_0x438012[_0x9623('0x5')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 90a9a49..7c49865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78ce=['lodash','mailAccounts','prototype','mergeFromDatabase','isUndefined'];(function(_0x485224,_0x28aed6){var _0x4c317e=function(_0x2eb775){while(--_0x2eb775){_0x485224['push'](_0x485224['shift']());}};_0x4c317e(++_0x28aed6);}(_0x78ce,0x1c7));var _0xe78c=function(_0x5accad,_0x5791e0){_0x5accad=_0x5accad-0x0;var _0x5768c7=_0x78ce[_0x5accad];return _0x5768c7;};'use strict';var _=require(_0xe78c('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0xe78c('0x1')]={};};function freeIsNotKey(_0x12704a,_0x115860,_0x235cdd){var _0x476791=_['mapKeys'](_0x12704a,function(_0x40001a,_0x63c159){return _0x40001a[_0x235cdd];});for(var _0x21fcea in _0x115860){if(_0x115860['hasOwnProperty'](_0x21fcea)){if(!_0x476791[_0x21fcea]){delete _0x115860[_0x21fcea];}}}}Realtime[_0xe78c('0x2')][_0xe78c('0x3')]=function(_0x33b659,_0x567134){for(var _0x5c9071 in _0x567134){if(_0x33b659['hasOwnProperty'](_0x5c9071)){_0x33b659[_0x5c9071]=_0x567134[_0x5c9071];}}};Realtime[_0xe78c('0x2')]['initMailAccounts']=function(){var _0x31d7fe=this;return function(_0x4ac0c3){if(_0x4ac0c3){freeIsNotKey(_0x4ac0c3,_0x31d7fe[_0xe78c('0x1')],'id');for(var _0x228652=0x0,_0x18cdef={},_0x513603={};_0x228652<_0x4ac0c3['length'];_0x228652+=0x1){_0x18cdef=_0x4ac0c3[_0x228652];if(_[_0xe78c('0x4')](_0x31d7fe[_0xe78c('0x1')][_0x18cdef['id']])){_0x31d7fe['mailAccounts'][_0x18cdef['id']]=new MailAccount(_0x18cdef);}else{_['merge'](_0x31d7fe[_0xe78c('0x1')][_0x18cdef['id']],_0x18cdef);}}}return _0x31d7fe[_0xe78c('0x1')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x4bf4=['exports','lodash','../model/mailAccount','mapKeys','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','mailAccounts','length','isUndefined'];(function(_0x3343f4,_0x343bcf){var _0x48797b=function(_0x421374){while(--_0x421374){_0x3343f4['push'](_0x3343f4['shift']());}};_0x48797b(++_0x343bcf);}(_0x4bf4,0x177));var _0x44bf=function(_0x5bb3d9,_0x1e615b){_0x5bb3d9=_0x5bb3d9-0x0;var _0x38a238=_0x4bf4[_0x5bb3d9];return _0x38a238;};'use strict';var _=require(_0x44bf('0x0'));var MailAccount=require(_0x44bf('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x2efa3d,_0xc36bb5,_0x521df2){var _0x33a366=_[_0x44bf('0x2')](_0x2efa3d,function(_0x5ed0c3,_0x234c80){return _0x5ed0c3[_0x521df2];});for(var _0x2a2440 in _0xc36bb5){if(_0xc36bb5['hasOwnProperty'](_0x2a2440)){if(!_0x33a366[_0x2a2440]){delete _0xc36bb5[_0x2a2440];}}}}Realtime[_0x44bf('0x3')][_0x44bf('0x4')]=function(_0x40f806,_0x5384a4){for(var _0x291c25 in _0x5384a4){if(_0x40f806[_0x44bf('0x5')](_0x291c25)){_0x40f806[_0x291c25]=_0x5384a4[_0x291c25];}}};Realtime[_0x44bf('0x3')][_0x44bf('0x6')]=function(){var _0x5c4d70=this;return function(_0x122cf6){if(_0x122cf6){freeIsNotKey(_0x122cf6,_0x5c4d70[_0x44bf('0x7')],'id');for(var _0x4bf291=0x0,_0x13ed44={},_0x445856={};_0x4bf291<_0x122cf6[_0x44bf('0x8')];_0x4bf291+=0x1){_0x13ed44=_0x122cf6[_0x4bf291];if(_[_0x44bf('0x9')](_0x5c4d70['mailAccounts'][_0x13ed44['id']])){_0x5c4d70[_0x44bf('0x7')][_0x13ed44['id']]=new MailAccount(_0x13ed44);}else{_['merge'](_0x5c4d70['mailAccounts'][_0x13ed44['id']],_0x13ed44);}}}return _0x5c4d70[_0x44bf('0x7')];};};module[_0x44bf('0xa')]=Realtime;
\ No newline at end of file
index 797b577..5beae30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['Request','email','active','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','notify','NotifyMailAccount','../client'];(function(_0x4d89e7,_0x8f6e0a){var _0x9926c0=function(_0x2d2e74){while(--_0x2d2e74){_0x4d89e7['push'](_0x4d89e7['shift']());}};_0x9926c0(++_0x8f6e0a);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x17e653,_0x228e4d){_0x17e653=_0x17e653-0x0;var _0x1c14fe=_0xbd0a[_0x17e653];return _0x1c14fe;};'use strict';var client=require(_0xabd0('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xabd0('0x1')]('GetMailAccount',{'options':{'attributes':['id','name','service',_0xabd0('0x2'),_0xabd0('0x3'),_0xabd0('0x4'),_0xabd0('0x5'),_0xabd0('0x6')],'raw':![],'include':[{'model':_0xabd0('0x7'),'as':_0xabd0('0x8')},{'model':_0xabd0('0x9'),'as':_0xabd0('0xa')}]},'log':'getMailAccount'});};};exports[_0xabd0('0xb')]=function(_0xb60e77,_0x2b50c1){return client['Request'](_0xabd0('0xc'),{'account':{'id':_0xb60e77},'body':_0x2b50c1,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0x023d=['TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','getMailAccounts','GetMailAccount','name','active','ListId'];(function(_0x560876,_0x253c7f){var _0xc10a7d=function(_0x3763df){while(--_0x3763df){_0x560876['push'](_0x560876['shift']());}};_0xc10a7d(++_0x253c7f);}(_0x023d,0x67));var _0xd023=function(_0x331294,_0x288cf0){_0x331294=_0x331294-0x0;var _0x234192=_0x023d[_0x331294];return _0x234192;};'use strict';var client=require('../client');exports[_0xd023('0x0')]=function(){return function(){return client['Request'](_0xd023('0x1'),{'options':{'attributes':['id',_0xd023('0x2'),'service','email',_0xd023('0x3'),'key',_0xd023('0x4'),_0xd023('0x5')],'raw':![],'include':[{'model':_0xd023('0x6'),'as':_0xd023('0x7')},{'model':_0xd023('0x8'),'as':_0xd023('0x9')}]},'log':_0xd023('0xa')});};};exports['notify']=function(_0x5c529a,_0x1563ce){return client['Request'](_0xd023('0xb'),{'account':{'id':_0x5c529a},'body':_0x1563ce,'log':_0xd023('0xb')});};
\ No newline at end of file
index 91907f6..c683571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d5=['getSettings','Request','ShowSetting','GetSettings'];(function(_0x1efb78,_0x58772b){var _0x5e5682=function(_0x4beaac){while(--_0x4beaac){_0x1efb78['push'](_0x1efb78['shift']());}};_0x5e5682(++_0x58772b);}(_0x55d5,0xec));var _0x555d=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x55d5[_0x346737];return _0x1ade2e;};'use strict';var client=require('../client');exports[_0x555d('0x0')]=function(){return client[_0x555d('0x1')](_0x555d('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x555d('0x3')});};
\ No newline at end of file
+var _0x644a=['loginMailFrequency','GetSettings','getSettings','Request'];(function(_0x3595f8,_0xd26e21){var _0x5ada65=function(_0x126350){while(--_0x126350){_0x3595f8['push'](_0x3595f8['shift']());}};_0x5ada65(++_0xd26e21);}(_0x644a,0x10a));var _0xa644=function(_0xe206ed,_0x179821){_0xe206ed=_0xe206ed-0x0;var _0x4423ab=_0x644a[_0xe206ed];return _0x4423ab;};'use strict';var client=require('../client');exports[_0xa644('0x0')]=function(){return client[_0xa644('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xa644('0x2')]},'log':_0xa644('0x3')});};
\ No newline at end of file
index 820a722..99b5743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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 c9cc0ac..b6efba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4874=['express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http'];(function(_0x2a2485,_0x5be636){var _0x527584=function(_0x377c0a){while(--_0x377c0a){_0x2a2485['push'](_0x2a2485['shift']());}};_0x527584(++_0x5be636);}(_0x4874,0x7b));var _0x4487=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x4874[_0x1b2ff7];return _0x31656a;};'use strict';var _=require(_0x4487('0x0'));var http=require(_0x4487('0x1'));var express=require(_0x4487('0x2'));var sticky=require(_0x4487('0x3'));var Redis=require(_0x4487('0x4'));var config=require(_0x4487('0x5'));var app=express();var server=http[_0x4487('0x6')](app);server[_0x4487('0x7')]=0xdbba0;if(sticky[_0x4487('0x8')](server,config[_0x4487('0x9')])){var socketio=require(_0x4487('0xa'))(server,{'transports':[_0x4487('0xb'),'polling']});config[_0x4487('0xc')]=_[_0x4487('0xd')](config['redis'],{'host':_0x4487('0xe'),'port':0x18eb});socketio[_0x4487('0xf')](require(_0x4487('0x10'))({'pubClient':new Redis(config[_0x4487('0xc')]),'subClient':new Redis(config[_0x4487('0xc')])}));require(_0x4487('0x11'))[_0x4487('0x12')]();require(_0x4487('0x13'))[_0x4487('0x12')](socketio);require('../../config/express')[_0x4487('0x12')](app);require('../../routes')['default'](app);}else{server[_0x4487('0x14')](_0x4487('0x15'),function(){console[_0x4487('0x16')](_0x4487('0x17'),config[_0x4487('0x9')]);});}exports=module[_0x4487('0x18')]=app;
\ No newline at end of file
+var _0x0b27=['sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','redis','adapter','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','exports','lodash','express'];(function(_0x355195,_0x263099){var _0x2b68b6=function(_0x48d652){while(--_0x48d652){_0x355195['push'](_0x355195['shift']());}};_0x2b68b6(++_0x263099);}(_0x0b27,0x98));var _0x70b2=function(_0x502d15,_0x317242){_0x502d15=_0x502d15-0x0;var _0x46aa27=_0x0b27[_0x502d15];return _0x46aa27;};'use strict';var _=require(_0x70b2('0x0'));var http=require('http');var express=require(_0x70b2('0x1'));var sticky=require(_0x70b2('0x2'));var Redis=require(_0x70b2('0x3'));var config=require(_0x70b2('0x4'));var app=express();var server=http[_0x70b2('0x5')](app);server[_0x70b2('0x6')]=0xdbba0;if(sticky[_0x70b2('0x7')](server,config[_0x70b2('0x8')])){var socketio=require(_0x70b2('0x9'))(server,{'transports':[_0x70b2('0xa'),'polling']});config[_0x70b2('0xb')]=_['defaults'](config[_0x70b2('0xb')],{'host':'localhost','port':0x18eb});socketio[_0x70b2('0xc')](require('socket.io-redis')({'pubClient':new Redis(config[_0x70b2('0xb')]),'subClient':new Redis(config[_0x70b2('0xb')])}));require(_0x70b2('0xd'))[_0x70b2('0xe')]();require(_0x70b2('0xf'))['default'](socketio);require(_0x70b2('0x10'))[_0x70b2('0xe')](app);require(_0x70b2('0x11'))['default'](app);}else{server[_0x70b2('0x12')](_0x70b2('0x13'),function(){console[_0x70b2('0x14')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x70b2('0x8')]);});}exports=module[_0x70b2('0x15')]=app;
\ No newline at end of file
index 36672cd..cba9910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc64=['error','rpc','message','result','catch','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','request','debug'];(function(_0x2bf4a3,_0x42b8b1){var _0x57f376=function(_0x4401d3){while(--_0x4401d3){_0x2bf4a3['push'](_0x2bf4a3['shift']());}};_0x57f376(++_0x42b8b1);}(_0xdc64,0x1e1));var _0x4dc6=function(_0x3a705b,_0x41de4b){_0x3a705b=_0x3a705b-0x0;var _0x2dc335=_0xdc64[_0x3a705b];return _0x2dc335;};'use strict';var jayson=require(_0x4dc6('0x0'));var BPromise=require(_0x4dc6('0x1'));var logger=require(_0x4dc6('0x2'))(_0x4dc6('0x3'));var client=jayson[_0x4dc6('0x4')][_0x4dc6('0x5')]({'port':0x2329});client[_0x4dc6('0x6')]=function(_0x4e8a04,_0x4cd918){return new BPromise(function(_0x587b2d,_0x15e39f){return client[_0x4dc6('0x7')](_0x4e8a04,_0x4cd918)['then'](function(_0x478177){logger[_0x4dc6('0x8')]('rpc',_0x4dc6('0x3'),_0x4e8a04,_0x4cd918,_0x478177);if(_0x478177[_0x4dc6('0x9')]){logger['error'](_0x4dc6('0xa'),_0x4dc6('0x3'),_0x4e8a04,_0x478177['error']['message'],_0x4cd918);return _0x15e39f(_0x478177[_0x4dc6('0x9')][_0x4dc6('0xb')]);}else{return _0x587b2d(_0x478177[_0x4dc6('0xc')]);}})[_0x4dc6('0xd')](function(_0x135f5c){logger[_0x4dc6('0x9')](_0x4dc6('0xa'),_0x4dc6('0x3'),_0x4e8a04,_0x135f5c,_0x4cd918);return _0x15e39f(_0x135f5c);});});};module['exports']=client;
\ No newline at end of file
+var _0x4faa=['jayson/promise','bluebird','client','http','Request','request','then','routing','error','rpc','message','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4faa,0x1c8));var _0xa4fa=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x4faa[_0x1035c1];return _0x308d67;};'use strict';var jayson=require(_0xa4fa('0x0'));var BPromise=require(_0xa4fa('0x1'));var logger=require('../../config/logger')('routing');var client=jayson[_0xa4fa('0x2')][_0xa4fa('0x3')]({'port':0x2329});client[_0xa4fa('0x4')]=function(_0x2e140b,_0x1169f6){return new BPromise(function(_0x383085,_0x307e40){return client[_0xa4fa('0x5')](_0x2e140b,_0x1169f6)[_0xa4fa('0x6')](function(_0x57d417){logger['debug']('rpc',_0xa4fa('0x7'),_0x2e140b,_0x1169f6,_0x57d417);if(_0x57d417[_0xa4fa('0x8')]){logger[_0xa4fa('0x8')](_0xa4fa('0x9'),_0xa4fa('0x7'),_0x2e140b,_0x57d417['error'][_0xa4fa('0xa')],_0x1169f6);return _0x307e40(_0x57d417[_0xa4fa('0x8')][_0xa4fa('0xa')]);}else{return _0x383085(_0x57d417['result']);}})['catch'](function(_0x579d32){logger[_0xa4fa('0x8')](_0xa4fa('0x9'),_0xa4fa('0x7'),_0x2e140b,_0x579d32,_0x1169f6);return _0x307e40(_0x579d32);});});};module[_0xa4fa('0xb')]=client;
\ No newline at end of file
index fcfcd4d..ec1070f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f9=['initWhatsappQueues','catch','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0xf6f9,0x1b7));var _0x9f6f=function(_0x178e0b,_0x38dcd0){_0x178e0b=_0x178e0b-0x0;var _0x46eafc=_0xf6f9[_0x178e0b];return _0x46eafc;};'use strict';var BPromise=require('bluebird');var server=require(_0x9f6f('0x0'));var Realtime=require('./realtime');var user=require(_0x9f6f('0x1'));var interval=require(_0x9f6f('0x2'));var openchannelQueue=require(_0x9f6f('0x3'));var chatQueue=require(_0x9f6f('0x4'));var smsQueue=require(_0x9f6f('0x5'));var mailQueue=require(_0x9f6f('0x6'));var faxQueue=require(_0x9f6f('0x7'));var whatsappQueue=require(_0x9f6f('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x9f6f('0x9')](user[_0x9f6f('0xa')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0xb')]())['then'](interval[_0x9f6f('0xc')]())['then'](realtime[_0x9f6f('0xd')]())[_0x9f6f('0x9')](openchannelQueue[_0x9f6f('0xe')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0xf')]())[_0x9f6f('0x9')](chatQueue['getChatQueues']())['then'](realtime['initChatQueues']())[_0x9f6f('0x9')](smsQueue['getSmsQueues']())[_0x9f6f('0x9')](realtime[_0x9f6f('0x10')]())[_0x9f6f('0x9')](mailQueue[_0x9f6f('0x11')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0x12')]())[_0x9f6f('0x9')](faxQueue['getFaxQueues']())[_0x9f6f('0x9')](realtime[_0x9f6f('0x13')]())[_0x9f6f('0x9')](whatsappQueue[_0x9f6f('0x14')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0x15')]())['then'](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x9f6f('0x9')](function(_0x169d1e){return initRealtime();})[_0x9f6f('0x9')](function(_0x2a38f1){return setInterval(initRealtime,0x1388);})[_0x9f6f('0x16')](function(_0x4fd00f){console['log'](_0x4fd00f);});}main();
\ No newline at end of file
+var _0xa848=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','log','bluebird','./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','initAgents','initIntervals'];(function(_0x4337b5,_0x1bf76d){var _0x29786=function(_0x4dcba8){while(--_0x4dcba8){_0x4337b5['push'](_0x4337b5['shift']());}};_0x29786(++_0x1bf76d);}(_0xa848,0x6d));var _0x8a84=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xa848[_0x4b369d];return _0x571a98;};'use strict';var BPromise=require(_0x8a84('0x0'));var server=require('./server');var Realtime=require(_0x8a84('0x1'));var user=require(_0x8a84('0x2'));var interval=require(_0x8a84('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x8a84('0x4'));var smsQueue=require(_0x8a84('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x8a84('0x6'));var whatsappQueue=require(_0x8a84('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x8a84('0x8')](user['getAgents']())[_0x8a84('0x8')](realtime[_0x8a84('0x9')]())[_0x8a84('0x8')](interval['getIntervals']())[_0x8a84('0x8')](realtime[_0x8a84('0xa')]())['then'](openchannelQueue[_0x8a84('0xb')]())[_0x8a84('0x8')](realtime[_0x8a84('0xc')]())[_0x8a84('0x8')](chatQueue[_0x8a84('0xd')]())[_0x8a84('0x8')](realtime['initChatQueues']())[_0x8a84('0x8')](smsQueue[_0x8a84('0xe')]())['then'](realtime[_0x8a84('0xf')]())[_0x8a84('0x8')](mailQueue[_0x8a84('0x10')]())[_0x8a84('0x8')](realtime[_0x8a84('0x11')]())['then'](faxQueue[_0x8a84('0x12')]())[_0x8a84('0x8')](realtime[_0x8a84('0x13')]())[_0x8a84('0x8')](whatsappQueue[_0x8a84('0x14')]())[_0x8a84('0x8')](realtime[_0x8a84('0x15')]())[_0x8a84('0x8')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x8a84('0x8')](function(_0x13ed84){return initRealtime();})[_0x8a84('0x8')](function(_0xb538a4){return setInterval(initRealtime,0x1388);})[_0x8a84('0x16')](function(_0x2b94d7){console[_0x8a84('0x17')](_0x2b94d7);});}main();
\ No newline at end of file
index 16284e2..76b61ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1261,0x144));var _0x1126=function(_0x58c654,_0x56f774){_0x58c654=_0x58c654-0x0;var _0x1b1164=_0x1261[_0x58c654];return _0x1b1164;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+var _0x5fc3=['lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','activeRules','prototype','register','isArray','rules','isObject','sync','orderBy','asc','execute','clone','ruleRef','name','index_','push','call','nextTick','next','isEqual','restart','length','condition','matchPath','noop','findRules','filter','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse'];(function(_0x20ab71,_0xbcffec){var _0x2f5a38=function(_0x201184){while(--_0x201184){_0x20ab71['push'](_0x20ab71['shift']());}};_0x2f5a38(++_0xbcffec);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x5fc3[_0x3e25c1];return _0x52e7f2;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var EventEmitter=require('events')[_0x35fc('0x2')];function RuleEngine(_0x2ac6da,_0x196bc2){this[_0x35fc('0x3')]();if(!_[_0x35fc('0x4')](_0x2ac6da)){this['register'](_0x2ac6da);}if(_0x196bc2){this[_0x35fc('0x5')]=_0x196bc2[_0x35fc('0x5')];}return this;}util[_0x35fc('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x19a0d1){this['rules']=[];this[_0x35fc('0x7')]=[];};RuleEngine[_0x35fc('0x8')][_0x35fc('0x9')]=function(_0x1e5f90){if(Array[_0x35fc('0xa')](_0x1e5f90)){this[_0x35fc('0xb')]=this[_0x35fc('0xb')]['concat'](_0x1e5f90);}else if(_0x1e5f90!==null&&_[_0x35fc('0xc')](_0x1e5f90)){this[_0x35fc('0xb')]['push'](_0x1e5f90);}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')]['sync']=function(){this[_0x35fc('0x7')]=this[_0x35fc('0xb')]['filter'](function(_0x4cbe74){if(_[_0x35fc('0x4')](_0x4cbe74['on'])){_0x4cbe74['on']=!![];}if(_0x4cbe74['on']===!![]){return _0x4cbe74;}});this['activeRules']=_[_0x35fc('0xe')](this[_0x35fc('0x7')],['p'],[_0x35fc('0xf')]);};RuleEngine[_0x35fc('0x8')][_0x35fc('0x10')]=function(_0x5cfe94,_0x59507a){var _0x5eac0f=![];_0x5cfe94['result']=!![];var _0x398b67=_[_0x35fc('0x11')](_0x5cfe94);var _0x53b898=_[_0x35fc('0x11')](_0x5cfe94);var _0x227a49=this[_0x35fc('0x7')];var _0x480851=[];var _0x26ba54=this[_0x35fc('0x5')];(function FnRuleLoop(_0x553677){var _0x41e165={'rules':function(){return _0x227a49;},'rule':function(){return _0x227a49[_0x553677];},'when':function(_0x363e47){if(_0x363e47){var _0x2e513b=_0x227a49[_0x553677]['consequence'];_0x2e513b[_0x35fc('0x12')]=_0x227a49[_0x553677]['id']||_0x227a49[_0x553677][_0x35fc('0x13')]||_0x35fc('0x14')+_0x553677;process['nextTick'](function(){_0x480851[_0x35fc('0x15')](_0x2e513b[_0x35fc('0x12')]);_0x2e513b[_0x35fc('0x16')](_0x398b67,_0x41e165);});}else{process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x5eac0f=!![];return FnRuleLoop(0x0);},'next':function(_0x21f1a9){if(!_0x26ba54&&!_[_0x35fc('0x19')](_0x53b898,_0x398b67)){_0x53b898=_[_0x35fc('0x11')](_0x398b67);process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x1a')]();});}else{process['nextTick'](function(){if(_[_0x35fc('0x4')](_0x21f1a9)){return FnRuleLoop(_0x553677+0x1);}else{return FnRuleLoop(_0x21f1a9);}});}}};if(_0x553677<_0x227a49[_0x35fc('0x1b')]&&_0x5eac0f===![]){var _0x257719=_0x227a49[_0x553677][_0x35fc('0x1c')];_0x257719[_0x35fc('0x16')](_0x398b67,_0x41e165);}else{process['nextTick'](function(){_0x398b67[_0x35fc('0x1d')]=_0x480851;return _0x59507a?_0x59507a(_0x398b67):_[_0x35fc('0x1e')]();});}}(0x0));};RuleEngine['prototype'][_0x35fc('0x1f')]=function(_0x5a93df){if(_[_0x35fc('0x4')](_0x5a93df)){return this['rules'];}else{var _0x4086e9=_['matches'](_0x5a93df);return _[_0x35fc('0x20')](this[_0x35fc('0xb')],_0x4086e9);}};RuleEngine['prototype']['turn']=function(_0x47774c,_0x58edb6){var _0x274208=_0x47774c==='on'||_0x47774c==='ON'?!![]:![];var _0x1a5d92=this['findRules'](_0x58edb6);for(var _0x26b7cb=0x0,_0x645eac=_0x1a5d92[_0x35fc('0x1b')];_0x26b7cb<_0x645eac;_0x26b7cb+=0x1){_0x1a5d92[_0x26b7cb]['on']=_0x274208;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x21')]=function(_0x11ccdb,_0x451f0c){_0x11ccdb=parseInt(_0x11ccdb,0xa);var _0x54aedc=this[_0x35fc('0x1f')](_0x451f0c);for(var _0x220931=0x0,_0x22af18=_0x54aedc['length'];_0x220931<_0x22af18;_0x220931+=0x1){_0x54aedc[_0x220931][_0x35fc('0x22')]=_0x11ccdb;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x23')]=function(){var _0xd8a4ca=this[_0x35fc('0xb')];if(_0xd8a4ca instanceof Array){_0xd8a4ca=_0xd8a4ca[_0x35fc('0x24')](function(_0x37b435){_0x37b435[_0x35fc('0x1c')]=_0x37b435[_0x35fc('0x1c')]['toString']();_0x37b435['consequence']=_0x37b435[_0x35fc('0x25')]['toString']();return _0x37b435;});}else if(!_[_0x35fc('0x4')](_0xd8a4ca)){_0xd8a4ca[_0x35fc('0x1c')]=_0xd8a4ca[_0x35fc('0x1c')][_0x35fc('0x26')]();_0xd8a4ca[_0x35fc('0x25')]=_0xd8a4ca[_0x35fc('0x25')]['toString']();}return _0xd8a4ca;};RuleEngine[_0x35fc('0x8')][_0x35fc('0x27')]=function(_0x46b9ef){this[_0x35fc('0x3')]();if(_[_0x35fc('0x28')](_0x46b9ef)){_0x46b9ef=JSON[_0x35fc('0x29')](_0x46b9ef);}if(_0x46b9ef instanceof Array){_0x46b9ef=_0x46b9ef['map'](function(_0x2483be){_0x2483be[_0x35fc('0x1c')]=eval('('+_0x2483be[_0x35fc('0x1c')]+')');_0x2483be['consequence']=eval('('+_0x2483be[_0x35fc('0x25')]+')');return _0x2483be;});}else if(_0x46b9ef!==null&&typeof _0x46b9ef=='object'){_0x46b9ef[_0x35fc('0x1c')]=eval('('+_0x46b9ef[_0x35fc('0x1c')]+')');_0x46b9ef[_0x35fc('0x25')]=eval('('+_0x46b9ef[_0x35fc('0x25')]+')');}this['register'](_0x46b9ef);};module['exports']=RuleEngine;
\ No newline at end of file
index f0d8d5f..e6d2d68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x484f=['http','then','error','message','result','catch','SendMail','bluebird','jayson/promise','client'];(function(_0x38c89f,_0x2dcaf0){var _0x3f07ec=function(_0x51a7f8){while(--_0x51a7f8){_0x38c89f['push'](_0x38c89f['shift']());}};_0x3f07ec(++_0x2dcaf0);}(_0x484f,0xbb));var _0xf484=function(_0xd299c3,_0x4ba0f1){_0xd299c3=_0xd299c3-0x0;var _0x376574=_0x484f[_0xd299c3];return _0x376574;};'use strict';var BPromise=require(_0xf484('0x0'));var jayson=require(_0xf484('0x1'));var client=jayson[_0xf484('0x2')][_0xf484('0x3')]({'port':0x232b});function request(_0x59fe6a,_0x9fc399){return new BPromise(function(_0x1f1745,_0x4e71af){return client['request'](_0x59fe6a,_0x9fc399)[_0xf484('0x4')](function(_0x355e00){if(_0x355e00['error']){return _0x4e71af(_0x355e00[_0xf484('0x5')][_0xf484('0x6')]);}else{return _0x1f1745(_0x355e00[_0xf484('0x7')]);}})[_0xf484('0x8')](function(_0x47cae8){return _0x4e71af(_0x47cae8);});});}exports['sendMailMessage']=function(_0x582d14,_0x5b7ca9){return request(_0xf484('0x9'),{'account':_0x582d14,'message':_0x5b7ca9});};
\ No newline at end of file
+var _0xc526=['SendMail','bluebird','jayson/promise','client','then','error','message','result','catch','sendMailMessage'];(function(_0x17266e,_0x5d273d){var _0x8eeaf4=function(_0xda6721){while(--_0xda6721){_0x17266e['push'](_0x17266e['shift']());}};_0x8eeaf4(++_0x5d273d);}(_0xc526,0x105));var _0x6c52=function(_0x346730,_0x161882){_0x346730=_0x346730-0x0;var _0x31c7d2=_0xc526[_0x346730];return _0x31c7d2;};'use strict';var BPromise=require(_0x6c52('0x0'));var jayson=require(_0x6c52('0x1'));var client=jayson[_0x6c52('0x2')]['http']({'port':0x232b});function request(_0x154907,_0xab063c){return new BPromise(function(_0x135405,_0x598d02){return client['request'](_0x154907,_0xab063c)[_0x6c52('0x3')](function(_0x17a961){if(_0x17a961[_0x6c52('0x4')]){return _0x598d02(_0x17a961[_0x6c52('0x4')][_0x6c52('0x5')]);}else{return _0x135405(_0x17a961[_0x6c52('0x6')]);}})[_0x6c52('0x7')](function(_0x517699){return _0x598d02(_0x517699);});});}exports[_0x6c52('0x8')]=function(_0x1b613b,_0x5d11eb){return request(_0x6c52('0x9'),{'account':_0x1b613b,'message':_0x5d11eb});};
\ No newline at end of file
index d92d9f3..48e4cf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2779=['length','Status','toNumber','format','smsPause','chatCapacity','faxStatus','smsStatus','openchannelCurrentCapacity','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','busyQueue','updateRealtime','Capacity','CurrentCapacity','maxcapacity','working','idle','prototype','mail','chat','openchannel','fax','sms','whatsapp'];(function(_0x1c3bef,_0x328de4){var _0x4693eb=function(_0x2c94e4){while(--_0x2c94e4){_0x1c3bef['push'](_0x1c3bef['shift']());}};_0x4693eb(++_0x328de4);}(_0x2779,0x143));var _0x9277=function(_0x2e6a57,_0x35a300){_0x2e6a57=_0x2e6a57-0x0;var _0x5539e6=_0x2779[_0x2e6a57];return _0x5539e6;};'use strict';var _=require(_0x9277('0x0'));var moment=require(_0x9277('0x1'));var md5=require(_0x9277('0x2'));var Redis=require(_0x9277('0x3'));var config=require(_0x9277('0x4'));config[_0x9277('0x5')]=_[_0x9277('0x6')](config[_0x9277('0x5')],{'host':_0x9277('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9277('0x5')]));function Agent(_0x24c860){this['id']=_0x24c860['id']||0x0;this[_0x9277('0x8')]=_0x24c860[_0x9277('0x8')]||'';this[_0x9277('0x9')]=_0x24c860[_0x9277('0x9')]||!![];this[_0x9277('0xa')]=_0x24c860[_0x9277('0xa')]||![];this['chatPause']=_0x24c860[_0x9277('0xb')]||![];this[_0x9277('0xc')]=_0x24c860['mailPause']||![];this[_0x9277('0xd')]=_0x24c860[_0x9277('0xd')]||![];this['smsPause']=_0x24c860['smsPause']||![];this[_0x9277('0xe')]=_0x24c860[_0x9277('0xe')]||![];this[_0x9277('0xf')]=_0x9277('0x10');this[_0x9277('0x11')]=0x0;this['chatCapacity']=_0x24c860['chatCapacity']||0x0;this[_0x9277('0x12')]=0x0;this[_0x9277('0x13')]=_0x9277('0x10');this[_0x9277('0x14')]=0x0;this[_0x9277('0x15')]=_0x24c860[_0x9277('0x15')]||0x0;this[_0x9277('0x16')]=0x0;this['faxStatus']=_0x9277('0x10');this[_0x9277('0x17')]=0x0;this[_0x9277('0x18')]=_0x24c860['faxCapacity']||0x0;this[_0x9277('0x19')]=0x0;this['smsStatus']=_0x9277('0x10');this[_0x9277('0x1a')]=0x0;this['smsCapacity']=_0x24c860[_0x9277('0x1b')]||0x0;this[_0x9277('0x1c')]=0x0;this['whatsappStatus']=_0x9277('0x10');this[_0x9277('0x1d')]=0x0;this[_0x9277('0x1e')]=_0x24c860['whatsappCapacity']||0x0;this[_0x9277('0x1f')]=0x0;this[_0x9277('0x20')]=_0x9277('0x10');this[_0x9277('0x21')]=0x0;this[_0x9277('0x22')]=_0x24c860[_0x9277('0x22')]||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this[_0x9277('0x23')]=undefined;this[_0x9277('0x2')]='';this[_0x9277('0x24')]();}Agent['prototype']['getChannelStatus']=function(_0x1cf31f){if(this[_0x1cf31f+'CurrentCapacity']>0x0){if(this[_0x1cf31f+_0x9277('0x25')]>0x0&&this[_0x1cf31f+_0x9277('0x26')]>=this[_0x1cf31f+_0x9277('0x25')]){return _0x9277('0x27');}else{return _0x9277('0x28');}}else{return _0x9277('0x29');}};Agent[_0x9277('0x2a')][_0x9277('0x24')]=function(){var _0x50a296=[_0x9277('0x2b'),_0x9277('0x2c'),_0x9277('0x2d'),_0x9277('0x2e'),_0x9277('0x2f'),_0x9277('0x30')];for(var _0x17b5cb=0x0;_0x17b5cb<_0x50a296[_0x9277('0x31')];_0x17b5cb+=0x1){var _0x2df781=this['getChannelStatus'](_0x50a296[_0x17b5cb]);if(this[_0x50a296[_0x17b5cb]+_0x9277('0x32')]!==_0x2df781){this[_0x50a296[_0x17b5cb]+'StatusTime']=_[_0x9277('0x33')](moment()[_0x9277('0x34')]('x'));}this[_0x50a296[_0x17b5cb]+_0x9277('0x32')]=_0x2df781;}var _0xb38e21={'id':this['id'],'name':this['name'],'online':this[_0x9277('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0x9277('0xb')],'mailPause':this[_0x9277('0xc')],'smsPause':this[_0x9277('0x35')],'faxPause':this[_0x9277('0xd')],'openchannelPause':this[_0x9277('0xe')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x9277('0x11')],'chatCapacity':this[_0x9277('0x36')],'chatCurrentCapacity':this[_0x9277('0x12')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x9277('0x14')],'mailCapacity':this[_0x9277('0x15')],'mailCurrentCapacity':this[_0x9277('0x16')],'faxStatus':this[_0x9277('0x37')],'faxStatusTime':this[_0x9277('0x17')],'faxCapacity':this[_0x9277('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x9277('0x38')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x9277('0x1c')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x9277('0x1d')],'whatsappCapacity':this[_0x9277('0x1e')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x9277('0x20')],'openchannelStatusTime':this[_0x9277('0x21')],'openchannelCapacity':this[_0x9277('0x22')],'openchannelCurrentCapacity':this[_0x9277('0x39')],'busy':this['busy'],'busyQueue':this[_0x9277('0x23')]};var _0x2e6a91=md5(JSON[_0x9277('0x3a')](_0xb38e21));if(this[_0x9277('0x2')]!==_0x2e6a91){this['md5']=_0x2e6a91;io[_0x9277('0x3b')](_0x9277('0x3c'),_0xb38e21);}};module[_0x9277('0x3d')]=Agent;
\ No newline at end of file
+var _0xc953=['StatusTime','toNumber','format','chatStatusTime','smsStatusTime','openchannelStatusTime','stringify','emit','user:save','exports','lodash','moment','md5','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','Capacity','CurrentCapacity','maxcapacity','idle','prototype','mail','chat','openchannel','sms','getChannelStatus','Status'];(function(_0x8ae98b,_0x155f88){var _0xc30bd4=function(_0x5ca462){while(--_0x5ca462){_0x8ae98b['push'](_0x8ae98b['shift']());}};_0xc30bd4(++_0x155f88);}(_0xc953,0x84));var _0x3c95=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xc953[_0x2576d7];return _0x16a08c;};'use strict';var _=require(_0x3c95('0x0'));var moment=require(_0x3c95('0x1'));var md5=require(_0x3c95('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x3c95('0x3')]=_[_0x3c95('0x4')](config[_0x3c95('0x3')],{'host':_0x3c95('0x5'),'port':0x18eb});var io=require(_0x3c95('0x6'))(new Redis(config[_0x3c95('0x3')]));function Agent(_0x37449a){this['id']=_0x37449a['id']||0x0;this[_0x3c95('0x7')]=_0x37449a['name']||'';this['online']=_0x37449a[_0x3c95('0x8')]||!![];this[_0x3c95('0x9')]=_0x37449a[_0x3c95('0x9')]||![];this[_0x3c95('0xa')]=_0x37449a[_0x3c95('0xa')]||![];this[_0x3c95('0xb')]=_0x37449a[_0x3c95('0xb')]||![];this['faxPause']=_0x37449a[_0x3c95('0xc')]||![];this[_0x3c95('0xd')]=_0x37449a[_0x3c95('0xd')]||![];this[_0x3c95('0xe')]=_0x37449a[_0x3c95('0xe')]||![];this[_0x3c95('0xf')]=_0x3c95('0x10');this['chatStatusTime']=0x0;this[_0x3c95('0x11')]=_0x37449a['chatCapacity']||0x0;this[_0x3c95('0x12')]=0x0;this[_0x3c95('0x13')]=_0x3c95('0x10');this[_0x3c95('0x14')]=0x0;this['mailCapacity']=_0x37449a[_0x3c95('0x15')]||0x0;this[_0x3c95('0x16')]=0x0;this[_0x3c95('0x17')]=_0x3c95('0x10');this[_0x3c95('0x18')]=0x0;this['faxCapacity']=_0x37449a[_0x3c95('0x19')]||0x0;this[_0x3c95('0x1a')]=0x0;this[_0x3c95('0x1b')]=_0x3c95('0x10');this['smsStatusTime']=0x0;this[_0x3c95('0x1c')]=_0x37449a[_0x3c95('0x1c')]||0x0;this[_0x3c95('0x1d')]=0x0;this[_0x3c95('0x1e')]='unknown';this[_0x3c95('0x1f')]=0x0;this[_0x3c95('0x20')]=_0x37449a[_0x3c95('0x20')]||0x0;this[_0x3c95('0x21')]=0x0;this[_0x3c95('0x22')]='unknown';this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x37449a[_0x3c95('0x23')]||0x0;this[_0x3c95('0x24')]=0x0;this[_0x3c95('0x25')]=![];this[_0x3c95('0x26')]=undefined;this[_0x3c95('0x2')]='';this[_0x3c95('0x27')]();}Agent['prototype']['getChannelStatus']=function(_0x4de648){if(this[_0x4de648+'CurrentCapacity']>0x0){if(this[_0x4de648+_0x3c95('0x28')]>0x0&&this[_0x4de648+_0x3c95('0x29')]>=this[_0x4de648+'Capacity']){return _0x3c95('0x2a');}else{return'working';}}else{return _0x3c95('0x2b');}};Agent[_0x3c95('0x2c')][_0x3c95('0x27')]=function(){var _0x36ff59=[_0x3c95('0x2d'),_0x3c95('0x2e'),_0x3c95('0x2f'),'fax',_0x3c95('0x30'),'whatsapp'];for(var _0x1798eb=0x0;_0x1798eb<_0x36ff59['length'];_0x1798eb+=0x1){var _0x6c4c6c=this[_0x3c95('0x31')](_0x36ff59[_0x1798eb]);if(this[_0x36ff59[_0x1798eb]+_0x3c95('0x32')]!==_0x6c4c6c){this[_0x36ff59[_0x1798eb]+_0x3c95('0x33')]=_[_0x3c95('0x34')](moment()[_0x3c95('0x35')]('x'));}this[_0x36ff59[_0x1798eb]+_0x3c95('0x32')]=_0x6c4c6c;}var _0x5329be={'id':this['id'],'name':this[_0x3c95('0x7')],'online':this['online'],'voicePause':this[_0x3c95('0x9')],'chatPause':this['chatPause'],'mailPause':this[_0x3c95('0xb')],'smsPause':this[_0x3c95('0xd')],'faxPause':this['faxPause'],'openchannelPause':this[_0x3c95('0xe')],'chatStatus':this[_0x3c95('0xf')],'chatStatusTime':this[_0x3c95('0x36')],'chatCapacity':this[_0x3c95('0x11')],'chatCurrentCapacity':this[_0x3c95('0x12')],'mailStatus':this[_0x3c95('0x13')],'mailStatusTime':this[_0x3c95('0x14')],'mailCapacity':this[_0x3c95('0x15')],'mailCurrentCapacity':this[_0x3c95('0x16')],'faxStatus':this[_0x3c95('0x17')],'faxStatusTime':this[_0x3c95('0x18')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x3c95('0x37')],'smsCapacity':this[_0x3c95('0x1c')],'smsCurrentCapacity':this[_0x3c95('0x1d')],'whatsappStatus':this[_0x3c95('0x1e')],'whatsappStatusTime':this[_0x3c95('0x1f')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x3c95('0x21')],'openchannelStatus':this[_0x3c95('0x22')],'openchannelStatusTime':this[_0x3c95('0x38')],'openchannelCapacity':this[_0x3c95('0x23')],'openchannelCurrentCapacity':this[_0x3c95('0x24')],'busy':this[_0x3c95('0x25')],'busyQueue':this['busyQueue']};var _0x5ae475=md5(JSON[_0x3c95('0x39')](_0x5329be));if(this[_0x3c95('0x2')]!==_0x5ae475){this['md5']=_0x5ae475;io[_0x3c95('0x3a')](_0x3c95('0x3b'),_0x5329be);}};module[_0x3c95('0x3c')]=Agent;
\ No newline at end of file
index bff44c4..92e4814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc989=['waiting','md5','updateRouting','prototype','_rr','updateRealtime','loggedIn','paused','online','chatPause','available','stringify','format','chat:queue:%s','chat_queue:save','exports','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId'];(function(_0x14b39e,_0xd46d1f){var _0x32ef40=function(_0x6efff7){while(--_0x6efff7){_0x14b39e['push'](_0x14b39e['shift']());}};_0x32ef40(++_0xd46d1f);}(_0xc989,0x1c3));var _0x9c98=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc989[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x9c98('0x0'));var Redis=require(_0x9c98('0x1'));var config=require(_0x9c98('0x2'));config[_0x9c98('0x3')]=_[_0x9c98('0x4')](config[_0x9c98('0x3')],{'host':_0x9c98('0x5'),'port':0x18eb});var io=require(_0x9c98('0x6'))(new Redis(config[_0x9c98('0x3')]));function ChatQueue(_0x4ecfdc){this['id']=_0x4ecfdc['id']||0x0;this[_0x9c98('0x7')]=_0x4ecfdc[_0x9c98('0x7')]||'';this[_0x9c98('0x8')]=_0x4ecfdc[_0x9c98('0x8')]||0xa;this[_0x9c98('0x9')]=_0x4ecfdc['strategy']||_0x9c98('0xa');this[_0x9c98('0xb')]=_0x4ecfdc[_0x9c98('0xb')];this[_0x9c98('0xc')]={};this[_0x9c98('0xd')]=0x0;this[_0x9c98('0xe')]='';this[_0x9c98('0xf')]();this['updateRealtime']();}ChatQueue[_0x9c98('0x10')][_0x9c98('0xf')]=function(){var _0x38ff06=this[_0x9c98('0xc')][_0x9c98('0x11')];this[_0x9c98('0xc')]=_['map'](this['Agents'],'id');this['mapAgentsId'][_0x9c98('0x11')]=_0x38ff06;};ChatQueue[_0x9c98('0x10')][_0x9c98('0x12')]=function(){this[_0x9c98('0x13')]=0x0;this[_0x9c98('0x14')]=0x0;for(var _0x22eb73=0x0;_0x22eb73<this['Agents']['length'];_0x22eb73+=0x1){if(this[_0x9c98('0xb')][_0x22eb73][_0x9c98('0x15')]){this[_0x9c98('0x13')]+=0x1;}if(this[_0x9c98('0xb')][_0x22eb73][_0x9c98('0x16')]){this[_0x9c98('0x14')]+=0x1;}}this[_0x9c98('0x17')]=this[_0x9c98('0x13')]-this[_0x9c98('0x14')];this[_0x9c98('0x17')]=this[_0x9c98('0x17')]>=0x0?this[_0x9c98('0x17')]:0x0;var _0x6ae776={'id':this['id'],'available':this[_0x9c98('0x17')],'loggedIn':this[_0x9c98('0x13')],'name':this[_0x9c98('0x7')],'paused':this[_0x9c98('0x14')],'waiting':this[_0x9c98('0xd')]};var _0x499519=md5(JSON[_0x9c98('0x18')](_0x6ae776));if(this[_0x9c98('0xe')]!==_0x499519){this['md5']=_0x499519;io['to'](util[_0x9c98('0x19')](_0x9c98('0x1a'),_0x6ae776[_0x9c98('0x7')]))['emit'](_0x9c98('0x1b'),_0x6ae776);}};module[_0x9c98('0x1c')]=ChatQueue;
\ No newline at end of file
+var _0x9eb4=['name','strategy','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','paused','online','chatPause','available','stringify','chat:queue:%s','chat_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','socket.io-emitter'];(function(_0x5944af,_0x14d15d){var _0x83f465=function(_0x3cece0){while(--_0x3cece0){_0x5944af['push'](_0x5944af['shift']());}};_0x83f465(++_0x14d15d);}(_0x9eb4,0x14b));var _0x49eb=function(_0x46a59e,_0x4bf9ff){_0x46a59e=_0x46a59e-0x0;var _0x35aae0=_0x9eb4[_0x46a59e];return _0x35aae0;};'use strict';var _=require(_0x49eb('0x0'));var md5=require(_0x49eb('0x1'));var util=require(_0x49eb('0x2'));var Redis=require('ioredis');var config=require(_0x49eb('0x3'));config[_0x49eb('0x4')]=_[_0x49eb('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49eb('0x6'))(new Redis(config[_0x49eb('0x4')]));function ChatQueue(_0x1ff72a){this['id']=_0x1ff72a['id']||0x0;this[_0x49eb('0x7')]=_0x1ff72a['name']||'';this['timeout']=_0x1ff72a['timeout']||0xa;this[_0x49eb('0x8')]=_0x1ff72a[_0x49eb('0x8')]||'beepall';this[_0x49eb('0x9')]=_0x1ff72a[_0x49eb('0x9')];this[_0x49eb('0xa')]={};this[_0x49eb('0xb')]=0x0;this['md5']='';this['updateRouting']();this[_0x49eb('0xc')]();}ChatQueue[_0x49eb('0xd')][_0x49eb('0xe')]=function(){var _0x1b58f7=this['mapAgentsId'][_0x49eb('0xf')];this['mapAgentsId']=_[_0x49eb('0x10')](this[_0x49eb('0x9')],'id');this[_0x49eb('0xa')][_0x49eb('0xf')]=_0x1b58f7;};ChatQueue[_0x49eb('0xd')][_0x49eb('0xc')]=function(){this[_0x49eb('0x11')]=0x0;this[_0x49eb('0x12')]=0x0;for(var _0x44951f=0x0;_0x44951f<this[_0x49eb('0x9')]['length'];_0x44951f+=0x1){if(this['Agents'][_0x44951f][_0x49eb('0x13')]){this[_0x49eb('0x11')]+=0x1;}if(this[_0x49eb('0x9')][_0x44951f][_0x49eb('0x14')]){this[_0x49eb('0x12')]+=0x1;}}this[_0x49eb('0x15')]=this[_0x49eb('0x11')]-this[_0x49eb('0x12')];this[_0x49eb('0x15')]=this[_0x49eb('0x15')]>=0x0?this['available']:0x0;var _0x2b63f4={'id':this['id'],'available':this[_0x49eb('0x15')],'loggedIn':this[_0x49eb('0x11')],'name':this[_0x49eb('0x7')],'paused':this[_0x49eb('0x12')],'waiting':this[_0x49eb('0xb')]};var _0x47f77a=md5(JSON[_0x49eb('0x16')](_0x2b63f4));if(this['md5']!==_0x47f77a){this[_0x49eb('0x1')]=_0x47f77a;io['to'](util['format'](_0x49eb('0x17'),_0x2b63f4['name']))['emit'](_0x49eb('0x18'),_0x2b63f4);}};module[_0x49eb('0x19')]=ChatQueue;
\ No newline at end of file
index 6c7fadc..71e944d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x166e=['fax_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','paused','length','online','loggedIn','faxPause','available','fax:queue:%s'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x166e,0x1cd));var _0xe166=function(_0xd572e9,_0x2b106b){_0xd572e9=_0xd572e9-0x0;var _0x159551=_0x166e[_0xd572e9];return _0x159551;};'use strict';var _=require(_0xe166('0x0'));var md5=require(_0xe166('0x1'));var util=require(_0xe166('0x2'));var Redis=require(_0xe166('0x3'));var config=require('../../../config/environment');config[_0xe166('0x4')]=_[_0xe166('0x5')](config[_0xe166('0x4')],{'host':_0xe166('0x6'),'port':0x18eb});var io=require(_0xe166('0x7'))(new Redis(config[_0xe166('0x4')]));function FaxQueue(_0x48a8a0){this['id']=_0x48a8a0['id']||0x0;this[_0xe166('0x8')]=_0x48a8a0['name']||'';this[_0xe166('0x9')]=_0x48a8a0['timeout']||0xa;this[_0xe166('0xa')]=_0x48a8a0[_0xe166('0xa')]||'beepall';this[_0xe166('0xb')]=_0x48a8a0[_0xe166('0xb')];this[_0xe166('0xc')]={};this[_0xe166('0xd')]=0x0;this['md5']='';this[_0xe166('0xe')]();this[_0xe166('0xf')]();}FaxQueue[_0xe166('0x10')][_0xe166('0xe')]=function(){var _0x435aae=this['mapAgentsId']['_rr'];this[_0xe166('0xc')]=_[_0xe166('0x11')](this[_0xe166('0xb')],'id');this[_0xe166('0xc')]['_rr']=_0x435aae;};FaxQueue[_0xe166('0x10')][_0xe166('0xf')]=function(){this['loggedIn']=0x0;this[_0xe166('0x12')]=0x0;for(var _0x58c45e=0x0;_0x58c45e<this[_0xe166('0xb')][_0xe166('0x13')];_0x58c45e+=0x1){if(this['Agents'][_0x58c45e][_0xe166('0x14')]){this[_0xe166('0x15')]+=0x1;}if(this[_0xe166('0xb')][_0x58c45e][_0xe166('0x16')]){this['paused']+=0x1;}}this[_0xe166('0x17')]=this[_0xe166('0x15')]-this[_0xe166('0x12')];this[_0xe166('0x17')]=this[_0xe166('0x17')]>=0x0?this[_0xe166('0x17')]:0x0;var _0x1dde1c={'id':this['id'],'available':this[_0xe166('0x17')],'loggedIn':this['loggedIn'],'name':this[_0xe166('0x8')],'paused':this[_0xe166('0x12')],'waiting':this[_0xe166('0xd')]};var _0x362654=md5(JSON['stringify'](_0x1dde1c));if(this[_0xe166('0x1')]!==_0x362654){this[_0xe166('0x1')]=_0x362654;io['to'](util['format'](_0xe166('0x18'),_0x1dde1c[_0xe166('0x8')]))['emit'](_0xe166('0x19'),_0x1dde1c);}};module[_0xe166('0x1a')]=FaxQueue;
\ No newline at end of file
+var _0x235b=['map','_rr','updateRealtime','loggedIn','paused','length','online','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','../../../config/environment','defaults','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype'];(function(_0x54077b,_0x57abaf){var _0x510bd0=function(_0x2f9c13){while(--_0x2f9c13){_0x54077b['push'](_0x54077b['shift']());}};_0x510bd0(++_0x57abaf);}(_0x235b,0x11c));var _0xb235=function(_0x3a7487,_0x119415){_0x3a7487=_0x3a7487-0x0;var _0x47c731=_0x235b[_0x3a7487];return _0x47c731;};'use strict';var _=require(_0xb235('0x0'));var md5=require(_0xb235('0x1'));var util=require(_0xb235('0x2'));var Redis=require('ioredis');var config=require(_0xb235('0x3'));config['redis']=_[_0xb235('0x4')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xb235('0x5'))(new Redis(config[_0xb235('0x6')]));function FaxQueue(_0x4ded1a){this['id']=_0x4ded1a['id']||0x0;this[_0xb235('0x7')]=_0x4ded1a['name']||'';this['timeout']=_0x4ded1a[_0xb235('0x8')]||0xa;this[_0xb235('0x9')]=_0x4ded1a['strategy']||_0xb235('0xa');this['Agents']=_0x4ded1a[_0xb235('0xb')];this[_0xb235('0xc')]={};this[_0xb235('0xd')]=0x0;this[_0xb235('0x1')]='';this[_0xb235('0xe')]();this['updateRealtime']();}FaxQueue[_0xb235('0xf')][_0xb235('0xe')]=function(){var _0x1dfb04=this['mapAgentsId']['_rr'];this['mapAgentsId']=_[_0xb235('0x10')](this[_0xb235('0xb')],'id');this['mapAgentsId'][_0xb235('0x11')]=_0x1dfb04;};FaxQueue[_0xb235('0xf')][_0xb235('0x12')]=function(){this[_0xb235('0x13')]=0x0;this[_0xb235('0x14')]=0x0;for(var _0x77a4b4=0x0;_0x77a4b4<this['Agents'][_0xb235('0x15')];_0x77a4b4+=0x1){if(this[_0xb235('0xb')][_0x77a4b4][_0xb235('0x16')]){this[_0xb235('0x13')]+=0x1;}if(this[_0xb235('0xb')][_0x77a4b4]['faxPause']){this[_0xb235('0x14')]+=0x1;}}this[_0xb235('0x17')]=this[_0xb235('0x13')]-this['paused'];this[_0xb235('0x17')]=this[_0xb235('0x17')]>=0x0?this[_0xb235('0x17')]:0x0;var _0x1f523f={'id':this['id'],'available':this[_0xb235('0x17')],'loggedIn':this['loggedIn'],'name':this[_0xb235('0x7')],'paused':this[_0xb235('0x14')],'waiting':this['waiting']};var _0x2bbf4b=md5(JSON[_0xb235('0x18')](_0x1f523f));if(this['md5']!==_0x2bbf4b){this[_0xb235('0x1')]=_0x2bbf4b;io['to'](util[_0xb235('0x19')](_0xb235('0x1a'),_0x1f523f['name']))[_0xb235('0x1b')](_0xb235('0x1c'),_0x1f523f);}};module[_0xb235('0x1d')]=FaxQueue;
\ No newline at end of file
index 5826dca..8a57875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9c=['exports','name'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x1f9c,0x147));var _0xc1f9=function(_0x3833dd,_0x3180df){_0x3833dd=_0x3833dd-0x0;var _0x4fbaa0=_0x1f9c[_0x3833dd];return _0x4fbaa0;};'use strict';function Interval(_0x4d1fdb){this['id']=_0x4d1fdb['id']||0x0;this[_0xc1f9('0x0')]=_0x4d1fdb['name']||'';this['Intervals']=_0x4d1fdb['Intervals']||{};}module[_0xc1f9('0x1')]=Interval;
\ No newline at end of file
+var _0xf84b=['Intervals','name'];(function(_0x4f3cf6,_0x1d8c0b){var _0x26309f=function(_0x5031c5){while(--_0x5031c5){_0x4f3cf6['push'](_0x4f3cf6['shift']());}};_0x26309f(++_0x1d8c0b);}(_0xf84b,0x115));var _0xbf84=function(_0x1adc67,_0x421c35){_0x1adc67=_0x1adc67-0x0;var _0x10df12=_0xf84b[_0x1adc67];return _0x10df12;};'use strict';function Interval(_0x476d2e){this['id']=_0x476d2e['id']||0x0;this[_0xbf84('0x0')]=_0x476d2e[_0xbf84('0x0')]||'';this[_0xbf84('0x1')]=_0x476d2e[_0xbf84('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 39829eb..12166af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf697=['_rr','map','prototype','loggedIn','paused','length','mailPause','available','stringify','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','updateRouting'];(function(_0x5b29df,_0x9f665b){var _0x9f3815=function(_0x452f1f){while(--_0x452f1f){_0x5b29df['push'](_0x5b29df['shift']());}};_0x9f3815(++_0x9f665b);}(_0xf697,0x193));var _0x7f69=function(_0x2db637,_0x3d5742){_0x2db637=_0x2db637-0x0;var _0x2aa2a8=_0xf697[_0x2db637];return _0x2aa2a8;};'use strict';var _=require('lodash');var md5=require(_0x7f69('0x0'));var util=require(_0x7f69('0x1'));var Redis=require(_0x7f69('0x2'));var config=require(_0x7f69('0x3'));config[_0x7f69('0x4')]=_[_0x7f69('0x5')](config[_0x7f69('0x4')],{'host':_0x7f69('0x6'),'port':0x18eb});var io=require(_0x7f69('0x7'))(new Redis(config['redis']));function MailQueue(_0x2ce4dc){this['id']=_0x2ce4dc['id']||0x0;this[_0x7f69('0x8')]=_0x2ce4dc[_0x7f69('0x8')]||'';this[_0x7f69('0x9')]=_0x2ce4dc[_0x7f69('0x9')]||0xa;this[_0x7f69('0xa')]=_0x2ce4dc[_0x7f69('0xa')]||_0x7f69('0xb');this[_0x7f69('0xc')]=_0x2ce4dc[_0x7f69('0xc')];this[_0x7f69('0xd')]={};this[_0x7f69('0xe')]=0x0;this[_0x7f69('0x0')]='';this['updateRouting']();this[_0x7f69('0xf')]();}MailQueue['prototype'][_0x7f69('0x10')]=function(){var _0x4e2c32=this['mapAgentsId'][_0x7f69('0x11')];this['mapAgentsId']=_[_0x7f69('0x12')](this[_0x7f69('0xc')],'id');this[_0x7f69('0xd')][_0x7f69('0x11')]=_0x4e2c32;};MailQueue[_0x7f69('0x13')]['updateRealtime']=function(){this[_0x7f69('0x14')]=0x0;this[_0x7f69('0x15')]=0x0;for(var _0x59bc6a=0x0;_0x59bc6a<this[_0x7f69('0xc')][_0x7f69('0x16')];_0x59bc6a+=0x1){if(this[_0x7f69('0xc')][_0x59bc6a]['online']){this[_0x7f69('0x14')]+=0x1;}if(this[_0x7f69('0xc')][_0x59bc6a][_0x7f69('0x17')]){this[_0x7f69('0x15')]+=0x1;}}this[_0x7f69('0x18')]=this[_0x7f69('0x14')]-this[_0x7f69('0x15')];this[_0x7f69('0x18')]=this[_0x7f69('0x18')]>=0x0?this['available']:0x0;var _0x4f5412={'id':this['id'],'available':this[_0x7f69('0x18')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x7f69('0x15')],'waiting':this[_0x7f69('0xe')]};var _0x3c656b=md5(JSON[_0x7f69('0x19')](_0x4f5412));if(this['md5']!==_0x3c656b){this[_0x7f69('0x0')]=_0x3c656b;io['to'](util['format'](_0x7f69('0x1a'),_0x4f5412[_0x7f69('0x8')]))[_0x7f69('0x1b')](_0x7f69('0x1c'),_0x4f5412);}};module[_0x7f69('0x1d')]=MailQueue;
\ No newline at end of file
+var _0xafc7=['map','loggedIn','paused','length','mailPause','available','format','mail:queue:%s','mail_queue:save','exports','lodash','md5','util','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr'];(function(_0x454578,_0x5e3f81){var _0x12e044=function(_0x11e939){while(--_0x11e939){_0x454578['push'](_0x454578['shift']());}};_0x12e044(++_0x5e3f81);}(_0xafc7,0x1bd));var _0x7afc=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xafc7[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x7afc('0x0'));var md5=require(_0x7afc('0x1'));var util=require(_0x7afc('0x2'));var Redis=require('ioredis');var config=require(_0x7afc('0x3'));config['redis']=_[_0x7afc('0x4')](config[_0x7afc('0x5')],{'host':_0x7afc('0x6'),'port':0x18eb});var io=require(_0x7afc('0x7'))(new Redis(config[_0x7afc('0x5')]));function MailQueue(_0xb39cd6){this['id']=_0xb39cd6['id']||0x0;this[_0x7afc('0x8')]=_0xb39cd6[_0x7afc('0x8')]||'';this[_0x7afc('0x9')]=_0xb39cd6[_0x7afc('0x9')]||0xa;this[_0x7afc('0xa')]=_0xb39cd6[_0x7afc('0xa')]||_0x7afc('0xb');this[_0x7afc('0xc')]=_0xb39cd6[_0x7afc('0xc')];this[_0x7afc('0xd')]={};this[_0x7afc('0xe')]=0x0;this[_0x7afc('0x1')]='';this[_0x7afc('0xf')]();this[_0x7afc('0x10')]();}MailQueue[_0x7afc('0x11')][_0x7afc('0xf')]=function(){var _0x1f3bf0=this['mapAgentsId'][_0x7afc('0x12')];this[_0x7afc('0xd')]=_[_0x7afc('0x13')](this['Agents'],'id');this[_0x7afc('0xd')][_0x7afc('0x12')]=_0x1f3bf0;};MailQueue[_0x7afc('0x11')][_0x7afc('0x10')]=function(){this[_0x7afc('0x14')]=0x0;this[_0x7afc('0x15')]=0x0;for(var _0x44994=0x0;_0x44994<this['Agents'][_0x7afc('0x16')];_0x44994+=0x1){if(this[_0x7afc('0xc')][_0x44994]['online']){this[_0x7afc('0x14')]+=0x1;}if(this[_0x7afc('0xc')][_0x44994][_0x7afc('0x17')]){this[_0x7afc('0x15')]+=0x1;}}this['available']=this[_0x7afc('0x14')]-this['paused'];this['available']=this['available']>=0x0?this[_0x7afc('0x18')]:0x0;var _0x2aaaca={'id':this['id'],'available':this['available'],'loggedIn':this[_0x7afc('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x7afc('0xe')]};var _0x713f04=md5(JSON['stringify'](_0x2aaaca));if(this[_0x7afc('0x1')]!==_0x713f04){this[_0x7afc('0x1')]=_0x713f04;io['to'](util[_0x7afc('0x19')](_0x7afc('0x1a'),_0x2aaaca[_0x7afc('0x8')]))['emit'](_0x7afc('0x1b'),_0x2aaaca);}};module[_0x7afc('0x1c')]=MailQueue;
\ No newline at end of file
index 432364e..0ccb15b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x1382ec,_0x589ce9){var _0x153e92=function(_0x1b1b12){while(--_0x1b1b12){_0x1382ec['push'](_0x1382ec['shift']());}};_0x153e92(++_0x589ce9);}(_0x814b,0x1a2));var _0xb814=function(_0x6ff984,_0x52fbd1){_0x6ff984=_0x6ff984-0x0;var _0x1b8400=_0x814b[_0x6ff984];return _0x1b8400;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x543b6a,_0x2eb250){var _0x3a0f82=function(_0x5d9754){while(--_0x5d9754){_0x543b6a['push'](_0x543b6a['shift']());}};_0x3a0f82(++_0x2eb250);}(_0x814b,0x1a2));var _0xb814=function(_0x2134b7,_0x1eb5e2){_0x2134b7=_0x2134b7-0x0;var _0x6c5914=_0x814b[_0x2134b7];return _0x6c5914;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index c9c54b1..e0fe25b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b32=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','Agents','paused','loggedIn','smsPause','available','format','sms:queue:%s','emit','sms_queue:save','md5','util'];(function(_0x2226e1,_0xfdb16d){var _0x1303c5=function(_0x23e0de){while(--_0x23e0de){_0x2226e1['push'](_0x2226e1['shift']());}};_0x1303c5(++_0xfdb16d);}(_0x1b32,0x85));var _0x21b3=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x1b32[_0x599f41];return _0x2e4d58;};'use strict';var _=require('lodash');var md5=require(_0x21b3('0x0'));var util=require(_0x21b3('0x1'));var Redis=require(_0x21b3('0x2'));var config=require(_0x21b3('0x3'));config[_0x21b3('0x4')]=_[_0x21b3('0x5')](config[_0x21b3('0x4')],{'host':_0x21b3('0x6'),'port':0x18eb});var io=require(_0x21b3('0x7'))(new Redis(config[_0x21b3('0x4')]));function SmsQueue(_0x124b9e){this['id']=_0x124b9e['id']||0x0;this[_0x21b3('0x8')]=_0x124b9e[_0x21b3('0x8')]||'';this[_0x21b3('0x9')]=_0x124b9e[_0x21b3('0x9')]||0xa;this['strategy']=_0x124b9e[_0x21b3('0xa')]||'beepall';this['Agents']=_0x124b9e['Agents'];this[_0x21b3('0xb')]={};this[_0x21b3('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0x21b3('0xd')]();}SmsQueue[_0x21b3('0xe')][_0x21b3('0xf')]=function(){var _0x4af5e0=this[_0x21b3('0xb')][_0x21b3('0x10')];this[_0x21b3('0xb')]=_[_0x21b3('0x11')](this[_0x21b3('0x12')],'id');this[_0x21b3('0xb')][_0x21b3('0x10')]=_0x4af5e0;};SmsQueue[_0x21b3('0xe')][_0x21b3('0xd')]=function(){this['loggedIn']=0x0;this[_0x21b3('0x13')]=0x0;for(var _0x810f46=0x0;_0x810f46<this[_0x21b3('0x12')]['length'];_0x810f46+=0x1){if(this[_0x21b3('0x12')][_0x810f46]['online']){this[_0x21b3('0x14')]+=0x1;}if(this['Agents'][_0x810f46][_0x21b3('0x15')]){this[_0x21b3('0x13')]+=0x1;}}this[_0x21b3('0x16')]=this[_0x21b3('0x14')]-this['paused'];this[_0x21b3('0x16')]=this['available']>=0x0?this[_0x21b3('0x16')]:0x0;var _0x2af6e4={'id':this['id'],'available':this[_0x21b3('0x16')],'loggedIn':this[_0x21b3('0x14')],'name':this['name'],'paused':this[_0x21b3('0x13')],'waiting':this[_0x21b3('0xc')]};var _0x3f4040=md5(JSON['stringify'](_0x2af6e4));if(this[_0x21b3('0x0')]!==_0x3f4040){this[_0x21b3('0x0')]=_0x3f4040;io['to'](util[_0x21b3('0x17')](_0x21b3('0x18'),_0x2af6e4[_0x21b3('0x8')]))[_0x21b3('0x19')](_0x21b3('0x1a'),_0x2af6e4);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x0834=['beepall','Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','map','_rr','online','loggedIn','smsPause','available','paused','stringify','sms:queue:%s','emit','sms_queue:save','exports','util','ioredis','redis','localhost','name','timeout','strategy'];(function(_0x213858,_0x4a2162){var _0xf79601=function(_0x383833){while(--_0x383833){_0x213858['push'](_0x213858['shift']());}};_0xf79601(++_0x4a2162);}(_0x0834,0x18e));var _0x4083=function(_0x23fbd4,_0x14d8d){_0x23fbd4=_0x23fbd4-0x0;var _0x59576b=_0x0834[_0x23fbd4];return _0x59576b;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x4083('0x0'));var Redis=require(_0x4083('0x1'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0x4083('0x2')],{'host':_0x4083('0x3'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4083('0x2')]));function SmsQueue(_0x32ea06){this['id']=_0x32ea06['id']||0x0;this['name']=_0x32ea06[_0x4083('0x4')]||'';this['timeout']=_0x32ea06[_0x4083('0x5')]||0xa;this[_0x4083('0x6')]=_0x32ea06[_0x4083('0x6')]||_0x4083('0x7');this[_0x4083('0x8')]=_0x32ea06[_0x4083('0x8')];this[_0x4083('0x9')]={};this[_0x4083('0xa')]=0x0;this[_0x4083('0xb')]='';this[_0x4083('0xc')]();this[_0x4083('0xd')]();}SmsQueue[_0x4083('0xe')][_0x4083('0xc')]=function(){var _0x5d6067=this[_0x4083('0x9')]['_rr'];this['mapAgentsId']=_[_0x4083('0xf')](this[_0x4083('0x8')],'id');this['mapAgentsId'][_0x4083('0x10')]=_0x5d6067;};SmsQueue[_0x4083('0xe')][_0x4083('0xd')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0xb5badb=0x0;_0xb5badb<this[_0x4083('0x8')]['length'];_0xb5badb+=0x1){if(this[_0x4083('0x8')][_0xb5badb][_0x4083('0x11')]){this[_0x4083('0x12')]+=0x1;}if(this[_0x4083('0x8')][_0xb5badb][_0x4083('0x13')]){this['paused']+=0x1;}}this[_0x4083('0x14')]=this[_0x4083('0x12')]-this[_0x4083('0x15')];this[_0x4083('0x14')]=this['available']>=0x0?this['available']:0x0;var _0x4d6089={'id':this['id'],'available':this[_0x4083('0x14')],'loggedIn':this[_0x4083('0x12')],'name':this['name'],'paused':this[_0x4083('0x15')],'waiting':this['waiting']};var _0x2ae9d5=md5(JSON[_0x4083('0x16')](_0x4d6089));if(this[_0x4083('0xb')]!==_0x2ae9d5){this[_0x4083('0xb')]=_0x2ae9d5;io['to'](util['format'](_0x4083('0x17'),_0x4d6089['name']))[_0x4083('0x18')](_0x4083('0x19'),_0x4d6089);}};module[_0x4083('0x1a')]=SmsQueue;
\ No newline at end of file
index e6ed15d..b53d73e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3123=['whatsapp_queue:save','exports','md5','util','redis','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','map','_rr','updateRealtime','paused','length','online','loggedIn','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit'];(function(_0x3d0461,_0xeab134){var _0x5d5045=function(_0xe15a16){while(--_0xe15a16){_0x3d0461['push'](_0x3d0461['shift']());}};_0x5d5045(++_0xeab134);}(_0x3123,0x136));var _0x3312=function(_0x23d8da,_0x39e8d5){_0x23d8da=_0x23d8da-0x0;var _0x542871=_0x3123[_0x23d8da];return _0x542871;};'use strict';var _=require('lodash');var md5=require(_0x3312('0x0'));var util=require(_0x3312('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x3312('0x2')]=_['defaults'](config[_0x3312('0x2')],{'host':_0x3312('0x3'),'port':0x18eb});var io=require(_0x3312('0x4'))(new Redis(config['redis']));function WhatsappQueue(_0x27bda2){this['id']=_0x27bda2['id']||0x0;this[_0x3312('0x5')]=_0x27bda2[_0x3312('0x5')]||'';this[_0x3312('0x6')]=_0x27bda2[_0x3312('0x6')]||0xa;this[_0x3312('0x7')]=_0x27bda2['strategy']||'beepall';this['Agents']=_0x27bda2[_0x3312('0x8')];this[_0x3312('0x9')]={};this[_0x3312('0xa')]=0x0;this[_0x3312('0x0')]='';this[_0x3312('0xb')]();this['updateRealtime']();}WhatsappQueue[_0x3312('0xc')]['updateRouting']=function(){var _0x1c7ced=this[_0x3312('0x9')]['_rr'];this[_0x3312('0x9')]=_[_0x3312('0xd')](this[_0x3312('0x8')],'id');this['mapAgentsId'][_0x3312('0xe')]=_0x1c7ced;};WhatsappQueue[_0x3312('0xc')][_0x3312('0xf')]=function(){this['loggedIn']=0x0;this[_0x3312('0x10')]=0x0;for(var _0x18a863=0x0;_0x18a863<this[_0x3312('0x8')][_0x3312('0x11')];_0x18a863+=0x1){if(this['Agents'][_0x18a863][_0x3312('0x12')]){this[_0x3312('0x13')]+=0x1;}if(this[_0x3312('0x8')][_0x18a863][_0x3312('0x14')]){this[_0x3312('0x10')]+=0x1;}}this[_0x3312('0x15')]=this['loggedIn']-this[_0x3312('0x10')];this['available']=this[_0x3312('0x15')]>=0x0?this['available']:0x0;var _0x3e0dbf={'id':this['id'],'available':this[_0x3312('0x15')],'loggedIn':this['loggedIn'],'name':this[_0x3312('0x5')],'paused':this[_0x3312('0x10')],'waiting':this['waiting']};var _0x5ba1e7=md5(JSON[_0x3312('0x16')](_0x3e0dbf));if(this[_0x3312('0x0')]!==_0x5ba1e7){this['md5']=_0x5ba1e7;io['to'](util[_0x3312('0x17')](_0x3312('0x18'),_0x3e0dbf[_0x3312('0x5')]))[_0x3312('0x19')](_0x3312('0x1a'),_0x3e0dbf);}};module[_0x3312('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x9f1f=['format','whatsapp:queue:%s','emit','exports','lodash','md5','ioredis','../../../config/environment','redis','localhost','name','timeout','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','Agents','loggedIn','online','paused','available','stringify'];(function(_0x49ed75,_0x1e5eb3){var _0xef68ff=function(_0x2f3987){while(--_0x2f3987){_0x49ed75['push'](_0x49ed75['shift']());}};_0xef68ff(++_0x1e5eb3);}(_0x9f1f,0x1b9));var _0xf9f1=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x9f1f[_0x39e283];return _0x7de89f;};'use strict';var _=require(_0xf9f1('0x0'));var md5=require(_0xf9f1('0x1'));var util=require('util');var Redis=require(_0xf9f1('0x2'));var config=require(_0xf9f1('0x3'));config[_0xf9f1('0x4')]=_['defaults'](config[_0xf9f1('0x4')],{'host':_0xf9f1('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x18a6a2){this['id']=_0x18a6a2['id']||0x0;this[_0xf9f1('0x6')]=_0x18a6a2[_0xf9f1('0x6')]||'';this[_0xf9f1('0x7')]=_0x18a6a2[_0xf9f1('0x7')]||0xa;this['strategy']=_0x18a6a2['strategy']||'beepall';this['Agents']=_0x18a6a2['Agents'];this['mapAgentsId']={};this['waiting']=0x0;this[_0xf9f1('0x1')]='';this[_0xf9f1('0x8')]();this[_0xf9f1('0x9')]();}WhatsappQueue[_0xf9f1('0xa')][_0xf9f1('0x8')]=function(){var _0x37560d=this[_0xf9f1('0xb')][_0xf9f1('0xc')];this[_0xf9f1('0xb')]=_['map'](this[_0xf9f1('0xd')],'id');this['mapAgentsId']['_rr']=_0x37560d;};WhatsappQueue[_0xf9f1('0xa')][_0xf9f1('0x9')]=function(){this[_0xf9f1('0xe')]=0x0;this['paused']=0x0;for(var _0xa826b4=0x0;_0xa826b4<this['Agents']['length'];_0xa826b4+=0x1){if(this[_0xf9f1('0xd')][_0xa826b4][_0xf9f1('0xf')]){this[_0xf9f1('0xe')]+=0x1;}if(this['Agents'][_0xa826b4]['whatsappPause']){this[_0xf9f1('0x10')]+=0x1;}}this[_0xf9f1('0x11')]=this[_0xf9f1('0xe')]-this['paused'];this[_0xf9f1('0x11')]=this[_0xf9f1('0x11')]>=0x0?this['available']:0x0;var _0x34d56d={'id':this['id'],'available':this[_0xf9f1('0x11')],'loggedIn':this['loggedIn'],'name':this[_0xf9f1('0x6')],'paused':this[_0xf9f1('0x10')],'waiting':this['waiting']};var _0x53d9f1=md5(JSON[_0xf9f1('0x12')](_0x34d56d));if(this['md5']!==_0x53d9f1){this['md5']=_0x53d9f1;io['to'](util[_0xf9f1('0x13')](_0xf9f1('0x14'),_0x34d56d[_0xf9f1('0x6')]))[_0xf9f1('0x15')]('whatsapp_queue:save',_0x34d56d);}};module[_0xf9f1('0x16')]=WhatsappQueue;
\ No newline at end of file
index 9f4a449..7caddd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index be89165..367a9f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe137=['addTagsToChatInteraction','update','Request','UpdateChatInteraction','updateChatInteraction','AddTagsToChatInteraction'];(function(_0x2c61f8,_0xb8a4dd){var _0x4badd1=function(_0x548e80){while(--_0x548e80){_0x2c61f8['push'](_0x2c61f8['shift']());}};_0x4badd1(++_0xb8a4dd);}(_0xe137,0x169));var _0x7e13=function(_0x3afe18,_0x26922c){_0x3afe18=_0x3afe18-0x0;var _0x19ed1f=_0xe137[_0x3afe18];return _0x19ed1f;};'use strict';var client=require('../client');exports[_0x7e13('0x0')]=function(_0x4a66bf,_0x18a7ca){return client[_0x7e13('0x1')](_0x7e13('0x2'),{'body':_0x18a7ca,'options':{'where':{'id':_0x4a66bf}},'log':_0x7e13('0x3')});};exports['addTags']=function(_0x159d14,_0x456c34){return client[_0x7e13('0x1')](_0x7e13('0x4'),{'body':_0x456c34,'options':{'where':{'id':_0x159d14}},'log':_0x7e13('0x5')});};
\ No newline at end of file
+var _0xbd4e=['UpdateChatInteraction','addTags','addTagsToChatInteraction','update','Request'];(function(_0x718f1f,_0x2e2338){var _0x48b289=function(_0x524e31){while(--_0x524e31){_0x718f1f['push'](_0x718f1f['shift']());}};_0x48b289(++_0x2e2338);}(_0xbd4e,0x1b1));var _0xebd4=function(_0x5c7c7e,_0xfbd165){_0x5c7c7e=_0x5c7c7e-0x0;var _0x59699d=_0xbd4e[_0x5c7c7e];return _0x59699d;};'use strict';var client=require('../client');exports[_0xebd4('0x0')]=function(_0x3ee12c,_0x276645){return client[_0xebd4('0x1')](_0xebd4('0x2'),{'body':_0x276645,'options':{'where':{'id':_0x3ee12c}},'log':'updateChatInteraction'});};exports[_0xebd4('0x3')]=function(_0x34d966,_0x5b6eb5){return client[_0xebd4('0x1')]('AddTagsToChatInteraction',{'body':_0x5b6eb5,'options':{'where':{'id':_0x34d966}},'log':_0xebd4('0x4')});};
\ No newline at end of file
index 4ba2291..359063c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d3d=['CreateChatMessage','createChatMessage','Request'];(function(_0x2043c2,_0x11c3ed){var _0xb1d3c7=function(_0x1a2d00){while(--_0x1a2d00){_0x2043c2['push'](_0x2043c2['shift']());}};_0xb1d3c7(++_0x11c3ed);}(_0x8d3d,0xaa));var _0xd8d3=function(_0x4bfe02,_0x1de667){_0x4bfe02=_0x4bfe02-0x0;var _0x5ba14d=_0x8d3d[_0x4bfe02];return _0x5ba14d;};'use strict';var client=require('../client');exports['create']=function(_0x58618c){return client[_0xd8d3('0x0')](_0xd8d3('0x1'),{'body':_0x58618c,'log':_0xd8d3('0x2')});};
\ No newline at end of file
+var _0xec74=['Request','createChatMessage','../client'];(function(_0x37267f,_0x41febd){var _0x106800=function(_0x3765f0){while(--_0x3765f0){_0x37267f['push'](_0x37267f['shift']());}};_0x106800(++_0x41febd);}(_0xec74,0x92));var _0x4ec7=function(_0x1e8756,_0x431463){_0x1e8756=_0x1e8756-0x0;var _0x41a0f4=_0xec74[_0x1e8756];return _0x41a0f4;};'use strict';var client=require(_0x4ec7('0x0'));exports['create']=function(_0x4c303b){return client[_0x4ec7('0x1')]('CreateChatMessage',{'body':_0x4c303b,'log':_0x4ec7('0x2')});};
\ No newline at end of file
index bcae048..1854f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d9f=['strategy','User','chatPause','../client','getChatQueues','Request','GetChatQueue','name','timeout'];(function(_0x2aa575,_0x380416){var _0x1e0f16=function(_0x510bb7){while(--_0x510bb7){_0x2aa575['push'](_0x2aa575['shift']());}};_0x1e0f16(++_0x380416);}(_0x3d9f,0xd2));var _0xf3d9=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x3d9f[_0x2f5ac5];return _0x37c9a8;};'use strict';var client=require(_0xf3d9('0x0'));exports[_0xf3d9('0x1')]=function(){return function(){return client[_0xf3d9('0x2')](_0xf3d9('0x3'),{'options':{'raw':![],'attributes':['id',_0xf3d9('0x4'),_0xf3d9('0x5'),_0xf3d9('0x6')],'include':[{'model':_0xf3d9('0x7'),'as':'Agents','attributes':['id','name','online',_0xf3d9('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0x16d8=['chatPause','getChatQueues','Request','GetChatQueue','name','timeout','strategy','User','Agents'];(function(_0x2054ea,_0xce95aa){var _0x4e3cf7=function(_0x756def){while(--_0x756def){_0x2054ea['push'](_0x2054ea['shift']());}};_0x4e3cf7(++_0xce95aa);}(_0x16d8,0xa3));var _0x816d=function(_0xa77f55,_0x3339d2){_0xa77f55=_0xa77f55-0x0;var _0x3008d7=_0x16d8[_0xa77f55];return _0x3008d7;};'use strict';var client=require('../client');exports[_0x816d('0x0')]=function(){return function(){return client[_0x816d('0x1')](_0x816d('0x2'),{'options':{'raw':![],'attributes':['id',_0x816d('0x3'),_0x816d('0x4'),_0x816d('0x5')],'include':[{'model':_0x816d('0x6'),'as':_0x816d('0x7'),'attributes':['id',_0x816d('0x3'),'online',_0x816d('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index d6e19b3..26fb607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f17=['CreateChatQueueReport','update','UpdateChatQueueReport','../client','Request'];(function(_0x2eb0b2,_0x611103){var _0x483cbd=function(_0x428bb2){while(--_0x428bb2){_0x2eb0b2['push'](_0x2eb0b2['shift']());}};_0x483cbd(++_0x611103);}(_0x4f17,0x9e));var _0x74f1=function(_0x3eb630,_0x552586){_0x3eb630=_0x3eb630-0x0;var _0x1b840d=_0x4f17[_0x3eb630];return _0x1b840d;};'use strict';var client=require(_0x74f1('0x0'));exports['create']=function(_0xc7f009){return client[_0x74f1('0x1')]('CreateChatQueueReport',{'body':_0xc7f009,'log':_0x74f1('0x2')});};exports[_0x74f1('0x3')]=function(_0x3f16b2,_0x62251d){return client[_0x74f1('0x1')]('UpdateChatQueueReport',{'body':_0x62251d,'options':{'where':{'uniqueid':_0x3f16b2},'order':[['id','DESC']],'limit':0x1},'log':_0x74f1('0x4')});};
\ No newline at end of file
+var _0x1d5b=['CreateChatQueueReport','update','Request','UpdateChatQueueReport','../client','create'];(function(_0x13a4e7,_0x1db8d5){var _0x58dae0=function(_0x2f3717){while(--_0x2f3717){_0x13a4e7['push'](_0x13a4e7['shift']());}};_0x58dae0(++_0x1db8d5);}(_0x1d5b,0x13c));var _0xb1d5=function(_0x22fdeb,_0x2dccb1){_0x22fdeb=_0x22fdeb-0x0;var _0x1c5635=_0x1d5b[_0x22fdeb];return _0x1c5635;};'use strict';var client=require(_0xb1d5('0x0'));exports[_0xb1d5('0x1')]=function(_0x1a1089){return client['Request'](_0xb1d5('0x2'),{'body':_0x1a1089,'log':'CreateChatQueueReport'});};exports[_0xb1d5('0x3')]=function(_0x1a673c,_0xa12a1e){return client[_0xb1d5('0x4')]('UpdateChatQueueReport',{'body':_0xa12a1e,'options':{'where':{'uniqueid':_0x1a673c},'order':[['id','DESC']],'limit':0x1},'log':_0xb1d5('0x5')});};
\ No newline at end of file
index 0b46390..754ee02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x1c476f,_0x25fbf8){var _0x378e07=function(_0x10c791){while(--_0x10c791){_0x1c476f['push'](_0x1c476f['shift']());}};_0x378e07(++_0x25fbf8);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0x7a54,0x106));var _0x47a5=function(_0x173cb1,_0x4e192d){_0x173cb1=_0x173cb1-0x0;var _0x1b051c=_0x7a54[_0x173cb1];return _0x1b051c;};'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 346c91f..efe72a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f6a=['CreateFaxMessage','createFaxMessage','../client','create','Request'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x2f6a,0x66));var _0xa2f6=function(_0x5b9c78,_0x3a157b){_0x5b9c78=_0x5b9c78-0x0;var _0x129e33=_0x2f6a[_0x5b9c78];return _0x129e33;};'use strict';var client=require(_0xa2f6('0x0'));exports[_0xa2f6('0x1')]=function(_0x26d548){return client[_0xa2f6('0x2')](_0xa2f6('0x3'),{'body':_0x26d548,'log':_0xa2f6('0x4')});};
\ No newline at end of file
+var _0x76cd=['CreateFaxMessage','create','Request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x76cd,0xfa));var _0xd76c=function(_0x20ea68,_0xed30f4){_0x20ea68=_0x20ea68-0x0;var _0x3a9641=_0x76cd[_0x20ea68];return _0x3a9641;};'use strict';var client=require('../client');exports[_0xd76c('0x0')]=function(_0x4483ef){return client[_0xd76c('0x1')](_0xd76c('0x2'),{'body':_0x4483ef,'log':'createFaxMessage'});};
\ No newline at end of file
index 8b8e62c..ac42b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xede7=['Request','GetFaxQueue','name','timeout','strategy','User','online','faxPause','getFaxQueues','../client'];(function(_0x5b4490,_0x14af15){var _0xb7f865=function(_0x40e0e4){while(--_0x40e0e4){_0x5b4490['push'](_0x5b4490['shift']());}};_0xb7f865(++_0x14af15);}(_0xede7,0x167));var _0x7ede=function(_0x4849f6,_0x104836){_0x4849f6=_0x4849f6-0x0;var _0x1a3dcd=_0xede7[_0x4849f6];return _0x1a3dcd;};'use strict';var client=require(_0x7ede('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x7ede('0x1')](_0x7ede('0x2'),{'options':{'raw':![],'attributes':['id',_0x7ede('0x3'),_0x7ede('0x4'),_0x7ede('0x5')],'include':[{'model':_0x7ede('0x6'),'as':'Agents','attributes':['id','name',_0x7ede('0x7'),_0x7ede('0x8')]}]},'log':_0x7ede('0x9')});};};
\ No newline at end of file
+var _0x8ef3=['../client','getFaxQueues','GetFaxQueue','name','timeout','strategy','User'];(function(_0x50a3e4,_0x43d30b){var _0x4f99bf=function(_0x413dec){while(--_0x413dec){_0x50a3e4['push'](_0x50a3e4['shift']());}};_0x4f99bf(++_0x43d30b);}(_0x8ef3,0xaf));var _0x38ef=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x8ef3[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x38ef('0x0'));exports[_0x38ef('0x1')]=function(){return function(){return client['Request'](_0x38ef('0x2'),{'options':{'raw':![],'attributes':['id',_0x38ef('0x3'),_0x38ef('0x4'),_0x38ef('0x5')],'include':[{'model':_0x38ef('0x6'),'as':'Agents','attributes':['id','name','online','faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index 90e2615..a433131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ebe=['Request','update','UpdateFaxQueueReport','../client'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4ebe,0xdf));var _0xe4eb=function(_0x6b5e1e,_0x1944cc){_0x6b5e1e=_0x6b5e1e-0x0;var _0x139e53=_0x4ebe[_0x6b5e1e];return _0x139e53;};'use strict';var client=require(_0xe4eb('0x0'));exports['create']=function(_0x1fc547){return client[_0xe4eb('0x1')]('CreateFaxQueueReport',{'body':_0x1fc547,'log':'CreateFaxQueueReport'});};exports[_0xe4eb('0x2')]=function(_0x3d099d,_0x20e515){return client['Request']('UpdateFaxQueueReport',{'body':_0x20e515,'options':{'where':{'uniqueid':_0x3d099d},'order':[['id','DESC']],'limit':0x1},'log':_0xe4eb('0x3')});};
\ No newline at end of file
+var _0x9ce4=['UpdateFaxQueueReport','../client','CreateFaxQueueReport','update','Request','DESC'];(function(_0x3548c9,_0x29336a){var _0x2294fe=function(_0x1309aa){while(--_0x1309aa){_0x3548c9['push'](_0x3548c9['shift']());}};_0x2294fe(++_0x29336a);}(_0x9ce4,0x139));var _0x49ce=function(_0x16ffe2,_0x2f73ed){_0x16ffe2=_0x16ffe2-0x0;var _0x4193e5=_0x9ce4[_0x16ffe2];return _0x4193e5;};'use strict';var client=require(_0x49ce('0x0'));exports['create']=function(_0x342187){return client['Request'](_0x49ce('0x1'),{'body':_0x342187,'log':_0x49ce('0x1')});};exports[_0x49ce('0x2')]=function(_0x2b11a9,_0x6132fa){return client[_0x49ce('0x3')]('UpdateFaxQueueReport',{'body':_0x6132fa,'options':{'where':{'uniqueid':_0x2b11a9},'order':[['id',_0x49ce('0x4')]],'limit':0x1},'log':_0x49ce('0x5')});};
\ No newline at end of file
index 0c2c36b..ba91077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b97=['interval','../client','GetInterval','name','Interval','Intervals'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x7b97,0x19f));var _0x77b9=function(_0x24e951,_0x544ac7){_0x24e951=_0x24e951-0x0;var _0x554280=_0x7b97[_0x24e951];return _0x554280;};'use strict';var client=require(_0x77b9('0x0'));exports['getIntervals']=function(){return function(){return client['Request'](_0x77b9('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x77b9('0x2')],'include':[{'model':_0x77b9('0x3'),'as':_0x77b9('0x4'),'attributes':['id',_0x77b9('0x2'),_0x77b9('0x5')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x5e4c=['name','Interval','Intervals','../client','getIntervals','GetInterval'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x5e4c,0x1e9));var _0xc5e4=function(_0x2c2028,_0x58d463){_0x2c2028=_0x2c2028-0x0;var _0x8c4f71=_0x5e4c[_0x2c2028];return _0x8c4f71;};'use strict';var client=require(_0xc5e4('0x0'));exports[_0xc5e4('0x1')]=function(){return function(){return client['Request'](_0xc5e4('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xc5e4('0x3')],'include':[{'model':_0xc5e4('0x4'),'as':_0xc5e4('0x5'),'attributes':['id','name','interval']}]},'log':'getIntervals'});};};
\ No newline at end of file
index 6f97993..7cb3517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['addTags','Request','AddTagsToMailInteraction','update','UpdateMailInteraction','updateMailInteraction'];(function(_0x1aba25,_0x1faed1){var _0x47d997=function(_0x4f9e11){while(--_0x4f9e11){_0x1aba25['push'](_0x1aba25['shift']());}};_0x47d997(++_0x1faed1);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x32729c,_0xf5afd8){_0x32729c=_0x32729c-0x0;var _0x482cfd=_0xe2cf[_0x32729c];return _0x482cfd;};'use strict';var client=require('../client');exports[_0xfe2c('0x0')]=function(_0x546786,_0x11c3a4){return client['Request'](_0xfe2c('0x1'),{'body':_0x11c3a4,'options':{'where':{'id':_0x546786}},'log':_0xfe2c('0x2')});};exports[_0xfe2c('0x3')]=function(_0x11b6b8,_0x494978){return client[_0xfe2c('0x4')](_0xfe2c('0x5'),{'body':_0x494978,'options':{'where':{'id':_0x11b6b8}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x5b12=['addTagsToChatInteraction','../client','update','Request','updateMailInteraction','addTags'];(function(_0x4c3904,_0x56db61){var _0x44fd48=function(_0x1e84a2){while(--_0x1e84a2){_0x4c3904['push'](_0x4c3904['shift']());}};_0x44fd48(++_0x56db61);}(_0x5b12,0xa3));var _0x25b1=function(_0x1a212c,_0x26f990){_0x1a212c=_0x1a212c-0x0;var _0x4b6323=_0x5b12[_0x1a212c];return _0x4b6323;};'use strict';var client=require(_0x25b1('0x0'));exports[_0x25b1('0x1')]=function(_0x1fe5c1,_0x569948){return client[_0x25b1('0x2')]('UpdateMailInteraction',{'body':_0x569948,'options':{'where':{'id':_0x1fe5c1}},'log':_0x25b1('0x3')});};exports[_0x25b1('0x4')]=function(_0x47995b,_0x31f3fc){return client['Request']('AddTagsToMailInteraction',{'body':_0x31f3fc,'options':{'where':{'id':_0x47995b}},'log':_0x25b1('0x5')});};
\ No newline at end of file
index a0b70fe..ab9302b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40d=['Request','../client','create'];(function(_0xc8d900,_0x97858d){var _0xb27118=function(_0x37c95a){while(--_0x37c95a){_0xc8d900['push'](_0xc8d900['shift']());}};_0xb27118(++_0x97858d);}(_0xd40d,0x1a8));var _0xdd40=function(_0x29cb21,_0x441ba3){_0x29cb21=_0x29cb21-0x0;var _0x2c5e56=_0xd40d[_0x29cb21];return _0x2c5e56;};'use strict';var client=require(_0xdd40('0x0'));exports[_0xdd40('0x1')]=function(_0xa93b54){return client[_0xdd40('0x2')]('CreateMailMessage',{'body':_0xa93b54,'log':'createMailMessage'});};
\ No newline at end of file
+var _0x6eb7=['../client','create','createMailMessage'];(function(_0x50fda9,_0x5ee44b){var _0x36b92b=function(_0x121877){while(--_0x121877){_0x50fda9['push'](_0x50fda9['shift']());}};_0x36b92b(++_0x5ee44b);}(_0x6eb7,0x1d7));var _0x76eb=function(_0x9cb40f,_0x569d24){_0x9cb40f=_0x9cb40f-0x0;var _0x1f2f67=_0x6eb7[_0x9cb40f];return _0x1f2f67;};'use strict';var client=require(_0x76eb('0x0'));exports[_0x76eb('0x1')]=function(_0x1569c7){return client['Request']('CreateMailMessage',{'body':_0x1569c7,'log':_0x76eb('0x2')});};
\ No newline at end of file
index e89573a..f6c2dde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4304=['online','mailPause','getMailQueues','Request','GetMailQueue','name','timeout','strategy'];(function(_0x2e2aa4,_0x5bb374){var _0x1aaa7b=function(_0x39bb2a){while(--_0x39bb2a){_0x2e2aa4['push'](_0x2e2aa4['shift']());}};_0x1aaa7b(++_0x5bb374);}(_0x4304,0x13a));var _0x4430=function(_0x4edb7e,_0x59581e){_0x4edb7e=_0x4edb7e-0x0;var _0x553a55=_0x4304[_0x4edb7e];return _0x553a55;};'use strict';var client=require('../client');exports[_0x4430('0x0')]=function(){return function(){return client[_0x4430('0x1')](_0x4430('0x2'),{'options':{'raw':![],'attributes':['id',_0x4430('0x3'),_0x4430('0x4'),_0x4430('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x4430('0x3'),_0x4430('0x6'),_0x4430('0x7')]}]},'log':_0x4430('0x0')});};};
\ No newline at end of file
+var _0x62a0=['online','mailPause','../client','getMailQueues','GetMailQueue','name','timeout','strategy','User','Agents'];(function(_0x429fdf,_0x22c027){var _0x52c992=function(_0x25f830){while(--_0x25f830){_0x429fdf['push'](_0x429fdf['shift']());}};_0x52c992(++_0x22c027);}(_0x62a0,0x8e));var _0x062a=function(_0x12833b,_0x26c1d2){_0x12833b=_0x12833b-0x0;var _0x3acad3=_0x62a0[_0x12833b];return _0x3acad3;};'use strict';var client=require(_0x062a('0x0'));exports[_0x062a('0x1')]=function(){return function(){return client['Request'](_0x062a('0x2'),{'options':{'raw':![],'attributes':['id',_0x062a('0x3'),_0x062a('0x4'),_0x062a('0x5')],'include':[{'model':_0x062a('0x6'),'as':_0x062a('0x7'),'attributes':['id','name',_0x062a('0x8'),_0x062a('0x9')]}]},'log':_0x062a('0x1')});};};
\ No newline at end of file
index b46c2ce..1a202c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b8=['../client','create','Request','update','DESC'];(function(_0x2aa323,_0x1c492b){var _0x17fcab=function(_0x261146){while(--_0x261146){_0x2aa323['push'](_0x2aa323['shift']());}};_0x17fcab(++_0x1c492b);}(_0xa4b8,0x104));var _0x8a4b=function(_0x37fb3a,_0x5a14ee){_0x37fb3a=_0x37fb3a-0x0;var _0x1e5c8f=_0xa4b8[_0x37fb3a];return _0x1e5c8f;};'use strict';var client=require(_0x8a4b('0x0'));exports[_0x8a4b('0x1')]=function(_0x258722){return client[_0x8a4b('0x2')]('CreateMailQueueReport',{'body':_0x258722,'log':'CreateMailQueueReport'});};exports[_0x8a4b('0x3')]=function(_0x44fee6,_0x17505f){return client[_0x8a4b('0x2')]('UpdateMailQueueReport',{'body':_0x17505f,'options':{'where':{'uniqueid':_0x44fee6},'order':[['id',_0x8a4b('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x0b66=['create','Request','CreateMailQueueReport','UpdateMailQueueReport','../client'];(function(_0x12d307,_0x20cd9a){var _0x1e7149=function(_0x686f83){while(--_0x686f83){_0x12d307['push'](_0x12d307['shift']());}};_0x1e7149(++_0x20cd9a);}(_0x0b66,0x135));var _0x60b6=function(_0x50fd4a,_0x4951b0){_0x50fd4a=_0x50fd4a-0x0;var _0x31eb81=_0x0b66[_0x50fd4a];return _0x31eb81;};'use strict';var client=require(_0x60b6('0x0'));exports[_0x60b6('0x1')]=function(_0x3b7881){return client[_0x60b6('0x2')]('CreateMailQueueReport',{'body':_0x3b7881,'log':_0x60b6('0x3')});};exports['update']=function(_0x3e351f,_0xf2f8c4){return client[_0x60b6('0x2')](_0x60b6('0x4'),{'body':_0xf2f8c4,'options':{'where':{'uniqueid':_0x3e351f},'order':[['id','DESC']],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index 112085e..93378b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ec5=['addTags','Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0xa79977,_0x4f7f12){var _0x109f10=function(_0x56780f){while(--_0x56780f){_0xa79977['push'](_0xa79977['shift']());}};_0x109f10(++_0x4f7f12);}(_0x6ec5,0x88));var _0x56ec=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6ec5[_0x2dafbe];return _0x58a45a;};'use strict';var client=require(_0x56ec('0x0'));exports[_0x56ec('0x1')]=function(_0x1b2909,_0x1ebea2){return client['Request']('UpdateOpenchannelInteraction',{'body':_0x1ebea2,'options':{'where':{'id':_0x1b2909}},'log':'updateOpenchannelInteraction'});};exports[_0x56ec('0x2')]=function(_0x3ebd9a,_0x2dd735){return client[_0x56ec('0x3')](_0x56ec('0x4'),{'body':_0x2dd735,'options':{'where':{'id':_0x3ebd9a}},'log':_0x56ec('0x5')});};
\ No newline at end of file
+var _0xec4c=['addTagsToChatInteraction','../client','Request','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xec4c,0x1a5));var _0xcec4=function(_0x99868f,_0xbdb8e7){_0x99868f=_0x99868f-0x0;var _0x27a71b=_0xec4c[_0x99868f];return _0x27a71b;};'use strict';var client=require(_0xcec4('0x0'));exports['update']=function(_0x1e393e,_0x116d16){return client[_0xcec4('0x1')]('UpdateOpenchannelInteraction',{'body':_0x116d16,'options':{'where':{'id':_0x1e393e}},'log':_0xcec4('0x2')});};exports[_0xcec4('0x3')]=function(_0x43e525,_0x4d10be){return client['Request'](_0xcec4('0x4'),{'body':_0x4d10be,'options':{'where':{'id':_0x43e525}},'log':_0xcec4('0x5')});};
\ No newline at end of file
index bea0090..4d63fed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30c=['Request','createOpenchannelMessage','../client','create'];(function(_0x5005be,_0x24b8f3){var _0x44d883=function(_0x51ba1f){while(--_0x51ba1f){_0x5005be['push'](_0x5005be['shift']());}};_0x44d883(++_0x24b8f3);}(_0xd30c,0x1ee));var _0xcd30=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xd30c[_0x346737];return _0x1ade2e;};'use strict';var client=require(_0xcd30('0x0'));exports[_0xcd30('0x1')]=function(_0x4d1ded){return client[_0xcd30('0x2')]('CreateOpenchannelMessage',{'body':_0x4d1ded,'log':_0xcd30('0x3')});};
\ No newline at end of file
+var _0xdcbf=['CreateOpenchannelMessage','create','Request'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdcbf,0xeb));var _0xfdcb=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xdcbf[_0xbca1b1];return _0x4e1686;};'use strict';var client=require('../client');exports[_0xfdcb('0x0')]=function(_0x27d01d){return client[_0xfdcb('0x1')](_0xfdcb('0x2'),{'body':_0x27d01d,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index e214296..9f926b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8d3=['online','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','strategy','User'];(function(_0xb99e28,_0x1bbe21){var _0x559673=function(_0x2fd59a){while(--_0x2fd59a){_0xb99e28['push'](_0xb99e28['shift']());}};_0x559673(++_0x1bbe21);}(_0xa8d3,0x121));var _0x3a8d=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xa8d3[_0x618414];return _0x21c19a;};'use strict';var client=require(_0x3a8d('0x0'));exports[_0x3a8d('0x1')]=function(){return function(){return client[_0x3a8d('0x2')](_0x3a8d('0x3'),{'options':{'raw':![],'attributes':['id',_0x3a8d('0x4'),_0x3a8d('0x5'),_0x3a8d('0x6')],'include':[{'model':_0x3a8d('0x7'),'as':'Agents','attributes':['id','name',_0x3a8d('0x8'),'openchannelPause']}]},'log':_0x3a8d('0x1')});};};
\ No newline at end of file
+var _0xd07b=['GetOpenchannelQueue','name','timeout','User','Agents','openchannelPause','../client','getOpenchannelQueues','Request'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xd07b,0xe7));var _0xbd07=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xd07b[_0x2dafbe];return _0x58a45a;};'use strict';var client=require(_0xbd07('0x0'));exports[_0xbd07('0x1')]=function(){return function(){return client[_0xbd07('0x2')](_0xbd07('0x3'),{'options':{'raw':![],'attributes':['id',_0xbd07('0x4'),_0xbd07('0x5'),'strategy'],'include':[{'model':_0xbd07('0x6'),'as':_0xbd07('0x7'),'attributes':['id',_0xbd07('0x4'),'online',_0xbd07('0x8')]}]},'log':_0xbd07('0x1')});};};
\ No newline at end of file
index cba115b..a0615b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d8=['Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xc0d8,0x6e));var _0x8c0d=function(_0x51bcb9,_0x576ba6){_0x51bcb9=_0x51bcb9-0x0;var _0x352178=_0xc0d8[_0x51bcb9];return _0x352178;};'use strict';var client=require(_0x8c0d('0x0'));exports[_0x8c0d('0x1')]=function(_0x36ba0f){return client[_0x8c0d('0x2')]('CreateOpenchannelQueueReport',{'body':_0x36ba0f,'log':_0x8c0d('0x3')});};exports[_0x8c0d('0x4')]=function(_0x4d9e58,_0x4296e3){return client[_0x8c0d('0x2')](_0x8c0d('0x5'),{'body':_0x4296e3,'options':{'where':{'uniqueid':_0x4d9e58},'order':[['id',_0x8c0d('0x6')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0xf7e8=['Request','update','UpdateOpenchannelQueueReport','DESC','../client','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf7e8,0x1f0));var _0x8f7e=function(_0x42126c,_0x26949a){_0x42126c=_0x42126c-0x0;var _0x1097b6=_0xf7e8[_0x42126c];return _0x1097b6;};'use strict';var client=require(_0x8f7e('0x0'));exports[_0x8f7e('0x1')]=function(_0x253bab){return client[_0x8f7e('0x2')]('CreateOpenchannelQueueReport',{'body':_0x253bab,'log':'CreateOpenchannelQueueReport'});};exports[_0x8f7e('0x3')]=function(_0x4ae4cd,_0xf945d9){return client[_0x8f7e('0x2')](_0x8f7e('0x4'),{'body':_0xf945d9,'options':{'where':{'uniqueid':_0x4ae4cd},'order':[['id',_0x8f7e('0x5')]],'limit':0x1},'log':_0x8f7e('0x4')});};
\ No newline at end of file
index 742e49b..080d5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc17=['addTags','addTagsToSmsInteraction','../client','update','Request'];(function(_0x5ad190,_0xd39c9e){var _0x518ed3=function(_0x57f03a){while(--_0x57f03a){_0x5ad190['push'](_0x5ad190['shift']());}};_0x518ed3(++_0xd39c9e);}(_0xbc17,0x1ab));var _0x7bc1=function(_0x25a787,_0x6926e7){_0x25a787=_0x25a787-0x0;var _0x37712a=_0xbc17[_0x25a787];return _0x37712a;};'use strict';var client=require(_0x7bc1('0x0'));exports[_0x7bc1('0x1')]=function(_0x5e8e5a,_0x20ed9b){return client[_0x7bc1('0x2')]('UpdateSmsInteraction',{'body':_0x20ed9b,'options':{'where':{'id':_0x5e8e5a}},'log':'updateSmsInteraction'});};exports[_0x7bc1('0x3')]=function(_0x7aa41e,_0x5dfaa8){return client[_0x7bc1('0x2')]('AddTagsToSmsInteraction',{'body':_0x5dfaa8,'options':{'where':{'id':_0x7aa41e}},'log':_0x7bc1('0x4')});};
\ No newline at end of file
+var _0xe5b3=['AddTagsToSmsInteraction','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x2c071d,_0x23c730){var _0x1893b7=function(_0x23a6eb){while(--_0x23a6eb){_0x2c071d['push'](_0x2c071d['shift']());}};_0x1893b7(++_0x23c730);}(_0xe5b3,0x133));var _0x3e5b=function(_0x4443c2,_0x3edbc3){_0x4443c2=_0x4443c2-0x0;var _0x1909de=_0xe5b3[_0x4443c2];return _0x1909de;};'use strict';var client=require('../client');exports[_0x3e5b('0x0')]=function(_0xba44a0,_0x243fe0){return client[_0x3e5b('0x1')](_0x3e5b('0x2'),{'body':_0x243fe0,'options':{'where':{'id':_0xba44a0}},'log':_0x3e5b('0x3')});};exports[_0x3e5b('0x4')]=function(_0x1e58ed,_0x320b1e){return client[_0x3e5b('0x1')](_0x3e5b('0x5'),{'body':_0x320b1e,'options':{'where':{'id':_0x1e58ed}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index 772dd8a..e791555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44d=['create','Request','CreateSmsMessage','../client'];(function(_0x31cc0e,_0x24ba4c){var _0x144862=function(_0x4d236e){while(--_0x4d236e){_0x31cc0e['push'](_0x31cc0e['shift']());}};_0x144862(++_0x24ba4c);}(_0xb44d,0xcf));var _0xdb44=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb44d[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0xdb44('0x0'));exports[_0xdb44('0x1')]=function(_0x21f2d5){return client[_0xdb44('0x2')](_0xdb44('0x3'),{'body':_0x21f2d5,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x25cc=['createSmsMessage','../client','Request','CreateSmsMessage'];(function(_0x2dcba9,_0x4153af){var _0x5c829a=function(_0x39705e){while(--_0x39705e){_0x2dcba9['push'](_0x2dcba9['shift']());}};_0x5c829a(++_0x4153af);}(_0x25cc,0x1a1));var _0xc25c=function(_0x249faf,_0x42b751){_0x249faf=_0x249faf-0x0;var _0x4f14fc=_0x25cc[_0x249faf];return _0x4f14fc;};'use strict';var client=require(_0xc25c('0x0'));exports['create']=function(_0x192ce3){return client[_0xc25c('0x1')](_0xc25c('0x2'),{'body':_0x192ce3,'log':_0xc25c('0x3')});};
\ No newline at end of file
index 12918d6..d6c0590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x11a1a3,_0x4eaa66){var _0x11c3b6=function(_0x281ae1){while(--_0x281ae1){_0x11a1a3['push'](_0x11a1a3['shift']());}};_0x11c3b6(++_0x4eaa66);}(_0xe706,0xa3));var _0x6e70=function(_0x12e7de,_0x2b96d0){_0x12e7de=_0x12e7de-0x0;var _0x1375bf=_0xe706[_0x12e7de];return _0x1375bf;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
+var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x440bb9,_0x59e655){var _0x1eb984=function(_0x316146){while(--_0x316146){_0x440bb9['push'](_0x440bb9['shift']());}};_0x1eb984(++_0x59e655);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x41ee16,_0xfa94c3){_0x41ee16=_0x41ee16-0x0;var _0x1f60de=_0xcb91[_0x41ee16];return _0x1f60de;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index d326bf3..14dab63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x23599f,_0x48002a){var _0x403940=function(_0x549596){while(--_0x549596){_0x23599f['push'](_0x23599f['shift']());}};_0x403940(++_0x48002a);}(_0x3e74,0x175));var _0x43e7=function(_0xe91fbd,_0x4ce994){_0xe91fbd=_0xe91fbd-0x0;var _0x170a06=_0x3e74[_0xe91fbd];return _0x170a06;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
+var _0x9c44=['Request','CreateSmsQueueReport','update','UpdateSmsQueueReport'];(function(_0x219b16,_0x3c6866){var _0xfb53d4=function(_0x4bb1be){while(--_0x4bb1be){_0x219b16['push'](_0x219b16['shift']());}};_0xfb53d4(++_0x3c6866);}(_0x9c44,0x178));var _0x49c4=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x9c44[_0x1caf6a];return _0x1bf493;};'use strict';var client=require('../client');exports['create']=function(_0x1ffbbf){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'body':_0x1ffbbf,'log':_0x49c4('0x1')});};exports[_0x49c4('0x2')]=function(_0x2ad237,_0x4e0313){return client['Request'](_0x49c4('0x3'),{'body':_0x4e0313,'options':{'where':{'uniqueid':_0x2ad237},'order':[['id','DESC']],'limit':0x1},'log':_0x49c4('0x3')});};
\ No newline at end of file
index 6a52653..e5688cb 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(_0x41f324,_0x29e259){var _0x511c60=function(_0x411a04){while(--_0x411a04){_0x41f324['push'](_0x41f324['shift']());}};_0x511c60(++_0x29e259);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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(_0x1f084b,_0x45592f){var _0x4c5189=function(_0x38e4f8){while(--_0x38e4f8){_0x1f084b['push'](_0x1f084b['shift']());}};_0x4c5189(++_0x45592f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 6bfd9c1..3df767a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4279=['addTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x1bee9b,_0x3cc78e){var _0xe1e9c6=function(_0x258827){while(--_0x258827){_0x1bee9b['push'](_0x1bee9b['shift']());}};_0xe1e9c6(++_0x3cc78e);}(_0x4279,0x8d));var _0x9427=function(_0x3bd156,_0x31de23){_0x3bd156=_0x3bd156-0x0;var _0x47e2f0=_0x4279[_0x3bd156];return _0x47e2f0;};'use strict';var client=require('../client');exports[_0x9427('0x0')]=function(_0x218ae7,_0x594cbc){return client[_0x9427('0x1')](_0x9427('0x2'),{'body':_0x594cbc,'options':{'where':{'id':_0x218ae7}},'log':_0x9427('0x3')});};exports[_0x9427('0x4')]=function(_0x54cdfb,_0x426911){return client['Request'](_0x9427('0x5'),{'body':_0x426911,'options':{'where':{'id':_0x54cdfb}},'log':_0x9427('0x6')});};
\ No newline at end of file
+var _0xb0df=['update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction'];(function(_0x59899a,_0x3c019f){var _0x23a0f2=function(_0x3ddcbf){while(--_0x3ddcbf){_0x59899a['push'](_0x59899a['shift']());}};_0x23a0f2(++_0x3c019f);}(_0xb0df,0x85));var _0xfb0d=function(_0x249d99,_0x16b584){_0x249d99=_0x249d99-0x0;var _0x5bfb05=_0xb0df[_0x249d99];return _0x5bfb05;};'use strict';var client=require('../client');exports[_0xfb0d('0x0')]=function(_0x24ab11,_0x392e80){return client[_0xfb0d('0x1')](_0xfb0d('0x2'),{'body':_0x392e80,'options':{'where':{'id':_0x24ab11}},'log':_0xfb0d('0x3')});};exports[_0xfb0d('0x4')]=function(_0x823ea6,_0x3348e0){return client['Request'](_0xfb0d('0x5'),{'body':_0x3348e0,'options':{'where':{'id':_0x823ea6}},'log':_0xfb0d('0x6')});};
\ No newline at end of file
index aca8b82..4116880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x735d=['createWhatsappMessage'];(function(_0x4c8454,_0x3f0e7a){var _0x1b0cb2=function(_0x217513){while(--_0x217513){_0x4c8454['push'](_0x4c8454['shift']());}};_0x1b0cb2(++_0x3f0e7a);}(_0x735d,0x12d));var _0xd735=function(_0x4a82ac,_0x1fb931){_0x4a82ac=_0x4a82ac-0x0;var _0x58ee97=_0x735d[_0x4a82ac];return _0x58ee97;};'use strict';var client=require('../client');exports['create']=function(_0x36a33a){return client['Request']('CreateWhatsappMessage',{'body':_0x36a33a,'log':_0xd735('0x0')});};
\ No newline at end of file
+var _0x7977=['Request','CreateWhatsappMessage','createWhatsappMessage','../client','create'];(function(_0x21ad9f,_0x41ddfc){var _0x2c8c83=function(_0x118bd8){while(--_0x118bd8){_0x21ad9f['push'](_0x21ad9f['shift']());}};_0x2c8c83(++_0x41ddfc);}(_0x7977,0x1b1));var _0x7797=function(_0x14ed4e,_0x3dcf54){_0x14ed4e=_0x14ed4e-0x0;var _0x5c3d8a=_0x7977[_0x14ed4e];return _0x5c3d8a;};'use strict';var client=require(_0x7797('0x0'));exports[_0x7797('0x1')]=function(_0x524cbd){return client[_0x7797('0x2')](_0x7797('0x3'),{'body':_0x524cbd,'log':_0x7797('0x4')});};
\ No newline at end of file
index 5d21cc4..fa4f05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71d5=['User','Agents','online','whatsappPause','getWhatsappQueues','../client','GetWhatsappQueue','name','strategy'];(function(_0x543cc,_0x2d3555){var _0x173c0a=function(_0x47f726){while(--_0x47f726){_0x543cc['push'](_0x543cc['shift']());}};_0x173c0a(++_0x2d3555);}(_0x71d5,0x11c));var _0x571d=function(_0x3eb713,_0x437874){_0x3eb713=_0x3eb713-0x0;var _0x1d7128=_0x71d5[_0x3eb713];return _0x1d7128;};'use strict';var client=require(_0x571d('0x0'));exports['getWhatsappQueues']=function(){return function(){return client['Request'](_0x571d('0x1'),{'options':{'raw':![],'attributes':['id',_0x571d('0x2'),'timeout',_0x571d('0x3')],'include':[{'model':_0x571d('0x4'),'as':_0x571d('0x5'),'attributes':['id',_0x571d('0x2'),_0x571d('0x6'),_0x571d('0x7')]}]},'log':_0x571d('0x8')});};};
\ No newline at end of file
+var _0x74a6=['online','whatsappPause','../client','Request','name','strategy','Agents'];(function(_0x21b706,_0x1022f4){var _0x13b94a=function(_0x3116da){while(--_0x3116da){_0x21b706['push'](_0x21b706['shift']());}};_0x13b94a(++_0x1022f4);}(_0x74a6,0x17c));var _0x674a=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x74a6[_0x6cf19c];return _0xce14f3;};'use strict';var client=require(_0x674a('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0x674a('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x674a('0x2'),'timeout',_0x674a('0x3')],'include':[{'model':'User','as':_0x674a('0x4'),'attributes':['id','name',_0x674a('0x5'),_0x674a('0x6')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index a789a1a..5e66e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe076=['../client','create','CreateWhatsappQueueReport','Request','DESC'];(function(_0xa90e43,_0x5cf6d7){var _0x981284=function(_0x5964bc){while(--_0x5964bc){_0xa90e43['push'](_0xa90e43['shift']());}};_0x981284(++_0x5cf6d7);}(_0xe076,0x13b));var _0x6e07=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xe076[_0x3b5250];return _0xc844a1;};'use strict';var client=require(_0x6e07('0x0'));exports[_0x6e07('0x1')]=function(_0x264d07){return client['Request'](_0x6e07('0x2'),{'body':_0x264d07,'log':_0x6e07('0x2')});};exports['update']=function(_0x45a178,_0x229044){return client[_0x6e07('0x3')]('UpdateWhatsappQueueReport',{'body':_0x229044,'options':{'where':{'uniqueid':_0x45a178},'order':[['id',_0x6e07('0x4')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0xad91=['DESC','../client','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport'];(function(_0x52e224,_0xdf0622){var _0x2aacfd=function(_0xe7f616){while(--_0xe7f616){_0x52e224['push'](_0x52e224['shift']());}};_0x2aacfd(++_0xdf0622);}(_0xad91,0x135));var _0x1ad9=function(_0x578275,_0xe7ae46){_0x578275=_0x578275-0x0;var _0xf78041=_0xad91[_0x578275];return _0xf78041;};'use strict';var client=require(_0x1ad9('0x0'));exports[_0x1ad9('0x1')]=function(_0x1c06a4){return client[_0x1ad9('0x2')](_0x1ad9('0x3'),{'body':_0x1c06a4,'log':_0x1ad9('0x3')});};exports[_0x1ad9('0x4')]=function(_0x37cec1,_0x5d4609){return client[_0x1ad9('0x2')](_0x1ad9('0x5'),{'body':_0x5d4609,'options':{'where':{'uniqueid':_0x37cec1},'order':[['id',_0x1ad9('0x6')]],'limit':0x1},'log':_0x1ad9('0x5')});};
\ No newline at end of file
index ba6e6c2..ec30dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5021=['agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','routing','./strategy','string','number','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','message','join','stop','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','[%s][AGENT]\x20ROUTING\x20END','close','next'];(function(_0x36f47c,_0x38ef4d){var _0x296c55=function(_0x403eec){while(--_0x403eec){_0x36f47c['push'](_0x36f47c['shift']());}};_0x296c55(++_0x38ef4d);}(_0x5021,0xfa));var _0x1502=function(_0x2b6971,_0x32af8b){_0x2b6971=_0x2b6971-0x0;var _0x4684ec=_0x5021[_0x2b6971];return _0x4684ec;};'use strict';var schema=require(_0x1502('0x0'));var _=require(_0x1502('0x1'));var util=require('util');var seqqueue=require(_0x1502('0x2'));var logger=require('../../../../config/logger')(_0x1502('0x3'));var strategy=require(_0x1502('0x4'));var queue=schema({'name':{'type':_0x1502('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x1502('0x6'),'message':_0x1502('0x7')}});function writeLog(_0x5a2714,_0x3bd7e2,_0x46aed7){return logger[_0x1502('0x8')](util[_0x1502('0x9')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x5a2714,_0x3bd7e2[_0x1502('0xa')],_0x46aed7));}function handleFindAgent(_0x3f1dd0){return function(_0x52c286){return _0x52c286[_0x1502('0xa')]['toLowerCase']()===_0x3f1dd0[_0x1502('0xb')]();};}exports[_0x1502('0xc')]=function(_0x341c81,_0x241860,_0x5d4e32,_0x52ba01){return function(_0x1274f0){try{var _0x10a71c={'name':_0x241860[0x0],'timeout':_0x241860[0x1]};var _0x464cd6=queue[_0x1502('0x0')](_0x10a71c,{'typecast':!![]});if(_0x464cd6['length']){logger[_0x1502('0xd')](_0x1502('0xe'),_0x341c81,_['map'](_0x464cd6,_0x1502('0xf'))[_0x1502('0x10')](',\x20'));_0x1274f0[_0x1502('0x11')]();}else{var _0x199007=_['find'](_0x5d4e32[_0x1502('0x12')],handleFindAgent(_0x10a71c['name']));if(_0x199007){var _0x45e2f6=(_0x10a71c[_0x1502('0x13')]||0xa)*0x3e8;var _0x506e57,_0x1ae97a;var _0x2cc1a2=seqqueue[_0x1502('0x14')](_0x45e2f6);_0x2cc1a2['id']=_0x341c81;_0x2cc1a2[_0x1502('0x15')]=_0x45e2f6;_0x2cc1a2[_0x1502('0x16')]=_0x52ba01['channel'];writeLog(_0x341c81,_0x199007,util['format'](_0x1502('0x17'),_0x45e2f6));_0x5d4e32[_0x1502('0x18')][_0x341c81]['on'](_0x1502('0x19'),function(){logger['info'](_0x1502('0x1a'),_0x341c81);clearTimeout(_0x1ae97a);_0x1ae97a=undefined;_0x2cc1a2['close']();if(_0x5d4e32[_0x1502('0x18')][_0x341c81]){delete _0x5d4e32[_0x1502('0x18')][_0x341c81];}_0x1274f0[_0x1502('0x11')]();});_0x5d4e32[_0x1502('0x18')][_0x341c81]['on']('complete',function(){if(_0x5d4e32['rules'][_0x341c81]){delete _0x5d4e32['rules'][_0x341c81];}});_0x1ae97a=setTimeout(function(){logger[_0x1502('0x8')](_0x1502('0x1b'),_0x341c81);clearTimeout(_0x1ae97a);_0x2cc1a2[_0x1502('0x1c')]();_0x1274f0[_0x1502('0x1d')]();},_0x45e2f6);strategy[_0x1502('0x1e')](_0x2cc1a2,_0x199007,_0x5d4e32,_0x52ba01);}else{logger[_0x1502('0xd')](_0x1502('0x1f'),_0x341c81,_0x10a71c[_0x1502('0xa')]);_0x1274f0[_0x1502('0x11')]();}}}catch(_0x5e52ee){console[_0x1502('0x20')](_0x5e52ee);logger[_0x1502('0xd')](_0x1502('0x21'),_0x341c81,_0x5e52ee[_0x1502('0x22')]);_0x1274f0[_0x1502('0x11')]();}};};
\ No newline at end of file
+var _0x65ac=['rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','[%s][AGENT]\x20%s','map','message','join','stop','find','timeout','atimeout','channel'];(function(_0x110b96,_0x4fd0c0){var _0x4456e4=function(_0x5617b0){while(--_0x5617b0){_0x110b96['push'](_0x110b96['shift']());}};_0x4456e4(++_0x4fd0c0);}(_0x65ac,0x82));var _0xc65a=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0x65ac[_0x1eda20];return _0x31b953;};'use strict';var schema=require(_0xc65a('0x0'));var _=require(_0xc65a('0x1'));var util=require(_0xc65a('0x2'));var seqqueue=require(_0xc65a('0x3'));var logger=require(_0xc65a('0x4'))('routing');var strategy=require(_0xc65a('0x5'));var queue=schema({'name':{'type':_0xc65a('0x6'),'required':!![],'message':_0xc65a('0x7')},'timeout':{'type':_0xc65a('0x8'),'message':_0xc65a('0x9')}});function writeLog(_0x7d63a8,_0x58c5e7,_0x5ca260){return logger[_0xc65a('0xa')](util[_0xc65a('0xb')](_0xc65a('0xc'),_0x7d63a8,_0x58c5e7[_0xc65a('0xd')],_0x5ca260));}function handleFindAgent(_0x1f7d15){return function(_0x5b2da7){return _0x5b2da7['name']['toLowerCase']()===_0x1f7d15[_0xc65a('0xe')]();};}exports[_0xc65a('0xf')]=function(_0x233fcb,_0x3949ee,_0x239757,_0x11e5c2){return function(_0x79ec5e){try{var _0x26fc02={'name':_0x3949ee[0x0],'timeout':_0x3949ee[0x1]};var _0x53623d=queue[_0xc65a('0x0')](_0x26fc02,{'typecast':!![]});if(_0x53623d[_0xc65a('0x10')]){logger['error'](_0xc65a('0x11'),_0x233fcb,_[_0xc65a('0x12')](_0x53623d,_0xc65a('0x13'))[_0xc65a('0x14')](',\x20'));_0x79ec5e[_0xc65a('0x15')]();}else{var _0x401600=_[_0xc65a('0x16')](_0x239757['agents'],handleFindAgent(_0x26fc02[_0xc65a('0xd')]));if(_0x401600){var _0x4acace=(_0x26fc02[_0xc65a('0x17')]||0xa)*0x3e8;var _0x252e09,_0x296cad;var _0xd94b13=seqqueue['createQueue'](_0x4acace);_0xd94b13['id']=_0x233fcb;_0xd94b13[_0xc65a('0x18')]=_0x4acace;_0xd94b13['channel']=_0x11e5c2[_0xc65a('0x19')];writeLog(_0x233fcb,_0x401600,util[_0xc65a('0xb')]('START:%s',_0x4acace));_0x239757[_0xc65a('0x1a')][_0x233fcb]['on'](_0xc65a('0x1b'),function(){logger['info'](_0xc65a('0x1c'),_0x233fcb);clearTimeout(_0x296cad);_0x296cad=undefined;_0xd94b13[_0xc65a('0x1d')]();if(_0x239757[_0xc65a('0x1a')][_0x233fcb]){delete _0x239757[_0xc65a('0x1a')][_0x233fcb];}_0x79ec5e[_0xc65a('0x15')]();});_0x239757[_0xc65a('0x1a')][_0x233fcb]['on'](_0xc65a('0x1e'),function(){if(_0x239757[_0xc65a('0x1a')][_0x233fcb]){delete _0x239757['rules'][_0x233fcb];}});_0x296cad=setTimeout(function(){logger[_0xc65a('0xa')](_0xc65a('0x1f'),_0x233fcb);clearTimeout(_0x296cad);_0xd94b13[_0xc65a('0x1d')]();_0x79ec5e[_0xc65a('0x20')]();},_0x4acace);strategy[_0xc65a('0x21')](_0xd94b13,_0x401600,_0x239757,_0x11e5c2);}else{logger[_0xc65a('0x22')](_0xc65a('0x23'),_0x233fcb,_0x26fc02[_0xc65a('0xd')]);_0x79ec5e[_0xc65a('0x15')]();}}}catch(_0x2a7279){console[_0xc65a('0x24')](_0x2a7279);logger[_0xc65a('0x22')](_0xc65a('0x25'),_0x233fcb,_0x2a7279[_0xc65a('0x26')]);_0x79ec5e[_0xc65a('0x15')]();}};};
\ No newline at end of file
index 064da26..e893349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb237=['message','toString','providerName','providerResponse','stringify','dialogState','Failed','next','lodash','moment','aws-sdk','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','out','sms','whatsapp','phone','channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','Message','create','catch','error','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime'];(function(_0x5075c8,_0x1dc10c){var _0x5f29ae=function(_0x52a241){while(--_0x52a241){_0x5075c8['push'](_0x5075c8['shift']());}};_0x5f29ae(++_0x1dc10c);}(_0xb237,0x194));var _0x7b23=function(_0x2d6263,_0x1845ab){_0x2d6263=_0x2d6263-0x0;var _0x544e9a=_0xb237[_0x2d6263];return _0x544e9a;};'use strict';var _=require(_0x7b23('0x0'));var moment=require(_0x7b23('0x1'));var AWS=require(_0x7b23('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x7b23('0x3')),'openchannelMessage':require(_0x7b23('0x4')),'mailMessage':require(_0x7b23('0x5')),'smsMessage':require(_0x7b23('0x6')),'faxMessage':require(_0x7b23('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x7b23('0x8')]=function(_0x4f254a,_0x1e1825){return function(_0x599f77){try{if(!_['isNil'](this[_0x7b23('0x9')]['UserId'])){logger[_0x7b23('0xa')](_0x7b23('0xb'),_0x4f254a,_0x7b23('0xc'));return _0x599f77['next']();}var _0x2c24a5={'ContactId':this[_0x7b23('0xd')]['id'],'sentAt':moment()[_0x7b23('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x7b23('0xf')};if(this['channel']===_0x7b23('0x10')||this['channel']===_0x7b23('0x11')){_0x2c24a5[_0x7b23('0x12')]=this[_0x7b23('0x9')][_0x7b23('0x12')];}var _0x2735d4=this[_0x7b23('0x13')];if(_0x2735d4==='chat'){_0x2c24a5[_0x7b23('0x14')]=this[_0x7b23('0x15')]['id'];}else{_0x2c24a5[_[_0x7b23('0x16')](_0x2735d4)+_0x7b23('0x17')]=this[_0x7b23('0x15')]['id'];}_0x2c24a5[_['upperFirst'](_0x2735d4)+_0x7b23('0x18')]=this[_0x7b23('0x9')]['id'];if(this[_0x7b23('0x9')]['created']){var _0x46e7d2=_0x1e1825[0x4];if(!_[_0x7b23('0x19')](_0x46e7d2)){_0x2c24a5[_0x7b23('0x1a')]=utils['getMustacheRender'](_0x46e7d2,this);return rpc[_0x2735d4+_0x7b23('0x1b')][_0x7b23('0x1c')](_0x2c24a5)['then'](function(_0x2215da){logger[_0x7b23('0xa')](_0x7b23('0xb'),_0x4f254a,_0x2c24a5[_0x7b23('0x1a')]);})[_0x7b23('0x1d')](function(_0x1f788c){logger[_0x7b23('0x1e')](_0x7b23('0xb'),_0x4f254a,JSON['stringify'](_0x1f788c));})[_0x7b23('0x1f')](function(){logger[_0x7b23('0xa')](_0x7b23('0x20'),_0x4f254a);_0x599f77[_0x7b23('0x21')]();});}else{logger[_0x7b23('0xa')](_0x7b23('0x22'),_0x4f254a);_0x599f77[_0x7b23('0x21')]();}}else{var _0x8e324=this;var _0x1dee1b=new AWS[(_0x7b23('0x23'))]({'accessKeyId':_0x1e1825[0x0],'secretAccessKey':_0x1e1825[0x1],'region':_0x1e1825[0x2]});var _0x273dc4={'botAlias':'$LATEST','botName':_0x1e1825[0x3],'inputText':this[_0x7b23('0x24')][_0x7b23('0x1a')],'userId':this[_0x7b23('0x13')]+':'+this['interaction']['id'][_0x7b23('0x25')]()};_0x1dee1b['postText'](_0x273dc4,function(_0x15bfc0,_0x27997e){if(_0x15bfc0){logger[_0x7b23('0x1e')]('[%s][AMAZONLEX]\x20%s',_0x4f254a,_0x15bfc0[_0x7b23('0x24')]);_0x599f77['next']();}else if(_0x27997e&&_0x27997e[_0x7b23('0x24')]){_0x8e324[_0x7b23('0x1a')]['amazonlex']=_0x27997e;_0x2c24a5['body']=_0x27997e[_0x7b23('0x24')];_0x2c24a5[_0x7b23('0x26')]='amazonlex';_0x2c24a5[_0x7b23('0x27')]=JSON[_0x7b23('0x28')](_0x27997e);return rpc[_0x2735d4+'Message'][_0x7b23('0x1c')](_0x2c24a5)['then'](function(_0x5219f5){logger[_0x7b23('0xa')](_0x7b23('0xb'),_0x4f254a,_0x2c24a5[_0x7b23('0x1a')]);if(_0x27997e[_0x7b23('0x29')]==_0x7b23('0x2a')){_0x599f77[_0x7b23('0x2b')]();}else{_0x599f77[_0x7b23('0x21')]();}})[_0x7b23('0x1d')](function(_0x1a3b68){logger[_0x7b23('0x1e')](_0x7b23('0xb'),_0x4f254a,JSON[_0x7b23('0x28')](_0x1a3b68));_0x599f77[_0x7b23('0x2b')]();});}else{_0x599f77['next']();}});}}catch(_0x1a5da6){logger['error']('[%s][AMAZONLEX]\x20%s',_0x4f254a,JSON[_0x7b23('0x28')](_0x1a5da6));_0x599f77[_0x7b23('0x21')]();}};};
\ No newline at end of file
+var _0xdbe2=['created','isEmpty','body','getMustacheRender','then','[%s][AMAZONLEX]\x20%s','catch','error','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','stringify','create','dialogState','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','chat','account','upperFirst','AccountId','InteractionId'];(function(_0x319cb9,_0x4b8d35){var _0x1735fc=function(_0x43b061){while(--_0x43b061){_0x319cb9['push'](_0x319cb9['shift']());}};_0x1735fc(++_0x4b8d35);}(_0xdbe2,0x79));var _0x2dbe=function(_0x414815,_0x3b9381){_0x414815=_0x414815-0x0;var _0x143e0d=_0xdbe2[_0x414815];return _0x143e0d;};'use strict';var _=require(_0x2dbe('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require(_0x2dbe('0x1'));var logger=require(_0x2dbe('0x2'))(_0x2dbe('0x3'));var rpc={'chatMessage':require(_0x2dbe('0x4')),'openchannelMessage':require(_0x2dbe('0x5')),'mailMessage':require(_0x2dbe('0x6')),'smsMessage':require(_0x2dbe('0x7')),'faxMessage':require(_0x2dbe('0x8')),'whatsappMessage':require(_0x2dbe('0x9'))};exports[_0x2dbe('0xa')]=function(_0x348245,_0x3bcf34){return function(_0x3a7188){try{if(!_[_0x2dbe('0xb')](this[_0x2dbe('0xc')]['UserId'])){logger[_0x2dbe('0xd')]('[%s][AMAZONLEX]\x20%s',_0x348245,_0x2dbe('0xe'));return _0x3a7188[_0x2dbe('0xf')]();}var _0x36b6e5={'ContactId':this[_0x2dbe('0x10')]['id'],'sentAt':moment()[_0x2dbe('0x11')](_0x2dbe('0x12')),'direction':'out'};if(this[_0x2dbe('0x13')]===_0x2dbe('0x14')||this[_0x2dbe('0x13')]==='whatsapp'){_0x36b6e5['phone']=this[_0x2dbe('0xc')]['phone'];}var _0x42e0cc=this[_0x2dbe('0x13')];if(_0x42e0cc===_0x2dbe('0x15')){_0x36b6e5['ChatWebsiteId']=this[_0x2dbe('0x16')]['id'];}else{_0x36b6e5[_[_0x2dbe('0x17')](_0x42e0cc)+_0x2dbe('0x18')]=this[_0x2dbe('0x16')]['id'];}_0x36b6e5[_[_0x2dbe('0x17')](_0x42e0cc)+_0x2dbe('0x19')]=this[_0x2dbe('0xc')]['id'];if(this['interaction'][_0x2dbe('0x1a')]){var _0x566ed2=_0x3bcf34[0x4];if(!_[_0x2dbe('0x1b')](_0x566ed2)){_0x36b6e5[_0x2dbe('0x1c')]=utils[_0x2dbe('0x1d')](_0x566ed2,this);return rpc[_0x42e0cc+'Message']['create'](_0x36b6e5)[_0x2dbe('0x1e')](function(_0x9262b0){logger[_0x2dbe('0xd')](_0x2dbe('0x1f'),_0x348245,_0x36b6e5[_0x2dbe('0x1c')]);})[_0x2dbe('0x20')](function(_0xcb6304){logger[_0x2dbe('0x21')](_0x2dbe('0x1f'),_0x348245,JSON['stringify'](_0xcb6304));})[_0x2dbe('0x22')](function(){logger[_0x2dbe('0xd')](_0x2dbe('0x23'),_0x348245);_0x3a7188['stop']();});}else{logger['info'](_0x2dbe('0x24'),_0x348245);_0x3a7188[_0x2dbe('0x25')]();}}else{var _0x58a1b2=this;var _0x4315fb=new AWS[(_0x2dbe('0x26'))]({'accessKeyId':_0x3bcf34[0x0],'secretAccessKey':_0x3bcf34[0x1],'region':_0x3bcf34[0x2]});var _0x137234={'botAlias':_0x2dbe('0x27'),'botName':_0x3bcf34[0x3],'inputText':this[_0x2dbe('0x28')][_0x2dbe('0x1c')],'userId':this[_0x2dbe('0x13')]+':'+this[_0x2dbe('0xc')]['id'][_0x2dbe('0x29')]()};_0x4315fb[_0x2dbe('0x2a')](_0x137234,function(_0x3b2b3c,_0x120790){if(_0x3b2b3c){logger[_0x2dbe('0x21')](_0x2dbe('0x1f'),_0x348245,_0x3b2b3c[_0x2dbe('0x28')]);_0x3a7188['next']();}else if(_0x120790&&_0x120790[_0x2dbe('0x28')]){_0x58a1b2[_0x2dbe('0x1c')][_0x2dbe('0x2b')]=_0x120790;_0x36b6e5[_0x2dbe('0x1c')]=_0x120790['message'];_0x36b6e5[_0x2dbe('0x2c')]=_0x2dbe('0x2b');_0x36b6e5[_0x2dbe('0x2d')]=JSON[_0x2dbe('0x2e')](_0x120790);return rpc[_0x42e0cc+'Message'][_0x2dbe('0x2f')](_0x36b6e5)[_0x2dbe('0x1e')](function(_0x515607){logger[_0x2dbe('0xd')](_0x2dbe('0x1f'),_0x348245,_0x36b6e5[_0x2dbe('0x1c')]);if(_0x120790[_0x2dbe('0x30')]=='Failed'){_0x3a7188[_0x2dbe('0xf')]();}else{_0x3a7188[_0x2dbe('0x25')]();}})[_0x2dbe('0x20')](function(_0x1ff56d){logger[_0x2dbe('0x21')](_0x2dbe('0x1f'),_0x348245,JSON[_0x2dbe('0x2e')](_0x1ff56d));_0x3a7188[_0x2dbe('0xf')]();});}else{_0x3a7188[_0x2dbe('0xf')]();}});}}catch(_0x551ac4){logger[_0x2dbe('0x21')]('[%s][AMAZONLEX]\x20%s',_0x348245,JSON[_0x2dbe('0x2e')](_0x551ac4));_0x3a7188['stop']();}};};
\ No newline at end of file
index ff3d64f..dbccdec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19ba=['getMustacheRender','message','from','phone','subject','Re:','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','user','inReplyTo','<div\x20id=\x22xm-mail-content\x22>','<div','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','then','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','mail','body','isAutoreply','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','info','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel'];(function(_0x18b3dc,_0x40ffe8){var _0x4b53fe=function(_0x3d7973){while(--_0x3d7973){_0x18b3dc['push'](_0x18b3dc['shift']());}};_0x4b53fe(++_0x40ffe8);}(_0x19ba,0x1d2));var _0xa19b=function(_0x5bc69d,_0x25137d){_0x5bc69d=_0x5bc69d-0x0;var _0x154d9c=_0x19ba[_0x5bc69d];return _0x154d9c;};'use strict';var _=require('lodash');var moment=require(_0xa19b('0x0'));var utils=require(_0xa19b('0x1'));var logger=require('../../../../config/logger')(_0xa19b('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xa19b('0x3')),'mailMessage':require(_0xa19b('0x4')),'smsMessage':require(_0xa19b('0x5')),'faxMessage':require(_0xa19b('0x6')),'whatsappMessage':require(_0xa19b('0x7')),'chatInteraction':require(_0xa19b('0x8')),'openchannelInteraction':require(_0xa19b('0x9')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xa19b('0xa')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xa19b('0xb'))};var mailRpc=require(_0xa19b('0xc'));exports['consequence']=function(_0xa52456,_0x348535,_0x52d5aa,_0x2dda25){return function(_0xa56911){try{var _0x198288=this['channel'];if(_0x198288===_0xa19b('0xd')&&_0x2dda25[_0xa19b('0xe')][_0xa19b('0xf')]){logger['info'](_0xa19b('0x10'),_0xa52456,_0xa19b('0x11'));return _0xa56911[_0xa19b('0x12')]();}if(_0x348535[0x0]==='1'&&(_[_0xa19b('0x13')](this[_0xa19b('0x14')][_0xa19b('0x15')])||!this[_0xa19b('0x14')]['created'])){logger[_0xa19b('0x16')](_0xa19b('0x10'),_0xa52456,_0xa19b('0x17'));return _0xa56911[_0xa19b('0x12')]();}if(_0x348535[0x0]==='2'&&this['interaction'][_0xa19b('0x18')]){logger[_0xa19b('0x16')](_0xa19b('0x19'),_0xa52456,'One\x20Time\x20already\x20sent');return _0xa56911[_0xa19b('0x12')]();}var _0x10badb={'ContactId':this[_0xa19b('0x1a')]['id'],'sentAt':moment()[_0xa19b('0x1b')](_0xa19b('0x1c')),'direction':_0xa19b('0x1d')};if(this[_0xa19b('0x1e')]==='mail'){_0x10badb[_0xa19b('0xe')]=utils[_0xa19b('0x1f')](_0x348535[0x2],this);}else{_0x10badb[_0xa19b('0xe')]=utils['getMustacheRender'](_0x348535[0x1],this);}if(this[_0xa19b('0x20')]){_0x10badb['to']=this[_0xa19b('0x20')][_0xa19b('0x21')]||'';if(this[_0xa19b('0x1e')]==='mail'&&_0x348535[0x1]==='1'){_0x10badb['cc']=this[_0xa19b('0x20')]['cc']||'';}_0x10badb[_0xa19b('0x21')]=this[_0xa19b('0x20')]['to']||'';_0x10badb[_0xa19b('0x22')]=this[_0xa19b('0x20')][_0xa19b('0x22')]||'';_0x10badb['read']=!![];if(this[_0xa19b('0x20')][_0xa19b('0x23')]){_0x10badb[_0xa19b('0x23')]='';_0x10badb['subject']+=_['startsWith'](this[_0xa19b('0x20')][_0xa19b('0x23')],_0xa19b('0x24'))?'':'Re:\x20';_0x10badb[_0xa19b('0x23')]+=this[_0xa19b('0x20')][_0xa19b('0x23')];}}if(this['channel']==='chat'){_0x10badb[_0xa19b('0x25')]=this[_0xa19b('0x26')]['id'];}else{_0x10badb[_[_0xa19b('0x27')](this['channel'])+_0xa19b('0x28')]=this[_0xa19b('0x26')]['id'];}_0x10badb[_[_0xa19b('0x27')](this[_0xa19b('0x1e')])+_0xa19b('0x29')]=this[_0xa19b('0x14')]['id'];var _0x7d78e1=this['interaction'];if(rpc[this[_0xa19b('0x1e')]+_0xa19b('0x2a')]){if(this[_0xa19b('0x1e')]===_0xa19b('0xd')){var _0x1cecf5={'tls':{'rejectUnauthorized':![]}};if(this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x2c')]){_0x1cecf5[_0xa19b('0x2c')]=this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x2c')];}else{_0x1cecf5[_0xa19b('0x2d')]=this['account'][_0xa19b('0x2b')][_0xa19b('0x2d')];_0x1cecf5[_0xa19b('0x2e')]=this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x2e')];_0x1cecf5[_0xa19b('0x2f')]=this['account'][_0xa19b('0x2b')][_0xa19b('0x2f')];}if(this[_0xa19b('0x26')]['Smtp'][_0xa19b('0x30')]){_0x1cecf5[_0xa19b('0x31')]={'user':this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x32')],'pass':this[_0xa19b('0x26')]['Smtp']['pass']};}_0x10badb[_0xa19b('0x33')]=this[_0xa19b('0x20')]['messageId'];_0x10badb['html']=_0xa19b('0x34')+_['replace'](_0x10badb[_0xa19b('0xe')],'<div\x20id=\x22xm-mail-content\x22',_0xa19b('0x35'))+'</div>';_0x10badb['headers']={'Auto-Submitted':_0xa19b('0x36'),'X-Auto-Response-Suppress':_0xa19b('0x37'),'Precedence':_0xa19b('0x38')};return mailRpc[_0xa19b('0x39')](_0x1cecf5,_0x10badb)['then'](function(_0x1d1480){logger['info'](_0xa19b('0x3a'),_0xa52456);_0x10badb['messageId']=_0x1d1480[_0xa19b('0x20')][_0xa19b('0x3b')];return rpc[_0x198288+_0xa19b('0x2a')][_0xa19b('0x3c')](_0x10badb);})[_0xa19b('0x3d')](function(_0x3a07e7){logger[_0xa19b('0x16')]('[%s][AUTOREPLY]\x20%s',_0xa52456,JSON[_0xa19b('0x3e')](_0x3a07e7));})[_0xa19b('0x3f')](function(_0x49e3d5){logger['error'](_0xa19b('0x40'),_0xa52456,JSON[_0xa19b('0x3e')](_0x49e3d5));})[_0xa19b('0x41')](function(){Promise['resolve']()['then'](function(){if(_0x348535[0x0]!=='2'||_0x7d78e1[_0xa19b('0x18')])return;return rpc[_0x198288+_0xa19b('0x42')][_0xa19b('0x43')](_0x7d78e1['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3d6951){logger[_0xa19b('0x16')](_0xa19b('0x19'),_0xa52456,JSON[_0xa19b('0x3e')](_0x3d6951));})['catch'](function(_0x2d1570){logger[_0xa19b('0x44')](_0xa19b('0x45'),_0xa52456,JSON[_0xa19b('0x3e')](_0x2d1570));});})[_0xa19b('0x3d')](function(){_0xa56911[_0xa19b('0x12')]();});});}else{return rpc[this['channel']+'Message']['create'](_0x10badb)[_0xa19b('0x3d')](function(_0x16ad9a){logger[_0xa19b('0x16')](_0xa19b('0x10'),_0xa52456,_0x10badb[_0xa19b('0xe')]);})[_0xa19b('0x3f')](function(_0x4a0740){logger[_0xa19b('0x44')](_0xa19b('0x10'),_0xa52456,JSON[_0xa19b('0x3e')](_0x4a0740));})[_0xa19b('0x41')](function(){Promise['resolve']()[_0xa19b('0x3d')](function(){if(_0x348535[0x0]!=='2'||_0x7d78e1[_0xa19b('0x18')])return;return rpc[_0x198288+_0xa19b('0x42')][_0xa19b('0x43')](_0x7d78e1['id'],{'autoreplyExecuted':!![]})[_0xa19b('0x3d')](function(_0x490c4f){logger[_0xa19b('0x16')](_0xa19b('0x19'),_0xa52456,JSON[_0xa19b('0x3e')](_0x490c4f));})[_0xa19b('0x3f')](function(_0x53d3f2){logger[_0xa19b('0x44')](_0xa19b('0x45'),_0xa52456,JSON['stringify'](_0x53d3f2));});})[_0xa19b('0x3d')](function(){_0xa56911[_0xa19b('0x12')]();});});}}}catch(_0x4905bf){logger[_0xa19b('0x44')](_0xa19b('0x10'),_0xa52456,JSON[_0xa19b('0x3e')](_0x4905bf));_0xa56911[_0xa19b('0x46')]();}};};
\ No newline at end of file
+var _0xeadb=['mail','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','body','getMustacheRender','message','phone','read','subject','Re:','Re:\x20','ChatWebsiteId','account','upperFirst','InteractionId','Message','Smtp','service','host','port','secure','authentication','inReplyTo','messageId','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','resolve','stop','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel'];(function(_0x24ffaf,_0x2c40e2){var _0x185e36=function(_0x4647e9){while(--_0x4647e9){_0x24ffaf['push'](_0x24ffaf['shift']());}};_0x185e36(++_0x2c40e2);}(_0xeadb,0xcc));var _0xbead=function(_0x218c5a,_0x151af0){_0x218c5a=_0x218c5a-0x0;var _0x446af0=_0xeadb[_0x218c5a];return _0x446af0;};'use strict';var _=require('lodash');var moment=require(_0xbead('0x0'));var utils=require(_0xbead('0x1'));var logger=require(_0xbead('0x2'))('routing');var rpc={'chatMessage':require(_0xbead('0x3')),'openchannelMessage':require(_0xbead('0x4')),'mailMessage':require(_0xbead('0x5')),'smsMessage':require(_0xbead('0x6')),'faxMessage':require(_0xbead('0x7')),'whatsappMessage':require(_0xbead('0x8')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xbead('0x9')),'smsInteraction':require(_0xbead('0xa')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xbead('0xb'))};var mailRpc=require(_0xbead('0xc'));exports[_0xbead('0xd')]=function(_0x42ec77,_0x68f6b7,_0x4a0427,_0x2d8d13){return function(_0x45a386){try{var _0x498f8e=this[_0xbead('0xe')];if(_0x498f8e===_0xbead('0xf')&&_0x2d8d13['body'][_0xbead('0x10')]){logger[_0xbead('0x11')](_0xbead('0x12'),_0x42ec77,_0xbead('0x13'));return _0x45a386[_0xbead('0x14')]();}if(_0x68f6b7[0x0]==='1'&&(_[_0xbead('0x15')](this[_0xbead('0x16')][_0xbead('0x17')])||!this[_0xbead('0x16')]['created'])){logger[_0xbead('0x11')](_0xbead('0x12'),_0x42ec77,'Autoreply\x20already\x20sent');return _0x45a386[_0xbead('0x14')]();}if(_0x68f6b7[0x0]==='2'&&this[_0xbead('0x16')][_0xbead('0x18')]){logger[_0xbead('0x11')](_0xbead('0x19'),_0x42ec77,_0xbead('0x1a'));return _0x45a386['next']();}var _0xec9fa8={'ContactId':this[_0xbead('0x1b')]['id'],'sentAt':moment()[_0xbead('0x1c')](_0xbead('0x1d')),'direction':_0xbead('0x1e')};if(this['channel']===_0xbead('0xf')){_0xec9fa8[_0xbead('0x1f')]=utils[_0xbead('0x20')](_0x68f6b7[0x2],this);}else{_0xec9fa8[_0xbead('0x1f')]=utils['getMustacheRender'](_0x68f6b7[0x1],this);}if(this[_0xbead('0x21')]){_0xec9fa8['to']=this['message']['from']||'';if(this[_0xbead('0xe')]===_0xbead('0xf')&&_0x68f6b7[0x1]==='1'){_0xec9fa8['cc']=this['message']['cc']||'';}_0xec9fa8['from']=this[_0xbead('0x21')]['to']||'';_0xec9fa8[_0xbead('0x22')]=this['message']['phone']||'';_0xec9fa8[_0xbead('0x23')]=!![];if(this[_0xbead('0x21')][_0xbead('0x24')]){_0xec9fa8[_0xbead('0x24')]='';_0xec9fa8[_0xbead('0x24')]+=_['startsWith'](this[_0xbead('0x21')][_0xbead('0x24')],_0xbead('0x25'))?'':_0xbead('0x26');_0xec9fa8[_0xbead('0x24')]+=this[_0xbead('0x21')][_0xbead('0x24')];}}if(this[_0xbead('0xe')]==='chat'){_0xec9fa8[_0xbead('0x27')]=this[_0xbead('0x28')]['id'];}else{_0xec9fa8[_[_0xbead('0x29')](this[_0xbead('0xe')])+'AccountId']=this['account']['id'];}_0xec9fa8[_[_0xbead('0x29')](this['channel'])+_0xbead('0x2a')]=this['interaction']['id'];var _0x409d77=this['interaction'];if(rpc[this[_0xbead('0xe')]+_0xbead('0x2b')]){if(this[_0xbead('0xe')]===_0xbead('0xf')){var _0x28da86={'tls':{'rejectUnauthorized':![]}};if(this[_0xbead('0x28')][_0xbead('0x2c')][_0xbead('0x2d')]){_0x28da86[_0xbead('0x2d')]=this[_0xbead('0x28')][_0xbead('0x2c')][_0xbead('0x2d')];}else{_0x28da86[_0xbead('0x2e')]=this['account'][_0xbead('0x2c')][_0xbead('0x2e')];_0x28da86[_0xbead('0x2f')]=this[_0xbead('0x28')][_0xbead('0x2c')][_0xbead('0x2f')];_0x28da86['secure']=this[_0xbead('0x28')]['Smtp'][_0xbead('0x30')];}if(this[_0xbead('0x28')][_0xbead('0x2c')][_0xbead('0x31')]){_0x28da86['auth']={'user':this[_0xbead('0x28')][_0xbead('0x2c')]['user'],'pass':this[_0xbead('0x28')][_0xbead('0x2c')]['pass']};}_0xec9fa8[_0xbead('0x32')]=this['message'][_0xbead('0x33')];_0xec9fa8['html']='<div\x20id=\x22xm-mail-content\x22>'+_[_0xbead('0x34')](_0xec9fa8['body'],_0xbead('0x35'),_0xbead('0x36'))+_0xbead('0x37');_0xec9fa8['headers']={'Auto-Submitted':_0xbead('0x38'),'X-Auto-Response-Suppress':_0xbead('0x39'),'Precedence':_0xbead('0x3a')};return mailRpc[_0xbead('0x3b')](_0x28da86,_0xec9fa8)[_0xbead('0x3c')](function(_0x3ed933){logger['info'](_0xbead('0x3d'),_0x42ec77);_0xec9fa8[_0xbead('0x33')]=_0x3ed933[_0xbead('0x21')][_0xbead('0x33')];return rpc[_0x498f8e+_0xbead('0x2b')][_0xbead('0x3e')](_0xec9fa8);})[_0xbead('0x3c')](function(_0x2d1230){logger['info'](_0xbead('0x12'),_0x42ec77,JSON[_0xbead('0x3f')](_0x2d1230));})[_0xbead('0x40')](function(_0x57a212){logger['error'](_0xbead('0x41'),_0x42ec77,JSON[_0xbead('0x3f')](_0x57a212));})[_0xbead('0x42')](function(){Promise['resolve']()['then'](function(){if(_0x68f6b7[0x0]!=='2'||_0x409d77[_0xbead('0x18')])return;return rpc[_0x498f8e+_0xbead('0x43')][_0xbead('0x44')](_0x409d77['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3f04c8){logger[_0xbead('0x11')](_0xbead('0x19'),_0x42ec77,JSON[_0xbead('0x3f')](_0x3f04c8));})[_0xbead('0x40')](function(_0x57a67d){logger[_0xbead('0x45')](_0xbead('0x46'),_0x42ec77,JSON[_0xbead('0x3f')](_0x57a67d));});})['then'](function(){_0x45a386[_0xbead('0x14')]();});});}else{return rpc[this[_0xbead('0xe')]+'Message'][_0xbead('0x3e')](_0xec9fa8)[_0xbead('0x3c')](function(_0xd23166){logger[_0xbead('0x11')]('[%s][AUTOREPLY]\x20%s',_0x42ec77,_0xec9fa8[_0xbead('0x1f')]);})[_0xbead('0x40')](function(_0x45723d){logger[_0xbead('0x45')]('[%s][AUTOREPLY]\x20%s',_0x42ec77,JSON['stringify'](_0x45723d));})['finally'](function(){Promise[_0xbead('0x47')]()[_0xbead('0x3c')](function(){if(_0x68f6b7[0x0]!=='2'||_0x409d77['autoreplyExecuted'])return;return rpc[_0x498f8e+_0xbead('0x43')][_0xbead('0x44')](_0x409d77['id'],{'autoreplyExecuted':!![]})['then'](function(_0xd467d5){logger[_0xbead('0x11')](_0xbead('0x19'),_0x42ec77,JSON['stringify'](_0xd467d5));})[_0xbead('0x40')](function(_0x19bb68){logger['error'](_0xbead('0x46'),_0x42ec77,JSON[_0xbead('0x3f')](_0x19bb68));});})[_0xbead('0x3c')](function(){_0x45a386[_0xbead('0x14')]();});});}}}catch(_0x16c6ff){logger['error'](_0xbead('0x12'),_0x42ec77,JSON[_0xbead('0x3f')](_0x16c6ff));_0x45a386[_0xbead('0x48')]();}};};
\ No newline at end of file
index e32188d..af80c54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc98f=['../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','stop','[%s][CLOSE]\x20%s','../../../../config/logger','routing','../../rpc/openchannelInteraction'];(function(_0x37ffea,_0x25b006){var _0x2e2615=function(_0x5e6c74){while(--_0x5e6c74){_0x37ffea['push'](_0x37ffea['shift']());}};_0x2e2615(++_0x25b006);}(_0xc98f,0x1c8));var _0xfc98=function(_0x29ad98,_0x1ab4e2){_0x29ad98=_0x29ad98-0x0;var _0x4eba8d=_0xc98f[_0x29ad98];return _0x4eba8d;};'use strict';var moment=require('moment');var logger=require(_0xfc98('0x0'))(_0xfc98('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xfc98('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xfc98('0x3')),'faxInteraction':require(_0xfc98('0x4')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0xfc98('0x5')]=function(_0x48d002,_0x343e99,_0x4a8116,_0x138a30){return function(_0x1f27f5){try{logger[_0xfc98('0x6')](_0xfc98('0x7'),_0x48d002,_0x343e99[0x0]);var _0x2e9614={'closed':0x1,'closedAt':moment()[_0xfc98('0x8')](_0xfc98('0x9')),'closeReason':'system','disposition':_0x343e99[0x0]};if(rpc[_0x138a30[_0xfc98('0xa')]+_0xfc98('0xb')]){rpc[_0x138a30['channel']+_0xfc98('0xb')]['update'](_0x138a30[_0xfc98('0xc')]['id'],_0x2e9614)['then'](function(_0x566fc8){logger[_0xfc98('0x6')](_0xfc98('0xd'),_0x48d002,_0x138a30[_0xfc98('0xc')]['id']);})[_0xfc98('0xe')](function(_0x298289){logger['error']('[%s][CLOSE]\x20%s',_0x48d002,JSON['stringify'](_0x298289));})['finally'](function(){_0x1f27f5[_0xfc98('0xf')]();});}}catch(_0x4744b9){logger['error'](_0xfc98('0x10'),_0x48d002,JSON['stringify'](_0x4744b9));_0x1f27f5[_0xfc98('0xf')]();}};};
\ No newline at end of file
+var _0x0472=['Interaction','interaction','then','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x0472,0x197));var _0x2047=function(_0x633b45,_0x587877){_0x633b45=_0x633b45-0x0;var _0x4fb2ff=_0x0472[_0x633b45];return _0x4fb2ff;};'use strict';var moment=require('moment');var logger=require('../../../../config/logger')(_0x2047('0x0'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x2047('0x1')),'smsInteraction':require(_0x2047('0x2')),'mailInteraction':require(_0x2047('0x3')),'faxInteraction':require(_0x2047('0x4')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x2047('0x5')]=function(_0x5814a9,_0x27b09d,_0x1a6fc2,_0x140727){return function(_0x14bf92){try{logger['info'](_0x2047('0x6'),_0x5814a9,_0x27b09d[0x0]);var _0x29f752={'closed':0x1,'closedAt':moment()[_0x2047('0x7')](_0x2047('0x8')),'closeReason':_0x2047('0x9'),'disposition':_0x27b09d[0x0]};if(rpc[_0x140727[_0x2047('0xa')]+_0x2047('0xb')]){rpc[_0x140727[_0x2047('0xa')]+_0x2047('0xb')]['update'](_0x140727[_0x2047('0xc')]['id'],_0x29f752)[_0x2047('0xd')](function(_0x5f2008){logger[_0x2047('0xe')](_0x2047('0xf'),_0x5814a9,_0x140727[_0x2047('0xc')]['id']);})[_0x2047('0x10')](function(_0x1c4ac0){logger[_0x2047('0x11')](_0x2047('0x12'),_0x5814a9,JSON[_0x2047('0x13')](_0x1c4ac0));})[_0x2047('0x14')](function(){_0x14bf92[_0x2047('0x15')]();});}}catch(_0x1b7a06){logger[_0x2047('0x11')]('[%s][CLOSE]\x20%s',_0x5814a9,JSON[_0x2047('0x13')](_0x1b7a06));_0x14bf92[_0x2047('0x15')]();}};};
\ No newline at end of file
index f6aa9f6..d66f40f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e9=['textRequest','dialogflow','result','speech','providerName','metadata','endConversation','message','apiai-promise','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','InteractionId','isEmpty','body','getMustacheRender','create','then','info','[%s][DIALOGFLOW]\x20%s','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x12e9,0x66));var _0x912e=function(_0x34e6b1,_0x12e470){_0x34e6b1=_0x34e6b1-0x0;var _0x5ec1e5=_0x12e9[_0x34e6b1];return _0x5ec1e5;};'use strict';var _=require('lodash');var moment=require('moment');var apiai=require(_0x912e('0x0'));var md5=require('md5');var utils=require(_0x912e('0x1'));var logger=require(_0x912e('0x2'))('routing');var rpc={'chatMessage':require(_0x912e('0x3')),'openchannelMessage':require(_0x912e('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x912e('0x5')),'faxMessage':require(_0x912e('0x6')),'whatsappMessage':require(_0x912e('0x7'))};exports[_0x912e('0x8')]=function(_0x4f4dbb,_0x2e950a){return function(_0x2ccba9){try{if(!_[_0x912e('0x9')](this[_0x912e('0xa')][_0x912e('0xb')])){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x4f4dbb,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x2ccba9[_0x912e('0xc')]();}var _0x2344a0={'ContactId':this[_0x912e('0xd')]['id'],'sentAt':moment()[_0x912e('0xe')](_0x912e('0xf')),'direction':'out'};if(this[_0x912e('0x10')]===_0x912e('0x11')||this[_0x912e('0x10')]===_0x912e('0x12')){_0x2344a0[_0x912e('0x13')]=this[_0x912e('0xa')][_0x912e('0x13')];}var _0x318f19=this[_0x912e('0x10')];if(_0x318f19===_0x912e('0x14')){_0x2344a0[_0x912e('0x15')]=this[_0x912e('0x16')]['id'];}else{_0x2344a0[_['upperFirst'](_0x318f19)+_0x912e('0x17')]=this['account']['id'];}_0x2344a0[_['upperFirst'](_0x318f19)+_0x912e('0x18')]=this[_0x912e('0xa')]['id'];if(this[_0x912e('0xa')]['created']){var _0x572179=_0x2e950a[0x2];if(!_[_0x912e('0x19')](_0x572179)){_0x2344a0[_0x912e('0x1a')]=utils[_0x912e('0x1b')](_0x572179,this);return rpc[_0x318f19+'Message'][_0x912e('0x1c')](_0x2344a0)[_0x912e('0x1d')](function(_0x3286bb){logger[_0x912e('0x1e')](_0x912e('0x1f'),_0x4f4dbb,_0x2344a0['body']);})[_0x912e('0x20')](function(_0x4709b9){logger[_0x912e('0x21')](_0x912e('0x1f'),_0x4f4dbb,JSON[_0x912e('0x22')](_0x4709b9));})[_0x912e('0x23')](function(){logger[_0x912e('0x1e')](_0x912e('0x24'),_0x4f4dbb);_0x2ccba9[_0x912e('0x25')]();});}else{logger[_0x912e('0x1e')](_0x912e('0x26'),_0x4f4dbb);_0x2ccba9['stop']();}}else{var _0x201bf8=this;var _0x4f1a6f=apiai(_0x2e950a[0x0],{'language':_0x2e950a[0x1]||'en'});return _0x4f1a6f[_0x912e('0x27')](this['message'][_0x912e('0x1a')],{'sessionId':md5(this[_0x912e('0xa')]['id'])})['then'](function(_0x28497d){_0x201bf8[_0x912e('0x1a')][_0x912e('0x28')]=_0x28497d;_0x2344a0[_0x912e('0x1a')]=_0x28497d[_0x912e('0x29')]['fulfillment'][_0x912e('0x2a')];_0x2344a0[_0x912e('0x2b')]=_0x912e('0x28');_0x2344a0['providerResponse']=JSON[_0x912e('0x22')](_0x28497d);return rpc[_0x318f19+'Message'][_0x912e('0x1c')](_0x2344a0)[_0x912e('0x1d')](function(_0xe48a67){logger[_0x912e('0x1e')](_0x912e('0x1f'),_0x4f4dbb,_0x2344a0['body']);if(_0x28497d[_0x912e('0x29')][_0x912e('0x2c')][_0x912e('0x2d')]){_0x2ccba9['next']();}else{_0x2ccba9[_0x912e('0x25')]();}})['catch'](function(_0x4d4845){logger['error'](_0x912e('0x1f'),_0x4f4dbb,JSON['stringify'](_0x4d4845));_0x2ccba9['next']();});})['catch'](function(_0x3f61a2){logger[_0x912e('0x21')](_0x912e('0x1f'),_0x4f4dbb,_0x3f61a2[_0x912e('0x2e')]);_0x2ccba9[_0x912e('0xc')]();});}}catch(_0x235af8){logger[_0x912e('0x21')](_0x912e('0x1f'),_0x4f4dbb,JSON[_0x912e('0x22')](_0x235af8));_0x2ccba9[_0x912e('0x25')]();}};};
\ No newline at end of file
+var _0x0170=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','Message','metadata','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','AccountId','account','upperFirst','created','body','getMustacheRender','create','then','info','catch','error','stringify','stop'];(function(_0x21bc1b,_0x5ce318){var _0x44c6f2=function(_0x3e1baa){while(--_0x3e1baa){_0x21bc1b['push'](_0x21bc1b['shift']());}};_0x44c6f2(++_0x5ce318);}(_0x0170,0x1d6));var _0x0017=function(_0x43f621,_0x5b6bca){_0x43f621=_0x43f621-0x0;var _0x19425f=_0x0170[_0x43f621];return _0x19425f;};'use strict';var _=require(_0x0017('0x0'));var moment=require(_0x0017('0x1'));var apiai=require('apiai-promise');var md5=require(_0x0017('0x2'));var utils=require(_0x0017('0x3'));var logger=require(_0x0017('0x4'))(_0x0017('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x0017('0x6')),'mailMessage':require(_0x0017('0x7')),'smsMessage':require(_0x0017('0x8')),'faxMessage':require(_0x0017('0x9')),'whatsappMessage':require(_0x0017('0xa'))};exports[_0x0017('0xb')]=function(_0x52402,_0x3573e1){return function(_0xea0574){try{if(!_[_0x0017('0xc')](this[_0x0017('0xd')]['UserId'])){logger['info'](_0x0017('0xe'),_0x52402,_0x0017('0xf'));return _0xea0574[_0x0017('0x10')]();}var _0x3904cb={'ContactId':this[_0x0017('0x11')]['id'],'sentAt':moment()[_0x0017('0x12')](_0x0017('0x13')),'direction':_0x0017('0x14')};if(this[_0x0017('0x15')]===_0x0017('0x16')||this[_0x0017('0x15')]===_0x0017('0x17')){_0x3904cb[_0x0017('0x18')]=this['interaction'][_0x0017('0x18')];}var _0x1a069d=this[_0x0017('0x15')];if(_0x1a069d===_0x0017('0x19')){_0x3904cb[_0x0017('0x1a')]=this['account']['id'];}else{_0x3904cb[_['upperFirst'](_0x1a069d)+_0x0017('0x1b')]=this[_0x0017('0x1c')]['id'];}_0x3904cb[_[_0x0017('0x1d')](_0x1a069d)+'InteractionId']=this[_0x0017('0xd')]['id'];if(this[_0x0017('0xd')][_0x0017('0x1e')]){var _0x1df666=_0x3573e1[0x2];if(!_['isEmpty'](_0x1df666)){_0x3904cb[_0x0017('0x1f')]=utils[_0x0017('0x20')](_0x1df666,this);return rpc[_0x1a069d+'Message'][_0x0017('0x21')](_0x3904cb)[_0x0017('0x22')](function(_0x29c8ea){logger[_0x0017('0x23')]('[%s][DIALOGFLOW]\x20%s',_0x52402,_0x3904cb[_0x0017('0x1f')]);})[_0x0017('0x24')](function(_0x480f3c){logger[_0x0017('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x52402,JSON[_0x0017('0x26')](_0x480f3c));})['finally'](function(){logger[_0x0017('0x23')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x52402);_0xea0574[_0x0017('0x27')]();});}else{logger['info'](_0x0017('0x28'),_0x52402);_0xea0574[_0x0017('0x27')]();}}else{var _0x444471=this;var _0x30b1e5=apiai(_0x3573e1[0x0],{'language':_0x3573e1[0x1]||'en'});return _0x30b1e5[_0x0017('0x29')](this[_0x0017('0x2a')]['body'],{'sessionId':md5(this['interaction']['id'])})[_0x0017('0x22')](function(_0x22c1ec){_0x444471[_0x0017('0x1f')][_0x0017('0x2b')]=_0x22c1ec;_0x3904cb['body']=_0x22c1ec[_0x0017('0x2c')][_0x0017('0x2d')][_0x0017('0x2e')];_0x3904cb[_0x0017('0x2f')]=_0x0017('0x2b');_0x3904cb[_0x0017('0x30')]=JSON[_0x0017('0x26')](_0x22c1ec);return rpc[_0x1a069d+_0x0017('0x31')][_0x0017('0x21')](_0x3904cb)[_0x0017('0x22')](function(_0x40462f){logger[_0x0017('0x23')](_0x0017('0xe'),_0x52402,_0x3904cb['body']);if(_0x22c1ec[_0x0017('0x2c')][_0x0017('0x32')]['endConversation']){_0xea0574['next']();}else{_0xea0574[_0x0017('0x27')]();}})[_0x0017('0x24')](function(_0x29e8fe){logger[_0x0017('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x52402,JSON[_0x0017('0x26')](_0x29e8fe));_0xea0574[_0x0017('0x10')]();});})[_0x0017('0x24')](function(_0x318623){logger['error'](_0x0017('0xe'),_0x52402,_0x318623[_0x0017('0x2a')]);_0xea0574['next']();});}}catch(_0xad9401){logger[_0x0017('0x25')](_0x0017('0xe'),_0x52402,JSON[_0x0017('0x26')](_0xad9401));_0xea0574[_0x0017('0x27')]();}};};
\ No newline at end of file
index d3e67b2..7b0e5c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a96=['Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','interaction','ChatWebsiteId','upperFirst','AccountId','created','isEmpty','getMustacheRender','Message','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','push','all','lodash','dialogflow','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','clone','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','UserId'];(function(_0x5607ba,_0x603e78){var _0x23bf86=function(_0x2ed4fc){while(--_0x2ed4fc){_0x5607ba['push'](_0x5607ba['shift']());}};_0x23bf86(++_0x603e78);}(_0x5a96,0xbc));var _0x65a9=function(_0x3bece3,_0x10a102){_0x3bece3=_0x3bece3-0x0;var _0x4f033c=_0x5a96[_0x3bece3];return _0x4f033c;};'use strict';var _=require(_0x65a9('0x0'));var dialogflow=require(_0x65a9('0x1'));var md5=require('md5');var moment=require(_0x65a9('0x2'));var Promise=require(_0x65a9('0x3'));var logger=require(_0x65a9('0x4'))(_0x65a9('0x5'));var utils=require(_0x65a9('0x6'));var rpc={'chatMessage':require(_0x65a9('0x7')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x65a9('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x596d73,_0x94fce1,_0x107fea,_0x5ae332){return new Promise(function(_0x3330b9,_0x49ed58){var _0xa8a5d8=_[_0x65a9('0x9')](_0x107fea);_0xa8a5d8[_0x65a9('0xa')]=_0x5ae332;return rpc[_0x94fce1+'Message'][_0x65a9('0xb')](_0xa8a5d8)[_0x65a9('0xc')](function(){logger[_0x65a9('0xd')](_0x65a9('0xe'),_0x596d73,_0xa8a5d8['body']);_0x3330b9();})[_0x65a9('0xf')](function(_0x4abfcd){logger[_0x65a9('0x10')](_0x65a9('0xe'),_0x596d73,JSON[_0x65a9('0x11')](_0x4abfcd));_0x49ed58(_0x4abfcd);});});}exports['consequence']=function(_0x5ac610,_0x1fc8b0){return function(_0x3f7e15){try{if(!_['isNil'](this['interaction'][_0x65a9('0x12')])){logger[_0x65a9('0xd')](_0x65a9('0xe'),_0x5ac610,_0x65a9('0x13'));return _0x3f7e15[_0x65a9('0x14')]();}var _0x47a11d={'ContactId':this['contact']['id'],'sentAt':moment()[_0x65a9('0x15')](_0x65a9('0x16')),'direction':_0x65a9('0x17')};if(this[_0x65a9('0x18')]===_0x65a9('0x19')||this[_0x65a9('0x18')]==='whatsapp'){_0x47a11d[_0x65a9('0x1a')]=this[_0x65a9('0x1b')]['phone'];}var _0x65b278=this[_0x65a9('0x18')];if(_0x65b278==='chat'){_0x47a11d[_0x65a9('0x1c')]=this['account']['id'];}else{_0x47a11d[_[_0x65a9('0x1d')](_0x65b278)+_0x65a9('0x1e')]=this['account']['id'];}_0x47a11d[_[_0x65a9('0x1d')](_0x65b278)+'InteractionId']=this[_0x65a9('0x1b')]['id'];if(this[_0x65a9('0x1b')][_0x65a9('0x1f')]){var _0x15ef4c=_0x1fc8b0[0x4];if(!_[_0x65a9('0x20')](_0x15ef4c)){_0x47a11d[_0x65a9('0xa')]=utils[_0x65a9('0x21')](_0x15ef4c,this);return rpc[_0x65b278+_0x65a9('0x22')][_0x65a9('0xb')](_0x47a11d)['then'](function(_0x1af517){logger[_0x65a9('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x5ac610,_0x47a11d['body']);})[_0x65a9('0xf')](function(_0x10bdb1){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x5ac610,JSON[_0x65a9('0x11')](_0x10bdb1));})['finally'](function(){logger[_0x65a9('0xd')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5ac610);_0x3f7e15[_0x65a9('0x23')]();});}else{logger[_0x65a9('0xd')](_0x65a9('0x24'),_0x5ac610);_0x3f7e15[_0x65a9('0x23')]();}}else{var _0x37ecc8=this;var _0xb5feb6=_0x1fc8b0[0x2][_0x65a9('0x25')](/\\n/g,'\x0a');var _0x5d9bd3={'credentials':{'private_key':_0xb5feb6,'client_email':_0x1fc8b0[0x1]}};var _0x5ce376=new dialogflow[(_0x65a9('0x26'))](_0x5d9bd3);var _0x51712=_0x5ce376[_0x65a9('0x27')](_0x1fc8b0[0x0],md5(_0x37ecc8['interaction']['id']));var _0x42b0c4={'session':_0x51712,'queryInput':{'text':{'text':_0x37ecc8[_0x65a9('0x28')][_0x65a9('0xa')],'languageCode':_0x1fc8b0[0x3]||'en'}}};return _0x5ce376['detectIntent'](_0x42b0c4)['then'](function(_0x5126c8){if(_0x5126c8&&_0x5126c8[_0x65a9('0x29')]){_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x2a')]=_0x5126c8;var _0x3170ac=_0x5126c8[0x0];var _0x145eab=_0x3170ac['queryResult']['diagnosticInfo']&&_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x2c')][_0x65a9('0x2d')]?_0x3170ac[_0x65a9('0x2b')]['diagnosticInfo']['fields'][_0x65a9('0x2e')]['boolValue']:![];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x2f')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x30')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x31')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x32')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x33')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x2c')]&&_0x3170ac[_0x65a9('0x2b')]['diagnosticInfo']['fields']?_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x2c')][_0x65a9('0x2d')]['end_conversation']['boolValue']:![];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x34')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x35')][_0x65a9('0x36')];_0x37ecc8['body'][_0x65a9('0x37')]=_0x3170ac['queryResult'][_0x65a9('0x35')][_0x65a9('0x38')];_0x37ecc8['body'][_0x65a9('0x39')]=_0x3170ac[_0x65a9('0x2b')]['intent'][_0x65a9('0x3a')];_0x37ecc8['body'][_0x65a9('0x3b')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x3c')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x3d')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x3e')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x3f')]=_0x3170ac['queryResult'][_0x65a9('0x40')];_0x47a11d['providerName']=_0x65a9('0x2a');_0x47a11d[_0x65a9('0x41')]=JSON[_0x65a9('0x11')](_0x5126c8);var _0x4017e7=[];for(var _0x198dea=0x0;_0x198dea<_0x5126c8['length'];_0x198dea++){var _0x403a57=_0x5126c8[_0x198dea];if(_0x403a57&&_0x403a57['queryResult']&&_0x403a57[_0x65a9('0x2b')][_0x65a9('0x42')]){_0x4017e7[_0x65a9('0x43')](createMessage(_0x5ac610,_0x65b278,_0x47a11d,_0x403a57[_0x65a9('0x2b')]['fulfillmentText']));}}return Promise[_0x65a9('0x44')](_0x4017e7)[_0x65a9('0xc')](function(){if(_0x145eab){_0x3f7e15[_0x65a9('0x14')]();}else{_0x3f7e15[_0x65a9('0x23')]();}})[_0x65a9('0xf')](function(_0x53ee03){logger[_0x65a9('0x10')](_0x65a9('0xe'),_0x5ac610,JSON['stringify'](_0x53ee03));_0x3f7e15[_0x65a9('0x14')]();});}})[_0x65a9('0xf')](function(_0x2a212a){logger[_0x65a9('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x5ac610,_0x2a212a[_0x65a9('0x28')]);_0x3f7e15[_0x65a9('0x14')]();});}}catch(_0x1f0e3a){logger[_0x65a9('0x10')](_0x65a9('0xe'),_0x5ac610,JSON[_0x65a9('0x11')](_0x1f0e3a));_0x3f7e15['stop']();}};};
\ No newline at end of file
+var _0x300a=['then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','finally','stop','SessionsClient','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','push','fulfillmentText','all','lodash','dialogflow','md5','moment','../../../../config/logger','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x300a,0x184));var _0xa300=function(_0x113e32,_0x5339f0){_0x113e32=_0x113e32-0x0;var _0x4ff939=_0x300a[_0x113e32];return _0x4ff939;};'use strict';var _=require(_0xa300('0x0'));var dialogflow=require(_0xa300('0x1'));var md5=require(_0xa300('0x2'));var moment=require(_0xa300('0x3'));var Promise=require('bluebird');var logger=require(_0xa300('0x4'))('routing');var utils=require(_0xa300('0x5'));var rpc={'chatMessage':require(_0xa300('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xa300('0x7')),'smsMessage':require(_0xa300('0x8')),'faxMessage':require(_0xa300('0x9')),'whatsappMessage':require(_0xa300('0xa'))};function createMessage(_0x2ee08c,_0x477251,_0x310252,_0x5f53f2){return new Promise(function(_0xb0e134,_0x13e0cc){var _0x26130e=_[_0xa300('0xb')](_0x310252);_0x26130e[_0xa300('0xc')]=_0x5f53f2;return rpc[_0x477251+'Message'][_0xa300('0xd')](_0x26130e)[_0xa300('0xe')](function(){logger[_0xa300('0xf')](_0xa300('0x10'),_0x2ee08c,_0x26130e[_0xa300('0xc')]);_0xb0e134();})[_0xa300('0x11')](function(_0x383232){logger[_0xa300('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x2ee08c,JSON[_0xa300('0x13')](_0x383232));_0x13e0cc(_0x383232);});});}exports[_0xa300('0x14')]=function(_0x1f9b1e,_0x341fac){return function(_0x119be2){try{if(!_[_0xa300('0x15')](this[_0xa300('0x16')]['UserId'])){logger[_0xa300('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x1f9b1e,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x119be2[_0xa300('0x17')]();}var _0x13950b={'ContactId':this['contact']['id'],'sentAt':moment()[_0xa300('0x18')](_0xa300('0x19')),'direction':_0xa300('0x1a')};if(this[_0xa300('0x1b')]===_0xa300('0x1c')||this['channel']===_0xa300('0x1d')){_0x13950b[_0xa300('0x1e')]=this[_0xa300('0x16')][_0xa300('0x1e')];}var _0x282f0d=this[_0xa300('0x1b')];if(_0x282f0d==='chat'){_0x13950b[_0xa300('0x1f')]=this[_0xa300('0x20')]['id'];}else{_0x13950b[_[_0xa300('0x21')](_0x282f0d)+'AccountId']=this[_0xa300('0x20')]['id'];}_0x13950b[_[_0xa300('0x21')](_0x282f0d)+_0xa300('0x22')]=this['interaction']['id'];if(this[_0xa300('0x16')][_0xa300('0x23')]){var _0x497d3b=_0x341fac[0x4];if(!_[_0xa300('0x24')](_0x497d3b)){_0x13950b[_0xa300('0xc')]=utils[_0xa300('0x25')](_0x497d3b,this);return rpc[_0x282f0d+_0xa300('0x26')]['create'](_0x13950b)['then'](function(_0x545ec2){logger[_0xa300('0xf')](_0xa300('0x10'),_0x1f9b1e,_0x13950b[_0xa300('0xc')]);})[_0xa300('0x11')](function(_0x53ca6c){logger[_0xa300('0x12')](_0xa300('0x10'),_0x1f9b1e,JSON['stringify'](_0x53ca6c));})[_0xa300('0x27')](function(){logger[_0xa300('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x1f9b1e);_0x119be2['stop']();});}else{logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x1f9b1e);_0x119be2[_0xa300('0x28')]();}}else{var _0x2eb330=this;var _0x4e6ba2=_0x341fac[0x2]['replace'](/\\n/g,'\x0a');var _0x29384f={'credentials':{'private_key':_0x4e6ba2,'client_email':_0x341fac[0x1]}};var _0x1be64d=new dialogflow[(_0xa300('0x29'))](_0x29384f);var _0x44b74e=_0x1be64d['sessionPath'](_0x341fac[0x0],md5(_0x2eb330[_0xa300('0x16')]['id']));var _0xabbba9={'session':_0x44b74e,'queryInput':{'text':{'text':_0x2eb330[_0xa300('0x2a')]['body'],'languageCode':_0x341fac[0x3]||'en'}}};return _0x1be64d['detectIntent'](_0xabbba9)['then'](function(_0x45c18a){if(_0x45c18a&&_0x45c18a[_0xa300('0x2b')]){_0x2eb330[_0xa300('0xc')][_0xa300('0x2c')]=_0x45c18a;var _0x3df5dc=_0x45c18a[0x0];var _0x28928e=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x2e')]&&_0x3df5dc[_0xa300('0x2d')][_0xa300('0x2e')]['fields']?_0x3df5dc[_0xa300('0x2d')]['diagnosticInfo'][_0xa300('0x2f')]['end_conversation'][_0xa300('0x30')]:![];_0x2eb330['body']['DIALOGFLOWV2_ACTION']=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x31')];_0x2eb330[_0xa300('0xc')][_0xa300('0x32')]=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x33')];_0x2eb330[_0xa300('0xc')][_0xa300('0x34')]=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x2e')]&&_0x3df5dc[_0xa300('0x2d')][_0xa300('0x2e')][_0xa300('0x2f')]?_0x3df5dc[_0xa300('0x2d')][_0xa300('0x2e')]['fields'][_0xa300('0x35')][_0xa300('0x30')]:![];_0x2eb330['body'][_0xa300('0x36')]=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x37')][_0xa300('0x38')];_0x2eb330['body'][_0xa300('0x39')]=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x37')]['displayName'];_0x2eb330['body'][_0xa300('0x3a')]=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x37')][_0xa300('0x3b')];_0x2eb330['body']['DIALOGFLOWV2_LANGUAGECODE']=_0x3df5dc[_0xa300('0x2d')]['languageCode'];_0x2eb330['body']['DIALOGFLOWV2_QUERYTEXT']=_0x3df5dc[_0xa300('0x2d')][_0xa300('0x3c')];_0x2eb330[_0xa300('0xc')][_0xa300('0x3d')]=_0x3df5dc['queryResult'][_0xa300('0x3e')];_0x13950b['providerName']=_0xa300('0x2c');_0x13950b[_0xa300('0x3f')]=JSON[_0xa300('0x13')](_0x45c18a);var _0x46d16c=[];for(var _0x133e5e=0x0;_0x133e5e<_0x45c18a[_0xa300('0x2b')];_0x133e5e++){var _0x2d534e=_0x45c18a[_0x133e5e];if(_0x2d534e&&_0x2d534e[_0xa300('0x2d')]&&_0x2d534e[_0xa300('0x2d')]['fulfillmentText']){_0x46d16c[_0xa300('0x40')](createMessage(_0x1f9b1e,_0x282f0d,_0x13950b,_0x2d534e[_0xa300('0x2d')][_0xa300('0x41')]));}}return Promise[_0xa300('0x42')](_0x46d16c)[_0xa300('0xe')](function(){if(_0x28928e){_0x119be2[_0xa300('0x17')]();}else{_0x119be2['stop']();}})['catch'](function(_0x41cf17){logger[_0xa300('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x1f9b1e,JSON[_0xa300('0x13')](_0x41cf17));_0x119be2[_0xa300('0x17')]();});}})[_0xa300('0x11')](function(_0x3c7ebd){logger['error'](_0xa300('0x10'),_0x1f9b1e,_0x3c7ebd[_0xa300('0x2a')]);_0x119be2[_0xa300('0x17')]();});}}catch(_0x5b4e2d){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x1f9b1e,JSON[_0xa300('0x13')](_0x5b4e2d));_0x119be2['stop']();}};};
\ No newline at end of file
index fa41833..454d97b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4abe=['info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20%s','stringify','validate','html-to-text','./utils','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','map','stop','condition','priorityTrue','priorityFalse','next','findIndex','rules'];(function(_0x2922f8,_0x56658a){var _0x437608=function(_0xa1ac9a){while(--_0xa1ac9a){_0x2922f8['push'](_0x2922f8['shift']());}};_0x437608(++_0x56658a);}(_0x4abe,0x9b));var _0xe4ab=function(_0x2a0f5a,_0x5286f9){_0x2a0f5a=_0x2a0f5a-0x0;var _0xcbdbc4=_0x4abe[_0x2a0f5a];return _0xcbdbc4;};'use strict';var schema=require(_0xe4ab('0x0'));var _=require('lodash');var htmlToText=require(_0xe4ab('0x1'));var utils=require(_0xe4ab('0x2'));var logger=require('../../../../config/logger')(_0xe4ab('0x3'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xe4ab('0x4')},'priorityTrue':{'type':_0xe4ab('0x5'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xe4ab('0x5'),'message':_0xe4ab('0x6')}});exports[_0xe4ab('0x7')]=function(_0x2ae431,_0x2c89a8){return function(_0x11936c){try{var _0x154c08={'condition':htmlToText['fromString'](utils[_0xe4ab('0x8')](_0x2c89a8[0x0],this),{'wordwrap':![]})[_0xe4ab('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2c89a8[0x1],'priorityFalse':_0x2c89a8[0x2]};var _0x193f98=gotoif['validate'](_0x154c08,{'typecast':!![]});if(_0x193f98[_0xe4ab('0xa')]){logger[_0xe4ab('0xb')]('[%s][GOTOIF]\x20%s',_0x2ae431,_[_0xe4ab('0xc')](_0x193f98,'message')['join'](',\x20'));_0x11936c[_0xe4ab('0xd')]();}else{try{var _0x5c0722=eval('('+_0x154c08[_0xe4ab('0xe')]+')');var _0x55dd84=_0x5c0722?_0x154c08[_0xe4ab('0xf')]:_0x154c08[_0xe4ab('0x10')];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2ae431,_0x154c08[_0xe4ab('0xe')],_0x5c0722,_0x55dd84||_0xe4ab('0x11'));if(_0x55dd84){var _0x4f6d49=_[_0xe4ab('0x12')](_0x11936c[_0xe4ab('0x13')](),{'p':_0x55dd84});if(_0x4f6d49>=0x0){logger[_0xe4ab('0x14')](_0xe4ab('0x15'),_0x2ae431,_0x55dd84||_0xe4ab('0x11'),_0x4f6d49);_0x11936c[_0xe4ab('0x11')](_0x4f6d49);}else{logger['info'](_0xe4ab('0x16'),_0x2ae431,_0x55dd84||_0xe4ab('0x11'));_0x11936c[_0xe4ab('0xd')]();}}else{_0x11936c[_0xe4ab('0x11')]();}}catch(_0x141377){logger[_0xe4ab('0xb')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x2ae431,_0x141377['message']);_0x11936c[_0xe4ab('0xd')]();}}}catch(_0x5bd515){logger[_0xe4ab('0xb')](_0xe4ab('0x17'),_0x2ae431,JSON[_0xe4ab('0x18')](_0x5bd515));_0x11936c['stop']();}};};
\ No newline at end of file
+var _0x4087=['number','priority\x20true\x20is\x20a\x20number','fromString','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x179e11,_0xf65436){var _0x549f04=function(_0x610545){while(--_0x610545){_0x179e11['push'](_0x179e11['shift']());}};_0x549f04(++_0xf65436);}(_0x4087,0x1f1));var _0x7408=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4087[_0x14add3];return _0x4a174f;};'use strict';var schema=require(_0x7408('0x0'));var _=require(_0x7408('0x1'));var htmlToText=require('html-to-text');var utils=require(_0x7408('0x2'));var logger=require(_0x7408('0x3'))(_0x7408('0x4'));var gotoif=schema({'condition':{'type':_0x7408('0x5'),'required':!![],'message':_0x7408('0x6')},'priorityTrue':{'type':_0x7408('0x7'),'message':_0x7408('0x8')},'priorityFalse':{'type':'number','message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x10632e,_0x3dab44){return function(_0x21cee5){try{var _0x360ea={'condition':htmlToText[_0x7408('0x9')](utils[_0x7408('0xa')](_0x3dab44[0x0],this),{'wordwrap':![]})[_0x7408('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x3dab44[0x1],'priorityFalse':_0x3dab44[0x2]};var _0x31f8c9=gotoif[_0x7408('0x0')](_0x360ea,{'typecast':!![]});if(_0x31f8c9[_0x7408('0xc')]){logger[_0x7408('0xd')](_0x7408('0xe'),_0x10632e,_[_0x7408('0xf')](_0x31f8c9,_0x7408('0x10'))[_0x7408('0x11')](',\x20'));_0x21cee5[_0x7408('0x12')]();}else{try{var _0x548de9=eval('('+_0x360ea[_0x7408('0x13')]+')');var _0x1e86b2=_0x548de9?_0x360ea[_0x7408('0x14')]:_0x360ea['priorityFalse'];logger[_0x7408('0x15')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x10632e,_0x360ea[_0x7408('0x13')],_0x548de9,_0x1e86b2||_0x7408('0x16'));if(_0x1e86b2){var _0x324371=_[_0x7408('0x17')](_0x21cee5[_0x7408('0x18')](),{'p':_0x1e86b2});if(_0x324371>=0x0){logger[_0x7408('0x15')](_0x7408('0x19'),_0x10632e,_0x1e86b2||'next',_0x324371);_0x21cee5['next'](_0x324371);}else{logger['info'](_0x7408('0x1a'),_0x10632e,_0x1e86b2||_0x7408('0x16'));_0x21cee5['stop']();}}else{_0x21cee5[_0x7408('0x16')]();}}catch(_0x318cf7){logger[_0x7408('0xd')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x10632e,_0x318cf7[_0x7408('0x10')]);_0x21cee5['stop']();}}}catch(_0x17b859){logger[_0x7408('0xd')](_0x7408('0xe'),_0x10632e,JSON[_0x7408('0x1b')](_0x17b859));_0x21cee5[_0x7408('0x12')]();}};};
\ No newline at end of file
index c3dba5a..0264496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf57a=['number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','message','join','info','priority','findIndex','rules','next','stop','stringify','validate','lodash','routing'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0xf57a,0x1bf));var _0xaf57=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xf57a[_0x19950b];return _0x3c6b41;};'use strict';var schema=require(_0xaf57('0x0'));var _=require(_0xaf57('0x1'));var logger=require('../../../../config/logger')(_0xaf57('0x2'));var gotop=schema({'priority':{'type':_0xaf57('0x3'),'required':!![],'message':_0xaf57('0x4')}});exports[_0xaf57('0x5')]=function(_0x543eda,_0x129a2b){return function(_0x4f8093){try{var _0x552cf3={'priority':_0x129a2b[0x0]};var _0x2b724e=gotop['validate'](_0x552cf3,{'typecast':!![]});if(_0x2b724e[_0xaf57('0x6')]){logger[_0xaf57('0x7')](_0xaf57('0x8'),_0x543eda,_['map'](_0x2b724e,_0xaf57('0x9'))[_0xaf57('0xa')](',\x20'));_0x4f8093['stop']();}else{logger[_0xaf57('0xb')]('[%s][GOTOP]\x20priority\x20%s',_0x543eda,_0x552cf3[_0xaf57('0xc')]);if(_0x552cf3['priority']){var _0x462524=_[_0xaf57('0xd')](_0x4f8093[_0xaf57('0xe')](),{'p':_0x552cf3[_0xaf57('0xc')]});if(_0x462524>=0x0){logger['info']('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x543eda,_0x552cf3[_0xaf57('0xc')]||_0xaf57('0xf'),_0x462524);_0x4f8093['next'](_0x462524);}else{logger[_0xaf57('0xb')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x543eda,_0x552cf3[_0xaf57('0xc')]||_0xaf57('0xf'));_0x4f8093[_0xaf57('0x10')]();}}else{_0x4f8093[_0xaf57('0xf')]();}}}catch(_0x92498f){logger[_0xaf57('0x7')]('[%s][GOTOP]\x20%s',_0x543eda,JSON[_0xaf57('0x11')](_0x92498f));_0x4f8093[_0xaf57('0x10')]();}};};
\ No newline at end of file
+var _0x39f0=['findIndex','rules','priority','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','validate','lodash','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error','[%s][GOTOP]\x20%s','map','join','stop','[%s][GOTOP]\x20priority\x20%s'];(function(_0x5a05df,_0x27d705){var _0x28c237=function(_0x1520dd){while(--_0x1520dd){_0x5a05df['push'](_0x5a05df['shift']());}};_0x28c237(++_0x27d705);}(_0x39f0,0xc5));var _0x039f=function(_0x41bb1f,_0x64b42b){_0x41bb1f=_0x41bb1f-0x0;var _0x25a5f5=_0x39f0[_0x41bb1f];return _0x25a5f5;};'use strict';var schema=require(_0x039f('0x0'));var _=require(_0x039f('0x1'));var logger=require('../../../../config/logger')(_0x039f('0x2'));var gotop=schema({'priority':{'type':_0x039f('0x3'),'required':!![],'message':_0x039f('0x4')}});exports[_0x039f('0x5')]=function(_0x2a7b33,_0x430ee9){return function(_0x33920e){try{var _0x1b801f={'priority':_0x430ee9[0x0]};var _0xee452d=gotop[_0x039f('0x0')](_0x1b801f,{'typecast':!![]});if(_0xee452d['length']){logger[_0x039f('0x6')](_0x039f('0x7'),_0x2a7b33,_[_0x039f('0x8')](_0xee452d,'message')[_0x039f('0x9')](',\x20'));_0x33920e[_0x039f('0xa')]();}else{logger['info'](_0x039f('0xb'),_0x2a7b33,_0x1b801f['priority']);if(_0x1b801f['priority']){var _0x501f07=_[_0x039f('0xc')](_0x33920e[_0x039f('0xd')](),{'p':_0x1b801f[_0x039f('0xe')]});if(_0x501f07>=0x0){logger[_0x039f('0xf')](_0x039f('0x10'),_0x2a7b33,_0x1b801f[_0x039f('0xe')]||'next',_0x501f07);_0x33920e[_0x039f('0x11')](_0x501f07);}else{logger[_0x039f('0xf')](_0x039f('0x12'),_0x2a7b33,_0x1b801f[_0x039f('0xe')]||_0x039f('0x11'));_0x33920e[_0x039f('0xa')]();}}else{_0x33920e[_0x039f('0x11')]();}}}catch(_0x53cc69){logger[_0x039f('0x6')](_0x039f('0x7'),_0x2a7b33,JSON['stringify'](_0x53cc69));_0x33920e[_0x039f('0xa')]();}};};
\ No newline at end of file
index a6da647..ca16bf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1a=['lodash','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','contact','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','channel','Message','create','then','info','next','catch','error','[%s][MESSAGE]\x20%s','stop'];(function(_0x1cf0b2,_0x28a5a7){var _0x55d20e=function(_0x5a513a){while(--_0x5a513a){_0x1cf0b2['push'](_0x1cf0b2['shift']());}};_0x55d20e(++_0x28a5a7);}(_0x6f1a,0x1f4));var _0xa6f1=function(_0x4b03b9,_0x3e3364){_0x4b03b9=_0x4b03b9-0x0;var _0xc33656=_0x6f1a[_0x4b03b9];return _0xc33656;};'use strict';var _=require(_0xa6f1('0x0'));var utils=require('./utils');var logger=require(_0xa6f1('0x1'))(_0xa6f1('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xa6f1('0x3')),'smsMessage':require(_0xa6f1('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xa6f1('0x5'))};exports[_0xa6f1('0x6')]=function(_0x32a7f0,_0x23a9d6){return function(_0x3e36b2){try{var _0x597605={'body':utils['getMustacheRender'](_0x23a9d6[0x0],this),'ContactId':this[_0xa6f1('0x7')]['id']};if(this['channel']===_0xa6f1('0x8')){_0x597605[_0xa6f1('0x9')]=this[_0xa6f1('0xa')]['id'];}else{_0x597605[_[_0xa6f1('0xb')](this['channel'])+_0xa6f1('0xc')]=this[_0xa6f1('0xa')]['id'];}_0x597605[_['upperFirst'](this['channel'])+_0xa6f1('0xd')]=this[_0xa6f1('0xe')]['id'];if(rpc[this[_0xa6f1('0xf')]+_0xa6f1('0x10')]){return rpc[this[_0xa6f1('0xf')]+'Message'][_0xa6f1('0x11')](_0x597605)[_0xa6f1('0x12')](function(_0x173cb7){logger[_0xa6f1('0x13')]('[%s][MESSAGE]\x20%s',_0x32a7f0,_0x597605['body']);_0x3e36b2[_0xa6f1('0x14')]();})[_0xa6f1('0x15')](function(_0x4bc65e){logger[_0xa6f1('0x16')](_0xa6f1('0x17'),_0x32a7f0,JSON['stringify'](_0x4bc65e));_0x3e36b2[_0xa6f1('0x18')]();});}}catch(_0x3ea3ec){logger[_0xa6f1('0x16')](_0xa6f1('0x17'),_0x32a7f0,JSON['stringify'](_0x3ea3ec));_0x3e36b2[_0xa6f1('0x18')]();}};};
\ No newline at end of file
+var _0x128f=['body','next','error','stop','stringify','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','getMustacheRender','contact','channel','chat','account','upperFirst','AccountId','InteractionId','interaction','Message','create','info','[%s][MESSAGE]\x20%s'];(function(_0x32eb6d,_0x4ccf46){var _0x1a5f58=function(_0x20a98d){while(--_0x20a98d){_0x32eb6d['push'](_0x32eb6d['shift']());}};_0x1a5f58(++_0x4ccf46);}(_0x128f,0xff));var _0xf128=function(_0x567107,_0x2e3ac0){_0x567107=_0x567107-0x0;var _0x212e64=_0x128f[_0x567107];return _0x212e64;};'use strict';var _=require('lodash');var utils=require('./utils');var logger=require(_0xf128('0x0'))(_0xf128('0x1'));var rpc={'chatMessage':require(_0xf128('0x2')),'openchannelMessage':require(_0xf128('0x3')),'mailMessage':require(_0xf128('0x4')),'smsMessage':require(_0xf128('0x5')),'faxMessage':require(_0xf128('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x1d896f,_0x3dd21f){return function(_0x446c34){try{var _0x44b6a9={'body':utils[_0xf128('0x7')](_0x3dd21f[0x0],this),'ContactId':this[_0xf128('0x8')]['id']};if(this[_0xf128('0x9')]===_0xf128('0xa')){_0x44b6a9['ChatWebsiteId']=this[_0xf128('0xb')]['id'];}else{_0x44b6a9[_[_0xf128('0xc')](this[_0xf128('0x9')])+_0xf128('0xd')]=this[_0xf128('0xb')]['id'];}_0x44b6a9[_[_0xf128('0xc')](this[_0xf128('0x9')])+_0xf128('0xe')]=this[_0xf128('0xf')]['id'];if(rpc[this[_0xf128('0x9')]+_0xf128('0x10')]){return rpc[this[_0xf128('0x9')]+_0xf128('0x10')][_0xf128('0x11')](_0x44b6a9)['then'](function(_0x51276a){logger[_0xf128('0x12')](_0xf128('0x13'),_0x1d896f,_0x44b6a9[_0xf128('0x14')]);_0x446c34[_0xf128('0x15')]();})['catch'](function(_0xa86407){logger[_0xf128('0x16')](_0xf128('0x13'),_0x1d896f,JSON['stringify'](_0xa86407));_0x446c34[_0xf128('0x17')]();});}}catch(_0x4287a7){logger[_0xf128('0x16')](_0xf128('0x13'),_0x1d896f,JSON[_0xf128('0x18')](_0x4287a7));_0x446c34[_0xf128('0x17')]();}};};
\ No newline at end of file
index 7d90870..f34ff2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20fb=['./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','stringify','stop'];(function(_0x374448,_0x1adc66){var _0x100f61=function(_0x34b5c1){while(--_0x34b5c1){_0x374448['push'](_0x374448['shift']());}};_0x100f61(++_0x1adc66);}(_0x20fb,0xaa));var _0xb20f=function(_0x75f869,_0x3690d6){_0x75f869=_0x75f869-0x0;var _0x10af8b=_0x20fb[_0x75f869];return _0x10af8b;};'use strict';var utils=require(_0xb20f('0x0'));var logger=require(_0xb20f('0x1'))(_0xb20f('0x2'));exports[_0xb20f('0x3')]=function(_0x187d4e,_0x2406f8){return function(_0x3e655b){try{logger[_0xb20f('0x4')](_0xb20f('0x5'),_0x187d4e,utils[_0xb20f('0x6')](_0x2406f8[0x0],this));_0x3e655b[_0xb20f('0x7')]();}catch(_0x37c565){logger['error'](_0xb20f('0x5'),_0x187d4e,JSON[_0xb20f('0x8')](_0x37c565));_0x3e655b[_0xb20f('0x9')]();}};};
\ No newline at end of file
+var _0xb424=['consequence','info','getMustacheRender','error','[%s][NOOP]\x20%s','stringify','./utils','../../../../config/logger','routing'];(function(_0x40f154,_0x22a66d){var _0x3f900a=function(_0x4cf737){while(--_0x4cf737){_0x40f154['push'](_0x40f154['shift']());}};_0x3f900a(++_0x22a66d);}(_0xb424,0x16e));var _0x4b42=function(_0x219fa0,_0x18b239){_0x219fa0=_0x219fa0-0x0;var _0xc603fb=_0xb424[_0x219fa0];return _0xc603fb;};'use strict';var utils=require(_0x4b42('0x0'));var logger=require(_0x4b42('0x1'))(_0x4b42('0x2'));exports[_0x4b42('0x3')]=function(_0x1ee384,_0x11da8d){return function(_0x1af29d){try{logger[_0x4b42('0x4')]('[%s][NOOP]\x20%s',_0x1ee384,utils[_0x4b42('0x5')](_0x11da8d[0x0],this));_0x1af29d['next']();}catch(_0x978132){logger[_0x4b42('0x6')](_0x4b42('0x7'),_0x1ee384,JSON[_0x4b42('0x8')](_0x978132));_0x1af29d['stop']();}};};
\ No newline at end of file
index f9cbff6..cbfa87e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde00=['QueueId','upperFirst','message','chat','AccountId','info','name','QueueReport','create','error','create\x20queue\x20report','accepted','update','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','[%s][QUEUE]\x20%s','join','stop','Queues','createQueue','atimeout','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue','from','joinAt','queue_id','account','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel'];(function(_0x2f47b1,_0x115f88){var _0x52e7c0=function(_0xb1e219){while(--_0xb1e219){_0x2f47b1['push'](_0x2f47b1['shift']());}};_0x52e7c0(++_0x115f88);}(_0xde00,0x19b));var _0x0de0=function(_0x572eea,_0x853014){_0x572eea=_0x572eea-0x0;var _0x3c8359=_0xde00[_0x572eea];return _0x3c8359;};'use strict';var schema=require(_0x0de0('0x0'));var _=require(_0x0de0('0x1'));var util=require(_0x0de0('0x2'));var seqqueue=require(_0x0de0('0x3'));var moment=require(_0x0de0('0x4'));var Redis=require(_0x0de0('0x5'));var config=require(_0x0de0('0x6'));var logger=require(_0x0de0('0x7'))(_0x0de0('0x8'));var strategy=require(_0x0de0('0x9'));config[_0x0de0('0xa')]=_[_0x0de0('0xb')](config[_0x0de0('0xa')],{'host':_0x0de0('0xc'),'port':0x18eb});var io=require(_0x0de0('0xd'))(new Redis(config[_0x0de0('0xa')]));var attributes=['id','queue_id','account',_0x0de0('0xe'),_0x0de0('0xf'),_0x0de0('0x10')];function emit(_0xf20639,_0x1270c2,_0x311ff4){io['to'](_0xf20639)['emit'](_0x1270c2,_0x311ff4);}function emitChannelQueueInteraction(_0x2b03ae,_0x1f06ab,_0xf0054e,_0x2d6daa,_0x4ae30e,_0x5857c1,_0x16462f,_0x35910c){var _0x714364=_['clone'](_0xf0054e);_0x714364[_0x0de0('0x11')]=_0x35910c;_0x714364[_0x0de0('0xe')]=_0x1f06ab;_0x714364[_0x0de0('0x12')]=_0x2d6daa;_0x714364['id']=_0x4ae30e;if(_0x5857c1){_0x16462f[util[_0x0de0('0x13')](_0x0de0('0x14'),_0x2b03ae)][_0x4ae30e]=_['pick'](_0x714364,attributes);}else{delete _0x16462f[util[_0x0de0('0x13')](_0x0de0('0x14'),_0x2b03ae)][_0x4ae30e];}emit(util[_0x0de0('0x13')](_0x0de0('0x15'),_0x2b03ae,_0x1f06ab),util[_0x0de0('0x13')](_0x0de0('0x16'),_0x2b03ae,_0x5857c1?_0x0de0('0x17'):_0x0de0('0x18')),_[_0x0de0('0x19')](_0x714364,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x0de0('0x1a')),'chatQueueReport':require(_0x0de0('0x1b')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x0de0('0x1c')),'whatsappQueueReport':require(_0x0de0('0x1d'))};var queue=schema({'name':{'type':_0x0de0('0x1e'),'required':!![],'message':_0x0de0('0x1f')},'timeout':{'type':'number','message':_0x0de0('0x20')}});function startRouting(_0x59d208,_0x4c7028,_0x407eff,_0x1fe2f3){if(_0x59d208&&_0x4c7028&&_0x407eff){_0x4c7028[_0x0de0('0x21')]+=0x1;var _0x5058ce={'uniqueid':_0x59d208,'from':_0x407eff['body']?_0x407eff[_0x0de0('0x22')][_0x0de0('0xf')]:'','joinAt':moment()[_0x0de0('0x13')](_0x0de0('0x23')),'ContactId':_0x407eff[_0x0de0('0x24')]?_0x407eff['contact']['id']:null,'ListId':_0x407eff[_0x0de0('0x25')]?_0x407eff[_0x0de0('0x25')]['id']:null};_0x5058ce[_['upperFirst'](_0x407eff[_0x0de0('0x26')])+_0x0de0('0x27')]=_0x4c7028['id']||null;_0x5058ce[_['upperFirst'](_0x407eff[_0x0de0('0x26')])+'InteractionId']=_0x407eff['interaction']?_0x407eff['interaction']['id']:null;_0x5058ce[_[_0x0de0('0x28')](_0x407eff[_0x0de0('0x26')])+'MessageId']=_0x407eff['message']?_0x407eff[_0x0de0('0x29')]['id']:null;_0x5058ce[_['upperFirst'](_0x407eff['channel'])+(_0x407eff[_0x0de0('0x26')]!==_0x0de0('0x2a')?_0x0de0('0x2b'):'WebsiteId')]=_0x407eff['account']?_0x407eff[_0x0de0('0x12')]['id']:null;logger[_0x0de0('0x2c')](util[_0x0de0('0x13')]('[%s][START:QUEUE][NAME:%s]',_0x59d208,_0x4c7028[_0x0de0('0x2d')]));emitChannelQueueInteraction(_0x407eff[_0x0de0('0x26')],_0x4c7028[_0x0de0('0x2d')],_0x5058ce,_0x407eff['account'][_0x0de0('0x2d')],_0x407eff[_0x0de0('0x29')]['id'],!![],_0x1fe2f3,_0x4c7028['id']);if(rpc[_0x407eff[_0x0de0('0x26')]+_0x0de0('0x2e')]){return rpc[_0x407eff[_0x0de0('0x26')]+_0x0de0('0x2e')][_0x0de0('0x2f')](_0x5058ce)['catch'](function(_0x3d5cc4){logger[_0x0de0('0x30')](_0x0de0('0x31'));});}}}function stopRouting(_0x2ad4ae,_0x28ae33,_0x1cdde2,_0x50940b){if(_0x2ad4ae&&_0x28ae33){_0x28ae33[_0x0de0('0x21')]-=0x1;var _0x2ebb86={'leaveAt':moment()['format'](_0x0de0('0x23')),'acceptAt':moment()[_0x0de0('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x0de0('0x32')};logger['info'](util[_0x0de0('0x13')]('[%s][STOP:QUEUE][NAME:%s]',_0x2ad4ae,_0x28ae33[_0x0de0('0x2d')]));emitChannelQueueInteraction(_0x1cdde2['channel'],_0x28ae33['name'],_0x1cdde2[_0x0de0('0x22')],_0x1cdde2['account'][_0x0de0('0x2d')],_0x1cdde2[_0x0de0('0x29')]['id'],![],_0x50940b,_0x28ae33['id']);if(rpc[_0x1cdde2[_0x0de0('0x26')]+_0x0de0('0x2e')]){return rpc[_0x1cdde2[_0x0de0('0x26')]+_0x0de0('0x2e')][_0x0de0('0x33')](_0x2ad4ae,_0x2ebb86)[_0x0de0('0x34')](function(_0x227ad9){logger[_0x0de0('0x30')](_0x0de0('0x35'));});}}}function endRouting(_0x2f4952,_0x51971e,_0x20dfa7,_0x3920ed){if(_0x2f4952&&_0x51971e){_0x51971e[_0x0de0('0x21')]-=0x1;var _0x13b6b9={'leaveAt':moment()[_0x0de0('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x0de0('0x13')](_0x0de0('0x23')),'reason':_0x0de0('0x36')};logger[_0x0de0('0x2c')](util['format'](_0x0de0('0x37'),_0x2f4952,_0x51971e[_0x0de0('0x2d')]));emitChannelQueueInteraction(_0x20dfa7[_0x0de0('0x26')],_0x51971e['name'],_0x20dfa7[_0x0de0('0x22')],_0x20dfa7[_0x0de0('0x12')]['name'],_0x20dfa7[_0x0de0('0x29')]['id'],![],_0x3920ed);if(rpc[_0x20dfa7[_0x0de0('0x26')]+_0x0de0('0x2e')]){return rpc[_0x20dfa7[_0x0de0('0x26')]+'QueueReport']['update'](_0x2f4952,_0x13b6b9)[_0x0de0('0x34')](function(_0x5bf4f0){logger[_0x0de0('0x30')](_0x0de0('0x35'));});}}}function handleFindQueue(_0x217103){return function(_0x56a897){return _0x56a897[_0x0de0('0x2d')][_0x0de0('0x38')]()===_0x217103['toLowerCase']();};}exports[_0x0de0('0x39')]=function(_0x405f2c,_0x46bd1f,_0x5775f8,_0x49982c){return function(_0x3f03d0){try{var _0x25e8fd={'name':_0x46bd1f[0x0],'timeout':_0x46bd1f[0x1]};var _0x5c99b6=queue['validate'](_0x25e8fd,{'typecast':!![]});if(_0x5c99b6['length']){logger[_0x0de0('0x30')](_0x0de0('0x3a'),_0x405f2c,_['map'](_0x5c99b6,_0x0de0('0x29'))[_0x0de0('0x3b')](',\x20'));_0x3f03d0[_0x0de0('0x3c')]();}else{var _0x3a1b55=_['find'](_0x5775f8[_0x49982c['channel']+_0x0de0('0x3d')],handleFindQueue(_0x25e8fd['name']));if(_0x3a1b55){startRouting(_0x405f2c,_0x3a1b55,_0x49982c,_0x5775f8);var _0x837366=(_0x3a1b55[_0x0de0('0x36')]||0xa)*0x3e8;var _0x2ec1a2=(_0x25e8fd[_0x0de0('0x36')]||0x14)*0x3e8;var _0x41c3bf,_0x46f495;if(_0x837366>_0x2ec1a2){_0x2ec1a2=_0x837366;}var _0x265723=seqqueue[_0x0de0('0x3e')](_0x837366);_0x265723['id']=_0x405f2c;_0x265723[_0x0de0('0x3f')]=_0x837366;_0x265723[_0x0de0('0x40')]=_0x2ec1a2;_0x265723[_0x0de0('0x26')]=_0x49982c[_0x0de0('0x26')];_0x5775f8['rules'][_0x405f2c]['on'](_0x0de0('0x41'),function(){logger['info'](_0x0de0('0x42'),_0x405f2c);stopRouting(_0x405f2c,_0x3a1b55,_0x49982c,_0x5775f8);clearTimeout(_0x41c3bf);_0x41c3bf=undefined;_0x265723[_0x0de0('0x43')](!![]);if(_0x5775f8[_0x0de0('0x44')][_0x405f2c]){delete _0x5775f8[_0x0de0('0x44')][_0x405f2c];}_0x3f03d0[_0x0de0('0x3c')]();});_0x5775f8[_0x0de0('0x44')][_0x405f2c]['on']('complete',function(){if(_0x5775f8[_0x0de0('0x44')][_0x405f2c]){delete _0x5775f8[_0x0de0('0x44')][_0x405f2c];}});_0x41c3bf=setTimeout(function(){logger[_0x0de0('0x2c')](_0x0de0('0x45'),_0x405f2c);endRouting(_0x405f2c,_0x3a1b55,_0x49982c,_0x5775f8);clearTimeout(_0x41c3bf);_0x265723['close'](!![]);_0x3f03d0[_0x0de0('0x46')]();},_0x2ec1a2);switch(_0x3a1b55['strategy']){case _0x0de0('0x47'):strategy['rrmemory'](_0x265723,_0x3a1b55,_0x5775f8,_0x49982c);break;default:strategy[_0x0de0('0x48')](_0x265723,_0x3a1b55,_0x5775f8,_0x49982c);}}else{logger[_0x0de0('0x30')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x405f2c,_0x25e8fd['name']);_0x3f03d0[_0x0de0('0x3c')]();}}}catch(_0xba4db9){console[_0x0de0('0x49')](_0xba4db9);logger[_0x0de0('0x30')]('[%s][QUEUE]\x20%s',_0x405f2c,_0xba4db9[_0x0de0('0x4a')]);_0x3f03d0[_0x0de0('0x3c')]();}};};
\ No newline at end of file
+var _0x9341=['create','catch','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','body','toLowerCase','consequence','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','atimeout','rules','end','close','complete','next','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','socket.io-emitter','queue_id','queue','from','emit','clone','account','%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','interaction','MessageId','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport'];(function(_0x23692b,_0x3fa3af){var _0x3b912b=function(_0x2f4143){while(--_0x2f4143){_0x23692b['push'](_0x23692b['shift']());}};_0x3b912b(++_0x3fa3af);}(_0x9341,0xff));var _0x1934=function(_0x35b263,_0x1a63c0){_0x35b263=_0x35b263-0x0;var _0x3259ff=_0x9341[_0x35b263];return _0x3259ff;};'use strict';var schema=require(_0x1934('0x0'));var _=require(_0x1934('0x1'));var util=require('util');var seqqueue=require(_0x1934('0x2'));var moment=require('moment');var Redis=require(_0x1934('0x3'));var config=require(_0x1934('0x4'));var logger=require(_0x1934('0x5'))(_0x1934('0x6'));var strategy=require(_0x1934('0x7'));config[_0x1934('0x8')]=_[_0x1934('0x9')](config[_0x1934('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x1934('0xa'))(new Redis(config[_0x1934('0x8')]));var attributes=['id',_0x1934('0xb'),'account',_0x1934('0xc'),_0x1934('0xd'),'joinAt'];function emit(_0x19afda,_0x5edc23,_0x4ab871){io['to'](_0x19afda)[_0x1934('0xe')](_0x5edc23,_0x4ab871);}function emitChannelQueueInteraction(_0x37bc9b,_0x32063d,_0x56e74d,_0x550913,_0x4f9d49,_0x4d6d07,_0x3ed956,_0x244165){var _0x31683e=_[_0x1934('0xf')](_0x56e74d);_0x31683e[_0x1934('0xb')]=_0x244165;_0x31683e[_0x1934('0xc')]=_0x32063d;_0x31683e[_0x1934('0x10')]=_0x550913;_0x31683e['id']=_0x4f9d49;if(_0x4d6d07){_0x3ed956[util['format'](_0x1934('0x11'),_0x37bc9b)][_0x4f9d49]=_[_0x1934('0x12')](_0x31683e,attributes);}else{delete _0x3ed956[util[_0x1934('0x13')](_0x1934('0x11'),_0x37bc9b)][_0x4f9d49];}emit(util[_0x1934('0x13')](_0x1934('0x14'),_0x37bc9b,_0x32063d),util[_0x1934('0x13')](_0x1934('0x15'),_0x37bc9b,_0x4d6d07?_0x1934('0x16'):_0x1934('0x17')),_['pick'](_0x31683e,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x1934('0x18')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x1934('0x19'),'required':!![],'message':_0x1934('0x1a')},'timeout':{'type':_0x1934('0x1b'),'message':_0x1934('0x1c')}});function startRouting(_0x20b801,_0x5371e9,_0x2645bc,_0x1eea85){if(_0x20b801&&_0x5371e9&&_0x2645bc){_0x5371e9[_0x1934('0x1d')]+=0x1;var _0x47c281={'uniqueid':_0x20b801,'from':_0x2645bc['body']?_0x2645bc['body'][_0x1934('0xd')]:'','joinAt':moment()[_0x1934('0x13')](_0x1934('0x1e')),'ContactId':_0x2645bc[_0x1934('0x1f')]?_0x2645bc[_0x1934('0x1f')]['id']:null,'ListId':_0x2645bc['list']?_0x2645bc[_0x1934('0x20')]['id']:null};_0x47c281[_[_0x1934('0x21')](_0x2645bc[_0x1934('0x22')])+'QueueId']=_0x5371e9['id']||null;_0x47c281[_['upperFirst'](_0x2645bc[_0x1934('0x22')])+'InteractionId']=_0x2645bc['interaction']?_0x2645bc[_0x1934('0x23')]['id']:null;_0x47c281[_[_0x1934('0x21')](_0x2645bc[_0x1934('0x22')])+_0x1934('0x24')]=_0x2645bc[_0x1934('0x25')]?_0x2645bc[_0x1934('0x25')]['id']:null;_0x47c281[_[_0x1934('0x21')](_0x2645bc[_0x1934('0x22')])+(_0x2645bc[_0x1934('0x22')]!==_0x1934('0x26')?_0x1934('0x27'):_0x1934('0x28'))]=_0x2645bc[_0x1934('0x10')]?_0x2645bc[_0x1934('0x10')]['id']:null;logger[_0x1934('0x29')](util[_0x1934('0x13')](_0x1934('0x2a'),_0x20b801,_0x5371e9[_0x1934('0x2b')]));emitChannelQueueInteraction(_0x2645bc['channel'],_0x5371e9['name'],_0x47c281,_0x2645bc[_0x1934('0x10')][_0x1934('0x2b')],_0x2645bc['message']['id'],!![],_0x1eea85,_0x5371e9['id']);if(rpc[_0x2645bc['channel']+_0x1934('0x2c')]){return rpc[_0x2645bc['channel']+_0x1934('0x2c')][_0x1934('0x2d')](_0x47c281)[_0x1934('0x2e')](function(_0x3269ca){logger[_0x1934('0x2f')](_0x1934('0x30'));});}}}function stopRouting(_0x274738,_0x19ec2d,_0x465364,_0x3397f4){if(_0x274738&&_0x19ec2d){_0x19ec2d[_0x1934('0x1d')]-=0x1;var _0x139ead={'leaveAt':moment()[_0x1934('0x13')](_0x1934('0x1e')),'acceptAt':moment()[_0x1934('0x13')](_0x1934('0x1e')),'reason':_0x1934('0x31')};logger['info'](util[_0x1934('0x13')](_0x1934('0x32'),_0x274738,_0x19ec2d[_0x1934('0x2b')]));emitChannelQueueInteraction(_0x465364[_0x1934('0x22')],_0x19ec2d[_0x1934('0x2b')],_0x465364['body'],_0x465364['account'][_0x1934('0x2b')],_0x465364['message']['id'],![],_0x3397f4,_0x19ec2d['id']);if(rpc[_0x465364['channel']+_0x1934('0x2c')]){return rpc[_0x465364[_0x1934('0x22')]+_0x1934('0x2c')][_0x1934('0x33')](_0x274738,_0x139ead)[_0x1934('0x2e')](function(_0x957cec){logger[_0x1934('0x2f')](_0x1934('0x34'));});}}}function endRouting(_0xebf902,_0x5245f2,_0x2ccbd7,_0x58d691){if(_0xebf902&&_0x5245f2){_0x5245f2['waiting']-=0x1;var _0x2e0389={'leaveAt':moment()[_0x1934('0x13')](_0x1934('0x1e')),'exitAt':moment()[_0x1934('0x13')](_0x1934('0x1e')),'reason':_0x1934('0x35')};logger[_0x1934('0x29')](util['format'](_0x1934('0x36'),_0xebf902,_0x5245f2[_0x1934('0x2b')]));emitChannelQueueInteraction(_0x2ccbd7[_0x1934('0x22')],_0x5245f2[_0x1934('0x2b')],_0x2ccbd7[_0x1934('0x37')],_0x2ccbd7['account'][_0x1934('0x2b')],_0x2ccbd7[_0x1934('0x25')]['id'],![],_0x58d691);if(rpc[_0x2ccbd7['channel']+'QueueReport']){return rpc[_0x2ccbd7['channel']+_0x1934('0x2c')]['update'](_0xebf902,_0x2e0389)['catch'](function(_0x5c5218){logger['error']('update\x20queue\x20report');});}}}function handleFindQueue(_0x5bc48f){return function(_0x2285e0){return _0x2285e0[_0x1934('0x2b')][_0x1934('0x38')]()===_0x5bc48f[_0x1934('0x38')]();};}exports[_0x1934('0x39')]=function(_0x43e046,_0x459356,_0x485cbb,_0x12521d){return function(_0x5a989e){try{var _0x1791c9={'name':_0x459356[0x0],'timeout':_0x459356[0x1]};var _0x48f2e1=queue[_0x1934('0x0')](_0x1791c9,{'typecast':!![]});if(_0x48f2e1['length']){logger[_0x1934('0x2f')](_0x1934('0x3a'),_0x43e046,_[_0x1934('0x3b')](_0x48f2e1,_0x1934('0x25'))[_0x1934('0x3c')](',\x20'));_0x5a989e[_0x1934('0x3d')]();}else{var _0x2190c9=_[_0x1934('0x3e')](_0x485cbb[_0x12521d['channel']+_0x1934('0x3f')],handleFindQueue(_0x1791c9[_0x1934('0x2b')]));if(_0x2190c9){startRouting(_0x43e046,_0x2190c9,_0x12521d,_0x485cbb);var _0x57d549=(_0x2190c9[_0x1934('0x35')]||0xa)*0x3e8;var _0x2e4553=(_0x1791c9['timeout']||0x14)*0x3e8;var _0x2dc075,_0x107992;if(_0x57d549>_0x2e4553){_0x2e4553=_0x57d549;}var _0x1f1abf=seqqueue[_0x1934('0x40')](_0x57d549);_0x1f1abf['id']=_0x43e046;_0x1f1abf[_0x1934('0x41')]=_0x57d549;_0x1f1abf['qtimeout']=_0x2e4553;_0x1f1abf[_0x1934('0x22')]=_0x12521d['channel'];_0x485cbb[_0x1934('0x42')][_0x43e046]['on'](_0x1934('0x43'),function(){logger[_0x1934('0x29')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x43e046);stopRouting(_0x43e046,_0x2190c9,_0x12521d,_0x485cbb);clearTimeout(_0x2dc075);_0x2dc075=undefined;_0x1f1abf[_0x1934('0x44')](!![]);if(_0x485cbb[_0x1934('0x42')][_0x43e046]){delete _0x485cbb[_0x1934('0x42')][_0x43e046];}_0x5a989e['stop']();});_0x485cbb[_0x1934('0x42')][_0x43e046]['on'](_0x1934('0x45'),function(){if(_0x485cbb[_0x1934('0x42')][_0x43e046]){delete _0x485cbb[_0x1934('0x42')][_0x43e046];}});_0x2dc075=setTimeout(function(){logger[_0x1934('0x29')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x43e046);endRouting(_0x43e046,_0x2190c9,_0x12521d,_0x485cbb);clearTimeout(_0x2dc075);_0x1f1abf[_0x1934('0x44')](!![]);_0x5a989e[_0x1934('0x46')]();},_0x2e4553);switch(_0x2190c9['strategy']){case _0x1934('0x47'):strategy[_0x1934('0x47')](_0x1f1abf,_0x2190c9,_0x485cbb,_0x12521d);break;default:strategy['beepall'](_0x1f1abf,_0x2190c9,_0x485cbb,_0x12521d);}}else{logger[_0x1934('0x2f')](_0x1934('0x48'),_0x43e046,_0x1791c9[_0x1934('0x2b')]);_0x5a989e['stop']();}}}catch(_0x5e2d20){console[_0x1934('0x49')](_0x5e2d20);logger['error'](_0x1934('0x3a'),_0x43e046,_0x5e2d20[_0x1934('0x4a')]);_0x5a989e[_0x1934('0x3d')]();}};};
\ No newline at end of file
index d86317d..611a66a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1884=['info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','realtime','channel','busy','busyQueue','notificationId','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','agent','push','handleRun','bind','handleTimeout','timeout','handleDrained','prototype'];(function(_0x407d44,_0x274590){var _0x5567e1=function(_0x34e221){while(--_0x34e221){_0x407d44['push'](_0x407d44['shift']());}};_0x5567e1(++_0x274590);}(_0x1884,0x11b));var _0x4188=function(_0x2ca7f6,_0x4fd707){_0x2ca7f6=_0x2ca7f6-0x0;var _0x17fac1=_0x1884[_0x2ca7f6];return _0x17fac1;};'use strict';var _=require(_0x4188('0x0'));var uuid=require(_0x4188('0x1'));var util=require(_0x4188('0x2'));var logger=require(_0x4188('0x3'))(_0x4188('0x4'));var Agent=function(_0x2e853c,_0x5f992e,_0x70ba65,_0x5b32c4){this['notificationId']=uuid['v4']();this[_0x4188('0x5')]=_0x2e853c;this[_0x4188('0x6')]=_0x5f992e;this['realtime']=_0x70ba65;this[_0x4188('0x4')]=_0x5b32c4;this[_0x4188('0x5')][_0x4188('0x7')](this[_0x4188('0x8')][_0x4188('0x9')](this),this[_0x4188('0xa')][_0x4188('0x9')](this));this[_0x4188('0x5')]['on'](_0x4188('0xb'),this['handleTimeout'][_0x4188('0x9')](this));this[_0x4188('0x5')]['on']('drained',this[_0x4188('0xc')]['bind'](this));};Agent['prototype'][_0x4188('0x7')]=function(){this[_0x4188('0x5')]['push'](this[_0x4188('0x8')][_0x4188('0x9')](this),this[_0x4188('0xa')][_0x4188('0x9')](this));};Agent[_0x4188('0xd')][_0x4188('0xc')]=function(){this['handleTimeout'](!![]);};Agent[_0x4188('0xd')][_0x4188('0x8')]=function(_0x4c3934){logger[_0x4188('0xe')]('[%s][AGENT]\x20try\x20with\x20%s',this['squeue']['id'],this['agent']['id']);if(_[_0x4188('0xf')](this['realtime'][_0x4188('0x10')][this[_0x4188('0x6')]['id']])){logger['info'](_0x4188('0x11'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0x4188('0x7')]['bind'](this),0x3e8);}else{if(this[_0x4188('0x4')][_0x4188('0x12')]||util[_0x4188('0x13')](this[_0x4188('0x5')]['id'],this[_0x4188('0x14')][_0x4188('0x10')][this[_0x4188('0x6')]['id']],this[_0x4188('0x5')][_0x4188('0x15')],![])){this['realtime']['agents'][this[_0x4188('0x6')]['id']][_0x4188('0x16')]=!![];this[_0x4188('0x14')][_0x4188('0x10')][this[_0x4188('0x6')]['id']][_0x4188('0x17')]=undefined;util['showNotification'](this[_0x4188('0x18')],this[_0x4188('0x5')]['id'],this[_0x4188('0x14')]['agents'][this[_0x4188('0x6')]['id']],null,this[_0x4188('0x4')]);util['writeLog'](this['squeue']['id'],this[_0x4188('0x14')]['agents'][this[_0x4188('0x6')]['id']],_0x4188('0x19')+(this[_0x4188('0x4')][_0x4188('0x12')]?_0x4188('0x1a'):''));}else{logger[_0x4188('0xe')](_0x4188('0x1b'),this[_0x4188('0x5')]['id'],this['agent']['id']);setTimeout(this['push'][_0x4188('0x9')](this),0x3e8);}}};Agent[_0x4188('0xd')][_0x4188('0xa')]=function(_0x244a42){if(_[_0x4188('0xf')](this[_0x4188('0x14')][_0x4188('0x10')][this['agent']['id']])){return logger[_0x4188('0xe')](_0x4188('0x11'),this[_0x4188('0x5')]['id'],this[_0x4188('0x6')]['id']);}else{logger[_0x4188('0xe')](_0x4188('0x1c'),this['squeue']['id'],this[_0x4188('0x6')]['id']);util[_0x4188('0x1d')](this['notificationId'],this[_0x4188('0x5')]['id'],this[_0x4188('0x14')]['agents'][this['agent']['id']],null,this[_0x4188('0x4')]);this[_0x4188('0x14')]['agents'][this[_0x4188('0x6')]['id']][_0x4188('0x16')]=![];this['realtime'][_0x4188('0x10')][this['agent']['id']]['busyQueue']=undefined;util['writeLog'](this[_0x4188('0x5')]['id'],this['realtime']['agents'][this[_0x4188('0x6')]['id']],_0x244a42?_0x4188('0x1e'):_0x4188('0x1f'));}if(!_0x244a42){setTimeout(this['push'][_0x4188('0x9')](this),0x3e8);}};function agent(_0xde8b84,_0x15c7f0,_0x248795,_0x2f92f1){return new Agent(_0xde8b84,_0x15c7f0,_0x248795,_0x2f92f1);}module[_0x4188('0x20')]=agent;
\ No newline at end of file
+var _0x81ce=['prototype','handleRun','handleDrained','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','busy','busyQueue','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','bind','timeout','handleTimeout'];(function(_0x4a8919,_0x4db7bc){var _0x228ba3=function(_0x520ccc){while(--_0x520ccc){_0x4a8919['push'](_0x4a8919['shift']());}};_0x228ba3(++_0x4db7bc);}(_0x81ce,0x94));var _0xe81c=function(_0x508006,_0x278817){_0x508006=_0x508006-0x0;var _0x421b0f=_0x81ce[_0x508006];return _0x421b0f;};'use strict';var _=require(_0xe81c('0x0'));var uuid=require('uuid');var util=require(_0xe81c('0x1'));var logger=require(_0xe81c('0x2'))(_0xe81c('0x3'));var Agent=function(_0x146521,_0x1132a7,_0x2a0ee5,_0x5d5458){this[_0xe81c('0x4')]=uuid['v4']();this[_0xe81c('0x5')]=_0x146521;this[_0xe81c('0x6')]=_0x1132a7;this[_0xe81c('0x7')]=_0x2a0ee5;this[_0xe81c('0x3')]=_0x5d5458;this[_0xe81c('0x5')][_0xe81c('0x8')](this['handleRun'][_0xe81c('0x9')](this),this['handleTimeout'][_0xe81c('0x9')](this));this[_0xe81c('0x5')]['on'](_0xe81c('0xa'),this[_0xe81c('0xb')][_0xe81c('0x9')](this));this[_0xe81c('0x5')]['on']('drained',this['handleDrained'][_0xe81c('0x9')](this));};Agent[_0xe81c('0xc')]['push']=function(){this[_0xe81c('0x5')]['push'](this[_0xe81c('0xd')][_0xe81c('0x9')](this),this[_0xe81c('0xb')][_0xe81c('0x9')](this));};Agent[_0xe81c('0xc')][_0xe81c('0xe')]=function(){this['handleTimeout'](!![]);};Agent['prototype'][_0xe81c('0xd')]=function(_0x37fe6d){logger[_0xe81c('0xf')](_0xe81c('0x10'),this[_0xe81c('0x5')]['id'],this['agent']['id']);if(_[_0xe81c('0x11')](this[_0xe81c('0x7')][_0xe81c('0x12')][this[_0xe81c('0x6')]['id']])){logger[_0xe81c('0xf')](_0xe81c('0x13'),this[_0xe81c('0x5')]['id'],this['agent']['id']);setTimeout(this[_0xe81c('0x8')][_0xe81c('0x9')](this),0x3e8);}else{if(this[_0xe81c('0x3')][_0xe81c('0x14')]||util[_0xe81c('0x15')](this['squeue']['id'],this[_0xe81c('0x7')][_0xe81c('0x12')][this['agent']['id']],this['squeue'][_0xe81c('0x16')],![])){this[_0xe81c('0x7')]['agents'][this['agent']['id']][_0xe81c('0x17')]=!![];this[_0xe81c('0x7')]['agents'][this['agent']['id']][_0xe81c('0x18')]=undefined;util['showNotification'](this[_0xe81c('0x4')],this[_0xe81c('0x5')]['id'],this[_0xe81c('0x7')][_0xe81c('0x12')][this[_0xe81c('0x6')]['id']],null,this['routing']);util[_0xe81c('0x19')](this[_0xe81c('0x5')]['id'],this[_0xe81c('0x7')][_0xe81c('0x12')][this[_0xe81c('0x6')]['id']],_0xe81c('0x1a')+(this[_0xe81c('0x3')]['forcedOwnership']?_0xe81c('0x1b'):''));}else{logger[_0xe81c('0xf')](_0xe81c('0x1c'),this[_0xe81c('0x5')]['id'],this['agent']['id']);setTimeout(this[_0xe81c('0x8')][_0xe81c('0x9')](this),0x3e8);}}};Agent[_0xe81c('0xc')][_0xe81c('0xb')]=function(_0x2a5cd3){if(_[_0xe81c('0x11')](this[_0xe81c('0x7')]['agents'][this[_0xe81c('0x6')]['id']])){return logger[_0xe81c('0xf')](_0xe81c('0x13'),this[_0xe81c('0x5')]['id'],this[_0xe81c('0x6')]['id']);}else{logger[_0xe81c('0xf')](_0xe81c('0x1d'),this[_0xe81c('0x5')]['id'],this[_0xe81c('0x6')]['id']);util['hideNotification'](this[_0xe81c('0x4')],this[_0xe81c('0x5')]['id'],this[_0xe81c('0x7')][_0xe81c('0x12')][this[_0xe81c('0x6')]['id']],null,this['routing']);this['realtime'][_0xe81c('0x12')][this[_0xe81c('0x6')]['id']][_0xe81c('0x17')]=![];this[_0xe81c('0x7')]['agents'][this['agent']['id']][_0xe81c('0x18')]=undefined;util[_0xe81c('0x19')](this['squeue']['id'],this[_0xe81c('0x7')][_0xe81c('0x12')][this[_0xe81c('0x6')]['id']],_0x2a5cd3?'STOP':_0xe81c('0x1e'));}if(!_0x2a5cd3){setTimeout(this[_0xe81c('0x8')]['bind'](this),0x3e8);}};function agent(_0x2b9328,_0x5ad26a,_0x1516a1,_0x1f2a57){return new Agent(_0x2b9328,_0x5ad26a,_0x1516a1,_0x1f2a57);}module[_0xe81c('0x1f')]=agent;
\ No newline at end of file
index 7b086c0..d576530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f5=['uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','isNil','Agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','writeLog','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','length','hideNotification','STOP','TIMEOUT','busy','busyQueue','exports','lodash'];(function(_0x7a5636,_0x268765){var _0x2191fa=function(_0x3c6ef3){while(--_0x3c6ef3){_0x7a5636['push'](_0x7a5636['shift']());}};_0x2191fa(++_0x268765);}(_0x82f5,0x15d));var _0x582f=function(_0x1affa7,_0x53fe51){_0x1affa7=_0x1affa7-0x0;var _0xb7402c=_0x82f5[_0x1affa7];return _0xb7402c;};'use strict';var _=require(_0x582f('0x0'));var uuid=require(_0x582f('0x1'));var util=require(_0x582f('0x2'));var logger=require(_0x582f('0x3'))(_0x582f('0x4'));var Beepall=function(_0x5a8ca2,_0x4e1ebd,_0x22c0b1,_0x3f3bde){this[_0x582f('0x5')]=uuid['v4']();this[_0x582f('0x6')]=_0x5a8ca2;this[_0x582f('0x7')]=_0x4e1ebd;this[_0x582f('0x8')]=_0x22c0b1;this[_0x582f('0x4')]=_0x3f3bde;this['squeue'][_0x582f('0x9')](this['handleRun'][_0x582f('0xa')](this),this[_0x582f('0xb')][_0x582f('0xa')](this));this['squeue']['on'](_0x582f('0xc'),this[_0x582f('0xb')]['bind'](this));this[_0x582f('0x6')]['on'](_0x582f('0xd'),this[_0x582f('0xe')][_0x582f('0xa')](this));};Beepall[_0x582f('0xf')]['push']=function(){this['squeue'][_0x582f('0x9')](this[_0x582f('0x10')][_0x582f('0xa')](this),this[_0x582f('0xb')][_0x582f('0xa')](this));};Beepall['prototype'][_0x582f('0xe')]=function(_0x360c1c){this['handleTimeout'](!![]);};Beepall[_0x582f('0xf')][_0x582f('0x10')]=function(_0x3e374b){var _0x16e2ce=!![];if(!_[_0x582f('0x11')](this[_0x582f('0x7')])&&!_[_0x582f('0x11')](this[_0x582f('0x7')][_0x582f('0x12')])&&this[_0x582f('0x7')][_0x582f('0x12')]['length']>0x0){for(var _0x18a8a3=0x0,_0x1f055b;_0x18a8a3<this[_0x582f('0x7')][_0x582f('0x12')]['length'];_0x18a8a3+=0x1){_0x1f055b=this[_0x582f('0x7')][_0x582f('0x12')][_0x18a8a3]['id'];if(_[_0x582f('0x11')](this[_0x582f('0x8')]['agents'][_0x1f055b])){logger[_0x582f('0x13')](_0x582f('0x14'),this['squeue']['id'],_0x1f055b);}else{if(util[_0x582f('0x15')](this[_0x582f('0x6')]['id'],this['realtime'][_0x582f('0x16')][_0x1f055b],this[_0x582f('0x6')][_0x582f('0x17')],!![])){_0x16e2ce=![];util[_0x582f('0x18')](this[_0x582f('0x6')]['id'],this[_0x582f('0x8')]['agents'][_0x1f055b],'RINGING');this[_0x582f('0x8')][_0x582f('0x16')][_0x1f055b]['busy']=!![];this[_0x582f('0x8')][_0x582f('0x16')][_0x1f055b]['busyQueue']=this[_0x582f('0x7')]['name'];util[_0x582f('0x19')](this['notificationId'],this[_0x582f('0x6')]['id'],this['realtime']['agents'][_0x1f055b],this[_0x582f('0x7')],this['routing']);}}}if(_0x16e2ce){logger[_0x582f('0x13')](_0x582f('0x1a'),this[_0x582f('0x6')]['id']);setTimeout(this[_0x582f('0x9')][_0x582f('0xa')](this),0x3e8);}}else{logger[_0x582f('0x13')](_0x582f('0x1b'),this[_0x582f('0x6')]['id']);setTimeout(this[_0x582f('0x9')][_0x582f('0xa')](this),0x3e8);}};Beepall[_0x582f('0xf')][_0x582f('0xb')]=function(_0x54bdbc){if(!_[_0x582f('0x11')](this[_0x582f('0x7')])&&!_[_0x582f('0x11')](this['queue'][_0x582f('0x12')])){for(var _0x3a0c54=0x0,_0x159ad7;_0x3a0c54<this[_0x582f('0x7')][_0x582f('0x12')][_0x582f('0x1c')];_0x3a0c54+=0x1){_0x159ad7=this['queue'][_0x582f('0x12')][_0x3a0c54]['id'];if(_[_0x582f('0x11')](this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7])){logger[_0x582f('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x582f('0x6')]['id'],_0x159ad7);}else{util[_0x582f('0x1d')](this[_0x582f('0x5')],this['squeue']['id'],this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7],this[_0x582f('0x7')],this[_0x582f('0x4')]);util[_0x582f('0x18')](this[_0x582f('0x6')]['id'],this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7],_0x54bdbc?_0x582f('0x1e'):_0x582f('0x1f'));this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7][_0x582f('0x20')]=![];this[_0x582f('0x8')]['agents'][_0x159ad7][_0x582f('0x21')]=undefined;}}}if(!_0x54bdbc){setTimeout(this[_0x582f('0x9')][_0x582f('0xa')](this),0x3e8);}};function beepall(_0x369b00,_0x12b663,_0x3a95a2,_0x5be204){return new Beepall(_0x369b00,_0x12b663,_0x3a95a2,_0x5be204);}module[_0x582f('0x22')]=beepall;
\ No newline at end of file
+var _0xab86=['timeout','handleDrained','prototype','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','RINGING','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','STOP','TIMEOUT','busy','busyQueue','lodash','uuid','./util','notificationId','squeue','queue','realtime','routing','push','handleRun','bind','handleTimeout'];(function(_0x71171c,_0xe17f95){var _0x3d49dc=function(_0x5c4cf2){while(--_0x5c4cf2){_0x71171c['push'](_0x71171c['shift']());}};_0x3d49dc(++_0xe17f95);}(_0xab86,0x13e));var _0x6ab8=function(_0x130a82,_0x63ec1a){_0x130a82=_0x130a82-0x0;var _0x5204cf=_0xab86[_0x130a82];return _0x5204cf;};'use strict';var _=require(_0x6ab8('0x0'));var uuid=require(_0x6ab8('0x1'));var util=require(_0x6ab8('0x2'));var logger=require('../../../../../config/logger')('routing');var Beepall=function(_0xfa522f,_0x4bcc45,_0x1193a1,_0x48cb6a){this[_0x6ab8('0x3')]=uuid['v4']();this[_0x6ab8('0x4')]=_0xfa522f;this[_0x6ab8('0x5')]=_0x4bcc45;this[_0x6ab8('0x6')]=_0x1193a1;this[_0x6ab8('0x7')]=_0x48cb6a;this[_0x6ab8('0x4')][_0x6ab8('0x8')](this[_0x6ab8('0x9')][_0x6ab8('0xa')](this),this[_0x6ab8('0xb')][_0x6ab8('0xa')](this));this[_0x6ab8('0x4')]['on'](_0x6ab8('0xc'),this['handleTimeout']['bind'](this));this[_0x6ab8('0x4')]['on']('drained',this[_0x6ab8('0xd')][_0x6ab8('0xa')](this));};Beepall[_0x6ab8('0xe')]['push']=function(){this[_0x6ab8('0x4')][_0x6ab8('0x8')](this['handleRun'][_0x6ab8('0xa')](this),this[_0x6ab8('0xb')][_0x6ab8('0xa')](this));};Beepall['prototype'][_0x6ab8('0xd')]=function(_0x42b74e){this[_0x6ab8('0xb')](!![]);};Beepall[_0x6ab8('0xe')][_0x6ab8('0x9')]=function(_0x1f560c){var _0x1c6402=!![];if(!_[_0x6ab8('0xf')](this[_0x6ab8('0x5')])&&!_['isNil'](this[_0x6ab8('0x5')][_0x6ab8('0x10')])&&this[_0x6ab8('0x5')]['Agents'][_0x6ab8('0x11')]>0x0){for(var _0x35b790=0x0,_0x50cd9f;_0x35b790<this['queue'][_0x6ab8('0x10')]['length'];_0x35b790+=0x1){_0x50cd9f=this[_0x6ab8('0x5')][_0x6ab8('0x10')][_0x35b790]['id'];if(_[_0x6ab8('0xf')](this['realtime'][_0x6ab8('0x12')][_0x50cd9f])){logger[_0x6ab8('0x13')](_0x6ab8('0x14'),this[_0x6ab8('0x4')]['id'],_0x50cd9f);}else{if(util['isAgentAvailable'](this[_0x6ab8('0x4')]['id'],this[_0x6ab8('0x6')]['agents'][_0x50cd9f],this['squeue']['channel'],!![])){_0x1c6402=![];util[_0x6ab8('0x15')](this[_0x6ab8('0x4')]['id'],this[_0x6ab8('0x6')]['agents'][_0x50cd9f],_0x6ab8('0x16'));this[_0x6ab8('0x6')]['agents'][_0x50cd9f]['busy']=!![];this[_0x6ab8('0x6')][_0x6ab8('0x12')][_0x50cd9f]['busyQueue']=this[_0x6ab8('0x5')][_0x6ab8('0x17')];util[_0x6ab8('0x18')](this[_0x6ab8('0x3')],this[_0x6ab8('0x4')]['id'],this[_0x6ab8('0x6')][_0x6ab8('0x12')][_0x50cd9f],this[_0x6ab8('0x5')],this['routing']);}}}if(_0x1c6402){logger['info'](_0x6ab8('0x19'),this['squeue']['id']);setTimeout(this[_0x6ab8('0x8')][_0x6ab8('0xa')](this),0x3e8);}}else{logger[_0x6ab8('0x13')]('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this['push'][_0x6ab8('0xa')](this),0x3e8);}};Beepall[_0x6ab8('0xe')][_0x6ab8('0xb')]=function(_0x2f14ea){if(!_[_0x6ab8('0xf')](this[_0x6ab8('0x5')])&&!_[_0x6ab8('0xf')](this[_0x6ab8('0x5')][_0x6ab8('0x10')])){for(var _0x1f6dbc=0x0,_0x211fb6;_0x1f6dbc<this[_0x6ab8('0x5')][_0x6ab8('0x10')]['length'];_0x1f6dbc+=0x1){_0x211fb6=this['queue'][_0x6ab8('0x10')][_0x1f6dbc]['id'];if(_['isNil'](this['realtime'][_0x6ab8('0x12')][_0x211fb6])){logger[_0x6ab8('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x6ab8('0x4')]['id'],_0x211fb6);}else{util['hideNotification'](this[_0x6ab8('0x3')],this[_0x6ab8('0x4')]['id'],this['realtime']['agents'][_0x211fb6],this[_0x6ab8('0x5')],this[_0x6ab8('0x7')]);util[_0x6ab8('0x15')](this[_0x6ab8('0x4')]['id'],this[_0x6ab8('0x6')][_0x6ab8('0x12')][_0x211fb6],_0x2f14ea?_0x6ab8('0x1a'):_0x6ab8('0x1b'));this['realtime'][_0x6ab8('0x12')][_0x211fb6][_0x6ab8('0x1c')]=![];this[_0x6ab8('0x6')][_0x6ab8('0x12')][_0x211fb6][_0x6ab8('0x1d')]=undefined;}}}if(!_0x2f14ea){setTimeout(this[_0x6ab8('0x8')]['bind'](this),0x3e8);}};function beepall(_0x453730,_0x127ceb,_0x29321d,_0x587cc5){return new Beepall(_0x453730,_0x127ceb,_0x29321d,_0x587cc5);}module['exports']=beepall;
\ No newline at end of file
index b87692f..2d34543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c6=['./agent','exports','./beepall'];(function(_0x817138,_0x19d3e8){var _0x305712=function(_0xff0e75){while(--_0xff0e75){_0x817138['push'](_0x817138['shift']());}};_0x305712(++_0x19d3e8);}(_0x18c6,0xc1));var _0x618c=function(_0x292a47,_0x392e1d){_0x292a47=_0x292a47-0x0;var _0x1faff6=_0x18c6[_0x292a47];return _0x1faff6;};'use strict';module[_0x618c('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x618c('0x1')),'agent':require(_0x618c('0x2'))};
\ No newline at end of file
+var _0x78d2=['./rrmemory','./beepall','./agent','exports'];(function(_0x129079,_0x448226){var _0x1c3cba=function(_0x423f6a){while(--_0x423f6a){_0x129079['push'](_0x129079['shift']());}};_0x1c3cba(++_0x448226);}(_0x78d2,0xdf));var _0x278d=function(_0x304ebb,_0x3dfa4c){_0x304ebb=_0x304ebb-0x0;var _0x2402cb=_0x78d2[_0x304ebb];return _0x2402cb;};'use strict';module[_0x278d('0x0')]={'rrmemory':require(_0x278d('0x1')),'beepall':require(_0x278d('0x2')),'agent':require(_0x278d('0x3'))};
\ No newline at end of file
index 5c2f2ea..751efc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f07=['handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject','agents','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','busyQueue','name','notificationId','routing','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','busy','./util','../../../../../config/logger','squeue','queue','realtime','intervals','push'];(function(_0x373b2d,_0x3943f1){var _0x3a1204=function(_0x502d0e){while(--_0x502d0e){_0x373b2d['push'](_0x373b2d['shift']());}};_0x3a1204(++_0x3943f1);}(_0x4f07,0x1cd));var _0x74f0=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4f07[_0x2641f9];return _0x585741;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require('uuid');var util=require(_0x74f0('0x0'));var logger=require(_0x74f0('0x1'))('routing');var RRMemory=function(_0x1aae42,_0xb5e3a1,_0x4397f9,_0x4b334e){this['notificationId']=uuid['v4']();this[_0x74f0('0x2')]=_0x1aae42;this[_0x74f0('0x3')]=_0xb5e3a1;this[_0x74f0('0x4')]=_0x4397f9;this['routing']=_0x4b334e;this[_0x74f0('0x5')]={};this[_0x74f0('0x2')][_0x74f0('0x6')](this[_0x74f0('0x7')][_0x74f0('0x8')](this),this[_0x74f0('0x9')][_0x74f0('0x8')](this),this[_0x74f0('0xa')]);this['squeue']['on'](_0x74f0('0xb'),this[_0x74f0('0x9')][_0x74f0('0x8')](this));this[_0x74f0('0x2')]['on'](_0x74f0('0xc'),this[_0x74f0('0xd')][_0x74f0('0x8')](this));};RRMemory[_0x74f0('0xe')]['push']=function(){this['squeue']['push'](this[_0x74f0('0x7')][_0x74f0('0x8')](this),this[_0x74f0('0x9')][_0x74f0('0x8')](this));};RRMemory[_0x74f0('0xe')][_0x74f0('0xd')]=function(_0x52d844){this['handleTimeout'](!![]);};RRMemory[_0x74f0('0xe')][_0x74f0('0xf')]=function(_0x1f8605){if(util['isAgentAvailable'](this[_0x74f0('0x2')]['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this['agentId']],this[_0x74f0('0x2')][_0x74f0('0x11')],!![])){logger[_0x74f0('0x12')](_0x74f0('0x13'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);clearInterval(this['intervals'][this[_0x74f0('0x14')]]);_0x1f8605[_0x74f0('0x15')]();setTimeout(this[_0x74f0('0x6')][_0x74f0('0x8')](this),0x3e8);}};RRMemory[_0x74f0('0xe')][_0x74f0('0x7')]=function(_0x370a15){this[_0x74f0('0x14')]=rr(this[_0x74f0('0x3')][_0x74f0('0x16')]);logger[_0x74f0('0x12')](_0x74f0('0x17'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);if(_[_0x74f0('0x18')](this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]])){logger[_0x74f0('0x12')](_0x74f0('0x19'),this[_0x74f0('0x2')]['id'],this['agentId']);_0x370a15['done']();setTimeout(this[_0x74f0('0x6')]['bind'](this),0x3e8);}else{if(util[_0x74f0('0x1a')](this[_0x74f0('0x2')]['id'],this['realtime'][_0x74f0('0x10')][this['agentId']],this[_0x74f0('0x2')]['channel'],!![])){this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]]['busy']=!![];this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]][_0x74f0('0x1b')]=this[_0x74f0('0x3')][_0x74f0('0x1c')];util['showNotification'](this[_0x74f0('0x1d')],this[_0x74f0('0x2')]['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]],this[_0x74f0('0x3')],this[_0x74f0('0x1e')]);util[_0x74f0('0x1f')](this['squeue']['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this['agentId']],_0x74f0('0x20'));this[_0x74f0('0x5')][this[_0x74f0('0x14')]]=setInterval(this[_0x74f0('0xf')][_0x74f0('0x8')](this,_0x370a15),0x3e8);}else{logger[_0x74f0('0x12')](_0x74f0('0x21'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);_0x370a15['done']();setTimeout(this[_0x74f0('0x6')][_0x74f0('0x8')](this),0x3e8);}}};RRMemory[_0x74f0('0xe')][_0x74f0('0x9')]=function(_0x285032){logger[_0x74f0('0x12')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);if(_[_0x74f0('0x18')](this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]])){logger[_0x74f0('0x12')](_0x74f0('0x19'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);}else{clearInterval(this[_0x74f0('0x5')][this[_0x74f0('0x14')]]);util[_0x74f0('0x22')](this['notificationId'],this['squeue']['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]],this[_0x74f0('0x3')],this[_0x74f0('0x1e')]);util[_0x74f0('0x1f')](this[_0x74f0('0x2')]['id'],this['realtime'][_0x74f0('0x10')][this['agentId']],'TIMEOUT');this[_0x74f0('0x4')]['agents'][this[_0x74f0('0x14')]][_0x74f0('0x23')]=![];this[_0x74f0('0x4')]['agents'][this[_0x74f0('0x14')]][_0x74f0('0x1b')]=undefined;}if(!_0x285032){setTimeout(this[_0x74f0('0x6')][_0x74f0('0x8')](this),0x3e8);}};function rrmemory(_0x497c04,_0x1b9809,_0x3b368b,_0x2d41ee){return new RRMemory(_0x497c04,_0x1b9809,_0x3b368b,_0x2d41ee);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x5637=['drained','handleDrained','prototype','isAgentAvailable','agents','agentId','channel','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','info','isNil','realtime','busy','busyQueue','showNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','exports','lodash','./util','../../../../../config/logger','notificationId','squeue','queue','routing','intervals','push','handleRun','handleTimeout','bind','module','timeout'];(function(_0x56f8a2,_0x30dbbb){var _0x52cd4e=function(_0xc9d860){while(--_0xc9d860){_0x56f8a2['push'](_0x56f8a2['shift']());}};_0x52cd4e(++_0x30dbbb);}(_0x5637,0x1a2));var _0x7563=function(_0x11eb88,_0x476e56){_0x11eb88=_0x11eb88-0x0;var _0x33c231=_0x5637[_0x11eb88];return _0x33c231;};'use strict';var rr=require('rr');var _=require(_0x7563('0x0'));var uuid=require('uuid');var util=require(_0x7563('0x1'));var logger=require(_0x7563('0x2'))('routing');var RRMemory=function(_0x130e20,_0x5303c8,_0x54433f,_0x45e4cb){this[_0x7563('0x3')]=uuid['v4']();this[_0x7563('0x4')]=_0x130e20;this[_0x7563('0x5')]=_0x5303c8;this['realtime']=_0x54433f;this[_0x7563('0x6')]=_0x45e4cb;this[_0x7563('0x7')]={};this[_0x7563('0x4')][_0x7563('0x8')](this[_0x7563('0x9')]['bind'](this),this[_0x7563('0xa')][_0x7563('0xb')](this),this[_0x7563('0xc')]);this['squeue']['on'](_0x7563('0xd'),this[_0x7563('0xa')][_0x7563('0xb')](this));this[_0x7563('0x4')]['on'](_0x7563('0xe'),this[_0x7563('0xf')][_0x7563('0xb')](this));};RRMemory[_0x7563('0x10')][_0x7563('0x8')]=function(){this[_0x7563('0x4')][_0x7563('0x8')](this['handleRun'][_0x7563('0xb')](this),this['handleTimeout']['bind'](this));};RRMemory[_0x7563('0x10')][_0x7563('0xf')]=function(_0x1ea403){this[_0x7563('0xa')](!![]);};RRMemory[_0x7563('0x10')]['handleCheckReject']=function(_0x130abf){if(util[_0x7563('0x11')](this['squeue']['id'],this['realtime'][_0x7563('0x12')][this[_0x7563('0x13')]],this[_0x7563('0x4')][_0x7563('0x14')],!![])){logger['info'](_0x7563('0x15'),this['squeue']['id'],this[_0x7563('0x13')]);clearInterval(this[_0x7563('0x7')][this['agentId']]);_0x130abf[_0x7563('0x16')]();setTimeout(this[_0x7563('0x8')][_0x7563('0xb')](this),0x3e8);}};RRMemory[_0x7563('0x10')][_0x7563('0x9')]=function(_0x1a7f07){this[_0x7563('0x13')]=rr(this['queue'][_0x7563('0x17')]);logger[_0x7563('0x18')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x7563('0x4')]['id'],this['agentId']);if(_[_0x7563('0x19')](this[_0x7563('0x1a')]['agents'][this[_0x7563('0x13')]])){logger[_0x7563('0x18')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x7563('0x4')]['id'],this[_0x7563('0x13')]);_0x1a7f07[_0x7563('0x16')]();setTimeout(this[_0x7563('0x8')]['bind'](this),0x3e8);}else{if(util[_0x7563('0x11')](this[_0x7563('0x4')]['id'],this['realtime'][_0x7563('0x12')][this[_0x7563('0x13')]],this[_0x7563('0x4')][_0x7563('0x14')],!![])){this[_0x7563('0x1a')]['agents'][this['agentId']][_0x7563('0x1b')]=!![];this[_0x7563('0x1a')]['agents'][this['agentId']][_0x7563('0x1c')]=this[_0x7563('0x5')]['name'];util[_0x7563('0x1d')](this[_0x7563('0x3')],this['squeue']['id'],this[_0x7563('0x1a')]['agents'][this['agentId']],this[_0x7563('0x5')],this[_0x7563('0x6')]);util[_0x7563('0x1e')](this[_0x7563('0x4')]['id'],this[_0x7563('0x1a')][_0x7563('0x12')][this[_0x7563('0x13')]],_0x7563('0x1f'));this['intervals'][this[_0x7563('0x13')]]=setInterval(this[_0x7563('0x20')][_0x7563('0xb')](this,_0x1a7f07),0x3e8);}else{logger[_0x7563('0x18')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x7563('0x4')]['id'],this[_0x7563('0x13')]);_0x1a7f07['done']();setTimeout(this[_0x7563('0x8')][_0x7563('0xb')](this),0x3e8);}}};RRMemory[_0x7563('0x10')][_0x7563('0xa')]=function(_0x44c086){logger[_0x7563('0x18')](_0x7563('0x21'),this[_0x7563('0x4')]['id'],this[_0x7563('0x13')]);if(_['isNil'](this[_0x7563('0x1a')][_0x7563('0x12')][this['agentId']])){logger[_0x7563('0x18')](_0x7563('0x22'),this['squeue']['id'],this[_0x7563('0x13')]);}else{clearInterval(this[_0x7563('0x7')][this[_0x7563('0x13')]]);util['hideNotification'](this[_0x7563('0x3')],this[_0x7563('0x4')]['id'],this['realtime'][_0x7563('0x12')][this[_0x7563('0x13')]],this[_0x7563('0x5')],this['routing']);util[_0x7563('0x1e')](this['squeue']['id'],this[_0x7563('0x1a')]['agents'][this['agentId']],'TIMEOUT');this[_0x7563('0x1a')][_0x7563('0x12')][this[_0x7563('0x13')]][_0x7563('0x1b')]=![];this[_0x7563('0x1a')]['agents'][this[_0x7563('0x13')]]['busyQueue']=undefined;}if(!_0x44c086){setTimeout(this['push'][_0x7563('0xb')](this),0x3e8);}};function rrmemory(_0x56e1fd,_0x413ddc,_0x43e3fe,_0x20b229){return new RRMemory(_0x56e1fd,_0x413ddc,_0x43e3fe,_0x20b229);}module[_0x7563('0x23')]=rrmemory;
\ No newline at end of file
index dd4bb26..3cefaa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d4=['user:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','OFFLINE','Pause','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','util','mustache','../../../../../config/environment','../../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','format','name','user:save','split','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','[%s][QUEUE]\x20%s','message'];(function(_0x5227b7,_0xd67a45){var _0x283421=function(_0x5e2d71){while(--_0x5e2d71){_0x5227b7['push'](_0x5227b7['shift']());}};_0x283421(++_0xd67a45);}(_0x77d4,0x108));var _0x477d=function(_0x5c56c1,_0x3c1325){_0x5c56c1=_0x5c56c1-0x0;var _0x49a58e=_0x77d4[_0x5c56c1];return _0x49a58e;};'use strict';var _=require('lodash');var util=require(_0x477d('0x0'));var utils=require('../utils');var Mustache=require(_0x477d('0x1'));var Redis=require('ioredis');var config=require(_0x477d('0x2'));var logger=require(_0x477d('0x3'))('routing');config['redis']=_[_0x477d('0x4')](config[_0x477d('0x5')],{'host':_0x477d('0x6'),'port':0x18eb});var io=require(_0x477d('0x7'))(new Redis(config[_0x477d('0x5')]));function emit(_0x45ca2d,_0x5153df,_0x4f4fb4){io['to'](_0x45ca2d)[_0x477d('0x8')](_0x5153df,_0x4f4fb4);}function sendNotification(_0x579859,_0x5da70c,_0x70b0f1,_0x29f11b,_0x204cb9,_0x2c326c){io['to'](util[_0x477d('0x9')]('user:%s',_0x29f11b[_0x477d('0xa')]))['emit'](_0x477d('0xb'),_0x29f11b);var _0x462ac1=_0x2c326c||{};var _0x55ace3=_0x70b0f1[_0x477d('0xc')]('.');var _0x3d362a={'uniqueid':_0x5da70c,'channel':_0x55ace3[0x0],'id':_0x55ace3[0x1],'title':_0x55ace3[0x0]+'\x20interaction','interactionId':_0x55ace3[0x2],'queue':_0x204cb9?_0x204cb9['name']:null,'sound':_0x462ac1[_0x477d('0xd')][_0x477d('0xe')],'shake':_0x462ac1['account'][_0x477d('0xf')]};try{if(!_0x462ac1[_0x477d('0x10')]){_0x462ac1['body']={};}if(_0x204cb9){_0x462ac1['body'][_0x477d('0x11')]=_0x204cb9;}else if(_0x462ac1['body'][_0x477d('0x11')]){delete _0x462ac1[_0x477d('0x10')][_0x477d('0x11')];}_0x3d362a['msg']=utils[_0x477d('0x12')](_0x462ac1[_0x477d('0xd')][_0x477d('0x13')],_0x462ac1);}catch(_0x19c5a7){_0x3d362a['msg']=_0x477d('0x14');logger['error'](util[_0x477d('0x9')](_0x477d('0x15'),_0x5da70c,_0x19c5a7[_0x477d('0x16')]));}io['to'](util[_0x477d('0x9')](_0x477d('0x17'),_0x29f11b[_0x477d('0xa')]))['emit'](util[_0x477d('0x9')]('notification:%s',_0x579859?_0x477d('0x18'):_0x477d('0x19')),_0x3d362a);}function writeLog(_0x40256e,_0x14cbd5,_0x27b3aa){return logger[_0x477d('0x1a')](util[_0x477d('0x9')](_0x477d('0x1b'),_0x40256e,_0x14cbd5[_0x477d('0xa')],_0x27b3aa));}exports[_0x477d('0x1c')]=function(_0x3d2943,_0x3525e8,_0x43c845,_0x1f3868){if(_0x3525e8['busy']){writeLog(_0x3d2943,_0x3525e8,_0x477d('0x1d'));return![];}if(!_0x3525e8['online']){writeLog(_0x3d2943,_0x3525e8,_0x477d('0x1e'));return![];}if(_0x3525e8[_0x43c845+_0x477d('0x1f')]){writeLog(_0x3d2943,_0x3525e8,_0x477d('0x20'));return![];}if(_0x1f3868&&_0x3525e8[_0x477d('0x21')](_0x43c845+'Capacity')&&_0x3525e8[_0x477d('0x21')](_0x43c845+_0x477d('0x22'))){if(_0x3525e8[_0x43c845+_0x477d('0x23')]>0x0&&_0x3525e8[_0x43c845+'CurrentCapacity']>=_0x3525e8[_0x43c845+'Capacity']){writeLog(_0x3d2943,_0x3525e8,_0x43c845[_0x477d('0x24')]()+_0x477d('0x25'));return![];}}return!![];};exports[_0x477d('0x26')]=function(_0x5c8ef1,_0x254141,_0x297d15,_0x74ebb4,_0xe4dd40){return sendNotification(!![],_0x5c8ef1,_0x254141,_0x297d15,_0x74ebb4,_0xe4dd40);};exports[_0x477d('0x27')]=function(_0x537fc4,_0x2fc959,_0xeb02f5,_0x17dd16,_0x25a329){return sendNotification(![],_0x537fc4,_0x2fc959,_0xeb02f5,_0x17dd16,_0x25a329);};exports[_0x477d('0x28')]=writeLog;
\ No newline at end of file
+var _0x6455=['queue','msg','getMustacheRender','notificationTemplate','error','[%s][QUEUE]\x20%s','message','user:%s','notification:%s','save','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','online','OFFLINE','Pause','PAUSE','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','lodash','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','format','name','emit','user:save','split','\x20interaction','account','notificationSound','notificationShake','body'];(function(_0x327740,_0x297907){var _0x188999=function(_0x32d37c){while(--_0x32d37c){_0x327740['push'](_0x327740['shift']());}};_0x188999(++_0x297907);}(_0x6455,0x97));var _0x5645=function(_0x9dd2d,_0x4f1a1d){_0x9dd2d=_0x9dd2d-0x0;var _0x396818=_0x6455[_0x9dd2d];return _0x396818;};'use strict';var _=require(_0x5645('0x0'));var util=require('util');var utils=require(_0x5645('0x1'));var Mustache=require(_0x5645('0x2'));var Redis=require(_0x5645('0x3'));var config=require(_0x5645('0x4'));var logger=require(_0x5645('0x5'))(_0x5645('0x6'));config['redis']=_[_0x5645('0x7')](config[_0x5645('0x8')],{'host':_0x5645('0x9'),'port':0x18eb});var io=require(_0x5645('0xa'))(new Redis(config[_0x5645('0x8')]));function emit(_0x37d672,_0xa14a06,_0x278d86){io['to'](_0x37d672)['emit'](_0xa14a06,_0x278d86);}function sendNotification(_0x5f4037,_0x20efde,_0x37c03a,_0x38c07a,_0x34fe4e,_0x7f9893){io['to'](util[_0x5645('0xb')]('user:%s',_0x38c07a[_0x5645('0xc')]))[_0x5645('0xd')](_0x5645('0xe'),_0x38c07a);var _0x21e32c=_0x7f9893||{};var _0x5a6092=_0x37c03a[_0x5645('0xf')]('.');var _0x5ecb2a={'uniqueid':_0x20efde,'channel':_0x5a6092[0x0],'id':_0x5a6092[0x1],'title':_0x5a6092[0x0]+_0x5645('0x10'),'interactionId':_0x5a6092[0x2],'queue':_0x34fe4e?_0x34fe4e[_0x5645('0xc')]:null,'sound':_0x21e32c[_0x5645('0x11')][_0x5645('0x12')],'shake':_0x21e32c[_0x5645('0x11')][_0x5645('0x13')]};try{if(!_0x21e32c[_0x5645('0x14')]){_0x21e32c[_0x5645('0x14')]={};}if(_0x34fe4e){_0x21e32c['body'][_0x5645('0x15')]=_0x34fe4e;}else if(_0x21e32c[_0x5645('0x14')][_0x5645('0x15')]){delete _0x21e32c['body']['queue'];}_0x5ecb2a[_0x5645('0x16')]=utils[_0x5645('0x17')](_0x21e32c['account'][_0x5645('0x18')],_0x21e32c);}catch(_0x3fe599){_0x5ecb2a[_0x5645('0x16')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x5645('0x19')](util[_0x5645('0xb')](_0x5645('0x1a'),_0x20efde,_0x3fe599[_0x5645('0x1b')]));}io['to'](util['format'](_0x5645('0x1c'),_0x38c07a['name']))['emit'](util[_0x5645('0xb')](_0x5645('0x1d'),_0x5f4037?_0x5645('0x1e'):'remove'),_0x5ecb2a);}function writeLog(_0x35a672,_0x50ed38,_0x2b8cc8){return logger['info'](util['format'](_0x5645('0x1f'),_0x35a672,_0x50ed38['name'],_0x2b8cc8));}exports[_0x5645('0x20')]=function(_0x379cbd,_0x502c2e,_0x18680f,_0x116bfc){if(_0x502c2e[_0x5645('0x21')]){writeLog(_0x379cbd,_0x502c2e,'BUSY');return![];}if(!_0x502c2e[_0x5645('0x22')]){writeLog(_0x379cbd,_0x502c2e,_0x5645('0x23'));return![];}if(_0x502c2e[_0x18680f+_0x5645('0x24')]){writeLog(_0x379cbd,_0x502c2e,_0x5645('0x25'));return![];}if(_0x116bfc&&_0x502c2e['hasOwnProperty'](_0x18680f+'Capacity')&&_0x502c2e['hasOwnProperty'](_0x18680f+'CurrentCapacity')){if(_0x502c2e[_0x18680f+_0x5645('0x26')]>0x0&&_0x502c2e[_0x18680f+'CurrentCapacity']>=_0x502c2e[_0x18680f+'Capacity']){writeLog(_0x379cbd,_0x502c2e,_0x18680f[_0x5645('0x27')]()+_0x5645('0x28'));return![];}}return!![];};exports[_0x5645('0x29')]=function(_0x308991,_0x3a5c61,_0x351cbb,_0x3b9d8e,_0xc585f3){return sendNotification(!![],_0x308991,_0x3a5c61,_0x351cbb,_0x3b9d8e,_0xc585f3);};exports[_0x5645('0x2a')]=function(_0x30a5d0,_0x1c0aa2,_0x2154a7,_0x406782,_0xa2a4a1){return sendNotification(![],_0x30a5d0,_0x1c0aa2,_0x2154a7,_0x406782,_0xa2a4a1);};exports['writeLog']=writeLog;
\ No newline at end of file
index d0b4adf..cc111f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13bb=['string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','validate','length','error','[%s][SYSTEM]\x20%s','map','message','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','shelljs','lodash','./utils','../../../../config/logger','routing'];(function(_0x3ba216,_0x2285a9){var _0x45d2e2=function(_0x49dbb1){while(--_0x49dbb1){_0x3ba216['push'](_0x3ba216['shift']());}};_0x45d2e2(++_0x2285a9);}(_0x13bb,0x19b));var _0xb13b=function(_0x77c2b3,_0x3fd965){_0x77c2b3=_0x77c2b3-0x0;var _0x3744de=_0x13bb[_0x77c2b3];return _0x3744de;};'use strict';var schema=require('validate');var sh=require(_0xb13b('0x0'));var _=require(_0xb13b('0x1'));var utils=require(_0xb13b('0x2'));var logger=require(_0xb13b('0x3'))(_0xb13b('0x4'));var system=schema({'command':{'type':_0xb13b('0x5'),'required':!![],'message':_0xb13b('0x6')}});exports['consequence']=function(_0x5bcf95,_0x4eee71){return function(_0x416886){try{var _0x4e83d8={'command':_0x4eee71[0x0]};var _0xb9881a=system[_0xb13b('0x7')](_0x4e83d8,{'typecast':!![]});if(_0xb9881a[_0xb13b('0x8')]){logger[_0xb13b('0x9')](_0xb13b('0xa'),_0x5bcf95,_[_0xb13b('0xb')](_0xb9881a,_0xb13b('0xc'))['join'](',\x20'));logger[_0xb13b('0xd')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5bcf95);_0x416886[_0xb13b('0xe')]();}else{var _0x47db06=this;var _0x529df7=utils[_0xb13b('0xf')](_0x4eee71[0x0],this);logger['info'](_0xb13b('0x10'),_0x5bcf95,_0x529df7);sh[_0xb13b('0x11')](_[_0xb13b('0x12')](_0x529df7),function(_0x3da1bc,_0xf2ff87){logger['info'](_0xb13b('0x13'),_0x5bcf95,_0x3da1bc);if(_0x3da1bc==0x0){var _0x4ee8e4=_0xf2ff87[_0xb13b('0x14')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x4eee71[0x1])||_['isEmpty'](_0x4eee71[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x5bcf95);_0x47db06[_0xb13b('0x15')][_0x4eee71[0x1]]=_0x4ee8e4;}else{logger['info'](_0xb13b('0x16'),_0x5bcf95,_0x4eee71[0x1],_0x4ee8e4);_0x47db06[_0xb13b('0x15')][_0x4eee71[0x1]]=_0x4ee8e4;}}_0x416886[_0xb13b('0xe')]();});}}catch(_0x5d7402){logger[_0xb13b('0x9')](_0xb13b('0xa'),_0x5bcf95,_[_0xb13b('0x17')](_0x5d7402)?JSON[_0xb13b('0x18')](_0x5d7402):_0x5d7402);logger['info'](_0xb13b('0x19'),_0x5bcf95);_0x416886[_0xb13b('0xe')]();}};};
\ No newline at end of file
+var _0x47c2=['lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][SYSTEM]\x20%s','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','info','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','error','isObject','validate','shelljs'];(function(_0x559431,_0x106ad3){var _0x43192b=function(_0x2107e5){while(--_0x2107e5){_0x559431['push'](_0x559431['shift']());}};_0x43192b(++_0x106ad3);}(_0x47c2,0x1ae));var _0x247c=function(_0x15b04f,_0x38b8c5){_0x15b04f=_0x15b04f-0x0;var _0x488401=_0x47c2[_0x15b04f];return _0x488401;};'use strict';var schema=require(_0x247c('0x0'));var sh=require(_0x247c('0x1'));var _=require(_0x247c('0x2'));var utils=require(_0x247c('0x3'));var logger=require(_0x247c('0x4'))(_0x247c('0x5'));var system=schema({'command':{'type':_0x247c('0x6'),'required':!![],'message':_0x247c('0x7')}});exports[_0x247c('0x8')]=function(_0x3f2333,_0x396e51){return function(_0x17e4f3){try{var _0x233af5={'command':_0x396e51[0x0]};var _0x233e90=system[_0x247c('0x0')](_0x233af5,{'typecast':!![]});if(_0x233e90[_0x247c('0x9')]){logger['error'](_0x247c('0xa'),_0x3f2333,_['map'](_0x233e90,_0x247c('0xb'))[_0x247c('0xc')](',\x20'));logger['info'](_0x247c('0xd'),_0x3f2333);_0x17e4f3[_0x247c('0xe')]();}else{var _0x58699a=this;var _0x402f35=utils[_0x247c('0xf')](_0x396e51[0x0],this);logger[_0x247c('0x10')](_0x247c('0x11'),_0x3f2333,_0x402f35);sh[_0x247c('0x12')](_[_0x247c('0x13')](_0x402f35),function(_0x598f46,_0x3c2c76){logger['info'](_0x247c('0x14'),_0x3f2333,_0x598f46);if(_0x598f46==0x0){var _0x465a45=_0x3c2c76[_0x247c('0x15')](/(\r\n|\n|\r)/gm,'');if(_[_0x247c('0x16')](_0x396e51[0x1])||_[_0x247c('0x17')](_0x396e51[0x1])){logger[_0x247c('0x10')](_0x247c('0x18'),_0x3f2333);_0x58699a['body'][_0x396e51[0x1]]=_0x465a45;}else{logger[_0x247c('0x10')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x3f2333,_0x396e51[0x1],_0x465a45);_0x58699a['body'][_0x396e51[0x1]]=_0x465a45;}}_0x17e4f3[_0x247c('0xe')]();});}}catch(_0x331cd5){logger[_0x247c('0x19')](_0x247c('0xa'),_0x3f2333,_[_0x247c('0x1a')](_0x331cd5)?JSON['stringify'](_0x331cd5):_0x331cd5);logger[_0x247c('0x10')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3f2333);_0x17e4f3[_0x247c('0xe')]();}};};
\ No newline at end of file
index 3e07f99..726c9ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0be=['routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','validate','length','error','[%s][TAG]\x20%s','map','join','info','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xe0be,0x13e));var _0xee0b=function(_0x1ffbab,_0x5b5fa8){_0x1ffbab=_0x1ffbab-0x0;var _0x37f89d=_0xe0be[_0x1ffbab];return _0x37f89d;};'use strict';var schema=require('validate');var _=require('lodash');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xee0b('0x0')),'smsInteraction':require(_0xee0b('0x1')),'mailInteraction':require(_0xee0b('0x2')),'faxInteraction':require(_0xee0b('0x3')),'whatsappInteraction':require(_0xee0b('0x4'))};var logger=require(_0xee0b('0x5'))(_0xee0b('0x6'));var tag=schema({'tag':{'type':_0xee0b('0x7'),'required':!![],'message':_0xee0b('0x8')}});exports['consequence']=function(_0x285459,_0x5506ac,_0x7791aa,_0x1661b2){return function(_0x58e5da){try{var _0x14f0c8={'tag':_0x5506ac[0x0]};var _0x3e9139=tag[_0xee0b('0x9')](_0x14f0c8,{'typecast':!![]});if(_0x3e9139[_0xee0b('0xa')]){logger[_0xee0b('0xb')](_0xee0b('0xc'),_0x285459,_[_0xee0b('0xd')](_0x3e9139,'message')[_0xee0b('0xe')](',\x20'));logger[_0xee0b('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x285459);_0x58e5da[_0xee0b('0x10')]();}else{var _0x120100={'ids':[_0x5506ac[0x0]]};if(rpc[_0x1661b2[_0xee0b('0x11')]+_0xee0b('0x12')]){rpc[_0x1661b2[_0xee0b('0x11')]+_0xee0b('0x12')][_0xee0b('0x13')](_0x1661b2[_0xee0b('0x14')]['id'],_0x120100)[_0xee0b('0x15')](function(_0x274890){logger[_0xee0b('0xf')](_0xee0b('0x16'),_0x285459,_0x5506ac[0x1],_0x1661b2['channel'],_0x1661b2[_0xee0b('0x14')]['id']);})[_0xee0b('0x17')](function(_0x4525d7){logger[_0xee0b('0xb')](_0xee0b('0xc'),_0x285459,JSON[_0xee0b('0x18')](_0x4525d7));logger[_0xee0b('0xf')](_0xee0b('0x19'),_0x285459);})[_0xee0b('0x1a')](function(){_0x58e5da[_0xee0b('0x10')]();});}}}catch(_0x2a4fc0){logger['error']('[%s][TAG]\x20%s',_0x285459,_['isObject'](_0x2a4fc0)?JSON['stringify'](_0x2a4fc0):_0x2a4fc0);logger[_0xee0b('0xf')](_0xee0b('0x19'),_0x285459);_0x58e5da[_0xee0b('0x10')]();}};};
\ No newline at end of file
+var _0xb39c=['../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../../../config/logger','routing','number','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','finally','validate','lodash'];(function(_0x1af600,_0x40db6d){var _0x5be104=function(_0x152d85){while(--_0x152d85){_0x1af600['push'](_0x1af600['shift']());}};_0x5be104(++_0x40db6d);}(_0xb39c,0xad));var _0xcb39=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb39c[_0x321bb2];return _0x9c12ed;};'use strict';var schema=require(_0xcb39('0x0'));var _=require(_0xcb39('0x1'));var rpc={'chatInteraction':require(_0xcb39('0x2')),'openchannelInteraction':require(_0xcb39('0x3')),'smsInteraction':require(_0xcb39('0x4')),'mailInteraction':require(_0xcb39('0x5')),'faxInteraction':require(_0xcb39('0x6')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require(_0xcb39('0x7'))(_0xcb39('0x8'));var tag=schema({'tag':{'type':_0xcb39('0x9'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports['consequence']=function(_0x5c982c,_0xaaddb1,_0x28664c,_0x38e7c8){return function(_0x49af01){try{var _0x2dcde9={'tag':_0xaaddb1[0x0]};var _0x5f2819=tag['validate'](_0x2dcde9,{'typecast':!![]});if(_0x5f2819['length']){logger[_0xcb39('0xa')](_0xcb39('0xb'),_0x5c982c,_[_0xcb39('0xc')](_0x5f2819,_0xcb39('0xd'))[_0xcb39('0xe')](',\x20'));logger[_0xcb39('0xf')](_0xcb39('0x10'),_0x5c982c);_0x49af01[_0xcb39('0x11')]();}else{var _0x402d1b={'ids':[_0xaaddb1[0x0]]};if(rpc[_0x38e7c8[_0xcb39('0x12')]+_0xcb39('0x13')]){rpc[_0x38e7c8[_0xcb39('0x12')]+'Interaction'][_0xcb39('0x14')](_0x38e7c8[_0xcb39('0x15')]['id'],_0x402d1b)[_0xcb39('0x16')](function(_0x24ed19){logger[_0xcb39('0xf')](_0xcb39('0x17'),_0x5c982c,_0xaaddb1[0x1],_0x38e7c8[_0xcb39('0x12')],_0x38e7c8[_0xcb39('0x15')]['id']);})['catch'](function(_0x22339c){logger[_0xcb39('0xa')](_0xcb39('0xb'),_0x5c982c,JSON['stringify'](_0x22339c));logger[_0xcb39('0xf')](_0xcb39('0x10'),_0x5c982c);})[_0xcb39('0x18')](function(){_0x49af01[_0xcb39('0x11')]();});}}}catch(_0x2b49c1){logger[_0xcb39('0xa')](_0xcb39('0xb'),_0x5c982c,_['isObject'](_0x2b49c1)?JSON['stringify'](_0x2b49c1):_0x2b49c1);logger[_0xcb39('0xf')](_0xcb39('0x10'),_0x5c982c);_0x49af01[_0xcb39('0x11')]();}};};
\ No newline at end of file
index d884ab7..d531b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x16ad43,_0xd8147a){var _0xdc4c14=function(_0x47eb85){while(--_0x47eb85){_0x16ad43['push'](_0x16ad43['shift']());}};_0xdc4c14(++_0xd8147a);}(_0x9c44,0x178));var _0x49c4=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9c44[_0x13b02f];return _0x12e9a6;};'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 _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x4aafa9,_0xb07a3d){var _0x424d63=function(_0x3d7479){while(--_0x3d7479){_0x4aafa9['push'](_0x4aafa9['shift']());}};_0x424d63(++_0xb07a3d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index 2505f35..8e0d3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0284=['mailQueues','openchannelQueues','loggedIn','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','.js','app','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','format','%s:%s:%s','./interval','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','QueueReport','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','end','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','name','paused','waiting'];(function(_0x1fc1f9,_0x454fb2){var _0x4987ca=function(_0x5e90dd){while(--_0x5e90dd){_0x1fc1f9['push'](_0x1fc1f9['shift']());}};_0x4987ca(++_0x454fb2);}(_0x0284,0xd1));var _0x4028=function(_0x1fc4e2,_0x493c3b){_0x1fc4e2=_0x1fc4e2-0x0;var _0x2ba184=_0x0284[_0x1fc4e2];return _0x2ba184;};'use strict';var _=require('lodash');var util=require(_0x4028('0x0'));var path=require(_0x4028('0x1'));var fs=require('fs');var jayson=require(_0x4028('0x2'));var BPromise=require(_0x4028('0x3'));var uuid=require(_0x4028('0x4'));var config=require(_0x4028('0x5'));var logger=require('../../../config/logger')(_0x4028('0x6'));var rpc={'openchannelQueueReport':require(_0x4028('0x7')),'mailQueueReport':require(_0x4028('0x8')),'chatQueueReport':require(_0x4028('0x9')),'smsQueueReport':require(_0x4028('0xa')),'faxQueueReport':require(_0x4028('0xb')),'whatsappQueueReport':require(_0x4028('0xc'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x4fa56b,_0x25f788,_0x4bf9eb){return util['format']('%s.%s.%s',_0x4fa56b,_0x25f788||0x0,_0x4bf9eb||0x0);}function getIntervals(_0x4da5c3,_0x2e05bf){var _0x29b270=[];if(!_[_0x4028('0xd')](_0x2e05bf[_0x4028('0xe')])&&!_[_0x4028('0xd')](_0x4da5c3[_0x2e05bf[_0x4028('0xe')]])&&!_[_0x4028('0xd')](_0x4da5c3[_0x2e05bf[_0x4028('0xe')]][_0x4028('0xf')])){_0x29b270=_[_0x4028('0x10')](_0x4da5c3[_0x2e05bf[_0x4028('0xe')]][_0x4028('0xf')],_0x4028('0x11'));}else if(!_[_0x4028('0xd')](_0x2e05bf[_0x4028('0x11')])){_0x29b270=[_0x2e05bf['interval']];}return _0x29b270;}exports[_0x4028('0x12')]=function(_0x6b8c){_0x6b8c[_0x4028('0x13')]={};return new BPromise(function(_0x5c7c0c,_0x6699){var _0x98f73b={'Start':function(_0x1dacde){var _0x37d2e9=this;return new Promise(function(_0x20f5f0,_0x3d559d){if(_0x1dacde){try{var _0xa67c91=[];var _0x36df52=getId(_0x1dacde[_0x4028('0x14')],_0x1dacde['message']?_0x1dacde[_0x4028('0x15')]['id']:0x0,_0x1dacde['interaction']?_0x1dacde[_0x4028('0x16')]['id']:0x0);if(_0x1dacde[_0x4028('0x17')]&&_[_0x4028('0x18')](_0x1dacde[_0x4028('0x17')])&&_0x1dacde[_0x4028('0x17')][_0x4028('0x19')]){for(var _0xb25b83=0x0;_0xb25b83<_0x1dacde[_0x4028('0x17')]['length'];_0xb25b83+=0x1){var _0x41fd71=_0x1dacde[_0x4028('0x17')][_0xb25b83];if(fs[_0x4028('0x1a')](path[_0x4028('0x1b')](__dirname,_0x4028('0x17'),_0x41fd71['app']+_0x4028('0x1c')))){var _0x115aa0=[];switch(_0x41fd71[_0x4028('0x1d')][_0x4028('0x1e')]()){case _0x4028('0x1f'):var _0x22dbd3=_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');if(_0x1dacde[_0x4028('0x14')]===_0x4028('0x22')){_0x115aa0[_0x4028('0x23')](_0x22dbd3[0x0]);_0x115aa0[_0x4028('0x23')](_0x22dbd3[0x1]);_0x115aa0[_0x4028('0x23')](_0x22dbd3[_0x4028('0x24')](0x2,_0x22dbd3[_0x4028('0x19')])[_0x4028('0x1b')](','));}else{_0x115aa0[_0x4028('0x23')](_0x22dbd3[0x0]);_0x115aa0[_0x4028('0x23')](_0x22dbd3['slice'](0x1,_0x22dbd3[_0x4028('0x19')])['join'](','));}break;case _0x4028('0x25'):var _0x42bb51=_0x41fd71['appdata'][_0x4028('0x21')](',');_0x115aa0['push'](_0x42bb51[0x0]);_0x115aa0[_0x4028('0x23')](_0x42bb51[0x1]);_0x115aa0[_0x4028('0x23')](_0x42bb51[_0x4028('0x24')](0x2,_0x42bb51[_0x4028('0x19')])['join'](','));break;case _0x4028('0x26'):var _0x8658bb=_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');_0x115aa0[_0x4028('0x23')](_0x8658bb[0x0]);_0x115aa0[_0x4028('0x23')](_0x8658bb[0x1]);_0x115aa0['push'](_0x8658bb[0x2]);_0x115aa0[_0x4028('0x23')](_0x8658bb[0x3]);_0x115aa0[_0x4028('0x23')](_0x8658bb[_0x4028('0x24')](0x4,_0x8658bb[_0x4028('0x19')])[_0x4028('0x1b')](','));break;case _0x4028('0x27'):var _0x517183=_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');_0x115aa0[_0x4028('0x23')](_0x517183[0x0]);_0x115aa0[_0x4028('0x23')](_0x517183[0x1]);_0x115aa0['push'](_0x517183[0x2]);_0x115aa0['push'](_0x517183[0x3]);_0x115aa0[_0x4028('0x23')](_0x517183[_0x4028('0x24')](0x4,_0x517183[_0x4028('0x19')])[_0x4028('0x1b')](','));break;case _0x4028('0x15'):_0x115aa0[_0x4028('0x23')](_0x41fd71[_0x4028('0x20')]);break;case _0x4028('0x28'):_0x115aa0['push'](_0x41fd71[_0x4028('0x29')]);_0x115aa0[_0x4028('0x23')](_0x41fd71['appdata']);break;default:_0x115aa0=_[_0x4028('0xd')](_0x41fd71[_0x4028('0x20')])?[]:_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');}var _0x4e6ed1={'id':util[_0x4028('0x2a')](_0x4028('0x2b'),_0x36df52,_0x41fd71['id'],_0x41fd71[_0x4028('0x1d')]),'condition':require(_0x4028('0x2c'))['condition'](_0x36df52,getIntervals(_0x6b8c[_0x4028('0x2d')],_0x41fd71),_0x6b8c),'consequence':require(_0x4028('0x2e')+_0x41fd71[_0x4028('0x1d')])[_0x4028('0x2f')](_0x36df52,_0x115aa0,_0x6b8c,_0x1dacde),'p':_0x41fd71[_0x4028('0x30')]||0x0};logger[_0x4028('0x31')](_0x4028('0x32'),_0x4e6ed1['id'],_0x4028('0x33'),getIntervals(_0x6b8c[_0x4028('0x2d')],_0x41fd71)[_0x4028('0x1b')](_0x4028('0x34')));_0xa67c91[_0x4028('0x23')](_0x4e6ed1);}else{logger[_0x4028('0x35')](_0x4028('0x36'),path[_0x4028('0x1b')](__dirname,_0x4028('0x17'),_0x41fd71[_0x4028('0x1d')]+_0x4028('0x1c')));}}_0x6b8c[_0x4028('0x13')][_0x36df52]=new RuleEngine(_0xa67c91);_0x6b8c[_0x4028('0x13')][_0x36df52][_0x4028('0x37')](_0x1dacde,function(_0x225931){logger[_0x4028('0x31')](_0x4028('0x38'),JSON[_0x4028('0x39')](_0x225931['matchPath']));if(_0x6b8c[_0x4028('0x13')][_0x36df52]){_0x6b8c['rules'][_0x36df52][_0x4028('0x3a')](_0x4028('0x3b'));}});return _0x20f5f0({'code':0xc8,'message':_0x1dacde});}else{logger[_0x4028('0x31')](_0x4028('0x3c'));return _0x20f5f0({'code':0xc8,'message':_0x1dacde});}}catch(_0x3c3410){logger[_0x4028('0x35')](_0x3c3410[_0x4028('0x3d')]);return _0x3d559d(_0x37d2e9[_0x4028('0x35')](0x1f4,_0x3c3410));}}return _0x3d559d(_0x4028('0x3e'));});},'AcceptMessage':function(_0x2a987f){var _0x5ef1bc=this;return new Promise(function(_0x4f2de4,_0xa090f8){if(_0x2a987f['agent']&&_0x2a987f[_0x4028('0x3f')]['id']){if(_0x6b8c[_0x4028('0x40')][_0x2a987f[_0x4028('0x3f')]['id']]){_0x6b8c['agents'][_0x2a987f[_0x4028('0x3f')]['id']][_0x4028('0x41')]=![];_0x6b8c[_0x4028('0x40')][_0x2a987f['agent']['id']]['busyQueue']=undefined;}}if(_0x2a987f['message']&&_0x2a987f['message']['id']){try{var _0x40deb5=getId(_0x2a987f[_0x4028('0x14')],_0x2a987f[_0x4028('0x15')]?_0x2a987f[_0x4028('0x15')]['id']:0x0,_0x2a987f[_0x4028('0x16')]?_0x2a987f[_0x4028('0x16')]['id']:0x0);if(_0x6b8c[_0x4028('0x13')][_0x40deb5]){_0x6b8c[_0x4028('0x13')][_0x40deb5]['emit']('end');if(rpc[_0x2a987f[_0x4028('0x14')]+_0x4028('0x42')]){rpc[_0x2a987f[_0x4028('0x14')]+_0x4028('0x42')]['update'](_0x40deb5,{'UserId':_0x2a987f['message']['UserId']})[_0x4028('0x43')](function(_0x3b6b98){logger[_0x4028('0x35')](_0x4028('0x44'));});}}return _0x4f2de4({'code':0xc8,'message':_0x2a987f});}catch(_0x53c6c5){logger[_0x4028('0x35')](_0x53c6c5[_0x4028('0x3d')]);return _0xa090f8(_0x5ef1bc[_0x4028('0x35')](0x1f4,_0x53c6c5));}}logger[_0x4028('0x35')](_0x4028('0x45'));return _0xa090f8(_0x5ef1bc[_0x4028('0x35')](0x1f4,_0x4028('0x45')));});},'RejectMessage':function(_0x1bdf98){var _0x3020c4=this;return new Promise(function(_0x4a44f1,_0x210806){if(_0x1bdf98[_0x4028('0x3f')]&&_0x1bdf98[_0x4028('0x3f')]['id']){try{if(_0x6b8c['agents'][_0x1bdf98[_0x4028('0x3f')]['id']]){_0x6b8c['agents'][_0x1bdf98[_0x4028('0x3f')]['id']][_0x4028('0x41')]=![];_0x6b8c['agents'][_0x1bdf98[_0x4028('0x3f')]['id']][_0x4028('0x46')]=undefined;}return _0x4a44f1({'code':0xc8,'message':_0x1bdf98});}catch(_0x403aee){logger['error'](_0x403aee[_0x4028('0x3d')]);return _0x210806(_0x3020c4[_0x4028('0x35')](0x1f4,_0x403aee));}}logger[_0x4028('0x35')]('message\x20is\x20empty');return _0x210806(_0x3020c4[_0x4028('0x35')](0x1f4,_0x4028('0x45')));});},'AbandonInteraction':function(_0xbb25d5){var _0x513cbb=this;return new Promise(function(_0x52e674,_0x2db095){if(_0xbb25d5[_0x4028('0x14')]&&_0xbb25d5[_0x4028('0x16')]&&_0xbb25d5[_0x4028('0x16')]['id']){try{var _0x2cdcc7=getId(_0xbb25d5[_0x4028('0x14')],_0xbb25d5[_0x4028('0x15')]?_0xbb25d5[_0x4028('0x15')]['id']:0x0,_0xbb25d5[_0x4028('0x16')]?_0xbb25d5[_0x4028('0x16')]['id']:0x0);if(_0x6b8c[_0x4028('0x13')][_0x2cdcc7]){_0x6b8c[_0x4028('0x13')][_0x2cdcc7][_0x4028('0x3a')](_0x4028('0x47'));}return _0x52e674({'code':0xc8,'message':_0xbb25d5});}catch(_0x3b078f){logger[_0x4028('0x35')](_0x3b078f[_0x4028('0x3d')]);return _0x2db095(_0x513cbb['error'](0x1f4,_0x3b078f));}}logger[_0x4028('0x35')](_0x4028('0x45'));return _0x2db095(_0x513cbb[_0x4028('0x35')](0x1f4,_0x4028('0x45')));});},'AgentCapacity':function(_0x54c499){var _0xb07762=this;return new Promise(function(_0x16bab1,_0x4561cb){if(_0x6b8c[_0x4028('0x40')][_0x4028('0x48')](_0x54c499['id'])){for(var _0x1f7321 in _0x54c499[_0x4028('0x49')]){if(_0x54c499['capacity'][_0x4028('0x48')](_0x1f7321)){if(_0x6b8c['agents'][_0x54c499['id']]['hasOwnProperty'](_0x1f7321+_0x4028('0x4a'))){_0x6b8c[_0x4028('0x40')][_0x54c499['id']][_0x1f7321+_0x4028('0x4a')]=parseInt(_0x54c499[_0x4028('0x49')][_0x1f7321],0xa);}}}_0x6b8c['agents'][_0x54c499['id']]['updateRealtime']();return _0x16bab1({'code':0xc8,'message':_0x6b8c['agents'][_0x54c499['id']]});}else{return _0x4561cb(_0xb07762[_0x4028('0x35')](0x1f4,_0x4028('0x4b')));}});},'Agents':function(_0x4278bc){return new Promise(function(_0x509b34,_0xbb9de5){var _0x8aed14=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x40')]);_0x509b34({'count':_0x8aed14[_0x4028('0x19')],'rows':_0x8aed14});});},'ChatQueues':function(_0x3f269b){return new Promise(function(_0x2e4e8e,_0xf576bd){var _0x590ea5=[];for(var _0x10083b in _0x6b8c[_0x4028('0x4d')]){if(_0x6b8c[_0x4028('0x4d')][_0x4028('0x48')](_0x10083b)){var _0x3662b4=_0x6b8c[_0x4028('0x4d')][_0x10083b];var _0x57d108={'id':_0x3662b4['id'],'available':_0x3662b4[_0x4028('0x4e')],'loggedIn':_0x3662b4['loggedIn'],'name':_0x3662b4[_0x4028('0x4f')],'paused':_0x3662b4[_0x4028('0x50')],'waiting':_0x3662b4[_0x4028('0x51')]};_0x590ea5['push'](_0x57d108);}}_0x2e4e8e({'count':_0x590ea5[_0x4028('0x19')],'rows':_0x590ea5});});},'MailQueues':function(_0x27a482){return new Promise(function(_0x5ea0d7,_0x5ee8bb){var _0x247a0f=[];for(var _0x3a3d23 in _0x6b8c[_0x4028('0x52')]){if(_0x6b8c['mailQueues'][_0x4028('0x48')](_0x3a3d23)){var _0x39c195=_0x6b8c[_0x4028('0x52')][_0x3a3d23];var _0x2ab095={'id':_0x39c195['id'],'available':_0x39c195[_0x4028('0x4e')],'loggedIn':_0x39c195['loggedIn'],'name':_0x39c195['name'],'paused':_0x39c195['paused'],'waiting':_0x39c195[_0x4028('0x51')]};_0x247a0f[_0x4028('0x23')](_0x2ab095);}}_0x5ea0d7({'count':_0x247a0f[_0x4028('0x19')],'rows':_0x247a0f});});},'OpenchannelQueues':function(_0x3fcb3f){return new Promise(function(_0x515e2c,_0x432e45){var _0x450ed8=[];for(var _0x3c6409 in _0x6b8c[_0x4028('0x53')]){if(_0x6b8c['openchannelQueues'][_0x4028('0x48')](_0x3c6409)){var _0x213ca9=_0x6b8c[_0x4028('0x53')][_0x3c6409];var _0x5eb0f9={'id':_0x213ca9['id'],'available':_0x213ca9[_0x4028('0x4e')],'loggedIn':_0x213ca9[_0x4028('0x54')],'name':_0x213ca9[_0x4028('0x4f')],'paused':_0x213ca9[_0x4028('0x50')],'waiting':_0x213ca9['waiting']};_0x450ed8['push'](_0x5eb0f9);}}_0x515e2c({'count':_0x450ed8[_0x4028('0x19')],'rows':_0x450ed8});});},'SmsQueues':function(_0x5a8f63){return new Promise(function(_0x504096,_0x2319d6){var _0x7f84cb=[];for(var _0x4d4547 in _0x6b8c[_0x4028('0x55')]){if(_0x6b8c[_0x4028('0x55')][_0x4028('0x48')](_0x4d4547)){var _0x190991=_0x6b8c[_0x4028('0x55')][_0x4d4547];var _0x14f836={'id':_0x190991['id'],'available':_0x190991[_0x4028('0x4e')],'loggedIn':_0x190991[_0x4028('0x54')],'name':_0x190991[_0x4028('0x4f')],'paused':_0x190991[_0x4028('0x50')],'waiting':_0x190991[_0x4028('0x51')]};_0x7f84cb['push'](_0x14f836);}}_0x504096({'count':_0x7f84cb[_0x4028('0x19')],'rows':_0x7f84cb});});},'FaxQueues':function(_0x85a5b2){return new Promise(function(_0x4bb1c4,_0x2885a2){var _0x153c67=[];for(var _0x541f34 in _0x6b8c['faxQueues']){if(_0x6b8c[_0x4028('0x56')]['hasOwnProperty'](_0x541f34)){var _0xdc3f9a=_0x6b8c[_0x4028('0x56')][_0x541f34];var _0x57b962={'id':_0xdc3f9a['id'],'available':_0xdc3f9a[_0x4028('0x4e')],'loggedIn':_0xdc3f9a['loggedIn'],'name':_0xdc3f9a['name'],'paused':_0xdc3f9a[_0x4028('0x50')],'waiting':_0xdc3f9a[_0x4028('0x51')]};_0x153c67['push'](_0x57b962);}}_0x4bb1c4({'count':_0x153c67[_0x4028('0x19')],'rows':_0x153c67});});},'WhatsappQueues':function(_0xef7618){return new Promise(function(_0x14f84b,_0x2d4ada){var _0x3b820f=[];for(var _0x3c5fc6 in _0x6b8c[_0x4028('0x57')]){if(_0x6b8c[_0x4028('0x57')][_0x4028('0x48')](_0x3c5fc6)){var _0x21795a=_0x6b8c[_0x4028('0x57')][_0x3c5fc6];var _0x436a02={'id':_0x21795a['id'],'available':_0x21795a[_0x4028('0x4e')],'loggedIn':_0x21795a[_0x4028('0x54')],'name':_0x21795a[_0x4028('0x4f')],'paused':_0x21795a[_0x4028('0x50')],'waiting':_0x21795a[_0x4028('0x51')]};_0x3b820f['push'](_0x436a02);}}_0x14f84b({'count':_0x3b820f[_0x4028('0x19')],'rows':_0x3b820f});});},'ChatQueuesWaitingInteractions':function(_0x2727d1){return new Promise(function(_0x5e2cbb,_0x1510db){var _0x110487=_[_0x4028('0x4c')](_0x6b8c['chatQueuesWaitingInteractions']);_0x5e2cbb({'count':_0x110487[_0x4028('0x19')],'rows':_0x110487});});},'MailQueuesWaitingInteractions':function(_0x157310){return new Promise(function(_0x360516,_0x3eb739){var _0x11a1d5=_['values'](_0x6b8c[_0x4028('0x58')]);_0x360516({'count':_0x11a1d5['length'],'rows':_0x11a1d5});});},'OpenchannelQueuesWaitingInteractions':function(_0x4cfebd){return new Promise(function(_0x4c37ce,_0x115885){var _0xc21aa6=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x59')]);_0x4c37ce({'count':_0xc21aa6[_0x4028('0x19')],'rows':_0xc21aa6});});},'SmsQueuesWaitingInteractions':function(_0x10d033){return new Promise(function(_0x4bb562,_0xc9abde){var _0x2feb4a=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x5a')]);_0x4bb562({'count':_0x2feb4a[_0x4028('0x19')],'rows':_0x2feb4a});});},'FaxQueuesWaitingInteractions':function(_0x2b159){return new Promise(function(_0x19866a,_0x361ff1){var _0x525006=_['values'](_0x6b8c[_0x4028('0x5b')]);_0x19866a({'count':_0x525006[_0x4028('0x19')],'rows':_0x525006});});},'WhatsappQueuesWaitingInteractions':function(_0x5e4a8a){return new Promise(function(_0x1be863,_0xfb789e){var _0x58c6b7=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x5c')]);_0x1be863({'count':_0x58c6b7[_0x4028('0x19')],'rows':_0x58c6b7});});}};var _0x22d235=jayson[_0x4028('0x5d')](_0x98f73b)['http']();_0x22d235['on'](_0x4028('0x35'),function(_0x48b558){logger[_0x4028('0x35')](JSON[_0x4028('0x39')](_0x48b558));return _0x6699(_0x48b558);});_0x22d235[_0x4028('0x12')](0x232c,_0x4028('0x5e'),function(){console['log'](_0x4028('0x5f'),0x232c);return _0x5c7c0c(_0x4028('0x60')+0x232c);});});};
\ No newline at end of file
+var _0x9472=['Please\x20create\x20a\x20new\x20file\x20under','rules','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','agent','agents','busy','QueueReport','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','busyQueue','end','capacity','hasOwnProperty','updateRealtime','agent\x20not\x20found','values','chatQueues','name','paused','waiting','mailQueues','available','openchannelQueues','loggedIn','smsQueues','faxQueues','whatsappQueues','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','isNil','IntervalId','Intervals','map','interval','listen','channel','message','interaction','isArray','applications','length','existsSync','app','.js','toLowerCase','appdata','split','push','slice','join','amazonlex','tag','./interval','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','error'];(function(_0x4eda48,_0x47f15e){var _0x4da599=function(_0x4d9d82){while(--_0x4d9d82){_0x4eda48['push'](_0x4eda48['shift']());}};_0x4da599(++_0x47f15e);}(_0x9472,0x1ec));var _0x2947=function(_0x1d7f2d,_0x343b64){_0x1d7f2d=_0x1d7f2d-0x0;var _0x2ccfdb=_0x9472[_0x1d7f2d];return _0x2ccfdb;};'use strict';var _=require(_0x2947('0x0'));var util=require(_0x2947('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x2947('0x2'));var BPromise=require(_0x2947('0x3'));var uuid=require(_0x2947('0x4'));var config=require(_0x2947('0x5'));var logger=require(_0x2947('0x6'))(_0x2947('0x7'));var rpc={'openchannelQueueReport':require(_0x2947('0x8')),'mailQueueReport':require(_0x2947('0x9')),'chatQueueReport':require(_0x2947('0xa')),'smsQueueReport':require(_0x2947('0xb')),'faxQueueReport':require(_0x2947('0xc')),'whatsappQueueReport':require(_0x2947('0xd'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x3a042c,_0x241b24,_0x5097e7){return util[_0x2947('0xe')]('%s.%s.%s',_0x3a042c,_0x241b24||0x0,_0x5097e7||0x0);}function getIntervals(_0x7661a1,_0x26d1ff){var _0x5e142e=[];if(!_[_0x2947('0xf')](_0x26d1ff[_0x2947('0x10')])&&!_['isNil'](_0x7661a1[_0x26d1ff[_0x2947('0x10')]])&&!_[_0x2947('0xf')](_0x7661a1[_0x26d1ff[_0x2947('0x10')]][_0x2947('0x11')])){_0x5e142e=_[_0x2947('0x12')](_0x7661a1[_0x26d1ff[_0x2947('0x10')]]['Intervals'],'interval');}else if(!_['isNil'](_0x26d1ff[_0x2947('0x13')])){_0x5e142e=[_0x26d1ff[_0x2947('0x13')]];}return _0x5e142e;}exports[_0x2947('0x14')]=function(_0x35d33c){_0x35d33c['rules']={};return new BPromise(function(_0x619721,_0x51f5ff){var _0x948a29={'Start':function(_0x45e9a7){var _0x14663a=this;return new Promise(function(_0x2e750d,_0x3b5639){if(_0x45e9a7){try{var _0x44ea8c=[];var _0x467c18=getId(_0x45e9a7[_0x2947('0x15')],_0x45e9a7[_0x2947('0x16')]?_0x45e9a7[_0x2947('0x16')]['id']:0x0,_0x45e9a7['interaction']?_0x45e9a7[_0x2947('0x17')]['id']:0x0);if(_0x45e9a7['applications']&&_[_0x2947('0x18')](_0x45e9a7[_0x2947('0x19')])&&_0x45e9a7['applications'][_0x2947('0x1a')]){for(var _0x2ea820=0x0;_0x2ea820<_0x45e9a7[_0x2947('0x19')][_0x2947('0x1a')];_0x2ea820+=0x1){var _0x16ac4d=_0x45e9a7[_0x2947('0x19')][_0x2ea820];if(fs[_0x2947('0x1b')](path['join'](__dirname,'applications',_0x16ac4d[_0x2947('0x1c')]+_0x2947('0x1d')))){var _0x5b9a01=[];switch(_0x16ac4d[_0x2947('0x1c')][_0x2947('0x1e')]()){case'autoreply':var _0x18cd95=_0x16ac4d[_0x2947('0x1f')][_0x2947('0x20')](',');if(_0x45e9a7[_0x2947('0x15')]==='mail'){_0x5b9a01[_0x2947('0x21')](_0x18cd95[0x0]);_0x5b9a01[_0x2947('0x21')](_0x18cd95[0x1]);_0x5b9a01['push'](_0x18cd95[_0x2947('0x22')](0x2,_0x18cd95[_0x2947('0x1a')])['join'](','));}else{_0x5b9a01[_0x2947('0x21')](_0x18cd95[0x0]);_0x5b9a01['push'](_0x18cd95[_0x2947('0x22')](0x1,_0x18cd95[_0x2947('0x1a')])[_0x2947('0x23')](','));}break;case'dialogflow':var _0x402026=_0x16ac4d[_0x2947('0x1f')][_0x2947('0x20')](',');_0x5b9a01[_0x2947('0x21')](_0x402026[0x0]);_0x5b9a01[_0x2947('0x21')](_0x402026[0x1]);_0x5b9a01[_0x2947('0x21')](_0x402026[_0x2947('0x22')](0x2,_0x402026['length'])[_0x2947('0x23')](','));break;case'dialogflowv2':var _0x47e6e7=_0x16ac4d['appdata'][_0x2947('0x20')](',');_0x5b9a01[_0x2947('0x21')](_0x47e6e7[0x0]);_0x5b9a01[_0x2947('0x21')](_0x47e6e7[0x1]);_0x5b9a01[_0x2947('0x21')](_0x47e6e7[0x2]);_0x5b9a01[_0x2947('0x21')](_0x47e6e7[0x3]);_0x5b9a01[_0x2947('0x21')](_0x47e6e7[_0x2947('0x22')](0x4,_0x47e6e7[_0x2947('0x1a')])['join'](','));break;case _0x2947('0x24'):var _0x2a3df7=_0x16ac4d[_0x2947('0x1f')][_0x2947('0x20')](',');_0x5b9a01[_0x2947('0x21')](_0x2a3df7[0x0]);_0x5b9a01[_0x2947('0x21')](_0x2a3df7[0x1]);_0x5b9a01['push'](_0x2a3df7[0x2]);_0x5b9a01[_0x2947('0x21')](_0x2a3df7[0x3]);_0x5b9a01['push'](_0x2a3df7[_0x2947('0x22')](0x4,_0x2a3df7[_0x2947('0x1a')])[_0x2947('0x23')](','));break;case _0x2947('0x16'):_0x5b9a01[_0x2947('0x21')](_0x16ac4d[_0x2947('0x1f')]);break;case _0x2947('0x25'):_0x5b9a01[_0x2947('0x21')](_0x16ac4d['TagId']);_0x5b9a01[_0x2947('0x21')](_0x16ac4d[_0x2947('0x1f')]);break;default:_0x5b9a01=_['isNil'](_0x16ac4d[_0x2947('0x1f')])?[]:_0x16ac4d['appdata'][_0x2947('0x20')](',');}var _0x238356={'id':util[_0x2947('0xe')]('%s:%s:%s',_0x467c18,_0x16ac4d['id'],_0x16ac4d[_0x2947('0x1c')]),'condition':require(_0x2947('0x26'))['condition'](_0x467c18,getIntervals(_0x35d33c['intervals'],_0x16ac4d),_0x35d33c),'consequence':require(_0x2947('0x27')+_0x16ac4d[_0x2947('0x1c')])[_0x2947('0x28')](_0x467c18,_0x5b9a01,_0x35d33c,_0x45e9a7),'p':_0x16ac4d[_0x2947('0x29')]||0x0};logger[_0x2947('0x2a')](_0x2947('0x2b'),_0x238356['id'],_0x2947('0x2c'),getIntervals(_0x35d33c[_0x2947('0x2d')],_0x16ac4d)[_0x2947('0x23')](_0x2947('0x2e')));_0x44ea8c['push'](_0x238356);}else{logger[_0x2947('0x2f')](_0x2947('0x30'),path[_0x2947('0x23')](__dirname,_0x2947('0x19'),_0x16ac4d['app']+'.js'));}}_0x35d33c[_0x2947('0x31')][_0x467c18]=new RuleEngine(_0x44ea8c);_0x35d33c['rules'][_0x467c18][_0x2947('0x32')](_0x45e9a7,function(_0x3bbf26){logger[_0x2947('0x2a')](_0x2947('0x33'),JSON[_0x2947('0x34')](_0x3bbf26[_0x2947('0x35')]));if(_0x35d33c['rules'][_0x467c18]){_0x35d33c[_0x2947('0x31')][_0x467c18][_0x2947('0x36')](_0x2947('0x37'));}});return _0x2e750d({'code':0xc8,'message':_0x45e9a7});}else{logger[_0x2947('0x2a')](_0x2947('0x38'));return _0x2e750d({'code':0xc8,'message':_0x45e9a7});}}catch(_0x23ffa9){logger[_0x2947('0x2f')](_0x23ffa9['stack']);return _0x3b5639(_0x14663a[_0x2947('0x2f')](0x1f4,_0x23ffa9));}}return _0x3b5639('routing\x20is\x20empty');});},'AcceptMessage':function(_0x2b39a1){var _0xe612ce=this;return new Promise(function(_0x3565be,_0x184043){if(_0x2b39a1[_0x2947('0x39')]&&_0x2b39a1[_0x2947('0x39')]['id']){if(_0x35d33c[_0x2947('0x3a')][_0x2b39a1[_0x2947('0x39')]['id']]){_0x35d33c[_0x2947('0x3a')][_0x2b39a1[_0x2947('0x39')]['id']][_0x2947('0x3b')]=![];_0x35d33c[_0x2947('0x3a')][_0x2b39a1[_0x2947('0x39')]['id']]['busyQueue']=undefined;}}if(_0x2b39a1[_0x2947('0x16')]&&_0x2b39a1[_0x2947('0x16')]['id']){try{var _0x4dc727=getId(_0x2b39a1[_0x2947('0x15')],_0x2b39a1[_0x2947('0x16')]?_0x2b39a1[_0x2947('0x16')]['id']:0x0,_0x2b39a1[_0x2947('0x17')]?_0x2b39a1['interaction']['id']:0x0);if(_0x35d33c[_0x2947('0x31')][_0x4dc727]){_0x35d33c[_0x2947('0x31')][_0x4dc727][_0x2947('0x36')]('end');if(rpc[_0x2b39a1[_0x2947('0x15')]+_0x2947('0x3c')]){rpc[_0x2b39a1[_0x2947('0x15')]+_0x2947('0x3c')]['update'](_0x4dc727,{'UserId':_0x2b39a1[_0x2947('0x16')][_0x2947('0x3d')]})[_0x2947('0x3e')](function(_0xe3fe79){logger[_0x2947('0x2f')](_0x2947('0x3f'));});}}return _0x3565be({'code':0xc8,'message':_0x2b39a1});}catch(_0x1f3978){logger[_0x2947('0x2f')](_0x1f3978[_0x2947('0x40')]);return _0x184043(_0xe612ce[_0x2947('0x2f')](0x1f4,_0x1f3978));}}logger['error'](_0x2947('0x41'));return _0x184043(_0xe612ce[_0x2947('0x2f')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x51a37d){var _0x295c71=this;return new Promise(function(_0xaeec20,_0x25d127){if(_0x51a37d['agent']&&_0x51a37d[_0x2947('0x39')]['id']){try{if(_0x35d33c[_0x2947('0x3a')][_0x51a37d[_0x2947('0x39')]['id']]){_0x35d33c['agents'][_0x51a37d[_0x2947('0x39')]['id']][_0x2947('0x3b')]=![];_0x35d33c[_0x2947('0x3a')][_0x51a37d[_0x2947('0x39')]['id']][_0x2947('0x42')]=undefined;}return _0xaeec20({'code':0xc8,'message':_0x51a37d});}catch(_0x508f83){logger[_0x2947('0x2f')](_0x508f83[_0x2947('0x40')]);return _0x25d127(_0x295c71[_0x2947('0x2f')](0x1f4,_0x508f83));}}logger[_0x2947('0x2f')]('message\x20is\x20empty');return _0x25d127(_0x295c71[_0x2947('0x2f')](0x1f4,_0x2947('0x41')));});},'AbandonInteraction':function(_0x5c6847){var _0x480979=this;return new Promise(function(_0x2fb92b,_0x7877d3){if(_0x5c6847[_0x2947('0x15')]&&_0x5c6847['interaction']&&_0x5c6847[_0x2947('0x17')]['id']){try{var _0x22d351=getId(_0x5c6847[_0x2947('0x15')],_0x5c6847[_0x2947('0x16')]?_0x5c6847['message']['id']:0x0,_0x5c6847[_0x2947('0x17')]?_0x5c6847[_0x2947('0x17')]['id']:0x0);if(_0x35d33c[_0x2947('0x31')][_0x22d351]){_0x35d33c[_0x2947('0x31')][_0x22d351][_0x2947('0x36')](_0x2947('0x43'));}return _0x2fb92b({'code':0xc8,'message':_0x5c6847});}catch(_0x483baf){logger[_0x2947('0x2f')](_0x483baf['stack']);return _0x7877d3(_0x480979[_0x2947('0x2f')](0x1f4,_0x483baf));}}logger[_0x2947('0x2f')](_0x2947('0x41'));return _0x7877d3(_0x480979[_0x2947('0x2f')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x324bca){var _0x34eb20=this;return new Promise(function(_0xc306ab,_0x4bf992){if(_0x35d33c['agents']['hasOwnProperty'](_0x324bca['id'])){for(var _0x1a2621 in _0x324bca[_0x2947('0x44')]){if(_0x324bca[_0x2947('0x44')][_0x2947('0x45')](_0x1a2621)){if(_0x35d33c['agents'][_0x324bca['id']][_0x2947('0x45')](_0x1a2621+'CurrentCapacity')){_0x35d33c[_0x2947('0x3a')][_0x324bca['id']][_0x1a2621+'CurrentCapacity']=parseInt(_0x324bca['capacity'][_0x1a2621],0xa);}}}_0x35d33c[_0x2947('0x3a')][_0x324bca['id']][_0x2947('0x46')]();return _0xc306ab({'code':0xc8,'message':_0x35d33c['agents'][_0x324bca['id']]});}else{return _0x4bf992(_0x34eb20[_0x2947('0x2f')](0x1f4,_0x2947('0x47')));}});},'Agents':function(_0x5086a4){return new Promise(function(_0x203636,_0x31ad41){var _0x5a2523=_[_0x2947('0x48')](_0x35d33c[_0x2947('0x3a')]);_0x203636({'count':_0x5a2523[_0x2947('0x1a')],'rows':_0x5a2523});});},'ChatQueues':function(_0x16157e){return new Promise(function(_0x10eec3,_0x1c0cb8){var _0x4ac22a=[];for(var _0x1d2f16 in _0x35d33c['chatQueues']){if(_0x35d33c[_0x2947('0x49')][_0x2947('0x45')](_0x1d2f16)){var _0x59bd71=_0x35d33c[_0x2947('0x49')][_0x1d2f16];var _0xfb4b2b={'id':_0x59bd71['id'],'available':_0x59bd71['available'],'loggedIn':_0x59bd71['loggedIn'],'name':_0x59bd71[_0x2947('0x4a')],'paused':_0x59bd71[_0x2947('0x4b')],'waiting':_0x59bd71[_0x2947('0x4c')]};_0x4ac22a[_0x2947('0x21')](_0xfb4b2b);}}_0x10eec3({'count':_0x4ac22a[_0x2947('0x1a')],'rows':_0x4ac22a});});},'MailQueues':function(_0x3adfd1){return new Promise(function(_0x3e8b57,_0x9ce2ff){var _0x3772d2=[];for(var _0xe22da6 in _0x35d33c[_0x2947('0x4d')]){if(_0x35d33c[_0x2947('0x4d')][_0x2947('0x45')](_0xe22da6)){var _0x161102=_0x35d33c['mailQueues'][_0xe22da6];var _0x40b011={'id':_0x161102['id'],'available':_0x161102[_0x2947('0x4e')],'loggedIn':_0x161102['loggedIn'],'name':_0x161102[_0x2947('0x4a')],'paused':_0x161102[_0x2947('0x4b')],'waiting':_0x161102[_0x2947('0x4c')]};_0x3772d2[_0x2947('0x21')](_0x40b011);}}_0x3e8b57({'count':_0x3772d2['length'],'rows':_0x3772d2});});},'OpenchannelQueues':function(_0xa20e49){return new Promise(function(_0x4d0d15,_0x511cb3){var _0x283d4c=[];for(var _0x5c95a2 in _0x35d33c[_0x2947('0x4f')]){if(_0x35d33c[_0x2947('0x4f')]['hasOwnProperty'](_0x5c95a2)){var _0xe5cb80=_0x35d33c['openchannelQueues'][_0x5c95a2];var _0x3aacf1={'id':_0xe5cb80['id'],'available':_0xe5cb80['available'],'loggedIn':_0xe5cb80[_0x2947('0x50')],'name':_0xe5cb80[_0x2947('0x4a')],'paused':_0xe5cb80[_0x2947('0x4b')],'waiting':_0xe5cb80[_0x2947('0x4c')]};_0x283d4c[_0x2947('0x21')](_0x3aacf1);}}_0x4d0d15({'count':_0x283d4c[_0x2947('0x1a')],'rows':_0x283d4c});});},'SmsQueues':function(_0xe41c64){return new Promise(function(_0x4dd6c8,_0x3d4c29){var _0x43ddd0=[];for(var _0x247871 in _0x35d33c[_0x2947('0x51')]){if(_0x35d33c['smsQueues'][_0x2947('0x45')](_0x247871)){var _0xe59080=_0x35d33c[_0x2947('0x51')][_0x247871];var _0x2d7419={'id':_0xe59080['id'],'available':_0xe59080[_0x2947('0x4e')],'loggedIn':_0xe59080['loggedIn'],'name':_0xe59080[_0x2947('0x4a')],'paused':_0xe59080[_0x2947('0x4b')],'waiting':_0xe59080[_0x2947('0x4c')]};_0x43ddd0['push'](_0x2d7419);}}_0x4dd6c8({'count':_0x43ddd0['length'],'rows':_0x43ddd0});});},'FaxQueues':function(_0x53263d){return new Promise(function(_0x2de149,_0x299324){var _0x3e59b8=[];for(var _0x6b865a in _0x35d33c[_0x2947('0x52')]){if(_0x35d33c[_0x2947('0x52')][_0x2947('0x45')](_0x6b865a)){var _0x263206=_0x35d33c[_0x2947('0x52')][_0x6b865a];var _0x49b054={'id':_0x263206['id'],'available':_0x263206[_0x2947('0x4e')],'loggedIn':_0x263206[_0x2947('0x50')],'name':_0x263206[_0x2947('0x4a')],'paused':_0x263206[_0x2947('0x4b')],'waiting':_0x263206[_0x2947('0x4c')]};_0x3e59b8[_0x2947('0x21')](_0x49b054);}}_0x2de149({'count':_0x3e59b8[_0x2947('0x1a')],'rows':_0x3e59b8});});},'WhatsappQueues':function(_0x45cc14){return new Promise(function(_0xb2390e,_0x14c641){var _0x371d9c=[];for(var _0x507aaa in _0x35d33c[_0x2947('0x53')]){if(_0x35d33c[_0x2947('0x53')][_0x2947('0x45')](_0x507aaa)){var _0x4c8812=_0x35d33c['whatsappQueues'][_0x507aaa];var _0x4f6695={'id':_0x4c8812['id'],'available':_0x4c8812['available'],'loggedIn':_0x4c8812[_0x2947('0x50')],'name':_0x4c8812[_0x2947('0x4a')],'paused':_0x4c8812[_0x2947('0x4b')],'waiting':_0x4c8812[_0x2947('0x4c')]};_0x371d9c[_0x2947('0x21')](_0x4f6695);}}_0xb2390e({'count':_0x371d9c[_0x2947('0x1a')],'rows':_0x371d9c});});},'ChatQueuesWaitingInteractions':function(_0x2a18d6){return new Promise(function(_0xb92a2a,_0x157c81){var _0x1044cc=_[_0x2947('0x48')](_0x35d33c['chatQueuesWaitingInteractions']);_0xb92a2a({'count':_0x1044cc[_0x2947('0x1a')],'rows':_0x1044cc});});},'MailQueuesWaitingInteractions':function(_0x594d86){return new Promise(function(_0x2ffdd7,_0xf26314){var _0x3349ed=_[_0x2947('0x48')](_0x35d33c['mailQueuesWaitingInteractions']);_0x2ffdd7({'count':_0x3349ed[_0x2947('0x1a')],'rows':_0x3349ed});});},'OpenchannelQueuesWaitingInteractions':function(_0x3c4d3b){return new Promise(function(_0x440caa,_0x7052f2){var _0x35854a=_['values'](_0x35d33c['openchannelQueuesWaitingInteractions']);_0x440caa({'count':_0x35854a[_0x2947('0x1a')],'rows':_0x35854a});});},'SmsQueuesWaitingInteractions':function(_0x4bc8ca){return new Promise(function(_0x27de6c,_0x330499){var _0x229c24=_['values'](_0x35d33c[_0x2947('0x54')]);_0x27de6c({'count':_0x229c24[_0x2947('0x1a')],'rows':_0x229c24});});},'FaxQueuesWaitingInteractions':function(_0x4a5a08){return new Promise(function(_0x52f727,_0x47865f){var _0x1b4f16=_[_0x2947('0x48')](_0x35d33c[_0x2947('0x55')]);_0x52f727({'count':_0x1b4f16['length'],'rows':_0x1b4f16});});},'WhatsappQueuesWaitingInteractions':function(_0x26b889){return new Promise(function(_0x172e7b,_0x319c95){var _0x4563eb=_[_0x2947('0x48')](_0x35d33c[_0x2947('0x56')]);_0x172e7b({'count':_0x4563eb[_0x2947('0x1a')],'rows':_0x4563eb});});}};var _0x4aa4cc=jayson['server'](_0x948a29)[_0x2947('0x57')]();_0x4aa4cc['on'](_0x2947('0x2f'),function(_0x1dd517){logger[_0x2947('0x2f')](JSON['stringify'](_0x1dd517));return _0x51f5ff(_0x1dd517);});_0x4aa4cc['listen'](0x232c,'127.0.0.1',function(){console['log'](_0x2947('0x58'),0x232c);return _0x619721(_0x2947('0x59')+0x232c);});});};
\ No newline at end of file
index 1dd4243..8a9d284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bb9=['[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','some','join','\x20|\x20','when','log','[%s][INTERVAL]\x20%s\x20%s','stack','util','bluebird','lodash','routing','http','request','then','error','message','result','catch','condition','rules','info'];(function(_0x2e4809,_0x365e2a){var _0x4e9161=function(_0x19d951){while(--_0x19d951){_0x2e4809['push'](_0x2e4809['shift']());}};_0x4e9161(++_0x365e2a);}(_0x6bb9,0x6e));var _0x96bb=function(_0x1709cc,_0x3a0ed9){_0x1709cc=_0x1709cc-0x0;var _0x42a064=_0x6bb9[_0x1709cc];return _0x42a064;};'use strict';var util=require(_0x96bb('0x0'));var BPromise=require(_0x96bb('0x1'));var jayson=require('jayson/promise');var _=require(_0x96bb('0x2'));var logger=require('../../../config/logger')(_0x96bb('0x3'));var client=jayson['client'][_0x96bb('0x4')]({'port':0x232a});function request(_0x1ef6e6,_0x3ebe38){return new BPromise(function(_0x3391c3,_0x213af7){return client[_0x96bb('0x5')](_0x1ef6e6,_0x3ebe38)[_0x96bb('0x6')](function(_0x4bd8d3){if(_0x4bd8d3[_0x96bb('0x7')]){return _0x213af7(_0x4bd8d3[_0x96bb('0x7')][_0x96bb('0x8')]);}else{return _0x3391c3(_0x4bd8d3[_0x96bb('0x9')]);}})[_0x96bb('0xa')](function(_0x2d1587){return _0x213af7(_0x2d1587);});});}exports[_0x96bb('0xb')]=function(_0x53386d,_0x3ba613,_0x2a24e4){return function(_0x26ac0c){if(_0x2a24e4[_0x96bb('0xc')]&&!_0x2a24e4[_0x96bb('0xc')][_0x53386d]){logger[_0x96bb('0xd')](_0x96bb('0xe'),_0x53386d);return _0x26ac0c[_0x96bb('0xf')]();}var _0x445216=[];for(var _0x5070ec=0x0;_0x5070ec<_0x3ba613[_0x96bb('0x10')];_0x5070ec+=0x1){_0x445216['push'](request(_0x96bb('0x11'),{'command':util[_0x96bb('0x12')](_0x96bb('0x13'),_0x3ba613[_0x5070ec])})[_0x96bb('0x6')](function(_0x55971){return _0x55971&&_0x55971[_0x96bb('0x8')]&&_0x55971[_0x96bb('0x8')][_0x96bb('0x14')](_0x96bb('0x15'))>=0x0?!![]:![];})[_0x96bb('0xa')](function(_0x1478f8){logger[_0x96bb('0x7')](_0x96bb('0x16'),_0x53386d,_0x3ba613[_0x5070ec]);}));}BPromise[_0x96bb('0x17')](_0x445216)[_0x96bb('0x6')](function(_0x58f84e){var _0xa9cf28=_[_0x96bb('0x18')](_0x58f84e);logger[_0x96bb('0xd')]('[%s][INTERVAL]\x20%s\x20%s',_0x53386d,_0x3ba613[_0x96bb('0x19')](_0x96bb('0x1a')),_0xa9cf28);_0x26ac0c[_0x96bb('0x1b')](_0xa9cf28);})['catch'](function(_0x466c48){console[_0x96bb('0x1c')](_0x466c48);logger[_0x96bb('0x7')](_0x96bb('0x1d'),_0x53386d,_0x3ba613['join'](_0x96bb('0x1a')),_0x466c48[_0x96bb('0x1e')]);_0x26ac0c[_0x96bb('0xf')]();});};};
\ No newline at end of file
+var _0x6205=['message','result','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','iftime\x20%s','then','true','error','[%s][INTERVAL]\x20%s','all','join','when','catch','log','\x20|\x20','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6205,0xb1));var _0x5620=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x6205[_0x432682];return _0x463d05;};'use strict';var util=require(_0x5620('0x0'));var BPromise=require(_0x5620('0x1'));var jayson=require(_0x5620('0x2'));var _=require(_0x5620('0x3'));var logger=require(_0x5620('0x4'))(_0x5620('0x5'));var client=jayson[_0x5620('0x6')][_0x5620('0x7')]({'port':0x232a});function request(_0x47a905,_0x53b59a){return new BPromise(function(_0x3cfebe,_0x535a34){return client[_0x5620('0x8')](_0x47a905,_0x53b59a)['then'](function(_0x3042a2){if(_0x3042a2['error']){return _0x535a34(_0x3042a2['error'][_0x5620('0x9')]);}else{return _0x3cfebe(_0x3042a2[_0x5620('0xa')]);}})['catch'](function(_0xec53a8){return _0x535a34(_0xec53a8);});});}exports[_0x5620('0xb')]=function(_0x1b4c7f,_0x56f433,_0x4a03d9){return function(_0xe35380){if(_0x4a03d9[_0x5620('0xc')]&&!_0x4a03d9[_0x5620('0xc')][_0x1b4c7f]){logger[_0x5620('0xd')](_0x5620('0xe'),_0x1b4c7f);return _0xe35380[_0x5620('0xf')]();}var _0x3cf61e=[];for(var _0x3e62f9=0x0;_0x3e62f9<_0x56f433[_0x5620('0x10')];_0x3e62f9+=0x1){_0x3cf61e[_0x5620('0x11')](request(_0x5620('0x12'),{'command':util['format'](_0x5620('0x13'),_0x56f433[_0x3e62f9])})[_0x5620('0x14')](function(_0x23b656){return _0x23b656&&_0x23b656['message']&&_0x23b656[_0x5620('0x9')]['indexOf'](_0x5620('0x15'))>=0x0?!![]:![];})['catch'](function(_0x1849c9){logger[_0x5620('0x16')](_0x5620('0x17'),_0x1b4c7f,_0x56f433[_0x3e62f9]);}));}BPromise[_0x5620('0x18')](_0x3cf61e)[_0x5620('0x14')](function(_0x2cd53d){var _0x3f48ba=_['some'](_0x2cd53d);logger[_0x5620('0xd')]('[%s][INTERVAL]\x20%s\x20%s',_0x1b4c7f,_0x56f433[_0x5620('0x19')]('\x20|\x20'),_0x3f48ba);_0xe35380[_0x5620('0x1a')](_0x3f48ba);})[_0x5620('0x1b')](function(_0x187f99){console[_0x5620('0x1c')](_0x187f99);logger[_0x5620('0x16')]('[%s][INTERVAL]\x20%s\x20%s',_0x1b4c7f,_0x56f433['join'](_0x5620('0x1d')),_0x187f99[_0x5620('0x1e')]);_0xe35380[_0x5620('0xf')]();});};};
\ No newline at end of file
index 116c488..4b8b67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['[%s][agents][attendedtransfer]','origtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','indexOf','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','complete','lodash','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','calleridnum','connectedlinenum','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','ringtime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','connect','talktime','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','diffTime','agentcompleteAt','agentconnectAt','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten'];(function(_0x23f08f,_0x574ab0){var _0x30b6ae=function(_0x4ed5a6){while(--_0x4ed5a6){_0x23f08f['push'](_0x23f08f['shift']());}};_0x30b6ae(++_0x574ab0);}(_0xd64b,0xc1));var _0xbd64=function(_0x3c6562,_0x5eca79){_0x3c6562=_0x3c6562-0x0;var _0x2c6720=_0xd64b[_0x3c6562];return _0x2c6720;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var utils=require(_0xbd64('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4bfb7c,_0x30b9b3){utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x4'),_0x4bfb7c[_0xbd64('0x5')],_0x4bfb7c['channel'],_0x4bfb7c['queue'],_0x4bfb7c['membername'],_0x4bfb7c['interface'],_0x4bfb7c[_0xbd64('0x6')],_0x4bfb7c[_0xbd64('0x7')],_0x4bfb7c[_0xbd64('0x8')]));if(_0x4bfb7c[_0xbd64('0x9')]){utils[_0xbd64('0xa')](_0x4bfb7c[_0xbd64('0x9')])[_0xbd64('0xb')](function(_0x5d32b8){if(_0x5d32b8){_0x4bfb7c['type']=_0x5d32b8[_0xbd64('0xc')];_0x4bfb7c[_0xbd64('0xd')]=_0x4bfb7c[_0xbd64('0xe')]?_0x5d32b8['acw']:![];_0x4bfb7c[_0xbd64('0xf')]=_0x4bfb7c[_0xbd64('0xd')]?_0x5d32b8[_0xbd64('0x10')]:0x0;}utils[_0xbd64('0x11')]('CreateVoiceAgentReport',_0x4bfb7c);});}else{utils[_0xbd64('0x11')]('CreateVoiceAgentReport',_0x4bfb7c);}if(_0x30b9b3){delete transfers[_0x4bfb7c[_0xbd64('0x5')]];}else{delete agents[_0x4bfb7c[_0xbd64('0x12')]];}}exports[_0xbd64('0x13')]=function(_0x2183e2){try{utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x15'),_0x2183e2[_0xbd64('0x5')]),_0x2183e2);agents[_0x2183e2[_0xbd64('0x12')]]=_0x2183e2;agents[_0x2183e2['destuniqueid']][_0xbd64('0x16')]=utils[_0xbd64('0x17')]();agents[_0x2183e2[_0xbd64('0x12')]][_0xbd64('0x8')]=_0xbd64('0x18');agents[_0x2183e2['destuniqueid']][_0xbd64('0x7')]=null;agents[_0x2183e2['destuniqueid']][_0xbd64('0x19')]=null;utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x1a'),_0x2183e2[_0xbd64('0x5')],agents[_0x2183e2[_0xbd64('0x12')]][_0xbd64('0x1b')],_0x2183e2[_0xbd64('0x12')]));}catch(_0x5d3b00){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')]('[%s][agents][agentcalled]',_0x2183e2['uniqueid']),_0x5d3b00);}};exports[_0xbd64('0x1d')]=function(_0x42b328){try{if(!_[_0xbd64('0x1e')](agents[_0x42b328[_0xbd64('0x12')]])){utils[_0xbd64('0x14')](util[_0xbd64('0x3')]('[%s][agents][agentringnoanswer]',_0x42b328['uniqueid']),_0x42b328);utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x1f'),_0x42b328[_0xbd64('0x5')],agents[_0x42b328['destuniqueid']]['membername'],_0x42b328[_0xbd64('0x12')]));agents[_0x42b328['destuniqueid']][_0xbd64('0x1d')]=!![];agents[_0x42b328['destuniqueid']][_0xbd64('0x20')]=utils[_0xbd64('0x17')]();agents[_0x42b328[_0xbd64('0x12')]][_0xbd64('0x8')]='timeout';agents[_0x42b328[_0xbd64('0x12')]][_0xbd64('0x21')]=_0xbd64('0x22');agents[_0x42b328[_0xbd64('0x12')]]['holdtime']=_0x42b328['ringtime']?parseInt(_0x42b328[_0xbd64('0x23')])/0x3e8:0x0;agents[_0x42b328['destuniqueid']]['talktime']=0x0;unanswered[_0xbd64('0x24')](_0x42b328['destuniqueid']);}}catch(_0x3cf5b7){utils['error'](util[_0xbd64('0x3')]('[%s][agents][agentringnoanswer]',_0x42b328[_0xbd64('0x5')]),_0x3cf5b7);}};exports[_0xbd64('0x25')]=function(_0x3be63a){try{_[_0xbd64('0x26')](agents,function(_0x306f19,_0x207ffc){if(_0x306f19['uniqueid']==_0x3be63a[_0xbd64('0x5')]&&!_[_0xbd64('0x27')](unanswered,_0x306f19[_0xbd64('0x12')])){utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x28'),_0x3be63a['uniqueid']),_0x3be63a);utils['info'](util[_0xbd64('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x3be63a[_0xbd64('0x5')],_0x306f19[_0xbd64('0x1b')],_0x306f19['destuniqueid']));_0x306f19['agentringnoanswer']=!![];_0x306f19[_0xbd64('0x20')]=utils['now']();_0x306f19['lastevent']=_0xbd64('0x29');_0x306f19[_0xbd64('0x21')]=_0xbd64('0x29');_0x306f19['holdtime']=_0x3be63a[_0xbd64('0x2a')];_0x306f19['talktime']=0x0;writeDB(_0x306f19);}});}catch(_0x1fc9cf){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x28'),_0x3be63a[_0xbd64('0x5')]),_0x1fc9cf);}};exports[_0xbd64('0x2b')]=function(_0x513339){try{if(agents[_0x513339['destuniqueid']]){utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x2c'),_0x513339[_0xbd64('0x5')]),_0x513339);utils[_0xbd64('0x2')](util[_0xbd64('0x3')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x513339['uniqueid'],agents[_0x513339[_0xbd64('0x12')]][_0xbd64('0x1b')],_0x513339[_0xbd64('0x12')]));agents[_0x513339['destuniqueid']]['agentconnectAt']=utils[_0xbd64('0x17')]();agents[_0x513339['destuniqueid']][_0xbd64('0x7')]=_0x513339['connectedlinenum'];agents[_0x513339[_0xbd64('0x12')]][_0xbd64('0x19')]=_0x513339['connectedlinename'];agents[_0x513339[_0xbd64('0x12')]]['holdtime']=_0x513339['ringtime'];agents[_0x513339[_0xbd64('0x12')]][_0xbd64('0x8')]=_0xbd64('0x2d');_['forIn'](agents,function(_0x540e2a,_0x5d6bcf){if(_0x540e2a[_0xbd64('0x12')]!=_0x513339[_0xbd64('0x12')]&&_0x540e2a['uniqueid']==_0x513339[_0xbd64('0x5')]){_0x540e2a[_0xbd64('0x2e')]=0x0;_0x540e2a[_0xbd64('0x2a')]=_0x513339[_0xbd64('0x23')];_0x540e2a['agentringnoanswer']=!![];_0x540e2a['agentringnoanswerAt']=utils[_0xbd64('0x17')]();_0x540e2a['lastevent']='answered_elsewhere';_0x540e2a[_0xbd64('0x21')]=_0xbd64('0x2f');_0x540e2a[_0xbd64('0x30')]=_0x513339[_0xbd64('0x12')];_0x540e2a[_0xbd64('0x31')]=_0x513339[_0xbd64('0x1b')];writeDB(_0x540e2a);}});}}catch(_0x247775){utils[_0xbd64('0x1c')](util['format'](_0xbd64('0x2c'),_0x513339[_0xbd64('0x5')]),_0x247775);}};exports['agentcomplete']=function(_0x41b27a){try{if(!_[_0xbd64('0x1e')](agents[_0x41b27a[_0xbd64('0x12')]])){utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x32'),_0x41b27a[_0xbd64('0x5')]),_0x41b27a);utils['info'](util[_0xbd64('0x3')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x41b27a[_0xbd64('0x5')],agents[_0x41b27a['destuniqueid']][_0xbd64('0x1b')],_0x41b27a[_0xbd64('0x12')]));agents[_0x41b27a[_0xbd64('0x12')]]['agentcomplete']=!![];agents[_0x41b27a[_0xbd64('0x12')]]['agentcompleteAt']=utils['now']();agents[_0x41b27a['destuniqueid']][_0xbd64('0x2e')]=utils[_0xbd64('0x33')](agents[_0x41b27a[_0xbd64('0x12')]][_0xbd64('0x34')],agents[_0x41b27a[_0xbd64('0x12')]][_0xbd64('0x35')]);agents[_0x41b27a[_0xbd64('0x12')]]['reason']=_0x41b27a[_0xbd64('0x21')];agents[_0x41b27a[_0xbd64('0x12')]][_0xbd64('0x8')]='complete';writeDB(agents[_0x41b27a[_0xbd64('0x12')]]);}}catch(_0x436f36){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x32'),_0x41b27a['uniqueid']),_0x436f36);}};exports[_0xbd64('0x36')]=function(_0x1a9ec8){try{if(!_[_0xbd64('0x1e')](agents[_0x1a9ec8[_0xbd64('0x37')]])){utils['debug'](util['format'](_0xbd64('0x38'),_0x1a9ec8[_0xbd64('0x5')]),_0x1a9ec8);utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x39'),_0x1a9ec8[_0xbd64('0x5')],agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x1b')],agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x5')]));agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x3a')]=!![];agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x3b')]=_0xbd64('0x3c');agents[_0x1a9ec8['transfereruniqueid']][_0xbd64('0x3d')]=_0x1a9ec8['extension'];agents[_0x1a9ec8['transfereruniqueid']]['transferuniqueid']=agents[_0x1a9ec8['transfereruniqueid']][_0xbd64('0x5')];}}catch(_0x2f56df){utils['error'](util[_0xbd64('0x3')](_0xbd64('0x38'),_0x1a9ec8[_0xbd64('0x5')]),_0x2f56df);}};exports['attendedtransfer']=function(_0x2c42fd){try{utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x3e'),_0x2c42fd[_0xbd64('0x3f')]),_0x2c42fd);if(_0x2c42fd[_0xbd64('0x3f')]==_0x2c42fd['origtransfererlinkedid']){if(!_['isNil'](agents[_0x2c42fd['secondtransfereruniqueid']])){utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x40'),_0x2c42fd[_0xbd64('0x3f')],agents[_0x2c42fd['secondtransfereruniqueid']][_0xbd64('0x1b')]));agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x3a')]=!![];agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x3b')]=_0xbd64('0x42');agents[_0x2c42fd['secondtransfereruniqueid']][_0xbd64('0x3d')]=_0x2c42fd[_0xbd64('0x43')];agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x44')]=_0x2c42fd[_0xbd64('0x3f')];}if(_0x2c42fd[_0xbd64('0x45')]&&agents[_0x2c42fd[_0xbd64('0x45')]]){agents[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x46')]=0x1;transfers[_0x2c42fd[_0xbd64('0x45')]]=_[_0xbd64('0x47')](agents[_0x2c42fd[_0xbd64('0x45')]]);transfers[_0x2c42fd['transfereeuniqueid']]['calleridnum']=agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x6')];transfers[_0x2c42fd['transfereeuniqueid']]['calleridname']=agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x48')];transfers[_0x2c42fd['transfereeuniqueid']][_0xbd64('0x16')]=utils[_0xbd64('0x17')]();transfers[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x35')]=utils[_0xbd64('0x17')]();transfers[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x2a')]=0x0;transfers[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x46')]=0x2;}}else if(_0x2c42fd['secondtransfereruniqueid']==_0x2c42fd[_0xbd64('0x49')]){if(!_[_0xbd64('0x1e')](agents[_0x2c42fd[_0xbd64('0x3f')]])){utils['info'](util[_0xbd64('0x3')](_0xbd64('0x40'),_0x2c42fd['origtransfereruniqueid'],agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x1b')]));agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x3a')]=!![];agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x3b')]='ATTENDED';agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x3d')]=_0x2c42fd[_0xbd64('0x4a')];agents[_0x2c42fd[_0xbd64('0x3f')]]['transferuniqueid']=_0x2c42fd[_0xbd64('0x41')];}if(_0x2c42fd[_0xbd64('0x4b')]&&agents[_0x2c42fd['transfertargetuniqueid']]){agents[_0x2c42fd[_0xbd64('0x4b')]]['agententerreason']=0x1;transfers[_0x2c42fd[_0xbd64('0x4b')]]=_[_0xbd64('0x47')](agents[_0x2c42fd[_0xbd64('0x4b')]]);transfers[_0x2c42fd[_0xbd64('0x4b')]]['calleridnum']=agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x6')];transfers[_0x2c42fd[_0xbd64('0x4b')]][_0xbd64('0x48')]=agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x48')];transfers[_0x2c42fd['transfertargetuniqueid']]['agentcalledAt']=utils['now']();transfers[_0x2c42fd[_0xbd64('0x4b')]][_0xbd64('0x35')]=utils[_0xbd64('0x17')]();transfers[_0x2c42fd[_0xbd64('0x4b')]][_0xbd64('0x2a')]=0x0;transfers[_0x2c42fd[_0xbd64('0x4b')]]['agententerreason']=0x2;}}}catch(_0x30eddc){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x3e'),_0x2c42fd[_0xbd64('0x3f')]),_0x30eddc);}};exports[_0xbd64('0x4c')]=function(_0x2f3516){try{utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x4d'),_0x2f3516[_0xbd64('0x5')]),_0x2f3516);if(agents[_0x2f3516[_0xbd64('0x5')]]&&agents[_0x2f3516['uniqueid']]['reason']===_0xbd64('0x22')){if(_0x2f3516[_0xbd64('0x4e')]==='21'){agents[_0x2f3516[_0xbd64('0x5')]]['reason']=_0xbd64('0x4f');agents[_0x2f3516['uniqueid']][_0xbd64('0x8')]=_0xbd64('0x4f');}utils[_0xbd64('0x2')](util[_0xbd64('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x2f3516[_0xbd64('0x5')],agents[_0x2f3516['uniqueid']][_0xbd64('0x1b')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]));writeDB(agents[_0x2f3516['uniqueid']]);var _0x43780f=unanswered[_0xbd64('0x50')](_0x2f3516['uniqueid']);if(_0x43780f>-0x1){unanswered[_0xbd64('0x51')](_0x43780f,0x1);}}if(transfers[_0x2f3516[_0xbd64('0x5')]]){transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0xe')]=!![];transfers[_0x2f3516['uniqueid']][_0xbd64('0x34')]=utils['now']();transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x2e')]=utils[_0xbd64('0x33')](transfers[_0x2f3516['uniqueid']]['agentcompleteAt'],transfers[_0x2f3516['uniqueid']]['agentconnectAt']);transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')]=_0xbd64('0x52');transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]='complete';utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x53'),_0x2f3516[_0xbd64('0x5')],transfers[_0x2f3516[_0xbd64('0x5')]]['membername'],transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')],transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]));writeDB(transfers[_0x2f3516['uniqueid']],!![]);}if(agents[_0x2f3516['uniqueid']]&&agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x35')]){agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0xe')]=!![];agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x34')]=utils[_0xbd64('0x17')]();agents[_0x2f3516[_0xbd64('0x5')]]['talktime']=utils[_0xbd64('0x33')](agents[_0x2f3516['uniqueid']][_0xbd64('0x34')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x35')]);agents[_0x2f3516['uniqueid']][_0xbd64('0x21')]=agents[_0x2f3516['uniqueid']]['transfer']?_0xbd64('0x3a'):_0xbd64('0x52');agents[_0x2f3516[_0xbd64('0x5')]]['lastevent']=_0xbd64('0x54');utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x53'),_0x2f3516['uniqueid'],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x1b')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]));writeDB(agents[_0x2f3516[_0xbd64('0x5')]]);}}catch(_0x439bbd){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x4d'),_0x2f3516[_0xbd64('0x5')]),_0x439bbd);}};
\ No newline at end of file
+var _0x44a3=['agentacw','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','uniqueid','destuniqueid','agentcalledAt','now','connectedlinenum','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','push','forIn','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][agents][queuecallerabandon]','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','lastevent','answered_elsewhere','answeredelsewheredestinationuniqueid','isNil','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','agentcompleteAt','complete','blindtransfer','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','blind','transferexten','extension','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','calleridname','hangup','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','[%s][agents][hangup]','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','then','type','agentcomplete','acw'];(function(_0x55c09c,_0x406cfe){var _0x35c8ed=function(_0x2d3612){while(--_0x2d3612){_0x55c09c['push'](_0x55c09c['shift']());}};_0x35c8ed(++_0x406cfe);}(_0x44a3,0x1a9));var _0x344a=function(_0x18fd0b,_0xe0f9ed){_0x18fd0b=_0x18fd0b-0x0;var _0x3b19a3=_0x44a3[_0x18fd0b];return _0x3b19a3;};'use strict';var _=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var utils=require(_0x344a('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x23cef2,_0xdffe0b){utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x5'),_0x23cef2['uniqueid'],_0x23cef2[_0x344a('0x6')],_0x23cef2[_0x344a('0x7')],_0x23cef2[_0x344a('0x8')],_0x23cef2[_0x344a('0x9')],_0x23cef2[_0x344a('0xa')],_0x23cef2['connectedlinenum'],_0x23cef2['lastevent']));if(_0x23cef2['queue']){utils['getVoiceQueueByName'](_0x23cef2[_0x344a('0x7')])[_0x344a('0xb')](function(_0x3c725e){if(_0x3c725e){_0x23cef2[_0x344a('0xc')]=_0x3c725e[_0x344a('0xc')];_0x23cef2['agentacw']=_0x23cef2[_0x344a('0xd')]?_0x3c725e[_0x344a('0xe')]:![];_0x23cef2['acwtime']=_0x23cef2[_0x344a('0xf')]?_0x3c725e['acwTimeout']:0x0;}utils[_0x344a('0x10')]('CreateVoiceAgentReport',_0x23cef2);});}else{utils[_0x344a('0x10')](_0x344a('0x11'),_0x23cef2);}if(_0xdffe0b){delete transfers[_0x23cef2['uniqueid']];}else{delete agents[_0x23cef2['destuniqueid']];}}exports[_0x344a('0x12')]=function(_0x2ad7eb){try{utils[_0x344a('0x13')](util[_0x344a('0x4')](_0x344a('0x14'),_0x2ad7eb[_0x344a('0x15')]),_0x2ad7eb);agents[_0x2ad7eb['destuniqueid']]=_0x2ad7eb;agents[_0x2ad7eb[_0x344a('0x16')]][_0x344a('0x17')]=utils[_0x344a('0x18')]();agents[_0x2ad7eb[_0x344a('0x16')]]['lastevent']='called';agents[_0x2ad7eb[_0x344a('0x16')]][_0x344a('0x19')]=null;agents[_0x2ad7eb[_0x344a('0x16')]][_0x344a('0x1a')]=null;utils['info'](util[_0x344a('0x4')](_0x344a('0x1b'),_0x2ad7eb['uniqueid'],agents[_0x2ad7eb[_0x344a('0x16')]][_0x344a('0x8')],_0x2ad7eb[_0x344a('0x16')]));}catch(_0x45a827){utils[_0x344a('0x1c')](util[_0x344a('0x4')](_0x344a('0x14'),_0x2ad7eb[_0x344a('0x15')]),_0x45a827);}};exports[_0x344a('0x1d')]=function(_0x450922){try{if(!_['isNil'](agents[_0x450922[_0x344a('0x16')]])){utils[_0x344a('0x13')](util[_0x344a('0x4')](_0x344a('0x1e'),_0x450922[_0x344a('0x15')]),_0x450922);utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x1f'),_0x450922[_0x344a('0x15')],agents[_0x450922[_0x344a('0x16')]][_0x344a('0x8')],_0x450922[_0x344a('0x16')]));agents[_0x450922[_0x344a('0x16')]][_0x344a('0x1d')]=!![];agents[_0x450922['destuniqueid']][_0x344a('0x20')]=utils['now']();agents[_0x450922[_0x344a('0x16')]]['lastevent']=_0x344a('0x21');agents[_0x450922[_0x344a('0x16')]][_0x344a('0x22')]=_0x344a('0x21');agents[_0x450922[_0x344a('0x16')]][_0x344a('0x23')]=_0x450922[_0x344a('0x24')]?parseInt(_0x450922[_0x344a('0x24')])/0x3e8:0x0;agents[_0x450922['destuniqueid']][_0x344a('0x25')]=0x0;unanswered[_0x344a('0x26')](_0x450922[_0x344a('0x16')]);}}catch(_0xc02d6){utils[_0x344a('0x1c')](util[_0x344a('0x4')]('[%s][agents][agentringnoanswer]',_0x450922[_0x344a('0x15')]),_0xc02d6);}};exports['queuecallerabandon']=function(_0x593cf6){try{_[_0x344a('0x27')](agents,function(_0x14fa86,_0x5a36bb){if(_0x14fa86['uniqueid']==_0x593cf6['uniqueid']&&!_['includes'](unanswered,_0x14fa86[_0x344a('0x16')])){utils[_0x344a('0x13')](util[_0x344a('0x4')]('[%s][agents][queuecallerabandon]',_0x593cf6[_0x344a('0x15')]),_0x593cf6);utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x28'),_0x593cf6[_0x344a('0x15')],_0x14fa86[_0x344a('0x8')],_0x14fa86[_0x344a('0x16')]));_0x14fa86['agentringnoanswer']=!![];_0x14fa86[_0x344a('0x20')]=utils['now']();_0x14fa86['lastevent']='abandoned';_0x14fa86[_0x344a('0x22')]=_0x344a('0x29');_0x14fa86[_0x344a('0x23')]=_0x593cf6[_0x344a('0x23')];_0x14fa86[_0x344a('0x25')]=0x0;writeDB(_0x14fa86);}});}catch(_0xdf6a8f){utils['error'](util[_0x344a('0x4')](_0x344a('0x2a'),_0x593cf6[_0x344a('0x15')]),_0xdf6a8f);}};exports['agentconnect']=function(_0x3698eb){try{if(agents[_0x3698eb[_0x344a('0x16')]]){utils[_0x344a('0x13')](util[_0x344a('0x4')](_0x344a('0x2b'),_0x3698eb['uniqueid']),_0x3698eb);utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x2c'),_0x3698eb[_0x344a('0x15')],agents[_0x3698eb[_0x344a('0x16')]]['membername'],_0x3698eb[_0x344a('0x16')]));agents[_0x3698eb[_0x344a('0x16')]][_0x344a('0x2d')]=utils[_0x344a('0x18')]();agents[_0x3698eb[_0x344a('0x16')]]['connectedlinenum']=_0x3698eb[_0x344a('0x19')];agents[_0x3698eb[_0x344a('0x16')]][_0x344a('0x1a')]=_0x3698eb[_0x344a('0x1a')];agents[_0x3698eb[_0x344a('0x16')]][_0x344a('0x23')]=_0x3698eb[_0x344a('0x24')];agents[_0x3698eb[_0x344a('0x16')]]['lastevent']=_0x344a('0x2e');_[_0x344a('0x27')](agents,function(_0x3d34c3,_0x28bad9){if(_0x3d34c3[_0x344a('0x16')]!=_0x3698eb['destuniqueid']&&_0x3d34c3[_0x344a('0x15')]==_0x3698eb[_0x344a('0x15')]){_0x3d34c3[_0x344a('0x25')]=0x0;_0x3d34c3[_0x344a('0x23')]=_0x3698eb[_0x344a('0x24')];_0x3d34c3[_0x344a('0x1d')]=!![];_0x3d34c3[_0x344a('0x20')]=utils[_0x344a('0x18')]();_0x3d34c3[_0x344a('0x2f')]='answered_elsewhere';_0x3d34c3[_0x344a('0x22')]=_0x344a('0x30');_0x3d34c3[_0x344a('0x31')]=_0x3698eb[_0x344a('0x16')];_0x3d34c3['answeredelsewheremembername']=_0x3698eb[_0x344a('0x8')];writeDB(_0x3d34c3);}});}}catch(_0x3069ca){utils[_0x344a('0x1c')](util[_0x344a('0x4')](_0x344a('0x2b'),_0x3698eb[_0x344a('0x15')]),_0x3069ca);}};exports[_0x344a('0xd')]=function(_0x372e7d){try{if(!_[_0x344a('0x32')](agents[_0x372e7d[_0x344a('0x16')]])){utils[_0x344a('0x13')](util['format'](_0x344a('0x33'),_0x372e7d[_0x344a('0x15')]),_0x372e7d);utils['info'](util[_0x344a('0x4')](_0x344a('0x34'),_0x372e7d['uniqueid'],agents[_0x372e7d[_0x344a('0x16')]][_0x344a('0x8')],_0x372e7d['destuniqueid']));agents[_0x372e7d[_0x344a('0x16')]][_0x344a('0xd')]=!![];agents[_0x372e7d[_0x344a('0x16')]]['agentcompleteAt']=utils[_0x344a('0x18')]();agents[_0x372e7d['destuniqueid']][_0x344a('0x25')]=utils[_0x344a('0x35')](agents[_0x372e7d[_0x344a('0x16')]][_0x344a('0x36')],agents[_0x372e7d['destuniqueid']]['agentconnectAt']);agents[_0x372e7d[_0x344a('0x16')]][_0x344a('0x22')]=_0x372e7d[_0x344a('0x22')];agents[_0x372e7d[_0x344a('0x16')]][_0x344a('0x2f')]=_0x344a('0x37');writeDB(agents[_0x372e7d[_0x344a('0x16')]]);}}catch(_0x23c214){utils[_0x344a('0x1c')](util[_0x344a('0x4')]('[%s][agents][agentcomplete]',_0x372e7d[_0x344a('0x15')]),_0x23c214);}};exports[_0x344a('0x38')]=function(_0x6fad37){try{if(!_[_0x344a('0x32')](agents[_0x6fad37['transfereruniqueid']])){utils[_0x344a('0x13')](util['format']('[%s][agents][blindtransfer]',_0x6fad37[_0x344a('0x15')]),_0x6fad37);utils[_0x344a('0x3')](util['format'](_0x344a('0x39'),_0x6fad37[_0x344a('0x15')],agents[_0x6fad37[_0x344a('0x3a')]][_0x344a('0x8')],agents[_0x6fad37['transfereruniqueid']][_0x344a('0x15')]));agents[_0x6fad37[_0x344a('0x3a')]][_0x344a('0x3b')]=!![];agents[_0x6fad37[_0x344a('0x3a')]][_0x344a('0x3c')]=_0x344a('0x3d');agents[_0x6fad37[_0x344a('0x3a')]][_0x344a('0x3e')]=_0x6fad37[_0x344a('0x3f')];agents[_0x6fad37[_0x344a('0x3a')]]['transferuniqueid']=agents[_0x6fad37[_0x344a('0x3a')]]['uniqueid'];}}catch(_0x1b7f6c){utils[_0x344a('0x1c')](util[_0x344a('0x4')]('[%s][agents][blindtransfer]',_0x6fad37[_0x344a('0x15')]),_0x1b7f6c);}};exports[_0x344a('0x40')]=function(_0x188c6b){try{utils[_0x344a('0x13')](util[_0x344a('0x4')](_0x344a('0x41'),_0x188c6b[_0x344a('0x42')]),_0x188c6b);if(_0x188c6b[_0x344a('0x42')]==_0x188c6b[_0x344a('0x43')]){if(!_['isNil'](agents[_0x188c6b[_0x344a('0x44')]])){utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x45'),_0x188c6b[_0x344a('0x42')],agents[_0x188c6b['secondtransfereruniqueid']][_0x344a('0x8')]));agents[_0x188c6b[_0x344a('0x44')]][_0x344a('0x3b')]=!![];agents[_0x188c6b[_0x344a('0x44')]]['transfertype']=_0x344a('0x46');agents[_0x188c6b[_0x344a('0x44')]]['transferexten']=_0x188c6b[_0x344a('0x47')];agents[_0x188c6b[_0x344a('0x44')]][_0x344a('0x48')]=_0x188c6b[_0x344a('0x42')];}if(_0x188c6b[_0x344a('0x49')]&&agents[_0x188c6b[_0x344a('0x49')]]){agents[_0x188c6b[_0x344a('0x49')]]['agententerreason']=0x1;transfers[_0x188c6b['transfereeuniqueid']]=_['clone'](agents[_0x188c6b[_0x344a('0x49')]]);transfers[_0x188c6b[_0x344a('0x49')]][_0x344a('0xa')]=agents[_0x188c6b[_0x344a('0x44')]]['calleridnum'];transfers[_0x188c6b[_0x344a('0x49')]]['calleridname']=agents[_0x188c6b['secondtransfereruniqueid']]['calleridname'];transfers[_0x188c6b['transfereeuniqueid']][_0x344a('0x17')]=utils[_0x344a('0x18')]();transfers[_0x188c6b[_0x344a('0x49')]][_0x344a('0x2d')]=utils['now']();transfers[_0x188c6b['transfereeuniqueid']]['holdtime']=0x0;transfers[_0x188c6b[_0x344a('0x49')]][_0x344a('0x4a')]=0x2;}}else if(_0x188c6b[_0x344a('0x44')]==_0x188c6b[_0x344a('0x4b')]){if(!_[_0x344a('0x32')](agents[_0x188c6b['origtransfereruniqueid']])){utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x45'),_0x188c6b['origtransfereruniqueid'],agents[_0x188c6b[_0x344a('0x42')]]['membername']));agents[_0x188c6b['origtransfereruniqueid']][_0x344a('0x3b')]=!![];agents[_0x188c6b['origtransfereruniqueid']]['transfertype']=_0x344a('0x46');agents[_0x188c6b[_0x344a('0x42')]]['transferexten']=_0x188c6b[_0x344a('0x4c')];agents[_0x188c6b['origtransfereruniqueid']][_0x344a('0x48')]=_0x188c6b[_0x344a('0x44')];}if(_0x188c6b[_0x344a('0x4d')]&&agents[_0x188c6b['transfertargetuniqueid']]){agents[_0x188c6b['transfertargetuniqueid']][_0x344a('0x4a')]=0x1;transfers[_0x188c6b[_0x344a('0x4d')]]=_[_0x344a('0x4e')](agents[_0x188c6b[_0x344a('0x4d')]]);transfers[_0x188c6b['transfertargetuniqueid']]['calleridnum']=agents[_0x188c6b[_0x344a('0x42')]][_0x344a('0xa')];transfers[_0x188c6b[_0x344a('0x4d')]]['calleridname']=agents[_0x188c6b[_0x344a('0x42')]][_0x344a('0x4f')];transfers[_0x188c6b['transfertargetuniqueid']][_0x344a('0x17')]=utils['now']();transfers[_0x188c6b[_0x344a('0x4d')]]['agentconnectAt']=utils['now']();transfers[_0x188c6b['transfertargetuniqueid']][_0x344a('0x23')]=0x0;transfers[_0x188c6b[_0x344a('0x4d')]][_0x344a('0x4a')]=0x2;}}}catch(_0xce0446){utils[_0x344a('0x1c')](util[_0x344a('0x4')]('[%s][agents][attendedtransfer]',_0x188c6b[_0x344a('0x42')]),_0xce0446);}};exports[_0x344a('0x50')]=function(_0x20a892){try{utils[_0x344a('0x13')](util[_0x344a('0x4')]('[%s][agents][hangup]',_0x20a892[_0x344a('0x15')]),_0x20a892);if(agents[_0x20a892[_0x344a('0x15')]]&&agents[_0x20a892['uniqueid']][_0x344a('0x22')]===_0x344a('0x21')){if(_0x20a892[_0x344a('0x51')]==='21'){agents[_0x20a892[_0x344a('0x15')]]['reason']=_0x344a('0x52');agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x2f')]=_0x344a('0x52');}utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x53'),_0x20a892[_0x344a('0x15')],agents[_0x20a892['uniqueid']][_0x344a('0x8')],agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x22')],agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x2f')]));writeDB(agents[_0x20a892[_0x344a('0x15')]]);var _0x212b08=unanswered[_0x344a('0x54')](_0x20a892['uniqueid']);if(_0x212b08>-0x1){unanswered[_0x344a('0x55')](_0x212b08,0x1);}}if(transfers[_0x20a892[_0x344a('0x15')]]){transfers[_0x20a892[_0x344a('0x15')]][_0x344a('0xd')]=!![];transfers[_0x20a892['uniqueid']][_0x344a('0x36')]=utils[_0x344a('0x18')]();transfers[_0x20a892[_0x344a('0x15')]][_0x344a('0x25')]=utils[_0x344a('0x35')](transfers[_0x20a892[_0x344a('0x15')]][_0x344a('0x36')],transfers[_0x20a892[_0x344a('0x15')]]['agentconnectAt']);transfers[_0x20a892[_0x344a('0x15')]][_0x344a('0x22')]=_0x344a('0x56');transfers[_0x20a892[_0x344a('0x15')]]['lastevent']=_0x344a('0x37');utils[_0x344a('0x3')](util[_0x344a('0x4')](_0x344a('0x53'),_0x20a892[_0x344a('0x15')],transfers[_0x20a892[_0x344a('0x15')]]['membername'],transfers[_0x20a892[_0x344a('0x15')]][_0x344a('0x22')],transfers[_0x20a892[_0x344a('0x15')]]['lastevent']));writeDB(transfers[_0x20a892[_0x344a('0x15')]],!![]);}if(agents[_0x20a892[_0x344a('0x15')]]&&agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x2d')]){agents[_0x20a892[_0x344a('0x15')]]['agentcomplete']=!![];agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x36')]=utils[_0x344a('0x18')]();agents[_0x20a892['uniqueid']][_0x344a('0x25')]=utils['diffTime'](agents[_0x20a892['uniqueid']][_0x344a('0x36')],agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x2d')]);agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x22')]=agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x3b')]?_0x344a('0x3b'):'agent';agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x2f')]='complete';utils['info'](util[_0x344a('0x4')](_0x344a('0x53'),_0x20a892[_0x344a('0x15')],agents[_0x20a892[_0x344a('0x15')]]['membername'],agents[_0x20a892[_0x344a('0x15')]][_0x344a('0x22')],agents[_0x20a892[_0x344a('0x15')]]['lastevent']));writeDB(agents[_0x20a892[_0x344a('0x15')]]);}}catch(_0x1c50c3){utils[_0x344a('0x1c')](util['format'](_0x344a('0x57'),_0x20a892[_0x344a('0x15')]),_0x1c50c3);}};
\ No newline at end of file
index 200cbc8..8076d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4199=['accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','channelstate','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','billableseconds','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','transfertargetchannel','origtransfererchannel','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','value','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','Queue','lastdata','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','[%s][calls][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','noop','execif','[%s][calls][newexten]','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','queue','membername','interface','calleridnum','lastevent'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x4199,0x1ae));var _0x9419=function(_0x2d92e0,_0x4ca453){_0x2d92e0=_0x2d92e0-0x0;var _0x2da92=_0x4199[_0x2d92e0];return _0x2da92;};'use strict';var _=require(_0x9419('0x0'));var util=require(_0x9419('0x1'));var utils=require(_0x9419('0x2'));var transfers=require(_0x9419('0x3'));var dispositions=[_0x9419('0x4'),_0x9419('0x5'),_0x9419('0x5'),_0x9419('0x4'),_0x9419('0x4'),_0x9419('0x4'),_0x9419('0x6'),_0x9419('0x7'),_0x9419('0x5'),_0x9419('0x5'),_0x9419('0x5')];var channels={};function writeDB(_0x29761c){var _0x2784ff;if(transfers[_0x9419('0x8')][_0x29761c[_0x9419('0x9')]]){_0x2784ff=_0x29761c['uniqueid'];_0x29761c[_0x9419('0x9')]=transfers[_0x9419('0x8')][_0x29761c[_0x9419('0x9')]][_0x9419('0xa')];}utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x29761c[_0x9419('0x9')],_0x29761c['channel'],_0x29761c[_0x9419('0xd')],_0x29761c[_0x9419('0xe')],_0x29761c[_0x9419('0xf')],_0x29761c[_0x9419('0x10')],_0x29761c['connectedlinenum'],_0x29761c[_0x9419('0x11')]));if(_0x29761c[_0x9419('0x12')]){utils[_0x9419('0x13')](_0x29761c[_0x9419('0x12')])[_0x9419('0x14')](function(_0x4b320c){if(_0x4b320c){_0x29761c[_0x9419('0x15')]=_0x4b320c['id'];}utils[_0x9419('0x16')](_0x9419('0x17'),_0x29761c);});}else{utils[_0x9419('0x16')](_0x9419('0x17'),_0x29761c);}if(channels[_0x29761c[_0x9419('0x9')]]){delete channels[_0x29761c[_0x9419('0x9')]];}else if(_0x2784ff&&channels[_0x2784ff]){delete transfers[_0x9419('0x8')][_0x2784ff];delete channels[_0x2784ff];}}exports[_0x9419('0x18')]=function(_0x5406e4){try{utils[_0x9419('0x19')](util['format'](_0x9419('0x1a'),_0x5406e4[_0x9419('0x9')]),_0x5406e4);if(_0x5406e4[_0x9419('0x9')]==_0x5406e4[_0x9419('0x1b')]&&_0x5406e4[_0x9419('0x1c')]!=_0x9419('0x1d')){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x1e'),_0x5406e4['uniqueid'],_0x5406e4[_0x9419('0x1f')],_0x5406e4[_0x9419('0x20')]));channels[_0x5406e4['uniqueid']]={'uniqueid':_0x5406e4[_0x9419('0x9')],'accountcode':_0x5406e4[_0x9419('0x12')],'source':_0x5406e4['calleridnum'],'destination':_0x5406e4['exten'],'destinationcontext':_0x5406e4[_0x9419('0x1f')],'channel':_0x5406e4['channel'],'starttime':utils[_0x9419('0x21')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x9419('0x4'),'amaflags':_0x9419('0x22')};}}catch(_0x2d2d56){utils[_0x9419('0x23')](util[_0x9419('0xc')]('[%s][calls][newchannel]',_0x5406e4['uniqueid']),_0x2d2d56);}};exports[_0x9419('0x24')]=function(_0x30a80e){try{utils['debug'](util['format'](_0x9419('0x25'),_0x30a80e[_0x9419('0x9')]),_0x30a80e);if(!_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x9')]])&&_0x30a80e[_0x9419('0x27')]==0x6){utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x30a80e[_0x9419('0x9')],_0x30a80e[_0x9419('0x1f')],_0x30a80e['channel']));if(_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x9')]][_0x9419('0x28')])){channels[_0x30a80e[_0x9419('0x9')]][_0x9419('0x28')]=utils['now']();}}else if(!_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x1b')]])&&_0x30a80e[_0x9419('0x27')]==0x6&&_0x30a80e[_0x9419('0x1f')]!=_0x9419('0x29')){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x2a'),_0x30a80e[_0x9419('0x9')],_0x30a80e['linkedid'],_0x30a80e['context'],_0x30a80e[_0x9419('0x1c')]));channels[_0x30a80e[_0x9419('0x1b')]][_0x9419('0x12')]=_0x30a80e[_0x9419('0x12')];channels[_0x30a80e[_0x9419('0x1b')]][_0x9419('0x2b')]=_0x30a80e[_0x9419('0x1c')];if(_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x1b')]]['answertime'])){channels[_0x30a80e[_0x9419('0x1b')]][_0x9419('0x2c')]=utils[_0x9419('0x21')]();}channels[_0x30a80e['linkedid']][_0x9419('0x2d')]=dispositions[_[_0x9419('0x2e')](_0x30a80e['channelstate'])]||_0x9419('0x6');}}catch(_0x5a4ada){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x25'),_0x30a80e[_0x9419('0x9')]),_0x5a4ada);}};exports[_0x9419('0x2f')]=function(_0x3d9b4d){try{if(!_[_0x9419('0x26')](channels[_0x3d9b4d[_0x9419('0x9')]])){utils['debug'](util[_0x9419('0xc')]('[%s][calls][hangup]',_0x3d9b4d[_0x9419('0x9')]),_0x3d9b4d);if(_[_0x9419('0x26')](channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x30')])){channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x30')]=_0x3d9b4d[_0x9419('0x31')]+'\x20<'+_0x3d9b4d[_0x9419('0x10')]+'>';}utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x32'),_0x3d9b4d['uniqueid'],channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x30')],_0x3d9b4d[_0x9419('0x33')]));channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x34')]=utils[_0x9419('0x21')]();channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x35')]=utils[_0x9419('0x36')](channels[_0x3d9b4d['uniqueid']][_0x9419('0x34')],channels[_0x3d9b4d['uniqueid']]['starttime']);channels[_0x3d9b4d['uniqueid']][_0x9419('0x37')]=channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x2c')]?utils['diffTime'](channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x34')],channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x2c')]):0x0;writeDB(channels[_0x3d9b4d[_0x9419('0x9')]]);}}catch(_0x16f7ff){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x38'),_0x3d9b4d[_0x9419('0x9')]),_0x16f7ff);}};exports[_0x9419('0x39')]=function(_0x392622){try{if(!_[_0x9419('0x26')](channels[_0x392622[_0x9419('0x3a')]])){utils[_0x9419('0x19')](util['format'](_0x9419('0x3b'),_0x392622[_0x9419('0x3c')]),_0x392622);if(channels[_0x392622[_0x9419('0x3a')]]['channel']==_0x392622['transfereechannel']){utils['info'](util[_0x9419('0xc')](_0x9419('0x3d'),_0x392622['origtransfereruniqueid'],_0x392622[_0x9419('0x3a')],_0x392622[_0x9419('0x3e')]));channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x2b')]=_0x392622['secondtransfererchannel'];channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x3f')]='_attended';}else if(channels[_0x392622['localtwolinkedid']]['channel']=_0x392622[_0x9419('0x40')]){utils['info'](util['format'](_0x9419('0x3d'),_0x392622['origtransfereruniqueid'],_0x392622[_0x9419('0x3a')],_0x392622['origtransfererchannel']));channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x2b')]=_0x392622[_0x9419('0x41')];channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x3f')]=_0x9419('0x42');}}}catch(_0x1a6914){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x3b'),_0x392622[_0x9419('0x3c')]),_0x1a6914);}};exports[_0x9419('0x43')]=function(_0x3be2c9){try{if(!_[_0x9419('0x26')](channels[_0x3be2c9[_0x9419('0x9')]])){utils[_0x9419('0x19')](util[_0x9419('0xc')](_0x9419('0x44'),_0x3be2c9['uniqueid']),_0x3be2c9);channels[_0x3be2c9['uniqueid']][_0x9419('0x45')]=utils[_0x9419('0x21')]();utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x3be2c9[_0x9419('0x9')],channels[_0x3be2c9[_0x9419('0x9')]][_0x9419('0x45')]));}}catch(_0x1afe4d){utils[_0x9419('0x23')](util[_0x9419('0xc')]('[%s][calls][musiconholdstart]',_0x3be2c9['uniqueid']),_0x1afe4d);}};exports[_0x9419('0x46')]=function(_0x5b2288){try{if(!_['isNil'](channels[_0x5b2288[_0x9419('0x9')]])){utils[_0x9419('0x19')](util['format']('[%s][calls][musiconholdstop]',_0x5b2288[_0x9419('0x9')]),_0x5b2288);if(!_[_0x9419('0x26')](channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x45')])){channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x47')]+=utils[_0x9419('0x36')](utils[_0x9419('0x21')](),channels[_0x5b2288['uniqueid']][_0x9419('0x45')]);utils[_0x9419('0xb')](util['format']('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x5b2288[_0x9419('0x9')],channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x47')]));delete channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x45')];}}}catch(_0x372853){utils[_0x9419('0x23')](util['format']('[%s][calls][musiconholdstop]',_0x5b2288[_0x9419('0x9')]),_0x372853);}};exports[_0x9419('0x48')]=function(_0x4a6fd0){try{if(!_[_0x9419('0x26')](channels[_0x4a6fd0[_0x9419('0x9')]])){utils[_0x9419('0x19')](util[_0x9419('0xc')](_0x9419('0x49'),_0x4a6fd0[_0x9419('0x9')]),_0x4a6fd0);if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x4b')])){utils['info'](util['format'](_0x9419('0x4c'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0['value']));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x4d')]=_0x4a6fd0['value'];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x4e')])){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x4f'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x51')]=_0x4a6fd0['value'];channels[_0x4a6fd0[_0x9419('0x9')]]['callerid']='\x22'+_0x4a6fd0[_0x9419('0x50')]+_0x9419('0x52')+_0x4a6fd0[_0x9419('0x50')]+'>';}if(!_['isNil'](_0x4a6fd0['variable'][_0x9419('0x53')])||!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x54')])){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x55'),_0x4a6fd0[_0x9419('0x9')],!_[_0x9419('0x26')](_0x4a6fd0['variable']['xmd-callerid-preview'])?_0x9419('0x53'):'xmd-callerid',_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0['uniqueid']][_0x9419('0x30')]=_0x4a6fd0[_0x9419('0x50')];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')]['xmd-queue'])||!_['isNil'](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x56')])){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x55'),_0x4a6fd0['uniqueid'],!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x57')])?_0x9419('0x57'):_0x9419('0x56'),_0x4a6fd0['value']));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x58')]=_0x9419('0x59');channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x5a')]=_0x4a6fd0[_0x9419('0x50')];channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0xd')]=!![];}if(!_['isNil'](_0x4a6fd0[_0x9419('0x4a')]['xmd-contactid'])){utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x4a6fd0['uniqueid'],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]]['ContactId']=_0x4a6fd0[_0x9419('0x50')];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x5b')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x5c')]=_0x4a6fd0[_0x9419('0x50')];}if(!_['isNil'](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x5d')])){utils[_0x9419('0xb')](util['format'](_0x9419('0x5e'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0['value']));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x5f')]=_0x4a6fd0[_0x9419('0x50')];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')]['sipcallid'])){utils['info'](util[_0x9419('0xc')](_0x9419('0x60'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x61')]=_0x4a6fd0['value'];}}}catch(_0x34401d){utils['error'](util[_0x9419('0xc')](_0x9419('0x49'),_0x4a6fd0['uniqueid']),_0x34401d);}};exports['newexten']=function(_0x2db954){try{if(!_[_0x9419('0x26')](channels[_0x2db954['uniqueid']])){utils[_0x9419('0x19')](util[_0x9419('0xc')]('[%s][calls][newexten]',_0x2db954[_0x9419('0x9')]),_0x2db954);utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x62'),_0x2db954[_0x9419('0x9')],_0x2db954['application'],_0x2db954[_0x9419('0x63')]));if(_0x2db954[_0x9419('0x64')][_0x9419('0x65')]()==_0x9419('0x66')&&_[_0x9419('0x67')](_0x2db954['appdata']['toLowerCase'](),_0x9419('0x68'))){var _0x296ef2=_0x2db954[_0x9419('0x63')][_0x9419('0x69')]('=');var _0x18c4af=_0x296ef2[0x0][_0x9419('0x6a')](_0x296ef2[0x0][_0x9419('0x6b')]('(')+0x1,_0x296ef2[0x0][_0x9419('0x6b')](')'));var _0x1723a6=_0x296ef2[0x1];channels[_0x2db954['uniqueid']][_0x18c4af]=_0x1723a6;}if(!_[_0x9419('0x6c')]([_0x9419('0x2f'),_0x9419('0x6d'),_0x9419('0x6e'),_0x9419('0x66'),'gotoif'],_0x2db954[_0x9419('0x64')][_0x9419('0x65')]())){channels[_0x2db954['uniqueid']][_0x9419('0x58')]=_0x2db954[_0x9419('0x64')];channels[_0x2db954[_0x9419('0x9')]][_0x9419('0x5a')]=_0x2db954[_0x9419('0x63')];}}}catch(_0x5d9457){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x6f'),_0x2db954['uniqueid']),_0x5d9457);}};
\ No newline at end of file
+var _0x71ce=['lastdata','xmd-contactid','ContactId','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]','[%s][calls][newexten]','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','execif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','accountcode','now','DOCUMENTATION','newstate','isNil','channelstate','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','[%s][calls][newstate]','hangup','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','[%s][calls][hangup]','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','localtwolinkedid','userfield','_attended','transfertargetchannel','origtransfererchannel','error','musiconholdstart','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','xmd-callerid','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','lastapplication','Queue'];(function(_0x4b14ae,_0xc3ea39){var _0x4dc5eb=function(_0x2f9892){while(--_0x2f9892){_0x4b14ae['push'](_0x4b14ae['shift']());}};_0x4dc5eb(++_0xc3ea39);}(_0x71ce,0x1b5));var _0xe71c=function(_0x30955d,_0x4b1bbe){_0x30955d=_0x30955d-0x0;var _0x395ea6=_0x71ce[_0x30955d];return _0x395ea6;};'use strict';var _=require(_0xe71c('0x0'));var util=require(_0xe71c('0x1'));var utils=require(_0xe71c('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0xe71c('0x3'),_0xe71c('0x4'),_0xe71c('0x4'),_0xe71c('0x3'),_0xe71c('0x3'),_0xe71c('0x3'),_0xe71c('0x5'),'BUSY',_0xe71c('0x4'),_0xe71c('0x4'),_0xe71c('0x4')];var channels={};function writeDB(_0x21a971){var _0x25af04;if(transfers[_0xe71c('0x6')][_0x21a971['uniqueid']]){_0x25af04=_0x21a971[_0xe71c('0x7')];_0x21a971[_0xe71c('0x7')]=transfers[_0xe71c('0x6')][_0x21a971[_0xe71c('0x7')]][_0xe71c('0x8')];}utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0xb'),_0x21a971[_0xe71c('0x7')],_0x21a971[_0xe71c('0xc')],_0x21a971[_0xe71c('0xd')],_0x21a971[_0xe71c('0xe')],_0x21a971[_0xe71c('0xf')],_0x21a971[_0xe71c('0x10')],_0x21a971[_0xe71c('0x11')],_0x21a971['lastevent']));if(_0x21a971['accountcode']){utils[_0xe71c('0x12')](_0x21a971['accountcode'])[_0xe71c('0x13')](function(_0x796448){if(_0x796448){_0x21a971['UserId']=_0x796448['id'];}utils[_0xe71c('0x14')](_0xe71c('0x15'),_0x21a971);});}else{utils[_0xe71c('0x14')](_0xe71c('0x15'),_0x21a971);}if(channels[_0x21a971[_0xe71c('0x7')]]){delete channels[_0x21a971[_0xe71c('0x7')]];}else if(_0x25af04&&channels[_0x25af04]){delete transfers[_0xe71c('0x6')][_0x25af04];delete channels[_0x25af04];}}exports[_0xe71c('0x16')]=function(_0x41f8dd){try{utils[_0xe71c('0x17')](util[_0xe71c('0xa')](_0xe71c('0x18'),_0x41f8dd['uniqueid']),_0x41f8dd);if(_0x41f8dd[_0xe71c('0x7')]==_0x41f8dd[_0xe71c('0x19')]&&_0x41f8dd[_0xe71c('0xc')]!=_0xe71c('0x1a')){utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x1b'),_0x41f8dd[_0xe71c('0x7')],_0x41f8dd[_0xe71c('0x1c')],_0x41f8dd[_0xe71c('0x1d')]));channels[_0x41f8dd[_0xe71c('0x7')]]={'uniqueid':_0x41f8dd[_0xe71c('0x7')],'accountcode':_0x41f8dd[_0xe71c('0x1e')],'source':_0x41f8dd[_0xe71c('0x10')],'destination':_0x41f8dd[_0xe71c('0x1d')],'destinationcontext':_0x41f8dd[_0xe71c('0x1c')],'channel':_0x41f8dd[_0xe71c('0xc')],'starttime':utils[_0xe71c('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xe71c('0x20')};}}catch(_0x4bb6c7){utils['error'](util[_0xe71c('0xa')]('[%s][calls][newchannel]',_0x41f8dd[_0xe71c('0x7')]),_0x4bb6c7);}};exports[_0xe71c('0x21')]=function(_0x533663){try{utils[_0xe71c('0x17')](util[_0xe71c('0xa')]('[%s][calls][newstate]',_0x533663[_0xe71c('0x7')]),_0x533663);if(!_[_0xe71c('0x22')](channels[_0x533663[_0xe71c('0x7')]])&&_0x533663[_0xe71c('0x23')]==0x6){utils[_0xe71c('0x9')](util[_0xe71c('0xa')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x533663[_0xe71c('0x7')],_0x533663['context'],_0x533663[_0xe71c('0xc')]));if(_[_0xe71c('0x22')](channels[_0x533663[_0xe71c('0x7')]][_0xe71c('0x24')])){channels[_0x533663[_0xe71c('0x7')]][_0xe71c('0x24')]=utils[_0xe71c('0x1f')]();}}else if(!_[_0xe71c('0x22')](channels[_0x533663[_0xe71c('0x19')]])&&_0x533663['channelstate']==0x6&&_0x533663[_0xe71c('0x1c')]!=_0xe71c('0x25')){utils[_0xe71c('0x9')](util['format'](_0xe71c('0x26'),_0x533663[_0xe71c('0x7')],_0x533663[_0xe71c('0x19')],_0x533663[_0xe71c('0x1c')],_0x533663[_0xe71c('0xc')]));channels[_0x533663[_0xe71c('0x19')]][_0xe71c('0x1e')]=_0x533663[_0xe71c('0x1e')];channels[_0x533663[_0xe71c('0x19')]][_0xe71c('0x27')]=_0x533663[_0xe71c('0xc')];if(_[_0xe71c('0x22')](channels[_0x533663[_0xe71c('0x19')]][_0xe71c('0x28')])){channels[_0x533663['linkedid']][_0xe71c('0x28')]=utils[_0xe71c('0x1f')]();}channels[_0x533663['linkedid']]['disposition']=dispositions[_['toNumber'](_0x533663[_0xe71c('0x23')])]||'ANSWERED';}}catch(_0x22f92f){utils['error'](util[_0xe71c('0xa')](_0xe71c('0x29'),_0x533663[_0xe71c('0x7')]),_0x22f92f);}};exports[_0xe71c('0x2a')]=function(_0x5131c0){try{if(!_[_0xe71c('0x22')](channels[_0x5131c0[_0xe71c('0x7')]])){utils['debug'](util[_0xe71c('0xa')]('[%s][calls][hangup]',_0x5131c0[_0xe71c('0x7')]),_0x5131c0);if(_[_0xe71c('0x22')](channels[_0x5131c0['uniqueid']][_0xe71c('0x2b')])){channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x2b')]=_0x5131c0['calleridname']+'\x20<'+_0x5131c0[_0xe71c('0x10')]+'>';}utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x2c'),_0x5131c0[_0xe71c('0x7')],channels[_0x5131c0['uniqueid']][_0xe71c('0x2b')],_0x5131c0[_0xe71c('0x2d')]));channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x2e')]=utils[_0xe71c('0x1f')]();channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x2f')]=utils[_0xe71c('0x30')](channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x2e')],channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x31')]);channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x32')]=channels[_0x5131c0[_0xe71c('0x7')]]['answertime']?utils['diffTime'](channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x2e')],channels[_0x5131c0[_0xe71c('0x7')]][_0xe71c('0x28')]):0x0;writeDB(channels[_0x5131c0[_0xe71c('0x7')]]);}}catch(_0x277f61){utils['error'](util[_0xe71c('0xa')](_0xe71c('0x33'),_0x5131c0['uniqueid']),_0x277f61);}};exports['attendedtransfer']=function(_0x4456a3){try{if(!_[_0xe71c('0x22')](channels[_0x4456a3['localtwolinkedid']])){utils['debug'](util[_0xe71c('0xa')](_0xe71c('0x34'),_0x4456a3[_0xe71c('0x35')]),_0x4456a3);if(channels[_0x4456a3['localtwolinkedid']][_0xe71c('0xc')]==_0x4456a3[_0xe71c('0x36')]){utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x37'),_0x4456a3['origtransfereruniqueid'],_0x4456a3[_0xe71c('0x38')],_0x4456a3['secondtransfererchannel']));channels[_0x4456a3[_0xe71c('0x38')]][_0xe71c('0x27')]=_0x4456a3['secondtransfererchannel'];channels[_0x4456a3[_0xe71c('0x38')]][_0xe71c('0x39')]=_0xe71c('0x3a');}else if(channels[_0x4456a3[_0xe71c('0x38')]][_0xe71c('0xc')]=_0x4456a3[_0xe71c('0x3b')]){utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x37'),_0x4456a3[_0xe71c('0x35')],_0x4456a3['localtwolinkedid'],_0x4456a3[_0xe71c('0x3c')]));channels[_0x4456a3[_0xe71c('0x38')]][_0xe71c('0x27')]=_0x4456a3[_0xe71c('0x3c')];channels[_0x4456a3['localtwolinkedid']][_0xe71c('0x39')]=_0xe71c('0x3a');}}}catch(_0x375ea1){utils[_0xe71c('0x3d')](util[_0xe71c('0xa')](_0xe71c('0x34'),_0x4456a3[_0xe71c('0x35')]),_0x375ea1);}};exports[_0xe71c('0x3e')]=function(_0x5d2a1e){try{if(!_[_0xe71c('0x22')](channels[_0x5d2a1e['uniqueid']])){utils[_0xe71c('0x17')](util['format']('[%s][calls][musiconholdstart]',_0x5d2a1e[_0xe71c('0x7')]),_0x5d2a1e);channels[_0x5d2a1e['uniqueid']][_0xe71c('0x3f')]=utils['now']();utils['info'](util[_0xe71c('0xa')](_0xe71c('0x40'),_0x5d2a1e[_0xe71c('0x7')],channels[_0x5d2a1e[_0xe71c('0x7')]][_0xe71c('0x3f')]));}}catch(_0x476fa5){utils[_0xe71c('0x3d')](util[_0xe71c('0xa')](_0xe71c('0x41'),_0x5d2a1e[_0xe71c('0x7')]),_0x476fa5);}};exports['musiconholdstop']=function(_0x13bc88){try{if(!_['isNil'](channels[_0x13bc88[_0xe71c('0x7')]])){utils[_0xe71c('0x17')](util[_0xe71c('0xa')](_0xe71c('0x42'),_0x13bc88[_0xe71c('0x7')]),_0x13bc88);if(!_[_0xe71c('0x22')](channels[_0x13bc88['uniqueid']][_0xe71c('0x3f')])){channels[_0x13bc88[_0xe71c('0x7')]]['mohtime']+=utils[_0xe71c('0x30')](utils['now'](),channels[_0x13bc88[_0xe71c('0x7')]][_0xe71c('0x3f')]);utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x43'),_0x13bc88[_0xe71c('0x7')],channels[_0x13bc88[_0xe71c('0x7')]]['mohtime']));delete channels[_0x13bc88[_0xe71c('0x7')]][_0xe71c('0x3f')];}}}catch(_0x173265){utils['error'](util['format'](_0xe71c('0x42'),_0x13bc88[_0xe71c('0x7')]),_0x173265);}};exports[_0xe71c('0x44')]=function(_0x4aef9b){try{if(!_[_0xe71c('0x22')](channels[_0x4aef9b[_0xe71c('0x7')]])){utils[_0xe71c('0x17')](util[_0xe71c('0xa')]('[%s][calls][varset]',_0x4aef9b['uniqueid']),_0x4aef9b);if(!_[_0xe71c('0x22')](_0x4aef9b['variable'][_0xe71c('0x45')])){utils['info'](util['format'](_0xe71c('0x46'),_0x4aef9b[_0xe71c('0x7')],_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]]['source']=_0x4aef9b['value'];}if(!_['isNil'](_0x4aef9b[_0xe71c('0x48')][_0xe71c('0x49')])){utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x4a'),_0x4aef9b[_0xe71c('0x7')],_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b['uniqueid']][_0xe71c('0x4b')]=_0x4aef9b[_0xe71c('0x47')];channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x2b')]='\x22'+_0x4aef9b['value']+'\x22\x20<'+_0x4aef9b[_0xe71c('0x47')]+'>';}if(!_['isNil'](_0x4aef9b[_0xe71c('0x48')][_0xe71c('0x4c')])||!_[_0xe71c('0x22')](_0x4aef9b[_0xe71c('0x48')][_0xe71c('0x4d')])){utils['info'](util[_0xe71c('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x4aef9b['uniqueid'],!_[_0xe71c('0x22')](_0x4aef9b['variable']['xmd-callerid-preview'])?_0xe71c('0x4c'):_0xe71c('0x4d'),_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x2b')]=_0x4aef9b[_0xe71c('0x47')];}if(!_[_0xe71c('0x22')](_0x4aef9b[_0xe71c('0x48')]['xmd-queue'])||!_[_0xe71c('0x22')](_0x4aef9b[_0xe71c('0x48')][_0xe71c('0x4e')])){utils['info'](util[_0xe71c('0xa')](_0xe71c('0x4f'),_0x4aef9b[_0xe71c('0x7')],!_['isNil'](_0x4aef9b['variable'][_0xe71c('0x50')])?_0xe71c('0x50'):_0xe71c('0x4e'),_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x51')]=_0xe71c('0x52');channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x53')]=_0x4aef9b[_0xe71c('0x47')];channels[_0x4aef9b[_0xe71c('0x7')]]['queue']=!![];}if(!_[_0xe71c('0x22')](_0x4aef9b[_0xe71c('0x48')][_0xe71c('0x54')])){utils[_0xe71c('0x9')](util[_0xe71c('0xa')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x4aef9b[_0xe71c('0x7')],_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x55')]=_0x4aef9b[_0xe71c('0x47')];}if(!_[_0xe71c('0x22')](_0x4aef9b['variable'][_0xe71c('0x56')])){utils[_0xe71c('0x9')](util[_0xe71c('0xa')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x4aef9b[_0xe71c('0x7')],_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x57')]=_0x4aef9b[_0xe71c('0x47')];}if(!_[_0xe71c('0x22')](_0x4aef9b['variable'][_0xe71c('0x58')])){utils[_0xe71c('0x9')](util[_0xe71c('0xa')](_0xe71c('0x59'),_0x4aef9b[_0xe71c('0x7')],_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x5a')]=_0x4aef9b['value'];}if(!_[_0xe71c('0x22')](_0x4aef9b['variable'][_0xe71c('0x5b')])){utils[_0xe71c('0x9')](util['format']('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x4aef9b[_0xe71c('0x7')],_0x4aef9b[_0xe71c('0x47')]));channels[_0x4aef9b[_0xe71c('0x7')]][_0xe71c('0x5b')]=_0x4aef9b[_0xe71c('0x47')];}}}catch(_0x53cf57){utils[_0xe71c('0x3d')](util[_0xe71c('0xa')](_0xe71c('0x5c'),_0x4aef9b['uniqueid']),_0x53cf57);}};exports['newexten']=function(_0x436b5a){try{if(!_[_0xe71c('0x22')](channels[_0x436b5a[_0xe71c('0x7')]])){utils[_0xe71c('0x17')](util[_0xe71c('0xa')](_0xe71c('0x5d'),_0x436b5a[_0xe71c('0x7')]),_0x436b5a);utils[_0xe71c('0x9')](util[_0xe71c('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x436b5a[_0xe71c('0x7')],_0x436b5a[_0xe71c('0x5e')],_0x436b5a[_0xe71c('0x5f')]));if(_0x436b5a[_0xe71c('0x5e')][_0xe71c('0x60')]()==_0xe71c('0x61')&&_[_0xe71c('0x62')](_0x436b5a[_0xe71c('0x5f')][_0xe71c('0x60')](),_0xe71c('0x63'))){var _0x421ee3=_0x436b5a[_0xe71c('0x5f')][_0xe71c('0x64')]('=');var _0x3c2094=_0x421ee3[0x0][_0xe71c('0x65')](_0x421ee3[0x0][_0xe71c('0x66')]('(')+0x1,_0x421ee3[0x0][_0xe71c('0x66')](')'));var _0x41697a=_0x421ee3[0x1];channels[_0x436b5a[_0xe71c('0x7')]][_0x3c2094]=_0x41697a;}if(!_['includes']([_0xe71c('0x2a'),'noop',_0xe71c('0x67'),_0xe71c('0x61'),'gotoif'],_0x436b5a[_0xe71c('0x5e')][_0xe71c('0x60')]())){channels[_0x436b5a[_0xe71c('0x7')]]['lastapplication']=_0x436b5a['application'];channels[_0x436b5a[_0xe71c('0x7')]][_0xe71c('0x53')]=_0x436b5a[_0xe71c('0x5f')];}}}catch(_0xf35a82){utils['error'](util[_0xe71c('0xa')](_0xe71c('0x5d'),_0x436b5a[_0xe71c('0x7')]),_0xf35a82);}};
\ No newline at end of file
index 69570fc..92360ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c34=['connect','info','[core]\x20connected','shutdown','[core]\x20fullybooted','error','[core]\x20close','managerevent','./utils'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3c34,0x14c));var _0x43c3=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x3c34[_0x2d7f0e];return _0x110b07;};'use strict';var utils=require(_0x43c3('0x0'));exports[_0x43c3('0x1')]=function(){utils[_0x43c3('0x2')](_0x43c3('0x3'));};exports[_0x43c3('0x4')]=function(){utils[_0x43c3('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x43c3('0x2')](_0x43c3('0x5'));};exports[_0x43c3('0x6')]=function(_0x301446){utils[_0x43c3('0x6')]('[core]\x20error',_0x301446);};exports['close']=function(){utils[_0x43c3('0x2')](_0x43c3('0x7'));};exports[_0x43c3('0x8')]=function(_0x3c0ab6){};
\ No newline at end of file
+var _0x1d63=['error','[core]\x20error','close','[core]\x20close','managerevent','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted'];(function(_0x539f87,_0x110bfe){var _0x4c20a6=function(_0x5eee35){while(--_0x5eee35){_0x539f87['push'](_0x539f87['shift']());}};_0x4c20a6(++_0x110bfe);}(_0x1d63,0x144));var _0x31d6=function(_0x2ad7e8,_0x3ea6e5){_0x2ad7e8=_0x2ad7e8-0x0;var _0x22dd5f=_0x1d63[_0x2ad7e8];return _0x22dd5f;};'use strict';var utils=require('./utils');exports['connect']=function(){utils[_0x31d6('0x0')](_0x31d6('0x1'));};exports[_0x31d6('0x2')]=function(){utils[_0x31d6('0x0')](_0x31d6('0x3'));};exports[_0x31d6('0x4')]=function(){utils[_0x31d6('0x0')](_0x31d6('0x5'));};exports['error']=function(_0x6d68e5){utils[_0x31d6('0x6')](_0x31d6('0x7'),_0x6d68e5);};exports[_0x31d6('0x8')]=function(){utils[_0x31d6('0x0')](_0x31d6('0x9'));};exports[_0x31d6('0xa')]=function(_0x3df679){};
\ No newline at end of file
index 19c6009..4d69e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff30=['[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][hangup]','calleridnum','duration','diffTime','endtime','holdtime','billableseconds','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','connectedlinenum','request','CreateVoiceDialReport','debug','format','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','[%s][dials][newexten]','varset','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][varset]','dialbegin','isNil','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','dialstatus','ANSWER','answertime','connect'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xff30,0x6b));var _0x0ff3=function(_0x32cd5c,_0x22a6a3){_0x32cd5c=_0x32cd5c-0x0;var _0x42a01a=_0xff30[_0x32cd5c];return _0x42a01a;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x0ff3('0x0'));var dials={};function writeDB(_0x22f783){utils[_0x0ff3('0x1')](util['format'](_0x0ff3('0x2'),_0x22f783[_0x0ff3('0x3')],_0x22f783[_0x0ff3('0x4')],_0x22f783['dialstring'],_0x22f783['calleridnum'],_0x22f783[_0x0ff3('0x5')],_0x22f783['dialstatus']));utils[_0x0ff3('0x6')](_0x0ff3('0x7'),_0x22f783);delete dials[_0x22f783['uniqueid']];}exports['newexten']=function(_0x434800){try{utils[_0x0ff3('0x8')](util[_0x0ff3('0x9')]('[%s][dials][newexten]',_0x434800[_0x0ff3('0x3')]),_0x434800);utils[_0x0ff3('0x1')](util['format'](_0x0ff3('0xa'),_0x434800['uniqueid'],_0x434800[_0x0ff3('0xb')],_0x434800[_0x0ff3('0xc')]));if(_0x434800['application'][_0x0ff3('0xd')]()==_0x0ff3('0xe')&&_[_0x0ff3('0xf')](_0x434800[_0x0ff3('0xc')][_0x0ff3('0xd')](),_0x0ff3('0x10'))){var _0x1ef027=_0x434800[_0x0ff3('0xc')][_0x0ff3('0x11')]('=');dials[_0x434800[_0x0ff3('0x3')]]={'routeId':_0x1ef027[0x1]};}}catch(_0x5b2b5a){utils['error'](util[_0x0ff3('0x9')](_0x0ff3('0x12'),_0x434800[_0x0ff3('0x3')]),_0x5b2b5a);}};exports[_0x0ff3('0x13')]=function(_0x3f1dbb){try{utils[_0x0ff3('0x8')](util[_0x0ff3('0x9')]('[%s][dials][varset]',_0x3f1dbb[_0x0ff3('0x3')]),_0x3f1dbb);if(!_['isNil'](_0x3f1dbb[_0x0ff3('0x14')][_0x0ff3('0x15')])){utils['info'](util[_0x0ff3('0x9')](_0x0ff3('0x16'),_0x3f1dbb[_0x0ff3('0x3')],_0x3f1dbb[_0x0ff3('0x17')]));dials[_0x3f1dbb[_0x0ff3('0x3')]]={'routeId':_0x3f1dbb[_0x0ff3('0x17')]};}}catch(_0x2cf1ae){utils[_0x0ff3('0x18')](util['format'](_0x0ff3('0x19'),_0x3f1dbb[_0x0ff3('0x3')]),_0x2cf1ae);}};exports[_0x0ff3('0x1a')]=function(_0xc99e30){try{if(!_[_0x0ff3('0x1b')](dials[_0xc99e30['uniqueid']])){utils['debug'](util[_0x0ff3('0x9')]('[%s][dials][dialbegin]',_0xc99e30['uniqueid']),_0xc99e30);dials[_0xc99e30[_0x0ff3('0x3')]]=_[_0x0ff3('0x1c')](dials[_0xc99e30[_0x0ff3('0x3')]],_0xc99e30);dials[_0xc99e30[_0x0ff3('0x3')]][_0x0ff3('0x1d')]=utils[_0x0ff3('0x1e')]();dials[_0xc99e30['uniqueid']][_0x0ff3('0x1f')]='called';utils[_0x0ff3('0x1')](util[_0x0ff3('0x9')](_0x0ff3('0x20'),_0xc99e30[_0x0ff3('0x3')],dials[_0xc99e30['uniqueid']][_0x0ff3('0x1d')]));}}catch(_0x13ab56){utils[_0x0ff3('0x18')](util[_0x0ff3('0x9')](_0x0ff3('0x21'),_0xc99e30[_0x0ff3('0x3')]),_0x13ab56);}};exports[_0x0ff3('0x22')]=function(_0xad9d6b){try{if(!_['isNil'](dials[_0xad9d6b[_0x0ff3('0x3')]])){utils[_0x0ff3('0x8')](util['format'](_0x0ff3('0x23'),_0xad9d6b[_0x0ff3('0x3')]),_0xad9d6b);dials[_0xad9d6b[_0x0ff3('0x3')]]['dialstatus']=_0xad9d6b['dialstatus'];if(_0xad9d6b[_0x0ff3('0x24')]==_0x0ff3('0x25')){dials[_0xad9d6b['uniqueid']]=_[_0x0ff3('0x1c')](dials[_0xad9d6b[_0x0ff3('0x3')]],_0xad9d6b);dials[_0xad9d6b[_0x0ff3('0x3')]][_0x0ff3('0x26')]=utils['now']();dials[_0xad9d6b['uniqueid']]['lastevent']=_0x0ff3('0x27');utils[_0x0ff3('0x1')](util['format'](_0x0ff3('0x28'),_0xad9d6b[_0x0ff3('0x3')],_0xad9d6b[_0x0ff3('0x24')],dials[_0xad9d6b[_0x0ff3('0x3')]][_0x0ff3('0x26')]));}else{utils['info'](util[_0x0ff3('0x9')](_0x0ff3('0x29'),_0xad9d6b[_0x0ff3('0x3')],_0xad9d6b[_0x0ff3('0x24')]));}}}catch(_0x138fb1){utils[_0x0ff3('0x18')](util['format']('[%s][dials][dialend]',_0xad9d6b[_0x0ff3('0x3')]),_0x138fb1);}};exports['hangup']=function(_0x404386){try{if(!_[_0x0ff3('0x1b')](dials[_0x404386[_0x0ff3('0x3')]])){utils['debug'](util['format'](_0x0ff3('0x2a'),_0x404386['uniqueid']),_0x404386);utils[_0x0ff3('0x1')](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x404386['uniqueid'],_0x404386[_0x0ff3('0x2b')],_0x404386['calleridname'],_0x404386['cause-txt']));dials[_0x404386[_0x0ff3('0x3')]]=_[_0x0ff3('0x1c')](dials[_0x404386[_0x0ff3('0x3')]],{'endtime':utils[_0x0ff3('0x1e')](),'lastevent':'complete'});dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2c')]=utils[_0x0ff3('0x2d')](dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2e')],dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x1d')]);dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2f')]=utils[_0x0ff3('0x2d')](dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x26')]||dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2e')],dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x1d')]);dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x30')]=dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x26')]?utils[_0x0ff3('0x2d')](dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2e')],dials[_0x404386['uniqueid']][_0x0ff3('0x26')]):0x0;writeDB(dials[_0x404386[_0x0ff3('0x3')]]);}}catch(_0x1588ac){utils['error'](util[_0x0ff3('0x9')](_0x0ff3('0x2a'),_0x404386[_0x0ff3('0x3')]),_0x1588ac);}};
\ No newline at end of file
+var _0x1a22=['isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','calleridname','duration','diffTime','endtime','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','appdata','cdr(routeid)','split','varset','[%s][dials][varset]'];(function(_0x68ebf8,_0x392d37){var _0xd207e4=function(_0x2c74e2){while(--_0x2c74e2){_0x68ebf8['push'](_0x68ebf8['shift']());}};_0xd207e4(++_0x392d37);}(_0x1a22,0x11a));var _0x21a2=function(_0x1933fe,_0x4dd1d2){_0x1933fe=_0x1933fe-0x0;var _0x3ccf9c=_0x1a22[_0x1933fe];return _0x3ccf9c;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x21a2('0x0'));var dials={};function writeDB(_0x1371f3){utils[_0x21a2('0x1')](util[_0x21a2('0x2')](_0x21a2('0x3'),_0x1371f3[_0x21a2('0x4')],_0x1371f3[_0x21a2('0x5')],_0x1371f3[_0x21a2('0x6')],_0x1371f3['calleridnum'],_0x1371f3[_0x21a2('0x7')],_0x1371f3[_0x21a2('0x8')]));utils[_0x21a2('0x9')](_0x21a2('0xa'),_0x1371f3);delete dials[_0x1371f3[_0x21a2('0x4')]];}exports[_0x21a2('0xb')]=function(_0x3e992f){try{utils[_0x21a2('0xc')](util[_0x21a2('0x2')](_0x21a2('0xd'),_0x3e992f[_0x21a2('0x4')]),_0x3e992f);utils['info'](util[_0x21a2('0x2')](_0x21a2('0xe'),_0x3e992f[_0x21a2('0x4')],_0x3e992f['application'],_0x3e992f['appdata']));if(_0x3e992f[_0x21a2('0xf')][_0x21a2('0x10')]()==_0x21a2('0x11')&&_[_0x21a2('0x12')](_0x3e992f[_0x21a2('0x13')][_0x21a2('0x10')](),_0x21a2('0x14'))){var _0x1c1fd6=_0x3e992f[_0x21a2('0x13')][_0x21a2('0x15')]('=');dials[_0x3e992f[_0x21a2('0x4')]]={'routeId':_0x1c1fd6[0x1]};}}catch(_0x349e77){utils['error'](util[_0x21a2('0x2')](_0x21a2('0xd'),_0x3e992f[_0x21a2('0x4')]),_0x349e77);}};exports[_0x21a2('0x16')]=function(_0x2c3e14){try{utils[_0x21a2('0xc')](util[_0x21a2('0x2')](_0x21a2('0x17'),_0x2c3e14[_0x21a2('0x4')]),_0x2c3e14);if(!_[_0x21a2('0x18')](_0x2c3e14[_0x21a2('0x19')][_0x21a2('0x1a')])){utils[_0x21a2('0x1')](util[_0x21a2('0x2')](_0x21a2('0x1b'),_0x2c3e14[_0x21a2('0x4')],_0x2c3e14[_0x21a2('0x1c')]));dials[_0x2c3e14['uniqueid']]={'routeId':_0x2c3e14['value']};}}catch(_0x1c0ddd){utils[_0x21a2('0x1d')](util['format']('[%s][dials][varset]',_0x2c3e14['uniqueid']),_0x1c0ddd);}};exports['dialbegin']=function(_0xcf30a2){try{if(!_[_0x21a2('0x18')](dials[_0xcf30a2['uniqueid']])){utils['debug'](util[_0x21a2('0x2')]('[%s][dials][dialbegin]',_0xcf30a2[_0x21a2('0x4')]),_0xcf30a2);dials[_0xcf30a2['uniqueid']]=_[_0x21a2('0x1e')](dials[_0xcf30a2[_0x21a2('0x4')]],_0xcf30a2);dials[_0xcf30a2[_0x21a2('0x4')]]['starttime']=utils[_0x21a2('0x1f')]();dials[_0xcf30a2[_0x21a2('0x4')]][_0x21a2('0x20')]=_0x21a2('0x21');utils[_0x21a2('0x1')](util[_0x21a2('0x2')](_0x21a2('0x22'),_0xcf30a2['uniqueid'],dials[_0xcf30a2[_0x21a2('0x4')]][_0x21a2('0x23')]));}}catch(_0x41d720){utils[_0x21a2('0x1d')](util[_0x21a2('0x2')](_0x21a2('0x24'),_0xcf30a2[_0x21a2('0x4')]),_0x41d720);}};exports[_0x21a2('0x25')]=function(_0x408963){try{if(!_['isNil'](dials[_0x408963[_0x21a2('0x4')]])){utils[_0x21a2('0xc')](util[_0x21a2('0x2')](_0x21a2('0x26'),_0x408963[_0x21a2('0x4')]),_0x408963);dials[_0x408963[_0x21a2('0x4')]][_0x21a2('0x8')]=_0x408963['dialstatus'];if(_0x408963['dialstatus']=='ANSWER'){dials[_0x408963['uniqueid']]=_['assign'](dials[_0x408963[_0x21a2('0x4')]],_0x408963);dials[_0x408963[_0x21a2('0x4')]][_0x21a2('0x27')]=utils['now']();dials[_0x408963[_0x21a2('0x4')]]['lastevent']=_0x21a2('0x28');utils[_0x21a2('0x1')](util[_0x21a2('0x2')](_0x21a2('0x29'),_0x408963[_0x21a2('0x4')],_0x408963['dialstatus'],dials[_0x408963[_0x21a2('0x4')]][_0x21a2('0x27')]));}else{utils[_0x21a2('0x1')](util[_0x21a2('0x2')](_0x21a2('0x2a'),_0x408963['uniqueid'],_0x408963[_0x21a2('0x8')]));}}}catch(_0x9eb84b){utils[_0x21a2('0x1d')](util[_0x21a2('0x2')](_0x21a2('0x26'),_0x408963[_0x21a2('0x4')]),_0x9eb84b);}};exports[_0x21a2('0x2b')]=function(_0x1df3b5){try{if(!_[_0x21a2('0x18')](dials[_0x1df3b5[_0x21a2('0x4')]])){utils[_0x21a2('0xc')](util[_0x21a2('0x2')](_0x21a2('0x2c'),_0x1df3b5['uniqueid']),_0x1df3b5);utils['info'](util['format'](_0x21a2('0x2d'),_0x1df3b5[_0x21a2('0x4')],_0x1df3b5[_0x21a2('0x2e')],_0x1df3b5[_0x21a2('0x2f')],_0x1df3b5['cause-txt']));dials[_0x1df3b5[_0x21a2('0x4')]]=_['assign'](dials[_0x1df3b5['uniqueid']],{'endtime':utils[_0x21a2('0x1f')](),'lastevent':'complete'});dials[_0x1df3b5[_0x21a2('0x4')]][_0x21a2('0x30')]=utils[_0x21a2('0x31')](dials[_0x1df3b5[_0x21a2('0x4')]][_0x21a2('0x32')],dials[_0x1df3b5[_0x21a2('0x4')]][_0x21a2('0x23')]);dials[_0x1df3b5[_0x21a2('0x4')]]['holdtime']=utils['diffTime'](dials[_0x1df3b5[_0x21a2('0x4')]][_0x21a2('0x27')]||dials[_0x1df3b5[_0x21a2('0x4')]]['endtime'],dials[_0x1df3b5[_0x21a2('0x4')]][_0x21a2('0x23')]);dials[_0x1df3b5[_0x21a2('0x4')]]['billableseconds']=dials[_0x1df3b5[_0x21a2('0x4')]]['answertime']?utils['diffTime'](dials[_0x1df3b5[_0x21a2('0x4')]]['endtime'],dials[_0x1df3b5[_0x21a2('0x4')]]['answertime']):0x0;writeDB(dials[_0x1df3b5[_0x21a2('0x4')]]);}}catch(_0x2109f8){utils[_0x21a2('0x1d')](util[_0x21a2('0x2')](_0x21a2('0x2c'),_0x1df3b5['uniqueid']),_0x2109f8);}};
\ No newline at end of file
index 4cecd72..cb58341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfb=['util','asterisk','port','username','xdr','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','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]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils'];(function(_0x21dd50,_0x2126e9){var _0x38659d=function(_0x47a956){while(--_0x47a956){_0x21dd50['push'](_0x21dd50['shift']());}};_0x38659d(++_0x2126e9);}(_0x0cfb,0x1cb));var _0xb0cf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x0cfb[_0x6131cd];return _0x47e916;};var AsteriskManager=require(_0xb0cf('0x0'));var config=require(_0xb0cf('0x1'));var utils=require(_0xb0cf('0x2'));var util=require(_0xb0cf('0x3'));var ami=new AsteriskManager(config[_0xb0cf('0x4')][_0xb0cf('0x5')],config['asterisk']['ip'],config[_0xb0cf('0x4')][_0xb0cf('0x6')],config['asterisk']['password'],!![]);ami['keepConnected']();if(config[_0xb0cf('0x7')]&&config[_0xb0cf('0x7')]['disabled']){utils[_0xb0cf('0x8')](_0xb0cf('0x9'));}else{var agents=require(_0xb0cf('0xa'));var calls=require(_0xb0cf('0xb'));var queues=require(_0xb0cf('0xc'));var recordings=require(_0xb0cf('0xd'));var members=require(_0xb0cf('0xe'));var dials=require(_0xb0cf('0xf'));var transfers=require('./transfers.controller');var core=require(_0xb0cf('0x10'));ami['on'](_0xb0cf('0x11'),core['connect']);ami['on'](_0xb0cf('0x12'),core['shutdown']);ami['on'](_0xb0cf('0x13'),core['fullybooted']);ami['on']('error',core[_0xb0cf('0x14')]);ami['on'](_0xb0cf('0x15'),core['close']);ami['on'](_0xb0cf('0x16'),core[_0xb0cf('0x16')]);ami['on']('devicestatechange',function(_0x4293a2){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x19'),_0x4293a2[_0xb0cf('0x1a')]),_0x4293a2);members['devicestatechange'](_0x4293a2);}catch(_0x1934df){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x19'),_0x4293a2[_0xb0cf('0x1a')]),_0x1934df);}});ami['on'](_0xb0cf('0x1b'),function(_0x4c4610){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x1c'),_0x4c4610[_0xb0cf('0x1d')]),_0x4c4610);agents[_0xb0cf('0x1b')](_0x4c4610);}catch(_0x15d153){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x1c'),_0x4c4610[_0xb0cf('0x1d')]),_0x15d153);}});ami['on'](_0xb0cf('0x1e'),function(_0x5795ac){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x1f'),_0x5795ac[_0xb0cf('0x1d')]),_0x5795ac);agents[_0xb0cf('0x1e')](_0x5795ac);}catch(_0x3aec67){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x1f'),_0x5795ac['uniqueid']),_0x3aec67);}});ami['on'](_0xb0cf('0x20'),function(_0x500d4c){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x21'),_0x500d4c[_0xb0cf('0x1d')]),_0x500d4c);agents['agentconnect'](_0x500d4c);queues[_0xb0cf('0x20')](_0x500d4c);}catch(_0x237ead){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x21'),_0x500d4c[_0xb0cf('0x1d')]),_0x237ead);}});ami['on'](_0xb0cf('0x22'),function(_0x1cf1a0){try{utils['debug'](util[_0xb0cf('0x18')]('[%s][index][agentcomplete]',_0x1cf1a0[_0xb0cf('0x1d')]),_0x1cf1a0);agents[_0xb0cf('0x22')](_0x1cf1a0);queues[_0xb0cf('0x22')](_0x1cf1a0);members[_0xb0cf('0x22')](_0x1cf1a0);}catch(_0x5b323f){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x23'),_0x1cf1a0[_0xb0cf('0x1d')]),_0x5b323f);}});ami['on'](_0xb0cf('0x24'),function(_0xb75dea){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x25'),_0xb75dea[_0xb0cf('0x1d')]),_0xb75dea);agents[_0xb0cf('0x24')](_0xb75dea);queues['queuecallerabandon'](_0xb75dea);}catch(_0xac4f0f){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x25'),_0xb75dea[_0xb0cf('0x1d')]),_0xac4f0f);}});ami['on']('queuecallerjoin',function(_0x215061){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x26'),_0x215061[_0xb0cf('0x1d')]),_0x215061);queues[_0xb0cf('0x27')](_0x215061);recordings['queuecallerjoin'](_0x215061);}catch(_0x13ffb3){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x26'),_0x215061[_0xb0cf('0x1d')]),_0x13ffb3);}});ami['on']('queuecallerleave',function(_0x417648){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')]('[%s][index][queuecallerleave]',_0x417648['uniqueid']),_0x417648);queues[_0xb0cf('0x28')](_0x417648);}catch(_0xb0e121){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')]('[%s][index][queuecallerleave]',_0x417648['uniqueid']),_0xb0e121);}});ami['on']('musiconholdstart',function(_0x516a33){try{utils[_0xb0cf('0x17')](util['format'](_0xb0cf('0x29'),_0x516a33[_0xb0cf('0x1d')]),_0x516a33);queues[_0xb0cf('0x2a')](_0x516a33);calls[_0xb0cf('0x2a')](_0x516a33);}catch(_0x294ca0){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x29'),_0x516a33['uniqueid']),_0x294ca0);}});ami['on'](_0xb0cf('0x2b'),function(_0x3cf517){try{utils[_0xb0cf('0x17')](util['format']('[%s][index][musiconholdstop]',_0x3cf517[_0xb0cf('0x1d')]),_0x3cf517);queues[_0xb0cf('0x2b')](_0x3cf517);calls[_0xb0cf('0x2b')](_0x3cf517);}catch(_0x4443db){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x2c'),_0x3cf517['uniqueid']),_0x4443db);}});ami['on'](_0xb0cf('0x2d'),function(_0x41fe84){try{utils['debug'](util[_0xb0cf('0x18')](_0xb0cf('0x2e'),_0x41fe84[_0xb0cf('0x1d')]),_0x41fe84);calls[_0xb0cf('0x2d')](_0x41fe84);recordings['newstate'](_0x41fe84);}catch(_0x1dd4c0){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x2e'),_0x41fe84[_0xb0cf('0x1d')]),_0x1dd4c0);}});ami['on'](_0xb0cf('0x2f'),function(_0x1de4a8){try{utils[_0xb0cf('0x17')](util['format'](_0xb0cf('0x30'),_0x1de4a8['uniqueid']),_0x1de4a8);calls[_0xb0cf('0x2f')](_0x1de4a8);recordings[_0xb0cf('0x2f')](_0x1de4a8);dials[_0xb0cf('0x2f')](_0x1de4a8);agents['hangup'](_0x1de4a8);queues[_0xb0cf('0x2f')](_0x1de4a8);}catch(_0x12d822){utils[_0xb0cf('0x14')](util['format'](_0xb0cf('0x30'),_0x1de4a8[_0xb0cf('0x1d')]),_0x12d822);}});ami['on'](_0xb0cf('0x31'),function(_0x1fdb00){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')]('[%s][index][cdr]',_0x1fdb00[_0xb0cf('0x1d')]),_0x1fdb00);members['cdr'](_0x1fdb00);}catch(_0x2ffd56){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x32'),_0x1fdb00[_0xb0cf('0x1d')]),_0x2ffd56);}});ami['on'](_0xb0cf('0x33'),function(_0x40d7ac){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x34'),_0x40d7ac[_0xb0cf('0x1d')]),_0x40d7ac);queues[_0xb0cf('0x33')](_0x40d7ac);agents['blindtransfer'](_0x40d7ac);transfers[_0xb0cf('0x33')](_0x40d7ac);}catch(_0x2f7d02){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x34'),_0x40d7ac[_0xb0cf('0x1d')]),_0x2f7d02);}});ami['on']('attendedtransfer',function(_0x1ac7fd){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x35'),_0x1ac7fd[_0xb0cf('0x36')]),_0x1ac7fd);queues[_0xb0cf('0x37')](_0x1ac7fd);transfers[_0xb0cf('0x37')](_0x1ac7fd);agents[_0xb0cf('0x37')](_0x1ac7fd);calls[_0xb0cf('0x37')](_0x1ac7fd);}catch(_0x4445fa){utils['error'](util['format'](_0xb0cf('0x35'),_0x1ac7fd['origtransfereruniqueid']),_0x4445fa);}});ami['on']('varset',function(_0x55c381){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x38'),_0x55c381[_0xb0cf('0x1d')]),_0x55c381);queues['varset'](_0x55c381);recordings[_0xb0cf('0x39')](_0x55c381);calls[_0xb0cf('0x39')](_0x55c381);dials[_0xb0cf('0x39')](_0x55c381);}catch(_0x997bb1){utils[_0xb0cf('0x14')](util['format'](_0xb0cf('0x38'),_0x55c381[_0xb0cf('0x1d')]),_0x997bb1);}});ami['on'](_0xb0cf('0x3a'),function(_0xed09f4){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')]('[%s][index][newexten]',_0xed09f4[_0xb0cf('0x1d')]),_0xed09f4);calls[_0xb0cf('0x3a')](_0xed09f4);recordings[_0xb0cf('0x3a')](_0xed09f4);dials[_0xb0cf('0x3a')](_0xed09f4);}catch(_0x14ef15){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x3b'),_0xed09f4['uniqueid']),_0x14ef15);}});ami['on'](_0xb0cf('0x3c'),function(_0x5ab0ce){try{utils[_0xb0cf('0x17')](util['format']('[%s][index][newchannel]',_0x5ab0ce[_0xb0cf('0x1d')]),_0x5ab0ce);calls['newchannel'](_0x5ab0ce);recordings[_0xb0cf('0x3c')](_0x5ab0ce);}catch(_0x501f83){utils[_0xb0cf('0x14')](util['format']('[%s][index][newchannel]',_0x5ab0ce[_0xb0cf('0x1d')]),_0x501f83);}});ami['on'](_0xb0cf('0x3d'),function(_0x2c5b6f){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x3e'),_0x2c5b6f[_0xb0cf('0x1d')]),_0x2c5b6f);dials[_0xb0cf('0x3d')](_0x2c5b6f);}catch(_0xb6a998){utils['error'](util['format'](_0xb0cf('0x3f'),_0x2c5b6f[_0xb0cf('0x1d')]),_0xb6a998);}});ami['on'](_0xb0cf('0x40'),function(_0x1e5816){try{utils['debug'](util[_0xb0cf('0x18')](_0xb0cf('0x41'),_0x1e5816['uniqueid']),_0x1e5816);dials[_0xb0cf('0x40')](_0x1e5816);}catch(_0x36c868){utils[_0xb0cf('0x14')](util['format'](_0xb0cf('0x41'),_0x1e5816[_0xb0cf('0x1d')]),_0x36c868);}});}
\ No newline at end of file
+var _0xf8da=['[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s]dialbegin','[%s][index][dialend]','dialend','asterisk-manager','../../config/environment','./utils','util','asterisk','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','[%s][index][devicestatechange]','device','format','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','hangup'];(function(_0x126622,_0xcaaa3e){var _0x5d18be=function(_0x576ecc){while(--_0x576ecc){_0x126622['push'](_0x126622['shift']());}};_0x5d18be(++_0xcaaa3e);}(_0xf8da,0x110));var _0xaf8d=function(_0x340cf5,_0xd979e1){_0x340cf5=_0x340cf5-0x0;var _0x297d14=_0xf8da[_0x340cf5];return _0x297d14;};var AsteriskManager=require(_0xaf8d('0x0'));var config=require(_0xaf8d('0x1'));var utils=require(_0xaf8d('0x2'));var util=require(_0xaf8d('0x3'));var ami=new AsteriskManager(config[_0xaf8d('0x4')]['port'],config[_0xaf8d('0x4')]['ip'],config[_0xaf8d('0x4')]['username'],config['asterisk'][_0xaf8d('0x5')],!![]);ami[_0xaf8d('0x6')]();if(config[_0xaf8d('0x7')]&&config['xdr'][_0xaf8d('0x8')]){utils[_0xaf8d('0x9')](_0xaf8d('0xa'));}else{var agents=require('./agents.controller');var calls=require(_0xaf8d('0xb'));var queues=require(_0xaf8d('0xc'));var recordings=require(_0xaf8d('0xd'));var members=require(_0xaf8d('0xe'));var dials=require(_0xaf8d('0xf'));var transfers=require('./transfers.controller');var core=require(_0xaf8d('0x10'));ami['on']('connect',core[_0xaf8d('0x11')]);ami['on'](_0xaf8d('0x12'),core['shutdown']);ami['on'](_0xaf8d('0x13'),core[_0xaf8d('0x13')]);ami['on']('error',core[_0xaf8d('0x14')]);ami['on'](_0xaf8d('0x15'),core[_0xaf8d('0x15')]);ami['on'](_0xaf8d('0x16'),core[_0xaf8d('0x16')]);ami['on'](_0xaf8d('0x17'),function(_0x4b9982){try{utils[_0xaf8d('0x18')](util['format'](_0xaf8d('0x19'),_0x4b9982[_0xaf8d('0x1a')]),_0x4b9982);members['devicestatechange'](_0x4b9982);}catch(_0x4536ce){utils['error'](util[_0xaf8d('0x1b')](_0xaf8d('0x19'),_0x4b9982[_0xaf8d('0x1a')]),_0x4536ce);}});ami['on']('agentcalled',function(_0x2da507){try{utils[_0xaf8d('0x18')](util['format'](_0xaf8d('0x1c'),_0x2da507[_0xaf8d('0x1d')]),_0x2da507);agents[_0xaf8d('0x1e')](_0x2da507);}catch(_0x1e1a2c){utils[_0xaf8d('0x14')](util['format'](_0xaf8d('0x1c'),_0x2da507['uniqueid']),_0x1e1a2c);}});ami['on'](_0xaf8d('0x1f'),function(_0x237d8b){try{utils['debug'](util[_0xaf8d('0x1b')]('[%s][index][agentringnoanswer]',_0x237d8b[_0xaf8d('0x1d')]),_0x237d8b);agents[_0xaf8d('0x1f')](_0x237d8b);}catch(_0x20a232){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')]('[%s][index][agentringnoanswer]',_0x237d8b[_0xaf8d('0x1d')]),_0x20a232);}});ami['on'](_0xaf8d('0x20'),function(_0x16604f){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')]('[%s][index][agentconnect]',_0x16604f[_0xaf8d('0x1d')]),_0x16604f);agents[_0xaf8d('0x20')](_0x16604f);queues[_0xaf8d('0x20')](_0x16604f);}catch(_0x5ee25e){utils['error'](util[_0xaf8d('0x1b')](_0xaf8d('0x21'),_0x16604f['uniqueid']),_0x5ee25e);}});ami['on'](_0xaf8d('0x22'),function(_0x488d88){try{utils[_0xaf8d('0x18')](util['format'](_0xaf8d('0x23'),_0x488d88[_0xaf8d('0x1d')]),_0x488d88);agents[_0xaf8d('0x22')](_0x488d88);queues[_0xaf8d('0x22')](_0x488d88);members[_0xaf8d('0x22')](_0x488d88);}catch(_0x2ba5ed){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')]('[%s][index][agentcomplete]',_0x488d88['uniqueid']),_0x2ba5ed);}});ami['on'](_0xaf8d('0x24'),function(_0x29cc68){try{utils[_0xaf8d('0x18')](util['format']('[%s][index][queuecallerabandon]',_0x29cc68['uniqueid']),_0x29cc68);agents[_0xaf8d('0x24')](_0x29cc68);queues[_0xaf8d('0x24')](_0x29cc68);}catch(_0x49f308){utils[_0xaf8d('0x14')](util['format'](_0xaf8d('0x25'),_0x29cc68[_0xaf8d('0x1d')]),_0x49f308);}});ami['on']('queuecallerjoin',function(_0x2c6d9e){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x26'),_0x2c6d9e[_0xaf8d('0x1d')]),_0x2c6d9e);queues['queuecallerjoin'](_0x2c6d9e);recordings[_0xaf8d('0x27')](_0x2c6d9e);}catch(_0x5d2a3c){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')](_0xaf8d('0x26'),_0x2c6d9e['uniqueid']),_0x5d2a3c);}});ami['on']('queuecallerleave',function(_0x8b3e06){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')]('[%s][index][queuecallerleave]',_0x8b3e06['uniqueid']),_0x8b3e06);queues[_0xaf8d('0x28')](_0x8b3e06);}catch(_0x1573da){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')](_0xaf8d('0x29'),_0x8b3e06[_0xaf8d('0x1d')]),_0x1573da);}});ami['on']('musiconholdstart',function(_0x3907df){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x2a'),_0x3907df[_0xaf8d('0x1d')]),_0x3907df);queues[_0xaf8d('0x2b')](_0x3907df);calls['musiconholdstart'](_0x3907df);}catch(_0x4a7760){utils['error'](util[_0xaf8d('0x1b')](_0xaf8d('0x2a'),_0x3907df[_0xaf8d('0x1d')]),_0x4a7760);}});ami['on'](_0xaf8d('0x2c'),function(_0x586736){try{utils[_0xaf8d('0x18')](util['format']('[%s][index][musiconholdstop]',_0x586736[_0xaf8d('0x1d')]),_0x586736);queues['musiconholdstop'](_0x586736);calls['musiconholdstop'](_0x586736);}catch(_0x5d7792){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')](_0xaf8d('0x2d'),_0x586736[_0xaf8d('0x1d')]),_0x5d7792);}});ami['on']('newstate',function(_0x24843e){try{utils[_0xaf8d('0x18')](util['format']('[%s][index][newstate]',_0x24843e[_0xaf8d('0x1d')]),_0x24843e);calls['newstate'](_0x24843e);recordings['newstate'](_0x24843e);}catch(_0x4b1bf1){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')](_0xaf8d('0x2e'),_0x24843e[_0xaf8d('0x1d')]),_0x4b1bf1);}});ami['on'](_0xaf8d('0x2f'),function(_0x5c87a3){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x30'),_0x5c87a3[_0xaf8d('0x1d')]),_0x5c87a3);calls[_0xaf8d('0x2f')](_0x5c87a3);recordings[_0xaf8d('0x2f')](_0x5c87a3);dials['hangup'](_0x5c87a3);agents['hangup'](_0x5c87a3);queues['hangup'](_0x5c87a3);}catch(_0x3ef13b){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')](_0xaf8d('0x30'),_0x5c87a3[_0xaf8d('0x1d')]),_0x3ef13b);}});ami['on'](_0xaf8d('0x31'),function(_0x456ec0){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x32'),_0x456ec0['uniqueid']),_0x456ec0);members[_0xaf8d('0x31')](_0x456ec0);}catch(_0x528682){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')]('[%s][index][cdr]',_0x456ec0[_0xaf8d('0x1d')]),_0x528682);}});ami['on'](_0xaf8d('0x33'),function(_0x6d6541){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x34'),_0x6d6541[_0xaf8d('0x1d')]),_0x6d6541);queues[_0xaf8d('0x33')](_0x6d6541);agents[_0xaf8d('0x33')](_0x6d6541);transfers[_0xaf8d('0x33')](_0x6d6541);}catch(_0x2982fe){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')]('[%s][index][blindtransfer]',_0x6d6541[_0xaf8d('0x1d')]),_0x2982fe);}});ami['on'](_0xaf8d('0x35'),function(_0x223b08){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')]('[%s][index][attendedtransfer]',_0x223b08['origtransfereruniqueid']),_0x223b08);queues['attendedtransfer'](_0x223b08);transfers['attendedtransfer'](_0x223b08);agents['attendedtransfer'](_0x223b08);calls[_0xaf8d('0x35')](_0x223b08);}catch(_0x38ec3a){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')]('[%s][index][attendedtransfer]',_0x223b08[_0xaf8d('0x36')]),_0x38ec3a);}});ami['on'](_0xaf8d('0x37'),function(_0x309bd8){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')]('[%s][index][varset]',_0x309bd8[_0xaf8d('0x1d')]),_0x309bd8);queues[_0xaf8d('0x37')](_0x309bd8);recordings[_0xaf8d('0x37')](_0x309bd8);calls[_0xaf8d('0x37')](_0x309bd8);dials['varset'](_0x309bd8);}catch(_0x1260b4){utils['error'](util[_0xaf8d('0x1b')](_0xaf8d('0x38'),_0x309bd8['uniqueid']),_0x1260b4);}});ami['on'](_0xaf8d('0x39'),function(_0x2933ee){try{utils[_0xaf8d('0x18')](util['format']('[%s][index][newexten]',_0x2933ee[_0xaf8d('0x1d')]),_0x2933ee);calls[_0xaf8d('0x39')](_0x2933ee);recordings[_0xaf8d('0x39')](_0x2933ee);dials['newexten'](_0x2933ee);}catch(_0x22bd38){utils['error'](util[_0xaf8d('0x1b')](_0xaf8d('0x3a'),_0x2933ee[_0xaf8d('0x1d')]),_0x22bd38);}});ami['on'](_0xaf8d('0x3b'),function(_0x5b1802){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x3c'),_0x5b1802['uniqueid']),_0x5b1802);calls[_0xaf8d('0x3b')](_0x5b1802);recordings[_0xaf8d('0x3b')](_0x5b1802);}catch(_0x2b55af){utils[_0xaf8d('0x14')](util[_0xaf8d('0x1b')]('[%s][index][newchannel]',_0x5b1802[_0xaf8d('0x1d')]),_0x2b55af);}});ami['on']('dialbegin',function(_0x4064f6){try{utils[_0xaf8d('0x18')](util['format']('[%s][index][dialbegin]',_0x4064f6[_0xaf8d('0x1d')]),_0x4064f6);dials['dialbegin'](_0x4064f6);}catch(_0x3e74ea){utils[_0xaf8d('0x14')](util['format'](_0xaf8d('0x3d'),_0x4064f6['uniqueid']),_0x3e74ea);}});ami['on']('dialend',function(_0x9a2560){try{utils[_0xaf8d('0x18')](util[_0xaf8d('0x1b')](_0xaf8d('0x3e'),_0x9a2560['uniqueid']),_0x9a2560);dials[_0xaf8d('0x3f')](_0x9a2560);}catch(_0x12334b){utils['error'](util[_0xaf8d('0x1b')](_0xaf8d('0x3e'),_0x9a2560[_0xaf8d('0x1d')]),_0x12334b);}});}
\ No newline at end of file
index 7aeab57..76c5c71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8db=['interface','channel','data2','membername','getUserByInterface','then','name','internal','request','getUserByName','CreateMemberReport','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','info','state','BUSY','voice','TALKING','now','agent','isNil','exitAt','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','cdr','[%s][members][cdr]','split','assign','data1','type','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','source','destination','util','./utils','Local/_attended@transfer','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid'];(function(_0x3fb9dd,_0x174fff){var _0x20136a=function(_0x480081){while(--_0x480081){_0x3fb9dd['push'](_0x3fb9dd['shift']());}};_0x20136a(++_0x174fff);}(_0xa8db,0x16d));var _0xba8d=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0xa8db[_0x1ebce2];return _0x4a330c;};'use strict';var _=require('lodash');var util=require(_0xba8d('0x0'));var utils=require(_0xba8d('0x1'));var members={};var exclude=[_0xba8d('0x2'),'Queue:'];function writeDB(_0x3f9c3f){utils['info'](util[_0xba8d('0x3')](_0xba8d('0x4'),_0x3f9c3f[_0xba8d('0x5')],_0x3f9c3f[_0xba8d('0x6')],_0x3f9c3f[_0xba8d('0x7')],_0x3f9c3f[_0xba8d('0x8')],_0x3f9c3f[_0xba8d('0x9')],_0x3f9c3f['type']));if(_0x3f9c3f[_0xba8d('0x6')]){utils[_0xba8d('0xa')](_0x3f9c3f['interface'])[_0xba8d('0xb')](function(_0x11f10d){if(_0x11f10d){_0x3f9c3f[_0xba8d('0x9')]=_0x11f10d[_0xba8d('0xc')];_0x3f9c3f[_0xba8d('0xd')]=_0x11f10d['internal'];utils[_0xba8d('0xe')]('CreateMemberReport',_0x3f9c3f);}else{utils[_0xba8d('0xf')](_0x3f9c3f[_0xba8d('0x6')]['split']('/')[0x1])['then'](function(_0x2ac350){if(_0x2ac350){_0x3f9c3f[_0xba8d('0x9')]=_0x2ac350[_0xba8d('0xc')];_0x3f9c3f[_0xba8d('0xd')]=_0x2ac350[_0xba8d('0xd')];utils[_0xba8d('0xe')](_0xba8d('0x10'),_0x3f9c3f);}});}})[_0xba8d('0x11')](function(_0x386ca9){utils[_0xba8d('0x12')](util[_0xba8d('0x3')](_0xba8d('0x13'),_0x3f9c3f[_0xba8d('0x5')]),_0x386ca9);});}delete members[_0x3f9c3f[_0xba8d('0x6')]];}function startsWith(_0x1f1ba4,_0x46ca95){return _[_0xba8d('0x14')](_0x1f1ba4,function(_0x354a89){return _[_0xba8d('0x15')](_0x46ca95,_0x354a89);});}exports[_0xba8d('0x16')]=function(_0x3b4de2){try{utils[_0xba8d('0x17')](util[_0xba8d('0x3')](_0xba8d('0x18'),members[_0x3b4de2[_0xba8d('0x19')]]?members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]:_0x3b4de2[_0xba8d('0x19')]),_0x3b4de2);utils[_0xba8d('0x1a')](util[_0xba8d('0x3')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x3b4de2[_0xba8d('0x19')]]?members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]:_0x3b4de2['device'],_0x3b4de2[_0xba8d('0x1b')],_0x3b4de2[_0xba8d('0x19')]));switch(_0x3b4de2[_0xba8d('0x1b')]){case'INUSE':case _0xba8d('0x1c'):if(!startsWith(exclude,_0x3b4de2[_0xba8d('0x19')])){members[_0x3b4de2['device']]={'channel':_0xba8d('0x1d'),'interface':_0x3b4de2[_0xba8d('0x19')],'type':_0xba8d('0x1e'),'enterAt':utils[_0xba8d('0x1f')](),'role':_0xba8d('0x20')};}break;case'NOT_INUSE':if(!_[_0xba8d('0x21')](members[_0x3b4de2[_0xba8d('0x19')]])){members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x22')]=utils[_0xba8d('0x1f')]();members[_0x3b4de2['device']][_0xba8d('0x23')]=utils[_0xba8d('0x24')](members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x22')],members[_0x3b4de2['device']][_0xba8d('0x25')]);if(members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]){writeDB(members[_0x3b4de2[_0xba8d('0x19')]]);}}break;default:break;}}catch(_0x13c226){utils[_0xba8d('0x12')](util[_0xba8d('0x3')](_0xba8d('0x18'),members[_0x3b4de2[_0xba8d('0x19')]]?members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]:_0x3b4de2[_0xba8d('0x19')]),_0x13c226);}};exports[_0xba8d('0x26')]=function(_0x1db60c){try{if(!_['isNil'](members[_0x1db60c[_0xba8d('0x6')]])){utils[_0xba8d('0x17')](util[_0xba8d('0x3')](_0xba8d('0x27'),_0x1db60c[_0xba8d('0x5')]),_0x1db60c);utils[_0xba8d('0x1a')](util[_0xba8d('0x3')](_0xba8d('0x28'),_0x1db60c[_0xba8d('0x5')],_0x1db60c['interface'],_0x1db60c['queue']));members[_0x1db60c[_0xba8d('0x6')]]=_['assign'](members[_0x1db60c['interface']],{'data4':_0x1db60c[_0xba8d('0x29')],'uniqueid':_0x1db60c[_0xba8d('0x5')]});}}catch(_0x495582){utils[_0xba8d('0x12')](util['format'](_0xba8d('0x27'),_0x1db60c[_0xba8d('0x5')]),_0x495582);}};exports[_0xba8d('0x2a')]=function(_0x2700eb){try{utils[_0xba8d('0x17')](util[_0xba8d('0x3')](_0xba8d('0x2b'),_0x2700eb[_0xba8d('0x5')]),_0x2700eb);if(_0x2700eb[_0xba8d('0x7')]){var _0x1e5369=_0x2700eb[_0xba8d('0x7')][_0xba8d('0x2c')]('-')[0x0];if(!_['isNil'](members[_0x1e5369])){members[_0x1e5369]=_[_0xba8d('0x2d')](members[_0x1e5369],{'data1':members[_0x1e5369][_0xba8d('0x2e')]||_0x2700eb[_0xba8d('0x2f')],'data2':members[_0x1e5369][_0xba8d('0x8')]||_0x2700eb['source'],'data3':members[_0x1e5369][_0xba8d('0x30')]||_0x2700eb['destination'],'uniqueid':members[_0x1e5369]['uniqueid']||_0x2700eb[_0xba8d('0x5')]});utils['info'](util[_0xba8d('0x3')](_0xba8d('0x31'),_0x2700eb['uniqueid'],members[_0x1e5369][_0xba8d('0x2e')],members[_0x1e5369][_0xba8d('0x8')],members[_0x1e5369]['data3']));if(members[_0x1e5369][_0xba8d('0x22')]){writeDB(members[_0x1e5369]);}}}if(_0x2700eb[_0xba8d('0x32')]){var _0x5c5c09=_0x2700eb['destinationchannel'][_0xba8d('0x2c')]('-')[0x0];if(!_[_0xba8d('0x21')](members[_0x5c5c09])){members[_0x5c5c09]=_[_0xba8d('0x2d')](members[_0x5c5c09],{'data1':members[_0x5c5c09]['data1']||_0x2700eb[_0xba8d('0x2f')],'data2':members[_0x5c5c09][_0xba8d('0x8')]||_0x2700eb[_0xba8d('0x33')],'data3':members[_0x5c5c09][_0xba8d('0x30')]||_0x2700eb[_0xba8d('0x34')],'uniqueid':members[_0x5c5c09][_0xba8d('0x5')]||_0x2700eb['uniqueid']});utils['info'](util[_0xba8d('0x3')](_0xba8d('0x31'),_0x2700eb[_0xba8d('0x5')],members[_0x5c5c09][_0xba8d('0x2e')],members[_0x5c5c09][_0xba8d('0x8')],members[_0x5c5c09][_0xba8d('0x30')]));if(members[_0x5c5c09][_0xba8d('0x22')]){writeDB(members[_0x5c5c09]);}}}}catch(_0x1505fd){utils[_0xba8d('0x12')](util[_0xba8d('0x3')](_0xba8d('0x2b'),_0x2700eb[_0xba8d('0x5')]),_0x1505fd);}};
\ No newline at end of file
+var _0x639a=['[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','voice','now','NOT_INUSE','isNil','duration','diffTime','exitAt','enterAt','format','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','channel','data1','source','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data3','destinationchannel','util','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','data2','membername','type','then','name','internal','request','CreateMemberReport','getUserByName','split','error'];(function(_0x7abf6e,_0x2d2a2e){var _0x26e0dd=function(_0x2330f3){while(--_0x2330f3){_0x7abf6e['push'](_0x7abf6e['shift']());}};_0x26e0dd(++_0x2d2a2e);}(_0x639a,0xec));var _0xa639=function(_0x3bc30f,_0x4c5c13){_0x3bc30f=_0x3bc30f-0x0;var _0x3d539b=_0x639a[_0x3bc30f];return _0x3d539b;};'use strict';var _=require('lodash');var util=require(_0xa639('0x0'));var utils=require(_0xa639('0x1'));var members={};var exclude=[_0xa639('0x2'),_0xa639('0x3')];function writeDB(_0x1caab4){utils[_0xa639('0x4')](util['format'](_0xa639('0x5'),_0x1caab4[_0xa639('0x6')],_0x1caab4[_0xa639('0x7')],_0x1caab4['channel'],_0x1caab4[_0xa639('0x8')],_0x1caab4[_0xa639('0x9')],_0x1caab4[_0xa639('0xa')]));if(_0x1caab4[_0xa639('0x7')]){utils['getUserByInterface'](_0x1caab4[_0xa639('0x7')])[_0xa639('0xb')](function(_0x2efb63){if(_0x2efb63){_0x1caab4[_0xa639('0x9')]=_0x2efb63[_0xa639('0xc')];_0x1caab4[_0xa639('0xd')]=_0x2efb63[_0xa639('0xd')];utils[_0xa639('0xe')](_0xa639('0xf'),_0x1caab4);}else{utils[_0xa639('0x10')](_0x1caab4[_0xa639('0x7')][_0xa639('0x11')]('/')[0x1])[_0xa639('0xb')](function(_0x288cdf){if(_0x288cdf){_0x1caab4['membername']=_0x288cdf['name'];_0x1caab4['internal']=_0x288cdf[_0xa639('0xd')];utils[_0xa639('0xe')]('CreateMemberReport',_0x1caab4);}});}})['catch'](function(_0x228143){utils[_0xa639('0x12')](util['format'](_0xa639('0x13'),_0x1caab4[_0xa639('0x6')]),_0x228143);});}delete members[_0x1caab4[_0xa639('0x7')]];}function startsWith(_0x49e770,_0xb15138){return _[_0xa639('0x14')](_0x49e770,function(_0x96a92f){return _[_0xa639('0x15')](_0xb15138,_0x96a92f);});}exports[_0xa639('0x16')]=function(_0x5924bd){try{utils[_0xa639('0x17')](util['format'](_0xa639('0x18'),members[_0x5924bd[_0xa639('0x19')]]?members[_0x5924bd[_0xa639('0x19')]][_0xa639('0x6')]:_0x5924bd[_0xa639('0x19')]),_0x5924bd);utils['info'](util['format'](_0xa639('0x1a'),members[_0x5924bd[_0xa639('0x19')]]?members[_0x5924bd[_0xa639('0x19')]][_0xa639('0x6')]:_0x5924bd[_0xa639('0x19')],_0x5924bd['state'],_0x5924bd['device']));switch(_0x5924bd[_0xa639('0x1b')]){case'INUSE':case'BUSY':if(!startsWith(exclude,_0x5924bd['device'])){members[_0x5924bd[_0xa639('0x19')]]={'channel':_0xa639('0x1c'),'interface':_0x5924bd[_0xa639('0x19')],'type':'TALKING','enterAt':utils[_0xa639('0x1d')](),'role':'agent'};}break;case _0xa639('0x1e'):if(!_[_0xa639('0x1f')](members[_0x5924bd['device']])){members[_0x5924bd['device']]['exitAt']=utils[_0xa639('0x1d')]();members[_0x5924bd['device']][_0xa639('0x20')]=utils[_0xa639('0x21')](members[_0x5924bd[_0xa639('0x19')]][_0xa639('0x22')],members[_0x5924bd['device']][_0xa639('0x23')]);if(members[_0x5924bd[_0xa639('0x19')]][_0xa639('0x6')]){writeDB(members[_0x5924bd[_0xa639('0x19')]]);}}break;default:break;}}catch(_0x3a5dcb){utils[_0xa639('0x12')](util[_0xa639('0x24')](_0xa639('0x18'),members[_0x5924bd[_0xa639('0x19')]]?members[_0x5924bd[_0xa639('0x19')]]['uniqueid']:_0x5924bd[_0xa639('0x19')]),_0x3a5dcb);}};exports[_0xa639('0x25')]=function(_0x32b011){try{if(!_[_0xa639('0x1f')](members[_0x32b011[_0xa639('0x7')]])){utils['debug'](util[_0xa639('0x24')](_0xa639('0x26'),_0x32b011['uniqueid']),_0x32b011);utils[_0xa639('0x4')](util[_0xa639('0x24')](_0xa639('0x27'),_0x32b011[_0xa639('0x6')],_0x32b011[_0xa639('0x7')],_0x32b011[_0xa639('0x28')]));members[_0x32b011[_0xa639('0x7')]]=_[_0xa639('0x29')](members[_0x32b011['interface']],{'data4':_0x32b011[_0xa639('0x28')],'uniqueid':_0x32b011['uniqueid']});}}catch(_0x455ca7){utils[_0xa639('0x12')](util['format'](_0xa639('0x26'),_0x32b011['uniqueid']),_0x455ca7);}};exports[_0xa639('0x2a')]=function(_0x5cc880){try{utils[_0xa639('0x17')](util[_0xa639('0x24')](_0xa639('0x2b'),_0x5cc880['uniqueid']),_0x5cc880);if(_0x5cc880[_0xa639('0x2c')]){var _0x2ca1b4=_0x5cc880[_0xa639('0x2c')][_0xa639('0x11')]('-')[0x0];if(!_[_0xa639('0x1f')](members[_0x2ca1b4])){members[_0x2ca1b4]=_[_0xa639('0x29')](members[_0x2ca1b4],{'data1':members[_0x2ca1b4][_0xa639('0x2d')]||_0x5cc880[_0xa639('0xa')],'data2':members[_0x2ca1b4]['data2']||_0x5cc880[_0xa639('0x2e')],'data3':members[_0x2ca1b4]['data3']||_0x5cc880[_0xa639('0x2f')],'uniqueid':members[_0x2ca1b4][_0xa639('0x6')]||_0x5cc880['uniqueid']});utils[_0xa639('0x4')](util[_0xa639('0x24')](_0xa639('0x30'),_0x5cc880['uniqueid'],members[_0x2ca1b4]['data1'],members[_0x2ca1b4][_0xa639('0x8')],members[_0x2ca1b4][_0xa639('0x31')]));if(members[_0x2ca1b4]['exitAt']){writeDB(members[_0x2ca1b4]);}}}if(_0x5cc880['destinationchannel']){var _0x111a0f=_0x5cc880[_0xa639('0x32')]['split']('-')[0x0];if(!_['isNil'](members[_0x111a0f])){members[_0x111a0f]=_['assign'](members[_0x111a0f],{'data1':members[_0x111a0f]['data1']||_0x5cc880[_0xa639('0xa')],'data2':members[_0x111a0f]['data2']||_0x5cc880[_0xa639('0x2e')],'data3':members[_0x111a0f][_0xa639('0x31')]||_0x5cc880[_0xa639('0x2f')],'uniqueid':members[_0x111a0f]['uniqueid']||_0x5cc880['uniqueid']});utils[_0xa639('0x4')](util['format'](_0xa639('0x30'),_0x5cc880[_0xa639('0x6')],members[_0x111a0f][_0xa639('0x2d')],members[_0x111a0f][_0xa639('0x8')],members[_0x111a0f][_0xa639('0x31')]));if(members[_0x111a0f]['exitAt']){writeDB(members[_0x111a0f]);}}}}catch(_0x2fd6d3){utils[_0xa639('0x12')](util[_0xa639('0x24')](_0xa639('0x2b'),_0x5cc880[_0xa639('0x6')]),_0x2fd6d3);}};
\ No newline at end of file
index c0ebc26..ed978da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5126=['secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','lodash','util','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','queuecallerexitreason','getVoiceQueueByName','then','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','assign','now','hangup','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','error','varset','[%s][queues][varset]','isNil','variable','queuestatus','value','CONTINUE','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','position','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','lastAssignedTo','agentcomplete','[%s][queues][agentcomplete]','queuecallerabandonAt','assigned','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','transferexten','ATTENDEDTRANSFER','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid'];(function(_0x2e2cd7,_0x4860e6){var _0x37d88f=function(_0x58eafa){while(--_0x58eafa){_0x2e2cd7['push'](_0x2e2cd7['shift']());}};_0x37d88f(++_0x4860e6);}(_0x5126,0xcd));var _0x6512=function(_0x1df19b,_0x594d7b){_0x1df19b=_0x1df19b-0x0;var _0x47f96a=_0x5126[_0x1df19b];return _0x47f96a;};'use strict';var _=require(_0x6512('0x0'));var util=require(_0x6512('0x1'));var utils=require('./utils');var queues={};function writeDB(_0xd2fe25){utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x4'),_0xd2fe25[_0x6512('0x5')],_0xd2fe25[_0x6512('0x6')],_0xd2fe25[_0x6512('0x7')],_0xd2fe25['lastAssignedTo'],_0xd2fe25['calleridnum'],_0xd2fe25['accountcode'],_0xd2fe25[_0x6512('0x8')]));if(_0xd2fe25[_0x6512('0x7')]){utils[_0x6512('0x9')](_0xd2fe25[_0x6512('0x7')])[_0x6512('0xa')](function(_0x5dd3ca){if(_0x5dd3ca){_0xd2fe25['type']=_0x5dd3ca['type'];}utils[_0x6512('0xb')](_0x6512('0xc'),_0xd2fe25);});}else{utils[_0x6512('0xb')](_0x6512('0xc'),_0xd2fe25);}if(_0xd2fe25[_0x6512('0xd')]){delete queues[_0xd2fe25[_0x6512('0xd')]];}else{delete queues[_0xd2fe25[_0x6512('0x5')]];}}exports[_0x6512('0xe')]=function(_0x3169b5){try{utils[_0x6512('0xf')](util[_0x6512('0x3')](_0x6512('0x10'),_0x3169b5['uniqueid']),_0x3169b5);utils[_0x6512('0x2')](util['format']('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x3169b5[_0x6512('0x5')],_0x3169b5['queue'],_0x3169b5['position']));queues[_0x3169b5[_0x6512('0x5')]]=_[_0x6512('0x11')](_0x3169b5,{'originalposition':_0x3169b5['position'],'queuecallerjoinAt':utils[_0x6512('0x12')](),'mohtime':0x0});}catch(_0x4cb47f){utils['error'](util[_0x6512('0x3')]('[%s][queues][queuecallerjoin]',_0x3169b5['uniqueid']),_0x4cb47f);}};exports[_0x6512('0x13')]=function(_0x486394){try{if(!_['isNil'](queues[_0x486394[_0x6512('0x5')]])){utils[_0x6512('0xf')](util[_0x6512('0x3')]('[%s][queues][hangup]',_0x486394[_0x6512('0x5')]),_0x486394);if(queues[_0x486394['uniqueid']][_0x6512('0x14')]){if(!queues[_0x486394['uniqueid']][_0x6512('0x15')]&&!queues[_0x486394[_0x6512('0x5')]][_0x6512('0x16')]){queues[_0x486394['uniqueid']]['queuecallercomplete']=!![];queues[_0x486394[_0x6512('0x5')]][_0x6512('0x17')]=utils[_0x6512('0x12')]();queues[_0x486394[_0x6512('0x5')]][_0x6512('0x8')]=_0x6512('0x18');}utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x19'),_0x486394[_0x6512('0x5')],queues[_0x486394[_0x6512('0x5')]]['name'],queues[_0x486394[_0x6512('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x486394['uniqueid']]);}else if(queues[_0x486394[_0x6512('0x5')]][_0x6512('0xd')]){utils['info'](util['format'](_0x6512('0x1a'),_0x486394[_0x6512('0x5')],queues[_0x486394[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x486394[_0x6512('0x5')]][_0x6512('0xd')]));queues[queues[_0x486394['uniqueid']][_0x6512('0xd')]]=queues[_0x486394[_0x6512('0x5')]];queues[queues[_0x486394[_0x6512('0x5')]][_0x6512('0xd')]][_0x6512('0x1c')]=0x2;delete queues[_0x486394[_0x6512('0x5')]];}}}catch(_0x2a5cdf){utils[_0x6512('0x1d')](util[_0x6512('0x3')]('[%s][queues][hangup]',_0x486394[_0x6512('0x5')]),_0x2a5cdf);}};exports[_0x6512('0x1e')]=function(_0x2abb66){try{utils['debug'](util['format'](_0x6512('0x1f'),_0x2abb66[_0x6512('0x5')]),_0x2abb66);if(!_[_0x6512('0x20')](_0x2abb66[_0x6512('0x21')][_0x6512('0x22')])&&_0x2abb66[_0x6512('0x23')]['toUpperCase']()!==_0x6512('0x24')){if(!_[_0x6512('0x20')](queues[_0x2abb66[_0x6512('0x5')]])){queues[_0x2abb66['uniqueid']]['queuecallerabandon']=![];queues[_0x2abb66[_0x6512('0x5')]]['queuecallerabandonAt']=null;queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x16')]=!![];queues[_0x2abb66['uniqueid']]['queuecallerexitAt']=utils[_0x6512('0x12')]();queues[_0x2abb66[_0x6512('0x5')]]['queuecallerexitreason']=_0x2abb66['value'][_0x6512('0x25')]();utils['info'](util[_0x6512('0x3')](_0x6512('0x26'),_0x2abb66[_0x6512('0x5')],queues[_0x2abb66['uniqueid']]['name'],_0x2abb66[_0x6512('0x23')],queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x8')]));writeDB(queues[_0x2abb66[_0x6512('0x5')]]);}}else if(!_[_0x6512('0x20')](_0x2abb66[_0x6512('0x21')][_0x6512('0x27')])){if(!_[_0x6512('0x20')](queues[_0x2abb66[_0x6512('0x5')]])&&!queues[_0x2abb66['uniqueid']][_0x6512('0x15')]){queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x15')]=![];queues[_0x2abb66[_0x6512('0x5')]]['queuecallerabandonAt']=null;queues[_0x2abb66['uniqueid']][_0x6512('0x16')]=!![];queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x28')]=utils[_0x6512('0x12')]();queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x8')]='EXITWITHKEY';utils[_0x6512('0x2')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x2abb66['uniqueid'],queues[_0x2abb66['uniqueid']][_0x6512('0x1b')],_0x2abb66[_0x6512('0x23')],queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x8')]));}}}catch(_0x59b07e){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x1f'),_0x2abb66[_0x6512('0x5')]),_0x59b07e);}};exports[_0x6512('0x15')]=function(_0x3434a2){try{if(!_[_0x6512('0x20')](queues[_0x3434a2['uniqueid']])){utils[_0x6512('0xf')](util[_0x6512('0x3')]('[%s][queues][queuecallerabandon]',_0x3434a2['uniqueid']),_0x3434a2);queues[_0x3434a2[_0x6512('0x5')]][_0x6512('0x16')]=![];queues[_0x3434a2[_0x6512('0x5')]]['queuecallerexitAt']=null;queues[_0x3434a2[_0x6512('0x5')]][_0x6512('0x15')]=!![];queues[_0x3434a2[_0x6512('0x5')]]['queuecallerabandonAt']=utils[_0x6512('0x12')]();queues[_0x3434a2[_0x6512('0x5')]]['queuecallerexitreason']=_0x6512('0x29');utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x2a'),_0x3434a2[_0x6512('0x5')],queues[_0x3434a2[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x3434a2['uniqueid']][_0x6512('0x8')]));}}catch(_0x43293a){utils[_0x6512('0x1d')](util[_0x6512('0x3')]('[%s][queues][queuecallerabandon]',_0x3434a2[_0x6512('0x5')]),_0x43293a);}};exports[_0x6512('0x2b')]=function(_0x961f86){try{if(!_[_0x6512('0x20')](queues[_0x961f86['uniqueid']])){utils[_0x6512('0xf')](util['format'](_0x6512('0x2c'),_0x961f86[_0x6512('0x5')]),_0x961f86);utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x2d'),_0x961f86[_0x6512('0x5')],queues[_0x961f86['uniqueid']]['name'],_0x961f86['connectedlinenum'],_0x961f86[_0x6512('0x2e')]));queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x2b')]=!![];queues[_0x961f86['uniqueid']][_0x6512('0x14')]=utils[_0x6512('0x12')]();queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x2f')]=utils[_0x6512('0x30')](queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x14')],queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x31')]);queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x32')]=_0x961f86[_0x6512('0x32')];queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x33')]=_0x961f86['count'];queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x34')]=_0x961f86[_0x6512('0x34')];queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x2e')]=_0x961f86[_0x6512('0x2e')];}}catch(_0x5dabbe){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x2c'),_0x961f86['uniqueid']),_0x5dabbe);}};exports[_0x6512('0x35')]=function(_0x2fdbbb){try{if(!_[_0x6512('0x20')](queues[_0x2fdbbb[_0x6512('0x5')]])){utils['debug'](util['format'](_0x6512('0x36'),_0x2fdbbb['uniqueid']),_0x2fdbbb);utils['info'](util[_0x6512('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x2fdbbb['uniqueid'],queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x1b')],_0x2fdbbb[_0x6512('0x37')],_0x2fdbbb['destaccountcode']));queues[_0x2fdbbb[_0x6512('0x5')]]['queuecallerabandon']=![];queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x15')]=![];queues[_0x2fdbbb[_0x6512('0x5')]]['queuecallerabandonAt']=null;queues[_0x2fdbbb['uniqueid']]['queuecallerexit']=![];queues[_0x2fdbbb[_0x6512('0x5')]]['queuecallerexitreason']=null;queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x28')]=null;queues[_0x2fdbbb[_0x6512('0x5')]]['assigned']=!![];queues[_0x2fdbbb[_0x6512('0x5')]]['accountcode']=_0x2fdbbb[_0x6512('0x38')];queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x39')]=_0x2fdbbb[_0x6512('0x37')];}}catch(_0x54d49f){utils[_0x6512('0x1d')](util[_0x6512('0x3')]('[%s][queues][agentconnect]',_0x2fdbbb['uniqueid']),_0x54d49f);}};exports[_0x6512('0x3a')]=function(_0x1e9e4c){try{if(!_[_0x6512('0x20')](queues[_0x1e9e4c[_0x6512('0x5')]])){if(queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x14')]){utils['debug'](util[_0x6512('0x3')](_0x6512('0x3b'),_0x1e9e4c[_0x6512('0x5')]),_0x1e9e4c);queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x15')]=![];queues[_0x1e9e4c['uniqueid']]['queuecallerabandon']=![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x3c')]=null;queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x16')]=![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x28')]=null;queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x3d')]=!![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x39')]=_0x1e9e4c[_0x6512('0x37')];queues[_0x1e9e4c[_0x6512('0x5')]]['queuecallercomplete']=!![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x17')]=utils[_0x6512('0x12')]();if(_0x1e9e4c[_0x6512('0x3e')]==_0x6512('0x3f')){if(!queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x3f')]){queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x8')]=_0x6512('0x40');}}else{queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x8')]=_0x6512('0x41')+_0x1e9e4c[_0x6512('0x3e')][_0x6512('0x25')]();}utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x42'),_0x1e9e4c[_0x6512('0x5')],queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x1b')],_0x1e9e4c['membername'],queues[_0x1e9e4c['uniqueid']][_0x6512('0x8')]));writeDB(queues[_0x1e9e4c[_0x6512('0x5')]]);}}}catch(_0x1be2df){utils['error'](util[_0x6512('0x3')]('[%s][queues][agentcomplete]',_0x1e9e4c[_0x6512('0x5')]),_0x1be2df);}};exports['blindtransfer']=function(_0x3b7465){try{if(!_[_0x6512('0x20')](queues[_0x3b7465[_0x6512('0x43')]])){utils['debug'](util[_0x6512('0x3')]('[%s][queues][blindtransfer]',_0x3b7465['uniqueid']),_0x3b7465);queues[_0x3b7465[_0x6512('0x43')]][_0x6512('0x3f')]=!![];queues[_0x3b7465['transfereeuniqueid']][_0x6512('0x44')]=_0x6512('0x45');queues[_0x3b7465[_0x6512('0x43')]]['transferexten']=_0x3b7465['extension'];queues[_0x3b7465[_0x6512('0x43')]][_0x6512('0x46')]=_0x3b7465[_0x6512('0x43')];queues[_0x3b7465['transfereeuniqueid']]['queuecallerexitreason']=_0x6512('0x47');utils['info'](util['format']('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x3b7465[_0x6512('0x5')],queues[_0x3b7465[_0x6512('0x43')]][_0x6512('0x1b')],_0x3b7465['transfereeuniqueid'],_0x3b7465['extension']));}}catch(_0x45ffb0){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x48'),_0x3b7465[_0x6512('0x5')]),_0x45ffb0);}};exports[_0x6512('0x49')]=function(_0x5d977c){try{utils[_0x6512('0xf')](util[_0x6512('0x3')](_0x6512('0x4a'),_0x5d977c[_0x6512('0x4b')]),_0x5d977c);if(_0x5d977c['origtransfereruniqueid']==_0x5d977c[_0x6512('0x4c')]){if(!_[_0x6512('0x20')](queues[_0x5d977c[_0x6512('0x4d')]])){utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x4e'),_0x5d977c['origtransfereruniqueid'],queues[_0x5d977c['secondtransfererlinkedid']]['name'],_0x5d977c['origtransfererexten']));queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x3f')]=!![];queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x44')]=_0x6512('0x4f');queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x50')]=_0x5d977c['origtransfererexten'];queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x46')]=_0x5d977c[_0x6512('0x4b')];queues[_0x5d977c[_0x6512('0x4d')]]['queuecallerexitreason']=_0x6512('0x51');}if(!_[_0x6512('0x20')](queues[_0x5d977c[_0x6512('0x4c')]])){if(_0x5d977c[_0x6512('0x52')]&&queues[_0x5d977c[_0x6512('0x52')]]){queues[_0x5d977c[_0x6512('0x52')]][_0x6512('0x1c')]=0x1;queues[_0x5d977c[_0x6512('0x43')]]=_['clone'](queues[_0x5d977c['transfereelinkedid']]);queues[_0x5d977c['transfereeuniqueid']][_0x6512('0xd')]=_0x5d977c[_0x6512('0x53')];queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x1c')]=0x2;queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x54')]=queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x54')];queues[_0x5d977c['transfereeuniqueid']]['calleridname']=queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x55')];queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x31')]=utils[_0x6512('0x12')]();queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x14')]=utils['now']();queues[_0x5d977c['transfereeuniqueid']]['holdtime']=0x0;queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x56')]=0x0;utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x1b')],queues[_0x5d977c[_0x6512('0x43')]]['calleridnum'],queues[_0x5d977c['transfereeuniqueid']]['calleridname']));}else{utils['info'](util[_0x6512('0x3')](_0x6512('0x57'),_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x1b')],_0x5d977c[_0x6512('0x4d')]));queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0xd')]=_0x5d977c[_0x6512('0x4d')];}}}else if(_0x5d977c[_0x6512('0x58')]==_0x5d977c[_0x6512('0x4d')]){if(!_[_0x6512('0x20')](queues[_0x5d977c['origtransfererlinkedid']])){utils['info'](util[_0x6512('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x1b')],_0x5d977c[_0x6512('0x58')],_0x5d977c[_0x6512('0x59')]));queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x3f')]=!![];queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x44')]=_0x6512('0x4f');queues[_0x5d977c['origtransfererlinkedid']][_0x6512('0x50')]=_0x5d977c[_0x6512('0x59')];queues[_0x5d977c['origtransfererlinkedid']][_0x6512('0x46')]=_0x5d977c[_0x6512('0x58')];queues[_0x5d977c[_0x6512('0x4c')]]['queuecallerexitreason']=_0x6512('0x51');}if(!_[_0x6512('0x20')](queues[_0x5d977c['secondtransfererlinkedid']])){if(_0x5d977c['transfertargetlinkedid']&&queues[_0x5d977c['transfertargetlinkedid']]){queues[_0x5d977c[_0x6512('0x5a')]]['queuecallerenterreason']=0x1;queues[_0x5d977c[_0x6512('0x53')]]=_['clone'](queues[_0x5d977c[_0x6512('0x5a')]]);queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0xd')]=_0x5d977c['transfertargetuniqueid'];queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x1c')]=0x2;queues[_0x5d977c[_0x6512('0x53')]]['calleridnum']=queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x54')];queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x55')]=queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x55')];queues[_0x5d977c['transfertargetuniqueid']]['queuecallerjoinAt']=utils['now']();queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x14')]=utils[_0x6512('0x12')]();queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x2f')]=0x0;queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x56')]=0x0;utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x5b'),_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x1b')],queues[_0x5d977c[_0x6512('0x53')]]['transfereduniqueid'],queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x54')],queues[_0x5d977c[_0x6512('0x53')]]['calleridname']));}else{utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x57'),_0x5d977c['origtransfereruniqueid'],queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x1b')],_0x5d977c[_0x6512('0x4c')]));queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0xd')]=_0x5d977c[_0x6512('0x4c')];}}}}catch(_0x1e73a7){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x4a'),_0x5d977c[_0x6512('0x4b')]),_0x1e73a7);}};exports[_0x6512('0x5c')]=function(_0x22481a){try{if(!_[_0x6512('0x20')](queues[_0x22481a['uniqueid']])){utils['debug'](util[_0x6512('0x3')](_0x6512('0x5d'),_0x22481a[_0x6512('0x5')]),_0x22481a);queues[_0x22481a[_0x6512('0x5')]][_0x6512('0x5e')]=utils[_0x6512('0x12')]();utils[_0x6512('0x2')](util['format'](_0x6512('0x5f'),_0x22481a[_0x6512('0x5')],queues[_0x22481a[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x22481a[_0x6512('0x5')]][_0x6512('0x5e')]));}}catch(_0x87fbdb){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x5d'),_0x22481a['uniqueid']),_0x87fbdb);}};exports[_0x6512('0x60')]=function(_0x1cb02f){try{if(!_['isNil'](queues[_0x1cb02f[_0x6512('0x5')]])){if(!_[_0x6512('0x20')](queues[_0x1cb02f[_0x6512('0x5')]][_0x6512('0x5e')])){utils[_0x6512('0xf')](util[_0x6512('0x3')](_0x6512('0x61'),_0x1cb02f[_0x6512('0x5')]),_0x1cb02f);queues[_0x1cb02f['uniqueid']]['mohtime']+=utils['diffTime'](utils[_0x6512('0x12')](),queues[_0x1cb02f[_0x6512('0x5')]][_0x6512('0x5e')]);utils[_0x6512('0x2')](util[_0x6512('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x1cb02f['uniqueid'],queues[_0x1cb02f[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x1cb02f['uniqueid']][_0x6512('0x56')]));delete queues[_0x1cb02f['uniqueid']][_0x6512('0x5e')];}}}catch(_0x122f17){utils['error'](util[_0x6512('0x3')]('[%s][queues][musiconholdstop]',_0x1cb02f['uniqueid']),_0x122f17);}};
\ No newline at end of file
+var _0x1bc9=['count','connectedlinename','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','[%s][queues][agentcomplete]','reason','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfer','transfertype','BLIND','transferexten','extension','transferuniqueid','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%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','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','uniqueid','channel','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','then','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','error','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','queuecallerabandon','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','holdtime','diffTime'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x1bc9,0x1e3));var _0x91bc=function(_0x23d732,_0x2d91ad){_0x23d732=_0x23d732-0x0;var _0x2668f5=_0x1bc9[_0x23d732];return _0x2668f5;};'use strict';var _=require(_0x91bc('0x0'));var util=require(_0x91bc('0x1'));var utils=require(_0x91bc('0x2'));var queues={};function writeDB(_0x59aced){utils[_0x91bc('0x3')](util[_0x91bc('0x4')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x59aced[_0x91bc('0x5')],_0x59aced[_0x91bc('0x6')],_0x59aced[_0x91bc('0x7')],_0x59aced[_0x91bc('0x8')],_0x59aced[_0x91bc('0x9')],_0x59aced[_0x91bc('0xa')],_0x59aced[_0x91bc('0xb')]));if(_0x59aced[_0x91bc('0x7')]){utils['getVoiceQueueByName'](_0x59aced[_0x91bc('0x7')])[_0x91bc('0xc')](function(_0x4c1dee){if(_0x4c1dee){_0x59aced[_0x91bc('0xd')]=_0x4c1dee['type'];}utils['request'](_0x91bc('0xe'),_0x59aced);});}else{utils[_0x91bc('0xf')](_0x91bc('0xe'),_0x59aced);}if(_0x59aced['transfereduniqueid']){delete queues[_0x59aced[_0x91bc('0x10')]];}else{delete queues[_0x59aced[_0x91bc('0x5')]];}}exports[_0x91bc('0x11')]=function(_0x405919){try{utils[_0x91bc('0x12')](util[_0x91bc('0x4')](_0x91bc('0x13'),_0x405919[_0x91bc('0x5')]),_0x405919);utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x14'),_0x405919[_0x91bc('0x5')],_0x405919['queue'],_0x405919['position']));queues[_0x405919['uniqueid']]=_[_0x91bc('0x15')](_0x405919,{'originalposition':_0x405919[_0x91bc('0x16')],'queuecallerjoinAt':utils[_0x91bc('0x17')](),'mohtime':0x0});}catch(_0x19587d){utils['error'](util[_0x91bc('0x4')]('[%s][queues][queuecallerjoin]',_0x405919[_0x91bc('0x5')]),_0x19587d);}};exports['hangup']=function(_0x5561b0){try{if(!_[_0x91bc('0x18')](queues[_0x5561b0[_0x91bc('0x5')]])){utils['debug'](util[_0x91bc('0x4')](_0x91bc('0x19'),_0x5561b0[_0x91bc('0x5')]),_0x5561b0);if(queues[_0x5561b0[_0x91bc('0x5')]][_0x91bc('0x1a')]){if(!queues[_0x5561b0[_0x91bc('0x5')]]['queuecallerabandon']&&!queues[_0x5561b0[_0x91bc('0x5')]][_0x91bc('0x1b')]){queues[_0x5561b0['uniqueid']][_0x91bc('0x1c')]=!![];queues[_0x5561b0[_0x91bc('0x5')]][_0x91bc('0x1d')]=utils['now']();queues[_0x5561b0[_0x91bc('0x5')]][_0x91bc('0xb')]=_0x91bc('0x1e');}utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x1f'),_0x5561b0[_0x91bc('0x5')],queues[_0x5561b0[_0x91bc('0x5')]]['name'],queues[_0x5561b0['uniqueid']][_0x91bc('0xb')]));writeDB(queues[_0x5561b0['uniqueid']]);}else if(queues[_0x5561b0[_0x91bc('0x5')]][_0x91bc('0x10')]){utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x20'),_0x5561b0['uniqueid'],queues[_0x5561b0['uniqueid']][_0x91bc('0x21')],queues[_0x5561b0[_0x91bc('0x5')]][_0x91bc('0x10')]));queues[queues[_0x5561b0[_0x91bc('0x5')]]['transfereduniqueid']]=queues[_0x5561b0['uniqueid']];queues[queues[_0x5561b0['uniqueid']]['transfereduniqueid']][_0x91bc('0x22')]=0x2;delete queues[_0x5561b0[_0x91bc('0x5')]];}}}catch(_0x1629ab){utils[_0x91bc('0x23')](util[_0x91bc('0x4')]('[%s][queues][hangup]',_0x5561b0[_0x91bc('0x5')]),_0x1629ab);}};exports[_0x91bc('0x24')]=function(_0x454228){try{utils[_0x91bc('0x12')](util[_0x91bc('0x4')](_0x91bc('0x25'),_0x454228[_0x91bc('0x5')]),_0x454228);if(!_['isNil'](_0x454228[_0x91bc('0x26')][_0x91bc('0x27')])&&_0x454228[_0x91bc('0x28')][_0x91bc('0x29')]()!==_0x91bc('0x2a')){if(!_[_0x91bc('0x18')](queues[_0x454228['uniqueid']])){queues[_0x454228['uniqueid']]['queuecallerabandon']=![];queues[_0x454228[_0x91bc('0x5')]][_0x91bc('0x2b')]=null;queues[_0x454228['uniqueid']][_0x91bc('0x1b')]=!![];queues[_0x454228['uniqueid']]['queuecallerexitAt']=utils['now']();queues[_0x454228[_0x91bc('0x5')]]['queuecallerexitreason']=_0x454228['value'][_0x91bc('0x29')]();utils[_0x91bc('0x3')](util['format'](_0x91bc('0x2c'),_0x454228['uniqueid'],queues[_0x454228[_0x91bc('0x5')]]['name'],_0x454228[_0x91bc('0x28')],queues[_0x454228[_0x91bc('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x454228[_0x91bc('0x5')]]);}}else if(!_[_0x91bc('0x18')](_0x454228[_0x91bc('0x26')][_0x91bc('0x2d')])){if(!_[_0x91bc('0x18')](queues[_0x454228[_0x91bc('0x5')]])&&!queues[_0x454228['uniqueid']]['queuecallerabandon']){queues[_0x454228[_0x91bc('0x5')]]['queuecallerabandon']=![];queues[_0x454228[_0x91bc('0x5')]]['queuecallerabandonAt']=null;queues[_0x454228['uniqueid']][_0x91bc('0x1b')]=!![];queues[_0x454228[_0x91bc('0x5')]][_0x91bc('0x2e')]=utils[_0x91bc('0x17')]();queues[_0x454228[_0x91bc('0x5')]]['queuecallerexitreason']='EXITWITHKEY';utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x2f'),_0x454228[_0x91bc('0x5')],queues[_0x454228[_0x91bc('0x5')]][_0x91bc('0x21')],_0x454228['value'],queues[_0x454228[_0x91bc('0x5')]][_0x91bc('0xb')]));}}}catch(_0x28ab70){utils[_0x91bc('0x23')](util[_0x91bc('0x4')](_0x91bc('0x25'),_0x454228[_0x91bc('0x5')]),_0x28ab70);}};exports[_0x91bc('0x30')]=function(_0x2380d6){try{if(!_['isNil'](queues[_0x2380d6[_0x91bc('0x5')]])){utils[_0x91bc('0x12')](util[_0x91bc('0x4')](_0x91bc('0x31'),_0x2380d6[_0x91bc('0x5')]),_0x2380d6);queues[_0x2380d6[_0x91bc('0x5')]][_0x91bc('0x1b')]=![];queues[_0x2380d6[_0x91bc('0x5')]]['queuecallerexitAt']=null;queues[_0x2380d6['uniqueid']][_0x91bc('0x30')]=!![];queues[_0x2380d6[_0x91bc('0x5')]][_0x91bc('0x2b')]=utils[_0x91bc('0x17')]();queues[_0x2380d6['uniqueid']]['queuecallerexitreason']='ABANDONED';utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x32'),_0x2380d6[_0x91bc('0x5')],queues[_0x2380d6[_0x91bc('0x5')]]['name'],queues[_0x2380d6[_0x91bc('0x5')]][_0x91bc('0xb')]));}}catch(_0x35f12f){utils[_0x91bc('0x23')](util[_0x91bc('0x4')]('[%s][queues][queuecallerabandon]',_0x2380d6[_0x91bc('0x5')]),_0x35f12f);}};exports[_0x91bc('0x33')]=function(_0x44945a){try{if(!_['isNil'](queues[_0x44945a[_0x91bc('0x5')]])){utils[_0x91bc('0x12')](util['format'](_0x91bc('0x34'),_0x44945a[_0x91bc('0x5')]),_0x44945a);utils[_0x91bc('0x3')](util['format'](_0x91bc('0x35'),_0x44945a[_0x91bc('0x5')],queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x21')],_0x44945a[_0x91bc('0x36')],_0x44945a['connectedlinename']));queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x33')]=!![];queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x1a')]=utils[_0x91bc('0x17')]();queues[_0x44945a['uniqueid']][_0x91bc('0x37')]=utils[_0x91bc('0x38')](queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x1a')],queues[_0x44945a['uniqueid']]['queuecallerjoinAt']);queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x16')]=_0x44945a['position'];queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x39')]=_0x44945a[_0x91bc('0x39')];queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x36')]=_0x44945a[_0x91bc('0x36')];queues[_0x44945a[_0x91bc('0x5')]][_0x91bc('0x3a')]=_0x44945a[_0x91bc('0x3a')];}}catch(_0x5333f9){utils[_0x91bc('0x23')](util['format'](_0x91bc('0x34'),_0x44945a['uniqueid']),_0x5333f9);}};exports[_0x91bc('0x3b')]=function(_0x4915c4){try{if(!_[_0x91bc('0x18')](queues[_0x4915c4[_0x91bc('0x5')]])){utils['debug'](util[_0x91bc('0x4')](_0x91bc('0x3c'),_0x4915c4[_0x91bc('0x5')]),_0x4915c4);utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x3d'),_0x4915c4[_0x91bc('0x5')],queues[_0x4915c4['uniqueid']][_0x91bc('0x21')],_0x4915c4[_0x91bc('0x3e')],_0x4915c4['destaccountcode']));queues[_0x4915c4[_0x91bc('0x5')]][_0x91bc('0x30')]=![];queues[_0x4915c4[_0x91bc('0x5')]][_0x91bc('0x30')]=![];queues[_0x4915c4[_0x91bc('0x5')]]['queuecallerabandonAt']=null;queues[_0x4915c4[_0x91bc('0x5')]][_0x91bc('0x1b')]=![];queues[_0x4915c4[_0x91bc('0x5')]][_0x91bc('0xb')]=null;queues[_0x4915c4['uniqueid']][_0x91bc('0x2e')]=null;queues[_0x4915c4[_0x91bc('0x5')]][_0x91bc('0x3f')]=!![];queues[_0x4915c4[_0x91bc('0x5')]][_0x91bc('0xa')]=_0x4915c4[_0x91bc('0x40')];queues[_0x4915c4[_0x91bc('0x5')]]['lastAssignedTo']=_0x4915c4['membername'];}}catch(_0x42aa98){utils[_0x91bc('0x23')](util[_0x91bc('0x4')]('[%s][queues][agentconnect]',_0x4915c4[_0x91bc('0x5')]),_0x42aa98);}};exports['agentcomplete']=function(_0x560387){try{if(!_[_0x91bc('0x18')](queues[_0x560387[_0x91bc('0x5')]])){if(queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x1a')]){utils['debug'](util[_0x91bc('0x4')](_0x91bc('0x41'),_0x560387[_0x91bc('0x5')]),_0x560387);queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x30')]=![];queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x30')]=![];queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x2b')]=null;queues[_0x560387['uniqueid']][_0x91bc('0x1b')]=![];queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x2e')]=null;queues[_0x560387['uniqueid']][_0x91bc('0x3f')]=!![];queues[_0x560387['uniqueid']]['lastAssignedTo']=_0x560387[_0x91bc('0x3e')];queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x1c')]=!![];queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x1d')]=utils['now']();if(_0x560387[_0x91bc('0x42')]=='transfer'){if(!queues[_0x560387['uniqueid']]['transfer']){queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0xb')]=_0x91bc('0x43');}}else{queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0xb')]=_0x91bc('0x44')+_0x560387[_0x91bc('0x42')][_0x91bc('0x29')]();}utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x45'),_0x560387[_0x91bc('0x5')],queues[_0x560387[_0x91bc('0x5')]][_0x91bc('0x21')],_0x560387['membername'],queues[_0x560387[_0x91bc('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x560387[_0x91bc('0x5')]]);}}}catch(_0x27dd0d){utils[_0x91bc('0x23')](util[_0x91bc('0x4')](_0x91bc('0x41'),_0x560387['uniqueid']),_0x27dd0d);}};exports[_0x91bc('0x46')]=function(_0x3670db){try{if(!_[_0x91bc('0x18')](queues[_0x3670db[_0x91bc('0x47')]])){utils[_0x91bc('0x12')](util['format'](_0x91bc('0x48'),_0x3670db['uniqueid']),_0x3670db);queues[_0x3670db[_0x91bc('0x47')]][_0x91bc('0x49')]=!![];queues[_0x3670db[_0x91bc('0x47')]][_0x91bc('0x4a')]=_0x91bc('0x4b');queues[_0x3670db[_0x91bc('0x47')]][_0x91bc('0x4c')]=_0x3670db[_0x91bc('0x4d')];queues[_0x3670db[_0x91bc('0x47')]][_0x91bc('0x4e')]=_0x3670db[_0x91bc('0x47')];queues[_0x3670db[_0x91bc('0x47')]][_0x91bc('0xb')]='BLINDTRANSFER';utils[_0x91bc('0x3')](util[_0x91bc('0x4')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x3670db[_0x91bc('0x5')],queues[_0x3670db[_0x91bc('0x47')]]['name'],_0x3670db['transfereeuniqueid'],_0x3670db[_0x91bc('0x4d')]));}}catch(_0x3ed63e){utils[_0x91bc('0x23')](util['format'](_0x91bc('0x48'),_0x3670db[_0x91bc('0x5')]),_0x3ed63e);}};exports[_0x91bc('0x4f')]=function(_0xd7e8ce){try{utils['debug'](util['format'](_0x91bc('0x50'),_0xd7e8ce[_0x91bc('0x51')]),_0xd7e8ce);if(_0xd7e8ce[_0x91bc('0x51')]==_0xd7e8ce[_0x91bc('0x52')]){if(!_[_0x91bc('0x18')](queues[_0xd7e8ce[_0x91bc('0x53')]])){utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x54'),_0xd7e8ce[_0x91bc('0x51')],queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0x21')],_0xd7e8ce['origtransfererexten']));queues[_0xd7e8ce['secondtransfererlinkedid']][_0x91bc('0x49')]=!![];queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0x4a')]=_0x91bc('0x55');queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0x4c')]=_0xd7e8ce[_0x91bc('0x56')];queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0x4e')]=_0xd7e8ce[_0x91bc('0x51')];queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0xb')]=_0x91bc('0x57');}if(!_[_0x91bc('0x18')](queues[_0xd7e8ce['origtransfererlinkedid']])){if(_0xd7e8ce[_0x91bc('0x58')]&&queues[_0xd7e8ce[_0x91bc('0x58')]]){queues[_0xd7e8ce[_0x91bc('0x58')]]['queuecallerenterreason']=0x1;queues[_0xd7e8ce['transfereeuniqueid']]=_[_0x91bc('0x59')](queues[_0xd7e8ce[_0x91bc('0x58')]]);queues[_0xd7e8ce[_0x91bc('0x47')]]['transfereduniqueid']=_0xd7e8ce[_0x91bc('0x5a')];queues[_0xd7e8ce['transfereeuniqueid']][_0x91bc('0x22')]=0x2;queues[_0xd7e8ce[_0x91bc('0x47')]]['calleridnum']=queues[_0xd7e8ce['secondtransfererlinkedid']]['calleridnum'];queues[_0xd7e8ce[_0x91bc('0x47')]]['calleridname']=queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0x5b')];queues[_0xd7e8ce['transfereeuniqueid']][_0x91bc('0x5c')]=utils[_0x91bc('0x17')]();queues[_0xd7e8ce[_0x91bc('0x47')]][_0x91bc('0x1a')]=utils[_0x91bc('0x17')]();queues[_0xd7e8ce[_0x91bc('0x47')]][_0x91bc('0x37')]=0x0;queues[_0xd7e8ce[_0x91bc('0x47')]][_0x91bc('0x5d')]=0x0;utils['info'](util[_0x91bc('0x4')](_0x91bc('0x5e'),_0xd7e8ce['origtransfereruniqueid'],queues[_0xd7e8ce[_0x91bc('0x47')]][_0x91bc('0x21')],queues[_0xd7e8ce[_0x91bc('0x47')]][_0x91bc('0x9')],queues[_0xd7e8ce['transfereeuniqueid']][_0x91bc('0x5b')]));}else{utils[_0x91bc('0x3')](util['format'](_0x91bc('0x5f'),_0xd7e8ce[_0x91bc('0x51')],queues[_0xd7e8ce[_0x91bc('0x52')]]['name'],_0xd7e8ce['secondtransfererlinkedid']));queues[_0xd7e8ce[_0x91bc('0x52')]][_0x91bc('0x10')]=_0xd7e8ce['secondtransfererlinkedid'];}}}else if(_0xd7e8ce[_0x91bc('0x60')]==_0xd7e8ce[_0x91bc('0x53')]){if(!_[_0x91bc('0x18')](queues[_0xd7e8ce[_0x91bc('0x52')]])){utils[_0x91bc('0x3')](util['format'](_0x91bc('0x61'),_0xd7e8ce[_0x91bc('0x51')],queues[_0xd7e8ce['origtransfererlinkedid']]['name'],_0xd7e8ce['secondtransfereruniqueid'],_0xd7e8ce['secondtransfererexten']));queues[_0xd7e8ce[_0x91bc('0x52')]][_0x91bc('0x49')]=!![];queues[_0xd7e8ce['origtransfererlinkedid']][_0x91bc('0x4a')]=_0x91bc('0x55');queues[_0xd7e8ce['origtransfererlinkedid']][_0x91bc('0x4c')]=_0xd7e8ce[_0x91bc('0x62')];queues[_0xd7e8ce[_0x91bc('0x52')]][_0x91bc('0x4e')]=_0xd7e8ce['secondtransfereruniqueid'];queues[_0xd7e8ce[_0x91bc('0x52')]][_0x91bc('0xb')]=_0x91bc('0x57');}if(!_[_0x91bc('0x18')](queues[_0xd7e8ce[_0x91bc('0x53')]])){if(_0xd7e8ce[_0x91bc('0x63')]&&queues[_0xd7e8ce[_0x91bc('0x63')]]){queues[_0xd7e8ce['transfertargetlinkedid']][_0x91bc('0x22')]=0x1;queues[_0xd7e8ce['transfertargetuniqueid']]=_[_0x91bc('0x59')](queues[_0xd7e8ce[_0x91bc('0x63')]]);queues[_0xd7e8ce[_0x91bc('0x5a')]]['transfereduniqueid']=_0xd7e8ce['transfertargetuniqueid'];queues[_0xd7e8ce['transfertargetuniqueid']][_0x91bc('0x22')]=0x2;queues[_0xd7e8ce[_0x91bc('0x5a')]][_0x91bc('0x9')]=queues[_0xd7e8ce[_0x91bc('0x52')]][_0x91bc('0x9')];queues[_0xd7e8ce['transfertargetuniqueid']][_0x91bc('0x5b')]=queues[_0xd7e8ce[_0x91bc('0x52')]]['calleridname'];queues[_0xd7e8ce['transfertargetuniqueid']][_0x91bc('0x5c')]=utils[_0x91bc('0x17')]();queues[_0xd7e8ce[_0x91bc('0x5a')]][_0x91bc('0x1a')]=utils[_0x91bc('0x17')]();queues[_0xd7e8ce[_0x91bc('0x5a')]][_0x91bc('0x37')]=0x0;queues[_0xd7e8ce[_0x91bc('0x5a')]][_0x91bc('0x5d')]=0x0;utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x64'),_0xd7e8ce['origtransfereruniqueid'],queues[_0xd7e8ce[_0x91bc('0x5a')]]['name'],queues[_0xd7e8ce[_0x91bc('0x5a')]][_0x91bc('0x10')],queues[_0xd7e8ce[_0x91bc('0x5a')]][_0x91bc('0x9')],queues[_0xd7e8ce['transfertargetuniqueid']][_0x91bc('0x5b')]));}else{utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x5f'),_0xd7e8ce[_0x91bc('0x51')],queues[_0xd7e8ce['secondtransfererlinkedid']]['name'],_0xd7e8ce[_0x91bc('0x52')]));queues[_0xd7e8ce[_0x91bc('0x53')]][_0x91bc('0x10')]=_0xd7e8ce['origtransfererlinkedid'];}}}}catch(_0x387388){utils[_0x91bc('0x23')](util[_0x91bc('0x4')](_0x91bc('0x50'),_0xd7e8ce[_0x91bc('0x51')]),_0x387388);}};exports[_0x91bc('0x65')]=function(_0x17f37b){try{if(!_[_0x91bc('0x18')](queues[_0x17f37b[_0x91bc('0x5')]])){utils['debug'](util['format']('[%s][queues][musiconholdstart]',_0x17f37b[_0x91bc('0x5')]),_0x17f37b);queues[_0x17f37b[_0x91bc('0x5')]][_0x91bc('0x66')]=utils['now']();utils['info'](util[_0x91bc('0x4')](_0x91bc('0x67'),_0x17f37b['uniqueid'],queues[_0x17f37b[_0x91bc('0x5')]][_0x91bc('0x21')],queues[_0x17f37b['uniqueid']]['musiconholdstartAt']));}}catch(_0x4dc29e){utils['error'](util[_0x91bc('0x4')](_0x91bc('0x68'),_0x17f37b[_0x91bc('0x5')]),_0x4dc29e);}};exports[_0x91bc('0x69')]=function(_0x5af2e5){try{if(!_['isNil'](queues[_0x5af2e5[_0x91bc('0x5')]])){if(!_[_0x91bc('0x18')](queues[_0x5af2e5[_0x91bc('0x5')]][_0x91bc('0x66')])){utils[_0x91bc('0x12')](util['format'](_0x91bc('0x6a'),_0x5af2e5[_0x91bc('0x5')]),_0x5af2e5);queues[_0x5af2e5[_0x91bc('0x5')]][_0x91bc('0x5d')]+=utils[_0x91bc('0x38')](utils[_0x91bc('0x17')](),queues[_0x5af2e5[_0x91bc('0x5')]][_0x91bc('0x66')]);utils[_0x91bc('0x3')](util[_0x91bc('0x4')](_0x91bc('0x6b'),_0x5af2e5['uniqueid'],queues[_0x5af2e5['uniqueid']][_0x91bc('0x21')],queues[_0x5af2e5[_0x91bc('0x5')]][_0x91bc('0x5d')]));delete queues[_0x5af2e5[_0x91bc('0x5')]][_0x91bc('0x66')];}}}catch(_0x118898){utils[_0x91bc('0x23')](util['format'](_0x91bc('0x6a'),_0x5af2e5['uniqueid']),_0x118898);}};
\ No newline at end of file
index b7567cf..35fea3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f7f=['newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr','split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','format','[%s][recordings][writeDB]','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','debug','[%s][recordings][newchannel]','uniqueid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','[%s][recordings][newstate]','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','linkedid','channelstate','transfer','error','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','replace','.WAV','monitors','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0x1f7f,0xbd));var _0xf1f7=function(_0x89fffe,_0x1ef3ba){_0x89fffe=_0x89fffe-0x0;var _0x4a9fad=_0x1f7f[_0x89fffe];return _0x4a9fad;};'use strict';var _=require(_0xf1f7('0x0'));var util=require('util');var utils=require('./utils');var recordings={};function writeDB(_0x298324){utils['info'](util[_0xf1f7('0x1')](_0xf1f7('0x2'),_0x298324['uniqueid']));if(_0x298324[_0xf1f7('0x3')]){utils[_0xf1f7('0x4')](_0x298324['accountcode'])[_0xf1f7('0x5')](function(_0x3dd367){if(_0x3dd367){_0x298324[_0xf1f7('0x6')]=_0x3dd367[_0xf1f7('0x7')];_0x298324[_0xf1f7('0x8')]=_0x3dd367['id'];}utils[_0xf1f7('0x9')](_0xf1f7('0xa'),_0x298324);});}else{utils['request'](_0xf1f7('0xa'),_0x298324);}}exports['newchannel']=function(_0x25bd81){try{utils[_0xf1f7('0xb')](util['format'](_0xf1f7('0xc'),_0x25bd81[_0xf1f7('0xd')]),_0x25bd81);if(_0x25bd81[_0xf1f7('0xd')]==_0x25bd81['linkedid']){utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')](_0xf1f7('0xf'),_0x25bd81[_0xf1f7('0xd')],_0x25bd81[_0xf1f7('0x10')],_0x25bd81[_0xf1f7('0x11')]));recordings[_0x25bd81[_0xf1f7('0xd')]]={'uniqueid':_0x25bd81[_0xf1f7('0xd')],'accountcode':_0x25bd81[_0xf1f7('0x3')],'exten':_0x25bd81['exten'],'context':_0x25bd81['context'],'channel':_0x25bd81[_0xf1f7('0x12')],'monitors':[]};}}catch(_0x7c2687){utils['error'](util[_0xf1f7('0x1')](_0xf1f7('0xc'),_0x25bd81[_0xf1f7('0xd')]),_0x7c2687);}};exports[_0xf1f7('0x13')]=function(_0x45e03f){try{utils['debug'](util[_0xf1f7('0x1')](_0xf1f7('0x14'),_0x45e03f['uniqueid']),_0x45e03f);if(!_['isNil'](recordings[_0x45e03f[_0xf1f7('0xd')]])&&_0x45e03f['channelstate']==0x6){utils['info'](util['format'](_0xf1f7('0x15'),_0x45e03f[_0xf1f7('0xd')],_0x45e03f[_0xf1f7('0x10')],_0x45e03f[_0xf1f7('0x12')]));}else if(!_[_0xf1f7('0x16')](recordings[_0x45e03f[_0xf1f7('0x17')]])&&_0x45e03f[_0xf1f7('0x18')]==0x6&&_0x45e03f['context']!=_0xf1f7('0x19')){utils['info'](util[_0xf1f7('0x1')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x45e03f['uniqueid'],_0x45e03f[_0xf1f7('0x17')],_0x45e03f[_0xf1f7('0x10')],_0x45e03f['channel']));recordings[_0x45e03f[_0xf1f7('0x17')]][_0xf1f7('0x3')]=_0x45e03f['accountcode'];}}catch(_0x504a22){utils[_0xf1f7('0x1a')](util['format'](_0xf1f7('0x14'),_0x45e03f[_0xf1f7('0xd')]),_0x504a22);}};exports['varset']=function(_0x47a1c1){try{if(!_[_0xf1f7('0x16')](_0x47a1c1[_0xf1f7('0x1b')])&&!_[_0xf1f7('0x16')](_0x47a1c1[_0xf1f7('0x1b')]['mixmonitor_filename'])){utils['debug'](util[_0xf1f7('0x1')](_0xf1f7('0x1c'),_0x47a1c1['uniqueid']),_0x47a1c1);utils[_0xf1f7('0xe')](util['format'](_0xf1f7('0x1d'),_0x47a1c1['uniqueid'],_0x47a1c1[_0xf1f7('0x1b')],_0x47a1c1[_0xf1f7('0x1e')]));if(_[_0xf1f7('0x1f')](_0x47a1c1[_0xf1f7('0x1e')],'.wav49')){_0x47a1c1[_0xf1f7('0x1e')]=_0x47a1c1[_0xf1f7('0x1e')][_0xf1f7('0x20')]('.wav49',_0xf1f7('0x21'));}if(recordings[_0x47a1c1[_0xf1f7('0x17')]]){var _0x4674ba=_['find'](recordings[_0x47a1c1[_0xf1f7('0x17')]][_0xf1f7('0x22')],{'value':_0x47a1c1[_0xf1f7('0x1e')]});if(_[_0xf1f7('0x16')](_0x4674ba)){recordings[_0x47a1c1[_0xf1f7('0x17')]][_0xf1f7('0x22')]['push']({'value':_0x47a1c1[_0xf1f7('0x1e')]});}}}}catch(_0x2c183e){utils['error'](util[_0xf1f7('0x1')]('[%s][recordings][varset]',_0x47a1c1[_0xf1f7('0xd')]),_0x2c183e);}};exports[_0xf1f7('0x23')]=function(_0x2099d9){try{if(!_[_0xf1f7('0x16')](recordings[_0x2099d9[_0xf1f7('0xd')]])){utils[_0xf1f7('0xb')](util['format'](_0xf1f7('0x24'),_0x2099d9[_0xf1f7('0xd')]),_0x2099d9);utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')](_0xf1f7('0x25'),_0x2099d9[_0xf1f7('0xd')],_0x2099d9[_0xf1f7('0x26')],_0x2099d9[_0xf1f7('0x27')],_0x2099d9[_0xf1f7('0x28')]));recordings[_0x2099d9[_0xf1f7('0xd')]]['calleridnum']=_0x2099d9[_0xf1f7('0x26')];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x27')]=_0x2099d9[_0xf1f7('0x27')];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x29')]=_0x2099d9[_0xf1f7('0x29')];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x2a')]=_0x2099d9[_0xf1f7('0x2a')];if(recordings[_0x2099d9['uniqueid']][_0xf1f7('0x2b')]==_0xf1f7('0x2c')&&recordings[_0x2099d9[_0xf1f7('0xd')]]['accountcode']){recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x29')]=recordings[_0x2099d9[_0xf1f7('0xd')]]['accountcode'];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x2a')]='';}recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x22')][_0xf1f7('0x2d')](function(_0x516e85){var _0x80b07b=_[_0xf1f7('0x2e')](recordings[_0x2099d9[_0xf1f7('0xd')]]);_0x80b07b[_0xf1f7('0x1e')]=_0x516e85[_0xf1f7('0x1e')];writeDB(_0x80b07b);});delete recordings[_0x2099d9[_0xf1f7('0xd')]];}}catch(_0x533aaa){utils['error'](util['format'](_0xf1f7('0x24'),_0x2099d9[_0xf1f7('0xd')]),_0x533aaa);}};exports[_0xf1f7('0x2f')]=function(_0x4657c7){try{if(!_[_0xf1f7('0x16')](recordings[_0x4657c7[_0xf1f7('0xd')]])){utils[_0xf1f7('0xb')](util[_0xf1f7('0x1')](_0xf1f7('0x30'),_0x4657c7[_0xf1f7('0xd')]),_0x4657c7);utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')](_0xf1f7('0x31'),_0x4657c7[_0xf1f7('0xd')],_0x4657c7[_0xf1f7('0x32')],_0x4657c7['appdata']));if(_0x4657c7[_0xf1f7('0x32')]['toLowerCase']()=='set'&&_['startsWith'](_0x4657c7[_0xf1f7('0x33')][_0xf1f7('0x34')](),_0xf1f7('0x35'))){var _0x4e40c9=_0x4657c7[_0xf1f7('0x33')][_0xf1f7('0x36')]('=');var _0x3b8612=_0x4e40c9[0x0]['substring'](_0x4e40c9[0x0][_0xf1f7('0x37')]('(')+0x1,_0x4e40c9[0x0][_0xf1f7('0x37')](')'));var _0x327ef8=_0x4e40c9[0x1];recordings[_0x4657c7[_0xf1f7('0xd')]][_0x3b8612]=_0x327ef8;}}}catch(_0x4c7ad8){utils['error'](util[_0xf1f7('0x1')](_0xf1f7('0x30'),_0x4657c7[_0xf1f7('0xd')]),_0x4c7ad8);}};exports[_0xf1f7('0x38')]=function(_0x254d1a){try{if(!_[_0xf1f7('0x16')](recordings[_0x254d1a[_0xf1f7('0xd')]])){utils[_0xf1f7('0xb')](util[_0xf1f7('0x1')](_0xf1f7('0x39'),_0x254d1a[_0xf1f7('0xd')]),_0x254d1a);utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x254d1a[_0xf1f7('0xd')],_0x254d1a[_0xf1f7('0x3a')]));recordings[_0x254d1a[_0xf1f7('0xd')]][_0xf1f7('0x3a')]=_0x254d1a[_0xf1f7('0x3a')];}}catch(_0x345936){utils['error'](util[_0xf1f7('0x1')](_0xf1f7('0x39'),_0x254d1a['uniqueid']),_0x345936);}};
\ No newline at end of file
+var _0x7413=['membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][newstate]','varset','variable','mixmonitor_filename','[%s][recordings][varset]','value','endsWith','.wav49','.WAV','find','monitors','hangup','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','cdr','split','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','queue','lodash','./utils','format','[%s][recordings][writeDB]','uniqueid','getUserByInternal','accountcode','then'];(function(_0x389af3,_0x30a76a){var _0x199d87=function(_0x126178){while(--_0x126178){_0x389af3['push'](_0x389af3['shift']());}};_0x199d87(++_0x30a76a);}(_0x7413,0x166));var _0x3741=function(_0x357e02,_0x438378){_0x357e02=_0x357e02-0x0;var _0x5b4f06=_0x7413[_0x357e02];return _0x5b4f06;};'use strict';var _=require(_0x3741('0x0'));var util=require('util');var utils=require(_0x3741('0x1'));var recordings={};function writeDB(_0x437ee1){utils['info'](util[_0x3741('0x2')](_0x3741('0x3'),_0x437ee1[_0x3741('0x4')]));if(_0x437ee1['accountcode']){utils[_0x3741('0x5')](_0x437ee1[_0x3741('0x6')])[_0x3741('0x7')](function(_0x303d77){if(_0x303d77){_0x437ee1[_0x3741('0x8')]=_0x303d77[_0x3741('0x9')];_0x437ee1[_0x3741('0xa')]=_0x303d77['id'];}utils[_0x3741('0xb')]('CreateVoiceRecording',_0x437ee1);});}else{utils[_0x3741('0xb')](_0x3741('0xc'),_0x437ee1);}}exports[_0x3741('0xd')]=function(_0x4596ba){try{utils[_0x3741('0xe')](util[_0x3741('0x2')](_0x3741('0xf'),_0x4596ba['uniqueid']),_0x4596ba);if(_0x4596ba[_0x3741('0x4')]==_0x4596ba[_0x3741('0x10')]){utils[_0x3741('0x11')](util[_0x3741('0x2')](_0x3741('0x12'),_0x4596ba[_0x3741('0x4')],_0x4596ba[_0x3741('0x13')],_0x4596ba[_0x3741('0x14')]));recordings[_0x4596ba['uniqueid']]={'uniqueid':_0x4596ba['uniqueid'],'accountcode':_0x4596ba['accountcode'],'exten':_0x4596ba['exten'],'context':_0x4596ba[_0x3741('0x13')],'channel':_0x4596ba[_0x3741('0x15')],'monitors':[]};}}catch(_0x1ebe6b){utils[_0x3741('0x16')](util[_0x3741('0x2')](_0x3741('0xf'),_0x4596ba[_0x3741('0x4')]),_0x1ebe6b);}};exports['newstate']=function(_0x227fb7){try{utils[_0x3741('0xe')](util['format']('[%s][recordings][newstate]',_0x227fb7[_0x3741('0x4')]),_0x227fb7);if(!_[_0x3741('0x17')](recordings[_0x227fb7[_0x3741('0x4')]])&&_0x227fb7[_0x3741('0x18')]==0x6){utils['info'](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x227fb7['uniqueid'],_0x227fb7['context'],_0x227fb7[_0x3741('0x15')]));}else if(!_['isNil'](recordings[_0x227fb7['linkedid']])&&_0x227fb7[_0x3741('0x18')]==0x6&&_0x227fb7[_0x3741('0x13')]!=_0x3741('0x19')){utils[_0x3741('0x11')](util[_0x3741('0x2')](_0x3741('0x1a'),_0x227fb7['uniqueid'],_0x227fb7[_0x3741('0x10')],_0x227fb7[_0x3741('0x13')],_0x227fb7['channel']));recordings[_0x227fb7['linkedid']]['accountcode']=_0x227fb7[_0x3741('0x6')];}}catch(_0x1127e0){utils['error'](util[_0x3741('0x2')](_0x3741('0x1b'),_0x227fb7['uniqueid']),_0x1127e0);}};exports[_0x3741('0x1c')]=function(_0x21089a){try{if(!_[_0x3741('0x17')](_0x21089a[_0x3741('0x1d')])&&!_['isNil'](_0x21089a[_0x3741('0x1d')][_0x3741('0x1e')])){utils[_0x3741('0xe')](util[_0x3741('0x2')](_0x3741('0x1f'),_0x21089a[_0x3741('0x4')]),_0x21089a);utils[_0x3741('0x11')](util[_0x3741('0x2')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x21089a['uniqueid'],_0x21089a[_0x3741('0x1d')],_0x21089a[_0x3741('0x20')]));if(_[_0x3741('0x21')](_0x21089a[_0x3741('0x20')],_0x3741('0x22'))){_0x21089a[_0x3741('0x20')]=_0x21089a['value']['replace'](_0x3741('0x22'),_0x3741('0x23'));}if(recordings[_0x21089a[_0x3741('0x10')]]){var _0x64d716=_[_0x3741('0x24')](recordings[_0x21089a['linkedid']][_0x3741('0x25')],{'value':_0x21089a[_0x3741('0x20')]});if(_[_0x3741('0x17')](_0x64d716)){recordings[_0x21089a['linkedid']][_0x3741('0x25')]['push']({'value':_0x21089a[_0x3741('0x20')]});}}}}catch(_0x17bf77){utils[_0x3741('0x16')](util[_0x3741('0x2')]('[%s][recordings][varset]',_0x21089a[_0x3741('0x4')]),_0x17bf77);}};exports[_0x3741('0x26')]=function(_0x3f2f34){try{if(!_[_0x3741('0x17')](recordings[_0x3f2f34['uniqueid']])){utils[_0x3741('0xe')](util[_0x3741('0x2')](_0x3741('0x27'),_0x3f2f34[_0x3741('0x4')]),_0x3f2f34);utils[_0x3741('0x11')](util[_0x3741('0x2')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x3f2f34[_0x3741('0x4')],_0x3f2f34[_0x3741('0x28')],_0x3f2f34[_0x3741('0x29')],_0x3f2f34[_0x3741('0x2a')]));recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x28')]=_0x3f2f34[_0x3741('0x28')];recordings[_0x3f2f34[_0x3741('0x4')]]['calleridname']=_0x3f2f34['calleridname'];recordings[_0x3f2f34['uniqueid']][_0x3741('0x2b')]=_0x3f2f34[_0x3741('0x2b')];recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x2c')]=_0x3f2f34[_0x3741('0x2c')];if(recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x2d')]==_0x3741('0x2e')&&recordings[_0x3f2f34['uniqueid']][_0x3741('0x6')]){recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x2b')]=recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x6')];recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x2c')]='';}recordings[_0x3f2f34[_0x3741('0x4')]][_0x3741('0x25')][_0x3741('0x2f')](function(_0x23676e){var _0x327a0d=_['clone'](recordings[_0x3f2f34[_0x3741('0x4')]]);_0x327a0d[_0x3741('0x20')]=_0x23676e['value'];writeDB(_0x327a0d);});delete recordings[_0x3f2f34['uniqueid']];}}catch(_0xe2dee2){utils[_0x3741('0x16')](util[_0x3741('0x2')]('[%s][recordings][hangup]',_0x3f2f34[_0x3741('0x4')]),_0xe2dee2);}};exports[_0x3741('0x30')]=function(_0x40b1ff){try{if(!_['isNil'](recordings[_0x40b1ff['uniqueid']])){utils['debug'](util[_0x3741('0x2')](_0x3741('0x31'),_0x40b1ff[_0x3741('0x4')]),_0x40b1ff);utils['info'](util[_0x3741('0x2')](_0x3741('0x32'),_0x40b1ff[_0x3741('0x4')],_0x40b1ff['application'],_0x40b1ff[_0x3741('0x33')]));if(_0x40b1ff[_0x3741('0x34')][_0x3741('0x35')]()==_0x3741('0x36')&&_['startsWith'](_0x40b1ff['appdata'][_0x3741('0x35')](),_0x3741('0x37'))){var _0x53c762=_0x40b1ff[_0x3741('0x33')][_0x3741('0x38')]('=');var _0x2b8153=_0x53c762[0x0][_0x3741('0x39')](_0x53c762[0x0][_0x3741('0x3a')]('(')+0x1,_0x53c762[0x0][_0x3741('0x3a')](')'));var _0x1d03eb=_0x53c762[0x1];recordings[_0x40b1ff[_0x3741('0x4')]][_0x2b8153]=_0x1d03eb;}}}catch(_0x278edc){utils[_0x3741('0x16')](util[_0x3741('0x2')](_0x3741('0x31'),_0x40b1ff[_0x3741('0x4')]),_0x278edc);}};exports['queuecallerjoin']=function(_0x1e2e65){try{if(!_[_0x3741('0x17')](recordings[_0x1e2e65[_0x3741('0x4')]])){utils[_0x3741('0xe')](util['format'](_0x3741('0x3b'),_0x1e2e65['uniqueid']),_0x1e2e65);utils[_0x3741('0x11')](util[_0x3741('0x2')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x1e2e65[_0x3741('0x4')],_0x1e2e65[_0x3741('0x3c')]));recordings[_0x1e2e65[_0x3741('0x4')]][_0x3741('0x3c')]=_0x1e2e65[_0x3741('0x3c')];}}catch(_0x68f7df){utils[_0x3741('0x16')](util[_0x3741('0x2')](_0x3741('0x3b'),_0x1e2e65['uniqueid']),_0x68f7df);}};
\ No newline at end of file
index 5afb78f..f65fbee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29e7=['transfereechannel','assign','transfertargetchannel','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','request','CreateVoiceTransferReport','blinds','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','error','attendedtransfer','debug','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','isNil'];(function(_0x5c436e,_0x145ed8){var _0x51d618=function(_0x377bdb){while(--_0x377bdb){_0x5c436e['push'](_0x5c436e['shift']());}};_0x51d618(++_0x145ed8);}(_0x29e7,0x11e));var _0x729e=function(_0x20afc3,_0x2f189a){_0x20afc3=_0x20afc3-0x0;var _0x4cbb43=_0x29e7[_0x20afc3];return _0x4cbb43;};'use strict';var _=require(_0x729e('0x0'));var util=require(_0x729e('0x1'));var utils=require('./utils');function writeDB(_0x5836d0){utils[_0x729e('0x2')](util[_0x729e('0x3')](_0x729e('0x4'),_0x5836d0[_0x729e('0x5')]===_0x729e('0x6')?_0x5836d0[_0x729e('0x7')]:_0x5836d0['uniqueid'],_0x5836d0[_0x729e('0x5')]));utils[_0x729e('0x8')](_0x729e('0x9'),_0x5836d0);}exports[_0x729e('0xa')]={};exports['blindtransfer']=function(_0x7534fa){try{utils['debug'](util['format'](_0x729e('0xb'),_0x7534fa[_0x729e('0xc')]),_0x7534fa);utils[_0x729e('0x2')](util[_0x729e('0x3')](_0x729e('0xd'),_0x7534fa[_0x729e('0xc')],_0x7534fa[_0x729e('0xe')],_0x7534fa['transferercalleridname'],_0x7534fa[_0x729e('0xf')],_0x7534fa[_0x729e('0x10')]));_0x7534fa[_0x729e('0x5')]='blind';exports[_0x729e('0xa')][_0x7534fa[_0x729e('0x11')]]=_0x7534fa;writeDB(_0x7534fa);}catch(_0x256dfa){utils[_0x729e('0x12')](util[_0x729e('0x3')](_0x729e('0xb'),_0x7534fa[_0x729e('0xc')]),_0x256dfa);}};exports[_0x729e('0x13')]=function(_0x22d6c5){try{utils[_0x729e('0x14')](util[_0x729e('0x3')](_0x729e('0x15'),_0x22d6c5[_0x729e('0x7')]),_0x22d6c5);utils['info'](util['format'](_0x729e('0x16'),_0x22d6c5[_0x729e('0x7')],_0x22d6c5['origtransferercalleridnum'],_0x22d6c5[_0x729e('0x17')],_0x22d6c5[_0x729e('0x18')],_0x22d6c5[_0x729e('0x19')]));_0x22d6c5=_['assign'](_0x22d6c5,{'transfererchannel':_0x22d6c5[_0x729e('0x1a')],'transferercalleridnum':_0x22d6c5[_0x729e('0x1b')],'transferercalleridname':_0x22d6c5[_0x729e('0x17')],'transfererconnectedlinenum':_0x22d6c5[_0x729e('0x1c')],'transfererconnectedlinename':_0x22d6c5['secondtransfererconnectedlinename'],'transfereraccountcode':_0x22d6c5[_0x729e('0x1d')],'transferercontext':_0x22d6c5[_0x729e('0x1e')],'transfererexten':_0x22d6c5[_0x729e('0x1f')],'transfererlinkedid':_0x22d6c5[_0x729e('0x20')],'context':_0x22d6c5['origtransferercontext'],'extension':_0x22d6c5['origtransfererexten'],'type':_0x729e('0x6')});if(_[_0x729e('0x21')](_0x22d6c5[_0x729e('0x22')])){_0x22d6c5=_[_0x729e('0x23')](_0x22d6c5,{'transfereechannel':_0x22d6c5[_0x729e('0x24')],'transfereecalleridnum':_0x22d6c5[_0x729e('0x18')],'transfereecalleridname':_0x22d6c5[_0x729e('0x19')],'transfereeconnectedlinenum':_0x22d6c5['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x22d6c5['transfertargetconnectedlinename'],'transfereeaccountcode':_0x22d6c5[_0x729e('0x25')],'transfereecontext':_0x22d6c5['transfertargetcontext'],'transfereeexten':_0x22d6c5[_0x729e('0x26')],'transfereelinkedid':_0x22d6c5[_0x729e('0x27')]});}writeDB(_0x22d6c5);}catch(_0x13dc8c){utils[_0x729e('0x12')](util['format']('[%s][transfers][attendedtransfer]',_0x22d6c5[_0x729e('0x7')]),_0x13dc8c);}};
\ No newline at end of file
+var _0x9493=['transfereecalleridname','blind','error','attendedtransfer','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','attended','assign','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','[%s][transfers][attendedtransfer]','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','uniqueid','type','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum'];(function(_0x3c984e,_0x5bb8b3){var _0x59ccff=function(_0x45daea){while(--_0x45daea){_0x3c984e['push'](_0x3c984e['shift']());}};_0x59ccff(++_0x5bb8b3);}(_0x9493,0x6a));var _0x3949=function(_0x733f5a,_0x43ab6e){_0x733f5a=_0x733f5a-0x0;var _0x571314=_0x9493[_0x733f5a];return _0x571314;};'use strict';var _=require(_0x3949('0x0'));var util=require(_0x3949('0x1'));var utils=require('./utils');function writeDB(_0x134596){utils[_0x3949('0x2')](util[_0x3949('0x3')](_0x3949('0x4'),_0x134596['type']==='attended'?_0x134596['origtransfereruniqueid']:_0x134596[_0x3949('0x5')],_0x134596[_0x3949('0x6')]));utils[_0x3949('0x7')](_0x3949('0x8'),_0x134596);}exports[_0x3949('0x9')]={};exports[_0x3949('0xa')]=function(_0x49f116){try{utils[_0x3949('0xb')](util[_0x3949('0x3')](_0x3949('0xc'),_0x49f116[_0x3949('0x5')]),_0x49f116);utils[_0x3949('0x2')](util[_0x3949('0x3')](_0x3949('0xd'),_0x49f116['uniqueid'],_0x49f116[_0x3949('0xe')],_0x49f116[_0x3949('0xf')],_0x49f116[_0x3949('0x10')],_0x49f116[_0x3949('0x11')]));_0x49f116['type']=_0x3949('0x12');exports['blinds'][_0x49f116['transfereruniqueid']]=_0x49f116;writeDB(_0x49f116);}catch(_0x31b8a3){utils[_0x3949('0x13')](util[_0x3949('0x3')](_0x3949('0xc'),_0x49f116['uniqueid']),_0x31b8a3);}};exports[_0x3949('0x14')]=function(_0x155676){try{utils[_0x3949('0xb')](util[_0x3949('0x3')]('[%s][transfers][attendedtransfer]',_0x155676[_0x3949('0x15')]),_0x155676);utils[_0x3949('0x2')](util[_0x3949('0x3')](_0x3949('0x16'),_0x155676[_0x3949('0x15')],_0x155676[_0x3949('0x17')],_0x155676['origtransferercalleridname'],_0x155676[_0x3949('0x18')],_0x155676[_0x3949('0x19')]));_0x155676=_['assign'](_0x155676,{'transfererchannel':_0x155676[_0x3949('0x1a')],'transferercalleridnum':_0x155676[_0x3949('0x17')],'transferercalleridname':_0x155676['origtransferercalleridname'],'transfererconnectedlinenum':_0x155676[_0x3949('0x1b')],'transfererconnectedlinename':_0x155676[_0x3949('0x1c')],'transfereraccountcode':_0x155676['origtransfereraccountcode'],'transferercontext':_0x155676[_0x3949('0x1d')],'transfererexten':_0x155676[_0x3949('0x1e')],'transfererlinkedid':_0x155676[_0x3949('0x1f')],'context':_0x155676[_0x3949('0x20')],'extension':_0x155676[_0x3949('0x21')],'type':_0x3949('0x22')});if(_['isNil'](_0x155676['transfereechannel'])){_0x155676=_[_0x3949('0x23')](_0x155676,{'transfereechannel':_0x155676['transfertargetchannel'],'transfereecalleridnum':_0x155676[_0x3949('0x18')],'transfereecalleridname':_0x155676[_0x3949('0x19')],'transfereeconnectedlinenum':_0x155676[_0x3949('0x24')],'transfereeconnectedlinename':_0x155676[_0x3949('0x25')],'transfereeaccountcode':_0x155676[_0x3949('0x26')],'transfereecontext':_0x155676['transfertargetcontext'],'transfereeexten':_0x155676[_0x3949('0x27')],'transfereelinkedid':_0x155676['transfertargetlinkedid']});}writeDB(_0x155676);}catch(_0x323878){utils['error'](util[_0x3949('0x3')](_0x3949('0x28'),_0x155676[_0x3949('0x15')]),_0x323878);}};
\ No newline at end of file
index 2b30de3..a8179df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbddb=['diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','addTime','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','seconds'];(function(_0x28f153,_0x4852ed){var _0x56b861=function(_0x3cbf02){while(--_0x3cbf02){_0x28f153['push'](_0x28f153['shift']());}};_0x56b861(++_0x4852ed);}(_0xbddb,0x1bf));var _0xbbdd=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbddb[_0x3ab51d];return _0x29a04e;};'use strict';var BPromise=require(_0xbbdd('0x0'));var jayson=require(_0xbbdd('0x1'));var moment=require(_0xbbdd('0x2'));var util=require(_0xbbdd('0x3'));var client=jayson[_0xbbdd('0x4')][_0xbbdd('0x5')]({'port':0x2329});var logger=require(_0xbbdd('0x6'))(_0xbbdd('0x7'));exports[_0xbbdd('0x8')]=function(_0x3268c5,_0xbb768d){logger['info'](_0x3268c5,_0xbb768d?util[_0xbbdd('0x9')](_0xbb768d,{'showHidden':![],'depth':null}):'');};exports[_0xbbdd('0xa')]=function(_0x40d924,_0x3c61fb){logger[_0xbbdd('0xa')](_0x40d924,_0x3c61fb?util[_0xbbdd('0x9')](_0x3c61fb,{'showHidden':![],'depth':null}):'');};exports[_0xbbdd('0xb')]=function(_0x22f744,_0x2cbdb7){logger[_0xbbdd('0xb')](_0x22f744,_0x2cbdb7?util['inspect'](_0x2cbdb7,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x4c877b,_0x22b8ff){return client[_0xbbdd('0xc')](_0x4c877b,{'body':_0x22b8ff})[_0xbbdd('0xd')](function(_0x53311b){logger[_0xbbdd('0xa')](_0xbbdd('0xe'),_0x4c877b,_0x53311b?util['inspect'](_0x53311b,{'showHidden':![],'depth':null}):'');})[_0xbbdd('0xf')](function(_0x12aeb1){logger[_0xbbdd('0xb')](_0xbbdd('0xe'),_0x4c877b,_0x12aeb1?util[_0xbbdd('0x9')](_0x12aeb1,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2a6640){return client[_0xbbdd('0xc')](_0xbbdd('0x10'),{'options':{'raw':!![],'attributes':['id',_0xbbdd('0x11'),_0xbbdd('0x12'),'interface'],'where':_0x2a6640,'limit':0x1}})[_0xbbdd('0xd')](function(_0x351e28){logger['debug']('[utils][getUser]\x20where:%s',JSON[_0xbbdd('0x13')](_0x2a6640),_0x351e28?util[_0xbbdd('0x9')](_0x351e28,{'showHidden':![],'depth':null}):'');return _0x351e28[_0xbbdd('0x14')]['length']?_0x351e28[_0xbbdd('0x14')][0x0]:null;});}exports[_0xbbdd('0x15')]=function(_0x5ee2f0){return new BPromise(function(_0x15607e,_0x5855d5){if(_0x5ee2f0){return getUser({'internal':_0x5ee2f0})[_0xbbdd('0xd')](function(_0x573cdb){logger[_0xbbdd('0x8')](_0xbbdd('0x16'),_0x5ee2f0,_0x573cdb?_0xbbdd('0x17'):_0xbbdd('0x18'));return _0x15607e(_0x573cdb);})[_0xbbdd('0xf')](function(_0x2ba7b5){logger[_0xbbdd('0xb')](_0xbbdd('0x19'),_0x2ba7b5?util[_0xbbdd('0x9')](_0x2ba7b5,{'showHidden':![],'depth':null}):'');return _0x15607e(null);});}return _0x15607e(null);});};exports[_0xbbdd('0x1a')]=function(_0x237e11){return new BPromise(function(_0x509cd3,_0x32fd8d){if(_0x237e11){return getUser({'interface':_0x237e11})[_0xbbdd('0xd')](function(_0x337429){logger['info'](_0xbbdd('0x1b'),_0x237e11,_0x337429?_0xbbdd('0x17'):_0xbbdd('0x18'));return _0x509cd3(_0x337429);})['catch'](function(_0x436baa){logger['error'](_0xbbdd('0x1c'),_0x436baa?util[_0xbbdd('0x9')](_0x436baa,{'showHidden':![],'depth':null}):'');return _0x509cd3(null);});}return _0x509cd3(null);});};exports[_0xbbdd('0x1d')]=function(_0x282b9f){return new BPromise(function(_0x57891e,_0x53d567){if(_0x282b9f){return getUser({'name':_0x282b9f})[_0xbbdd('0xd')](function(_0xe0a0d4){logger['info']('[utils][getUserByName]\x20name:%s\x20%s',_0x282b9f,_0xe0a0d4?_0xbbdd('0x17'):'notfound');return _0x57891e(_0xe0a0d4);})[_0xbbdd('0xf')](function(_0x348b22){logger[_0xbbdd('0xb')](_0xbbdd('0x1e'),_0x348b22?util['inspect'](_0x348b22,{'showHidden':![],'depth':null}):'');return _0x57891e(null);});}return _0x57891e(null);});};exports[_0xbbdd('0x1f')]=function(_0x3ad2d2){return new BPromise(function(_0x207fc8,_0x37e97a){if(_0x3ad2d2){return client[_0xbbdd('0xc')](_0xbbdd('0x20'),{'options':{'raw':!![],'attributes':['id',_0xbbdd('0x12'),_0xbbdd('0x21'),'acw',_0xbbdd('0x22')],'where':{'name':_0x3ad2d2},'limit':0x1}})[_0xbbdd('0xd')](function(_0x3d3fb9){logger[_0xbbdd('0xa')](_0xbbdd('0x23'),_0x3ad2d2,_0x3d3fb9?util[_0xbbdd('0x9')](_0x3d3fb9,{'showHidden':![],'depth':null}):'');logger[_0xbbdd('0x8')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x3ad2d2,_0x3d3fb9?'found':_0xbbdd('0x18'));return _0x207fc8(_0x3d3fb9[_0xbbdd('0x14')]['length']?_0x3d3fb9[_0xbbdd('0x14')][0x0]:null);})['catch'](function(_0x374b13){logger['error']('[utils][getVoiceQueueByName]',_0x374b13?util['inspect'](_0x374b13,{'showHidden':![],'depth':null}):'');return _0x207fc8(null);});}return _0x207fc8(null);});};exports[_0xbbdd('0x24')]=function(_0x38e5f1,_0x3ceb6e){return moment(_0x38e5f1)[_0xbbdd('0x25')](_0x3ceb6e,'seconds')[_0xbbdd('0x26')](_0xbbdd('0x27'));};exports[_0xbbdd('0x28')]=function(_0x566f14,_0x3ec6d7){return moment(_0x566f14)[_0xbbdd('0x29')](_0x3ec6d7,_0xbbdd('0x2a'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xbbdd('0x2b')]=function(_0x502bb2,_0x3c8097){return moment(_0x502bb2)[_0xbbdd('0x2c')](moment(_0x3c8097),_0xbbdd('0x2a'));};exports[_0xbbdd('0x2d')]=function(_0x233623,_0x332326){return parseInt(_0x233623,0xa)+parseInt(_0x332326,0xa);};exports[_0xbbdd('0x2e')]=function(){return moment()['format'](_0xbbdd('0x27'));};exports[_0xbbdd('0x2f')]=function(_0x40d64b,_0x4322f3){if(_0x4322f3){return moment(_0x40d64b)['isAfter'](_0x4322f3);}return!![];};exports[_0xbbdd('0x30')]=function(_0x4a2d5f,_0x2e6ae6){if(_0x2e6ae6){return moment(_0x4a2d5f)['isBefore'](_0x2e6ae6);}else if(_0x4a2d5f){return!![];}return![];};
\ No newline at end of file
+var _0x9336=['internal','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','found','notfound','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','name','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diff','sumTime','now','isAfter','isBefore','bluebird','moment','util','client','http','../../config/logger','xdr','info','debug','inspect','error','request','then','[utils][request]\x20name:%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9336,0x112));var _0x6933=function(_0x5b662f,_0x151950){_0x5b662f=_0x5b662f-0x0;var _0x107dc0=_0x9336[_0x5b662f];return _0x107dc0;};'use strict';var BPromise=require(_0x6933('0x0'));var jayson=require('jayson/promise');var moment=require(_0x6933('0x1'));var util=require(_0x6933('0x2'));var client=jayson[_0x6933('0x3')][_0x6933('0x4')]({'port':0x2329});var logger=require(_0x6933('0x5'))(_0x6933('0x6'));exports[_0x6933('0x7')]=function(_0x552221,_0xe1cfab){logger['info'](_0x552221,_0xe1cfab?util['inspect'](_0xe1cfab,{'showHidden':![],'depth':null}):'');};exports[_0x6933('0x8')]=function(_0x25403e,_0x51f933){logger[_0x6933('0x8')](_0x25403e,_0x51f933?util[_0x6933('0x9')](_0x51f933,{'showHidden':![],'depth':null}):'');};exports[_0x6933('0xa')]=function(_0xff13c5,_0x2def56){logger[_0x6933('0xa')](_0xff13c5,_0x2def56?util[_0x6933('0x9')](_0x2def56,{'showHidden':![],'depth':null}):'');};exports[_0x6933('0xb')]=function(_0x215d09,_0x4d0cbd){return client[_0x6933('0xb')](_0x215d09,{'body':_0x4d0cbd})[_0x6933('0xc')](function(_0x492f41){logger[_0x6933('0x8')](_0x6933('0xd'),_0x215d09,_0x492f41?util[_0x6933('0x9')](_0x492f41,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x577a33){logger['error'](_0x6933('0xd'),_0x215d09,_0x577a33?util[_0x6933('0x9')](_0x577a33,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4fba91){return client[_0x6933('0xb')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x6933('0xe'),'name',_0x6933('0xf')],'where':_0x4fba91,'limit':0x1}})[_0x6933('0xc')](function(_0x56377a){logger[_0x6933('0x8')](_0x6933('0x10'),JSON['stringify'](_0x4fba91),_0x56377a?util[_0x6933('0x9')](_0x56377a,{'showHidden':![],'depth':null}):'');return _0x56377a[_0x6933('0x11')][_0x6933('0x12')]?_0x56377a[_0x6933('0x11')][0x0]:null;});}exports[_0x6933('0x13')]=function(_0x5d7380){return new BPromise(function(_0x150219,_0x14dd29){if(_0x5d7380){return getUser({'internal':_0x5d7380})['then'](function(_0x3b119b){logger['info'](_0x6933('0x14'),_0x5d7380,_0x3b119b?'found':'notfound');return _0x150219(_0x3b119b);})[_0x6933('0x15')](function(_0x5365a1){logger[_0x6933('0xa')](_0x6933('0x16'),_0x5365a1?util[_0x6933('0x9')](_0x5365a1,{'showHidden':![],'depth':null}):'');return _0x150219(null);});}return _0x150219(null);});};exports[_0x6933('0x17')]=function(_0x405d18){return new BPromise(function(_0x1751db,_0x2a66c8){if(_0x405d18){return getUser({'interface':_0x405d18})[_0x6933('0xc')](function(_0x44e6b6){logger[_0x6933('0x7')](_0x6933('0x18'),_0x405d18,_0x44e6b6?_0x6933('0x19'):_0x6933('0x1a'));return _0x1751db(_0x44e6b6);})[_0x6933('0x15')](function(_0x19d527){logger[_0x6933('0xa')](_0x6933('0x1b'),_0x19d527?util[_0x6933('0x9')](_0x19d527,{'showHidden':![],'depth':null}):'');return _0x1751db(null);});}return _0x1751db(null);});};exports['getUserByName']=function(_0x26410c){return new BPromise(function(_0x575aa3,_0x1842aa){if(_0x26410c){return getUser({'name':_0x26410c})[_0x6933('0xc')](function(_0x1f6b19){logger[_0x6933('0x7')](_0x6933('0x1c'),_0x26410c,_0x1f6b19?_0x6933('0x19'):_0x6933('0x1a'));return _0x575aa3(_0x1f6b19);})['catch'](function(_0x2c3d29){logger[_0x6933('0xa')](_0x6933('0x1d'),_0x2c3d29?util[_0x6933('0x9')](_0x2c3d29,{'showHidden':![],'depth':null}):'');return _0x575aa3(null);});}return _0x575aa3(null);});};exports[_0x6933('0x1e')]=function(_0x1bcf41){return new BPromise(function(_0x5df0ce,_0x721618){if(_0x1bcf41){return client[_0x6933('0xb')](_0x6933('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x6933('0x20'),_0x6933('0x21'),'acw',_0x6933('0x22')],'where':{'name':_0x1bcf41},'limit':0x1}})[_0x6933('0xc')](function(_0x2da9d1){logger[_0x6933('0x8')](_0x6933('0x23'),_0x1bcf41,_0x2da9d1?util[_0x6933('0x9')](_0x2da9d1,{'showHidden':![],'depth':null}):'');logger[_0x6933('0x7')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x1bcf41,_0x2da9d1?'found':_0x6933('0x1a'));return _0x5df0ce(_0x2da9d1['result'][_0x6933('0x12')]?_0x2da9d1[_0x6933('0x11')][0x0]:null);})['catch'](function(_0x187ac0){logger[_0x6933('0xa')](_0x6933('0x24'),_0x187ac0?util['inspect'](_0x187ac0,{'showHidden':![],'depth':null}):'');return _0x5df0ce(null);});}return _0x5df0ce(null);});};exports['addTime']=function(_0xfd4bc6,_0x4b76fd){return moment(_0xfd4bc6)[_0x6933('0x25')](_0x4b76fd,_0x6933('0x26'))[_0x6933('0x27')](_0x6933('0x28'));};exports[_0x6933('0x29')]=function(_0x44bfd6,_0x2b61ec){return moment(_0x44bfd6)[_0x6933('0x2a')](_0x2b61ec,_0x6933('0x26'))['format'](_0x6933('0x28'));};exports['diffTime']=function(_0x417596,_0x48639d){return moment(_0x417596)[_0x6933('0x2b')](moment(_0x48639d),_0x6933('0x26'));};exports[_0x6933('0x2c')]=function(_0x37fc32,_0x2bf114){return parseInt(_0x37fc32,0xa)+parseInt(_0x2bf114,0xa);};exports[_0x6933('0x2d')]=function(){return moment()[_0x6933('0x27')](_0x6933('0x28'));};exports['isAfter']=function(_0x26eef9,_0x233513){if(_0x233513){return moment(_0x26eef9)[_0x6933('0x2e')](_0x233513);}return!![];};exports['isBefore']=function(_0x3429b3,_0x2a7698){if(_0x2a7698){return moment(_0x3429b3)[_0x6933('0x2f')](_0x2a7698);}else if(_0x3429b3){return!![];}return![];};
\ No newline at end of file